From 31aac02446472ec5bfc4676ab190ec9d37056503 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Wed, 5 Nov 2014 13:47:21 +0100 Subject: [PATCH 01/47] Qt: new icons - flat and b/w icons seems to be the new trend - support for HiDPI/retina - change icon sizes - fix assets-attribution.md - removed unused icons --- doc/assets-attribution.md | 115 +++------ src/Makefile.qt.include | 18 +- src/qt/bitcoin.qrc | 17 +- src/qt/bitcoingui.cpp | 16 +- src/qt/forms/sendcoinsentry.ui | 18 ++ src/qt/res/icons/about.png | Bin 0 -> 5925 bytes src/qt/res/icons/about_qt.png | Bin 0 -> 3107 bytes src/qt/res/icons/add.png | Bin 1112 -> 15199 bytes src/qt/res/icons/address-book.png | Bin 1690 -> 16150 bytes src/qt/res/icons/clock1.png | Bin 864 -> 2448 bytes src/qt/res/icons/clock2.png | Bin 863 -> 2269 bytes src/qt/res/icons/clock3.png | Bin 856 -> 2184 bytes src/qt/res/icons/clock4.png | Bin 869 -> 1995 bytes src/qt/res/icons/clock5.png | Bin 858 -> 2682 bytes src/qt/res/icons/configure.png | Bin 681 -> 3891 bytes src/qt/res/icons/connect0.png | Bin 0 -> 16890 bytes src/qt/res/icons/connect0_16.png | Bin 631 -> 0 bytes src/qt/res/icons/connect1.png | Bin 0 -> 16870 bytes src/qt/res/icons/connect1_16.png | Bin 541 -> 0 bytes src/qt/res/icons/connect2.png | Bin 0 -> 16566 bytes src/qt/res/icons/connect2_16.png | Bin 582 -> 0 bytes src/qt/res/icons/connect3.png | Bin 0 -> 16566 bytes src/qt/res/icons/connect3_16.png | Bin 591 -> 0 bytes src/qt/res/icons/connect4.png | Bin 0 -> 16117 bytes src/qt/res/icons/connect4_16.png | Bin 596 -> 0 bytes src/qt/res/icons/debugwindow.png | Bin 2240 -> 1330 bytes src/qt/res/icons/edit.png | Bin 1163 -> 2544 bytes src/qt/res/icons/editcopy.png | Bin 600 -> 1295 bytes src/qt/res/icons/editpaste.png | Bin 1135 -> 15778 bytes src/qt/res/icons/export.png | Bin 1931 -> 17005 bytes src/qt/res/icons/eye.png | Bin 536 -> 2806 bytes src/qt/res/icons/eye_minus.png | Bin 595 -> 3087 bytes src/qt/res/icons/eye_plus.png | Bin 661 -> 3368 bytes src/qt/res/icons/filesave.png | Bin 1251 -> 2874 bytes src/qt/res/icons/history.png | Bin 1343 -> 16271 bytes src/qt/res/icons/info.png | Bin 0 -> 2895 bytes src/qt/res/icons/key.png | Bin 1440 -> 2434 bytes src/qt/res/icons/lock_closed.png | Bin 1401 -> 1686 bytes src/qt/res/icons/lock_open.png | Bin 1359 -> 1751 bytes src/qt/res/icons/open.png | Bin 0 -> 2239 bytes src/qt/res/icons/overview.png | Bin 6327 -> 2215 bytes src/qt/res/icons/qrcode.png | Bin 143 -> 0 bytes src/qt/res/icons/quit.png | Bin 1778 -> 15766 bytes src/qt/res/icons/receive.png | Bin 1331 -> 2874 bytes src/qt/res/icons/remove.png | Bin 649 -> 16663 bytes src/qt/res/icons/send.png | Bin 1345 -> 17005 bytes src/qt/res/icons/synced.png | Bin 560 -> 16891 bytes src/qt/res/icons/transaction0.png | Bin 291 -> 1759 bytes src/qt/res/icons/transaction2.png | Bin 211 -> 16891 bytes src/qt/res/icons/transaction_conflicted.png | Bin 474 -> 15766 bytes src/qt/res/icons/tx_inout.png | Bin 1252 -> 2568 bytes src/qt/res/icons/tx_input.png | Bin 1114 -> 2590 bytes src/qt/res/icons/tx_mined.png | Bin 1458 -> 2166 bytes src/qt/res/icons/tx_output.png | Bin 1107 -> 2699 bytes src/qt/res/icons/unit_btc.png | Bin 2107 -> 1318 bytes src/qt/res/icons/unit_mbtc.png | Bin 2107 -> 1407 bytes src/qt/res/icons/unit_ubtc.png | Bin 2107 -> 1369 bytes src/qt/res/icons/verify.png | Bin 0 -> 2984 bytes src/qt/res/movies/makespinner.sh | 6 + src/qt/res/movies/spinner-000.png | Bin 861 -> 16636 bytes src/qt/res/movies/spinner-001.png | Bin 835 -> 2785 bytes src/qt/res/movies/spinner-002.png | Bin 849 -> 2814 bytes src/qt/res/movies/spinner-003.png | Bin 844 -> 2775 bytes src/qt/res/movies/spinner-004.png | Bin 836 -> 2850 bytes src/qt/res/movies/spinner-005.png | Bin 855 -> 2728 bytes src/qt/res/movies/spinner-006.png | Bin 852 -> 2734 bytes src/qt/res/movies/spinner-007.png | Bin 888 -> 2633 bytes src/qt/res/movies/spinner-008.png | Bin 865 -> 2611 bytes src/qt/res/movies/spinner-009.png | Bin 847 -> 2074 bytes src/qt/res/movies/spinner-010.png | Bin 854 -> 2666 bytes src/qt/res/movies/spinner-011.png | Bin 856 -> 2751 bytes src/qt/res/movies/spinner-012.png | Bin 861 -> 2828 bytes src/qt/res/movies/spinner-013.png | Bin 882 -> 2896 bytes src/qt/res/movies/spinner-014.png | Bin 847 -> 2867 bytes src/qt/res/movies/spinner-015.png | Bin 849 -> 2860 bytes src/qt/res/movies/spinner-016.png | Bin 851 -> 2825 bytes src/qt/res/movies/spinner-017.png | Bin 848 -> 2833 bytes src/qt/res/movies/spinner-018.png | Bin 850 -> 2147 bytes src/qt/res/movies/spinner-019.png | Bin 830 -> 2808 bytes src/qt/res/movies/spinner-020.png | Bin 847 -> 2800 bytes src/qt/res/movies/spinner-021.png | Bin 850 -> 2833 bytes src/qt/res/movies/spinner-022.png | Bin 858 -> 2823 bytes src/qt/res/movies/spinner-023.png | Bin 854 -> 2710 bytes src/qt/res/movies/spinner-024.png | Bin 868 -> 2732 bytes src/qt/res/movies/spinner-025.png | Bin 865 -> 2635 bytes src/qt/res/movies/spinner-026.png | Bin 864 -> 2643 bytes src/qt/res/movies/spinner-027.png | Bin 855 -> 2099 bytes src/qt/res/movies/spinner-028.png | Bin 836 -> 2665 bytes src/qt/res/movies/spinner-029.png | Bin 846 -> 2761 bytes src/qt/res/movies/spinner-030.png | Bin 866 -> 2832 bytes src/qt/res/movies/spinner-031.png | Bin 871 -> 2871 bytes src/qt/res/movies/spinner-032.png | Bin 861 -> 2839 bytes src/qt/res/movies/spinner-033.png | Bin 849 -> 2829 bytes src/qt/res/movies/spinner-034.png | Bin 859 -> 2851 bytes src/qt/res/movies/spinner-035.png | Bin 0 -> 2837 bytes src/qt/res/spinner.png | Bin 0 -> 16636 bytes src/qt/res/src/clock1.svg | 261 ------------------- src/qt/res/src/clock2.svg | 262 -------------------- src/qt/res/src/clock3.svg | 261 ------------------- src/qt/res/src/clock4.svg | 261 ------------------- src/qt/res/src/clock5.svg | 262 -------------------- src/qt/res/src/clock_0.svg | 14 ++ src/qt/res/src/clock_1.svg | 13 + src/qt/res/src/clock_2.svg | 14 ++ src/qt/res/src/clock_3.svg | 15 ++ src/qt/res/src/clock_4.svg | 18 ++ src/qt/res/src/clock_green.svg | 262 -------------------- src/qt/res/src/connect-0.svg | 11 + src/qt/res/src/connect-1.svg | 21 ++ src/qt/res/src/connect-2.svg | 22 ++ src/qt/res/src/connect-3.svg | 16 ++ src/qt/res/src/inout.svg | 122 --------- src/qt/res/src/mine.svg | 12 + src/qt/res/src/qt.svg | 25 ++ src/qt/res/src/questionmark.svg | 159 ------------ src/qt/res/src/tx_in.svg | 9 + src/qt/res/src/tx_inout.svg | 11 + src/qt/res/src/verify.svg | 14 ++ 118 files changed, 301 insertions(+), 1954 deletions(-) create mode 100644 src/qt/res/icons/about.png create mode 100644 src/qt/res/icons/about_qt.png create mode 100644 src/qt/res/icons/connect0.png delete mode 100644 src/qt/res/icons/connect0_16.png create mode 100644 src/qt/res/icons/connect1.png delete mode 100644 src/qt/res/icons/connect1_16.png create mode 100644 src/qt/res/icons/connect2.png delete mode 100644 src/qt/res/icons/connect2_16.png create mode 100644 src/qt/res/icons/connect3.png delete mode 100644 src/qt/res/icons/connect3_16.png create mode 100644 src/qt/res/icons/connect4.png delete mode 100644 src/qt/res/icons/connect4_16.png create mode 100644 src/qt/res/icons/info.png create mode 100644 src/qt/res/icons/open.png delete mode 100644 src/qt/res/icons/qrcode.png create mode 100644 src/qt/res/icons/verify.png create mode 100755 src/qt/res/movies/makespinner.sh create mode 100644 src/qt/res/movies/spinner-035.png create mode 100644 src/qt/res/spinner.png delete mode 100644 src/qt/res/src/clock1.svg delete mode 100644 src/qt/res/src/clock2.svg delete mode 100644 src/qt/res/src/clock3.svg delete mode 100644 src/qt/res/src/clock4.svg delete mode 100644 src/qt/res/src/clock5.svg create mode 100644 src/qt/res/src/clock_0.svg create mode 100644 src/qt/res/src/clock_1.svg create mode 100644 src/qt/res/src/clock_2.svg create mode 100644 src/qt/res/src/clock_3.svg create mode 100644 src/qt/res/src/clock_4.svg delete mode 100644 src/qt/res/src/clock_green.svg create mode 100644 src/qt/res/src/connect-0.svg create mode 100644 src/qt/res/src/connect-1.svg create mode 100644 src/qt/res/src/connect-2.svg create mode 100644 src/qt/res/src/connect-3.svg delete mode 100644 src/qt/res/src/inout.svg create mode 100644 src/qt/res/src/mine.svg create mode 100644 src/qt/res/src/qt.svg delete mode 100644 src/qt/res/src/questionmark.svg create mode 100644 src/qt/res/src/tx_in.svg create mode 100644 src/qt/res/src/tx_inout.svg create mode 100644 src/qt/res/src/verify.svg diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md index cd864f254..082bd4149 100644 --- a/doc/assets-attribution.md +++ b/doc/assets-attribution.md @@ -6,98 +6,51 @@ The following is a list of assets used in the bitcoin source and their proper at * License: MIT ### Assets Used - src/qt/res/icons/clock*.png, src/qt/res/icons/tx*.png, - src/qt/res/src/clock_green.svg, src/qt/res/src/clock1.svg, - src/qt/res/src/clock2.svg, src/qt/res/src/clock3.svg, - src/qt/res/src/clock4.svg, src/qt/res/src/clock5.svg, - src/qt/res/src/inout.svg, src/qt/res/src/questionmark.svg + src/qt/res/icons/watch*.png, src/qt/res/icons/tx_in.png, + src/qt/res/icons/tx_inout.png, -[David Vignoni](http://www.icon-king.com) +[Typicons/Stephen Hutchings](http://typicons.com) ----------------------- ### Info -* Icon Pack: NUVOLA ICON THEME for KDE 3.x -* Designer: David Vignoni (david@icon-king.com) -* License: LGPL -* Site: [http://www.icon-king.com/projects/nuvola](http://www.icon-king.com/projects/nuvola) +* Icon Pack: Typicons (http://typicons.com) +* Designer: Stephen Hutchings (and more) +* License: CC BY-SA +* Site: [https://github.com/stephenhutchings/typicons.font](https://github.com/stephenhutchings/typicons.font) ### Assets Used - src/qt/res/icons/address-book.png, src/qt/res/icons/export.png, - src/qt/res/icons/history.png, src/qt/res/icons/key.png, - src/qt/res/icons/lock_*.png, src/qt/res/icons/overview.png, - src/qt/res/icons/receive.png, src/qt/res/icons/send.png, - src/qt/res/icons/synced.png, src/qt/res/icons/filesave.png - -schollidesign ------------------------ - -### Info -* Icon Pack: Human-O2 -* Designer: schollidesign -* License: GNU/GPL -* Site: [http://findicons.com/icon/93743/blocks_gnome_netstatus_0](http://findicons.com/icon/93743/blocks_gnome_netstatus_0) - -### Assets Used - src/qt/res/icons/connect*.png - -md2k7 ------------------------ - -### Info -* Designer: md2k7 -* License: You are free to do with these icons as you wish, including selling, copying, modifying etc. -* License: MIT -* Site: [https://bitcointalk.org/index.php?topic=15276.0](https://bitcointalk.org/index.php?topic=15276.0) - -### Assets Used - src/qt/res/icons/transaction*.png - -[Everaldo.com](http://www.everaldo.com) ------------------------ - -### Info -* Icon Pack: Crystal SVG -* Designer: [http://www.everaldo.com](http://www.everaldo.com) -* License: LGPL - -### Assets Used - src/qt/res/icons/configure.png, src/qt/res/icons/quit.png, - src/qt/res/icons/editcopy.png, src/qt/res/icons/editpaste.png, - src/qt/res/icons/add.png, src/qt/res/icons/edit.png, - src/qt/res/icons/remove.png (edited) - -Everaldo (Everaldo Coelho) ------------------------ - -### Info -* Icon Pack: Kids -* Designer: Everaldo (Everaldo Coelho) -* License: GNU/GPL -* Site: [http://findicons.com/icon/17102/reload?id=17102](http://findicons.com/icon/17102/reload?id=17102) - -### Assets Used - scripts/img/reload.xcf (modified), src/qt/res/movies/*.png - -[Vignoni David](http://techbase.kde.org/Projects/Oxygen) ------------------------ - -### Info -* Designer: Vignoni David -* License: Oxygen icon theme is dual licensed. You may copy it under the Creative Common Attribution-ShareAlike 3.0 License or the GNU Library General Public License. -* Site: [http://techbase.kde.org/Projects/Oxygen](http://techbase.kde.org/Projects/Oxygen) - -### Assets Used - src/qt/res/icons/debugwindow.png + src/qt/res/icons/add.png, src/qt/res/icons/address-book.png, + src/qt/res/icons/configure.png, src/qt/res/icons/connect4.png, + src/qt/res/icons/debugwindow.png, src/qt/res/icons/edit.png, + src/qt/res/icons/exitcopy.png, src/qt/res/icons/editpaste.png, + src/qt/res/icons/export.png, src/qt/res/icons/eye.png, + src/qt/res/icons/filesave.png, src/qt/res/icons/history.png, + src/qt/res/icons/info.png, src/qt/res/icons/key.png, + src/qt/res/icons/lock_*.png, src/qt/res/icons/open.png, + src/qt/res/icons/overview.png, src/qt/res/icons/quit.png, + src/qt/res/icons/receive.png, src/qt/res/icons/remove.png, + src/qt/res/icons/send.png, src/qt/res/icons/synced.png, + src/qt/res/icons/transaction*.png, src/qt/res/icons/tx_input.png, Jonas Schnelli ----------------------- ### Info -* Designer: Jonas Schnelli (based on the original bitcoin logo from Bitboy) +* Designer: Jonas Schnelli +* Bitcoin Icon: (based on the original bitcoin logo from Bitboy) +* Some icons are based on Stephan Hutchings Typicons * License: MIT ### Assets Used - src/qt/res/icons/bitcoin.icns, src/qt/res/src/bitcoin.svg, - src/qt/res/src/bitcoin.ico, src/qt/res/src/bitcoin.png, - src/qt/res/src/bitcoin_testnet.png, docs/bitcoin_logo_doxygen.png, - src/qt/res/images/splash.png, src/qt/res/images/splash_testnet.png + src/qt/res/icons/about.png, src/qt/res/icons/about_qt.png, + src/qt/res/icons/clock*.png, src/qt/res/icons/connect[0-3].png, + src/qt/res/icons/eye_minus.png, src/qt/res/icons/verify.png, + src/qt/res/icons/eye_plus.png, src/qt/res/icons/tx_inout.png, + src/qt/res/icons/tx_output.png, src/qt/res/icons/bitcoin.icns, + src/qt/res/src/bitcoin.svg, src/qt/res/src/bitcoin.ico, + src/qt/res/src/bitcoin.png, src/qt/res/src/bitcoin_testnet.png, + docs/bitcoin_logo_doxygen.png, src/qt/res/images/splash.png, + src/qt/res/images/splash_testnet.png, src/qt/res/src/tx*.svg, + src/qt/res/src/connect*.svg, src/qt/res/src/clock*.svg, + src/qt/res/src/mine.svg, src/qt/res/src/qt.svg, + src/qt/res/src/verify.svg, diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index ac6d60df0..d207f4ad6 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -212,6 +212,8 @@ BITCOIN_QT_H = \ RES_ICONS = \ qt/res/icons/add.png \ qt/res/icons/address-book.png \ + qt/res/icons/about.png \ + qt/res/icons/about_qt.png \ qt/res/icons/bitcoin.ico \ qt/res/icons/bitcoin.png \ qt/res/icons/bitcoin_testnet.ico \ @@ -222,11 +224,11 @@ RES_ICONS = \ qt/res/icons/clock4.png \ qt/res/icons/clock5.png \ qt/res/icons/configure.png \ - qt/res/icons/connect0_16.png \ - qt/res/icons/connect1_16.png \ - qt/res/icons/connect2_16.png \ - qt/res/icons/connect3_16.png \ - qt/res/icons/connect4_16.png \ + qt/res/icons/connect0.png \ + qt/res/icons/connect1.png \ + qt/res/icons/connect2.png \ + qt/res/icons/connect3.png \ + qt/res/icons/connect4.png \ qt/res/icons/debugwindow.png \ qt/res/icons/edit.png \ qt/res/icons/editcopy.png \ @@ -237,11 +239,12 @@ RES_ICONS = \ qt/res/icons/eye_plus.png \ qt/res/icons/filesave.png \ qt/res/icons/history.png \ + qt/res/icons/info.png \ qt/res/icons/key.png \ qt/res/icons/lock_closed.png \ qt/res/icons/lock_open.png \ + qt/res/icons/open.png \ qt/res/icons/overview.png \ - qt/res/icons/qrcode.png \ qt/res/icons/quit.png \ qt/res/icons/receive.png \ qt/res/icons/remove.png \ @@ -256,7 +259,8 @@ RES_ICONS = \ qt/res/icons/tx_mined.png \ qt/res/icons/unit_btc.png \ qt/res/icons/unit_mbtc.png \ - qt/res/icons/unit_ubtc.png + qt/res/icons/unit_ubtc.png \ + qt/res/icons/verify.png BITCOIN_QT_CPP = \ qt/bitcoinaddressvalidator.cpp \ diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index 42bb091e2..cd71b4b3f 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -4,11 +4,11 @@ res/icons/address-book.png res/icons/quit.png res/icons/send.png - res/icons/connect0_16.png - res/icons/connect1_16.png - res/icons/connect2_16.png - res/icons/connect3_16.png - res/icons/connect4_16.png + res/icons/connect0.png + res/icons/connect1.png + res/icons/connect2.png + res/icons/connect3.png + res/icons/connect4.png res/icons/transaction0.png res/icons/transaction2.png res/icons/transaction_conflicted.png @@ -43,8 +43,12 @@ res/icons/lock_open.png res/icons/key.png res/icons/filesave.png - res/icons/qrcode.png res/icons/debugwindow.png + res/icons/open.png + res/icons/info.png + res/icons/about.png + res/icons/about_qt.png + res/icons/verify.png res/images/about.png @@ -87,5 +91,6 @@ res/movies/spinner-032.png res/movies/spinner-033.png res/movies/spinner-034.png + res/movies/spinner-035.png diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 77cfdceef..45c6ea7be 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -285,20 +285,16 @@ void BitcoinGUI::createActions(const NetworkStyle *networkStyle) quitAction->setStatusTip(tr("Quit application")); quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q)); quitAction->setMenuRole(QAction::QuitRole); - aboutAction = new QAction(networkStyle->getAppIcon(), tr("&About Bitcoin Core"), this); + aboutAction = new QAction(QIcon(":/icons/about"), tr("&About Bitcoin Core"), this); aboutAction->setStatusTip(tr("Show information about Bitcoin Core")); aboutAction->setMenuRole(QAction::AboutRole); -#if QT_VERSION < 0x050000 - aboutQtAction = new QAction(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this); -#else - aboutQtAction = new QAction(QIcon(":/qt-project.org/qmessagebox/images/qtlogo-64.png"), tr("About &Qt"), this); -#endif + aboutQtAction = new QAction(QIcon(":/icons/about_qt"), tr("About &Qt"), this); aboutQtAction->setStatusTip(tr("Show information about Qt")); aboutQtAction->setMenuRole(QAction::AboutQtRole); optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this); optionsAction->setStatusTip(tr("Modify configuration options for Bitcoin")); optionsAction->setMenuRole(QAction::PreferencesRole); - toggleHideAction = new QAction(networkStyle->getAppIcon(), tr("&Show / Hide"), this); + toggleHideAction = new QAction(QIcon(":/icons/about"), tr("&Show / Hide"), this); toggleHideAction->setStatusTip(tr("Show or hide the main Window")); encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this); @@ -310,7 +306,7 @@ void BitcoinGUI::createActions(const NetworkStyle *networkStyle) changePassphraseAction->setStatusTip(tr("Change the passphrase used for wallet encryption")); signMessageAction = new QAction(QIcon(":/icons/edit"), tr("Sign &message..."), this); signMessageAction->setStatusTip(tr("Sign messages with your Bitcoin addresses to prove you own them")); - verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this); + verifyMessageAction = new QAction(QIcon(":/icons/verify"), tr("&Verify message..."), this); verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Bitcoin addresses")); openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow"), tr("&Debug window"), this); @@ -321,10 +317,10 @@ void BitcoinGUI::createActions(const NetworkStyle *networkStyle) usedReceivingAddressesAction = new QAction(QIcon(":/icons/address-book"), tr("&Receiving addresses..."), this); usedReceivingAddressesAction->setStatusTip(tr("Show the list of used receiving addresses and labels")); - openAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_FileIcon), tr("Open &URI..."), this); + openAction = new QAction(QIcon(":/icons/open"), tr("Open &URI..."), this); openAction->setStatusTip(tr("Open a bitcoin: URI or payment request")); - showHelpMessageAction = new QAction(QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation), tr("&Command-line options"), this); + showHelpMessageAction = new QAction(QIcon(":/icons/info"), tr("&Command-line options"), this); showHelpMessageAction->setStatusTip(tr("Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options")); connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui index 9d829970f..9f8c0a484 100644 --- a/src/qt/forms/sendcoinsentry.ui +++ b/src/qt/forms/sendcoinsentry.ui @@ -67,6 +67,12 @@ :/icons/address-book:/icons/address-book + + + 22 + 22 + + Alt+A @@ -84,6 +90,12 @@ :/icons/editpaste:/icons/editpaste + + + 22 + 22 + + Alt+P @@ -101,6 +113,12 @@ :/icons/remove:/icons/remove + + + 22 + 22 + + diff --git a/src/qt/res/icons/about.png b/src/qt/res/icons/about.png new file mode 100644 index 0000000000000000000000000000000000000000..eeef943355782e807af46ef65a7f10c9cd4a899c GIT binary patch literal 5925 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/about_qt.png b/src/qt/res/icons/about_qt.png new file mode 100644 index 0000000000000000000000000000000000000000..d3665e98925eb9b8e63aa0cae7da5bd93bbd1a0f GIT binary patch literal 3107 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/add.png b/src/qt/res/icons/add.png index ea53fc3493dde873101127e3e9f37edfdad968c7..ef995cc0b54629c9b8f14c576789a9a00b2c5747 100644 GIT binary patch literal 15199 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 K+`>gMDgOoB>bU&? literal 1690 zcmV;L24(q)P)r!I2aoic|aMG}NlzRW0Ov;r_i@@3 z9`}C5L}c0^+ip&>GU%AuS#pbhBycZj?VMNsl&$~^AD%2D^n`+~nZpG5#V8#l$K_vp zfQ143&bO;a0ni()yq7C8S6I=6-E(Pv@xUizU4P45>`Q7WxKX0kdboXnpSmFFfl`P(xMeuS1h?EL>{ zxSQja(07kk8t$5*q02~3tC|M6nwCyA^7|n=MTjA_1&!X!uVT`e|C>)(74-=&-+St$ z0JuKfp4*3gXNJSt)f+bcUC}gTqO^0Ik{T5ijVh{IG&Cr*GNS+ssgMtiW3oc#l_o-?GVpd@)+sRY!ros1Z+?2V z=kJaLytJ=j&j-ckGWk7plUe{K#-V@MNPD*$d5?~|Ru$#-qkP_G;(CXL6FIj?&THi3 zS}SL7=}4{CkyfjvyxoL∨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 literal 864 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 literal 863 zcmV-l1EBngP)o2!Z1g@(uoU{O#RfG}7ATM0wbL=0A96WPXH zZj*vk1abOz0f_+p>DDlzlEhi$?#5{IZg<}E^L@|TIgv2-z{BUu;XFK?2ad%S4Gj%h zwr#%_1VM*Mv_GbH134G-p67WpfX^n0&G*#QRBOGVZtiK$x7F0`pw`aulD|M@`3Zk7 zmGt+E?r){4J{rGwAJ72C^Kh|PJi0qy^XuMxOIwqdBJW95X^Cn@W2YKv&b%N_wD3w- zLv^OFudn}kxdo6k@7kXIE)H69V}*aDWJgmoj~+gRoWaYs#q!fCO{UlZ!G`w@V_!NK-h#V_Q| z8#nay)vNks|A0Ps;-tQQaZ;Z<{;9q^GNwO^pB+AMP>+v{>f*q=s!%9&ZT=O+K&SeVg2>knErNRQXhJ~pohOat1lLddSdi~9{=P6^+us^8Zg)*(c9bGdHUFg zk8X{e(bJO`^f#9->8Z&HeP#5lzWn*e`lEN=EG5mG!-6g9>FKG>X0zQ=%8nWl?N>^g pWhc0s47R?$etT|it^#QO*S}zru%^4`6W;&;002ovPDHLkV1oCuuP6Wj diff --git a/src/qt/res/icons/clock3.png b/src/qt/res/icons/clock3.png index 7314d5302b7e31564d4ffbe95b85863b8ee2a697..3d04655ed9500980d3a5ac74cbcbed52353a5650 100644 GIT binary patch literal 2184 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 i)#{C6u~-8Pd-xx;e71%+z|EKd0000 diff --git a/src/qt/res/icons/clock4.png b/src/qt/res/icons/clock4.png index 07f5bfab5f2161ae1a65fe3ce3fc66f83271636b..c3210c5af1ff0e4ff18e0498bbf0a040dbdf830c 100644 GIT binary patch literal 1995 zcmZ{ldpy&N8^^yDA}JJ^qZ-0AV>Z_{x7p0X7;{az%(lkNWh1xBQ76qA=d8?fm}?}3 zTq~hMIW6>Z%R%d$l7o>>v$`{VPxU!TwO`n;Y$AFdY>ud+vb4*&ov1XrxL zjLF}mC?}iums~n!kfS?!H~~QYFUnuTU1^^P^03Zzo z0MrctI22phN^uC$ISSPxS-QNYbTY3io z3LXTk6FF&oN|eexh|}qDI6Z#EOBGTBDJ=}e83dRpWSQOFkwNBT!}n%+lFJkha9!P1 zv$g)zrtIaqxboBm>3qf9zjn!C4bT`%@E*uP)q2IJLCNIT4*h-Yv`;IE^p(*Q4ojIg z8?86D=I13J`xbb(%P-`~UIbganUhLZMvN&4eob^U`uY^32v=J{9gHO0NLnvClnCP-U+5KQDuM#A^+6bcSN{ohZH@b=cCAxIcMe6B-!kBoGgZ}d1o^pZ$_t;oyTi4Y z(%Kuihb@LMP!$U~^h|Ux(dUU3dQb?nUGAaL;w&|cYkEh9M=R@&{uoy@+4R}QIe22A zoY}~2^pI+PzT5+Dyh>xZ2^+Gb7m#hxmv-~p(Ave}--y(LQyz-`@sPP3A^dlCYKkD5 zHm8|GlT2xw_TI)x#8yl9z9{+AB@#>9`?o{JXu6^=ip9lLJR7n+P_0BQSWWoCd2Dh5 zByBv66kEm6H!J%S-NlT4uT4`bQ~3h986lu&w4pou_x3EkbsTVCZpiLCzfEZumX4J? z4)!=cF}$g~>~+P^Y#)RfG?w^p^6d7R+DVns)}=qx0>&(UkaXbR;Fg|)-z59)b~rNcPDk7xci zTrQ3h^h`hKSF4cg{75~);#VQ@plCgM_lAp6!t6z94cclqPXZ`C68hVm$XRXJsNU#D zZ&?xP=&9RcGh^#un24-zeGH1Xb*mrP`l>JT(f2ffdXia90jLT;1+V-nv|BxaawH_8 z`t~o-)v~(qOa2uHBI%LAfm;QOQL~rFL3nOC+KJR&^!VlhZLk#L=}Yb~5cMl2m`@>E zjgOBKZXq$w?hlI_5FuAs?8&?vi=ns?+IYnfsPupc_7?&-f|zAKuWCx?XJus%zTlCl zJNzNX7vmEz87Tw=a7bjGJR*%3`I1U=(>-&gTkGsVU|?JjD&M>;a%v?5q)fO~x6y5X zO!N}0q4_M!;i#~m`YY?1m?V8FpB8@Tlsw|(M^WM($GQp$quIt-q#F@rLUg4o=3mmh z=q5vm36UU!ohE&ozSTCd)5`UhqQFiwA}Od*mC=&kH)xEhc(${}?Uo{csPGb%}{KWEWM7EtQS+i)m?>)jFw$zJR~JTa(Jm=XduJ4+E?8Z>#nGEYAKvs#yZ4DSi+vtgRQ;9D(d#l{ADPX1C1sW8{d|)R z`mk?b_cnh`hZVi!qC>IadtRT>zBe%mInFx}1{aWe>x{YjyVv?@S6$P1X6q}x)AAd> z37+puXj0@dWsQs~-l4}8-?n~dKe>B0Z9G309V@bDmsNJv=&JE(WiM7qL;k1Mvo9QG zz`CCdrzSg=(0^y2a?cwbS|0YvFkGzXOrI@F-FQ%x0xA^^pAB$vE+Wk@cEsrxzIk8S-yJqQVO^{soJ-21boh?Oo_qc8Sf*!h$fIC!tQ6#F zwts>})tF<17r$`SJzcwn*EnBQa>#B5qeQpCL3`FNX|`lqt9=exw{|&5+bxHaeHa4{ zE`Spe#-XAp@l+WA1l-&LW^N9HTa)3oD02kL(gq4QN5SDU>oueQQ;3d=Y3bP6ZQ~%mg;)djvMOF*P@Zn}B`% z@L*h0Y)m`{?8Qu=!w4*}>G#l&8qa3LuuxztQ#c%qNnkJ|z;I(QcrfXBr0g6(z!9;v In9z*>00NMHxc~qF literal 869 zcmV-r1DgDaP)C%v8`aWLO_%nD24_Sf#%nO{wj$1TTqE8 z!GM4Wst5vtq*k#0PRW`SVx!VLY`VdA^VrwjJA3Exc^9>WoZ)Z=_|7@Z2V-L&CMPHD za5#M2^Sm_Y=A^IWx+?GMf)L^cfClz}?Y&P=Pj|PqtFMzs;{&0VI9h`-9PYe}a&-e6 zg-yD8P5ic5pb>xWCIA8e>wojq)YM2%PjD&SnHV@^S%`B9T`NEo4PyRD@C3`fWm4Ja zYd6Nm#x4P14+5Ia$yDoS4|ChrP7%f8eR!gV+kY(K-sYb$`W}jZm%$qbubq*B!84VQ zhKGlb`-I(mb6Z${)4}5b(lxZS1VLm&2p6TDEz}(ii-nNvb7A1(`i}-LW^4AseES!x zE8=M@8jWUpo;Yw!*Gt&ATYyvw#sE?(R4NsSMhRe55Obi7i)cq3v9<=zy|UBGIX`PD zr82q^VZ=DXkq)S)S!sAu!f{+k&w=sH#9Z)zi}VQ>PQ8JyEG@~~jJ<-x#&04 z04UfY1wezCht)L!V|gek3)QNbw*kz97oaGC_0<(T)mK95nH2yEMDkx{zWQti#N0J&VQ|Eq7uJ;%ICHFb_=W?rDHvx8IGsC6v{ld0`Saa$Yps_m<|y5FyXeDD`qimZ*~;oGe9nHM`&V}XKpI@e1>(BXZ160yUT3Sodce8!;=EcFkn$3I74Er!NG}Iajh0ZFa v(t&`?C?$Dw+s%cQ%jKW)`FsTc;XnKXzVg5yGnYgS00000NkvXXu0mjfgBzRe diff --git a/src/qt/res/icons/clock5.png b/src/qt/res/icons/clock5.png index 27e9630eb5a0ddd3484ef0f998ab292351db550a..84a9fa2842bb25db5a99fe8d4f73f5a342f30a41 100644 GIT binary patch literal 2682 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 diff --git a/src/qt/res/icons/configure.png b/src/qt/res/icons/configure.png index a1bd70aa4e94575277c8ba0905d8d6fa2816853e..fe9c6ec5ecf27879b8513434a95e9a3b3a7a39e2 100644 GIT binary patch literal 3891 zcmZ{nc{tRI_s2iOSY{aemfcX+ERige8I1kfn=Dadi;%Hqjghit7fRMq(FlWx#xj!S zX5VfyT}`qz#8^|dU-ysSpWpL5@AH1ndCvLk{BvGub~a`(s3;Tw0GNe2+ToAm{}Vgw zpWJKUG4#j4VMZ2L*#ATvyLalJ8WL>o5(WSklm7`+W0HRGr+Fsa#5vp%cQZWFBh&|o zjEq#h6%-KW3ww7lFod{Q2-3rIvy%t*jASbmbd;SaVM@q73@qx{PqLD%ukBPk` z8M*(ft{yqo8F_QGBsRV%wmV=1+5P27=g;A|%_q9CH#d1P&(r!%stGVZg0mK6oaV<@ z(K8{3N~*HJvzp}tu&i?+QE_V~EuCVpU-17Na8K8kW<`5*)37uvi%-dcizgxnmlziq z@Zcn3SMJPc7W>N;W*K;sM6iZB+!r&Hm`3p-{x%$a>!1GiEIzdabi}vnX531NoN#N9fGAY;V{74__ZI5g1xH7~@5CwK3mHe8vW33xr!t^i-g+nb2x3Pv=u^5kBp z5C}i~Qf?97I!%~*8(!`N?JLjW1=f|||NdFwp#RN3yRfy+Pf5^RonyJSiZOP=+S0yq zzJ;1x=B2E_)Lk(v$x3{=A(RGjsV~`j=TPo{f#8#DBD8~pdn!rg6*J#HW$9eht-6WB zd)FiQ)<_@}k|u%GW=PRADlizN#mkMUza5)hpp-C*L*VlpFk=&MX3R0^7>V`{prL31 z6ye4@4WMQ0?JmJ6=Z9`-wf^-i&cba1QQYH7KDxn|7|hr;zBBm}^wxrJvY+l2rHnG? z>$z(*U1#lBbdJ-nj`S!kbhXzW(|LJiaG5 zW2#<7;jENScOi7=H?$3WU}@8&TzRoj8snbyi{C#J0-tnH_L+c4!}Wpc{=&7?f4Ee~ zSeV?Ntj8^9A?AVZ7mt6;iF`TzF(K+wrhEr%Q~!Wa1Ln!?#WQ<;*hLNh>V}!TVx9|5 zOkM0sPB;B?Zoy-0Y~u{g>UXRu`> znA^jGM8|yG&VZLA~=__1pDhxj<=fnAe*ET?!7LWWKcydJ1gD?0@W$Cd2jMrPwHNksxU43qg8DMy5C*m^seDz8 z36aO+5iIwl7jYP*$apY&n`55Sa{s3<)3xX;`mUH$foH+z@27rd5nr%h`biX>F?_V7 z8H|WeI=vFcK&CX~Z7-K04bgYfZ=rZV=x1sS*=!|fi6kN5b~164seZR+5)#&8X1pp! zlc&T;j@_sx+OpAIsUaYti1qZlCf?2}OY>j_UFu3YcOs-KMwEs4mh+&|x84WAp)@-E}BE9drWhlz%^Ss6P#CC!(=piNo)6*KkRMvCM*$2gPVD2KDxA9{|v0FRo z5krTXb@%G@nN~n!S4klzlP~h|Bhc3oxa@cgZB`+MnX_*C$&aBoQ2KDG`euo3N^7nM ze7sqjjN2mZt&8Xx3ni}U7+m6RlSRd=qo0ve|LQjvZL*`YmOzGib2aQU!+O!#zT`eT z5hK8I3a@7MWAIYW^t{DilyL^Cf#pSRr={q|AR{o(523#6yb@IhbASI}T%R)o4 zZ89X`)}%`;&UVjFW^_jnnH!}FY!m8PwX+FG3T^)2_GxQDZ0eB-zLPHXvLZ|)xF)G2 zXts5S2yNHaioII`-ZIyNq zf&Zbd3RxeRFyY4zarWD?Xs3=Ru3>M8-qKSYm5#hjE4UCUZz_6J>FgbDe)_Ly03!*K zqqQLY?gbM|8I$&h*)*>YgYmr1@>T2Z=H*;hb0%EC>xNN0-#@=P7Rm%Hyv~8O(T$WL znv)X4FMYUxGHS2K8gJjfk$+(@5M;o<-tZ<-MuQEh3Cc4qEl32b-9I9bDy9k)w^g(M z(a`Q2ww(yURdjgFMi1u1$1u;z?91MoFU=4 z*B2Pb@M7zTXSF}xCB|qndMWg~iB|`X$WNai{dj=tEU>d#7Mf8?A3S-CL%xS~iOw4YK6@_Pv%3OAvILY!GaJJ{0^ugG(~? zw%;yyO&6bz1EyNXpj&4NmlS4B)q6esrFL26>d=lRv`yRYr#Wr8;}U_ugF?3sh)8WK zAAxn;Fu0wX{6f}N&8?|PFh77g-*JSd5mCoxz#I9>pTDHvRXYfk@0&SaRk=}`^kGn6 zbK94;DPRx0a74B1hH=-PU9;(@)3|)IG8u7)1KDznPdB#dhF- z-;iz{{gEzn#-}upS?&rB|pRAoRlzQddntwfB9gmp<2`? zLcc)*qSOg7`k(^0y(YMhdUO-Ut_3^|asy`p3ocq-b#} zi*tf(we-8!E#by!R*&kCSdSD7?e{{F4;yPL%rJYM3o2mVcFEYCHqRW_^e2Ha%`vp$enTMS+jWBbQ{bh6sb=sFA3E4TJ7K%SZ>rm_dK#Pg0M zWW4zD69!1bWf>2T6Qo3Hh`4CwYeO>d0pMfo6_@*+C&=_lqoATr~<-%B96RZ_l-Uhs8#RQ!V);iYnOWS}!9iuLYOk8;aP zTc^DWwQ1qdntSv1XZOdzssl!y_jV+(Kb3y(QWxFkget>qwgLwcSa-8erKE>NV{9iD zzv`wG#AF56+gdZ`C&^id(Sy{F&0~cg(I9;}ke(MvzyMZkXE^_2Hg{D~5?7=Uawr&B zyyiEcJlp5OX4hZ!IOn(S*okQQH7Yz}{G<%_J4a4h>wAuSqgc}muZD0b7fYIj`#|d+ zjAYhm+z^S~STZ=fZL|MK^Qn0L?f&%|>SeKg9w9x!m}ecY7hAb#%{vK&+wkC9s93Yb ziwBL6@p1;ws>s=*2w-XD)b&xyj(FUR`PZ)iQ7_w5Ei3S)X8R0D)XJ+!+0%EcBWIUX z=UQ>Lm9prWk>fld(q=jGF;CeuB}I*GG)-}e*%vMf4jB?pm;oQpE2Ry2eD~bBPuN&1&Ero|2XNW6c zv^TSg#JuRM5tr%=g~7dZ*;;ZOB`g*peVprVUro8jxOj6ViS)d`YsFm=Wu^4(9AZ2> zLdx4Zt40@OR6(pYS%j!8`CklY8s*DXx&FEeQFeQzqB?jw4$A%@HKS^_GdXm%npi(& zl45Kfw3~ka9|Fw0=O{)pu11Xsky2Np&$ppEhksQg#w7P}z`}%T&(s$LuMLkzg*YBHcm5Q9Fr0f5oQ2@ITjEBWegzhw@|DoiA2|*9NiAnGjMenyh*Vz zAyTI`p?q(d;qZ!b@A5g1N|%e&>IOl28Sva(HA93mFv&#a!Gdg{RpjWL&gygLTK4h# nNO~x29F6#&wD$gQ4uv?#ZrML&Y-O&uq<5r2&ZfL zmCTq}iu-^GlCw4whBi&+6xXl~)MVP`xjRe*1Wmi(=5RPXH;0F8X>ad8Vm8~qPfYlK zd%ZtaoKE*tM@PRzukXnq`_a;3Nimr|)wtaglmQE-rvoq;EE=`CD~0SvE^prUs8Y4@ zLqqQ6SS*$(85^5~QrU9-Uj^N@wXe@@FEI@+E=Cdsk;pQdnmSu$GR*<96Qi*YI-Pk& zB2k-6u)ZtCl`-asIT@$qTcY%a{r{e<7Yz%q~7*&v38zoDW^YaOULb%yLj zEUvn%*PAgjvpFz1ISZdJz)nBx_EA_qy78e|g)a>!0&W>swlzm7O<_q+T#AZ#DO*ys zr^kVTfzRmeb;4>L!O*Y|wk{n!%9B`lk_O+)95||T9};FnSCTY8)}KVS98dOQyqP2MD20Ehl>@csg7yhPJF~FSCV)qgLz|1adt@)K zu5pzk&p1lm$3eTZK$QnUpQa+N$$*8=4w3y(T;_OZoiI+>_i1A~s4SVCsjyXK#mIh1 z3xxdOox^czU^~&IAzYt^#;e(1$^WRjDCD(Q1i#+j$Xrp1j=HKZ3D5rpgiC-ozGQ}_ P00000NkvXXu0mjfB=kDn diff --git a/src/qt/res/icons/connect0.png b/src/qt/res/icons/connect0.png new file mode 100644 index 0000000000000000000000000000000000000000..99bb2575d61d2c7d3d24c4bd235c991298e7d9be GIT binary patch literal 16890 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/connect0_16.png b/src/qt/res/icons/connect0_16.png deleted file mode 100644 index a397e7e6a78a6fd1eef3b934e4c8401d325ae023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 631 zcmV--0*L*IP)WNFzB?|Y{2upzyK^lolYlJtyWC|OS;Tz7J)zjlF6j)HUQ@HImohX1uTSd z97lrx0E(h8z(TRZ;h-ANy8%pK6`P^!I%t{(jYi|CNvzds;ZP_9>2w-g zE|=9f5=Ns@D3{C7Y&OB;@!SCL#|;FekhrL2N(PC?c`zD{U^pCF z#S3BBI(dX*GMjloVlwV-0Evpl;#IrdmT^x^AFiw&(52hvG1L623X#J@Xcr0-z1Nd_ zF4qT?ej$Lld4s`#ZJhPL6C{lFJ8XSveH}W-$IrR7HL#CH{6yE^5&&NyW0-)=nbogQ z{2&&CL?#2Ftu5dXbg{eZ*G^9}<`m4WqGYdHL6oLXIJ$4yENt%Y!}qf@_;qpuKErU@ zDwRqeUET2cd?tj={~^}*5!k}~d!5TgG*OJLRw{5&D#7aZHhj%yjUNXG0zLWZ=*asz zm5ShqB4}tBfqTJV@Fjj&MO>bee0iyeJ3IM%%gaxG)@r~d5=MV8==_nSH?+`vl3()q z11UvOHzn!!3(YY4nr@t{s;YOp-IWRFja)x^{JB-gx90$2zuOgBviu(F^M7EVBZ40p Rt=|9u002ovPDHLkV1l7uC{O?Z diff --git a/src/qt/res/icons/connect1.png b/src/qt/res/icons/connect1.png new file mode 100644 index 0000000000000000000000000000000000000000..dffc692c76dd4d7b8b8e48a1d3309aae026cfb21 GIT binary patch literal 16870 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/connect2_16.png b/src/qt/res/icons/connect2_16.png deleted file mode 100644 index 2a85ba50d72fef69a8f9d1a387c80145ccfbc170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmV-M0=fN(P)<96FfsOK*m=Qgn$YZuFK^zzlY$c)9Hvy1wjzx@q7XweBWQG*Xt}e0i#~8r(8ww z2TvL#Ez9a4EEqFbN4-?g?RGsLnW)vln_bxI{T{5>YBm1jKVU$n4~IjEx&r)E zDixm+j7&`IJ6PVK6T{^dc;^YQOQn*7I}jomDW#Ya7$zo`kOUqX_}2409@zr>&1RF= z34x2K``go_#|H=G?(R}hD9};6P3D=4xhIz9D+Ye97hRy?&}bzJD|H{sGv0rY;iE99Ut{oWdP$fEQpblgTXn2PrHg UP)Ga_g8%>k07*qoM6N<$f?dJ;E&u=k diff --git a/src/qt/res/icons/connect3.png b/src/qt/res/icons/connect3.png new file mode 100644 index 0000000000000000000000000000000000000000..3594fb117c33fe9ce151c545f27538f9db53ea1a GIT binary patch literal 16566 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/connect3_16.png b/src/qt/res/icons/connect3_16.png deleted file mode 100644 index d4b35ecc5f3662af9f93915484a4da2db6ee0492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0bI(n)Efiw+KTD#Qv3Zc=dXc?;}3BVGK9YHaHjV;=RFu>F3W9ULAWd2v$=dKz+2$82&OMB=yW;( z&;z=Xi}8YwUR9X=M{#Rw%K=V+(}RNp+ht7jUTX~93F@_I&dwcI2jYb~`+U>S8 zc0v;NtCnBG@~#s0k4kc@16&};9CxfBiegCn!Wlu7AtetO0ExUN8JTeQx&E?u(tC`7 z8#ix#4TlL+*#J}`0)d1uiFb9=_PU#OahOq(_qqXLD5Xqznz(z2}*du~LsKMl*a|RJ4xh3VCEa;G> z5rD;iad+0%o?mQiyfAsr^_7(`fiYl|pa~L~u!mT2h;KutT?&PQ1-O9nJkPd|n$2hB z<>ggxX=!!8*=&Rf7%3Z_Asm1@A9HPe9c@{h`aa>Ef1idy zWTeIi#{&$p)|5)63J?LhSS(iDpi)s+q6j5|WMV=OqEnNa0szA-Fmdi_?Nq^Nay^uL ztP(H*DBt%z>&@cg{NeWYLx8z@{l|WBx4QF7Em**Vd1rHWD)*W{SuntpI^W-Yo9+US d09$06e*lLIMhb60(Rly>002ovPDHLkV1oGj2R8r! diff --git a/src/qt/res/icons/connect4.png b/src/qt/res/icons/connect4.png new file mode 100644 index 0000000000000000000000000000000000000000..0c667c7e06d861ba666ac22954376740be38ca60 GIT binary patch literal 16117 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 HN@xNAxD_Nz literal 2240 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 diff --git a/src/qt/res/icons/editcopy.png b/src/qt/res/icons/editcopy.png index 7807c59a88054f0fc3720100618bfeba55661108..db0c51772c9875cfa4e25bcd0a836b6b3145a95b 100644 GIT binary patch literal 1295 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEX7WqAsj$Z!;#Vf4nJ zcwPcw#uctzKY)UgC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6G%@pN$v zshIQj?(XiGREgss-%k!TahnivG+Q}Nq4ijdOOgP$?kD~u(So|HfzqCWNnD0m$}Su? zRw$gh)n(Szu}0|_?=6l%&I-q5RhC#&k8c}ih#vJhbmrXedEe*!{cC4%_T7hh?Kkz) z&&@Hm7M|JpGU|F2L-uLLj$(#KG7T2&3g?Jr?%mrFtE8lyjhKeM>G-14Qu z2kxEuv*KG@m9T?L4AUO&H#xT6{yNORjXwvR?fs(JaQMLDwa;J7Onq=}R&`Sxi-2G` z<9p_dRnz3G81KZqp0VKP=>r`%820r1|M9#?_CwCvqqE;LDkYhJ@Vl(|>%GW^jmNx? zJga7KTmSLxA3f%E>o;y-mgv*!pA060<^5RW4Ilo!cjip>YQIYkEm{hr95 zz-!4+$mcMJS>QRt5hP}5k(z-JRu*4a1$0gE0p$aC50oVYH>Td+U!2OTCFkIh z!xp#n&r$CEiA$Om9cK{ys8YZa|4_Oosk)(~f}vvFm8xsKN>{AId@vy*Or zUb^k){pil+4YI7)B)YyH;689$aHCq>)F~VeA3N&JKSaD%^eSLj{oTjq&V{Ou$f*__ zdomCGu03QBubIOx$7J^J{qxt2zZ;ul`9p#_8J?-_x&M8pWqd+)?Ck!I<^$z(WDj0@ zcU<#yIJ5eMnfsa6_xzm7Eb!^(jQPI5?0NS-MF|q5&>@F;yq9SMm4iS8rUw zJR>%Ie$2PZUe~`O1~T2IVxlxLC& z`XAgozp}kLaN*yNfDbMKX>#m&taiFvpE>+tvY9dS{C2q%)2?}(F`WtO8~A&f4{vWc zJM(ANYsawFCkzkVXjNXvSZ4U^+1cC!VrtgOH^S2!9{;Jn`!6F+F4y|fn^mj{haYr1 d5}DKA<=;>}=i8E71T2?;<(R9V%Q~loCID*(k0wY9a~+~n@<@#^aC{QLdu>+jy(<+r!DM>YSXQ^z`jcz*Ehz#-{0Zn948Dyh;GVctl&gSk+`W7rVw3Jk_*7R^>imXspCR4#$*H3-1CSALjNLx$rzIj zVAS`>{udfVV@x*SR)e(`yH^PP223`9Bj{-GGQ(s8^aXQ5gU35eE`XwRe_{7Mf%^wc z#tOZRF-~<1h0PNt=K$*4JY#YWj@so`z258F`$v&%K&#wh`T6zz^NYzAu#zo+$qm3t mt^q6A0#I8WU^31EEo*-TJ~w5qT=Sp+0000`b~`h diff --git a/src/qt/res/icons/editpaste.png b/src/qt/res/icons/editpaste.png index e217e308ea43cbe2bd4ca3c41415f76968972625..be8634674d210e0a70f34c4cfec4400ac0c52335 100644 GIT binary patch literal 15778 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 B97X^D diff --git a/src/qt/res/icons/export.png b/src/qt/res/icons/export.png index 5c1f51905428a5516438333f4ba59a42b6ba1696..18d05961940ce6f5a7dbcff459ad484a4a4c42a4 100644 GIT binary patch literal 17005 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 PKZJ+~i((!OiC_6I<-_re literal 1931 zcmV;62Xy#}P)#wsP7;z-1&IPssO`2@)pl!JZRl3VmPyK5RI7B%E>T3Ywl#eLt7@R=mPK_} zrDX!xQH3Q7Ei@5AO5`LbCr92Sk;uz=d(LxhhRmE!M#9c+KlL|r&HX%|uIu{W_dL(d z&z>OeK$lluwDz9)?2L(9dmZ<@V(!b2a^ExZ*!HN7W{k9uy&$b+lwE49s? ztgWss`m***Eh}2CK5stp-I?Cjxf&3(#vB;BT`xo)GoNm;$Lz}lvmaLeThcodc`ll9 z7dr4xRu5K|JQ%#?Z^IwG7?V6ipH{Bc^t>6GVV|z4xlJW|^vvu2JTpO**k>i#ojfxJIYO zX-xK5J(K>N2A+LZPo_Sj$J3uu@Y*6 zJ-k)8a)zWV)l{Zv(wbByCgtnHoh5p6{bpI`g{kkZzG}a#yCRZ0Ds*F8vAmfW-%N8p zUaz7`slqMoJmt}xWqYOa^{O1#)72AtaW@=oM}}+ZZzNBuu3i30BNnB}rvOWLuUEUo z`xP=PT)_z;YW2ta)NgW(=B-+-8x@t3B)_Sf%v@zt>aowHJ(IMeEq~>1INlS(pAatP ze=SvRSNw{-I-Kd%k14rUs&khzbpCRN^70(2z2TN5nUXwy$?cQ;l1^UnD`EalDgQ4j zj_p*{2|9Bpc1Q8`^^r&^A4u*4O5U|uf8Kmmcfv3wuU~Q-lFKL6*2yPn(nmQuzHh1Y zRh-^y$&x#M2Wnhwa5{m^L*NN!aBnx+x%t$1xh{c4O`SPSC$A z6P|4QMijK8DZaReh`n8~nKN5RwyjdxMosx}yAGUpt0ATtXzmF#SGh|nu9ga`q%uQ# zWnr!kZJi@+cuvz>@P3mMc(sb^l5+Nz<+>o}dk79^$o*yPKT}Kq5MTldv_^o>Pn`mj zF}yG?wj1jX_kl;-GqHcmDJ>zg$xpG%%Ql-6$oe;ULWt>8MYhdBwHE-?&{!bAZ-V!x zc|f&Z=-&&Pca7nnXIs;6bocw>LYUNK0Mo*$oC0iqM+TIa(>fYDggQ8$=?3bJ8D@@{2RJ_Bww-tS5JZ`l$hQXWM8p! z-3=B?V9$;E6Ynzvrh)c>cefix#kMCYbuh-mt$4kcH6a9=HyS{Ynw8B(pYsQ(t|l_t zpkt_=V;Qvs0cQPv*EbI|{_%4l2yP$rXb z&bqH=fzL;)Hg0-^<#6+(zRNHnjsw@`5F894&B0nHuLYcCa6HY;#-w6aEzYFS z?t^aa7&@foz(?S>jot|bJ2Ot3K58<+j3nj(Ck3`_3d$iU=%#L(g|>j;I(Y#{DWsgK zW&P$t-uobfx27Ip@r+~+tlk7^n~7_;jU9{fXccuYU0-a?%dM@6G{wRQ%kk=M9i^Q4 zQpQV)pSDErZz@&3TRM?r>hFiE^!8e(M$I~>L8A}p*Tc4GMC>P;HF>^1U+|XBZ2p7F zQYJ_luS(gkOSx0()K^C?V4(@-wXhtVxx2&jEgzi;uD0MS zhR{&J0!9rO<=`s7gQOz%0y)`lsQGQ!_Ujq4Vg4&)CWP(u)z6x;H!VLp=naPa;lWTU9qFe)q-RE&QjiS6#!|rtH zQW0d9!sSZHsf7Zdh5%S;0xRr3wW)GJmjU7J!rPpqI^Roaj-R3{UYs_c+mYuj&MP+Z zoYiJlA!J^=Wn`;2s^b4ae|Ta{5WC~=ZFYJDY<&#g?F=I$;2{e{@;~zP=RdG*GViZC RnzjG{002ovPDHLkV1oU{ux$VU diff --git a/src/qt/res/icons/eye.png b/src/qt/res/icons/eye.png index c4d182adbf4ed1140b7c715517e07802758ddeb5..7036708de5d9828e2548e79f01674cb39577dc3b 100644 GIT binary patch literal 2806 zcmcIm`9IT-AAfJOIWid??)xZLB}pa2)*QLE93c^rbIUai*@y@$8X2Y`XXWTq?&DpG zPmV%!e2lC3^U8ejC z5!mkTKIhxNOTv+sHWx*9Ctk!qZTA)>T3?C;0GpA20ja{=-PnD~Mq%8e@PvRUl5fN{ zfJ7o01cir0`uP&C84w}@3;Ac|06;9#25oUMwrGhNm+694>^1Mw&tR`yZ}Zgs(NI2u zyPi=&^?2=y6w%MOgf^<$v)1n+(}a%&jj-A5iEY)$*fWGPi8AARLg9^!krMjix^JNKQ56vt zwP#>5c$RC#t_}PKiGg&%id}4(RoTU@B_*ONYIq6;^x|4YyCy2dLfotAn|{pbIIC_c z6uN-=7JNu4j5t|&+YFSXy4Y41w`Vn2SnW!DXs2Z6J5HX=cSz?``Xs$cb+lB~TL|;m z9z6!B!%y|V55e12)j}{|AKaA3ONiM6QbEY{b<*h3xHAGW1C~286Z)ne4ScdlZJpsDqh`BK9D>Ail$m}2#T&VJg z#ny;#ysnJcs8HIUNUrQZ4quC4+nL3~oUGzGvrFp-xxs5};=*$5+TJgL)Xz#`3y{uI zy2oedfRj4q5r!zEdZbfvpMj4oQFn;`s#Z(gkCDC5-bgKvco=gA+A+^Q##D zlL9^RzJ;V!P_LZ5tWZb7B1nVtl<=wL{AuvI9TQJ^REFLD{m$HX(V>BTOl-pw*40W~ zZ*9Ud<#%G9M{hl$N_z6-CEIf>W^}<=@q~x+E6t1FN>h_3yhMR`x!<3bkon>u&Mx5| z^x^Rn=c~P-N-x;IVm08iD{x^;m4%%cSLM5af^cy}IK(H>tsh zqx9>|N*H&xyzwu4*4Zv9$Sf;M+>?5S=Sf#v){&j#41bfs;{6RH?wd?)@Q{TB99N{?g;w|v$Sl{ru5v(Wafv)8>hvmJglLtw*DrCqSJ`XLDtV7GA+un{IV<3ZZ7rL z_KVitl<(zb8lTUWRJAyybu;nk*I5`G81 z_3+G_C1l>m;p)uW5ZY|>q8K*_9v`JQ;Pcap*5L8?lfiZ*c*;0) z4a3-OJy9v8zbUAE-234i4tZ)Q5H<+!4C#yaLEBENo_Ea|96vo7Pq;hyJGV>7O(qZM zX^|gJw)C8TFZ59{I@}@q*9&-Ju|sypU(TPRrq-p4gwM@(bi|9FaConl5Y~w^6`%Ud zs_U@)aNIOm`GM|K^_XlssMv#jsI?Sm~w-9lX!@kxp><)@d5F$qr5x0K2JZF|YA9jzEnw+FF5ODEUf zJrosm2%68`i%}l^B3IPZFmWc3{{}t~ZP2O&*3L7yRZlK%-=0q|wv+;e7i^y|m73j| zmC@UjIw76ViVfWJ7qjC11)utIT1vBK486|*7oZ+;Y2~ysYd=%n+#orBo_Z%2$3$#; zQtm;NP0STxG@UyiyD!oKGyCI)IK%e>?|)7u8`XZN9nMziU;VY0j2T=E|DXSk zPZ>wEvaUV!Rm4HMoB0YZG-=|(tlo5RKV+>58tfqaQLsv!S$Fkz&0Y=iZ9%g1s``oj z>EAqQB?k#b9|v?NPL2H;Gd<_+O{QGC*?YOVs0Xmwm)$me{-jI+~nuWx1J%k8U`DN-PDn=Z7{R zSz8I+N^4j1>SSVi3kOB%413#r#96#>r+e1q}^Hc zV3Wp!aw*yXWn^Q|X0r2)73mqK8?#n2>PN?Q4RG>#*N2iLd#+AZ*k}IYSR?CB5rwB=u9xCz`{2__O#F zV_F$J#&ftWQjQ<)_?n`MGDV|@dOtQ69+&D!=Gks8Ym$fMJwNT)P6`)11J4-)$;K+8 z_hGA2y(3Ws@ttK&T3KbPBcPp&>-gpFo+yl=q)Gl;F4TkX{6`IJ2cm8^LY%z*WNEjf O0yY>2bgiXN(*FTDL<)ZZ literal 536 zcmV+z0_XjSP)W;VR5&6(dO?x@e&|q%ht7 zGdR6~s}6iHbMN{8bI!dp0_U795)QUtENmbktcUq1YhWKJAOw8#yf2`G8h8RDTW1>x zFgSI)-DirTY~^w}zou!cjYh*oo3bp=B9X|XR4NT?wc7i1IxRwXM|Eig4>(UG5*PJ) zU9MCr+oox*2Lb`tWMVJ^A{VXE9_3IjX)LYN=}e>Q<6tnD8iv6MRaH4fv3Sj8`G70R z2}f7l-ltsBkah_!*<>>5L;J4TY-Y_>C=^iHWS5s$)_XV{WuKpK%-*M5(x6b53~pMj z*7|5P+V&tQL6Rh<&*$^^IE!1l6#;YDSCK>m$LVxBn#p9MyAos(@~e-|qt0(OBPc<1Y5Fa$3^1BU(W2><_ISlHlK afB^v9dC^iz-u#^a0000co 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 literal 595 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 literal 661 zcmV;G0&4wL`rG;P|h%(7N? zksjJjCUg*CEp!mX6%78ugHYL_SD6<<@ZcXH^f1|F6N?lSu~1OyVK)nzLJP&RAmY-) zDt2N!snUU!#|yklGG1}!`*B)`?XLgeCYLh z8Pu&(UmHGL$gOBJdZ$<{O8I<#$~4WfKp-G=yE+gk5@?KaR716-v9vtTpU19ityZh2 z>pCM8MPU?~%p)dAb4->mGn^G0=Bbu6q_v~Vd@L68;q--mzi+K8l}ce}6INEz*7wB3 zG&CAj80M*#G}vgK44zafm9b8zGv&gdf?zNRic*Hz*>je_<#K|<5&Uhii-DR?q~&ck z+n0L1J}8&VW+W0h?)7>{alN2v?;#Wt!Rz&5cMan4Gmti(!rjfKz2%qb&)Va+_vuu~ zz{DNhXf~VMxm@mhtyXJ`qR6}54xw6oBedIFAd2B1e!qX~UgLrN;)P3|Vx#;GY;a?6 z+hcIJ5imScj1eS^oJPixQ5rNC+%h}K`$6FJL?UtO`RWUG|MGx(*x-*~lRTI=-RpB# z<1>eIukveuH!v1QsMABlGMK(5&TKq;w?6|8RQr)GJc9)=@T%{z^&Jy$_0Iu-gNuNj v1N)Kxnid|R!PM==O+cYaVmRT1UjhsOT9g3B;L;7y00000NkvXXu0mjfDrh(C diff --git a/src/qt/res/icons/filesave.png b/src/qt/res/icons/filesave.png index 02e78b931a39abb8606863a2e4357253c9b9b63f..a53390f5947b017d0c9842f7e798dc017e083a61 100644 GIT binary patch literal 2874 zcmV-A3&r$_P)? z7yT}xG4X{*O-=NvX*A(MpXA9WLKG6k$x9|h|C4H178JZ7d-6@@KfM>s`_qSwl#si6@Z9L1HKD<2e_eRHD`ez z0zXjIOQCFQ5`8HEf7cHIgMq4i4Orig(V*`HAR?ay4gsGGT=iSP3RV4W;ChqNR|4>N z{z<|+zr|a?z5NskCZ#qY6h7wSEwV|F_eIdS?5!dzyX_z#2o@)4)Bd`i!cMwEn27BdYog za1S;SSlVtR{UCrl4Q02g>fbv3r~kjLHMQMH`r#SiPr#=N6g`Iv`y<^7iO6K&KNNc= z__L~hx*(B z_yG5P;yvJ9;PX`BE=i2MZD zp{j4jv8*7f+K2;K47?6#O~)>SExT&8<8@$h>i%vW$)5p4WRi$%16~I1OKndC?gL&H zk!?QBB_*i=A~GL13Va`!oYI!aOvYXFQQrs2NG1Rg`2=tRxIdK*4d8y@gzt+aBoRQ{ z4Bl=Jc@u>NB%EoSDgyinSeU5oCbAIMC((&601>$hcp`SYJ-`#bZ=#YS0z8?h-KH}M z*Ei7{jfP*hw>oB_UIl&(tORbwt;*So8)9u59{}5c<+zc-Ex-=k z;E#p46HOzJ_8q7Ah}nCRV^1Zv>bb%P%ogz&whloMWoGr&|G4y@Cs~Lsbo{z!0#-+tLw# zEyoJhIf;mqO=AjRuA%HNiWF)SL07TV#2yMbzl}oISG#QxPuF zj{;D)&)zGBQ=SwN^YUx&piP7o!Cqif8Rz?Junh6Oq7nBbj6D)~&`@>;a8N`np%b`H z1pBP#j=?_4JAWzen!C*x9F3)qDid1(djZSC(*STlL>{y@X#>E15qYRYdo2;{x1Q_IDeL@){P`B=13ax=_AjV~SVN9& z!=m$XYxS+OY0m=>muzzy@VKG;^T6`d&K~1>mRE58&Qx|M+aktq?{vpQhDGF&uvXdeHk5V#uW%_XiSvPU zDWENM-h^$UNc(XCw}pEu+gErS%GiDqxH)|ag!JHOlUKCmjfKO#GSNll&CE`l{R+P?-DZR)gtNnZ*85Znfg zb#-3rxCA^}gZ+=z?EKbo3crJEzX@P*gwAUh!P#A1d>)7qrwf!KQ~{T*1K5u6h%0xTlF z^T9c8mxyezp6Jg>;e2p?wJ1hIu>=q^{Eub|@T`aww!xQumbAO5#p$yM4}XH&eLL0z zRHx%IZfe(f_HOcJQ``Fv5#9!32w+hII*l=FpJ`A?b?|P>=cnLqyNMIZ71b+D?0|vDrmc91(T)k%F(d!zr|4Z0B(!9vXS7i zwz?jp{GERk7%5_`P}cb`0y9e5Y}wb~sh$)7HHQBVA~;ggk!6k}Wu5QsZA==dQvkJw z{|+KJ9KrdAt2p1=+L$y@=UaefAmas9JzJ$QRlR`wTzj}mJ>zf~_qq8(l}c3gBj9<% zDfJBs)pYkq3;$!ZJssD%q3`_Xf$0J5++=9Gwlq+e04(AEJQc%#2N4_!==?(=o$qa& z1$<<%p_VjIR|<$4{zs#3%K18+`Uy-9{xw8 zZnupM*p`Uz$4xV@b*BzhJ%=q#1^+e>Q~*s0|D$OWL6OZO_7TDPZCLssd>ZKI@IQuq zQ*rC~I@vS~OpR<)(lih{1tfj?9}m5@chFc{$qiF-FQAGxS<^t!w}D^+@S({v_by8K zAB|qyO0NC8d~4^=sLpT0@;0y`WEu!ID_BGZfmaI_zW~gM9Rb=Aktw)IpHOb+&ycpv z#BC`*tKcb%RQ0tGZHG(&me6!KrSk#w+V-+Zo$qZ)mIi_dphWn$guL2N)hnr;--ab6 z21^4$Qb39De~YGA3f*8tWB~Vz<5ANpND zL}VdQG!*6V--QxsU{F;pzeMtXgh&CF@#!4?yWrD+WDA$?ulFACnNz0H=xgBS)F*_)t}Eu2MmW6cB!vN~S24 z`#%4Q_XHpM}XcYM}SN< zas=pY8nG~Bgd9myaaC2z{Jz2e$c~%f+)lY);LLPp1b7qpC2&LoIWCw0GQCM22%6wz0ZeeR046wD027@5 Y0z+)~;)8_LIRF3v07*qoM6N<$g5>>Ac>n+a literal 1251 zcmV<91RVQ`P)6F7_lu=Wz>Hs-StLB>OjwTcYtr5hL7SosjRaC-q`6Q7=Z=k+&_y)erI zdYvQt0~SZgs+byTplY~tL);w*2{8R>0Kk z%&RZG_8@yk;4q0-j!i=~i2^x$gjpe}`w9V~_!!Dqzy=#P{^Iv*t8^dhGI#XR6FZim zs)FVQdIn7;^!i2^g_J=RG(&a~E(muR1B3{HA|ghhF|u};o4ZI)m2M|yhC!eJ#H*(U zAqpV~QSc}Qq(n*#AOdPQGd^lrvn{(}=HaKAJ$wSo$u@}<4hx6@439R3K->~hQXK=t zh}+R^fUHhc$S%SOTS1I=yNq`$Vx+}D0V22nW6QZniCDHAx?M?0eHH!OP}H~pGa-aP zR@)>*X|XLpz)K*(4WJ68426`e_&Kr;mBF0`aZ&i07AYVE{9wk@U-VJMQu`3ymf#GY zP7pt<3fVJ2j1e!3?`v_pjx@Xp|BEV=E*Fn}xE#KYJ9ma4fZH*&*lt1$vUwAV2tyE$ zy!!VCLb1IuiwH%CL40mdg%;aA0G_VOi%uKvsB+RNbIO_v!@LJDu-o)NHQWQ`7K9L4 zU+YtAjhUim*e&|AjB4ImQ+1jdIjiqgBbyO*K&Mk-2wsAne~e1N250BT`R1~@V@gfc zC}ON+%=h@;+%_;FS!9qPR1oBj0!sbnSA?X(Y7d>q_?To6~QNk12b3MmlAWDqt`* z24Uw6lqO6Dv4Vw54HHYt9J(KxjMtI^Gbi|Zr-Dlhf$x4DVb`9>f#YLH6jCZpxT649 zSe{hLiMLM;c;?9oQu63hf~@WpVF;sRaOP}}Z-1F0{~k2LvefGwMMi=zx#ESmVVvl&{XN5Ur-y zYjb0xCTC@ODljn-Fe^V&<{55rI0I5LpaP~sT_;jgb9E_l`N|kKSJ!EphPsw^G-jx# zO##CA1S}e4Ah`glaHk9i7^SnHl#vcWX7Ybr1~A^r`|CT1Yg z;G_q+l4HP2jG2AV_5a>I4>jTwCq4xCBo;1jip~ z=+$x4UPpu$qGVE2F+CNrZlF#=zkwz}0!E`$J6^*-e!F(gmTsP$nc21FJgimh-P`5R z!72LQbW8(aY==~6?zS*z`?PaU(Ww|c}D?P=NI2S{lS^fjy^YgEURQo z4PW-Ia=K%f33q~^^mPQC{2LP?W#}kW9pbqQ3-jl{zw%!D%)O5P@ehf)4z*)yn^yn; N002ovPDHLkV1mgcKsNvY diff --git a/src/qt/res/icons/history.png b/src/qt/res/icons/history.png index ac955c7291d8e113bb6399264711857782f5813b..cb723abc5f71ddd9c1bc2969b233a49deb1a8feb 100644 GIT binary patch literal 16271 zcmeI3dsGv57RM*NL=?1Lx~_t4HkQ^dP9~EFBtri~B>aG>+wGn` zJ!f(bWbW_#yZ6p~?(cVJ^2fYdQuOP@gkcE~1SJ{@^`-201@{*p$NoQm^=LW!)!$w? z-U&g5quifpZT{>|2+De$E-QDH8%JXVW0m40W1^&PtDT(K z)t2`qVw%jBj8hq9MtdGrO&3mbP-7<*l@XI_2n{L8(Isfz7#qM!xp1-DYOy&ncecbI z7h{jPVMHSKPjS^`OLDn{;&Nk&IFE5qVwF?{6EZm}&eTXzl~RMEqr`F9L1c17E{E9} zu(QGD!ridVIU*3GD~_IW5)Rt#q8Xc*i;J6>T35D2!X*lQg4boWhZ5PGL3S)f#Esh# zR4PMyb0Ue5kG9^+S90vsW`N##znukuoIrnV7AK(HP3z>-k!( zy{2}$^6OXxL8QHUI?EdD6jDk#nOX-y<=3&7GNQMuchTl>ak@p~ls?a$a?^ddaZ13= zzZ3!$(z4fz0s#-a>Aj$MpO zb{WDlRT-+n!X9%#6c|yL7Y_uc8pUtxAi82P0;NmK2u9SQrO;T9i(qMS2^K@bWJ+%wTi6 za2r7x^g4DxO4B4}LQNWzCKH8K8o~rCGn6V=ttM2kSw`VmJ7~7e;g*Ow z+}Z!9DS8RhBUK^oWEW>c#G+-FuD_9ur6zVC?Gh}szaiOihm+#ATehTYzlAzjs6lZ) z{%wol1lP)R1h*R~Qj2sO4WCxXGw4S5Ea3f74#bae?>k3*HD%-5P=QeXS$zj_GGgYfz#s&QKtMe2~Q%jz2VDV6R1dfyM;Iz8_r zKlQQ&_F(r`*mZO0**dk{!vn^)UA6__{&t6Iksf2=1rwNG&b3cVt$)5!E#p4yV_iJRM7uI_G7Fxs;>=WQ9gU~qi1=b0#}Z@ybIWb-Yu!u+C39}uq;L!bLK?RZ21FM^OtTLB-)euMdIbyjHuml zQ)>=;ibXk|xpB9N6_2==$Jk#yJNH=BpZhfrx)bx_hZBan6H*hl#Lw$YgYFD$Kc4&P z)>gIsp^`Y=*c6tdh?RMtoJ;U`Q2fpvSr|?!w+`WRjyyrG^KKwI<=p>QN1fB zHF{^l!$r%XXA6>Mm}bsu^@vuSc6`J5qGf-~Tb%AG`e-8M8)?tF($wx6zWfx_bhe^- z(bo5pzYv{@HIKU4@Uw3WtuLS5TCrcD_~7G~35gv|lcz+bj&6N<)3%Q1V+w{ty8adN zy}57foc;;@_@Lwrh<%P~u1F!8nI&?Q3jm+wpa`>$U13#NNv?hk$y!qBUQ8(dx z<5n%)#I((uq}ye3BuQy=?v1uu_jks}cD*p?c1OzShib&UXQ&(&nGrc&Pi9gcx zmGRZb&d-0Z&1jf9ReF1evT;q_t}zQGYz4nkBr*H{xfNctOmsKC^UgMry14c=L)w=E zrX@B;KTNi@|1S1STw`p~v5A&J$5#*E=S@G+?!MkxRa>)k(4mjceNZuF-{Whg=Pt&5 zp0eQFk!vMd-vE2sob9c(DZ2Q}(Vs(ezHU0N^8Lx1srlr~GadMWwqc$6y29LbCF?6@ z4>^7!SXw@ksiuqTzq|>y22Q>0-{T ztO3`H-~3cwNOHEh^0=gvE7p9w23~yk z$ZM;1#*Urut-18%lHaHGt0>h~c+*5f?4m_6fdhj#Hhi$<;#FwyqPMq~eY^TP_sYB> MzevCFsmhoB4X)Tl;s5{u literal 1343 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 Ha?Jk#0c9^6 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/key.png b/src/qt/res/icons/key.png index 2638b4f2315344884120f307480e0104da407a76..d21f81364d8470085f9404210e4160f0a8fccf56 100644 GIT binary patch literal 2434 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 literal 1440 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 Hu0mjf+o_Kp diff --git a/src/qt/res/icons/lock_open.png b/src/qt/res/icons/lock_open.png index 23ce3243aa2e0b81298e819114fed166cf8f9d57..50615b73362f5553fb54d6d3bb8faf32c886960b 100644 GIT binary patch literal 1751 zcmb7FX;f2(623`HSR$J&fnXuIC`-i{0!T!KfJq@D224^meI$Y)i!50hMbI0;Q^1G? ztYRAkT0poWP#3}@2q{I1B1?;)pq8~rsbI7~V^C=Nqo@7Vcix;c^PQP*e$MwzUda9c zBSX9)002hJK>7h4LVu<{MpwV{;rHlZozS1j(bq+$er&F;H%JSN5CQ=6$3GKM!^qd@ zhBhKbxQLw^Cz9|5M*xXLLP|(U62|b;j*wCX@n0_N!UF(?!=(Fhj?3pugKD^3Yp6Xs z*!+&4)fddo=r4>6qho)-))GPlriVlQ2t}w0ztD7X5q+AL??@CmMf&lGqve%Oe4k>~ z0p|=}fzX{oghoH^$X$%iTu417ycUU{i;jtsv?>88x zd;n55l$f|09?O^>$X3k^G+j?*C4DGDM4rjjSDUKAw5;NZHodEQKmB0kdI=li4hp=~ z6tZGwKncZjmWsWzTL4cY=m1@Yu0_ccx2o<2Z1BVA0u21?s(+9LgH!k`YP`T_iE8r>7Yu)eeWVJFEdP$d3rQyzL&D3&$I9< zxz9X_cku8tw~FcjHulX{8VCxojkwP`E9_CMnz;*mI@^tpqne%E+K{(6;^+qiUrb=U zWx~1B$Z!K!>%`Xx|1vcHVP4Lz4T(V=3cw(@n>sGxB~O2LOH~SM8QE`B^n4svO_nyL zRl#-_dMBbFj|HbwuMxwZEgFFTvL%NYQ=2I3LI+NLo71Kzt;Y*KIUD{><)c~TCPAwI zm?fM6kK_=$@^gqTo?17WD@egp8P5>o3A{7#Y8ZPV2x`w;nXOe-!P?Y)$z#Y)q2=p< zwUxQZOvrT0@>FTa5dJLIwEtp-a`EQLST1 z8r`nC|`7PET+erHx_2#+Sw(TWQ)RJkW$Mr zW2`eRdTJmRCZ6bN_HB#Pl9q~dfNeW;fs_QN2G1Xv)HOmH&tY0`~9-$-BndT zm5B9Pp#+Zbw`ri=x7c(`TLT=I#PQlyqwsrr1~HQo=P$eRO;XWGocj1oW@$G~C<3T> zx7DMwwu}_SOl;rdyv3aX6IW<%3hA}ozRpuKr*{qPc^jOpRM_#}0YYb$)~~DH>EPU0 zff9<))V{F(D5Q6Yar7RAM{KmDZXErXR{@iPvM%xZSO}NP+-=+;MbyVkL`Us}#6fA| z9R|0cpZq8a)kIgG_=hB?zg`v&ipT$!Cc*yH`tjTL{}Aq*2|ellm5IMrOlpkyDOdt{iymv6wqE0XI|jTNOxNDE7E)vO0%j)=PyEE69vH*9 zpU3(>HPe=SD+9or^0}X}+4IXEAr4hE80^z0fR96-AGhflC07qq5(~nxj_UwBl;ftw zGSja0C+qad+XhPtzRL%^;_-v&;b!A6_QiM`Z$Z9%;1NfDM`$FRe-;?g(|dWozyQHn zawy-)50qHDzjPzg#$6`=bGK>RqNmhG$5;;qC_NX~EN-|@NPhE=HZRd`C$~cBpXat> z9{&8Un7WKqa+VZU)u}z%G&WN1;3_)C8kvoK_!22!)tOka5T|DOkF8!+jQvuXsVt#{ z1sBdQy#@uIY0g16`{H4Ewa6iKI|86jlgT@xI{Kz_;p*0!78ij%>QUCIENYRsK!8>A zbte!wyyL-LthGUAp07s+;S-c1u9<%Kavc)L?G9Gi@%9aO&i5zqn&5^0D;_H+AhrF$ z(w(V#jo!ac?vZY#r5-K}fWo9b=PU+%-Wk+!hR$y;!kGg!x+AIqbuQmB^ir=%z}ed!(gs%dKSQF%V)KuTi@HAFJ+LYl-nHYsyS& Q);%GB$=FY?_vfAY1CTBKbN~PV literal 1359 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/overview.png b/src/qt/res/icons/overview.png index a274f0c48890a1400bad17bc00fd3084b588f7b5..36e1003c3c119ef5bfea14386c924ce5c3edb693 100644 GIT binary patch literal 2215 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 literal 6327 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 cfp@(i|MjW-`cLY%i?EnA( literal 1778 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 Y0z+)~;)8_LIRF3v07*qoM6N<$g5>>Ac>n+a literal 1331 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 OfUBdY!!bMd#(x6@sjhPX literal 649 zcmV;40(Sk0P)J-8 zG#_n~d+#|iW*8#Cv|u&C`0ZKx&3VNbscQaQOU2HVMF!@#-^& zbEhURUdY7ITu6h*q88tKpF%7b*WT=Ad(S{~iLM8c>J_P#GU158BmeK!T1WlOhPi1vgG)snCey*8pJYoxKdMs0DK-St%xjI>m* z9%6#LiM|E`5IY@!f2Pjb*{khP|Fp{H(lXs2J0w6#iX(y;7^SozK%n1DVi3wE00$}G z7Z#bCo<_Bo*6+1xeBPk3@rBmL2Fd@I`ujohBM4W6u|6I6McWeKsw)0y;>2e@?RJf zBo)Aq38V&zfS8d;AOR8tCqi~>Cerl6ya3#(p1CGwX91FdNdcGwwuZc!0p9N??mY0C j!`TGhaO4>=V#J6)NhJ@SnNAkS00000NkvXXu0mjf%u*jv diff --git a/src/qt/res/icons/send.png b/src/qt/res/icons/send.png index 43c3d7922c15e1e4962264322228746d54162413..18d05961940ce6f5a7dbcff459ad484a4a4c42a4 100644 GIT binary patch literal 17005 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 PKZJ+~i((!OiC_6I<-_re literal 1345 zcmV-H1-|-;P)Nr3^29?oeI`6Gvz+ z8POr?ywEdVbFqLT@JUdiUM|VeO!b!b{G}4@g81KpBAq5QsAgeTzZ@&q0hK z8w+)NeHvR7_l`>FUmUQa_C^L(7WbPoYx`@7s1o3XoCB!D44V7cIL2RI&Z&&XRSM-e zC;+7Zh3i1*Dx%XdXor+i>^$OesMY16u?Zu};K@hF(yuH}-GATa+9;cZKy|J!VK(#} zOcWDmVvIFc*3ky(sEz_-6d4VkUDH~lBcWFTG`D*^_o2&umm03A6sFuYoFo=+#`OAy zQC1p&4Y>qB>jYN`^?OdR=A#z!(>{LS4DiB^Ab5U&HMjWWrF?>v zLT3SiAOz)jtlZ<^Ifk1D3lB~o#l{UkRBYX{e+Dq~tO1M&#t2~WEddFhSd5|zI;zpX zn=1eiK>>bty>ze%lS7nVo0)?wnshH>Wu zKwaHlK=10t4hRlHo@)plgKu#yzDn?vvN(8Xj8?=-Apio#5=C&w#SW84xZtH(zwt-b z)P3EC7rc;L0D;za&CR1rxO`Z#HC8yDi{mJZgKM$1V`t`XKEdvTS&9^7w175D9_uru z3c_@XZ99Hq>a$&L$>JdYfOG+Li%}b9#uxrEUJpUly-@uYg#09V%rM7(r(Zy$b>! zpE{EK08U3Szn;u8a-f|XU&wVsQyu0TH|^)1d*0<}Q+o}0;bVVs-T(9%-9$#;fHujQ z)#S`)l#odV^e#!?UBC8LD*A*>Ti!q_c}K}#G{M4I=wU-*1MK|l zfb4HLEKLWGNOZbYc6{6@qiruhFmE>{)t6exfu0BW_|rx?*4!+|jvbe|wVz0@flFiZ z7p$hVrtDvD$@?ll3KtxrwEA`n-KG1wV9C{`wkw|g%vLEIxgw_b z!nKswR$Ax@itcLYvhxwv(W-mlsd+fgD?rS-s{i#HiY29}8D+p600000NkvXXu0mjf DT@;2) diff --git a/src/qt/res/icons/synced.png b/src/qt/res/icons/synced.png index 9fad3847681ff1f54091598f4d2b47cf65098d82..d33914f0b4ac09d8b1a25890db6b3883731375c3 100644 GIT binary patch literal 16891 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 b>c#B_4cNl8 literal 560 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 literal 291 zcmV+;0o?wHP)O(_NB$rAU;Bzd z2Hh0l@>{8AWIPx&%o~^gJMiDLhk*k{9%!U6&;`sueNq{Z_xz99!@vuZLRYBM{$u-p zt0JJ28L&B3G5hhB|7mv_#Ifrajk&zxf59s@4WLpifYmf><^RgBY`Q>;umWD+Z7cqJ zY-QkKzybI|4lnudIu96jkIfWK3kDWk3OMZB!mpWUAv}l?+##1{{CC@g+YLOP pn@hgiPh#N2rGSxvk3kYOvH=}`LP{({BNzYx002ovPDHLkV1m2zdgA~9 diff --git a/src/qt/res/icons/transaction2.png b/src/qt/res/icons/transaction2.png index 8a804b05ac07ffc7a26f25a774cc58f42fb8273c..d33914f0b4ac09d8b1a25890db6b3883731375c3 100644 GIT binary patch literal 16891 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 b>c#B_4cNl8 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vpiiKLn;`P7g&4jT)WtNotvk^ zJ-#FLjS;;eXW1P7aCH24{+JVFlFjhZTIFngLxtAHS(XhygeE;RcX;E{^_JIT)_&%V zikh=p8-55+Vw60RVZ@%Kt&qm_s7U4PbcduP5(dJn9vVt0^K__RyXl=U>%yON-fI|L z9sV$#ZLnRUCMBn^uQ|oR*z#nV*(65BClUhOzO|YUE-Y7NU~n^=Y0W1h7!7nKgQu&X J%Q~loCIG2tN|XQq diff --git a/src/qt/res/icons/transaction_conflicted.png b/src/qt/res/icons/transaction_conflicted.png index 51fff649abfaf8097bcfe7b69e2f02f5ebfd6107..6e44a2d329adffe1a5ce13ccfa8b901f2f325765 100644 GIT binary patch literal 15766 zcmeI3dt4J&7RSe66k=h0@Di=WP+KcaCc`5kV~9dPff}Vq7m$a0(b#00)8~&-l2QB_7S-D1wV8ry5fgOHdV|6)4rjDokL}l9U>Pqzf#hQk9PxxvQ{TTo=i^`p)}2F0PK` zrGzVl3Q~^c;c-QJY8l&xH|*L;?##;E)hLrQjP1bw;Iy zuQLR>g4~M}gBetMoHXKuj_Zi4TtyTZBY8YWqQPt6zO>|EBAsD?9YqngC`lL*2;tG3 z)T%)rvOuqKE={e1F%720bVdW^hm7h+<`G81kVlM>a&UUg#8gcbiox8Yu2-uaHMPMQ zYoZVgARX1ykX%S&a1v%93iK*0)?|Eb$&fu3XNYt5B+NodfBkQh20(sMtfHuo$HglTpnWMztYd zC`v|zXs8$sLxP0}Dii`iT*?tK6oeYjDI6_E1d0rc0Vqetpf-2q*_z3Y8NYLQgFVlZ8s*(S`vpXPcq%I)hQEQ(^HjGHO78 z<7zZaBo>DYbHe#pgi6H^6N(VN62sK|2&F_6Aq-QgMdBPMM1=x$zb|wQp(=1}m4VRe zKN%Wuzc2JMJx(2SN)4cKtp3lY7$wYosp4=0)trSu(^9SLJjj+~Yle^Bo6z9S1Bq1X z4VYuQMe^?Lx4{!^@PKmoIJYgTR5^|^naZ&nFtrpOHafJdLC*m<{QoVWD?Z>pb`EnM zru(A}&Ayw|uZirbU;;=(=c#woQvjUHQTGT!n{@cC+4;*FnX z)R(qA%}USwO1p-L!t+`i$%D^D2gl7hKSw+JA)jxb-KO>T+hyJ8*SYuR`VXi3zfri$ z(0uj0_{P2khMHq%Up{!wqL?z5WY@@xgUJUu8O8s#wi)=E62!JgC!2V-y6)~>K*~|GpnKPV1ZAH?HsWivCxp+CA)Yap%PE+OL(9JcE&u)>I)W7tp_595+wsB%Vo|AbLV|#s(E8=?eMAw=xto5~Dk^EXX zJ7`0t-zM#YW!Glfj(Ugj+>6-l?_5tvvfIYjKG`&xxagxy|2XG^&4-TW-}Pvjb}M;3 z^mcLQdB0u(DYA*@vmTqSYEH|)dgXgbbN%5>LB)4Ewe}P{(*6AP7Z0=Vb{b0l75^Wc zC1!W_24`1x29+85+mf;_m8SFtkd>!)N7}c)dBR-1C;qtiBfmYnu=@k+uMZdR@NNlG z9)-%>jG2><++bZi1U((i?J0gC^q;IEUHjcNzszz!8;Rs8_FMXprYzIvEBaeiGt%9f zp})y*^lXXjpG}^;B#b*%ZsRv~xTW2M0{z^7Q%pWo^6Wkz(-wv7$Xe@yY3_TyH*HcK zD7W(KE~Rno%f_=hCvEw-+&YVszWU6xz-K0&k2twe{L1y>YcK4af%kao11p**VcQP< z5_Wac#+pU`I|FVdydrp=m3Cv@*&8}dz+!EeUbGk&*-D< z{#nB9^S4TUNd5eeH?1JK2rB0q?eUcQrk5YBlTSuG56#*p7r__|%5%scD}-#3_%@ zo1NGc&E*#aXI!p2v6uavq%Na@YzQG6?Dt)35(aBKpE$m5v*=a4I!ci}sp|3D8_!huE|Ghge(_zB_4AQ!$bPq#6KB4c zwd(Mv?Z^jvN`Aib&79pOk&b`U?Am_^TtC~PR-AlmTh_~>qK>(5oLE%a!KsT5PS*CO z*MD>L_?tB?%`0XcPswZlt|?{elGx;cuBWi&mv@YRs-z)KoYja-ePT`RjR}&K)yG?= z8@5!W)MzGH1-Do1YOtyMe7kr2fIsxvnVyn6o^F9qV8fF5&*7!J*)q25&i*{RZ+BV# ztlo9=GRwwYRV6=?<(X45-B7vtpkUv7%}WEXeJttuaze&p3oCjvE5(j_*R$FxZ9aX) cfp@(i|MjW-`cLY%i?EnA( literal 474 zcmV<00VV#4P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^h> z1}rpU_YegD00CM_L_t(I%axO{YQj(yhCiFcv}uisN(TpL2c>ioiXhgd(k@OuflI+h za4q-(E)I2b5?{c@#TO7dskC$o2&I&?$xYIBu|+Tm`cHTG&v!o#oCv{*0vezIKfovO zwR!(15;R>dmnjyDq|<3E%VN1)G8&E8EA4h0;J8w$JT#llr&6hO4@5hi&d$e2egI9= zXti3FuIm?#MkAk0CU1wsp{Uhr)a!KsH5Ab8cIo%~sHz%sT^G;ujOlcW>$;>;DK>iv z2K>dg?GIU&ktFFnm&@Te4y)A)z}^e6ZBQr_7>~!yW-|bBu)$<9VK5l%boMsr^?C>) z4g$os4TKP9ex)!#WZMAv_A5yt08ddAV?Lk18HVw=Uaw#MAYle_B9XYtX0zA2u3rXq z!vH6lOy;gyt>)wL_|4|H4gxr)X}&BL3(L0cXTbAaRM--M7;p-_`<*htFWw%A5tOHp QdH?_b07*qoM6N<$g1DN%wg3PC diff --git a/src/qt/res/icons/tx_inout.png b/src/qt/res/icons/tx_inout.png index f1a7f7bbc3ab4bc3ec801efbb8b533cb6b624e24..cecd332ad1f6e461b217e30ff7d442556d851b8d 100644 GIT binary patch literal 2568 zcmYLLc{r2{7k}rS8H1WT8iWzbG9+7#dn;M94jx>)gc&k!WyaXYlJ6Z_5gO~5nQMxu z?8@M(yd|`ZEccd6$)rS!jO7!#y5IEO?|HuSJm>t*@|-`;Ie(nr1s^Y0tRg`X001o6 z&B<4W(07%Wli6Nd>Ju5D5)YI8(mZc(6Y&qq6SYKdzytO8T^TS1I$0OEz zROL8LLbvosaSBRqfhp;vV5VOZvUSobJoZ6G-EmCmLZM;Y|G zfvhI`Z@R}LobV1Lbuv(hOdEP-bEJ=jci7yj3~}f0Y4uqtZ9o?TwA^&Bm5+P{%HKWA z$l=l#U&}g9!k*eodI{9v|MbX#l05k25q04mzsVRnWku_Z6yVq?@B@xUL%?2nKQo1Twk z41JXw`EWHEgw}K|Zn{F=(`JqGgV8X7?CR9=%nM;}s@sV^pxmk4vGuOGuqzeBxmyv1 zSmD|06tW>01lGMyAG@3r@Gkl)*Yq(jc+{b@>#Qy1#OiWD=VRWxM|B(Q@pol&y-I1c zxVsJZ(YPol_PB!Fn_)mo2Z|*B}REUNxBSov#SQ$#^uDHc<{f`H%-4J zXPnR?vF{I-Va2F|iyz=QYYJ`uGb+o+sJlbu;i@)igAx6r69&?-Laza5(d0;yaHEd#rNtyM`IKWH^$RPvR`{G|ghFMW`RsiohZrDO! zz&-?V&SeRQjQt}|AP8r{{qh{68@DF79*}?Qg8|v9A~R}=TY@tiQCU(H`kBJ@ zk9t^ttlqT`M|hU_r#m##L8FAhP{Rel*!=~{N8e=fEhYTHu7!?M8KSW(Ds*N0OHmW0 zcQ0ahHUq|5VR5B^_|rj3#?!Z9+w8AW1dVummy%cUf@6j`xF_7(hfM8V!V%*0@xT3~ zL9}U=+60UO8Duk=b6i&wbU;?r^{dZ17qDMO@=Q0iQW-K z`&;2-som(=A|&PWjjz~)#X2BgZCIdmTeh4Z1B`W!7(w~EA7?!3JxlwYM&scD#bdjd zv|VZ%!C=3g^GTBG%R3guG4Uh!m!#&BfdH(i31=FWsg6?$2z`|`UL zYXm40>|599wrc8r-v-;jwARV#?G*gyvo~*(Xh5DgHhO2dyWV>%i66Qx7Uk7EfjGUr z1E7gi*ACx{jVSd$uGSc*e+r5$#kD+eopH?e818xmIyGZ* z`HP`3v{#@@y9f#m_MfLuLJ0R z;*8nu^+;@L=i3J8u0pWe`j(beFfnH>Ftsl&YosGciT%1Z(0lchU$tYOC|$*(#3Zu+ z6#Q|I$}-5vO~x`>XCC3R_}Sf*1Y1>H9N1Ag?rL1N*Vx8DHd`_K9Q4LowM$`)xQS9I5f}>BtD<_Kx-pjouIuqOn85WDzOm9>RIGT%Wcj~GbGr{ zdvwzM0f4rOVkFLds0`cvxE;36OF|?MDFX1zrG>Q4D&Jf4e+2J-hC?>Ga!BbTE-gXWWmxvag}0-p#(uLONeBqmXtWRd(Zi z1sZnUcb@ZcyV{HzMTtmiB_);CREJ72sW~-WJAHR;+r2w?`_AUQ5pjPH-**Ad`@HY> z?>*-pO7ov5O`0_JEp`dkh^??uFTTMk{EFi^EIvaRJLG!tm?)|ol$ykaVi_Xx43wuX zU_Z9Vnc-oS9GpAEDjb69ujD29p;&C+N&`pv>=M*NU84@+MSG(1QUBPTAs6C%sANf= z!P}VBk88&dP)XMTGDX}Al?sU>G6Ne^Q-FNI@BxU^P$|(dGQpl=Z1@L$!XY%G)ilBx zPu|FteOO#Z9fEQuCfNm{OzNO=P$7 z@J6npVh70uJGDDd!)|x4Uv-RHO*&$&UVt1&1_U1D&0KXVIE_dw>p4T(h5iET99La> zQ(He^lRmN54<=7o8E=g-R;-N3nI7kK5v+aWWPT}TWNqaTiUsd$cc6hh;m>guql>(h zT%0Vq63=6usKV>AEHt8PbZOk^a9jzf(+W639M-EKO9%Wo&`fY3pk+_u(ywI zFOVM`&GyB_v{@C@iTG5z16RDJVt)ZY8e`YQXOIWhme}-s5p{#w1e0hkdEn3G`{OLv zclUTF%gI;1Ui;=>J!VDumR^9olRQ~8j7Q?0=~{BZ1T>(neI7UhiPv^#5V>urtvkK- z1jU1Dy#Qyr*-D7N8&iTC6S@&U$2;xL=6CZeU1M6U$2A+d0!q^yGQ-EKJFHJd9|4wY zmy+c#=(_%^d^YLGg;1J;WDEIAydMm zb43**IF9pZ?Xh=s7T<|oSnWKF(e&>S8t&xRj;S3J%5yt>nlx$tFZ>Nc%Tc0Bqc3j& O0000wrg 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 literal 1458 zcmV;j1x@;iP)3Mvr;B4GHG4WM)DUZt$ww)Z{lU03uU`uwx>o+rQe?z|u8 z-d=a@b4|&L+u$*ySJ*%fjH+q(pTUiRDB5rowbdO=1Abn67A3}TZgW-9svq(;99YJ= z>|*#L4RFol9Cowsh$^H9Q-s^x31h+rUr$Omb`|qGoWah2^Z~1JQK1c59{N6$UF>1( zN1o~z_F_b3k0kKap0=V1uZ8}eP24sf3&mw?5 zAKlbad>Z+|U^HP0iq>)_J0rA^@nNh3MR`$cvbmh$Q{xZ-gYi|_4K2%YFF34q&3IEK zOcO1s`H(wiRSs7$Onqu5Z9-wCX)NWe7?IgrJHOr{6@>h4Iq` zdk9t3G2CtuI?9gB z5b;Y{6~=YG;TC<18Rx05?J6iO&KB{7Oj{Fq)ruvecL|fgV9Kn;(2Kp zYQc*||1wsJ(h}mmg*l=ln)fyy2W9;-|5fF%yTu7UhP$GzpECt7qZ#)l0XO#U4hHFn|_|@s@_} zmF~ewYY1v#2tOG?3;rSvyWCYPf;mDatYLg?Nk&RTl}p;O_nJHXVAO&wDpFI?WWhJk z=qoOIyPRWt%5ui8&7I^U*vah9>!76jA&Sm42>K~^MY`ohzofmGMJE)^2#Mcwz=Ub;FHeNYZWphQq z7@FwRKh$?=4liPSU(r>%j%*!TKkutMVEY=L#-1R?+Zo5>d_i@HdTXy2YVk_fXsbG7 zw~vL>fGkXjw@=&#`y@P0kVEgP>|wU945*X6yPhmVi#CcX4pUz5ENJZYTVIEyssPf zXz&Hm4_}#V;}* z+o-)}NUhg6P8kDRi1**A4r%Z^rEYJYD>be&G^7Q1)gQlW@cSxniRbiOkIyyEb9mHl z>fMjyGF~0BRJPPLzLVXkGoG-4R|9ZT#^Z!=Oc9SB>Ht{OMS3cM*%*v78gs20WIKay z*KT2eM#nMIBluHi)cpJO+jtr*s-DK`@QfQR&sMp<)@S-oyX=i$}tsE~P2p09NrI%K9roAG5QEP@7-W2gij9yX&^uaL;eobq~ zIdZN2Kn>6s)S&3ZA;0-nD|sn*OhS)}W1#2EU8B#cJEZ0ZE>#v0z*~vp&1lAdLypuv zPtfM(dUD(RwLtyo>z3M6HGKi$#f)yKt~UCl{IRBs@(6?cn*Q(4-yYI)TdB!mD*ylh M07*qoM6N<$f;~pXivR!s diff --git a/src/qt/res/icons/tx_output.png b/src/qt/res/icons/tx_output.png index a7c5ebf56b0e41285e95bbe35f653f4bb4db6cde..06d9d0adf27d7db1916b50e9bac7e57c60644dfc 100644 GIT binary patch literal 2699 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 Z{st&W#y17AgX;hQ002ovPDHLkV1oC_4k-Wt diff --git a/src/qt/res/icons/unit_btc.png b/src/qt/res/icons/unit_btc.png index ec3497435c9bd96caa594d5fa007a80efda05a04..f3246fa99948a136c79e1bc14abceb71d1571f83 100644 GIT binary patch literal 1318 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_naLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09svx0_iVsd64 zh_4CO;OlGUnO9trn3tUD>0+w{G(s;kGsVi#!p+Ij$=t%!#o55n(AC7!(Z$T!+{N73 zz|`E)+{hKC*Cju>G&eP`1g19yq1O_pUQk-dEdbi=l3J8mmYU*Ll%J~r_On$cZnv1> zG!Lpb1-Dzwaq86vIz}H9vq&)w69Oh55EGtmfgE_sPt5}+_ab1r7EhHGWME*N>FMGa zQgQ1|WOr_}fk5wSodG1EhtA!xQUACW zYw49AS*p-bQsSV+#CR)Ayu&-iuLye!`B4sPcSC(RWr zE8#KuBc;Hw{v=0(?Bs^FbGiNzNIHsnbo%M-(*I$0~^|u6W-0~acDTiCVe6F zn)T`(Z0o((IjvYWPw3DS`H$I zft$ET&NU4myQ@6=@4Gz>acA)U#=*G9HD}F^)fNxu$`~`Qla2Yu^568BeWxL#&w*)A b)ebORtD3;ww(5Q(sO0i=^>bP0l+XkK7K6)N literal 2107 zcmeAS@N?(olHy`uVBq!ia0vp^@<1%W!3HGX{aEq_NUzopr0F#DPf&c&j diff --git a/src/qt/res/icons/unit_mbtc.png b/src/qt/res/icons/unit_mbtc.png index 32bf2f2ca05a4768fc8e280a1e4620e3daf42538..4e82b652748baca3f2ee28c27e41a074217f46a1 100644 GIT binary patch literal 1407 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?_naLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu09svx0_iVsd64 zh_4CO;OlGUnO9trn3tUD>0+w{G(s;kGsVi#!p+Ij$=t-$#o55n(AC7!(Z$T!+{N73 zz|`E)+{hKC*Cju>G&eP`1g19yq1P0rUQk-dEdbi=l3J8mmYU*Ll%J~r_On$c7PmMW zI+~c7x&h5|a>MQxh~5+|Zh`7G!>Lyv=oo!a%p%1!ObD2KKumbL1#;jiKQ#}S+>3ze zx=HHKMFs}OPo6H0Ar-gYL^k#|8}PJT*FVtj;GV!*$703Q17d0@AK)-JWb9PWBGGtj zQuCjm6Ks4#v;@7yydJUqeiP#)eeSc2Oys?$=5F=_%nukpFjO$uFvv0RA1Gv9f5>c? zlCs{~i}@E~W?hzew!$RnNASg8pMGmC{cp{vu%(2R!Go#F_{QUkKRyhLrWOjmS+S9m zW5LWf;o1_-N$-#3OrO+mxw`AN{(~|mg#^A-J_dp8QnvWkyPIUigm?~bV43TveL-T& zVzaEnZ?vx2d!_Dit&1s;_%R{qr~iWV=1Sl5tY6Ao1*ZkO`zuN|Hc0wL*1IfeF1q=m z+UfjBA?A&K+>TH=ib!uk*PY$|TzRCG37{6PPPe{#~slIFvLQ%#ueOuprj6&jdR zKV{C0uy5x=U-jRdvv#>d`h$-8LWbv)+%0@U8Jm|)VOwb%nYOO-=RN(oy>a^YJZB_XUMbC0xC+yV^W36aBz4U>1*{drIQLA@z?3{AZ;GXgG z+#hE*IlgAz3pcI!u7WiTv+dt=|BX-nr*6pK f!2aMwk$3`w$re4Ih=sRpK}DjctDnm{r-UW|wJ`QB literal 2107 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 literal 861 zcmV-j1ETziP)A8HPHTJ4VDT5>tRF!sZEG{2rpGBcZ|Y3@QN0t3MQ z>Z;C>3)Mfb4Ae_{BrHqOQ?fFBMW!dBOOZ(A`AsGo5vkJICT$TIeoy70o4q{dtXji& zla4=T7H#uhr!90>Q?1)k|1ew)op|Ep`4@+Whu_@xoEb!4;1IWy--ZVKFibMupzolitjtbKq)ZX>?gOq9onhOPJp<`y zVPuyHfMO^Caq|K9(^p>5-}UY>wN=AStA-PHZwpR!Uq7h{AOIw}f`#{^)D0uM3;;?~ zx=}RpwLwRF{B`P6^1GSODbtj7V#>+vue3HZdn*QJW>%VgXzCE~|WTq()A3?Cbqcgrgndi+|tjlf|i_qGS>>I~_~k*Vfim z0wD%~P@Ow6@Us6W`Mg{{IUkr}rMsBHWVPxwUtSEv>wV%_G5yNWTxPJYNh|2J2zT|g zC6l*fieV`lQUEM^LydN1DQjCurBV|_#9Fv<&m;FYFM3eO!<+q0GDf+YnV8GJGPu#R znoj?sSTqqBC9Z}1k>lsuZ^UEq(b3TxL_{dJ>vazvta$FRL*DK```z-_W%tHZ-#vx4 zmc8eIE$1@){y=O0rI$u0zaPx$y6zw%BHA?4maET3d>_7ZCiM*d*)TFij~b3!CTDIT zQC{Knbsny3_f$8cp>BRh1W>Tgp1_&UaN!XoXA|{9_guTAX!;iLdS5v^eV|{}P<8w6r#rXPAHk(T@6Pu>& n4$~HhV(|YhZ~MVayW;#Wu@*ehHphv+00000NkvXXu0mjf8V07} diff --git a/src/qt/res/movies/spinner-001.png b/src/qt/res/movies/spinner-001.png index e6ca67a1b0e849250988fe936a1bf5a96e922b79..4f6f9a487ba8f1714ad603c796a7efeafef0ca3d 100644 GIT binary patch literal 2785 zcmV<73Lf=|P)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 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 literal 835 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 diff --git a/src/qt/res/movies/spinner-003.png b/src/qt/res/movies/spinner-003.png index 52bed625661a41dcb99b78d372578d81689649cf..d7756e73bf6f79766b7aafe1b4bd91f64d198e3d 100644 GIT binary patch literal 2775 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 literal 836 zcmV-K1H1f*P)TBuzKt1gjR8Vl`nb7PZt7QDMNPGb*Svmm(;LxD=-%cqJ$z>f97& z+6zH(P^e2~R8)$BATF7)R%;hqx7tu*mqgPh&GP-ni@K!hxjdZhJ-iR_oggBm_}jc< zQUGXN?N^P=%&fIe0|cityTn^ypO#EX`b}u`AtVtY0z^OnBx5oZXN)Q-p7876)zh2b zp8i4Pic91|j$A!Bt9QfCvyTDFNdSn(mS?mvCQb5|&6qjU7wYX!? zZEL;XinjbI)jPKQ1prF1!m@c2cF8q|=!P75e7eed|Eek7)%7f5npqyDNZAastB=Rl z?((&UZtc|1pWKSObMvME00%nWoj=xKzpOE=b4LU6y7>Z%^0eFMo4Y`3(b^&{q)fn2 z_c{}SRBV8~g)Yb}Nj$Fdgk)%fznh|kCZYm>uhvxdGl>>lfiLRzd zLF?+WKn4NyV=?*N*)as8lj&YJ^|VB;)6hU)a!kJ<&&i%&7WJ26 z&_Ztv*1)R=XzP644nPb6c7;WDU^z9 zn+$V*+bL_sg8a=Vg7#JhfVQ4QAQ*ON*uvIwU$O!~j36USq!hF2=tYVSn6uZA1_%r zYrEZMa}yDm05NP?-g7n1rmDr^IkAWbb$5#cx7(>PI1q0qWhUbBxKkzjBos~u``$($ z0G7^RV9YVfFui+!n|QLju3#i|)-S;uTc!8^lk#ulnfA)cMH@eRmOg{^#mYn=5ePsq zvmG<0PPETahFuN4PrnTH54L=w(Grodx(t{y&?JNL4ah_U=J7xI6dwSvc}U}1vPy;k O0000)c*ynyqJ1OUgOe)8W{1jjW$zZUPuSSHk#7~6ZOb2Vrz<=t!%Kz@*`ZpbS1j}vc zh{;ES&4j@Epx$gfr(9#t#{V@kedwh+HhcAa1N60PS9nM9w31MOV4`@iQN)lI{;f20{gAOzi~DDQ`>Q#?8yjiL^BD2q#EYe7A4(m&M(zo^d_ zshvipt%^j+RWP(?U?pl{5N;~W&`e<@Nz^PJA*d?Y4E>}Ac1`6P94S2%A8I=;eul6w zjG@HI&|8{OJt#~L#U@MSjrKGV@RoA!`#-4Xv@z!eNuJM-)(U*S>j4f7zXmQVoJu2V2%KLmSc5d;Ec&Htu0_?VRQ?@2ID+ndxoU26RVH9BL$2r)ZZZ`K z+V!o*fC|1Ug72VbX6u@Y-8$d#8@@_0e}C z@0*NTu@)bYwAnDpa@~v>eet;6_=EJ?$pZ6NIA2s}(JNf#qMZODM3b+QmQ^`3&UV9y z$;KxO8xFBuI(dl3toRRmA&JSs8gn*pPO!L#D?l?cRx6YYQAzEQw2HE9fapD9z{#$I zvkp%aT(eWezYgFUrdsx!&W_jBoA#&2G6RjPG+KXBg?wj8g~RN5>kQ^CyXOmS@6&bMXb6EaHI=N{2~RL*BWASc24sp=o2LBy=ZVX&rHV&e**w z6<-6<-3R7Oe^du$#hre+=2&28;&bNA$9dhq?yoDfQLPP)xi>%A4x|oYz?e94HEW&V zA2zm)Mp9`J>G~5d%XEK^VIJQz@rghA@Cs92+mKW;a_)k?T=J9R%0?%`@R##7&*cMx z6`Cu@$ub74Dw;y6O1JMU*jr~=pTMzrKXZ^i@m??FZNKQojxH0)vkJW%9gwqTK+hjA z%p+*LdMeU!dlB^VA~r;)f_*oMHcm?VM<=PYNc*A zX4ZcW{<@xv8F;ufYPX;0-wGgJ?7yc@=5|BP4hYK*mQH{R!6-@n5%A@++8*GuF-2LQ zw=v}uPNP+Yl)h9z=0K2yqBdgP!nZ2P3*W1k={^3iAA_er8n6F?kRT(CH<~W zwZ5Q#1k%Z%J1S*i#S|~P;`L%by5XSE@sCrWB+aQ{8U`$3?)8>bdn6k_C8ji{`Y8N< z89b(_#uaa1*hT#C6suen11Xc+ck;q;=}{MOlbA?v-=|vNx1lXNVJ-L!MIkT7jE9(5 zy*$s(0BS?+Q#Sr#dq<2Fla*^6$frKl+F2f}a$t|w7U|r-wmD?Z;M`tm60ea^$y&wan2G&_Jd24>QnlgEm z+mptcCdfhxRIT~>d~KBXN5efme%*bAO5wGYNk8VMCBPP89(IO!MhVNuGSpVxBzY$# zf_d7BkdxAF6`W>~cS@^hwDJ-}vC`yvtj-uZt;;5|-A7g}WDpYBT=cDR^luH9J)05% zPD7Kq@1r=Rj>R#eMLP1y%G`VVOmA9iU?Dv$eV*r#4@)Q?aY+qX9Vs~`McO?r zzm>UCJC}V-;=u7_C{l9J$>{P1g_ZDqRWUdbP=hN#Zs}WGF?zLkU90V`YDlAW;dK^; z@1NhsWY}CqD~OW2j;GR)tHW6HpBwU8)|#&6;!96>nCj{Moy|RG7(I!Gw=6^(ru>B4 zQ$w|JGEC^BtD*i@c^09n_t{8HcVcl?GqV zE>zxm0WT@Z6Xs-JKOwRqytv}W6CZKuea5VL_v}Y3R5$9YkKS*rTLd zl}#46QT$A@(|UjCVdmOQ{~!3@+r2vwLbUq4F9vHlZZA*??H6ej`Z`q(d`wiC3F@%c z(7>le4@V>P%U2`} zUqckI-U8h_4{KE1?2k1|Fb3VZ<(!pBFVmPv0U0?NEz69Ky5eW@YIZ(Ik?Saj6?vl& zJbE`mXt>XQ=IaO5$Ki;xjtB0c_DaNUjSPGn>NN$u`N9rL&Wn!W$Kw+5J79AA8-KGs z=E?|4m+15BkGey;#TB`O+T@OIs~bjU|urEskm1ASL z{`>{Zn?dJ9t;^eIT5c~kEBRRI@^bjS&PTi0tMVm*3mGV=8g;Gtzb}&h!Y_Gzq08*) zB-Pz_PLFDLiW=lkB_RVTq+I|eFgW569DWFPglGasBFvC*b0ZiW34=|hFZ=!{a4sS! ZG&uJE2kPFs3w8s5qunvvdp3T_{{RU==0N}e literal 855 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 Z!`Cb9{|D;dTv|K|07N_qS7+=J{cle~-aG&R literal 852 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 JYE3-i{sm;iw}t=! literal 865 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 literal 847 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 diff --git a/src/qt/res/movies/spinner-011.png b/src/qt/res/movies/spinner-011.png index 0d0e811ea7a38844f48aa045aca89eccf683a51d..fd4b63ca5aaa41c74f589827f2fbc875bcfaa3c8 100644 GIT binary patch literal 2751 zcmZ`*X*|>m7yjEBV;hX6DTA>yhM6owHOA1$&Rj*8?7Jpg_N=4EaxsGjlRZn}4&^OU z*|SV`g-T?p5N-*V%Iki(AKnk|hvz)!Ip;iI&+nny*_;;w$$|g?5V9Z=9F95SAMkS@ z*I)GchGXLPGqE-SfaV;*A09l%8tz4Oum*rwB>+fD1%SVgj`=eHM4|v-%^d)+3;>WK z)2{THAK!9%TAn8Wz`blm-D4$ijp!T>02UMffTPYVWB+*8XF)I_MbCX<#$6*#pL}s{ zZ_`)b7G=v{jKiIx;ev6Us@?weJUp5rmYFErWy(aoqFs^h4EBzV(NYzD3QN(QYPJJ4 z{wA%<4dTe;S+UniQ{~`9ba2Wqx5fmwJW34aAKYwvvbQ;3vcUdXnmEuFHM$i)y2X6I z#0=*Uglb-5xp$@T{M!VuB1;e|Av2#WHLGq_C4)Wds-*HTQ8%LpBLwt3Z+U^mvJ@#1 zybhMe5G8_GkHAn}dH&Md17-0@T0h~`%9ChfU#e#OI(CI*KXmnaWX|>M)HDJZeW^#S z*bY-*UR>uZ?iJVmE!O{Rr>=0Qt72c%3g`{PG|ZMhmQrhgw$`|VZ{E){am5)} zgn1YOOp6+dnfFK=y7x>F{$ND3c-~={{E2M!B5St_67$yUQjiU=qGQ(Zf}3oTSiW?f zJy~s)ub1+sc^k8~MLA>Kmjr+A5D~jY;2rNgiv6RGAd571T`QLE@h{lB@4pys(?U-m zId+RF5P9cP7%(cShTat#*sXYCXq$jayJA0NeD2FKf5TNtN`ogfbpT$-zk!1#=;m^Zyvk)h#}wMdXJILCJhsk3-`6JGdNhuPhc=$$A7u!_1^ zpOHFxO?J}sb-fkFah5H42k{hp(j#Mb)cr&Vo+?L!xX{O~K6tH}!t2Y&h5{9=;DLUc zDkN{DkdHroKcu!(D?co^OIehMao;mhWa9kMW3BOy%e8KW3mA&Of*k+KG|D<|cg1z= z{RbH?tl_A3r#^3M@anztXHq$9)@VOIaQnkTWoU7=V^I_Z@_gd#LtXgNhi6IT)`^-5 zEtU6ZW9c2de9mObK}1d9bUirw8sEUXcN@MZ<1npyc`vLKT!x&cHt`s!Eyjm}8d}l2mAzhG`T+4>sbZqT}g3`5b4RwbtYtw4KAmt8mEN1YIdJ?irP>bV0UZf>Rq;6 zsP|cG=izWS3{Z`p>DTGfc9G78K*kA9y7wmEt9A5N?=~`rRSyaPx*ttEjK9@RP6?OT=-TPW9PZPr2e7PcBOYf|R$d7YBLWQ+{)1(3hb-Qt~ zbZ)J-0%+xJ?(rbc^R60~ojctEIs8`@{@l(HrFL`3$!(e;mpF5{MorotG`F^i@YTPnDV=$p`R?J zPj;xonq5{)mTf1&Z3{oVe(vFG>zHYB3O)ImLAv)zBkiq)P+>}o+^l6EMDJ^h+HEnV zQ&aJx3hJ+;vm5N*mi5L_UxkMC8^cHy3 zz*XQh!b;zA7bF{IuXeCvM2w_84eYP6%=rfOGGel=V2dK{sTV0H{s4iDvJOfs#1W-a z(a^0A{Pzd?ud>-RnGvab-Ty%kT{{f=NH(!}6`os0OAlWD+WZYYy}<4h?mrRViTH-N z$d%hMc>FM4fW4&q4uJo#GA@4dV|9e6w={j#uF3OmP~O5Rlq7KU@AH!Ls4r2Ay5Wyk z{H`Ng^88pOaWCfkAHx@CUu(WD_-alc0DN_bzF>jJ)tYqv6X&KRuV1MIODVx>%^oY=s14q>PfB}<`v!$f zTWn02{1!AQab#{c+t4bX=Dw62FffH6L8}6KK;A**|YEEkc{xDH! zG9~rFfJA6%0&FFtbm{4n>^iAXu#zODqS|gS0lcgLk%aZU3}sG5w4n~OZ@xB&$tH2; zxeuKQ`8O;58=CN=3rF`G8$F51>lcqxo>GL_r3i122p_Chn9nf*x+ootmX3}V>NH7L v2aD0e>ga2rbg(GYe8!h6|6>Rtdk6T&{C~rruYX%QHUJi8HiRa;d&++S7xn6> literal 856 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 MttAfo$lNXV-)UD7@&Et; literal 861 zcmV-j1ETziP)!a_j~W%y?5@N+wQhIFV71bZk=ehcF1s23hr81*a(CO-PsIEBL7PLM~IdY zsYD?mhQ+WS%#0edB1u6atc+UNP+V%Y=3(b;cW!rk-+Q0_aI2~G{PpmB`0#w5A0Ob> zAk9#>Rcd;-LLyht3^pZvM(=TkOdrwX(IlR5$ETDYMAOLg+ znFs)kV0XHH@Av!bvQri z()m@WI4G6ED3r+6ZV@9+izHf~a=*J|UhG)Ev55(A1q47?DX=SWx2CK1^mP8c3O5*E zpIelD{ltQAFI_jMM>!?2mTpzEwA%x3s4%}exR#WsYDO}F02qcpGW@1hkWanR+kMvw z(q_HK8)zQt&q(RFPvpYz&$$w z4FC`{jp)-)KC-v-;dNUAfq4sNXI{I)%8VS0Rt&=zAp$f2XsvwLsZj=hvA=>_9@C0+ zadLX}VBf&@S)$?5UfZeIQ#QMaSb>)>_OCf}uGGf>FqX3~P6ktSqY@k?0xPCDzi{(n zu3K>l;>Kz@4zDc>>-cT}(9BG^d|_y$7{3~dckvx^4)8kaEu&_u)lD*Fx{-`&2teH|-RwQ)_uj%^)ICY6{7!Kd)~5B^ia z&Xr7O^wqW|UiQmelr-EW1Kt8Gz%~h$mjD% ncW&$Yu)5kx%*C}*>UQ!!)C(IsCAyUd00000NkvXXu0mjfFW;eT diff --git a/src/qt/res/movies/spinner-013.png b/src/qt/res/movies/spinner-013.png index 4ae5a671a34d1911be0215dd8348ebb6e5340864..863a9d29082b50f458161296f2e830279241b233 100644 GIT binary patch literal 2896 zcmZ{mcQo6L9>#yM_nt9oZ<3ItqO?Segs71y+Nz2bqpek=-cB=iC@E^BYE{judW#yh z6;UlxylN|LQ7>(Ix$ZglpL@@_e>~sM^PKa2{(q9}?X38Dz&ro|@MEnpjwcNJx476& z?orlU^$FN~&G2RbP@m3wc$NJmE0C-m@c0Kl)~6Rrb5I1~WBcmRMA4FDvs zQ?K+`p8T?S+E`%#pej{a|0HqWuyzdv0POg`1*)*1`~(0VXDr5y5Xt;na3@f#PrUEk z>*k1;qrNgJoxP?V_h>?S86IrhOID&>N#pU3!c9*diJG|avP>r7pK^+p1)2CXi0Vwq zE-u505(fnxG@m~FsW|>tRplOBtrTR-gILK;1(9NWi@wJ+H-9<@?QOrck^g$Oal-$N zy6axb{<|38xzYr?$&M``?@sC z<~-{Wjx%XM84T!Wi+a!ikP<<}1Kg-lPI*>YmNGqzDW|xF!3RN+$=^lg)X63geW#WS zF#SMJ^`N(HO8$l)365BkcM~N0QDZa#mcRw7s_f{cd1Uwq4TI~LEPiOj7F)y?^3Do@ zoHVkiC;zn2l4Xir`zIfI@#tkG1U;x#T|fEgKhlzJ$L352DT#Du*M2B}IUN&J$*=FGaSc4vI7zO!8|ENby5AqwD;+sPY#)ceo>hIfc7orP<)|e)P-$ zzcT%FqCg1mn+5XOeQJe8txcZU7dDvyVP6>|MXH}vDFZr|HoeS z(S$21n%7uJQF#AzFIL?%S)D@Noac8hP5_lTm~-Uw!SsZd4G&Nqpg(Cv7rr^X^nLCi z?xJGY|LKK2B7`;^-|Igz=4|Lt&LA&J)rN|ynRyoY09jJzQ^O0=>@5b#H!FgeExA|f zkgH?CEk|c$JtH#5MaV{lMSYA{6sp(X{c`b z#0uN>y7Tsz6C))I>>86Hu{&C~`}xwDQaz7LF@Hz#rK%al<(+E@H)l{;>TGh`kWI{7eAJ`zs?mmvkG{yAVfM|#!=SM2FSugm5UbF7cz zstpwQ5=J_MDJ=;a&#OrsiZ{o5eMZS$(AlNAfjAny0YlJno?i2BWl8q<=vw*M&b_2i z?4JeAL6boG+a#}tWejdE6CGNGg>~JZYOJVS0q)}0Dq;{bU+Bi1xKvB(s15uWj98O= zD@9mxVLF;C>jjdGnzX>#MSk)6W*Jzo@uWNgk3nA7Zm-ld8+-02g>Tz>QS4xjt5lk6 zUTLO~04Ip5g(jvrP%r|-$A3~Ys*95jUa=?Z&G~+Rg*avEtI;PlO<28B;*UYZha@tG zA!g`{x~I2!8m(4>f_a>P+J zWW()YAx?~7bHTORmyJee#k!=d{B~&-BQmJx1=5S$R#U3Giv~3gqJ^g%7-m(z?R}aR zysz}i19@yLXWK%8OZY=SYSY11apV3ul~VUuGKAAsmvyAWC3ETskzYuT?!x$Bclc+D z8J{aX`rAW==PYBX2&V@#8f zmX--R>Ph(qL9#KFUun(O`^nfONFWL3ElKOK+r}-J2u8dIAiTN-o|;=}Q@>$l73p;F z$W9*3u$dOVpnEacP&xa9@PgHh)`Ux|Lj2GrVFb!H!T#)nKJr$|T84*nB`25 zaC$@tpcOgz8GMJc(U@$u$f^9OXi?OFDJ}A8*4=u>R+A(;|vP} zE@^X&jcylk22nIt*%MG-J>upMB<*(Xev4(9jUUE8!&$&PLfquQ?foHwZZ6ndC5DN- zcbnltc^dx8((T*^#LACTs(Gx&M7KO4uPpOLwJUXur@NIgWtgytwCTI3!4a1x(1TbGAGr)_fb#el#L6a1Vl%^b_PjR7)&W=Q1#&7pMAAX=8SR zRu!!Jv9Kh4O!-#I0C}>0!Lq6}yKNz>@Me~e(U5w!(2|c{+hH_Fls5~fqthk3qH(SS zqFxtXm@-t+b3+)SyVQe_wKpEHE^!VqQ;n!q;o@HEo9Uix7Toz8h?ve3dGn zi#gq&V?KK;lhG$oIg9dgViML>$i6zz2A@yS65xNceDh=6??io zY39c7#MJY@;yG4)(suCe?wAUl0&!(2iN>*BrBpnX4ZFYx>xlZD6iUsKT~&30`I)@#LuuelqkT=*0df44PLiu23u7;d*B z3_Z7)bk#n6L`&;crbcj;busBi&h4A;od#1qc1l1T9O8a=(|Sw)NXY!(>DHal{1bAF zGcnIl*z-A=ovL9LE@56*!@P}1A>Jnd^r0}gE)1p%MG*91MsTDN?6fu%W(0-KQNCXJ duR_puFS1Y6|1Z=|5*JSj0M^0|Q-k)n|1U#e7Ha_8 z3=}`ubojx>ZpIKtg`yQ}aCqT#5T|Di`i?;IMopK9G$Fra{?Vi;b^!=p?L-WMMV1gy?NA^$rO z1T(Zib(l0O--+?i)CUI^pKq(pn%+Gz>w?7@NUB8ovK&vUi zV4&;r$31-Z=)fG{@+tvHL8@b79$5Sw{;U4%c*dHmcsX zde!+)UT3C$ynUSDENd1#+NT}|m8fhhz0w{MM4(u#@%}_-+vuk+Zb+t2uXFedAMI?%vZw1Iw-eo&3J^rD+!bl7b{vQIceU>m#8Z$)oF&hBBdGktMo*IRF3xwP``aoFx5{4Jba}k$v2OkA73t+w~2_DnO9MoCr~3N_jvRjd>%)KN-cPl*Gth-j_%FUjgb2qn?tq5uE@07*qo IM6N<$g5)-`-T(jq diff --git a/src/qt/res/movies/spinner-014.png b/src/qt/res/movies/spinner-014.png index c3a81add0e870a748db0c0b8f76519b6df2311b6..d01086cb98877d063814bd1dbd2662b4014086f6 100644 GIT binary patch literal 2867 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 Z@gIz^PxdZ3SQr2R002ovPDHLkV1m-%lQjSU diff --git a/src/qt/res/movies/spinner-015.png b/src/qt/res/movies/spinner-015.png index 184a9fe4249b059254e16c5e801b9d84d6cc9c69..402dbea69348329a8e5a6cfaececb1a5de76638b 100644 GIT binary patch literal 2860 zcmZ{mX*d*&0)>aqI@yObV`l~tX3P*{DP!zR_7qvhz9hql1||F0$C71`J+dV#O4&yu zMzWJEUqiUINaFjh@43(Yaev$&=e*B(o^$>mvL()l8wddc003?iW32TViT{X$<;?%e z{!)Ji7H>TZJpiCNsgj`H@3C_07x(ZAUYNR`1SW0*8zY~H~{e76#ziz0|3Hz zvRwKN&$`TbGb1bj@H9XIkTwk zW(?K-_04(^c9%k1;ew_rciYny`gXVNp^kaMBQ3f8=Cb0&&s-J1b0cl8yUU6s9a!~R zaK?+e^0qrwmMB1CE$9+!C&RAVI%eFgqIg)y1sv3>+g`NGx4hBphNmzm6i!hH3@#}y zf@Uy_&Y$}6H88mBs%dh`@&W~Vn*Aqv*EEfkt3I=5G%8dRt`hc4t0>lg=}&#FX{0`V z`?x{yXd%y#H<>%Hlmlh6KLi!6_IuMloX1r`9c0`rSu|%0YYGH-&8H%?2x+sx3ddst%0bU-n zzoTxwVWs$ZtCI2wT%$fVK@b>`{I(Byl9SXZH(Qb0KCfQm*ykA85K`Z5L0`v6*R_o+ ze8XY^=|ke6WM*EK>4{ZL^pwVPmeaAq`nHtJz$j^tS@tzS)Sb0X;Md#EK840 zz%*9I(Nr3D^(0+@meRCw5hwrhSvKP|_>{<@KkboRO}*78(t04j?xEO9@8T9exLF!t zfEv1}Wz>R5EAbi=E^8?dhy3RRIZeW;Tp?b?1f2swD4d`NMOa zcKe~@QJUbMi?J6Y^D?$zkU@4f)F@n77*1B~Y0~66tm_<@@zHq5m@^vh2KKfvRFas9 z@04(xq4%j7-J*!K-MGijJgiWH)8_M37=YI=o6>r%7N7!#%ea$Uf%4Lq=UgR=1C!0y)%p_O2$9{`En8*WvN)Z(4R& z=;?=hKT%TIDur{9t9Qz1Qa~+iYs_M{+)=~aD#H*$|0v5MNRV``@1GeTJ$&cVB%|NK6*Dz$lM;0W$7Z~ zG+xPsiwf;33fPDgWg1?Yy=cw1d&;Hm(Ti$Kt6~)E`ffCX&sWg$8!VK+DOlA`YStxZ z(i-Gi9w;66M`UcF_!eklP|h&Z1&D!G<_D`3=zr{-)*Uk>B^Ai)$7ZSshKy#9*F=$I^xW=_RR%CqOiQZ_Dvm9e~;zPcq~@~FAo@loW7vzus^3q8;1SXM$ea} zC|F+#alhoh;#u!mHI+44JlfaQhf!?#AR558P`vGcx@ScBb8L_GKD|02r2y}++~GrJ zt$CZqb~h!**`t&d6?#5gY>S=pS$4h@d2M)MWH~t(yA-mU-;nLaG!}%I_|6~r;#iT= zj44LHtQA+XCEGV!W%`-JUc{o**pTL#*IR)=!)6S$uvd3NQT8eJoaUgWp7_u*52#o= zkj2#TS0!yf=V+5Zv@`d0Ke`8@H=BKeA&aG0 zAK%Lq?QWQUp;2G%6rM{qmhBJLOI`vxm!9POzFTMReiYY7X1=AV=HD*NX9PW)6&y4?RE6zao)9p; z-eGy8OBUspn+6>h91|JlMh(hxeO2>>b#8lJMOpVjy(+Q>-48w2juR4MugEJ<8C8`d z897bU=l3sr0iBNl(k1b$kbncnyp7?#@K1v`4GLd5NbJ-^Cvl#bYCmjM7E1l0;ZH=G zOW$z}-0yV-b?|cM58ZuiW}sZ5T|&vu*BKHv=UhZ(M7; zFtUFVf9_|1pHyP_r28gnS@X6Z_iY7(B3H4HwZM}4Ti!&uS}r_`f$cuR!1=B2$2a#Q zA_FPieoez)B{A%=QH{Nlu9eQ}6g&>B^%D{Ze=kgc$FYcFk98`Jt@`xL~NWt%!q>Vi;PxF4U$1-rf6z2#w{kWBm>A%&jTqOM Fe*;B3Bv=3d literal 849 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 bF*hqPF*-0Xuh&)M00000NkvXXu0mjf%2ggk literal 851 zcmV-Z1FZasP)tIyL;Vz-{0@_$6Rgq`Rjafp2Iok0rH?2 zDnB+4{y#^^HvoVMYy`#$xYbXrbT%zdV7U>Ce*FUjeS_H^K^Ww4(ft-nZS(!ax?k zkLdJxny2dGs;bz{fR(|mOb~ldnC|A4xmBG#yzjfd$z33ThydFO#*cs2c5CpPHt(sm z^*e(hHwg-bW6{W(&$q80zVTIs&K^)&4wJ|+maVPPPXNGTrIgm%U;lVx`~A)B;YZuw zd13Ivr7otqVehUePt;XMqmx?uqka|ZEa$?xuyb}KH2_S&BAVOd`VAX5?D*)|?!gPG zu28@Vd0LFtCKoR&sjhiobFj3c#+j=mYix1`7e`*~pL6dtcyP_Sm%(lvuos?`0pPA! zS#ryk*E_!LI&^Y)`0CiM_uk(R07@waGbsSLH{otP{c-W=*Kd`cdgWU2*#hC^|DT&u&%qqJ(A0e z|EY~+6+>A7a8DxI5U;9rX0sMNe+sw#B7Nn0B=^(M#2FzK_QjG__2JgeSM~1I$?1~K zAG&)0ff0fQ0G?0NSEegRe(t|^{+Uf%AGt4CT2zuc;dJf%>x=W3WA8eY^&eYyyQZ{k z1|9n&J*lf>N0~szh@M{zf$RbRs9Uz8`Q-8Lly~!-WG)|+^ywWk{=;)Ju(wHGX|4Sf zuw5q5{1-10lTxI#77cJgOUskbHZ?Y^vm|3(O#PPXJC*9c_VL)riU002ovPDHLkV1g{yquc-h diff --git a/src/qt/res/movies/spinner-017.png b/src/qt/res/movies/spinner-017.png index ada83fbe84743773d4c2305e7ba584c7266faf64..e2c2e2ef78d59eb31d0a9736049f1d5e42a5ffb5 100644 GIT binary patch literal 2833 zcmV+s3-0uZP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 zVoOIv0063uBQgL0010qNS#tmYNzwoSNzwtRMT+&bK&!MBr`EOt)}dmjts^kC9Y>TIii|-J z%ScC{Ol5eKszgfA05=3h8VDf@0RkZplAF^%5<+h7?zx+r^GG^;_rJY+c7NZyd-nI+ z-|x2vZsY$89$R`%q%Ym5q0Vi3x1d?xV>c!e$K%G#hpV zm+&j9BvcJf@?#S4x+R*m>LrUYbe8;<#3XugnhI(=K2eP<21tL6VI-p|=Y$&y$6BIS z2r`j4lNP0T!LzzT2!|B_q=O(bd;~dfbWbzzGsZgB7=4BiG+!kLIU75$;i2JO# ze8xDp#aDrsWS*uVDvAw$h{rm@Syg8|TeuK4O@miSbelwEc)6Q@wt=LUy&YULK;{l;$B8;zL8{5lSU( zwg`qF0LOh4ONFWBeSXw<*w8e648++ag9zplpoW=bNotR=x@jCq_fq526^ z?5C>pxOA_rU}=cz&*Ye-<%is5dgPDgCwyu`br+-TwU=}TOW(Om%nkAT`K2>o#;k~9 zdYQ^zlYL;j>56DGVp%So&1Z-YX**BqEm}nvg|RfU*l0p^iJe5VD3J`ijvgVKOB`=V zM0}4s6i4%rVq%mO(A%!%>tT~r_`xmq(1DVLdzSlKIp#}JGjow?l&1}t&3WN~`HT;1 zo5~JB%OJmQ^(-W^xkb9b&9cWHuS5zt(!DkuajX)w-9&N}BM+CXj;s8|`o*i0#UipP7!a?S2C|~SXklVa2~$mtF`WeNW+Xi< zkYKsc{q`@$SV=RMrOooeZk2Z(%pV%UE`bC^EKqw~%@Y$(hG6DuI8M1^L<`s@s7+#& zbwg+jp-Av=ULeacnhhplxD0jVS~rA;F~W^tpTllQztC4vK~I&3RhDj$OsWL+Z#k8J z(1>b27Nh~hbEj2A3A1DYE^*%R!0kuE{G>rv5skqoa7mRoxDnk%fNNoOmGrTSXm_DE zAclbBL`#HrP&ccHdIjEe(D=e}qNfFZT|ZtG(_V#Wx$t#As^llI7Uu+OOUF=|Q?;cl zYIVYeuunaug4$RW|GkQ^36uzGuo1>So2m82L(hM@L5pQ>y{>WRtulnPv%_i~6eZ6c|Y#%N;k zv6mtfHKFkky#@7o98)8zilJ;1z99$N6cV_DoW`7@I`UXdcZvP1F;bYoQNwDhU!Fvk z3W-+pgD88{7{L0FfM6NFk%--i-wQ`CBimYKZ2OcSIDRIx(P*2~`|v9!hZBv(x)ARMliKesZ#tC2>ou&CJnaH2OXUW}GhLXv_I6k_M57yPB#Zq9hsmKZ;+Go?PBY(8 zk47`ZF`jKLW}%chVd7{kl-NQI?{s962F3i`nY~sFoq@d4lr2(4fG5LDGmR`$g``sQ znd&CZ1{!{5@h5h2nAiEf;2rAB-`Ys?ZK1!&6(o=>G5)+Pi|Wqz&2ohoNp1fhkkOeU zwS^*=T28P+E$hTxXbfn>ZQ)ARk?r=IsRkb}P#YD=&sfQ@_HpT11+%3$4b4g!JD5$f zwKVOuGp4pGKe~=HR~;)Vv2bcdF*E&$N91&ei}xn7f*63;$pqX zb9P^VwbynusN_E!p%48`N9sg2ojAi4s~4n4W+z_KOrxn@#*x8gitPFVjuWQ= zgG%;tj^6Y&-AU8=23~YL(9{4(Ae+GyQ*1p|=gxNq7uZh;X{IX2 z%OJiszv0Drc7|C0bxLk7^_j%K=3U&x+bmi%YDyNQ_)>^r4xF%{iNPuM1!pYrG=)C`F0z%0h>QMjQ); zuCtBqf0xQ?co@Z2u7}VpWPHatcB?}pfoC|<^v#7rrdu8VY%l+shCw>h>B=QeaDeO9 z573^V;X^0r!nK6kxQ+IT{{b0kN7(|;<`Vz_03~!qSaf7zbY(hYa%Ew3WdJfTF*GeP zF)c7PR5CF-G&VXhH!CnPIxsNaitS$j001R)MObuXVRU6WZEs|0W_bWIFflYOF)=ML jHB>S&Iy5#qF*hqPF*-0Xuh&)M00000NkvXXu0mjflm{!; literal 848 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 X68?YS@tnsRF90~gUF@6e0#g13B+2Vh literal 850 zcmV-Y1FigtP)k_h9~;(s_yBz$W1{Cia`MQf64%0 zu~^o8y~o=hZp~)yu`%}u<__Yi7Q6cFgY+K(bAlA0C2@K|W;SUiy}kM1VDaiudS~z8 zm_P9Ner{SMtI`|wIIOdPRpP7j&dc>Jk3TYN3Wj>_LP{ZsNH(2l?Ea(cr+Z$H`$Le$ zy0~A{y!q*$44iO>W?CFk{xyZy=j*jg*AqZQ#IPl$xVBWh_i6j3mWCy3Qb2+bCt=Du z;wx<1yJfyOnWok7qc=wG}^?-yXg(L#K zQ&qnAiT^L2y7dd+YC8}eIbR*S@?A+NImzk)0QqIDrzdzJhiA_uKI2v>ZcpUhZ>Ki_ zLTXY-0C=msqGo*jVURhkx>rx*Q+~c-sF>Yc{dJyoOQNo zzur4})*j^!2XAyIZvy}!@IoB`Nhu`&_-c0?^N;jJXK#GNGaZ#2z3gW0a`DIyso|1B z=T3l@k(WJ_5Q3CaoaWRE%gZ)aWG2VFk$Jy1^dNZc+EAz~9u1ER0ihJs%l{R?l9QKV crELKC7iK0rVY$rXu>b%707*qoM6N<$g15?$vH$=8 diff --git a/src/qt/res/movies/spinner-019.png b/src/qt/res/movies/spinner-019.png index 03da25bc2a71fb490710b287fe18cce3c2f61d50..5f18f656089fc2100a8b65280c00b3d3ad6da86f 100644 GIT binary patch literal 2808 zcmV004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 zVoOIv0063uBQgL0010qNS#tmYNzwoSNzwtRMT+dn@CFHw@K9b&%4;YV1Zg`Ad;nXf(*cTNMTg?xqk~h5)(=W;>0qf9oL01G ztBz8XQUQ&KgobAXG(aT0Omag=2zj1<2(RR>ea}g99vA-m+dg;Sz5e^L_Bv~=eSCO@ zI8uOmx4P3jpr{egbnd1zQRK6YLJwqc0XqFz!+8u046511G-A9K$_XU1mWHb|o69an z;`drC`!SQRTF^8w*hp8e#j+pIQ5!zrmEV!- zWXFz`b3TGHdwkSz2N;pn~>k>JJ5gZ9oN6qC^20Nvc+@Dc6 zODz)#2v0I;K;-rT2k-$ClU<|_uV9gco(s(2HftHws` z)TMzZBY~*SP(E(g@nN;pvymuoNox3*Kw%qHODzWVoTZpE76+$@74)z}*p8ThvCQH( zWLo&;3HDM=IeXYo3hDUi#!ne!+WQBrVF$IgO-;Ly!ZOa7%tsR^+0Hz&$h>N#Yd{RS zd`P27+cH+s+gpkN(X8N{iKu&6&3N<{szf7=Wt=cwvb&i@AQDW#X`Bu#=vh`WDCDsB zk;9u*nUJjJ&ynF}(7BU>FoFhoha6&B9SRz8Easr85<0{}x_C{oS>Q~iYs0F**IT^|`GnR48WGIR5(Dbv2ua!FX zJ;i(^u-H`nY+;Jh0`hYonOZkN-{c8cipRETHaGp3#$AHCVuqSZN;@g0l(&gFtQ!2h)8y{0u% zDH6NePL_q%I(=BjIShgn@ivp%u<+u@S8SPI*l%3;n4#!wzUAP7P9{_M8RLm=lg^B0 zj>1GKqMO|(Y6{ONteH-BkEwvJ{8j9|hDBEY!s^K0$uOa|jMu1ifoLhOaZIR>VTRQ$ zV3p_q?hwqA6&?F3>scI?)6U3bli+SZCIVN@iBj13$XP zmqKkL-RvP65X0-oJqWtjiGy1vT5athS|U=qBAl&Gqn3U`ZP1E+W`$@_{8e{rHm1$! zF6jR{F4{xX&rzY)k_xaL(%LdOZx7LE3dELauG7rG2-&3u8W-##dW8z1wuT(niFOxU z%0!{QSbU%95XNy_+#~xe#>848 zig@DNuCUgv)7l?cPm%kC!(#Y-ICD5+#o7d#^9R%TG5sjzBp+EZ-T=5?5%|qh z+(+#IbVl&4II5LoTa0RHB=B>-xbC*Rz*0*_N3tR^8+0ac7~pZSyGEX~I8=jJ*UCd& z#sj8}n@%?G*kcbh$9h^3(7$k*&f<39c=`2gCH&i5;yz zPjO>D?{SVMzz;$)OgB)M^OlkgJyw&1kMwp9VS9mcpzL%pB!~N_wOA_gdM<;7GXe<7YZslt;-8P5TE1 zgtYC%NPcT_zpb2my`N2uIGz&S9W6^950G?II~_lr_z{0nW{6!Yl{_5@vpIyfsJ5Vf z`Vo&09neT5n^7z!pHkD7#XQ;m^euZXvuh;qLw?0zlixK`h{0^iDWRSbj3A264722U zI?D6B&Sm@NrR~re#UCxqh=D;9!Rx!Qz73c63b@z%?~?gh$rZ~Yx2OD?tyry^!J{DN8g4$CK@k>kh8C^ph>ue`^fftj04pYiuYMh|x1X1wu2rI?c@h0A2InbLl0@P7K zIZ>2zmMZ+zqj5`plS(6v*A+{&in%xaQjcV1V+A^6m7bylPP-`8u;0aGaF#~Kis@GA zB#=kd?Lia_3h2#nacTDDJo(Ojiqw7dRC@6W8E++H+HN@I9j)d(!rt{pA zM4LE8yy9y604l_50JkVKdhvl``JQ5o+u}Is*smnWC^4}=iA(Ho_mja+5;Z6yo-tz9 z%1QFvO@npTOWMc_Y!RQt-s*NyYiJA>{YmR0@r!>Qr8+mn6ZCG?IHD=!e_q(SZjNje22Hn2jGUO$) z!~g&QC3HntbYx+4WjbSWWnpw>05UK!G%YbPEig4yGBG+dHaamkD=;xSFfiVV?Oy-@ z03~!qSaf7zbY(hiZ)9m^c>ppnF*GePF)c7PR5CF-G&VXhH!CnPIxsM=*Hz;H0000< KMNUMnLSTZDWG0dT literal 830 zcmV-E1Ht@>P)9moFv(+6Kt>-l)O&wb80_jiC#MN*LX z%sHfh06?QIk2Mn!Gcz1^TY7f7WwFOe6T)5ktA8HFZg#xtZ6Gjsz{g{p!;hIZ7A`#9 z5Ln9k)v3&N4(4jf;R>6+=Q~%Bq&ZO#K!f2!CK5sjO;e8YlVvq|^Ih{oq04t0n;y4# z>=D=MIq$xj>gm*AA^cM9{%hk;ol6B`Jq8a}A*ECR;Lpx2+`Vi28MoUrV`O)(#Q6E4 zeQB-zL351%kX-nU>yQ#4O_3QyLjyC7TfV?s3LpgllprYuq)CwifYdL%MGwx-;qLR} z_1XhT?SS^Nf2-9trJ^*gk*h8I_i=YeLcG%l07?o40P6~JPh2R=efscB>ieE5JHM%L z7~2aIgZ}Ap-wMra@g6D82(6lHWWIfgm@n;x>*7}HWu@6C0)`F%Cabfzpr|-CHg2}@ ze_t}7zvn|6I@g}vWUE4H@v2La`XX*THAxTu?&Me{^>Z!w_zy|-fK*Bn0i-G`0=K!R zm78n!M;`=N>dn7p>i%@+I?T*STT=4f(pP9L%W&SvdgR+BrFGQLG#=lixbJ2=vK|n%NB$a?NDKZT~x@GIm zqw}(J)(rffkWfl#Qj*Nd%F2s|@AH$IlK#45{bL*Y*zGqkRIU4$sxpo5cbt~T}bG0SA;&KMD7b9!?WRcu%_q6O; zDfx+(t|@)dp4UxJd+#;0bccXww;+g-$zw%QiqEbxjY%HT2R>mT^yl%J2mk;807*qo IM6N<$f+0zkKmY&$ diff --git a/src/qt/res/movies/spinner-020.png b/src/qt/res/movies/spinner-020.png index e7f2ac78e8843da3e07639c4e5a72713a8cd8923..c12ae20016110cc3b8f365a02aceb88cf082a2da 100644 GIT binary patch literal 2800 zcmV*(P)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 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 diff --git a/src/qt/res/movies/spinner-022.png b/src/qt/res/movies/spinner-022.png index 6e236c805e6ff1f53a8aa4a6b8567bc14141ae90..69c6657942fefad7860136eb60458932fa602afd 100644 GIT binary patch literal 2823 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 literal 858 zcmV-g1Eu_lP)_WT3%EDu&uUR#*MMfT~05TO;^YQLNGj08| zq!w3#%x`wRmC9%1+qw(9`-yvhZ?8*CVdRIJ3;T|g`+U!x7l2@f!Zj}q_I-Tn=q_h! zxFGUXOcviy3KO!ooU*ZNd+xQR;W{nfKn@S2Mgc{N!3+S!dr}>3>5ApKWv~2q)wSy? z(zC6hpP5z2R1wqA`rC8UuOA+beXiFG{rqESwlmaIoRW zN4xB2Gj^ggW`#5T{d*4{|Md8o7Y6sd*VUfg2a2R_1%g0C07%t5)w|`$*`fTBoU}wv z*2=`OCV6B3)-#E?_26xZBM@zzAp(HSXk%MrxGNeWvvkd!zjAf$f`~YVVipLA2t07*qoM6N<$f_4y`_5c6? diff --git a/src/qt/res/movies/spinner-023.png b/src/qt/res/movies/spinner-023.png index f1c32284858cff8176698031db664e679b3a8c92..7bed5bae85a5e2d92e6c3361f3edecb7623b197a 100644 GIT binary patch literal 2710 zcmZ{mc|6mPAICp5*W}!it1wOGoGa!&XJh8tw~$0esIOzmnWIHR!`Ia|M>a>Okeuag zA|=cb5fw%$BK1WoeSIIlzrKI`{&>Bg@7MeBe*OPScfs3>fMvk|0El2Qwr=~3{8xgY z{kfO-=H5O)=dGNq0H7gT_@^J=zE||exH$np92@|WuK~dK-}_tvfXhe#_~;7&#&iHU z9F}{w5551(d(P3`769&KD(mh$p>T}nB>=#V{VSeoyNsRvTQSzwiV!oiRvaHrczNWh z#rEgW6Vt>-p_G&qfS2siqZn3W!^nYQWCAOgwW8k?8jQ;q^SdhgCPhnvYmC&4+-JN# zQ8in})G~XK9_otuJcG(EsrX?!hVpSeT8OOb*o2AR+G5SM`~6 zj-6i7P8kle&3yN8L%bX;q8-~buaqs#qcw^)5qcD!W1F}7$$T=xc|9riqAwULDh98< z0ZIfvEQ!D^;T;exiYasf%5f4?GDg{G4izt%&ZQg+wGlh}sTbt3qkFu%vJah0mF*+6 zYzTa;u~)u&vjKz};hBs$j3Tzk-w4JBpRrkSQCwbFQu29kE!8$5S((0O`rKnef4i{A zKCPzVLrIb7Y*V}P{4zq_SNzTBgP|9W~4-j;JoI!nEB()nOPMW04+!5}md zqg?x_zM@)wk?$wsxT9bDyH{wHa#5*eOxJLzqj){7)70{fh@j6Karvp9Cy&|1eP1WM zs5PuF3Q;b29}7;mVAdnczIVQLeil}8NDEDh2c{<$!%S%>08bf_%_t8m&d$Fb|(c-*5kP)VONz2K!){gPz6Ac=aCodRg z5B6@@bn9I4Q}q-*{70t~NZIZz^D{f1Mf`Ag>;sj-XZjin79&QH0PV>iQ#Cs5&TIV!lhSW?LXqh;U&^TM%&@ptp|zrZ2~nAY zM6TZJ*@psUx~B+YK}YYVe2#|5Jq!xZHCJKqi$GeXny7Z<8AXe-{*7a=Q5PijuqD(3 z)dG7SO&mc$#&P#k1KpWmv*|_QILlvbfRK&A zB@bRH5EGIKRah#dzAV_LqV;@SejHVxgHpv}i_`BhCAIsgmXB-w-8l|-U-)e@%LN5P zoIN+g-=fC@N$`z-knD!bw!yP)f5M-Xo-&+o4V~Q z{N#j22PSI){n(zzXA@EJmmgGuNrsUS0U)*1$UzxBPnXPKvcC!HLZ^vH=Sh967-x=B z&z!ebPN!Vyi1`9h#Juw2G>~V+hgyY zkM4TfOkWiFNu~Nr`fa@mK4=DAJi@-f7|CAwkRZLO z^AbAOgiZAP#!ikIy*g5kB6y(Z0M4PkxOaY@W4=^b8T`1!p71yc?wApc@{*Guuhw5PwZO6FTYRL1G_)ea z9fp^mpLOkCS@+0FU%Fjf1sb-_wIJbJggrS|#)r=}vT(Y|t``r*J&f2>QYg+V>H1Fi zEX-dz7PBKco>F?H$923>R#7|Y1j8jFS>}4z5*YGb)u~jjcDvhbH79umh9+$6X7=+O zH3(|1s&cw$HXv`tB;9h&B0L{Ew6!T(NhKP^=DS@NNR^Kw<<4Eljk>i|ok`mEN?K&c z3}d`UkNt=d*VgKBlfxq-j$#kY2L$q$;iaa2WM6F znf7-^r5uFbX)Ej9xM#pH;rbaRRl<7(i|$c=LL(VWY*=U&uK1id*Sk$gO?82}6 zH@FHi;HLuQvMVQimJ&mz2alywD4CJr1rYr)3`8O$y$s1K=J-WN%*p#C;y<@WXSs}xW*x5Afqed`9W>pA3CW1G}jnLg!dZbSzc zuxW*FW#37@2sBeVck|rjMt=CI(mODSuwrq_T=@ z4bSH7cgG6(@qQEUccu%vW-+(cqA1?qaYThF4o3X^;cU4X3AN-RZ^CSw^gV^lkA`j3 z*&X`hgB=qb-`%0Kk+#`id&d7MLdy1m-zlmsdb&Qe7HyLYZ{}cE#j2Ijk`~L&=Q-3V(2LP-c-nP!# Gm;4Xy-pgtL literal 854 zcmV-c1F8IpP)9(U6g~HT@6CHN(i06;NFFvt{1QHYB-7dZ;+EArpXiFaFM@pMNz)iXZ0O(wryE7@=3 zT7HK7@LuB||NUcqru~ia{v`Mk-a6N}DjC_L4GbF*6NyAuZrib|S4TUjAyl-KB}*_` z8|?=s0DxaE&VP0NpL((DeR;au=>rHX0(5tGZ^(3|nrA)RT)dg`0u$w2$tnOk0Dwr? zO(t66Px#sn`xJ!;sI`$3fWQKPM4}}rx*{$w@ZQ68Aa~0h6Y)G|kTH<0&-QHJ_xhUm zPYexBkTM{{D0xx>P$S6Y^0)l*Ect$b!rc7CrHT9@0I)1&8H4IW53g%)ZA;^&N55Zf zOIa_J8*%1Jbr=8`07fs5ow<5-vKVs$v%WLB830_HoF#ch>YH5WzP0jqB~@vv%d4|j ztQ+V4EFWS5STU)&*~0Y$U;fyy82tA0`jscwwY=#CR0)ErPXNlEU$NtzqGIjHmtw)D zHQ9JiCiJQifVC0BMEuR+;r*W;%?_oSV4vPw{Op4r@uRC+SM&;)E|32H8?0t-Nk8u7 zO`BaZVY};oHv`ZeDH9PyL|HFvTKVqoKJT^1()z)fQXReJutngtX(Mpaj4cVL1 zw`Xz-Q^itw95BnhP$K~Vx2`T`r|LpF><87kLa91sjHxU$AOOL=)+EKmVnmz&4U|#} g5V|8VfdPPj0ibPQ(=}MDzW@LL07*qoM6N<$f?mpqQUCw| diff --git a/src/qt/res/movies/spinner-024.png b/src/qt/res/movies/spinner-024.png index d8cf21f1783f308ea754714ef01087c9ba6ca904..b3be8d3e8e71e176ea13cafde759474f81da707b 100644 GIT binary patch literal 2732 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 literal 865 zcmV-n1D^beP)We-# z)J6-|Agp58h9+KWV$>>4qy=T$ZMhUe3l_oMDtln}{AYaF#Sl!Kx0%d*Gnttm@IPiT zEC6I>%_bt=m_q=-M67^RKTxqRTwB&Qa_!b=eEQx`;yUvi3z*3gQM2aTxgZ-+wC%1s zbn=y|H)h7uaF%_EQy1=?Ie*2|_wtL+9=#DC9gYru_eCb1y3Gs{fvy{sYyfDk-}X}M zY)fY1gV3t<-lsa~)0(aRj<)vwhbKp(I@J4GvbDM5IKW^g20&nDCIUjC^2VPp_RP-o zK5P~~EHtJMGTm9^1pNLQ04OUh-Sd6-3(18@qaJJxzLRTgftd*)Z+~C+FV56}PJSE~ z>4BIi+|Jj_egv5Eyp|ULYPWAWGWSWfS?CIwlKXwT2mp(S*4H=ed%UfoX)ZP>v01E4 z{ux+dZ-LeMwK+`?H3IV3?72RECvqv4n%-2t%pH3?M|5q8&EdL7G#OWCX@XCDG=HqX zveE~d15XTJpF77yoN>)+_F5M1CNgu%X4|fV4bmWmZ3C1QxOsE@*5C6k1w0NhvxgKm5nzN&L7^{r z_Pw{e7H^#AZ-xTHJ45p&r!I|+-(GI1P8ILn88~bNu5DW$Rnxi|F;3`B=g zGZ*EzGfnPaU3PjUvRR*bwDetoU@;f~DEkyl&pj4=KiTisvCg1V87kbHmtVLkwY;oL z@u*xm-Q>9aU-vL{n9j6|Lba?}7HZ#O~1v8SA`|c#BCO rx{il`X(O_13-+2a^Lm2+Lo@yXieg{|)w05a00000NkvXXu0mjfOIMk9 diff --git a/src/qt/res/movies/spinner-026.png b/src/qt/res/movies/spinner-026.png index 5ee3d2fa8ef37adb6ef8acc2d39ada07fb8e71f5..dd92fc4fc17984dbdd453e20c1362d514801eae3 100644 GIT binary patch literal 2643 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 literal 864 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 O00000M*UNq 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 TFWgoR3IM#NJ*Lsz_xgVUOArx| literal 866 zcmV-o1D*VdP)O(}us=-EWqsC&3mpo{(Tf2y)c?dL#!Padq?RGES?B=q2&VPJZ(n~sz^YNSEW4-}y zEK*7tw5nMV2!z|3H#`CWM6_DI245$Y-d0oF77lOd2vmexKY8n+ku%>uEq=?_LIffr zz6s_cPLJ)}vG?R}$0lc|qE3A34;elBk{3Z z9(?7Q2fFiD&SNbDfKngy2z0KnyPS$lR?ezE7#wf%QA2fLNatOkItZCjuC>FB^Y00uLY0RZJ*@tamw z29J1;LoX#<23&Tbklr_V@hLz62$%rHFtVA1ZmnKecWcn!aw(o1VE~v->T`u`8J(SW z#uT$6GDrXbdIcs{>=uFJH;r0OM5HoMvJn6bCQu@^F!uY|s<`dU=NzpaM{CEoro6Vb zxnYxw^W~A#BS%D>oEDP1!g#PO8zt8HVis0zx~0AH#Z8SBJ&lb`cYb>Cv*Z6xjAn9E z-^s}@djwDxK)7%7+SlV>g(Tj;#_?O;w(BFv0IQmsb=xxY^S0P?@?YeDOdh)1{_*Yl z%MW+fzx&Sax}OvMmdG!V{XM~9fT0*nR|kk_kJqe>4u3x3PM^MIG4?CfxF>X4syI-V zXR~w$aBKWEX3cfIxx95gw>U1vAmRoqdv|pV#Sb@VdjPf!`9!`i7x_U+a=?@ip9`I^ zOixpBDR?Ey001UZ0&%K><~`^8`WM2Otu+Q%wV#XeHrVx$y%0dckE+k?2+sN$H%j^3KfZg;_s4h6`@GNdobx{CynjBKHfVD`9uN-z0DMRbgxxVm{sS(y z*jWQWtO5WeB?G|0(J^lTzzt0R_~-=y&|&}( z56SbSUpl^J#aNmn0HB^Ir*-VOLoJ*m0024u4_K%d@%sS4V}wM&9HM7GmEH<35K!%WLV7v`u_d<=ze3# zA0XGc@uJl3Q0hZg;ZwVR@gn2|rSpp9O`9KXZ9jXG=!?vMw`e`G{VeO#(64d{#l!2{ zJEc2DYlkB{$HQhA{rP=wGN*v_zoL|O)IEuNf5|5ZhzMv zuSh8TX+YAo&TPus8HeBhIsE$j_xrruQYVNqAZP>?QA>j2CdVvvpGFsdpq#(@Ras5+ z&zLO!-@OyX&QLrma>!v{<(?!l=p(n?B{|&`D*3jSs)`aK17JaEg&2+MQWOKZL#3X} zQsy7XCzLO%w2klZ+x|4DXR&ndabwyYzfP60l7PY47+h9$Px4BT)>dIiX`L!Ir~Yug zFPt7x>Ge{>LDHBr%zL=U3U5)?kc=zMbFvKk`5f}&LLYveZNI-nP{y{P zw%i6e1d>EL(fA>%3!cJ)*6f4CZUp2&ioBuVWo~u#E?DyvpUuY{YK5~wvwVD9i6YIR zO5}w=X=N(Z1-m3UThsah`ntWyd}dpbAru>U1K~gxa(CN)>WwpR2ovP;YA)cAt|TeC zmaV$cvEy4{3hc`^-77~;B?9ryv27-{@ol(BRs#R7>%yv(`r{iutYA61Y})+S)Vt9s zQNes>F1^u)w(rwmwM4Vi_JO~VvSNMLO=9tA%xRsRv#3&*1*S~dwH1RlA1g@DNM*K3 zu6hy`sqwrf(`7I?!AF5(j^{^)9+&;=pxF+bo*1O!P71djQbdl&sPhG5uy$A1L&1-H zOX<`04y7eMbL8f|8#{dd`i%#Q3(aNn*_T)Te3}%ZyjM$SDUnLt+tkN494#!5ca@ak z%ZI|$!>YQouGMw-T%>1353hR9#pJuEIjztPRlP+ygM;=Vy~|^h?Rg20P*^$fRcJp+ z-n7`&Ky^A6w>dTS;Z4EAP?8Ms>+Pnb&A6UIKckl|TjCW%6zh2H3IRs;BSb+|)17FN zj%lHq5l??d))Tr?g>UXp#IM#dnO7o*WhN(Mb!ZR9*w$A#dAYv$i#m4t1`lG z+vLjWzU@I;ovps=%KW$s7dOJSlIA9P^HdoJ81RVK88bp~U4-ohCYuIHP~8qGsvEY` zt#-L$wZnU}nI(x$2~pkRE+6zcO&bM15mhCkXu({I860|tm-W31Y-YA~xmP&=yg*FvYx|{|suTR=#n*?~~Rm0aA z`U4v=R9@o~_D!9B4%Q~xJT&N)P*Ehu{vR4>y!Zx%4V57Jv=Z*Ha%!N|x!(3NR_Jz) z##aTVUqW}rTJ$v ztBp)n{!DKIhv*wMjmc2+>C+0V`@FvF3BjJQ3TZol=K6X{uSkBN|yFRa*jB2$ky{B!k=y=|S zzj?S)OnEhYx6EiOJY=1wS%!01(PJ2%!V5tvoy!NhJk`JfVID6+H40eCjcXY)CRfkR zP%~QF38}kPVHe(TjYjGT+1lPmO;(%ByY!v_-y~A$VK5MeL;Q2hqs4OH^pc>xmLe8u zA4HDEa`+ozCGexD$l3NgF|=0_ABJ&uaW%c{l46%zIh>YUq&!c3t36uYx>=xW`Kww|ldvFtV5Ym!Iak3y+I*>~g zUDiVd=k~(L@GdVo6HGDSI0?z>X!K=22Ua3_KjGHsQ&=3yZ;MGdS?8lraj&JP=}uL1 zW(^^PEK*$#(iv1Xf5FDzlu6uDr~2O=jW{a!es_6(Xb5+xP}YBnnCpgqFRT?dCjJ3rI4IR=nSo z1c(XtwMxt?fR}D+ew=eZxNugai%49gYk^lu4MkhwiH%&B~G*O2Oxndies#)HUuN#3O?UZRGTl?hHHhYIdvqHO20aXVfjo^jFoZVM@OZ`72^226;?s zUuG&cX-Z(&@;w&(3cUFtaNG(nMos8BP-n)Q?0Q|w55FIdTY|NREeL&IV5{A{L z7?Z;6hNccp(i3UVL9;)2to&i*Utv_#-wkEEu3ZOQ+*T`ELgbc*!#j`V~2g!>&6 zprr}XIR}B9)6{j)fa_<^ukc=l=wPLwvFRG5R~lB`7?d literal 871 zcmV-t1DO1YP)eQ`jQD-87g@GW5R!s~_5E2p+ynqCqEHNR*#0$Mx zBwiWK)DaWB(!?bLO_YEr%*iM$F8)nsXSts~?R_C0kFO(PHf~sR-`)@2+V!K$T-uf|rihg=4OZA*-v_#)SAoe4*m74dOr`025U^oN`gmr6SV02m`u z3T*$*M?ZaSS8OYHj-&Wf8Pai3u`J!~{yDr*E!+CqW!@d*J!2F22!I9valMmVm5995 zzooQwF?|%nDRFLms(Pj^=NnpC@Jo8>wp(*($z%-x~00^zM0txd#lKLVI zGuU&)|Nh{}%sxQMZI6WpTH7m|QB?5iDqtAMTtyC0oN60r0sx=CAwEB-CP)8pUtIrs zF>dgxr8E=04+eH`dc>8il(hBdJkk@>)zO)&Vk((@YRBQBp?<2<9t`*s_Gdx;{Mwc` z7$b5S+`~B+HKPA}xur|Poj;s9y5RA6+HTynShDgLvi?eH+CHh2)>T_pq?Ar=O9jEf zT?Y3EPR5GplJ4c^Y*V1o7Xbjl2xQy#rT31T!qTla}+;eYNVp${-bqmK#oxhNp zPS1YNp`|0Wz5d}lwijl;f$caq1V@Z9;)Xl)@+*Ds&gCxsV-<3`lsToX$wPYYi>r^+ zfn9fncTOEn$ZrQ?1ui@xx-KM5L?mr1-@E#up0Fp|@XL3f+tvJ-_Q}6kc8>n;Xm5LR zO()-S@ENry7W$P99%~wwj+GZ2oa*|QQmMY(kAJd1>EB+-pLL?XoN?J&A|>~UCUFhT zz6HQr#fkBj>=SP;uClA;Sq)H)Vyy{)9#2h-NA=h2?$(T}qMIn%yeRH$`5n!HE3j;a zp|4s_Kl^rhqh*z|8i3YNRQn<@t)aZ8*?#^Vb8_UII(cY>270<^T{y_YR|=RvJLR1I xEnWB$aC9Ai+m~!?@ZS$`^L8~(wP82s{sj)SQNkeKR!aZ?002ovPDHLkV1h)ksjdJ3 diff --git a/src/qt/res/movies/spinner-032.png b/src/qt/res/movies/spinner-032.png index d72c9bf0dd33440e89a7b54d3aee8348d4f2c76a..7460f80da35c99c219143d16d0d9f92d2716c587 100644 GIT binary patch literal 2839 zcmZ`*c{J1w7ygMJWh{(U#Z*|an=(3$P8UX0IDzJm>SmfFBF#urm?jLY9SdzB^fKSc_jl#u$TrIm2 zDmpGUaO1vX&-0h&0*iYgM+MW}NC}1T5NC~CQc3uYVK|fXE>I)Q6 zhqi<3#T48c`mBvR7$cV4ZiDrtET@M&4V4)IaCld{9sGM%@!#?np&vpDg@lpEW(MA# zuV7=}EwScMYqdFw-^(}}9iDT_tLg1_6GwFeVh)>D&kLv&eDvy-`UM@w3)kJg9=ebz zp!WNm({%FGWdpbTDS zL#1+B()(5;2Tm9Dm8cqj3)dKKcGkUa5sYv)wAE7E94J^c)o(S(3rgn`FKxK^+;bA| zbSI4F_(Xka;-?kZE)*?R;&6?v&jL_(*yO*Xfx<4&A2o3M54Q` zr%!NrmRSh%=VuF)^p@mvY@g9+Kg)Az`s512UtGWDOORoMx*sINW7{;28pe_(Q~P<^ z&>UGVlsDK)0;|FVn^;x5KQ`Fd(M$;LXv(@Lv-A;yXs)xiXNbuGgBf9K8vv73$$=?nC(r2_H0GKVV9pRmkz7w0=~=EnA$8~maYw1 zv@2?0X-9>0v+6(hkfZnyhPVo&=>9neT2R@pC_O{7#lu{9f^Qb!V}Iw7T^P5o6bogX z+gD_2X*|eZa&n$uyYxDDI(g*U-PRyKw0d1d6egYuu^Yxy-E3?dsgH#~sp( zDC-&A5P!!LBn*!)jOujJQbo`#3;Es=c>>KjcUR`4tgsGQSFfQ}eC$YToQ;~zth6K? zZCewKAZDv1LP%ENOe1rJuHm5jFOpx*(+#8dB;TguTwSM}%Wa)A#-|}V2EtsW!Sffy zg9wyW0>hK-t%>$3LX}I%J4Z@}lYM^ytoRrxuO1>ULCS}D|#o0J*Ts>WFdG?vOU+NN2tVeAt3s6vq zHf+IE_ei!Fg@2f2aLoIb5dLxM9f=Oem(s{UH@$6=dilDkDWqKn$i8^)Q(#PsTI zH&f#Mi%@(}xz6)voeA2MOka6_HJ6OU+%hc5u2Ce+-br8_TCOCu$h=IlO_EbKz)%Z} zF4tA2R=U21r;IYP$~}T_>#V9xglIfkSLCOjGI_7~*OF7PcTq$3Y5rT$OK;DJ3+o8= zA>6veaUE^YtxYk$U7V5)wbsBu`*>lN&td1Y8 z=g0D!Kx4ta)^Us4@?y<{6H!@Cx~gsXWdPjtV(5e{n?_eNnE&HJ>sX~<;>)TKuc4B- z=-g|6ezR|5aqU-4-G~X_QQuc%zK&NNJcT%NB!j>xH*3x!?G5-E477JB$3oNk=3bJ7 zGO2e^ujTjE*MySBBJYlz>%jYTX|My~(oRpGr8A~oPswEHa}z&ZXSGkj?hXNQ?Rk~Y zS7juN>Kae_XQS?XYcrF$dsPQQ?M5O4xAT^NkPHRprqzSis+0|&Y**8j?tQ|Rl;-Xq zram~H+o&;evA zTFs?P6Rm6t|2jCd6y9%>VvTt($-K|_7EQoONCcCpZ*b>kRBS;dN279M;4u|mc((FA zgKR_{=Bb0smRiR*iGr}nGM4=lC95N#n+ayk#gt(U*m_2A`cqkQL1#h^ow2r7nWDKn zGPoWJ8asABZG-1_gL~hb!E}2GHEryt-~K7HjObQQ`SWu|*iZ39i4WEB9j9h zLU@x_*eA=0vr+f1&q!>UtI9FKKdBpV3%p8@ceDsMu|9>5xF00(+Ef&qQUKdMsQZZK z4>;}4&~nUzI#0q^nkZqv^ox|Al1*Y3ZzB>yk!kfRtbS?JB@787d<`?uJqp8&`JF78}{!&^VbRK zM{(tCQ#&UPzDG5@r90lw2k(#cjrKnv00x1=b)Zlk2m%L#BH{YTgG~j2A|a3|^6JI^ d5rjqf1qUSjf5E+R*ZBhhU}NckZn3yT_!qvGBdh=b literal 861 zcmV-j1ETziP)$+mhkd=JJD&HU7PNaewrye3oxIsEN_`@_cRSZ%qhgFdDx}53*KuQ}`OrNdF3rB1G z`n8c=mL=G-q$Q;gMUxD`34y(pV7C&G?sNN}f6un6*0*@bV zDL=H{`cb@cw(vP%6fsF@Oi^Gic_rtLA4k2NaO?^niF8cuz9YY(c~iI-D(lx(Wjv~w z!in!DsuLv zW3x|b diff --git a/src/qt/res/movies/spinner-033.png b/src/qt/res/movies/spinner-033.png index a8b822bfaf24df1c8359008d91ef0a9e4bc27507..d327e8fb0814506f48e7789d89952659b303d39a 100644 GIT binary patch literal 2829 zcmZ{mX*kr48pi)(Xvq57cg@(h8O<;zDU6+rol3@xeV3VJi9!t7_p%f*_E0HX2{D%J zBP9FwN@;|bP>yq*>wGvL&WHQ{UH5f8zwb{1_NpN}t1v470PMy_7^_nf|DCf;r~M~$ zuI3a>9y;ba0ML-icI*N=-I4?&D{}w{lLml$F#z!E zF+$hn99Iz-y2vfk2?5^+q@Yr%vwvKSUbeQkhHq`XokqQ!Ke8XXw0|5qf2loq=*My7 zI@1yvl7jkgDIqc%(o-1O*_A(itx)jeRbjqxUo#804hzRZ^%QpHknbTGlww)m|;YDYxT9js1L> zE}om%>LJ`gK$v89Jh zp^K~PORn-u7c4=`Q5beo!`3XleusIoE6M6N)l`TYI=B!BHzz^pmih{M=d;Qd7a4}? z?Y~(HBu~|B`VcV1S&GD`vS9B1*6#QfmTZbz47FD>8`@95rvFJ$ln9M!ELgb4v=;t& zi(w}^c^!q3*N&iB^-@3Lf#(k6Z5Hb3MP_*Jncng-V6+{C4W!E*Rqj_?cY(BV3SKCJ z`K~r1V`F%{t(zf{&r_Z5{@#XG)V@i3J1BpXVmc$mmez?HQs7c1;O{MRtVNIyvwb~; z)99rka!SnmKZd~5kj_eI`@9awjVhU<=H*@)k!(zprFIuMhb)&GFKYhWh4qnZ#f> z{_iCj*Cnr-=H>-}%teNSt)VUHA1HrbY@0Up^vhAl*?2dSjuE6i+eMt3*n^*H+9k}+ z);@$-VdM%%X!!`TWa7=rSBy1L_;=mr`(rv1OR$ygMW`;-QVxPYt`*@>EYXy5aiyIL+i3pBr7=CQ zEmpKIr92dqNm82~06jD!zzw&91SB4rmA&=4wu^uGR1Z|S1{%EK`xhn)ZYx>kQm*<} z-hf~WW>t=6qa*~+hH{nww)V*U znKY)o1X1y^8$x@eN26l5H53ETMiXHpv0oIDO7b-^g{9;n=bP0Y@L{ZC)*Lp$pmNXC zxkJ8gtu3)Hk5#rjc5F_8gTiW=--NNTn)qsb5C*r3LVhUqBzwl78t*jo#FSbTV?X6r z(H~cEH9ow%zSvQ*4>c%G2+vjvi=D(gs1Pu(u6q0*u<>; z(>B5%IX)=hft0W|lbOC>d5%y&6|jIOFC?m4xto}=0?DAxtMxgWiG5B;rP6!4{?@(j zacr(fw@i{?THYlbX55_Ge(KU`;F09LNXK10GtLSZLd%{0Z+Xt|k={v^D@nr1WSHq1 z=S2&Un{Ej62eC^vyvT!>%^P|mjwN}+=3Z~BxiS^p+#e z)qpYMu`r^><&a@&=2CY_G(VWznyj8Cs{+5h_UHE=kR(P$uO>O-6lEaL6kt z4&^$?Q3bi){Q-jpe`lyEiQV=f+SMjt!Woase`^oChdb@A60u2n}b7Sca1DpJ-j6hy7cY3E-6K=YzO79(EPlug@hNM2P@P<^1&ZV z9}d}2*e{N5%;manN*C zW=9BfYs&A-&QibVVW_=XsAKH8QPZD4rnO$vtq&Jyh3beLA*f@=`ND%3eIs`zH`aaO zh?N(*A@SpdZyD3+3;x#?JNk@fSGDNPCbBMJ zVfy>9P`dSy0&~w=Bnl7uy-#r&9j z{BqQ5MI9u%i2hBA$WfS+9kBFI{iEkrAzxs_=1Rm3As(IT%MJH9ZlzHOg*`Rjw0Nqwo?do5S&~#9B zq=<;P0ldijb3@FsjuuL`Yj@HjOLS-7H;Joe|Dpu*N;pc<6USV z)sd%)A>w^djIZT)PYWr1zZg$B#EZ;XSIZcYaLfswa^Z;d^R-`MMQ-bj^G|BO;Z!v} zQGvo}%*K)u3sISp+^NUI*oza2Z>nnJJ89(BC}FQL8mwRJ&D>0$jb^L;t@} TH)*?kDgeg%S253Zanb(*#Nrsf literal 849 zcmV-X1FrmuP)*vu-EFffV7rT{n1-|xFor_#7Qw`Tk;K?)VvP}PG>wYB)!?OG z9!!ie#K1}_s1Fb?Da8j&03Q?~R!CEbw@RfD777d9?QYLG-}tcEnpWrSo6P+4&CLG? zEC^;&3v<;xgNT@jn3?BlXnqmM7)T%(O|`dWR%bJrwu(o^pGQs|J3TgfQYy^nse!xs@jF^Wz z(*wJnv$u&5M$ZS0OHoQUCddyiG3n-Z{_%(JuS#jsjyEm~t?Aymv{WjNYa%FP#BWN* z*X-I_*d{K_3xjnZ95|NW?Hi#xT9c2x+x7eN*YclvSvYYo8prAJ>(jmw0{~hv$ny!^ zo$85T*vIOZoSx%jleyY#x73H8X-!@tDH~Im4OLjXsyyu%DrGlM1ZWX>0AcNNd;QBf zCwF}8Le8<-aXs-2wB3}jk{3%cN=3@{qR0#oadGln`zOGiQ4Cc(QRwN1TJ|s8tYTt- z5s$@ItnWzn_H9mn{LWLUFH`lAyNE~;5rc?`ne3+Y;&okJ-F**i*x1wDl3fX~Qx*A- zBe3<^-j6KHiU0t#)(QaLerx-uA|g`G%hb73a&-8UUmx9ccRvx^idj1W9Rh$yHf?z2 z@WC(6)y$=R-}eEsn-hgQCyw-cS1#v`g`!#(m6qj;t#t(RIuX2b#dr-jq}t!;UHjVS zL;HsSfC);A2(;xiBnsao0^?KMXk23WID7skFZWepuaST@Mq;;T6Zda_^49n4sYCYQ zzF!6bz=#k5fD;TgU)ssPg@a`jOAeG};c_wTd7|~nzx+SLx?-&xr0mD#d`J}mnct+K6+>~&9H^o4?^7`d b3kd!Pu1_(a7dOi400000NkvXXu0mjf5*(M@ diff --git a/src/qt/res/movies/spinner-034.png b/src/qt/res/movies/spinner-034.png index 684aa385e01d954a347c1dbbf85bb58ee694920c..d8432751daef0c6ca1d9779d4efc29b449547604 100644 GIT binary patch literal 2851 zcmV+;3*7XHP)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00002 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 BG?oAW literal 859 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/spinner.png b/src/qt/res/spinner.png new file mode 100644 index 0000000000000000000000000000000000000000..b296a584817bf764bdd86f0acb6b5c7974b912b4 GIT binary patch literal 16636 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/src/clock1.svg b/src/qt/res/src/clock1.svg deleted file mode 100644 index 793dc7f91..000000000 --- a/src/qt/res/src/clock1.svg +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock2.svg b/src/qt/res/src/clock2.svg deleted file mode 100644 index 6a78adf70..000000000 --- a/src/qt/res/src/clock2.svg +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock3.svg b/src/qt/res/src/clock3.svg deleted file mode 100644 index 09ccc2549..000000000 --- a/src/qt/res/src/clock3.svg +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock4.svg b/src/qt/res/src/clock4.svg deleted file mode 100644 index 7d9dc37ac..000000000 --- a/src/qt/res/src/clock4.svg +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock5.svg b/src/qt/res/src/clock5.svg deleted file mode 100644 index 9fd58d9d9..000000000 --- a/src/qt/res/src/clock5.svg +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/clock_0.svg b/src/qt/res/src/clock_0.svg new file mode 100644 index 000000000..2a4ae0235 --- /dev/null +++ b/src/qt/res/src/clock_0.svg @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/src/qt/res/src/clock_1.svg b/src/qt/res/src/clock_1.svg new file mode 100644 index 000000000..4e49772d2 --- /dev/null +++ b/src/qt/res/src/clock_1.svg @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/src/qt/res/src/clock_2.svg b/src/qt/res/src/clock_2.svg new file mode 100644 index 000000000..995446e46 --- /dev/null +++ b/src/qt/res/src/clock_2.svg @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/src/qt/res/src/clock_3.svg b/src/qt/res/src/clock_3.svg new file mode 100644 index 000000000..ea47a8473 --- /dev/null +++ b/src/qt/res/src/clock_3.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/src/qt/res/src/clock_4.svg b/src/qt/res/src/clock_4.svg new file mode 100644 index 000000000..43160288d --- /dev/null +++ b/src/qt/res/src/clock_4.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/src/qt/res/src/clock_green.svg b/src/qt/res/src/clock_green.svg deleted file mode 100644 index e31f0e799..000000000 --- a/src/qt/res/src/clock_green.svg +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/connect-0.svg b/src/qt/res/src/connect-0.svg new file mode 100644 index 000000000..bedbec777 --- /dev/null +++ b/src/qt/res/src/connect-0.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/src/qt/res/src/connect-1.svg b/src/qt/res/src/connect-1.svg new file mode 100644 index 000000000..d3d4e46a4 --- /dev/null +++ b/src/qt/res/src/connect-1.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/src/qt/res/src/connect-2.svg b/src/qt/res/src/connect-2.svg new file mode 100644 index 000000000..d5becc52b --- /dev/null +++ b/src/qt/res/src/connect-2.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/src/qt/res/src/connect-3.svg b/src/qt/res/src/connect-3.svg new file mode 100644 index 000000000..9bfa04721 --- /dev/null +++ b/src/qt/res/src/connect-3.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/src/qt/res/src/inout.svg b/src/qt/res/src/inout.svg deleted file mode 100644 index bfab8ef6a..000000000 --- a/src/qt/res/src/inout.svg +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - diff --git a/src/qt/res/src/mine.svg b/src/qt/res/src/mine.svg new file mode 100644 index 000000000..4a3f78660 --- /dev/null +++ b/src/qt/res/src/mine.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/src/qt/res/src/qt.svg b/src/qt/res/src/qt.svg new file mode 100644 index 000000000..9ef54f493 --- /dev/null +++ b/src/qt/res/src/qt.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/src/qt/res/src/questionmark.svg b/src/qt/res/src/questionmark.svg deleted file mode 100644 index c03c159a5..000000000 --- a/src/qt/res/src/questionmark.svg +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - ? - ? - - - ? - - diff --git a/src/qt/res/src/tx_in.svg b/src/qt/res/src/tx_in.svg new file mode 100644 index 000000000..a8911f904 --- /dev/null +++ b/src/qt/res/src/tx_in.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/qt/res/src/tx_inout.svg b/src/qt/res/src/tx_inout.svg new file mode 100644 index 000000000..5b6688978 --- /dev/null +++ b/src/qt/res/src/tx_inout.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/src/qt/res/src/verify.svg b/src/qt/res/src/verify.svg new file mode 100644 index 000000000..1ff11b7f5 --- /dev/null +++ b/src/qt/res/src/verify.svg @@ -0,0 +1,14 @@ + + + + + + + From 4a8fc152a957e54e6dd910de4382678f5c405198 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Mon, 10 Nov 2014 16:41:57 +0100 Subject: [PATCH 02/47] [Qt] the RPC Console should be a QWidget to make window more independent - fix issue #5254 --- src/qt/bitcoingui.cpp | 7 ++++++- src/qt/forms/rpcconsole.ui | 2 +- src/qt/rpcconsole.cpp | 13 +++++++------ src/qt/rpcconsole.h | 6 +++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 77cfdceef..cc799609a 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -128,7 +128,7 @@ BitcoinGUI::BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent) : setUnifiedTitleAndToolBarOnMac(true); #endif - rpcConsole = new RPCConsole(enableWallet ? this : 0); + rpcConsole = new RPCConsole(0); #ifdef ENABLE_WALLET if(enableWallet) { @@ -234,6 +234,8 @@ BitcoinGUI::~BitcoinGUI() delete appMenuBar; MacDockIconHandler::instance()->setMainWindow(NULL); #endif + + delete rpcConsole; } void BitcoinGUI::createActions(const NetworkStyle *networkStyle) @@ -831,6 +833,9 @@ void BitcoinGUI::closeEvent(QCloseEvent *event) if(!clientModel->getOptionsModel()->getMinimizeToTray() && !clientModel->getOptionsModel()->getMinimizeOnClose()) { + // close rpcConsole in case it was open to make some space for the shutdown window + rpcConsole->close(); + QApplication::quit(); } } diff --git a/src/qt/forms/rpcconsole.ui b/src/qt/forms/rpcconsole.ui index c5ac37161..a8b94354d 100644 --- a/src/qt/forms/rpcconsole.ui +++ b/src/qt/forms/rpcconsole.ui @@ -1,7 +1,7 @@ RPCConsole - + 0 diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 2d2d448b4..2defdf8bb 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -200,7 +200,7 @@ void RPCExecutor::request(const QString &command) } RPCConsole::RPCConsole(QWidget *parent) : - QDialog(parent), + QWidget(parent), ui(new Ui::RPCConsole), clientModel(0), historyPtr(0), @@ -278,7 +278,7 @@ bool RPCConsole::eventFilter(QObject* obj, QEvent *event) } } } - return QDialog::eventFilter(obj, event); + return QWidget::eventFilter(obj, event); } void RPCConsole::setClientModel(ClientModel *model) @@ -366,11 +366,12 @@ void RPCConsole::clear() tr("Type help for an overview of available commands.")), true); } -void RPCConsole::reject() +void RPCConsole::keyPressEvent(QKeyEvent *event) { - // Ignore escape keypress if this is not a seperate window - if(windowType() != Qt::Widget) - QDialog::reject(); + if(windowType() != Qt::Widget && event->key() == Qt::Key_Escape) + { + close(); + } } void RPCConsole::message(int category, const QString &message, bool html) diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 4bb9b62e9..fae254b33 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -10,7 +10,7 @@ #include "net.h" -#include +#include class ClientModel; @@ -23,7 +23,7 @@ class QItemSelection; QT_END_NAMESPACE /** Local Bitcoin RPC console. */ -class RPCConsole: public QDialog +class RPCConsole: public QWidget { Q_OBJECT @@ -43,6 +43,7 @@ public: protected: virtual bool eventFilter(QObject* obj, QEvent *event); + void keyPressEvent(QKeyEvent *); private slots: void on_lineEdit_returnPressed(); @@ -59,7 +60,6 @@ private slots: public slots: void clear(); - void reject(); void message(int category, const QString &message, bool html = false); /** Set number of connections shown in the UI */ void setNumConnections(int count); From 63d1ae5556ea40dde0cca20addda4bba40005496 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Tue, 25 Nov 2014 16:26:20 +0100 Subject: [PATCH 03/47] Do all block index writes in a batch --- src/chain.h | 2 +- src/main.cpp | 31 +++++++++++++++---------------- src/txdb.cpp | 25 ++++++++++++------------- src/txdb.h | 4 +--- 4 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/chain.h b/src/chain.h index c01240665..e76d5a3d9 100644 --- a/src/chain.h +++ b/src/chain.h @@ -293,7 +293,7 @@ public: hashPrev = 0; } - explicit CDiskBlockIndex(CBlockIndex* pindex) : CBlockIndex(*pindex) { + explicit CDiskBlockIndex(const CBlockIndex* pindex) : CBlockIndex(*pindex) { hashPrev = (pprev ? pprev->GetBlockHash() : 0); } diff --git a/src/main.cpp b/src/main.cpp index 88fb31980..832d7747f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1784,24 +1784,23 @@ bool static FlushStateToDisk(CValidationState &state, FlushStateMode mode) { // First make sure all block and undo data is flushed to disk. FlushBlockFile(); // Then update all block file information (which may refer to block and undo files). - bool fileschanged = false; - for (set::iterator it = setDirtyFileInfo.begin(); it != setDirtyFileInfo.end(); ) { - if (!pblocktree->WriteBlockFileInfo(*it, vinfoBlockFile[*it])) { - return state.Abort("Failed to write to block index"); + { + std::vector > vFiles; + vFiles.reserve(setDirtyFileInfo.size()); + for (set::iterator it = setDirtyFileInfo.begin(); it != setDirtyFileInfo.end(); ) { + vFiles.push_back(make_pair(*it, &vinfoBlockFile[*it])); + setDirtyFileInfo.erase(it++); + } + std::vector vBlocks; + vBlocks.reserve(setDirtyBlockIndex.size()); + for (set::iterator it = setDirtyBlockIndex.begin(); it != setDirtyBlockIndex.end(); ) { + vBlocks.push_back(*it); + setDirtyBlockIndex.erase(it++); + } + if (!pblocktree->WriteBatchSync(vFiles, nLastBlockFile, vBlocks)) { + return state.Abort("Files to write to block index database"); } - fileschanged = true; - setDirtyFileInfo.erase(it++); } - if (fileschanged && !pblocktree->WriteLastBlockFile(nLastBlockFile)) { - return state.Abort("Failed to write to block index"); - } - for (set::iterator it = setDirtyBlockIndex.begin(); it != setDirtyBlockIndex.end(); ) { - if (!pblocktree->WriteBlockIndex(CDiskBlockIndex(*it))) { - return state.Abort("Failed to write to block index"); - } - setDirtyBlockIndex.erase(it++); - } - pblocktree->Sync(); // Finally flush the chainstate (which may refer to block index entries). if (!pcoinsTip->Flush()) return state.Abort("Failed to write to coin database"); diff --git a/src/txdb.cpp b/src/txdb.cpp index 0731d843f..29ef35037 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -66,23 +66,10 @@ bool CCoinsViewDB::BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) { CBlockTreeDB::CBlockTreeDB(size_t nCacheSize, bool fMemory, bool fWipe) : CLevelDBWrapper(GetDataDir() / "blocks" / "index", nCacheSize, fMemory, fWipe) { } -bool CBlockTreeDB::WriteBlockIndex(const CDiskBlockIndex& blockindex) -{ - return Write(make_pair('b', blockindex.GetBlockHash()), blockindex); -} - -bool CBlockTreeDB::WriteBlockFileInfo(int nFile, const CBlockFileInfo &info) { - return Write(make_pair('f', nFile), info); -} - bool CBlockTreeDB::ReadBlockFileInfo(int nFile, CBlockFileInfo &info) { return Read(make_pair('f', nFile), info); } -bool CBlockTreeDB::WriteLastBlockFile(int nFile) { - return Write('l', nFile); -} - bool CBlockTreeDB::WriteReindexing(bool fReindexing) { if (fReindexing) return Write('R', '1'); @@ -152,6 +139,18 @@ bool CCoinsViewDB::GetStats(CCoinsStats &stats) const { return true; } +bool CBlockTreeDB::WriteBatchSync(const std::vector >& fileInfo, int nLastFile, const std::vector& blockinfo) { + CLevelDBBatch batch; + for (std::vector >::const_iterator it=fileInfo.begin(); it != fileInfo.end(); it++) { + batch.Write(make_pair('f', it->first), *it->second); + } + batch.Write('l', nLastFile); + for (std::vector::const_iterator it=blockinfo.begin(); it != blockinfo.end(); it++) { + batch.Write(make_pair('b', (*it)->GetBlockHash()), CDiskBlockIndex(*it)); + } + return WriteBatch(batch, true); +} + bool CBlockTreeDB::ReadTxIndex(const uint256 &txid, CDiskTxPos &pos) { return Read(make_pair('t', txid), pos); } diff --git a/src/txdb.h b/src/txdb.h index 9a98fcc41..f81fc6268 100644 --- a/src/txdb.h +++ b/src/txdb.h @@ -48,11 +48,9 @@ private: CBlockTreeDB(const CBlockTreeDB&); void operator=(const CBlockTreeDB&); public: - bool WriteBlockIndex(const CDiskBlockIndex& blockindex); + bool WriteBatchSync(const std::vector >& fileInfo, int nLastFile, const std::vector& blockinfo); bool ReadBlockFileInfo(int nFile, CBlockFileInfo &fileinfo); - bool WriteBlockFileInfo(int nFile, const CBlockFileInfo &fileinfo); bool ReadLastBlockFile(int &nFile); - bool WriteLastBlockFile(int nFile); bool WriteReindexing(bool fReindex); bool ReadReindexing(bool &fReindex); bool ReadTxIndex(const uint256 &txid, CDiskTxPos &pos); From 4c69ebed44789be056a7b713bed43e5d3b3a5542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Jan=C3=ADk?= Date: Sun, 30 Nov 2014 09:56:20 +0100 Subject: [PATCH 04/47] Add /opt/local/include/db48 only if it exists. --- configure.ac | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 9814197af..c4c21eaf4 100644 --- a/configure.ac +++ b/configure.ac @@ -244,8 +244,12 @@ case $host in AC_CHECK_PROG([PORT],port, port) if test x$PORT = xport; then dnl add default macports paths - CPPFLAGS="$CPPFLAGS -isystem /opt/local/include -I/opt/local/include/db48" - LIBS="$LIBS -L/opt/local/lib -L/opt/local/lib/db48" + CPPFLAGS="$CPPFLAGS -isystem /opt/local/include" + LIBS="$LIBS -L/opt/local/lib" + if test -d /opt/local/include/db48; then + CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48" + LIBS="$LIBS -L/opt/local/lib/db48" + fi fi AC_CHECK_PROG([BREW],brew, brew) From b93173dee9b233409daca201dd7ed0c19576e895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Jan=C3=ADk?= Date: Mon, 1 Dec 2014 20:06:45 +0100 Subject: [PATCH 05/47] Move SendMoney() to rpcwallet.cpp. --- src/rpcwallet.cpp | 46 +++++++++++++++++++++++++++++++++++++++------- src/wallet.cpp | 40 ---------------------------------------- src/wallet.h | 1 - 3 files changed, 39 insertions(+), 48 deletions(-) diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index d2d14ad9f..a03ec7cee 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -12,6 +12,7 @@ #include "netbase.h" #include "timedata.h" #include "util.h" +#include "utilmoneystr.h" #include "wallet.h" #include "walletdb.h" @@ -309,6 +310,42 @@ Value getaddressesbyaccount(const Array& params, bool fHelp) return ret; } +void SendMoney(const CTxDestination &address, CAmount nValue, CWalletTx& wtxNew) +{ + // Check amount + if (nValue <= 0) + throw JSONRPCError(RPC_WALLET_ERROR, "Invalid amount"); + + if (nValue > pwalletMain->GetBalance()) + throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Insufficient funds"); + + string strError; + if (pwalletMain->IsLocked()) + { + strError = "Error: Wallet locked, unable to create transaction!"; + LogPrintf("SendMoney() : %s", strError); + throw JSONRPCError(RPC_WALLET_ERROR, strError); + } + + // Parse Bitcoin address + CScript scriptPubKey = GetScriptForDestination(address); + + // Create and send the transaction + CReserveKey reservekey(pwalletMain); + CAmount nFeeRequired; + if (!pwalletMain->CreateTransaction(scriptPubKey, nValue, wtxNew, reservekey, nFeeRequired, strError)) + { + if (nValue + nFeeRequired > pwalletMain->GetBalance()) + strError = strprintf("Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!", FormatMoney(nFeeRequired)); + LogPrintf("SendMoney() : %s\n", strError); + throw JSONRPCError(RPC_WALLET_ERROR, strError); + } + if (!pwalletMain->CommitTransaction(wtxNew, reservekey)) + throw JSONRPCError(RPC_WALLET_ERROR, "Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."); + + return; +} + Value sendtoaddress(const Array& params, bool fHelp) { if (fHelp || params.size() < 2 || params.size() > 4) @@ -348,9 +385,7 @@ Value sendtoaddress(const Array& params, bool fHelp) EnsureWalletIsUnlocked(); - string strError = pwalletMain->SendMoney(address.Get(), nAmount, wtx); - if (strError != "") - throw JSONRPCError(RPC_WALLET_ERROR, strError); + SendMoney(address.Get(), nAmount, wtx); return wtx.GetHash().GetHex(); } @@ -791,10 +826,7 @@ Value sendfrom(const Array& params, bool fHelp) if (nAmount > nBalance) throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Account has insufficient funds"); - // Send - string strError = pwalletMain->SendMoney(address.Get(), nAmount, wtx); - if (strError != "") - throw JSONRPCError(RPC_WALLET_ERROR, strError); + SendMoney(address.Get(), nAmount, wtx); return wtx.GetHash().GetHex(); } diff --git a/src/wallet.cpp b/src/wallet.cpp index 27dbf61c2..32a64daac 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1587,46 +1587,6 @@ bool CWallet::CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey) return true; } - - - -string CWallet::SendMoney(const CTxDestination &address, CAmount nValue, CWalletTx& wtxNew) -{ - // Check amount - if (nValue <= 0) - return _("Invalid amount"); - if (nValue > GetBalance()) - return _("Insufficient funds"); - - string strError; - if (IsLocked()) - { - strError = _("Error: Wallet locked, unable to create transaction!"); - LogPrintf("SendMoney() : %s", strError); - return strError; - } - - // Parse Bitcoin address - CScript scriptPubKey = GetScriptForDestination(address); - - // Create and send the transaction - CReserveKey reservekey(this); - CAmount nFeeRequired; - if (!CreateTransaction(scriptPubKey, nValue, wtxNew, reservekey, nFeeRequired, strError)) - { - if (nValue + nFeeRequired > GetBalance()) - strError = strprintf(_("Error: This transaction requires a transaction fee of at least %s because of its amount, complexity, or use of recently received funds!"), FormatMoney(nFeeRequired)); - LogPrintf("SendMoney() : %s\n", strError); - return strError; - } - if (!CommitTransaction(wtxNew, reservekey)) - return _("Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."); - - return ""; -} - - - CAmount CWallet::GetMinimumFee(unsigned int nTxBytes, unsigned int nConfirmTarget, const CTxMemPool& pool) { // payTxFee is user-set "I want to pay this much" diff --git a/src/wallet.h b/src/wallet.h index 0244ce236..7bbb6419c 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -288,7 +288,6 @@ public: bool CreateTransaction(CScript scriptPubKey, const CAmount& nValue, CWalletTx& wtxNew, CReserveKey& reservekey, CAmount& nFeeRet, std::string& strFailReason, const CCoinControl *coinControl = NULL); bool CommitTransaction(CWalletTx& wtxNew, CReserveKey& reservekey); - std::string SendMoney(const CTxDestination &address, CAmount nValue, CWalletTx& wtxNew); static CFeeRate minTxFee; static CAmount GetMinimumFee(unsigned int nTxBytes, unsigned int nConfirmTarget, const CTxMemPool& pool); From 65b03282c9cb42fa5de9f2dd70477e44e1e9d37d Mon Sep 17 00:00:00 2001 From: "Ryan X. Charles" Date: Tue, 2 Dec 2014 10:02:44 -0800 Subject: [PATCH 06/47] newlines in strings are invalid JSON Although script_valid.json and script_invalid.json are loaded correctly by the JSON interpreter used by bitcoin core, these same files are often used by other libraries and do not necessarily load correctly due to the fact that newlines contained inside strings are not valid and must instead use the escape character \n. The files tx_valid.json and tx_invalid.json handle this correctly, so I've changed the formatting in script_valid.json and script_invalid.json to mirror those files. --- src/test/data/script_invalid.json | 22 +++++++++------------ src/test/data/script_valid.json | 32 ++++++++++++++----------------- 2 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/test/data/script_invalid.json b/src/test/data/script_invalid.json index c454b5297..86d39b5c2 100644 --- a/src/test/data/script_invalid.json +++ b/src/test/data/script_invalid.json @@ -1,12 +1,10 @@ [ -[" -Format is: [scriptPubKey, scriptSig, flags, ... comments] -It is evaluated as if there was a crediting coinbase transaction with two 0 -pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey, -followed by a spending transaction which spends this output as only input (and -correct prevout hash), using the given scriptSig. All nLockTimes are 0, all -nSequences are max. -"], +["Format is: [scriptPubKey, scriptSig, flags, ... comments]"], +["It is evaluated as if there was a crediting coinbase transaction with two 0"], +["pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey,"], +["followed by a spending transaction which spends this output as only input (and"], +["correct prevout hash), using the given scriptSig. All nLockTimes are 0, all"], +["nSequences are max."], ["", "DEPTH", "P2SH,STRICTENC", "Test the test: we should have an empty stack after scriptSig evaluation"], [" ", "DEPTH", "P2SH,STRICTENC", "and multiple spaces should not change that."], @@ -496,11 +494,9 @@ nSequences are max. ["0 0x02 0x0000 0", "CHECKMULTISIGVERIFY 1", "MINIMALDATA"], -[" -Order of CHECKMULTISIG evaluation tests, inverted by swapping the order of -pubkeys/signatures so they fail due to the STRICTENC rules on validly encoded -signatures and pubkeys. -"], +["Order of CHECKMULTISIG evaluation tests, inverted by swapping the order of"], +["pubkeys/signatures so they fail due to the STRICTENC rules on validly encoded"], +["signatures and pubkeys."], [ "0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501", "2 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 0 2 CHECKMULTISIG NOT", diff --git a/src/test/data/script_valid.json b/src/test/data/script_valid.json index af0f6939c..d3075de64 100644 --- a/src/test/data/script_valid.json +++ b/src/test/data/script_valid.json @@ -1,12 +1,10 @@ [ -[" -Format is: [scriptPubKey, scriptSig, flags, ... comments] -It is evaluated as if there was a crediting coinbase transaction with two 0 -pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey, -followed by a spending transaction which spends this output as only input (and -correct prevout hash), using the given scriptSig. All nLockTimes are 0, all -nSequences are max. -"], +["Format is: [scriptPubKey, scriptSig, flags, ... comments]"], +["It is evaluated as if there was a crediting coinbase transaction with two 0"], +["pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey,"], +["followed by a spending transaction which spends this output as only input (and"], +["correct prevout hash), using the given scriptSig. All nLockTimes are 0, all"], +["nSequences are max."], ["", "DEPTH 0 EQUAL", "P2SH,STRICTENC", "Test the test: we should have an empty stack after scriptSig evaluation"], [" ", "DEPTH 0 EQUAL", "P2SH,STRICTENC", "and multiple spaces should not change that."], @@ -664,16 +662,14 @@ nSequences are max. ["0 0 0x02 0x0000", "CHECKMULTISIGVERIFY 1", ""], ["0 0x02 0x0000 0", "CHECKMULTISIGVERIFY 1", ""], -[" -CHECKMULTISIG evaluation order tests. CHECKMULTISIG evaluates signatures and -pubkeys in a specific order, and will exit early if the number of signatures -left to check is greater than the number of keys left. As STRICTENC fails the -script when it reaches an invalidly encoded signature or pubkey, we can use it -to test the exact order in which signatures and pubkeys are evaluated by -distinguishing CHECKMULTISIG returning false on the stack and the script as a -whole failing. -See also the corresponding inverted versions of these tests in script_invalid.json -"], +["CHECKMULTISIG evaluation order tests. CHECKMULTISIG evaluates signatures and"], +["pubkeys in a specific order, and will exit early if the number of signatures"], +["left to check is greater than the number of keys left. As STRICTENC fails the"], +["script when it reaches an invalidly encoded signature or pubkey, we can use it"], +["to test the exact order in which signatures and pubkeys are evaluated by"], +["distinguishing CHECKMULTISIG returning false on the stack and the script as a"], +["whole failing."], +["See also the corresponding inverted versions of these tests in script_invalid.json"], [ "0 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501 0x47 0x3044022044dc17b0887c161bb67ba9635bf758735bdde503e4b0a0987f587f14a4e1143d022009a215772d49a85dae40d8ca03955af26ad3978a0ff965faa12915e9586249a501", "2 0 0x21 0x02865c40293a680cb9c020e7b1e106d8c1916d3cef99aa431a56d253e69256dac0 2 CHECKMULTISIG NOT", From 4be639eaec05ed1170b8cf0ed77b2a6e9bad732c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Jan=C3=ADk?= Date: Fri, 5 Dec 2014 17:22:06 +0100 Subject: [PATCH 07/47] Use RPC_INVALID_PARAMETER instead of RPC_WALLET_ERROR for invalid amount. No return at the end of void function. --- src/rpcwallet.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/rpcwallet.cpp b/src/rpcwallet.cpp index a03ec7cee..e43eee155 100644 --- a/src/rpcwallet.cpp +++ b/src/rpcwallet.cpp @@ -314,7 +314,7 @@ void SendMoney(const CTxDestination &address, CAmount nValue, CWalletTx& wtxNew) { // Check amount if (nValue <= 0) - throw JSONRPCError(RPC_WALLET_ERROR, "Invalid amount"); + throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid amount"); if (nValue > pwalletMain->GetBalance()) throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, "Insufficient funds"); @@ -342,8 +342,6 @@ void SendMoney(const CTxDestination &address, CAmount nValue, CWalletTx& wtxNew) } if (!pwalletMain->CommitTransaction(wtxNew, reservekey)) throw JSONRPCError(RPC_WALLET_ERROR, "Error: The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here."); - - return; } Value sendtoaddress(const Array& params, bool fHelp) From 8d174d6b5dc012d9191fddc53bb92ea780a4bb77 Mon Sep 17 00:00:00 2001 From: Micha Date: Sun, 7 Dec 2014 17:55:53 +0200 Subject: [PATCH 08/47] Make several small string fixes in linearize-data.py - Add a space after the fixed string prepended to file names when input or output file changes - Clarify the error message when the genesis block is not found in the hash list (...why do we have this at all?) --- contrib/linearize/linearize-data.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/contrib/linearize/linearize-data.py b/contrib/linearize/linearize-data.py index 2dac3a614..e7a8762eb 100755 --- a/contrib/linearize/linearize-data.py +++ b/contrib/linearize/linearize-data.py @@ -148,7 +148,7 @@ class BlockDataCopier: outFname = self.settings['output_file'] else: outFname = "%s/blk%05d.dat" % (self.settings['output'], outFn) - print("Output file" + outFname) + print("Output file " + outFname) self.outF = open(outFname, "wb") self.outF.write(inhdr) @@ -189,7 +189,7 @@ class BlockDataCopier: while self.blkCountOut < len(self.blkindex): if not self.inF: fname = self.inFileName(self.inFn) - print("Input file" + fname) + print("Input file " + fname) try: self.inF = open(fname, "rb") except IOError: @@ -205,7 +205,7 @@ class BlockDataCopier: inMagic = inhdr[:4] if (inMagic != self.settings['netmagic']): - print("Invalid magic:" + inMagic) + print("Invalid magic: " + inMagic) return inLenLE = inhdr[4:] su = struct.unpack(" Date: Mon, 8 Dec 2014 13:55:12 +0200 Subject: [PATCH 09/47] Remove genesis block hash from error --- contrib/linearize/linearize-data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/linearize/linearize-data.py b/contrib/linearize/linearize-data.py index e7a8762eb..f59fe9f6e 100755 --- a/contrib/linearize/linearize-data.py +++ b/contrib/linearize/linearize-data.py @@ -292,7 +292,7 @@ if __name__ == '__main__': blkmap = mkblockmap(blkindex) if not "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f" in blkmap: - print("Genesis block (000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f) not found in hashlist") + print("Genesis block not found in hashlist") else: BlockDataCopier(settings, blkindex, blkmap).run() From b82695b89ff59ed053f7133ef9c192ffae66ab84 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 5 Nov 2014 11:42:51 +0100 Subject: [PATCH 10/47] [Qt] make PaymentServer::ipcParseCommandLine void - the function only returned true, so make it void - add a comment about payment request network detection --- src/qt/bitcoin.cpp | 4 ++-- src/qt/paymentserver.cpp | 7 +++++-- src/qt/paymentserver.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 9872ebc1f..123777a71 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -570,9 +570,9 @@ int main(int argc, char *argv[]) } #ifdef ENABLE_WALLET // Parse URIs on command line -- this can affect Params() - if (!PaymentServer::ipcParseCommandLine(argc, argv)) - exit(0); + PaymentServer::ipcParseCommandLine(argc, argv); #endif + QScopedPointer networkStyle(NetworkStyle::instantiate(QString::fromStdString(Params().NetworkIDString()))); assert(!networkStyle.isNull()); // Allow for separate UI settings for testnets diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index 707de5529..fbf5877f2 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -184,7 +184,7 @@ void PaymentServer::LoadRootCAs(X509_STORE* _store) // Warning: ipcSendCommandLine() is called early in init, // so don't use "emit message()", but "QMessageBox::"! // -bool PaymentServer::ipcParseCommandLine(int argc, char* argv[]) +void PaymentServer::ipcParseCommandLine(int argc, char* argv[]) { for (int i = 1; i < argc; i++) { @@ -192,6 +192,10 @@ bool PaymentServer::ipcParseCommandLine(int argc, char* argv[]) if (arg.startsWith("-")) continue; + // If the bitcoin: URI contains a payment request, we are not able to detect the + // network as that would require fetching and parsing the payment request. + // That means clicking such an URI which contains a testnet payment request + // will start a mainnet instance and throw a "wrong network" error. if (arg.startsWith(BITCOIN_IPC_PREFIX, Qt::CaseInsensitive)) // bitcoin: URI { savedPaymentRequests.append(arg); @@ -235,7 +239,6 @@ bool PaymentServer::ipcParseCommandLine(int argc, char* argv[]) qWarning() << "PaymentServer::ipcSendCommandLine : Payment request file does not exist: " << arg; } } - return true; } // diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index 25b08cde4..0103cbdd0 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -59,7 +59,7 @@ class PaymentServer : public QObject public: // Parse URIs on command line // Returns false on error - static bool ipcParseCommandLine(int argc, char *argv[]); + static void ipcParseCommandLine(int argc, char *argv[]); // Returns true if there were URIs on the command line // which were successfully sent to an already-running From 814429dc722837dbe57965c6a37f4ea57206d270 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 5 Nov 2014 11:47:57 +0100 Subject: [PATCH 11/47] [Qt] add BIP70/BIP71 constants for all messages and mime types - also rename current ones to match the new ones - remove constant from guiconstant.h and add it to paymentserver.cpp --- src/qt/guiconstants.h | 3 --- src/qt/paymentserver.cpp | 30 ++++++++++++++++++------------ 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/qt/guiconstants.h b/src/qt/guiconstants.h index f23175049..8f3e476fd 100644 --- a/src/qt/guiconstants.h +++ b/src/qt/guiconstants.h @@ -38,9 +38,6 @@ static const int TOOLTIP_WRAP_THRESHOLD = 80; /* Maximum allowed URI length */ static const int MAX_URI_LENGTH = 255; -/* Maximum somewhat-sane size of a payment request file */ -static const int MAX_PAYMENT_REQUEST_SIZE = 50000; // bytes - /* QRCodeDialog -- size of exported QR Code image */ #define EXPORT_IMAGE_SIZE 256 diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index fbf5877f2..417945bbf 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -5,7 +5,6 @@ #include "paymentserver.h" #include "bitcoinunits.h" -#include "guiconstants.h" #include "guiutil.h" #include "optionsmodel.h" @@ -19,6 +18,7 @@ #include #include + #include #include #include @@ -51,9 +51,15 @@ using namespace boost; const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds const QString BITCOIN_IPC_PREFIX("bitcoin:"); -const char* BITCOIN_REQUEST_MIMETYPE = "application/bitcoin-paymentrequest"; -const char* BITCOIN_PAYMENTACK_MIMETYPE = "application/bitcoin-paymentack"; -const char* BITCOIN_PAYMENTACK_CONTENTTYPE = "application/bitcoin-payment"; +// BIP70 payment protocol messages +const char* BIP70_MESSAGE_PAYMENTACK = "PaymentACK"; +const char* BIP70_MESSAGE_PAYMENTREQUEST = "PaymentRequest"; +// BIP71 payment protocol media types +const char* BIP71_MIMETYPE_PAYMENT = "application/bitcoin-payment"; +const char* BIP71_MIMETYPE_PAYMENTACK = "application/bitcoin-paymentack"; +const char* BIP71_MIMETYPE_PAYMENTREQUEST = "application/bitcoin-paymentrequest"; +// BIP70 max payment request size in bytes (DoS protection) +const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE = 50000; X509_STORE* PaymentServer::certStore = NULL; void PaymentServer::freeCertStore() @@ -486,7 +492,7 @@ bool PaymentServer::readPaymentRequest(const QString& filename, PaymentRequestPl return false; } - if (f.size() > MAX_PAYMENT_REQUEST_SIZE) + if (f.size() > BIP70_MAX_PAYMENTREQUEST_SIZE) { qWarning() << "PaymentServer::readPaymentRequest : " << filename << " too large"; return false; @@ -583,10 +589,10 @@ bool PaymentServer::processPaymentRequest(PaymentRequestPlus& request, SendCoins void PaymentServer::fetchRequest(const QUrl& url) { QNetworkRequest netRequest; - netRequest.setAttribute(QNetworkRequest::User, "PaymentRequest"); + netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTREQUEST); netRequest.setUrl(url); netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str()); - netRequest.setRawHeader("Accept", BITCOIN_REQUEST_MIMETYPE); + netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTREQUEST); netManager->get(netRequest); } @@ -597,11 +603,11 @@ void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipien return; QNetworkRequest netRequest; - netRequest.setAttribute(QNetworkRequest::User, "PaymentACK"); + netRequest.setAttribute(QNetworkRequest::User, BIP70_MESSAGE_PAYMENTACK); netRequest.setUrl(QString::fromStdString(details.payment_url())); - netRequest.setHeader(QNetworkRequest::ContentTypeHeader, BITCOIN_PAYMENTACK_CONTENTTYPE); + netRequest.setHeader(QNetworkRequest::ContentTypeHeader, BIP71_MIMETYPE_PAYMENT); netRequest.setRawHeader("User-Agent", CLIENT_NAME.c_str()); - netRequest.setRawHeader("Accept", BITCOIN_PAYMENTACK_MIMETYPE); + netRequest.setRawHeader("Accept", BIP71_MIMETYPE_PAYMENTACK); payments::Payment payment; payment.set_merchant_data(details.merchant_data()); @@ -663,7 +669,7 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) QByteArray data = reply->readAll(); QString requestType = reply->request().attribute(QNetworkRequest::User).toString(); - if (requestType == "PaymentRequest") + if (requestType == BIP70_MESSAGE_PAYMENTREQUEST) { PaymentRequestPlus request; SendCoinsRecipient recipient; @@ -679,7 +685,7 @@ void PaymentServer::netRequestFinished(QNetworkReply* reply) return; } - else if (requestType == "PaymentACK") + else if (requestType == BIP70_MESSAGE_PAYMENTACK) { payments::PaymentACK paymentACK; if (!paymentACK.ParseFromArray(data.data(), data.size())) From 1ec753f7340677ac4fbef53fbdc73feff344719d Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 5 Nov 2014 12:05:29 +0100 Subject: [PATCH 12/47] [Qt] ensure socket is set to NULL in PaymentServer::ipcSendCommandLine --- src/qt/paymentserver.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index 417945bbf..c65c98070 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -263,6 +263,7 @@ bool PaymentServer::ipcSendCommandLine() if (!socket->waitForConnected(BITCOIN_IPC_CONNECT_TIMEOUT)) { delete socket; + socket = NULL; return false; } @@ -271,12 +272,14 @@ bool PaymentServer::ipcSendCommandLine() out.setVersion(QDataStream::Qt_4_0); out << r; out.device()->seek(0); + socket->write(block); socket->flush(); - socket->waitForBytesWritten(BITCOIN_IPC_CONNECT_TIMEOUT); socket->disconnectFromServer(); + delete socket; + socket = NULL; fResult = true; } From 2284ccbd13f145e913e2a77ba5ddd04d995bce14 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Tue, 18 Nov 2014 08:46:03 +0100 Subject: [PATCH 13/47] [Qt] remove dup lock that is done in SetAddressBook() --- src/qt/paymentserver.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index c65c98070..95f793755 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -628,7 +628,6 @@ void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipien else { CPubKey newKey; if (wallet->GetKeyFromPool(newKey)) { - LOCK(wallet->cs_wallet); // SetAddressBook CKeyID keyID = newKey.GetID(); wallet->SetAddressBook(keyID, strAccount, "refund"); From 31f84944a5f6f1aa07e36e7700e9ab16be88aa42 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Wed, 19 Nov 2014 12:53:57 +0100 Subject: [PATCH 14/47] [Qt] add BIP70 payment request size DoS protection for URIs - current code only does this for payment request files, which are used on Mac - also rename readPaymentRequest to readPaymentRequestFromFile, so it's obvious that function only handles payment request files and not URIs - small logging changes in readPaymentRequestFromFile --- src/qt/paymentserver.cpp | 44 +++++++++++++++++++++++++++++----------- src/qt/paymentserver.h | 2 +- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index 95f793755..d6e396b21 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -226,7 +226,7 @@ void PaymentServer::ipcParseCommandLine(int argc, char* argv[]) savedPaymentRequests.append(arg); PaymentRequestPlus request; - if (readPaymentRequest(arg, request)) + if (readPaymentRequestFromFile(arg, request)) { if (request.getDetails().network() == "main") { @@ -452,7 +452,7 @@ void PaymentServer::handleURIOrFile(const QString& s) { PaymentRequestPlus request; SendCoinsRecipient recipient; - if (!readPaymentRequest(s, request)) + if (!readPaymentRequestFromFile(s, request)) { emit message(tr("Payment request file handling"), tr("Payment request file cannot be read! This can be caused by an invalid payment request file."), @@ -486,18 +486,25 @@ void PaymentServer::handleURIConnection() handleURIOrFile(msg); } -bool PaymentServer::readPaymentRequest(const QString& filename, PaymentRequestPlus& request) +// +// Warning: readPaymentRequestFromFile() is used in ipcSendCommandLine() +// so don't use "emit message()", but "QMessageBox::"! +// +bool PaymentServer::readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request) { QFile f(filename); - if (!f.open(QIODevice::ReadOnly)) - { - qWarning() << "PaymentServer::readPaymentRequest : Failed to open " << filename; + if (!f.open(QIODevice::ReadOnly)) { + qWarning() << QString("PaymentServer::%1: Failed to open %2").arg(__func__).arg(filename); return false; } - if (f.size() > BIP70_MAX_PAYMENTREQUEST_SIZE) - { - qWarning() << "PaymentServer::readPaymentRequest : " << filename << " too large"; + // BIP70 DoS protection + if (f.size() > BIP70_MAX_PAYMENTREQUEST_SIZE) { + qWarning() << QString("PaymentServer::%1: Payment request %2 is too large (%3 bytes, allowed %4 bytes).") + .arg(__func__) + .arg(filename) + .arg(f.size()) + .arg(BIP70_MAX_PAYMENTREQUEST_SIZE); return false; } @@ -657,13 +664,26 @@ void PaymentServer::fetchPaymentACK(CWallet* wallet, SendCoinsRecipient recipien void PaymentServer::netRequestFinished(QNetworkReply* reply) { reply->deleteLater(); - if (reply->error() != QNetworkReply::NoError) - { + + // BIP70 DoS protection + if (reply->size() > BIP70_MAX_PAYMENTREQUEST_SIZE) { + QString msg = tr("Payment request %2 is too large (%3 bytes, allowed %4 bytes).") + .arg(__func__) + .arg(reply->request().url().toString()) + .arg(reply->size()) + .arg(BIP70_MAX_PAYMENTREQUEST_SIZE); + + qWarning() << QString("PaymentServer::%1:").arg(__func__) << msg; + emit message(tr("Payment request DoS protection"), msg, CClientUIInterface::MSG_ERROR); + return; + } + + if (reply->error() != QNetworkReply::NoError) { QString msg = tr("Error communicating with %1: %2") .arg(reply->request().url().toString()) .arg(reply->errorString()); - qWarning() << "PaymentServer::netRequestFinished : " << msg; + qWarning() << "PaymentServer::netRequestFinished: " << msg; emit message(tr("Payment request error"), msg, CClientUIInterface::MSG_ERROR); return; } diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index 0103cbdd0..9acd99723 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -118,7 +118,7 @@ protected: bool eventFilter(QObject *object, QEvent *event); private: - static bool readPaymentRequest(const QString& filename, PaymentRequestPlus& request); + static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request); bool processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient); void fetchRequest(const QUrl& url); From 4333e26c8e89e3d02cfb4d3464108b1a15175e2b Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Fri, 5 Dec 2014 09:39:23 +0100 Subject: [PATCH 15/47] [Qt] add BIP70 DoS protection test - this test required to make readPaymentRequestFromFile() public in order to be able to is it in paymentservertests.cpp --- src/qt/paymentserver.h | 7 ++++++- src/qt/test/paymentservertests.cpp | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index 9acd99723..42940664e 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -52,6 +52,9 @@ QT_END_NAMESPACE class CWallet; +// BIP70 max payment request size in bytes (DoS protection) +extern const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE; + class PaymentServer : public QObject { Q_OBJECT @@ -85,6 +88,9 @@ public: // OptionsModel is used for getting proxy settings and display unit void setOptionsModel(OptionsModel *optionsModel); + // This is now public, because we use it in paymentservertests.cpp + static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request); + signals: // Fired when a valid payment request is received void receivedPaymentRequest(SendCoinsRecipient); @@ -118,7 +124,6 @@ protected: bool eventFilter(QObject *object, QEvent *event); private: - static bool readPaymentRequestFromFile(const QString& filename, PaymentRequestPlus& request); bool processPaymentRequest(PaymentRequestPlus& request, SendCoinsRecipient& recipient); void fetchRequest(const QUrl& url); diff --git a/src/qt/test/paymentservertests.cpp b/src/qt/test/paymentservertests.cpp index 84cab01c5..8f49cb946 100644 --- a/src/qt/test/paymentservertests.cpp +++ b/src/qt/test/paymentservertests.cpp @@ -7,6 +7,7 @@ #include "optionsmodel.h" #include "paymentrequestdata.h" +#include "random.h" #include "util.h" #include "utilstrencodings.h" @@ -108,6 +109,17 @@ void PaymentServerTests::paymentServerTests() r.paymentRequest.getMerchant(caStore, merchant); QCOMPARE(merchant, QString("")); + // Just get some random data big enough to trigger BIP70 DoS protection + unsigned char randData[BIP70_MAX_PAYMENTREQUEST_SIZE + 1]; + GetRandBytes(randData, sizeof(randData)); + // Write data to a temp file: + QTemporaryFile tempFile; + tempFile.open(); + tempFile.write((const char*)randData, sizeof(randData)); + tempFile.close(); + // Trigger BIP70 DoS protection + QCOMPARE(PaymentServer::readPaymentRequestFromFile(tempFile.fileName(), r.paymentRequest), false); + delete server; } From 5ec654b8ceb4c5f9aafda2b62a0aa6639d738654 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Fri, 5 Dec 2014 09:40:58 +0100 Subject: [PATCH 16/47] [Qt] update paymentserver license and cleanup ordering --- src/qt/paymentrequestplus.cpp | 4 ++-- src/qt/paymentrequestplus.h | 4 ++-- src/qt/paymentserver.cpp | 6 +++--- src/qt/paymentserver.h | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/qt/paymentrequestplus.cpp b/src/qt/paymentrequestplus.cpp index 7aefffe24..a40b5bbcd 100644 --- a/src/qt/paymentrequestplus.cpp +++ b/src/qt/paymentrequestplus.cpp @@ -1,5 +1,5 @@ -// Copyright (c) 2011-2013 The Bitcoin developers -// Distributed under the MIT/X11 software license, see the accompanying +// Copyright (c) 2011-2014 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. // diff --git a/src/qt/paymentrequestplus.h b/src/qt/paymentrequestplus.h index 91c704c52..fbc3a0926 100644 --- a/src/qt/paymentrequestplus.h +++ b/src/qt/paymentrequestplus.h @@ -1,5 +1,5 @@ -// Copyright (c) 2011-2013 The Bitcoin developers -// Distributed under the MIT/X11 software license, see the accompanying +// Copyright (c) 2011-2014 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_QT_PAYMENTREQUESTPLUS_H diff --git a/src/qt/paymentserver.cpp b/src/qt/paymentserver.cpp index d6e396b21..bd3dab41a 100644 --- a/src/qt/paymentserver.cpp +++ b/src/qt/paymentserver.cpp @@ -1,5 +1,5 @@ -// Copyright (c) 2011-2013 The Bitcoin developers -// Distributed under the MIT/X11 software license, see the accompanying +// Copyright (c) 2011-2014 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "paymentserver.h" @@ -46,8 +46,8 @@ #include #endif -using namespace std; using namespace boost; +using namespace std; const int BITCOIN_IPC_CONNECT_TIMEOUT = 1000; // milliseconds const QString BITCOIN_IPC_PREFIX("bitcoin:"); diff --git a/src/qt/paymentserver.h b/src/qt/paymentserver.h index 42940664e..e1305b943 100644 --- a/src/qt/paymentserver.h +++ b/src/qt/paymentserver.h @@ -1,5 +1,5 @@ // Copyright (c) 2011-2014 The Bitcoin developers -// Distributed under the MIT/X11 software license, see the accompanying +// Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #ifndef BITCOIN_QT_PAYMENTSERVER_H @@ -40,6 +40,8 @@ class OptionsModel; +class CWallet; + QT_BEGIN_NAMESPACE class QApplication; class QByteArray; @@ -50,8 +52,6 @@ class QSslError; class QUrl; QT_END_NAMESPACE -class CWallet; - // BIP70 max payment request size in bytes (DoS protection) extern const qint64 BIP70_MAX_PAYMENTREQUEST_SIZE; From 868d041622e2f589ab4535c30ce683534b6d4f71 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 11 Nov 2014 16:41:44 -0800 Subject: [PATCH 17/47] Remove coinbase-dependant transactions during reorg. This still leaves transactions in mempool that are potentially invalid if the maturity period has been reorged out of, but at least they're not missing inputs entirely. --- src/main.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 70e3973e6..3a2c167e8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1892,9 +1892,8 @@ bool static DisconnectTip(CValidationState &state) { // ignore validation errors in resurrected transactions list removed; CValidationState stateDummy; - if (!tx.IsCoinBase()) - if (!AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) - mempool.remove(tx, removed, true); + if (tx.IsCoinBase() || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) + mempool.remove(tx, removed, true); } mempool.check(pcoinsTip); // Update chainActive and related variables. From 723d12c098456e7682e641076e76468a9fb0cec0 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 11 Nov 2014 20:57:54 -0800 Subject: [PATCH 18/47] Remove txn which are invalidated by coinbase maturity during reorg --- src/main.cpp | 1 + src/txmempool.cpp | 26 ++++++++++++++++++++++++++ src/txmempool.h | 1 + 3 files changed, 28 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 3a2c167e8..9e1c41ada 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1895,6 +1895,7 @@ bool static DisconnectTip(CValidationState &state) { if (tx.IsCoinBase() || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) mempool.remove(tx, removed, true); } + mempool.removeCoinbaseSpends(pcoinsTip, pindexDelete->nHeight); mempool.check(pcoinsTip); // Update chainActive and related variables. UpdateTip(pindexDelete->pprev); diff --git a/src/txmempool.cpp b/src/txmempool.cpp index e13f1cc35..ff04a8ad9 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -6,6 +6,7 @@ #include "txmempool.h" #include "clientversion.h" +#include "main.h" // for COINBASE_MATURITY #include "streams.h" #include "util.h" #include "utilmoneystr.h" @@ -453,6 +454,31 @@ void CTxMemPool::remove(const CTransaction &tx, std::list& removed } } +void CTxMemPool::removeCoinbaseSpends(const CCoinsViewCache *pcoins, unsigned int nMemPoolHeight) +{ + // Remove transactions spending a coinbase which are now immature + LOCK(cs); + list transactionsToRemove; + for (std::map::const_iterator it = mapTx.begin(); it != mapTx.end(); it++) { + const CTransaction& tx = it->second.GetTx(); + BOOST_FOREACH(const CTxIn& txin, tx.vin) { + std::map::const_iterator it2 = mapTx.find(txin.prevout.hash); + if (it2 != mapTx.end()) + continue; + const CCoins *coins = pcoins->AccessCoins(txin.prevout.hash); + if (fSanityCheck) assert(coins); + if (!coins || (coins->IsCoinBase() && nMemPoolHeight - coins->nHeight < COINBASE_MATURITY)) { + transactionsToRemove.push_back(tx); + break; + } + } + } + BOOST_FOREACH(const CTransaction& tx, transactionsToRemove) { + list removed; + remove(tx, removed, true); + } +} + void CTxMemPool::removeConflicts(const CTransaction &tx, std::list& removed) { // Remove transactions which depend on inputs of tx, recursively diff --git a/src/txmempool.h b/src/txmempool.h index d00bdd061..f671352b5 100644 --- a/src/txmempool.h +++ b/src/txmempool.h @@ -113,6 +113,7 @@ public: bool addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry); void remove(const CTransaction &tx, std::list& removed, bool fRecursive = false); + void removeCoinbaseSpends(const CCoinsViewCache *pcoins, unsigned int nMemPoolHeight); void removeConflicts(const CTransaction &tx, std::list& removed); void removeForBlock(const std::vector& vtx, unsigned int nBlockHeight, std::list& conflicts); From b7b4318f3a65d6e55d44bff5da1091ec0b3a26d2 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 11 Nov 2014 21:06:15 -0800 Subject: [PATCH 19/47] Make CTxMemPool::check more thourough by using CheckInputs --- src/txmempool.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/txmempool.cpp b/src/txmempool.cpp index ff04a8ad9..6ecd64636 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -6,7 +6,7 @@ #include "txmempool.h" #include "clientversion.h" -#include "main.h" // for COINBASE_MATURITY +#include "main.h" #include "streams.h" #include "util.h" #include "utilmoneystr.h" @@ -539,17 +539,22 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const uint64_t checkTotal = 0; + CCoinsViewCache mempoolDuplicate(const_cast(pcoins)); + LOCK(cs); + list waitingOnDependants; for (std::map::const_iterator it = mapTx.begin(); it != mapTx.end(); it++) { unsigned int i = 0; checkTotal += it->second.GetTxSize(); const CTransaction& tx = it->second.GetTx(); + bool fDependsWait = false; BOOST_FOREACH(const CTxIn &txin, tx.vin) { // Check that every mempool transaction's inputs refer to available coins, or other mempool tx's. std::map::const_iterator it2 = mapTx.find(txin.prevout.hash); if (it2 != mapTx.end()) { const CTransaction& tx2 = it2->second.GetTx(); assert(tx2.vout.size() > txin.prevout.n && !tx2.vout[txin.prevout.n].IsNull()); + fDependsWait = true; } else { const CCoins* coins = pcoins->AccessCoins(txin.prevout.hash); assert(coins && coins->IsAvailable(txin.prevout.n)); @@ -561,6 +566,29 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const assert(it3->second.n == i); i++; } + if (fDependsWait) + waitingOnDependants.push_back(&it->second); + else { + CValidationState state; CTxUndo undo; + assert(CheckInputs(tx, state, mempoolDuplicate, false, 0, false, NULL)); + UpdateCoins(tx, state, mempoolDuplicate, undo, 1000000); + } + } + unsigned int stepsSinceLastRemove = 0; + while (!waitingOnDependants.empty()) { + const CTxMemPoolEntry* entry = waitingOnDependants.front(); + waitingOnDependants.pop_front(); + CValidationState state; + if (!mempoolDuplicate.HaveInputs(entry->GetTx())) { + waitingOnDependants.push_back(entry); + stepsSinceLastRemove++; + assert(stepsSinceLastRemove < waitingOnDependants.size()); + } else { + assert(CheckInputs(entry->GetTx(), state, mempoolDuplicate, false, 0, false, NULL)); + CTxUndo undo; + UpdateCoins(entry->GetTx(), state, mempoolDuplicate, undo, 1000000); + stepsSinceLastRemove = 0; + } } for (std::map::const_iterator it = mapNextTx.begin(); it != mapNextTx.end(); it++) { uint256 hash = it->second.ptx->GetHash(); From 7fd6219af7006fddc4b675236bcd43dd7a9eb553 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 18 Nov 2014 14:57:20 -0800 Subject: [PATCH 20/47] Make CTxMemPool::remove more effecient by avoiding recursion --- src/txmempool.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/txmempool.cpp b/src/txmempool.cpp index 6ecd64636..840eb536b 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -427,26 +427,32 @@ bool CTxMemPool::addUnchecked(const uint256& hash, const CTxMemPoolEntry &entry) } -void CTxMemPool::remove(const CTransaction &tx, std::list& removed, bool fRecursive) +void CTxMemPool::remove(const CTransaction &origTx, std::list& removed, bool fRecursive) { // Remove transaction from memory pool { LOCK(cs); - uint256 hash = tx.GetHash(); - if (fRecursive) { - for (unsigned int i = 0; i < tx.vout.size(); i++) { - std::map::iterator it = mapNextTx.find(COutPoint(hash, i)); - if (it == mapNextTx.end()) - continue; - remove(*it->second.ptx, removed, true); - } - } - if (mapTx.count(hash)) + std::deque txToRemove; + txToRemove.push_back(origTx.GetHash()); + while (!txToRemove.empty()) { - removed.push_front(tx); + uint256 hash = txToRemove.front(); + txToRemove.pop_front(); + if (!mapTx.count(hash)) + continue; + const CTransaction& tx = mapTx[hash].GetTx(); + if (fRecursive) { + for (unsigned int i = 0; i < tx.vout.size(); i++) { + std::map::iterator it = mapNextTx.find(COutPoint(hash, i)); + if (it == mapNextTx.end()) + continue; + txToRemove.push_back(it->second.ptx->GetHash()); + } + } BOOST_FOREACH(const CTxIn& txin, tx.vin) mapNextTx.erase(txin.prevout); + removed.push_back(tx); totalTxSize -= mapTx[hash].GetTxSize(); mapTx.erase(hash); nTransactionsUpdated++; From 34318d7fad7922ce56ff47908ff70e2c8a42ee56 Mon Sep 17 00:00:00 2001 From: Gavin Andresen Date: Mon, 24 Nov 2014 15:18:05 -0500 Subject: [PATCH 21/47] RPC-test based on invalidateblock for mempool coinbase spends --- qa/pull-tester/rpc-tests.sh | 1 + qa/rpc-tests/mempool_coinbase_spends.py | 94 +++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100755 qa/rpc-tests/mempool_coinbase_spends.py diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh index 071935759..d6ee00bb7 100755 --- a/qa/pull-tester/rpc-tests.sh +++ b/qa/pull-tester/rpc-tests.sh @@ -25,6 +25,7 @@ if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then ${BUILDDIR}/qa/rpc-tests/rest.py --srcdir "${BUILDDIR}/src" ${BUILDDIR}/qa/rpc-tests/mempool_spendcoinbase.py --srcdir "${BUILDDIR}/src" ${BUILDDIR}/qa/rpc-tests/httpbasics.py --srcdir "${BUILDDIR}/src" + ${BUILDDIR}/qa/rpc-tests/mempool_coinbase_spends.py --srcdir "${BUILDDIR}/src" #${BUILDDIR}/qa/rpc-tests/forknotify.py --srcdir "${BUILDDIR}/src" else echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled" diff --git a/qa/rpc-tests/mempool_coinbase_spends.py b/qa/rpc-tests/mempool_coinbase_spends.py new file mode 100755 index 000000000..7b4371276 --- /dev/null +++ b/qa/rpc-tests/mempool_coinbase_spends.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python2 +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +# +# Test re-org scenarios with a mempool that contains transactions +# that spend (directly or indirectly) coinbase transactions. +# + +from test_framework import BitcoinTestFramework +from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException +from util import * +import os +import shutil + +# Create one-input, one-output, no-fee transaction: +class MempoolCoinbaseTest(BitcoinTestFramework): + + alert_filename = None # Set by setup_network + + def setup_network(self): + args = ["-checkmempool", "-debug=mempool"] + self.nodes = [] + self.nodes.append(start_node(0, self.options.tmpdir, args)) + self.nodes.append(start_node(1, self.options.tmpdir, args)) + connect_nodes(self.nodes[1], 0) + self.is_network_split = False + self.sync_all + + def create_tx(self, from_txid, to_address, amount): + inputs = [{ "txid" : from_txid, "vout" : 0}] + outputs = { to_address : amount } + rawtx = self.nodes[0].createrawtransaction(inputs, outputs) + signresult = self.nodes[0].signrawtransaction(rawtx) + assert_equal(signresult["complete"], True) + return signresult["hex"] + + def run_test(self): + start_count = self.nodes[0].getblockcount() + + # Mine three blocks. After this, nodes[0] blocks + # 101, 102, and 103 are spend-able. + new_blocks = self.nodes[1].setgenerate(True, 4) + self.sync_all() + + node0_address = self.nodes[0].getnewaddress() + node1_address = self.nodes[1].getnewaddress() + + # Three scenarios for re-orging coinbase spends in the memory pool: + # 1. Direct coinbase spend : spend_101 + # 2. Indirect (coinbase spend in chain, child in mempool) : spend_102 and spend_102_1 + # 3. Indirect (coinbase and child both in chain) : spend_103 and spend_103_1 + # Use invalidatblock to make all of the above coinbase spends invalid (immature coinbase), + # and make sure the mempool code behaves correctly. + b = [ self.nodes[0].getblockhash(n) for n in range(102, 105) ] + coinbase_txids = [ self.nodes[0].getblock(h)['tx'][0] for h in b ] + spend_101_raw = self.create_tx(coinbase_txids[0], node1_address, 50) + spend_102_raw = self.create_tx(coinbase_txids[1], node0_address, 50) + spend_103_raw = self.create_tx(coinbase_txids[2], node0_address, 50) + + # Broadcast and mine spend_102 and 103: + spend_102_id = self.nodes[0].sendrawtransaction(spend_102_raw) + spend_103_id = self.nodes[0].sendrawtransaction(spend_103_raw) + self.nodes[0].setgenerate(True, 1) + + # Create 102_1 and 103_1: + spend_102_1_raw = self.create_tx(spend_102_id, node1_address, 50) + spend_103_1_raw = self.create_tx(spend_103_id, node1_address, 50) + + # Broadcast and mine 103_1: + spend_103_1_id = self.nodes[0].sendrawtransaction(spend_103_1_raw) + self.nodes[0].setgenerate(True, 1) + + # ... now put spend_101 and spend_102_1 in memory pools: + spend_101_id = self.nodes[0].sendrawtransaction(spend_101_raw) + spend_102_1_id = self.nodes[0].sendrawtransaction(spend_102_1_raw) + + self.sync_all() + + assert_equal(set(self.nodes[0].getrawmempool()), set([ spend_101_id, spend_102_1_id ])) + + # Use invalidateblock to re-org back and make all those coinbase spends + # immature/invalid: + for node in self.nodes: + node.invalidateblock(new_blocks[0]) + + self.sync_all() + + # mempool should be empty. + assert_equal(set(self.nodes[0].getrawmempool()), set()) + +if __name__ == '__main__': + MempoolCoinbaseTest().main() From 6e6a36ce308ae81529027b6e18f7ba1aeabe8dd7 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 9 Dec 2014 10:16:58 +0100 Subject: [PATCH 22/47] contrib: show pull # in prompt for github-merge script --- contrib/devtools/github-merge.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/contrib/devtools/github-merge.sh b/contrib/devtools/github-merge.sh index 3217a0619..6f68496ed 100755 --- a/contrib/devtools/github-merge.sh +++ b/contrib/devtools/github-merge.sh @@ -136,6 +136,9 @@ else echo "Dropping you on a shell so you can try building/testing the merged source." >&2 echo "Run 'git diff HEAD~' to show the changes being merged." >&2 echo "Type 'exit' when done." >&2 + if [[ -f /etc/debian_version ]]; then # Show pull number in prompt on Debian default prompt + export debian_chroot="$PULL" + fi bash -i read -p "Press 'm' to accept the merge. " -n 1 -r >&2 echo From 1577df986e8f35d4c2bff27873187a9079ee3226 Mon Sep 17 00:00:00 2001 From: mrbandrews Date: Thu, 4 Dec 2014 16:09:58 -0500 Subject: [PATCH 23/47] Port of walletbackup.sh to Python. --- qa/rpc-tests/walletbackup.py | 200 +++++++++++++++++++++++ qa/rpc-tests/walletbackup.sh | 297 ----------------------------------- 2 files changed, 200 insertions(+), 297 deletions(-) create mode 100755 qa/rpc-tests/walletbackup.py delete mode 100755 qa/rpc-tests/walletbackup.sh diff --git a/qa/rpc-tests/walletbackup.py b/qa/rpc-tests/walletbackup.py new file mode 100755 index 000000000..6a42d9dfa --- /dev/null +++ b/qa/rpc-tests/walletbackup.py @@ -0,0 +1,200 @@ +#!/usr/bin/env python2 +# Copyright (c) 2014 The Bitcoin Core developers +# Distributed under the MIT/X11 software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +""" +Exercise the wallet backup code. Ported from walletbackup.sh. + +Test case is: +4 nodes. 1 2 and 3 send transactions between each other, +fourth node is a miner. +1 2 3 each mine a block to start, then +Miner creates 100 blocks so 1 2 3 each have 50 mature +coins to spend. +Then 5 iterations of 1/2/3 sending coins amongst +themselves to get transactions in the wallets, +and the miner mining one block. + +Wallets are backed up using dumpwallet/backupwallet. +Then 5 more iterations of transactions and mining a block. + +Miner then generates 101 more blocks, so any +transaction fees paid mature. + +Sanity check: + Sum(1,2,3,4 balances) == 114*50 + +1/2/3 are shutdown, and their wallets erased. +Then restore using wallet.dat backup. And +confirm 1/2/3/4 balances are same as before. + +Shutdown again, restore using importwallet, +and confirm again balances are correct. +""" + +from test_framework import BitcoinTestFramework +from util import * +from random import randint +import logging +logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO) + +class WalletBackupTest(BitcoinTestFramework): + + def setup_chain(self): + logging.info("Initializing test directory "+self.options.tmpdir) + initialize_chain_clean(self.options.tmpdir, 4) + + # This mirrors how the network was setup in the bash test + def setup_network(self, split=False): + # nodes 1, 2,3 are spenders, let's give them a keypool=100 + extra_args = [["-keypool=100"], ["-keypool=100"], ["-keypool=100"], []] + self.nodes = start_nodes(4, self.options.tmpdir, extra_args) + connect_nodes(self.nodes[0], 3) + connect_nodes(self.nodes[1], 3) + connect_nodes(self.nodes[2], 3) + connect_nodes(self.nodes[2], 0) + self.is_network_split=False + self.sync_all() + + def one_send(self, from_node, to_address): + if (randint(1,2) == 1): + amount = Decimal(randint(1,10)) / Decimal(10) + self.nodes[from_node].sendtoaddress(to_address, amount) + + def do_one_round(self): + a0 = self.nodes[0].getnewaddress() + a1 = self.nodes[1].getnewaddress() + a2 = self.nodes[2].getnewaddress() + + self.one_send(0, a1) + self.one_send(0, a2) + self.one_send(1, a0) + self.one_send(1, a2) + self.one_send(2, a0) + self.one_send(2, a1) + + # Have the miner (node3) mine a block. + # Must sync mempools before mining. + sync_mempools(self.nodes) + self.nodes[3].setgenerate(True, 1) + + # As above, this mirrors the original bash test. + def start_three(self): + self.nodes[0] = start_node(0, self.options.tmpdir) + self.nodes[1] = start_node(1, self.options.tmpdir) + self.nodes[2] = start_node(2, self.options.tmpdir) + connect_nodes(self.nodes[0], 3) + connect_nodes(self.nodes[1], 3) + connect_nodes(self.nodes[2], 3) + connect_nodes(self.nodes[2], 0) + + def stop_three(self): + stop_node(self.nodes[0], 0) + stop_node(self.nodes[1], 1) + stop_node(self.nodes[2], 2) + + def erase_three(self): + os.remove(self.options.tmpdir + "/node0/regtest/wallet.dat") + os.remove(self.options.tmpdir + "/node1/regtest/wallet.dat") + os.remove(self.options.tmpdir + "/node2/regtest/wallet.dat") + + def run_test(self): + logging.info("Generating initial blockchain") + self.nodes[0].setgenerate(True, 1) + sync_blocks(self.nodes) + self.nodes[1].setgenerate(True, 1) + sync_blocks(self.nodes) + self.nodes[2].setgenerate(True, 1) + sync_blocks(self.nodes) + self.nodes[3].setgenerate(True, 100) + sync_blocks(self.nodes) + + assert_equal(self.nodes[0].getbalance(), 50) + assert_equal(self.nodes[1].getbalance(), 50) + assert_equal(self.nodes[2].getbalance(), 50) + assert_equal(self.nodes[3].getbalance(), 0) + + logging.info("Creating transactions") + # Five rounds of sending each other transactions. + for i in range(5): + self.do_one_round() + + logging.info("Backing up") + tmpdir = self.options.tmpdir + self.nodes[0].backupwallet(tmpdir + "/node0/wallet.bak") + self.nodes[0].dumpwallet(tmpdir + "/node0/wallet.dump") + self.nodes[1].backupwallet(tmpdir + "/node1/wallet.bak") + self.nodes[1].dumpwallet(tmpdir + "/node1/wallet.dump") + self.nodes[2].backupwallet(tmpdir + "/node2/wallet.bak") + self.nodes[2].dumpwallet(tmpdir + "/node2/wallet.dump") + + logging.info("More transactions") + for i in range(5): + self.do_one_round() + + # Generate 101 more blocks, so any fees paid mature + self.nodes[3].setgenerate(True, 101) + self.sync_all() + + balance0 = self.nodes[0].getbalance() + balance1 = self.nodes[1].getbalance() + balance2 = self.nodes[2].getbalance() + balance3 = self.nodes[3].getbalance() + total = balance0 + balance1 + balance2 + balance3 + + # At this point, there are 214 blocks (103 for setup, then 10 rounds, then 101.) + # 114 are mature, so the sum of all wallets should be 114 * 50 = 5700. + assert_equal(total, 5700) + + ## + # Test restoring spender wallets from backups + ## + logging.info("Restoring using wallet.dat") + self.stop_three() + self.erase_three() + + # Start node2 with no chain + shutil.rmtree(self.options.tmpdir + "/node2/regtest/blocks") + shutil.rmtree(self.options.tmpdir + "/node2/regtest/chainstate") + + # Restore wallets from backup + shutil.copyfile(tmpdir + "/node0/wallet.bak", tmpdir + "/node0/regtest/wallet.dat") + shutil.copyfile(tmpdir + "/node1/wallet.bak", tmpdir + "/node1/regtest/wallet.dat") + shutil.copyfile(tmpdir + "/node2/wallet.bak", tmpdir + "/node2/regtest/wallet.dat") + + logging.info("Re-starting nodes") + self.start_three() + sync_blocks(self.nodes) + + assert_equal(self.nodes[0].getbalance(), balance0) + assert_equal(self.nodes[1].getbalance(), balance1) + assert_equal(self.nodes[2].getbalance(), balance2) + + logging.info("Restoring using dumped wallet") + self.stop_three() + self.erase_three() + + #start node2 with no chain + shutil.rmtree(self.options.tmpdir + "/node2/regtest/blocks") + shutil.rmtree(self.options.tmpdir + "/node2/regtest/chainstate") + + self.start_three() + + assert_equal(self.nodes[0].getbalance(), 0) + assert_equal(self.nodes[1].getbalance(), 0) + assert_equal(self.nodes[2].getbalance(), 0) + + self.nodes[0].importwallet(tmpdir + "/node0/wallet.dump") + self.nodes[1].importwallet(tmpdir + "/node1/wallet.dump") + self.nodes[2].importwallet(tmpdir + "/node2/wallet.dump") + + sync_blocks(self.nodes) + + assert_equal(self.nodes[0].getbalance(), balance0) + assert_equal(self.nodes[1].getbalance(), balance1) + assert_equal(self.nodes[2].getbalance(), balance2) + + +if __name__ == '__main__': + WalletBackupTest().main() diff --git a/qa/rpc-tests/walletbackup.sh b/qa/rpc-tests/walletbackup.sh deleted file mode 100755 index 4af3d97f3..000000000 --- a/qa/rpc-tests/walletbackup.sh +++ /dev/null @@ -1,297 +0,0 @@ -#!/usr/bin/env bash -# Copyright (c) 2014 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -# Test wallet backup / dump / restore functionality - -# Test case is: -# 4 nodes. 1 2 3 and send transactions between each other, -# fourth node is a miner. -# 1 2 3 and each mine a block to start, then -# miner creates 100 blocks so 1 2 3 each have 50 mature -# coins to spend. -# Then 5 iterations of 1/2/3 sending coins amongst -# themselves to get transactions in the wallets, -# and the miner mining one block. -# -# Wallets are backed up using dumpwallet/backupwallet. -# Then 5 more iterations of transactions, then block. -# -# Miner then generates 101 more blocks, so any -# transaction fees paid mature. -# -# Sanity checks done: -# Miner balance >= 150*50 -# Sum(1,2,3,4 balances) == 153*150 -# -# 1/2/3 are shutdown, and their wallets erased. -# Then restore using wallet.dat backup. And -# confirm 1/2/3/4 balances are same as before. -# -# Shutdown again, restore using importwallet, -# and confirm again balances are correct. -# - -if [ $# -lt 1 ]; then - echo "Usage: $0 path_to_binaries" - echo "e.g. $0 ../../src" - echo "Env vars BITCOIND and BITCOINCLI may be used to specify the exact binaries used" - exit 1 -fi - -BITCOIND=${BITCOIND:-${1}/bitcoind} -CLI=${BITCOINCLI:-${1}/bitcoin-cli} - -DIR="${BASH_SOURCE%/*}" -SENDANDWAIT="${DIR}/send.sh" -if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi -. "$DIR/util.sh" - -D=$(mktemp -d test.XXXXX) - -echo "Starting nodes..." - -# "Miner": -D4=${D}/node4 -CreateDataDir $D4 port=11030 rpcport=11031 -B4ARGS="-datadir=$D4" -$BITCOIND $BITCOINDARGS $B4ARGS & -B4PID=$! - -# Want default keypool for 1/2/3, and -# don't need send-and-wait functionality, -# so don't use CreateDataDir: -function CreateConfDir { - DIR=$1 - mkdir -p $DIR - CONF=$DIR/bitcoin.conf - echo "regtest=1" >> $CONF - echo "rpcuser=rt" >> $CONF - echo "rpcpassword=rt" >> $CONF - echo "rpcwait=1" >> $CONF - shift - while (( "$#" )); do - echo $1 >> $CONF - shift - done -} - -# "Spenders" 1/2/3 -D1=${D}/node1 -CreateConfDir $D1 port=11000 rpcport=11001 addnode=127.0.0.1:11030 -B1ARGS="-datadir=$D1" -$BITCOIND $B1ARGS & -B1PID=$! -D2=${D}/node2 -CreateConfDir $D2 port=11010 rpcport=11011 addnode=127.0.0.1:11030 -B2ARGS="-datadir=$D2" -$BITCOIND $B2ARGS & -B2PID=$! -D3=${D}/node3 -CreateConfDir $D3 port=11020 rpcport=11021 addnode=127.0.0.1:11030 addnode=127.0.0.1:11000 -B3ARGS="-datadir=$D3" -$BITCOIND $BITCOINDARGS $B3ARGS & -B3PID=$! - -# Wait until all nodes are at the same block number -function WaitBlocks { - while : - do - sleep 1 - BLOCKS1=$( GetBlocks "$B1ARGS" ) - BLOCKS2=$( GetBlocks "$B2ARGS" ) - BLOCKS3=$( GetBlocks "$B3ARGS" ) - BLOCKS4=$( GetBlocks "$B4ARGS" ) - if (( BLOCKS1 == BLOCKS4 && BLOCKS2 == BLOCKS4 && BLOCKS3 == BLOCKS4 )) - then - break - fi - done -} - -# Wait until all nodes have the same txns in -# their memory pools -function WaitMemPools { - while : - do - sleep 1 - MEMPOOL1=$( $CLI "$B1ARGS" getrawmempool | sort | shasum ) - MEMPOOL2=$( $CLI "$B2ARGS" getrawmempool | sort | shasum ) - MEMPOOL3=$( $CLI "$B3ARGS" getrawmempool | sort | shasum ) - MEMPOOL4=$( $CLI "$B4ARGS" getrawmempool | sort | shasum ) - if [[ $MEMPOOL1 = $MEMPOOL4 && $MEMPOOL2 = $MEMPOOL4 && $MEMPOOL3 = $MEMPOOL4 ]] - then - break - fi - done -} - -echo "Generating initial blockchain..." - -# 1 block, 50 XBT each == 50 BTC -$CLI $B1ARGS setgenerate true 1 -WaitBlocks -$CLI $B2ARGS setgenerate true 1 -WaitBlocks -$CLI $B3ARGS setgenerate true 1 -WaitBlocks - -# 100 blocks, 0 mature -$CLI $B4ARGS setgenerate true 100 -WaitBlocks - -CheckBalance "$B1ARGS" 50 -CheckBalance "$B2ARGS" 50 -CheckBalance "$B3ARGS" 50 -CheckBalance "$B4ARGS" 0 - -echo "Creating transactions..." - -function S { - TXID=$( $CLI -datadir=${D}/node${1} sendtoaddress ${2} "${3}" 0 ) - if [ x$TXID = x ] ; then - echoerr "node${1}: error sending ${3} btc" - echo -n "node${1} balance: " - $CLI -datadir=${D}/node${1} getbalance "*" 0 - exit 1 - fi -} - -function OneRound { - A1=$( $CLI $B1ARGS getnewaddress ) - A2=$( $CLI $B2ARGS getnewaddress ) - A3=$( $CLI $B3ARGS getnewaddress ) - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 1 $A2 "0.$N" - fi - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 1 $A3 "0.0$N" - fi - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 2 $A1 "0.$N" - fi - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 2 $A3 "0.$N" - fi - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 3 $A1 "0.$N" - fi - if [[ $(( $RANDOM%2 )) < 1 ]] ; then - N=$(( $RANDOM % 9 + 1 )) - S 3 $A2 "0.0$N" - fi - $CLI "$B4ARGS" setgenerate true 1 -} - -for i in {1..5}; do OneRound ; done - -echo "Backing up..." - -$CLI "$B1ARGS" backupwallet "$D1/wallet.bak" -$CLI "$B1ARGS" dumpwallet "$D1/wallet.dump" -$CLI "$B2ARGS" backupwallet "$D2/wallet.bak" -$CLI "$B2ARGS" dumpwallet "$D2/wallet.dump" -$CLI "$B3ARGS" backupwallet "$D3/wallet.bak" -$CLI "$B3ARGS" dumpwallet "$D3/wallet.dump" - -echo "More transactions..." -for i in {1..5}; do OneRound ; done - -WaitMemPools - -# Generate 101 more blocks, so any fees paid -# mature -$CLI "$B4ARGS" setgenerate true 101 - -BALANCE1=$( $CLI "$B1ARGS" getbalance ) -BALANCE2=$( $CLI "$B2ARGS" getbalance ) -BALANCE3=$( $CLI "$B3ARGS" getbalance ) -BALANCE4=$( $CLI "$B4ARGS" getbalance ) - -TOTAL=$( dc -e "$BALANCE1 $BALANCE2 $BALANCE3 $BALANCE4 + + + p" ) - -AssertEqual $TOTAL 5700.00000000 - -function StopThree { - $CLI $B1ARGS stop > /dev/null 2>&1 - $CLI $B2ARGS stop > /dev/null 2>&1 - $CLI $B3ARGS stop > /dev/null 2>&1 - wait $B1PID - wait $B2PID - wait $B3PID -} -function EraseThree { - rm $D1/regtest/wallet.dat - rm $D2/regtest/wallet.dat - rm $D3/regtest/wallet.dat -} -function StartThree { - $BITCOIND $BITCOINDARGS $B1ARGS & - B1PID=$! - $BITCOIND $BITCOINDARGS $B2ARGS & - B2PID=$! - $BITCOIND $BITCOINDARGS $B3ARGS & - B3PID=$! -} - -echo "Restoring using wallet.dat" - -StopThree -EraseThree - -# Start node3 with no chain -rm -rf $D3/regtest/blocks -rm -rf $D3/regtest/chainstate -rm -rf $D3/regtest/database - -cp $D1/wallet.bak $D1/regtest/wallet.dat -cp $D2/wallet.bak $D2/regtest/wallet.dat -cp $D3/wallet.bak $D3/regtest/wallet.dat - -StartThree -WaitBlocks - -AssertEqual $BALANCE1 $( $CLI "$B1ARGS" getbalance ) -AssertEqual $BALANCE2 $( $CLI "$B2ARGS" getbalance ) -AssertEqual $BALANCE3 $( $CLI "$B3ARGS" getbalance ) - -echo "Restoring using dumped wallet" - -StopThree -EraseThree - -# Start node3 with no chain -rm -rf $D3/regtest/blocks -rm -rf $D3/regtest/chainstate -rm -rf $D3/regtest/database - -StartThree - -AssertEqual 0 $( $CLI "$B1ARGS" getbalance ) -AssertEqual 0 $( $CLI "$B2ARGS" getbalance ) -AssertEqual 0 $( $CLI "$B3ARGS" getbalance ) - -$CLI "$B1ARGS" importwallet $D1/wallet.dump -$CLI "$B2ARGS" importwallet $D2/wallet.dump -$CLI "$B3ARGS" importwallet $D3/wallet.dump - -WaitBlocks - -AssertEqual $BALANCE1 $( $CLI "$B1ARGS" getbalance ) -AssertEqual $BALANCE2 $( $CLI "$B2ARGS" getbalance ) -AssertEqual $BALANCE3 $( $CLI "$B3ARGS" getbalance ) - -StopThree -$CLI $B4ARGS stop > /dev/null 2>&1 -wait $B4PID - -echo "Tests successful, cleaning up" -trap "" EXIT -rm -rf $D -exit 0 From 73351c3686094158c3a61f1f11126569c5c3ed3f Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Fri, 28 Nov 2014 20:32:52 +0100 Subject: [PATCH 24/47] [REST] /rest/block response with full tx details - rest block request returns full unfolded tx details - /rest/block/notxdetails/ returns block where transactions are only represented by its hash --- qa/rpc-tests/rest.py | 29 ++++++++++++++++++++++++++++- src/rest.cpp | 26 ++++++++++++++++++++++---- src/rpcblockchain.cpp | 14 ++++++++++++-- 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/qa/rpc-tests/rest.py b/qa/rpc-tests/rest.py index c62a96fbb..cb1868de3 100755 --- a/qa/rpc-tests/rest.py +++ b/qa/rpc-tests/rest.py @@ -48,7 +48,7 @@ class RESTTest (BitcoinTestFramework): assert_equal(json_obj['hash'], bb_hash) # do tx test - tx_hash = json_obj['tx'][0]; + tx_hash = json_obj['tx'][0]['txid']; json_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"json") json_obj = json.loads(json_string) assert_equal(json_obj['txid'], tx_hash) @@ -57,6 +57,33 @@ class RESTTest (BitcoinTestFramework): hex_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"hex", True) assert_equal(response.status, 200) assert_greater_than(int(response.getheader('content-length')), 10) + + # check block tx details + # let's make 3 tx and mine them on node 1 + txs = [] + txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)) + txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)) + txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)) + self.sync_all() + + # now mine the transactions + newblockhash = self.nodes[1].setgenerate(True, 1) + self.sync_all() + + #check if the 3 tx show up in the new block + json_string = http_get_call(url.hostname, url.port, '/rest/block/'+newblockhash[0]+self.FORMAT_SEPARATOR+'json') + json_obj = json.loads(json_string) + for tx in json_obj['tx']: + if not 'coinbase' in tx['vin'][0]: #exclude coinbase + assert_equal(tx['txid'] in txs, True) + + #check the same but without tx details + json_string = http_get_call(url.hostname, url.port, '/rest/block/notxdetails/'+newblockhash[0]+self.FORMAT_SEPARATOR+'json') + json_obj = json.loads(json_string) + for tx in txs: + assert_equal(tx in json_obj['tx'], True) + + if __name__ == '__main__': RESTTest ().main () diff --git a/src/rest.cpp b/src/rest.cpp index 6285784af..6329b44c5 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -42,7 +42,7 @@ public: }; extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry); -extern Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex); +extern Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false); static RestErr RESTERR(enum HTTPStatusCode status, string message) { @@ -92,7 +92,8 @@ static bool ParseHashStr(const string& strReq, uint256& v) static bool rest_block(AcceptedConnection* conn, string& strReq, map& mapHeaders, - bool fRun) + bool fRun, + bool showTxDetails) { vector params; enum RetFormat rf = ParseDataFormat(params, strReq); @@ -131,7 +132,7 @@ static bool rest_block(AcceptedConnection* conn, } case RF_JSON: { - Object objBlock = blockToJSON(block, pblockindex); + Object objBlock = blockToJSON(block, pblockindex, showTxDetails); string strJSON = write_string(Value(objBlock), false) + "\n"; conn->stream() << HTTPReply(HTTP_OK, strJSON, fRun) << std::flush; return true; @@ -146,6 +147,22 @@ static bool rest_block(AcceptedConnection* conn, return true; // continue to process further HTTP reqs on this cxn } +static bool rest_block_extended(AcceptedConnection* conn, + string& strReq, + map& mapHeaders, + bool fRun) +{ + return rest_block(conn, strReq, mapHeaders, fRun, true); +} + +static bool rest_block_notxdetails(AcceptedConnection* conn, + string& strReq, + map& mapHeaders, + bool fRun) +{ + return rest_block(conn, strReq, mapHeaders, fRun, false); +} + static bool rest_tx(AcceptedConnection* conn, string& strReq, map& mapHeaders, @@ -205,7 +222,8 @@ static const struct { bool fRun); } uri_prefixes[] = { {"/rest/tx/", rest_tx}, - {"/rest/block/", rest_block}, + {"/rest/block/notxdetails/", rest_block_notxdetails}, + {"/rest/block/", rest_block_extended}, }; bool HTTPReq_REST(AcceptedConnection* conn, diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index 924f41690..778438775 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -16,6 +16,7 @@ using namespace json_spirit; using namespace std; +extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, Object& entry); void ScriptPubKeyToJSON(const CScript& scriptPubKey, Object& out, bool fIncludeHex); double GetDifficulty(const CBlockIndex* blockindex) @@ -50,7 +51,7 @@ double GetDifficulty(const CBlockIndex* blockindex) } -Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex) +Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDetails = false) { Object result; result.push_back(Pair("hash", block.GetHash().GetHex())); @@ -65,7 +66,16 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex) result.push_back(Pair("merkleroot", block.hashMerkleRoot.GetHex())); Array txs; BOOST_FOREACH(const CTransaction&tx, block.vtx) - txs.push_back(tx.GetHash().GetHex()); + { + if(txDetails) + { + Object objTx; + TxToJSON(tx, block.GetHash(), objTx); + txs.push_back(objTx); + } + else + txs.push_back(tx.GetHash().GetHex()); + } result.push_back(Pair("tx", txs)); result.push_back(Pair("time", block.GetBlockTime())); result.push_back(Pair("nonce", (uint64_t)block.nNonce)); From cae548685dc26c3be823f132ab88947175d19af6 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Sat, 6 Dec 2014 10:54:09 +0100 Subject: [PATCH 25/47] [REST] added /rest/block/notxdetails/ into REST-interface.md documentation --- doc/REST-interface.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/REST-interface.md b/doc/REST-interface.md index 05c532be5..0af650b4e 100644 --- a/doc/REST-interface.md +++ b/doc/REST-interface.md @@ -11,12 +11,15 @@ Given a transaction hash, Returns a transaction, in binary, hex-encoded binary or JSON formats. `GET /rest/block/BLOCK-HASH.{bin|hex|json}` +`GET /rest/block/notxdetails/BLOCK-HASH.{bin|hex|json}` Given a block hash, Returns a block, in binary, hex-encoded binary or JSON formats. The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 2.66MB (1 MB max block, plus hex encoding) per request. +With the /notxdetails/ option JSON response will only contain the transaction hash instead of the complete transaction details. The option only affects the JSON response. + For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option. Risks From 932ef50f775b5f514941e6ee9dc91d0dcf89321f Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Sat, 6 Dec 2014 19:09:03 +0100 Subject: [PATCH 26/47] [REST] JSON output: remove block infos from tx details if it is nested in block --- src/rpcblockchain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index 778438775..66e86ebac 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -70,7 +70,7 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool txDe if(txDetails) { Object objTx; - TxToJSON(tx, block.GetHash(), objTx); + TxToJSON(tx, uint256(0), objTx); txs.push_back(objTx); } else From ecae2acb06d44509425a9cdad38ed9a5bce15cbe Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 11 Dec 2014 01:58:25 +0100 Subject: [PATCH 27/47] Squashed 'src/secp256k1/' changes from b0210a9..bccaf86 bccaf86 Merge pull request #150 2a53a47 Merge pull request #151 5f5a31f Merge pull request #149 3907277 Merge pull request #142 a3e0611 Enable tests in x86 travis builds 45da235 x86 builder 8bb0e93 Merge pull request #155 971fe81 build: fix openssl detection for cross builds f22d73e Explicitly access %0..%2 as 64-bit so we use the right registers for x32 ABI e66d4d6 Avoid the stack in assembly and use explicit registers cf7b2b4 Fix ECDSA message hashes to 32 bytes 056ad31 Really compile with -O3 by default 74ad63a Merge pull request #146 9000458 Merge pull request #145 1f46b00 build: fix __builtin_expect detection for clang aaba2e0 Merge pull request #136 8a0775c Merge pull request #144 ee1eaa7 Merge pull request #141 c88e2b8 Compile with -O3 by default 6558a26 Make the benchmarks print out stats 000bdf6 Rename bench_verify to bench_recovery 7c6fed2 Add a few more additional tests. 992e03b travis: add clang to the test matrix b43b79a Merge pull request #143 e06a924 Include time.h header for time(). 8d11164 Add some additional tests. 3545627 Merge pull request #118 6a9901e Merge pull request #137 376b28b Merge pull request #128 1728806 Merge pull request #138 a5759c5 Check return value of malloc 39bd94d Variable time normalize ad86bdf Merge pull request #140 54b768c Another redundant secp256k1_fe_normalize 69dcaab Merge pull request #139 1c29f2e Remove redundant secp256k1_fe_normalize from secp256k1_gej_add_ge_var. 2b9388b Remove unused secp256k1_fe_inv_all f461b76 Allocate precomputation arrays on the heap b2c9681 Make {mul,sqr}_inner use the same argument order as {mul,sqr} 6793505 Convert YASM code into inline assembly f048615 Rewrite field assembly to match the C version 3ce74b1 Tweak precomputed table size for G git-subtree-dir: src/secp256k1 git-subtree-split: bccaf86caa9c44166e5a66600b742c516e03c3f0 --- .travis.yml | 19 +- Makefile.am | 30 +-- build-aux/m4/bitcoin_secp.m4 | 51 ++-- configure.ac | 11 +- include/secp256k1.h | 32 +-- nasm_lt.sh | 57 ---- src/bench.h | 37 +++ src/bench_inv.c | 45 ++-- src/bench_recover.c | 46 ++++ src/bench_sign.c | 65 +++-- src/bench_verify.c | 59 +++-- src/ecdsa_impl.h | 8 +- src/eckey_impl.h | 8 +- src/ecmult_gen_impl.h | 6 +- src/ecmult_impl.h | 17 +- src/field.h | 8 +- src/field_10x26_impl.h | 64 ++++- src/field_5x52_asm.asm | 469 --------------------------------- src/field_5x52_asm_impl.h | 495 ++++++++++++++++++++++++++++++++++- src/field_5x52_impl.h | 48 +++- src/field_5x52_int128_impl.h | 4 +- src/field_gmp_impl.h | 4 + src/field_impl.h | 32 +-- src/group.h | 7 +- src/group_impl.h | 59 +++-- src/scalar_impl.h | 2 +- src/secp256k1.c | 38 +-- src/tests.c | 332 +++++++++++++++++++---- src/util.h | 6 + 29 files changed, 1206 insertions(+), 853 deletions(-) delete mode 100755 nasm_lt.sh create mode 100644 src/bench.h create mode 100644 src/bench_recover.c delete mode 100644 src/field_5x52_asm.asm diff --git a/.travis.yml b/.travis.yml index 3a85e8cba..28cd61dbc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,14 @@ -language: cpp -compiler: gcc +language: c +compiler: + - clang + - gcc install: - sudo apt-get install -qq libssl-dev - - if [ "$BIGNUM" = "gmp" -o "$BIGNUM" = "auto" -o "$FIELD" = "gmp" ]; then sudo apt-get install -qq libgmp-dev; fi - - if [ "$FIELD" = "64bit_asm" ]; then sudo apt-get install -qq yasm; fi + - if [ "$BIGNUM" = "gmp" -o "$BIGNUM" = "auto" -o "$FIELD" = "gmp" ]; then sudo apt-get install --no-install-recommends --no-upgrade -qq libgmp-dev; fi + - if [ -n "$EXTRAPACKAGES" ]; then sudo apt-get update && sudo apt-get install --no-install-recommends --no-upgrade $EXTRAPACKAGES; fi env: global: - - FIELD=auto BIGNUM=auto SCALAR=auto ENDOMORPHISM=no BUILD=check EXTRAFLAGS= + - FIELD=auto BIGNUM=auto SCALAR=auto ENDOMORPHISM=no BUILD=check EXTRAFLAGS= HOST= EXTRAPACKAGES= matrix: - SCALAR=32bit - SCALAR=64bit @@ -22,6 +24,11 @@ env: - BIGNUM=none ENDOMORPHISM=yes - BUILD=distcheck - EXTRAFLAGS=CFLAGS=-DDETERMINISTIC + - HOST=i686-linux-gnu EXTRAPACKAGES="gcc-multilib" + - HOST=i686-linux-gnu EXTRAPACKAGES="gcc-multilib" ENDOMORPHISM=yes before_script: ./autogen.sh -script: ./configure --enable-endomorphism=$ENDOMORPHISM --with-field=$FIELD --with-bignum=$BIGNUM --with-scalar=$SCALAR $EXTRAFLAGS && make -j2 $BUILD +script: + - if [ -n "$HOST" ]; then export USE_HOST="--host=$HOST"; fi + - if [ "x$HOST" = "xi686-linux-gnu" ]; then export CC="$CC -m32"; fi + - ./configure --enable-endomorphism=$ENDOMORPHISM --with-field=$FIELD --with-bignum=$BIGNUM --with-scalar=$SCALAR $EXTRAFLAGS $USE_HOST && make -j2 $BUILD os: linux diff --git a/Makefile.am b/Makefile.am index dbf1790f3..390d2c9ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,12 +1,6 @@ ACLOCAL_AMFLAGS = -I build-aux/m4 lib_LTLIBRARIES = libsecp256k1.la -if USE_ASM -COMMON_LIB = libsecp256k1_common.la -else -COMMON_LIB = -endif -noinst_LTLIBRARIES = $(COMMON_LIB) include_HEADERS = include/secp256k1.h noinst_HEADERS = noinst_HEADERS += src/scalar.h @@ -43,30 +37,30 @@ noinst_HEADERS += src/field_gmp.h noinst_HEADERS += src/field_gmp_impl.h noinst_HEADERS += src/field.h noinst_HEADERS += src/field_impl.h +noinst_HEADERS += src/bench.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = libsecp256k1.pc -if USE_ASM -libsecp256k1_common_la_SOURCES = src/field_5x52_asm.asm -endif - libsecp256k1_la_SOURCES = src/secp256k1.c libsecp256k1_la_CPPFLAGS = -I$(top_srcdir)/include $(SECP_INCLUDES) -libsecp256k1_la_LIBADD = $(COMMON_LIB) $(SECP_LIBS) +libsecp256k1_la_LIBADD = $(SECP_LIBS) noinst_PROGRAMS = if USE_BENCHMARK -noinst_PROGRAMS += bench_verify bench_sign bench_inv +noinst_PROGRAMS += bench_verify bench_recover bench_sign bench_inv bench_verify_SOURCES = src/bench_verify.c bench_verify_LDADD = libsecp256k1.la $(SECP_LIBS) bench_verify_LDFLAGS = -static +bench_recover_SOURCES = src/bench_recover.c +bench_recover_LDADD = libsecp256k1.la $(SECP_LIBS) +bench_recover_LDFLAGS = -static bench_sign_SOURCES = src/bench_sign.c bench_sign_LDADD = libsecp256k1.la $(SECP_LIBS) bench_sign_LDFLAGS = -static bench_inv_SOURCES = src/bench_inv.c -bench_inv_LDADD = $(COMMON_LIB) $(SECP_LIBS) +bench_inv_LDADD = $(SECP_LIBS) bench_inv_LDFLAGS = -static bench_inv_CPPFLAGS = $(SECP_INCLUDES) endif @@ -75,15 +69,9 @@ if USE_TESTS noinst_PROGRAMS += tests tests_SOURCES = src/tests.c tests_CPPFLAGS = -DVERIFY $(SECP_INCLUDES) $(SECP_TEST_INCLUDES) -tests_LDADD = $(COMMON_LIB) $(SECP_LIBS) $(SECP_TEST_LIBS) +tests_LDADD = $(SECP_LIBS) $(SECP_TEST_LIBS) tests_LDFLAGS = -static TESTS = tests endif -EXTRA_DIST = autogen.sh nasm_lt.sh - -#x86_64 only -if USE_ASM -.asm.lo: - $(LIBTOOL) --mode=compile --tag YASM $(srcdir)/nasm_lt.sh $(YASM) -f $(YASM_BINFMT) $(YAFLAGS) -I$(srcdir) -I. $< -o $@ -endif +EXTRA_DIST = autogen.sh diff --git a/build-aux/m4/bitcoin_secp.m4 b/build-aux/m4/bitcoin_secp.m4 index 4ca28f99c..1373478c9 100644 --- a/build-aux/m4/bitcoin_secp.m4 +++ b/build-aux/m4/bitcoin_secp.m4 @@ -11,38 +11,16 @@ fi dnl AC_DEFUN([SECP_64BIT_ASM_CHECK],[ -if test x"$host_cpu" == x"x86_64"; then - AC_CHECK_PROG(YASM, yasm, yasm) -else - if test x"$set_field" = x"64bit_asm"; then - AC_MSG_ERROR([$set_field field support explicitly requested but is not compatible with this host]) - fi -fi -if test x$YASM = x; then - if test x"$set_field" = x"64bit_asm"; then - AC_MSG_ERROR([$set_field field support explicitly requested but yasm was not found]) - fi - has_64bit_asm=no -else - case x"$host_os" in - xdarwin*) - YASM_BINFMT=macho64 - ;; - x*-gnux32) - YASM_BINFMT=elfx32 - ;; - *) - YASM_BINFMT=elf64 - ;; - esac - if $YASM -f help | grep -q $YASM_BINFMT; then - has_64bit_asm=yes - else - if test x"$set_field" = x"64bit_asm"; then - AC_MSG_ERROR([$set_field field support explicitly requested but yasm doesn't support $YASM_BINFMT format]) - fi - AC_MSG_WARN([yasm too old for $YASM_BINFMT format]) - has_64bit_asm=no +AC_MSG_CHECKING(for x86_64 assembly availability) +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include ]],[[ + uint64_t a = 11, tmp; + __asm__ __volatile__("movq $0x100000000,%1; mulq %%rsi" : "+a"(a) : "S"(tmp) : "cc", "%rdx"); + ]])],[has_64bit_asm=yes],[has_64bit_asm=no]) +AC_MSG_RESULT([$has_64bit_asm]) +if test x"$set_field" == x"64bit_asm"; then + if test x"$has_64bit_asm" == x"no"; then + AC_MSG_ERROR([$set_field field support explicitly requested but no x86_64 assembly available]) fi fi ]) @@ -52,8 +30,13 @@ AC_DEFUN([SECP_OPENSSL_CHECK],[ if test x"$use_pkgconfig" = x"yes"; then : #NOP m4_ifdef([PKG_CHECK_MODULES],[ - PKG_CHECK_MODULES([CRYPTO], [libcrypto], [has_libcrypto=yes; AC_DEFINE(HAVE_LIBCRYPTO,1,[Define this symbol if libcrypto is installed])],[has_libcrypto=no]) - : #NOP + PKG_CHECK_MODULES([CRYPTO], [libcrypto], [has_libcrypto=yes],[has_libcrypto=no]) + if test x"$has_libcrypto" = x"yes"; then + TEMP_LIBS="$LIBS" + LIBS="$LIBS $CRYPTO_LIBS" + AC_CHECK_LIB(crypto, main,[AC_DEFINE(HAVE_LIBCRYPTO,1,[Define this symbol if libcrypto is installed])],[has_libcrypto=no]) + LIBS="$TEMP_LIBS" + fi ]) else AC_CHECK_HEADER(openssl/crypto.h,[AC_CHECK_LIB(crypto, main,[has_libcrypto=yes; CRYPTO_LIBS=-lcrypto; AC_DEFINE(HAVE_LIBCRYPTO,1,[Define this symbol if libcrypto is installed])] diff --git a/configure.ac b/configure.ac index 6e6fccd7f..40e121e80 100644 --- a/configure.ac +++ b/configure.ac @@ -18,6 +18,10 @@ AC_PATH_TOOL(AR, ar) AC_PATH_TOOL(RANLIB, ranlib) AC_PATH_TOOL(STRIP, strip) +if test "x$CFLAGS" = "x"; then + CFLAGS="-O3 -g" +fi + AC_PROG_CC_C99 if test x"$ac_cv_prog_cc_c99" == x"no"; then AC_MSG_ERROR([c99 compiler support required]) @@ -103,7 +107,11 @@ AC_ARG_WITH([scalar], [AS_HELP_STRING([--with-scalar=64bit|32bit|auto], AC_CHECK_TYPES([__int128]) -AC_CHECK_DECL(__builtin_expect,AC_DEFINE(HAVE_BUILTIN_EXPECT,1,[Define this symbol if __builtin_expect is available]),,) +AC_MSG_CHECKING([for __builtin_expect]) +AC_COMPILE_IFELSE([AC_LANG_SOURCE([[void myfunc() {__builtin_expect(0,0);}]])], + [ AC_MSG_RESULT([yes]);AC_DEFINE(HAVE_BUILTIN_EXPECT,1,[Define this symbol if __builtin_expect is available]) ], + [ AC_MSG_RESULT([no]) + ]) if test x"$req_field" = x"auto"; then SECP_64BIT_ASM_CHECK @@ -283,7 +291,6 @@ AC_SUBST(SECP_INCLUDES) AC_SUBST(SECP_LIBS) AC_SUBST(SECP_TEST_LIBS) AC_SUBST(SECP_TEST_INCLUDES) -AC_SUBST(YASM_BINFMT) AM_CONDITIONAL([USE_ASM], [test x"$set_field" == x"64bit_asm"]) AM_CONDITIONAL([USE_TESTS], [test x"$use_tests" != x"no"]) AM_CONDITIONAL([USE_BENCHMARK], [test x"$use_benchmark" != x"no"]) diff --git a/include/secp256k1.h b/include/secp256k1.h index 94a6ef483..dca7ca00e 100644 --- a/include/secp256k1.h +++ b/include/secp256k1.h @@ -62,8 +62,7 @@ void secp256k1_stop(void); * 0: incorrect signature * -1: invalid public key * -2: invalid signature - * In: msg: the message being verified (cannot be NULL) - * msglen: the length of the message (at most 32) + * In: msg32: the 32-byte message hash being verified (cannot be NULL) * sig: the signature being verified (cannot be NULL) * siglen: the length of the signature * pubkey: the public key to verify with (cannot be NULL) @@ -71,19 +70,17 @@ void secp256k1_stop(void); * Requires starting using SECP256K1_START_VERIFY. */ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( - const unsigned char *msg, - int msglen, + const unsigned char *msg32, const unsigned char *sig, int siglen, const unsigned char *pubkey, int pubkeylen -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(5); +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(4); /** Create an ECDSA signature. * Returns: 1: signature created * 0: nonce invalid, try another one - * In: msg: the message being signed (cannot be NULL) - * msglen: the length of the message being signed (at most 32) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) * seckey: pointer to a 32-byte secret key (cannot be NULL, assumed to be valid) * nonce: pointer to a 32-byte nonce (cannot be NULL, generated with a cryptographic PRNG) * Out: sig: pointer to an array where the signature will be placed (cannot be NULL) @@ -92,19 +89,17 @@ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_verify( * Requires starting using SECP256K1_START_SIGN. */ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_sign( - const unsigned char *msg, - int msglen, + const unsigned char *msg32, unsigned char *sig, int *siglen, const unsigned char *seckey, const unsigned char *nonce -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5) SECP256K1_ARG_NONNULL(6); +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); /** Create a compact ECDSA signature (64 byte + recovery id). * Returns: 1: signature created * 0: nonce invalid, try another one - * In: msg: the message being signed (cannot be NULL) - * msglen: the length of the message being signed (at most 32) + * In: msg32: the 32-byte message hash being signed (cannot be NULL) * seckey: pointer to a 32-byte secret key (cannot be NULL, assumed to be valid) * nonce: pointer to a 32-byte nonce (cannot be NULL, generated with a cryptographic PRNG) * Out: sig: pointer to a 64-byte array where the signature will be placed (cannot be NULL) @@ -112,19 +107,17 @@ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_sign( * Requires starting using SECP256K1_START_SIGN. */ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_sign_compact( - const unsigned char *msg, - int msglen, + const unsigned char *msg32, unsigned char *sig64, const unsigned char *seckey, const unsigned char *nonce, int *recid -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); /** Recover an ECDSA public key from a compact signature. * Returns: 1: public key successfully recovered (which guarantees a correct signature). * 0: otherwise. - * In: msg: the message assumed to be signed (cannot be NULL) - * msglen: the length of the message (at most 32) + * In: msg32: the 32-byte message hash assumed to be signed (cannot be NULL) * sig64: signature as 64 byte array (cannot be NULL) * compressed: whether to recover a compressed or uncompressed pubkey * recid: the recovery id (0-3, as returned by ecdsa_sign_compact) @@ -133,14 +126,13 @@ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_sign_compact( * Requires starting using SECP256K1_START_VERIFY. */ SECP256K1_WARN_UNUSED_RESULT int secp256k1_ecdsa_recover_compact( - const unsigned char *msg, - int msglen, + const unsigned char *msg32, const unsigned char *sig64, unsigned char *pubkey, int *pubkeylen, int compressed, int recid -) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5); +) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4); /** Verify an ECDSA secret key. * Returns: 1: secret key is valid diff --git a/nasm_lt.sh b/nasm_lt.sh deleted file mode 100755 index 6cd73294c..000000000 --- a/nasm_lt.sh +++ /dev/null @@ -1,57 +0,0 @@ -#! /bin/sh -command="" -infile="" -o_opt=no -pic=no -while [ $# -gt 0 ]; do - case "$1" in - -DPIC|-fPIC|-fpic|-Kpic|-KPIC) - if [ "$pic" != "yes" ] ; then - command="$command -DPIC" - pic=yes - fi - ;; - -f|-fbin|-faout|-faoutb|-fcoff|-felf|-felf64|-fas86| \ - -fobj|-fwin32|-fwin64|-frdf|-fieee|-fmacho|-fmacho64) - # it's a file format specifier for nasm. - command="$command $1" - ;; - -f*) - # maybe a code-generation flag for gcc. - ;; - -[Ii]*) - incdir=`echo "$1" | sed 's/^-[Ii]//'` - if [ "x$incdir" = x -a "x$2" != x ] ; then - case "$2" in - -*) ;; - *) incdir="$2"; shift;; - esac - fi - if [ "x$incdir" != x ] ; then - # In the case of NASM, the trailing slash is necessary. - incdir=`echo "$incdir" | sed 's%/*$%/%'` - command="$command -I$incdir" - fi - ;; - -o*) - o_opt=yes - command="$command $1" - ;; - *.asm) - infile=$1 - command="$command $1" - ;; - *) - command="$command $1" - ;; - esac - shift -done -if [ "$o_opt" != yes ] ; then - # By default, NASM creates an output file - # in the same directory as the input file. - outfile="-o `echo $infile | sed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.o" - command="$command $outfile" -fi -echo $command -exec $command diff --git a/src/bench.h b/src/bench.h new file mode 100644 index 000000000..668ec39f7 --- /dev/null +++ b/src/bench.h @@ -0,0 +1,37 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#ifndef _SECP256K1_BENCH_H_ +#define _SECP256K1_BENCH_H_ + +#include +#include +#include "sys/time.h" + +static double gettimedouble(void) { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_usec * 0.000001 + tv.tv_sec; +} + +void run_benchmark(void (*benchmark)(void*), void (*setup)(void*), void (*teardown)(void*), void* data, int count, int iter) { + double min = HUGE_VAL; + double sum = 0.0; + double max = 0.0; + for (int i = 0; i < count; i++) { + if (setup) setup(data); + double begin = gettimedouble(); + benchmark(data); + double total = gettimedouble() - begin; + if (teardown) teardown(data); + if (total < min) min = total; + if (total > max) max = total; + sum += total; + } + printf("min %.3fus / avg %.3fus / max %.3fus\n", min * 1000000.0 / iter, (sum / count) * 1000000.0 / iter, max * 1000000.0 / iter); +} + +#endif diff --git a/src/bench_inv.c b/src/bench_inv.c index d6f664333..3bdedea30 100644 --- a/src/bench_inv.c +++ b/src/bench_inv.c @@ -12,30 +12,41 @@ #include "field_impl.h" #include "group_impl.h" #include "scalar_impl.h" +#include "bench.h" + +typedef struct { + secp256k1_scalar_t base, x; +} bench_inv_t; + +void bench_inv_setup(void* arg) { + bench_inv_t *data = (bench_inv_t*)arg; -int main(void) { static const unsigned char init[32] = { 0x02, 0x03, 0x05, 0x07, 0x0b, 0x0d, 0x11, 0x13, 0x17, 0x1d, 0x1f, 0x25, 0x29, 0x2b, 0x2f, 0x35, 0x3b, 0x3d, 0x43, 0x47, 0x49, 0x4f, 0x53, 0x59, 0x61, 0x65, 0x67, 0x6b, 0x6d, 0x71, 0x7f, 0x83 }; - static const unsigned char fini[32] = { - 0xba, 0x28, 0x58, 0xd8, 0xaa, 0x11, 0xd6, 0xf2, - 0xfa, 0xce, 0x50, 0xb1, 0x67, 0x19, 0xb1, 0xa6, - 0xe0, 0xaa, 0x84, 0x53, 0xf6, 0x80, 0xfc, 0x23, - 0x88, 0x3c, 0xd6, 0x74, 0x9f, 0x27, 0x09, 0x03 - }; - secp256k1_ge_start(); - secp256k1_scalar_t base, x; - secp256k1_scalar_set_b32(&base, init, NULL); - secp256k1_scalar_set_b32(&x, init, NULL); - for (int i=0; i<1000000; i++) { - secp256k1_scalar_inverse(&x, &x); - secp256k1_scalar_add(&x, &x, &base); + + secp256k1_scalar_set_b32(&data->base, init, NULL); + secp256k1_scalar_set_b32(&data->x, init, NULL); +} + +void bench_inv(void* arg) { + bench_inv_t *data = (bench_inv_t*)arg; + + for (int i=0; i<20000; i++) { + secp256k1_scalar_inverse(&data->x, &data->x); + secp256k1_scalar_add(&data->x, &data->x, &data->base); } - unsigned char res[32]; - secp256k1_scalar_get_b32(res, &x); - CHECK(memcmp(res, fini, 32) == 0); +} + +int main(void) { + secp256k1_ge_start(); + + bench_inv_t data; + run_benchmark(bench_inv, bench_inv_setup, NULL, &data, 10, 20000); + + secp256k1_ge_stop(); return 0; } diff --git a/src/bench_recover.c b/src/bench_recover.c new file mode 100644 index 000000000..b1e0f33ef --- /dev/null +++ b/src/bench_recover.c @@ -0,0 +1,46 @@ +/********************************************************************** + * Copyright (c) 2014 Pieter Wuille * + * Distributed under the MIT software license, see the accompanying * + * file COPYING or http://www.opensource.org/licenses/mit-license.php.* + **********************************************************************/ + +#include "include/secp256k1.h" +#include "util.h" +#include "bench.h" + +typedef struct { + unsigned char msg[32]; + unsigned char sig[64]; +} bench_recover_t; + +void bench_recover(void* arg) { + bench_recover_t *data = (bench_recover_t*)arg; + + unsigned char pubkey[33]; + for (int i=0; i<20000; i++) { + int pubkeylen = 33; + CHECK(secp256k1_ecdsa_recover_compact(data->msg, data->sig, pubkey, &pubkeylen, 1, i % 2)); + for (int j = 0; j < 32; j++) { + data->sig[j + 32] = data->msg[j]; /* Move former message to S. */ + data->msg[j] = data->sig[j]; /* Move former R to message. */ + data->sig[j] = pubkey[j + 1]; /* Move recovered pubkey X coordinate to R (which must be a valid X coordinate). */ + } + } +} + +void bench_recover_setup(void* arg) { + bench_recover_t *data = (bench_recover_t*)arg; + + for (int i = 0; i < 32; i++) data->msg[i] = 1 + i; + for (int i = 0; i < 64; i++) data->sig[i] = 65 + i; +} + +int main(void) { + secp256k1_start(SECP256K1_START_VERIFY); + + bench_recover_t data; + run_benchmark(bench_recover, bench_recover_setup, NULL, &data, 10, 20000); + + secp256k1_stop(); + return 0; +} diff --git a/src/bench_sign.c b/src/bench_sign.c index f01f11d68..66e71e1ac 100644 --- a/src/bench_sign.c +++ b/src/bench_sign.c @@ -3,46 +3,45 @@ * Distributed under the MIT software license, see the accompanying * * file COPYING or http://www.opensource.org/licenses/mit-license.php.* **********************************************************************/ -#include -#include #include "include/secp256k1.h" #include "util.h" +#include "bench.h" + +typedef struct { + unsigned char msg[32]; + unsigned char nonce[32]; + unsigned char key[32]; +} bench_sign_t; + +static void bench_sign_setup(void* arg) { + bench_sign_t *data = (bench_sign_t*)arg; + + for (int i = 0; i < 32; i++) data->msg[i] = i + 1; + for (int i = 0; i < 32; i++) data->nonce[i] = i + 33; + for (int i = 0; i < 32; i++) data->key[i] = i + 65; +} + +static void bench_sign(void* arg) { + bench_sign_t *data = (bench_sign_t*)arg; + + unsigned char sig[64]; + for (int i=0; i<20000; i++) { + int recid = 0; + CHECK(secp256k1_ecdsa_sign_compact(data->msg, sig, data->key, data->nonce, &recid)); + for (int j = 0; j < 32; j++) { + data->nonce[j] = data->key[j]; /* Move former key to nonce */ + data->msg[j] = sig[j]; /* Move former R to message. */ + data->key[j] = sig[j + 32]; /* Move former S to key. */ + } + } +} int main(void) { secp256k1_start(SECP256K1_START_SIGN); - unsigned char msg[32]; - unsigned char nonce[32]; - unsigned char key[32]; - - for (int i = 0; i < 32; i++) msg[i] = i + 1; - for (int i = 0; i < 32; i++) nonce[i] = i + 33; - for (int i = 0; i < 32; i++) key[i] = i + 65; - - unsigned char sig[64]; - - for (int i=0; i<1000000; i++) { - int recid = 0; - CHECK(secp256k1_ecdsa_sign_compact(msg, 32, sig, key, nonce, &recid)); - for (int j = 0; j < 32; j++) { - nonce[j] = key[j]; /* Move former key to nonce */ - msg[j] = sig[j]; /* Move former R to message. */ - key[j] = sig[j + 32]; /* Move former S to key. */ - } - } - - static const unsigned char fini[64] = { - 0x92, 0x03, 0xef, 0xf1, 0x58, 0x0b, 0x49, 0x8d, - 0x22, 0x3d, 0x49, 0x0e, 0xbf, 0x26, 0x50, 0x0e, - 0x2d, 0x62, 0x90, 0xd7, 0x82, 0xbd, 0x3d, 0x5c, - 0xa9, 0x10, 0xa5, 0x49, 0xb1, 0xd8, 0x8c, 0xc0, - 0x5b, 0x5e, 0x9e, 0x68, 0x51, 0x3d, 0xe8, 0xec, - 0x82, 0x30, 0x82, 0x88, 0x8c, 0xfd, 0xe7, 0x71, - 0x15, 0x92, 0xfc, 0x14, 0x59, 0x78, 0x31, 0xb3, - 0xf6, 0x07, 0x91, 0x18, 0x00, 0x8d, 0x4c, 0xb2 - }; - CHECK(memcmp(sig, fini, 64) == 0); + bench_sign_t data; + run_benchmark(bench_sign, bench_sign_setup, NULL, &data, 10, 20000); secp256k1_stop(); return 0; diff --git a/src/bench_verify.c b/src/bench_verify.c index 690595516..b123c4087 100644 --- a/src/bench_verify.c +++ b/src/bench_verify.c @@ -9,35 +9,46 @@ #include "include/secp256k1.h" #include "util.h" +#include "bench.h" + +typedef struct { + unsigned char msg[32]; + unsigned char key[32]; + unsigned char nonce[32]; + unsigned char sig[72]; + int siglen; + unsigned char pubkey[33]; + int pubkeylen; +} benchmark_verify_t; + +static void benchmark_verify(void* arg) { + benchmark_verify_t* data = (benchmark_verify_t*)arg; + + for (int i=0; i<20000; i++) { + data->sig[data->siglen - 1] ^= (i & 0xFF); + data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); + data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); + CHECK(secp256k1_ecdsa_verify(data->msg, data->sig, data->siglen, data->pubkey, data->pubkeylen) == (i == 0)); + data->sig[data->siglen - 1] ^= (i & 0xFF); + data->sig[data->siglen - 2] ^= ((i >> 8) & 0xFF); + data->sig[data->siglen - 3] ^= ((i >> 16) & 0xFF); + } +} int main(void) { - secp256k1_start(SECP256K1_START_VERIFY); + secp256k1_start(SECP256K1_START_VERIFY | SECP256K1_START_SIGN); - unsigned char msg[32]; - unsigned char sig[64]; + benchmark_verify_t data; - for (int i = 0; i < 32; i++) msg[i] = 1 + i; - for (int i = 0; i < 64; i++) sig[i] = 65 + i; + for (int i = 0; i < 32; i++) data.msg[i] = 1 + i; + for (int i = 0; i < 32; i++) data.key[i] = 33 + i; + for (int i = 0; i < 32; i++) data.nonce[i] = 65 + i; + data.siglen = 72; + CHECK(secp256k1_ecdsa_sign(data.msg, data.sig, &data.siglen, data.key, data.nonce)); + data.pubkeylen = 33; + CHECK(secp256k1_ec_pubkey_create(data.pubkey, &data.pubkeylen, data.key, 1)); - unsigned char pubkey[33]; - for (int i=0; i<1000000; i++) { - int pubkeylen = 33; - CHECK(secp256k1_ecdsa_recover_compact(msg, 32, sig, pubkey, &pubkeylen, 1, i % 2)); - for (int j = 0; j < 32; j++) { - sig[j + 32] = msg[j]; /* Move former message to S. */ - msg[j] = sig[j]; /* Move former R to message. */ - sig[j] = pubkey[j + 1]; /* Move recovered pubkey X coordinate to R (which must be a valid X coordinate). */ - } - } - - static const unsigned char fini[33] = { - 0x02, - 0x52, 0x63, 0xae, 0x9a, 0x9d, 0x47, 0x1f, 0x1a, - 0xb2, 0x36, 0x65, 0x89, 0x11, 0xe7, 0xcc, 0x86, - 0xa3, 0xab, 0x97, 0xb6, 0xf1, 0xaf, 0xfd, 0x8f, - 0x9b, 0x38, 0xb6, 0x18, 0x55, 0xe5, 0xc2, 0x43 - }; - CHECK(memcmp(fini, pubkey, 33) == 0); + run_benchmark(benchmark_verify, NULL, NULL, &data, 10, 20000); secp256k1_stop(); return 0; diff --git a/src/ecdsa_impl.h b/src/ecdsa_impl.h index a951d0b4a..8825d05fe 100644 --- a/src/ecdsa_impl.h +++ b/src/ecdsa_impl.h @@ -27,7 +27,7 @@ static void secp256k1_ecdsa_start(void) { return; /* Allocate. */ - secp256k1_ecdsa_consts_t *ret = (secp256k1_ecdsa_consts_t*)malloc(sizeof(secp256k1_ecdsa_consts_t)); + secp256k1_ecdsa_consts_t *ret = (secp256k1_ecdsa_consts_t*)checked_malloc(sizeof(secp256k1_ecdsa_consts_t)); static const unsigned char order[] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, @@ -38,7 +38,7 @@ static void secp256k1_ecdsa_start(void) { secp256k1_fe_set_b32(&ret->order_as_fe, order); secp256k1_fe_negate(&ret->p_minus_order, &ret->order_as_fe, 1); - secp256k1_fe_normalize(&ret->p_minus_order); + secp256k1_fe_normalize_var(&ret->p_minus_order); /* Set the global pointer. */ secp256k1_ecdsa_consts = ret; @@ -122,7 +122,7 @@ static int secp256k1_ecdsa_sig_recompute(secp256k1_scalar_t *r2, const secp256k1 secp256k1_gej_t pr; secp256k1_ecmult(&pr, &pubkeyj, &u2, &u1); if (!secp256k1_gej_is_infinity(&pr)) { secp256k1_fe_t xr; secp256k1_gej_get_x_var(&xr, &pr); - secp256k1_fe_normalize(&xr); + secp256k1_fe_normalize_var(&xr); unsigned char xrb[32]; secp256k1_fe_get_b32(xrb, &xr); secp256k1_scalar_set_b32(r2, xrb, NULL); ret = 1; @@ -144,7 +144,7 @@ static int secp256k1_ecdsa_sig_recover(const secp256k1_ecdsa_sig_t *sig, secp256 secp256k1_fe_add(&fx, &secp256k1_ecdsa_consts->order_as_fe); } secp256k1_ge_t x; - if (!secp256k1_ge_set_xo(&x, &fx, recid & 1)) + if (!secp256k1_ge_set_xo_var(&x, &fx, recid & 1)) return 0; secp256k1_gej_t xj; secp256k1_gej_set_ge(&xj, &x); diff --git a/src/eckey_impl.h b/src/eckey_impl.h index 0f218ced9..b3fa7d9bd 100644 --- a/src/eckey_impl.h +++ b/src/eckey_impl.h @@ -17,7 +17,7 @@ static int secp256k1_eckey_pubkey_parse(secp256k1_ge_t *elem, const unsigned char *pub, int size) { if (size == 33 && (pub[0] == 0x02 || pub[0] == 0x03)) { secp256k1_fe_t x; - return secp256k1_fe_set_b32(&x, pub+1) && secp256k1_ge_set_xo(elem, &x, pub[0] == 0x03); + return secp256k1_fe_set_b32(&x, pub+1) && secp256k1_ge_set_xo_var(elem, &x, pub[0] == 0x03); } else if (size == 65 && (pub[0] == 0x04 || pub[0] == 0x06 || pub[0] == 0x07)) { secp256k1_fe_t x, y; if (!secp256k1_fe_set_b32(&x, pub+1) || !secp256k1_fe_set_b32(&y, pub+33)) { @@ -26,7 +26,7 @@ static int secp256k1_eckey_pubkey_parse(secp256k1_ge_t *elem, const unsigned cha secp256k1_ge_set_xy(elem, &x, &y); if ((pub[0] == 0x06 || pub[0] == 0x07) && secp256k1_fe_is_odd(&y) != (pub[0] == 0x07)) return 0; - return secp256k1_ge_is_valid(elem); + return secp256k1_ge_is_valid_var(elem); } else { return 0; } @@ -36,8 +36,8 @@ static int secp256k1_eckey_pubkey_serialize(secp256k1_ge_t *elem, unsigned char if (secp256k1_ge_is_infinity(elem)) { return 0; } - secp256k1_fe_normalize(&elem->x); - secp256k1_fe_normalize(&elem->y); + secp256k1_fe_normalize_var(&elem->x); + secp256k1_fe_normalize_var(&elem->y); secp256k1_fe_get_b32(&pub[1], &elem->x); if (compressed) { *size = 33; diff --git a/src/ecmult_gen_impl.h b/src/ecmult_gen_impl.h index af0ead522..5a5b16ce1 100644 --- a/src/ecmult_gen_impl.h +++ b/src/ecmult_gen_impl.h @@ -34,7 +34,7 @@ static void secp256k1_ecmult_gen_start(void) { return; /* Allocate the precomputation table. */ - secp256k1_ecmult_gen_consts_t *ret = (secp256k1_ecmult_gen_consts_t*)malloc(sizeof(secp256k1_ecmult_gen_consts_t)); + secp256k1_ecmult_gen_consts_t *ret = (secp256k1_ecmult_gen_consts_t*)checked_malloc(sizeof(secp256k1_ecmult_gen_consts_t)); /* get the generator */ const secp256k1_ge_t *g = &secp256k1_ge_consts->g; @@ -47,7 +47,7 @@ static void secp256k1_ecmult_gen_start(void) { secp256k1_fe_t nums_x; VERIFY_CHECK(secp256k1_fe_set_b32(&nums_x, nums_b32)); secp256k1_ge_t nums_ge; - VERIFY_CHECK(secp256k1_ge_set_xo(&nums_ge, &nums_x, 0)); + VERIFY_CHECK(secp256k1_ge_set_xo_var(&nums_ge, &nums_x, 0)); secp256k1_gej_set_ge(&nums_gej, &nums_ge); /* Add G to make the bits in x uniformly distributed. */ secp256k1_gej_add_ge_var(&nums_gej, &nums_gej, g); @@ -73,7 +73,7 @@ static void secp256k1_ecmult_gen_start(void) { secp256k1_gej_double_var(&numsbase, &numsbase); if (j == 62) { /* In the last iteration, numsbase is (1 - 2^j) * nums instead. */ - secp256k1_gej_neg(&numsbase, &numsbase); + secp256k1_gej_neg_var(&numsbase, &numsbase); secp256k1_gej_add_var(&numsbase, &numsbase, &nums_gej); } } diff --git a/src/ecmult_impl.h b/src/ecmult_impl.h index 445b81593..653677104 100644 --- a/src/ecmult_impl.h +++ b/src/ecmult_impl.h @@ -15,11 +15,13 @@ #define WINDOW_A 5 /** larger numbers may result in slightly better performance, at the cost of - exponentially larger precomputed tables. WINDOW_G == 14 results in 640 KiB. */ + exponentially larger precomputed tables. */ #ifdef USE_ENDOMORPHISM -#define WINDOW_G 14 -#else +/** Two tables for window size 15: 1.375 MiB. */ #define WINDOW_G 15 +#else +/** One table for window size 16: 1.375 MiB. */ +#define WINDOW_G 16 #endif /** Fill a table 'pre' with precomputed odd multiples of a. W determines the size of the table. @@ -43,13 +45,14 @@ static void secp256k1_ecmult_table_precomp_gej_var(secp256k1_gej_t *pre, const s static void secp256k1_ecmult_table_precomp_ge_var(secp256k1_ge_t *pre, const secp256k1_gej_t *a, int w) { const int table_size = 1 << (w-2); - secp256k1_gej_t prej[table_size]; + secp256k1_gej_t *prej = checked_malloc(sizeof(secp256k1_gej_t) * table_size); prej[0] = *a; secp256k1_gej_t d; secp256k1_gej_double_var(&d, a); for (int i=1; ig; diff --git a/src/field.h b/src/field.h index 0cdf0fb47..53aa29e13 100644 --- a/src/field.h +++ b/src/field.h @@ -50,6 +50,9 @@ static void secp256k1_fe_stop(void); /** Normalize a field element. */ static void secp256k1_fe_normalize(secp256k1_fe_t *r); +/** Normalize a field element, without constant-time guarantee. */ +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r); + /** Set a field element equal to a small integer. Resulting field element is normalized. */ static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a); @@ -93,7 +96,7 @@ static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a); /** Sets a field element to be the (modular) square root (if any exist) of another. Requires the * input's magnitude to be at most 8. The output magnitude is 1 (but not guaranteed to be * normalized). Return value indicates whether a square root was found. */ -static int secp256k1_fe_sqrt(secp256k1_fe_t *r, const secp256k1_fe_t *a); +static int secp256k1_fe_sqrt_var(secp256k1_fe_t *r, const secp256k1_fe_t *a); /** Sets a field element to be the (modular) inverse of another. Requires the input's magnitude to be * at most 8. The output magnitude is 1 (but not guaranteed to be normalized). */ @@ -105,9 +108,6 @@ static void secp256k1_fe_inv_var(secp256k1_fe_t *r, const secp256k1_fe_t *a); /** Calculate the (modular) inverses of a batch of field elements. Requires the inputs' magnitudes to be * at most 8. The output magnitudes are 1 (but not guaranteed to be normalized). The inputs and * outputs must not overlap in memory. */ -static void secp256k1_fe_inv_all(size_t len, secp256k1_fe_t r[len], const secp256k1_fe_t a[len]); - -/** Potentially faster version of secp256k1_fe_inv_all, without constant-time guarantee. */ static void secp256k1_fe_inv_all_var(size_t len, secp256k1_fe_t r[len], const secp256k1_fe_t a[len]); /** Convert a field element to a hexadecimal string. */ diff --git a/src/field_10x26_impl.h b/src/field_10x26_impl.h index c4403fba2..d20229cda 100644 --- a/src/field_10x26_impl.h +++ b/src/field_10x26_impl.h @@ -103,6 +103,62 @@ static void secp256k1_fe_normalize(secp256k1_fe_t *r) { #endif } +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r) { + uint32_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4], + t5 = r->n[5], t6 = r->n[6], t7 = r->n[7], t8 = r->n[8], t9 = r->n[9]; + + /* Reduce t9 at the start so there will be at most a single carry from the first pass */ + uint32_t x = t9 >> 22; t9 &= 0x03FFFFFUL; + uint32_t m; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; m = t2; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; m &= t3; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; m &= t4; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; m &= t5; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; m &= t6; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; m &= t7; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; m &= t8; + + /* ... except for a possible carry at bit 22 of t9 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t9 >> 23 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t9 >> 22) | ((t9 == 0x03FFFFFUL) & (m == 0x3FFFFFFUL) + & ((t1 + 0x40UL + ((t0 + 0x3D1UL) >> 26)) > 0x3FFFFFFUL)); + + if (x) { + t0 += 0x3D1UL; t1 += (x << 6); + t1 += (t0 >> 26); t0 &= 0x3FFFFFFUL; + t2 += (t1 >> 26); t1 &= 0x3FFFFFFUL; + t3 += (t2 >> 26); t2 &= 0x3FFFFFFUL; + t4 += (t3 >> 26); t3 &= 0x3FFFFFFUL; + t5 += (t4 >> 26); t4 &= 0x3FFFFFFUL; + t6 += (t5 >> 26); t5 &= 0x3FFFFFFUL; + t7 += (t6 >> 26); t6 &= 0x3FFFFFFUL; + t8 += (t7 >> 26); t7 &= 0x3FFFFFFUL; + t9 += (t8 >> 26); t8 &= 0x3FFFFFFUL; + + /* If t9 didn't carry to bit 22 already, then it should have after any final reduction */ + VERIFY_CHECK(t9 >> 22 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t9 &= 0x03FFFFFUL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + r->n[5] = t5; r->n[6] = t6; r->n[7] = t7; r->n[8] = t8; r->n[9] = t9; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a) { r->n[0] = a; r->n[1] = r->n[2] = r->n[3] = r->n[4] = r->n[5] = r->n[6] = r->n[7] = r->n[8] = r->n[9] = 0; @@ -271,7 +327,7 @@ SECP256K1_INLINE static void secp256k1_fe_add(secp256k1_fe_t *r, const secp256k1 #define VERIFY_BITS(x, n) do { } while(0) #endif -SECP256K1_INLINE static void secp256k1_fe_mul_inner(const uint32_t *a, const uint32_t * SECP256K1_RESTRICT b, uint32_t *r) { +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t *a, const uint32_t * SECP256K1_RESTRICT b) { VERIFY_BITS(a[0], 30); VERIFY_BITS(a[1], 30); VERIFY_BITS(a[2], 30); @@ -598,7 +654,7 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(const uint32_t *a, const uin /* [r9 r8 r7 r6 r5 r4 r3 r2 r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */ } -SECP256K1_INLINE static void secp256k1_fe_sqr_inner(const uint32_t *a, uint32_t *r) { +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t *a) { VERIFY_BITS(a[0], 30); VERIFY_BITS(a[1], 30); VERIFY_BITS(a[2], 30); @@ -879,7 +935,7 @@ static void secp256k1_fe_mul(secp256k1_fe_t *r, const secp256k1_fe_t *a, const s secp256k1_fe_verify(b); VERIFY_CHECK(r != b); #endif - secp256k1_fe_mul_inner(a->n, b->n, r->n); + secp256k1_fe_mul_inner(r->n, a->n, b->n); #ifdef VERIFY r->magnitude = 1; r->normalized = 0; @@ -892,7 +948,7 @@ static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { VERIFY_CHECK(a->magnitude <= 8); secp256k1_fe_verify(a); #endif - secp256k1_fe_sqr_inner(a->n, r->n); + secp256k1_fe_sqr_inner(r->n, a->n); #ifdef VERIFY r->magnitude = 1; r->normalized = 0; diff --git a/src/field_5x52_asm.asm b/src/field_5x52_asm.asm deleted file mode 100644 index 5e785f763..000000000 --- a/src/field_5x52_asm.asm +++ /dev/null @@ -1,469 +0,0 @@ - ;; Added by Diederik Huys, March 2013 - ;; - ;; Provided public procedures: - ;; secp256k1_fe_mul_inner - ;; secp256k1_fe_sqr_inner - ;; - ;; Needed tools: YASM (http://yasm.tortall.net) - ;; - ;; - - BITS 64 - -%ifidn __OUTPUT_FORMAT__,macho64 -%define SYM(x) _ %+ x -%else -%define SYM(x) x -%endif - - ;; Procedure ExSetMult - ;; Register Layout: - ;; INPUT: rdi = a->n - ;; rsi = b->n - ;; rdx = r->a - ;; - ;; INTERNAL: rdx:rax = multiplication accumulator - ;; r9:r8 = c - ;; r10-r13 = t0-t3 - ;; r14 = b.n[0] / t4 - ;; r15 = b.n[1] / t5 - ;; rbx = b.n[2] / t6 - ;; rcx = b.n[3] / t7 - ;; rbp = Constant 0FFFFFFFFFFFFFh / t8 - ;; rsi = b.n / b.n[4] / t9 - - GLOBAL SYM(secp256k1_fe_mul_inner) - ALIGN 32 -SYM(secp256k1_fe_mul_inner): - push rbp - push rbx - push r12 - push r13 - push r14 - push r15 - push rdx - mov r14,[rsi+8*0] ; preload b.n[0]. This will be the case until - ; b.n[0] is no longer needed, then we reassign - ; r14 to t4 - ;; c=a.n[0] * b.n[0] - mov rax,[rdi+0*8] ; load a.n[0] - mov rbp,0FFFFFFFFFFFFFh - mul r14 ; rdx:rax=a.n[0]*b.n[0] - mov r15,[rsi+1*8] - mov r10,rbp ; load modulus into target register for t0 - mov r8,rax - and r10,rax ; only need lower qword of c - shrd r8,rdx,52 - xor r9,r9 ; c < 2^64, so we ditch the HO part - - ;; c+=a.n[0] * b.n[1] + a.n[1] * b.n[0] - mov rax,[rdi+0*8] - mul r15 - add r8,rax - adc r9,rdx - - mov rax,[rdi+1*8] - mul r14 - mov r11,rbp - mov rbx,[rsi+2*8] - add r8,rax - adc r9,rdx - and r11,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[0 1 2] * b.n[2 1 0] - mov rax,[rdi+0*8] - mul rbx - add r8,rax - adc r9,rdx - - mov rax,[rdi+1*8] - mul r15 - add r8,rax - adc r9,rdx - - mov rax,[rdi+2*8] - mul r14 - mov r12,rbp - mov rcx,[rsi+3*8] - add r8,rax - adc r9,rdx - and r12,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[0 1 2 3] * b.n[3 2 1 0] - mov rax,[rdi+0*8] - mul rcx - add r8,rax - adc r9,rdx - - mov rax,[rdi+1*8] - mul rbx - add r8,rax - adc r9,rdx - - mov rax,[rdi+2*8] - mul r15 - add r8,rax - adc r9,rdx - - mov rax,[rdi+3*8] - mul r14 - mov r13,rbp - mov rsi,[rsi+4*8] ; load b.n[4] and destroy pointer - add r8,rax - adc r9,rdx - and r13,r8 - - shrd r8,r9,52 - xor r9,r9 - - - ;; c+=a.n[0 1 2 3 4] * b.n[4 3 2 1 0] - mov rax,[rdi+0*8] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,[rdi+1*8] - mul rcx - add r8,rax - adc r9,rdx - - mov rax,[rdi+2*8] - mul rbx - add r8,rax - adc r9,rdx - - mov rax,[rdi+3*8] - mul r15 - add r8,rax - adc r9,rdx - - mov rax,[rdi+4*8] - mul r14 - mov r14,rbp ; load modulus into t4 and destroy a.n[0] - add r8,rax - adc r9,rdx - and r14,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[1 2 3 4] * b.n[4 3 2 1] - mov rax,[rdi+1*8] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,[rdi+2*8] - mul rcx - add r8,rax - adc r9,rdx - - mov rax,[rdi+3*8] - mul rbx - add r8,rax - adc r9,rdx - - mov rax,[rdi+4*8] - mul r15 - mov r15,rbp - add r8,rax - adc r9,rdx - - and r15,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[2 3 4] * b.n[4 3 2] - mov rax,[rdi+2*8] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,[rdi+3*8] - mul rcx - add r8,rax - adc r9,rdx - - mov rax,[rdi+4*8] - mul rbx - mov rbx,rbp - add r8,rax - adc r9,rdx - - and rbx,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[3 4] * b.n[4 3] - mov rax,[rdi+3*8] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,[rdi+4*8] - mul rcx - mov rcx,rbp - add r8,rax - adc r9,rdx - and rcx,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[4] * b.n[4] - mov rax,[rdi+4*8] - mul rsi - ;; mov rbp,rbp ; modulus already there! - add r8,rax - adc r9,rdx - and rbp,r8 - shrd r8,r9,52 - xor r9,r9 - - mov rsi,r8 ; load c into t9 and destroy b.n[4] - - ;; ******************************************************* -common_exit_norm: - mov rdi,01000003D10h ; load constant - - mov rax,r15 ; get t5 - mul rdi - add rax,r10 ; +t0 - adc rdx,0 - mov r10,0FFFFFFFFFFFFFh ; modulus. Sadly, we ran out of registers! - mov r8,rax ; +c - and r10,rax - shrd r8,rdx,52 - xor r9,r9 - - mov rax,rbx ; get t6 - mul rdi - add rax,r11 ; +t1 - adc rdx,0 - mov r11,0FFFFFFFFFFFFFh ; modulus - add r8,rax ; +c - adc r9,rdx - and r11,r8 - shrd r8,r9,52 - xor r9,r9 - - mov rax,rcx ; get t7 - mul rdi - add rax,r12 ; +t2 - adc rdx,0 - pop rbx ; retrieve pointer to this.n - mov r12,0FFFFFFFFFFFFFh ; modulus - add r8,rax ; +c - adc r9,rdx - and r12,r8 - mov [rbx+2*8],r12 ; mov into this.n[2] - shrd r8,r9,52 - xor r9,r9 - - mov rax,rbp ; get t8 - mul rdi - add rax,r13 ; +t3 - adc rdx,0 - mov r13,0FFFFFFFFFFFFFh ; modulus - add r8,rax ; +c - adc r9,rdx - and r13,r8 - mov [rbx+3*8],r13 ; -> this.n[3] - shrd r8,r9,52 - xor r9,r9 - - mov rax,rsi ; get t9 - mul rdi - add rax,r14 ; +t4 - adc rdx,0 - mov r14,0FFFFFFFFFFFFh ; !!! - add r8,rax ; +c - adc r9,rdx - and r14,r8 - mov [rbx+4*8],r14 ; -> this.n[4] - shrd r8,r9,48 ; !!! - xor r9,r9 - - mov rax,01000003D1h - mul r8 - add rax,r10 - adc rdx,0 - mov r10,0FFFFFFFFFFFFFh ; modulus - mov r8,rax - and rax,r10 - shrd r8,rdx,52 - mov [rbx+0*8],rax ; -> this.n[0] - add r8,r11 - mov [rbx+1*8],r8 ; -> this.n[1] - - pop r15 - pop r14 - pop r13 - pop r12 - pop rbx - pop rbp - ret - - - ;; PROC ExSetSquare - ;; Register Layout: - ;; INPUT: rdi = a.n - ;; rsi = this.a - ;; INTERNAL: rdx:rax = multiplication accumulator - ;; r9:r8 = c - ;; r10-r13 = t0-t3 - ;; r14 = a.n[0] / t4 - ;; r15 = a.n[1] / t5 - ;; rbx = a.n[2] / t6 - ;; rcx = a.n[3] / t7 - ;; rbp = 0FFFFFFFFFFFFFh / t8 - ;; rsi = a.n[4] / t9 - GLOBAL SYM(secp256k1_fe_sqr_inner) - ALIGN 32 -SYM(secp256k1_fe_sqr_inner): - push rbp - push rbx - push r12 - push r13 - push r14 - push r15 - push rsi - mov rbp,0FFFFFFFFFFFFFh - - ;; c=a.n[0] * a.n[0] - mov r14,[rdi+0*8] ; r14=a.n[0] - mov r10,rbp ; modulus - mov rax,r14 - mul rax - mov r15,[rdi+1*8] ; a.n[1] - add r14,r14 ; r14=2*a.n[0] - mov r8,rax - and r10,rax ; only need lower qword - shrd r8,rdx,52 - xor r9,r9 - - ;; c+=2*a.n[0] * a.n[1] - mov rax,r14 ; r14=2*a.n[0] - mul r15 - mov rbx,[rdi+2*8] ; rbx=a.n[2] - mov r11,rbp ; modulus - add r8,rax - adc r9,rdx - and r11,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[0]*a.n[2]+a.n[1]*a.n[1] - mov rax,r14 - mul rbx - add r8,rax - adc r9,rdx - - mov rax,r15 - mov r12,rbp ; modulus - mul rax - mov rcx,[rdi+3*8] ; rcx=a.n[3] - add r15,r15 ; r15=a.n[1]*2 - add r8,rax - adc r9,rdx - and r12,r8 ; only need lower dword - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[0]*a.n[3]+2*a.n[1]*a.n[2] - mov rax,r14 - mul rcx - add r8,rax - adc r9,rdx - - mov rax,r15 ; rax=2*a.n[1] - mov r13,rbp ; modulus - mul rbx - mov rsi,[rdi+4*8] ; rsi=a.n[4] - add r8,rax - adc r9,rdx - and r13,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[0]*a.n[4]+2*a.n[1]*a.n[3]+a.n[2]*a.n[2] - mov rax,r14 ; last time we need 2*a.n[0] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,r15 - mul rcx - mov r14,rbp ; modulus - add r8,rax - adc r9,rdx - - mov rax,rbx - mul rax - add rbx,rbx ; rcx=2*a.n[2] - add r8,rax - adc r9,rdx - and r14,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[1]*a.n[4]+2*a.n[2]*a.n[3] - mov rax,r15 ; last time we need 2*a.n[1] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,rbx - mul rcx - mov r15,rbp ; modulus - add r8,rax - adc r9,rdx - and r15,r8 - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[2]*a.n[4]+a.n[3]*a.n[3] - mov rax,rbx ; last time we need 2*a.n[2] - mul rsi - add r8,rax - adc r9,rdx - - mov rax,rcx ; a.n[3] - mul rax - mov rbx,rbp ; modulus - add r8,rax - adc r9,rdx - and rbx,r8 ; only need lower dword - lea rax,[2*rcx] - shrd r8,r9,52 - xor r9,r9 - - ;; c+=2*a.n[3]*a.n[4] - mul rsi - mov rcx,rbp ; modulus - add r8,rax - adc r9,rdx - and rcx,r8 ; only need lower dword - shrd r8,r9,52 - xor r9,r9 - - ;; c+=a.n[4]*a.n[4] - mov rax,rsi - mul rax - ;; mov rbp,rbp ; modulus is already there! - add r8,rax - adc r9,rdx - and rbp,r8 - shrd r8,r9,52 - xor r9,r9 - - mov rsi,r8 - - ;; ******************************************************* - jmp common_exit_norm - end - - diff --git a/src/field_5x52_asm_impl.h b/src/field_5x52_asm_impl.h index f29605b11..98cc004bf 100644 --- a/src/field_5x52_asm_impl.h +++ b/src/field_5x52_asm_impl.h @@ -1,13 +1,502 @@ /********************************************************************** - * Copyright (c) 2013 Pieter Wuille * + * Copyright (c) 2013-2014 Diederik Huys, Pieter Wuille * * Distributed under the MIT software license, see the accompanying * * file COPYING or http://www.opensource.org/licenses/mit-license.php.* **********************************************************************/ +/** + * Changelog: + * - March 2013, Diederik Huys: original version + * - November 2014, Pieter Wuille: updated to use Peter Dettman's parallel multiplication algorithm + * - December 2014, Pieter Wuille: converted from YASM to GCC inline assembly + */ + #ifndef _SECP256K1_FIELD_INNER5X52_IMPL_H_ #define _SECP256K1_FIELD_INNER5X52_IMPL_H_ -void __attribute__ ((sysv_abi)) secp256k1_fe_mul_inner(const uint64_t *a, const uint64_t *b, uint64_t *r); -void __attribute__ ((sysv_abi)) secp256k1_fe_sqr_inner(const uint64_t *a, uint64_t *r); +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * r15:rcx = d + * r10-r14 = a0-a4 + * rbx = b + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + + /* d += a3 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rcx\n" + "movq %%rdx,%%r15\n" + /* d += a2 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d = a0 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c = a4 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* d += a4 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a0 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* t4 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a4 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a1 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* u0 = d & M (%%rsi) */ + "movq %%rcx,%%rsi\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a1 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a4 * b2 */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a2 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%r15,%%rcx\n" + "xorq %%r15,%%r15\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a2 * b0 */ + "movq 0(%%rbx),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a1 * b1 */ + "movq 8(%%rbx),%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* c += a0 * b2 (last use of %%r10 = a0) */ + "movq 16(%%rbx),%%rax\n" + "mulq %%r10\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0), t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* d += a4 * b3 */ + "movq 24(%%rbx),%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* d += a3 * b4 */ + "movq 32(%%rbx),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rcx\n" + "adcq %%rdx,%%r15\n" + /* c += (d & M) * R */ + "movq %%rcx,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rcx only) */ + "shrdq $52,%%r15,%%rcx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rcx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "movq $0xfffffffffffff,%%rdx\n" + "andq %%rdx,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "b"(b), "D"(r) +: "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} + +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { +/** + * Registers: rdx:rax = multiplication accumulator + * r9:r8 = c + * rcx:rbx = d + * r10-r14 = a0-a4 + * r15 = M (0xfffffffffffff) + * rdi = r + * rsi = a / t? + */ + uint64_t tmp1, tmp2, tmp3; +__asm__ __volatile__( + "movq 0(%%rsi),%%r10\n" + "movq 8(%%rsi),%%r11\n" + "movq 16(%%rsi),%%r12\n" + "movq 24(%%rsi),%%r13\n" + "movq 32(%%rsi),%%r14\n" + "movq $0xfffffffffffff,%%r15\n" + + /* d = (a0*2) * a3 */ + "leaq (%%r10,%%r10,1),%%rax\n" + "mulq %%r13\n" + "movq %%rax,%%rbx\n" + "movq %%rdx,%%rcx\n" + /* d += (a1*2) * a2 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c = a4 * a4 */ + "movq %%r14,%%rax\n" + "mulq %%r14\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += (c & M) * R */ + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* t3 (tmp1) = d & M */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + "movq %%rsi,%q1\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* a4 *= 2 */ + "addq %%r14,%%r14\n" + /* d += a0 * a4 */ + "movq %%r10,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d+= (a1*2) * a3 */ + "leaq (%%r11,%%r11,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a2 * a2 */ + "movq %%r12,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += c * R */ + "movq %%r8,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* t4 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* tx = t4 >> 48 (tmp3) */ + "movq %%rsi,%%rax\n" + "shrq $48,%%rax\n" + "movq %%rax,%q3\n" + /* t4 &= (M >> 4) (tmp2) */ + "movq $0xffffffffffff,%%rax\n" + "andq %%rax,%%rsi\n" + "movq %%rsi,%q2\n" + /* c = a0 * a0 */ + "movq %%r10,%%rax\n" + "mulq %%r10\n" + "movq %%rax,%%r8\n" + "movq %%rdx,%%r9\n" + /* d += a1 * a4 */ + "movq %%r11,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += (a2*2) * a3 */ + "leaq (%%r12,%%r12,1),%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* u0 = d & M (%%rsi) */ + "movq %%rbx,%%rsi\n" + "andq %%r15,%%rsi\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* u0 = (u0 << 4) | tx (%%rsi) */ + "shlq $4,%%rsi\n" + "movq %q3,%%rax\n" + "orq %%rax,%%rsi\n" + /* c += u0 * (R >> 4) */ + "movq $0x1000003d1,%%rax\n" + "mulq %%rsi\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[0] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,0(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* a0 *= 2 */ + "addq %%r10,%%r10\n" + /* c += a0 * a1 */ + "movq %%r10,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a2 * a4 */ + "movq %%r12,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* d += a3 * a3 */ + "movq %%r13,%%rax\n" + "mulq %%r13\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 */ + "shrdq $52,%%rcx,%%rbx\n" + "xorq %%rcx,%%rcx\n" + /* r[1] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,8(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += a0 * a2 (last use of %%r10) */ + "movq %%r10,%%rax\n" + "mulq %%r12\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* fetch t3 (%%r10, overwrites a0),t4 (%%rsi) */ + "movq %q2,%%rsi\n" + "movq %q1,%%r10\n" + /* c += a1 * a1 */ + "movq %%r11,%%rax\n" + "mulq %%r11\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d += a3 * a4 */ + "movq %%r13,%%rax\n" + "mulq %%r14\n" + "addq %%rax,%%rbx\n" + "adcq %%rdx,%%rcx\n" + /* c += (d & M) * R */ + "movq %%rbx,%%rax\n" + "andq %%r15,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* d >>= 52 (%%rbx only) */ + "shrdq $52,%%rcx,%%rbx\n" + /* r[2] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,16(%%rdi)\n" + /* c >>= 52 */ + "shrdq $52,%%r9,%%r8\n" + "xorq %%r9,%%r9\n" + /* c += t3 */ + "addq %%r10,%%r8\n" + /* c += d * R */ + "movq %%rbx,%%rax\n" + "movq $0x1000003d10,%%rdx\n" + "mulq %%rdx\n" + "addq %%rax,%%r8\n" + "adcq %%rdx,%%r9\n" + /* r[3] = c & M */ + "movq %%r8,%%rax\n" + "andq %%r15,%%rax\n" + "movq %%rax,24(%%rdi)\n" + /* c >>= 52 (%%r8 only) */ + "shrdq $52,%%r9,%%r8\n" + /* c += t4 (%%r8 only) */ + "addq %%rsi,%%r8\n" + /* r[4] = c */ + "movq %%r8,32(%%rdi)\n" +: "+S"(a), "=m"(tmp1), "=m"(tmp2), "=m"(tmp3) +: "D"(r) +: "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "cc", "memory" +); +} #endif diff --git a/src/field_5x52_impl.h b/src/field_5x52_impl.h index 75b210eaf..63176d6de 100644 --- a/src/field_5x52_impl.h +++ b/src/field_5x52_impl.h @@ -102,6 +102,50 @@ static void secp256k1_fe_normalize(secp256k1_fe_t *r) { #endif } +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r) { + uint64_t t0 = r->n[0], t1 = r->n[1], t2 = r->n[2], t3 = r->n[3], t4 = r->n[4]; + + /* Reduce t4 at the start so there will be at most a single carry from the first pass */ + uint64_t x = t4 >> 48; t4 &= 0x0FFFFFFFFFFFFULL; + uint64_t m; + + /* The first pass ensures the magnitude is 1, ... */ + t0 += x * 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; m = t1; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; m &= t2; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; m &= t3; + + /* ... except for a possible carry at bit 48 of t4 (i.e. bit 256 of the field element) */ + VERIFY_CHECK(t4 >> 49 == 0); + + /* At most a single final reduction is needed; check if the value is >= the field characteristic */ + x = (t4 >> 48) | ((t4 == 0x0FFFFFFFFFFFFULL) & (m == 0xFFFFFFFFFFFFFULL) + & (t0 >= 0xFFFFEFFFFFC2FULL)); + + if (x) { + t0 += 0x1000003D1ULL; + t1 += (t0 >> 52); t0 &= 0xFFFFFFFFFFFFFULL; + t2 += (t1 >> 52); t1 &= 0xFFFFFFFFFFFFFULL; + t3 += (t2 >> 52); t2 &= 0xFFFFFFFFFFFFFULL; + t4 += (t3 >> 52); t3 &= 0xFFFFFFFFFFFFFULL; + + /* If t4 didn't carry to bit 48 already, then it should have after any final reduction */ + VERIFY_CHECK(t4 >> 48 == x); + + /* Mask off the possible multiple of 2^256 from the final reduction */ + t4 &= 0x0FFFFFFFFFFFFULL; + } + + r->n[0] = t0; r->n[1] = t1; r->n[2] = t2; r->n[3] = t3; r->n[4] = t4; + +#ifdef VERIFY + r->magnitude = 1; + r->normalized = 1; + secp256k1_fe_verify(r); +#endif +} + SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a) { r->n[0] = a; r->n[1] = r->n[2] = r->n[3] = r->n[4] = 0; @@ -255,7 +299,7 @@ static void secp256k1_fe_mul(secp256k1_fe_t *r, const secp256k1_fe_t *a, const s secp256k1_fe_verify(b); VERIFY_CHECK(r != b); #endif - secp256k1_fe_mul_inner(a->n, b->n, r->n); + secp256k1_fe_mul_inner(r->n, a->n, b->n); #ifdef VERIFY r->magnitude = 1; r->normalized = 0; @@ -268,7 +312,7 @@ static void secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { VERIFY_CHECK(a->magnitude <= 8); secp256k1_fe_verify(a); #endif - secp256k1_fe_sqr_inner(a->n, r->n); + secp256k1_fe_sqr_inner(r->n, a->n); #ifdef VERIFY r->magnitude = 1; r->normalized = 0; diff --git a/src/field_5x52_int128_impl.h b/src/field_5x52_int128_impl.h index e552fb431..ec631833c 100644 --- a/src/field_5x52_int128_impl.h +++ b/src/field_5x52_int128_impl.h @@ -15,7 +15,7 @@ #define VERIFY_BITS(x, n) do { } while(0) #endif -SECP256K1_INLINE static void secp256k1_fe_mul_inner(const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b, uint64_t *r) { +SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint64_t *r, const uint64_t *a, const uint64_t * SECP256K1_RESTRICT b) { VERIFY_BITS(a[0], 56); VERIFY_BITS(a[1], 56); VERIFY_BITS(a[2], 56); @@ -152,7 +152,7 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(const uint64_t *a, const uin /* [r4 r3 r2 r1 r0] = [p8 p7 p6 p5 p4 p3 p2 p1 p0] */ } -SECP256K1_INLINE static void secp256k1_fe_sqr_inner(const uint64_t *a, uint64_t *r) { +SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint64_t *r, const uint64_t *a) { VERIFY_BITS(a[0], 56); VERIFY_BITS(a[1], 56); VERIFY_BITS(a[2], 56); diff --git a/src/field_gmp_impl.h b/src/field_gmp_impl.h index 8af7dd68f..73a55c4f0 100644 --- a/src/field_gmp_impl.h +++ b/src/field_gmp_impl.h @@ -46,6 +46,10 @@ static void secp256k1_fe_normalize(secp256k1_fe_t *r) { mpn_sub(r->n, r->n, FIELD_LIMBS, secp256k1_field_p, FIELD_LIMBS); } +static void secp256k1_fe_normalize_var(secp256k1_fe_t *r) { + secp256k1_fe_normalize(r); +} + SECP256K1_INLINE static void secp256k1_fe_set_int(secp256k1_fe_t *r, int a) { r->n[0] = a; for (int i=1; i 0) { - int j = i--; - secp256k1_fe_mul(&r[j], &r[i], &u); - secp256k1_fe_mul(&u, &u, &a[j]); - } - - r[0] = u; -} - static void secp256k1_fe_inv_all_var(size_t len, secp256k1_fe_t r[len], const secp256k1_fe_t a[len]) { if (len < 1) return; @@ -277,7 +253,7 @@ static void secp256k1_fe_start(void) { #endif if (secp256k1_fe_consts == NULL) { secp256k1_fe_inner_start(); - secp256k1_fe_consts_t *ret = (secp256k1_fe_consts_t*)malloc(sizeof(secp256k1_fe_consts_t)); + secp256k1_fe_consts_t *ret = (secp256k1_fe_consts_t*)checked_malloc(sizeof(secp256k1_fe_consts_t)); #ifndef USE_NUM_NONE secp256k1_num_set_bin(&ret->p, secp256k1_fe_consts_p, sizeof(secp256k1_fe_consts_p)); #endif diff --git a/src/group.h b/src/group.h index 0f14bd25f..ecfebcdc0 100644 --- a/src/group.h +++ b/src/group.h @@ -51,15 +51,16 @@ static void secp256k1_ge_set_xy(secp256k1_ge_t *r, const secp256k1_fe_t *x, cons /** Set a group element (affine) equal to the point with the given X coordinate, and given oddness * for Y. Return value indicates whether the result is valid. */ -static int secp256k1_ge_set_xo(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd); +static int secp256k1_ge_set_xo_var(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd); /** Check whether a group element is the point at infinity. */ static int secp256k1_ge_is_infinity(const secp256k1_ge_t *a); /** Check whether a group element is valid (i.e., on the curve). */ -static int secp256k1_ge_is_valid(const secp256k1_ge_t *a); +static int secp256k1_ge_is_valid_var(const secp256k1_ge_t *a); static void secp256k1_ge_neg(secp256k1_ge_t *r, const secp256k1_ge_t *a); +static void secp256k1_ge_neg_var(secp256k1_ge_t *r, const secp256k1_ge_t *a); /** Get a hex representation of a point. *rlen will be overwritten with the real length. */ static void secp256k1_ge_get_hex(char *r, int *rlen, const secp256k1_ge_t *a); @@ -84,7 +85,7 @@ static void secp256k1_gej_set_ge(secp256k1_gej_t *r, const secp256k1_ge_t *a); static void secp256k1_gej_get_x_var(secp256k1_fe_t *r, const secp256k1_gej_t *a); /** Set r equal to the inverse of a (i.e., mirrored around the X axis) */ -static void secp256k1_gej_neg(secp256k1_gej_t *r, const secp256k1_gej_t *a); +static void secp256k1_gej_neg_var(secp256k1_gej_t *r, const secp256k1_gej_t *a); /** Check whether a group element is the point at infinity. */ static int secp256k1_gej_is_infinity(const secp256k1_gej_t *a); diff --git a/src/group_impl.h b/src/group_impl.h index cbd0d8c4f..1ab5d5fe7 100644 --- a/src/group_impl.h +++ b/src/group_impl.h @@ -28,13 +28,17 @@ static int secp256k1_ge_is_infinity(const secp256k1_ge_t *a) { } static void secp256k1_ge_neg(secp256k1_ge_t *r, const secp256k1_ge_t *a) { - r->infinity = a->infinity; - r->x = a->x; - r->y = a->y; + *r = *a; secp256k1_fe_normalize(&r->y); secp256k1_fe_negate(&r->y, &r->y, 1); } +static void secp256k1_ge_neg_var(secp256k1_ge_t *r, const secp256k1_ge_t *a) { + *r = *a; + secp256k1_fe_normalize_var(&r->y); + secp256k1_fe_negate(&r->y, &r->y, 1); +} + static void secp256k1_ge_get_hex(char *r, int *rlen, const secp256k1_ge_t *a) { char cx[65]; int lx=65; char cy[65]; int ly=65; @@ -85,15 +89,16 @@ static void secp256k1_ge_set_gej_var(secp256k1_ge_t *r, secp256k1_gej_t *a) { static void secp256k1_ge_set_all_gej_var(size_t len, secp256k1_ge_t r[len], const secp256k1_gej_t a[len]) { size_t count = 0; - secp256k1_fe_t az[len]; + secp256k1_fe_t *az = checked_malloc(sizeof(secp256k1_fe_t) * len); for (size_t i=0; iy); } -static int secp256k1_ge_set_xo(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd) { +static int secp256k1_ge_set_xo_var(secp256k1_ge_t *r, const secp256k1_fe_t *x, int odd) { r->x = *x; secp256k1_fe_t x2; secp256k1_fe_sqr(&x2, x); secp256k1_fe_t x3; secp256k1_fe_mul(&x3, x, &x2); r->infinity = 0; secp256k1_fe_t c; secp256k1_fe_set_int(&c, 7); secp256k1_fe_add(&c, &x3); - if (!secp256k1_fe_sqrt(&r->y, &c)) + if (!secp256k1_fe_sqrt_var(&r->y, &c)) return 0; - secp256k1_fe_normalize(&r->y); + secp256k1_fe_normalize_var(&r->y); if (secp256k1_fe_is_odd(&r->y) != odd) secp256k1_fe_negate(&r->y, &r->y, 1); return 1; @@ -162,12 +168,12 @@ static void secp256k1_gej_get_x_var(secp256k1_fe_t *r, const secp256k1_gej_t *a) secp256k1_fe_mul(r, &a->x, &zi2); } -static void secp256k1_gej_neg(secp256k1_gej_t *r, const secp256k1_gej_t *a) { +static void secp256k1_gej_neg_var(secp256k1_gej_t *r, const secp256k1_gej_t *a) { r->infinity = a->infinity; r->x = a->x; r->y = a->y; r->z = a->z; - secp256k1_fe_normalize(&r->y); + secp256k1_fe_normalize_var(&r->y); secp256k1_fe_negate(&r->y, &r->y, 1); } @@ -175,7 +181,7 @@ static int secp256k1_gej_is_infinity(const secp256k1_gej_t *a) { return a->infinity; } -static int secp256k1_gej_is_valid(const secp256k1_gej_t *a) { +static int secp256k1_gej_is_valid_var(const secp256k1_gej_t *a) { if (a->infinity) return 0; /** y^2 = x^3 + 7 @@ -189,12 +195,12 @@ static int secp256k1_gej_is_valid(const secp256k1_gej_t *a) { secp256k1_fe_t z6; secp256k1_fe_sqr(&z6, &z2); secp256k1_fe_mul(&z6, &z6, &z2); secp256k1_fe_mul_int(&z6, 7); secp256k1_fe_add(&x3, &z6); - secp256k1_fe_normalize(&y2); - secp256k1_fe_normalize(&x3); + secp256k1_fe_normalize_var(&y2); + secp256k1_fe_normalize_var(&x3); return secp256k1_fe_equal(&y2, &x3); } -static int secp256k1_ge_is_valid(const secp256k1_ge_t *a) { +static int secp256k1_ge_is_valid_var(const secp256k1_ge_t *a) { if (a->infinity) return 0; /* y^2 = x^3 + 7 */ @@ -202,8 +208,8 @@ static int secp256k1_ge_is_valid(const secp256k1_ge_t *a) { secp256k1_fe_t x3; secp256k1_fe_sqr(&x3, &a->x); secp256k1_fe_mul(&x3, &x3, &a->x); secp256k1_fe_t c; secp256k1_fe_set_int(&c, 7); secp256k1_fe_add(&x3, &c); - secp256k1_fe_normalize(&y2); - secp256k1_fe_normalize(&x3); + secp256k1_fe_normalize_var(&y2); + secp256k1_fe_normalize_var(&x3); return secp256k1_fe_equal(&y2, &x3); } @@ -255,11 +261,11 @@ static void secp256k1_gej_add_var(secp256k1_gej_t *r, const secp256k1_gej_t *a, secp256k1_fe_t u2; secp256k1_fe_mul(&u2, &b->x, &z12); secp256k1_fe_t s1; secp256k1_fe_mul(&s1, &a->y, &z22); secp256k1_fe_mul(&s1, &s1, &b->z); secp256k1_fe_t s2; secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); - secp256k1_fe_normalize(&u1); - secp256k1_fe_normalize(&u2); + secp256k1_fe_normalize_var(&u1); + secp256k1_fe_normalize_var(&u2); if (secp256k1_fe_equal(&u1, &u2)) { - secp256k1_fe_normalize(&s1); - secp256k1_fe_normalize(&s2); + secp256k1_fe_normalize_var(&s1); + secp256k1_fe_normalize_var(&s2); if (secp256k1_fe_equal(&s1, &s2)) { secp256k1_gej_double_var(r, a); } else { @@ -294,15 +300,14 @@ static void secp256k1_gej_add_ge_var(secp256k1_gej_t *r, const secp256k1_gej_t * } r->infinity = 0; secp256k1_fe_t z12; secp256k1_fe_sqr(&z12, &a->z); - secp256k1_fe_t u1 = a->x; secp256k1_fe_normalize(&u1); + secp256k1_fe_t u1 = a->x; secp256k1_fe_t u2; secp256k1_fe_mul(&u2, &b->x, &z12); - secp256k1_fe_t s1 = a->y; secp256k1_fe_normalize(&s1); + secp256k1_fe_t s1 = a->y; secp256k1_fe_normalize_var(&s1); secp256k1_fe_t s2; secp256k1_fe_mul(&s2, &b->y, &z12); secp256k1_fe_mul(&s2, &s2, &a->z); - secp256k1_fe_normalize(&u1); - secp256k1_fe_normalize(&u2); + secp256k1_fe_normalize_var(&u1); + secp256k1_fe_normalize_var(&u2); if (secp256k1_fe_equal(&u1, &u2)) { - secp256k1_fe_normalize(&s1); - secp256k1_fe_normalize(&s2); + secp256k1_fe_normalize_var(&s2); if (secp256k1_fe_equal(&s1, &s2)) { secp256k1_gej_double_var(r, a); } else { @@ -434,7 +439,7 @@ static void secp256k1_ge_start(void) { }; #endif if (secp256k1_ge_consts == NULL) { - secp256k1_ge_consts_t *ret = (secp256k1_ge_consts_t*)malloc(sizeof(secp256k1_ge_consts_t)); + secp256k1_ge_consts_t *ret = (secp256k1_ge_consts_t*)checked_malloc(sizeof(secp256k1_ge_consts_t)); #ifdef USE_ENDOMORPHISM VERIFY_CHECK(secp256k1_fe_set_b32(&ret->beta, secp256k1_ge_consts_beta)); #endif diff --git a/src/scalar_impl.h b/src/scalar_impl.h index 7fc159df7..4408cce2d 100644 --- a/src/scalar_impl.h +++ b/src/scalar_impl.h @@ -40,7 +40,7 @@ static void secp256k1_scalar_start(void) { return; /* Allocate. */ - secp256k1_scalar_consts_t *ret = (secp256k1_scalar_consts_t*)malloc(sizeof(secp256k1_scalar_consts_t)); + secp256k1_scalar_consts_t *ret = (secp256k1_scalar_consts_t*)checked_malloc(sizeof(secp256k1_scalar_consts_t)); #ifndef USE_NUM_NONE static const unsigned char secp256k1_scalar_consts_order[] = { diff --git a/src/secp256k1.c b/src/secp256k1.c index 20fc27df7..0328db88f 100644 --- a/src/secp256k1.c +++ b/src/secp256k1.c @@ -40,15 +40,12 @@ void secp256k1_stop(void) { secp256k1_fe_stop(); } -int secp256k1_ecdsa_verify(const unsigned char *msg, int msglen, const unsigned char *sig, int siglen, const unsigned char *pubkey, int pubkeylen) { +int secp256k1_ecdsa_verify(const unsigned char *msg32, const unsigned char *sig, int siglen, const unsigned char *pubkey, int pubkeylen) { DEBUG_CHECK(secp256k1_ecmult_consts != NULL); - DEBUG_CHECK(msg != NULL); - DEBUG_CHECK(msglen <= 32); + DEBUG_CHECK(msg32 != NULL); DEBUG_CHECK(sig != NULL); DEBUG_CHECK(pubkey != NULL); - unsigned char msg32[32] = {0}; - memcpy(msg32 + 32 - msglen, msg, msglen); int ret = -3; secp256k1_scalar_t m; secp256k1_ecdsa_sig_t s; @@ -72,10 +69,9 @@ end: return ret; } -int secp256k1_ecdsa_sign(const unsigned char *message, int messagelen, unsigned char *signature, int *signaturelen, const unsigned char *seckey, const unsigned char *nonce) { +int secp256k1_ecdsa_sign(const unsigned char *msg32, unsigned char *signature, int *signaturelen, const unsigned char *seckey, const unsigned char *nonce) { DEBUG_CHECK(secp256k1_ecmult_gen_consts != NULL); - DEBUG_CHECK(message != NULL); - DEBUG_CHECK(messagelen <= 32); + DEBUG_CHECK(msg32 != NULL); DEBUG_CHECK(signature != NULL); DEBUG_CHECK(signaturelen != NULL); DEBUG_CHECK(seckey != NULL); @@ -85,12 +81,7 @@ int secp256k1_ecdsa_sign(const unsigned char *message, int messagelen, unsigned secp256k1_scalar_set_b32(&sec, seckey, NULL); int overflow = 0; secp256k1_scalar_set_b32(&non, nonce, &overflow); - { - unsigned char c[32] = {0}; - memcpy(c + 32 - messagelen, message, messagelen); - secp256k1_scalar_set_b32(&msg, c, NULL); - memset(c, 0, 32); - } + secp256k1_scalar_set_b32(&msg, msg32, NULL); int ret = !secp256k1_scalar_is_zero(&non) && !overflow; secp256k1_ecdsa_sig_t sig; if (ret) { @@ -105,10 +96,9 @@ int secp256k1_ecdsa_sign(const unsigned char *message, int messagelen, unsigned return ret; } -int secp256k1_ecdsa_sign_compact(const unsigned char *message, int messagelen, unsigned char *sig64, const unsigned char *seckey, const unsigned char *nonce, int *recid) { +int secp256k1_ecdsa_sign_compact(const unsigned char *msg32, unsigned char *sig64, const unsigned char *seckey, const unsigned char *nonce, int *recid) { DEBUG_CHECK(secp256k1_ecmult_gen_consts != NULL); - DEBUG_CHECK(message != NULL); - DEBUG_CHECK(messagelen <= 32); + DEBUG_CHECK(msg32 != NULL); DEBUG_CHECK(sig64 != NULL); DEBUG_CHECK(seckey != NULL); DEBUG_CHECK(nonce != NULL); @@ -117,12 +107,7 @@ int secp256k1_ecdsa_sign_compact(const unsigned char *message, int messagelen, u secp256k1_scalar_set_b32(&sec, seckey, NULL); int overflow = 0; secp256k1_scalar_set_b32(&non, nonce, &overflow); - { - unsigned char c[32] = {0}; - memcpy(c + 32 - messagelen, message, messagelen); - secp256k1_scalar_set_b32(&msg, c, NULL); - memset(c, 0, 32); - } + secp256k1_scalar_set_b32(&msg, msg32, NULL); int ret = !secp256k1_scalar_is_zero(&non) && !overflow; secp256k1_ecdsa_sig_t sig; if (ret) { @@ -138,18 +123,15 @@ int secp256k1_ecdsa_sign_compact(const unsigned char *message, int messagelen, u return ret; } -int secp256k1_ecdsa_recover_compact(const unsigned char *msg, int msglen, const unsigned char *sig64, unsigned char *pubkey, int *pubkeylen, int compressed, int recid) { +int secp256k1_ecdsa_recover_compact(const unsigned char *msg32, const unsigned char *sig64, unsigned char *pubkey, int *pubkeylen, int compressed, int recid) { DEBUG_CHECK(secp256k1_ecmult_consts != NULL); - DEBUG_CHECK(msg != NULL); - DEBUG_CHECK(msglen <= 32); + DEBUG_CHECK(msg32 != NULL); DEBUG_CHECK(sig64 != NULL); DEBUG_CHECK(pubkey != NULL); DEBUG_CHECK(pubkeylen != NULL); DEBUG_CHECK(recid >= 0 && recid <= 3); int ret = 0; - unsigned char msg32[32] = {0}; - memcpy(msg32 + 32 - msglen, msg, msglen); secp256k1_scalar_t m; secp256k1_ecdsa_sig_t sig; int overflow = 0; diff --git a/src/tests.c b/src/tests.c index 78cdd67f2..7ebb19ff9 100644 --- a/src/tests.c +++ b/src/tests.c @@ -11,6 +11,8 @@ #include #include +#include + #include "secp256k1.c" #include "testrand_impl.h" @@ -46,7 +48,7 @@ void random_group_element_test(secp256k1_ge_t *ge) { secp256k1_fe_t fe; do { random_field_element_test(&fe); - if (secp256k1_ge_set_xo(ge, &fe, secp256k1_rand32() & 1)) + if (secp256k1_ge_set_xo_var(ge, &fe, secp256k1_rand32() & 1)) break; } while(1); } @@ -400,6 +402,30 @@ void scalar_test(void) { CHECK(secp256k1_scalar_eq(&r1, &r2)); } + { + /* Test multiplicative identity. */ + secp256k1_scalar_t r1, v1; + secp256k1_scalar_set_int(&v1,1); + secp256k1_scalar_mul(&r1, &s1, &v1); + CHECK(secp256k1_scalar_eq(&r1, &s1)); + } + + { + /* Test additive identity. */ + secp256k1_scalar_t r1, v0; + secp256k1_scalar_set_int(&v0,0); + secp256k1_scalar_add(&r1, &s1, &v0); + CHECK(secp256k1_scalar_eq(&r1, &s1)); + } + + { + /* Test zero product property. */ + secp256k1_scalar_t r1, v0; + secp256k1_scalar_set_int(&v0,0); + secp256k1_scalar_mul(&r1, &s1, &v0); + CHECK(secp256k1_scalar_eq(&r1, &v0)); + } + } void run_scalar_tests(void) { @@ -411,9 +437,12 @@ void run_scalar_tests(void) { /* (-1)+1 should be zero. */ secp256k1_scalar_t s, o; secp256k1_scalar_set_int(&s, 1); + CHECK(secp256k1_scalar_is_one(&s)); secp256k1_scalar_negate(&o, &s); secp256k1_scalar_add(&o, &o, &s); CHECK(secp256k1_scalar_is_zero(&o)); + secp256k1_scalar_negate(&o, &o); + CHECK(secp256k1_scalar_is_zero(&o)); } #ifndef USE_NUM_NONE @@ -459,14 +488,14 @@ void random_fe_non_zero(secp256k1_fe_t *nz) { void random_fe_non_square(secp256k1_fe_t *ns) { random_fe_non_zero(ns); secp256k1_fe_t r; - if (secp256k1_fe_sqrt(&r, ns)) { + if (secp256k1_fe_sqrt_var(&r, ns)) { secp256k1_fe_negate(ns, ns, 1); } } int check_fe_equal(const secp256k1_fe_t *a, const secp256k1_fe_t *b) { secp256k1_fe_t an = *a; secp256k1_fe_normalize(&an); - secp256k1_fe_t bn = *b; secp256k1_fe_normalize(&bn); + secp256k1_fe_t bn = *b; secp256k1_fe_normalize_var(&bn); return secp256k1_fe_equal(&an, &bn); } @@ -476,6 +505,55 @@ int check_fe_inverse(const secp256k1_fe_t *a, const secp256k1_fe_t *ai) { return check_fe_equal(&x, &one); } +void run_field_misc(void) { + const unsigned char f32_5[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + }; + secp256k1_fe_t x; + secp256k1_fe_t y; + secp256k1_fe_t z; + secp256k1_fe_t q; + secp256k1_fe_t fe5; + CHECK(secp256k1_fe_set_b32(&fe5, f32_5)); + for (int i=0; i<5*count; i++) { + random_fe(&x); + random_fe_non_zero(&y); + /* Test the fe equality and comparison operations. */ + CHECK(secp256k1_fe_cmp_var(&x, &x) == 0); + CHECK(secp256k1_fe_equal(&x, &x)); + z = x; + secp256k1_fe_add(&z,&y); + secp256k1_fe_normalize(&z); + /* Test the conditional move. */ + secp256k1_fe_cmov(&z, &x, 0); + CHECK(secp256k1_fe_equal(&x, &z) == 0); + CHECK(secp256k1_fe_cmp_var(&x, &z) != 0); + secp256k1_fe_cmov(&y, &x, 1); + CHECK(secp256k1_fe_equal(&x, &y)); + /* Test that mul_int, mul, and add agree. */ + secp256k1_fe_add(&y, &x); + secp256k1_fe_add(&y, &x); + z = x; + secp256k1_fe_mul_int(&z, 3); + CHECK(check_fe_equal(&y, &z)); + secp256k1_fe_add(&y, &x); + secp256k1_fe_add(&z, &x); + CHECK(check_fe_equal(&z, &y)); + z = x; + secp256k1_fe_mul_int(&z, 5); + secp256k1_fe_mul(&q, &x, &fe5); + CHECK(check_fe_equal(&z, &q)); + secp256k1_fe_negate(&x, &x, 1); + secp256k1_fe_add(&z, &x); + secp256k1_fe_add(&q, &x); + CHECK(check_fe_equal(&y, &z)); + CHECK(check_fe_equal(&q, &y)); + } +} + void run_field_inv(void) { secp256k1_fe_t x, xi, xii; for (int i=0; i<10*count; i++) { @@ -498,23 +576,6 @@ void run_field_inv_var(void) { } } -void run_field_inv_all(void) { - secp256k1_fe_t x[16], xi[16], xii[16]; - /* Check it's safe to call for 0 elements */ - secp256k1_fe_inv_all(0, xi, x); - for (int i=0; i>=2; + if ((r & 3) == 0) len = (r & 252) >> 3; + r>>=8; + if (len == 65) { + in[0] = (r & 2) ? 4 : (r & 1? 6 : 7); + } else { + in[0] = (r & 1) ? 2 : 3; + } + r>>=2; + if ((r & 7) == 0) in[0] = (r & 2040) >> 3; + r>>=11; + if (len > 1) secp256k1_rand256(&in[1]); + if (len > 33) secp256k1_rand256(&in[33]); + secp256k1_ge_t elem; + secp256k1_ge_t elem2; + if (secp256k1_eckey_pubkey_parse(&elem, in, len)) { + unsigned char out[65]; + unsigned char firstb; + int res; + int size = len; + firstb = in[0]; + /* If the pubkey can be parsed, it should round-trip... */ + CHECK(secp256k1_eckey_pubkey_serialize(&elem, out, &size, len == 33)); + CHECK(size == len); + CHECK(memcmp(&in[1], &out[1], len-1) == 0); + /* ... except for the type of hybrid inputs. */ + if ((in[0] != 6) && (in[0] != 7)) CHECK(in[0] == out[0]); + size = 65; + CHECK(secp256k1_eckey_pubkey_serialize(&elem, in, &size, 0)); + CHECK(size == 65); + CHECK(secp256k1_eckey_pubkey_parse(&elem2, in, size)); + CHECK(ge_equals_ge(&elem,&elem2)); + /* Check that the X9.62 hybrid type is checked. */ + in[0] = (r & 1) ? 6 : 7; + res = secp256k1_eckey_pubkey_parse(&elem2, in, size); + if (firstb == 2 || firstb == 3) { + if (in[0] == firstb + 4) CHECK(res); + else CHECK(!res); + } + if (res) { + CHECK(ge_equals_ge(&elem,&elem2)); + CHECK(secp256k1_eckey_pubkey_serialize(&elem, out, &size, 0)); + CHECK(memcmp(&in[1], &out[1], 64) == 0); + } + } +} + +void run_random_pubkeys(void) { + for (int i=0; i<10*count; i++) { + test_random_pubkeys(); + } +} + void run_ecdsa_end_to_end(void) { for (int i=0; i<64*count; i++) { test_ecdsa_end_to_end(); @@ -995,10 +1127,10 @@ void test_ecdsa_edge_cases(void) { }; unsigned char pubkey[65]; int pubkeylen = 65; - CHECK(!secp256k1_ecdsa_recover_compact(msg32, 32, sig64, pubkey, &pubkeylen, 0, 0)); - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sig64, pubkey, &pubkeylen, 0, 1)); - CHECK(!secp256k1_ecdsa_recover_compact(msg32, 32, sig64, pubkey, &pubkeylen, 0, 2)); - CHECK(!secp256k1_ecdsa_recover_compact(msg32, 32, sig64, pubkey, &pubkeylen, 0, 3)); + CHECK(!secp256k1_ecdsa_recover_compact(msg32, sig64, pubkey, &pubkeylen, 0, 0)); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sig64, pubkey, &pubkeylen, 0, 1)); + CHECK(!secp256k1_ecdsa_recover_compact(msg32, sig64, pubkey, &pubkeylen, 0, 2)); + CHECK(!secp256k1_ecdsa_recover_compact(msg32, sig64, pubkey, &pubkeylen, 0, 3)); /* signature (r,s) = (4,4), which can be recovered with all 4 recids. */ const unsigned char sigb64[64] = { @@ -1016,6 +1148,36 @@ void test_ecdsa_edge_cases(void) { for (int recid = 0; recid < 4; recid++) { /* (4,4) encoded in DER. */ unsigned char sigbder[8] = {0x30, 0x06, 0x02, 0x01, 0x04, 0x02, 0x01, 0x04}; + unsigned char sigcder_zr[7] = {0x30, 0x05, 0x02, 0x00, 0x02, 0x01, 0x01}; + unsigned char sigcder_zs[7] = {0x30, 0x05, 0x02, 0x01, 0x01, 0x02, 0x00}; + unsigned char sigbderalt1[39] = { + 0x30, 0x25, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x04, + }; + unsigned char sigbderalt2[39] = { + 0x30, 0x25, 0x02, 0x01, 0x04, 0x02, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + }; + unsigned char sigbderalt3[40] = { + 0x30, 0x26, 0x02, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x01, 0x04, + }; + unsigned char sigbderalt4[40] = { + 0x30, 0x26, 0x02, 0x01, 0x04, 0x02, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + }; /* (order + r,4) encoded in DER. */ unsigned char sigbderlong[40] = { 0x30, 0x26, 0x02, 0x21, 0x00, 0xFF, 0xFF, 0xFF, @@ -1024,18 +1186,45 @@ void test_ecdsa_edge_cases(void) { 0xE6, 0xAF, 0x48, 0xA0, 0x3B, 0xBF, 0xD2, 0x5E, 0x8C, 0xD0, 0x36, 0x41, 0x45, 0x02, 0x01, 0x04 }; - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sigb64, pubkeyb, &pubkeyblen, 1, recid)); - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigbder, sizeof(sigbder), pubkeyb, pubkeyblen) == 1); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sigb64, pubkeyb, &pubkeyblen, 1, recid)); + CHECK(secp256k1_ecdsa_verify(msg32, sigbder, sizeof(sigbder), pubkeyb, pubkeyblen) == 1); for (int recid2 = 0; recid2 < 4; recid2++) { unsigned char pubkey2b[33]; int pubkey2blen = 33; - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sigb64, pubkey2b, &pubkey2blen, 1, recid2)); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sigb64, pubkey2b, &pubkey2blen, 1, recid2)); /* Verifying with (order + r,4) should always fail. */ - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigbderlong, sizeof(sigbderlong), pubkey2b, pubkey2blen) != 1); + CHECK(secp256k1_ecdsa_verify(msg32, sigbderlong, sizeof(sigbderlong), pubkey2b, pubkey2blen) != 1); } + /* DER parsing tests. */ + /* Zero length r/s. */ + CHECK(secp256k1_ecdsa_verify(msg32, sigcder_zr, sizeof(sigcder_zr), pubkeyb, pubkeyblen) == -2); + CHECK(secp256k1_ecdsa_verify(msg32, sigcder_zs, sizeof(sigcder_zs), pubkeyb, pubkeyblen) == -2); + /* Leading zeros. */ + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt1, sizeof(sigbderalt1), pubkeyb, pubkeyblen) == 1); + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt2, sizeof(sigbderalt2), pubkeyb, pubkeyblen) == 1); + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt3, sizeof(sigbderalt3), pubkeyb, pubkeyblen) == 1); + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt4, sizeof(sigbderalt4), pubkeyb, pubkeyblen) == 1); + sigbderalt3[4] = 1; + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt3, sizeof(sigbderalt3), pubkeyb, pubkeyblen) == -2); + sigbderalt4[7] = 1; + CHECK(secp256k1_ecdsa_verify(msg32, sigbderalt4, sizeof(sigbderalt4), pubkeyb, pubkeyblen) == -2); /* Damage signature. */ sigbder[7]++; - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigbder, sizeof(sigbder), pubkeyb, pubkeyblen) == 0); + CHECK(secp256k1_ecdsa_verify(msg32, sigbder, sizeof(sigbder), pubkeyb, pubkeyblen) == 0); + sigbder[7]--; + CHECK(secp256k1_ecdsa_verify(msg32, sigbder, 6, pubkeyb, pubkeyblen) == -2); + CHECK(secp256k1_ecdsa_verify(msg32, sigbder, sizeof(sigbder)-1, pubkeyb, pubkeyblen) == -2); + for(int i = 0; i<8; i++) { + unsigned char orig = sigbder[i]; + /*Try every single-byte change.*/ + for (int c=0; c<256; c++) { + if (c == orig ) continue; + sigbder[i] = c; + CHECK(secp256k1_ecdsa_verify(msg32, sigbder, sizeof(sigbder), pubkeyb, pubkeyblen) == + (i==4 || i==7) ? 0 : -2 ); + } + sigbder[i] = orig; + } } /* Test the case where ECDSA recomputes a point that is infinity. */ @@ -1069,18 +1258,60 @@ void test_ecdsa_edge_cases(void) { }; unsigned char pubkeyc[65]; int pubkeyclen = 65; - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sigc64, pubkeyc, &pubkeyclen, 0, 0) == 1); - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 1); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sigc64, pubkeyc, &pubkeyclen, 0, 0) == 1); + CHECK(secp256k1_ecdsa_verify(msg32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 1); sigcder[4] = 0; sigc64[31] = 0; - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sigc64, pubkeyb, &pubkeyblen, 1, 0) == 0); - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 0); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sigc64, pubkeyb, &pubkeyblen, 1, 0) == 0); + CHECK(secp256k1_ecdsa_verify(msg32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 0); sigcder[4] = 1; sigcder[7] = 0; sigc64[31] = 1; sigc64[63] = 0; - CHECK(secp256k1_ecdsa_recover_compact(msg32, 32, sigc64, pubkeyb, &pubkeyblen, 1, 0) == 0); - CHECK(secp256k1_ecdsa_verify(msg32, 32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 0); + CHECK(secp256k1_ecdsa_recover_compact(msg32, sigc64, pubkeyb, &pubkeyblen, 1, 0) == 0); + CHECK(secp256k1_ecdsa_verify(msg32, sigcder, sizeof(sigcder), pubkeyc, pubkeyclen) == 0); + } + + /*Signature where s would be zero.*/ + { + const unsigned char nonce[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + const unsigned char key[32] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + }; + unsigned char msg[32] = { + 0x86, 0x41, 0x99, 0x81, 0x06, 0x23, 0x44, 0x53, + 0xaa, 0x5f, 0x9d, 0x6a, 0x31, 0x78, 0xf4, 0xf7, + 0xb8, 0x12, 0xe0, 0x0b, 0x81, 0x7a, 0x77, 0x62, + 0x65, 0xdf, 0xdd, 0x31, 0xb9, 0x3e, 0x29, 0xa9, + }; + unsigned char sig[72]; + int siglen = 72; + CHECK(secp256k1_ecdsa_sign(msg, sig, &siglen, key, nonce) == 0); + msg[31] = 0xaa; + siglen = 72; + CHECK(secp256k1_ecdsa_sign(msg, sig, &siglen, key, nonce) == 1); + } + + /* Privkey export where pubkey is the point at infinity. */ + { + unsigned char privkey[300]; + unsigned char seckey[32] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, + 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, + 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, + }; + int outlen = 300; + CHECK(!secp256k1_ec_privkey_export(seckey, privkey, &outlen, 0)); + CHECK(!secp256k1_ec_privkey_export(seckey, privkey, &outlen, 1)); } } @@ -1185,8 +1416,8 @@ int main(int argc, char **argv) { /* field tests */ run_field_inv(); run_field_inv_var(); - run_field_inv_all(); run_field_inv_all_var(); + run_field_misc(); run_sqr(); run_sqrt(); @@ -1199,6 +1430,7 @@ int main(int argc, char **argv) { run_ecmult_chain(); /* ecdsa tests */ + run_random_pubkeys(); run_ecdsa_sign_verify(); run_ecdsa_end_to_end(); run_ecdsa_edge_cases(); diff --git a/src/util.h b/src/util.h index 08b23a9d3..c3a8f3a42 100644 --- a/src/util.h +++ b/src/util.h @@ -61,6 +61,12 @@ #define VERIFY_CHECK(cond) do { (void)(cond); } while(0) #endif +static inline void *checked_malloc(size_t size) { + void *ret = malloc(size); + CHECK(ret != NULL); + return ret; +} + /* Macro for restrict, when available and not in a VERIFY build. */ #if defined(SECP256K1_BUILD) && defined(VERIFY) # define SECP256K1_RESTRICT From 830ee48b5994f8a5cce8c011672be0612867c9b7 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Thu, 11 Dec 2014 02:06:28 +0100 Subject: [PATCH 28/47] Update Bitcoin for libsecp256k1 API change --- src/key.cpp | 4 ++-- src/pubkey.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/key.cpp b/src/key.cpp index acf62360a..36613342b 100644 --- a/src/key.cpp +++ b/src/key.cpp @@ -82,7 +82,7 @@ bool CKey::Sign(const uint256 &hash, std::vector& vchSig, uint32_ prng.Generate((unsigned char*)&nonce, 32); nonce += test_case; int nSigLen = 72; - int ret = secp256k1_ecdsa_sign((const unsigned char*)&hash, 32, (unsigned char*)&vchSig[0], &nSigLen, begin(), (unsigned char*)&nonce); + int ret = secp256k1_ecdsa_sign((const unsigned char*)&hash, (unsigned char*)&vchSig[0], &nSigLen, begin(), (unsigned char*)&nonce); nonce = 0; if (ret) { vchSig.resize(nSigLen); @@ -114,7 +114,7 @@ bool CKey::SignCompact(const uint256 &hash, std::vector& vchSig) do { uint256 nonce; prng.Generate((unsigned char*)&nonce, 32); - int ret = secp256k1_ecdsa_sign_compact((const unsigned char*)&hash, 32, &vchSig[1], begin(), (unsigned char*)&nonce, &rec); + int ret = secp256k1_ecdsa_sign_compact((const unsigned char*)&hash, &vchSig[1], begin(), (unsigned char*)&nonce, &rec); nonce = 0; if (ret) break; diff --git a/src/pubkey.cpp b/src/pubkey.cpp index 91979ff4d..80bbac920 100644 --- a/src/pubkey.cpp +++ b/src/pubkey.cpp @@ -16,7 +16,7 @@ bool CPubKey::Verify(const uint256 &hash, const std::vector& vchS if (!IsValid()) return false; #ifdef USE_SECP256K1 - if (secp256k1_ecdsa_verify((const unsigned char*)&hash, 32, &vchSig[0], vchSig.size(), begin(), size()) != 1) + if (secp256k1_ecdsa_verify((const unsigned char*)&hash, &vchSig[0], vchSig.size(), begin(), size()) != 1) return false; #else CECKey key; @@ -35,7 +35,7 @@ bool CPubKey::RecoverCompact(const uint256 &hash, const std::vector Date: Thu, 11 Dec 2014 11:07:37 +0100 Subject: [PATCH 29/47] qt: translations pull from transifex --- src/qt/locale/bitcoin_de.ts | 16 + src/qt/locale/bitcoin_el_GR.ts | 536 ++++++++++++++++++++++++++++++++- src/qt/locale/bitcoin_es.ts | 76 +++++ src/qt/locale/bitcoin_it.ts | 145 +++++++++ src/qt/locale/bitcoin_ja.ts | 116 ++++++- src/qt/locale/bitcoin_kk_KZ.ts | 222 +++++++++++++- src/qt/locale/bitcoin_nl.ts | 362 +++++++++++++++++++++- src/qt/locale/bitcoin_ro_RO.ts | 4 + src/qt/locale/bitcoin_ru.ts | 40 ++- src/qt/locale/bitcoin_sr.ts | 22 +- src/qt/locale/bitcoin_uk.ts | 120 ++++++++ src/qt/locale/bitcoin_zh_TW.ts | 238 ++++++++++++++- 12 files changed, 1871 insertions(+), 26 deletions(-) diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 9462f668d..2804d2d66 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -1855,14 +1855,26 @@ Adresse: %4 Minimize Minimieren + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Wenn die benutzerdefinierte Gebühr 1000 Satoshis beträgt und die Transaktion nur 250 Byte groß ist, wird bei Auswahl von "pro Kilobyte" eine Gebühr in Höhe von 250 Satoshis, bei Auswahl von "Mindestbetrag" eine Gebühr in Höhe von 1000 Satoshis bezahlt. Bei Transaktionen die Größer als ein Kilobyte sind, werden bei beiden Optionen die Gebühren pro Kilobyte bezahlt. + per kilobyte pro Kilobyte + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Wenn die benutzerdefinierte Gebühr 1000 Satoshis beträgt und die Transaktion nur 250 Byte groß ist, wird bei Auswahl von "pro Kilobyte" eine Gebühr in Höhe von 250 Satoshis, bei Auswahl von "Mindestbetrag" eine Gebühr in Höhe von 1000 Satoshis bezahlt. Bei Transaktionen die Größer als ein Kilobyte sind, werden bei beiden Optionen die Gebühren pro Kilobyte bezahlt. + total at least Mindestbetrag + + Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process. + Nur die minimale Gebühr zu bezahlen ist so lange in Ordnung, wie weniger Transaktionsvolumen als Platz in den Blöcken vorhanden ist. Aber Vorsicht, diese Option kann dazu führen, dass Transaktionen nicht bestätigt werden, wenn mehr Bedarf an Bitcoin-Transaktionen besteht als das Netzwerk verarbeiten kann. + (read the tooltip) (den Hinweistext lesen) @@ -2821,6 +2833,10 @@ zum Beispiel: alertnotify=echo %%s | mail -s \"Bitcoin Alert\" admin@foo.com Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup Alle Wallet-Transaktionen löschen und nur diese Teilbereiche der Blockkette durch -rescan beim Starten wiederherstellen + + Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. + Veröffentlicht unter der MIT-Softwarelizenz, siehe beiligende Datei COPYING oder <http://www.opensource.org/licenses/mit-license.php>. + Enter regression test mode, which uses a special chain in which blocks can be solved instantly. Regressionstest-Modus aktivieren, der eine spezielle Blockkette nutzt, in der Blöcke sofort gelöst werden können. diff --git a/src/qt/locale/bitcoin_el_GR.ts b/src/qt/locale/bitcoin_el_GR.ts index 1a1c918c5..cf29c222e 100644 --- a/src/qt/locale/bitcoin_el_GR.ts +++ b/src/qt/locale/bitcoin_el_GR.ts @@ -7,7 +7,7 @@ Create a new address - Δημιούργησε νέα διεύθυνση + Δημιουργία νέας διεύθυνσης &New @@ -53,6 +53,10 @@ Choose the address to receive coins with Επιλογή διεύθυνσης απ' όπου θα ληφθούν νομίσματα + + C&hoose + Ε&πιλογή + Sending addresses Διευθύνσεις αποστολής @@ -65,6 +69,10 @@ These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. Αυτές είναι οι Bitcoin διευθύνσεις σας για να λαμβάνετε πληρωμές. Δίνοντας μία ξεχωριστή διεύθυνση σε κάθε αποστολέα, θα μπορείτε να ελέγχετε ποιος σας πληρώνει. + + These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. + Αυτές είναι οι Bitcoin διευθύνσεις σας για να λαμβάνετε πληρωμές. Δίνοντας μία ξεχωριστή διεύθυνση σε κάθε αποστολέα, θα μπορείτε να ελέγχετε ποιος σας πληρώνει. + Copy &Label Αντιγραφή &επιγραφής @@ -85,7 +93,11 @@ Exporting Failed Η εξαγωγή απέτυχε - + + There was an error trying to save the address list to %1. Please try again. + Παρουσιάστηκε σφάλμα κατά την αποθήκευση της λίστας πορτοφολιών στο %1. Παρακαλώ δοκιμάστε ξανά + + AddressTableModel @@ -113,7 +125,7 @@ New passphrase - Νέος κωδικός πρόσβασης + &Αλλαγή κωδικού Repeat new passphrase @@ -121,7 +133,7 @@ Encrypt wallet - Κρυπτογράφησε το πορτοφόλι + &Κρυπτογράφηση πορτοφολιού This operation needs your wallet passphrase to unlock the wallet. @@ -172,6 +184,10 @@ Wallet encrypted Κρυπτογραφημενο πορτοφολι + + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>. + Εισάγετε τον νέο κωδικό πρόσβασης στον πορτοφόλι <br/> Παρακαλώ χρησιμοποιείστε ένα κωδικό με <b> 10 ή περισσότερους τυχαίους χαρακτήρες</b> ή <b> οχτώ ή παραπάνω λέξεις</b>. + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. Το Bitcoin θα κλεισει τώρα για να τελειώσει την διαδικασία κρυπτογραφησης. Θυμησου ότι κρυπτογραφώντας το πορτοφολι σου δεν μπορείς να προστατέψεις πλήρως τα bitcoins σου από κλοπή στην περίπτωση όπου μολυνθεί ο υπολογιστής σου με κακόβουλο λογισμικό. @@ -219,6 +235,10 @@ &Overview &Επισκόπηση + + Node + Κόμβος + Show general overview of wallet Εμφάνισε τη γενική εικόνα του πορτοφολιού @@ -263,6 +283,22 @@ &Change Passphrase... &Άλλαξε κωδικο πρόσβασης + + &Sending addresses... + Διευθύνσεις αποστολής + + + &Receiving addresses... + Διευθύνσεις λήψης + + + Open &URI... + 'Ανοιγμα &URI + + + Bitcoin Core client + Εφαρμογή Bitcoin Core + Importing blocks from disk... Εισαγωγή μπλοκ από τον σκληρο δίσκο ... @@ -315,6 +351,10 @@ &Receive &Παραλαβή + + Show information about Bitcoin Core + Σχετικά με το Bitcoin Core + &Show / Hide &Εμφάνισε/Κρύψε @@ -371,6 +411,18 @@ Show the list of used receiving addresses and labels Προβολή της λίστας των χρησιμοποιημένων διευθύνσεων και ετικετών λήψεως + + Open a bitcoin: URI or payment request + Άνοιγμα bitcoin: URI αίτησης πληρωμής + + + &Command-line options + &Επιλογές γραμμής εντολών + + + Show the Bitcoin Core help message to get a list with possible Bitcoin command-line options + Εμφανιση του Bitcoin-Qt μήνυματος βοήθειας για να πάρετε μια λίστα με τις πιθανές επιλογές Bitcoin γραμμής εντολών. + %n active connection(s) to Bitcoin network %n ενεργή σύνδεση στο δίκτυο Bitcoin%n ενεργές συνδέσεις στο δίκτυο Βitcoin @@ -469,6 +521,10 @@ Address: %4 CoinControlDialog + + Coin Selection + Επιλογή κερμάτων + Quantity: Ποσότητα: @@ -485,6 +541,18 @@ Address: %4 Priority: Προτεραιότητα: + + Fee: + Ταρίφα + + + Dust: + Σκόνη + + + After Fee: + Ταρίφα αλλαγής + Change: Ρέστα: @@ -493,10 +561,26 @@ Address: %4 (un)select all (από)επιλογή όλων + + Tree mode + Εμφάνιση τύπου δέντρο + + + List mode + Λίστα εντολών + Amount Ποσό + + Received with label + Παραλήφθηκε με επιγραφή + + + Received with address + Παραλείφθηκε με την εξής διεύθυνση + Date Ημερομηνία @@ -529,10 +613,26 @@ Address: %4 Copy transaction ID Αντιγραφη του ID Συναλλαγής + + Lock unspent + Κλείδωμα αξόδευτων + + + Unlock unspent + Ξεκλείδωμα αξόδευτων + Copy quantity Αντιγραφή ποσότητας + + Copy fee + Αντιγραφή ταρίφας + + + Copy after fee + Αντιγραφή ταρίφας + Copy bytes Αντιγραφή των byte @@ -541,6 +641,10 @@ Address: %4 Copy priority Αντιγραφή προτεραιότητας + + Copy dust + Αντιγραφή 'σκόνης' + Copy change Αντιγραφή των ρέστων @@ -601,6 +705,22 @@ Address: %4 This label turns red, if the transaction size is greater than 1000 bytes. Η ετικετα γινετε κοκκινη , αν το μεγεθος της συναλαγης ειναι μεγαλητερο απο 1000 bytes. + + This means a fee of at least %1 per kB is required. + Ελάχιστο χρεώσιμο ποσό τουλάχιστο %1 ανα kB + + + Transactions with higher priority are more likely to get included into a block. + Συναλλαγές με υψηλότερη προτεραιότητα είναι πιο πιθανό να περιλαμβάνονται σε ένα μπλοκ. + + + This label turns red, if the priority is smaller than "medium". + Η ετικέτα γίνεται κόκκινη , αν το μέγεθος της συναλαγής είναι μεγαλύτερο απο το ",μεσαίο", + + + This label turns red, if any recipient receives an amount smaller than %1. + Η ετικέτα γίνεται κόκκινη , αν ο παραλήπτης παραλάβει ένα ποσό μικρότερο απο %1. + (no label) (χωρίς ετικέτα) @@ -629,6 +749,10 @@ Address: %4 The label associated with this address list entry Η ετικέτα που συνδέεται με αυτήν την καταχώρηση στο βιβλίο διευθύνσεων + + The address associated with this address list entry. This can only be modified for sending addresses. + Η διεύθυνση σχετίζεται με αυτή την καταχώρηση του βιβλίου διευθύνσεων. Μπορεί να τροποποιηθεί μόνο για τις διευθύνσεις αποστολής. + &Address &Διεύθυνση @@ -676,6 +800,14 @@ Address: %4 name όνομα + + Directory already exists. Add %1 if you intend to create a new directory here. + Κατάλογος ήδη υπάρχει. Προσθήκη %1, αν σκοπεύετε να δημιουργήσετε έναν νέο κατάλογο εδώ. + + + Path already exists, and is not a directory. + Η διαδρομή υπάρχει ήδη αλλά δεν είναι φάκελος + Cannot create data directory here. Δεν μπορεί να δημιουργηθεί φάκελος δεδομένων εδώ. @@ -723,11 +855,19 @@ Address: %4 Start minimized Έναρξη ελαχιστοποιημένο + + Set SSL root certificates for payment request (default: -system-) + Ορίστε SSL root certificates για αίτηση πληρωμής (default: -system-) + Show splash screen on startup (default: 1) Εμφάνισε την οθόνη εκκίνησης κατά την εκκίνηση(προεπιλογή:1) - + + Choose data directory on startup (default: 0) + Επιλογή καταλόγου + + Intro @@ -742,6 +882,10 @@ Address: %4 As this is the first time the program is launched, you can choose where Bitcoin Core will store its data. Καθώς αυτή είναι η πρώτη φορά που εκκινείται το πρόγραμμα, μπορείτε να διαλέξετε πού θα αποθηκεύει το Bitcoin Core τα δεδομένα του. + + Bitcoin Core will download and store a copy of the Bitcoin block chain. At least %1GB of data will be stored in this directory, and it will grow over time. The wallet will also be stored in this directory. + O πυρήνας Bitcoin θα κατεβάσει και να αποθηκεύσει ένα αντίγραφο της αλυσίδας μπλοκ Bitcoin. Τουλάχιστον %1GB δεδομένων θα αποθηκευτούν σε αυτόν τον κατάλογο, και θα αυξηθεί με την πάροδο του χρόνου. Το πορτοφόλι θα αποθηκευτεί σε αυτόν τον κατάλογο. + Use the default data directory Χρήση του προεπιλεγμένου φακέλου δεδομένων @@ -754,6 +898,10 @@ Address: %4 Bitcoin Core Bitcoin Core + + Error: Specified data directory "%1" cannot be created. + Σφάλμα: Ο καθορισμένος φάκελος δεδομένων "%1" δεν μπορεί να δημιουργηθεί. + Error Σφάλμα @@ -761,7 +909,27 @@ Address: %4 OpenURIDialog - + + Open URI + 'Ανοιγμα &URI + + + Open payment request from URI or file + Ανοιχτό αίτημα πληρωμής από URI ή απο αρχείο + + + URI: + URI: + + + Select payment request file + Επιλέξτε πληρωμή αρχείου αίτησης + + + Select payment request file to open + Επιλέξτε αρχείο πληρωμής για άνοιγμα. + + OptionsDialog @@ -780,10 +948,34 @@ Address: %4 &Start Bitcoin on system login &Έναρξη του Βιtcoin κατά την εκκίνηση του συστήματος + + Size of &database cache + Μέγεθος κρυφής μνήμης βάσης δεδομένων. + MB MB + + Number of script &verification threads + Αριθμός script και γραμμές επαλήθευσης + + + Accept connections from outside + Αποδοχή συνδέσεων απο έξω + + + Allow incoming connections + Αποδοχή εισερχόμενων συναλλαγών + + + IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) + Διεύθυνση IP του διαμεσολαβητή (π.χ. 127.0.0.1 / IPv6: ::1) + + + Third party transaction URLs + Διευθύνσεις τρίτων συναλλαγών. + Reset all client options to default. Επαναφορα όλων των επιλογων του πελάτη σε default. @@ -796,10 +988,18 @@ Address: %4 &Network &Δίκτυο + + W&allet + Π&ορτοφόλι + Expert Έμπειρος + + Enable coin &control features + Επιλογή κατα πόσο να αναδείχνονται οι δυνατότητες ελέγχου κερμάτων. + Automatically open the Bitcoin client port on the router. This only works when your router supports UPnP and it is enabled. Αυτόματο άνοιγμα των θυρών Bitcoin στον δρομολογητή. Λειτουργεί μόνο αν ο δρομολογητής σας υποστηρίζει τη λειτουργία UPnP. @@ -808,6 +1008,14 @@ Address: %4 Map port using &UPnP Απόδοση θυρών με χρήστη &UPnP + + Connect to the Bitcoin network through a SOCKS5 proxy. + Σύνδεση στο Bitcoin δίκτυο μέσω διαμεσολαβητή SOCKS5 (π.χ. για σύνδεση μέσω Tor) + + + &Connect through SOCKS5 proxy (default proxy): + &Σύνδεση μέσω διαμεσολαβητή SOCKS5 (προεπιλεγμένος) + Proxy &IP: &IP διαμεσολαβητή: @@ -860,6 +1068,10 @@ Address: %4 Choose the default subdivision unit to show in the interface and when sending coins. Διαλέξτε την προεπιλεγμένη υποδιαίρεση που θα εμφανίζεται όταν στέλνετε νομίσματα. + + Whether to show coin control features or not. + Επιλογή κατα πόσο να αναδείχνονται οι δυνατότητες ελέγχου κερμάτων. + &OK &ΟΚ @@ -884,6 +1096,14 @@ Address: %4 Client restart required to activate changes. Χρειάζεται επανεκκίνηση του προγράμματος για να ενεργοποιηθούν οι αλλαγές. + + Client will be shutdown, do you want to proceed? + Η εφαρμογή θα τερματιστεί. Θέλετε να προχωρήσετε; + + + This change would require a client restart. + Η αλλαγή αυτή θα χρειαστεί επανεκκίνηση του προγράμματος + The supplied proxy address is invalid. Δεν είναι έγκυρη η διεύθυνση διαμεσολαβητή @@ -899,6 +1119,10 @@ Address: %4 The displayed information may be out of date. Your wallet automatically synchronizes with the Bitcoin network after a connection is established, but this process has not completed yet. Οι πληροφορίες που εμφανίζονται μπορεί να είναι ξεπερασμένες. Το πορτοφόλι σας συγχρονίζεται αυτόματα με το δίκτυο Bitcoin μετά από μια σύνδεση, αλλά αυτή η διαδικασία δεν έχει ακόμη ολοκληρωθεί. + + Watch-only: + Επίβλεψη μόνο: + Available: Διαθέσιμο: @@ -907,6 +1131,10 @@ Address: %4 Your current spendable balance Το τρέχον διαθέσιμο υπόλοιπο + + Pending: + Εκκρεμούν: + Total of transactions that have yet to be confirmed, and do not yet count toward the spendable balance Το άθροισμα των συναλλαγών που δεν έχουν ακόμα επιβεβαιωθεί και δεν προσμετρώνται στο τρέχον διαθέσιμο υπόλοιπό σας @@ -919,6 +1147,10 @@ Address: %4 Mined balance that has not yet matured Εξορυγμενο υπόλοιπο που δεν έχει ακόμα ωριμάσει + + Balances + Υπόλοιπο: + Total: Σύνολο: @@ -927,6 +1159,14 @@ Address: %4 Your current total balance Το τρέχον συνολικό υπόλοιπο + + Spendable: + Ξοδεμένα: + + + Recent transactions + Πρόσφατες συναλλαγές + out of sync εκτός συγχρονισμού @@ -942,6 +1182,18 @@ Address: %4 Invalid payment address %1 Μη έγκυρη διεύθυνση πληρωμής %1 + + Payment request rejected + Η αίτηση πληρωμής έχει αρνηθεί. + + + Payment request has expired. + Η αίτηση πληρωμής έχει λήξει. + + + Payment request is not initialized. + Η αίτηση πληρωμής δεν έχει αρχίζει ακόμα. + Payment request error Σφάλμα αιτήματος πληρωμής @@ -950,6 +1202,18 @@ Address: %4 Cannot start bitcoin: click-to-pay handler Δεν είναι δυνατή η εκκίνηση του Bitcoin: click-to-pay handler + + Payment request fetch URL is invalid: %1 + Η διεύθυνση πληρωμής (URL) δεν είναι έγκυρη: %1 + + + Payment request file handling + Επιλέξτε αρχείο πληρωμής για άνοιγμα. + + + Refund from %1 + Επιστροφή ποσού από %1 + Payment acknowledged Πληρωμή αναγνωρίστηκε @@ -961,13 +1225,29 @@ Address: %4 PeerTableModel - + + Address/Hostname + Διεύθυθνση/Όνομα υπολογιστή + + + Ping Time + Χρόνος καθυστέρησης + + QObject Amount Ποσό + + Enter a Bitcoin address (e.g. %1) + Εισάγετε μια διεύθυνση Bitcoin (π.χ. %1) + + + %1 d + %1 d + %1 h %1 ώ @@ -976,11 +1256,31 @@ Address: %4 %1 m %1 λ + + %1 s + %1 s + + + NETWORK + Δίκτυο + + + UNKNOWN + Άγνωστο(α) + + + None + Κανένα + N/A Μη διαθέσιμο - + + %1 ms + %1 ms + + QRImageWidget @@ -1054,6 +1354,22 @@ Address: %4 Current number of blocks Τρέχον αριθμός μπλοκ + + Received + Παραλήφθησαν + + + Version + Έκδοση + + + Services + Υπηρεσίες + + + Ping Time + Χρόνος καθυστέρησης + Last block time Χρόνος τελευταίου μπλοκ @@ -1130,6 +1446,26 @@ Address: %4 %1 GB %1 GB + + via %1 + μέσω %1 + + + never + ποτέ + + + Inbound + Εισερχόμενα + + + Outbound + Εξερχόμενα + + + Unknown + Άγνωστο(α) + ReceiveCoinsDialog @@ -1184,6 +1520,10 @@ Address: %4 QR Code Κώδικας QR + + Copy &URI + Αντιγραφη της επιλεγμενης διεύθυνσης στο πρόχειρο του συστηματος + &Save Image... &Αποθήκευση εικόνας... @@ -1192,6 +1532,10 @@ Address: %4 Payment information Πληροφορίες πληρωμής + + URI + URI: + Address Διεύθυνση @@ -1254,6 +1598,10 @@ Address: %4 Send Coins Αποστολή νομισμάτων + + Coin Control Features + Χαρακτηρηστικά επιλογής κερμάτων + automatically selected επιλεγμένο αυτόματα @@ -1278,10 +1626,34 @@ Address: %4 Priority: Προτεραιότητα: + + Fee: + Ταρίφα + + + After Fee: + Ταρίφα αλλαγής + Change: Ρέστα: + + Transaction Fee: + Τέλος συναλλαγής: + + + Choose... + Επιλογή... + + + Minimize + Ελαχιστοποίηση + + + fast + Γρήγορο + Send to multiple recipients at once Αποστολή σε πολλούς αποδέκτες ταυτόχρονα @@ -1294,6 +1666,10 @@ Address: %4 Clear all fields of the form. Καθαρισμός όλων των πεδίων της φόρμας. + + Dust: + Σκόνη + Clear &All Καθαρισμός &Όλων @@ -1326,6 +1702,14 @@ Address: %4 Copy amount Αντιγραφή ποσού + + Copy fee + Αντιγραφή ταρίφας + + + Copy after fee + Αντιγραφή μετα-ταρίφας + Copy bytes Αντιγραφή των byte @@ -1378,6 +1762,10 @@ Address: %4 (no label) (χωρίς ετικέτα) + + Copy dust + Αντιγραφή 'σκόνης' + Are you sure you want to send? Είστε βέβαιοι για την αποστολή; @@ -1463,6 +1851,10 @@ Address: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. Μπορείτε να υπογράφετε μηνύματα με τις διευθύνσεις σας, ώστε ν' αποδεικνύετε πως αυτές σας ανήκουν. Αποφεύγετε να υπογράφετε κάτι αόριστο καθώς ενδέχεται να εξαπατηθείτε. Υπογράφετε μόνο πλήρης δηλώσεις με τις οποίες συμφωνείτε. + + The Bitcoin address to sign the message with + Διεύθυνση Bitcoin που θα σταλεί το μήνυμα + Choose previously used address Επιλογή διεύθυνσης που έχει ήδη χρησιμοποιηθεί @@ -1515,6 +1907,10 @@ Address: %4 Enter the signing address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Πληκτρολογήστε την υπογραφή διεύθυνσης, μήνυμα (βεβαιωθείτε ότι έχετε αντιγράψει τις αλλαγές γραμμής, κενά, tabs, κ.λπ. ακριβώς) και την υπογραφή παρακάτω, για να ελέγξει το μήνυμα. Να είστε προσεκτικοί για να μην διαβάσετε περισσότερα στην υπογραφή ό, τι είναι στην υπογραφή ίδιο το μήνυμα , για να μην εξαπατηθούν από έναν άνθρωπο -in - the-middle επίθεση. + + The Bitcoin address the message was signed with + Διεύθυνση Bitcoin η οποία το μήνυμα έχει υπογραφεί + Verify the message to ensure it was signed with the specified Bitcoin address Υπογράψτε ένα μήνυμα για ν' αποδείξετε πως υπογραφθηκε απο μια συγκεκριμένη διεύθυνση Bitcoin @@ -1608,6 +2004,10 @@ Address: %4 Open until %1 Ανοιχτό μέχρι %1 + + conflicted + σύγκρουση + %1/offline %1/χωρίς σύνδεση; @@ -1652,6 +2052,10 @@ Address: %4 own address δική σας διεύθυνση + + watch-only + Επίβλεψη μόνο: + label eπιγραφή @@ -1672,6 +2076,14 @@ Address: %4 Debit Debit + + Total debit + Σύνολο χρέωσης + + + Total credit + Συνολική πίστωση + Transaction fee Τέλος συναλλαγής @@ -1696,6 +2108,10 @@ Address: %4 Merchant Έμπορος + + Generated coins must mature %1 blocks before they can be spent. When you generated this block, it was broadcast to the network to be added to the block chain. If it fails to get into the chain, its state will change to "not accepted" and it won't be spendable. This may occasionally happen if another node generates a block within a few seconds of yours. + Πρέπει να περιμένετε %1 μπλοκ πριν μπορέσετε να χρησιμοποιήσετε τα νομίσματα που έχετε δημιουργήσει. Το μπλοκ που δημιουργήσατε μεταδόθηκε στο δίκτυο για να συμπεριληφθεί στην αλυσίδα των μπλοκ. Αν δεν μπει σε αυτή θα μετατραπεί σε "μη αποδεκτό" και δε θα μπορεί να καταναλωθεί. Αυτό συμβαίνει σπάνια όταν κάποιος άλλος κόμβος δημιουργήσει ένα μπλοκ λίγα δευτερόλεπτα πριν από εσάς. + Debug information Πληροφορίες αποσφαλμάτωσης @@ -1786,6 +2202,10 @@ Address: %4 Unconfirmed Ανεπιβεβαίωτες + + Conflicted + Σύγκρουση + Received with Παραλαβή με @@ -1806,6 +2226,10 @@ Address: %4 Mined Εξόρυξη + + watch-only + Επίβλεψη μόνο: + (n/a) (δ/α) @@ -1917,6 +2341,10 @@ Address: %4 Export Transaction History Εξαγωγή Ιστορικού Συναλλαγών + + Watch-only + Επίβλεψη μόνο: + Exporting Failed Η Εξαγωγή Απέτυχε @@ -2153,6 +2581,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Error opening block database Σφάλμα φορτωσης της βασης δεδομενων των μπλοκ + + Error: A fatal internal error occured, see debug.log for details + Σφάλμα: Παρουσιάστηκε ανεπανόρθωτο εσωτερικό σφάλμα, δείτε debug.log για λεπτομέρειες + Error: Disk space is low! Προειδοποίηση: Χαμηλός χώρος στο δίσκο @@ -2165,6 +2597,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Failed to listen on any port. Use -listen=0 if you want this. ταλαιπωρηθειτε για να ακούσετε σε οποιαδήποτε θύρα. Χρήση - ακούστε = 0 , αν θέλετε αυτό. + + Importing... + ΕΙσαγωγή... + Invalid -onion address: '%s' Άκυρη διεύθυνση -onion : '%s' @@ -2177,6 +2613,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Rebuild block chain index from current blk000??.dat files Εισαγωγή μπλοκ από εξωτερικό αρχείο blk000?.dat + + Specify wallet file (within data directory) + Επιλέξτε αρχείο πορτοφολιού (μέσα απο κατάλογο δεδομένων) + Verifying blocks... Επαλήθευση των μπλοκ... @@ -2193,6 +2633,26 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Imports blocks from external blk000??.dat file Εισαγωγή μπλοκ από εξωτερικό αρχείο blk000?.dat + + Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. + Αδυναμία κλειδώματος του φακέλου δεδομένων %s. Πιθανώς το Bitcoin να είναι ήδη ενεργό. + + + Connect through SOCKS5 proxy + Σύνδεση μέσω διαμεσολαβητή SOCKS5 + + + Could not parse -rpcbind value %s as network address + Δεν μπόρεσε να αναλυθεί η παράμετρος -rpcbind value %s ως διεύθυνση δικτύου + + + Error loading wallet.dat: Wallet requires newer version of Bitcoin Core + Σφάλμα φόρτωσης wallet.dat: Το Πορτοφόλι απαιτεί μια νεότερη έκδοση του Bitcoin + + + Error: Unsupported argument -tor found, use -onion. + Σφάλμα: Μη συμβατή παράμετρος -tor. Χρησιμοποιήσε την παράμετρο -onion + Information Πληροφορία @@ -2205,6 +2665,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Invalid amount for -mintxfee=<amount>: '%s' Μη έγκυρο ποσό για την παράμετρο -paytxfee=<amount>: '%s' + + RPC SSL options: (see the Bitcoin Wiki for SSL setup instructions) + Ρυθμίσεις SSL: (ανατρέξτε στο Bitcoin Wiki για οδηγίες ρυθμίσεων SSL) + Send trace/debug info to console instead of debug.log file Αποστολή πληροφοριών εντοπισμού σφαλμάτων στην κονσόλα αντί του αρχείου debug.log @@ -2217,6 +2681,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Signing transaction failed Η υπογραφή συναλλαγής απέτυχε + + This is experimental software. + Η εφαρμογή είναι σε πειραματικό στάδιο. + Transaction amount too small Το ποσό της συναλλαγής είναι πολύ μικρο @@ -2245,6 +2713,10 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Warning: This version is obsolete, upgrade required! Προειδοποίηση: Αυτή η έκδοση είναι ξεπερασμένη, απαιτείται αναβάθμιση + + Zapping all transactions from wallet... + Μεταφορά όλων των συναλλαγών απο το πορτοφόλι + on startup κατά την εκκίνηση @@ -2289,14 +2761,62 @@ for example: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Error loading wallet.dat: Wallet corrupted Σφάλμα φόρτωσης wallet.dat: Κατεστραμμένο Πορτοφόλι + + How thorough the block verification of -checkblocks is (0-4, default: %u) + Πόσο εξονυχιστική να είναι η επιβεβαίωση του μπλοκ (0-4, προεπιλογή: %u) + + + Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) + Διατηρήση ένος πλήρες ευρετήριου συναλλαγών (προεπιλογή: %u) + + + Number of seconds to keep misbehaving peers from reconnecting (default: %u) + Δευτερόλεπτα πριν επιτραπεί ξανά η σύνδεση των προβληματικών peers (προεπιλογή: %u) + Error loading wallet.dat Σφάλμα φόρτωσης αρχείου wallet.dat + + Force safe mode (default: %u) + Επιβολή ασφαλής λειτουργίας (προεπιλογή: %u) + + + Generate coins (default: %u) + Δημιουργία νομισμάτων (προκαθορισμος: %u) + + + How many blocks to check at startup (default: %u, 0 = all) + Πόσα μπλοκ να ελέγχθουν κατά την εκκίνηση (προεπιλογή: %u, 0 = όλα) + + + Include IP addresses in debug output (default: %u) + Να συμπεριληφθεί η διεύθυνση IP στην αναφορά? (προεπιλογή: %u) + Invalid -proxy address: '%s' Δεν είναι έγκυρη η διεύθυνση διαμεσολαβητή: '%s' + + Print block tree on startup (default: %u) + Εκτύπωση μπλοκ δέντρου κατά την εκκίνηση (προεπιλογή: %u) + + + Server certificate file (default: %s) + Αρχείο πιστοποιητικού του διακομιστή (προεπιλογή: %s) + + + Specify connection timeout in milliseconds (minimum: 1, default: %d) + Ορισμός λήξης χρονικού ορίου σε χιλιοστά του δευτερολέπτου(προεπιλογή: %d) + + + Specify pid file (default: %s) + Ορίστε αρχείο pid (προεπιλογή: %s) + + + Threshold for disconnecting misbehaving peers (default: %u) + Όριο αποσύνδεσης προβληματικών peers (προεπιλογή: %u) + Unknown network specified in -onlynet: '%s' Άγνωστo δίκτυο ορίζεται σε onlynet: '%s' diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 71f7e9f4c..b70136670 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -524,6 +524,10 @@ Dirección: %4 CoinControlDialog + + Coin Selection + Selección de la moneda + Quantity: Cantidad: @@ -572,6 +576,14 @@ Dirección: %4 Amount Cantidad + + Received with label + Recibido con etiqueta + + + Received with address + Recibido con dirección + Date Fecha @@ -1034,6 +1046,14 @@ Dirección: %4 Map port using &UPnP Mapear el puerto mediante &UPnP + + Connect to the Bitcoin network through a SOCKS5 proxy. + Conectarse a la red Bitcoin a través de un proxy SOCKS5. + + + &Connect through SOCKS5 proxy (default proxy): + &Conectarse a través de proxy SOCKS5 (proxy predeterminado): + Proxy &IP: Dirección &IP del proxy: @@ -1824,6 +1844,50 @@ Dirección: %4 Custom change address Dirección propia + + Transaction Fee: + Comisión de Transacción: + + + Minimize + Minimizar + + + per kilobyte + por kilobyte + + + total at least + total por lo menos + + + Recommended: + Recomendado: + + + Custom: + Personalizado: + + + (Smart fee not initialized yet. This usually takes a few blocks...) + (Tarifa inteligente no inicializado aún. Esto generalmente lleva a pocos bloques...) + + + Confirmation time: + Tiempo de confirmación: + + + normal + normal + + + fast + rápido + + + (confirmation may take longer) + (confirmación puede tardar más tiempo) + Send to multiple recipients at once Enviar a múltiples destinatarios de una vez @@ -1928,6 +1992,14 @@ Dirección: %4 The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. ¡La transacción fue rechazada! Esto puede haber ocurrido si alguno de los bitcoins de su monedero ya estaba gastado o si ha usado una copia de wallet.dat y los bitcoins estaban gastados en la copia pero no se habían marcado como gastados aqui. + + Pay only the minimum fee of %1 + Paga sólo la cuota mínima de %1 + + + Estimated to begin confirmation within %1 block(s). + Estimado para comenzar confirmación dentro de %1 bloque(s) + Warning: Invalid Bitcoin address Alerta: Dirección de Bitcoin inválida @@ -2738,6 +2810,10 @@ Por ejemplo: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup Borrar todas las transacciones del monedero y sólo recuperar aquellas partes de la cadena de bloques por medio de -rescan on startup. + + Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. + Distribuido bajo la licencia de software MIT, vea la copia del archivo adjunto o <http://www.opensource.org/licenses/mit-license.php>. + Enter regression test mode, which uses a special chain in which blocks can be solved instantly. Ingresar en el modo de prueba de regresión, que utiliza una cadena especial en la que los bloques se pueden resolver instantáneamente. diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 5dbe98b0f..06cf0e016 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -478,6 +478,10 @@ Up to date Aggiornato + + Processed %n blocks of transaction history. + Processati %n blocchi dello storico transazioni.Processati %n blocchi dello storico delle transazioni. + Catching up... In aggiornamento... @@ -521,6 +525,11 @@ Indirizzo: %4 CoinControlDialog + + Coin Selection + Seleziona Moneta + + Quantity: Quantità: @@ -569,6 +578,14 @@ Indirizzo: %4 Amount Importo + + Received with label + Ricevuto con etichetta + + + Received with address + Ricevuto con l'indirizzo + Date Data @@ -1024,6 +1041,14 @@ Più URL vengono separati da una barra verticale |. Map port using &UPnP Mappa le porte tramite &UPnP + + Connect to the Bitcoin network through a SOCKS5 proxy. + Connessione alla rete Bitcoin attraverso un proxy SOCKS5. + + + &Connect through SOCKS5 proxy (default proxy): + &Connessione attraverso proxy SOCKS5 (proxy predefinito): + Proxy &IP: &IP del proxy: @@ -1187,6 +1212,10 @@ Più URL vengono separati da una barra verticale |. Mined balance in watch-only addresses that has not yet matured l'equilibrio estratto solo nello sguardo degli indirizzi non è ancora maturo + + Current total balance in watch-only addresses + Saldo corrente totale negli indirizzi watch-only + out of sync non sincronizzato @@ -1810,6 +1839,50 @@ Più URL vengono separati da una barra verticale |. Custom change address Personalizza indirizzo di resto + + Transaction Fee: + Tasse di Transazione + + + Choose... + Scegli... + + + Minimize + Minimizza + + + per kilobyte + per kilobyte + + + Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process. + Pagando solo la tariffa minima è bene finché c'è meno volume di transazioni di spazio nei blocchi. Ma essere consapevoli che questo può finire in una transazione non confermando ancora una volta non vi è più richiesta per le transazioni Bitcoin di rete in grado di elaborare. + + + Recommended: + Raccomandati: + + + Custom: + Personalizza: + + + Confirmation time: + Tempo di conferma: + + + normal + normale + + + fast + veloce + + + Send as zero-fee transaction if possible + Invia una transazione a zero commissioni se possibile + Send to multiple recipients at once Invia a diversi beneficiari in una volta sola @@ -2940,6 +3013,22 @@ ad esempio: alertnotify=echo %%s | mail -s "Allarme Bitcoin" admin@foo.com Set maximum size of high-priority/low-fee transactions in bytes (default: %d) Imposta la dimensione massima in byte delle transazioni ad alta-priorità/basse-commissioni (predefinita: %d) + + Cannot resolve -whitebind address: '%s' + Impossibile risolvere -whitebind address: '%s' + + + Connect through SOCKS5 proxy + Connetti attraverso SOCKS5 proxy + + + Error loading wallet.dat: Wallet requires newer version of Bitcoin Core + Errore caricamento wallet.dat: il wallet richiede una versione nuova di Bitcoin Core + + + Fee (in BTC/kB) to add to transactions you send (default: %s) + Commissione (in BTC/kB) da aggiungere alla transazione che invii (default: %s) + Information Informazioni @@ -2980,6 +3069,10 @@ ad esempio: alertnotify=echo %%s | mail -s "Allarme Bitcoin" admin@foo.com Send trace/debug info to console instead of debug.log file Invia le informazioni di trace/debug alla console invece che al file debug.log + + Send transactions as zero-fee transactions if possible (default: %u) + Invia transazioni a zero commissioni se possibile (default: %u) + Show all debugging options (usage: --help -help-debug) Mostra tutte le opzioni di debug (utilizzo: --help -help-debug) @@ -3085,10 +3178,62 @@ ad esempio: alertnotify=echo %%s | mail -s "Allarme Bitcoin" admin@foo.com Error loading wallet.dat Errore caricamento wallet.dat + + Force safe mode (default: %u) + Forza modalità provvisoria (dafault: %u) + + + Generate coins (default: %u) + Genera coins (default: %u) + + + How many blocks to check at startup (default: %u, 0 = all) + Quanti blocchi da controllare all'avvio (dafault: %u, 0 = tutti) + Invalid -proxy address: '%s' Indirizzo -proxy non valido: '%s' + + Maintain at most <n> connections to peers (default: %u) + Mantieni al massimo <n> connessioni ai peers (default: %u) + + + Prepend debug output with timestamp (default: %u) + Pretendi output di debug con timestamp (default: %u) + + + Print block tree on startup (default: %u) + Stampa l'albero dei blocchi all'avvio (default: %u) + + + Server certificate file (default: %s) + File certificato del server (default: %s) + + + Server private key (default: %s) + Chiave privata del server (default: %s) + + + Specify configuration file (default: %s) + Specifica il file di configurazione (default: %s) + + + Specify connection timeout in milliseconds (minimum: 1, default: %d) + Specifica il timeout di connessione in millisecondi (minimo:1, default: %d) + + + Specify pid file (default: %s) + Specifica il file pid (default: %s) + + + Spend unconfirmed change when sending transactions (default: %u) + Spendi il resto non confermato quando si inviano transazioni (default: %u) + + + Stop running after importing blocks from disk (default: %u) + Interrompi dopo aver importato i blocchi dal disco (default: %u) + Unknown network specified in -onlynet: '%s' Rete sconosciuta specificata in -onlynet: '%s' diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts index dd2d8c8c7..0c9805de8 100644 --- a/src/qt/locale/bitcoin_ja.ts +++ b/src/qt/locale/bitcoin_ja.ts @@ -69,6 +69,10 @@ These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. これらは支払いを送信するためのあなたの Bitcoin アドレスです。コインを送信する前に、常に額と受信アドレスを確認してください。 + + These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. + これらは支払いを受け取るためのビットコインアドレスです。トランザクションごとに新しい受け取り用アドレスを作成することが推奨されます。 + Copy &Label ラベルをコピー (&L) @@ -89,7 +93,11 @@ Exporting Failed エクスポート失敗 - + + There was an error trying to save the address list to %1. Please try again. + トランザクション履歴を %1 へ保存する際にエラーが発生しました。再試行してください。 + + AddressTableModel @@ -175,6 +183,10 @@ Wallet encrypted ウォレットは暗号化されました + + Enter the new passphrase to the wallet.<br/>Please use a passphrase of <b>ten or more random characters</b>, or <b>eight or more words</b>. + ウォレットの新しいパスフレーズを入力してください。<br/><b>10文字以上のランダムな文字</b>で構成されたものか、<b>8単語以上の単語</b>で構成されたパスフレーズを使用してください。 + Bitcoin will close now to finish the encryption process. Remember that encrypting your wallet cannot fully protect your bitcoins from being stolen by malware infecting your computer. Bitcoin は暗号化プロセスを終了するために今すぐ終了します。あなたのコンピュータがマルウェアに感染してコインを盗まれることもあるので、暗号化してもあなたのウォレットを完全に保護できないことを覚えていてください。 @@ -282,6 +294,10 @@ Open &URI... URI を開く (&U)... + + Bitcoin Core client + Bitcoinコア クライアント + Importing blocks from disk... ディスクからブロックをインポートしています... @@ -334,6 +350,10 @@ &Receive 受信 (&R) + + Show information about Bitcoin Core + Bitcoinコアに関する情報を表示 + &Show / Hide 見る/隠す (&S) @@ -374,10 +394,18 @@ Bitcoin Core Bitcoin のコア + + Request payments (generates QR codes and bitcoin: URIs) + 支払いを要求する (QRコードとbitcoin:ではじまるURIを生成する) + &About Bitcoin Core ビットコインコアについて (&A) + + Show the list of used sending addresses and labels + 使用済みの送金用アドレスとラベルの一覧を表示する + Show the list of used receiving addresses and labels 支払いを受け取るアドレスとラベルのリストを表示する @@ -483,6 +511,10 @@ Address: %4 CoinControlDialog + + Coin Selection + コイン選択 + Quantity: 数量: @@ -555,6 +587,14 @@ Address: %4 Copy transaction ID 取引 ID をコピー + + Lock unspent + 未使用トランザクションをロックする + + + Unlock unspent + 未使用トランザクションをアンロックする + Copy quantity 数量をコピーする @@ -676,6 +716,10 @@ Address: %4 version バージョン + + About Bitcoin Core + Bitcoinコアについて + Command-line options コマンドライン オプション @@ -735,7 +779,15 @@ Address: %4 Error エラー - + + %n GB of free space available + %n GBの空き容量が利用可能 + + + (of %n GB needed) + (%n GB必要) + + OpenURIDialog @@ -785,6 +837,14 @@ Address: %4 MB MB + + Number of script &verification threads + スクリプト検証用スレッド数 (&V) + + + Accept connections from outside + 外部からの接続を許可する + IP address of the proxy (e.g. IPv4: 127.0.0.1 / IPv6: ::1) プロキシのIPアドレス (例えば IPv4: 127.0.0.1 / IPv6: ::1) @@ -932,6 +992,14 @@ Address: %4 Your current total balance あなたの現在の残高 + + Recent transactions + 最近のトランザクション + + + Mined balance in watch-only addresses that has not yet matured + ウォッチオンリーアドレスの採掘された残高のうち、成熟していないもの + out of sync 同期していない @@ -947,6 +1015,14 @@ Address: %4 Invalid payment address %1 支払いのアドレス「%1」は無効です + + Payment request rejected + 支払い要求は拒否されました + + + Payment request has expired. + 支払いのリクエストは期限切れです + Payment request error 支払いのリクエストのエラーです @@ -974,6 +1050,10 @@ Address: %4 PeerTableModel + + User Agent + ユーザエージェント + QObject @@ -1063,6 +1143,10 @@ Address: %4 Current number of blocks 現在のブロック数 + + User Agent + ユーザエージェント + Last block time 最終ブロックの日時 @@ -1154,6 +1238,10 @@ Address: %4 &Message: メッセージ (&M): + + Clear all fields of the form. + 全ての入力項目をクリア + Clear クリア @@ -1162,6 +1250,10 @@ Address: %4 Show 表示 + + Remove the selected entries from the list + リストから選択項目を削除 + Copy label ラベルをコピーする @@ -1307,6 +1399,10 @@ Address: %4 Add &Recipient 受取人を追加 (&R) + + Clear all fields of the form. + 全ての入力項目をクリア + Clear &All すべてクリア (&A) @@ -1433,7 +1529,15 @@ Address: %4 ShutdownWindow - + + Bitcoin Core is shutting down... + Bitcoin Coreをシャットダウンしています。 + + + Do not shut down the computer until this window disappears. + このウィンドウが消えるまでコンピュータをシャットダウンしないで下さい。 + + SignVerifyMessageDialog @@ -1956,7 +2060,11 @@ Address: %4 WalletFrame - + + No wallet has been loaded. + ウォレットがロードされていません + + WalletModel diff --git a/src/qt/locale/bitcoin_kk_KZ.ts b/src/qt/locale/bitcoin_kk_KZ.ts index 3d38b0021..5a39417a7 100644 --- a/src/qt/locale/bitcoin_kk_KZ.ts +++ b/src/qt/locale/bitcoin_kk_KZ.ts @@ -9,10 +9,22 @@ Create a new address Жаңа адрес енгізу + + &New + Жаңа + Copy the currently selected address to the system clipboard Таңдаған адресті тізімнен жою + + C&lose + Жабу + + + &Export + Экспорт + &Delete Жою @@ -78,12 +90,140 @@ BitcoinGUI + + &Transactions + &Транзакциялар + + + E&xit + Шығу + + + &Options... + Параметрлері + + + &Backup Wallet... + Әмиянды жасыру + + + &Change Passphrase... + Құпия сөзді өзгерту + + + Bitcoin + Биткоин + + + Wallet + Әмиян + + + &Send + Жіберу + + + &Receive + Алу + + + &File + Файл + + + &Help + Көмек + + + %n hour(s) + %n сағат + + + %n day(s) + %n күн + + + %n week(s) + %n апта + + + %1 and %2 + %1 немесе %2 + + + %n year(s) + %n жыл + + + %1 behind + %1 қалмады + + + Error + қате + + + Warning + Ескерту + + + Information + Информация + + + Up to date + Жаңартылған + ClientModel CoinControlDialog + + Amount: + Саны + + + Priority: + Басымдық + + + Fee: + Комиссия + + + Dust: + Шаң + + + After Fee: + Комиссия алу кейін + + + Amount + Саны + + + Date + Күні + + + Confirmations + Растау саны + + + Confirmed + Растық + + + Priority + Басымдық + + + no + жоқ + (no label) (таңбасыз) @@ -91,6 +231,10 @@ EditAddressDialog + + &Address + Адрес + FreespaceChecker @@ -100,6 +244,10 @@ Intro + + Error + қате + OpenURIDialog @@ -118,6 +266,10 @@ QObject + + Amount + Саны + QRImageWidget @@ -134,6 +286,10 @@ Address Адрес + + Amount + Саны + Label таңба @@ -141,10 +297,18 @@ RecentRequestsTableModel + + Date + Күні + Label таңба + + Amount + Саны + (no label) (таңбасыз) @@ -152,6 +316,26 @@ SendCoinsDialog + + Amount: + Саны + + + Priority: + Басымдық + + + Fee: + Комиссия: + + + After Fee: + Комиссия алу кейін: + + + Dust: + Шаң + (no label) (таңбасыз) @@ -174,12 +358,24 @@ TransactionDesc + + Date + Күні + + + Amount + Саны + TransactionDescDialog TransactionTableModel + + Date + Күні + Address Адрес @@ -191,6 +387,14 @@ Comma separated file (*.csv) Үтірмен бөлінген файл (*.csv) + + Confirmed + Растық + + + Date + Күні + Label таңба @@ -211,9 +415,17 @@ WalletView + + &Export + Экспорт + bitcoin-core + + Information + Информация + Transaction amount too small Транзакция өте кішкентай @@ -222,5 +434,13 @@ Transaction too large Транзакция өте үлкен - + + Warning + Ескерту + + + Error + қате + + \ No newline at end of file diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index e57362d7f..258c7f109 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -67,7 +67,7 @@ These are your Bitcoin addresses for sending payments. Always check the amount and the receiving address before sending coins. - Dit zijn uw Bitcoinadressen om betalingen mee te verzenden. Check altijd het bedrag en het ontvangende adres voordat u uw bitcoins verzendt. + Dit zijn uw Bitcoinadressen om betalingen mee te verzenden. Controleer altijd het bedrag en het ontvangende adres voordat u uw bitcoins verzendt. These are your Bitcoin addresses for receiving payments. It is recommended to use a new receiving address for each transaction. @@ -478,6 +478,10 @@ Up to date Bijgewerkt + + Processed %n blocks of transaction history. + %n Blok verwerkt van transactie geschiedenis.%n Blokken verwerkt van transactie geschiedenis. + Catching up... Aan het bijwerken... @@ -520,6 +524,10 @@ Adres: %4 CoinControlDialog + + Coin Selection + Munt Selectie + Quantity: Kwantiteit @@ -568,6 +576,14 @@ Adres: %4 Amount Bedrag + + Received with label + Ontvangen met label + + + Received with address + Ontvangen met adres + Date Datum @@ -904,7 +920,11 @@ Adres: %4 %n GB of free space available %n GB aan vrije oplsagruimte beschikbaar%n GB aan vrije oplsagruimte beschikbaar - + + (of %n GB needed) + (van %n GB nodig)(van %n GB nodig) + + OpenURIDialog @@ -1026,6 +1046,14 @@ Adres: %4 Map port using &UPnP Portmapping via &UPnP + + Connect to the Bitcoin network through a SOCKS5 proxy. + Verbind met het Bitcoin netwerk via een SOCKS5 proxy. + + + &Connect through SOCKS5 proxy (default proxy): + &Verbind via een SOCKS5-proxy (standaardproxy): + Proxy &IP: Proxy &IP: @@ -1157,6 +1185,10 @@ Adres: %4 Mined balance that has not yet matured Gedolven saldo dat nog niet tot wasdom is gekomen + + Balances + Saldi + Total: Totaal: @@ -1165,10 +1197,30 @@ Adres: %4 Your current total balance Uw totale saldo + + Your current balance in watch-only addresses + Uw huidige balans in alleen-bekijkbare adressen + + + Spendable: + Besteedbaar: + Recent transactions Recente transacties + + Unconfirmed transactions to watch-only addresses + Onbevestigde transacties naar alleen-bekijkbare adressen + + + Mined balance in watch-only addresses that has not yet matured + Ontgonnen saldo dat nog niet tot wasdom is gekomen + + + Current total balance in watch-only addresses + Huidige balans in alleen-bekijkbare adressen. + out of sync niet gesynchroniseerd @@ -1188,10 +1240,18 @@ Adres: %4 Payment request rejected Betalingsverzoek geweigerd + + Payment request network doesn't match client network. + Betalingsaanvraagnetwerk komt niet overeen met klantennetwerk. + Payment request has expired. Betalingsverzoek is verlopen. + + Payment request is not initialized. + Betalingsaanvraag is niet geïnitialiseerd. + Requested payment amount of %1 is too small (considered dust). Het gevraagde betalingsbedrag van %1 is te weinig (beschouwd als stof). @@ -1208,10 +1268,18 @@ Adres: %4 Payment request fetch URL is invalid: %1 URL om betalingsverzoek te verkrijgen is ongeldig: %1 + + URI cannot be parsed! This can be caused by an invalid Bitcoin address or malformed URI parameters. + URI kan niet verwerkt worden! Dit kan het gevolg zijn van een ongeldig Bitcoin adres of misvormde URI parameters. + Payment request file handling Betalingsverzoek bestandsafhandeling + + Payment request file cannot be read! This can be caused by an invalid payment request file. + Betalingsverzoek-bestand kan niet gelezen of verwerkt worden! Dit kan veroorzaakt worden door een ongeldig betalingsverzoek-bestand. + Unverified payment requests to custom payment scripts are unsupported. Niet-geverifieerde betalingsverzoeken naar aangepaste betaling scripts worden niet ondersteund. @@ -1224,6 +1292,10 @@ Adres: %4 Error communicating with %1: %2 Fout bij communiceren met %1: %2 + + Payment request cannot be parsed! + Betalingsverzoek kan niet juist worden ontleed of verwerkt! + Bad response from server %1 Ongeldige respons van server %1 @@ -1243,7 +1315,15 @@ Adres: %4 User Agent User Agent - + + Address/Hostname + Adres/Hostnaam + + + Ping Time + Ping tijd + + QObject @@ -1340,6 +1420,10 @@ Adres: %4 Using OpenSSL version Gebruikt OpenSSL versie + + Using BerkeleyDB version + Gebruikt BerkeleyDB versie + Startup time Opstarttijd @@ -1372,6 +1456,14 @@ Adres: %4 Sent Verstuurd + + &Peers + &Peers + + + Select a peer to view detailed information. + Selecteer een peer om gedetailleerde informatie te bekijken. + Direction Directie @@ -1388,6 +1480,18 @@ Adres: %4 Services Services + + Starting Height + Aanvangshoogte + + + Sync Height + Synchronisatiehoogte + + + Ban Score + Ban score + Connection Time Connectie tijd @@ -1408,6 +1512,10 @@ Adres: %4 Bytes Received Bytes Ontvangen + + Ping Time + Ping Tijd + Last block time Tijd laatste blok @@ -1492,11 +1600,23 @@ Adres: %4 never nooit + + Inbound + Inkomend + + + Outbound + Uitgaand + Unknown Onbekend - + + Fetching... + Ophalen... + + ReceiveCoinsDialog @@ -1724,6 +1844,50 @@ Adres: %4 Custom change address Aangepast wisselgeldadres + + Transaction Fee: + Transactiekosten: + + + Choose... + Kies... + + + Minimize + Minimaliseer + + + per kilobyte + per kilobyte + + + total at least + totaal ten minste + + + Recommended: + Aanbevolen: + + + Custom: + Handmatig: + + + Confirmation time: + Bevestigings tijd: + + + normal + normaal + + + fast + snel + + + (confirmation may take longer) + (bevestiging kan langer duren) + Send to multiple recipients at once Verstuur aan verschillende ontvangers ineens @@ -1828,6 +1992,18 @@ Adres: %4 The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. De transactie was afgewezen. Dit kan gebeuren als u eerder uitgegeven munten opnieuw wilt versturen, zoals wanneer u een kopie van uw wallet.dat heeft gebruikt en in de kopie deze munten zijn gemarkeerd als uitgegeven, maar in de huidige nog niet. + + A fee higher than %1 is considered an insanely high fee. + Transactiekosten hoger dan %1 worden gezien als waanzinnig hoog. + + + Pay only the minimum fee of %1 + Betaal alleen de minimale transactiekosten van %1 + + + Estimated to begin confirmation within %1 block(s). + Beginnen van bevesting geschat binnen %1 blok(ken). + Warning: Invalid Bitcoin address Waarschuwing: Ongeldig Bitcoin adres @@ -1879,6 +2055,10 @@ Adres: %4 This is a normal payment. Dit is een normale betaling. + + The Bitcoin address to send the payment to + Het Bitcoin adres om betaling aan te voldoen + Alt+A Alt+A @@ -1949,6 +2129,10 @@ Adres: %4 You can sign messages with your addresses to prove you own them. Be careful not to sign anything vague, as phishing attacks may try to trick you into signing your identity over to them. Only sign fully-detailed statements you agree to. U kunt berichten ondertekenen met een van uw adressen om te bewijzen dat u dit adres bezit. Pas op dat u geen onduidelijke dingen ondertekent, want phishingaanvallen zouden u kunnen misleiden om zo uw identiteit te stelen. Onderteken alleen berichten waarmee u het volledig eens bent. + + The Bitcoin address to sign the message with + Het Bitcoin adres om bericht mee te ondertekenen + Choose previously used address Kies een eerder gebruikt adres @@ -2001,6 +2185,10 @@ Adres: %4 Enter the signing address, message (ensure you copy line breaks, spaces, tabs, etc. exactly) and signature below to verify the message. Be careful not to read more into the signature than what is in the signed message itself, to avoid being tricked by a man-in-the-middle attack. Voer het ondertekenende adres, bericht en handtekening hieronder in (let erop dat u nieuwe regels, spaties en tabs juist overneemt) om de handtekening te verifiëren. Let erop dat u niet meer uit het bericht interpreteert dan er daadwerkelijk staat, om te voorkomen dat u wordt misleid in een man-in-the-middle-aanval. + + The Bitcoin address the message was signed with + Het Bitcoin adres waarmee het bericht ondertekend is + Verify the message to ensure it was signed with the specified Bitcoin address Controleer een bericht om te verifiëren dat het gespecificeerde Bitcoinadres het bericht heeft ondertekend. @@ -2142,6 +2330,10 @@ Adres: %4 own address eigen adres + + watch-only + alleen-bekijkbaar + label label @@ -2162,6 +2354,14 @@ Adres: %4 Debit Debet + + Total debit + Totaal debit + + + Total credit + Totaal credit + Transaction fee Transactiekosten @@ -2312,6 +2512,10 @@ Adres: %4 Mined Gedolven + + watch-only + alleen-bekijkbaar + (n/a) (nvt) @@ -2423,6 +2627,10 @@ Adres: %4 Export Transaction History Exporteer Transactieverleden + + Watch-only + Alleen-bekijkbaar + Exporting Failed Export Mislukt @@ -2478,7 +2686,11 @@ Adres: %4 UnitDisplayStatusBarControl - + + Unit to show amounts in. Click to select another unit. + Eenheid om bedragen uit te drukken. Klik om een andere eenheid te selecteren. + + WalletFrame @@ -2752,6 +2964,10 @@ bijvoorbeeld: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.comThis is intended for regression testing tools and app development. Dit is bedoeld voor regressie test toepassingen en applicatie onwikkeling. + + Use UPnP to map the listening port (default: %u) + Gebruik UPnP om de luisterende poort te mappen (standaard: %u) + Verifying blocks... Blokken aan het controleren... @@ -2788,6 +3004,10 @@ bijvoorbeeld: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.comSet maximum size of high-priority/low-fee transactions in bytes (default: %d) Stel maximumgrootte in bytes in voor hoge-prioriteits-/lage-transactiekosten-transacties (standaard: %d) + + Error loading wallet.dat: Wallet requires newer version of Bitcoin Core + Fout bij laden wallet.dat: Portemonnee vereist een nieuwere versie van Bitcoin Core + Information Informatie @@ -2800,6 +3020,18 @@ bijvoorbeeld: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.comInvalid amount for -mintxfee=<amount>: '%s' Ongeldig bedrag voor -mintxfee=<bedrag>: '%s' + + Invalid amount for -paytxfee=<amount>: '%s' (must be at least %s) + Ongeldig bedrag voor -paytxfee=<bedrag>: '%s' (Minimum %s) + + + Keep at most <n> unconnectable blocks in memory (default: %u) + Houd maximaal <n> onverbonden blokken in geheugen (standaard: %u) + + + Keep at most <n> unconnectable transactions in memory (default: %u) + Houd maximaal <n> onverbonden transacties in geheugen (standaard: %u) + Print block on startup, if found in block index Toon block bij opstarten, wanneer gevonden in block index @@ -2916,14 +3148,134 @@ bijvoorbeeld: alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.comError loading wallet.dat: Wallet corrupted Fout bij laden wallet.dat: Portemonnee corrupt + + Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) + Onderhoud een volledige transactieindex, gebruikt door de getrawtransaction rpc call (standaard: %u) + + + Number of seconds to keep misbehaving peers from reconnecting (default: %u) + Aantal seconden dat zich misdragende peers niet opnieuw kunnen verbinden (standaard: %u) + + + Output debugging information (default: %u, supplying <category> is optional) + Output extra debugginginformatie (standaard: %u, het leveren van <category> is optioneel) + + + Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) + Gebruik een aparte SOCKS5 proxy om 'Tor hidden services' te bereiken (standaard: %s) + + + Always query for peer addresses via DNS lookup (default: %u) + Vind anderen door middel van een DNS-naslag (standaard: %u) + + + Disable safemode, override a real safe mode event (default: %u) + Veilige modus uitschakelen, hef een echte veilige modus gebeurtenis uit (default: %u) + Error loading wallet.dat Fout bij laden wallet.dat + + Force safe mode (default: %u) + Forceer veilige modus (default: %u) + + + Generate coins (default: %u) + Genereer munten (standaard: %u) + + + How many blocks to check at startup (default: %u, 0 = all) + Aantal te checken blokken bij het opstarten (standaard: %u, 0 = allemaal) + Invalid -proxy address: '%s' Ongeldig -proxy adres: '%s' + + Limit size of signature cache to <n> entries (default: %u) + Limiteer grootte van de handtekening cache tot <n> entries (default: %u) + + + Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) + Luister naar JSON-RPC-verbindingen op poort <port> (standaard: %u of testnet: %u) + + + Listen for connections on <port> (default: %u or testnet: %u) + Luister naar verbindingen op <poort> (standaard: %u of testnet: %u) + + + Maintain at most <n> connections to peers (default: %u) + Onderhoud maximaal <n> verbindingen naar peers (standaard: %u) + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) + Maximum per-connectie ontvangstbuffer, <n>*1000 bytes (standaard: %u) + + + Maximum per-connection send buffer, <n>*1000 bytes (default: %u) + Maximum per-connectie zendbuffer, <n>*1000 bytes (standaard: %u) + + + Only accept block chain matching built-in checkpoints (default: %u) + Accepteer alleen blokkenketen die overeenkomt met de ingebouwde checkpoints (standaard: %u) + + + Prepend debug output with timestamp (default: %u) + Prepend debug output met tijdstempel (standaard: %u) + + + Print block tree on startup (default: %u) + Toon block structuur bij opstarten (default: %u) + + + Run a thread to flush wallet periodically (default: %u) + Draai een proces om de wallet periodiek te flushen (default: %u) + + + Server certificate file (default: %s) + Certificaat-bestand voor server (standaard: %s) + + + Server private key (default: %s) + Geheime sleutel voor server (standaard: %s) + + + Set key pool size to <n> (default: %u) + Stel sleutelpoelgrootte in op <&> (standaard: %u) + + + Set minimum block size in bytes (default: %u) + Stel minimum blokgrootte in in bytes (standaard: %u) + + + Set the number of threads to service RPC calls (default: %d) + Stel het aantal threads in om RPC-aanvragen mee te bedienen (standaard: %d) + + + Sets the DB_PRIVATE flag in the wallet db environment (default: %u) + Plaatst de DB_PRIVATE vlag in de wallet db omgeving (default: %u) + + + Specify configuration file (default: %s) + Specificeer configuratie bestand (standaard: %s) + + + Specify connection timeout in milliseconds (minimum: 1, default: %d) + Specificeer de time-out tijd in milliseconden (minimum: 1, standaard: %d) + + + Specify pid file (default: %s) + Specificeer pid-bestand (standaard: %s) + + + Spend unconfirmed change when sending transactions (default: %u) + Besteed onbevestigd wisselgeld bij het versturen van transacties (standaard: %u) + + + Threshold for disconnecting misbehaving peers (default: %u) + Drempel om verbinding te verbreken naar zich misdragende peers (standaard: %u) + Unknown network specified in -onlynet: '%s' Onbekend netwerk gespecificeerd in -onlynet: '%s' diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts index ccae9482d..81342c5db 100644 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ b/src/qt/locale/bitcoin_ro_RO.ts @@ -773,6 +773,10 @@ Adresa: %4 version versiunea + + (%1-bit) + (%1-bit) + About Bitcoin Core Despre Nucleul Bitcoin diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index fa6629777..55986d409 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -520,6 +520,10 @@ Address: %4 CoinControlDialog + + Coin Selection + Выбор монет + Quantity: Количество: @@ -1844,17 +1848,37 @@ Address: %4 Choose... Выберите... + + collapse fee-settings + Свернуть настройки комиссии + Minimize Сворачивать + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Если комиссия установлена в 1000 сатоши, а транзакция составляет лишь 250 байт, тогда комиссия "на килобайт" составит 250 сатоши, а "как минимум" — 1000 сатоши. Для транзакций крупнее килобайта в обоих случаях будет использоваться платёж "на килобайт". + per kilobyte за килобайт + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Если комиссия установлена в 1000 сатоши, а транзакция составляет лишь 250 байт, тогда комиссия "на килобайт" составит 250 сатоши, а "всего как минимум" — 1000 сатоши. Для транзакций крупнее килобайта в обоих случаях будет использоваться платёж "на килобайт". + total at least - Итого + Итого как минимум + + + Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process. + Уплата минимальной комиссии — не проблема, пока объём транзакций меньше, чем свободное место в блоках. Учтите, однако, что такая транзакция может никогда не подтвердиться, если спрос на транзакции превышает возможности сети по их обработке. + + + (read the tooltip) + (прочтите подсказку) Recommended: @@ -1864,6 +1888,10 @@ Address: %4 Custom: Выборочно: + + (Smart fee not initialized yet. This usually takes a few blocks...) + (Умная комиссия пока не инициализирована. Обычно для этого требуется несколько блоков...) + Confirmation time: Время подтверждения: @@ -1994,7 +2022,7 @@ Address: %4 Estimated to begin confirmation within %1 block(s). - Ожидается начать подтверждение через %1 блок(ов). + Начало подтверждения ожидается через %1 блок(ов). Warning: Invalid Bitcoin address @@ -2798,6 +2826,10 @@ rpcpassword=%s Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup Удалить все транзакции бумажника с возможностью восстановить эти части цепи блоков с помощью -rescan при запуске + + Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. + Распространяется под лицензией MIT, см. приложенный файл COPYING или <http://www.opensource.org/licenses/mit-license.php>. + Enter regression test mode, which uses a special chain in which blocks can be solved instantly. Войти в режим тестирования на регрессии, в котором используется специальная цепь, где блоки находятся мгновенно. @@ -3064,7 +3096,7 @@ rpcpassword=%s Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) - Задать число потоков генерации монет, если включена (-1 = число ядер процессора, по умолчанию: %d) + Задать число потоков генерации монет, если она включена (-1 = все ядра процессора, по умолчанию: %d) This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard. @@ -3332,7 +3364,7 @@ rpcpassword=%s Disable safemode, override a real safe mode event (default: %u) - Отключить безопасный режим, отклонить реальное событие безопасного режима (по умолчанию: %u) + Отключить безопасный режим, перекрыть реальное событие безопасного режима (по умолчанию: %u) Error loading wallet.dat diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts index 64c68a222..b005ce23a 100644 --- a/src/qt/locale/bitcoin_sr.ts +++ b/src/qt/locale/bitcoin_sr.ts @@ -3,15 +3,31 @@ AddressBookPage Double-click to edit address or label - Кликните два пута да промените адресу и/или етикету + Kliknite dva puta da izmenite adresu ili etiketu Create a new address - Прави нову адресу + Napravite novu adresu + + + &New + Novo Copy the currently selected address to the system clipboard - Копира изабрану адресу на системски клипборд + Kopirajte trenutno izabranu adresu + + + &Copy + Kopirajte + + + &Copy Address + Kopirajte adresu + + + Delete the currently selected address from the list + Izbrisite trenutno izabranu adresu sa liste &Delete diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index b6ba507e9..9b5f4c9f4 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -524,6 +524,10 @@ Address: %4 CoinControlDialog + + Coin Selection + Вибір Монет + Quantity: Кількість: @@ -572,6 +576,14 @@ Address: %4 Amount Кількість + + Received with label + Отримано з позначкою + + + Received with address + Отримано з адресою + Date Дата @@ -1034,6 +1046,14 @@ Address: %4 Map port using &UPnP Відображення порту через &UPnP + + Connect to the Bitcoin network through a SOCKS5 proxy. + Підключення до мережі Bitcoin через SOCKS5 проксі. + + + &Connect through SOCKS5 proxy (default proxy): + &Підключення через SOCKS5 проксі (проксі за замовчуванням): + Proxy &IP: &IP проксі: @@ -1824,6 +1844,78 @@ Address: %4 Custom change address Вказати адресу для решти + + Transaction Fee: + Комісія за передачу: + + + Choose... + Виберіть... + + + collapse fee-settings + згорнути налаштування оплат + + + Minimize + Мінімізувати + + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Якщо оплата користувача встановлюється в 1000 Satoshi і розмір передачі всього 250 байт, то "за кілобайт" платить тільки 250 Satoshi, в той час як "щонайменше" платить 1000 satoshis. Для передач більших, ніж кілобайт обоє платять за кілобайт. + + + per kilobyte + за кілобайт + + + If the custom fee is set to 1000 satoshis and the transaction is only 250 bytes, then "per kilobyte" only pays 250 satoshis in fee, while "total at least" pays 1000 satoshis. For transactions bigger than a kilobyte both pay by kilobyte. + Якщо оплата користувача встановлюється в 1000 Satoshi і розмір передачі всього 250 байт, то "за кілобайт" платить тільки 250 Satoshi, в той час як "всього щонайменше" платить 1000 satoshis. Для передач більших, ніж кілобайт обоє платять за кілобайт. + + + total at least + всього щонайменше + + + Paying only the minimum fee is just fine as long as there is less transaction volume than space in the blocks. But be aware that this can end up in a never confirming transaction once there is more demand for bitcoin transactions than the network can process. + Оплата тільки мінімальних зборів є прийнятною до тих пір, як обсяг транзакцій там є меншим аніж простору в блоках. Але майте на увазі, що це може анулювати транзакцію, якщо попит на Bitcoin транзакції стане значно більшим, ніж мережа зможе обробити. + + + (read the tooltip) + (читати підказки) + + + Recommended: + Рекомендовано: + + + Custom: + Змінено: + + + (Smart fee not initialized yet. This usually takes a few blocks...) + (Розумна оплата ще не ініціалізована. Це звичайно займає кілька блоків...) + + + Confirmation time: + Час підтвердження: + + + normal + звичайний + + + fast + швидкий + + + Send as zero-fee transaction if possible + Надіслати як нульовий плата за передачу, якщо це можливо + + + (confirmation may take longer) + (підтвердження може зайняти більше часу) + Send to multiple recipients at once Відправити на декілька адрес @@ -1928,6 +2020,18 @@ Address: %4 The transaction was rejected! This might happen if some of the coins in your wallet were already spent, such as if you used a copy of wallet.dat and coins were spent in the copy but not marked as spent here. Транзакцію відхилено! Це може статись, якщо декілька монет з вашого гаманця вже використані, наприклад, якщо ви використовуєте одну копію гаманця (wallet.dat), а монети були використані з іншої копії, але не позначені як використані в цій. + + A fee higher than %1 is considered an insanely high fee. + Плата вища, ніж %1 вважається шалено високою. + + + Pay only the minimum fee of %1 + Платити тільки мінімальний збір у розмірі %1 + + + Estimated to begin confirmation within %1 block(s). + Розрахунковий початок підтвердження протягом %1 блоку(ів). + Warning: Invalid Bitcoin address Увага: Неправильна Bitcoin-адреса @@ -2734,6 +2838,10 @@ rpcpassword=%s Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup Видалити всі транзакції гаманця та відновити ті, що будуть знайдені під час запуску за допомогою -rescan + + Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. + Поширюється за ліцензією MIT, додаткова інформація міститься у файлі COPYING та за адресою <http://www.opensource.org/licenses/mit-license.php>. + Enter regression test mode, which uses a special chain in which blocks can be solved instantly. Ввійти в режим регресивного тестування, що використовує спеціальний ланцюг з миттєвим знаходженням блоків. @@ -2986,6 +3094,10 @@ rpcpassword=%s Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s) Комісії (в BTC/КБ), що менші за вказану, вважатимуться нульовими (для створення транзакції) (типово: %s) + + Maximum size of data in data carrier transactions we relay and mine (default: %u) + Максимальний розмір даних в транзакціях носіїв даних, що ми передаємо і добуваємо (за замовчуванням: %u) + Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) Дізнаватися адреси учасників через DNS при замалій кількості відомих адрес (типово: 1 за відсутності -connect) @@ -2994,6 +3106,10 @@ rpcpassword=%s Set maximum size of high-priority/low-fee transactions in bytes (default: %d) Встановити максимальний розмір транзакцій з високим пріоритетом та низькою комісією (в байтах) (типово: %d) + + Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) + Встановити кількість потоків для генерації монет (-1 = кількості ядер, типово: %d) + This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard. Цей продукт включає в себе програмне забезпечення, розроблене в рамках проекту OpenSSL <https://www.openssl.org/>, криптографічне програмне забезпечення, написане Еріком Янгом, та функції для роботи з UPnP, написані Томасом Бернардом. @@ -3098,6 +3214,10 @@ rpcpassword=%s Send trace/debug info to console instead of debug.log file Відсилати налагоджувальну інформацію на консоль, а не у файл debug.log + + Send transactions as zero-fee transactions if possible (default: %u) + Встановити операцію надсилання, як неоплатну операцію, якщо це можливо (за замовчуванням: %u) + Show all debugging options (usage: --help -help-debug) Показати всі налагоджувальні параметри (використання: --help -help-debug) diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index b70596d83..56d598fc6 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -478,6 +478,10 @@ Up to date 最新狀態 + + Processed %n blocks of transaction history. + 已經處理了 %n 個區塊的交易紀錄。 + Catching up... 正在趕進度... @@ -520,6 +524,10 @@ Address: %4 CoinControlDialog + + Coin Selection + 選擇錢幣 + Quantity: 數目: @@ -1030,6 +1038,14 @@ Address: %4 Map port using &UPnP 用 &UPnP 設定通訊埠對應 + + Connect to the Bitcoin network through a SOCKS5 proxy. + 透過 SOCKS5 代理伺服器來連線到位元幣網路。 + + + &Connect through SOCKS5 proxy (default proxy): + 透過 SOCKS5 代理伺服器連線(預設代理伺服器): + Proxy &IP: 代理位址: @@ -1820,6 +1836,38 @@ Address: %4 Custom change address 自定找零位址 + + Transaction Fee: + 交易手續費: + + + Choose... + 選擇... + + + collapse fee-settings + 展開手續費設定 + + + Minimize + 最小化 + + + per kilobyte + 每千位元組 + + + (read the tooltip) + (請看提示) + + + Confirmation time: + 確認時間: + + + Send as zero-fee transaction if possible + 盡可能送不用付手續費的交易 + Send to multiple recipients at once 一次付給多個收款人 @@ -2731,6 +2779,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Delete all wallet transactions and only recover those parts of the blockchain through -rescan on startup 清掉錢包裡的所有交易,並且在下次啟動時,使用 -rescan 來從區塊鏈中復原回來。 + + Distributed under the MIT software license, see the accompanying file COPYING or <http://www.opensource.org/licenses/mit-license.php>. + 這套軟體是依據 MIT 軟體授權條款散布,詳情請見附帶的 COPYING 檔案,或是以下網站: <http://www.opensource.org/licenses/mit-license.php>. + Enter regression test mode, which uses a special chain in which blocks can be solved instantly. 進入回歸測試模式,使用可以立即解出區塊的特殊區塊鏈。 @@ -2783,6 +2835,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Warning: wallet.dat corrupt, data salvaged! Original wallet.dat saved as wallet.{timestamp}.bak in %s; if your balance or transactions are incorrect you should restore from a backup. 警告: 錢包檔 wallet.dat 壞掉,但資料被拯救回來了!原來的 wallet.dat 會改儲存在 %s, 檔名是 wallet.{timestamp}.bak. 如果餘額或交易資料有誤,你應該要用備份資料復原回來。 + + Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. + 把來自指定網域或位址的節點放進白名單。這個選項可以設定多次。 + (default: 1) (預設值: 1) @@ -2821,7 +2877,7 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Do not load the wallet and disable wallet RPC calls - 不要載入錢包,並且拿掉錢包相關的 RPC 功能呼叫。 + 不要載入錢包,並且拿掉錢包相關的 RPC 功能請求。 Do you want to rebuild the block database now? @@ -2947,6 +3003,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Cannot obtain a lock on data directory %s. Bitcoin Core is probably already running. 沒辦法鎖定資料目錄 %s。位元幣核心可能已經在執行了。 + + Continuously rate-limit free transactions to <n>*1000 bytes per minute (default:%u) + 對沒付手續費的交易持續限制每分鐘內最多只能有 <n>*1000 個位元組(預設值: %u) + Create new files with system default permissions, instead of umask 077 (only effective with disabled wallet functionality) 用系統預設權限來造出新的檔案,而不是用使用者權限罩遮(umask)值 077 (只有在關掉錢包功能時才有作用)。 @@ -2971,6 +3031,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s) 當製造交易時,如果每千位元組(Kb)的手續費比這個值低,就視為沒付手續費 (預設值: %s) + + Maximum size of data in data carrier transactions we relay and mine (default: %u) + 轉發和開採時,對只帶資料的交易的大小上限(預設值: %u) + Query for peer addresses via DNS lookup, if low on addresses (default: 1 unless -connect) 是否允許在節點位址數目不足時,使用域名查詢來搜尋節點 (預設值: 當沒用 -connect 時為 1) @@ -2979,6 +3043,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Set maximum size of high-priority/low-fee transactions in bytes (default: %d) 設定高優先度或低手續費的交易資料大小上限成多少位元組(預設值: %d) + + Set the number of threads for coin generation if enabled (-1 = all cores, default: %d) + 設定產生錢幣的執行緒數目(-1 表示處理器核心數,預設值: %d) + This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https://www.openssl.org/> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard. 此產品也包含了由 OpenSSL Project 所開發的 OpenSSL Toolkit 軟體 <https://www.openssl.org/>, 和由 Eric Young 撰寫的加解密軟體,以及由 Thomas Bernard 所撰寫的 UPnP 軟體。 @@ -3083,6 +3151,10 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Send trace/debug info to console instead of debug.log file 在終端機顯示追蹤或除錯資訊,而不是寫到檔案 debug.log 中 + + Send transactions as zero-fee transactions if possible (default: %u) + 盡可能送出不用付手續費的交易(預設值: %u) + Show all debugging options (usage: --help -help-debug) 顯示所有的除錯選項 (用法: --help --help-debug) @@ -3191,14 +3263,178 @@ alertnotify=echo %%s | mail -s "Bitcoin Alert" admin@foo.com Error loading wallet.dat: Wallet corrupted 載入檔案 wallet.dat 時發生錯誤: 錢包損毀了 + + (1 = keep tx meta data e.g. account owner and payment request information, 2 = drop tx meta data) + (1 表示保留交易描述資料,像是帳戶使用者和付款請求資訊;2 表示丟掉交易描述資料) + + + Flush database activity from memory pool to disk log every <n> megabytes (default: %u) + 每當累積到 <n> 百萬位元組(MB)時,才將資料庫的變動從記憶體暫存池中寫進磁碟紀錄檔(預設值: %u) + + + How thorough the block verification of -checkblocks is (0-4, default: %u) + 使用 -checkblocks 檢查區塊的仔細程度(0 到 4,預設值: %u) + + + If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: %u) + 當沒有設定 paytxfee 時,自動包含可以讓交易能在平均 n 個區塊內確認的手續費(預設值: %u) + + + Log transaction priority and fee per kB when mining blocks (default: %u) + 開採區塊的時候,紀錄交易的優先度以及每千位元組(kB)的手續費(預設值: %u) + + + Maintain a full transaction index, used by the getrawtransaction rpc call (default: %u) + 維護全部交易的索引,用在 getrawtransaction 這個 RPC 請求(預設值: %u) + + + Number of seconds to keep misbehaving peers from reconnecting (default: %u) + 避免與亂搞的節點連線的秒數(預設: %u) + + + Output debugging information (default: %u, supplying <category> is optional) + 輸出除錯資訊(預設值: %u, 不一定要指定 <category>) + + + Use separate SOCKS5 proxy to reach peers via Tor hidden services (default: %s) + 使用另外的 SOCK5 代理伺服器,來透過 Tor 隱藏服務跟節點聯繫(預設值: %s) + + + (default: %s) + (預設值: %s) + + + Acceptable ciphers (default: %s) + 可以接受的加密演算法(預設值: %s) + + + Always query for peer addresses via DNS lookup (default: %u) + 是否一定要用域名查詢來搜尋節點(預設值: %u) + + + Disable safemode, override a real safe mode event (default: %u) + 不進入安全模式,用在真的發生需要進入安全模式的事件時,強制不進入(預設值: %u) + Error loading wallet.dat 載入錢包檔 wallet.dat 時發生錯誤 + + Force safe mode (default: %u) + 強制進入安全模式(預設值: %u) + + + Generate coins (default: %u) + 生產位元幣(預設值: %u) + + + How many blocks to check at startup (default: %u, 0 = all) + 啓動時檢查的區塊數(預設值: %u, 指定 0 表示全部) + + + Include IP addresses in debug output (default: %u) + 在除錯輸出內容中包含網際網路位址(預設值: %u) + Invalid -proxy address: '%s' 無效的 -proxy 位址: '%s' + + Limit size of signature cache to <n> entries (default: %u) + 限制簽章快取大小為 <n> 筆(預設值: %u) + + + Listen for JSON-RPC connections on <port> (default: %u or testnet: %u) + 在通訊埠 <port> 聽候 JSON-RPC 連線(預設值: %u, 或若為測試網路: %u) + + + Listen for connections on <port> (default: %u or testnet: %u) + 在通訊埠 <port> 聽候連線(預設值: %u, 或若為測試網路: %u) + + + Maintain at most <n> connections to peers (default: %u) + 維持與節點連線數的上限為 <n> 個(預設值: %u) + + + Maximum per-connection receive buffer, <n>*1000 bytes (default: %u) + 每個連線的接收緩衝區大小上限為 <n>*1000 個位元組(預設值: %u) + + + Maximum per-connection send buffer, <n>*1000 bytes (default: %u) + 每個連線的傳送緩衝區大小上限為 <n>*1000 個位元組(預設值: %u) + + + Only accept block chain matching built-in checkpoints (default: %u) + 只接受與內建的檢查段點吻合的區塊鎖鏈(預設值: %u) + + + Prepend debug output with timestamp (default: %u) + 在除錯輸出內容前附加時間(預設值: %u) + + + Print block tree on startup (default: %u) + 啟動時輸出區塊樹(預設值: %u) + + + Relay and mine data carrier transactions (default: %u) + 允許轉發和開採只帶資料的交易(預設值: %u) + + + Relay non-P2SH multisig (default: %u) + 允許轉發非 P2SH 的多簽章交易(預設值: %u) + + + Run a thread to flush wallet periodically (default: %u) + 啟用定期將變動寫入錢包檔的執行緒(預設值: %u) + + + Server certificate file (default: %s) + 伺服器憑證檔(預設值: %s) + + + Server private key (default: %s) + 伺服器密鑰檔(預設值: %s) + + + Set key pool size to <n> (default: %u) + 設定密鑰池大小為 <n> (預設值: %u) + + + Set minimum block size in bytes (default: %u) + 設定區塊大小下限為多少位元組(預設值: %u) + + + Set the number of threads to service RPC calls (default: %d) + 設定處理 RPC 服務請求的執行緒數目(預設值: %d) + + + Sets the DB_PRIVATE flag in the wallet db environment (default: %u) + 在錢包資料庫環境變數設定 DB_PRIVATE 旗標(預設值: %u) + + + Specify configuration file (default: %s) + 指定設定檔(預設值: %s) + + + Specify connection timeout in milliseconds (minimum: 1, default: %d) + 指定連線在幾毫秒後逾時 (最少值: 1, 預設值: %d) + + + Specify pid file (default: %s) + 指定行程識別碼檔案(預設值: %s) + + + Spend unconfirmed change when sending transactions (default: %u) + 傳送交易時可以花還沒確認的零錢(預設值: %u) + + + Stop running after importing blocks from disk (default: %u) + 從磁碟匯入區塊資料後停止執行(預設值: %u) + + + Threshold for disconnecting misbehaving peers (default: %u) + 與亂搞的節點斷線的臨界值 (預設: %u) + Unknown network specified in -onlynet: '%s' 在 -onlynet 指定了不明的網路別: '%s' From d7492304e9b92b755c0bdafb9805bdca66dae94a Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 11 Dec 2014 16:03:46 +0100 Subject: [PATCH 30/47] Now that 0.10 has been branched, master is 0.10.99 --- configure.ac | 2 +- doc/Doxyfile | 2 +- doc/README.md | 2 +- doc/README_windows.txt | 2 +- doc/release-notes.md | 123 ----------------------------------------- src/clientversion.h | 2 +- 6 files changed, 5 insertions(+), 128 deletions(-) diff --git a/configure.ac b/configure.ac index c4c21eaf4..efb4c0031 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 0) -define(_CLIENT_VERSION_MINOR, 9) +define(_CLIENT_VERSION_MINOR, 10) define(_CLIENT_VERSION_REVISION, 99) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_IS_RELEASE, false) diff --git a/doc/Doxyfile b/doc/Doxyfile index e0339e652..8a11d1e8d 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -34,7 +34,7 @@ PROJECT_NAME = Bitcoin # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.9.99 +PROJECT_NUMBER = 0.10.99 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer diff --git a/doc/README.md b/doc/README.md index d5d61738e..3ec5f11df 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,4 +1,4 @@ -Bitcoin 0.9.99 BETA +Bitcoin 0.10.99 BETA ===================== Copyright (c) 2009-2014 Bitcoin Developers diff --git a/doc/README_windows.txt b/doc/README_windows.txt index 368f2b45e..9780a2cb1 100644 --- a/doc/README_windows.txt +++ b/doc/README_windows.txt @@ -1,4 +1,4 @@ -Bitcoin 0.9.99 BETA +Bitcoin 0.10.99 BETA Copyright (c) 2009-2014 Bitcoin Core Developers diff --git a/doc/release-notes.md b/doc/release-notes.md index f804e8c11..1cb517e5c 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,126 +1,3 @@ (note: this is a temporary file, to be added-to by anybody, and moved to release-notes at release time) -Block file backwards-compatibility warning -=========================================== - -Because release 0.10.0 makes use of headers-first synchronization and parallel -block download, the block files and databases are not backwards-compatible -with older versions of Bitcoin Core: - -* Blocks will be stored on disk out of order (in the order they are -received, really), which makes it incompatible with some tools or -other programs. Reindexing using earlier versions will also not work -anymore as a result of this. - -* The block index database will now hold headers for which no block is -stored on disk, which earlier versions won't support. - -If you want to be able to downgrade smoothly, make a backup of your entire data -directory. Without this your node will need start syncing (or importing from -bootstrap.dat) anew afterwards. - -This does not affect wallet forward or backward compatibility. - -Transaction fee changes -======================= - -This release automatically estimates how high a transaction fee (or how -high a priority) transactions require to be confirmed quickly. The default -settings will create transactions that confirm quickly; see the new -'txconfirmtarget' setting to control the tradeoff between fees and -confirmation times. - -Prior releases used hard-coded fees (and priorities), and would -sometimes create transactions that took a very long time to confirm. - -Statistics used to estimate fees and priorities are saved in the -data directory in the `fee_estimates.dat` file just before -program shutdown, and are read in at startup. - -New Command Line Options ---------------------------- - -- `-txconfirmtarget=n` : create transactions that have enough fees (or priority) -so they are likely to confirm within n blocks (default: 1). This setting -is over-ridden by the -paytxfee option. - -New RPC methods ----------------- - -- `estimatefee nblocks` : Returns approximate fee-per-1,000-bytes needed for -a transaction to be confirmed within nblocks. Returns -1 if not enough -transactions have been observed to compute a good estimate. - -- `estimatepriority nblocks` : Returns approximate priority needed for -a zero-fee transaction to confirm within nblocks. Returns -1 if not -enough free transactions have been observed to compute a good -estimate. - -RPC access control changes -========================================== - -Subnet matching for the purpose of access control is now done -by matching the binary network address, instead of with string wildcard matching. -For the user this means that `-rpcallowip` takes a subnet specification, which can be - -- a single IP address (e.g. `1.2.3.4` or `fe80::0012:3456:789a:bcde`) -- a network/CIDR (e.g. `1.2.3.0/24` or `fe80::0000/64`) -- a network/netmask (e.g. `1.2.3.4/255.255.255.0` or `fe80::0012:3456:789a:bcde/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff`) - -An arbitrary number of `-rpcallow` arguments can be given. An incoming connection will be accepted if its origin address -matches one of them. - -For example: - -| 0.9.x and before | 0.10.x | -|--------------------------------------------|---------------------------------------| -| `-rpcallowip=192.168.1.1` | `-rpcallowip=192.168.1.1` (unchanged) | -| `-rpcallowip=192.168.1.*` | `-rpcallowip=192.168.1.0/24` | -| `-rpcallowip=192.168.*` | `-rpcallowip=192.168.0.0/16` | -| `-rpcallowip=*` (dangerous!) | `-rpcallowip=::/0` | - -Using wildcards will result in the rule being rejected with the following error in debug.log: - - Error: Invalid -rpcallowip subnet specification: *. Valid are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). - -RPC Server "Warm-Up" Mode -========================= - -The RPC server is started earlier now, before most of the expensive -intialisations like loading the block index. It is available now almost -immediately after starting the process. However, until all initialisations -are done, it always returns an immediate error with code -28 to all calls. - -This new behaviour can be useful for clients to know that a server is already -started and will be available soon (for instance, so that they do not -have to start it themselves). - -Improved signing security -========================= - -For 0.10 the security of signing against unusual attacks has been -improved by making the signatures constant time and deterministic. - -This change is a result of switching signing to use libsecp256k1 -instead of OpenSSL. Libsecp256k1 is a cryptographic library -optimized for the curve Bitcoin uses which was created by Bitcoin -Core developer Pieter Wuille. - -There exist attacks[1] against most ECC implementations where an -attacker on shared virtual machine hardware could extract a private -key if they could cause a target to sign using the same key hundreds -of times. While using shared hosts and reusing keys are inadvisable -for other reasons, it's a better practice to avoid the exposure. - -OpenSSL has code in their source repository for derandomization -and reduction in timing leaks, and we've eagerly wanted to use -it for a long time but this functionality has still not made its -way into a released version of OpenSSL. Libsecp256k1 achieves -significantly stronger protection: As far as we're aware this is -the only deployed implementation of constant time signing for -the curve Bitcoin uses and we have reason to believe that -libsecp256k1 is better tested and more thoroughly reviewed -than the implementation in OpenSSL. - -[1] https://eprint.iacr.org/2014/161.pdf diff --git a/src/clientversion.h b/src/clientversion.h index 0a36eb801..32deaa0f1 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -15,7 +15,7 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 0 -#define CLIENT_VERSION_MINOR 9 +#define CLIENT_VERSION_MINOR 10 #define CLIENT_VERSION_REVISION 99 #define CLIENT_VERSION_BUILD 0 From aa768f1848b00e0fd615016598d3fb1f1da240ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Jan=C3=ADk?= Date: Thu, 11 Dec 2014 16:06:23 +0100 Subject: [PATCH 31/47] signrawtransaction: validate private key. --- src/rpcrawtransaction.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rpcrawtransaction.cpp b/src/rpcrawtransaction.cpp index 8de15ff9e..4a1af2207 100644 --- a/src/rpcrawtransaction.cpp +++ b/src/rpcrawtransaction.cpp @@ -587,6 +587,8 @@ Value signrawtransaction(const Array& params, bool fHelp) if (!fGood) throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid private key"); CKey key = vchSecret.GetKey(); + if (!key.IsValid()) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Private key outside allowed range"); tempKeystore.AddKey(key); } } From 9dcd524f3248cb4fca5613a3c11dddcc7a0efbd7 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 24 Nov 2014 14:51:10 +0100 Subject: [PATCH 32/47] Make IsSuperMajority a standalone function --- src/chain.h | 8 -------- src/main.cpp | 15 ++++++++++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/chain.h b/src/chain.h index 1c2d89933..a8a6b4dd6 100644 --- a/src/chain.h +++ b/src/chain.h @@ -236,14 +236,6 @@ public: return pbegin[(pend - pbegin)/2]; } - /** - * Returns true if there are nRequired or more blocks of minVersion or above - * in the last Params().ToCheckBlockUpgradeMajority() blocks, starting at pstart - * and going backwards. - */ - static bool IsSuperMajority(int minVersion, const CBlockIndex* pstart, - unsigned int nRequired); - std::string ToString() const { return strprintf("CBlockIndex(pprev=%p, nHeight=%d, merkle=%s, hashBlock=%s)", diff --git a/src/main.cpp b/src/main.cpp index 50e63e93e..bc08c3ea2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -67,6 +67,13 @@ map mapOrphanTransactions; map > mapOrphanTransactionsByPrev; void EraseOrphansFor(NodeId peer); +/** + * Returns true if there are nRequired or more blocks of minVersion or above + * in the last Params().ToCheckBlockUpgradeMajority() blocks, starting at pstart + * and going backwards. + */ +static bool IsSuperMajority(int minVersion, const CBlockIndex* pstart, unsigned int nRequired); + /** Constant stuff for coinbase transactions we create: */ CScript COINBASE_FLAGS; @@ -2479,8 +2486,7 @@ bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationState& sta return state.DoS(100, error("%s : forked chain older than last checkpoint (height %d)", __func__, nHeight)); // Reject block.nVersion=1 blocks when 95% (75% on testnet) of the network has upgraded: - if (block.nVersion < 2 && - CBlockIndex::IsSuperMajority(2, pindexPrev, Params().RejectBlockOutdatedMajority())) + if (block.nVersion < 2 && IsSuperMajority(2, pindexPrev, Params().RejectBlockOutdatedMajority())) { return state.Invalid(error("%s : rejected nVersion=1 block", __func__), REJECT_OBSOLETE, "bad-version"); @@ -2501,8 +2507,7 @@ bool ContextualCheckBlock(const CBlock& block, CValidationState& state, CBlockIn // Enforce block.nVersion=2 rule that the coinbase starts with serialized block height // if 750 of the last 1,000 blocks are version 2 or greater (51/100 if testnet): - if (block.nVersion >= 2 && - CBlockIndex::IsSuperMajority(2, pindexPrev, Params().EnforceBlockUpgradeMajority())) + if (block.nVersion >= 2 && IsSuperMajority(2, pindexPrev, Params().EnforceBlockUpgradeMajority())) { CScript expect = CScript() << nHeight; if (block.vtx[0].vin[0].scriptSig.size() < expect.size() || @@ -2600,7 +2605,7 @@ bool AcceptBlock(CBlock& block, CValidationState& state, CBlockIndex** ppindex, return true; } -bool CBlockIndex::IsSuperMajority(int minVersion, const CBlockIndex* pstart, unsigned int nRequired) +static bool IsSuperMajority(int minVersion, const CBlockIndex* pstart, unsigned int nRequired) { unsigned int nToCheck = Params().ToCheckBlockUpgradeMajority(); unsigned int nFound = 0; From 5ea3bc06d501594a36c97e20df2d446e87956aed Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sun, 23 Nov 2014 14:07:38 +0100 Subject: [PATCH 33/47] Move remaining CBlockIndex methods to chain.cpp --- src/chain.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 48 ------------------------------------------------ 2 files changed, 49 insertions(+), 48 deletions(-) diff --git a/src/chain.cpp b/src/chain.cpp index e13c04786..3dbaf5a36 100644 --- a/src/chain.cpp +++ b/src/chain.cpp @@ -57,3 +57,52 @@ const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const { pindex = pindex->pprev; return pindex; } + +/** Turn the lowest '1' bit in the binary representation of a number into a '0'. */ +int static inline InvertLowestOne(int n) { return n & (n - 1); } + +/** Compute what height to jump back to with the CBlockIndex::pskip pointer. */ +int static inline GetSkipHeight(int height) { + if (height < 2) + return 0; + + // Determine which height to jump back to. Any number strictly lower than height is acceptable, + // but the following expression seems to perform well in simulations (max 110 steps to go back + // up to 2**18 blocks). + return (height & 1) ? InvertLowestOne(InvertLowestOne(height - 1)) + 1 : InvertLowestOne(height); +} + +CBlockIndex* CBlockIndex::GetAncestor(int height) +{ + if (height > nHeight || height < 0) + return NULL; + + CBlockIndex* pindexWalk = this; + int heightWalk = nHeight; + while (heightWalk > height) { + int heightSkip = GetSkipHeight(heightWalk); + int heightSkipPrev = GetSkipHeight(heightWalk - 1); + if (heightSkip == height || + (heightSkip > height && !(heightSkipPrev < heightSkip - 2 && + heightSkipPrev >= height))) { + // Only follow pskip if pprev->pskip isn't better than pskip->pprev. + pindexWalk = pindexWalk->pskip; + heightWalk = heightSkip; + } else { + pindexWalk = pindexWalk->pprev; + heightWalk--; + } + } + return pindexWalk; +} + +const CBlockIndex* CBlockIndex::GetAncestor(int height) const +{ + return const_cast(this)->GetAncestor(height); +} + +void CBlockIndex::BuildSkip() +{ + if (pprev) + pskip = pprev->GetAncestor(GetSkipHeight(nHeight)); +} diff --git a/src/main.cpp b/src/main.cpp index bc08c3ea2..7533c3261 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2618,54 +2618,6 @@ static bool IsSuperMajority(int minVersion, const CBlockIndex* pstart, unsigned return (nFound >= nRequired); } -/** Turn the lowest '1' bit in the binary representation of a number into a '0'. */ -int static inline InvertLowestOne(int n) { return n & (n - 1); } - -/** Compute what height to jump back to with the CBlockIndex::pskip pointer. */ -int static inline GetSkipHeight(int height) { - if (height < 2) - return 0; - - // Determine which height to jump back to. Any number strictly lower than height is acceptable, - // but the following expression seems to perform well in simulations (max 110 steps to go back - // up to 2**18 blocks). - return (height & 1) ? InvertLowestOne(InvertLowestOne(height - 1)) + 1 : InvertLowestOne(height); -} - -CBlockIndex* CBlockIndex::GetAncestor(int height) -{ - if (height > nHeight || height < 0) - return NULL; - - CBlockIndex* pindexWalk = this; - int heightWalk = nHeight; - while (heightWalk > height) { - int heightSkip = GetSkipHeight(heightWalk); - int heightSkipPrev = GetSkipHeight(heightWalk - 1); - if (heightSkip == height || - (heightSkip > height && !(heightSkipPrev < heightSkip - 2 && - heightSkipPrev >= height))) { - // Only follow pskip if pprev->pskip isn't better than pskip->pprev. - pindexWalk = pindexWalk->pskip; - heightWalk = heightSkip; - } else { - pindexWalk = pindexWalk->pprev; - heightWalk--; - } - } - return pindexWalk; -} - -const CBlockIndex* CBlockIndex::GetAncestor(int height) const -{ - return const_cast(this)->GetAncestor(height); -} - -void CBlockIndex::BuildSkip() -{ - if (pprev) - pskip = pprev->GetAncestor(GetSkipHeight(nHeight)); -} bool ProcessNewBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBlockPos *dbp) { From 422f873ef3d62f7dff9c00dc0f221912ce28f130 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Thu, 11 Dec 2014 15:38:29 -0500 Subject: [PATCH 34/47] depends: teach 'make download' to download sources for all hosts --- depends/Makefile | 11 +++++++++-- depends/README.usage | 5 ++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/depends/Makefile b/depends/Makefile index 5de015971..f803268c1 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -122,5 +122,12 @@ $(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_ $(AT)touch $@ install: $(host_prefix)/share/config.site -download: $(all_sources) -.PHONY: install cached +download-one: $(all_sources) +download-osx: + @$(MAKE) -s HOST=x86_64-apple-darwin11 download-one +download-linux: + @$(MAKE) -s HOST=x86_64-unknown-linux-gnu download-one +download-win: + @$(MAKE) -s HOST=x86_64-w64-mingw32 download-one +download: download-osx download-linux download-win +.PHONY: install cached download-one download-osx download-linux download-win download diff --git a/depends/README.usage b/depends/README.usage index e768feecf..f5aa5314a 100644 --- a/depends/README.usage +++ b/depends/README.usage @@ -29,4 +29,7 @@ If some packages are not built, for example 'make NO_WALLET=1', the appropriate options will be passed to bitcoin's configure. In this case, --disable-wallet. Additional targets: -download: run 'make download' to fetch sources without building them +download: run 'make download' to fetch all sources without building them +download-osx: run 'make download-osx' to fetch all sources needed for osx builds +download-win: run 'make download-win' to fetch all sources needed for win builds +download-linux: run 'make download-linux' to fetch all sources needed for linux builds From d546191dc28fac0e365c8f2aba47ac69a8920d6c Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Thu, 11 Dec 2014 15:40:41 -0500 Subject: [PATCH 35/47] depends: Move source stamps to source dir and misc cleanups Since the last commit will force rebuilds of all depends, take the opportunity to clean up a few other things that would trigger rebuilds as well. - Move source stamps to the sources dir so that SOURCES_PATH is respected for "make download". - Only print "fetching..." when actually downloading a file. - Avoid using non-deterministic paths for the recipe hash (patch location). This should ensure that all builders get the same resulting build-ids. - Use a per-package source paths. This will allow for removing old source files in the future. - Use a host-agnostic path for downloads which gets cleaned up properly. --- depends/Makefile | 1 + depends/funcs.mk | 24 +++++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/depends/Makefile b/depends/Makefile index f803268c1..e2ef7ee49 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -31,6 +31,7 @@ endif base_build_dir=$(BASEDIR)/work/build base_staging_dir=$(BASEDIR)/work/staging +base_download_dir=$(BASEDIR)/work/download canonical_host:=$(shell ./config.sub $(HOST)) build:=$(shell ./config.sub $(BUILD)) diff --git a/depends/funcs.mk b/depends/funcs.mk index c1fc0a0e3..79015c047 100644 --- a/depends/funcs.mk +++ b/depends/funcs.mk @@ -20,18 +20,19 @@ $(sort $(foreach dep,$(2),$(2) $(call int_get_all_dependencies,$(1),$($(dep)_dep endef define fetch_file -(test -f $(SOURCES_PATH)/$(4) || \ - ( mkdir -p $$($(1)_extract_dir) && \ - ( $(build_DOWNLOAD) "$$($(1)_extract_dir)/$(4).temp" "$(2)/$(3)" || \ - $(build_DOWNLOAD) "$$($(1)_extract_dir)/$(4).temp" "$(FALLBACK_DOWNLOAD_PATH)/$(3)" ) && \ - echo "$(5) $$($(1)_extract_dir)/$(4).temp" > $$($(1)_extract_dir)/.$(4).hash && \ - $(build_SHA256SUM) -c $$($(1)_extract_dir)/.$(4).hash && \ - mv $$($(1)_extract_dir)/$(4).temp $(SOURCES_PATH)/$(4) )) +(test -f $$($(1)_source_dir)/$(4) || \ + ( mkdir -p $$($(1)_download_dir) && echo Fetching $(1)... && \ + ( $(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(2)/$(3)" || \ + $(build_DOWNLOAD) "$$($(1)_download_dir)/$(4).temp" "$(FALLBACK_DOWNLOAD_PATH)/$(3)" ) && \ + echo "$(5) $$($(1)_download_dir)/$(4).temp" > $$($(1)_download_dir)/.$(4).hash && \ + $(build_SHA256SUM) -c $$($(1)_download_dir)/.$(4).hash && \ + mv $$($(1)_download_dir)/$(4).temp $$($(1)_source_dir)/$(4) && \ + rm -rf $$($(1)_download_dir) )) endef define int_get_build_recipe_hash $(eval $(1)_all_file_checksums:=$(shell $(build_SHA256SUM) $(meta_depends) packages/$(1).mk $(addprefix $(PATCHES_PATH)/$(1)/,$($(1)_patches)))) -$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | $(build_SHA256SUM))) +$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | cut -d" " -f1 | $(build_SHA256SUM))) endef define int_get_build_id @@ -45,17 +46,19 @@ final_build_id_long+=$($(package)_build_id_long) #compute package-specific paths $(1)_build_subdir?=. $(1)_download_file?=$($(1)_file_name) -$(1)_source:=$(SOURCES_PATH)/$($(1)_file_name) +$(1)_source_dir:=$(SOURCES_PATH) +$(1)_source:=$$($(1)_source_dir)/$($(1)_file_name) $(1)_staging_dir=$(base_staging_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id) $(1)_staging_prefix_dir:=$$($(1)_staging_dir)$($($(1)_type)_prefix) $(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id) +$(1)_download_dir:=$(base_download_dir)/$(1)-$($(1)_version) $(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir) $(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id) $(1)_prefixbin:=$($($(1)_type)_prefix)/bin/ $(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz #stamps -$(1)_fetched=$$($(1)_extract_dir)/.stamp_fetched +$(1)_fetched=$$($(1)_source_dir)/download-stamps/.stamp_fetched-$(1)-$($(1)_file_name) $(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted $(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed $(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned @@ -150,7 +153,6 @@ endef define int_add_cmds $($(1)_fetched): - $(AT)echo Fetching $(1)... $(AT)mkdir -p $$(@D) $(SOURCES_PATH) $(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1)) $(AT)touch $$@ From d7db4b6317fd9c79bd6fd7c7455d7186b306411f Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Thu, 11 Dec 2014 17:37:54 -0500 Subject: [PATCH 36/47] depends: fix packages with hard-coded SOURCES_PATH Also fixes a nasty bug that removes the downloaded comparisontool jar file. --- depends/packages/native_cctools.mk | 8 ++++---- depends/packages/native_comparisontool.mk | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/depends/packages/native_cctools.mk b/depends/packages/native_cctools.mk index ad989cb54..1675afe78 100644 --- a/depends/packages/native_cctools.mk +++ b/depends/packages/native_cctools.mk @@ -39,11 +39,11 @@ $(package)_ldflags+=-m32 -Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib $(package)_ldflags+=-L$$(native_cctools_extract_dir)/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib endef define $(package)_extract_cmds - tar --strip-components=1 -xf $(SOURCES_PATH)/$($(package)_toolchain4_file_name) && \ + tar --strip-components=1 -xf $($(package)_source_dir)/$($(package)_toolchain4_file_name) && \ ln -sf $($(package)_source) cctools2odcctools/$($(package)_file_name) && \ - ln -sf $(SOURCES_PATH)/$($(package)_ld64_file_name) cctools2odcctools/$($(package)_ld64_file_name) && \ - ln -sf $(SOURCES_PATH)/$($(package)_dyld_file_name) cctools2odcctools/$($(package)_dyld_file_name) && \ - tar xf $(SOURCES_PATH)/$($(package)_clang_file_name) && \ + ln -sf $($(package)_source_dir)/$($(package)_ld64_file_name) cctools2odcctools/$($(package)_ld64_file_name) && \ + ln -sf $($(package)_source_dir)/$($(package)_dyld_file_name) cctools2odcctools/$($(package)_dyld_file_name) && \ + tar xf $($(package)_source_dir)/$($(package)_clang_file_name) && \ mkdir -p $(SDK_PATH) sdks &&\ cd sdks; ln -sf $(OSX_SDK) MacOSX$(OSX_SDK_VERSION).sdk endef diff --git a/depends/packages/native_comparisontool.mk b/depends/packages/native_comparisontool.mk index 3d430d430..d1b86dc2d 100644 --- a/depends/packages/native_comparisontool.mk +++ b/depends/packages/native_comparisontool.mk @@ -17,5 +17,5 @@ endef define $(package)_stage_cmds mkdir -p $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname) && \ - mv $(SOURCES_PATH)/$($(package)_file_name) $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname)/$($(package)_install_filename) + cp $($(package)_source) $($(package)_staging_prefix_dir)/share/$($(package)_install_dirname)/$($(package)_install_filename) endef From e27d7cb24835c6ce16c12eb758c2d75806103c4a Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Thu, 11 Dec 2014 18:53:24 -0500 Subject: [PATCH 37/47] docs: release process fixups Add instructions for manually fetching sources, as well as some misc. fixes. --- doc/release-process.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/release-process.md b/doc/release-process.md index a16d4ace4..30f979775 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -40,7 +40,7 @@ Release Process ###fetch and build inputs: (first time, or when dependency versions change) - mkdir -p inputs; cd inputs/ + mkdir -p inputs Register and download the Apple SDK: (see OSX Readme for details) @@ -50,7 +50,15 @@ Release Process tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.7.sdk.tar.gz MacOSX10.7.sdk - Build Bitcoin Core for Linux, Windows, and OS X: +###Optional: Seed the Gitian sources cache + + By default, gitian will fetch source files as needed. For offline builds, they can be fetched ahead of time: + + make -C ../bitcoin/depends download SOURCES_PATH=`pwd`/cache/common + + Only missing files will be fetched, so this is safe to re-run for each build. + +###Build Bitcoin Core for Linux, Windows, and OS X: ./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml ./bin/gsign --signer $SIGNER --release ${VERSION}-linux --destination ../gitian.sigs/ ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml @@ -63,7 +71,6 @@ Release Process mv build/out/bitcoin-*-unsigned.tar.gz inputs mv build/out/bitcoin-*.tar.gz build/out/bitcoin-*.dmg ../ popd -bitcoin-0.9.99-osx-unsigned.tar.gz Build output expected: 1. source tarball (bitcoin-${VERSION}.tar.gz) @@ -84,11 +91,12 @@ Commit your signature to gitian.sigs: git push # Assuming you can push to the gitian.sigs tree popd -Wait for OSX detached signature: + Wait for OSX detached signature: Once the OSX build has 3 matching signatures, Gavin will sign it with the apple App-Store key. He will then upload a detached signature to be combined with the unsigned app to create a signed binary. -Create the signed OSX binary: + Create the signed OSX binary: + pushd ./gitian-builder # Fetch the signature as instructed by Gavin cp signature.tar.gz inputs/ From f676c80f437e15ab0ee190e93baea733a88db0f2 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Mon, 8 Dec 2014 13:44:49 +0100 Subject: [PATCH 38/47] Add /rest/headers --- qa/rpc-tests/rest.py | 49 +++++++++++++++++++++++---------- src/rest.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 14 deletions(-) diff --git a/qa/rpc-tests/rest.py b/qa/rpc-tests/rest.py index cb1868de3..704d88973 100755 --- a/qa/rpc-tests/rest.py +++ b/qa/rpc-tests/rest.py @@ -23,41 +23,64 @@ except ImportError: def http_get_call(host, port, path, response_object = 0): conn = httplib.HTTPConnection(host, port) conn.request('GET', path) - + if response_object: return conn.getresponse() - + return conn.getresponse().read() class RESTTest (BitcoinTestFramework): FORMAT_SEPARATOR = "." - + def run_test(self): url = urlparse.urlparse(self.nodes[0].url) bb_hash = self.nodes[0].getbestblockhash() - + # check binary format response = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"bin", True) assert_equal(response.status, 200) - assert_greater_than(int(response.getheader('content-length')), 10) - + assert_greater_than(int(response.getheader('content-length')), 80) + response_str = response.read() + + # compare with block header + response_header = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"bin", True) + assert_equal(response_header.status, 200) + assert_equal(int(response_header.getheader('content-length')), 80) + response_header_str = response_header.read() + assert_equal(response_str[0:80], response_header_str) + + # check block hex format + response_hex = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True) + assert_equal(response_hex.status, 200) + assert_greater_than(int(response_hex.getheader('content-length')), 160) + response_hex_str = response_hex.read() + assert_equal(response_str.encode("hex")[0:160], response_hex_str[0:160]) + + # compare with hex block header + response_header_hex = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True) + assert_equal(response_header_hex.status, 200) + assert_greater_than(int(response_header_hex.getheader('content-length')), 160) + response_header_hex_str = response_header_hex.read() + assert_equal(response_hex_str[0:160], response_header_hex_str[0:160]) + assert_equal(response_header_str.encode("hex")[0:160], response_header_hex_str[0:160]) + # check json format json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json') json_obj = json.loads(json_string) assert_equal(json_obj['hash'], bb_hash) - + # do tx test tx_hash = json_obj['tx'][0]['txid']; json_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"json") json_obj = json.loads(json_string) assert_equal(json_obj['txid'], tx_hash) - + # check hex format response hex_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"hex", True) assert_equal(response.status, 200) assert_greater_than(int(response.getheader('content-length')), 10) - + # check block tx details # let's make 3 tx and mine them on node 1 txs = [] @@ -65,25 +88,23 @@ class RESTTest (BitcoinTestFramework): txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)) txs.append(self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)) self.sync_all() - + # now mine the transactions newblockhash = self.nodes[1].setgenerate(True, 1) self.sync_all() - + #check if the 3 tx show up in the new block json_string = http_get_call(url.hostname, url.port, '/rest/block/'+newblockhash[0]+self.FORMAT_SEPARATOR+'json') json_obj = json.loads(json_string) for tx in json_obj['tx']: if not 'coinbase' in tx['vin'][0]: #exclude coinbase assert_equal(tx['txid'] in txs, True) - + #check the same but without tx details json_string = http_get_call(url.hostname, url.port, '/rest/block/notxdetails/'+newblockhash[0]+self.FORMAT_SEPARATOR+'json') json_obj = json.loads(json_string) for tx in txs: assert_equal(tx in json_obj['tx'], True) - - if __name__ == '__main__': RESTTest ().main () diff --git a/src/rest.cpp b/src/rest.cpp index 6329b44c5..c52dbb3cd 100644 --- a/src/rest.cpp +++ b/src/rest.cpp @@ -89,6 +89,69 @@ static bool ParseHashStr(const string& strReq, uint256& v) return true; } +static bool rest_headers(AcceptedConnection* conn, + string& strReq, + map& mapHeaders, + bool fRun) +{ + vector params; + enum RetFormat rf = ParseDataFormat(params, strReq); + vector path; + boost::split(path, params[0], boost::is_any_of("/")); + + if (path.size() != 2) + throw RESTERR(HTTP_BAD_REQUEST, "No header count specified. Use /rest/headers//.."); + + long count = strtol(path[0].c_str(), NULL, 10); + if (count < 1 || count > 2000) + throw RESTERR(HTTP_BAD_REQUEST, "Header count out of range: " + path[0]); + + string hashStr = path[1]; + uint256 hash; + if (!ParseHashStr(hashStr, hash)) + throw RESTERR(HTTP_BAD_REQUEST, "Invalid hash: " + hashStr); + + std::vector headers; + headers.reserve(count); + { + LOCK(cs_main); + BlockMap::const_iterator it = mapBlockIndex.find(hash); + const CBlockIndex *pindex = (it != mapBlockIndex.end()) ? it->second : NULL; + while (pindex != NULL && chainActive.Contains(pindex)) { + headers.push_back(pindex->GetBlockHeader()); + if (headers.size() == (unsigned long)count) + break; + pindex = chainActive.Next(pindex); + } + } + + CDataStream ssHeader(SER_NETWORK, PROTOCOL_VERSION); + BOOST_FOREACH(const CBlockHeader &header, headers) { + ssHeader << header; + } + + switch (rf) { + case RF_BINARY: { + string binaryHeader = ssHeader.str(); + conn->stream() << HTTPReplyHeader(HTTP_OK, fRun, binaryHeader.size(), "application/octet-stream") << binaryHeader << std::flush; + return true; + } + + case RF_HEX: { + string strHex = HexStr(ssHeader.begin(), ssHeader.end()) + "\n"; + conn->stream() << HTTPReply(HTTP_OK, strHex, fRun, false, "text/plain") << std::flush; + return true; + } + + default: { + throw RESTERR(HTTP_NOT_FOUND, "output format not found (available: .bin, .hex)"); + } + } + + // not reached + return true; // continue to process further HTTP reqs on this cxn +} + static bool rest_block(AcceptedConnection* conn, string& strReq, map& mapHeaders, @@ -224,6 +287,7 @@ static const struct { {"/rest/tx/", rest_tx}, {"/rest/block/notxdetails/", rest_block_notxdetails}, {"/rest/block/", rest_block_extended}, + {"/rest/headers/", rest_headers}, }; bool HTTPReq_REST(AcceptedConnection* conn, From 164a45f57a8a7367e67a5e65b9e938844730cd87 Mon Sep 17 00:00:00 2001 From: BtcDrak Date: Sat, 13 Dec 2014 09:03:33 +0000 Subject: [PATCH 39/47] Fix download link for gitian builds --- depends/packages/native_cdrkit.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/native_cdrkit.mk b/depends/packages/native_cdrkit.mk index 2cc388b4b..cf694edb3 100644 --- a/depends/packages/native_cdrkit.mk +++ b/depends/packages/native_cdrkit.mk @@ -1,6 +1,6 @@ package=native_cdrkit $(package)_version=1.1.11 -$(package)_download_path=http://distro.ibiblio.org/fatdog/source/c +$(package)_download_path=http://distro.ibiblio.org/fatdog/source/600/c $(package)_file_name=cdrkit-$($(package)_version).tar.bz2 $(package)_sha256_hash=b50d64c214a65b1a79afe3a964c691931a4233e2ba605d793eb85d0ac3652564 $(package)_patches=cdrkit-deterministic.patch From 87e8e1ca8bbcfc37d52c701ea2b0a991fce0d2a7 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Tue, 16 Dec 2014 00:55:21 -0300 Subject: [PATCH 40/47] minor fix on script test data docs --- src/test/data/script_invalid.json | 2 +- src/test/data/script_valid.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/data/script_invalid.json b/src/test/data/script_invalid.json index 86d39b5c2..44e0dca8b 100644 --- a/src/test/data/script_invalid.json +++ b/src/test/data/script_invalid.json @@ -1,5 +1,5 @@ [ -["Format is: [scriptPubKey, scriptSig, flags, ... comments]"], +["Format is: [scriptSig, scriptPubKey, flags, ... comments]"], ["It is evaluated as if there was a crediting coinbase transaction with two 0"], ["pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey,"], ["followed by a spending transaction which spends this output as only input (and"], diff --git a/src/test/data/script_valid.json b/src/test/data/script_valid.json index d3075de64..a1b7b119e 100644 --- a/src/test/data/script_valid.json +++ b/src/test/data/script_valid.json @@ -1,5 +1,5 @@ [ -["Format is: [scriptPubKey, scriptSig, flags, ... comments]"], +["Format is: [scriptSig, scriptPubKey, flags, ... comments]"], ["It is evaluated as if there was a crediting coinbase transaction with two 0"], ["pushes as scriptSig, and one output of 0 satoshi and given scriptPubKey,"], ["followed by a spending transaction which spends this output as only input (and"], From 1340f00200016c5891f894493d3c0b66e5105bfe Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Tue, 9 Dec 2014 17:31:23 +0100 Subject: [PATCH 41/47] [RPC-TESTS] ability to run single test manually adds possibility to run ./qa/pull-tester/rpc-tests.sh --- qa/pull-tester/rpc-tests.sh | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh index d6ee00bb7..15cac1459 100755 --- a/qa/pull-tester/rpc-tests.sh +++ b/qa/pull-tester/rpc-tests.sh @@ -15,18 +15,28 @@ fi #Run the tests +testScripts=( + 'wallet.py' + 'listtransactions.py' + 'mempool_resurrect_test.py' + 'txn_doublespend.py' + 'txn_doublespend.py --mineblock' + 'getchaintips.py' + 'rest.py' + 'mempool_spendcoinbase.py' + 'mempool_coinbase_spends.py' + 'httpbasics.py' +# 'forknotify.py' +); if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then - ${BUILDDIR}/qa/rpc-tests/wallet.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/listtransactions.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/mempool_resurrect_test.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --mineblock --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/getchaintips.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/rest.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/mempool_spendcoinbase.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/httpbasics.py --srcdir "${BUILDDIR}/src" - ${BUILDDIR}/qa/rpc-tests/mempool_coinbase_spends.py --srcdir "${BUILDDIR}/src" - #${BUILDDIR}/qa/rpc-tests/forknotify.py --srcdir "${BUILDDIR}/src" + for (( i = 0; i < ${#testScripts[@]}; i++ )) + do + if [ -z "$1" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ] + then + echo -e "running testscript \033[1m${testScripts[$i]}...\033[0m" + ${BUILDDIR}/qa/rpc-tests/${testScripts[$i]} --srcdir "${BUILDDIR}/src" + fi + done else echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled" fi From 54f2571a00632e9813b9fabb447c7cc80f74ad29 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Thu, 6 Nov 2014 16:28:29 +0100 Subject: [PATCH 42/47] Qt: HiDPI (retina) support for splash screen - remove splash screen images (reduce binary size) - dynamicly draw splash screen with available icon. - remove testnet icon - dynamicly colorize testnet icon --- doc/assets-attribution.md | 3 +- src/Makefile.qt.include | 8 +-- src/qt/bitcoin.qrc | 3 - src/qt/networkstyle.cpp | 92 +++++++++++++++++++++++---- src/qt/networkstyle.h | 10 +-- src/qt/res/bitcoin-qt-res.rc | 1 - src/qt/res/icons/bitcoin.png | Bin 32547 -> 350390 bytes src/qt/res/icons/bitcoin_testnet.ico | Bin 45855 -> 0 bytes src/qt/res/icons/bitcoin_testnet.png | Bin 28227 -> 0 bytes src/qt/res/images/splash.png | Bin 43398 -> 0 bytes src/qt/res/images/splash_testnet.png | Bin 34142 -> 0 bytes src/qt/splashscreen.cpp | 41 ++++++++++-- 12 files changed, 122 insertions(+), 36 deletions(-) delete mode 100755 src/qt/res/icons/bitcoin_testnet.ico delete mode 100644 src/qt/res/icons/bitcoin_testnet.png delete mode 100644 src/qt/res/images/splash.png delete mode 100644 src/qt/res/images/splash_testnet.png diff --git a/doc/assets-attribution.md b/doc/assets-attribution.md index 082bd4149..6c5f91a83 100644 --- a/doc/assets-attribution.md +++ b/doc/assets-attribution.md @@ -49,8 +49,7 @@ Jonas Schnelli src/qt/res/icons/tx_output.png, src/qt/res/icons/bitcoin.icns, src/qt/res/src/bitcoin.svg, src/qt/res/src/bitcoin.ico, src/qt/res/src/bitcoin.png, src/qt/res/src/bitcoin_testnet.png, - docs/bitcoin_logo_doxygen.png, src/qt/res/images/splash.png, - src/qt/res/images/splash_testnet.png, src/qt/res/src/tx*.svg, + docs/bitcoin_logo_doxygen.png, src/qt/res/src/tx*.svg, src/qt/res/src/connect*.svg, src/qt/res/src/clock*.svg, src/qt/res/src/mine.svg, src/qt/res/src/qt.svg, src/qt/res/src/verify.svg, diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 4c455483a..25d76c146 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -216,8 +216,6 @@ RES_ICONS = \ qt/res/icons/about_qt.png \ qt/res/icons/bitcoin.ico \ qt/res/icons/bitcoin.png \ - qt/res/icons/bitcoin_testnet.ico \ - qt/res/icons/bitcoin_testnet.png \ qt/res/icons/clock1.png \ qt/res/icons/clock2.png \ qt/res/icons/clock3.png \ @@ -315,9 +313,7 @@ BITCOIN_QT_CPP += \ endif RES_IMAGES = \ - qt/res/images/about.png \ - qt/res/images/splash.png \ - qt/res/images/splash_testnet.png + qt/res/images/about.png RES_MOVIES = $(wildcard qt/res/movies/spinner-*.png) @@ -371,7 +367,7 @@ qt_bitcoin_qt_LIBTOOLFLAGS = --tag CXX #locale/foo.ts -> locale/foo.qm QT_QM=$(QT_TS:.ts=.qm) -.SECONDARY: $(QT_QM) +SECONDARY: $(QT_QM) qt/bitcoinstrings.cpp: $(libbitcoin_server_a_SOURCES) $(libbitcoin_wallet_a_SOURCES) @test -n $(XGETTEXT) || echo "xgettext is required for updating translations" diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index cd71b4b3f..b54f2e2ed 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -25,7 +25,6 @@ res/icons/editpaste.png res/icons/editcopy.png res/icons/add.png - res/icons/bitcoin_testnet.png res/icons/edit.png res/icons/history.png res/icons/overview.png @@ -52,8 +51,6 @@ res/images/about.png - res/images/splash.png - res/images/splash_testnet.png res/movies/spinner-000.png diff --git a/src/qt/networkstyle.cpp b/src/qt/networkstyle.cpp index 62c44703f..b8112799d 100644 --- a/src/qt/networkstyle.cpp +++ b/src/qt/networkstyle.cpp @@ -11,22 +11,22 @@ static const struct { const char *networkId; const char *appName; - const char *appIcon; + const int iconColorHueShift; + const int iconColorSaturationReduction; const char *titleAddText; - const char *splashImage; } network_styles[] = { - {"main", QAPP_APP_NAME_DEFAULT, ":/icons/bitcoin", "", ":/images/splash"}, - {"test", QAPP_APP_NAME_TESTNET, ":/icons/bitcoin_testnet", QT_TRANSLATE_NOOP("SplashScreen", "[testnet]"), ":/images/splash_testnet"}, - {"regtest", QAPP_APP_NAME_TESTNET, ":/icons/bitcoin_testnet", "[regtest]", ":/images/splash_testnet"} + {"main", QAPP_APP_NAME_DEFAULT, 0, 0, ""}, + {"test", QAPP_APP_NAME_TESTNET, 70, 30, QT_TRANSLATE_NOOP("SplashScreen", "[testnet]")}, + {"regtest", QAPP_APP_NAME_TESTNET, 70, 30, "[regtest]"} }; static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles); // titleAddText needs to be const char* for tr() -NetworkStyle::NetworkStyle(const QString &appName, const QString &appIcon, const char *titleAddText, const QString &splashImage): +NetworkStyle::NetworkStyle(const QString &appName, const int iconColorHueShift, const int iconColorSaturationReduction, const char *titleAddText): appName(appName), - appIcon(appIcon), - titleAddText(qApp->translate("SplashScreen", titleAddText)), - splashImage(splashImage) + iconColorHueShift(iconColorHueShift), + iconColorSaturationReduction(iconColorSaturationReduction), + titleAddText(qApp->translate("SplashScreen", titleAddText)) { } @@ -38,10 +38,78 @@ const NetworkStyle *NetworkStyle::instantiate(const QString &networkId) { return new NetworkStyle( network_styles[x].appName, - network_styles[x].appIcon, - network_styles[x].titleAddText, - network_styles[x].splashImage); + network_styles[x].iconColorHueShift, + network_styles[x].iconColorSaturationReduction, + network_styles[x].titleAddText); } } return 0; } + +QIcon NetworkStyle::getAppIcon() const +{ + return getAppIcon(QSize(256,256)); +} + +QIcon NetworkStyle::getAppIcon(const QSize size) const +{ + // load pixmap + QPixmap pixmap(":/icons/bitcoin"); + + if(pixmap.size().width() != size.width() && pixmap.size().height() != size.height()) + { + QPixmap scaledPixmap = pixmap.scaled(size, Qt::KeepAspectRatio); + if(!scaledPixmap.isNull()) + { + pixmap = scaledPixmap; + } + } + + if(iconColorHueShift != 0 && iconColorSaturationReduction != 0) + { + // copy the pixmap because on linux the original pixmap will be affected + pixmap = pixmap.copy(); + + // generate QImage from QPixmap + QImage img = pixmap.toImage(); + + int h,s,l,a; + + // traverse though lines + for(int y=0;y( img.scanLine( y ) ); + + // loop through pixels + for(int x=0;xiconColorSaturationReduction) + { + s -= iconColorSaturationReduction; + } + col.setHsl(h,s,l,a); + + // set the pixel + scL[x] = col.rgba(); + } + } + + //convert back to QPixmap + pixmap.convertFromImage(img); + } + + QIcon icon(pixmap); + return icon; +} diff --git a/src/qt/networkstyle.h b/src/qt/networkstyle.h index e49b86c95..2bfb3c1d5 100644 --- a/src/qt/networkstyle.h +++ b/src/qt/networkstyle.h @@ -17,17 +17,17 @@ public: static const NetworkStyle *instantiate(const QString &networkId); const QString &getAppName() const { return appName; } - const QIcon &getAppIcon() const { return appIcon; } const QString &getTitleAddText() const { return titleAddText; } - const QPixmap &getSplashImage() const { return splashImage; } + QIcon getAppIcon() const; + QIcon getAppIcon(const QSize size) const; private: - NetworkStyle(const QString &appName, const QString &appIcon, const char *titleAddText, const QString &splashImage); + NetworkStyle(const QString &appName, const int iconColorHueShift, const int iconColorSaturationReduction, const char *titleAddText); QString appName; - QIcon appIcon; + int iconColorHueShift; + int iconColorSaturationReduction; QString titleAddText; - QPixmap splashImage; }; #endif // BITCOIN_QT_NETWORKSTYLE_H diff --git a/src/qt/res/bitcoin-qt-res.rc b/src/qt/res/bitcoin-qt-res.rc index 809235be5..a72dfc02f 100644 --- a/src/qt/res/bitcoin-qt-res.rc +++ b/src/qt/res/bitcoin-qt-res.rc @@ -1,5 +1,4 @@ IDI_ICON1 ICON DISCARDABLE "icons/bitcoin.ico" -IDI_ICON2 ICON DISCARDABLE "icons/bitcoin_testnet.ico" #include // needed for VERSIONINFO #include "../../clientversion.h" // holds the needed client version information diff --git a/src/qt/res/icons/bitcoin.png b/src/qt/res/icons/bitcoin.png index ce5fbb0c2c57d22cda52df58d4bff21b94bfe79f..705a20260af0ebd2f2fbe3f3dfaf99f32db4be3b 100644 GIT binary patch literal 350390 zcmeFacT`hb*Dt&YT~L}*#n3I3(2*K?k*X*~L_oS!={*6Ys30In5fKy=3kZTp6M}*Y zQl&}_O*(`gAngX!Bj>#5xxVlC?!DhXW(-CaYtK2?UccG*-fV6d8E73mzgND}j5s6%s3?eEFiycp;up22wz)R|F!S&Jkm#J_TLypw`p#-JZ+;}BBl@XcKZG_wk@!o z4$iXw9QgVyd58u0`snC0Dj=Q&$T*?J2U4yEtS^M069Uz}2XYFOc|^$SUXsAg--v60 z;5Foc-)*x*I%R7Bo}nt#0&txM0cyvXT1mO|NOMFx5u?wnJfkYKNr1ZMyRB)uof3yD z?sl;IuP%>{bC17weWhx{a+2PGdXndUS|%@(_B5$p8!Z5^Z-04*KMhTso|+t+a+r2S zt$%ogcUkt}QQ}@f;@`%B$N+kScGQ5?w{N|qo}WmHeGx9tEPw$MzzMl+DKSW$bMZh& z(Dtps(^%zW4;~sdDsUb>Ktr?0f8}9~=)^50g2b4|=&i6#;!*ry&@yoCo^nQEU2Y`q znvJ{P%X7DfB9t#~Ei~ z;w#`(9Cfn)L7*Vou+HEOWm&UpUDy%{=++^#PCr07Y)v?hohAvOca#(lL<2xFVmm=u zkOXK=%bNgzw==Alo~E$qeWU^a^_=ii#VVAv?+zE#9lHOH^KBgq$c92)nU=3kfnJqj z5`Of+L)KIkw)1szU&+dfN!fE4?v2sEekXSN;PfctrSN%A77ASsgGQ~u)jX02!Hb^|BLR7uMZG< z^R_Mgi`XHDxPF^UaWNX!H_X@tJ~7*VGm|n&kh0}8lkq#kQTMV<;RaB7m@B*&1r1C_% zM8i9nruxb9!*U;D$MvWm@tw;{VLT&c5B)~=I9psbBj@?q)@Kj8sh-EmWna{B%keXU z7{@$glJvdD-*6A`sIXgWYx$aMUF#2HR zC+#aI*j(6x+45P-*&rEuPsqE{G8)f|_K9<3IHuF3dt5L(wRtM!NYZDHZftK3>E zT*Qv;!IJ1G&75fM-1D~OAKBu$nLmo#ub8R!dYO>U3%R80U$H3JUeNO+$8h*Tg7u8m zyq`N1I3zh_O=(248{WERcZ3o+eg-L~>!moO-7CID$70L_*4b%=?S@c?D zUYs95`Fdt4X9;C($hpa(eW|OYtIk$MRSo*K&nb1;&Iis?Z+zZ3G&}r7Yr}0lcY|dP z)r&TJdj|r`#_(xyLI6mSP+yqyku! z911*+UMY|qu^)0#u({$aKA6{#_hGX3WNV7cJ%_3vvx$pA8 zrndj>AT~bgvBv!mXKqQ~`jk458q!Rjs-KE3NHMZNp$jz+I94hR0>mF`V{1EyAqc4)l(PUY#h*DW!Mw^XaYnjN(&&+?nmN*T$ z?04DxGN$I3Vd;H=2fdd60^=ykWgz z8DW&z2N?OCW?aG+Vk~f#dBuR-n&chHHVxKBuVjxpmQ{{zTZth@p?hDBe5T4ea*<<4v_(MgSTDov=yob3eVE6SZN1r+H&n5s zTCTAbU}v@rmhI5PCr^n#7nwWz+Suos4_c_VVA34pSaW+N;aOaz{NU9$UVe@RS6$D! z+Ad^Pz$>0tga^cIX{@9%`Y`cPFW#7J_}ZX&W5OFW?Rrn*{^Y&$sXn$ZzYRUAWSN?6 zYkuIbU@m2z7;-u)oiVKh`Yn=6)d<3B_$}XEpOb0zdS;ZNM(v~cM`vG^SDaC}GnHj> zck}eHe5l%vQ?#L`??(x0!*haxNo;p2dDrw!)O$w?+WW8d3(Kb5Pr09a?x1t(Yr#Iz z@)PBT4uXQo2PXrk+&*(8$9zUl@@{*t4IXig()*J8`rJ#SL(F=Rr-A_%tQG+k+BMo2 zyCskg__=Lfnh55Qn#5wGisI6*6#?ceqdW+WYG&SB#w`9KVwUHs>;jyZJ42hDnoCk~ zM&oAZF05V+99q47F0%9SV>Q7DQ^~u}Qkt6GU#?%Qv^`>T*X{!9YFdwl3G5WhU8@4m zf~POHiZv^y#!U^ZdO|h=-3A6m&Xj*%oY$Vun|Cijn4;uFSje#w|Bb`S z?aYYJ!=S4hw_9Jger_d|vXNS}Xn9jGxcX2!cQYspX4!0lD|}I2+b=NCix~C~UON=Y zc|?8$m9p@*OfbOIrA8xk!@YAUVmN{Q3P%-UDr~qy%ir+BgM{G6!IYaCsQIft9x$Ok8dj=VeZ<+Hyh|N^HW`_mfnD>4TiC6N)R_lM%@i`F8ma zvJ9Y#-5EoHXgzF(i{)9%8b`JE2T&HDCB1Shbko|%bb{sbThDbK^p!#Wa@|73mx@|p zp13jXA`6dsdvx=nslrR2b^UqyFQ_iq&egge@4l@*5zFkr8q~)Hj&gT_;iDD&RU2D= zn~N;|2bT1PEQ1mPimX--k6hc?bSf^Ht zRu8WxZ+t=)7|d~yy=K*}EqN@zB%i7MbC?MsaNhgHG!i$C(QP-weqE;7zSWL+8Tf3? z3-#hzk=!TVPvEz0fr=|nu!U`dp{NQ}74lOJIO7CX8E>@qWykhYeup7iX*vXtg`lsm zVfZ_+HC&iTBVkD0!noUMnOh>e}c6?>5YH&0?23IGbw08blR7keMBEB21g?utC9 zY6K6Lvz;Q3sg%B`zNebKle2b^m%VY2!Fk&t7h7379;ng*g#bCC05^Ld8?FF1S9fo@ z07afXxpKtu?lgplYmdaoMUh8kcR?;QeIqV44=;NzDG@1QTTyW_E*V)7F)2w|F)<-7 zaZxb|h?pouTvk|2OiofpPE4BX$A?Gh0CA+?W#=GwPF?fIa>U;hd7ONFJmnw|e}8`w ze+dx}FGq-&tgI|VR2(8ME=;5l_6~ISu?Y}%_vZaByocy<^1>+@q@Zk~TFW=iH9K2~y{o;O zy}OS$kx%Sj`8nvcjlkx>*n^aOMClh_z@xa0qNhC{mJQl zKG4%1a?ak{!`I8!Uc-;L72bc_y^piQFXjAA((aM}c<%NA&i{dJ_sDm)JyZCuAqC=I z<d}LGM~-kh8ZL53lnc9>a_hH0{Z&<+5d}Zbq`zLU4Q!_ z+KwpNLCRiQLQ+avSVBz3PFT|Jw4Lx3DG6y|F?%rwQCV>*2L~IwpQ87%{}<7QUc`Fc z-Ntnv&FzHKM%M%??p9F8!vDBU7uCt z`RTNOg~7j~+%C_a@5|ZP?#4qU+dY>eqVTubU#ImK=MOgL|Ej?M9?IY4?_>YZYxq0a zyZ=WA|1M{beVZ@ufg$iMUaQ?>$RH*>f;|KCu7hr6G>myi8_ zUkOB2+Yqy^y_dI=gO`UJ*LTm~4YyoA9zTBDiv!z7a3I@!28+S@5Xe!An&iT|G3zT4>EFg#AQ)fFL zCnYgaaY+TpKWBd}y^lf9-rezEIDSn3lSS3p$J@x>%h<-v)7Ad(4)nXorgZvuj`x3) z;@<(?L+C&4={rbj9&Vmq_TJvR5tf)6_c->?{S%?R%un=aFK1gFccNbtnSE^b;0NI6L}! z{e8WEJN8e0v)wG^>bti~F-b{L;)mE05I;Y5y#M$=dCh;ryZ`te@^|AdJjo6b!TEd^4$jZTx*Z(pNIaH)%-uR?mP5@^}Chs zYjXBn?E5USg(7xukiXiuzkA6Xg|Rpxb~y* z+wmW`ehbllf$ec?C-?)`el&hN{sY%{jw4dM) zT>H`Z?f4H|zlCT&!5_Hxqw(AEAGm%C(SCwIaP3Fqx8px>{T8DA1b^V#kH&Au|68~Y z{Q84vdw1erLHiT`+&MzWi}?N~wHqY@M|zD=kIjyS=aa&ze`%_D@7o13!=L zk>~;YsEIQm_;W{91W;hU9PO@_$m+|7;uo`}6vr z$)fllZR7tTylVQAS~kb&zqDQ7)8O37>5mu#znwk(8PRE7#DB8wGWf11%@M8TEq(Rx zn*X6g6aHsl`?KMx+X4DQe>;$xbtyL<`G_g-QiB`Ep0pn}@*;h7B7F&c4xTy_;M_PU z9lodSA6OTEj#aw-6(3i{rK~oh#XfG}OJ zTe4_#3pB9>&*OfZz`PvD{@!1>S2|issXhR)YYM45B(evF2EXfBh+z!O{O%)nGT|{Z zU9`%&*0*;$x0Wxnch0{;2&X)Se4J*{JuIrSt4iXgzB_R9nXMT8-uW=*n60du+pt&7 zWSX-NWrbAbS`cSj+v!dnqFs|`IdveNYZqt%;JbdK`Hy2G8CPr=H_x(AdfsSnI!#Zo zNt*Z|u>D#)+x+SBcjSn)->oS%YME|_U1V88cZCy2MIIRoRFF;k$Tq@;+l60GJ&0a@ z5asSIrV;*unM{v%S4T|1chGsUw+yy|YrrhUg;CgGZnlHE!zG?}y;5q-0CTc>7pOKD z%x&|mghr44Z(O)r#7!loCaBR~S(Ylqv=6I7tOx7I6F@U^V7#1|9cRj-Gu zXoNpzBrCYIACkCrNGw37TFbH)s(V*VR8J+xYP>du?u*Txk2bw%2;VS_e%#Y`z;BT3 z#%d6J&m2Xk@?f%5Fob$-Uodk?jocvHX1Y)`tEhn+z>>>3Qarap$-m_LM&itS6;749 z64G5iA_Ml!-iG`RK8&}o{^n;o)zO&BLY3Pt-0$l|sR$<=$c0j<4mB@$ur|QBQEb=O z>2}az$gXzG+yM#!3L?z)2N-~Re(XeHHVfK>Vwdf-o6B?)Wj6TGbVS$|^b6=saox?jE8Ty89jezlnSyuy{gTaxd^;Dc zkJpo~Ew0x+G^s*&=sC8BmS#o9Sj>(UB$ruay_V?uJVjS7w}^3=nnt&^lpPxCa~=-0 zdJ&4TEL{wCIOM7FAJc$uott^qX=GMGzCZ=hYJlPkT zz2|CP51rX|6RhZF9s+3+9Zh6bbS_hzS3eVO8Op9mxiGwGC+g};87)UiX+Sw-f2 zAY6dqDRl}zz^3}7g8S_KTj#P#2ISgmpkz;0?E9+`i2YXPNQ#b zP`K&AdyiAO(3i}Tl~Ol4fy8v-REjHY3K{-{R=#)n*s^hth_}f*S>v~;=gMDKPkl34 zxxd-&Nmj>4@W7K&Gm&zd`nH`ptg%zONvryY}xZA8CZo)7!OE_fW%*8Qh0<83-&Dmy1hb6#VX zkDp>7m+VjQJbh}+P*QukTuH>Rz~%y1V_4i*@At?flt%RU%i}6|CA}(w-aYk1AF692 zxpr@ozl8hUTgYm6GJJ7&c<@YVXpBWaJ~C!77^T=f;9budvs5`AT@#E5o*2oP_Xl5v zFp^kNRa&*+W~WiOn%LPr`n{1rD@o}@s!FFDqsa#rYa6s8CTUk23JL9^LK3`z_sjvg8 z?Z_9#TQuQZwufVQ$Y6Je52+rtPKyZ6Vt}awu7Gu?rNks6_@VL*@~HGg$=Ih!=OWhF z_)DFmW8~B^@@$KlsJfaM$I@X8T{|*p(T&n$Yv+Rh$O;%b;%%LDJv@q$@R;$$Tr626 zcJTV1l71+w0Y;SvOZ34322;6YP+M5nGmKb?2iE?Y`|(*pE?x4YvxY#j z`c05XDI7OQO{SBoVyl!pX%ypWCI2CKO0IuNt+e0Ge<`zOR;zr(e}ZUb=m%h==jig0 z@&&gIm8Tf~)p{;GP1C8TYS{S{rgg?cdr56CckboGPAFL?RQoF73bx$T2c|MO@GA8A zN^Docu;+MN*?hbFwfVF8oYnX^H;yL;Rx&*bVI?G5(o6&QmES0Z`!IGIkiwI8gdo)I zo%cJ8kG<=g%mzwmfs+R72Xlq#eOQ?3?MM$dfSHsxgVFi#8p0{)rO&<3yK5h>#tFv^ zoLtIq=_(9%l#@Yv^^MJkg*1njUxE$dBcZj6bz>fur5oLV?ssX=2!VPP3LUGN;K)$9UEn`u1$V#c@^>EydH*I}3#D+imCd48|Gu>1 z4f#y%LB_m;2R}cdmt#uwWi(uuw^Ysc9X}glT5XjW4DYyxEavg(GGh)GJnrOEN;!lm z6YXeuE1KBi0~~6}_e8fG9SZ4txIOPtGr!zgz99Q{I(nEAO{j+`)h=f7N<_2f9z$&#RYX`3>B70pXUduCk_N%&fta0zprGCQC}N9!eY zHQg;)3tVHrI6I%uo^N1ScdhlhG`GD=QYUqu0qKbk?uVhrH#F3t^FZZH?adjB!^jTf zquS}BT&1LWq8)%Xdtw?rV9m?x>O*zMM6>Bqj3@GvJg)zN+U${Xlx)bNRC((Hew7aO z7MG0(#yljU3PZpwT7)9c9wuFIkp5LuHEZs?7%@&;r#rI{oV26T6v}xmr_bdbG8^|a zSq8ctE^i>`{OJkP?GXjvj~{0z?>`eb)>r4F29msyD9x?Q)F?NTyTb&p;+VKbf)=7by=;6iX!V9rO$%4HpG8{3BBCI0*78oF4pWLHDKvj2e*%9?n9y zAy++2M*`Pk5Iz&bQcYN{q77a^=y85s&K0;l`LD7pI*A*fduAs_e=@knWM{-wX|W&| zB1@R*@;_F&ndinKU}z!Jf7%&C zYs%OHOz^y>>m;VC9o*Uu)1@D?i1FAYAH;oTRhhV~swM zgM6|yr<)XR`xO87-)}ml1<^el5R0nEcLF3U5ubRj;*V9qpl9m4HyZK^=uK*Fv zhiBLifTrF9TLeZveV#L&w9B<7y>D&(l&ZgtUYeeg-+c3OyG6zWXLDJ)1JZ=jQidx* zjW_U@8(=3t08IOERCDXJO5387{{VYN9p?6)@WoVd;r=ayLBFxojpY2I%@1Q7k`o_OnNuqEdtlDvBbKYBL;9az&MfNA*?w+FF(Vb9GpF1kp_?N%*mg&8?c~U{ z0Fj#Q)L=&h1`n&)ghC06!<0dZ>vHO04?*ulKft3>smx6FCSvAf#8od>>#PsUh`obLbG%ZfP*&yYO+AMPY1R z0tM^r{p5Zr`@Vce-7BVa_YVcJ%jFm3V3|FuXzghkuYN*=&CvCP%km1(DJ2;(k88+o z3WdLECkfYqRWBv;TaaFEa%}@`8~5L zbMtoyDj(osat!N&04=Xz-Ck1s(L`v&X6I?*H_`JSq1rx(+f<{M2Z@;_@XJZ9La5EB zXeq>2EECwLlVSc?nIEG;wyT{MUxzte)^_x*rTj&ODyzKB(wW-IRSw!)f(K5kj zkl0K8?EHk}R=|F*VXw4di!kWs0&kz<`jG9LEbsBu+%{<7e0{l_(o*~>6J-|x$&iY%BcwDk| zeLOi+>cI}XZy-w*xaSq6`i~F&Qip0_0=OmLYDa|cnq`a!VXDV}5x-^XJ}l2CX8n+j z1eZ#cPQUM5R>0}&X$-;esGfDYnCuzFAjJ6Yj?nwPqLpt z%1f=QhNttxwAN`ltyt0a02|3DD4WUlGh?e~hv*w)Yx7EF@po0UdUk9AYixQWGJ_8} zmgG9NQJE;E^<>!gJ4@(xGOTLsK`fQ1>$RM=c_7lBvOBN_T(aN1MFoi7wqmv5M0ljW zVG9dJ(m>?CaXY$0{iolQvAAALQwRWc$mOco)>bApWBp`c2sCO3@HD*D!SAO^s9({PE|*9k6+Riobb$ z1I&6HdSVRx5uvL?c#$2}b~_*HGadEG&B_};B^6I;DBU@6r$CXqKZK`iXZmiSRVu_$ zqWWH{Ue1g+N9xVu14T(17Xv_3E+TQMG)A33g8;pB*I|wrNBMw_nwS~+zTv=`81UA@ zLFm?80!oRtzL|C=AEQj{r1!f|EX;7+iXT|_TD6K5Bt$&I0&qyc(96a4;P=jSviR6C zG*TgJ2v(BxAl)wOWaCBZJj;@V+w1=Dl0#hf&DJB1XL01B(!7M|4>dA@mCBthtz?-| zH>^b{B z>{Tb0MdC5yJXyuU_=F5@N}?^Ok?76A%R9sZVAjFU>rPpIbrRmM?-ex5F$u3w2D|Wj zdfv*(>~NT3T>K%IPkPFtv}&|YlDA;_&YcRUCFuG_WN1t;`wqS%>=Y(oXXIsu0-b8< z#H_`1Db`&gV?hFBzw-QxxGjj}0Ah4Ti6Dzk5$*zSmC=BMK3?Mh*SO2c23M&Z7cdV# zXtzjKvd!3OHS)xR-%E9(G8f9~ciZG1Ye!?J-FR)Kfmc_!dDSYV%rN?{)pi{k;a%Kw zMvw{y?FVjU9r-UCp2x&+E*4qzp^jpq_^O!8K4T{>z=&)5UikBOvO01$lei|Ifa2O(&X9k}KW40n5+~7SH^0e*nU;&UK)2^1alK_2{Dv%etBvmA zW#&57QnH{V!nalG;u~N83RA4y<5n`QFtMxKx=74k+SAGo?oNJF;Gz)lTt%L}dxXmQ zLLOA26DsF=)qc&27bR%7ur_~$B$1wq8^Z8>yFcf{sQM^dB7ZAsp@A2sCZ@{+hdF`{ znbm;p)Mu}AQ_xBX<`@LRsdq2=e7|f{pUy;38OBm_V|;If&0-$x7I}yYpoN`J?$N*|HwBqJNT2JzQ`yN% zbluUg31rd0nm+=o1+8G5a|F?zq7{lZ{M$xZnFwKxVU~~R?DGgx?QfB7jtbZ5*0Dk0pG2UxkF$UP&h0dN z5HXA2=)IJGZCD@u8b8KlRsBs6jOiOhy%ePriWcI4V<8Rd9s9i6M(+j;nuLF-iP`OR z!&b)R%kl4X4VBPCOft~WE}zXr3g0S+FxgquldbaA!-VduI|rY9F31bD=(SYeY;Cw6 zj+J_ca=umzW&n~eQJp9O39Q0oN)8KbqB1`e!O+n-tF0{ray7Rd7K|n_8z_LQh?DA3 z{km3aa(X49268t08bOKJDb312=ZC!86a(kg68aUc&GNlARJ|&5a~=OO5|%WMY|F(- zzIRd4jW2&?9-0>_S(MF=q8o`IzP9_b&Q6p@ZK^kS-3<~Zcs#Wg55SbgELBwP=7G^g zBAk&h!U&;eX^wai;GPxNwhZ^LENo`qfVlk%88NrL-EIMadQ3Bk$Spl$N-)FB=y$Cr zQnY%&Uy~-blKNbfUGeZW#tIL3h!&`Vpp$N^sbS$I?{o1<{mERN6rLx^3dy)sfR<7a zJJUAGQjF_EQz&L?6zWmsJ>_Dx^X>uo?L4Ze@*u?;4Qt*(ne1W zFJgRp_fi=$XnPxt7|jz-7^;1^-FVV9o6PwIiMjjC@pIV0Z7*@o-25X2Z?y|GvJdhK z1GH6ia|nguY^$w{f>dWfPP3a9cI1*I$qIr1hjNo$zD6s@l59#CPD_S!XJ;Ni^&H&Y za)8y(kz`+u8%>@_cr1YTrB+gwiHD|6WzV1yi?S^Dm)B!B3F*1ghKfGJ>V7K87dg1+ zD-Of5r;wLJ)DU;iIK@BZSlEe64i(D18C3}e@sKclEIW{Y#ApeR7<$V@a;L$cL0jND zYodTLhOTvt4)qmEh;PTCIjw>*NXy_CJPRQatvOKAcXIZij)@JGDB$_EyKH}5=GMeM z3=4vBu3BNHyNX~9q{qS#xewl4b6d?hc^`VHb36LQH^?L0tODR$l_d3f;kl@ihiF|y zDY<$TjIRb-6?kL=lAEe~3|Dko+vcd5553crISJFOf|SRwyc%++J$nH&Zx&MN&%Fj zWCFBewO1`WbVI8M+b-xXE9tmD80|D5ScvyH#!;Pk2&_fN!fLy_6e7EkUS??3rDv$y zS-Fuo)qs#l)4~i6JHezwIuVybngbrZ6Fp<>dLb5E?|=19kqkGUS&)SF&Iy^B7dI5KzX*3OC5sYeLKZxG;MI7S|1tS%DOyU>jZS{VOjL zkQsOhE_IVCW=l+5>yi z96d7UaEwBO*bRGfzJob-B~sZ^9yPumm^Cow^P*JcnbA(X&=wa+{csas76Q>515R%jlMVa7cG;N-i(W24#`)bP=7j1o}pLk$jgc7^yl1j~ub zbC5R&J8})I$zp_?KEQ{L=ZKLc>H&OADK@rK)`Ht@QvNMrV+7zgA*)o?&VD@lEzDV8pCjyF7tSzPvDSe83@y!eK2rv5nj3<_^B{Z7oz{ z++)(qnVD=tAY^@D?5tu=64=Stvg$ncK*{CJ^3jS)R(c1r!x115=tgL)F9&NRMt+$( z9nij~{?)bJq4k9aauC1jLYVtRKwG`6nC9wUBR|0e3c3LTdPV?;!%jc@ELN9QsFNUq zcohU$6^1VFgJQ4~m)E`X75p*LQ@H{ULwOtuDe{JQ!nD`U6YL97GOV;Ot~fkCHU62k z^7gX#r?7%^9Al>+=p--BSq1CtIqp$8?>G4M;-Jy|j*$jB+!k?WyXfAfE3!6trph)>GFC$bVo;@JLmSb z(HwJ0e<^^X3-mx)qYH!wOUT8L{|PsRtVsgOVFBGlb6DTlBuSy(fv_>@?|& z-z-nhg=sz6=12lZ=1-qFtu>+Y#AIo)xO)P8xDP|6B*qQA4F^v#gn;7aL9bAa<_aJZ zn+$jzUbwc}PP-wk=(=%x2#8%{ns{f=)reS%ZnnOIh3z1gc9tn?1L_S?#G6jt^rX)} zQ?3(xvAdM(jAXm@!jBuWLhRe%*KLTnNwgXOdVv}_qxMx)L2)-vyW|H#h4SgIJa%H zd(^Y@$(9E~`GE#$wn2-2MbQ>M`iO`%I-?94wFd^86UYO^L=%2r32jlpVPa;|A4T*(Ocj zuQJFuooIkO6kbsZgUArR&No$Cd5-BA*3MKMUmTL#ZqZ4HQgoVtW)+l!pXg${0<9+6 zS;{m`OnK@r28Ah}sihX+irbQWF|b9_BuU_!Yrg?gS$?NA9==+q&?|=?5zgUS;j;iu zZQ#U%;WTuwZ%((I;kfCIM*Q}5^zE*G_KVBHV>8g!QbK;b^iFNteQNEZvdRGG@8>5=ScQI)x2WRDa zfcY7|vL4#>84fR9Jp^~vs-zmVy0A!Ybc0TP^>pH0@cAIhf&<)KnfcGEm#T`^KEUu} zHCByLaN4;v(sl8JWKW4DwCLLsfQjU1A!fq0g3`dJi4P;vfW)^Ot80Er)31(0C(`wk z4e!10HJEwLp7_Qt9!9<*v+86Pe-vi^64Ubp)NpQ$!TvK$DE9V|3C&?&hHqbXmQVoy zNzxS*^Eim$evThkk^=BrlDstp2(&3%oCVU{){g|q>KZuFN3TO*OV$23oC|*LlguVJ znNYVVeNLD;{8!{EIJb)Q=tdxY2oIA8X-XS$xtF(7Bp^_Su1TgR#lEVD2BbCXNa1J%0l+~6Yxqu zSxHmyV4|w>+MDV_c2@X?J`c=bIbk@yTqpwQ(4{JNCEj!U-mvoG@4`4Vt6)Wa$@f5T z4DpG8^Aj8>7}ncB?&=~$e+=7{{)RoVO_*c_JWRg$)JtL_Zh~8nmD$U!R2w0HCt(wz z-na$L6(63*fBA>Xx(gu+AzZ+HNy^P~&rxeDr;h0blt0<0N;lsUB4_JesNVI8QQ1 zEaOedRADvRA3s}@UA;oUe(Q5bI4U#1F(h`yTlOTW2Y*JW;)q6qs6L)K_ahRA$sXDK zs--j&=LRuDYNHbRhwRF;kU~a|hq&C#8(<4fDM=3Xr{@I4B8tKw-dmI!SPh@7nyC{t zlgm9a2?BWfCxplm-?GSe_;Z0xpmrefB+Uzq>NV9mGUZM(y?e?{>I09aHu{zx5E?X! zFh%X>6Y;b=XiBr&C4hYY&*IKj8EXr(xa~v8W7#Hj=!(eU*y!ZP`pREE)DoB-qL_IN z$Vn(KMr`@>t(13^QiCY!6N^svh0~pBge9dyV!ilwUcLaCxz&14`3r>RbfTK`SC?d7 zwUCTky^q8D1S72H5}q9ntU&|>`y=er03%M2W(rs&5Y?kf&(92)06O z)@4H{6ros?Y@RyRGo%0ogyxrCqs90L_0rpd!G%bZFjd-scN2bYFxYxBMC zfkRo9WOAj-iy0y-hJ$6icp3|ox!qT5+910N8E5-t>`tjXtB0wJ(k~GftnZ(wYXD;T z!3}2l2DpR}GwhPYp%8QBp3}zLeqJl@GAP(5HSX{MU&)*fbCL?=kTRhcUHA#8BEm#l z!rR$oQ=|eJNsj5?jGu8Fj2X;1OR&kutjQ6k`bPYlN(~hqhP{v5;Q92X**h{8->lEK zfb16Cs}O|}spwYovF zpmxxK&m|Fk`;LC(#Vy?lUlnPEX$Wr*kKN+?*uXg zKUj@MbKxQ#C;-}azK)W=Vuxlr79u%^Y@RH7`Ou1gn~-0wxS2#J=QdbWn5_-&C|q-F zfM!wVJZeJ{uLGx^19gzef9$*4h3KHZnG(p!;n-j?LshwLrOZX{ozS;rJY5S1L3ewn{2GaI&8*n-C`whffbFtneT#I(+Me1R(5 zDCh0DNBji)3?Rt_j*ZOIJ=A!@T9{kem$pv8F21P}GqsXQ@LhbDpoofu;+KfeoGfyK zXs@tRS@#p4rTN|n3Esp)9J*nwv-qaHtG{Vj?6Y=R2jew1{i|+KZ9=M!?m2RV9!!JT z!|T1VRW{~2<|2)?UxBW)(9dL!nz5p&*)JeaeSmQ5!MIVPF%jp+WU_3HijYMSWT+;o!ef3ZwPe9S*0NKBfy+z`I`B>#Z69{ zJIUZHgNsc)>h|#4%WL^Gf($1NCCn7PQC!F-90_|e{43z3mlq@7DhS&u%}A)-_9!AG z>^@IGu_H)h_Eab5S4N9Fy=|r44HclEJ-R{(pUf=^`YM~IG@3r`W~r8-+u84%*f#Bp zFCF$F95J4Tj)XMxY(!s>N~ZAJlzR_u0%BjGN2hEii4Du-6?i*yBFdkP(_FspxxDzy ziKnFp-y4u!9;9l;pULF(M8m9YjqQ}^KU9`1AC0A=h(4wYU!~N(m&l)7ikV)1K?v&! zPk>HG64vUusQ`20og+VKxFz{dyHw-DU$~CAxlXJzag1STOexrRHMRUw*b*eG!fmy( z)pbc*d)gX1hZR2OX4d+G(TweRqCsvSB^whNeSJ{a;+$2Y6`-@=JBfH5p5MMIv!)t0;)!ie2Nkt+*m^$z5-KA)I~A(UljA==%N(TAMUH@n-X}Z+mkdjW=G} z3~t$cq-fLcZ}OFS%QoMLgSrJ!kw2m^1bf$BsOOL{`elU^M}qySt&0FH`XR7 zaQnZ6orot7&Z_%5#(Q?z*PZr^ufVwsDtx3D?CI3XV5sSQgrBN%7d6TCWN%^!av@C5 zqp@FH@Kg6Vi1z{Dcn)P;YIvjrX}U_zPxl5UVJVOB;q=R8=*v3|GzLTK99>`K$mL3@ zeH^NZ7osQ=eGA%PJ(lk`+RB{yqd#!R-n=hwaFJ2Ai0WxGbAZ{}qYIxR7Q7FO(bqMi zOW1??$UfhIf_5&3mGOQ)%T)rYEd+b?YrV=W>Fmj7!(TfPBX-sFXzn&Zt4~Fb2M*rL zeHnsnt8(Y35c~{(y5I0(!2g`?>Mj z1Z{a*E`m_LBmw{h+*}Vk$s3EJs&3E(YJ#5QIs{Ra)`SskTp$EiS3oMk`w#)DQtQ@1s=?UWR z=@{-`OM>ZRMlE_zlBN@Ed zMOnl$z?ti+l6F!YO}$YOhFA>+z~G0Eqw(t_>mCnq;b7di1b0PAntBg5r(YR}R~b(k zzlFA6GR5MPOcf>z@|CtKOx^C!D3EnkQZsC{Pm!2JHf29P{?*N8zWZC2xYR2V-!Ibw zp-1wCog!mgy;F?mo}UV{yPg@!rb!m*bOe~XpHX#^VATB$gF|WT2!2vVF%oaQ=jifl z-!2VKI7V{k5jFD3h=C8i$;u_A*QnNNaz3WvIN~F7e8#hS0~M<;pp~ea_5dUygmT;* zpjn}K$_NN?{Jg|sLp2Gb&qb8M zSfd2P6;MYpvnoQ#N zPy0-VHX&=~Ji=DTh_^!8!=56=iwh*-w?IHmGqL8Bp?WR&@%t6V`saLj`|F68Kyl(l z*a{MYU9vs4Su9bGo2qiaxX!#@?G1|wm-7ak2lenKOc}?FRoySPpW%_uyNYA8Qih*! znJQZys=F<5;jBwSl80uJYQn1n!RIF}v`}Tah(YleH4taqr&io}Kk)F0%C^$skFa6H zw^__m{4h!*#fy^R)tkt}Y;>z^WZE^enS-)SWXy{r+Khm!Uo)tfBwf$WTQYFC++AV) zoh}T8Ay7oxlbY%L6>=F92}!X#i1lZVM>nGLvvC}QGIhquZ9^Ber_EdtCTUw1g@{*u zpPPq!J))!9(iKWtI$LQD+^o{DxiPZv{dSQG9wW8G@p=RryMx-j7!>cr5k8x{fdLleyQz+=|zEvA0cb|>me)3dC<#gEFqi`O3oB{`r zfTTLX+AJ=!(f7a%-nug{F#RoVPJR#^)&{oR-rl`a74x`>qWG^!p^0~SD;<|Y2s?)x zMxnyqMI9%6wl&yU)KBi`70t>ze3rl=$T9OG zuKJp?@M0aXxcHee{~H<|ubgtznn_fk%I7J94m*%rZ*U&DdyGDEGSZzf@(Ox;gZZ4> zsSNcd)XT5_Mj0eW(1_So;y>bRTsTmFXGn{OBWLy^#jzR5+LdR70bFf4K0A9jptxsF zna~gTHUNMi_0MZ|4T$xPs3+L8GW7hn1r$DbOF`M-+waWPGZfb9Sr=!Cc%4Txc<%Nk;T^4tVHo_nn!%&U^xld&k=5?mXV! zyQ!c7K0T|h6`)aG#UpLFknl8qr{TG-AMFWVg8f-+tjJi)@=z_yR8Uo>^7c%WX5{mr zaBs(y+93GM0LJ$N@V}V)3cse`?(Z?Wq+4KgNTVRR(J3VoN{5tyARXK2ls;r&>#{N>^0@1Is|}$Co_-6FZn6yaNb09O=Ax>3 z1Eg}!e4{~GPm-ri_AS*t`1aLR#~ux9`)v+Ut)&sWh`Izk9V1!zHw<@5Myz{NC3gFz z;tIXb#2P$qI|5#P=8`&{J(jJKdAO8~jquvnM#alA8gcYlX6!+eguf15Jp2%ua_M7V z$FC{&N)=grH$uGI%m#3n=l5N5%}jpHL+{lXCO1eDt{vh}B%iK!ckdg;f^SCeVE~NV zygQ1e2ii0~16gZ)1@BDZ5$R?>C!KmiDHHXjiK(kL<85;-+)V=GgE|TLw^P$#dguh42 zpTy-O=T7$4ME~1hU(twoRy8rwSuMkpEOJKm`XRPRC7d^AUurdL->+O5gUl{ndJSzWeDlWnQAadYRWh~nT5{T!B5`jod+BBew70!)l zBwu|FpQ)S~2Xp4nuv&8Btk+uoP&t3ua+B#Q%vkigBsYkYMX!0MX3D2#sEwJ$$cJKz zi!}Xi7kGpe7fZ#Gy4f03ST083JlI?p*2HBGh+Ya8au~Z?9OA6rzvl)D+>l0RWdhgd z02&;*10O3<81+x!mG~m;N2AqsHo#jGI84{|pGzqggM(<_RN0- zHWIyI<=p5rs_(o$`WLycRp7Vl?w&ou61TID9GkAf!I6WXt>$`7i`hs+0F8Pr&oJ^^U@5%h-Fju1VTP95Gp zw=mBMO!p<~;?@&OX4!q*c`;Ch!RM-Od%b6rj^4ma1qlD4js8VEVsyM{h249)oKs6~ zJWk9y^AFS4hK|XFx)5z8L|u|7Mls#n+h(73RySm+AV@wA3P@!Wy23g)l(#W5gHYmd~gZUKs|qRTX+x*$jr| zLEvK!<2wc#%2Riq*l6k(pYM`~0ni8jQi{u1R%d6YUmc0Ux@4I^PLSM>M@_p4(@`wQ zk4Hh@K4K1R3g8U)KNOtEDQ3~Rt=_#)m50))!eGb={0^V_fB@%-?9_w%iJKL*d%-Cg z)y%4|iErM}x@@yc-H&^^(|nF3IGJ|ZiB_kI4!2b%fmQVD7UIGxDY9h5EVtEeWD} zSP^ZWN6dKOpt&Lceh0~xz-L1qP4%_C?mY~8@X5_@=2M5qR=bD^HwF*<|Bir3GFo~Z zCWym%bL8C*J?|_GoGccC?%$}j`!jCogpHW3I^Xxzw`0su^mHrADgi1u50zd4YRrt2 zp$+CI!a&p1sydu02_*Va&POexwg&Lpr>sux6=?KhG~~OLDeih>aX6m!S>chI07EG7 z!-rOL%0PqtkGpWl%REGF9nX548y+By{5rNw?&=YIR#Y+XJdwT1^8M92M{;${RMvy` z{T5b`G_6&G+#@8+XdP7yZ z@w>|X*Y+h!@4KNVdsD!=~CylP3TbxINd`*bMELB_n-oi;0`S#fK=2I>Z|KTJCI zeA0z3i0W9=z%~hH+fBh*?qhbMK`c?lAfG2$D@?etEzjIYI{7L%JwV8R!i(XZcm_bu z;+T?A&oN{Wf@&2B_%EUMLP#~gKkP!HTrna9!*5rYzv3USbsl%H-v9X54ifjA(y9aS zpJ7ck11W6O4qHfru>p`fLo7j?!m`L&$trgrq29;tM>7Rj+ryPbm(Xuw^=o1Rt4h+V zNmVfgI`58FkX4pFO;UMPYgLbQ98(oc8xwm^f#fYtCuQtQyQ`$WOc4-0z99IZ5U5jy zpF*Sl8EDiBuwlF0%Gi6@+D(uIi#`>@?+`TT8|tEK^Z@i*D7*Z;!ED4RhHtBdg|=C^Y)=L{cSoiYcpl5MQvwQo*KY!ikdgMZ%M& z>oSkxZ@j(%G6a-~Pe4mEW0LxXF0oMg#~$I)1XkQ|?9uO9q73+WA%w$|Q-_a^9AU>3 zjj%1&2j38N1d0%C8~{D$A`s&L4;+b2h33a>+3m0@T39*-44^L5dVT#1BiP3kmiN&* zYu0e^A@zFgc?y=fJ-DaUgc#lZ1Ew|pxGUFxYZJT^N6L|lDhtQin%`zT@R0aIAFz>L zT8rx!DP_~q)NSQ!FB7oQ66IaFFXFxQWBZH}n*@mZYmB&^?bgA<>0pH@_kt|uM+cc9 z_WO^#fpPoTvBwN$s2T|{HKsZ6!5SEP zJk$zCqJ;kj$xI0oZa2O_+yMVWn9>uUcA8wE2m#A?7JlQEmeBK&8P_~*){y+U$hceI zm#@zofj85!6NDsdGR&S=a@M%Z^M6##FZF*X+meY{ruao5h7bO#twjP0V6}!m(_az& z(#M~V*K3)|ol+lCZ4K(4`q^ZY+#V0Mu=+FrsoS3BEH8)NRcM3U(NTZGMwyFQVw?D^ z^om&0A|zOihDtkHo^hI>5w<#rwBtG=E9) zL0Qo^lUtu;=PH*|h3U;J?@t*Gr*Thz5x<9j`bvi*p?KTw-XYOPoR7ja#%lo3u<=!n}wg@2~nt z__Nrw{%r^+}mwsfbH z%)CaIy>rX^O{Ie1&GAWL-HGgH=9y?E2nI;5UwDtKn#GNZA^&!2mc91KtTEH25L*(d zUMX4L;>GVTQ#(pQ{2afxakP%cMZSx8yErfF)1`|f>QoyW!@Fiue9*nw(!pI67_}!z zV{zY>T5iYH%ekp}lKN%XSXp|v&ba!j?Yw9=}@m}B`P?rr<3 z!5$YSz3MIlHwlocKV_f?ypVgpF(e;wZy9{icSok+&D~WUgr$x1-#gIov{SFHQ~7@J z%VOu_4fK!9L+Mk&%)+bk1DBo8StHtt|BQccXEv4$P|r3*WQsU66phcw zJd#1>0w#=I+qyg|nef+acw^cU9v5Kr_VRq;-S;mYWElg?| zPx80rx9dQ3s*uc4cte%jYjL$ZTA26(EzEZJ)O~%d`e9MH`Fyg)h4d#Tnv>X@QEVt3)Fx z6b$tSCNC&VaO9VG1a{A|S6KHRE^jyX`&r@g*tGr*2bXOmS{Stt1J2~uoS5_%;PK~) z8)2!wg#E!-DLZoDmiGIQsJ5Nf!jSLMI8zir0Idb36vy_M> zz+yBp%>fsu02iPThI?>GX76;dyY0^q^%Sk5id8-WsO4lof604v#oHIrs8|wBQ6%rS zW*_&7P$06uI|!>9Q|llt?k%4s{KA0mg_am=U@+GI3Jx=jVX%EnyZ%SCG0=HCn+kPU zv%6Cm+Z04?3T(jYjSVAdR1%E)YmSqADxO+US;RJ+U{frpxf1Y@948421?@unn;CAD zF4N=V)oxn6(&;XayZXgHyfGq=CvKSvgo^+Zd3W3uG=np+re%r$=CT%_xWe{%dujDh zcx@w=lmQwj`(3%J0by;xcl$tcU!Xu-hm0@~;N+>UKu5qwYn2z~w4%UIH7pGLed%<* zP<`ikKk~=x*yiE**UU?U`p}7CKU5Bwq|GlKg3*6}5Qe!Evqb-;G2Z~v| zb~h!Tt^AD{%Z}i3Ix%jxVtB4-7bha4_QgVEtkMtn3~wVRN`VHDep8K$yCK9Xm$G@Z zcO7lU7No2zMelqHY6 z@exG*Q5l4x1yS+XOxYHsbn)g}-cJYxxcpY#*;8eVaH>cb?51)87?J7Z&kX;Pu`dv2 zn?aHnK1TO+KGn42yDM=y4)&9aM%W@xC>Zx64p7QpXs*^s1IG^Ud^@+421Rv{ym+&VG2qwfL(1Pk~7h z%E`RiK{eWZ?-Jn@-I1yRvC$-Wr?o~&`=8;j>U_R}ds)@wc2KnhQAcLh8&uOCtl~Y~ zW>3L1jL{Nk-+W~ByrNzqm{fN!s8b|@z(&Zxnts^v-9O@5hSA`4!lU6=$PZtxbYBr`-LPWW zFf8Ey5B}5&cAZH$-@>UbTlvV+65_b=iFkF7*-n-sZ#7i8CYS{v#C}oK$Q*8?vLiHb z|Na%)dPXEEhz@Jq8&JKqqDiGBVTe4oaiaL+u5fBGZ3>^2xEH0Vg`@q9$4(gWKDXRj zDCZTr5a}d7#6P9f7P1NFqicx((y=w&fRx$Mdipt5@0NMNXJ2@5H;CcC_N_kMv?t#8 z<-0={c-)1~a80x+5S8Rsbb0@7e2?;wWPdi@$?H1T-?;}&{lE+p_g6d~hklNuz+qP4 z?r?&4T<3?c)~a5jb@Z)Iq<=BI@sP`ibJsT+&E~Z1u-S09=QbP!C#vH2nb2B0;Jm6R zOs@gx=_($He_v}r(Z7+~lwz$JB@<%^l95w0TDVdT5342p+>39R?7bD3D8Q{t|I2FI zKCn*^J;T9=h@$omIXQlxndTD^$Bz}HtcC8=Yx4N zrR;3W7;I3)OSr6F?qy%WIRHpx3CAlD@mOwYod9<%lP=voosz^i+kJrLv%&D+3WWiQ z)$cktM+;7wcpi=iSx;n}6Cd<+EQ0rD#b3|SausL3t)~3KRROe95Bo4Vlzd^Fc=9!R zD`yd(RrWRQwaKLd@6L+Fv`sa#sZ}uqEmU}$knWkh|CmhSQL~sOKvG9N_O19TE8E6I zb&@yEG6TK3^P8q+@_`h5_g?%USz;_)dx`dkid+K(Y!TG*rBpF9=Fy(heM zpWMp$KQ;O#37IK%??M6M$N87TK>qGyREPiF%K%27*SVF8|In(Xmv2N*9jjfw#qMP4 zI^-Zj-QUqEe{A?A4}W|{m2r{m=x+ET$@^XV)_ZRloh)FLeUQOrMCiP_@Y)!m37PPcJ=Z1Hlba zOq)w8Eg1!?z(^M*f|el&GSFWFLOz~Af2+ZxKSu~q0S5mT9Ylt9O<6inP)7#Z&(qoi zOxU0HpLlxsPj4os1~~|9cjP)u)H${-Z&FLO*ii9nL4rh}=0A(BHhMHqvZI*jZFbzI zci&jiPfArE<94}8bUl1#em8e?5ZF_7Kj&?nK>+C4CjZCr@GoT}hIL9sTj;~C?!fH_ zHHks%_Y$41DVqrqI)~>=1z7!mu(R$NNVuuvTl(v+`(7DXTIM)cp%gqO1jW{hInAzo z9K_%*qFIehoX_myUivQXbs)=$$TX&Rh5~{vG=Pwjq@Q)$ofUm*a}UTsx{X^e_Jg#? zXGXT-&9d%da4mRML9_>FBC@9CuWV{Y*@=!Y(KxH&ZKNPkv_dS8-L`sg+VG<&Xf%v_ zyBWe&j(@JXz%w2b;;T*27j88C(5l-dod7OEHrd+gzqbEM`2LJKVcV}32dstv>XNkV_yUtSi>b0S2)T8)I-b;rUmShuvsu@$e z7n?P|l{k&_O1Er(X-96$@K+#v61?&fF!=My2ok9BVUK3fU(>TG{bhM62zPW5D@*3b?IN7 zQ)CrmGPpUCyj}7gL`Q!9{F4lIy#;-@m9bf6BQ1`55Q-eloX&YNpV!?lXcHUYbGQNuGpk49_%o zs6D$Yzv`JZ24uHYEhZ*Io>IvqW#9dXqgj7sCIKn^fO83qz@*>>GVk^!Y?T!xyEMYW z-F}8VDu%09Gntm;*&NW>zk-a;5VD&Son7hQG?U*W>vt?njp4`(NK+`IDqQqT1EXOW zq@YDhNq&5{*CgMXPmt6|*!y~`py$`9>}EbVsE^clq)`(GZXE-#w}Hp}2MdiCy*a`d zv6(K^0O}Su^>qpULv+Nu4W zGIjQsvo0$62#O{tj@vyQhPyG#Uw+gPVocy?HcL-b^VQ8IzhvL2_{gdeRK<(SYlaqO z$rXyOJOYycxy1#>IqrPQW~k%wvLGoEEoArd{{@2<*c-_bb_lis^m4F@l1M>Mfrt3y zjD+PQvD$XLweq1e#dvX|MVcr46btiu4TWY-4`;iialC%O-=LAb#?X6Vw;-iLSKuAr z|4|*0FH}*fu}hC!P~h{FxRGniMClbdm(;mC1qUI?I~kIsZ++c6OSJ0Vgt_?~JxP9G zk1c3{%>x>{++-Glm?n{Dwxfpp^AVI2!tam#{si8r3~A;C z#TXRaA#xj6Pwa&k{1RZbK&0Fqp;`X+>w%eDXvIi$zM0zGT&`aa+zQa3ZV=7a!ocQ> z!cQvzgjg1OZuF@Kf@A&p^tOLmPWTHy4i87fC-&7F zM+$^O)a2)*dla2J>{+5ji1$mJe|#hV!h$i(`~r#!px$x)txp!I@8Ie`Zzs`Mw|5RB zFO!q8&_RExsJEiGY;7TE7OajEmypgGnb^e^qpC~C|5;=z-E^3lke6h%|JBFLI5sTa zEDW@naK0y_;HfpH8Cm^vZ8eI$&VUb5#!aak!z;-kKyp?ef^bZaYD)va)y|b6?`s06qnkQc;G;o( z0!SJe$f*AO`I1ud(dQR0MIMaKj2FHtZtW}~gZyR#X;=y6wjCaI1TQxT-}X0vBNy!f z_N4%ZsVnUNvRRR$7)dM;0v19m0DHV4g8s%cn(z&$OqF(L{-m&_-dJm+ibFSg+uGP*rOc}==cPeBYiD6w-*|^ zFof@v@`%46o}FRpi|LM}1I}1KnLGL`iuK}171dCZj;J#x)mWh7MTnli&@n&R$-vn7 z5(9lK6;12QfkxR9#R`7Wy|`Z!3N29F@4}XBYTn|)Wri^Xmv78W`yxVwyJWQ&Q4KDy zmyl^!7B_`smbCwOHY;o}V@|^kM&sPMs#|dW=o7QtMXrX!Yx9{MbTtoJDd+C}aV4HX zleBThP=KrOpUlksSB7?vCc@&G@=kc4aP({}oKMSm8z`9X~y1#TMG$e?rCa>p_0r_6mLoEK1m#AXhhuSCp_0tBEeuM+E^g zSQ5nIZCHDH`X}tO&s;_8{uFYqd1Fm2F4VME zH=Bb4-&2qC{I+;77%llziqv4^e0GRH7{#b+v8nH8*E(W$AnN?0?^@V}unfhkNs=_K z!ET8M5untakY+O)Tpnn4^Wu4h*8*#Ou7Hwhdfnsr)$v1F0+#6(E>Yges_Rx5bx`kY zF16^DDehkmNG+-7X1rpZ0ylm116%;2MWm^cOf~|M=Ab49RDMmQ^5Hx#8zsbH$m=ev#I`eO_>s#|jOCO@ z6=oX1;=@b+R{3zLSq-4tQE{%^yShrh%kX!%aEItGKEO6IRPU#X{?yG-FL6dx*YJH2 z4Vgk84iW!SJMVY)!y4~+TFLMQHdQea!#Vl5Z4Qpf%2X`zYvLUFYL$-Yg!3R=Ew5(WeejLJjjUM0RH8~r(=Jt=dKff-$sYs2@46YNXqf^7?GnUuFg z?&)=>CmCH63ZzhA=gDT_Gi?PmdO z!~;MnJncz>Nv{0;CAj&xy)~gAFQHHH_C1-2HP2t!l2Nb81Ou0(R6G1h%S-Cv#7hC*6B<;gDwJrk7|U>IVbouBiy z;7A^4=_MbUo>J8VXMOe|(F?Ztk~k#=IU@Qweyq{AJWoQ4m_hnF!WvDhch6EePL>J0 zSg`OH0uq_l{1p@o0ty+}Gy;Wwl8cJ_d*;>c;lnK)c{>PuNPKMio<$2?6pl4MSjTeq z!r))p1hrIp?@NU(L2fC$z@_z4n)OT_HXve*HhdlalITQ}I>ar5H<9V={plH`dD_s< zC)x}E&9C04p`=T9&Mp&U(o5tHi9e^yluQXYEk5n1FP8dQP#G2nF#Thms6Ra`u>c*M zS@Jx*D}1}S`JRRyfSCkLF0S&^0rc_6z89->mMwezOLrS*P}rpMT{4EUE4*A98R-08 zJ=NGpWTum#4Tb%<#vA`>^2?*-g?Yst3p%STY!e4BP$!juTEc+J9J~AT^B_EqzF#l5 z*!-@7_?d_f_UW7ic}b3VbxWh((%I+sBuV2QqW_X7y)We@)cbl<0yStt2Y!pASlu+= zGaZy)e;wwG_ND;isu0)8e&5=1ksA2au@_HFw0rJ9BWHPL8O?9Kg}re*YIYx?2Iw8! z=UWYAQ;B_Pm^B!{l=h4G?^Lp(J=|?W{b!5uS{(%@zi#}160UytD%JA-tM1ZmBqr%- zB+%M#6AmzXU`7A4wompSbyqz14eY*dbnzzVQ^DmS>8~4n#lUY`C>e48b#PssJ-xW6 z3w`WU@}z5ZeW>ZE#A-7l>;d-UuH^D_$ zkY^Bkm~tRi^igq2E}JJh`J}?0LQ_o@M;##Y;ckd_2FflJD^RxDe`nJhUgi+IebiDztFg$94-?NAUzj z=Ad=gBleEBWqq+h%W`5qSq@fj@4(6MLe|8*v>tjnf+*NdjW7`HfA@X4_8ppTtG!>N zmAelyzo!p+Xf^Cb?!6^H@yIBhLyuS5x@vH?BR256{p;!x5@oqf;@BnKlTz0 zTGx;^_Edbf%ZdP%m#nG@QJxvGHEZnYIaT4&Nvyk}F>cfk3237F{5;g^W0cz7TV*e< zeyh?3wR3mZ;m4k>tHkN4r93(5m3^SD(q&4eytJAutb7)a#dj305crmv-S1VI8gr!8vT3jRv55JSNoQy|TG?%v&tPYygVE&=rTqzw%rG zaKSL1lR!wiU#DJS4)W)aWpGG%Z(l)LL`lnT^K9i-*Tm<=dN!~`nLf=c!`GEp7TZhf z$An@+kgKY5wW#7Rl~)kn7U^&p@lDMoM)}%6^KJVbAL=iZ{WNF&smWrCZo^$qRxu#N zaf!Dx+R{C&%IV-_I*MLuA}5j(3lx%F;r~Oeqvfih>hAoPWcGjRyl0mkUHa7uHR{6Z zgXRGrm-*_B?`w=@56mM)Pu)dk%RM5h95_VhK@C~#oDYXw^4?868v3$vF_siAno72NcYg3dDskooHn}4^{Zo7|@Kzo5`V)oH$K9|< zU<~9??rBJxmR2TP`kv^Y3wfKoN)CiRSF`%~AtyHtein(8Bg`{OSgIYXH{ zfl((7#dp_}?0{}MfLL-DcC1!2piy4$j=#`x7Zo*6GKmEWg%cmYfx zx#xA8^*mTdM8El`%<7lnzu51TUvsN#a*oSw>X(k3tx<4v1ye!N;c*?8)Lg&Yc!F0# zmXRdNQNVbAk=P0%S3(nBJRHxcaAwfy=rytC26q`Oxh0`1-K8uRU-fp5oK~Iy2XuzR z>-lR}fS~Y%0<8O2raPBC;8#pJqoLwhT+KERBulK!qB-zYYd0V&rN7goTr@YD?&J$4 zAFzaK29suS6!=REwR`&|N&sk>4Et~YTZchTt786%GBP?VM9v?9FKfu;UC)l5OlET+ zzD}U}-m*xLcBfIiI{wXx91ry}*r$Sg?7`l%@B0l%?-w*-pX$#b%x-z}-bj|m`^!6; z17YX+WKU*5u>{udHHf}#SM3{YyPf5lt4wC6w`TkFPuVgR32HtU%*1M)st>=mjOQhm ze7=GOpZKz*#dP%;oft=&m+NPCcfrCi~6#sEY z?b!wO%})>++!D6n;S-+MJ-|o1a}|ph!plZjM)pG-a2*{Rs9##9EY4*FeGQjmdbIhH z3s~=X8aaA@+_hJLUfHYqzs-M~4c#7%?jAsY&RrZIe%+{aCxV#(ck^Lt=_Z%6!c_9A zNnVMo!%8(yYQN8o%}uC(g^?{>igp_pIViW@DQQqY4>p*kI$v~mdIwjy^=nHRUJE|B0B9+EusK`}#V$WEFf**%8Dl9}q(Tq^2+rXN6P2CIr!_2C=8aCu{t5pGn6#MuX_6#u7m;j}rF@A;}?K2Ew?40ZANJ z2@|ykca->@Ml;+#D$9kZIylhn7`e2dO`H(0kX<%$e;prrk0(&i!_OcO^Qh0d_l@Qo zh$4@&6^i9Z0}|53sYR%+7X;ja=|%IEq_JjOg|Xi$TC8cGfMBdQhiU$J(btbN$YH1R zY=*8+2v@ziF5j|ZI;VbtRGK$z;sL-;B)wj@Wk2+S^?KO70ELKsQf%R#@m1+U_xB&4 z3e2+<5yM0oSXT5{SP0A0rMPph!h8#8T^t65!J zHDlt@<|g%Vf9H`TjT3e>e|PM?#S4=h=)o0P(D{O>y+QJH$^*b^pn7%%pF|o=&nrji ziQv`4@~n2&YewW>>d`$WF_opS3gjFrgk`SxX0IR~MtTx11b-;;a30G>W|f8tR2|zy z_KT?T#vDd%;NoggAs8o@=Yh3tC>m}3>t zS$zIna<9rZ)72!pADsmJ@QW5kc&YR^g7DdOl&nkgKk*ma$glVGQQse?ST-rJxI09G zloo#&$CR>f+7X*lgGauay(u(F>+Cm)9&WfbBgp~dV^tY8h<)?lom zg{zAyj<8QgD^$a0$7z+KW$Qu=_xvQ0+csCd1W!g=wqMI0hx>aSZDtk>3BLUqXh8%q zdTx1*e|-r>)~C9Qt7kbdQ9I-Dvm8`ec32uLox+ZU9`gx=D5!SC#Bd8SVMRD9Yj&*~ z!PE_`K14Tjovwi-{C58~k;Mh#aHw#qoU?}3()xQSan@TYd|DCO`FY@x;s9KCE#RpM z9xm2-b@w2Ha4fol%l6}hw-{FS=1X7P2lduz)vh6V(Qx92uQYd@B4 z;)G7464bw4ap+f#PV~kFZ`#CO@-1&ACixnLv%e_tn^95SjyZwsbnBvmi)gHcOsJn6 zuZvTaky}HePWl;$2BR2sJ=A7G5Kk8sgHAZ}f~IlqjGkE}Q#c9A#Dr5;Iv#5=tnXRS ze}E{zJ0;S52ex8n|LZUO2W+tK^dT{e23V5BF2fsm^DT{>I@k4W?A{G~RRZrb$%^8L!a+&S#u4)gmt* zJv=|{U11RxuAoNLZN}L`nq{l?IWsMW4=!rLP}H_q>UqCe~W zv*Ft>5p9IsZdsg%*q>wAw6gU$EzQp&mf&|QUwQoV@z{B>aeGYm@Ra`0(_w+aFj<5r zpSN7E!#b~jn>$>Xyvm3Hv_k^~3;!(uH5p%LrOigRUInew&=m&Hsi<`Z61~<5AGvP4 z70)WM)+lq} zc{edmy~uZ^DU6*NQrKh@j0_prR~&1HuPW~jQHJ7sH$DoX8tQkbS8kEuH^#9U;H#)t zU6@ekdMExF8mE2E4pnS=smcjo(&u$?QK@4Z!DE_cz*+o!Jd*T>?{!yM20&fk zfc*2GY>{R-JMsLdVcTVo*#(lpB4ApL`{t8=v5MpucGWe46MJX6d*elBb}KYXhxMl| zzCXo@li8k1s<_C<2mB^Jjl(6xeZ8%=*aPT~lfMm6{w_X#146`q!Jg+zR)Os2D4lOH zC%Z4PV$FPG=TDz#7`wru&c|w#1iHK`3nuks*9i}uB>oQ2EQ{wxDce*aT|WsuG{S#Q zPhxXiVx&oaSM}8Rw&3@JB-KwOFW3R!Mz4RXxdo5DDunKz=&{@jpB3z?-2NMpHTk{X znJ@`sKI`0e!D#UBea%tFYl||Z?>_xtM|;11Rowf{Hd0^aWJA>1-!*B}+yMu#Sm=sc zG>SuCLC!*)E@$iF&$te)wll=^N-%~eT+HDEX_<6@U8H+> z-Xh1l0tdN2*=R;qTZitbMG`VXd;VtU12t)v&=TD|$uSPmZ+X?B%Xz#pZC|hWvT=xGcU~Oa>=}3kBW|%xcpN%a_!%D#X{I(vR%a8#i)PbGKZ+#}a|3CEnDMfp^QI4m@_c9C%DE9T!*#lNo8 z&e{ohRj)`Cva(LzHi?1OvjIW|!xkm|H9w?^gdvcccf8J*$;{E0d`WXl!-AF2chW`f%xqVx+4?)O23{2y6rDwGof|@*{f`7IeuD_gw%+;eWC;^JvsojIzIndbDdCh) zn%@(gj82zs70O)^eLplaQF|nvF!fbh^U*;6OO5bbxG^U;kuK*qnD0n_u+=f1J(z+y<5d#v1ynk(FjFKmVyu={TXxd%rc0EB(b;tUK`xo zF&&g)P0fJK{0G2H&EByu*ml0p#t)OE=-HiTNCgTTqT>XUX)v0p@A4J+BimKHj#;B_ z4_9m%m2p6!?^E-mf|i>x$rR%bt`=lms*_{$bb#5;i)d4afBX!QG)k8rLXk?i7~;U9 z9aeD(_QwQCF`q;_=9~l1biT3H143CaPg1d z##gRA%u1$DPp!O+G$fU9Cfe8Vg-CRJ9e{|QL6?9ofb?78M}s{&z>bE8XHeg@5J+fN zWXYWC&luW{=MWS0;Q+|JQ;ncpg>_!ymLOm(qrh+m%aHF*U7^(vjM4KG^8n`<^(_gvHJ%O_kt!rJHH!`p z8JI|Skdq`S>kxUQb_8j0zQpqsjZK%VegJ*b1$?eRv|drPhgI{Mrk^wGc%eor48m)* zBGy~#u*?n?a9nqAH2aAU65J5IsN+yJBk1~-dX{**UR8LVz&y{*;~b0ep#m^M+@9LX zrsxdVNz`5E5)5egvVto9jh(W*Q`Di=A=oJof z3sSd-v-BUFL3&O1XTm2J$PK#U!&12Cy6I18BEe75m8l7NVbX%#r*O?b*rBI#ynk+L z1Ri9zL!6KK0>G5GDm?5p7EA0Uq|^h%@&x1!+h$gJ+hE_N@z&Wh1(5k*7YRAX7F&SM+#P`eA=j{VVSXFCOiv)7h+HF9(w`!X zeSx%P-O{VVOWAn3uWw&0Uk&oTaL!?!zWRjwbb%I<3iBtGV!(=X1Y@!LvweJOqpYvF z_A^D9bwG~`$nAA zEfH)K7!o^Cn0zyel(!V8-(8@-j@ni_5-OpQIBr*E{o> znk%$poqXd-$I3`e4_pl+JM3YPnGur;?N%SiKnH84PsM3X4+WKbp8y$xlpBJZg`>-4 zak>Xmlq<0^jviczuIcNTmm}h@AXL5=GVaE#kBZ4{)ePQR$;LNKg|!6%?0d5cWv*HU z93Uxw-m{1+s;10I#F}9<1oQ9}QESlCpFM}Lsd#mMif$eHK4nV7nN)n2ApXY*&zeuLQIitjxQ>kjnBuq}|nNSn;@Qy^3F|j6rxc}jWKZ41S z7LalVA&*m@U_naXFT`QBP=}(6heq!sLUGEwS;BB=4LLS{l9raK?!P4OW#Z^&#B~Ms zG7;NCC`$>n->wkKwW#9g`*DTy2u|2i83Uubuj{qG#hQ$TrP~8RCBN1rC*z>!m1hHxtaH=oi|Gc(q+h?&meRq{ZZc9~u*L;I{CuH)nVJ8(Kp4)|FL+HHkN2h4# zbN>{Y3!6)@@6E(DY%Zh^R0z*dC>^My0oUNldlspk9>r5@iV1#VGTd}Uf>m67tuBq9 zE`K?<<5Pr-QBq6T*KRz-)z%bL?rC6G{d;0Y=8yAYbY!BL;stqnGm0wa9>SpPixZa> z29|75QuHSf$_;BB2*kvo|5@Dl82`p5%d=|d|FLw|aZSGO+uvZo2!YWlqf=Tya`fnK zX%G|)x?zOUFuGHuR7wy53F!urmXhx7*q(j9zvuPZzx!kN?(4eF>pYL+eb86;_(b1R zq$iPH#}QFLg6421An-VH9zSD8UPYb#B;}$FFU>ex)$(#(KX`oWaX0nrGl#42%-4=Z z4cF(vI;-}ye8nDEh42lZMUd`g59y9jL@_0HdK}Ag6gjxic*LYK6Ju~K;7|1rR+pvDWtJivDIe9VJ{7k=B^|43hbGyQkW-=75Ir(pWe z09-TrpZ1W5RWflVt9&;K==cO3R`9lM>m(yD&|!^zHY+Q_TORdS1@(w9;KyI#mu`^; zktb>w51V^#F?_q0egZB>#!A!|VQs?MWvjj072u7(N(Vo6G{3;K^eaik(#0OdY=f)i zl(;##j0HxH1KCW!xALNf%1mSSA2&NoZ*015*U@mzhB&%xsqv0=tn?X>`Y0JC$1Bi4 z<2dJAR)j*oaF0FUkhWwIbw`yG&6EGtp!h^Bt-SDH`J>BYS<+!f-q*_Lle#Rf>`1=4 zqWiFpdV2JX)$7odY7;-sj?l zY0oq~vv63c`(Jshz5jfHR4OH1D%0dkVoAULWVzN-F~rZ9uj@?*n)1_~r0Khio;9(b zbR|s^f}gK5VH3q#0|Xc=rz@UQNJRzwJK5b!*PgQ*~v`Qi17zDKtJmXJ+DC# z&8RuOA0FDWgJV~JGIXxjcrUB_eNVO;w^jZ)Lp+f4zFmn1mC%;4#^f9Ik<)puwbIb8F@jIe zUxRFGwo?doy{a<0iR636Ex)TAa_Z*V$Nl&YY#}a(Hu0Pefvc#r%Oyz4`-o_NZ>*{7 znVZxXt}*-Z&7Uzh4~L+8`Y%baIsM~EE!r)aVy*;4zA12UA;~y%>kH?hq&Uj-l`V`z z$*=<4L~W_0Ck(Ye@S+^sx`hRc8)b!g;{{DCdRT|Qi9x5Iv!*L6R>tG#IJiaAg_0Le zZp6eVLVlvKLUz29<%zrb@lobxW)au41p@&{;FQsY)##G?4ZO{= zEu2)ONMdDjQ`LRg2zrmt^Y3HJ%dGh-0d57Z5im0Cu9l3Df)-mLhBWU`(4G6^_;24Q za*30y9-r9KDnd2u!4b?@dMGkeQ!YO>b**v`Y0&G+oUosKy+`sHJqX=56KZj}25cg# zU^ZKFEq7xkO;I*)#hpV?i9kK1th;wA!|jvN^XHZj8_Aaix3>jyr>!~?Z_iZ9FR{z_ z@N1BxfbY4O(T1dXzyoU7-OuyDF`j zage25hYcPTKAr=wx@l+$x6&pubXQats`PV#Bd(nTDrSM z*mq{y09=Qtjfy>+W8q^IE8tl4>gFVp0l`1<-qHC?K@hsWDxnx0R`~D?lVhn$9TY63&z2(`#SfapR6-Zu&*UjpeW7kKiYq;uVZVsf;K5yfm zllMe_f(CRr>J%PjLaQh@UZ~2?fp;|w*aB<@K2B#T7n5}((i978AQY>lJVnvE-}e=# ze`8H0z^k#bg1G~}h3JBLyYIZ>g;R zP9WY7_gz>6A!!73c?<%wK|{@Q5Ak>Cr4P|Jghe9Qq8Ry|3^vkBT{1u*Sj3ZI>RT<% zX~Hk1q;2ItLpg90odA2Oxb%5DWU)r^R6z)nkyUwfW8>Rk)k3c*c!i^lD9z)5dVOH3 z9-Ur!B*5p_7582)mw(^YESRMqNF<LsgV|Wn>!h1OU#&`m;6A-=b7dpd& z3DhIGT6=hr%|b~B&7T{E*0OSFJ#+W+W6wtW5Q8b&nlBLi>Og6!)Saq0U8i?Tlj z;iC)+k8h6XP+y_ODr?_$B=Qy26@QW&UpOixE%(HjLyVe)eHO1gg9HG)w6K}Ysu0GB zGD7HkPTga4rzqx2rc|ejQO6W2lM+HN*b3N;D4(q8mX6@vl{cq2Dj{D0@=^;^UW{{u z@mUAFU}N2UKal(7X(1V2fMFP}kSzea(>yRq$I?V**-}XoNgrq-g;XGMdlgej6dD%W z4bjeOEqZjXTaOi2U_sHH_;iHu)n06NaItPCGtXt#;I@=hX0ZiuEXuZlww#`@@}qqo zC-^-P)`U8l{Emb+77OH)Q)dQrH>otZUn#uU0IT-yk%L|&ja3GIhcL_?TYH%})le9x zb{LO~QZ_33G=e~c!&EoE01ydTeH(4`zC$@yZ%qS6sGu8nX0I&4m?<9UuvmE!m)c%ECH6MNeM zge=nG-bw?%B9d?;(jSYRaJ5!NmRY2f=Lp2D1wu_pzNqUYk_Nmb`6bL{8Y59>bv|*0 zVB{16%3B(<*u)pj0J$fKw14)$lyCuVf8mU{V%T`$AsdTr-z?!$78&E~FRzsBCU4DZ z$&54%Y9C*NdpaNgdP6{{hAhx^)Q?u*bK&2k*Ij_w`*!{_OPX(j)u21wS7mX0<0#FudZe^Hs8P^Jl$t5*FT{zZ$+4_ znX%4ysW4Fmm_S z_?NO{AI?WgRP-zVpN#Z(EQV|!Ous(a=@F|qxA3~}rZK4wS4e!d4prWs_~ZEcXOvR1J2R&MloYwWJjzV*4H4>BONVX&XZ=&7`7=>Uk>9HF2r7Y#u(+kT)!Q~;uapwC6B9;Ir2|~T(?>J6%!u23T-uADCH0w&#nZF z)OG6W;S>+qs>Wzl1Gkqc0%r4o`>Rit9&6R#*JJ&z8i8yI5DGnfR=mA&c?9SfYef~2 zG@k?i%1y$Z8WrvYb@!k!$$~NzJ=OVf_sQStsim~0s{?h7d&b;cmHj`gZ3s)256nVP z(1EJSi%1SQoq+q;qy8vex|lwOjh^otN9Fqe80Vh6Dy9|MunHH-@O4YAoU#y9>0cyO zdtIins=up(+T!@$^?K_k23-(9fw03cZjB+pVVgMUyd_V7JeUD!h*VWATM&Tt5 zK9>mAskd)iD=W^$Wpb*IPZ)u4+-?wsP9&h`?Z1_HLllVFkDsN5>#ylV=Fs8g@$(PNicrndn-4Y#r5I#c`@&tPPY~+6 zMbRFW>7^ni`pI2r|B;b<^fS8nK`$|ag})$xB1sx49viyW6D^EUucMCNQ|DiXX?UY< z9K^nn&x^p$@PHG~5X1fLBbnbb%{~mwU9FWSlQYl1vyG=!xti}78sx~-$8?)abB&d3)XHWBT$IOdmqG9@om3fgfn=-^6}ghY(h_tY6Oqx z9$$A?62;^o;KV1Ifzd0J-TwmVgvmib9@Be7YsmN%j{k@iL-uR65-oAU}xUjP( z)B)J|W%GiUHV+9cKI@Od{_ra#88jwB3+@I|$Sh+&lJ}%8gwrcncJY^U7kk*xC@84_ z@`!BS$cAHc%28i3-blcc*+>EBNAaWbnUbC&n)|I-baz!au8WTb?t{kR&1-YcHa@Fb z%^RfgDpxu5?|(4~{_9ijV!b#Oo*seostcE~?8ag7W=SI|X@7LX53aGKHDn$UBm z&QQ0zc4m8n*BNH;5hdQn?+oXztoi|i$H;Ew183d=j4Z7*EZ=MhW3b6DSNs*kSN+QF z6;(|f4#7`CaMo;xlmh7W!}=8r+N&FpuDfx*{=GDUKt!oXEBYp{~owHu&`>!x>_v6OCOyQ ztFv5(ihUb2iCz*FLPzo6Tpgg&J=^NIzS$aC@^C4-%fAUwlmBA#x3GBMQAtzvtg@7G z^ozW*E~|8YS=?TrciZb2rTs2xuS?g{bqtNXyyt^-7!eIKnO-H0?oyo|9JA%me?4ly z3tNtCdfEqMA%GwV0r$%c@t(LGB+m&)TG80?tut8PFJTjHB*}q^$+!ySKvHrT$e9gw z6E`_R13R#*Hds9S#XME@NDpI#wA;MnOax9x^b9@*-ho=ST1eK>268ziU~QmpG67dSwv)h>!vZ zPChTYOOca0YplL!rQstitYiSFgMj3~|8p1%-XubTweI(n9yC6prM~NE1#V$yw4Fum zjQ;swgHrzOZ6n)Rs?4z_UM(%uNf;nMA5dZ}WlA1N_)7I%gNtc|VFjLoHtuB5fIb11 zcqsG?md@Y(=iIMOrrNXDxfsEZeOxgndwLK}?ZGEdTx>e^kpWv4I|}It;C2vP#&y?R z71jP|FJkDaBglNnP3>!2dnQ~POufo@o$NgP!}$klXWla5|dxi5OP^!l3VlC55M%AmNO&h z6_Zt)cL;7*jI}}9ld4zK7kyzH#o$bJb&;B}o$~G)64n;Z-7vyp7(|T9NJc4Nw0Ml= z`0LJ(@eVMjcwg-Ge9~^S_N}j-V%P4llsZR+Pf4Ao)&r6T!v8LG1o{6?DJ~zz+dDN3O_m5oq5)$fs~N@JC6vEMY~t zV7N975_JzrQN6JO*~*nyO(|>_b%el=OXM0XD7;#8lzoWhep$ z>Dy$)^%X1Dxp^FE(w)r9gYaI|=c3vpI{4uoH`})s=B&SjQ8y9!h2qo^of-&$&_KX= zUxl9;uY#=hds7xTSEY!#Cuh`4?p>x0bKSQ>am9+4?q1ekc$mAxykQouln z$C;eYG9^$ziSn2u6tKVuiy|m|!&>oCZ{<(nOjP!;i)?5S|GzdMey$JV+N$`6TqMmw zjWgTkB1F@}=&bFu0Z9uKYQW;N9T)7NQ;Y$eiMsXmwfn6oS6}ZHSYi_nVF?<*{>Nk{ zQU;jn|7n-Q$eEmEuONN*J)n`t;fimrs9hKxO|pKG+UEoGsFWd%XwzL+rl2~-#vq=8 z1a+)ByU?-u05<`^&53V7>nt7yKsnLFkd|z^5+OGs1N*+XM!d~s@Ecf|0;!i;Bto=O zw~}nmFzkWbQE#*GFaeky1!zq8F_j*60xy_kJ!mKq1$%Oo}B1(Ykq_e&@CgP&rlNJHmnqrs}?3}*@{n5?TP zU+DS$t0HhBlM2>A3S;y17mp6o={28~C`=&gKA?vWYFE=SZ zfwp5BOX#tdw`0*i#jy6-L6c8$MCJZ(sZVmC0T;WdJD~?&tGBR!*XSW9^v%4(A;b1C zS6@h1vL@^!PfVuyw_^*7`R7BFGHG+?S2hRD@m8Y#(|1ZAJaY{;E9cb3^o|}A5Oj$? z=05zjEZ_ZtH)bqIX<3!taq{UB5s*Uf$^3AU;UM88% zj3Yz8_XRqiRx2aw3QD{LG#T!>MGspZ)7@1^u8%)K4lm;&{QON=LqRQH@gT88p~Vgz z^bU9jGgY`iI@_8IT;#jdDC~BazxD$qKl$s1< zSF+DQc_y7cE?-+>N^tajf;>8v|NI^c_jfh7o6SV`T9E zxjr$>G{@Vk6uF?zx4A#R-stZ$UV-dz!|xtR1wsz}^nvu2XIE$k})m~#Q1 z95FXLtBipelrK$Y#$94qh&t@|0>79SYMfx34M`SEjSLb9?&2_=e~!$o2^GFrz)>Xp zU9{~mNO*3>+HP+5f!3`F0lC*EY1pYxl>C!0*yhv+sUczKdJ>q2 zx47n#kBsP*CC-Rqqr${9&0K zSsW74vCHi1X*|ZwfZ(ExsMB$!QPLOkjC?+mj^!v{P}J_t;n3)~D!J@(j9 z)LuTm!$1bYvrt*uwlt?-;}`y!3z)MOotmZtRHm_5juTpSUPUb4)i2rAl2n>APlSzM zB$>3B?HWWC(*KaxbcX72EXDT^$-YY<0+*pP*_ie7G{`2hDxft~{w3tXTuj^`xJZ~W zXZQ_;4Z7zja3qXyRd7xRdUzsPe$|~wd zCWpWOMRZ>0_HW@^akA8Xs8kn@sChZon?61UWCk?bo3`5q?p5$#_5tvvZ~^Nv_*cH z=qnphD35BBL{(tH0`|9(Pu6;88p9=Hk0PlEX`5b!q~VuHm=@lpUpf0;d~kvpt8HdC9Tv92@!yV zEWBie1wHvp|3Q%2p36?6UlIhkL3nC@PzX-+_@h*r*?3(`ftf&E6Kikky|ZGobCBWj z079&1i;*}=KJj)7MrJCtwy%Jc~_z9T2-g@`KT zD78!Um=d?gTz_rHeZY@-ep?2$~ zf4my{3t#z|T>|xBpQM4E`putuGa8`S`J)L54J<|e0_nqK!8vBrPq6#N@(IRssT`UI z@d~Xwmz_naj3}a_skAhKoYO$IlrRds?l{Om)h~PP^YN61!Ux5dN_i>T=M9JORbh%P zMm3eBn>*h|fZdg;k`$*mBa3pS$9Z_TA48${1^Lf((2i;;9>oSnF7`*4=jW+7y|hv7Fr zg!wr!b4y}m)-TD@UkSf;NmX95!!MTBlmHP8YFqnPs0pFBv$eLBbK&b5_`q>R(rtEP zjAIou3`o=b7(V@Ql^qdwwU5cf2^Xr70lCV3n@$q$Wjt<@DF-aUkRTTzmN1ktr#X}LMU@j6r#Qa=Hjd- zNHC*KX8$lJHL~zv~o`pann3@x}qcFzKJpQ#+JYj zHI-?dl!N=fDQw@0TEsRK)+)*&>9mi?UGLL>#GT9@p?%s>cvryt+lC)S0hgOSV-8E2 zPV5&DwF@i0gqenMiOjRu(o*C8fZy#;ef?^%Lyq3?;(QP`ymS5skkhRSr2Qw3k))VE zbDE17KhoKWxDaSRD@Qj3J(0nY^Z*~wP9MHaEv^`PfY!|YxP-3|NT!F%YLjmM>YFf| zTMb)ZjG<_HupD_Kzwl7W#0&O4p=Oa`N5(FEySK|a*f&qxsyNzqsfit<-18@b%hekC zuea@V;vqAzu8BZ=7vS|L-CX{};~82AVK%;ridfMTX~P)Ep?q^-_*)TH_?a+bv@`{C zoo^Ke;4)u(Em>b!dIjQ7GquqI=%4)=nxzbnTfYPI)*XxKUl{7ZPx`RbS@@G*jQ@G* zwrn%|C3#sBP7xB;3l_LN;+Sj&4LFqox?eV^pK`mzZw=06^+kT0VdZ{KdDTo~Kn?7J zDu$MGIsJ;NWlAAcOY-R5jmCf4t&+>x3mt-zHS!iy02u@Xh!l*rh)YS6hP1g7=gCd< zuFarP)R^)w6?7g*dLBnN%VXzCm7&D{6gQN^hw-=X9Ch&CWTbqE{12-nbR7|*j z`rqgfsXX=dt~v#O+#vpb)#C9b(jYNAn6}g-1v4Ai#bl)B_2g(~ILr&*1bt!pVei9d z+Saj_6s+`8_dQKA=}L)F)+BS|d2ykIjo_2Q;JnECR{M5AR`NNNtPXXOI(1_zIpte> zQZg>K1_^#J<88g0!`;Vr)$CqYcx81f{$v(Z=ep%L>OQ2LKv*~9gS|xXq}JWhrLJoK z^kba7hCXFAuj-J#I>4ap46jDvZp-c=9{Oed6&7q-D^!`bVyibunlkVF*~jCgu2$@G zZ}uGJiU6D|XU85H-U@kJW3&4VB{8@wfz4Bt0t$ioy%0mS*nR0DnZr+!>^wRIUgErU zdoold8F(|5F_R%#nTUUndZHw3*>IVJoX=G^-cqo9*P)yMvf+7^%}@6P+3szeLF?Ie|HwQhXXd3Nbro`F9;L{hk~F7)38hUjzD z{Y)Ma?n^ZF{m(O#QQ4a$r`PC36|ojtOi*rKmVYUxPvOg>7~Arbhmduzr!t{_?>0F3 zq9!7V&L0VpC31hmtiLv9kfT@1X5iosd5NM)=Hnv#!R#`%G195q`1Cschv%hBsT`HxFHH#qMqv0%d%@Kw|hvKw(Y+ zl-!SN*pA0gj?KQkmm-o4%U2G;?Obp_q4B-#W;JE{Yxt5`W9$yze*m!>tgW49FErp` z>VXxo@^MVk{eh6lXE3L%#*56;e6bl_@3_8P^OMcrFhfn~Blm-3g*3{!V6Pw7Pjo`L zQMYOrr^1+UkL6RwTixTz8dY!7{qAuY%Sj7^d(4hZP%inZ$Wm}sMOrKC`4iz2E*6FQ zQftr+JpC3ojfQ_Qi^$q>7@wr|^4s;C zM8G2(NfOx0C91JIw(Hwh?uX~fmv~A0222-!?PqANu%JP2*B$iI2_v*FJ5|}E41)?@ zlS??12S@yR1Uz|sS_Cx)fuG%MI6iw*oy4Gep(WGI$o^BeQ1fo~LZiun$XxV!cwIXp6%hO!N_G*AL0-3@9~3VCXHVBrf#dh-=WM6f($3Q9{(tPz}8?mo^Jk0d|X_Knb0 zc1p6yEYf7Bs(q`_4}gw@%kT821dzFMVMsV{8EXqoc7xO4<2se?OF95VL*$#|-ywsB zCDQ?NNScBB*%&va%{~>|TZ!VvznozchmU9=Ie^nc!iYumDOKvI;>S*1?JTKuD^0!E zT%2P(1Y@85qCCa0e7h9VDiq4?Prl%=vyQJ5-DUpZth}2;8zeEV{e7)2JSGxrngTpk zNc?=`^p|o8q~LjM#Y7=?XG8ncwTjpB(B`?oln8m{bi(tza#vN!1P#Tm?JwfOSJFxm zy`%Bxyw(AKc67c#AG~lvlfjB#V}J3}{I@GRf2dBm{KNau?kRjbddGw&>~no3jW=P8 zP0$x&&i1E$YLNXAuhZ8_-dmjxs(jF=guvkUhg939fuododubkd6=6+pdA|vogy;my z>}!yLeQ(Q3+u^K3 z1++z)yui>QZPMGW6v;Mkbb6VV-=Rl(oDoc-1Ta$>R|A?K5Me%>e?bQng(+kuW+pUX zxD(PX{GYysSKbOoB#EtIKtCkD_YM2);j8PlowfoPJ0<*_`d1I1}V$xJ822g6HQ#t5(ECL$Y-x&y(s1tdwlNcH7Nx zstnh`BUpZs6B?G#)@w+_z`wrRovF`ddriXPR=a%mz`n|jqR^zKfYVbP5RaN=G@2f( zgi-9d_A(CSy(}sgEAQ8b$g?jG@(ndFr@fJ+EfiWbNtH>bCB5^JOL#E)g!6FNwK@74 zVJ5|CoaO8+zfdHre*%+@h}c)R4<>k~ux~`TC583h02SaB9G&YVjfKN$`=w z_$%^ZAARStZV=F#nyC`5`@2uy|1Cx16P}`>0H)(Gs>RoeuXCe}9+Y-Bw)3t=to<1(FT;iF`RLr^4`YRMZtt28YG^PDqob<}A zD<<_XO^{mv)Et5p+XflBAKNQZYwizE=C2QL)(KF7%(AY!>0tePMjAa!^~>Bk{#PR0 zkDc^~p?l{s$CElLaI@aF>sbXbv`Voqc7`Bq6nz+N`Jje~>b^^13*{T?_Ksbf_&c@S zV!KJ#G5X~*dW$1!!ie~xX=CfXqpkgyJ@&27oqt$XhgYhu?gJgbv<~BH_?y%F5iQ!m z5Ya!hrtRne!6x)8=ix;{{1NO@TDDC2Fo0SZ5-J}C#>cW*bzsqHJUfvu>6eL(b57>b zE<_?v-vD!azY)r9rvqGxD3g?1E&c=naB~{%n?lZmA&2FV5Opl;1M`)ude9KVhdE zLvr(<2l~^N?yQ}+FYbOeT7F+MvPS*-*SO$TGxb5xH%H#DMed6mz)?j(RG&H#LrLxm zdraMW8%}I^6|yU|R~EdHoMI&upZ6!y@iww6|D9X;Tl(-wnaoc^&R^g>1)ur#_b2>+ z|LI2n6xB$ajTnY@?=0_A1<4xpIS|mi7RPa34u%@@fZ8cLwZ|?8TNZl|sTXZI(!v7| z&AJREQEe-6)ax%VYLSdmDyLQ3nPtm&wl=DoIMMRV-V!_?K*DQ4Wp?bw$du8YXaAhC zXp}%^(~M)De_mp%qCeLG>cNHh!Ituc*8=F@)jLPovYsAqG-rT?qUW)yH&O1G;;A%E z`N;n$fphzN_THpc*T>Oh4F!Ux6Fc1Tc~7ePoSZ_DT3YiyY07tfj)_I)3We7Dw}kLWEejImpqiSw)_u@S(J&dyU{%sV2BmDUL1IbF-LA(R0Kg-%v1O3 znFpkscr!_rzCWsUWo6+v(5>gjri4kXE z49ERn4nzFFn+jK$_>SxCLlVhR4Wq5<;kJm+?Sl;LBW=pF=B;L1g?&*v$j^rlpg>Mu zHT~jf+@vK$cd#l8^;ceLu${(eRRMzQd!h>A4S-RcyV@K*`+W6#qTA2Iaf$D)Gq}Gm0B*7bA?r2Vx>N zRz0LotsS*Z$8Q{hk5yB2N@iW>fjBGy_8Oar$4Gw1IVoge=oeitlfQ-*_I4-I_|hLgb&P_^kx7^db6IEXDUv;qiti`MS$jF9Q1`o;szgB_-Ki)eePmSG-guasYNDR|PNp1rVOW zjL1MdcOM8tYMVgO@xbG&Bv;C8CV`?+G8pG24h}f!*%TqRVe(G3raVvn$1ZcSxIwXA z7a=k2mZ5yFRINivmYaBi_RIPlfuJKV>-WA?08X?yn5$)<>omVP>_04dR}>*uc>R6s zC$y?XQsC(nbpdAK83=TFdXvq6gRME=HfFLhs^0IKmPD>6lW->-eS&e~hQW~{^sEn7lqY2?>(|(&b@LXlMYpG? z`3MRG5~6$xCj>8Fu{BrU|bEL{|)x2UfxAynRK>R-Thxk z0j3?w8sYhX4^tygCQDw9^}O1p&{aOfh#;=_vab!42|Q1-;?Ly59Z&#W6#%l1jX35x z=k1W*m+06%z)dR_=@U2n!|K(aXGFp138A@%KizO%EmVN z)xE@9=(fVqar1zzzXY;)4&jgnet=C-@+I35or(HAQNIr0@yr*fgCZM$DQR^kjS#N) zNEW|yuJ`V5&r%9&<>rZ(|*KL1*T)7OtHi`0zL1Z-1oy z?5c5@XezXcXjckl!To=A$K{Yo#pzYB`9m7&0iXJC_PQI7;i8wL;X8%|S1y8${2u9g z+qe+nd;c`bNV4Rk+w;)SRP~rC?WIrF3J_H{@ZErYBB!W@QfzW)KhM&$=vW%y84IkD zF7bPJ0^dj0UQ3!0WJj2D^Q~RlN?h@&$-{@3h{7|8V?0pXv}q$%w_yCU`w)k$PAgA0 zEW%oOJ~);g{9T8*&K}*MBl7k9l*ld+u*J$VzaFP=DtnUF(-o@UP>XvvSh|6(dgb6!1z@tyVBQRUY5gO%daP;J<_YV zVrU-~a;;<5e-UMgl2wLnbC6E|^#}nRx&5ZZv%6}kfsoFB$Op`|e)yUDYq{*S=F<^i zMkO}=eeTa#2MCMb^NuzW*4NaOmMlUc{6X9ur(aEbogwwP>ml-eJr4k~%-+iZfxzo@ zlh&iyM)dSADo=IURON2OYCCE9$-l07_5Va3UjVWbIz#PsR3Z4O66la?W$OFhW)=T8 zjfWv(;txanU-8##N2_h@gn z*nlu)2QVy2Naan08cAaC;3F|!_e?T~5Z_JD(B74Hf@a%gEn?*uv^8vB1nLBaQze^0Atmfs5=Z#2s7 zx~abHwGJC~#hw=d?Bq^8R3Arf+3iy&JlJv6)x^n2`iZL1o-$hy-JM%|?p!9ZT@1>9 zwDPyM6{B%^YedSuoDuicNl0@5CrW8`mZe#OSot&xAFo>pqW``dL)&^IS)Lr3x1vyW z^=z5A;_=cc#eh35H6<=>EE`Nuk+_3(qI=>`EL@V{G)#!sTMX0h?U;W(KId7fK~l|f zsC$}U=?c(V82Vm@rea04PM{enOU2mE?%Y>(_)n`-s+wYd9!^6UHnV;?8nHIAq(qR5 zGD||5PRRzF`#Sf~0S%H7*<0mOV3$IV?)T$MD8%92-$s>B3{VMP^)86PTJvxOfkEiPMWiq+*Hs6`Nvts2XGC-*kloJnGRzA(I{DW?{NlSX8LC;eVdNKR2N742?Keb*>l05W>iTprG&C1ray1B{kcaPic{ht%g zdznP0bbuNf(W^c5OSeTKIe{ol9>bV?10KxCrDImO@bJCM|1Q%IYP`xitX&LIp49i@ zn|8n&#rK3rZNhR9LS($!E;>dn%L0cG>-my>Rhyy1IXwL;1^P3=SqW|*R~^e^ocv^0 zLB1QUE<|-?%EkHo6oAiS7g6%)%|9JeH!E>cI!=#&7Se|2(zP z6n{)OnMvFq(*6msvFBsAWr5O8p)dS);p+VM8KLtQIq+{}k&uU!=urzWJD@sjedR0S zYe1F>4EGVAG^m*ts1_X0(GkyJX3^2P9Om#MF|)@v7LfFhzZ%C$60D!f_eN~wy%7AP zsu@~9c$ZZyENYdXQw%SvE_pqg4<1Eed;BMj`#4ll)|g#>Dydklcdpm} zs}i!295^fS+pmK<RPEb4bfWV#1rTJKT2>MJl zL)vGE;yKmEUvads-Y@y6nY?8F}fmVb^1Er$% zv0{54`mZPmE%g+&h7C!=P+M#h&T7Ab1QYi-%qwcA%JDM0^FE6_V<}ZEENXl|c?W8* zo^hFbGw+ccx!jW%L<|rAj>wT?DdzzcEFdOUbIAP)6b=FksSo!P;@Ie)6rIN8h?^Iz%X{jiae2gwyGb00XgQ7EQ5h$c`7l@8MYZ(GB{xc#@h# z#oWmbNjd(cwI9kF_FWyl)!nWMioyptqVR<(0@i0mFq`$h zci&R57R@PGd!^o?*a(}DTrnpUtC1?z8a{o%aV{LJ)LkS)atG7_?YEc4g0OPsRM>cD zA+No=Smj~c*h8}V>6~mw2ArBIJZZnPn0pP4PgR06r71Ruxg5g!!4X!ES7q3(>D7a% zq)mTIyQ@(dFA$5r-e1U-J~|3sTSo^^GcBLLZZO6(HN`9=3|{@ye}WNAz;gyZ)&mkX zksiY2H}~Et&wqG6!%p%~#3%!7o-RBcQ*y}16ZYy}39rV=f@pbo@jthO*ljz+Q``g? zr4_k)m<0Za3f8mX2gr}K9-neh47oQ+t9%kT=5l2-n%?@EF^gYRS>~AJ#m+AQ1pSUC z2=c0_sfmRuwLpu|sP~ABipVd(TK<%)wNA6PeM;fv@!$?xUwuPAR%gk&c z=eV-MPq_=h8u<4Yy2B7A=2aLCiU&b8NIB?M?q#DKm##$vo_)S{mh69nzgl0TN%wSh zeH6ka9N#$<8lj6@wTCC%t^(C3%o=CyX2+^%W_J@U7fy)r%b?|C85E8{;)UkU=*514 z77zw56;htwcNNKLzP5cjtF)&M%${7jo)wvCJ)xz3jZPa2b{doQ`hNTJk@NrlDC2Po zL*qM<@iB7#h1!!WlDU&oj*-_)d+8w`DE;UDu)HzJl4SnyoUe=1#m0Mg0Jpth_(2g0etfir})d=m;OwRAe)$qIGT&85h;-$ z%7VA<@usCFW&!GKg~MmxzSL4lx+IV}{3m{O-5=`xNqjS-084i~TsBLWPi9+Owk4Z) z@lkNOH7&FcCa&WPugJ2n@kb}x?yl(AygJl|W#bh4btt8uUhfcv2Ov~8ThpVzSmsm9 zs?qUz#^b%ejvS5C9euukA5Fz@+q?G3@Og3SmR@We*C0JyESW0;m|PlqsxM&MQl74_ z#1jxjBAj}m^3>hMCGI^T*Z-sG8{6w(o38hcZF9$FlctT0#6ylZQHhOTTRp0 z_I`5R@A3YD^UFGB&Y87l)>LDG{F|blU%SA#F<$@7dm0XHKwkjg%6Wn1iOT;k>E$oj z*DQiREmA~ZC~BxkJ^r|}=xm(v=I$i>M#N!@aTZDsSVAyOJs97g@5PmFq`^}sv*aS) zWJ+YkCMZT?%(+o#Cqf|v3PG7A7qugY()tJqN*%zaXcHQN1hHPFr~m13zf64fw|<2x z=hW+qm2w3fZeJ>`*bhYY|LOV0r?Qs zBW|b6nTW>Pd_$=po0?k$moxftA6h5?1$$x;A-s4rmt|k=s`yCEN@4=fMx{X$?B6bW zd-~8_-zY%TfJCuNGF>ss2|eLk0UsvBK;`8)zt|ZQ!yaU2w;w(^h+&z1Uv5~wx3k#9 z`w&vLClA(pxD{hNKx)PJOJ1tN(qamJeIyGz^&HcJBp7yzVmtcy%m=OB#Qc95dc41<@PxPx`UV7(Zto zmTpi}3_y`@F&}>|?_4Wi$QWJ>uCW`rX|Y@hUPxO&rV-0V4$_gM!kXG&NU6k3W?W2K zm|u<@?SID_?YQqJD!jLyRSP$nUiAImv-w3R7WB1wskaR+xHZ=`7&a`d1H}mMUBV&U zYcWkdonrVGiQ)^EJ$Dcrc-ZKysVel?vauJL zk4?t}t)rw-w-^)WZnOW=CYw)qu=v1!8atnCW^u1vTy!ByPkzV~ehVs~P8HWM=5g#CX@faq9IIPov~oQjk+z6ba` zEc`YDr}2$V-5D_{KJPd!B zmN0OcFEBikgkPOJ>>|Q;SQ+TDMwysV8X$8)d+^n?^Tc^_vlH!~Q=lZH>F-V6zH=#^ z38`g%tRLy3iQ#z~N*nTjI#E63I2^WFD=`mFb}>@r4&*qYxSHGy`R;MVNR-3{hR$i z_c;5Oyp^A$C zCTRTc*uuY4I2TKvQ-fX0j}B2f357KH{VTtwsXPNnEitZr9`I>L;oFtqzkkW6xWa2D zw~zBBA$8tR7l9PZXbxDdjr8jk0ie|*fvEhP&QXN6Qz||L#1A;@YHq)i2XKC#q&#@b z?v$3HZzvveyFoVOcrD=QYInL}(Oh7^uG#YJWdU4ZYX32kx4JN zQx%u768&E{EQx3z?QtLMiU2De&i@hH8b*3Nk&9qKw5QdI3-F|k)wNXYG=u zq+HIM!+|sZ%1Fyy|Dwm)>A@uAwdv<>;m{+dTNruNK%6g}#)Zuo3R{olpKGWoXVxwr zNS5Pt>PD}wrAXx;`vadA3E<8woFeOtnbTm~4k+B1CMo+&I52*uO(#P=pB3)ZjFd#- zu%rZxni2X04*Cj1vU>VW;;E!3mpeqA6#x!OQ#`hc2WP&ls;KO)3(gJSorM9nROAg; z_yZk%c|b^V{`rEXN50}DM3@JAXqbd4r=22G))wF*+>!0 zxLFgZ@TMIJ4oS%WtMf^{`J9M8oEBcJi~)}B8;YEX1;4JGcLUPogHfsYX{HD7WVs^t zp;DY+RA?<=s&Kjl0Os?f)}opRDC1bZIbA{d8zD0{G!~5E!GJKY7wi=hrLh5CAHbfg z(lX1D75QR0B4i#`srvFbz2`xU{-S}Cd?o|*&t9m;7>|Q@uC9yE3Uyt{acf7OPB3eo z0Tb>M0mlBuMTYwxb$a=#Meqcv%iBSTz)>m}r^SWj(IivtKT_s{9Ep!V=E8k&S#0QG z#V6(@bQu1ImfwbN&GBpQBQ(Mnlj70P+}cZVp;>XTsSr?+rM{mkJ6#jDz=oxjve^WA zqV6B4OM;Y8p~seuAgu6@x~1<O;8zRDD$`ZFBpQnUGt-3l@l9KrOc+$!l*=jJ4OC44+eTqm8%w zE)^sBYK?vh&*&T`Cd5(Jf#*sL{Y27AOH?PBZ;Lp5dg6${Vi_S+c$1&L9<&eAg17A7 zgNB$KqdJj+={2yqAf75x2oSqV4}}KbU|E^$A&-X05^cTs1~_dw1av-XgGsx*QrbRz zJubdVYQ1)#|NNmjsxUc~BU(6mHpM@6~+^^xi|a_a?LHZ{x42B;L- zdu2mBYl>oz%gym-U}bYf1vqQNU?_CX;Eq)ii(a(!4T<_Hg9tBkHAzlv9F$lN>E@sk zAT-Gz@dR;AB}B=f6)cvM73{?7(Z#i1^R^uxKMkqmc4Z}uXQ0>8*)97Cyn7Q(g4RCg zNtfgP&Zx&#k)hQOM@QXl&UC)*M;ICw0Th(sSo`fhr*_fJ3w>-mp^H99dz|-th1M;d zv_G0GTi&$s`x&CImq(s&^df=%H&&9>3V$m!x&;4HX7D^ywB#|{m7liAgDT53%K0FI zS3G7bwdo+;FVD%}@Jsl(|KRAZb6%DXQ9)!g%kLK$ighv7ZTZ9fxmy<{OO5^1FPmvc z0wN12ZwuvM#YB;M&V(#LC4*=tTQ9V%1&DM&)`T9TpNK*ww1>3AP{E*q!17<6Lv;oz zZ;*gOiA~?3C9pj9JsA4ge1)^@6)kWQE-0JY7w=NnKasFgQRdC41=ZygY_WwhTHL%$ z{q7vZt-{9)xrj+X#&Blj#leQF0oS*4(`fuP} z6+I0TQ@;@uzDJz458~CDFZQaT8@IRWG&)M`y74w2n<4(Zv)gSZLWw#Z@pqvwNJ0)@kLzhDy&V=Vg)&^`I_&rS4gofcn$ilgkYAYJbYC*zJY(iX{#sLnQLcvYylFNb27;!uTh z)WdPldtreOWO5DG|NLvv%dTdXz~D0~)VHB~%(bD|DafWnK>Y)R5*Rt8sFRp=el|^o z$+yz=OW4PQ!xw&ANwIoteUk0`R5yiq@(t(d$7@Rc3K`H#w&MuBguO{XwT$YDO}$$O zJ)Ph_Q+?8Hdu2n42Q)$f&r&L1wN$u^)}QHo5d5#seL6#nM?m%Twgr$DlSjuS7CrsK z7qjlSPGMd?abESkm=n6OiE$s#+cl0K|A0RP;@IAsl6Z9y8Rv>%`@xalTT0w(T`5=| zRmk`t`l5ki!cG1godn3HIOm=p#q=vn263>y{H zGFS)b|I`gC=~ak9E3)m4kC4g5>tpH zO@u~Z1jQjB|0)|8Wyh10gry7>sQnZ5J&*#IPjaPP#KHyEZY=a9o<7t%oy-IfYr{(i z@>T^iW5S$tZc9Vqsl9_$PUR%IVI5m(GLO@s<8qe9RWYemDY1DS6gaD9t6|$Ig!%HS@Ss~mcb?L{?)z*9|%xG_-{!=6FQ)s>*wU1$mSD^ z`@B?*jqvGDNo~P%bm@04JdZ7m(t>x|um)!GqS?sE@6*tQX+&!@O}&vxV{vF8R-EfF ztVRzO!DO!pykZ#%oV9;Od_tx6ZuuPX|LL{h(Avx62`olgV9+GcUj z!D>qH;Je8gol}AF%v0^4PUW-s!~pz`kWn@XGRHcbTnsNkr)tr!*q<~+^8wr_HP;IH zzQ-9X)kD`{7WYOtyztQFDYq-63kp!N<)eoXKGA~~0FR6D0iNE0c-QfJc9s`|$M9!= zyVJz>8{b70M)fsndN5i)2%A)KLx{zM8nB2J<%0ObqNpSUVU(TFUz92>HjLM^P{&m= zx5HE{m-r8^6>dg2P|>&L;FzCqg>&5;e5t>F{gxgi0Q?`BR$IB>{X?~)V4ez_tLf>T z@Y3T>xmjkxm@EtSWD;m{oBSehRA{9Uq8+l2AYfUIrEPB*G+Lm~7y%c1qD<|0K7ps4 zEnE%vZCuRi(N!*lHg}!4dO7u(Nj1-HVgb! zFr~r#IZ#E&EdM4UmB4)0ORP=ZnOk8{tq@Vc<6#1=guY6(<~vH);Jf3m6}1XDsMaBnBE5KYa20L|oZ z8GFHIjUve$Yo!QJax=sb-tfaQpyD^2P|H80p`3{=%Lx}dWbQ}B0X&XuIF&R9mKV}k z3ZcM#=d@mo^&^+7I|LmBj9RSAH_sM7&r zZ3YuQg@sd7vS~+H7VHHU@`%T7!LX*Du(aU_=BbU0zU+Eb@ z<#@M9JK)@(#>1MoacMUn?{|k9rLig;-s_R~)}DZAv|UB!(}4L{fO+AQ(B?2KT&Qtc z+gYQ;ODgy%$`dRay6;T7EqhyH}a{Lv}QIyoG{ zhb`Pa1d3~Yz>868d7$ zpH`HR1mo7BsMWt5Q&@8(#)t%TtdnLZ0iSe{Q&`=DQTN>vN)oY9abl+LC$!hVxRyd4 zBY<+1HIDyGV8>(lOP zaK1?TeZ)|{_1j_#(-M$nTeSfL&2b;rwy{t$&!92ADj?s-)|t*jFi>)rxosn#3YvZJ zcs@E%(6yyF>Gv2qxhTzE{pC0GvI9?Ec~ZPQqYWp{`qGmV#pb8@c&PHw?5}6>HqV`e zuKX}};D*N%!+O&-RZ#0PXHIs{b64u&DBc(HFXV?pj&eVWl#Ho=D1Cv)h!u{4f@5>$ z%<;>oL=eK2mF5r;V&mGP=RdJ3`-!IFpG&z2;@Ib%F*fORyQX&K>TrET?KsTrdi?&l z{`oGd*|j^btD|EBPqyRox>Ze4IryYi6hQp)LG|7o^c>Kqra~xL-R7srGRu4=B_?^4 z9HK%UeJ@?d5#4%g;{`WaR)PuB(lxQJ%Zmm$=O-Ha0AsH36Z|{;_h*yS&8^JEmRpf% zwN$dCkltUZ0Yrh2@z5ko5&N$p_TQJl!l#Dp(--$q_hTi1^|%HUk}B1cA#Dd%o@yYaJqy!S3SJI= zFz_I|=~dc6vCMLFR948aKnU`cCSEL3BSDF-Qpbrt66+g-tWn1U>)M#5q%C()SDSP! zboUuGuy~{--s5=4HPYv9r2BZ8=K$)-+Xm2WRto~+K=tm`O;Bv0eV?AKIbo`4J)Jzw z?tDs6ZD@-2z+_*uzD+lE=((_-=G)yE4D?QVi%>8#i;XqDW3ze90yY=R~4?EJO}6HB6eX3Rkx$^ z=v*~NmbgL^8K*J;=;u#NV88I~sAHwU>L*fNK(nbZ68D^7IQ>VQSq~4l*Mh@J#GS#( zZztXG__qp!c2VxIT*Kh8p^_LKFnIlz)Y^Bg@iwf7h032LCuX|e-Sp7rXM3+0Z)n4~ zA3#0h;qYZLuxq3nbrBW%!@Ji9XLo1XU9aaFUPW7-O;wj;+LMw-iVE$U?IsrVXhL2W z*6+nTSmi)LoFfv4&FQ;$Od&E$BwTFVQe7y~1&BKps9o(4JZ~U`1*l6oy0z{*Md4z| zk2Gu-CY;4BY!}|d{_k{*m#q@YCq`^8GPvbco6nd#POqc`XOw;j?+Aaz7l3*>`5PX4|rf=e<9U}>oZ~%P}c;k$ip44g$2v) zkd?Mj$~-?V*z|c-QW0)_MpQv{el%WbhaRQgH*LT9{A;3D0n%iN-kH+SwFT?22316y zPXEsnQ?$;nWGaH+hYy?3briZ@n%PO~mmR4>j!rsy+x(^1nVZlaoLN!t8uvB4JHNxI z&_SvA4gib{Oy7OZZOGvf6(po1hvqTq_cA|^Tx5#Sm)vQ=Y4QiY3=-o5&LO;i=Yf4G zwM)Nt<9W_@2zD(=nb2$mKT-XPVCG(E^hwl$UA)g&{35socXBKL5YO1K4{i{At#tg3 z^)z#<(e*HP%q0uS(M0f~Q{%x9Bd1n~$F^J(q}dU}_KcN0?etZ~ z0>e+H>$z;BcjcWEOn2<{Vj=h(JSZRIx5EI>Tl5FU1EIYbNa%bl;cCb28N00W8);-L z&toIw>Q6Z~0C}cnECbvl@O;H(l&gh@DAEfJtaaPOx)Km|Ss2+g<+>Mm{#)bzymhF) z?eF2p@dEmTy!M3%5R87;Y zJ~?+rTiS`2t7D?!jdNre7{>iz=}-w#+tASf%$5fiv<|bD!jQ0(0t(DVcELCZr4v>| zwgf|Zft-MUFJ~fR0FTsH@XFU7Kg(an>tNC-6Gtv5vIz`u{#*`anQLnd?+I5!@$I{U zUzP3p`qQ{YTO)E^(He{UxxbAj;dCNY zja7zw(k-s^$HnS{N+ z8@07{(I}+@lu{(f_!bMNuB+;0w7I_?1{Ahp<*#HRLesLf^gTh~T#Ru{J=ToseTE#KTX69m~H+V3h5l|W3GszFMLiR*pbbJ?Q5Zm>m+4j z{R$3ySxzDC`T#SK2Gsq*mGa)#h0p4js{uGpAIofKMiC~lz#%@$_eRR{orCR?mpye~ z&4(V5$sk-3@Mx)(OLOF{y@Ar&GoW(9^h)`;3c)A2;I`NxNNlq#c8&F|jwZC1YL?}ckY4|1-wCK4kO5cj`-!fN1; zEdkg$9r%$Ta9!?N6+_J;^d%&c%cBq+G2)QH`)Jg$%1QWZScc9cZsI~y^K@#+$!{Ik z;mFBa8{()UN(hG`IU;meT@gWU;a09rb+2`waw?u}{8zyW@H~L;%q&8j5G?@)Z>9Gj z*}xdddJ%aTv#&7QXGzwoo$A<4{EDa|Na=u2Yt19{gxxJ_+gBk2bDk1wP?CSe1#N}$ zdPX|JbW0FaPP)qc6cy;3FJ~02+(^|%7i1|iq+^4ggo40f8glr@$y78ripC1`voIX{ zh}qtq_7z;?Wx$=nvHrfZ=IEyVgfbw|zs-6;Fo%wHuxUY{xTVgNwz{}*n)}@w++6hD zpx3Z)0**D-_t*-Hk`L780?i8+4s)F5_V_4FDqcGju6xN-yv!eC-A^Z$@?y{tgHRQEI(d772CYGc6Pp32Lj;4*hGnlM1f)M z-@#L)-p81zoAqyy)?X#?NFk5G5a*j=4hl@kwKFqu7$@FT_BMJM&8-lD#Ncy5MQ4Jtz9E>-2 zUt0TyO@1I)%Mn;F1xR7S`MU@Z5O$g3^dTrj{JL2#jCO8yt^Ui6vPlI$Tk@^7T$j6c zvfQ~CTQEo4UzIblnrU4*3AtJ6TaC=HX+BEqg@|~fOhgEQ0~;wI5e`&gu8`B()pFvy z`T}OaFIe{~?xIb<`SFcH|HltlDKgS@6AFrCim2``gA8$FGMag#bL&Yb^HT$lEfFz0BaYU&l(3b0??_`PEH{ z0*KVa4w$XEP%nM16*AMDvY5yACo^)s-DApcd7ePQl!rD1Z(OPQ1taVN_>ysc@AiT^ zvk1Ub;edS#*KDolX!V_YiR4;m#1mP`t~oW!=-4~`=<(QJiR)~Iwej@&C&CAOcP0;C z*Mnw4G^L%6bGXMh5c9FlQv!f0QyP)2OLvU~4UDQ==$AaZo$y$`hA&!}22FL|A6H@e zJqfX9>5Y0^0oO0yPiKF95hxuj|NhnJxFKWIf5sDE5kR!%kC=PnmdrH@4o5Dh_lh}w zyoens7f2ZJIcSuPx!q*NF@iN7=%TE(evt2TL#KLgN!!}Sleu$;-_<|jVU;mSgC|f{ zoxmf-3&X8L^ht8x?%Ow+0I#kvE-;ls{}ffo@inPEd#k+z*Vy?qeX zhN`n3m?DekxBv_Ui_Ap`PwrW|^XtVA!g=viXfZ*v`IT+o2c48b{k(h@2jzJ_I)v1L zZ2c-k`*-B@L4&s*f{{Q3K`*6BlHcdvq$ALOh4NZy;z){n&G17>N(bMQ6k%JR<8PT^ zL&bOw=RD7b=a*eJ8>;|6Yx&bV?=Hdqo;_eH@Zlqv>CvI#<^9zuGaLQ1T@wfQ?7tF@ zTcfFZ1&Q+`q6b_e@LcYisTo%@Y+|+ks85Q0>BVWifsvMRDTwxUD2 zvVL8YZ-v(+|X}1&2&Ebmw4!&NwW$==}@XCXfV>Uy>aOsWpbNS~9f| z1XKDNYHPU^0D5%Kr6^z2{Q4D}003`<-7G}}cM`#JT*>k1{}H$e?)i9wEq>kNI2S8e zW7s;$r|*49H!xhBKa|q|Wn%oq63RY7zukjIHuXSBo)H$eDs{;N_nfx5kELk#oSwX+ zf~#%3;R~iLzyfoL6lOA;<2y};O)PP z@NSc~VG;0oG43^O=Qbag*JC7%)Tpa2atwxbO@Vnz!cawz_l3C>lG8IhF$`FDT2?8f zN&`HqkJ~l|lNA3`8u;1st$=>AP?fF9-M85}{@^4A(t-ITRR0u#kdtxq-XF!5fLc}P z#nN&$GBm$vX(NS`b-E{5V`zJX@kA^QjJCc2?tVYVVD-j?XRN1)FvJGFj<0|K>Vt|# z0*i`iLr%G7Jrtq)J`+i5?q4$2zkSV=4ITRiUb&ibfr>fag_vF*2Hy+C47mJ!a9fFP z2tIS@QViu4OH&&Vf00S0`XcU|WlZrt(+WCd`|1Sc-2*&fxSK^y+A&?C#fvaSYNofz z$}8B_L$1Bo=h#*3GB|1`;9k6mIQ|q@u(N4|7ideD5*G*Z+_*Z-9;pU6L11|XaB*y1r`~Xi1i}pwzG}G>ZL+|$= zsz`WBWRxtaaE5&&Mz-~q*4BsBA(kK{G_qH`6gp@i8oj%K zsHSaoMF1>3^d^lZt9~Q@5nDt>6ubGG8BiWB-FeFOV<0lu@A#>KQHcR*LUa!4k~#-^ zIzWF9iKJW(p`q7-q0BTt#O_qCOs&`Zf=2rbKBMjn@l_kDvD5t*!9a@&Kp47zI7D+0 zU@h0kwD5tW&i&dzEC%3N$>j1tyqO>81+{Gyp6c$*-{f=jSoeHDGQ0Xy!oizlQSR@9 zwOLuh*moWBTvemA=u4%MS-u_ z?T$Ta1jd*szHpFojn5mYCjlDsDggQrrax2K62oJfjasX?s6{9xX%3a~Z%p7Hem43z zVV*?Aq9@~oVGG}gG&W?uCxH|n;=}SjS-nQ0``?4`kw5KSnm*cnAB<7E&#gZCVL#Fa z&|V%EmcU8_6z!T-L&ib?M)5RvIRCU^p9UYW0C;Sr^W{yd8~Pr{^q28U5!f>?oL&=` zY4QEH2}DuKVG54!b|-u{-~6syUDUC7zz-WdH4a?qjeV+rMFHJk-7%Wv_i(%x!iy;X zGOn8jX>P-~dmV|g#8GI~mm9+%-O21WTXZcG0MqX`KocbjbXWOF0B=87ygdF}){`%& z#<$gWfWp4{Vcgog&EIu*XLf-p+o*c4<083AAaW{FkhpyxEzDcM z1`#liLTBBkC^yl_3>XAM$>=#(R|tWFt$ujw8m_^*Iw;+h$?YitUKc;7M8k{2K41JU>9H6w&}$R_gYSl@p~V|~%H7FCFm zGw`~&&X@-aEN=B&eoK)A05rN^!jAQ%bSH2?ix#c2DI=^ zbVn1v#|;_x^j-m}sUB>RGpkpAP&3GHw%rW)o@HFV#R$Ag=YVB^^1c4PEarbAAv+X+ zjBtL?PnUq#20t*GQg0)W*Lx?psmA?J@J>t6HU6SD)6QByD8>^w?MJY30Whm!62zNeJvS>Xcp0;9U@;k=g zuO;PjwMrUVb)un5ggM^4kncrmewqf3FQv1Yov_+8mwn4yHGv$Q$zQu8=ZYSUo~6O~ zop0y{r|v5E%ZXT}#UlnPO9o<*qn{f)LJeeGyL;`K`#F1Zl6PpiRc~$i>8T&T5SN|h znUj78SO^&SEX@&?q$Ojq`H^=T?g5Ln7a9>T(et~n`t<i0+!bK(;1X){ zG#KdD{=@~4Ei2YJy zXP3Nl2@N<;Y!(wlx;6+hQ(D)MC!nVgZDOn2@}u&I+k&G_LAsaO=h&zPK}B=X)vbs% z*IsB4Mv*>2?$}?z`aY!agLm3eE*8;hMID$({_DlX8#)?UyP`p>eF-FG=`ZEuS9zmPL^B%lpcWDVWKggDdbp~Ryc z=V<<{%%EHUw&WcOO_kOqF64ACl!s71FzPFug}f(%N~$TL%QaBKdnzyIZlTomZb*B` zh5V@k_I1sG;U4qbN_=TMXWApBliRPyk7?V}?SZm(ga~>jZbVT1qHF zdpUEtF34Oay}bREsQyHH*j$lQyXvjS#khpvOa4f}O_PEMsWG8%xshjV7V?ttDFvWa z4e;-J_d~T7LA_ssoavd#6I$X2?G0SzU*j%{FZ&R0VuRY*C-)BhQ+rK^jYaxEb zZ4zRiTMtXVLMWdBNa170qPS7W(1?gtBuWvir$o@gD zB${2F@v?MZV{9tLViFk8_YCi5Qcip$mNY3!z#&b;#(%E>_3lmY$A9$~D8urk(Sxl` zvkf;F)cd8!e=Y_5<%A&zs<}G1+|Dnmkpu$jJ0~`ggBH3;1r{9Q71o=WBR{({6B9bd zSV}YQpa+5^I|`Bmn}xW7s@`Ac`404og|Ss0(FFP=^AewE(t2Lw2P0Ys&fO#S>t=Fj%zmQDa+s6e`4DK@ zj^cTE(C!bQhck}08Aut1migLki>quBIQzw?Hr|&rMlx+b+F030A(Dpd$6wz%t_ypX z+-PW22av0hnJp_koCgPXvvn(5y$E zYEIm$U+lVHuP^mTWl2U%kjl79K8u%E>psh~Bgd@(iSKSwIAJQOj(ZT{V^cfTE(sa+ zTj{<2}T1l6Z5{R z2|U?qf9v9nK{YxwUMS134``RDKTr6U^h3Q)xEWQJ_xW1%orSzO>0;RVY1)ViLqz3M zU$7T-oXs&{Ofvl_lZyj*^RkCRjso^O zT%E_}{5Lg3%~zCuSluitMlg^c&}6kBKs3joG3wQh?M@FF)W=Onw$D*F;>1p%SwXrQ zxWzX66ddXQm|Ne6*ra3e?cv#ZRHlu6Hza_4{!TdL@g8T<36R^UOK`WK8IFteuU_Y8 zi-zOI_F9Jp7F2Nquc!1JoEi)HMlfA!O-{m$;46WRfuujjLa?ze|ODrflSOHbHb!zFCBH_ECP&e9V>IYJe=AD&RJ;)I?W z#%tqWz-YiiE5CYt`L#7X5qFaxFbqR5NOY_l>zQgP8Gs}4D-ZT>Uj7eLVOWksl2a8k zBxtbi;i=g@xJLh3fzWuZeYT>VS$IOMZ;tbt(uq^+v@|UQD$D|bntuUErC22q1%(Qe zui1e;HP0;$+X?Que0y@N<#i`nS}t<2wVS_YmNm&|IC?e;!mp7k_&LsiCFLI{!%@X< zM(>(pRHw7^&Ec$YKP7xWYu1VRb&fYaUKR&^|8>Sx4kv>2HCW9Vni#qqAEs`uD(@fM zR|0$HTs-(MQsP16ul)CpeC|usnfKNgIZpl?0CD??ynM`Ag)@QPFJ1{|y~Y4aa*1j;VT@eG zoaA22{GD_r`mZ_1)yxY!!ir`0iJ}FvYz9Cu_xqzH%hlbXVKV!Fo#4uMlK(ov@q2k# zSp+}vG1#kR+}D>*$~FZWIaRq)a*LpWMd7?KIf_)ts{ z1Su0fh6?YoV2*-9xGft$ATp=uTr3J7R0%6X>S^unlx!T$&Iui*B+NGc8SMH)Sf#ef00GN#&dWT zK;Slz#bb@*!A>U48gTCxQvt63);Hphc7>d>J+;FUz&HDl5}y1T;d;Yzcg&-3R>4IQ za;)PJ*p7(5m&gkMtkqA&6SbdMe++Ys!aOtBXwzFWIIUMD8fP6G%{Ej}6$a%Bb$Ma@ z{etSM_I6mtk>WSWh+(iXljV-4T|(-&`8xH9+W04G&yaY!AGB`Ie|Mu;{QeT+sRG}= z45NhLK&XlS3r)u}3@Lm|B|!PnY|no0#quYH5kne?b?qFJ4e$80IE zm{HXi9#DvF$9)HXw5`2^jU&Hy&yN#YI(xR#_I!FX#^OU#nqV710&U{U z!cp~sl?C~C^n#fb0!p}I7FF4@fPwxxdfd3?@!u6G%f(4uyk5FL6n$9=NxSJYtPhy* z;%()B9mSa-WBvb+!PdG6D7+sCqF3Pmq#>{K1YGbgM)L#X!zExoZ{zvC8yy1Hw4<3z zu{^xx>wBP!UGo4ppM=4c{hBq4ggWuA{t&$IkrrY*2INf?TQF7+=}-d|{$l}pQ2IaxhS|&ZwKxKCicr?t|tE%=uu(>KYk1Y5{O*X-OE(8Z?B-{Xfpl>^LJ7-R$ zlCKs94F%%e^AsFCn@*Bs;K5zj?)(pQdlW_JGirEND0>uO`6(AabaYM(0>HsUpBq+z z1UIxu9}_B<_@khMr_!T0wOz`K0fBQl9Dt0*fjp}+k(${K{#=&Sf7dWb18`VgO{rqJ z7! zzq?@QAgtw&~Dk?{5v@ zUz%cM^k*frUHTw)=PwQwK8VnbmGBG8@*vuVic6PCuMeV`($H$_GFu_1#@7l~zydxb ziojVYM^U=l%35PCVnq;r{0!cE@VJY*l~7{wV+&3ywm{auaB^xWmr6Nyw<1!-4D*pQ zC)9)eI!a~XrAaX=TFj-M&+DHZMb`$ro-7qFM_hXOYO-Y;FNTN=IOEH0Ax3IC(V2v0hy- z#$M&XdSAKJ6zxz#-+7K6mp|X~rFK^(W=B4$jq~Im)qeaQ|NLsoFwG98>M9Y~vC^f( zYMN3b(z0cWC7%cmW|g*N))lXa;?$XcE+FRDs0H@y*8^ zv~EELy%BkO8QVGglJ{m~K$KhzEsuGET)n280G-!VjJh9a$=x^FrP^W>rzb2-P<+969sE24`^LG*}_x`u9QD_&=55|UJOCh4=|R}^%`>sH*_h#b5n@tYmX z5G>6zotHxx!kQj_1dM+@gHa%kHNleZQ*lbRS(b>VF_0CEB0uQSBxpS?GA*W#wDac< zE!NR3{^)pNF2_kUHGyaqprlhX!4E0fK94z1B~Nt>8FNplslKB z0+Si5X6)BT<(=2TOUp}1>4k9K$ad7Z zRyg;Q&bI;@oKSxyj+|LZKjQ8SHf0~p!>evNLB!HD^uMH~e`f6{ zcNp1z!`7LYr<0KrNW}*vlLJ2MNq)h#C6wGGKsM1Ts<5D_UxKSarw>oFmatz&$|pzm zT6Z_;JM-_bXUlYF;QRXQ{zR6c=z&Ew4`&Fi+z96~BOvej| zcfw|cl-NSuuZ`3jpTj2&EQ5Xbo*$cWHFQa4*}W#6#VRbDF9?lQS9ME_ehGO@#h>jWKSw zm6F_sae6IUaFlEw=b(C?8OE!^pEd&3NHK;Ib2G!%f0XyR%d>k* z&UruT>ATYC z7xK3c`RZ}qC~{IH3VQ~zid`2uM13ev@Az(#zjC-7eHNm&YB*nxJ!0!>O;~_P#|b|2 zjXYC*~f{uj;aW#|NJ=_j%2LAIyNK>mk6pJ@|7Fuc1pt zRu&50fUgr{mI*lv8+YAi~&$xPSpJ-w>;aoE7vV)js?7*U@`0i|)G# zj{(QIjyyICy(X#;#H>YUV>Y$ib9_`Vw}aRwTGBdT?;YsNH|vg2*o=xJ0&;Zqwm77p z3x{^(E3<-zIAmM>KbF2Spy~H}dmG&$Ez;c$(w)*F4Fb|3(p@6mjdU|wx(5nKcXvp` zknTPE{{GMVz53ic_kGTFt`IMe*UqWSjwN97*6DBkO3#w9oMT!0PKqzAxf01^*@u~+v}o?zA){fQl5;slT> z0uU!40l&~~TYtO>T4e_GLgVgw{i0GmU;(v6;&C;)mMKU9_6D+vaDJ%kGv#| z{e8{xpl7+D6p*csH5-#ouuGzQuc1-x;f`JI=E`xPyoz3%YMeD+6xZ}qV~|3t`=rt( zXBulIbg&I>7iv}{%%1FIK1*?q4B0d8E$LzWlRh973$7R`1BIDpHC2-7#k^Q}>1Wul z>mw!|Wv8k)qkM06@J?a9D-=&FD@ny8vZ?D;>Vk4H z9V}@B9hFAg0*y~L`q@wwCR~*mA`ykyV zi^g;m>d`Hq+K>c(ZZNxb$w>=v)UmFfjO|i{MIR4iiuFCPlRWY8ll)^)$wCQbAWvOw z+!3udFo@P$NRE#I0tsUG^HnI(Np=ZYF5GL{bb?%H&k z-vN3%OK6TMiZGYcGR&u4boy+mP!EF@gJHegOlf(>{Qk69eVI8=Y4#uKI@52u9TeuQ zE;0};#`f;WYG)pVHO6^Enh4R3-aV+6#hK2RmV|z6O0x&u^=wbiO$IoKWi{(Y9wHKp zh1E;?c~9kYlgrTvPjEKyL*Cflq8XSM!8ZhY3GhPt`^3o+G?~!#+G6(H9`sbo*+24v zfTv;U&1P=eZUA_J*ODwCXb~Er1LH=x{|LDMlUuIW^E!M5ZD|M^AMcDH%C7t6>SIqD zu<+$v=limc2Ufw^vGL>i_v9wNp19iFrWs%1J4<$yo08B)JF@=1Nk&t9FmI+vB>HCm z*20kI{#TT-Y*1UC4#`d-E6wjnE-SK@1-5*-fXCM?U09)+j8qZ>r~~j4!iWfN%v|Gk zBF4q5U;cerdRORsE(0IQP`!6Cwr)6E?Sm^>3TQO>ZD~=BrnFS&5p2tx5cq1>6~zG# z<B&gKA(>U!etsmO2=(h(637xO_n*SRDvZQkTkY+J1%gnDT*pD zsw{Ya`Jqnn$IGcXg=f z3Oj^H9B#gBl<-@j9x)c$Q$XB!ya@*0DzhX1)EuGh+n6^pzoTDD!nlGgV&+$Z3m>YGj!y;Nb5t0}g_407lsuuu5 zU;eckKfg%ax%6HWYuo}Z(1SS$0bFJv$PUN^7Z8yS-=e&Yl}YghG4BC<+`MC9~e_-^%~c&m9bOt1&!Y$C&- zo%bWj;cdl=6|jYH{HWc29jd;;--`1KSEGX%;?BhU#bS3B{zysBViRpNjaB&edjk%p zlcPmDzN5Uokkrf_M#O0xo;t-Fwj4>}(ZV)8o;pn6S;0`F(k+ z%G|rFWB|{AL-8DWDRz?p4nf0U4Dx$kb;K#U#ys^BN$dj-fL+r~qO_ne7r>UkK&9i$ z3b+2x$>w#dc63Pm5mAa2I%wsArD9vFC^(l`*cBUtE&I;uuz-5sEQ*anfin4zKst2$ zm4Ryf@K$@i^?7{L57vAC0^4N_di%=)_@o1P1sVUZt`33lx_ZC+AoVi{@SM~t?*3%y zm3vPi@D|=5#`kR#zjvqmUF+g}nlk_SEoEGUGY&Pv)XP(wYxcW>Jl+ayyep{ArP4d* z^4UiE1MRDH{8~mW~K}TY&e8hROZre(+s|WHQC8DOUC=v3XxWKIWkiBDK zjkvl&*$})CaCY+h;+7#_8b}Gzp8>`Lp3kSC(nd*`D8PfFJ?N<6>n`u?Xp3F-vSF|d zfdf@`rEA4@uL%+O-zebcY0n!JtLAOSa;xP^5pFo5SR8T}(Tjua2!rjd=w#6q4UU9% z=-Ds}kL5fokv}jMRiDqbsr@-f8P}rMSPneOqd>m(S$D@)?hB%_>BiC_NKB$GGwFWR7syK^UVkqx%P}Q0{QNMnCWh#+g z2gf^(uu3Z5F;>h7^N^Hp7yZ4ZLUY%uiuxn_n$^Z%hia=Nm82H{g#T%>SxsH@b^{t8 zVd^F@swGG8D-1aozf7^BAd`8LOHE7Uig#2kDz${ek(ZuVa`B=0mxMocj&r9e*tq7UeE6te0f2)Tpo_`p z7quMNxI@sfUw#`bp0~L5XBOuz^pL`Kxsz9LbMzKElFcuR?)KyFj72?NfKB}2dlV;! zjioEV_liSo{RDY+r+L|xfixzo56z;4@5B~3o_~`N@MO2iSz3d|HPXm%6@fpSFvuW^ zU#GD1_g)B+P}2&KBV#0SB5eZ@9a*I?(Df!heci`Hu-ykfQygL@W&6FU7Y{X;Km+2W zUth_*o`EcRU52&2B-PeK_9qrU1Z{L7nm&*OnRa;oWmfGv%p7qB@^rPr->>y)KipXGK2M7biv(&je?GqL5{M%K znICpHyp;@MBGu^F_z&h6gB7;)mYl(CsIBG7Z}9Ynb*rg<>DI27Z0(p-_ObYHEb8o2 zU_K;k_coi1M{VLC8t^FOvqaS&J; z57J?G%zU0QuM!wrlQfbG0^(uQ3!nL@gLbVtv`Xd+d9GElLQ+K~p+BM6Oe!c%i(OL7?cQHaZoJ zwNNcfvOiX2hZB?6XLKrR^H7&^Y(i?1r+t&(x!>+I3Ef<^nLNs~_wqQWF8w_GQ=2wp zHx0nC1oLmQt%%gWAZ%bF%rpR)Xvk}R7xR*MBsFa`cnQjf?S4LJ(l4LzaxC-OeN65; zSo6C060v`Ay*8Dn&H8sw`TSv*J7k%3|5JEl@N!!JA9;n3=Tup`b1JmMZdVPwGZv=#=rp<$xc+)vmy*}g1 zQ?O|HNwE$lbqF&fm57<%Gvq>W{p{f0bbDe zo~XM}^87}hSw`>-J@rDS`W$fzb-s6&t>cgjv61i1Zs`Nh=vx6cy?#)Zy(?u)AKBS7 zDcUiTq0U=^19Y!>O*Y2Dh5E{`6AOi6DBCOKDkZ1ks4~P;fDERS)TUm0=C@Tv;!;Ly zpow?n-s5)q&_&$21Il+g)aSecyBuJYmaFVq@O?G33d~~`(0f&fW>!31aplqv-G4b= zX<65?bc`TLG~q+SSZ(z`(?0W9ZwfffOVp;~vg-GP;g*TRynC(QUyUVCuhk0#Jh`hB zB_%2Y=4{S4(5u6x7p;#+piA(TwB|eEB;jW`;Fa;1eVgNz7y+ zXGKrNapa5S=$BUzw*R#xa3Z+!WRMqC5F>P?(0jDoco$3j@~ii4Wie*xO;XoILeIlO ztA)3STP2mD?`uH~TK~EeSXkW7bRY1M;@p=U*e#X(-)yrBvb22&E8D-+VlC`dn zresK^Fv*=!n3IPw{>4PeRfIpsavvr{ z1xThQK?1AX*&^U?5NCgnfLBiloLgww3h3!&c(&9r`*pZt1F(a%oUsj88$|P{w_oBF z^RysntfSC}G;zndu~6a-`pLQFHGfgg%=MA_N0zT}95nR^`&bv)c{5#!7cyEbgBL>b&fP@*b1>UlZ;AA`6pmdZf5Jchw527jy-L z83z6?Y4;zX3KBKh!7@*RJ4HytwOXZq0&4)%L9?78bS3QRdil!-eOt8jV#9)E6cVQY z)5Z)_zh|b?C^YSXTHLfiea;4AGI*E4YJTq6+ZhE2nm1=dh@f*)S zS9>hOZ{BGi!H9&K9w&28M|NDzIqKs72$PBi*fQR&N&i5Y2;dPrZp)ELsNn5?)2xVv zug)@6XGAh`1^cj z8Kt=cinsn}>8Oc?!$6t7fXx$|N+1o;ZTE`(XYD9GQsI>^^D>OsJbEhl_9qv2+$=M@ z%gTn7f_#hvRB_O&slXUNsi1v{%M{CwICywNZSvYxA53 z#IzLP7&EHt0eF#E)tJ0ci<5+Bk(_SJe_JGZ`Qb3rdO!Q^??U=Pxi(1!tq2PC}m(i zUgwh*oJFkx^Chs=wez6HVs4Mlp@m^=UGG2nrgg$-wn93u*B&L~644(&-8bgCy479M$iAyzgQnF30EyAsEg^kF}du^Tf`5&uOr5baN>HIrF_h)1%qr zam_2|Cx5?+*UhyJ80~FhSQA!&ICGYEk_ocN;z2UEW>1Bi*f;ts>LnyY<@B%ZAw3mz zJLJXF9S^^LUu1y;fBz~~6XsS9{p0X0P)jpwYK}TM(n?alUU{&b%UbhflBn#}sxFbr z#EQm0hcb-?0yP7uJ^C0nOLflFa>ohI>Z;-_Jz+lI^6WcGpoSE7udUJ}J}QRzm^Qv^ zh51OroK@x`m~gKbFRv&aOja3#`P6t*!RnqbH;Szc$=<;A$2j%i8)R8~K%B?6;IwC{|HpFCBC$|$6Dj0E zfROAnvU)cq-hnmd@cf#4(sA)rGNfTx6huer0L1ns_d{li>*p78;6@<%~*AWO}E>{^5$}>>%Pj&iP90let0t zm>G3Fk(?kV<6h?Agm1B_M4ZbI;DV}}F@b3!CG4wgJ7c~ii14H|!r3hF;Qz*bUefy2 zZdlhz`g|$Wd)x%7-+!MjcLR%z9WlvBvbSbj|4d`x=J&wD7rmU9jEzC;sQ)2cy-3CF zUkuTH9^#C=_~)1|+-9rBtToTQ`sERUPhd_Zz%Q=xB=>);x&pDm;d2Fa9lw9_XR(K}OPP)3$iX8H{It)e9v))1gku?f%<>|Jk@tlU}i z(Uj1qBebigW7#b?{7y*}prtZTC6%u!+VS1BiL813am#ztTC|5I%uXvfIyDU9v9$BW z&CpbESM@We0-rAX;X}wy6gFPI8*TXe5~^S?>X7LDGyC6YU)Y=bw8UoKhFAuINW3~F z^lY`v&bO8w!@P08uoypwAkKX39qr+(EA3Mao6X7??B)8Ipy44MZQ75lE^ppdyq)1U z+ZLa+J|iSjnuey6lPuE18=rP%GfL=bb{@nXdoZCkDiQ*R#!d*H36$lW(tD zQ{3J|H{IV|rK$8HWf_M#n#l1kOUG4m%grvOVi;wzDb3h@uUrb^s7cMy%g%EaIH4+t zXe_gn`v*UBIrFpUHPbhpszpxau-+=d|2-T(CRLXu6}14iiS{G&6Bv^2l;U6C;4=g4 z7is4SwGOI3?+m?FWF0FPas4exl2jVeBoNIj;`P&9ucDRnZ4lu_+5XRQ>f{{9ME{xQ zz2@Sda$@SPh=IpBxZ{9FzYFE@y##2u(7JsUw#xH#Ft5L zGfBI?q@n8gQr6HWyS^zyAL8&vN`9$#^8JfyX%JIO?(;W9A;TCRj&9!l?~dN;A}H)Gu9GAN|*{rAN(9oHa( z)^TyJVdD+v4l@PLh#tH*6}WHy*_8J!9Z*V&>!L@3?|rFChvX?+iRfo*KvJ?(IUQc- ze+KaXHDt&JqukR^)#d+>Jhz#73p+ss2<^!Ehntb3mQbXQL@_;YF(632|RNm{{gm59$= z43a`Q9QaAIzLc9Kmq_rJNFP-W=dZHoT|wmOE_WsvkR9akB_5G;_{W#8&MSF8ZK`%cLpiD{01PVB1BDWs z-6+lCxdCs!{YLUN-U^TYK+QdJJ@WH%j>@{sRUkIP^j24`PfsrC}N;L;lY8VN?N%X}NR zbN%})e2|exm=eMVGTBSz#3HG3nK^>^_fkn{KzhU(kV5oX6%oA`wtX)0EU4Ys-=ek! z1LyVbk_6`n#)${4`X~V`0Mb4{<&|^WSD5hM^X3(zk7iLB!R8m_{?Eslc*yX%ITWptiqBd$WmN z+U0#HM1#q(R%k;xvTWKloQN-X{46}bLBet~!pX(HuN$uLn|*E$k!IpvR;xpZ@KWn#ubk*L+Owd8iS@)DYUy$Ln5Gkbya zllWV^LF4S42tUZi=Q$7&Ei^&p*=n;TAvNDv)PekJd~uTUC$`Q3O63NY`RJDAvZKyPpXt?uOHcCc`n()Kk<#?b zC0$f5e79`(U%Y*JlFzu~pjuwnMQhejqP(L_cP2O5c=j zBId(Lj^9oKQ{HYxk~GgRg6+|Oe8ISczpNDas94Sx&dE>_6|IA?A*97)Z)`&TYV!hN zY)C_D6LLq{r#w%r0S}ASs_@16cwG~MO3LSv7#jIfx0+Ln-Je)&HM!-{^!D01^DR>J zyXEgbtSSf8uFcys7G$;OC4^KL*2v;h=TLtiLz9rhLcg5)m6JjIqXz*B(BMMT*kBJq zT6F(*&4wiRAK~mGyRt$g4f?wf_?OE5o>f@j&L`e0IozC9dcuG>G0B24x41>oj zA+guMD{YY3GxoaW)G3C$7QbKty#-zRsx_JY@g-UQr^+ndQ@B1yAw6d*2Oq%K^4291 z*=sJ zmjW=OCKeaiP%9)d8bxrs!RMiqoI3_tNL0c57s!WR6r4w|-5f0V=3;5G zW1_#;;cY&`4^=)mec8i4l8!Kg1SiA29#eCz85dXVs7>>SopUi+qpUljLPTrv5|60Wm8ienA`sp0^$?uV2`*8lr?*|Y6cgO!~ zKf)5w-}u%?Y6(Nk)VPq9#I0+Gr3Mk_1Q9pbU~BZ zs;Vi8ujp-mR8IotMTz<%KOP0}!Yc{T65ai6e@DB5vr9-^(D${NB;c=?hRG{e+dsB8 zAJR0(B9LZ-ye^(&Bp%==u&TwOGaHO3I-&E$NjViQc-2(+&#V+>LeJ)zw;qY)!c7t~ zP3XJ>Wdt8joT)4|{b0gDba9-kSE_Vc{+~0bzW)Zn5Q0?IR!7E<7*g(T$*OK-4;~65 zC`pOX$6Q2&W(keD#tmGHwrj*SI|~*hrLXyaj9uM4E2c0?8V@TrhFZ~uX2kN_@oCRQ zIClgd)59HWnQ|pE1xUG_sGClL!(u;qIk>h$p$(9HII7LL?&kb(W_Gu?3_IX_9sH|u zs1D351sx*5V#0c;0M2Bbf=!PSzwc>AV7)iGt-XG9DUA`8cR_v;IxS)smsIC5rar(j z-y**41r*7<28AsZlb=k%ulUrG+8&cccs=%U*o_tXQeX1lRypfMK>et1XwzR$KOB7V)_#a+7|G`;9Y{MKn0xLN@sV|9`Sep}Ramn5e$F67 zi|S`70sXwGgsQ_UBMsz|d2ar(;5A4UG4+)lI8xZXbrt&jLWOV}ihD?-8=_Q7_9?x;H$%iFhjF(;3FbU5EzsZW&aeZg<#Fx&|jWho@Aw;kT;Akw}?D4KR z+G!L*U>wg9tb2hAU{UkA0>7jAVf{#7%)gaRd=nZ3FVLqpmkhc?Z8SEs7g>>bL2aDi zQz-kMS{}p7^EY}uq2#tAkufUgTII4D&2!H1=C;x4;4RQ1R zV=yLr5yjU0Z3xObilA3?r)RZww}N3>?ay{-dC+36#C=S!>qA}T_@OqC0BjgOFdG_f z00&=fy^m>8tUsGu&%?7vck8@|+xfdZMJ8YoC*p~}f=KHVk5pWDAWuur-&NC+T; z^Jt?4>4YOOn0L2iicos$`rJk6fB=*c^-K$h`91@9>Oe0^d|wByJkX{B{dBm!epwRs zp!@>8?p6@&37#&+Dd@RGyI47ZoJ z0hZ6WE%gR5;J`euC7Q!rB8CqkIPG5}iBn*yQ@AaG%qj2TTqJ?6Vf}ZuQ&Y+*&YDuL z1q^N97*KQ8m3ZoA%-$6p^ExY`%cK5`=k!4Hpt1;NO5WW~Ri&T>({HAho6*+K?ky5%DMy?J40t7ykBUS&-hU|lx+x-L^!1%RawBE>t=Un7i;?eDCMQQ~$v+@>ZCA$h zw)WqTO;o|Y`i~jieOAEe`PF~!q_nKmKDc27BuSAF;-xvWieO9Ttg?Nf@;r4q<+4w3mTaf_XQD4_9HjLh z!NF(vAemMV2_VdrJYRefR;w4>Gr1@W7>>n7-3nUZcX$=^A!cBND(5$NkQTF2B5($Q z=F{NvV+jmL(HMKJFgp31*Hv?6z}A`!=@#@7uynTD`C~CUu(x@9vKajZrdl&|N{Bbr z%mh!Faxajvzi^bQ*2_{=7!(Mn8o6D+U&2QsIB}u1Rn-|FJDo0B6#go6)bJatTo`?( z1Hu$9J0ueQTUk5~T}61t-j4n;nNsWJ4)Khy3e^kic{itA6@f5VFkd$V>O;-l_7uDGu~4ik1c~ zh1*C^kFp0NEa<>6T7X+OiFSo3HEM9x;|aN+wPd^T-wYk#@O0DiW(i$^$Nu7~u8z2^ zv<%zQtrW)8ceRO}sftes8pM`me;0=<6VoS}E20zk?e%k}*rj-K-|}N@5t3Gxx7RLw z*!94`vHF{Ja=wP}9pb+UfdUD1GkE0<{}O$Mc&;jWzeSe8pFEr`{mCnv~SO z%vpvjaV0cS@c_nMx5LPg#L}vG#};-9bth~yA$r=hQuXHSa046=dbi^!bQ9R#MFtTfWSqE^T!@~HI4#OO7-1d8CSUq zmQEoAx=%zHso!bC0H3BPKap>1H%NHN+?Kh?(^Wok{NiENAsg#ZWv9V%O%fld!y8em z|Jz3U%LksAff$#heJT~MD!|kZQ?QUW{!yl{T|qSzn?~(ay=OyMIE>9TO5?GSd<@x` zE(1?WgQV|s+xCDS9EY*p_DuofRgBX*tQEd2uZDr|f-{k64dYEfY$gB$ghHRk;ioZV z7Y4lgwvZQih8ekvtSzNS7j_xXS$%hpJdgi2PM8(3_uQ^8fAH1^q z-vRZ8Eh`_MfdNDXK~jJYT$Ywnv6(z9EA32|?Um5qU;w_;Hs(3HW8+G;VrzIEg?fzb+05uNd*j zofIidv6KWYW|a#bnYZ%tIA)payd7XZiU5O4;827A%^cOvn2`#uUqyh=BJ`*L^Y%cBHSaQ{ ziMSLOT9lK9@ef~r>UD0Sb!M=aJvy^OmHKh2LM_00Z&(JW4+@ced_}Oe;$96L?aLf2 zKSf*Fe+pZOG{`eGA4>CnN5tSmmKIKyLO{v}w~+YOn^L4C5CLuIm`D@#4j z&{EO$C*M5coiwv~&A_fVhx2Fk&2IP*_q28?DB%IE40>M8@9}-tNC?0ngoulR2dJ00 z5A)|wBvLUeUN2gEx4dd}#!YMoQ5GM};-?J+A{!8$JzOM4KYn*!jI~(>Bic??-l20W zx3*dP=o%7zlGk5)m1v2n)3}*-LZ*L0ZzbUV$d`-29V62m&k#SuRf1F^(3{dWg?Ws$ zGLU-sBF&>TQzhP5(1<}7wbf;!W=H5~oEXt-xrTj~%$`LkWB7a|K6&&{Q>;wf@&}6- zB#x#T)gBKXP?yFV5>)Ye_afdk81&Ffc`1IS;ie?Q(-+b99?3?mwp=PvdQr%`!{qaG`cn(UO!t^_|hPg(Y?Y9%dP5H3h^ zs!C~hyeA!F^mtJSJgBa8C3I!j-;=V2t71*o9-WZ3JB zdcb9rAhgh>Z)+kN|0rWE%Ie2+@S#_YO)%jl4cc>cgYXa6PjA=czUssyMq$XZ5Ri#; z;Szy*i1f1k)G8Wqa^%NR-Gwy1Z_5J9-;0GwiPI=JrH(aibtrSbM`x=%+Igx!SenMW zEakWiq)%0$QI^}M%KN}d(46Jm{O6NnWF@$`?Y(p7r=5$~4C+xblt-tTG+L(5-)z;b zt;->(^d5BP4W*zjP7gI%`0Vcs(hvyb;<$=)?NUjY3nifib$h>0?SS7#+dLnmZV$H2 z*FL@?XdHuBfT%aRAy2OYY+9W(w;d}8-^jfJ!Q0tI$1K9!5 zfY-)92|fVWR^{h{86aSx)*sgqki_7YuXJ3pmz6BKfxf>q!~Spb;I8H;OgN_jeOT3sQbUQcOQ^@m%%t<}= zwmCP-u=;seuUC#?Cb^p$p@|)XIll@%w{4+L4Dm#Erk?sl>7up7yuq6%K3YW7!9Zc| zHe1=NZP4ayZtABJL`~J9Pd1*f@J5AppE4mEz7bdA80~8eK6|^8r%J~n`BN1E-Q=}L zn6CEOvJ109jP!RVhV}W_D^GF(lVbiGIl5>oTxxr2GHR;_HhVT4@aZIYF9Qq<2wJ>> zdZq#!gH6o_U9~>XXVH_>s7$yjV@e~@X{%6Ns-b!!`(*uO?%OX)9m$& z!?WNSOi=6!b=OQJBU8Ceh-SI)(D7j>g9VASGXkciZ>bVefNg1yxF36l5b7+g2ibVw zp6~(UI;fjO+ojF=vCu5H*lP*;k}_R}h7-JXva(GE{Jy=JRUye#01|$+bF_#zDxdoK z?xBG?2fwxnQo#Cw9H}Tx;kt3Zhy>?Q6j29Jt?m!&>k7`s9iK4Gln9qL<;HQpb<9xk zkTj4B_O2(_6lRJ9`Q?>k7_i-a;!+-)p~*Q08$mjfR^Oi3n2O8lIWYcOfU^?alV4x? zv@?K=l)25S^kD6rA6PYYu<48Yp=zb+{CPwhVl{U%BHgKsdn}hrtDP1N`7KF0EeQ_( z296eF0J+T`eVE?r=+N@((n6hT;mt(PBvNP4$>rn-Git1*lrxjx-&Z}mDlsCz#l&$; zXl@EF9L>Cz`aq)n-pwB#?3~ta& zahP-GArpMfCKp_HIcf9)J-&lJoz|Y6XrW-zBi!!fTr=Y>IQ!#EuIqK2AT}8o60U*; zjuxg|Sw`~_M5(vuwFi9#;-E#5Kw`5Kq!+j}bqodUi^D&`nD^1Alk4F(NwL0->l>qT zjchk9GRYOs?44HkX2Ne*;aVG26hn4@T#24Z=;+XYx38GIu^*@Y@;gpr{GFD*y5c9* zoxlUbliN2E>&B0sQWTq~mNFnh$kmDWi+aF;2~JTtJ=v-@@QdpuoIDq}!Qc3S6*&vg zbKAh%+nMake)B3AVMQhM?M_!OkWc|+%V%4&5$2oF;m2GnsazX$?BW+sowl4ia4il+ z6&M+==E^MEFNhI$!VjLv5e%MFrXH`F zsnPa|AH62l%{+~(Adgu}>L0_-V?vD*0fG@EB!+TO&>Y2KMsNqpWx#$w>1G;gxHwM% zVw+6}th?fM(#>>%qqkQsUsYs6ztvB|neJW*1wzkQ-s#)7bFZ|Bq@h8gfi5}wbWzUD zo7|EW%26lz)-Qu zLIW|MeSnYf@1IAzU5Kf3BwefQxHt*xE2oqQ3N;I}mPWgTIc+Acg@pv8SZpmd&oYZi z4Sh5D^uFBBs86@tz;V)wOI8`mOk~_)$)pD6Wc!02mk;-wR?3aU?*?AVX?4xV2(Vay zfn_aJ>BM+awW0+HtXj+nkC?Vm0T-HdZp%k z#J)de%&U-PhUR6y*X(I@pCujeGHI=QqPx6wn+0tz0GBFNRM*3Y;4Yc(DKKz?&*D6< zero3u-wF0!w|MC|sugE7b;D53Cen-D$W+aGz1`FE`HzyHJldXG>_N6q=zwa=` zcKaQ}X+4o_TSmjVN{N7t`YgX+aKn`~OmhoB3)zST@rvkamyViBpOydqA&_c;papTR z1O+{#VH%YG~qP!VQ%^=cbL)!&{nI?%ib(8BdE&?|e0KZq%-S83h z*R2T~e>8U5gy)Wx4E}9XGQv9eBT4On*6Kp(OXTkx{?i+Y}mNq6kF}h^M;py&oq9t z6A(2RkxBmYFFi<;$Ga_0I9)-a!Sm}U>LeD%F*pBG^T-2}bln8275TGfD3Go5j+Mrh z*$BGVr=uO^Z=Az~&v`re?$vG#$uciaLyEZwoJCH_bv`P-8w(0sdNN|;kKLTu0T z^~lX*ve&5dh<0zD(qh43rKusHj7CFOf5n$bW!$6M?1^iFv!;+VSGwDu=*P+3*2p7m zTbDm283c~6Z!Km#@JidC-Z%JTKP4FPH;UQq)o5PfX@lh$I5xq6UWJ{+N5HTM* z3#}lDo0Cs#YVlXqCqZ!Q(qL6Gxhh9ek;tDb7X!*dW$gbojtutiXrP~vxPEh2vT$wuxQ-HQ ziF-X79C4npb)Q~RuGnkP0e!w)-FO8z!k&o(UoIO-tg}r)k5>TL|Lnm$`Pi_4FA&T{ z*u~96UH7htJjrILHRhbrzy>TAo39ag$xQ<+0r-~!gr^7I`EHeN#q>sNF8`8kBGCu`CB}e3mWW!8EP7Y=x*s9(B_3Z1I{JpSWH(Y#h|Z{aceo~etuSs=|MhHFC=M1ZlCE9|U-i?=!0$*2I>}9Vm;L(mC%Eu8WGdkB(Psnd1-fqaTT@{P zzF0dhy$gn0>nrWXBhO0F6O!M?9P~*{hic~z85X#xSa6;A$S|&{OX`#(*)~di9=1om zz|B&y4+7^0# zk7BFW)=2KG2dp%}a(L?zJxyjAQ1b+lYSzh~h--W@B7MQ=J4E099{}h;7rzxy zjQ}nI)d=JWlrfgKp2zaF&td)9|BMSuYrxV;j8EKy8>b$@)l-jSvpN+O0RYVR^O6BW z0Dr0HdI%8O2??-xY#%_+QUjD;GtW8kzn|4=FfZ_*mk^j2{O@-4zf1nFe;!@_$Q1lH zR{md%mqmvP0IF9@e7W4uWonMh23Kcl+rHMfHAPo@vqTrusX*-ypcU$($puOK=74t~ zz-<7ZnPsE;K&$GEdJ8Zv{Aq5=Tj+eAfw<@#+l^O_{Yzte`x|;o*)-Pab^~o%n4uW0 zjLT9N?9Y+FFL^y=HB@(99K_g$FE&Q ze+$5@R)FIIY!(E-J_7wAzZ+WpH^2Y=-+cc!u2jw4sK=04{a;+W+dgYjhNosSGg?Lu z_8nSOGD4$SXUFB>ddh8GUR;*20`suK1T+7(e`6pkovhOVSS=3p?GKb>SQPsQsTU(^ zK^1uqu_S}$OyXj&eIKD&V3|m!pj-%*sBnBs=?A`V5&0U{#y_dwhecvgP3R~^wGcDH zd|Fw)?lHBWMYHd^;$QNSOv;2*$uX@6?Qx;lSVmptLt6<10MrCowW$sjP%S~KC4d#k z3RN=!CO5FU@fECI`W>9Bme4G(W3qlXZk&D`*G@i)&872m`vDA%SL-4IJR#5p8n;UV zEQo=goCFUgowgd9_>YDNdfhGb*z*mk%n@CL zwx3UECGYuQs?ex!5Ae*bcbf_A08Cp3D7};@-+YF-NvWwwL#T%LWQf9R2Th|GFw={%5>&x=^pMTq(uX^jxe&m0{uq1#|Z|@*fu(+TX z1i()3i7rRVq0xU80KWRM^Cus?^~85lHdj#J?C8J4j`nF6JbE!gqMJr{6FOYPQOJ;2 zlW_VqZIV%3EEJ@b-l)lX2B|)Hw9SACc`CMhjA+vA?a3noGUS=1F%I#YCWu3O@v2I|Q)GZ2Ju1aJh5MgS_X8UfW3 zs(KSEo6lk8x%cBNMrf8#pgwsoZk&D`*H1o#@zPl|)oL%u9|Hb|RQ~4yM+*|*;1U7b zAp>Teqj`M*x?VT0w0}Qj|E2vbUEd_Ja{0Yzu0M-L1Whx2z9KMc$F{0UWNYmAk8!4{ zO^hNLryUbpq%fcM`M*&sw;b3POF^f~blGLqYSi3xE!pO@&$Tjsjg#HyT7p`U0_5+|Y~T}8FWr#YGac*gDbR)Bi`x1J7u9!jJ$^A9{QE1LS@jgHW%u`3~)gJ z>?#Syfj`fRu83bh^L;P;`V-5|qnJ#l)&HhmT%Yrdv@AH&`D|hDUThJrJwuWJxN!w; z!LI~|enpaJjYvjP$-JFIfo0uO8F~kWu7)oj0mFVcltkai2y6h7NGVQ95;>rjMCOR< zL*d3!(Z{iLdcr=$R)qwrr`z2EY-93A7n2uA7@9?jNCLxtkt;x19LCh22}cr$B5Ek^ zQgWAqHYD`R$4)|t%qnHmtmpPK)gmzv3N$i`B<0opvZ>0}(jZL@qMELA!Pqh&ZOcH# z(ez&#quP2emY;h+&Y*%UuVZ}j9&Da|44WtJ!Pd$x7*{9f0{q+gDuMo;k^qax?gG}K zWI*Y)`$f=fw|c+R-_IhjhPIsRz-Vc_ErhABBvsW9kP=j4GfCq@@6;v>{&T z15a{qQGh>}SNVJw1y&6Lw(DozJCBURwXFi#^L|eB$^Z%DpX*G}^J4tHWhwkRAZw0?C2;FDd81s{qIcsbQEF9m#9>b z@X8XKrjYe8>?%?|M(E+DFcF7ku9;RuPp!zy{>t~?|DqrM+n@X`%$ENHIfXSZ@Lv!D z3j$!S+j*$tf9dt+B0jykI(p*XlW(h<@rh~l-?aL__XOfmy5^;y5Fp+2a462p7gd~_ zj`4F*fZizAY>DJ9!WkKn))j`F(3>tMqmE?_!5O^Dz- z7CYt{Rh6gn!jB{awex*?8!5cj8WcgrJBcC}LTiKDC#Hp--hOfahj!gmr;0jir`yfsOkmZvYuiuT$GcUx(`u(`RdUr8%Jph+k`Ri3x#bkncfYT5X zAR84Hq`*xf1BSeIsA=F{kO6z~n%yD;e2PYM@@`CC{bwQ9z5x07zXHDaUr=5DB1ZKX zBNEk!r~r)65&{U(cTxa*NB~!oYDvVl$Vo<2qfBD6FqcL`Q<23c=Ec5mYKKChAkEBQ zz^?i&uovYy5L()F)LkUFC4VQ;lZ!?VVijAqZlH*gmaxd%K5Xs+97d@20ji5XME%4G}|M%(0E>)AWZ+LwD9RPkC!#vak{ic8m6~NHr zF9#rZ{(vmnN-%4vtH1uY^fe0q{=a_W6|el3mtFW9Rej^EjIRNc>#YJ{docLO8;cZT zd^+FV*x5S*fc=BJH-#&Ejm+qea|!}2zt4W1MVZofy(1TQxi$msYA=0<&}9Xi3Qm$E z`orZ@lrv*NS|h6IA|(OS{!v-)uVh3Cl@SxEs~q9?c`RW0>R>TA)>r81c^k>2{q!gJ z0$Flvrr9T>z@%?p^Y(^?ZPe<84*Q$z3092#)Yf1`$BM7VMVX0P7 zuit^K(~o20)I+$s{!lN_AM)HR(jd$S{^!!arMY840PNG)KIgjOX09`K(o!(bKE;F+ z^{@Xvd^Jr|{JCkG?0bIk{|A2NSHMf}!)WUYNMfm)cK-xIpdwK*&wfcvA@aCC-%4xx zm-1dYlQAPD*xF$`D|WkBlBz2*KdPEw9s1Mer#ZpC-Wmu}^}0vk>}G&$MtA0ga1foP zLmEjHaWkAV+*ckn0mNr57v6+VpEKq)4$+g9bj;LBR@AyRmDP?%6{3nR&ou3wk1r* z#t}I%trU9Enq5@ggqh|Fgi|EJ(UcINCIkXWPyt**ed2a(oqh-#XI_Y_Cm)>&?E8KW zihvRs&_x222!I6%upk9?V@(|c zpL*vL5B||_x%=;~VDnzt3f2F~Vt^P%bmslkJ$|5clKsM)k)c~!RqU7zQjQ#oSyf6qjzh*?R zTFNm_CX99=1|##fp?b`hsmZj7&VgBdHsDP)I6Pd$K*b5BJw zU>4vXN)+?~|Ah+R=n?{laqUqe07~G$j|Au<0Qv}l>bVbM^!fjU>P!C#)#h^;jW}Is zREi7;>LyBuXSU>IaLF09IQwhDz$+oNLM!!^3&aEuWI?r>kTvm#cH8WjEe2V4)&Zm# zPKzRJj%^b;nGB7csi@qnxGq_5zpY7s1@Mv0{@Kz|6P^;1p%-i0D7zc zm;wAt;GY`wYZBnM{^~cp>+##GKZVIgC0ke9n4i6I|3B#M0do&bbm#?ce(J>G%oi6W znSeOybcto4S}-{wxA;gtq9ZoY!%LRuTA<{I54B>;eU(&PQZN8CoA1Ceiu8g#4wUkt z%=Skq3}_&^HMuLbM0f#4>gyNNo1f&Ax-P;_>P0*L2M+-csuPF9>>Baz%|?~!^8d7V zlF?GMzp#N-{!-P}g55W+r8#n8NHo&Q0;S>F5Ljr8C~Z$m22|~kHd;=t0##@iSVFUU z4jZ?;8qeMO4XwX`1@`{mA*4VT8BqFnK>{oYft$6~=pz71M1cO;w*kyU284f6Z({W2 z|ANtH{{u#s-j9)Np{lA#0*or6s@gOXS8Pr|UlER(gPk6&x}^JEYiUms^vIS)3>T>Z zyCx3e%hk3TzhAMf1BTnztq4j9kmKG!IOs}!zE5U8RHc7rwFT+tQB>6*cE*Ga_sd&0 zbjnUt7G%wKDEmD4nKGN4{9Lm4_wUhJw;uJK++D(;5nv+K=C6OE`N=o_r4RpNfdHrr zpudj{1hq^njt$+>vA*qZr? zaV1XGaJ`T*sR0UriusP#RLHJprkSm+A)y$ddN4+^L#i+bl6W9&_W>aSN7RnsZ95*fFr@aQFMh;dZfXiSt!l>TB$xr<+IPsAMzW8fc`uwk;y78r!01%8+ia=-&FhrrLI{W#w@QaL8^sRYr9*%x4 zd3D8FvO2O^?6{SG)RGPk<$6dw#QH4l1Bou<4Y{4G>z5B>fpBAT&V8n zUih{jof+Aox78ZfaptIJ76%3JZ=~;P1teh4S!1R$5Vz1Yf{svS(Nzp(NNBhl_(X#8 zrQqf5QR=VPH%JS~u6aZ+LJcj%yfH(!c5uc8DW29~zWy>NbjHORWTQZm@#=jNQ%Ukv zNxuJ49l%obq@?5lRxLBM1XN3{GGOW0d_m>~CXKZ%he*idd>DRFJ7xfJp8c z>U!W4y3Uu^5_-|iGF$Qi*%%8l{hen~sVn9-^3;sDl0G}m2P)Y|#LiR_s`_I6SBgMJ zOZ%l~rJ~vdBF`Hbo;Q<@?oAxwmfKK(4sBjxl6 zma1Xmv3A3A?+YfJmW(-s#NVN=9%c!n> z24_F`^Eh$gDSYLjA2!uXpj^=m{|4|Lz)W9!+#(Wi@i;Uyp;G~L#UJYXB>Wuv{tMrC zkqh;?$8r7aW8nBIR=)UuVCi%J4x{UzM_o43tVG~N@+S=Jp39Hr## zV`gyEF{?S#?u30zV|Q_6R%5vG0r1s&E%!%=zzu|{S3oEkyh){T#D+=JK`JizIT}ip zr`2}WuT}d1!KJozFP*|U5k<}<3mOhsf6+xY(n z>*DFrH$WOlGiiZ+ly0JCqPpKgmNak#i`)Pl#NLO@ITbvSc0_$$}mrSKW) zT$YmQ7#D*eV+(-@3&c+@8a17$+TadtRk)~S)i7)VbdYWib zZvf2}*lc0t%l{d-zvnNY+PYjcGwb`(fTr~PL1NJtkK+yOyMFHTuIN*=bg5yylBVmq z(P$LE$I5AJ-t&#P`pUn6YcKz^*u3x*Hf0%`W5L!~ur(1(ng(?f{8`i-BIseu#i3qy zPHJZ6h<*2Ye4r7ENg8aOzio8%XH*ifv!th|v1rRmQBw_b16m=B%`DRlr{_;YsK?|T z#A9a__p}ShnBqelKkH}?*Xe-Ra=;GQqt2Q1G6;GO=vu2u&l+w&$KAdDtiw+fb61bm z{(^sduL|!zJ9^#QUv>7}3|xf)n5+-iEglO3VD8a?Jr`Qn#mDb>^{ua5t?CESOn`c8 z7pwnrNT@6J3^HPnmGm*pf(WuT8WOiik%*va!C`5On4j8IQ3$d@+Rt}UJYi81@sM<( z`}`2lv+v@(cg#Rb<1rBb9*Qp!zx0ysb3#|Zk@h$-Emy+-sZ;=>DjWvzyYI!cKQMvK zLX$zb1g2k93oXg0Vx!TZs;)#iK#Kh%96=O5k=+bTa`0E~147$wp{ggeP7hIK0Dr7> znt`^rXl3<8PDmKSgK2?DO|pd5t^aH3A>HV%0m3b$=|(peE@SG|Y)b@;fypLhG9Blt ztDnLxzw_s@di5h23E)l5hLQnY;D12|EFK4yASkI(H1PMY?K95wUmEc1=lt{a>HBf* z#eW1>U-i@2xa)P;9G%7Hq`~I6!PZ1Do&a?tXhd`?y1UQK;9ExA4jxB2d^Yqmn>~yf z4{TR~A+AY9SRl?%mWZ$|UGaUK%8zDSsD@67wn1Vl`ZhIyqL(pgu2fSxinB7q@nKSL zsT~))tSFD`RC5-6&7dRPiiOXRbUriMT)(dzMeMX+^9B#b*6$`qz}?$;w)fcja`WQv zd+mj%2ZH}Tu+M!t0Sf})&;$MLn*Yrr2Ke-Sr`8_6ef{-BGfMJ*Ip9OeUJOypClwE# z3qXZl!%WdLxz={ONWN^Y%g3EqG1hTPK%l4NI#%69zm6s{ zFkv&g26s(Zr2m<&1mwvE(|O+Y^`-I%IyjANf9VtmEG-x)c9R3KqDTOf!U!0fLdji= zN=noOl1Y;)05V(Hu>fSP>{L`m-X2rZ?kRw5zlmi26pyQyo+ zkgwuM5v(g?OTQQwcV6{kPs*bW(ZRbzfTo#_bIll(8r9}=IQO2P#rmb+=^_lX@!X zX_~fH!HyNbQHg0*o5i(>=wqOJ{e3bGlfp?)d)}9ZnsirMpL))|N3|grWq&aq-Mf0ME8cn(ouELlO44ydY9E7kqPp|jYQsS zkN~7AF$Zm{f(CL*#ZZD>M&7M9U&+wL#q3c_BV&Sr7|?IMj73#bbcNq7Tcom4h9Y^# zMRwNmsD+ZyK~!QubhZ~dT|heKp>Hv_L8JrgRCqcpoEV7|73QJ|1H05awn8REU8Q+V19MMqrN^rCzi zO2l_)b)aRL)uHLI-itm!&LWX;<9J7@maafxcpkAz3{mq7cdPWfcpPg~)eE?Y3+s5@ zA9&-%`wBR0NZa)g;J>(l7X-ju7sa;v|6lv)xv#A-Ig4g8HOo2{=6@&?bRGm7DL*^T zfY_WqTEL!FJ@sUm0oR0jtkI8cfTjmV8lh9SD!>-Jhp?VxT&%E_T59Lul-j0Th?T^< zfB_X8PZb3d{pUIuqRYGP6IYh^;>89AMytP5Ms%@)R;@6#9q4ziYTKzVZmU@X*|L?(I0*J-s-q>tC^Xd9qcow#U0=@=G8ri5oRnT~stEu4AZU&Cm8 zWiHu&?`^ec16Vu`7~tOx5@5SPe_k>md~MzKYFvH#PvF{1{vTtwu0u z1WhAonhI}!%46VZ%yiRjisN0>P1MahYY z#p5u;nu9i$PQO-1^=)r>(W%!WC9Mqs{hR~GEgr|102nI&-;w#>Tb{o4^xfxI-ZHI( zjd#)fZx0{4m%NQ+B;biKq|GucGRjSp5L=j#KdctOdLXR&&(ekYztKvs3m ztFBtY9TAE(l7p)r7(>CZZje}2m#ng1=o}XsIiT3GNHQLh>3N`Z-ym8~A+C22E~+n_ z)0j3LK&V+)sP>My&=M1`r2F^7B25z`0h~ul!YL;t>veZVQW1b#Iei4pD$w6@>H%qscm>$=1XexV#)z%w8 z8bAcq#wDD8-(MXRfz}nBRs#DA;E$O^$!>lv9@{4hW|06TLSTp&z;2KNle3TF+LQ0b z)tCJlY~A*1jGJX_PFl0TxMU5jwS&GUC+-hiV?tZGkkV zj3uvw!eWnZt`xf-(VdmT4m0M(;{Y$;WmlK?djZ38kq#5{+F(fLDca`l1u%iFqTk}1jgZBRas+{obfTxWsI~BQnF4^P>-;V z$zHa|f*O!|Q6x4YUYt{KN)3`^augOurdOT`#1{>T3h{^vgiHH=adBrPhmJ6D=bJPk zirJ@0W<4Ql!DuD=x)(l@0a?nPWG>l;E7JQe`H&Gk7(`tV!Q9b-?qK{VT|J%Z`M5x( z_nwCBZD6TNMA!d7dwr`vp|E#Krzic`03=4weF$eh`Oh-I?}2I;$X|fa`GNj^5(>u| z+|PP$2pQnN*Wh3G{m)ATX!(E1I8Z;|oPGdTpZG(#`qDpzt&1>pZ1nB+5Jm29jz5CbQmGp?##E7G8woPIEro`_lUfv`e!JrWez& zBj!}6Y7B*09Fi4Uq{WXoPDuak`{cm{!u7#p!Q_q|AUjlPB2l0c7{pZ8_4cWEBohFo zjx$u34m&Q%f{$TbYQ~twbo^}0Vd{p3IdVC%HT4Wo>JOweghK2^dAKuu{ZeQXNP8ff z&|-;qN~F~E*j4d;RzCBuF}m{`(X5_VMA>W-z=Nu;JoV!S`Vac{9M|)suWNlArmaWJ z{@w0-hwo>#)acjg@0(^?obaSvefD8oebFDr((@m|>ZkrcXrB2^jG6|c3K&%tM%DCv zDlbBl+<8T}>(Q0`sTFc@J)jVQ8oSNBN+*_=?$0w>_F-&v#dRqVn4S#Rs(X4v7TRJ2 z{dz`^*Jis@@k7t6Fa!$S&xzR<>QtDVh!FvL>%U&jmH8ehV_T8#HP?QuF^}A5Z4Wdb z?Qs*Rq*?u{hfaPgfd7hNs%t?x9P==o*qib=?h1fTgZ6EFnZNy!x88r-`4gkBotpoR zr>0m(=DO?X<@csD!4$28hE4TAvEIzFhUkgOoVmiG*E#5gY}|6wzLOx(Zhu5~UiRm| zkChuK5(Uh=2vo5(f9L5|RchgA_cwJ6h_yxtRSv3nI?2zOj`q`^osFc_j>Xy&sFg*Q zqMOu^EG~UM0d03e)de7AG}SYLOQmQKN0#VoBt`X!B@BE^fKa`I1D9}yeoC$>#*DG8 zwu|3+^%l_Mg<0U=@^R8 zwgIpbaC`$NKlRT$tNMK^fLWF1<5Gp5x8lCrZ29j8Dr`+^Y)z&{fpwFr=yB|_UU;efijogt zYV4dk{3}CM(POco7^o5rWv6q8ZrL)Cv}T+w41J3DmCRVrrRTUgLzpY}rAXQr$ooKY z)B5??Svg;SnejcO&9w8s?Xpmx&W`avcn3)7(lRR4{$te)W{2hvIb zAYF&jfb`UCma5nD^qbj!f(U@Aw#Cbs(E(t>EYH%r(=0mj$)b?St31(cydRZ{T#Dv? zhVN(U=hlVU1Q==OdDpA&d&Ps}a@VoU_!HX2i-=1k2-_yA%FR3sF_`O#GjxofDzFI% z8BlihaNWCTwwWo3z@Ojf*e_)R$%4{eFI?HW^4k^z7Jc-r47Q~Y0->b52ckqYi`RC> zd;XI3a!s9`WmdOC=08sq>EF&))6u_=Y9|oYdculW{=%hJMn;}sK7p;-zEDW8Xs6y6((mN#g(Uiq9p=egmFV`jvI{YWEL1f zrwB5$REj0)3;FfFLhhC7Uj3$ZYE$yNmHHR_QGC>(_Q#=)j16E{6nU&#qO^yqkLpWv zl31@6ZH!CFfPQSZ5+$)SQLlxJ-fa2OwltWw3daabf%S-m1m-nTb0P}Ahb#0PxF!4o z-WDWg)-g;Ff-%TTm6HI9X`Jn;`ZKkuo$mAWVA%s?@ea-ubtWahJjD7?Boivh z)EnZiqI6|4JD)M8a+dj}BTWjcvCMrtnGi~D`oOL+KuSzUkwhq}NZo;!Ec$`Y98slH zPj2AE=YDx6fb1gyj@x6%F&L_n*z4;5aU}${Ljv>>0v_y_h=3s;0o(Nr@ZJHzEbz)x zKZ$Ek{RGDA_hPFx3LG~L>RQl9SGyb{xEApfgC*6oD!*xypd$;ExnT6nv0`}_qMJZG zL#LwHiaP0h2bH0!FwViH)ri_n7{ga7M-*#em383@DgqttD{+3#hhtIe6gU2--ZxkS zK)v4RQh)VS1ImlE{T>+?Xzqv|8v>{(qbKfMeg|f&u1l+ud7}Z39Wij66#$%*2$*U5 z7ry@1AA0cDdPOZ4)z4~kM1A7u^Px+Ps3qA33+~Q}LD9wt z#kl5DE_A69C;3WMT<=6NNkE-fVc}}X$D7eJzgYyWT|NL^RsQ2Z4h#j+^AZC)0siw4 z1ILLF=pzA25rKW+zl#Xy`q>i!rFMYrrUZC3!PbQrWkj}!qag7n2!x;bR$}|h3QCQZ*Ws0w5Bn~r~`RcYsDs`Ts0b=AW zZMh(cBWR2gjdIL*_PC7~ar!*CPPaU!*sRG6v1_-@eNfN3uoQWC^ziLX9d#CbM!dAv zm*vTy`p&x^>;eC?S^{PP|6{8LShN5PV}s_5|GVv-l}y&qOb$@>f4d`%@Z zvy;WZLUbL=p*8vB$U^_V+Xg)`vH(nC?yUo^#qFk%{=W&1NF&4ED4SOpf=C zFUflH3FGc-E3vlkTSw^)IrHLnVN0<$`u727NRLX69peQH_dJ#H6>~N(ZdC=0u6-6u*FM!N_wNI&$K^2u z*bf2yeFky6sS4OjLg28I0A0VEmk8+c2$5Ee_clynZl-$O=84PGtdCD6hR!qcRkYqtVUXno+F0Izq zJ^(_=CiyHjAXU^=;W!xxwv`>tf3(+!_k zj{cPx^F5k21-rV`#)K&o+q5LO&(thW+0?0fIAUob*1KHsLzi?fX@Y9P_+*r{A>o)< zCq+7ChTsF`B(fm*gF4WY}LS4E!e6XG%{5Lgb_ff0i?s()Z>zd_A~@* z+17-qEl!cGLUs>-VSA|NEEGONB{*oF7a5u0lGj_KS(9uK|K5_)UgaiYm~mrFoNKD= z94}eqklH$CI)dCADO=-}rxM`+AGLjeTC$7pF?e&i|9r=>A^`vpO?B~9^`?jKSXmhe z{5c1{JJ!TNb&Rj8p+o?Bp3A=e;`crJP0Pfs)9U|trupAa2b$gc1Ig((*j}_uF6@D$ zXP6yhT@15VEOrjWrDJwt&ZuV-n3z}{Q@Jrq-jzX26`AM)E1k4m?H)$c9Xh)ZZI@i$H%Kk0s3v~uMXqyw);pc58ib25PDuk@ zmq#QfbSSTdDg3m*i4q0z9Nr(iEEr=(@hdIL~sf;cE=oh;< zKEeiNqkR9epoS|+KRWi!FNA%SO?24``MI!d754B}B!CK|OYhrtFn?T$fg!+u7Km?} zCNpLX&y@@t=T#GIhY*-`91b!W&;|7Og9z||f2d*L5F((UunEnF3)li};E}!V>hz6JV11Y5VxaxwR0fkv4VbO?D?A&YC6M7+~ z3LZO#zB~By-9T;J!8^-wM38$vc22Li)lqZD&wu~DZ$P)i9~j=ceXK#hek?5rrkTH+ zRrNPtkKeuac4D%U%>QoIqC{rzxeRztg9wofkP&(1o-L}AEH!}J8v&d-U@1k&li;SO zAFd&eo&zhzhDwrOQ@Orp9)(Of=Su=eA=^c~}_-|OdR?T^1tW*uWqoamqDRd$e!$cZm z^OjfQuS=Q+ z#J6&J1KD6O+`gE)fx)*^ZfEIxAcu81yqjLS#SSA0&@?NL-?{R30RJn7wE;-s-#Hgc zNB?nL6aYiz|3mU5J0&MS|HChOe079}&`cn)_y2%iTN(ZCo)ZfwEz3(dk2)ih3o&mr zWPzJ3r3*v3LoBwEPu~;Wve{GyJ@juQ1>+jP#lvY(9=2aB-%-lC4-lKyDVj-8s*j^%eD8K6O6Ul?K8{|I5 zJY~XOzCEcF5?PU?k;%g$EOcTEK|FI}k{2XvCsB)QRY(_Y{3qRHu`#bA&23|1{Mro^ zXI?43AJh*m;#?kyoWLrrG!1d!d;;i}17cel>=wci1XTOxv!FZ3c;jka7>&c*Y+c1@ ze0f)@xW}>b-xr;@7d`%36)@|0|C%A&;$PEs3=XS0V5lOX%Pep&d;+$k2=JBvVr#%? z3D@rbPF#8UPhouWZj2|GDgx@D2FMoy+QHw>xZ-fBn9)m|1}vrGFiQkTbE>Q6i}E_o z;(g)PN8$+2e2$<3?ZF2}wCW(58+wyfHw5eGA2(BG=?0m{60G`BO6v<0+5x=TpJZ@K zvccT1FBgyfp&t$}IWc70N#V&=JoY26zwNdem~04!>squNl|!~50Jd>rw-Y5{Uh~GM zFMe|+_1S}O{-@=^k`n?RL=+_6x_2#17Nnn~d_a4b)ITA1>RBoP58sIZW$vdZ_R#yL zs{gSvTR3qs#4iFII($Mi846u>LCQ9BHh$f<8R*KYsZv*&GWRCGjT`Gk|gSM83HLu;l&Up1w2;lkDNm6pLcrqkX?Tj2DE!r)Dsp>WjJ99hLvmTV%199aq0PUN&=DU%*VHo7$gv zuep2D7#oTmN8)|va^^IP^#KNWBl!)>?IM(UrX*#xY zL;Y%L<@`QPfT~(7s&`)FC@HWFgk2zs?vZq4hG@b>$r^n6fVgAQb%RLEMHWMNL|0|# zWC2Z4Nc4PWbnTbex)Ds1bg?C2bIoKB-h;>}(p3)uMeIT_brPiOK=o^OU8nH+2>piH z>L`3>mEb>HX=zq=(aHw8$jc6M1Rd9qMISIH{Y>N|ie#3!HJp)n7JD2NQD^Q7b$nEe zCDi$>0@<>4r4#U(`>jU?ebie6hJyb-LZI~8dD;v#04=?Ch+JL&Zr+xGlC-^RoBOVX zp|9IdGNA96`+K14`B`K_-}{$Z0sPON*r}>2yH|ZHfWFSIKlr<_dHYx4)O-F1$hFU) zu7HsUmMU6)(WTs&QAc2A?cfEFqH@K~LDZ@)+v^|Q{9SCX;Ynjut*iJe#+;w!qI8x-WQhEq|LDhF^3v5M+yj{u zd;eu$ceCerB83P!-{+bDw;sEDKA3t+iK~aF8jFl0ZumCE#W}eR+O%o;6YDAgpQCxMI;%N_ek1@-l zXEGd!ah8$1FhbG-5cYddb)Ab&N$8fsvm~3BGNVG!-eX+^HqAwt4`&o-RZTbB<>Vh7 ziANjhfbMR>g6R}pB12q6r~A7J)xKuDtKj&kf&ISUmjL~&N_wAse`r;|^jiOY_<1|( zg06iT+A1)wGT>nF^W1aOz)~B)5JfmgQl^r zdg7Fabc)2O2dZ_~PxNNNyjT64X#|+s*aXQ7M@(xwla;WVFOyPF8{E3mKtT=W4gK_9 zrsN_h^`6TmGE#qsVU+(tLF$%87_g%!bC4-skZhDbXMye)k6qvc+BN{3Sgs%Z>37`u zki%cVq77g{0PNt7pT|wI`17kDIs3*6^;t+$l>c+j?-S|YQteHS0 zI_8$ZPX_Q+{u<5pg$ig;1UMITT@ChU2kaoCncwN8+vb9FF3Z7{o=kWaupP5AlN|eL zTD?=70+r#QWFB#Pn^*`bG|08BNRWB$SLosZNwZ*y3lW_@6wVbTGw*}Rwb$pK(5?Ye zA|{YrmPHX8T1x@a3nNiZcScL*h?03)z%3p>8+rzIX(pZ!6Z<}J*DmthilVEbxgZK& z99mCWqQXma7vW+R+#v>q{)tc|LpE^u2dnC3$(BGA%iji_-@y)FYKy?UWWl^X0Yiy^owfq_uWR?e4VPd2 zmoPr{0LBwy+z2KO&@{oERh*${OOZ=5!i_{Z0qb#{;Lu&lJZ@Zg|X+E<34sK8t$oTrOaZD&D$n-U6JsfjxS)|o17mMDT1y- z%Dshn#uSh+UC+iKT`ZWj&VL0^N;6l2jze(YNHi{#7FbL48Zb4C-0D7Q88RpQ7Pu>I zyNG=qGZ-y;36qvMsue^pXUsB76&XbQ8o;>+6cQ$48gcsqU4fRucJx1RiugsWQpET`>R&AbZmu) zJ_se^E1i#wW0dj;W;%;PO9%ttss@Al;{y7-_O}o8YarVPm_0D>s@l);)Kh@?V*lEG0;s!B9w zr2Cl~K&>sLxHO?{saNr)7W}Ib&)5SM+N#t%t&x3}zDKLdD$4Dt*IKROK)m8goQjQR zJ`hR{;`NweC=O>;oSD>$ReEv}fVY>>ntS%ndk3QSW*h`6Hp{o4;#Zws#RxM@*#}~} zuD@9j07n?)_X2v%DgXcLzwbpaUt7X`Q~Ce6;MTg2yGqwH?0VO7gFesbGShu)1F*;u zkcHfIboBnyHWt%H^6CC?(X6tb_>|*6D4k(Jc79`-4xlfphc*GKR5a#l2io>IFPx+6 zoA>i#oL<%Oo=T*reei^hR+OUayQyQ?&k)ro5R?RPviEF}B9_QEAE>O4I9-s11&<(4 z3b55(QE`SP8ylrW2$hzi(G$yF%%U%MM%kt&mV`9Mgn>ntj%&sp%(RWlI8bLxcTT6O zsxI2ms-&P7?_cei1a1Dn&Rd@>C<4s2D!t=|RiYrveYSoTHfLJO8|0+B>I|B`WujRu z8V3^`y8-_D!1{Ko`{Apu>*DLWKBI42_L~ftMFbo+RX`tsuu~$Ss|}z8{`GS~4dDN+ zstVU0_+5DZsh`AncqI*kbJ#-`thV&Q4x z69!$7NTpsDx8{l8r4)|#!dQI~VJ%Voym3}dv}p4aoU-(7=lDoN66NoIVaqibM#jU(_> zvSgcS&w>)py6zWGvrz3CO>%sxib+Wo(9 z>CU4&Any03y~mzEcp6A09Y{uKl!*&{CVk?C2+#;2O@n6n^kR*+3uM4{0CArw;4I)< zGVt?;a{k}G*OY!&GPmn8yc=qC=eK=`DWKopn@t4toue*O!9J75p@xj!6fjnkoFSk$ z0_?iZ!fVFoUxepg{ugoPxBq)IS3ia&0wVyUil{OVA3K&&#r=vRzSp$f22%-8W_;CC?G!>t5WhC!DF z0dVAq0M2-Ri2NS__|(0p*3PYuUW#UGBvMc1|AVfvU1T$It+)g3mL1R8VMjeHOI$5| zlY+Z>d1$f8@xkR*44qAvB`U*SlU#inth$vQ0`tGg~DD-TPe= zhG#g;wrJqbjy@MDpX1V^*TnouYVYVv7|>^jF5iNJ6pXQBQmOvIi@ptrZa^AJ@Zh-0i2INPA;W(K1cd7ztMrTh{uXy;5m6eZtVQZrU{7VO@ zU!(!3$HD_(KIi}Jb$|A|A9?B85*~omN&delH&PF8krn)PTwP)Cmy)#HD)UXIdPz3T zu5{A8e@(QOO*QTbwL8C>Aj!fc!WoQ>xMx)_vsVnn{SC5lwew0>sHZxCckk6gI~JfY zlkpC-B6M~Lbq}NU`(x@r2=7A$MBO>mm1zL3KvBO+{+#COZEyJWKqMz*v_HdCNT%CB zcYG|_GyPY$P^7Ad5Xzj+Q%HGwLMc_4t=urG4%uZAF)PN<0c~?$)J>t=P*`5rWCoF` zS0*11!gXD#_sR?h3%(Qj*qY>mk{gD*I8^1!dU^H;qiD$w-5Z-y6x1$ggl|Y8$;}Z# zG$N=$OwK+Euqpz{KEP7~lt%^R&-453fd9UJ|B{ry^yObS^zZuG3i{dwhO`O{X%px> zW~JlWXTW%n{3!a`1LiRdoaG%bD-pa7yfMr_H(82Gp@FBH|KCj|O`5{y* zAoJb^8ih$%wXtX*lsW~{^%?6ep>0F&zLZ)TyvjluCAC$S=np_G`PVH476=y?QzhYv zxQo1laMN!6X(j8411W2`v?Uwg9xlH|MH zGz6qUbN-RR0B0w^Kg?u6SM1-shJPZ0D4M{8h;2 zvw);_0JCjWDy5JfL>u`MM^UZHqxQvf{qJ?Nflqf*MV z;Ah|kWfBPrFAIc`2-37T>iL0LtEcF-RWZIsFTf;I8O8~v#5v3?z8<8)>%lAl=Ss+( zLL=GEhaU*=Ux8R+bMEE$t$rPV|1uEhcL1nC7v+&v1{}8*fFYTWLr4Jt;Hw`zzkY6g z^fa1rhx{LVaHC2GGNo~^pH9fk$6mAOmrmJkGM15H_r77`B_kc;%i7Pez0|2sTYLR= z9SZ`*SU4@e7hS;BlPsX3dlKm(#X*jl91jL`!cFe(Krq$XwPL{4-BUF|tVtj(t&tL|R7y(+bhL!)G#n zDQa54!c0}ND2xlnj%|-b2fK(i8t;hAQBq&T+JB%pr@$@Xyjzu+zSJbqVGi6WsaI7m zxG|iLQ9zi0)_SrB!!RDBbX~!tW8Oc5t>u?A6XE;mxMs+=OGpG zwNL*NsvBR%iZoast)f{zi^-|`uyyJM*f?x|>-B7^83H~hz zlhOH;qnAB(@5nqix)9U|tSEB#yW$3^G z#4)(;4ppzsNnDL83*dx;Z1#Z}<2$%B-vq|;rp9?gdlPtr7#0T~ODafo>v#Ca0$y>( zx1uB5#K`w8_Of6*PHc*q$d0X~zG!_|Odq|PCTr`Uz6wLSp#dKqp zfh;j5F>X=T2ji+qRL4%(J$JAa`&V)p2scP&FXCt-A&DJ|dJ)MZJVER46c((?Pa>|# z0i|wpeG(Y39c0cFy?~d*NY_;=)Qpc9Rl71NHoli!FSU) z;eh%tR0P(S@aUiZ);phm=g)oe*9PLa($X*oBFE@)R0)9X$o~sL+5H#PQ}>>J&4`mT zyDtCF48h#BE2Ust$z|`RXW5YehQ7`t0!s`09eDPU{9it3qOnlZ`AYUE&_qP;=RaDTX1G)|Z`ps7Ny}v&~ zWypGmy5*~`*f{whZmivdtxl$0ia2NAxZ#$9521-Cvg5lKaZ6!{6_%9QZ*gH ztI+<%Fb5&3q3p`Zy5LZ?1<-V)1u|PAxo^i(QRA;(GeF*b4h7`yGy$%Yk zRJxTxMC=@(r2jrCxWr8OT9JrdMG0t$1aCa+w*7b(SNCS$xaWVc%kNQ&Z`##ytW5)8 zefEjFR$l|)KcTx|3+zrBz>&Oo7cqeLcZ1#kU-#s>ljlz^y#&o<7v=vfQ~^;?7SLqR znud8_t!E+s%z?yGR(tV2i2sOFo6&L;9fLvIX1WQaZzxSMKO)xM-S*o%upga(X?lf!*oE@ZstG=$*$HQDA>jthRu`rVdKQT*c_e1q&hJ-2{82g66l{r z5QKk+5ClWL0v1HTa8-pqUbFlF!uS5)5`l2((RbtQ%2}*^`j>!)7*W6~x%JzjD#iFA zqnzE?tiZoj0G8&Pv>r;T0Y!+jKwo?BB~2YT;=puy#$nVIKA=H5Q8r&Ls5woMBQX=U zwj%|bLbpN^r^GB2am=J|B6bCf$1z1(yZ8}AGrD+c`4w+`V*T_lzwi3x5>D#@`-?UJ z98V8`KKVZ|Q2zf%zy0B-*H`!in#nH8|HaDljjUdb>|eB*o0Kl=&|~ec^*P6d!S>?lmjf$J@Z2&LpV3q89zk6h2C~2fQX9{F`4x$;?b+km1MDC zFA;&CuZsA2LDXV^MPnodW7P(i-RlWc@1bN#dZoB1G511+T%xb4@=*22!I-xG^*WXN(4xy2mw|gN2uxv zR>oJca{UuHjS5mNW3qY+HrMaP*6N+uT)v2n(b<_`eYXjMzUQ}F#oi7PFvNf0FcSfO zf3~w17GjGzV2` z{uiIZYR7EAf@&1_U(YL;b%gTeQHup@AS}7^5^?%dzOu~MF5Y*?rSM9z1k;7`B%f4u z&%Y)bjvv0-M_6+Vj;CA0RV3Dzn#bS$hTES0<@bH!SFmUUSP%f%nf!m2d?fz-(Cuq4 zt5Bbg(*Nzs|Gj43&m6j9*vTln39cmz!~tvV1}m}onceBEu8genz_WNVgIHh@rpmSx zXWnB0y9Tyu2SvNI)AsHgkSq!$)A|<}4*+HW+F=>He$Xld=Xa((aZn^xv>6|>zfB2= zj4?myHOX);mF<}wauao^775nqPP&13kP&)vBylV4_pbXs8XYF!53|VdYn)JxNmUt% z3rIj4I3+$MuPhjt-X2Wq$UJfCdGlhu>2CZF*9l-3kq!pua|Y3sxKwP{p^J9ty6uF> z$}_HNm7lbHc}wM+p^1Rd#*tceX!y9!MPJb|ljistPYEV+ris85Xx47U!vNq}nendupB8h}k9L8MK7K|8NCDo(PhAgBN?P1^=qwE($=<;ez? zZ+vcgwN)cD%V)85;x25h-i58zi?}hmh^AWU1@hYg|9vWeA>Yqi%^pGo940lu5F%if zKft`76|O~11oX85_|I>e23PO-7BtJJaqgnzohOc$=V3Dj}0YXJLrS~GZRsfF?tPSTnY86N1{p*Dv~#vA)BO0Tfc6#NNlve)VOy;~UI%wi7x30iTm3RUlD^~IcNcCT{ zVDG-7bM3IGf!wIM;*k=gZ8w%WbWAmJ(63)$uv0;Or$LPIMG)sPKwpV&E7-!KA}w+b zn!xrkZk?mES4T*6QSUnS1dHiyG3Ey`>>eHl2PwNz0r>bmz$hqalOOYH0Mx?HA;ILq z(9Z3}ykp7Q;cZNkD-e{-AK@(wS>%@dt8J=a$#K76chUPE?tKiQCLLU(^#t)CI3Gv(SSohe^KVoF;ci zkqFpnTfnT;0B;cJ$$(NDKxvzrror{wzaGuXS)6|FU&E4Yp>6~t609r;jXnEnY^TYo zPsApj!7_D>t+s=qGx>8QfNuQ@Q-V(3u?jd9DX2+Qy^at)mfG1uM0qP|1%s1nnIsoA zCy5jwj$R{a^{1JHeRW^u730;B)L@4S)t4XDIW*U_zJ7g5h8W?3H~w@E z({5WqP89%{{@a{=C!fSOYbHYTR1URFK#*FlrS76-MMR(`*CIMeh8O$ z4DNSI2>9bVga|051{}AxfSvBctagA>8vsevb&ZYlFM+)HCvo;Y|2^1jf)G?%d7h>9 z_<2N=9#&aZqTT&G8N3HXY$i_d?n$egq$#lN{EP<2#x&VXJ(eua)_bNc(itFosbQSE zBrhttVn&>~qsNrksgI71pe^Ji<(bP@K>!>JBA{#aQ}hXV=#JH=D>SF4Rg@jN|9e+DB^i!Y?yS+;kqG`;6}O<1 zT+-{S@S-X}BDvGOcJbGMB1*TF16$HnssC~5I7m5rjMQ3^mBc101 z`;{LQbVgT}ZgfG1blyY<>SP7oZ=Y-Z#jMp7&87SbH1U%>DcXvYxn7j#2B;z__2O9( zO(9M)stD|zW#bA}3?ZflfK9cG$+^cfP+tNZrJs+JS3pS)-39#p&zb~SzWON$8UQuW zpv(C(r`fVVjntA9hmNLcufz8JiD`=fs_AuBEyb1raD=7F7qPVQC9FU9n>f348k4nK zvAKRPuC70V&FakDK)>rb5AsVtYaqT8xBC(y;LqDpYzvrI4dCC)w*!<^0Gf_`vQ*rk`vC7iXNm}>#F z58p(Hjy8bi?Jbh*r|MvM!G#%KjSUNne!2hTc07HR&*K20RNWA-v58Qg&>6Ndd zj7Jg_05h+d89H-cX(_Gwv&+==UQxOM3)#`c;$#KNJWW*YeQDSXl~SEVAS}#!>M!$Z zJdGT@v`HylK)cish4h@xpP=VYQEWL8RWhdJbrdg55v@VUQt*`a(mVSJ z4GGmP%l8WpPiz&21QAzp&tD@f@=>{X#xI00fKbTzitbLOq!FR39638pDq}~KbaATv zK!2XjsSdsm;k2uYQ(Ptn^2UuHvGU&tnw4`Huit~wHWC2lQ3)JouyMsk1lZK5 zHon|4FophqfBhGuC7In5Vhk?T=swMRoPJJ2uo<_?08Y&XnY;u>@*GCvD_Fhyah$Gx z70vQlY_8vfYbPJU)s=g;4gBXJ1$IIN%-a@lSkwSr`_@Ge3{6p{*m3I*b&@~~sF>`iV`e;(V(KdC2TN&)j$1r|wgNuOb(&l5m0;N1}) z!GAzS23j>At#W}DblHnkJNfEAOA%~YN~1WFKBZC+SY{^5{!Ouj5oE@s0IkqaZ3I+N zgN8t$%PJ6?Lfj=)rdfzs!#dw;kw8e{Jdgv~X61fpoR0IDKXG*=DO8j^IjA$GjZViL z0u{%n?y%6yZw&szanUIgu&&l78NiWLJ`%%_ej=v(BDD``?+c|(X#4*gAw(L~=N`>K zmJzGXyXSzXcZ?n8h~Q2Ax-EajVnz( z^$_4>dhG-hfRj-l+;3~UacbxdBF!Ae6wS=THp@DZC zhdUN7Q9drZSO8wO8XEUoEO4RAaF;@In`9C=+cQferPUHys>-+|(>Ezq8`8#w$yG`~ z+U+4cM-!?LVh2xAo&i)0Jrxl&eX*06OKyy>69kNMSoIA{77@sNO`-i0%-Vzw5KAVH z57&5-plcO~y&_3(tif_cqqAD!+g(b=n<%S$06;3(_79!dp#iuU@6_Yx-|s(T%ZY7@k5(d2Q+QUKr?L>AS#Gb z2dr;CgY{?s3+km)*f{e-Tt4#@wnk@n1o->@){_B4K>E=5ye>7sLG%Ua+qcs5^RxtX z5di>-Bml`yBH+@)@4|(xOIZENZ%jv05~FbKW#tm4F%7!VkgDWRf9qZT1L>VA@m4jb z*G{y2s+sG{9gwaSP;CExN`qB*s`&MnCgghXkd9hb1VZ#cf;S|#BY%o4hATK_3#NSR z5b0k>-%RkoS3rFM{&$xIK(loF>E%~{?PDi@;a5I*?dkwLH*dB7NGbxVBM$n95&^T^ zkO%-@^~9Mw*O&1yLiFDN`M&|tI!Z>#t&Ou=cBwi*LeU=c4l&Vvt_2aAG|)ja(QA($ zfVn<0q$;_Vfd_N>oL!az__yyL=Yv?SPZN?TVnQ!MSps{c-6!3LPM90t5A+@PcGT6SMz!+$=0hyk8K7EP6Tui6@f(2zN_7m&=%gW^>|nq#A_CQ|&L7$SoX z1)7SoBdRD48`FYx$=If}3=zp@v7~Un%85@#C)quXrO@+$ek4#l|FmH6T^&%QhFOoc3p%Ly6GIv0w zHfB`UWLS_g5lUifum!3uzSjHMf&OMUsF z4IpP<&0sFQK1yobGeo8Kbt$*-__@g@M+hj*R2?uG1Cvc)vH@(}fQ+vLlk1Sl2Bg`- zX#5;bKKpC9^Ampu_k8w$!nrH|71j6(>bf>xP1Ef7OZzGKbOrx&pHidi{PuZ29Lz=c zaO2LMkT6wMp{lC*ecyBXcVBtoAHn#{L#^USl;@>26b`1SRAaihd6DQAYKkam+#yyA zg_3YPh+iJK2vyURCA!ZaYTPBdoAcAmFGFjYEX6i!lV3^27`5i1+CQ^YD3OKIg{g*( z-Meuo$h`QQd$%o%$L;|?QgCv$dC|AM^xVBA>^3Lv+YMZKC>~44<@#{nbH?wA&p&d< ziF-#C&SFvzcK;`Qsl$}nQ@^culVvtKXZ`B4houy|LJ{+d0D65@-S>NEJdVtfnMkH3F+;kQJ7$e-USI{4&n)f5UkFK3qHZVq9Il56$RA zye0xj-09b>>#wi!zi0`VuO%RyHvqlq03~(6S6=j|aod0SqgWn4uLyrNZbEEok1wi7 zDP%b>G6W?JUBs{yRwT*KN1UBgNpD3PU_cx5i`YB}%jSzSx-H+Fj>Z$KEGs$w5pMiY zD#_w}D&1jg^F#4nL0#R=gu{w?+{JBKJhsW;bkt*(D_nT|u9dq0d|&{!6O?Kt`KKId zuIIRU0CfF4%QX^@+<9u{1-G4eHBqmMwEh2cT^rtNUdz3uz~-_;f;ro=(tsYd*z-=e zo!%~mBcuVa0rPM^wGntq1jq&?N{KQ^5@*Xo=Q!RrH!veRq%hGXd8-2H%zNO9!Znu_ zPam%vK%5QBs0*Jv_In?q%Hu~?Oe8a@uunGsIweKeW0~4C zY;G|z{_`Ne>-kxvK+`l>z44iJ!kfmnbY-_dfkd^j63&d( z-*n{_nhCU_CxC5~X(WV6n~xq`+-1_1QzwvSGL06jDiG6Dft9Nt!OFFd<7~Bp%`=bT z%9$7A`pR8dPk#WByFm?MR5YDL>x@pqchX#NOyKu(ID3C-xR0Csn(Gy z+7euhp`Hg!jGpMVODp#$Y;>Y7V+6t`h5lI+Ls9#u&uQ!tG+y9o+4C2uX@_90={0mtG|K>U+tO`S{<{`=?L;HrLi#OX|JrJlU z#su8MV%0`Tcv~n@*C;%Am#*;xD79Izz{Z&zX(_dcYkBx|Uz*Vh#^;|bCIFOL0XzxN zMG_o!5}=P1=t~0tfR*c?YC(15WE(8{TjT^V%Q2LCLSXl_OL(Vp##R$?-m;p&&Z5z1 zqjV_(HWP5N1&lW!lh7it38^>0$u*p~^qaWtlm7sBefFQ?%(eF$S$}8`*lw#pUt2(z zBBOK;yUy{fYvG`g07Dc!UCAHwv;_Dz0N*a4e|O{5!`Qs{EohpSj0hEXDcSi-mbPRF zQ`f>}ir!*PcVoMOBj-VD%bYBC@+E9sUnw#+v}?I5#-_m(2s)qY%#!hoR(6WmL>adR z@V+I89 z>I#5a03R3@8NtWzT|d9NggenlEB}{mT)f^zRW*gF%A|BuD7%6y#k{wcw-v&i>7?H} zV#f8#o3>CVUY7z%kQ~QzPC=X22}M=735)w_a^XFfSWjXiJ+%AD39Wo%aHh&sU z3z?U#lq0@n#BH3Q%|aJPC#Y%{#Z`qB^wx8-o@8m+{+w%&ELuUwc1s2_ZH9O0*0EI! z*Y8VDo^y-vt`BO9UL&R)AUk|Nh^Zz30+k`TFOSgJY8_ z^*u`;(}83XFWi0Zq`!8K3d*iRN5F%_bRRmyC1JwkmD_~SX zf-2zJC$Mt;6F9wc5jW1g7|)%4No)`B@qb;4fM86gtI>VeU{`f}NF}__9Pl7t+g(Zr zzfapy0_awbk^(@V5BwLrMbwISb`~{x*j}?zvw%*I(WbFl zac0-Vy!rLkn^;0;acy$gV3zFnfy#j$fwg7c``~TM=K*{X!=l{Mx*B6Gnsh9-n}|fo@^u5XkBFnr z7`Fm(F|2cLUZZiWh9r!OQymm*;bx*Q3bADR{g{#U$v}=uS{L3^ylj31-v zjdRB+7^Q_w`vMde_gT7sIvCt#pphjb9h&@gU)|Pz4beo9wzs}u>*fS|cFaq_5P6Sz z7ON-OH7=T=Fel8KJBk9G8HhAAuX6X#R5b(da29%;yCTlbb`~l|dHKg&Xi+I5?Lv;; z@DR!n(wPH_JJ+D{643WYZXakQq9KyAt=NjLz%ZByYNJMpvbqS+q>cCsvTSueJt=6$ zfZ)6>K-~b%i93n_zRR_J2&g}-EdqU&-cp6X1pa3c0;^lkU^KZhjoWK8)=OrU#aOg> z%@meLqRq(CeIkYRG{riqhjBCA(=4XqW;e4+A)zzbG*WJkwtOOWxpZfcK zs8L|4;y+6P5Wb#$;>R)J3Ytcl@aanswzWlITPSJV{Ixl+GaUwOu>qP)pdGSR|Cpxp zQ(;`PH6Gf+fxeHWd!kcHvjQPbZxO5718l65Go5y{V5W}4 zh&2z!HWNgJ=G1Fmu>O+5DsYg|dkWa8at2d7QqT!z^ z;)<%3(O1C4fj$@CV?1~aGeUbj#6=n@(#I1yd3a>1AM1EPcr$yu@+nN>rePS_WlNZT zb3;xPi}x(^vUD=!Vq~9^FdJ7%x`Uug-OO(h+9nYrXEq2%vcDCwU~D0dkb#eufcJLD z7hP0$D4m&SItMYk+AXfi#1FI66{=rZ0tbBjl^)xI`JbR^dr2o3UbN`{pMxOi>hYiT zTr>dO{Ot5}G}AMY8_f0qZgddROcg@uxL%z<|wVehkI+VgPcb8?=uhOD8f zD$&q%b*pU*wwNS@Q5y?mTSl^weZjxrE6cKkxxki@FEH2_7_JOLxLR)8$Y4X$5=L}W zT|-t?W>#foRgUMJJw&YU@x}VS-|u;cZw;{{_Ksmi>g3)#V#ON1;rDyr=Y586{~Pw< zAN`wl_t_twJ27CJG=Obc8&!jUQ$c`ufA0bUL@7YU+R&e!oxE$Ge(j&P!C*_84eY){ zo}9*D=BLs`0n-tja|*IpTt6LL4w393LUAGGr`05~mjIg!Ur@|>J!{g(6o;{ellEBl z3~`0!O!XV0pwsj!#ws|<>2B!&*QmR{B^%e9SZ`MUEo?ac>{|!F`4_)@|K7Tu&eqET zZq3DX699l$iT~U5Gnkou>D~Kx?;jt0V@3V1-T$%6-H|TIpgo(KR*A%GG<~8#OA92m z<=Vo^Y9ECwyTy$qHvhgg?NnfEOfj+>fdMFcvfj`xwpcs7Lwnbc!5u$Xp6aV_0V>ER z_KI$(L~oQ6eB|bQ67)6O=^OzCI531=lP7f7Rs^}M;$mJ0c1>aITj6Q_fPgh2!??pP z=%3kK+K+9gmN6GWs4z#ZC6+b;^WMDadL(k$0juu`_j{}*0n^Sw-_%#vAeupA*MvqF(#Gku{7UoHkMKO2n&de&Vb8mCo}a?`ITNK^0ma~{U%_r2a^ zgTaVHJALb0ucZIK&0s+MbDRH8KK}iYvOE|EuGuaTz%&c@ZFOCvAmA`H6#mjhV@)Xr zH+%mJyFkr2Q$_}n_BFqDEX|f@X2T1!)8}Sq&y8m<%!U_s{K+5KyMOR+*hk;_x9s@E z_t!E3;=e0KKy@CfpUs`mn*;*v>I-lYk%4odz)#=(O?&z7ueJSv1JoN=_CgszIMkhC z@F1|M$mAFphNKVX?R)i@fZ`Z!aKf^aey~j z0x;+NxNS$%{`{x^;yYhETnuj;+1>y7iWhI3j55sJDjF1-dz0q+9%eYs`CPuo^>-42 zJ)TD2xrwAj+P+S@N6NEi&lh)0LdBigSn#9QR?^CuyHZ| zn!X9|x88EJDboV5QLPQ$nvFpVZrW6ZBAhL=9ev1N)b$=d&}l_5W;1j2+!`&RFjOL4 zupd|y1$i>@Y8i6yl=pbet4{%hf+$mL=(K&dkx=PDpy`MEZerX3b4vyqDB%+fl@)_r z9LakC)D6j_P7I}7>S0XfI&eN4St65X`xX_OK=mSGxCzG`F^l%OS*FwJtvV&9aiH<= zt}RCiz(~O<6(HE8|KG(V&NY%8?C8_)jOSo5!?1RL0c&@2KiZsw1+&qlV0JC- zV!G#83XUv2M{`k86V};SkePHFT}y_+z@^#p#V8MWZd|@F4of@w`1kF--~ZR`gYW*I z?eOIfXPf>_Y=Ctvfn7`iZvqG~cR#)g2oPBSn|vGezd!r>zhukfw;RJv6I|T2?7S}f zo}Gi1YpJ41oG;39w6D{X$!s(EOJ=#g{)wzVIM>>Onc7UHC)w#_B+SeRV*thtxj#p$ zQevpU`tmqo8nlv`bfa-zUfRdJ$Q9wro&wCRHD<>LeEXmJwMXBy?HB-aJ>gs*d858= zlLvsUY5r~Id-&*`lfz&7+{52IfZgj10ABDVf!zF1r`?fip9Ab--h9>P(+XE5WIec} z|0C~i6lA-%>SFj}=0?cgwcei+lv5;gntY%1Hag-?KL>iljhMx5DY{G@_MNnPGHQdm z0c%uSpsG$SJo}_t3Di0bwQ>576y*pPOK&nCh~9(E?2a+-SJM}?G0c~|_Y|O5&Y_v} zP^KV0u^VB+9}0IeQ}-Mp0Dgpk!spVN0>R48o>mzpg#IMx<5|fVD25Dhv|<(rn{zX^ z+#pTU_8easa*_#efe{QDV}g@6sKRU^r9l^NeIU~FDB%I)V_HEh-UcPGr223Rk&{!S z245{M&1@KG%LkuLh5fpJZ`0J@Wc~jpFMv(Wc zIVtDs)?C+FxEE<9B9YR0iZ~qZsr%>Yh;Qpro6@chY`FgmA07YZM-NX9XBz+6e($z4 z{x=Z-*oDTiP5d9s4DZ}MI(qxT!LJz44mi~M{|kA?tjxdS%8Ar^#WfQu{$~L)P;KGq z8tdvFpsiznO0KTzxS3gNWhTeCJ5__H?yaVqgHE#PedWUBHIm5aL2WN?pa(TtxhwT* z^bUYCPg5WRLDOd~#-}*x1soZJ_;ex=G>h=fJpxSu#fGegbC7~xrM+HGk*CqLprJQ0 zmy7ZPhHjsQww^L=K%t<-3{Vz-R^1S(*f3LH2mc(4*`;D)h%j~E=**f#;0ec&HQ#2% zz(9eUAQf8fT!dJud|u+Anm`Qr5Rw!iB{Y8OC-4xMm(kSHq^Zyy%|j*#FvcSer)I+l1}tBg4X1YUlfPph{=I+2-u=`6t6}+k=jMM~AfN(w z)`0-mw?N+x1gP%&ZT$ga<6nL6w&;4u{hs^H+3`j)D{PLck!zqymNSB7aIq7;||_+2LQ0c_qJ{N-Ov8g&%OQV z_z<64t?FlGe(Z(bvs~jOWAs_~agn5VQulDOQjghq=lQA+tFy|H)z)^}@NLq$pDzU1?by*0*)C#aTeyLTZ#b$(jo}au9B%?M{$uu zm!_0vQJ_f`l_0Tc;%J^5mK0Q2TYh?NfRVw82^8y((QC&7&%)o{f}Y4r!!rZM&&I+Q z!_ha}^@XDDf)tG*VL(1?rguWf9I%k!*oVl&Bn3LK)2Bbb*Z;o)7*K%%>lgudKKZ@z z=Ob{9j>tIT2}4>5@^%R;?m2BNsMjA#ppBX+CY?kxiba-}K-LqtMUryu70nBnCyc>g zrL&gCJ!V*%4QDF=;OvFj@`Zt?cK6T!wteQe|JU~T$N%Xp8$iDooBv%I0h>U8>&gPy z76h1EA6~^DATkAh{N?|?Ef*&%UyKnnVlk|yGwUr9G5Rj8;TWTQYBb-aXWubiN_?ib4y+pH+ZqE=cUXr6;h+C&AO6(?@X3lo zITQwfyx0Xr>9ds=iZ~-D2XUoO(~VEe0>Bz;{J0^gTdgw3rYhgN*_v|S97WhnP31hL zzh|1)X9(i-4p*2WNFTZ-8Ze_pgHZgYW=C|_o^nU$eE`v2BTi!{`nZ@KP7QxFsGp<- z(R9t33&Oe%P)q?U6Z~$B#hHsc(8iH)0GD-O7MicB{|4$MG8}Zs|1!xpM&6+Kw&LIPG-g2;z_AqEKr*q5VwPYgFsqmd*ZIf>UgjHZsM+$>l{5e;2hC}J| zLo3TpWqJ7H3%M8AuchGh4`ew)XKR>Dm@SxDt$txJ*g!KL-M8hP_fjE0*9h$O|MRhM z>x|>3|6sJEPrtW1C&Mr%0QhsC{Wm$&_`|PvuCp*_klNNlC@>q9VR9ZFuv&OoNcO0| zw0Ki_{`N&S+{|8oL5F#|#y2S}Jh7K$#4#vRS^PabK zwU^(;=*l#XU@nkZV9_kMB^42Fro)irBKYsPMso#9IAB+qlT2jt^gQKYie_trsyV;M zDoP%o7h7D@J1zNpS;2K_;LiWMumj_hf8tjk{WomAz-8Os@W#pk7Pt61T89L+pMCDh z@m~a&CmhbY0pP_~fwGXATO@(7rm|P+w1Vyk<`Az|LkShsu(o-MCQcn6rlr{>X=_~A zT*0WcGBa;FgXT1j!gNnD28x#7Z#WDXN^Gnu8#BjbYxFwNWW!Q{;M{_RBhV%ZZqjY3 z<#%SfR-9uqNevjAM~x~pwy7?nBm@w@VY+B7XH=Lj``|4h5kYP8pxzV}FvS90N=XhO zIw?-sxe31$P#{h#;oO^YMw5rH0t*4z?HCAc16u>78P9O+iVhMGtAeXRR`l=FLt3E- z(?k$=T>P~JAbk!NXB1;+hLAz6YykuVHi`o~95zE|7HIBz5u?Jf@i}|=#Z<_z`}a0Y z{Y}^ZuLA?-Bm&c)Cucvj#qyaEgP9F&P0a)^S)W+gSIFO)3iv)5RqqFw#EvqWq@kx% zP?JLt@CQF9MTq9???ZAd!bEXO*l_F{0m%}bM!-johJiK#0cWRXJhP)uzGLtI&cA9; zfA}A*O$CU5ZW9@}4%At9&aY)*wgU*T&E#KyK4%gbL4iN};y-7@@nfgGhr_Fd!4kbC zD5*ZWjS)`sugmP5X1~`m?2-WUH3TgWUK+SIN#_v3Y&fH4U;d!`;8-0GTgC7)Ci%z{ zBLLFtOY$(JDl7KO@Bz4*_sqpw0^%kdl5?&rJr3}Lhl}5^-HZTl9b$A-0DxD~|IZ>l zAH98ic>m79SB*=oCjY}FzHR1?2oYG7D8993f78uCznTk|9}+_rR|3z%Ds)|wdu$(h zyGc-|)Ax<5Z5)8>@wC^QB5?p_QyHPvJKeu2AE4tAQ=}f0Qdf8`xH6M{BUNi4O^|bO zh(Pj})8i1=*A~K;9Q*qmjPe*px^1A?x=Akm)E1Oe_n`}XSO4KxgKlIGB>F8NS%J_H*X=e`fQO~)xd%{SN5|EIN+=o5YR zJ*B1H!n3WMJV6@}d2C`Y#N{Mqy<2Ul!Po+g(tzblv*oGTurw^s?7<)ZhxXC$|8MPN zj18QCfH||ks_~x#0jl%5EeLR(K!H~Q0rWAOOakYa0(Nl6KKQ67LQ7GY51r4cnDJz+gn&2R5F* z@9}pwIYY)UkZVjh(*+rRgn`7yJ>dH95f>W@$lV@#!?xHd4)D&&;>&;O>-X=^7P-6i zh&K`#SlozvX7l&vG#*%o5dAOz`Zs^^XfeFMq6Jp^|5v|J8BtqTdxU>Or~fned&uAR zh;}chbP&lP@M7-x9p$rc43tJri^-{&@|#7|#KBL8C1lH5hQ12%;&K^C*C$ z%sY_09WtslKsO(Zmlixd73Lc!(t;+{Ph^2U9itQp7~^@OQI<}Pqc+yFcSY6^Jp zUW`D%V27XnvAz4d|C+t^gTJvc25_A$V9p1i0)Mt?@^2ytQ2l*dIl#LAe)Rr-%Z9rj z8V5=s4D$8j==auqG|0MjXjVf-3X5Lb4D1(ntX9m35fWcyePxeDHu^-McrWU$(vpip zZ9!q#r9h3C>VqPMd5RY-d^xlTP-D{ioytAE@p^t;*Zbw{KfLr`So0is-EaPNtt)27 zi{agW`5%4n*X(>OfLq}Ma1$i}yXgPd{@$;D_0eBhm_1xY{|%P_08~weprDbqD+(l!x{Vmf}x*@M6lA7$Rq<^@ZsVc z9VkSn!l`1$rq2WCb{CrI)=ZRlRl3(&k!O>6B76d8Fo=w+8^U{Yno?=XqnrgnK-129 zGXS7KU%##lifk$VCcP=A32bWyySeAmM$43=2R59%otpo3MgLy^e}4VHnc30vKN&9q zkpQTpIJyDZbloYq`W`$^jm3~n6-JYa1lUM_MPU9%E% zu3smtMz=0X9n}f5)wuX{#R%Z3VOZMz@BdBv=y(2AJ3ReKX$H9N&vhWcy5@hADd4p# z*tWQDcku(*#V=s7SlCa${MXH}@UpG6%(62O;pK6<4aN?`G5Rb{A*QXO`wC1T7|o{# zx$`aci9wPtK-nG{B#(uk%VbA!Hn&%vwR`t~@$<^6AdaPpUns%cXXcx!wBZn6i!w)+3sY{;kg4u26g9FT(`CT$D(E3lNQjHq1=Q5$;Gtn&@@T5XfpbTx^ zCVD@ct~AIgINPoZG=hv|htvT&fCGuzUp42N%Gfolt4!V%{o0%Mv_>Bg)4-_B>tM)q zkih~#H$Sx(F-G_qC7+i*3>g;8`j~H_uxTT>-IsS+il|((zN(fV77Ci6Ni1Ca7_NPW zsRp$=Doht0U6}L}(V$JH1+z3)40iAbDfI#322Ce%iQ466AVvQbf@8M#@4E(_)fK^LR`Uoh9-P=WHuZUS zi+unVx8!o%M%&>ogung|efF(8$M!|z@{;KP+dypaH3)TSSM4umJ~2IzQ1p9FjYi}` zY9`y++253&a14`RUk#Q?h2hgTT|7O0ftc#n-a8tN+H*gvy0cRAUJ zW^7t0pfJ~w_c%7C4B$c12AZE3dq?0f`31aGU^M0OPzQXYrw1NEv|G4=F%?A?3MJ-l zH16dvr@43WL{@a%4(ajN9Bo~k$Ba1vLX;DcjLPDYKxcLk7&Bs6>1&t}ciA>2k-aqh zX3UtLrvHM7d4hj0_IjpsH})g7>|>yfA~6uyWFqoh&c+?74nx6%AqoIZuJPsDzqHr? zpA#V1MgKqjckk2RAN?MN4aKvXH+mzzDcW+HPIA=uy4y4OrI>3N=T^5&t5H9DkF;5vcW!I9a*wogqfSZ4}NbCku| z!aRJa8+*CmKxx67dLH;X{`kN?{2%`2Tklpq-YfKqHwGA3+@L$=qV)e}X851}!yo;F zM+bbbNB_O%)o0S(w%v!>EV(VTg;5Q)4C_q?Lthrfo{kXU#-^0Tp20bni7sb`e8;g% z3z#U$zRh9SWV#`hW=2b61z{hcYoI4XkZEFR+CD{#1^KCKyJ_k1=DdE*4Z|soG%4i! zK(qIgu`=s1w3{jo>7EOEUOjZM1~#YAdD-O%gs*l|)NlDz`F*8I1PG(_bRiaoV z@L&Ku3nTtob`$o6C7|*GrV$0I=Mr4jZPukaIFxyHx$ zzM7h%QJYn|;_;WvBxvUk{<$^kkg3`8o)#`VQ|^_4w1H+XAAfzX|9=HAU|aqF^zS>L z{N4z_45>MYrM#v~xR_RoPT2ZdOObdXTvH%qCGYp^G)bgrj{}yM&BUC^C?)nbMz&fx zsTUGUk9`f&f^0S$sb(maWQ~LwK>(f^hgC`dhNV6F!+*!#`qTelr<8zgn*L3G05^>V zP&NLWq(SHX@25|H!-k{BCP7K#+{D*0G3jTL3;-&rqPa=`BrT9SfPpbUNdRa~|M+I2 z{1KCPRA4GJBUdVb!Ae!whXh*Jx#&)B5Zxu0e!QQzS%{&aUsoK|AG}Cd_;_~8LMlve z+Dd;lV1*kdEdb1p4(y$O_BWpVM%CkO(+AoO_W`(R5`YWS|9|$K<6mFcaI(_>FJB`A zAh^hAb~r1eJ{GZS`Ofl0oz`ScF;IwlwfV`I=EtoRb^LmO}a?G&kQl&zp)MDAC zg7^RAZ`yl*_lc=zvf2D8!1*9rZ^ zm>II6bZ-Fh$0%YbF%w|pjASYMQEal!k}F)#`} zhB&Q2)$50S9}yM2$qaz~*G0F`%?AL(osXUz{^FL6y{+jVH~rqV{94??OKB_p|AUjo zmu(mp9F{xl|6ggHLL7gN1woaWs@Zl)0O=bW>Z)G}wjfX}{4(D2##YnD)^srW#TF-^ zyYCTEBU;l_V~a;Mq?2a{L$jy*hGhdY27VBk&Gc4nKySm~sQm zG@b5Kt9G7!Fx$-5=qCOKD;r|Bbx(1KZsG;68<*COEs74d272(+M#PxF_!&crLiD_x z%L7(=vK5U-iegfOKFvQa3JDbV9)rn}sWkv(YKfMVFqcFDF@T)z0f^VYlmfvZp#dVi z@kb$a)7b5ixDPD|P+`$*?=^4NfYi?AhW!@#}%zi8anHTpvJocN`?O@`S}*QVwSHnUmsK2jWCILmBV*9)XH8-_q13_YqStbERR2^%Y`;=a_ zM(42qdb1t(m0U;6KrSBK#g}dG18^e&fJ@Q;|I7dQmp(c9Di6_WJ+x0tDyL|KI)e+XfrPCT4JeG9__EK#32>bo{8t45=GKmC{n!Zrxc3!XKKiPF ztzlske_Ue(j1Z(T{aT_({(Q_HBr33j?>@SBd=`lG5p^8Y1nxTMZj!5!{>~OK5R}&_ z;x?iUm6r(hy``tnh%ZiL5i}-iH1B2KT%xWo_yyE8@cwJ}p(HP6XnBck9bb7Jq1`#a z=l(n2di=Pm$X}snyb-{_O<@3BsQ&*S`}^Mg<--NvZu6z%bJDLoz~ZoKkD0&7=2@QVn5FxzFy_piu8a|H>%A2oC&C5?H;zIC)Qv@w!_@ zKUCQKsXzcWJYN8^fSEf`=8UYo1AGMrjTjTa#9s(=)7Pn?(bqIbu}I<+)XR+P^%?yv zd=V2JoM}BctxeR6%S~esA)0|+fCeB8!dwxijBBu>UAw{=Q~;sBCK)Ed>KQP=hB4>) z?D1Fk`u|q|19sK_-~HtG#>MPR?p2qSnwTchgCxeSMo*VE^(5MUGD*T(BqSjeegzPl z;yF91Td~Cjg&Pwj)`1J<6QGFCgaE#0|0=1`rcn^YdB4MRc*4J6S8^|F*LmJF8tQnB3*81 zjg3O{J{Mi~*fsDJfE$xBCu^@4=xfM$#oSB@y`d+Itx}>0Lw=zzHz}qY>Ipm2(^xJO^uD~lE5y0$dVekJBe)H)s*={}n>x$!R-}ql=0AOn! z|9KIg&pbK&=E8?@0l1<{9c-=i zC7i#po9;9G&V*_^33*I)lBlZoT9bQ!lP>svm$H!;ao52qnyoNw)A4C41MS!3T}1jMvO; zC;@`DB0M)ZyKKaKL>VANR9;JBk-mGh)ioc~3 z{w&|aX1&rtUwxj}V!va|M zd*@*R{OGN})Yq&ruF`uHdEnN^7@^n!QCyu9Xx(ci7G6rZ56*1Fsh(rn#>5jTUC0Rc zf_2tfRYh~YJOu(u5-Ff<&{EmZ>P9);dk}+bOUL%jx35=qui2v__1S_QV7UL~caOhS z^?Dn6$z6Q_t{o__xRK|4`x9IJ9S`mte#vZDG?(8uc5_MdCGM+?xqFy4|01(HmS%;0 zcMPU!twc0|n+%T{I?g^pZ9uMSi{Z@s5NanhvnO@br;`s*oTQyHluQ(}{<4eq!7x#u zF&YTM7j$_tU;RyVtj+`wslh{P+I>UCU@ZjQ0BJH=HOm@$ABKgQ_toD_7+=s&`^aKF z!^|xbwUEfoUk$1jw`TZEt@tnLwg?7>@WnmNB~q9aMb+(Im1tH`*v*^!#Yt$M28ux* zL?!}1ZE5cz#URRimoaE_LvQzf#$PB52wL*ClzSn(B=Ql7;fW-QCI~_P&=A3P-!2E* z^6_5(ADjMl4gV|a|4;waz!#&$V{pYi#yRA4uYlcT)!&bSL@&mAKCq&jcTNU-(WSpg zQ6J6Gm`u?cQ!2*#0d*q+%hxUGs8C?_{NUP|fuPu(%fqRDz-owa z{L|mIcfb2@CqIC7UI6D|2HYetU|Y~{4m@1P7AU`m13P`|m-~Xpm~T|GMmnL8W`zMS zf)Oy01MpCcY=EB9;*yu#+V8=$=9{6(8OoLnrh+zin=n5Bb8RP?_EHqPiU;ee;9lnY zHb^|zyo-IKz5nv{%IZ2?Jid#stm*%5tq;KBre6bVPF#uT{MBE0a{taTK5v6zC-;9| z*4x+7yjs( zX3=RRLMg6BMyStWXEpE~7rVC1wHH9v7kjFC1%Nc)34I3)mV2rDjWZBR%%cUPA~ZTQ zn`xqDAR>A^w7y+q{1{R&5F{!{q=!xwodC0bB3l6oOHGxg11JflV&Nq4Dz#@eleOSo z)1w!mp0UAJ(SJ19+0$?C_5bGt2zJr`Pk-L~^xFmwhG8%?;2Iw6YaSjFUul)t1u}6L z&xv%QL^I3UXM}D~fddr0)g^)#O9wHX#y`c~3J9RY1QgyV=o3k1szL!I&XtGjSVsDO zI*ahm5B?K->j%HJw#nZ#{oe&dy6J$xHgckMsR5-7;H|$fp1_4q@iEVi^mmV}n-w?} zqJZ@pH>WaT0uh>jkCt!n@VE!!qZ5V&1z)VU*u8@CCewff%w6d~IiY7r*O~3F=;KH0 zQUf#9`}HEXU(NRDW`h7Q!@VQ>!dKrqJ}#Q8^Yo5;0N{!@_tp33kRSK&f9W6j!Y`d1 z+DB%?ZqxrQE|cB2VAa<9Xclh_XSv8BXAYA#ckEN3)+xIX+yWp*ep-f3)k((#;!ijx@Mru*qwf2Y*dSEYA8?= zd;{X~4ErOCbD&dji>|-zy{cPL)PmwHCHFRW4*T$uiNG~x&TAz;O+4wH!4` zqYVaI61F^kVrTb0O3nYS1$*_g>kJTFs{a4kpP6wr{f8}Q9qhwZ)7;376@4GBnPrHr zM3EBH*FEH39}xLfmitVeCC-pjA%UPCKtKQ-77ELj<IgR$_^~9GjJ-qp(t-l z>nzdFEnts-@87h0pZxAtwEsEN$4%GHjVQ;hI=1*2_Jf*Qnbb; zBTEFm35NyUyJwdrz8vMfXpLuG(!wxr5cn(r^}TNL`wH9pLja8_b&90?xmu^jD(D6d znAw&6{UbvQhP_7*N~&pe(6nZddr7y$8@ zY%mxWPLB7JUqM>IOi~4=B0AC0F-w_q4QY89pzs3>CVADm7i1E?aR|m;h!KE@2!UnU zuFMamF-`jPxz97nP0;-sTESmf5}7#hPqGn%pPRGk@>%LO{b@sSE;e?G!C@ogD;w4vDg3G>(T$;JN**_ zpO4>LdehD%ZSNix4FU+#DAHV{V`ehxedE^#$EKNd{Pe3M+IjR%_rz53G9549nyxp* z^&_CpVBc665^^T(KW$ADF(n*0kQ1>Z^5ulPQ37-~ozr1eTRi@q|AX1`#nvFewk&{~ zC<8bT0Jsi#ob>=0zxVv{&lx$0Dh|>(BW$&F>n;_B4n&aP2oNUmidQ9ZVYl9)_Z0B^ zyGX%eQh^>9RsooL`!E5`vt_s&YM`ZrG$kRb2qN9nqx%%=*YMfUz0kxA$ax9d1h;+K z%evL}iiVw=|CKC<2T$)UzGU-B0I%BkU(2tX>;bS2|P&E=a#E&z}^j?PX_Fq2!+WINm4QcK#10Xn${{QZ?KN@xaLu)j_c-GM} z!5JD=T41zHT77iD5ozsWXk|K0-$jsxE=U0dng<6o&N2=G8QnS?tBLM*&ERDv4N@m` zm2YLq7UQ^;wdUDcw4i9(P=EjaiJfYBrgRUs1=Bd%}FFX9g1uKoAxB_-^?Hh}=-;{NgC z>p%Co<2$xKEpD40at{Dpk>>tFL4yDBKm55boGk1ME1u)U(*Mu>0mF3NZ8o%d&$ZV1 zE zVH3Tc&SPLMzz|k3(;#{7OcIFbt^h%`b74dIOgWyBYqlA<-Wy`rQutbwp#%+VVQbDyX|5Jog?7;!GI`@Z&>s^9vr3Ks=FBt&f+!DqUZhq7nmc>7&#bi zC??cZcN`{kGB$)z-x&cWLFe-IGd1}mFh^pOLT!zxQuB(?10QhGE#M;or9Tze&KrHmsp- zA5(z=XZJsJ=bu8FL!e&K#Tdgm7bEUz1t{LH zxMeMUz*`D2wCXYWBd`Nlr253fkd!Nf4#IP$*at1q0$=Zne(gKM+rmh|!tB8K_!}Rc zeAU)70I;Elyb+E6bp!yg7T~E*=q|s9_a2^nabd#|IhYO0tNGEBTU}pe;WV3800ja2 zZL}*(bgxM}kJQ>&Mrz#@m~H~(hQbudmU$W`=!;A+yd}U-aV6yd!J1dC;N|-40bV}(?#cgWD;ArCUl)_^1sK$7GL+0AKe+AOezcE%;yK}c00_6@) z(%{|;C@k4IS3=GLYt-Th@ZgP}C$JkUN1l|9}7Vk8QF1bZmNuu2;5f)L5+$7=1@pYa^ZErgzVzs+I#5 zJ;?;%H}U#6yjmkZ2HM^&Cc%+rU{DvkIA$T6)b_FrVP z!zpR*;N_3((VzU^wvqr;=YQR`a#NfB^FC&d0Z{$y`P0AP=O{Bg@H7{pj|z^DVn~z$ zx*v>dgR&roQsp8v!nE*m<@M%|2|6>BHlD zM_)G^7T$vND&FeSQA@x)6U+-~=9x?Yndn+VNk*LT=M38b`pS^K8?BLHO5_k?zdbsd z8vOJg)Q!f(pp79aYT7iJ4&e%bKxtB_6DEcUb^|k*d!c4DgH0CqYDu0fdn5S?$ zn|2ia`gZIGM`8_AAy_E5f+0t{epmPUU}k3zzp~f=pA#TBkN*G8v+p$OKj~mpp(2~R z-qE{{Zs15bV@*1hzuddl!8gws>(3JzzJ1-MIi0Zz6R3){nZ}&#%rQsb_bTg{?9%Uj z2A`H9tz=dP5HdjLGRhrT5D>s>*8%MA_kPQ`d|Af-Z94xIXmryW|82p6YAxBczRXDh ze){+?7?19oEe^~Ui{MYg)L_%PRI6`15a77))EpaJ#3(;X{X!j+c$r(f#{xvffc2%> z4k9L1LIC4N!R{e|oPU^9ch3C7d=gM#lA;34BqfPS3%YtQh(Q7@svo|_edG<^Vz~CL zJYL(&Og;dQ?;iZz*FHQxTGIz&yJGleeBD$Nz-`PM+)4hQ|6`y3;Qk4|W&>9SfLD6+ zR8fD>O2K@F@wCwx%8vvym-`wQHHu(-+6+9od*lc>+2ch06t~=QGx6B3qRMQDGXhwl z#!1t^G#a#M5=Fq zH(Jz*yiopG+%}OqnRNQrz#f+ELNqIj*JF(3lmb>zsE%h z7FBc7{+y7eP_m%gG44RpK-j>+%oetM_~pI+{}sT1o%R3Ezca46%f@<1=Bf^X<#-&dpT!jv!;1OfsX)*ov)N?M*^$ zhbrNK7AVEYAS>2%01T`En1edJ3~ylzgDsYy+M_@Hn`_Pg)?EvmfTf$(=x@{9zp4+w z>A`&)jvnSnWHU#xXHHA*XBialfap`?C2m!kU;=ps%yn_GEyXDhKPEN;6#3HV<`@^M zNP+4IN{@}4I+H**N&D~&H$^7Q8}FhXKrn4oo-sGa`nm2s?3G3$uE~1_h&u=NwSVsK zfAZP6KJc8q^3cO}7kC z3(K`p7jOZrBf8*#`oK&nKm#Mow>P<&1Db5$%WISK>FzgrGe1rY32OA1pN=<4!qoWp z%da>4t)Pr|n94q;`zt%|E7OFC=@=TvN6icjk5UI|a z7zP7j!_gx%zPfSuiW#|;Qt&&kesfw;Ip(WY>LGwi`?sEGoIjgODa_et8B zboOiOO13l__gF@wLi6taQ>-z)DIu%-19~6A)qZ&=cdiEco)1RJV3af=IO{sN`|5V2 z7tk?W1CH{QYM)`S1$q48)1$8xCF8nxa$}7EZ$b*dt_Fam55Rj5kG=-*aHWSF?9w~{ zc)`y_#$CmKR7%4`D+U#Q(L}1q0+7obK-U}R?CHvYHP8j%`FOi2T8z_XM22!or}@l9 zU~IVKrs9x!dW|SO_Kt)+tGOawX1g8|&~M>nN05Qd`(SF; z{qu7z#>?8@sBi_2uI#T)I=fe@ z;itn}(Tq$}LxzGI((%Z=pTB(OU^Gt?RtVl>%38y%_&o@Zhcci(j<4K#cj1 zva1o`9sqca*V8Trfa&{x{V#p^`0>5NUo;L2EAH}^@-^?cs(1<>&aJZv2hWoCRh z7`X^_cuf~T3*-U^B#cc2r7>amC8(X)rv}J}7p^uuCes(XM#pb{&4U1;p>75@K29on zI}u)z;1PO?hk|6HHwv}B`#gyUyhWZiaMAs~pTD|^MT{N*HZ1e%P!~5&?~!2eT6As4 zlk-sSM!oH$lQ9O6A%Y0vGzOpy#DEoP6+}?H2&K^Z7X;HL%k~L?N-rlvJ|FJ~^}n!! z#!1yoVl_Dl=9+|s1P%IYybV+)5XpN!_{lxhYrR~9AQz1f4#f;}Ga6{Fo_jE}VJzfM zpL}!ew12PvU*D+hs{cQJ@xAd{T2aT_h)$XV#99SurdgYJg0hYD#@tk=pDIUvPM><> z@kx|qr6$7)2{(G9xOH+a-^@H4&2+DcnrCgET#_wiLoU1_ z6Ts_#_gvYg{W3rRkhp)0Fa3*u?X7n=^@a9oMu6Aia4v4}6}`2w!{7gn2Opd)_}QkT zyiOaZj;vWlt7wKDW+{!Rb~DCCz9Yz$o>GgQ=&WzC%xv2G-l%Yz`n0}O44}yHWSy4n z4XWsvmu`Nknd#{HyyRq_6Cec2>=c5A8yq{ddnk;biG6}v*ws4o9KWeC9It$a7@t>Z z7HP~}Jxf^IfLx>^M-}>FLZ=)EGXJhWS73z2t(mwRVd6JEPm(%>1LvpoenQfk7wECG z6l&m)io{cfNWB(q=5+dS&HePt8h`1|qL`6&4ZVUNPFPS#AkYo|!s+*Cu1Jc&R9F_r z4!#kZYtSG+nB9J=4R7#0)}s_=$2RXLgB0DZ$UN#E}N$^Ub$8Q`V}$^DmYTw~Tn0qUPG?|d}w zLC#^hmt5%UrZ=AzGd}nTS*B2kkp(c7a8o2_OuVxg>1W&FecKXQ`T8*ASdfjGAGJrfaBtnW_f|=HSq|^cR2>_-<0G9J#)w``GzH~Xi zK_wfGW{kXoki+Q z#T-%|(PI4U8NhOHEBOUP4~K;sGKk4zXkuMfGNeZFdc#SM!cwD{uQL=*$XzQMDAi5o z$o|@v(+xE>!kf88*0E1S=tIij^sF)xEqbLyobDH*xGU&QsRphZkG=kXb0c<<`u{tp zKd^(BKQptzY&4CFvMC*82e>Wm0tl&~ZQVp5kHH-5N^z&4cvjFtPB|@SdJBN&ni3-8 z&-Bs)hGozLRq$YV!>wsf!j*k=OR! zO^5#gcJHI7NAFa+-;#6cX@M;AdhfZ*q;Nb zd7TQ%Njn!Otwrb+1VliDPcpF3M{r1mcPntw8&nn|24^Uk1hb(so}KuM4?vpK`=-zj zwTkN_dIpLka^JjzOFaCwiWChT1B<=>gei;LPvc|%ON~21j&_~1&|#uwuIQJV>pV@q zTfrs{7S8G1y&BTJ6s?Z}S`gm%=)B)1v)V{hF659{HsAcXNoioGL{EiI?}js1MxZ%Q z8S;afEgyenum3+MK(H;H+v)#be&3omhYdYSk{OmH{8h=^-^x_o#MvBPS^^KBRsJuu z%2E$4^3(yaZrx;8Qo#cc2n%4uJiC!B(!0Au#T0E+h{7Pt*sy#t>j^P;J)9Smx=mogE)oDUGcJydi<8wkT}a&{6Kx0Vs_Ifq0o|G_ zQpA|x>~}gg7k=b%fcJiGi7oz4L`c@5rXWpBHqO;P!GlSXpxoF+y`6}1s03#URh7YB zl37a?XHtlw`7yX=AadSTZ7(ahu8m=AnHJ>H2Tu;ZSoMNi_K-Km2=Kb60G!tVuzh{> z&dK514-S42HY}2%-qo)ndm%yX*43m%>!Hb&pFUI81>l7WM~zpsX`h=)s0I|#m@gQU zG3qq^d-hs>pEd8=LYIkKa2wdk&eRQQlo3StcUCNbRy6uKG-ELrE+L9eAQ}}mcX~qn z4Z>tOTKsM_yz$K=EgYO`%|dO!*WLP&%nwqbp+$Ce`;FJ1%4Z{i0f;$%k%*kt4K9(3 zdCK0e9&{tLkUY@N2nC#>IZ*-9e4(P}j|NN4s4wq6{`_Zff@2XxRQIAZ8j~xt)&A{G z5riH`)lDmf^6zdx%q*A+I?w?)6aAlD*y)p>-&y}ZSA^e2Fkl-gfd2jD*&iBhuoZCa zLAPjwija=tL4oO-8t;%GQ!1=oRh(s(T?QOb=uP;#%%mHD2}sHSpz4|)BmnM(0E=3H zDkw!?2vz{(Iz^2+gW;ZTdlEeWnO+P<<73DXXydmQwzQL<{GHMS@FKvb+t&1-_jjhh zFHfErvGDShiP6ZgS3^KkgFo-=d#4hydi5154*{GF$)?%)5;ZxD7JpMzq4}s?N8?Yv zJ_7W{dadoT{vK2G17IFU5S_^Y<^-g<0aj^%h%{WuN}S@jzxpbDHTRAS?LTo74$0c) z9|l`2xOjZ`;2RH5>|j%WxTdGP5k`R50RXsE1Hgak*WP*S&JjLu9AI2t6aD`Nb2oLY zkFL+4Z*oghwcs+7=u}m<{fsRjf^&Z=+Io}Hl+ST;DJC`*xq;K<1es5uG&|RzQoNkU zuGA;Cv!FeDAf!=B*|n%qQ~_}V4j%MD6E`(|EZwQ+7u~q~>9^ze16zVzkE6Nb(+d|F z8i+X!pqqt@kdXrTGg8@uVUpr1K#sq|%>2Z{^~@Q=n=bK0^9u-SPmu}e=eJ}4Ms$A( zs6~Ut>5_gfxWbDvF^aVgC$EfT8->7p6!0cok#Nik&T>c800D}eO*P!G0uz?6p#PuK z-|qGQ>-GO;X2+j?XIy^>T=s7x|s><58_6$WLfr{uHY(SxI`iGgS z+`J*P_d`$<9QA5~6ozmP?s>8mY1GQ1o__9(d&UYB#xNNYT{}B94|8S)u2SZVIpg#* zR)|hGF7fX&9`%_MS73KYfy2xif(0=`*O`ebWhq}+30PtQ)0t)Cv+15Ncxgdv6{bA$u$_&?UeYD^`<>Fjgs961 z9x#}QM#KZ6MbHDduE1tK0uw;L_{kq^Mena3vx_X?rZ)GxQ2salod*vDOzIU_6OBM6 zR}2zIsZpq9S%~P>v4xni_JkxPmZKIQZhKbq%ftridrOmJQpX;OY(oYZ)?;DeQ*T0h z?uP~zSurDMMn7PQ@q(<%cA_!lYCoRo0EejK*=yi+-5-~;kMYufVa;>kb-($G{W@CU z{a^k3ou}vR8*j?jO-uoZC{6`Lwm-l6{+)Lh;2oPLDc5AvERjD36BKP2om;Af331%6 z=&0*j)j?>|9#N*Wf78Yo9HFB=40NCTlI7NxcG=~C$Lm6bx)%iX+Gub$khxtmnr^TnkYI0kFJdL3ileUZ%L z>Pb7yNA<;t!!#M0F$i$-3tBz~dM=~%58A++xDUf?`%U$av_y+;&8>o9?q8}8_O!~V zm5)~u0$YO2HcFf*#E#iWX{3DnsS{4s@3sht=^o^HLSz}tWqvo54gS6* zd_Z7iNTcBDtMsap9L3~}D%_;>sf8CYMB_{a&nM;*Fwd89lsiPOg;h6?CGD9ScP^jJ zf=Aml_qVP2zle2Y?&pLV7BFyO5FdcPUs6gLxXZs+L?W$$@Y?9*G%eCreOuf`4YxPw zJiayeVmeIfed+@^34b4^-Y(knn7TZ%?P-8d&4KKl?iE>p%&xRyV{^6@p`6Qx z2Bp7FP@cn^?X-;?NZ34^$-Z|T06Wsp=s%#tc6yq+cdmsW+|w7aRD_%{Js=)Tkw|dO zH2@Y3JuI7IZC<3C+0oPlAm1Zs6L6>-mz4V6_KpTW-g8$ktO`L;)k2#{Hr+DnrkkGr ztb|B53a}5lFb9KKPFFOYSg=I`S}8e%V~@b13Ai^_1UryWQH|@<)IB61w$QCvp@$5j zyc(KQt@oIVFk~n|`$TJ!Bb>eUt-b#L6~KU9_5XK1{eu z4=M8H1|)pzt=CwT24@C1vJWD}9hcH|4rCBfnoCAa|0)*NF0c##7`hPVko^KJnNh@5b zm7{x6nB5{>OW~XaPXHP`U`ub6+^@eZW59G{O1yKQ7a<$gve!|VBnN87i5YD=a>jjs`A2gW;Je)rB7x9JgQdeCjX0`>sFWdS+G z!NwLR)II*4N5@|S>|n}Lesg%r&%Z>5qrdyw1x9vC0$wkz(}bHcwYQ=Pp3LYV zJ`TCehPl{g_a5kg7@eM5kRNc0WTK=}hz1lP3Qy_vJub>?Jt>D0oXj=Rq1o0njznQedJNq0ZkxLkQfp(Ln}17t^IT7;ISFwX=JlaYgf9|9^S^{h&yYM@6bfzE4It7gza|&rqz)EI^E<_tPO+}68WqH8A=5HKP16w1m)^UK|D%bk zK3uYaW^gn!GX)+MTnnI{lXFQ=;lTo%g9M8jKzD=-Z3or5!#0e!4Es zbDizKUJXDX4*IZyl%xrN(Zg-;0x0R=fppq?Hb6;(jibL%-#jLhy?(tiU!(A;9LkVE z>+CylO$8(9B|=5-E`G4cK~uh)&)dE1M@9rfVUIhmqKqNHV?^nI4fC)vLTTS|-wYIe z*P{Xhc=-OKgKt=^{kJWf`)khQ{ zU&^tg=Zy4uYfWeaBH)qxV7o9jdP0?z4El6kjgfCqINfpvcb$J5Hq-bb#C%zsvcXtR z=`A#%D6k$<@{&VLm$~*r8U{=L188^(d&@_ zky!nV*OpT8O#uYeT*DDIAdQZXzKo4Ba!lEjJOFQk1Q$rC(?)n;Dxr9K)z_EY(#(b> zZF%p5va#Rm|JOJ7)z9XD0sZsj>_>L6{KQsgVA*9K)YOI^0l{EEnOjxg^lKB{sXs@^FzdGEkCS!A*umW6P*Od7iOCQNoKrhg9@!qQ zH{8t7W>reTf1vdI8``#8(*yIoJ@RX7+jy~0x5Zk}s-=Vb$N0+EK0H1$n{|=C2qVBf z0Pvb1tW6Sugw*`{m+wD3J{;a_27tU_OF|Q-t%-tTEa4Cq{X!a{?#{Xq*c_Fbj;;n; z$ZDtbt8kj-SVt*{05NLQ#@dk}$kc!)%zWC1+J+=uD?ELi9YGoC@k;*><}_5TIQnOv zQVZgHispZ?f(^m>yCXJo$rWqnwh`t-mo}*3L5SON2@Y_egc|wOELn9?ltvzKQ+qfi zvTq=~6L`)nuC_lkIS2~6aR_8kd`pa$ypFl>Xpp>OhDK+a#7_}LDNVpa0p+T!9$(n0 zns7{-9+Rp0?U^;u_&w1fN+~vkp9Dv#@+A2fm(1nUpP$wLuPey+`u|tZ|4(s|Lx^wH zsL~L-7q>wNmMSDbS=gu8SWXV(JZH$5x(mJ6oA(+@{Oig~*bO+PavVr$TGHp*&BSV_u?9+XRe-(fQ95!#8 zioqwaZ{87TPPblK+(P4H!(KAoXE5`se{0Mz&<_>VjL}-x^*m_YjH)sQloUWc2U03_k~e*b8=)K z{rVU0JhZanzA%dal`ddzvI*eElk&CCK6-cvJPzW-8}P}Zc+nC~GZiMG2=ff9Q2b~e z1Dz_eYx%3mb1+YzrrcA^jdtpt_Dt=?-L%?IQ(e{Ar(rs+ry|;MqqUCIk5oTGfRw7g zo~W?ux5s*^n`pD}wP!mINd0I+DNGHjqKEzE?n(dUi=bwNsQy0DwP~*Vhmfxm! z(`VCjSw+ae+(#!iPsF(`mcRk|K`I&PjdoPGW~I1%WI z({mGL?lQ{b6pG1q?Le*(i9LdqW@08XmVQc$3}vmxz#Q8Y+|@Y1hB1NRqSx<%}ulwywpa)M`a;iyLx}m#Qk~WFuI5hpL;J)q@pDqquy~KKqU@81A?9<5z&%EI#kOOQd<5m_=>!F6Yul3l%CX0k6AiZKPlt^6k z+;20Qra$vWpkd`nS2zTGjQ4)k)SFL}a@0;@o}t64s$JKYUDbVPfA3%P*WtpReB*;V zkFP_cz6StyLs_;;0QmWj?tOM~fP2?10buhwq4x5uyVBMh!kN!i({V+M5p(b;_;-V! z5i)E2blEj`!aq~+yKD5j#)}GYjHtP~-@3_rdp$M+#N>Uz)ROuwhvIe}-L%|AC8;yo z=rfky=oJ8?@1p0=N^Dio*SZKtdSC*fD&Gu$RxV*7P{5}+P|SB6t&cNV^vrEP1Wa&6 zjTF_Kri(JAtS($7J+`K_HP(tzcJWHAk?s%C&`R$cM{vK)=e^17Lm zlI*`Ou}sbmu2xkBWKY^)s4XhPNhruoCX+k{AfW?R)1D2-B5Sq0gYlU89bJpze8zn$Kzt1am{N4OPBy{f`j%n|h1WVw z#VrZih>=UqLx3Kn@wY*gGz1jQ{O4hl?)bPy3mys%8&G=a_`QK<18K|qpD7#rz5ai@ zrfp~a|MJJSID0-`_d^2)Ne}R;QJ;$!lYaq7cNQbXeJtWTOA7^-48ISE1g5Y&O%bdu zQJ}IMiFxP~NLt3Nng50YeboCL2?#L2_vIxZ4(}kyXq*xnM4?F3pGyqP3L61zX-d5R zy5#$MapZtz)abo<4KWh33@M&6Oby%sK?zzuiNit^CEakQ|Hj0wq%yx4u6Y5zK`*l` zR^`IEAI^e^&EOz>zBph(Rhpo#vrALPsy3~pk-mZBoh^Xgy(>i`YrhR+48W2PasnMKwg zd8%u9h_!<>y)cA^uTQ_pzOf+%-B{PwgJlBG6!B!0^#S~}3)AaH7B%DklPRLrCE|=~ zIAatP^r2LmpKiEBc`Dsh%2(5+d5(_*G)F;onFuiqID+nq+@sjhfzWn$iaHG0nIGO% z55YLlsV3E_Kd?U<8vqCmgS0$_*K3@V=<)WfWbYsh#tF8KF65o%k(3tDLMJ3DXj;V7 z0HbUABNYY71W`;2R6f(m&dOkMTq@R^CM|1{3C}7Z;x(?? z;Xs{lsRSWRuraf`$zb$T@lY-^FdL_e4H<}FHfj%pu-DGZnse0IrWxh_>-ByOi=*+{ zTV#8D2c^ReE8JwBxxuAO&Z9i7u~;m}!UE&kK+jZh!;onm7I40?z|=Pf{l23B6U0ny z6NCh>G&RjViA`VNJE_!`XjLsC58v zm`RF{B2CtYa{wwXpuY(!tGOZMJHNx{Tf^@H^G`oxhbVMT$=xB9{eb3ge&vUVX#{6pqF%Su` z3_9a!N(s@>B3wq^tzIY8$-aPM>D8D3@|NNA7$$asI*rpL>d&U>MOe`hW+6eE54qkb z?uQK!m_8Be2|Ki536r7dS+I_UrX`}(gS=0Y#gDoaovhF^vmzrb6KnrZN`>bB`Jh4Ax#hMi0*B?mAOcV0B zCC7tal(tIW51sT0p+E4^n9ZnAwlF#`K3SL;^*tXm9c=BRvtXBdXn89?Ew#B@0&Fic}MdwJk%hPd{NiDtRa>s}tPF2q4l zh~bUzAAtps6L8RuPhxvjvI$4OWcD@^zz=3w%cDaEubFcO(WY{yEj$3U#o5c|7g@~+WF)zMTZ*#WDF6gp{| z+nAk!4tmoCA2;RW|9mr#Ngt>aY1UCKkYWRjo0n<^yGf!eq}@4V06ctY?hUmd#dKg7 zwDCAyffBufPW1&0(?u?hQ{3dz0v~lc7Q)D3p=X({voSDb zpxJP6*OqtQbxr(U|9{!~|L=`A$6&C*1Dq3(I8FKmz(O$JBl|tgxONJfMwqS~q*I z#=SRcl@+P;;LC9QboL(FbkE$zMtz&doX0ca;N_3TYg~mi7J%}6RXEQWope*>gg)tL zlB=jBlIGoSR5D}ZAVgnJb^I~ncUlv=>1R$au$Z!Eos~vk{dBsBV(d@wO$K9COmG=&an@RlGw(+>EcHws4&abbz9PhQm1>XJ(Up#rZ!&$gd zNdUJo1psDdzy761Zyz2k9;eamRRj9?3abr@sXbWg4fDdwuqXz1`9fzkO+hDJHjBJ_ zs>3~47{f61#aa~7x#_~?5qb*eG>4v|rkZgMJv+ghp(7m-ifqB>P6ui#6Oi7e4#C>0 zM@B{S#lkJxVyEt->$G8qV_`6_cww4N83|I505EIUEekQa1eT77@7_P-TY@)2WSB{6 z!X4lpjT_~$F*|ZP1#-pTKL2F2rA&byYsi$(%-ED$*F#TWj{eTXD)85BFL2y7mh=$T zip<^^VRq|iUIai4NE0xD&S)$@0fT2m6k;O)cdMTbW;P78<^9i@VX@c$+w0N)A1{Am z7+#p!U>pXsp=!!eE{U|xXn`8t!Gp4N>7ESv7JWMJ3@`l+?PB+$7X=&0>k0VT$3juR zar(&YmJh}&KNxMQ2aCFEipi<(2|NY5nW)Xxf5@}hS=T|Z9!U`1re}-^9qzn+Bkqms zejgv6{wNI{9B4k1eJeIcmR)HfB1d7Nu^tB??3kQ9Wf&axq23fMf$7o+nR(}gdf8B{ zF9djY*q7|lFiV3Ze+1=sDba-v@!z8SbzV7i&%siyU8E%0R;q=qTDtuJ|N1n6fZ5@~ z9{Jlfr zEzjIs0cPgY;|%LTG^J}oM^J=+Phkw|hPaciS)&BuRp?X$L+WNnmtepGS>{*(Vrq@h=Ka5Dsp(J0pq&i% z$f05@RB4Au+-oepfjlE^7|eO!)+gm~rGIqL7YGT_@Dgpp;FgN$#LTYCjQzF3I^J-w zHbJA)EJuK%$Enpxxr#Q7uNTQ4aN`~;!_u4`drb@COgS@6X9=^jr$4vX|DUt5IFJ7S z{(d0Ntg*+gcbgd=f$e@CIDOV58;&0D zEA%qi@(PO#-+M0Klar0DSoL=&RtcN&s+r${T(sD1Dl1)>zEB z!Fl)C*l>b#K~A3b*3I&)h>c^}9M*v}z7W)yGK!AhX?Xfp1z?tV{*Few?$b ze>n`$SVQ$^8|kKoTwi!*K{QmHxyX|qu(&K#avqH!<@ooa9M08<5jl5aVYY@G0Tqsp=H}X;>s+TIFs| ziBN;v95TrTb+yoX5hhSikIifxp#!jsT=O7la588d*l>7nE6{8gVC}X5Z0C7Q^>dQ8 zIQz6Wyd2D#&RFoC2m_A3mv(>`f!!!+oBcY6rWq+~#>?4~Y(BsRs@regzl4t!Hm~(J zKa25_Me`A$Q;f8-2)cJ4Y6c97Jrl@%I>L~lB_c&%9@OIz&crRN(=XPw4BPbtSNTr5 zHH?IFo&;bxdguP(m$&FOx9vN3d7eE0aE{Y_AqfDF?%=a99^S0x{~Rj<)_i(0cNx=G zBxq}!!o)RIx@fSVbA?nT?RmAT%30Iq<73z-^$_YNoYtKwj@hQElMYM+mA%L3V8$E~ z>Q2?S{wNbv;w!wwVM;W}8h(1?Th5%!sIlPYYk**=pqWAgEP@?i(AP7#+fT(ZyQ!ST zrw=h*L7s0Cc{ovi2|p{*nJ1BPEx5>}a2(BFXAIC(d$glSn>T*SXD2!>G>2zOMq{IS zD%3J%u3Jb@aD)S_+3d3Zdj7`mu$q6(naAr5gQ*dn^#Av4*z5ndZtmxrj9v8qN6-Fb zWIGK;TUr+0%(1q{1c2$jLg|)bUN{vP>+HIwNmj)IKx5cg5X>X{hU_~S%6&(4FahBj zca6e~FAZc}b*iWdh)^Go!tUHfxY}f*>0#`&FTx5blE)qr-GJFsfixQiGh3Y8YLM(z z@4-#?Vf@)TDGr90!BvNK?Iba`y&ytL-0;W&+I3ydxdXU_5SdJs$I&e`8uGas2W zaQh^}tYMWpfB-lM1Q`Y}-S~$h*Yw5$ke`*ShZd9SZ-i1T)a8!~rXw(ts)Or>CReKu zxQKUiD^`wkPX9;nYH|0DeRNxs0B)iO05+UFeC@;Iqm$!<_umx#|IHp6X0El{-RKLx z*^Farv~QJf&Ao1ZI`(Lq(7-iQHd9}iP8nSlZ*+}{I>om&fw}eqI~7$hWoc5yyp0Y4 z=o2ONF^GCoNE2Y90~92kvLS-Gl4xdF8e&cFI-Q*v{m$B4Ca^0vFX(z>af&q>qFs(G2=+(;8Q*opzLeDGN#4)^+h+fM&q zH5t3;|4)`bG4N$K0Hi>Y2x~7o?`3MHC#P&p)1awy{d7;jH@cb-AG!Y*$QI0W1+J~wl3V2wjX7P9j5I0t z)conPqGJ~NWCF>lLGW`0oh_7JmoC+Js_{k;fHM>05EeXAhzj9U~zWkpH-9lUC$MWHX8$7oEWGvzoo9(Vhl}Y5u_k2 zol?U$ZIniJWkyAFanG<6bz>9yO|CJPfS}fF#X@JNP1JZ6CO<(7Cq{@eJod3%&Kyft zvT`SzS+^o3jv7RWvLHe&hE0E)%oAh0%uMHmJ-+ z{qT}*&&XNhvH8z+$Hc$jV77exwXHz2>Ymv*|LcLdZGVTP9W8%i7+$(TfUebu2Dd?k zqu^8yv+$vMDS?GdfU}LBIJyVGIrsMc)k9`s-MA2nNv!-u^DUsBIa|G$oS1(&DZe`yxJYnc&Qw~o`fU-T*WKk zHUR*a5dql#{A<7P^fQMGd+T*10PxBjDq0Xur)Fh_%W2WE-lDU8Xe=<(-_kX-IU(0g zfrECxGxZssmok+SojN@@;nT6bHr-68Vsx{8$h1GQ>**#@bS};jSn2PHvx!iW%$3f; zw3+&zR6Z5MD1ywzrh81GDUXd`a<{In>740xkz0(pI6_8w#nd#j`8Rmy{CHl*^GUB; zv~iM&0Fxk0EPMo?r=mE81dvRG9HAb_g;;2is%(Y`UO^0_P^1LJiHn76(N#Qp6Gkm2 zVP5=DtS2!SZj4MExVk^i9(`r6|9^$1WStbCdfeTQ|K7MV4TgcPL1#0o%hYnXQwW** z)8ce71Gh|Zn6$#9Yl_^`@}KNJA2Q9GyaN0ZN52ipxE0R1KLA*6xe8ADmcg#JHcud= z^TX+^B*HiBkQl@4!2*j?hGt}2I;@Jc23}juLGG{7U!%HDwgukyF@c-!yG?+>(dm!J zeP9>?e&M0TlE_^vR{F4{D+u{I68}k?$#CiWP;2(lKr@>)0-ml5aTJi)W@i9w98QyY8ie0J!w~gs=Dtw0gALg^kV~cp+~_A2t+9?&dn#Bk zvL#5FEYMSgtJarZEv&OmPdhf(q%{A902VZD{sh`M?XhduyOf1=bZE26zXIXTL0ycb zW9%X}>U&ksn>0mEYwDsv*IaBw$b*J)Sm~38g9o;}`@U;NHZ}UUN&kP*%?e37eDQ;E zjTl6lLYbz^)dlm?73rl#lT*pD9Rc2>!$3!u42d`0>MFb_3jW^W|rXj{$A;Z zBJDmyz?9de%wX~sV3Rp|P@!hiwD`aYNMS+K$7;{^Y|uLX809Q?#_>~Ys5jceTMKrW4w{JA0nU3VGan>+q4Vzb-SfwvG_dR;L6AI zP?)961)Cf)ZB~2yorV0oi8Vl%WZ2O9R;{w5>xq`nd|FUt1#5KA++?4rxp(o4CdNDI zVlLPOzGCvlx?CiFUQRbBXgYsnhK42wp>+MH#ts*KG1I$^AWx$&dY8fR+L$!d@rsCG ziWs3G@EKj+b3S8KM|Fr3u1nS81+@!xjZl$WR=AG>o^)*@Mp;7ssjj z--ZEj)Aaw_0s)oQc#{F(^yi)7#|EAn1{#Oag)xcSJ3yxaE?;vKz?z9(gBGd#0TM55T5Gz$jM#0q)D60I z8G*Fz{+9No9#K2kDDXIWG7FrY=e{{lO2AD9+_t^%%*+l?f7Fa^)3yioR`KR}3_16@ z=Of*l861E^zCz@ydh4WMm#B~DOlisge7x(ROGifi~4_ zQ6}liwh}@J;AW8)Qg;uy0-ZN6tq-`!k9B2N672T#aTs~>^xoowZFJEr#WPb}lKS*sd{KvY``C?J`=HBC5TKhhfz z7P^1Jn+{A_($vOX&0(!DT91G_H&Y z_-JSMD5&VtG%9*A!V21g+da6_K4oAIB>+wgM~8v79B9jTex+p0Yy#G9``0GmZQJ`! zAAj`xPnz*2!}J3YsCU<$fM9STwC%c$rh47G&ig4*-&0`GP?@RqZ5X4_S~^IS zqs?dAv)xOXnbYq-hR>9DD;COAY^sI64yj|26a0;6*+Okx|d6UylWy`ngq|zD#D2 zLI)^@ZebG*uDH&17fiW&C^>QFnsRfgFmO#SWeX}z7^}{{aU$gBb}s^m zuCH%m!EJ!zkQ?H5;xw)I^qvVY7lt*R1d@3-F82xFrq9d_lZ=CrO+sNzS~N4tV37O7 z0_*^x*^o)xbdGv#9-M=}iKbo%7vdOP1zh@Qvx#*<vioL1)gBJ7Vqn~ux zj&KeV-DXY?9W^N9vBMnA-@GKCh$XY+kzuxc@cCI<|6c!JHxlc5<~EK|kq~R>QBO=3M&;i5nwwyAn+YMJMf30MJ0& z$%|tGKh)D@l8`BNU-QmD4;Q2;L+5gc8bouOU5_)wOc&$RU$D~uk7~r1@BafkNn~z2 z7_iP%a~Hs_x=#kmliVfyjW2;WCAcAiYQDV;k6NWoy6==vUQqU~5`Au6Ps0 z`J3(-ZXZkl632(b+vjNXuYDBYb(8>X)9}ynT=6TPy?gg)fwwOIj>Xk}R$ZatP1Ym^ zz4AIQUhs)J|;8fu)Ao3TNO!D1oo~Z!eH#kRPKVLzZ90CG> zAQwgI{)_^2L)uc>%4MQdW~Wg}cb*D30%KNweYTk)7TDY-&I@8Ij#|{r|2F z$F`3rX$LRh&7*~wf*2M- zI50@NnYZTMHUAu#9UmM#`PzraN9%gW9RYzo0B{vS zgJ1jds8~PS*(KN^n0OrgYg|+UO9y7)~Q-P%KiPm$#1MXyC&^Ah^k}(kriRKy10)@#y z#T6`x0MI8LzAKoIjr9$VO#K>P6QL-XnPwoMavCdz$p3I7qq!={)4>ZrHXlc^(k7E; z%ljYg_5T;xpv*NN)7PElk8CkKU!CK@TSvOE3B*v+2!fhS)oo;{xTL?-=z0(-l7q7q zCj#A==+U8&>uRNLp_5$or0)W_EVqRYsyU#75Jpg@!V!klC-&dP}wQYd6b;%nf?Rfb!!*DuYq=V~% z5zsWm%|`%om4cY9qp}8SyK3^AAs~u<%;g>TI%~RKsc<^1LbxyuS`agyFjH#K`wPR? z_eYefr%D`(HKk)r!WnHU>mbz^$+sl-ZZRQhjl2;zrmMesjobx-0A^;#2Yl~0zWm_v zO@ni8IsmY9WW&#W?%sO`Qv$$ihylFPhmK}*)F&uJ9Zb?Hf;uc%*eho~B?q!kl}$EN zb$Dmjra~i}*!>7*=C#sWv6w)?#r*kw+fz}UNuW;gg&{y^pv7Qs)sJ6{+nH13wv69& zWzS5V+Qxi zx9q7_+&MtOb&fRJFh-OuAAE7I|9_2N_dor%VN9x_7}k1E6NGdVmE6SDjk&RvCsbGZ z7$^ocD`k+r&^JWXdrDbN5fRmU6xr0Y`5CAzCPt0|c@3ri^pJ=ZiZ_gfMm+)F>@25g z--&lwXN?IwDa}fhmT70Vy0^^EI2cJg`{*yPy}xz^0``F0`D8a{W_O?ekzshzuWd36 z5bCux`=`P&YM6jmHoz)_SxWed+<6!S{HFdia5srBg&mxSjCeIpTS4)oFlRu_+ssrA zeFfH|g6pNGkV1k|HwMJR@84DpKJox-Z5L4tFJAk#d!hX(&impw9#l9uu*ZM@m+riG z-oA1V09;LwC&fCv_xR3R3)mg77%9 z2NtOUFbkUh?o*hl(Va%7+o3tyJ853;uev$6&QlDoEac<*sgn1I&f6o6-PjHhDX)&8 zN1$VjS8~#xbFpPE_NX5QX0_(6_$O+Bz!`%fq$))BV;2>iqv|l8#70SMMVQR$T4hrk z94eJ|I@ypDoB3N5up;CVz@Kxvso$ulM|MU?I(upq8eAZ|I+!Ow4I*uzH2$cHxs)Xq z3MsBR$AR|T%rkNl4vEeHc=*M={{Iylk!`*|eedMiAJ{|^2gT{%>da7x1Nk&%*T+rM zan;&8lkEn;vAhcW}<6QYh2is1NP_W!RQfeb9iuIpOdW6xFOe2(^8@{)JWNoblsEE0Lb5Ck~BlPT4_c2{`aB@cGc409=X(b%?_z z2{3t1_1|%_Nv{ZMAfAiKRc0eRgQ)}0bn&8j!RUsYbP>x4J|bZ`pmT`s0DhGIlXc|D zmFWa7qF3Q=54{E3^mGXwF7WW9Cr9sE9R+xu8oO%`0G#(=!nV+AJiN1b7v#z6hQHtl zzzb~7`FdW)W}RA)&7aqFhiQ?~>384bI13)IqG*N3GE|T;dfDaZP7Sxyd{NcpmS(52 zA+!npL=ByaNC7oS51Jr=0KE}r)7zP%^ipmD91(vpD1>az%t3i%8r94D(~%wuk#4Z; zag$%)@aLi`KZHtkj}z?{cbG_y?%D!;!R9|F(Hk4Ci4vo(U8mSkuR2Idh%@i-{rrsIOVsV_ZR-Oo7#J-D zODWugITFO1@9Cr+B4=V)=Rp<>8f9d`i3~w zfh*_#VM#mt=&#vgvDjKpGuQavw0mpY`){4g|0cOj1p*v@@|{(UI5Kd21n>OVxIZia zZ(2GrueIfNJ5u?bAB}ltKm?>X?rBhOBL@y5--6;HGU@cw^jUgn-3%QVNC&aI-aV-# z5Y`tW#fw^FX-ed#RZ++3fO^Rj!Vm;0KQYPP-gIBbOaFy6&w(FyWKlE#PMeRPz$EbHgK}&ZvUyYJ$qvI*= zqBvuxrXq64#)isyyF@o?Md8`qr6cU%_ASw`I}}_I{1F7`<~;QEXFyGS(i%ggtq364 zvvQ}$!UyUmdcV&K)_3j;*oX<_yvD4<^RS9e2tB12qV@Mv!5}9vw9mj;sW*ltyFSN=G!+DXq0>E ztqiyZJl*+3QRB$fi~SAV?`|Ji%S>+7$8b| zELgy5^ec)UY^EWLK!_$Qw3tz%08o50NWzwb+1VLwSRC2ud%u3JssC;J+C=5wWb!xn z@A&7z%O8z$lA+X^YXcl59+0M!$$`lFVSRjoX9;!eHRS-OsJa_C8!ho5TcN?Hj%Mls)idtsMK~{!!M_g zz@`7f1wRKb_`STY&Sw=Le)#aD0RX$i&u`nO?g4;HycDtJ_i^`V@wkhCZ>#=){xD%p z7Avapk2YQoIDn&IyM|nwnY9dMj+1fg1!NfG#A&k9z9=!x#%NdZBp?D+-OCR+W6GEd*6t`TU;_(xc+RZe2rFgc$@m;+g&RU*};i~%+&;@EO3 z#GKv(PM0~0ZR&?(G0>mmOT}j2yrEPNA$a|8=H- z=P?PqO<=(~DM0x+E)BzTF^>s%Lb(1MB<381t3AvtOajukrfWZ%_rb|vVodttI3wn6X2!8UH`zcaUdb??j*GTN=vbrT(`^&li_*WL*mQN99M?=W%C%S$ zFr=j+HJBdRZkv!yedY`bZKV2BwWw+wm5O$WD=eHAI@wOF@FpEE>c<*3ThuAj$=xlv<1GbqccYy?Z9Dt|dPOw&}&xFd>+IL7SyE`m^9<+<&*9Gjm)^ z1Tl03&foyC9KWQ?S~Yb~W`N~#rznx1&N2o*bJH#qCo=u-%dvnwyZ70>{{NDJ06jj( z&%W2L_mvAd6Ncy4BDQ1;rP285+1R`Sv9+i;EUPswFi41i^^#3X9}`qG^`yZJ%37dC z^#y&fwm0Jwcau~^Re}o{?Q$)1+U2P+sYG^q`Fk+J`^6~Rt@lB2>l{@^7xLq$=U@ZKYR(ENNR}d*pR%!UBNBcOL@76YT9{D4)D&ylhzYsi@tL1 zXSgmW=el_SZ0pKco|NDC+S5BHM+fh1x~j0hiRQuqENRErk9~V@!JxN~?)EI+X3LSL z7&gUC#m`pS2I+L8s!`QX0nx0DlX!Gvy7rs!pS&w^r_G<;9Us0iwy^yz#W;0i z$c>*6@W?D+oKcP1Q_?x_mwSk3woq7jBzFs*b|n3s1{*Vv25bVmbQi7v})o#>=mvI z_cX|eg^#Qn@7rMs8x}`0^xaPXKi7QR6piw$()~BdA`YJaz|4m3{!h7n96+Q9mg;@| z^#dfhtQ%++b|9K)LQf$G*En2Ltr969NAUUAqa>9uth1ciy6A!g0N+7rFG2zK+FeWk zI#8XoYv>W2V#d{o;!Of%pw|J8jBMi-m`2*!8SQLocJ|?4GQ0EExy}D>6UeryiC@>) z>-RS?0PcM9J7xpTxXj2rU_QhJn+r+!+9~d#zE>7AO3)?ZG=^V$8(xAKeKe+PZo1A1 zq$1f>X3SBu-b15<$$%y|D=3dJl!>@|&-1@=J-%S)Jj%P8=0mdbQzAbWS%(Ms6_8r40H;%Q@7- z$J;eZ9m3RVii?|@x)!l%@&RF57$8N`Ay5pI(-1uZs%MFA2KiDBj@=AhaO)D7M-{Ye zEH}yuN=;p1!ZS6J%7mS?iS6@-Z13K9pcyPOx35yP`O8ef88YKbsE%7SI6`Tbkerjv zW`Z0Uk2&+y!Ge*IxlYEs!{HoC;2aO7B114;%ncr-Q9=NjGz;AZ7zf&5wBhK9y?Ffd zJL&&7HT<_NqHLGXcK7uAwmAFPIB<*soB%>F>h|meY6f7Sl8Ik>Hn+89Dn*9 zo6py`51!<@$-QL=Q{xJ*psrqVZ2vq zDkbcFauYKEW)ajwH`CN~j9@|P;}a2%9U?qgu@Kmej!VuzEITrIPZNJEIWym-Uj#0_ z&BiPI^s058yrS=G9t41y9Ub89U;E0*+t<0FzfAzZF5(=RnSJxadrudz$9w(%mRMua zD6?F3QUBUl8MfjwdJ0t1I`=%N{07ysxi&ht5M$`DiXMB`r^tD_)u&6HPKQ}cwo}R> zQU#w!EzK`QFI!~jG8Q!!GPeWJ;tTQE&@%(uW`#KcGK%85XV#me#r?J)TeLsNzsrQf zn?xc2^$byvnfZYb;vKmbK2A_#&q(o9Fc$;F=wsm8b@;GJRt2be-3XGOv6bvF&fE+p zbVMnXBCyqOi%NbIkTsE?v?))ZsZK{{u$4Y}7zR6g^0l(D-_-2x_5Zs81kL%?n?UHcc$1)xU?5tBbLKpFPE$PYWao# zw%Ngn0dNw4b!h_?(LJecI_*#Ge~fg82|~A{owKO zTMO_$HK2U|l^c%K@rEwJ)s|etrl2_6GMUV?b3}`?=9vR+@+H(!kgnv*%^STNw(9GE zGCju4h^Xm5AunDZ?*a-ShJNtWKVd##d=JqKUkgn=#*n@^&Z7M!9NU@M!e%@i!ckb4 z1sU>;5JrQkJeT|}CD+n-pkmw?fh7bWpf^Xc!0IuG>N!#y~S-VP{W%-ZdHP7y$c5 zf4gRXu5klkho63Lb$t!P=y`$eqRo+|L4;H+uj8i=S9S6$Dn;Gsw75;G!f4R~Q5n!` zp)L9}&?2q~(=ZM7!)Q$b>PX7Sw&Apn6kr=9T9)XHAfNW)`BmO(12aK5$a_~x>_Be9 zrq52Z5{vBhH18vg0;bN5=jW_D@%Z{q!TUP(YT{h$7P@ci3` z)1R%RH&X=Q7JXZJbf;vWb$fDJxBLFkm;vIq;Y@3fkbwV z&GXo}1KQBjQzV@Mk=7q>{@A{kjTt8@HA7ai1-K_%Um7j!RhRuVHGnGX;k+b+!7m`3 ztXNDjH}HlCnxMMGV{(mw%>EFZv z*n?~H&3*j-I_5wG14!E4Pkw(~ScjS6hTMoMuy?*Sa_^~;GQ`x015Mn8uJ(lyd(m#wGZZ` zn~Hh|au+WgT@n!^udY(Fa7*s_i~g81r|)3Fo6bpDV`9_&oZwY~+HT z>F(Mb-G{^Mx9Zqa@*(pC+nM`GW6B_(NS?TnZ65%T^uB0T5MHY%Nxarx5W}+#Hr`Gw z<9@nn5n560vyp|C4^bOnGEqeMlxWkyiN+7+yrk|#PUjM=vI5tT3m79qda1c+b19d- zPU-QI&UsjlF_dZ#527J91>7=wI7U=sGhAZyZug43nh zi?hK7(oVnr-!mRRyio1`ZKwb5+UQr)e>1b=XW!{wK3rP%ji|g|X7*0iyEy+9w!Mq7 z18vTF$UYct|5NY*&V(3%+jBa5NW^rIw-)Ye%Klq#F2P>bZI+%TXVHUZVidGmZZa({ z>I!k-)ldOygl~v&_NQmZ>pyM!R-`sur9N&ywY;cyX*B*`+`ogT+w_vfzpst+|8)WY zaDl&%`$zWB$i;a*0B~hLCU<;JZhkLB-rS;lOo*x@5fozn!IiIIq_btq7d23$pXAE) zd=??1kCT~prd5M3M>sp#KCET}b+z~vG$;QVr! zBFYf7`_RyPhRpZsI+3wB7+ZTW1Y&4TnIR%&zQ;|L=JolM7`#Y7MDeCIc5G?@fSeft z2N6W{zXL73C}J`kRPe|d3$aKjsBXK6{A`P7vQH|jGlp=4)NC^LSD=rGign&FV5R?m z_?5l>|D4VJCIF;jRUAG4p7@Up9+P$X!O1WO0FKfT1J&?e9 zwN30Li(H(1JE&r5qA^SJO(I~@UN!}aGdYEH;O=hOf4~ML1Y;G~xU`pQk*K35f`x{A zd{H#*v~RwQW&>$2&uA~s&g^WUEkF9pwtVMT8r@(2JCFPSHZgyuMF4DkJl$E;$FEIW&R{xhR%4s zn+30)s_XH?71h=w7$n1d)6UUnL>WR7+hN_Am%+;hGPprzMFsF-Za+metV(_U>_Of4 z>^Jc1?&0FShbMM$Nj>Nu0Jy+|wuu4lzW?yV7WeNQesFv4L|(w}(QRINei$B)`gAB= zYuZq9q6>->$JzG>w~<&fTW5UD8KBqGx)I`ee+dAQT>=yfT z=iuufyMdl2wBQ>0G;y+y%$RLxcB0AG?;{rqN-bBXaa4UUJFukM;fWc*>Pm67moflC zBhr{1`o6k>A+>j6h!dhP0SdVU!ZDaz)ySeqEL@BeCz)29j2_*DHCf4e@e&no-LJc0 zM7K`g`j%@@_xk_y0R!tO|Bn9u@gJBCXRH5g2yWvhzA5OjR)M9&fJVXs<#n9?drESY z-&0)1mFkXg=M{Sba&M&Sc$fH{?0Cl17is8KmgT(&%y|I#I|!~9m?+b2|4B(=2 zo1#<=!bgZJTVXWPJUyemJYCw^V77ewm+i%u|LLu$|N8e$_uFlm{?9e>bAO-H{m)JR zAAb6GZE^as(N@eG8-fiVs=YQ}hydp+Qc8_6!yJHXXpswEDyY>610$OSj>hkXCh+Rc z&V+*`$9Uggh|i3#pV*9VnJXrbsq2di&faP!3fq%061a()%rQ!xv2d{`I+;Z_Zq%A0 z6mPZOFFfbXYX@)f{ybhGcaHJy=iWa)+VZUJY(&2Y0M2*I?3%xrD&v3X=bqfVd$RZ- zW|6<~_M2A~j9}TqD;!+_%?VeASNA4gSob<-@EK2i=bmdCQOYkTW$(hkqM zOOtKU-G%PmO|r)+el#O&pUJ#IRjViIi*BX)Y6f>SCQOxe(sxhv!jM6o91kl4$3T+} ztPhw~DS0)zV)^Mw031Q%zGW^VH!IPUrvXL^D4>Ly3d@6ZExP<-`5CE_4EUgl5UG?t zD|4^k3Wbtk!Tc#$R3@_xze6YF^RcHHAk>;+6-CH{PVarZG?qBA(~$wN*Z*HE7*HLX z#qh!ofB0XSz5LjQm(T6&Y-!73YFgkN!xePRR+aIpr>t=ubaOF~V!DYG&62O)ygge3 z>=aZZs;eHU;n8iPyX>RLEN5osQoRABPy!G@Per zv=^ttD)R5~*X+g5{g0C2-zMt+Huu|Y0om3$`_BOebM*gG|Nqm!yZWVJIkIn*!j3f? zfMt5)Tuf|lVa-Y`HfYxDZhD1BftJlTI;^ZmI0{b+%w zzxvrb_qOOMH}#>{LK1LzV*s2D2mMPQ+`oHtz;|C)1RyT_fioS}Yxxu`8jsMtg#2V( z=)s^8rOis88!gqzqr*fAvO!K$8j1{?zB|Fpi=) z6_RRYCxFX)_E#1DJJ?vgu;1)OGUEiXFfkf;H{1)xLQWod6MiAnN}n?*YuHDa`*I(SCtN zvca6du#F<%C%j37Ir%6!p0?1oCC+Uoy&*~>T%^<#J2$`v&<3N~$%C@7-|PRkYxLJm zFQ=dDpIAP(vlpM(+3A@rht;`Uz-$2+7PJE_n%4#lwg^ia#E7p!gW9|VK5>(6rF+_U z$#YH>?KR}`^^z#h`XVi*6vVe?ayw}EkR@93t8DA{?)&CkpgVGcdqljwe9qO-M=>_1t|Uh=#xKKHU7iW z%m$qr%#>aMRf4-9y|cXOMuA3=M_|x22BAx(VAwJ|1eIRXvN3U(ON7_<`)luwgQ3T` z&%^C`#qo^{9!75?$Tz+9zpocZ5JC)uoXCcLvOq|^DM=xXMOf!Dh6QMb)f#nx3 z2RVT5X%x*V8tq&WcE5pX;oJ*WYuUW$fxXV%y6IlUl#e47QJZ8)%$K1*-q8~0HaDsb zIYSG;;Gi#?WH9B4^$-g%ozgx~uB}ef^|Fh&Uq?@eehfrQELVy%Nh{JXDk~-nQNiWo z3WG`tc+g(Qb>?yofHikN3!uhAkUBcpfiE@8t!JAM3(z5aiT20u3Y@n>_5 zO*~%1$y0mw&40m$KmTnTe*A5-kH2F$dtnCH0n8Q)+G1pI94uf9z!nS9>n}zr54=^E z!)R6KUM%Ro%Y45>3UEo+z##7)-2{<-f9mho7wm3Y4Lgok19~6nBv}&Tef<&Hs4Mqwo7@J|HYCM|DW=?|&<> z6SoQ_x?rd`X#o%k@yg`fli#$y`1*E#J2wAjW(zFtzjcB;7tnWJiw5)XnqLmvN&@UN zkM2D_03VT25WD}{{*n%8cvw%VXm=dsCY)fJd{xwKI?7sX5Q)%`DoqYFBnN2yn@74` zW0>~t5mhE#ZhZst5nEsZ1SrKZ9oMuQ?g*NXQP$9@@x90eMVrS=;p>~Nf(z_f;jrKy zZ^cvtL3UfJ>Yv_v7n}kgj2*ObT48gVJfyHI;OQd1wWQ6crYu7g=BuA#&K4 zcz`nn>tMkIK2R7M=*Eul&l)|6u+_>nlSetFjyv(5jFieiU=t2k5IGCNj{VS;n zS=W@@#76(Jzyobg^tkfvUo<}bdE+n`Uw&ftlixS{$?w_lqu(+6_`9~S<#^1^4i>P3 z#lisE!NLr~2ncZDyjFZ7$p{w^h5rLXfvymkhXzUm%Ml=rH(8JFWQxv<5;J`lQA_RC zJn`#*tfP9HOzVO+6c+B~={`1MmIY=Ix;DkUb-WLUVKo^&I~(kDIoQk7!3eYEhyS3x z_{u-Cw)u~LZgXF4dr#fO>Hj8HK>Tx^{$KyQ_p`ri#=$t8nsI4{!2_)(H z^&uTmsH9geJKlo%Ory@_u-uRU3rl=;;CU*Y9s>*(3>^rWAjQ) z(MtG!HOw)^91zG2v7-gcD3q9w12$oAv<7Hu7{>QZjXVlhW-GrY(1vqcQaC@@W$Qv} zY`PX2t+w%O7X-#lzm^9x8xD@_^ud=_^z*&`f2ZcYVg~G@^7f`6%7r8kN`I15s1Z`R_=O zQZ#HuVc~(WKI>Xyku%U;#bfU@QI9D?s^HCuREi<3Qe9$3C!1=qqk&QcUALt9Qfl8klZTMlMe*x8r=Njv@MH|4x6W{v)~rTx!cD>n^nTc`2Y<~=s@+cf{xe~aPN zj(_&|#sXm&Yeame7Ok_ix>K}H-PHVW48)#pH)v?HqnIrGfn*6QkwW#|2X zK4%KDfW_1R<`74-SMu;e*+*W(-r%)#aF_p-W6gKx{+)xnw*_ChsQ^G^2;lg@?g7JL z*Ng8N0Oz|+X6VUUK!x9Ldy4}TvU7ghbj0AVT56`(p_oN6pz~BD7+PZH=V=ouAbo6Y z;h?&9HPF(j6JtBaPPK;)+bfs<9(LE8RfJ=zpC_e)o3BymK!`l8kax;xG{i)EjHw50 z8%G3wAox&lJC1iIa|3~R{H6w*NLWF7Oe+S&>0a3sp(H~`d95e!(^0)s6Kz zzhNA!5|ln1u1*ur|JF2Hn!0;nTcdiFUFT#C3F($(j}btd1|=w51cJSyV?z{BIk2?rir zvS@j9a` zk~t3oDPr!#@Uc*0ctbLekcq#W@Vn0(fQ9JZZ6PyROp3~QJ2^g1yCPb8bzfGObU=?C z9E}8yoe*M>%r`ELCY{e}=$I;vfADEw*LQe3DY|>n8DXZ!!c9(w!E9I#cJ|KC@Adze z00gZ2ni~EJ1em@zNd|^tFrGZN7l$e-A|MO{nh>pzp^Rj9?k| z7%lpN(gcvz?u!W=Slu6Hv?XaT$Ep8vpz-jYoqg$_wA1%~ebwO4H2&-2{x(SfZo@tH zD%1aU-&+R)Jow>%vfBTaOEaF$)ctYtPb)0z%f=Lrl{W6RtrTFv4C}yht0~YUa4}PZ zb^}2X?gYhVVJ+jqU{?)95Fk&_$vh-bro#jlGQ`rtfrg$`+5p1hu%fgbL~u8TJ6}}E zP?8>~w-dut3d^FXi}x0QueBMv^id~_hbKpiyYmY`>NT(R=|8-J=it1LTl@WE@Z>VI z|G4z~gjeuB_E0rb_G-+HoBMrj06TrZ5=#S>0k1UFvb*)EIh_l2d|cbALW38VgxElL zio1D-Y)9J{?fb+qAe_NqOEW;vmDg!Dq|k6~`a!SfdhgVDW<5W;b5)w}*R-?(5>Fi7 zm=Hl_Jnp~j7x$WRzTiW#BVbybOG_&KM{QJpS8d+LVsI{RfsIX9iP2N|lN1wj)7g{5+*Z=R{=&Qqj z{Q2CmQ9pnP0%*fheGh4cCLSAy?7EH=s~Vj^LhIz{$i2yz z$IES}n46jsPRq+MK4v+r(lO4?M!i1=17XYee%+pb<-co-gTr8ZhxIkKS)2anbOaw{EIXNo8nCk&oH3{C`NdE= z_&cqBMRfkmaiVm8>HbfCTUBt8mfVbY80cN)e)(MQ4Oifez2ZS#EbQRu;NZ^ICvm&) z?*V{I=(n-U<#_-2@Nv)d8KIm?}ED z(q`iQBsM2W=rwxJ)BhlwknT`aUAR7eYTBuvA)0?V+pUItBUsF*nLV`_uv8LTVj;-H z-L=sLm65T4XVHiTWi6_XK;wJ-@hw+N$a%L8P*`a@whmzOQ$jem*jStM3^0$6WK20{^yS!1$I;aL0m0>rDUX`P_(#3aCvae}g`M61>|XzW!QjB0 z`Cn}K~uVFTEh zIIyqbRfgPko`&obP3-%h{&&)V|g7t4wNE`OiSbp^D=`{*V| z|7`*Y)=m3&b^j-6Pk#2d4YsslSen_=vggs7qHoR#9{u`_jco?eCjh!%pMU_`5~mCo zhsXNuSSQ-}dnwdNFslrA6d>rP!eX##y{-deg3ShGkQ5L;3jMtDs2=>lof|4xAYcbY z_UZRkVVBO{Jk00FEZ0Q>Y;50B@Y4E#iv$#|?COEbd*gta4aB`e?&<-Ml*Q)+5cUAT zj;C^~6ZFwLCx`cr7w_EcJL5Gj5Om#cxdEA@jG^qz{NCA{GpFZw*!TQBq}qB?9j;SL zTz~6%0p8$p|9?7FL=%UDX#&Bxv#iB#{v{Gy@EN-7%cX>i`7ev6z0oYqP(x@tsOfBr8w=T>WX?PXOa0xezH0X@*5F)$1hDSWwf&`YD~b zO(C6}z{jpq{W)B|c>pkn)sqjSA>ptz z{I_ZJ=XCzs{6`>Q?*6;Y)c^CE{LTIM_}TB+;`HND`*c<`@s=2ZdAkZl532ntJPIC+ zN7YmYt$zgL5hmO*(zYuWe1qX2rZIKbWNk9;%4II176|pH#1nY#G~)SrYW-&n`+e8=zjre_A){`SNf=g z^O@TSdyqVKeNTN@7uw%Ke5Fp-?hcFKeNT@$3|Pp5n!|h7PeTduBU^=B#Ro;2bO(u zxJoE6vjNSt%&p8LqX6hrPc}vsqcA6}oRi##lD;wwlr?rR5=M?}mys>B9EMf;#lR+o z0Twnq{f3>r_v?20*0C{{HCC{-zlR z<1kMDIfP}lisyq<5t>``nYoPcQL`vQFn#kHd@VFm&rdsCTrlDYLEob=0lLvGecGp~ ze8-c@;x^(uaa^pX_4sB@N3#56g}p~++!tlZ>fhPnD3&=OTqL5_77;v|-C|WsDEl%~ z<6oqUT-g!h?Hqt^+kYJ&;+-c?dHB7b*-JYg6QH=kujbcHO93c<{<*hLP7Z*_D+KX2 z$97x>{^9diEp3XSA)ISsqH8q!WR$Vt6dgGoLLBZs_9oE-v`r}{_;`P|&MrsT!-e!+ zcmlzq6ksa&WlANcbv-^VyUMDzKH0i8I$bcTLN*Z*Hc(|=wNV2(u)oBp}) z?b7_mKg*vj7B(DwV8gu+?3BOMzJGA~V>|ft`?h%Yr*`nkAKBv5@7v<#Pt0s+Qh*8E zn%Ds=x_n=802mgYxH5qRZarL3OgH=de>!S|d3W^HRzHlZd}n)c7;HJ#0Rw4EuD}5` z_8g8M8}EO{&YphV&YphDc>E|BB<>d7x9R8SZT@e|K)e=_}O>O zcxGIlu9|GsD$pIYlEHW_Af; zq>xJrM-2EGat%yv`db0lC5JjbAu{8$1NFW-^JALsb;RKGuYAeq??uQE03LPd&3{ZX z+NH#gAp3s0eq9Hk5JTwW1AFq7CwEW&t3Q1CY>U2gp8{}2t_#eeHTO;yM+XbLzi-}m z?(Wy^+~zv(Ip|iuQ8raRs%5oNgi$Ls9uSGPtTBHvsuv+b&~0{w2Lb2$tKQO^n_E-e zrr|(=XiV56>UtUg3hI1n_SFzijRVCdEkNC70^veQ$C4Gh4j;u^l}7Q(HX$f#KPo8=n8UEzUkR zoIP_D*J5h+8&y{t{}C*3*q9`|WJ&IL-4Fdb9vuEPP5tR2&ITNr-Fwf@o_y7YM_;k! z-4Bc>Pu#VdIkREm7q<$k7BN@J^KJfmHu;Pf_Z@Br3)x#S!yEUV3i$P!u1@+ zOQ_rH7vF!$?R2=X2TvayoXqr}H=^;sZUDe5eZBMG=;UC*dsnCVzv|ZyclZpV#hO`3 zd+c)^GB=y=Dp~gI;jzBsvdnPS=k>C=-iR^a5^14#`cjwu)(dPgQd3hYYi2Zb!h#M6 z(DlmII)hYU#3QbSfB$SiB`83xqbag&>CCe*Q_aj>Dx%+aKn(+4B>yO!|I6pJkkT!{ zMC3B)#INazCoSU?4TK84x7PTld4ls8qv-$hc~f^}A9*&#J2Ip)Flj>LJqEFe>d(!b zj}VOo!%=~;PqpN857w#A%eVIW|BD6%=8OP$l>k(+g6k&z6&O%8^V|Np@i8ZlZ8&*s z%LkuNzh}$mwm5rci_@Rj!L#q%;@S6C;K0j|&6dy2hUd08J2T_b$$Q-15EU;Lvs!X& znjPFR9^Ek>KCD$6%qmz=&&O+?eSWryMb9Y^RD)qzyJmE$2SZy z`RsKS8r!0-V5N3bU?Xh5Jzg+OnDplnCEBvY$Au0h_s##SHvg;j-yXg9XmN7Go4jie z0ASmn-9K3z9sqZ2k^sDMjSg?X{pZHBVz!dYFuLxz!_8!jRDt*TvpoH5d9_8O)M%dY zv@%EAo~UC8X{;<*TrDp?xXsHXs>i|!HUY~b1JLW%*qgzw5frOGH8Mm<6{vb{VHXro zg8u~|`^r_Uca1M}BXpgNAV_f_Cw)40 zO1sy~j8vn@JQc|xfRDkPKnF-9BY|N47s0KW1P#nhSm-}=j0J3yR(OPotKxbX|9koL zmo_#kd;S0UL4Y{*-<1(C2L!BR0Ym^`+wX7N{BQNM#XYm5dp6vC+m;W%G~f6QXJ$NG zfdywjGn{_hjM`S0?;;$Gh5P$(^vH&jr#2iuFfNV^i-YpIoEQe{qV{$H0k(PEy8G%j zH~-boH&OhnYj{e{m}~r}?>+g`zhTCu+49tEdD@a-C^_-HN*fADn9OJ^HG!2E~^Oc_G27VnZ z?EcgHM<+YOMPI>gbB2~drl!6YVa(qK9g#&>k`f#so~iH6 zB|yspvh4SwmjEYM{KSG+{aW9f;gX0L7@6oG^|ZH(`w{~ah%*(bdJ|ZZaTX6ou(B%r zbUnq>veuK{nv@%^hn?@{i}Inrh^GGrZ|g9-^WZ-2?C?oT^~fFoxFTOCM+e6+9Ea+7 z|8?PD0BW$*{Kgez$gasx$xz`Rt*H-Az81(Lt=(csuYNL(;&SwqgGplLxk_;p^ zhNz#witvpto2$PgwL0p2XA(4;I?Qi3(qy-4N{^=2n@pl$%2mJ3imPoq{dujp1xfdz^F34A0fdN+xbz?mSjfVI_Fldxf z2WEIr26yWumuMs-fWnUCdyQ?1)LZ9!vFYEtH2fFU{9m{GXxrw07n8rahJWrcPk!)Q z1{eWacO6mE|zocVRj10Z!FQ%A;ybE`D%%ySLhIt*BHk#^=4=X0#!Jw|f^AZRk%sHXTci=#g_pZHm z+Bku-BM=hz4ORAAOh9nF0Bv=rLfUA5_ygdx%NwO14utVziCBD@05NRlku9~s z)bJ5fG<8ZU3Ym<%Y#jaH3eSva-iej|e+gR-W@m5x;$HuMfzAG|Ab>XM=WY5UprFTo z*9rb*H~zZ-0lS`yxqolV2H3;`*!E|efU?`r{BHy9Y}@=--(NTN*Pp%p$$w#opZ>9N zd1hR`FdGJobK~F#8#ZIvrPIjRg08M8O#@IXl78tW=}B)uG6MvW!3hDL`*50JCc?fQ zSD10pw*ttiK2u!-TB7o~4Y>o|Z9kJe+QPn_5Rz0vq67S)?34;pymvx_t{{ae=r3=k z?AT?fgfMK9=ke56zGCx#OHu_cqItjArSRzP9ssyD%|431yG!C=F&qFqF!IU+S#KHv zJJ$l$b`lo5hjorI!lEY4lQ(Z;ShP(U(Y_&c^n9*aJ143-B!bQg@7RDHw1&!Bj7{8h zV(-=W%ihKjS?5iceF(RI(6Y{ZY8{ovUGCZ@ED3bYxxsuu9$AOzIx~R6TFZ69=9^xJ zelSc(0@xChQ;R|g;)om>3q3QuAFsT9Gk^w=b5VP7XaPo7d`%kBF#}m%-+=@QECCs} zvKUH%;P=E*mVpQ^RK-CzCg_tDSsB&GqJd(A*)Rg5XOF(Nv6Y zHh}@Lv04W<#K-Ld6ztOUUnUT+i3zZ6OoUS@x7+XX$~(=YZ@>lpS>P*^wGU%evlli#fD~fk4==fRIKoGotH~#t?ZZKuk0Q z_4OmoB@!{N+3O76L$Xm|ce;cJ{m@&+1J>m`-)wom1u$_T?+aJwQ;m1o;^^?;PEoGi zxWeXENC1uw500~Q&`qm6-w^7MX!;hoVllRjv(fWr7GmCt1~VlK1ZRIYUzNp^K`#!a z@Xg=`)Gf&`#i=MT3vzW2ZUo#sG^g1_PQTyZf2ZZ^X1ppE*dzl`bUw)trk|N}`t4D9 zEE-uWKpSNaRM$h5?3;m>?0zH-urv3Y5n55f7Jp7_hyG9)#jR{|*bkHQ=}ZV7Bn`Is zG*q8aCLi;Eqe1ep8Ts{#S~ z^EpYuHjVzKrhnbfH#Pmc{`(@&#V*(Era#Zq@2@A^A43!ix+kj+yIV_wxN}-SNDl@9V<$3_LnnJXv!p;?Vip(lo9c z0D$w{A8*|~e%uFndk=t%UkgfMl_j^mDkjioHcNFdFI->L*e=@HQxIBjC+Ldle^PCoq8{7!MiCDESUaH4W_0Cj6VkhI5QapT5$Yj zj}Zc@_87sWsL=V-iWtDE>1Bpo*jXB^(4pyh9n+2>ij$1TmmVM>igRzua9H_6EC(9zf7XVByLPbG z|G#z+;8lQtZKMa=N)C1b1$JrrcWL-9Ljtf30I*FnzYQ?3?!MS&>c4OP=VSeL(f=z8 z;O^O<+ua}iZR2oe99|lhXJ!Lkgs(F3lHZU^fm0=ZJ25jxxXe|m=nxqK23;NF2!h!Z z*7eGe^83Mc-G}zB9f8`>!jyZ?DeT!@G;8x8d{NbOr#- z%pTpv)BUA=F}*&@L(Cfat&&jGO_hPl7GEvW=u!mz43z*HB?GrnqUa}mQ=ZX@i824&jH zmIBAI*}?f~e-!Y?4On(~)m>6Dku_S#>+d}{wb1# zK;S$e#5yow?s1zM{mTLXE}9K+odtUKMaGt`~82< zFq|2e&&SxmWtY%}L>EtF%=Jx6-zatl+f*L~4;>WDEyo4}oyj~>S%n7LyZcw_5^5}O zFw-@+S9$AS#>Pkn4wSCjrOIjz<`TCjxd0Q{4-&hmbr|PI1x|+OlX?o)g(m(mu;@JY z;69g?;|e+u!jU%O;3IhnV&)pzHx^foN^pF@yIb^@+~NCs0N^5;`I&BU?brP~i+6el zx4!`|;sn&NXYoi@tElM2<8QV#v{)>;#n}&rY|f7bIh`P*%k=UCz)kX-)=Z}B$xL6| z3>m;s^C;UJS4(&VYBePtMNB#y~A+*}q=D7TKbfTBfod;UX5NYS;DH z0L5)!Nv0S!NAEBUV;S{VHihhx4r5LaAZf!0PAngOu@#Yf{r|;*0PC8fZGnJw$95Mm zV4G(DRUfym+1vD^RFKJ?#KVR z9ew&;_pS_e<&zScJ(}bqm}GLz~XN*V7^J-E5ft z8KPOP01G~7kYOJ&Cv7K-gn{wBG1>aWeFg=UUm9@bGbTGEiCxt96z2bNz#kKRa=0N= zqwneboULMgprSu+rK!(sVXCavU3-sPVgh*4%i9G23JWZbcYJr4!>aZG!0W#R-18kB z9y~3lWLF=EI_LFt6|O&-;G=qPbZuwfM=GcM&|%YekgdgI-j^&Ox6Q~cY;=hk5H#XY zz?ac=U)x?}!*%x0=8@p(85fO!PI~`9*lp`De37mR_KGA6NG$v zM~{2A z<`$FJfkIqdL%u811$ydqib*_D;8qr77Ihu z3BE~$Tim2PYR<5sLMU>*@s#HY`MDl>_gZ{s@<)oPn@R$gbfjMnmW3)hXg(Zbf~@G(#$YQ4!h?>ka`CFJsf*b zNr=eX%qd^pZFKT(bY@)LeXmSOhc2SX+P8D(C&4nuM5aBg_LfFhI?p>0S!JEG>T) z<7e*0Svd&{fS{(nl!jeB6?}6)Gn9&G0YXgRh4lpcuS;!=7r1lDP5+g+0In(kfQ$Uy zqs8!~fH|-E7q94P3&?k&-S^RO;`{>N-jq>&V5i_knmXtZTn0>;fsxSsYXf~dslOTs z00H#9kxg|sM`W0(VY3t?+p>C70HA;Xk!nYA^#xts0m=TI8g@859SNO>cF5IDwbt?2 zp$-M_Uk}(!Y-FMJU}%^%63DmKn#hxnV`p!|>*&*c1s9d%OP)Fehg!Hylt_dVMRE2= zdPUJl7FvOLT_%&vna5V=05IBM!>}s2myf=(*Z;o(AmCNNfQtkKc3}xrK*pw+!}Gr1 zT^Ir9X{L9P1ib3sZ)@YfYx6%0t7yJz;y`b-ddP9UWhWCD8zuv0jos+Hd21_|X`1Z3{_) zeTPW10U^Rp5QDzvH6)C~Yy>#@3<%e5Vg({l?A7Ryac2&d)>QLQ*oFnh;yQSddU*07 z>R4nw$B`0%&Q^7?yD=^>6|(#0|7z~bt3MAGc5=bZ{FOv}Zbb~>!NMM1^o_T*TtM{T zH~(uUtB=JIQww@0M3ZLO5x(I~T%Z~_FT`eoWZ@g3)`JGhH>#*P$mH5ny3}OHll$TO zA{+k*0Bkb+Ti5u<|L(v1p56cR|F79_YFxfBTfQ)kz(U+z%E5Y*)G-hRx;~%D z)!#e?5H=$N2%~DV1jHlg{83u-WnW#zsx_`K810X5yEpa{m*jRSj1j{=RVIvSoWwD> z548!!XxwW)igyB8dh0=$|T~|=Vg6pauYjoR;p z?qu^2lVv@x$T~gKsexq~gG3)O9LEkG_0NoOB%4WOG-N~vAs`h?a%6C30~79`QVFt{r@!r11=j7*aZ~W=DlwEd>6q2IB#>kZBxH1Ah2)z zZEe%P2>{qe^I!em(eSCg`@MhHFq|6Co*T|ym~rT`F#5WHVQ}H6>Y*8J5v>TU#i{Ea z`h!}L5x@aA7zuR|^ZwZUVT8fhMh}r>=BS2IBp2!WDy3s%0BU@)ZW|COWZc%fFH*?x zaV!e+(S}XdNSWTFCcHV2oW10c_(6t7+<^@my$JT25vTzfwc??FUPe}{m_LGrc{Rj% zdEflcEFxE{y*^mjo!fBOuQCImoSmMlN2eWJuRGy}z-Ww7Zt*dJ%9Y~b%s+>t$%Rc+ zCa)eb_HqDqcWuQix>Gt`938xj&*-E2nkf*((5L?vLmn>?bKpblUMsjIW(fYe&_ulk zU^o>8U9LSm+TqxVN^9)J4*cm>5 zO!|M?aPOnN{{ISt0q1Riw*dq$0u-o#fou59sR%gHHk@p)&orM!+(5AjnT_bWki~5;=L7fG-&KKtWSWNscTvp%d{=$ zH(W>{uSZ{ex!v9s`Z_Q>I>$S`c2a=D8-D4G>*Qi#cIH>}{nuqz4;I4U%Uhs3{s#_L zqBt|O^QaAXBMsj?ZH&?ob@>2=A{QKR#oM1{X0PXq5pYeSW4>$iXNq_S*??dsx|d9w z>r`N%<-l7u+zVS=r=^=PAt*+9LNN>}2p$BmYJeYf=yF@?&mq8&{%O65r{pnFn`WRh zK0>+Vubk*$Y@_xt5-8y|e>Q)C)!zvzIViJ@5&0o!8gBZU56J?f>n)=@fxB`Tz%C0( z2gn7QJ6CaO435M!uBQKk+1Z0H?DhXw90)j%JN{g=f6<`8rpIqe9oV+vyvW9X7f|4$ zoBrF}_|N@)F7j_q0x(DY|NQs=9XojWL$l>et~3LL=~qP8!QJb@8*u!ro}J(` z278UB6$jlw19EH_fEYQD!Hhpp@=@6fP0!Wehp!3!W3}JcNMje~5G0zZ9!zbY%bL87 zeeoqNI2ZpxU-c;$3mm`VX{ac{SMKY&0{~l|7~Tr6gDZDxlw!}YGeMj1u)w2p?fe9o zAr1`>@+R#nljsEz9ilb2h{2>s023GQ)9NospBw{x zByED(5#J}|c@s%_XI-A*&J+WQ6x|TX!i9svqPW@9|YYfPLd%H~tj}ur2L>)AWB` z^Z(f&{s(sa>9<#U|I<&6%jaesEOG9}eVsDWS0B4cBGt;2*mol&=>UZp%y=A7b)(s7 z$R{PqR!a|VYts%%?r|#lX*d9k(g%qAFHGD)Z?!9ieOf=X>HTyKD|1k__EM2R%mU+Q z)zqRkaG2P6^lnamita}`ZT}Au#d??-K$DQ{Ynquz1x1k21U;2%D&6W5JDfNC^pm_k`^}h2x0B{*!i*)zyzg`clS2?OWGdTE-G;sRkq_u^p$)Z0^ z*QwO^D7(smFde1Vm^*~H*tqEsT@D~SHPpP%avw(hKlD6$3gD5OQQcI-#t6SwuA^6J+Apf1zs~ypi)j3}1pww6|2Y|ei~IZ8 ze{6St{9l?4FKjq_W_I@6z@=H#@B3}Q$H1BQ1&YGKY)%W$xSH)WG3QQa*|tCYPH)xS zegv0j#9&?rmnNiU#Re}Ug!!1^33zYpHTfvie@CUJPR1295HBNT`?XI+8EC*86k3Sj zLjXf)!7oXh|5$RcND**A`kZTjajx9&`{UsdnQ{=Rk_@rKt$*bj zAE?6{bKcgVF_-{=^S80rA7y)!AV6&J5gbqsiEl^&X!4@}K z3j6^mE$p@ktt6PGW-lh8-LEHM#a}FC1b=*;oeDNM8Yo72WWA9o;^t z5qnjoz?i>`Zt%wjGWRB)^u~S;OmJ_X&4`b(J5P-;Az%eM(?UUj&a&%+8<$el2slgDCTe5>49zHjA6MQ-rtY|Ue1=RpN=T(|h#^b!OMnm;11*E2C{F}%hmC*f&|%ii$E zeVc*$)v1Q^crSkITL1VFP`xj0mVHyIo(TQO`Dnnk3u0piDEPp_4A6?EpE(ggn{}v@ zU-2GV!2@Tu<28X4V8sI|bT*5zkz1UhhN<5|1Y@d-{tYUKKGkCrss9(-!_8qvOn8- zpZg{?{M(+hxu0#L^REDaP1FBvwEuI>{|7()f7|^Z{(lT-FN|lOj;4QS(#!`OJ22l` zOG>FWAlx$*e76CCpSUxY8*x~HO}$4zzoUV&H2RQ{wgMdL?hke5ZzKgcEJF9DXd5$u z9-f03>pOHyA8CyJBl9>S?O*hJWE#2v&D^+~C8LOI?*2<^^hlLnrqO_SAs3Oy4Er-# zcqmkVCyP2%YY5CuJg#;RfGhCEE~I(c!hDglCV<v?bP`(_@<{(xgk#FB-sQAaa&^o53*n`8t8Dat?)qMdxYP{>Rct$$@NGzS7veIX(p zkv<@rW;P6~V*BjzH`-^|>;KQ+pua9Tz^?TCs|*fYrR(Q)00h^y`9E*tKiBY^SsCHC zjq|^!{r^Yy;D`U2+1c||^Z)Xh8BeXd&Ic1-i!!p&A-||nDEo4x;x~DHblY=mu+CD{ zwO-kPzL_jQbXxh&QY@dVXLRzM4fCwf+V?11I&)@ozBgGC*=rxR?NXEUoNK?SB(6vg z2(I{EEI?=9!|=ZR_Kuz|z?g>Mjh&NJBTy|v=_OSZbBY8}lt9egVk#td0E;iMcE7T# z7T)|DAMdTho8J6i7XaV_PB|9W|IT>53&h2~Cs9bpC>~ur5gL|hGlSnC+iZ2x{zq=T zTZq}4zW5xCCI+WFN1%K`spRdo1GoUD2s@Xv)7S!ZAb^{gn{U!qzdFSSA`l-qvl216 z2Xr3=_*g>A?6f3xU@=_=YJC`*OHuo5L}09F%7c7Doi@Nr0XVFFYXH$eF26Xq zXQz+8w%7lkvw7X7xxHv$V4V*Cq8ig(B>)%EAYUec^1A#4Zd>!eN$EE`x|JeM0 z_>=#a-T%?wS~>lneQG>?X5dS+fu-M?HjOb_F7wndng?1>$zkOj4+oHUZy-7kIKl(a zMg}H%_C8ABKyvW6V8rK*``oVWh;_Yj?UJ{!Z6}f-y0op;OSCWt={`cy@?ff}NFPI} z!vLn>TF;Oh>pX9~EN4&~{`Oi?Yv0ow+z=^xF41q@iaao;8s&qKi*YfMbT3+^Nv-KM z_cpt)wd*{xV*YZ|zHW&LAP=t0JGsOw30Lwy@<=G1rS6)@6wjA0KcGg&b()rJFr=8( z_-Uy+w=y)Ey$CP|K4`JP_)DVgOVbDEdJ6|y|hJBWbNeT-3kV(fWz(6ah#Z?maawj%~5m|G#ph zw9U^i!r6Y87{BwLgNl-W*^T^FyGCvztL41S|E})-Rnu=)PyM$60U`t7vw!~Y+nt~N zw%PKz+36=E?f+%yvXCP9Q1SLrG-l@aeeZWuYspg+sq}L*FAs#T3+m~Gf(9ni17Wm9 zRwSz-bZj8KQ#}}h4bcY=Q%#V)3Sx2+i~$cvxrd>}_PHi{YP!wb>p_@yEd2oJqz|4Y z08gNBv4#Z*Acl?=D>54gM1;Ts3qY6-r7K~95^R)*Y+G^f&CXx-YXLjB4WIK?006*w zdgIHvk@hHF0f!Xc0KL)46WrbqX)nf*%WL8e8(j8B#9T0C>l$l@Nv?0aVnY_QX(^ew zN*(u)@11+s9_pvd26fZM4F>07xVG9`+@a_+nWq93{Ew7zk3e~p##P<;D2=k5Unt!l z0R#xHx=nv66M3+3+SO@%ylZJ?#~uAAU8;f2Lk@J|pN7@n9Ts&Ad`im!3 z;QQV@XI6m(AZzRF>L4dCAu>%~imB1Y$WLlq@xoLXtr!*lTGblS6&mq?I~{(=U)Jdf z^kaH}$6GP@=t*t*mHX-lBQzVhGDszfM+Ux&!Z}6+{Z~FHxP4K#@|1My`MF0X9 z9nrUM!msXiy-V}IN$X!V`*ThIIsoAQ*$?c!KmK=ZakiTH^Yjz5(`QDWrRX<^NiQID zdztLUeIM!@6zJr-kM%v6Dd89_4CF}PxN4&hX(%}pFF4Z_#uPwvKr*~3F6j4p#Cl@2 zr(uXY9^Jr1hc7)ukc9_9k=hp-xJ8c<5UU&bbzN5d#V)e(Yy5RfBmf!%xTnW#1g3BaH*vZC z!D-MK!BXK)a~6mQ5qhk&=nlyA9WB1YyQkh)!CSp~WGu20Q!T7y?O zWRzO6Wp(CK=Ge8j>^HfEN2_aVetxqd>6>`k+z z0|cN6eXJk=2y$r?DF>4$;6#lSs-puv5Gei0NJ{jNres7fc|e=$#84$qUxffwrE6fc za2V^0VR6S!AANPN|G%K-f9~&_nyhW!&$@H64Tx~jfWSqA0sF73cMoja{BJw)UpMvN z!~l5f+26ItfBIX7<#XfN^VQ^k`P__4X*m13jL;l+0-Y~37=eDemen=d?RPL=L$>!I zbg<4i)4j7W`b!J|A9Lp%D2{C z&!p&_;1n3%`#D=5PBD$eJ*YN|MdKcA`ppWA zS{qI{MtY21Q}VS}kOlC7b8tg{XeD2t=yD9;L4r;S3SN6&^(~MMl@vN0VxE0?h4!%v zdV6g_7vlD`7}634l3yR+2ZEL!A@Z^0L0HNsQWyU6@b#$C8Q`u<&w{x(hgNg9Wxee~nM zVRwG=cMQWz&Hr$^iuyAKkzQ!A8W7%N{?dM{+ft*^b4L35gx92YT z-czP?@bcV$C;p&ulWLn#-$bg$3oCkbHikQ5%$qvyr>p=3rFM`Z6bFG3l}4qVkyXF% z9c4q7Zxe@?H=<=Tf;Iwvd>&Kh8y9=liL@`5Y7EbEf>4`^*8UJ>V?~TWYHASp-4jSI zlrYVYpPosaqr@21!3on9d%Ufz$E=n0ntT6?hVW zz>Xbou^RnNAHS)&-$|$at0w=?Ek3l*e)uh{IW7&;vZNfy zG(-wH43BC1^g52o)f-V(fTRX}%zYu&&riLszc8!j4gk17C-bRa%9rNeIq?TAxoCMK z9vJ|DG;ImQA`5gAuN&O?ebXg+JPNuk=xsEI^MHhGfeu+`aifL#J-PP%bz)6;<3dHF z%M?Gz8ODO2ahh&HAs?pc(1u>X0k!&vsf559P2U? zZW7ecG^2?Y%#K z-Joi7Phq)bp?%Tl&m<`z$$dBVA4sP3F?|PZL?MEKY(8WW~XRgj`hTP>i z2StK2>kG29z;a+T8!U%B#x9GAvikHRyk=B~yYspGdS<7jv35txTti&Mk#ASd*_SaBrWP|m zvb?qtGsR3tDBojqX>k!R{|%QA16UI47XM%Omn63~X;ABDX^V?Uwo{1(GKpNz z_y}m4K`pT7bn&x}c=6~D2w|VVV^nY#GpB5l+Qn|oRDsaBQST#bMH`{w)ud*!3QW&1}T z8oFb%#Y5xb(6Bf%vNKrkxAf3NxllJGZL>47Q>K(S&N~A=HZ5^Y{f%h>-i6rP2t`y` z_uDM^)r0URK1t>pe5=R?=+cuXr^!ttzuY?uXg-0_yV^s#*kU|bz~(BO!_de(Lq#Ro zL+X;T-Xa|+o<`yp-v&CG{&*fWzsVwl64T&>69^(6tSqM~0t#$oruFoD7NMI0s8ryj zjsHdOlAban;j%czT@DX`9RP54Z|abZ%2bCBM`KRMx8o!|o_mR5a|=nbpp;0yq8IZ9 zb5$>fK(m6|e7vU%#mvobAdwXSNi--?covP~Jo4gSe* zOW>mMzaeshihoJb2b8GC(ZF%MCV^y^1{#{CJ0#8dp(~6h+o)r zE`@}~z)JP$91(qh=7aP)Siu-J>E$AF~Ep>nwf+Hnv&?*vMBo!ecz#_ulza>5mW|;#dMKa(vUikCc?zc56iDR0B)hHh}1%ZDLA>G(L z(i2ujO@4e{%5Xt1rkYHkpcj0V(-esmfC=y_P6z{}?`eGxTfF$qo&JAKGqh>*zfLbb z^}SV1|Eix)P2^)!e;R(RUiPUg{GYXR?0Z$S#c;vL}HQ>SHT!$vgO!N(y1gF;c7Q0KZg z;ej-jYpj5Mta}{%VMVS6`iXbMv0WT+VV+giTVjCZ_CD`96J&^FL(oSY4){L5VGKm$ zUDwOYq(8>o?@fglk^L`q~ zpx*%iyRS2JJzmrb#jJ^`Vcr-eB zDnV$B51ag)9BFTjjYH(4Y4zX>iza+#UzoYv5qinSOD?b zp|C9cECFqS5iBxFsa8@MJiw)i7yaM?Fn{@5r7+p)|4#-Etjj}>jnfpMuuYRTHIZM{ z@NWwUZ2Q_fFyLZb<5Qs3stC+&n*Ju*@BVMwt&e}*&>b23W#iAqky-a>srBzG_zuZb z2epf>3m$@zTx@vha$>bVZ>?@sPJrNCuONb^{WNd@MC8YiJ`>6uTA+V(B7uNdkrCgf z0g>6}Df^yFnLz-ieeKeM+X<*{bq`X|fu?c^Nf3y$0C?s^JU<5b^DsU){4w?(J#@^z z%(xFoYDEh*&v-r=>Iuek-<~@bc_`iW6XpIW-@`MWKl8%39UB~j9RP5FzGk-jdSWQy zsXiYk^5%8FZ`^C)8nvJvP?18jq)tZ`d!bngxzW;Kq3Hf{l7g+$MJ z9-n)(hSaF}ASLDwqF0C8a4@yK)z);>;+aMf(>1+mLK6LsLD3+@)Ely?-;&D;L5nXe z5DSP!r1v{xM@(#OzRdHWK|q*-)^ka9^bK~TrYf0I3rWRAz+C3wO45?W%uuL$;~?l~ zEv%FJ9@!6)lG(m3p8N7n|Gz=QzX}N0r0G9RCcrBCz5acgfWS%F0jCWH?0|r0e_v$R zb@sDW&Hw)5zPGL*^$SDanaRqD(403E?b1|*Jb0aC zBN+aP%&^hDQ=3A^?slGSW7{`^=`860!We`wx}5vn*tpU~6K3)<-yy=1Oy9N)W7r9U zH_*5*AkZm%M4)H36`)$!fF+&AIr>{MKUU}c;A|l2hcH9$bp3Ilv;5o>){Cg`!$}3G zUO8g0YcX*#167is=~CjwLM9H7GDgSfvEU@+kKY(>bCumEaIpnt4~uGIx!`)rC5@HS!>)I0xB+ttZv{4dAZ}WhX@)bGPh=Gon+^_4KFt4MF%g_>x{mL z2Gt3shDbo5#CQ;r=j-05d3Ss&UEY_NQ2z-kC^R(k!-idp8}n%pqk)tbhY|xtVV|fE zkheOJ*?(aHdite;KTrUOXw)&PtRR*QfbQC7jI*md{lBfxJ)in})s%m#Sz6^0un7Q= zfiST_J_#TYoBfkC-K)$5PXi3tu>zj{H9s}|KZy+B+R;z!`Hz0hu0D8kIaurF#(r*` z9~t{2LpL{YVUAet;!VBRI@{T>SCF}N(W?d<_I3c*4W0*36I|*G!E>}4;2%2Ol^%P7 zbC<{g5{jb*Ai?d4@RN?9OV?lZV1M-r@VzNghx$64t^*Q~!Qf947SKxHRHlGX_o-Z< z0t=Nv*j9@wcU0@Y2ph#C>7x|6637=uAaw}geUiw$As_dA#yV1^1jx>(`3U8e`vWia znub#b1csxzV*u>FE+O>wOm5$dYmWfi1Rfy6tq*G_@(Qyyh_BC>XJ#blwDeU+rW1vB zV~6WcN7J{ZF%B)rO!531^V-X^Cbo-tSvWf9n$E@f!>&Damt1P41PE==NG}mS|Tmowp zm7C`zGKvabSas?T4#7~MM(D53#oEkyG?+MAkI&h6W<6>BE5ESQ|8LnWZPWbseZMgf zFa-u|3II%eVIWh{UxM!*gXxOkwzs>%P<{Xx>6JNTa6{OH$h@9+b&eqrqA zOUi$@)cdoW8`v#D0l+!GyH-vpa=L{x*++_JjnUKm(NgN8IX`1P0+WclHU+LxcFXXf z?oD*m^&}b2*Bnq|!=z5)lz|=NG{j@*GK$x5f_i*4LU7`_ohiQK&&d%P0R;v~+pH;m z0wunf*oqM|obJy;Hh`}S8wOzbj!P+!2tx&x!rAlvID)T4nKMiQHo5jc4wTwo4>S)x z#RmVW^b}8)v2aRne+K~UzRp^c{A8~5XZu-#!3>jbGj&NFH~AHr?uw!cRI4;D=Nv5E ztxj3T2`X481T0OV1>GQ>o{Z+TjY3&vkc|;=4!9a=1IjB0^Eb5#aua7MuzuBSnRmj?$AHi*!K>N$9bOhRkvu z$>$i)3p7qrG?%4}(W*oc2nTUU{Gh2EBf=rnLJ5su1-WegN!syCJN^H~fPyKw8-&w_WnRSPDv($^j-kb={sPk+=#1#HT`}{Uboybb}iQ z49GcdN(<0M+qTqr?epnsvRVje!;FsLKujc+yvOZ)SVvcq_k1Wl2_5SmW{@tZLh7FGF;F z>)@(1wDw72YZqhrq;&^ca9y2S5vLL2j^BJ7dgDOz=5yY6kFL3Gj0jaSMh^;5eF0#y zK_yMGOugOYLiBTJrtEQ!PI0tHL%xfUh~MlI?PF=GmBJXBZVQ^wGDQ-YBg6_Z7(_56 z5Y#wFw0;XBHL+2f56Gm)oIKDKlh&FnQhfm2!H17xG7kVnR|qr}okTG8)kwR?73*$( zVW{tO$ z?|PrQ=Cf<}%JC<*fA4kMzyG?;9{kv5i$i0-7$W_S&HAGy0MIYQh)yGH$A-)#&QDh~ z6c*RGrux(wzf~agUP>#^(qU4M-;xHT*muiTbJY1Vz4w3yV?WsF_d}}7_#qfG4Z`=y zmYIi0WVrB zJ_b@h{52;?2eaCW*48bqXRoXj^_`evAhf2%G2O=+nkQtiblJ83Px))d0JuQia(_tx zoed#Ap54>N794O+`Hc&m81NxF^qU~~@FW64nrz*I+GFGZT7-ffNFry(#|T|~O{ObD zLl^zwfVN;`3S89K;j$SrJdaMtbxPni&smMji?IC^>7vvzY@5=|-PR%Zp}10hX4#}M z@jG=wqsapefMVuklnfP_>izWCQQ0OsQju(9rEZcc6QJZwODo@i{&8%A)-gF2#X56f z3sQ~$(R1nk-`)89PXE6_ga0^EB9Zw{X4&JvxB#7 zcJz_4>z6uycFSgeakQNNFOJP@A#r}@o1U?`N6?V_k!=9%D;NMZ+G7aC1Dik@WsF$^ zA&a~!p}N;{LMHH9x-?)xtt=Q!06j>MZ1RpB=d*rYiVtlQIE?M8RVtCg3|-xrZA_P_hVI z7IdtI9RJf-ORnTebp9~U8r-!nPq|G(w*vq!3?jgOR}QSgN6rukQ3ZbGvB8VR(XR@= ziv%r~jgxA=r;WdE4uIdu0}DVSV6>2cHk$Aot;-`;0V6_`U?TaVm=2my${W+2;6mG) zB!z~5#KwaG4Q;|nUp^a{Z=%XzNC*3wt0I!kFuPPtHu_9sfMBxYob|k zlIM&V0_CUd@tV?Ulbhy`j0`Za3#_{K7si4XXe`vo!ZZkj1jHgvQVsec0iY+XdwHk- zKM6RnsUey+|0M0o!CT90bJEDptUI#(#Y5YF_^w_53{;W!;fut_XoCj=euSP z-Zjh*mfC%GgM0r{<8S@KteY>JfA(hVE$NjVXj{WvP^P~gD24#rUbs)qfA{w94*1qt zaP8xqGp%RI6`Wio0He!1E2!@c>Saz1o#;zcq18yh21&I^=R1Fnq2xI^XLX)bJ z2Q>zCzBM90h%&}1!+_s^8iIhPG_-nt_fFJXiDAE1{h$m!s%LSWux-JphF+ZkU+~CS{)W7aSaYqQt4}R${QNO?(6BTi#rLx1^ViCm-H#%1~|

2)j+z8iSV`RQImd zAA7pKXkJWjkcg_M()ks9?TjH{u&eT)`dZ}?K-%65Hwsy5Mos(VSJDs)@SQ^^*vM~1 zYs;t7&!XgdR*nnbMV$lrWo6rt#0%Fm!qN}}& zRH9WyJI0q)#?*{Bn)%i8&)zkxujW=+#&V~;<(DquKf9>)EV(L)h0`LWKH-Y7J5=JT-D+S2o2?3UH1GEx^4zUfD@Ou8;p z*ru#p(EpWm$do;>F4?<$h{dIQA8~uv|GLhpjYz(Y_*p@A~oD^hF!Ihf>Khd5(#+OYVrczfig6uQdWAAwO1eGhvtP7L~9ZB{O&z1TWqnyPW z)^@B?NINU3Q`j@h<)f(dpWJ^Dw12z7s?ngEO5j{hNHZQUoqdeleP?|oZN#v6%v=QG z(YV!r7^k`NnxgxX(bfwMTki25SBK{4G!iCj%b2qsW>kP*yy%p#E$30=ytmbx9)`xz+H zw$F59c?grI5GD~D9YWKq2jKRZ7(E5@20N_GS#p@)dg2wsCDgei@5Mx*-D$;CPZ?oM zY{~lgcL)nG4EXUkGl_51DW(2JFo2-2Aw)%z56M6_<1@HPK^h{HX$o|%^2-jS9qV9i zakg;3QvNxipNh}mg2lJz7?mS3W5=|5cjP<#5QDLL6|aeWj_EkoX+BD#JI?1Wx9^MP zwK)hUjj*FVx$5#NePc#$4>+E0*vii%d^&F+N5x9s_%T{7{xD7IoI$sALgpP^Nd!hV4#hXO2a761l+S0& zE9cPsafyN$c{K42Ky5V_vc_ed$^N5oEl;_S6s^vHir#dt|eKCGjB=<&pxx|3)N(qKmj9^&^pV#7-REY`kY*1 zen*5s>Nf&PX zb8Jc+7;};s2FfXouTr-}gO@flGLFY!@*DAe*PQ13h1|N{g&srL0=StkA-^?#H<(vY+W0c z%qSV_FBAk}fr^ae^5r!;fx^$k#=S~X(2NaixTNe>wl98ZYi#fNQ^lbnOvk${{VEP6BtO8(+-GoL(Lz+&5=ME0;e8jaHHKO0$@_Jo1jY{Deb@#MEeix&v zh@M@gRXt6MHGAFc;r`U*qKJ~GNI=fqY*bO14L!oT-)3Y&tBT(7Z9{IQ2f{Z5F}1-p zH8iyp<`>lHr8K%&A-zpE6TKpmf14hn@l^&HpYJcz&s@%=Az`0&s^tq8K?Wz0+-sT) z3Uy4avfB{)Bvn6w`RZj=OB+)i&G{rI!}FFV=pGlg-;`+8$yz1ZyzAbH-s&soYG6Kg z-yRdi{-Y=(6B)qf_HKhG%NeY|lEe zt7WF_3MbMLYK@}b81dn8tN}mKLSarb)KIH;T+?|4UZstGx72VM_bD`Uv8p-0NiPI8 zY3_(6N+48yobu^{vs_qncqX(nPoE!wP~D^oJuCm&Q_?e2C6QBxw%;}^%DHRH<}<)5X@Ig`cXfU}G*#OZ3PV#-z@HlBds@y;d?h0{S;ca>tflu2tULiU$Xb zjdR%JqSfqNn)+;>W7)|A`>)2yUfjuMQWZNjHdj8_<3*Se|5lFZK%*at`g(2DzBr4R z)<#tyog`fVn#0(Va#;gf2;{6Jk_;D4&O<>~P{%L$W>!-9t1_dE=}iWZ@%5?4X`o_# zsCl-3&K{UjlQ$-VS{5z=S#I`a%te=GW>22okK^xT(|`NugDNp-phH>e6x6wbl_><} z@yyp?*`9||P#pUs(PKA2bLrCP*@OT-xhk8iFAUsQveqe_PC1)x=mO#!)Fht zSMF@u)pAejv>gK7FC|wA(%nP9fDi@gXeSAQJ!z1ADi9zFb**~~{_FIg6i#TNLdXKS zN*{z(1Z|MA%7m9eq{Zv9grm{438S$W0+t~*pth~2T*=1n#)6>LhWeXa>fI1umh6{y zHnDj3O;Jin*!=v^FwZPY<3*Kp_MK6(w^!F*o9JG~m>lbPiwV!@TfOm{=i;%?HR3cm z$ka7nNb5QUg6u1z`|G_5wN5Y%USdBIV2TRe=L~&w@71UBQ z1{YVr9e7kgPaym*{_y=SQCh_Rpf>Q21y2Kz?m;wt=PQJ5kOfMPex1eH54(2_r>#l7 zf#PX0Hb|_@v3zr$c zkFIIf`h`V)cXIWUpy9}Dj1VW@zE?x)^uO4&axhbi`4F^}W0|;hVDb-iOWsx#4XPZY zxJPGkld@&k&%iL`@W3!+QOPJBPcj-w+IT`KCDRPzNR#%(*}7)aU#8DayuZ1_^^J`o zraedO&g9p4jsb9l<^GfR+|2B9Zx*JZdlJjXaHb28Nqp4(fx#<0`!#1TvV7QlEnc2^ zB&z)#Gju9JV@Jmi&AcS`@L4W7TsL?&48m&X`iQ*T=?RDV!px^l^XBF*l-qWyxJ*?s z3ZHZ|ro2Q(fdFN$;c*X+WIw?Ea+zox_#wVbAo(;hzaHq1%cro2!|7pe;#cZ-BoDVL zKjOs4(^qKxK4}b*Dl=RoJ%1%O_0FwLj2j+&>gOLil}N86*@45o@o2bpE>&^@v{Msq zPbMI zjDo2S%#}ZI-h8jHiRFMb zEd(gYd`DDT>j`OA=^+h12M&PDKBkU!#KiOIK`80(Te`!dzHeXGt{1HRA}6WQ!wh~F zC3`GS;=7At5R5`f$x^a3W-x|q5?RHfFpg!yam9*;ctvN`0;+-Pkdx*ycQQNglR6SWK}a?Q;EXm%s@&q8eY0fL*Sx`AKr9c+xO{}e%5N5q zF}Ud{aPU;>xjmv9RH-esVh2H2a6=8{v7V8|R86>rij-2&wM5Oal)l7ZRbT2$p!1i; zL^1H^Q>Mr;!;ryoS0b-~<2fCiw<`Yo&DAJ)@+F2t;ljnp&jAVDMm7nw4E*@Kp>A)* z)yXkQm^1>+VV3tK7IZmn$LP6c%~F*WtIaNq1SgHXL5;%O3J?DAO6>~ORBGwK0A7{G zWBdf4>Ua9neC{+oe25@JI9gnpAh=Tr@!K)TMRbiEXJtPKucNf1nAYl_R?O4V+%a?> z>s-T&3eQStz%Eiy;t8CI`=3=m)qP%!*O&+;^nQ8rLIAPA5~ZyY(G!>RRbuOfnlXW) zw^jJPhe&cb_6#VoCa0VBaeB+LqV&K6i}cP{M>(ywQn6p#%A<}8fNUO5YS2rkUO-AB znlVyQSzQqH#Wks<#YOSVWAv;0R1mK9ccYGjN=5mANfYE-_(kE!n!aTssS z8Ljk;kI#v>MOF9(U8_xr^ytSG+y1Dn4h7PCtvMUb;}4YM{~pja6KE6_2(YzbZawTvJo5eqg));nEGzo4n;54)mD=w+j&v zt=t&-K+R)4If?o`gso;6i}P27&*HVF!M7=N z&ZP@eOe?g723^5q=5;5^-oB|~w>PFc`H1+O1u3G(nzEvm-Mlkz)4av}v@DcpLTu0g zx?KGe17Yhh0g&|+#sP8aoGbjZUyP>UeHfVYWVUy9sZx=(-YWk+2G?9wtWKj;`fvu9 zn0T>4?4>)Wa`{Fd=IrD`H_g$+GnV;^dmna-pQ%slJ!6?)Oq^iy{b2UlFe9saKd*=n zwC2h~b5=)5>Qet)0iCHqjiE$^FVK-pRhCWP*ivDq{5i2Ic5zdF=J>1WOd!r`AL#iU zXmrGF*7OhfMdKg{*%Jf#GDGB3pdgipo0wmRcq;Y=?6{!?8m4dNAQK~{dO0x@8kNY(mxQ`EUo`K`Q z;Um-R;2AK!OFd8u%B#i&ABPX_BkfzeDRK<%C-Y`mk#~rGEK-hYn87Vn)8YdYHCaUC zFJ>pX_l#Yy6x6(xAICW9e52X8Cc9Ehu?pQvv`9c-p$(^PxiS8+q<6&1GHVAdMAFkT ze3u>4yA;>7!h9=3Zi;L>UV|9gM0Xd8yfBZ>CI02?v1tMuwyAl@JQURA0{KMZ2FP@y zvPvOK*%_6dJM7F@$0T-W++d?|Z8UZ8{A1tq{FvfF^~~N=O%1T9(Xc{u!?435Ix>MZ zJYij5cJ|je`ABPUMcW=-a-B7i&|(1#tPq_G2Q92E;filUO3k5tPs!pA%NgIZy*1w; z4_A^q*2-_BMIn z;e*2z6T~dbUC(^oZ+&z&ijDB5dzpSQqpC?od#5ty!K{jx()Sea{7G9WmfG2tlC_i4jngR9C}F4H;rB;0L8BXi`0}EXqyF=rvf#loHFZz-bbN!x)k~m`~4np zVqY(|bL@phpk%j}CSTto&PV8Ldq>70QT_!D$%ccICsc3QwD*%OQSv<1_}7*q${*#GMk#Rbd|dXH696L}Rdp zY{%6m^h7Uwy$j`q8PomHCd=tToTern%?iUGYdLTgUBe%w@6g*~i6<2W0N7Oq$si?S z146DYA~`>RxgKG<3|L{04u&yxK|6KK%w1)-!;H&I6IFBGbiUEJ=#=dQW?@{R)ESE- z4%&&bqOJXm{mT`hVVht9`I%^qC~XDbxIHq^nbqstoQ8dRd~2!!p__^-xud*lZWdx~ zEux8hbJ0RXv9$Da_hi%*T6*uYs!x|it1^)WmLb?0qA6|4#KK)Hj)B=KyhD7(bwAe3{F^Q+ zUATJ>#2u|{!j-=v_EU9ae^>h&f_7dn401pGdg6B#&Rl}qevII;YMLas`%@8psysD- zuH6vjIZT`9&(uAEyZU;?0FClo!S>?@h~6iqYR!DG)KJxOdI9>bQHs27L4bzMA4+b`Ih_Wj-&L(p;`b7nXJz{mO7xeSJ&*3yg0!RMwAu1kV(3CEzr5U#MRpsj zxcIuxPf9gI;T7Mm>@@pb(0ad@R)DL`Bi6OSoW>s}m66IPQ)m1JgAPKRfF^33U*Wad zhz=QEQ%Cf_lQrjo>|FqX_;*3yX(4$tAOvBA^C0-x$UEfc{`f?mJC)&x`$iQqG#xrY zQ`O1HB8?K$LoX@g1SwuKhb$5$qrA6sR{e(VURJ|>c{Zj0W$XS;Ew+cF(vjyu z9?F?+Ier^{+)*8smuq*XGt(e|X5!w}Dbl~l@QHT%|)Hao`B&qK*mySihX9{2~3s}2zQ1fn}*TlS@q};BogrfUS{JXVkA2%v{+B6*=wg4OK zVBQ)op#4t55&jX}=B=?<0?m0xs7*ALJ+If`1}d64$T(L`V0H88TICQtd6k=g%*i=e zr5lvkt;6&sE~aev>8B{$;lZ0(yyHq8wuNd$>Lir&gv>F2t}pyr!(8#0IDW%N`TiEg zz_l+ZZWn~!5uosYTh$hCC>esv0XKHYMgzL6z%d(u`b6k~1+S+pZA{2-e|yxv!o$%L zfxLQ7O`xmnS>f74B-@*3vg|5$KZMWWHJ%@xQ7}h8zsd9U1^o1Ls)k;_x){{fg~A~T z<1v9{&dY40YawkN2Z8*=sd<1@kk5WYx|ePyxbP@T7=`Vlukt0qGYAw;doBPZ^4F0D zM_Ms~qz*km_<5iH!!Oy_5UWpynY&J5Z<{cWgZz%lb|M-gzN~p5RJ|^(GV|0h@~f#z zT;ws~((b>f6!Sw*IwW?K)JeTF9vsiX*6~%Il>HL)*^1SqGQ@c9uwRM%@q5U``4QV? zCkS<3F(Gcf=Fw!uEaA{6U+PFt`hF=Ps_=maFQGsF?t`7)a$--Sm8~2(LhSi55Pbgg z%J@{ij6Jnu_~9-CQr_VGpg>&jY9Q{#dNQLf-DvBrhQ6`p2$My=!3|K!Lkep_K0{?y zP<3|D8k@?j0oZ~1qV|WaZw`$6u8Uyd_4VqUV%209H%8%>qpm|)-014PI3RG`+^@34LQ+*HI3RBElFYWr z|H$mt3SJH5kD!~n5PJxy#kLAOMdBtlnQ{}OsGV)36f&n!)_QIl1<1rMatnXyE-&-_ z%J^K}XnL4LYQ8e}#^cT^u-t)PgaT6~Q2&PUAoNf{U#{hc&fAA!;%5zc-`px?%6wpZ z(Y?iXtjJCule9+94t5N1M`?QPq&j`P|F{`De!@qXJSomZCUx!x$@(j5`oUkCTIv;p z@eL@@tAa+FqlG~H8f4%BUz0W@giF^N5&NS9tMalwHi3`5*gtiv+uq%#W4-aT5Z8ph zcX5n*WQ*wqnVJI7n0bw#C;1Tntr>Z@U`b+^XG=87YO^*#NtaCZjZk46Xg#*pid#)U z$u>Fqy6@I=`he~9_yzme6^5FmNHF6QS9g?eWg=nzX;8|{@g8cDbhXfHbxa2e!Zy6c za{yT%fZmgejiMZg295=K15-2(8hiotNRy~@JqYLa&mLd$&U{bs5N|yO8iSnUD}XKA zu->DJ;&dT`H&_yhd{J?5q3*N7(hEAj!wMq-=b~0Mge?ju5N2ws46U6x?^`s}-OFy3 z$zH}?jiO~=?X!^o_9?!fu9OhBsW5na=&p=7Y|5^C_)`SX>E-P|xm#k1e}V#Rn!1!0 zy&gytFbK5ud04mrO;Bja4ynD%%xYjT(pMx%$$#r?g=%D6ZT0XQIJ?~v`wnr~bIAC| z@sT0i<9(O~^EYziy2BrKMFl1}Mkxf_Wfb`5YPotuA;`D}A`zG1apM!1^1~bMNay+S ziqZL&bUa|Wl_u$pFOUKVpC{!%?iVv{*A}8q(tfExxlo4dRFb^^*bbKZ8cI~jQQpTl+ z>Z)M>af}2M`EFy{4gbZR1?_To5_Zw+*3neFT3sj=cjQg3{WY(JHh!YwG%BrTjhNoM z-j^PK1x@NU;>I7!mb>>HXdhE>VlnE(-sS#3!o-e}Pi4Kydg4?HBgwi7qWg`kMqhPf znsozy*tRLN+hFCg2D34`pIc*s0A0T-!TxIE&BdOjMDO-KfRh_CB`39fwk1U?(AkiY zsXw)=fmtfDPk~xp0bGS`FpE4rFV6%pQkZNjw&hQ^qqGma-vN5zHDkVLFQ=s|0f)Hr zXeV5fFfzDi>vWIUB#$Sv=>F%mX;XoV6KMzhJCU7t|_H zM`Sd5pxO7kZqDaDW5&D~DIjAELVLuz^1;%BN&-9v5>#yuAgTJhw&>#mE?{yK|(W7WVyqJPun4 z$5L>l%M?zCOdOwiMC_fKM%3wy5gai?IBVP&ew$VPY1Cs{`6w{xEcS0<%NE3Id-Vf2 zaG&Y~W*fsFiyjJtTxOw26JCz_&o(D#0v|I%>~mEhgd?Z`2*1coIo z(pTuVMbtuB92M_l*R=CAShD4N?pJc$D3@}Yucq!vYH?v}-%pi4PoJK8j;5_?$)m-+ zBsce#$&%4MT_3GQD-yAeI}_isM*OvG0CbyOP29T02nI!RV^8p;zmRvSFf|~u32K?W zP4NufKLugtJ`9&etj!b{;rGp&{0;)e-&boOtFaUoutdvPjwNtp;$x6alFi3?AD<&G zokm0<=m8ih+388IOAkUu)n#WH#ksTt0Af<~dCdx~B(nI`rbkz6Vwg$hS(|9Lu_MV| z@tWqKqtb7r$Ahr*pJpkh%QEB{IFar7L;yLv?a0i-Md`GIDbtB%E$an#0YQY7v?;~<*>zU<% zC>1H}ee|2@$-`Tv!oqY*`e5IxMop5+P@83M4+uMx`yuB7%Q4($MJNrz-`4AB8s&fi zWebyCj++oj<=_QUcY_SQ(_<Xjb~mv1^Z7k%G%VJaR5e!57|j2-qesJk0b1fGqatYu zn!^|=9(?R1?gb1Z;8SrKXbXfn?jp2$7q4@-M?-{!8;C6bSEw4}CDFxir(Hu4%WZ>IY{aqj9ey z)IcVUYB>ZQ8}gQKTi7^C!@jE1_z4jfTKfnae^IuDfQ8$c?N@JOM5^6n**aV<+n6k6 z4-QQ|3>lrz=|2fCfytWDBAg3^u*GSE{9ViA#*Jz9v$x=5iS)B5P%G3c|Laj^WpVq&*y1fQSu z@#OMSzjke_6kR(ixyFK; z1`KTKmMRNaE^OD_DrL1)cf3o(A8`n^02*{MhQ*zsG0&cyhT z6`-H6)GITRSHuar^Cw^sSq5k#r4k-W-wV{sHz~D?n)g#&vL60)*i_p6Xj(gxB{g^! zGH@9Z$N*BO1$7@JCWg4oQz*a2%(y%QC+coI)i%ynpm^a;7^C>fjZk*TAE(>^$@<@A zz-~7P)iaPd4!AtwL_%uj;e1f@rCM%shvnKAKwbc!%9${4S@Ccn9UNejM?MmPmS|dn zgbzSXM`Teb^ij!O`ryM;AB@JE#E%xb0z+=mg4e2R7!q=*z}wekWLHe{Z8DsC5aNxb zOH3v4PY*NwkzX$?kMwza_7E?&+@o-1p&!qo!yRTcZ}X9y+PRTKn$ism`)w-)%E#dj z*@&fEMw?GIv4rrl-7yFVnTBWoV_&h=M}ejzkX{Sm@Qc)i0?==hIeh zD1b=kSMrvjqDto=LHKjy>6{Tlw#J?gp%=wg$w+ybLgXE#tvat1oBp9xuX9E;Y#NSB z?C4a+3a_j7zC)9FI0y3;i>Q0j3kAF^KS4%YMAm-at!J|UWV-s2g+4ADFI`xHp+2|)Jv zp|cEMkU;)PnpF<*vvAhKeqm+X#oWxl6xyUamHi}lO9bc^c}~zybd=Je1gOQ06f=JR zN)i&)8A8sd4heV);;$iZyUp-$?cyM8+q-(X52&+GtkY{p2v!r?^bauVTN}vvs` zyABWshp0xJyALj>HU%!mO9Xu%!s7&qehxB!oTrL$XMp=9%$t*{k1SGCd3zwK81nF# zp1Wbe+NhEA4m~Mh1*X;w!Pa2YCp?@!MaG5^vTJx z9rF+s=P*%-qzeDGAzO<~tJ(+k)=>z}fOeSd!MA9{sK;P)o6pMI@?-qZTGA5GXeUwy4+heQvF`t~ z`7ZJ1r1KcRO}0&ANKl8DXIwhTn_lfF?M)YCH$AG~9|jQgM4p-_AZVc=-O^~nuDz_O2>O0R#ZqOe&NF&AsIToj07J||gh1kAl*cx@&3~Z5{a#>uNbXki} zd#!C)ENCGXfpnZchPo~(BVDsln-iT&&o|wRBvfAEo=d%F>v)E}EKb{M%U0)}J$6uV zaU$Cp`tn9`qO&Zg;^6UWQ1hd?>#>LaJ{XMVo^;{a4NO5ZI_hr|Gu+NV9jQtUZgM_V zqD^!7%VsKgQ3FbQw}w*G^X?zzoEsEhqoOX~&hpN`g@%8`Vh}s6*GW4`gy(O;fW1#k?6zJ5Xw*{T3izejB9>zIz$`7zcay zq}Bl~9cJm7-k~M8o!(y)&=ZZ19N^XWU~Grkucy8h%}}g+8M4$F#7f#&Nj-n)#%h8t zh1!}$pFn_riCpqFZAx&{Ir4oma*)|BC8c_3ywcLgPUWqV74#4JB*oy|xODfZ=(CX1 za7E%dkft8)x{PY(BPhR62X^!qoYww&WW97sG&4U@BLtzlVFq;dR#Cqvme;0b_^}zE zna&Esc5+_}KI0p|SN`<faX$oAKYVzea=H1)+NaryF-IfpQ;PK|T1zO>u1JclWNo zz+N15&xK9y;W~_ktb6hKTqw7xKV&yQ zBo4D8eja*?@!&M^w14Y1a<(#93(pf!*1k<$>8uzcU}-vg$5h&Avgy%Ws*rmZdo@(p zt-5-LitVh6#L&4yPyDTqJ3b2_nd)@|Rf`3(QKtq#j05dMY!;IJFYkZ5eB15axOgp> zSMW{~`V|R(l77ih($j=UXh(4XB>61#=D^=$M?MmSwg;0Hod##j`!k=`RiHRYUTi>M z60Hy$C7jrT9(^JI>_S0loh;f4iEgqhE3#}!(rlXd8_(V&#vKMZz)oPi0ewVp+svZy z%>MIVX#CK3>drSPO44lx(q%sH_P=eZ){37`kZ>BZAYRg27-|POzJb`Ip5*e09~R20 zaVqjd1uBg%Mj#&zYZ@Owuf%p7NvXC-F`WZS{dj+*+&jIL zu;-|BEic73_XDJ3R4m7)?_T~x!fEn%u#)0mu;Zj(`y{79cz5A<{SQ|3{ngFbQ*A-sd8-!2EL^!{U;NtL+sg2Wn?qlS=gPJ=+y3CKs-t2c-^Py4T=FxF zQWkOI!~8AAvN`Tp>)zVVx+=UsshYXfNu+^BL7PP?L+ zr&BfO_djvfz1?Ar^)7)Uc~s3M)>=)iP=^zZZK)UH2m%+H!eZTrXP*8Qy*VA zSL&}_IzbyLvJ%gBeDyXvr+o7(I4*rmGI%c@_VCb+tuc|??0>c+IWy##30(AoG}N!O z`FUJiGGMO8rVh8+g?^Q#y=ks@-@R0*f$|kw1=rKS>ZS5TueMLXGknj!?Dkf@Gxha& zZxEd<3HyZ`hCkw-8MLrCm5bI3L6k#~C$jf1EG677_6ZWOzfo!6n@_;oRDdiM zaFJ~*^St8tN5zukxZQPuK;`(JJNdP0z=I~ei`Q{?NF3e3RhzlD`Bj~+YAcBgPeg}WBtG@x3X6`z|p7WZ^gv!*jNks+^&<&7Z zJBj%fhaAhTEYT4)a6nd7_8l)L*-VSCWkgKVH=Cn8dhWv+z^V&*K`1H@|IaIKjX+i% zPzXYOnZe|ulmHnY_Go{8{Tn=>v;WTh)p`EfKB0qbU_oz||MWlu1!CxEJLWux#S(}k z3WxoYS3htVUUa;5(ipY$7W{bGA5n#>gtkR*mcImw<`d0A+yCc%no&k29veo$H1`^) z0PZYQiTcz@_QE#|Ebv=fANnTZN1OpOeOguv&X<`CWG*e;a+37Lrs;rxiD-tb7=55g z0qU92Y5|n>sldYRaDN1De!-?b@Tc6K_rRFDJc%cdFx?LNpEC!j0Byw0OF2ad6__PB zBnD~(|GK{KLRwFGno;X8r&{3go`COheApjI>%#021J-a?ZNEdKQV|CsZ~MV;*eae> zxY0rZRhgZ}eUKVLeVpp{y7sUNyP*)De=Fn=*NGxUi=B;cnTV!~zd<8~$bT!=YGg*SwI#% ziL&_if$X$uixVZ13KE&zbH7DVaMU+Ubof|$D1sX)!ryIs?d|%!34g=(?4AA0CM_#i zT_AeMv&a)&0VH;efsbSMZv_AZSAZS$y9z>UMe7&P`VBUVd*%SxT7H3LZ;l;=ID92u zVEwpbeq{+$l`HypPW(`79bshw0>fFWf7=P=9k?H zus%cRxI<=R&C*y~<=(1r;gl*dZ>5pL#pe`OL1m4lb(nCp(u2Z?`C9>{!{})^W}zC8 zg}H=(gl~9n7A_DWUIj7V2{M{%x!#|ZL8uEd*!;A$_uiE2{^DMnpLem6y&uyi5Z6&y zy_#XLb2hyGj;(JMS&w>u#h`HF!VN$KXN%-r41as&Tb#J;@+g_`2XE40+ydrq11exS zeN5s!v6b`rlbd`;;c+|u&sP7t_i4x&A;*lM?kM8z81N=W+|(FX7v%9;$-(OKZUoK{ zeE{UXaW#0p+eb!IDduGf08Xr7br+CrA%h2e&mvSr%xJh5{x>PK~Pstvf?`>Gj zPPXgYabnW9m8)ait|3@zSQe?=ir$49-Shx%=fysBQ-A>aZiS`2F!9?2`=b}6%m6#$ z892P}H1Z}BSv`ESN8A_|GC4nzhmmgB6{XJ#n7U`R3X_(;*M2#mB*Cd zr$OXu;*nhvyikPvWg^j99mM~iHF+a^$+o%*Qj|a{`m6$*N3Hp922ITG>1BPysval= ztqxihxU=@@&(&dXKXiLBE5HhUMgxYT?T{{1d%g|a8e#0y@3uv?w*L4Pfdjn0v@l_u zWyftSfcZMTRFxK#ubIjT(JS5SXoz!4Mg3aqY(7pCV~wK?9q`wi#t0Un^%|68_W!jS zBNLfU=5vFQ4A>|YJuzI(P6vQUl6E+7=X!1zI5t7y)ZUQzfom8+0)Zrt;!VNDrs)ZjUW z_@y9zYJ}oJ`HRJ^G*$sP1YleIe1TD$4L=eWZDQqEWj@`Ale?HKM7+xeFwJaEKO zQcdPTR8YV2)<|zxh>VfolA)0RP{ZxSQIHj;63_{wQj@fVe9v1=iT3J_YSh<^L9h72 ztx?$vH$uE7wAdZlTh+wA(OtagA}b*?q=W-pm1aCT=2r8sfM$gT?tqz;q4re671_srO>K8d{J9b#tQIg1%!c5>f!o%UTyTwm-bKHjW1x>Nbs z@eEZ6z=;ziWD+HVN?93mSWUe1|FylON}e$ctVrL~g9h^An@*G8`~WFpBAkh)l7!Fg z`*8Vgwg(h=m1T!?zncJ7Z)_8GHQGfeDxJB#>o#qSBT`WTbT>tXmqy@d*Fo_~D6bRC zD;}vURsDI#0(?iRj@csNG@#e)t(R~31y`yD#Ys5ANZ){480;(*yGhexsQEF$+1IfyaVEe%x@;2B81U=Okq26w;xz?n;b}}z`S_T{Y7&zE+0=pV zelY{VE|GX4f95~R!dwM>oS|=DLiodCY_>O+Q_eXG4th@x&-lZIhOF0~Am?wMXqokX?v<(t# zHx9Bgns8KBNcnL>)=L6b`8e#NU3scK069|S(nOIG|xlA;OFu~=}FW8ax(7Xm9mBh z2*0-P{^DGpe%i_)#?Lb%P$W;FB?oP&R%HLvLQo=O4^rf zOC!RpiLB*Hd+S|kxQwe!D+PU-ir8kC5zM3R#re$-N!1^Og=ar@-L5K5neBr6qCX*TRpt&g9QjGXFGEbk5Yjm zD>_i>d#`)nvU7UA^}YW-nbXp1@Mj(QdBwo0YEn(xcqXjg=V@X{$lOcL z^ao3eY4a~vV%{<6$6`ri#3$pF=(%bAI41Rr_f(8PyWgP!`I1 zN(w=8Xfc+u^zz*tIyC>jm#~_ReuBuMa-j&!%38Bj@h-{n_2yTQxr{&aP1ITHJ}|1 zR_;_@#loMiz5l5nc4boHnzj(59TRx&RU#gOW zdV83Uzg!9bReB}ez2^Boo#d4vvTvfCR(IYlEU=tSHNBl-75U{zSeql!UPjZ1}W^oLNp5IM^k+F_JEz z*R%wvtS9A9buH>>*Lc4!vAORS;)e4Gv3GtgWSD07PR2kuN!qk){#}>j!zxYYtJ-d+ zrWN7CcFg=bkpv>PS9GA4s+JE43B#KvXu!e zGenajjnpjG&|`Pf(-W6du6@ZVSEsGDlsf!nfrexEc}eA`jH_{yLqpAVzAMXJzDMuK zN*5;MWnKe9thIZnpMrqXjX=V+;gXotkeXG0+))Gf<=@KoZzP9pRE1_ax`j@af$d6~ zjo2J|ZF^-&k=BidCYV_Dx!>$+6h|bblnAeFH8jkQfoP4E9Rl#DzrB1K2NCi;J(F8} zlr*dU=XU}lb@0U!1*twty7YbU;m_~;$AF0HF)!(+c95hag5jH$=+E+<+QbvH=#Qgg zYq4bCa+?xTth$M_^e;!0ldo`Jor7tIX_Fn^kxblFb*3+w-);NRQPes7KT8Q{btzTb zAGs|#I;09dLR;KU`Tlj^g!TmT!-<^BWJNDFs&$9CN4770{_lJ_)M+flRc(zStvOK& zW%o(skMsirxNqH4q2!GuMU-;oT$#nt&SBxPo94%vcENDLY^$z-%m4F^g(zvv7}(y4Na^RoVlic-0qm#1 zwgcnfk71bdNU4gUjdx(~>->1&xc-5DfP~^ls(y;(yYr0D!9uAig}gK6&= zxK|J~_kZ6W$TkJ8*JrU1w6lFX2XJ3hQT8h3IC(F11Oxi*O?;1=7tn;__mKdeA>6Jl z8qy~4t?ev@`31JUhUq-rou`#_x1VghV}x0sOyEQ_|9)C>bCr~0hFZI5sPTj8JWaWK zw5iwK8#grf{xd8<-k>Q_KfnBRuhjfo(+x%Lyb8s0tpw?lkpSU*ayzz2?GbWby1n`m z)da2c(wB7|>LvJ(evkBfd1)ePdFW`;M}9HX2IXZ6|M}|AB-#eLc*oFi$2JnJAd{DRONlsuRe8I2jM1+ntOTD;V&Fwwd(%GaEULK-JP;kN?*{Xx2ER zIU&F2buvZZmjG1#d$xbwU{CUQ|uK^Ml{{Hy;?te}7 z&(Qx&@y|8?U*7Bg_!$4M^ZGyD>;Lu`|Np&SwhMD44$$so5j&Qf$`=Iu>1Y_Lm#Nu? F{XdB=2n7HD literal 32547 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 Gd;bp|-Plk7 diff --git a/src/qt/res/icons/bitcoin_testnet.png b/src/qt/res/icons/bitcoin_testnet.png deleted file mode 100644 index 1202021f538ea1f46f5d6f5c5511590186d913c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28227 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 z z34b^n0jG9qzClkEoFh&bo)PJY#e3$3K}KPLz2U)ViA9g6=8_OezfA>)!$X$?Qb2e% zGCsa3{{q6d_=(KEPJvHd9wV9hS;QTj8o>AC8ukYGB>xxVmdvAq`aDVh)Zpnwh0ss? z{EC*pPSsT>O|V@BI~U<;I>=zU{KUbWI-5!~6Z(9ejC31Z^P3-?$MAYA_eqDKpL-Op z;3_<2`zlRF6K6MINJeidS9G%R!2`iw@`$d&S=`~8kYW{8Wa2b>2!*%J zeB{DN233SgS#rdmx1p^-;OCa~0cBrH0xOzx6n2_+bD6HQ zs|5@VXaUkGhy|(xvrY^0Gu+oU@&9Mc{imphS%U)D@b+KV0w+EO==EN}iPj(iUgrl@ zBe@>D0X!4g0~qiELVXSmQYaLM0w0@_+BtY0cmZK801JBo{`rBrILKcYfNc^jVAR?| z^T@)(S9IL9-49p^1~%JrHP{x;Zom%hx7lp>M?UGYaCCKH9uoi-(gKtqn7m!s8wT+B z0B3nC$N#b*lPbPwj{ovY0jnYaOcQ{1^`oEn0$(o#m33fZkN_!8PGhDBLjq(u$P6?j z*#+p3ovZ_c0MHv4rN(C!fnO7Vzg;*%aZvwYM!=sIgaF#EM0o7_Li6W$4*Jlda~G;~ zF)-RD%R%*eaK8S-j3eeuXzIhoMfM{T7hzNrGL2^yACH}8({rLYK zTQEa<>_q?yZ~?G~0Jsgr_zLuT1(*x|OJyl2{|88H1&SvMFXZ}?ZUa`YcLmxB1Zw95 zjN!e8U{!~pwlh7GgF+dB6TF>*SoS5tSlbZ53#Q22`qIAB{e1wf|8EOD8vOcUKO8k# zRRg9k6wq}6n1=)s6$hQk9|UnSqpgXRTPglu>cszdBgzSA9WOw60?ItV_pSgJbC-Z> zBm4kpR3q{_oiHcKoI}|Pgt!QS%1%I@lh|FI`o0jrqXl4@djVpey@FVuL_GJ{;1|%lrd@r2uh)QMvgnlWQC)|7?h2jt$rqi(X+gq(G6;ZB3U7nY2(T+V zQ%-&{2?Mkifa#1tf}tTo0wF;#c}9TWf5jA3#Z^I?yO!Jo+#;n8Jha2?dwOPejOEV**(=UXlQkG2ghrG`Hy008YF z03F|B{u5t;-vfGOyhc18){6sB$Sw|bs>7j9c;hkQ1ib=~9!7aGpH~aOAK-Qe>eF8= zyi&|RK-8@b2xJAY*3Ag~tF)&L0lJ%`PwQ}A+tvUm0&r7-2OQI(&-f<$;>vsEB?)9j z0IEkouN31$7cb%Qk|WKa;v@JF`J-@vue<;T^X80=20 z@4EY*`2ZUH{$(PWmI%vU!LT6Mnj}C9aQM2T&36uN-wkZGWeQNI0=JPT>-de$zyIWt zZYxKw>6NEmKp-O!@B%~!;KP5cFZNt{l$Imi2?20o zw-Ny~;z{69PzwMFuE ztoY^+pP#qa(bW>dkIdkb&VU4w4woH3#7#3b;{GR(|7&Mc+(QOH)cBYHGzn;T|8fQV z%U$3Hz<&|u0-pgS@xFs|qH8Ixnc3z9z*1G&4G8cd0vG(@6F&@mEWB7WOaiSvMtnkZ zk-2?JGz_#oSd0G7vkM?GC>*^!&daE>#%-B>?6?2>fA>?fXq=MhNVl zUjz`S3-E^mMT!Lana8YvM{LOkAKZRG9`(OBt^(A~M&0GOyL>OQYPC5x(fBN-g!9;t z5L0?)ueu8Y0Hgw5K&=RXTW?A)40bt;~jYsS|Dv!voQPn#ndF@jC z#PCzdkI!!;Aorj68vMBWS)Ta))rqgfKQHjZeF90mfU$MG&0pR<=yMBoPX3Mw1i%DB zprZraJm!ZlB-j&}2UCRo%S0Y8If@UK;h4Czu81cy@-g2+PPIKZ0q|7@KnQ@7kQx7g zA0P^FeIyXwW(@qWtFM6{Z9B3*i)+eK55gWiCES0hcS!!)5kI96=u`Fx*y5+_AaB6F zG0J`z{0j7#rxdt_Isk2jSg<I=erl6%7edr zqY%G4cyVV`eFVQ&jb{_M!JMc7fm#6S5x92TQ~uaxTo_}=XhiFLvj3nQpUg!yZc!36JLvd8u+>(D4QOE zarM2;pWi)jp+(_N68|Tg0g${P=o?XI;PCy&Ocos=#ae(c_9MjyoA>PWUSe5d&Zo5}0}7$hBlU{Ce{B#-|Sbq1bz)o#~JSM>lX2?Z1Z6q!dB9SCqJ zX0i4b-DfiOmQ)lZpjK#O&AHvDABO_fQAS`11i+*rLKW&0;>kI)Eg?K>J%oo*%;^|p zVJKzFcnQ+pjB<|~O%abY)yOT%I^B$MFGO#^z+@vH3xec1WtoQyewhT6_?0A_I|8JK({!d;H zu*LTd-MaI*hMs2VvYsjP0t)0-JOEq2zaRbew&L#{`p)CxpQy-3_T%A_Qs9D{n?piq zj!B@NQxQ)WuKvJ2|{sywc-!v-8F-yt(oVP72|{?T#Ez#q+XKVeYl+01mUp!gwKkiqil^+)ZwU7VydCAD*H3UEF|V8QbNe}K}@yd1^6@}$X@+qDZl^; z@VGn&AAe%${TntGc%XYTtthi|KI0#48uu)XL2=iU9CKSb%k;$u>)1w661D+FL;%o}aL z`TfMyw6;=sf&y(VI$be2{X&F*a2W6q5)lE98``XnH zfIsBwbBKgb`yL_C`>nW#nQD5OQ*PY(HeLT8Ab^~u1KaI&_%=N!G+PE-+9M?d;F}px z7%f~FRC2f_gU?j39vI%^)>h%;9Jwx zd)cS-3RFrjFa*?Z;r{;>z09cEqm6a{j|T9e^50yi19yloXsdf)KlI%RjVTBN0^5aI z;(^M{yhB=h8R|i0Ab(5($l~sv11A)nPLohsU0Qd>SPUrNOWu%CIq&fMF^w@4s=`IG?mAI$k z{H$DkEPUdJWBf4Swfp~~ZU6o4lpnkvgI!91lc)cZ>Hs&&Wz7K2YpSHV&9fd- z?;w?bjioeUK>%bj;`h8i1Q4#?^8-KgLLLEp@?3r*0>J&B7FGZ4bgQKQRQ2B`A^=Y| zVE28u>OwZ)=@mUwOaT6&Av!*MYH@EqY+Etd#SF5ffVV(QN@2~+RkvHk{0ZvynIAyB zjVKpenW*MEU;cIer&of>{69J$smSEL74<*h>gyKW?Bjed=vz4Tha>@hz=o}|>VNf7 zW|!}6ek3Qpa{qHr06Gkiq9CaW`0d04XTNOvQWKDV5`X|Qo*dMN-+>71G@zq-Ogh!5 zC?u_Dcj!Gsu@3RI?7ZVv7Z-(2ZG94BUlH&(#f47m+@+wTVNw3&^w+Asm~PJvwCH-< zb;S~#_^k{6C*tCt>!00giim%k*!>S@1A3je^X1d?n*gvD>H;8uz%GHnMj@FT%kS~{ zPn2}EkK2m^BP#HiW&`-8a7LHRYLy=^0iwX1+5?Puyg|j|SPH=}y$+455K~D{l9^!m zCu7!lul?W$^m;T`*ws&_>|E&WVEdo>r~l*u0jRx!+iu-qv)zX*?Yw$a zmFf*hd5N(00s`BGtvQV+)}C3iffW9_a1S$e<<0!jx6m@%?Bx1u2#`Gw*et?f4Cau7fB~uuKAu4j8bO=hSQRn3I6!>mwa}_5);3wrL3s0GLY}2t_ zS}5BMRPP09_LZxj82GLD_i3@y-As#S|9wkl|9vyu`@bp0KxbCqzFoKN^RltZd3lfY zdja9)qCxB$Hrs`@7l3(JigEgrC7`Q~ zy7tHeP$7VbVcbvc07W~Lz_Nvx<({;{eq1${W*-|Te-M`^Q@FE%P-OaWxO1`Du_iIO zuPw@#(JP$tWjvczTsN^kF+XlUuM6LKY6`=tDgQZn<8`D zEBnk7@Qe7DC+>f^Cg7NXoi3bV`j{u=jY?l}P+*F1QDCp2_5x01$f!*b{*Du!+5mTT zmH9&rA$}vAJD+xARIacLXoJ5 z$=6Z?fXL|70l4Onh5DWaJJu|ZUndob(TNZ6rLSPs`cI)i1JJz@}A?B&(v+ zc^P-aDO!L zW0tKypnbVMuHb9b15C8Q7tW=XT%Z;0G%c>Wj?%?;Y@YjHixyC;kPz z0ECKNx$}gpcfDzr6$1wsrz#~Vf}qC>D9j`j@OlCKEcY#}d4*VBt4 z>gcx4nma0;pXYaZ3?36Q&1MZpW}CUot*Rlo)KmcK=l75wXd<-i%r60Tkwnk zF5utD_S|q0Px4%T4$NX?tWEtrUUul(Ew|llH$=ZYsQgQo5*+y3-S3-?7qCcPXey@$ zDG~^30V)(YJ{mJN!}bgS7=RG1&1#ahS~%5dgWs)c zT;e5wrdVG9@G@PPxSPQs@2+{$t{NL}X8}xOx-V`y-UlF-c42NY?t>g0lm9P}VI&X- z2H<%t>-kKx)sVxeie!Hv%~k*(0?@90rg?lUP_K{WHSm@A*Tc*(z0K*r+2v2+)L)(w zfbs&i*=C2$_IP?lm$jp-3bhxI=01UNiLgouGHm3XK>Y7+z!BiRUhx+mmr-2KxUREe zJDXd+haLc!If*5_AU5Z5mA+6-&Yhp(^k?+Bor1JKuPM?g#@fe6V5IyO!SeOWzfg_G ziOn)p1V=lJ^c5KzVr>?;823@U!_GoVpRGXokZt1mJqt|GDIiX!Ei-q4uLbmC2`2F* zIQ8=Y_;UK=DL=XFu(j56-UIBU==Aq{0ip$*b^9KFm=*Q{(oX=6>*{&|oX-4#FRYou zsSZd3@qaldDGN#M=HXw(0^k5Zq`d$Pf{DTlIuR><;f0+4PNNNOJkx#vJJ-*EO{(sO zMap}hxGh>c0#9rTC{*|w(Hbxk6{&73#jUyf{Z|TbXc}&!9gWQ z5XTe$1MC*#e?&D10w6D{nE}WMAyEDy08DEETpQ)ZG7r#GVJMGZBMUY#+LtZpPX@4R zfu=KNy9`n|j#X*A9>BWcV0$j0Pc)DNOP8`AF#2W2TTDD!e9(&a+fYiM z4&^^w8066cx}UYtWFG_(I5FmhXTClG@{SPCK zXRt-QWvI*nXp1o?|yBc_hQ_10xKyz{lh&1QWvmqw{82f z;dJQIo+<7T2nvEi05-*TfEDO&qHB*<*LZVorL$>d$aaq&*5d5F@WkCD13A(Ue6gpO^)fG+Zsz-) zx9lr<|3J-ux(Gmb3QD8UHP7rlj^Uw?FZ`;e1&hRJ0I~pmkQ#lw0KiA-E$+Sy@`x+* zR*U-|x$<)>|HN}3&H?_|Hh2MIh=Zu}%**Fw56AyYasQ(R92SZ`VM}j^snb3?cfVhf zW*r6iJZjI)fel_r+ONo5HT2uhNyCp?_Nh<*)O!IkFQ9#gUD|zjR8`m7an(gOE70w$ z;{~XU0C{lkXL~N2cgpMDCJZ14Fa7%fAJ-gljuV_zA=`*-@ys;kbfus zulUmVzsVE-&$YV2`CPv*#t#A?&h%)~f0X>%*$`ES*LU1?v%SHH?D|Xb z=^yX{lpxsa{7zTTiUh&H(2x{Q5q_-XFa$aVfJCBOxdrO7_3u$)OU~Y@rC-ed;~|*; zW|}Y+c`UL3{6YYt1xPqR0}Y#UA&$5Ji1=U67iiS+zx5cN1JnRFD_1}1i7#=!5Bv!y z@uZ3XX!o6N3QWNT9j?`BzXYd$s?vhkW_L_IVD1#t&xQis(w7np>=MBEeZWeS4x5D* zRKF0P)(c|L((U(2yr1uVCgE`UGg91w&sN@*9ghc~NkE7oB7pg;|4#hha{j+b;{Sz& zAZP}3-T`o#TNupe`+=YB>^%*7$TP>Iw(~&vd&Tszi$3<6C&C|=VA@a0ii4b?A-nF= z{?HeU%|llfrgL&oKnnmUe4o))+ydN*%dTY8uC1+q2Bn{JTuy!(W|)S9w_pk54w__W z0+J#fO#pn4$EQ9&?$#@g37|#@KsM~UbM^^As2XJTS-{l~&EG4^ujLvkFe?5=t?q5c zH63NXvG?YO`GP@@eImh&426{^C0t$i|0Zu=DmQ$AwI0%92J>2-0 zmR|)S(2a*{Zr%UMtn216NzW+)5Ic?MAWaBiATFZrOA0U^7cL{Xr2O~4`G3L^nY1ew z7`&;f_Y%bU=`P|)-s?Zx6q=K7+UaiP`ln3zOWrLg)lNI`jeF)CFn?;473h{?Eg)PR zw;Dt>zgv-i>z_YW=aWu{Z^d-nF1 z$2i#SYvlTe2ZzW$fnN^ad;Dxdfko*~3x-FBX%g@+6cGXtEdb+dAqSd)CN96iiiUSa znFIO_mRT_oQIOJLDi0ACOY7z_hRe49zDyrKufutMKluHi4=MWvEhzi{kG-n_uJKC4 zpG5v{?qBXrB1A+)fJl@iiPeGx@!LpcK0C>zLT`xb z?AHrXf2|4{e$>?^{IKOFHDOzF7+-{E1zZ(g9sd4K*52ONV;NE@aZhrmyJ{hJf@=R1Js>j7r+;h442 z8&AWl@&nCOy(q{}1qk?+vVi{hN-^vN6b&!W~c{fP>v-1rZl0llC%n6YIH0>(Pbi-it{fP!-31yHDsc&e;qaOb{@CS;>?}Z+KDg$A4<-vio zOmj(zrQnvG3=XNeB&f73$eR=34C;`hJmQmIJsiyy>OLR*av*ZTQLun(qHZQC_k{_? z|HU`~6MeY!mZ8X{Rp5exn|3ub0WVsF-PUY#uFb~B^Cljf0De8ezvJIdI0hN;liB)T zqaJ^}*Y5?0exf{RV)RNHwj^@-ad65n0;dD&pA_VG2jUq4KJdNo*SFP|<_qxOt_A;~ zd4`2jt%V8jzdR>ku5$uI7ep)~_o)}&R*fd$$kLpMM=-IoWC3_ z@Y-C%Jhao#Bx?OHp9vVrhp){s-vTpd6q!bVdT>Be34kM-_*k_87L z4f+n(jK(?tO9H=e030Vks{<)Rw8IaA1&Sd{bxvTLA{Kyw?p2=ebuC|jA4mR7I0RXA ztT*|m!9&m{U#j*uAozt7KqW%jC(y+nWZ!WoP$Z*K><`T4lm+=w-@&Qn3xUu3 zsXqB!vO+mzK~7ELt+>>deNmm?D8R3-5}~oKV=yA#zsn~VlP*@!RpXiRQACw$Oe>Ffs;mN8NV{&6 z8-`S=1@HtxFU38p7vi2!`U`G2-~>3}z2cZ+$zKX_>+KIwC-}uKfe^f9nApVi(I1o6 z;a&HfL>Ev&UjT;%kb^+ar}~KIqeGpHSF5&#*tbU(lFPsXqt`^NmTJupZSf5e9e(N_ zAPPnokW$Z`J<<5?e&|bt9HI-TsXLG}F05oc*Cv*7_&DD$1s4=O>iNVnQZo`Q^N2tr zy(%B<5d%cn37G5FjVD+F)Bk)m`SNkdhHY0#N}wh!0677VuhSBvxxToxBk#H$D!~P7 z&vrV~rn_Gcr1YE663<37(kqw%EfZpKP-Bw9=k1OwtN;gmcAumKY8e-{xlao!i~2sP zm12n(qORNin07JWBbF-91QDZc=J(@zO-_n?kN0KFtz>n?s>=j~~qUjpP($1FK5@cC8c zd_mBs5ns@KQrABKePBj@o6UwcQaiM~BOFEjAd&AkUxDy>+JMx1ux8)~UvxQr3>>6P zB(njm5BS^xpkKWKzBu$9UADr3@5$VL1}v-Wa5S-Bpwq3R&mf{cHc7Anqz#x^bRgzG za7Ngq&EF({Qwc88PE09f&J`a!0q^O)IINTJvj=2VmtDS@r|VaavD#7SokyUi9-QlA z@Cy^#08I<@XtgtGAc}hXx2=|KyZOqk3Zfw2@r@%8&{N=x9G^TV8|;5Z+IOw6sXDRx&E@7LGVt55cNxsym61pH6@g!vNDEN4 zK#R(T0knV|CB+P$XPWcT*=}dbzy^oF1>3LLWLBUU$V!1Pj?A=jzqP|*s1^5q|M$*+ z8#voALu2|O;s;^izbJKIm~aF-<_IELw2@i_NIKUz{pgh^5-JWrI+Qb=z{?V%I5gT@ zX{uF5sxgoTOOJLqlKD>PTT+X9m=J~>eKEPoFM%+U{{!Y@X!C4bGMz7mk zoqY8OSZTz{zhNhB#sbiaP6mBe1vh_;_8YGxUK#gs)Y@*YKnHp^1|-yK`2wHs!7ofW z0;~}j(Cj!heUudK9BUZA@L-37g%4Aq92{_fOrF&UXYl_(PiFED0EzZC*zus(vjxTN zi)~|cztDzLnokXtX$_o+|MKX*FyRPL)j-djKm?6Q%wm#SroFK!eBsKIovL;{NuzXj z|M!#`P>P$=EHwa1@98tx|BQlO9?(gF6(>7Zy}rQoUfUl2DH1cZl_w0V`Xb^tqzQch zYXrD_s6nj2Ob+@&2E_LXu)MiEV)3faJD)0inDVp~$QmjqDQA)S1I7+AnrxKMl||BB z_nlAz4k(38`1F47r>p*waC*eb@Fnqm11t>C#Qf0n!!$ow&8ogIQ9i`!K`0XqjW|VM z799IZ%hc@2hN;uG#pHc-w)?r=&-y?aklfcvJKFMU8Y@G{sEhD~*2{o*z#&HM_dp+5 z_f_|cGxFLNWKYpgYuA%T`e5{2Ozc@1*|Q79G+zL}F_~}%fo{$~kDP&#{yk?V0Z9iFQ!J7y_ZmJMTKEQ`mNuP7D%|HLP>M6OGliU@y8u(i;bh z@K%}Dr@|lq+3mtFi`wlOGT*egdsfiEARW%>=`#pJ&qR+vFQR>;HsJ`cR)A9k%nVFu zGEG7bp;cT;fHiA^VakLJZ8p7sBH`5f^NH1k4^p5QGT;cy>T~dnLUk>`w_mlILdmEp&=_X zit;-5NZ(v2zAzyiJ}*rOMyY}pr3)q$DK*alL`Z_Aw6BoQ@!17&Rq{D0pHuQVJ-eX8Y4T_Jv&xzIv1K!I zV-HQuiP<$_L-dxnKZyLpfN5d#UE>W?`wR=@AAdLC$6xc>}%Fzr?VzChFnWkT1q8`#mY&;QqM z9iuP^L_q*8f(a}k_djl`X$C(mAr``WFqN)WGkR9|V=jFIgK#zqD}M?ZhLo=dq6(U8 zTN%#hJ)bK28p^Kl@be(lDAZTHhauyTfk@sNi=E{Ddd5o0yXaHd|5#8^`005~?NklOApvr0rv zgwX@j4S@5!KiIZ<>F_6M+DX$iNfH;}00l$@fslllUva(j?(*5>@=xj2bIxCLGE7*K zwBuZ|b|j8?EN2t@$O6i*vm43uSw?BcE;Kg2L2Ul1YI zVj_S;fk9N{*2Wgo+T`BXfWh05*Z4 zTU;P1iE%S`=Fk{Sy1GFSk!p6e7OG)Ujbgs99cxTUA@_$%e1Q`zw^dWS#gKY6mZ@Jz-t z*}xA5S&`?XU8ff>1Q??s7V$`?Fu&5c^CUYaT+dYR7xEQ}+}IP$>SnC&%pwd*tNWg4 zRGMV{UkPI9=D(4YL?A@&7&W6=D)xk!^?|MXnuK63mxa;1#%O7>;ee1!oRqUaf9n-d ztVd67)A#n#8uc4v*8o$y#Cq-Ps$W7^+#QkQaf&+Jb_cD7PQ>-Q#%rGm-b=E@Z+kRp zP@5jbh+CVrTK4q3+p%9Bd$~M#s(0+G{{DCR55L;GZ*QO0%(~3;V(lo(a#)G?pV2T`K^M*R03Go$H6@87?HaY;aoB8Yeg9!vr?Y9pRc)4Z`>w>o2gcyi7kpTb2@wdbG`NYu52?kaT8& z9(=Ca^Ja1MqwLsc{k5I-@*BPRLz&y&FDT24!5}LOkNK5!(^L|OJUSxU-lqOqI`}hm zq10|1?<>Jf;Q+C(hJJcCHZQ~*XAZhrO`& zK)%?uExgXbi=>*sQhXOk3(RZTVw7 zX13DDE8{{gJL?vK7-KL7df z*vG|FZx_2?@SAt=uA}ikC#_fB)HF$%%73R}78at6C(EpniN})$lL)H0J++WkocsoK zr}#T5F9lB(bLou_YyYDzQpmK%=2jRqGV72d|K-@D5mh!m06Vw#o3DG}2NCZpzZL{S z0tiI^GzWC{#)4UE+zgpumm=&U2R>*K*^G3=V93QMP}Ci zmhRX6y8HF(y{Bh-7R-vl$XE!1tFTcZ2$&Ql*`leV)uME0Q<8N+N|r489LtB6jszdk zlpxV00g$Ev9>WJD0F$5vkN^pCW&q3#XQrpu>GyhnOI76-@&BJ+S54k?bt5WS-4zj) z)#Gp8WJg9uRa9n1d~xHu-@W(y|KjkG-(kP@m??X|!P?&Q$Q6}A6Er-*dG&zG%3`|k zgx}FS7N93DqM9P)Tz!yc`xDiqO3VEW0f_RUpJx_=$JO*0!pO4*fd!!hCHf#um{WD2 zbVyk#D@%>>m?`@HsQ{Ax?w*kO8R!CVItn2S#CsC*cl_chy;J#6x?fmcpPlVHMCXcY zJqiSY)t&OnS%dX_{xKtBF3`Bf)99dvNYl$TZ@Jd~i7?;uGMBuL5&{Yaquh~1M#U`7g{9PiSO1_B}|NbqXE1lv}4PlBE; zD1XrPfsomzqDa-td-r*{?){E*@c|+VBZ)=eY}9~M&C|}KdGj*gA&P)wN7nY}VeEYT z@Yyh|cJHK>4%yc(R9<%$DAFX3R8@KV3b*d9J4TKvKr2=2apap3%sQ=;0 zN_eGI^^jOi^egwXAu^%PuKj@0h3Ecqx`V?2+Ch>QvXZ3ckKIBex(&357wKp(Y<#67Lx7SPVQT)_ICc;n{gP zSqI`CI4mbh50dcV^UdGXtrx55?z}n_EFmqTO0ljjq@2@TAM|_lIFEVZDo{iZ zdhn3gHHPp(0=>TMZfCUciOWUC0u-7{(Nw(Qp1&hIG^4jLhe{136P)b>X{d10S zdS-V|8DI7HI=1YU4R^4}eUS74`g=tFXX6##vLfn3j8;vQ>#cx=agk8>nmd-eILz5% zQgjxwSY74`;s0+}N76SCwk>-G)97Ryi50M0-#!Nbi!YinxEY$V~l<0rP zJ1srD<^2rTtw0x^|0`*MS`cmIY2flu5#SLk8J}wLoTQU$>A$tJuYm-vq@oXvy@|p8 z^CZwaN3;Jj&$^4lZuafQFQ-bw&GOt6fs6g^e0}}9j;!s`BT(~lcJ@0p4+buOJbnD% zNx$Pipa0MP?Cj}3Ho5w}d&7IiX*iy~?YW-MX7jSFQpy<#$jT~4xbUdo`|=>Vj*an) z$R(8H9dccT7F9bC@!M3fY^cF$%M&oU8Tw ztBrdj6NR1|b-XLGUJg&q%h}m+v)FGVdAo}97e<`POd2Qi40gqqW64SbDKE3KpO`JJ+ei8}NS;%|N zTMAIu9L@SN1+jZO2O277il)d4BCD#L-}^Do#nu49;8)hE*)Jc5td}_3{PJ>ku9JQ! zPk-BUeb?i>`W^Y{e`)^dKRx^Q|I_?qe{%ZdADQ0$$@yRh_k8GZ>u`BM6LbK-uvWe` zn7sih=H(RAeIbA7w_#0#l6&17G87XijD|92m}(5D&$JRfxD!Ob{0otqyQ=(V(^GG= zmL>k_d?MmP)wb8)6BUfKFr&{>L-v;{3{`(rk2|N2psgLp!uu&w%9(@tx%V9&^u9e! ziingghe*>kEaBoM>*2BV7uNfS!~*nl_Ybaos(Ako7oYhLir@3&qo;q=`$m@65Y|KK zwaLpUr=EoyEVy8x?ogs_X~1}Y=fqDrox&%?>Rug3_&P#;KDnl05o4 zlZoa&RUkl#reM45qRs|W*Z)R;oQ1fdr!bS~mnmf{`mjYy;KB}2z*R?R;kV667;H>8 z9|^o%{ZFxksXaR%Kak+qsAuG6r7qG(e6$^i&{-9uSrnt`YiqClx*eY@&_0Rr(SOGxM3+&t zyd!uiHiihmKq<13rRbOZn*5~(VeXILP z$pQolkWro{2E}ll^9z%&3}$coR`iWnPSYWRmeeUVH^$NRf<{{~EccBp*_~}ODsK$N z*FjH$N9F-Q_`JX3c}llo_tqjS7e&F1-7gJpez`GxmUQ|dXR{t6 zir$4^2hV`wK{vSq5U3veb@*Omy?u{9;_8y4?VKL`*bhDc5+J>sbGSaLZr!!_TlegL z?)?1u&FOXKnQ|_RElV5vg~sH}5}$Iv93A=E7V20MIM+RPq1t=x#&3;Y{rkujkbIBl zh7NP_v?bY~Rfzr_LGI4j)!D=VT>juSh*3HL-xC#Z1(b{Vt;zkr!@fKJ75igjMO^!zu|f?2TNH|si_sTZ|<@MHhn6(5MvNPz{Ek;>ut`ug~Vom;lcPz7g=4a_ZLquzbhL0Ru<_i_>Xm<#K*^Ue zG}b*3axV~)yc>>;rNzFD9qk9@^ldVn`i_fjry;0k=)ZbK-2{Wl%lr3z57y4rIobm& zfpD)A6AAL)23I+W>+_=CXV{mogTcYnd-)E#AB)911pNmdu-($1y%La+5|n_9T%nv4 z^Bbf6=eBmgeD1AZ-@g6%^~uYa?pM$G7zP4UTWH z1E96@`O=5V2fw>I|76O@`>&+=L^%s!Q9vY7^F*_@3@Bs^U4tJUncE}4dP8IXl3(Sw z(OFkH2<5^4i~Co#`sH6{)UrG84{3C&4%M^8@Io>{pPO^=Qrk~OKGqj1J4Ee5IRm^xNiP~ zmm2#d`2`e1ZC|M_f4aQ?JF4|ddA64)w{n_80_kfCW62+FfwkjLo_{R~7*A{nYT>QvCOg&#f>kG zuK$l~ul&j|O^2hmKa7H;xB1IgeeHm&(is~O(~ZYc0t6Pw)%siih@F4(8Oc6Z$fm@@(9Lz0w2y%H6hzBb4g^h18#TDanYs9+Etb^o8vbOAB}aQ4>tp3h+OQsKZF z&L%YzvNIH1Y0*QrMA`tiuE(DM>PHJ=R292AZ@3`nAG!+Pv_3fgNZ*pQ&K;m{VyQ(J zH;vx-JT@-PcOE}R3a&LYCnwv+@=m9QU<<)$J6(Kge&u&o+gG%AU6Z$zGmC*cddZMQ zlvk)-)~{iFENL6CX*Ndq%@Ka5XZB(#WeyHgg%&mUkt*zQ%tx&vbu|%_cG8p`sNq@>tcL8rPOJ0SEB`cIXaTI>t*F5gAFy` zx{$Aa&)%p154-RGQ`cYp>C{-;pksf*UAb(b;wtvnErjSxSMkjvJNnX_qhrsx202Z` za8y$X34;-!jpu(hvU7WdUdJKj#_l;MKV$2f#*$$%qdGRvr$>JO?x+9k?o)qkg6-L4 zze-gG8%I~U(3qA&0s&DWmuUGuPvEh+wAeg1;;i>r6AKQ~?)t00*3fU@y#sny(Bjd^ zX@&Bfp!rawzT4iDJ-o+m3%yK(zUq0|WdaNHnAgnplK{N!;Z;v1NUB@U5J?mh+ttY5e@puFSH+$+8%2TVtB)WkP2%7Y? z8ymi&aivdRIr<%QeD%n8}q6Y)}xZhmYocYKFQ!ob(zJ$jDzk9WY) zW_9uD*`<#o&3NlsNE{3uBYSCs@^yrcOi9RhuWgtZ%Oh)JiQ4_sndL00n7%%~|94{j z{1SFP`vfglQ090klpwDTO)JidC$jm?vZ*$^+^bN$rP@-`z^e*e5T?%W$MN=-#-l;9Um9a#@*9k-uHB6JP& zwlAoMrk&`ztTFHgx`2c?$M)A?D z3|rP|x)r953rpZw+m@?yk54au2Gcij>sbQDU_`qvhT>o!U7H0ebzOT;CvBk=J2lQXFAGLGZp!?@K%diiz3+%B_zOx+_pl=>tG-X6>14FQF zH9wV@rCbaGtF{F>_&Slw!5X3-K6==e_OtJLE{uUqSl*dBWD$$=SNA^pr}jVaua+2< zvvIB!u`<+>5eAuu-CbGzZEx^txG%RcA$%qyY7%SX7l*gLx}@hK-m8$iyAoCgit3r{ zc}GHrg8NLJy9w#;588xD9EdUnaiq`@|CZ1i&5FBJR%!Og4{-bb!2)e*(1D#BCvw?J zk2saQ3CAf*=^~&ul;@t9UwHrU^?!tFpT&SENXUKM@@XN3*xEm@{g+FRv1ToeXHVrA z?3DL>yoZXF6^x^OEKRPC5>0<>k^POxVxMA;AcAcY^dEc(v~m4`aD5Q%8vM(@u-H->*jB6-ul95_8QCmlyjv)mE>u9i7;&o zJw(&)X@mwFlY2fhxcyAA_wvDqRuG~E&V<+WWb2P^Wom0;WW5~3*~5Hya?iJ7^Bz0i zLQG%_??KoJOwl-st2cbs4=CvJu0rM(?kgSIuEgxoi6|+U7{!)JggIQ{Gt`LEcX*< zQRPq??v$54ar$14zQKAtO-p2~(69n}a_eEQQeVM_&1r0npzZn+f308dqv^0fB96^c zR+TWlBS7!mZ{6%dlY|qpvsa%FlYTp|{%ww5L9UQW~X zJ3SZ#tL0~fx3tT2?XyQxlN$#rM^x29DE*#B15eOBo_cRmbshlt^QbT3+hU&f2>J+r zCE1kmuah`H(ks_ORaIrNF@54k2Wy+wakQ>MpG19@bSN$#va@El&t3a@q!LOlotvSI zoS<~DoRAXIWH@rJTJ;y>(iIFcfWY&-*EP3g+a;f+*F!)oVIx< z52cqx<>O1A-njYsV)}Y97}D9J>G~?kcf}(ZkC^3yzH5D=byn+ENamc&^~+VLSZP6F zJNwbJuri?Ob?mEHMm<`ASF!)f`~Y<)wfBUa zumeOdg2@1>Ku&Kg@6|I*H_ z-`beISaEYUyeNlbsuu5vPL@1+%-8Q9Xg+%D^Tl8tw6K?|6&t#{Ia_AXt%;*ZnQ@so zYoKzPUwA6-JTe##1}x~5XvO4NI1_#y zCArJ5mWh�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 c #include #include +#include SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) : QWidget(0, f), curAlignment(0) @@ -30,6 +31,10 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) int titleCopyrightVSpace = 40; float fontFactor = 1.0; + float devicePixelRatio = 1.0; +#if QT_VERSION > 0x050100 + devicePixelRatio = ((QGuiApplication*)QCoreApplication::instance())->devicePixelRatio(); +#endif // define text to place QString titleText = tr("Bitcoin Core"); @@ -39,12 +44,34 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) QString font = "Arial"; - // load the bitmap for writing some text over it - pixmap = networkStyle->getSplashImage(); + // create a bitmap according to device pixelratio + QSize splashSize(480*devicePixelRatio,320*devicePixelRatio); + pixmap = QPixmap(splashSize); + +#if QT_VERSION > 0x050100 + // change to HiDPI if it makes sense + pixmap.setDevicePixelRatio(devicePixelRatio); +#endif QPainter pixPaint(&pixmap); pixPaint.setPen(QColor(100,100,100)); + // draw a slighly radial gradient + QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio); + gradient.setColorAt(0, Qt::white); + gradient.setColorAt(1, QColor(247,247,247)); + QRect rGradient(QPoint(0,0), splashSize); + pixPaint.fillRect(rGradient, gradient); + + // draw the bitcoin icon, expected size of PNG: 1024x1024 + QRect rectIcon(QPoint(-150,-122), QSize(430,430)); + + const QSize requiredSize(1024,1024); + QIcon appIcon = networkStyle->getAppIcon(requiredSize); + QPixmap icon(appIcon.pixmap(requiredSize)); + + pixPaint.drawPixmap(rectIcon, icon); + // check font size and drawing with pixPaint.setFont(QFont(font, 33*fontFactor)); QFontMetrics fm = pixPaint.fontMetrics(); @@ -57,7 +84,7 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) pixPaint.setFont(QFont(font, 33*fontFactor)); fm = pixPaint.fontMetrics(); titleTextWidth = fm.width(titleText); - pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop,titleText); + pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText); pixPaint.setFont(QFont(font, 15*fontFactor)); @@ -68,11 +95,11 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) pixPaint.setFont(QFont(font, 10*fontFactor)); titleVersionVSpace -= 5; } - pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText); + pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText); // draw copyright stuff pixPaint.setFont(QFont(font, 10*fontFactor)); - pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText); + pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText); // draw additional text if special network if(!titleAddText.isEmpty()) { @@ -81,7 +108,7 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) pixPaint.setFont(boldFont); fm = pixPaint.fontMetrics(); int titleAddTextWidth = fm.width(titleAddText); - pixPaint.drawText(pixmap.width()-titleAddTextWidth-10,15,titleAddText); + pixPaint.drawText(pixmap.width()/devicePixelRatio-titleAddTextWidth-10,15,titleAddText); } pixPaint.end(); @@ -90,7 +117,7 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) setWindowTitle(titleText + " " + titleAddText); // Resize window and move to center of desktop, disallow resizing - QRect r(QPoint(), pixmap.size()); + QRect r(QPoint(), QSize(pixmap.size().width()/devicePixelRatio,pixmap.size().height()/devicePixelRatio)); resize(r.size()); setFixedSize(r.size()); move(QApplication::desktop()->screenGeometry().center() - r.center()); From 8e76ca0429db552cbf6f51dadd5467a1bc899027 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 14 Nov 2014 12:58:30 +0100 Subject: [PATCH 43/47] Qt: Go back to using QIcon functionality for scaling --- src/qt/networkstyle.cpp | 58 ++++++++++++----------------------------- src/qt/networkstyle.h | 6 ++--- src/qt/splashscreen.cpp | 3 +-- 3 files changed, 20 insertions(+), 47 deletions(-) diff --git a/src/qt/networkstyle.cpp b/src/qt/networkstyle.cpp index b8112799d..3762b8484 100644 --- a/src/qt/networkstyle.cpp +++ b/src/qt/networkstyle.cpp @@ -24,52 +24,13 @@ static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*netw // titleAddText needs to be const char* for tr() NetworkStyle::NetworkStyle(const QString &appName, const int iconColorHueShift, const int iconColorSaturationReduction, const char *titleAddText): appName(appName), - iconColorHueShift(iconColorHueShift), - iconColorSaturationReduction(iconColorSaturationReduction), titleAddText(qApp->translate("SplashScreen", titleAddText)) -{ -} - -const NetworkStyle *NetworkStyle::instantiate(const QString &networkId) -{ - for (unsigned x=0; xgetAppIcon(requiredSize); - QPixmap icon(appIcon.pixmap(requiredSize)); + QPixmap icon(networkStyle->getAppIcon().pixmap(requiredSize)); pixPaint.drawPixmap(rectIcon, icon); From ac23394ea8118fe50131513bcd68c822a7ac4095 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Fri, 14 Nov 2014 17:16:31 +0100 Subject: [PATCH 44/47] resize tray icon because a 1024x1024 icon won't show in ubuntu (bug) --- src/qt/bitcoingui.cpp | 6 +++--- src/qt/networkstyle.cpp | 3 ++- src/qt/networkstyle.h | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index f63ebac6e..3f5d0a191 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -115,8 +115,8 @@ BitcoinGUI::BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent) : } windowTitle += " " + networkStyle->getTitleAddText(); #ifndef Q_OS_MAC - QApplication::setWindowIcon(networkStyle->getAppIcon()); - setWindowIcon(networkStyle->getAppIcon()); + QApplication::setWindowIcon(networkStyle->getTrayAndWindowIcon()); + setWindowIcon(networkStyle->getTrayAndWindowIcon()); #else MacDockIconHandler::instance()->setIcon(networkStyle->getAppIcon()); #endif @@ -491,7 +491,7 @@ void BitcoinGUI::createTrayIcon(const NetworkStyle *networkStyle) trayIcon = new QSystemTrayIcon(this); QString toolTip = tr("Bitcoin Core client") + " " + networkStyle->getTitleAddText(); trayIcon->setToolTip(toolTip); - trayIcon->setIcon(networkStyle->getAppIcon()); + trayIcon->setIcon(networkStyle->getTrayAndWindowIcon()); trayIcon->show(); #endif diff --git a/src/qt/networkstyle.cpp b/src/qt/networkstyle.cpp index 3762b8484..ff05174fb 100644 --- a/src/qt/networkstyle.cpp +++ b/src/qt/networkstyle.cpp @@ -71,7 +71,8 @@ NetworkStyle::NetworkStyle(const QString &appName, const int iconColorHueShift, pixmap.convertFromImage(img); } - appIcon = QIcon(pixmap); + appIcon = QIcon(pixmap); + trayAndWindowIcon = QIcon(pixmap.scaled(QSize(256,256))); } const NetworkStyle *NetworkStyle::instantiate(const QString &networkId) diff --git a/src/qt/networkstyle.h b/src/qt/networkstyle.h index 3e3332cd8..953004c12 100644 --- a/src/qt/networkstyle.h +++ b/src/qt/networkstyle.h @@ -18,6 +18,7 @@ public: const QString &getAppName() const { return appName; } const QIcon &getAppIcon() const { return appIcon; } + const QIcon &getTrayAndWindowIcon() const { return trayAndWindowIcon; } const QString &getTitleAddText() const { return titleAddText; } private: @@ -25,6 +26,7 @@ private: QString appName; QIcon appIcon; + QIcon trayAndWindowIcon; QString titleAddText; }; From bf7835c2713e9cc8356cd1a32bf99c40e222773b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Jan=C3=ADk?= Date: Tue, 25 Nov 2014 18:54:36 +0100 Subject: [PATCH 45/47] Fix small typos in comments and error messages Rebased-From: 67b2d819cdf6181e7f016e5366ce7479830893bd Github-Pull: #5404 --- src/chain.h | 2 +- src/main.cpp | 8 ++++---- src/txmempool.cpp | 4 ++-- src/uint256.cpp | 2 +- src/wallet_ismine.cpp | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/chain.h b/src/chain.h index a8a6b4dd6..98db98987 100644 --- a/src/chain.h +++ b/src/chain.h @@ -95,7 +95,7 @@ enum BlockStatus { class CBlockIndex { public: - //! pointer to the hash of the block, if any. memory is owned by this CBlockIndex + //! pointer to the hash of the block, if any. Memory is owned by this CBlockIndex const uint256* phashBlock; //! pointer to the index of the predecessor of this block diff --git a/src/main.cpp b/src/main.cpp index 7533c3261..4160e4b78 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1025,7 +1025,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa hash.ToString(), nFees, txMinFee), REJECT_INSUFFICIENTFEE, "insufficient fee"); - // Continuously rate-limit free (really, very-low-fee)transactions + // Continuously rate-limit free (really, very-low-fee) transactions // This mitigates 'penny-flooding' -- sending thousands of free transactions just to // be annoying or make others' transactions take longer to confirm. if (fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize)) @@ -1050,7 +1050,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } if (fRejectInsaneFee && nFees > ::minRelayTxFee.GetFee(nSize) * 10000) - return error("AcceptToMemoryPool: : insane fees %s, %d > %d", + return error("AcceptToMemoryPool: insane fees %s, %d > %d", hash.ToString(), nFees, ::minRelayTxFee.GetFee(nSize) * 10000); @@ -1058,7 +1058,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // This is done last to help prevent CPU exhaustion denial-of-service attacks. if (!CheckInputs(tx, state, view, true, STANDARD_SCRIPT_VERIFY_FLAGS, true)) { - return error("AcceptToMemoryPool: : ConnectInputs failed %s", hash.ToString()); + return error("AcceptToMemoryPool: ConnectInputs failed %s", hash.ToString()); } // Store transaction in memory pool.addUnchecked(hash, entry); @@ -2988,7 +2988,7 @@ bool InitBlockIndex() { return error("LoadBlockIndex() : genesis block not accepted"); if (!ActivateBestChain(state, &block)) return error("LoadBlockIndex() : genesis block cannot be activated"); - // Force a chainstate write so that when we VerifyDB in a moment, it doesnt check stale data + // Force a chainstate write so that when we VerifyDB in a moment, it doesn't check stale data return FlushStateToDisk(state, FLUSH_STATE_ALWAYS); } catch(std::runtime_error &e) { return error("LoadBlockIndex() : failed to initialize block database: %s", e.what()); diff --git a/src/txmempool.cpp b/src/txmempool.cpp index 840eb536b..a9567d3b1 100644 --- a/src/txmempool.cpp +++ b/src/txmempool.cpp @@ -241,8 +241,8 @@ public: } } - //After new samples are added, we have to clear the sorted lists, - //so they'll be resorted the next time someone asks for an estimate + // After new samples are added, we have to clear the sorted lists, + // so they'll be resorted the next time someone asks for an estimate sortedFeeSamples.clear(); sortedPrioritySamples.clear(); diff --git a/src/uint256.cpp b/src/uint256.cpp index 79406f247..9ac886f81 100644 --- a/src/uint256.cpp +++ b/src/uint256.cpp @@ -99,7 +99,7 @@ base_uint& base_uint::operator/=(const base_uint& b) if (div_bits > num_bits) // the result is certainly 0. return *this; int shift = num_bits - div_bits; - div <<= shift; // shift so that div and nun align. + div <<= shift; // shift so that div and num align. while (shift >= 0) { if (num >= div) { num -= div; diff --git a/src/wallet_ismine.cpp b/src/wallet_ismine.cpp index 05dc40aae..839f69485 100644 --- a/src/wallet_ismine.cpp +++ b/src/wallet_ismine.cpp @@ -74,7 +74,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey) case TX_MULTISIG: { // Only consider transactions "mine" if we own ALL the - // keys involved. multi-signature transactions that are + // keys involved. Multi-signature transactions that are // partially owned (somebody else has a key that can spend // them) enable spend-out-from-under-you attacks, especially // in shared-wallet situations. From 270f42d39f84f17d8f0e8f6c747b66cba880f2e2 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Tue, 16 Dec 2014 12:59:36 +0100 Subject: [PATCH 46/47] [Qt] fix a = 0x040700 pixmap.convertFromImage(img); +#else + pixmap = QPixmap::fromImage(img); +#endif } appIcon = QIcon(pixmap); From ff63801bc0ad4c363d2e15af07f7063a3859b605 Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Tue, 16 Dec 2014 13:35:41 +0100 Subject: [PATCH 47/47] [Qt] light blue icon color for regtest Changing the icons color for regtest in now lightweight. --- src/qt/networkstyle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/networkstyle.cpp b/src/qt/networkstyle.cpp index a1a067dd7..2da54876c 100644 --- a/src/qt/networkstyle.cpp +++ b/src/qt/networkstyle.cpp @@ -17,7 +17,7 @@ static const struct { } network_styles[] = { {"main", QAPP_APP_NAME_DEFAULT, 0, 0, ""}, {"test", QAPP_APP_NAME_TESTNET, 70, 30, QT_TRANSLATE_NOOP("SplashScreen", "[testnet]")}, - {"regtest", QAPP_APP_NAME_TESTNET, 70, 30, "[regtest]"} + {"regtest", QAPP_APP_NAME_TESTNET, 160, 30, "[regtest]"} }; static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles);

2-?ujQQE8`RvqF(568WR2s4oD3oO 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%0A6<2e`@J8zd@tF)BB&^`Vfshr`C?W?*4GjmTV0M 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�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