Compare commits

...

15 Commits

Author SHA1 Message Date
s_nakamoto
f077bc0f48 reduced max outbound connections from 15 to 8 --version 0.3 rc4
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@96 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-07-02 23:43:29 +00:00
s_nakamoto
06c4716396 version 0.3 rc2
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@95 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-26 15:47:45 +00:00
s_nakamoto
8700fae12a build-unix.txt: updated a few version numbers
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@94 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-26 00:23:16 +00:00
s_nakamoto
340120853f updated build-unix.txt instructions: sudo apt-get install libboost-all-dev
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@93 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-24 16:07:51 +00:00
s_nakamoto
3c3fc50c79 added instructions to build-unix.txt for building wxBase, which is needed to compile bitcoind
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@92 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-23 22:51:31 +00:00
s_nakamoto
6344edc36f version 0.3 rc1
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@91 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-22 17:59:00 +00:00
s_nakamoto
445520bf38 added new files to setup.nsi, updated version numbers
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@90 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-22 16:28:15 +00:00
s_nakamoto
8efd8f7f47 re-enable hiding taskbar button on minimize on linux, though it doesn't work cleanly
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@89 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-22 03:45:37 +00:00
s_nakamoto
36bb88e1b9 fix system tray icon on windows
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@88 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-21 18:41:34 +00:00
s_nakamoto
161c38ba60 80x80 xpm icon for ubuntu, alignment tweaked to scale nicely to 20x20 and 16x16
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@87 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-21 17:11:26 +00:00
s_nakamoto
68b973a913 fixed colors on ubuntu lucid,
enabled -O2 in makefile.unix,
boost removed -mt from their library names in 1.40,
updated bitcoin icon,
hashmeter,
generated and hashmeter log entries
-- version 0.2.13

git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@86 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-21 01:33:44 +00:00
s_nakamoto
24ba1b64e9 use seed nodes as fallback if IRC fails or with TOR
-- version 0.2.12

git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@85 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-18 03:14:24 +00:00
s_nakamoto
6a4a35549b German translation by DataWraith
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@84 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-16 16:35:34 +00:00
s_nakamoto
e5681bb121 more addr message error checking
-- version 0.2.11

git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@83 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-15 18:26:32 +00:00
s_nakamoto
bed005b639 revert makefile.unix from -02 back to -00 to fix compile on linux, -02 doesn't really help on linux anyway
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@82 1a98c847-1fd6-4fd8-948a-caf3550aa51b
2010-06-14 22:34:33 +00:00
35 changed files with 2305 additions and 1166 deletions

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2009 Satoshi Nakamoto
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,5 +1,3 @@
Bitcoin v0.2.0 BETA
Copyright (c) 2009-2010 Satoshi Nakamoto
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -1,3 +1,11 @@
Copyright (c) 2009-2010 Satoshi Nakamoto
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by the OpenSSL Project for use in
the OpenSSL Toolkit (http://www.openssl.org/). This product includes
cryptographic software written by Eric Young (eay@cryptsoft.com).
Mac OS X build instructions
Laszlo Hanyecz (solar@heliacal.net)

View File

@@ -1,5 +1,3 @@
Bitcoin v0.2.0 BETA
Copyright (c) 2009-2010 Satoshi Nakamoto
Distributed under the MIT/X11 software license, see the accompanying
file license.txt or http://www.opensource.org/licenses/mit-license.php.
@@ -18,7 +16,7 @@ sudo apt-get install libgtk2.0-dev
sudo apt-get install libssl-dev
sudo apt-get install libdb4.7-dev
sudo apt-get install libdb4.7++-dev
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
We're now using wxWidgets 2.9, which uses UTF-8.
@@ -36,11 +34,11 @@ Berkeley DB New BSD license with additional requirement that linked software
Boost MIT-like license
Versions used in this release:
GCC 4.3.3
GCC 4.4.3
OpenSSL 0.9.8k
wxWidgets 2.9.0
Berkeley DB 4.7.25.NC
Boost 1.38.0
Boost 1.40.0
Notes
@@ -65,12 +63,21 @@ make
sudo su
make install
ldconfig
su <username>
cd ..
mkdir buildbase
cd buildbase
../configure --disable-gui --enable-debug --disable-shared --enable-monolithic
make
sudo su
make install
ldconfig
Boost
-----
If you want to build Boost yourself,
cd /usr/local/boost_1_38_0
cd /usr/local/boost_1_40_0
su
./bootstrap.sh
./bjam install

View File

@@ -114,6 +114,7 @@ using namespace boost;
#include "xpm/bitcoin20.xpm"
#include "xpm/bitcoin32.xpm"
#include "xpm/bitcoin48.xpm"
#include "xpm/bitcoin80.xpm"
#include "xpm/check.xpm"
#include "xpm/send16.xpm"
#include "xpm/send16noshadow.xpm"

View File

@@ -383,7 +383,7 @@ bool CMyApp::OnInit2()
if (!fDebug && !pszSetDataDir[0])
ShrinkDebugFile();
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Bitcoin version 0.%d.%d%s beta, OS version %s\n", VERSION/100, VERSION%100, pszSubVer, ((string)wxGetOsDescription()).c_str());
printf("Bitcoin version %d.%d.%d%s, OS version %s\n", VERSION/10000, (VERSION/100)%100, VERSION%100, pszSubVer, ((string)wxGetOsDescription()).c_str());
printf("System default language is %d %s\n", m_locale.GetSystemLanguage(), ((string)m_locale.GetSysName()).c_str());
printf("Language file %s (%s)\n", (string("locale/") + (string)m_locale.GetCanonicalName() + "/LC_MESSAGES/bitcoin.mo").c_str(), ((string)m_locale.GetLocale()).c_str());

View File

@@ -166,10 +166,12 @@ void ThreadIRCSeed(void* parg)
while (!fShutdown)
{
CAddress addrConnect("216.155.130.130:6667");
//CAddress addrConnect("216.155.130.130:6667"); // chat.freenode.net
CAddress addrConnect("92.243.23.21:6667"); // irc.lfnet.org
if (!fTOR)
{
struct hostent* phostent = gethostbyname("chat.freenode.net");
//struct hostent* phostent = gethostbyname("chat.freenode.net");
struct hostent* phostent = gethostbyname("irc.lfnet.org");
if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(6667));
}
@@ -202,7 +204,6 @@ void ThreadIRCSeed(void* parg)
else
strMyName = strprintf("x%u", GetRand(1000000000));
Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str());

2
key.h
View File

@@ -1,4 +1,4 @@
// Copyright (c) 2009 Satoshi Nakamoto
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.

Binary file not shown.

View File

@@ -0,0 +1,805 @@
# DataWraith <DataWraith@web.de>, 2010.
msgid ""
msgstr ""
"POT-Creation-Date: 2010-05-26 22:02-0000\n"
"PO-Revision-Date: 2010-06-03 13:11+0200\n"
"Last-Translator: DataWraith\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: ../../..\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../../../init.cpp:342
msgid "Usage: bitcoin [options]"
msgstr "Verwendung: bitcoin [optionen]"
#: ../../../init.cpp:343
msgid "Options:\n"
msgstr "Optionen:\n"
#: ../../../init.cpp:344
msgid "Generate coins\n"
msgstr "Münzen erzeugen\n"
#: ../../../init.cpp:345
msgid "Don't generate coins\n"
msgstr "Keine Münzen erzeugen\n"
#: ../../../init.cpp:346
msgid "Start minimized\n"
msgstr "Minimiert starten\n"
#: ../../../init.cpp:347
msgid "Specify data directory\n"
msgstr "Datenverzeichnis festlegen\n"
#: ../../../init.cpp:348
msgid "Connect through socks4 proxy\n"
msgstr "Socks4 Proxy verwenden\n"
#: ../../../init.cpp:349
msgid "Add a node to connect to\n"
msgstr "Einen Teilnehmer hinzufügen, zu dem verbunden werden soll\n"
#: ../../../init.cpp:350
msgid "Connect only to the specified node\n"
msgstr "Nur zu dem angegebenen Teilnehmer verbinden\n"
#: ../../../init.cpp:351
msgid "This help message\n"
msgstr "Diese Anleitung\n"
#: ../../../init.cpp:455
msgid "Error loading addr.dat \n"
msgstr "Fehler beim Laden von addr.dat \n"
#: ../../../init.cpp:461
msgid "Error loading blkindex.dat \n"
msgstr "Fehler beim Laden von blkindex.dat \n"
#: ../../../init.cpp:468
msgid "Error loading wallet.dat \n"
msgstr "Fehler beim Laden von wallet.dat \n"
#: ../../../init.cpp:536
msgid "Invalid -proxy address"
msgstr "Ungültige -Proxy Adresse"
#: ../../../init.cpp:629
msgid "Program has crashed and will terminate. "
msgstr "Das Programm ist abgestürzt und wird beendet. "
#: ../../../main.cpp:1465
msgid "Warning: Disk space is low "
msgstr "Warnung: Festplatte fast voll "
#: ../../../main.cpp:2994
#, c-format
msgid "Error: This is an oversized transaction that requires a transaction fee of %s "
msgstr "Fehler: Die Überweisung ist sehr groß. Es wird eine Gebühr von %s erhoben. "
#: ../../../main.cpp:2996
msgid "Error: Transaction creation failed "
msgstr "Fehler: Überweisung konnte nicht erzeugt werden. "
#: ../../../main.cpp:3001
#: ../../../ui.cpp:1761
#: ../../../ui.cpp:1763
#: ../../../ui.cpp:1904
#: ../../../ui.cpp:2053
msgid "Sending..."
msgstr "Überweise..."
#: ../../../main.cpp:3005
msgid "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."
msgstr "Fehler: Die Überweisung wurde abgelehnt. Das kann passieren, wenn einige der Münzen in Ihrer Brieftasche bereits ausgegeben wurden, z.B. weil Sie eine Kopie der Brieftasche (wallet.dat) gemacht haben. Bitcoins, die mithilfe der Kopie ausgegeben wurden, sind in dieser Brieftasche noch nicht als ausgegeben markiert worden."
#: ../../../main.cpp:3017
msgid "Invalid amount"
msgstr "Ungültiger Betrag"
#: ../../../main.cpp:3019
#: ../../../ui.cpp:1971
#: ../../../ui.cpp:2038
msgid "Insufficient funds"
msgstr "Unzureichende Geldmittel"
#: ../../../main.cpp:3024
msgid "Invalid bitcoin address"
msgstr "Ungültige Bitcoin-Adresse"
#: ../../../ui.cpp:189
#, c-format
msgid "This transaction is over the size limit. You can still send it for a fee of %s, which goes to the nodes that process your transaction and helps to support the network. Do you want to pay the fee?"
msgstr "Diese Überweisung übersteigt das Betragslimit. Sie können sie trotzdem tätigen, aber es wird eine Gebühr von %s erhoben, die an den Teilnehmer ausgeschüttet wird, der Ihre Überweisung bearbeitet und dadurch hilft das Netzwerk am laufen zu halten. Möchten Sie die Gebühr entrichten?"
#: ../../../ui.cpp:285
msgid "Status"
msgstr "Status"
#: ../../../ui.cpp:286
msgid "Date"
msgstr "Datum"
#: ../../../ui.cpp:287
msgid "Description"
msgstr "Beschreibung"
#: ../../../ui.cpp:288
msgid "Debit"
msgstr "Belastungen"
#: ../../../ui.cpp:289
msgid "Credit"
msgstr "Gutschriften"
#: ../../../ui.cpp:489
#, c-format
msgid "Open for %d blocks"
msgstr "Offen für %d Blöcke"
#: ../../../ui.cpp:491
#, c-format
msgid "Open until %s"
msgstr "Offen bis %s"
#: ../../../ui.cpp:497
#, c-format
msgid "%d/offline?"
msgstr "%d/Offline?"
#: ../../../ui.cpp:499
#, c-format
msgid "%d/unconfirmed"
msgstr "%d/nicht bestätigt"
#: ../../../ui.cpp:501
#, c-format
msgid "%d confirmations"
msgstr "%d Bestätigungen"
#: ../../../ui.cpp:584
msgid "Generated"
msgstr "Erzeugt"
#: ../../../ui.cpp:592
#, c-format
msgid "Generated (%s matures in %d more blocks)"
msgstr "Erzeugt (%s reifen nach %d weiteren Blöcken)"
#: ../../../ui.cpp:596
msgid "Generated - Warning: This block was not received by any other nodes and will probably not be accepted!"
msgstr "Erzeugt - Warnung: Dieser Block wurde von keinem anderen Teilnehmer empfangen und wird wahrscheinlich nicht akzeptiert werden!"
#: ../../../ui.cpp:600
msgid "Generated (not accepted)"
msgstr "Erzeugt (nicht akzeptiert)"
#: ../../../ui.cpp:610
msgid "From: "
msgstr "Von: "
#: ../../../ui.cpp:634
msgid "From: unknown, Received with: "
msgstr "Von: Unbekannt, Empfangen durch: "
#: ../../../ui.cpp:676
msgid "Payment to yourself"
msgstr "Überweisung an Sie selbst"
#: ../../../ui.cpp:713
msgid "To: "
msgstr "An: "
#: ../../../ui.cpp:1009
msgid " Generating"
msgstr " Erzeugen"
#: ../../../ui.cpp:1011
msgid "(not connected)"
msgstr "(nicht verbunden)"
#: ../../../ui.cpp:1014
#, c-format
msgid " %d connections %d blocks %d transactions"
msgstr " %d Verbindungen %d Blöcke %d Überweisungen"
#: ../../../ui.cpp:1123
#: ../../../ui.cpp:2351
msgid "New Receiving Address"
msgstr "&Neue Empfangs-Adresse"
#: ../../../ui.cpp:1124
#: ../../../ui.cpp:2352
msgid ""
"It's good policy to use a new address for each payment you receive.\n"
"\n"
"Label"
msgstr ""
"Am besten verwenden Sie für jede Zahlung die Sie erhalten eine neue Adresse.\n"
"\n"
"Beschreibung"
#: ../../../ui.cpp:1193
msgid "<b>Status:</b> "
msgstr "<b>Status:</b> "
#: ../../../ui.cpp:1198
msgid ", has not been successfully broadcast yet"
msgstr ", wurde noch nicht erfolgreich übertragen"
#: ../../../ui.cpp:1200
#, c-format
msgid ", broadcast through %d node"
msgstr ", durch %d Teilnehmer übertragen"
#: ../../../ui.cpp:1202
#, c-format
msgid ", broadcast through %d nodes"
msgstr ", durch %d Teilnehmer übertragen"
#: ../../../ui.cpp:1206
msgid "<b>Date:</b> "
msgstr "<b>Datum</b> "
#: ../../../ui.cpp:1214
msgid "<b>Source:</b> Generated<br>"
msgstr "<b>Quelle:</b>Erzeugt<br>"
#: ../../../ui.cpp:1220
#: ../../../ui.cpp:1238
msgid "<b>From:</b> "
msgstr "<b>Von:</b> "
#: ../../../ui.cpp:1238
msgid "unknown"
msgstr "Unbekannt"
#: ../../../ui.cpp:1239
#: ../../../ui.cpp:1263
#: ../../../ui.cpp:1322
msgid "<b>To:</b> "
msgstr "<b>An:</b> "
#: ../../../ui.cpp:1242
msgid " (yours, label: "
msgstr " (Eigene, Beschreibung: "
#: ../../../ui.cpp:1244
msgid " (yours)"
msgstr " (Eigene)"
#: ../../../ui.cpp:1281
#: ../../../ui.cpp:1293
#: ../../../ui.cpp:1356
msgid "<b>Credit:</b> "
msgstr "<b>Gutschrift:</b> "
#: ../../../ui.cpp:1283
#, c-format
msgid "(%s matures in %d more blocks)"
msgstr "(%s reifen nach %d weiteren Blöcken)"
#: ../../../ui.cpp:1285
msgid "(not accepted)"
msgstr "(nicht akzeptiert)"
#: ../../../ui.cpp:1330
#: ../../../ui.cpp:1353
msgid "<b>Debit:</b> "
msgstr "<b>Belastung:</b> "
#: ../../../ui.cpp:1344
msgid "<b>Transaction fee:</b> "
msgstr "<b>Überweisungsgebühr:</b> "
#: ../../../ui.cpp:1360
msgid "<b>Net amount:</b> "
msgstr "<b>Nettobetrag:</b> "
#: ../../../ui.cpp:1367
msgid "Message:"
msgstr "Nachricht:"
#: ../../../ui.cpp:1370
msgid "Generated coins must wait 120 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, it will change to \"not accepted\" and not be spendable. This may occasionally happen if another node generates a block within a few seconds of yours."
msgstr ""
"Erzeugte Münzen müssen 120 Blöcke lang reifen. Als Sie diesen Block erzeugt haben, wurde er an alle Teilnehmer übertragen, damit er zur Block-Kette hinzugefügt werden kann. Falls der Block es nicht in die Block-Kette schafft, wird die Beschreibung zu \"nicht akzeptiert\" geändert, und Sie können die Münzen nicht ausgeben. Dies kann manchmal "
"passieren, wenn Sie und ein anderer Teilnehmer annähernd zeitgleich einen Block erzeugen."
#: ../../../ui.cpp:1437
msgid "Main"
msgstr "Haupt"
#: ../../../ui.cpp:1442
msgid "&Minimize on close"
msgstr "Beim schließen &Minimieren"
#: ../../../ui.cpp:1595
#, c-format
msgid "version 0.%d.%d beta"
msgstr "Version 0.%d.%d Beta"
#: ../../../ui.cpp:1681
msgid "Will appear as \"From: Unknown\""
msgstr "Wird als \"Von: Unbekannt\" erscheinen"
#: ../../../ui.cpp:1682
msgid "Can't include a message when sending to a Bitcoin address"
msgstr "Beim überweisen an eine Bitcoin-Adresse kann keine Nachricht angegeben werden."
#: ../../../ui.cpp:1735
msgid "Error in amount "
msgstr "Fehler in Betrag "
#: ../../../ui.cpp:1735
#: ../../../ui.cpp:1740
#: ../../../ui.cpp:1745
#: ../../../ui.cpp:1771
#: ../../../uibase.cpp:61
msgid "Send Coins"
msgstr "Überweisen"
#: ../../../ui.cpp:1740
msgid "Amount exceeds your balance "
msgstr "Der Betrag übersteigt Ihr Guthaben "
#: ../../../ui.cpp:1745
msgid "Total exceeds your balance when the "
msgstr "Der Betrag übersteigt Ihr Guthaben, wenn man die Überweisungsgebühr von "
#: ../../../ui.cpp:1745
msgid " transaction fee is included "
msgstr " berücksichtigt "
#: ../../../ui.cpp:1761
msgid "Payment sent "
msgstr "Zahlung überwiesen "
#: ../../../ui.cpp:1771
msgid "Invalid address "
msgstr "Ungültige Adresse "
#: ../../../ui.cpp:1825
#, c-format
msgid "Sending %s to %s"
msgstr "Überweise %s an %s"
#: ../../../ui.cpp:1898
#: ../../../ui.cpp:1931
msgid "CANCELLED"
msgstr "ANNULLIERT"
#: ../../../ui.cpp:1902
msgid "Cancelled"
msgstr "Annulliert"
#: ../../../ui.cpp:1904
msgid "Transfer cancelled "
msgstr "Überweisung annulliert "
#: ../../../ui.cpp:1957
msgid "Error: "
msgstr "Fehler: "
#: ../../../ui.cpp:1976
msgid "Connecting..."
msgstr "Verbinde..."
#: ../../../ui.cpp:1981
msgid "Unable to connect"
msgstr "Kann nicht verbinden"
#: ../../../ui.cpp:1986
msgid "Requesting public key..."
msgstr "Fordere öffentlichen Schlüssel an..."
#: ../../../ui.cpp:1998
msgid "Received public key..."
msgstr "Öffentlichen Schlüssel empfangen..."
#: ../../../ui.cpp:2010
msgid "Transfer was not accepted"
msgstr "Überweisung wurde nicht akzeptiert"
#: ../../../ui.cpp:2019
msgid "Invalid response received"
msgstr "Ungültige Antwort erhalten"
#: ../../../ui.cpp:2034
msgid "Creating transaction..."
msgstr "Erstelle Überweisung..."
#: ../../../ui.cpp:2046
#, c-format
msgid "This is an oversized transaction that requires a transaction fee of %s"
msgstr "Die Überweisung ist sehr groß. Es wird eine Gebühr von %s erhoben."
#: ../../../ui.cpp:2048
msgid "Transaction creation failed"
msgstr "Überweisung konnte nicht erzeugt werden."
#: ../../../ui.cpp:2055
msgid "Transaction aborted"
msgstr "Überweisung abgebrochen"
#: ../../../ui.cpp:2063
msgid "Lost connection, transaction cancelled"
msgstr "Verbindung verloren, Überweisungsvorgang abgebrochen"
#: ../../../ui.cpp:2079
msgid "Sending payment..."
msgstr "Überweise Zahlung..."
#: ../../../ui.cpp:2085
msgid "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."
msgstr "Die Überweisung wurde abgelehnt. Das kann passieren, wenn einige der Münzen in Ihrer Brieftasche bereits ausgegeben wurden, z.B. weil Sie eine Kopie der Brieftasche (wallet.dat) gemacht haben. Bitcoins, die mithilfe der Kopie ausgegeben wurden, sind in dieser Brieftasche noch nicht als ausgegeben markiert worden."
#: ../../../ui.cpp:2092
msgid "Waiting for confirmation..."
msgstr "Warte auf Bestätigung..."
#: ../../../ui.cpp:2110
msgid ""
"The payment was sent, but the recipient was unable to verify it.\n"
"The transaction is recorded and will credit to the recipient,\n"
"but the comment information will be blank."
msgstr ""
"Die Zahlung wurde überwiesen, aber der Empfänger konnte sie nicht bestätigen.\n"
"Die Überweisung wurde gespeichert und wird dem Empfänger gutgeschrieben,\n"
"aber die begleitende Nachricht wird nicht ankommen."
#: ../../../ui.cpp:2119
msgid "Payment was sent, but an invalid response was received"
msgstr "Die Zahlung wurde überwiesen, aber die Antwort war fehlerhaft"
#: ../../../ui.cpp:2125
msgid "Payment completed"
msgstr "Zahlung ausgeführt"
#: ../../../ui.cpp:2156
#: ../../../ui.cpp:2302
#: ../../../ui.cpp:2339
msgid "Name"
msgstr "Name"
#: ../../../ui.cpp:2157
#: ../../../ui.cpp:2302
#: ../../../ui.cpp:2339
msgid "Address"
msgstr "Adresse"
#: ../../../ui.cpp:2159
#: ../../../ui.cpp:2314
msgid "Label"
msgstr "Beschreibung"
#: ../../../ui.cpp:2160
#: ../../../uibase.cpp:908
msgid "Bitcoin Address"
msgstr "Bitcoin-Adresse"
#: ../../../ui.cpp:2284
msgid "This is one of your own addresses for receiving payments and cannot be entered in the address book. "
msgstr "Dies ist eine Ihrer eigenen Adressen für den Zahlungseingang und kann deshalb nicht in das Adressbuch übernommen werden. "
#: ../../../ui.cpp:2302
#: ../../../ui.cpp:2308
msgid "Edit Address"
msgstr "Adresse bearbeiten"
#: ../../../ui.cpp:2314
msgid "Edit Address Label"
msgstr "Beschreibung der Adresse bearbeiten"
#: ../../../ui.cpp:2339
#: ../../../ui.cpp:2345
msgid "Add Address"
msgstr "Adresse hinzufügen"
#: ../../../ui.cpp:2421
msgid "Bitcoin"
msgstr "Bitcoin"
#: ../../../ui.cpp:2423
msgid "Bitcoin - Generating"
msgstr "Bitcoin - Erzeuge"
#: ../../../ui.cpp:2425
msgid "Bitcoin - (not connected)"
msgstr "Bitcoin - (nicht verbunden)"
#: ../../../ui.cpp:2500
msgid "&Open Bitcoin"
msgstr "Bitcoin Ö&ffnen"
#: ../../../ui.cpp:2501
msgid "O&ptions..."
msgstr "O&ptionen..."
#: ../../../ui.cpp:2502
#: ../../../uibase.cpp:34
msgid "&Generate Coins"
msgstr "Münzen Er&zeugen"
#: ../../../ui.cpp:2505
#: ../../../uibase.cpp:27
msgid "E&xit"
msgstr "B&eenden"
#: ../../../uibase.cpp:30
msgid "&File"
msgstr "&Datei"
#: ../../../uibase.cpp:38
msgid "&Your Receiving Addresses..."
msgstr "&Ihre Empfangs-Adressen..."
#: ../../../uibase.cpp:42
msgid "&Options..."
msgstr "&Optionen..."
#: ../../../uibase.cpp:45
msgid "&Settings"
msgstr "&Einstellungen"
#: ../../../uibase.cpp:49
msgid "&About..."
msgstr "Ü&ber..."
#: ../../../uibase.cpp:52
msgid "&Help"
msgstr "&Hilfe"
#: ../../../uibase.cpp:62
msgid "Address Book"
msgstr "Adressbuch"
#: ../../../uibase.cpp:77
msgid "Your Bitcoin Address:"
msgstr "Ihre Bitcoin-Adresse:"
#: ../../../uibase.cpp:84
msgid " &New... "
msgstr " &Neu... "
#: ../../../uibase.cpp:87
#: ../../../uibase.cpp:851
#: ../../../uibase.cpp:954
msgid " &Copy to Clipboard "
msgstr " In die Zwischenablage &kopieren "
#: ../../../uibase.cpp:102
msgid "Balance:"
msgstr "Kontostand:"
#: ../../../uibase.cpp:121
msgid " All"
msgstr " Alle"
#: ../../../uibase.cpp:121
msgid " Sent"
msgstr " Überwiesen"
#: ../../../uibase.cpp:121
msgid " Received"
msgstr " Erhalten"
#: ../../../uibase.cpp:121
msgid " In Progress"
msgstr " In Bearbeitung"
#: ../../../uibase.cpp:142
msgid "All Transactions"
msgstr "Alle Überweisungen"
#: ../../../uibase.cpp:153
msgid "Sent/Received"
msgstr "Überwiesen/Erhalten"
#: ../../../uibase.cpp:164
msgid "Sent"
msgstr "Überwiesen"
#: ../../../uibase.cpp:175
msgid "Received"
msgstr "Erhalten"
#: ../../../uibase.cpp:318
#: ../../../uibase.cpp:479
#: ../../../uibase.cpp:580
#: ../../../uibase.cpp:793
#: ../../../uibase.cpp:854
#: ../../../uibase.cpp:963
#: ../../../uibase.cpp:1052
msgid "OK"
msgstr "OK"
#: ../../../uibase.cpp:361
msgid "Optional transaction fee you give to the nodes that process your transactions."
msgstr "Optionale Überweisungsgebühr, die Sie an den Teilnehmer entrichten, der Ihre Überweisungen bearbeitet."
#: ../../../uibase.cpp:370
msgid "Transaction fee:"
msgstr "Überweisungsgebühr:"
#: ../../../uibase.cpp:386
msgid "&Limit coin generation to"
msgstr "Erzeugung von Münzen auf"
#: ../../../uibase.cpp:393
msgid "processors"
msgstr "Prozessoren &beschränken"
#: ../../../uibase.cpp:399
msgid "&Start Bitcoin on system startup"
msgstr "Bitcoin beim &Systemstart ausführen"
#: ../../../uibase.cpp:403
msgid "&Minimize to the tray instead of the taskbar"
msgstr "In den Infobereich statt in die Taskleiste &minimieren"
#: ../../../uibase.cpp:407
msgid "M&inimize to the tray on close"
msgstr "Beim schließen in den Infobereich m&inimieren"
#: ../../../uibase.cpp:414
msgid "&Connect through socks4 proxy: "
msgstr "&Verbinden per Socks4-Proxy: "
#: ../../../uibase.cpp:426
msgid "Proxy &IP:"
msgstr "Proxy &IP:"
#: ../../../uibase.cpp:434
msgid " &Port:"
msgstr " &Port:"
#: ../../../uibase.cpp:456
msgid "// [don't translate] Test panel 2 for future expansion"
msgstr ""
#: ../../../uibase.cpp:460
msgid "// [don't translate] Let's not start multiple pages until the first page is filled up"
msgstr ""
#: ../../../uibase.cpp:482
#: ../../../uibase.cpp:735
#: ../../../uibase.cpp:798
#: ../../../uibase.cpp:857
#: ../../../uibase.cpp:966
#: ../../../uibase.cpp:1055
msgid "Cancel"
msgstr "Abbrechen"
#: ../../../uibase.cpp:485
msgid "&Apply"
msgstr "&Anwenden"
#: ../../../uibase.cpp:546
msgid "Bitcoin "
msgstr "Bitcoin "
#: ../../../uibase.cpp:552
msgid "version"
msgstr "Version"
#: ../../../uibase.cpp:563
msgid ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"This product includes software developed by the OpenSSL Project for use in the \n"
"OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \n"
"Eric Young (eay@cryptsoft.com)."
msgstr ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"Lizensiert unter der MIT/X11 Software-Lizenz. Beachten Sie die beiliegende\n"
"Datei license.txt oder http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Dieses Produkt enthält Software, die vom OpenSSL-Projekt zur Nutzung im\n"
"OpenSSL Toolkit (http://www.openssl.org/) geschrieben wurde sowie\n"
"kryptographische Software von Eric Young (eay@cryptsoft.com)."
#: ../../../uibase.cpp:619
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"
msgstr "Geben Sie eine Bitcoin-Adresse (z.B. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) oder IP-Adresse (z.B. 123.45.6.7) ein"
#: ../../../uibase.cpp:633
msgid "Pay &To:"
msgstr "Überweisen &An:"
#: ../../../uibase.cpp:648
msgid "&Paste"
msgstr "&Einfügen"
#: ../../../uibase.cpp:651
msgid " Address &Book..."
msgstr " Address&buch..."
#: ../../../uibase.cpp:658
msgid "&Amount:"
msgstr "&Betrag:"
#: ../../../uibase.cpp:668
msgid "T&ransfer:"
msgstr "Ü&berweisung:"
#: ../../../uibase.cpp:674
msgid " Standard"
msgstr " Standard"
#: ../../../uibase.cpp:696
msgid "&From:"
msgstr "&Von:"
#: ../../../uibase.cpp:713
msgid "&Message:"
msgstr "&Nachricht:"
#: ../../../uibase.cpp:730
msgid "&Send"
msgstr "Ü&berweisen"
#: ../../../uibase.cpp:782
msgid ""
"\n"
"\n"
"Connecting..."
msgstr ""
"\n"
"\n"
"Verbinde..."
#: ../../../uibase.cpp:832
msgid "These are your Bitcoin addresses for receiving payments. You may want to give a different one to each sender so you can keep track of who is paying you. The highlighted address is displayed in the main window."
msgstr "Dies sind Ihre Bitcoin-Adressen zum Empfang von Zahlungen. Sie sollten vielleicht jedem Überweisenden eine andere Adresse geben um nachvollziehen zu können von wem eine Zahlung stammt. Die markierte Adresse wird im Hauptfenster angezeigt."
#: ../../../uibase.cpp:845
#: ../../../uibase.cpp:957
msgid "&Edit..."
msgstr "&Bearbeiten..."
#: ../../../uibase.cpp:848
#: ../../../uibase.cpp:960
msgid " &New Address... "
msgstr " &Neue Adresse... "
#: ../../../uibase.cpp:920
msgid "Sending"
msgstr "Überweise"
#: ../../../uibase.cpp:928
msgid "These are your Bitcoin addresses for receiving payments. You can give a different one to each sender to keep track of who is paying you. The highlighted address will be displayed in the main window."
msgstr "Dies sind Ihre Bitcoin-Adressen zum Empfang von Zahlungen. Sie können jedem Überweisenden eine andere Adresse geben um nachvollziehen zu können von wem eine Zahlung stammt. Die markierte Adresse wird im Hauptfenster angezeigt."
#: ../../../uibase.cpp:941
msgid "Receiving"
msgstr "Empfange"
#: ../../../uibase.cpp:951
msgid "&Delete"
msgstr "&Löschen"
#: ../../../uibase.h:150
msgid "Transaction Details"
msgstr "Überweisungsdetails"
#: ../../../uibase.h:203
msgid "Options"
msgstr "Optionen"
#: ../../../uibase.h:231
msgid "About Bitcoin"
msgstr "Über Bitcoin"
#: ../../../uibase.h:341
msgid "Your Bitcoin Addresses"
msgstr "Ihre Bitcoin-Adressen"

Binary file not shown.

View File

@@ -690,8 +690,6 @@ msgstr "versione"
msgid ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"This is experimental software. Do not rely on it for actual financial transactions.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
@@ -701,13 +699,12 @@ msgid ""
msgstr ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"Questo è un software sperimentale. Non affidartici per gli attuali trasferimenti finanziari.\n"
"Distribuito sotto la licenza software MIT/X11, guarda il file license.txt\n"
"incluso oppure su http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Distribuito sotto la licenza software MIT/X11, guarda il file license.txt incluso oppure su http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Questo prodoto include software sviluppato dal progetto OpenSSL per l'uso del \n"
"(http://www.openssl.org/) e il software criptografico scritto da \n"
"Eric Young (eay@cryptsoft.com)."
"Questo prodoto include software sviluppato dal progetto OpenSSL per\n"
"l'uso del (http://www.openssl.org/) e il software criptografico scritto\n"
"da Eric Young (eay@cryptsoft.com)."
#: ../../../uibase.cpp:619
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"

Binary file not shown.

View File

@@ -691,8 +691,6 @@ msgstr "versie"
msgid ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"This is experimental software. Do not rely on it for actual financial transactions.\n"
"\n"
"Distributed under the MIT/X11 software license, see the accompanying file \n"
"license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
@@ -702,14 +700,12 @@ msgid ""
msgstr ""
"Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
"\n"
"Dit is experimentele software. Vertrouw niet op het voor echte financiele transacties.\n"
"\n"
"Gedistributeerd onder de MIT/X11 software licentie, see het bijbehorende bestand \n"
"license.txt of \"http://www.opensource.org/licenses/mit-license.php.\n"
"license.txt of http://www.opensource.org/licenses/mit-license.php.\n"
"\n"
"Dit product komt met software ontwikkeld door het OpenSSL Project for gebruik in de\n"
"OpenSSL Toolkit (http://www.openssl.org/) and de cryptografische software geschreven door \n"
"Eric Young (eay@cryptsoft.com)."
"Dit product komt met software ontwikkeld door het OpenSSL Project for gebruik \n"
"in de OpenSSL Toolkit (http://www.openssl.org/) and de cryptografische \n"
"software geschreven door Eric Young (eay@cryptsoft.com)."
#: ../../../uibase.cpp:619
msgid "Enter a Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) or IP address (e.g. 123.45.6.7)"

View File

@@ -493,7 +493,7 @@ bool CTransaction::AcceptTransaction(CTxDB& txdb, bool fCheckInputs, bool* pfMis
if (!CheckTransaction())
return error("AcceptTransaction() : CheckTransaction failed");
// To help v0.1.5 clients who would see it as negative number. please delete this later.
// To help v0.1.5 clients who would see it as a negative number
if (nLockTime > INT_MAX)
return error("AcceptTransaction() : not accepting nLockTime beyond 2038");
@@ -1862,6 +1862,8 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
uint64 nNonce = 1;
string strSubVer;
vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe;
if (pfrom->nVersion == 10300)
pfrom->nVersion = 300;
if (pfrom->nVersion >= 106 && !vRecv.empty())
vRecv >> addrFrom >> nNonce;
if (pfrom->nVersion >= 106 && !vRecv.empty())
@@ -1896,10 +1898,10 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
pfrom->vRecv.SetVersion(min(pfrom->nVersion, VERSION));
// Ask the first connected node for block updates
static bool fAskedForBlocks;
if (!fAskedForBlocks && !pfrom->fClient)
static int nAskedForBlocks;
if (!pfrom->fClient && (nAskedForBlocks < 1 || vNodes.size() <= 1))
{
fAskedForBlocks = true;
nAskedForBlocks++;
pfrom->PushGetBlocks(pindexBest, uint256(0));
}
@@ -1926,7 +1928,9 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
{
vector<CAddress> vAddr;
vRecv >> vAddr;
if (vAddr.size() > 50000) // lower this to 1000 later
if (pfrom->nVersion < 200) // don't want addresses from 0.1.5
return true;
if (vAddr.size() > 1000)
return error("message addr size() = %d", vAddr.size());
// Store the new addresses
@@ -1937,18 +1941,24 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
addr.nTime = GetAdjustedTime() - 2 * 60 * 60;
if (pfrom->fGetAddr || vAddr.size() > 10)
addr.nTime -= 5 * 24 * 60 * 60;
AddAddress(addr, false);
AddAddress(addr);
pfrom->AddAddressKnown(addr);
if (!pfrom->fGetAddr && addr.IsRoutable())
{
// Relay to a limited number of other nodes
CRITICAL_BLOCK(cs_vNodes)
{
multimap<int, CNode*> mapMix;
// Use deterministic randomness to send to
// the same places for an hour at a time
static uint256 hashSalt;
if (hashSalt == 0)
RAND_bytes((unsigned char*)&hashSalt, sizeof(hashSalt));
uint256 hashRand = addr.ip ^ (GetTime()/3600) ^ hashSalt;
multimap<uint256, CNode*> mapMix;
foreach(CNode* pnode, vNodes)
mapMix.insert(make_pair(GetRand(INT_MAX), pnode));
int nRelayNodes = 5;
for (multimap<int, CNode*>::iterator mi = mapMix.begin(); mi != mapMix.end() && nRelayNodes-- > 0; ++mi)
mapMix.insert(make_pair(hashRand = Hash(BEGIN(hashRand), END(hashRand)), pnode));
int nRelayNodes = 10; // reduce this to 5 when the network is large
for (multimap<uint256, CNode*>::iterator mi = mapMix.begin(); mi != mapMix.end() && nRelayNodes-- > 0; ++mi)
((*mi).second)->PushAddress(addr);
}
}
@@ -2156,8 +2166,10 @@ bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
else if (strCommand == "getaddr")
{
// This includes all nodes that are currently online,
// since they rebroadcast an addr every 24 hours
pfrom->vAddrToSend.clear();
int64 nSince = GetAdjustedTime() - 5 * 24 * 60 * 60; // in the last 5 days
int64 nSince = GetAdjustedTime() - 24 * 60 * 60; // in the last 24 hours
CRITICAL_BLOCK(cs_mapAddresses)
{
unsigned int nSize = mapAddresses.size();
@@ -2311,6 +2323,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
if (pto->setAddrKnown.insert(addr).second)
{
vAddr.push_back(addr);
// receiver rejects addr messages larger than 1000
if (vAddr.size() >= 1000)
{
pto->PushMessage("addr", vAddr);
@@ -2345,7 +2358,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
static uint256 hashSalt;
if (hashSalt == 0)
RAND_bytes((unsigned char*)&hashSalt, sizeof(hashSalt));
uint256 hashRand = (inv.hash ^ hashSalt);
uint256 hashRand = inv.hash ^ hashSalt;
hashRand = Hash(BEGIN(hashRand), END(hashRand));
bool fTrickleWait = ((hashRand & 3) != 0);
@@ -2476,6 +2489,7 @@ void ThreadBitcoinMiner(void* parg)
vnThreadsRunning[3]--;
PrintException(NULL, "ThreadBitcoinMiner()");
}
UIThreadCall(bind(CalledSetStatusBar, "", 0));
printf("ThreadBitcoinMiner exiting, %d threads remaining\n", vnThreadsRunning[3]);
}
@@ -2666,6 +2680,8 @@ void BitcoinMiner()
printf("BitcoinMiner:\n");
printf("proof-of-work found \n hash: %s \ntarget: %s\n", hash.GetHex().c_str(), hashTarget.GetHex().c_str());
pblock->print();
printf("%s ", DateTimeStrFormat("%x %H:%M", GetTime()).c_str());
printf("generated %s\n", FormatMoney(pblock->vtx[0].vout[0].nValue).c_str());
SetThreadPriority(THREAD_PRIORITY_NORMAL);
CRITICAL_BLOCK(cs_main)
@@ -2693,8 +2709,33 @@ void BitcoinMiner()
}
// Update nTime every few seconds
if ((++tmp.block.nNonce & 0xffff) == 0)
const unsigned int nMask = 0xffff;
if ((++tmp.block.nNonce & nMask) == 0)
{
// Meter hashes/sec
static int64 nHashCounter;
static int64 nLastTick;
if (nLastTick == 0)
nLastTick = GetTimeMillis();
else
nHashCounter += nMask + 1;
if (GetTimeMillis() - nLastTick > 4000)
{
double dHashesPerSec = 1000.0 * nHashCounter / (GetTimeMillis() - nLastTick);
nLastTick = GetTimeMillis();
nHashCounter = 0;
string strStatus = strprintf(" %.0f khash/s", dHashesPerSec/1000.0);
UIThreadCall(bind(CalledSetStatusBar, strStatus, 0));
static int64 nLogTime;
if (GetTime() - nLogTime > 30 * 60)
{
nLogTime = GetTime();
printf("%s ", DateTimeStrFormat("%x %H:%M", GetTime()).c_str());
printf("hashmeter %3d CPUs %6.0f khash/s\n", vnThreadsRunning[3], dHashesPerSec/1000.0);
}
}
// Check for stop or if block needs to be rebuilt
if (fShutdown)
return;
if (!fGenerateBitcoins)
@@ -2727,6 +2768,7 @@ void BitcoinMiner()
}
break;
}
tmp.block.nTime = pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
}
}

View File

@@ -21,7 +21,7 @@ WXLIBS= \
LIBS= \
-Wl,-Bstatic \
-l boost_system-mt -l boost_filesystem-mt \
-l boost_system -l boost_filesystem \
-l db_cxx \
-Wl,-Bdynamic \
-l crypto \
@@ -68,6 +68,6 @@ bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha.o
clean:
-rm obj/*
-rm obj/nogui/*
-rm obj/*.o
-rm obj/nogui/*.o
-rm headers.h.gch

86
net.cpp
View File

@@ -223,14 +223,12 @@ bool GetMyExternalIP(unsigned int& ipRet)
bool AddAddress(CAddress addr, bool fCurrentlyOnline)
bool AddAddress(CAddress addr)
{
if (!addr.IsRoutable())
return false;
if (addr.ip == addrLocalHost.ip)
return false;
if (fCurrentlyOnline)
addr.nTime = GetAdjustedTime();
CRITICAL_BLOCK(cs_mapAddresses)
{
map<vector<unsigned char>, CAddress>::iterator it = mapAddresses.find(addr.GetKey());
@@ -252,6 +250,7 @@ bool AddAddress(CAddress addr, bool fCurrentlyOnline)
addrFound.nServices |= addr.nServices;
fUpdated = true;
}
bool fCurrentlyOnline = (GetAdjustedTime() - addr.nTime < 24 * 60 * 60);
int64 nUpdateInterval = (fCurrentlyOnline ? 60 * 60 : 24 * 60 * 60);
if (addrFound.nTime < addr.nTime - nUpdateInterval)
{
@@ -798,6 +797,25 @@ void ThreadSocketHandler2(void* parg)
unsigned int pnSeed[] =
{
0x35218252, 0x9c9c9618, 0xda6bacad, 0xb9aca862, 0x97c235c6,
0x146f9562, 0xb67b9e4b, 0x87cf4bc0, 0xb83945d0, 0x984333ad,
0xbbeec555, 0x6f0eb440, 0xe0005318, 0x7797e460, 0xddc60fcc,
0xb3bbd24a, 0x1ac85746, 0x641846a6, 0x85ee1155, 0xbb2e7a4c,
0x9cb8514b, 0xfc342648, 0x62958fae, 0xd0a8c87a, 0xa800795b,
0xda8c814e, 0x256a0c80, 0x3f23ec63, 0xd565df43, 0x997d9044,
0xaa121448, 0xbed8688e, 0x59d09a5e, 0xb2931243, 0x3730ba18,
0xdd3462d0, 0x4e4d1448, 0x171df645, 0x84ee1155,
0x248ac445, 0x0e634444, 0x0ded1b63, 0x30c01e60,
0xa2b9a094, 0x29e4fd43, 0x9ce61b4c, 0xdae09744,
};
void ThreadOpenConnections(void* parg)
{
IMPLEMENT_RANDOMIZE_STACK(ThreadOpenConnections(parg));
@@ -858,12 +876,13 @@ void ThreadOpenConnections2(void* parg)
}
// Initiate network connections
int64 nStart = GetTime();
loop
{
// Wait
vnThreadsRunning[1]--;
Sleep(500);
const int nMaxConnections = 15;
const int nMaxConnections = 8;
while (vNodes.size() >= nMaxConnections)
{
Sleep(2000);
@@ -874,6 +893,55 @@ void ThreadOpenConnections2(void* parg)
if (fShutdown)
return;
CRITICAL_BLOCK(cs_mapAddresses)
{
// Add seed nodes if IRC isn't working
static bool fSeedUsed;
bool fTOR = (fUseProxy && addrProxy.port == htons(9050));
if (mapAddresses.empty() && (GetTime() - nStart > 60 || fTOR))
{
for (int i = 0; i < ARRAYLEN(pnSeed); i++)
{
// It'll only connect to one or two seed nodes because once it connects,
// it'll get a pile of addresses with newer timestamps.
CAddress addr;
addr.ip = pnSeed[i];
addr.nTime = 0;
AddAddress(addr);
}
fSeedUsed = true;
}
if (fSeedUsed && mapAddresses.size() > ARRAYLEN(pnSeed) + 100)
{
// Disconnect seed nodes
set<unsigned int> setSeed(pnSeed, pnSeed + ARRAYLEN(pnSeed));
static int64 nSeedDisconnected;
if (nSeedDisconnected == 0)
{
nSeedDisconnected = GetTime();
CRITICAL_BLOCK(cs_vNodes)
foreach(CNode* pnode, vNodes)
if (setSeed.count(pnode->addr.ip))
pnode->fDisconnect = true;
}
// Keep setting timestamps to 0 so they won't reconnect
if (GetTime() - nSeedDisconnected < 60 * 60)
{
foreach(PAIRTYPE(const vector<unsigned char>, CAddress)& item, mapAddresses)
{
if (setSeed.count(item.second.ip))
{
item.second.nTime = 0;
CAddrDB().WriteAddress(item.second);
}
}
}
}
}
//
// Choose an address to connect to based on most recently seen
//
@@ -897,9 +965,9 @@ void ThreadOpenConnections2(void* parg)
int64 nSinceLastTry = GetAdjustedTime() - addr.nLastTry;
// Randomize the order in a deterministic way, putting the standard port first
int64 nRandomizer = (uint64)(addr.nLastTry * 9567851 + addr.ip * 7789) % (30 * 60);
int64 nRandomizer = (uint64)(nStart * 4951 + addr.nLastTry * 9567851 + addr.ip * 7789) % (2 * 60 * 60);
if (addr.port != DEFAULT_PORT)
nRandomizer += 30 * 60;
nRandomizer += 2 * 60 * 60;
// Last seen Base retry frequency
// <1 hour 10 min
@@ -968,9 +1036,9 @@ bool OpenNetworkConnection(const CAddress& addrConnect)
if (addrLocalHost.IsRoutable() && !fUseProxy)
{
// Advertise our address
vector<CAddress> vAddrToSend;
vAddrToSend.push_back(addrLocalHost);
pnode->PushMessage("addr", vAddrToSend);
vector<CAddress> vAddr;
vAddr.push_back(addrLocalHost);
pnode->PushMessage("addr", vAddr);
}
// Get as many addresses as we can

26
net.h
View File

@@ -12,7 +12,7 @@ extern int nBestHeight;
#define DEFAULT_PORT htons(8333)
static const unsigned short DEFAULT_PORT = 0x8d20; // htons(8333)
static const unsigned int PUBLISH_HOPS = 5;
enum
{
@@ -24,7 +24,7 @@ enum
bool ConnectSocket(const CAddress& addrConnect, SOCKET& hSocketRet);
bool GetMyExternalIP(unsigned int& ipRet);
bool AddAddress(CAddress addr, bool fCurrentlyOnline=true);
bool AddAddress(CAddress addr);
void AddressCurrentlyConnected(const CAddress& addr);
CNode* FindNode(unsigned int ip);
CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0);
@@ -289,16 +289,24 @@ public:
bool IsRoutable() const
{
return !(GetByte(3) == 10 ||
(GetByte(3) == 192 && GetByte(2) == 168) ||
GetByte(3) == 127 ||
GetByte(3) == 0 ||
ip == 0 ||
ip == INADDR_NONE);
return IsValid() &&
!(GetByte(3) == 10 ||
(GetByte(3) == 192 && GetByte(2) == 168) ||
GetByte(3) == 127 ||
GetByte(3) == 0);
}
bool IsValid() const
{
// Clean up 3-byte shifted addresses caused by garbage in size field
// of addr messages from versions before 0.2.9 checksum.
// Two consecutive addr messages look like this:
// header20 vectorlen3 addr26 addr26 addr26 header20 vectorlen3 addr26 addr26 addr26...
// so if the first length field is garbled, it reads the second batch
// of addr misaligned by 3 bytes.
if (memcmp(pchReserved, pchIPv4+3, sizeof(pchIPv4)-3) == 0)
return false;
return (ip != 0 && ip != INADDR_NONE && port != htons(USHRT_MAX));
}
@@ -619,7 +627,7 @@ public:
// Known checking here is only to save space from duplicates.
// SendMessages will filter it again for knowns that were added
// after addresses were pushed.
if (!setAddrKnown.count(addr))
if (addr.IsValid() && !setAddrKnown.count(addr))
vAddrToSend.push_back(addr);
}

BIN
rc/bitcoin-bc.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 25 KiB

BIN
rc/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -19,8 +19,8 @@ class CScript;
class CDataStream;
class CAutoFile;
static const int VERSION = 210;
static const char* pszSubVer = ".0";
static const int VERSION = 300;
static const char* pszSubVer = "";

View File

@@ -7,7 +7,7 @@ RequestExecutionLevel highest
# General Symbol Definitions
!define REGKEY "SOFTWARE\$(^Name)"
!define VERSION 0.2.0
!define VERSION 0.3.0
!define COMPANY "Bitcoin project"
!define URL http://www.bitcoin.org/
@@ -42,12 +42,12 @@ Var StartMenuGroup
!insertmacro MUI_LANGUAGE English
# Installer attributes
OutFile bitcoin-0.2.0-win32-setup.exe
OutFile bitcoin-0.3.0-win32-setup.exe
InstallDir $PROGRAMFILES\Bitcoin
CRCCheck on
XPStyle on
ShowInstDetails show
VIProductVersion 0.2.0.0
VIProductVersion 0.3.0.0
VIAddVersionKey ProductName Bitcoin
VIAddVersionKey ProductVersion "${VERSION}"
VIAddVersionKey CompanyName "${COMPANY}"
@@ -67,6 +67,10 @@ Section -Main SEC0000
File mingwm10.dll
File license.txt
File readme.txt
SetOutPath $INSTDIR\daemon
File /r daemon\*.*
SetOutPath $INSTDIR\locale
File /r locale\*.*
SetOutPath $INSTDIR\src
File /r src\*.*
SetOutPath $INSTDIR
@@ -112,6 +116,8 @@ Section /o -un.Main UNSEC0000
Delete /REBOOTOK $INSTDIR\mingwm10.dll
Delete /REBOOTOK $INSTDIR\license.txt
Delete /REBOOTOK $INSTDIR\readme.txt
RMDir /r /REBOOTOK $INSTDIR\daemon
RMDir /r /REBOOTOK $INSTDIR\locale
RMDir /r /REBOOTOK $INSTDIR\src
DeleteRegValue HKCU "${REGKEY}\Components" Main
SectionEnd

19
ui.cpp
View File

@@ -250,7 +250,8 @@ CMainFrame::CMainFrame(wxWindow* parent) : CMainFrameBase(parent)
#ifdef __WXMSW__
SetIcon(wxICON(bitcoin));
#else
SetIcon(bitcoin16_xpm);
SetIcon(bitcoin80_xpm);
SetBackgroundColour(m_toolBar->GetBackgroundColour());
wxFont fontTmp = m_staticText41->GetFont();
fontTmp.SetFamily(wxFONTFAMILY_TELETYPE);
m_staticTextBalance->SetFont(fontTmp);
@@ -374,13 +375,13 @@ void CMainFrame::OnIconize(wxIconizeEvent& event)
// to get rid of the deprecated warning. Just ignore it.
if (!event.Iconized())
fClosedToTray = false;
#ifndef __WXMSW__
// Tray is not reliable on ubuntu 9.10 gnome
fClosedToTray = false;
#endif
//#ifdef __WXMSW__
// The tray icon sometimes disappears on ubuntu karmic
// Hiding the taskbar button doesn't work cleanly on ubuntu lucid
if (fMinimizeToTray && event.Iconized())
fClosedToTray = true;
Show(!fClosedToTray);
//#endif
ptaskbaricon->Show(fMinimizeToTray || fClosedToTray);
}
@@ -1597,7 +1598,7 @@ void COptionsDialog::OnButtonApply(wxCommandEvent& event)
CAboutDialog::CAboutDialog(wxWindow* parent) : CAboutDialogBase(parent)
{
m_staticTextVersion->SetLabel(strprintf(_("version 0.%d.%d beta"), VERSION/100, VERSION%100));
m_staticTextVersion->SetLabel(strprintf(_("version %d.%d.%d"), VERSION/10000, (VERSION/100)%100, VERSION%100));
// Change (c) into UTF-8 or ANSI copyright symbol
wxString str = m_staticTextMain->GetLabel();
@@ -2436,9 +2437,11 @@ void CMyTaskBarIcon::Show(bool fShow)
{
strlcpy(pszPrevTip, strTooltip.c_str(), sizeof(pszPrevTip));
#ifdef __WXMSW__
SetIcon(wxICON(bitcoin), strTooltip);
// somehow it'll choose the wrong size and scale it down if
// we use the main icon, so we hand it one with only 16x16
SetIcon(wxICON(favicon), strTooltip);
#else
SetIcon(bitcoin20_xpm, strTooltip);
SetIcon(bitcoin80_xpm, strTooltip);
#endif
}
}

1
ui.rc
View File

@@ -12,3 +12,4 @@ addressbook16 BITMAP "rc/addressbook16.bmp"
addressbook16mask BITMAP "rc/addressbook16mask.bmp"
addressbook20 BITMAP "rc/addressbook20.bmp"
addressbook20mask BITMAP "rc/addressbook20mask.bmp"
favicon ICON "rc/favicon.ico"

View File

@@ -20,8 +20,6 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString&
this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
m_menubar = new wxMenuBar( 0 );
m_menubar->SetBackgroundColour( wxColour( 240, 240, 240 ) );
m_menuFile = new wxMenu();
wxMenuItem* m_menuFileExit;
m_menuFileExit = new wxMenuItem( m_menuFile, wxID_EXIT, wxString( _("E&xit") ) , wxEmptyString, wxITEM_NORMAL );
@@ -95,25 +93,21 @@ CMainFrameBase::CMainFrameBase( wxWindow* parent, wxWindowID id, const wxString&
wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxHORIZONTAL );
m_panel14 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bSizer66;
bSizer66 = new wxBoxSizer( wxHORIZONTAL );
m_staticText41 = new wxStaticText( m_panel14, wxID_ANY, _("Balance:"), wxDefaultPosition, wxSize( -1,15 ), 0 );
m_staticText41 = new wxStaticText( this, wxID_ANY, _("Balance:"), wxDefaultPosition, wxSize( -1,15 ), 0 );
m_staticText41->Wrap( -1 );
bSizer66->Add( m_staticText41, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
m_staticTextBalance = new wxStaticText( m_panel14, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120,15 ), wxALIGN_RIGHT|wxST_NO_AUTORESIZE );
m_staticTextBalance = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 120,15 ), wxALIGN_RIGHT|wxST_NO_AUTORESIZE );
m_staticTextBalance->Wrap( -1 );
m_staticTextBalance->SetFont( wxFont( 8, 70, 90, 90, false, wxEmptyString ) );
m_staticTextBalance->SetBackgroundColour( wxColour( 255, 255, 255 ) );
bSizer66->Add( m_staticTextBalance, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_panel14->SetSizer( bSizer66 );
m_panel14->Layout();
bSizer66->Fit( m_panel14 );
bSizer3->Add( m_panel14, 1, wxEXPAND|wxALIGN_BOTTOM|wxALL, 5 );
bSizer3->Add( bSizer66, 1, wxEXPAND|wxALL, 5 );
bSizer3->Add( 0, 0, 0, wxEXPAND, 5 );
@@ -560,12 +554,12 @@ CAboutDialogBase::CAboutDialogBase( wxWindow* parent, wxWindowID id, const wxStr
bSizer631->Add( 0, 4, 0, wxEXPAND, 5 );
m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2010 Satoshi Nakamoto.\n\nThis is experimental software. Do not rely on it for actual financial transactions.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2010 Satoshi Nakamoto.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextMain->Wrap( -1 );
bSizer631->Add( m_staticTextMain, 0, wxALL, 5 );
bSizer631->Add( 0, 0, 1, wxEXPAND, 5 );
bSizer631->Add( 0, 0, 0, wxEXPAND, 5 );
bSizer62->Add( bSizer631, 1, wxEXPAND, 5 );
@@ -578,9 +572,9 @@ CAboutDialogBase::CAboutDialogBase( wxWindow* parent, wxWindowID id, const wxStr
bSizer61->Add( 0, 0, 1, wxEXPAND, 5 );
m_buttonOK = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
bSizer61->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
bSizer61->Add( m_buttonOK, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 6 );
bSizer60->Add( bSizer61, 0, wxALIGN_RIGHT|wxEXPAND|wxRIGHT, 5 );
bSizer60->Add( bSizer61, 0, wxALIGN_RIGHT|wxEXPAND|wxRIGHT, 2 );
bSizer63->Add( bSizer60, 1, wxEXPAND|wxLEFT, 5 );

View File

@@ -25,9 +25,9 @@
#include <wx/textctrl.h>
#include <wx/button.h>
#include <wx/sizer.h>
#include <wx/panel.h>
#include <wx/choice.h>
#include <wx/listctrl.h>
#include <wx/panel.h>
#include <wx/notebook.h>
#include <wx/frame.h>
#include <wx/html/htmlwin.h>
@@ -82,7 +82,6 @@ class CMainFrameBase : public wxFrame
wxButton* m_buttonNew;
wxButton* m_buttonCopy;
wxPanel* m_panel14;
wxStaticText* m_staticText41;
wxStaticText* m_staticTextBalance;
@@ -228,7 +227,7 @@ class CAboutDialogBase : public wxDialog
public:
wxStaticText* m_staticTextVersion;
CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,329 ), long style = wxDEFAULT_DIALOG_STYLE );
CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,315 ), long style = wxDEFAULT_DIALOG_STYLE );
~CAboutDialogBase();
};

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2009 Satoshi Nakamoto
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.

View File

@@ -71,7 +71,7 @@
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxMenuBar" expanded="1">
<property name="bg">240,240,240</property>
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
@@ -583,156 +583,113 @@
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_BOTTOM|wxALL</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">1</property>
<object class="wxPanel" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_panel14</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer66</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Balance:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText41</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size">-1,15</property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
<property name="name">bSizer66</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Balance:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticText41</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size">-1,15</property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg">255,255,255</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font">,90,90,8,70,0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label"></property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticTextBalance</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size">120,15</property>
<property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg">255,255,255</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font">,90,90,8,70,0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label"></property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticTextBalance</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size">120,15</property>
<property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
@@ -1653,7 +1610,7 @@
<property name="border">5</property>
<property name="flag">wxEXPAND|wxLEFT</property>
<property name="proportion">1</property>
<object class="wxScrolledWindow" expanded="1">
<object class="wxScrolledWindow" expanded="0">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
@@ -2909,7 +2866,7 @@
<property name="minimum_size"></property>
<property name="name">CAboutDialogBase</property>
<property name="pos"></property>
<property name="size">532,329</property>
<property name="size">532,315</property>
<property name="style">wxDEFAULT_DIALOG_STYLE</property>
<property name="subclass"></property>
<property name="title">About Bitcoin</property>
@@ -3173,7 +3130,7 @@
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Copyright (c) 2009-2010 Satoshi Nakamoto.&#x0A;&#x0A;This is experimental software. Do not rely on it for actual financial transactions.&#x0A;&#x0A;Distributed under the MIT/X11 software license, see the accompanying file &#x0A;license.txt or http://www.opensource.org/licenses/mit-license.php.&#x0A;&#x0A;This product includes software developed by the OpenSSL Project for use in the &#x0A;OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by &#x0A;Eric Young (eay@cryptsoft.com).</property>
<property name="label">Copyright (c) 2009-2010 Satoshi Nakamoto.&#x0A;&#x0A;Distributed under the MIT/X11 software license, see the accompanying file &#x0A;license.txt or http://www.opensource.org/licenses/mit-license.php.&#x0A;&#x0A;This product includes software developed by the OpenSSL Project for use in the &#x0A;OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by &#x0A;Eric Young (eay@cryptsoft.com).</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticTextMain</property>
@@ -3215,7 +3172,7 @@
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<property name="proportion">0</property>
<object class="spacer" expanded="1">
<property name="height">0</property>
<property name="permission">protected</property>
@@ -3227,7 +3184,7 @@
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="border">2</property>
<property name="flag">wxALIGN_RIGHT|wxEXPAND|wxRIGHT</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1">
@@ -3246,7 +3203,7 @@
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="border">6</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">

View File

@@ -101,10 +101,8 @@ void RandAddSeedPerfmon()
hash = 0;
memset(pdata, 0, nSize);
printf("%s RandAddSeed() %d bytes\n", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str(), nSize);
printf("%s RandAddSeed() %d bytes\n", DateTimeStrFormat("%x %H:%M", GetTime()).c_str(), nSize);
}
#else
printf("%s RandAddSeed()\n", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str());
#endif
}

View File

@@ -1,203 +1,219 @@
/* XPM */
static const char * bitcoin16_xpm[] = {
/* columns rows colors chars-per-pixel */
"16 16 181 2",
" c #775605",
". c #745507",
"X c #785806",
"o c #7D5A06",
"O c #745508",
"+ c #755508",
"@ c #755608",
"# c #775708",
"$ c #77580B",
"% c #7A5A0B",
"& c #7D5E14",
"* c #86630D",
"= c #8D6B16",
"- c #886818",
"; c #927019",
": c #91701E",
"> c #9A751E",
", c #957627",
"< c #9A7925",
"1 c #987827",
"2 c #98782B",
"3 c #9D7C2F",
"4 c #9E7E31",
"5 c #A57D22",
"6 c #A88227",
"7 c #B78D2E",
"8 c #B78F2E",
"9 c #A78430",
"0 c #A48733",
"q c #A68536",
"w c #A98937",
"e c #B98F31",
"r c #B49233",
"t c #B39337",
"y c #C09837",
"u c #C39936",
"i c #C49936",
"p c #C69C39",
"a c #C89C3A",
"s c #CCA23A",
"d c #AF9240",
"f c #B99644",
"g c #BE9C46",
"h c #BF9D4A",
"j c #BA9F58",
"k c #BEA04B",
"l c #BBA253",
"z c #BAA057",
"x c #C29E44",
"c c #C2A144",
"v c #CAA246",
"b c #CCA344",
"n c #CEA645",
"m c #C2A04A",
"M c #C7A349",
"N c #C5A34A",
"B c #C7A64D",
"V c #CFA649",
"C c #CEAA4C",
"Z c #D1A84B",
"A c #D4AC49",
"S c #D5AC49",
"D c #D7AD48",
"F c #D5AF4D",
"G c #C0A451",
"H c #CAA550",
"J c #CBAA58",
"K c #CAAD5D",
"L c #D9AD53",
"P c #DFB757",
"I c #D5B058",
"U c #D7B75D",
"Y c #DCB75A",
"T c #DFBB5E",
"R c #E1B957",
"E c #E3B759",
"W c #E6BC5B",
"Q c #E7BE5D",
"! c #E5BC5E",
"~ c #CAAE62",
"^ c #C8AF6A",
"/ c #CDB565",
"( c #CDB46D",
") c #D7B360",
"_ c #D5B862",
"` c #D1B66C",
"' c #D8BB68",
"] c #DBBA6E",
"[ c #DFBE6D",
"{ c #D0B872",
"} c #D2B974",
"| c #DABF74",
" . c #D8BF77",
".. c #D6BD79",
"X. c #D5BE7B",
"o. c #D7BF7A",
"O. c #E8BC61",
"+. c #DDC075",
"@. c #DCC279",
"#. c #DCC47E",
"$. c #EDC661",
"%. c #EEC562",
"&. c #E0C16B",
"*. c #E0C36B",
"=. c #E3C26A",
"-. c #E7C26A",
";. c #E3C569",
":. c #E3C26C",
">. c #E4C16C",
",. c #EEC969",
"<. c #F4C664",
"1. c #F0CA68",
"2. c #F7CA68",
"3. c #F6CD69",
"4. c #F7CD69",
"5. c #F7CF68",
"6. c #E6C374",
"7. c #E1C47A",
"8. c #E1C77B",
"9. c #E5C578",
"0. c #E4C579",
"q. c #E4C67A",
"w. c #E5C67C",
"e. c #E8C57B",
"r. c #E8CB7B",
"t. c #EDCC78",
"y. c #EBCB7C",
"u. c #F0CF73",
"i. c #F6CF74",
"p. c #F4D173",
"a. c #F7D072",
"s. c #F5D376",
"d. c #FAD071",
"f. c #FBD470",
"g. c #FAD572",
"h. c #FDD671",
"j. c #FDD773",
"k. c #F3DB76",
"l. c #F8D578",
"z. c #FBDB79",
"x. c #FFE57E",
"c. c #DEC681",
"v. c #DFC782",
"b. c #E0C682",
"n. c #E1C984",
"m. c #E2C985",
"M. c #E3CB87",
"N. c #E9C980",
"B. c #EBCC82",
"V. c #E3CC88",
"C. c #E4CF8D",
"Z. c #EFD187",
"A. c #EFD488",
"S. c #EFD58D",
"D. c #F6D581",
"F. c #F1D687",
"G. c #F9D680",
"H. c #F7DA8B",
"J. c #F2DE93",
"K. c #FADF93",
"L. c #F3DB98",
"P. c #F0DB9B",
"I. c #FEE081",
"U. c #FEE18C",
"Y. c #FCE38F",
"T. c #F7E98E",
"R. c #FFE88C",
"E. c #F6E491",
"W. c #FBEA91",
"Q. c #FFE897",
"!. c #FFEE9A",
"~. c #FEE99D",
"^. c #FEEC9F",
"/. c #FEF092",
"(. c #FFF29A",
"). c #FBE7A9",
"_. c #F4EDA8",
"`. c #FAEBAA",
"'. c #FEEBAD",
"]. c #FEFABD",
"[. c None",
"16 16 197 2",
" c #755507",
". c #775606",
"X c #795707",
"o c #7D5A07",
"O c #765608",
"+ c #74550A",
"@ c #75550A",
"# c #75560A",
"$ c #785708",
"% c #78580B",
"& c #7D5C0B",
"* c #78590E",
"= c #7E5F14",
"- c #8A6711",
"; c #8D6B15",
": c #8A691A",
"> c #93711C",
", c #9D7A23",
"< c #9F7B22",
"1 c #9C7B2A",
"2 c #9E7C28",
"3 c #A37F26",
"4 c #B4831B",
"5 c #A68126",
"6 c #A5852E",
"7 c #A9872E",
"8 c #AC862D",
"9 c #AC872F",
"0 c #AF8B30",
"q c #AC8932",
"w c #AF8A34",
"e c #B08E36",
"r c #B98F33",
"t c #B18E3A",
"y c #B39036",
"u c #B69237",
"i c #B3913B",
"p c #B6923C",
"a c #BD9338",
"s c #B9993F",
"d c #BA993F",
"f c #C2932D",
"g c #C09437",
"h c #C59832",
"j c #C39836",
"k c #C89835",
"l c #C59C3D",
"z c #CF9E3E",
"x c #CFA23F",
"c c #D0A13A",
"v c #D3A23A",
"b c #D4A338",
"n c #D6A33F",
"m c #B19345",
"M c #BF9940",
"N c #BF9D43",
"B c #B3954B",
"V c #BD9A48",
"C c #BC9C4B",
"Z c #BD9F51",
"A c #CAA244",
"S c #C2A14B",
"D c #C4A44B",
"F c #C1A24C",
"G c #C7A64C",
"H c #C5A64E",
"J c #C9A94F",
"K c #D1A343",
"L c #D7A644",
"P c #D5A547",
"I c #D6A547",
"U c #DCAD42",
"Y c #DDAB45",
"T c #C3A151",
"R c #C9A551",
"E c #CAAA50",
"W c #CBAD53",
"Q c #CDAC52",
"! c #CEA855",
"~ c #CEB15A",
"^ c #DEB154",
"/ c #D1B35A",
"( c #D7B35A",
") c #D8B45D",
"_ c #E3B34A",
"` c #E2B34E",
"' c #E6B54F",
"] c #E2B350",
"[ c #E3B352",
"{ c #E4B451",
"} c #E2B355",
"| c #E7B853",
" . c #E9BC51",
".. c #ECBC53",
"X. c #E7BE5A",
"o. c #E2BA5C",
"O. c #E2BC5C",
"+. c #E9BB59",
"@. c #EBBE59",
"#. c #EABD5B",
"$. c #E8BF5C",
"%. c #E9BE5E",
"&. c #C8AC63",
"*. c #D0B162",
"=. c #D5B567",
"-. c #DABC62",
";. c #D2B66B",
":. c #D0B56D",
">. c #DCBC6E",
",. c #D2B972",
"<. c #D7BE78",
"1. c #E9BE62",
"2. c #EEC05A",
"3. c #F0C25F",
"4. c #DEC26B",
"5. c #DDC27A",
"6. c #E0C167",
"7. c #E5C067",
"8. c #EBC463",
"9. c #EEC460",
"0. c #ECC364",
"q. c #E4C16B",
"w. c #E7C46B",
"e. c #E9C56C",
"r. c #E0C172",
"t. c #E5C575",
"y. c #E4C870",
"u. c #E6CA72",
"i. c #E6CA74",
"p. c #E8CB73",
"a. c #E9CE76",
"s. c #EBD07B",
"d. c #EED179",
"f. c #F5D478",
"g. c #F5D57C",
"h. c #F4D67C",
"j. c #F4D77E",
"k. c #DEC781",
"l. c #E0C883",
"z. c #E3CA89",
"x. c #E4CB8B",
"c. c #E3CD8A",
"v. c #E5CE8B",
"b. c #E3CC8E",
"n. c #E8D18D",
"m. c #F6D980",
"M. c #F7DB83",
"N. c #F3DA86",
"B. c #F7DA84",
"V. c #F6DB84",
"C. c #F7DB84",
"Z. c #F7DA86",
"A. c #F6DC85",
"S. c #F7DC85",
"D. c #F8DB85",
"F. c #FADD85",
"G. c #FBDE86",
"H. c #F5DE8B",
"J. c #FADD88",
"K. c #F9DF8B",
"L. c #E4CF93",
"P. c #E6CF92",
"I. c #E6D094",
"U. c #EAD597",
"Y. c #EBD698",
"T. c #EFDA99",
"R. c #F0DC9C",
"E. c #FCE089",
"W. c #FCE28B",
"Q. c #FDE28B",
"!. c #FCE38C",
"~. c #FCE28D",
"^. c #FCE38D",
"/. c #FDE38D",
"(. c #FEE38D",
"). c #FDE38E",
"_. c #FEE48D",
"`. c #FEE58F",
"'. c #FCE490",
"]. c #FDE490",
"[. c #FFE590",
"{. c #FFE690",
"}. c #FFE691",
"|. c #FEE791",
" X c #FFE692",
".X c #FFE792",
"XX c #FEE693",
"oX c #FFE693",
"OX c #FFE793",
"+X c #FEE897",
"@X c #F6E2A2",
"#X c #F7E3A2",
"$X c #FAE6A8",
"%X c #FBE7A9",
"&X c #FCE9AB",
"*X c #FDEAAC",
"=X c None",
/* pixels */
"[.[.[.[.[.3 f M m q [.[.[.[.[.[.",
"[.[.[.4 A 5.j.f.3.3.! 6 [.[.[.[.",
"[.[.9 %.h.%.D s n -.z.l.c % [.[.",
"[.1 1.g.S p i i C 6.7.W./.t [.[.",
"[._ U.Z e 7 7 y B | #.*.T.k.* [.",
", E.F.c.).).C.g K `.`.C.' x.r + ",
"d !.y.M.).j '.( ).L.h M I z.F + ",
"G (.t.M.'.'.C.j ).b.T Q O.d.R X ",
"k T.O.M.`.^ `.X.).V.;.! L i.E ",
"w I.6.c.'.).C.{ c.).).C.H d.v + ",
"[.,.u.~ } X.@.@.| .#.` V 2.5 ",
"[.x p.U J ] B.Z.9.) v a <.E o [.",
"[.[.Y s.-.[ 0.0.N.e.w.H.D.> + [.",
"[.[.2 &.).Y.A.S.L.`.]._.0 . [.[.",
"[.[.[.[.l r.Y.Q.~.J./ = $ [.[.[.",
"[.[.[.[.[.[.: 1 ; - & [.[.[.[.[."
"=X=X=X=X=X0 S G D i =X=X=X=X=X=X",
"=X=X=X9 6.).).).).).d.e =X=X=X=X",
"=X=Xu C.J.O.( h ( o.D.).J & =X=X",
"=X0 S.j.f 4 b.e P.K @.j.'.d % =X",
"=X4.).k a T Y.&.Y.R 2.2.F.S.- =X",
"e '.e.z ! v.&X,.k.*X:. .%.`.d # ",
"H +X^ I P =.*X9 j T.k.U ' F.-.% ",
"W '.` { } >.*X<.n.*XC b Y g.u.X ",
"W |.` { 3.t.&Xm C c.%Xa n m.u.. ",
"N '.9...@.r.&Xi A 5.*XM L W.~ . ",
"5 m.f._ *.#X&XR.#X%X:.v 0.'.7 # ",
"=XQ `.@.l t P.B I.u v { G.a.o =X",
"=X3 u.W.0.A z.V b.+.1.J.E., # =X",
"=X=X3 u.oXF.e.7.q.C.+XH.6 # =X=X",
"=X=X=X=XS s.'.'.'.C.~ ; * =X=X=X",
"=X=X=X=X=X=X1 1 > : = =X=X=X=X=X"
};

View File

@@ -1,226 +1,160 @@
/* XPM */
static const char * bitcoin20_xpm[] = {
/* columns rows colors chars-per-pixel */
"20 20 200 2",
" c #7B5500",
". c #7B5900",
"X c #735508",
"o c #7B5908",
"O c #7B5D08",
"+ c #7B5910",
"@ c #7B6118",
"# c #845D08",
"$ c #846108",
"% c #8C6510",
"& c #8C6910",
"* c #8C6918",
"= c #946D10",
"- c #947118",
"; c #9C7518",
": c #A57918",
"> c #846929",
", c #846D29",
"< c #947121",
"1 c #8C7539",
"2 c #947939",
"3 c #8C7542",
"4 c #AD8221",
"5 c #B58E29",
"6 c #B58E31",
"7 c #B59231",
"8 c #BD9231",
"9 c #BD9631",
"0 c #C69A31",
"q c #C69A39",
"w c #C69E39",
"e c #CE9E39",
"r c #CEA239",
"t c #948652",
"y c #A58A4A",
"u c #BD9642",
"i c #BD9A42",
"p c #B5964A",
"a c #B59A4A",
"s c #BD9E4A",
"d c #A58E5A",
"f c #BD9A52",
"g c #BD9E52",
"h c #BDA252",
"j c #BDA25A",
"k c #BD9E63",
"l c #A59673",
"z c #AD9A73",
"x c #AD9E7B",
"c c #BDA263",
"v c #BDA26B",
"b c #BDA273",
"n c #BDA673",
"m c #B5A27B",
"M c #BDAA7B",
"N c #C69E42",
"B c #CE9E42",
"V c #C6A242",
"C c #CEA242",
"Z c #CEA642",
"A c #C6A24A",
"S c #C6A64A",
"D c #CEA64A",
"F c #CEAA4A",
"G c #D6A642",
"H c #DEAE4A",
"J c #DEB24A",
"K c #C6A252",
"L c #C6A652",
"P c #CEAA52",
"I c #CEAE52",
"U c #C6A65A",
"Y c #C6AA5A",
"T c #CEAA5A",
"R c #CEAE5A",
"E c #D6AE52",
"W c #DEAE52",
"Q c #D6AE5A",
"! c #D6B252",
"~ c #DEB252",
"^ c #DEB652",
"/ c #D6B65A",
"( c #DEB65A",
") c #DEBA5A",
"_ c #EFBE52",
"` c #E7BA5A",
"' c #E7BE5A",
"] c #EFBE5A",
"[ c #C6A663",
"{ c #C6AE63",
"} c #CEAE63",
"| c #D6AE63",
" . c #CEB26B",
".. c #CEB66B",
"X. c #DEB663",
"o. c #D6BE63",
"O. c #DEBA63",
"+. c #DEBE63",
"@. c #D6B66B",
"#. c #DEB66B",
"$. c #D6BA6B",
"%. c #D6BE6B",
"&. c #DEBA6B",
"*. c #DEBE6B",
"=. c #D6BA73",
"-. c #DEBE73",
";. c #EFBE63",
":. c #E7BE73",
">. c #DEC37B",
",. c #E7C363",
"<. c #EFC763",
"1. c #EFCF63",
"2. c #E7C36B",
"3. c #E7C76B",
"4. c #EFC36B",
"5. c #EFC76B",
"6. c #E7CB6B",
"7. c #EFCB6B",
"8. c #F7CB63",
"9. c #F7CB6B",
"0. c #F7CF6B",
"q. c #FFCB6B",
"w. c #F7D36B",
"e. c #FFD36B",
"r. c #E7C373",
"t. c #E7CB73",
"y. c #EFCF73",
"u. c #E7C37B",
"i. c #E7C77B",
"p. c #E7CB7B",
"a. c #EFCB7B",
"s. c #F7CF73",
"d. c #EFD373",
"f. c #EFD37B",
"g. c #F7D373",
"h. c #FFD373",
"j. c #FFD773",
"k. c #FFDB73",
"l. c #F7DB7B",
"z. c #FFDF7B",
"x. c #ADA284",
"c. c #BDAA84",
"v. c #BDAE84",
"b. c #B5A68C",
"n. c #B5AE9C",
"m. c #BDB6A5",
"M. c #C6BA9C",
"N. c #C6BAA5",
"B. c #C6BEA5",
"V. c #DEC784",
"C. c #E7CB84",
"Z. c #E7CF84",
"A. c #EFCF84",
"S. c #E7CF8C",
"D. c #EFCF8C",
"F. c #EFD384",
"G. c #E7D38C",
"H. c #EFD38C",
"J. c #EFD78C",
"K. c #F7D784",
"L. c #FFD784",
"P. c #F7DB84",
"I. c #F7DF84",
"U. c #FFDB84",
"Y. c #FFDF84",
"T. c #F7DB8C",
"R. c #EFD394",
"E. c #EFD794",
"W. c #EFDB94",
"Q. c #EFDB9C",
"!. c #F7DB9C",
"~. c #F7DF9C",
"^. c #FFE384",
"/. c #FFE784",
"(. c #FFE38C",
"). c #FFEB8C",
"_. c #EFE79C",
"`. c #FFE794",
"'. c #FFEB94",
"]. c #FFEF94",
"[. c #FFEB9C",
"{. c #FFEF9C",
"}. c #FFF394",
"|. c #FFF794",
" X c #C6C3B5",
".X c #CEC7BD",
"XX c #F7E3A5",
"oX c #FFE7A5",
"OX c #F7EBA5",
"+X c #FFEBA5",
"@X c #FFEFA5",
"#X c #FFE7AD",
"$X c #FFEBAD",
"%X c #FFEFAD",
"&X c #FFF3AD",
"*X c #FFF7B5",
"=X c #FFFBB5",
"-X c #FFFFBD",
";X c #CEC7C6",
":X c None",
"20 20 134 2",
" c #735305",
". c #785706",
"X c #7E5C07",
"o c #755509",
"O c #76580D",
"+ c #7F6015",
"@ c #85620D",
"# c #89650D",
"$ c #836215",
"% c #886510",
"& c #8E6B11",
"* c #81641F",
"= c #906D19",
"- c #977116",
"; c #96741E",
": c #9B761E",
"> c #947424",
", c #9B7722",
"< c #9D7824",
"1 c #A47F23",
"2 c #A17D2A",
"3 c #A58125",
"4 c #AA8327",
"5 c #A4832F",
"6 c #AD862B",
"7 c #B28B2E",
"8 c #A58433",
"9 c #A88637",
"0 c #AD8932",
"q c #A78639",
"w c #A8893C",
"e c #B28C34",
"r c #B88E33",
"t c #B28E3A",
"y c #B79136",
"u c #BB9235",
"i c #BB9639",
"p c #C19836",
"a c #C29539",
"s c #C59C3C",
"d c #A88B41",
"f c #AF9045",
"g c #B49342",
"h c #BE9641",
"j c #BD9B44",
"k c #B29448",
"l c #B7994B",
"z c #B8994C",
"x c #C09946",
"c c #CB9E46",
"v c #C59D4C",
"b c #CFA246",
"n c #CBAB47",
"m c #CEA74A",
"M c #D4A749",
"N c #D6A94D",
"B c #C7A754",
"V c #CEA453",
"C c #C6AA56",
"Z c #CDA955",
"A c #CBAB5B",
"S c #D2AB54",
"D c #D2AE5E",
"F c #D9AE5A",
"G c #D7B356",
"H c #DDB35F",
"J c #DFB95A",
"K c #E1B554",
"L c #E4BA56",
"P c #E6BC5A",
"I c #E9BE5E",
"U c #C7AC64",
"Y c #CBAF64",
"T c #CDB166",
"R c #D4B364",
"E c #DBB463",
"W c #DFB867",
"Q c #D5B76B",
"! c #DFBA6F",
"~ c #D5BB76",
"^ c #D7BE79",
"/ c #E3BC64",
"( c #E8BF64",
") c #E0BB68",
"_ c #DECA7A",
"` c #EBC265",
"' c #EBC36B",
"] c #EFC96B",
"[ c #F1C564",
"{ c #F3CB6A",
"} c #F9CD6C",
"| c #FAD16C",
" . c #E5C770",
".. c #EEC774",
"X. c #E6CE7E",
"o. c #EFCE7A",
"O. c #F1CB73",
"+. c #F4CE7A",
"@. c #F3D273",
"#. c #FCD574",
"$. c #FEDA76",
"%. c #F5D47D",
"&. c #FAD47B",
"*. c #F2D97D",
"=. c #FCDA7A",
"-. c #DDC784",
";. c #E1CA86",
":. c #E4CE8B",
">. c #ECD985",
",. c #E7D18E",
"<. c #F4DC84",
"1. c #FCDC81",
"2. c #F4DB8B",
"3. c #FBDF8B",
"4. c #EBD592",
"5. c #EFDA99",
"6. c #F1DD9C",
"7. c #F6E081",
"8. c #FDE484",
"9. c #FFEA87",
"0. c #F9E488",
"q. c #FEE88D",
"w. c #F9E394",
"e. c #FFEB93",
"r. c #FEE698",
"t. c #FEEA9B",
"y. c #FFF49A",
"u. c #F7E4A4",
"i. c #F9E5A5",
"p. c #FCE9AA",
"a. c #F7F0AA",
"s. c #FEF1AE",
"d. c #FEF6B3",
"f. c None",
/* pixels */
":X:X:X:X:X:XM.v f i g k c..X:X:X:X:X:X:X",
":X:X:X:XM.u H 8.j.j.e.0.^ 7 d X:X:X:X:X",
":X:X:Xn Z 0.k.j.8._ ] 9.h.h.~ ; b.:X:X:X",
":X:Xn J j.j.' C 0 0 w E a.K.^.d.- x.:X:X",
":XN.F k.w.G w q 0 0 D 2.i.a.].|.6.$ m.:X",
":Xg (.U.C 9 8 8 8 q S *.H.f.y.].).9 , :X",
"B.o.{.p.-.>.>.>.R 7 N =.G.E.Z.&./.1.# n.",
"M I.[.| R.$X..~.#Xs V.$XG.h @.T l.z.; t ",
"c {.'.X.E.$Xj G.$XU #X$Xg ) ! ( 0.k.5 > ",
"j }.`.O.E.$XE.oXC.p $X$XA ,.' ;.5.j.9 o ",
"j ).I.Q E.$X .Q.#X .$X$XP 7.` W 4.j.8 X ",
"c z.Y.P R.$X[ S.$X{ XX$X$.) P D 5.h.4 @ ",
"v.<.Y.I R.$XW.oXXX} @.XX#XE.XXK 8.8.& 3 ",
".XC j.3.s a h Y .J.A.T Y h 6 e 8.H . x ",
":Xk <.g./ P #.i.F.A.r.X.E B r 9.q.: + :X",
":X.Xi s.g.+.O.r.i.u.i.u.:.r.L.L.N l :X",
":X:XN.V U.(.T.a.i.C.D.!.%X-X=X%.# 1 :X:X",
":X:X:XN.g _.+X`.[.+X@X&X*XOXh O 1 :X:X:X",
":X:X:X:X;Xb i +.f.P.K.t.L = o z :X:X:X:X",
":X:X:X:X:X:X.Xm y < % * 2 x :X:X:X:X:X:X"
"f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.",
"f.f.f.f.f.f.f.0 y i i 0 , f.f.f.f.f.f.f.",
"f.f.f.f.3 p P | $.| } { I p ; f.f.f.f.f.",
"f.f.f.4 L | $.{ L K L ` =.#.` 3 $ f.f.f.",
"f.f.6 [ $.{ M a Q 0 Q S ' %.q.*.6 o f.f.",
"f.3 ' $.P i u r ,.< :.S +.%.0.y.*.& f.f.",
"f.C e.%.c x T Y 6.U 5.T R @.#.0.9.n . f.",
"f.>.t.W F A ^ p.u.~ -.p.i.C { { =.@.# f.",
"e e.3.E H / j p.6.0 V ~ p.Y ( ` #.$.3 o ",
"j p.2.( ( ! Z p.6.l R 6.6.t I I { #.y o ",
"j e.1.( ! +.H i.i.-.:.i.u.R N K ` #.u ",
"i 9.&.( ..1.) p.6.8 j w p.p.h N ' #.7 ",
"4 =.7.` ....Z p.6.g D T p.i.t M [ } - o ",
"f.J =.{ ` E i.p.p.i.p.p.6.k u M } K @ o ",
"f.7 @.@./ S z f 4.d ,.q 2 r a ( { 6 f.",
"f.f.m @.O.( / V 4.q :.v V V O.&.G X O f.",
"f.f.: G 1.0.+.W R D R ! 4.d.d._ # f.f.",
"f.f.f.2 C a.i.r.w.w.i.s.d.p.Y @ f.f.f.",
"f.f.f.f.f.5 Z .<.3.2.X.A > . f.f.f.f.",
"f.f.f.f.f.f.f.> > = # $ + f.f.f.f.f.f.f."
};

View File

@@ -1,223 +1,232 @@
/* XPM */
static const char * bitcoin32_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 185 2",
" c #715103",
". c #725203",
"X c #725204",
"o c #735304",
"O c #745404",
"+ c #765504",
"@ c #775504",
"# c #785604",
"$ c #795704",
"% c #795705",
"& c #77580A",
"* c #77580B",
"= c #77580C",
"- c #785808",
"; c #785809",
": c #78590D",
"> c #795A0D",
", c #7F5E0D",
"< c #7C5C0E",
"1 c #815F0E",
"2 c #89650F",
"3 c #8C670F",
"4 c #8D680F",
"5 c #836110",
"6 c #866410",
"7 c #8F6A11",
"8 c #926C12",
"9 c #946F14",
"0 c #967015",
"q c #987217",
"w c #997318",
"e c #9A751C",
"r c #9B761E",
"t c #9C7720",
"y c #9D7924",
"u c #9D7B28",
"i c #9E7C2C",
"p c #A07F31",
"a c #AA852D",
"s c #A9852E",
"d c #AC872D",
"f c #AE892E",
"g c #AF8A2E",
"h c #B08B2F",
"j c #A18133",
"k c #A78533",
"l c #A28235",
"z c #A48435",
"x c #A68535",
"c c #A58536",
"v c #A68536",
"b c #A88530",
"n c #B18C30",
"m c #B18D33",
"M c #B08D37",
"N c #B08F3B",
"B c #B08F3D",
"V c #BC9537",
"C c #BE9736",
"Z c #BF9737",
"A c #B6933B",
"S c #B0903F",
"D c #B2913E",
"F c #B4923D",
"G c #B99438",
"H c #C09736",
"J c #C19835",
"K c #C29836",
"L c #C39937",
"P c #C39A37",
"I c #C49B38",
"U c #C59C3A",
"Y c #C69D3B",
"T c #C79E3C",
"R c #C89F3D",
"E c #CAA03F",
"W c #C6A247",
"Q c #CAA140",
"! c #C9A242",
"~ c #C8A245",
"^ c #C2A14B",
"/ c #C3A24D",
"( c #C3A24F",
") c #C2A351",
"_ c #C1A352",
"` c #C0A355",
"' c #C1A457",
"] c #C1A458",
"[ c #C1A55A",
"{ c #C2A65C",
"} c #C3A75D",
"| c #C3A85E",
" . c #C6AA5D",
".. c #C7AA5D",
"X. c #C5A95E",
"o. c #CFAE5A",
"O. c #C8AB5E",
"+. c #D4AF56",
"@. c #D1AE58",
"#. c #D6B056",
"$. c #D8B155",
"%. c #D9B256",
"&. c #DAB357",
"*. c #DBB457",
"=. c #DDB558",
"-. c #DFB759",
";. c #E2BB5B",
":. c #E3BC5D",
">. c #E4BD5E",
",. c #C9AC61",
"<. c #C9AD62",
"1. c #CAAE62",
"2. c #CCAF62",
"3. c #DDBC69",
"4. c #DFBD68",
"5. c #DCBB6E",
"6. c #DCBC6C",
"7. c #DBBC70",
"8. c #DABD72",
"9. c #DBBE74",
"0. c #E4BD61",
"q. c #E4BE60",
"w. c #E3BE65",
"e. c #E2BF66",
"r. c #DDC177",
"t. c #DFC279",
"y. c #EFCB6F",
"u. c #F1CA6B",
"i. c #F4CB6A",
"p. c #F5CC6A",
"a. c #F7CD6B",
"s. c #F0CA6D",
"d. c #F7CF6E",
"f. c #EFCD72",
"g. c #EFCE77",
"h. c #E0C47B",
"j. c #E3C77E",
"k. c #E4C87F",
"l. c #F7D070",
"z. c #F8D171",
"x. c #F8D272",
"c. c #FAD473",
"v. c #FBD676",
"b. c #FCD574",
"n. c #FCD674",
"m. c #FCD777",
"M. c #F0D17E",
"N. c #FCD778",
"B. c #FCDA7A",
"V. c #FDDC7C",
"C. c #FDDE7E",
"Z. c #E6CA80",
"A. c #E8CC83",
"S. c #EACD84",
"D. c #ECD086",
"F. c #EFD286",
"G. c #EED287",
"H. c #F0D283",
"J. c #FDDF80",
"K. c #F6DF91",
"L. c #F5DE92",
"P. c #F4DE95",
"I. c #F4DF98",
"U. c #FDE081",
"Y. c #FCE184",
"T. c #FBE188",
"R. c #FAE18B",
"E. c #F8E08D",
"W. c #F5E19B",
"Q. c #F5E29C",
"!. c #F7E49D",
"~. c #F9E69B",
"^. c #FBE89B",
"/. c #FDEB9B",
"(. c #FDEC9B",
"). c #FEEE9B",
"_. c #FEEF9C",
"`. c #FEEEA3",
"'. c #FDEBA9",
"]. c #FDEBAC",
"[. c #FDEBAD",
"{. c #FDECAD",
"}. c #FDF0B0",
"|. c #FDF2B1",
" X c None",
"32 32 194 2",
" c #745305",
". c #785704",
"X c #7C5903",
"o c #75560B",
"O c #77590F",
"+ c #7C5C0B",
"@ c #795B12",
"# c #7F631D",
"$ c #825E07",
"% c #825F0B",
"& c #85610A",
"* c #8C660C",
"= c #8E680E",
"- c #916B0F",
"; c #856515",
": c #8B6714",
"> c #8F6A16",
", c #816218",
"< c #88691C",
"1 c #926D12",
"2 c #936F1C",
"3 c #997417",
"4 c #94721E",
"5 c #9B761C",
"6 c #9F781C",
"7 c #A17B1E",
"8 c #826622",
"9 c #916E20",
"0 c #967425",
"q c #9D7420",
"w c #9C7923",
"e c #997728",
"r c #99792C",
"t c #A37D23",
"y c #A37F2C",
"u c #A68125",
"i c #AB8225",
"p c #A5832B",
"a c #AA852C",
"s c #B28A2C",
"d c #A58233",
"f c #AC8734",
"g c #AE8C33",
"h c #AC8C3C",
"j c #B28C33",
"k c #B98E34",
"l c #B28D3D",
"z c #B59136",
"x c #BC9335",
"c c #B3913E",
"v c #BC933A",
"b c #BF9A3D",
"n c #C19235",
"m c #C2953C",
"M c #C39B3C",
"N c #CA9C3D",
"B c #B59343",
"V c #BE9642",
"C c #B69A44",
"Z c #BD9A45",
"A c #B49649",
"S c #BB9A49",
"D c #BB9F52",
"F c #BFA256",
"G c #C49C43",
"H c #CA9D41",
"J c #C59D4A",
"K c #C99E4D",
"L c #C3A144",
"P c #CDA244",
"I c #CFAA47",
"U c #C3A14D",
"Y c #CDA24A",
"T c #CCAB49",
"R c #D2A644",
"E c #D2A54B",
"W c #D6AA4C",
"Q c #DAAE4E",
"! c #DAB04F",
"~ c #C7A656",
"^ c #CDA452",
"/ c #CFAC52",
"( c #C0A65E",
") c #CEA75A",
"_ c #CCAC59",
"` c #D2AB53",
"' c #DCAF52",
"] c #D6AD5A",
"[ c #D9AE5B",
"{ c #DCB556",
"} c #DFB855",
"| c #D6B25F",
" . c #DCB35C",
".. c #DEBE5E",
"X. c #E2B656",
"o. c #E1B55A",
"O. c #E6BC5D",
"+. c #E9BD5E",
"@. c #C3AA63",
"#. c #CCAD62",
"$. c #D4AF62",
"%. c #CDB565",
"&. c #CEB46D",
"*. c #D7B164",
"=. c #DBB362",
"-. c #D6BD64",
";. c #DDBA64",
":. c #D3B66C",
">. c #DFB86B",
",. c #CEB772",
"<. c #D0B771",
"1. c #D4BA73",
"2. c #D9BE77",
"3. c #D6BE79",
"4. c #D8BF7A",
"5. c #E4BB62",
"6. c #E9BF64",
"7. c #E4BC69",
"8. c #E9BF69",
"9. c #E0BB71",
"0. c #E9C05E",
"q. c #D2C279",
"w. c #DBC27C",
"e. c #E2C667",
"r. c #EDC364",
"t. c #E3C16E",
"y. c #ECC46C",
"u. c #EDCC6C",
"i. c #F1C764",
"p. c #F5CA66",
"a. c #F9CD67",
"s. c #F5CC6A",
"d. c #F9CD6B",
"f. c #FBD36F",
"g. c #EDC572",
"h. c #E5CF77",
"j. c #ECCA74",
"k. c #E0C67E",
"l. c #EFCE78",
"z. c #F6CE72",
"x. c #FBCF71",
"c. c #F4CE79",
"v. c #F4D273",
"b. c #FCD473",
"n. c #F4DC75",
"m. c #FEDA74",
"M. c #F6D77C",
"N. c #FBD47A",
"B. c #F1DA7B",
"V. c #FDDA7C",
"C. c #FEE27D",
"Z. c #DDC683",
"A. c #DFC884",
"S. c #E4CA84",
"D. c #E3CC89",
"F. c #E7D183",
"G. c #EFD280",
"H. c #EFDC82",
"J. c #ECD48D",
"K. c #EFDA8C",
"L. c #F9D783",
"P. c #F2DF83",
"I. c #FCDB83",
"U. c #F5DC8F",
"Y. c #FADD8B",
"T. c #EBD593",
"R. c #EFDA99",
"E. c #F3DD93",
"W. c #F3DF9F",
"Q. c #FFE385",
"!. c #FEE986",
"~. c #FDE48C",
"^. c #FEEC8E",
"/. c #ECE199",
"(. c #F6E591",
"). c #FEE494",
"_. c #FEEB93",
"`. c #FEE69A",
"'. c #FFEB9B",
"]. c #FFF197",
"[. c #FFF39B",
"{. c #FEF99B",
"}. c #F6E2A2",
"|. c #F9E5A5",
" X c #F7E9A5",
".X c #FEECA4",
"XX c #FBE7A8",
"oX c #FDEAAB",
"OX c #F7F2AA",
"+X c #FEF2AC",
"@X c #FDF4B4",
"#X c #FFFABA",
"$X c #FFFEC2",
"%X c None",
/* pixels */
" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X",
" X X X X X X X X X X X Xc F z z F z j X X X X X X X X X X X X X",
" X X X X X X X X Xz b V ~ %.;.u.e.-.! f e i X X X X X X X X X X",
" X X X X X X Xz d ! >.a.l.B.v.c.a.a.a.a.>.R w 6 X X X X X X X X",
" X X X X X Xb L q.a.n.c.n.n.c.a.i.i.a.a.z.z.>.m 3 5 X X X X X X",
" X X X X Xs +.a.c.n.B.c.>.#.E E ! +.>.n.J.v.z.z.~ 8 & X X X X X",
" X X X Xs %.c.n.B.l.*.E Y L L L L W +.r.Z.H.Y.Y.R.+.7 ; X X X X",
" X X Xk %.n.J.n.>.! Y Y I L L L T *.w.h.7.5.K.).).).W 6 = X X X",
" X Xj T V.B.n.;.L L L I L L L Y ~ *.s.Z.G.D.B._._._.Y.h % > X X",
" X Xm H.R.Y.0.L H H L L C V C Y ! ..8.G.E.H.M.g._._.Y.q.8 o X X",
" Xj o.)./.K.@.^ A F M N M s n C W ) { <.9.9.2.X.#./.Y.C.m % > X",
" XM D.)._.t.,.[.[.[.[.{.[.W.A G C O.I.[.[.[.[.{.5.y.Y.B.*.2 o X",
" XA /.).~.%.{ [.[.[.| D.[.[.I.b ,.[.[.[.j.) ' D.5.@.Y.V.a.w . X",
"i O.).).E.3.X.[.[.[.S X.[.[.'.i Q.[.{.D.z X.~ A ) %.B.V.n.s + = ",
"z 6._._.R.w.<.[.[.[.S <.[.[.I.F [.[.[.X.) 0.>.;.>.>.l.B.n.C % > ",
"z e._._.H.e.,.[.[.[.j.W.[.D.S { [.[.].' -.>.>.>.e.0.s.N.n.Y % & ",
"v s.)._.M.3.O.[.].].W.'.[.].{ { [.[.[.' 3.e.;.;.%.-.s.N.n.R # . ",
"z ;.T.E.g.-.{ [.].].S <.[.{.].` [.[.[.<.e.f.e.*.$.$.s.V.n.L $ O ",
"j o.Y.Y.g.+.] {.].]._ | [.[.[.F ].[.[.A.) y.e.@.W @.s.N.n.h $ = ",
" XZ J.Y.N.@.' [.[.].F 7.[.[.].z h.[.[.].7.^ ^ 5.2.U z.z.a.r X = ",
" Xs n.V.Y.+.` [.[.].].].{.{.9.2...A.{.[.[.[.].[.2.! a.u.;.3 = ",
" XF *.m.B.s.^ X.,.{ ,.<.1.] 2.G.D.O.` 2.9.7.2.^ d ;.u.a.K $ X X",
" X Xm z.c.v.o.^ ^ ^ { <.7.Z.K.K.H.Z.6.o.^ A f h E a.i.0.w X = X",
" X Xz #.l.z.f.X.O.<.5.t.Z.D.D.A.j.7.*.@.^ ! Y ! i.a.a.Y , X X X",
" X X Xd u.l.z.y.o.o.3.r.j.Z.h.r.9.5.%.%.#.+.#.c.B.z.-.8 . & X X",
" X X Xj m f.c.v.l.s.3.4.h.t.r.k.D.G.H.D.A.D./.!.E.M.y + X X X X",
" X X X Xj Z v.J.T.R.E.Z.7.t.Z.A.S.H.D.Q.|.|.|.|.!.b % . X X X X",
" X X X X Xj A D.|.`.~.~.!.E.I.I.Q.{.|.|.|.|.|.D.u % X < X X X X",
" X X X X X Xj z 9.{.`.~.~.^././.`.`.`.}.|.Q.] 9 $ X X X X X X X",
" X X X X X X X Xj s X.k.Y.R.~.~./.~.K.h.) e , . = X X X X X X X",
" X X X X X X X X X X9 w t n A C A s r 3 $ X > X X X X X X X X X",
" X X X X X X X X X X X X X5 2 1 $ ; 5 5 5 X X X X X X X X X X X"
"%X%X%X%X%X%X%X%X%X%X%X%Xp t 6 5 w t w %X%X%X%X%X%X%X%X%X%X%X%X%X",
"%X%X%X%X%X%X%X%X%Xu u x I X.0.s.u.0.W x 7 4 %X%X%X%X%X%X%X%X%X%X",
"%X%X%X%X%X%X%Xy i I i.a.f.m.m.b.f.s.a.s.i.W 7 > %X%X%X%X%X%X%X%X",
"%X%X%X%X%X%Xt M 0.a.m.m.m.m.f.d.p.p.p.f.d.f.i.b 1 < %X%X%X%X%X%X",
"%X%X%X%X%X7 ! d.f.f.m.f.+.W P R I Q 5.v.V.V.z.f.{ 5 + %X%X%X%X%X",
"%X%X%X%Xu X.f.m.m.f.' H s ~ V y _ Z J o.g.L.L.Q.!.e.5 X %X%X%X%X",
"%X%X%Xu X.b.C.m.+.N m n t }.3.> }.w.V 5.y.y.Y.[.^.^.-.1 + %X%X%X",
"%X%Xt P m.N.m.X.v v v k 6 }.1.: /.4.c 7.N.N.v.!.{.{.^.L & %X%X%X",
"%X%Xg Y.Y.V.+.m k a t t : }.1.% }.1.r | l.B.M.b.!.{.^.n.7 X %X%X",
"%Xp -._.'.Y.' Y n D.}.}.|.oXXX|.oX XT.w.F _ j.v.v._.^.C.T & @ %X",
"%Xa (.'.'.9.[ [ K S.}.oXoXoXoXXXoXoXoXoX XD / s.d.v.!.C.v.3 o %X",
"%XU '.'.Y.[ [ [ [ J f <.oXoX( 2 f S J.oXoXT.j r.s.i.C.C.C.z X %X",
"p e.'.'.F. .=.=.=.=.) 1.oXoX@.f . .F oXoX}.a +.i.i.b.C.m.I X O ",
"u w.'.[.j.5.8.7.7.7.] 2.oXoX@.y W c &.oXoXZ.k r.s.i.s.V.m.} = o ",
"u H.[.{.y.8.y.g.8.g.7.2.oXoXA.@.&.D.oXoXT.e G +.O.O.5.V.m.0.- o ",
"u !.].[.r.8.y.g.g.g.7.4.oXoXoXoXoXoXoXoXoX<.y W X.o.o.m.m.0.- o ",
"u B._._.5.5.8.y.g.c.g.w.oXoX,.h A F <..XoXoX1.k ' ' ' V.N.r.- ",
"u u.Q.~.r.6.z.N.V.I.v.k.oXoX@.B | _ c 1.oXoX}.a ' ' O.I.b.O.= o ",
"u ..Q.Q.v.i.s.c.N.L.l.Z.oXoX@.B t.=.S &.oXoXXXy Y R +.N.b.Q % o ",
"t T C.I.I.6.u.z.z.5.S 1.oXoX@.e B h D |.oXoXS.f Y Y 6.d.d.n X O ",
"%Xs m.V.Q.r.r.z.5.<.}.oXoXoXXXW.}.oXoXoXoXW.h G H R a.p.s.7 %X",
"%X7 O.V.V.v.+.r.` 4.oXoXoXoXoXoXoXoXXXR.<.h v N N o.a.p.Q = %X",
"%Xw x v.v.v.r.+. .Z l d e }.Z.r }.3.d l V G n n R a.s.a.s X O %X",
"%X%X6 { v.l.v.+.O.5.=.^ d }.4.9 }.1.f J G m m G d.d.x.Q = %X%X",
"%X%X%Xs u.v.v.v.r.6.o. .l }.4.9 W.4.l ^ ^ J ) c.N.N.y.7 X O %X%X",
"%X%X%X5 z v.v.M.I.g.;. .J 1.#.B 1.#.) 7.$.S..X'.W.Y.j $ %X%X%X",
"%X%X%X%X5 b N.Y.~.).Y.j.5.$.=.=.$.*.2.J.@X$X#X#XoXC $ %X%X%X%X",
"%X%X%X%X%X3 z U.@X+X`.`.`.(.E.E.E.|.@X@X#X#X#X/.j % %X%X%X%X%X",
"%X%X%X%X%X%Xw a q.OX|.).`._.'.'.XX.X.X+X+X X%.w X o %X%X%X%X%X%X",
"%X%X%X%X%X%X%X%Xw a _ j.~.~.).).`.`.`.F._ t & . # %X%X%X%X%X%X%X",
"%X%X%X%X%X%X%X%X%X%X4 3 t z L U Z z t 1 $ . 8 %X%X%X%X%X%X%X%X%X",
"%X%X%X%X%X%X%X%X%X%X%X%X%X< ; & + + , 8 %X%X%X%X%X%X%X%X%X%X%X%X"
};

View File

@@ -1,278 +1,277 @@
/* XPM */
static const char * bitcoin48_xpm[] = {
/* columns rows colors chars-per-pixel */
"48 48 224 2",
" c #715103",
". c #735203",
"X c #735204",
"o c #745405",
"O c #755506",
"+ c #775606",
"@ c #785707",
"# c #7A5806",
"$ c #7C5905",
"% c #7D5A05",
"& c #7E5B05",
"* c #7F5C07",
"= c #7E5C0A",
"- c #7B5C11",
"; c #7C5D13",
": c #7D5E15",
"> c #805C05",
", c #805C06",
"< c #8B6813",
"1 c #8D6912",
"2 c #8F6A12",
"3 c #896816",
"4 c #806219",
"5 c #82631A",
"6 c #876719",
"7 c #84651B",
"8 c #906C13",
"9 c #916D15",
"0 c #936F18",
"q c #94701B",
"w c #95721B",
"e c #98731A",
"r c #99741B",
"t c #99751E",
"y c #9A761F",
"u c #9B7822",
"i c #9F7A21",
"p c #9D7922",
"a c #A27C20",
"s c #A47E21",
"d c #A67F22",
"f c #9E8038",
"g c #9E803B",
"h c #9E813C",
"j c #9F833D",
"k c #A68023",
"l c #A78124",
"z c #A98326",
"x c #AA8427",
"c c #A7832B",
"v c #A7832C",
"b c #A6832D",
"n c #A98429",
"m c #A8842B",
"M c #AD892F",
"N c #AE8A2F",
"B c #AF8A2F",
"V c #B28B2E",
"C c #B48C2E",
"Z c #B68E2F",
"A c #B78E2F",
"S c #A38232",
"D c #A08136",
"F c #AC8931",
"G c #AB8934",
"H c #AA8836",
"J c #AA8937",
"K c #A1843F",
"L c #A2853F",
"P c #AB8A39",
"I c #AB8B3A",
"U c #AD8C3C",
"Y c #AE8E3E",
"T c #B89030",
"R c #BA9131",
"E c #BC9332",
"W c #BE9533",
"Q c #C09733",
"! c #C29834",
"~ c #C39934",
"^ c #C39935",
"/ c #C39A37",
"( c #C39A38",
") c #C49A38",
"_ c #C49B38",
"` c #C59C3A",
"' c #C69E3C",
"] c #C69E3E",
"[ c #C79F3F",
"{ c #A48640",
"} c #A58741",
"| c #A68842",
" . c #A78A43",
".. c #AA8D45",
"X. c #AD9046",
"o. c #B19040",
"O. c #B59443",
"+. c #B29447",
"@. c #B79745",
"#. c #B79847",
"$. c #B89846",
"%. c #B69748",
"&. c #C8A040",
"*. c #CAA241",
"=. c #CBA343",
"-. c #C9A346",
";. c #CBA445",
":. c #C7A44D",
">. c #C5A44F",
",. c #C9A448",
"<. c #C9A44A",
"1. c #C5A551",
"2. c #C4A554",
"3. c #CBAA57",
"4. c #CDAA57",
"5. c #C3A559",
"6. c #C4A65A",
"7. c #C7A85A",
"8. c #D0AB55",
"9. c #D2AD56",
"0. c #D4AE57",
"q. c #D4AF58",
"w. c #D5B05A",
"e. c #D5B15C",
"r. c #D5B25E",
"t. c #DFB65A",
"y. c #DEB75B",
"u. c #E1B759",
"i. c #E2B95B",
"p. c #E4BA5C",
"a. c #E4BC5F",
"s. c #D4B567",
"d. c #D8B764",
"f. c #D5B769",
"g. c #D4B76A",
"h. c #D4B86B",
"j. c #E5BD61",
"k. c #E6BE62",
"l. c #E6BF63",
"z. c #E0BF6F",
"x. c #E7C063",
"c. c #EAC263",
"v. c #EDC563",
"b. c #EBC364",
"n. c #EEC565",
"m. c #EEC767",
"M. c #E1C06F",
"N. c #EBC76D",
"B. c #EEC869",
"V. c #F7CD6A",
"C. c #F6CD6B",
"Z. c #F4CE6F",
"A. c #F8CD6A",
"S. c #F9CF6E",
"D. c #FAD16F",
"F. c #E1C071",
"G. c #E4C370",
"H. c #E1C174",
"J. c #E0C276",
"K. c #E1C377",
"L. c #E8C670",
"P. c #E2C479",
"I. c #E0C47A",
"U. c #E2C57C",
"Y. c #E3C77E",
"T. c #F3D073",
"R. c #FBD270",
"E. c #FCD572",
"W. c #FCD674",
"Q. c #FDD774",
"!. c #FED876",
"~. c #FED977",
"^. c #F2D278",
"/. c #F1D37B",
"(. c #FDDA78",
"). c #FDDB7A",
"_. c #FDDB7C",
"`. c #FDDD7D",
"'. c #FDDF7F",
"]. c #E4C880",
"[. c #E6CA83",
"{. c #E7CD86",
"}. c #E9CF89",
"|. c #EBD089",
" X c #EFD289",
".X c #F2D382",
"XX c #F0D387",
"oX c #FDDF80",
"OX c #FCDF84",
"+X c #FBDF89",
"@X c #F9DE8B",
"#X c #FBE08B",
"$X c #FBE28C",
"%X c #FCE48F",
"&X c #FDE592",
"*X c #FEE692",
"=X c #FEE693",
"-X c #FEE895",
";X c #FEEA96",
":X c #FEEC97",
">X c #FEEE98",
",X c #FEEE99",
"<X c #FEEE9A",
"1X c #FDEB9C",
"2X c #FCE99E",
"3X c #F7E4A4",
"4X c #FAE7A1",
"5X c #F8E5A3",
"6X c #F8E5A5",
"7X c #F8E5A6",
"8X c #F9E6A7",
"9X c #FCE8AA",
"0X c #FDEAAC",
"qX c #FDEBAC",
"wX c #FDECAC",
"eX c #FDEDAC",
"rX c #FDEEAD",
"tX c #FDF2B1",
"yX c #FDF4B3",
"uX c #FEF6B5",
"iX c #FEF8B7",
"pX c #FEF9B8",
"aX c #FEF8B9",
"sX c None",
/* pixels */
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXh ..X.........X...p sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsX .P m l l l n V W R M z s p u K sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsX .m l n _ q.l.C.A.E.(.`.!.m.u.-.B d q 1 3 sXsXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsX .n z W u.V.V.A.R.!.!.W.E.S.S.A.A.C.C.p.[ k e = 6 sXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXG l R p.C.A.E.E.W.(.(.(.E.A.C.C.C.A.C.C.A.D.m.` s 1 * sXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXg n n 9.C.V.A.E.!.(.(.!.!.R.A.V.C.C.C.A.C.S.D.R.D.V.i.M r & ; sXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXL n C k.C.R.R.R.(.oXW.R.v.i.w.=.=.9.u.p.B.T.W._.(.W.Z.V.V./ p & # sXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXL z R m.S.D.W.(.W.W.m.u.=._ ~ ~ ! ! ! ` ] <.y./.%X+X!.^.E.'.'.<.a * + sXsXsXsXsXsXsX",
"sXsXsXsXsXh n R m.R.!.!.!.(.A.0.*.=._ _ ~ Q / ! ! ] -.0.z.G.z.[.#X#X%X*X&X%X;.r * O sXsXsXsXsXsX",
"sXsXsXsXsXm Z C.R._.oX!.S.p.;.[ ] _ _ _ ~ ~ ^ _ ( -.w.a.N.U.z.s.M.*X>X>X:X:X%X' 0 O # sXsXsXsXsX",
"sXsXsXsXG n m.(.!.(.(.S.;.] [ _ ` _ ^ ^ ! Q ^ _ ` 9.k.M.U.K.U.H.U./.>X>X>X>X>X#XV < . - sXsXsXsX",
"sXsXsXh n w._._.(.W.S.;._ _ _ / _ _ _ _ Q Q / ` [ 9.d.G.H.|.XX@X#X#X).:X>X>X>X>Xm.a > sXsXsXsX",
"sXsXsXG @.#X+XOX_.R.8._ _ _ _ ! ^ _ ) ! W W _ ] [ <.r.h.{.@X6X&X#X#X).).>X>X>X;X#X' 8 + + sXsXsX",
"sXsXL M H.;X=X&X#Xk.] E R T Z T A A A A R E _ ` &.<.4.F.Y.[.U.H.z.h.z.L.^.>X>X;X'.m.k > : sXsX",
"sXsXP @.,X,X1X;X+X3.%.o.G H F m m b b a s z E _ [ 1.2.2.2.7.h.h.h.h.2.$.1.^.;X#X'.).` 2 . + sXsX",
"sXsXF f.<X1X1X;Xz.@.7X9XqXqXqXqX9X0X0X7XH.b F / -.$.+.U.3XqXqXqX0X0X0X3XH.1.%X#X`.'.c.y # sXsX",
"sX .F $X<X1X1X$Xr.Y 7XqXqXqXqXqX0X0X0X0XwX Xc W O.1.3X0XqXqXqXqX0X0X0X0X}.o.N.).`.`.`.B * - sX",
"sXP #.,X<X1X1X.Xr.P 7XqXqXqXqX6.{ 8X0X0X0X0X2.m @.6X0XwXqXqX X@.S Y s.6X{.Y y.#X'.`.`.*.2 . o sX",
"sXF q.,X<X1X,XL.r.U 7XqXqXqXqX5.6 |.0XwXwXwXh.u |.qXwX0XqX3Xf Y #.$.F P s.] w.(.'.`.~.y.w + X sX",
"sXM M.,X<X<X;XL.s.o.6X0XqXqXqX6.q U.0XwX0XwX7. .0X0XwX0XqX5.P 9.y.y.4.<.<.q.u.Z.'.).!.v.i $ - ",
"h M /.,X<X<X=XN.z.O.6X0XqXqXqX6.2 |.wX0X0X0X+.5.wXwX0XwXqXG :.k.k.p.a.a.k.k.k.B.`.~.E.V.k $ - ",
"| B OX,X<X<X$XT.z.O.6X0XqXqXqXh.X.0X0XwX0X].q h.0XwXwX0X6XS 4.b.l.c.c.m.m.c.k.c.`.E.E.E.k & . = ",
"| M $X:X<X,X+XT.z.O.6XwXqXqXqX0XwXwX0X9X5.q u U.wX0X0X0X6XS 0.b.k.p.i.k.k.p.p.k.).~.E.E.x * . + ",
"L M #X;X>X>X/.L.d.o.6X0X0XwXwX0X0XwXwX0X9XI.u I.0XwXqXqX3XG r.B.c.i.u.u.u.u.y.p.`.!.E.E.x * X ",
" .n ^.&X;X;X.Xx.d.Y 6X0XwX0X0X5.u 3X0XwXwX9X5.h.wX0XqXqX6XP d.T.N.c.i.u.y.0.0.k.(.!.W.E.k * X ",
"L x C.'.*X&X^.j.r.P 7XqX0XwX0X6.0 I.wX0XwX0XI.@.0XqXqXqX0X+.q.T.T.N.a.y.9.8.9.l._.!.!.D.s $ - ",
"sXx k.#X#X$X.Xy.8.G 3XqXwX0XwX7.u I.0XwX0XwX}.u qXqXqXqX0Xh.$.G.T.N.p.9.-.-.8.N._.!.E.b.i # X : ",
"sXc 9.'.'.#X'.y.4.H 7XqX0XwX0X6.q ].9XwX0XwXU.u {.0XwX0XwX8X%.#.w.4.$.#.f.W -.Z.W.R.R.y.r O = ",
"sXN _ '.'.'.#Xx.3.P 7XqXwX0XwXh.+.8XwX0X0X0X7.X.#.8X0XwX0XwX6Xh.2.5.U.6X{.F *.R.R.R.S.*.1 ; ",
"sXX.x E.`.).`.T.1.G 8XwX0XwXwX0XwX0X0XwX0X}.%.h.7.5.3X0X0XwX0XwXwX0X0X0X[.z 9.A.V.V.V.n * X sX",
"sXg x y.~.).).#X4.o.3X3X3X3X3X3X3X7X3X Xh.%.h. X|.3.#.h.3X0X0X0X0X0X8X}.2.V c.A.C.V.i.e # X X sX",
"sXsXn W E.E.).`.L.$.P g u p f D d . .+.6.U. X@X@X}.f.1.U Y %.%.+.H y e l &.A.A.V.V.' 8 X ; sX",
"sXsX..x k.T.T.T.W.9.#.#.#.#.1.7.4.s.h.z.}.}.@X@X X X].z.d.3.:.@.V V V C E c.A.A.A.c.s > sXsX",
"sXsXsXb W T.T.T./.T.:.1.3.4.r.h.z.].[. X X X X X[.Y.H.z.z.d.0.;.` / Q Q u.A.A.A.D.*.9 O X # sXsX",
"sXsXsX| l y.T.T.T./.N.<.1.4.r.f.z.z.].[.{.{.[.].H.z.s.r.8.8.-.-.*.] ] u.D.E.D.D.k.a > sXsXsX",
"sXsXsXsXn F B.T.T.T.^.N.1.4.w.s.z.z.U.[.{.].J.J.H.F.h.r.w.r.w.0.8.8.k.W.W.R.D.T.Z 1 O @ sXsXsX",
"sXsXsXsXf x W T.T.T.^./.T.r.r.d.z.L.U.].U.z.z.P.Y.[.[.U.P.F.G.h.h..X@XOXOX.X.X<.9 # sXsXsXsX",
"sXsXsXsXsXL x [ W.W.W.)._.OXN.d.z.z.I.U.I.z.U. X.X X XXXXX X XXXwXyX,X1X1X=Xs.p > X ; sXsXsXsX",
"sXsXsXsXsXsX| x :._.oX_.OX$X=X+X/.G.h.z.I.].}.}.|.|. X X X3XtXpXpXpXpXpXaXP.a > X - sXsXsXsXsX",
"sXsXsXsXsXsXsX{ c <.+X@X=X;X;X&X=X&XXX[.U.P.U.].[.}.XX3XyXpXpXpXpXpXpXpXh.a > O sXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXL c @.+XpXpXuX1X=X=X;X1X1X1X1XrXwXwXyXyXyXuXpXaXpXuX3X2.u > . @ sXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXj n Y I.aXaX0X=X=X&X;X=X1X1X1X<X0XwXwXwXyXyXyXwXU.F 9 $ - sXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsX| l o.h.@X&X&X&X&X=X-X-X-X<X2X2X<XwXwX4XH.O.y * @ 5 sXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXh p a F :.M..X%X&X&X&X=X=X=X=X@XI.3.F u < $ @ sXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXy w w a z V ( -.:.:.1.@.V l p 9 * # # sXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXq : < 1 9 8 8 8 3 = * @ X X X 6 sXsXsXsXsXsXsXsXsXsXsXsXsXsXsX",
"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX5 5 6 : O O @ : 6 5 sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX"
};
/* XPM */
static const char * bitcoin48_xpm[] = {
/* columns rows colors chars-per-pixel */
"48 48 223 2",
" c #765404",
". c #795704",
"X c #7C5904",
"o c #7C5A0A",
"O c #825E05",
"+ c #815F0E",
"@ c #815F11",
"# c #866107",
"$ c #866208",
"% c #8A650A",
"& c #8E680D",
"* c #916B0E",
"= c #866414",
"- c #8C6715",
"; c #8F6A10",
": c #8A691B",
"> c #956E12",
", c #906D1D",
"< c #967013",
"1 c #997215",
"2 c #94711F",
"3 c #9C751A",
"4 c #9E781C",
"5 c #A27B1D",
"6 c #947324",
"7 c #997625",
"8 c #9D7926",
"9 c #97792B",
"0 c #9D7B28",
"q c #9C7F34",
"w c #A47E22",
"e c #A87F21",
"r c #A37E2A",
"t c #A8801F",
"y c #A58025",
"u c #AB8425",
"i c #A5812C",
"p c #AB842A",
"a c #AB892D",
"s c #B0862C",
"d c #B48C2D",
"f c #B88F2F",
"g c #B9912E",
"h c #A68432",
"j c #AB8531",
"k c #AD8A33",
"l c #A68638",
"z c #AD8B3B",
"x c #B38C32",
"c c #BA8E35",
"v c #B28D3B",
"b c #B59234",
"n c #BD9235",
"m c #B5903E",
"M c #BC943B",
"N c #BA9A3B",
"B c #C29536",
"V c #C59937",
"C c #C2953B",
"Z c #C49C3C",
"A c #CA9E3D",
"S c #AC8E43",
"D c #AD9045",
"F c #AE9248",
"G c #B49444",
"H c #B99542",
"J c #B49842",
"K c #BD9C44",
"L c #B3954A",
"P c #B7994D",
"I c #BD9A4A",
"U c #B69A52",
"Y c #BB9E54",
"T c #BEA04A",
"R c #BFA354",
"E c #BEA35A",
"W c #C19742",
"Q c #C49B43",
"! c #CA9D41",
"~ c #C39C4B",
"^ c #C99E4A",
"/ c #C7A444",
"( c #CDA244",
") c #CAA945",
"_ c #C5A44C",
"` c #CCA44B",
"' c #C6A94C",
"] c #CFAC4D",
"[ c #D2A647",
"{ c #D2A54B",
"} c #D4AA4C",
"| c #D9AC4D",
" . c #D4B04E",
".. c #DCB14D",
"X. c #C4A151",
"o. c #CAA454",
"O. c #C6AB56",
"+. c #CCA955",
"@. c #C1A45A",
"#. c #C6AA5A",
"$. c #CDAB5D",
"%. c #D1A652",
"&. c #D4AB53",
"*. c #DDAF52",
"=. c #D3AC5B",
"-. c #D9AF5C",
";. c #D5B154",
":. c #DDB253",
">. c #D5B25B",
",. c #DCB45D",
"<. c #DDBB5E",
"1. c #E1B354",
"2. c #E4B955",
"3. c #E3B65B",
"4. c #E5BA5C",
"5. c #EABE5E",
"6. c #C6AB63",
"7. c #CCAD63",
"8. c #C6AE68",
"9. c #C9AF69",
"0. c #D4AC60",
"q. c #CDB067",
"w. c #CDB36C",
"e. c #D6B162",
"r. c #DDB463",
"t. c #D7B964",
"y. c #DBB965",
"u. c #D1B66F",
"i. c #DDB66A",
"p. c #D0BC6C",
"a. c #DFBE6B",
"s. c #CEB772",
"d. c #D1B771",
"f. c #D4BC74",
"g. c #DBBD75",
"h. c #DABF78",
"j. c #E2B764",
"k. c #E4BA64",
"l. c #E9BD62",
"z. c #E2BB6A",
"x. c #E8BF69",
"c. c #EBC15F",
"v. c #F1C25E",
"b. c #DFC266",
"n. c #DBC26C",
"m. c #DCC676",
"M. c #DEC973",
"N. c #D7C07A",
"B. c #D9C27E",
"V. c #E4C162",
"C. c #EDC363",
"Z. c #E3C36F",
"A. c #EBC26C",
"S. c #E5CA6B",
"D. c #EECA6D",
"F. c #F1C565",
"G. c #F5CB66",
"H. c #F9CA66",
"J. c #F2C76A",
"K. c #F5CC6A",
"L. c #F9CD6C",
"P. c #EDD26C",
"I. c #FBD26E",
"U. c #E5C374",
"Y. c #EDC573",
"T. c #E6CB74",
"R. c #EECC73",
"E. c #EBCA78",
"W. c #F5CD74",
"Q. c #F9CE72",
"!. c #EED77F",
"~. c #F4D274",
"^. c #FDD473",
"/. c #F2D870",
"(. c #FED975",
"). c #F5D37C",
"_. c #FCD57A",
"`. c #F7D87A",
"'. c #FEDC7C",
"]. c #FFE37D",
"[. c #DCC682",
"{. c #E1C984",
"}. c #E4CD8A",
"|. c #EFD182",
" X c #E5D48D",
".X c #EAD28D",
"XX c #E8DB8D",
"oX c #F1D581",
"OX c #FDD581",
"+X c #F5DB84",
"@X c #FDDC84",
"#X c #FEDE89",
"$X c #EAD594",
"%X c #E1D894",
"&X c #ECDA94",
"*X c #EFDA99",
"=X c #F2DD9C",
"-X c #F6E284",
";X c #FEE385",
":X c #FFE883",
">X c #FEE38C",
",X c #FEEA8C",
"<X c #F6E196",
"1X c #FEE594",
"2X c #FEEC93",
"3X c #F6E39C",
"4X c #FEE599",
"5X c #FFEB9B",
"6X c #FFF195",
"7X c #FEF39B",
"8X c #FEF99C",
"9X c #F5E2A2",
"0X c #F9E5A5",
"qX c #F6EAA6",
"wX c #FFECA3",
"eX c #FDEAAB",
"rX c #FFF5A0",
"tX c #FFF2AB",
"yX c #FEF5B3",
"uX c #FFF9B3",
"iX c #FFFBBB",
"pX c #FFFDC1",
"aX c None",
/* pixels */
"aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX* < * < < < < * * & aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaXaXaXaX* 1 3 5 u u d g Z Z N d u 5 3 * % aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaXaX< 3 t u A ..c.K.I.I.(.(.'.(.G.2.( d 5 1 & aXaXaXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaX< 5 t g 1.G.H.H.I.(.'.(.I.I.I.K.K.G.I.K.2.V u 1 % aXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaX4 t g c.G.H.I.I.I.].(.(.(.I.G.H.K.G.K.I.G.K.Q.C.C 5 & % aXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaX4 u } v.G.G.I.(.].(.(.(.I.G.G.G.G.G.L.G.K.I.^.^.L.L.:.u < # aXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXt d c.G.I.I.I.I.].(.I.G.c.........:.4.C.W.~.`.'._.^.K.K.J.N 4 # aXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaX5 g v.H.I.I.(.(.(.H.c.[ V V V V A A A ! ( } l.).>X@X_.`._.'.'./ 4 O aXaXaXaXaXaXaX",
"aXaXaXaXaXaXt g C.I.(.(.^.(.^.1.( ! C d p u s d d d x M &.3.3.A.).+XOX>X;X;X;X) 3 O aXaXaXaXaXaX",
"aXaXaXaXaX5 d G.I.'.].(.^.l.( C A C s H =X=XI 7 N.*X$Xk o.j.z.J.l.W.1X7X6X,X,X,XK 1 X aXaXaXaXaX",
"aXaXaXaX3 p C.(.(.'.'.^.*.C C C C B r G eXeXL - [.eX3Xr ~ r.W._.W.J.D.6X8X6X6X6X-Xd & X aXaXaXaX",
"aXaXaXaXu ;.'.'.(.^.^.| C c B B B c w z eXeXF = [.eX*X8 K r.@X#X;X`.~.D.7X8X8X6X,XS.y O aXaXaXaX",
"aXaXaXw N #X#X'.'.^.*.C c c s r e r 2 r eXeXD $ B.eX=X: z z.oX>X,X,X;X~.D.8X8X6X,X:X) < X aXaXaX",
"aXaX3 a T.1X1X>X#XA.! C B s $.6.6.@.@.w.eXeXd.U $XeX9XF z G O.n.!.-X;X'.D./.8X6X,X:X/.u # aXaXaX",
"aXaXy K 5X5X5X2X>X-.} ^ C r 0XeXeXeXeXeXeXeXeXeXeXeXeXeXeX9XN.L O.T.`.]./.F.-X6X:X].].) < . aXaX",
"aXaXa M.7X5X5X5XU.&.-.&.^ j 0XeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX9XL X.~.'.'.K.c.6X:X].].P.t O aXaX",
"aX5 k 2X5X5X5X<X-.-.-.-.=.W q.6.9.=XeXeXeXeXs.9.d.B.*XeXeXeXeXeX&Xh <.(.(.Q.F.~.;X].].].b & . aX",
"aXy O.5X5X5X5XE.-.-.-.-.-.%.Q z 6 6.eXeXeXeX: , w r 7 R eXeXeXeX0XG ' ~.^.^.F.l.;X].].]. .1 . aX",
"aXp n.2X5X5X5Xj.-.-.-.r.r.r.-.=.G 9.eXeXeXeX6 j ( &.} i [.eXeXeXeXY Q J.I.I.L.5.(.;X].(.c.5 X aX",
"3 a !.7X5X7X<X-.r.r.r.r.j.r.r.r.W w.eXeXeXeX6 v ,.Q.k.m s.eXeXeXeXL K C.L.L.L.F.D.'.'.(.I.u # ",
"5 a ,X5XrXwX+X3.j.j.j.z.z.z.z.r.~ w.eXeXeXeX6 l ;.<._ 0 *XeXeXeX0X0 ( G.L.Q.L.5.C.].'.^.^.g $ ",
"4 b 2X7X7XrX!.l.x.x.x.x.U.x.z.z.~ w.eXeXeXeX: , k z Y XeXeXeXeXY r } C.5.5.5.3.4.'.(.^.^.V % . ",
"4 N 6X7X7XrXOXx.x.x.W.x.Y.Y.Y.Y.o.d.eXeXeXeX=X=X9XeXeXeXeXeXeX8.+ r [ 3.5.5.3.3.1.'._.(.^.A & . ",
"5 N 2X6X5X5XW.x.x.x.x.W.Y.Y.Y.Y.o.d.eXeXeXeXeXeXeXeXeXeXeXeXeXeX[.r C | 1.3.3.3.:._._.^.I./ % ",
"5 N ,X2X2X6XD.l.l.x.x.x.Y.Y.Y.R.=.f.eXeXeXeX[.[.[.[.*XeXeXeXeXeXeX*Xj ! *.1.1.1.1._._.^.^./ % ",
"5 b ;X,X,X2XU.3.j.x.Y.W.).OX#X@Xt.f.eXeXeXeX: : 7 7 : 6 6.eXeXeXeXeXd.k { *.*.*.1.OX_.(.^.V % ",
"4 a ].;X;X>X`.C.L.^._._.OX@X#X#Xt.f.eXeXeXeX6 z #.o.I z 6 w.eXeXeXeX*Xr ! { %.%.,.OX_.(.^.n % ",
"4 u /.;X;X;X@XF.Q.Q._._._.@X#X#Xa.f.eXeXeXeX9 I a.Z.y.+.k F eXeXeXeX0Xr Q { { { 4.'.(.^.^.u O ",
"aXu V.;X;X;X>XF.K.Q.Q._._.OX#X@Xt.f.eXeXeXeX9 I Z.U.z.=.z 8.eXeXeXeX=X7 Q { { ( A._.^.^.F.5 O ",
"aXu ] '.'.;X>XK.J.Q.Q.^._._.~.Z.R w.eXeXeXeX6 S =.>.+.G S 9XeXeXeXeXh.r ! ( ( [ L.L.L.L.:.1 . aX",
"aX5 b '.'.'.@X`.F.K.Q.Q.~.A.e.$.P }.eXeXeXeXF L E #.9.[.eXeXeXeXeXeXS k ! ( ! *.H.K.H.L.Z % aX",
"aX1 u J.(.'.'.;XC.F.W.Q.K.&.h.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX@.2 c ! ! ! F.H.L.H.F.w O aX",
"aXaXw ( (.(.`.`.`.C.F.K.A.~ [.eXeXeXeXeXeXeXeXeXeXeXeXeXeXeXeX*XF 7 r C B A | H.H.H.H.| 1 X aXaX",
"aXaX3 u D.~.~.~.`.D.C.J.V.` .X=X=X3X9X9XeXeX9X=XeXeXeX$X{.9.S 2 r r B B B V 5.H.H.H.H.s + . aXaX",
"aXaXaXt / ~.W.~.`.`.5.V.C.>.M i 6 - = q eXeXS o B.eX*Xo 7 r r r B C B r B 1.H.H.L.L.*.5 X . aXaX",
"aXaXaX1 u 4.~.~.~.~.~.c.V.l.4.,.~ H i S eXeXF : [.eX=X, r W ^ W W C C W *.Q.Q.Q.Q.J.e % aXaXaX",
"aXaXaXaX5 b K.~.~.R.~.`.l.C.J.A.,.=.H P eXeXU , [.eX=X7 v ^ %.^ W ^ ^ -.^.^.W._.W.Z > . aXaXaX",
"aXaXaXaX1 5 / ~.~.~.~.~.`.F.F.<.r.,.~ R eXeXY 7 [.eX=Xq ~ 0.r.0.%.o.g.#XOXOXOXOX,.4 O aXaXaXaX",
"aXaXaXaXaX1 y } ~.`.`.`.'.#XR.,.r.,.+.X.9.7.I G 9.7.7.X.0.i.i.j.i.9XeX0X=X4X1XT.r # aXaXaXaXaX",
"aXaXaXaXaXaX1 u :.'.'.OX#X#X1X+XA.3.r.-.=.=.>.e.i.$.0.0.i.j.g.0XpXpXpXyXuXyXXXk % aXaXaXaXaXaX",
"aXaXaXaXaXaXaX1 p >.>X#X>X1X1X1X1X1X|.U.z.3.j.z.y.i.i.U..XqXpXiXpXpXpXiXiX Xh % . . aXaXaXaXaXaX",
"aXaXaXaXaXaXaXaX< y _ 3XtXuXtXwX=X4X4X4X5X<X>X=X3X0XeXtXyXuXiXiXiXiXiXuXp.y # . . aXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaX* y J %XpXiXwX4X4X4X5X4X5X5XwXwXwXeXtXeXtXtXyXyXyX&XJ 3 # aXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaX* 3 k R XwX4X1X1X1X1X5X4X5X5XwX5XwXwXtXtXtX&X@.y & X aXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaX& 3 a J t.|.>X,X>X>X2X1X1X1X5X4X0X<Xm.T i > O o aXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaXaXaX% > w p b _ >.b.S.T.T.U.t.O.N p 4 & O . o aXaXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX$ $ ; 1 4 5 5 w w 5 3 > % O . . o aXaXaXaXaXaXaXaXaXaXaXaXaXaXaX",
"aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXO X X X o X X X o aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX"
};

292
xpm/bitcoin80.xpm Normal file
View File

@@ -0,0 +1,292 @@
/* XPM */
static const char * bitcoin80_xpm[] = {
/* columns rows colors chars-per-pixel */
"80 80 206 2",
" c #725203",
". c #785706",
"X c #7B5907",
"o c #7C5A09",
"O c #7F5F10",
"+ c #815E0B",
"@ c #85620C",
"# c #89650F",
"$ c #856313",
"% c #896614",
"& c #8D6913",
"* c #886718",
"= c #8D6B1B",
"- c #926D14",
"; c #926E1B",
": c #967116",
"> c #997317",
", c #95711E",
"< c #9B7419",
"1 c #9F781B",
"2 c #A27B1D",
"3 c #8F6F22",
"4 c #926F21",
"5 c #947323",
"6 c #9A7623",
"7 c #9D7925",
"8 c #957628",
"9 c #9A7729",
"0 c #9D7B2B",
"q c #9D7F33",
"w c #A47D23",
"e c #A97F27",
"r c #A37E2B",
"t c #9F8030",
"y c #A78021",
"u c #AC8425",
"i c #A5802D",
"p c #AC842B",
"a c #AF8829",
"s c #B2872C",
"d c #B28B2D",
"f c #A68333",
"g c #AA8633",
"h c #AD8A36",
"j c #A4863A",
"k c #A88638",
"l c #A7893B",
"z c #AC8B3B",
"x c #B28732",
"c c #B48C32",
"v c #B98E34",
"b c #B28D3B",
"n c #B88F3C",
"m c #B69033",
"M c #BD9235",
"N c #B4913D",
"B c #BC943A",
"V c #BE993C",
"C c #C19336",
"Z c #C1953B",
"A c #C49A3C",
"S c #C99C3D",
"D c #CDA13F",
"F c #D0A33F",
"G c #A88B40",
"H c #B08F40",
"J c #AE9142",
"K c #AE944C",
"L c #B49443",
"P c #BB9542",
"I c #B49946",
"U c #BD9846",
"Y c #B3964C",
"T c #BB974A",
"R c #B6994A",
"E c #BF9C4A",
"W c #B69B53",
"Q c #B99D53",
"! c #BCA055",
"~ c #BDA25A",
"^ c #C49742",
"/ c #C49C43",
"( c #CB9E42",
") c #C49D4B",
"_ c #C99E4C",
"` c #C29F52",
"' c #C5A244",
"] c #CDA245",
"[ c #C5A34C",
"{ c #CCA34B",
"} c #CCA94D",
"| c #D2A445",
" . c #D1A54B",
".. c #D5AA4E",
"X. c #DBAF4F",
"o. c #C6A352",
"O. c #CBA554",
"+. c #C5AA57",
"@. c #CEAC54",
"#. c #C4A65A",
"$. c #CDA458",
"%. c #C2A85F",
"&. c #CEAA5B",
"*. c #D0A550",
"=. c #D4AB53",
"-. c #DBAE53",
";. c #D0A75B",
":. c #D4AC5A",
">. c #D9AE5C",
",. c #CEB25E",
"<. c #D4B156",
"1. c #DDB156",
"2. c #D4B25C",
"3. c #DCB35D",
"4. c #D7B85C",
"5. c #DCBA5E",
"6. c #E2B355",
"7. c #E2B65B",
"8. c #E4BA5D",
"9. c #EABD5E",
"0. c #C5AA62",
"q. c #CCAE63",
"w. c #C6AE69",
"e. c #D5AF62",
"r. c #CEB167",
"t. c #CCB36C",
"y. c #D5B162",
"u. c #DCB462",
"i. c #D7B964",
"p. c #DCBC64",
"a. c #D2B66B",
"s. c #DCB669",
"d. c #D7BE69",
"f. c #DFB86A",
"g. c #D0B771",
"h. c #D2BA74",
"j. c #D5BE78",
"k. c #E1B766",
"l. c #E4BB63",
"z. c #E9BE63",
"x. c #E3BB6A",
"c. c #E9BF6A",
"v. c #E1BE72",
"b. c #DDC16B",
"n. c #DAC27E",
"m. c #E4C164",
"M. c #ECC264",
"N. c #E4C36B",
"B. c #EBC36C",
"V. c #E7C96F",
"C. c #EECA6E",
"Z. c #F1C564",
"A. c #F1C76A",
"S. c #F5CB6C",
"D. c #FACE6D",
"F. c #F4D06F",
"G. c #FCD06E",
"H. c #E5C371",
"J. c #EDC573",
"K. c #E4CA73",
"L. c #ECCC74",
"P. c #E7CF7A",
"I. c #EBCD7A",
"U. c #F3CD73",
"Y. c #F8CE71",
"T. c #F3CD7A",
"R. c #EDD076",
"E. c #EDD17B",
"W. c #F4D274",
"Q. c #FBD274",
"!. c #FED977",
"~. c #F3D47B",
"^. c #FDD47A",
"/. c #F5DA7C",
"(. c #FDDA7C",
"). c #FFE07F",
"_. c #DBC481",
"`. c #DFC885",
"'. c #E1CA86",
"]. c #EACC80",
"[. c #E4CD8A",
"{. c #EED383",
"}. c #E7D18F",
"|. c #EAD38C",
" X c #F4D680",
".X c #FDD780",
"XX c #F5DA83",
"oX c #FCDC84",
"OX c #F5DB8A",
"+X c #FADE89",
"@X c #EAD492",
"#X c #EED896",
"$X c #EFDA9A",
"%X c #F1DD9D",
"&X c #FDE283",
"*X c #F6E18D",
"=X c #FEE48D",
"-X c #FFE692",
";X c #FFE894",
":X c #FBE799",
">X c #FFEA98",
",X c #F6E2A3",
"<X c #FAE6A6",
"1X c #FAE7A8",
"2X c #FDEAAB",
"3X c None",
/* pixels */
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u y y u y 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u u u a u u u u u u a u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u u u s m V D ' { ' D M d u u a u u u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u u M } m.~.oX=X=X=X=X=X-X-X=X&X/.m.=.V u u a u u w 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u u M 4.~.=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X/.5.Z u u u u u 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u ] V.&X=X=X&X=X=X=X=X=X=X=X=X=X&X=X=X=X=X=X=X=X=X=X=XW.} a u u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu a u u ' W.=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X+X=X=X=X&X=X=X=X~.} a u u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u M N.=X&X=X=X=X=X=X=X=X-X=X=X=X=X&X=X=X=XoX=X=X=X=X&X+X=X=X=X=X=X=X=XL.M u u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u u } XX=X=X=X&X=X=X=X=X=X=X=X=X=X=X=X=X=X=X=X*X=X=X=X=X=X=X=X=X=X=X=X=X=X=XoX<.a u u 2 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u s m.&X=X=X=X=X=X=X=X=X=X=X=X=X=X/.L.M.m.9.m.9.m.C.~.&X*X=X=X=X=X=X=X=X=X=X=X=X=XV.m u u 2 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3Xu u u c R.=X=X=X=X=X=X=X=X=X=X=XoXC.1.| S S A S D D D D ] ] ..<.N./.=X-X=X-X=X=X=X=X=X=X=XXXZ u a 2 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3Xu u u m XX=X=X=X=X=X=X=X=X=X=XW.3.| ^ A C M M M C S S A A A / ( { =.<.l.I.=X-X-X=X=X=X=X=X=X=X=XV a u 2 . 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3Xu u m /.=X=X=X-X=X=X=X=X=X~.1.D ] S Z v x p s u s d d v c c v V { =.7.8.7.l.T.=X-X=X-X-X-X-X-X=X=XV u a 1 3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3Xu u d /.=X=X=X=X=X=X=X=X&X8.^ A ( S M v e $.r.e.r.u w i a.a.a.&.b ^ =.l.l.l.c.z.z.XX-X-X-X-X=X-X-X;X&XV u u : 3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3Xu u s R.=X=X=X=X=X=X=X=XU.{ ^ Z C ( A M u w [.2X2X2X0 - 7 2X2X1X@Xi P *.l.x.B.U.C.z.z.W.-X-X-X-X-X-X=X-X*Xd a u # . 3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3Xu u u l.=X=X=X=X-X=X=X=Xm.Z Z Z Z n Z Z v e , '.2X2X2X5 & ; 2X2X2X}.7 b { 3.x.^.^.^.Y.A.z.R.-X;X;X;X;X-X;X-XP.a u y . 3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3Xu u } -X-X=X-X=X=X=X=Xl.M M Z C C C C C x e ; '.2X2X2X, $ = 2X2X2X}.6 h ) >.J..X.X.X.X(.W.Z.C.&X;X;X;X;X-X-X-X<.u u < 3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3Xu u c oX=X=X=X=X=X=X=Xl.Z C M M C C v v v s w = '.2X2X2X5 $ = 2X2X2X}.5 g ) u./.+X+X=X=X=X&XW.Z.F.=X;X;X;X;X-X-X*XV u y @ X 3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3Xu u u N.-X-X-X-X=X=X=XB.Z M C v v s e e e e w > % `.2X2X2X= + % 2X2X2X}.= r L 4.E.OX+X-X=X=X&X).W.M.R.;X;X;X-X-X-X;XR.u u y 3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3Xu u U -X-X-X-X-X-X=XW.^ C C C x e e r 6 5 4 ; = $ `.2X2X2X= O = 2X2X2X}.O = t Q ,.b.P./.*X=X&X&X).F.M.W.;X;X;X;X&X-X&X} u u O 3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3Xu u u R.-X-X-X-X-X-X=X=.{ ^ Z C x n 2X2X<X<X1X2X<X<X2X2X2X2X1X1X<X2X2X2X<X$X[.b.~ J I ~ b.P.&X&X&X).!.F.m.).;X;X;X;X;X&X).u y y 3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3Xu u U -X-X-X-X-X-X-Xc.=.=. ._ ^ x z 2X2X1X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X<Xn.l I ,.K./.).).).F.Z.Z.&X;X;X=X-X-X&X} u u O 3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3Xu u V.-X;X-X-X-X-XOX>.>.>.=.=._ n b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X:XI N +.V./.).).F.F.9.W.;X=X;X-X-X-XR.u u > 3X3X3X3X3X3X3X3X",
"3X3X3X3X3Xu u d =X;X-X-X-X-X-Xx.>.>.>.>.>...^ P 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X,Xl N 4.R.!.!.!.G.Z.M.&X;X=X=X-X-X-XB a u 3X3X3X3X3X3X3X",
"3X3X3X3X3Xu u @.;X;X-X;X;X;XXX>.:.>.>.>.>.>._ P ` Y Y W _.2X2X2X2X2X2X@XW W ~ 0.t.'.<X2X2X2X2X2X2X2X2X'.0 ' m./.!.!.Q.S.9.F.=X;X-X=X-X&X4.u u @ 3X3X3X3X3X3X3X",
"3X3X3X3X3Xu u P.;X;X;X;X-X:XN.>.>.>.>.>.>.>.=._ P z r 4 8 2X2X2X2X2X2X_.. $ , 6 1 3 t ~ 1X2X2X2X2X2X2X2Xt B 5.G.!.!.G.G.M.9.&X;X=X-X-X=X/.u u > 3X3X3X3X3X3X3X",
"3X3X3X3Xu u d =X;X;X=X;X;X=X3.>.>.>.e.>.3.3.>.:.*._ P r 9 2X2X2X2X2X1Xn.@ , c B N m h 8 ~ 2X2X2X2X2X2X2XI h <.F.!.G.G.F.M.9.W.;X=X-X-X=X=Xm u y . 3X3X3X3X3X3X",
"3X3X3X3Xu u ' -X-X>X-X-X-X X>.>.>.>.>.>.>.u.u.u.u.3.$.P f 2X2X2X2X2X2X_.$ i / -.<.8.} h 8 1X2X2X2X2X2X2X! i <.S.G.G.G.G.Z.9.Z.=X-X=X-X&X-X} u u X 3X3X3X3X3X3X",
"3X3X3X3Xu u 4.-X-X-X-X-X-XJ.3.>.>.k.k.k.k.k.u.k.u.u.:.U k 2X2X2X2X2X1X_.% f } 8.Z.F.8.U 8 ,X2X2X2X2X2X2XI g } Z.D.G.D.G.D.Z.9.&X-X=X=X=X-Xm.u u @ 3X3X3X3X3X3X",
"3X3X3X3Xu u K.;X-X;X-X>X-Xk.3.k.k.k.k.k.k.k.k.k.k.u.e.U k 2X2X2X2X2X2X_.% f [ 8.F.M.<.b i 2X2X2X2X2X2X2Xt a X.Z.D.D.D.G.G.Z.9./.=X-X=X=X=XR.u u & 3X3X3X3X3X3X",
"3X3X3X3Xu u E.;X-X;X-X-X=Xl.l.x.c.k.x.k.k.x.x.v.x.x.u.) z 2X2X2X2X2X2X_.$ 7 L <.<.} N 6 h.2X2X2X2X2X2X_.: V 1.S.D.D.G.D.S.M.6.W.-X=X-X=X=X&Xu u > X 3X3X3X3X3X",
"3X3X3Xu a u =X;X;X;X;X;XoX7.z.c.c.c.c.c.c.c.c.c.x.k.u.) z 2X2X2X2X2X2Xn.o = i N h i l n.2X2X2X2X2X2X<Xt t D 7.M.Z.z.z.9.9.9.6.M.-X=X=X=X;X=Xm u 1 3X3X3X3X3X",
"3X3X3Xy u a =X;X;X;X;X;XXXl.z.c.c.c.c.T.J.J.T.v.J.J.s.` z 2X2X2X2X2X2X#XW ~ ~ t.n.$X2X2X2X2X2X2X2X,Xt % t V X.8.9.8.9.9.9.6.6.M.-X=X=X=X=X&XM u 2 3X3X3X3X3X",
"3X3X3Xu u m -X-X-X;X;X;X~.z.z.c.c.c.c..XJ.J.J.J.J.J.x.O.b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2Xw.$ * y V X.7.8.8.9.7.8.7.6.8.=X=X-X-X=X-XV a y 3X3X3X3X3X",
"3X3X3Xu a m -X-X-X;X;X;X~.7.z.c.c.c.c.c.c.J.T.J.T.J.B.O.b 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X,X~ , c ' X.6.6.7.6.6.6.6.8.=X=X=X-X&X-XV u y 3X3X3X3X3X",
"3X3X3Xu u m -X-X-X-X-X-X/.8.l.z.c.T.c.J.c.J.T.v.J.J.x.O.G 2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2Xn.r v { 6.6.6.6.6.6.-.7.&X-X=X=X=X-XD u y 3X3X3X3X3X",
"3X3X3Xu u d =X-X-X-X-X-X~.7.z.z.c.c.c.c.c.J.c.T.T.^.T.y.R 2X2X2X2X2X2X@XK K W W W ~ h.#X1X2X2X2X2X2X2X2X2Xa.i Z ..X.6.6.-.-.6.7.-X-X-X-X-X-XD u 2 3X3X3X3X3X",
"3X3X3Xw u a =X-X-X-X-X-X~.7.7.8.c.c.c.c.T..X.X+X+X+XXXi.R 2X2X2X2X2X2Xn.. * 5 8 5 3 = * q `.2X2X2X2X2X2X2X<Xk c | X.6.-.-.-.-.z.&X;X=X;X-X;XV u w 3X3X3X3X3X",
"3X3X3Xu u u =X-X=X-X-X-X/.8.M.B.Y.T.^.^.^..X.XoXoX+XXXi.R 2X2X2X2X2X2X_.$ 0 b U U N l t 5 $ `.2X2X2X2X2X2X2X0.e Z .....-.-.6.c.;X=X;X=X;X-Xd u 1 3X3X3X3X3X",
"3X3X3X3Xu a E.-X-X-X-X-X=Xz.S.D.Y.^.Q.^.^.^..XoX+X+XXXi.R 2X2X2X2X2X2X_.= l +.u.i.,.O.E h 5 G 2X2X2X2X2X2X2X_.0 n | . .*. .*.T.-X;X;X;X-X=Xa u : 3X3X3X3X3X",
"3X3X3X3Xu u N.-X-X-X=X-X-XA.Z.S.Y.Q.Q.^.^..X.XoXoX&X.Xi.R 2X2X2X2X2X2X_.= N y.H.H.m.i.y.E f 8 2X2X2X2X2X2X2X'.6 n | . . . . ..X;X;X;X;X-X~.u u & 3X3X3X3X3X",
"3X3X3X3Xu u <.-X-X=X=X-X-XW.Z.S.Y.Y.Q.^.^.^.(..XoX=XXXi.R 2X2X2X2X2X2X_.= L 4.H.J.H.x.i.o.k j 2X2X2X2X2X2X2X_.6 B . . . .{ =.-X;X-X;X-X-Xb.a u @ 3X3X3X3X3X",
"3X3X3X3Xy a V =X=X-X-X=X-XXXZ.S.Y.Y.Y.Q.!.^..X.XoXoXE.y.I 2X2X2X2X2X2X_.= J y.b.H.N.p.&.P 0 g.2X2X2X2X2X2X2Xr.r B _ { .| ] l.-X;X;X-X-X;X..u u . . 3X3X3X3X3X",
"3X3X3X3Xy u a =X=X=X=X-X=X-XM.Z.S.Y.Y.Q.Q.^.^.^.U.J.u.E l 2X2X2X2X2X2X_.* k o.e.e.$.` P q W 1X2X2X2X2X2X2X2XG i B ] | ] ] ( ~.=X;X;X;X;X;XM u y 3X3X3X3X3X3X",
"3X3X3X3X3Xu u V.-X=X-X=X-X-XF.M.A.D.Y.Q.Y.Q.Y.B.2.[ N 0 j 2X2X2X2X2X2X_.O 5 l G z H H Q _.2X2X2X2X2X2X2X2X#X, g ^ ] ] | ] ..-X-X-X-X&X;X).u u : 3X3X3X3X3X3X",
"3X3X3X3X3Xu u } =X=X=X=X-X=X&XM.Z.S.D.W.Q.Y.B.*.a.#X@X|.,X2X2X2X2X2X2X,X[.[.}.}.%X<X2X2X2X2X2X2X2X2X2X2X<Xj 6 b / ] ] ] ] M.-X-X-X-X-X-X4.u u O 3X3X3X3X3X3X",
"3X3X3X3X3Xy u d =X=X=X=X=X=X-XS.M.A.S.S.U.A.u.) n.2X2X2X2X2X2X2X2X2X2X2X2X1X2X2X2X2X2X2X2X2X2X2X2X2X2X2XW ; i M ( S S S ] &X-X-X-X-X=X-Xm u y . X 3X3X3X3X3X3X",
"3X3X3X3X3X3Xu u p.=X=X=X=X=X-X&X9.Z.C.S.S.M.:.b [.2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X%XG = r x v C D D D m.-X-X-X-X-X-XR.u u : 3X3X3X3X3X3X3X",
"3X3X3X3X3X3Xy u B =X=X=X=X=X=X=XF.9.M.A.C.M.=.h %X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X1X#X~ 4 ; r p v v M C A | &X-X-X-X-X-X-X] u u X 3X3X3X3X3X3X3X",
"3X3X3X3X3X3Xy u u N.=X=X-X=X-X=X=XM.z.M.M.M.1.V #X%X%X%X%X$X%X%X<X2X2X2X%X$X%X2X2X2X<X[.n.t.W q = , r i x v C C C M C W.-X-X-X-X-X-X/.u u 1 X 3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3Xu u V *X=X=X*X=X=X=XoX8.M.M.M.5.{ m r , ; $ $ o o `.2X2X2X3 o $ 2X2X2X[.o $ 4 9 0 r g x v m C M C C C 8.&X-X-X-X-X-X-X[ u u @ 3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X2 u u 5.=X=X=X=X=X=X=XI.8.M.M.z.3.O.) P b r 0 4 % `.2X2X2X3 $ * 2X2X2X[.$ 4 r e ^ n n Z Z Z C C C M | =X=X-X-X-X-X-XR.u u < 3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3Xy u d XX=X=X=X=X-X=X=XS.8.8.M.M.z.z.7.{ _ U g 5 `.2X2X2X8 = 3 2X2X2X}.3 0 x ^ _ ^ ^ ^ Z ^ B ^ C .&X-X-X-X-X-X-X=XB u u o 3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X1 u u ' =X=X*X=X=X*X=X=XW.8.M.M.A.S.l.u.>.o.L r [.2X2X2X9 = 8 2X2X2X}.4 r ^ _ *.*._ ) ) ^ ^ ^ O.oX=X-X-X-X-X-X-X<.u u : . 3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3Xy u u i.=X=X=X=X=X-X*X=XW.9.M.A.B.3.5.5.;.U f [.2X2X2Xq 4 8 2X2X2X}.r q _ _ ;.;.*._ _ ` _ e.+X-X-X-X-X-X-X-XR.a u 2 3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3Xu u u K.=X=X=X-X=X=X=X=XXXz.M.8.5.8.u.:.) h }.2X2X2Xj r f 2X2X2X@Xq T _ e.e.u.e.;.$.$.b.-X-X-X=X;X=X;X-X&Xa a u + 3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3Xu u d ~.=X=X=X=X=X-X=X-X+XC.3.5.7.7.2.@.) q.r.q.q.H H L g.r.w.q.T ` e.k.v.k.k.s.s.{.-X-X;X-X;X;X;X;X*XV u u & . 3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X2 u u c XX-X=X=X=X=X-X=X-X-X Xl.7.7.u.2.$.o.[ [ o.O.$.&.&.` ` ` q.s.k.v.k.k.x.{.%X>X>X>X;X>X;X>X>X*XV u u > 3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X2 u u m ~.=X-X-X-X=X-X-X-X-X-X Xc.7.5.u.3.e.y.u.s.f.k.s.e.e.s.s.k.k.k.v. X:X>X>X>X>X>X>X;X>X>X*XV u u < 3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u d R.-X=X-X=X-X-X-X-X-X-X-X+XI.v.u.s.l.k.k.x.x.x.s.s.s.s.j.].+X>X>X>X>X>X:X>X>X>X>X>XOXV u u 1 3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u a p.-X-X-X;X;X;X-X-X-X:X-X-X-X-XOX XL.J.J.J.L.I.].OX:X>X-X>X>X-X>X>X>X>X>X>X>X>XK.a a u < 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u u @.=X;X;X>X;X-X-X>X-X-X-X-X;X-X-X-X-X-X>X>X-X>X-X>X>X>X>X;X>X>X>X-X>X-X-X:X<.u u u > 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X1 u u u m n.>X;X>X>X-X-X-X-X>X-X-X-X;X;X;X-X-X-X-X-X>X-X-X>X-X>X>X-X>X>X>X>XK.B u u u & 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xw u u u / {.>X>X-X-X-X-X-X-X-X-X-X-X;X-X-X;X:X-X-X>X-X:X>X;X;X>X;X;X{.[ u u u w + 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X2 u u u u ) K.-X-X-X-X:X-X-X-X-X-X-X-X-X-X-X-X-X>X-X-X-X-X-X-XE.[ u u u u - . 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X1 u u u u m 2.E.-X+X:X-X-X-X-X-X-X-X-X-X:X-X-X-X;X-XOXi.B u u u u 1 o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X> u u u u u v [ l.I.OX-X-X-X-X-X-X-X-X+XI.f.@.m u u u u u 1 + o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X& 2 u u u u u u u d B V V V V B d u u u u u u u y - . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X+ - 1 u u u u u u u a u u u u u u u u 2 - o o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xo . X # - > 1 2 2 2 1 2 > - # o . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3Xo o . o 3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X",
"3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X"
};