pax_global_header 0000666 0000000 0000000 00000000064 13227043065 0014514 g ustar 00root root 0000000 0000000 52 comment=e4db2a2181c104c7780e9f077923e2368a4386ee
tinyssh-20180201/ 0000775 0000000 0000000 00000000000 13227043065 0013454 5 ustar 00root root 0000000 0000000 tinyssh-20180201/.gitignore 0000664 0000000 0000000 00000000007 13227043065 0015441 0 ustar 00root root 0000000 0000000 /build
tinyssh-20180201/.travis.yml 0000664 0000000 0000000 00000000361 13227043065 0015565 0 ustar 00root root 0000000 0000000 language: c
os:
- linux
- osx
osx_image: xcode7.3
cache:
ccache: true
# opt-in Ubuntu Trusty
sudo: required
dist: trusty
script:
- cd "$TRAVIS_BUILD_DIR"
- make
after_success:
- cd "$TRAVIS_BUILD_DIR"
- sudo make install
tinyssh-20180201/INSTALL 0000664 0000000 0000000 00000000045 13227043065 0014504 0 ustar 00root root 0000000 0000000 See https://tinyssh.org/install.html
tinyssh-20180201/LICENCE 0000664 0000000 0000000 00000014761 13227043065 0014452 0 ustar 00root root 0000000 0000000 Public domain.
For jurisdictions where 'Public domain' mark is not legal, follow:
CC0 1.0 Universal
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator and
subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the
purpose of contributing to a commons of creative, cultural and scientific
works ("Commons") that the public can reliably and without fear of later
claims of infringement build upon, modify, incorporate in other works, reuse
and redistribute as freely as possible in any form whatsoever and for any
purposes, including without limitation commercial purposes. These owners may
contribute to the Commons to promote the ideal of a free culture and the
further production of creative, cultural and scientific works, or to gain
reputation or greater distribution for their Work in part through the use and
efforts of others.
For these and/or other purposes and motivations, and without any expectation
of additional consideration or compensation, the person associating CC0 with a
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
and publicly distribute the Work under its terms, with knowledge of his or her
Copyright and Related Rights in the Work and the meaning and intended legal
effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not limited
to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate,
and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness
depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in
a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation thereof,
including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world
based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of,
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
the Waiver for the benefit of each member of the public at large and to the
detriment of Affirmer's heirs and successors, fully intending that such Waiver
shall not be subject to revocation, rescission, cancellation, termination, or
any other legal or equitable action to disrupt the quiet enjoyment of the Work
by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be
judged legally invalid or ineffective under applicable law, then the Waiver
shall be preserved to the maximum extent permitted taking into account
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
is so judged Affirmer hereby grants to each affected person a royalty-free,
non transferable, non sublicensable, non exclusive, irrevocable and
unconditional license to exercise Affirmer's Copyright and Related Rights in
the Work (i) in all territories worldwide, (ii) for the maximum duration
provided by applicable law or treaty (including future time extensions), (iii)
in any current or future medium and for any number of copies, and (iv) for any
purpose whatsoever, including without limitation commercial, advertising or
promotional purposes (the "License"). The License shall be deemed effective as
of the date CC0 was applied by Affirmer to the Work. Should any part of the
License for any reason be judged legally invalid or ineffective under
applicable law, such partial invalidity or ineffectiveness shall not
invalidate the remainder of the License, and in such case Affirmer hereby
affirms that he or she will not (i) exercise any of his or her remaining
Copyright and Related Rights in the Work or (ii) assert any associated claims
and causes of action with respect to the Work, in either case contrary to
Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties
of any kind concerning the Work, express, implied, statutory or otherwise,
including without limitation warranties of title, merchantability, fitness
for a particular purpose, non infringement, or the absence of latent or
other defects, accuracy, or the present or absence of errors, whether or not
discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without limitation
any person's Copyright and Related Rights in the Work. Further, Affirmer
disclaims responsibility for obtaining any necessary consents, permissions
or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to this
CC0 or use of the Work.
For more information, please see
tinyssh-20180201/Makefile 0000664 0000000 0000000 00000000236 13227043065 0015115 0 ustar 00root root 0000000 0000000 compile: make-tinyssh.sh
sh -e make-tinyssh.sh
clean:
rm -rf build
install:
sh -e make-install.sh $(DESTDIR)
deb:
dpkg-buildpackage -b -rfakeroot -us -uc
tinyssh-20180201/README.md 0000664 0000000 0000000 00000000222 13227043065 0014727 0 ustar 00root root 0000000 0000000 See https://tinyssh.org/
[](https://travis-ci.org/janmojzis/tinyssh)
tinyssh-20180201/_tinyssh/ 0000775 0000000 0000000 00000000000 13227043065 0015314 5 ustar 00root root 0000000 0000000 tinyssh-20180201/_tinyssh/_TARGETS 0000664 0000000 0000000 00000000223 13227043065 0016504 0 ustar 00root root 0000000 0000000 _tinysshd-printkex
_tinysshd-unauthenticated
_tinysshd-install
_tinysshd-test-hello1
_tinysshd-test-hello2
_tinysshd-test-kex1
_tinysshd-test-kex2
tinyssh-20180201/_tinyssh/_tinysshd-install.c 0000664 0000000 0000000 00000005074 13227043065 0021136 0 ustar 00root root 0000000 0000000 #include
#include
#include
#include
#include "open.h"
#include "log.h"
static void usage(void) {
log_u1("_tinysshd-install: usage: _tinysshd-install sourcefile destdir tempfile destfile [flagexecutable]");
_exit(100);
}
static int flagtmpcreated = 0;
static const char *srcfn = 0;
static const char *tmpfn = 0;
static const char *dstfn = 0;
static const char *dstdir = 0;
static int fd1 = -1, fd2 = -1;
static void cleanup(void) {
if (flagtmpcreated) {
unlink(tmpfn);
}
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
static int flagexecutable = 0;
int main(int argc, char **argv) {
struct stat st;
long long r;
char ch;
log_init(2, "_tinysshd-install", 0, 0);
if (argc < 5) usage();
if (!argv[0]) usage();
if (!argv[1]) usage();
if (!argv[2]) usage();
if (!argv[3]) usage();
if (!argv[4]) usage();
srcfn = argv[1];
dstdir = argv[2];
tmpfn = argv[3];
dstfn = argv[4];
if (argv[5]) flagexecutable = 1;
/* open source file */
fd1 = open_read(srcfn);
if (fd1 == -1) die_fatal("unable to open file", srcfn, 0);
/* stat destination directory and change directory */
if ((stat(dstdir, &st)) == -1) die_fatal("unable to stat directory", dstdir, 0);
if (chdir(dstdir) == -1) die_fatal("unable to change directory to", dstdir, 0);
/* open temporary file */
fd2 = open_write(tmpfn);
if (fd2 == -1) die_fatal("unable to open file", dstdir, tmpfn);
flagtmpcreated = 1;
/* copy file */
for (;;) {
r = read(fd1, &ch, 1);
if (r == -1) die_fatal("unable to read from file", srcfn, 0);
if (r == 0) break;
if (write(fd2, &ch, 1) != 1) die_fatal("unable to write to file", dstdir, tmpfn);
}
if (fsync(fd2) == -1) die_fatal("unable to write to file", dstdir, tmpfn);
if (fchown(fd2, st.st_uid, st.st_gid) == -1) die_fatal("unable to change owner on", dstdir, tmpfn);
if (flagexecutable) {
if (fchmod(fd2, 0755) == -1) die_fatal("unable to change owner on", dstdir, tmpfn);
}
else {
if (fchmod(fd2, 0644) == -1) die_fatal("unable to change owner on", dstdir, tmpfn);
}
if (close(fd2) == -1) die_fatal("unable to write to file", dstdir, tmpfn);
if (rename(tmpfn, dstfn) == -1) die_fatal("unable to rename file to", dstdir, dstfn);
_exit(0);
}
tinyssh-20180201/_tinyssh/_tinysshd-printkex.c 0000664 0000000 0000000 00000010307 13227043065 0021327 0 ustar 00root root 0000000 0000000 /*
20141210
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "log.h"
#include "packet.h"
#include "ssh.h"
#include "bug.h"
#include "packetparser.h"
#include "global.h"
static void cleanup(void) {
global_purge();
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
static int _packet_kex_receive(void) {
struct buf *b = &packet.kexrecv;
long long pos = 0;
crypto_uint8 ch;
crypto_uint32 len;
if (!packet_getall(b, SSH_MSG_KEXINIT)) return 0;
/* parse packet */
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* SSH_MSG_KEXINIT */
if (ch != SSH_MSG_KEXINIT) bug_proto();
pos = packetparser_skip(b->buf, b->len, pos, 16); /* cookie */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* kex algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("kex algorithms: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* server host key algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("server host key algorithms: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("encryption algorithms client to server: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("encryption algorithms server to client: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("mac algorithms client to server: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("mac algorithms server to client: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* kex first packet follows */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* reserved */
return 1;
}
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
++argv;
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
close(2);
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
global_init();
log_init(2, "_tinysshd-printkex", 0, 0);
if (!packet_hello_receive()) die_fatal("unable to receive hello-string", 0, 0);
if (!packet_hello_send()) die_fatal("unable to send hello-string", 0, 0);
if (!_packet_kex_receive()) die_fatal("unable to receive kex-message", 0, 0);
_exit(111);
}
tinyssh-20180201/_tinyssh/_tinysshd-test-hello1.c 0000664 0000000 0000000 00000001704 13227043065 0021625 0 ustar 00root root 0000000 0000000 /*
20160225
Jan Mojzis
Public domain.
*/
#include
#include
#include
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
++argv;
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
close(1); /* simulate closed connection */
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
_exit(111);
}
tinyssh-20180201/_tinyssh/_tinysshd-test-hello2.c 0000664 0000000 0000000 00000003404 13227043065 0021625 0 ustar 00root root 0000000 0000000 /*
20160225
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "log.h"
#include "packet.h"
#include "global.h"
#include "str.h"
#include "writeall.h"
static void cleanup(void) {
global_purge();
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
const char *message;
long long messagelen;
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
if (!argv[2]) _exit(111);
++argv;
message = *argv;
messagelen = str_len(message);
++argv;
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
global_init();
if (!packet_hello_receive()) die_fatal("unable to receive hello-string", 0, 0);
if (messagelen) {
if (writeall(1, message, messagelen) == -1) die_fatal("unable to write hello-string", 0, 0);
if (writeall(1, "\r\n", 2) == -1) die_fatal("unable to write hello-string", 0, 0);
}
_exit(111);
}
tinyssh-20180201/_tinyssh/_tinysshd-test-kex1.c 0000664 0000000 0000000 00000003045 13227043065 0021311 0 ustar 00root root 0000000 0000000 /*
20160226
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "log.h"
#include "packet.h"
#include "ssh.h"
#include "bug.h"
#include "packetparser.h"
#include "global.h"
static void cleanup(void) {
global_purge();
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
++argv;
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
global_init();
log_init(2, "_tinysshd-test-kex1", 0, 0);
if (!packet_hello_receive()) die_fatal("unable to receive hello-string", 0, 0);
if (!packet_hello_send()) die_fatal("unable to send hello-string", 0, 0);
_exit(111);
}
tinyssh-20180201/_tinyssh/_tinysshd-test-kex2.c 0000664 0000000 0000000 00000012331 13227043065 0021310 0 ustar 00root root 0000000 0000000 /*
20160226
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "log.h"
#include "packet.h"
#include "ssh.h"
#include "bug.h"
#include "packetparser.h"
#include "global.h"
static void cleanup(void) {
global_purge();
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
static int _packet_disconnect(struct buf *b) {
buf_purge(b);
buf_putnum8(b, SSH_MSG_DISCONNECT); /* byte SSH_MSG_DISCONNECT */
buf_putnum32(b, 0); /* uint32 reason code */
buf_putstring(b, "bye"); /* string description in ISO-10646 UTF-8 encoding [RFC3629] */
buf_putstring(b, ""); /* string language tag [RFC3066] */
packet_put(b);
return packet_sendall();
}
static int _packet_debug(struct buf *b) {
buf_purge(b);
buf_putnum8(b, SSH_MSG_DEBUG); /* SSH_MSG_DEBUG */
buf_putnum8(b, 1); /* always_display */
buf_putstring(b, "test message"); /* message in ISO-10646 UTF-8 encoding [RFC3629] */
buf_putstring(b, ""); /* language tag [RFC3066] */
packet_put(b);
return packet_sendall();
}
static int _packet_kex_receive(void) {
struct buf *b = &packet.kexrecv;
long long pos = 0;
crypto_uint8 ch;
crypto_uint32 len;
if (!packet_getall(b, SSH_MSG_KEXINIT)) return 0;
/* parse packet */
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* SSH_MSG_KEXINIT */
if (ch != SSH_MSG_KEXINIT) bug_proto();
pos = packetparser_skip(b->buf, b->len, pos, 16); /* cookie */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* kex algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("kex algorithms: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* server host key algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("server host key algorithms: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("encryption algorithms client to server: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("encryption algorithms server to client: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("mac algorithms client to server: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
log_i2("mac algorithms server to client: ", (char *)b->buf + pos - len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* kex first packet follows */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* reserved */
return 1;
}
static unsigned char bspace[1024];
static struct buf b;
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
++argv;
buf_init(&b, bspace, sizeof bspace);
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
global_init();
log_init(0, "_tinysshd-test-kex1", 0, 0);
if (!packet_hello_receive()) die_fatal("unable to receive hello-string", 0, 0);
if (!packet_hello_send()) die_fatal("unable to send hello-string", 0, 0);
if (!_packet_kex_receive()) die_fatal("unable to receive kex-message", 0, 0);
if (!_packet_disconnect(&b)) die_fatal("unable to send disconnect-message", 0, 0);
_exit(111);
}
tinyssh-20180201/_tinyssh/_tinysshd-unauthenticated.c 0000664 0000000 0000000 00000005003 13227043065 0022645 0 ustar 00root root 0000000 0000000 /*
20141210
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "log.h"
#include "packet.h"
#include "ssh.h"
#include "bug.h"
#include "packetparser.h"
#include "global.h"
static void cleanup(void) {
global_purge();
}
static void die_fatal(const char *trouble, const char *d, const char *fn) {
cleanup();
if (d) {
if (fn) log_f5(trouble, " ", d, "/", fn);
else log_f3(trouble, " ", d);
}
else {
log_f1(trouble);
}
_exit(111);
}
static int _packet_debug(struct buf *b) {
buf_purge(b);
buf_putnum8(b, SSH_MSG_DEBUG); /* SSH_MSG_DEBUG */
buf_putnum8(b, 1); /* always_display */
buf_putstring(b, "test message"); /* message in ISO-10646 UTF-8 encoding [RFC3629] */
buf_putstring(b, ""); /* language tag [RFC3066] */
packet_put(b);
return packet_sendall();
}
static unsigned char bspace[1024];
static struct buf b;
int main(int argc, char **argv) {
pid_t pid;
int tochild[2] = { -1, -1 };
int fromchild[2] = { -1, -1 };
long long i;
if (argc < 2) _exit(111);
if (!argv[0]) _exit(111);
if (!argv[1]) _exit(111);
++argv;
buf_init(&b, bspace, sizeof bspace);
if (pipe(tochild) == -1) _exit(111);
if (pipe(fromchild) == -1) _exit(111);
pid = fork();
if (pid == -1) _exit(111);
if (pid == 0) {
close(tochild[1]);
close(fromchild[0]);
close(2);
if (dup2(tochild[0], 0) == -1) _exit(111);
if (dup2(fromchild[1], 1) == -1) _exit(111);
execvp(*argv, argv);
_exit(111);
}
close(tochild[0]);
close(fromchild[1]);
close(0); if (dup2(fromchild[0], 0) == -1) _exit(111);
close(1); if (dup2(tochild[1], 1) == -1) _exit(111);
signal(SIGPIPE, SIG_IGN);
global_init();
log_init(1, "_tinysshd-unauthenticated", 0, 0);
if (!packet_hello_receive()) die_fatal("unable to receive hello-string", 0, 0);
if (!packet_hello_send()) die_fatal("unable to send hello-string", 0, 0);
for (i = 1; i < 100 * PACKET_UNAUTHENTICATED_MESSAGES; ++i) {
if (!_packet_debug(&b)) {
if (i < PACKET_UNAUTHENTICATED_MESSAGES) die_fatal("unable to send debug message - parent died too early", 0, 0);
_exit(0); /* limitation works */
}
if (i > PACKET_UNAUTHENTICATED_MESSAGES) usleep(1000); /* XXX */
}
die_fatal("limitation is not working !!!!!!!!!!", 0, 0);
_exit(111);
}
tinyssh-20180201/conf-bin 0000664 0000000 0000000 00000000012 13227043065 0015063 0 ustar 00root root 0000000 0000000 /usr/sbin
tinyssh-20180201/conf-cc 0000664 0000000 0000000 00000000205 13227043065 0014704 0 ustar 00root root 0000000 0000000 cc -O3 -fomit-frame-pointer -funroll-loops
gcc -O3 -fomit-frame-pointer -funroll-loops
clang -O3 -fomit-frame-pointer -funroll-loops
tinyssh-20180201/conf-cflags 0000664 0000000 0000000 00000000443 13227043065 0015562 0 ustar 00root root 0000000 0000000 -pedantic
-Wall
-Wno-long-long
-Wno-overlength-strings
-Wno-unused-function
-Wshadow
-Wdeclaration-after-statement
-Wwrite-strings
-Wmissing-declarations
-Wmissing-prototypes
-Wstrict-prototypes
-Wunused-value
-Wunused-parameter
-Wundef
-fstack-protector-strong
-fwrapv
-fno-strict-overflow
tinyssh-20180201/conf-libs 0000664 0000000 0000000 00000000026 13227043065 0015251 0 ustar 00root root 0000000 0000000 -lutil
-lsocket -lnsl
tinyssh-20180201/conf-man 0000664 0000000 0000000 00000000017 13227043065 0015073 0 ustar 00root root 0000000 0000000 /usr/share/man
tinyssh-20180201/crypto-tests/ 0000775 0000000 0000000 00000000000 13227043065 0016134 5 ustar 00root root 0000000 0000000 tinyssh-20180201/crypto-tests/crypto_auth_hmacsha256test.c 0000664 0000000 0000000 00000005114 13227043065 0023463 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_auth_hmacsha256.h"
static unsigned char k[32] = {
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20
};
static unsigned char c[50] = {
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
0xcd, 0xcd
};
static unsigned char ao[32] = {
0x37, 0x2e, 0xfc, 0xf9, 0xb4, 0x0b, 0x35, 0xc2,
0x11, 0x5b, 0x13, 0x46, 0x90, 0x3d, 0x2e, 0xf4,
0x2f, 0xce, 0xd4, 0x6f, 0x08, 0x46, 0xe7, 0x25,
0x7b, 0xb1, 0x56, 0xd3, 0xd7, 0xb3, 0x0d, 0x3f
};
static void test_rfc(void) {
unsigned char a[32];
long long i;
crypto_auth_hmacsha256(a, c, sizeof c, k);
for (i = 0; i < 32; ++i) if (a[i] != ao[i]) fail("crypto_auth_hmacsha256() failure");
if (crypto_auth_hmacsha256_verify(ao, c, sizeof c, k) != 0) fail("crypto_auth_hmacsha256_verify() failure");
}
#define SPACESIZE 5232
static unsigned char space[SPACESIZE + 16];
static unsigned char key[crypto_auth_hmacsha256_KEYBYTES + 16];
static unsigned char buf[crypto_auth_hmacsha256_BYTES + 16];
static unsigned char test_pseudorandom_checksum[32] = {
0xc7, 0xe5, 0x4a, 0xa2, 0x7e, 0x24, 0xe7, 0xbc,
0x32, 0x70, 0xc8, 0x40, 0x31, 0xf2, 0xce, 0x61,
0xc2, 0xcd, 0x0d, 0x89, 0xf4, 0x80, 0x47, 0x60,
0xac, 0xb9, 0x2d, 0x70, 0x53, 0x73, 0x25, 0x72
};
static void test_pseudorandom(void) {
long long i, j;
checksum_zero();
i = 0;
for (j = 0; j < SPACESIZE; j += 1 + j / 16) {
pseudorandombytes(space + i, j);
pseudorandombytes(key + i, crypto_auth_hmacsha256_KEYBYTES);
crypto_auth_hmacsha256(buf + i, space + i, j, key + i);
checksum(buf + i, crypto_auth_hmacsha256_BYTES);
if (crypto_auth_hmacsha256_verify(buf + i, space + i, j, key + i) != 0) {
fail_printdata("m", space + i, j);
fail_printdata("key", key + i, crypto_auth_hmacsha256_KEYBYTES);
fail_printdata("a", buf + i, crypto_auth_hmacsha256_BYTES);
fail("crypto_auth_hmacsha256_verify() failure");
}
++i;
i %= 16;
}
fail_whenbadchecksum(test_pseudorandom_checksum);
}
int main(void) {
test_rfc();
test_pseudorandom();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_core_aes256encrypttest.c 0000664 0000000 0000000 00000007401 13227043065 0024224 0 ustar 00root root 0000000 0000000 /*
20140709
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_core_aes256encrypt.h"
static unsigned char key[crypto_core_aes256encrypt_KEYBYTES + 16];
static unsigned char out[crypto_core_aes256encrypt_OUTPUTBYTES + 16];
static unsigned char in[crypto_core_aes256encrypt_INPUTBYTES + 16];
static unsigned char o[32] = {
0x18, 0xbb, 0x31, 0xfc, 0xdd, 0xe0, 0x1c, 0x12,
0x48, 0xd7, 0x9c, 0x51, 0xc8, 0x2e, 0x48, 0x60,
0x92, 0x46, 0x6e, 0x6a, 0xb4, 0xf3, 0x71, 0x24,
0x49, 0xe4, 0xcf, 0x79, 0xc6, 0x14, 0x1f, 0x27
};
static void test_alignment(void) {
long long i;
for (i = 0; i < 16; ++i) {
crypto_core_aes256encrypt(out + i, in + i, key + i, 0);
}
}
static void test_rand(void) {
long long i;
for (i = 0; i < 256; ++i) {
pseudorandombytes(key, sizeof key);
pseudorandombytes(in, sizeof in);
crypto_core_aes256encrypt(out, in, key, 0);
checksum(out, crypto_core_aes256encrypt_OUTPUTBYTES);
}
fail_whenbadchecksum(o);
}
/* NIST testvectors from Special Publication 800-38A */
static struct vector {
const unsigned char key[crypto_core_aes256encrypt_KEYBYTES];
const unsigned char in[crypto_core_aes256encrypt_INPUTBYTES];
const unsigned char out[crypto_core_aes256encrypt_OUTPUTBYTES];
} vectors[] = {
{
{
0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4
},
{
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
},
{
0x0b, 0xdf, 0x7d, 0xf1, 0x59, 0x17, 0x16, 0x33, 0x5e, 0x9a, 0x8b, 0x15, 0xc8, 0x60, 0xc5, 0x02
}
},
{
{
0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4
},
{
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xff, 0x00
},
{
0x5a, 0x6e, 0x69, 0x9d, 0x53, 0x61, 0x19, 0x06, 0x54, 0x33, 0x86, 0x3c, 0x8f, 0x65, 0x7b, 0x94
}
},
{
{
0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4
},
{
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xff, 0x01
},
{
0x1b, 0xc1, 0x2c, 0x9c, 0x01, 0x61, 0x0d, 0x5d, 0x0d, 0x8b, 0xd6, 0xa3, 0x37, 0x8e, 0xca, 0x62
}
},
{
{
0x60, 0x3d, 0xeb, 0x10, 0x15, 0xca, 0x71, 0xbe, 0x2b, 0x73, 0xae, 0xf0, 0x85, 0x7d, 0x77, 0x81,
0x1f, 0x35, 0x2c, 0x07, 0x3b, 0x61, 0x08, 0xd7, 0x2d, 0x98, 0x10, 0xa3, 0x09, 0x14, 0xdf, 0xf4
},
{
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xff, 0x02
},
{
0x29, 0x56, 0xe1, 0xc8, 0x69, 0x35, 0x36, 0xb1, 0xbe, 0xe9, 0x9c, 0x73, 0xa3, 0x15, 0x76, 0xb6
}
},
};
static void test_vector(void) {
long long i, j;
unsigned char out[crypto_core_aes256encrypt_OUTPUTBYTES];
for (i = 0; i < 4; ++i) {
crypto_core_aes256encrypt(out, vectors[i].in, vectors[i].key, 0);
for (j = 0; j < crypto_core_aes256encrypt_OUTPUTBYTES; ++j)
if (out[j] != vectors[i].out[j])
fail("crypto_core_aes256encrypt() failure");
}
}
int main(void) {
test_vector();
test_alignment();
test_rand();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_hash_sha256test.c 0000664 0000000 0000000 00000001640 13227043065 0022614 0 ustar 00root root 0000000 0000000 /*
20141018
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_hash_sha256.h"
#define SPACESIZE 5232
static unsigned char space[SPACESIZE + 16];
static unsigned char buf[crypto_hash_sha256_BYTES + 16];
static unsigned char test_pseudorandom_checksum[32] = {
0xbd, 0x62, 0xb1, 0x24, 0x12, 0xce, 0xc2, 0xd6,
0xc9, 0x81, 0x29, 0x7f, 0x83, 0x8a, 0xe5, 0x19,
0xfd, 0xd7, 0x26, 0x4f, 0x13, 0x7e, 0xd5, 0x18,
0x40, 0x53, 0x76, 0x16, 0xe4, 0x22, 0x48, 0x50
};
static void test_pseudorandom(void) {
long long i, j;
checksum_zero();
i = 0;
for (j = 0; j < SPACESIZE; j += 1 + j / 16) {
pseudorandombytes(space + i, j);
crypto_hash_sha256(buf + i, space + i, j);
checksum(buf + i, crypto_hash_sha256_BYTES);
++i;
i %= 16;
}
fail_whenbadchecksum(test_pseudorandom_checksum);
}
int main(void) {
test_pseudorandom();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_hash_sha512test.c 0000664 0000000 0000000 00000001640 13227043065 0022607 0 ustar 00root root 0000000 0000000 /*
20141018
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_hash_sha512.h"
#define SPACESIZE 5232
static unsigned char space[SPACESIZE + 16];
static unsigned char buf[crypto_hash_sha512_BYTES + 16];
static unsigned char test_pseudorandom_checksum[32] = {
0xa1, 0x57, 0x2f, 0x67, 0x19, 0xa6, 0x88, 0x2f,
0x54, 0xa5, 0xa4, 0x7d, 0xe2, 0xd3, 0xa3, 0xfd,
0xd1, 0x1a, 0x73, 0x58, 0x84, 0xc7, 0xb9, 0xfd,
0x7f, 0xa2, 0x33, 0xbf, 0x86, 0xf7, 0x15, 0xee
};
static void test_pseudorandom(void) {
long long i, j;
checksum_zero();
i = 0;
for (j = 0; j < SPACESIZE; j += 1 + j / 16) {
pseudorandombytes(space + i, j);
crypto_hash_sha512(buf + i, space + i, j);
checksum(buf + i, crypto_hash_sha512_BYTES);
++i;
i %= 16;
}
fail_whenbadchecksum(test_pseudorandom_checksum);
}
int main(void) {
test_pseudorandom();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_onetimeauth_poly1305test.c 0000664 0000000 0000000 00000002727 13227043065 0024506 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_onetimeauth_poly1305.h"
#define SPACESIZE 5232
static unsigned char space[SPACESIZE + 16];
static unsigned char key[crypto_onetimeauth_poly1305_KEYBYTES + 16];
static unsigned char buf[crypto_onetimeauth_poly1305_BYTES + 16];
static unsigned char test_pseudorandom_checksum[32] = {
0xaf, 0xe7, 0xbb, 0x79, 0x2a, 0xe5, 0x81, 0xee,
0xbc, 0x1f, 0x5b, 0x79, 0x96, 0xb7, 0x27, 0x1a,
0xc2, 0x74, 0x65, 0x0e, 0x1d, 0xb5, 0xb7, 0x06,
0x10, 0x42, 0x6a, 0x50, 0x57, 0x8b, 0xf1, 0xb0
};
static void test_pseudorandom(void) {
long long i, j;
checksum_zero();
i = 0;
for (j = 0; j < SPACESIZE; j += 1 + j / 16) {
pseudorandombytes(space + i, j);
pseudorandombytes(key + i, crypto_onetimeauth_poly1305_KEYBYTES);
crypto_onetimeauth_poly1305(buf + i, space + i, j, key + i);
checksum(buf + i, crypto_onetimeauth_poly1305_BYTES);
if (crypto_onetimeauth_poly1305_verify(buf + i, space + i, j, key + i) != 0) {
fail_printdata("m", space + i, j);
fail_printdata("key", key + i, crypto_onetimeauth_poly1305_KEYBYTES);
fail_printdata("a", buf + i, crypto_onetimeauth_poly1305_BYTES);
fail("crypto_onetimeauth_poly1305_verify() failure");
}
++i;
i %= 16;
}
fail_whenbadchecksum(test_pseudorandom_checksum);
}
int main(void) {
test_pseudorandom();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_scalarmult_curve25519test.c 0000664 0000000 0000000 00000007733 13227043065 0024573 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_scalarmult_curve25519.h"
#define BYTES crypto_scalarmult_curve25519_BYTES
#define SCALARBYTES crypto_scalarmult_curve25519_SCALARBYTES
static unsigned char pk[BYTES];
static unsigned char sk1[SCALARBYTES + 16];
static unsigned char pk1[BYTES + 16];
static unsigned char k1[BYTES + 16];
static unsigned char sk2[SCALARBYTES + 16];
static unsigned char pk2[BYTES + 16];
static unsigned char k2[BYTES + 16];
static unsigned char S[BYTES] = { 9 };
static unsigned char R[BYTES] = {
0xf9, 0xc3, 0xda, 0xc2, 0x10, 0x4c, 0x80, 0xb2,
0x52, 0xd0, 0xae, 0xec, 0x37, 0x7a, 0xfd, 0x5d,
0x1e, 0xf2, 0xc8, 0xc3, 0x48, 0xc2, 0x9e, 0x12,
0xdd, 0xb2, 0xd0, 0xc8, 0xb1, 0x98, 0xff, 0x7f
};
static unsigned char d[SCALARBYTES] = {
0x56, 0x2c, 0x1e, 0xb5, 0xfd, 0xb2, 0x81, 0x29,
0xbd, 0x37, 0x49, 0x58, 0x35, 0xd4, 0xb1, 0x30,
0x7d, 0xdb, 0x57, 0x38, 0x80, 0x12, 0x17, 0x42,
0xf7, 0x13, 0xf1, 0x05, 0x67, 0x69, 0xd5, 0xbf
};
static void test_vector(void) {
long long j;
unsigned char r[BYTES];
if (crypto_scalarmult_curve25519(r, d, S) != 0) fail("crypto_scalarmult_curve25519() failure");
for (j = 0; j < BYTES; ++j) if (r[j] != R[j]) fail("crypto_scalarmult_curve25519() failure");
}
static unsigned char skdata[1080][32] = {
#include "precomp.data"
};
static unsigned char pkdata[1080][32] = {
#include "precomp_curve25519.data"
};
static void test_base(void) {
long long i, j;
checksum_zero();
for (i = 0; i < 1080; ++i) {
if (crypto_scalarmult_curve25519_base(pk, skdata[i]) != 0) {
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_curve25519_base() failure, please report it !!!!!!!!!");
}
for (j = 0; j < BYTES; ++j) if (pk[j] != pkdata[i][j]) {
fail_printdata("pk_computed", pk, BYTES);
fail_printdata("pk_expected", pkdata[i], BYTES);
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_curve25519() failure, please report it !!!!!!!!!");
}
}
}
static const unsigned char basepoint[BYTES] = { 9 };
static unsigned char test_scalarmult_checksum[32] = {
0xca, 0xf4, 0xa3, 0xbe, 0x00, 0x9c, 0x6f, 0x01,
0xb8, 0x4e, 0xf8, 0x0d, 0x0a, 0x17, 0x16, 0x42,
0xfe, 0x01, 0x59, 0x40, 0x74, 0xd4, 0xa6, 0x48,
0x07, 0x94, 0x95, 0x94, 0xab, 0xa4, 0x5e, 0x6d
};
static void test_scalarmult(void) {
long long i, j;
unsigned char outpk[BYTES];
for (i = 0; i < BYTES; ++i) pk[i] = basepoint[i];
checksum_zero();
for (i = 0; i < 1080; ++i) {
pk[31] |= 128;
if (crypto_scalarmult_curve25519(outpk, skdata[i], pk) != 0) {
fail_printdata("pk", pk, BYTES);
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_curve25519() failure, please report it !!!!!!!!!");
}
checksum(outpk, BYTES);
for (j = 0; j < BYTES; ++j) pk[j] = outpk[j];
}
fail_whenbadchecksum(test_scalarmult_checksum);
}
static void test_random(void) {
long long i, j;
for (i = 0; i < 16; ++i) {
unsaferandombytes(sk1 + i, SCALARBYTES);
unsaferandombytes(sk2 + i, SCALARBYTES);
if (crypto_scalarmult_curve25519_base(pk1 + i, sk1 + i) != 0) goto fail;
pk1[31 + i] |= 128;
if (crypto_scalarmult_curve25519_base(pk2 + i, sk2 + i) != 0) goto fail;
pk2[31 + i] |= 128;
if (crypto_scalarmult_curve25519(k1 + i, sk1 + i, pk2 + i) != 0) goto fail;
if (crypto_scalarmult_curve25519(k2 + i, sk2 + i, pk1 + i) != 0) goto fail;
for (j = 0; j < BYTES; ++j) if (k1[j + i] != k2[j + i]) goto fail;
}
return;
fail:
fail_printdata("sk1", sk1 + i, SCALARBYTES);
fail_printdata("sk2", sk2 + i, SCALARBYTES);
fail("crypto_scalarmult_curve25519() failure, please report it !!!!!!!!!");
}
int main(void) {
test_vector();
test_base();
test_scalarmult();
test_random();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_scalarmult_nistp256test.c 0000664 0000000 0000000 00000013005 13227043065 0024420 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_scalarmult_nistp256.h"
#define BYTES crypto_scalarmult_nistp256_BYTES
#define SCALARBYTES crypto_scalarmult_nistp256_SCALARBYTES
static unsigned char pk[BYTES];
static unsigned char sk1[SCALARBYTES + 16];
static unsigned char pk1[BYTES + 16];
static unsigned char k1[BYTES + 16];
static unsigned char sk2[SCALARBYTES + 16];
static unsigned char pk2[BYTES + 16];
static unsigned char k2[BYTES + 16];
static unsigned char S[BYTES] = {
0xde, 0x24, 0x44, 0xbe, 0xbc, 0x8d, 0x36, 0xe6,
0x82, 0xed, 0xd2, 0x7e, 0x0f, 0x27, 0x15, 0x08,
0x61, 0x75, 0x19, 0xb3, 0x22, 0x1a, 0x8f, 0xa0,
0xb7, 0x7c, 0xab, 0x39, 0x89, 0xda, 0x97, 0xc9,
0xc0, 0x93, 0xae, 0x7f, 0xf3, 0x6e, 0x53, 0x80,
0xfc, 0x01, 0xa5, 0xaa, 0xd1, 0xe6, 0x66, 0x59,
0x70, 0x2d, 0xe8, 0x0f, 0x53, 0xce, 0xc5, 0x76,
0xb6, 0x35, 0x0b, 0x24, 0x30, 0x42, 0xa2, 0x56
};
static unsigned char R[BYTES] = {
0x51, 0xd0, 0x8d, 0x5f, 0x2d, 0x42, 0x78, 0x88,
0x29, 0x46, 0xd8, 0x8d, 0x83, 0xc9, 0x7d, 0x11,
0xe6, 0x2b, 0xec, 0xc3, 0xcf, 0xc1, 0x8b, 0xed,
0xac, 0xc8, 0x9b, 0xa3, 0x4e, 0xec, 0xa0, 0x3f,
0x75, 0xee, 0x68, 0xeb, 0x8b, 0xf6, 0x26, 0xaa,
0x5b, 0x67, 0x3a, 0xb5, 0x1f, 0x6e, 0x74, 0x4e,
0x06, 0xf8, 0xfc, 0xf8, 0xa6, 0xc0, 0xcf, 0x30,
0x35, 0xbe, 0xca, 0x95, 0x6a, 0x7b, 0x41, 0xd5
};
static unsigned char d[SCALARBYTES] = {
0xc5, 0x1e, 0x47, 0x53, 0xaf, 0xde, 0xc1, 0xe6,
0xb6, 0xc6, 0xa5, 0xb9, 0x92, 0xf4, 0x3f, 0x8d,
0xd0, 0xc7, 0xa8, 0x93, 0x30, 0x72, 0x70, 0x8b,
0x65, 0x22, 0x46, 0x8b, 0x2f, 0xfb, 0x06, 0xfd
};
static void test_vector(void) {
long long j;
unsigned char r[BYTES];
if (crypto_scalarmult_nistp256(r, d, S) != 0) fail("crypto_scalarmult_nistp256() failure");
for (j = 0; j < BYTES; ++j) if (r[j] != R[j]) fail("crypto_scalarmult_nistp256() failure");
}
static int iszero(const unsigned char *x) {
unsigned char d = 0;
long long i;
for (i = 0; i < SCALARBYTES; ++i) d |= x[i];
return (256 - (unsigned int)d) >> 8;
}
static unsigned char skdata[1080][32] = {
#include "precomp.data"
};
static unsigned char pkdata[1080][64] = {
#include "precomp_nistp256.data"
};
static void test_base(void) {
long long i, j;
checksum_zero();
for (i = 0; i < 1080; ++i) {
if (iszero(skdata[i])) {
if (crypto_scalarmult_nistp256_base(pk, skdata[i]) == 0) {
fail("crypto_scalarmult_nistp256_base() accepts n = 0");
}
continue;
}
if (crypto_scalarmult_nistp256_base(pk, skdata[i]) != 0) {
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_nistp256_base() failure, please report it !!!!!!!!!");
}
for (j = 0; j < BYTES; ++j) if (pk[j] != pkdata[i][j]) {
fail_printdata("pk_computed", pk, BYTES);
fail_printdata("pk_expected", pkdata[i], BYTES);
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_nistp256() failure, please report it !!!!!!!!!");
}
}
}
static const unsigned char basepoint[BYTES] = {
0x6b, 0x17, 0xd1, 0xf2, 0xe1, 0x2c, 0x42, 0x47,
0xf8, 0xbc, 0xe6, 0xe5, 0x63, 0xa4, 0x40, 0xf2,
0x77, 0x03, 0x7d, 0x81, 0x2d, 0xeb, 0x33, 0xa0,
0xf4, 0xa1, 0x39, 0x45, 0xd8, 0x98, 0xc2, 0x96,
0x4f, 0xe3, 0x42, 0xe2, 0xfe, 0x1a, 0x7f, 0x9b,
0x8e, 0xe7, 0xeb, 0x4a, 0x7c, 0x0f, 0x9e, 0x16,
0x2b, 0xce, 0x33, 0x57, 0x6b, 0x31, 0x5e, 0xce,
0xcb, 0xb6, 0x40, 0x68, 0x37, 0xbf, 0x51, 0xf5
};
static unsigned char test_scalarmult_checksum[32] = {
0x79, 0x63, 0x0b, 0xe6, 0xf6, 0xcd, 0x4a, 0xb3,
0xab, 0xb7, 0x90, 0xf8, 0x86, 0x8a, 0x87, 0x06,
0x4e, 0xf6, 0xa0, 0xdd, 0xee, 0x2f, 0xb2, 0x10,
0x25, 0x10, 0xef, 0x8b, 0xbb, 0x71, 0xbd, 0x84
};
static void test_scalarmult(void) {
long long i, j;
unsigned char outpk[BYTES];
for (i = 0; i < BYTES; ++i) pk[i] = basepoint[i];
checksum_zero();
for (i = 0; i < 1080; ++i) {
if (iszero(skdata[i])) {
if (crypto_scalarmult_nistp256(outpk, skdata[i], pk) == 0) {
fail("crypto_scalarmult_nistp256_base() accepts n = 0");
}
continue;
}
if (crypto_scalarmult_nistp256(outpk, skdata[i], pk) != 0) {
fail_printdata("pk", pk, BYTES);
fail_printdata("sk", skdata[i], SCALARBYTES);
fail("crypto_scalarmult_nistp256() failure, please report it !!!!!!!!!");
}
checksum(outpk, BYTES);
for (j = 0; j < BYTES; ++j) pk[j] = outpk[j];
}
fail_whenbadchecksum(test_scalarmult_checksum);
}
static void test_random(void) {
long long i, j;
for (i = 0; i < 16; ++i) {
unsaferandombytes(sk1 + i, SCALARBYTES);
unsaferandombytes(sk2 + i, SCALARBYTES);
if (crypto_scalarmult_nistp256_base(pk1 + i, sk1 + i) != 0) goto fail;
if (crypto_scalarmult_nistp256_base(pk2 + i, sk2 + i) != 0) goto fail;
if (crypto_scalarmult_nistp256(k1 + i, sk1 + i, pk2 + i) != 0) goto fail;
if (crypto_scalarmult_nistp256(k2 + i, sk2 + i, pk1 + i) != 0) goto fail;
for (j = 0; j < BYTES; ++j) if (k1[j + i] != k2[j + i]) goto fail;
}
return;
fail:
fail_printdata("sk1", sk1 + i, SCALARBYTES);
fail_printdata("sk2", sk2 + i, SCALARBYTES);
fail("crypto_scalarmult_curve25519() failure, please report it !!!!!!!!!");
}
int main(void) {
test_vector();
test_base();
test_scalarmult();
test_random();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_sign_ed25519test.c 0000664 0000000 0000000 00000007454 13227043065 0022630 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include
#include "misc.h"
#include "crypto_sign_ed25519.h"
#define MLEN 5232
static unsigned char space[MLEN + 16];
static unsigned char m[MLEN + crypto_sign_ed25519_BYTES + 16];
static unsigned char sm[MLEN + crypto_sign_ed25519_BYTES + 16];
static unsigned char sk[crypto_sign_ed25519_SECRETKEYBYTES + 16];
static unsigned char pk[crypto_sign_ed25519_PUBLICKEYBYTES + 16];
static unsigned long long mlen;
static unsigned long long smlen;
static unsigned char test_precomp_checksumsha2[32] = {
0x63, 0xe6, 0x3c, 0xcf, 0x4a, 0x50, 0x12, 0xdc,
0xc5, 0xec, 0x43, 0x76, 0x52, 0x6c, 0xf1, 0x5c,
0x7b, 0x12, 0xb2, 0xa5, 0xee, 0x77, 0x71, 0x63,
0xd0, 0x3a, 0xf1, 0x84, 0xe0, 0xd2, 0x06, 0x13
};
static unsigned char test_precomp_checksumsha3[32] = {
0x18, 0x03, 0xc1, 0x7e, 0xf4, 0x2c, 0x56, 0xce,
0xc0, 0xc4, 0xb2, 0xc3, 0x29, 0xf7, 0xa8, 0x8c,
0x1e, 0xfe, 0xd2, 0x9c, 0xf3, 0xdb, 0xe5, 0x61,
0x2d, 0x22, 0xf9, 0x0c, 0xd9, 0x0f, 0xf2, 0x7f
};
static unsigned char skdata[1080][32] = {
#include "precomp.data"
};
static unsigned char pkdata[1080][32] = {
#include "precomp_ed25519.data"
};
static void test_precomp(void) {
long long i, j;
pseudorandombytes(space, sizeof space);
checksum_zero();
for (i = 0; i < 1080; ++i) {
for (j = 31; j >= 0; --j) sk[j ] = skdata[i][j];
for (j = 31; j >= 0; --j) sk[j + 32] = pkdata[i][j];
for (j = 31; j >= 0; --j) pk[j ] = pkdata[i][j];
crypto_sign_ed25519(sm, &smlen, space, MLEN - i, sk);
checksum(sm, crypto_sign_ed25519_BYTES);
if (crypto_sign_ed25519_open(m, &mlen, sm, smlen, pk) != 0) {
fail_printdata("sm", sm, smlen);
fail_printdata("pk", pk, crypto_sign_ed25519_PUBLICKEYBYTES);
fail_printdata("sk", sk, crypto_sign_ed25519_SECRETKEYBYTES);
fail("crypto_sign_ed25519_open() failure, please report it !!!!!!!!!");
}
}
if (!checksum_check((test_precomp_checksumsha2)) && !checksum_check((test_precomp_checksumsha3))) {
fail_whenbadchecksum(test_precomp_checksumsha3);
}
}
static void test_random(void) {
long long i, j;
i = 0;
for (j = 0; j < sizeof space; j += 1 + j / 16) {
unsaferandombytes(space + i, j);
if (crypto_sign_ed25519_keypair(pk + i, sk + i) != 0)
fail("crypto_sign_ed25519_keypair() failure");
crypto_sign_ed25519(sm + i, &smlen, space + i, j, sk + i);
if (crypto_sign_ed25519_open(m + i, &mlen, sm + i, smlen, pk + i) != 0) {
fail_printdata("sm", sm + i, smlen);
fail_printdata("pk", pk + i, crypto_sign_ed25519_PUBLICKEYBYTES);
fail_printdata("sk", sk + i, crypto_sign_ed25519_SECRETKEYBYTES);
fail("crypto_sign_ed25519_open() failure, please report it !!!!!!!!!");
}
++i;
i %= 16;
}
}
static void test_signopen(void) {
unsigned char m[1024];
unsigned char sm[1024];
unsigned char om[1024];
unsigned long long smlen = 0;
unsigned long long omlen;
if (crypto_sign_ed25519_keypair(pk, sk) != 0) fail("crypto_sign_ed25519_keypair() failure");
pseudorandombytes(m, sizeof m);
crypto_sign_ed25519(sm, &smlen, m + 64, sizeof m - 64, sk);
if (crypto_sign_ed25519_open(om, &omlen, sm, sizeof sm, pk) != 0) {
fail_printdata("sm", sm, smlen);
fail_printdata("pk", pk, crypto_sign_ed25519_PUBLICKEYBYTES);
fail_printdata("sk", sk, crypto_sign_ed25519_SECRETKEYBYTES);
fail("crypto_sign_ed25519_open() failure, please report it !!!!!!!!!");
}
if (memcmp(m + 64, om, sizeof m - 64)) {
fail("crypto_sign_ed25519_open() failure, messages do not match");
}
}
int main(void) {
test_precomp();
test_random();
test_signopen();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_sign_nistp256ecdsatest.c 0000664 0000000 0000000 00000010227 13227043065 0024214 0 ustar 00root root 0000000 0000000 /*
20141017
Jan Mojzis
Public domain.
*/
#include
#include "misc.h"
#include "crypto_sign_nistp256ecdsa.h"
#define MLEN 5232
static unsigned char space[MLEN + 16];
static unsigned char m[MLEN + crypto_sign_nistp256ecdsa_BYTES + 16];
static unsigned char sm[MLEN + crypto_sign_nistp256ecdsa_BYTES + 16];
static unsigned char sk[crypto_sign_nistp256ecdsa_SECRETKEYBYTES + 16];
static unsigned char pk[crypto_sign_nistp256ecdsa_PUBLICKEYBYTES + 16];
static unsigned long long mlen;
static unsigned long long smlen;
static unsigned char test_precomp_checksumsha3[32] = {
0x5b, 0x66, 0xc6, 0xbd, 0xfc, 0x96, 0xa9, 0x74,
0xbb, 0xf3, 0x7d, 0x31, 0xc5, 0xa2, 0xd2, 0x45,
0xa6, 0x2b, 0xbf, 0xc7, 0x28, 0x33, 0xd1, 0x76,
0xe4, 0xd3, 0x1e, 0x0b, 0x24, 0x26, 0x4b, 0x13
};
static unsigned char test_precomp_checksumsha2[32] = {
0x85, 0x7b, 0x0d, 0xd2, 0x82, 0xab, 0xaa, 0x86,
0x87, 0xfe, 0x2a, 0x83, 0x3b, 0x48, 0xb3, 0x84,
0xa2, 0x8f, 0x13, 0xf9, 0x72, 0xfb, 0x86, 0x1e,
0x4c, 0x57, 0x65, 0x4c, 0x83, 0xc3, 0x0d, 0x66
};
static unsigned char skdata[1080][32] = {
#include "precomp.data"
};
static unsigned char pkdata[1080][64] = {
#include "precomp_nistp256.data"
};
static int iszero(const unsigned char *x) {
unsigned char d = 0;
long long i;
for (i = 0; i < 32; ++i) d |= x[i];
return (256 - (unsigned int)d) >> 8;
}
static void test_precomp(void) {
long long i, j;
pseudorandombytes(space, sizeof space);
checksum_zero();
for (i = 0; i < 1080; ++i) {
for (j = 31; j >= 0; --j) sk[j ] = skdata[i][j];
for (j = 31; j >= 0; --j) sk[j + 32] = skdata[i][j];
for (j = 63; j >= 0; --j) pk[j ] = pkdata[i][j];
if (iszero(sk)) continue;
crypto_sign_nistp256ecdsa(sm, &smlen, space, MLEN - i, sk);
checksum(sm, crypto_sign_nistp256ecdsa_BYTES);
if (crypto_sign_nistp256ecdsa_open(m, &mlen, sm, smlen, pk) != 0) {
fail_printdata("sm", sm, smlen);
fail_printdata("pk", pk, crypto_sign_nistp256ecdsa_PUBLICKEYBYTES);
fail_printdata("sk", sk, crypto_sign_nistp256ecdsa_SECRETKEYBYTES);
fail("crypto_sign_nistp256ecdsa_open() failure, please report it !!!!!!!!!");
}
}
if (!checksum_check((test_precomp_checksumsha2)) && !checksum_check((test_precomp_checksumsha3))) {
fail_whenbadchecksum(test_precomp_checksumsha3);
}
}
static void test_random(void) {
long long i, j;
i = 0;
for (j = 0; j < sizeof space; j += 1 + j / 16) {
unsaferandombytes(space + i, j);
if (crypto_sign_nistp256ecdsa_keypair(pk + i, sk + i) != 0)
fail("crypto_sign_nistp256ecdsa_keypair() failure");
crypto_sign_nistp256ecdsa(sm + i, &smlen, space + i, j, sk + i);
if (crypto_sign_nistp256ecdsa_open(m + i, &mlen, sm + i, smlen, pk + i) != 0) {
fail_printdata("sm", sm + i, smlen);
fail_printdata("pk", pk + i, crypto_sign_nistp256ecdsa_PUBLICKEYBYTES);
fail_printdata("sk", sk + i, crypto_sign_nistp256ecdsa_SECRETKEYBYTES);
fail("crypto_sign_nistp256ecdsa_open() failure, please report it !!!!!!!!!");
}
++i;
i %= 16;
}
}
static void test_signopen(void) {
unsigned char m[1024];
unsigned char sm[1024];
unsigned char om[1024];
unsigned long long smlen = 0;
unsigned long long omlen;
if (crypto_sign_nistp256ecdsa_keypair(pk, sk) != 0) fail("crypto_sign_nistp256ecdsa_keypair() failure");
pseudorandombytes(m, sizeof m);
crypto_sign_nistp256ecdsa(sm, &smlen, m + 64, sizeof m - 64, sk);
if (crypto_sign_nistp256ecdsa_open(om, &omlen, sm, sizeof sm, pk) != 0) {
fail_printdata("sm", sm, smlen);
fail_printdata("pk", pk, crypto_sign_nistp256ecdsa_PUBLICKEYBYTES);
fail_printdata("sk", sk, crypto_sign_nistp256ecdsa_SECRETKEYBYTES);
fail("crypto_sign_nistp256ecdsa_open() failure, please report it !!!!!!!!!");
}
if (memcmp(m + 64, om, sizeof m - 64)) {
fail("crypto_sign_nistp256ecdsa_open() failure, messages do not match");
}
}
int main(void) {
test_precomp();
test_random();
test_signopen();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_stream_chacha20test.c 0000664 0000000 0000000 00000002417 13227043065 0023530 0 ustar 00root root 0000000 0000000 /*
20140709
Jan Mojzis
Public domain.
*/
#include
#include "misc.h"
#include "crypto_stream_chacha20.h"
static unsigned char space[5232];
static unsigned char k[crypto_stream_chacha20_KEYBYTES + 16];
static unsigned char n[crypto_stream_chacha20_NONCEBYTES + 16];
static unsigned char o[32] = {
0x98, 0x43, 0x28, 0xe2, 0x76, 0xc2, 0xc3, 0xa1,
0xe8, 0xf3, 0x50, 0x98, 0x15, 0xc4, 0xea, 0xa6,
0x2c, 0x54, 0x87, 0x1b, 0x02, 0x4c, 0x61, 0xd1,
0x01, 0xd9, 0xf0, 0xb1, 0xd5, 0x21, 0xc4, 0x7a
};
static void test_alignment(void) {
long long i;
for (i = 0; i < 16; ++i) {
crypto_stream_chacha20_xor(space + i, space + i, sizeof space - i, n + i, k + i);
}
}
static void test_rand(void) {
long long i, j;
unsigned int u;
pseudorandombytes(space, sizeof space);
pseudorandombytes(k, sizeof k);
pseudorandombytes(n, sizeof n);
for (i = 0; i < sizeof space; i += 1 + i / 16) {
u = 1;
for (j = 0; j < 8; ++j) {
u += (unsigned int) n[j];
n[j] = u;
u >>= 8;
}
crypto_stream_chacha20_xor(space, space, i, n, k);
}
checksum(space, sizeof space);
fail_whenbadchecksum(o);
}
int main(void) {
test_alignment();
test_rand();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_verify_16test.c 0000664 0000000 0000000 00000001701 13227043065 0022411 0 ustar 00root root 0000000 0000000 /*
20140167
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_verify_16.h"
static unsigned char b1[crypto_verify_16_BYTES + 16];
static unsigned char b2[crypto_verify_16_BYTES + 16];
static void test_alignment(void) {
long long i;
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0xff;
for (i = 0; i < 16; ++i) {
if (crypto_verify_16(b1 + i, b2 + i) != 0) fail("crypto_verify_16 failure");
}
}
static void test_verify(void) {
long long i;
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0xff;
if (crypto_verify_16(b1, b2) != 0) fail("crypto_verify_16 failure");
for (i = 0; i < crypto_verify_16_BYTES; ++i) {
b1[i] = 0;
if (crypto_verify_16(b1, b2) == 0) fail("crypto_verify_16 failure");
b1[i] = 0xff;
}
}
int main(void) {
test_alignment();
test_verify();
_exit(0);
}
tinyssh-20180201/crypto-tests/crypto_verify_32test.c 0000664 0000000 0000000 00000001701 13227043065 0022407 0 ustar 00root root 0000000 0000000 /*
20140167
Jan Mojzis
Public domain.
*/
#include "misc.h"
#include "crypto_verify_32.h"
static unsigned char b1[crypto_verify_32_BYTES + 16];
static unsigned char b2[crypto_verify_32_BYTES + 16];
static void test_alignment(void) {
long long i;
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0xff;
for (i = 0; i < 16; ++i) {
if (crypto_verify_32(b1 + i, b2 + i) != 0) fail("crypto_verify_32 failure");
}
}
static void test_verify(void) {
long long i;
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0xff;
if (crypto_verify_32(b1, b2) != 0) fail("crypto_verify_32 failure");
for (i = 0; i < crypto_verify_32_BYTES; ++i) {
b1[i] = 0;
if (crypto_verify_32(b1, b2) == 0) fail("crypto_verify_32 failure");
b1[i] = 0xff;
}
}
int main(void) {
test_alignment();
test_verify();
_exit(0);
}
tinyssh-20180201/crypto-tests/misc.h 0000664 0000000 0000000 00000010412 13227043065 0017236 0 ustar 00root root 0000000 0000000 #ifndef _MISC_H____
#define _MISC_H____
#include
#include
#include
#include
#include "crypto_uint8.h"
#include "crypto_uint32.h"
#include "crypto_uint64.h"
typedef crypto_uint8 u8;
typedef crypto_uint32 u32;
typedef crypto_uint64 u64;
#define FOR(i,n) for (i = 0;i < n;++i)
static u32 L32(u32 x,int c) { return (x << c) | ((x&0xffffffff) >> (32 - c)); }
static u32 ld32(const u8 *x)
{
u32 u = x[3];
u = (u<<8)|x[2];
u = (u<<8)|x[1];
return (u<<8)|x[0];
}
static void st32(u8 *x,u32 u)
{
int i;
FOR(i,4) { x[i] = u; u >>= 8; }
}
static const u8 sigma[17] = "expand 32-byte k";
static void core(u8 *out,const u8 *in,const u8 *k)
{
u32 w[16],x[16],y[16],t[4];
int i,j,m;
FOR(i,4) {
x[5*i] = ld32(sigma+4*i);
x[1+i] = ld32(k+4*i);
x[6+i] = ld32(in+4*i);
x[11+i] = ld32(k+16+4*i);
}
FOR(i,16) y[i] = x[i];
FOR(i,20) {
FOR(j,4) {
FOR(m,4) t[m] = x[(5*j+4*m)%16];
t[1] ^= L32(t[0]+t[3], 7);
t[2] ^= L32(t[1]+t[0], 9);
t[3] ^= L32(t[2]+t[1],13);
t[0] ^= L32(t[3]+t[2],18);
FOR(m,4) w[4*j+(j+m)%4] = t[m];
}
FOR(m,16) x[m] = w[m];
}
FOR(i,16) st32(out + 4 * i,x[i] + y[i]);
}
static unsigned char checksum_state[64] = {0};
static void checksum(const unsigned char *x,unsigned long long xlen)
{
u8 block[16];
int i;
while (xlen >= 16) {
core(checksum_state,x,checksum_state);
x += 16;
xlen -= 16;
}
FOR(i,16) block[i] = 0;
FOR(i,xlen) block[i] = x[i];
block[xlen] = 1;
checksum_state[0] ^= 1;
core(checksum_state,block,checksum_state);
}
static int checksum_check(unsigned char *o) {
int j;
for (j = 0; j < 32; ++j) if (checksum_state[j] != o[j]) return 0;
return 1;
}
static void checksum_zero(void) {
long long i;
for (i = 0; i < 64; ++i) checksum_state[i] = 0;
}
static void s20(u8 *c,u64 b,const u8 *n,const u8 *k)
{
u8 z[16],x[64];
u32 u,i;
if (!b) return;
FOR(i,16) z[i] = 0;
FOR(i,8) z[i] = n[i];
while (b >= 64) {
core(x,z,k);
FOR(i,64) c[i] = x[i];
u = 1;
for (i = 8;i < 16;++i) {
u += (u32) z[i];
z[i] = u;
u >>= 8;
}
b -= 64;
c += 64;
}
if (b) {
core(x,z,k);
FOR(i,b) c[i] = x[i];
}
}
static void increment(u8 *n)
{
if (!++n[0])
if (!++n[1])
if (!++n[2])
if (!++n[3])
if (!++n[4])
if (!++n[5])
if (!++n[6])
if (!++n[7])
;
}
static void pseudorandombytes(unsigned char *x,unsigned long long xlen)
{
const static unsigned char randombytes_k[33] = "answer randombytes from crypto_*";
static unsigned char randombytes_n[8];
s20(x,xlen,randombytes_n,randombytes_k);
increment(randombytes_n);
}
static void unsaferandombytes(unsigned char *x,unsigned long long xlen)
{
static unsigned char randombytes_k[32];
static unsigned char randombytes_n[8];
static int initialized = 0;
struct timeval t;
if (!initialized) {
initialized = 1;
gettimeofday(&t, (struct timezone *)0);
st32(randombytes_k + 0, t.tv_usec);
st32(randombytes_k + 4, t.tv_sec);
st32(randombytes_k + 8, getpid());
st32(randombytes_k + 12, getppid());
s20(randombytes_k,32,randombytes_n,randombytes_k);
}
s20(x,xlen,randombytes_n,randombytes_k);
increment(randombytes_n);
}
#define fail_(a, b, x) do { fprintf(stderr, "%s:%llu: %s\n", (a), (unsigned long long)(b), (x)); fflush(stderr); _exit(111); } while (0);
#define fail(x) fail_(__FILE__, __LINE__, (x))
static void fail_printdata(const char *text, unsigned char *data, long long len) {
long long i;
fprintf(stderr, "%s = {\n ", text);
for (i = 0; i < len; ++i) {
if (i == len - 1) {
fprintf(stderr, "0x%02x", data[i]);
}
else {
fprintf(stderr, "0x%02x, ", data[i]);
if (i % 8 == 7) fprintf(stderr, "\n ");
}
}
fprintf(stderr, "\n};\n");
fflush(stderr);
}
#define fail_whenbadchecksum(x) \
if (!checksum_check((x))) { \
fail_printdata("checksum_expected", (x), 32); \
fail_printdata("checksum_computed", checksum_state, 32); \
fail("checksum failure"); \
}
#endif
tinyssh-20180201/crypto-tests/precomp.data 0000664 0000000 0000000 00000534030 13227043065 0020441 0 ustar 00root root 0000000 0000000 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
tinyssh-20180201/crypto-tests/precomp.data.py 0000664 0000000 0000000 00000000705 13227043065 0021065 0 ustar 00root root 0000000 0000000 import binascii
f = open("precomp.txt")
def l(line):
l = ""
for i in range(32):
if i == 31:
l += "0x%s%s" % (line[2*i], line[2*i+1])
else:
l += "0x%s%s," % (line[2*i], line[2*i+1])
return l
while True:
line=f.readline()
if len(line) == 0:
f.close()
break
print "{", l(line), "},"
tinyssh-20180201/crypto-tests/precomp.txt 0000664 0000000 0000000 00000211070 13227043065 0020343 0 ustar 00root root 0000000 0000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000001
0000000000000000000000000000000000000000000000000000000000000002
0000000000000000000000000000000000000000000000000000000000000003
0000000000000000000000000000000000000000000000000000000000000004
0000000000000000000000000000000000000000000000000000000000000007
0000000000000000000000000000000000000000000000000000000000000008
000000000000000000000000000000000000000000000000000000000000000f
0000000000000000000000000000000000000000000000000000000000000010
000000000000000000000000000000000000000000000000000000000000001f
0000000000000000000000000000000000000000000000000000000000000020
000000000000000000000000000000000000000000000000000000000000003f
0000000000000000000000000000000000000000000000000000000000000040
000000000000000000000000000000000000000000000000000000000000007f
0000000000000000000000000000000000000000000000000000000000000080
00000000000000000000000000000000000000000000000000000000000000ff
0000000000000000000000000000000000000000000000000000000000000100
00000000000000000000000000000000000000000000000000000000000001ff
0000000000000000000000000000000000000000000000000000000000000200
00000000000000000000000000000000000000000000000000000000000003ff
0000000000000000000000000000000000000000000000000000000000000400
00000000000000000000000000000000000000000000000000000000000007ff
0000000000000000000000000000000000000000000000000000000000000800
0000000000000000000000000000000000000000000000000000000000000fff
0000000000000000000000000000000000000000000000000000000000001000
0000000000000000000000000000000000000000000000000000000000001fff
0000000000000000000000000000000000000000000000000000000000002000
0000000000000000000000000000000000000000000000000000000000003fff
0000000000000000000000000000000000000000000000000000000000004000
0000000000000000000000000000000000000000000000000000000000007fff
0000000000000000000000000000000000000000000000000000000000008000
000000000000000000000000000000000000000000000000000000000000ff00
000000000000000000000000000000000000000000000000000000000000ffff
0000000000000000000000000000000000000000000000000000000000010000
000000000000000000000000000000000000000000000000000000000001ffff
0000000000000000000000000000000000000000000000000000000000020000
000000000000000000000000000000000000000000000000000000000003ffff
0000000000000000000000000000000000000000000000000000000000040000
000000000000000000000000000000000000000000000000000000000007ffff
0000000000000000000000000000000000000000000000000000000000080000
00000000000000000000000000000000000000000000000000000000000fffff
0000000000000000000000000000000000000000000000000000000000100000
00000000000000000000000000000000000000000000000000000000001fffff
0000000000000000000000000000000000000000000000000000000000200000
00000000000000000000000000000000000000000000000000000000003fffff
0000000000000000000000000000000000000000000000000000000000400000
00000000000000000000000000000000000000000000000000000000007fffff
0000000000000000000000000000000000000000000000000000000000800000
0000000000000000000000000000000000000000000000000000000000ff0000
0000000000000000000000000000000000000000000000000000000000ffffff
0000000000000000000000000000000000000000000000000000000001000000
0000000000000000000000000000000000000000000000000000000001ffffff
0000000000000000000000000000000000000000000000000000000002000000
0000000000000000000000000000000000000000000000000000000003ffffff
0000000000000000000000000000000000000000000000000000000004000000
0000000000000000000000000000000000000000000000000000000007ffffff
0000000000000000000000000000000000000000000000000000000008000000
000000000000000000000000000000000000000000000000000000000fffffff
0000000000000000000000000000000000000000000000000000000010000000
000000000000000000000000000000000000000000000000000000001fffffff
0000000000000000000000000000000000000000000000000000000020000000
000000000000000000000000000000000000000000000000000000003fffffff
0000000000000000000000000000000000000000000000000000000040000000
000000000000000000000000000000000000000000000000000000007fffffff
0000000000000000000000000000000000000000000000000000000080000000
00000000000000000000000000000000000000000000000000000000ff000000
00000000000000000000000000000000000000000000000000000000ffffffff
0000000000000000000000000000000000000000000000000000000100000000
00000000000000000000000000000000000000000000000000000001ffffffff
0000000000000000000000000000000000000000000000000000000200000000
00000000000000000000000000000000000000000000000000000003ffffffff
0000000000000000000000000000000000000000000000000000000400000000
00000000000000000000000000000000000000000000000000000007ffffffff
0000000000000000000000000000000000000000000000000000000800000000
0000000000000000000000000000000000000000000000000000000fffffffff
0000000000000000000000000000000000000000000000000000001000000000
0000000000000000000000000000000000000000000000000000001fffffffff
0000000000000000000000000000000000000000000000000000002000000000
0000000000000000000000000000000000000000000000000000003fffffffff
0000000000000000000000000000000000000000000000000000004000000000
0000000000000000000000000000000000000000000000000000007fffffffff
0000000000000000000000000000000000000000000000000000008000000000
000000000000000000000000000000000000000000000000000000ff00000000
000000000000000000000000000000000000000000000000000000ffffffffff
0000000000000000000000000000000000000000000000000000010000000000
000000000000000000000000000000000000000000000000000001ffffffffff
0000000000000000000000000000000000000000000000000000020000000000
000000000000000000000000000000000000000000000000000003ffffffffff
0000000000000000000000000000000000000000000000000000040000000000
000000000000000000000000000000000000000000000000000007ffffffffff
0000000000000000000000000000000000000000000000000000080000000000
00000000000000000000000000000000000000000000000000000fffffffffff
0000000000000000000000000000000000000000000000000000100000000000
00000000000000000000000000000000000000000000000000001fffffffffff
0000000000000000000000000000000000000000000000000000200000000000
00000000000000000000000000000000000000000000000000003fffffffffff
0000000000000000000000000000000000000000000000000000400000000000
00000000000000000000000000000000000000000000000000007fffffffffff
0000000000000000000000000000000000000000000000000000800000000000
0000000000000000000000000000000000000000000000000000ff0000000000
0000000000000000000000000000000000000000000000000000ffffffffffff
0000000000000000000000000000000000000000000000000001000000000000
0000000000000000000000000000000000000000000000000001ffffffffffff
0000000000000000000000000000000000000000000000000002000000000000
0000000000000000000000000000000000000000000000000003ffffffffffff
0000000000000000000000000000000000000000000000000004000000000000
0000000000000000000000000000000000000000000000000007ffffffffffff
0000000000000000000000000000000000000000000000000008000000000000
000000000000000000000000000000000000000000000000000fffffffffffff
0000000000000000000000000000000000000000000000000010000000000000
000000000000000000000000000000000000000000000000001fffffffffffff
0000000000000000000000000000000000000000000000000020000000000000
000000000000000000000000000000000000000000000000003fffffffffffff
0000000000000000000000000000000000000000000000000040000000000000
000000000000000000000000000000000000000000000000007fffffffffffff
0000000000000000000000000000000000000000000000000080000000000000
00000000000000000000000000000000000000000000000000ff000000000000
00000000000000000000000000000000000000000000000000ffffffffffffff
0000000000000000000000000000000000000000000000000100000000000000
00000000000000000000000000000000000000000000000001ffffffffffffff
0000000000000000000000000000000000000000000000000200000000000000
00000000000000000000000000000000000000000000000003ffffffffffffff
0000000000000000000000000000000000000000000000000400000000000000
00000000000000000000000000000000000000000000000007ffffffffffffff
0000000000000000000000000000000000000000000000000800000000000000
0000000000000000000000000000000000000000000000000fffffffffffffff
0000000000000000000000000000000000000000000000001000000000000000
0000000000000000000000000000000000000000000000001fffffffffffffff
0000000000000000000000000000000000000000000000002000000000000000
0000000000000000000000000000000000000000000000003fffffffffffffff
0000000000000000000000000000000000000000000000004000000000000000
0000000000000000000000000000000000000000000000007fffffffffffffff
0000000000000000000000000000000000000000000000008000000000000000
000000000000000000000000000000000000000000000000ff00000000000000
000000000000000000000000000000000000000000000000ffffffffffffffff
0000000000000000000000000000000000000000000000010000000000000000
000000000000000000000000000000000000000000000001ffffffffffffffff
0000000000000000000000000000000000000000000000020000000000000000
000000000000000000000000000000000000000000000003ffffffffffffffff
0000000000000000000000000000000000000000000000040000000000000000
000000000000000000000000000000000000000000000007ffffffffffffffff
0000000000000000000000000000000000000000000000080000000000000000
00000000000000000000000000000000000000000000000fffffffffffffffff
0000000000000000000000000000000000000000000000100000000000000000
00000000000000000000000000000000000000000000001fffffffffffffffff
0000000000000000000000000000000000000000000000200000000000000000
00000000000000000000000000000000000000000000003fffffffffffffffff
0000000000000000000000000000000000000000000000400000000000000000
00000000000000000000000000000000000000000000007fffffffffffffffff
0000000000000000000000000000000000000000000000800000000000000000
0000000000000000000000000000000000000000000000ff0000000000000000
0000000000000000000000000000000000000000000000ffffffffffffffffff
0000000000000000000000000000000000000000000001000000000000000000
0000000000000000000000000000000000000000000001ffffffffffffffffff
0000000000000000000000000000000000000000000002000000000000000000
0000000000000000000000000000000000000000000003ffffffffffffffffff
0000000000000000000000000000000000000000000004000000000000000000
0000000000000000000000000000000000000000000007ffffffffffffffffff
0000000000000000000000000000000000000000000008000000000000000000
000000000000000000000000000000000000000000000fffffffffffffffffff
0000000000000000000000000000000000000000000010000000000000000000
000000000000000000000000000000000000000000001fffffffffffffffffff
0000000000000000000000000000000000000000000020000000000000000000
000000000000000000000000000000000000000000003fffffffffffffffffff
0000000000000000000000000000000000000000000040000000000000000000
000000000000000000000000000000000000000000007fffffffffffffffffff
0000000000000000000000000000000000000000000080000000000000000000
00000000000000000000000000000000000000000000ff000000000000000000
00000000000000000000000000000000000000000000ffffffffffffffffffff
0000000000000000000000000000000000000000000100000000000000000000
00000000000000000000000000000000000000000001ffffffffffffffffffff
0000000000000000000000000000000000000000000200000000000000000000
00000000000000000000000000000000000000000003ffffffffffffffffffff
0000000000000000000000000000000000000000000400000000000000000000
00000000000000000000000000000000000000000007ffffffffffffffffffff
0000000000000000000000000000000000000000000800000000000000000000
0000000000000000000000000000000000000000000fffffffffffffffffffff
0000000000000000000000000000000000000000001000000000000000000000
0000000000000000000000000000000000000000001fffffffffffffffffffff
0000000000000000000000000000000000000000002000000000000000000000
0000000000000000000000000000000000000000003fffffffffffffffffffff
0000000000000000000000000000000000000000004000000000000000000000
0000000000000000000000000000000000000000007fffffffffffffffffffff
0000000000000000000000000000000000000000008000000000000000000000
000000000000000000000000000000000000000000ff00000000000000000000
000000000000000000000000000000000000000000ffffffffffffffffffffff
0000000000000000000000000000000000000000010000000000000000000000
000000000000000000000000000000000000000001ffffffffffffffffffffff
0000000000000000000000000000000000000000020000000000000000000000
000000000000000000000000000000000000000003ffffffffffffffffffffff
0000000000000000000000000000000000000000040000000000000000000000
000000000000000000000000000000000000000007ffffffffffffffffffffff
0000000000000000000000000000000000000000080000000000000000000000
00000000000000000000000000000000000000000fffffffffffffffffffffff
0000000000000000000000000000000000000000100000000000000000000000
00000000000000000000000000000000000000001fffffffffffffffffffffff
0000000000000000000000000000000000000000200000000000000000000000
00000000000000000000000000000000000000003fffffffffffffffffffffff
0000000000000000000000000000000000000000400000000000000000000000
00000000000000000000000000000000000000007fffffffffffffffffffffff
0000000000000000000000000000000000000000800000000000000000000000
0000000000000000000000000000000000000000ff0000000000000000000000
0000000000000000000000000000000000000000ffffffffffffffffffffffff
0000000000000000000000000000000000000001000000000000000000000000
0000000000000000000000000000000000000001ffffffffffffffffffffffff
0000000000000000000000000000000000000002000000000000000000000000
0000000000000000000000000000000000000003ffffffffffffffffffffffff
0000000000000000000000000000000000000004000000000000000000000000
0000000000000000000000000000000000000007ffffffffffffffffffffffff
0000000000000000000000000000000000000008000000000000000000000000
000000000000000000000000000000000000000fffffffffffffffffffffffff
0000000000000000000000000000000000000010000000000000000000000000
000000000000000000000000000000000000001fffffffffffffffffffffffff
0000000000000000000000000000000000000020000000000000000000000000
000000000000000000000000000000000000003fffffffffffffffffffffffff
0000000000000000000000000000000000000040000000000000000000000000
000000000000000000000000000000000000007fffffffffffffffffffffffff
0000000000000000000000000000000000000080000000000000000000000000
00000000000000000000000000000000000000ff000000000000000000000000
00000000000000000000000000000000000000ffffffffffffffffffffffffff
0000000000000000000000000000000000000100000000000000000000000000
00000000000000000000000000000000000001ffffffffffffffffffffffffff
0000000000000000000000000000000000000200000000000000000000000000
00000000000000000000000000000000000003ffffffffffffffffffffffffff
0000000000000000000000000000000000000400000000000000000000000000
00000000000000000000000000000000000007ffffffffffffffffffffffffff
0000000000000000000000000000000000000800000000000000000000000000
0000000000000000000000000000000000000fffffffffffffffffffffffffff
0000000000000000000000000000000000001000000000000000000000000000
0000000000000000000000000000000000001fffffffffffffffffffffffffff
0000000000000000000000000000000000002000000000000000000000000000
0000000000000000000000000000000000003fffffffffffffffffffffffffff
0000000000000000000000000000000000004000000000000000000000000000
0000000000000000000000000000000000007fffffffffffffffffffffffffff
0000000000000000000000000000000000008000000000000000000000000000
000000000000000000000000000000000000ff00000000000000000000000000
000000000000000000000000000000000000ffffffffffffffffffffffffffff
0000000000000000000000000000000000010000000000000000000000000000
000000000000000000000000000000000001ffffffffffffffffffffffffffff
0000000000000000000000000000000000020000000000000000000000000000
000000000000000000000000000000000003ffffffffffffffffffffffffffff
0000000000000000000000000000000000040000000000000000000000000000
000000000000000000000000000000000007ffffffffffffffffffffffffffff
0000000000000000000000000000000000080000000000000000000000000000
00000000000000000000000000000000000fffffffffffffffffffffffffffff
0000000000000000000000000000000000100000000000000000000000000000
00000000000000000000000000000000001fffffffffffffffffffffffffffff
0000000000000000000000000000000000200000000000000000000000000000
00000000000000000000000000000000003fffffffffffffffffffffffffffff
0000000000000000000000000000000000400000000000000000000000000000
00000000000000000000000000000000007fffffffffffffffffffffffffffff
0000000000000000000000000000000000800000000000000000000000000000
0000000000000000000000000000000000ff0000000000000000000000000000
0000000000000000000000000000000000ffffffffffffffffffffffffffffff
0000000000000000000000000000000001000000000000000000000000000000
0000000000000000000000000000000001ffffffffffffffffffffffffffffff
0000000000000000000000000000000002000000000000000000000000000000
0000000000000000000000000000000003ffffffffffffffffffffffffffffff
0000000000000000000000000000000004000000000000000000000000000000
0000000000000000000000000000000007ffffffffffffffffffffffffffffff
0000000000000000000000000000000008000000000000000000000000000000
000000000000000000000000000000000fffffffffffffffffffffffffffffff
0000000000000000000000000000000010000000000000000000000000000000
000000000000000000000000000000001fffffffffffffffffffffffffffffff
0000000000000000000000000000000020000000000000000000000000000000
000000000000000000000000000000003fffffffffffffffffffffffffffffff
0000000000000000000000000000000040000000000000000000000000000000
000000000000000000000000000000007fffffffffffffffffffffffffffffff
0000000000000000000000000000000080000000000000000000000000000000
00000000000000000000000000000000ff000000000000000000000000000000
00000000000000000000000000000000ffffffffffffffffffffffffffffffff
0000000000000000000000000000000100000000000000000000000000000000
00000000000000000000000000000001ffffffffffffffffffffffffffffffff
0000000000000000000000000000000200000000000000000000000000000000
00000000000000000000000000000003ffffffffffffffffffffffffffffffff
0000000000000000000000000000000400000000000000000000000000000000
00000000000000000000000000000007ffffffffffffffffffffffffffffffff
0000000000000000000000000000000800000000000000000000000000000000
0000000000000000000000000000000fffffffffffffffffffffffffffffffff
0000000000000000000000000000001000000000000000000000000000000000
0000000000000000000000000000001fffffffffffffffffffffffffffffffff
0000000000000000000000000000002000000000000000000000000000000000
0000000000000000000000000000003fffffffffffffffffffffffffffffffff
0000000000000000000000000000004000000000000000000000000000000000
0000000000000000000000000000007fffffffffffffffffffffffffffffffff
0000000000000000000000000000008000000000000000000000000000000000
000000000000000000000000000000ff00000000000000000000000000000000
000000000000000000000000000000ffffffffffffffffffffffffffffffffff
0000000000000000000000000000010000000000000000000000000000000000
000000000000000000000000000001ffffffffffffffffffffffffffffffffff
0000000000000000000000000000020000000000000000000000000000000000
000000000000000000000000000003ffffffffffffffffffffffffffffffffff
0000000000000000000000000000040000000000000000000000000000000000
000000000000000000000000000007ffffffffffffffffffffffffffffffffff
0000000000000000000000000000080000000000000000000000000000000000
00000000000000000000000000000fffffffffffffffffffffffffffffffffff
0000000000000000000000000000100000000000000000000000000000000000
00000000000000000000000000001fffffffffffffffffffffffffffffffffff
0000000000000000000000000000200000000000000000000000000000000000
00000000000000000000000000003fffffffffffffffffffffffffffffffffff
0000000000000000000000000000400000000000000000000000000000000000
00000000000000000000000000007fffffffffffffffffffffffffffffffffff
0000000000000000000000000000800000000000000000000000000000000000
0000000000000000000000000000ff0000000000000000000000000000000000
0000000000000000000000000000ffffffffffffffffffffffffffffffffffff
0000000000000000000000000001000000000000000000000000000000000000
0000000000000000000000000001ffffffffffffffffffffffffffffffffffff
0000000000000000000000000002000000000000000000000000000000000000
0000000000000000000000000003ffffffffffffffffffffffffffffffffffff
0000000000000000000000000004000000000000000000000000000000000000
0000000000000000000000000007ffffffffffffffffffffffffffffffffffff
0000000000000000000000000008000000000000000000000000000000000000
000000000000000000000000000fffffffffffffffffffffffffffffffffffff
0000000000000000000000000010000000000000000000000000000000000000
000000000000000000000000001fffffffffffffffffffffffffffffffffffff
0000000000000000000000000020000000000000000000000000000000000000
000000000000000000000000003fffffffffffffffffffffffffffffffffffff
0000000000000000000000000040000000000000000000000000000000000000
000000000000000000000000007fffffffffffffffffffffffffffffffffffff
0000000000000000000000000080000000000000000000000000000000000000
00000000000000000000000000ff000000000000000000000000000000000000
00000000000000000000000000ffffffffffffffffffffffffffffffffffffff
0000000000000000000000000100000000000000000000000000000000000000
00000000000000000000000001ffffffffffffffffffffffffffffffffffffff
0000000000000000000000000200000000000000000000000000000000000000
00000000000000000000000003ffffffffffffffffffffffffffffffffffffff
0000000000000000000000000400000000000000000000000000000000000000
00000000000000000000000007ffffffffffffffffffffffffffffffffffffff
0000000000000000000000000800000000000000000000000000000000000000
0000000000000000000000000fffffffffffffffffffffffffffffffffffffff
0000000000000000000000001000000000000000000000000000000000000000
0000000000000000000000001fffffffffffffffffffffffffffffffffffffff
0000000000000000000000002000000000000000000000000000000000000000
0000000000000000000000003fffffffffffffffffffffffffffffffffffffff
0000000000000000000000004000000000000000000000000000000000000000
0000000000000000000000007fffffffffffffffffffffffffffffffffffffff
0000000000000000000000008000000000000000000000000000000000000000
000000000000000000000000ff00000000000000000000000000000000000000
000000000000000000000000ffffffffffffffffffffffffffffffffffffffff
0000000000000000000000010000000000000000000000000000000000000000
000000000000000000000001ffffffffffffffffffffffffffffffffffffffff
0000000000000000000000020000000000000000000000000000000000000000
000000000000000000000003ffffffffffffffffffffffffffffffffffffffff
0000000000000000000000040000000000000000000000000000000000000000
000000000000000000000007ffffffffffffffffffffffffffffffffffffffff
0000000000000000000000080000000000000000000000000000000000000000
00000000000000000000000fffffffffffffffffffffffffffffffffffffffff
0000000000000000000000100000000000000000000000000000000000000000
00000000000000000000001fffffffffffffffffffffffffffffffffffffffff
0000000000000000000000200000000000000000000000000000000000000000
00000000000000000000003fffffffffffffffffffffffffffffffffffffffff
0000000000000000000000400000000000000000000000000000000000000000
00000000000000000000007fffffffffffffffffffffffffffffffffffffffff
0000000000000000000000800000000000000000000000000000000000000000
0000000000000000000000ff0000000000000000000000000000000000000000
0000000000000000000000ffffffffffffffffffffffffffffffffffffffffff
0000000000000000000001000000000000000000000000000000000000000000
0000000000000000000001ffffffffffffffffffffffffffffffffffffffffff
0000000000000000000002000000000000000000000000000000000000000000
0000000000000000000003ffffffffffffffffffffffffffffffffffffffffff
0000000000000000000004000000000000000000000000000000000000000000
0000000000000000000007ffffffffffffffffffffffffffffffffffffffffff
0000000000000000000008000000000000000000000000000000000000000000
000000000000000000000fffffffffffffffffffffffffffffffffffffffffff
0000000000000000000010000000000000000000000000000000000000000000
000000000000000000001fffffffffffffffffffffffffffffffffffffffffff
0000000000000000000020000000000000000000000000000000000000000000
000000000000000000003fffffffffffffffffffffffffffffffffffffffffff
0000000000000000000040000000000000000000000000000000000000000000
000000000000000000007fffffffffffffffffffffffffffffffffffffffffff
0000000000000000000080000000000000000000000000000000000000000000
00000000000000000000ff000000000000000000000000000000000000000000
00000000000000000000ffffffffffffffffffffffffffffffffffffffffffff
0000000000000000000100000000000000000000000000000000000000000000
00000000000000000001ffffffffffffffffffffffffffffffffffffffffffff
0000000000000000000200000000000000000000000000000000000000000000
00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff
0000000000000000000400000000000000000000000000000000000000000000
00000000000000000007ffffffffffffffffffffffffffffffffffffffffffff
0000000000000000000800000000000000000000000000000000000000000000
0000000000000000000fffffffffffffffffffffffffffffffffffffffffffff
0000000000000000001000000000000000000000000000000000000000000000
0000000000000000001fffffffffffffffffffffffffffffffffffffffffffff
0000000000000000002000000000000000000000000000000000000000000000
0000000000000000003fffffffffffffffffffffffffffffffffffffffffffff
0000000000000000004000000000000000000000000000000000000000000000
0000000000000000007fffffffffffffffffffffffffffffffffffffffffffff
0000000000000000008000000000000000000000000000000000000000000000
000000000000000000ff00000000000000000000000000000000000000000000
000000000000000000ffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000010000000000000000000000000000000000000000000000
000000000000000001ffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000020000000000000000000000000000000000000000000000
000000000000000003ffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000040000000000000000000000000000000000000000000000
000000000000000007ffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000080000000000000000000000000000000000000000000000
00000000000000000fffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000100000000000000000000000000000000000000000000000
00000000000000001fffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000200000000000000000000000000000000000000000000000
00000000000000003fffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000400000000000000000000000000000000000000000000000
00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff
0000000000000000800000000000000000000000000000000000000000000000
0000000000000000ff0000000000000000000000000000000000000000000000
0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000001000000000000000000000000000000000000000000000000
0000000000000001ffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000002000000000000000000000000000000000000000000000000
0000000000000003ffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000004000000000000000000000000000000000000000000000000
0000000000000007ffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000008000000000000000000000000000000000000000000000000
000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000010000000000000000000000000000000000000000000000000
000000000000001fffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000020000000000000000000000000000000000000000000000000
000000000000003fffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000040000000000000000000000000000000000000000000000000
000000000000007fffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000080000000000000000000000000000000000000000000000000
00000000000000ff000000000000000000000000000000000000000000000000
00000000000000ffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000100000000000000000000000000000000000000000000000000
00000000000001ffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000200000000000000000000000000000000000000000000000000
00000000000003ffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000400000000000000000000000000000000000000000000000000
00000000000007ffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000000800000000000000000000000000000000000000000000000000
0000000000000fffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000001000000000000000000000000000000000000000000000000000
0000000000001fffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000002000000000000000000000000000000000000000000000000000
0000000000003fffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000004000000000000000000000000000000000000000000000000000
0000000000007fffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000008000000000000000000000000000000000000000000000000000
000000000000ff00000000000000000000000000000000000000000000000000
000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000010000000000000000000000000000000000000000000000000000
000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000020000000000000000000000000000000000000000000000000000
000000000003ffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000040000000000000000000000000000000000000000000000000000
000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000080000000000000000000000000000000000000000000000000000
00000000000fffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000100000000000000000000000000000000000000000000000000000
00000000001fffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000200000000000000000000000000000000000000000000000000000
00000000003fffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000400000000000000000000000000000000000000000000000000000
00000000007fffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000000800000000000000000000000000000000000000000000000000000
0000000000ff0000000000000000000000000000000000000000000000000000
0000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000001000000000000000000000000000000000000000000000000000000
0000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000002000000000000000000000000000000000000000000000000000000
0000000003ffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000004000000000000000000000000000000000000000000000000000000
0000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000008000000000000000000000000000000000000000000000000000000
000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000010000000000000000000000000000000000000000000000000000000
000000001fffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000020000000000000000000000000000000000000000000000000000000
000000003fffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000040000000000000000000000000000000000000000000000000000000
000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000080000000000000000000000000000000000000000000000000000000
00000000ff000000000000000000000000000000000000000000000000000000
00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000100000000000000000000000000000000000000000000000000000000
00000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000200000000000000000000000000000000000000000000000000000000
00000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000400000000000000000000000000000000000000000000000000000000
00000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000000800000000000000000000000000000000000000000000000000000000
0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000001000000000000000000000000000000000000000000000000000000000
0000001fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000002000000000000000000000000000000000000000000000000000000000
0000003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000004000000000000000000000000000000000000000000000000000000000
0000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000008000000000000000000000000000000000000000000000000000000000
000000ff00000000000000000000000000000000000000000000000000000000
000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000010000000000000000000000000000000000000000000000000000000000
000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000020000000000000000000000000000000000000000000000000000000000
000003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000040000000000000000000000000000000000000000000000000000000000
000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000080000000000000000000000000000000000000000000000000000000000
00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000100000000000000000000000000000000000000000000000000000000000
00001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000200000000000000000000000000000000000000000000000000000000000
00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000400000000000000000000000000000000000000000000000000000000000
00007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0000800000000000000000000000000000000000000000000000000000000000
0000ff0000000000000000000000000000000000000000000000000000000000
0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0001000000000000000000000000000000000000000000000000000000000000
0001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0002000000000000000000000000000000000000000000000000000000000000
0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0004000000000000000000000000000000000000000000000000000000000000
0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0008000000000000000000000000000000000000000000000000000000000000
000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0010000000000000000000000000000000000000000000000000000000000000
001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0020000000000000000000000000000000000000000000000000000000000000
003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0040000000000000000000000000000000000000000000000000000000000000
007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0080000000000000000000000000000000000000000000000000000000000000
00ff000000000000000000000000000000000000000000000000000000000000
00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0100000000000000000000000000000000000000000000000000000000000000
01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0200000000000000000000000000000000000000000000000000000000000000
03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0400000000000000000000000000000000000000000000000000000000000000
07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
0800000000000000000000000000000000000000000000000000000000000000
0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
1000000000000000000000000000000000000000000000000000000000000000
1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
2000000000000000000000000000000000000000000000000000000000000000
3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
4000000000000000000000000000000000000000000000000000000000000000
7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
8000000000000000000000000000000000000000000000000000000000000000
bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
c000000000000000000000000000000000000000000000000000000000000000
dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
e000000000000000000000000000000000000000000000000000000000000000
efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
f000000000000000000000000000000000000000000000000000000000000000
f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
f800000000000000000000000000000000000000000000000000000000000000
fbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fc00000000000000000000000000000000000000000000000000000000000000
fdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fe00000000000000000000000000000000000000000000000000000000000000
feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ff00000000000000000000000000000000000000000000000000000000000000
ff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ff80000000000000000000000000000000000000000000000000000000000000
ffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffc0000000000000000000000000000000000000000000000000000000000000
ffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffe0000000000000000000000000000000000000000000000000000000000000
ffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fff0000000000000000000000000000000000000000000000000000000000000
fff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fff8000000000000000000000000000000000000000000000000000000000000
fffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffc000000000000000000000000000000000000000000000000000000000000
fffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffe000000000000000000000000000000000000000000000000000000000000
fffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffff000000000000000000000000000000000000000000000000000000000000
ffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffff800000000000000000000000000000000000000000000000000000000000
ffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffc00000000000000000000000000000000000000000000000000000000000
ffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffe00000000000000000000000000000000000000000000000000000000000
ffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffff00000000000000000000000000000000000000000000000000000000000
fffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffff80000000000000000000000000000000000000000000000000000000000
fffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffc0000000000000000000000000000000000000000000000000000000000
fffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffe0000000000000000000000000000000000000000000000000000000000
fffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffff0000000000000000000000000000000000000000000000000000000000
ffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffff8000000000000000000000000000000000000000000000000000000000
ffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffc000000000000000000000000000000000000000000000000000000000
ffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffe000000000000000000000000000000000000000000000000000000000
ffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffff000000000000000000000000000000000000000000000000000000000
fffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffff800000000000000000000000000000000000000000000000000000000
fffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffc00000000000000000000000000000000000000000000000000000000
fffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffe00000000000000000000000000000000000000000000000000000000
fffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffff00000000000000000000000000000000000000000000000000000000
ffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffff80000000000000000000000000000000000000000000000000000000
ffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffc0000000000000000000000000000000000000000000000000000000
ffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffe0000000000000000000000000000000000000000000000000000000
ffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffff0000000000000000000000000000000000000000000000000000000
fffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffff8000000000000000000000000000000000000000000000000000000
fffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffc000000000000000000000000000000000000000000000000000000
fffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffe000000000000000000000000000000000000000000000000000000
fffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffff000000000000000000000000000000000000000000000000000000
ffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffff800000000000000000000000000000000000000000000000000000
ffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffc00000000000000000000000000000000000000000000000000000
ffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffe00000000000000000000000000000000000000000000000000000
ffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffff00000000000000000000000000000000000000000000000000000
fffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffff80000000000000000000000000000000000000000000000000000
fffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffc0000000000000000000000000000000000000000000000000000
fffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffe0000000000000000000000000000000000000000000000000000
fffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffff0000000000000000000000000000000000000000000000000000
ffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffff8000000000000000000000000000000000000000000000000000
ffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffc000000000000000000000000000000000000000000000000000
ffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffe000000000000000000000000000000000000000000000000000
ffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffff000000000000000000000000000000000000000000000000000
fffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffff800000000000000000000000000000000000000000000000000
fffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffc00000000000000000000000000000000000000000000000000
fffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffe00000000000000000000000000000000000000000000000000
fffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffff00000000000000000000000000000000000000000000000000
ffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffff80000000000000000000000000000000000000000000000000
ffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffc0000000000000000000000000000000000000000000000000
ffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffe0000000000000000000000000000000000000000000000000
ffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffff0000000000000000000000000000000000000000000000000
fffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffff8000000000000000000000000000000000000000000000000
fffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffc000000000000000000000000000000000000000000000000
fffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffe000000000000000000000000000000000000000000000000
fffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffff000000000000000000000000000000000000000000000000
ffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffff800000000000000000000000000000000000000000000000
ffffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffc00000000000000000000000000000000000000000000000
ffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffe00000000000000000000000000000000000000000000000
ffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffff00000000000000000000000000000000000000000000000
fffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffff80000000000000000000000000000000000000000000000
fffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffc0000000000000000000000000000000000000000000000
fffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffe0000000000000000000000000000000000000000000000
fffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffff0000000000000000000000000000000000000000000000
ffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffff8000000000000000000000000000000000000000000000
ffffffffffffffffffbfffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffc000000000000000000000000000000000000000000000
ffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffe000000000000000000000000000000000000000000000
ffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffff000000000000000000000000000000000000000000000
fffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffff800000000000000000000000000000000000000000000
fffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffc00000000000000000000000000000000000000000000
fffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffe00000000000000000000000000000000000000000000
fffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffff00000000000000000000000000000000000000000000
ffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffff80000000000000000000000000000000000000000000
ffffffffffffffffffffbfffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffc0000000000000000000000000000000000000000000
ffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffe0000000000000000000000000000000000000000000
ffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffff0000000000000000000000000000000000000000000
fffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffff8000000000000000000000000000000000000000000
fffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffc000000000000000000000000000000000000000000
fffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffe000000000000000000000000000000000000000000
fffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffff000000000000000000000000000000000000000000
ffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffff800000000000000000000000000000000000000000
ffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffc00000000000000000000000000000000000000000
ffffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffe00000000000000000000000000000000000000000
ffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffff00000000000000000000000000000000000000000
fffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffff80000000000000000000000000000000000000000
fffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffc0000000000000000000000000000000000000000
fffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffe0000000000000000000000000000000000000000
fffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffff0000000000000000000000000000000000000000
ffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffff8000000000000000000000000000000000000000
ffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffc000000000000000000000000000000000000000
ffffffffffffffffffffffffdfffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffe000000000000000000000000000000000000000
ffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffff000000000000000000000000000000000000000
fffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffff800000000000000000000000000000000000000
fffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffc00000000000000000000000000000000000000
fffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffe00000000000000000000000000000000000000
fffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffff00000000000000000000000000000000000000
ffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffff80000000000000000000000000000000000000
ffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffc0000000000000000000000000000000000000
ffffffffffffffffffffffffffdfffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffe0000000000000000000000000000000000000
ffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffff0000000000000000000000000000000000000
fffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffff8000000000000000000000000000000000000
fffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffc000000000000000000000000000000000000
fffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffe000000000000000000000000000000000000
fffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffff000000000000000000000000000000000000
ffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffff800000000000000000000000000000000000
ffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffc00000000000000000000000000000000000
ffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffe00000000000000000000000000000000000
ffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffff00000000000000000000000000000000000
fffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffff80000000000000000000000000000000000
fffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffc0000000000000000000000000000000000
fffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffe0000000000000000000000000000000000
fffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffff0000000000000000000000000000000000
ffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffff8000000000000000000000000000000000
ffffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffc000000000000000000000000000000000
ffffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffe000000000000000000000000000000000
ffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffff000000000000000000000000000000000
fffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffff800000000000000000000000000000000
fffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffc00000000000000000000000000000000
fffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffe00000000000000000000000000000000
fffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff00000000000000000000000000000000
ffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff80000000000000000000000000000000
ffffffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffc0000000000000000000000000000000
ffffffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffe0000000000000000000000000000000
ffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffff0000000000000000000000000000000
fffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffff8000000000000000000000000000000
fffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffc000000000000000000000000000000
fffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffe000000000000000000000000000000
fffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffff000000000000000000000000000000
ffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffff800000000000000000000000000000
ffffffffffffffffffffffffffffffffffbfffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffc00000000000000000000000000000
ffffffffffffffffffffffffffffffffffdfffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffe00000000000000000000000000000
ffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffff00000000000000000000000000000
fffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffff80000000000000000000000000000
fffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffc0000000000000000000000000000
fffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffe0000000000000000000000000000
fffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffff0000000000000000000000000000
ffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffff8000000000000000000000000000
ffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffc000000000000000000000000000
ffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffe000000000000000000000000000
ffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffff000000000000000000000000000
fffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffff800000000000000000000000000
fffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffc00000000000000000000000000
fffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffe00000000000000000000000000
fffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffff00000000000000000000000000
ffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffff80000000000000000000000000
ffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffc0000000000000000000000000
ffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffe0000000000000000000000000
ffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffff0000000000000000000000000
fffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffff8000000000000000000000000
fffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffc000000000000000000000000
fffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffe000000000000000000000000
fffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffff000000000000000000000000
ffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffff800000000000000000000000
ffffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffc00000000000000000000000
ffffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffe00000000000000000000000
ffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffff00000000000000000000000
fffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffff80000000000000000000000
fffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffc0000000000000000000000
fffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffe0000000000000000000000
fffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffff0000000000000000000000
ffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffff8000000000000000000000
ffffffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffc000000000000000000000
ffffffffffffffffffffffffffffffffffffffffffdfffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffe000000000000000000000
ffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffff000000000000000000000
fffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffff800000000000000000000
fffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffc00000000000000000000
fffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffe00000000000000000000
fffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffff00000000000000000000
ffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffff80000000000000000000
ffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffc0000000000000000000
ffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000
ffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000
fffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffff8000000000000000000
fffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffc000000000000000000
fffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffe000000000000000000
fffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffff000000000000000000
ffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffff800000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000
fffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffff80000000000000000
fffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffc0000000000000000
fffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000
fffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffff8000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffdfffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000
fffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffff800000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffff800000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffff800000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdf
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
tinyssh-20180201/crypto-tests/precomp_curve25519.data 0000664 0000000 0000000 00000534030 13227043065 0022253 0 ustar 00root root 0000000 0000000 { 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0xfd,0x33,0x84,0xe1,0x32,0xad,0x02,0xa5,0x6c,0x78,0xf4,0x55,0x47,0xee,0x40,0x03,0x8d,0xc7,0x90,0x02,0xb9,0x0d,0x29,0xed,0x90,0xe0,0x8e,0xee,0x76,0x2a,0xe7,0x15 },
{ 0xad,0x8c,0x48,0xc2,0x67,0x65,0xae,0xa7,0xad,0xc5,0x36,0x28,0x96,0x05,0xc1,0xab,0xea,0x95,0x05,0x00,0x93,0xdb,0xd2,0x18,0xc9,0x6a,0xbd,0x24,0x81,0xa0,0x35,0x65 },
{ 0x99,0x52,0xfb,0x7e,0x53,0x83,0xc5,0x22,0xc9,0x54,0xde,0x94,0xf2,0xe4,0x62,0x0d,0x3e,0x08,0xcd,0x9e,0x72,0x48,0xad,0x23,0x20,0x7f,0x9e,0xf5,0x5c,0x90,0x41,0x44 },
{ 0xec,0x13,0xd2,0x3a,0x17,0xda,0xf1,0x74,0x75,0x0d,0xf7,0xad,0x67,0xa8,0x6a,0x1d,0x4e,0xab,0xec,0x8f,0x51,0x76,0x36,0x60,0x52,0x81,0xc1,0xdb,0x18,0xc6,0x66,0x49 },
{ 0xf6,0x03,0x1b,0xd7,0x59,0x63,0x23,0xfa,0x54,0x00,0x41,0xbd,0x3a,0x63,0x51,0x33,0xe7,0x28,0x78,0x49,0x3e,0x76,0x20,0x04,0x88,0x75,0x88,0x7b,0xdc,0x8b,0x99,0x07 },
{ 0x0b,0xc6,0x8f,0x68,0x72,0x17,0x2f,0x9d,0xa9,0xc3,0x5b,0xe0,0x82,0x76,0xa6,0x36,0xa8,0x04,0x9d,0x44,0x26,0xdc,0xb5,0x06,0x7c,0x56,0xb8,0x11,0x38,0x50,0x4d,0x6a },
{ 0x76,0x46,0x27,0xe0,0x18,0x48,0xbd,0x9c,0x38,0xd4,0x3d,0x7a,0xe4,0x2d,0x32,0x33,0x73,0x27,0x51,0x4a,0xeb,0x5f,0x00,0x00,0x63,0xbb,0x1f,0x5b,0xb9,0xfd,0x9b,0x75 },
{ 0x2a,0xe1,0x19,0xbc,0x7b,0x59,0x49,0x5c,0x8c,0xc1,0x9e,0xfb,0xed,0xfe,0x6f,0x00,0xbb,0xc1,0x0e,0x7d,0x99,0x08,0xd1,0x02,0xa4,0x09,0x44,0xa9,0x44,0xfa,0xa3,0x6e },
{ 0xce,0x08,0x10,0xb0,0x5f,0x29,0xc1,0x67,0x20,0x9e,0xd7,0x6c,0x96,0x8d,0xd5,0x9d,0xe5,0x6e,0x4b,0x1c,0x9e,0xd4,0x70,0x52,0xfb,0x96,0x7b,0xff,0x94,0x31,0x45,0x1d },
{ 0xf3,0x5c,0xa9,0x9a,0xe0,0x11,0x19,0x80,0xc5,0x50,0xe3,0x7d,0xef,0xef,0xc7,0x68,0x5b,0xa1,0x24,0x14,0x38,0x31,0x47,0x06,0x86,0x77,0xf7,0x7d,0xd0,0x78,0x0c,0x52 },
{ 0xad,0xea,0xff,0xf5,0xd8,0x78,0x56,0x59,0x33,0x15,0xc0,0x48,0x41,0x78,0xe8,0xd1,0xc4,0x77,0x7a,0x2a,0xb1,0x6e,0xa1,0x71,0x7a,0x7e,0x2f,0x20,0x99,0x2e,0x9b,0x2c },
{ 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0xad,0xea,0xff,0xf5,0xd8,0x78,0x56,0x59,0x33,0x15,0xc0,0x48,0x41,0x78,0xe8,0xd1,0xc4,0x77,0x7a,0x2a,0xb1,0x6e,0xa1,0x71,0x7a,0x7e,0x2f,0x20,0x99,0x2e,0x9b,0x2c },
{ 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0xad,0xea,0xff,0xf5,0xd8,0x78,0x56,0x59,0x33,0x15,0xc0,0x48,0x41,0x78,0xe8,0xd1,0xc4,0x77,0x7a,0x2a,0xb1,0x6e,0xa1,0x71,0x7a,0x7e,0x2f,0x20,0x99,0x2e,0x9b,0x2c },
{ 0xdc,0xac,0x46,0xcd,0xb9,0xc2,0xb9,0xe9,0x34,0x84,0x04,0x27,0x53,0x8a,0x05,0x75,0xae,0x42,0x1d,0xbb,0x85,0x76,0x47,0xaa,0xcf,0x07,0x57,0x65,0xf0,0xae,0x64,0x43 },
{ 0xb7,0x22,0x15,0xf0,0x6c,0xf3,0x55,0xf6,0xd1,0x42,0xd7,0x68,0xbc,0xc7,0x85,0x1e,0x0b,0x41,0x84,0xb3,0x69,0x9d,0x64,0x9c,0x20,0xfe,0xaa,0x8b,0x26,0x7c,0xf1,0x49 },
{ 0x80,0xee,0xdc,0x7d,0x50,0x6a,0x6f,0x89,0x10,0x5c,0x9e,0xb8,0x25,0x83,0x11,0x4a,0x31,0x60,0x04,0x35,0xda,0xd3,0xe8,0x42,0x16,0xdb,0x2c,0x31,0x6a,0xdd,0xe2,0x56 },
{ 0x0b,0xbb,0xb5,0x7a,0xb3,0xba,0xe0,0x9e,0x3c,0x7e,0x0f,0xc9,0x78,0xc7,0xf7,0xb3,0x90,0x94,0xd0,0x69,0x25,0x5c,0xc5,0x66,0xf5,0xb4,0x85,0x36,0x54,0xe0,0x02,0x2b },
{ 0x83,0x4d,0xdf,0x49,0x28,0xff,0xc8,0x79,0x46,0xfa,0x61,0xf2,0x99,0x90,0x90,0x81,0x1a,0x34,0x14,0x45,0xf7,0xa4,0xdf,0x47,0x9d,0x03,0xc6,0xe5,0x84,0xd1,0x43,0x1c },
{ 0xbf,0xa8,0xbf,0x95,0xbe,0xfd,0x36,0x2f,0x42,0xc4,0xa0,0x81,0x24,0xdb,0xcb,0x35,0x01,0xeb,0xd6,0xcc,0x65,0x01,0x7e,0xf9,0x83,0x2a,0x2c,0x4b,0x86,0xa8,0xbc,0x10 },
{ 0xba,0x11,0xd6,0xc0,0xad,0x11,0x75,0xf7,0xfe,0x4c,0xf0,0x94,0xfc,0xd9,0x62,0xd3,0x7c,0xb0,0x79,0x09,0x8c,0x9f,0xd6,0x6f,0xfc,0x9a,0xcc,0xdc,0xf9,0xaa,0x71,0x70 },
{ 0x7e,0xbc,0x10,0x2a,0xc2,0x33,0x7a,0x7f,0x95,0x2d,0x5b,0x73,0xee,0xfd,0xd9,0x22,0x3b,0x5d,0x94,0x83,0xd0,0xe2,0x13,0xf9,0xa8,0xfc,0x2f,0x94,0x0e,0x30,0x26,0x23 },
{ 0x39,0x86,0xec,0x1f,0x57,0xae,0x8d,0xfc,0x40,0xb9,0x00,0xaa,0x59,0xb0,0x38,0x52,0x98,0xa6,0x63,0x7a,0xdd,0x35,0xef,0x52,0x1b,0x74,0x68,0xb0,0xff,0x38,0x16,0x49 },
{ 0x0e,0x1d,0x6f,0x15,0xfb,0x3b,0x4d,0xc4,0xb4,0xf9,0x8d,0xe1,0x9e,0xac,0xca,0x65,0xa4,0xc0,0x8f,0x7e,0xd7,0x43,0xfa,0xb0,0x49,0xb2,0x84,0xec,0x06,0xd2,0xc3,0x3c },
{ 0xee,0x0a,0xf8,0x9e,0x9a,0xdb,0xbd,0xde,0xc2,0x71,0x3f,0x2f,0xbc,0xf8,0x08,0x33,0x58,0x33,0x1f,0x96,0x3f,0x50,0xe8,0x6f,0x7a,0xbd,0x89,0x67,0x06,0xc2,0x96,0x50 },
{ 0xce,0x12,0x7b,0x99,0x3d,0xec,0x3c,0xfb,0xa5,0x45,0xf6,0x94,0x2c,0xd5,0x19,0x20,0x1c,0x1b,0x95,0x99,0xaf,0x10,0xa7,0x1a,0x59,0x1a,0xb8,0xd8,0xbe,0xb6,0x15,0x5b },
{ 0x28,0x09,0xed,0x72,0x48,0xa6,0x99,0xd7,0x39,0xe2,0xcb,0x8a,0x8b,0xec,0xb7,0xc6,0x7b,0x2a,0xfa,0x93,0x3c,0x7b,0x12,0x28,0x10,0x26,0x3b,0x9a,0xdc,0x75,0xac,0x09 },
{ 0x9f,0xae,0x13,0x65,0x29,0x1e,0xf8,0xc2,0x66,0x2b,0xfb,0x7f,0x8f,0x30,0xf0,0x8d,0x73,0x74,0xb2,0xcf,0xaf,0xea,0xc9,0xcb,0x94,0x6c,0xc9,0x3a,0x1a,0xb9,0x98,0x68 },
{ 0x11,0x73,0xce,0xf0,0x59,0x9a,0xe1,0x20,0xde,0x0d,0x18,0x06,0x90,0xab,0x49,0x90,0x56,0x7c,0x41,0x51,0xbe,0x47,0xd9,0x69,0xac,0x84,0xed,0xc2,0x6c,0x15,0xf2,0x61 },
{ 0x11,0xb6,0x23,0xd5,0xf6,0xb9,0x9b,0xc5,0xf2,0x3b,0x4d,0x87,0x19,0x0c,0xec,0x89,0xc2,0xfc,0x6d,0x57,0x41,0x89,0x9e,0x9d,0xc7,0x89,0x6a,0x9d,0x77,0x7e,0x67,0x35 },
{ 0xb1,0xe8,0x23,0x6b,0x63,0x1e,0x19,0xd8,0x6b,0x28,0xa6,0xff,0x4d,0x5f,0x4b,0x39,0xd4,0x1e,0xdd,0xf4,0x7a,0xb7,0xd3,0xa9,0x57,0x95,0x06,0xde,0xc3,0xda,0x27,0x2a },
{ 0x29,0x6d,0x79,0x1b,0x69,0x24,0xe5,0x41,0x1d,0xb5,0xbe,0xe0,0x3d,0x97,0xa1,0x76,0xe6,0x24,0x1f,0x23,0x8a,0xe3,0x53,0xa8,0x1b,0xe0,0xbb,0xcd,0x74,0x9f,0x34,0x21 },
{ 0x88,0xa6,0x21,0x6b,0x63,0x71,0x04,0xa2,0x66,0xef,0xb1,0x3f,0x6f,0xee,0xfa,0xa1,0xd3,0xce,0x75,0x86,0xff,0xc9,0xb3,0x8c,0xf8,0x42,0xca,0x0f,0x83,0x02,0xaa,0x50 },
{ 0xdc,0x73,0x4f,0xf9,0xf9,0xee,0x7f,0x52,0x33,0x48,0x18,0xfd,0x49,0x45,0x65,0xea,0xb7,0x31,0xaf,0x79,0xdc,0xfb,0x47,0x72,0x65,0x2a,0xc8,0x18,0x3f,0x6b,0x34,0x76 },
{ 0x94,0xc6,0xae,0xa0,0x73,0xdb,0x2e,0x35,0x24,0x25,0x3c,0x1a,0x2f,0x71,0x5f,0x65,0x43,0xd0,0xb2,0x6d,0x1a,0x85,0x39,0x4d,0x0b,0xd9,0xcf,0x2e,0xbf,0xc4,0x77,0x27 },
{ 0xb3,0x8d,0x0f,0xa4,0x0a,0x6a,0x90,0x78,0x85,0x94,0xec,0x6d,0xbd,0x56,0xf5,0x37,0x39,0xe0,0xc3,0xdc,0xb2,0xd8,0x80,0x30,0x03,0x85,0xfb,0x86,0x91,0x1c,0x95,0x2c },
{ 0xd6,0xc8,0x42,0x69,0xe4,0xb0,0x77,0x1d,0x1b,0xb4,0x45,0x74,0xcd,0xee,0xbf,0x00,0x7a,0x3b,0xab,0xe0,0x2a,0xfb,0x9f,0x4b,0x5e,0xa3,0xd0,0x16,0x09,0x80,0xe1,0x03 },
{ 0x89,0x74,0xb4,0xa0,0x88,0xf1,0x10,0xe4,0x85,0xcc,0x9e,0x0b,0x5e,0x8e,0xab,0xc3,0x39,0x26,0xc7,0x00,0x7b,0x18,0xef,0xd0,0xc4,0xc4,0xcb,0x4e,0xdf,0x16,0xc6,0x35 },
{ 0x26,0xc6,0x66,0x4f,0x0f,0x9a,0xb9,0x49,0x12,0x39,0x83,0x88,0x15,0x4f,0xaf,0xd4,0xe5,0x5c,0x9f,0xbc,0xfe,0x94,0x77,0x29,0x13,0xcd,0x03,0xee,0x64,0xbf,0xe3,0x57 },
{ 0x46,0xaa,0xa2,0x16,0xd4,0x9f,0x74,0x7c,0xdf,0x29,0x4c,0xa8,0x64,0x09,0xb5,0x83,0x69,0xc6,0xd2,0x3b,0x7e,0xec,0x2b,0x12,0x3d,0x13,0x30,0xa6,0x33,0x20,0xe4,0x36 },
{ 0x05,0x79,0x56,0x30,0x04,0x27,0x4d,0xc0,0xbd,0x8a,0xde,0x46,0x5f,0xf9,0xae,0x9d,0x23,0x61,0x7e,0x67,0xa9,0xb4,0xbe,0x0d,0xd4,0x97,0xa6,0x4a,0xfc,0x04,0xc2,0x65 },
{ 0x48,0x28,0x2a,0xf7,0xe3,0x92,0x34,0xdb,0x40,0xb8,0x2c,0x62,0x2b,0xb9,0xfe,0x31,0x3b,0xc0,0x0f,0x60,0x61,0xdb,0x48,0x14,0x49,0x77,0x6f,0x62,0x97,0x67,0x0c,0x31 },
{ 0x4e,0x8b,0x52,0x0f,0xdf,0x4a,0xdc,0x43,0x6f,0x12,0xbb,0x12,0x1d,0xcb,0x20,0x44,0x3e,0xc3,0x30,0x81,0x7b,0xba,0x31,0xfe,0x7e,0x25,0xaa,0x88,0x7c,0x78,0x8c,0x3a },
{ 0xdd,0xf2,0xe7,0x31,0xe7,0x3c,0x26,0xbb,0xee,0x76,0xc7,0x32,0xfb,0x89,0x94,0xf7,0x60,0x72,0xf5,0x48,0x8b,0x9b,0x34,0x18,0x69,0x86,0xe2,0x3a,0xe5,0xb8,0x12,0x58 },
{ 0xa4,0xe4,0x68,0x6a,0xd2,0x86,0xa7,0x4a,0xe8,0xcd,0x5f,0x96,0x28,0xf0,0x45,0x3f,0x58,0xf9,0x5e,0x08,0x6a,0xe6,0x00,0xbc,0xba,0x2f,0x76,0x10,0x9b,0xad,0x07,0x46 },
{ 0xf7,0x53,0x8e,0xb1,0xaa,0xbf,0xba,0x8c,0xa3,0x1c,0x0e,0x63,0x60,0x9f,0x9b,0x54,0x56,0x6f,0xda,0x68,0x19,0xb1,0x2d,0xb5,0x8e,0x4e,0x82,0xce,0xc3,0x79,0x44,0x5d },
{ 0x02,0x75,0x91,0x27,0x08,0x9c,0x40,0xe1,0xf2,0x7c,0xde,0xa7,0xbe,0x8d,0xb0,0xa5,0xda,0x4f,0x00,0x3c,0x6a,0x8d,0x95,0x5d,0x91,0xeb,0x16,0xcb,0xbf,0x97,0x21,0x3d },
{ 0xba,0xa1,0x40,0x3f,0x9d,0xa4,0xac,0xa2,0x4e,0x31,0xb0,0x53,0x10,0x1c,0x0a,0x8e,0x63,0x2b,0xf2,0x23,0x0e,0x5d,0x2a,0x2a,0x7c,0x37,0x97,0xac,0x56,0x31,0x36,0x0f },
{ 0x1b,0xf6,0xbf,0x46,0xc7,0x04,0x26,0xa1,0x23,0xbf,0x3e,0xfe,0x06,0x02,0xd8,0x40,0x32,0x53,0xeb,0x84,0xff,0xa0,0x94,0x54,0x78,0xa0,0x83,0xd5,0xef,0xb5,0x26,0x7c },
{ 0xe6,0xe3,0x9f,0x90,0x59,0x46,0xf1,0xd6,0x30,0x53,0x9b,0xb1,0xb3,0x3f,0x70,0x52,0x69,0x2a,0x44,0x5a,0xe8,0x92,0xea,0xf3,0x67,0x32,0xde,0x2a,0x33,0x66,0x9b,0x47 },
{ 0x99,0x11,0x0e,0x20,0xf7,0x6a,0x53,0xd4,0xfa,0xc1,0x97,0xa7,0x20,0x8a,0x6c,0xc7,0xd4,0xe7,0x61,0x11,0xfe,0xfc,0x68,0x84,0x01,0x69,0x72,0x2e,0x54,0x9b,0xd0,0x31 },
{ 0x97,0xd2,0x1b,0x14,0x25,0x1d,0x43,0x0e,0x49,0xb6,0x63,0xa7,0x1d,0xf0,0x2d,0xd8,0xb7,0x31,0x54,0x14,0x13,0xdb,0x62,0x43,0x27,0x3e,0xbd,0xf0,0x01,0x61,0xa6,0x70 },
{ 0xdd,0x16,0x8d,0x2f,0x34,0x42,0x74,0xaf,0x50,0x07,0x83,0xbc,0x3d,0x9f,0x91,0x59,0xde,0xd0,0x86,0x48,0x27,0x7c,0x0a,0x4a,0xb2,0x76,0xe6,0x25,0xe5,0x90,0xde,0x55 },
{ 0xe4,0xee,0xc7,0xe7,0x58,0x95,0x5b,0xb8,0x0d,0x43,0xe2,0xf2,0x3e,0x64,0xa8,0xe2,0x06,0xa6,0x64,0xd4,0x4c,0x09,0xea,0x72,0x9f,0x48,0x50,0xa2,0x72,0x9a,0x02,0x20 },
{ 0x84,0xcd,0x2c,0xf9,0xcc,0x1a,0x4f,0x1c,0x97,0x8e,0xa9,0x2e,0x0c,0x4b,0x23,0xe2,0x3c,0x84,0x21,0xa7,0x78,0x98,0x1f,0x4a,0x72,0x41,0xd1,0x4e,0x83,0x63,0xd1,0x7b },
{ 0xb9,0xd9,0x05,0xef,0xf5,0x1a,0xf1,0xba,0x11,0x21,0x36,0xf8,0x06,0x38,0xb9,0xb9,0xfb,0x2f,0x44,0xd9,0xf4,0x09,0x19,0x9a,0xeb,0xb6,0xd4,0xd3,0x18,0x40,0x97,0x77 },
{ 0x0f,0x34,0x6e,0x25,0xa5,0x1e,0x73,0x9b,0x98,0x04,0xb7,0xcb,0x27,0xfb,0x16,0xfb,0xcf,0x74,0xb5,0x90,0x2f,0xf2,0x1a,0xe8,0xff,0x63,0x1b,0x29,0x9d,0xe8,0x8a,0x7f },
{ 0x5a,0xf4,0xcd,0xd7,0x50,0xab,0x46,0x03,0xdc,0x53,0xad,0xf5,0xb8,0x17,0x5e,0x33,0xf3,0xe5,0xa8,0x7b,0x27,0x62,0x90,0x6d,0x5d,0xaf,0x4b,0x2f,0x71,0xd3,0xb7,0x4f },
{ 0xaf,0x1d,0xf4,0xeb,0x33,0x45,0xf8,0x75,0x48,0x1d,0x30,0x80,0xf8,0x1c,0x93,0x67,0xf7,0x3a,0x84,0x21,0xa0,0xbb,0x4a,0x22,0x66,0x43,0x44,0x8a,0xa9,0xa5,0xef,0x09 },
{ 0xde,0x5b,0x8d,0x4e,0x61,0x24,0x30,0xc8,0xfc,0xd9,0xe2,0xbc,0xa4,0x89,0x32,0xc7,0x9f,0x11,0x05,0x00,0xc0,0x5a,0x68,0x77,0x36,0x23,0x63,0x50,0x1e,0x10,0x07,0x6b },
{ 0x17,0x45,0x2b,0xfb,0xae,0x2c,0x81,0xff,0x0b,0xaf,0x6b,0xaf,0xcd,0x6d,0xd6,0xf4,0x96,0x43,0x7c,0x34,0x43,0xf5,0xeb,0x16,0x98,0x2a,0xb3,0xec,0xb5,0xd2,0x94,0x46 },
{ 0x30,0x95,0xa9,0x14,0x0d,0x84,0xad,0xee,0x88,0x77,0x95,0xf6,0x96,0x6a,0xa9,0x90,0xc3,0xed,0xca,0xbb,0x65,0x8f,0xd4,0xd2,0x17,0xba,0x86,0x33,0x6c,0x99,0x9a,0x30 },
{ 0x70,0x24,0x40,0x73,0x33,0x0a,0xe9,0x47,0x65,0xe1,0x6c,0xda,0xb7,0x0c,0x0b,0x94,0x4c,0x12,0x12,0xe9,0x16,0x88,0x56,0x64,0xca,0xbb,0x18,0x41,0x99,0xda,0xbc,0x29 },
{ 0xf7,0x9c,0xce,0xc7,0x5d,0x66,0xa5,0x6e,0x4e,0xd6,0x30,0x1b,0x63,0x7e,0xb4,0x49,0xee,0x01,0xa6,0x65,0xdd,0x2c,0x78,0xf8,0xd4,0x3e,0x37,0x9f,0xce,0x65,0xe0,0x34 },
{ 0xb1,0xc4,0x94,0xd9,0x2e,0x93,0x33,0x6e,0x8b,0xab,0xda,0x55,0x58,0xf1,0x1b,0x8b,0x83,0x2c,0x93,0xb6,0x8f,0xb8,0xa6,0x91,0x8c,0x8f,0x0b,0x86,0xc1,0xe8,0x85,0x1d },
{ 0xe9,0x1c,0x16,0x22,0x39,0xb1,0xd2,0x1f,0x70,0xd9,0x81,0x43,0xac,0x9b,0xa1,0x5d,0xbd,0x8d,0xe0,0x89,0xba,0x24,0x8f,0xbf,0x45,0xee,0xe5,0x2c,0xfe,0xe0,0xc2,0x2b },
{ 0x89,0xfa,0xb4,0x3f,0xc4,0x56,0xea,0x75,0x14,0x96,0x4e,0x79,0x4c,0x01,0x16,0xd7,0x55,0x35,0xf0,0xb3,0xfb,0xc6,0xdf,0x61,0xb5,0xbf,0x07,0xa5,0xc4,0x76,0x5e,0x05 },
{ 0xed,0x0d,0xe3,0x31,0x92,0xf9,0x11,0x0a,0xb2,0xed,0x5d,0x8d,0x96,0xfc,0x1e,0x53,0x5b,0xb2,0xc5,0xd1,0x6f,0x60,0xdd,0xc6,0x1c,0xfe,0xef,0xf8,0x9b,0x8d,0x79,0x17 },
{ 0x40,0x1c,0x21,0x1c,0xda,0xb2,0x81,0x57,0x4c,0xe7,0xe7,0x6c,0xde,0x69,0x71,0x8b,0x0a,0x23,0xbb,0x39,0xd8,0x99,0x12,0x4e,0xb8,0xdf,0x09,0x4e,0xe8,0x95,0x2e,0x57 },
{ 0xc8,0xb3,0xa6,0xee,0x15,0xb2,0x9a,0x62,0xe3,0xcd,0xd5,0x3f,0xb9,0x4c,0x6f,0x06,0x79,0x1f,0xff,0x21,0xa4,0x36,0xb6,0xdb,0x52,0x88,0x0f,0x1b,0x68,0x24,0x69,0x3c },
{ 0x2f,0x1e,0xf0,0x78,0x2d,0x60,0x8b,0x6d,0x99,0x07,0xac,0x6b,0x53,0x3d,0x5e,0x0c,0x92,0x03,0x02,0xe1,0x02,0xd0,0x68,0xe0,0xac,0xb6,0x27,0x60,0x2c,0xaa,0x3b,0x71 },
{ 0x4c,0x8d,0x11,0xca,0xea,0x52,0xe8,0xdf,0x4f,0xa8,0x6b,0x39,0xc7,0xd4,0x20,0xa8,0xb3,0xd4,0x60,0x8d,0x50,0x15,0xb3,0x82,0x34,0xcb,0x38,0xa4,0xd3,0x84,0x0e,0x2d },
{ 0xc7,0x19,0x36,0xf3,0x78,0xc8,0xb8,0xa0,0x52,0x1f,0x4a,0xc2,0x30,0x99,0x9e,0x18,0x56,0x16,0xdd,0xaf,0x46,0x37,0x99,0xde,0xce,0x6b,0x85,0xaa,0x1c,0x80,0x3d,0x35 },
{ 0x07,0x01,0x88,0xfe,0xc1,0xe6,0xc3,0x12,0xa6,0x6e,0x97,0x96,0x4c,0xd4,0x98,0x10,0x84,0xd3,0x97,0xe3,0x83,0x21,0xbe,0x75,0x10,0x50,0x9f,0xf9,0x10,0x31,0xe7,0x3b },
{ 0x72,0xef,0x9f,0x61,0x99,0x60,0x1f,0x5a,0x3d,0x2d,0x0b,0x7f,0x71,0x25,0xcf,0x30,0xd3,0x23,0xbd,0x3e,0xc7,0x3e,0xe1,0x67,0xcf,0x66,0x17,0xf4,0xf0,0x06,0xd9,0x55 },
{ 0x09,0x96,0x30,0xa6,0x3c,0xfc,0x6c,0x53,0xb6,0x02,0xb7,0xbd,0xa5,0x97,0x28,0xbc,0x43,0xac,0x65,0x85,0xcc,0x56,0x4d,0x0b,0x62,0xb5,0xf0,0xaf,0x8b,0xe9,0x67,0x15 },
{ 0xda,0x50,0x19,0xcc,0x8f,0x78,0x64,0xbd,0x1c,0xaa,0xb6,0xa7,0xc0,0xb8,0xd4,0xcb,0x6d,0xe6,0xc8,0x1f,0xd7,0x67,0x04,0x08,0xd1,0xe7,0xf6,0x9a,0xbd,0xf1,0xde,0x15 },
{ 0xfa,0xbc,0xaa,0xef,0x7c,0xeb,0xfc,0xa7,0x4d,0xf1,0x89,0xed,0x7e,0xd4,0x4a,0xe9,0x7a,0xfb,0xb3,0x91,0xbd,0xf2,0xed,0xd4,0x3f,0xdc,0x7f,0x19,0xa0,0x5f,0x3f,0x0d },
{ 0xdb,0x26,0x78,0xcd,0xc3,0x31,0xc1,0x74,0x65,0x9c,0xea,0x36,0x5b,0x0a,0xa6,0x02,0xcb,0x79,0xe8,0x30,0x83,0xb0,0x89,0x1b,0xc8,0x1a,0x87,0x92,0x78,0x53,0xcf,0x35 },
{ 0x45,0x46,0x47,0x0d,0x8e,0x5a,0x50,0xf8,0x3c,0x69,0x80,0xf5,0x23,0x34,0x58,0x12,0x52,0x7f,0x0d,0xbf,0xf1,0x34,0x34,0x75,0x97,0xf9,0x02,0x9f,0xec,0x47,0xf9,0x30 },
{ 0xd1,0xeb,0x0d,0x89,0x7f,0x2d,0x4e,0xcb,0xc6,0x1c,0xc4,0x84,0x4e,0xe8,0xb3,0xe0,0x15,0xe7,0x48,0x8d,0x96,0xa5,0xd1,0x28,0x60,0xbf,0x22,0xe7,0xd9,0x8c,0x61,0x78 },
{ 0x0b,0xc0,0x3a,0xf2,0x3d,0x79,0x20,0xc3,0xa2,0x1e,0xe4,0x96,0xcc,0x02,0xf9,0x7e,0x20,0x7a,0x60,0xba,0x63,0x3e,0x51,0x8b,0x69,0xdd,0x51,0xf4,0x31,0xe7,0xde,0x28 },
{ 0x68,0x25,0x64,0x37,0x26,0xb6,0x71,0xaa,0xfd,0x80,0xf8,0x72,0xaf,0xbb,0xd6,0x34,0xf8,0xce,0x19,0x57,0x6b,0xba,0x3e,0x47,0x5f,0x4d,0x5c,0x91,0x5b,0xbc,0x35,0x05 },
{ 0x23,0x3a,0xd4,0xad,0x0c,0xde,0x95,0x8f,0x8e,0xa7,0xbd,0x99,0x60,0x18,0x8e,0xa3,0x14,0x55,0x2b,0xbe,0x8e,0x56,0x44,0x27,0xfc,0xe8,0x85,0x28,0xec,0xe4,0xc3,0x48 },
{ 0x21,0xdf,0x6a,0xda,0xbf,0xc4,0xb9,0x01,0x7e,0xc9,0x36,0x93,0xfd,0x63,0xc5,0x34,0x01,0xc7,0x65,0xad,0x4a,0x97,0xcd,0xec,0x3e,0x03,0x62,0x55,0x3a,0xcf,0x03,0x70 },
{ 0x6f,0x8e,0x4a,0x5d,0x95,0xd5,0x70,0x91,0x38,0x8d,0xff,0x62,0x9d,0xb3,0x09,0x33,0x39,0x8a,0x4d,0x21,0xa6,0xfb,0xd0,0x78,0xe2,0x96,0x7a,0xc8,0x49,0x9a,0x88,0x28 },
{ 0x63,0x43,0x34,0x4a,0x05,0x39,0x6e,0xf7,0xeb,0x08,0x24,0x58,0x1d,0x44,0x76,0x16,0x59,0x38,0x1b,0xe0,0xab,0xcd,0x88,0x98,0x98,0x71,0xca,0x53,0x1a,0x89,0x81,0x62 },
{ 0x5d,0x96,0xab,0xee,0x95,0x2c,0x79,0x92,0xe2,0x59,0x2c,0x08,0xdb,0xf7,0x04,0x83,0xc6,0x17,0x8a,0xb9,0x88,0x7e,0x1e,0x88,0xd1,0x9c,0xb2,0x5e,0x22,0x25,0x07,0x6c },
{ 0x01,0x4a,0x91,0xef,0x0b,0x3c,0xa1,0x8f,0xab,0x94,0xd4,0x0f,0x82,0x80,0x11,0x51,0xc7,0x36,0x21,0xc4,0x5c,0x24,0xa8,0x3f,0x51,0xf0,0x98,0xb2,0x3f,0xd1,0x19,0x17 },
{ 0xab,0x7a,0x4f,0x4c,0x96,0xd5,0xdf,0x9c,0x52,0xe7,0x4b,0x7d,0x67,0x41,0xc9,0xc8,0xf3,0x04,0xc0,0x70,0x74,0x42,0x78,0xed,0x93,0x8b,0x73,0x34,0x97,0x7b,0x09,0x27 },
{ 0x6e,0xc3,0xba,0x59,0xfe,0x61,0x73,0xd0,0x2a,0x82,0x9f,0x13,0x2a,0x90,0x9e,0xdc,0x20,0x6a,0x97,0x83,0xa6,0x83,0x3d,0xa9,0xc1,0x35,0x32,0x61,0xbb,0x13,0x70,0x58 },
{ 0xf1,0x91,0x4e,0x81,0xfe,0xb9,0x91,0xdc,0x5b,0xce,0xde,0x23,0xdd,0x26,0xaf,0xb6,0x3b,0x0e,0xc0,0x78,0xe9,0x54,0x31,0x53,0x7d,0x86,0x77,0x13,0xfe,0x14,0x48,0x2b },
{ 0x44,0x13,0xf1,0xe1,0x2b,0x3d,0xaa,0x9a,0x6b,0x68,0x5d,0xe5,0x93,0xc6,0x46,0xd0,0x30,0xf3,0x41,0xd2,0x86,0x8b,0x05,0xd1,0x6a,0xdf,0xbb,0xe4,0x09,0x75,0x8e,0x2b },
{ 0x99,0x0f,0xd6,0xa8,0xb9,0xc7,0xa0,0xc7,0x9a,0xd6,0x20,0xb5,0xe7,0x77,0x75,0x07,0x6c,0x3d,0xe2,0x2b,0x73,0xae,0xde,0x22,0x2e,0x1e,0xe0,0x78,0xa9,0xe5,0x12,0x5b },
{ 0x01,0xdf,0xe9,0x65,0xa0,0x89,0xa4,0xee,0x95,0x42,0xdd,0xc2,0xc9,0xb5,0x56,0xd2,0x3b,0x43,0x85,0xe6,0x04,0x93,0x88,0x23,0x56,0x1c,0x70,0x27,0xf1,0x54,0x73,0x22 },
{ 0x6d,0x74,0x93,0xe0,0x57,0x52,0x62,0x75,0x46,0xf8,0x3a,0x6a,0xa4,0x1d,0x23,0xd8,0x84,0xae,0x10,0x91,0xde,0x49,0x02,0xb5,0xdd,0x1b,0x43,0xfd,0xd5,0x08,0x19,0x6b },
{ 0x32,0x52,0x3d,0x98,0xab,0x15,0x4a,0x44,0x6d,0x15,0xc8,0x31,0x8c,0x7a,0x2e,0xd6,0x6b,0x7e,0x9d,0x5f,0xf9,0xfb,0xe8,0xb4,0xa6,0x44,0x3c,0x01,0x6d,0x58,0x8b,0x17 },
{ 0x34,0xa6,0x2b,0x13,0x67,0x80,0xa0,0x53,0x8a,0xd2,0x9b,0x9e,0x3c,0xa5,0x32,0x59,0x94,0xd2,0x1e,0xca,0xe3,0xee,0x67,0x11,0xef,0xd1,0x34,0x33,0x6a,0xf6,0x44,0x51 },
{ 0x33,0xb3,0x35,0x92,0xd1,0xb1,0x86,0x27,0xf6,0xaf,0x1b,0x6a,0x3d,0x9b,0xe2,0x15,0xd9,0xbe,0x39,0xd3,0xd1,0x7b,0xbe,0x90,0x57,0xae,0x42,0xea,0x92,0x54,0x0a,0x61 },
{ 0x81,0xcd,0x54,0xa4,0x49,0xdd,0x3f,0xda,0xbe,0x18,0xc4,0x3f,0x7d,0x6f,0xa9,0x53,0xb8,0x32,0xca,0xab,0xac,0xf5,0x3f,0x68,0xfa,0x3d,0xde,0x1f,0x8c,0xb5,0x03,0x4a },
{ 0xd2,0xf5,0x34,0xbb,0xfa,0x41,0x87,0x41,0xae,0x8a,0x15,0xb2,0xd7,0x5a,0x80,0xed,0xba,0xf7,0xeb,0xc1,0xff,0x63,0xec,0x68,0x2f,0x85,0x14,0x91,0x11,0x34,0x29,0x65 },
{ 0x66,0x08,0x12,0xb4,0xf7,0x02,0x52,0xbf,0x86,0x6a,0x0f,0x11,0xf4,0x4b,0xe1,0x59,0x0e,0x6a,0x56,0x56,0xe5,0x19,0x94,0x32,0x3c,0x9a,0x70,0x2f,0xed,0x9a,0xbb,0x10 },
{ 0x7a,0x05,0x29,0x73,0x40,0x78,0x68,0x4c,0x03,0xa5,0xde,0xf9,0x80,0x97,0x6e,0x8c,0x2b,0xa1,0x23,0xd6,0xca,0x74,0x56,0xdb,0x35,0xbe,0xb5,0x35,0x24,0xa9,0x06,0x54 },
{ 0xf0,0xc0,0x64,0xd1,0x9d,0xe8,0x60,0x2b,0x60,0xe7,0x3e,0xea,0xfe,0x32,0xb8,0x6f,0xf9,0x54,0x8d,0x2d,0xf8,0x0a,0x2d,0x70,0x69,0xd4,0x5a,0xc9,0x85,0x97,0x8e,0x36 },
{ 0xf5,0x2d,0xba,0x28,0x58,0x64,0x2c,0xb3,0x51,0x5f,0xa5,0x90,0x16,0x5c,0x9c,0x8b,0x15,0x29,0xb3,0x6c,0x70,0xcb,0x09,0xd1,0xdc,0x5c,0x94,0xec,0x46,0x53,0xc6,0x42 },
{ 0x75,0x09,0x0f,0xa5,0xad,0xe1,0xc5,0x56,0x47,0xee,0xff,0x18,0xae,0xbf,0xc8,0x0f,0xbb,0xab,0xc8,0xdc,0x04,0xf9,0x6c,0x57,0xcb,0xbd,0x42,0xbc,0x43,0x78,0xb6,0x3b },
{ 0xba,0x39,0x7a,0x11,0x0e,0x55,0x02,0xdd,0x75,0x69,0x4d,0xf8,0x4c,0xbd,0xac,0x21,0x6f,0x7d,0x74,0xc6,0xb3,0x51,0xf0,0x28,0x44,0xcf,0xb5,0x62,0x8f,0xf7,0x36,0x1e },
{ 0xbd,0xfe,0x4c,0x01,0xd6,0xd9,0x7c,0xc5,0x90,0x8b,0x63,0x3a,0x57,0xac,0x52,0x32,0x4f,0x48,0xe5,0x1c,0xcb,0x9b,0x80,0x05,0x63,0xcf,0x3e,0xc2,0x30,0x35,0x92,0x30 },
{ 0x1c,0x4e,0xe8,0xaf,0xfb,0x88,0x2c,0xe8,0x61,0xe1,0xaa,0xbb,0x54,0x38,0xb1,0xc6,0x43,0x9b,0x84,0x84,0x99,0x26,0x87,0xdf,0x62,0x49,0x4e,0xdd,0x2a,0x9e,0x5e,0x15 },
{ 0x58,0x0a,0xd8,0x02,0xda,0xeb,0x21,0x58,0x35,0x1e,0x2e,0x5f,0xc6,0x3e,0xcd,0xfc,0x9f,0xfe,0x72,0x8c,0xe7,0x15,0x9b,0xf3,0x29,0x7b,0x77,0xbf,0x55,0x35,0x94,0x78 },
{ 0x9a,0x96,0xd4,0xec,0x2a,0x9c,0xe7,0xe3,0xb6,0x71,0x5d,0xf0,0xd3,0xec,0xf9,0x75,0x88,0xe2,0x9b,0xfc,0x3f,0x2e,0xad,0x24,0xe6,0xae,0xba,0x30,0xe3,0x89,0x32,0x36 },
{ 0xfb,0xa4,0xdb,0x97,0x00,0x35,0xe5,0x91,0xe0,0x06,0x14,0x78,0x39,0xac,0x32,0xb2,0xd7,0xeb,0x3d,0x9d,0x87,0x08,0x37,0xcb,0x75,0x16,0xda,0xae,0x9e,0x60,0xdd,0x2f },
{ 0xfc,0x27,0x3c,0x86,0xd5,0xdb,0x2e,0x42,0xd9,0x78,0x2d,0xc4,0x93,0xaa,0x4b,0x6e,0x82,0xc4,0xba,0x27,0x3e,0x51,0x2d,0xc3,0x3a,0xbd,0x49,0xfc,0xab,0xc8,0x71,0x0c },
{ 0x69,0xaf,0xdb,0xf5,0x99,0xc6,0xa3,0xb7,0x15,0x4d,0x8b,0x6d,0x74,0xf4,0xe7,0x97,0x13,0xf4,0x4e,0x55,0xcb,0x56,0xe2,0xdb,0x1b,0x4d,0x20,0x78,0xcf,0x16,0xdd,0x36 },
{ 0xe3,0x22,0x42,0xf5,0x18,0x27,0xd8,0x60,0x5f,0x85,0x08,0xa0,0x24,0xc1,0xd0,0x6e,0x7d,0x5f,0xda,0x94,0xb9,0x2d,0xc8,0x9d,0x94,0xf0,0x82,0xd0,0x4f,0x4f,0x5b,0x69 },
{ 0xb3,0x4a,0x83,0x5a,0x97,0x33,0xd4,0x84,0xdf,0xb4,0x73,0x65,0x64,0x9e,0x14,0xdc,0x96,0x12,0x39,0x48,0x9e,0xc2,0x62,0x07,0x1f,0x8e,0x4d,0x8e,0xbc,0x93,0xee,0x7a },
{ 0x3b,0x00,0x96,0x02,0x5e,0x00,0x22,0x44,0xc6,0x90,0x06,0x41,0xb4,0xde,0x39,0xe8,0xff,0x05,0xcf,0xb3,0xdf,0x99,0xe7,0x53,0xf1,0x3c,0x14,0x42,0xd5,0xaa,0xfd,0x79 },
{ 0x58,0x0e,0xe1,0x30,0x1a,0x83,0x10,0xdd,0x3d,0xd3,0xa6,0xe4,0xbc,0xf8,0x1d,0x32,0x57,0xde,0xd5,0xde,0xb8,0x63,0x5a,0xb5,0x18,0x50,0x90,0x4a,0x96,0x3e,0x44,0x20 },
{ 0xbe,0x13,0x59,0x56,0xa9,0x62,0x07,0x90,0xaa,0xa9,0x54,0xd9,0x26,0x34,0x8b,0xad,0x6b,0x99,0xbf,0x5d,0x6a,0x07,0xdc,0x9a,0xd8,0x18,0x39,0xac,0xde,0x56,0x5c,0x2a },
{ 0xfc,0xff,0x60,0x5a,0xe9,0x8b,0x03,0xea,0xda,0xeb,0x87,0x52,0xad,0xf5,0xd9,0x59,0x72,0xf9,0xfa,0x89,0xed,0x06,0x3d,0xd3,0xd9,0xf1,0xb2,0xba,0xb1,0x9c,0x11,0x0e },
{ 0x40,0x81,0xa0,0xef,0x74,0x4f,0x6c,0x9b,0x01,0xdf,0xd7,0x8f,0x5b,0x5b,0x18,0x38,0x6a,0xa4,0x58,0xd1,0xaa,0x63,0xe9,0x36,0x7d,0x01,0x97,0x44,0xa5,0x4e,0x52,0x46 },
{ 0x67,0x93,0xc5,0x68,0x12,0xa6,0x6b,0x01,0xad,0xd7,0x7d,0xbc,0x98,0x33,0xe8,0x61,0xd6,0x22,0x7e,0x83,0x2c,0xe3,0x01,0xed,0x40,0x86,0x0e,0x77,0xc7,0xa2,0x80,0x3f },
{ 0x9c,0x3c,0xb1,0x17,0x60,0x97,0x75,0x88,0xdd,0xe4,0x66,0x35,0x35,0xc3,0xb7,0x47,0x65,0x3f,0x58,0x46,0x31,0x7a,0xb2,0xed,0xdc,0x26,0x66,0x07,0xb4,0xe3,0xc2,0x33 },
{ 0x5c,0x14,0xe3,0x22,0x24,0xfb,0x92,0x6b,0xa4,0x46,0x95,0x5d,0x85,0x4a,0xaa,0xab,0x51,0xe4,0xf5,0xa6,0x16,0xb7,0x4e,0x85,0x32,0xbd,0x42,0xaf,0x3c,0x07,0x77,0x4e },
{ 0x57,0x62,0x0c,0xf1,0x06,0xb8,0x6e,0x88,0x74,0x22,0x77,0xcf,0xd7,0x79,0xd5,0xf2,0x2f,0x4d,0xb0,0xe9,0x14,0x80,0x46,0xdc,0x92,0xd5,0x0c,0xe8,0xd2,0xd5,0x19,0x42 },
{ 0x50,0x78,0x5d,0xc6,0xab,0x78,0x82,0xc3,0xd6,0x5a,0x42,0x93,0xa9,0x03,0x1b,0x10,0x0b,0xc7,0x0b,0xf7,0xe7,0xc9,0x0b,0x54,0x0e,0xca,0xb5,0x0b,0x06,0xe4,0xd9,0x03 },
{ 0xe3,0x61,0x31,0x92,0xb8,0xad,0xf9,0x49,0xf2,0x14,0xa4,0x72,0xb2,0x8f,0x2e,0x6b,0x4b,0x42,0x4b,0xf0,0x29,0x3e,0x7b,0xcf,0x7b,0x09,0x4e,0x83,0xe5,0x8b,0xff,0x0f },
{ 0x2e,0x44,0xbb,0xb2,0xa4,0x22,0xb2,0xf9,0x46,0x74,0x67,0x89,0x8b,0x41,0x71,0xd9,0x75,0xa2,0x5c,0xa5,0xf6,0x80,0xed,0x56,0xd5,0x6e,0x05,0xc8,0xce,0xdf,0x43,0x79 },
{ 0x4d,0x3b,0x90,0x6a,0x89,0xf1,0xab,0x5c,0x60,0xd3,0xb3,0x2f,0x0e,0x98,0xeb,0x82,0xeb,0x9d,0x81,0xf5,0x22,0x42,0x3c,0x7e,0xfe,0x31,0x33,0x61,0x4e,0xc8,0xee,0x51 },
{ 0x25,0xe8,0xac,0xfd,0x85,0x33,0x6e,0x8f,0x78,0x4d,0xba,0x7f,0xfd,0x8a,0xf9,0x0d,0x4e,0xe4,0x5e,0x00,0xa6,0xab,0x07,0x0b,0x51,0x1f,0xa5,0xba,0x4f,0x43,0x54,0x7f },
{ 0x69,0x91,0x59,0x31,0xdb,0x58,0x7b,0x44,0x20,0x93,0xd7,0x8a,0xce,0x4d,0x8e,0xa8,0x02,0x6f,0x57,0xaf,0xa8,0xf6,0x8d,0x1c,0xbe,0x66,0x72,0xbe,0x60,0x92,0xb9,0x39 },
{ 0xb3,0x91,0xf9,0xa2,0xc4,0x9b,0x06,0x01,0xf7,0x15,0xeb,0xbe,0x4b,0xba,0xe0,0xc2,0x44,0xe4,0x06,0xf8,0xd7,0x9d,0x47,0xd1,0x41,0x90,0x49,0xe2,0xb4,0xcb,0x73,0x30 },
{ 0xeb,0xf8,0xaf,0xb1,0x88,0x33,0x12,0x1a,0x58,0xc2,0xc4,0xb8,0x91,0xda,0xb3,0x67,0x7f,0x6c,0xe2,0xb5,0x57,0x37,0x89,0x5f,0x66,0xff,0x93,0x9a,0xc6,0xcc,0x89,0x44 },
{ 0xe7,0x35,0x1d,0x0a,0x3e,0x30,0x0f,0xa0,0x14,0x13,0x43,0x73,0xd4,0xc9,0xd9,0xb8,0xac,0xf5,0x77,0x4c,0xd2,0xe3,0xf7,0xe3,0xef,0x80,0x16,0xfc,0x06,0x52,0x6c,0x5c },
{ 0xec,0x1f,0x26,0xc5,0xf8,0x5c,0xda,0xf2,0x49,0xc9,0x4a,0x5a,0x36,0x63,0x69,0xd0,0xce,0xb3,0xbb,0x68,0xb2,0xa5,0x35,0xc1,0x14,0x6f,0xf4,0x94,0x98,0xf2,0x53,0x02 },
{ 0xab,0x3b,0x52,0x18,0xf4,0x30,0x5d,0x5f,0x6b,0x1d,0x62,0x82,0x3d,0xbe,0x1c,0x5f,0x35,0xd5,0x0e,0x34,0x37,0x52,0x5b,0x7a,0x96,0xf8,0xf1,0x2a,0x5b,0x0e,0xe6,0x3e },
{ 0x1c,0xba,0x70,0x12,0xe7,0xe5,0x8e,0xe3,0x4c,0x12,0x9c,0x64,0x0c,0x65,0xaf,0x00,0x0a,0x8c,0xc0,0x9f,0xbe,0x7e,0x02,0xbe,0x27,0x46,0x9b,0xc2,0xdf,0x18,0xfe,0x37 },
{ 0x27,0x20,0x50,0xde,0xf9,0x22,0xf5,0xb2,0xc6,0x81,0x42,0x87,0x7a,0x19,0x1c,0xe7,0xaa,0x91,0x43,0xc2,0x62,0x08,0x72,0x41,0x94,0xa6,0x31,0x92,0x8c,0x09,0xa4,0x50 },
{ 0xf6,0x86,0x62,0x0b,0xb4,0x6e,0x33,0xbc,0xc4,0xb9,0x58,0xc5,0x6c,0x5f,0xea,0x3a,0x01,0x06,0xdc,0x71,0x10,0xb9,0xf9,0x18,0xef,0xaf,0xdd,0xb2,0x07,0xc3,0xde,0x42 },
{ 0x18,0x48,0x93,0x9a,0xae,0x94,0x37,0xbc,0x19,0x9d,0x45,0xbf,0x85,0x66,0x80,0xdd,0x81,0xac,0xa5,0xbe,0x19,0x19,0x7c,0xbc,0xd9,0x5f,0x61,0x84,0x03,0x17,0xaf,0x5a },
{ 0x24,0xff,0x9d,0x0f,0xd4,0x94,0x86,0xf6,0x71,0x5b,0x73,0x5f,0x19,0x37,0xdd,0x9c,0xa7,0x32,0x51,0x85,0x2d,0x0b,0x89,0xeb,0x5a,0x99,0x07,0x6d,0x1c,0xda,0xe0,0x72 },
{ 0x17,0x72,0x33,0xca,0x99,0x7b,0x1d,0x26,0xb7,0x1d,0xdd,0x42,0x75,0xbe,0xe4,0x05,0x43,0x9f,0xcd,0x9d,0xcd,0x6e,0xe0,0x4b,0x67,0x1a,0x98,0xf6,0xa1,0x5a,0x97,0x05 },
{ 0xc5,0x43,0xb6,0x10,0x62,0x4c,0x80,0x66,0x89,0x73,0x93,0x41,0x23,0xbe,0x11,0x64,0x4b,0xc0,0x9e,0x49,0x8d,0xc1,0x4c,0x22,0x31,0x4a,0x3d,0xfc,0xf5,0x7d,0xac,0x7e },
{ 0xa0,0xec,0x00,0x94,0x45,0xac,0x6e,0xe6,0xb2,0xcd,0x72,0x07,0xf5,0x67,0x34,0xe7,0x26,0x42,0x35,0x8d,0x19,0x78,0x8d,0xcc,0x61,0x18,0x5b,0x0a,0x29,0x1f,0xce,0x42 },
{ 0x10,0x43,0x48,0x0e,0x0c,0x83,0xba,0x61,0xee,0x97,0x93,0x88,0x5d,0xd2,0xf0,0x48,0xab,0x88,0xd1,0x18,0xd6,0x47,0x20,0xd1,0xd0,0x2a,0x07,0x99,0x78,0x48,0xc0,0x2f },
{ 0x28,0xce,0x29,0x46,0x46,0x4b,0x58,0xb0,0x72,0x88,0x8a,0x9c,0xc5,0x49,0x19,0xf9,0xac,0xf9,0x25,0x66,0x21,0xce,0xa6,0x15,0x16,0x05,0x07,0xba,0xf9,0xf1,0x64,0x45 },
{ 0xb3,0xbb,0xa4,0xa1,0x76,0x91,0x0a,0xf5,0xd0,0x40,0x09,0xa4,0x82,0xaa,0x87,0x3d,0x5b,0x0b,0x50,0x39,0x0d,0x2b,0x45,0x79,0x97,0x8c,0xff,0x51,0x25,0x98,0xcf,0x38 },
{ 0x5f,0x53,0x61,0x36,0x87,0xc5,0xff,0x87,0x6a,0xee,0xb4,0xe9,0x09,0x99,0x1e,0x87,0x99,0x4c,0xcc,0x02,0x5c,0x15,0xd6,0x59,0x84,0x91,0xbe,0x3c,0x69,0x4a,0x55,0x31 },
{ 0xf8,0x88,0xcf,0x9a,0x88,0xf3,0x02,0xb3,0x97,0x4d,0x7f,0x57,0x21,0xcd,0x9d,0xe1,0x0d,0x98,0xe4,0x81,0xbc,0x21,0x3d,0xf1,0xbe,0x1e,0x3b,0x4d,0xc6,0xda,0xd7,0x50 },
{ 0x2b,0x76,0x2e,0x7d,0x28,0x0d,0x89,0xfa,0xcf,0xea,0x49,0xd7,0xcb,0x81,0x06,0x69,0x92,0x50,0xae,0x1b,0x3a,0x8c,0xb4,0x24,0x50,0x9e,0xfc,0xed,0x72,0xf1,0x26,0x3d },
{ 0x83,0x90,0x63,0xf2,0x49,0x98,0x37,0x20,0x13,0x43,0xc9,0x00,0x2d,0xa6,0xab,0x4a,0x96,0x8c,0x8f,0x09,0x76,0x37,0x11,0x91,0xfb,0x92,0x00,0xb9,0x35,0x54,0xfc,0x14 },
{ 0x60,0xea,0x1c,0x43,0x76,0x57,0x5f,0xcd,0x8b,0xdc,0xc7,0xb8,0xec,0x88,0xb1,0x27,0xc9,0x36,0x86,0xdd,0xe7,0x00,0x5a,0xc7,0x20,0x45,0x4e,0xc8,0x28,0x26,0x65,0x2e },
{ 0x38,0xa2,0xbb,0xf6,0xc6,0x3b,0xfe,0xe5,0x5c,0x7e,0x9a,0x73,0xaa,0xc1,0x4e,0x53,0x24,0x48,0x18,0xee,0x00,0x87,0x40,0x87,0xdb,0x51,0x95,0xfc,0x20,0x70,0x2a,0x18 },
{ 0xb0,0x31,0xd5,0x9b,0xbb,0x08,0x42,0xcc,0xf7,0x6a,0xdc,0xcc,0x15,0x51,0x0d,0x26,0xe0,0x2e,0xbf,0x45,0x85,0x47,0xe4,0x12,0x29,0xad,0x06,0x7a,0x84,0x6f,0x46,0x05 },
{ 0x30,0xb8,0x12,0x14,0x53,0xcc,0x1d,0xf0,0x2c,0x6e,0x80,0xa4,0x18,0xb8,0xc6,0x4a,0xe4,0x1e,0x62,0xd3,0xd1,0x20,0x8b,0x90,0x62,0xdf,0x40,0x46,0xa2,0x0a,0xd2,0x51 },
{ 0xd6,0xeb,0x6a,0x63,0xe5,0xff,0xa5,0x24,0x7e,0xc6,0x36,0x5f,0xf5,0x71,0x02,0xfc,0xbe,0xed,0x3b,0xe1,0xb2,0xdd,0xa2,0x31,0xce,0x53,0x1d,0xbd,0x65,0x6f,0xc7,0x4b },
{ 0x56,0xd1,0x53,0xfe,0x49,0x3d,0xae,0x27,0xf4,0x7e,0xc7,0x74,0x61,0x13,0x33,0x7a,0x80,0x38,0x5d,0x72,0xa8,0x33,0xd4,0x8e,0x4f,0xa0,0xb3,0x55,0x2f,0x90,0xc4,0x49 },
{ 0x75,0x0d,0x01,0x35,0x40,0x65,0xd8,0x7b,0x6d,0xf7,0xe6,0xeb,0x82,0x53,0x3d,0x68,0x2a,0xfa,0x9b,0x6a,0x54,0xda,0x1b,0xf8,0x0b,0x4c,0x49,0xcc,0xb7,0x6e,0xb9,0x1f },
{ 0x15,0xa5,0x12,0x0d,0xac,0x08,0x1d,0x01,0xc3,0x16,0x34,0xab,0x01,0x94,0x97,0xcb,0xb5,0x4c,0xee,0xa9,0xc7,0x76,0xf7,0xea,0xa1,0xd7,0xf9,0x1c,0x97,0xc0,0x7b,0x49 },
{ 0xef,0x7d,0xa3,0x73,0x97,0x69,0x97,0xf3,0x22,0xc1,0xac,0x9e,0xe0,0xd5,0x32,0x92,0x40,0xe9,0xa0,0x0d,0xd1,0xce,0xe4,0x58,0x5b,0x92,0x2e,0xfe,0x4b,0x00,0xe6,0x7b },
{ 0x50,0xd8,0xf4,0x18,0x00,0x42,0xc2,0x8c,0xe9,0xe6,0x61,0x1b,0x87,0x90,0xe4,0xb1,0xa6,0x17,0xb5,0x60,0x51,0x9b,0x58,0xab,0x17,0xd9,0x36,0xb9,0x0e,0xa7,0x23,0x05 },
{ 0x6f,0xb0,0x47,0xe6,0xee,0x6c,0x97,0x6e,0xbb,0xf1,0x1d,0x32,0x89,0x80,0x17,0xcd,0xc9,0xb5,0x04,0x10,0x67,0xe8,0xb3,0x5a,0x05,0xbf,0xff,0x5d,0x0f,0xe4,0x51,0x78 },
{ 0x13,0x1c,0x00,0x4d,0x4b,0x03,0x5a,0x0c,0x13,0x35,0x36,0xa7,0x74,0x3f,0x5a,0x4a,0xe9,0xa2,0xa4,0xd9,0x43,0x02,0x37,0x6b,0xf0,0x61,0x0c,0xa8,0xd1,0x08,0x12,0x37 },
{ 0xeb,0x1d,0x39,0x2f,0xe4,0xc7,0xa3,0x9b,0x81,0x04,0xde,0x6c,0xa5,0xa9,0x64,0xe2,0x17,0xf9,0x36,0x7a,0x7c,0x19,0xfb,0x4a,0x71,0xd0,0x57,0xb9,0x93,0x29,0x30,0x10 },
{ 0xbc,0x04,0x7b,0xcf,0x06,0x8b,0xb0,0x94,0x94,0x5b,0xbc,0x63,0x09,0xc8,0x81,0xd4,0xd0,0x4a,0x76,0x30,0x23,0xfc,0xb1,0x8c,0x41,0x96,0x96,0xa8,0x9c,0xba,0xef,0x70 },
{ 0x7a,0xbb,0xb2,0x07,0x26,0xa2,0x48,0x98,0xe4,0xa4,0x1d,0xb8,0x62,0x6f,0x77,0x86,0x5c,0x12,0x91,0x51,0x76,0xbf,0x72,0x3a,0xdf,0x0a,0x00,0x86,0x45,0xc9,0xc4,0x37 },
{ 0xf7,0xe2,0x0f,0xc7,0x61,0x11,0xd7,0x70,0xdd,0xba,0x05,0x00,0xdb,0x3d,0x35,0x3a,0x75,0xd7,0xc3,0x0b,0x8c,0x6d,0x18,0xe5,0xd6,0xf8,0x6b,0xd4,0x84,0x3f,0xaf,0x7b },
{ 0x63,0x6d,0x06,0x76,0xf5,0x9e,0x0b,0x65,0xd5,0xf8,0xfb,0xc7,0x28,0xe9,0x30,0x24,0x77,0x23,0xed,0x46,0xbc,0xf4,0x3b,0xdf,0xd3,0x0f,0x0d,0x0a,0x22,0x3c,0x16,0x2e },
{ 0xaa,0x10,0x7a,0x84,0xcc,0xce,0x7d,0x1e,0x3f,0x49,0xb8,0x9c,0xaa,0xd9,0xad,0xe3,0x34,0x1a,0xdc,0x4c,0x8a,0x63,0xd3,0xed,0x06,0x1a,0x68,0xe7,0x51,0xc4,0xa9,0x7b },
{ 0xaa,0x85,0x14,0x5e,0xab,0x0e,0x07,0xc4,0x39,0x65,0x84,0xaf,0xe3,0x41,0x40,0x5a,0x61,0x26,0x75,0x6a,0xfc,0x9f,0x28,0x2b,0xf7,0x12,0x46,0x1b,0xaf,0xf9,0xa7,0x7b },
{ 0x6d,0x17,0x40,0x89,0x91,0xec,0xe7,0x17,0x3f,0xb9,0x9c,0xe7,0x13,0x10,0xbc,0x9b,0x8f,0x73,0xdf,0x0a,0x0e,0x35,0x38,0x92,0x26,0x84,0x8e,0x4f,0xf3,0x89,0xca,0x6d },
{ 0x4b,0x3f,0x92,0x21,0x29,0x74,0xb4,0x2c,0xf7,0xc2,0x25,0xdf,0x2f,0x06,0x5d,0xfa,0xae,0xcc,0x2b,0xdc,0x82,0x7e,0x32,0x10,0x11,0x87,0xde,0xaa,0xf1,0xef,0x24,0x6f },
{ 0x81,0x14,0xb5,0x79,0x9f,0x3c,0xb2,0x30,0xb8,0xd2,0x8b,0x5d,0x7a,0x31,0xae,0xd5,0xb3,0x3a,0xf1,0xd0,0x1c,0x56,0x0f,0x7d,0xbc,0x7c,0x80,0xae,0x4d,0x1d,0x4f,0x3b },
{ 0x9b,0x76,0x43,0xff,0xbd,0x62,0x3e,0xa1,0xd1,0x2a,0xc5,0x47,0xf9,0xe7,0xbe,0x01,0xeb,0xac,0x81,0x74,0xfc,0x9f,0x25,0x02,0x8d,0x37,0x92,0xd8,0x62,0xb3,0x3f,0x65 },
{ 0xe4,0x6e,0x66,0xbb,0x7b,0x3c,0x72,0x3d,0xf3,0x30,0x35,0x70,0xe0,0xa7,0xf2,0x46,0x6a,0x77,0x02,0x1d,0x84,0x34,0xf5,0x22,0x21,0x6b,0x98,0xf5,0x34,0x88,0x11,0x0e },
{ 0x0f,0xab,0xf6,0x0e,0x13,0xdd,0x78,0x25,0x0f,0xbe,0x70,0xc6,0xc8,0x90,0x04,0xbe,0x56,0xce,0x50,0xf7,0x0f,0x4a,0x05,0x45,0x64,0xa5,0x02,0x6b,0xb1,0xdf,0x9b,0x33 },
{ 0xc0,0x63,0x8b,0xd5,0xd2,0x60,0x42,0xaf,0xbf,0xc5,0x87,0x89,0x61,0x63,0xcd,0xd2,0x23,0x02,0x52,0x9b,0x87,0xb8,0xd4,0xa8,0x49,0x58,0xc2,0x53,0x26,0x73,0x63,0x62 },
{ 0x3e,0xfd,0x16,0x1e,0xb6,0xb2,0x91,0x95,0x04,0x5a,0xe3,0x32,0xdd,0xac,0x20,0xd8,0x3c,0xa8,0x5c,0xca,0x3b,0xbc,0x4b,0x6b,0x9b,0x80,0xa5,0x28,0x6c,0x7c,0x63,0x7e },
{ 0x6e,0x6f,0x2d,0xba,0x61,0x68,0xfa,0xe4,0x1d,0xcf,0x69,0x3d,0x90,0x3c,0xe0,0x03,0xe2,0xdc,0x19,0xd8,0xc5,0xb1,0xa6,0x0e,0x9c,0x53,0x2f,0xb5,0xa0,0x89,0x87,0x0a },
{ 0xc6,0xea,0xcf,0xd6,0xa5,0x0d,0x90,0xca,0x6b,0x54,0xd2,0x16,0x01,0x97,0xca,0xdd,0xcd,0xf2,0xfc,0xed,0x2f,0x3f,0x1f,0x8c,0xd0,0xed,0xc2,0x07,0x0f,0x9e,0x51,0x39 },
{ 0x62,0xed,0x46,0x08,0x21,0x33,0x9b,0xd9,0xf2,0x17,0x12,0x7a,0x85,0xb7,0x78,0x2e,0x8b,0x30,0xab,0xa5,0x68,0x33,0xbb,0x16,0x1e,0x9d,0xc1,0x0e,0x1e,0x06,0x85,0x18 },
{ 0x9a,0xba,0x36,0xeb,0xe4,0xc7,0x81,0x26,0x5d,0x19,0x2e,0x16,0x65,0x56,0x87,0xfb,0xcc,0xa0,0x3b,0x1d,0xa2,0x25,0xb2,0x02,0x43,0x49,0x1f,0x7a,0xb6,0x87,0x1e,0x72 },
{ 0x73,0xb2,0xae,0x02,0x28,0x78,0xef,0x68,0x8f,0xe6,0x68,0xb7,0x3e,0x8b,0x38,0x48,0x6d,0xbb,0x3e,0x7f,0xeb,0x56,0xf1,0xd7,0x1c,0x7f,0x7d,0x75,0xca,0xb1,0xc9,0x78 },
{ 0x34,0x5e,0xef,0xc1,0x61,0x0e,0xbf,0x99,0x4f,0xfe,0x69,0xa5,0xe4,0x3a,0x41,0xc9,0x8e,0xc9,0x2b,0x80,0x84,0x10,0x2b,0x95,0x91,0xdb,0x24,0xd1,0xd2,0x34,0xa6,0x62 },
{ 0x9c,0x57,0xeb,0xb2,0xe8,0x58,0xc1,0xda,0x0b,0xf8,0xe7,0x96,0x6c,0xd5,0xd2,0x49,0x4e,0xe4,0x7d,0x06,0x9d,0x42,0x79,0x12,0x42,0xe8,0x2a,0xa5,0xcf,0x95,0xb8,0x5f },
{ 0x58,0x7d,0x13,0x06,0x3a,0xd4,0xd1,0x59,0x21,0x6c,0x10,0x35,0x0b,0x76,0x02,0x8e,0x99,0xdb,0xc5,0x53,0xa3,0xeb,0x1a,0xa8,0x4e,0x49,0x54,0xa6,0x65,0x8b,0xfc,0x43 },
{ 0x9a,0x52,0xd8,0x40,0x02,0xc9,0x39,0x21,0x5b,0xe1,0xbd,0x24,0x3c,0x4a,0xb0,0x95,0x14,0x6a,0x9b,0xa1,0x7e,0xa1,0x82,0x3c,0x99,0x36,0x2b,0xf6,0x62,0x9a,0x86,0x51 },
{ 0xc5,0x6a,0x76,0x7f,0xe4,0x7e,0x54,0x38,0xda,0x8e,0x8b,0x18,0x62,0x32,0x00,0x5e,0xa9,0xbe,0x73,0x87,0x9e,0xac,0x6b,0xf0,0xea,0xc5,0xb0,0x7b,0x43,0x7d,0xee,0x75 },
{ 0x1c,0x54,0x53,0x53,0x2a,0x17,0x21,0x5c,0xdd,0xb4,0x06,0x20,0x8b,0x70,0x5f,0x15,0x6a,0xf4,0x31,0xd2,0xfd,0x38,0x1b,0xbe,0x1f,0xe7,0x0f,0x60,0x8e,0x63,0x3e,0x5d },
{ 0xe2,0x6a,0x8c,0x39,0x47,0xf8,0xa5,0xa1,0xb8,0x60,0x27,0xfa,0x1a,0xa5,0x9d,0xc5,0xf6,0xb1,0x14,0x40,0xc9,0xe4,0x11,0x6f,0x4f,0xc4,0x88,0xb3,0x68,0xd8,0x83,0x41 },
{ 0x28,0x1b,0xb0,0x84,0xbc,0xab,0x7d,0x14,0x6d,0xe0,0xc3,0x9c,0x14,0xec,0x63,0x0a,0x43,0x2a,0x39,0x61,0x3e,0x4f,0xf9,0xd8,0xc3,0x06,0x2b,0xa1,0x67,0x2b,0xdb,0x30 },
{ 0xbc,0x7c,0x5f,0xd4,0xee,0x39,0xd1,0xe9,0xe7,0x52,0xc6,0x6b,0x2e,0xfb,0x91,0x37,0x84,0x9b,0x88,0xd5,0xd7,0xc7,0xa3,0xbf,0x37,0xb3,0x32,0xb1,0x31,0xbf,0x56,0x1c },
{ 0xda,0x27,0xf1,0x4a,0x43,0x51,0xa8,0x60,0x6e,0xae,0xac,0x0d,0x63,0x9a,0x74,0x4e,0xb9,0x38,0x6c,0x76,0x10,0x51,0xef,0x11,0x57,0xd6,0xd6,0x1f,0xb5,0x6d,0x83,0x73 },
{ 0xc0,0xb3,0x5b,0x3d,0x31,0x8f,0x85,0x01,0x67,0x85,0xf6,0xe7,0x5a,0xfb,0xbb,0xb9,0x0d,0x61,0x6b,0xe8,0x37,0x81,0x7e,0x66,0x8f,0x3a,0xcd,0xff,0x6c,0xf7,0x0d,0x16 },
{ 0xb7,0x7a,0x77,0xf8,0x85,0x2e,0x0a,0x82,0x52,0xc8,0x0d,0xb5,0x22,0x82,0xc2,0x0f,0x0f,0x44,0x1f,0xf1,0x98,0x76,0x30,0xc1,0xa5,0xe3,0x31,0xec,0xa6,0x01,0x08,0x54 },
{ 0x8c,0x0e,0xe2,0x63,0x08,0x13,0xca,0x0f,0xa1,0x56,0x03,0xa3,0x76,0x0f,0xca,0x79,0xc0,0xe0,0x8c,0xa5,0x0f,0xb7,0x5a,0x43,0x48,0x3b,0xdb,0xe3,0x8f,0xcb,0x07,0x5f },
{ 0xcb,0x66,0x6f,0xd3,0x0c,0x3b,0x93,0x57,0x65,0x3e,0x03,0x33,0xc1,0x3b,0xc7,0x2b,0xca,0x9b,0xc8,0xf9,0xea,0x0e,0x97,0x81,0xe6,0x12,0x0f,0xfb,0x00,0x4f,0x2a,0x17 },
{ 0x91,0x3d,0xff,0x4b,0x24,0x28,0xc9,0x3c,0x2a,0x3e,0x3c,0x23,0xd3,0x6b,0x3c,0x71,0x50,0x58,0x06,0x8b,0x4a,0xa8,0xbd,0x27,0xe9,0x77,0x8d,0x06,0x27,0x8b,0xda,0x3f },
{ 0x48,0x44,0xb7,0x36,0x90,0xf5,0x4f,0xa7,0x78,0xba,0x7a,0xb7,0x94,0xac,0x8d,0x97,0x5f,0xd4,0xf8,0x34,0x4a,0xa6,0x3c,0xff,0x13,0xa9,0x9c,0x8b,0xb8,0xf4,0x01,0x1f },
{ 0xf5,0xc6,0x76,0xdb,0xdb,0x88,0x5a,0x94,0x13,0x8a,0x1a,0x5f,0x6d,0x46,0x29,0xee,0xc5,0xa0,0xc3,0xbd,0xfd,0xde,0x08,0x80,0xc9,0xc9,0x99,0x2f,0x5f,0x4e,0x34,0x44 },
{ 0x27,0x75,0x16,0xb2,0xe2,0x10,0x00,0x48,0x03,0x7b,0x22,0x96,0xfb,0x2d,0x93,0x6e,0x72,0x7f,0xba,0x9d,0xf8,0x99,0xdc,0x98,0xe7,0xb4,0x99,0x9a,0x5c,0xa6,0x8f,0x43 },
{ 0x1e,0xad,0x26,0xd6,0x05,0xdd,0xb9,0xb0,0x26,0x72,0x23,0x82,0x0a,0x39,0xe3,0xe1,0x8e,0xaa,0x47,0xdb,0xa3,0xff,0x86,0xc2,0xaf,0xdc,0xce,0x80,0x8d,0xab,0x80,0x49 },
{ 0x59,0xb8,0x2c,0xd6,0x51,0x72,0x7b,0x35,0x57,0x54,0x20,0x29,0x2a,0x61,0xb5,0x85,0x6b,0xd7,0x02,0xfc,0x83,0xeb,0x10,0xbf,0x5d,0xb6,0x5e,0x5e,0x85,0x89,0x00,0x78 },
{ 0xa0,0x9e,0x63,0x79,0x2e,0xa5,0x54,0x5a,0x36,0x30,0x11,0x04,0xf9,0xc9,0x82,0x0d,0x2e,0x1c,0x6c,0x0a,0x58,0x0f,0xbc,0x0d,0x46,0x61,0xa9,0x10,0x5f,0x81,0xcc,0x0a },
{ 0x63,0x92,0x77,0xb6,0x6a,0xdd,0xf0,0x4e,0xc4,0x11,0xd4,0x4f,0x92,0x11,0x98,0x0b,0xeb,0x32,0x7a,0xf2,0xc6,0x79,0x38,0xe0,0x26,0x90,0x0b,0x6d,0xf7,0x3d,0x41,0x24 },
{ 0xf0,0x3b,0xfd,0x64,0x94,0x29,0x9b,0x43,0x8e,0x0d,0x9f,0x52,0xfc,0x6f,0xf1,0x87,0x26,0xdd,0x4b,0x14,0xd9,0x68,0xad,0x94,0x4b,0x5e,0x59,0x35,0x91,0xa3,0x53,0x05 },
{ 0x1b,0x41,0x5f,0xaf,0x1d,0xbb,0xda,0x5d,0x5d,0x93,0xd5,0x52,0xe6,0x60,0x1f,0xfe,0xe3,0x53,0xed,0x76,0x90,0x41,0x72,0xd1,0xda,0xcb,0xd2,0xc4,0xc1,0xad,0xfa,0x19 },
{ 0x09,0x2a,0x46,0xc0,0x45,0x57,0x5e,0xe1,0xf6,0xc8,0x64,0xae,0xdc,0x3d,0x63,0xfc,0x71,0x06,0xf8,0x46,0xa9,0x13,0xb4,0x4e,0x94,0x54,0x0a,0x73,0xa8,0x64,0x33,0x4c },
{ 0x8e,0xc3,0x40,0xc1,0x46,0x9f,0x0d,0x3c,0xb3,0x94,0xce,0xc0,0x19,0x2a,0x15,0x98,0x42,0x25,0xf4,0x87,0x00,0x44,0x09,0x52,0x22,0x4f,0xb1,0x8c,0x4a,0x83,0xbf,0x72 },
{ 0xa1,0x67,0x46,0x58,0x61,0xb1,0xee,0x6e,0x42,0x59,0x52,0xd5,0xbf,0xbb,0xb0,0xd4,0x8c,0xe9,0x64,0xfb,0x13,0xf2,0xbb,0x63,0x74,0xf2,0xd1,0xcf,0x70,0xf6,0x22,0x54 },
{ 0x63,0xcc,0x30,0x3e,0xea,0x0c,0x6b,0x7b,0xd8,0xc4,0x68,0x6b,0x03,0x92,0xe9,0x37,0xff,0x8c,0xb6,0x99,0x7e,0xa8,0x7d,0xe5,0xd6,0xbd,0xb3,0x9a,0xce,0x17,0x70,0x2c },
{ 0x1a,0xbe,0xfc,0x15,0x6b,0x0c,0x95,0x30,0xe7,0x22,0xdc,0x84,0x91,0xd7,0xcb,0xbe,0x97,0x2f,0x85,0x8d,0x1a,0x72,0x69,0xd3,0xcc,0x78,0xc1,0x7b,0x14,0xe3,0x84,0x27 },
{ 0x32,0xc6,0xc4,0xe0,0xd3,0x24,0xe2,0x5e,0xed,0x4f,0xe0,0x8f,0xd9,0xe0,0x01,0xb8,0x75,0x53,0x9a,0xb5,0xd7,0x03,0x25,0x7b,0x06,0xdd,0x58,0xcd,0x0e,0x1f,0x45,0x49 },
{ 0xa0,0x44,0xa0,0x03,0x9b,0xd8,0x04,0x03,0x69,0x5f,0xf4,0x6d,0xc5,0xc5,0x00,0x15,0xf1,0x35,0xa8,0xc3,0xd0,0x5d,0x71,0x6e,0xa6,0xb6,0x43,0x2a,0x68,0xf0,0x04,0x43 },
{ 0xe8,0x0b,0x7e,0xc9,0xa1,0xc2,0x0b,0x24,0x38,0x94,0x92,0x39,0xf5,0x22,0xcb,0x2b,0xae,0x5e,0x66,0x65,0xd5,0x27,0x40,0xa0,0xdf,0x10,0xae,0xd1,0x70,0x70,0x79,0x48 },
{ 0x8b,0x0e,0xaf,0x61,0x87,0x93,0xfd,0xf5,0x50,0xf9,0x63,0xae,0x7e,0x88,0x73,0x73,0x29,0x87,0x1e,0x27,0xfa,0x13,0xc0,0x6e,0x0b,0xbd,0x3c,0xb7,0xdf,0x54,0x1e,0x4d },
{ 0x9b,0x8b,0x00,0x94,0xac,0x6f,0x8e,0x91,0x9a,0x2f,0x33,0x38,0x2f,0x4d,0xb4,0x6c,0x88,0xe0,0xd3,0x43,0xd1,0xed,0x66,0xe1,0x33,0x96,0x1d,0xa7,0xaa,0x3f,0xfa,0x73 },
{ 0xef,0xe0,0x90,0xfe,0xe4,0x48,0xef,0xf1,0x4d,0x48,0x2f,0x9d,0xbc,0xfc,0x8b,0x53,0xff,0xfa,0xe7,0xb0,0x31,0x7c,0x30,0x5a,0x05,0x4e,0xe1,0xdd,0x7d,0x08,0xed,0x56 },
{ 0x94,0x74,0x24,0xd6,0xe6,0x67,0xb3,0xc7,0x9e,0x71,0xa7,0x8e,0xeb,0x35,0x67,0x66,0xdc,0x94,0x13,0x07,0x16,0x4a,0x79,0xe1,0x58,0x27,0x35,0xbd,0xb5,0x7b,0xda,0x6d },
{ 0xc3,0x16,0x22,0xe6,0x2e,0x67,0x2a,0x51,0x12,0x24,0x0b,0x12,0xa8,0xb6,0xcc,0x6e,0x47,0x82,0x87,0x84,0x83,0x51,0x03,0x53,0x02,0x93,0xd8,0xe7,0xf6,0xe0,0x44,0x25 },
{ 0xd4,0x1a,0xe2,0x5e,0x04,0x45,0x1e,0x66,0xf8,0xc7,0x50,0x4e,0x77,0x32,0x1c,0xd4,0x51,0xa2,0x41,0xdb,0x0d,0xeb,0xfb,0xd9,0xa5,0x4a,0xa5,0x33,0xba,0x9e,0xe4,0x42 },
{ 0x70,0x34,0x5d,0xd1,0xa1,0xc8,0x82,0xab,0x8c,0x32,0xfd,0xf5,0x9d,0xe5,0xf2,0x64,0x23,0x13,0x45,0xbf,0x38,0x34,0x6e,0x18,0x6d,0xc0,0x7b,0xd2,0x63,0x5f,0x54,0x29 },
{ 0x0b,0xa6,0x32,0xf6,0x67,0xb5,0x0c,0x18,0xfb,0x3f,0x65,0x73,0xd7,0x46,0x82,0x6c,0x48,0x59,0xf8,0x93,0x01,0xbf,0xaa,0x24,0xce,0xfe,0xec,0x83,0x16,0xe6,0xab,0x29 },
{ 0x99,0x56,0xf4,0xbc,0xa6,0x6b,0xe9,0x2e,0x9a,0x1c,0xf5,0x94,0x43,0x25,0xf8,0xb8,0xe0,0xce,0x08,0xec,0x66,0x72,0xfe,0xf2,0xd3,0x9d,0x35,0xd3,0x14,0xd3,0x58,0x76 },
{ 0xb0,0x40,0x71,0x14,0x25,0x0f,0xd7,0x6f,0xbf,0x98,0x24,0xf7,0xec,0xbf,0xd9,0xad,0x0a,0xa9,0x87,0xb4,0xf0,0x9d,0x15,0xbb,0xf7,0x43,0x7b,0xe7,0x0f,0x1f,0xbc,0x4e },
{ 0x16,0x69,0x29,0xce,0xdf,0x6d,0x8a,0x07,0x7f,0x22,0x54,0x0f,0xa5,0xa2,0x6c,0xdc,0x62,0xac,0xe4,0x3b,0x9b,0x11,0x4d,0x99,0xb6,0x9c,0x1c,0x8d,0x44,0xf4,0x5c,0x1a },
{ 0xe2,0x89,0xea,0x78,0xa5,0x83,0x74,0xf5,0x1c,0x55,0x5d,0xb3,0x7e,0xe0,0x7a,0xe5,0x65,0xd6,0xf6,0x70,0xea,0x50,0x52,0xfd,0xea,0xac,0xdd,0x41,0xb8,0xbb,0x6d,0x1e },
{ 0x96,0x61,0x80,0xac,0xbb,0x42,0xf5,0xcb,0x61,0x7f,0xfb,0x57,0x44,0x06,0xdd,0x8c,0xe0,0x73,0xc7,0x69,0xa3,0xba,0x21,0x40,0xf0,0x91,0x64,0x39,0xc6,0xfc,0x32,0x31 },
{ 0x58,0x28,0xf5,0x95,0x73,0xba,0x6b,0x9e,0x30,0xe6,0x92,0x97,0xac,0xea,0x42,0xe1,0x2f,0xd7,0x65,0xbf,0x25,0x74,0x52,0xf5,0xc0,0x41,0x82,0x57,0x37,0x94,0x2e,0x3e },
{ 0x7a,0xda,0x2b,0xa3,0xaf,0x7d,0x5e,0x17,0xb7,0xb0,0x3c,0xe0,0xbb,0xd1,0x4d,0xe3,0x1c,0xc0,0x16,0x2e,0xa4,0x24,0xd3,0xc2,0xc3,0x5f,0x33,0x59,0xca,0x7f,0x7e,0x50 },
{ 0xb1,0xda,0xec,0x98,0x4b,0x4c,0x0e,0x13,0x88,0x47,0x11,0xc5,0x81,0x62,0xe9,0x94,0x19,0x0d,0x43,0x10,0x4c,0x44,0x43,0xc2,0x73,0xe8,0x21,0x8f,0xeb,0xe4,0x5f,0x1d },
{ 0x41,0x45,0x68,0x8e,0xac,0x43,0x1b,0xa8,0x2b,0x01,0x4c,0xaa,0x99,0x2f,0xbd,0x70,0xab,0x0b,0xd2,0x2a,0xb8,0x85,0xf4,0x53,0xc0,0x23,0xf9,0xc3,0xe8,0xac,0x5f,0x02 },
{ 0xd0,0xab,0x94,0xa6,0x3c,0xf0,0xf3,0x72,0x11,0xc4,0x7f,0x36,0x08,0x4f,0xde,0xe3,0x64,0xd4,0x72,0x16,0x2c,0x1e,0xc5,0x0c,0xa7,0x99,0xdd,0x95,0xef,0xe5,0x2f,0x1c },
{ 0xbf,0xe1,0x45,0x68,0x7c,0xb3,0x4d,0x21,0x70,0x3a,0x44,0xbb,0xd8,0x84,0xe2,0x3d,0x63,0xb8,0xf9,0x02,0x86,0xb2,0x42,0xaf,0x15,0xeb,0x05,0x57,0xa6,0xe6,0x13,0x54 },
{ 0x77,0x17,0xf4,0x53,0x41,0x49,0x35,0x74,0x7a,0x5d,0x73,0xc9,0xc5,0xb6,0x9f,0xb6,0xd8,0xb4,0xd6,0xd4,0x33,0xa6,0xb1,0x4c,0xf7,0x93,0x21,0xcb,0x89,0x58,0x4d,0x06 },
{ 0x46,0xb6,0x93,0xf4,0x10,0x97,0x83,0xf5,0xd7,0x59,0x5a,0x90,0x53,0x9c,0x87,0x0a,0x2e,0xe5,0xb2,0x2c,0x5c,0xe7,0x79,0xf8,0x29,0xa0,0x72,0x51,0xe0,0xe9,0x2f,0x6d },
{ 0x65,0xbe,0xa7,0x9b,0x20,0x02,0xbc,0xf1,0x4c,0x24,0x6f,0x30,0x68,0x4f,0xf3,0x96,0x3b,0x51,0x54,0x82,0x3c,0xe5,0x77,0x9f,0xe1,0xd0,0xd8,0x13,0x96,0xd7,0x92,0x5c },
{ 0xe2,0x82,0xfe,0xdb,0x5d,0x53,0x3a,0x08,0x34,0x71,0xf6,0xa5,0x46,0x87,0x8f,0x6c,0x88,0xa5,0xdf,0x83,0x88,0x56,0xbe,0x50,0x75,0x0b,0xc2,0x28,0x41,0x65,0x49,0x39 },
{ 0x6c,0x23,0x19,0xea,0x2c,0xde,0xc5,0x8c,0xee,0x96,0xce,0x5f,0xdd,0x2e,0x48,0xe4,0x56,0x8c,0x05,0x24,0x5c,0x68,0x42,0xc9,0x26,0xae,0x97,0xaf,0x0d,0x98,0xee,0x45 },
{ 0x5a,0x57,0xeb,0x5a,0x64,0x81,0x7f,0xa5,0x54,0x78,0x94,0xd9,0xdc,0x6d,0x54,0x24,0x1a,0x89,0x93,0x42,0x86,0x52,0x04,0xe5,0x0f,0x87,0xa5,0xa6,0xf1,0x20,0x36,0x72 },
{ 0x39,0x5a,0x32,0x4d,0x1e,0x57,0xe6,0x3f,0x9a,0xa9,0x9e,0x4f,0x2d,0x0b,0xd8,0xd2,0xd2,0xc9,0x48,0xb3,0xaf,0x46,0x00,0xa0,0xfd,0x16,0x76,0x3d,0xe3,0x4b,0x18,0x35 },
{ 0x54,0x9a,0x41,0x66,0x4e,0x15,0x5e,0x82,0x4d,0x55,0xd5,0xf2,0x06,0xe1,0x5c,0x42,0x0f,0x3f,0xca,0x6e,0x1e,0x10,0x74,0xb9,0xc5,0xdf,0x3f,0xd4,0xa4,0xea,0x82,0x63 },
{ 0xba,0x41,0x12,0xac,0xc6,0xbc,0x0d,0xa1,0xbf,0x6e,0x46,0x35,0xce,0xa3,0xc8,0x27,0xd5,0xc3,0xca,0x23,0xb4,0x7a,0x6e,0xa0,0xf5,0x12,0x85,0xba,0x68,0x21,0xd1,0x41 },
{ 0x11,0x05,0x66,0xed,0x9e,0x34,0x2a,0x8f,0xcf,0x7a,0xfa,0xf9,0x1a,0xb1,0x53,0xda,0xa9,0x1f,0x6b,0x57,0x41,0x8d,0xd6,0xc7,0xfb,0x43,0x77,0x78,0x72,0x12,0x40,0x6e },
{ 0x88,0x04,0xda,0xef,0xc3,0x2f,0xa9,0x6f,0xc5,0x1a,0x96,0xfe,0x79,0xe0,0xff,0xe8,0xc3,0xe3,0x2a,0xca,0xfe,0xc1,0x08,0x3a,0x84,0xdc,0xe2,0x5b,0xc9,0xe9,0xbd,0x13 },
{ 0x22,0x10,0x47,0xe5,0x29,0x9a,0xe5,0xfb,0x78,0x8f,0xf8,0x62,0xb4,0xa5,0xcc,0x17,0xf8,0x79,0x3f,0x97,0xb1,0x10,0x99,0xb3,0x36,0x8f,0x77,0xe8,0x6c,0x96,0x19,0x72 },
{ 0x0a,0xc2,0xe7,0xd2,0x55,0xe2,0x2e,0x63,0xe6,0xca,0xbf,0x71,0xfb,0x69,0x07,0xce,0xe5,0xe7,0xb3,0xe3,0xe1,0xb7,0x53,0x56,0xc5,0xa2,0x8c,0xbe,0x94,0x1f,0x9c,0x76 },
{ 0x80,0x05,0x7b,0x53,0xce,0x7d,0xa3,0x10,0x77,0x23,0x71,0xd2,0x33,0xdf,0x39,0x78,0x88,0x87,0x42,0x5c,0xd1,0x5b,0x20,0x08,0x0e,0xa0,0xa7,0x4b,0x90,0x07,0x0e,0x2b },
{ 0x33,0x79,0x18,0xcc,0x0d,0xcb,0x4f,0xd1,0x05,0x91,0x90,0xad,0x21,0xe8,0x74,0xbd,0x13,0x7f,0xb1,0x85,0x28,0xab,0xea,0x2e,0x24,0x32,0x3b,0x14,0xf5,0x2b,0x3d,0x08 },
{ 0x7d,0x31,0xcd,0xd2,0xf1,0x14,0xcb,0x4a,0x7b,0x1d,0x93,0x1c,0x10,0xa9,0xef,0xb4,0x6c,0x18,0x00,0x45,0x04,0xbd,0x4c,0x13,0xde,0xa2,0xb3,0x84,0x8e,0xe6,0x86,0x34 },
{ 0x04,0xbe,0xe7,0x7d,0x02,0xdc,0xc1,0x0c,0x41,0xc9,0x93,0x6c,0x18,0x71,0x79,0x7d,0x48,0x4f,0xee,0xe8,0x54,0xbf,0x88,0x74,0x47,0x58,0x98,0x95,0xbc,0x08,0x19,0x12 },
{ 0xb3,0x66,0x4f,0xa5,0xe1,0x25,0xfd,0x47,0xd2,0xc9,0xf7,0x6a,0x20,0x93,0x49,0x22,0xba,0x85,0x12,0x4a,0xcc,0xcb,0x36,0xcb,0x30,0x30,0x07,0x83,0x0b,0x47,0x89,0x1b },
{ 0x7a,0x2e,0x26,0xd3,0x1c,0x5c,0x08,0xd7,0x46,0x34,0x54,0xa7,0x51,0xd3,0x53,0xbf,0xa8,0x2c,0xa9,0x1e,0x92,0x1f,0xd0,0xc2,0x13,0xe1,0x1b,0x74,0x5e,0xf0,0x1b,0x44 },
{ 0xce,0xe6,0x82,0xa5,0x9f,0x98,0x8d,0x6e,0xc5,0xb2,0x32,0xbe,0xa2,0xbd,0x8f,0x6d,0x4d,0x1e,0x71,0x59,0x01,0x3f,0xc8,0x76,0x36,0xcf,0x77,0x0a,0x9f,0xdb,0xb1,0x65 },
{ 0x1d,0x39,0x81,0x29,0x6e,0xd6,0xe2,0xdb,0x29,0x1a,0x21,0x34,0xc5,0x9f,0xaa,0xd8,0xde,0x33,0x62,0xec,0x00,0xbe,0xf5,0x8f,0x89,0x9d,0xd9,0xf3,0x00,0x57,0xb5,0x60 },
{ 0x96,0x02,0x12,0xff,0x43,0x17,0xda,0x3a,0x0b,0x81,0xa3,0xc0,0x8c,0x4a,0x55,0xb8,0x15,0xcb,0xfe,0x90,0x10,0x02,0x3d,0xfc,0x8d,0x47,0x02,0xbb,0xf8,0x17,0x75,0x72 },
{ 0x94,0x65,0x14,0xda,0x30,0x50,0xb8,0x6c,0x6f,0xa4,0xcd,0xfc,0x2c,0xd5,0x3d,0xdd,0x59,0x4a,0x3f,0xd8,0xf6,0x0d,0x8d,0xf6,0x54,0x56,0x58,0xc6,0x42,0x53,0xbd,0x44 },
{ 0x86,0x5c,0x86,0x83,0x9a,0xd4,0x1d,0xe4,0xa8,0x5d,0x6c,0x38,0xef,0xee,0xe4,0x40,0x94,0xcf,0x21,0x43,0x93,0x54,0x3f,0xb8,0xf8,0x3f,0x4d,0x26,0xf0,0x48,0xd1,0x25 },
{ 0x10,0x9d,0xa2,0x2e,0xa2,0x67,0x16,0x7a,0xc7,0x23,0x64,0x50,0x1b,0x2d,0xef,0x7d,0x51,0xfc,0xd7,0x2a,0x34,0x7b,0x65,0x7e,0xae,0x66,0x01,0xb3,0xf4,0xb6,0x78,0x2f },
{ 0x03,0x1a,0xbf,0x47,0xa2,0x50,0x33,0x86,0xe3,0xc4,0x06,0x9d,0xff,0x57,0x1a,0x5e,0x0d,0xe0,0xb7,0x73,0xdb,0x53,0x7e,0xc8,0x20,0xaf,0x74,0xbf,0x5d,0x90,0xca,0x5b },
{ 0xd7,0x31,0xa8,0xfe,0x20,0x47,0x14,0xae,0x4f,0xbf,0x0d,0x77,0xae,0x97,0x32,0x5d,0xb5,0xc5,0x2c,0x87,0xa9,0xa6,0x4c,0x81,0x78,0xeb,0xb4,0x1f,0x40,0x96,0xeb,0x53 },
{ 0x41,0x3e,0xf1,0x7c,0xa4,0xc9,0xb2,0x6e,0xaa,0xd8,0x58,0x84,0x06,0x4c,0xdb,0xcc,0x1a,0xdc,0xf2,0x07,0xbf,0xcd,0xc5,0xba,0x3c,0x58,0x67,0xd4,0xd8,0xbd,0x18,0x7e },
{ 0x3f,0x0e,0x67,0x27,0x9f,0x5e,0xc5,0xd1,0x10,0x23,0xc9,0x97,0x5c,0xe7,0x41,0x98,0xcc,0xef,0x8a,0x84,0xf7,0x3f,0x44,0x24,0x6c,0x6a,0x31,0x74,0xb6,0x18,0x73,0x24 },
{ 0x4c,0xfc,0x47,0x83,0x4f,0x90,0x31,0xf8,0x75,0x44,0x58,0x6d,0x79,0xb5,0x25,0xc4,0xd8,0x64,0xeb,0xf8,0x31,0xe8,0x08,0x25,0x1a,0x9f,0xaf,0xc1,0x39,0xc0,0x07,0x63 },
{ 0xc6,0xc9,0x48,0xbd,0xd4,0x2b,0xee,0xec,0xb1,0x0c,0xbe,0xdc,0x69,0x4e,0x04,0xb4,0xd7,0xca,0x24,0x6e,0x8a,0x66,0x30,0x2f,0x1e,0x4c,0x94,0x8c,0xdb,0x77,0xa0,0x0c },
{ 0xf5,0x99,0x3e,0x8d,0x54,0x54,0x4d,0x8a,0xae,0xf3,0x8e,0x72,0xdd,0xda,0xa3,0xc1,0x49,0x3e,0x47,0xd6,0x5e,0xef,0xc3,0x16,0x70,0xa3,0x18,0x86,0x57,0x86,0x3a,0x32 },
{ 0xd6,0x62,0x45,0x9b,0x91,0x17,0x54,0xe9,0x6b,0xc3,0x06,0x8d,0xa0,0xba,0x1a,0xc8,0x78,0x4c,0xd1,0xce,0x49,0xa9,0x19,0x51,0xb0,0xcd,0x19,0x07,0x2b,0x03,0x97,0x51 },
{ 0x69,0xdb,0x0d,0xb4,0x80,0x20,0xd2,0xfc,0x91,0x48,0x3e,0xea,0xa0,0x28,0xa9,0x45,0xec,0x0d,0xef,0x61,0x78,0x5a,0xaa,0xea,0x43,0xd6,0xe1,0x0a,0x86,0x59,0x3f,0x1a },
{ 0x69,0xfa,0x46,0x1e,0xc4,0x92,0x82,0xf2,0x47,0x32,0x71,0xc9,0xbf,0x51,0xee,0x89,0xb5,0x46,0xb6,0x41,0x32,0x76,0x40,0xcc,0x98,0xd3,0x2e,0xec,0x06,0x36,0x5b,0x10 },
{ 0xe0,0xd9,0x28,0xc9,0xf8,0x32,0x93,0xcf,0xc9,0x0b,0xc0,0x9c,0x77,0xea,0xb6,0x79,0xe5,0x5d,0x38,0x06,0x4c,0x32,0x31,0xee,0x9b,0xec,0x2a,0x31,0xf4,0x59,0xa4,0x13 },
{ 0x7c,0xf8,0xf8,0xd4,0x2a,0x9c,0x23,0x9f,0xaf,0xfb,0xb2,0x94,0x2d,0xaf,0xb0,0xf2,0x79,0xf5,0x2c,0xb5,0x5c,0xad,0xce,0xaf,0xef,0xe5,0x5c,0x63,0xe1,0x5f,0x68,0x50 },
{ 0xf3,0x9d,0xd0,0xb9,0x27,0xaa,0x2c,0x77,0x07,0xc8,0x29,0xa5,0x8c,0x7c,0xbe,0x70,0x6d,0xad,0xf6,0xf2,0xea,0xab,0x22,0x38,0x56,0x92,0xaa,0x89,0x58,0xd2,0x83,0x21 },
{ 0x94,0xf6,0xce,0x64,0xe0,0x68,0x59,0x81,0xff,0xa9,0xa3,0xd0,0x16,0x62,0xe6,0xfa,0x5a,0x5f,0x8c,0x5a,0x1e,0xf0,0xf1,0x58,0x3e,0xb6,0x95,0x2f,0x3f,0x8a,0xb1,0x58 },
{ 0x0d,0xf6,0xdf,0xe6,0x22,0xe4,0x39,0x17,0x49,0xbf,0xa7,0x83,0xf6,0x78,0xdd,0x31,0xd1,0xff,0xb5,0x8f,0xb7,0xe4,0xe8,0xe3,0xcc,0x32,0x3a,0x80,0xa9,0x9e,0x8f,0x78 },
{ 0xe8,0x51,0xc7,0xfe,0x0c,0xad,0xe4,0x65,0x34,0x2e,0x2b,0x88,0xbf,0xaa,0x30,0x18,0x5e,0x56,0x1f,0xf3,0x48,0x71,0x21,0xa7,0x4d,0x55,0x4b,0x0b,0x05,0xc2,0x94,0x2a },
{ 0x10,0x2d,0xa9,0xaf,0xad,0x92,0xec,0x34,0x6d,0x45,0x03,0xb7,0xca,0xa3,0xc2,0xa1,0x98,0xe2,0x89,0xb9,0x13,0x2a,0xbe,0x3a,0x46,0xf2,0xdc,0xed,0x06,0xdf,0xa5,0x36 },
{ 0x49,0xc0,0x0a,0x84,0x13,0x70,0xd2,0xfe,0xa1,0x38,0xc4,0x0b,0x72,0x9a,0xac,0xfb,0x6c,0xb8,0x4a,0x00,0x1e,0xb4,0x90,0x3f,0xba,0x41,0x1c,0xd5,0x5d,0xcb,0x1e,0x1c },
{ 0x7f,0xaa,0xac,0x89,0x5f,0x71,0xbc,0xa1,0x46,0xe4,0xff,0x63,0x59,0x94,0x59,0x40,0xe5,0x4e,0x69,0x08,0x53,0x07,0xf9,0x9c,0xf5,0xe4,0x8e,0x59,0x1c,0x88,0x64,0x07 },
{ 0xc9,0xca,0xee,0xe1,0x1c,0x67,0xfa,0x50,0xf2,0x28,0x89,0x75,0x1f,0xcb,0x4b,0xdb,0x13,0xb3,0x0e,0x5b,0xec,0x39,0xf0,0x4c,0x22,0x93,0xfe,0x38,0xec,0x05,0x92,0x28 },
{ 0x88,0x6d,0xe3,0x8d,0xea,0x38,0x28,0x0d,0x70,0x9a,0xd5,0x0a,0x85,0x00,0x4a,0x33,0x75,0x3e,0x93,0x7c,0x66,0x1b,0x18,0xa7,0x4d,0xf7,0x9e,0x09,0x1f,0xd7,0xb1,0x53 },
{ 0xf1,0x39,0x62,0xbc,0x23,0x52,0x48,0x4e,0xe0,0x59,0xff,0x27,0x4d,0x74,0x30,0x20,0x8a,0xa2,0x38,0xe0,0x4d,0xc4,0x41,0x37,0x01,0x50,0xff,0xa6,0x2a,0x22,0x53,0x3f },
{ 0x61,0xf2,0x66,0x78,0xe8,0x35,0x72,0xa9,0xe1,0x9f,0x74,0x00,0x1f,0x97,0xba,0xac,0xe3,0xa0,0xc8,0x20,0xe0,0xca,0x00,0xb5,0xcd,0xa8,0x12,0xf6,0xca,0xe4,0x26,0x24 },
{ 0x1f,0x74,0xf1,0x59,0x71,0x8f,0x41,0x05,0x51,0x62,0xa3,0x6f,0xf5,0x98,0xdd,0x37,0xe5,0xff,0x5e,0x15,0x1b,0x0a,0x02,0xd9,0x34,0xe4,0xfb,0x2a,0xc3,0xf3,0xd5,0x72 },
{ 0xad,0x7b,0xf1,0x0a,0x44,0xf2,0xbd,0xe1,0x94,0x36,0x7c,0x8b,0x6b,0x1e,0x94,0xd6,0x0d,0x3c,0xe1,0x4a,0xfb,0x1f,0x31,0x8f,0xf0,0x67,0x95,0x1e,0xec,0x01,0x7f,0x2e },
{ 0x26,0xb5,0xe9,0x51,0x78,0xa5,0x1e,0x59,0x90,0xdd,0xc9,0x5d,0x75,0xe7,0x7b,0xfe,0x3f,0x32,0x39,0x14,0xcc,0x3b,0x68,0x20,0x6b,0x33,0x69,0x0b,0x5e,0x40,0x29,0x52 },
{ 0xe9,0x0c,0xe6,0x6d,0xa6,0x8c,0x40,0x21,0xb3,0x3a,0x50,0x13,0x3d,0xf0,0xe7,0xbf,0xf9,0xf3,0x4d,0x2b,0x4a,0x3b,0x29,0xc4,0x0a,0x89,0x76,0x7c,0xe8,0x33,0xc6,0x75 },
{ 0xf8,0x3c,0x9f,0x1e,0xca,0x7d,0x61,0x51,0x31,0xd6,0x3d,0xae,0x9f,0x87,0xb6,0x1e,0xdc,0x58,0xa9,0x70,0xad,0xd7,0x6f,0xbe,0xa7,0x2e,0xe1,0xfa,0x2f,0x4f,0xe4,0x3f },
{ 0xb4,0xcd,0x51,0xc8,0xe7,0xa1,0x0a,0xe6,0x55,0x4c,0xfd,0xf7,0xb2,0xf2,0xac,0x0b,0x09,0x8d,0xed,0x5e,0xdb,0x52,0xf4,0x1f,0xe8,0x25,0x9b,0x37,0xc6,0x07,0xbe,0x06 },
{ 0xe7,0x35,0x4e,0x3f,0xad,0x48,0x38,0xc0,0x1d,0xd3,0xdb,0xf0,0xb2,0xaf,0xc0,0x77,0x9c,0x21,0x79,0x31,0x93,0x7c,0x31,0x9b,0x19,0x36,0xaf,0xc2,0x53,0x00,0x32,0x36 },
{ 0x00,0x75,0x23,0xdc,0xda,0x35,0x4d,0x9d,0x9a,0x84,0x92,0x08,0x37,0x66,0x18,0x16,0xf6,0xb8,0x34,0x4c,0xf3,0x14,0x2b,0xda,0xe9,0x94,0x7f,0xed,0x90,0x1a,0xcc,0x7e },
{ 0xee,0x8a,0x05,0x95,0xf3,0x9d,0x3e,0x8e,0x8b,0xa2,0x3b,0x94,0x80,0xa7,0xab,0x92,0x38,0xf4,0x2a,0x37,0x2d,0xee,0x4a,0xc5,0xbe,0xb9,0x25,0x6e,0x24,0x5b,0xe1,0x79 },
{ 0x9d,0x2c,0x86,0x1a,0x11,0x8e,0x98,0xb1,0xe1,0x58,0x5a,0xf7,0xa4,0x1f,0xaf,0x30,0x15,0xe3,0x00,0xbb,0x5a,0xce,0xd0,0x64,0x5a,0xaf,0x89,0x9c,0x21,0x95,0x04,0x0f },
{ 0xe6,0x22,0x0f,0xab,0xcf,0x17,0x61,0x6d,0x4a,0x99,0x7d,0x0c,0x92,0x43,0xef,0xed,0xdb,0x4f,0x9d,0xe1,0xa8,0x54,0x3c,0x4a,0x42,0x26,0x19,0xc3,0xf6,0x69,0xca,0x12 },
{ 0x17,0x24,0xff,0x37,0x41,0x36,0xa0,0x27,0xb9,0xc3,0x9f,0xea,0x4f,0xaa,0x3b,0x78,0x71,0xf1,0x6e,0x45,0xce,0xf0,0x6a,0x33,0xa8,0x21,0xd6,0x29,0x06,0xcc,0x7e,0x7d },
{ 0x82,0xa1,0xc2,0xfd,0x2b,0x00,0xcb,0xaf,0xe0,0x74,0x62,0xef,0xad,0xf3,0xdc,0x86,0x12,0x20,0x67,0x5a,0xea,0x87,0x16,0x02,0xc9,0xa7,0xed,0x04,0xd9,0x17,0xee,0x28 },
{ 0x2b,0x1f,0x06,0xab,0x4e,0xa2,0x55,0x83,0x75,0x6b,0x68,0x70,0x3b,0xbc,0x0f,0x10,0xc9,0xca,0x79,0x0a,0x78,0xba,0x9a,0xb9,0x22,0xd3,0x28,0x37,0xa4,0xcb,0x5b,0x01 },
{ 0x30,0x16,0x4c,0xfc,0x55,0x87,0x7a,0xcf,0x33,0x01,0x0d,0xdc,0x0a,0x0d,0x7f,0xa3,0xca,0x72,0x3f,0xad,0x87,0x95,0xec,0xe1,0xa6,0x79,0x28,0xa1,0xaa,0x81,0x25,0x7e },
{ 0x5e,0x6e,0xb2,0x07,0x0c,0x9b,0x47,0xbf,0xe5,0x9f,0xc3,0x66,0xe2,0xa5,0xca,0x62,0x12,0xd5,0x74,0xc9,0xac,0x3a,0x6d,0x1e,0xb7,0xa5,0xaf,0x03,0x29,0x9b,0x91,0x13 },
{ 0xfd,0x0e,0x45,0x86,0x5d,0x42,0x5c,0xee,0xae,0x28,0xc1,0x3e,0xd0,0xa8,0xce,0x2d,0x98,0x62,0xbf,0x6c,0x46,0x85,0xda,0xd6,0xb5,0xf3,0xf9,0x61,0x4f,0x59,0x22,0x13 },
{ 0x5a,0x91,0x60,0xe4,0xba,0x68,0x58,0x13,0xf0,0x34,0x1a,0xc9,0x4e,0x96,0xc4,0x54,0xd9,0xd1,0x5b,0x6d,0xfd,0x1f,0x1f,0xb0,0x10,0x45,0xc9,0x12,0xda,0x3c,0xde,0x00 },
{ 0x67,0xc0,0x01,0xdb,0x4d,0x3c,0x2d,0xc4,0x8d,0x57,0x97,0xea,0x23,0x78,0x43,0x86,0xd9,0x60,0xf0,0xdc,0xad,0x22,0x6c,0xdf,0xa0,0x1c,0x18,0xa8,0x43,0xca,0x5d,0x1a },
{ 0x70,0xaa,0xa6,0xd2,0x4e,0xd2,0x79,0x2c,0x09,0x63,0xbb,0x3d,0x8e,0x0f,0xbc,0xa3,0xa6,0x35,0x7e,0x46,0x68,0x0c,0x1b,0xdc,0x37,0x02,0xee,0x9f,0xa3,0xa9,0x48,0x13 },
{ 0x86,0xc5,0xbb,0x2d,0xd9,0xf9,0xef,0x4a,0x70,0xb7,0x30,0x30,0x3e,0x24,0x20,0xd6,0xd3,0x9a,0xbd,0x3a,0x06,0x0a,0xc7,0xa0,0xf1,0x2c,0x73,0x1f,0x0b,0x53,0xe1,0x51 },
{ 0xe2,0xff,0x88,0x59,0x92,0xcf,0x11,0x6f,0x47,0x4a,0x3d,0xf3,0xda,0x74,0x99,0xe0,0x13,0x44,0x60,0x50,0x4f,0xa4,0x14,0x8b,0x9f,0xff,0x7f,0xde,0xd6,0xfc,0x2e,0x30 },
{ 0x28,0x6f,0x27,0x1e,0xd4,0xce,0xf4,0x76,0xea,0xed,0x75,0x20,0xcf,0x7f,0x88,0xad,0x23,0x27,0xbd,0x01,0x26,0x54,0xe9,0x8c,0x77,0x9a,0x6b,0xe7,0x58,0x8b,0xb4,0x02 },
{ 0xa1,0xd0,0x81,0xea,0xb3,0x5a,0x21,0x65,0x7f,0x60,0x00,0x9a,0xb7,0x8a,0x6e,0x05,0x2b,0x1c,0xc4,0x74,0xbf,0x7a,0xd3,0x09,0xb4,0x80,0xaf,0xd0,0x97,0x06,0x9e,0x44 },
{ 0x36,0x17,0xc5,0xd5,0xad,0x5a,0xe3,0x94,0x1e,0x77,0x3b,0x8f,0x3d,0xe1,0xf8,0xe3,0x0e,0xdc,0x34,0x96,0x71,0xb2,0xb3,0x05,0x7e,0x49,0x6a,0x06,0x49,0x67,0x79,0x2f },
{ 0xb4,0xe3,0x01,0x0d,0xba,0x1f,0xe2,0x4e,0xee,0x08,0xae,0xfc,0x2c,0x19,0xf9,0xa4,0x9d,0xf8,0xe4,0x5f,0x94,0x38,0x9e,0x06,0xbb,0x21,0xfb,0x3b,0x87,0xcb,0x6f,0x62 },
{ 0xc7,0x76,0x0f,0xfb,0x4a,0xd2,0xeb,0x53,0x85,0xd8,0x14,0xa9,0x08,0x40,0xad,0xcc,0x0f,0x79,0xf2,0x29,0xb8,0xb5,0x7d,0x20,0xd1,0x4f,0x24,0xbe,0xad,0xab,0xe6,0x2d },
{ 0x52,0x64,0x76,0xdb,0x1f,0x80,0x92,0x47,0x3d,0x15,0x33,0xc1,0xf1,0xd3,0x8c,0x55,0x05,0xd1,0xd6,0xcd,0xb4,0xd0,0x6e,0x55,0x6d,0x83,0x47,0xcf,0xfa,0x00,0x0b,0x50 },
{ 0x35,0xf4,0x96,0x70,0x24,0x75,0x0b,0x47,0x6f,0xc6,0x3e,0x43,0x59,0x44,0x3f,0x8b,0x3c,0x98,0xf2,0x09,0x05,0x9e,0x79,0x81,0xe9,0x7b,0xa6,0xb8,0x1c,0x08,0xf5,0x71 },
{ 0xf8,0x38,0x0e,0x1d,0x45,0x9a,0x1b,0x06,0xbc,0xa3,0x59,0x9f,0x83,0x0c,0x44,0x1a,0xd8,0xc9,0x1f,0xc4,0xdc,0xf1,0x6f,0xe4,0xa8,0x34,0xee,0x57,0xd2,0x54,0x2b,0x77 },
{ 0xc6,0x19,0x37,0x27,0x6f,0xee,0x76,0xb4,0x2b,0xe0,0x77,0x08,0x55,0x37,0xf7,0x50,0x82,0xfc,0xaf,0xd5,0xd1,0xca,0xa2,0xe9,0xda,0x8f,0x33,0x65,0xea,0x8e,0x2a,0x16 },
{ 0xd2,0xb5,0x9b,0xaa,0x6c,0x51,0xf4,0x2e,0x71,0x39,0x52,0xdb,0xef,0x43,0x2d,0xfc,0x4f,0xae,0x24,0xde,0x4d,0xdf,0x5e,0x6d,0x07,0x3c,0xf6,0x6c,0x72,0x29,0xbd,0x00 },
{ 0x00,0x58,0x2c,0xdc,0xa9,0x73,0xdb,0x16,0xa7,0x56,0xa6,0x6a,0xb2,0x77,0x52,0x17,0xd9,0xc3,0x88,0x2b,0x7d,0x0d,0x79,0x19,0x88,0xae,0xd2,0x13,0x47,0xf0,0x4f,0x6c },
{ 0xb9,0xe4,0x19,0x44,0xd4,0xb4,0x29,0xd8,0x8f,0x44,0xb8,0xcd,0x96,0x04,0xbf,0xff,0xee,0xfb,0x06,0x01,0xf0,0x97,0x29,0x4f,0x52,0xf6,0x75,0x56,0xd8,0xf6,0x53,0x60 },
{ 0xed,0xf5,0x78,0xe3,0x49,0xd6,0x9a,0x29,0xb8,0x4c,0x84,0xff,0xf3,0xff,0x14,0x0c,0xa1,0x2a,0xf0,0xd9,0xed,0x3c,0xd3,0xa3,0x16,0x52,0xb7,0x92,0x18,0x63,0xbc,0x57 },
{ 0x89,0x19,0x17,0x8a,0x17,0xbb,0x74,0x64,0xf4,0xdc,0x1a,0x25,0xe6,0x3d,0x2f,0xb3,0x7a,0xb3,0xc4,0xaf,0x52,0x30,0xc4,0xc9,0x93,0x01,0x1f,0xd7,0x9a,0x79,0xd2,0x6a },
{ 0x0d,0x27,0xa8,0x55,0x15,0xc0,0x9a,0x9f,0x82,0x6a,0xfd,0x2d,0x42,0x21,0x6a,0x2b,0x6a,0x9d,0x03,0x36,0x29,0x31,0xca,0xe7,0xac,0x3d,0x55,0x24,0x93,0x0c,0x32,0x1f },
{ 0x7d,0x33,0xfb,0x91,0x05,0xaa,0x60,0x3d,0x8b,0x27,0xa4,0xea,0x4f,0xc1,0x16,0x07,0xc5,0xc1,0xa4,0xed,0x48,0x7a,0xb1,0x56,0xeb,0xac,0x58,0x6f,0x94,0x0f,0xa4,0x7b },
{ 0x40,0x96,0xad,0xfd,0x0f,0xf3,0x8f,0xe9,0x32,0x3f,0xa8,0x8e,0x9e,0xe1,0xac,0xf1,0xad,0x7d,0x84,0xee,0x75,0x65,0x33,0x1b,0x54,0x07,0x93,0xd8,0xfd,0x24,0xd0,0x4d },
{ 0x9f,0xab,0x5e,0x1f,0x9c,0xea,0x54,0xa2,0x0e,0xa9,0xaf,0x1a,0xf8,0x7e,0xba,0xdd,0x15,0x21,0x19,0x82,0x38,0x59,0xfe,0xe8,0xcf,0xe5,0x13,0xd5,0xe0,0xe4,0x09,0x37 },
{ 0x0a,0x38,0x41,0x32,0xfe,0x52,0xf7,0xd3,0x0f,0x2d,0xea,0x67,0x4a,0x85,0xbf,0xa4,0xcd,0xa5,0xbb,0xbe,0x11,0xca,0x2e,0xd0,0x5a,0x79,0x62,0x87,0xa9,0x32,0xf2,0x04 },
{ 0x32,0x18,0xbc,0x96,0x81,0xec,0x1f,0xdb,0x2c,0x37,0x87,0xa8,0x9e,0x66,0x2d,0x4a,0x52,0xdf,0xb8,0x9e,0xf6,0x66,0x7c,0x62,0x69,0x09,0x4d,0x82,0x79,0x06,0xa0,0x3c },
{ 0xf2,0x0a,0x94,0x43,0x69,0x74,0x6e,0x53,0x5a,0x92,0xee,0xaf,0xc2,0x1b,0xb9,0x61,0x4b,0xda,0x07,0xae,0x15,0xc4,0x9b,0xcf,0x99,0x11,0xe1,0x79,0x7a,0xf5,0xe0,0x26 },
{ 0xe2,0x2a,0xe2,0xff,0x47,0x0a,0x6f,0xfa,0x29,0x02,0x8f,0x3b,0xcf,0xdd,0x99,0x9a,0x10,0x08,0x29,0xb4,0xec,0x00,0x60,0x46,0x31,0xed,0x6e,0x8a,0x2f,0x94,0x91,0x20 },
{ 0x44,0x17,0x3b,0xe4,0x2b,0xdd,0x0a,0xfd,0x2a,0x85,0xcb,0x14,0xb2,0x9e,0x7a,0x33,0x2d,0x85,0x21,0xc3,0x1f,0x42,0x4d,0xd0,0xb4,0x78,0x65,0xbc,0x84,0x04,0x91,0x76 },
{ 0xab,0x48,0x5a,0x16,0x4e,0x03,0xb3,0xa4,0xf5,0x86,0xe7,0x58,0x53,0x70,0x42,0x84,0x28,0x16,0x2e,0xe3,0xab,0x4d,0xeb,0x0f,0xca,0x97,0x8a,0x00,0x5e,0xe6,0x7a,0x2f },
{ 0x87,0xb4,0x87,0xe4,0xe5,0x92,0xdb,0x44,0x45,0x94,0xf8,0x4d,0x30,0x0d,0x51,0x8e,0xbe,0x42,0x0f,0xaf,0x49,0xd3,0x85,0x37,0x0e,0x14,0xf5,0xa3,0x86,0xd2,0x74,0x67 },
{ 0xc7,0x65,0x04,0x1b,0xbd,0xa2,0x61,0x48,0x93,0x5e,0x58,0x8d,0x73,0xb4,0xca,0xbb,0xf9,0x1d,0xdc,0xdc,0xde,0x05,0xbc,0x9f,0x23,0xcd,0x6a,0x79,0x9c,0x8e,0x3b,0x67 },
{ 0x91,0x5b,0x03,0x72,0x98,0x48,0xef,0xfe,0xed,0x53,0x54,0xc4,0x48,0xa1,0x67,0x15,0xdd,0x29,0xdd,0x52,0x39,0xed,0x94,0x64,0x57,0x30,0x08,0x67,0xf3,0x32,0xf4,0x68 },
{ 0x35,0x78,0xd3,0x1e,0xeb,0x79,0xe2,0xa6,0x1f,0x2a,0xd6,0x06,0x3b,0xf8,0x0e,0x6f,0x35,0x90,0x5c,0x52,0x7d,0xd6,0x48,0xa5,0x83,0xc0,0x7d,0xe5,0x50,0xda,0x6e,0x11 },
{ 0x3c,0xb6,0xb7,0x2e,0xea,0xcf,0xd1,0xde,0x08,0x84,0xc1,0x5c,0x3c,0x2b,0xa5,0xc0,0x21,0xac,0xc2,0xcd,0xe3,0xf7,0x98,0x9e,0x1b,0xb5,0xee,0xa0,0x42,0x44,0x74,0x0d },
{ 0x4a,0x76,0xf6,0xdb,0x1b,0x8e,0x6b,0xda,0x78,0xb8,0x54,0xdf,0xf7,0xf4,0xc4,0xee,0x7a,0xf3,0xdb,0xe5,0xf7,0x43,0x68,0x96,0xdd,0xd5,0xb1,0xc3,0x88,0xb4,0x7a,0x12 },
{ 0x28,0x65,0xad,0x3e,0xca,0x0c,0xba,0xbc,0x9e,0x8c,0x2d,0x85,0x60,0xcc,0x55,0x66,0x2d,0x22,0x07,0xed,0x9f,0x8f,0xc4,0xbf,0xaf,0x73,0x20,0xa7,0x7c,0x6d,0x7a,0x67 },
{ 0xfc,0x05,0xcd,0xfe,0xd7,0x02,0xa4,0xba,0xac,0x34,0x9b,0xf9,0xbc,0x04,0xa5,0x23,0xe8,0x04,0xa7,0xab,0x57,0xaa,0x76,0xb0,0x0f,0x9a,0x12,0xdd,0x7f,0x0f,0xaf,0x5c },
{ 0xfe,0x00,0x25,0xaa,0x7b,0xf1,0x00,0x0f,0x6c,0xaf,0x6e,0x34,0xb9,0xed,0xcd,0x3f,0x41,0x37,0xed,0x74,0x4b,0x19,0x72,0x26,0xd0,0x7a,0x7a,0x5b,0xe1,0xcd,0xf7,0x45 },
{ 0x8b,0xe3,0x02,0x95,0xe8,0x33,0xe3,0x7a,0xb4,0x90,0x21,0xc8,0xbb,0x0c,0x8c,0x5e,0x9d,0x63,0xf2,0xa2,0x56,0x5d,0x08,0x72,0x7f,0x9b,0xea,0xfb,0xaf,0x93,0x80,0x40 },
{ 0x95,0xbc,0xce,0x33,0x7b,0x0a,0x65,0x5b,0xe0,0x26,0x1a,0x40,0x68,0x28,0x4f,0xb4,0xb1,0x21,0x11,0x1b,0xd2,0x7a,0x64,0x43,0xb2,0x39,0x75,0x34,0x01,0x05,0xdc,0x17 },
{ 0x36,0x12,0x3f,0xe0,0x92,0x37,0xfe,0xbf,0xcc,0xb6,0xc5,0x4a,0x14,0x14,0x7d,0xab,0xd1,0x22,0xaa,0x1b,0x08,0xf2,0x97,0xb0,0x0c,0xdb,0x21,0x2c,0xfa,0x7f,0x60,0x4c },
{ 0x54,0xbc,0x2f,0xf4,0x02,0x89,0x70,0x2c,0x69,0x78,0x5d,0xe5,0x16,0x65,0xf0,0xc8,0x69,0x2e,0xc7,0xde,0xca,0x6a,0x64,0x63,0x53,0xec,0xe0,0xd1,0xd3,0xd9,0xd1,0x09 },
{ 0xb5,0xb9,0x1a,0x6b,0xb0,0xc1,0x94,0x9a,0x52,0x24,0x48,0xb8,0x71,0x3e,0x1b,0xfe,0xb5,0x56,0x23,0x3c,0x18,0xb3,0xdf,0x81,0x10,0xe7,0xd5,0x63,0x04,0xc3,0xb7,0x46 },
{ 0x51,0x4f,0xd2,0xb3,0xf8,0xac,0xe2,0x23,0xfb,0x3a,0xee,0x33,0x23,0xea,0x95,0xd3,0xa2,0xec,0x58,0x37,0xd9,0x80,0x45,0x0c,0x0d,0x2f,0xb4,0x33,0xb6,0xe0,0x4a,0x32 },
{ 0xaf,0x0e,0x94,0xaa,0x48,0xd9,0xf8,0xb6,0x79,0x2a,0x2c,0xe6,0xfa,0x9d,0xd3,0xa0,0x54,0xaf,0x84,0xa8,0xfb,0xcf,0xcf,0xe1,0x0b,0x24,0xa7,0xce,0xb8,0x97,0xe6,0x12 },
{ 0x92,0xed,0xc3,0x77,0x1b,0xf5,0xfc,0x7e,0xbe,0x08,0x9e,0xfc,0x51,0x5f,0x2a,0x50,0x51,0x4c,0xc5,0x90,0xf0,0x14,0x7c,0x9c,0xcb,0xd4,0x3e,0xd4,0x88,0x6d,0xc0,0x49 },
{ 0x11,0xd9,0x98,0x18,0x64,0xfe,0x46,0x51,0x14,0xe9,0xda,0xe6,0x9d,0x2d,0xc3,0x11,0x6c,0x72,0x67,0x93,0xd2,0xc9,0xd0,0xbc,0x74,0x31,0x7c,0xb7,0x96,0xd0,0x99,0x0b },
{ 0xbe,0x10,0x07,0x57,0x28,0xa1,0x6b,0x76,0xa8,0x14,0x31,0x8b,0x27,0x4d,0x2d,0xa7,0x90,0x3c,0xc2,0xaa,0x53,0x32,0x04,0x4a,0xd6,0x13,0x2d,0x8e,0x00,0xea,0xb1,0x05 },
{ 0x61,0x52,0xc2,0x38,0xc7,0xc7,0x20,0xe8,0xb6,0xfe,0xf8,0xd4,0xf1,0x06,0x26,0x0d,0xcb,0x02,0xbe,0x51,0x9f,0x9f,0xd7,0xad,0x64,0x65,0xf7,0x62,0xac,0x32,0xf9,0x0f },
{ 0x9a,0x3e,0xe0,0xae,0xb0,0x2b,0x46,0x04,0x12,0x7f,0x98,0x1e,0x2f,0x75,0xbb,0x92,0x01,0xbe,0xe0,0x24,0xb6,0x8d,0xa0,0x8b,0x43,0x01,0x65,0x67,0x8a,0xa9,0x1b,0x72 },
{ 0xfa,0x00,0xc4,0xd8,0xe4,0xf5,0xbe,0x7b,0x68,0xa9,0xa6,0xf4,0xd5,0x1a,0xb6,0x2e,0xbf,0x92,0x19,0xf7,0xc8,0x1c,0x31,0x65,0x52,0xef,0x30,0x93,0x34,0x60,0xb4,0x62 },
{ 0x6d,0x0f,0xad,0xfd,0xff,0xd6,0xa5,0xc4,0x16,0x6c,0x72,0x4a,0x1b,0x42,0xf2,0xe3,0xb8,0xe9,0x2a,0xeb,0x33,0x35,0x69,0x2e,0x22,0x3a,0xbf,0x61,0x34,0x2c,0x37,0x61 },
{ 0x6f,0x6c,0x90,0x82,0x65,0x23,0x00,0x05,0x30,0x70,0x5f,0xa3,0x94,0x10,0xbd,0xf7,0x5c,0xd7,0x75,0xbd,0xd4,0x48,0xc2,0x6c,0x6e,0x03,0x50,0x8c,0x71,0xe4,0x80,0x39 },
{ 0x40,0x7e,0x18,0xcf,0xb4,0x80,0x56,0x72,0x3c,0x05,0xb6,0x68,0xad,0x2f,0x32,0xa8,0x15,0xe7,0x0a,0x92,0x2d,0xe3,0x67,0xe7,0x8d,0x1e,0x7e,0x8d,0xf1,0xc4,0xe1,0x25 },
{ 0x53,0x4e,0xb9,0x93,0xce,0x36,0xd6,0x35,0x71,0x0c,0x98,0x3d,0xa2,0x2f,0x9a,0xe9,0xc9,0x36,0x4e,0xc4,0x1d,0x7d,0x8d,0x26,0xe9,0xe4,0x5f,0x3a,0xda,0xfe,0x42,0x60 },
{ 0xe1,0x09,0xb0,0x74,0xf6,0xbe,0xde,0x7f,0x3d,0xfd,0xde,0x31,0xa4,0x70,0x11,0xab,0x24,0x01,0x05,0xea,0x0d,0xd3,0x7a,0x9c,0x65,0x16,0x55,0x49,0x10,0xab,0x0c,0x3c },
{ 0x46,0x07,0xd6,0x3b,0x28,0x61,0x5e,0xcb,0x83,0xc5,0xe1,0xdc,0xbc,0x2f,0xd9,0x3a,0x34,0x6e,0x62,0xec,0x4a,0xb6,0xe3,0xf6,0xd0,0x16,0x23,0x3f,0xaf,0x24,0x2f,0x19 },
{ 0xec,0x42,0x64,0x86,0x00,0xbd,0xe6,0x7b,0x28,0xf8,0xf8,0x38,0xcb,0x37,0xfc,0x59,0x5a,0x77,0x0c,0x60,0x78,0x86,0x41,0xbd,0x47,0xc3,0xf1,0x24,0xf3,0x20,0x00,0x3b },
{ 0xfa,0xee,0x54,0x77,0x92,0x10,0x27,0xfc,0x1b,0x4a,0x93,0xfa,0xcc,0x11,0x57,0x45,0x05,0x02,0x0f,0x9a,0x61,0x77,0x58,0xa7,0xdd,0xfe,0xa4,0x03,0xa8,0xdb,0xcf,0x02 },
{ 0xae,0x10,0xc7,0x2a,0x6c,0xa5,0xf7,0x5c,0x0a,0x4a,0x7e,0x1b,0xbe,0x9d,0xaf,0x6f,0x25,0x72,0xe3,0x20,0x03,0x53,0xc7,0x34,0xa5,0xc9,0xaf,0x47,0x72,0x2f,0x53,0x18 },
{ 0x77,0xb4,0x0f,0x1d,0xcc,0xb1,0x89,0x72,0x82,0x9b,0xd5,0xfc,0x4a,0x64,0x0e,0xd5,0x46,0xda,0xb1,0x05,0xf0,0x10,0x1b,0xdd,0x3a,0x15,0x0e,0xb4,0xf4,0x93,0xfa,0x75 },
{ 0xf4,0x41,0x4b,0x80,0x09,0x92,0x67,0x8f,0x7a,0x4d,0x0f,0x71,0x1f,0xba,0xaf,0xf4,0x14,0x06,0xcf,0x9c,0xa3,0x8d,0x92,0x24,0x20,0x61,0xea,0xe0,0xaf,0xd4,0x5c,0x34 },
{ 0x08,0x08,0x32,0x73,0x5e,0x47,0x2c,0xef,0xa3,0x7c,0xfd,0x1a,0x93,0x70,0xc7,0x11,0x13,0x85,0xa6,0x91,0x3f,0x9a,0x99,0x7f,0xbe,0x0d,0x03,0xc2,0x79,0xb2,0x58,0x7f },
{ 0x0f,0xb2,0x76,0xf4,0x09,0x94,0x46,0x07,0x18,0x8b,0xec,0x06,0xb3,0x82,0x60,0x1a,0x0a,0xad,0xf7,0xab,0x09,0x15,0x94,0x4b,0x72,0xeb,0xd6,0x0c,0xea,0x1a,0xf5,0x5a },
{ 0xaf,0x03,0x2b,0x91,0xf6,0xf8,0xbd,0x87,0x27,0x10,0xf5,0xe3,0x09,0xc5,0x30,0x81,0x9d,0x08,0x3d,0x05,0xc8,0xf4,0x93,0x9f,0xf3,0xe5,0xfd,0xa4,0xf0,0xd6,0x52,0x13 },
{ 0xb4,0xdf,0x30,0x98,0x0d,0xf1,0x18,0x37,0x79,0xcb,0x3c,0x2d,0x13,0x7d,0xa7,0x23,0xe3,0x64,0x38,0x2b,0x13,0x9a,0x32,0x67,0x98,0x94,0x12,0x76,0x05,0x4a,0x75,0x46 },
{ 0x00,0x8e,0xb5,0xf0,0x57,0x5d,0xae,0x77,0xc9,0x0d,0x3c,0x8f,0x03,0x09,0x83,0x71,0xac,0xc1,0x16,0xf9,0x3f,0xeb,0x5b,0x24,0x1f,0x7e,0xae,0x9f,0xa2,0xf6,0xf1,0x5a },
{ 0xd3,0x29,0x66,0x6e,0x26,0x55,0x29,0x62,0xe3,0xd1,0xae,0xdb,0x33,0xb6,0xfd,0xac,0x43,0xa2,0xb6,0xf8,0x00,0xb0,0xf7,0x04,0x97,0x17,0x94,0x01,0x52,0x4c,0x22,0x6b },
{ 0xd2,0x35,0x49,0x4b,0x06,0x43,0xd9,0x28,0x13,0x63,0x8c,0xdd,0xd1,0x26,0xe2,0x8b,0x0c,0xf6,0x56,0x49,0x5e,0x6e,0x91,0xb3,0x5d,0x33,0xe4,0x62,0x73,0x60,0x8b,0x76 },
{ 0xb3,0xac,0x71,0x13,0x63,0x15,0xb1,0xa1,0xf5,0xe4,0x96,0xf5,0x8b,0xb2,0x1f,0xea,0x31,0xcc,0x48,0x1a,0x17,0xc6,0x37,0xb6,0x2d,0xee,0x9c,0xb9,0x88,0xa3,0xe0,0x4f },
{ 0xd1,0x74,0xe6,0xaa,0x9d,0x4c,0x26,0x86,0x7c,0xbf,0x85,0xff,0xae,0xd7,0x5e,0x88,0xa2,0xda,0x7d,0x0f,0x55,0xf7,0x6e,0x36,0x15,0xb0,0x9a,0x5d,0xa2,0x80,0xdd,0x50 },
{ 0xc9,0xcc,0xf5,0x2c,0xc6,0x59,0xa9,0xdf,0x41,0x07,0x91,0xd5,0x48,0x00,0xd1,0x0b,0x4c,0xbe,0xad,0xf0,0x0a,0x3a,0x5b,0x70,0xdd,0x81,0x6d,0x75,0xb3,0x28,0x8b,0x0e },
{ 0x28,0x3a,0x77,0xff,0x39,0x9a,0x51,0x68,0x6c,0x2d,0xb7,0xa3,0x36,0x7b,0xb6,0x66,0x7a,0x26,0x9b,0xdc,0x9c,0xb2,0x7a,0x3c,0xd0,0xfc,0x34,0xaf,0x33,0xdd,0x0a,0x48 },
{ 0x9b,0xb5,0xb6,0x19,0xfd,0x1d,0x0b,0xfa,0x29,0xb2,0x8e,0xdd,0xad,0xeb,0xf1,0x7d,0x13,0xcd,0xf0,0x62,0x30,0x34,0x5c,0xfc,0x10,0x03,0xd7,0x06,0x2c,0xf8,0xfc,0x1f },
{ 0x54,0x63,0x73,0xa5,0xd0,0x3f,0xe2,0x18,0x05,0x14,0xae,0x4e,0xe8,0x5e,0xe9,0xfd,0xb9,0x6b,0x32,0xf4,0x2e,0x0e,0x4b,0x2c,0xab,0x84,0xd7,0x5e,0xd5,0x3e,0x80,0x33 },
{ 0xb6,0xea,0x35,0xe4,0xba,0xe6,0x98,0x78,0x06,0xcb,0x8a,0x66,0xec,0xe4,0xc1,0x28,0xf4,0x64,0xff,0x64,0xf2,0xfc,0x36,0x0f,0xbe,0x0a,0xde,0xe5,0xdb,0x3a,0x49,0x12 },
{ 0x80,0xeb,0xa2,0x21,0x8a,0x3b,0xed,0x1c,0xcb,0x2d,0x94,0x28,0xf8,0x6b,0xc1,0xdb,0xce,0x76,0xf7,0x8c,0x30,0x68,0x9e,0x7c,0xc3,0x3f,0xf1,0xec,0x8c,0x3a,0xd5,0x12 },
{ 0x90,0x92,0xda,0x19,0xa2,0x89,0x74,0xab,0x9f,0xc5,0xad,0x76,0xa9,0x02,0x0e,0x64,0x5a,0x5d,0x57,0x67,0x14,0xd2,0xff,0x06,0x91,0x41,0x20,0xeb,0x01,0xe0,0xa9,0x07 },
{ 0xc4,0xa1,0xe5,0x87,0x30,0x0f,0xfa,0x30,0x13,0x0c,0x67,0xda,0xc1,0xc6,0x1a,0xe5,0xb8,0x7d,0xaa,0x4c,0xba,0x69,0x91,0xad,0x6c,0xf5,0x4c,0x38,0xa4,0x7d,0x30,0x00 },
{ 0xdd,0x04,0x5f,0xf6,0xf2,0xdb,0x0f,0x98,0x86,0x72,0xcd,0x69,0x5d,0x8f,0xe9,0x3f,0xc8,0x86,0x6c,0xb0,0xa0,0x06,0xd8,0x57,0xa2,0xa6,0x1a,0x2b,0xe4,0xdf,0x7e,0x3e },
{ 0x5f,0x67,0x46,0x72,0x1c,0xe8,0x8b,0xc9,0x78,0x24,0xcd,0x54,0xaf,0x5e,0x0a,0x0c,0x66,0x1a,0x7f,0x9a,0xf6,0x26,0xa5,0xa2,0x5b,0x75,0xf5,0x08,0xf1,0x49,0xdc,0x40 },
{ 0x95,0x83,0x7d,0x76,0x9a,0x03,0x56,0x2a,0x4a,0x89,0xab,0x4b,0xd8,0x3c,0xe6,0x48,0x9c,0x5e,0x44,0xba,0xb5,0x91,0x33,0xda,0x04,0x88,0x45,0x2d,0xa5,0x17,0x10,0x06 },
{ 0x3c,0xc4,0xb4,0xd9,0xe8,0x15,0x93,0x1e,0x1f,0xf4,0xa5,0xaa,0x84,0x4d,0x78,0x88,0x1c,0xd8,0x4e,0x34,0x44,0xf7,0x81,0x0a,0x7c,0xf6,0x05,0x9e,0x3e,0x86,0x43,0x72 },
{ 0x7e,0x74,0x85,0x24,0x56,0xde,0x09,0xa5,0xb0,0xd6,0xeb,0xf7,0x63,0x26,0xfb,0xb5,0x78,0x46,0xb4,0x1a,0x07,0xa3,0x41,0xb0,0x38,0x5e,0x7f,0x4e,0xe1,0x17,0x71,0x47 },
{ 0xa2,0xdb,0x34,0xf7,0x4e,0x77,0x81,0x47,0x99,0x7e,0x24,0x1e,0x9f,0x6d,0x4f,0x52,0x1a,0xa8,0x0b,0xd5,0x44,0x3d,0x42,0x24,0x42,0x6c,0x9b,0x5c,0xeb,0xb0,0x9b,0x3d },
{ 0xf5,0xa7,0xb7,0xf6,0x6f,0x7f,0x17,0xc1,0x6c,0x27,0xe1,0x59,0x38,0x98,0xdf,0x53,0xf0,0xd1,0x1b,0xdd,0x8f,0x02,0x79,0x79,0xca,0xfc,0x24,0xd2,0x06,0xb7,0xe3,0x2c },
{ 0xee,0xf3,0x3c,0x17,0x9f,0x81,0x6b,0xda,0x03,0x4e,0x43,0xb0,0x11,0xff,0x1c,0x38,0x73,0x06,0xed,0xc7,0xce,0x5b,0xaa,0x20,0xc6,0x6f,0x1e,0x84,0x92,0xd7,0xa3,0x11 },
{ 0x29,0xf9,0x9f,0xa7,0x31,0xa0,0xec,0x1f,0xd7,0x08,0x7d,0xdf,0xbb,0x59,0x7d,0xcb,0x98,0x36,0xd9,0x55,0x29,0x40,0xdf,0xe0,0x45,0x20,0x44,0xdc,0x85,0xd6,0xb0,0x36 },
{ 0xe7,0x18,0xcb,0xb1,0x93,0x6f,0x94,0x3b,0x9a,0x68,0xeb,0xaf,0xee,0x1b,0x80,0xa9,0x83,0xae,0x3a,0xe3,0xb9,0x54,0xa7,0xca,0xfc,0x16,0x70,0x2a,0x91,0x87,0x1c,0x2c },
{ 0x6e,0x67,0x99,0x76,0x1e,0x15,0x79,0x30,0xfd,0x32,0x9f,0x81,0x91,0xa0,0x83,0xc6,0xd3,0x99,0xbf,0x0f,0xac,0xd5,0x86,0x9f,0xc5,0x9a,0xd3,0x4c,0x67,0xa7,0x5e,0x6c },
{ 0x30,0xd5,0x64,0x99,0x1e,0x8b,0x78,0x8b,0x3e,0x27,0x61,0x40,0x58,0x4e,0x41,0x1b,0x40,0xa2,0xcb,0xa5,0xc6,0x6a,0x38,0xf1,0x6f,0xdf,0xa6,0xb4,0x22,0xaf,0xaa,0x71 },
{ 0x70,0xa6,0x93,0xf5,0x03,0xa2,0x00,0x0f,0xa5,0x3f,0x0a,0x98,0x10,0x3a,0xc2,0xc8,0x30,0x04,0x7e,0x88,0xa6,0x1c,0xd9,0xc6,0x74,0x04,0xd0,0xe2,0xf1,0x36,0x6a,0x17 },
{ 0xbd,0xa2,0xec,0x17,0x87,0xda,0x8e,0xcc,0x23,0x34,0x01,0x26,0xb5,0x8e,0x25,0xd0,0x6f,0x4f,0x24,0xc2,0x03,0xfe,0x12,0xc9,0x97,0xa0,0x94,0x81,0xa8,0xe2,0x2d,0x0e },
{ 0x25,0xf1,0x9f,0x49,0xb3,0xc2,0x17,0x34,0x9d,0x1c,0x56,0xfb,0xa5,0xfb,0x01,0xa5,0xed,0x4e,0xec,0xc6,0x83,0x12,0xe7,0xd4,0x29,0xee,0xc2,0xc2,0xb2,0x1a,0x9e,0x4c },
{ 0x33,0x1c,0x81,0x26,0xbb,0x5b,0x15,0xd7,0x5a,0x64,0x46,0x2c,0x9c,0x09,0xa8,0x84,0x57,0x13,0xb1,0x49,0x74,0xee,0x9c,0x61,0x21,0x33,0x36,0x26,0xe2,0xd7,0xb5,0x0e },
{ 0xaa,0xb0,0x7c,0x63,0xff,0x89,0x3a,0x8a,0x86,0x31,0xd9,0xea,0xb6,0x09,0x48,0x2d,0x1d,0x9b,0x51,0x5a,0x98,0x95,0x33,0x13,0xd4,0x50,0xc8,0x40,0x94,0xb5,0x53,0x0e },
{ 0x06,0xc4,0xae,0x12,0x5a,0x8c,0xf6,0xb5,0xa4,0xf9,0x0e,0x72,0xc7,0x5c,0x40,0xe8,0xbc,0x27,0x0e,0x6b,0x6d,0xca,0xba,0x2b,0x19,0xe5,0x80,0x11,0xac,0x4a,0xc8,0x1a },
{ 0x91,0xcd,0xf6,0x17,0x85,0x2c,0xa0,0x1f,0xc1,0x2a,0x08,0x69,0x20,0xc1,0x26,0xac,0x87,0x46,0x47,0xd1,0x26,0xec,0x68,0xcb,0x87,0x0c,0x57,0xa1,0x15,0xea,0x18,0x6d },
{ 0x19,0xfa,0x34,0xd6,0xfb,0x3c,0xd7,0x4a,0x11,0xcf,0xfd,0x66,0xc2,0x69,0xc1,0x68,0x6d,0x6a,0x62,0xca,0xa2,0x6f,0xff,0x9f,0xe3,0x69,0x6a,0xde,0xd9,0x72,0x8c,0x21 },
{ 0x23,0x6d,0x74,0x08,0xd9,0x04,0x9d,0xc5,0x10,0x96,0xb1,0xe9,0x9b,0xe6,0x11,0xa4,0x02,0x4a,0xe1,0x02,0xc6,0x7b,0x84,0x52,0x91,0xf4,0xa8,0xdd,0x0b,0x97,0x6f,0x30 },
{ 0xd1,0x29,0x37,0x66,0xb5,0xdd,0xca,0x9a,0xaa,0x27,0x3a,0x41,0x85,0xe6,0x14,0x39,0xc5,0x03,0x0b,0x86,0x87,0xa3,0x31,0xb8,0x8a,0xf0,0x8e,0xa5,0xd9,0x96,0x6a,0x06 },
{ 0x70,0xa9,0xad,0x37,0xd7,0xd9,0x84,0x4f,0x27,0x22,0x6d,0xe3,0x0a,0x01,0x90,0xff,0x6a,0x86,0x6b,0xaf,0x5b,0x2c,0xa4,0x6e,0x29,0x61,0x0e,0xd2,0x54,0x7a,0x70,0x3f },
{ 0x12,0x17,0xe9,0x90,0x68,0xd4,0x97,0xbe,0xde,0x77,0xd8,0x0d,0xf8,0xfa,0x12,0x58,0x37,0xd3,0x2c,0x78,0xeb,0x32,0xde,0xf6,0x1e,0x30,0x30,0xce,0xd3,0xd5,0xda,0x7d },
{ 0x1c,0x92,0xad,0x3f,0x32,0xa3,0x52,0xbe,0xbf,0xb7,0x64,0x1d,0x9d,0x9b,0xb4,0x20,0x08,0x89,0x65,0x3d,0xbd,0x2d,0xfc,0x09,0x20,0xef,0x1e,0xcf,0xdc,0x4a,0x3b,0x65 },
{ 0x77,0xb9,0xdf,0xea,0xe8,0x3a,0x16,0x0d,0xe9,0x20,0xf9,0xf8,0xff,0xf6,0xa9,0x4d,0x67,0xd6,0x0e,0x6a,0xf6,0xdc,0x28,0x8a,0xd4,0x12,0xcd,0xa3,0x0c,0xad,0xd7,0x6b },
{ 0x5d,0x34,0xbf,0xf2,0x60,0xd1,0xb4,0x31,0xd0,0x3f,0x37,0x10,0x4f,0xf9,0xb6,0x52,0xf6,0x7d,0x74,0xed,0x90,0xc3,0x89,0xbe,0xf5,0xf2,0x32,0x4f,0x01,0xca,0x5b,0x49 },
{ 0x85,0xdb,0x65,0xd4,0x14,0x0b,0xd5,0x7f,0x93,0x5f,0xe1,0x24,0x30,0xe2,0xc7,0x78,0x96,0xb4,0x83,0x2d,0x85,0xa7,0x01,0x0d,0x71,0x90,0x42,0xc5,0x0c,0xc9,0xb6,0x56 },
{ 0x49,0x39,0xd1,0xab,0xd9,0x34,0x16,0x23,0xdf,0xf4,0x25,0x56,0x07,0xf3,0x31,0xcb,0xed,0x76,0xbe,0x12,0x70,0xb4,0xab,0x6e,0xb3,0x43,0x93,0xfd,0xac,0xab,0x65,0x22 },
{ 0xcd,0x94,0x1f,0xb8,0x8b,0x98,0xfa,0xcb,0xfa,0x72,0x00,0x03,0xf8,0xd5,0xaf,0x11,0xa0,0xfc,0x24,0x2a,0x9d,0x99,0x75,0x13,0x80,0xa5,0x67,0xb7,0x6f,0x35,0x72,0x0f },
{ 0x0a,0xa8,0xcb,0x6c,0xad,0x0c,0x1e,0x17,0x39,0x69,0x75,0x6a,0x71,0x0a,0x18,0x40,0xf4,0xbf,0xfd,0x27,0x6a,0xb6,0x2b,0x97,0x55,0xcd,0xca,0x2e,0xe1,0x4c,0x30,0x2c },
{ 0x07,0x5b,0xe6,0x2f,0x9b,0xc4,0xd9,0xe3,0x4a,0x94,0x16,0x24,0x1e,0xcf,0x96,0x6e,0x9f,0xa3,0xa7,0x6e,0x68,0x32,0x32,0xef,0x08,0xef,0x40,0x46,0x0c,0x9b,0x7d,0x3b },
{ 0xe2,0x01,0x62,0x02,0x82,0x4e,0xa1,0x8a,0xea,0x03,0x00,0x6f,0x4e,0xd6,0x84,0xac,0xf7,0xc6,0xbe,0x7e,0x38,0x3e,0x59,0x21,0x95,0x58,0xcc,0xa8,0x21,0xd3,0x84,0x54 },
{ 0xb4,0x1b,0xdf,0x72,0x6e,0x1d,0xe6,0x35,0xf7,0x79,0x28,0x65,0xb1,0x8d,0xeb,0xd2,0x21,0xb4,0xb2,0x64,0x65,0x63,0x98,0xa3,0x0e,0xf3,0xb5,0x52,0x2c,0xbe,0xf2,0x77 },
{ 0x78,0x1e,0xeb,0x48,0x36,0x14,0xe1,0x85,0xd3,0xd9,0x12,0x45,0xf6,0x03,0x68,0x3a,0xa7,0x40,0x16,0x9c,0x8c,0xd1,0x5d,0xcf,0x05,0x0a,0x1b,0xd7,0x3e,0x1d,0x17,0x6b },
{ 0xff,0x26,0x53,0x18,0xa6,0xf1,0x83,0x4e,0x41,0x1a,0xcc,0x0a,0x01,0x3a,0xea,0x11,0xe3,0x6f,0xad,0x48,0xe0,0xab,0x3c,0xe2,0xc1,0x83,0x33,0x27,0x53,0x6e,0xd1,0x70 },
{ 0xdb,0x04,0x14,0xac,0x21,0x70,0xcf,0xe4,0x5a,0x12,0x36,0x9c,0x07,0x4e,0x9f,0xae,0x64,0x37,0x04,0x67,0x7d,0x54,0x16,0x6a,0x06,0xda,0xac,0x0e,0x4f,0xe2,0x07,0x2b },
{ 0xbc,0x8c,0x7f,0x97,0x0b,0x84,0x9a,0xe6,0xcf,0xf2,0xa0,0xb7,0xb0,0x71,0x52,0xc7,0xf5,0x97,0x0d,0x12,0x39,0x34,0x25,0x51,0x19,0xaf,0x5c,0xd4,0x73,0x76,0x9b,0x01 },
{ 0x7b,0x80,0xae,0x2b,0xd9,0x36,0x8f,0x36,0xcb,0x7a,0x00,0xb5,0xbf,0xa5,0xba,0x66,0xc5,0xec,0xca,0xce,0x57,0x3e,0xac,0x20,0x49,0x68,0x17,0x5c,0xf9,0xe0,0xb2,0x79 },
{ 0x1e,0x23,0x59,0xf3,0xa4,0xe4,0x1e,0x8d,0x38,0x0b,0xf5,0x9b,0x00,0xb3,0x48,0x2e,0xd1,0x26,0x1a,0xf4,0x44,0x48,0xe5,0x54,0xaa,0x1a,0x0a,0xca,0x5b,0x21,0x77,0x05 },
{ 0x96,0x42,0x1d,0x0f,0x6c,0x80,0x63,0xed,0xe2,0x36,0xd0,0x8d,0x8a,0x90,0x3d,0x1b,0x31,0x40,0xdb,0xc1,0xda,0x11,0xf7,0x9b,0x48,0x9d,0xaf,0x40,0x04,0x18,0xe7,0x3a },
{ 0x17,0x01,0xd1,0x34,0xb6,0xec,0xf1,0xb4,0x5c,0x06,0x41,0xe8,0xd3,0x55,0x44,0xd0,0xe1,0xa6,0x12,0x5c,0x4f,0x58,0x51,0xc6,0xa0,0x36,0x32,0x18,0x02,0xed,0x7e,0x15 },
{ 0x0b,0x87,0x37,0xef,0xac,0x5f,0xcd,0x28,0x44,0x00,0x96,0x21,0xe9,0x41,0x95,0xe7,0x60,0xde,0xd7,0x6f,0x0e,0x73,0x48,0xb1,0x05,0x9a,0x1b,0xd4,0x38,0x94,0x75,0x79 },
{ 0x25,0xa5,0xf0,0x4e,0x98,0x31,0x31,0x2d,0x97,0x30,0xd2,0x7f,0x12,0xfa,0x5f,0x66,0x4c,0xa3,0xa2,0x8e,0x8b,0x98,0xec,0xe6,0xb6,0x90,0xf6,0xad,0x74,0xcd,0x4d,0x32 },
{ 0x7d,0xbb,0xaf,0x41,0xbe,0xa5,0x8d,0x50,0xef,0x81,0xab,0xca,0x6c,0x3a,0x48,0xc4,0xf3,0xd4,0xed,0x41,0x74,0x14,0x34,0xe1,0x15,0x2c,0x0b,0x2d,0x7c,0x22,0x67,0x1f },
{ 0x7e,0xcf,0xa5,0x25,0xcf,0x23,0x7b,0xfd,0x1b,0xfe,0xef,0x21,0xcd,0x34,0x80,0x7a,0xae,0x81,0x39,0x6e,0xd8,0x6d,0xf4,0x4d,0x73,0xce,0xfb,0xd3,0x19,0xf1,0x72,0x73 },
{ 0x95,0xfd,0x98,0x6b,0xc3,0x24,0x8e,0x9e,0x4b,0x61,0x16,0x4a,0xb9,0xf0,0x0f,0xf7,0x09,0x31,0xb9,0x41,0x42,0xa0,0xec,0xe3,0x17,0x1b,0x6f,0x3b,0x5c,0x02,0xd2,0x0f },
{ 0x40,0x62,0x30,0x73,0x99,0x39,0x3c,0x8f,0x4c,0xa3,0x13,0xfc,0x7c,0x3d,0x03,0x25,0x1c,0xb5,0x7e,0x83,0xab,0x4e,0xfd,0xfe,0x38,0x99,0x01,0xa9,0x32,0x46,0xb8,0x66 },
{ 0xe2,0x1b,0xa0,0x85,0x29,0xd0,0x8c,0x31,0x5e,0x5e,0xf8,0xb4,0xdc,0x69,0x33,0x13,0xb3,0x72,0x9e,0x36,0xe8,0x16,0x66,0x5e,0x29,0xfa,0xc0,0x9e,0xf1,0x0f,0xf0,0x1c },
{ 0x7a,0x50,0x09,0xec,0x6f,0x95,0x91,0x78,0x6c,0x47,0xde,0x89,0x2a,0x8d,0x42,0xc5,0x46,0xf3,0xeb,0x20,0x0c,0x38,0x77,0x11,0xd8,0x18,0xb5,0xcf,0xc7,0xe2,0x92,0x27 },
{ 0xcd,0xd8,0x08,0x86,0x86,0x39,0x90,0xb6,0x7b,0xd4,0x7a,0x33,0xb9,0x73,0x22,0xcc,0xd4,0x9f,0x60,0x55,0xdc,0xf1,0xd3,0xe7,0xfd,0x58,0x04,0xd6,0x7b,0x70,0xa5,0x75 },
{ 0x7f,0x20,0x88,0xcb,0x94,0xd0,0xee,0x31,0x14,0x24,0xe9,0xb0,0x73,0x98,0xae,0x97,0x46,0x3d,0xa4,0x99,0x90,0x6b,0xc2,0xa8,0x8a,0xf0,0x81,0x9b,0x8d,0xb6,0x47,0x75 },
{ 0x72,0x14,0x93,0x6a,0x4a,0x4d,0x68,0x88,0x91,0xab,0x66,0x9b,0x9f,0xbf,0xf7,0x81,0x1f,0x0a,0x85,0xb8,0x7f,0xfe,0xc0,0x39,0x36,0x56,0x7b,0x7c,0x81,0x2e,0x81,0x34 },
{ 0xc7,0x30,0x48,0xf3,0x9e,0x32,0xd7,0xc6,0x9a,0x4e,0x0c,0x16,0xde,0xa7,0xcf,0x34,0x30,0xfc,0xd5,0x0e,0x01,0x9f,0xfe,0x8a,0x1c,0x28,0xe4,0x83,0x2d,0xc8,0x23,0x49 },
{ 0xbe,0x79,0x17,0xf1,0xe9,0x45,0x00,0x11,0xaa,0x93,0x7a,0x3a,0x39,0xa0,0xe6,0x06,0x15,0xe0,0x00,0xe5,0xdc,0x32,0x3f,0xfb,0x24,0xe4,0xba,0x34,0x28,0x6d,0x26,0x1f },
{ 0x2c,0xfc,0x3f,0x3a,0x4b,0xc6,0x54,0xa8,0x49,0x7b,0x02,0x2a,0xd5,0x26,0x05,0x45,0x90,0x9d,0xf2,0xda,0xf4,0x83,0xb8,0xbc,0x04,0xe6,0x90,0x80,0xf6,0x7a,0x7a,0x34 },
{ 0xd8,0x8c,0x25,0x58,0xdc,0x46,0x29,0xd5,0xe7,0x77,0x54,0x63,0xeb,0xb1,0xb3,0x9e,0x31,0xb4,0x3a,0xf7,0xcd,0x34,0xa8,0xf8,0x4e,0x44,0xa7,0xe5,0x82,0xa3,0xf9,0x40 },
{ 0x38,0x88,0x70,0xe8,0xdd,0x48,0xaf,0xf9,0x8a,0xd2,0xd7,0x8e,0x70,0xab,0xcf,0x78,0xfe,0x01,0xa0,0x0d,0xc7,0x75,0x6d,0x57,0x48,0x6b,0xfe,0x09,0x30,0x4b,0x8e,0x13 },
{ 0x5f,0xb7,0x4a,0x2f,0x8a,0x3c,0xeb,0x84,0x0c,0x0a,0xde,0x07,0xe5,0x5f,0x5f,0x46,0x21,0xf9,0xf9,0xaf,0x21,0x4d,0x63,0x0c,0xf3,0xc2,0x5f,0xc2,0xc4,0xd7,0xf1,0x11 },
{ 0x37,0x0e,0xbf,0x83,0x86,0x1b,0xde,0x52,0xb7,0x0a,0x28,0x3e,0x26,0x7f,0x4a,0x89,0xac,0x48,0x0c,0xc9,0x66,0x30,0x9c,0xb6,0x8e,0x5a,0x25,0x79,0xda,0xd5,0x63,0x4e },
{ 0xfb,0xc5,0x15,0x0e,0x65,0x75,0x1c,0xbf,0xd0,0x87,0xb9,0xe5,0xc2,0xa3,0x76,0x22,0xcd,0x03,0xab,0x7b,0x34,0x74,0x18,0x7b,0x54,0xca,0xab,0xc9,0x67,0x3b,0x72,0x6e },
{ 0xf5,0x03,0x2a,0x75,0x1f,0x2f,0xa2,0x31,0x93,0x4e,0xf0,0x66,0x02,0x73,0xd6,0xae,0xc8,0x9f,0xf6,0xb7,0x22,0x23,0x2a,0x7f,0x1a,0xe9,0x23,0x89,0x53,0xb2,0xd4,0x35 },
{ 0xe0,0x72,0x08,0x0f,0xfc,0x79,0x53,0xb8,0xeb,0x0d,0x15,0x7c,0x22,0x26,0xba,0x13,0xe8,0xbe,0xa6,0x36,0x37,0xbc,0xdc,0xe8,0x18,0x45,0x45,0x8f,0xd3,0x34,0xb9,0x33 },
{ 0x87,0x85,0xc7,0x3e,0xc4,0x03,0xf7,0x7b,0x19,0x58,0x95,0x5e,0xed,0xeb,0xfd,0xf3,0x96,0xa2,0xa3,0xe5,0x2b,0x90,0x16,0x4c,0xa1,0xa6,0x47,0x1c,0xe1,0xc9,0x0a,0x60 },
{ 0xa6,0x84,0x17,0x38,0xe9,0x81,0xef,0xd5,0xce,0x42,0xdf,0x84,0xd7,0x81,0x1c,0xeb,0xd2,0x92,0xe7,0x74,0x19,0x15,0xf0,0x25,0x59,0xd1,0x46,0xe1,0xd9,0x0a,0x1e,0x2d },
{ 0x31,0xdb,0x98,0xef,0x5e,0x6c,0x6b,0x10,0xcc,0x68,0xb2,0x97,0x66,0xe2,0x7e,0xc7,0x16,0xb1,0x1c,0x2e,0x84,0xaf,0xb0,0xb2,0xdc,0x19,0xd6,0x3d,0xbe,0xc2,0xec,0x1b },
{ 0x1c,0x67,0x9b,0xaf,0xf2,0x92,0x69,0x43,0x06,0x34,0xed,0xae,0xf6,0xc0,0x8c,0x81,0x8c,0xd2,0xa6,0x97,0xaa,0x0c,0x3b,0x63,0x9b,0xb7,0x64,0xbe,0x6e,0x89,0x15,0x6c },
{ 0xc2,0x0c,0x8a,0x23,0xbf,0xf9,0x34,0xe0,0x95,0xa9,0x4e,0xc3,0xf8,0x4c,0x61,0x7a,0xdd,0x4b,0x91,0x8f,0x95,0xc8,0x22,0x84,0xa6,0xbf,0xb5,0x34,0x10,0x92,0xac,0x4b },
{ 0xe9,0x35,0xf4,0xff,0xe2,0x33,0x7b,0xa0,0xd4,0x08,0x6f,0xc4,0x43,0x0e,0xa1,0x0b,0x4d,0xf0,0x14,0xcb,0xb0,0x46,0x65,0x12,0x68,0x72,0x2a,0x44,0xf5,0xe3,0x88,0x2b },
{ 0x8f,0xda,0xd7,0xc0,0x19,0x6b,0xbd,0x2c,0xf2,0x65,0x23,0x6d,0x02,0x88,0xf7,0x95,0xb8,0xfd,0x8b,0xa7,0x5a,0x94,0xc0,0x3a,0xc0,0xdd,0x27,0x34,0xfd,0x25,0xa9,0x5e },
{ 0xa1,0x20,0x92,0x8e,0x8d,0x38,0xa1,0x0c,0xc6,0x51,0xd6,0x28,0x26,0xe7,0x38,0x37,0x18,0x4d,0x4f,0xc2,0x06,0x42,0x1c,0x6c,0x74,0xf8,0xe3,0xfd,0xf8,0xa4,0x45,0x17 },
{ 0xd4,0x89,0xb3,0x49,0x38,0x18,0xcd,0x59,0x85,0xe0,0x50,0xa9,0xb8,0xf5,0x47,0xd3,0x04,0xea,0xd7,0x1a,0x0e,0x92,0x19,0x6f,0x0d,0xcf,0x1d,0x25,0x1f,0xe1,0xe5,0x48 },
{ 0xa1,0x17,0xb7,0xcb,0x84,0xe2,0x04,0xe7,0xed,0x20,0x1c,0x82,0x67,0xd2,0x82,0x65,0x5e,0xa8,0xe9,0x94,0x22,0x51,0xac,0x04,0xfa,0x5d,0xb2,0x59,0xc3,0x1d,0xda,0x48 },
{ 0xde,0x2f,0xd8,0xd1,0xfe,0x02,0xf7,0xc0,0x44,0xfb,0x44,0x07,0x43,0x4e,0x98,0xfe,0xa3,0x79,0x9a,0x33,0x64,0x01,0x43,0xaf,0x9b,0xab,0x94,0xc3,0xee,0x82,0xbd,0x6e },
{ 0xc8,0x85,0x03,0x7e,0x45,0x82,0x04,0xac,0x35,0xbe,0x4e,0xef,0x9c,0x07,0xe2,0x76,0xf3,0x7d,0x03,0x4f,0xec,0x35,0xa4,0x37,0xcd,0x19,0x33,0x19,0xc3,0x56,0xf8,0x06 },
{ 0xbb,0xa5,0x35,0x5b,0xe7,0x3d,0xb2,0x32,0x23,0xfb,0xf5,0x75,0x73,0x63,0x10,0xee,0xf5,0xb8,0x63,0x52,0x97,0xdd,0x64,0x12,0x14,0x83,0xf7,0x5d,0x05,0xbe,0x5d,0x77 },
{ 0x6a,0xe7,0x8c,0x73,0x96,0x82,0x73,0x54,0xd7,0x69,0xd3,0x70,0xa0,0xfe,0xc0,0xf1,0x68,0x85,0x49,0x67,0x53,0x26,0x6e,0x35,0x31,0xd4,0x71,0x4d,0xbe,0x55,0xb3,0x24 },
{ 0xf9,0xe0,0x1b,0x11,0x76,0x2b,0xd4,0x76,0x21,0xae,0x19,0x78,0xd1,0x55,0x16,0x67,0xcc,0xb1,0xcc,0xb8,0x68,0x13,0x1f,0x00,0xf5,0xca,0x12,0x46,0x6d,0x05,0x61,0x33 },
{ 0x0c,0x62,0x13,0x9a,0x0f,0x55,0x40,0xd2,0x33,0x69,0xaa,0xa2,0x71,0xc3,0xf1,0xad,0x11,0xfe,0xff,0x73,0x08,0x69,0x82,0x9f,0x41,0x0d,0x38,0xb8,0x6b,0x82,0x29,0x12 },
{ 0xfe,0xd0,0x80,0xa2,0x58,0x66,0xdf,0x61,0x54,0x38,0x70,0x07,0x3c,0xe2,0x3e,0xb5,0x96,0x6b,0x4e,0xda,0xfe,0x15,0x96,0xb1,0x6c,0xc3,0x96,0xc3,0x84,0xc2,0x64,0x7a },
{ 0xba,0x0b,0x92,0xef,0x62,0x24,0x75,0xe1,0xab,0x69,0x8f,0x71,0x6a,0x65,0x02,0xf3,0x72,0xfa,0x37,0xba,0x97,0x22,0xd3,0x8b,0x51,0x8c,0xbf,0xc0,0x2d,0xd6,0xb2,0x27 },
{ 0x96,0x1e,0x1b,0x00,0x6d,0xf4,0xb1,0x6b,0xc2,0x3c,0x23,0xb4,0xc0,0xdc,0x25,0x00,0x03,0x30,0x0d,0xfe,0xc4,0x2b,0x64,0x1d,0xe4,0x12,0xef,0x31,0xce,0xb6,0xeb,0x59 },
{ 0x0e,0xd0,0x49,0x47,0x73,0xbf,0x3c,0x7d,0x9e,0xf1,0x66,0x28,0x17,0x9c,0x55,0xa1,0x61,0xcb,0x69,0x9f,0xd4,0xed,0x44,0x69,0xaf,0x39,0x37,0xc7,0x46,0xb3,0x21,0x49 },
{ 0xdc,0x1f,0x97,0xba,0x62,0x0d,0x73,0x49,0x93,0xa5,0x80,0x78,0x79,0x99,0x5b,0x54,0x9e,0xd9,0xd5,0x1e,0x5d,0x5d,0x95,0x16,0x9f,0xb9,0x82,0xc9,0x82,0x5d,0xc1,0x53 },
{ 0x5f,0x3a,0xe8,0x08,0x9a,0x85,0x40,0x6d,0x74,0x8a,0xc7,0xfb,0xf0,0x10,0xb6,0x84,0xc7,0x34,0x41,0x77,0x75,0x34,0x6e,0x0c,0xef,0x65,0x40,0xb1,0x62,0x5b,0x1f,0x07 },
{ 0x11,0x14,0x7c,0x95,0x3e,0xe9,0xa2,0x9b,0x1d,0x4f,0x19,0x2c,0xfd,0xf5,0x65,0x7d,0x48,0x2b,0x45,0xf6,0x3d,0x8a,0x31,0xfe,0xe0,0xaa,0x6b,0x31,0x85,0x35,0xdc,0x23 },
{ 0x20,0x42,0xc3,0xa1,0xd6,0x6a,0xb2,0xc7,0xcb,0xa6,0x71,0xb4,0x82,0xe1,0x8e,0x9f,0x29,0x3a,0x5e,0x0d,0x2a,0xeb,0x9a,0x17,0x48,0x85,0x5a,0x38,0x56,0xfc,0x35,0x7c },
{ 0x71,0xea,0x4a,0x4b,0xf1,0xcf,0x3a,0xf2,0xc7,0x5d,0xcd,0xb1,0xc6,0xf9,0xd3,0xe5,0x79,0xf8,0xb7,0x51,0x4b,0x1f,0xa1,0x40,0xfd,0xe1,0x3f,0x0e,0x64,0xc4,0x9c,0x71 },
{ 0x68,0xae,0x94,0x4e,0x3f,0xbf,0x6a,0x99,0x7f,0x97,0x15,0xa0,0x2b,0x11,0xc7,0xc2,0xf3,0x38,0xa6,0xae,0x6b,0x12,0x44,0xe3,0xdc,0x5d,0x16,0x67,0x74,0x76,0xeb,0x42 },
{ 0xf0,0xaa,0x8e,0x0c,0x39,0x0e,0xee,0x39,0x0d,0x52,0xd1,0x4f,0xec,0x4d,0x62,0x69,0x98,0x48,0x2c,0xb4,0x1f,0x04,0xa8,0xa2,0x7c,0xb2,0x46,0x7d,0xa9,0x15,0x2f,0x6e },
{ 0xa8,0xda,0x18,0x99,0x28,0x82,0xdb,0x96,0x67,0x95,0xef,0x37,0xea,0x97,0x79,0x5c,0x9c,0xe5,0xdd,0x1c,0xf7,0xd4,0xe7,0x73,0x74,0xdb,0x3f,0xd2,0x54,0xa7,0x07,0x7c },
{ 0x19,0xf3,0x33,0x40,0x8a,0x11,0x8b,0xbb,0xf8,0x3f,0xc7,0x8c,0x2e,0x02,0x8b,0x67,0x0d,0x90,0x22,0xf7,0x9a,0x01,0x7f,0xe5,0x05,0xdf,0x13,0x77,0xf3,0xfd,0x60,0x3a },
{ 0x25,0x8f,0x3e,0xaa,0x41,0x4a,0x8c,0x45,0x39,0x39,0x15,0x57,0xd1,0xc8,0x60,0x5c,0x05,0x72,0x3c,0x14,0x2f,0x80,0x02,0x63,0x0b,0xf4,0xd3,0x22,0x78,0xfb,0x03,0x5c },
{ 0x26,0x22,0xec,0x21,0x5b,0x20,0x22,0x12,0xc5,0x8e,0xb8,0xec,0xdb,0x9e,0x8d,0x0b,0xff,0x0b,0x19,0x3c,0x9f,0x05,0xbe,0x13,0x1d,0xa5,0x71,0x66,0xce,0x50,0xaf,0x3f },
{ 0x92,0xc6,0xca,0x59,0x75,0x46,0x50,0x35,0x8a,0x7f,0x74,0x13,0xf5,0xc5,0xe0,0xf5,0x74,0x62,0x77,0x10,0xa5,0x8a,0x95,0x16,0xd9,0xd4,0x8a,0x4e,0xd3,0xa5,0xca,0x51 },
{ 0x61,0x17,0x1a,0xf5,0x67,0x79,0xf8,0xc0,0x6e,0xef,0xfc,0xe4,0x8a,0x08,0x1c,0xec,0x70,0x22,0xb9,0x14,0xe8,0xee,0xb5,0xee,0xd3,0xf1,0x55,0xd0,0x30,0x53,0xe7,0x23 },
{ 0x5d,0x7d,0x9c,0xa5,0x2a,0xf7,0x72,0x2a,0xe9,0xd0,0x0d,0xda,0xaa,0x84,0x85,0x28,0xf4,0xff,0xc4,0xb0,0x8e,0x5f,0xae,0xf6,0x20,0xd6,0x41,0x4a,0x7c,0xe2,0x64,0x10 },
{ 0x4d,0x78,0xf3,0x0b,0xf2,0xfd,0xe3,0xaa,0x3f,0xb4,0x5d,0x57,0x38,0x6a,0x09,0xad,0x8e,0xa9,0x89,0xf8,0xf0,0xfe,0xe0,0xa9,0x1a,0x5e,0x6f,0xbe,0x86,0xaf,0x13,0x18 },
{ 0xe4,0x24,0x17,0x05,0x5d,0x25,0x20,0xae,0x2e,0x56,0xf9,0x06,0x6e,0x4f,0x7f,0xab,0xb8,0x69,0xa1,0xd6,0x9a,0xc6,0x3d,0x26,0x39,0x0f,0x84,0x6f,0xf6,0xfb,0x1f,0x21 },
{ 0x38,0x25,0xd5,0x9e,0xc4,0x6d,0xe3,0xe2,0x9e,0x45,0x50,0x47,0x2e,0x2e,0xbc,0x5e,0x05,0x1f,0x31,0xaf,0x0f,0x67,0xe7,0x52,0xc3,0x7f,0x7f,0x37,0xa7,0xf2,0xef,0x42 },
{ 0x67,0xf1,0x26,0xe8,0xfc,0xd0,0x97,0xbe,0x74,0xbf,0xfb,0x3f,0x13,0x54,0x87,0x08,0x39,0x88,0x57,0x7c,0x0c,0x8e,0x54,0x55,0x92,0x1e,0x12,0xf5,0x61,0xde,0x26,0x23 },
{ 0x70,0x90,0x9d,0xf5,0xe7,0x0e,0x17,0xc0,0xdc,0x0b,0x37,0xd8,0x58,0xd0,0x77,0x89,0xd7,0x64,0xec,0xd1,0x7f,0x1b,0x6b,0x96,0x29,0x63,0x7f,0xaf,0xa2,0xf8,0x97,0x4e },
{ 0xb2,0x8d,0x4a,0x7a,0xaf,0x85,0xbf,0xa5,0x29,0x72,0x23,0xa0,0xcc,0x09,0xad,0x01,0x3b,0x3b,0x59,0x31,0x2d,0x86,0x1e,0x92,0xb6,0xc5,0x6e,0xe7,0xaf,0x9d,0x4c,0x1d },
{ 0xa8,0x75,0x30,0x95,0x6d,0x85,0x9d,0xd2,0xd7,0x6e,0xc6,0x88,0xc1,0xbc,0x36,0x24,0x9a,0xb2,0x50,0xcd,0xa7,0x45,0xff,0xe2,0x17,0xb0,0x0e,0x3e,0x48,0x46,0x22,0x5e },
{ 0xfe,0xd6,0xb6,0x2d,0x3a,0xd5,0x6f,0x3f,0x6a,0x92,0x5a,0x6c,0x97,0xdd,0x62,0x49,0xde,0x27,0xbf,0x2c,0x4f,0xbe,0x3d,0xe9,0x6b,0x3d,0xd1,0x02,0xb9,0x86,0x28,0x69 },
{ 0x81,0x44,0x04,0x84,0xb4,0xa2,0xbb,0x64,0xe9,0x58,0x25,0x0f,0x6a,0x3c,0xc0,0xea,0x55,0x9b,0x0c,0xdc,0x88,0xee,0x55,0xc3,0x26,0xe3,0x10,0xc0,0x68,0xdb,0xfd,0x0b },
{ 0xd5,0x50,0x20,0x79,0x86,0xf2,0x01,0xe3,0xec,0x13,0x47,0xf9,0x67,0x43,0x9a,0x8a,0x36,0xd4,0x47,0x6a,0x65,0xa9,0x7c,0x23,0x79,0x1a,0xc0,0x97,0x51,0x68,0xed,0x5e },
{ 0xd6,0x64,0xd7,0x43,0x2f,0x76,0xcd,0x58,0xdc,0x47,0xe5,0x12,0xd9,0x67,0xe5,0xe5,0xea,0xb9,0xb8,0x3d,0xad,0x48,0x82,0x5f,0x55,0x1b,0xd7,0x51,0x8b,0xd9,0x5c,0x40 },
{ 0x79,0x3c,0x76,0x47,0x03,0x5a,0x74,0x27,0xce,0x63,0x0b,0xb1,0xa8,0x27,0x1b,0xa2,0x2a,0xbd,0xe5,0x6e,0xba,0x7f,0xf9,0x7a,0x79,0x14,0x18,0x0d,0x1e,0x55,0xca,0x71 },
{ 0x0d,0xa9,0xe8,0xcf,0x31,0x54,0x67,0x4a,0xf5,0xec,0xd1,0xff,0x02,0xf1,0x16,0x6e,0xc7,0x59,0xa8,0x37,0xac,0x4a,0xb7,0xe2,0x7f,0xb0,0x3d,0xb9,0x96,0xf5,0x8f,0x46 },
{ 0x11,0x4c,0x26,0xb2,0xd9,0x49,0x73,0x9c,0x4e,0xa2,0x90,0x57,0x59,0x96,0x27,0x8b,0x49,0x57,0x67,0xbe,0x5f,0x7b,0x15,0xea,0xe5,0x09,0x73,0x16,0xfd,0x21,0x1c,0x0b },
{ 0x3e,0x24,0x29,0x6d,0x65,0x98,0xc3,0xd3,0x68,0x95,0xf6,0x0b,0xec,0xe2,0x19,0xd7,0x9c,0x77,0xb9,0x0b,0xf1,0x92,0xab,0x3d,0x41,0x58,0xec,0xd0,0x30,0xf6,0x51,0x27 },
{ 0xfa,0xd2,0xe4,0x1f,0x54,0xf2,0xaf,0xb0,0x19,0x0b,0x4b,0x29,0xd1,0x1a,0x84,0xa5,0x5f,0x69,0x66,0x59,0xa4,0xb2,0x03,0x74,0xe1,0x46,0x81,0x75,0x38,0x8c,0x7f,0x32 },
{ 0x41,0x0e,0x63,0x5f,0xa3,0x9c,0x86,0x64,0x91,0x1e,0x2a,0x6c,0xc3,0x7d,0x1e,0x6b,0x15,0x4c,0x54,0x64,0x57,0x69,0xa8,0x15,0x01,0x37,0xc5,0xba,0xf2,0xe1,0x52,0x19 },
{ 0xee,0x67,0x56,0x4d,0x15,0x40,0x67,0x32,0x2d,0x3d,0xfd,0x5b,0x29,0xf4,0x65,0x06,0xd8,0x21,0x27,0x4e,0xcf,0x5f,0xfd,0x37,0x2f,0xdc,0x3f,0x42,0x85,0xce,0xc3,0x08 },
{ 0xd1,0x94,0x7b,0x09,0xb2,0xdd,0xc3,0x3f,0xfc,0xad,0x6d,0x3d,0xa1,0xe8,0x38,0x1d,0xb0,0x47,0x1a,0x50,0x4f,0x5d,0x30,0x1e,0x49,0xd4,0xc5,0x9d,0x39,0x8f,0x1f,0x47 },
{ 0x8b,0x31,0x7f,0x50,0x1e,0xbd,0xe1,0xbe,0x17,0x6b,0x8e,0xa5,0x6e,0x02,0x42,0x7e,0x0d,0xb9,0x08,0x78,0xba,0x09,0x8b,0xc5,0xff,0x64,0xde,0x59,0xaa,0x23,0x5f,0x43 },
{ 0xa5,0xff,0x46,0xb0,0x15,0xc2,0xb4,0x66,0x38,0x5e,0x02,0xe1,0x9e,0xf9,0xa1,0xd3,0x1d,0x46,0x9d,0xa5,0x4c,0x8e,0xc4,0x92,0x5a,0x29,0x4d,0x46,0xd8,0xf2,0xe0,0x68 },
{ 0xf1,0x6b,0x4b,0xec,0x9e,0x8d,0x46,0xb4,0xb8,0xda,0xec,0x57,0x35,0x4b,0xde,0x9e,0x67,0xb3,0xdd,0xac,0x5f,0x63,0x7c,0xb6,0xf4,0x9f,0x27,0x02,0xa6,0x02,0x59,0x21 },
{ 0xf0,0x70,0x11,0x80,0x7f,0x09,0x79,0x97,0xb3,0x8c,0x33,0xb1,0xaa,0x24,0xbe,0x27,0x07,0xa8,0x8a,0xf2,0x89,0x31,0xf8,0x0d,0x81,0x6d,0x8e,0xb2,0xa1,0x75,0x04,0x55 },
{ 0x53,0xad,0xaa,0xa1,0x1f,0xe6,0x29,0x82,0xa7,0xbb,0x4b,0xc3,0x6d,0x03,0x0a,0x68,0x9a,0x86,0xbd,0x93,0xee,0xc0,0xdf,0x4c,0x08,0xbc,0xc3,0x37,0x84,0x2f,0x26,0x01 },
{ 0xd7,0x71,0xe8,0xbc,0x57,0x53,0x65,0x66,0x4a,0xe8,0x8f,0xda,0x9b,0xd3,0xf9,0xa9,0xe4,0x09,0x4c,0xdb,0x86,0x06,0x82,0x13,0x68,0xf9,0x1e,0x1a,0xf8,0xc0,0x66,0x6c },
{ 0xd2,0x73,0x30,0xc3,0xc3,0x97,0xe8,0x44,0x0a,0x9d,0x73,0xd2,0xec,0x3c,0xbf,0x16,0x23,0x55,0xed,0xc3,0x7e,0x4c,0x41,0xe4,0x37,0x00,0xb4,0xa9,0xab,0x74,0xd0,0x5d },
{ 0x47,0xa6,0x59,0x5b,0x59,0x3e,0xa7,0x4b,0x0e,0x51,0x8c,0x77,0xb5,0xa2,0x2f,0x6e,0x03,0x23,0x35,0xe9,0xc7,0x46,0x35,0x2c,0xca,0xe2,0x73,0x25,0xe6,0x67,0xec,0x0b },
{ 0xb0,0x9e,0x1d,0x45,0xbe,0x2f,0x0c,0x6e,0x13,0x52,0xae,0xe2,0x6d,0xe1,0x3d,0xb7,0x9f,0x58,0x8a,0x9b,0x8f,0xa7,0x1b,0x2f,0x60,0x8f,0x53,0x0f,0x1e,0xb9,0xaf,0x63 },
{ 0x15,0xe7,0x42,0x02,0x3d,0x87,0x92,0xed,0x6a,0xe5,0xb7,0x45,0x70,0xf1,0x35,0xfc,0xff,0x5d,0xc9,0x7c,0x19,0xdc,0x34,0xd2,0x5c,0x06,0xc3,0xc5,0xeb,0xb0,0x88,0x08 },
{ 0xa0,0x5c,0xb2,0xa1,0x83,0xb8,0x25,0xb2,0xba,0x28,0x01,0x14,0xdb,0x08,0xf5,0xc4,0x47,0x33,0x79,0x64,0xdd,0x11,0x26,0x2e,0x92,0x36,0xef,0xb6,0xa3,0xe2,0x42,0x42 },
{ 0x06,0xe4,0x60,0x7b,0x75,0x63,0x99,0x41,0xa8,0x71,0x3b,0xfd,0x54,0xa4,0x8b,0x81,0x54,0x9d,0x49,0x5e,0x73,0x36,0xcc,0xda,0xb8,0xa6,0x52,0x69,0x95,0x01,0x48,0x35 },
{ 0x84,0x09,0x4e,0x31,0xfa,0x6d,0x0c,0x01,0x68,0x39,0x85,0x81,0x9c,0x77,0x19,0xa0,0x19,0x64,0x26,0x57,0x0a,0xa6,0x8a,0x90,0xba,0x09,0x7a,0xf8,0xbe,0xfd,0x85,0x23 },
{ 0x07,0x55,0x4a,0x94,0x80,0xbf,0x2a,0x85,0x98,0x6d,0x81,0x09,0xd0,0xa5,0x73,0xca,0x66,0xe8,0xe5,0x10,0x39,0x3d,0x2e,0xe8,0x51,0x18,0xbc,0xed,0x68,0xa2,0x9e,0x15 },
{ 0x41,0x04,0xd6,0xe2,0x1e,0xd1,0x56,0x3d,0x09,0x8f,0x75,0x69,0x55,0x71,0x23,0xda,0xe5,0x95,0x90,0x56,0x7a,0x7f,0x0b,0x79,0x1c,0xc1,0x57,0x13,0x56,0x60,0xf3,0x34 },
{ 0xad,0x33,0xd5,0xe2,0xc1,0xfe,0xa5,0x70,0x8f,0x72,0x03,0xd7,0x59,0xa3,0x82,0x6f,0x3d,0xf7,0xb1,0xfe,0x73,0xfc,0x7d,0x74,0x93,0xbe,0xa6,0xa0,0x4f,0xb5,0xd1,0x54 },
{ 0x09,0x85,0x94,0x14,0xf1,0x95,0x4b,0xc0,0x0a,0x94,0x42,0xea,0xc5,0xa1,0x7a,0x26,0x3d,0x86,0x6c,0x18,0x8f,0xb6,0xe0,0xaa,0x81,0x78,0xb1,0x92,0x24,0xb2,0x1b,0x72 },
{ 0x9a,0x7c,0x39,0x3f,0x85,0x13,0x7b,0x3e,0xe5,0x12,0x7b,0x6b,0x3c,0x25,0x17,0x90,0x88,0xef,0x8a,0x10,0x98,0x43,0xe2,0x9f,0xcf,0xe9,0xb9,0x51,0x71,0xc3,0xf2,0x1a },
{ 0x49,0x32,0xf0,0xf4,0x4d,0xf2,0x22,0x0c,0xa0,0x3e,0xa3,0x80,0x22,0x2b,0xdc,0xbd,0x01,0xfc,0xe7,0x3a,0xdf,0xa3,0xc5,0x8f,0x9a,0x5c,0x23,0xd2,0xb6,0x31,0x4b,0x6c },
{ 0xd6,0xc8,0xdc,0x97,0xed,0x56,0x3d,0xef,0x3a,0x02,0x90,0x6a,0x78,0x5a,0x59,0x9e,0x4d,0x8b,0xf7,0xca,0xe2,0x0d,0x58,0x32,0x9c,0x99,0x42,0xb9,0xe8,0xe0,0xf4,0x06 },
{ 0x3a,0xe2,0x99,0xc2,0x6a,0xf6,0x43,0x9e,0x2d,0x48,0x7f,0x5d,0x22,0xd1,0xf8,0x52,0x57,0x6f,0x2d,0xd3,0x97,0x17,0xf6,0xbd,0xd4,0xc8,0x06,0xbf,0x39,0x67,0x93,0x2d },
{ 0x3a,0x70,0x9a,0x8f,0x42,0x5a,0x83,0x7b,0xef,0x2e,0x35,0xb5,0x2d,0xcc,0x93,0xb2,0x8a,0x4f,0xca,0x0a,0xdd,0xe0,0x17,0x17,0x10,0xee,0x43,0x1f,0x4b,0xfc,0x86,0x75 },
{ 0x99,0xa6,0xcb,0x7b,0x5d,0x12,0xa7,0x10,0x44,0x0d,0x17,0x7c,0x11,0x19,0x72,0xc4,0xe4,0xc2,0x26,0xaf,0x4b,0xd9,0xb4,0x4b,0x94,0x42,0xc5,0x24,0xd5,0x6d,0xf0,0x31 },
{ 0xd7,0x36,0xb5,0xe5,0x8e,0x83,0x6b,0xbe,0x47,0x3b,0x2c,0xa7,0x31,0xc4,0xa2,0xfb,0x6f,0x0f,0xbc,0xb5,0x31,0x44,0xa4,0xf3,0x4d,0x9c,0x12,0x6f,0x36,0xb7,0x4b,0x77 },
{ 0xe9,0xa3,0x3a,0x6f,0x01,0x13,0x6e,0x24,0x72,0xed,0x9e,0xca,0x68,0x76,0x56,0x45,0xc2,0x32,0xc5,0x58,0xe0,0xa5,0x83,0x5a,0x51,0x09,0x0f,0x40,0x0b,0x90,0xf7,0x56 },
{ 0x51,0x0b,0x24,0x5c,0x76,0xf5,0x63,0x7e,0x5e,0x20,0x4e,0xd7,0x4a,0x39,0xcd,0x59,0x3d,0x6c,0xbe,0xfb,0x96,0x9c,0x17,0x42,0xaf,0x5e,0xc8,0x9b,0xa2,0xe8,0x93,0x3a },
{ 0x42,0x12,0xda,0xbc,0x51,0xac,0x75,0x91,0xf7,0x8d,0xc8,0x65,0x02,0x1a,0x6f,0x2b,0xdf,0x4a,0x2c,0xf4,0xf5,0x50,0x82,0x58,0x16,0x75,0x4c,0x7b,0x69,0xa0,0x0c,0x6e },
{ 0xa9,0xe9,0x83,0xb9,0x46,0x50,0x8a,0x24,0x9b,0xfd,0x1f,0x89,0x0a,0x18,0xbb,0x62,0xe0,0xcb,0x57,0xc6,0x18,0xcc,0xa8,0x34,0x8f,0x4e,0xc7,0xfc,0x46,0x2e,0xa3,0x20 },
{ 0x7e,0x1e,0x93,0x61,0x51,0xf6,0xe5,0x17,0x14,0x7c,0x65,0x1a,0x07,0x8a,0xf6,0x4e,0x9d,0x66,0x11,0x6f,0x98,0x2b,0x40,0xb1,0x65,0x06,0x40,0x69,0x41,0xa9,0x6b,0x7f },
{ 0x39,0xb1,0x4a,0xa1,0x97,0x89,0xcd,0xdd,0x96,0x46,0x48,0xd8,0x5f,0xef,0xb8,0x7b,0xd4,0xcb,0x53,0x42,0xe4,0x53,0x5f,0xcd,0xd4,0xf6,0xd6,0xc1,0x88,0x8f,0x48,0x1d },
{ 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0x39,0xb1,0x4a,0xa1,0x97,0x89,0xcd,0xdd,0x96,0x46,0x48,0xd8,0x5f,0xef,0xb8,0x7b,0xd4,0xcb,0x53,0x42,0xe4,0x53,0x5f,0xcd,0xd4,0xf6,0xd6,0xc1,0x88,0x8f,0x48,0x1d },
{ 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0x39,0xb1,0x4a,0xa1,0x97,0x89,0xcd,0xdd,0x96,0x46,0x48,0xd8,0x5f,0xef,0xb8,0x7b,0xd4,0xcb,0x53,0x42,0xe4,0x53,0x5f,0xcd,0xd4,0xf6,0xd6,0xc1,0x88,0x8f,0x48,0x1d },
{ 0x2f,0xe5,0x7d,0xa3,0x47,0xcd,0x62,0x43,0x15,0x28,0xda,0xac,0x5f,0xbb,0x29,0x07,0x30,0xff,0xf6,0x84,0xaf,0xc4,0xcf,0xc2,0xed,0x90,0x99,0x5f,0x58,0xcb,0x3b,0x74 },
{ 0x39,0xb1,0x4a,0xa1,0x97,0x89,0xcd,0xdd,0x96,0x46,0x48,0xd8,0x5f,0xef,0xb8,0x7b,0xd4,0xcb,0x53,0x42,0xe4,0x53,0x5f,0xcd,0xd4,0xf6,0xd6,0xc1,0x88,0x8f,0x48,0x1d },
{ 0x42,0x2c,0x8e,0x7a,0x62,0x27,0xd7,0xbc,0xa1,0x35,0x0b,0x3e,0x2b,0xb7,0x27,0x9f,0x78,0x97,0xb8,0x7b,0xb6,0x85,0x4b,0x78,0x3c,0x60,0xe8,0x03,0x11,0xae,0x30,0x79 },
{ 0x25,0xd7,0x28,0xb2,0xd4,0x1a,0x1d,0x0a,0xe0,0xf4,0x0e,0xe6,0xb5,0x69,0xe8,0x3c,0x01,0xb2,0x03,0x9a,0x56,0xb7,0x54,0x5a,0x93,0x63,0x22,0x8f,0x00,0x56,0x14,0x10 },
{ 0x8d,0x20,0xf8,0xc7,0xbb,0xfb,0x9a,0xf3,0xda,0x4e,0xf5,0x32,0xed,0x44,0xef,0xc6,0x8c,0xe6,0x42,0xbc,0x5d,0x0c,0x5c,0xb1,0xd7,0xb9,0x1b,0x96,0xc7,0x4e,0xdf,0x02 },
{ 0x28,0xbb,0xdf,0xad,0x41,0x7a,0x93,0xe3,0xe0,0x84,0x3b,0xab,0xf4,0x32,0x46,0xd3,0x26,0xaa,0x16,0x9b,0x27,0x89,0x6d,0x1c,0x16,0x76,0xa7,0xf9,0xee,0x71,0xa1,0x59 },
{ 0x0f,0x52,0x4b,0xef,0x7e,0x12,0x25,0x8f,0xd9,0xee,0xfc,0xd9,0xe4,0x68,0xb2,0x1e,0x54,0x3d,0x90,0xcc,0x4a,0x54,0xb3,0x47,0xf4,0x8c,0xc5,0x96,0x9f,0xeb,0xf4,0x32 },
{ 0xc8,0x14,0xe2,0xff,0x82,0xb7,0x8e,0x7f,0xaf,0xf9,0x27,0xcd,0xd3,0xb0,0xb4,0x2e,0xc8,0xf8,0x92,0x34,0x8d,0xee,0x2c,0xb4,0xf1,0xc1,0xc3,0x7a,0x64,0xb4,0xa7,0x6b },
{ 0xaf,0x6c,0x6b,0xe0,0x37,0xcc,0x06,0x22,0xe8,0x8a,0x73,0x5a,0x98,0xf7,0x7a,0xc0,0x6f,0x37,0x2b,0xad,0x85,0x42,0xbc,0x0f,0x65,0xc0,0xc5,0x80,0xb0,0x95,0xae,0x4e },
{ 0xe5,0x76,0xa1,0xa6,0xfe,0xc7,0x93,0x78,0xaf,0xb7,0xf1,0x91,0xac,0xda,0x33,0x96,0xad,0x56,0xf7,0x84,0xce,0x33,0x65,0x8e,0x96,0x7a,0xe9,0xe4,0x61,0x76,0xf7,0x27 },
{ 0xa4,0xc3,0xe7,0x49,0x66,0x4d,0x13,0x8f,0x80,0xa1,0x34,0x88,0x89,0x87,0x23,0x44,0xc1,0x1a,0x86,0xe9,0x56,0x23,0xb1,0x5f,0x8d,0xb7,0xec,0xf8,0x3a,0xde,0xd9,0x27 },
{ 0x78,0x74,0x53,0x5e,0xaa,0x3a,0x6b,0x9f,0x7f,0xa1,0xe6,0xd9,0xda,0xd1,0x21,0xa5,0xf3,0x99,0x24,0x83,0x55,0x7e,0x05,0xc3,0xb3,0x65,0xa6,0xaf,0x74,0xf7,0x4d,0x03 },
{ 0x9e,0x34,0x3c,0x34,0x94,0x80,0x8b,0x3b,0x50,0x23,0x76,0x19,0xa9,0xd0,0xad,0xf9,0x09,0x03,0xe8,0x14,0x46,0x73,0x9a,0xc8,0x9e,0x4b,0x8a,0x8c,0x9d,0x80,0x6c,0x59 },
{ 0xa5,0x6f,0x45,0x98,0x6e,0xbc,0x86,0x35,0x0c,0x98,0xfb,0xe1,0xaf,0x21,0x21,0x44,0x1b,0x0d,0x2c,0x17,0x34,0x14,0xd4,0x16,0xa6,0xff,0x00,0x14,0x15,0x0e,0x45,0x31 },
{ 0x7d,0x5c,0xcc,0xae,0xa1,0x0a,0x82,0x2a,0xcb,0x99,0x0f,0x8e,0x7b,0xca,0xd8,0x3d,0x59,0x6b,0x5d,0x7d,0x2a,0x02,0xc9,0x1a,0x86,0x9c,0xe7,0x01,0x10,0x0d,0xbc,0x14 },
{ 0x21,0xf6,0x48,0x7d,0x01,0x15,0x2d,0x72,0x5c,0xc6,0x43,0xf9,0xf5,0x9e,0x79,0xd2,0xfd,0xa0,0x22,0xad,0xd8,0xfc,0x66,0x1e,0xb7,0x9d,0xbf,0x90,0x30,0x0a,0xed,0x38 },
{ 0xdb,0xf8,0xd6,0xe5,0xf0,0x51,0x92,0x77,0x84,0xd5,0x1b,0xb5,0xdc,0x45,0xa4,0xb9,0xb1,0x7d,0x36,0x71,0xce,0xfd,0x09,0xd1,0xa4,0xa0,0x6e,0xdb,0xea,0x51,0x14,0x25 },
{ 0x05,0x22,0x89,0x13,0xd8,0xe4,0x79,0x86,0x6f,0x1f,0x37,0xe4,0x90,0x76,0x06,0xed,0x98,0x04,0x6b,0xb4,0xbe,0xdb,0x28,0x7e,0xae,0x2d,0x87,0x07,0xc1,0x2c,0x34,0x4c },
{ 0xe0,0x33,0xbc,0xa7,0xa0,0x40,0x8c,0xde,0xba,0xe8,0xca,0x21,0x74,0xb5,0x76,0xc1,0x72,0xad,0xb7,0x7d,0x78,0xa5,0x68,0x6c,0x11,0x39,0x86,0x54,0x97,0xa2,0x4f,0x41 },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
{ 0xe0,0x33,0xbc,0xa7,0xa0,0x40,0x8c,0xde,0xba,0xe8,0xca,0x21,0x74,0xb5,0x76,0xc1,0x72,0xad,0xb7,0x7d,0x78,0xa5,0x68,0x6c,0x11,0x39,0x86,0x54,0x97,0xa2,0x4f,0x41 },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
{ 0xe0,0x33,0xbc,0xa7,0xa0,0x40,0x8c,0xde,0xba,0xe8,0xca,0x21,0x74,0xb5,0x76,0xc1,0x72,0xad,0xb7,0x7d,0x78,0xa5,0x68,0x6c,0x11,0x39,0x86,0x54,0x97,0xa2,0x4f,0x41 },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
{ 0xe0,0x33,0xbc,0xa7,0xa0,0x40,0x8c,0xde,0xba,0xe8,0xca,0x21,0x74,0xb5,0x76,0xc1,0x72,0xad,0xb7,0x7d,0x78,0xa5,0x68,0x6c,0x11,0x39,0x86,0x54,0x97,0xa2,0x4f,0x41 },
{ 0x1c,0x18,0xa4,0x09,0x5c,0x2b,0x9f,0x76,0x78,0xc8,0xfb,0x23,0x84,0xea,0xb7,0xd4,0xfe,0x4f,0x78,0x8f,0x25,0x80,0xd6,0xbb,0x0e,0x06,0xcf,0x6e,0x13,0x12,0xf3,0x0b },
{ 0xf1,0x32,0xe4,0x22,0x0c,0x71,0x0a,0xac,0xf5,0x61,0xbf,0x0f,0xc3,0x07,0x35,0xad,0x61,0xbc,0x84,0xb6,0x3e,0x90,0xd5,0xbf,0x54,0xcf,0x81,0xb5,0x62,0xea,0xda,0x42 },
{ 0x2b,0x39,0x08,0x80,0xe7,0x24,0x4e,0x37,0x84,0xe3,0x04,0x73,0x09,0x50,0xe6,0x3e,0x91,0xf4,0xbe,0xec,0x78,0x66,0x70,0x54,0xcf,0x02,0x26,0xc5,0x88,0x0d,0xd3,0x2c },
{ 0xf4,0x5b,0xce,0x45,0x30,0x25,0x5b,0x17,0x63,0x17,0xbb,0xf0,0x5b,0x0b,0x18,0xbc,0x8d,0xd6,0xbc,0x7a,0xbd,0x16,0x41,0x4e,0xbf,0xb9,0x06,0x1b,0xd6,0x2f,0x6f,0x19 },
{ 0x1d,0x01,0xaa,0xc0,0xc7,0xe3,0x8f,0xfb,0x3e,0x25,0xee,0xc4,0x32,0x59,0xd8,0x56,0x29,0xbe,0xb4,0xc3,0xd9,0x4f,0x7f,0x38,0x13,0x8c,0xf9,0xca,0x97,0x82,0xeb,0x79 },
{ 0x6c,0x9a,0x29,0xd1,0x8c,0x26,0x90,0x78,0xfd,0xed,0x27,0x34,0x60,0x8a,0xd1,0x98,0xa3,0x6c,0xe7,0x57,0x9b,0x7f,0xf8,0x62,0xa2,0xc5,0x15,0xf8,0x51,0xe1,0x1a,0x54 },
{ 0x2c,0x52,0xe1,0x5e,0x14,0x31,0xf5,0x0e,0x88,0xdd,0x30,0x02,0x9f,0x56,0x34,0x23,0xc1,0xfa,0x53,0x0b,0xba,0xcb,0x9d,0xb6,0x23,0x46,0x0c,0xee,0xb0,0xf6,0x4b,0x63 },
{ 0x04,0xd4,0x40,0x9f,0x02,0xa3,0xc9,0x7e,0x50,0x70,0x02,0xdc,0xe8,0xb8,0xee,0xc7,0x7f,0xac,0x1a,0xa1,0xba,0xeb,0x0f,0x25,0xec,0xa2,0x8a,0xc4,0xb6,0xa3,0xe6,0x25 },
{ 0xf0,0x87,0x27,0xb3,0xb2,0x2f,0x2e,0xff,0xaa,0xc3,0x55,0x75,0xf2,0xea,0x0b,0x67,0xed,0x8c,0xa4,0x81,0x02,0x14,0x07,0xac,0xaf,0x46,0x63,0xdc,0x8d,0x8c,0xc3,0x7c },
{ 0x49,0xe0,0x3c,0x89,0x4b,0xe3,0x3f,0x85,0xa2,0xbf,0xa5,0x65,0x30,0x39,0x3c,0x8d,0xd4,0x3f,0xea,0x89,0x77,0x1f,0x6b,0x13,0xf4,0x90,0x6f,0x42,0x91,0x57,0xd6,0x36 },
{ 0xdf,0x01,0x8e,0xd9,0x9f,0x9a,0x8d,0xd5,0xdd,0x38,0x69,0x44,0xd3,0x9a,0x7b,0xd1,0xa6,0x0b,0x9e,0xc2,0x1f,0x65,0xcd,0xcc,0x74,0xd2,0x15,0x9e,0xa7,0xe7,0x84,0x3d },
{ 0xf7,0x12,0x31,0x18,0x91,0xc1,0x3a,0x7f,0x16,0xb1,0x8f,0xab,0x7c,0x1b,0x20,0x9f,0x78,0x7f,0x99,0xf2,0x05,0x57,0x1b,0x8e,0x99,0x03,0xa2,0x96,0xe6,0xec,0xc0,0x56 },
{ 0xcb,0xda,0x00,0xfe,0x5a,0xbe,0x61,0x68,0xc9,0x3e,0x68,0xce,0xa5,0x11,0x62,0xc0,0xbf,0x15,0xe1,0x71,0xb9,0x8e,0x36,0xd9,0x54,0x16,0xce,0x14,0xbd,0xf6,0xf6,0x5d },
{ 0x04,0xd5,0xfe,0xbb,0xf9,0xa4,0xe5,0x49,0x0e,0x72,0x74,0x57,0xd7,0xb6,0xec,0xbd,0x02,0x21,0x19,0xa8,0x63,0xc9,0x95,0xe3,0xc5,0x80,0x2c,0xe6,0x37,0x4b,0x83,0x74 },
{ 0x24,0x08,0x85,0x93,0x52,0x14,0x28,0x50,0x24,0xef,0xbf,0x83,0xc9,0x0d,0x51,0x53,0xb8,0x23,0x0a,0x46,0x5d,0x09,0x9f,0x67,0xe6,0x25,0xd8,0x57,0x06,0xf9,0x70,0x5e },
{ 0x4d,0x16,0xaa,0x5d,0xde,0x81,0xbc,0xe7,0xf2,0xd7,0x5c,0x3e,0x6a,0xa9,0xc0,0x67,0x23,0x22,0x07,0xa2,0xd7,0x97,0x59,0xf7,0x17,0x90,0xb0,0xd9,0x41,0x4f,0xc4,0x6a },
{ 0x8c,0xec,0x23,0xc6,0x8c,0x4f,0x98,0xb0,0xb8,0x73,0xc9,0x37,0xde,0xd1,0xb8,0xcf,0x4e,0x94,0x12,0x5f,0x8e,0x24,0x4e,0x29,0x05,0xbb,0xa4,0xc3,0x0e,0x80,0x39,0x1c },
{ 0x8f,0x3f,0xa2,0xd6,0x13,0x25,0x1f,0x62,0x30,0x36,0x9f,0x9d,0xe1,0xe6,0xd2,0xf0,0x39,0x5a,0x8a,0xb6,0xcf,0x82,0x04,0xc0,0x9e,0x79,0x04,0x8b,0x43,0x29,0x68,0x4a },
{ 0x5b,0xd9,0x99,0xc3,0xcc,0x16,0x23,0x21,0xdd,0xe3,0x64,0xc0,0x13,0xc0,0xa1,0x76,0x13,0x03,0x09,0x4c,0xf1,0xbc,0x84,0xa9,0xa1,0x02,0x81,0xc9,0xe3,0xaa,0xaf,0x0c },
{ 0x4f,0x51,0x65,0x12,0x33,0xb3,0xf8,0xcd,0x48,0xdc,0x0d,0x09,0x55,0xe8,0x70,0xe2,0x94,0x9b,0x78,0x5c,0xa2,0x7b,0x1c,0x0f,0x37,0x4e,0x35,0xce,0x98,0x8b,0xc0,0x1d },
{ 0x3c,0xf8,0xc7,0x4b,0x41,0xa7,0x0b,0xc1,0x41,0x81,0x3f,0xd3,0x1c,0xfd,0x36,0xc2,0x29,0x04,0xcd,0x62,0xec,0x01,0xc0,0xbf,0xe6,0xa6,0xeb,0xe6,0xa4,0x5c,0x1f,0x31 },
{ 0xd0,0xa7,0xc1,0xf6,0xeb,0xbd,0xeb,0xcd,0x9e,0x56,0x1f,0x6c,0x12,0x20,0x9f,0x8f,0x5c,0x8c,0xf5,0x33,0xf5,0x30,0x86,0xb9,0x77,0x7d,0xf1,0x7c,0xe1,0x4f,0x2b,0x71 },
{ 0x78,0xf8,0xf4,0xda,0x51,0xa8,0x45,0x68,0x60,0xa3,0x22,0xc0,0x2b,0xa5,0xc0,0xe9,0xdd,0x0c,0xbb,0x03,0x0f,0x3c,0x36,0x04,0x3e,0x32,0x77,0xd1,0xab,0xa5,0x61,0x71 },
{ 0x19,0xc8,0x3a,0x7e,0xc0,0xce,0x1c,0x50,0x25,0xc4,0x68,0xab,0x40,0x8f,0x06,0xaa,0x1e,0xa6,0x35,0xbe,0x6b,0x66,0xf8,0xec,0xba,0xf4,0xfc,0x22,0x91,0x31,0x7d,0x3b },
{ 0xc9,0x9d,0x33,0xdb,0xcd,0x7b,0x0b,0xbc,0xc2,0xe9,0xc9,0x96,0x13,0x94,0x5c,0x82,0x8d,0x05,0x0b,0x96,0xa7,0x60,0x52,0x6b,0xa1,0xcc,0x30,0xea,0xbf,0x37,0xea,0x16 },
{ 0x33,0xaf,0x11,0x57,0x3f,0x60,0x22,0x18,0x06,0xf4,0x39,0xab,0x6b,0xf3,0xe2,0xdd,0xde,0x5d,0x2e,0xd7,0x59,0xb6,0x41,0x5e,0x86,0x21,0x9f,0x28,0xc7,0x2b,0x01,0x41 },
{ 0xba,0x5e,0x80,0x3b,0x00,0x58,0xad,0xb0,0xef,0x58,0x67,0xcf,0x6a,0x09,0xe6,0xcc,0x7d,0xd3,0xe5,0x30,0x3c,0x7c,0x6a,0xbb,0x44,0x52,0x42,0x03,0x83,0xd0,0x98,0x38 },
{ 0xf9,0x4b,0xa0,0x87,0x73,0x8b,0x21,0xf7,0x64,0x6a,0x1d,0xad,0x76,0x35,0x4a,0x5f,0x5a,0xd1,0xff,0x6d,0xc2,0xde,0xcd,0x6d,0x8a,0x22,0x7f,0x75,0xc5,0xe2,0x2c,0x1b },
{ 0x3f,0x75,0x94,0xc2,0xfe,0x33,0x4d,0xa3,0x23,0x49,0xb4,0x51,0x2b,0x4a,0xa4,0xf7,0xb4,0xdc,0xc5,0xf3,0x9e,0xfd,0x8c,0xec,0xdf,0xe1,0xf5,0x55,0x2d,0xbe,0x13,0x5a },
{ 0x80,0x17,0x67,0x7f,0xf2,0x49,0x5a,0x3d,0x20,0x0b,0x97,0x72,0x18,0x8a,0xd0,0xe5,0x3f,0xf9,0xfd,0xba,0x69,0xfa,0x64,0x53,0x8f,0x2e,0x24,0x05,0x60,0x66,0x39,0x42 },
{ 0x1a,0xa3,0xcb,0xcd,0x4e,0x56,0xd6,0xa1,0x8d,0xd6,0x6e,0x01,0xe4,0x32,0x4a,0xfe,0xfd,0x8b,0x31,0x9d,0x78,0xb9,0x16,0x37,0xdc,0x90,0x06,0xcc,0xee,0x03,0x91,0x48 },
{ 0x0b,0xe5,0x80,0x3a,0xfc,0x26,0x52,0xc5,0x7d,0x74,0x0f,0x85,0x9e,0x8b,0xaa,0x55,0x68,0x1a,0x47,0x2f,0x1f,0x71,0x5d,0xc6,0x0e,0x14,0x5e,0x99,0x22,0x7e,0x3c,0x67 },
{ 0x1a,0x94,0xa1,0x95,0xe9,0x50,0x8c,0xdc,0x70,0x85,0x93,0x1a,0xcf,0x7c,0xf6,0x38,0xa7,0x78,0x36,0x4b,0x3f,0x54,0x1e,0xed,0x6e,0x7f,0xbd,0x64,0x60,0x20,0x6d,0x55 },
{ 0xcf,0x2a,0x5c,0xd1,0x37,0x38,0xec,0xd6,0x0f,0x03,0x5e,0x0b,0xd1,0xbe,0x4f,0x5e,0x23,0x04,0xd7,0x09,0xf4,0xcc,0x19,0x39,0xf2,0x5c,0x56,0x2d,0x58,0x36,0xb5,0x52 },
{ 0x8a,0xe0,0x9b,0xad,0x6c,0xb3,0x3c,0x83,0xaa,0x22,0x00,0xba,0xb7,0xd2,0x77,0x64,0x0f,0x6d,0xb4,0x50,0xd7,0xd9,0x2f,0x7c,0x27,0x79,0x52,0x63,0x94,0xd2,0x3b,0x29 },
{ 0x73,0xc1,0x7c,0x41,0x03,0xb7,0x27,0x83,0x1d,0xc5,0xbe,0x14,0x0e,0x21,0x97,0x81,0x06,0xaf,0xab,0xf7,0x60,0x2d,0x40,0x65,0x50,0x18,0x16,0x3e,0xbe,0xe1,0xe0,0x0c },
{ 0x13,0x16,0x3d,0x11,0xfa,0xd9,0x09,0x56,0x3d,0xea,0xee,0x72,0xee,0xe7,0x16,0xef,0x7b,0xf9,0x08,0x9d,0xd6,0xaf,0xd1,0x37,0xf4,0xcd,0x31,0x2e,0xcf,0x35,0x5d,0x49 },
{ 0xf0,0xf1,0xf4,0xf8,0x39,0x98,0x66,0x4f,0x20,0x15,0x63,0xdb,0x12,0xd8,0xaa,0x42,0xc2,0x3b,0xc1,0xad,0x36,0xf6,0xa7,0xfd,0xe3,0x62,0xe7,0xe5,0xa5,0x3a,0xc8,0x36 },
{ 0x79,0x8c,0x3f,0x22,0x0c,0xbf,0x99,0x55,0x71,0x14,0xbc,0x3f,0xba,0x6c,0xcd,0x20,0x43,0xa3,0xed,0x24,0x80,0x59,0x95,0x0b,0x33,0x44,0xeb,0x6a,0x7f,0x93,0x2f,0x23 },
{ 0xcb,0x38,0xd9,0xbd,0x0e,0xb8,0x65,0xbb,0x01,0xde,0x7c,0xc7,0x6f,0x69,0x60,0x08,0x28,0x55,0xb2,0xec,0x74,0x51,0x4c,0x46,0x5e,0xb9,0x79,0x74,0xa3,0xb1,0xb4,0x40 },
{ 0x89,0xd8,0xb2,0xff,0x9f,0xd2,0x7a,0xbe,0x37,0xc8,0x15,0x0c,0xc0,0xc6,0x98,0xdc,0x91,0x69,0x45,0x13,0x18,0x80,0x21,0x29,0x57,0x88,0x7d,0xd9,0xef,0xaf,0xa7,0x4d },
{ 0xe7,0x13,0x88,0xb8,0x73,0x22,0xa5,0xe3,0x30,0x5a,0x34,0x12,0x3d,0xcc,0xeb,0xab,0xd2,0xf1,0x4d,0xea,0xbd,0xbb,0xe0,0xed,0x16,0x88,0x44,0x86,0xf5,0x01,0x52,0x23 },
{ 0x9c,0x72,0x65,0x54,0x95,0x2e,0xee,0x6e,0x0d,0x62,0x5a,0x30,0x28,0x0c,0x78,0x20,0xd5,0xe9,0x99,0xcf,0x60,0x4e,0xc9,0xfe,0x2e,0xdb,0xf7,0xc9,0xf3,0x18,0x65,0x1e },
{ 0x78,0xfd,0xcf,0xc5,0x8e,0xf5,0xf9,0xac,0x03,0x33,0xf0,0x33,0x83,0xba,0x95,0x5e,0x63,0x42,0xa3,0xe4,0x1b,0xe7,0x13,0x00,0x56,0x23,0x47,0x7d,0x8a,0x1c,0xf0,0x37 },
{ 0xc0,0x0b,0xce,0x80,0x1d,0x0f,0xd0,0x90,0x69,0x03,0xc4,0x4d,0x87,0x40,0x87,0x05,0x79,0x48,0x6c,0x35,0x9a,0x35,0xd9,0x6c,0xbf,0xc5,0x8e,0xd9,0xd6,0x5f,0x6c,0x55 },
{ 0x99,0xb2,0x8e,0xe5,0xfe,0x43,0x22,0xc7,0x87,0xa3,0x77,0x6d,0x5e,0xfb,0x4f,0xe6,0xc9,0x71,0xb4,0x40,0xd2,0xfa,0x59,0x35,0x8c,0x3b,0xdf,0x88,0x1e,0xef,0x69,0x5a },
{ 0xc8,0x34,0xd5,0x94,0xf5,0x11,0xa6,0x6c,0x1b,0x1d,0x37,0x7d,0x64,0x9b,0xff,0xa9,0x0d,0x2d,0xf2,0x9e,0xc9,0xe5,0xf8,0xc8,0x72,0x60,0xc0,0x7b,0xbd,0xe0,0x81,0x7b },
{ 0xb0,0x07,0xcb,0x85,0x56,0xa8,0x9a,0x1e,0x97,0x0e,0x3a,0x6f,0x6d,0x92,0x72,0x41,0x3a,0xba,0xe8,0xdc,0x1e,0xfc,0xb6,0xa5,0xc2,0x0c,0xa8,0x63,0xe0,0x89,0xc5,0x65 },
{ 0x3e,0x57,0x80,0xa2,0x55,0x33,0x80,0x72,0xad,0x9a,0xc8,0xae,0x1b,0xf4,0x04,0xaf,0xd5,0xe7,0x07,0xc0,0xdd,0xa6,0x3a,0xb2,0xc8,0xf6,0xce,0x8b,0xb5,0x81,0x9d,0x1e },
{ 0x9c,0x28,0xe6,0xc7,0x97,0x62,0xa0,0xcf,0x34,0xa5,0x4c,0x79,0x37,0x3e,0x79,0x8b,0x2c,0x2e,0x39,0x37,0x8b,0x65,0xb4,0x90,0x74,0x89,0xb8,0x0f,0x6e,0x4f,0x1e,0x3f },
{ 0xe8,0x11,0x13,0xdd,0x23,0x1f,0x54,0xc8,0xe4,0xd1,0x28,0x55,0xb1,0x5f,0x9d,0xb3,0x38,0x68,0x97,0x0e,0x9b,0xcf,0x76,0xfa,0x08,0x74,0x56,0x30,0x30,0x06,0xc1,0x63 },
{ 0xf2,0x44,0x87,0xa4,0x13,0x4d,0x55,0x9b,0x51,0x38,0x9f,0x02,0xda,0x1e,0xf4,0x8f,0x5a,0x90,0x4a,0x2f,0xdd,0x5a,0x6e,0xed,0x20,0x94,0xee,0x45,0x9e,0x64,0x36,0x32 },
{ 0x09,0x09,0x6c,0xe1,0x96,0xa3,0x26,0x8c,0x3f,0x76,0x58,0x22,0xf5,0xd5,0x41,0xc3,0x7f,0x6a,0x98,0x13,0x2d,0x9f,0x41,0x88,0x98,0xf4,0xcb,0x6e,0x48,0x63,0x85,0x5c },
{ 0x16,0xfb,0x11,0xd1,0x84,0x18,0x0f,0x05,0xf8,0x84,0x4d,0x19,0x37,0x86,0x6d,0x0d,0x89,0x68,0x47,0x47,0x55,0xdb,0x7a,0x7b,0x1a,0x47,0x54,0xc1,0x6c,0xfd,0x70,0x17 },
{ 0x99,0x13,0xcc,0xd1,0x06,0x7e,0xf5,0x22,0x36,0xb5,0xc9,0x4f,0xbc,0x46,0xfa,0x6b,0x14,0x08,0x35,0x2a,0x69,0x1d,0x65,0x35,0x81,0x3e,0xa7,0xa9,0x98,0x78,0x0e,0x56 },
{ 0x7c,0x9d,0x44,0x3c,0xee,0xb6,0x28,0x0f,0x2e,0x0d,0xf2,0x87,0x83,0x00,0x8d,0x0a,0x97,0xae,0x5f,0x0b,0x59,0xd0,0x8d,0xff,0x02,0x56,0x83,0xe7,0x08,0xe7,0x19,0x3d },
{ 0x1c,0x56,0x21,0x8a,0xc1,0xc0,0xbe,0x47,0x7a,0x3b,0xdc,0xeb,0x3b,0xb3,0x54,0x75,0xcc,0x4c,0xb3,0xd8,0xcf,0x6d,0x0e,0xfa,0x97,0xdb,0xa8,0xc2,0x5b,0xe2,0x8f,0x3b },
{ 0x5a,0x7d,0x39,0x2f,0xb3,0x17,0x79,0xdd,0x68,0xec,0x64,0xd3,0x89,0xb7,0x0f,0x05,0xe7,0x57,0x36,0xa3,0xd0,0x45,0xc3,0xbf,0x78,0x2d,0x51,0xd4,0x68,0xd9,0xc2,0x40 },
{ 0x05,0xc4,0x90,0xfe,0xe1,0xd0,0x8b,0x1c,0x27,0xe8,0x68,0xd8,0x27,0x10,0xee,0x9e,0xfc,0x19,0xc5,0xda,0x96,0x87,0x35,0x60,0x27,0x36,0xe0,0xaa,0x2c,0xba,0x1f,0x0d },
{ 0x84,0x99,0x64,0xc1,0x23,0x3f,0x4e,0xc8,0x0b,0x61,0x5a,0x7c,0xfa,0x94,0xc8,0xba,0xe0,0xd0,0x00,0x3d,0xc6,0x53,0x92,0x07,0x54,0x0a,0x03,0x9b,0xfa,0x5a,0x57,0x39 },
{ 0xd9,0x47,0x32,0xdf,0x95,0xe0,0xf8,0xe1,0x6b,0x5e,0xfa,0xb6,0xbf,0xa0,0x8f,0xaa,0x80,0xad,0x3f,0x1e,0xa1,0x3c,0x3a,0xeb,0xa1,0x50,0xa9,0x89,0x87,0x30,0xa6,0x7f },
{ 0x8c,0x27,0x13,0x5e,0xf8,0x8e,0x05,0x28,0x2b,0x34,0x11,0x80,0x8c,0xfc,0x5f,0x85,0x09,0x51,0xf3,0xe9,0xab,0x6e,0xca,0xda,0x4e,0x02,0xcb,0xf2,0x3f,0x3e,0x79,0x02 },
{ 0x22,0xa4,0x01,0x66,0x79,0x81,0x02,0x65,0xdc,0xce,0xe3,0x21,0x0a,0x3f,0x52,0x46,0x5f,0xf3,0x7c,0xd3,0xe6,0xb8,0x0c,0x1e,0x5e,0xda,0x5d,0xb1,0xb5,0x77,0xa0,0x47 },
{ 0xcc,0xea,0xb8,0x7f,0x45,0xfe,0x0d,0x35,0xb0,0x02,0xcc,0x79,0xe6,0x0b,0x26,0x22,0x9b,0xdf,0x93,0xe0,0x99,0x5e,0xfb,0x73,0x4a,0xba,0x8b,0xb2,0xcd,0x38,0x95,0x38 },
{ 0x33,0x6d,0x5d,0xa3,0xd0,0x0f,0x71,0x81,0x36,0x64,0x1f,0x6b,0xc4,0xb4,0x75,0xb9,0x6d,0xbb,0x8e,0x38,0x7a,0x04,0x81,0xef,0x64,0x02,0x99,0x45,0x80,0xd4,0x83,0x6b },
{ 0x50,0x46,0x01,0x09,0xa2,0x85,0x6f,0x6c,0xfd,0x04,0xc0,0x76,0xae,0xed,0xea,0x5c,0xe5,0x29,0x85,0x48,0xa6,0x3a,0xc6,0xb5,0x18,0x01,0x11,0x19,0x67,0xd8,0xa5,0x08 },
{ 0xde,0x7c,0x1c,0x5c,0x7c,0x81,0xbd,0x92,0x23,0x93,0xde,0x07,0x4f,0x52,0x3d,0x48,0x99,0xbf,0xbb,0x88,0x93,0x7c,0x49,0x7f,0x1b,0x41,0xee,0xb6,0xc3,0xd2,0xaf,0x62 },
{ 0x0d,0x98,0x4d,0xf1,0x84,0xeb,0xd1,0xd8,0x58,0x2e,0x5f,0x97,0x31,0xbd,0x2c,0xdc,0x2b,0xcc,0x3d,0xd6,0x59,0xdb,0x21,0x45,0x61,0x57,0x25,0x12,0x6c,0x05,0x92,0x1c },
{ 0x1a,0x23,0xac,0x3f,0xe1,0x20,0xc7,0x3a,0x33,0x02,0x83,0xcb,0x50,0x66,0x3a,0xb4,0x87,0x85,0xb9,0xd1,0x7f,0x7f,0xbf,0x9d,0xdc,0x4c,0x0c,0x4b,0x20,0x91,0xf9,0x06 },
{ 0x88,0xff,0x40,0x77,0x59,0x19,0xb1,0x25,0x8c,0xb7,0x04,0x1c,0x05,0x33,0x46,0xee,0x99,0xb0,0x45,0x24,0x60,0x97,0x31,0xaf,0x86,0xa4,0x99,0x9e,0x70,0x19,0x49,0x0c },
{ 0x2e,0x4a,0xe6,0x4d,0x98,0x3e,0x61,0x35,0xb0,0x71,0xf3,0x5d,0xf1,0xb4,0x16,0x4f,0xe6,0xb8,0x2d,0x02,0xf7,0xd6,0xa4,0x43,0x90,0x2c,0x28,0xfc,0xda,0x42,0x95,0x4b },
{ 0x65,0xfa,0x48,0x29,0x75,0xa2,0x6f,0x4b,0x7f,0xbf,0x37,0xde,0x89,0x0b,0xa9,0x8c,0xc3,0x0b,0x32,0x2c,0x60,0x40,0xda,0xb1,0x97,0x7e,0x0b,0xca,0x3e,0x34,0xf5,0x1d },
{ 0xce,0xab,0x4e,0xac,0x72,0x86,0xd8,0xd7,0xa6,0x64,0x4e,0x92,0x91,0x56,0x81,0x3b,0xc7,0x71,0x6f,0x30,0x8e,0xec,0x2f,0x7a,0x8c,0x81,0x9e,0x4b,0x2f,0xa4,0x6f,0x02 },
{ 0x8b,0xa4,0x48,0xc6,0x24,0x26,0x9a,0x73,0x90,0x6c,0x33,0xa2,0xc1,0x40,0xbc,0x06,0xb8,0x01,0xd3,0x09,0x52,0xd8,0xdb,0xbb,0x78,0xa5,0xfa,0xf8,0x2a,0x98,0xa3,0x69 },
{ 0xfd,0xe8,0x59,0xe0,0x14,0xda,0x34,0x5b,0xed,0xe3,0x7c,0x08,0x9a,0xd5,0xe2,0x5d,0x29,0xda,0x2e,0x7e,0x93,0x13,0xd7,0xc0,0x35,0xac,0xf9,0x3f,0xee,0x56,0xf4,0x7d },
{ 0x09,0x19,0x7e,0xbb,0x7b,0xab,0x01,0xc0,0xa8,0x0a,0xcd,0x40,0x3f,0x89,0x34,0x85,0xed,0x1b,0x3d,0xbc,0x98,0xb4,0x11,0x73,0x3b,0x26,0x76,0x17,0xe4,0xc7,0x3f,0x25 },
{ 0x42,0xb7,0x5f,0x25,0xf4,0x18,0xd1,0xb5,0x8d,0x81,0xbd,0xff,0xc6,0x50,0xb7,0x2a,0xde,0xf3,0x3b,0x93,0x1f,0x31,0x1a,0x87,0xb7,0xd6,0x52,0x3d,0xc7,0x30,0x58,0x25 },
{ 0x5a,0xa4,0x2b,0xd6,0x01,0x06,0x58,0x46,0xbd,0x6d,0x8d,0xb1,0xd4,0xa8,0x47,0x74,0x16,0x8e,0x1d,0xcd,0xf1,0x11,0x2f,0xfd,0xc8,0x6d,0x46,0x38,0x52,0xd0,0xf8,0x5c },
{ 0x2e,0x1c,0x3d,0x7b,0x9e,0xc5,0x6f,0xf9,0xee,0x7a,0xd6,0x23,0x6e,0xd6,0x4e,0xb3,0x92,0x2a,0x36,0x66,0x38,0x02,0xac,0x74,0x99,0xa4,0xc1,0x4f,0x35,0x0b,0x4c,0x5d },
{ 0x69,0x9e,0x2d,0x4a,0xa3,0x69,0xc9,0x50,0x91,0xeb,0x4b,0xee,0x0c,0xf9,0x12,0xf6,0x29,0x05,0x77,0x5a,0x70,0xd4,0xf6,0x85,0x66,0xe2,0xad,0xe3,0xff,0xac,0xb9,0x14 },
{ 0x08,0x67,0xf4,0x61,0x2f,0x58,0xf0,0xe1,0x3c,0x3d,0x6c,0x15,0x66,0x22,0x68,0xda,0xb0,0xe3,0x3a,0x05,0x91,0x22,0x52,0x25,0x58,0x36,0xf2,0x8f,0x3a,0xc0,0x25,0x4f },
{ 0x72,0x40,0xcd,0x93,0x03,0xb0,0x0e,0x12,0xdc,0x07,0x16,0x91,0x1a,0x12,0xe2,0xbb,0x00,0x3c,0x6f,0x6f,0xbf,0xb0,0x0c,0x1e,0xc2,0x4e,0x0f,0xec,0xeb,0x23,0x8c,0x45 },
{ 0x21,0xea,0x0b,0x55,0x9f,0xb9,0x73,0xe6,0xe0,0x14,0x8f,0xae,0x2e,0xdc,0xec,0x8f,0x1f,0x5c,0x8b,0x7d,0xc3,0x1e,0x7b,0xab,0x3d,0x1e,0xb7,0xe9,0x6f,0xa7,0x9b,0x10 },
{ 0x26,0xbd,0x5a,0x9c,0x33,0x73,0x35,0x09,0x7b,0xd1,0xc8,0xdf,0xa0,0xaf,0x03,0xc6,0x5a,0xee,0x5d,0xf2,0xa9,0x3f,0x14,0x7f,0xee,0x1d,0x06,0xb3,0x3a,0xfe,0xd6,0x30 },
{ 0xcb,0xb6,0x0f,0x43,0xff,0x3d,0xb8,0xc4,0x1e,0x60,0xbe,0x88,0x9d,0x30,0x95,0x93,0xb4,0xf2,0x9b,0x4b,0x17,0x60,0xf4,0x14,0xb8,0xa1,0x22,0x2f,0x71,0xa8,0xde,0x2b },
{ 0x7b,0xab,0x4f,0x7b,0x96,0x44,0xb3,0xa0,0x8c,0xc3,0x69,0x56,0x37,0x23,0x7b,0x50,0xc0,0xcc,0x38,0x9e,0x0b,0x75,0xfd,0xb6,0x56,0xb5,0x9a,0x55,0x48,0x4d,0x1b,0x7b },
{ 0x24,0xa6,0x5f,0x6e,0xc5,0xfc,0x80,0xe2,0xa6,0x5d,0xd1,0x12,0x49,0x3c,0x77,0x4b,0xf4,0x98,0x63,0xfe,0x3b,0x16,0x89,0x03,0x1c,0xbd,0x40,0xa3,0xe0,0x63,0xf3,0x55 },
{ 0x6b,0x95,0xde,0x82,0x50,0x6f,0xac,0xa0,0x65,0x36,0xf6,0xe2,0xf7,0xfd,0xa6,0xd0,0xa1,0xba,0xad,0x8d,0x5e,0xa4,0x13,0x7d,0xec,0xbd,0x7b,0x91,0xfd,0x7d,0xde,0x50 },
{ 0x35,0xfd,0x92,0x37,0x66,0xce,0x1a,0x64,0x42,0x66,0xfd,0x82,0x25,0x76,0xc1,0xbd,0xf8,0x19,0x15,0xa5,0xfa,0x74,0xae,0x90,0x0b,0x94,0xea,0x60,0x5a,0xa3,0x51,0x5a },
{ 0x4d,0x92,0x56,0x24,0xd1,0xb9,0x3a,0x0c,0x16,0x4a,0x07,0x16,0xe7,0x7c,0x10,0xb9,0xfe,0x61,0xd4,0x8b,0xb8,0x50,0x22,0xb1,0xbd,0xdf,0x19,0xbf,0x42,0x7a,0xd8,0x0b },
{ 0xca,0xb8,0xe5,0x03,0x68,0xee,0x1f,0x1e,0x1b,0x58,0x6a,0xe2,0x19,0x55,0x3c,0x46,0x75,0x1a,0xec,0xb7,0xfc,0xc6,0xb2,0x3f,0x9f,0x54,0x07,0x44,0xa6,0x5a,0x23,0x31 },
{ 0x8b,0x0d,0x45,0x80,0xad,0x80,0x9a,0x4c,0x29,0x90,0xcf,0xcc,0x7a,0x55,0x62,0x6c,0x8e,0xac,0x2e,0xec,0xc2,0xb6,0x68,0x77,0x94,0xed,0x85,0xaa,0x8d,0x70,0x21,0x2e },
{ 0x77,0xb0,0x51,0x61,0xe7,0x65,0xfb,0xb3,0xbf,0xe4,0xd4,0xaf,0x32,0xfb,0xd9,0xfa,0xfe,0x3b,0x07,0x01,0x17,0x8b,0xbd,0xdd,0x71,0x15,0x3b,0xe2,0xf0,0xd7,0x00,0x25 },
{ 0xb5,0x36,0x45,0x6c,0x82,0x5f,0x2f,0x57,0xa1,0x14,0x0d,0x76,0xc2,0x87,0x53,0x6a,0x70,0x8c,0xd6,0x9a,0x3c,0x7f,0x78,0x9f,0x5b,0x26,0xa7,0xa6,0xc0,0x3b,0xde,0x67 },
{ 0xcb,0xb3,0x91,0x3b,0x12,0xb4,0x13,0x85,0xca,0x5b,0x9c,0x30,0x29,0x7d,0xc1,0x2c,0x6f,0x5c,0xba,0x2a,0x6d,0xc1,0x92,0x26,0x0d,0x5d,0xeb,0x01,0x7d,0xa9,0xe9,0x54 },
{ 0xf5,0x45,0x8c,0x2c,0x90,0x7e,0x09,0xcd,0x34,0xb4,0x62,0x59,0x8c,0x1c,0xd2,0x6d,0xb5,0xd9,0x64,0xea,0xad,0xcf,0x07,0xed,0x4e,0xb5,0x81,0x6e,0x07,0x35,0x76,0x3b },
{ 0x60,0x20,0x58,0xa1,0x70,0x1a,0x07,0xfa,0x38,0xa8,0x56,0x42,0x7c,0x09,0xec,0x2b,0x14,0xab,0x8f,0x99,0xc1,0xef,0xb2,0x1f,0xb7,0x39,0xf5,0xfc,0xe3,0xf4,0x84,0x6d },
{ 0xd8,0x29,0x4f,0x38,0x93,0xdb,0xb8,0xca,0x85,0xe0,0x45,0xab,0xa2,0xe4,0x6b,0x88,0x49,0x62,0x6f,0x1f,0x6f,0x1d,0xab,0xea,0x81,0xd1,0xf8,0x38,0x39,0x8e,0xab,0x55 },
{ 0x94,0xdd,0xfe,0xfc,0xa5,0x60,0x39,0xca,0x6f,0xe3,0x0f,0xb6,0xb0,0xf9,0xc2,0x6e,0x6e,0x52,0x5a,0x59,0x04,0x83,0xc4,0x56,0x59,0x43,0x88,0x00,0x5f,0xfe,0x9d,0x46 },
{ 0xd7,0xcc,0xf3,0xc4,0x63,0x63,0x3a,0xa3,0x82,0x89,0xbc,0x55,0xe9,0x78,0x17,0xbc,0xef,0xfc,0x8f,0x31,0x0c,0x9f,0xc3,0xde,0xa9,0xc6,0x0d,0x11,0x8b,0x36,0x3c,0x6d },
{ 0x63,0x1c,0x64,0xf1,0x1b,0x9b,0xf2,0xb0,0xad,0xcb,0x9a,0x97,0xa4,0x7f,0x04,0xf0,0x02,0xf2,0x9d,0x10,0x32,0x16,0xfe,0x85,0x9f,0xee,0x74,0x76,0xd8,0x39,0xd3,0x2b },
{ 0xcb,0x44,0xeb,0x34,0xa6,0x07,0xe2,0x95,0x2b,0x7a,0xbe,0x5a,0xbf,0xdc,0x5f,0xc5,0xa8,0x4d,0x29,0x7b,0xe8,0x27,0x3b,0xa9,0xa2,0x20,0x07,0xf0,0x98,0x10,0x0c,0x56 },
{ 0x4b,0xd4,0x30,0x8b,0x91,0xb6,0x25,0x22,0x88,0x4d,0x08,0x49,0xbc,0x6b,0xad,0x93,0xbd,0xbb,0x7f,0x51,0x11,0x71,0x61,0x44,0x37,0xad,0x7c,0xc3,0x85,0xb1,0x8a,0x4e },
{ 0xc6,0xfc,0x9f,0x0f,0x4d,0xc3,0x5d,0xcc,0x27,0x36,0xd5,0x2c,0x63,0x87,0x5b,0x0d,0x15,0x9a,0x04,0x4a,0x73,0x96,0x35,0xf7,0x00,0x98,0xd8,0x8c,0x2c,0x84,0xb6,0x55 },
{ 0xb7,0xdb,0xe3,0x5f,0x0b,0x4e,0xb2,0xf5,0x2e,0x6e,0xaa,0xaa,0xad,0xa6,0x97,0x3f,0x7b,0xa2,0x15,0xb8,0x23,0x20,0x12,0xdd,0xcc,0xff,0x75,0x33,0x1a,0x0f,0xc6,0x5a },
{ 0xe3,0x6c,0x82,0xe6,0x45,0x87,0x49,0x49,0x1f,0xd5,0xf0,0xf2,0x3d,0x87,0x37,0x56,0xaf,0xc3,0xb7,0xb8,0x68,0x71,0xc8,0x50,0x5d,0xad,0xda,0x18,0x16,0x1a,0x29,0x2f },
{ 0xd1,0x70,0xd3,0x0b,0xad,0x9e,0x52,0xa1,0x66,0x7e,0x46,0x2f,0x69,0xd5,0xf4,0xa2,0x74,0xac,0xf6,0xcb,0x82,0x74,0xa4,0xf5,0x9b,0x2f,0x8b,0xc3,0xf3,0x3e,0xc9,0x60 },
{ 0xa3,0x43,0x8b,0x92,0x04,0xde,0xc6,0xf9,0x40,0xdd,0xb0,0xc2,0xc4,0x40,0x09,0x89,0x61,0x35,0xdf,0xc3,0x0e,0xc3,0x2d,0x0f,0x49,0x45,0x1c,0x6a,0x96,0xc4,0x3a,0x2f },
{ 0x5a,0x71,0xb5,0x08,0x26,0x71,0x5d,0x99,0x1f,0x30,0xe8,0x35,0xe8,0xec,0xcc,0x6d,0x89,0xa2,0x6d,0x10,0x4c,0x37,0x90,0x66,0x80,0xbd,0xe1,0xba,0xbb,0x87,0xca,0x11 },
{ 0x37,0xef,0x71,0xf6,0x9e,0x26,0x5e,0xce,0x65,0xc2,0x3f,0x09,0x74,0x37,0x6b,0x17,0xde,0x8c,0xa1,0xa0,0x7c,0x4a,0x81,0x3f,0x20,0xd4,0xe9,0xe4,0xd2,0x30,0x93,0x14 },
{ 0x23,0xce,0x67,0xac,0x57,0x09,0x50,0x1d,0x9f,0x13,0x40,0x30,0x92,0xbc,0xc0,0x1f,0xf0,0xcd,0x15,0xc8,0x52,0x0b,0x6c,0x35,0xd7,0xbe,0x43,0x6d,0xc8,0x58,0xed,0x17 },
{ 0x0e,0x96,0x0e,0x39,0xbc,0xe1,0xea,0xfc,0x55,0x0a,0x7c,0xb6,0xd1,0x45,0x55,0x5d,0x5a,0x74,0x78,0x31,0xed,0xd4,0x8d,0x84,0x97,0x11,0x55,0x12,0x25,0x7c,0xcd,0x20 },
{ 0x53,0x5f,0x6f,0xb9,0x4e,0xdf,0xec,0x30,0x1f,0x4e,0xd4,0xea,0xb5,0xaa,0xf7,0xbf,0xd2,0x53,0x1c,0x2a,0x7c,0xe2,0x90,0xd5,0x6b,0xb3,0x28,0xfa,0x04,0xb9,0x3b,0x5e },
{ 0xc3,0x40,0x13,0x85,0xed,0x41,0x0e,0xbe,0x1d,0x30,0xbe,0x31,0x49,0x51,0xe0,0xf8,0x31,0x7c,0xcd,0x29,0xa5,0x36,0xdb,0xfa,0x78,0x99,0xc7,0x92,0x0b,0x4c,0x20,0x4b },
{ 0x88,0x3b,0xec,0xdb,0x44,0xd3,0x98,0x79,0xc7,0xc6,0xca,0x1c,0x1f,0x97,0x0d,0x07,0xb7,0x20,0xc5,0x34,0x69,0xe4,0xd0,0x0f,0x03,0xd5,0x6c,0xa0,0xe6,0x1c,0x77,0x5a },
{ 0x11,0xd2,0x5b,0x8d,0xe7,0x69,0x7c,0x48,0x1d,0xfc,0xd3,0x35,0xa9,0x58,0x3e,0xd9,0x00,0x96,0xf1,0xe0,0xc8,0x66,0xcb,0x3d,0x63,0x5f,0x08,0xf1,0x2a,0xb1,0xfe,0x36 },
{ 0xd0,0x44,0x10,0x28,0x45,0x3f,0xd7,0x4d,0x80,0xa2,0xf4,0xf7,0x40,0x9f,0x67,0xa5,0x48,0xa3,0xe8,0xe2,0xc3,0x6e,0x0c,0x80,0x8b,0x0e,0x50,0x8e,0xe7,0xe9,0x7f,0x00 },
{ 0x03,0x9a,0x16,0x84,0x12,0x56,0xcd,0x99,0x67,0x10,0xed,0xae,0x26,0x14,0x7e,0xe0,0x1b,0xf4,0x21,0x25,0x50,0xf6,0x27,0x5e,0x39,0xa9,0x89,0x09,0x49,0xca,0x91,0x63 },
{ 0xf6,0x90,0x93,0x64,0x48,0x7e,0x14,0xe6,0x1a,0x1b,0x40,0xff,0x23,0x51,0x3b,0xb9,0x87,0x5f,0x26,0xdb,0xbe,0x4d,0x0a,0xa7,0x3f,0x5b,0xaf,0xb2,0x73,0xfa,0x6e,0x3f },
{ 0x13,0x25,0x9e,0x9d,0x9e,0x8d,0x7e,0x2f,0x13,0xeb,0x09,0x37,0xdb,0x07,0x46,0x91,0x97,0xf1,0x0b,0x91,0x09,0x00,0xb4,0xe8,0x2a,0x7f,0x7a,0xe4,0x09,0xa5,0x53,0x06 },
{ 0xcf,0xbe,0x26,0x15,0x99,0xde,0xae,0x02,0x23,0x59,0x12,0x3f,0xa9,0xfc,0x26,0xa5,0xa1,0x29,0x71,0x2e,0x22,0x05,0xa8,0x4f,0x69,0x3d,0x88,0x16,0x1e,0xb9,0xba,0x3a },
{ 0xb9,0xad,0xa3,0x9e,0x8b,0x45,0x08,0xcf,0x7e,0xd0,0x3d,0x02,0x35,0x04,0xd2,0x87,0xc5,0x96,0xeb,0xe5,0x6f,0x2d,0xd2,0xc3,0x92,0x9e,0xd3,0x36,0xca,0x0f,0x26,0x08 },
{ 0xaa,0xe3,0xc0,0x74,0x20,0x55,0xa9,0x41,0xb3,0x41,0x8c,0xeb,0xee,0x8b,0xc4,0x47,0x6f,0xa1,0x28,0x38,0x68,0x3b,0xf1,0x12,0x5e,0x6b,0x79,0x6e,0x49,0x56,0x5c,0x0d },
{ 0x36,0xee,0xce,0x3b,0xc4,0x94,0xe0,0x48,0xca,0xc3,0xa0,0xef,0x31,0x98,0xcd,0x51,0x5d,0x5e,0x27,0x33,0xc3,0x62,0xcb,0xdd,0x12,0xca,0xd0,0x4f,0x1a,0x83,0x84,0x57 },
{ 0x39,0x7d,0x36,0x87,0x9e,0x93,0xa5,0x58,0xfb,0x40,0x88,0x94,0xa9,0x5e,0xfe,0xc0,0x42,0x6e,0x29,0x70,0xb8,0x43,0xb1,0x9e,0x7d,0xa2,0x25,0x87,0xae,0xf9,0xee,0x63 },
{ 0x9f,0x3a,0x6c,0x42,0x7e,0xe6,0xa9,0xb2,0x1c,0x70,0xed,0x24,0x96,0x36,0xe2,0xe5,0xfb,0x0f,0xe7,0x34,0xfd,0xbc,0x97,0x44,0x76,0x5e,0x37,0x7a,0x62,0x92,0x2b,0x24 },
{ 0x98,0x74,0xa4,0x80,0x92,0xb3,0x40,0x8f,0x73,0x73,0x46,0x70,0xa5,0xa5,0x37,0x4b,0xeb,0x45,0x59,0xd3,0xd2,0x43,0xdf,0xf9,0xd8,0xd4,0x81,0x22,0x1f,0xfa,0x41,0x1d },
{ 0x96,0xbf,0x97,0x96,0x12,0x38,0x26,0x43,0x3a,0x8a,0x6f,0x61,0x09,0x75,0xfc,0x01,0xf5,0xbe,0x20,0x0d,0x9e,0xc7,0x06,0x2d,0x7f,0x77,0x33,0x20,0x81,0x61,0x2d,0x15 },
{ 0x53,0xd6,0x7d,0x7b,0xaa,0x79,0xe1,0x9f,0x6f,0x52,0xd3,0x1b,0x61,0xdc,0x0d,0x53,0xd0,0xa7,0xfc,0xfa,0xdc,0x65,0xb4,0x79,0x6b,0x95,0x0a,0x7f,0xed,0x02,0x89,0x46 },
{ 0x4f,0x12,0xfd,0x93,0x4c,0xbd,0x76,0x56,0x1e,0x17,0xb1,0xaf,0x6f,0xf8,0xe9,0x9a,0xc6,0x98,0xfa,0x0a,0xe3,0x49,0x79,0x15,0xbe,0x41,0x32,0x84,0x44,0x72,0x47,0x76 },
{ 0x2f,0x59,0xcc,0x8b,0x85,0x2b,0x81,0x61,0x8f,0x8b,0x42,0xf0,0x29,0xa7,0x82,0x9e,0x89,0xe3,0x41,0x9f,0xd9,0xd3,0x44,0x31,0x33,0x2e,0xaa,0x0d,0x71,0x5e,0xa3,0x10 },
{ 0x4a,0xb9,0xe8,0x1c,0xb8,0x71,0x9a,0x3f,0x74,0x3e,0xb6,0xf3,0xa9,0x52,0x0b,0x5e,0xe0,0xb1,0x23,0x97,0x59,0x20,0xd3,0x9e,0x15,0x05,0x9e,0xb8,0x33,0x9f,0x9c,0x13 },
{ 0x70,0xcf,0xa6,0xdf,0xe8,0x62,0xbd,0xd8,0x0c,0xdc,0xd1,0x1a,0xf4,0xbd,0x31,0x89,0x93,0x25,0x03,0x59,0x40,0x53,0x44,0x02,0x9c,0x52,0x24,0x71,0x20,0x0c,0x4a,0x44 },
{ 0xdd,0xb7,0xc1,0xb6,0xff,0x10,0xcc,0x96,0x20,0x26,0x31,0x42,0x84,0x25,0x22,0x9d,0x80,0xd5,0x5a,0x1e,0x72,0x72,0xe4,0xe9,0xc3,0xf3,0x8f,0x9f,0x7f,0xb9,0x08,0x7d },
{ 0x2b,0xfc,0x02,0xc9,0x82,0x35,0x42,0x10,0xad,0x84,0x98,0x4d,0x9f,0x9a,0xaa,0xad,0x41,0x01,0xd9,0xbb,0x20,0xab,0xa2,0x88,0x22,0x39,0x76,0x14,0x60,0xa8,0x35,0x31 },
{ 0x55,0x5f,0xb7,0x42,0xc2,0x47,0x67,0xfc,0x55,0xaf,0xad,0x77,0x6f,0x63,0x19,0x90,0x65,0x36,0x5a,0xa4,0x26,0x24,0xd6,0xc7,0xf2,0xf4,0xf3,0xd9,0xb4,0xa2,0x58,0x1b },
{ 0x45,0x24,0x44,0x6e,0x9a,0x5f,0xa8,0x78,0x31,0x7c,0xfa,0xf7,0x47,0x23,0x37,0x1a,0xca,0x26,0xb2,0xbb,0x8e,0xd0,0x35,0x89,0x4f,0x28,0xee,0x72,0xf0,0xf1,0x07,0x76 },
{ 0x4d,0x16,0x71,0x08,0xd5,0x48,0xd8,0x46,0x92,0x92,0x81,0xbc,0x27,0xa0,0xe0,0xfe,0x65,0x10,0x1c,0x23,0xc3,0x11,0x17,0x63,0x9a,0x01,0xce,0x13,0x74,0xd4,0x00,0x14 },
{ 0xf6,0x26,0x20,0x9c,0xd8,0x09,0xcb,0xe2,0x07,0xbf,0x12,0xf6,0xb2,0x0d,0x1b,0x9f,0xe6,0x6e,0x29,0xb9,0x1d,0xf4,0x76,0x40,0xae,0x7a,0xa1,0xd7,0x29,0x4e,0xef,0x35 },
{ 0x05,0x54,0x0b,0x63,0xf2,0xac,0xb0,0x27,0xf7,0xfc,0x62,0x75,0x5a,0x9d,0x6f,0xd0,0x4f,0xe9,0x76,0x18,0x41,0x53,0xb9,0x69,0x4b,0x11,0x20,0x21,0xe4,0xff,0xf8,0x16 },
{ 0xf8,0x82,0xb1,0x6d,0x41,0x8f,0xe8,0x9f,0xd7,0x86,0xbf,0xe9,0x9b,0xc9,0x28,0x7d,0x38,0xc9,0x21,0x56,0xbe,0x62,0x00,0xca,0x5f,0x4c,0xc3,0x3b,0x92,0xad,0x51,0x31 },
{ 0xfb,0x72,0x53,0x97,0xed,0xfd,0xd8,0xd3,0xf0,0x50,0x7c,0xe4,0x61,0xdb,0xaf,0x1b,0xe8,0xe5,0xfe,0x28,0xef,0xe2,0x44,0x23,0x40,0x22,0xbc,0x1d,0x51,0x57,0x03,0x4a },
{ 0xad,0x07,0xe1,0xc3,0x80,0x7f,0x52,0xe0,0x1a,0xaf,0x90,0x4f,0xb7,0x14,0xec,0x9b,0xf5,0xeb,0x42,0x3a,0x15,0xd4,0x5d,0x20,0x1e,0xb8,0x5a,0x74,0xcb,0x6b,0xf1,0x6e },
{ 0xd2,0xdd,0x68,0x8c,0x52,0x98,0x9f,0x1a,0x7c,0xae,0xe7,0x21,0x3a,0xb4,0x0b,0xee,0x30,0x59,0xa9,0xeb,0x37,0x80,0x8b,0x7d,0xc4,0x56,0xba,0x2a,0x8f,0x9c,0xb7,0x4e },
{ 0xf3,0x18,0x88,0x90,0xb9,0x85,0x88,0x52,0x20,0xbb,0x14,0xd2,0xe1,0x07,0x98,0x5e,0xb6,0xd2,0xc0,0xcc,0xeb,0xb8,0xaa,0xb6,0xcf,0x4e,0x42,0x27,0xcb,0xe0,0x59,0x1f },
{ 0x6c,0x81,0x9c,0xb3,0xc7,0x8c,0x6d,0xb9,0x9f,0xb9,0x61,0xf4,0xf6,0x56,0xfe,0x0e,0xc0,0x7e,0x2f,0x5d,0x4d,0x18,0x9a,0x6f,0xbd,0x62,0x2d,0xe8,0x7b,0x4a,0xaa,0x30 },
{ 0x9c,0x79,0x6a,0xa4,0xa8,0x7a,0x82,0xad,0x32,0x3e,0x77,0xdc,0x98,0x5b,0xbb,0xbe,0xe2,0xfa,0xa9,0xa7,0x7f,0x5b,0x52,0xfd,0xf0,0x7c,0xca,0x6e,0x5b,0x24,0xf1,0x48 },
{ 0xf3,0x38,0xdf,0x7d,0x18,0xbc,0x35,0xe6,0x57,0x5d,0x11,0xac,0xc6,0x70,0x75,0x57,0x7a,0x93,0x9a,0xbd,0x63,0x1f,0x5c,0x0a,0x0a,0x82,0x4c,0x37,0x13,0x15,0x34,0x75 },
{ 0x0e,0x2d,0xc2,0x78,0xe7,0x85,0x7c,0x21,0x8d,0x3d,0x35,0x98,0x8a,0xca,0xe7,0xaa,0xc9,0xe6,0x6a,0x58,0x93,0xe4,0x13,0xb8,0xa9,0x51,0x76,0x03,0x1f,0x90,0x56,0x50 },
{ 0x20,0xe0,0x60,0xc9,0x70,0x47,0x4d,0xfe,0x00,0x51,0x26,0x6d,0x4b,0xa0,0x34,0x06,0xe0,0x93,0xd6,0x13,0xe2,0x75,0x44,0xc3,0xbc,0xd5,0xa1,0xbc,0x72,0x55,0xcf,0x39 },
{ 0x4f,0xa2,0x05,0xaa,0x8e,0x2b,0x52,0x66,0xbb,0xe1,0x19,0x5c,0x2a,0xb1,0x1a,0x35,0x92,0xb3,0xee,0xca,0x78,0x69,0x87,0x19,0x4c,0xcf,0x59,0xd9,0x4a,0xb2,0xf9,0x18 },
{ 0x55,0x0e,0x8e,0xb2,0x9a,0x61,0xcf,0x35,0xb4,0x19,0x7f,0xd5,0xbb,0xe4,0xa1,0x53,0x8b,0x26,0x80,0x97,0xb4,0x93,0x15,0xcc,0xd1,0x56,0x5d,0x2b,0xf3,0xb8,0x9d,0x56 },
{ 0xfd,0x23,0x70,0xe3,0xd7,0x4e,0x24,0xb8,0x7d,0x3d,0x5f,0xfe,0xdb,0x6e,0x4b,0xf2,0x6f,0x69,0x25,0x3e,0xdd,0x0a,0x88,0x2e,0x7a,0xd8,0x71,0xb9,0x0f,0x58,0x11,0x01 },
{ 0xb9,0xf5,0x5c,0xb4,0xc7,0x87,0x5b,0x9a,0x67,0xb5,0x5e,0xe8,0x93,0xc5,0x5c,0x47,0x49,0xae,0x90,0x65,0xa1,0x78,0x65,0x61,0x2a,0xeb,0xd5,0x7f,0xe2,0xc8,0x74,0x29 },
{ 0xcf,0x62,0x94,0x20,0xc2,0x4f,0x83,0x3c,0xaa,0xb2,0x8e,0x75,0x6f,0x36,0x27,0xb2,0x8d,0xd1,0xa7,0x85,0xcf,0x64,0x03,0x49,0xad,0xb8,0x74,0xa5,0x7e,0x47,0x8f,0x18 },
{ 0xb0,0x17,0x71,0x70,0x1f,0x05,0xb0,0xc8,0x98,0x41,0x74,0x82,0x2d,0x0d,0x74,0x90,0xf6,0x4e,0xa5,0x9e,0x17,0xdf,0x93,0x70,0xbe,0x8d,0x9b,0x3a,0xfc,0x24,0x63,0x5d },
{ 0x97,0xc3,0x5f,0xf1,0x3c,0x9f,0xa3,0x8a,0xe4,0x72,0x7f,0x46,0x6f,0xd0,0x5b,0xf7,0xbd,0x6e,0x5f,0x30,0x3c,0x9e,0xab,0x3e,0xab,0x5e,0x41,0xf7,0x5a,0x8b,0x95,0x39 },
{ 0xf9,0x9d,0x8a,0x0f,0x73,0x61,0xa8,0x98,0x55,0x6e,0xde,0x2d,0x1e,0x06,0x3f,0xef,0x89,0x6b,0xd3,0x34,0xb6,0xcc,0xd4,0xde,0x02,0x74,0xf8,0x26,0xf8,0x89,0xb5,0x55 },
{ 0x5b,0x83,0x0c,0x73,0x7f,0x17,0xf1,0xd4,0x6c,0x69,0x76,0x50,0x98,0x73,0xbc,0xf9,0xc1,0x57,0x8f,0x8b,0x8e,0x4c,0xb5,0x23,0x84,0x3a,0xca,0xa5,0x3f,0x8f,0x16,0x64 },
{ 0x49,0xb0,0x27,0xa8,0xf0,0x36,0x57,0xdb,0x0b,0xf1,0x0d,0x14,0x07,0x4d,0x7b,0x75,0xd9,0x9a,0xfd,0x05,0xa5,0x5c,0x5c,0xd9,0x93,0xe1,0x0d,0x84,0x9e,0x88,0x0c,0x72 },
{ 0xe4,0xe8,0x2f,0x06,0x32,0x3f,0xf3,0xcf,0x83,0x2f,0x0a,0x66,0x68,0xe5,0x5a,0x15,0xd7,0xfa,0x8b,0x77,0x40,0xd0,0x4b,0x51,0x77,0x6c,0xb4,0x39,0x5e,0xdf,0x91,0x54 },
{ 0x3e,0x41,0x41,0x5d,0xf1,0x02,0x51,0xf0,0x37,0x32,0x11,0xea,0x00,0x28,0x27,0x4f,0x13,0x83,0x2b,0x6d,0x0e,0x42,0x52,0xbd,0x5e,0xf9,0x25,0xdc,0x4c,0x31,0x04,0x75 },
{ 0xa5,0x4f,0xbf,0x86,0x00,0xd4,0x32,0x77,0x5a,0x39,0x7a,0x7b,0xa3,0xa9,0xe2,0x64,0xf2,0x55,0x3a,0x84,0xdf,0xf5,0x18,0x06,0x3a,0x89,0x12,0x87,0xc7,0x4c,0xbc,0x09 },
{ 0x6b,0x5a,0x7b,0xee,0x4c,0x83,0x3d,0xaf,0x0c,0x48,0x1e,0x44,0xac,0xa9,0x4d,0x91,0x8f,0xda,0x46,0xdc,0x61,0x2f,0xc8,0x70,0x77,0x48,0x76,0xec,0x43,0xed,0xa4,0x51 },
{ 0xe8,0x07,0x92,0x2c,0x44,0x7e,0xde,0xea,0x74,0x12,0xe4,0xf2,0x84,0x61,0x4f,0xe3,0xa4,0x13,0x7d,0xf4,0x43,0xd3,0xce,0x3d,0x21,0xf5,0x7c,0xb5,0x64,0x9e,0x53,0x72 },
{ 0xb7,0x3d,0x1b,0x4e,0x2c,0xf5,0xe0,0x59,0x42,0x3b,0x10,0xf6,0x25,0x1c,0xc2,0xa9,0x7f,0x60,0xf4,0x10,0x74,0x0f,0x95,0x14,0x19,0xe0,0x52,0x9b,0x95,0x12,0x36,0x55 },
{ 0x94,0x6c,0xc3,0x09,0xc8,0xe5,0x85,0xbb,0x2d,0x44,0xc7,0x13,0xd6,0xbb,0x5e,0xb0,0x04,0xa4,0xfa,0x6c,0xc6,0x0f,0xce,0x06,0x36,0xf7,0xfa,0x5b,0xdd,0xa9,0x84,0x17 },
{ 0x02,0xdf,0xdd,0x1e,0x79,0x55,0x89,0x72,0xaf,0xf0,0x4b,0xa2,0x0e,0xa0,0xe3,0x10,0xef,0xe0,0x65,0xac,0x0c,0xdd,0xef,0x93,0xc9,0xd9,0x54,0x11,0xe4,0x47,0x02,0x36 },
{ 0xd6,0xa1,0x76,0x6b,0x9f,0x3a,0x49,0x14,0x55,0xb5,0xca,0xdc,0xb6,0x83,0x79,0x48,0x1f,0xc7,0x8f,0xb3,0x9d,0x71,0x1c,0xd0,0xe0,0xf1,0x15,0x90,0xc8,0x6d,0xce,0x57 },
{ 0xac,0xba,0xef,0xe1,0x4b,0xca,0x69,0x86,0xb9,0x2b,0x0d,0xe8,0x31,0xf3,0x3c,0x24,0xae,0xde,0x4a,0x40,0xf3,0xab,0xd9,0xbf,0xb5,0x1e,0x1c,0xec,0x2c,0x07,0xb9,0x08 },
{ 0xac,0x3e,0x85,0x27,0x46,0x3a,0xb9,0xd8,0x61,0x2b,0xb2,0xab,0x69,0x72,0xf7,0x6d,0xc1,0x46,0xf7,0xc1,0x62,0x73,0x55,0x8a,0xac,0x45,0x3e,0xaa,0x69,0x8f,0xf6,0x6a },
{ 0x2f,0xeb,0xfa,0xa7,0xef,0x48,0x9e,0x60,0x4e,0xed,0x58,0xc1,0x71,0x1f,0xf6,0x7f,0x55,0x87,0x38,0xdc,0xad,0x5f,0x55,0x90,0xfe,0xd0,0xc4,0x5a,0xfa,0x9b,0xcc,0x57 },
{ 0x4c,0xf2,0xf7,0xd4,0x1c,0x4c,0xef,0x90,0x42,0x42,0xce,0xf1,0xeb,0x94,0xe2,0x1b,0x9a,0xe6,0xf2,0x90,0xcf,0x5c,0xe1,0xca,0x0a,0x39,0xdc,0x25,0x2e,0x83,0x6f,0x0e },
{ 0xcf,0x39,0x1f,0xbc,0xc6,0x56,0xff,0x72,0xeb,0xd5,0xfa,0x1e,0xd1,0x7a,0x7f,0x34,0xfd,0xfd,0xa2,0xa4,0xf6,0xb9,0xef,0x3c,0x78,0x96,0x81,0x7f,0x65,0xdf,0x31,0x7a },
{ 0x2e,0xbe,0xfd,0x73,0x71,0x4e,0x7a,0x66,0xb2,0xba,0xc0,0x37,0xb0,0xac,0x85,0xcf,0x26,0xc3,0xc0,0xd4,0x46,0xb4,0x16,0xfd,0xdc,0xb3,0x56,0xcc,0x80,0xac,0x4d,0x44 },
{ 0x16,0x2c,0x49,0xd1,0x74,0x11,0xf1,0x32,0x6e,0xe5,0xdc,0x57,0x72,0xa0,0x7d,0xb3,0xeb,0xb3,0x41,0xa8,0x45,0x04,0xa5,0xa6,0x6d,0xb9,0xa2,0x68,0xfe,0x2e,0xe6,0x0f },
{ 0x99,0xd9,0xe2,0x80,0x20,0xb4,0x86,0xbc,0xae,0xbe,0xd9,0xb6,0x88,0x5e,0x72,0x64,0xe9,0x31,0xca,0xb7,0x3d,0x07,0x53,0xcd,0xa5,0x3f,0x80,0xe0,0x76,0x4b,0x64,0x60 },
{ 0xaf,0xe9,0xd1,0x94,0xf9,0xfe,0x36,0x24,0x63,0x24,0x0e,0x7d,0x2d,0xb5,0x28,0x7d,0x6c,0x36,0x01,0xb2,0xfa,0xd5,0xbd,0xfa,0xcf,0x27,0xa5,0x59,0x7b,0x7b,0x4b,0x14 },
{ 0x0f,0x1b,0x65,0x89,0x58,0x78,0xe2,0x65,0x47,0x24,0x2c,0x56,0xfd,0x98,0x6f,0x79,0xcb,0xb4,0x5c,0x4f,0x72,0x2a,0x3b,0x0f,0x66,0xcf,0x4a,0xb2,0xa4,0xa5,0x23,0x69 },
{ 0x42,0xfa,0x67,0xf6,0xce,0x49,0x43,0x78,0x62,0x44,0xb8,0xdf,0xdb,0xe0,0x45,0x0d,0x10,0x2a,0x2e,0x05,0xa9,0x86,0x3c,0x1f,0x37,0x48,0xc3,0xca,0x00,0xfd,0xad,0x64 },
{ 0x15,0x24,0x0a,0xfe,0x3c,0xe2,0x92,0x20,0xbf,0x0b,0xb9,0x06,0x9b,0x8c,0xca,0xc5,0xc9,0x2d,0x1b,0x66,0xef,0x36,0x01,0x43,0x09,0xf8,0xd9,0xaf,0xe1,0x52,0x3d,0x2a },
{ 0xb5,0xbb,0xeb,0x00,0x9c,0x6c,0xb8,0x1f,0x43,0xa3,0xee,0x95,0xc6,0xc1,0xc1,0x45,0xd4,0x5a,0x3f,0x7f,0x4b,0xac,0xc8,0x88,0xc3,0xb7,0x81,0x82,0xa2,0x1b,0x53,0x20 },
{ 0x36,0x71,0xf3,0x30,0x67,0xd7,0x65,0x8d,0xc6,0x58,0x0d,0xf5,0x53,0xfe,0x1e,0x13,0x76,0xfd,0x95,0x50,0x06,0x35,0x09,0x21,0xc1,0xa3,0xe0,0x0d,0x5b,0x33,0x1c,0x4e },
{ 0x9d,0xbd,0x5a,0xe0,0x99,0xb2,0x91,0xf4,0x6f,0xbf,0x5e,0x70,0x5f,0x8d,0x28,0x98,0xe1,0x75,0xd2,0x4f,0x31,0x00,0x38,0x24,0xe4,0x73,0x1b,0xda,0x94,0x21,0xbf,0x1f },
{ 0x91,0x29,0xd2,0xc6,0x58,0x18,0x64,0xc8,0xd0,0x85,0x39,0xe8,0x0c,0x3a,0x97,0xb3,0x1c,0x3b,0xca,0x40,0xbb,0xd0,0x5e,0x2e,0x0f,0xaa,0xf4,0xdf,0x5e,0xc2,0xea,0x14 },
{ 0xf2,0x2d,0x92,0x0b,0x6f,0x24,0x3a,0xd2,0x74,0x32,0x04,0xc3,0xec,0x17,0xe7,0x65,0xf1,0x67,0x4b,0xe5,0x59,0xc0,0x94,0xf8,0xee,0x05,0x48,0x23,0x80,0x69,0x31,0x1a },
{ 0x3e,0x66,0xf6,0xa4,0x81,0x81,0xf0,0x8b,0xdf,0x8a,0x21,0x94,0x9c,0x3f,0x37,0xe0,0x55,0xc5,0x50,0xf8,0x36,0x68,0x1c,0xc4,0x57,0xb0,0x91,0xb1,0xa9,0xdf,0xc1,0x02 },
{ 0x93,0xd0,0x3a,0x56,0xfe,0xa6,0xc3,0x54,0x2e,0xac,0x1e,0x33,0xe9,0xcc,0xb3,0xd3,0xd1,0x45,0x5d,0x8d,0xd3,0xc1,0x5d,0xc5,0xc7,0x7d,0x12,0x61,0xa7,0x52,0x0d,0x08 },
{ 0xbc,0xad,0x0f,0x47,0xbf,0x74,0x86,0xc7,0x30,0x72,0xa3,0xc8,0x82,0xc0,0x32,0x16,0x81,0xe4,0x57,0xef,0x6b,0xa1,0x63,0x05,0xe4,0x69,0x3b,0x3d,0x98,0x66,0xcd,0x13 },
{ 0x8d,0xd7,0x5a,0x59,0x17,0x5e,0x96,0x00,0xa1,0x65,0x6d,0xf2,0x3d,0xe8,0xb1,0x95,0x61,0x75,0xf9,0x34,0x5d,0xf9,0xe7,0xe4,0xee,0xd7,0x41,0x71,0x5b,0x0c,0x94,0x08 },
{ 0x22,0x8b,0x13,0x88,0x2d,0x30,0xd8,0x8e,0x64,0x44,0x77,0x52,0x1c,0xf2,0x6f,0xea,0xe0,0xb5,0x92,0xbe,0x6e,0x47,0xbe,0x06,0xd9,0x00,0x78,0x90,0xeb,0xcd,0x8a,0x6d },
{ 0x22,0x81,0x1a,0x43,0x24,0xac,0x95,0x1d,0x39,0xfe,0xf7,0x17,0x9e,0xb1,0x46,0x76,0x36,0x68,0x7d,0xc1,0x14,0xf5,0xc2,0x9b,0x4a,0x13,0x50,0xe1,0x2e,0x19,0x03,0x03 },
{ 0xad,0x07,0xd7,0x42,0x8c,0xe1,0xa5,0x12,0xcd,0x4e,0x49,0x0a,0x2a,0x13,0xcb,0x8c,0xbf,0xc4,0x20,0xcd,0x31,0x41,0x9e,0x3d,0xb8,0x46,0x65,0x0c,0xfa,0xb8,0x17,0x59 },
{ 0x9c,0xb3,0x87,0xa4,0xab,0x7f,0x2b,0x42,0x27,0x0e,0xb8,0x61,0xeb,0x9e,0xb2,0x13,0x83,0x63,0xc6,0xc3,0xe4,0x5f,0x28,0x48,0x1b,0x78,0xd0,0xa6,0x86,0xef,0xaf,0x21 },
{ 0xc7,0x59,0x28,0xf0,0x20,0xb0,0x23,0x01,0xe7,0x42,0x3e,0xae,0x2f,0x84,0x4f,0x17,0x56,0x14,0x82,0x85,0x72,0x80,0x9f,0x8f,0x10,0x9c,0x68,0xfb,0x2d,0xeb,0x7b,0x33 },
{ 0x2e,0xa1,0x53,0x8a,0xc4,0x7c,0xbe,0x0d,0x5a,0x9c,0x97,0x86,0x84,0x9d,0x56,0x79,0x35,0xc9,0xbf,0x29,0xf6,0xe7,0x6b,0x7b,0x3e,0xee,0x09,0x1c,0x76,0x4a,0x80,0x12 },
{ 0xb1,0x8f,0x92,0xff,0x57,0x6c,0xcd,0xef,0x8f,0xd4,0x01,0xa1,0x20,0x13,0x01,0xbf,0xc8,0xed,0x5d,0x3b,0x0f,0xf3,0x13,0x36,0x57,0x2f,0x82,0x40,0x7d,0x7e,0x30,0x57 },
{ 0x9f,0xab,0x09,0x2a,0x85,0x73,0xc7,0x34,0xed,0x84,0x15,0x2f,0x06,0x52,0xc8,0x5c,0x2c,0x8a,0x26,0x66,0xc6,0xd0,0x89,0x2a,0x40,0xb8,0xf4,0x53,0xa5,0xa2,0x61,0x64 },
{ 0x7e,0xa9,0x2b,0x6b,0x37,0xb5,0x6d,0x91,0x53,0x95,0xa0,0x70,0x33,0x7e,0xd5,0x90,0xf1,0x32,0xd8,0xa4,0x35,0x94,0x84,0xf0,0x94,0xd1,0xfe,0x80,0x28,0x55,0xa3,0x3b },
{ 0xc4,0x92,0xa9,0x7d,0xfd,0x3f,0x3a,0x87,0x1d,0xbe,0xcd,0xfd,0xb7,0x30,0xb0,0x5a,0xde,0x48,0x79,0x7e,0xcc,0x4c,0xe9,0x22,0xfc,0x37,0xc5,0x20,0x9b,0x4e,0x6d,0x0b },
{ 0xcc,0x2b,0x29,0xd7,0x2f,0xc8,0xa3,0x38,0xc3,0xab,0x85,0x52,0xa0,0x6e,0x0d,0xc6,0xeb,0x66,0x8a,0x09,0x12,0x56,0xf4,0x59,0x1f,0x80,0x80,0xbb,0x38,0x65,0xbf,0x34 },
{ 0x22,0x54,0xd4,0x82,0x4a,0x74,0xb1,0xaf,0x42,0x09,0x4f,0xd7,0xb4,0xc4,0x05,0x99,0xbd,0x4e,0xb4,0xcd,0x14,0xaa,0xbd,0x94,0x5e,0x8a,0x4b,0x7f,0xab,0x1f,0xde,0x49 },
{ 0x0e,0xb8,0x3c,0xdd,0xdd,0x7a,0xb7,0xc4,0x8a,0xd0,0x4d,0x76,0x61,0x7d,0x75,0x30,0x24,0x95,0xea,0x31,0x35,0xd8,0x87,0xd9,0x17,0x98,0x23,0x3e,0x2e,0x9e,0xd5,0x49 },
{ 0xc8,0x09,0x74,0x4a,0x37,0x63,0xdb,0xb6,0x19,0xe2,0x55,0xaf,0x94,0x99,0x65,0x8d,0x02,0x47,0x6a,0x27,0x73,0x72,0x3d,0xf5,0x26,0x48,0x3f,0x00,0x94,0x86,0xbb,0x36 },
{ 0x2c,0x24,0x44,0xe9,0xbc,0x7d,0x3e,0xda,0x60,0x8b,0x17,0x12,0x5d,0xc3,0x8a,0x3d,0x70,0xf7,0xd4,0xf3,0x79,0x27,0x90,0xc9,0xf9,0xeb,0x5f,0x68,0xc4,0x87,0xfc,0x13 },
{ 0x0b,0x14,0xe5,0x0e,0x33,0x6c,0x94,0x98,0x70,0x8d,0xd1,0x43,0x8d,0x0a,0x9a,0x67,0x1f,0x57,0x8b,0x18,0x44,0xe8,0x79,0xd0,0x56,0xd9,0x31,0xac,0x9b,0xb7,0x7d,0x7f },
{ 0x0f,0x59,0x83,0x41,0x9f,0x87,0xec,0xfd,0x15,0x36,0x65,0xe8,0xdf,0x1e,0x80,0xba,0x6b,0xd2,0x5e,0x44,0xf1,0x95,0x66,0xe6,0x76,0x06,0x68,0x87,0x1b,0x6e,0x30,0x73 },
{ 0x2d,0x5a,0xac,0xab,0xf7,0xd6,0x09,0xe0,0x22,0xee,0x71,0x75,0xca,0xdb,0x5f,0x14,0xe2,0x00,0x3c,0x28,0x63,0xf7,0x13,0x96,0x23,0x47,0x5f,0x2d,0x20,0xae,0x71,0x73 },
{ 0x83,0xd5,0x63,0xc6,0xca,0x69,0xfb,0xe3,0xcf,0xca,0xbc,0xc2,0xe5,0xc0,0x5e,0x50,0x6b,0x25,0x55,0x1b,0xf4,0x4c,0x53,0xe2,0xce,0x2a,0x32,0xfc,0xfc,0x9b,0xd3,0x7f },
{ 0xcf,0x41,0xbe,0xf0,0xb7,0xf2,0xad,0x14,0x12,0xd6,0x3e,0x20,0xfe,0xb3,0x70,0x98,0x76,0xc5,0x35,0xef,0x48,0xaa,0x63,0x65,0xdb,0x93,0xa5,0x61,0xf7,0x96,0x54,0x59 },
{ 0xa5,0xd2,0x5b,0xd1,0xc2,0xa9,0x37,0x33,0x96,0xe6,0x63,0x3f,0xbc,0x0f,0x93,0x98,0x1e,0x1a,0x8f,0x8c,0xfd,0xc9,0x80,0x2a,0x19,0xcc,0xb0,0x42,0x4b,0x38,0x24,0x5d },
{ 0x5b,0x0d,0x1f,0x68,0xf8,0x08,0xfa,0x83,0x2a,0x99,0xbb,0xba,0x98,0xba,0x8e,0xe7,0xc8,0xf9,0xbd,0x86,0x97,0xf6,0x5e,0x96,0x39,0x99,0xa4,0x25,0x7f,0xbe,0x30,0x60 },
{ 0x22,0x92,0x84,0xd3,0xe5,0x03,0x62,0xe9,0x92,0xcf,0x13,0x5a,0xe9,0x24,0x89,0x77,0xe4,0xf6,0xb1,0x9a,0xb8,0x06,0x4c,0x9a,0x59,0xa2,0x96,0x12,0x72,0x95,0xfa,0x6e },
{ 0x8f,0x0c,0x8c,0xb2,0x1b,0x92,0xfa,0x3d,0x59,0x63,0xd4,0x71,0x0d,0xe5,0x1b,0x8c,0xa7,0xf7,0xf2,0xf6,0x86,0x30,0xc7,0x56,0xc4,0x56,0x91,0xe0,0x2f,0x68,0xbb,0x01 },
{ 0xe0,0xfc,0x3a,0x46,0x3a,0x47,0x54,0x49,0xd5,0x70,0xf6,0x7d,0xc8,0x1e,0xa2,0x7b,0x63,0x0f,0x4b,0xf8,0xd0,0xf9,0x0c,0xbf,0xc1,0xcb,0x90,0xa8,0x39,0xc1,0x3f,0x6c },
{ 0x98,0x59,0xd7,0x0e,0xc8,0xd7,0xc0,0x1a,0x94,0xd7,0x2f,0x7c,0x9e,0x87,0xa0,0xb5,0xfe,0x11,0x45,0xb5,0x61,0x99,0x0e,0x30,0x2a,0xe8,0x15,0x22,0xc4,0x01,0xb4,0x5b },
{ 0xde,0x5c,0x27,0x08,0xf5,0x60,0xca,0x47,0x4e,0x9c,0xcc,0x9d,0x8a,0xaf,0xcd,0xff,0x6d,0x8c,0xcd,0x3e,0x87,0x74,0x15,0x29,0x3b,0x2d,0x76,0x6c,0x3d,0xbf,0x96,0x3d },
{ 0xe8,0xd6,0xcd,0x28,0x6e,0x38,0x79,0x5b,0xf1,0x6b,0x66,0x20,0x0e,0x8e,0xc3,0xdf,0x0f,0x07,0xd1,0x86,0x95,0x19,0x6f,0x5e,0x3b,0xb9,0x04,0x74,0x50,0xec,0x00,0x57 },
{ 0xf0,0x1d,0x9f,0x05,0x1f,0xe7,0xca,0x5f,0x42,0x83,0x88,0x07,0xc5,0xa6,0xa5,0x83,0x8a,0x88,0x50,0x6c,0xd4,0x3d,0x64,0x78,0x65,0xff,0x0b,0x70,0xd4,0xc0,0x44,0x3a },
{ 0xe9,0xc9,0xb6,0x11,0xf0,0x42,0x20,0xa6,0x60,0x73,0x71,0xa2,0x6d,0x32,0x77,0xcf,0xba,0x08,0xc2,0x61,0x78,0x1d,0x5d,0x13,0x90,0x03,0xce,0xc9,0x3f,0xd8,0x77,0x38 },
{ 0xf7,0x74,0x72,0xb3,0x27,0x16,0x85,0x8b,0x66,0x2a,0x57,0x9a,0x4f,0x09,0x93,0x33,0x9b,0x5e,0x6f,0x42,0xdb,0x3e,0x25,0x82,0x0a,0x88,0x5c,0x95,0x0b,0xb1,0x6f,0x3e },
{ 0x5f,0xb0,0xde,0x2b,0xf5,0x4b,0x1a,0x6e,0x9e,0xfb,0xd0,0x60,0x39,0x0c,0x36,0x57,0xe7,0x87,0x23,0x4c,0xd7,0xae,0x00,0x96,0xe1,0x5f,0x81,0x30,0xb8,0xe3,0x7b,0x2d },
{ 0x00,0xb5,0x5c,0xb2,0xdf,0x93,0xc8,0x71,0x05,0x23,0x9e,0x04,0xa5,0xa6,0x56,0xe1,0x82,0xb0,0x46,0xef,0x70,0x49,0x8d,0x31,0x65,0xcf,0x25,0xf4,0xd4,0x9d,0xcf,0x4c },
{ 0x0c,0xa0,0x62,0x53,0xfe,0xee,0xfd,0x71,0x94,0xdc,0x29,0x3b,0x2b,0x20,0x30,0xda,0x4e,0x67,0x64,0xe2,0xae,0x70,0xeb,0xf4,0x17,0x79,0x48,0x5d,0x1d,0xcb,0x15,0x24 },
{ 0x9f,0x20,0x54,0x91,0x80,0xd4,0x89,0x42,0x1b,0xce,0x91,0x6f,0x9a,0xd6,0x87,0xf3,0xef,0xaa,0xc4,0xab,0x92,0xf6,0x12,0xc9,0xc6,0x91,0xf7,0xaf,0xe7,0x75,0x96,0x2a },
{ 0x02,0x67,0x84,0x0e,0xb3,0x38,0x76,0xf0,0x63,0xfe,0xe9,0xc9,0xca,0xea,0x3d,0x10,0x1c,0x47,0xfc,0xc9,0x81,0x44,0xa3,0x92,0x77,0x9f,0xf5,0x70,0xf9,0x37,0x59,0x37 },
{ 0x90,0x41,0x3e,0xf8,0xc4,0x32,0xad,0x51,0xd8,0x63,0xb3,0x8a,0xcf,0x71,0x01,0xcb,0xa1,0x27,0xfc,0x5d,0xfb,0x44,0x4e,0xe0,0x7f,0xc8,0xfa,0x2c,0x47,0x37,0x64,0x6e },
{ 0xc7,0x77,0xe0,0x64,0xde,0x3b,0x80,0x1f,0x6c,0xf0,0x2e,0xeb,0xd7,0xeb,0x50,0x2c,0x7d,0xa5,0x6c,0x46,0x5e,0xba,0x1e,0x28,0x64,0x3a,0x03,0x82,0x15,0x0c,0x1f,0x18 },
{ 0xc5,0x1d,0x2b,0xbf,0x2f,0xaa,0x13,0x8b,0xb5,0xd8,0xdd,0xf8,0xba,0x6c,0x7f,0xa0,0xff,0xdb,0xf9,0x60,0x4a,0x04,0x64,0x0b,0x4b,0x74,0x9c,0xc8,0x68,0xa4,0xc9,0x43 },
{ 0xdf,0x13,0xb4,0x92,0x56,0xa4,0xa4,0x61,0x5f,0xc2,0xc6,0xca,0x1e,0x1d,0x29,0x9e,0xaf,0x35,0x01,0x47,0x55,0x1d,0xbd,0x8a,0x91,0x05,0xcf,0xd6,0xa4,0x33,0x53,0x1b },
{ 0xd4,0x80,0xe7,0xd9,0xcc,0x83,0x6e,0x32,0xb5,0x49,0x61,0xbd,0xc7,0xcf,0xeb,0xeb,0x50,0x83,0xb9,0x8b,0x60,0x32,0xdc,0xa8,0x5f,0x9e,0x3e,0x67,0x5e,0x93,0xaf,0x7e },
{ 0x5b,0xb3,0x37,0x01,0xc9,0x3b,0x12,0x65,0x35,0x7f,0x6f,0xd8,0xfe,0xb5,0x57,0x49,0x3e,0xf3,0x20,0x07,0x18,0x85,0xa9,0x58,0xfc,0x72,0x50,0xab,0x59,0x7e,0x23,0x53 },
{ 0xe6,0x2b,0x86,0x67,0x77,0x6e,0x1f,0x7f,0x87,0x0a,0x6f,0x07,0x99,0xd7,0x40,0xb3,0x03,0x99,0x63,0x09,0xdb,0xcd,0xf4,0x48,0x79,0xc2,0xc6,0xbc,0xe4,0x2c,0xb0,0x0a },
{ 0x1b,0x58,0x7e,0x47,0x26,0x04,0xf4,0x2d,0xcd,0x58,0x78,0x55,0xd4,0x73,0x2d,0x5c,0x3e,0x8d,0x82,0x44,0xb1,0x34,0x52,0xc2,0x28,0x90,0x47,0x5a,0x22,0x0a,0x6c,0x74 },
{ 0x57,0x36,0xb5,0x3e,0xa0,0x6f,0x9e,0xe9,0x6c,0x99,0x2b,0x00,0xd5,0x41,0x25,0x26,0x85,0x6e,0xd5,0x25,0x48,0x5a,0x96,0x4f,0x8f,0xcf,0x96,0xd7,0xeb,0xcd,0x60,0x2b },
{ 0xb8,0x2e,0x36,0xc6,0xa6,0xea,0xa7,0x07,0x88,0x39,0x63,0xb3,0x6d,0x75,0x0f,0xa0,0x33,0xf0,0x5f,0x77,0x14,0xe7,0x93,0x30,0x49,0xd1,0xfc,0x08,0x50,0x92,0x2a,0x4e },
{ 0x8c,0x59,0x8e,0x7f,0x83,0x17,0xcd,0x20,0x36,0xd3,0x5a,0xce,0x9b,0x83,0x72,0xfe,0xcb,0xd1,0xce,0x83,0x68,0xbc,0x47,0xdb,0xbd,0x46,0xc1,0x10,0xf8,0x10,0x8d,0x1e },
{ 0x23,0xb5,0xd3,0xd9,0xb9,0x84,0xab,0xd5,0x9e,0x32,0xac,0xff,0x41,0x1a,0x10,0x68,0x46,0xc0,0xce,0xd7,0xad,0x5c,0xaa,0xef,0x8b,0x07,0x6f,0x5b,0xd1,0xe9,0x3b,0x58 },
{ 0x01,0x88,0xcf,0x17,0x11,0x2c,0x9b,0x3e,0x94,0x8c,0xcd,0x8c,0xeb,0xb6,0xbc,0xf2,0xf7,0x50,0xd4,0xe5,0x44,0x14,0x5d,0x01,0x73,0xc5,0x91,0x6b,0xc1,0xd6,0xc2,0x7b },
{ 0xec,0x5f,0x18,0xa4,0x82,0x96,0xd5,0xad,0x20,0x27,0x98,0x65,0xa5,0x11,0x14,0xe8,0x0b,0x0c,0x76,0x29,0x80,0x76,0x61,0x70,0x05,0xa3,0x1a,0x23,0x73,0xfa,0x57,0x12 },
{ 0x15,0x6f,0x13,0xfd,0xf6,0x62,0xf4,0xb7,0x21,0xc5,0x77,0xdf,0x32,0xfc,0x23,0xf4,0x71,0x62,0xa4,0x0d,0x92,0x83,0x77,0x3a,0x5b,0xae,0xeb,0x3e,0xe6,0x68,0x36,0x71 },
{ 0xaa,0x95,0x4e,0x75,0x92,0x82,0x18,0xcb,0x93,0xdf,0x15,0xb3,0x74,0xc6,0xe1,0x77,0x00,0x23,0xf9,0x1b,0x61,0xaa,0x20,0x70,0xb2,0xf1,0x64,0x6f,0xf4,0x21,0x88,0x06 },
{ 0x17,0x70,0xaf,0x05,0xab,0x90,0xaa,0x4c,0xae,0xe8,0x09,0xb1,0xa1,0x56,0x89,0xd5,0xe1,0x44,0x47,0x07,0x7f,0x46,0x4b,0x08,0x19,0x38,0x54,0xfc,0xe0,0x4f,0xbf,0x1d },
{ 0x5b,0xa0,0x6c,0x7a,0xb0,0x75,0xc5,0x77,0xcc,0xbb,0x7a,0xdf,0x15,0x39,0xc8,0xf8,0xe4,0x30,0x07,0xcf,0xe2,0xfa,0xfc,0xd7,0x0c,0x95,0xc4,0xe2,0x56,0xd1,0xde,0x71 },
{ 0x81,0x94,0x4e,0x3d,0x73,0xfb,0xac,0xcb,0x1a,0x09,0x6a,0x5d,0x21,0xb4,0xaf,0xc6,0x96,0x5e,0xfb,0x08,0x23,0x59,0xcc,0xf9,0x31,0x1e,0x26,0x90,0x08,0xe5,0x1b,0x4b },
{ 0x1a,0x13,0xed,0xa9,0xbe,0x1d,0xb8,0x1f,0x1f,0xcf,0xc2,0xa0,0x36,0xac,0x44,0xb2,0xdf,0x1d,0xba,0xc7,0x5d,0x23,0x4e,0x94,0xd8,0xcf,0x23,0x9c,0x7f,0x27,0x8d,0x4c },
{ 0x62,0xe3,0x37,0x29,0xf4,0x75,0xf9,0xe6,0xf6,0x5a,0x99,0x1c,0x81,0xfe,0x0c,0x10,0x07,0xe8,0xf3,0x12,0x34,0x86,0x12,0xdb,0x6c,0x39,0x03,0xf2,0xcd,0xec,0x4a,0x17 },
{ 0x4d,0x08,0x8d,0x47,0x12,0x09,0xb7,0xf9,0x66,0x5a,0x3c,0xfd,0xd9,0xa3,0x02,0x25,0x46,0x3f,0xbd,0x6a,0x8d,0x2f,0x9c,0x18,0xa2,0x4e,0x91,0x98,0x20,0xd2,0x61,0x58 },
{ 0x43,0x15,0xdb,0x9b,0x50,0x4e,0x32,0xbf,0xd6,0x8f,0xc1,0xe4,0x20,0x85,0x7f,0x13,0xd1,0xb4,0xa0,0x77,0xc5,0xb4,0xd6,0x49,0x6c,0x23,0x65,0x0c,0x30,0x83,0x37,0x30 },
{ 0xce,0xd4,0x5b,0xe3,0xa7,0xc1,0xfd,0x12,0xfa,0x61,0x0c,0x19,0x4e,0x2c,0xf1,0x78,0xb9,0x1d,0x02,0x1b,0xd4,0xdf,0xc4,0x6e,0xbd,0xc8,0x01,0xa2,0xda,0x43,0x36,0x11 },
{ 0x07,0x58,0x6e,0xa8,0x51,0x6e,0xd9,0xb8,0x38,0x51,0x8f,0x17,0x55,0xcd,0x89,0xe9,0x2b,0xd3,0x4d,0x36,0xeb,0xd5,0xf5,0xa3,0x98,0x36,0x89,0xd5,0x18,0x13,0x14,0x0a },
{ 0xb0,0xce,0x16,0x3e,0xd1,0x0d,0x92,0x7a,0x9b,0xb5,0x05,0x20,0x35,0x93,0x7d,0xd8,0x4e,0x9f,0x26,0xf9,0x96,0xfc,0x5d,0xfa,0xfb,0x22,0x31,0xad,0x89,0x28,0x7c,0x64 },
{ 0x7f,0x4e,0x70,0xd0,0xd7,0x40,0xfe,0xd8,0xa0,0x85,0x23,0xe2,0xca,0x10,0xd7,0xaf,0x63,0x33,0x43,0x28,0x84,0x9c,0xed,0x90,0x6d,0xd7,0xcf,0x69,0x37,0x01,0xfc,0x07 },
{ 0xde,0x54,0x6e,0x24,0x94,0x63,0x67,0xf1,0xaf,0x45,0xf0,0xc0,0xe4,0xc4,0x12,0x3c,0x16,0xbf,0x01,0x7e,0xaf,0x24,0x0a,0xf1,0x2e,0xd0,0x37,0xe0,0x08,0xdd,0x9c,0x69 },
{ 0x5c,0xc9,0x43,0xc9,0x87,0x5d,0x0c,0x26,0xd8,0x4a,0xfb,0x56,0x07,0xb5,0x3a,0x2c,0x2b,0xa3,0xa5,0xb6,0xce,0xe0,0x8d,0xbb,0x2d,0x0a,0xb3,0x8c,0x29,0x35,0xdb,0x00 },
{ 0x27,0x47,0x25,0x12,0xec,0xd0,0xe0,0x9f,0x38,0xf5,0xd5,0xa0,0xc5,0x19,0x45,0xdd,0x88,0x5d,0x1c,0xca,0x76,0x19,0xbc,0xc0,0xbe,0x8c,0xfd,0x54,0x8d,0xa5,0xf4,0x12 },
{ 0x2f,0xa5,0x00,0x85,0xcd,0xb6,0x87,0x84,0x47,0xe3,0x91,0xfb,0x7e,0x2f,0xfa,0x26,0x7a,0x3d,0x47,0xe5,0x2b,0xb2,0x6b,0xf4,0x11,0x31,0x5f,0x82,0x22,0x16,0xf5,0x21 },
{ 0x67,0xfd,0x1b,0x2b,0x8b,0x38,0x69,0x8c,0xcf,0x9a,0x2c,0x1f,0x66,0x09,0x9d,0x08,0xf3,0x1e,0x21,0x91,0x2d,0xce,0xd7,0x00,0x44,0x6a,0x9b,0xc0,0x8d,0xc4,0x16,0x13 },
{ 0x44,0xc8,0xab,0x78,0x55,0x7c,0x51,0xe7,0x27,0x47,0x8f,0xd9,0x7b,0xdc,0x3e,0x54,0xbc,0x9a,0xb7,0x01,0x4e,0xd9,0x23,0x62,0xab,0x0c,0x5f,0x7c,0x1a,0xad,0xf2,0x3a },
{ 0xbd,0xa4,0x04,0x6e,0x0d,0xfc,0x75,0x51,0xe0,0x3c,0x61,0x9e,0x1e,0x65,0x87,0x6b,0x73,0x1c,0xbe,0xc1,0xf2,0x8b,0x5d,0xa6,0x50,0x1a,0x30,0x55,0xd9,0x47,0x96,0x55 },
{ 0x41,0xa1,0x84,0x4a,0xcc,0x12,0x9c,0x44,0x7d,0xd3,0x4e,0x2e,0x9b,0x7a,0xfe,0x5a,0x2f,0xd2,0x37,0xca,0xa8,0xb7,0x4f,0x8d,0xd2,0x2b,0xa5,0x19,0x51,0xa8,0xc4,0x4c },
{ 0xd4,0xa5,0x30,0x9d,0x76,0xcd,0x35,0x3a,0x56,0xde,0xae,0xdd,0xba,0xe2,0x8c,0xb1,0x08,0x84,0x6a,0x19,0xc4,0x8e,0x52,0x26,0x77,0x22,0x7e,0x35,0x97,0x43,0x0c,0x39 },
{ 0x0a,0x22,0x22,0x2c,0xfa,0xcd,0x82,0x65,0xae,0xac,0x1b,0x21,0x1b,0x78,0xb6,0xa0,0xe1,0x5e,0xa5,0x2b,0x95,0xe7,0xe7,0xb9,0x27,0x87,0xa8,0x27,0x20,0x5c,0x1d,0x30 },
{ 0x74,0xf4,0x16,0x86,0x45,0xed,0xc8,0xf2,0x2a,0x7e,0x88,0x72,0x0c,0xe6,0x6e,0x21,0x04,0x62,0x20,0x2d,0xdf,0xae,0x5e,0x7c,0xc0,0xc1,0x0b,0xa0,0x73,0xe2,0xad,0x45 },
{ 0xbc,0x71,0x1f,0x5a,0xfe,0x50,0x4b,0xbe,0x65,0xa7,0xcd,0x0f,0x03,0x0a,0x12,0xf5,0x08,0x72,0xd0,0xd5,0xb2,0x80,0x62,0x89,0x86,0x17,0xcc,0xbf,0x66,0xeb,0xfc,0x01 },
{ 0x6b,0x4a,0x14,0x57,0xfa,0xbb,0x8c,0x29,0x59,0x48,0x55,0x02,0x86,0x72,0x46,0x90,0xce,0x7c,0x2b,0x79,0x0e,0xca,0x71,0xee,0x01,0x7e,0xf6,0x11,0x68,0x8e,0x1a,0x4e },
{ 0xf4,0xe8,0x6e,0x99,0x20,0x3c,0xa9,0xa8,0x19,0xfb,0x27,0x45,0x52,0x8c,0x55,0x99,0xa5,0x7b,0xb4,0xf5,0x9c,0x48,0x29,0x19,0x92,0x08,0xed,0x9a,0x77,0x08,0x25,0x64 },
{ 0xd5,0xc4,0xd2,0x24,0x3e,0x76,0x5d,0x04,0x76,0x66,0x6c,0xa4,0x2d,0x0b,0xac,0x9a,0x84,0xaa,0xc2,0x15,0xb1,0x00,0xbe,0xe2,0xfd,0x96,0x4e,0x15,0x30,0xda,0x61,0x4d },
{ 0xc4,0xcf,0xab,0xfc,0x19,0x83,0x2f,0xd1,0x87,0x0e,0x35,0xb3,0x16,0x2a,0x2b,0x8e,0x65,0xa0,0x42,0x3b,0xb1,0x4c,0x1c,0x03,0xbf,0xeb,0xea,0x01,0x1a,0xe4,0x7d,0x09 },
{ 0x56,0x46,0xfc,0x99,0x69,0xbd,0x53,0xe1,0x57,0xe7,0x8d,0x5a,0x05,0x1a,0x95,0xfb,0x3a,0x0e,0xd2,0x12,0x9b,0x9c,0x1d,0x58,0x4b,0x12,0xee,0x74,0xc0,0xab,0x8f,0x1e },
{ 0x58,0x1f,0x41,0xe1,0x16,0xde,0x0f,0xe8,0x5f,0x9f,0x39,0x69,0x05,0x46,0xbf,0x6d,0xea,0x88,0xc5,0xf3,0xb4,0x39,0x55,0x60,0x79,0x03,0xf8,0xa1,0xf7,0x7d,0x05,0x03 },
{ 0xa4,0xc4,0x06,0x76,0x51,0xa4,0xd7,0x90,0x5e,0x14,0xbf,0x61,0x74,0x84,0x97,0x3c,0xf6,0x0a,0xae,0x67,0x65,0xa6,0xe5,0x28,0x3a,0x1e,0x50,0xb0,0x6d,0x38,0x9a,0x14 },
{ 0x43,0xf8,0x26,0xb5,0x25,0xe5,0x99,0x6a,0x84,0xa0,0xa5,0x1c,0x8f,0xd8,0xcb,0xce,0x8b,0xb3,0x91,0xe5,0x11,0x38,0x43,0x3a,0xe5,0x38,0x09,0x10,0xee,0xc0,0x4b,0x4a },
{ 0x11,0x1d,0xa8,0xc0,0x08,0x07,0xe0,0x42,0xff,0xb4,0x88,0x97,0xb3,0xeb,0x1e,0x25,0x7c,0xe9,0xa1,0x00,0x5b,0x6e,0x9e,0x07,0xf7,0xfa,0x59,0xe7,0x5b,0x68,0xc3,0x5a },
{ 0x6a,0xd8,0x55,0x3b,0x8c,0x90,0x56,0x6d,0xdd,0x90,0x42,0xff,0x84,0x55,0x3d,0xa4,0x9f,0xb2,0x56,0x53,0x2b,0x52,0x20,0x7b,0x9d,0xfa,0x4a,0xb8,0x35,0x35,0xd6,0x3b },
{ 0x09,0xe8,0x7f,0x29,0xf5,0xa7,0xed,0x7e,0x23,0x42,0x44,0xf4,0x78,0x01,0x71,0x36,0xdd,0xed,0xf5,0x58,0x4d,0x69,0x33,0x19,0x8f,0x3f,0x63,0xd2,0x87,0x97,0x82,0x59 },
{ 0x1c,0x0b,0x70,0xce,0xc0,0xbb,0xd0,0x96,0x36,0xc5,0x49,0xd6,0xa8,0x28,0x8b,0x66,0x4b,0x8c,0x31,0x59,0x31,0x3f,0x27,0x91,0xa0,0x52,0x71,0x3d,0x8e,0x95,0x2d,0x18 },
{ 0xf1,0x97,0xc8,0xd8,0x37,0x9e,0xcb,0xbd,0xe1,0xd0,0x39,0x92,0x55,0xe6,0x10,0x8a,0x62,0x4a,0x17,0x4b,0x81,0x16,0x11,0xe9,0x01,0x50,0x66,0x49,0xa3,0xc2,0xdf,0x0a },
{ 0xde,0x0b,0xb8,0xe1,0x12,0x1c,0xe1,0x76,0xdf,0x5c,0xdb,0xd2,0x6f,0x7a,0xc5,0x75,0x10,0x17,0x71,0x3a,0x19,0xf4,0x5e,0xa8,0x34,0x4f,0xb2,0xae,0xb6,0xec,0x0c,0x23 },
{ 0x7f,0xe4,0xe7,0x36,0x51,0xa8,0x17,0xcb,0x02,0xe2,0xea,0x99,0x7d,0x2c,0xc6,0xfe,0x6a,0xed,0x8e,0x4a,0xbc,0x4a,0xb8,0x66,0xe5,0x2c,0xed,0xea,0x04,0xd0,0x8d,0x14 },
{ 0xeb,0x2a,0x73,0x9d,0x41,0x78,0xd7,0x07,0xc3,0x58,0xd1,0x99,0xf5,0xf9,0xa8,0x3b,0xd8,0xfd,0xf5,0xc5,0x4d,0xe3,0xb1,0x6d,0xda,0x2d,0x41,0xb2,0xf8,0xe5,0x3d,0x14 },
{ 0x46,0x64,0x7a,0x0d,0x2d,0x13,0xb4,0x16,0xcc,0x95,0x3e,0xbd,0x89,0xb7,0x5a,0xec,0x0c,0xe5,0x74,0x35,0xba,0x88,0x4e,0xfd,0x3c,0x7d,0xcf,0x4e,0x6a,0x42,0x35,0x21 },
{ 0xba,0xcf,0xff,0x26,0x47,0x2d,0x4a,0xc7,0x72,0x76,0xda,0x30,0x7c,0xf8,0xfb,0x67,0x55,0xbb,0x74,0xc1,0x92,0x0a,0xfb,0xd0,0x9f,0xfa,0x2b,0xe1,0xfc,0xe2,0x81,0x2a },
{ 0xc2,0x1d,0x44,0x8c,0x49,0x1b,0x62,0x15,0x69,0xff,0x3b,0xdb,0xfe,0x36,0x75,0x64,0xfd,0x75,0xcd,0x8f,0xe9,0xbf,0xe0,0x48,0x3d,0xdd,0x52,0xb4,0x0e,0x70,0xb0,0x1d },
{ 0x8d,0xad,0xb3,0xad,0x10,0xcf,0xd7,0x76,0x10,0x3c,0xed,0xaa,0x1b,0x31,0x39,0x0b,0x8d,0x8d,0x58,0xab,0xe1,0x38,0xb6,0x3c,0x87,0xae,0x27,0x58,0xa1,0x17,0x64,0x76 },
{ 0x67,0xf5,0xa6,0x41,0x7c,0x44,0xac,0xe9,0x58,0xbe,0x1f,0x1f,0x80,0x8d,0xc5,0x8b,0xbc,0x02,0x28,0x35,0xd1,0x1a,0xe6,0x9b,0x40,0x6a,0xed,0x96,0x85,0xaa,0xd9,0x28 },
{ 0x83,0x24,0x5c,0x8f,0xb1,0x70,0x05,0x99,0x83,0x32,0x8f,0x61,0x8b,0x6e,0x1d,0xf4,0x30,0xf7,0x53,0x16,0xf7,0xcb,0x3e,0x0c,0x20,0xcd,0x82,0xa9,0x03,0xf2,0x27,0x29 },
{ 0xa4,0x9a,0xf0,0xd3,0xf1,0xb0,0x5c,0x6e,0xd1,0x31,0x66,0x0c,0xcf,0xd1,0x1c,0x71,0x53,0x02,0x9c,0xa6,0xa7,0x92,0x1e,0x73,0xb4,0x13,0x38,0xfd,0xc9,0xf2,0x63,0x3b },
{ 0x6b,0x5f,0xff,0x46,0xbd,0x5c,0x7c,0x9a,0x58,0xdd,0xd3,0xf5,0xbb,0x77,0x9c,0x47,0xad,0x00,0xf7,0x58,0xc5,0x92,0x00,0xb7,0x3b,0x17,0x86,0xa9,0xae,0x84,0x6c,0x01 },
{ 0xab,0x41,0xcc,0xcd,0x3b,0x5d,0x57,0x77,0x40,0x35,0x83,0x79,0x5f,0x71,0x2a,0xf0,0x88,0x93,0xec,0xb1,0xa7,0x1c,0x4e,0x47,0x17,0x63,0x6f,0x26,0x14,0x04,0x45,0x70 },
{ 0xa4,0x5c,0xc2,0x5a,0xe0,0x44,0xb8,0xad,0x9f,0x0b,0x67,0x32,0xa7,0x33,0x01,0x13,0x92,0x85,0x1d,0x3b,0x5f,0xb8,0x4f,0x0b,0xd9,0x8a,0x5f,0xa7,0xc2,0x00,0x13,0x6e },
{ 0xf9,0x29,0xf6,0x70,0xfd,0x8c,0x0e,0x71,0xe3,0x2b,0x00,0xab,0xd2,0xed,0x83,0x5f,0xc9,0x0d,0x26,0x5d,0x25,0x68,0xf5,0x6d,0x79,0xf7,0x8c,0xb5,0x79,0x6a,0x71,0x74 },
{ 0x45,0x74,0x8f,0x88,0x67,0x27,0x8f,0x64,0x06,0x22,0xf4,0x66,0x48,0xbf,0x1a,0x38,0x5a,0x82,0x03,0x5b,0xde,0x65,0x5b,0x03,0xcb,0x3e,0x11,0xd7,0xde,0xb2,0x33,0x5d },
{ 0xf4,0x4c,0xb6,0x3f,0x71,0x62,0xfb,0x39,0xdd,0x2b,0x91,0xed,0x9b,0x95,0x27,0x72,0xb8,0x30,0x7a,0xdf,0x99,0x09,0xba,0x11,0x4e,0xa9,0x4d,0x3b,0x41,0x0f,0xf9,0x63 },
{ 0x02,0x65,0x18,0x81,0x56,0x16,0xd4,0x0d,0x5b,0x4e,0xff,0xd1,0x3e,0xa3,0x87,0x5c,0xc1,0x9d,0x3c,0x64,0x8e,0xfb,0x6e,0x42,0x09,0x1d,0x4c,0xdf,0xf3,0x67,0xb3,0x75 },
{ 0xea,0xa0,0x44,0xeb,0x2d,0xae,0x96,0x12,0xd8,0x4f,0x8b,0x49,0x57,0xf2,0xfd,0xa6,0x43,0x67,0xeb,0x15,0xc9,0x27,0xb5,0x4f,0xca,0xcd,0x14,0xc8,0xc3,0x60,0xf8,0x56 },
{ 0x9c,0x91,0x03,0xd2,0xa8,0x3f,0x76,0xc7,0x76,0x0e,0x81,0x6e,0xaf,0xeb,0xa0,0xc9,0xbc,0x15,0xf7,0xdc,0x25,0x1d,0xf0,0x8c,0xa5,0x76,0xcb,0xa8,0x85,0xbd,0x50,0x43 },
{ 0x65,0x97,0xe3,0x4d,0x6b,0x84,0x20,0x34,0xc6,0x6f,0x78,0x5e,0x28,0x47,0xd2,0x7a,0xa2,0x96,0x2a,0x83,0xa0,0x94,0x92,0xcc,0x32,0x35,0x13,0xa8,0xe7,0xec,0xce,0x60 },
{ 0x8b,0x02,0x18,0x93,0x66,0x58,0x11,0x59,0xd7,0xf0,0x95,0x72,0x4e,0x37,0x49,0xe4,0x07,0xbd,0x34,0xb5,0x6c,0xc2,0x3e,0x73,0x19,0x01,0x2d,0x3f,0x68,0x17,0x87,0x21 },
{ 0xc4,0x57,0xb6,0x1d,0x13,0x42,0x2e,0xb0,0xbc,0xb6,0x2a,0x9d,0x77,0x07,0x82,0x68,0xfc,0x79,0xd6,0xa1,0x53,0xd0,0x53,0x76,0x5d,0x3b,0xa1,0xe1,0x22,0x12,0x63,0x00 },
{ 0x9f,0x82,0x83,0x78,0x3f,0x11,0x0b,0x65,0x27,0x30,0x3f,0x85,0xb3,0x71,0x61,0xd4,0x69,0x7c,0xbd,0xb0,0xbf,0xf0,0x1a,0xa1,0x3d,0xab,0xc6,0xec,0x87,0xd2,0x07,0x4f },
{ 0x67,0x1a,0xfb,0xe9,0x9e,0xb1,0xe2,0x3b,0xf4,0x35,0x2e,0xc8,0xed,0xe5,0xa8,0x5d,0xa4,0xa5,0x57,0x60,0xc7,0xaa,0x02,0xeb,0xdd,0x3f,0xba,0xd6,0x90,0xc5,0xae,0x30 },
{ 0x72,0x35,0x3f,0x3d,0xe7,0x6e,0xdb,0x23,0x59,0xfe,0x48,0x08,0x31,0xdf,0xbb,0xe9,0xca,0x5a,0xf3,0xa3,0x7a,0x9c,0x2d,0x47,0x5b,0x04,0x96,0xd4,0x18,0x6b,0x55,0x12 },
{ 0x26,0x30,0x8c,0x96,0x90,0x24,0x6d,0x0f,0x87,0x37,0xb1,0x63,0x46,0x46,0x93,0x62,0x7f,0x68,0x80,0x23,0x07,0x21,0x89,0xdf,0x7a,0x5f,0x01,0x37,0x91,0x35,0x03,0x7c },
{ 0x7b,0xaa,0xc0,0xfd,0x67,0x4e,0xec,0xe1,0x66,0x06,0xdc,0x93,0xe4,0xf9,0x4f,0xc1,0xbb,0xae,0xdf,0x77,0xe5,0x47,0xa5,0x6c,0x02,0x58,0xdc,0x95,0x5c,0xde,0x62,0x17 },
{ 0xb9,0x0f,0x84,0xdd,0xfd,0xdd,0xb2,0x97,0x38,0x7f,0xda,0x37,0x84,0x87,0x26,0xfe,0xf6,0x95,0x56,0xdf,0x7a,0x75,0x46,0x68,0xb8,0x69,0x24,0xac,0x03,0x41,0x76,0x58 },
{ 0xd7,0xe5,0xa5,0xca,0x28,0x94,0x61,0xcd,0x2f,0xe2,0xbc,0x47,0xd6,0x1d,0xee,0x70,0xb5,0x48,0x34,0x95,0x41,0xb6,0x7a,0x54,0xd4,0x30,0xff,0x0c,0xbc,0xe3,0xd6,0x5d },
{ 0x05,0x31,0xf7,0x7b,0x60,0xe6,0xbb,0x28,0xfc,0xf4,0x34,0x28,0x13,0x38,0x93,0xd4,0x95,0x87,0x3e,0xd2,0x4a,0xb9,0xc2,0xa5,0x03,0x22,0xa4,0xd0,0x99,0x79,0xd2,0x49 },
{ 0x13,0xe2,0x91,0x56,0x2c,0x1f,0x0c,0xc8,0xab,0xed,0x40,0x43,0x82,0x8c,0xa1,0x5a,0x78,0xa3,0x1f,0x33,0x8d,0xd1,0x9c,0xc0,0x99,0x0c,0x7b,0xfe,0xbf,0x99,0x64,0x56 },
{ 0x30,0x42,0x0a,0x74,0x98,0x22,0x3a,0x4e,0xfc,0x4e,0xcd,0xd6,0x7d,0xdc,0xca,0xed,0x9c,0x0a,0x38,0xc3,0x1f,0x59,0xd7,0xc4,0xa7,0xae,0x65,0xe6,0x6f,0x1f,0x75,0x66 },
{ 0xb6,0xda,0xdf,0xd9,0xc2,0xbb,0x56,0x48,0xaf,0xeb,0x2c,0x7a,0x06,0x2f,0x02,0x99,0x77,0xac,0x38,0x09,0xc5,0xd8,0x76,0x5d,0xeb,0xfb,0x30,0x24,0x25,0xc9,0x93,0x4d },
{ 0xfe,0x85,0x3a,0x6c,0xaf,0x57,0x19,0xeb,0xfb,0x88,0x70,0x0a,0xe5,0x18,0x13,0x71,0xb1,0x7b,0x45,0x17,0x57,0x4b,0x6f,0xad,0x88,0x8b,0x71,0x94,0xa8,0x0d,0x91,0x2c },
{ 0x82,0x5a,0xaf,0xf3,0x00,0x87,0x75,0x23,0x0b,0x80,0x35,0x5c,0x72,0x46,0xb0,0x97,0xa7,0x28,0xea,0xde,0x0a,0x6f,0x1f,0x50,0xd8,0x18,0x1d,0xa1,0xf4,0x52,0x2c,0x69 },
{ 0x16,0x86,0xd7,0x6c,0xe5,0x91,0xa7,0x65,0x1e,0x28,0x91,0xb9,0x7e,0x4c,0x86,0x2a,0x0d,0xc4,0xaa,0xb3,0xd4,0x63,0x60,0x61,0x1f,0xc6,0x98,0x70,0x09,0x52,0x4f,0x63 },
{ 0x53,0xbd,0x97,0x70,0x29,0xa8,0xf6,0xd4,0xfa,0x38,0x7d,0xf8,0x17,0xd2,0x52,0x79,0x50,0x1a,0x75,0x9a,0x24,0xe2,0x3c,0xef,0x79,0x98,0x0e,0x28,0x99,0xf0,0x10,0x79 },
{ 0xd1,0x03,0x27,0x04,0xf2,0xae,0x23,0x80,0x76,0x2e,0xee,0x06,0x00,0x16,0x5d,0xc8,0x26,0x95,0x41,0x98,0xe6,0xc0,0xe7,0x92,0xc4,0x8a,0x52,0x14,0xe1,0x80,0x73,0x5d },
{ 0xdb,0xa7,0xd5,0x4c,0xcc,0x10,0xd1,0x3e,0xf5,0xaa,0xb3,0x0c,0xc5,0xd1,0x7c,0xa4,0xc4,0x5e,0x6b,0x8e,0x3d,0xec,0x3a,0x31,0x0f,0xda,0x9d,0x47,0x07,0x9d,0x17,0x01 },
{ 0x36,0x06,0xe2,0xd3,0x45,0x9f,0xb0,0xeb,0x81,0x18,0x6a,0x79,0xf3,0xc7,0x69,0x97,0x12,0x53,0x73,0x43,0x39,0x76,0xe2,0xa0,0xb4,0x92,0xd2,0xa6,0x64,0x06,0x32,0x2d },
{ 0xb3,0x54,0x22,0xd8,0xd6,0x79,0xc6,0xc9,0xff,0x24,0xdd,0xfc,0xb2,0x27,0x3c,0x3e,0xb9,0x3f,0x86,0xfc,0xf9,0xe5,0xb1,0x07,0x0a,0xea,0xa3,0x44,0xbd,0x89,0xe9,0x21 },
{ 0x01,0x41,0x19,0xb4,0x1a,0x0f,0xb3,0x21,0xcd,0x15,0x8c,0xfa,0x51,0xf8,0x6b,0x82,0x96,0xbd,0xce,0x06,0x5e,0x5d,0xc4,0x50,0xff,0x17,0x9c,0x16,0x7e,0xbd,0x8b,0x0a },
{ 0x26,0xad,0x5e,0x96,0xa3,0x36,0x4d,0x1d,0x1e,0xbb,0xd6,0xbb,0x94,0x23,0x30,0x26,0x91,0x99,0x72,0xa0,0xdf,0xeb,0xe6,0xef,0x21,0xf5,0x33,0x8b,0xf2,0xda,0xca,0x30 },
{ 0x24,0x17,0x02,0x35,0xd3,0xfc,0x81,0x27,0x28,0x6b,0x68,0x91,0x29,0xde,0xb1,0x0b,0xe0,0x8e,0x5a,0x2c,0x7f,0x96,0x37,0x61,0x28,0x29,0x39,0x39,0x22,0x81,0xb2,0x14 },
{ 0x35,0xe2,0x51,0x4c,0x94,0xb9,0x30,0x30,0x87,0xb6,0xd2,0xe3,0xfe,0x83,0xd0,0x56,0xdc,0xc0,0xd2,0x6f,0x44,0x54,0xca,0x1a,0x2c,0xe1,0x6c,0xf8,0x78,0x1b,0x4e,0x6e },
{ 0x04,0x9c,0xed,0x05,0x96,0x92,0x68,0x9b,0x56,0x6f,0x63,0x34,0xf4,0x31,0x47,0x7e,0x28,0xc6,0xf6,0xdb,0x52,0xcf,0x86,0x69,0x98,0x39,0x12,0x55,0x68,0x89,0x01,0x4d },
{ 0xdd,0x26,0x39,0x4f,0xab,0xc7,0xdd,0x3d,0x40,0xe9,0xf5,0x82,0x00,0xdc,0x79,0xd7,0x05,0xfc,0x7c,0x61,0x5b,0x6a,0x9a,0x7f,0x64,0x73,0xfa,0xfe,0xac,0x5a,0xf3,0x37 },
{ 0xae,0xf9,0x1e,0xac,0xff,0x83,0xd5,0x0f,0xc3,0x5c,0x5c,0x5c,0x3b,0xe7,0x1d,0x84,0x54,0x6d,0xaf,0xc2,0x4d,0xd0,0x15,0x2c,0xc0,0xbc,0xc8,0xb4,0x3a,0xa4,0x99,0x79 },
{ 0x58,0xbb,0xb0,0x19,0xf3,0x41,0x77,0x58,0x04,0x74,0xdf,0xcd,0x31,0x39,0x00,0x08,0x1e,0x24,0xe6,0xed,0x30,0x4a,0x08,0x04,0x3f,0x0b,0x6a,0x9e,0xe1,0xf5,0x9f,0x5d },
{ 0x2d,0xe1,0x43,0x4f,0xef,0xb9,0x44,0x27,0x5b,0x87,0xd7,0x8a,0xf3,0xb4,0x7f,0x0f,0xd2,0x73,0xc1,0xdf,0x6e,0x91,0x5e,0xc3,0xb5,0x7b,0xd7,0x5f,0xeb,0xd5,0x05,0x13 },
{ 0xea,0x6b,0x13,0x6b,0xd9,0x6f,0xc1,0xcb,0x91,0x90,0xf8,0x9d,0xb9,0xe7,0xfe,0x18,0xd8,0x03,0xb2,0xcf,0x06,0xed,0x89,0x0b,0xf0,0x6d,0x91,0xeb,0x3b,0xa2,0xd5,0x17 },
{ 0x45,0x32,0x1d,0xe5,0x5f,0x05,0xe0,0xe8,0xbb,0x62,0xc9,0x8d,0xc3,0x07,0xb4,0x24,0x02,0x0b,0x08,0x2b,0x5b,0xff,0x9a,0x3b,0x98,0xa1,0xf0,0xf8,0x45,0x55,0xdf,0x4a },
{ 0xc9,0x20,0xbf,0x9a,0x5d,0x70,0x47,0x5d,0xac,0x11,0x53,0xa7,0xcb,0x0c,0x01,0x45,0x12,0x5c,0xc1,0xff,0x81,0xf4,0xb9,0x31,0x5b,0xfd,0x9b,0x0a,0x7a,0x5f,0x07,0x20 },
{ 0x99,0x3f,0xb2,0xf0,0xa8,0xb6,0x3b,0xb8,0xe8,0x45,0x13,0xce,0x7b,0xc8,0x2e,0x86,0x2f,0x43,0xba,0x3e,0xb0,0x53,0xf4,0x86,0xc2,0x5e,0xae,0xe2,0x6c,0x58,0x13,0x3d },
{ 0x79,0x86,0xe9,0xd8,0xc5,0x5e,0x4e,0x46,0xf7,0x2e,0x6d,0xb4,0x1c,0x1d,0xbf,0x4c,0xe4,0xc6,0xb9,0x23,0xfd,0xb4,0x50,0x65,0x0a,0xf6,0xa4,0xe4,0x91,0xa9,0x33,0x4a },
{ 0xc6,0xff,0xb8,0x3e,0xbc,0x90,0xdb,0xf5,0xa8,0x60,0xa2,0x52,0x65,0xa6,0xa8,0x4d,0x88,0x0c,0x91,0xe9,0xa5,0x75,0x03,0xbb,0x26,0x25,0x95,0xa3,0x1f,0x0f,0x14,0x58 },
{ 0x5c,0x1d,0x46,0x11,0x44,0xfc,0x18,0xd9,0x87,0xa7,0x4d,0x85,0x5f,0xba,0xe5,0xa2,0x47,0x46,0xd1,0x2d,0xac,0x89,0x00,0xe6,0xa9,0x19,0x08,0x24,0xc8,0xe5,0x4a,0x4e },
{ 0xd6,0x7e,0x83,0x7f,0x60,0xcb,0x6e,0xfe,0xd7,0x00,0x80,0x29,0xdd,0x4e,0x51,0x93,0xc1,0x01,0xb9,0x52,0x98,0x3c,0x31,0x2c,0xd3,0xec,0x5a,0xf7,0x0d,0xca,0x28,0x12 },
{ 0x7c,0x29,0x7f,0x07,0xc2,0x59,0x6d,0x43,0xae,0x97,0x1e,0x2e,0x54,0x0d,0x3b,0xdb,0x2f,0x98,0xa5,0x85,0xc1,0x89,0x31,0x44,0xa0,0x9e,0x79,0xe2,0x42,0xfe,0xad,0x7c },
{ 0xae,0x09,0x91,0x25,0x29,0x83,0xbc,0x08,0xaf,0x26,0xd1,0xec,0xd6,0x9c,0x1a,0xf0,0x9f,0xcf,0xad,0xf8,0x85,0xdf,0x4e,0xca,0xb5,0xb1,0xd3,0x70,0x8e,0x17,0x51,0x6b },
{ 0x30,0x90,0xdd,0x7e,0x64,0x77,0xe6,0x6d,0x0a,0xb0,0x79,0x2b,0x49,0xe9,0xbb,0xc9,0x44,0xa2,0x99,0x4b,0x78,0x2f,0x9e,0xbc,0x06,0x89,0x32,0xf3,0x66,0x11,0xb6,0x5f },
{ 0x33,0xa5,0x0f,0x46,0x5f,0x73,0xef,0x0b,0xb1,0xf6,0x56,0x76,0x6a,0x17,0xd7,0xeb,0xbd,0x71,0x45,0x74,0x80,0x08,0xa2,0xd1,0xf9,0xdb,0xfb,0x57,0x8d,0x55,0x95,0x0b },
{ 0xa3,0xad,0xbc,0x21,0x57,0x21,0x70,0xaa,0x1f,0xb0,0x14,0x91,0xb7,0xdc,0xa8,0x1a,0x9a,0x55,0x4c,0xc1,0x7c,0xe2,0x3c,0x6e,0x83,0x06,0xb5,0xb3,0x24,0xb1,0x4b,0x30 },
{ 0x09,0x56,0x41,0x4e,0x3d,0x91,0x0b,0x4e,0x62,0xb9,0x40,0x17,0xa9,0xd3,0x1f,0x67,0x6e,0xf2,0x35,0x59,0xc2,0xfe,0x69,0x1f,0x79,0xe7,0x81,0x3a,0x93,0x11,0x0e,0x41 },
{ 0x16,0x78,0xb5,0xa4,0xaf,0x75,0x55,0xa6,0x84,0xcb,0x33,0x3c,0x72,0x35,0x83,0x96,0x81,0x08,0x86,0x53,0x3f,0x43,0x70,0xac,0x68,0x6e,0xe2,0x10,0xdc,0x2c,0x07,0x58 },
{ 0x44,0xa7,0x85,0x3e,0x98,0x11,0x16,0xc8,0xd2,0x11,0xde,0x58,0x49,0x44,0xf5,0x76,0x3d,0x8e,0xb3,0x28,0x9e,0x2b,0xa7,0x8e,0x7b,0xfe,0x79,0x51,0x27,0x7b,0xe1,0x33 },
{ 0x55,0xf9,0x8b,0x57,0xcf,0xe6,0xb2,0xbb,0xa8,0x69,0xb8,0x70,0x87,0xcd,0xa7,0xa5,0xb9,0x06,0x23,0x9f,0x98,0x41,0x81,0x90,0x44,0x2c,0xe6,0x7f,0x72,0x83,0xd5,0x03 },
{ 0xcf,0x15,0xef,0x36,0x68,0x64,0xee,0xd7,0x42,0x60,0x3f,0xc2,0x7e,0xd1,0x72,0xac,0x5b,0xb2,0x9f,0xe0,0x7b,0xe2,0x1e,0x6c,0xe7,0x52,0xc6,0xf4,0x30,0xa5,0xe1,0x26 },
{ 0x06,0x11,0xb9,0x3f,0x63,0x0a,0xa8,0x17,0x2d,0xc8,0x28,0x09,0xd5,0x7a,0x0f,0x9c,0x53,0x5d,0xe7,0xdc,0x25,0xb7,0x97,0xf8,0x98,0x8b,0xbe,0x4f,0x2d,0xb1,0x47,0x3e },
{ 0xfe,0xba,0x96,0xda,0x07,0x00,0x35,0xe6,0x3c,0xcb,0x52,0x09,0xb6,0xc2,0x0a,0x8f,0x8d,0xa1,0xe1,0x56,0xa2,0x37,0x4a,0x6a,0x7b,0x2a,0x5f,0x39,0xeb,0x90,0x0b,0x36 },
{ 0xd6,0x5a,0xf8,0x09,0x56,0xe7,0x52,0xcc,0xf1,0x62,0xf2,0x02,0x53,0x5e,0x8e,0x6e,0x6f,0x74,0x85,0xf9,0x74,0x79,0xaa,0x6c,0x9b,0x3b,0xe8,0x8d,0x00,0xe9,0x28,0x76 },
{ 0x09,0xfe,0x86,0xc0,0x14,0x74,0x1c,0x63,0x30,0x2b,0x8d,0xc5,0x2b,0x58,0x62,0x8c,0x7c,0x49,0x22,0x27,0xa2,0x82,0x21,0x7d,0x26,0x79,0x34,0xba,0xf4,0xda,0x38,0x6b },
{ 0xe0,0x19,0x55,0x3a,0xe2,0x26,0x7b,0x6b,0x3a,0xde,0x66,0x44,0xce,0x94,0x15,0xa7,0x3e,0xdb,0x75,0x1f,0xde,0x1e,0xb5,0xd5,0x22,0xfa,0xf8,0xff,0x32,0x67,0x99,0x11 },
{ 0x2a,0x40,0x9d,0xdc,0xd9,0x81,0x45,0x93,0x01,0x93,0x61,0xee,0x3d,0xc1,0x59,0x32,0xcf,0xcb,0x4f,0xf7,0x88,0x6d,0x43,0x81,0x49,0xae,0x9f,0xff,0x9d,0x17,0x2e,0x64 },
{ 0xfa,0x57,0x3a,0xfa,0x86,0xec,0x1e,0x23,0xa5,0x6b,0x0d,0x0e,0x67,0x79,0x03,0xf7,0x81,0xa8,0xca,0x0c,0xa6,0x20,0xa0,0x3d,0xd7,0x9d,0xc4,0x67,0x90,0x92,0xa1,0x48 },
{ 0x30,0xe0,0x60,0x8a,0xdc,0xad,0x12,0x35,0xa2,0x9e,0x8a,0xb0,0x06,0x09,0xc3,0x19,0xf4,0x2d,0xee,0x34,0xfb,0xe2,0x61,0x4c,0x57,0x53,0x24,0x54,0x83,0x59,0xf1,0x79 },
{ 0x61,0xce,0x81,0xf7,0x35,0x50,0x80,0xf5,0x00,0xd8,0x88,0xe8,0x94,0x61,0x86,0xfb,0xc3,0xd8,0xda,0x74,0xf5,0xe5,0xec,0x72,0x0c,0x33,0xcb,0x69,0x4e,0xe4,0xb3,0x22 },
{ 0x85,0x52,0xcb,0x58,0x36,0x08,0x0b,0x67,0x0b,0x76,0xc8,0x6b,0xc8,0xf9,0x11,0x74,0x8c,0xf2,0x73,0x1d,0x48,0x6e,0xf3,0x17,0xe0,0xbe,0xd8,0x2b,0xa8,0xcb,0x0a,0x43 },
{ 0x6d,0x15,0x9d,0x2f,0x88,0x8b,0xb7,0x2d,0x18,0x9e,0xa0,0x4f,0x8c,0xff,0x6f,0x33,0xb7,0x83,0xfe,0x50,0x16,0x04,0x61,0x28,0x72,0xcc,0x34,0x88,0xdf,0x79,0x48,0x0b },
{ 0x91,0x47,0xde,0x37,0xb3,0x7a,0xfb,0xc2,0xd1,0x53,0xbb,0x72,0xb1,0x4c,0xb9,0xfa,0xd3,0x66,0xbf,0x4a,0xba,0xb4,0x3d,0x7d,0x06,0x7b,0x2e,0xa0,0x5e,0x5a,0xe3,0x18 },
{ 0xa2,0x0e,0x67,0x78,0x99,0x9a,0xd0,0x0e,0xd5,0xf5,0xcc,0x0d,0xf9,0x70,0xc9,0x20,0x24,0x07,0x80,0xcb,0xa3,0xca,0x35,0x07,0x14,0x7e,0x84,0x8a,0x2d,0x52,0xb2,0x28 },
{ 0xfb,0xb1,0xdc,0x5c,0x64,0xed,0x08,0x6e,0x13,0x59,0xcf,0x5d,0x90,0x46,0x70,0xc0,0x95,0x1b,0xd0,0x01,0xfb,0x5e,0x4c,0xf3,0xcf,0x56,0xa9,0xa9,0x05,0x87,0x7f,0x2f },
{ 0x94,0x2e,0x8d,0x41,0x92,0x9c,0x8e,0xf6,0x3c,0xe3,0xab,0x38,0x81,0x5e,0x31,0x42,0x14,0x10,0x09,0xed,0xb0,0xb0,0xae,0x9e,0x00,0xca,0x71,0xb0,0xa7,0x1b,0x17,0x21 },
{ 0x4a,0xd0,0x13,0xd1,0x62,0xaf,0xc1,0x58,0x70,0x1e,0xdf,0x5b,0x24,0x3e,0x42,0x83,0x0e,0x5a,0x51,0xb9,0xf3,0x02,0x40,0x86,0x00,0xe2,0x0d,0x4e,0x42,0xa2,0x97,0x55 },
{ 0x0d,0x06,0x71,0x04,0xd0,0x0f,0x9f,0xf9,0xdb,0x4f,0x82,0x92,0xe9,0x5b,0x4c,0x0c,0x0a,0x56,0xf3,0x15,0x7f,0x2a,0x15,0xf8,0x74,0xad,0x0b,0x79,0xa4,0x61,0xe2,0x7f },
{ 0x3c,0x03,0x37,0x30,0x23,0x97,0xdf,0x1f,0x89,0xad,0x7b,0xc1,0xf8,0x01,0x4a,0xe7,0x02,0x62,0x21,0xb6,0x44,0x04,0xde,0x6c,0x89,0x59,0x98,0x69,0x0a,0xc6,0xb9,0x12 },
{ 0xbf,0x27,0xee,0x3c,0xf3,0x59,0x6f,0x3c,0x88,0xc4,0x09,0x7b,0xcc,0xe0,0x39,0xe8,0x7d,0xb5,0xfa,0xd7,0x1f,0x67,0x3e,0xd1,0x30,0x96,0x1e,0x74,0x7a,0x59,0xd1,0x17 },
{ 0x1f,0xda,0xe5,0x8f,0x07,0xaa,0x07,0xab,0x1e,0x80,0x2a,0xd0,0xf2,0x92,0x6c,0x2b,0x51,0x7f,0x41,0xc7,0xc7,0x26,0xc2,0x90,0x87,0xa4,0x46,0xf1,0xb9,0x31,0xcd,0x78 },
{ 0xb1,0xe3,0x73,0xe4,0x35,0xb9,0x34,0x31,0x30,0x35,0xc2,0x14,0xec,0xb2,0x99,0xbf,0xd2,0xff,0xeb,0x62,0x7e,0x93,0xfe,0xab,0x56,0x0f,0xcb,0x3d,0x7e,0x1f,0xf1,0x52 },
{ 0xb8,0x58,0xec,0x64,0x5d,0x14,0x9e,0xbf,0xf2,0x68,0x8e,0x05,0x36,0x70,0xd2,0x2b,0x80,0x61,0x07,0x1e,0x45,0x91,0x22,0xd6,0x0c,0x0a,0x0f,0xc2,0xf3,0xcb,0xd9,0x36 },
{ 0x9c,0x35,0x06,0x4e,0xbe,0x98,0x7c,0x17,0x7b,0xe1,0xf9,0x55,0xa8,0x8b,0xee,0x72,0xf0,0x6b,0x90,0x31,0x73,0x94,0x64,0x58,0xfe,0x02,0x08,0x13,0x42,0xbf,0xdd,0x46 },
{ 0xd4,0x2b,0x60,0xff,0xab,0x4f,0x32,0xfc,0xb0,0x61,0xf5,0xfb,0x65,0x6f,0x0a,0x53,0x57,0x81,0x7c,0x33,0x71,0x0a,0x17,0xdb,0x4e,0x20,0xa2,0xf8,0x37,0x41,0xd9,0x3b },
{ 0xbc,0x4c,0x41,0x26,0x6d,0xd5,0x55,0xea,0x44,0x57,0x53,0x3e,0x46,0x87,0xbe,0x75,0x96,0x69,0x1a,0xea,0x89,0xf3,0xd0,0xd0,0x1f,0x2b,0x2a,0xcc,0x1c,0x51,0x82,0x3a },
{ 0x9c,0x35,0x03,0x63,0xbb,0xaf,0x75,0xd6,0xbf,0xb7,0xa1,0x73,0xc8,0xfc,0x1b,0xbb,0x6f,0xbb,0x7d,0xf4,0x5e,0x67,0x28,0x94,0x90,0x2c,0x38,0xda,0x93,0xe5,0x5d,0x58 },
{ 0xbd,0x49,0xcf,0xc5,0x3f,0xfc,0xab,0x6a,0x6f,0x85,0xc7,0xf9,0xfb,0xad,0x32,0x8d,0xc8,0x00,0x3a,0x89,0x35,0xaf,0xbd,0xee,0x65,0x0b,0x41,0x43,0xab,0x6e,0xe6,0x1d },
{ 0x3b,0x6f,0xe3,0xaf,0xb4,0x3c,0xdf,0x78,0x18,0xa3,0xc0,0x53,0xd2,0x76,0x44,0xb0,0xad,0xd9,0x65,0x33,0xb2,0x4b,0x50,0x6e,0x86,0xbe,0xe9,0x1a,0x5b,0xca,0x77,0x59 },
{ 0xb9,0xca,0x85,0xd5,0x04,0xac,0xf8,0x61,0xe6,0xa0,0xf0,0x3a,0x22,0x50,0xc1,0x2b,0xc1,0xf6,0x03,0x6a,0xeb,0xb8,0x02,0x72,0x09,0x6c,0x20,0x9a,0xab,0x5b,0xc5,0x77 },
{ 0x29,0x31,0x0e,0x7b,0x19,0x56,0x47,0x73,0x65,0x34,0x0b,0x8c,0x7b,0xde,0xc5,0xae,0x86,0x2b,0x73,0xda,0x7d,0xb4,0x47,0x6e,0x3e,0x53,0x0f,0x06,0xff,0x01,0x33,0x37 },
{ 0xaa,0x24,0x7d,0xb4,0x63,0xf0,0xa1,0xd0,0x88,0x36,0x49,0xb3,0x75,0x16,0x50,0x57,0xdb,0xb2,0x31,0x7e,0x6e,0x71,0x2e,0xd9,0x9f,0x0c,0x7f,0xf5,0x53,0x07,0xbb,0x48 },
{ 0x03,0x80,0x10,0x30,0x8f,0x4d,0x85,0x12,0x0a,0xe7,0x97,0xf3,0x6d,0xaa,0xf5,0x4d,0xb5,0xab,0xb6,0xe6,0xce,0xbc,0xb4,0x43,0xeb,0xe2,0x92,0xfb,0xa3,0x89,0x80,0x03 },
{ 0x30,0xd7,0x15,0xbb,0x78,0x1f,0x56,0xcb,0x75,0xa8,0xa0,0x00,0xa3,0x87,0x3d,0x69,0xa5,0x7e,0xa3,0x91,0x24,0x2c,0xfc,0x8f,0x83,0x22,0xe6,0xc1,0xec,0xf5,0x4d,0x17 },
{ 0xb1,0x20,0xdd,0xe9,0x40,0xda,0xe4,0xa2,0x66,0xb0,0xdf,0x1e,0x61,0x2c,0xf4,0x5b,0x1d,0x50,0xc3,0xcd,0x24,0xd5,0x10,0xa7,0x73,0x14,0x4f,0xbf,0xb4,0xe9,0x22,0x18 },
{ 0xe1,0x11,0xda,0x76,0x36,0x56,0x93,0x00,0x08,0xe5,0x5d,0x2d,0x6e,0x40,0x27,0xe5,0x8f,0x19,0x51,0x1b,0xc7,0xd6,0x51,0x74,0x79,0xb2,0x82,0x74,0xbb,0xb3,0xb4,0x58 },
{ 0x38,0x38,0x9f,0x47,0xde,0xc6,0x76,0xdc,0x82,0xaa,0xbd,0x3b,0xb2,0xbd,0x65,0x42,0x47,0x48,0x33,0xb1,0x92,0xfd,0x63,0xa7,0x53,0xbf,0x9b,0x3c,0x72,0x8e,0x19,0x71 },
{ 0x93,0x2f,0xc2,0x83,0xe3,0xd3,0xf9,0xbd,0xa4,0xbc,0xff,0x5a,0x1c,0x81,0xb5,0x26,0xdb,0x7b,0x6b,0xad,0x15,0xf1,0xad,0xa5,0x1e,0xd0,0x77,0x4f,0x79,0x50,0x72,0x51 },
{ 0xc2,0x1a,0x26,0x9b,0x90,0x1b,0x5c,0x63,0x86,0xf8,0x62,0x22,0xae,0xe8,0x80,0x43,0xf3,0x36,0x78,0xae,0x69,0xc5,0x6b,0xb0,0x42,0x97,0x79,0x3e,0xa7,0xea,0x8e,0x3f },
{ 0x85,0x51,0x71,0x14,0xcc,0xc4,0xa8,0x6c,0x94,0x30,0x56,0x0a,0xcf,0x78,0x5d,0x2f,0x1d,0x3c,0x90,0x36,0x25,0xbf,0x34,0xe4,0xb6,0x0a,0x0e,0x7e,0x17,0x30,0x44,0x15 },
{ 0x54,0xad,0xfd,0x98,0x6a,0x65,0xd8,0xf5,0x93,0xde,0x95,0x49,0xce,0xf3,0x06,0x0e,0x4e,0x83,0xdd,0x79,0x7c,0xa8,0xf4,0x84,0x52,0x4f,0x99,0xf6,0x50,0xb7,0x61,0x1b },
{ 0x23,0x04,0xe4,0x38,0x40,0xd0,0x76,0xa2,0x53,0x6e,0x1a,0x7d,0x13,0x4b,0xc6,0xb3,0xb1,0x9d,0x70,0xdf,0xde,0x26,0xa3,0xb1,0x1a,0x6d,0x46,0x4c,0x25,0x7a,0x1f,0x12 },
{ 0x63,0x36,0x74,0xc9,0x40,0x98,0xdf,0x83,0xcc,0x5f,0xf4,0x6a,0x1b,0xea,0xab,0xab,0x38,0x6a,0x01,0xe9,0x67,0xf3,0xb7,0xb8,0x11,0x89,0x7d,0x62,0x44,0x43,0x58,0x59 },
{ 0x6d,0x18,0x8f,0x5c,0xf2,0xe0,0x7d,0xe1,0x32,0x8d,0xc9,0x23,0xb9,0xf3,0xa5,0xc6,0xc7,0xb6,0x03,0xd2,0xc0,0xef,0xeb,0x6d,0x4f,0x00,0x03,0xe5,0x1f,0x5e,0xb9,0x00 },
{ 0x3d,0x37,0x32,0xa1,0x9a,0xc8,0x9c,0xeb,0x88,0xbd,0x71,0x19,0xd7,0x35,0xaa,0xcd,0xbc,0x7d,0xd7,0xa8,0x61,0x68,0x18,0xaf,0x77,0xd1,0xcd,0xf4,0xf3,0xb5,0xad,0x30 },
{ 0x52,0x5b,0xe3,0xd5,0xe2,0xd2,0x4e,0xec,0xc2,0x47,0x17,0xf1,0x01,0xc5,0x81,0x18,0x44,0xd6,0x92,0xcf,0x7e,0xbe,0xcc,0x9c,0x2f,0xb5,0x50,0x3a,0xb8,0x50,0x0a,0x0c },
{ 0x12,0x7c,0x6e,0x40,0x7f,0x26,0xeb,0x4d,0x1c,0x76,0xc4,0xfc,0x58,0x7a,0xbb,0x4f,0x2c,0x22,0xaf,0xcc,0x61,0x40,0xed,0x23,0xfd,0x3e,0x3b,0x20,0x0d,0x52,0x41,0x10 },
{ 0x33,0xc8,0xab,0xac,0x0f,0x23,0x3e,0x33,0x98,0x55,0x71,0x85,0x7f,0xc2,0x86,0x67,0x2e,0x1f,0x3c,0x89,0x0f,0xef,0x9c,0x3b,0xaf,0x12,0x70,0xf1,0x87,0x1f,0x31,0x38 },
{ 0xb7,0x53,0x54,0x8a,0xa2,0xde,0xd0,0x3b,0x7d,0x4b,0x51,0x78,0x5e,0xcc,0xc5,0x3b,0x75,0x7f,0x9a,0xc4,0xee,0x9c,0x7a,0x9a,0x38,0x09,0x98,0x97,0x20,0xff,0x9b,0x5e },
{ 0xd4,0xe9,0x73,0x2c,0xef,0xd6,0xcd,0xc9,0xf6,0x9b,0x60,0x71,0x79,0x75,0x69,0xbf,0x89,0xc8,0x36,0x37,0x6b,0xd4,0x36,0xe9,0x64,0xcd,0x71,0x62,0xc5,0xf1,0x7e,0x62 },
{ 0x97,0x80,0x0a,0xd7,0x3c,0xbe,0x4f,0x6d,0xdc,0xa6,0xd8,0xda,0x02,0x51,0xb8,0xf9,0x5e,0x41,0x36,0x59,0xe7,0x44,0x92,0x20,0xf1,0x40,0x82,0xd5,0xb5,0x99,0x47,0x7f },
{ 0xee,0x39,0xc1,0x14,0xb3,0x93,0x8a,0xb4,0x71,0x3d,0x60,0xf5,0x7a,0x4d,0xcb,0xcb,0xe7,0x38,0x35,0xae,0x6e,0xdd,0x29,0x71,0x55,0x24,0xea,0xb4,0x83,0xfc,0x85,0x3b },
{ 0x6a,0xc9,0x2f,0xb9,0x60,0xe5,0xb2,0x2e,0xef,0xa2,0x90,0x9a,0x2f,0xc6,0x1d,0xe2,0x2c,0x48,0x1f,0xa2,0xeb,0x45,0x65,0xc3,0x78,0xb6,0xb6,0xaa,0x37,0x12,0x43,0x46 },
{ 0xe2,0x9f,0xd5,0xd3,0x11,0xee,0xb1,0x7d,0x4d,0xba,0x70,0x24,0x52,0x96,0xc8,0xb9,0xec,0x59,0x69,0x50,0xa3,0x0e,0xa7,0xd4,0xcb,0x13,0x36,0x8d,0x7a,0x93,0xd2,0x3a },
{ 0xcd,0x87,0xe4,0x30,0x44,0x8f,0xf6,0xda,0xb8,0xfa,0x96,0xdb,0x80,0x5c,0xb0,0x00,0xc2,0x89,0x26,0x25,0x34,0x15,0x06,0x89,0x0a,0x4a,0x06,0xa6,0x66,0xa2,0xb2,0x42 },
{ 0x5f,0x4c,0x0a,0x5b,0x4e,0x16,0x76,0x56,0x46,0x66,0x0e,0x7b,0xb9,0x36,0x26,0x83,0x70,0x4b,0x80,0xaf,0x09,0x10,0x69,0xae,0x2f,0x41,0xcc,0x9e,0xcf,0x70,0x41,0x33 },
{ 0x4a,0x41,0x9a,0xf2,0x2f,0x22,0xfc,0xad,0x19,0x15,0x59,0x68,0xb1,0x4e,0xdb,0x4b,0xd5,0x65,0xb9,0xbd,0x70,0x5a,0x57,0x96,0x2a,0x9c,0xf7,0xc1,0x39,0x43,0xa3,0x0a },
{ 0xb6,0xb4,0x9d,0x85,0x3a,0x22,0x01,0xf0,0x77,0x4a,0x63,0xce,0x6f,0xa6,0xf5,0x38,0xaf,0xd8,0xc7,0x78,0x5a,0x9c,0x28,0xe4,0xed,0xc6,0xe7,0xfa,0x00,0x94,0x1f,0x60 },
{ 0x15,0x4d,0xb9,0xd8,0xb9,0x54,0x56,0xc2,0x13,0x17,0x41,0x9a,0xab,0x50,0xa0,0x2c,0x05,0xf2,0x65,0x46,0x4f,0xa4,0x7a,0xdb,0x35,0x90,0x4a,0xc3,0x41,0x0e,0xc5,0x7c },
{ 0x4f,0xd9,0x48,0x2d,0x78,0x66,0xe6,0xf6,0x4b,0x8d,0x52,0xe0,0x70,0x18,0x10,0xde,0x3e,0x22,0x24,0x41,0xcf,0xa7,0x4c,0x44,0x99,0x75,0x32,0x39,0x87,0x88,0x35,0x7b },
{ 0x7c,0xd6,0x13,0x44,0xfc,0xae,0x17,0x11,0x6f,0xe1,0x75,0xcc,0xf8,0xcc,0x97,0xe9,0x0e,0xf9,0x68,0x9c,0xc4,0x0f,0xb3,0x42,0x71,0x72,0xb4,0x54,0x46,0xa3,0xdf,0x1f },
{ 0x40,0xe9,0x84,0x24,0x68,0x8a,0x55,0x8e,0x98,0xaa,0xc2,0xdd,0xb6,0xd1,0xd2,0x35,0xcf,0x93,0x3b,0xc4,0xa1,0x70,0xf5,0x20,0x45,0x8a,0xbb,0x0c,0x9d,0xec,0xe9,0x78 },
{ 0xdf,0x44,0xdf,0x54,0x1f,0x74,0x97,0x0e,0x53,0xc9,0x53,0x2c,0x5e,0x85,0x7a,0xbd,0xb0,0xde,0xe8,0xca,0x54,0x6b,0xda,0xcd,0xbe,0x9a,0x33,0x8d,0xd6,0x98,0x50,0x0b },
{ 0x24,0x67,0xfa,0x57,0x94,0x65,0x94,0xfd,0xf5,0x97,0xc6,0xc2,0x59,0xb7,0xb8,0x94,0xdc,0xc7,0x1f,0xa0,0x7a,0x3d,0x4f,0x83,0xc1,0xa7,0xfc,0x11,0x4a,0x35,0xdf,0x37 },
{ 0x2b,0x9d,0x2a,0x7f,0x1a,0x41,0x0b,0xe2,0x9c,0xb8,0x06,0xeb,0xa6,0xb2,0x78,0x8e,0x70,0xbd,0x28,0xa7,0x49,0x5d,0x22,0x03,0x03,0x9e,0xd5,0xd0,0x3b,0xec,0x8d,0x39 },
{ 0x7a,0xaf,0x4c,0xa9,0x70,0xc6,0x2a,0xe5,0xc9,0xdd,0xc5,0x66,0xda,0x6b,0x07,0x48,0xee,0xf3,0xab,0x66,0xa3,0x46,0xd6,0xd1,0x5b,0xcd,0xd0,0xbf,0xe6,0x63,0x5e,0x15 },
{ 0xa9,0xb7,0xa6,0x71,0x28,0x68,0x15,0xb9,0xa6,0x7f,0xdf,0x5c,0x1a,0x05,0xdd,0x5f,0x91,0x22,0x8f,0xc0,0xc3,0x3f,0xa9,0x49,0x90,0xec,0x5a,0x1e,0xe8,0x77,0x46,0x37 },
{ 0xf1,0x36,0x52,0xf6,0xdb,0x37,0x58,0x59,0xba,0x6f,0xf8,0xd0,0x5c,0x97,0xfd,0x73,0xcb,0x6c,0x5a,0x5e,0x66,0xc7,0xc9,0x7d,0xb4,0x68,0xbb,0x1b,0x32,0x1f,0x22,0x05 },
{ 0xdf,0xef,0x21,0x2b,0x7b,0x1b,0xd7,0xeb,0xca,0x97,0x88,0x1a,0x2a,0x39,0xbf,0xc4,0x72,0xdc,0x16,0x63,0x20,0x30,0xe7,0xe7,0x24,0x2e,0x23,0xbc,0x91,0x66,0x61,0x33 },
{ 0xa9,0x4b,0x20,0x43,0xcc,0x47,0x52,0x5b,0x9f,0xf8,0x7f,0x5a,0x19,0x7f,0xe0,0xb6,0xbf,0xe6,0x50,0x73,0x63,0x9a,0xef,0x3d,0x40,0x9f,0x4e,0x1b,0xb4,0x09,0xf2,0x5a },
{ 0x5d,0xdd,0x74,0x54,0x84,0x17,0xa6,0xe7,0xfa,0x81,0xd2,0x46,0xc8,0xc5,0x97,0x07,0x9d,0xf6,0x35,0xc1,0xa6,0x67,0xa1,0x91,0x6d,0x64,0x90,0xe4,0x17,0xd0,0x69,0x46 },
{ 0xe5,0x01,0xb2,0x2b,0xbf,0x83,0xfc,0xed,0x61,0x72,0x30,0x97,0xb2,0x45,0xa2,0x6e,0x09,0x67,0x79,0xe2,0xa3,0xe2,0x5b,0x19,0x47,0x4a,0x33,0x17,0xe9,0x2e,0x05,0x1c },
{ 0x9c,0x0d,0x8c,0x7f,0x0f,0x0a,0x02,0xcb,0x2d,0x64,0xbd,0x61,0x00,0xe5,0xf7,0x38,0x38,0x47,0x0f,0x3e,0x7b,0xd2,0xf1,0x02,0x07,0xa7,0xf5,0xf7,0x84,0x77,0x30,0x2c },
{ 0x4c,0x7d,0x7a,0xfa,0xfd,0x05,0x87,0x84,0x41,0x3a,0x59,0xbc,0xee,0x5c,0x15,0x6b,0x89,0xc5,0x53,0x4b,0x63,0x47,0xae,0x16,0x68,0x2e,0xd8,0xba,0x82,0x79,0xe1,0x11 },
{ 0x51,0x6e,0x95,0x14,0xca,0x55,0x2e,0x4b,0x35,0x06,0x3b,0x4d,0xf9,0xfb,0x25,0x8f,0xc5,0xbe,0x94,0xf1,0xf2,0x3b,0x18,0x43,0x47,0x29,0x74,0x1a,0xf9,0x77,0x62,0x5c },
{ 0x6c,0x26,0x58,0x53,0x8d,0x12,0xc6,0xe0,0x5c,0xae,0xa5,0x55,0x48,0x1d,0x3a,0xf3,0xe0,0x53,0x2e,0xb8,0xdd,0x40,0x00,0x7b,0x6e,0x8f,0xdc,0x4a,0x7b,0x33,0x59,0x31 },
{ 0x96,0x1c,0xba,0x05,0xd5,0x1a,0xce,0x8e,0xab,0xcd,0x42,0x57,0x43,0xd1,0xa1,0x66,0xce,0x26,0xb0,0x64,0x4a,0xa4,0xa7,0xc0,0x85,0xc3,0x26,0x3c,0xd2,0xbd,0x82,0x26 },
{ 0x8b,0xe9,0x16,0x2a,0x7e,0x07,0x62,0xc9,0x1f,0x9e,0xa9,0x4f,0x77,0xd8,0xab,0x9f,0x29,0x9e,0xdc,0x2a,0x39,0x23,0x5c,0x05,0x76,0x68,0xd1,0x27,0x7c,0x1b,0x88,0x45 },
{ 0x96,0x71,0x4f,0x71,0x31,0x34,0x71,0xfc,0x59,0x3c,0x8a,0x5a,0xd6,0xe6,0xd7,0x13,0xe4,0x43,0xb2,0x39,0x23,0xdb,0xe9,0x51,0x8f,0x25,0x46,0xcb,0x7a,0x29,0x76,0x54 },
{ 0x6b,0x29,0xfe,0xdb,0x44,0x22,0x72,0xad,0x86,0x2d,0x8a,0x7d,0xc5,0xd2,0xe2,0x79,0x86,0x56,0xce,0xc4,0x39,0x0a,0x21,0xd4,0x72,0xf8,0x67,0x05,0x50,0x83,0x5d,0x08 },
{ 0xc9,0xf8,0xd9,0x8c,0xe6,0x01,0x22,0xb7,0xf3,0x98,0x2e,0x4e,0x06,0x13,0x43,0x42,0xfa,0xb3,0x62,0x15,0xa6,0xb6,0x94,0xd9,0x54,0x86,0xd4,0x37,0x16,0x26,0xef,0x4e },
{ 0x3f,0x75,0xa9,0xa1,0xcf,0x61,0x9d,0x15,0x1f,0xcd,0x9c,0x00,0x6d,0x87,0x0f,0x53,0x43,0x62,0x98,0x08,0x54,0x64,0x9d,0x65,0x88,0xe2,0x6a,0x11,0xa9,0xd8,0x8a,0x45 },
{ 0xd8,0x95,0x4b,0x57,0xf3,0x13,0x15,0x78,0x01,0x2a,0xe6,0xc2,0x53,0xd5,0x98,0x9b,0xc5,0xac,0xa8,0xfd,0x4f,0xa4,0xcb,0x2b,0xf8,0x78,0xdb,0x24,0x62,0xe6,0x5b,0x4d },
{ 0xdd,0xb9,0xbc,0xcf,0xe1,0x09,0x96,0xf0,0x00,0x9c,0x7b,0xc3,0x25,0xc2,0x09,0xc3,0x42,0x6b,0xcc,0x47,0x5f,0x19,0xc7,0xa0,0x9c,0x3f,0xaa,0xec,0xbd,0x5a,0x76,0x06 },
{ 0x6f,0x7a,0x97,0x6d,0x24,0xd0,0x5f,0x2f,0xd9,0x5c,0xfb,0x03,0x6b,0x90,0xca,0x47,0x61,0x12,0x61,0xa2,0xed,0xc3,0x42,0xa9,0x1f,0x2d,0x99,0x72,0x32,0x8c,0x65,0x08 },
{ 0x03,0x4a,0x56,0x4b,0xb1,0xeb,0x9a,0x51,0x30,0x58,0xb1,0x6a,0x69,0x5c,0xdf,0xfe,0xe5,0x76,0x31,0x03,0x87,0xd1,0x26,0x9f,0x36,0x52,0x07,0xb3,0xc1,0xf5,0x4c,0x6d },
{ 0x98,0xe2,0x77,0x13,0x92,0xb3,0xf6,0xd6,0x4b,0x2f,0xae,0xb1,0x07,0xc3,0x04,0x3a,0x0d,0x51,0x61,0x70,0x9d,0x1b,0xed,0x0c,0xd7,0x45,0x37,0xab,0x89,0xa3,0xeb,0x1d },
{ 0xd4,0x60,0xaa,0x8e,0xe3,0xd5,0x07,0xa1,0x21,0x5e,0x28,0xce,0x9a,0x44,0xd6,0x39,0x4b,0xf8,0xf9,0x46,0x00,0x0e,0xa5,0x46,0xe1,0x28,0xf5,0x52,0x6c,0xa2,0x98,0x57 },
{ 0xec,0xe6,0x64,0x3b,0x8f,0xa8,0x3b,0x94,0x82,0xf3,0x00,0x12,0x7f,0xb0,0xd9,0xd6,0xba,0x4f,0xba,0xf4,0x06,0x16,0xcf,0x8e,0x28,0x46,0x2b,0x96,0x4a,0xd2,0xec,0x0f },
{ 0x47,0x86,0x58,0xac,0xb7,0x4e,0x51,0x85,0x39,0xe8,0x8b,0xd9,0x01,0x42,0x8a,0x04,0x6a,0x53,0xc1,0x53,0x14,0xa8,0xe7,0x65,0xe5,0x76,0x78,0xc5,0x2a,0x14,0xa5,0x00 },
{ 0xe1,0xd0,0xe5,0xd3,0xf2,0xb1,0x5c,0x68,0x10,0x1a,0x6f,0x2b,0x6a,0xe1,0xa4,0x65,0x32,0x14,0x0f,0x61,0x5f,0xe7,0xf9,0xd6,0x1e,0xcf,0x8d,0xc4,0xfe,0xc0,0xf1,0x56 },
{ 0x96,0x41,0xd5,0x43,0xaf,0x0f,0x36,0x58,0xfe,0x22,0x09,0x85,0x2f,0xf0,0x61,0xe1,0x3e,0x63,0x3d,0xfb,0xc5,0x3f,0xb7,0x16,0x40,0xf4,0x2b,0x15,0x8c,0xd8,0x2f,0x70 },
{ 0x34,0x1b,0xab,0x95,0x71,0x61,0x27,0xfb,0xa7,0x05,0x48,0xa2,0xee,0x01,0xfa,0x55,0x43,0x2b,0x8c,0x6c,0x16,0x50,0x58,0x10,0x3f,0xf6,0x95,0xa2,0xd8,0x18,0x1d,0x62 },
{ 0x0b,0x81,0x8d,0x2b,0xca,0x10,0x6b,0xcb,0x0e,0x2b,0x08,0x1d,0x62,0xf1,0x70,0x0a,0x20,0xf7,0xa2,0xca,0x0e,0x0f,0x7d,0x0a,0x67,0x8d,0x0d,0x45,0xca,0xe3,0xff,0x57 },
{ 0xdb,0xe5,0x37,0xd6,0x40,0x25,0xb8,0xcb,0x44,0x36,0x3b,0xab,0x65,0xe9,0x83,0x0b,0x77,0x7c,0x73,0x84,0x45,0x4e,0x3c,0x27,0x24,0xba,0xee,0xe3,0x1f,0xd2,0x3c,0x53 },
{ 0x66,0x6f,0x57,0x9d,0x5c,0xd0,0xe8,0x63,0xdd,0xe5,0x1e,0x7f,0x9e,0x7b,0xb2,0x13,0x43,0x74,0x6e,0x44,0xef,0x29,0x5d,0x24,0x9d,0x7f,0x12,0x3f,0xaa,0xec,0xa3,0x1c },
{ 0x85,0xa0,0xce,0x79,0x20,0x90,0x28,0x71,0xa6,0x4c,0xf6,0xc8,0xbe,0x20,0x99,0x1d,0x6f,0x6c,0xd8,0xc1,0x8c,0x69,0xc9,0xee,0x66,0x33,0x40,0x0b,0xac,0x50,0x1e,0x7c },
{ 0x68,0xb9,0xb3,0x31,0x4c,0x21,0xdc,0xef,0x16,0x0b,0x37,0x68,0x71,0x56,0x36,0xe8,0xb6,0x8e,0xc1,0x11,0x22,0x67,0x6d,0x58,0xc3,0xf4,0xc6,0x28,0x41,0xd8,0x9d,0x0d },
{ 0xa3,0xaf,0x80,0x58,0x85,0xd9,0x8b,0xbf,0x39,0x35,0xee,0x9d,0xe9,0xbd,0x52,0x91,0xc3,0xbe,0xce,0xf2,0xcc,0x1f,0xaf,0xf7,0x16,0xfa,0x86,0x27,0xa8,0xa5,0xea,0x57 },
{ 0x1c,0x5c,0x63,0xce,0x46,0xd2,0x0e,0x94,0xe4,0x34,0x81,0xa7,0xfa,0x84,0xcd,0xf0,0x75,0x60,0x98,0x17,0xf2,0x12,0x71,0x8e,0xdf,0x05,0xe6,0xba,0x87,0x94,0xa2,0x6e },
{ 0x06,0xac,0x61,0x8b,0x0f,0x33,0x49,0xb5,0x60,0xf9,0x47,0x1f,0x02,0x4f,0x0e,0x65,0x0d,0x99,0x5a,0x98,0x1a,0x99,0x97,0xfe,0xae,0x4b,0xa4,0xa5,0x9b,0x4f,0x60,0x77 },
{ 0xa2,0x99,0xa1,0x1a,0x0b,0x9d,0x18,0x41,0x97,0xf3,0x66,0xd7,0xb1,0x12,0xea,0xdf,0x8b,0x5d,0x45,0xf4,0x5e,0x63,0x14,0xc2,0x12,0x92,0x1e,0x1f,0x75,0xd0,0xb1,0x2a },
{ 0xba,0x8b,0x9c,0x6b,0x38,0x14,0xed,0x35,0xb6,0x02,0x27,0x09,0x5b,0x69,0xdf,0x27,0x6a,0x30,0xae,0x33,0xa0,0x46,0x00,0x57,0x92,0x34,0x2c,0x5a,0xc2,0x4d,0x64,0x56 },
{ 0xe4,0xc8,0x6a,0x69,0xe5,0xce,0xbf,0xc6,0xaa,0xd3,0x2c,0x99,0x44,0xe8,0x9e,0xc4,0xbc,0x0e,0x85,0xc2,0x81,0x90,0x38,0x3f,0x89,0xdf,0xd1,0xe6,0x41,0xfe,0x28,0x72 },
{ 0xa1,0xc9,0x7a,0xf2,0xbf,0x11,0xcb,0x29,0x4a,0xe5,0xa7,0x91,0xfd,0x99,0xa1,0x66,0x6f,0xed,0x1d,0xd1,0xa3,0x9f,0x73,0x7c,0xf4,0x75,0x81,0xcf,0x4e,0x69,0x3f,0x55 },
{ 0x25,0x99,0xeb,0xe6,0x53,0xf1,0x5e,0x06,0x38,0xf2,0xa4,0xd2,0xb3,0x46,0x30,0xad,0x8f,0x50,0xf4,0x7b,0x95,0x16,0xa5,0x4a,0xda,0xc3,0xaa,0x59,0x1f,0x94,0x3e,0x1e },
{ 0x44,0x0d,0xe8,0x15,0x8b,0xf2,0xf2,0x5a,0xe6,0xb5,0x74,0x30,0xe4,0x7a,0x78,0x1a,0x57,0x6c,0xf1,0xda,0x38,0xfa,0x2d,0x01,0xf6,0x99,0xc2,0x60,0x82,0x5b,0xf7,0x45 },
{ 0xe1,0x08,0xa0,0x7b,0xa7,0xf1,0x67,0xf9,0xc3,0x7b,0x5f,0x58,0xf2,0xc5,0x79,0x5e,0x0d,0x1f,0xa5,0x81,0x12,0x1b,0x88,0xa3,0xc0,0x54,0x5f,0x5d,0xc5,0x6a,0xe6,0x2f },
{ 0x2c,0x82,0xdd,0x04,0xb4,0xba,0xe2,0x68,0x9a,0xf4,0x90,0x88,0xe0,0xb9,0x5e,0x4d,0x90,0x52,0x42,0x74,0xdf,0x81,0xa6,0x97,0x45,0x44,0xac,0xaa,0xce,0x0c,0xa5,0x7f },
{ 0xce,0x8f,0x52,0xec,0xb3,0x1b,0xd4,0x43,0xfe,0x8a,0xa4,0x4a,0x49,0x1c,0x3a,0x3a,0x16,0x25,0x11,0xbb,0xd8,0x78,0x8a,0xab,0xf8,0x6a,0x6c,0x13,0xf3,0x07,0xeb,0x27 },
{ 0xbd,0x14,0xbf,0x74,0x8d,0x71,0x78,0x9d,0x59,0xbe,0x89,0x27,0xb6,0x7f,0x77,0xe5,0x38,0xfb,0x13,0x9f,0x1f,0x74,0x91,0x3a,0xd7,0x58,0x98,0x06,0x53,0x80,0xcd,0x2f },
{ 0x71,0xd5,0x96,0xaf,0xb9,0x34,0x30,0x00,0x59,0x7c,0x6e,0x2b,0x9b,0xf6,0xc5,0x0a,0x99,0x62,0x01,0xf4,0x4d,0xb5,0x7e,0x22,0x59,0x87,0x3b,0x76,0x9b,0x58,0x61,0x6c },
{ 0x80,0x12,0xaa,0xa6,0xeb,0x0c,0x15,0xd0,0x4d,0x94,0x89,0x6c,0xcd,0x98,0x56,0xc4,0xa4,0x59,0x58,0x36,0xf3,0xf0,0x11,0xad,0x8a,0xad,0xe3,0xc8,0x21,0x99,0x00,0x79 },
{ 0xe3,0xc6,0x3b,0x99,0x89,0x4a,0xfc,0x06,0xb9,0x78,0xd5,0x2e,0xac,0x9a,0xdf,0xf4,0x50,0x63,0xa9,0xf3,0x64,0x90,0xd5,0x40,0x92,0xc4,0x06,0x8f,0x42,0x51,0xb1,0x4b },
{ 0xf0,0x5d,0xb2,0x1e,0x63,0x30,0x0b,0x8a,0x42,0x87,0x02,0x24,0xda,0x86,0xe7,0xc2,0x0a,0xc4,0xe7,0x59,0xa3,0x36,0xb0,0x30,0xdc,0x4b,0x54,0xef,0x24,0x72,0xb3,0x11 },
{ 0x4d,0xd4,0x0f,0x13,0xa8,0xe9,0x7b,0x15,0x7b,0xa7,0xa5,0x13,0xb4,0x82,0xb4,0xb5,0xd8,0xc0,0x56,0x46,0x87,0x32,0x9d,0x3d,0x87,0x82,0xf9,0xce,0x6a,0xfa,0x71,0x33 },
{ 0x56,0x67,0x1a,0xf2,0x7b,0x04,0xb5,0x19,0x24,0xa4,0x54,0xf4,0xc2,0xd8,0x17,0xf7,0x27,0x91,0xa3,0x35,0x4e,0x5e,0x57,0x75,0x15,0x34,0x00,0xdd,0x76,0x88,0x17,0x34 },
{ 0xa2,0xce,0xa7,0xb2,0x7a,0xa9,0x52,0x62,0x9b,0x69,0x00,0x5d,0xbf,0x38,0x6d,0xb0,0xc6,0x85,0x46,0x57,0xdd,0xbd,0x8a,0xb2,0xb1,0x1e,0xbe,0x3a,0xbd,0xa6,0xa0,0x6d },
{ 0x93,0xae,0x77,0x0b,0xdf,0x35,0x43,0x3e,0x69,0x85,0x2a,0xe3,0x58,0x26,0x38,0xd4,0xaf,0x70,0x6a,0xda,0xd2,0xc4,0x2b,0xfb,0x4e,0xac,0x41,0x2a,0x41,0xbe,0x70,0x2d },
{ 0xcd,0x0e,0x22,0x87,0x96,0x54,0xda,0x74,0x31,0xdc,0x13,0x84,0x5c,0xa1,0x47,0xef,0xb6,0x0b,0xb6,0x02,0xd5,0xdd,0x20,0x84,0xdb,0x82,0x03,0x00,0xd5,0xde,0xdf,0x70 },
{ 0x3b,0x03,0xb4,0x60,0x18,0xdb,0x82,0x06,0xab,0xad,0x4e,0x75,0x65,0x32,0x24,0x19,0x41,0xb1,0xe4,0xba,0xac,0xfa,0x0b,0x54,0x33,0xd2,0xf4,0x45,0xda,0xcd,0x8e,0x0c },
{ 0xe0,0x80,0x2b,0x66,0x7f,0x3d,0x6f,0xc7,0xd1,0xb1,0x9f,0xb5,0x4a,0x22,0x64,0xcb,0xa1,0x08,0x33,0x3d,0x9f,0x40,0xe8,0x92,0xb4,0x27,0xd6,0x38,0x4e,0xef,0x32,0x46 },
{ 0xc3,0xf9,0xc5,0x0b,0xe1,0xac,0x60,0xde,0x38,0x22,0x20,0x65,0x4d,0x76,0x93,0xf7,0x52,0x6a,0xd1,0x47,0xab,0xa2,0x0f,0xe9,0xba,0x49,0x85,0xbe,0xcc,0xab,0xb0,0x03 },
{ 0xd4,0x41,0xc4,0x1a,0x93,0x6c,0x97,0xa2,0x9f,0x7f,0x82,0x41,0x4e,0xe1,0x72,0xd5,0x3a,0xc7,0x5f,0xf8,0x0d,0x12,0x48,0x59,0x3a,0xdc,0x6b,0x94,0x69,0x87,0x8b,0x44 },
{ 0x5a,0x78,0xb7,0x94,0xb6,0x65,0x13,0x81,0x32,0x13,0x54,0xda,0x4c,0xaa,0x29,0x7b,0x46,0x5a,0x48,0xc6,0x76,0xea,0x44,0x13,0x51,0x2c,0xf8,0xf2,0xab,0x6f,0xcd,0x65 },
{ 0xec,0xa6,0xe6,0x37,0x3f,0x3e,0xd4,0x73,0xfd,0x74,0xee,0xdf,0x23,0x68,0x05,0xe2,0xc9,0x6f,0x85,0x84,0xa7,0x92,0x07,0x37,0xb9,0xf6,0xcb,0x7b,0xb4,0x93,0xea,0x0f },
{ 0xd7,0xe4,0x1b,0x6b,0x6f,0xf4,0xd8,0x13,0x02,0x39,0xd6,0x0e,0xfc,0xcc,0xc6,0xf0,0xc5,0x27,0x03,0xf4,0xe1,0x38,0x0f,0x50,0xff,0x40,0x3d,0xbc,0x52,0x27,0x6a,0x2b },
{ 0xc0,0xab,0x0a,0x68,0x81,0x3c,0x0a,0xde,0xe6,0x19,0x39,0x57,0x52,0xe9,0x44,0xbe,0x3d,0xa7,0x69,0x68,0x2c,0x2c,0xd8,0xb4,0x3d,0x40,0x2c,0xba,0xcb,0xd5,0x17,0x3e },
{ 0xce,0x9d,0xce,0x7d,0xf7,0x7c,0x46,0x97,0xf8,0x07,0x00,0xde,0x35,0x97,0x26,0x72,0x4e,0xc2,0xdc,0x3c,0xfc,0xe5,0x22,0xe1,0x98,0x2f,0x4a,0xbd,0x6a,0x7b,0x1f,0x45 },
{ 0x3a,0xd8,0xb5,0x92,0xe9,0x3f,0x43,0x48,0xad,0x2c,0x45,0x0c,0xb0,0x22,0xd6,0xce,0x0a,0x34,0x74,0xa1,0x66,0xff,0x89,0xa4,0x19,0xad,0xc2,0x42,0x53,0xf6,0x63,0x7e },
{ 0xa4,0x75,0xd7,0x0c,0x8b,0xdb,0x2f,0x5c,0x3d,0xb0,0x7e,0x42,0x9c,0x1c,0x25,0xa3,0x24,0xc2,0x11,0xa3,0x55,0x94,0xfd,0x93,0xbf,0xee,0x42,0xaa,0x85,0x22,0x42,0x5e },
{ 0x22,0xec,0xc4,0x21,0xa4,0xa0,0x59,0xe8,0x60,0x4b,0xc3,0xec,0xfb,0x51,0x46,0xf3,0x3a,0x75,0xc3,0xa7,0x85,0x6a,0xcd,0xb9,0x47,0x06,0x88,0x2f,0xfb,0x61,0xa5,0x3e },
{ 0xea,0x97,0xda,0xed,0xbc,0xbf,0xa4,0x11,0xde,0x8d,0x94,0x43,0xac,0x4a,0xfd,0x36,0x65,0xa8,0xa3,0x7e,0x1d,0x88,0xaa,0x24,0xd3,0x23,0x9d,0x83,0x06,0x8f,0x37,0x06 },
{ 0xf0,0x5b,0x30,0x54,0xe6,0x01,0x23,0xa7,0x7e,0x5e,0xe3,0xcf,0x83,0x15,0x68,0x82,0x47,0x14,0x0c,0xa5,0xfe,0x4a,0x44,0xd4,0x24,0xa0,0xdc,0xa3,0x70,0xfd,0xce,0x43 },
{ 0x40,0x02,0xc7,0x81,0x55,0x9e,0x49,0x06,0x72,0x9d,0x14,0x14,0x18,0x66,0xa2,0xff,0x67,0x82,0x72,0x84,0xcd,0x0c,0x3f,0x53,0xf8,0x07,0x46,0x0e,0x94,0x0e,0x6c,0x1a },
{ 0xec,0xe4,0xa3,0xe4,0x80,0x42,0x30,0x19,0x50,0x4f,0xaa,0xb1,0xd0,0x4b,0xb6,0x19,0x5c,0xd0,0x6a,0x98,0xf7,0xa0,0x32,0xfb,0x59,0x40,0xec,0x40,0xde,0xad,0xb0,0x72 },
{ 0x7c,0xe6,0x0b,0x1e,0xdd,0xb7,0xb7,0x38,0xd7,0xa2,0xb8,0x80,0xc5,0xa5,0x74,0x86,0xb8,0x64,0xd1,0x2e,0x96,0x6c,0x19,0x3a,0x73,0x6f,0x0c,0x40,0x69,0xfc,0x15,0x1b },
{ 0x4c,0x01,0xc9,0xd2,0x10,0xbd,0xbc,0x1f,0xff,0x99,0x65,0xd6,0x05,0xb4,0x0a,0xc2,0x25,0x49,0x85,0x4d,0x21,0x14,0x4a,0x0e,0x36,0xe6,0xb3,0x1b,0x4f,0x60,0xf0,0x11 },
{ 0x5e,0x70,0x53,0x3a,0x47,0xa3,0x5d,0xb0,0x1a,0xd9,0xb7,0xf7,0x4f,0xa2,0xa2,0x2e,0xce,0x8b,0x6d,0xfe,0x9e,0x31,0x38,0x8e,0xff,0xfb,0x21,0x6c,0x50,0x2b,0xed,0x24 },
{ 0x9e,0x85,0xc5,0xb0,0x06,0xdc,0xf5,0x7e,0xb2,0x78,0xc2,0xec,0x3c,0xab,0x55,0xaf,0x0e,0x6f,0xd5,0xf4,0xf5,0xcf,0x8b,0x57,0x19,0x7b,0x1a,0xbf,0x8a,0x28,0x30,0x24 },
{ 0xb4,0x5e,0x7a,0x6a,0x8d,0xa4,0x05,0x7b,0x85,0xf4,0x54,0x06,0xa5,0x9d,0x97,0x6d,0x1c,0x8c,0x6b,0x32,0x82,0x4f,0xba,0x18,0x1d,0xf9,0xc3,0x63,0xbe,0x49,0x62,0x46 },
{ 0x0e,0xb7,0xdf,0x70,0x5c,0x6e,0xa4,0x80,0x4d,0x78,0x18,0x76,0x62,0x0e,0xcc,0x64,0x3e,0x1f,0x15,0x34,0x2f,0x3d,0x51,0x99,0x47,0x5d,0x28,0x9a,0xac,0x89,0x37,0x5b },
{ 0x10,0x38,0x87,0x2a,0xbc,0xee,0x1d,0x94,0xbc,0x8b,0xe4,0xcf,0x4b,0xb7,0x54,0xa2,0xea,0xa7,0xa0,0x8d,0xd1,0x0d,0x0d,0xe1,0x4d,0x18,0x1b,0xa5,0xc2,0xba,0xb8,0x74 },
{ 0x54,0x00,0x6a,0x1f,0x61,0x47,0x62,0x81,0x67,0x99,0xc0,0xa3,0xfc,0x00,0xf4,0x71,0xc6,0x68,0x24,0xe2,0x8a,0x36,0x33,0x09,0xc1,0x88,0x0a,0xa2,0xc0,0x3c,0x04,0x04 },
{ 0xef,0x3e,0xe6,0x2e,0x18,0x00,0x3f,0xc8,0x66,0x08,0xf8,0xe5,0xa9,0xc5,0x25,0x8a,0x1a,0x92,0x43,0x93,0x96,0x88,0xf4,0x8e,0xc9,0xa9,0x81,0xa6,0x2d,0x75,0x96,0x69 },
{ 0x95,0x3d,0xff,0x40,0x08,0x62,0xe7,0x14,0x0c,0xac,0x7d,0x9b,0xcb,0x47,0xd9,0x20,0x62,0x7b,0x4b,0xd9,0x91,0x3b,0x4b,0x2b,0x0e,0x1c,0xf1,0x10,0xbe,0x53,0xd4,0x42 },
{ 0xc6,0x93,0xdb,0xf7,0x70,0xa3,0xd0,0xd8,0x41,0x2e,0xa0,0xa0,0x22,0xa8,0x75,0x2b,0xeb,0xf4,0xbd,0x76,0x73,0x03,0xb1,0x8e,0x11,0xb9,0xd1,0x6d,0xea,0xe6,0x3b,0x01 },
{ 0x0e,0xd2,0x64,0xa5,0x36,0x8f,0xf8,0xed,0x0a,0x1c,0xcd,0x28,0x58,0xf6,0xdb,0xfd,0x8a,0x88,0x12,0x90,0x37,0x9e,0x9d,0xa2,0x68,0xba,0xc1,0xa6,0x08,0x8b,0xe2,0x08 },
{ 0xa4,0x86,0x04,0x50,0x26,0xba,0x84,0x28,0xaa,0x8c,0x34,0xa9,0x36,0x56,0x24,0x6c,0xd8,0x78,0x18,0x7a,0x38,0x9f,0x1a,0x56,0xe5,0xf1,0x85,0x53,0x90,0xe2,0xc8,0x7d },
{ 0xd1,0x34,0x09,0x31,0xc2,0xcd,0xed,0xa1,0xd7,0xf2,0x9b,0x15,0xb6,0xf2,0xa4,0xc3,0x6d,0xd4,0x36,0x15,0xf6,0xd0,0x13,0x55,0x03,0xef,0xd2,0x27,0xf8,0xf9,0x4b,0x72 },
{ 0x44,0x39,0x8c,0x0f,0x24,0x53,0xc3,0x57,0x46,0x99,0x0a,0xac,0x8d,0xc5,0xe5,0x35,0xd7,0x30,0x93,0x3c,0xc9,0x27,0x0c,0x88,0x2e,0xa3,0x70,0xf7,0x13,0xd0,0xbc,0x07 },
{ 0xcb,0x87,0x51,0xb4,0x6c,0x54,0xd0,0x67,0x17,0x91,0x11,0x34,0xda,0xb5,0x33,0x1e,0x4d,0xfb,0x46,0xfa,0x45,0xef,0xd1,0x99,0xe0,0xef,0xd3,0xf2,0xac,0x5a,0x3d,0x12 },
{ 0x34,0x0f,0x84,0x28,0x12,0x04,0x11,0xa2,0x63,0x67,0x1d,0x2e,0x63,0x67,0x16,0xc0,0x52,0xec,0xd2,0x46,0xcd,0x72,0x54,0x44,0x40,0x31,0x38,0x2a,0x16,0x60,0x26,0x59 },
{ 0x34,0x36,0x13,0x10,0x2a,0x94,0xe5,0xf0,0x03,0x12,0x62,0x19,0x5d,0xa2,0x63,0x05,0xc6,0xbb,0x24,0xbb,0x3a,0x0c,0xdc,0x5d,0x53,0x03,0x7f,0x04,0xdc,0xc0,0xcf,0x58 },
{ 0xbf,0x10,0xab,0xf9,0x35,0xd2,0x94,0xb5,0xe2,0x42,0x16,0xb4,0x23,0x88,0x25,0x1a,0x23,0x16,0x60,0xff,0xc8,0xd5,0x03,0xbf,0xbf,0xd6,0xc1,0xb7,0xda,0xe9,0xa6,0x6b },
{ 0x41,0xda,0x96,0x26,0x8d,0x7f,0x7a,0x85,0x1c,0xaa,0x4d,0x3a,0xa1,0x7d,0x51,0x50,0x9a,0x77,0xb7,0xc8,0xcc,0x7e,0x40,0x41,0xb1,0xfc,0x83,0x5d,0xc3,0x36,0xf6,0x1a },
{ 0x73,0x19,0xa1,0x81,0x1c,0x8f,0x4e,0xc9,0x70,0x10,0x44,0xc8,0xc3,0x5a,0x1b,0x84,0xf5,0x4a,0x93,0x75,0x69,0xb2,0x21,0x69,0x12,0x36,0x6f,0x08,0xb3,0x15,0xd4,0x7f },
{ 0x91,0x63,0x55,0xeb,0x1d,0x6e,0xb0,0xdd,0xd6,0x00,0xac,0x37,0xe2,0xe5,0x99,0x6b,0x85,0x2e,0x10,0x8b,0xd1,0x41,0x0d,0x85,0xe4,0xd2,0x1f,0x2c,0x3e,0xb8,0x4b,0x37 },
{ 0xbf,0x33,0xe4,0xa4,0x34,0x88,0x86,0xa4,0xef,0x75,0x41,0x74,0xfa,0x5c,0x2b,0xbf,0x51,0xc0,0xed,0x2a,0x08,0x1f,0x1d,0xa3,0x20,0x5d,0xd9,0x9e,0xc3,0x7e,0x2e,0x0a },
{ 0xae,0x20,0x8c,0x37,0xb8,0xd0,0x76,0x45,0x56,0x41,0x80,0xc6,0xae,0xa8,0x71,0x09,0x60,0x8f,0x20,0x58,0x9a,0x19,0x46,0x6d,0xc3,0xb4,0x32,0x86,0x05,0xa8,0x89,0x41 },
{ 0x78,0x31,0xc3,0xdb,0x55,0xef,0x27,0xb3,0x1d,0x04,0xd5,0x7c,0x06,0xa9,0xf8,0x9b,0x5e,0x5a,0xb9,0x00,0x28,0xe6,0xf9,0x5b,0x5e,0xaa,0xe9,0x9c,0x3f,0xce,0xf7,0x0e },
{ 0x6d,0x33,0x2c,0xc7,0xb8,0xff,0x4a,0x5c,0xff,0xf7,0xe8,0xff,0x4c,0xb8,0x89,0x97,0x28,0x29,0x21,0xd0,0xe5,0xfe,0xb2,0x90,0x54,0x8c,0xed,0x81,0x4f,0xed,0x69,0x25 },
{ 0x16,0x59,0x74,0x83,0xd8,0x34,0x92,0xd5,0x0b,0x54,0x8a,0x06,0xd1,0x5d,0x8b,0x5c,0xdf,0xc0,0x09,0x07,0x1d,0x0f,0x7e,0xd9,0x3a,0x5d,0x2b,0x86,0xca,0x23,0xe0,0x52 },
{ 0x0e,0xc1,0xce,0x0f,0x6e,0x8d,0x7b,0x30,0x75,0x69,0x1b,0xf4,0x87,0x2f,0x0c,0x6d,0x6d,0xc4,0x11,0x43,0xfd,0x3b,0xdb,0xdf,0x43,0x9a,0xda,0xc6,0x50,0xf9,0x84,0x03 },
{ 0xbd,0x1b,0x2a,0x42,0xd3,0xa6,0x7e,0x51,0xe2,0xaa,0x68,0x77,0xdb,0x64,0xa7,0x70,0x0c,0x8d,0xf2,0x33,0xe1,0xdf,0x6d,0x8a,0xaf,0x81,0xe8,0x50,0xca,0x12,0xd3,0x1a },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
{ 0xbd,0x1b,0x2a,0x42,0xd3,0xa6,0x7e,0x51,0xe2,0xaa,0x68,0x77,0xdb,0x64,0xa7,0x70,0x0c,0x8d,0xf2,0x33,0xe1,0xdf,0x6d,0x8a,0xaf,0x81,0xe8,0x50,0xca,0x12,0xd3,0x1a },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
{ 0xbd,0x1b,0x2a,0x42,0xd3,0xa6,0x7e,0x51,0xe2,0xaa,0x68,0x77,0xdb,0x64,0xa7,0x70,0x0c,0x8d,0xf2,0x33,0xe1,0xdf,0x6d,0x8a,0xaf,0x81,0xe8,0x50,0xca,0x12,0xd3,0x1a },
{ 0x7a,0xd9,0xcf,0x6e,0x89,0xb7,0x50,0x54,0x25,0xaf,0xf9,0x54,0xe8,0x9c,0xa2,0x2b,0x6c,0x62,0x88,0x4e,0x8c,0xb6,0x28,0x32,0x2f,0x9c,0xce,0x85,0xcb,0x2c,0xfa,0x4a },
{ 0x7c,0x2c,0x45,0x89,0x03,0xe6,0x74,0xca,0xbb,0x01,0x27,0xcc,0xce,0xd3,0x93,0xa3,0xf1,0x48,0x40,0xf8,0x0d,0xe7,0x70,0xee,0x82,0xa0,0x03,0xdb,0x37,0x2c,0x17,0x07 },
{ 0x56,0x54,0xd6,0xfa,0x8a,0x32,0x51,0x50,0x48,0x0d,0x0c,0x1e,0x3e,0xe9,0x4c,0xf3,0x0d,0x36,0x5f,0xeb,0xb3,0x93,0xcf,0xbf,0x8b,0x09,0x16,0x21,0x1a,0xbf,0x91,0x75 },
{ 0x44,0x20,0x79,0xef,0x16,0xfd,0x61,0xcf,0xf2,0xe0,0xad,0xf4,0x39,0x73,0x92,0x65,0x6d,0x9b,0x44,0xea,0xad,0x4c,0xc7,0x28,0x05,0xe7,0x81,0xa0,0xdc,0x65,0xe7,0x1d },
{ 0xc5,0xdb,0x52,0xd5,0xb0,0xf9,0xfa,0x5f,0x68,0x79,0x06,0xf9,0x29,0x3d,0x83,0xca,0x32,0x5a,0xd4,0x93,0xd3,0x10,0x5c,0x80,0x64,0xe4,0x10,0xe2,0x78,0x20,0xb5,0x0d },
{ 0x0d,0xd8,0x0f,0x97,0x4d,0xa1,0xe8,0x7b,0x4c,0xc4,0x88,0xaa,0xb7,0x5e,0x78,0x91,0x56,0x6d,0x11,0x28,0xea,0xbf,0x2d,0xc0,0xf8,0x95,0x3f,0xc7,0x86,0x24,0x27,0x5f },
{ 0x22,0x0f,0xe3,0xf9,0xd6,0x06,0x8a,0xf3,0x34,0xe4,0xb9,0x9a,0xa2,0x65,0x73,0x48,0xaa,0x63,0x4f,0x5c,0xf2,0x60,0x61,0x9e,0xb1,0x73,0x42,0x95,0x80,0xcc,0x7e,0x19 },
{ 0xa1,0x24,0xc9,0xf3,0x13,0x29,0x11,0x9c,0x2c,0x8c,0x27,0x12,0x7c,0x35,0xc4,0x71,0x6b,0x9c,0xa2,0x97,0x9a,0x99,0xf8,0xce,0x2a,0xf4,0xa4,0x2e,0x19,0xd6,0x5e,0x7b },
{ 0x7e,0x6f,0xa1,0xca,0x0d,0x7b,0xd7,0x7e,0x3c,0x19,0x8f,0x01,0xe2,0xf0,0xe8,0xd8,0xe4,0x00,0x7a,0x1c,0xdf,0xcd,0x1e,0xc5,0x0b,0x78,0x32,0x06,0x76,0xbf,0xdb,0x68 },
{ 0x2c,0x5a,0x55,0xfe,0x30,0xa1,0x81,0x10,0xe4,0x3d,0xad,0x52,0x02,0x75,0x0d,0xe0,0x2c,0xdd,0x8c,0x14,0x6d,0xab,0x9c,0x40,0xb0,0xdc,0x60,0x26,0xd3,0x64,0x6e,0x28 },
{ 0x84,0x7c,0x0d,0x2c,0x37,0x52,0x34,0xf3,0x65,0xe6,0x60,0x95,0x51,0x87,0xa3,0x73,0x5a,0x0f,0x76,0x13,0xd1,0x60,0x9d,0x3a,0x6a,0x4d,0x8c,0x53,0xae,0xaa,0x5a,0x22 },
tinyssh-20180201/crypto-tests/precomp_curve25519.data.py 0000664 0000000 0000000 00000003677 13227043065 0022712 0 ustar 00root root 0000000 0000000 import binascii
P = 2 ** 255 - 19
A = 486662
def expmod(b, e, m):
if e == 0: return 1
t = expmod(b, e / 2, m) ** 2 % m
if e & 1: t = (t * b) % m
return t
def inv(x):
return expmod(x, P - 2, P)
# Addition and doubling formulas taken from Appendix D of "Curve25519:
# new Diffie-Hellman speed records".
def add((xn,zn), (xm,zm), (xd,zd)):
x = 4 * (xm * xn - zm * zn) ** 2 * zd
z = 4 * (xm * zn - zm * xn) ** 2 * xd
return (x % P, z % P)
def double((xn,zn)):
x = (xn ** 2 - zn ** 2) ** 2
z = 4 * xn * zn * (xn ** 2 + A * xn * zn + zn ** 2)
return (x % P, z % P)
def curve25519(n, base):
one = (base,1)
two = double(one)
# f(m) evaluates to a tuple containing the mth multiple and the
# (m+1)th multiple of base.
def f(m):
if m == 1: return (one, two)
(pm, pm1) = f(m / 2)
if (m & 1):
return (add(pm, pm1, one), double(pm1))
return (double(pm), add(pm, pm1, one))
((x,z), _) = f(n)
return (x * inv(z)) % P
def unpack(s):
if len(s) != 32: raise ValueError('Invalid Curve25519 argument')
return sum(ord(s[i]) << (8 * i) for i in range(32))
def pack(n):
return ''.join([chr((n >> (8 * i)) & 255) for i in range(32)])
def clamp(n):
n &= ~7
n &= ~(128 << 8 * 31)
n |= 64 << 8 * 31
return n
def crypto_scalarmult_curve25519(n, p):
n = clamp(unpack(n))
p = unpack(p)
return pack(curve25519(n, p))
def crypto_scalarmult_curve25519_base(n):
n = clamp(unpack(n))
return pack(curve25519(n, 9))
f = open("precomp.txt")
def l(line):
l = ""
for i in range(32):
if i == 31:
l += "0x%s%s" % (line[2*i], line[2*i+1])
else:
l += "0x%s%s," % (line[2*i], line[2*i+1])
return l
while True:
line=f.readline()
if len(line) == 0:
f.close()
break
print "{", l(binascii.hexlify(crypto_scalarmult_curve25519_base(binascii.unhexlify(line[0:-1])))), "},"
tinyssh-20180201/crypto-tests/precomp_ed25519.data 0000664 0000000 0000000 00000534030 13227043065 0021517 0 ustar 00root root 0000000 0000000 { 0x3b,0x6a,0x27,0xbc,0xce,0xb6,0xa4,0x2d,0x62,0xa3,0xa8,0xd0,0x2a,0x6f,0x0d,0x73,0x65,0x32,0x15,0x77,0x1d,0xe2,0x43,0xa6,0x3a,0xc0,0x48,0xa1,0x8b,0x59,0xda,0x29 },
{ 0x4c,0xb5,0xab,0xf6,0xad,0x79,0xfb,0xf5,0xab,0xbc,0xca,0xfc,0xc2,0x69,0xd8,0x5c,0xd2,0x65,0x1e,0xd4,0xb8,0x85,0xb5,0x86,0x9f,0x24,0x1a,0xed,0xf0,0xa5,0xba,0x29 },
{ 0x74,0x22,0xb9,0x88,0x75,0x98,0x06,0x8e,0x32,0xc4,0x44,0x8a,0x94,0x9a,0xdb,0x29,0x0d,0x0f,0x4e,0x35,0xb9,0xe0,0x1b,0x0e,0xe5,0xf1,0xa1,0xe6,0x00,0xfe,0x26,0x74 },
{ 0xf3,0x81,0x62,0x6e,0x41,0xe7,0x02,0x7e,0xa4,0x31,0xbf,0xe3,0x00,0x9e,0x94,0xbd,0xd2,0x5a,0x74,0x6b,0xee,0xc4,0x68,0x94,0x8d,0x6c,0x3c,0x7c,0x5d,0xc9,0xa5,0x4b },
{ 0xfd,0x50,0xb8,0xe3,0xb1,0x44,0xea,0x24,0x4f,0xbf,0x77,0x37,0xf5,0x50,0xbc,0x8d,0xd0,0xc2,0x65,0x0b,0xbc,0x1a,0xad,0xa8,0x33,0xca,0x17,0xff,0x8d,0xbf,0x32,0x9b },
{ 0x3e,0xe2,0xa8,0xa7,0x28,0x3c,0xb2,0xfd,0x72,0x89,0x43,0xda,0xa1,0x27,0xef,0x09,0xe4,0x83,0x07,0x1a,0x8b,0x4b,0xc6,0x99,0xba,0x45,0x22,0xf0,0x9b,0x14,0xcf,0xde },
{ 0xbe,0x3b,0x4f,0x95,0xd1,0xd8,0x75,0xd7,0x1d,0xd2,0xfa,0xcf,0x6c,0x5e,0x4d,0xa5,0x7c,0x1a,0x2c,0x79,0xde,0xad,0x9e,0x1f,0xc5,0xc3,0xb5,0xc1,0xde,0x54,0xc0,0x22 },
{ 0x67,0x54,0x03,0x04,0x32,0x88,0xcc,0x7c,0xd1,0x10,0xc6,0xa4,0xa7,0x0e,0xca,0x13,0x7b,0x6e,0xba,0x5b,0xb8,0xcf,0xc0,0x08,0xa4,0x0c,0xdf,0xb3,0xe4,0x53,0xc2,0x9e },
{ 0xb9,0x2a,0xaa,0x7c,0x8d,0xb2,0x11,0x39,0xaa,0x7d,0x7e,0xc0,0xda,0xa8,0xd7,0xe6,0x25,0x19,0xd6,0xee,0x46,0xa4,0x53,0x4e,0x07,0x64,0x4c,0x68,0x3a,0x00,0x83,0x91 },
{ 0x17,0x26,0x06,0x22,0x77,0xd7,0xb6,0x81,0x78,0x7e,0x95,0xda,0x60,0xff,0xf0,0x32,0xd2,0xe9,0x8c,0xf3,0xd4,0x04,0xea,0xb2,0x82,0x1c,0x49,0x80,0x6e,0x67,0x9f,0x3e },
{ 0xc0,0x5b,0x7b,0xee,0x64,0xc8,0x4c,0x7a,0xd8,0x0e,0x45,0xac,0x14,0xe9,0x8b,0x3e,0x3e,0x64,0x50,0x29,0x02,0x40,0x1d,0xc4,0x91,0x12,0x6d,0xaf,0xc1,0xe9,0x38,0x61 },
{ 0xd7,0xdd,0xc4,0xe7,0x91,0x66,0x90,0xdc,0xd6,0x6f,0xc9,0x62,0x93,0xbd,0x3d,0x39,0x98,0x79,0xac,0x73,0x6b,0x7d,0x1b,0x86,0xcf,0x45,0xa8,0x44,0x30,0x96,0x65,0xbd },
{ 0xc0,0xdd,0x26,0x97,0xc4,0xa1,0x7d,0xf8,0x3f,0x36,0xa9,0x97,0x99,0xdd,0x38,0x49,0x58,0x72,0x84,0x90,0xfa,0xc7,0xd1,0x31,0x82,0x05,0x2d,0x88,0x4e,0x6e,0x42,0x84 },
{ 0xed,0x85,0xe2,0x1f,0x75,0x15,0x5c,0x85,0x01,0x51,0xa8,0x61,0xd5,0x7d,0x62,0xe6,0x56,0x98,0x9a,0x3d,0x2d,0x6c,0x3e,0xe1,0xfc,0x2c,0xe9,0x26,0x71,0x6a,0x20,0xf4 },
{ 0xbe,0x1f,0xb9,0x96,0xbe,0x80,0xe7,0xbd,0x2b,0x78,0xda,0x15,0x7a,0x22,0x4a,0xb5,0x23,0x20,0xcc,0xa0,0x2a,0xe5,0xa0,0x2e,0xfb,0xb4,0x19,0x17,0x9b,0xe9,0x28,0xf9 },
{ 0x56,0x99,0xa9,0xce,0xf8,0x70,0xe2,0xff,0x0c,0x02,0x2b,0x67,0x68,0x9c,0xc7,0x6f,0xe0,0x5e,0x90,0x91,0x5c,0x5f,0x01,0x43,0xf9,0x35,0x6c,0xa7,0x2f,0x4a,0xff,0x99 },
{ 0x79,0xf6,0xd7,0xbe,0x8a,0x5a,0xc1,0xa6,0xff,0x6a,0xcc,0x51,0xbb,0xa8,0x0c,0x52,0x39,0x96,0x27,0x60,0x23,0x06,0x72,0x82,0x93,0xe7,0x59,0x5f,0x7e,0xcf,0x30,0x7f },
{ 0xec,0x9c,0x1a,0xce,0xd4,0xc1,0x81,0xc9,0xf7,0x52,0x6b,0x68,0xab,0x6c,0x7d,0x44,0xdd,0x22,0xee,0x94,0x2d,0xb1,0x1b,0xd0,0xf8,0xb3,0x02,0x5f,0xcd,0xc5,0x1f,0x79 },
{ 0x1c,0x3c,0x06,0x41,0x2d,0xc1,0x8c,0xbb,0xa8,0x79,0xb8,0xd4,0x73,0xc5,0x0f,0xb4,0x19,0xdb,0x5c,0xa9,0xc3,0x88,0x2f,0x2a,0x1d,0xc4,0x9e,0xbc,0x8d,0x9e,0x43,0x54 },
{ 0x04,0x54,0xa2,0x0a,0x28,0xf9,0x2e,0xd2,0x44,0xb7,0x36,0x72,0xce,0x85,0x67,0x0a,0x89,0xee,0x77,0x25,0x54,0x72,0xe0,0x85,0x10,0x42,0xbd,0x9f,0x3d,0xbb,0x7d,0xe8 },
{ 0x23,0xd6,0x93,0x5a,0x75,0xf6,0x99,0xc0,0x0c,0x47,0x32,0xd8,0x0a,0xcd,0x3b,0x2d,0xfa,0x03,0x6e,0x8c,0x46,0x36,0x30,0xd3,0x4c,0x5a,0xa8,0x4d,0x57,0x67,0x2d,0xd6 },
{ 0x85,0xe0,0x32,0x88,0x6c,0xfc,0xf8,0xaf,0xae,0x03,0xb1,0x81,0x22,0x8e,0x23,0x9a,0x92,0x3b,0x8b,0x63,0xa2,0x87,0x89,0x4d,0xad,0x4e,0x0b,0x4a,0xce,0x18,0x7d,0x99 },
{ 0x3c,0xc6,0xd8,0xb8,0x0f,0x0b,0x78,0xa7,0x5f,0x2b,0xad,0x3b,0x90,0x7c,0x53,0xb0,0xb0,0x48,0x19,0x95,0x14,0x39,0x93,0x55,0xe5,0xf0,0x85,0x34,0x56,0xe8,0xb6,0xd6 },
{ 0x0d,0xdf,0x68,0xb9,0xa7,0x93,0x1d,0x32,0x5b,0x36,0xd0,0xa1,0x5e,0x2b,0x04,0xc8,0x37,0x9a,0x76,0xf4,0x7d,0x1d,0x4a,0xaf,0xcd,0xb4,0xeb,0xbe,0x88,0x4b,0x19,0x66 },
{ 0xf0,0xea,0xa2,0x8b,0xf5,0x4f,0x04,0x0f,0x73,0xd8,0x42,0xd0,0x1f,0xfb,0xa1,0x42,0xe2,0xdd,0x28,0x01,0x59,0xbd,0x82,0x00,0x9a,0x42,0xbf,0xbb,0x5d,0xa7,0x2d,0x62 },
{ 0xbd,0xcd,0x64,0xae,0x7a,0xdd,0xa4,0xfd,0x24,0x0d,0xa5,0x00,0x16,0xc3,0xf5,0x19,0x7d,0x5e,0xa9,0xfa,0x28,0xf5,0x66,0x47,0xff,0x9f,0x79,0x94,0xe2,0xd7,0x5b,0x0c },
{ 0xe4,0xa6,0x30,0x99,0x3b,0xf3,0xae,0x0d,0x33,0x35,0x6b,0x13,0x88,0x19,0xd8,0x70,0xc5,0x47,0x68,0x25,0xdb,0x39,0x14,0xc9,0xde,0xd3,0x92,0xcf,0x44,0x3b,0xbc,0x6f },
{ 0x7f,0xf7,0xbc,0x16,0x71,0x02,0x0f,0x3a,0x07,0xe7,0x80,0xfb,0x39,0x9d,0x8a,0x68,0x83,0x4a,0x48,0xfb,0xf6,0x22,0x65,0x50,0x1b,0xf8,0x80,0x82,0x79,0x7b,0x91,0x3f },
{ 0xce,0x97,0xbe,0xb9,0x0a,0xa1,0x1a,0xd3,0xe0,0x0c,0x6e,0xed,0x4f,0xb2,0x0e,0x8b,0x8a,0xb7,0xee,0x34,0x12,0x97,0x97,0xe2,0x20,0x3f,0x93,0x1e,0x17,0xd1,0xbd,0x68 },
{ 0x00,0x9d,0x83,0x49,0x63,0x7c,0xa9,0x8e,0xb1,0xa8,0xb9,0x5a,0x8b,0x94,0x86,0xe9,0x88,0x2c,0x76,0x64,0x3c,0xc1,0xd7,0xd1,0xbb,0xd6,0x3d,0x83,0xf3,0xfc,0x6e,0xfc },
{ 0x8c,0x70,0x38,0x3f,0x69,0x15,0x85,0x4b,0xf2,0x89,0x59,0xc7,0x73,0x81,0xba,0x6a,0xd4,0xb6,0xed,0x44,0x7e,0x04,0x64,0x56,0x95,0x48,0x4b,0x47,0xc6,0xa1,0xa9,0xf9 },
{ 0x58,0x7d,0x18,0xf6,0xa4,0xc2,0x63,0xef,0xf8,0x2c,0x45,0xe9,0x43,0xd9,0xd6,0x4c,0x0e,0x6a,0x47,0x33,0x22,0x5d,0xb6,0xc1,0xce,0x50,0xc3,0x5c,0x65,0x10,0xc4,0x2f },
{ 0x05,0xe5,0x0a,0xf9,0x1e,0xa6,0x0c,0xa5,0xb6,0xd3,0xa4,0xe8,0x2a,0x83,0x2a,0x42,0x6b,0x2d,0x9f,0x82,0xe0,0x53,0x58,0x9a,0x86,0x2f,0xd2,0x36,0xbc,0x69,0xe5,0xb9 },
{ 0xf2,0x3c,0xbb,0x8f,0x25,0xda,0xd2,0x32,0xb6,0x70,0xb5,0x07,0xe2,0xe5,0x6b,0x14,0xc5,0x1d,0x16,0x20,0x7c,0xfb,0x62,0xf1,0x36,0xe5,0x71,0x71,0x08,0xcd,0x03,0x96 },
{ 0x4c,0x96,0xab,0xd4,0xaa,0xa9,0x7e,0xe9,0x75,0xa7,0x64,0xc4,0x62,0xea,0x36,0x46,0x7f,0x75,0x4e,0x67,0x91,0x21,0x31,0x66,0xe4,0x69,0x28,0x2f,0x91,0xc9,0xe1,0xde },
{ 0x30,0x16,0x16,0xaa,0xb9,0xf9,0x7e,0x93,0x9a,0x17,0x38,0x7e,0xe7,0x20,0x29,0x66,0xa9,0xcc,0x09,0x5b,0xa7,0x7c,0x2f,0xa2,0x68,0xb0,0x3d,0xd8,0xf2,0xf1,0x61,0x46 },
{ 0xea,0x97,0x2d,0xbb,0x00,0x34,0x7f,0x27,0x0b,0x96,0xda,0xf9,0xef,0xe3,0x24,0x39,0x17,0x67,0x56,0xea,0xce,0xea,0x98,0x56,0x63,0x6f,0x52,0xf3,0xc0,0xa7,0x54,0x9e },
{ 0xbf,0x31,0x82,0x53,0x80,0x46,0xc4,0x12,0xe7,0xc2,0x2e,0xd7,0x58,0x15,0xde,0x04,0x99,0x3e,0x7a,0x51,0x38,0x78,0x18,0x6b,0x79,0xfe,0xdc,0x7a,0x2d,0xd3,0x61,0x32 },
{ 0x67,0x60,0xcd,0x63,0xb9,0x5f,0x5b,0xfa,0x0a,0x84,0x81,0xe2,0x33,0x24,0xb1,0x50,0x4b,0x1d,0x9a,0xad,0xaa,0xa3,0x6e,0x67,0x98,0xe6,0xff,0x64,0xa6,0x33,0xb8,0x68 },
{ 0x96,0x07,0x91,0xca,0x5b,0x52,0x6e,0xd8,0x01,0x20,0x21,0x24,0x7a,0xed,0xe9,0xb2,0x3e,0x4f,0xba,0xc7,0x39,0xb2,0xfe,0xe8,0x48,0x74,0x91,0xc2,0x8d,0xef,0xe1,0xbf },
{ 0xce,0x58,0xa1,0x36,0x1d,0xef,0x2b,0x6d,0x9e,0xc9,0x07,0x19,0x6f,0x0d,0xda,0xe3,0x08,0xf2,0x0e,0xe3,0x3f,0x68,0x51,0xac,0x86,0xa1,0x46,0x03,0x89,0xb1,0x2f,0x62 },
{ 0x43,0x70,0x82,0x85,0x3d,0x70,0x6c,0xaf,0x45,0xb3,0x17,0x8b,0x60,0x85,0x52,0x18,0x24,0x0b,0xdb,0xa3,0x91,0xa9,0x44,0x96,0x74,0x3b,0xa3,0xae,0x21,0xcb,0x76,0x9c },
{ 0x9a,0x88,0xed,0x92,0xeb,0x82,0xa9,0xd6,0x08,0x9c,0x72,0x30,0xf4,0x27,0xdc,0x67,0x58,0x00,0xef,0xb8,0xce,0x65,0xeb,0xcd,0xca,0xbd,0xf1,0x7a,0x15,0xdd,0x58,0x8d },
{ 0xb6,0xcd,0xa7,0xc2,0x2f,0x16,0xc2,0x01,0x3d,0xf7,0xf1,0x95,0xd6,0x6d,0xbb,0x22,0xc5,0xe0,0x24,0x05,0x3d,0x6c,0xc7,0x15,0x54,0xb3,0x1d,0x9f,0xd1,0xdd,0x3f,0x1b },
{ 0xce,0x1c,0x43,0x05,0xd4,0x62,0x80,0xbb,0xbd,0x01,0x04,0x88,0x9d,0xc3,0x89,0x21,0x6c,0x74,0x01,0x10,0x86,0xeb,0x66,0x71,0x7a,0xa0,0xba,0xc1,0xbc,0x25,0x89,0x21 },
{ 0x89,0xae,0x5b,0xf7,0x81,0x39,0x3f,0xfd,0xc2,0xe8,0x89,0xcb,0xaa,0xc1,0xad,0xd5,0x1b,0xde,0x8a,0xbe,0xbb,0x60,0x9e,0xdd,0x9f,0x27,0x62,0x5c,0xe2,0x47,0xb8,0x4f },
{ 0xdb,0x70,0x0d,0xc4,0xee,0xcf,0x15,0xab,0x0d,0xa2,0xc7,0xd2,0x5a,0xc2,0x04,0xd8,0x4f,0x08,0x15,0x54,0x53,0xb1,0x2a,0xb5,0x3b,0xf4,0xab,0x86,0x76,0x7b,0x90,0x1f },
{ 0x28,0x99,0x0a,0xa3,0xb0,0x64,0x83,0x0f,0x5d,0x82,0x15,0xf1,0xcf,0xb6,0x80,0xcd,0x60,0xad,0x4c,0x75,0x99,0xc1,0x59,0x1c,0x19,0x59,0xa2,0x4f,0x86,0x06,0xec,0xb6 },
{ 0x2c,0x70,0xea,0x61,0x4b,0x31,0x71,0x8f,0xc7,0x7c,0xa8,0xcd,0xf4,0x7c,0xb9,0xeb,0x74,0xa2,0xce,0x93,0xf7,0xd7,0x0f,0xf7,0x43,0x8a,0x58,0x24,0xa5,0xc9,0xa6,0xc7 },
{ 0x4c,0x69,0xa9,0xb6,0x69,0x4f,0x6d,0xe1,0x3b,0x0d,0x8d,0xb9,0xa0,0x62,0xdc,0xf8,0x96,0xe5,0xdb,0xf2,0xf0,0x6a,0x18,0x7b,0x33,0xd8,0x4d,0xaf,0x69,0x78,0x8b,0xa2 },
{ 0xd5,0xbc,0x8e,0x60,0x06,0xef,0xd1,0x6e,0x53,0x35,0x14,0x9e,0x92,0xc0,0xb2,0x19,0x99,0x5b,0x13,0xce,0xb4,0x8b,0xbd,0xea,0x56,0x76,0xbf,0x11,0xf2,0x14,0xef,0xe4 },
{ 0x07,0xfb,0x9f,0xb5,0x33,0xc5,0x38,0x7c,0xcf,0xe7,0xfc,0x05,0xee,0xd1,0x25,0x02,0x93,0xf0,0xc4,0x71,0x9f,0x74,0xfe,0xd7,0x89,0x81,0x04,0xc8,0x2f,0xfd,0x0f,0x11 },
{ 0xbd,0xab,0xc0,0xc0,0x41,0x67,0x52,0x02,0xa9,0x1c,0x9f,0x40,0x27,0xa1,0x55,0x75,0xbe,0x40,0x8e,0x14,0x83,0xa8,0xf0,0x95,0x74,0x94,0x3c,0xee,0x4c,0x91,0xa5,0x32 },
{ 0x4b,0x9a,0x5e,0x97,0x20,0x14,0x4a,0x81,0x9a,0xaf,0xd6,0x35,0x04,0x92,0x23,0xdf,0xc8,0x34,0x66,0xc9,0x59,0x60,0x71,0xba,0x22,0x87,0xb4,0x47,0x52,0xdc,0xe7,0xc1 },
{ 0xba,0x02,0x95,0xf0,0xe9,0xbb,0x81,0x19,0x06,0xf2,0x2e,0xf8,0x19,0x9c,0xad,0xd1,0x82,0x43,0x4d,0xe1,0x62,0x64,0x67,0x7b,0x11,0x94,0xca,0xc7,0xcb,0x11,0xb7,0x01 },
{ 0x8d,0x0f,0x4d,0x43,0x87,0xca,0x66,0x01,0x8e,0xd5,0x16,0xdf,0xab,0x78,0xdb,0x0a,0x3e,0xa1,0xa0,0x90,0x7f,0xf9,0x27,0xd4,0x18,0x95,0x6c,0x21,0xad,0x67,0x92,0x60 },
{ 0xe7,0x6e,0xae,0xc4,0x9e,0x4d,0x35,0x70,0x7c,0xab,0x5d,0x79,0x7e,0x94,0x08,0xf0,0xe8,0xbb,0x76,0x3b,0x1f,0x9b,0xab,0xea,0xb3,0x1c,0xbc,0x0a,0x59,0x51,0xd7,0x58 },
{ 0xfa,0x16,0x0f,0x60,0xe8,0xe3,0x6b,0x1a,0xc3,0xfe,0x0b,0x14,0x46,0x35,0x2b,0x50,0x8a,0x7a,0xfc,0x30,0x83,0x21,0x67,0x52,0xbb,0xc3,0x35,0xc4,0xa8,0x02,0x4a,0x63 },
{ 0xde,0x38,0x4b,0xe0,0x2d,0x57,0xc5,0xe2,0x47,0x9a,0xe6,0xbe,0xe9,0x36,0xc4,0x10,0xe5,0x0e,0x17,0x3b,0x30,0x67,0x04,0x3c,0xbf,0x21,0xaf,0xa0,0x0c,0xfb,0x83,0xc2 },
{ 0x2e,0x5c,0xd3,0x5f,0xfb,0x2a,0xa2,0xab,0xe2,0x25,0x97,0xde,0x55,0x9b,0x25,0x9f,0xa2,0x1c,0x46,0x78,0xa2,0x11,0x07,0xa1,0xb4,0x39,0x4b,0x75,0xac,0xee,0xcd,0x85 },
{ 0x77,0xcc,0xff,0x97,0x94,0x07,0x54,0x29,0x2d,0x8c,0x5d,0x57,0x7e,0x09,0xbe,0xfd,0x2b,0x1f,0x73,0x69,0x50,0x7a,0x33,0xe1,0xe6,0xcb,0x6a,0xaf,0x73,0x4e,0x4d,0x66 },
{ 0x74,0xa3,0x0f,0x21,0x83,0xf6,0x75,0x04,0x21,0x80,0xc9,0x25,0x4d,0x82,0x55,0xa8,0x8a,0x47,0x2a,0x13,0x3d,0xdc,0xfb,0xd5,0xd2,0x04,0xdc,0xbb,0xd4,0x09,0x19,0xe4 },
{ 0xcb,0x9f,0x80,0x6d,0xe1,0x3f,0x9e,0x5b,0xd2,0xc0,0x96,0x03,0x77,0x6c,0x68,0x5d,0x42,0x4b,0x6f,0x2d,0x2b,0x9f,0xe8,0xa4,0xce,0x77,0xae,0x2c,0xa9,0x87,0x1a,0x99 },
{ 0x75,0x6d,0x27,0x80,0x2b,0x0b,0x77,0x82,0x2d,0x4a,0x0c,0x3a,0x5d,0xb5,0xcc,0xa3,0x47,0xec,0xf1,0xae,0xcb,0x46,0x90,0xfb,0xd3,0xc9,0x73,0x76,0x11,0xd2,0x9b,0x99 },
{ 0x17,0xe1,0x27,0xd9,0xc1,0x9d,0x72,0xe9,0x6a,0xa0,0x5c,0x96,0xad,0xd3,0x00,0x38,0xab,0x76,0x67,0x83,0x6c,0xa8,0x1c,0xc8,0xae,0x65,0x25,0x9a,0xf1,0x75,0x5f,0xaf },
{ 0x0b,0x46,0x1f,0x12,0x3c,0xc9,0xf6,0xab,0x13,0x28,0x98,0x11,0xae,0xdb,0x69,0xc2,0xb3,0x14,0x28,0xc1,0x7a,0xa6,0xa2,0x1a,0x43,0x5d,0x86,0x68,0xac,0x5d,0x6f,0x6c },
{ 0x2f,0x27,0x11,0x5f,0xbb,0x7d,0xb9,0x64,0xe0,0x91,0xe1,0x34,0x8d,0xa4,0x17,0x4f,0xb8,0x31,0xa1,0x99,0x87,0xbb,0x33,0xdf,0xfd,0x59,0x87,0xca,0xeb,0x03,0x76,0x20 },
{ 0xa8,0xf6,0x0f,0x84,0xd7,0xad,0x21,0xd2,0x34,0x49,0x21,0x0d,0x85,0xd6,0x4c,0x1e,0xf4,0x1e,0x84,0x5c,0x7b,0xaf,0x17,0xbe,0x5b,0x11,0x0f,0xf2,0xd9,0x97,0x33,0xd3 },
{ 0x0f,0xae,0xee,0x87,0x09,0x71,0x04,0xac,0x44,0xd5,0x30,0x24,0x91,0x02,0xdb,0x77,0x1a,0x99,0xe7,0x53,0x7d,0xb0,0xdb,0x21,0x8b,0xbf,0xa7,0x43,0x5a,0x09,0x1f,0x9c },
{ 0x8f,0x41,0xe9,0x78,0x71,0xd8,0x43,0xb5,0x18,0x6a,0x65,0xf4,0x8d,0x58,0x3b,0x7a,0xa4,0x14,0x75,0xf8,0xea,0x79,0xaa,0x2e,0x60,0x17,0xce,0xcd,0x8a,0x28,0x5b,0xc5 },
{ 0x31,0xf5,0x0f,0x10,0xf0,0x31,0xc2,0x9f,0x37,0xd6,0x7b,0x70,0x12,0xcd,0xfa,0xea,0xf8,0xfc,0xe4,0x87,0xe0,0x2c,0xd2,0xfd,0xb9,0xc3,0xb4,0x62,0x03,0xdc,0x10,0xbd },
{ 0x0e,0x3a,0x2c,0x39,0x2d,0xe5,0x23,0xac,0xa1,0x8b,0x5b,0x6d,0xce,0x39,0x45,0x26,0x8b,0x2f,0x35,0x52,0xe9,0x1f,0x24,0xda,0x7f,0xe5,0xc8,0xfd,0x39,0x71,0xec,0x63 },
{ 0xca,0xc6,0x8a,0x54,0xdf,0x69,0xce,0x8f,0xa4,0x7c,0x4e,0x20,0x24,0x41,0xeb,0xb4,0xad,0xe8,0x2a,0x5a,0xe4,0xd4,0x51,0x78,0x7c,0x8b,0x1e,0x1b,0x8b,0xbe,0x1e,0xfb },
{ 0xdf,0x0c,0xff,0x3d,0x63,0xac,0x46,0xa8,0x2d,0x32,0x01,0xcc,0xe6,0xae,0x6b,0x44,0x65,0x77,0x7d,0xe1,0x32,0xb9,0xf0,0xa2,0x7f,0xfc,0xfc,0xa5,0xe3,0x3a,0xcf,0x57 },
{ 0xf1,0xbd,0x4a,0x24,0xcf,0xc9,0x6e,0xba,0x6e,0x6f,0xa5,0xba,0x1e,0x99,0xfc,0xd1,0x86,0x5c,0x54,0x94,0x3f,0x57,0xb3,0x86,0x24,0x72,0xb8,0xed,0xa6,0xc7,0x7f,0x15 },
{ 0xf3,0x61,0x3e,0x26,0x44,0x4d,0x55,0xd8,0x33,0x63,0xd9,0xcb,0x3c,0x48,0xde,0xce,0x39,0xe3,0x3e,0x9a,0x62,0x9f,0x1d,0x12,0xaf,0x2a,0x6c,0xea,0x7d,0xac,0xbc,0x1c },
{ 0x11,0x72,0x5b,0xc0,0xcb,0x40,0x18,0x55,0x80,0xe0,0xf1,0x77,0xd4,0xa2,0xab,0x48,0x71,0xba,0xfd,0x45,0x70,0x4e,0x24,0x13,0x38,0xd0,0xe1,0x28,0x7b,0xc4,0x9e,0x53 },
{ 0x74,0x60,0xde,0x79,0x07,0x2c,0xb6,0x49,0xfb,0x2d,0xce,0xd8,0x1e,0xa4,0x05,0x62,0xc2,0xc2,0x7a,0x92,0x55,0x75,0x2e,0x96,0x96,0xd6,0x47,0xf4,0xec,0xde,0x77,0x69 },
{ 0xc3,0xaf,0x95,0xa2,0xae,0x28,0x83,0x7f,0x54,0x00,0x8f,0x91,0xba,0xca,0x8e,0x6b,0x3c,0x3a,0x26,0xf7,0x9a,0x2d,0xf8,0xc8,0x71,0x0c,0xcc,0xea,0x6e,0x97,0x26,0x14 },
{ 0x14,0x35,0xaa,0xfa,0x9f,0x5e,0xf3,0xe2,0xed,0xa8,0xd9,0x05,0x05,0x92,0xca,0x7c,0x62,0x8a,0x97,0xff,0x73,0xf8,0x4b,0xc3,0x76,0xfb,0x06,0x48,0xe9,0x7e,0xd0,0x2b },
{ 0xfc,0x79,0x0d,0xa1,0x34,0xec,0x11,0xc7,0x14,0x93,0xf7,0x3a,0xdf,0xd8,0xa3,0x9a,0xbb,0x5e,0x99,0x24,0xe4,0xeb,0xe7,0x02,0xe6,0xba,0x19,0x94,0x01,0xac,0x4b,0xc3 },
{ 0x97,0xf5,0x84,0xfd,0xc2,0x5b,0x70,0x04,0xd2,0x7a,0xbd,0x6b,0x77,0x5a,0x04,0x2f,0xa4,0x34,0xbb,0x47,0x71,0xf0,0xc2,0x8d,0x34,0x0b,0x5f,0x62,0xd4,0x23,0xf0,0x69 },
{ 0xbf,0x9e,0xea,0xb2,0x02,0x90,0xa9,0xe8,0xc1,0xba,0x93,0x13,0xad,0x40,0x31,0xee,0xbf,0xa8,0xa5,0x01,0x89,0xe1,0xb2,0x30,0x68,0xbf,0xf1,0xae,0x1f,0xf1,0xce,0xfc },
{ 0x23,0x31,0xc1,0xb2,0x62,0xb4,0x8b,0x38,0x2d,0x52,0x85,0x7d,0x5a,0xc3,0x63,0x06,0x7d,0x04,0xf7,0xcf,0x2b,0x1f,0xd6,0xc0,0xea,0xa6,0xff,0x1f,0xd1,0x9c,0xcc,0xe0 },
{ 0xf5,0x7c,0x21,0xae,0x7a,0xfa,0xf3,0x0a,0x0f,0x40,0xaa,0x44,0xfa,0xbf,0xbd,0x86,0x6b,0x80,0x72,0x08,0x9b,0x6d,0x01,0x67,0x65,0x1f,0x72,0x70,0x8d,0x5f,0xf6,0xe3 },
{ 0x87,0x96,0xc1,0x11,0x65,0x4e,0xe6,0x4e,0x1f,0xdf,0x53,0xe1,0x6c,0x13,0x44,0xb3,0x48,0x06,0xc1,0x38,0x2d,0xa1,0x5f,0x33,0x7f,0x3c,0x64,0x25,0xdd,0xc3,0xce,0x13 },
{ 0xd4,0xff,0x85,0x02,0x45,0xb6,0x23,0x89,0xc5,0x0d,0x4b,0x0b,0xff,0xab,0x15,0x52,0x01,0x2a,0x2d,0x8b,0xbc,0x66,0x08,0x83,0x0b,0xbc,0x01,0x64,0xfd,0xb4,0x00,0x36 },
{ 0x22,0xc1,0x09,0x17,0x5b,0xfc,0x07,0x93,0x06,0x44,0x7f,0x58,0x55,0x8d,0x1f,0xe5,0xbf,0x7e,0x3d,0x2a,0xa9,0x4c,0x9e,0x21,0xfd,0x75,0x9e,0x04,0x41,0xa4,0x57,0xf8 },
{ 0x5d,0xc5,0xa0,0xb5,0xc7,0x05,0x0c,0x17,0xc8,0xe3,0x0b,0x0a,0xd6,0x99,0x6b,0x26,0x72,0x5a,0x59,0x50,0xba,0xb3,0xc1,0x25,0x4b,0xb4,0x24,0x64,0x36,0x7f,0x6e,0x54 },
{ 0x6c,0x85,0x40,0x13,0x82,0xd7,0x4f,0x08,0x7a,0xff,0x63,0xfd,0x5f,0x63,0xe0,0x93,0x16,0xfe,0xd5,0xe9,0xf3,0x6d,0x9e,0x56,0x57,0x44,0xae,0xa8,0x05,0x74,0x25,0x77 },
{ 0xdd,0xf5,0x19,0xcf,0x2e,0xba,0x50,0x28,0x3c,0xa8,0x96,0x80,0x1f,0x3a,0xe8,0x27,0xfc,0x9f,0xd6,0x74,0x2b,0x91,0xcd,0x16,0x56,0xca,0x4f,0x6a,0xf3,0x9b,0xa5,0x78 },
{ 0x34,0x82,0xa3,0xe7,0xd2,0x07,0xab,0x29,0x75,0x45,0x9a,0xd0,0x1d,0xe2,0xf8,0xa1,0xe6,0x4a,0xba,0x0d,0x6a,0xaa,0xa6,0xc4,0xd0,0xe1,0x42,0xe4,0xd3,0x82,0xc6,0x82 },
{ 0xc6,0xc4,0x7a,0xa5,0x3a,0x2b,0x6f,0x10,0xdf,0x5a,0xbb,0xf8,0x36,0x96,0x6f,0x91,0xfb,0xcd,0xf6,0x4f,0xdf,0x49,0x18,0x35,0xc6,0x3f,0x9b,0x1b,0x22,0xba,0xa5,0x2d },
{ 0x41,0x36,0xd6,0xc8,0xd1,0xf4,0x5d,0x91,0xf0,0x58,0x80,0x8e,0xea,0x8d,0x4e,0x4a,0xfc,0x1e,0xfe,0xd1,0x1d,0xc9,0xeb,0x10,0x4d,0x2e,0x4b,0x54,0x65,0x19,0x20,0xab },
{ 0x4e,0xb4,0x7e,0x1a,0x50,0xcb,0x32,0x39,0xe7,0x6b,0x0f,0x57,0x51,0xb9,0x04,0xf0,0xc2,0xdc,0xf6,0x43,0x66,0x08,0x64,0x83,0xfa,0x83,0x46,0xe8,0x58,0xd8,0x3d,0x8f },
{ 0x15,0x85,0x60,0x7d,0xea,0xe2,0xb2,0x5d,0xe0,0x8d,0x7d,0x39,0x9c,0xa8,0x1b,0xab,0x4e,0xd7,0x0c,0x92,0xcb,0xea,0x41,0xe8,0x94,0x9a,0x19,0xbc,0x49,0x61,0x93,0xd0 },
{ 0xf6,0x3f,0x34,0x5f,0x9b,0xd7,0xff,0x4e,0x9a,0xe9,0xa2,0x27,0x6b,0xb3,0xfc,0x1d,0xc5,0xed,0x4c,0xf0,0xeb,0xdd,0x1f,0x10,0xc1,0xb8,0x13,0x09,0xdd,0x43,0x87,0x30 },
{ 0xa0,0x65,0x12,0x00,0x90,0x2b,0x38,0x56,0x9f,0xd7,0xdd,0xc9,0x16,0xe4,0x36,0xcf,0x67,0x67,0x25,0x0b,0x12,0xb5,0xda,0xee,0xa2,0x76,0xa7,0xb9,0x4c,0x7d,0x8e,0xd5 },
{ 0x1d,0x2c,0xcc,0xd4,0x60,0x40,0x0d,0x82,0xe5,0x74,0x19,0xe7,0xe3,0x7f,0x20,0x67,0xf7,0x0b,0x69,0x0a,0xbf,0xe1,0x8e,0xd8,0x14,0xc0,0x6a,0x47,0xb8,0x48,0x62,0xe6 },
{ 0xe2,0xfb,0xcc,0x64,0x5c,0x5f,0x04,0x31,0x54,0x76,0xef,0xac,0xab,0x32,0x52,0x86,0xb4,0x7b,0x45,0x45,0xf6,0x22,0x9d,0xb0,0x61,0xea,0xb4,0xe1,0xe8,0xfc,0xb9,0xbd },
{ 0xb3,0xba,0x3d,0xa8,0x80,0x05,0x29,0xf8,0xb6,0xe9,0xd5,0xae,0x62,0xc9,0xb0,0x3a,0x0a,0x21,0x6e,0x94,0x2a,0x74,0x4f,0x84,0xb8,0x01,0x1d,0x4c,0xa0,0x68,0xe1,0xed },
{ 0x2e,0x05,0x00,0x78,0xe0,0xd4,0xa6,0x2e,0x7f,0x53,0x4f,0xe3,0xb6,0x76,0x8d,0x2a,0xe4,0xf3,0x1d,0x43,0xb4,0xa5,0xb0,0x76,0x59,0x59,0xa6,0x24,0xb7,0x8a,0x0d,0x8f },
{ 0x18,0x92,0x03,0x33,0x1c,0x0f,0x4d,0x6c,0x7b,0x01,0x2e,0x5f,0x3a,0x27,0x8b,0x7e,0x74,0x0e,0x15,0x04,0x5c,0xb7,0xdb,0xbd,0xcc,0x56,0x64,0xc2,0x81,0x5d,0x0c,0xc3 },
{ 0xac,0xd0,0xb7,0x32,0x68,0x3b,0xb4,0x20,0x6b,0xe3,0x6a,0x5c,0x55,0x4a,0xdb,0x2b,0xc8,0x73,0x89,0x08,0xee,0xc8,0xea,0x7a,0x57,0x83,0xdf,0x5b,0x60,0xb9,0x19,0xad },
{ 0xb2,0x7b,0x4b,0x50,0xe5,0x4e,0x0b,0x83,0x15,0x57,0xe0,0xd4,0x2d,0x6e,0xcb,0xc1,0x41,0x71,0x5a,0x01,0x26,0x87,0xe5,0xa4,0xb2,0xf1,0x86,0xa7,0xe8,0x10,0x87,0xc4 },
{ 0x23,0xf5,0xd4,0x49,0x43,0x0a,0x2e,0xec,0xab,0x58,0x30,0x78,0xc1,0x22,0xaa,0xad,0xef,0xa7,0x1d,0xfb,0xca,0x92,0x46,0xa4,0xd8,0x30,0xd0,0x63,0xa3,0x04,0xa5,0xe1 },
{ 0x76,0xb5,0x78,0x1f,0xd4,0x7d,0xc7,0x88,0xc2,0xe3,0xd1,0x37,0x5f,0x50,0x46,0x8a,0x3e,0x4f,0x1e,0xbb,0xf4,0xa3,0x36,0xcd,0x47,0x64,0xf5,0x03,0xc9,0xee,0xc9,0xa7 },
{ 0xd4,0xcc,0x5c,0x0a,0xc7,0xf1,0x3c,0xc5,0x8f,0xc5,0x69,0x8d,0x2f,0xfe,0xb8,0xe7,0x4b,0x43,0x97,0xc5,0x93,0xa1,0x67,0xbb,0x0b,0x9c,0x0e,0xdc,0x6a,0x2a,0x1a,0x9c },
{ 0x02,0xce,0xa6,0x63,0xc8,0xa8,0xad,0xb4,0x0b,0x5d,0xe1,0x53,0xaa,0x0b,0xbb,0x37,0xf8,0xd3,0x28,0x5b,0x9b,0x75,0x2e,0x81,0x8e,0xd2,0x3e,0xc9,0x00,0x32,0x55,0xb2 },
{ 0x31,0xef,0xf0,0x79,0xdd,0x5c,0x4e,0xee,0xd0,0xe1,0x01,0x80,0x2f,0x75,0xdb,0x7c,0xf3,0x4e,0xec,0x8e,0x7d,0x1d,0xe2,0x81,0x18,0xf7,0x6a,0xf2,0xc9,0x31,0x20,0xb4 },
{ 0x28,0x88,0x9a,0x19,0x78,0x02,0x58,0x93,0x8f,0xf6,0x4e,0x57,0x0a,0x43,0x0c,0x09,0x1e,0x6e,0x39,0xef,0xa8,0x22,0x5c,0x10,0x82,0x4f,0x09,0xfe,0xb3,0xbc,0x1d,0xf5 },
{ 0x42,0xea,0x73,0x11,0xde,0xbf,0xe3,0x37,0x57,0x9b,0x38,0x3d,0x32,0xbc,0x80,0x88,0x09,0xbd,0xfd,0x76,0x64,0x9a,0x80,0x8d,0x18,0x71,0x1f,0x5e,0x3f,0xf1,0xc0,0x02 },
{ 0x6f,0x21,0xaa,0x76,0xe2,0x27,0xd9,0xca,0xa4,0x73,0x66,0x64,0x08,0x76,0x9b,0x2d,0xed,0xe7,0xf7,0x27,0x03,0xd7,0x72,0xe1,0x01,0xc2,0x22,0xcb,0xc0,0x33,0xe3,0x8c },
{ 0x7b,0x01,0x54,0xbe,0x7e,0x51,0xc4,0x08,0xb3,0xce,0x40,0x35,0x5f,0xc5,0x49,0xbf,0x2f,0xef,0xd6,0xb6,0xed,0x14,0xf5,0x3c,0xfe,0x75,0xb6,0x49,0x89,0x69,0x26,0x69 },
{ 0x37,0xb2,0x26,0x5b,0x15,0x05,0x7d,0xd0,0xa0,0xb7,0x5f,0x93,0x6a,0x42,0x69,0xed,0x50,0x4f,0x0f,0x3b,0x5b,0x2b,0xda,0x48,0x2a,0x5b,0xd7,0x8d,0x63,0x23,0x00,0x4c },
{ 0x29,0x83,0xb0,0xcd,0xe4,0x37,0xe5,0xb4,0x93,0xfe,0x60,0xc2,0xa7,0xb6,0xfc,0xfa,0x01,0x16,0xf1,0x06,0xc3,0x96,0xe8,0x18,0x4e,0xad,0x14,0xb7,0x9d,0x87,0x39,0x06 },
{ 0xfd,0xe7,0x8a,0x9d,0xd4,0x42,0xd0,0xa2,0xe4,0x4e,0x03,0x76,0x33,0x61,0x2e,0xf2,0xf1,0x9c,0x6e,0x83,0x92,0x62,0x15,0xb6,0xc1,0xed,0xcc,0x4f,0xd1,0x56,0xa5,0xb4 },
{ 0x2e,0xd4,0x31,0xc6,0x64,0x27,0x47,0xf5,0x07,0x85,0x46,0x35,0xb1,0x5c,0x08,0x8b,0x73,0xe0,0x92,0xc4,0x02,0xa5,0xeb,0xee,0x6a,0x65,0xdd,0xe5,0x43,0x6c,0x9e,0x80 },
{ 0xb1,0x3e,0xb1,0x78,0x88,0x3b,0x05,0x6d,0x01,0x01,0x6f,0xb8,0x44,0xfa,0x45,0x9b,0xec,0x2b,0xe0,0xf3,0x15,0xe1,0xeb,0xa6,0x64,0xad,0x54,0x4d,0x3a,0x18,0x03,0x12 },
{ 0x98,0x13,0xd1,0xf3,0x4a,0x86,0xc0,0xd6,0xa6,0xa7,0x7f,0xc9,0x96,0x29,0xf7,0x57,0x18,0xf1,0x38,0x77,0xe1,0xfd,0xcf,0xb8,0xa7,0xb5,0xd1,0x95,0x60,0x9b,0xfe,0x0d },
{ 0x00,0xd4,0x33,0xd0,0xeb,0x88,0x9b,0xe0,0x78,0x2d,0x74,0x23,0xaf,0x83,0x0b,0xd6,0x50,0xff,0xe3,0x78,0x59,0x22,0x1e,0x1e,0xd8,0xdc,0x33,0x89,0x4e,0x84,0x22,0x3a },
{ 0x20,0x5a,0x3b,0xf1,0x05,0xc2,0x3d,0x3c,0xc3,0xeb,0x1c,0xfd,0xf3,0xe5,0x33,0x9d,0x01,0x05,0xfd,0xc9,0x2e,0x98,0x51,0x13,0xfc,0xa8,0x33,0x46,0x94,0x53,0x57,0x2b },
{ 0x18,0x63,0x4b,0x51,0x66,0x35,0xec,0x2e,0xf3,0x0a,0xdc,0xe3,0xd6,0x30,0x7f,0x75,0x0f,0x98,0xb0,0x57,0xc0,0x76,0x6b,0xcb,0x37,0xef,0x1c,0xa1,0xfd,0xe3,0x82,0x09 },
{ 0xab,0x63,0xd5,0x39,0x83,0x2f,0x76,0x7c,0xdf,0x38,0x08,0xc3,0x0f,0xb0,0x1e,0xfe,0x54,0xb7,0x23,0x20,0x5d,0x8a,0x79,0xef,0xfa,0x61,0x6f,0x80,0xa5,0x04,0x6c,0x61 },
{ 0x1d,0xd2,0x2b,0xef,0x07,0x6d,0x5b,0xb0,0x98,0x10,0x9f,0x38,0x52,0x61,0x34,0x7e,0xc7,0xba,0x3f,0x4b,0xe1,0x93,0x8d,0xf8,0x17,0x3b,0x64,0x65,0xed,0x7c,0xe1,0xa5 },
{ 0x4b,0xeb,0x9f,0x24,0x34,0x78,0x1e,0x73,0x21,0xd7,0x1e,0xd9,0xa1,0x50,0x04,0x20,0x5f,0xe9,0x91,0xb5,0x82,0x01,0xc8,0xd8,0x20,0x09,0x37,0x23,0xb4,0x45,0xba,0x22 },
{ 0xc1,0x21,0x3e,0xbf,0x79,0x85,0x88,0x20,0xbf,0x3a,0x8f,0x68,0x79,0x23,0xed,0x4b,0xd5,0x66,0x83,0x40,0x0e,0x4c,0xad,0x0c,0xb3,0x95,0x31,0x42,0xa7,0x51,0x93,0x29 },
{ 0x25,0x06,0xc7,0x05,0xdb,0x6b,0xa0,0x54,0x55,0xc3,0x13,0x56,0x51,0x5f,0x12,0x4f,0xb1,0x88,0xc6,0xfb,0xf1,0x0b,0x4f,0x79,0x21,0x6b,0x7b,0xfa,0x6c,0x1a,0xca,0x60 },
{ 0x84,0xfc,0x57,0x2f,0xcc,0x0b,0xac,0x00,0x96,0x25,0xcf,0xd9,0xb2,0x4b,0x92,0x8f,0xca,0x32,0xe6,0x66,0x4a,0xe3,0x1f,0x4d,0xc5,0x1e,0xac,0xe1,0x1d,0x60,0xb0,0xf4 },
{ 0x2e,0x71,0x23,0x40,0x9b,0xef,0x16,0x4a,0x49,0xef,0xf1,0x97,0xf5,0x27,0xcb,0x11,0x6e,0x16,0x6c,0x26,0xe2,0x3e,0xcd,0x68,0x47,0xf7,0x16,0x87,0x70,0x2c,0x7f,0x3a },
{ 0x25,0x43,0x5c,0x75,0xfc,0x17,0x02,0xe0,0x46,0x85,0xf0,0xfc,0xd8,0x9a,0xee,0x86,0xb1,0xf5,0x06,0x95,0xbd,0xae,0xd9,0x1f,0x56,0x34,0x56,0x05,0x9f,0xce,0x0b,0xe3 },
{ 0xa3,0xda,0x23,0xed,0x2e,0x2a,0x52,0xf5,0xc9,0xfe,0x19,0x67,0xb1,0x06,0x5d,0xa5,0x00,0xee,0x47,0x8e,0xa4,0x45,0x05,0x6c,0xba,0xba,0xc2,0x6a,0xe1,0xb7,0xe7,0xed },
{ 0xe4,0x02,0x64,0xcc,0x51,0x80,0x5f,0x31,0xf3,0x9d,0x1f,0x15,0x8d,0x72,0xd0,0x03,0xe2,0x5b,0x9e,0x4e,0xf6,0x5e,0x50,0x15,0x4f,0xf9,0xb4,0x40,0x62,0x89,0xca,0xee },
{ 0xa6,0x1d,0x1e,0xbf,0x98,0x69,0x25,0x8e,0xba,0xdc,0x0f,0x01,0x42,0x3c,0x71,0xa8,0x85,0xd9,0xa2,0xf0,0xa7,0x4f,0x26,0xce,0xda,0x28,0x32,0x25,0xdd,0xec,0xba,0x4e },
{ 0x97,0x84,0x49,0x3d,0x9c,0x26,0x08,0x63,0xb6,0x12,0x4d,0x36,0x2c,0x71,0xaa,0x3a,0xe2,0x95,0x03,0x40,0x87,0x55,0xfb,0xa2,0x71,0xd0,0x22,0xdc,0xd3,0xc3,0x3a,0x69 },
{ 0x8a,0xa3,0xd5,0x5a,0x48,0x32,0xb1,0x0b,0x3b,0x05,0xf7,0xee,0xd1,0x71,0xca,0xfb,0xe8,0x89,0x9f,0x9f,0xb6,0x19,0x42,0xc1,0x38,0xaf,0x43,0x0e,0xd1,0x96,0x29,0x7c },
{ 0x7e,0x0a,0x4e,0x02,0xb4,0x85,0x40,0x89,0x8e,0x2f,0xf3,0xed,0x56,0xbc,0x24,0x31,0x06,0x8d,0x4e,0xff,0x64,0x99,0x12,0xfd,0x95,0xb3,0x9d,0x10,0xaf,0x59,0x52,0x68 },
{ 0x26,0xcf,0xa7,0xe9,0x76,0x05,0x96,0x28,0x2b,0x8e,0x64,0x37,0x6e,0x34,0xef,0x87,0x93,0xc5,0x2d,0x24,0xcb,0x4c,0x9d,0x6a,0x59,0xaa,0xf9,0x52,0xcc,0xe1,0x23,0x66 },
{ 0xe8,0xea,0x3d,0xf8,0x08,0xe4,0x2a,0x8a,0x2e,0x29,0x65,0xf1,0xc2,0xfc,0x03,0xd6,0x4b,0x6d,0xc4,0x59,0x99,0x8e,0xe5,0x92,0xb1,0xcc,0x4e,0xe5,0x7f,0xad,0x1f,0x58 },
{ 0x8e,0x9a,0x8f,0x75,0x37,0xcf,0x51,0x39,0xfa,0x6b,0xfb,0x45,0x95,0x6e,0xd0,0x9e,0xba,0xef,0x85,0x54,0x4c,0x83,0x19,0xbc,0x34,0x09,0xe7,0x37,0xb8,0x7b,0xd5,0xe1 },
{ 0x95,0xf0,0xec,0xad,0x43,0xe1,0x98,0x9b,0xb2,0x7f,0xbe,0x20,0xba,0xab,0x54,0x82,0x7a,0x0c,0x23,0xd7,0xef,0xb3,0x94,0x56,0x2d,0x73,0xc0,0x43,0x0c,0xd6,0x1d,0x5a },
{ 0x53,0x45,0x9d,0x2c,0x16,0x2d,0xc0,0x84,0xc7,0xbf,0x2c,0xe6,0xb5,0xf6,0xf1,0xe7,0x3a,0x8f,0xd6,0x70,0x39,0xe5,0xdd,0x5e,0x5b,0xe3,0x45,0x5a,0xea,0xa7,0xd9,0x4f },
{ 0x2d,0xdb,0xbd,0xe0,0xab,0x64,0x82,0x29,0x87,0x44,0x89,0xb0,0x24,0xb5,0x03,0xd4,0xc9,0x11,0x2b,0x2d,0x87,0xfa,0x80,0x43,0x67,0x67,0xab,0xa8,0x32,0x3e,0xcb,0x2e },
{ 0xd9,0x92,0x4f,0x3c,0x94,0x98,0xba,0xcf,0x12,0x63,0xd0,0xb6,0x86,0x0d,0x47,0xc1,0x7e,0x4d,0x71,0xd7,0xf0,0x0e,0x0b,0xcf,0x68,0x8e,0x13,0xeb,0x6b,0xc7,0x89,0xa0 },
{ 0x4d,0x3a,0x0e,0x53,0x13,0x8f,0x3e,0xec,0x30,0x39,0x0b,0xa8,0x0a,0xce,0x77,0x92,0x30,0x11,0x43,0x9a,0xd5,0x4c,0x45,0x79,0xea,0x4a,0xb9,0x04,0x3f,0xdd,0x31,0xe2 },
{ 0x87,0x7b,0x67,0x86,0xc5,0x69,0x9e,0x88,0xb9,0x07,0x68,0x4e,0xb5,0x92,0x05,0x58,0xc1,0xed,0xa7,0xd0,0x58,0x85,0xa2,0x04,0x8d,0x16,0x33,0xc1,0x91,0x09,0x7d,0x51 },
{ 0xcb,0x9f,0x80,0xa3,0xbb,0xb8,0x1a,0xf7,0xb9,0xbc,0x33,0xbc,0x93,0x2e,0x52,0x28,0xf6,0x35,0x7c,0x6c,0xa7,0x16,0xcb,0xb6,0xde,0xff,0x23,0x9d,0xb0,0x79,0x2d,0xad },
{ 0x18,0x49,0xa4,0xb2,0xda,0x7b,0x8e,0x79,0xef,0xb5,0x47,0x6d,0x4d,0x61,0x79,0xbe,0xc3,0x6b,0x16,0x99,0xd5,0xb1,0x60,0x8c,0x9f,0xc7,0x7c,0x08,0x2f,0x17,0x4e,0xe4 },
{ 0xc4,0xc8,0x1a,0x39,0x33,0xd6,0xc3,0xa4,0x66,0x44,0xbf,0x41,0x15,0x96,0x46,0x51,0x05,0x05,0x7f,0xa0,0x77,0xcb,0xf8,0x28,0xb7,0x38,0x14,0xb9,0x0b,0x5e,0x3d,0xd5 },
{ 0xd0,0xa5,0x87,0x8e,0x47,0x96,0x8f,0x54,0x9a,0x7b,0x8d,0xe0,0x80,0x92,0xf6,0x82,0xe1,0x54,0x6f,0x87,0xbb,0xad,0xa9,0x45,0xb3,0x30,0x97,0x38,0x62,0xf8,0x73,0x39 },
{ 0xb9,0xa6,0x52,0xe8,0xe2,0x80,0x89,0x0c,0x7a,0xea,0xa0,0xb2,0x39,0xbe,0x0b,0x88,0x81,0x23,0xf0,0x12,0xcf,0xc8,0x86,0xf0,0x1d,0xfb,0x13,0x66,0xc7,0x8f,0x4a,0xa0 },
{ 0x36,0x5b,0xcb,0xb5,0x8c,0xc9,0x58,0xd9,0x39,0x9f,0x03,0xfc,0x0c,0x37,0x75,0x91,0x7f,0x79,0xb9,0x00,0xd0,0x68,0xe9,0x41,0xe7,0xfe,0xb6,0x94,0x36,0x9b,0xb2,0x32 },
{ 0x3f,0x5c,0x51,0x8d,0x59,0x90,0x6f,0xf2,0xbd,0x89,0xea,0x69,0x7b,0x85,0x98,0x3c,0x30,0x76,0x44,0xc0,0x01,0x44,0xf5,0x34,0x5b,0x02,0xa8,0x8a,0xdd,0xce,0xb0,0xfd },
{ 0x4c,0xfa,0x4b,0xe4,0x3a,0xb2,0x76,0xf4,0x10,0xbc,0xae,0x5e,0xe6,0xe7,0x6e,0x01,0xe3,0xc3,0xe0,0x03,0x8a,0x5c,0xa2,0x37,0x0b,0xf1,0x0e,0x4a,0x2c,0x23,0x50,0x5d },
{ 0x83,0xed,0x6e,0x02,0x76,0x5f,0x9b,0xf7,0x7c,0xb3,0xe1,0xd6,0x28,0xc4,0x49,0x9e,0x60,0x08,0x60,0x4a,0x3e,0xe8,0xdd,0xc5,0xd7,0xbd,0xeb,0xf4,0x4f,0x7c,0xf5,0x41 },
{ 0xbe,0xbd,0x51,0x6a,0xab,0x15,0x29,0xca,0x28,0x91,0xa2,0x90,0x92,0x20,0xaa,0x2c,0x41,0xe9,0xae,0xa4,0xe3,0x98,0xc9,0xc3,0xb1,0xcf,0x9d,0x29,0x69,0x18,0x25,0x6d },
{ 0xe5,0xd4,0x92,0x79,0xee,0x8b,0x0d,0xf4,0xfd,0xb8,0x90,0xa9,0xbc,0x08,0x37,0x05,0x81,0x16,0x1a,0xdf,0x37,0xbc,0x47,0xd3,0x4a,0x3b,0x34,0xe5,0x6a,0x1f,0xad,0x65 },
{ 0x23,0xbf,0xcc,0x11,0xd9,0x36,0x4d,0xf4,0xc0,0x48,0x41,0x78,0x72,0xcd,0xa5,0x14,0x87,0x4c,0x5d,0x62,0xe2,0xdf,0x03,0xce,0x71,0x2d,0xe9,0x5e,0x50,0xdf,0xcb,0xc3 },
{ 0xfb,0x03,0xb7,0x3f,0x73,0x60,0x86,0x86,0x0f,0x7a,0xaa,0x70,0x7f,0xd1,0xe3,0xeb,0x43,0xfc,0x38,0x21,0xee,0x39,0x60,0x10,0x03,0x52,0x8c,0x74,0xd0,0x87,0x70,0xb8 },
{ 0x73,0x53,0x2d,0xaa,0x21,0x3b,0xc1,0x88,0x9a,0xe9,0xb5,0x13,0x01,0x68,0x24,0xd8,0x07,0x6b,0xab,0x74,0x76,0x05,0xbc,0x02,0x91,0x08,0xb5,0x11,0x5f,0x17,0x2c,0x36 },
{ 0x09,0xd8,0x7c,0x23,0x8e,0xc0,0x7c,0xa1,0xe4,0xff,0x24,0xbe,0xed,0x4b,0xa1,0x8a,0xfb,0x6d,0x29,0x11,0x62,0xdb,0xc9,0x05,0x53,0x76,0xbf,0xcf,0x93,0xfb,0x57,0xec },
{ 0x44,0x0f,0x72,0x64,0x08,0xcc,0x92,0x88,0x15,0x3d,0xcc,0xae,0xc6,0x59,0xfe,0xd3,0x64,0xb7,0x69,0xa5,0xc8,0x63,0x12,0xfa,0xb4,0xf4,0x71,0xd3,0x04,0xaa,0x73,0x98 },
{ 0x73,0x6d,0x24,0xdc,0x95,0x2f,0x5e,0x39,0x01,0xcb,0x24,0x83,0x50,0x21,0x13,0x45,0xf4,0x60,0x1e,0x11,0xa7,0x9b,0x97,0x23,0x74,0x29,0x21,0xd3,0xab,0x06,0x19,0x32 },
{ 0x1c,0x00,0xce,0x05,0xf0,0x2d,0xc7,0x35,0x3b,0x57,0xe3,0xba,0x95,0xd4,0x1c,0x87,0x91,0x26,0xdd,0xa5,0xec,0x42,0xd6,0xb7,0x07,0x21,0x22,0x35,0xbf,0x9c,0xd1,0xaa },
{ 0xfa,0x14,0x3a,0xcb,0x7a,0x25,0x1d,0x57,0x29,0x3e,0xc5,0x30,0xed,0xe1,0xfd,0x85,0x0c,0xe4,0xc1,0xdd,0x04,0xd7,0x9b,0xaa,0x68,0x83,0xb9,0xb3,0x1f,0xf1,0x6b,0xfe },
{ 0x24,0x31,0xcd,0xa4,0xb5,0x63,0xbb,0xd1,0xd6,0x72,0x9e,0x9d,0x22,0xcc,0x61,0xc0,0x25,0x8a,0x09,0x9b,0xd6,0x6f,0xf4,0x74,0x92,0xef,0x53,0x9f,0x4c,0x59,0xca,0x2f },
{ 0xe1,0xb8,0xd5,0xfd,0xeb,0xbe,0x87,0x07,0x7e,0x1b,0x92,0xdb,0x14,0x44,0xe2,0x03,0x47,0x30,0xae,0xa5,0xf9,0xad,0x8c,0xff,0xc6,0xc8,0xb3,0x50,0x1c,0x7f,0xad,0xf4 },
{ 0xad,0x98,0xf4,0x2c,0xb6,0x88,0x90,0xaf,0x56,0xe2,0x30,0x7c,0x16,0xe0,0xe3,0x21,0xea,0x52,0x67,0x87,0xa2,0x9f,0xeb,0x10,0x13,0xa6,0x5a,0x78,0xc0,0xd2,0x1c,0xce },
{ 0xdd,0xf3,0xf2,0xce,0xb3,0x03,0x81,0xcc,0x95,0xc8,0x79,0x63,0xb4,0xae,0x5a,0x25,0x67,0x5f,0xca,0x6c,0x58,0x04,0xb7,0xc9,0xb7,0xc1,0xc6,0x55,0xc6,0x49,0x6d,0x44 },
{ 0xdc,0x2a,0xc1,0x6f,0x15,0x2b,0xbf,0x2d,0xcf,0x72,0xd3,0x94,0xc7,0x7c,0x5c,0x52,0xe2,0xd3,0xfd,0x40,0xc5,0x78,0x3d,0x56,0xd7,0x51,0x6d,0x67,0x2c,0x31,0x52,0x24 },
{ 0x00,0xc7,0xae,0xf5,0xd2,0xa8,0x9c,0x0a,0x8c,0xd0,0xa2,0xe9,0x68,0x85,0x69,0x7b,0xcb,0x66,0x01,0xdc,0xef,0xe5,0x3a,0x22,0xfd,0x6d,0xdc,0x6d,0x30,0x41,0xb3,0x39 },
{ 0x90,0x0c,0xc8,0x4f,0xe6,0x3b,0x0d,0xc1,0xf0,0x80,0x16,0xa9,0x24,0x65,0x5f,0x3e,0x93,0x17,0xf0,0xa8,0xdd,0xa7,0x1a,0xb7,0x42,0xdb,0x13,0x8e,0x77,0x5f,0xe6,0x8b },
{ 0x25,0x30,0x08,0x75,0xcf,0xe5,0xf8,0x36,0x36,0xdf,0xc2,0x92,0x9b,0x37,0xc9,0xe2,0x65,0x29,0xed,0xfe,0x44,0xe4,0x51,0x3e,0xc0,0xb7,0x83,0xad,0x5e,0x6b,0xd7,0x4b },
{ 0x7c,0x08,0x24,0x72,0xa2,0x7e,0xd2,0x3b,0x90,0x5c,0xd7,0x39,0x1b,0x01,0xbd,0x4c,0xda,0xec,0xfb,0x6d,0xff,0xd1,0x67,0xcc,0x09,0xb5,0x3a,0x53,0xdf,0xef,0x25,0xff },
{ 0x7a,0xdb,0xd9,0x44,0xf8,0x11,0x53,0x7e,0x37,0x7a,0x67,0x3c,0x31,0xd5,0xae,0x2f,0x3d,0xdf,0x7f,0x10,0x69,0x9f,0xab,0x9f,0xfd,0x43,0x23,0x3a,0xda,0xd6,0xcb,0x78 },
{ 0xde,0x78,0x35,0x34,0x55,0x3b,0x4e,0xe2,0x5c,0xe2,0xa9,0x49,0xb6,0x03,0x41,0x89,0xbd,0x75,0x4b,0x10,0xc4,0x66,0x21,0x95,0x8c,0xad,0x3f,0xc1,0xb7,0x93,0x3c,0x6a },
{ 0xa5,0xa8,0xe5,0xbf,0xf7,0x75,0x9e,0x46,0x2e,0x1b,0x2c,0xea,0x74,0x42,0xc9,0x29,0x95,0x60,0x01,0xa2,0xd4,0x2d,0x0e,0x73,0xb4,0x46,0x67,0x85,0x67,0x6b,0x7e,0x8f },
{ 0xe2,0xc6,0xaa,0x2a,0xf8,0x67,0x08,0xb9,0x3e,0x2a,0xdc,0x41,0xeb,0x7f,0x33,0xc4,0x86,0x59,0x91,0xe7,0x06,0x34,0x12,0xe5,0x07,0xe7,0x94,0xee,0x14,0x8a,0x53,0x24 },
{ 0xfc,0xd9,0x2d,0x84,0x16,0x44,0xd1,0x15,0xd0,0x08,0x22,0x11,0xcc,0x38,0xad,0x02,0xda,0x01,0x08,0xf3,0x8f,0x1a,0xac,0x53,0x7c,0xd3,0x1c,0x61,0x43,0xae,0x69,0x99 },
{ 0xb8,0x83,0x11,0x4d,0x7d,0x96,0x74,0x4d,0xc9,0xe5,0xe5,0x01,0x19,0xca,0xfe,0x6d,0xf9,0x3c,0x61,0x09,0x45,0x59,0x7a,0xfc,0x7b,0x7d,0x5d,0x26,0x4b,0x55,0xa2,0x8f },
{ 0x7e,0x4b,0xbc,0x65,0x26,0xc2,0x4f,0x73,0xe4,0x43,0x92,0xa5,0xf7,0x6a,0x19,0xd5,0x33,0xaa,0x3f,0x98,0x7e,0x49,0xb9,0xf5,0x79,0xb1,0xc6,0x5a,0x9d,0x36,0x77,0xc6 },
{ 0xe8,0x17,0xc7,0xad,0xbd,0xf6,0x1e,0x16,0x53,0x81,0xbf,0x56,0x74,0x5e,0x21,0x35,0x4a,0xdf,0x64,0x82,0x61,0x15,0x87,0x15,0x8d,0x0e,0x65,0x8f,0x6d,0x52,0x19,0xee },
{ 0x1c,0x7e,0x9a,0x1a,0x67,0xb3,0x70,0xc2,0xa2,0x1c,0x3c,0x52,0xe1,0xc1,0xfb,0x90,0x44,0x61,0x0e,0xaf,0x40,0x5b,0x69,0x20,0xea,0x4a,0x10,0x70,0x12,0xb0,0x55,0xe3 },
{ 0x46,0x6c,0x29,0x33,0xda,0x48,0xca,0x77,0x2b,0x43,0x8a,0x87,0x3c,0x05,0x53,0x10,0x3d,0x04,0x26,0x2d,0xf0,0x13,0xbe,0x43,0x0f,0x28,0x9a,0x5f,0xc5,0x56,0xce,0x3d },
{ 0xd3,0x29,0xf6,0x93,0x9d,0xa5,0xfd,0xfa,0xac,0x79,0x45,0xcf,0x85,0x05,0x7c,0x19,0x77,0x04,0xc2,0x19,0xb3,0xbc,0xea,0xe1,0xaf,0x9c,0x3f,0x3f,0x19,0x7e,0x8d,0x84 },
{ 0x77,0x6b,0xec,0x1a,0x55,0x86,0x0e,0xf5,0x31,0x66,0xb2,0xdc,0xe5,0xae,0x90,0xba,0xc4,0x4c,0xe9,0x72,0xc7,0x7d,0xdc,0x5a,0xf7,0xec,0x1a,0x86,0x5c,0x0b,0x2a,0xa6 },
{ 0x10,0x74,0x9e,0xf6,0x9e,0x52,0x48,0xa6,0xc5,0x09,0xf5,0x4b,0xee,0x84,0xce,0x59,0x06,0xa0,0x8f,0xf7,0xeb,0x2b,0x66,0x9d,0x1c,0x37,0x20,0x60,0xf1,0x5b,0xa1,0x07 },
{ 0x1c,0x64,0xcb,0x0d,0x63,0x13,0x06,0x01,0x43,0xf4,0x01,0xd2,0x88,0xd3,0x87,0x27,0x5f,0x8c,0xfb,0x05,0x09,0xb0,0x6d,0x2b,0x90,0x8a,0x75,0x28,0x86,0x34,0x89,0x39 },
{ 0x33,0xd7,0xaf,0xc4,0x2a,0x42,0x64,0xac,0xd4,0x0e,0xcb,0xa2,0xa9,0xd2,0x87,0xc9,0x18,0x3d,0x57,0xec,0xea,0x1b,0xf1,0xe9,0x43,0x7b,0x4b,0xde,0xf6,0x97,0xcd,0xcc },
{ 0x0a,0xe0,0xf6,0x1c,0xdf,0x6b,0x21,0x78,0x54,0x36,0x07,0x29,0x49,0x42,0x4b,0xdd,0xde,0x17,0xc0,0xa3,0x4b,0xa4,0xfb,0xc2,0xf8,0x70,0x65,0xec,0x34,0x05,0xfd,0xc7 },
{ 0x00,0x62,0x82,0x4c,0x1a,0x78,0xae,0x3c,0xca,0x9e,0x5b,0xdf,0xf1,0x6c,0xd1,0x12,0xb4,0x2b,0x4f,0xcf,0xdc,0x46,0xd1,0x97,0xfc,0x7a,0x7d,0x5b,0xe9,0x6b,0x41,0xbd },
{ 0x42,0x02,0x81,0x96,0x2f,0xb7,0xc8,0xe7,0x59,0x78,0x06,0xe8,0x11,0x4c,0xf9,0x07,0xa3,0x6c,0x33,0x4b,0xab,0xc2,0xc8,0xbe,0xc7,0x5a,0x5d,0xa3,0x62,0xee,0xad,0xbd },
{ 0x7d,0x66,0x79,0xcf,0xd5,0x8e,0xb7,0xd4,0x1d,0xdd,0x69,0x07,0x35,0x32,0x58,0xa6,0xfe,0x84,0xbe,0xa3,0x0c,0x80,0xf5,0x44,0xc6,0xde,0xb3,0x20,0x07,0x6a,0x06,0x09 },
{ 0xca,0x22,0x9f,0xae,0x0e,0x09,0xea,0xe9,0xc1,0x65,0x5b,0x93,0xb9,0xd6,0x93,0xfe,0x36,0x16,0x9b,0x10,0x68,0x72,0x0b,0x11,0x17,0xbc,0xf9,0x39,0xa7,0x2c,0x55,0x5f },
{ 0x6f,0xc1,0x80,0x78,0x3f,0x90,0x63,0x8c,0xf0,0x13,0x59,0x0f,0x81,0x96,0x39,0xfa,0x2b,0xb6,0xe0,0x94,0xd6,0xdb,0x9b,0xa8,0x37,0x2f,0xd2,0x7b,0x89,0x6b,0x63,0x0c },
{ 0x69,0x52,0x52,0xd6,0x78,0x7c,0xf8,0xdf,0xe9,0xe8,0x29,0x46,0x03,0xce,0x70,0x24,0x80,0x1b,0x95,0x7e,0x56,0x41,0xad,0x9d,0x05,0x9d,0x20,0xa8,0x28,0xfc,0xf9,0xbd },
{ 0x17,0x6f,0xfb,0xd1,0xe6,0x2b,0x37,0x8d,0xaf,0xe7,0xca,0x1a,0x98,0x04,0xcf,0x9b,0x54,0xaf,0xc5,0x2a,0x9b,0x76,0x2f,0x4b,0x78,0xef,0xf1,0xff,0xda,0xc3,0x69,0x95 },
{ 0xbb,0x08,0xdb,0x29,0x65,0xf0,0x81,0xdf,0xf6,0xc3,0x64,0xa4,0x9a,0x34,0x10,0xfc,0xe5,0x2a,0xae,0x5c,0x89,0x1e,0x21,0xb4,0x4d,0x03,0xc4,0xea,0xcc,0xa1,0xf4,0x93 },
{ 0xc5,0x54,0xe5,0x0a,0x60,0x06,0x2b,0x88,0xa9,0xcd,0x81,0xa1,0xa7,0x24,0xc8,0x84,0xc8,0x06,0xa7,0x7f,0x4f,0x96,0x59,0xf7,0x6a,0x05,0x83,0x54,0x1a,0x90,0x60,0xe1 },
{ 0x2c,0x8b,0xa0,0xe3,0x11,0xba,0x32,0xac,0x8b,0x0b,0x29,0xca,0x83,0x79,0x9b,0x09,0x5f,0xde,0xa2,0x5c,0xbc,0x0a,0x9c,0xb7,0xcf,0x16,0xda,0x7a,0x95,0xaf,0x68,0xe8 },
{ 0xc1,0xfd,0xd6,0xd0,0xa0,0xd8,0xb3,0x13,0x97,0x44,0xd0,0x0f,0x04,0x71,0x59,0xce,0x71,0xc8,0xa9,0xb4,0x3c,0xad,0x47,0x88,0xea,0xa5,0x3c,0xb8,0x3c,0x4f,0x35,0x66 },
{ 0xb6,0xab,0x69,0xad,0xdd,0x05,0x82,0xda,0x01,0xd4,0x05,0x83,0x91,0x86,0xf6,0x80,0xc1,0x53,0x61,0xb2,0x7f,0x46,0x83,0x53,0x12,0x1b,0x6a,0x67,0xe6,0xa7,0xc3,0x8b },
{ 0xa1,0xb9,0x8c,0x93,0xbe,0x35,0x59,0x7d,0x82,0xec,0x5c,0x18,0xd9,0x89,0x64,0x14,0x99,0x9a,0x23,0x64,0x55,0x25,0x6e,0x64,0xdf,0xc8,0x37,0x4f,0xd7,0xf6,0x04,0x76 },
{ 0xcf,0xe5,0x65,0xb7,0xf0,0xfc,0x20,0xa8,0x85,0x4d,0x83,0x61,0xfc,0xa9,0x0c,0xeb,0x40,0xb5,0x9d,0x87,0x73,0x6c,0x3d,0x5b,0xaa,0x8d,0x7c,0xcb,0xd7,0x12,0xe5,0xc3 },
{ 0x33,0x2d,0xdc,0xcf,0x07,0x23,0x20,0xe8,0x2a,0xa1,0xb2,0xda,0x42,0x30,0x34,0x41,0x0e,0x14,0x00,0x5a,0x06,0xa2,0x0b,0xb4,0x51,0xfc,0x67,0x4b,0x14,0x0d,0x54,0x5c },
{ 0xa9,0x23,0x6a,0xdc,0x50,0x6a,0x09,0x63,0xe9,0x8d,0x40,0x21,0x78,0x06,0x4d,0xc8,0x97,0xa1,0x30,0x18,0x6b,0x0e,0x09,0x7a,0x5e,0x8f,0x1f,0x62,0xcf,0xee,0x69,0x4f },
{ 0x88,0x96,0x6e,0xfe,0x06,0x43,0xba,0xf6,0x51,0xe7,0x8a,0x19,0x28,0x48,0xc7,0x77,0x56,0xf2,0x8c,0x32,0x10,0x4b,0x15,0x2d,0x9c,0x5f,0x8b,0x76,0x01,0xd7,0x6b,0xe3 },
{ 0x7f,0x2f,0x99,0x8c,0x51,0x13,0xce,0x98,0x36,0x88,0x83,0xff,0x6e,0xa5,0xdf,0x69,0x8d,0x31,0x36,0x45,0x8b,0xe5,0x93,0xbd,0x53,0x00,0x0d,0x67,0x0b,0x93,0xfc,0x6d },
{ 0xbe,0x2f,0x68,0x58,0xe6,0xb0,0x2e,0x5c,0x89,0x13,0x19,0x1f,0x60,0x52,0xb2,0x97,0x61,0x57,0x4b,0xcb,0x34,0x68,0xe6,0x1d,0x8a,0x48,0x4f,0x2d,0x66,0x99,0xe1,0xbe },
{ 0x4c,0x24,0xe9,0x94,0x42,0x1c,0x72,0xaf,0xca,0x6d,0x6a,0xf4,0x48,0x7e,0x86,0x97,0x4d,0x65,0x4f,0x70,0x3d,0xae,0xe5,0x81,0xf1,0x16,0x32,0xff,0xa7,0x62,0xd4,0x1a },
{ 0x14,0xd2,0x71,0x06,0x50,0x26,0xfb,0x5c,0x6f,0x8f,0x9c,0x6d,0xc1,0xbe,0x2b,0xb0,0x95,0x4f,0x90,0x92,0x6c,0xf1,0x64,0x4f,0xab,0x2f,0x03,0x8c,0x34,0x3b,0xac,0xf8 },
{ 0x77,0x4d,0xc4,0x72,0x62,0xf8,0xd3,0xda,0x10,0x52,0x27,0x30,0xf7,0x3e,0x75,0x18,0xd8,0x30,0x39,0x6d,0x3c,0x38,0x73,0x05,0x20,0x4b,0x9b,0x1c,0x49,0xf0,0xcc,0x02 },
{ 0xd3,0x74,0x07,0xf5,0x7c,0x16,0x15,0xe9,0xa1,0xc5,0x9b,0x1c,0xb9,0x64,0x3b,0xdf,0xaa,0xdc,0xa0,0xca,0x03,0xe9,0xb5,0xf9,0x79,0xcf,0x7b,0x0f,0x6c,0x07,0x14,0x0b },
{ 0x03,0xc5,0x2b,0xb9,0x38,0x86,0xf0,0x5b,0xab,0xc3,0x03,0x04,0x3c,0xb4,0xc6,0xb1,0x24,0xcd,0x95,0x03,0xcf,0xfd,0xc1,0x93,0x8c,0x19,0x53,0xdc,0x7e,0x1d,0x2e,0x9c },
{ 0x3c,0x47,0x67,0x8b,0xd0,0x43,0x2b,0x9d,0xe2,0x2f,0x67,0xc4,0x62,0x56,0xa0,0xe4,0x86,0x23,0xc4,0x65,0x78,0xdb,0x11,0x84,0x50,0xfe,0x8c,0x6e,0xb3,0x24,0xba,0xd6 },
{ 0xa9,0x14,0x18,0xe6,0xf7,0x9d,0x48,0x31,0x94,0xa2,0x42,0x19,0x73,0x1e,0x9c,0xbe,0x18,0x46,0xa5,0xc8,0x21,0x97,0x60,0xb9,0x7a,0xaa,0x6a,0x17,0x4b,0xbf,0x89,0x26 },
{ 0x9f,0x61,0x93,0x9a,0xb8,0xde,0x8d,0x63,0x9a,0x85,0x7a,0xc0,0x30,0x53,0xb2,0x1b,0x7e,0xc9,0x0b,0x8f,0xd6,0xcc,0x92,0x26,0x1c,0x82,0x46,0x0b,0x1a,0xa9,0x28,0xe4 },
{ 0x08,0xae,0x96,0xc3,0x3c,0x3a,0x28,0xaf,0xaf,0xd9,0xc2,0xbb,0x8f,0xe2,0x86,0x2c,0x05,0x13,0x53,0x00,0x43,0xd6,0xb4,0xee,0x66,0xfa,0xb5,0xc6,0x15,0x03,0x15,0xe9 },
{ 0x62,0x96,0xb1,0x11,0xc2,0x3b,0xbc,0xbd,0xf4,0x5e,0xe6,0x58,0xa7,0x6e,0x49,0x16,0x55,0x1b,0x79,0x6d,0x39,0x3e,0xd7,0x18,0xdd,0xee,0xbd,0x95,0xee,0x08,0xb7,0xb0 },
{ 0x88,0xa8,0xad,0x15,0x10,0x14,0x3d,0xcb,0x0a,0xdf,0xa8,0xe8,0x04,0xa0,0x2f,0xd4,0x3a,0x71,0x06,0x85,0x86,0xe9,0xae,0x3c,0x29,0xe0,0xe7,0x10,0x6c,0x2d,0x24,0xb1 },
{ 0x46,0xc2,0xd4,0x4f,0xd9,0x4f,0x46,0xd1,0xa7,0x27,0xcd,0xb9,0xd6,0x83,0xf6,0x2a,0x0b,0xfc,0xd4,0xf9,0xc7,0x15,0xe6,0xda,0x6d,0x3d,0x9a,0x70,0xaf,0x16,0x21,0x5c },
{ 0xed,0xa7,0x25,0xc1,0x08,0x25,0xdb,0x9b,0xd7,0x97,0x27,0x14,0x96,0x8c,0x52,0x3e,0x7c,0xa0,0x65,0xe3,0x9e,0x08,0x9b,0xbf,0x61,0x4e,0x18,0x7d,0x6e,0xef,0x31,0x37 },
{ 0xa8,0x77,0xa3,0xbf,0x93,0x86,0xfe,0xa1,0xf4,0xe4,0x2c,0xb6,0x7d,0x91,0xfe,0xa7,0x51,0xca,0x69,0xfd,0x09,0x72,0xb0,0xe2,0x61,0x67,0x70,0x3e,0x93,0x4a,0xe6,0x46 },
{ 0x8a,0x58,0xfa,0x3d,0x82,0x1e,0x96,0x3a,0xc7,0x45,0x6c,0xb9,0xe6,0x59,0x43,0xd6,0xa0,0x10,0x99,0x83,0x22,0x4c,0xa7,0x20,0xae,0xaa,0xa2,0x73,0x93,0x0a,0x1d,0x57 },
{ 0xf6,0x80,0x6e,0x85,0x69,0x62,0xc6,0x67,0x6b,0x01,0x50,0xaa,0xd0,0x2b,0x84,0x59,0x3f,0x85,0x64,0xe6,0xed,0xc0,0xd3,0x11,0x4e,0xad,0x51,0xd2,0x41,0xc1,0xb7,0x75 },
{ 0x59,0xe8,0x10,0x44,0x08,0x67,0x84,0x79,0x50,0xe5,0x41,0x35,0xaa,0x3d,0x78,0x90,0x80,0x6b,0x85,0xdb,0xc6,0xf1,0x08,0x2f,0xf5,0x84,0x41,0x23,0xe6,0x39,0x3f,0x10 },
{ 0x80,0x6c,0xc7,0x72,0xff,0x82,0xfb,0xf0,0x66,0x44,0xa4,0x8c,0x60,0xfe,0x04,0xe7,0xf5,0xfd,0x54,0x01,0xa8,0xac,0xbc,0xea,0x2e,0x48,0x44,0x12,0x5b,0x7b,0x1b,0x58 },
{ 0x1f,0xcd,0xe4,0xca,0x8d,0xe6,0xd1,0xdd,0xad,0x8e,0x72,0xc6,0x39,0xf6,0xf2,0x76,0x03,0xc7,0x1c,0x2c,0x8a,0x11,0x86,0xcf,0x82,0x07,0xf6,0x67,0xba,0x54,0x20,0x2b },
{ 0x20,0xf0,0x24,0xc6,0x4a,0xe3,0xca,0x6c,0x4f,0xf3,0x9d,0x5e,0x04,0x59,0x77,0x98,0x62,0xea,0x0e,0x39,0xee,0x11,0x2e,0xbd,0x57,0xea,0xea,0xeb,0xd7,0xe4,0x5c,0x85 },
{ 0x85,0xe3,0x23,0xa4,0xdd,0xb8,0x24,0x86,0x10,0x74,0x1c,0x57,0x10,0x1c,0x40,0xef,0x58,0xa3,0x48,0xbb,0x03,0xb7,0xa5,0x87,0x74,0xdf,0x67,0xf3,0xb8,0xc9,0x83,0x78 },
{ 0x8b,0x5d,0x34,0x4b,0x37,0xdf,0xe5,0x4e,0x94,0xd6,0x7b,0xb2,0x41,0xa0,0xd6,0x13,0x70,0xbb,0x2c,0x88,0x9a,0xec,0x52,0x1f,0x63,0xa3,0xf4,0x97,0x7e,0xde,0x7b,0xec },
{ 0x3a,0x2d,0xf8,0xd4,0x96,0xb0,0xe0,0x28,0x78,0x53,0xed,0x2b,0x5c,0xa8,0x22,0x87,0x8e,0x7c,0x12,0xd1,0x06,0xad,0x10,0x29,0x14,0xd5,0x47,0x82,0xfc,0xfa,0x1b,0x08 },
{ 0x35,0x50,0x69,0xf4,0xc8,0xeb,0x87,0x18,0x3c,0x05,0x16,0xeb,0xa3,0xc4,0x05,0x37,0xda,0x59,0x67,0xef,0x7d,0xea,0x22,0x4c,0x08,0x7d,0x34,0x0d,0xdd,0x80,0x89,0x69 },
{ 0xbd,0x26,0x3e,0xd5,0xcc,0xb8,0x02,0x50,0x15,0x75,0x6c,0xed,0x7c,0x20,0x43,0x50,0x5d,0x8c,0x5d,0xea,0x10,0x7e,0x15,0x8b,0x37,0xa6,0xfd,0x90,0xd2,0x75,0xf6,0x33 },
{ 0x05,0xf2,0x50,0x1c,0x57,0xbc,0x49,0xb5,0xdb,0xbe,0x0a,0x4c,0x94,0x5c,0x16,0xa6,0xba,0xf9,0x1f,0xaa,0x88,0x93,0x40,0x94,0x4d,0x81,0x9c,0x0d,0xae,0x7a,0x25,0xee },
{ 0x9e,0xa6,0xdd,0x11,0xf9,0x38,0x1a,0xd2,0xdd,0x5f,0x47,0x49,0x16,0x7c,0xc9,0x32,0x25,0x3a,0xd8,0xdb,0x55,0x74,0xa7,0x4c,0xb3,0x7c,0x64,0xdc,0x38,0xdb,0xa4,0xad },
{ 0xfb,0xda,0xe6,0x75,0x2f,0x0d,0x3d,0x76,0x98,0x90,0x7e,0x85,0x5a,0x67,0xde,0x70,0xb0,0x97,0x81,0x18,0xa0,0x59,0x30,0x5e,0x6d,0x5c,0x97,0x01,0xc7,0xc0,0xb6,0x3d },
{ 0xb0,0x5d,0xdc,0x8b,0xbd,0xc9,0x63,0x1c,0x81,0xaf,0x00,0xb5,0x8f,0x38,0x27,0x71,0x90,0x57,0xc5,0xa6,0x33,0xb4,0xf7,0xd1,0x09,0x77,0xba,0xbf,0x42,0xdc,0x68,0x8a },
{ 0x5b,0xc7,0x23,0x15,0x39,0x85,0xaf,0xaf,0xb8,0x06,0xe2,0x45,0xc3,0x1e,0xdc,0xae,0xf8,0x59,0x07,0x0e,0x14,0xef,0x32,0x35,0x89,0x1b,0x15,0x1b,0x48,0x04,0x94,0x35 },
{ 0xeb,0x43,0x5b,0x96,0x59,0x5c,0x4f,0x8b,0x67,0xaf,0x32,0x65,0x0a,0xf8,0x0e,0xd0,0x9c,0x95,0xf5,0xe6,0x62,0xb4,0x50,0x0c,0x4f,0x80,0x54,0x61,0x5e,0x13,0x29,0xed },
{ 0xb4,0xdf,0x32,0x52,0x6a,0x21,0x8e,0x27,0xa5,0xe0,0x4e,0x4a,0xaf,0x66,0xb7,0xc6,0x4c,0x55,0xcc,0x80,0x70,0x76,0x27,0x26,0x0f,0xcb,0xf9,0xbd,0x0d,0x27,0xd4,0x2d },
{ 0x60,0x7d,0x45,0x13,0x80,0x53,0x0d,0xfa,0x3f,0x69,0x23,0x93,0x39,0xe6,0xeb,0x00,0x14,0x30,0x7c,0xf5,0xec,0x87,0x10,0x4b,0xa3,0xcd,0x8d,0xe7,0x02,0x81,0x5b,0x41 },
{ 0x42,0xf2,0x18,0x7c,0x99,0x79,0xac,0xad,0x3b,0x36,0xe5,0x11,0x44,0xf2,0xe5,0x56,0x1a,0x09,0x41,0xd5,0x8e,0xb6,0x7c,0xfc,0x12,0xf6,0x12,0x04,0xb6,0x47,0x52,0x1e },
{ 0xc5,0x54,0x82,0xbe,0x4c,0x0b,0x60,0xfb,0x09,0xea,0x93,0x2e,0x41,0x2f,0xe4,0x20,0xd1,0xa4,0x1f,0x06,0x1b,0xde,0xdf,0x0a,0xa0,0x9c,0x3c,0xf3,0x7e,0xe4,0x05,0xaf },
{ 0x61,0xb8,0xd6,0x74,0x0a,0xc3,0xdd,0x43,0x72,0xfc,0xc0,0xdb,0x7d,0x7e,0x6e,0x3e,0x51,0xd4,0x87,0x66,0x92,0x47,0xb5,0x24,0x10,0xdf,0xe0,0xd7,0x5a,0x8e,0x79,0x4c },
{ 0x06,0xc4,0x2a,0xef,0xf2,0x74,0x14,0x5b,0xec,0xda,0xab,0x49,0x19,0x16,0x1d,0x9a,0xd2,0x19,0x77,0xe6,0xf2,0x80,0xc5,0x5b,0xf1,0x52,0xbc,0xa4,0xaa,0x5d,0x54,0x7c },
{ 0xe9,0xba,0xb5,0x91,0x8c,0x6c,0x56,0xad,0xf5,0xb5,0x2d,0x56,0xce,0x9a,0x7f,0x6b,0x61,0xfb,0xf4,0x08,0x37,0xf6,0x77,0xf5,0xe6,0x63,0x65,0xef,0x11,0x8a,0x33,0xe1 },
{ 0x22,0xf2,0xf3,0xbc,0xa5,0x4e,0x3a,0xa6,0xcb,0xa9,0x34,0xab,0x7d,0x0f,0x6e,0xb1,0xda,0xa3,0x48,0xa4,0x9b,0xe3,0x9d,0x23,0x35,0x89,0x61,0x52,0xf2,0x36,0xa6,0xbe },
{ 0x36,0xb9,0x08,0x45,0xe4,0x6a,0xe5,0x01,0xde,0xed,0xcd,0x81,0x63,0x30,0xf9,0x2a,0xf5,0x82,0xb7,0x2a,0x69,0x10,0xdf,0x65,0x64,0xe4,0x89,0xf0,0x0e,0x07,0xcc,0x9c },
{ 0x0e,0xef,0x6b,0xb1,0xb5,0x5f,0x06,0x14,0x61,0xb1,0xba,0xe2,0xd3,0xc1,0x3a,0x97,0x76,0xe5,0xd6,0x22,0xed,0xd7,0xf8,0xb1,0xae,0x59,0x17,0xa2,0xc0,0xd3,0x65,0x90 },
{ 0xb0,0x5c,0x0d,0xf0,0x28,0xe7,0x78,0x89,0x94,0xbc,0x42,0xf2,0x84,0xa6,0x5e,0x1b,0x20,0xd2,0xce,0xd7,0x7d,0x02,0x6c,0x86,0xb1,0xe4,0xa1,0x39,0x2d,0xd1,0xcb,0xb8 },
{ 0xaa,0xca,0xeb,0xb0,0x68,0xcc,0xdd,0x5e,0x5c,0x36,0x13,0x8a,0x2d,0x0f,0xed,0xb8,0x1e,0x2e,0x73,0x31,0xdf,0x02,0xaa,0x1c,0xf7,0x76,0xaa,0x65,0x2d,0x3a,0x4f,0x02 },
{ 0xa8,0xc2,0xff,0x2a,0x5a,0x87,0x33,0x51,0xcb,0x88,0xec,0xb1,0x3e,0xcc,0x68,0xb9,0x4e,0x5d,0x80,0x42,0xcd,0x90,0x6f,0x31,0xbe,0xf4,0x78,0xe3,0xe6,0x16,0x9d,0x66 },
{ 0x0d,0xaf,0xc3,0x08,0x03,0xde,0xc0,0xcf,0xb4,0xd6,0xf9,0x32,0xa4,0x0a,0x01,0xbc,0x21,0x8d,0x4c,0xc3,0x5c,0x23,0x22,0x20,0x63,0x37,0x2e,0x26,0x15,0x3a,0x62,0x3c },
{ 0x31,0x79,0x4d,0x34,0xfb,0xd0,0x8e,0x55,0xa1,0x66,0xc1,0xd0,0x90,0xe3,0xe5,0xc4,0x21,0x5f,0x19,0x80,0x60,0xd9,0xfe,0xb1,0x97,0x1a,0x6f,0x3d,0x84,0xe2,0xb4,0x7d },
{ 0x53,0x9c,0xf0,0xde,0xe1,0x35,0xf1,0x48,0xbf,0xb7,0x91,0xf7,0x5f,0xfc,0x69,0x85,0xd8,0x25,0x1f,0xc0,0x65,0xf8,0x08,0xa5,0xda,0x3d,0xde,0x5a,0xdc,0x6c,0x76,0xed },
{ 0x40,0xd5,0xec,0xbc,0x3c,0x0a,0x48,0x69,0x20,0xf2,0xd9,0xe3,0x7a,0x40,0xf9,0x5b,0xb1,0x62,0x9a,0x77,0xbe,0xf7,0x92,0x56,0xbf,0xe9,0xb9,0xaf,0x2a,0x6c,0xb9,0xf8 },
{ 0xff,0x5e,0xfd,0x23,0x7b,0xf6,0x00,0x5e,0x96,0x0e,0x9c,0x5f,0x9b,0x86,0x0e,0x17,0x4e,0xe4,0x9d,0xd1,0x8b,0xaa,0x34,0xb0,0x81,0x4e,0xb1,0xee,0x5a,0x2e,0xd3,0x56 },
{ 0xab,0x7f,0xc2,0x42,0xda,0xb0,0xcb,0x84,0xac,0x5d,0x41,0x13,0x95,0x83,0x04,0xc0,0x07,0x8e,0x08,0x60,0xb6,0xc0,0x03,0x11,0x86,0x2a,0xdd,0x77,0xf8,0x42,0xd8,0xc1 },
{ 0x89,0x1d,0xeb,0x91,0xd9,0x56,0xba,0x73,0x33,0x9c,0xaf,0x1f,0xb0,0x34,0xd0,0x1e,0x25,0x8f,0xe6,0xe7,0xd4,0xb5,0x78,0xe0,0x40,0xd8,0xdd,0x98,0x2d,0xd9,0x6d,0xd6 },
{ 0xa4,0x12,0xf9,0xe1,0xec,0x77,0x2f,0xec,0x5b,0xe8,0xd5,0xd2,0x85,0x2a,0xac,0x7d,0xda,0xf0,0xfb,0xe5,0x48,0x88,0x2b,0x81,0x06,0x65,0x85,0x13,0x61,0xc8,0x7a,0xff },
{ 0xd7,0x54,0xca,0x59,0xd0,0xb6,0x0b,0x69,0x6a,0x6b,0xfd,0x4a,0xab,0x64,0x4f,0x49,0xde,0xa9,0x74,0xfc,0x49,0x82,0x1a,0x8c,0x54,0xa9,0xa5,0x12,0xef,0x4a,0x24,0xe9 },
{ 0xb3,0x4f,0xa2,0x0b,0x57,0xd8,0x69,0xf5,0x47,0x48,0x8b,0x4b,0x31,0xc7,0x6f,0x2a,0xb3,0xf2,0xdc,0xeb,0xca,0xb1,0x24,0xf7,0x02,0xbe,0x8d,0x34,0xb1,0x1b,0x4c,0x87 },
{ 0x1a,0xda,0x51,0x96,0xd2,0x60,0xde,0xac,0xf9,0xd5,0xa0,0xaf,0x53,0x08,0x29,0xd1,0x33,0x5e,0x10,0x25,0x37,0x3a,0x13,0x0a,0xf4,0x65,0x22,0x66,0x7c,0xcd,0xea,0x5b },
{ 0x84,0x4e,0x59,0x84,0x78,0x46,0x58,0x4e,0x69,0x0d,0x4b,0x6e,0x9d,0xef,0xb9,0xf7,0xb5,0x4c,0xe3,0x76,0x49,0xb6,0x4a,0x0e,0xcb,0xa5,0x0d,0xee,0xcd,0x1b,0x7d,0x22 },
{ 0xde,0x6c,0x5c,0xab,0xad,0x43,0xf0,0x51,0x56,0x6c,0x03,0x0a,0x6f,0xb9,0x70,0xcf,0x74,0x27,0xfb,0x1d,0x59,0xe7,0x02,0x69,0xa0,0xe2,0xcd,0x13,0x3f,0xf5,0x99,0xc9 },
{ 0x14,0xb7,0x5d,0xe7,0x3e,0x57,0x3a,0xf6,0x42,0xff,0xcc,0x6a,0x37,0xf3,0xef,0x3e,0x7b,0xac,0xdd,0xf3,0x1c,0x29,0x03,0xc2,0xce,0xeb,0x49,0x68,0x35,0x78,0x49,0x3a },
{ 0x9c,0x3a,0xe1,0x06,0xdd,0x0a,0x52,0x48,0x30,0x86,0xad,0xfa,0x32,0x90,0x2c,0xc2,0xaa,0x78,0xce,0x38,0x09,0x87,0x30,0x24,0x1e,0x15,0xb9,0x40,0x05,0x24,0x01,0x58 },
{ 0x9f,0xd6,0x36,0xa5,0x60,0x59,0x67,0x1c,0x69,0xcc,0xc3,0xcc,0x52,0xd2,0x2c,0xf8,0xf8,0xec,0x6d,0x6d,0x0f,0xaf,0xc1,0xde,0x7a,0x6c,0xde,0xc1,0xbc,0xf4,0xc1,0x10 },
{ 0x68,0x63,0x26,0xf2,0x6c,0x04,0x5b,0x74,0xb7,0xff,0x7e,0x68,0x8f,0xf9,0x64,0x6b,0x13,0x70,0xf3,0x0b,0x00,0xef,0x70,0xea,0x46,0x01,0x17,0x8c,0xdd,0xa4,0xa5,0xf0 },
{ 0x2b,0x4f,0xf4,0xd1,0x85,0x26,0x59,0x78,0xf5,0x05,0x1e,0x14,0xaa,0x9e,0xfa,0x72,0x1e,0x76,0x0c,0x04,0xf3,0x78,0x91,0x0a,0x84,0x6d,0x1f,0xf2,0x2f,0x55,0x6d,0x32 },
{ 0x18,0x82,0x1f,0xf3,0xfc,0x27,0xdd,0x89,0xf7,0x9c,0xde,0x34,0xc4,0x7c,0xc1,0xf1,0x28,0x77,0xa8,0x9e,0x31,0xe2,0x5b,0xd1,0xc9,0xe8,0x13,0x60,0x08,0x8f,0xc8,0xcf },
{ 0xce,0x46,0x2c,0x5f,0x8d,0x46,0xe1,0x7e,0xc1,0x8c,0x49,0x13,0x7d,0xa1,0x0d,0x97,0x19,0xad,0xa0,0x5d,0xdc,0x5f,0xf7,0x03,0xe4,0x93,0xfa,0x53,0x14,0xdd,0xbe,0x8c },
{ 0xde,0xc4,0x58,0xfb,0x6f,0x3c,0x18,0xe9,0xab,0xc4,0xeb,0x37,0x39,0x99,0x44,0x1d,0xc2,0x03,0x7b,0x7b,0x03,0x01,0x6e,0x8b,0x3f,0xb2,0x33,0xe5,0xb2,0x22,0x26,0x65 },
{ 0xb4,0x88,0xec,0x48,0x16,0x1d,0xf3,0x67,0x78,0x08,0x16,0x8f,0xe8,0x93,0x88,0x21,0x29,0xcb,0x5c,0xfb,0xf7,0x65,0x56,0x74,0x2c,0xf7,0x76,0x26,0xdb,0xb0,0x8e,0x48 },
{ 0xf9,0x31,0x31,0x20,0x2b,0x26,0xd8,0x41,0x26,0xe7,0x16,0x60,0x09,0xa5,0xa9,0x4b,0x1d,0x4d,0x04,0xc3,0x4f,0x74,0xbc,0x8e,0x56,0xd9,0x4d,0xbc,0x3c,0xaa,0x52,0x50 },
{ 0xa0,0xd2,0x61,0xa7,0x1a,0x50,0xb8,0x8d,0xe6,0x29,0x36,0xb6,0x81,0x6d,0x3f,0x81,0x15,0x11,0x49,0x0f,0xcd,0x9d,0xce,0x52,0xee,0x25,0xd2,0x9a,0x22,0x22,0x7d,0x26 },
{ 0x84,0x1b,0xc5,0x96,0x7a,0xf2,0x94,0x67,0x21,0x9b,0x1e,0x4e,0xa0,0xcf,0x68,0x01,0xac,0xf5,0xf3,0xe4,0x5c,0x4b,0x17,0x9f,0xce,0xa6,0x67,0x85,0x23,0xca,0xb8,0x51 },
{ 0xd4,0x09,0x7e,0x8d,0x63,0x80,0x48,0x4c,0x60,0x45,0x57,0x17,0x64,0x36,0x5c,0xa2,0x65,0x99,0xee,0x7e,0x35,0xfe,0x9c,0x93,0xfc,0x75,0x93,0x94,0x25,0x38,0xc4,0xfe },
{ 0x34,0xa6,0xab,0x4d,0xb1,0x5c,0x19,0x48,0xb5,0x92,0x14,0xbf,0xce,0xac,0x6a,0x97,0x7b,0x72,0x03,0x69,0xe4,0x71,0xbc,0x70,0x59,0x05,0x1d,0x1b,0xc6,0x2f,0xaf,0x0d },
{ 0xf6,0x35,0x1e,0x5e,0x91,0x30,0x54,0x04,0xb8,0x1c,0xbd,0xe2,0x96,0x7d,0x4a,0xec,0xe7,0x6e,0xb3,0xf0,0x20,0x5d,0xdc,0x13,0x7d,0x88,0xd4,0xbe,0xee,0x7a,0x9e,0x79 },
{ 0x5b,0xc9,0x13,0x79,0x73,0x81,0xba,0x63,0x80,0xa7,0xcd,0x6f,0xab,0xfe,0x21,0x5d,0x1b,0xc2,0xae,0x3f,0xea,0x4a,0x67,0x7b,0x81,0xe5,0xa7,0x2a,0xbb,0x70,0x5d,0x69 },
{ 0x5d,0x9e,0x53,0x85,0x9d,0xfc,0x61,0xa2,0x23,0xdc,0x63,0xd9,0x4a,0x9e,0x0c,0x00,0x71,0x4e,0x9c,0x92,0x82,0x24,0xc7,0x0f,0xb1,0xe6,0xb1,0xfb,0x93,0x8b,0xeb,0xa5 },
{ 0x0e,0x60,0x8e,0x13,0x1f,0x84,0x55,0x12,0x1b,0x10,0xc6,0x6e,0x87,0x8d,0xca,0xc4,0xdf,0xcb,0xa9,0x4a,0x37,0xbd,0xa2,0x85,0xc7,0xa0,0x9c,0x96,0x7c,0x69,0x53,0xca },
{ 0x17,0x4c,0x0e,0x63,0x34,0xd4,0xf8,0x66,0x14,0xf2,0xe4,0x0b,0xde,0x6e,0x7d,0x57,0x66,0x58,0x85,0xff,0x2e,0x0a,0xdb,0x21,0x3a,0x1d,0x85,0x28,0x5c,0x7e,0x56,0xe2 },
{ 0xf0,0x50,0x78,0x1b,0x7e,0x53,0x6b,0x68,0x3b,0x25,0x41,0x94,0x15,0xa9,0x09,0x4d,0x12,0xbd,0xa4,0xb3,0x8c,0x00,0x04,0x79,0x0d,0xa6,0x5a,0x1f,0x2d,0x85,0xca,0x26 },
{ 0x3f,0xc7,0xf3,0x32,0xb7,0x33,0x3b,0x61,0x7e,0x1d,0x87,0x8b,0x4f,0x89,0x72,0x08,0x8b,0x9f,0x2b,0x77,0x26,0xe3,0x11,0x04,0x8f,0xd7,0xf1,0x9a,0x6c,0x01,0xda,0x73 },
{ 0x3c,0xe5,0x65,0x37,0xd6,0x39,0x29,0xf8,0x0d,0x9a,0xc3,0x1d,0x5b,0x01,0x32,0x7d,0x29,0xe7,0x4a,0x73,0x85,0xa2,0xde,0xb7,0x45,0x44,0xe4,0x2a,0x9a,0x71,0xd0,0x2d },
{ 0x54,0x70,0xeb,0x86,0xef,0x85,0x7f,0xf1,0xbb,0x7a,0x4a,0xbe,0xc0,0x87,0xff,0x3e,0x5e,0x9b,0x39,0xe8,0x07,0x6c,0x2b,0xda,0x96,0xc0,0xd9,0x49,0x83,0x47,0x47,0x9f },
{ 0x32,0x85,0xc7,0x27,0x2e,0xcd,0x95,0x41,0x70,0xb2,0xf7,0x4d,0x04,0x42,0x6b,0x6d,0xed,0xae,0x97,0xbf,0x98,0xb3,0x14,0xe5,0x4e,0x93,0x6e,0xdb,0x00,0x97,0xa7,0xce },
{ 0xd9,0x36,0x81,0xe1,0xaf,0x32,0x8f,0x46,0x2d,0xf8,0x3e,0xbb,0xe6,0x25,0x76,0xa5,0xfe,0x19,0x17,0x5a,0x8a,0x5a,0x67,0xab,0x34,0x87,0x88,0x52,0x95,0x44,0x14,0xc9 },
{ 0xa5,0x19,0x11,0x79,0xd3,0x49,0x17,0x73,0x30,0x49,0xa7,0x59,0x9c,0xc5,0x5d,0xb1,0xb5,0x46,0x51,0xad,0xd1,0x48,0x7b,0x58,0x7d,0x67,0xe8,0x20,0xc0,0xb0,0xf2,0xda },
{ 0xf4,0x35,0xed,0x81,0x45,0x2a,0x47,0xf5,0x5b,0x75,0x90,0x3f,0x37,0x8a,0x99,0x3e,0xdb,0x8e,0x81,0xf2,0xe7,0x06,0x58,0xe0,0xd6,0x07,0x1e,0xcf,0x77,0x44,0x74,0x33 },
{ 0xc9,0xd1,0xdc,0x8a,0x51,0xb9,0xe8,0xe5,0xaf,0x60,0xd1,0x70,0x1a,0xb2,0x25,0xe1,0xa5,0xfd,0x24,0x2e,0x4e,0xd1,0xa6,0x53,0x5e,0xcd,0x63,0x68,0xbd,0xe7,0xff,0x42 },
{ 0x36,0x62,0xa1,0xd3,0x62,0x56,0x93,0x66,0x6d,0xd8,0x51,0xd5,0x42,0xbf,0x8b,0x38,0x3c,0xb8,0x58,0xa8,0xd1,0x30,0xf0,0x1b,0x22,0x2d,0x00,0x57,0x7d,0x6f,0x5b,0xc3 },
{ 0x6f,0x0d,0x74,0x77,0x2e,0x53,0x46,0xc6,0xf3,0x17,0x68,0xc4,0x23,0x90,0x81,0x1b,0xfc,0x27,0xf2,0x84,0xe4,0xcd,0x9e,0xb8,0xbd,0x15,0xcb,0xb0,0xe9,0xf3,0x0a,0xe1 },
{ 0x7b,0x6d,0x80,0x73,0xdf,0x9e,0x90,0xc5,0xbd,0xf7,0xdd,0x63,0xae,0xd6,0x4b,0xeb,0x08,0x67,0x89,0x86,0x17,0x98,0xca,0x68,0xe7,0x29,0xb7,0x33,0xdf,0x3f,0xc9,0x19 },
{ 0x65,0xe7,0xa9,0x08,0xc0,0xb9,0x16,0x4e,0xb1,0x0a,0xa8,0xf3,0x06,0x8e,0x98,0xc2,0x37,0x72,0xf8,0x74,0xa7,0x46,0x50,0x29,0x9e,0x8d,0x86,0x1d,0xcc,0x84,0x6f,0xa2 },
{ 0xba,0x4b,0x5d,0x95,0x4d,0xae,0x5c,0xdd,0x75,0x2c,0x88,0x0d,0xe4,0xdf,0x79,0x0e,0x1e,0x28,0x4f,0x9b,0x94,0x8a,0x2e,0x77,0x5d,0x99,0xf7,0x4e,0xb2,0x42,0x07,0x9f },
{ 0xb1,0xe5,0x92,0x60,0x64,0x92,0x50,0x2b,0x2d,0x70,0xa3,0xd1,0x5f,0xb0,0xb0,0x4b,0x90,0xfb,0x53,0xe8,0x64,0x44,0x9a,0x80,0x4a,0xc9,0xd6,0x8c,0x81,0x21,0x52,0xba },
{ 0x2f,0x20,0xec,0xab,0x36,0x96,0x71,0x5b,0x68,0x5f,0x7c,0xd3,0x0e,0xb8,0x13,0xcb,0xbb,0xf2,0xa3,0xc1,0x55,0xdf,0x8a,0x4e,0xa1,0xfc,0x58,0x69,0xfb,0xd1,0xa0,0xe2 },
{ 0x4c,0x5c,0xe3,0x7c,0xfa,0x58,0x65,0x60,0xc3,0xc2,0x2a,0xc1,0xa0,0xa9,0x59,0x0e,0x86,0xa7,0x31,0xd6,0x45,0xeb,0x98,0xcd,0x74,0x9f,0xe0,0x39,0x0e,0xe8,0x6b,0x73 },
{ 0xbc,0x7c,0x6e,0x54,0x89,0xa4,0xa6,0xaf,0x47,0xc4,0x15,0xfc,0x2a,0xfa,0xf5,0xe1,0xe5,0x5e,0xce,0xed,0xfd,0xf5,0x1d,0xc7,0xa6,0x0f,0xe0,0x80,0x8a,0xf8,0x64,0x98 },
{ 0x32,0x26,0x21,0x32,0xba,0xcd,0xb5,0xae,0xbf,0x1b,0x1f,0x89,0xe3,0x6b,0x15,0xac,0xc3,0xe5,0xbb,0xc0,0x08,0x25,0x71,0x1d,0xae,0x83,0x87,0x40,0xb1,0x1c,0x3b,0x73 },
{ 0x0e,0xdc,0x03,0x3d,0x42,0xea,0x66,0xe2,0xa6,0x05,0x3c,0x27,0x1f,0x79,0x91,0x67,0xb3,0x85,0x25,0x28,0xac,0xe3,0x60,0xd1,0x2e,0xb7,0x23,0xd3,0xb1,0x19,0x73,0xbb },
{ 0xc4,0x37,0x40,0xc0,0x80,0x16,0x18,0x3e,0x27,0xe1,0xc9,0xf0,0x07,0xe2,0x3b,0x00,0x9e,0xfc,0x78,0x11,0xd7,0xd8,0xff,0xbb,0x29,0x29,0xe6,0x84,0xbd,0xe5,0xad,0xdb },
{ 0x2f,0x0c,0xa1,0x0d,0x50,0x38,0xf5,0xa0,0x53,0xfe,0xfc,0x75,0xb9,0x1c,0x3b,0x3e,0x97,0xe2,0x47,0x83,0xe8,0xa1,0xae,0x21,0x95,0x65,0xd7,0x35,0xb7,0x2b,0x1e,0x08 },
{ 0xd5,0x17,0x58,0x78,0x34,0xac,0xba,0xd9,0xf5,0xc5,0x0a,0xa2,0xea,0x0c,0x78,0x50,0x23,0x62,0xe0,0xc7,0xab,0xc4,0xa0,0x4c,0xb5,0x0f,0xd5,0x9e,0x38,0xc8,0x29,0xf9 },
{ 0x4e,0x7a,0xbf,0xaa,0x22,0xeb,0xaf,0x92,0xb3,0x93,0xcd,0xd3,0xc3,0x9e,0x8a,0xea,0x34,0x53,0xe3,0xd5,0x69,0x37,0xa4,0xeb,0x32,0xb8,0x30,0x47,0xc5,0xe6,0xb5,0xeb },
{ 0x8a,0xc8,0x10,0xbb,0x0f,0x40,0x98,0x98,0xaa,0xdf,0x59,0xc7,0x0b,0xd8,0x6e,0xd3,0x1b,0xad,0x92,0x16,0x77,0x6f,0x4b,0x19,0xfd,0x66,0xb4,0x99,0xad,0x08,0xe8,0x44 },
{ 0xcf,0x0a,0xfd,0x0d,0x18,0xd5,0xe1,0xde,0x9b,0x0f,0x91,0xdf,0xc5,0xf2,0x03,0xd4,0x51,0x02,0xb7,0x6a,0x2d,0x64,0x9f,0x70,0x4f,0x23,0x54,0x2b,0x6b,0x99,0x7d,0xcd },
{ 0xfb,0x81,0x2b,0x2a,0xaa,0xc4,0x54,0x23,0x0f,0x09,0x7a,0xed,0x9f,0xa0,0x07,0xc2,0x6e,0x49,0xc7,0xdd,0x36,0xc6,0x6e,0x2e,0xd4,0xd7,0x6e,0xbe,0xe2,0x0e,0x46,0xb1 },
{ 0xe7,0xe8,0x89,0x9e,0xe3,0x84,0xd3,0xdf,0xa2,0x16,0xde,0x76,0x18,0x0e,0x72,0x31,0xc2,0xfa,0x40,0x9a,0xc9,0x1e,0x76,0x2d,0x17,0x13,0x20,0x79,0xfa,0xa3,0x4c,0xa5 },
{ 0xb3,0x84,0xc8,0xc4,0x3f,0x36,0x79,0x4f,0xc8,0xb8,0xce,0x4e,0x92,0xd4,0x90,0xd3,0xc9,0xe2,0x69,0x97,0x26,0xdd,0x8f,0x58,0x03,0xde,0x1d,0xf0,0x37,0xff,0xcd,0xa0 },
{ 0x9a,0x39,0x41,0xa7,0xd4,0xa4,0xd1,0x04,0x0b,0xb7,0x3b,0x3c,0x3c,0x79,0x2c,0xdc,0x6a,0x75,0x33,0x62,0xb7,0x0e,0x8b,0xe8,0xd2,0x11,0x7c,0x75,0xb1,0xa1,0xd4,0xd5 },
{ 0x95,0x6b,0xe0,0x38,0xfd,0xe1,0x11,0xd7,0xe9,0x41,0x63,0xcf,0x3e,0xe5,0xdf,0x6c,0xab,0xf7,0x61,0xec,0xe8,0xaa,0x6b,0x6b,0x3f,0x6a,0xe2,0x43,0xf9,0x55,0x23,0xdf },
{ 0x99,0x13,0x75,0xd6,0x75,0x4b,0x2d,0x3c,0xc2,0x07,0x4f,0xeb,0x8d,0x9c,0x2b,0x1d,0x92,0x04,0x34,0x2d,0x55,0xf9,0x80,0xa1,0x45,0x6a,0x59,0x6a,0xc6,0x90,0xbe,0x2b },
{ 0x2c,0xcb,0xe8,0x83,0x5e,0x42,0x6d,0x93,0xea,0xa8,0x94,0xf9,0xfa,0xb2,0x80,0x8d,0xaa,0x04,0xfa,0x57,0x37,0x36,0x71,0xea,0xf9,0xdd,0xe1,0x71,0xdb,0x4b,0x97,0x95 },
{ 0x0c,0xdd,0xaa,0xa8,0x7d,0xf9,0x4f,0xd2,0xb5,0xdf,0x20,0xf5,0x10,0xc0,0x0c,0xd3,0xd0,0x8e,0xd4,0xd3,0x6a,0x13,0x60,0xb3,0x1c,0x5b,0x7b,0x75,0x18,0xe7,0xe4,0x47 },
{ 0x4e,0x73,0xd5,0x6b,0x41,0x7d,0x7a,0xc7,0x08,0x78,0x47,0x81,0xbc,0x5e,0xcf,0xd9,0xfc,0x4d,0xdc,0x0f,0xe5,0x43,0x4b,0xe2,0x92,0x57,0x25,0x87,0x54,0xae,0xc2,0x68 },
{ 0x26,0xea,0xfc,0x93,0x67,0x03,0x3b,0xca,0x18,0xf5,0x6f,0x3f,0x66,0x30,0x8a,0xca,0x9b,0x50,0x76,0x6f,0x2f,0x67,0x62,0xa5,0xf6,0x0e,0xa9,0xee,0xc3,0x77,0xed,0xfc },
{ 0xa1,0x58,0x13,0x5e,0xc9,0x21,0x45,0xdc,0x58,0x90,0x4d,0xb9,0xc7,0x0d,0x25,0xa5,0x05,0x6d,0xe3,0xd8,0xb7,0xb3,0x95,0xd9,0x49,0x74,0xb4,0xf5,0xb6,0x26,0x22,0x9c },
{ 0x5f,0x63,0x31,0x9b,0xc1,0xda,0xb0,0xdb,0xc6,0x30,0xfb,0x1a,0x89,0x82,0x11,0x77,0x98,0x78,0xbd,0x57,0x22,0x90,0x0b,0x5e,0xad,0x14,0x70,0x5c,0x0e,0x91,0x12,0xde },
{ 0x59,0x3b,0x95,0x18,0xef,0x2a,0xe4,0xf1,0x19,0xf2,0x74,0x78,0x2d,0xde,0xbc,0x41,0x11,0xe0,0xe8,0xf6,0x6b,0xa1,0x15,0x77,0x34,0x40,0x50,0xc1,0x4f,0x25,0x3f,0x95 },
{ 0x8c,0x6c,0x91,0xd4,0x6a,0xe3,0xd5,0xfd,0x68,0x42,0x64,0x77,0x5e,0x46,0x98,0x86,0x67,0xc8,0x88,0x59,0xf8,0x01,0x02,0xd8,0xad,0xa6,0x51,0x4a,0x03,0x97,0x21,0x56 },
{ 0x4f,0xfa,0x6e,0xce,0x61,0x04,0xbd,0xed,0x58,0x17,0xfc,0x73,0x9a,0xba,0x5c,0x3e,0x5f,0xcd,0x51,0x2f,0x04,0x1f,0xea,0x59,0x67,0xb3,0x74,0x79,0x39,0x6a,0xa6,0xd5 },
{ 0xf2,0xf5,0x24,0x28,0x81,0x8c,0xc6,0x71,0x71,0xdb,0x77,0x13,0x34,0xbf,0xa2,0xe9,0x0f,0x0c,0xc8,0x77,0xdf,0xac,0xbc,0x0c,0x79,0xcd,0x55,0xb6,0x55,0xf1,0x71,0x6c },
{ 0xd6,0x85,0x76,0xda,0x23,0xc8,0x2b,0x60,0x34,0x3e,0x53,0xfd,0x5d,0x0b,0x85,0x05,0x6b,0xec,0x26,0x5b,0x8e,0x32,0xef,0x66,0x47,0xf3,0xcb,0xb7,0x15,0x42,0xa7,0xda },
{ 0x11,0x26,0x8e,0x70,0xd5,0xdb,0x9e,0xa0,0xf6,0x87,0x13,0xc7,0xf3,0xc8,0x11,0x15,0x02,0x2a,0xf9,0xd5,0x0f,0x93,0xb5,0x42,0xe7,0xc4,0xec,0x07,0xe7,0x51,0x3b,0x15 },
{ 0xeb,0x3b,0xcd,0xea,0x83,0xe1,0xa4,0x05,0x6c,0xcf,0xbc,0xd1,0x66,0xd5,0xca,0x6a,0x88,0xca,0x88,0xe1,0x54,0xa2,0x43,0xb0,0x6f,0xee,0x9c,0xfc,0xe2,0x36,0x9c,0xf8 },
{ 0x74,0x82,0xd4,0x36,0x8a,0xb1,0xa3,0x00,0xb2,0x00,0xf6,0x83,0x5e,0x4a,0x54,0xf1,0xee,0x38,0x7d,0x6a,0xeb,0x87,0x4d,0x8d,0xfa,0x36,0x57,0x20,0x3d,0x3a,0xc1,0x5f },
{ 0xb8,0x41,0xee,0x0c,0x97,0x27,0xdb,0x15,0x72,0x3e,0x83,0x66,0x9b,0x4a,0x43,0x9d,0xf2,0xbb,0xe6,0x36,0x10,0xfe,0x8f,0x4b,0x60,0x9f,0xa1,0xfa,0x59,0x95,0xb3,0xa2 },
{ 0x98,0xe6,0x99,0xd8,0x21,0x7f,0x9d,0x2f,0xc9,0x99,0x99,0x8b,0x7b,0xde,0x51,0x65,0xda,0x8f,0xe5,0xa7,0x43,0x9a,0xb6,0x93,0xae,0xbe,0x52,0x0b,0x87,0xe4,0x06,0xba },
{ 0x6b,0xbc,0xf1,0x10,0xfd,0xbb,0x98,0x83,0xa7,0x38,0xe6,0x28,0x7a,0x23,0x3a,0x24,0x9d,0x87,0x09,0xd2,0x2a,0x5d,0x2e,0x66,0xa3,0xb2,0xcd,0x82,0x45,0xb9,0xf8,0x51 },
{ 0x51,0x08,0x6b,0x61,0x53,0x7c,0x25,0x75,0xb1,0x9e,0xc3,0x7b,0xd5,0xf5,0xdc,0xb6,0x0e,0xe9,0xe4,0x24,0x48,0x7f,0x5e,0xb0,0xe3,0x71,0xc4,0x9b,0x50,0x53,0x5b,0xdc },
{ 0x4b,0x1f,0xb6,0x05,0x1b,0xf4,0x37,0x96,0xf8,0xd2,0xb3,0x83,0xba,0xc4,0x9b,0x7a,0x8a,0xfa,0x2f,0x27,0x31,0x14,0xe2,0x0e,0x7d,0xae,0x59,0xc7,0x9f,0x98,0x85,0x7c },
{ 0xef,0xd5,0xb5,0x5d,0x5b,0x85,0x00,0x21,0xfc,0xad,0xf6,0x95,0x55,0x47,0xf3,0x77,0xa0,0x17,0xc8,0x39,0x17,0xb8,0xaa,0xd2,0xb4,0xfb,0xd8,0x23,0xf4,0x14,0x73,0x34 },
{ 0xb4,0x63,0x74,0xa9,0xa5,0xc7,0x84,0x8c,0x4c,0x8d,0xbf,0x93,0x8e,0x08,0x50,0xc8,0x31,0xc1,0x18,0xd9,0xd0,0x9b,0x60,0x8f,0xf3,0x6f,0xe1,0x99,0x18,0x7e,0x2c,0xc9 },
{ 0x2e,0xb1,0xea,0x67,0xdf,0x60,0x32,0xb4,0x76,0x9b,0x40,0x50,0x7f,0x56,0xb0,0x5c,0x5e,0x23,0x79,0x65,0x7e,0x2b,0xfe,0x17,0xd5,0x12,0xe6,0x72,0x61,0xc5,0xc1,0x0e },
{ 0x19,0x8f,0x5f,0x10,0x7b,0x89,0x27,0x6f,0xab,0x8a,0x99,0xf6,0xdc,0xe6,0x59,0xf4,0x22,0x3f,0x67,0xbb,0xb5,0x7c,0x8d,0x56,0x94,0x91,0x9a,0xb0,0x46,0xb2,0x39,0x7b },
{ 0xe4,0xe7,0x28,0x12,0x9b,0x8e,0x42,0xe2,0xec,0x71,0xa7,0x18,0xf5,0x7b,0x55,0xb4,0x72,0xeb,0x22,0x2a,0x7c,0x2d,0x18,0x03,0x84,0xbf,0x17,0x7f,0x01,0x31,0xad,0x37 },
{ 0x90,0x07,0x5b,0x34,0x43,0x74,0x1c,0xc5,0x5b,0x3d,0xe7,0x54,0xb7,0x13,0x05,0x51,0xba,0xe0,0xf3,0x84,0x03,0x47,0xe1,0x15,0xdf,0x5e,0x7b,0xcb,0xc2,0xda,0xba,0x4f },
{ 0x94,0x76,0xd3,0xfd,0x17,0x7d,0x2c,0x3c,0x82,0x15,0x82,0x9c,0xb4,0xfa,0x47,0xd3,0x32,0x4c,0x3d,0xc2,0xe8,0x30,0x94,0xf7,0xb4,0x0a,0x5d,0x55,0xe4,0xde,0xcb,0x9f },
{ 0xb4,0xa2,0xce,0xe2,0x13,0xd4,0xda,0x35,0x7b,0x40,0x78,0x4e,0x79,0x57,0xf4,0x52,0x85,0x7e,0x59,0x9c,0xe7,0x8a,0x85,0x55,0x65,0xd1,0x53,0xdc,0xf4,0xf0,0xb4,0xe8 },
{ 0x38,0xd5,0x7e,0x38,0xb9,0x40,0xfd,0x95,0x4a,0x58,0xbf,0xb8,0xb8,0xfc,0x33,0x19,0x50,0xcd,0xb9,0x35,0x83,0xd7,0x4e,0xe8,0x8e,0x24,0x39,0x78,0x99,0xc3,0xdb,0xc9 },
{ 0x75,0xd6,0xca,0x30,0x33,0xc3,0x38,0x00,0x32,0x30,0x07,0x44,0xdc,0xc0,0xaf,0xdf,0x30,0x5f,0x9c,0xf7,0x45,0x08,0xde,0x3e,0x8a,0xad,0x83,0xcb,0x7a,0xef,0x1e,0xe3 },
{ 0xef,0x80,0x33,0x70,0x5d,0x52,0xa5,0x10,0x85,0xc6,0xf8,0x98,0x95,0xc2,0x21,0xba,0xed,0x5d,0x9b,0x42,0x88,0xb8,0x77,0xea,0x5f,0x40,0x44,0xaa,0x82,0xb9,0x66,0x7d },
{ 0x3c,0x84,0x1d,0x10,0x54,0x1e,0xff,0x55,0x17,0x0e,0xfd,0x6f,0xcd,0x90,0xa0,0xa0,0x11,0x83,0x4b,0xc5,0x9b,0x01,0x46,0x0d,0xd2,0xe7,0x14,0x8e,0x5d,0xf7,0xe8,0xa4 },
{ 0xc5,0x2c,0x2f,0xb9,0x64,0xe3,0x9d,0xd2,0xa3,0xcb,0x5c,0x6d,0xb0,0xcb,0x95,0x57,0x2d,0xbf,0xd4,0x6e,0x2e,0xb3,0xbb,0x92,0xee,0x52,0xa2,0x11,0x6a,0x9b,0xeb,0xb1 },
{ 0x05,0xe8,0xdf,0x7b,0x16,0xab,0x60,0xf8,0xbc,0x11,0xc5,0xe3,0xd0,0x7c,0xe7,0xa8,0x60,0x39,0x22,0x2b,0x53,0x94,0x44,0xd0,0x81,0xa6,0xf9,0xc8,0x0f,0xc1,0xf3,0x10 },
{ 0x1b,0xed,0x26,0x52,0x48,0xc9,0xda,0xd5,0x1e,0x70,0xb9,0xff,0xbb,0x19,0xe1,0xd3,0x94,0x67,0xc5,0xc1,0x3d,0x3b,0xc0,0x88,0x76,0x7b,0xa8,0xa0,0xf8,0x6b,0x68,0x04 },
{ 0x05,0x45,0x41,0xdf,0x3c,0x12,0xdb,0xaa,0xe7,0x41,0xe6,0x6f,0x0f,0x35,0x38,0x94,0x43,0x72,0x93,0x72,0x0e,0x5b,0x26,0xa2,0x89,0x38,0xf5,0x8b,0x0e,0x37,0x80,0xc3 },
{ 0x8a,0x3d,0xb2,0x9c,0x23,0x17,0xbf,0xc5,0x57,0x94,0xa2,0xcd,0x03,0x43,0x69,0xf7,0x0a,0xa7,0xc2,0xbb,0x41,0x58,0x37,0x23,0x6a,0xb2,0x9a,0xc0,0x89,0x4a,0x54,0x5a },
{ 0x66,0x56,0x36,0x92,0xe8,0xb4,0x21,0x43,0x42,0xbe,0x8b,0x1c,0x6d,0x27,0x65,0xb8,0x46,0x35,0xb4,0x48,0xf2,0x5a,0x96,0x70,0x8f,0xb6,0xf2,0x36,0x62,0xc3,0x0b,0x31 },
{ 0x7d,0xaa,0x26,0x43,0xe3,0xe2,0xe4,0x20,0xbb,0x91,0x08,0xc9,0xd7,0x38,0x03,0x2b,0x0a,0x68,0x3d,0x9c,0x14,0x5f,0xc4,0x0b,0x3d,0xfc,0x51,0xe6,0x1a,0xcf,0x88,0xba },
{ 0xbc,0xf1,0xec,0x34,0x94,0xc8,0x97,0x47,0xc7,0x67,0xfc,0xbb,0xf6,0xd6,0x37,0x68,0x6f,0xc8,0xb5,0x3b,0xd5,0x45,0x4f,0xd5,0x5d,0xf5,0xfa,0xea,0x6c,0xd2,0x89,0xf0 },
{ 0xc1,0x67,0xba,0xf8,0xdc,0xf5,0x7b,0xe1,0x7b,0x34,0xbe,0x0b,0xd3,0x84,0xf2,0x46,0x66,0x3c,0xd0,0x69,0xbb,0xbc,0xcd,0xc5,0xfd,0xb4,0xec,0xb9,0xe0,0xbb,0x47,0x88 },
{ 0x28,0x3f,0x7c,0xff,0x32,0x6e,0x60,0x82,0x23,0xc6,0xb5,0xaf,0x10,0x52,0xcf,0x14,0x50,0x22,0x34,0x7e,0x47,0x90,0x81,0xa5,0xc7,0x14,0x12,0xc5,0x24,0x5d,0xbf,0xe7 },
{ 0x5c,0xe1,0x58,0x7e,0x2e,0xcc,0x43,0xb9,0x4c,0x98,0x4b,0x9c,0xa1,0xd0,0x2b,0x4e,0x80,0x00,0x5a,0x99,0xc6,0x93,0xb8,0x14,0x2f,0x14,0xd6,0xf7,0x07,0x92,0x9b,0x2a },
{ 0xf7,0xa0,0x18,0x07,0xe3,0xe2,0xc5,0x35,0x1c,0x47,0x02,0x2f,0x89,0xb1,0x50,0x38,0x22,0xec,0x83,0xc0,0x7c,0x2c,0x97,0x29,0x0d,0xd8,0xbc,0x8d,0xf9,0x97,0xdf,0x9b },
{ 0x7d,0x60,0x21,0xb9,0xc6,0x7d,0xb4,0x1a,0x06,0xbc,0x3b,0x14,0xe1,0xf6,0xa2,0xb2,0xa2,0x4a,0x6f,0x55,0xc8,0x8f,0xd0,0x70,0xd6,0x62,0xdd,0xfb,0x44,0x55,0x85,0x36 },
{ 0x13,0x32,0xb7,0x7b,0xa1,0x9d,0xa2,0xd2,0xe4,0xa7,0x33,0x53,0x17,0x1f,0x80,0xfe,0x16,0xad,0xd4,0x85,0x29,0x82,0xc1,0xf1,0x32,0x91,0x04,0xf2,0x7d,0x8c,0xc8,0xe3 },
{ 0x95,0x79,0x3b,0xa1,0x62,0x09,0x07,0xa9,0xc3,0x41,0x0f,0xb3,0xe7,0xae,0x2f,0xfc,0xd0,0x06,0x82,0xcb,0x5f,0xc8,0x37,0xf5,0x73,0xee,0x10,0xed,0xd2,0x7a,0x09,0x61 },
{ 0x8f,0x20,0x01,0x67,0x62,0x92,0xd5,0xac,0x5b,0xdf,0xaf,0x41,0x0f,0x64,0xd1,0x6d,0x78,0x2e,0xc4,0xa3,0x2c,0x66,0x03,0x7a,0x28,0xa3,0x51,0x01,0xcc,0x21,0xc4,0x7c },
{ 0x2c,0x07,0xe5,0xb5,0x90,0x51,0x25,0xdd,0x17,0xa0,0x48,0x7e,0xdc,0x90,0xff,0x03,0x7a,0x7d,0x9e,0x2a,0xb8,0x5f,0xfa,0x5b,0x15,0xe8,0x46,0x77,0x03,0x24,0x5a,0xfd },
{ 0xe0,0x11,0xed,0x04,0x6d,0x13,0x38,0x53,0x83,0xee,0x92,0x0f,0x8b,0x5f,0xb2,0xa4,0x95,0x3a,0x09,0x3f,0xdb,0xe6,0xdf,0x39,0x6f,0x9b,0xe6,0x37,0xce,0x67,0x3a,0xe1 },
{ 0x7c,0x62,0x73,0x94,0xb8,0x73,0x9f,0xa5,0x66,0x96,0xe2,0xfb,0xcd,0x88,0xff,0x01,0xb5,0x86,0x72,0x0d,0x9d,0xb9,0x89,0x12,0x56,0x6d,0x89,0x2b,0x76,0x92,0xfc,0xed },
{ 0xad,0x99,0xdc,0x16,0x4a,0xe1,0xd3,0xb3,0xb6,0x5b,0xc0,0xfd,0x16,0x1c,0xf2,0x33,0xb7,0x30,0x4f,0x46,0xd9,0xce,0xa3,0xc9,0xdc,0xb1,0x8b,0x23,0xb1,0x4c,0xbc,0x85 },
{ 0xe4,0xa5,0x73,0x24,0x4b,0x60,0x17,0xda,0x70,0xf9,0x5d,0x7d,0xc2,0xee,0xfb,0x95,0x7e,0x79,0xe6,0x20,0x12,0x63,0xe6,0xf7,0x3c,0x5a,0x86,0x72,0x31,0xfd,0xf1,0x0f },
{ 0x02,0x2e,0x00,0x61,0xee,0xe6,0xad,0x97,0x2f,0x91,0x49,0x57,0xbd,0x9e,0xe0,0x33,0x60,0xe5,0x6b,0xd2,0x4d,0x1b,0x24,0x47,0x34,0x11,0xc6,0xef,0xc3,0xd4,0x26,0x87 },
{ 0xd1,0x71,0x18,0x02,0x4e,0xc1,0x09,0x35,0x39,0xf2,0xe9,0x3c,0x6a,0x34,0x4c,0x1a,0x73,0xcb,0x7e,0xf0,0xd6,0x99,0x19,0xd2,0x73,0x5e,0x0f,0x32,0xc7,0x72,0xe3,0x01 },
{ 0x45,0xa8,0x04,0x56,0x0a,0xdc,0x82,0x76,0x12,0x71,0xec,0xa3,0x7d,0xac,0x5b,0xb7,0xc0,0xa9,0x5e,0x93,0xe6,0x33,0xa0,0x93,0x57,0xcc,0x1a,0xd1,0xec,0x6b,0xa7,0x4c },
{ 0x7f,0x28,0x51,0x11,0x92,0x5f,0x4a,0x8f,0xdc,0xea,0xeb,0xe8,0x1a,0x0a,0xd9,0xef,0xf3,0x29,0x81,0xad,0x0e,0x5a,0x49,0xa7,0xc6,0x61,0xb8,0xf1,0x78,0x90,0x2b,0xdc },
{ 0xf1,0x6a,0xb8,0xe4,0xdc,0x66,0xa2,0xb0,0xd8,0x8e,0x42,0x2b,0xed,0xc9,0xc5,0x6f,0x0a,0xf1,0xaf,0x6a,0xac,0x4a,0x12,0xcf,0xa5,0xa6,0x85,0xa3,0x69,0x94,0x0d,0xf4 },
{ 0x03,0xa6,0xec,0x92,0xb9,0x64,0x24,0x18,0xda,0xfb,0x9d,0x71,0xfc,0x7f,0xd6,0x37,0x3b,0xf3,0x4e,0xb3,0x15,0xa5,0x92,0x84,0x4f,0x97,0x7e,0x8f,0xa8,0x70,0xbb,0x1c },
{ 0x64,0x87,0x02,0xf5,0xa1,0x7b,0xc1,0xdb,0x1a,0xec,0x56,0x37,0x4a,0xd7,0x53,0xa0,0x2b,0xdd,0xf6,0xfa,0x19,0x0c,0xc2,0xb9,0x0b,0xc6,0xa5,0xef,0x1b,0x7b,0xb9,0x00 },
{ 0xf6,0x34,0x4a,0xee,0x58,0xb7,0x6c,0xc3,0x3d,0x3c,0x2c,0x04,0xf2,0xed,0x67,0x86,0x9e,0xbc,0xda,0x0c,0xf5,0x6f,0x19,0x6a,0x3d,0xeb,0xeb,0x39,0x45,0xd6,0xee,0x02 },
{ 0x90,0xf2,0xd0,0x2c,0x37,0xeb,0x57,0x62,0x4c,0xb0,0xc8,0xf2,0x84,0xc1,0x71,0xb8,0x79,0x0a,0xe5,0x6a,0xa9,0xeb,0xce,0xef,0x64,0x83,0x7e,0x26,0x26,0x5c,0x66,0x4d },
{ 0xdf,0x89,0x65,0x51,0xc7,0xb4,0x33,0x62,0xc8,0xe4,0xac,0x27,0x12,0x50,0x73,0xd1,0x86,0x9c,0xbc,0xcc,0xc5,0xb6,0x1e,0x3a,0xaa,0x77,0xfd,0x4d,0xcf,0xe6,0xa7,0x16 },
{ 0x00,0xe0,0xd1,0x07,0x3a,0x64,0xf0,0xd3,0xec,0x6c,0x81,0xda,0xeb,0x87,0x12,0xd0,0x3c,0x3b,0xc1,0x1c,0x07,0x42,0x1c,0x1f,0x9c,0x86,0x31,0xa2,0xf2,0x4a,0x2c,0xf8 },
{ 0xbe,0xa9,0xbf,0x9d,0x58,0x2d,0x15,0x97,0xc4,0x5a,0xc1,0xb1,0x99,0xa9,0x7a,0x42,0xfb,0x4b,0xd2,0x01,0x41,0x46,0x3f,0x42,0xce,0x6f,0xb6,0xa9,0xff,0xc3,0xf2,0xde },
{ 0x20,0xac,0xb3,0x3a,0x88,0xf5,0x34,0x36,0x07,0xae,0x06,0xa8,0xba,0x3e,0x78,0x7f,0xef,0xd0,0x22,0xa8,0x92,0x6f,0xce,0x5b,0xf2,0xc6,0x7a,0xdd,0xaf,0x50,0xf1,0x6e },
{ 0x49,0x8b,0xfe,0x18,0x3e,0xd5,0xf9,0xa9,0x26,0x4e,0xb6,0xb3,0x03,0xd8,0x04,0x57,0x99,0xd1,0x94,0x17,0x3d,0x7a,0x29,0x3c,0xd8,0x38,0x53,0x43,0x0f,0xe3,0xe7,0xa9 },
{ 0x1f,0xfc,0x79,0x45,0xd2,0x44,0x39,0x97,0x89,0x4c,0x8e,0x4d,0xad,0x3f,0xbd,0x02,0x9e,0x9d,0x46,0x06,0x34,0x4b,0xa3,0x89,0x0f,0xd3,0xb7,0xc3,0xb6,0x6a,0xbf,0x27 },
{ 0x85,0x0b,0xb7,0x2c,0x10,0x1a,0xce,0x8f,0xc4,0xc9,0x4f,0x90,0x64,0x8b,0x92,0x5f,0xb7,0xa1,0x5f,0xf7,0xbe,0xa6,0xe3,0x9f,0x23,0x8f,0x0d,0x8d,0xda,0x0d,0x87,0xa1 },
{ 0xa3,0x25,0xa6,0x27,0x0f,0x0c,0x33,0x49,0x1f,0x5f,0x28,0xa3,0xbb,0xbd,0xbb,0x7a,0x04,0x7d,0x8d,0x30,0xbc,0x1b,0xe6,0xca,0x64,0xb3,0x1d,0x1d,0xab,0xda,0x46,0x26 },
{ 0xb3,0x01,0xf6,0x2d,0xe2,0xb0,0xd4,0x6d,0xa9,0x1a,0x88,0x80,0x83,0xa2,0x0a,0x9d,0x7f,0x27,0xb9,0x8e,0xe9,0x63,0xf0,0xdf,0xc1,0xd4,0x4f,0xba,0x07,0x2c,0x48,0xd1 },
{ 0x12,0x74,0xfa,0x20,0x41,0x30,0x47,0xe5,0x3a,0x09,0x42,0x71,0x7e,0xa6,0xea,0x77,0x17,0xb7,0x3f,0xe8,0x99,0xad,0xca,0xff,0x12,0x36,0x5e,0xc2,0xca,0xca,0xf6,0x1b },
{ 0xb2,0xa9,0xb4,0x09,0xdb,0xc9,0xd3,0xd0,0xf4,0x96,0x7f,0x93,0x48,0x4d,0x73,0x3b,0x3a,0xc0,0x9f,0xc8,0x3e,0x8f,0x9a,0xe0,0x9a,0xe2,0x80,0xd0,0xd9,0xb4,0xfa,0x62 },
{ 0xa6,0x50,0x67,0xf6,0xc1,0xcd,0x06,0xaa,0x2a,0x6b,0xce,0x1d,0xd6,0x0a,0xa1,0x98,0x63,0x8a,0xda,0x5a,0x18,0x9f,0xc0,0x6d,0xfa,0xfb,0xf5,0x5b,0xbb,0x3e,0x62,0xa9 },
{ 0x39,0xe4,0x98,0x90,0x9f,0xa6,0x18,0x58,0x4e,0x28,0x54,0x53,0x15,0x35,0x72,0x87,0x48,0xd4,0x4f,0xe7,0x90,0x51,0x90,0x61,0x76,0x56,0x8f,0x34,0x6b,0x4a,0x24,0x90 },
{ 0x7a,0xe7,0xa2,0xca,0xa7,0x58,0x9c,0x85,0xbc,0x16,0x3a,0x0c,0xff,0x51,0x9c,0xf3,0x5d,0x18,0x62,0xc1,0x9a,0x98,0xd0,0x6c,0x3a,0x70,0xca,0x6b,0x95,0xdf,0xed,0x24 },
{ 0xad,0x77,0xc9,0x4a,0xd1,0xa1,0x2d,0x32,0xc2,0xd0,0x57,0x24,0x27,0x9a,0x8e,0x03,0x0a,0x17,0x0c,0x84,0x33,0x5b,0xd5,0xff,0x59,0x59,0x88,0xf0,0xcf,0xbb,0xed,0x35 },
{ 0x25,0x59,0x7a,0xd8,0x5b,0x30,0x7a,0xf1,0xa6,0xea,0x07,0x51,0xc4,0xe4,0x21,0xd0,0x8a,0x28,0xea,0x9b,0xa3,0xb1,0x1f,0x76,0x24,0x67,0xb1,0x38,0x23,0xdb,0x2e,0xdf },
{ 0x6d,0x08,0xc6,0xc5,0x19,0x2a,0x70,0xe4,0x3b,0xa0,0xe7,0x3b,0x2b,0x46,0xcc,0x3a,0xf2,0xd7,0x78,0x6a,0x4d,0x82,0x03,0x97,0x76,0x25,0x2d,0x93,0x1a,0xbe,0x9b,0x0f },
{ 0x5f,0x2b,0x93,0x9a,0x6b,0x30,0xf2,0xe5,0x94,0xf7,0x8e,0xb9,0xc4,0x82,0x45,0xbe,0x3a,0xa5,0x08,0xb1,0xf3,0xc2,0x19,0x49,0xe4,0x13,0xfb,0x03,0x1d,0xac,0x54,0x64 },
{ 0x31,0xc7,0x52,0x7f,0x03,0x66,0x8d,0x71,0x30,0x6b,0xe4,0x45,0xe0,0x83,0xe8,0x70,0xa9,0x47,0xba,0xb4,0x69,0x56,0xa3,0x56,0xe1,0x6b,0x22,0xa8,0xf4,0x11,0xed,0x1d },
{ 0x21,0x23,0x6e,0xc7,0xe5,0xe7,0x86,0xd5,0x23,0xca,0x35,0xef,0x00,0x46,0x1e,0xa8,0xfb,0x80,0x8e,0x96,0xbb,0xcc,0xbd,0xc7,0x22,0x20,0xb3,0x59,0x1b,0xbb,0x81,0xcc },
{ 0x86,0x54,0xcd,0x55,0x11,0x49,0x83,0x8d,0x37,0xd2,0x16,0x1b,0xfc,0x34,0xc9,0x01,0x17,0x1f,0x33,0x65,0x86,0xe7,0xb5,0x99,0x48,0x0e,0xe8,0x05,0x8f,0x61,0xb8,0x60 },
{ 0x37,0x48,0x08,0x8f,0xb5,0x86,0x1f,0xb0,0x0c,0xf9,0xff,0x0d,0x26,0xbc,0xbf,0x4b,0x79,0xfa,0xfb,0xfa,0x5a,0x28,0x14,0x75,0x90,0x4d,0x80,0x64,0x06,0x2f,0x3b,0xa7 },
{ 0x7e,0x5d,0x32,0x2a,0xdf,0x11,0xc5,0x12,0xe1,0xbb,0xea,0x65,0xa9,0x02,0x9c,0x5c,0x89,0x64,0x33,0x9c,0xfa,0x68,0xc8,0x6d,0x68,0xa4,0x1b,0x2f,0x50,0x9f,0xe8,0x4c },
{ 0x01,0x03,0xd1,0xa9,0xc7,0x2f,0xab,0x1e,0x7a,0x17,0xa0,0x94,0xca,0x55,0x33,0x3b,0x1f,0x97,0xee,0xff,0x1e,0x3c,0xd6,0x6f,0x2f,0xd9,0x72,0xf9,0xd8,0x25,0x26,0x55 },
{ 0x9c,0xa7,0x7b,0xd4,0x2b,0x60,0x99,0xe3,0x81,0xb8,0x8d,0x80,0x07,0xe8,0x24,0x99,0x20,0x98,0x7b,0x54,0x11,0x32,0x6e,0x5f,0x53,0xf0,0xab,0x89,0xc8,0xd3,0x21,0x8c },
{ 0x3f,0xb9,0xc3,0x85,0x36,0x75,0xe8,0xa8,0xec,0x41,0xc2,0x70,0x5c,0x8c,0xb7,0x23,0xed,0xc3,0x52,0x35,0x3a,0xd6,0xae,0x36,0x54,0xe6,0x9e,0x90,0x91,0x9b,0xa2,0xfa },
{ 0x59,0xf4,0x4a,0x48,0x78,0xa1,0x7f,0x23,0xfa,0x38,0x91,0x19,0xb7,0xef,0xaa,0x47,0x8c,0x8f,0xd4,0x9b,0xe0,0x0b,0x40,0xb5,0x1f,0x32,0x47,0x4f,0x93,0xf6,0x4d,0x14 },
{ 0x5d,0x4c,0x3e,0x8a,0xc9,0x97,0x79,0x7e,0x36,0xdb,0xd5,0x7c,0x3f,0x5e,0xf7,0x2f,0x35,0x2b,0xf9,0x6f,0xe4,0xa1,0xc3,0x97,0xfd,0xdf,0xee,0xcd,0xcf,0x8e,0xf2,0x0b },
{ 0x64,0x0e,0x94,0xcb,0x92,0xa7,0xde,0xd2,0x64,0xb6,0x95,0x2b,0x06,0xf0,0x73,0x62,0xc6,0x95,0xeb,0x87,0x3c,0xe5,0xe8,0x0d,0xb1,0x20,0xd8,0xfc,0x7d,0x1a,0x2f,0x44 },
{ 0xb1,0x70,0x3f,0xe3,0xcf,0xd4,0xdb,0x24,0xd0,0xf7,0x94,0x66,0x87,0x5b,0x8c,0xc8,0x3c,0x03,0xd0,0x5f,0xf4,0xc9,0x82,0x7b,0xc1,0x4c,0x44,0xf7,0xdf,0x33,0x22,0x83 },
{ 0x10,0x2e,0x63,0x19,0x66,0xe0,0x54,0xf6,0x19,0xf1,0x79,0xa3,0xd6,0x90,0xcb,0xca,0x81,0x5d,0x9b,0x7d,0x68,0x33,0x06,0x5c,0xdc,0x63,0xfc,0xb8,0x48,0x60,0x5e,0x73 },
{ 0xe6,0xe8,0x98,0x07,0x80,0x27,0x26,0x45,0x07,0x3c,0x91,0x03,0x0e,0x28,0xaf,0xaa,0x52,0xbc,0x67,0xb4,0xdb,0xbe,0x4f,0xbd,0x8b,0x70,0x38,0x82,0x14,0x18,0x5c,0x35 },
{ 0x65,0xf2,0xa8,0x3e,0x5f,0x71,0xdd,0x07,0xd7,0xd0,0x18,0x0e,0xb8,0x1c,0xff,0x5e,0x3f,0xe8,0x1d,0x68,0xf5,0x9d,0x55,0x30,0x3d,0x45,0x9d,0x82,0x89,0xe9,0x7b,0x8f },
{ 0xaa,0x2b,0xcb,0xa0,0x45,0x53,0x6e,0x9f,0x8a,0x9e,0xca,0x6e,0xc0,0x85,0x14,0x91,0xbc,0x55,0xa5,0x7b,0x25,0xa7,0xf1,0x88,0xd7,0x60,0x39,0x41,0x4c,0x7f,0xf8,0x2e },
{ 0x7a,0x5c,0x88,0xae,0xb2,0xb8,0x5a,0x9f,0x23,0x77,0x07,0xf7,0xf3,0x34,0x77,0x20,0xec,0x5e,0x94,0xf0,0x0f,0x34,0x7c,0x58,0x80,0x49,0xb3,0x14,0xe5,0x37,0xff,0xbe },
{ 0x36,0xa3,0xff,0x74,0xde,0x41,0x9a,0xc9,0x5b,0x11,0x88,0xff,0xfd,0x78,0x7a,0x48,0x3c,0x3a,0x5c,0x24,0xbf,0x25,0xcb,0x32,0x9e,0x93,0x7a,0x58,0x35,0xb3,0x0d,0xae },
{ 0x3c,0xba,0x17,0xb5,0x1d,0xa7,0x43,0x61,0x71,0x0c,0xdb,0x11,0x02,0x69,0xaa,0x8c,0xab,0x86,0x04,0x82,0xc4,0xdb,0x7a,0x9a,0x96,0xfb,0xb8,0xc5,0x10,0x6e,0x9b,0x60 },
{ 0x68,0xdc,0xbc,0xee,0x8f,0x9d,0xe4,0xbb,0xd5,0x99,0x7b,0x29,0xa9,0x52,0x58,0x5a,0x78,0x70,0xa9,0x89,0x3d,0x5c,0x6c,0x44,0xcd,0x30,0x2a,0x1e,0x70,0xf0,0xfc,0x37 },
{ 0xf6,0x7f,0x1f,0x54,0x76,0x33,0x0d,0xbf,0x03,0xc2,0xc3,0x0e,0xfb,0xbf,0xd9,0xe8,0x02,0xb9,0xb6,0xad,0x53,0x59,0x69,0xff,0x76,0xf3,0xb6,0x0f,0x42,0xad,0x2a,0xf2 },
{ 0x00,0xa9,0x42,0x7c,0xbd,0xe1,0x4b,0x13,0xd5,0x5d,0x31,0x88,0x99,0xc6,0xa8,0x5d,0x43,0x57,0xb2,0xed,0xdd,0x62,0x15,0xf7,0xc9,0x4f,0x6f,0x09,0x6a,0xb1,0xf3,0x17 },
{ 0x5a,0xeb,0x28,0x4e,0x33,0xaa,0x10,0x25,0x74,0x9a,0xe1,0xc3,0x29,0xa8,0x73,0x8b,0x3d,0x47,0x32,0xac,0x2d,0x9c,0xa0,0xb5,0xaa,0x7b,0x64,0x34,0xe2,0xfc,0xda,0xe1 },
{ 0x4b,0x14,0x24,0x0a,0x46,0x84,0xac,0x8d,0x83,0xb8,0x2f,0xd0,0xa0,0x32,0xc5,0x83,0x87,0x1a,0x68,0x3b,0xe7,0xcd,0xe0,0x95,0x0c,0x8c,0xd2,0xff,0xba,0xc0,0x35,0xce },
{ 0xd8,0x0b,0x4e,0x35,0x65,0x63,0xa9,0x50,0xb5,0xbd,0xfc,0x23,0x3f,0xe1,0xf5,0xc4,0x60,0xd6,0x78,0x3d,0xae,0xd8,0x7a,0x6c,0xf6,0x7e,0x04,0x36,0xca,0xb5,0xcc,0x08 },
{ 0xba,0x78,0xd9,0x71,0xef,0x76,0x0b,0x5e,0x81,0xa1,0x03,0x0f,0x88,0xbb,0x35,0x36,0xc0,0x4f,0xc9,0x61,0xba,0xb7,0x8e,0xb8,0x3e,0xcb,0x6a,0x45,0x83,0x30,0xea,0x54 },
{ 0x21,0x64,0xc1,0x50,0x3e,0x32,0xac,0xeb,0xe1,0xff,0xa0,0x3b,0x75,0x5a,0xf6,0x70,0xae,0x8e,0x8e,0xd6,0x42,0x3a,0x7a,0x91,0xbf,0xb2,0x30,0x86,0x87,0x25,0xb8,0x75 },
{ 0x55,0x9c,0x58,0xea,0x8c,0x85,0x57,0x7c,0x4b,0xab,0xd5,0xec,0x85,0x60,0x8e,0x56,0x63,0x2c,0x12,0x97,0x8d,0x8e,0xb2,0xa2,0x04,0xc1,0x45,0xee,0x6a,0x44,0x1c,0xcc },
{ 0x13,0xf2,0x14,0xd7,0x1c,0xac,0x94,0x35,0xf4,0xbd,0xcc,0xa3,0xac,0x5c,0x11,0x74,0x35,0x86,0x2d,0xfe,0x5d,0xc9,0x5d,0xbe,0x2b,0xf4,0x0e,0x60,0x36,0x13,0x9a,0x2a },
{ 0xb3,0x6c,0xf6,0x64,0x8d,0x13,0x88,0x06,0x4d,0xfc,0xad,0xee,0x77,0x1c,0x24,0x73,0x5d,0x4f,0xd2,0x63,0xf0,0x8f,0xf8,0x5a,0xcb,0x95,0x7b,0x99,0x30,0xb3,0xd5,0x71 },
{ 0x8c,0xf0,0xbc,0x82,0x36,0x27,0xdf,0x6b,0x82,0x1e,0xd6,0x14,0xf8,0xce,0xf0,0x73,0x64,0x24,0xf4,0x04,0xf7,0x46,0x91,0x9b,0xa6,0x57,0x4f,0x06,0x2c,0xa3,0x5b,0xb9 },
{ 0xe3,0x6e,0xbe,0xa2,0xba,0x51,0xa7,0x95,0xc6,0xf1,0x9c,0xb5,0xfe,0x8b,0x6d,0x8b,0x34,0x5e,0x83,0x67,0x07,0xef,0x13,0xb6,0x54,0xd8,0x82,0x54,0xb0,0xcd,0xb6,0x9d },
{ 0x1d,0xe9,0x97,0x8b,0x4d,0xb6,0x91,0x1c,0x56,0xdd,0xfa,0x33,0x94,0xff,0x5c,0xdd,0x73,0x94,0x2d,0x98,0x9f,0x93,0xbb,0xf6,0x2f,0x71,0x64,0xdc,0x4e,0x2d,0x4b,0xfc },
{ 0xbe,0xee,0xc0,0x6a,0xc6,0x88,0x38,0x65,0xa9,0x7f,0xce,0x33,0x9f,0x99,0x0c,0x5c,0x4d,0x97,0x1a,0x4a,0xe4,0xc0,0x32,0xbc,0xf8,0xa6,0xbd,0x11,0x9a,0x6f,0x6f,0xf3 },
{ 0x45,0x40,0x45,0x1d,0x12,0x1e,0x50,0x33,0x30,0x3a,0x94,0x8c,0xb7,0x51,0x98,0x1e,0x6d,0x70,0x53,0xea,0x71,0x32,0x56,0x02,0x2b,0xe0,0x82,0x54,0x72,0x0d,0x74,0x4e },
{ 0x97,0x66,0x38,0x8e,0x4d,0x4e,0xca,0xe9,0x15,0x26,0xda,0x96,0xef,0x4a,0x2c,0x5e,0x77,0xaf,0x02,0xb8,0xcc,0x9f,0xd0,0x96,0x8f,0x1b,0x4a,0x69,0xb8,0xd7,0x36,0x11 },
{ 0x9b,0xcd,0x2b,0x9a,0x67,0x7c,0x34,0x21,0x12,0xbb,0xce,0x4b,0xd2,0xda,0x1d,0x82,0xf3,0x73,0x21,0x86,0x39,0x28,0xbf,0x04,0x28,0x53,0x5d,0x05,0xaf,0xfd,0xf9,0x17 },
{ 0x21,0x4f,0xf0,0x74,0x1c,0xfc,0x1a,0x68,0x2a,0xd5,0x52,0xfa,0x18,0xa9,0xa0,0x7c,0x89,0x87,0x23,0xd6,0xa4,0x3d,0x17,0x97,0x83,0x34,0xf4,0x26,0xc3,0x56,0xfd,0x9f },
{ 0x2c,0x77,0x46,0x03,0x10,0xd4,0x3a,0x6d,0x46,0xa6,0x5f,0x16,0x0d,0x3e,0x6e,0xaa,0x2e,0x69,0x40,0xc8,0x2d,0x4d,0x53,0xd5,0x17,0x8e,0x48,0xcf,0x6a,0xbd,0x38,0xcc },
{ 0xf2,0x4c,0x4c,0x1b,0x70,0xb0,0x29,0xec,0x2c,0x89,0x0b,0xc9,0xa1,0x2c,0x1c,0xfb,0x15,0x57,0xc8,0xf4,0xf8,0x96,0xfc,0xbf,0xb3,0x38,0x4b,0x62,0xdb,0xc8,0x47,0x6f },
{ 0x00,0x50,0xb8,0x65,0x75,0x66,0xac,0x6c,0xfb,0x15,0x95,0xbb,0x11,0x35,0xa4,0x6b,0x1a,0xbd,0x4f,0x01,0x49,0x8d,0x72,0x03,0x6b,0xb4,0xaa,0x0e,0x47,0x55,0x10,0x14 },
{ 0xee,0xcd,0xb5,0x17,0x5f,0xc8,0x9b,0x0d,0xce,0x1f,0xb0,0x96,0xf5,0x88,0x98,0x1c,0x23,0x6c,0x7e,0x27,0xa0,0x4a,0xc7,0x22,0x0b,0x4f,0x3b,0x2b,0x60,0xe1,0xd0,0xd2 },
{ 0x33,0xac,0x46,0x7c,0x0d,0x6a,0x9c,0x4b,0x8a,0x8e,0x32,0xed,0x9a,0x96,0x3a,0x7d,0xe1,0x13,0xae,0x29,0xa6,0x66,0xc1,0xbd,0x9a,0x0b,0xde,0x76,0xbd,0xc3,0x77,0x31 },
{ 0x08,0x68,0x49,0x2e,0xee,0x33,0x81,0x81,0xf2,0xfa,0xa1,0x9d,0xad,0x67,0xaf,0x34,0x82,0xae,0x69,0x99,0xd0,0xce,0xbc,0x91,0x10,0x42,0x5d,0x61,0xb4,0x08,0x6a,0xe1 },
{ 0x5f,0x6a,0xab,0xf1,0xc0,0xba,0x50,0x9a,0xad,0xdb,0x08,0xa1,0x65,0x14,0x70,0x95,0x9d,0x1c,0xe6,0x5f,0x78,0x1d,0x4a,0x37,0xf1,0xa7,0xda,0x29,0xa9,0xb1,0xf8,0x60 },
{ 0x58,0x15,0x2f,0x42,0x93,0xdf,0x87,0x10,0x15,0xda,0xa9,0x92,0x8d,0x45,0x8c,0xd3,0xbb,0x01,0x15,0x1f,0x2b,0x27,0x21,0xd5,0x76,0x53,0x28,0x04,0x60,0x75,0x92,0xd6 },
{ 0xbc,0x30,0x33,0xbd,0x26,0x83,0x75,0xee,0x48,0x97,0x53,0x89,0xff,0xb7,0x0f,0x11,0x9a,0xd4,0xc3,0xce,0x76,0xb0,0x4e,0x50,0x47,0xd3,0x76,0xf7,0x59,0xec,0xf0,0x1d },
{ 0x52,0x6c,0xd7,0x12,0x48,0xda,0xf5,0x46,0x89,0xf6,0xe2,0x4f,0xd2,0x99,0x3e,0xa4,0x87,0xa7,0x52,0x1d,0x36,0x73,0x7b,0x67,0x28,0x4b,0x34,0xdc,0x75,0x72,0xf8,0x1c },
{ 0xf3,0xb8,0xcf,0xac,0x57,0x62,0x86,0x3d,0xde,0x46,0x26,0xbe,0xb0,0x0b,0x65,0xa4,0xf6,0xf3,0x19,0x05,0xad,0x35,0xb4,0xa9,0x79,0x25,0xcf,0xb1,0x6b,0x1c,0x48,0x1c },
{ 0x1c,0x76,0x59,0x01,0x9f,0xca,0x7b,0x15,0x16,0xc2,0x87,0xd1,0xf9,0xea,0xcb,0x6d,0x5f,0x5c,0x9f,0xa6,0xe9,0x6e,0xe9,0x57,0xfb,0xb4,0xc0,0x8e,0x8e,0x93,0xa2,0xbd },
{ 0xfa,0x67,0x40,0xf6,0x42,0xfa,0x94,0x1f,0xab,0xe2,0xda,0x17,0x59,0x78,0x0e,0x80,0x64,0x6c,0xb4,0xcd,0xc3,0x68,0xbe,0xab,0xbf,0x91,0xc1,0xbb,0xce,0xed,0x47,0x61 },
{ 0xe4,0xf4,0xf6,0xc8,0xe1,0xc5,0xdd,0x00,0x4c,0x23,0x9c,0x17,0x4e,0xd0,0xc1,0xba,0xe8,0xf3,0x1a,0x76,0x38,0x3e,0x13,0xc3,0x9d,0xc5,0x89,0x6a,0xfa,0x5e,0xc4,0xcd },
{ 0x37,0xfc,0x76,0x83,0x20,0xb8,0x06,0xbb,0x75,0x2f,0x97,0x95,0x1a,0x93,0x8a,0x01,0xd2,0xe6,0x40,0x04,0xdf,0x3a,0xeb,0xf2,0x1b,0xed,0x79,0x59,0xbe,0xbf,0x4f,0x0d },
{ 0x2a,0x51,0x7f,0x17,0xc4,0xad,0x0b,0xc6,0xb4,0xaa,0x88,0x1a,0x3f,0x4e,0xb5,0xc0,0xb8,0x59,0x2a,0x09,0x59,0x93,0x01,0xc2,0x2f,0xae,0xf1,0x44,0x89,0x61,0xa5,0x1b },
{ 0x29,0x64,0xb5,0xf9,0x2f,0x3d,0x21,0x2e,0x4f,0x56,0x75,0x87,0x07,0x4b,0xd9,0xd1,0x95,0x03,0xb4,0x73,0xcb,0xcc,0x68,0xe1,0x18,0x1e,0x6d,0xae,0x92,0x62,0xf7,0x32 },
{ 0x0a,0x95,0x52,0x88,0x6e,0x7d,0xbd,0xdc,0x4f,0x4f,0x96,0xc5,0x8f,0xb0,0x64,0xda,0x7c,0xd4,0x5a,0x84,0x2c,0xf0,0xf3,0x1c,0x91,0xba,0x0e,0x70,0xf7,0xc4,0x47,0xef },
{ 0x8c,0x92,0xb8,0x21,0x23,0x4b,0x94,0x67,0x0d,0xaf,0xbf,0x12,0x50,0xb0,0xea,0xdc,0x0c,0x95,0x00,0x4f,0xa2,0x18,0x76,0xd4,0xdf,0xb5,0xfa,0x29,0xf9,0x97,0xf2,0xfc },
{ 0x30,0x9c,0x79,0xb7,0xa0,0xa6,0x50,0x1f,0xc3,0x8b,0x35,0x16,0x54,0xef,0x3b,0xb6,0xab,0xcc,0x2b,0xd3,0x8c,0x0f,0x2b,0x71,0x33,0x7c,0x58,0x76,0x8f,0x05,0x14,0x91 },
{ 0x4a,0xf4,0x8d,0x6e,0xab,0xb8,0x77,0x21,0x65,0xc2,0x65,0x63,0xec,0xc1,0x21,0x95,0x62,0xa7,0xd6,0x45,0xd6,0x8b,0xcb,0x6f,0xb1,0x1e,0x9f,0xd3,0xfe,0xcb,0x64,0xec },
{ 0x45,0x2d,0x95,0x8f,0x35,0xea,0xc9,0x39,0x9c,0xec,0x0e,0xea,0x0d,0xf4,0xab,0x7e,0x25,0x81,0x51,0xb2,0x3b,0x52,0x4d,0x73,0xb0,0x7a,0xe4,0x48,0x6a,0xc4,0x4d,0x7d },
{ 0x62,0x0e,0x7b,0x5a,0xca,0xd7,0x6a,0x6b,0xd1,0x51,0x69,0x1f,0xca,0xca,0x19,0x87,0x38,0x8c,0xbb,0x7d,0x03,0xcf,0x18,0xff,0x58,0xb7,0xae,0x23,0x71,0xe2,0x8d,0x14 },
{ 0xbb,0xb2,0xf0,0x48,0x12,0x4e,0xde,0x35,0x9d,0x3a,0x70,0x1c,0x3a,0x60,0x9c,0xe9,0x10,0xae,0x1e,0xf7,0x5b,0xea,0xd8,0xb2,0xff,0x34,0xae,0x49,0x23,0x2a,0xd5,0x75 },
{ 0x64,0x27,0x1f,0xe0,0x8d,0x0a,0x94,0xb4,0x7f,0xad,0xfd,0x88,0x2a,0xe3,0x8e,0x32,0xcf,0x1c,0xd8,0x50,0xa3,0x2d,0x83,0x4e,0x79,0x81,0xa9,0x2a,0x63,0xbf,0x32,0xb6 },
{ 0x67,0x36,0x33,0xcc,0xb1,0xf1,0x91,0x09,0x97,0x9f,0x9c,0xe3,0x14,0x7d,0x2b,0x20,0x6f,0xb8,0x2f,0x10,0x6e,0x8d,0x09,0xb0,0xe0,0x5d,0xde,0xb1,0xab,0x63,0x43,0x68 },
{ 0x44,0xd2,0x0b,0xc9,0x98,0xee,0x07,0xdd,0x7f,0x66,0x87,0xd1,0xaf,0x9d,0x1b,0xa6,0x26,0x8e,0x53,0x5d,0x5b,0x8d,0x90,0x8d,0xbb,0xff,0x7b,0xf0,0x46,0x64,0xbb,0x4d },
{ 0x65,0x40,0x81,0x85,0xc4,0xc0,0xde,0x27,0x99,0x26,0x35,0x5a,0x2f,0x4e,0xd4,0x45,0x90,0xfe,0x70,0xea,0xbc,0x41,0x3a,0x54,0xba,0x13,0x11,0x89,0x1f,0xc1,0xf8,0x5d },
{ 0x86,0xf0,0x9c,0xf2,0x29,0xa9,0xb3,0x00,0xe6,0x24,0x3f,0x51,0x25,0x2e,0x62,0x6a,0xcf,0x2e,0x3a,0x30,0xbd,0x34,0x42,0xcf,0x4e,0xff,0xe8,0x2b,0xfc,0x3c,0x71,0xa3 },
{ 0x36,0x75,0x35,0x7f,0x0d,0x7b,0x56,0x06,0x7d,0xf3,0xa9,0xf2,0x14,0x37,0x46,0x18,0x1b,0x7f,0x70,0x5c,0x3a,0x27,0x35,0x32,0xae,0xad,0x82,0x06,0x97,0x5c,0x17,0xfa },
{ 0xd0,0xb9,0xfa,0xfe,0x16,0xb4,0xac,0xa5,0x79,0x55,0x45,0x6b,0x1c,0x8f,0xe3,0x3b,0xee,0x39,0xaa,0xf3,0x6a,0x9e,0x25,0x2b,0x98,0x86,0xf8,0xf3,0x61,0x57,0x94,0x4c },
{ 0x68,0x78,0x7d,0xd9,0xd7,0x11,0x06,0x42,0x69,0x00,0xda,0x20,0x30,0xf8,0x57,0x7c,0xa6,0xeb,0x82,0xa7,0x76,0x9e,0xac,0x9d,0x1a,0x2a,0x3d,0x2d,0x73,0x0d,0x3f,0x80 },
{ 0x41,0xee,0x6e,0x9d,0x12,0xc4,0xf4,0x98,0x17,0x60,0x3c,0x7d,0xad,0xe5,0xe6,0x84,0x1a,0xa9,0x33,0x09,0x89,0x25,0xe5,0xf7,0x1d,0x73,0x4d,0x10,0xad,0x92,0xbd,0x61 },
{ 0x72,0xf3,0xb1,0xc5,0xf8,0x45,0xa6,0x56,0x7c,0x89,0x50,0x4e,0x1a,0x12,0x88,0x8e,0xb6,0xa3,0x24,0x4c,0xa4,0x80,0x2c,0xa3,0x86,0xe4,0x58,0xe9,0x82,0xf7,0x25,0xdc },
{ 0x2b,0x19,0xe1,0xbb,0x36,0x60,0xe4,0xb3,0x89,0xc9,0xc2,0x74,0xeb,0x3e,0xc0,0xb1,0x84,0xa9,0xab,0xa5,0x88,0x4f,0x4e,0xf6,0x57,0x63,0x2d,0xd8,0x9d,0xda,0x4c,0x4d },
{ 0x9f,0x8f,0xd7,0x4e,0x6c,0xba,0xcc,0x20,0xd1,0x35,0x7e,0x14,0xac,0xf4,0x6e,0xb9,0xdc,0x11,0x52,0x35,0xef,0x0d,0x4d,0x51,0xa3,0xe3,0xc5,0xb1,0xe2,0x31,0x3a,0x8c },
{ 0xb6,0xc8,0x67,0xf6,0x5e,0xc8,0x18,0x0c,0xc1,0xcc,0xa1,0x1f,0x76,0x72,0x22,0x25,0x60,0xcc,0x87,0xc8,0x18,0x1f,0xd9,0xce,0x7f,0x0f,0x7f,0x6b,0x80,0x33,0xfd,0x60 },
{ 0xd5,0xb6,0x6e,0xf1,0xf5,0xf2,0x25,0x25,0xef,0x77,0x1f,0x20,0x47,0x6f,0x63,0x0e,0xb4,0x27,0x1c,0xff,0x53,0x9a,0x47,0xee,0x8c,0x0d,0x81,0x35,0x4b,0x7d,0x2f,0xe9 },
{ 0x84,0x98,0x75,0xd1,0x89,0xc5,0x13,0xe4,0x89,0xb6,0x7c,0x72,0xff,0xe8,0xfc,0xd1,0x74,0xa3,0x83,0xf9,0xc3,0x29,0x2a,0xff,0x50,0xfc,0x0c,0x06,0x85,0x13,0x30,0xa1 },
{ 0xe3,0x11,0x05,0x4c,0x48,0xeb,0xca,0x1f,0x79,0xe7,0x81,0x1c,0x1d,0x0a,0x45,0xbb,0x9d,0x1c,0x33,0xfd,0x13,0xe5,0x3a,0x4d,0xe1,0xeb,0x76,0xcc,0xc6,0x11,0x93,0xa3 },
{ 0xe3,0x5d,0xb7,0x48,0x3e,0x20,0xce,0xfe,0x75,0x36,0xe6,0x4e,0xea,0x60,0xbd,0x5b,0x93,0x3b,0xcd,0x20,0xc5,0xd1,0xed,0x53,0x4c,0x86,0x2b,0xdf,0xea,0x56,0xf3,0xbd },
{ 0xb1,0xf8,0x04,0xda,0xbc,0x68,0x27,0x4c,0x12,0x33,0x99,0x5c,0x5a,0x91,0x19,0xb5,0x69,0x35,0xbc,0xdd,0x83,0xb7,0xde,0x07,0xec,0x72,0x6d,0xce,0xdc,0x4e,0x9c,0xe7 },
{ 0x50,0xab,0x35,0x39,0x7c,0x4f,0xcd,0xf6,0xc6,0x57,0x9b,0x61,0x20,0x43,0xbf,0xa5,0x8f,0x5d,0xa9,0x1f,0xf2,0x54,0xbc,0x82,0xea,0x09,0x8b,0xf8,0x20,0x73,0x88,0xcf },
{ 0x6a,0x0f,0x6a,0x28,0x3a,0x8e,0x4e,0x86,0xd2,0xa3,0xd6,0x0e,0xf9,0xe3,0x7e,0xc3,0x3f,0x2a,0xb6,0x07,0x1a,0x30,0xe0,0xa4,0x77,0x73,0x51,0x28,0xe7,0x57,0x1e,0xb0 },
{ 0xdd,0x6b,0x8f,0xb4,0x46,0xd0,0x2d,0x1e,0xc0,0x14,0xc2,0x01,0x11,0xec,0xbe,0xae,0xfc,0xad,0xf8,0xc8,0x5d,0xbd,0xab,0xbd,0x23,0xdf,0x19,0x14,0x32,0xdb,0x5d,0x59 },
{ 0xd1,0xf8,0x7d,0x98,0x5a,0xde,0xe0,0xc3,0x46,0x6a,0xc0,0x45,0x87,0x45,0x99,0x8f,0xc0,0xf3,0x9a,0x98,0x84,0x89,0x7c,0xe4,0xc7,0x54,0x8d,0x1d,0xb8,0xe1,0x06,0x42 },
{ 0x38,0x49,0xbf,0x20,0xa8,0xdd,0xdc,0x80,0x22,0x10,0xfc,0x7e,0xe8,0xf4,0x0d,0x53,0x25,0xf9,0x02,0x94,0xca,0x83,0x01,0xf5,0x00,0x4f,0xc7,0x8c,0xef,0xdd,0x04,0x25 },
{ 0xdf,0x1c,0x5b,0x4a,0x92,0x9b,0x53,0xf9,0x32,0xe0,0x25,0xdf,0xff,0x4e,0x62,0x23,0x2e,0x1b,0x8f,0x82,0x4c,0x68,0xa8,0xcb,0xd6,0x2b,0x05,0x86,0x2c,0xae,0x19,0x57 },
{ 0xae,0x03,0x31,0x4b,0xf2,0xfa,0x5f,0x70,0x0a,0x5f,0x57,0x4e,0x4a,0x4a,0x4f,0x37,0xe2,0x88,0xd6,0xba,0xa7,0xb1,0x1c,0x1b,0xf4,0x2e,0xcb,0xbd,0x42,0x9d,0x0d,0x5e },
{ 0x31,0x56,0xfa,0xe0,0x8e,0x41,0x2d,0x21,0x42,0xe1,0x51,0x47,0xda,0xb5,0x63,0x58,0xdd,0x25,0x1b,0x7d,0xa8,0x08,0x11,0x8a,0xc1,0x7c,0xcb,0x07,0xc5,0x39,0xb2,0x8e },
{ 0xa8,0x87,0x4e,0xbf,0xb7,0x88,0x55,0xe3,0xa3,0x54,0x2b,0x67,0x66,0x73,0x17,0x6c,0xf3,0x86,0x7f,0x08,0x5a,0x2a,0x17,0xff,0x40,0x98,0x2c,0x12,0x9c,0x62,0xb4,0x13 },
{ 0xe3,0xaa,0xdb,0x7d,0xea,0x40,0xd2,0x5b,0xbb,0xba,0xec,0x41,0x40,0xbf,0xb7,0xba,0xd2,0x96,0x3f,0x87,0x48,0xd3,0x61,0xce,0x7b,0xbb,0xd1,0x1a,0xcb,0xa0,0x9d,0x54 },
{ 0x62,0x47,0x88,0x0b,0xff,0x0e,0x29,0x4d,0x09,0x43,0x05,0x6f,0x10,0x70,0x85,0x46,0x92,0xec,0x92,0x7b,0x72,0x41,0x7d,0x12,0x7c,0x2b,0xea,0x60,0xa3,0xba,0xcf,0x1f },
{ 0x1a,0xa9,0x05,0xfa,0xe6,0xbb,0xdf,0xfc,0x27,0x6b,0x6f,0x6a,0xb7,0x8a,0x57,0xd3,0x27,0x93,0x42,0x6d,0x06,0x66,0x8b,0x13,0x7b,0x45,0xdc,0xed,0x49,0x5d,0x71,0x20 },
{ 0x99,0xbc,0x88,0x21,0xd6,0xc0,0xa1,0x5f,0x42,0x15,0x72,0xb3,0xa6,0xe9,0x49,0xc0,0xdf,0xc3,0x80,0x78,0x29,0x4a,0xea,0xb2,0xfe,0xa0,0xc3,0x1d,0x92,0xf0,0xc4,0x8c },
{ 0x65,0xd5,0x5a,0x45,0x8d,0x78,0x94,0x20,0xc3,0xae,0xa4,0x8b,0x19,0x43,0x14,0x2c,0xd7,0x7b,0x45,0xd0,0xed,0xbd,0x16,0x67,0x43,0x87,0x10,0xb5,0x6c,0x96,0x91,0xd5 },
{ 0x9f,0xb9,0xfb,0x22,0x05,0xc5,0xf8,0x72,0xda,0x6d,0x3e,0x0b,0xcc,0x69,0x32,0x33,0x85,0x8f,0x68,0x41,0x22,0xa8,0x62,0x9b,0xb3,0x9f,0x78,0xcb,0x99,0x75,0x20,0xd6 },
{ 0x93,0x2e,0x1e,0x5f,0x01,0xa5,0x0d,0x36,0x15,0xa9,0x30,0x32,0x6c,0x14,0xd2,0xb3,0x58,0xfe,0x1c,0x58,0xcc,0x78,0x7f,0xb6,0xe9,0xe4,0xf7,0xc7,0xe1,0x38,0xaf,0xb4 },
{ 0x1f,0xd9,0xcf,0x33,0xe2,0x59,0x21,0x53,0x2a,0xb1,0x28,0xbd,0x77,0x55,0x38,0xa8,0x8e,0x4e,0xe8,0x85,0x16,0xed,0x22,0x16,0x1d,0x52,0x2e,0x9a,0x75,0x85,0xab,0xb5 },
{ 0xb3,0x73,0x5b,0xdc,0x73,0x7d,0x36,0x02,0x99,0xf7,0x6c,0xad,0x58,0x80,0x9c,0x37,0x39,0x29,0x37,0x04,0x79,0xd1,0xcc,0x18,0x2e,0x59,0xc7,0xb7,0x92,0x77,0xa4,0x2c },
{ 0x52,0xb8,0xab,0x72,0x28,0xf8,0x12,0xdd,0x13,0x9c,0xf1,0x6d,0x53,0x57,0x35,0x35,0xe1,0x7d,0x72,0x32,0x88,0x60,0xdf,0x36,0x62,0xcb,0xba,0xfe,0xb4,0xf4,0xf1,0x9e },
{ 0x2f,0x9e,0xc3,0xe9,0xcf,0x00,0xf3,0x77,0x08,0x11,0x2f,0xde,0x3d,0x0a,0x92,0x67,0x9d,0xb9,0xc3,0x65,0x41,0x8a,0x7b,0x34,0x5a,0xe9,0x6d,0x11,0x99,0xc5,0x98,0xf0 },
{ 0x89,0x02,0xe9,0x94,0xee,0xd6,0x72,0xae,0x0a,0x5e,0x6b,0xca,0xf8,0x67,0x42,0x08,0x60,0x29,0xa3,0x83,0xbd,0xb9,0x96,0x68,0x3d,0x02,0x11,0xf8,0xd2,0x16,0x83,0x05 },
{ 0x36,0x87,0x73,0xbc,0x0a,0x52,0x3c,0x7a,0x32,0xf0,0x05,0x15,0x9e,0xd7,0xd5,0xd2,0xb4,0x45,0xca,0x52,0x06,0x9d,0xea,0xe0,0x92,0x5c,0x79,0x02,0xca,0xa3,0x0f,0xa3 },
{ 0xb3,0xae,0x80,0x29,0x8e,0xe6,0x5c,0x81,0xb0,0xcd,0xed,0x0e,0x4b,0x08,0x6f,0x34,0xbf,0x3d,0x5f,0xc3,0xdb,0xca,0xaf,0xe6,0xfb,0x2e,0x58,0xfa,0x7b,0x4f,0xb5,0xf5 },
{ 0x00,0x11,0x07,0xa1,0x50,0x43,0x93,0x22,0xde,0x39,0x4e,0xe0,0x9d,0x20,0x4b,0xa2,0x37,0xb5,0xae,0xc2,0x8b,0x63,0xa3,0x03,0x9c,0x14,0x3b,0x80,0xcc,0x7c,0xa7,0xca },
{ 0x4a,0xfe,0x5c,0xb7,0xa8,0x34,0xab,0x3f,0xf0,0x18,0xb2,0xee,0xf1,0xce,0xfb,0xef,0x9e,0x55,0xbe,0x5c,0xdf,0xfa,0x08,0x27,0xfe,0x89,0x2d,0x26,0x41,0x8f,0x42,0xee },
{ 0xf2,0xed,0x5f,0x22,0x20,0xe7,0xa9,0xe6,0x3a,0x2c,0x7a,0x5e,0xf4,0x79,0x6d,0x7c,0x1e,0x23,0x16,0xbb,0x7b,0x1a,0x27,0x7e,0x78,0x96,0x3e,0xf5,0xb1,0x54,0x81,0x90 },
{ 0xa7,0xef,0x22,0x4a,0x5a,0xe7,0x74,0x1a,0x2a,0x95,0xba,0xdf,0x8b,0x36,0x56,0x05,0xb5,0x20,0x53,0x62,0x25,0x54,0x5e,0xbd,0x31,0xcf,0x60,0x81,0xc9,0x19,0xb8,0xc0 },
{ 0x66,0xaf,0x71,0xf6,0x61,0xd8,0x7c,0x7b,0x01,0x9a,0xd5,0xd2,0x0f,0xb5,0x2d,0xe9,0xa0,0x4f,0xb4,0x11,0x52,0x1b,0x97,0x43,0x11,0xa0,0x64,0xc8,0x4d,0x1c,0x41,0xd9 },
{ 0x2a,0x91,0xf3,0xb8,0x98,0x84,0x63,0x7b,0x29,0xe5,0x9b,0xdf,0xd6,0xbb,0x96,0x9c,0x02,0x5c,0x09,0xb2,0x71,0xb5,0x81,0x6a,0xe3,0xde,0x84,0x46,0x94,0x8a,0x83,0x30 },
{ 0xae,0xb2,0x11,0x78,0x9a,0xa1,0xec,0x24,0xe9,0xde,0x9e,0xfd,0x4e,0xa9,0xac,0xfc,0x73,0x6a,0xba,0x70,0x50,0x9a,0x08,0x08,0x9f,0x7d,0xc9,0x8e,0x4b,0x3d,0xf8,0x92 },
{ 0xe0,0x95,0xa1,0xea,0xb5,0x0c,0x09,0xf7,0x27,0x2d,0x80,0xce,0xc9,0x01,0x34,0xe0,0x64,0x9a,0x43,0x18,0x27,0x8d,0xd6,0x90,0xa8,0x44,0x65,0x79,0x98,0x92,0x27,0x0d },
{ 0x9f,0x5d,0xd0,0xaf,0xb2,0x5c,0x64,0xfe,0x2f,0x52,0xa0,0xa4,0x7f,0x49,0x0a,0xf0,0x12,0xe8,0x73,0xaf,0x61,0x79,0x5e,0x56,0xd2,0x25,0xec,0xa2,0xba,0x5a,0xa3,0xf3 },
{ 0x25,0x1c,0x54,0x0e,0xfc,0x8d,0x3b,0x93,0x71,0xc4,0x45,0xb7,0xd9,0xc0,0x15,0x99,0xd2,0xf1,0x58,0x44,0xd8,0x48,0x28,0xd5,0xf8,0x2e,0xda,0xa9,0xc6,0x2b,0xf4,0x83 },
{ 0x36,0xea,0x4c,0x1c,0x66,0x2c,0x64,0x37,0x65,0x08,0x98,0xeb,0xa3,0x46,0xba,0xef,0x06,0x72,0xaf,0x1c,0xb4,0xcb,0x6f,0xd6,0xf0,0xda,0xeb,0x5d,0xa1,0x47,0x95,0xfb },
{ 0x3e,0xaf,0x46,0x8a,0xd3,0x68,0x3b,0xb0,0x2c,0x56,0xdb,0x92,0x56,0x34,0x83,0x5b,0xac,0x62,0x95,0x53,0x36,0x29,0x9b,0xb1,0x07,0x84,0x68,0x26,0x2d,0x31,0xfa,0x95 },
{ 0x1a,0x9c,0x46,0x88,0xf1,0x09,0xfa,0xc0,0x1c,0x08,0xd2,0x7d,0x62,0xc9,0xfc,0x13,0x16,0xfa,0x80,0xe8,0xa7,0xed,0x92,0x0e,0xdb,0x2b,0xa9,0x50,0xe1,0xba,0x3f,0xc8 },
{ 0x86,0xa8,0x5f,0xf5,0x78,0x76,0xfd,0x33,0x7a,0x3d,0x5f,0x18,0xda,0xa5,0xd1,0xac,0xd8,0x1f,0xf8,0x4d,0x59,0x05,0xdb,0xac,0x93,0x67,0x56,0x2f,0xf0,0x54,0x45,0x45 },
{ 0xf4,0x49,0x04,0xfb,0x7d,0xc3,0x36,0x43,0x97,0xc5,0xbe,0xb7,0xd8,0x0c,0x3e,0x97,0x48,0xde,0x29,0xbf,0x8c,0xe8,0x6b,0x40,0xd7,0xd8,0xce,0x6a,0x4a,0xf7,0xb9,0xb5 },
{ 0x77,0xa3,0x0c,0x8b,0x67,0x6c,0x11,0x22,0xc8,0x2e,0x63,0x0d,0xa4,0x4b,0x07,0xea,0x5a,0x98,0x43,0x5f,0x00,0x2d,0x86,0xd2,0x0e,0xc8,0x91,0xcb,0xc4,0x61,0x45,0x6f },
{ 0x38,0x2c,0xd1,0x8e,0xa0,0x36,0xd8,0x49,0xc4,0xd3,0xb7,0x6a,0x59,0xa1,0x05,0xe2,0x07,0x88,0x19,0x8d,0x6b,0x56,0xcd,0x97,0x11,0x99,0xaa,0xcb,0xea,0xe5,0xb9,0x25 },
{ 0x7d,0xbe,0x66,0x58,0x78,0x59,0x8d,0x31,0x37,0xe4,0x8c,0x06,0xef,0x2e,0xf7,0xc7,0x87,0x0d,0x86,0x5a,0x1d,0x3a,0x85,0xa8,0xa8,0x25,0x57,0x61,0xf3,0xc8,0xd6,0x29 },
{ 0x67,0x5e,0xf5,0x35,0x02,0x3b,0x6e,0x40,0x4a,0x98,0xd9,0x47,0x15,0xc2,0x71,0x6f,0xb2,0x95,0xea,0x40,0xd5,0x6b,0x2d,0x03,0xe9,0x5c,0xb1,0x2b,0x18,0x5d,0xad,0x36 },
{ 0x71,0x88,0xab,0xb1,0xe3,0x30,0x74,0xca,0xf0,0x5e,0xa5,0x80,0xe9,0xf3,0x15,0x3c,0x70,0xd6,0x5e,0x10,0x4d,0xd7,0x8c,0xbf,0xac,0xad,0xaa,0x4f,0xdc,0x9e,0xf6,0x79 },
{ 0xf5,0xcf,0x6f,0xb2,0x9e,0x90,0xa9,0x01,0xc4,0xad,0xa5,0x23,0xf2,0x09,0x37,0x93,0x8d,0xea,0xa4,0x46,0x13,0x97,0x2a,0x6c,0xfa,0xb5,0x48,0x16,0x44,0xc0,0x0c,0xc4 },
{ 0x3e,0x3a,0xfb,0xd1,0x6f,0x8c,0xc3,0x1c,0x51,0x97,0x16,0x83,0xad,0x71,0xcf,0x2a,0x37,0x7b,0xd0,0x5c,0x0b,0x66,0x75,0x8a,0xbd,0x66,0x3e,0x9e,0x02,0x03,0x90,0x81 },
{ 0xd7,0xd7,0xa4,0x41,0x21,0x70,0x00,0x03,0x44,0xf2,0x24,0x72,0xdf,0x32,0xde,0x51,0xad,0xd6,0x90,0x8c,0x02,0x7e,0xe4,0xb2,0x54,0x72,0x38,0xc7,0xcc,0xb9,0x20,0x7a },
{ 0x68,0x18,0x3d,0x3a,0x3e,0x35,0x6c,0x43,0xeb,0x58,0x52,0x3f,0x49,0x55,0xef,0xa6,0x7f,0x47,0x9d,0x0c,0x21,0x37,0xd7,0xa1,0x1b,0xcb,0x50,0x2f,0xcb,0x4d,0x0b,0x33 },
{ 0x76,0x5f,0x68,0x7f,0xf1,0x3b,0x1c,0xf3,0x00,0xdf,0x26,0x65,0x71,0xaa,0xdd,0x83,0xaf,0x23,0xba,0x44,0x1d,0x98,0xb4,0xec,0xb7,0xcc,0x59,0x9a,0x82,0xbc,0xc0,0x81 },
{ 0xf3,0x0b,0x26,0x28,0x96,0xe0,0xc0,0x99,0x73,0x4e,0xd6,0xa7,0x53,0x72,0x99,0x00,0x88,0x57,0x9c,0xb7,0x0a,0x16,0x33,0xe2,0xbc,0x12,0x94,0xe5,0x81,0x71,0x2a,0x63 },
{ 0xae,0xde,0x95,0x0c,0xf7,0xb7,0x14,0x89,0xff,0x71,0xd2,0x1b,0xec,0x53,0x06,0x26,0xfa,0x5b,0x0d,0x0a,0x94,0xd5,0x42,0xf4,0xb3,0x80,0x11,0x59,0x2c,0x1c,0x65,0x62 },
{ 0xce,0xcc,0x15,0x07,0xdc,0x1d,0xdd,0x72,0x95,0x95,0x1c,0x29,0x08,0x88,0xf0,0x95,0xad,0xb9,0x04,0x4d,0x1b,0x73,0xd6,0x96,0xe6,0xdf,0x06,0x5d,0x68,0x3b,0xd4,0xfc },
{ 0x68,0x06,0xcd,0xcc,0x96,0x22,0x3a,0x72,0x73,0xc1,0x07,0x66,0x05,0x7f,0x60,0x84,0xf7,0x82,0x33,0xea,0x79,0x06,0x82,0x1b,0x43,0x2a,0xfa,0xeb,0xa2,0x97,0x9a,0xd9 },
{ 0x6b,0x79,0xc5,0x7e,0x6a,0x09,0x52,0x39,0x28,0x2c,0x04,0x81,0x8e,0x96,0x11,0x2f,0x3f,0x03,0xa4,0x00,0x1b,0xa9,0x7a,0x56,0x4c,0x23,0x85,0x2a,0x3f,0x1e,0xa5,0xfc },
{ 0x33,0x23,0x89,0xbb,0x1a,0xf1,0x50,0xd9,0x23,0xd0,0x3a,0x75,0x17,0xf1,0xb0,0xa2,0x41,0x60,0x85,0xe0,0xad,0x0e,0x40,0x26,0xd4,0x20,0x9c,0xba,0x7e,0x9e,0xb8,0x99 },
{ 0x9b,0xe3,0x28,0x77,0x95,0x90,0x78,0x09,0x40,0x7e,0x14,0x43,0x9f,0xf1,0x98,0xd5,0xbf,0xc7,0xdc,0xe6,0xf9,0xbc,0x74,0x3c,0xb3,0x69,0x14,0x6f,0x61,0x0b,0x48,0x01 },
{ 0x9f,0x79,0x95,0xb1,0x74,0x5a,0x25,0x8f,0x10,0xab,0x68,0x10,0x32,0x04,0x4c,0xaf,0xa7,0x95,0x74,0xdf,0x27,0xeb,0x80,0xbc,0x4f,0xd4,0x1a,0xbf,0xfc,0xee,0xc0,0x6c },
{ 0xd4,0xc5,0x06,0x1b,0x81,0xc4,0x68,0x2b,0x27,0xa0,0xcf,0xc6,0x45,0x9c,0xd9,0xd7,0x89,0x2e,0xb6,0x0a,0x43,0xf7,0x3d,0xd1,0x06,0x0b,0x6c,0x47,0x8a,0xa7,0xc3,0xd8 },
{ 0x09,0x34,0xcc,0xb0,0x2f,0x1e,0x2d,0xa3,0xf1,0x85,0xb4,0xf9,0xe1,0xfa,0x3a,0xda,0x02,0x8a,0xcb,0x14,0xd1,0x71,0xd1,0x8a,0xb9,0xd7,0x6f,0x7d,0x59,0x75,0xa3,0xfd },
{ 0x69,0x10,0x4e,0xf2,0x0c,0x66,0x76,0xaa,0xcc,0x9e,0x8c,0x29,0x18,0x00,0xd1,0xb7,0xe9,0x11,0xe2,0x0f,0x85,0xb4,0x06,0x61,0x56,0xea,0x11,0x8a,0xce,0x44,0xb8,0xd7 },
{ 0xc2,0xb0,0x87,0xe8,0x02,0x84,0x4a,0xbc,0xa9,0x92,0x7a,0x67,0xd6,0x06,0x75,0xe1,0x08,0xf7,0xb1,0x10,0x92,0xfe,0xcf,0x8b,0x2b,0x66,0xe0,0x0c,0x53,0xdc,0x49,0x53 },
{ 0x3b,0xe5,0x33,0x82,0x2b,0x14,0x6a,0x67,0xb7,0x64,0x93,0x97,0xf6,0xfd,0xcd,0xe0,0x45,0x12,0x33,0xed,0xa2,0x82,0x99,0x7f,0xe3,0x1c,0x4d,0xcc,0x0a,0x9b,0x09,0xfb },
{ 0xf2,0x4c,0x0a,0xc0,0x1e,0x5b,0x7d,0xd9,0x45,0x85,0xa4,0x48,0x46,0xae,0xd3,0x1c,0x3f,0x84,0x3f,0x6f,0x6b,0xd1,0x7e,0xd4,0x3c,0xfa,0x92,0x9f,0xae,0xdb,0xe3,0x8e },
{ 0xf5,0x38,0xcb,0xdd,0x2a,0x80,0xda,0xa5,0x14,0x8c,0x77,0x11,0xe4,0xde,0x66,0x7e,0xab,0xdc,0x90,0xf6,0x1f,0xbd,0x1a,0x9a,0xed,0xbd,0xff,0x47,0x80,0xda,0xd5,0xe1 },
{ 0xd4,0x39,0x4a,0xaa,0xef,0x05,0xeb,0xdf,0xbd,0xcb,0xb4,0xb0,0xfe,0xc0,0x8b,0xda,0x11,0x20,0xe6,0xad,0x53,0x41,0x96,0x67,0x89,0xdc,0x22,0x8d,0x49,0x14,0x79,0xd4 },
{ 0x29,0xd8,0xad,0xa1,0xdc,0x71,0x2d,0x24,0x64,0x8a,0xd5,0x3f,0xbd,0x7f,0x00,0xde,0x37,0x7f,0x67,0x24,0x6f,0x0a,0xfc,0xbb,0x4d,0xb8,0x61,0xfc,0x53,0x7e,0x4b,0xb2 },
{ 0xfe,0xf6,0x5a,0xd6,0x79,0xa0,0x6b,0x18,0x36,0x56,0x39,0xa9,0x45,0xb3,0x10,0x2d,0x77,0x13,0x05,0xc6,0x68,0xbf,0x99,0x23,0x57,0x71,0x01,0x19,0xa5,0xb1,0xd7,0x38 },
{ 0x05,0x51,0x39,0xb0,0xf6,0xda,0xf3,0x3b,0x3f,0xdc,0x29,0x4e,0x2b,0xfc,0x1a,0xd9,0x14,0xde,0x91,0xf7,0xd6,0xe9,0xf7,0x17,0xb4,0x50,0x9c,0x04,0x7f,0xbc,0x6a,0xcc },
{ 0x7f,0x0c,0x8f,0x8c,0xbf,0x23,0xbd,0xaa,0xd8,0x5b,0x17,0x1a,0x4b,0xcd,0xa1,0x67,0x38,0xd3,0xe8,0x1a,0xcb,0x93,0x4f,0x7c,0xe7,0xb6,0xa8,0xfd,0xe8,0x97,0x21,0x5a },
{ 0x5c,0x35,0xbe,0x3c,0x93,0xb6,0xab,0x3c,0x47,0xc5,0x5d,0xa7,0x4d,0x94,0x17,0x0b,0x0b,0x5e,0xb3,0x2a,0xbf,0xf2,0x0f,0x92,0x2f,0xaa,0xf2,0x1c,0x04,0xb9,0xee,0x18 },
{ 0x0c,0xdc,0x95,0x23,0x1e,0xdd,0x87,0x63,0x4f,0x42,0xec,0x16,0x6c,0x3e,0x96,0x11,0x57,0x12,0xa4,0x8f,0x01,0x63,0x77,0xeb,0xe3,0x8a,0x30,0x23,0x48,0xeb,0x0c,0x1d },
{ 0x28,0x6b,0xe3,0x20,0x13,0xbd,0x2a,0x04,0x4d,0x4b,0x6c,0x93,0xa6,0xd8,0xb7,0x23,0xcd,0x1f,0xff,0xd6,0x4e,0x75,0xaf,0x1c,0xaf,0x24,0x5e,0x57,0x0b,0x93,0xd5,0x9f },
{ 0x0f,0x96,0x8d,0x60,0x70,0x44,0x6f,0xaf,0x45,0x53,0xdd,0xca,0x74,0xc1,0xbf,0xea,0x14,0x89,0xa5,0x6b,0x23,0xe7,0xca,0xd4,0x6d,0x5f,0x8a,0x95,0x76,0xaa,0x54,0x86 },
{ 0xa1,0xfa,0x54,0x0c,0x8c,0x3d,0xeb,0x01,0xd5,0xb0,0xa2,0x43,0xbe,0xc3,0xf9,0xb1,0x7c,0xed,0x1f,0x3f,0xae,0x67,0xc7,0x34,0x07,0xb0,0x39,0xdf,0x93,0x8b,0x3a,0x68 },
{ 0x74,0x74,0x9f,0xcb,0x58,0x72,0x24,0x48,0x7f,0x06,0x68,0x0c,0x23,0xf7,0xb4,0x5a,0x0c,0x7f,0x11,0x1d,0x3f,0xc7,0x98,0x15,0x0a,0x1e,0x3a,0xe7,0xa3,0x49,0xcf,0xb3 },
{ 0x70,0x9a,0x22,0x79,0xcc,0x68,0xcf,0x00,0x7c,0x15,0x5e,0xb9,0x2f,0xd9,0x85,0x82,0xd8,0xe3,0xa3,0xad,0xce,0x47,0xa3,0x13,0x59,0x98,0xee,0xc9,0xa4,0x58,0xe6,0xd9 },
{ 0xcb,0xbe,0xc9,0xa3,0xb1,0x61,0x52,0x64,0x7f,0x74,0x44,0xf4,0x66,0xd8,0x9f,0xee,0x0a,0xf3,0x55,0x54,0xfe,0x28,0xc9,0x92,0x88,0xa0,0x8c,0x88,0x5c,0xf3,0x19,0x7e },
{ 0x8b,0x8a,0x88,0xd1,0x76,0xa4,0x1d,0x5e,0xbd,0x33,0x79,0xc2,0x20,0xef,0x0f,0xbb,0xa2,0x7e,0xcb,0x39,0x02,0x2c,0xe3,0xbf,0x60,0xc4,0x8c,0x03,0xe3,0x69,0x26,0x7d },
{ 0x30,0x9f,0xa9,0x99,0xd7,0x87,0x86,0x4e,0xdd,0x1a,0x53,0xd7,0x3a,0xfa,0xd8,0x26,0xef,0x3a,0x3f,0xd9,0x30,0x54,0xa7,0xb6,0x48,0xad,0x26,0x2b,0x37,0xba,0xf1,0x9c },
{ 0xdc,0xa4,0xe7,0x8d,0xb0,0x37,0x99,0xdd,0xa7,0x5e,0x8a,0x29,0x5c,0x0d,0xc7,0x21,0x6b,0xb6,0xbd,0xc6,0x96,0x7c,0x27,0xc1,0xb0,0xbb,0x05,0xc7,0x54,0x9e,0xa6,0x56 },
{ 0xba,0x4d,0x60,0xd2,0xb5,0xff,0xeb,0x63,0x33,0x6c,0xf8,0xa0,0x9e,0x6c,0xe6,0x75,0xea,0x08,0x87,0x4b,0x71,0x8c,0x58,0x82,0xfc,0xd3,0xd6,0xe4,0x76,0xe5,0x2c,0xe0 },
{ 0x1f,0x17,0xc2,0xd0,0xdc,0x7c,0xb7,0xec,0x7d,0x8a,0x1a,0xb9,0xf6,0x2c,0x9d,0xc0,0x97,0x05,0x1a,0xa4,0x11,0x5a,0x8c,0x01,0x13,0xa4,0x85,0xed,0x82,0x0e,0x1a,0x5a },
{ 0xa3,0xc2,0x04,0xe1,0x74,0x99,0x6f,0x18,0xe3,0x56,0x5f,0xfd,0x66,0x5d,0x41,0x71,0x75,0x4d,0xca,0x20,0xb7,0xb9,0xc2,0xd0,0xe8,0x8a,0xf0,0xd5,0x36,0xc4,0x19,0x85 },
{ 0x71,0x92,0xbe,0xc2,0xc8,0xb7,0x8d,0xe5,0x9a,0x3e,0x00,0x45,0x23,0x54,0x40,0xe0,0xd6,0x56,0x3c,0xc4,0x99,0x91,0xbe,0x63,0x97,0xbd,0x27,0xa0,0xff,0xa8,0x1d,0x18 },
{ 0x81,0x1e,0x2a,0xe8,0xd6,0x34,0x4a,0x78,0xac,0xf6,0xfe,0x8e,0x29,0x5d,0x4f,0x53,0x8e,0x54,0xe7,0x3b,0x3b,0xd1,0x21,0x25,0x84,0x6f,0x60,0x9e,0xc4,0x1d,0xbd,0xaf },
{ 0xc9,0x5d,0xf2,0x25,0xb7,0x6c,0xf4,0x96,0x55,0xbc,0x2d,0x12,0xfc,0x78,0x0a,0xab,0x96,0x4c,0x07,0xdc,0xcb,0x08,0xb2,0xe7,0xcc,0xcb,0x61,0x1a,0x48,0x34,0xe1,0xfd },
{ 0x30,0x51,0xfa,0x7f,0x38,0xad,0xce,0x51,0x9e,0x6a,0x8d,0x35,0x85,0x97,0x69,0xed,0x9b,0xf1,0x5c,0xa5,0x91,0x5f,0x5b,0x9c,0xc7,0x0f,0xcc,0x34,0x5c,0xca,0x53,0xf9 },
{ 0x46,0x45,0xee,0x13,0xc1,0x7a,0xa7,0x9c,0xe3,0x4c,0xfc,0x00,0xb2,0xbb,0x67,0xd4,0xb1,0x6d,0xf1,0x01,0x04,0x28,0x21,0xe1,0xe4,0xc4,0x45,0x8a,0x31,0xbe,0x87,0xdd },
{ 0x86,0xdb,0x38,0x67,0xaf,0x37,0x79,0x11,0xda,0x0f,0x40,0xcd,0xb9,0xac,0xb0,0x8d,0x66,0x35,0x95,0x39,0xb0,0x70,0xc5,0xc5,0x5c,0x95,0xda,0x4d,0xa0,0x97,0xff,0x86 },
{ 0x88,0xe5,0x3e,0x75,0x15,0xca,0xc8,0x77,0xe3,0x5a,0x5b,0xa8,0x52,0xa0,0xfc,0x38,0x3f,0x50,0xcf,0x5c,0x45,0x7a,0x74,0x6f,0x60,0x19,0x41,0x89,0xbc,0x76,0x00,0x24 },
{ 0x92,0xd8,0xe6,0x2c,0x1a,0x4f,0x88,0x14,0x55,0x93,0xe6,0x08,0xf5,0x70,0xba,0x52,0x41,0x5a,0xac,0x53,0xa3,0x91,0x45,0xfa,0xb6,0x8e,0x46,0x10,0xef,0x1b,0xb2,0x79 },
{ 0x26,0x6b,0x5d,0x36,0x45,0x51,0xf7,0x3b,0x9c,0xdb,0x75,0x34,0x09,0x9b,0x68,0x09,0xaf,0x9b,0x72,0xa4,0xe6,0x59,0xcc,0x5a,0xa9,0x51,0xb1,0x18,0x60,0xf7,0xd5,0x7c },
{ 0x7b,0x18,0xc4,0x02,0x34,0xb0,0x98,0x63,0x7d,0x98,0xd0,0x15,0xd1,0xed,0xdf,0x17,0x91,0xe8,0xdb,0xe2,0x2d,0xf8,0x1b,0xb7,0xb6,0x65,0xf9,0x82,0xf4,0x88,0x45,0x9b },
{ 0x6b,0x03,0x2c,0xc7,0xac,0xc2,0x14,0xa6,0x84,0x85,0x57,0xb5,0x1e,0x10,0xc4,0xc9,0x5c,0xdd,0x2c,0x41,0x78,0xcf,0x87,0x43,0x38,0xd7,0x87,0x85,0x5e,0x9c,0xc2,0x7f },
{ 0x07,0xb2,0x9d,0x71,0xe8,0x77,0xd2,0x1c,0x93,0x56,0x52,0xd8,0x90,0xc8,0xee,0xd6,0xc4,0x91,0x82,0x19,0x1f,0x87,0xf3,0xd8,0x35,0x62,0x88,0xb1,0xb4,0xb5,0xc3,0x54 },
{ 0x8f,0x8e,0xc6,0x2a,0x2a,0xe1,0xb6,0x6c,0xf5,0x0e,0x6c,0xab,0x96,0x91,0xc0,0x9e,0x87,0xa4,0xd4,0xba,0x55,0x42,0xd3,0xa1,0x90,0x38,0x6d,0x9d,0x9c,0xa2,0xdc,0xf0 },
{ 0xa3,0x38,0xc8,0x6a,0xb2,0xb8,0x50,0xa5,0x14,0x45,0x2c,0x3a,0x70,0x2d,0xcf,0x47,0x45,0x79,0x1d,0x3d,0x8f,0x40,0xc8,0xfa,0xd6,0xde,0x4f,0x64,0x23,0x6b,0x49,0xca },
{ 0xe6,0x3a,0xb1,0x11,0x20,0x88,0xb1,0x71,0xdf,0x28,0xb5,0x14,0x7c,0xad,0x05,0x23,0xf5,0x14,0x72,0x1b,0xd4,0x0d,0x9b,0x59,0xc1,0x8f,0x4f,0x91,0x7b,0x6a,0xc6,0x80 },
{ 0x74,0x1c,0x65,0xf3,0xd7,0x1f,0xf0,0x3d,0xe7,0xf4,0x91,0xc0,0x08,0xcb,0x9a,0x26,0xf7,0x46,0x84,0xf7,0x0a,0x3e,0x78,0x71,0x71,0xa8,0x58,0x41,0x05,0x90,0x15,0xab },
{ 0x36,0x64,0x01,0x7a,0x6e,0xdd,0xc9,0xfd,0xb7,0x3c,0x5f,0xb8,0xfd,0xc7,0xe6,0xbf,0x76,0xfc,0x70,0x30,0x11,0xbd,0x85,0x41,0xad,0xc0,0x47,0x44,0x5d,0x96,0x5f,0x9d },
{ 0xd4,0x50,0x74,0x60,0xa9,0x22,0x0a,0x7f,0x0a,0x62,0x51,0x99,0x0f,0x51,0x49,0x5d,0xdd,0xa0,0xc1,0x33,0xba,0x6a,0x4e,0x3b,0x1b,0x2a,0x98,0xd7,0x84,0xa0,0xcc,0xed },
{ 0x77,0xc8,0xfb,0x96,0xf1,0x4f,0xf4,0x21,0xe0,0x03,0xe2,0xdb,0x02,0x9d,0xf0,0xd4,0x5b,0xd3,0x77,0xd0,0x8f,0x84,0x45,0x50,0x10,0x21,0xbf,0xd5,0xa2,0x73,0x1e,0xf8 },
{ 0x19,0x41,0xb8,0x39,0x58,0xed,0x3d,0x33,0xf9,0xd5,0xcb,0xb8,0xde,0x05,0xa3,0xdf,0x9f,0x96,0x44,0x9c,0x1e,0x7c,0xc3,0x28,0x22,0xcf,0x41,0xf6,0x72,0xad,0x49,0xc6 },
{ 0x7e,0xb1,0x40,0xba,0xe6,0x43,0x2b,0xdc,0x5c,0xd7,0x81,0xa8,0x6d,0x41,0x31,0x92,0x33,0xa9,0x88,0xc2,0x0f,0xd5,0x87,0xd8,0x5d,0x72,0xd2,0x9f,0xa7,0xa3,0x82,0x53 },
{ 0x1c,0x4c,0x04,0xcb,0xfb,0x6f,0xe9,0xc7,0xa6,0x82,0xee,0x85,0x6a,0x02,0x81,0x25,0x3c,0x6b,0x70,0xcf,0xb1,0x2a,0x47,0xc4,0x5d,0xd2,0xb0,0xb4,0xf5,0x1d,0x60,0x5b },
{ 0x6c,0x3b,0xbb,0x18,0xf9,0x3f,0x29,0x88,0xa1,0x20,0xb2,0x09,0xc0,0x34,0xa2,0xbd,0xa5,0x22,0xec,0xdf,0xf9,0xce,0xe8,0xf8,0x01,0xba,0xbd,0xeb,0x4c,0xba,0x64,0x61 },
{ 0xf0,0xa5,0xaf,0x4b,0x37,0x97,0x21,0xc4,0x1c,0x76,0x1b,0x1c,0x85,0x88,0xb7,0xad,0x2c,0x07,0x80,0xe9,0xb2,0xfb,0x44,0x87,0x85,0x5d,0xa1,0xb2,0x64,0x8a,0x29,0x1c },
{ 0xc9,0x15,0x5e,0x23,0x95,0x4c,0x3a,0xb6,0x30,0xec,0x6e,0xd8,0xc6,0x47,0x8c,0xf2,0xaf,0x48,0x13,0x2a,0x23,0x0d,0xef,0x8e,0x83,0xb0,0xe3,0x26,0x3c,0x37,0x0a,0x5c },
{ 0x55,0x62,0xe5,0xe4,0xe2,0x55,0x23,0x2a,0xd8,0xaf,0x45,0x1c,0x0e,0x26,0x4b,0xae,0xf4,0xf1,0x9d,0x26,0xc7,0x97,0x9a,0x69,0x82,0xa3,0x71,0x9e,0xa6,0xa9,0xb0,0xce },
{ 0xb0,0xd2,0xb4,0xff,0x99,0xa1,0x84,0x27,0xbd,0x01,0xec,0x78,0x80,0x36,0x86,0x62,0xae,0xf3,0x39,0x3b,0xf9,0x90,0x5d,0xee,0xd1,0xd8,0xae,0x3e,0x9a,0x42,0x17,0x8e },
{ 0x37,0x77,0xde,0xa6,0xc5,0xd0,0x5a,0xdc,0x4b,0xbb,0xc0,0xf5,0xd8,0x1c,0x22,0x6b,0xc1,0xd8,0xb8,0x8f,0xfc,0xb7,0x55,0xa0,0x79,0x74,0x54,0x31,0xaf,0x0f,0x2a,0xc4 },
{ 0x61,0xe2,0xe1,0xbd,0x6e,0x74,0x2c,0xf3,0x22,0xfb,0xfc,0xac,0x8a,0x2f,0xab,0x18,0x12,0xff,0xb5,0x81,0x30,0x19,0x99,0xc1,0x31,0xa0,0x79,0xab,0x3b,0x94,0x2b,0x3b },
{ 0x76,0xca,0x87,0x12,0xb4,0xbc,0xec,0xaa,0x62,0x6a,0x38,0xc2,0xe0,0xc5,0x87,0xc0,0xc8,0x59,0xf1,0x7c,0xc6,0xff,0x95,0x82,0x32,0x4e,0x3b,0xf3,0xe9,0x0b,0xa0,0x4b },
{ 0xee,0xc5,0x74,0x1a,0x61,0x60,0xc3,0x5c,0xcb,0xc5,0x81,0xda,0x8e,0x67,0x0a,0x78,0xc5,0x6e,0xa5,0x3a,0x6e,0x95,0x44,0x0b,0x88,0x6e,0x4f,0x96,0xf6,0x87,0x51,0x67 },
{ 0x27,0xef,0x47,0x76,0x9e,0x2e,0xf4,0x46,0x0d,0x21,0xfa,0x23,0x91,0x88,0xa5,0xfb,0xb7,0xd2,0x9b,0x67,0xa4,0xb1,0x3b,0xc0,0x70,0x61,0x36,0x55,0x46,0xac,0x5c,0x6e },
{ 0xa3,0xc4,0x41,0xca,0x11,0x92,0x31,0xcd,0x56,0x41,0x02,0x94,0x07,0xc2,0xa8,0x0b,0xd3,0xfe,0xbd,0xb1,0xa2,0x49,0x8c,0xb3,0xc4,0x73,0xd5,0x37,0x3a,0xbc,0xd4,0x6b },
{ 0x0b,0xb2,0x7e,0xf6,0x72,0x15,0x84,0xd7,0x2c,0xee,0x85,0x8a,0xee,0xdf,0xad,0x02,0x33,0x1f,0xc6,0x8f,0xfe,0x88,0x5e,0x0f,0x16,0xc8,0x4e,0x22,0xbb,0x32,0xaa,0x8e },
{ 0x09,0x5e,0xee,0xa3,0x7c,0xf9,0xae,0x12,0x6f,0x61,0xf2,0xb1,0x74,0x8b,0x14,0xcc,0xca,0x16,0x92,0x1f,0xc6,0x08,0x35,0xd8,0x7d,0x1b,0x08,0x36,0x3f,0x14,0x76,0xb6 },
{ 0xb1,0x11,0xf2,0x2e,0xff,0xbc,0x77,0xbb,0x8d,0x9a,0xfc,0xe0,0x78,0x44,0xe9,0xc0,0xec,0x65,0xfa,0x1f,0xa1,0xa1,0x2d,0x9a,0x34,0x23,0x37,0x50,0x95,0xa3,0x71,0xb6 },
{ 0xda,0x5f,0x04,0xd1,0xa4,0x01,0x3b,0x3e,0x29,0x44,0xb2,0x5d,0x2e,0x32,0x9c,0x75,0xdb,0x2e,0x27,0xb2,0x4e,0x20,0x45,0x3a,0x51,0x63,0xf6,0x58,0xa5,0xa1,0x34,0xb7 },
{ 0xfa,0xd7,0xee,0x91,0x9a,0x41,0xd0,0xc4,0xce,0xd8,0x08,0xcb,0x5f,0x89,0xbe,0x20,0xd2,0xe4,0x3a,0x9a,0x66,0xcb,0x0c,0xfc,0x5d,0x39,0x52,0x2a,0xa6,0x88,0xa1,0x2a },
{ 0x16,0x22,0x4f,0xc3,0x98,0x9e,0x5a,0x5f,0x39,0xe8,0xac,0xad,0x3c,0xc3,0x67,0xa2,0x4d,0x3a,0x25,0x67,0x80,0xab,0x8e,0xbe,0xa1,0x9b,0x27,0x9c,0x9f,0xcd,0x68,0xf3 },
{ 0x4d,0x4d,0xbd,0x12,0x93,0xb9,0x7c,0x0e,0xaf,0x33,0xb8,0xf7,0x13,0x7a,0xfb,0x55,0xb4,0x0a,0x97,0x1a,0x22,0xee,0x45,0x6f,0xb6,0x53,0x5b,0xaf,0xc8,0x7b,0x63,0x83 },
{ 0x44,0x30,0xff,0x1e,0xed,0xc8,0xdd,0x56,0xf8,0x71,0xde,0xb8,0x4a,0x5b,0xe3,0x0c,0xe7,0xa2,0x5e,0x40,0x61,0x1e,0x31,0xff,0x9b,0xf1,0xbc,0x3a,0x72,0xeb,0xb4,0xc6 },
{ 0xe3,0x30,0x01,0x80,0x63,0x1b,0xe6,0xb1,0x09,0x41,0x5f,0x49,0x86,0x3e,0x10,0xb9,0x42,0x51,0xe9,0xee,0x98,0xbf,0xd6,0xbd,0x93,0x15,0xe1,0x54,0x60,0x72,0x22,0xc0 },
{ 0xeb,0xab,0xa3,0xd2,0xcb,0x08,0x31,0x18,0x51,0xaa,0x23,0x95,0x5c,0x19,0x46,0xd8,0x18,0xff,0x9c,0x47,0x3d,0xdc,0xff,0xe8,0xf1,0x23,0x14,0xe8,0xd9,0x32,0xa4,0xe1 },
{ 0x9a,0xcd,0x4c,0x39,0x75,0x01,0x2e,0x23,0x9e,0x25,0x1f,0xf2,0xf9,0xa0,0x71,0x74,0x3c,0x5b,0xd4,0x3c,0xa2,0xbb,0x99,0xa5,0xe9,0x5b,0x54,0x5e,0x98,0xa7,0xe3,0x87 },
{ 0x47,0xe6,0x41,0x7e,0xf2,0x21,0x1c,0x26,0xd6,0xcb,0x05,0xb5,0xc0,0x9a,0x08,0xa2,0x4d,0xa2,0xbb,0x86,0x78,0xed,0xde,0xee,0xa4,0x18,0xfb,0xae,0xc8,0x84,0x52,0xa0 },
{ 0x87,0x89,0x84,0x0a,0x8a,0xc2,0x84,0x0f,0x95,0xba,0x16,0x8a,0x83,0x23,0x17,0x3a,0x71,0x0e,0x77,0x4a,0x0b,0xbe,0x6b,0xb8,0x39,0xf7,0x7f,0xe9,0x99,0x9f,0xa0,0x8a },
{ 0x95,0xda,0x23,0x38,0x72,0xce,0x27,0x5c,0xc9,0x1c,0x9a,0xea,0x8e,0x0b,0xac,0xa8,0xa2,0x6a,0x51,0xee,0xf1,0x56,0x4b,0x97,0x2d,0x1c,0x40,0xa7,0x90,0x71,0x22,0x59 },
{ 0xbf,0xab,0x17,0x8a,0xff,0xb9,0xdb,0xf6,0x5d,0x61,0x53,0x65,0xf6,0x3e,0xea,0x2f,0xc0,0xae,0xc5,0x82,0xe6,0xc1,0xd8,0x9d,0x22,0x1a,0x22,0xa5,0x4b,0x22,0x0d,0xca },
{ 0x21,0xa5,0xca,0xf5,0xa0,0xdc,0xd4,0xd4,0x4d,0x47,0x2a,0xfb,0x54,0x56,0x4f,0xb7,0xe1,0x3d,0xf5,0x9d,0xfb,0xfc,0xec,0x54,0x52,0x60,0x4c,0xf7,0xad,0xc7,0xcd,0x1a },
{ 0x4e,0x36,0x4e,0xa3,0x9c,0x8b,0x2b,0xb5,0x44,0x89,0x81,0xd0,0x24,0x70,0x32,0xe0,0x1c,0xb6,0x85,0x3f,0x1b,0x12,0xc8,0x4f,0x89,0xdc,0xda,0x09,0x3a,0x3d,0x46,0x23 },
{ 0xc0,0x06,0x42,0x99,0xa0,0xaa,0x48,0xe2,0xc9,0x8e,0x4b,0x4e,0x65,0x03,0xdf,0x04,0xc0,0x3e,0x15,0x73,0x41,0x7d,0xdf,0xd3,0x52,0x2c,0xbc,0xde,0x85,0x7d,0x10,0x3a },
{ 0x04,0x33,0x0e,0xf5,0xe1,0xb9,0xb1,0x65,0xe2,0x1d,0xf2,0x60,0x62,0x63,0x40,0xce,0x1e,0x33,0x7b,0x31,0xfc,0xbf,0x50,0x55,0x05,0x2d,0x1c,0xe2,0x95,0x54,0x1b,0x30 },
{ 0x44,0xc5,0xfb,0x6a,0x83,0x38,0xd3,0x73,0xf9,0xab,0xdd,0x6c,0xd7,0xa3,0xd2,0x12,0x35,0x34,0xcc,0x41,0x28,0x6f,0x7c,0x02,0xd3,0x52,0x47,0xee,0x70,0xa8,0x39,0x26 },
{ 0xeb,0xdd,0xe7,0x7a,0xf6,0xdb,0x5a,0xb9,0xb5,0x22,0xa7,0x64,0x4b,0x03,0x61,0x6c,0x16,0x24,0xda,0xf0,0x90,0xf2,0xbd,0xaa,0x61,0xfd,0xd8,0x62,0x60,0xb0,0xdd,0x35 },
{ 0xae,0x8e,0x3a,0xa1,0x74,0xbf,0x43,0x37,0xe3,0x9d,0xe0,0xe0,0x8c,0xbd,0x88,0xb1,0xcd,0xf1,0x73,0xb2,0xc6,0x93,0xc1,0x09,0x55,0x52,0xcc,0xdb,0xa9,0x51,0x50,0x16 },
{ 0xf4,0x95,0x68,0x6c,0x53,0x81,0x1b,0xd4,0x11,0xbb,0x92,0xbc,0x83,0x24,0xf6,0xd0,0x25,0x6d,0x66,0x50,0xf8,0xdc,0x11,0xd2,0x24,0x25,0xb3,0xa2,0x19,0xae,0x34,0xbe },
{ 0x77,0xcd,0x4a,0x30,0x38,0xcd,0x19,0x8a,0x78,0x8c,0x19,0x5b,0x21,0x2b,0x53,0x1f,0x79,0x7a,0x18,0x94,0x19,0x05,0x10,0xfa,0x22,0x38,0x7b,0x43,0x5b,0x37,0x1d,0x24 },
{ 0xc4,0x59,0xca,0x15,0x0f,0xba,0xab,0xd1,0x72,0xcc,0xd4,0x7f,0xc0,0x90,0x31,0x69,0x61,0x4c,0x21,0xdc,0x13,0xcc,0x9a,0x4a,0xae,0x23,0xd0,0x08,0x74,0xcb,0xd2,0x0e },
{ 0x9c,0xbe,0x98,0x41,0xf0,0xb1,0xa5,0x98,0xc1,0x3b,0x40,0x2a,0x39,0xf4,0xbb,0x2f,0xa3,0xf2,0x8a,0xea,0x58,0x25,0x4d,0xe2,0x59,0x97,0x1e,0x43,0x20,0x07,0x6b,0x39 },
{ 0x27,0xbe,0xe7,0xb5,0xc3,0x67,0x52,0xb2,0x79,0x95,0xba,0xb2,0x60,0x73,0xb1,0x4f,0x36,0xfd,0x4f,0x08,0xc5,0xf9,0x9e,0x9a,0xcb,0xc0,0x0a,0xda,0x11,0xe8,0x60,0xcc },
{ 0x18,0xe6,0x56,0x78,0xbc,0xec,0xf4,0x4c,0x18,0x64,0x25,0xd4,0x1d,0xde,0x99,0x23,0x83,0xfd,0x79,0xdf,0x66,0xc1,0x9a,0xa7,0x3a,0x31,0xdc,0x80,0xc0,0x31,0x2c,0x9b },
{ 0x44,0x4d,0xc6,0xcd,0xd8,0xcc,0x2f,0x7e,0xf6,0x55,0x74,0x61,0xea,0x40,0xf9,0x83,0x48,0x11,0xfb,0x59,0x39,0x66,0xec,0x95,0x94,0xcd,0x74,0x47,0x21,0x47,0xd0,0xdf },
{ 0x60,0x87,0x98,0x76,0xa4,0xce,0x9d,0xd3,0x95,0x08,0x79,0xdd,0xbb,0xd6,0xd0,0x04,0x88,0xd6,0x1e,0x53,0x46,0xcd,0x79,0x1d,0x39,0x7d,0xd5,0x24,0x35,0x4c,0xe7,0xf7 },
{ 0x71,0xf1,0x06,0xee,0xd3,0xbe,0x65,0xc0,0x73,0x2b,0x4d,0x4d,0xab,0xa1,0xb9,0x64,0xfc,0x18,0xb4,0x69,0x32,0xf2,0xd5,0xe1,0xf4,0x73,0xf0,0x4e,0x64,0x4c,0xec,0x54 },
{ 0xda,0xab,0x1b,0x53,0xb6,0x7d,0xa0,0x4c,0x6b,0x07,0x3b,0x18,0x45,0x18,0x76,0xf4,0x90,0x43,0x9a,0xd5,0x7c,0xa3,0xb2,0xbb,0xca,0xf4,0x3c,0x60,0x8e,0x65,0x36,0x25 },
{ 0xa8,0x1c,0x76,0x34,0x52,0xa2,0x70,0x5a,0x1c,0x35,0x04,0xbd,0xbc,0x4d,0x75,0xcb,0x62,0xf6,0x78,0x37,0x7d,0xe7,0xfa,0xdc,0xf7,0x47,0xd4,0xd1,0x70,0xf5,0xb0,0xde },
{ 0x0b,0x8c,0x00,0x2b,0x0f,0x1b,0x5f,0xa1,0xcc,0x6c,0x6a,0x87,0xcd,0xb0,0x59,0x77,0x60,0xd3,0x14,0xb4,0x4b,0x5d,0xe7,0x07,0x3d,0x3a,0x29,0xd1,0xec,0xd3,0x29,0x2f },
{ 0x37,0x5a,0xe1,0x59,0x3a,0x8f,0x12,0x2f,0x3b,0x6b,0xd0,0x37,0x5f,0xa1,0x6d,0x9f,0xb8,0xb4,0x69,0x8f,0xbe,0xea,0xd9,0x16,0xe7,0x99,0xac,0x08,0xc8,0xd3,0x91,0x7f },
{ 0xbb,0x52,0xbf,0x72,0x34,0x32,0xed,0xb0,0xf2,0x22,0x7a,0xa2,0x2b,0xbf,0x58,0xd3,0x64,0x8b,0x74,0x4b,0x80,0xea,0xb7,0x82,0xa8,0xba,0xbd,0x42,0x4c,0x44,0x58,0xca },
{ 0x59,0x24,0xf0,0x0e,0x2d,0x21,0xdf,0xb0,0xf7,0x4e,0x03,0x20,0x36,0x10,0x69,0xac,0x06,0xee,0xab,0x5d,0x96,0x12,0x31,0x4b,0x05,0xb3,0x13,0xab,0xf9,0x13,0x1d,0xb7 },
{ 0x30,0x77,0xf7,0x05,0x92,0xeb,0x03,0x5c,0x23,0xf6,0x83,0xe5,0x0a,0xa3,0xd8,0x6f,0x08,0xb6,0x38,0x5a,0x67,0xb0,0xde,0xa6,0x08,0xb5,0x0d,0xd8,0x0f,0xec,0x0f,0xce },
{ 0x64,0x86,0x84,0x59,0xe6,0x04,0x73,0x98,0xe3,0x7e,0x70,0x8e,0x85,0x36,0x27,0x93,0xe0,0x87,0x3e,0x94,0xda,0xba,0x6e,0xea,0xf0,0x40,0x23,0x2f,0xf6,0xd7,0x3a,0x20 },
{ 0x77,0x1d,0x30,0x3c,0xb6,0x2f,0x5b,0x77,0x36,0xc9,0x8d,0xda,0xa4,0xdb,0xee,0x4e,0xb4,0xa3,0x04,0x6b,0x8f,0xb1,0x77,0x0e,0x15,0x56,0x50,0x43,0xa9,0x77,0x2a,0x18 },
{ 0x9f,0x79,0x64,0x44,0xc5,0x0e,0x31,0x73,0xb7,0x22,0x38,0xa0,0x00,0x09,0x54,0x11,0x15,0xf6,0x0c,0xac,0x91,0x5e,0x11,0xf3,0x49,0xb9,0x20,0xd4,0x5a,0xb0,0xcf,0xe2 },
{ 0x8d,0x2c,0xe8,0x00,0xd5,0xa8,0xf6,0x5f,0xda,0x82,0xdc,0xd3,0x38,0x99,0x51,0xa2,0xed,0xd6,0xdb,0xad,0x88,0x2d,0x9e,0x69,0xf1,0x2b,0x51,0x34,0xcf,0x60,0xc6,0x7e },
{ 0xa6,0xe5,0x40,0x06,0xad,0x70,0x26,0x20,0x2f,0xfc,0x82,0x37,0x58,0xce,0x4e,0x54,0xa9,0x65,0x70,0x79,0xc8,0x6a,0x57,0x8d,0x14,0x1c,0xbb,0x0a,0xc7,0xbe,0x83,0xa7 },
{ 0x7f,0x23,0x6a,0x5f,0x62,0x16,0xb9,0x50,0xc8,0xbb,0xa1,0x6c,0xf8,0x1c,0xcf,0x6f,0x0a,0xd0,0x2a,0x46,0xb9,0x59,0x2b,0x31,0x38,0xa3,0x5e,0x37,0x0b,0x3a,0x53,0x63 },
{ 0xb6,0xff,0x42,0xa5,0x45,0xb7,0x35,0x62,0xa0,0xba,0x54,0x43,0x80,0x77,0xa4,0x6a,0x07,0xe0,0x12,0xeb,0x5f,0xe4,0x4e,0x13,0x62,0x16,0xed,0x33,0xde,0x80,0x97,0xc8 },
{ 0xfb,0xcb,0xe3,0x8e,0xdf,0x86,0x7f,0x76,0x7e,0x9c,0x7f,0xc4,0xab,0x8c,0x16,0xc7,0x90,0x66,0x95,0x49,0x47,0x73,0x2a,0x82,0xd5,0xa9,0x4d,0x41,0xf0,0xbc,0x27,0xe2 },
{ 0x12,0x21,0x5f,0xbc,0x93,0x7a,0xca,0x84,0x08,0xd3,0xf0,0xb0,0xca,0xfe,0xad,0x7b,0x2b,0x9e,0xb1,0x60,0xe2,0xcd,0x5d,0x1a,0x9f,0xec,0xd1,0xc8,0x62,0xa8,0x6c,0xb5 },
{ 0x23,0x28,0x9e,0x35,0xe7,0xb5,0x12,0x09,0x5e,0x82,0x73,0x00,0xe4,0x72,0x4f,0xaa,0xfb,0xba,0x55,0xe8,0x7f,0xd4,0x83,0xb0,0x7f,0x50,0xab,0x1a,0x22,0xdb,0x86,0x8e },
{ 0x27,0x6a,0xc6,0x37,0x1e,0xc3,0x89,0xf3,0x7e,0x30,0xdf,0x0f,0xba,0xc2,0xdf,0x71,0x7b,0x7b,0x9c,0x86,0x30,0xae,0x5e,0x9c,0x72,0xd7,0x0f,0x3b,0xa2,0x2b,0x33,0x34 },
{ 0x03,0x5a,0x68,0x2d,0x4c,0x99,0x5a,0x6a,0x86,0x5b,0x7e,0x3c,0x71,0x53,0xcb,0x02,0x2e,0x2a,0xf9,0x23,0x82,0x4e,0x07,0x25,0x49,0x18,0x60,0xb4,0x9d,0xfb,0xcd,0x96 },
{ 0x89,0x5d,0x9e,0xcc,0x2d,0xf6,0xb6,0xce,0x57,0x70,0xfb,0xf4,0x21,0x35,0x60,0x39,0xd4,0x44,0x52,0xfa,0x84,0x3c,0x83,0x9e,0xbf,0xd4,0x21,0xe8,0x9d,0x05,0x45,0x89 },
{ 0x49,0x21,0x51,0xda,0x6a,0x3a,0x29,0x68,0x3c,0x10,0x78,0xf9,0xd2,0x8e,0x2d,0xfb,0xee,0x1b,0xaf,0x94,0xf7,0x9c,0x05,0xd1,0x6c,0x51,0x9e,0x51,0xf9,0x4d,0x9e,0x07 },
{ 0x17,0x3f,0x7d,0x87,0xe8,0xea,0xcc,0x07,0x1b,0xce,0x10,0x6a,0x3c,0x99,0x2c,0xb7,0x41,0x9a,0xcc,0x39,0xe2,0x00,0xdf,0x6a,0xab,0x75,0x6c,0x39,0x7b,0x42,0x90,0x5b },
{ 0x9f,0x58,0xd8,0x38,0xed,0xde,0xee,0x06,0x2d,0xbc,0xc8,0xda,0x9f,0x73,0x15,0x96,0xc0,0x3c,0x24,0x6e,0xf3,0x39,0xb0,0xf4,0x79,0x92,0x63,0x54,0xc1,0x8b,0x64,0xa4 },
{ 0x69,0x5f,0xb4,0xd5,0x25,0xe8,0x0d,0xd1,0xfa,0x01,0xf8,0xd0,0xc3,0xce,0x4e,0x95,0xf7,0x90,0x76,0x6a,0x2d,0xa5,0x23,0x9d,0xdc,0xd2,0x2f,0x31,0x63,0x1d,0x68,0x1d },
{ 0xb7,0xcf,0x8a,0xe3,0x6b,0xa8,0xe0,0x43,0x2d,0x00,0xc9,0x6f,0x01,0x3c,0x02,0x63,0x77,0x0c,0x87,0x30,0x26,0x51,0xd9,0x8c,0xb3,0xed,0x37,0xfd,0xbd,0x45,0xde,0xe0 },
{ 0xb3,0x4b,0x20,0x61,0xf3,0x81,0x5b,0x85,0xd5,0x95,0xb0,0x6b,0x92,0x9e,0x1a,0x29,0x76,0xe5,0x51,0x23,0x29,0x66,0x86,0xd7,0x12,0xac,0x34,0x47,0x3e,0xf5,0xdf,0x84 },
{ 0x86,0x0f,0xe8,0x2d,0x5f,0x48,0x31,0xce,0x17,0x86,0x01,0x94,0xd2,0x66,0xac,0x0f,0x88,0xcd,0x18,0x5c,0x68,0x67,0x17,0xb3,0x9d,0x6a,0xe3,0x3f,0x47,0x04,0xfb,0x28 },
{ 0x51,0x27,0xb7,0x33,0xec,0xd1,0x7c,0xd2,0x8d,0xe5,0xe2,0xbd,0xbe,0xc2,0x4b,0x3c,0xa1,0x3c,0x75,0xcb,0x1c,0xce,0x5a,0x61,0xa1,0xe2,0x69,0x0e,0x0f,0xb7,0xe4,0x05 },
{ 0x1d,0xda,0x6f,0x20,0xb0,0x44,0x93,0xcc,0xe7,0x6f,0x5c,0x01,0x3f,0xc3,0x99,0x02,0x35,0x07,0xbe,0x8c,0x88,0x5a,0xa2,0xd6,0x06,0x2f,0x55,0x35,0x96,0x56,0x06,0xe7 },
{ 0x21,0x59,0xcc,0x33,0xcb,0x70,0x3e,0x93,0xd8,0x13,0x1c,0x62,0x76,0x5e,0xc8,0x78,0x0f,0xed,0x0b,0x6a,0xdd,0xe8,0xec,0x0a,0xeb,0xc4,0x00,0x0f,0xd9,0x10,0xd1,0x3a },
{ 0x5c,0xb4,0x4a,0x39,0xac,0xf1,0x71,0xa9,0x73,0x28,0xca,0x54,0x69,0xba,0xee,0x55,0x26,0xe3,0x61,0x08,0x69,0x78,0xdd,0x09,0xae,0x5c,0x4c,0x16,0x25,0x76,0x51,0x8c },
{ 0x22,0x99,0xa7,0xaf,0x59,0x08,0x3b,0xcd,0x1f,0x85,0x54,0x56,0x65,0xfe,0x69,0x30,0xa7,0x2e,0xe8,0x7d,0xf2,0xdb,0xbc,0x36,0x5a,0xcd,0xe2,0x2e,0x97,0x22,0x31,0xd4 },
{ 0x6d,0x71,0x38,0x12,0xf0,0xdd,0x83,0xcf,0xd0,0x4a,0x4a,0x39,0xe8,0x2e,0x29,0xad,0x80,0x5d,0x15,0x61,0x8d,0xdc,0x72,0x34,0xbd,0x73,0xbd,0x5d,0xb6,0x37,0xd4,0x8a },
{ 0x44,0x0b,0xab,0x24,0x27,0xc7,0xcf,0xc6,0x88,0xdc,0x7d,0x5b,0x66,0x8f,0x7a,0xbd,0x00,0x4c,0xe5,0xd6,0x79,0x4e,0x85,0x9f,0x4e,0x25,0x8c,0xbe,0x6c,0xa7,0x3b,0xb2 },
{ 0x4e,0x3b,0xdf,0x0c,0x20,0xc0,0x50,0x50,0x97,0xf8,0x61,0x9c,0x51,0xb0,0x27,0x8d,0x50,0xe3,0x72,0x17,0x07,0x22,0xa6,0xaf,0x42,0xa7,0x58,0x0f,0xb4,0x0a,0x88,0x7e },
{ 0x54,0x9e,0xff,0x66,0xc3,0xa5,0x1e,0xa4,0x2e,0xf0,0x24,0xdf,0x48,0x81,0x11,0x94,0x5d,0x93,0xf3,0x0f,0x3f,0xfc,0x8c,0xeb,0x2d,0x86,0x90,0x8e,0x74,0x8d,0xbe,0x23 },
{ 0xc0,0xcb,0x79,0x6a,0xc1,0x96,0x4c,0x33,0x23,0x38,0xcf,0x79,0xf2,0x98,0xf1,0x55,0x68,0xe2,0x61,0x1a,0x0b,0xf2,0xea,0xfe,0x32,0x04,0xb6,0x1c,0x60,0x0b,0x21,0xc1 },
{ 0xe2,0x80,0xd8,0x8e,0x81,0x1c,0xe9,0x51,0xc6,0x19,0x83,0x58,0x9a,0x40,0x07,0x5b,0x47,0x76,0xb0,0x22,0x76,0x74,0x0e,0x97,0xba,0xdd,0x90,0xbb,0xe1,0x78,0x46,0x58 },
{ 0x6b,0x6d,0xb7,0x01,0xf0,0x56,0x30,0xc6,0xe8,0xa9,0x6c,0xf5,0x4f,0x54,0x5f,0x26,0x1a,0x5f,0xf8,0xa5,0x5a,0x94,0x0c,0x45,0x12,0x58,0x82,0xd8,0x48,0xd6,0x5c,0x23 },
{ 0x3c,0xe5,0x54,0x37,0x65,0x84,0x80,0xb8,0x68,0x0d,0x00,0x3c,0x6c,0xc4,0xa0,0xfe,0x3c,0x4f,0xf0,0xab,0x5b,0x2a,0xf9,0x36,0x5b,0x63,0xa7,0x66,0x62,0xa6,0xcb,0xe7 },
{ 0x53,0xc1,0x8b,0xbf,0xbe,0xbe,0x65,0x5b,0xb8,0x25,0x5b,0x26,0x48,0xdb,0x2a,0xdc,0x8f,0x25,0x42,0x09,0x31,0xd9,0x46,0x15,0x9a,0x7a,0xe1,0xad,0xe3,0x53,0x13,0x81 },
{ 0xfc,0xc5,0x95,0x44,0xff,0x49,0x57,0xbb,0xd6,0x42,0xcf,0x3c,0x2f,0xbc,0x5f,0x48,0x83,0xe9,0x6a,0x21,0x9f,0xce,0x9b,0xa8,0x30,0x43,0x58,0x2f,0x6d,0x4e,0x8b,0x30 },
{ 0x5c,0x9f,0x86,0xdd,0x8f,0x1c,0x85,0x49,0xef,0x82,0x51,0x7f,0x75,0x72,0x0b,0xfa,0x41,0xd0,0xcf,0xd3,0x0e,0x92,0x9b,0x67,0xf7,0x38,0xfb,0x9f,0xc2,0x36,0x47,0x62 },
{ 0xce,0xc4,0xa4,0xbd,0x4c,0xad,0x9d,0x0c,0x2d,0x3b,0x2c,0xa7,0xaa,0x62,0x69,0x2c,0x39,0x77,0x69,0xdc,0xda,0x92,0x98,0x17,0x68,0x9d,0x0f,0xbb,0xbb,0xca,0xd2,0x4a },
{ 0x34,0xc3,0xd3,0x54,0x49,0xd5,0xb7,0xec,0xc8,0xc0,0x3a,0xdb,0x38,0x5f,0x27,0xd1,0xac,0x6e,0xd3,0x46,0x5e,0xb8,0x49,0x0f,0x1c,0x9b,0x2f,0xd9,0x9e,0x8f,0x01,0x9a },
{ 0x55,0xb4,0xb0,0x9c,0x4c,0x32,0x34,0xd4,0x50,0xc1,0x08,0x65,0xcf,0xac,0x8b,0x81,0x69,0x5c,0x05,0x97,0xe5,0xb5,0x70,0x30,0x6c,0x3c,0xe8,0xc2,0xe8,0xd2,0xde,0x28 },
{ 0x05,0x39,0x9f,0xa0,0xb2,0xd5,0x63,0x0b,0xed,0xe6,0xb3,0x98,0xb8,0xb3,0xb4,0xb7,0x99,0x1a,0x2f,0x62,0x3b,0xb2,0x8c,0xb5,0xf6,0x0b,0x41,0x5f,0xa7,0x09,0x5d,0xf2 },
{ 0xab,0x9a,0xc4,0x3b,0xc3,0x0c,0x79,0x0b,0x14,0xbe,0x0a,0xc4,0x5a,0x4d,0x07,0x79,0xac,0x2a,0xe4,0x99,0x69,0xa2,0xf7,0xe1,0x34,0xea,0x90,0x53,0x2b,0x65,0x4b,0x3a },
{ 0x68,0x01,0x30,0x45,0x72,0x08,0xf8,0x4a,0xbd,0x8a,0x97,0x5a,0x86,0xbf,0x1c,0x00,0xd2,0x7d,0x1f,0x91,0xb1,0x2a,0x4a,0x5e,0x4c,0xbd,0xeb,0xe6,0xb4,0xdb,0xf6,0xfd },
{ 0xb6,0x08,0x41,0x74,0x71,0xe7,0xfa,0x97,0x13,0xf2,0xea,0x40,0x36,0xf1,0x75,0x09,0xd7,0x5f,0x06,0xd9,0x8d,0x75,0x1a,0x3e,0xff,0xe2,0x59,0xec,0xe9,0x90,0xb0,0xbd },
{ 0x86,0x84,0xa3,0x07,0xbe,0x35,0x3d,0x16,0xfb,0x4c,0x92,0x22,0x60,0xce,0x9d,0x74,0xf9,0xdc,0x22,0x82,0xe4,0x68,0x60,0x46,0xcc,0xf8,0x1a,0x7d,0x71,0xa9,0x26,0xb7 },
{ 0xa7,0x40,0xbc,0xc9,0xbc,0x69,0x1e,0x15,0xed,0x41,0x87,0xe0,0xe6,0x6b,0x1e,0xb6,0x67,0x96,0xac,0x80,0xc3,0x12,0x80,0x22,0x02,0x28,0x9a,0xd5,0xee,0x77,0x60,0x8b },
{ 0x6d,0xd5,0xa9,0xd7,0x2f,0x97,0x00,0xa3,0x92,0x1c,0xec,0x56,0x23,0x30,0xf1,0x44,0x8a,0xd1,0x91,0x2a,0x12,0x42,0xc2,0xa2,0xfd,0xc0,0x8c,0x6b,0x9c,0x17,0x84,0xda },
{ 0xe0,0x1d,0xe6,0x1d,0x2c,0xbe,0x72,0xa3,0x05,0xb6,0xc0,0x7b,0xf1,0x6b,0x5c,0x5d,0x3c,0x07,0xbe,0x1f,0xb0,0x3e,0xfd,0x70,0x61,0x56,0x2d,0x28,0x06,0x62,0x65,0xbe },
{ 0x57,0x0c,0xf7,0x58,0x91,0x93,0xee,0x88,0xa3,0x7d,0x6c,0x16,0x9a,0xb8,0xaa,0xf5,0x09,0xaa,0x87,0x01,0xf8,0x04,0xb8,0x37,0xa9,0xe0,0xe3,0xcd,0x3a,0x74,0xb5,0x57 },
{ 0xc4,0x49,0x06,0x33,0xc6,0xc3,0xd7,0x71,0xb4,0x42,0x76,0x3b,0x93,0xf7,0x81,0x19,0x7a,0xd2,0xcb,0x09,0xb7,0xfe,0x07,0x40,0xad,0xc2,0xfb,0xe6,0xc0,0x1e,0x52,0x85 },
{ 0x91,0x59,0xbf,0x15,0x87,0xf9,0xc0,0xc1,0x67,0x47,0x2f,0x34,0x57,0x22,0xac,0xf6,0x96,0x16,0x51,0xf7,0x4c,0x20,0x4b,0x7a,0x6e,0x03,0x9a,0x70,0xaa,0x77,0x30,0x5d },
{ 0x45,0x19,0x94,0xac,0xad,0x8d,0x00,0x9b,0x40,0x79,0xff,0xc1,0xab,0x6a,0x02,0x5a,0xef,0x29,0xc1,0x30,0x40,0xb9,0x61,0x56,0xe9,0x7b,0x85,0x35,0x25,0xb2,0x72,0xa2 },
{ 0xc6,0xb5,0xd5,0xca,0xf2,0x20,0x29,0x37,0xa7,0x79,0x43,0xb8,0xb7,0x31,0xf2,0xfe,0xa2,0x55,0xbf,0x81,0x0b,0x6a,0x89,0x3b,0xaf,0xbb,0x93,0x15,0xb3,0x21,0x87,0x37 },
{ 0xda,0xb4,0xdd,0x47,0x25,0x5f,0x12,0xbd,0xb0,0xfa,0xa1,0x9d,0xc5,0x67,0xff,0xb3,0x40,0xa6,0x0e,0x06,0x2e,0xfa,0x46,0xdb,0x5c,0x7d,0x68,0x80,0xc5,0xb4,0xd6,0xcd },
{ 0xfa,0x72,0x94,0x14,0xc2,0xc2,0x1d,0xc2,0xd2,0xd3,0x19,0x0f,0x7b,0x53,0x27,0x77,0x5e,0x9c,0xd4,0xd1,0x22,0x91,0xe0,0x21,0xc3,0x8a,0x4d,0xa2,0x5e,0xa3,0xbc,0x70 },
{ 0x46,0x43,0x42,0x6f,0x7d,0x7d,0x72,0x95,0x2d,0x93,0xad,0xd2,0xfd,0x2f,0x56,0xdb,0x80,0xf3,0x87,0x9d,0xe7,0xa1,0x8a,0x8f,0x49,0xe5,0x22,0xf0,0xaf,0x16,0xde,0xe9 },
{ 0xef,0x58,0xe8,0x98,0x2f,0x49,0x10,0x88,0x14,0xcc,0xb4,0xea,0x9d,0xd1,0x79,0x2b,0x35,0x2f,0x02,0xae,0xe6,0x13,0x22,0x3c,0xa5,0xed,0x02,0xec,0x4b,0xc7,0xba,0x8a },
{ 0x5b,0x42,0x17,0xd2,0x1a,0xc1,0x64,0xc8,0xe2,0x8d,0xbd,0xea,0xfa,0x98,0x5b,0x99,0xb7,0x9e,0x57,0x0e,0x3b,0x86,0x1f,0x40,0x92,0x1e,0xcf,0x69,0xb1,0xe8,0xb4,0x4f },
{ 0x8b,0x53,0x20,0xaf,0x9f,0x7e,0xa1,0x3a,0x24,0xf6,0x02,0xcb,0xf5,0x35,0x64,0xe1,0xa1,0x1d,0xa5,0x6f,0x03,0xf8,0x74,0xe6,0x18,0x15,0xf3,0x03,0xed,0x72,0xcf,0x38 },
{ 0xe5,0x15,0xe6,0xae,0x84,0x85,0xa4,0x4c,0x3a,0x78,0xf0,0xcd,0xb3,0x7e,0x6e,0xe3,0xfa,0xc3,0x07,0x37,0x92,0x64,0x93,0x65,0xb0,0x2c,0xd0,0x7c,0x20,0xa0,0x67,0x3a },
{ 0x19,0x53,0x6b,0x93,0x06,0xe9,0x0c,0xe3,0xc3,0xc3,0xc1,0xc5,0x85,0x58,0xad,0x89,0x72,0x84,0x08,0xf6,0x70,0xbd,0xc1,0x68,0xa7,0x1d,0xc9,0x7d,0xc4,0x3f,0x1c,0xae },
{ 0x5b,0x37,0xfb,0x76,0x8f,0xa9,0xfb,0xca,0x0b,0xbd,0xd3,0xa7,0x37,0xdc,0xa6,0xbf,0xd5,0x45,0x5d,0x36,0x8e,0xfc,0x05,0x98,0x7f,0x00,0x2f,0x53,0x2a,0x59,0xa2,0x36 },
{ 0x28,0xb5,0x56,0xb2,0x65,0xd5,0x25,0xd9,0xd4,0xd9,0x17,0x45,0x73,0x51,0x2c,0xbf,0x0b,0x70,0xdf,0x0b,0x87,0xcb,0x9e,0x0c,0x87,0xb2,0x52,0x6c,0xff,0xdf,0xdb,0x3e },
{ 0x57,0xf1,0x6a,0x2f,0x05,0x82,0x37,0x91,0x4f,0x1d,0xb8,0x42,0x10,0x5f,0x13,0x15,0x12,0x99,0x53,0x58,0x57,0x62,0xcc,0xdd,0xc4,0xb2,0x8c,0x25,0x0e,0x63,0x87,0x88 },
{ 0x81,0xa8,0x42,0x9b,0x73,0xe4,0x8a,0x31,0xf9,0xae,0x95,0x33,0x61,0x60,0xbf,0x9e,0x6e,0xad,0x9a,0x1e,0x6d,0x0d,0x33,0xc2,0xbf,0x7c,0xdf,0xdd,0xae,0x17,0x6e,0x6a },
{ 0x2c,0x56,0xc8,0xc5,0x4f,0xa7,0x16,0x57,0x8e,0x0d,0x03,0xdd,0xa4,0x73,0xa2,0x6d,0xa2,0x37,0x0d,0x37,0x56,0x68,0x35,0x25,0x10,0xd5,0xed,0x30,0xd9,0xee,0xaa,0x23 },
{ 0x79,0x08,0xb1,0x0e,0x3f,0x60,0x63,0x1d,0xc9,0x0c,0x3c,0xf9,0x63,0x45,0xaf,0x71,0x0f,0xd4,0xfc,0x3b,0xb0,0x95,0xc9,0x9d,0x7d,0x2e,0xf1,0x56,0x79,0xa1,0x0c,0x4b },
{ 0x13,0x97,0x68,0xa9,0xf9,0xec,0x4b,0xf5,0x88,0x64,0xa1,0x20,0xf4,0x06,0x54,0x49,0x0d,0x8b,0x03,0x0f,0x7d,0x44,0x48,0xd9,0xce,0x94,0x80,0x63,0x3c,0x97,0xf8,0xe1 },
{ 0xf7,0x36,0x8d,0x2b,0x65,0x8c,0x96,0x4f,0xa5,0xea,0xd5,0x3a,0xb0,0xac,0x85,0xb5,0xbd,0x1a,0xd7,0xa1,0x3f,0x87,0xb9,0xda,0x7d,0x48,0x30,0x5e,0x6a,0xa9,0xf7,0x0f },
{ 0x2c,0x15,0x67,0x9c,0x9b,0x6b,0x9b,0x1a,0x20,0x42,0xda,0x42,0x3d,0xfd,0x10,0x51,0x25,0x36,0xa1,0xfb,0xcc,0xcf,0x1d,0xb4,0x26,0x69,0xfd,0x2e,0x0f,0x22,0xb8,0x67 },
{ 0x93,0xda,0x4e,0xbe,0x2e,0x3b,0xc4,0x17,0xde,0xb3,0xf9,0x28,0x00,0x70,0xdd,0x7f,0x29,0x2d,0x89,0x9d,0xcc,0x46,0x18,0x3f,0x93,0x79,0x77,0x15,0xfc,0x96,0xc1,0x4d },
{ 0x96,0xf5,0xec,0x6a,0x69,0xa0,0x43,0xe9,0xeb,0xff,0x04,0x9b,0xa6,0x96,0x72,0x3f,0x34,0xcf,0x4c,0x81,0x1a,0xe7,0x55,0xa3,0x7d,0x4e,0x63,0xf3,0x13,0xbc,0x67,0xe7 },
{ 0x77,0xd9,0x4b,0xa6,0xa5,0x02,0x09,0x06,0xa7,0xe7,0x5f,0x9e,0x3a,0x25,0x6c,0xd7,0x66,0x42,0xc6,0x02,0x0e,0xd1,0x2f,0xf3,0x7c,0xc2,0x02,0xae,0xde,0x97,0x61,0xec },
{ 0xfa,0xf7,0x93,0x59,0x56,0xe8,0xc6,0x68,0xc3,0x7e,0xf5,0x1a,0x25,0xe5,0x67,0x2f,0x93,0xe9,0x70,0x5b,0x0e,0xc8,0x66,0x65,0xe1,0x55,0xd5,0x5c,0xc5,0x0e,0x1c,0x93 },
{ 0x28,0x9d,0x53,0x5c,0xf5,0x44,0x60,0xd1,0x3d,0xdd,0x52,0x10,0xb7,0xc1,0x8c,0xcb,0x2d,0x73,0x2e,0x8d,0xae,0x71,0xe2,0xdb,0x94,0xac,0xbb,0xfe,0x15,0x04,0x69,0x9e },
{ 0xf6,0xea,0xa1,0xc6,0xa8,0x00,0x9b,0x0a,0x6d,0x14,0x3b,0x31,0xc7,0xdf,0x46,0x1d,0x06,0x72,0x54,0xf4,0xb3,0x9f,0xf4,0x21,0xee,0x66,0x09,0x6a,0xcf,0xdb,0x2d,0xcf },
{ 0x51,0x05,0x7f,0x2e,0xd9,0x68,0x2c,0x03,0x31,0x8e,0x65,0x19,0xd5,0x66,0xb0,0x3e,0xeb,0x9a,0x82,0x6d,0x0a,0xc5,0xfe,0x56,0x2c,0x5c,0x52,0x42,0xd6,0x9b,0x3f,0x59 },
{ 0xfc,0xab,0x28,0x84,0x3b,0x9d,0x8d,0xa4,0xec,0x50,0x48,0x8f,0x91,0xe6,0x37,0x67,0x99,0x1e,0x1d,0x22,0xa1,0x24,0xb7,0x66,0x46,0xf9,0x85,0x96,0xfd,0xd8,0xb9,0xa3 },
{ 0x15,0x4b,0xb9,0x3c,0xe3,0x3b,0x38,0xe0,0x71,0x05,0xb8,0xd9,0x08,0xb5,0x43,0xfd,0x56,0xeb,0x63,0x27,0x8c,0x1e,0xf7,0x61,0xb2,0x4a,0x78,0xb3,0x4c,0xd4,0xa9,0xc9 },
{ 0xec,0x9d,0x85,0x4c,0xb7,0x98,0x20,0x17,0x49,0x7e,0xae,0x94,0xa8,0x0c,0x44,0x2a,0xb0,0xd3,0x1e,0x59,0x88,0x5d,0x20,0x16,0x5d,0xcd,0x11,0xa9,0xf8,0x70,0x6f,0xea },
{ 0x0e,0xdf,0x25,0x7a,0x67,0xef,0x7c,0x87,0xe1,0x9f,0x3b,0x6f,0xc0,0xd6,0x31,0x98,0x12,0xa2,0x44,0xfc,0x13,0xba,0xff,0x5c,0x90,0x67,0x41,0xf8,0x82,0x26,0x4b,0x3b },
{ 0x29,0x97,0xa8,0x8c,0x7c,0xbf,0x2b,0xa6,0x23,0x9c,0x50,0xd8,0xb9,0x37,0x17,0xdc,0x50,0x7a,0xdb,0x13,0xb7,0xd7,0x91,0x77,0x64,0x75,0x6e,0x92,0xed,0x11,0x84,0x19 },
{ 0x0a,0x24,0x12,0xa6,0x29,0x7d,0xad,0x68,0x61,0xd2,0xca,0x09,0x2d,0x4e,0xc5,0x74,0x4f,0x07,0x24,0x74,0x0b,0xff,0x9c,0x83,0x2c,0x9b,0x6c,0xe2,0xc7,0x29,0xc6,0xfe },
{ 0x22,0x98,0x1a,0x1a,0xef,0x07,0x6f,0x12,0x9b,0x65,0x8a,0xcd,0x16,0xdc,0xc2,0x2a,0xaa,0x73,0xe2,0xbd,0xef,0x8b,0x95,0x64,0xf6,0x05,0xb3,0x54,0x5c,0x62,0x33,0x42 },
{ 0xa6,0x74,0xd5,0xb1,0xf9,0x68,0x07,0xaa,0xd7,0x67,0xf6,0xac,0x4b,0x8a,0xef,0x15,0x9d,0xe7,0x4c,0x5d,0x4c,0x12,0x99,0x45,0xbd,0xd6,0x1b,0xff,0xd4,0x88,0xb8,0x25 },
{ 0x67,0x60,0x02,0x27,0x51,0xf1,0x92,0xba,0xce,0x32,0x7d,0xa9,0xb9,0xc6,0x76,0x86,0xb8,0x74,0x2a,0x5e,0xb8,0xbf,0xd4,0xec,0xaf,0x9c,0x20,0x09,0xa8,0x06,0x5f,0x02 },
{ 0x31,0xda,0xf9,0x66,0x42,0x20,0x72,0x49,0x6e,0x57,0xe5,0x43,0xe9,0xb0,0xda,0xd0,0x26,0xa2,0x6e,0xc6,0x96,0xae,0x72,0xf2,0xef,0xe4,0x70,0x90,0xb5,0x19,0xea,0xa1 },
{ 0x46,0xce,0xee,0x8e,0xfd,0xe6,0xbd,0x40,0x15,0xd2,0x3e,0x19,0xb8,0x8e,0xc2,0xe0,0x7b,0xe8,0x7a,0x27,0x8a,0x9b,0x84,0x25,0x1f,0x89,0x04,0x7c,0x3b,0x22,0xf3,0xf1 },
{ 0x07,0x59,0x82,0xcc,0xca,0x53,0x1b,0x25,0xcd,0x39,0xa4,0x88,0x3c,0x07,0xf1,0x60,0x7a,0x45,0x27,0x65,0x92,0xe5,0x0c,0x0f,0xcc,0xd7,0x62,0xef,0x8b,0xbd,0x94,0x44 },
{ 0xf6,0x63,0x85,0xc1,0x2b,0xa9,0x4e,0x1e,0x45,0xf3,0x7e,0xd2,0x40,0x4c,0x5a,0x92,0x36,0x55,0xfd,0xca,0xf7,0x69,0x98,0x24,0x95,0xa4,0xe6,0x64,0x12,0xba,0x02,0x8a },
{ 0x58,0xd4,0xd8,0xc1,0x7a,0x70,0x26,0xc7,0x10,0xe8,0x44,0x50,0x01,0xa2,0xcb,0xe6,0xeb,0x6b,0x50,0x40,0x22,0x10,0xbd,0xe4,0xcb,0xfb,0x0d,0x60,0xdc,0x8a,0xa3,0xa0 },
{ 0x76,0x5c,0xcc,0x73,0xe5,0x41,0x8b,0xa5,0x74,0xad,0xbb,0x8f,0x17,0x62,0x20,0x59,0xc7,0x16,0x31,0x02,0xc5,0xb3,0x7d,0x65,0x35,0x0f,0x17,0x9c,0xf5,0x83,0xfe,0x91 },
{ 0x10,0x01,0x30,0x2b,0xb4,0x6c,0x7d,0xfc,0x7e,0x30,0x66,0x95,0x55,0x9b,0xed,0x50,0x85,0xe0,0x16,0xca,0xdc,0x5a,0x9d,0x3e,0xb0,0xb0,0xb4,0x20,0x51,0x2c,0xc9,0xf4 },
{ 0x92,0xae,0xf4,0x50,0xb4,0x2c,0xb1,0x9e,0x0e,0x26,0x41,0x52,0x44,0xfc,0x68,0x0b,0x77,0xab,0x29,0x5d,0xdf,0xa4,0x71,0x49,0xbd,0x61,0x63,0x1a,0xcf,0x50,0x52,0x06 },
{ 0x86,0xcf,0x9e,0x56,0xd0,0x58,0xf4,0x56,0x2f,0x71,0xb3,0x6b,0x5f,0x56,0x2e,0x3b,0x8e,0x32,0x86,0x9c,0xb8,0x91,0x5f,0x43,0x40,0x61,0x24,0x94,0xb0,0x33,0xc4,0x48 },
{ 0x4b,0x35,0xc1,0x74,0x57,0x55,0xf1,0x4f,0x9a,0x9e,0xe6,0xe9,0x8e,0xb8,0x66,0x66,0x46,0x64,0x5c,0x81,0x87,0xb2,0x56,0xd5,0xb0,0xc9,0x30,0x49,0x38,0xe6,0xd9,0x87 },
{ 0xf5,0x8b,0xe6,0xcd,0xb9,0x4f,0x5d,0x48,0x2b,0x38,0xd7,0xdb,0x78,0x61,0x72,0xd7,0xc3,0x22,0x05,0x02,0xf2,0x0d,0x87,0x95,0xd2,0xd2,0x88,0xa2,0xd0,0x12,0x76,0x1c },
{ 0x48,0x6d,0x9e,0xeb,0x1d,0xa1,0x3e,0x13,0x6b,0xde,0x05,0xe8,0xc1,0x57,0x0e,0xe2,0x4b,0x91,0x0b,0x60,0x17,0x97,0x06,0x98,0xd4,0x52,0xec,0x6c,0x36,0x92,0xa6,0x6f },
{ 0xac,0x24,0x91,0x81,0x71,0x9b,0x1e,0x1f,0x6e,0x08,0xab,0x72,0x0a,0xfa,0x53,0x72,0x7e,0xf4,0xb3,0xa9,0x23,0xcd,0xc3,0x7e,0xce,0xcd,0xb5,0x84,0xf8,0x2a,0xfb,0x90 },
{ 0xb0,0x9b,0xf7,0x7d,0xec,0x4c,0xf2,0x29,0x39,0xd9,0x5f,0xa8,0x9f,0xa2,0xb0,0x4d,0xa7,0x8f,0x91,0x7a,0x0d,0x04,0x18,0xb0,0x16,0x11,0xe6,0x8f,0x91,0x25,0x55,0x2b },
{ 0x80,0x9f,0xaa,0x71,0x6d,0xdb,0x9e,0x74,0x3d,0xa5,0x8c,0x8c,0xea,0x0a,0xbf,0xa5,0x27,0xe7,0x65,0x91,0xc0,0xa2,0xe5,0x89,0x40,0x69,0x58,0xd5,0xe1,0x4e,0x7e,0xf1 },
{ 0x43,0x57,0xa4,0xa9,0xac,0x35,0x49,0xaa,0xab,0x4c,0x82,0xdb,0x27,0x6a,0x6b,0x6f,0xdf,0x23,0x23,0xe2,0x8e,0xa7,0x7a,0x10,0xca,0xa4,0x9f,0x52,0x7b,0x85,0x53,0x13 },
{ 0x9a,0xfe,0xd1,0x3f,0xcd,0x22,0x01,0x5e,0x05,0x4a,0x25,0x4a,0x09,0xe2,0x88,0x44,0x45,0xea,0xe1,0xe4,0xe8,0x7b,0xf3,0xb7,0x2b,0x70,0xf7,0x9a,0xe0,0x89,0xb0,0xa3 },
{ 0xba,0x5e,0x72,0xa6,0x91,0x49,0xd3,0x5b,0xb5,0x91,0x4e,0x76,0xc6,0xbc,0xdb,0xdd,0x01,0x50,0x2e,0x30,0x65,0x56,0x66,0x5f,0x1c,0xf9,0xac,0xf3,0x0c,0x2c,0x68,0x79 },
{ 0xc9,0x66,0xfe,0xd2,0x71,0x30,0x4a,0x2d,0xb8,0x98,0xfa,0xb7,0x14,0x58,0x8c,0x27,0xca,0x8b,0x17,0xa2,0x69,0x3c,0xf3,0x0c,0x8b,0x11,0xb7,0xed,0xdd,0x39,0x09,0x6b },
{ 0xea,0xd1,0x23,0xc9,0xd7,0xd6,0xd4,0x91,0x6d,0x22,0x57,0x1b,0x9e,0x71,0xa6,0xad,0xa1,0x68,0x26,0x22,0xd6,0x17,0xb8,0x06,0x4c,0x8e,0x92,0x26,0x67,0x40,0xfd,0x5f },
{ 0x3b,0xb4,0x57,0x82,0x8e,0x97,0x79,0x12,0x71,0xac,0x40,0x0d,0x9a,0x0a,0xba,0xeb,0x65,0x8d,0x20,0x7b,0x7b,0x0a,0x65,0xf7,0xb8,0xa9,0x2a,0x0d,0xc0,0xe7,0x50,0xa5 },
{ 0x91,0x85,0x96,0xf9,0xb7,0x6d,0x6d,0x7e,0xa6,0xc7,0x8a,0xe5,0xe2,0x28,0x52,0x71,0xfd,0xf7,0x65,0x34,0x69,0xcd,0x9a,0xfc,0xc4,0x86,0x45,0x9a,0x85,0xbb,0x63,0xca },
{ 0x97,0x40,0x5f,0x97,0xf5,0x10,0x67,0x02,0xd9,0x19,0x9f,0xd5,0xb8,0xa3,0x14,0xb5,0x77,0x35,0xb2,0xdb,0x93,0xb8,0xa6,0x02,0x55,0x6d,0xdf,0xd4,0x0a,0xe9,0xac,0xd4 },
{ 0x0e,0x48,0xa7,0x6c,0x90,0xda,0x9b,0xbb,0x6e,0x71,0xfe,0x7d,0xb2,0x88,0x4b,0xc7,0xd6,0x92,0xcf,0x8b,0x4c,0x41,0xbf,0xf0,0x50,0x0c,0xb0,0x23,0x89,0xa0,0xdf,0x9c },
{ 0x5f,0x77,0x19,0xb6,0x63,0x5b,0x44,0x86,0xc4,0x7f,0x0d,0x5b,0xa6,0x89,0x53,0x4b,0x20,0xee,0x56,0x60,0x51,0x40,0xc8,0x81,0x21,0x0b,0xc8,0xd0,0x73,0xdf,0xca,0xf6 },
{ 0x01,0x7e,0xd3,0x96,0x15,0x53,0xb7,0xe1,0x4a,0x2b,0xa7,0x8b,0x9d,0x3f,0x5f,0xc4,0x3e,0x2c,0x61,0xbf,0x6c,0x16,0x37,0xb8,0x51,0xdd,0x71,0x20,0xff,0x9e,0xfa,0x76 },
{ 0xa3,0x1a,0x30,0x4d,0xc7,0xa8,0xb0,0xd4,0x75,0x51,0x48,0x30,0x91,0xc8,0x3a,0xe0,0x21,0xdb,0xc7,0x9e,0xf3,0x88,0xe8,0xb6,0xcd,0x83,0xd5,0x9f,0x40,0x40,0x86,0xde },
{ 0x1e,0x0a,0x9c,0xe5,0x60,0xd5,0x88,0xea,0x3e,0x19,0x20,0x1d,0x6d,0x0a,0xc0,0x49,0x5b,0xf2,0xc3,0x78,0x07,0x94,0xd8,0x26,0x54,0xb7,0xf5,0x53,0x9c,0x87,0xa0,0xc1 },
{ 0xd7,0xdd,0x41,0xdc,0xe7,0xdf,0x3b,0x6b,0x73,0x33,0x68,0x16,0xec,0x5a,0x79,0x6c,0x3b,0x2b,0x78,0xd7,0xda,0x61,0x95,0x3e,0x06,0x3b,0xfc,0x4a,0x3d,0xca,0x22,0xf0 },
{ 0x06,0x0e,0xac,0x6c,0x49,0x48,0x4f,0x33,0x4f,0x73,0xbc,0xd0,0x45,0x6f,0x5e,0xb5,0x6f,0x5e,0xed,0x88,0x72,0x99,0x66,0xc9,0x9d,0x38,0xf0,0xbf,0x20,0x4a,0xdf,0xf2 },
{ 0xb3,0x78,0xf7,0x14,0x6f,0x75,0x66,0xdd,0xdc,0x1c,0x03,0xf1,0x8d,0x2d,0x1c,0x06,0xe3,0xf1,0x7d,0x02,0x35,0x80,0xf8,0x43,0x27,0x13,0xf0,0x3c,0x5a,0x1d,0xbc,0x5c },
{ 0x43,0xc0,0x2f,0x2e,0x97,0xd5,0xbb,0x0b,0xc3,0xc1,0x78,0x1e,0xc5,0x8c,0xe8,0x7a,0x98,0xf4,0x56,0x01,0xc1,0x0d,0x13,0x12,0xe7,0x40,0x2f,0x74,0x5d,0x90,0x16,0x52 },
{ 0x4c,0x2b,0xe2,0x3d,0x9c,0x16,0x24,0xb1,0xe9,0xa5,0x1a,0xc1,0x97,0x8b,0x10,0x2a,0x82,0x4c,0xcc,0xc3,0x33,0x8f,0x62,0x5e,0x29,0xb0,0x6a,0x8d,0xfb,0x82,0x91,0x1b },
{ 0xb2,0x2f,0xd7,0xa3,0x1a,0x0c,0xa7,0xd5,0xe6,0x55,0x7a,0xff,0x42,0x1b,0x2b,0xfc,0x95,0x66,0x72,0x20,0x3b,0xaf,0x14,0x88,0xf7,0xcb,0xba,0x88,0xeb,0x0c,0xf6,0x0c },
{ 0xab,0xec,0xa7,0xcf,0x8c,0xc1,0x7b,0x15,0x24,0x20,0xaf,0x47,0x6e,0x76,0x49,0x55,0x07,0x75,0xd1,0x62,0xc3,0x39,0x98,0xdf,0x09,0xef,0x7d,0x3a,0xa8,0x9e,0xda,0x61 },
{ 0x8a,0x21,0x27,0x83,0xa5,0xf6,0x6c,0xa0,0xed,0x56,0x1f,0x0c,0x46,0xd7,0x60,0x9c,0x77,0x9e,0xdc,0x3a,0xf1,0xcd,0xd3,0xb9,0x80,0x6e,0x56,0xa5,0x1b,0x02,0x4e,0xe3 },
{ 0x71,0x7a,0xda,0xa2,0x2f,0xe0,0x94,0xd7,0x49,0x78,0xdf,0x76,0x0e,0xfc,0x58,0xbe,0x73,0xf3,0xb8,0x11,0x6c,0x5d,0x47,0x19,0x96,0x96,0xb0,0xcc,0x42,0x80,0x73,0x1f },
{ 0x22,0xab,0x41,0x34,0x04,0x32,0x8a,0xa1,0x7f,0xdc,0xd5,0x89,0x4e,0xb2,0x6e,0xe2,0xfb,0x8e,0x63,0x1c,0x6c,0xd7,0x4d,0x4c,0xeb,0x79,0xe6,0x88,0x35,0x19,0xea,0x73 },
{ 0x5f,0xb7,0xdd,0x47,0xdc,0x71,0x12,0x09,0x09,0x2c,0x30,0x55,0xcc,0x79,0x0c,0x83,0xf3,0xe0,0x9b,0xdb,0x42,0x5e,0xf5,0xfb,0x4c,0xec,0xf6,0x7f,0xd6,0x07,0x82,0xdd },
{ 0xe9,0x56,0xee,0x5a,0x95,0x89,0xa5,0x16,0x1f,0xe8,0x9f,0xac,0x04,0xb1,0xf8,0x4f,0x03,0x24,0x03,0xa7,0x3a,0x50,0x42,0x59,0x33,0x26,0x3c,0x81,0x6f,0x86,0x84,0x61 },
{ 0x3b,0xdf,0xbe,0x23,0x8b,0xba,0x4c,0xcb,0x7d,0x3c,0xcc,0xfe,0xcf,0x76,0x27,0x07,0x0e,0xdb,0x3b,0x8e,0x74,0x03,0xbf,0x31,0x2b,0x07,0x09,0x08,0x12,0x03,0x34,0xc4 },
{ 0x97,0xf4,0x9f,0x96,0x97,0x1a,0x6b,0x64,0x8e,0xd3,0x9e,0xce,0x6a,0xbd,0x7b,0x78,0x48,0x73,0x56,0x9e,0x16,0xd4,0x5d,0xb0,0x55,0x08,0x7e,0xae,0x39,0xc9,0x87,0xcc },
{ 0x1b,0x8e,0x9d,0x0e,0xff,0x1b,0x1e,0xa5,0xfb,0x01,0x14,0xff,0x1f,0x53,0xe2,0x62,0x1d,0x9b,0x4e,0x93,0x62,0x52,0x2d,0xcc,0xcd,0x1f,0xe2,0x6c,0x7b,0x8c,0x64,0x88 },
{ 0xc4,0xba,0xe6,0x53,0xf2,0x0e,0x78,0x78,0x04,0xee,0xa5,0x5d,0xc9,0xe2,0x54,0x93,0x85,0xb6,0xa9,0x2a,0x2a,0x45,0x10,0x6f,0x98,0x4c,0x4f,0xdc,0x80,0x9f,0x21,0x99 },
{ 0x45,0xe0,0x41,0x57,0x40,0x9d,0x50,0xf8,0x26,0x34,0x7f,0x44,0x45,0xc1,0xf9,0x71,0x26,0xe8,0xa3,0x38,0x20,0x8a,0x89,0x81,0xc2,0x15,0x86,0x79,0xee,0x15,0x35,0x24 },
{ 0x34,0x91,0x2d,0xe9,0x63,0x60,0x09,0x01,0x66,0x6b,0xdb,0x07,0x84,0x4b,0x8b,0xb8,0xf3,0x41,0xe4,0xad,0x2f,0xe1,0x5f,0xf9,0x7e,0xbf,0x97,0x5b,0x8f,0x65,0x3d,0x71 },
{ 0x03,0xe5,0xb5,0x3a,0x13,0x1a,0x52,0x4c,0xe4,0x44,0xda,0x60,0xe0,0xde,0x80,0xfd,0x39,0xce,0x48,0x3e,0x44,0xaa,0xc4,0x12,0x11,0x2b,0x46,0x3e,0xba,0x7d,0xc5,0x4b },
{ 0xe0,0xbc,0x28,0x7a,0x5d,0x38,0x47,0xa9,0x04,0x46,0xc5,0x78,0x63,0x35,0xa2,0xea,0xd7,0x22,0x34,0x75,0x7e,0x22,0xba,0x04,0x3c,0x7a,0x35,0x87,0x9b,0xa6,0x4f,0x60 },
{ 0x1d,0xa7,0x09,0x34,0x54,0xca,0xcc,0x65,0x0c,0x0e,0xb9,0xe6,0x74,0x0a,0xcb,0x8a,0xfc,0x62,0x62,0x4d,0xbe,0x40,0xf9,0xb3,0x2e,0x81,0x47,0x07,0x57,0x33,0xb1,0x85 },
{ 0xac,0x22,0x1f,0xc9,0x12,0xf1,0x7e,0x30,0x11,0xf8,0xdb,0xac,0x55,0xd1,0xec,0xf7,0xc3,0xb0,0xc7,0xd1,0x99,0x19,0x00,0xb6,0x8a,0x12,0x83,0x6b,0x9a,0xdc,0xb8,0x5e },
{ 0xa8,0x34,0x0d,0x4c,0x3b,0x78,0xbe,0x63,0x1c,0x76,0x90,0x76,0x15,0x32,0x1a,0x28,0x20,0x72,0x81,0x0d,0x4d,0x0d,0x79,0x06,0xe1,0x37,0x90,0x16,0x19,0x44,0xa2,0xd3 },
{ 0x91,0x0b,0x89,0xd3,0x20,0x36,0x27,0x53,0xdc,0x54,0x5a,0x75,0x25,0x8c,0x79,0xc9,0xd4,0x4c,0xe8,0x00,0x31,0xf3,0xe2,0x67,0xb7,0xaa,0xd9,0xf8,0x6b,0xce,0xf1,0x8f },
{ 0x94,0xbc,0x12,0xe8,0x7b,0x10,0x82,0xcd,0x1c,0x9a,0x4e,0xe5,0x63,0x50,0xcd,0x47,0xa5,0x17,0x30,0x8b,0x62,0xef,0x93,0xed,0x5e,0x7a,0xe2,0x04,0xa6,0x33,0x40,0xf5 },
{ 0x0c,0x8a,0x06,0x05,0x43,0xfc,0x46,0x75,0xf4,0x83,0x84,0x32,0xcc,0x9f,0x69,0x9f,0xc1,0xf3,0xf9,0x35,0xbd,0xb6,0x12,0x73,0xcc,0x1c,0xc9,0xd0,0xf6,0xeb,0x8b,0x40 },
{ 0x0d,0xb0,0x58,0x40,0xb8,0x1f,0x54,0xe0,0x2e,0xf4,0xc2,0xca,0x14,0xf7,0x78,0x3a,0xf7,0x26,0x58,0xfe,0xc5,0x9a,0xc7,0x76,0xe4,0x2f,0x9c,0x89,0x34,0xf0,0x2c,0x6b },
{ 0xe8,0x63,0x00,0x36,0x4e,0x21,0xde,0x0e,0xef,0x2c,0x10,0x14,0x51,0xc1,0x28,0x43,0x18,0xc4,0x9d,0xaf,0x7f,0xd2,0xf6,0x2d,0x73,0x2e,0x37,0x3e,0x7e,0x71,0xd5,0xa3 },
{ 0xfb,0x07,0x1b,0xfb,0xda,0x7b,0x49,0x8d,0x64,0xb0,0xbd,0x37,0xd5,0x63,0x63,0xab,0x2b,0x33,0xdc,0x16,0xc2,0xc2,0x6c,0x65,0xb0,0xf0,0xab,0x91,0x5f,0x2c,0x86,0x1c },
{ 0x9a,0xc9,0x68,0x24,0x6f,0xfc,0xac,0x07,0x1e,0xd9,0x57,0xf1,0x17,0x65,0x6e,0x6d,0x12,0x24,0x38,0x6b,0x64,0x40,0x5f,0xf1,0xe1,0xf0,0xf5,0x9a,0xff,0xf4,0x9b,0xfb },
{ 0x38,0x53,0x32,0x9e,0xa1,0x12,0x82,0x22,0x55,0x1a,0x77,0xeb,0x5b,0x9d,0x98,0xa0,0xca,0xb2,0xe8,0xf9,0x74,0x3c,0xba,0x24,0x2a,0xbb,0x73,0x16,0x2f,0xf5,0x52,0x08 },
{ 0xa9,0x37,0xf2,0x1e,0xb7,0xf9,0x66,0x1b,0x74,0xf9,0x42,0xd8,0x5e,0xb4,0x57,0x71,0x1a,0x56,0xf1,0x05,0x00,0x67,0x0c,0x99,0x44,0x6f,0x91,0x7b,0x0b,0x82,0x7b,0xa1 },
{ 0x87,0xdc,0xd9,0xc7,0xa9,0x35,0xad,0xbc,0x10,0x0c,0xf7,0xd1,0x03,0x9b,0x81,0x46,0xd4,0x52,0xf5,0x9e,0xdd,0xe4,0x21,0x0c,0xbd,0xd7,0x52,0x37,0xff,0x36,0x93,0xa1 },
{ 0x8d,0x01,0x02,0x1e,0x0b,0x3b,0xb7,0x2b,0xb9,0xe2,0x96,0xfe,0xb7,0x48,0x9d,0xa0,0xa1,0x51,0x3e,0xa9,0xb0,0x7e,0xd9,0xd6,0x57,0x7d,0xb0,0x08,0x20,0xc9,0xa3,0xda },
{ 0x7a,0x7c,0x06,0x67,0x53,0x55,0x72,0x05,0x82,0x7d,0x69,0xa5,0x74,0x23,0x9e,0xc3,0x62,0x0a,0x60,0xb7,0x30,0x73,0xd4,0x8e,0x19,0x51,0xff,0xf5,0xdb,0x4c,0xb1,0x0b },
{ 0xce,0x80,0xc5,0x54,0xf6,0x3b,0x28,0x6e,0x79,0xa8,0x11,0x88,0x9c,0x68,0x86,0xdb,0x78,0x9a,0x3f,0x24,0x34,0x67,0x00,0x12,0xdb,0x42,0x37,0x4d,0x29,0x44,0xd6,0x7a },
{ 0x6b,0x3b,0x03,0x3d,0xa4,0x8e,0x93,0xde,0xda,0xa1,0x6a,0xeb,0x67,0xe5,0xf5,0xa3,0x08,0xef,0x18,0xad,0x79,0x7e,0xe7,0xd0,0x14,0xb0,0xd2,0x6a,0x49,0x56,0x1b,0xad },
{ 0xca,0x6e,0x87,0x6b,0x8f,0x22,0x74,0x53,0xb5,0x05,0x2e,0xdd,0xff,0x63,0xe6,0x8b,0xdc,0x1c,0x8c,0x2f,0x34,0x73,0x94,0x68,0xf7,0x24,0x23,0xb3,0xd3,0x8e,0x47,0x7b },
{ 0x24,0x16,0x0d,0x5e,0x03,0xd0,0xc8,0xca,0xfe,0x52,0x11,0x11,0xde,0x4e,0xf6,0x58,0xd9,0x90,0xa3,0x8b,0xf1,0x6e,0x83,0xe3,0xa5,0x30,0x88,0x3d,0xf8,0xe4,0xed,0x7b },
{ 0x5c,0x28,0xa2,0x32,0x09,0xbf,0x99,0xc6,0x00,0x28,0xe1,0xd7,0x05,0x99,0x47,0x97,0x1d,0xc1,0x56,0xc1,0xb9,0x7a,0x33,0x41,0xbc,0xaa,0x2f,0x3a,0xff,0xe6,0x45,0x61 },
{ 0x08,0x20,0x0c,0xa6,0x46,0x69,0xc1,0xf0,0xc5,0xb3,0x61,0x44,0xe5,0xb2,0xac,0x17,0x01,0xad,0x3a,0x4e,0xb7,0x95,0x0b,0x51,0x89,0xea,0x8b,0x32,0xd6,0x74,0x44,0x64 },
{ 0x87,0x52,0x82,0xd2,0xbc,0x2f,0x28,0x5f,0xb7,0x5f,0xea,0x2a,0xe3,0x75,0xa5,0x07,0x19,0xb3,0xba,0xa1,0x1c,0x5e,0xab,0x2c,0xdf,0xe6,0x64,0xae,0x2a,0x0b,0x71,0x72 },
{ 0x06,0xed,0x87,0x10,0x6e,0x67,0x0b,0xc4,0xe2,0xbe,0x3c,0xcb,0x5d,0x21,0x08,0xb2,0xf7,0x3e,0x36,0x22,0x43,0xc1,0xa2,0x91,0x87,0xae,0xc7,0x5b,0x71,0x3d,0xfa,0xb9 },
{ 0x08,0xdd,0x36,0x15,0x47,0xf0,0xae,0x01,0x32,0xa2,0x44,0xbe,0x8c,0xef,0x1c,0x92,0x56,0xbf,0x16,0x48,0x6a,0xc8,0x7c,0x83,0xb0,0x3d,0xf6,0x36,0x8e,0xda,0xb5,0x94 },
{ 0xc0,0xe7,0x30,0xe3,0x53,0xdc,0xe3,0xa2,0xde,0xc4,0xeb,0x01,0xe3,0x65,0xdf,0xc9,0x44,0xbc,0x22,0xef,0xab,0xe6,0x11,0xf3,0xbb,0x25,0xfa,0x7a,0x2f,0x41,0x89,0x65 },
{ 0xe1,0xdc,0x4f,0x53,0xc8,0xc5,0x09,0x28,0x37,0x90,0x28,0x40,0x11,0xe8,0xe0,0xba,0xbc,0x85,0x37,0x1e,0xd9,0x8b,0xdf,0x92,0x8c,0x0f,0xa2,0xf7,0xef,0x1a,0x2f,0xaa },
{ 0xf0,0x47,0x41,0xed,0x58,0xf5,0x67,0x37,0xfa,0xd9,0x5b,0xe6,0x26,0xe4,0x91,0x7c,0x01,0x3f,0x05,0x45,0x77,0x30,0x8e,0x8b,0xf9,0xe5,0xd6,0xa0,0x51,0xf6,0xa5,0xf8 },
{ 0x23,0x5a,0x90,0x9f,0xec,0x31,0x22,0x2e,0x76,0x20,0x23,0x8c,0x52,0x06,0xce,0x74,0x03,0xa3,0x39,0xd3,0x51,0x64,0x9e,0xd2,0x18,0x3e,0xac,0x48,0x5e,0x83,0xd4,0x7c },
{ 0x98,0x92,0xc8,0x1b,0xdb,0xc5,0xc9,0x3f,0x03,0x8b,0x0c,0xaf,0xa4,0x21,0x8d,0x2f,0x39,0x64,0xbb,0x82,0xb1,0xc8,0x3b,0x5d,0xd0,0xce,0x97,0xb3,0x7f,0xdf,0x64,0x86 },
{ 0x73,0xe9,0x2a,0x38,0x09,0xf0,0x45,0x1b,0x0b,0x77,0x66,0xae,0x23,0xee,0x4c,0x45,0x42,0x40,0x2f,0x79,0xab,0xb0,0x26,0xb7,0xb1,0x7f,0x9e,0x9e,0xa5,0x4f,0x9c,0x95 },
{ 0xb9,0xac,0x21,0xe9,0x87,0xd5,0x90,0x9a,0xbc,0xcf,0x3c,0xe7,0x2e,0xd9,0xcf,0x71,0x15,0x66,0x6f,0x64,0x73,0x98,0x79,0x6d,0x12,0x15,0xd0,0x7a,0x2b,0x03,0x17,0xf0 },
{ 0xf6,0xae,0x0f,0xa1,0x02,0x56,0xcb,0xa5,0x95,0xe9,0x78,0xd2,0x53,0xab,0xdd,0xd9,0x18,0x22,0x91,0x27,0x65,0x91,0x43,0x82,0xb8,0x46,0x75,0xb9,0x62,0x0b,0x23,0x3c },
{ 0x5b,0xd6,0xb6,0x85,0xe9,0xd5,0xfa,0x95,0x16,0x07,0xac,0xf5,0xab,0x1f,0xc0,0x66,0x7d,0x76,0xdf,0xb0,0xd3,0xa1,0xba,0xe7,0x94,0x24,0x19,0x84,0x7a,0x9f,0x58,0x1d },
{ 0xe5,0xb6,0x20,0x9d,0x30,0xf8,0xad,0x93,0x77,0x64,0xa5,0xac,0xc9,0x97,0x74,0x1a,0x1d,0x71,0x70,0x5a,0x60,0x20,0x63,0xf9,0xaf,0xd3,0xed,0xbf,0x92,0x5f,0xe6,0x59 },
{ 0x20,0x3a,0xec,0x83,0x7c,0x23,0x52,0x71,0xa8,0x12,0x73,0xf2,0x1b,0xd6,0x6d,0x53,0xe0,0x73,0x37,0x27,0xcf,0x50,0x59,0x7d,0xbc,0xfc,0xb6,0x00,0x5a,0xa2,0xc3,0xf3 },
{ 0x05,0xe8,0x89,0x47,0xf8,0x6b,0x39,0x42,0xbb,0xbb,0xb2,0x5b,0xb5,0x45,0xe0,0xdd,0x1f,0x24,0xfb,0xe7,0x88,0x54,0x9c,0xe5,0xa5,0xf1,0x70,0xb9,0xdd,0x27,0x9f,0x49 },
{ 0xa6,0x25,0x9e,0xbe,0xdc,0x69,0xf4,0x8a,0xad,0xf9,0x31,0xfb,0x28,0x36,0xe2,0x96,0x4a,0x28,0x96,0x45,0xdc,0x78,0x3b,0x33,0x45,0x94,0x64,0xde,0x7d,0xe6,0xfd,0x2b },
{ 0xc7,0xd8,0x30,0xd4,0xd4,0xc4,0x52,0x44,0xa7,0xf5,0x63,0x99,0x42,0xd8,0x81,0x0d,0x94,0xc9,0x57,0xb3,0x0a,0x35,0x79,0xc8,0xfa,0x7c,0xb8,0xb5,0x07,0xf7,0xbf,0x68 },
{ 0x52,0x90,0xba,0x5b,0x4b,0xad,0xc6,0xab,0x7f,0x41,0xe3,0x65,0xaf,0x82,0x72,0x51,0xc7,0xad,0x10,0x9a,0xd2,0x4f,0x80,0x43,0x69,0xe0,0x30,0xbd,0xf1,0x4d,0xcc,0x34 },
{ 0x42,0x3a,0x0f,0x0e,0xff,0xfd,0xd5,0x3e,0x84,0x53,0x45,0x99,0xf1,0xf2,0x6f,0x44,0xd0,0x70,0xdb,0x33,0xfd,0xc7,0xbf,0x7e,0x6e,0x86,0x1f,0x3d,0xf2,0x34,0x40,0x41 },
{ 0xff,0x57,0x57,0xc6,0x39,0xe5,0x2d,0x66,0x0c,0x66,0x90,0x6e,0xfc,0x73,0x98,0x5b,0xe3,0x1a,0x19,0x17,0xd5,0x58,0x09,0x14,0xc0,0x60,0x43,0x50,0xee,0x7a,0xdb,0x97 },
{ 0x82,0xd5,0x88,0xd1,0x23,0xff,0x6c,0xad,0x75,0xc2,0xf8,0xbc,0x4d,0xed,0x4c,0xd3,0x48,0x1c,0x82,0x16,0x48,0x24,0xbb,0xf4,0x82,0x9f,0x0b,0x65,0xd0,0xb8,0xcf,0x56 },
{ 0x7b,0x55,0xdf,0xb8,0x04,0x43,0x73,0x58,0x54,0xb2,0x7b,0xce,0x3a,0xf9,0x43,0x57,0x8f,0xba,0x6b,0xa2,0x92,0xc0,0x5a,0x9d,0xb8,0x16,0x64,0x0e,0x40,0x4d,0x2e,0xba },
{ 0x8a,0x70,0x27,0x4d,0x43,0x5f,0xef,0x0d,0x69,0xaa,0xa8,0x5d,0xad,0x23,0x25,0x22,0x6c,0x53,0x11,0x5b,0x16,0xf5,0xa3,0xf2,0xd2,0xf9,0x8d,0x95,0x16,0xc9,0x1c,0x8b },
{ 0x19,0xbc,0x23,0xc5,0x20,0x4b,0x1c,0x59,0x43,0xcb,0xd1,0xe2,0x1a,0x8e,0x7e,0x17,0xc2,0xe9,0x32,0x7e,0x3f,0x04,0x71,0xf9,0xc6,0xc7,0x99,0x7e,0x5a,0x57,0x58,0x31 },
{ 0xda,0xcc,0xf0,0xba,0x45,0x39,0x80,0xdd,0x02,0xcc,0xda,0x0f,0x20,0x52,0x1c,0xae,0xc9,0xe9,0xc6,0x6c,0xd0,0x2b,0x64,0x9e,0x84,0x4c,0xb3,0x9d,0x13,0xd3,0xcf,0x3e },
{ 0xf6,0x19,0x6b,0x7b,0x15,0x8b,0x47,0xfa,0x2d,0xa7,0x69,0x5a,0x07,0x99,0xa3,0xbd,0x62,0xcb,0x53,0x79,0x4d,0x63,0xcc,0xb3,0xad,0xd1,0x04,0xaa,0x14,0x5b,0xf5,0xfa },
{ 0x50,0xa8,0xa2,0x1f,0xb1,0x3d,0x4d,0x2e,0x03,0x03,0x7e,0x39,0x3e,0x5c,0x60,0xdd,0xb9,0xf9,0x2d,0x97,0xb5,0x5c,0x8a,0xa7,0x7e,0x95,0xa0,0x62,0x42,0x15,0xd7,0xa1 },
{ 0x59,0x7e,0x1c,0xc8,0xdc,0x74,0xd7,0x0b,0x53,0xa1,0x5b,0x07,0xac,0xf7,0x8d,0x75,0x63,0x1a,0x1d,0x05,0xa7,0x33,0x63,0x12,0xb9,0x97,0x93,0x11,0x67,0xd2,0x2d,0x85 },
{ 0x3a,0xe8,0x8a,0xad,0x0c,0x4a,0xeb,0xef,0xfa,0x02,0x91,0xdc,0x9c,0x33,0x79,0x84,0xb1,0xb9,0x0b,0x3d,0xae,0x51,0x6e,0x2b,0x43,0xc8,0xa1,0x9d,0x39,0x7e,0xa5,0xeb },
{ 0x4f,0xae,0x25,0xb7,0x42,0xf7,0xad,0x66,0xed,0x7b,0x03,0x6a,0x89,0x84,0x93,0x95,0xa1,0x13,0x21,0x34,0xb0,0x3e,0xf4,0xa0,0x20,0xdb,0x4b,0x4f,0xf5,0xf7,0xa7,0xa3 },
{ 0x2c,0x4b,0x89,0xf5,0xd0,0xf6,0xaf,0xb4,0x6d,0xb0,0x47,0xe5,0x7e,0x2b,0xf9,0x44,0x89,0x7a,0x9f,0x1d,0x1a,0xbc,0x76,0x44,0xf9,0x25,0x79,0x0b,0xaa,0x7b,0x5e,0x1f },
{ 0xe4,0xa7,0x5c,0xc1,0x17,0xca,0xe0,0xb4,0x48,0x13,0x25,0x7e,0x1c,0xb7,0x1e,0x6b,0x22,0xb4,0x24,0x13,0xd4,0x68,0xc0,0xb9,0x3a,0xb1,0x1a,0x0b,0x32,0x4c,0xf4,0x4b },
{ 0xcc,0x8a,0xab,0xdf,0xaf,0xf1,0xaa,0xc6,0x91,0x27,0xc8,0x25,0x23,0x29,0x7b,0x57,0x58,0x90,0xf6,0xe7,0xc8,0xeb,0xb5,0x9c,0x2f,0xfd,0x73,0x64,0xec,0xbe,0x92,0x06 },
{ 0x8f,0x21,0xaf,0x7f,0xe8,0xa5,0x68,0x3e,0x4e,0xf6,0x10,0xff,0x0e,0x2f,0xed,0x21,0x79,0xac,0xf6,0xb7,0x4c,0x58,0x2a,0x36,0x3a,0x35,0x8a,0xa6,0xcb,0x02,0x6a,0x25 },
{ 0xc8,0xef,0x6b,0x28,0xc8,0x84,0xf7,0x76,0xa5,0xb0,0x9a,0xf7,0x2c,0x08,0xf2,0xfd,0x23,0x93,0x56,0x67,0xf3,0xb9,0xa3,0xc7,0xdb,0x68,0x23,0x93,0x1e,0xb3,0x21,0x3c },
{ 0xa7,0x14,0x84,0x5b,0xdb,0xb4,0x14,0x24,0x96,0x1d,0xba,0xc8,0xc6,0x1d,0xc6,0x34,0xc3,0x8e,0x1d,0xfd,0x0f,0x99,0xe4,0xc2,0x0e,0x4f,0xa7,0xa0,0xa8,0x6f,0xec,0xea },
{ 0xd0,0xf9,0x8d,0x32,0x74,0xab,0x4d,0x20,0xba,0x8c,0xe4,0x6c,0x75,0xf9,0x98,0xdd,0xf3,0x4a,0xa5,0x2d,0x08,0x9d,0xba,0xde,0x34,0xea,0x9f,0x8e,0x1a,0xad,0x37,0x15 },
{ 0x98,0x65,0xcc,0xe3,0xdb,0x40,0xb4,0x54,0xe5,0xd0,0xe9,0xbf,0x7c,0xb4,0x33,0x5f,0xfc,0x1b,0x1e,0xd3,0x46,0xa1,0x4f,0x11,0x64,0x92,0x62,0x8f,0xef,0x02,0xc9,0x9b },
{ 0x02,0x64,0x07,0x29,0x66,0x47,0x17,0x94,0x35,0x2a,0x8e,0x4f,0xbb,0xda,0xdd,0xd1,0x42,0x5e,0x00,0x44,0xfe,0x1d,0xc6,0xde,0xf6,0x27,0xf9,0x9e,0x2a,0x6d,0xdc,0xbc },
{ 0x25,0x6b,0xbd,0x2d,0x83,0x14,0xa6,0x12,0x87,0xc1,0x07,0x98,0xbd,0xff,0x34,0xe2,0x67,0x1c,0xce,0x8c,0x65,0x62,0x6e,0x03,0x2b,0xc6,0xce,0xe6,0x00,0xff,0x76,0xee },
{ 0xc1,0x0d,0x1d,0x96,0x54,0x31,0x9a,0x51,0x0f,0xe9,0x07,0xd0,0xed,0xeb,0xcf,0x09,0x1e,0xa4,0x86,0xb3,0x94,0x1b,0xdc,0x8d,0xcc,0xe4,0xb2,0xad,0x14,0x8d,0x81,0xf4 },
{ 0xb4,0xeb,0xa6,0xb5,0x7d,0x7f,0x27,0xd8,0x81,0x46,0x7f,0x81,0x8e,0x2c,0x7e,0x4a,0x16,0xc0,0x28,0xd7,0xda,0xbe,0x5a,0x1a,0x91,0xb3,0xdb,0x73,0x10,0x62,0xdc,0xd6 },
{ 0xc7,0x2f,0xff,0xba,0x08,0x2e,0x44,0xae,0x12,0xa9,0x5a,0xb7,0xd0,0x4a,0x8d,0x49,0x39,0x43,0x67,0xa7,0xfe,0xa4,0xc3,0xce,0x7e,0xb5,0xef,0x42,0x63,0x4f,0x14,0x07 },
{ 0x75,0x85,0xd7,0x29,0xa1,0x8c,0x61,0x1b,0xa0,0x7e,0x68,0x6f,0xd6,0x4d,0xe4,0x1f,0xd3,0xfa,0x29,0x88,0x56,0x28,0x5b,0x7d,0xee,0x33,0xaf,0xa2,0x2a,0x4b,0xb0,0x6e },
{ 0x9b,0x68,0x69,0xd5,0x20,0xba,0xa2,0xcd,0xb0,0xfe,0xca,0xbb,0x99,0x55,0x04,0xce,0xf7,0x37,0x7f,0x2c,0xe4,0x8c,0x82,0x1d,0x00,0xdb,0x08,0x69,0x8f,0x99,0x30,0xc2 },
{ 0x6a,0x99,0x17,0x61,0x1a,0x20,0x23,0x80,0xe8,0xe2,0x2f,0xf1,0x8b,0x06,0x80,0x78,0xd9,0x5e,0x2c,0x39,0x15,0x52,0xb5,0xaa,0x98,0x0d,0x90,0xdc,0xe6,0x95,0x66,0xb0 },
{ 0x8b,0xc3,0x1e,0xae,0xbb,0x8d,0xb9,0x4a,0x60,0xf1,0xac,0x2a,0xf4,0xca,0xc5,0x64,0x9d,0x5f,0x69,0xaf,0x45,0xf0,0x92,0xb0,0x97,0xc2,0x41,0xb4,0x2d,0xa3,0x05,0x75 },
{ 0xc8,0x20,0xa2,0xd5,0x1d,0xd4,0xac,0x0f,0x66,0xcb,0x88,0x9d,0xeb,0xf8,0x76,0x9a,0xee,0x66,0xa5,0xbe,0x5a,0x5a,0x07,0xa6,0xf1,0xcf,0xbb,0xac,0x94,0x50,0x3c,0x10 },
{ 0x21,0x7a,0x92,0xbf,0xd6,0x45,0x89,0x1a,0xa5,0x93,0x8d,0x8a,0xd4,0x6f,0xb6,0x2f,0x0f,0x7b,0x73,0x4d,0x7a,0x8b,0x3e,0xf4,0x53,0x03,0x61,0x69,0x6f,0xc9,0xd5,0xca },
{ 0xd7,0x21,0xaa,0x22,0xbb,0x1e,0xdd,0x1e,0xbf,0x08,0xf6,0x1e,0x0a,0x3c,0x15,0x70,0xf0,0xf3,0x05,0xc1,0xb2,0xbd,0xcd,0xc2,0x70,0xaa,0x66,0x79,0xa5,0xcd,0xbb,0xab },
{ 0x27,0x54,0xfc,0x50,0x47,0x2d,0xa9,0x0e,0x57,0x44,0x11,0xb3,0x3f,0xb7,0x56,0x39,0x89,0x7b,0xf5,0x20,0x28,0xd0,0xa8,0xfe,0xdf,0xcd,0xe2,0x7a,0x4e,0x5c,0x77,0x12 },
{ 0x76,0xf4,0xbb,0x49,0x11,0x09,0xae,0x56,0x69,0xab,0xe8,0x6c,0xcc,0x67,0x70,0xa3,0x77,0x52,0x20,0xc6,0x72,0x2b,0xc8,0x22,0x61,0xad,0x59,0x0c,0xc7,0x40,0x1f,0x35 },
{ 0xcd,0xfe,0x36,0xd8,0x03,0xfb,0x56,0xae,0x35,0xeb,0xc5,0xe3,0xdc,0x59,0xba,0x4c,0xc8,0x51,0x6b,0xd8,0x04,0x99,0x1c,0xaa,0xfa,0xf6,0x9b,0xbb,0xc3,0xda,0xb4,0xe6 },
{ 0x74,0x06,0x5b,0x35,0xe6,0x7b,0x88,0xbc,0xd7,0x0e,0x3c,0xf9,0xc8,0x93,0x4d,0x67,0xeb,0x11,0x43,0x63,0xf9,0xa8,0x91,0x61,0xbc,0xb7,0xee,0xec,0x8f,0x99,0x15,0x38 },
{ 0xe7,0x45,0x91,0x3b,0x11,0x20,0xd2,0x09,0xf5,0x30,0x80,0x17,0x8c,0x59,0x69,0x39,0xe1,0xc2,0xbc,0x81,0xf4,0x8d,0x45,0xc5,0x4c,0x5b,0x01,0xbc,0x91,0x12,0x13,0x03 },
{ 0xb2,0xc9,0x10,0xf8,0x0d,0x69,0x58,0xe1,0xfd,0x80,0x6a,0x01,0x7c,0xe0,0xd3,0x83,0xbb,0xb3,0x1b,0xf5,0xfb,0x7e,0x8a,0x77,0xf9,0x27,0xfc,0x70,0xa3,0x41,0xcb,0x5f },
{ 0x18,0xd9,0xd0,0x9e,0x57,0xdd,0x10,0xbe,0x5f,0xe6,0x99,0x79,0x2a,0x83,0x0e,0x4f,0x3c,0x6e,0x7c,0x72,0x33,0x69,0xc3,0x1c,0x5a,0x9d,0xbc,0x52,0x5c,0x1d,0x63,0x07 },
{ 0x73,0xee,0x29,0x40,0x03,0x01,0x94,0x0b,0xdc,0x29,0xc1,0xb4,0x93,0x40,0x85,0x8a,0x8d,0x4d,0x70,0xd2,0xae,0xf5,0xc1,0xa2,0xcd,0x87,0x04,0x63,0x42,0xd0,0xd3,0xe5 },
{ 0x5e,0xdf,0x53,0x2f,0xcd,0x1e,0x56,0x0b,0xd1,0x21,0x76,0xc0,0x58,0x51,0x7e,0x41,0x62,0x9a,0xda,0x89,0x36,0x39,0x7e,0xaa,0xd9,0x19,0x36,0x72,0x59,0xee,0xe2,0xe8 },
{ 0x90,0x4a,0x77,0xa3,0x4a,0xd9,0x3c,0xe0,0x8e,0x43,0x3d,0x8c,0x78,0x4a,0x25,0x66,0x3d,0x5a,0x06,0x17,0x54,0xae,0x77,0x56,0xc7,0xd9,0x9f,0x6f,0x7a,0xd3,0x21,0x9e },
{ 0x82,0xbe,0xd1,0xe7,0x49,0x41,0x97,0xdd,0x39,0xdc,0x6f,0x3a,0x0c,0x94,0x16,0x5f,0x60,0xad,0xe7,0x8e,0xd0,0x1a,0xd4,0xeb,0x6b,0xbb,0xae,0xe5,0x20,0xba,0xad,0x9c },
{ 0xa9,0x60,0xc0,0xbe,0x3a,0x13,0x3f,0x9a,0xc4,0x99,0xcd,0xb0,0x8a,0xe8,0x9d,0x67,0xfa,0xb4,0xff,0x66,0x2e,0x85,0x15,0xf8,0x2d,0x7d,0x48,0x23,0xd8,0x16,0x82,0xab },
{ 0x11,0x8f,0xe0,0xa4,0xaa,0x70,0x64,0xea,0x30,0xcc,0xed,0xf3,0x68,0x16,0xe6,0xd7,0x32,0x34,0xe2,0x41,0xe5,0x7a,0x2d,0x32,0x38,0xb1,0x7e,0xd0,0xdb,0xef,0x66,0x04 },
{ 0xae,0x65,0x58,0xd4,0xc0,0xf8,0xa0,0x4f,0x7e,0x03,0x6b,0x16,0x02,0x5f,0x73,0xa8,0x47,0x61,0x12,0xc3,0xdc,0x54,0x7b,0x09,0x8a,0x44,0xa3,0x06,0x2e,0x8d,0x98,0x23 },
{ 0xc9,0x38,0xf6,0x82,0xc4,0x92,0x4d,0x04,0xf7,0xc2,0x29,0xf4,0x98,0x17,0x3e,0x07,0x86,0xca,0x91,0x64,0x4a,0xf4,0x16,0x0b,0x5a,0x92,0x2b,0x96,0x44,0xfe,0xe3,0xb8 },
{ 0xb9,0x5c,0x33,0x29,0x4f,0xcd,0x70,0x7f,0x48,0x87,0xfb,0x70,0x74,0x36,0x15,0xad,0x9d,0xf6,0x58,0x42,0x2a,0xdb,0x81,0xcd,0xf7,0x4c,0x54,0x71,0x0d,0xab,0x98,0x90 },
{ 0xd6,0x45,0x5e,0xe6,0x07,0xfe,0x73,0x5c,0x57,0x6e,0x1a,0x84,0x31,0xb7,0x13,0xeb,0x70,0x5e,0x01,0xa5,0x57,0xc1,0xcb,0x10,0xa0,0x27,0xbb,0x3e,0xba,0x4f,0x86,0x01 },
{ 0xa1,0x32,0xbe,0x64,0x7b,0x0a,0x38,0xd8,0xa8,0xf0,0x8e,0x24,0x1f,0x5f,0xb0,0x37,0xa9,0x96,0x0f,0x87,0xd1,0x5e,0xce,0x5e,0xcc,0xfe,0x55,0x93,0x1b,0x65,0xaa,0x5a },
{ 0x17,0xca,0x80,0x90,0x38,0x66,0x76,0x04,0xef,0x98,0x76,0xfd,0x44,0xdf,0xd3,0x86,0x59,0x48,0x2a,0x1a,0x59,0x05,0x91,0x16,0xd2,0xf6,0xdd,0x60,0xbb,0x9f,0x59,0xf8 },
{ 0x36,0x7f,0xb0,0x04,0x73,0x08,0x69,0x95,0x9b,0x45,0x38,0x1a,0xd5,0x31,0x86,0xd5,0x4b,0x93,0x8a,0x67,0xad,0x40,0x0d,0xc9,0x33,0x22,0x9e,0xc1,0x32,0x0e,0x2e,0xaf },
{ 0xb0,0x58,0x35,0xcf,0x75,0x66,0x95,0xad,0x42,0xb9,0x8c,0x04,0x2a,0x68,0x9d,0xae,0x7b,0xbe,0xd9,0x75,0x49,0xb8,0x9a,0x9d,0x4e,0xa1,0xdf,0x11,0x02,0xc3,0x23,0x5a },
{ 0xb0,0xf4,0x69,0x8f,0x78,0x10,0xc9,0x13,0x93,0x7b,0x95,0x23,0x64,0x54,0x92,0x3c,0x68,0xfe,0x4e,0xe5,0xe5,0x08,0x64,0xe0,0x22,0x88,0x91,0x69,0x1a,0xa6,0x1e,0x88 },
{ 0xf2,0xfb,0x61,0xf0,0x97,0x66,0x19,0x52,0x9d,0x81,0xfb,0x58,0xa1,0x1f,0xb7,0x3f,0x85,0x52,0xe7,0x64,0xa8,0x61,0xb9,0x11,0x5c,0xdd,0x86,0xda,0x5c,0x27,0xef,0x6a },
{ 0xa9,0x8f,0x2b,0x81,0x1e,0x63,0x09,0x76,0xb0,0x26,0x14,0x81,0xaa,0x06,0x24,0x2b,0x01,0x35,0xaa,0x5f,0x01,0x36,0xa7,0x77,0xa7,0x57,0x8c,0x0f,0x41,0xe5,0xc2,0x95 },
{ 0xeb,0xde,0x18,0x01,0x0c,0xc7,0xfa,0x1e,0xc8,0x4d,0x10,0x9c,0xa4,0xfb,0x62,0x7f,0xbe,0x65,0xfc,0x46,0x45,0xe9,0x94,0x59,0x51,0xc4,0x3b,0x19,0xf5,0xe5,0xca,0xab },
{ 0x78,0xb3,0x50,0x54,0x3c,0xe9,0xc8,0xe1,0xd7,0x76,0x76,0xc9,0xb2,0x76,0xc7,0x15,0xaf,0x88,0x28,0x03,0x5d,0x5f,0x88,0x24,0xfc,0xf9,0xe6,0x94,0x05,0xfd,0xbd,0x42 },
{ 0xf1,0x6d,0xff,0x85,0x6a,0x22,0xe8,0x2f,0xeb,0xf5,0xbb,0x83,0x65,0x8d,0x58,0xb4,0xc1,0x56,0xcc,0x3c,0x6c,0xcc,0x89,0x63,0x84,0xc7,0x28,0x39,0x91,0xb1,0x9e,0x98 },
{ 0x1e,0xe3,0xa5,0x54,0xc3,0x4e,0xb4,0xc2,0x62,0x88,0x07,0xc4,0xd5,0x00,0xe3,0x77,0xae,0x47,0x01,0x76,0x4b,0xb4,0x53,0x92,0xe9,0x6f,0xac,0x3a,0x55,0x1c,0x35,0x71 },
{ 0xa2,0x07,0x82,0x56,0x9b,0x87,0xcd,0x2e,0xb9,0x0c,0x31,0xfe,0xde,0xcb,0x75,0xd7,0x22,0x8b,0xb5,0x05,0x56,0x6c,0xfb,0x50,0x2b,0x05,0x76,0x4a,0xcc,0x3f,0xd6,0x58 },
{ 0x42,0xad,0x03,0x93,0xb5,0xda,0x22,0xb1,0x78,0xae,0xb9,0x50,0x8c,0xf6,0xa4,0x7d,0x99,0xbe,0xa8,0x23,0xc4,0x8a,0x33,0x93,0xfd,0xda,0x06,0x84,0xd4,0x21,0x97,0x7f },
{ 0xc2,0xae,0x4f,0x23,0x94,0xd5,0x01,0x9b,0x09,0x42,0x52,0x73,0x25,0x20,0xeb,0x60,0x48,0x9e,0x31,0x2b,0x5d,0xad,0xa1,0xdc,0xcb,0xc6,0x7d,0x98,0x26,0x1d,0xe2,0xa0 },
{ 0xd5,0xb2,0x51,0x61,0x01,0xbf,0xe9,0xe8,0x9d,0x91,0x15,0xc7,0x7c,0x80,0x3b,0x81,0x10,0x7e,0xef,0xe4,0x4e,0x99,0x3d,0x18,0x4c,0xfd,0xaf,0x85,0xa5,0xea,0x6b,0x71 },
{ 0x74,0xa7,0x13,0x89,0x08,0xb2,0xa8,0xd5,0x58,0x0f,0xd3,0xf4,0xad,0x8e,0xd7,0x09,0xf1,0x2c,0x50,0xec,0x08,0x79,0x2b,0x29,0x82,0xd2,0x27,0x04,0x52,0xdf,0x51,0xf7 },
{ 0x71,0x51,0xf0,0x74,0xdf,0x59,0x1f,0xeb,0xec,0x49,0x85,0x0b,0x31,0x16,0xa8,0x52,0x49,0x16,0x99,0x02,0x7c,0x5e,0x31,0xeb,0xc4,0x85,0xdb,0xe2,0x44,0x81,0xe6,0x05 },
{ 0x37,0x80,0x6c,0x56,0xd8,0x27,0x68,0x3e,0x4c,0xed,0x40,0x92,0x06,0x0d,0x28,0x01,0x68,0xe8,0xed,0x61,0x22,0xa1,0xf2,0xc1,0xa3,0xcb,0x43,0x0e,0xbc,0xa7,0x0f,0x64 },
{ 0x6a,0x96,0x2e,0x83,0xb0,0x3e,0x80,0x60,0xbb,0xb4,0xc4,0x57,0x58,0xdf,0xbb,0x1c,0x1d,0x91,0xd2,0xbc,0x01,0xa3,0xc9,0xd7,0xcf,0x89,0xbd,0x3d,0x9d,0x94,0x63,0xf7 },
{ 0xb5,0x75,0xbf,0x77,0x58,0x7c,0xca,0x41,0x84,0x0a,0x38,0x14,0x84,0x88,0x03,0x9e,0xed,0xa8,0x01,0x5a,0xc6,0x6a,0xff,0x45,0x46,0x2b,0x72,0x64,0xd0,0x9c,0x44,0xc7 },
{ 0x73,0x99,0x7b,0xcf,0x65,0x8a,0x01,0x85,0xf3,0xc3,0x9f,0x59,0xc4,0xb4,0xe2,0x05,0x0f,0xcd,0xe0,0x16,0x05,0xf3,0x2b,0xf9,0x5a,0xf8,0xb5,0xbe,0xed,0xe4,0x89,0xb4 },
{ 0x5c,0x6d,0xfc,0x0e,0x59,0xa7,0xa8,0x29,0x7b,0x27,0xfd,0x5e,0x34,0xa9,0x9a,0x81,0xfb,0x9a,0x95,0x11,0x4b,0xa0,0xdf,0x61,0x45,0xa6,0xb2,0x45,0xf9,0x49,0x79,0xb9 },
{ 0x2b,0x89,0x90,0x7d,0xa1,0xd5,0x9a,0x25,0xe7,0xd4,0xe9,0xa3,0xd3,0xbb,0x51,0x17,0x8d,0x9d,0x58,0xf0,0xe1,0x02,0xfc,0x7d,0x5b,0x08,0x2d,0xe9,0x85,0xcc,0x22,0xd4 },
{ 0xf6,0x7c,0x99,0x9e,0x6f,0x90,0x1a,0x66,0x0e,0xb8,0x4a,0x9d,0x19,0x5f,0x94,0xae,0x4c,0x4f,0xa1,0x15,0x3a,0x7e,0x42,0x31,0x00,0x60,0xee,0xca,0x82,0x91,0x07,0x9d },
{ 0x95,0x58,0x02,0x74,0xaa,0x2b,0xc5,0xec,0x0c,0x4c,0xf3,0x1b,0x06,0xf1,0x16,0x7d,0xe3,0x14,0xae,0x2f,0x2d,0x28,0xe2,0x79,0xea,0x91,0xfc,0x99,0xeb,0x49,0x21,0x22 },
{ 0x95,0x8e,0x98,0x85,0xea,0xae,0xc9,0xd9,0x75,0x82,0xda,0x5a,0xfe,0x67,0x05,0xef,0x71,0x2b,0xa5,0x26,0xf0,0x80,0x8a,0xa0,0xcb,0x50,0x35,0xb7,0x14,0x7d,0x0f,0x2c },
{ 0x4a,0xcd,0xcd,0x00,0x9b,0x44,0x69,0x84,0x93,0x91,0xa6,0xa2,0xda,0x0a,0x60,0xf2,0x48,0xf3,0xd8,0xb5,0x34,0xab,0xfe,0x15,0x87,0x71,0x51,0xcc,0x8e,0x49,0xda,0x03 },
{ 0x14,0xc4,0x8a,0xc1,0xa5,0x56,0x53,0xd1,0xb8,0x44,0x9a,0xf2,0xd2,0x92,0x4b,0x36,0x4c,0xbf,0x99,0xb7,0x97,0xae,0xa4,0x06,0x8c,0x2a,0xda,0x59,0xf4,0x7e,0xba,0x3d },
{ 0x42,0x99,0x37,0x20,0x4a,0xbd,0xd8,0x99,0xfe,0x66,0x07,0x41,0x81,0x50,0x82,0x1f,0x90,0x49,0x06,0x86,0x7c,0x65,0xa5,0xd3,0xed,0x74,0xe4,0xdf,0x87,0xf1,0x08,0xff },
{ 0x5c,0x7a,0x52,0x28,0xd7,0x48,0xa5,0x2b,0xf9,0x83,0x7c,0xea,0x9e,0xe2,0x97,0x3c,0x7b,0x43,0x0a,0xc7,0x71,0x4b,0x0d,0x5c,0x7a,0x1a,0x75,0xbf,0x69,0x02,0x4d,0xe0 },
{ 0xb9,0xa7,0x42,0x1a,0x14,0xfb,0x4c,0x3c,0x4c,0xc1,0x38,0x4e,0xce,0x37,0xec,0x25,0x82,0xcf,0x5a,0x69,0x39,0x75,0x5b,0x24,0xbe,0x1a,0xb5,0x72,0x5a,0x97,0xa5,0x3b },
{ 0x25,0xf3,0xdc,0x5a,0x51,0x2d,0xce,0x8f,0x85,0xf4,0xe7,0xba,0x2b,0x5e,0x5b,0x0c,0x0f,0x97,0xd8,0x43,0xaa,0xd6,0x26,0x7b,0xdb,0xae,0xde,0xcf,0xf7,0x9a,0x28,0xe1 },
{ 0x91,0xab,0x59,0x75,0x35,0xcc,0x44,0x74,0x2d,0x20,0x20,0x73,0xa0,0xe2,0xe1,0xc9,0x9b,0x29,0x98,0x15,0x35,0x0e,0xc7,0xa0,0x16,0x85,0x6f,0x29,0xed,0xbf,0x60,0x19 },
{ 0xea,0xdb,0x53,0x3f,0x6e,0xd4,0xec,0x84,0x96,0xe4,0x21,0xe5,0x0f,0x79,0x0b,0x23,0x5c,0x1b,0x31,0xc5,0x24,0x6f,0x7a,0x08,0x2d,0xc3,0x0c,0xc0,0x67,0x63,0x9d,0x77 },
{ 0xa6,0xb2,0xc4,0x46,0x42,0xc9,0xef,0x9f,0x9c,0x3d,0x65,0x62,0x65,0xba,0xb3,0x48,0xc0,0x47,0xe9,0x72,0xe7,0x26,0xb8,0xce,0x31,0xe3,0x22,0xe3,0x1d,0xb0,0xf0,0x95 },
{ 0x5a,0x62,0x5f,0xff,0xc2,0xf4,0x14,0xf7,0xc0,0xc3,0xa4,0xe3,0xb8,0xae,0x9f,0xb3,0x8d,0x93,0xfd,0xcf,0x2d,0x31,0xd8,0x72,0xe6,0x86,0x38,0xfa,0x96,0x12,0xc6,0xe2 },
{ 0x66,0x9e,0xc8,0x1d,0x99,0xb4,0x75,0x1e,0x83,0x30,0xe3,0x83,0x6e,0x24,0x5e,0x5e,0x0d,0xff,0x91,0x9a,0x54,0xd8,0xca,0x73,0x14,0x22,0x30,0x89,0x3b,0x67,0x72,0x9a },
{ 0xca,0xb0,0x18,0x19,0xe9,0xf9,0x03,0xfa,0xa4,0xe9,0xf6,0x05,0xbc,0xf6,0xd2,0xd9,0x0b,0xb3,0x22,0x4d,0xe5,0x79,0x20,0x92,0x5a,0x18,0xdb,0x2f,0xd2,0xfc,0x1d,0xc3 },
{ 0xe8,0x52,0x4f,0x4f,0x3f,0xd3,0x97,0xb6,0x31,0xc1,0xbf,0xfb,0x06,0xd5,0x2a,0xba,0x84,0x27,0xb1,0x3c,0x5d,0xdc,0x80,0x26,0x6f,0x37,0x56,0x45,0x3b,0xa7,0x07,0x32 },
{ 0x4b,0x6c,0x43,0xd1,0x3d,0x7e,0xa0,0x37,0xef,0xd6,0x54,0xfa,0xb6,0x92,0x3f,0x20,0x1b,0x1a,0x9c,0x92,0xc4,0x7e,0x13,0x21,0xb6,0x17,0xda,0xa7,0x1a,0x55,0x94,0xa5 },
{ 0xe6,0xeb,0xd1,0x66,0xfd,0x21,0x47,0x1b,0x8b,0x90,0x4f,0xa1,0x9b,0xfb,0x4a,0xab,0x30,0xe1,0xba,0x63,0xc0,0x2a,0xde,0xc5,0xb0,0x96,0x61,0x89,0x4e,0x9c,0x42,0x7d },
{ 0x5b,0x94,0xd4,0x90,0xd9,0x6f,0x85,0x73,0x22,0xd8,0x1c,0x55,0xbd,0x31,0xe1,0x76,0xb3,0x3d,0x1a,0xc8,0x26,0xa1,0xf1,0xf1,0x4e,0x65,0x2f,0xdb,0x6a,0xc3,0xd0,0x99 },
{ 0xee,0x07,0x3e,0x91,0xdb,0x93,0x0e,0x55,0x05,0x9f,0xe9,0xb5,0x39,0x94,0x82,0x55,0xa0,0xc2,0xd8,0x89,0x4b,0xe5,0x95,0xd4,0xee,0xcb,0x57,0xa5,0xca,0xa5,0xd9,0x34 },
{ 0x19,0xf3,0xe7,0x36,0xed,0xc8,0x88,0x12,0x1c,0x0e,0xf4,0x84,0xd0,0x77,0x84,0x50,0x5c,0x95,0x35,0x9a,0xcb,0x24,0xa4,0x1a,0xea,0x54,0xd3,0xcf,0x46,0x38,0x5a,0xc8 },
{ 0x17,0x27,0xba,0xae,0xca,0x0d,0xc3,0x60,0xbd,0x14,0x0c,0x61,0x83,0xc7,0x8b,0x03,0x5b,0xe7,0x19,0x91,0x39,0x25,0x4b,0x3e,0x38,0x83,0xf7,0x9d,0xc3,0xe6,0x73,0x74 },
{ 0x68,0x8a,0x1e,0x32,0x49,0x73,0xe7,0xa5,0xeb,0xe9,0xbb,0x41,0x53,0x74,0x11,0xcf,0x1c,0x4a,0x24,0xa7,0xcf,0x1c,0x47,0x3d,0xec,0xac,0x1a,0x8d,0x4a,0x7d,0x2f,0x18 },
{ 0x5d,0x77,0x2e,0x7a,0xb5,0xd2,0xc2,0x31,0x0b,0xd6,0xa7,0xc9,0x78,0x4a,0xc1,0xff,0x67,0xda,0x44,0x61,0x63,0xa0,0xa9,0x7e,0x67,0x0f,0x80,0x00,0xa0,0xa8,0x3e,0xa3 },
{ 0x0f,0x85,0xd7,0x91,0x3e,0x9d,0x58,0xf0,0xcd,0x29,0xba,0x4e,0xd5,0x9e,0xbd,0x65,0xbe,0x7f,0x09,0x54,0x22,0xf4,0x93,0x65,0x05,0x06,0x90,0xa2,0xb2,0x8d,0x3a,0x46 },
{ 0x99,0xb2,0xb0,0x99,0xe2,0x64,0x7c,0x96,0x2f,0xae,0x11,0xe9,0x8a,0x8b,0x4e,0x43,0x96,0x30,0xd4,0xcc,0xc4,0x20,0x75,0xa6,0x3a,0x05,0x5c,0xde,0x91,0x4d,0x0e,0xe5 },
{ 0x53,0x86,0xf9,0xbc,0xa1,0xd1,0x30,0xeb,0x7d,0x40,0x8d,0x79,0x28,0xd5,0xe2,0xe9,0x58,0x30,0xe5,0x47,0xa3,0x45,0xe2,0x43,0x90,0x75,0x5a,0xd5,0x67,0x3f,0x9e,0x89 },
{ 0x38,0xe5,0x8f,0x84,0x6f,0x03,0x10,0x1b,0x12,0x02,0x38,0x92,0x30,0xfc,0x9e,0x17,0xc7,0xf3,0xb8,0x14,0xd0,0xa6,0x88,0x03,0x02,0xf8,0x4a,0x73,0xdf,0xa9,0x0b,0xec },
{ 0xb7,0x75,0xb9,0x8e,0x0a,0x0e,0xf8,0x4e,0x09,0xd1,0xac,0x5d,0xf3,0x1f,0x95,0x39,0x02,0xdb,0x56,0x50,0xb2,0xef,0x68,0x39,0x04,0x02,0xc7,0xe0,0x24,0x55,0x55,0x91 },
{ 0xda,0x8e,0x10,0x24,0x67,0x0c,0xe0,0xcf,0x31,0x62,0x79,0xcc,0x88,0xe4,0x7e,0x70,0x46,0x67,0x1a,0xc4,0x73,0xfa,0x0a,0xeb,0xd9,0x38,0x1e,0xd9,0xb1,0xdd,0x6e,0x96 },
{ 0xf0,0x3c,0x97,0x8a,0x21,0x86,0xc6,0xb8,0x64,0xb4,0x94,0x2e,0x5a,0x82,0x4c,0x90,0xa4,0xc8,0x40,0x82,0x01,0xa2,0x09,0x44,0x7d,0x75,0x08,0x77,0x84,0x76,0x3f,0x4a },
{ 0x1f,0x55,0xbf,0x6a,0x0b,0x48,0x7b,0xee,0xde,0xc6,0x25,0x0f,0xc1,0x89,0xa8,0x08,0x56,0x0e,0xf1,0x1c,0x9a,0xfd,0x12,0xe9,0x19,0xd0,0x80,0xcb,0xc0,0x37,0xf5,0x4b },
{ 0x9f,0xa7,0x07,0xc4,0x3c,0x4c,0x65,0x1a,0x74,0x1a,0xde,0x42,0xc1,0x93,0xb4,0x4a,0x8c,0xbd,0x6c,0xe0,0x7e,0xd6,0x03,0x1f,0x3f,0xb1,0x19,0xdb,0xc6,0xc8,0x44,0x4a },
{ 0x98,0x15,0xf7,0x34,0x7c,0xb6,0x11,0xf1,0x2c,0xf4,0xcb,0xa4,0xbf,0xf7,0xf0,0x56,0xf8,0x7b,0x7d,0x25,0x53,0x91,0x8a,0x0e,0x8c,0x2a,0x32,0xb3,0x44,0x97,0x7f,0x64 },
{ 0x84,0xf3,0x0d,0x7a,0x9e,0x10,0x67,0xbc,0x34,0xb0,0x24,0x56,0x0d,0x2d,0x71,0xf6,0xb3,0x91,0xec,0x3d,0xce,0x76,0x29,0x7d,0x68,0x6b,0x6c,0xc5,0xc0,0x70,0x61,0xd0 },
{ 0xd3,0x84,0xbc,0xcb,0x4d,0x12,0xa0,0x35,0xf8,0xf5,0x99,0xca,0x26,0xb3,0x0c,0x15,0xa6,0x95,0x50,0x41,0x58,0x33,0x65,0x71,0x4e,0x11,0x4b,0x92,0xce,0x24,0x79,0x9a },
{ 0xce,0x51,0x78,0x8b,0x24,0x74,0x71,0xd7,0xa0,0xdd,0x98,0x8a,0x5d,0xdd,0xcb,0x5c,0x91,0xf7,0x29,0x86,0x73,0xe8,0x11,0xb6,0x49,0xe0,0x1e,0x33,0x32,0xf7,0x0d,0x98 },
{ 0xf0,0x76,0xa8,0x51,0x49,0xd9,0x21,0x58,0x6f,0x39,0xad,0x7b,0x4c,0x6f,0x9d,0x8a,0x55,0x4f,0xc4,0x19,0x33,0xe3,0xbf,0x2d,0x6e,0xb0,0x5a,0x53,0x4f,0x83,0x89,0x79 },
{ 0x96,0xbc,0xbd,0x78,0x73,0x80,0x9e,0xe8,0x2f,0x33,0xea,0x0a,0xe4,0xb5,0xf7,0x99,0x5c,0xe0,0x5c,0x15,0x7a,0x5f,0xca,0xb1,0xe0,0x73,0xe3,0x2e,0x42,0x07,0x89,0x55 },
{ 0x1e,0x7e,0x37,0x18,0x89,0xda,0x22,0xb1,0x2d,0x1e,0x0b,0xad,0x04,0xcb,0xf1,0x6d,0xdb,0xd1,0xbe,0xa8,0x55,0x6a,0x11,0x35,0xb3,0x95,0x9e,0xf6,0x9c,0xd7,0x11,0xb7 },
{ 0xf7,0xa7,0x17,0x74,0x4a,0xca,0xdc,0x16,0x15,0xe4,0x05,0x75,0xc3,0xd2,0xb4,0xc6,0x66,0x60,0xa2,0xb3,0x14,0x87,0x06,0x7f,0x51,0x5d,0x2c,0x18,0x25,0x50,0xb9,0x2d },
{ 0xa4,0xb7,0xbd,0xb9,0xf3,0x4e,0x62,0x6e,0x81,0x7a,0x94,0xf5,0x7d,0x8a,0xad,0x13,0xf1,0x47,0x1a,0xf1,0x77,0xfa,0xff,0x80,0xf7,0x43,0x02,0x3b,0x90,0xec,0x65,0x5b },
{ 0x6c,0xfe,0x85,0x20,0xed,0x21,0x34,0xb4,0xc1,0xd0,0x4b,0x34,0x7f,0xe2,0x29,0x07,0xa0,0x40,0xfa,0xf5,0x33,0x4f,0xa4,0xba,0x10,0x0f,0xaa,0x27,0x81,0xfd,0x47,0xc2 },
{ 0x92,0x6e,0xf0,0x70,0x94,0x84,0x76,0x9d,0xef,0x1a,0x8e,0x00,0x8c,0xbd,0x6d,0xea,0xd2,0x12,0x9f,0xba,0xeb,0xf2,0x6c,0x44,0x04,0x45,0x7b,0xaf,0x5c,0xc9,0x52,0x44 },
{ 0xc2,0xd4,0xbc,0xa8,0x7c,0x14,0xec,0x11,0x30,0xe0,0x33,0xf0,0xf2,0xef,0x9c,0x64,0xbf,0x13,0xd7,0xf8,0x11,0x23,0xd4,0x0c,0xf6,0x52,0x45,0x15,0xf6,0x62,0x7b,0x18 },
{ 0xcf,0xef,0x87,0xc2,0xf1,0x47,0x2d,0xc9,0x6e,0x5e,0x5e,0x91,0xad,0x6e,0xb6,0xe5,0x53,0xd9,0x60,0x08,0xa0,0x11,0x45,0xc9,0xce,0x2e,0xd3,0xef,0x77,0xa3,0x54,0xed },
{ 0x88,0x06,0x94,0xbc,0xcb,0x14,0xaa,0x44,0x7d,0x83,0xe6,0x5b,0xa1,0xc8,0x44,0x5d,0x11,0x4c,0x86,0xe6,0x08,0x55,0x4e,0x5e,0xf7,0x6c,0xd8,0xc4,0x0d,0xa2,0xd4,0x51 },
{ 0x04,0x81,0xdd,0xce,0xcc,0x70,0xe5,0x99,0x77,0xdd,0xec,0x44,0xa2,0x9c,0x9c,0x06,0x13,0x6e,0x09,0x38,0x88,0x64,0xae,0x7a,0xb7,0xb0,0x2d,0xa5,0x0a,0x6b,0xed,0xc7 },
{ 0x97,0x9a,0xd4,0x8e,0x89,0x25,0xb8,0xfe,0xc4,0xf1,0xa7,0x69,0x2d,0xdf,0x81,0x3d,0x61,0xed,0x83,0x2a,0x93,0x37,0x82,0x61,0xfd,0xb1,0x1c,0xfa,0x57,0x5e,0x50,0x85 },
{ 0x7b,0xdc,0xf0,0x0f,0x7f,0xea,0x39,0xc8,0xd2,0xfa,0xf4,0x93,0x8e,0x43,0xab,0xd8,0xbc,0x23,0x99,0xc0,0x56,0x1b,0xd0,0x7a,0x1d,0xd1,0x54,0x9f,0x32,0xa7,0x24,0x52 },
{ 0xe4,0xa8,0x2a,0xf6,0xf2,0xfe,0xfa,0xd7,0x0a,0xd0,0x98,0xa1,0x87,0x13,0x10,0x9f,0xb8,0x28,0x52,0x45,0x0e,0x6d,0x2a,0x2f,0x80,0x25,0x67,0xa6,0xe7,0xeb,0x2b,0xed },
{ 0xe7,0x02,0x16,0xac,0xfd,0xbb,0x4a,0xf5,0xab,0x79,0x0c,0xf0,0x90,0x3b,0x9c,0x11,0x23,0xd0,0x19,0x1b,0xc7,0x1a,0x3d,0x95,0xfc,0xea,0xc5,0x79,0xcc,0xad,0xff,0x98 },
{ 0x53,0xeb,0xc3,0x32,0x43,0x99,0x60,0x8f,0x84,0xa1,0x1a,0x45,0x49,0x75,0x9b,0x85,0x60,0x7c,0x9c,0x98,0x74,0x3b,0xe9,0x3a,0x2e,0x5e,0x60,0xf3,0x20,0xfd,0x39,0xbf },
{ 0x5b,0xd6,0x9c,0xfa,0x9f,0xb1,0xa3,0x61,0x03,0x16,0xa3,0x98,0x43,0xd7,0x57,0xda,0xca,0x5a,0xa0,0x27,0xaa,0x82,0xf9,0xf7,0x91,0xb0,0x27,0x05,0xab,0x11,0x28,0x60 },
{ 0x40,0xc5,0x73,0xb2,0xf2,0x1a,0xef,0xf6,0x30,0x87,0x91,0xb2,0x85,0x78,0x90,0xf5,0x12,0x39,0x16,0x39,0xea,0xea,0x5e,0x6f,0x7f,0xed,0x1e,0x34,0xcb,0x3d,0x70,0xdd },
{ 0x0b,0x45,0xd7,0xf7,0x66,0x37,0xee,0x67,0xd2,0xcf,0x56,0xd1,0xb8,0x86,0x34,0x01,0x3b,0x83,0xeb,0x3a,0x37,0xb0,0xc9,0x7e,0x07,0x21,0xcc,0x73,0xd2,0x2b,0x11,0x58 },
{ 0xa8,0xa9,0xae,0x42,0x2c,0x2c,0x28,0xd3,0x76,0xd4,0xae,0x15,0xe1,0x45,0x47,0x22,0x15,0x6e,0x13,0x68,0xbc,0xfe,0xa1,0xf4,0xd2,0xbf,0xa5,0x23,0x17,0xb9,0xcf,0x2b },
{ 0xe7,0x64,0x3a,0xcc,0x8a,0xa8,0x19,0x98,0x0b,0xda,0x04,0x5c,0x7c,0xdc,0x8e,0x7a,0x61,0x69,0xb3,0xc5,0x5c,0xc9,0x30,0xd4,0x32,0xaa,0x50,0xd6,0xae,0x41,0x31,0x96 },
{ 0xae,0xeb,0x3f,0x45,0xda,0x52,0x74,0xe0,0x62,0x03,0xc4,0xed,0x88,0xbb,0xdc,0x6e,0x68,0x7a,0xb1,0x2a,0x02,0x41,0x22,0x72,0x63,0x3f,0xe3,0x6b,0x91,0x0b,0xc7,0x32 },
{ 0x6f,0xd0,0x4f,0xe9,0xb7,0x88,0x20,0xd7,0x5a,0x08,0x72,0x20,0x94,0xd8,0x0e,0x0a,0x52,0x57,0x48,0x38,0x7a,0xf5,0x26,0x2f,0x3c,0xcf,0x4f,0x61,0x27,0xcc,0x42,0xd0 },
{ 0xf8,0x35,0x4d,0xf2,0x7f,0xda,0xf3,0xd6,0x7c,0x9d,0xf3,0xf6,0x9a,0x3a,0x9f,0x27,0x58,0xf2,0x8f,0xad,0x77,0x1e,0x4b,0xf3,0xb9,0xce,0x58,0x4f,0x92,0x7f,0x19,0x3a },
{ 0x22,0x98,0x50,0x54,0x56,0x0d,0x1c,0xba,0xf9,0x5e,0xd9,0x7d,0x05,0xb6,0xe4,0x47,0xa8,0x5d,0x4a,0x90,0x85,0x5c,0x63,0x24,0xb8,0x4c,0x47,0xe0,0x72,0x45,0xd5,0x40 },
{ 0xeb,0x0e,0xfb,0x73,0xd0,0xb4,0x44,0x4f,0xec,0x6d,0x97,0x60,0x5d,0x98,0xa9,0xa9,0x45,0xbf,0xcd,0x99,0xf0,0x06,0x37,0x72,0xd3,0x27,0xb2,0x45,0x2b,0x19,0x2e,0xbf },
{ 0x3c,0x2b,0x34,0x4b,0x38,0x49,0xb1,0x21,0x11,0x09,0x7b,0xdf,0x86,0x52,0x00,0xfe,0x45,0x39,0x1f,0x9d,0x42,0x54,0xe5,0xca,0x65,0xde,0x9d,0xd6,0x92,0xe2,0x71,0x32 },
{ 0x29,0x71,0xb2,0xfd,0xb6,0x4b,0xb2,0xa5,0x01,0xf7,0x34,0x6a,0x91,0xa9,0x72,0x54,0x0a,0x59,0x09,0xa4,0x13,0x5b,0x18,0x4a,0x50,0x3d,0x21,0x9e,0xb4,0x07,0xe6,0xac },
{ 0x9f,0x7d,0x41,0x12,0xf4,0x8b,0xfe,0x0b,0xbd,0xd0,0xd2,0xfd,0x8f,0x6c,0xaa,0x7e,0xee,0xb8,0xc3,0xba,0x14,0x39,0x81,0x30,0x13,0x20,0x57,0xac,0xe4,0x29,0x88,0x38 },
{ 0xc1,0xc7,0xdb,0xec,0x7e,0xc0,0xa5,0xcf,0xe1,0x02,0x11,0x29,0x9d,0x8c,0x10,0xde,0xd7,0x9c,0x18,0xf7,0xc1,0xd0,0x4c,0xbe,0xab,0x06,0x92,0x4d,0x61,0x7c,0xb7,0x77 },
{ 0x36,0x18,0x77,0x8d,0x0d,0xa7,0xdc,0x1d,0xc8,0xb0,0x24,0xca,0x05,0xc1,0xa1,0xd1,0x27,0xd3,0x56,0x3b,0x80,0xb1,0x88,0xa2,0x80,0x22,0xc1,0x9c,0xcc,0xb4,0x87,0x89 },
{ 0xa3,0xfd,0x15,0xcf,0xfa,0x65,0x0f,0x79,0x61,0xac,0x96,0x21,0x08,0xd7,0x05,0x20,0xaa,0x40,0xe5,0xfd,0x90,0x8c,0xba,0x74,0x2d,0x8b,0x39,0x26,0x03,0x27,0xf2,0xcc },
{ 0xfe,0x32,0x56,0x3a,0xd4,0x80,0xbc,0x47,0x14,0xf7,0x98,0xdc,0x3b,0x4b,0x44,0x82,0x47,0x1c,0xad,0xac,0xd1,0xc4,0xe0,0x51,0xea,0x2b,0xff,0x6f,0xc7,0x63,0xfc,0xea },
{ 0x1d,0x06,0xee,0x3b,0x90,0xb4,0xd1,0xf4,0xe7,0x84,0xd9,0xe5,0xd3,0xd1,0x72,0x04,0x09,0xbe,0xa0,0x2f,0x9c,0x95,0x4a,0x1f,0x8f,0xbe,0xc6,0xeb,0xf0,0xa1,0x56,0x8d },
{ 0xa9,0x7d,0xa3,0x1c,0x31,0x5c,0x1f,0x9e,0xcc,0x90,0x0a,0xe5,0x7d,0xa7,0x21,0x1f,0x55,0x71,0xc2,0xee,0x13,0x88,0x77,0x42,0x83,0xda,0x51,0x5d,0x12,0xa4,0xa6,0x7a },
{ 0xb5,0x5c,0xee,0x2f,0x8c,0x1b,0xd9,0x75,0x7b,0x91,0xa4,0x6e,0xe0,0x62,0x97,0x72,0x3a,0x12,0x6c,0xea,0x82,0x2c,0x71,0xef,0xb8,0x00,0xf3,0xd4,0xce,0xc3,0x16,0xf2 },
{ 0xb1,0xcc,0x9f,0xc5,0xc5,0x6a,0x1d,0x1f,0x13,0xa8,0x9c,0x49,0x5a,0x2c,0x24,0x62,0x56,0x25,0xe6,0x76,0x35,0x15,0x7b,0xf1,0xc2,0x04,0xbf,0xaa,0xa7,0x24,0x2c,0xa1 },
{ 0x9e,0x75,0x93,0x01,0x38,0x1f,0x44,0x14,0xcd,0xec,0x40,0x06,0xae,0x0c,0x78,0x6a,0x83,0xea,0x92,0x2e,0x95,0x51,0x2f,0x3d,0x97,0x5c,0x00,0x75,0x96,0x84,0x65,0x3e },
{ 0x55,0xc8,0x41,0xb7,0x13,0x62,0xb8,0xbe,0x5f,0x8f,0x1c,0xb1,0x78,0x0e,0xfd,0xf3,0x59,0xed,0x35,0xc1,0xd4,0x4a,0x21,0x0b,0xf0,0xf5,0xad,0xae,0x75,0x70,0x72,0x8d },
{ 0x93,0xc4,0x0c,0xdf,0xd4,0x07,0x09,0xda,0x3e,0x4c,0x05,0x57,0xa8,0xc7,0x66,0x22,0x7a,0xf9,0xec,0xa3,0x4c,0xce,0xd7,0xd1,0x7a,0x4b,0xb0,0xe2,0x0e,0x09,0xdd,0xf9 },
{ 0xee,0xe7,0x06,0x4b,0xfa,0x70,0xab,0xdd,0x7c,0x66,0xb4,0x4b,0xf4,0xbc,0x5e,0x6b,0x9c,0x62,0xa2,0xcb,0xa1,0x25,0xaf,0x0c,0x41,0x3d,0xcc,0xf5,0xab,0x81,0xab,0x83 },
{ 0xfb,0xfc,0x15,0xcf,0x61,0x1b,0xe9,0xe4,0xa5,0x8b,0x83,0x60,0xf7,0x66,0xfc,0xd0,0x8f,0xe7,0xea,0xf1,0x20,0x3e,0x25,0x8f,0xa1,0xf3,0xb4,0xa8,0xcf,0x0a,0xd3,0x8e },
{ 0x9a,0x02,0xd1,0x18,0xa3,0x4e,0xd3,0x60,0x86,0x3e,0xd4,0x12,0x21,0x9f,0x66,0xe4,0x53,0x36,0xd9,0xd5,0xf3,0x72,0xff,0x51,0x7a,0x2f,0x06,0x2c,0x5f,0x8d,0x09,0xd9 },
{ 0x65,0xe1,0xc8,0x38,0xa7,0x49,0xb4,0x9c,0x76,0x08,0x76,0x70,0x25,0x3e,0x3f,0x8e,0xa4,0xe0,0x2e,0x45,0x85,0x7d,0x43,0xd5,0xbb,0x7a,0xb6,0x8e,0x9d,0x1d,0x0b,0xce },
{ 0xe6,0x58,0x44,0x6d,0x17,0x8a,0x23,0x11,0x01,0xef,0x2a,0xf7,0x42,0xb2,0x78,0xc7,0xef,0xd5,0x8b,0x7a,0x50,0x0c,0xf5,0x10,0xf7,0xd4,0x93,0xa2,0x5e,0xeb,0x53,0xf5 },
{ 0x3f,0x4c,0x56,0x1d,0xdf,0x4a,0x80,0xf0,0x6d,0xeb,0x9a,0xbd,0x62,0xab,0xcc,0xe6,0xf7,0x30,0x78,0x4e,0x5a,0x8d,0xe8,0xc4,0xa2,0xef,0x2f,0xf4,0x16,0x00,0x4f,0x83 },
{ 0x16,0x8f,0x76,0x89,0x2c,0x7d,0xe3,0x99,0x52,0x8e,0x84,0x62,0x9d,0xf1,0x97,0x3d,0xd5,0x1b,0x91,0x20,0x93,0x31,0x4a,0x22,0x35,0x83,0xa1,0xda,0x4c,0x94,0xcd,0xd9 },
{ 0xc1,0x8a,0xea,0xe8,0xfa,0xc9,0x96,0x79,0x97,0x82,0xd2,0x9f,0xf7,0x98,0x7a,0x4e,0xae,0x8d,0xd1,0x0c,0xd4,0xad,0x37,0xbc,0xe4,0x8b,0xdc,0x2e,0x1d,0x0c,0xcf,0x84 },
{ 0x0d,0x68,0x6c,0xd7,0xfe,0x21,0x80,0xb0,0xf6,0x64,0x9a,0xc6,0x1f,0xc2,0x75,0x2f,0xb6,0x43,0x25,0x28,0x0b,0x49,0x86,0xa6,0xba,0x84,0x8e,0x18,0x31,0x0d,0x25,0xfc },
{ 0x42,0x1f,0xfe,0xab,0x04,0x33,0xe3,0x9e,0x85,0x7c,0xf6,0x9f,0xa7,0xbd,0xf4,0xbe,0x80,0x0c,0xf7,0x98,0xa0,0xf5,0x60,0x28,0x04,0xd8,0x6e,0x89,0x20,0xb7,0x77,0x32 },
{ 0xbd,0x48,0xef,0x70,0xe8,0x6a,0xba,0xd8,0x22,0xa1,0xfa,0x75,0xc6,0x55,0xf7,0x16,0xad,0xd0,0xee,0xa9,0xb3,0x73,0x7f,0x0f,0x62,0xc5,0x11,0x7d,0xf9,0xb9,0x1b,0x03 },
{ 0x25,0x47,0x9a,0x84,0x95,0x5e,0x2e,0x74,0x62,0xac,0x89,0x22,0x0b,0x3f,0xfa,0x0b,0x67,0xa4,0x5c,0x24,0xbe,0x03,0xc0,0xbb,0x37,0x91,0xe1,0x82,0xb0,0x73,0xe6,0x52 },
{ 0xa8,0x5a,0x28,0x7b,0xaa,0x73,0xf1,0x97,0x65,0x1c,0xe3,0x63,0x95,0x45,0xa4,0x31,0x3f,0x29,0xd7,0x40,0x12,0x5a,0xce,0xc5,0x87,0xe3,0xfd,0x7b,0x7c,0xba,0x8e,0xa8 },
{ 0xe2,0x7b,0x0e,0xb8,0xcb,0x10,0x7c,0x84,0x3d,0x7d,0x35,0x90,0x8b,0x76,0x2b,0x56,0x8b,0x64,0x12,0xbb,0x99,0x80,0xaf,0xe1,0xac,0x7e,0xe8,0xfc,0x0b,0x4c,0x85,0x8b },
{ 0x82,0x71,0x1c,0x1f,0x5a,0x94,0xab,0xb1,0xde,0xa2,0xfc,0xae,0xbc,0xf8,0x28,0xe4,0x79,0xc6,0xe2,0xb4,0xc7,0x40,0x5d,0x98,0xee,0xf6,0x7f,0x2c,0x55,0x86,0xd0,0xd1 },
{ 0x36,0x2f,0x7e,0x46,0x61,0x70,0x2c,0x8c,0xa6,0x99,0xba,0x90,0xc9,0x3e,0x8f,0xa7,0xe9,0xa7,0xdf,0xa0,0x1f,0xb3,0xe2,0x8c,0xc1,0x09,0x96,0xb0,0x46,0xf9,0x33,0xeb },
{ 0x75,0x05,0x92,0x46,0x79,0x45,0xa9,0x44,0x32,0x19,0x5d,0x31,0xa0,0x6a,0x54,0x27,0xb8,0x6d,0x1e,0x72,0xd4,0x43,0xa3,0xb9,0xf1,0xb6,0x0b,0xa7,0x68,0xc8,0x1c,0xc2 },
{ 0xd4,0x41,0xa2,0x7a,0xcb,0xa1,0x7b,0xa5,0xf6,0x26,0xdc,0xb1,0xba,0x90,0x02,0x72,0x0a,0xc4,0xc4,0x31,0xd5,0x97,0xcc,0x64,0x7e,0xdf,0x5f,0xb1,0xd8,0x72,0x2b,0x64 },
{ 0x2a,0xe1,0xb5,0x7b,0x36,0x74,0x59,0xc6,0xcb,0x95,0x90,0x2e,0xd3,0x0d,0xc3,0x9c,0x28,0xed,0x26,0x35,0x61,0x3b,0x6b,0x39,0x84,0x03,0x61,0x2b,0x57,0xb7,0x78,0x70 },
{ 0x36,0x0b,0x62,0x08,0x74,0xee,0xec,0x6a,0x2f,0xfc,0xce,0xe2,0xbf,0x4d,0x41,0x79,0x82,0xa0,0xc6,0xf8,0xd3,0xc0,0xd4,0x17,0x48,0x5a,0xc2,0x30,0x64,0xb7,0x93,0xf9 },
{ 0x19,0xdc,0xae,0xee,0xe9,0xe9,0x5f,0xad,0x0f,0x44,0xff,0xcd,0xc3,0x96,0x49,0x9c,0xaf,0x22,0xf6,0xc3,0x5a,0x94,0x5e,0x2f,0x9c,0xd2,0xcb,0xef,0x3a,0xcc,0x98,0x20 },
{ 0x71,0x75,0xed,0xc3,0xee,0xe6,0x9d,0x36,0x5f,0x2a,0x96,0xa4,0x05,0xf7,0x35,0xa4,0xfc,0x4c,0x54,0xe5,0x0e,0xcc,0xc9,0x0a,0x45,0x34,0x8d,0x8b,0xb8,0xee,0x80,0xdc },
{ 0x27,0x8d,0xab,0x78,0xd2,0xfc,0x8b,0x6f,0xe7,0x46,0x7d,0xe2,0xbe,0x08,0xd5,0x5d,0xea,0x03,0xfb,0xe9,0xc3,0x07,0xd5,0x32,0x62,0xcd,0x02,0xc0,0xc4,0x68,0x5d,0x8b },
{ 0xc1,0x63,0xa1,0x79,0x05,0x0b,0x94,0x4c,0xaa,0xdf,0x61,0xaa,0x7a,0x43,0x57,0x15,0x16,0x2e,0xd4,0x93,0xef,0x72,0xbb,0x63,0x32,0x4e,0x8d,0x16,0xb2,0x40,0xc4,0x8a },
{ 0xe8,0x91,0x7d,0xde,0xb2,0x18,0xb4,0x8f,0x75,0xd8,0x14,0x00,0xc6,0xfd,0xa5,0x99,0x71,0x4f,0xa6,0xd5,0x62,0x37,0x10,0xd9,0x92,0x47,0x9c,0xb5,0x41,0x38,0xe1,0x88 },
{ 0xdb,0x4d,0x67,0xee,0xbe,0xc4,0x37,0xa1,0xb1,0xc8,0xfa,0x2f,0xee,0xea,0xf3,0x63,0xec,0x7c,0x7c,0x83,0x09,0x3a,0x3d,0xfb,0xa9,0x79,0x31,0x24,0xe7,0x33,0xcf,0xdb },
{ 0x0c,0x09,0x95,0xd3,0xd5,0x20,0xa3,0xb5,0x65,0x15,0xfc,0x53,0x58,0x92,0x59,0x87,0x87,0x43,0xce,0x67,0x8c,0x1f,0xb2,0xc5,0x5f,0x2a,0xb6,0x92,0x07,0x85,0xa5,0x00 },
{ 0x0e,0xc4,0x67,0x33,0x19,0x47,0xd3,0x6f,0x03,0x23,0x59,0x0d,0x04,0x7f,0xb0,0x8b,0x4d,0x32,0x8a,0xe2,0x63,0xaa,0xa1,0x58,0x72,0x2e,0xde,0x50,0x18,0x6a,0x61,0x82 },
{ 0xb1,0xb8,0x71,0x68,0xbe,0xb3,0x97,0x51,0xf6,0x26,0x01,0xd1,0xbb,0x1c,0x97,0x7f,0xe8,0x45,0xfb,0xe1,0xd4,0x71,0x29,0x36,0x88,0xa2,0xb4,0xc2,0xfb,0x56,0x2b,0xc9 },
{ 0x02,0x63,0xbe,0x38,0xdf,0x59,0x13,0x3b,0xc8,0xe4,0xfc,0x59,0x9f,0x51,0x9a,0xfb,0x51,0xd0,0x61,0xf9,0xb1,0x2e,0x05,0xb1,0xe1,0x9e,0x49,0x12,0xaa,0xad,0xca,0xc4 },
{ 0xe4,0xad,0x83,0xc7,0x2d,0x3c,0x9c,0x01,0xda,0x92,0xf2,0x8f,0x90,0x6b,0x8c,0x75,0x46,0xda,0x41,0xc4,0xb2,0x3f,0x55,0x0c,0x7b,0x62,0x6a,0xd4,0x78,0x55,0xaf,0xdc },
{ 0x7c,0x1b,0xd5,0x14,0x73,0x88,0x77,0x27,0xbf,0x82,0xad,0x52,0x65,0x0f,0x41,0xbd,0x5c,0x11,0x75,0xd7,0x1a,0x91,0x15,0x43,0xd2,0x17,0xbe,0xb8,0x1e,0x9c,0x3a,0x3c },
{ 0x95,0xa6,0xcd,0x97,0x93,0x6f,0x8e,0x4e,0x05,0xc5,0x77,0x23,0x7b,0x97,0x41,0xaf,0x6d,0x7c,0xaa,0xd5,0xe4,0x49,0xb3,0x35,0xad,0xfb,0xc0,0xaf,0x01,0xbb,0x4a,0x1c },
{ 0x47,0xa0,0x3e,0x0a,0x93,0x95,0xc2,0x4e,0x03,0x10,0xbb,0x0a,0x44,0x3f,0x00,0x08,0x4f,0xdb,0x11,0xc9,0x45,0x0f,0x12,0xc7,0xa3,0xcd,0xe8,0x35,0x22,0x80,0x63,0x0d },
{ 0x4a,0x92,0x0e,0xc5,0xa4,0xa3,0x66,0xf8,0x51,0xa9,0x6d,0x53,0x67,0x52,0xab,0x6e,0xdc,0xac,0xd6,0x37,0x4d,0x41,0x97,0x92,0xec,0xae,0xe2,0x1d,0x6c,0xcc,0x7c,0x7f },
{ 0x58,0x27,0xbd,0x30,0xdd,0xa0,0x24,0xbc,0x7d,0x74,0xa7,0x5f,0x2c,0xa2,0x33,0x57,0x80,0xa3,0xe9,0x3a,0xcd,0x2c,0x74,0xca,0x97,0x2c,0x6a,0xf2,0x94,0x95,0x87,0x69 },
{ 0xe7,0x02,0x54,0x46,0xa4,0x75,0xe0,0x9c,0x22,0x2c,0xe1,0x62,0x33,0xf0,0x0e,0x22,0x51,0x5c,0x69,0xa3,0xae,0xd8,0x14,0xb9,0xbb,0x2f,0xb2,0xc4,0xb5,0x75,0xfb,0x46 },
{ 0x9a,0x82,0x90,0x59,0x1f,0x61,0x30,0x49,0x5b,0x3a,0xec,0x50,0xce,0x9c,0xbe,0x1b,0x40,0x4f,0xae,0xb4,0xf4,0xfd,0x06,0x84,0xcd,0x53,0x99,0x5e,0x53,0xb4,0xb1,0xb7 },
{ 0x87,0x50,0xb4,0x5f,0xb7,0x62,0xba,0xab,0x0b,0x72,0x06,0xce,0xb4,0x77,0x57,0x6f,0x9c,0xdf,0x66,0xda,0x0a,0x26,0xf2,0xf2,0x66,0xc6,0xf2,0x2e,0x40,0x0d,0xbe,0xd3 },
{ 0xfc,0x15,0xb7,0xf1,0xfd,0xcf,0xd0,0xe9,0x2b,0xbb,0xb0,0xd7,0x94,0xf6,0xb9,0x05,0x5e,0x67,0x5b,0xaf,0x68,0x3c,0xae,0x24,0xb9,0xfc,0x30,0x76,0x0c,0x5e,0x43,0x3d },
{ 0x5d,0x0a,0x65,0x5b,0xbd,0x37,0x45,0x65,0x76,0x0a,0xf8,0x4c,0xae,0x44,0x8d,0x25,0x1e,0x94,0xe6,0xd7,0x18,0x90,0xf2,0x1e,0x44,0xec,0x6e,0x52,0x6c,0x40,0x25,0x95 },
{ 0x6c,0x00,0x52,0x76,0xe6,0xbc,0x7a,0x12,0xc3,0x55,0xe5,0x3d,0x7f,0x30,0xb7,0x69,0x98,0xd6,0xf2,0xf6,0x47,0xa7,0xf8,0x19,0xa5,0x5e,0xa3,0xbc,0xce,0x40,0xac,0x16 },
{ 0x6a,0xc6,0x85,0x90,0x9a,0x22,0x8d,0x77,0x95,0xef,0x2f,0x7e,0xb9,0x96,0x11,0x69,0x00,0xa7,0xef,0x86,0x42,0xf2,0x2f,0x70,0x99,0xa0,0x37,0xa0,0xd0,0x96,0xe3,0x5a },
{ 0x68,0x13,0xc8,0x9e,0x4c,0x9f,0x4b,0xa7,0x24,0x0c,0x8a,0xd4,0x56,0x0b,0xe7,0xa7,0xf3,0xbc,0x00,0x19,0xcc,0x97,0x5a,0x20,0xe4,0x92,0x28,0x0a,0x90,0xb5,0x3c,0xb2 },
{ 0x98,0xbc,0x90,0x56,0x38,0x4c,0x17,0x59,0x31,0xc4,0x96,0xac,0xa7,0x40,0xb4,0xbe,0xc3,0xfe,0x46,0x9d,0xcf,0x02,0xf1,0x11,0x0c,0xf0,0x72,0x47,0xef,0xd0,0xa7,0xc9 },
{ 0x0d,0xae,0xab,0x9d,0x22,0x74,0x1a,0xb5,0x83,0xcd,0xc7,0x23,0xf9,0x22,0xbf,0x38,0x37,0x76,0x4b,0x27,0x88,0xcd,0xe2,0xae,0x17,0x6a,0xb3,0xbe,0xdd,0x60,0x53,0x4d },
{ 0xe9,0x41,0x73,0xdd,0xc4,0xe9,0xa1,0x46,0xb7,0xd3,0x05,0x4e,0xe7,0xba,0xd1,0xf2,0x86,0x53,0x23,0x71,0xd8,0xf2,0xa6,0xd8,0x8e,0xcb,0x09,0xa7,0xe8,0xe7,0xa4,0xcb },
{ 0xb5,0xda,0x9b,0x1a,0xb3,0x8b,0x0c,0xae,0x72,0xe3,0x11,0x02,0x2f,0x26,0x45,0xdf,0xa0,0x68,0xba,0x9e,0x24,0x70,0x86,0x5d,0xf3,0xa2,0x75,0xdb,0x78,0x13,0x6f,0x2d },
{ 0x23,0x3b,0xd1,0x92,0xd4,0x10,0x1f,0xdc,0x01,0x65,0x2d,0x40,0x7a,0x6f,0x34,0x96,0x14,0x0a,0xb3,0xf7,0x30,0xfa,0xe0,0x20,0xbf,0x37,0xf4,0x86,0x5e,0xd6,0xc6,0x30 },
{ 0xf6,0x96,0xe2,0x2e,0xe4,0x58,0xce,0xbc,0xff,0xdf,0xc6,0xc1,0x48,0xc4,0xc5,0x2a,0x75,0xed,0xf4,0x13,0x86,0x94,0xcd,0x95,0x42,0x4f,0x3d,0x81,0x5c,0xcb,0xe6,0xa6 },
{ 0xaf,0x33,0xc1,0x5e,0x3b,0xc2,0x16,0x0a,0x0f,0x1a,0xd1,0x41,0xd9,0xa9,0xec,0x76,0xb4,0x2f,0x34,0xfb,0x47,0xbc,0x95,0xff,0x8c,0x63,0x68,0x24,0x26,0x04,0x55,0xbc },
{ 0x9e,0xd3,0xc0,0x08,0x9b,0x5f,0x79,0x0c,0x7b,0x82,0xe9,0x8a,0xb6,0xe5,0xe4,0x5b,0x8e,0x26,0xe1,0x61,0xff,0x4c,0x83,0x8d,0x66,0x59,0x0b,0x6c,0x65,0x64,0xeb,0xb9 },
{ 0x55,0x10,0x53,0x30,0xa3,0x5f,0x9f,0x3d,0x5f,0x6a,0x28,0x36,0x2d,0x9d,0xa1,0x07,0x07,0xf8,0x19,0x28,0x3f,0x38,0xfd,0xe8,0x05,0x7b,0x34,0x38,0xd6,0x46,0xf1,0x02 },
{ 0x1d,0x80,0xf8,0xcd,0xf9,0x18,0xce,0x43,0x8a,0xf3,0xc6,0x37,0xac,0x84,0xa1,0x94,0x5d,0x09,0x3b,0xbf,0x92,0x41,0xa1,0xdd,0x17,0x70,0x75,0x90,0x90,0xb1,0x05,0x9f },
{ 0x61,0xc7,0x63,0xfc,0x93,0x3d,0x3f,0xe2,0xd5,0x39,0x84,0x2d,0x1a,0x94,0x62,0xae,0x41,0x86,0x38,0x53,0x23,0x6e,0xa7,0xee,0x73,0xb5,0x69,0xd7,0xd6,0xc0,0x3d,0xc9 },
{ 0xf3,0x4d,0x45,0xe0,0x73,0x2e,0x61,0x8c,0xda,0x25,0xc1,0x5f,0x8e,0xc2,0x33,0xd9,0x63,0x51,0x41,0xc1,0x92,0x06,0xa7,0x80,0xda,0x70,0xcb,0x1c,0xa0,0x7f,0x32,0x63 },
{ 0xa6,0xb5,0xca,0xfb,0xd3,0xad,0xf4,0x74,0xde,0x77,0x0f,0x73,0xd4,0xca,0x11,0x5c,0x56,0xd6,0x08,0x4d,0x1e,0x1c,0xcd,0xde,0xe4,0x15,0x8f,0x41,0x75,0xc9,0xd0,0x5e },
{ 0x62,0x78,0x89,0x30,0x37,0x8e,0x7c,0x83,0x7a,0x28,0x7b,0xfb,0x72,0xd3,0x9e,0xc4,0x5c,0xe2,0x58,0xa8,0x05,0x52,0x16,0x37,0xaa,0x5f,0x34,0x54,0xd0,0x5b,0x62,0x68 },
{ 0x15,0xc0,0x4e,0xa8,0xbd,0x77,0x1a,0x4a,0x58,0x98,0x96,0xdb,0x9d,0x95,0x97,0x0d,0xb9,0xab,0x00,0xf1,0x95,0xfb,0x73,0x64,0xd1,0x96,0xf9,0x3f,0x67,0xb3,0xf5,0x27 },
{ 0x03,0x6f,0xf6,0x41,0xde,0x85,0xdc,0x13,0xda,0xd3,0x92,0x66,0xba,0xbb,0x74,0x7d,0xf7,0x59,0xe6,0x8a,0xab,0x1a,0xe9,0xce,0x3c,0xdb,0xb6,0xd5,0x51,0x5e,0x16,0x26 },
{ 0x23,0xec,0x63,0x9a,0xba,0x39,0x6e,0x4c,0x51,0x78,0x35,0xdf,0xe3,0xab,0x7b,0x4f,0xdc,0xaa,0xe0,0x94,0xaa,0x51,0xe7,0x83,0xc6,0x1a,0x2c,0xf2,0xf1,0x4f,0x21,0x5f },
{ 0x70,0xe0,0x4b,0x93,0xb5,0x3e,0x79,0x9a,0xe4,0x9b,0x85,0x72,0x82,0x0a,0xb7,0x93,0x3d,0xb2,0x56,0x3d,0x14,0xd6,0x8e,0x35,0xaa,0xe8,0x11,0x18,0x16,0xf1,0x34,0x91 },
{ 0x3e,0xf5,0xdc,0x8b,0x66,0x60,0xdb,0x12,0x8e,0xa0,0x76,0xb0,0xa8,0x29,0x48,0x41,0xde,0x69,0x1a,0x80,0xbe,0x30,0xf9,0x3b,0xd9,0xca,0x0d,0x8d,0x26,0xf9,0x60,0x6e },
{ 0xf2,0xfb,0x28,0xd1,0xf9,0xc6,0x60,0x1c,0xbc,0x47,0xbe,0xb1,0xfa,0x7d,0x0b,0xfc,0x84,0x05,0xc6,0x46,0x07,0xfc,0x58,0xd1,0x20,0x7d,0x2c,0xac,0xb2,0xae,0x9c,0xa1 },
{ 0x0e,0x13,0x94,0xb0,0x0b,0x46,0x47,0x2b,0x0a,0xb3,0x92,0xd5,0x88,0xf5,0xb6,0x53,0x5c,0x48,0x6d,0xfb,0x2c,0xcd,0x26,0x94,0x83,0xe0,0x53,0x68,0x0a,0xe5,0x49,0x28 },
{ 0x6e,0xa5,0xae,0xf9,0xb1,0xe7,0xff,0xa6,0xaa,0xdd,0xb6,0x6f,0x76,0x2a,0xbc,0x93,0x14,0xbf,0x9b,0x1c,0xf8,0x0d,0xa0,0x67,0x25,0x44,0x1e,0xa8,0x87,0xd0,0x94,0x4d },
{ 0xed,0xf1,0x02,0xad,0x38,0x38,0xe8,0x3f,0xc6,0x45,0x57,0xc4,0x64,0x58,0xc9,0x75,0x93,0x9b,0x43,0x63,0xa2,0xb0,0x94,0x2e,0x9f,0x1b,0xab,0xad,0x63,0xa5,0xca,0x43 },
{ 0xa0,0x8a,0x93,0xab,0x17,0x23,0xed,0x85,0x99,0x0d,0x01,0x88,0x48,0x36,0xaf,0x21,0xec,0xba,0xd6,0xa1,0xdb,0x71,0xb0,0xc0,0xcd,0xd8,0xbe,0xc6,0x18,0x74,0x6e,0x6a },
{ 0x44,0x2b,0xd7,0x60,0x4d,0x9b,0xad,0xeb,0x58,0x15,0x7d,0x77,0xa7,0x4b,0xf9,0x65,0xcf,0xe7,0x3d,0xf9,0x9c,0xb8,0x5b,0x11,0x05,0x56,0x35,0xc8,0x17,0xd2,0xbe,0xc3 },
{ 0xcf,0x27,0x0d,0x69,0x2c,0x5a,0x35,0x87,0xc0,0xa0,0x52,0x57,0x79,0x43,0xfb,0xb9,0x6f,0x77,0x40,0x02,0x3b,0x7b,0xd9,0x0c,0x11,0x88,0x4f,0x16,0x33,0x4d,0x4b,0xdd },
{ 0xdb,0x3e,0x11,0xa6,0x27,0x73,0x43,0x37,0xff,0xe0,0x2b,0x85,0x39,0x05,0x66,0x23,0x49,0x49,0xc0,0x61,0x50,0x8e,0xc2,0x64,0xf1,0x1d,0x8e,0x91,0xf6,0xf2,0x44,0x35 },
{ 0x7c,0x20,0x0a,0x17,0x89,0x87,0x24,0x82,0xa6,0x2b,0x21,0x96,0x41,0xb0,0x69,0xbb,0xf8,0xf8,0x91,0x0e,0x62,0x7d,0x43,0xdd,0xf3,0x63,0x35,0x5b,0xb2,0xb9,0x67,0x5e },
{ 0x41,0xee,0x04,0xbe,0x99,0xb4,0xd5,0x37,0x8c,0x71,0xad,0x42,0x46,0x2b,0xce,0xea,0x9e,0xff,0x94,0xca,0xb6,0xfa,0x68,0xe0,0x74,0xdd,0x84,0xb0,0x5b,0x2c,0xaf,0xe7 },
{ 0xfd,0x5e,0xd3,0x17,0xaf,0x6b,0x68,0xd2,0x19,0x38,0x2d,0x0c,0x26,0x27,0x50,0x34,0x28,0x78,0x2c,0x57,0xeb,0x8f,0x70,0x7b,0x7e,0xac,0xa1,0x87,0x65,0x0e,0xd8,0x7d },
{ 0x6e,0x00,0x29,0xff,0x00,0x80,0x9e,0xd4,0xdd,0x21,0x4a,0x95,0x03,0xa3,0x63,0x72,0xa8,0x6b,0x4f,0xbf,0x80,0x8e,0x2f,0x78,0xbb,0x5e,0x12,0xee,0x8e,0x58,0xa1,0x5a },
{ 0xb4,0x12,0xa5,0x31,0xf3,0xb4,0x22,0x44,0xf9,0x34,0x3f,0xec,0x3a,0x4e,0x81,0x48,0xb4,0xcd,0x9e,0x4e,0x4b,0x47,0x94,0x37,0x4d,0x2e,0x7e,0x98,0xea,0x2c,0xeb,0x2e },
{ 0x3b,0x15,0x52,0x54,0x9c,0xb4,0xbb,0x6d,0x5b,0xea,0xd0,0x81,0x54,0xd8,0x4f,0x02,0xb4,0xe9,0xf6,0x8f,0x6a,0xd8,0x2b,0x78,0x59,0xec,0x65,0xdb,0xbe,0x7a,0x08,0xed },
{ 0xe3,0x59,0xae,0x58,0x75,0x40,0xa4,0x88,0x2e,0x74,0xb2,0x74,0xa3,0xc3,0x0c,0xd0,0xaf,0x27,0xa0,0x7d,0x2c,0xaa,0x78,0x38,0x4b,0x85,0x4f,0x5b,0xf5,0x9c,0x23,0x69 },
{ 0xb2,0x42,0x35,0x11,0xb2,0x27,0xad,0x34,0xdb,0xfe,0x53,0x18,0xc8,0x34,0x8d,0x7e,0x8b,0xba,0x32,0x19,0xc6,0xca,0x7b,0xa3,0xe2,0xf8,0x67,0xa1,0x6e,0x6f,0xc7,0x3a },
{ 0xb6,0x1b,0x89,0x3c,0xa7,0x2d,0xfa,0xc2,0xff,0x37,0x9a,0xc9,0xc4,0xb6,0x4e,0x9e,0x0d,0x02,0x26,0xf0,0x9c,0xdb,0xa4,0xf5,0xae,0x29,0x38,0x16,0x3d,0x7f,0xbf,0xf8 },
{ 0x89,0xac,0xd4,0x45,0x75,0xa3,0x75,0xcf,0xe1,0x7e,0xc9,0x18,0x37,0xa2,0x03,0x22,0xb9,0x39,0x9b,0xa0,0x9d,0x42,0xae,0x70,0x85,0x9b,0xdc,0xb0,0x87,0x2f,0xdb,0xc0 },
{ 0x61,0x58,0x27,0x98,0xcb,0xed,0x7e,0x00,0x17,0x7b,0x00,0xdf,0x96,0xc0,0xd3,0x97,0xce,0x16,0xd8,0x7b,0x1b,0x95,0xa9,0x6e,0x74,0xe2,0xcb,0x0c,0xf9,0x13,0x1a,0xf1 },
{ 0x31,0xe6,0x58,0x2c,0x7f,0x2a,0x5f,0xb8,0x74,0xc7,0x41,0xf0,0xf8,0x18,0xe4,0x4b,0xad,0x95,0x34,0xba,0x33,0x37,0xac,0x95,0x92,0x70,0x31,0x00,0xeb,0xa1,0xdd,0x7e },
{ 0x34,0x58,0x0f,0x00,0x14,0x69,0x40,0x93,0xc9,0x0d,0x2e,0x64,0xe1,0xfa,0x92,0xc1,0x42,0xb5,0x3e,0xe5,0x31,0xd7,0x2a,0xfe,0x2a,0xa0,0x44,0x2f,0xa5,0xd3,0x26,0x6d },
{ 0x7c,0x75,0x2d,0x94,0x33,0x5a,0xe0,0xe4,0x83,0x89,0x6f,0xdb,0x8d,0xb0,0xb1,0xc7,0xc5,0x45,0xee,0xb4,0x31,0x13,0xec,0x3d,0x9c,0xbc,0x91,0x6d,0xf7,0x52,0x97,0x4f },
{ 0x55,0xe6,0x82,0xd2,0xb6,0x8c,0xb0,0x42,0xfd,0xe6,0x03,0xda,0x2a,0x19,0x78,0x21,0x9a,0x8b,0xfe,0xb2,0x71,0xc2,0xf7,0xdb,0xad,0xaa,0x37,0x9d,0x02,0x07,0x74,0xfd },
{ 0x34,0x43,0x13,0xcc,0xc3,0xa7,0xdf,0x62,0x81,0x0d,0x32,0xfd,0x80,0xc6,0x51,0x5f,0x49,0x42,0x7b,0x01,0x2d,0xe5,0x52,0x89,0x0b,0x0b,0xc7,0xe5,0xcc,0xa1,0xf1,0x7f },
{ 0xa9,0x90,0x75,0xec,0x7e,0xec,0x17,0x7d,0x95,0x8c,0x4f,0xd8,0xd2,0x4c,0x59,0xdf,0xa4,0xfb,0xa7,0x2a,0xd6,0xa0,0x7d,0xcd,0x59,0x23,0xf7,0x0f,0xe1,0x82,0x1c,0x1d },
{ 0xb5,0x6a,0x66,0x66,0xcf,0x45,0x70,0x54,0xce,0xfd,0xa4,0x89,0x4e,0x9b,0x51,0x6d,0x30,0x3a,0x7d,0xd3,0x28,0x89,0x25,0x7f,0x63,0xea,0xbe,0x0a,0xa6,0x6e,0x9e,0xf0 },
{ 0xae,0x8c,0x49,0x9b,0x08,0x2d,0x1e,0x78,0x50,0xff,0x94,0xf5,0xe5,0xda,0x62,0x88,0x7c,0x73,0x93,0x5a,0x11,0x67,0x78,0x32,0x7a,0x79,0x93,0x25,0x54,0xd7,0xf2,0x27 },
{ 0xe2,0x79,0xe7,0x8a,0x6a,0x0f,0xa7,0x75,0x90,0x9e,0xa3,0x15,0x53,0x66,0xb7,0x0d,0xdc,0x8b,0xc7,0xa0,0x9a,0xe0,0x46,0x44,0xf7,0x11,0xde,0x6e,0x58,0x00,0x0a,0x9b },
{ 0xf8,0x27,0x75,0x9b,0xca,0x19,0x1d,0x45,0x7f,0x9f,0x4a,0x3e,0x9d,0xef,0x50,0x1f,0x9f,0x38,0x9d,0xcd,0x0a,0xd2,0x97,0x75,0x73,0xc3,0x14,0x59,0x52,0xd4,0x6b,0xb6 },
{ 0xcf,0x46,0xc5,0xf1,0xf8,0x04,0xe9,0x74,0x3b,0x3a,0xc0,0x7e,0xcb,0x31,0xfb,0x17,0x8e,0x4f,0x02,0xc2,0x81,0x5b,0x03,0xa3,0x38,0xfa,0x10,0x67,0x50,0xc7,0x1c,0x6a },
{ 0x54,0x5b,0x86,0x4a,0x9c,0xb1,0x7b,0xf9,0xa9,0x7f,0xa4,0x55,0x5b,0xdf,0x70,0x03,0xbe,0x8c,0x7d,0x0b,0xb0,0x22,0x57,0x29,0x59,0x85,0x03,0xfd,0x68,0x29,0x32,0x74 },
{ 0xbb,0xbf,0x65,0x31,0xf3,0x1b,0x16,0x8f,0x52,0xc6,0x16,0xa2,0x77,0x4d,0xed,0x1c,0x4e,0x6d,0xcb,0xbe,0xe0,0xee,0xbf,0xb6,0xe0,0x3b,0xe2,0x09,0xf4,0xb1,0x75,0x03 },
{ 0x6b,0x56,0x2a,0x39,0x57,0x4b,0xff,0x25,0x1e,0x1f,0x48,0x61,0x0d,0xee,0xb0,0x24,0x77,0x48,0xb9,0xc8,0x0e,0xeb,0xe2,0xf1,0xd6,0x2f,0xf7,0x7d,0xbf,0x2f,0xaf,0x30 },
{ 0xfe,0xee,0x9c,0x8e,0x15,0x20,0xfa,0xc8,0x1b,0xc0,0x7f,0x11,0xd2,0x35,0x59,0x31,0xc4,0xca,0x94,0xb9,0xa5,0x74,0xf2,0xa4,0x2b,0xa2,0x9a,0x1e,0xe4,0x97,0xfd,0x05 },
{ 0xa2,0x9e,0x34,0x2d,0x94,0xb0,0xfe,0x29,0xde,0x82,0x73,0xd1,0xfd,0x90,0x0f,0xb8,0x99,0x29,0x50,0x7f,0xc5,0xb4,0xad,0xcf,0x18,0x88,0x45,0x10,0x80,0x2e,0x03,0x7f },
{ 0x7a,0xb9,0x6a,0xf1,0x0b,0x2a,0xe7,0x72,0x61,0x13,0x3d,0xc2,0x9d,0x15,0x52,0x4e,0x55,0xb9,0xda,0x30,0xcf,0xa3,0x58,0xb4,0x55,0x07,0xe9,0x4f,0x38,0x41,0x69,0x08 },
{ 0xb5,0x42,0xde,0xd8,0x16,0xfc,0x67,0x27,0x20,0xeb,0xe2,0x58,0x6a,0x87,0xa8,0x39,0x6f,0x63,0x68,0x9f,0x9d,0x02,0x6f,0xb2,0xbe,0x85,0xe9,0xf3,0x3b,0x93,0xde,0x64 },
{ 0xc5,0x7a,0x95,0x97,0x30,0x2f,0xc2,0x0f,0x5c,0x76,0x72,0xdd,0xfb,0xbf,0x46,0x70,0x32,0x35,0x2d,0xf0,0x9c,0xce,0xa2,0x49,0xc4,0x18,0x87,0x1c,0x00,0x0d,0xa0,0x21 },
{ 0x9d,0xaf,0xc3,0x00,0x62,0xe3,0xdd,0x45,0xf2,0xa1,0x85,0x28,0x80,0x0d,0x31,0xcf,0xf7,0x7f,0xc4,0x6e,0xea,0x72,0x44,0xa9,0x9b,0x06,0xf9,0xa4,0x86,0xef,0xc8,0xbc },
{ 0x1e,0x88,0x97,0xda,0x03,0xf5,0x06,0x44,0xd7,0x13,0x41,0x14,0x49,0xbc,0xbe,0xe2,0x7e,0x93,0x37,0xee,0xf1,0x46,0x0b,0xbb,0x21,0x2a,0xc8,0xc7,0xb7,0x18,0xbb,0xfa },
{ 0xeb,0x70,0x6e,0xf5,0x2e,0xc7,0x2e,0x6b,0xad,0x45,0x6b,0x75,0x59,0xba,0xa0,0x38,0x41,0x05,0x4a,0xd7,0xe1,0x5d,0xa9,0x54,0x0e,0xd7,0xce,0x69,0x76,0x83,0x7a,0x67 },
{ 0xd1,0xb7,0xff,0x78,0x3f,0xa0,0x25,0xa3,0xaf,0x67,0xba,0xf4,0x37,0xdd,0x5d,0x15,0x49,0x43,0x26,0x1f,0xff,0x50,0x05,0xcb,0x01,0xb2,0x91,0x04,0xde,0xb0,0xaf,0xad },
{ 0xef,0xbe,0x6a,0xe7,0xec,0x46,0xb1,0x95,0x71,0xdf,0xfb,0x42,0x75,0x77,0xf2,0xe0,0x50,0x0b,0x2a,0x23,0x45,0x3c,0x1a,0x5d,0xec,0xcd,0xef,0x80,0xe7,0x1b,0x7d,0x26 },
{ 0x73,0x1b,0x62,0xa7,0xbe,0x73,0xec,0xd8,0xb8,0xd6,0x20,0x17,0xdb,0x39,0x7f,0x58,0x86,0x89,0x16,0x6f,0x50,0xea,0x96,0xb7,0x64,0x32,0x4c,0xe9,0x42,0xd5,0x3a,0xd5 },
{ 0xa4,0xb7,0x1d,0x68,0x15,0x6e,0xb4,0x50,0x1b,0xbe,0x3e,0xd0,0x40,0x94,0xf3,0x3c,0xdc,0xef,0xb6,0x15,0x66,0xc2,0x09,0x94,0x26,0xa8,0x2d,0xb1,0x8b,0xf6,0xd9,0x18 },
{ 0xff,0x86,0xcf,0x9b,0x4c,0x4c,0x79,0x88,0x4a,0x80,0xc4,0xc2,0xd7,0xdd,0x05,0x49,0xe0,0x10,0xe3,0xc0,0x71,0x4d,0xd8,0x3b,0x28,0xeb,0xf1,0xcf,0xa6,0x92,0x44,0x87 },
{ 0xa3,0xe1,0x91,0xe1,0xd2,0x91,0x13,0xc0,0xa6,0x88,0xc4,0xd4,0x6c,0x6e,0xc3,0x35,0xce,0x28,0x93,0x61,0x8e,0xbd,0x99,0xc7,0x49,0xea,0x4f,0xe0,0x35,0xf2,0x55,0x44 },
{ 0xd4,0x0e,0x12,0x99,0x42,0x66,0x9d,0x10,0x0c,0xc0,0xf3,0x2e,0xd5,0xd1,0xfa,0xdb,0x4b,0x20,0xf8,0xbc,0xeb,0x79,0xa4,0x3f,0xe3,0xd1,0x9e,0x60,0x79,0x5b,0x21,0x5c },
{ 0xc3,0xee,0x8e,0x5e,0x03,0x0e,0x73,0x46,0x69,0xf8,0xa1,0x72,0xc7,0x11,0x84,0xe1,0xc8,0x3a,0xa3,0x26,0x41,0x74,0x6c,0x65,0x93,0x78,0x5a,0x5c,0xf7,0x9b,0x26,0x98 },
{ 0x1f,0x3f,0xac,0x31,0xf9,0x43,0x17,0x33,0x6d,0x96,0xfa,0x76,0xc8,0x77,0xa6,0x18,0x96,0xac,0x9b,0x04,0x22,0x1b,0x16,0xd1,0xc5,0x95,0xff,0x7f,0x25,0x90,0xc8,0xd3 },
{ 0xd3,0x10,0x7c,0x86,0x8b,0xf4,0xd0,0x23,0x29,0x85,0x3f,0xbd,0xb4,0x2f,0x23,0x45,0x5f,0xd1,0xb2,0xbb,0xa7,0x88,0xdb,0x7b,0xbb,0x30,0x6f,0xa5,0xdd,0x4c,0x00,0xbd },
{ 0x1c,0x6f,0xa3,0x86,0x36,0xfa,0xac,0xae,0xc5,0x5b,0xa7,0x12,0x02,0x3e,0x3d,0xa4,0x29,0xfd,0x9b,0x81,0xbe,0xac,0x0b,0x94,0x92,0xd1,0x01,0xdb,0x9e,0xdf,0xd1,0xef },
{ 0xb0,0xf0,0xd5,0xeb,0x9c,0xc2,0x51,0xfb,0xa4,0x65,0x46,0xe1,0x17,0xac,0x4e,0xed,0xd6,0x51,0xca,0x4f,0x98,0xed,0x6b,0x13,0xb9,0x8e,0xcc,0x00,0xb8,0xb9,0x26,0xde },
{ 0x71,0x4c,0xf9,0xff,0x26,0xb1,0x1e,0xa1,0xd6,0x96,0xbb,0x2f,0x34,0x82,0x1b,0x65,0xf5,0xec,0x30,0xf5,0x40,0x92,0x8f,0x11,0xd5,0x81,0xe6,0x1f,0x84,0x63,0xfe,0x3e },
{ 0xe4,0x70,0xa0,0x3e,0x37,0xed,0xbe,0xd8,0x88,0x45,0x13,0x09,0xb3,0x4a,0x17,0x1f,0x6b,0x1d,0x1a,0x9d,0xba,0x9e,0xbf,0xf6,0xf9,0xe9,0x6a,0x91,0x67,0x64,0x6f,0xe4 },
{ 0x0b,0x52,0x4b,0x57,0x08,0x69,0x56,0xd4,0xcb,0x57,0x14,0x6f,0xbd,0x31,0x1b,0x07,0xfd,0x4b,0x70,0x26,0x90,0xeb,0x70,0x3c,0x37,0xe0,0x67,0x7f,0x20,0xff,0x01,0x8b },
{ 0xef,0x52,0x69,0x60,0x5c,0x29,0x00,0x2f,0x21,0xa8,0x92,0x0e,0x05,0x50,0x5d,0x5c,0x19,0x12,0x01,0xd2,0x6d,0x73,0x43,0x6c,0xb2,0xcb,0xac,0xdc,0xe3,0x65,0xf6,0x12 },
{ 0xdc,0x06,0x03,0x8e,0xaa,0x8b,0x46,0xab,0x25,0x93,0x8b,0x57,0x2d,0xc3,0x8e,0x29,0xae,0x79,0x3e,0xcc,0xda,0xd1,0x35,0x77,0x68,0xa8,0x5f,0x10,0xce,0x36,0x91,0xfb },
{ 0x51,0xa2,0x59,0xbd,0x43,0xc6,0xaa,0xd4,0x9a,0xdd,0x16,0x9f,0xc9,0x8a,0x4a,0x1e,0xec,0x82,0xae,0xe7,0xe9,0x3d,0x5a,0x3c,0x38,0x93,0x97,0x04,0xfe,0x10,0x89,0x38 },
{ 0x12,0x4c,0x62,0x07,0x88,0x7d,0xdc,0x3b,0xe4,0x31,0x29,0x40,0x3b,0xfb,0x3a,0x5a,0x6b,0xb6,0xbb,0x23,0xa2,0x08,0x0c,0xb5,0x6e,0xdf,0xf0,0xa2,0x73,0xb3,0xef,0xa2 },
{ 0x98,0x7b,0x6f,0x5d,0x83,0xe5,0x8b,0xd5,0xc9,0x97,0xbb,0x99,0x38,0xfb,0x4a,0x60,0x1f,0x2f,0x70,0x77,0x6c,0x16,0x50,0xdf,0xea,0x81,0x55,0x33,0xac,0x29,0x20,0x8d },
{ 0x4c,0x43,0x72,0x68,0x4a,0xde,0x24,0x40,0xe0,0xd1,0x0f,0x4c,0x80,0x64,0x11,0x0a,0x0f,0xdb,0xaf,0x68,0x9e,0xa4,0x21,0xde,0x98,0x81,0xae,0xa1,0x86,0x16,0xbc,0x90 },
{ 0x02,0x6f,0xe1,0xb0,0x46,0xa1,0xf8,0xff,0x32,0x55,0x1f,0xe8,0xe5,0x7a,0x65,0xf3,0xce,0xdf,0x39,0x63,0xdf,0xa2,0x81,0xa0,0x33,0x5d,0x89,0xa1,0xba,0x27,0xb4,0xfd },
{ 0x73,0x56,0xfc,0x22,0xe2,0x2a,0x31,0x0d,0x1d,0xef,0x39,0x0a,0x9c,0x2b,0xe0,0x69,0x3b,0x9b,0x2c,0xad,0x18,0x5f,0xc2,0x66,0x75,0x80,0x0c,0x97,0xe3,0x81,0xd2,0xc0 },
{ 0x4d,0xf6,0x1c,0xeb,0x35,0x5b,0x39,0x23,0x7d,0x33,0xa8,0xe1,0x34,0x48,0x73,0xc3,0x0c,0x1f,0x79,0xd4,0x21,0x56,0x82,0x66,0x39,0x26,0x54,0x9c,0x9e,0x79,0xa6,0x84 },
{ 0xbf,0xab,0x5a,0x5a,0x6a,0xe3,0xcb,0xcb,0xb7,0xf1,0xf6,0x79,0x8c,0x95,0x19,0x1c,0x43,0x32,0x4f,0x40,0x2e,0xd5,0xe7,0x49,0xc3,0x9c,0x73,0xcd,0x4a,0xda,0x43,0x3d },
{ 0x76,0xa1,0x59,0x20,0x44,0xa6,0xe4,0xf5,0x11,0x26,0x5b,0xca,0x73,0xa6,0x04,0xd9,0x0b,0x05,0x29,0xd1,0xdf,0x60,0x2b,0xe3,0x0a,0x19,0xa9,0x25,0x76,0x60,0xd1,0xf5 },
tinyssh-20180201/crypto-tests/precomp_ed25519.data.py 0000664 0000000 0000000 00000005646 13227043065 0022154 0 ustar 00root root 0000000 0000000 import hashlib, binascii
b = 256
q = 2**255 - 19
l = 2**252 + 27742317777372353535851937790883648493
def H(m):
return hashlib.sha512(m).digest()
def expmod(b,e,m):
if e == 0: return 1
t = expmod(b,e/2,m)**2 % m
if e & 1: t = (t*b) % m
return t
def inv(x):
return expmod(x,q-2,q)
d = -121665 * inv(121666)
I = expmod(2,(q-1)/4,q)
def xrecover(y):
xx = (y*y-1) * inv(d*y*y+1)
x = expmod(xx,(q+3)/8,q)
if (x*x - xx) % q != 0: x = (x*I) % q
if x % 2 != 0: x = q-x
return x
By = 4 * inv(5)
Bx = xrecover(By)
B = [Bx % q,By % q]
def edwards(P,Q):
x1 = P[0]
y1 = P[1]
x2 = Q[0]
y2 = Q[1]
x3 = (x1*y2+x2*y1) * inv(1+d*x1*x2*y1*y2)
y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2)
return [x3 % q,y3 % q]
def scalarmult(P,e):
if e == 0: return [0,1]
Q = scalarmult(P,e/2)
Q = edwards(Q,Q)
if e & 1: Q = edwards(Q,P)
return Q
def encodeint(y):
bits = [(y >> i) & 1 for i in range(b)]
return ''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b/8)])
def encodepoint(P):
x = P[0]
y = P[1]
bits = [(y >> i) & 1 for i in range(b - 1)] + [x & 1]
return ''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b/8)])
def bit(h,i):
return (ord(h[i/8]) >> (i%8)) & 1
def publickey(sk):
h = H(sk)
a = 2**(b-2) + sum(2**i * bit(h,i) for i in range(3,b-2))
A = scalarmult(B,a)
return encodepoint(A)
def Hint(m):
h = H(m)
return sum(2**i * bit(h,i) for i in range(2*b))
def signature(m,sk,pk):
h = H(sk)
a = 2**(b-2) + sum(2**i * bit(h,i) for i in range(3,b-2))
r = Hint(''.join([h[i] for i in range(b/8,b/4)]) + m)
R = scalarmult(B,r)
S = (r + Hint(encodepoint(R) + pk + m) * a) % l
return encodepoint(R) + encodeint(S)
def isoncurve(P):
x = P[0]
y = P[1]
return (-x*x + y*y - 1 - d*x*x*y*y) % q == 0
def decodeint(s):
return sum(2**i * bit(s,i) for i in range(0,b))
def decodepoint(s):
y = sum(2**i * bit(s,i) for i in range(0,b-1))
x = xrecover(y)
if x & 1 != bit(s,b-1): x = q-x
P = [x,y]
if not isoncurve(P): raise Exception("decoding point that is not on curve")
return P
def checkvalid(s,m,pk):
if len(s) != b/4: raise Exception("signature length is wrong")
if len(pk) != b/8: raise Exception("public-key length is wrong")
R = decodepoint(s[0:b/8])
A = decodepoint(pk)
S = decodeint(s[b/8:b/4])
h = Hint(encodepoint(R) + pk + m)
if scalarmult(B,S) != edwards(R,scalarmult(A,h)):
raise Exception("signature does not pass verification")
f = open("precomp.txt")
def l(line):
l = ""
for i in range(32):
if i == 31:
l += "0x%s%s" % (line[2*i], line[2*i+1])
else:
l += "0x%s%s," % (line[2*i], line[2*i+1])
return l
while True:
line=f.readline()
if len(line) == 0:
f.close()
break
print "{", l(binascii.hexlify(publickey(binascii.unhexlify(line[0:-1])))), "},"
tinyssh-20180201/crypto-tests/precomp_nistp256.data 0000664 0000000 0000000 00001255430 13227043065 0022120 0 ustar 00root root 0000000 0000000 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x6b,0x17,0xd1,0xf2,0xe1,0x2c,0x42,0x47,0xf8,0xbc,0xe6,0xe5,0x63,0xa4,0x40,0xf2,0x77,0x03,0x7d,0x81,0x2d,0xeb,0x33,0xa0,0xf4,0xa1,0x39,0x45,0xd8,0x98,0xc2,0x96,0x4f,0xe3,0x42,0xe2,0xfe,0x1a,0x7f,0x9b,0x8e,0xe7,0xeb,0x4a,0x7c,0x0f,0x9e,0x16,0x2b,0xce,0x33,0x57,0x6b,0x31,0x5e,0xce,0xcb,0xb6,0x40,0x68,0x37,0xbf,0x51,0xf5 },
{ 0x7c,0xf2,0x7b,0x18,0x8d,0x03,0x4f,0x7e,0x8a,0x52,0x38,0x03,0x04,0xb5,0x1a,0xc3,0xc0,0x89,0x69,0xe2,0x77,0xf2,0x1b,0x35,0xa6,0x0b,0x48,0xfc,0x47,0x66,0x99,0x78,0x07,0x77,0x55,0x10,0xdb,0x8e,0xd0,0x40,0x29,0x3d,0x9a,0xc6,0x9f,0x74,0x30,0xdb,0xba,0x7d,0xad,0xe6,0x3c,0xe9,0x82,0x29,0x9e,0x04,0xb7,0x9d,0x22,0x78,0x73,0xd1 },
{ 0x5e,0xcb,0xe4,0xd1,0xa6,0x33,0x0a,0x44,0xc8,0xf7,0xef,0x95,0x1d,0x4b,0xf1,0x65,0xe6,0xc6,0xb7,0x21,0xef,0xad,0xa9,0x85,0xfb,0x41,0x66,0x1b,0xc6,0xe7,0xfd,0x6c,0x87,0x34,0x64,0x0c,0x49,0x98,0xff,0x7e,0x37,0x4b,0x06,0xce,0x1a,0x64,0xa2,0xec,0xd8,0x2a,0xb0,0x36,0x38,0x4f,0xb8,0x3d,0x9a,0x79,0xb1,0x27,0xa2,0x7d,0x50,0x32 },
{ 0xe2,0x53,0x4a,0x35,0x32,0xd0,0x8f,0xbb,0xa0,0x2d,0xde,0x65,0x9e,0xe6,0x2b,0xd0,0x03,0x1f,0xe2,0xdb,0x78,0x55,0x96,0xef,0x50,0x93,0x02,0x44,0x6b,0x03,0x08,0x52,0xe0,0xf1,0x57,0x5a,0x4c,0x63,0x3c,0xc7,0x19,0xdf,0xee,0x5f,0xda,0x86,0x2d,0x76,0x4e,0xfc,0x96,0xc3,0xf3,0x0e,0xe0,0x05,0x5c,0x42,0xc2,0x3f,0x18,0x4e,0xd8,0xc6 },
{ 0x8e,0x53,0x3b,0x6f,0xa0,0xbf,0x7b,0x46,0x25,0xbb,0x30,0x66,0x7c,0x01,0xfb,0x60,0x7e,0xf9,0xf8,0xb8,0xa8,0x0f,0xef,0x5b,0x30,0x06,0x28,0x70,0x31,0x87,0xb2,0xa3,0x73,0xeb,0x1d,0xbd,0xe0,0x33,0x18,0x36,0x6d,0x06,0x9f,0x83,0xa6,0xf5,0x90,0x00,0x53,0xc7,0x36,0x33,0xcb,0x04,0x1b,0x21,0xc5,0x5e,0x1a,0x86,0xc1,0xf4,0x00,0xb4 },
{ 0x62,0xd9,0x77,0x9d,0xbe,0xe9,0xb0,0x53,0x40,0x42,0x74,0x2d,0x3a,0xb5,0x4c,0xad,0xc1,0xd2,0x38,0x98,0x0f,0xce,0x97,0xdb,0xb4,0xdd,0x9d,0xc1,0xdb,0x6f,0xb3,0x93,0xad,0x5a,0xcc,0xbd,0x91,0xe9,0xd8,0x24,0x4f,0xf1,0x5d,0x77,0x11,0x67,0xce,0xe0,0xa2,0xed,0x51,0xf6,0xbb,0xe7,0x6a,0x78,0xda,0x54,0x0a,0x6a,0x0f,0x09,0x95,0x7e },
{ 0xf0,0x45,0x4d,0xc6,0x97,0x1a,0xba,0xe7,0xad,0xfb,0x37,0x89,0x99,0x88,0x82,0x65,0xae,0x03,0xaf,0x92,0xde,0x3a,0x0e,0xf1,0x63,0x66,0x8c,0x63,0xe5,0x9b,0x9d,0x5f,0xb5,0xb9,0x3e,0xe3,0x59,0x2e,0x2d,0x1f,0x4e,0x65,0x94,0xe5,0x1f,0x96,0x43,0xe6,0x2a,0x3b,0x21,0xce,0x75,0xb5,0xfa,0x3f,0x47,0xe5,0x9c,0xde,0x0d,0x03,0x4f,0x36 },
{ 0x76,0xa9,0x4d,0x13,0x8a,0x6b,0x41,0x85,0x8b,0x82,0x1c,0x62,0x98,0x36,0x31,0x5f,0xcd,0x28,0x39,0x2e,0xff,0x6c,0xa0,0x38,0xa5,0xeb,0x47,0x87,0xe1,0x27,0x7c,0x6e,0xa9,0x85,0xfe,0x61,0x34,0x1f,0x26,0x0e,0x6c,0xb0,0xa1,0xb5,0xe1,0x1e,0x87,0x20,0x85,0x99,0xa0,0x04,0x0f,0xc7,0x8b,0xaa,0x0e,0x9d,0xdd,0x72,0x4b,0x8c,0x51,0x10 },
{ 0x30,0x1d,0x9e,0x50,0x2d,0xc7,0xe0,0x5d,0xa8,0x5d,0xa0,0x26,0xa7,0xae,0x9a,0xa0,0xfa,0xc9,0xdb,0x7d,0x52,0xa9,0x5b,0x3e,0x3e,0x3f,0x9a,0xa0,0xa1,0xb4,0x5b,0x8b,0x65,0x51,0xb6,0xf6,0xb3,0x06,0x12,0x23,0xe0,0xd2,0x3c,0x02,0x6b,0x01,0x7d,0x72,0x29,0x8d,0x9a,0xe4,0x68,0x87,0xca,0x61,0xd5,0x8d,0xb6,0xae,0xa1,0x7e,0xe2,0x67 },
{ 0x23,0x77,0xc7,0xd6,0x90,0xa2,0x42,0xca,0x6c,0x45,0x07,0x4e,0x8e,0xa5,0xbe,0xef,0xaa,0x55,0x7f,0xd5,0xb6,0x83,0x71,0xd9,0xd1,0x47,0x5b,0xd5,0x2a,0x7e,0xd0,0xe1,0x47,0xa1,0x3f,0xb9,0x84,0x13,0xa4,0x39,0x3f,0x8d,0x90,0xe9,0xbf,0x90,0x1b,0x7e,0x66,0x58,0xa6,0xcd,0xec,0xf4,0x67,0x16,0xe7,0xc0,0x67,0xb1,0xdd,0xb8,0xd2,0xb2 },
{ 0x6a,0x95,0x01,0xd8,0x5b,0xf5,0xdc,0x80,0x2a,0x1f,0x28,0xa0,0x8a,0xcc,0x7d,0x8f,0xdf,0x53,0xc8,0xaf,0x01,0xa7,0xcd,0x38,0x32,0xa2,0x90,0x82,0x5d,0x8b,0xda,0xc1,0xca,0x64,0x0a,0xd1,0x93,0x47,0x37,0x43,0x81,0xc6,0xc6,0xe4,0x4a,0x3c,0x56,0xa3,0xf8,0x46,0x1b,0x5c,0x69,0x7a,0x6f,0x35,0x30,0xaf,0xf5,0x3d,0x5f,0x1e,0xf1,0xa3 },
{ 0x0a,0x06,0x43,0xfb,0x8f,0xcc,0x14,0xde,0xf6,0x7a,0x6a,0x5e,0xb1,0xbf,0x8e,0x91,0x25,0xb3,0x5e,0xdc,0x73,0x38,0xd8,0x16,0xaa,0x41,0x10,0xa6,0xb9,0x0e,0xe7,0x85,0x55,0x34,0x38,0x32,0x4a,0x9e,0x79,0x55,0xc5,0x20,0xda,0xcd,0xa2,0x92,0x0e,0x70,0x0d,0xa1,0x0d,0x00,0xe7,0x01,0x2e,0xd7,0xba,0xc0,0xd1,0x00,0x86,0x1f,0x9c,0xc2 },
{ 0x53,0x4d,0x45,0xdb,0x6b,0xac,0xa8,0xe2,0xd2,0xa5,0xd0,0xa7,0x65,0xf1,0x60,0x13,0xa8,0xd4,0xeb,0x58,0xc6,0xaa,0xad,0x35,0x67,0xce,0xbd,0xfa,0xc4,0x2d,0x62,0x3c,0xfa,0xd6,0x69,0xc8,0x9a,0x2a,0x54,0xe4,0x41,0x54,0x35,0x7f,0x99,0x2c,0xce,0xc8,0xee,0xf0,0x93,0xe0,0xf2,0x3a,0x63,0x1d,0x17,0xfd,0xf6,0x64,0x41,0x9e,0x50,0x0c },
{ 0xae,0x3f,0x7d,0xba,0x0b,0xde,0x8b,0x6a,0xd7,0xce,0x2f,0x8e,0xed,0xe4,0xb7,0x62,0xc5,0x56,0xde,0xa6,0x78,0xf8,0x59,0x62,0x6a,0x9e,0x62,0x35,0xa6,0x74,0xc4,0xf6,0x1c,0x05,0x49,0xfc,0x0a,0x69,0x99,0x5a,0x24,0xb8,0xc2,0x13,0x24,0x9d,0xb9,0xa9,0x79,0x40,0x50,0x0d,0x08,0x5f,0x8a,0x5c,0x1e,0xe0,0x55,0x3e,0x71,0x1f,0x4b,0x53 },
{ 0xf4,0x4b,0x39,0x75,0x9a,0x2e,0x6d,0xb7,0x23,0xa6,0xf9,0x02,0x49,0x97,0x2d,0xfd,0x08,0xe9,0x53,0x80,0xf1,0xfc,0xa4,0x70,0xea,0xcd,0x1d,0x03,0xe5,0xed,0xf2,0x14,0xbe,0xfa,0xfc,0xcf,0x22,0x3c,0xa0,0x65,0xf0,0xa0,0xdb,0x4e,0xea,0x93,0xff,0x06,0xa2,0x11,0x6f,0xca,0x81,0xf7,0xa4,0xa9,0x43,0x6a,0x8d,0x91,0x7a,0x02,0xde,0xde },
{ 0x34,0xa2,0xd4,0xa3,0xb0,0x09,0x16,0x59,0x87,0xff,0xd1,0x52,0x86,0x03,0xed,0x61,0x19,0x0d,0x0b,0x71,0x0d,0x6a,0x56,0x4c,0x2d,0xb2,0xe3,0x5f,0x12,0xd0,0x44,0x1b,0xbe,0xaa,0xed,0x6a,0x53,0xa1,0xe3,0xc2,0x2b,0xca,0x71,0x04,0x6e,0x77,0x7f,0xc0,0xe7,0xd7,0x66,0xb9,0xde,0xdd,0xd8,0x1d,0xb4,0x24,0xe7,0x84,0x5e,0x93,0xb1,0x46 },
{ 0x55,0xa0,0x2d,0x99,0x88,0xe3,0xdd,0xd9,0x4a,0xea,0x49,0x7e,0x79,0x9d,0xd9,0x42,0x4e,0x89,0xe1,0x9e,0x2f,0xab,0x42,0x3b,0x0a,0x5d,0xc0,0x9b,0x21,0x93,0x29,0xb6,0x4a,0x62,0x9c,0xff,0xe2,0x78,0x69,0x3b,0x94,0x03,0x06,0x21,0x70,0x00,0xfb,0x3d,0x00,0x7d,0xfa,0x0f,0x83,0xaa,0x49,0xd8,0xdf,0xc8,0xff,0x38,0x38,0x6e,0x44,0x04 },
{ 0x04,0xc4,0x90,0x52,0x8b,0xe7,0x59,0xe4,0xe8,0x89,0x7b,0xbd,0x81,0x8d,0x45,0x9a,0xa4,0x16,0xb9,0xae,0x0b,0x3c,0x5d,0xfc,0x34,0x69,0xce,0xa3,0x9f,0x3f,0x98,0xde,0x30,0xe5,0x0b,0x46,0x40,0x5c,0xc7,0x4f,0xad,0xe8,0x4c,0x66,0x24,0x2a,0x81,0x07,0x47,0x1d,0x9d,0x7b,0x4a,0x46,0x05,0xee,0xeb,0xd9,0x49,0x43,0x4e,0x8d,0x6e,0x96 },
{ 0x93,0xc7,0x7b,0x96,0x9f,0xe0,0x47,0x82,0xbb,0x59,0xe7,0x56,0xf4,0x8a,0x83,0x99,0x82,0x32,0xb7,0x04,0x26,0x29,0xa6,0x47,0xd4,0xc1,0x39,0x2c,0xa2,0x72,0xea,0x2a,0x60,0x19,0x50,0x2b,0x87,0x6a,0x30,0xd6,0x04,0xa6,0x5e,0x31,0x46,0xcf,0x01,0x52,0xf6,0xff,0x63,0x77,0x6a,0x2f,0xee,0x83,0x72,0x51,0xf9,0xd8,0x96,0xbb,0x5f,0xc9 },
{ 0x16,0x94,0x9b,0x72,0x87,0xd4,0xf4,0x81,0x89,0x72,0x99,0xb9,0xeb,0x6f,0xe8,0x0c,0xcd,0xc5,0x84,0x9a,0xe1,0xd5,0x27,0xe2,0x80,0xe7,0x6b,0xb9,0x8e,0x61,0xca,0x07,0xe7,0xa4,0x14,0x6d,0x77,0x0e,0xde,0xde,0xbd,0xf9,0x97,0xb7,0x5b,0x60,0x12,0x09,0x4d,0x2d,0x6a,0xc6,0xfe,0xdf,0x98,0x3a,0xa0,0x9c,0x2b,0xe7,0xa0,0x42,0x04,0x27 },
{ 0x1e,0x87,0xec,0xce,0x88,0xa0,0xbc,0x36,0xfd,0x3a,0xd8,0x36,0xc5,0xbe,0x29,0xb1,0x2c,0x17,0x9e,0x23,0x4f,0xd1,0x9a,0xc4,0x67,0x7d,0xf7,0xb1,0x2d,0x0a,0x9c,0x6a,0x67,0x28,0x56,0x39,0x9d,0xe3,0x9c,0x32,0x5e,0x7c,0x46,0x44,0x3b,0xed,0xa6,0x46,0xe0,0x28,0x12,0x1f,0x47,0x82,0x5a,0x2a,0x87,0x8b,0x57,0x75,0x99,0x08,0x7a,0x17 },
{ 0xb0,0x1a,0x67,0xf7,0x16,0x47,0x5f,0x72,0x88,0x6a,0x8f,0x47,0x49,0xb8,0x61,0x76,0x28,0x1b,0x19,0x5f,0xf4,0x6f,0x92,0x5a,0xe1,0x40,0x4a,0x86,0x1a,0xbe,0x45,0xc0,0x7c,0x52,0x1b,0xbf,0x5a,0x39,0x56,0xe2,0xac,0xd5,0x6b,0x13,0x16,0x4e,0xf9,0x94,0x72,0xfc,0x67,0x63,0x41,0xb6,0x2c,0x7f,0xc7,0x2f,0x0d,0xbe,0x00,0x90,0x10,0x6c },
{ 0xfa,0x3a,0xdb,0x43,0xa7,0xbc,0x69,0x5c,0xc8,0xa1,0x23,0x87,0x07,0x74,0x55,0x8e,0x93,0x20,0xdd,0x79,0x5f,0x5f,0xaf,0x11,0x58,0xfa,0x39,0x01,0xf9,0x92,0x58,0xd5,0xe3,0xa8,0xd6,0xe0,0xd0,0x40,0x8b,0xc1,0xce,0x8c,0x24,0x04,0x9a,0x41,0xd2,0xff,0x23,0x77,0x40,0x98,0x49,0x17,0x15,0xc4,0xd5,0xd4,0xb4,0x6d,0x1c,0x88,0x25,0x96 },
{ 0xe7,0x16,0xae,0xd2,0xcf,0x06,0x9e,0x4d,0x99,0x77,0x89,0x67,0x2e,0x6d,0x6b,0xd2,0x50,0x86,0x76,0xf2,0xf4,0xfd,0x0a,0x64,0xf0,0x77,0xe8,0xda,0xa2,0x45,0x57,0x3f,0x35,0x36,0x63,0xe6,0x94,0xfc,0x72,0xab,0x59,0x12,0xb0,0x66,0x87,0xb9,0xa8,0x51,0xd1,0x3d,0x0d,0xf2,0xfa,0x07,0xc9,0xb3,0x50,0x5f,0xc2,0x6b,0x46,0x92,0x18,0xd1 },
{ 0x9a,0x80,0x26,0xa6,0x3b,0xa7,0xe5,0x3b,0x9a,0x25,0x19,0x5c,0x4f,0x6b,0x5b,0x25,0x8c,0x36,0x57,0xbf,0x2b,0x15,0xdd,0xa2,0x14,0x23,0x18,0x4b,0xa6,0x4d,0xb2,0x8a,0xb8,0x1f,0xf4,0x12,0xf4,0xed,0x1f,0xc2,0x9f,0x72,0x80,0x14,0x7b,0xfa,0x12,0x0a,0xd3,0x5b,0x5c,0x32,0x2b,0xab,0x14,0xac,0x2c,0x1d,0xd3,0xfd,0x0b,0x37,0xe6,0x7f },
{ 0x5a,0x57,0xc3,0xe3,0x54,0x82,0x07,0xef,0x2f,0x45,0x41,0xcf,0x25,0xb5,0xe8,0x1b,0x6b,0x2e,0x5d,0x2f,0xce,0xc4,0x51,0xf4,0xb5,0x11,0x3c,0x2b,0x35,0x71,0x74,0xb3,0x07,0x7c,0x7b,0x30,0x3e,0x69,0x22,0x46,0x01,0xb1,0x16,0x57,0x29,0xf3,0x44,0x33,0x28,0x88,0x67,0x00,0x13,0x4b,0xb9,0x28,0x88,0xcf,0x59,0x59,0x38,0x34,0x37,0xe3 },
{ 0x5f,0x41,0xdc,0x4c,0xd2,0x21,0x67,0x53,0xdf,0xc9,0x03,0xd3,0xd1,0xc8,0x08,0x81,0xed,0x07,0x6e,0xcd,0xcc,0xe9,0xa0,0xbf,0xc9,0x77,0xdc,0x03,0x93,0x18,0xdb,0x9b,0x6b,0x7c,0x44,0x96,0xa4,0x89,0x17,0xdf,0x92,0x8c,0x70,0x13,0x3d,0x4d,0xfa,0x04,0x9c,0x7e,0xbd,0x0a,0x49,0x46,0x85,0x0f,0x08,0x9d,0xc1,0x45,0xd9,0xc0,0x0a,0x2c },
{ 0x5c,0xe9,0x65,0x05,0xee,0xf7,0x20,0x8c,0xd1,0x09,0x20,0xad,0xec,0xfb,0x86,0xad,0x1a,0x87,0xa9,0x74,0x79,0x7e,0x4f,0xc5,0x89,0x37,0xf0,0x0f,0xac,0xb0,0x06,0xff,0xd1,0x6b,0x6e,0xbd,0x38,0x1f,0x5a,0xd5,0xec,0x56,0xd1,0xf2,0x2f,0xde,0x7b,0xc3,0x66,0x9d,0x20,0xbe,0xbd,0x95,0x5c,0x2b,0x81,0x8d,0xcd,0xa1,0x07,0x15,0x26,0x13 },
{ 0x7a,0xdf,0xd6,0x22,0xe4,0xac,0xb8,0xff,0x4b,0x95,0xf6,0xad,0x27,0xcb,0x18,0x50,0x75,0x5b,0x8d,0xa5,0xd8,0x23,0x0a,0xea,0xe5,0xe5,0x6f,0x9f,0x80,0xac,0x5a,0x3a,0xfc,0xf8,0x0e,0x03,0xd5,0x54,0xdb,0xf5,0x04,0x83,0xa9,0x30,0x75,0x9c,0xf6,0xf4,0xa4,0xc0,0xb9,0xf4,0xa2,0x2f,0x97,0x8f,0x59,0x2e,0x09,0x5d,0x61,0x99,0x51,0x59 },
{ 0x71,0xa5,0xbd,0x27,0xc6,0x25,0xca,0x1b,0x4b,0x2a,0x3a,0x46,0x35,0xb1,0x04,0x33,0x63,0xa5,0xb8,0x31,0x1d,0x31,0xa9,0x19,0x15,0x26,0x1b,0x05,0xd0,0xb7,0x9f,0xbc,0xc5,0xbf,0x52,0x4d,0x06,0x67,0x41,0xff,0xb3,0x94,0x52,0xca,0x1a,0x02,0xf2,0xef,0xc7,0x6b,0x60,0x51,0xeb,0xaa,0x32,0xd0,0xc2,0xe3,0x7c,0xcc,0x8f,0x27,0x7f,0x6b },
{ 0x3d,0x13,0xf6,0x58,0xca,0x8d,0xae,0x4f,0x8b,0x44,0x07,0x54,0x6c,0x22,0xd9,0x4d,0xb9,0xf2,0x2d,0x82,0xb3,0x63,0xea,0x0d,0x5b,0xf2,0x3a,0xdf,0xb3,0x42,0x09,0x74,0x01,0x37,0x67,0x0c,0x0d,0xf9,0xf7,0x8d,0x5c,0xd8,0x6d,0xac,0x08,0x18,0x12,0x81,0x03,0xe8,0x0b,0x16,0xa1,0xe5,0x28,0x3d,0xcd,0x8a,0xe3,0x0a,0x23,0xea,0xab,0xf2 },
{ 0xf2,0x49,0x10,0x4d,0x0e,0x6f,0x8f,0x29,0xe6,0x01,0x62,0x77,0x78,0x0c,0xda,0x84,0xdc,0x84,0xb8,0x3b,0xc3,0xd8,0x99,0xdf,0xb7,0x36,0xca,0x08,0x31,0xfb,0xe8,0xcf,0xb5,0x7e,0x12,0xfc,0xdb,0x03,0x1f,0x59,0xca,0xb8,0x1b,0x1c,0x6b,0x1e,0x1c,0x07,0xe4,0x51,0x2e,0x52,0xce,0x83,0x2f,0x1a,0x0c,0xed,0xef,0xff,0x8b,0x43,0x40,0xe9 },
{ 0xa0,0x18,0x36,0x6f,0x4e,0x91,0xe9,0x0d,0x8e,0x5c,0x64,0x33,0x40,0xe5,0x86,0xb4,0x71,0x4a,0xb7,0x49,0xc9,0x05,0x2a,0x05,0x03,0xe8,0x46,0x5c,0x6e,0xad,0xe3,0xc4,0xe2,0xbb,0xec,0x17,0x14,0x11,0x0b,0x16,0x7c,0x6c,0xe5,0x78,0x34,0x9d,0x83,0x69,0xd5,0xf7,0x28,0x4e,0x44,0x61,0x4f,0x37,0xf4,0x5c,0x42,0x02,0x6b,0x26,0xe8,0xd0 },
{ 0x07,0x89,0xc1,0x44,0xc0,0xa6,0xba,0xf8,0xf1,0xcf,0x8c,0xd7,0x92,0x6e,0x91,0x5c,0x90,0x55,0x44,0x63,0xde,0x38,0xf1,0x3f,0x25,0xa0,0x10,0xc2,0x43,0x26,0x5f,0x34,0xc1,0x4b,0x56,0x16,0x69,0xdd,0x64,0x8f,0xb6,0x53,0xa4,0x70,0x8d,0xb1,0xac,0x4a,0xec,0xdf,0xf4,0x78,0x45,0xca,0x3d,0x32,0xa2,0x08,0x35,0x49,0x7c,0xf9,0xea,0x9e },
{ 0xcd,0x7c,0xe6,0x5d,0x70,0x7d,0xa2,0xa6,0x9e,0xa2,0x54,0x87,0xea,0x25,0x4c,0x45,0xeb,0x7d,0x5a,0xdf,0xfe,0x1c,0xe3,0xee,0xfe,0xbc,0xce,0xe6,0x47,0xa9,0x11,0x2d,0x85,0xe0,0x4a,0x4b,0x4c,0x96,0x6f,0x97,0x89,0xb9,0x01,0x6a,0xa5,0xee,0x67,0x08,0xa1,0x90,0xaa,0x49,0x8b,0xee,0x60,0xa5,0xff,0xba,0xbe,0x0d,0x3a,0x92,0xb3,0xaf },
{ 0xc3,0xac,0x84,0xa8,0xa4,0xfb,0x5a,0x29,0xe4,0xf6,0x26,0xcc,0xd8,0x9f,0x99,0x1f,0x81,0xd1,0x9d,0x96,0x08,0x5c,0x64,0x0d,0x78,0x56,0x1d,0x26,0x08,0x1f,0xc3,0x2f,0x94,0xf3,0x53,0xb4,0xde,0xa9,0x8f,0x3a,0x13,0x8d,0xca,0x09,0x2c,0x1f,0xa8,0xbf,0xde,0x25,0x6d,0x03,0xae,0x01,0x13,0xdf,0x96,0xcf,0x08,0x02,0x4e,0x02,0x94,0x37 },
{ 0x0f,0x5f,0x0a,0xea,0x09,0x96,0x34,0x71,0x8e,0x67,0xd4,0xc7,0x37,0x05,0xae,0x59,0xe8,0xaf,0x0b,0xc3,0x6c,0x99,0x8b,0xef,0x6c,0x88,0xad,0x96,0xc3,0x21,0x2f,0x1a,0xf8,0xa8,0xb2,0xb7,0xc8,0x59,0x3c,0x95,0x58,0x86,0xaa,0xdd,0x4b,0xa1,0x6b,0x78,0x4f,0x5e,0xd4,0x0d,0xde,0x29,0xaf,0x7c,0x75,0x5d,0x7b,0x1e,0x77,0x12,0xb0,0x9a },
{ 0x5a,0x26,0x99,0xf3,0x00,0x62,0x20,0x27,0x2d,0x05,0x28,0x57,0x80,0x45,0x77,0xd0,0x28,0x73,0xdf,0x88,0x2c,0x6e,0xb1,0x66,0x67,0xf0,0xaf,0xee,0x94,0x78,0x14,0xc7,0xb4,0x1d,0x6a,0x99,0xf4,0xe5,0x4c,0x0f,0xf5,0xd6,0xb0,0xe5,0x53,0xae,0x46,0xe8,0x43,0xb4,0xa5,0x58,0x12,0xd4,0x33,0x76,0xa4,0x98,0x83,0x81,0x14,0x9d,0x39,0xae },
{ 0x47,0x1a,0xd0,0xa8,0xd5,0x7f,0x59,0x39,0xf1,0x5f,0x0d,0x87,0x0a,0xe2,0x5c,0x90,0x91,0x42,0x8b,0xf4,0xe1,0xe6,0xe9,0x17,0x24,0x35,0x15,0x8c,0xfc,0x44,0x71,0xbb,0x22,0x34,0xca,0x62,0x77,0x8e,0x8e,0x39,0x2a,0x36,0x7a,0xb4,0x80,0x94,0xd1,0x38,0xb0,0xd7,0xe9,0xff,0x7f,0x23,0x98,0x2c,0x45,0x43,0x18,0xfa,0x49,0x69,0x3a,0x0c },
{ 0xa2,0xac,0x43,0x24,0x36,0x92,0x66,0xe0,0x40,0x58,0x8a,0xa2,0xf8,0x48,0x8b,0xf8,0xcf,0x9e,0xda,0xa2,0x21,0xac,0xad,0x39,0xb6,0x65,0xa1,0x4f,0x67,0x9f,0xf6,0x7f,0xa6,0x03,0xa2,0x96,0x23,0xa4,0x6f,0x46,0x3d,0x10,0xd1,0x89,0x09,0xb2,0x69,0xd0,0x3f,0x16,0x46,0x14,0x56,0x52,0x5d,0xbb,0x38,0x3a,0xae,0xb5,0x5c,0x45,0x71,0x37 },
{ 0x0e,0xc7,0x38,0x85,0x14,0x1f,0xe5,0x4f,0xfe,0xf6,0xa0,0xb5,0x70,0xcd,0x98,0xd5,0x30,0xe4,0x31,0xc1,0xaa,0xd5,0xfc,0xfe,0x8f,0x7d,0xce,0xcb,0x7d,0x96,0xdf,0xf1,0xd6,0x22,0x4f,0x4e,0x87,0xae,0x87,0x5d,0x91,0xac,0xc4,0xef,0x58,0x06,0x52,0x51,0x1d,0x52,0x64,0xce,0x87,0xed,0x78,0xaa,0x9e,0xc8,0x41,0xac,0x7c,0x7b,0x55,0x2c },
{ 0xb7,0x94,0x89,0x09,0x0b,0xf0,0x70,0x02,0xa3,0x5f,0x10,0xe8,0x86,0xf1,0x02,0x10,0xe3,0xc4,0x76,0x02,0xde,0x10,0x36,0x4d,0x76,0xe7,0x6f,0x8c,0x8a,0x08,0x55,0x70,0xfb,0xfd,0xa8,0x23,0xd3,0xb1,0x46,0x6d,0x2a,0x09,0x37,0x31,0x69,0x44,0xab,0x98,0x16,0x41,0x66,0x46,0x2e,0x08,0x29,0x18,0xfc,0x96,0x0b,0x3a,0x2f,0x56,0x99,0xda },
{ 0x47,0x77,0x78,0x36,0x4e,0x6e,0x1c,0xde,0x05,0x9a,0x0e,0x25,0x32,0xc8,0xf0,0xc6,0x9b,0xa1,0x2b,0x31,0x12,0xfb,0x6d,0xcf,0xb1,0x83,0xb5,0x39,0x96,0x60,0xb7,0xc9,0x2d,0xd8,0x9d,0x00,0xb8,0x38,0x9e,0x31,0x73,0x73,0xef,0xb6,0xa7,0xc8,0x9e,0x8a,0x5e,0x06,0x04,0xc1,0xf1,0x42,0xeb,0xcf,0x5c,0x20,0x5f,0xa3,0x99,0x18,0xc3,0xdf },
{ 0x0e,0x2b,0xdd,0x84,0x84,0xd4,0xb9,0x41,0x18,0x20,0x8d,0xad,0xd4,0x08,0xc1,0xfc,0xcf,0xff,0x83,0x3b,0x23,0x5b,0x3e,0xd5,0x50,0x9d,0x38,0x60,0xca,0x94,0x34,0xea,0x41,0x99,0x5a,0x2d,0x9d,0xed,0xb4,0x02,0x7f,0xdc,0xcc,0x3a,0x62,0x06,0xb7,0xcc,0xe8,0x13,0xe0,0x31,0x84,0xf7,0x2e,0x21,0x95,0xd3,0xdd,0xf8,0xca,0xeb,0xb2,0x7c },
{ 0x35,0x3d,0x45,0x8d,0x34,0x91,0xb5,0xa8,0xc7,0x3d,0x98,0x90,0x17,0xe1,0x4d,0xd2,0x2e,0xc3,0x8f,0xaf,0x35,0xf4,0x5d,0x26,0x0f,0xd8,0x01,0x3b,0x26,0xd6,0x9d,0x8e,0x9c,0x7d,0x37,0xbf,0x4f,0x5b,0xde,0x24,0x31,0x30,0xfd,0xe4,0x0c,0x04,0x0a,0x8a,0x82,0x5d,0xfc,0x12,0xfb,0x71,0xa9,0xa8,0x84,0x2b,0x9d,0x00,0x20,0xf3,0x2b,0x82 },
{ 0x76,0x1d,0xce,0x00,0x36,0xd8,0xe9,0x6b,0xef,0xae,0x3a,0xee,0x94,0xf0,0xc2,0x93,0x5f,0xaa,0xcc,0x42,0x35,0xeb,0x70,0x8e,0x6e,0x13,0x6e,0x6b,0x55,0x76,0x0f,0x6a,0x10,0x3e,0x8b,0x5a,0x52,0x31,0xc4,0xa1,0x9e,0xe1,0xa8,0x77,0x43,0xf6,0xec,0x48,0x1b,0x21,0xc7,0x55,0xd2,0xe3,0xff,0xda,0x40,0xab,0x1e,0x56,0xc1,0x3d,0x05,0x24 },
{ 0xdd,0xad,0x6b,0xf0,0x17,0x2e,0x22,0x40,0xd5,0x71,0x80,0xff,0x0b,0x1b,0xa7,0x6e,0x28,0xe6,0xbf,0x03,0x5d,0xc6,0x17,0xcc,0xaf,0x0d,0x4e,0x79,0xe3,0x30,0xc0,0x98,0x0b,0x13,0x71,0xe6,0x93,0x5a,0x21,0x89,0x75,0x30,0xa4,0x73,0x61,0x25,0xad,0xda,0xfa,0x33,0x3b,0xad,0x2d,0xb9,0xd1,0x40,0x3e,0x5a,0x99,0x4d,0x63,0xb6,0x7b,0x58 },
{ 0x5f,0x63,0x9b,0x9c,0x48,0x47,0x28,0xe1,0x9a,0x10,0xac,0x26,0x39,0x7d,0x0f,0x6b,0xf7,0x94,0xd1,0xf0,0xcd,0xe2,0x3b,0x6c,0xd3,0x3d,0xd4,0x7d,0x27,0x0c,0x19,0xa5,0xf6,0x30,0x1b,0xd9,0xb4,0x88,0xbf,0x10,0x0e,0x98,0xbc,0x67,0xeb,0x21,0x19,0xce,0xe2,0xbb,0xc7,0xd4,0x16,0xe7,0x41,0x0b,0x07,0xed,0x90,0xce,0x6b,0xb4,0x43,0x99 },
{ 0x35,0xb2,0x4f,0xc7,0x25,0x6e,0x66,0x9a,0x57,0x5c,0x35,0x84,0xa6,0x19,0xce,0xdb,0xee,0xda,0x35,0xcc,0xc0,0x50,0x20,0x69,0x86,0x30,0xc9,0xad,0x41,0x29,0x3c,0x8a,0x78,0xd5,0x53,0x78,0x3e,0x49,0xa8,0xbc,0x5a,0xa0,0x47,0xe7,0x71,0xbe,0xf4,0xcd,0x77,0x36,0x65,0x53,0x09,0x86,0x01,0xe4,0x37,0xcc,0x0e,0xe5,0x7b,0xe8,0x59,0x32 },
{ 0xf8,0xf5,0xdc,0xcf,0x4c,0x6a,0x93,0xd7,0xa4,0xa5,0x4d,0xaa,0xfa,0xa3,0x44,0x9a,0xa8,0x7a,0x80,0x69,0x87,0x54,0x05,0xd4,0x37,0x25,0xc5,0xdc,0xe3,0x92,0xd8,0x05,0xe5,0x81,0x76,0xcf,0x66,0xd6,0x30,0x54,0x38,0x9d,0x3e,0x33,0x64,0x61,0x32,0x73,0x51,0xf3,0xda,0x64,0xa5,0x21,0x43,0xba,0x02,0x66,0x19,0x51,0x6c,0xda,0x02,0xfa },
{ 0xc7,0x9a,0x67,0xfd,0x14,0x48,0xb5,0x9f,0xf7,0xbf,0x05,0x10,0x56,0x4b,0xe9,0xb2,0xe0,0xaf,0x32,0x53,0x17,0xe4,0x5b,0x9c,0xdb,0xe0,0x8f,0x51,0xc9,0x1f,0x04,0x64,0xc3,0xd5,0xb5,0xe4,0x63,0x1f,0xc7,0xe2,0x27,0x33,0x72,0x09,0xf5,0xfa,0x44,0x96,0x0e,0x7b,0x84,0x61,0x6a,0xf4,0xa3,0xaf,0xab,0xfc,0x26,0x72,0xd6,0x62,0x01,0xa9 },
{ 0xa1,0x18,0xb0,0xf2,0x4b,0xc4,0x5d,0x9c,0x9b,0x31,0x7f,0xe2,0x48,0xaf,0x58,0x1f,0xfd,0x42,0xd8,0x84,0x78,0x18,0x2a,0x90,0xac,0xa7,0xf0,0xb2,0xac,0x51,0xd8,0xa6,0x69,0x8b,0x53,0xfd,0x0f,0x7e,0x17,0x98,0xdf,0x7b,0x25,0xae,0x09,0x46,0x4d,0x6a,0x81,0x92,0x24,0x08,0xe3,0x76,0x96,0x7d,0x86,0x21,0xb5,0x5d,0x5c,0x87,0xb0,0x30 },
{ 0xaf,0xb1,0xa8,0x80,0xf5,0xdb,0x11,0xb1,0xb0,0xc1,0x94,0xaf,0x14,0xe7,0x86,0xe3,0xe3,0xd3,0x31,0xd4,0xad,0x86,0x96,0x59,0xcb,0xbc,0x16,0xf4,0x0e,0xa2,0x51,0x24,0xa5,0xbb,0x65,0xcc,0x5e,0x72,0x0f,0x79,0x44,0xfb,0x40,0xcd,0x39,0xf8,0x88,0xfe,0x65,0x93,0xe2,0x8e,0xd9,0x4a,0x15,0xfc,0xc4,0xf0,0x0d,0xad,0xda,0x30,0xf5,0x21 },
{ 0xfc,0xc8,0xca,0x2e,0x4e,0x50,0x2d,0x2e,0xde,0x9e,0xc2,0x95,0x66,0xd7,0x15,0xea,0x7b,0xd2,0x4b,0xe7,0x88,0x82,0x86,0x75,0xfa,0x42,0xe8,0x72,0x9c,0xf5,0x25,0x0e,0x30,0xb5,0x7b,0xcc,0xee,0xf8,0xbd,0x04,0xf6,0xb9,0x88,0x0a,0x8b,0x34,0xda,0x5c,0x90,0x46,0xbc,0x05,0xc0,0x3b,0x21,0x20,0x60,0x2e,0x0f,0xbf,0x73,0x0f,0xd4,0xa2 },
{ 0xdc,0x84,0x7a,0x3e,0x4c,0x8d,0xd4,0xfd,0x5e,0xd9,0x9a,0xb2,0xf6,0x66,0x73,0x99,0xe9,0x65,0x18,0x75,0xbc,0x62,0x29,0xed,0x59,0x8d,0x2f,0x5a,0x28,0x58,0xad,0xf7,0xcf,0x3b,0xb2,0x62,0x12,0x51,0xee,0x08,0x50,0xa4,0x2c,0x58,0xff,0x7c,0x35,0x33,0x62,0xac,0x59,0xa2,0x73,0xe5,0x60,0xcf,0x48,0xc2,0x91,0x55,0x37,0xf0,0x50,0x79 },
{ 0x24,0xbb,0xe0,0x5b,0xfa,0x35,0xdd,0xc0,0xee,0x9a,0x4b,0x43,0xcf,0x2e,0x4e,0x3a,0xf3,0x49,0xf6,0x75,0xd2,0xaf,0x3c,0x3d,0x23,0x18,0xaa,0x04,0x89,0xa9,0x5e,0x03,0xd4,0x94,0x05,0xee,0x09,0x0a,0x22,0xcf,0x17,0x18,0x2d,0x4d,0xd2,0x76,0x0f,0xaa,0xd4,0x0a,0xa5,0x2e,0x37,0x5a,0xa1,0x49,0x87,0xdf,0x45,0xed,0x8d,0x79,0x3c,0x4d },
{ 0xbf,0xb4,0xad,0x57,0x33,0x8f,0xa3,0xb4,0xb1,0xbb,0xde,0xfb,0xe9,0x2d,0xf2,0xd3,0xd1,0x0b,0x14,0x0a,0x45,0x0b,0xc4,0x26,0xcb,0x16,0x35,0x5d,0x54,0x4b,0x99,0xf6,0xc6,0xee,0x62,0xee,0x72,0xfb,0x46,0x83,0x7f,0xde,0x1e,0x86,0x1a,0x10,0x43,0x1c,0x73,0x5d,0xe5,0xd8,0xa7,0x86,0x68,0xb4,0x6a,0x25,0x2f,0x19,0xe0,0xf6,0x1f,0xbc },
{ 0x6d,0x28,0xb6,0xbf,0xfd,0x4d,0xaf,0x31,0x3f,0x85,0xea,0xad,0x8e,0x4d,0x71,0xb9,0x1c,0xa6,0x31,0x16,0x1f,0x99,0x21,0x8f,0x98,0x4a,0x23,0x17,0x6f,0x92,0x2d,0xbd,0xaf,0x39,0xd9,0x05,0x14,0x1d,0xd2,0xfa,0x40,0xfb,0xe1,0xa6,0x1c,0xcb,0x4a,0x1c,0x4c,0x24,0xe9,0xf0,0xb8,0x4d,0xa2,0x99,0x44,0xab,0xff,0x02,0xa0,0xef,0x3c,0xff },
{ 0x1f,0x6e,0xe8,0x0f,0x63,0xee,0xe5,0x16,0xad,0xac,0x99,0x5a,0xdf,0x1a,0x39,0xa3,0x4b,0xe4,0x02,0x96,0xda,0x08,0x84,0x65,0x5a,0x5f,0x03,0x04,0xd1,0x32,0x1a,0x1c,0xe2,0x54,0xb5,0x51,0xb8,0x6d,0xe4,0xc2,0x45,0xd7,0x89,0xd2,0x07,0x5d,0x74,0x86,0x5f,0x7d,0x6f,0x01,0xac,0x78,0x6a,0xb8,0x2d,0x28,0x50,0x3a,0x7f,0xf4,0x72,0x25 },
{ 0xd1,0x31,0xe6,0x61,0xdd,0x93,0xd8,0x15,0xe6,0x13,0x94,0x7f,0x2d,0x30,0x2f,0x2f,0x50,0xea,0x58,0x5c,0xaf,0xb7,0x52,0x50,0x97,0x89,0x40,0x4f,0xc4,0xfb,0x24,0x0a,0x34,0x34,0x2c,0x84,0x61,0xa9,0x5d,0xa2,0xe7,0x9b,0x4c,0x37,0xf4,0x8f,0x4f,0xd4,0x74,0x23,0xd4,0xeb,0xcd,0xea,0xcd,0xf4,0x22,0xf6,0x0e,0x14,0x02,0x50,0x1a,0x57 },
{ 0x32,0x69,0xea,0xd1,0x4c,0x94,0xc6,0x68,0xc8,0xcd,0x2e,0x27,0x2b,0x24,0xbc,0x76,0xe4,0xd8,0x2b,0x88,0x0e,0x7b,0x7d,0xa3,0xc5,0x2d,0x33,0xc0,0x74,0x8f,0x61,0x67,0xfe,0xe7,0x69,0x1b,0x00,0x26,0x4a,0x6e,0x53,0x80,0x2d,0xa3,0x8c,0x1b,0x88,0xc8,0xa3,0xf9,0x40,0x61,0x9f,0x78,0xba,0x7c,0xa5,0x98,0x41,0x81,0x89,0x61,0x87,0x54 },
{ 0xaf,0xff,0x5a,0xf9,0x2c,0x80,0x76,0x15,0x71,0x2e,0x02,0x81,0x0b,0xe2,0x46,0xa2,0xd0,0x43,0x45,0x84,0x47,0x7f,0xe2,0xe8,0x67,0xe5,0xfd,0xd7,0xb8,0x08,0x7d,0xde,0x65,0x9f,0x6e,0xa2,0x2c,0xd0,0x60,0xc2,0x09,0x9a,0x74,0x7e,0xe1,0x0a,0x2a,0x22,0xaa,0xcf,0x17,0x52,0x92,0xdd,0xab,0xe7,0x17,0x83,0x46,0xac,0xd4,0x4e,0xb3,0xa2 },
{ 0xc7,0xf3,0x13,0x1f,0x91,0x55,0x8b,0xd6,0x08,0xb5,0x87,0xd1,0x89,0x59,0xde,0x04,0xfe,0x75,0xdf,0x51,0xab,0x8d,0x2d,0xf0,0x68,0xc5,0xc0,0x81,0x31,0x4c,0x77,0xf3,0x97,0x34,0xf5,0xd8,0xaa,0x3e,0x2d,0xb7,0xb3,0x5c,0x45,0x93,0x19,0x5a,0x4d,0x32,0x0e,0x72,0xc1,0xb6,0x1f,0xb7,0xc8,0xed,0x48,0x52,0xbd,0x48,0x32,0x93,0x74,0x5a },
{ 0x84,0x37,0xa7,0xca,0xb8,0xf3,0xe6,0x7c,0x05,0xb8,0x00,0x0a,0x73,0x85,0x3a,0x82,0xe8,0x9d,0xfd,0xb3,0x68,0xbc,0x66,0x69,0x99,0xfb,0x69,0xa1,0x00,0x37,0x1f,0x53,0x96,0x8f,0xd7,0x58,0x82,0x81,0x2a,0x40,0x73,0x54,0x83,0xf4,0x38,0x19,0xbb,0x8e,0x10,0xe1,0x24,0xfe,0xdb,0xfb,0xe2,0x59,0x24,0x88,0x72,0xd7,0x87,0x9c,0xbb,0xab },
{ 0xa2,0xf3,0x27,0xc3,0x02,0x4e,0x58,0xb9,0xb4,0xa6,0xf8,0x03,0x07,0x6a,0x2c,0x1c,0xef,0x2b,0x74,0x00,0xbd,0x9d,0x37,0x42,0x96,0xb0,0x3e,0x0b,0x8c,0xf9,0xf4,0xe5,0x8e,0x72,0xda,0x83,0x61,0xa1,0x97,0xd6,0x32,0x7a,0xa3,0x32,0x75,0x67,0x9a,0x04,0x11,0xfc,0xa6,0xef,0x21,0x42,0x06,0x65,0x04,0x42,0x5a,0xe6,0xe3,0x49,0x05,0xbc },
{ 0x61,0x84,0x66,0xbc,0xb7,0x39,0x58,0x5c,0x20,0xc4,0x4b,0x7f,0xc9,0x62,0xd8,0x67,0x1d,0x94,0x86,0x70,0x54,0x85,0x93,0x61,0xa1,0x82,0x93,0xff,0xe4,0xa7,0x20,0xe1,0x34,0x58,0x7f,0x80,0x98,0x8d,0xb9,0xbd,0x79,0x8c,0xb5,0xda,0x17,0x8e,0xc5,0x12,0xdb,0x9a,0xec,0x2f,0xe3,0x5f,0x85,0xe0,0x67,0x8b,0x4e,0x91,0xf7,0xc8,0x73,0xb4 },
{ 0x7f,0xe3,0x6b,0x40,0xaf,0x22,0xaf,0x89,0x21,0x65,0x6b,0x32,0x26,0x2c,0x71,0xda,0x1a,0xb9,0x19,0x36,0x5c,0x65,0xdf,0xb6,0x3a,0x5a,0x9e,0x22,0x18,0x5a,0x59,0x43,0xe6,0x97,0xd4,0x58,0x25,0xb6,0x36,0x24,0x9f,0x09,0xf4,0x04,0x07,0xdc,0xa6,0xf1,0x74,0xb3,0xd5,0x86,0x7b,0x8a,0xf2,0x12,0xd5,0x0d,0x15,0x2c,0x69,0x9c,0xa1,0x01 },
{ 0x5a,0x92,0x07,0xa6,0xfe,0x12,0x40,0x3e,0xa7,0xf4,0x72,0x22,0x0d,0xe9,0x0c,0xf6,0x31,0x88,0x0e,0xe5,0x38,0x4d,0xa9,0x00,0x1a,0xa9,0x47,0xea,0x5e,0x9f,0x3d,0xa7,0x4a,0x35,0x2d,0x1b,0x24,0xf0,0x6e,0x4b,0x01,0x46,0x78,0x9a,0xaf,0x4f,0xf2,0xcb,0x46,0xfb,0xdb,0x53,0x0e,0x82,0xe9,0xad,0xc9,0x2f,0xe3,0x31,0x26,0x74,0x8f,0x8e },
{ 0x61,0x77,0x94,0x71,0x47,0x86,0x43,0x43,0x65,0x54,0xca,0xa3,0x43,0xad,0xfa,0x5a,0xa1,0xdd,0x10,0xb8,0xa6,0x0e,0x47,0xc0,0x33,0x6d,0xd1,0xe7,0xc6,0x82,0x78,0xc2,0x4e,0xce,0xe7,0xd5,0xa5,0x68,0x79,0x1f,0x03,0xbf,0xf0,0x05,0xc8,0x98,0x64,0x73,0x32,0x79,0x69,0x99,0x23,0x17,0xa1,0xa6,0x9d,0x03,0xec,0xb2,0xef,0xab,0xd2,0xcf },
{ 0xf8,0xf9,0x97,0x56,0x8a,0x6f,0xd0,0x32,0x5c,0x9e,0x9f,0x9c,0x3f,0xb3,0xaf,0x23,0x0f,0xf9,0x29,0x33,0x4f,0x6d,0x78,0x2b,0x7a,0x70,0x2a,0xce,0xe7,0xd7,0x46,0xd4,0xee,0x06,0x8f,0x3d,0x8a,0x3c,0x81,0xf4,0xf7,0x56,0x84,0xa9,0xa2,0x14,0x37,0x98,0x8d,0x90,0x56,0xe8,0x68,0x90,0xb0,0xf6,0x40,0xee,0x0b,0x9d,0x7d,0x5f,0x3a,0x84 },
{ 0x52,0x1c,0xf0,0xcd,0x89,0x72,0x9d,0x1a,0x19,0x3d,0x87,0x58,0xab,0xf9,0x60,0x19,0xf7,0x22,0x1a,0xba,0x01,0x01,0xb5,0x6b,0xae,0xab,0x93,0x96,0x5a,0x7d,0x93,0x44,0xd6,0x02,0x20,0xda,0xcb,0xf9,0xe9,0xba,0xc5,0x83,0xfe,0x0e,0xd3,0x86,0x37,0x1b,0x7a,0x13,0x41,0xca,0x5a,0x95,0xfb,0xa1,0x45,0x29,0xf2,0x81,0x96,0xb7,0x06,0x4a },
{ 0x20,0x42,0xa2,0x0c,0x02,0x5b,0x72,0x52,0xf1,0x45,0xfa,0x7e,0x4e,0x54,0x12,0xc6,0xe2,0x59,0x88,0x55,0x3e,0x94,0x26,0xa4,0x11,0x9c,0x53,0xb7,0x31,0xd9,0x80,0x9d,0x98,0xe4,0x96,0xd5,0xdc,0x4e,0xef,0xa1,0x4c,0x6a,0x0f,0x9b,0xca,0xd6,0xfb,0x45,0x94,0xe7,0xa7,0x5e,0xbb,0xc1,0x7a,0x8a,0x26,0xb2,0x3c,0x11,0x8c,0x70,0x07,0x1a },
{ 0x17,0x6c,0x11,0xc1,0x32,0x8e,0xd0,0x7b,0x56,0x2f,0xc9,0xef,0xce,0x42,0x70,0x0b,0xbd,0x4b,0xbd,0xec,0x15,0x43,0xd1,0xa7,0x0b,0x31,0x84,0xa3,0x2b,0x3f,0xce,0x8c,0xd1,0x7f,0x8d,0xae,0x93,0x4b,0x8a,0x35,0x89,0x59,0x21,0x80,0xb7,0xde,0x3b,0x7e,0x5c,0x5d,0x84,0x2a,0x5b,0xb5,0x1a,0xb1,0x6e,0xa6,0x84,0x36,0xa3,0xc9,0xf1,0x9f },
{ 0xea,0x10,0x5c,0x1c,0x60,0xfb,0x6a,0x92,0x72,0xa1,0xad,0x73,0x3f,0xde,0xc3,0xea,0xbb,0xe2,0x6f,0x6e,0xb3,0xf9,0x8d,0x7f,0x6b,0x1e,0x59,0xf4,0xd9,0xe8,0x07,0xaa,0x47,0x27,0xeb,0x55,0x8c,0x01,0x59,0xf1,0xd2,0xa1,0xa9,0x7d,0x38,0xb3,0x13,0x64,0x5e,0x58,0x8a,0xd9,0xe8,0xbd,0xc0,0x71,0x91,0x61,0x3d,0xc4,0x5f,0xb2,0xf9,0x09 },
{ 0x69,0x65,0xb6,0x38,0x4d,0x70,0x61,0xe6,0x85,0x37,0x1f,0xe7,0xff,0x26,0x51,0x9e,0x76,0xbb,0xa9,0xdd,0xa2,0xae,0xa7,0x81,0x7a,0xff,0x4f,0xe1,0xfd,0xde,0x34,0x45,0xd1,0xbc,0xda,0xe3,0x9c,0x48,0x25,0x11,0x32,0x5e,0x49,0x66,0x38,0x73,0x2d,0xbe,0xf4,0x7c,0xe6,0x05,0x1a,0x5f,0x99,0xd9,0x7c,0xc4,0x38,0x9e,0x18,0x85,0x51,0x13 },
{ 0x3a,0x7b,0xb8,0xef,0x36,0x46,0x55,0xce,0xd4,0xb5,0xd6,0x96,0xcc,0xfc,0xcd,0x31,0xf4,0x97,0xdb,0x79,0x58,0x44,0x36,0x7c,0x93,0x41,0x9c,0x05,0xf7,0xbe,0x0b,0x0b,0x1e,0x5c,0xbe,0xa9,0x50,0x19,0x92,0xaa,0xde,0x17,0x62,0xeb,0xaf,0x31,0x36,0x68,0xd6,0xcf,0xc7,0x9f,0x05,0xa9,0xa3,0x54,0xd4,0x99,0xc2,0xf4,0x0d,0x32,0xcc,0xa1 },
{ 0x9b,0xa1,0xe1,0x2f,0x97,0x4a,0xc9,0xf3,0x9b,0xa8,0x34,0xfc,0xb1,0x84,0x09,0x71,0x48,0x52,0x63,0x36,0x67,0x91,0x89,0xf1,0x03,0x75,0xc0,0xc6,0xed,0xee,0x30,0xee,0x03,0xd2,0xf1,0x32,0x31,0x1b,0xea,0x6c,0x27,0x7c,0x3e,0xea,0x86,0xa8,0x77,0xbe,0x62,0x06,0x7e,0xbb,0x8c,0x7d,0x4f,0x38,0x8a,0x96,0xb8,0x3b,0x67,0xb4,0x3c,0x5e },
{ 0x3c,0xec,0x40,0x06,0xa3,0x2e,0xa7,0x97,0x51,0xa5,0x99,0x66,0xe3,0x39,0x11,0x0d,0xd9,0x26,0x74,0x44,0x49,0xe6,0x40,0x81,0x53,0xf3,0x08,0xa5,0x81,0xaa,0xc9,0xc5,0xdb,0xba,0xda,0xae,0x2c,0xcb,0xe8,0x3a,0xd7,0x40,0xa5,0xf2,0xe8,0x09,0x49,0x2e,0xb4,0xa6,0xc3,0x1c,0x0c,0x7c,0x09,0x88,0x34,0xc0,0x64,0x1a,0xc2,0xcb,0x1b,0xf5 },
{ 0xc9,0x0e,0xa1,0xfb,0xe9,0x02,0x00,0x55,0x48,0x5b,0x54,0x4d,0x95,0x67,0xe8,0x63,0x5a,0x16,0x58,0xf6,0xd1,0x7c,0x5b,0x10,0x8a,0xfb,0xc6,0x7f,0x51,0xc5,0x71,0x25,0x05,0xac,0xa6,0x6c,0x71,0x0e,0xde,0x6b,0x19,0x66,0x7a,0xf6,0x36,0xe6,0x60,0xb1,0xb6,0xa3,0xd0,0x7d,0x6d,0xe1,0x9a,0x69,0xc6,0x69,0xa5,0x04,0xde,0xfb,0x8d,0x94 },
{ 0x78,0xa3,0xe8,0x37,0xad,0x24,0xb3,0x1c,0x8b,0xa7,0x86,0x8e,0x32,0xe2,0x7f,0x97,0x97,0x0e,0xe2,0x5b,0x00,0xa2,0xbc,0x08,0x01,0x18,0x36,0x7b,0x33,0xa1,0x76,0xa8,0xbf,0x9e,0x14,0x8c,0xef,0x02,0xef,0x56,0xf2,0x5d,0xe8,0x85,0x5b,0x16,0xeb,0x70,0x46,0x6d,0xf0,0x2a,0x68,0x4b,0xd9,0x53,0x94,0x65,0xe4,0x7f,0xfa,0x64,0xe3,0xf6 },
{ 0x0a,0x88,0xb8,0xf7,0x7c,0x89,0x62,0x30,0x3d,0x3a,0x1b,0xb4,0xa4,0x8c,0x10,0x5b,0x9c,0xf2,0x50,0x89,0xf8,0x22,0xdf,0x8f,0xc1,0xbf,0x1f,0x2d,0xab,0x3c,0xd7,0xfe,0x15,0xb6,0x3b,0x69,0x05,0x52,0x5a,0xc2,0x1d,0x4d,0x29,0xd2,0x46,0xca,0xa9,0x90,0x0c,0x49,0x1c,0x09,0x94,0xd7,0x15,0x4c,0x6a,0x3b,0xd2,0x34,0xf1,0x66,0x1f,0xd1 },
{ 0x27,0xf1,0x0c,0xe0,0x28,0xec,0xf6,0x0a,0xe0,0xde,0xa9,0xda,0xb6,0x42,0xbc,0xe8,0x8b,0x30,0xc1,0x75,0x4d,0xb7,0xb7,0xa5,0xa6,0x8b,0x73,0xea,0x8f,0x54,0xbd,0x2b,0xd8,0x7f,0x1c,0x61,0x3f,0x36,0x76,0x5c,0xa1,0x2a,0x9a,0x09,0x75,0x2d,0x80,0x29,0x85,0x74,0x3d,0x3d,0x62,0x89,0xbb,0xeb,0xa3,0xf0,0xe5,0x5e,0xa1,0x1c,0xc8,0xb6 },
{ 0xf6,0xd0,0x35,0xa0,0x77,0xe7,0x82,0x60,0xa5,0xab,0xd3,0x5f,0x09,0x4f,0xe5,0x1e,0x9d,0xe8,0x5a,0x09,0xc2,0xaa,0x5b,0xe7,0x00,0x03,0x72,0x30,0x5c,0x7f,0x3e,0xc0,0x7e,0x27,0x86,0xb8,0x89,0xf1,0x7f,0x8d,0xda,0x3c,0x35,0x3b,0xf7,0xc8,0x8d,0x77,0x15,0x60,0x6b,0x2c,0xe1,0xfa,0x58,0xc4,0xb2,0x45,0x74,0xc8,0x4e,0x14,0xa4,0xd6 },
{ 0x0f,0xbc,0x34,0x1c,0x8c,0x66,0x9d,0x76,0x32,0xca,0x9f,0x0d,0x41,0xbc,0x43,0xdc,0x1e,0xfe,0x47,0xb2,0x73,0xb9,0x57,0x75,0x25,0x8f,0xca,0x6c,0x4d,0x9a,0xef,0xbd,0xbd,0x80,0x22,0x63,0x2f,0x36,0x0e,0x3f,0xe4,0x01,0x4b,0x1d,0x49,0x57,0xd3,0xd3,0x95,0x0b,0x06,0x9e,0x20,0x0a,0x9f,0xf1,0xed,0x3b,0x6e,0xa9,0xd3,0xe7,0x1c,0xa0 },
{ 0x92,0x6f,0xb2,0x74,0x4f,0x10,0x72,0xfa,0x99,0xc6,0x54,0xf8,0xde,0x51,0xf5,0xce,0x1d,0x9f,0x1d,0xda,0x80,0x89,0xb3,0x6f,0xf3,0xb0,0x65,0x02,0xdc,0x62,0xb0,0x4c,0x57,0xe8,0x91,0xf3,0xa9,0xff,0x07,0x36,0xcd,0xfd,0xfb,0xb2,0xc2,0x9d,0xa1,0xfe,0xe6,0xb2,0x5d,0x68,0x78,0x94,0x63,0x71,0x53,0xd8,0x85,0x9b,0xa5,0x0a,0x17,0x1e },
{ 0x82,0x90,0x19,0x31,0x9d,0x8f,0x77,0x6a,0x2d,0xcb,0x6c,0x35,0x26,0x20,0x54,0x6c,0x54,0xdb,0xee,0xfa,0x7c,0x1e,0x27,0xf7,0xf3,0xa6,0xdb,0x8a,0x73,0xe4,0x4b,0x54,0xe6,0xa2,0x6e,0x71,0x3e,0xa8,0xfa,0x1d,0x65,0x88,0x8d,0x6e,0xac,0x1d,0xd9,0xa0,0x9f,0x47,0xa0,0xa1,0x01,0x13,0x54,0x84,0x68,0x03,0xf5,0xe4,0xfe,0x5f,0xe6,0xac },
{ 0x99,0xec,0xf1,0x2f,0xca,0x4e,0x79,0x1a,0x7b,0xf5,0x1a,0xb8,0xb6,0x86,0x97,0x35,0x8b,0x69,0xbc,0xbe,0x82,0xba,0xfc,0x1a,0xcc,0x30,0x7f,0x3e,0xea,0x25,0x49,0x7b,0x8b,0x67,0xdc,0xee,0x7f,0xb6,0x4f,0x2f,0x93,0xa9,0x1c,0xfd,0x68,0xe0,0xba,0xf4,0xe7,0x18,0x89,0xf4,0xbd,0x17,0xde,0x39,0x23,0x34,0x97,0xc7,0xaf,0x65,0x80,0x66 },
{ 0xc4,0x8d,0xbf,0xa1,0x22,0x99,0xcf,0x2a,0x44,0x4c,0xd5,0x7d,0xb5,0x17,0xac,0x92,0xb4,0x1c,0xa5,0x18,0xe1,0x98,0xa2,0x81,0xa5,0xe7,0x43,0xce,0xea,0x39,0x4a,0x20,0xbc,0x83,0xcb,0xa0,0x0e,0x13,0x80,0xba,0x64,0xff,0x2e,0x41,0x1b,0xdb,0xd6,0xcd,0x94,0x40,0xb1,0x25,0x99,0x1b,0xb5,0xe2,0x4a,0x05,0x80,0xdb,0xea,0x77,0xa7,0x5b },
{ 0x79,0xab,0xc3,0x16,0x14,0x95,0xf0,0x5a,0x53,0x03,0xb0,0xa3,0x93,0x90,0x7a,0x04,0x23,0xe8,0x04,0x76,0x42,0x53,0xb1,0x82,0x3b,0x27,0xc7,0xcd,0xf2,0xd6,0xca,0x5c,0x80,0x0e,0x80,0x06,0xf6,0x26,0xf3,0x4b,0x2e,0x33,0x3a,0x9a,0x99,0xe0,0x69,0xfb,0xd5,0x8c,0xf4,0x1c,0x2d,0xc6,0x2b,0x1e,0x59,0x38,0xbd,0x8d,0x18,0xdd,0x5c,0x5a },
{ 0x98,0x7f,0x25,0x6d,0x58,0xcf,0xf9,0x37,0x3b,0xe7,0x19,0x69,0xfc,0x3a,0x93,0x01,0xe8,0xf9,0x25,0x7a,0xe5,0x7f,0xdc,0x00,0xcd,0x01,0x3f,0x88,0xb0,0x49,0xe7,0xcd,0x8e,0x92,0x69,0x56,0x94,0xec,0x50,0x5c,0xe8,0x60,0xeb,0xd6,0x00,0x07,0xe3,0x9e,0x47,0xb4,0x60,0x52,0x07,0xaa,0xff,0xdb,0xb7,0x25,0x4b,0xbc,0x6e,0xfa,0x35,0xd6 },
{ 0x8d,0xee,0xaf,0x8b,0x04,0x28,0xbe,0x10,0x4a,0xf6,0xe1,0x3a,0x44,0xb0,0x47,0xa6,0xb9,0x61,0x05,0xae,0x6f,0x07,0x75,0x4b,0x16,0xa1,0xd8,0x59,0x01,0x1c,0x86,0xad,0x4a,0xbf,0x01,0xe5,0x4a,0x47,0x22,0xaa,0x38,0x83,0x1e,0x5f,0xe1,0x27,0x5a,0x5d,0xb0,0xb8,0x86,0xa2,0x2c,0x0e,0x10,0xe4,0x28,0xb5,0x23,0x89,0x38,0x37,0xe4,0x7d },
{ 0x66,0x08,0xc2,0x43,0x77,0x3c,0x85,0xdc,0xbc,0x66,0x6b,0x9b,0xa9,0x73,0x23,0xb2,0x34,0xa8,0xbf,0xe7,0x0a,0x2e,0x33,0x38,0xc6,0xe3,0x19,0x7a,0xa3,0xfe,0x67,0xb2,0xa1,0xa9,0x16,0xbe,0xc5,0x21,0xc1,0x68,0x84,0x6f,0x64,0x0d,0xa7,0x46,0xe0,0x3f,0xc2,0x2b,0x15,0x9f,0x40,0xc5,0x43,0x08,0x19,0x23,0xfe,0x5c,0xe5,0xb4,0x7a,0x28 },
{ 0xb2,0xff,0xe0,0x9f,0x03,0x68,0xe4,0x29,0x7a,0xc7,0xa4,0xf8,0x1b,0x59,0xeb,0xd0,0x85,0x0a,0x1d,0x22,0x5b,0xbd,0x0f,0xae,0x38,0x36,0x7c,0xe6,0x28,0xec,0xd3,0x32,0xa7,0xa4,0x5c,0x29,0x51,0x43,0x8a,0xe5,0x3f,0x7a,0xd1,0x2b,0x51,0x26,0xc2,0x55,0xc4,0xa5,0x5f,0x46,0x4a,0x8b,0xa7,0xd6,0x17,0x00,0xc3,0x45,0x94,0x9c,0x31,0x52 },
{ 0x70,0xc1,0xfd,0x69,0x18,0x00,0x0a,0xa9,0x99,0x79,0xbc,0x85,0x6e,0x97,0x6e,0x53,0x58,0xbc,0x6e,0x01,0x8b,0xe0,0x62,0x86,0x5f,0xc1,0x20,0x9b,0x03,0x78,0xbc,0x7f,0xf7,0xda,0xab,0xc2,0x0d,0x5b,0xc5,0x22,0xaa,0xed,0xf6,0xf1,0x22,0x42,0x85,0x43,0xf5,0xa9,0xf3,0x2f,0x61,0xe1,0xcb,0x0d,0x6d,0x68,0x17,0x1c,0xa6,0xae,0xb8,0x56 },
{ 0x94,0x4a,0x51,0x21,0x9e,0x65,0xd6,0x2a,0x9b,0x5d,0xe3,0x2e,0x36,0xf8,0x1c,0xf7,0x7e,0xd9,0x63,0x30,0xb0,0x0c,0xbe,0x04,0x6e,0xf9,0x61,0x66,0xaa,0x28,0x96,0x7e,0x36,0x87,0xf6,0xb2,0x31,0xe0,0x49,0x6a,0x9e,0xc7,0xe1,0xb1,0x56,0x8e,0xd8,0x51,0x6f,0x8a,0xe3,0x88,0x78,0xc1,0xfa,0x91,0x76,0x4e,0x54,0x03,0x2c,0xe6,0x1f,0xd3 },
{ 0x30,0xac,0x8e,0x52,0x25,0x0d,0x76,0xb2,0xc0,0x73,0x3f,0xde,0xac,0xec,0x50,0xaa,0xfe,0x32,0xc9,0x00,0xbf,0xb0,0x19,0x2c,0xbc,0x63,0xb9,0xf4,0xe7,0x7e,0x03,0xc2,0xd6,0x94,0xb5,0x30,0xc0,0x99,0x78,0x5e,0x69,0xaa,0x65,0x84,0x00,0x2e,0x77,0xa0,0x67,0x04,0xba,0x32,0xcd,0x87,0x86,0xdc,0xa1,0x19,0x14,0xfe,0xd1,0xdc,0x3f,0x83 },
{ 0x87,0x62,0x9a,0x24,0x38,0xa6,0xde,0xfe,0x6a,0xf0,0xf2,0x5b,0x83,0x60,0xa5,0x64,0xf2,0x0f,0x5c,0x62,0xb8,0x46,0xe2,0xe2,0x48,0x2d,0x00,0x1a,0x95,0x1c,0x3e,0x13,0x36,0x44,0x36,0xa0,0xff,0x4a,0xb3,0xce,0x2b,0xfa,0xdf,0xd3,0x97,0x84,0xdf,0xaf,0x44,0x5d,0x31,0x09,0xac,0x5c,0x3b,0xd5,0xbe,0xe6,0x9d,0xf7,0x7f,0x71,0xfd,0x5c },
{ 0x5b,0xb9,0x95,0x89,0x23,0x0a,0x0d,0xf5,0xef,0x5a,0x97,0xae,0x73,0x39,0x62,0x12,0x36,0xbb,0xa6,0xc0,0x5e,0xcd,0xb6,0xaf,0x2d,0x86,0xa6,0x3c,0x3e,0x68,0x91,0x86,0x18,0x9e,0x83,0xe9,0x77,0xed,0x31,0x59,0x57,0x24,0xd4,0x61,0xa3,0x3c,0x41,0x3e,0x92,0x64,0x3e,0xd0,0x5b,0xc1,0xdc,0xc4,0xed,0xfb,0x31,0x0d,0x1b,0xe3,0xa0,0x18 },
{ 0x08,0x56,0xdf,0x35,0xfe,0x81,0xa0,0x22,0xbb,0xb7,0xa0,0x2f,0xe7,0x0e,0xae,0x5b,0x0e,0x13,0x1e,0xed,0x2e,0x18,0xab,0xbb,0x64,0xa4,0xd2,0xdb,0xc5,0xba,0x28,0x32,0xca,0x24,0x8a,0x86,0x08,0x0f,0x41,0x9e,0xbf,0xc1,0x19,0xd7,0x97,0x2a,0xa4,0x10,0x66,0x35,0xc7,0xb8,0xd8,0x01,0x60,0xf0,0x6a,0x35,0xeb,0xd2,0xff,0xa6,0x48,0x5b },
{ 0x1f,0x51,0x2c,0xe5,0x8e,0xa4,0x53,0x0a,0x98,0xca,0x64,0xad,0x0b,0x10,0x7d,0x50,0x95,0xb1,0xce,0x3e,0x93,0x4f,0x74,0x81,0xeb,0xa8,0xb0,0xea,0x56,0xa6,0x5b,0x42,0x72,0x70,0xaa,0xba,0x62,0x5b,0x1c,0xec,0xd7,0x07,0x53,0x78,0xd2,0x37,0xc0,0xa5,0x0a,0x2a,0x0a,0xaa,0xb1,0xcd,0xa9,0x33,0x59,0x7a,0x80,0x63,0x9b,0x3e,0x67,0x4f },
{ 0xd8,0xde,0x76,0x52,0x27,0xb7,0x87,0x37,0x63,0xde,0x93,0xc3,0x4d,0x8b,0x56,0x1c,0xf7,0x3a,0x83,0x5f,0xbb,0x8e,0x9c,0x71,0xc2,0xeb,0xaf,0x80,0x17,0xe5,0x51,0x04,0x2f,0xd2,0x94,0x65,0xbe,0x13,0xf2,0xd1,0x5c,0x4c,0x62,0x8a,0xd1,0xdc,0xf9,0x24,0xc2,0xf7,0x3f,0xce,0x19,0x40,0xdb,0x1b,0x2a,0x02,0xef,0x80,0xe5,0x2e,0x08,0xcd },
{ 0x3a,0x24,0x0d,0xfc,0x25,0x8e,0x68,0xa6,0xf6,0x28,0x37,0x5b,0x5c,0x09,0xd4,0x70,0xb8,0x83,0x34,0xa3,0x33,0x23,0x1c,0xfc,0x9e,0xe9,0xb5,0x70,0x65,0x9f,0x4c,0x4d,0xbc,0x8c,0xb0,0x17,0x7b,0xb5,0x8e,0x92,0xe6,0x75,0x31,0x9c,0x41,0x6e,0x46,0xf2,0xbb,0x04,0xf1,0x23,0xed,0x94,0xb1,0x69,0x39,0x4a,0x78,0xc7,0xec,0xd4,0x29,0xa7 },
{ 0xd0,0x3e,0xb2,0x6a,0x9a,0x38,0xb7,0x9b,0x60,0x20,0xf7,0x17,0x56,0xa0,0xa3,0x20,0xe9,0x22,0x7b,0xab,0x94,0x67,0xb6,0x8f,0x06,0xeb,0x94,0x09,0xf7,0x22,0xa8,0x1b,0x50,0xc5,0xfc,0xb0,0x2c,0x21,0xa3,0xe7,0x6c,0xe0,0x57,0x04,0x52,0x62,0xd4,0x12,0x9d,0xff,0x1a,0x28,0x6d,0xf2,0x08,0xf5,0x95,0xe2,0x5f,0x86,0xd8,0xa8,0x57,0x67 },
{ 0x84,0xd8,0xe3,0x03,0x1c,0x33,0xd4,0xf7,0x61,0x5a,0x2f,0x5c,0x21,0xfc,0xf4,0xa0,0x2b,0xb2,0x2a,0x0f,0x9f,0xb6,0xff,0xa9,0x6e,0x7a,0x86,0x4e,0xd9,0x3e,0x29,0xa3,0x0b,0xb6,0x4d,0xd6,0x8f,0xf3,0xfc,0x18,0x5f,0x08,0xa7,0xa8,0xd3,0xd7,0xae,0x89,0x23,0x01,0x8d,0x60,0x56,0x83,0xec,0xc8,0x0a,0x9b,0x7f,0xb6,0x30,0x7a,0xb5,0x48 },
{ 0xfe,0x40,0x91,0x01,0x0e,0xb8,0xcd,0xa7,0x2d,0x3a,0xd9,0x4e,0x07,0xc7,0x97,0x6f,0xff,0x69,0x86,0xd6,0xf1,0x79,0x0d,0xd7,0xe8,0x34,0x11,0x0d,0x03,0xf6,0x1c,0x13,0x08,0x17,0x59,0xc1,0xda,0x40,0x40,0x32,0x39,0x48,0x6f,0xaf,0x09,0x3b,0x0b,0x79,0xf9,0x86,0xfb,0xdb,0x99,0xe1,0xd9,0x73,0xc3,0xd3,0xce,0xcd,0xbd,0xa0,0xb3,0xae },
{ 0xe6,0x88,0x0b,0xb1,0x97,0xf3,0x43,0x0d,0xa4,0x7b,0xc4,0x45,0xfb,0xf8,0x8d,0x97,0xac,0x39,0x1f,0x11,0x85,0xce,0xc1,0x41,0x66,0x9a,0x43,0x8d,0x97,0x41,0x31,0xfb,0x9d,0x0e,0xf0,0x72,0x9e,0xc3,0x37,0x7c,0x85,0x4a,0xc1,0x96,0xe4,0x03,0x19,0xb8,0x4b,0xff,0x19,0x7d,0x9b,0x1e,0xa8,0xd8,0x1f,0x03,0x24,0xec,0xbb,0x56,0x98,0xb9 },
{ 0xc9,0x0e,0x30,0x08,0x39,0xdd,0x58,0x95,0x1e,0x80,0x95,0x70,0x63,0x15,0x44,0x03,0xcb,0x4e,0x66,0x44,0xc7,0x74,0x36,0x48,0x13,0xd0,0x0c,0x24,0x8f,0xa8,0xee,0x41,0x62,0xf5,0x04,0x17,0x6d,0x19,0xe7,0x3c,0x9c,0x07,0x10,0xc6,0x53,0x84,0x03,0x62,0x50,0x45,0x53,0x47,0x17,0xac,0xcd,0x6e,0x47,0xa6,0x36,0x67,0xc3,0xd7,0xc1,0xae },
{ 0x4f,0x02,0xfb,0x24,0x6f,0xa7,0xe0,0x6d,0xcd,0xbb,0x54,0x39,0xaf,0xe3,0x80,0xce,0x8c,0xf5,0x1d,0xf9,0x68,0x78,0xe4,0xc3,0x6d,0x08,0xe8,0x2f,0x8e,0xf1,0xa0,0x84,0xa6,0x58,0x7a,0x60,0x06,0x85,0x8b,0x86,0xa9,0x39,0xed,0x73,0x8a,0x1b,0x10,0xb9,0xfe,0xe0,0x4f,0xdd,0xa6,0x84,0xc6,0x50,0xe9,0x32,0x5a,0x40,0xea,0x57,0x47,0xdc },
{ 0x54,0xcc,0xc9,0x41,0x50,0x26,0xd7,0x3f,0x20,0xa8,0x45,0xb7,0x2a,0x58,0xe5,0xb1,0x8b,0xd2,0x7f,0x19,0x85,0x42,0xa0,0xbe,0xee,0xa6,0xbc,0x92,0x07,0x1e,0x5c,0x83,0x1c,0x43,0x3f,0x45,0xb4,0x51,0x45,0x32,0x3a,0x8f,0x87,0x15,0xda,0xd2,0xbf,0x22,0x92,0x9e,0x0b,0xcc,0x5d,0x8e,0xe4,0x96,0xcf,0xd0,0x8e,0xf7,0x14,0x09,0x16,0xa1 },
{ 0x40,0x62,0xb3,0xd9,0x2b,0x12,0x3e,0xe0,0x55,0x59,0x42,0x7a,0x03,0xb4,0x4f,0x6e,0x91,0xa0,0x82,0xd9,0x4b,0xef,0x90,0x8c,0x6a,0x75,0x75,0x45,0xe3,0x82,0xc4,0x8e,0xeb,0xae,0x71,0xd8,0x6c,0x46,0xdf,0x52,0x04,0x9e,0x37,0xc7,0x00,0x17,0xb3,0xac,0x03,0xcc,0x1d,0x6c,0x93,0x56,0xb9,0xd8,0x4e,0x65,0xcb,0x4a,0x49,0xaf,0xc5,0xf4 },
{ 0x29,0xe3,0x4b,0x1b,0xed,0x8a,0xa8,0x14,0x9d,0x84,0x10,0x14,0xdc,0xfb,0xe8,0x33,0x83,0xfd,0x5b,0x1e,0x94,0x6f,0x64,0xb2,0x83,0x1b,0xb8,0x0c,0x01,0x28,0x7c,0x25,0xea,0x43,0x97,0xdf,0x95,0xee,0xb3,0xa3,0xc1,0x41,0x7c,0xdf,0xcc,0xd9,0x6b,0x25,0xcf,0x3a,0x19,0x8b,0x6e,0x15,0xa4,0x39,0x1d,0x23,0xad,0x1d,0x75,0xa7,0xe4,0x6e },
{ 0x6b,0x0b,0x4d,0x81,0x74,0xea,0x23,0x39,0x5e,0x1b,0xbc,0xd0,0x64,0x7a,0xc7,0x81,0x27,0x66,0x58,0x75,0x9d,0x3c,0x74,0xad,0x73,0xfd,0x42,0x25,0xbc,0x0e,0xd1,0xb7,0xe7,0x1b,0x57,0x29,0xcb,0x21,0x17,0x78,0xc5,0x31,0xc9,0x27,0xb7,0x52,0xc4,0xf3,0x37,0x58,0x93,0x81,0x22,0xc2,0x22,0x4a,0x25,0x66,0x2b,0x8a,0xf7,0xbe,0xaa,0xf2 },
{ 0xd2,0xa0,0x76,0x36,0x7c,0x5b,0xa1,0x9e,0xea,0x5b,0x5f,0x1d,0x3c,0x00,0x19,0x19,0x87,0x6f,0x31,0x53,0x3a,0xb6,0x24,0x09,0xf3,0xd5,0xbe,0x3a,0x53,0xa3,0xa3,0x83,0x79,0xaa,0x09,0xb8,0x93,0xb7,0xfc,0xc0,0x66,0x43,0xa0,0xf5,0xbb,0x9d,0xce,0x30,0x59,0x81,0xae,0xff,0x3f,0x59,0x8b,0xce,0x65,0xf2,0xab,0xb2,0x2e,0x7e,0x06,0x40 },
{ 0x6e,0xcd,0xcc,0x78,0x3d,0xe6,0xa0,0x78,0x24,0xed,0xe6,0xc2,0xc0,0x52,0xaa,0x18,0x39,0x23,0x2e,0xad,0x5e,0x5d,0xd2,0xbc,0xce,0x23,0x60,0x73,0x63,0xa0,0x4b,0x5d,0x02,0xab,0x23,0xd7,0xdc,0x5a,0x1a,0xd6,0x52,0x2c,0x3f,0x19,0x00,0xd1,0x3d,0x1a,0x0c,0x1a,0xda,0xed,0x82,0x45,0x19,0xcb,0x92,0x22,0x8c,0xd9,0x19,0x3a,0x69,0x80 },
{ 0xc5,0x6d,0xd6,0x86,0xb0,0xfd,0x84,0x6a,0x66,0xdc,0xeb,0x63,0x19,0x77,0xd5,0xba,0xd5,0x05,0x67,0x1a,0xe1,0xab,0xb3,0x4a,0x77,0x48,0x53,0x2d,0x4f,0xa4,0x35,0x29,0xf2,0xac,0xaa,0x85,0xf3,0xf1,0xb2,0x63,0x55,0x5d,0x2c,0x60,0xa7,0x6b,0x8c,0x11,0x61,0x9e,0x46,0x78,0x16,0xfb,0x7e,0xee,0x59,0xed,0xed,0xac,0xf9,0xa5,0x21,0xf6 },
{ 0xd2,0x24,0x97,0xf9,0x7a,0x67,0x65,0x76,0xd5,0x95,0xc9,0xc0,0x53,0xfa,0x34,0x3f,0xf6,0xd3,0xd9,0xc9,0x0d,0xf3,0x5e,0x89,0xfc,0xed,0x35,0xd2,0xf7,0x54,0x64,0xe9,0x4e,0x78,0x1c,0x87,0x37,0x33,0x79,0xe9,0xa6,0x83,0x44,0xc9,0xbe,0xc1,0x7a,0xf4,0xd9,0x57,0x71,0xd5,0x3d,0x83,0x6e,0x5a,0x69,0xd8,0x34,0x51,0x0a,0xc8,0xe2,0x8d },
{ 0xdf,0xe2,0x69,0x3e,0xe4,0x34,0x03,0x48,0x30,0xea,0x6e,0xaf,0xce,0xdb,0x0e,0xb4,0x80,0x60,0xb1,0xf2,0xbc,0xbc,0xb0,0xab,0xe9,0xae,0xfc,0xa5,0x24,0xd9,0xbe,0xad,0xbe,0xbf,0x7a,0x5c,0x83,0x1c,0xa5,0x2b,0xeb,0x02,0xfa,0xc5,0x0f,0x97,0xd9,0xf3,0xcc,0x9c,0xbd,0xc2,0x3a,0x01,0xeb,0x61,0x7a,0x77,0x65,0x8e,0x77,0x72,0x26,0x9c },
{ 0xc5,0x44,0x0c,0x59,0x78,0x14,0xa4,0x7d,0x9f,0x6c,0xc7,0xd1,0x51,0x3d,0x7f,0x38,0xe4,0x0c,0xd0,0x2e,0x32,0x84,0x7f,0x01,0xc3,0x0f,0xb7,0x71,0x22,0xd3,0x29,0x36,0xd2,0x7e,0xe9,0xba,0x38,0x3e,0x1f,0xa7,0x2e,0xdc,0x1e,0x1d,0x23,0xec,0xf4,0xac,0xd8,0xa6,0xd2,0x86,0x31,0xe4,0x1e,0x5d,0x9a,0x42,0xfa,0x37,0x47,0xca,0xbf,0xd4 },
{ 0xa0,0x86,0x91,0x0c,0xe9,0xbc,0x47,0xea,0x21,0x59,0x31,0x9f,0xcb,0x4a,0x72,0x76,0xdf,0xde,0x08,0x17,0x9d,0x9d,0x43,0x45,0xca,0x8c,0xd6,0x6d,0x9c,0x90,0xf0,0x6a,0x58,0x89,0x5f,0x52,0x96,0x17,0xc5,0x02,0x60,0x33,0x68,0xdd,0xbb,0x1c,0xcb,0x8b,0x8e,0x80,0xf2,0xaa,0x19,0x97,0xaa,0x8e,0x2f,0x01,0xbc,0x6e,0x49,0x81,0xfa,0x66 },
{ 0xd0,0x7e,0x95,0x89,0x2d,0xaa,0x15,0xaf,0xff,0x3e,0x42,0xd5,0x2f,0x5b,0xab,0x12,0xf1,0x65,0x80,0x3d,0xfb,0xd4,0x92,0xc0,0xcb,0xe1,0xa1,0x8d,0x2c,0x2e,0x32,0xb9,0x77,0x4e,0x4d,0x65,0x06,0x72,0x45,0x28,0x73,0x1f,0x07,0x69,0xf8,0x93,0xef,0x4e,0x23,0xed,0x98,0xf1,0x52,0x28,0xe8,0x1e,0x5e,0x78,0xad,0x6a,0x2c,0x1a,0x4f,0x5c },
{ 0x25,0xd9,0x85,0x93,0x01,0x9b,0xc0,0xc1,0x77,0xba,0x6c,0xcd,0xd2,0x97,0x66,0x3d,0xac,0xc4,0x31,0x4f,0xff,0x39,0x05,0xdf,0xad,0xff,0x55,0x57,0xef,0x7d,0xa8,0x9d,0x0c,0x1c,0x18,0xf8,0x01,0x5b,0xfc,0x1c,0xa6,0x38,0xd6,0xf5,0xd9,0xe1,0x6f,0x15,0x1a,0xc1,0x18,0xb3,0xb9,0xbc,0xcd,0x5d,0x57,0x22,0x4e,0xff,0x64,0x90,0x43,0x52 },
{ 0x43,0x7f,0x6e,0x07,0xb8,0x6f,0xd8,0xfc,0x3a,0x06,0xae,0x02,0x95,0x82,0x9d,0x32,0x42,0x75,0xa1,0x49,0xe1,0x9d,0x95,0x7c,0x76,0x01,0xae,0xee,0xf7,0x9f,0x7b,0x91,0x5f,0xe8,0xd3,0x7c,0xa8,0x89,0xf1,0x3a,0xbf,0x38,0xb8,0x28,0x9b,0x15,0xd6,0x3c,0x58,0x9a,0x77,0x11,0x91,0x39,0x68,0x33,0x64,0xb6,0xac,0xe3,0x75,0x27,0x00,0x33 },
{ 0x2e,0x59,0xa9,0x73,0xe1,0x1e,0xac,0x4e,0x49,0x36,0x2f,0x8a,0xe5,0x29,0xdc,0xcf,0x24,0xa0,0xcd,0x16,0x2f,0xc2,0x9c,0xb8,0x08,0x54,0x4a,0x48,0x6b,0x10,0x7a,0xb9,0xf7,0xc4,0x28,0xd3,0xcc,0x3a,0x58,0x37,0x99,0xf2,0x6f,0x88,0xff,0xc3,0xee,0xe3,0xb0,0xff,0x42,0xe7,0x73,0x60,0xd6,0x70,0x5b,0x3d,0x2d,0x1c,0xd8,0x8b,0x86,0x74 },
{ 0xce,0xcd,0xff,0x7a,0x5c,0xab,0x84,0x4f,0x79,0xca,0x1e,0x2a,0x64,0x83,0xee,0x28,0xb8,0x0a,0x7c,0x8a,0x34,0x47,0xdb,0x8f,0xa9,0x69,0xec,0xfe,0xc5,0x1c,0xd9,0xc7,0x93,0x23,0xe5,0x4d,0x22,0x86,0x80,0x08,0x92,0xaf,0x68,0x81,0x9c,0x7d,0x0f,0x6b,0x0d,0x09,0xd0,0x6b,0x64,0x5e,0x5a,0x3f,0xeb,0x76,0xea,0xc7,0x29,0x38,0x96,0x32 },
{ 0x05,0x77,0x9b,0x95,0xba,0x72,0x3e,0x55,0x9a,0x32,0x9f,0x7c,0x5e,0x0d,0xca,0x42,0xca,0x15,0xd2,0xf9,0x9b,0xa7,0xca,0xb5,0x9a,0x00,0x4c,0xe4,0xb9,0x33,0x68,0x94,0x19,0xc1,0xcc,0xac,0xc8,0xdd,0xb5,0x5d,0xf0,0x5d,0x5a,0x53,0x6e,0xc4,0x91,0x7e,0xe6,0x67,0x37,0x1a,0x8d,0x40,0x9b,0x14,0x1c,0xa5,0x55,0xb9,0xe5,0x8b,0x33,0x3d },
{ 0x24,0x1c,0x56,0x7a,0x42,0x27,0xf1,0xc5,0x06,0xc7,0x9b,0x97,0xa6,0xba,0xdc,0xa6,0x1c,0x37,0x10,0x1c,0xb8,0x97,0x15,0x83,0xbf,0x9f,0x41,0x72,0xb0,0x66,0xfd,0x48,0x40,0xa6,0x2d,0x93,0xd4,0x30,0x2d,0x4b,0x93,0x63,0x81,0x7c,0x04,0x32,0x03,0xa4,0x8e,0xa8,0x71,0x38,0xae,0xa3,0x66,0x05,0x7f,0x7d,0x2c,0x67,0x92,0x85,0x7b,0x08 },
{ 0xd4,0x36,0x54,0xca,0x19,0xf1,0x99,0xf6,0x88,0x06,0x4e,0xaf,0x5f,0x94,0x2e,0x88,0x63,0x6f,0x59,0xa0,0xfe,0x91,0x61,0xd8,0x5b,0x92,0x6f,0xf8,0x95,0x46,0xa6,0xde,0xa1,0xd7,0x86,0x71,0x9c,0x78,0x21,0x2e,0x1e,0xd2,0xd1,0x4e,0x2c,0x3f,0x95,0x30,0x25,0x64,0xb9,0x2c,0xd0,0x39,0x03,0x6b,0x52,0xe2,0xcd,0x04,0x5f,0x8a,0xc9,0xbb },
{ 0x4e,0xa2,0x20,0xc7,0x8b,0xed,0x1c,0x8d,0x60,0x90,0x77,0xa9,0x24,0x3b,0x17,0x3c,0xa5,0x18,0xb5,0x2e,0xa2,0x00,0x44,0x66,0x42,0xae,0x5b,0x50,0x78,0x3d,0xfb,0x7c,0xc6,0x44,0xdd,0x2f,0x1e,0xc8,0x8d,0x3a,0x27,0x41,0x7d,0x9d,0x95,0x4c,0x82,0x98,0x28,0xc2,0xa2,0xb4,0x52,0x32,0x44,0x80,0xe5,0xd9,0xe6,0xe8,0x84,0x15,0xe1,0x3e },
{ 0xe4,0xd2,0x45,0xf0,0x91,0x82,0x69,0xb3,0x5c,0x18,0x0c,0x7a,0xd6,0x52,0xab,0xf2,0xd6,0x73,0x06,0x33,0x5b,0x3c,0x9a,0x0b,0x34,0x05,0x58,0xf1,0x19,0x97,0xf6,0x17,0x32,0x2f,0xb3,0x6c,0xe9,0x87,0xcd,0xdb,0xaf,0x9c,0xa1,0x91,0xe5,0x07,0xe9,0xbf,0xb9,0x9f,0x8f,0x2b,0x49,0x67,0x2e,0xab,0x53,0x7f,0xf8,0x3f,0x98,0x2b,0x0c,0x74 },
{ 0x9c,0x86,0x51,0xce,0xd7,0x5a,0xe9,0x4e,0xeb,0x27,0xe1,0x45,0xf2,0x1c,0x19,0x35,0x55,0x8d,0xd9,0x39,0x75,0x51,0xce,0x0d,0x0f,0x02,0xe8,0x94,0x87,0xd7,0x0d,0x2e,0x95,0x32,0xe3,0x63,0xad,0x04,0xe5,0x3e,0x3b,0xb3,0x6e,0x29,0x3a,0x24,0x54,0xc8,0xf3,0xed,0x01,0xa8,0x2d,0x75,0xcf,0x12,0x9c,0xd3,0xda,0x93,0x20,0xf3,0x5d,0x28 },
{ 0xa8,0xf0,0xe3,0x9d,0x34,0x58,0x78,0x5d,0xce,0x9b,0x51,0xb1,0xd9,0xb3,0xe9,0xbd,0x1a,0x6d,0x23,0x9e,0x81,0xf4,0xb6,0x92,0xc9,0xaf,0xdd,0x01,0xb5,0x8e,0x82,0x69,0x0d,0x1c,0x67,0xd0,0x1e,0x5a,0xdc,0x5d,0x23,0x78,0x5c,0x32,0xc5,0x57,0xd0,0x51,0x21,0xff,0x8a,0xc1,0xb5,0xba,0x03,0xff,0xe1,0xf0,0x2a,0x23,0xa6,0xb9,0xf4,0x0a },
{ 0x29,0x8a,0x40,0x1a,0x6e,0xe9,0x24,0x14,0xa7,0x08,0xfb,0xc0,0xa5,0x2e,0x5a,0x71,0xe9,0x3e,0x7c,0xa2,0x6b,0xc0,0xec,0x36,0x17,0xa4,0xf6,0x78,0xc5,0xd6,0x2a,0xf3,0x18,0xf9,0xa3,0xaa,0x04,0xfe,0x04,0x66,0xe4,0x09,0x85,0xff,0xc8,0x0c,0x90,0xdf,0x48,0x66,0xe6,0xb9,0x60,0x4e,0xd6,0xef,0x94,0x76,0x3e,0xf0,0xaf,0x0a,0x3d,0x96 },
{ 0x06,0xc3,0x27,0x3b,0xf0,0x4c,0x15,0xcb,0xe0,0x70,0x9b,0x83,0xdb,0x38,0x5c,0x30,0xba,0x9a,0x42,0x15,0x2e,0x16,0x69,0x5b,0xd7,0x1c,0x11,0x46,0x0c,0x2c,0x63,0x37,0x6d,0x50,0x70,0x13,0xae,0xcf,0x62,0x55,0x82,0x1f,0xd2,0xe5,0x39,0xd9,0xd8,0x05,0x9a,0xca,0x94,0x31,0xd3,0x1d,0x3b,0x41,0xe2,0x5b,0x63,0xf7,0x71,0x00,0xa7,0xac },
{ 0xfc,0xb7,0x11,0x61,0x20,0xd0,0x17,0x4b,0xc4,0x19,0x1a,0xcf,0x84,0x23,0xc0,0xba,0xff,0x33,0xd7,0x07,0x1d,0x39,0x80,0x92,0x6f,0x31,0x36,0x89,0x8a,0xbf,0x6b,0xd1,0xde,0xea,0xe3,0x7c,0x83,0x66,0x66,0x44,0x24,0xaa,0x32,0x13,0x6e,0x27,0x7d,0x6a,0x41,0xf3,0xc2,0x38,0x87,0x52,0x10,0x23,0x33,0x19,0x2f,0x74,0xf8,0x6c,0x5b,0xd9 },
{ 0x0f,0xa8,0x22,0xbc,0x28,0x11,0xaa,0xa5,0x84,0x92,0x59,0x2e,0x32,0x6e,0x25,0xde,0x29,0x49,0x3b,0xaa,0xad,0x65,0x1f,0x7e,0x90,0xe7,0x5c,0xb4,0x8e,0x14,0xdb,0x63,0xbf,0xf4,0x4a,0xe8,0xf5,0xdb,0xa8,0x0d,0x6f,0x4a,0xd4,0xbc,0xb3,0xdf,0x18,0x8b,0x34,0xb1,0xa6,0x50,0x50,0xfe,0x82,0xf5,0xe4,0x11,0x24,0x54,0x5f,0x46,0x2e,0xe7 },
{ 0x84,0xe9,0xdc,0x61,0x97,0xf6,0x90,0x0e,0x29,0xe5,0x2f,0x4a,0x54,0x61,0x5f,0x32,0x4e,0x22,0x7a,0x17,0xaf,0x70,0xeb,0x90,0xda,0xa7,0x66,0x06,0x0e,0xbb,0xe3,0x27,0xc8,0x81,0xf9,0x52,0x97,0xa9,0x96,0xb6,0x07,0x52,0x90,0xc4,0xee,0x9c,0x9c,0xdd,0x25,0x41,0x8d,0x3d,0x2a,0xf4,0x48,0x78,0x7b,0xd5,0xb6,0xf4,0x26,0xb9,0x95,0x8c },
{ 0x03,0x1a,0x87,0x47,0xdf,0x8d,0xc7,0x46,0xe4,0xc1,0x3d,0x03,0x06,0x96,0x08,0x01,0x53,0xfe,0x44,0x8a,0x57,0x32,0x45,0x91,0x79,0x4a,0x16,0xba,0xa0,0x5f,0x57,0xb5,0x88,0x3a,0x2c,0x64,0xfd,0xa8,0xd5,0x86,0x60,0xe8,0xaa,0x6c,0x1e,0x38,0x7a,0x32,0x14,0x31,0xc1,0x8c,0x42,0xb8,0xde,0xf2,0x18,0x27,0xee,0x57,0x9c,0x03,0x43,0xfd },
{ 0x54,0xfa,0x4c,0x8c,0x89,0x3b,0xef,0xfe,0xf6,0x8f,0x58,0xc3,0xbd,0x1b,0xdf,0xa4,0x0f,0x3c,0x27,0xf7,0x42,0x2a,0x64,0x57,0x45,0xf5,0x0c,0x57,0xba,0x49,0x94,0x48,0x6a,0x2e,0x9e,0x75,0x23,0x95,0xce,0x94,0x10,0x8e,0x16,0x80,0x56,0x8c,0x11,0x7f,0x97,0xbe,0xf0,0xfd,0xc3,0x9a,0xcd,0x91,0x91,0xcb,0xdf,0xed,0x24,0xb3,0xf5,0xcd },
{ 0xa7,0x16,0x3c,0x2b,0x9b,0x97,0x3c,0x17,0xf9,0x57,0x19,0x75,0xc0,0xd5,0x93,0x4a,0x4e,0xcc,0xac,0x60,0x96,0x51,0x3c,0xca,0x01,0x5e,0x2e,0x65,0x58,0x0b,0x23,0x22,0x30,0x8a,0x9a,0x79,0x7a,0xf3,0x1f,0xa5,0x63,0x38,0x99,0x91,0x54,0x5a,0x6b,0x7a,0xb8,0x41,0xa4,0xf4,0xe0,0x99,0x52,0xd7,0x39,0x33,0xb2,0x23,0x21,0x97,0xff,0xe9 },
{ 0x93,0x08,0xc0,0x49,0x33,0x99,0xf0,0xe3,0xcb,0x19,0xe4,0x79,0x59,0x7a,0x47,0xfd,0x66,0x24,0x85,0xf7,0xf7,0x71,0x41,0x0e,0xa7,0x64,0x0b,0xd9,0x87,0xe9,0xb9,0x88,0xfa,0x4c,0xcf,0x36,0xda,0x25,0xb5,0x47,0xea,0x1d,0xeb,0x1f,0x57,0xb9,0xf6,0x09,0x56,0xeb,0xde,0x60,0x85,0x99,0x2e,0xbe,0x2a,0x67,0xb3,0x14,0xad,0x84,0xa7,0x6b },
{ 0x1b,0xff,0xab,0x8c,0x03,0xab,0x82,0x79,0x81,0x1b,0x39,0x23,0xef,0x4b,0x99,0x1f,0x02,0xa5,0x0c,0x38,0x2d,0xb2,0x67,0x0c,0x6c,0xb0,0x4a,0x6a,0x5c,0x42,0xa2,0x80,0x29,0x82,0xb6,0x20,0xce,0xb1,0xd0,0x98,0x33,0x2a,0xc7,0x58,0x52,0x9f,0x1a,0xaa,0x98,0x2a,0x36,0x9a,0xa9,0xd2,0x4f,0xb6,0xc9,0xc7,0x42,0x36,0x4d,0xdb,0x92,0x61 },
{ 0x31,0xeb,0xee,0xe3,0x37,0x88,0xa2,0x79,0xd2,0x05,0x2a,0x2a,0x6d,0xee,0xad,0x69,0xa5,0x74,0x7a,0x36,0x16,0x4f,0x8d,0x32,0xfa,0x7e,0x23,0xca,0xc2,0xfa,0x06,0xc5,0xf3,0x74,0xf7,0xf8,0x60,0xae,0x72,0xaa,0x55,0xe5,0xf6,0x90,0xea,0x3d,0xa4,0x4c,0x2f,0x08,0x28,0xf8,0x5b,0x56,0xc4,0x63,0xa4,0xcf,0xac,0x99,0xd3,0x10,0x42,0x93 },
{ 0x54,0xbc,0x18,0xd7,0xa9,0x98,0x99,0x54,0x7d,0xdc,0x69,0x88,0xd7,0xee,0x1b,0x3f,0x2b,0x48,0x1a,0xb4,0x43,0xda,0x43,0xff,0x68,0xf4,0x13,0x05,0xb7,0x6a,0x69,0x87,0x4b,0x2c,0x8c,0x12,0x11,0xe6,0xea,0xf3,0x73,0x91,0xb8,0x51,0xba,0x73,0xe2,0xfd,0x52,0xeb,0x8e,0xd4,0xbb,0x73,0xb1,0x19,0xfe,0x45,0x7c,0xd0,0x5b,0x9a,0xae,0x49 },
{ 0x53,0x4a,0x48,0x26,0x07,0x64,0xde,0x55,0xb2,0xae,0x1a,0xb4,0xb1,0x9c,0x81,0x58,0x19,0xad,0xe5,0xe1,0x9c,0x14,0x00,0x01,0x52,0x03,0x8b,0x0b,0x56,0x13,0xcb,0xcb,0x53,0xfe,0xb8,0x98,0xaf,0x82,0x52,0xae,0x06,0xf5,0x7d,0xe5,0x7f,0xf8,0xaf,0x6e,0x4d,0xce,0x9e,0x6d,0x2f,0xa7,0xc4,0xf8,0x8e,0x77,0xa6,0x50,0xbe,0x9a,0x4d,0x95 },
{ 0x1f,0x38,0x00,0x71,0x78,0x1d,0xff,0x16,0xf3,0x3d,0x81,0x73,0xa6,0xfb,0x4d,0x96,0xba,0x77,0x0f,0x18,0x35,0x5c,0xca,0x4c,0xb2,0xa6,0x4c,0x61,0x96,0x26,0x02,0x50,0xb1,0x52,0x1e,0xc4,0xba,0x6c,0x68,0x1d,0xa3,0x37,0x05,0x17,0x6c,0xa2,0xcf,0x62,0x1b,0x85,0x67,0x66,0x05,0x90,0xd6,0x93,0xb1,0x51,0x9b,0x2e,0x6b,0x01,0x19,0x55 },
{ 0xda,0x96,0x4b,0xb1,0x68,0xf5,0x83,0x6a,0x9a,0x00,0x54,0x71,0xf9,0xf4,0x8f,0x2c,0x90,0xf0,0xa6,0x60,0x6b,0x84,0x16,0xcd,0xed,0x52,0x33,0x9e,0x46,0x4a,0x8f,0xf1,0xc9,0x94,0x92,0x0a,0x1d,0x68,0xc7,0x0b,0x44,0x5c,0x67,0x0d,0x6b,0xda,0x9b,0xcb,0xbe,0x9a,0x65,0x56,0x27,0x0b,0x17,0x82,0xca,0xd5,0x17,0x99,0x58,0xc4,0xba,0x40 },
{ 0x99,0xeb,0xa1,0x92,0xaa,0xdb,0x01,0x9f,0x41,0xe0,0xbe,0x2b,0x78,0x92,0x73,0xa0,0x58,0xe6,0xea,0x55,0x22,0x20,0x34,0xf3,0xea,0x6d,0x95,0xd1,0x77,0xae,0x84,0xda,0xfc,0x4d,0xc4,0xcd,0xe1,0xef,0xbf,0xd9,0xf4,0xf8,0x06,0x64,0x45,0x30,0x18,0x4d,0xb6,0x30,0xd8,0x66,0xd7,0x10,0x8d,0x10,0x8d,0xa3,0x9d,0xbe,0x02,0x15,0x5c,0xac },
{ 0xaa,0xb0,0x22,0x7b,0xa8,0x43,0xf6,0x2e,0xa0,0x70,0xfe,0xa3,0x44,0xea,0x15,0xca,0x79,0x11,0xb6,0xf6,0xe0,0x43,0xcd,0x97,0xe7,0xb3,0xea,0x88,0x1a,0x30,0x26,0x32,0x71,0x2a,0x7e,0x22,0xa8,0x10,0xcc,0x61,0xee,0xe5,0xe2,0x76,0xbc,0xf5,0xf8,0xea,0xae,0xbe,0x42,0x33,0x8c,0x96,0x43,0x4c,0xe9,0x91,0x0b,0xa0,0x99,0x44,0x33,0x8b },
{ 0x6d,0x50,0x85,0x64,0x33,0x96,0x84,0x35,0xfc,0x59,0x45,0xce,0x21,0x62,0x1e,0x08,0x9d,0x4e,0x99,0x3b,0x76,0x04,0xa5,0xfa,0x89,0x6b,0xf7,0xc7,0xf7,0xf9,0x60,0x03,0xcc,0xf5,0x73,0x57,0xe9,0x68,0xc6,0xe7,0xc6,0xbc,0x5d,0x8a,0xa2,0xc7,0xee,0xf9,0xd6,0xc0,0xd6,0xdc,0x82,0x63,0xa0,0xd9,0x02,0x71,0xcc,0xaa,0xac,0x7e,0x96,0x9c },
{ 0xbf,0xf2,0xbf,0xd3,0x46,0x2a,0xc9,0x89,0xeb,0x42,0x63,0x2d,0x06,0xf1,0x83,0x83,0x17,0x62,0xd5,0x40,0x87,0xfc,0xe1,0x8b,0x70,0xa2,0xbd,0xe7,0x2a,0xd1,0xa9,0x42,0x76,0x01,0x26,0x7b,0xf3,0x19,0x1c,0x30,0xd2,0x41,0x29,0x0a,0xbc,0x4d,0x90,0x82,0xc7,0xbd,0x21,0xac,0xbd,0xfc,0x3c,0xd4,0xc2,0x73,0x9e,0x6d,0xfc,0xc1,0x6b,0xb2 },
{ 0xd4,0x0f,0x0f,0xba,0x01,0x1d,0x4a,0x46,0x08,0x07,0x14,0x47,0x23,0xd3,0xcd,0xcf,0xb8,0x92,0x11,0x6e,0x7a,0xab,0x1b,0x4b,0xe2,0xac,0x83,0xb1,0xeb,0xe7,0x02,0xd4,0x19,0xe1,0xb7,0x83,0x4e,0x7b,0xe7,0xf6,0x5a,0x7f,0x99,0x1f,0x69,0x35,0x5e,0x40,0xb3,0xd5,0xb0,0xa4,0x15,0x70,0xd0,0xbe,0xa0,0x6d,0x12,0x09,0x1d,0x36,0x17,0xa1 },
{ 0x1d,0x35,0xc9,0x69,0x97,0x61,0xe3,0xf2,0x85,0xf2,0x48,0x23,0x92,0x67,0x75,0x6f,0x51,0x94,0xb8,0x52,0x79,0xf9,0x6b,0x7c,0x60,0xaa,0xfa,0xd1,0x70,0xaa,0xe2,0x31,0xc7,0x22,0x6c,0xb6,0x2d,0xf6,0x08,0x23,0x1d,0x66,0x0a,0xb6,0x22,0xeb,0xf8,0x10,0xed,0xf5,0x8a,0xa4,0x72,0x9a,0x66,0xf1,0x58,0x67,0x06,0x3a,0xcc,0xd6,0xac,0x71 },
{ 0x8b,0xe7,0xf8,0x99,0x6d,0x72,0x5c,0xe4,0xeb,0x6a,0x35,0x13,0x55,0xf7,0xe8,0x5a,0x2d,0x2e,0xab,0x45,0x64,0x8c,0x6e,0x30,0xb8,0x72,0x42,0x2f,0xee,0x38,0x96,0xb2,0x92,0x16,0x0e,0x60,0x13,0x22,0xed,0xae,0x79,0xc9,0x97,0xe7,0x27,0x55,0xd6,0xba,0xd7,0xe0,0x49,0x09,0x3a,0xcf,0x17,0xa9,0xf5,0xd8,0xd9,0xe0,0xcf,0x4b,0x6b,0xe2 },
{ 0x6f,0x2b,0x06,0x5a,0x78,0x00,0xcd,0xd8,0x99,0x10,0xe1,0xc2,0xa6,0x39,0x7a,0xb4,0xd9,0xc9,0x82,0x3c,0x2b,0x47,0x39,0x03,0x50,0x1a,0x32,0x74,0x26,0x43,0x2d,0x92,0x0a,0xcf,0xeb,0x77,0xe5,0xe7,0xa2,0xe4,0xeb,0x14,0x72,0xcf,0x70,0x08,0x26,0xc5,0x09,0x3b,0xf0,0x2d,0xe3,0x3d,0xbe,0xcb,0x6d,0x2d,0x1c,0x49,0x63,0xe1,0x7c,0x9f },
{ 0x54,0x75,0x66,0xd3,0xc0,0xfe,0xf4,0x1c,0xed,0x64,0x64,0x10,0xc3,0x62,0x22,0x50,0xd2,0xfb,0xd2,0xa3,0xe0,0xdf,0xe7,0x18,0x69,0x0e,0x61,0xc8,0x38,0xbd,0x30,0xa8,0xea,0x7e,0x5b,0xa9,0x66,0x2b,0x1e,0x2a,0x63,0x69,0xd4,0x31,0x02,0xa1,0x96,0x71,0xec,0x9b,0xa5,0xd3,0x67,0x85,0x1d,0xfa,0xa0,0xee,0x16,0xbd,0xf0,0x98,0xa6,0x73 },
{ 0x87,0x0a,0xc1,0x2b,0xa3,0xdd,0x77,0x74,0x68,0x99,0x1d,0xa7,0xfd,0xad,0xd0,0xaf,0x2f,0x33,0x52,0x56,0x96,0x62,0x87,0x6b,0xe3,0x06,0x5e,0x08,0x8a,0x6e,0xdb,0xf5,0x75,0x43,0x72,0x8b,0x99,0x9a,0x76,0x99,0x8d,0xe7,0xef,0xd7,0x69,0xd0,0x5a,0x67,0xd0,0x3c,0x64,0x02,0x2e,0x5f,0x29,0x7e,0x19,0x06,0xd2,0xdc,0xf0,0x2f,0x8c,0xe3 },
{ 0x6e,0x80,0xa8,0x74,0x58,0x0c,0x8e,0x5e,0x56,0xa0,0x66,0xc5,0x3b,0x4d,0x05,0x44,0xda,0x0d,0x4d,0x93,0x53,0x63,0x26,0xdf,0x63,0x7d,0xfd,0xa0,0xe8,0x06,0x54,0x0c,0x19,0x4d,0x68,0x57,0xd6,0x07,0xbb,0x8c,0x64,0x49,0x80,0x1c,0xa4,0xda,0xa8,0x7a,0xd8,0x02,0x36,0x53,0xb4,0x35,0x67,0x73,0xbc,0x4a,0xfa,0x8f,0x42,0x60,0x3c,0x73 },
{ 0xdb,0xec,0x13,0xe6,0xda,0x0d,0x55,0x92,0xa0,0xbf,0x5f,0xef,0x80,0x34,0xdb,0x34,0x6a,0x9e,0x8c,0x74,0x9f,0xdb,0xf0,0xf0,0x7a,0xa6,0xe4,0x63,0x50,0xc0,0x6a,0xf3,0xf8,0x59,0x97,0x8f,0xd6,0x19,0xe5,0xf8,0xc0,0xe5,0x73,0x48,0xb7,0x45,0xe4,0xd4,0x42,0x24,0x3a,0x32,0x64,0xed,0xb6,0x64,0x7c,0xaf,0x0f,0x7c,0xb6,0xd2,0x43,0xed },
{ 0xb3,0x49,0xfd,0xa2,0xa6,0x0f,0x85,0xda,0x5c,0x4a,0x1a,0x13,0x84,0x33,0x06,0x1f,0x70,0x5d,0xac,0x68,0x44,0xae,0x61,0xf2,0xf9,0xb9,0x4b,0x87,0xf9,0x4f,0xa2,0x9d,0x89,0x09,0x96,0xd4,0xda,0x58,0xa1,0xd7,0x7d,0x30,0x32,0xc6,0x34,0xa1,0xfa,0xeb,0xd3,0x8b,0x43,0xc0,0x1e,0xee,0xd4,0x2e,0xde,0x9b,0x55,0xe3,0xa1,0xba,0x97,0x25 },
{ 0x55,0xd9,0xa9,0x59,0x84,0x4b,0x5a,0xef,0x38,0x8f,0xf0,0xf7,0xaa,0x02,0xf2,0x9a,0xcb,0xf5,0xca,0x9a,0xa5,0x67,0xe0,0xe6,0x55,0x72,0xae,0xa8,0x75,0x0e,0x4f,0x5f,0x69,0xcb,0x7f,0x9a,0xa5,0xda,0xd2,0x03,0x76,0x6d,0x57,0x4f,0xbc,0xc8,0xec,0x52,0x4c,0x98,0x10,0xc6,0x33,0xad,0x1b,0x15,0xc8,0x58,0xeb,0x76,0xbc,0xa9,0x7d,0xb0 },
{ 0xe9,0xf3,0x2c,0x1a,0xd6,0xb0,0x99,0x80,0xd2,0xb4,0x33,0xea,0xad,0x0b,0x42,0xe2,0x6c,0xd0,0xf5,0x8d,0xad,0x06,0x3b,0xe4,0xd1,0x43,0x37,0xbc,0x33,0xc3,0x80,0xa9,0x43,0x26,0xed,0x98,0xaf,0x83,0xb5,0xa4,0x1f,0x5d,0x0b,0x89,0x27,0xb2,0x12,0xee,0xcb,0xcb,0x2d,0xc0,0x1d,0x8e,0xd7,0x1d,0x00,0x02,0x03,0x90,0x92,0xb2,0x59,0xef },
{ 0x8c,0x76,0x68,0x9b,0xa7,0x8a,0x16,0x61,0x38,0xf9,0x43,0x4c,0x2f,0x72,0xe6,0x62,0xf5,0x17,0x32,0x3e,0x3f,0x09,0xb5,0xd3,0x07,0x58,0xcb,0x4d,0x57,0xc6,0xf8,0xfb,0xcd,0x31,0x72,0x99,0x0a,0x40,0x9d,0x3a,0x28,0x84,0x89,0xb0,0xc6,0x3d,0x6d,0xcd,0xf0,0xb1,0x1f,0xc3,0x13,0x6b,0xc0,0x5f,0x7d,0xc5,0xb3,0x9a,0x9b,0xcf,0x23,0x06 },
{ 0x71,0x02,0x62,0xac,0x2a,0xdf,0xbf,0x4c,0xae,0x3a,0x73,0x73,0x95,0x93,0x49,0xce,0x40,0xb6,0xd6,0xf3,0xd2,0xb0,0x0c,0x3d,0x6b,0x6e,0xe9,0x01,0x9b,0xd2,0x1f,0x7b,0x76,0xc8,0xd3,0xf2,0xc1,0x41,0x33,0x3e,0xd5,0x71,0x6c,0x6c,0x68,0x03,0x9a,0x7a,0xe9,0x2b,0x6a,0xe2,0x31,0x3f,0x3a,0x12,0x17,0x7c,0xac,0xb5,0x61,0x11,0x1f,0x80 },
{ 0x3f,0xb5,0x90,0x9a,0x93,0xdf,0xe4,0x6a,0xf0,0xc6,0xa4,0x16,0x92,0x81,0xbf,0x87,0x46,0x54,0x37,0x68,0xce,0x5e,0x12,0x44,0x1e,0xe4,0x5f,0x92,0xed,0x69,0xf1,0xd5,0x54,0x99,0x91,0xac,0x0b,0xe8,0x80,0x9f,0x70,0x4a,0x4e,0x3a,0x3b,0xdf,0x77,0x54,0x25,0xd3,0x56,0x88,0xfd,0x05,0x62,0xb0,0x13,0xd4,0xfe,0xfe,0x99,0xa5,0x6c,0xc5 },
{ 0x67,0x2e,0x2a,0x9a,0x5e,0xf9,0xfc,0x86,0xaf,0x62,0xb0,0xea,0xe0,0x2f,0x89,0xb6,0xf3,0x1a,0xb7,0xf4,0x32,0x3e,0x3d,0x87,0xdd,0xda,0xe0,0x84,0xa3,0xda,0x15,0xde,0x0d,0x3e,0xde,0xf5,0x01,0x20,0x38,0xcb,0xa6,0x25,0xab,0x9a,0xcc,0x94,0x31,0x9d,0xb2,0xe1,0xc5,0x00,0x70,0xba,0x17,0x56,0xf1,0xf0,0xf5,0xc8,0x05,0x0e,0x05,0x1b },
{ 0xc3,0x4a,0xce,0x1c,0xe5,0xdd,0x90,0x40,0x8a,0xe2,0x27,0xe1,0x6f,0xea,0xf2,0x53,0x7f,0xea,0xbb,0x0c,0xbe,0xed,0x3e,0x03,0x50,0x6f,0x12,0x70,0xbd,0xe7,0xbc,0x7f,0xe1,0xef,0x3b,0x3a,0x00,0x98,0x57,0xe2,0xe6,0x23,0xb8,0xbe,0x80,0x16,0x6f,0x12,0xd6,0x55,0x42,0x99,0xbd,0x55,0xa4,0x42,0xae,0xb6,0x39,0x80,0x69,0x78,0x06,0xc4 },
{ 0x98,0x01,0x2a,0x98,0xae,0x6c,0x08,0x20,0x26,0x11,0x40,0x8c,0x84,0x08,0x6c,0x64,0x39,0x7f,0x29,0xae,0x08,0x6a,0x99,0xa1,0x67,0x14,0xe3,0x72,0x4c,0x01,0xa8,0x58,0x58,0xc2,0x9a,0xd5,0x9d,0x12,0x0a,0x4e,0x78,0xd1,0x06,0xd2,0xfb,0x37,0x3e,0xea,0xa3,0x0c,0x9d,0xe1,0xff,0xe8,0x94,0x4a,0xd3,0xdf,0x16,0x40,0xde,0x6b,0x9b,0xb7 },
{ 0x2b,0x0b,0xdf,0x62,0xef,0x9c,0x19,0x0d,0x31,0xb8,0x23,0x5f,0x32,0xa6,0x3f,0xf3,0x91,0xca,0xd6,0x05,0x8a,0x63,0x9f,0x40,0x8b,0x33,0x36,0x19,0x05,0xcb,0xee,0xd3,0x55,0xfd,0x07,0xb2,0xf1,0xb2,0xad,0xcd,0xfc,0xe3,0xf0,0xed,0xd6,0x36,0x2c,0x5b,0xc0,0x78,0xd8,0x00,0x41,0xe8,0xb1,0x4a,0x22,0xa4,0xac,0x86,0xcb,0x9c,0x9c,0x1e },
{ 0x6e,0x29,0xf9,0x59,0xbe,0x28,0xc4,0x7f,0xae,0x5a,0xbc,0xa1,0x85,0x75,0x5c,0x08,0x34,0x69,0x24,0x37,0x6f,0x54,0x12,0xc1,0xd4,0xd3,0xd2,0xde,0x43,0x51,0x96,0x4c,0x34,0x56,0x5d,0x9f,0x50,0x0f,0x32,0xf6,0x50,0x52,0xec,0x6c,0xc1,0x84,0x24,0x6d,0xef,0x64,0x0c,0x52,0x7a,0x0b,0xfb,0x63,0x11,0x88,0x24,0xbd,0x56,0x3f,0xd8,0x8f },
{ 0x23,0x98,0xf4,0x0a,0xba,0x81,0x7d,0xf6,0x28,0x10,0x26,0x6d,0x88,0x60,0xa0,0x55,0x1b,0x6a,0xcf,0x6d,0x79,0x4b,0x33,0x09,0xe0,0x39,0xac,0xd6,0xdf,0x55,0xbe,0xf5,0x06,0xa7,0x73,0xd0,0xb9,0x64,0xf3,0x56,0x4e,0xaf,0xa9,0x55,0x60,0xfc,0x1f,0x66,0x1a,0x93,0xf4,0xe5,0x19,0x06,0x05,0x39,0x59,0xfb,0x47,0x91,0x9e,0xc0,0x4c,0x5b },
{ 0x8e,0xfa,0x0f,0x79,0xb5,0x90,0x9a,0x0b,0x10,0xcf,0xa3,0x81,0x49,0x6e,0x68,0x94,0x3b,0x09,0xf0,0x77,0x6e,0xd9,0x0c,0xad,0x61,0xe0,0xf0,0xef,0xe5,0xe8,0x4d,0xa4,0x24,0x24,0x18,0xe7,0x93,0x4c,0xd6,0x13,0x9f,0xa4,0x6f,0x1c,0x5d,0xaa,0xfd,0x14,0x79,0x95,0x7c,0x48,0x97,0x81,0x60,0x35,0xfd,0xe1,0x9f,0x42,0x59,0x69,0x69,0xd3 },
{ 0x61,0xcb,0xee,0x27,0xd6,0x6e,0x40,0xe1,0x58,0xc4,0x1a,0x57,0x9f,0x0d,0x6e,0xa9,0xee,0x41,0x4b,0x2c,0x5e,0x19,0x3c,0x8b,0x06,0x86,0x63,0x2d,0x0e,0x20,0xee,0x17,0x4c,0x36,0x2a,0xf7,0x54,0xa6,0x76,0x3a,0xf7,0x6a,0x52,0x54,0xb0,0x62,0x05,0xed,0x18,0x7e,0x6e,0x77,0xfc,0x73,0xaf,0xa9,0xb3,0xc9,0xde,0x6a,0xd6,0xca,0x63,0x79 },
{ 0xd0,0xd4,0xaf,0x73,0xcb,0x8f,0xdb,0x30,0xb9,0xd6,0xd6,0xd0,0xf3,0x60,0xdb,0x2f,0x1f,0x89,0x73,0xe3,0x1e,0xb3,0xf3,0x97,0x4a,0xca,0xf2,0xc0,0x02,0x3a,0xc4,0xce,0xed,0x90,0xf8,0xc8,0xf1,0x5d,0x7d,0xdc,0xbb,0xe9,0xcc,0xee,0x3e,0x52,0x95,0x30,0x61,0x85,0x0b,0x1c,0x86,0x3a,0xae,0x77,0xe3,0xdf,0x03,0x60,0xa4,0x7d,0xd6,0xb9 },
{ 0x40,0xa9,0x0e,0x7f,0x4e,0x7e,0x43,0x40,0x03,0xd2,0x75,0x2d,0x30,0x72,0x28,0x1b,0xe4,0x1b,0x98,0xac,0xa2,0xff,0x39,0x53,0x4f,0xf7,0xc2,0x00,0xba,0x2d,0xba,0xef,0xd3,0xc3,0x38,0x7e,0x06,0xc3,0xe6,0xb9,0x5a,0xcb,0x07,0x38,0x1d,0x0d,0x06,0x44,0xd7,0x89,0x31,0x7d,0xdd,0x7c,0xb4,0x26,0x7e,0xc1,0xe8,0x44,0x20,0xd6,0xb7,0x21 },
{ 0x82,0x9b,0x8d,0xd0,0xed,0x54,0x52,0xe8,0xa6,0xd6,0xf7,0x1b,0x65,0xb8,0x5f,0x90,0x38,0xd1,0xd6,0x02,0x51,0x25,0x6e,0xac,0xe3,0x99,0xda,0x61,0x92,0x39,0x7d,0x42,0xd3,0x00,0xec,0x54,0x3f,0xcc,0xf4,0x6d,0x99,0xe7,0x3c,0x8a,0x89,0x62,0x41,0xaf,0x5c,0x5a,0xdc,0x42,0x63,0xad,0x1a,0x5d,0x91,0xb7,0x16,0x31,0xe3,0xdf,0x56,0x12 },
{ 0x51,0x52,0x32,0xd4,0x77,0xa8,0x48,0xf3,0x47,0xcb,0x0b,0xf5,0x6a,0x41,0xcc,0x02,0x31,0x32,0x43,0xf4,0x02,0xfe,0xd7,0xa9,0x60,0x1d,0xe6,0x30,0xab,0x3c,0x58,0x33,0x2f,0x87,0x8d,0x4a,0xca,0xb0,0xda,0xef,0xae,0xbf,0x15,0x7d,0xfd,0xf2,0xa2,0x0f,0x4d,0x0d,0xa8,0x9e,0x8e,0x7b,0x29,0x7c,0x1f,0xb6,0x13,0x5b,0x6f,0xa5,0x3d,0xef },
{ 0xff,0x04,0x6a,0x9e,0xb2,0xbf,0xee,0xd9,0xc0,0x0f,0x2e,0xf0,0x79,0x6f,0x45,0x8e,0xc1,0x41,0xc2,0x59,0xa8,0x45,0x63,0x11,0x28,0xa7,0xd4,0x11,0x0c,0xb7,0x12,0x80,0x43,0x2f,0x55,0xac,0xc0,0x95,0x3a,0x17,0x0a,0x01,0xed,0xdb,0xdd,0x4c,0xfc,0xc9,0x01,0x2b,0x6e,0x6e,0xbd,0x28,0x48,0x7a,0x7e,0xc3,0x27,0x1f,0x5e,0xc3,0x39,0x19 },
{ 0x37,0x44,0x64,0x98,0x6f,0x8e,0x59,0x0b,0x0a,0xa5,0x86,0x0e,0x0e,0x98,0xfc,0xa4,0xfa,0x27,0x8f,0x23,0xe9,0xd3,0x94,0x65,0xd7,0xb6,0x5d,0xf7,0xb0,0x9f,0xa6,0xfb,0x7d,0x81,0x54,0x3d,0x27,0x24,0xe5,0xbc,0xd3,0x1a,0x3d,0x7e,0xf9,0xb6,0xfc,0x55,0x80,0x68,0xcf,0xce,0x4a,0xc6,0x07,0x34,0x70,0x56,0xce,0x9f,0x59,0x1c,0xbc,0xd1 },
{ 0x58,0x90,0xc0,0xf3,0x34,0xdd,0xc2,0xb0,0x8f,0xab,0xbc,0xcc,0x41,0x28,0x7d,0xf4,0x01,0x17,0x45,0xf8,0x56,0xde,0x35,0xac,0xb2,0xbd,0x41,0xc7,0xb0,0xb3,0xda,0x07,0xcc,0x9e,0xac,0x78,0x8b,0x1d,0x9c,0x04,0x5e,0x46,0x04,0xfa,0x4f,0x79,0x27,0x26,0x55,0xa2,0x79,0xce,0x3e,0x2a,0x81,0x66,0x62,0x3d,0x0a,0xe8,0x8d,0x38,0x13,0xe0 },
{ 0xea,0xbf,0x3e,0x3a,0xb8,0x99,0x64,0x2b,0x6f,0xec,0x7f,0x0e,0xa0,0x6c,0x64,0xc1,0xc3,0xb4,0xec,0xc7,0x0a,0x17,0x93,0xea,0xb3,0xd0,0xb4,0x13,0x98,0x0a,0x95,0xb6,0x27,0xfb,0xb1,0xbf,0x74,0xee,0x4f,0xd8,0x0d,0xb8,0x30,0x73,0x4a,0x1f,0xfb,0x4d,0xbe,0x21,0xb6,0x2e,0x79,0xb5,0x80,0x52,0x11,0x8f,0x57,0x20,0xf3,0xf8,0xa3,0x41 },
{ 0x6e,0xec,0x95,0x67,0x0d,0x54,0x65,0x0c,0xc1,0x4b,0x66,0xdd,0x02,0x43,0x68,0x93,0xff,0xdc,0x67,0x94,0x2d,0x66,0x68,0x17,0xfd,0xc7,0x3e,0x83,0xbf,0x78,0x0c,0x2c,0x14,0xbb,0x53,0x50,0x99,0x77,0x32,0xc2,0xfc,0x28,0x1d,0xe0,0x65,0xea,0x01,0x05,0x79,0xab,0x66,0x15,0x3a,0x07,0xff,0x89,0x08,0x9e,0xc1,0xa1,0xed,0xbf,0xcd,0x32 },
{ 0x4a,0xd9,0x17,0x86,0x07,0x91,0xf2,0xfd,0x24,0xca,0x65,0x1c,0x09,0xe6,0x7f,0x15,0xe9,0x30,0xf0,0xfa,0x27,0x49,0xe6,0x22,0x32,0x9b,0xa8,0xc1,0xad,0x5b,0x27,0xbb,0xa5,0x89,0xcb,0x5a,0x0d,0x7e,0xdb,0x08,0x50,0xfb,0xea,0x2d,0xb2,0x3f,0xb8,0x0b,0x6b,0x95,0xc7,0x22,0x05,0xc9,0x49,0x36,0x41,0xd5,0xf7,0xda,0xea,0x0c,0x76,0x20 },
{ 0xa0,0xe2,0x41,0x0c,0xd0,0x9c,0x01,0xa1,0xb7,0x94,0x70,0xf6,0xad,0x3d,0xa8,0x29,0x08,0xf6,0x95,0x91,0xee,0xb5,0x1b,0xd8,0x53,0xd6,0xd6,0xe9,0x01,0x9f,0xc5,0x55,0x1e,0x29,0x64,0x8c,0x71,0xbf,0xde,0xd4,0x2a,0xc3,0xb5,0x7b,0xa5,0xb2,0xfe,0x89,0x8b,0xba,0xf1,0x9f,0x6b,0x66,0x79,0x30,0xcf,0x34,0x08,0x18,0xc1,0xac,0x6d,0x8d },
{ 0x00,0xe5,0x6d,0xeb,0xa6,0xb4,0x2e,0x01,0x0a,0x2e,0x33,0x3d,0xd0,0xb9,0x79,0x62,0xf3,0x41,0xf8,0x7c,0x02,0xb1,0xdc,0x06,0x67,0xda,0x40,0x53,0x51,0xd4,0x57,0xbf,0xc1,0x28,0xce,0x89,0xc5,0xd6,0x28,0x17,0x5a,0x86,0xd7,0xea,0x70,0x0e,0xeb,0x12,0x24,0x58,0x70,0x53,0xa3,0x00,0x9a,0x7c,0x53,0xf7,0xc9,0x9c,0x55,0xef,0x66,0xe5 },
{ 0x64,0x41,0xdb,0x54,0xc1,0x72,0x39,0x0d,0x40,0xf5,0xaa,0x46,0xd3,0xc6,0x53,0xdd,0x41,0x13,0xed,0x9b,0xd1,0x8b,0x8b,0xab,0x71,0x4a,0x74,0x4b,0xbd,0xbb,0x63,0x91,0xb7,0x47,0x22,0x2f,0x03,0x61,0x7b,0xd0,0xa1,0x8a,0xae,0x58,0xc6,0x13,0xca,0x69,0x89,0x0b,0x28,0xd6,0x7a,0x5c,0x6d,0x2f,0xf6,0xa8,0x03,0x57,0xe4,0xb0,0x52,0x4e },
{ 0xe4,0x86,0xc7,0xdf,0xfe,0xab,0xb0,0x58,0xc1,0xf9,0xaa,0x23,0x49,0xee,0x7e,0xff,0x8b,0x2c,0x7e,0x63,0xcf,0x57,0x0c,0xc5,0xc7,0xd0,0xb2,0x4c,0xc5,0x85,0x2e,0x50,0x51,0xfd,0x75,0xed,0x56,0x06,0xa1,0x2e,0x9e,0xe8,0x8a,0x5c,0x9f,0x51,0xe0,0x5a,0x69,0x44,0x63,0xd6,0x33,0x92,0xeb,0xd8,0x66,0xba,0x3c,0xad,0xae,0xcf,0x10,0x7d },
{ 0xc0,0xc3,0xe0,0x7e,0x45,0xc4,0x61,0xfa,0xf4,0x5d,0xb7,0x22,0x03,0xc1,0x69,0x3f,0x07,0x8e,0x30,0x9c,0xb4,0x31,0xfc,0xb8,0x30,0x17,0x42,0xfb,0xd9,0x65,0x74,0x8f,0xeb,0xb7,0x6e,0x29,0x11,0x0c,0xe2,0x9d,0xd1,0x17,0x95,0x54,0x20,0x4f,0x9f,0xfb,0xe8,0x1c,0x87,0x18,0x85,0x81,0x86,0x4d,0xf8,0xca,0xea,0xd2,0xa7,0x39,0x32,0x60 },
{ 0x69,0xa1,0x6e,0x24,0x5a,0x5f,0xcb,0x88,0x21,0xff,0x14,0x41,0x90,0x62,0x76,0xe9,0x63,0xad,0x9e,0x86,0xc3,0x39,0xd0,0xea,0x74,0x50,0x2c,0xa3,0x78,0x69,0x2e,0x20,0xa7,0xc9,0x68,0xcd,0x89,0x1a,0xfc,0x01,0x06,0xf0,0x1e,0x9a,0x4c,0xdd,0xba,0x10,0x11,0x3d,0x28,0x62,0x0f,0x7d,0xa8,0x94,0x99,0x6e,0x69,0xa9,0xb3,0x11,0x6c,0x8f },
{ 0x9c,0xd8,0x34,0xc7,0x89,0x9c,0x7b,0x1f,0x73,0xb6,0x63,0x60,0xd5,0xef,0x84,0x11,0x41,0x1b,0x18,0xcb,0x03,0x10,0xc8,0xbf,0xa5,0x3f,0x36,0x3f,0x91,0x9c,0x57,0x4f,0xba,0x76,0x00,0x0d,0x34,0xbd,0xe8,0xfe,0x43,0xbb,0x43,0x09,0xc8,0x5f,0xed,0x3a,0x50,0x18,0x65,0x20,0xd7,0x1a,0xb8,0xd7,0xd1,0xd1,0x39,0xe2,0x36,0x63,0xbb,0x6d },
{ 0xdc,0xad,0x8b,0x2a,0x7e,0xef,0xb2,0xc7,0x21,0x19,0x0e,0x12,0xfa,0x0e,0x74,0x5a,0x7a,0x39,0xf9,0x5b,0xc7,0x9b,0x0d,0x17,0x47,0xbd,0xe7,0x97,0x06,0xbc,0x8d,0x71,0x8b,0xf1,0x28,0x7a,0xb9,0x1f,0xaf,0x9b,0x22,0x11,0x99,0x3c,0xe0,0x7c,0x0f,0xa3,0x27,0x26,0xc4,0x07,0x7b,0x71,0x7b,0x56,0x47,0x0c,0xfe,0x2e,0xa2,0x97,0xfc,0xf2 },
{ 0x00,0xb5,0x42,0xb8,0xd1,0xd8,0xec,0x9a,0x6a,0xe9,0x82,0x79,0xe3,0x86,0x3a,0xeb,0x1e,0xbe,0x23,0x46,0x1a,0xe4,0x08,0xf9,0x41,0xc0,0x3c,0x6d,0x77,0x74,0x6b,0x6c,0x33,0x98,0x3a,0xce,0x84,0x9e,0xaa,0xbe,0x71,0xee,0x9c,0xa8,0x05,0x0b,0x79,0x71,0xe2,0xb4,0x5a,0x3a,0xaa,0x1a,0xd5,0xd3,0x81,0x8d,0xb0,0xff,0xcc,0xed,0xcd,0x85 },
{ 0xd9,0xf8,0xb3,0x77,0x1d,0x31,0x8b,0xc5,0x4d,0xca,0x98,0x48,0x22,0x8c,0x57,0xc4,0x13,0xfe,0xa5,0x5a,0xad,0x0e,0x2f,0x87,0xd7,0x27,0x36,0x29,0xaa,0x99,0xad,0x56,0x07,0xaa,0xd6,0x41,0xf0,0xd2,0x23,0x77,0xc6,0x55,0x15,0x57,0xfb,0x70,0xa4,0xa3,0x99,0x5d,0xe5,0x9a,0x31,0xf6,0x3c,0xb4,0xd4,0xe9,0x19,0x38,0x5f,0x5c,0x61,0xb9 },
{ 0x18,0xfc,0x69,0x4f,0x6e,0x6f,0x71,0x2e,0xea,0x15,0x4f,0x24,0x50,0x8f,0xea,0x34,0xe8,0x2c,0xb4,0x97,0x16,0x4d,0x07,0xd7,0x0f,0x1f,0xed,0xc0,0x1d,0xe3,0x14,0xfe,0x17,0x22,0xfe,0x25,0xc6,0x47,0x75,0x33,0x74,0x83,0xdc,0xb1,0x08,0x03,0xf7,0x92,0x07,0x91,0xfd,0x27,0x49,0x4b,0x40,0x05,0x15,0x56,0xcc,0x14,0x63,0xf9,0x20,0xd4 },
{ 0xf4,0x1d,0x7f,0x4b,0xb5,0xe5,0x04,0x30,0xcf,0xe0,0x8c,0xf8,0xb5,0xe2,0xee,0x0a,0xb6,0x3b,0x99,0x98,0xa4,0x3d,0x1f,0xc5,0x84,0xb6,0xb8,0xec,0x2b,0x51,0x91,0x78,0xe6,0xa6,0x69,0xbe,0xbd,0x9a,0xf8,0xd6,0xf1,0x04,0x6d,0xe3,0xfa,0xa8,0x23,0x47,0xab,0x49,0xac,0xc3,0x69,0x19,0xe1,0xf9,0xa7,0xa1,0x66,0x5d,0xca,0x6a,0x35,0x51 },
{ 0x51,0xa3,0x90,0x38,0xf7,0x86,0xca,0x3f,0x7a,0x26,0xbd,0x1d,0xb8,0xdc,0x5f,0xc0,0xf2,0xe9,0x37,0x73,0xb7,0x3c,0xb5,0x2f,0x01,0x51,0xf4,0x9e,0x21,0x8a,0xed,0xab,0xd9,0xb5,0x5a,0x87,0x80,0x0c,0x47,0x5b,0xec,0x91,0x86,0x19,0xb5,0xf7,0x4b,0x77,0xec,0xe3,0x47,0xbd,0xcf,0xe7,0x76,0xfb,0x6a,0xd6,0xcd,0x6d,0xca,0x37,0xbd,0x69 },
{ 0x3b,0x23,0x69,0xff,0x19,0xdd,0xd5,0x91,0xf8,0x5b,0xc3,0xda,0x38,0x81,0xec,0x45,0x0d,0x80,0xe9,0x1b,0xd6,0x61,0x6f,0x3d,0x2a,0x93,0x7e,0x10,0x8f,0x08,0x9b,0x4b,0x5d,0xf1,0x02,0xec,0xb2,0x9a,0x76,0x2c,0x2d,0x22,0x21,0x3d,0xd2,0x7d,0x78,0x76,0x39,0x70,0xe7,0xb0,0x27,0x23,0xe7,0xc1,0xf0,0x65,0x55,0x6f,0x67,0xf0,0x0f,0x4f },
{ 0xad,0x9c,0xf5,0x81,0xd0,0xda,0x05,0x2f,0x28,0xe3,0xbb,0x2b,0x68,0xa6,0x47,0xe8,0x30,0xdb,0x48,0x13,0x81,0x52,0x30,0xec,0x56,0xde,0xf1,0x69,0xb8,0x13,0x45,0xd1,0x07,0x30,0x40,0xaa,0x2c,0xd0,0xea,0x2b,0xb0,0x97,0xe2,0xaf,0x4c,0x33,0x9d,0xc4,0x48,0xa6,0x5f,0xae,0x37,0x8d,0x98,0x90,0xf8,0x2e,0xdc,0x29,0x15,0xbb,0x61,0x3f },
{ 0xec,0xa3,0xee,0xf0,0x04,0x55,0xb4,0x06,0xc7,0x66,0x10,0x93,0x24,0x9b,0xff,0x8f,0x99,0x7c,0xd0,0x6e,0x99,0x9c,0x10,0x20,0xbb,0x18,0x0b,0xc7,0xb8,0x35,0x2a,0xa1,0x9e,0x6b,0xc2,0x81,0xe7,0x8c,0x25,0xb8,0xf6,0xb8,0x63,0xf3,0x7c,0xa7,0x90,0x07,0xa8,0x35,0x9b,0x39,0x9b,0x78,0xed,0x23,0x85,0xf3,0xad,0x39,0xec,0xc1,0x2e,0xa3 },
{ 0xd6,0x03,0x3b,0x0b,0xc2,0x7e,0x2d,0x66,0x2f,0xc2,0x9c,0xc3,0xee,0xc7,0x85,0x36,0xd0,0x99,0x9e,0x18,0xbd,0x75,0xc9,0xfe,0x39,0xdf,0x7c,0x60,0x04,0x1b,0x18,0x88,0x90,0xc5,0x90,0x4a,0x78,0xa0,0x0d,0xc9,0xb0,0xdd,0xa2,0x1c,0xcf,0x9b,0xcb,0xfe,0x91,0x2f,0x71,0x4e,0xcd,0xd8,0xc0,0x48,0xff,0xab,0xfd,0xaf,0xb2,0x1f,0x8a,0xb8 },
{ 0x5c,0x97,0x69,0x9d,0x44,0xb7,0xda,0xff,0xcb,0xa2,0x14,0xb7,0xfb,0x45,0xea,0x98,0x46,0x8f,0x41,0xce,0x1b,0x0d,0xad,0x7b,0xfd,0x94,0xa8,0xb6,0x1a,0x93,0xd0,0x3f,0x47,0x37,0xa3,0x53,0xa4,0xcb,0x0f,0xb1,0x23,0x8f,0xf9,0xa6,0xca,0x28,0xf2,0xec,0x20,0x68,0x0f,0x32,0x74,0x53,0x61,0x59,0x67,0x49,0x9c,0xa9,0x0e,0x6f,0x2b,0xa7 },
{ 0xc5,0x2c,0xdb,0xd2,0x40,0xa5,0x74,0x54,0xfa,0x40,0x8d,0x48,0x2a,0x36,0xb8,0x8f,0x53,0x46,0xef,0x29,0xd7,0xda,0x75,0x7d,0xe7,0x43,0xdd,0x98,0x47,0x8b,0x4b,0x85,0x76,0x31,0x70,0x59,0x7b,0xbb,0x4e,0x8f,0xb3,0xc5,0x14,0x75,0x1d,0xbe,0x49,0x22,0xa9,0xad,0xab,0x85,0x7d,0x70,0x5c,0xb0,0xcf,0xb5,0x39,0xe6,0xb1,0x65,0x48,0x88 },
{ 0xc5,0xa0,0xda,0xf9,0x51,0xcc,0x4b,0xa3,0x3c,0x90,0x7e,0x0b,0x4f,0xff,0x24,0xc2,0x8a,0xbf,0x89,0x68,0x1b,0x3d,0x39,0x16,0x93,0xf6,0xff,0x74,0x54,0x82,0xfc,0x47,0x05,0xeb,0x39,0xe8,0x76,0x7e,0x41,0x48,0x93,0x26,0x82,0x2f,0xfd,0x71,0x43,0x36,0x6c,0x22,0x62,0x67,0x7b,0x18,0xd6,0xab,0x10,0x51,0xd5,0x13,0xb1,0xfa,0x6d,0xaa },
{ 0x4a,0x5b,0x50,0x66,0x12,0xa6,0x77,0xa6,0x57,0x88,0x0b,0x3a,0x18,0xa2,0xe9,0x02,0xe9,0xa5,0x21,0xb0,0x74,0xca,0x01,0x41,0xa8,0x4a,0xa9,0x39,0x75,0x12,0x21,0x8e,0xeb,0x13,0x46,0x1c,0xea,0xc0,0x89,0xf1,0xc4,0x26,0x04,0xfb,0xe1,0x62,0x7d,0x40,0x62,0x6d,0xb1,0x54,0x19,0xe2,0x6d,0x9d,0x0b,0xea,0xda,0x7a,0x4c,0x4f,0x38,0x40 },
{ 0x21,0xb5,0x6b,0x13,0x5b,0x35,0x60,0xcf,0xed,0x6c,0x87,0xb8,0x64,0x80,0xf6,0x54,0xe2,0xcd,0xa8,0x3d,0x08,0xcb,0x3a,0xf4,0xf9,0x60,0xa2,0x84,0xad,0x48,0xf2,0x31,0xe7,0xcf,0x6f,0xbf,0x8a,0x45,0xec,0xc1,0x2b,0x94,0xdb,0x9e,0x3a,0x90,0xaf,0xb0,0xbb,0xf3,0x05,0xf1,0xc9,0xe1,0x17,0xd0,0x04,0x40,0x77,0xee,0xc7,0xf1,0xbc,0x99 },
{ 0xcc,0x8f,0xe9,0xec,0xcc,0xda,0xf5,0x43,0x52,0x14,0x73,0x14,0x3e,0xb3,0x37,0xc5,0xda,0x74,0xbe,0x4d,0x84,0x55,0xb6,0x7c,0x1b,0x68,0xed,0xcc,0xbf,0x8d,0x58,0x42,0xc2,0xa5,0xd0,0x1c,0xd9,0xf2,0xfc,0x3f,0x75,0xce,0xc6,0x14,0x0b,0x91,0xfb,0x77,0x5d,0xf1,0x59,0x2d,0x45,0x86,0x77,0xc8,0x56,0x7e,0x1a,0xc9,0x48,0x71,0x00,0xc7 },
{ 0x80,0x1d,0x62,0x83,0x24,0xd4,0x3e,0x4b,0xf0,0x5b,0xe0,0x83,0xd4,0xcd,0x7b,0x8e,0xfa,0x9f,0x36,0xa8,0xb4,0x83,0x0e,0x67,0x87,0x43,0x17,0xd5,0x5d,0xfa,0x0f,0xf1,0x00,0xc6,0x9b,0xc8,0x95,0x14,0x17,0xdb,0x0f,0x54,0x07,0x9d,0x1a,0xf3,0x2f,0xc8,0x21,0x12,0x3a,0x63,0x3c,0x12,0xc1,0x48,0x78,0x64,0x9b,0xdc,0x88,0xb8,0x28,0xf8 },
{ 0x11,0xc8,0x81,0x39,0x08,0x23,0xd8,0xce,0x80,0x06,0xb5,0x0f,0x37,0xe8,0x62,0x61,0x71,0xb0,0xb9,0x6c,0xbc,0x11,0x84,0xde,0x23,0xf3,0x89,0xbe,0x0c,0x37,0xda,0x54,0x82,0xf5,0xca,0x51,0x67,0x26,0xbd,0xa3,0xa4,0x2a,0xaf,0x13,0xca,0xf6,0x1a,0xe4,0xb3,0xe3,0x2b,0x21,0x38,0x4d,0x2a,0xdf,0x56,0x7c,0x65,0x14,0x08,0xee,0x3d,0xf5 },
{ 0x3e,0x4c,0x52,0x66,0x93,0xe1,0x13,0x1c,0xce,0xdb,0xbf,0xd2,0x93,0x02,0xdf,0xd8,0x00,0xc7,0xde,0x96,0x6d,0x8b,0xe7,0x9c,0x58,0xf5,0x8f,0xcf,0x86,0x9d,0x11,0xe0,0x7d,0x67,0xa0,0x95,0x6e,0xbb,0x32,0x1f,0xc9,0x95,0x4c,0x30,0xd4,0xe5,0x5f,0xa9,0xa3,0x04,0xcf,0x85,0x47,0x82,0x8a,0x95,0x6b,0x03,0xcd,0xfd,0x81,0xa2,0x77,0x85 },
{ 0x9c,0x7a,0x4e,0xfa,0x52,0xa3,0x26,0x80,0x67,0x6e,0x37,0xe7,0xfc,0x8b,0x8d,0x71,0xcb,0x4c,0xb3,0xa7,0x2a,0x5c,0x98,0xea,0x35,0x5c,0x95,0xa1,0xfd,0x69,0x8f,0x73,0xa2,0xc4,0xa7,0x1a,0xb2,0x15,0x0c,0x7b,0x16,0xc4,0x24,0xc1,0xd0,0xad,0xe6,0x9b,0x94,0xb0,0x7c,0xd5,0xea,0x87,0x9e,0x7c,0x12,0x24,0x43,0xbd,0x12,0x0c,0xf1,0x42 },
{ 0x96,0x3f,0x28,0x09,0x69,0x99,0x23,0x4c,0x0e,0x78,0xb4,0xd6,0xf2,0x4d,0x21,0x6e,0xbf,0x69,0x08,0x64,0xbd,0x1d,0x73,0x26,0x68,0x70,0xe3,0x2d,0x2a,0x6d,0xa8,0xd8,0x49,0xe5,0x3c,0xec,0xdc,0x6c,0xb8,0x6c,0x0a,0xee,0xbd,0x23,0x0b,0x29,0x0a,0x42,0x9c,0x5a,0x82,0x26,0xe4,0x60,0x1e,0x9a,0x4d,0xee,0x63,0x94,0x9e,0xd8,0xb0,0x14 },
{ 0x2e,0xb3,0x91,0x0b,0xde,0x2a,0xb9,0x95,0x01,0x2c,0x29,0xdf,0x8b,0xbe,0x0f,0x50,0x32,0xc3,0xb2,0x57,0x43,0x28,0xe5,0xf7,0x66,0x28,0xd8,0x37,0x00,0x8e,0x2d,0xf0,0x3f,0x29,0xc0,0x23,0x37,0x47,0x4b,0x3a,0x77,0xd3,0x7d,0x34,0x8d,0xa4,0x99,0x9f,0x95,0x40,0xd1,0x20,0xec,0xf6,0x5f,0x49,0x09,0x10,0xcc,0x4e,0xd2,0x74,0xea,0xae },
{ 0xb6,0xd9,0x84,0x98,0xd3,0x9b,0xd0,0x33,0x80,0x75,0x38,0xe8,0xf0,0xc3,0xf1,0x6c,0xb7,0xfd,0x10,0x70,0x31,0xee,0x6f,0x11,0x7b,0xc9,0x86,0xf7,0x0d,0xfe,0xa7,0xf8,0x28,0xc7,0x1c,0x23,0xf7,0x6b,0xbe,0xe7,0xd1,0x61,0x75,0x28,0xdc,0xa8,0xd6,0x2e,0xf1,0xe9,0xdd,0x50,0xd4,0x75,0x82,0x6f,0xc9,0x1f,0xcb,0x05,0x36,0x52,0xbd,0x06 },
{ 0xd3,0x2e,0x85,0x1a,0x25,0xc9,0x65,0xc2,0xfb,0xa2,0xf5,0xbd,0xf8,0xf0,0x48,0x26,0x10,0xec,0x71,0x96,0x90,0x52,0x5d,0xb1,0xfe,0x39,0xd9,0xac,0xa1,0xdc,0x42,0x8e,0x6b,0xec,0x05,0xa1,0xfc,0xc5,0xd6,0x4e,0x45,0xcc,0x6d,0x22,0xa9,0x8a,0x83,0x40,0x31,0xf5,0x8d,0x90,0x46,0x94,0xf7,0x68,0xb5,0x51,0xd5,0xb5,0x01,0xcf,0xe1,0x58 },
{ 0x7e,0xfa,0x75,0x6e,0x13,0x04,0x1a,0x9f,0xa6,0x11,0x39,0x63,0xe2,0x5c,0x5b,0x88,0xcb,0xa4,0x1a,0x23,0xf3,0xa1,0xa3,0x10,0xfa,0x7c,0x38,0x17,0x0a,0xab,0xed,0x91,0x95,0x11,0xca,0xe2,0x47,0x79,0x7e,0x83,0x30,0xaf,0x25,0xfb,0xde,0xaa,0x15,0x1e,0xdc,0xef,0x54,0x5e,0x70,0xc6,0x28,0xe5,0x80,0xa3,0xa5,0xe9,0xf8,0x0f,0xcf,0xe4 },
{ 0xe6,0x44,0x04,0x1c,0x2e,0xd2,0xcf,0xf4,0xf5,0x4d,0x07,0x46,0x44,0x9c,0x03,0x31,0xc6,0x81,0x31,0x27,0x79,0x80,0x0d,0xbf,0x71,0xfc,0x28,0xe6,0xe4,0x2f,0x66,0x2d,0xbc,0x79,0xff,0xb9,0xde,0x66,0x5a,0xcf,0x4b,0xa0,0x05,0x0d,0x00,0xc7,0xb4,0xd0,0x52,0xe1,0x67,0x8f,0x91,0x7f,0xd7,0xc0,0x67,0x11,0xc1,0x1d,0x66,0xe6,0xd5,0x91 },
{ 0xad,0x2f,0x10,0x77,0x29,0xd2,0x67,0xb0,0x71,0x95,0x98,0x6e,0xa2,0xa3,0xe6,0x47,0x3a,0x5a,0xe2,0xbf,0x5d,0x99,0xb7,0x30,0xe2,0xf4,0xc0,0xdc,0x88,0xd7,0x30,0x7f,0xc2,0xae,0x72,0xe2,0xf8,0xed,0x6b,0x2b,0x81,0x65,0x3e,0xf8,0xcb,0x87,0xa8,0x5f,0x76,0xdf,0xeb,0x71,0x7f,0x04,0x0e,0x16,0x37,0x5e,0x15,0x54,0xdb,0x82,0xd9,0xe6 },
{ 0xa6,0x26,0xc3,0xf3,0x11,0xcb,0x53,0x15,0xb5,0x9f,0x52,0x27,0x2c,0xa6,0x06,0x4b,0x4c,0x28,0x7d,0xfb,0x6f,0x6e,0x6a,0xad,0xdd,0x03,0x08,0x72,0xb7,0x31,0x4c,0x65,0xbb,0x88,0x2a,0x6b,0x99,0x0e,0xc0,0x4c,0xd9,0x49,0xb7,0x81,0xe9,0xef,0xc6,0x24,0xee,0x36,0x5b,0xd6,0x80,0x35,0x52,0x3a,0xb6,0x60,0x7d,0xb5,0xa6,0x3f,0x19,0x19 },
{ 0xba,0x09,0x99,0x0f,0x12,0x05,0xf0,0xfb,0x8d,0xb6,0xb6,0x73,0x05,0x9e,0x51,0x03,0x5f,0x10,0xd3,0xd4,0xfb,0xbb,0x19,0x30,0x51,0x1f,0x03,0x82,0x65,0xe4,0x52,0x1d,0xaf,0x9a,0xcc,0xf6,0x5e,0x62,0x95,0x7a,0x18,0x91,0x4e,0x3a,0x87,0x1d,0xbf,0x5a,0xa0,0xc9,0x2f,0x5a,0x81,0x35,0xfe,0x9f,0x63,0x07,0xbe,0x34,0xd9,0x83,0x69,0xd5 },
{ 0x3a,0x6e,0xcd,0x0d,0x40,0x8a,0x61,0xa7,0x08,0x12,0x5b,0xe5,0x7f,0x85,0x58,0x55,0x7a,0x28,0xc8,0xc2,0x0c,0x25,0xd8,0x16,0xab,0x0c,0x92,0xff,0x7b,0x13,0xef,0x39,0xcd,0xa1,0xd0,0x46,0xa3,0xf7,0xd3,0xbc,0x86,0xed,0x82,0xf9,0x7d,0x4e,0xc1,0x77,0x8c,0x1d,0x69,0x92,0xab,0xce,0xc1,0xaa,0xd4,0xe0,0x54,0xb8,0x3c,0x80,0x0e,0x18 },
{ 0x7e,0xf2,0xee,0x3c,0x5c,0x79,0x2a,0x0c,0x0f,0xef,0x63,0x35,0x22,0x4d,0x94,0x28,0xa7,0xd2,0xc9,0x8f,0x67,0x43,0x33,0x3e,0xc7,0x39,0xa5,0xea,0x3e,0xcc,0xa7,0xe0,0xaf,0xb6,0x86,0x27,0x30,0xac,0xc0,0x11,0xa4,0xf6,0x7f,0x51,0xd5,0xe6,0x09,0xdb,0x81,0xb2,0x14,0x50,0xdf,0xbd,0x3d,0x20,0x30,0x2b,0x22,0xdd,0x55,0x2a,0xc0,0x94 },
{ 0x20,0x66,0xba,0x0f,0x9e,0x41,0x0a,0x4d,0xf7,0xf5,0xa3,0x65,0xc6,0x17,0x38,0xe8,0x60,0x5c,0x57,0xdd,0xa7,0x7f,0x33,0xfc,0x14,0x8d,0x0b,0x15,0x8e,0xbb,0x5f,0x58,0x69,0xcb,0x2a,0x15,0x5a,0x82,0x86,0x1e,0x21,0x1d,0xa3,0x1f,0xd0,0x87,0xc4,0xcc,0x0e,0xe7,0xc0,0x86,0x75,0xbf,0x5d,0x98,0xcb,0x89,0x23,0x02,0xbc,0x41,0x28,0xb7 },
{ 0x06,0x46,0x47,0x24,0x86,0xe6,0x8d,0xb1,0x93,0x53,0x9d,0xef,0x69,0x86,0xc7,0x6b,0x5e,0x88,0x0b,0xe5,0x0c,0x09,0x22,0x3c,0x6d,0xb0,0x2c,0x92,0xab,0x89,0x6d,0x0f,0xf1,0xf4,0xee,0x22,0xfe,0x70,0x63,0xbb,0xf2,0xb3,0xf5,0xce,0xf9,0x04,0x7c,0xfe,0xdb,0x1b,0x89,0x5d,0xc6,0x3b,0x4f,0x90,0x90,0xd7,0x45,0x08,0xa4,0xf5,0x28,0xea },
{ 0x0c,0x70,0xa2,0xdb,0x2f,0xcb,0x76,0xd5,0x26,0xdf,0xae,0x6d,0x4f,0x13,0xc4,0x79,0xce,0xbd,0x1c,0xf4,0xe9,0x9e,0xa5,0x28,0xfd,0x72,0xbd,0x9e,0x55,0xb4,0xde,0x73,0x96,0x80,0x45,0x5c,0x56,0x24,0x66,0x30,0xf9,0x85,0xc3,0xaf,0x5b,0x08,0x58,0x8b,0xc1,0x44,0xb6,0x84,0x04,0x36,0x42,0xa0,0xc3,0xeb,0x0a,0x46,0xff,0x84,0x7f,0x42 },
{ 0x0d,0x42,0xe1,0xf1,0x52,0x92,0xfc,0x71,0x2e,0xa7,0x13,0x54,0x4f,0xf0,0x3f,0xd1,0x7b,0xeb,0x46,0x7e,0x38,0x4d,0x57,0x0b,0x69,0x9c,0x58,0x4d,0xa8,0xd5,0x82,0x5e,0xad,0xda,0x2b,0x0a,0x21,0xf6,0x9a,0xcb,0x2c,0x1f,0x17,0xa5,0x5a,0x85,0xca,0x7e,0x0c,0x4c,0xb2,0xec,0x4b,0x43,0x40,0xcb,0xed,0x18,0x08,0x97,0x7a,0x89,0x46,0xb3 },
{ 0x61,0x02,0x26,0xd3,0x67,0x41,0x98,0x26,0xce,0x31,0x90,0xb6,0xb8,0xd3,0x5a,0x4d,0xb3,0x97,0x9e,0x45,0xf0,0xca,0x0f,0x82,0x24,0x36,0x83,0x62,0xf9,0xcb,0xbc,0xcc,0x08,0x33,0x0f,0xf4,0x42,0x99,0xdd,0xc6,0x3b,0x7e,0x2c,0x73,0xd6,0x58,0xff,0x73,0xfb,0x21,0x50,0x0b,0xa2,0x1f,0x81,0x24,0xe1,0x7f,0xaf,0x78,0x9e,0xcd,0xfb,0x69 },
{ 0x44,0xdc,0x4d,0x9e,0x94,0x5c,0x7d,0xb2,0x0e,0x19,0xd0,0xc2,0x8f,0x9a,0xe7,0x51,0x8c,0x3b,0x0d,0xa6,0xf6,0x84,0x40,0xe7,0xf9,0xc1,0x8a,0x46,0x9a,0xd7,0x80,0xb2,0xdb,0xeb,0x91,0x87,0x45,0xc2,0xf9,0xc9,0xf8,0xfd,0x19,0xdc,0x68,0x3f,0x5f,0x95,0xb4,0x77,0x75,0xe1,0xc2,0xce,0xc3,0x9d,0x91,0x43,0x74,0x13,0xab,0x93,0xb1,0x1e },
{ 0x69,0xe6,0x26,0xe9,0xf1,0x8c,0x4d,0x6d,0x4b,0x5c,0x83,0xdf,0xe1,0x7e,0x9b,0xf9,0xf2,0xa6,0xe4,0x3a,0x63,0x00,0xb3,0x66,0x50,0x35,0x7e,0x1a,0x24,0x02,0x86,0x6b,0x80,0xbc,0xf8,0x7c,0xda,0x7e,0x1c,0xc6,0xbb,0xaa,0x56,0xdf,0xc2,0xfb,0x99,0xa9,0xdd,0x88,0xdf,0xc3,0xeb,0x54,0x18,0xda,0x6b,0x4c,0x87,0x19,0x1f,0xb6,0x3f,0x28 },
{ 0x0e,0x51,0x41,0x64,0x21,0x64,0x0a,0xeb,0x57,0x80,0x25,0x54,0xeb,0x5f,0xa7,0x7a,0xa9,0xcb,0x53,0x52,0x99,0x75,0xe0,0x4a,0x67,0x01,0xf0,0x90,0xec,0x49,0xe8,0x53,0xcf,0x33,0x1c,0xea,0x65,0x90,0x54,0x69,0x27,0x8e,0xb4,0xa5,0x3a,0x91,0x03,0x0d,0xf5,0x68,0x39,0x41,0x90,0xc9,0xee,0x36,0x33,0x6e,0x3d,0x13,0x76,0x40,0x5c,0xb2 },
{ 0x71,0xee,0x26,0x50,0xc3,0x69,0x8c,0x50,0xc9,0x5c,0x65,0xa9,0xb2,0x94,0x68,0xfe,0xe5,0x21,0x70,0x75,0x73,0x0e,0x05,0x5a,0xb7,0x0d,0xac,0xe7,0x06,0xd5,0xd9,0x00,0x15,0x77,0x87,0x2d,0x1b,0x7b,0x6a,0x0f,0x27,0xc9,0xc5,0xa4,0x72,0x33,0x50,0x1f,0xdc,0x92,0x7c,0xd9,0x49,0x2c,0xd7,0xc8,0x99,0x86,0x72,0x88,0x78,0x70,0x23,0x21 },
{ 0x85,0x25,0xd0,0xb3,0xef,0x76,0x31,0x42,0x83,0xd8,0x64,0x0f,0x8d,0xb5,0x63,0xd5,0x43,0xe1,0x7e,0x0a,0x27,0x10,0xf1,0xa2,0xbf,0x7f,0xba,0xdb,0x5a,0xb7,0xaa,0x65,0x0e,0x63,0xa7,0xe1,0x11,0xf9,0x1f,0xd6,0x06,0xcc,0x43,0x1c,0x1e,0x67,0x69,0x76,0xd0,0xdf,0xcc,0xc1,0x92,0x3f,0x09,0x2a,0xf9,0xbe,0x83,0x0f,0xdd,0xe8,0x64,0x8c },
{ 0xfd,0xfa,0x85,0xc7,0x83,0x54,0xa1,0xc8,0x9f,0x9a,0xdb,0x71,0x59,0x80,0x0c,0xc7,0xed,0x1d,0x11,0x45,0x5f,0x59,0xb0,0x9f,0x23,0xdf,0xa8,0x40,0xc6,0xce,0x9c,0xea,0x7c,0xf5,0x8a,0x53,0x8f,0xf8,0x72,0x60,0x8d,0x18,0x85,0x08,0xdf,0xa3,0xf6,0x93,0xcf,0xd0,0x80,0x72,0xab,0xe3,0x4f,0xcd,0x25,0x7f,0x21,0xe2,0x0b,0x43,0x86,0x19 },
{ 0x1b,0x3e,0x00,0xb3,0x20,0x97,0x11,0x12,0xb3,0x9e,0x7d,0x76,0x65,0xbc,0x22,0xd4,0xd8,0x43,0x28,0x93,0xc3,0xd8,0x18,0x0f,0x29,0xdd,0x16,0xed,0x04,0x4c,0x1b,0x21,0x9b,0x44,0x25,0x43,0xfa,0xf3,0xe2,0xd2,0xf1,0x13,0x25,0xd9,0xc0,0xdf,0x76,0x84,0x4f,0xff,0x41,0xa9,0xf0,0xb6,0xa9,0xe9,0x8d,0xe2,0x40,0x14,0xb7,0xf5,0x94,0xc7 },
{ 0x49,0x4a,0x50,0xb3,0xbd,0x47,0x40,0xde,0xd6,0xb8,0x08,0xc5,0xbe,0x6e,0x57,0x68,0xea,0xac,0x8c,0xa9,0xb2,0xe2,0x87,0xad,0xd7,0x2e,0x5c,0x89,0x0f,0x1b,0xd8,0x07,0xdd,0x42,0xbf,0x86,0x3f,0x04,0xdd,0x0f,0x2e,0x67,0x6c,0x4f,0x24,0x5e,0x7e,0xce,0xf2,0x72,0x33,0x9e,0xfe,0x3e,0x3b,0x06,0xb9,0x89,0x39,0x4d,0xae,0xf6,0x42,0x35 },
{ 0x77,0x84,0x68,0xf5,0x25,0x2b,0x48,0xe4,0x89,0x9d,0xb9,0x39,0x59,0xf2,0xe8,0x76,0x26,0xdd,0xc4,0x75,0xbb,0xfa,0x75,0xb7,0xc8,0x28,0xbb,0xee,0x5a,0xb9,0x00,0x65,0x43,0x34,0x1a,0xb1,0x0e,0xb3,0x9c,0xa0,0x6f,0x65,0x13,0x6a,0x7f,0x01,0xe2,0xe9,0x27,0xbb,0xca,0xef,0x00,0xac,0xda,0xaf,0xc8,0xf7,0x6a,0xa2,0xf2,0xd7,0x9f,0xf1 },
{ 0x80,0xf8,0x7b,0xf7,0xd7,0xdb,0xd4,0xde,0x8e,0x68,0x6a,0x2d,0x9a,0x79,0x04,0x88,0x7e,0x90,0x45,0x9a,0x30,0x07,0x53,0x4b,0x5e,0x3f,0x2d,0x8e,0x8f,0xf0,0x95,0x10,0xff,0xdb,0x7e,0x53,0xda,0xa6,0x41,0x13,0xce,0xb1,0x36,0xd7,0x8f,0xe2,0x44,0xad,0x9b,0x86,0x26,0xbe,0x51,0xba,0xa5,0x7f,0x0b,0x15,0xbe,0x19,0xa2,0x58,0x94,0xd1 },
{ 0x69,0xe7,0x7a,0x9d,0x3c,0xee,0x42,0x19,0xd9,0x94,0x30,0x3e,0x95,0xd1,0xfd,0x5f,0x6a,0x04,0x36,0x72,0x9a,0xab,0x9a,0x1f,0x7b,0xb4,0xed,0xa6,0xfe,0x06,0xaf,0x8c,0xec,0x2d,0x23,0x4b,0xbb,0x9a,0xf4,0x79,0x17,0xff,0x14,0x03,0x00,0xd6,0x13,0x9c,0xda,0x40,0xaf,0xe6,0x90,0xa6,0x65,0x26,0x77,0x5d,0x04,0x8a,0x1f,0x94,0xba,0x69 },
{ 0x22,0x4a,0x02,0x29,0x9e,0xec,0xc9,0x9a,0x06,0x34,0xa7,0x86,0xf1,0x16,0x44,0x57,0x79,0xc3,0xbb,0x5b,0x55,0x01,0xd2,0x67,0xf0,0x69,0x9b,0xf9,0xe2,0xf2,0xb7,0x34,0xfa,0x41,0xa8,0xd2,0x9b,0x6d,0x22,0xb4,0x14,0x9a,0x08,0xad,0x87,0x1d,0x7f,0xff,0x07,0xb7,0x04,0xb6,0x73,0xc7,0xaf,0xd0,0x84,0x0f,0x58,0x54,0x91,0xec,0x7f,0xdf },
{ 0x3b,0xfe,0xcd,0x33,0x2c,0x18,0x46,0x5d,0x23,0x84,0x49,0xdd,0x23,0x8c,0xa7,0x89,0x09,0x35,0xa0,0x57,0x1f,0x87,0x20,0x1b,0x9d,0x75,0x3f,0x5a,0x85,0x2f,0x2d,0xd4,0xf3,0x66,0x05,0xf0,0x3f,0xb6,0xa9,0x76,0x43,0xa7,0x15,0xbb,0xdd,0xd0,0x5d,0xba,0x32,0x3e,0x83,0x2d,0xbe,0x60,0xb4,0x18,0x61,0xc7,0xd6,0x76,0x8a,0xe0,0xe1,0x5d },
{ 0xaf,0xd3,0x5b,0x35,0xbe,0xa5,0xbd,0xa1,0x76,0x0f,0x78,0xb8,0xaf,0x6b,0x22,0x61,0xe3,0x10,0xd1,0x0e,0x19,0x6e,0x11,0xde,0xa8,0xdf,0x3d,0xae,0x19,0x91,0xe6,0x07,0x03,0x55,0x5f,0x48,0xe2,0x04,0xe9,0x94,0x96,0xd8,0xee,0x26,0x6b,0x81,0xec,0x93,0xba,0xb7,0xd9,0x87,0x21,0x55,0xaf,0x41,0x5e,0x0b,0x73,0xbc,0x43,0x08,0x12,0x6f },
{ 0xfe,0xcf,0x95,0xe1,0xd7,0x36,0x09,0xbf,0xd4,0xb1,0xb3,0x22,0x92,0xb4,0x47,0xbb,0x1d,0xf8,0xf1,0x23,0x4a,0x9e,0x0a,0xfb,0x78,0x96,0x88,0x57,0xa5,0xae,0x39,0x38,0x43,0x5a,0xed,0xf6,0xe2,0xd3,0x53,0x96,0x4c,0x78,0x7d,0x42,0x84,0x1d,0x1b,0x87,0x18,0xc9,0xc2,0xa4,0x4e,0xc6,0x19,0x49,0xfd,0x1d,0x4d,0x5b,0x2c,0xe9,0x16,0xe3 },
{ 0xe5,0xce,0xac,0x40,0x35,0xeb,0x49,0x55,0xa0,0xc7,0xcc,0x97,0xb5,0x61,0x75,0xd5,0x05,0x17,0x4d,0xa4,0x2f,0x93,0xe6,0x8f,0x7e,0x16,0xcc,0x51,0xf0,0xb9,0xa0,0x0a,0x66,0x0c,0xb9,0x30,0x1f,0xcd,0x56,0xb9,0x85,0x4a,0x45,0x9c,0x33,0x96,0xd1,0xe4,0x8c,0xed,0xdb,0x75,0x86,0xfe,0x79,0x4f,0x15,0x7f,0xf8,0x0e,0x67,0x98,0x4a,0x57 },
{ 0x43,0x0e,0xbc,0xf6,0x3d,0x89,0xbe,0xf4,0x4d,0x86,0xa6,0x89,0x73,0x14,0xf6,0x93,0x88,0x61,0xab,0x37,0xed,0xc8,0xbe,0xef,0x0f,0x28,0xa5,0x95,0x14,0xc2,0xef,0xb1,0x58,0xde,0x2c,0x43,0x39,0xe4,0xbf,0x9d,0x72,0x5c,0xf7,0x90,0xa3,0x94,0xb5,0xde,0x83,0x31,0xbc,0xb3,0x9a,0x3b,0xb2,0x1a,0x45,0xdd,0x5a,0xe0,0x3d,0x83,0x93,0x91 },
{ 0x0e,0x41,0x5c,0x46,0x2b,0xe6,0x79,0x02,0x8e,0xc6,0x4f,0xd2,0xa2,0xb7,0x5f,0x9c,0x94,0x49,0x95,0xa2,0x7d,0x32,0x9c,0x76,0x4f,0x55,0x6d,0xb2,0x23,0x43,0x75,0x0b,0xc3,0x05,0x6e,0x71,0x77,0xf9,0x84,0xe2,0x27,0xbc,0xa2,0x10,0x77,0xf8,0xcd,0xdc,0x6e,0xf6,0x91,0xa4,0x5f,0xf7,0xec,0x06,0xa6,0x09,0x7c,0x15,0xbe,0xcd,0x56,0xcc },
{ 0xb0,0xb8,0xf5,0x97,0x43,0x6c,0xd8,0x53,0xe3,0x1f,0x35,0xc0,0x59,0x60,0x84,0x80,0x16,0x8c,0xa4,0xc4,0x86,0x3a,0x3e,0x26,0xa4,0x5a,0xd4,0x95,0x5b,0x68,0x9b,0x4c,0x4a,0x04,0xbb,0x42,0x13,0xa5,0x61,0x60,0xfb,0x70,0xed,0xf8,0x6e,0x60,0xbf,0x47,0x1c,0x84,0x5f,0x76,0x47,0xf9,0x01,0x34,0xff,0x67,0x7b,0x27,0x43,0x52,0x02,0x4b },
{ 0x4a,0x89,0xa6,0x14,0x57,0x37,0x4b,0x4c,0xcd,0xb5,0xd1,0x11,0xb5,0x64,0x93,0xfe,0x16,0x7d,0x5e,0xe4,0xd1,0x04,0x1c,0xe2,0xea,0x60,0x65,0xad,0x77,0x89,0xb8,0x4d,0x45,0xb0,0x4e,0x87,0xed,0x48,0x0d,0x5c,0x08,0xc2,0xea,0x97,0x9f,0xe6,0x77,0xe6,0xa7,0x2e,0x28,0x06,0x34,0x71,0x19,0x99,0xef,0x9b,0x7d,0x7f,0x01,0x8e,0x3e,0xa8 },
{ 0x73,0x51,0xf3,0x86,0x6b,0x10,0xa0,0xc0,0x6c,0x35,0xb1,0x21,0x09,0xa3,0xeb,0x22,0x73,0x74,0x26,0x64,0x59,0xcd,0x8d,0xa9,0xa5,0xc1,0xdc,0x83,0xd0,0x20,0x56,0x6c,0x8c,0x0d,0x26,0x40,0xd5,0xdd,0x83,0xf3,0xa4,0x6a,0xb4,0x98,0x93,0xda,0xc9,0x1a,0x7a,0xbb,0x7a,0x82,0xaa,0xeb,0x4d,0x56,0x6d,0x77,0xbd,0x2b,0x85,0x50,0x17,0x1f },
{ 0x55,0xb6,0x6e,0x6d,0xc5,0x86,0x29,0x6f,0x8a,0xa4,0xbb,0xa0,0xae,0x54,0xdd,0xc7,0x3b,0xdb,0xbc,0x48,0x8e,0x7c,0xdb,0x08,0x20,0x04,0x9d,0x03,0x64,0xe1,0x1f,0x7e,0x90,0x43,0xa9,0x1f,0x1d,0xd1,0x41,0x9b,0xc3,0x86,0xcc,0x04,0xcc,0xa2,0x23,0xeb,0xcc,0xfe,0x61,0x06,0x21,0xb5,0x94,0xf9,0x04,0xbd,0xdc,0x67,0x1c,0x77,0xd0,0x76 },
{ 0x27,0xd5,0x01,0x13,0x5f,0x84,0x61,0x77,0x70,0x95,0x24,0x88,0xb2,0x00,0x3a,0x1f,0xcc,0x05,0x24,0x4e,0xc2,0x22,0x55,0x5c,0x7b,0x74,0xa5,0xa8,0x82,0xdc,0x30,0x72,0xdc,0x8d,0x3a,0x7b,0x78,0xa8,0x28,0xcf,0x1d,0x33,0x7a,0xdd,0x2d,0x6a,0x69,0xa7,0xdb,0x8d,0x09,0xac,0x28,0xf2,0x8d,0x24,0x25,0x05,0x93,0x4a,0x34,0x96,0xd6,0x8b },
{ 0xdb,0x3e,0xbc,0x91,0xcd,0xcb,0x79,0xa8,0xab,0x1d,0x00,0x13,0xa1,0x82,0x1a,0x0b,0x06,0x61,0x4d,0x6a,0x97,0x44,0x8f,0x01,0x20,0x46,0x40,0x0e,0xcc,0x4b,0xb5,0x06,0xa9,0x5a,0x64,0x53,0x8a,0x67,0x66,0x83,0xaf,0x1a,0x68,0x5e,0x85,0x53,0x92,0x58,0xb2,0x18,0x26,0xf5,0xe8,0xf7,0xd2,0x02,0xcb,0xdd,0x18,0x1f,0x49,0xb3,0xe6,0x0a },
{ 0x78,0x1c,0xa2,0xf9,0x7a,0x42,0x9e,0xd0,0x0a,0x2b,0xd7,0x6a,0x0a,0x26,0x41,0x01,0x05,0x46,0x00,0xe1,0x5f,0x61,0xf9,0x95,0xa8,0x02,0x8d,0xff,0x36,0x00,0x07,0x5c,0xc3,0xa5,0x03,0x8c,0x48,0xee,0xc3,0x96,0x8b,0x4b,0xfd,0x26,0x4a,0x3c,0x74,0xdc,0xfa,0x71,0xf5,0xcc,0xaf,0x98,0xc5,0xe8,0x4c,0x64,0xdf,0x94,0xf7,0x0a,0xc9,0x36 },
{ 0xde,0xd3,0x7d,0xd1,0x52,0x73,0x85,0x17,0xb9,0x21,0x74,0xe3,0xaa,0x64,0xa3,0xbf,0xdd,0xfa,0x9e,0x91,0xc6,0x6a,0xb7,0x02,0x4f,0x5c,0x22,0x79,0xad,0xe5,0xd1,0xb1,0xb1,0x4e,0x3c,0x5a,0x84,0xe7,0x8c,0x40,0x2b,0x3c,0xaa,0xb3,0x82,0x45,0x44,0xb8,0xf4,0x3b,0x07,0x6d,0x59,0x12,0x84,0x48,0x81,0xcc,0x77,0x77,0x12,0xc7,0x78,0xbb },
{ 0x60,0xcd,0xd0,0xe2,0x45,0x8c,0xd9,0xfd,0xe6,0xc0,0x47,0x5d,0xf9,0xa4,0xce,0x6c,0x63,0xa4,0x73,0x34,0x4d,0xc7,0x17,0x83,0xc5,0x17,0x74,0x75,0xf2,0x48,0xd1,0x6e,0x0c,0x19,0x0d,0xd3,0x81,0x36,0xd8,0x14,0x12,0x27,0x76,0x54,0xb0,0x15,0x06,0x16,0x1b,0xce,0xc4,0x82,0x57,0x63,0x38,0xf8,0xc5,0xca,0x2b,0x67,0x7b,0xb8,0x56,0x58 },
{ 0x24,0xa9,0xda,0x19,0xae,0x77,0x96,0x0c,0x91,0x21,0xd4,0x75,0xa3,0x75,0x21,0xfc,0xe8,0xcb,0x04,0xf3,0x70,0x5c,0xed,0xe6,0xc2,0x96,0xc3,0xb7,0x7f,0xae,0xd0,0xf7,0xd2,0xa3,0xd8,0x87,0xf5,0x9c,0x7d,0xaf,0xf7,0x03,0x7c,0xb8,0xb9,0x28,0x23,0xf7,0x67,0x0c,0xf5,0xc5,0x30,0x5a,0xcc,0xcd,0xaa,0xa8,0x39,0x83,0x6f,0xba,0xab,0x28 },
{ 0xe5,0xe8,0x92,0x36,0x3a,0x31,0x88,0x5c,0xed,0xc2,0xf9,0x95,0xf3,0x6d,0x1f,0x90,0xba,0x82,0x33,0x7d,0x0b,0x1f,0xc8,0x0d,0x34,0x38,0xc8,0x4a,0x72,0xbd,0x05,0xa0,0x77,0x43,0x9d,0xe4,0xda,0x1b,0x87,0xd2,0x13,0x01,0xeb,0x01,0xe7,0x9b,0x5c,0x3e,0xca,0x73,0x99,0x5b,0x9c,0xd0,0x99,0xae,0xc9,0x36,0xde,0x2b,0xe1,0xa6,0x9f,0x5d },
{ 0x08,0xcc,0x2a,0x43,0x8c,0xb7,0x98,0x93,0x1f,0x14,0x2a,0x23,0xa1,0xec,0x5c,0x5b,0x2d,0x0c,0xeb,0xa7,0xba,0x63,0x59,0x47,0x02,0xa7,0xa4,0x08,0xb7,0xcc,0xd4,0xbb,0x77,0x9b,0xf6,0x53,0xf6,0xcd,0xdd,0x51,0x3b,0xa0,0xcd,0x31,0x67,0xda,0x9b,0x0c,0xc8,0xd6,0x13,0xa1,0x4b,0xe5,0x20,0xc3,0x23,0x2a,0xf9,0xf2,0x18,0x34,0x5f,0x79 },
{ 0xc8,0x27,0xed,0x76,0x3f,0xfe,0xc8,0xd1,0x44,0xd9,0x5f,0xec,0xd3,0x17,0x7c,0x78,0xfe,0x67,0x84,0xfa,0x0f,0x69,0x6a,0x51,0x0c,0x66,0x5c,0xf9,0x73,0xb4,0xdf,0x41,0x1e,0x4c,0x44,0x75,0xf2,0xda,0x5e,0xd5,0x60,0xe1,0x7d,0x7b,0x66,0xef,0x3c,0xd3,0xbf,0xe9,0xa6,0x10,0x6c,0x00,0x47,0xb3,0x2e,0x5b,0x6a,0x23,0x80,0xf9,0x1f,0x4a },
{ 0x18,0x30,0xc0,0x86,0x97,0x5b,0x3c,0x29,0x97,0x2e,0x47,0xed,0x4c,0xde,0xfd,0x5d,0xf9,0x4f,0x4f,0x2d,0x38,0xac,0x71,0x0a,0x6d,0xaf,0xb2,0xf9,0x8a,0x1f,0x1c,0xd3,0x9c,0x2c,0x6f,0xfd,0x88,0xd7,0x48,0x28,0x34,0xa2,0xd6,0xfa,0x35,0x91,0x27,0x44,0xfb,0xde,0x72,0x4a,0x1e,0x8d,0xa9,0xea,0xd0,0x99,0x79,0x29,0x27,0xf6,0x4d,0x28 },
{ 0xb5,0x11,0x00,0x14,0x91,0xb7,0x46,0x57,0x25,0xed,0x93,0xee,0xb3,0xc1,0x58,0x7d,0x89,0x98,0x96,0x1b,0x95,0x6e,0x7d,0xc2,0x40,0x59,0x04,0xb3,0x46,0x34,0x0d,0x60,0x9c,0x39,0x81,0xf4,0x31,0xfe,0x4c,0x46,0x72,0xab,0x89,0x9e,0xf7,0x69,0xf9,0x78,0x8f,0xb5,0x82,0xb1,0x18,0x59,0x47,0x91,0x68,0xcd,0x61,0x78,0x65,0x3e,0xca,0xa6 },
{ 0x9e,0x63,0x15,0xcb,0x5a,0xb6,0x49,0x5a,0x9d,0x74,0x93,0x01,0x4b,0x85,0xc1,0x90,0x72,0xb0,0xc3,0x8d,0x51,0x2a,0xa6,0x3b,0x52,0xf6,0x0d,0x51,0x31,0x73,0x72,0x89,0xad,0xf1,0x5f,0x66,0x56,0xd6,0x24,0xed,0x97,0x6b,0xb2,0x39,0xf2,0xe5,0x1c,0xc5,0xa0,0xc6,0x76,0xce,0x90,0xdb,0xd6,0xc2,0x66,0xfd,0x79,0x09,0x43,0x0d,0x4a,0x47 },
{ 0x60,0xaa,0xca,0xee,0xc4,0x0e,0x84,0x09,0x1c,0xb2,0xf0,0x31,0x48,0xe4,0x77,0x4e,0xc1,0x28,0x83,0xed,0x0e,0x4c,0x68,0x8f,0xc1,0x93,0xd4,0x79,0x67,0x8e,0x27,0xd3,0x96,0x77,0xdf,0xfc,0xc5,0xde,0xf6,0x6d,0xda,0x54,0xf7,0xc8,0x03,0xde,0x04,0xee,0x46,0xd4,0x00,0x78,0x3a,0x68,0x0f,0x4b,0xff,0x7c,0x61,0x02,0x28,0xc4,0xd2,0xde },
{ 0xd6,0x23,0xf1,0xa3,0xfe,0xb4,0x5d,0x78,0x14,0x35,0x57,0x0d,0x6b,0xb2,0xf9,0x7f,0xaf,0xde,0x37,0x8d,0xce,0x29,0xe5,0x1a,0xd6,0xe4,0x18,0x9a,0xa6,0x66,0x98,0x6d,0x3a,0x26,0x61,0x62,0xd2,0xf4,0x25,0xb5,0x3a,0xae,0x1e,0x09,0x3c,0x27,0x81,0x3e,0x71,0x8c,0x85,0x23,0xbc,0xb5,0x16,0xf2,0x9c,0xee,0xb4,0xbf,0xe2,0x27,0xfd,0xa5 },
{ 0xe4,0x10,0x7e,0x43,0x1e,0x22,0x1f,0x50,0x71,0xe7,0x47,0x41,0x04,0xfa,0x90,0xa4,0x53,0x12,0xf0,0xc2,0x1f,0xb0,0x84,0xde,0x21,0x57,0x99,0x92,0xfa,0xb5,0xc2,0xcf,0x1e,0x5f,0x11,0xe6,0xcf,0x70,0x1c,0x9a,0x39,0x48,0xc6,0x68,0x74,0x1c,0x2b,0x32,0x3c,0x78,0x92,0xdc,0xff,0x7b,0x24,0x10,0xd0,0x28,0x40,0x3f,0x2b,0x95,0x5c,0x2b },
{ 0x77,0x4c,0x95,0xf1,0xd8,0x72,0xee,0xfc,0xf5,0x3d,0x52,0x51,0xe8,0xc9,0xc1,0xf9,0xb0,0xd4,0xb5,0x1c,0x25,0x99,0x6e,0x41,0x79,0xa0,0xc8,0x31,0xf0,0xa2,0x0b,0xb2,0xe8,0x70,0xae,0xc1,0x5f,0x87,0x12,0x2e,0xda,0x24,0x51,0x79,0x14,0x2e,0xcb,0x38,0x87,0x76,0x59,0xd2,0xd4,0x73,0x7b,0x33,0x08,0x8a,0xf9,0xfa,0xe2,0x57,0xc0,0xa4 },
{ 0x2d,0x52,0x95,0xdb,0x41,0xe6,0xf8,0x39,0xa7,0x57,0xf1,0x11,0x64,0xd6,0x33,0x19,0xa0,0x65,0x4d,0x26,0x66,0x87,0x24,0x35,0x51,0x0f,0x99,0xb4,0x54,0x9e,0x7a,0x36,0xf9,0x8a,0xcf,0x28,0x06,0x80,0x72,0x32,0x3a,0xf1,0x6c,0xac,0x76,0x3b,0x38,0xc6,0xea,0x7b,0x44,0xf9,0x97,0x30,0xba,0x3b,0xdd,0xb6,0x81,0x95,0xce,0x32,0xeb,0x67 },
{ 0xeb,0xcc,0xf2,0x5d,0xaf,0x54,0x99,0x13,0x47,0x22,0x98,0x23,0xdf,0xcd,0x75,0x39,0x55,0x86,0x84,0x97,0xce,0xca,0x66,0xce,0x8c,0x51,0xd6,0xff,0x46,0x37,0x4b,0x11,0xdf,0x90,0xab,0x04,0x86,0xf6,0xd4,0xac,0x08,0xa4,0x58,0x27,0xa2,0xad,0x84,0x53,0x88,0x83,0x51,0xb5,0x10,0x05,0x9b,0x6f,0x3d,0x47,0xc6,0x5d,0xba,0x39,0xd6,0x1d },
{ 0x38,0x77,0x15,0x2e,0x0b,0xbf,0xf3,0x7e,0xff,0x26,0xec,0x46,0x01,0xbf,0xfc,0xda,0x32,0x24,0x2b,0xc0,0x7e,0xb9,0x86,0x97,0xcf,0xed,0x81,0x77,0x43,0xa2,0x97,0x47,0xcc,0x70,0xa7,0xf9,0x01,0x4b,0xc6,0x1a,0xbe,0x16,0x11,0x6c,0xb9,0x9d,0x37,0x30,0x9f,0xbd,0x1f,0x6e,0xcf,0xfe,0xe6,0x41,0xba,0x57,0x3e,0x25,0xf2,0x4d,0x46,0x37 },
{ 0x99,0xf0,0xe4,0xfe,0x82,0xb4,0x98,0x3e,0xde,0xd1,0x0b,0xd8,0x78,0xcc,0x25,0xbc,0xe2,0xe5,0x5b,0x96,0xb3,0xa2,0xb4,0xf4,0x6e,0xd5,0x74,0x47,0x97,0xcf,0x14,0x3f,0x32,0x33,0x61,0xf5,0xa6,0x71,0xcd,0x6e,0x99,0xb7,0x54,0xc5,0x7c,0xb4,0x65,0xad,0xc1,0x2b,0xf2,0xa0,0xc4,0xc7,0xd6,0x20,0x79,0x5c,0xd8,0xed,0x8a,0x14,0xff,0xef },
{ 0x43,0x7a,0x6a,0x6e,0x40,0xd0,0x45,0x69,0xa6,0x78,0x34,0x27,0x0a,0x8e,0x16,0x49,0x5e,0x3b,0xff,0xbd,0x13,0x5e,0xa7,0x9f,0x59,0x46,0x9a,0x06,0x06,0xbb,0xa6,0x54,0xc2,0x91,0x1e,0x15,0x58,0x7f,0x24,0x92,0xab,0x24,0x82,0x5f,0xf3,0x4d,0xc5,0xa0,0x14,0xa7,0xc3,0x76,0x19,0x38,0xd4,0x10,0x37,0x55,0x40,0x60,0x37,0xa7,0xc0,0xf3 },
{ 0x9e,0xb2,0xba,0x6d,0x86,0x22,0x35,0x8d,0x17,0x87,0x37,0xa5,0x9b,0xf5,0xaa,0xfc,0x0d,0x42,0x45,0x23,0x14,0x07,0xaa,0xab,0xbb,0x0c,0x6c,0x3c,0x0e,0xac,0xf5,0xb5,0xc5,0xaf,0x80,0x07,0x82,0xc9,0xc9,0xc8,0x68,0x1a,0xf0,0xe7,0xe9,0x72,0x49,0x92,0x9c,0x2e,0x6a,0x3b,0x9a,0x50,0x5b,0x6a,0xf3,0x4a,0xc8,0xda,0x88,0xef,0x98,0x15 },
{ 0xfa,0xa3,0x1e,0x82,0x4f,0x81,0x43,0xca,0xeb,0x2b,0x0e,0x68,0xde,0xee,0x70,0xbd,0x45,0xdc,0x5b,0x9a,0x78,0xfa,0x07,0x41,0xee,0x22,0xa6,0xa7,0xb9,0xd0,0xb2,0x2f,0xe6,0x07,0x8b,0x5a,0x59,0x8d,0xf8,0xb6,0x5b,0xa3,0xd2,0x88,0xe7,0x0d,0xb6,0x04,0xa2,0x5d,0x90,0x27,0x9d,0x58,0x6d,0x11,0x28,0x2d,0x70,0x4f,0x8b,0xd1,0x8f,0x2d },
{ 0x44,0x7d,0x73,0x9b,0xee,0xdb,0x5e,0x67,0xfb,0x98,0x2f,0xd5,0x88,0xc6,0x76,0x6e,0xfc,0x35,0xff,0x7d,0xc2,0x97,0xea,0xc3,0x57,0xc8,0x4f,0xc9,0xd7,0x89,0xbd,0x85,0x2d,0x48,0x25,0xab,0x83,0x41,0x31,0xee,0xe1,0x2e,0x9d,0x95,0x3a,0x4a,0xaf,0xf7,0x3d,0x34,0x9b,0x95,0xa7,0xfa,0xe5,0x00,0x0c,0x7e,0x33,0xc9,0x72,0xe2,0x5b,0x32 },
{ 0x10,0x0e,0x6e,0xed,0xf9,0xc0,0x96,0xbf,0x87,0x72,0xe4,0xc7,0x6d,0x5d,0x30,0x8f,0x35,0x8c,0xea,0x71,0xe4,0xdd,0xc7,0xfb,0x37,0xb0,0x1e,0x32,0xe3,0x2b,0xb6,0x66,0xcd,0x3a,0x7e,0x2e,0x8b,0x14,0x0a,0xbe,0x86,0x94,0x42,0x08,0x94,0xfa,0xe8,0xe8,0xba,0x5e,0x31,0xa1,0x89,0x01,0x1b,0x7c,0x77,0xf9,0xd0,0x74,0x3c,0x08,0x27,0x69 },
{ 0xa2,0x63,0x91,0x9b,0x49,0x45,0xa1,0xd4,0x47,0x50,0x1f,0x2a,0x3c,0x08,0x04,0xc3,0x80,0x2f,0x77,0x9e,0xa7,0xf6,0x80,0x3a,0xeb,0x04,0x21,0x21,0x1a,0x6b,0x66,0x5e,0x87,0x32,0x00,0xbd,0x2a,0xed,0x20,0xfc,0x2e,0x9d,0x3c,0x9d,0xe6,0x0d,0x60,0xc5,0xac,0x3f,0x83,0xdf,0x4c,0x00,0xef,0xe2,0x9e,0xe4,0x04,0x00,0x30,0xbc,0xdc,0xfb },
{ 0x3b,0x89,0x80,0x77,0x4c,0x5b,0x7e,0xb3,0x38,0x48,0xe7,0x53,0x83,0x35,0xac,0x06,0x3f,0x98,0x6a,0x21,0x0f,0xb2,0x49,0xe1,0x2d,0xc6,0x51,0x00,0x13,0x39,0x0f,0xff,0xf0,0x75,0x65,0x33,0xa9,0x80,0x15,0x86,0x5d,0x0a,0x49,0x5a,0x2e,0x3f,0x27,0xa7,0x4e,0x98,0x67,0xc8,0x8e,0xac,0xae,0xcc,0x3e,0x21,0xac,0x0e,0xf6,0xcd,0x45,0x3d },
{ 0x28,0x90,0xd7,0x21,0xe5,0x7e,0x19,0x61,0x18,0xe6,0x3a,0xdd,0x57,0x95,0x47,0xf0,0xac,0xad,0x16,0xe6,0x3b,0xe0,0xae,0xa8,0xf6,0xf1,0xd3,0xac,0x4d,0x77,0x1f,0x0c,0x69,0xb5,0xb8,0x15,0x9d,0xdc,0x03,0x2a,0xaf,0x77,0xe1,0xd1,0x41,0x67,0x52,0xec,0x7d,0xc0,0xe7,0xf7,0x7e,0xf5,0x40,0x69,0x0a,0x57,0x28,0xec,0xb5,0x89,0x0d,0x78 },
{ 0xfc,0xcc,0x9b,0x09,0xeb,0x64,0x26,0x37,0x96,0xd3,0x24,0x6f,0x5b,0xf9,0x06,0x8e,0x62,0x34,0xa6,0x6b,0xfc,0xcc,0x1d,0xe2,0xdc,0xc2,0x9d,0xe0,0x08,0x40,0x44,0xdf,0x4e,0x3e,0x13,0x0e,0xff,0xe4,0xa6,0xac,0x11,0x12,0xd6,0x85,0xa0,0x56,0x8a,0x7d,0x9e,0x64,0xa6,0x91,0xa0,0x32,0x60,0x0c,0xb3,0x46,0x5d,0x26,0xc8,0xb7,0x31,0x65 },
{ 0x7b,0x8b,0x88,0x67,0xdd,0x4d,0x9c,0x6f,0x81,0x69,0x06,0x28,0x03,0x3d,0xe3,0x05,0xd4,0xe3,0xff,0x5e,0x71,0xda,0x17,0x81,0x4f,0x58,0x22,0xef,0xac,0x7e,0x9e,0x44,0x8b,0xc6,0x27,0x3e,0x51,0x16,0x80,0xb4,0x22,0x46,0x07,0x3c,0x7d,0xd5,0xad,0xb5,0x64,0x05,0x7e,0x6d,0xbb,0xd7,0x23,0x65,0x07,0x67,0x02,0x2a,0xa8,0xcd,0x12,0xc3 },
{ 0xf7,0x8b,0xea,0x35,0xfa,0x88,0xde,0x2f,0xb3,0x0b,0xf5,0x8f,0x6f,0x68,0x71,0xce,0xfa,0xf4,0x72,0x0c,0x4f,0xd9,0xf3,0x43,0x90,0xf2,0xc7,0xb5,0x88,0x5a,0xdc,0x19,0x7f,0x0d,0x38,0x98,0xb6,0xeb,0x44,0xac,0xd8,0xb1,0xb8,0x5a,0xf6,0x25,0x85,0xfa,0x4c,0x91,0x2e,0x37,0xec,0x4c,0xc3,0x48,0xec,0x2b,0xf0,0x21,0x89,0x83,0x4d,0xdb },
{ 0x90,0x22,0xe3,0x14,0x94,0x9c,0xcf,0x3e,0x89,0x37,0x54,0x2b,0x8c,0xde,0xc1,0x8e,0xa2,0xf8,0xd5,0x61,0x86,0x88,0xce,0x24,0x1e,0xbd,0x8b,0xac,0x13,0x7d,0xe7,0x36,0x2f,0xae,0x5e,0x4f,0x29,0x04,0xa3,0x94,0x66,0xd0,0xbb,0x04,0x52,0x26,0xce,0x08,0x7f,0x49,0x36,0x6c,0x44,0xea,0x76,0x57,0xf4,0xef,0x5c,0x08,0x44,0xc4,0x2e,0xcc },
{ 0x46,0x14,0x8c,0xeb,0x0f,0x98,0x7d,0x8b,0x7c,0x79,0x18,0x1b,0xc4,0x32,0xbf,0xad,0xe8,0x0c,0xd5,0xfc,0x91,0xd3,0x43,0x2f,0x24,0x58,0x82,0xa6,0xe5,0x85,0x78,0x0c,0x24,0xa3,0xfd,0x7f,0x96,0xee,0x6a,0xef,0x5e,0x54,0xe8,0xf4,0x3a,0xe1,0x79,0x03,0xfb,0x33,0x1b,0x9a,0x0b,0xcf,0x4b,0xe4,0x89,0x29,0xf5,0x1e,0xc7,0x08,0x71,0x62 },
{ 0xa7,0x76,0x63,0xf5,0xfc,0xdf,0x18,0x9c,0xc2,0x73,0x1f,0x78,0x01,0xb1,0x13,0x3e,0xe1,0x30,0xa9,0x69,0x64,0x39,0x62,0x97,0x87,0x2e,0x52,0xcf,0x75,0x7a,0x60,0x3c,0x4e,0x13,0x9c,0xbd,0xad,0xda,0xfc,0x58,0xda,0xe9,0x82,0xfa,0x54,0x76,0xa3,0x5a,0x8a,0xb8,0x6c,0x56,0x8c,0xba,0xce,0x48,0xd9,0x17,0x45,0x80,0x4c,0xa8,0xe4,0x68 },
{ 0xfa,0x46,0xc8,0x94,0xce,0x8e,0x65,0x34,0x30,0xe9,0x1d,0x33,0x16,0x2c,0x16,0xc3,0xd7,0x1f,0x53,0x20,0x38,0x5e,0x28,0x2d,0x42,0xa8,0xaf,0xb3,0x7e,0xf5,0xb7,0x71,0x28,0x23,0x14,0xfc,0xe3,0x03,0x19,0x9b,0x4a,0x4f,0xb1,0x2a,0x38,0xcb,0xe5,0xf8,0xff,0xa0,0x14,0xd9,0xc4,0xaa,0x5b,0xba,0x8d,0xbc,0x56,0x6e,0x3c,0x47,0xa5,0x42 },
{ 0x1a,0x70,0x98,0xd2,0xdb,0x88,0x9a,0x11,0x12,0x91,0x1d,0x29,0x65,0xf2,0x87,0x0e,0xa9,0x3d,0x69,0x6b,0xf7,0x9b,0x55,0x82,0xe8,0x3e,0x21,0x30,0x46,0x1d,0xff,0xe4,0x39,0xd4,0x74,0xf5,0xee,0x8b,0x69,0xfa,0xe5,0xa4,0x2c,0x93,0x6f,0x76,0xf3,0x27,0x68,0x68,0x27,0x83,0xde,0x26,0xb5,0x53,0xf3,0xba,0x5e,0xed,0x16,0x13,0x15,0xda },
{ 0xd1,0x43,0xbc,0x89,0x17,0x6c,0xee,0x34,0x44,0x1d,0x08,0x5c,0xcf,0xfb,0x4b,0x60,0x3d,0x67,0xbb,0x14,0xf8,0xc5,0x20,0xa4,0x8e,0x56,0x71,0xd2,0x14,0x21,0x47,0xe0,0xbc,0xa7,0xec,0x3d,0x10,0x3d,0x30,0xca,0xec,0x90,0x6c,0x3c,0xd1,0xed,0xe0,0xaf,0xe4,0x37,0x74,0xd6,0x1d,0xb8,0x25,0xa3,0xf7,0xc7,0xa7,0xbc,0x1e,0xcf,0x92,0x30 },
{ 0xff,0xd9,0x22,0x60,0xea,0x33,0x0b,0xb7,0xac,0x43,0xff,0x1f,0x15,0x41,0x7f,0xe9,0x1a,0x07,0x8f,0x4b,0x26,0x32,0x34,0xf2,0x84,0x10,0x0f,0x6f,0x24,0x72,0xc9,0xae,0xcf,0x4b,0x93,0xb0,0xba,0x21,0x11,0x47,0x59,0x99,0x63,0x32,0x25,0x71,0x1e,0x5f,0x26,0x3d,0x2e,0x9c,0x86,0x8b,0x8a,0x34,0xa0,0xce,0xc1,0xd8,0x66,0xd0,0x3a,0xe4 },
{ 0x9d,0x34,0xba,0x66,0x5c,0xc1,0x9f,0xdf,0x9a,0xce,0x63,0x0d,0xec,0xec,0x44,0xd6,0x5b,0x66,0xef,0xf2,0xe4,0xb7,0xe1,0xc9,0x34,0x9c,0x54,0xbe,0xff,0x74,0x2b,0x25,0x50,0xd6,0x86,0x08,0x07,0x23,0x3c,0x2f,0xc9,0x29,0xdf,0xdf,0x6d,0xb0,0xd7,0xc9,0x4e,0x3d,0xc2,0x62,0x65,0x50,0xdc,0x0f,0x4b,0x4c,0x1b,0x65,0x49,0xfd,0x10,0xe3 },
{ 0xc4,0x6c,0xe5,0x22,0xa3,0x17,0xe1,0xd3,0x55,0x33,0x7f,0x97,0x34,0x3a,0x7f,0x2e,0x93,0x43,0x43,0x2c,0xe3,0x87,0x19,0xe3,0x01,0xe1,0x5e,0x84,0xd6,0xf0,0xa1,0x72,0x34,0x7d,0xa2,0x69,0xbf,0x89,0x96,0xf9,0x2f,0x2a,0x1a,0x60,0x13,0x1b,0x37,0xde,0xd1,0x16,0xc6,0x2f,0xd7,0x38,0xbd,0xee,0x8f,0x20,0xab,0x5a,0x0f,0x65,0xaa,0xa7 },
{ 0x73,0xba,0xff,0x04,0x19,0xed,0xa7,0x23,0x89,0x38,0x6c,0xf2,0xb5,0x15,0x6d,0xed,0xdc,0x34,0xc1,0x06,0x19,0x51,0x5e,0xb5,0x74,0x11,0x45,0xc1,0x44,0xcd,0x33,0x97,0x1e,0x97,0xde,0x63,0x49,0x77,0xac,0x5f,0x6a,0x00,0xd1,0xe8,0xc1,0x8f,0x82,0x5e,0x77,0x9e,0xf9,0x2c,0xf8,0x26,0x13,0x49,0x41,0xef,0x2a,0x13,0x9a,0xdc,0xb8,0xe4 },
{ 0x9c,0xae,0xe0,0x7c,0x0a,0xd1,0xcf,0xd7,0x76,0x33,0x31,0x24,0x9b,0xb6,0x37,0x30,0x15,0x21,0x90,0x0f,0x5c,0xbb,0x9b,0x3a,0x47,0x1d,0x20,0x43,0xca,0xb3,0x4e,0x8f,0x6d,0x76,0x40,0xdf,0x41,0x4a,0xbe,0x88,0x70,0x56,0x02,0x50,0x77,0xce,0xb3,0x66,0x22,0x13,0x11,0xb2,0xf0,0xf1,0x35,0x7d,0x40,0x42,0xf3,0x86,0x89,0xb0,0xbc,0x5d },
{ 0x6f,0xb5,0x45,0x63,0x91,0xba,0x43,0x05,0x36,0xca,0x35,0xad,0xa0,0xf4,0x87,0x1e,0x14,0x0b,0x55,0xdc,0x31,0x8d,0x93,0xbc,0xac,0xc1,0xfd,0x7c,0xdf,0xd8,0x36,0x18,0xf6,0x63,0xd8,0x77,0x66,0xc6,0xb8,0xa3,0xed,0x3b,0x68,0xc5,0x21,0x09,0xda,0xba,0x2f,0x1e,0x64,0x99,0xaa,0xe5,0xd3,0x3e,0x3f,0x39,0xf5,0xcb,0x02,0x43,0x06,0x26 },
{ 0x0b,0xe4,0xa9,0x93,0xec,0xba,0x4e,0xd2,0x1f,0x53,0x07,0xfa,0xba,0x26,0xcd,0x6b,0xd2,0x2e,0x71,0xca,0x4a,0x12,0x62,0x4b,0x74,0x61,0xe5,0x1e,0x47,0x15,0x20,0x34,0xc2,0xf3,0xf5,0xc6,0x0e,0xce,0x68,0xf3,0xc9,0x93,0x04,0x68,0x86,0x8b,0xe7,0x72,0xf6,0x13,0x34,0xde,0x4e,0x96,0xe9,0x7c,0x0e,0xaa,0xa7,0x39,0x47,0x41,0xd2,0xa8 },
{ 0xd5,0x54,0xde,0xd0,0xb2,0x86,0x21,0x13,0xa1,0x45,0xc7,0xeb,0xdf,0x98,0xe4,0xb9,0x42,0xd9,0x1e,0x70,0xb4,0x6e,0xf4,0x79,0x35,0x7b,0xdb,0x04,0x1c,0xbd,0x9a,0x71,0x74,0xb8,0xf9,0x4b,0x6c,0x36,0x70,0x8e,0xff,0x0f,0x7a,0xd4,0x5a,0xc3,0x93,0x14,0x5f,0x29,0xfe,0xa9,0xa7,0xa6,0x1c,0x99,0xa4,0x3a,0x4a,0x8b,0x3c,0x8c,0xc3,0x2e },
{ 0x33,0x70,0x84,0x69,0x0b,0xd0,0x8a,0x71,0xa0,0x17,0xd3,0x8c,0x6f,0x8d,0x27,0x8b,0xcb,0x19,0xc9,0xa6,0xc3,0x33,0x9d,0x0e,0x4a,0xb2,0x61,0x63,0x19,0xdb,0x98,0x87,0x18,0x11,0x11,0xfb,0x82,0x6e,0xac,0xe2,0x06,0x51,0xf3,0x6e,0x9a,0x9a,0x52,0xbe,0x94,0x0e,0x2b,0xa0,0x22,0x79,0x4a,0x8c,0x60,0x7f,0x2a,0xfb,0xea,0xfb,0x37,0xda },
{ 0xb8,0x89,0xd7,0x8b,0xcf,0x05,0xf1,0xc7,0x63,0xc4,0xe4,0x54,0x29,0x62,0x51,0x71,0x9f,0x61,0x77,0x66,0x22,0x13,0x04,0x85,0xde,0x82,0x81,0x7f,0x3b,0xe2,0x8c,0x8a,0xba,0xbb,0x0b,0x07,0xfa,0x51,0x1b,0x9b,0x18,0x2b,0xe4,0xa9,0x75,0xc7,0x00,0xea,0xdf,0xf6,0x31,0xe5,0x78,0x2f,0xb8,0xc3,0x30,0x37,0xfe,0x51,0xea,0xfd,0xf8,0x9e },
{ 0xbf,0x65,0xba,0x7b,0x02,0x3c,0x74,0x4f,0xda,0x55,0xd1,0x95,0xa1,0xc6,0x24,0x16,0x9a,0x1f,0x65,0x47,0x36,0xb5,0x7d,0xc6,0x0b,0xb4,0x86,0x3e,0x0c,0x6f,0xf0,0xd0,0x47,0x1e,0x5e,0xbb,0xf1,0x5a,0x84,0x6f,0x3a,0x8d,0x95,0x75,0x09,0xb4,0x96,0x6d,0x77,0xdb,0xa4,0xc0,0xf8,0xc8,0xd9,0xdc,0x70,0x17,0x77,0x34,0x0e,0xc9,0x20,0x3c },
{ 0x9c,0xf6,0x46,0xb9,0x1a,0x4c,0x25,0xbb,0xc9,0x74,0x44,0x6c,0x29,0x76,0xfb,0x98,0x26,0x83,0xbe,0xc7,0x8b,0x09,0x8c,0xb3,0x0e,0x2e,0x5f,0xb3,0x1f,0xa4,0xe3,0x3c,0x37,0xb0,0x62,0x4d,0xc1,0xf6,0x5a,0x89,0x1e,0x40,0x8e,0x25,0x8b,0x82,0x1f,0x31,0x9e,0x20,0x58,0x27,0xeb,0xc1,0x60,0x32,0x19,0xc4,0x5e,0x06,0x0e,0x0d,0x45,0x63 },
{ 0x69,0x65,0xa2,0x78,0x8b,0xaa,0xf6,0xfd,0x80,0x4f,0x17,0x87,0x88,0xba,0x09,0xee,0xf9,0xaa,0xd7,0x16,0x00,0x0c,0x9a,0x0b,0xd3,0xc8,0xc1,0xc3,0x2d,0xda,0x28,0x0b,0x19,0x6f,0xd6,0xc1,0x23,0x8b,0x62,0x10,0x72,0xe4,0xe9,0x5b,0x69,0xd2,0xb6,0x76,0xf4,0xcc,0x0b,0x46,0xa5,0x53,0xaf,0x04,0x25,0x33,0x24,0xf7,0x1e,0x18,0xd1,0x86 },
{ 0xfe,0x25,0x19,0x03,0xa4,0x52,0x32,0x98,0x35,0x91,0x7f,0x8d,0x55,0x47,0x84,0x4f,0x6c,0xae,0x54,0x69,0x24,0x5e,0x15,0xf5,0x8c,0x49,0x69,0x39,0xc2,0x24,0xef,0x48,0x4f,0xac,0x9c,0xac,0x97,0xca,0x9b,0xe0,0xd8,0x36,0xb9,0x40,0x5a,0x1b,0x36,0xa0,0x45,0x5a,0xaa,0xa1,0xc3,0x21,0xe4,0x08,0xae,0x69,0x60,0xa0,0x51,0x36,0xdf,0xa7 },
{ 0x09,0x91,0xe2,0x85,0xd0,0xdc,0xdd,0xcb,0x75,0xb1,0x4c,0x5e,0x12,0xe9,0x2a,0xa7,0xb9,0x4b,0xbb,0x58,0x43,0x57,0x61,0xd7,0x2f,0xb6,0xb6,0xb7,0x11,0x44,0x08,0xd1,0x6c,0x4e,0x5c,0xc8,0x4b,0x89,0xdb,0xa2,0xbd,0xda,0xb7,0x2f,0xe7,0x51,0xce,0xf7,0x07,0x23,0x68,0x5e,0x89,0x85,0x3b,0xf8,0x97,0x96,0xa2,0x65,0xdf,0x54,0x80,0x1f },
{ 0xcc,0x41,0x1e,0x54,0x13,0x68,0xf9,0xf2,0xe2,0xc3,0xb6,0xc3,0xf6,0x13,0x10,0x16,0xce,0xc2,0x9f,0x6b,0xbd,0xd3,0xe7,0xa5,0xbc,0xcf,0x5c,0xb6,0x4d,0x40,0x5a,0x74,0xfe,0xcb,0x81,0x2f,0xac,0x77,0x45,0x84,0x57,0x15,0x27,0xfc,0x35,0x01,0x86,0xd0,0xbe,0x4f,0xc2,0x00,0x9f,0x16,0xfb,0x0d,0x64,0x5b,0xe6,0xb6,0x18,0xd1,0xbd,0xdb },
{ 0xeb,0x10,0xdd,0x19,0x8f,0x56,0x4e,0x0a,0xff,0x36,0x24,0xb7,0xcb,0x70,0x60,0x0f,0xc9,0x7f,0x23,0xae,0x37,0xf8,0x1f,0x38,0x1a,0x8c,0xf5,0x49,0xa8,0x62,0x34,0xd3,0x30,0x13,0x14,0x00,0x76,0xc0,0x37,0x16,0xec,0xc8,0x4f,0x3c,0x76,0x48,0x9e,0xe8,0xc5,0x8c,0xf0,0x52,0xcf,0xb6,0x8e,0x29,0xb6,0x16,0x95,0x5c,0x00,0x60,0x4f,0x98 },
{ 0x8c,0x6c,0x92,0x3c,0xf1,0xa4,0x35,0x1c,0xca,0x35,0x6e,0xf3,0xef,0xc3,0x5d,0xe1,0x08,0x98,0x02,0x2a,0x45,0xc4,0xa1,0xb1,0x96,0x28,0x29,0x10,0xae,0xe1,0x33,0x7b,0xa1,0x25,0x6f,0xc8,0x4d,0x40,0xff,0x6a,0x5e,0xfb,0xb2,0x31,0x9e,0xaa,0x8e,0x84,0x84,0x53,0x62,0xc1,0xc6,0xdd,0xfa,0x2a,0xcb,0x45,0x1d,0x5c,0xd9,0xc8,0x4a,0xbe },
{ 0xe6,0x54,0x00,0x43,0x83,0xdb,0xd6,0xb1,0x5c,0xa7,0x4a,0x29,0x9e,0xca,0xb1,0xec,0x0c,0x82,0x50,0x1e,0x7e,0xa4,0x4d,0xbe,0x40,0x85,0xce,0xb4,0x03,0xdc,0xc3,0x2b,0x1e,0x43,0x22,0x19,0x47,0xcb,0xc3,0x76,0xce,0xd3,0x0b,0xf3,0xe0,0xc9,0xc5,0x4b,0x12,0x46,0x30,0x6d,0x4f,0x5e,0x00,0xcf,0x79,0xe3,0x78,0x63,0x64,0x57,0x89,0xdf },
{ 0xcc,0x80,0x51,0x49,0x68,0x03,0x58,0x14,0x58,0xf1,0x17,0x73,0x45,0x4a,0xc4,0x00,0x92,0xad,0x76,0xbf,0x83,0xea,0x74,0xc4,0x04,0x01,0x46,0x1d,0x36,0xdf,0x9b,0x92,0xd5,0x67,0x00,0x99,0x10,0x40,0x27,0xfc,0x79,0xbe,0x9c,0x37,0x35,0xc9,0xe7,0x2b,0xf6,0x1b,0x38,0x67,0x16,0x23,0xac,0xfa,0x08,0x6b,0x67,0x62,0x37,0x18,0x9e,0x89 },
{ 0xf8,0x1f,0x5b,0xe3,0x8b,0x8c,0xa5,0x34,0xe8,0xa5,0xc7,0x93,0x8d,0x18,0xdf,0x9e,0x0d,0x23,0x89,0x66,0xf7,0x4e,0x1a,0x6b,0x82,0x6f,0xad,0xc0,0x52,0x3b,0x71,0x6d,0xdc,0x7f,0x49,0x32,0x9c,0x1f,0x06,0xdf,0x1d,0x56,0xd2,0x9d,0x38,0x0e,0x03,0x28,0x66,0x07,0x58,0x50,0x3a,0x87,0x83,0x30,0x46,0x40,0x02,0xf5,0x12,0x63,0x24,0x01 },
{ 0x26,0x49,0x93,0x99,0x22,0x78,0x09,0x11,0xfe,0xf8,0xa6,0xca,0xf0,0xe4,0xb6,0x0c,0x79,0x08,0x12,0xe2,0x59,0xb9,0xef,0x40,0xc8,0xc4,0xf9,0xec,0xdd,0xef,0xbc,0xe5,0x60,0x45,0x65,0x91,0x8b,0x9a,0x59,0x13,0x93,0x0d,0xe9,0x58,0x7a,0x28,0x6e,0x26,0x8d,0xfa,0x13,0x47,0xd7,0xfe,0x86,0x57,0x87,0x22,0xc4,0xe0,0x97,0xe9,0x62,0x41 },
{ 0x74,0x59,0xe7,0x72,0xc2,0x9c,0x4c,0x3f,0x15,0x8e,0xa7,0x62,0x80,0xd6,0x31,0x82,0x0e,0x4e,0x1a,0x71,0x3b,0xd0,0x57,0x25,0x46,0xe0,0xc5,0x27,0x90,0x78,0x95,0x39,0x89,0x2b,0xc7,0xf5,0x18,0x34,0x44,0xea,0xec,0x7e,0x8e,0x85,0x8a,0x2e,0xc1,0xa9,0x38,0x3a,0xf5,0xe0,0x4f,0x7d,0xb3,0x91,0x3c,0xdf,0x5a,0x47,0x14,0x39,0xd9,0x7f },
{ 0x8d,0x45,0xea,0xc6,0x82,0xd4,0x99,0xd7,0x0e,0xa9,0x23,0xfb,0xf3,0xfe,0xae,0x66,0x71,0xcd,0x1e,0x0d,0x3a,0x10,0xb2,0x01,0x7a,0xb7,0x1b,0x91,0x85,0xda,0xf0,0x2c,0x23,0xe8,0x91,0xb1,0x0a,0xf5,0x7c,0x77,0xd2,0xc3,0x3a,0x54,0x14,0xc7,0x87,0x01,0xba,0x1c,0x48,0xdf,0x02,0xf3,0x78,0xed,0x85,0x09,0x79,0x65,0xdd,0xab,0x52,0x88 },
{ 0x2e,0x1c,0x7c,0x38,0x3d,0x7f,0x84,0x92,0xc6,0x04,0xc9,0xf8,0x7d,0x2e,0xfd,0x3f,0x34,0x5e,0x4f,0xd9,0x5b,0x88,0x81,0xc4,0xf4,0x72,0x7e,0x8c,0x8e,0xf2,0xdf,0xe7,0xc6,0x29,0xdc,0x2b,0x09,0xf0,0xbe,0x26,0x6d,0x9f,0x45,0x29,0xff,0x7e,0xa8,0xf1,0xc2,0xd7,0x47,0xd6,0x67,0xb0,0xc5,0xbd,0x3f,0x85,0xcc,0xa2,0xc5,0x5e,0x5f,0x2a },
{ 0x19,0x8e,0x8e,0x0d,0x55,0x7c,0xf5,0xc0,0x07,0x26,0x23,0x66,0xab,0xd5,0x40,0x79,0x42,0x1a,0xd5,0x01,0xd7,0x54,0x80,0xa8,0x28,0xde,0xf5,0xd2,0x0c,0x7e,0x50,0x41,0xbe,0x79,0x98,0x27,0x0d,0x79,0x6a,0x31,0x6e,0x23,0xa6,0xae,0x01,0xec,0xeb,0x27,0x64,0x1f,0xe1,0x55,0x86,0x54,0x9b,0x88,0x27,0x12,0xe4,0x3a,0xb7,0x32,0xe3,0x92 },
{ 0x8c,0x86,0x79,0x9b,0x36,0xe7,0xd5,0x19,0xe6,0x31,0x38,0xa9,0x02,0x28,0xdc,0x28,0x02,0x2f,0xc1,0x9d,0x84,0x29,0xb0,0x19,0xac,0xeb,0xe8,0x33,0xf2,0xf2,0x18,0x73,0x5c,0x0c,0x2c,0x12,0xa5,0xa3,0xe8,0x5d,0x61,0xce,0x9f,0xe4,0x75,0xa2,0x72,0xd1,0x5d,0xbf,0x43,0x06,0xe8,0x61,0xf0,0xec,0x89,0x05,0xb7,0xd7,0xe5,0x15,0x91,0x40 },
{ 0x56,0x48,0x33,0x3b,0x6f,0xc5,0x93,0x2a,0x4c,0x85,0x60,0x50,0xa0,0xd3,0x8c,0x07,0x49,0x83,0xdb,0xfb,0x54,0x79,0x8a,0x52,0x10,0x7d,0x20,0xbf,0xba,0xa5,0x5c,0x3e,0x2b,0x38,0xf6,0x16,0x0a,0x59,0x05,0x93,0x1f,0xc2,0xb9,0xe2,0x1d,0x5e,0xb3,0xd7,0xbb,0x6c,0x66,0x7b,0x2e,0x9d,0x9e,0x47,0x92,0x8b,0xca,0x20,0x4c,0x0d,0x5f,0xc0 },
{ 0x85,0x68,0x54,0x74,0xd7,0x7e,0x08,0x48,0x23,0x97,0xf4,0x63,0xe5,0x3c,0xde,0x1d,0x02,0x2e,0xca,0x56,0xc3,0x91,0x5c,0x97,0x8e,0xd9,0xc7,0xe7,0x87,0x35,0x4b,0x7a,0x20,0xb5,0x0e,0xb5,0x0b,0xf5,0x87,0xb6,0xee,0xbc,0x91,0x3b,0x2a,0x6f,0x72,0x87,0x06,0xa8,0x91,0xdc,0x1f,0xd6,0xfd,0xbd,0x89,0x54,0x40,0x2b,0xd1,0x6e,0x04,0xc6 },
{ 0x38,0x46,0x52,0x19,0x05,0x72,0x89,0x08,0x53,0x98,0x63,0x16,0xbf,0xdb,0xc9,0xfd,0x0d,0x19,0x6e,0x7e,0xfc,0xf7,0xdb,0xde,0xf2,0x67,0x1a,0x1f,0x3d,0xe5,0x1d,0x50,0x47,0x55,0xec,0x8f,0x8f,0x43,0xfe,0x95,0xc8,0x2e,0x14,0x9a,0x24,0x9c,0x01,0x5a,0x8f,0x02,0x09,0xee,0xd2,0x5f,0x88,0x17,0x18,0xb3,0x97,0x5c,0x4d,0x25,0xda,0x69 },
{ 0x80,0xec,0xab,0x9f,0x02,0xb4,0xcc,0x6c,0x69,0x1e,0xc7,0x7b,0x5a,0xf1,0x69,0x4c,0x45,0xfa,0xf0,0x84,0x3c,0x53,0x44,0xc1,0x18,0x6c,0x5a,0xe0,0x46,0x43,0x45,0xe7,0xf4,0x24,0x14,0x8a,0xca,0x6d,0x55,0xc6,0xfb,0x5f,0xc8,0xf8,0x3e,0x19,0xfc,0x84,0x32,0xe5,0x00,0xca,0x5b,0xcc,0xdb,0xb4,0x97,0xa3,0xde,0x52,0xe0,0x42,0xe3,0xef },
{ 0xed,0x84,0x57,0x67,0x35,0xea,0x00,0x52,0x04,0x82,0x1d,0x1c,0x09,0x50,0xa2,0x71,0x7c,0x92,0xfe,0xf0,0x54,0xcf,0xce,0x06,0x7e,0x01,0xfc,0x37,0xc3,0xd0,0x44,0x5b,0x7b,0x29,0x9b,0x77,0x68,0xfa,0x3a,0x0e,0x20,0x31,0x70,0x43,0x36,0xbf,0x7c,0x52,0x30,0xed,0xc8,0x25,0x4e,0xc9,0x06,0xb6,0x43,0x32,0x5b,0x5b,0xa7,0x81,0x94,0x03 },
{ 0xe1,0x5d,0x0f,0x23,0x21,0xce,0xcf,0x44,0x33,0xf1,0xc0,0xb1,0x84,0x3e,0xff,0x4f,0x5d,0x13,0x9a,0x21,0x2f,0x6b,0xc0,0x3d,0x25,0x40,0x30,0x65,0x74,0x36,0x2b,0xd4,0x9a,0x84,0xcb,0xe2,0x70,0x7e,0xc2,0x2e,0xc1,0xbf,0xe0,0x39,0x30,0x8b,0xe3,0x26,0x23,0xed,0x4b,0xf8,0xa4,0x46,0x82,0x69,0xbe,0x6a,0xcc,0xda,0xaf,0xb4,0x6f,0xb8 },
{ 0xc2,0x9e,0x51,0x15,0x0b,0x04,0xfc,0x53,0x68,0x74,0xe0,0x4c,0xbf,0xf2,0x25,0x61,0x45,0xb8,0x6b,0x02,0x36,0x23,0x9e,0x67,0x5c,0x78,0x38,0x2d,0x30,0x7e,0x95,0xbe,0xa6,0xc6,0x8b,0x5f,0x71,0xdc,0x4a,0x70,0x13,0x9a,0x50,0x3e,0xdc,0x98,0xcf,0xc7,0xd7,0x36,0xa4,0x56,0x4f,0x5b,0x1f,0xad,0x69,0x41,0xc1,0x59,0x2f,0xbc,0x64,0x0b },
{ 0xe7,0xa3,0x88,0x89,0xdd,0xb5,0x55,0x3d,0x58,0xf9,0x41,0x87,0xdc,0x6d,0x34,0xdc,0x5b,0x42,0x73,0xb9,0x28,0x40,0xcc,0x66,0xd3,0x76,0xb9,0x3b,0x36,0x9f,0x9c,0x65,0x54,0x37,0xb5,0xba,0xb1,0x21,0x91,0x72,0x08,0xe3,0x7b,0x26,0x19,0x21,0x45,0xbd,0x58,0xa2,0x2b,0x94,0x18,0x7d,0x1a,0xb7,0x3b,0x1b,0xe4,0xe0,0xac,0xa7,0xee,0x5c },
{ 0xff,0x0b,0x4d,0x27,0xc4,0x9f,0x1b,0x23,0x71,0xa8,0x22,0x49,0xff,0xc8,0xb3,0xdb,0x01,0xa4,0xc6,0x4b,0xd4,0x94,0xa0,0x08,0xeb,0x38,0x6c,0xe3,0xb9,0xba,0x89,0xba,0x06,0x20,0xc2,0x3c,0xcb,0xa6,0x96,0x74,0xc7,0xb3,0x6f,0xa4,0x50,0xa9,0x0a,0xbd,0x8b,0xa2,0x29,0xcc,0x1d,0x59,0x0d,0xe0,0x11,0xa6,0xd7,0x41,0xc9,0x08,0x0e,0xb6 },
{ 0xc1,0xae,0xd7,0xe4,0x17,0x03,0xaf,0xba,0x03,0x12,0xb0,0x01,0xb9,0x0d,0x7f,0xb9,0xeb,0xb0,0x99,0x93,0x74,0xa0,0x7f,0x90,0x2b,0x5f,0xd6,0x43,0x1f,0x6b,0xe9,0xec,0x43,0xd9,0x3d,0x38,0xc9,0x8e,0x03,0xd3,0xe7,0xd6,0x24,0xb0,0x56,0x44,0x0f,0x84,0xa0,0xfc,0x07,0x18,0x88,0x75,0xd0,0x49,0xc3,0x4b,0xd0,0x5d,0xd1,0x9a,0x3e,0xd8 },
{ 0x11,0x36,0xb7,0x59,0xc1,0x2b,0x3b,0x11,0xb3,0x19,0xe5,0x2d,0x6b,0xf9,0x59,0x7d,0x9e,0x36,0x07,0x55,0x46,0x15,0x62,0x2a,0xdd,0xc6,0xdc,0x1b,0x12,0x37,0x8c,0x16,0x7d,0xec,0x0f,0xcf,0x45,0x16,0x8f,0xdd,0x09,0xf0,0xab,0xc6,0x0f,0xe9,0xec,0xb2,0x96,0x14,0xaa,0x28,0xe7,0x51,0xcc,0xe3,0x79,0xf5,0x9b,0xd0,0xb3,0x48,0x81,0x27 },
{ 0x12,0xa8,0xd7,0xe0,0xf2,0xa8,0x3c,0xa0,0xbf,0xe2,0xc2,0x9c,0x94,0x3b,0x7c,0xba,0xf8,0xdc,0x60,0xc0,0x56,0x15,0xf7,0x73,0x00,0xaf,0x25,0x68,0xad,0xd9,0xd9,0x63,0x6f,0xd5,0xea,0xb3,0x27,0xcd,0xb6,0xbe,0x3f,0xd1,0xf7,0xfd,0x73,0xd0,0x81,0xee,0x93,0x86,0x80,0x9f,0x5d,0x35,0x9e,0xa0,0xa8,0x3e,0x17,0xa8,0x3e,0x71,0xa9,0x5b },
{ 0x11,0xf1,0xf5,0x73,0x81,0x59,0x98,0x4d,0x08,0x6f,0x8c,0x11,0xb6,0x44,0x50,0x72,0xd9,0x5c,0x41,0x0a,0x18,0xd0,0x14,0x5f,0xd0,0xe6,0xda,0xff,0xf3,0x4d,0x39,0x77,0xab,0x98,0xc1,0xb5,0x79,0xc0,0xb9,0x85,0xcb,0x82,0x9f,0x87,0xd3,0xa7,0x48,0xc7,0x93,0x7e,0x95,0x3f,0x3d,0xc6,0x82,0x06,0x14,0xbc,0x90,0xea,0x00,0x15,0x4b,0x71 },
{ 0x75,0x00,0xde,0x43,0x23,0x7e,0x11,0x6e,0x3c,0x30,0x01,0x03,0xdf,0x23,0x5f,0x07,0xe2,0x90,0xa2,0xc8,0xf2,0xb1,0xa8,0x12,0xad,0xc9,0xbe,0xc8,0xd7,0x9b,0xe6,0x13,0x97,0x4c,0x2c,0x10,0x10,0x0e,0xf7,0x51,0xe3,0x09,0x28,0x4e,0x81,0xc1,0x93,0xe0,0x81,0x86,0xe9,0x45,0x94,0x9e,0x20,0xee,0xec,0xf4,0xee,0x3e,0x20,0x8c,0xb9,0xa5 },
{ 0x93,0x4c,0x89,0xb9,0xaa,0x1c,0xdc,0x48,0x9b,0x80,0x18,0xb7,0x5e,0x7d,0x25,0x86,0x95,0x3b,0x9a,0x77,0x9a,0x2e,0x61,0x3f,0xbe,0x84,0x0c,0xa8,0x4d,0x6a,0x6a,0x96,0x85,0x6a,0xf4,0xff,0xbc,0xca,0xf4,0x0a,0x45,0x16,0xd6,0xd6,0xb3,0x1b,0x2e,0x9d,0x10,0x7d,0x2d,0xf0,0xe2,0xe4,0xca,0x9f,0xeb,0xef,0x14,0x85,0x33,0xd8,0x38,0xed },
{ 0xca,0x7d,0x50,0xc1,0xec,0xbe,0x9a,0x88,0x70,0x2e,0x4e,0xc0,0x84,0xfa,0x11,0x42,0x30,0xce,0x97,0x71,0x1a,0xe0,0x0f,0xb9,0x8a,0xfe,0xb2,0x8a,0xd5,0x48,0x16,0x95,0x92,0x30,0x29,0xc4,0xbd,0xb6,0x95,0x0a,0xe3,0x27,0xd0,0xb4,0x6e,0xfb,0x35,0x9b,0x9a,0x36,0x1c,0x76,0xeb,0x10,0x26,0xdb,0xfd,0x81,0xc0,0x34,0x64,0x49,0x33,0x20 },
{ 0x4d,0x00,0x88,0x5c,0x9a,0x9d,0xf2,0x15,0x8f,0x58,0x32,0x66,0x5c,0xda,0x09,0xc3,0xa8,0x03,0x0f,0x01,0x8d,0x3a,0x35,0x11,0xfe,0xbf,0x5e,0xa4,0xac,0xc5,0x06,0xc8,0x3f,0x85,0x3c,0x3a,0x96,0x71,0xc7,0xf2,0x14,0xc0,0x47,0x44,0x09,0xfe,0x88,0xa1,0x45,0xd1,0x7a,0xca,0xa5,0x6c,0xe1,0x33,0xd4,0xfa,0x66,0x0e,0x18,0x35,0xaa,0x2c },
{ 0x40,0x30,0xc0,0xd8,0x4e,0xf6,0xb7,0xab,0xcd,0xc6,0x0a,0xb0,0x10,0x9f,0xc0,0xaa,0x24,0xb3,0x47,0x21,0x5b,0xaa,0x26,0xab,0x9f,0xba,0xac,0x53,0x92,0x35,0xfa,0xcd,0x50,0x57,0xf2,0xa1,0x14,0xb8,0x58,0xac,0xb6,0xc5,0xf4,0x33,0x42,0xd3,0x4b,0x8f,0x44,0x00,0xf6,0x32,0x4f,0x08,0x0b,0xd0,0xdf,0x37,0x2b,0x69,0xa3,0x34,0xd3,0x07 },
{ 0x0d,0x2b,0xf2,0x8b,0xa7,0xc2,0xa5,0x1a,0x90,0xf5,0x73,0xa8,0x25,0x89,0xf1,0x8e,0x07,0xe5,0x0a,0xb0,0x17,0x86,0xdf,0x70,0x9c,0x76,0x2e,0xf1,0x94,0x3e,0x83,0x2a,0x0c,0xac,0x3f,0x43,0x13,0xbd,0x00,0xac,0x70,0x87,0xa1,0x0a,0x94,0xb4,0xe7,0xed,0x27,0xec,0x9d,0xb9,0x60,0x55,0x14,0x46,0x48,0x26,0x3a,0xf1,0x5b,0x20,0xd3,0x7c },
{ 0x24,0x1a,0x29,0x27,0x92,0x70,0x79,0xc0,0xd0,0x32,0x09,0xc5,0xc4,0x24,0xec,0xf8,0xee,0x0e,0xd0,0xea,0xde,0x47,0x40,0x79,0xdb,0x86,0x33,0xde,0xe3,0x9b,0xcc,0x99,0x7a,0x77,0x4e,0xcd,0x87,0x41,0x6c,0xfb,0x53,0xa1,0xeb,0xaa,0x33,0x55,0xa6,0x5b,0xb6,0x31,0x90,0x8e,0xf3,0x8e,0x66,0xf9,0x92,0xf9,0x40,0x96,0x81,0x38,0xf0,0x0a },
{ 0x84,0xfe,0xed,0xc3,0x62,0x0e,0xba,0xd8,0xfb,0xe9,0x21,0x8b,0xf8,0x9d,0xb7,0x61,0x0b,0x63,0xf0,0x6c,0x8f,0x9b,0x68,0x56,0xfe,0x43,0xbd,0x70,0xa3,0x83,0x05,0xbd,0xf1,0x99,0xbb,0xd5,0xa9,0xc7,0xc1,0x65,0x4a,0x3f,0x5b,0x5c,0x17,0xda,0x39,0x48,0x25,0x68,0xe1,0x2d,0xdb,0x32,0xc5,0x3b,0xff,0xf4,0x1f,0xf8,0x60,0x73,0xbb,0xa9 },
{ 0x69,0x79,0x92,0x45,0xfd,0x6c,0x18,0xbf,0xa2,0xbc,0xa1,0x7a,0x6f,0x9e,0xbe,0x05,0x46,0xbb,0x4c,0x2b,0xe3,0x80,0x3f,0x1f,0x4d,0x4f,0x7f,0x21,0x91,0x60,0x5e,0x7b,0x97,0xc7,0xfd,0x92,0xad,0x38,0xc8,0xd6,0x76,0x65,0x3a,0x0d,0x8f,0x3e,0x8b,0x07,0x5d,0xaa,0x75,0xdf,0x7b,0xfa,0xc7,0x5d,0x3c,0xe1,0xe2,0xf2,0xda,0x50,0x01,0xf0 },
{ 0x5d,0x89,0x08,0x86,0xcb,0x47,0x5b,0xd4,0x21,0x50,0x18,0x71,0xdf,0xd7,0xfd,0xeb,0x3c,0x39,0x9f,0x34,0xf0,0x3e,0x03,0xf0,0x58,0x25,0x54,0xa2,0xa1,0xfa,0xaf,0x83,0x97,0x09,0x38,0xbd,0x84,0xa2,0xf6,0x9a,0x46,0xb1,0x4d,0xef,0x6c,0xb0,0x61,0x6d,0x75,0x5b,0x71,0x79,0x21,0x46,0x33,0xd2,0x49,0x84,0x13,0xff,0x2c,0xe3,0x1f,0xba },
{ 0x0b,0x7d,0xe3,0xd2,0x46,0xb4,0x6e,0x58,0xa2,0x5c,0x0d,0xd9,0xba,0xcd,0xe3,0x1b,0x1c,0x11,0x54,0x21,0xde,0x3a,0x6d,0x52,0xd6,0xac,0x5a,0xdd,0x91,0x10,0xea,0x49,0xf9,0x2b,0x4c,0x58,0xc8,0xca,0xa1,0xd4,0x8e,0xb5,0x01,0xa9,0x1a,0x82,0x33,0xaf,0xb8,0xc3,0x52,0x4e,0x95,0xcb,0xed,0xcf,0x13,0x83,0x96,0x08,0x1f,0x16,0xf8,0xa6 },
{ 0xa6,0xe1,0xc5,0x81,0x46,0x99,0xe6,0x9c,0xf5,0xd7,0x48,0x45,0x41,0x0e,0x16,0x29,0x1b,0xc3,0xca,0xfc,0x16,0x40,0xd3,0x5e,0x06,0x04,0xc5,0xb8,0xbd,0xff,0x88,0x74,0x0c,0x25,0xae,0x34,0xdf,0xa8,0x27,0xe6,0x24,0xb1,0xe0,0xa9,0xef,0x5a,0x2e,0xfd,0xb7,0x89,0x99,0x9f,0x38,0x12,0xb2,0x14,0x18,0x85,0xd8,0xef,0x93,0x07,0x6d,0xaf },
{ 0x18,0x08,0x71,0x08,0xb7,0xc1,0x6d,0x3e,0x13,0x21,0x73,0xc0,0x62,0xb6,0x14,0xca,0xbb,0x12,0xcd,0x5c,0xbe,0xf1,0xbe,0x07,0x45,0x48,0xef,0xf8,0x34,0x80,0x57,0x0a,0xdc,0x87,0x3c,0xff,0x3d,0x9d,0x42,0x46,0x51,0x3e,0x11,0xed,0xea,0x79,0x36,0xe3,0xbc,0x52,0x88,0xf3,0x47,0x6d,0x5b,0x0b,0xb6,0x16,0xe0,0x09,0xbd,0xea,0x89,0x4f },
{ 0xbc,0xac,0xf7,0x1d,0xf5,0x63,0x02,0xbc,0xc4,0x79,0x1b,0x5b,0x4b,0x8b,0x2a,0x24,0xc3,0xf9,0x9f,0x8e,0x86,0x22,0x58,0x1c,0xd8,0x9b,0xac,0xbd,0xa1,0x75,0x40,0x05,0x2e,0x5a,0x35,0x99,0x3a,0x28,0xbe,0xd1,0x28,0xf5,0x28,0x39,0x7f,0xff,0xa8,0x15,0x83,0xf1,0x43,0x26,0x52,0xc7,0x54,0x3a,0x4d,0x37,0x01,0xc4,0x68,0x4d,0x2d,0xd7 },
{ 0x8a,0x53,0x5f,0x56,0x6e,0xc7,0x36,0x17,0xf5,0x62,0x2d,0xf4,0x37,0x37,0x13,0x26,0x9e,0x4c,0x35,0x87,0x4a,0xfd,0xf4,0x3a,0xae,0xe9,0xc7,0x5d,0xf7,0xf8,0x2f,0x2a,0x04,0x55,0xc0,0x84,0x68,0xb0,0x8b,0xd7,0x37,0xe0,0x28,0x19,0x08,0x5a,0x92,0xbf,0xcd,0xe5,0x33,0x86,0x4c,0x8c,0x76,0x69,0xc5,0xf9,0xa0,0xac,0x22,0x30,0x94,0xb7 },
{ 0x22,0xb7,0xa0,0x70,0xd6,0x8c,0x1e,0xb7,0xbe,0x4d,0xbe,0x03,0x5d,0x87,0xc7,0x6b,0x95,0x9d,0x39,0x87,0x24,0x3c,0x75,0xc2,0x73,0x2b,0x22,0x3d,0xfb,0x0e,0xfa,0xf3,0xc2,0xc2,0x65,0x9e,0x9b,0xf8,0x23,0xc7,0x0d,0x1f,0xda,0xfa,0xdd,0x8c,0xec,0xc0,0x15,0xc9,0x16,0x7c,0x3a,0x04,0x53,0xd4,0x30,0x2f,0x1f,0xe8,0xbc,0x52,0x3e,0x5f },
{ 0x4e,0xaf,0xa1,0x7a,0x88,0x81,0x4d,0x84,0xd3,0x6e,0x2c,0x60,0x48,0xbd,0xfa,0x17,0x57,0x99,0xc8,0xf1,0x94,0x19,0x14,0x9b,0xe8,0xb0,0x43,0xc4,0x01,0xcd,0x7f,0x36,0xa4,0x79,0x74,0xd8,0x51,0xec,0x20,0x1f,0xee,0x45,0x53,0x15,0x27,0xef,0xc4,0x7b,0x50,0x36,0xa5,0x8c,0xad,0x45,0x43,0xd2,0xc7,0x78,0xc6,0x4a,0x0b,0x2d,0x1c,0x43 },
{ 0x93,0x9a,0x02,0x7d,0xfc,0xa3,0x7d,0x88,0x96,0x9a,0x0a,0x65,0xf4,0xbe,0x3e,0xd1,0xc1,0x24,0x9e,0xf7,0x92,0x3c,0x55,0x22,0x61,0xa1,0x17,0x2c,0xd3,0x6e,0x5b,0xb6,0x47,0x0e,0x93,0x41,0x2f,0x18,0x4d,0x6e,0x40,0x25,0x00,0xef,0x32,0x0b,0x07,0x13,0x52,0x0c,0x38,0x2d,0x58,0xde,0xa6,0x12,0x8f,0x52,0x8e,0xe1,0x94,0xe4,0xf9,0x9b },
{ 0xc6,0x12,0x2f,0xc4,0x4f,0xbf,0xdb,0x25,0xcd,0xa9,0xe4,0x96,0xcd,0xf1,0xc5,0x89,0x71,0xdc,0x98,0x7a,0x8f,0xeb,0xc7,0x65,0xcc,0x31,0x9d,0x54,0xb9,0x62,0x14,0xfb,0xea,0x20,0x5b,0xec,0x83,0x43,0xac,0x41,0x90,0x31,0xc9,0x86,0x88,0x77,0xf9,0x1f,0x08,0xa6,0xe4,0x8c,0x1e,0x27,0x1f,0x8a,0x37,0x02,0xbd,0x8f,0xb7,0xad,0xff,0xf7 },
{ 0xbc,0x88,0xdc,0x31,0x6e,0xf7,0x3e,0xa7,0xe7,0x50,0x8e,0x08,0x78,0x4d,0xbe,0x8f,0xf0,0xd0,0xa4,0x24,0x72,0xa6,0x62,0x0d,0xa6,0xb8,0xf6,0xc6,0x8f,0xcf,0x07,0x44,0x76,0x2f,0x2e,0xdd,0xa5,0x01,0xa5,0x6e,0x90,0xc8,0x46,0xb5,0xd1,0xbe,0xc7,0xab,0xc9,0x11,0xee,0x85,0x98,0xef,0xa2,0x79,0xb7,0xa8,0x99,0xe4,0x61,0xea,0xa2,0x15 },
{ 0xb6,0xd9,0x40,0x22,0xc1,0x81,0x21,0x37,0x24,0xb4,0x04,0x2c,0x13,0x01,0x9f,0xda,0x6f,0x4f,0xff,0xdd,0xee,0x86,0xb9,0x87,0xe9,0x7b,0xe9,0xed,0x0e,0x9d,0x6b,0x84,0x93,0xff,0x3f,0x41,0x62,0x92,0x87,0x23,0x86,0x34,0x47,0x88,0x84,0xd7,0x7a,0xd3,0xc2,0x32,0x73,0xea,0xec,0x4f,0x38,0x2a,0xe1,0xbc,0xaa,0x0f,0xbc,0xa7,0xcb,0x21 },
{ 0x0c,0x3f,0xa0,0xc3,0x44,0x90,0x7b,0x12,0x8c,0xf8,0xca,0xad,0x66,0x93,0xad,0xcf,0x2a,0x64,0x0b,0xa1,0x1b,0xa8,0xe2,0xfd,0xd9,0x67,0x40,0x5c,0xae,0x05,0x20,0x15,0x69,0x09,0x77,0xc4,0xd4,0x53,0xd8,0x0d,0xab,0xfe,0x3e,0xbd,0x24,0x52,0x3d,0x05,0x29,0x18,0x08,0x0c,0x9f,0x80,0xce,0x38,0x0d,0x01,0xf8,0xb6,0x8a,0x29,0xb7,0x6b },
{ 0xad,0x60,0x90,0xdf,0xdc,0xb4,0x1a,0x01,0x9a,0xf7,0xcd,0x27,0x3d,0xa8,0xa3,0x66,0xb7,0xa3,0x03,0x0e,0x99,0xe5,0x3d,0x5e,0x9c,0x83,0x7f,0x4f,0xe4,0x76,0xc8,0x1d,0x77,0xb5,0xd1,0xdd,0x48,0xf4,0xc9,0x1e,0xac,0xcd,0x75,0xc2,0xcc,0x5b,0xd8,0xa8,0x39,0x3f,0xdc,0x36,0x4f,0x30,0x48,0xdf,0x81,0x8a,0xbc,0x84,0xee,0x67,0x05,0xdd },
{ 0xa0,0x8a,0xe2,0xae,0x3d,0x85,0x94,0xaa,0x88,0xf0,0x00,0x53,0xad,0xa8,0x91,0x8c,0xc0,0x93,0xc6,0x09,0x7e,0x36,0xac,0x8c,0x45,0xd3,0x86,0x67,0x8e,0x96,0xd6,0xb8,0x41,0x1c,0x28,0xed,0xe8,0xb3,0xc9,0x3c,0x63,0x64,0x89,0x11,0x44,0x66,0xfc,0x6f,0xfe,0xd5,0x9d,0x25,0x68,0x4a,0x26,0x1e,0x4a,0x52,0x43,0x3c,0x95,0x96,0x2f,0x59 },
{ 0x7e,0x45,0x73,0xda,0x81,0xbc,0x84,0xdc,0x26,0x26,0xf6,0xca,0x66,0xf6,0xa1,0x1f,0x22,0x7f,0x1d,0x75,0x86,0xbd,0x4c,0xb5,0xad,0x18,0x0d,0xc0,0xca,0xed,0x76,0x4b,0x8c,0xbb,0xef,0xfd,0x96,0x06,0x9f,0x25,0xf1,0xbb,0x9f,0xc9,0x36,0x51,0xb2,0x0b,0x2f,0xed,0xf3,0xc7,0xd1,0x1e,0x7f,0xb4,0x9c,0x83,0x11,0x5f,0x17,0xc2,0xf2,0xf7 },
{ 0xcd,0x5d,0x0f,0xd4,0x36,0x5d,0x15,0x1b,0xf1,0x65,0x39,0x5a,0xa4,0xf4,0x10,0x23,0x67,0x9a,0x04,0xdd,0x47,0x93,0xda,0x8c,0x91,0x02,0xec,0xb7,0x3a,0xbd,0xc2,0xc7,0x49,0x4e,0x8e,0x63,0x76,0x83,0xa3,0xda,0x78,0xcb,0x5b,0x45,0x94,0x08,0x14,0xa8,0x38,0x52,0x6e,0x78,0x1c,0x69,0xd3,0x57,0x7a,0x64,0xcd,0x6d,0x22,0x23,0x5f,0x2e },
{ 0xaf,0x13,0x58,0x3c,0xbf,0x65,0x02,0x1f,0x79,0x77,0xaa,0xc8,0xfc,0x30,0xc2,0x5f,0x1a,0x9c,0x65,0x5f,0x50,0x18,0x7a,0x3d,0xb5,0x25,0x2b,0x56,0xc3,0xf0,0xe0,0x3e,0xf8,0xfe,0x31,0xf8,0x1a,0x9b,0x57,0xb3,0xdb,0xf6,0x0b,0xe4,0x6d,0x83,0xd6,0xf8,0xca,0x20,0xed,0xff,0xa3,0xe1,0xdc,0x84,0xbb,0x2f,0x5b,0xfc,0x57,0x5c,0xcb,0x22 },
{ 0xf0,0x21,0xaf,0xd8,0xc9,0x95,0x74,0x59,0xf6,0xe4,0x98,0xf1,0xad,0x77,0xe5,0xa9,0xba,0x83,0x06,0x4f,0x4a,0xd7,0x3d,0x0d,0x6b,0x00,0x3e,0xf5,0x36,0x83,0x8c,0xb7,0x23,0x0d,0xe9,0x5f,0xab,0x72,0x10,0x48,0xb0,0x23,0x10,0xc3,0xc4,0x6d,0x8c,0x70,0xc0,0x5c,0x8b,0x58,0xd5,0x2d,0x4f,0x69,0xe2,0xb1,0x59,0x02,0x68,0xf1,0x6e,0x49 },
{ 0xda,0x25,0x35,0xf6,0xcd,0xa7,0x44,0xd6,0x28,0xe9,0x16,0x51,0xab,0xe7,0xad,0xd0,0xb2,0xa3,0xa6,0x93,0x98,0x81,0xb9,0x69,0x14,0x2f,0xbc,0x11,0x8f,0xc3,0xfc,0xb9,0xe7,0x56,0x08,0x3c,0x27,0x48,0x6d,0xf2,0x24,0x45,0x4c,0x68,0x51,0x0d,0xcd,0xd3,0xed,0x8d,0xf5,0x24,0x6a,0x09,0x60,0xd9,0x78,0x08,0x61,0x93,0x90,0x2a,0x86,0x9f },
{ 0x60,0x36,0x94,0x6c,0x11,0x53,0x5f,0x26,0x8d,0xde,0x49,0x46,0xe4,0x6b,0x96,0xbe,0x27,0x9c,0xae,0xe9,0x19,0xa0,0xe2,0xe0,0x82,0x4c,0xee,0x03,0xec,0xc7,0x8a,0xdb,0x67,0x24,0x64,0xcc,0x21,0x50,0x44,0x21,0xf0,0x5b,0xc3,0xd4,0x41,0x9f,0x33,0xc7,0x99,0xf1,0xe3,0x6f,0x6f,0x43,0xeb,0xbf,0xdd,0xe1,0x71,0x6c,0x6c,0xd1,0x74,0xe7 },
{ 0xfd,0xe7,0xa1,0x8f,0x6c,0x28,0x13,0xfa,0x4e,0x98,0x99,0x35,0xfc,0xd1,0xfa,0xd4,0x80,0x5d,0xf1,0xe6,0x76,0xd4,0x23,0x9d,0x9a,0x9b,0x0e,0xfe,0x5c,0xaf,0x46,0xe7,0x33,0x32,0xf7,0xbd,0x25,0x01,0x6c,0x47,0xf1,0x5f,0x68,0x2d,0xfe,0x98,0x34,0xa3,0x9f,0x0c,0x62,0x4b,0x2d,0x7f,0x8b,0x01,0x06,0xe0,0x4d,0xbd,0x79,0x39,0xad,0x29 },
{ 0xb6,0xe0,0x6c,0x51,0x63,0x05,0xbb,0xc4,0xe4,0x66,0x55,0x70,0x75,0xb9,0x29,0xfc,0xde,0x1a,0xdf,0x89,0xf5,0x10,0xa8,0x48,0xa5,0x2f,0x2c,0x36,0x93,0xc4,0xa2,0x05,0xbd,0xb4,0x27,0x7c,0x21,0xb3,0x23,0xf5,0xc5,0xe1,0xf1,0x26,0xe7,0x9e,0xd7,0x3b,0x63,0xf9,0x94,0x19,0xa8,0x2a,0x9f,0x87,0x53,0x7f,0x4d,0x86,0x5d,0xb3,0x6d,0x05 },
{ 0x0b,0x62,0x31,0x9f,0x0d,0x5a,0xba,0x2e,0x19,0x41,0x8f,0x7d,0x1c,0x61,0x28,0x37,0x26,0x39,0x37,0xcd,0x2d,0x2f,0x34,0xbb,0xb0,0x03,0xeb,0x34,0x04,0x5c,0xb4,0x3c,0xe1,0xaa,0xe8,0x2c,0x22,0x7b,0x53,0xcc,0x2e,0xbd,0x67,0x78,0x8b,0xe6,0x09,0x80,0x5f,0x9c,0x1f,0xa1,0xd5,0x4d,0x78,0x84,0xc3,0xb8,0x3b,0xb6,0xc3,0x42,0x89,0x60 },
{ 0xa6,0x17,0x27,0xa4,0xf5,0xf8,0xdd,0xbf,0xe5,0x57,0x03,0xa0,0x7b,0xee,0x1e,0x8d,0xaf,0x36,0x74,0xc6,0xd7,0x97,0xeb,0x13,0x29,0xf3,0x15,0xf9,0xfc,0xdc,0xfc,0x44,0x03,0xfd,0x9e,0x4f,0x9b,0x02,0x69,0x6a,0xde,0x69,0x2d,0x5a,0x2b,0xba,0xe1,0x58,0xc1,0xb9,0x01,0x04,0x62,0xf0,0x80,0xf3,0x93,0xb8,0x2a,0x7f,0x0e,0xf3,0xd6,0x0e },
{ 0xe6,0x52,0xde,0x96,0x2c,0x1d,0x5f,0x08,0xc4,0x48,0x6e,0x6f,0x3a,0xb0,0xe8,0xe1,0x2b,0xde,0x74,0xc5,0x6d,0x17,0x07,0x9d,0xcc,0x61,0x88,0xc6,0xf8,0x86,0x22,0x16,0x08,0x8a,0x6d,0xff,0x26,0x17,0x5c,0xcb,0xa1,0x78,0x92,0x93,0xe0,0x9b,0x4c,0x27,0x21,0xa2,0x58,0x58,0x73,0xdb,0x0b,0xde,0xa5,0x5a,0xde,0x23,0x26,0xaf,0x77,0xda },
{ 0x27,0x70,0x8f,0x23,0xe8,0xbd,0xb7,0x4f,0x8c,0x89,0xf3,0x4b,0x7c,0xbf,0x6a,0x9e,0x32,0x4a,0x71,0x81,0xc9,0x6b,0x10,0xc8,0x93,0xfa,0x15,0x4a,0x55,0x3f,0xae,0xa4,0x57,0x5f,0x18,0x61,0x49,0xca,0xa4,0xa4,0x30,0x02,0x25,0xd6,0x6c,0xc2,0xc9,0x73,0xfc,0x6d,0x68,0xb3,0xd1,0x96,0x5b,0xd1,0xb2,0x1a,0xde,0x75,0xd0,0x80,0x2d,0x2f },
{ 0x4d,0x44,0x8a,0xc9,0x7f,0x42,0xe1,0x24,0x8a,0xda,0xf5,0x5e,0x00,0xc9,0x85,0x46,0xf4,0xc7,0x63,0xac,0x70,0xa4,0xcf,0x5e,0x1c,0xa5,0x81,0xf0,0x12,0xfb,0xd4,0xfe,0xd0,0x3c,0x7d,0xcb,0x0f,0x03,0x8a,0x99,0xfd,0xdd,0x19,0x5d,0xd7,0x82,0x0c,0x9c,0x65,0x9d,0x53,0xc7,0x0f,0xa1,0x7d,0x50,0xa5,0x2a,0xd6,0x81,0x6b,0x3d,0x4c,0x6e },
{ 0x7c,0xee,0x41,0x7f,0xaa,0x66,0xdc,0x61,0x09,0xbf,0xe9,0x7c,0xab,0x77,0xae,0x6c,0xb0,0x84,0x4a,0xec,0xb2,0xda,0x65,0x10,0x7f,0xb5,0xbf,0x45,0x97,0x44,0x5f,0xb2,0x30,0x40,0xef,0xeb,0xe1,0xe5,0xb9,0xf5,0x96,0xd8,0x71,0xe7,0xf9,0xcf,0x0b,0xb3,0xa6,0x67,0xe8,0x56,0x9e,0xd0,0xe3,0x1f,0x4f,0xff,0xcd,0x61,0xa8,0x22,0x3a,0x26 },
{ 0xca,0xef,0x2b,0xac,0x2b,0x80,0x89,0x84,0xa5,0x7b,0x60,0x44,0x49,0x51,0x2a,0xc3,0x95,0xa1,0x58,0xfc,0x2e,0x26,0x37,0xa3,0xb3,0x32,0x3e,0xab,0xf1,0xbf,0xbb,0xb7,0x03,0x8d,0xc9,0xb1,0xba,0x1f,0x20,0xe3,0xf5,0xa4,0x7c,0x85,0xdd,0x06,0x11,0xec,0x3e,0x07,0x68,0x07,0x20,0x40,0xfa,0xb5,0x00,0x8d,0xf8,0x9b,0xd3,0xa8,0xc1,0xbb },
{ 0x45,0xa5,0x11,0xc9,0x7f,0x60,0x8b,0xf7,0x6d,0xbc,0x41,0x89,0xd9,0x91,0xec,0xe6,0x18,0xc4,0x52,0xb1,0xb4,0x2a,0x62,0x7f,0x3c,0xd5,0xf4,0xe4,0xa9,0xaa,0x52,0xdf,0x73,0xbe,0x0e,0xc7,0x73,0xea,0x9b,0x6d,0x3f,0xe3,0x33,0x7f,0xcb,0x62,0x5a,0xd2,0x5a,0x91,0x9b,0x27,0xd2,0x29,0x55,0xce,0x7b,0x52,0xbd,0x12,0x12,0x5e,0xc1,0x6c },
{ 0xfa,0x13,0x2a,0xc4,0x57,0x9a,0x03,0x93,0x6d,0x3b,0x98,0x69,0xda,0x7f,0x0d,0x59,0x7c,0x67,0x16,0x9c,0xd5,0xa5,0x6b,0x27,0xbb,0x61,0xbf,0x96,0x54,0xe8,0x05,0x74,0xd9,0x21,0x79,0xc3,0x44,0x00,0x1a,0x5c,0xc1,0xa6,0x46,0xd5,0xa4,0x6c,0x2c,0x7e,0xdd,0x21,0x4a,0xc0,0x8a,0xad,0xba,0xd0,0x29,0x05,0xbc,0x16,0x08,0x97,0x16,0x60 },
{ 0x4c,0xd2,0xa0,0xba,0xb6,0xac,0xe2,0x8a,0x2b,0xf7,0xca,0x04,0x44,0xab,0x1b,0x75,0x02,0x06,0x88,0xb6,0xb3,0xa0,0xe5,0xf2,0x13,0xcc,0x52,0x1b,0xf0,0x03,0xe4,0x4a,0x6a,0xdf,0x08,0xc3,0x71,0xd2,0x24,0x05,0x6d,0x13,0x10,0x75,0x62,0x18,0xd1,0x26,0xbd,0xe2,0xe7,0xd1,0xc9,0x7e,0xa5,0xd6,0x49,0x93,0xec,0xa9,0x7b,0x19,0xc3,0x8d },
{ 0x66,0xc7,0x55,0x46,0x0a,0x05,0x3d,0x45,0x84,0xc7,0xef,0x33,0xac,0xcb,0xea,0x9f,0x65,0xa6,0x65,0x27,0xe4,0x2a,0x5a,0x0b,0x8c,0xf3,0xb4,0xf4,0x78,0x2c,0x59,0x62,0xcb,0x05,0x39,0x6e,0xe2,0x7e,0xb2,0x59,0x71,0xac,0xd9,0x44,0x06,0x26,0x7c,0x0e,0xe9,0xa9,0x59,0xe8,0xcb,0x3a,0x3e,0x66,0x50,0x02,0x51,0x8b,0x77,0xed,0x30,0x81 },
{ 0x74,0x51,0xfe,0x37,0x7b,0x24,0x77,0x6b,0x32,0x33,0x57,0xa0,0x21,0xc8,0x45,0x44,0xed,0xc4,0xe4,0x59,0xa0,0x82,0x9d,0xb2,0x7a,0xd0,0x39,0xa2,0xf5,0x21,0xba,0x40,0x16,0x39,0x64,0x35,0xfc,0xc7,0x09,0x40,0xd6,0x90,0x02,0x19,0x84,0x64,0xea,0xde,0x36,0xb0,0x9e,0xb9,0x98,0x5d,0x54,0x39,0xd0,0xa6,0x1c,0xd3,0xe5,0x18,0xdc,0xf9 },
{ 0xa6,0x26,0x80,0xec,0x6d,0x83,0xcd,0xe1,0x1b,0x39,0xe3,0x15,0x2d,0xe4,0xe1,0xea,0x8e,0xf4,0x87,0x2c,0xd3,0xfa,0x00,0x55,0xc9,0x02,0x6d,0x59,0x3f,0x33,0x41,0xd1,0xca,0x7f,0x0a,0xd0,0x1b,0xa2,0x68,0x02,0x3e,0xf6,0xcc,0xf3,0xe4,0x5d,0x74,0xdb,0x93,0xa5,0xd6,0xf2,0x75,0x59,0xcb,0x7a,0x7c,0xc8,0x6b,0x9a,0x5d,0x7f,0x0f,0xe7 },
{ 0x05,0x8f,0xdc,0x0d,0xfe,0x5d,0xca,0xa3,0x24,0xa3,0x3a,0x3b,0xb8,0x4e,0xf3,0x5e,0xe9,0xd0,0x8b,0xab,0x25,0x6a,0x19,0x04,0x6c,0x47,0xa8,0xcb,0xab,0x3f,0x45,0x76,0x90,0xee,0x3b,0x9e,0x9e,0xa9,0xe0,0xe7,0xc3,0xdf,0x9b,0x46,0x06,0xb8,0x87,0x1e,0x1e,0x80,0x13,0x92,0x60,0x75,0x77,0x59,0x3a,0x45,0xe3,0xe1,0xa0,0x11,0x0e,0x9e },
{ 0x64,0xb7,0x63,0xaf,0x52,0x5f,0x05,0x17,0xd6,0x38,0xb2,0x4e,0x51,0xda,0x29,0xaf,0x1b,0x6a,0xb3,0xac,0x73,0xc5,0xd1,0x80,0x0f,0x07,0x73,0x44,0xf4,0x9c,0xb1,0x35,0x9c,0x14,0x86,0xe8,0x94,0x60,0x3e,0x02,0xd5,0x77,0x66,0xbe,0x3f,0xe8,0x1f,0x86,0xe3,0x28,0x3f,0x49,0xd7,0x97,0xeb,0xcb,0x7e,0x39,0xe1,0xd5,0x0f,0xad,0xe5,0xee },
{ 0x54,0xe7,0xff,0x67,0xbe,0xff,0x5d,0x09,0xc8,0x07,0xa3,0x15,0xe7,0x8e,0x2f,0xa4,0xe1,0xe1,0xf8,0x7c,0x95,0x7a,0xad,0xa5,0x58,0x97,0x9d,0x54,0x55,0x63,0x40,0x10,0x0f,0xd7,0x69,0x56,0xb0,0xa9,0xb8,0x00,0x74,0x53,0x42,0x17,0xbd,0xde,0x7d,0x56,0x4a,0xb6,0xdb,0x06,0xcb,0x70,0xee,0x05,0x6b,0x46,0x6f,0x32,0x71,0x50,0xfb,0x51 },
{ 0x20,0xe1,0x18,0x56,0x48,0x80,0xc7,0x9c,0xb9,0x27,0xe3,0x50,0x1c,0xf2,0xa5,0x3f,0x03,0x0b,0x86,0xe3,0xce,0xca,0xc6,0x07,0x28,0xcf,0x1a,0xb9,0x90,0x76,0xf5,0x7b,0xff,0x67,0xb3,0x52,0xac,0x43,0x7e,0xf7,0x31,0xbd,0xc3,0xe3,0xfb,0x6d,0xe9,0x97,0x9f,0xe0,0xdc,0x9b,0x40,0xe1,0xb7,0x1e,0x85,0x83,0xbe,0xdb,0xad,0xa7,0xaf,0xe6 },
{ 0x26,0xc0,0x6d,0x4e,0xef,0x3a,0xf9,0x9f,0xf2,0x0b,0x87,0xcc,0x26,0x06,0xfd,0x71,0xc2,0x3e,0x47,0xf9,0x8d,0x5b,0x72,0x90,0x68,0x1d,0xd0,0x2d,0x84,0x78,0x83,0x3b,0x2b,0x23,0x80,0x41,0xa4,0xe1,0xd6,0x65,0xa8,0x9b,0x67,0x9e,0xea,0x04,0xa7,0x42,0x5c,0x28,0xbd,0xa9,0xe1,0x21,0x1b,0xa2,0x12,0x10,0x9a,0xf4,0x87,0x1e,0x71,0xd0 },
{ 0x4e,0xed,0x0b,0x4d,0xfb,0xb5,0xc3,0x07,0x3f,0xef,0xe1,0x0d,0x92,0x89,0xd7,0x2b,0x62,0xdf,0x6c,0x0f,0x0b,0xa0,0x40,0x5b,0x9e,0x84,0x95,0x44,0xd4,0xc2,0x08,0x55,0xac,0xe0,0xfb,0x28,0x8a,0x56,0x69,0x3a,0x19,0x41,0xd3,0x28,0x7f,0xc1,0x15,0xc8,0x11,0x36,0xcc,0xd3,0x2d,0x34,0xfe,0x3f,0x4c,0x08,0x7a,0x3f,0x8b,0xdf,0xfd,0x1f },
{ 0x73,0x96,0x8e,0x4a,0x8d,0x92,0x33,0xa4,0xcb,0x46,0x44,0xe8,0x30,0x36,0x38,0x45,0x42,0xa1,0x01,0xc5,0x27,0xb3,0x5f,0x94,0x2d,0xa8,0xf7,0x96,0xa3,0x96,0x7e,0xc5,0xec,0xa7,0x10,0xdb,0xbd,0x1b,0x8a,0x03,0xa6,0x2d,0xab,0xae,0x5c,0x3b,0x37,0xdf,0xb0,0x7a,0x32,0x87,0x11,0xcc,0xa2,0x30,0x22,0x0d,0x94,0xf7,0x58,0xad,0x81,0xdb },
{ 0x42,0xe0,0x43,0x7c,0x7a,0xca,0x84,0xf7,0x0a,0x45,0xb1,0x16,0x8e,0xd1,0x2d,0x20,0xfe,0xb9,0x9f,0x12,0xe6,0xa1,0x2d,0xe7,0x83,0xd6,0x37,0xe6,0x05,0x24,0x72,0x2b,0x2d,0xe1,0xda,0x09,0x01,0xd9,0x20,0xee,0xba,0xfd,0x84,0xcc,0xc9,0xb4,0xea,0x3e,0xdb,0xea,0x2a,0x6d,0xaf,0x54,0x26,0x5a,0x76,0x69,0x39,0xc8,0x1f,0xea,0x76,0xc6 },
{ 0x27,0x71,0xb9,0xe9,0x79,0xcd,0x38,0x0a,0xf0,0xa6,0x82,0xd9,0x69,0x37,0x7d,0x89,0x21,0xcb,0x6f,0x1b,0xd0,0xfc,0x8a,0x47,0x8f,0xba,0x29,0xf4,0xc7,0x38,0x00,0xeb,0x6c,0x66,0xc0,0x4f,0x59,0x8e,0x69,0x48,0xf8,0x30,0xfb,0x5d,0x0e,0x5d,0x51,0x0e,0x42,0xbd,0x8b,0x01,0x34,0xab,0x75,0xbe,0x2f,0x85,0x73,0x2d,0xd8,0x76,0x2b,0x2c },
{ 0x07,0x0d,0x96,0xcc,0xc5,0x1a,0xfb,0x00,0xc4,0x99,0xea,0x8f,0xc2,0xef,0x48,0xc9,0x49,0xa7,0xcb,0xf2,0x44,0x5c,0xc2,0x28,0xc6,0xf2,0x4f,0xc3,0x7b,0xce,0xc9,0x04,0x9b,0x91,0x5e,0xf5,0xff,0x0a,0xbc,0x21,0xfc,0x61,0x58,0x2d,0x55,0xf0,0xe9,0x77,0x53,0xbd,0xec,0x7b,0x34,0x68,0x1b,0xac,0xf6,0x2f,0x4d,0xb2,0xa3,0xab,0x31,0x6f },
{ 0x1a,0x2a,0x2a,0xc2,0xbc,0x37,0x13,0xa8,0xd0,0x85,0x3b,0xd4,0xea,0x67,0xa0,0x01,0x50,0x8e,0x25,0x8e,0x60,0x8b,0xa7,0x72,0x1a,0x04,0xaa,0x95,0x7a,0x5e,0x23,0x48,0x94,0x28,0x3d,0xc2,0x52,0x7b,0x0e,0xa6,0xca,0xc3,0xe0,0xfb,0x0e,0xcd,0xdf,0xdf,0x1c,0x25,0x13,0xf5,0xd4,0xdc,0xe3,0x4b,0x37,0xf9,0x8c,0xf2,0x2d,0x4b,0x01,0x0d },
{ 0x5c,0x9c,0xc4,0xf8,0x72,0x3a,0x02,0x7b,0x03,0x18,0xec,0x7f,0xdf,0xd7,0xda,0xc9,0x3f,0xdd,0x47,0x8e,0x69,0x4f,0xd5,0x4a,0xdd,0x14,0x52,0xe8,0x99,0x27,0x3a,0x8f,0x84,0xef,0xe0,0x7a,0x1d,0xfe,0xd2,0x59,0xa8,0x27,0x58,0x9d,0x37,0x08,0xaf,0x96,0x4f,0x00,0x36,0x75,0xa1,0x1a,0xca,0xb5,0xad,0xda,0xca,0x69,0x5c,0xe8,0x0d,0x6e },
{ 0xa3,0x68,0x50,0xbb,0x71,0x1d,0x04,0x96,0x56,0x80,0xa7,0x73,0xbc,0x29,0xe9,0x28,0x2a,0x8f,0x99,0xbb,0x68,0x27,0x9d,0xae,0x8a,0x62,0x3b,0x5d,0x5b,0x7c,0xd4,0x87,0x50,0x82,0x3d,0xed,0x7d,0x73,0xf6,0x74,0x1d,0x8f,0xc2,0x19,0x5d,0xd7,0x75,0xeb,0xc1,0x84,0xce,0xd3,0x43,0x06,0xbb,0x3e,0xb9,0x86,0x57,0x0b,0x0b,0x2f,0xcf,0x54 },
{ 0x0e,0x3e,0xa7,0x57,0xde,0xb8,0x27,0x67,0xa8,0x24,0xa0,0x72,0xe4,0xc2,0x0a,0x4b,0x8b,0xd4,0x67,0x27,0x5c,0x0f,0x80,0xd4,0x0f,0x2e,0x43,0x27,0xbc,0xfc,0x91,0xde,0x13,0xf2,0xbf,0x92,0xff,0xae,0x21,0x56,0x23,0xf2,0xab,0xf6,0x05,0x6a,0xaa,0xb3,0xbf,0xaf,0x08,0x50,0x14,0x9c,0x53,0x83,0x14,0x5e,0x8c,0x5d,0xf5,0x82,0xf5,0x4c },
{ 0x71,0x58,0xda,0xed,0x01,0xf4,0x95,0xe3,0x76,0x48,0xa6,0x5e,0xf9,0xb0,0x8f,0x76,0x1e,0xb9,0x08,0x5a,0x34,0xad,0x9c,0x75,0xb3,0xda,0xa9,0x39,0xd4,0x19,0x2b,0x8f,0xfd,0x98,0xad,0x46,0xda,0x59,0x6c,0xf3,0x8b,0x48,0x13,0x3a,0xcc,0x08,0x5b,0xa6,0x8d,0x52,0x4c,0x30,0xa6,0xc4,0xa1,0xf2,0xf1,0x4f,0x23,0xdf,0xad,0xdf,0x27,0x23 },
{ 0x9a,0x6c,0xab,0xe1,0xf8,0xc7,0x8b,0x4f,0x15,0x4a,0x04,0x03,0x4f,0x63,0xc3,0x4a,0xf6,0xba,0xda,0x29,0x32,0xf5,0x0e,0x57,0xc5,0xf4,0x83,0xaa,0xa5,0x56,0xed,0x7a,0xed,0x9f,0x50,0x29,0xfa,0xd5,0x00,0x45,0x1d,0xe5,0x44,0xfb,0x7d,0x55,0x57,0x40,0xfe,0xb8,0x7e,0xaf,0xd1,0x22,0x07,0x16,0x25,0x21,0x48,0x3e,0xa0,0x54,0xa7,0x2e },
{ 0x6b,0x14,0xa3,0xb6,0x57,0xb6,0x6a,0x73,0xe1,0xa9,0xed,0x99,0x5d,0xf7,0x05,0x26,0x2b,0xa2,0xf7,0x9d,0x8c,0x20,0x11,0x13,0x9c,0xea,0x69,0xab,0xd5,0xd5,0x8f,0x9a,0x99,0x3d,0x2b,0xf1,0x00,0xbf,0x60,0x3c,0xa3,0x51,0x12,0x96,0x41,0x4d,0x5c,0xb7,0xc6,0x39,0x37,0xff,0x0a,0xd8,0xb0,0x1a,0x1c,0x5d,0x25,0x5e,0xe9,0x43,0x5e,0xf3 },
{ 0xed,0x19,0xa5,0x6a,0x1b,0x59,0xcf,0x5c,0xd8,0x80,0xf0,0x80,0x99,0xa2,0xe4,0xdc,0xf3,0x18,0xde,0x81,0x1d,0x6a,0x88,0x71,0xbc,0xc2,0x88,0x7a,0x73,0x5a,0x80,0x87,0xcf,0xbe,0x68,0x3e,0x6c,0x3b,0x56,0xb6,0x30,0x25,0x45,0x12,0xab,0x54,0xaf,0xe1,0xa9,0x8c,0xfd,0x5a,0xae,0x96,0xda,0x46,0xe5,0x6c,0xa0,0x87,0x3a,0x9f,0xe5,0x57 },
{ 0x76,0xc2,0x0a,0x5f,0x10,0x93,0x5b,0x20,0x49,0x15,0xf1,0x6b,0x6c,0x0a,0xa7,0x9d,0x90,0xec,0xfd,0x1c,0xcf,0xfb,0x8a,0xbc,0x53,0x86,0x5c,0x41,0x79,0x94,0x49,0x4d,0x73,0x64,0x18,0xf1,0x68,0x77,0x40,0x99,0xe1,0xe0,0x95,0xc7,0x4d,0xa3,0x02,0xd1,0x18,0xb1,0x0a,0x17,0x5f,0x6a,0x53,0xf3,0x32,0x13,0x73,0x06,0x56,0xd0,0x50,0xce },
{ 0xc3,0x4b,0x0b,0x32,0x47,0x4b,0x06,0xe8,0xe8,0x79,0x48,0xa7,0xe1,0x51,0x54,0xac,0x75,0x07,0xfa,0x84,0x5d,0xff,0xaa,0x92,0xdc,0xad,0x2d,0xb9,0xc2,0x92,0xde,0xb9,0x01,0xa1,0x6e,0xdb,0xc2,0x50,0xaf,0x6b,0x94,0x5e,0xfd,0x16,0xf2,0x86,0x81,0x4d,0xb8,0xb1,0xcc,0x7e,0x82,0x6f,0x9a,0xc3,0x94,0x76,0xdb,0x6b,0x48,0xc6,0x43,0x44 },
{ 0xba,0xff,0xd4,0xeb,0xf8,0xa8,0xb5,0xab,0x46,0xac,0x18,0x44,0x4f,0x3d,0xcd,0xe3,0x35,0x1a,0x3a,0x75,0x55,0x6c,0x6c,0x4a,0xe7,0xdd,0x9a,0xb3,0x28,0x52,0x3e,0xb3,0x0f,0xa9,0x3d,0xc5,0xdb,0xc9,0x5e,0x83,0x00,0x3a,0x8e,0xb3,0x79,0x5a,0xc0,0x9c,0x24,0x51,0x1c,0xcf,0xbf,0x48,0xb6,0xee,0x19,0x78,0x30,0x0c,0xd5,0xac,0xf3,0x87 },
{ 0xdb,0xc5,0x90,0x4f,0x14,0xe8,0xd7,0x97,0x70,0xee,0x38,0x7c,0x19,0x3f,0xde,0xf2,0xe6,0x48,0x20,0xe8,0xc9,0x4f,0x55,0x38,0xd7,0xf9,0x8a,0x53,0x8e,0xe9,0xd2,0x36,0x09,0x90,0xcd,0xbd,0xfb,0x7c,0x6f,0x54,0xe3,0xde,0x71,0x38,0x4c,0x12,0x42,0xa5,0x75,0x2c,0xf9,0xdf,0x4e,0xb4,0x23,0x2b,0x74,0xac,0xa6,0xa6,0x60,0x5f,0x9d,0xae },
{ 0xca,0xfb,0x6c,0x86,0x57,0x87,0x4a,0x09,0x75,0x1a,0x41,0x8a,0xe4,0xeb,0x8e,0xee,0xe9,0x81,0x7b,0x13,0x7d,0x07,0xf1,0xee,0xae,0x03,0xad,0x0f,0x9d,0x21,0x57,0xff,0x2a,0xda,0xfb,0x1e,0xd5,0xc5,0xc6,0x7a,0x01,0xa1,0xcb,0xb9,0x9a,0xb4,0xe2,0xe0,0x9c,0x6a,0xb4,0x45,0x91,0x3b,0x9e,0x0e,0x16,0xce,0xc0,0x81,0x73,0xce,0x89,0x88 },
{ 0xc0,0xa8,0xfc,0x61,0xdc,0x60,0xf9,0x8c,0x42,0xe2,0x1b,0xfd,0x81,0x29,0xa7,0x73,0xae,0x3c,0x01,0x2a,0x42,0xd0,0xac,0x47,0xe2,0xd6,0x9d,0xcf,0xec,0x73,0xc4,0xf8,0xff,0xce,0x97,0x6f,0xa8,0x24,0x37,0x64,0x48,0x3b,0x23,0x9f,0x95,0x41,0x70,0x86,0x1c,0x3b,0x1c,0x8f,0x3e,0x21,0x6d,0x4b,0xe0,0x55,0x5f,0x94,0x69,0x66,0xf0,0x49 },
{ 0x89,0x48,0x90,0xb2,0xfa,0xd3,0x7c,0xcb,0x9a,0x87,0x9a,0x27,0xcf,0x8e,0xa9,0xa3,0x37,0xd2,0x8a,0x48,0xa4,0xbf,0x79,0x5c,0x47,0x00,0xeb,0x8c,0xe5,0x1b,0x2c,0xf9,0xd4,0x68,0x00,0xff,0x7c,0x5b,0x30,0x11,0x88,0xa0,0xab,0xfd,0xfd,0x48,0xe4,0x38,0x49,0x8e,0x71,0x16,0xa3,0xbc,0x2e,0xcb,0x0d,0x18,0x7a,0xc8,0x35,0x97,0x9d,0x3b },
{ 0xcc,0x61,0xac,0xb1,0x37,0x15,0x5a,0x7f,0x47,0xfd,0xbc,0xbc,0x33,0xe0,0x4f,0xb8,0x34,0xc3,0x32,0x5a,0x11,0xa5,0xee,0x4c,0x0f,0xcd,0x81,0x59,0x6e,0xde,0x40,0x18,0xd8,0x4e,0x14,0x82,0x0f,0xa1,0x44,0xf6,0x69,0xb7,0x1c,0x15,0x0d,0xd1,0x66,0x03,0xf6,0x55,0x56,0x24,0xfe,0xa9,0x90,0xc4,0xe3,0x61,0x71,0xbd,0xc8,0xdb,0x25,0x1a },
{ 0x46,0x3d,0x8e,0x29,0xe4,0x81,0xaa,0xcd,0xa1,0x69,0x76,0x78,0xf8,0xb8,0xc5,0x5b,0xa2,0x6e,0x2a,0x1e,0x94,0x13,0x99,0x36,0xbc,0xff,0x60,0x26,0x7e,0x46,0x0d,0x62,0x40,0x0f,0x73,0x4b,0x7a,0xe2,0xa6,0x6e,0xf1,0xfd,0x6c,0x67,0x24,0xf8,0x52,0x96,0x8f,0x9e,0xac,0x14,0xda,0x46,0x9b,0x0a,0x22,0x66,0x50,0x88,0x8c,0x11,0x21,0x7f },
{ 0x59,0xd6,0x37,0x56,0x21,0xfd,0xc2,0x47,0xd8,0x6b,0xfb,0xbe,0x46,0xb5,0x95,0x6e,0xbe,0x4b,0x92,0xd2,0xf8,0xca,0xdb,0x3f,0xea,0x8b,0xa2,0xa8,0xde,0x06,0x7f,0x33,0x5c,0xe2,0xcd,0x33,0x09,0x0a,0x6d,0xa3,0x49,0x05,0x73,0x1a,0x51,0xca,0xf4,0x47,0x11,0x93,0xe6,0xe4,0x27,0x47,0xd1,0x70,0x74,0xd3,0x44,0x66,0x88,0x76,0xc3,0x8a },
{ 0x06,0xad,0x2a,0x09,0x8f,0xce,0xd7,0x66,0xed,0x22,0xa3,0x4d,0x25,0x7e,0x4c,0x96,0x47,0x9f,0x0b,0x1a,0x76,0xdb,0x3c,0x5f,0x83,0x52,0x08,0xd8,0xba,0x11,0x11,0x01,0x2d,0x5b,0x8b,0x1c,0x58,0xf8,0x5e,0x35,0x59,0xa4,0xc0,0x1b,0xb9,0xeb,0x62,0xa0,0xde,0x42,0x9d,0x82,0xb7,0x0e,0x89,0xae,0xc1,0xa7,0xba,0x9d,0x5f,0xb3,0x7e,0xf4 },
{ 0xad,0x6d,0x5f,0xf3,0x5d,0x10,0xba,0xfd,0x02,0xe5,0x53,0x0d,0x9b,0x54,0xe9,0x8e,0xa4,0x75,0xf6,0x42,0xd4,0x9c,0x4f,0xb2,0xbb,0x11,0x94,0x63,0xb3,0x5d,0xb3,0x37,0x2e,0xbf,0xb5,0xf3,0x2e,0x87,0xed,0x11,0xb6,0x57,0xce,0x7d,0xd5,0x00,0x4b,0x8f,0x51,0xa9,0x29,0x30,0xb1,0xe4,0x8c,0xf1,0xca,0xbf,0x0c,0x2c,0x61,0x8a,0x93,0xe5 },
{ 0xf6,0x57,0xe9,0x01,0x5f,0x98,0x55,0xa5,0xeb,0x9a,0xcb,0x6e,0xbf,0xe5,0x94,0x1a,0x08,0xfe,0x3c,0xda,0x3b,0x36,0xa5,0xdc,0x2b,0x1f,0x0b,0xd0,0xf6,0x5b,0xb8,0x30,0x80,0x77,0xa8,0xbb,0x3b,0xca,0xac,0x49,0x6d,0xc8,0x3c,0xd2,0x5d,0xa0,0xe7,0xff,0xc2,0xab,0xba,0x9c,0xf2,0xc8,0xe3,0x5a,0xc3,0xb9,0xa7,0x4d,0x87,0xb1,0x93,0xfb },
{ 0x1a,0x17,0x81,0x95,0xcb,0x38,0xf0,0xd6,0xe7,0xe7,0x66,0xd8,0xb8,0xff,0x95,0x34,0x32,0x68,0x32,0x8d,0x78,0xef,0x85,0xde,0x8f,0xea,0x45,0x7f,0x8d,0x7a,0x60,0x4c,0xbe,0x14,0x25,0xdd,0xe9,0x83,0xa8,0xb0,0x97,0x9c,0x12,0x94,0x4e,0xd3,0xb9,0xa0,0x7a,0x97,0xa1,0xb1,0xab,0x11,0x80,0x47,0x3a,0x88,0x39,0x60,0xa4,0x9b,0xae,0xea },
{ 0xe4,0x6e,0xab,0xc9,0xf8,0xe2,0xf2,0x0c,0xf0,0xef,0x00,0x2c,0x94,0x97,0x96,0x25,0x85,0x57,0x19,0x52,0x0e,0xc5,0xa6,0xe7,0xdb,0x47,0xff,0xce,0xeb,0x3f,0xa1,0x50,0x25,0x32,0xcf,0xc8,0x94,0xc1,0x89,0x63,0xad,0xb0,0x02,0x81,0x0c,0x09,0xfc,0x3a,0x50,0xf6,0x8c,0xc2,0x4c,0x22,0x7e,0x4b,0xb9,0x34,0x89,0x4c,0x4a,0x0b,0x13,0x9f },
{ 0xac,0x75,0xe3,0x95,0x55,0x19,0xff,0xd3,0x40,0x2c,0x8c,0x22,0xb0,0xa8,0x0a,0x3d,0x8f,0xbd,0x31,0x91,0xac,0x23,0x59,0xaa,0x8a,0xbe,0x67,0xfb,0x73,0x83,0x99,0x60,0xc0,0x36,0x36,0x14,0x2f,0x27,0x9d,0x2f,0x56,0x73,0xba,0x23,0xe0,0x7b,0xaf,0xde,0xe8,0x93,0x33,0x58,0x92,0xa9,0xe8,0x3a,0x30,0x6a,0x9d,0xb3,0x86,0x6b,0xc5,0x00 },
{ 0x10,0x7a,0x44,0x85,0xaa,0x07,0xfe,0x2e,0x14,0xbb,0x5a,0xf4,0x51,0x67,0x50,0xf0,0xe0,0x6a,0x97,0x07,0x59,0xac,0xdc,0x14,0x77,0x24,0x96,0x7e,0x58,0x33,0xc4,0xbe,0x6e,0xa2,0x21,0x42,0xb8,0xe4,0xd7,0xcd,0x81,0x37,0x94,0xec,0x48,0xe6,0x80,0x07,0x4d,0x3a,0x4f,0xc9,0x1d,0x76,0x0c,0x4a,0x65,0x66,0xec,0x48,0xc8,0x7c,0x80,0xdc },
{ 0x68,0x34,0xba,0xe0,0x21,0x62,0x56,0x10,0x66,0xb4,0x71,0x72,0x93,0xd4,0x9f,0x56,0xdd,0xc0,0xab,0x7e,0xa6,0xc6,0x16,0xf8,0xa5,0xec,0xae,0x7e,0x7a,0x31,0x54,0xbb,0x09,0x23,0x5e,0x21,0x48,0x82,0x0f,0xa0,0xc2,0xb5,0x85,0xfb,0x89,0xa4,0x12,0x87,0x54,0x34,0x9a,0x03,0x26,0xd1,0x1e,0x0c,0x52,0x8f,0xa1,0xd8,0xed,0xdf,0xd2,0x57 },
{ 0x99,0x39,0x2c,0xe7,0xf8,0xb4,0x72,0x26,0xba,0xf2,0x81,0x8c,0xc2,0x1f,0x40,0x60,0x33,0xcd,0x75,0xf9,0x25,0xc5,0x64,0x92,0x0b,0xe6,0xf8,0xe3,0x16,0xe7,0x94,0x16,0xbf,0x8e,0x7d,0x31,0x5c,0xee,0xa3,0xcf,0xbf,0xb9,0x95,0x88,0x87,0x1e,0x2f,0xcf,0x4e,0x67,0x45,0xf5,0xe0,0x3e,0x2e,0xdf,0x66,0x40,0xa5,0xde,0x7f,0xa1,0xf8,0x75 },
{ 0xa6,0xd3,0x96,0x77,0xa7,0x84,0x92,0x76,0x27,0x36,0xff,0x83,0x44,0x31,0x5f,0xc5,0x96,0x43,0x95,0x91,0xa3,0xc6,0xb9,0x4a,0x6c,0xf2,0x0f,0xfb,0x31,0x37,0x28,0xbe,0x67,0x4f,0x84,0x74,0x9b,0x0b,0x88,0x16,0x66,0xb8,0xba,0xbd,0x2d,0x27,0xec,0xdf,0x82,0x4a,0x92,0x0c,0x22,0x84,0x05,0x9b,0xf2,0xba,0xb8,0x33,0xc3,0x57,0xf5,0xf4 },
{ 0xea,0xf0,0x31,0xe6,0x0c,0xf3,0x0a,0x7c,0xcb,0x93,0x51,0xb4,0x2c,0xcb,0x1e,0x55,0x00,0x3c,0x79,0xeb,0x94,0xcc,0x49,0x57,0xb6,0x04,0xae,0xa3,0x70,0x39,0x11,0xce,0xf3,0x3b,0x6d,0x70,0x61,0xca,0x4a,0xc1,0x6a,0xe6,0xdc,0x22,0x3e,0x40,0x72,0x9e,0x5c,0xce,0x6a,0x05,0xff,0x5e,0x86,0x39,0x12,0x46,0x1c,0x14,0xa4,0x76,0x9d,0xd2 },
{ 0x3f,0x06,0xdc,0xd2,0xce,0x62,0xe8,0x0d,0x4a,0x66,0x1c,0xaa,0x2d,0x2a,0x10,0x86,0x75,0xf3,0xb0,0xca,0xae,0xea,0xdd,0x25,0x15,0x83,0x94,0x8c,0x59,0x74,0xbb,0x08,0x08,0xbc,0x25,0x50,0xce,0x19,0x22,0xdb,0x98,0x58,0x07,0xbe,0x93,0x1d,0x9b,0x2e,0x83,0x16,0x06,0x90,0x5e,0x88,0xf5,0x3e,0x89,0x65,0x5d,0xa9,0x95,0x08,0x3c,0x99 },
{ 0x67,0x97,0xfb,0x9f,0x2f,0xea,0x9b,0x79,0x37,0xe1,0x64,0xbf,0xc3,0x0e,0x99,0x80,0x9e,0x87,0x2e,0xc3,0x2b,0x52,0xd4,0x56,0x7e,0x57,0x2e,0xb3,0x76,0x45,0x0f,0x6a,0xcb,0x5a,0x0b,0x44,0x66,0xa4,0x9b,0xa8,0x6f,0x03,0xd4,0x41,0x26,0x96,0x7c,0x81,0xfd,0x00,0xe9,0xd7,0xb5,0xfb,0x26,0x5d,0xe4,0x4e,0x25,0x73,0xbb,0x97,0x0f,0x4d },
{ 0xec,0x61,0xff,0x29,0x91,0x8a,0x1d,0x05,0xe0,0xc0,0x5b,0x31,0x52,0x7e,0x97,0xb7,0xeb,0x32,0x28,0xb9,0x4b,0xdc,0x79,0x4c,0x1c,0x10,0x1b,0x8f,0xd5,0xc7,0xc2,0x7c,0x02,0xfa,0x1d,0x3d,0xc1,0xb2,0x57,0xa1,0xd0,0x96,0x0f,0x82,0xc7,0x75,0x92,0x98,0xfe,0x3c,0x46,0xc4,0x76,0x90,0x23,0x3d,0xad,0xf0,0x11,0x67,0xd9,0xdd,0xfe,0x51 },
{ 0x83,0x23,0x64,0x95,0x7b,0xc1,0x36,0xb5,0x6c,0x57,0x4b,0xd0,0xc6,0x73,0x94,0x65,0x9b,0x6c,0xce,0x0d,0x34,0xb7,0x47,0x8d,0x5d,0xea,0xe2,0x1c,0xb5,0x13,0xa1,0xb6,0xe2,0x31,0x5c,0x54,0xa2,0xe1,0x8a,0xb3,0x29,0x81,0xa7,0x54,0xc8,0x40,0x04,0x5a,0x46,0x5a,0x7c,0x46,0xeb,0x0e,0xe9,0x39,0xb0,0x7b,0x9f,0x82,0x90,0x17,0x27,0xd8 },
{ 0x9a,0x79,0xbf,0xbf,0xe7,0x1e,0x34,0x7f,0x4d,0x6c,0x66,0x98,0x31,0x67,0x97,0xe2,0xf5,0xac,0x2a,0x39,0x00,0xf5,0xab,0xf0,0xc4,0x09,0x33,0x2d,0xe4,0x6e,0x20,0x50,0xe9,0x8b,0x4d,0xe6,0xd3,0x16,0xe2,0x00,0xb6,0xf6,0x71,0xf3,0xb2,0x24,0xef,0xa9,0xca,0x94,0xfa,0xcc,0xb6,0xdf,0xde,0x31,0x7a,0x3f,0x47,0x81,0x92,0x62,0x50,0xd2 },
{ 0xa5,0xd1,0x5c,0x53,0x08,0x4d,0xb0,0x53,0x81,0x28,0xdd,0xfa,0xf3,0x15,0xc2,0x19,0xb0,0x34,0xcb,0x15,0x03,0x10,0xe0,0x84,0xb5,0xa0,0xc4,0xa9,0x27,0x48,0x7b,0x7c,0x9d,0x58,0xf5,0xac,0x41,0x98,0x7d,0x02,0xdf,0xdf,0x8c,0x48,0x9a,0xe3,0x71,0xb6,0x5a,0xc3,0xd1,0x69,0x53,0x4c,0x9e,0x1b,0x85,0x2e,0xbc,0xec,0x37,0x97,0x8d,0x2a },
{ 0xac,0x25,0xda,0x80,0x08,0x9c,0xf4,0xe0,0x33,0xd4,0xdb,0x57,0x10,0xff,0x59,0x36,0xfd,0x68,0x3b,0x4d,0x0d,0xab,0x01,0x3e,0x6e,0xef,0x62,0xff,0x45,0x14,0xc6,0xfd,0xeb,0xc6,0x9d,0x98,0x5c,0xb4,0x4c,0x7b,0x88,0x3d,0xa9,0x31,0x2a,0x1b,0x33,0x8c,0x81,0x09,0x83,0xe8,0x24,0x3b,0xf3,0x7a,0x60,0xb5,0x39,0x77,0x05,0x83,0x05,0x41 },
{ 0x0c,0x2a,0x24,0xd1,0x39,0x5c,0xdc,0xde,0xbc,0x4f,0x28,0x6e,0x83,0xce,0xdd,0x95,0xc1,0x38,0xe4,0xde,0xda,0xd0,0x5f,0xd0,0x9c,0xff,0xae,0x07,0xd1,0x52,0xfb,0xbc,0xb9,0x78,0x54,0xb1,0xb5,0x95,0x37,0x31,0xfb,0x5d,0xb4,0xa2,0x71,0x4f,0x3a,0xb1,0xe7,0xe6,0xdf,0x7f,0x9d,0x62,0x11,0x1f,0xf4,0x47,0xb9,0x99,0xe0,0xdc,0x85,0x32 },
{ 0xb4,0x67,0xcd,0x65,0x66,0x0c,0x13,0xb8,0x4a,0xec,0x42,0xb5,0x29,0x6b,0xc0,0x37,0xc1,0xe6,0xb5,0xea,0x71,0xa0,0xd2,0x89,0xb4,0x56,0x51,0x10,0x69,0x96,0x2f,0x3c,0xdc,0x91,0xb9,0xbc,0x4d,0x36,0xff,0xea,0xbb,0x3f,0x5d,0x2a,0x01,0x16,0x64,0xac,0x3c,0xb2,0x12,0xdf,0x6c,0xbd,0xa4,0x72,0xf7,0x55,0x84,0xcb,0x22,0x87,0x75,0x96 },
{ 0x9d,0x8b,0xa7,0xc2,0x12,0x00,0x28,0xbf,0x93,0x2a,0x39,0x9c,0x82,0x6f,0x90,0x70,0x34,0x64,0xf2,0x39,0xc1,0xb4,0x1d,0x8c,0x0d,0x64,0xc1,0xd1,0xa2,0x1a,0x6d,0x54,0xf8,0x17,0x9f,0xf2,0xe6,0x71,0x15,0x20,0x14,0xd5,0x55,0xd9,0xef,0xa8,0xf3,0x43,0xe8,0xa5,0x0c,0x50,0x55,0xde,0x3f,0x34,0x0d,0xff,0xd5,0x30,0x40,0x30,0xed,0x32 },
{ 0x92,0xf9,0xa6,0xf9,0x3f,0xa3,0x77,0x61,0x97,0x92,0x80,0xde,0x26,0xda,0x6c,0xde,0x08,0x53,0x3a,0xbe,0xef,0x21,0x60,0xf4,0x91,0x9b,0x15,0x97,0xb4,0x3c,0x7e,0x8d,0xbf,0x61,0x8d,0x71,0x51,0x47,0xaf,0xe8,0xed,0x41,0xd3,0xa6,0xf5,0xe5,0x42,0xdf,0x73,0x09,0x28,0x4e,0xce,0xa3,0x12,0x89,0x77,0x46,0x05,0x55,0x52,0xbf,0x12,0x85 },
{ 0x52,0x46,0x9d,0x3d,0x89,0x6f,0xeb,0x8c,0x6d,0x0c,0x14,0xc3,0xe4,0x9d,0xfd,0x7c,0x07,0xf4,0x7b,0x53,0xb0,0x6b,0xfb,0xab,0xe1,0x01,0x64,0x1d,0xa1,0x4a,0xd4,0xf9,0x31,0x3d,0x27,0x6c,0x7e,0x03,0xba,0xa3,0xda,0xfc,0x87,0x73,0xd8,0xdb,0x49,0xde,0xc1,0x20,0xa0,0x8e,0x48,0x42,0xdf,0xe1,0xb7,0x30,0xbc,0xb2,0x70,0x21,0x21,0xed },
{ 0x5c,0xe4,0xfd,0x83,0x60,0x44,0xba,0xf3,0xa1,0x62,0x30,0x65,0xbc,0xe8,0x3b,0x11,0xfd,0x75,0x16,0xa5,0xb2,0x09,0xd8,0x87,0xd7,0x9a,0x70,0x81,0xaf,0xae,0xfc,0x6a,0x61,0x04,0x21,0x08,0xaa,0x50,0xf3,0x68,0x1e,0x31,0xbc,0x1e,0xa8,0x32,0xc7,0x14,0x4a,0xbf,0xbd,0x4a,0xb9,0xe4,0xac,0xce,0x38,0x60,0x6d,0xfb,0xbf,0x9d,0xb9,0xa6 },
{ 0x3e,0x40,0x77,0x37,0x11,0x2c,0xf5,0x72,0xe6,0x9c,0x86,0xb7,0xac,0x1a,0xba,0x5b,0x5c,0x0a,0x84,0x35,0xfe,0x22,0x28,0xad,0xe9,0xcb,0x2a,0xb0,0x7c,0x5f,0xdf,0xde,0x6e,0xcb,0x22,0x2c,0x8c,0xd5,0xec,0x0e,0x2e,0x16,0xf7,0xaf,0x8c,0xc9,0xe3,0x26,0xec,0xfa,0xc4,0xb3,0x92,0xa3,0x26,0xf5,0xcf,0x11,0x96,0x89,0x78,0x46,0x0f,0x8c },
{ 0x84,0xba,0x96,0xdf,0xe6,0x69,0x54,0xc5,0x7c,0xa5,0xef,0x5b,0x31,0x27,0x34,0x8d,0xcd,0xe5,0x22,0x15,0x29,0xa1,0x2d,0x00,0x80,0xc7,0xbe,0x56,0x17,0xd2,0xce,0x36,0x6e,0xc5,0x2e,0xa8,0x3e,0xdd,0x42,0x1f,0x61,0x3f,0xc0,0x06,0x6f,0x17,0x4e,0xe4,0xcc,0xf2,0xb3,0x09,0x3c,0x9d,0x74,0xbd,0x7c,0xca,0x3a,0xb7,0x1d,0x9b,0x00,0xfd },
{ 0x28,0x52,0x50,0xed,0xc3,0xbc,0xfc,0xd9,0x02,0x7b,0xba,0x12,0x17,0x6d,0x34,0x3a,0x26,0x03,0x56,0x72,0xd5,0xb4,0xa8,0x11,0x55,0xd4,0xe3,0x7a,0x2f,0xd2,0x0b,0xae,0x78,0x66,0xc0,0x86,0xf4,0xad,0x7e,0xa8,0x3f,0x72,0x84,0xad,0x10,0x46,0xc1,0x71,0x6e,0x9b,0x1a,0x2c,0xf1,0xef,0xf3,0x23,0xf9,0xde,0x45,0x5a,0x54,0xe0,0xab,0x97 },
{ 0x83,0xed,0x91,0xed,0x9c,0x82,0x45,0xff,0x05,0x0f,0x8b,0x54,0xad,0x6d,0xaa,0x78,0x18,0x3f,0x83,0x10,0x91,0x68,0x58,0x07,0x43,0x8f,0x47,0x41,0x59,0x44,0x74,0x3c,0xaf,0xfc,0xf5,0xea,0x86,0xb3,0x48,0xc6,0xca,0x01,0x0c,0xa5,0x66,0x4f,0xa1,0x5f,0xf7,0xc4,0xc1,0xda,0x53,0x22,0xae,0xe4,0xe0,0x3c,0x6b,0xf2,0x4b,0x6d,0x80,0xa1 },
{ 0xdb,0xc0,0x91,0xd8,0x99,0x44,0xb4,0x4e,0xb6,0x51,0xd0,0xcc,0x32,0x51,0x61,0xc0,0x38,0x40,0xe5,0x63,0x81,0x7c,0x66,0x62,0xf0,0xf2,0xef,0xdb,0x22,0x0c,0xa9,0xa7,0x09,0x2d,0x80,0xea,0xae,0x85,0x67,0x95,0x2d,0x57,0x92,0x6d,0x1e,0x4a,0xa5,0xfc,0x63,0x67,0x30,0x9f,0xe9,0x61,0x92,0xc8,0x4d,0x20,0x58,0x83,0x16,0xc8,0xe7,0x6b },
{ 0x10,0x55,0x43,0x5e,0x64,0xb6,0x80,0xec,0x2b,0x0b,0xfe,0x86,0x96,0x58,0xcd,0x6a,0xa4,0x3d,0x88,0x77,0xd6,0x77,0xa7,0x9f,0xee,0x8b,0x5b,0xe7,0xfa,0xe0,0x70,0x38,0xe0,0xd1,0x28,0xeb,0x70,0xc0,0x7f,0xae,0xef,0xc1,0x7b,0x2a,0xf1,0x65,0x9a,0xcb,0xfb,0x07,0xc5,0x74,0x90,0xea,0x5f,0x1a,0xa7,0x77,0x88,0x39,0x65,0x51,0x6d,0x3d },
{ 0x90,0x18,0xba,0xa1,0x1e,0x93,0x8f,0x23,0xb3,0x22,0x48,0x9c,0x6e,0xe0,0x6d,0x88,0xad,0x3a,0x6d,0xd5,0xf5,0x18,0xe8,0xd7,0xd6,0xbe,0x4f,0xd0,0x7e,0xf7,0xd7,0x2d,0xc9,0xc3,0x82,0xd8,0x71,0xf9,0xc6,0xc9,0xe8,0xc1,0x47,0xf7,0x43,0xbf,0x00,0xb7,0x4e,0xb5,0x6d,0x80,0x02,0x73,0x6a,0xeb,0x12,0x67,0x04,0x4f,0xc0,0x36,0xce,0x68 },
{ 0x03,0xdb,0x8d,0x4d,0xde,0xd2,0xc2,0x58,0x9f,0x2f,0xd1,0xe8,0x8b,0x20,0xf4,0xcf,0x3e,0xef,0x0c,0xa8,0xa4,0xa6,0xaf,0xb8,0x65,0x84,0x97,0x70,0x85,0x3d,0x85,0xdd,0x49,0x01,0xe1,0xbe,0x09,0x98,0x64,0x4d,0xef,0x90,0xa2,0x8d,0x07,0x45,0x94,0xe8,0xb6,0xfb,0x5e,0x81,0x4b,0x6a,0xa9,0x13,0x5c,0x4d,0x7e,0x41,0x93,0x32,0xbb,0xdc },
{ 0xed,0xd5,0x13,0xbb,0xfe,0xf3,0xfb,0x24,0x63,0x33,0x60,0x38,0x13,0x50,0x04,0xa3,0xdd,0x2f,0x1e,0x9b,0xff,0x60,0xa8,0xa6,0x07,0x59,0x6c,0x1f,0x53,0x6b,0xa6,0x02,0x25,0x7b,0x59,0x8c,0x3b,0xb3,0xf7,0xa9,0x7c,0x59,0x2c,0xa2,0x90,0xf0,0x18,0x8b,0x61,0x85,0x4d,0x44,0x2d,0xa5,0xdc,0xac,0x3b,0x80,0x86,0xf9,0x45,0xdb,0xf9,0x93 },
{ 0x7d,0xb5,0x01,0xdf,0x70,0x3c,0x8a,0xa0,0x0c,0x0b,0xb6,0x09,0x11,0x24,0xe0,0x90,0x6f,0x20,0xc1,0x28,0x90,0x87,0x9a,0xcd,0x73,0x75,0x1e,0xac,0xee,0x44,0x19,0xbe,0x28,0x4d,0xfa,0xb2,0xc6,0xf0,0xda,0x25,0xb9,0x21,0xd8,0x01,0x58,0xde,0xc6,0x73,0x4e,0x09,0xfb,0x4e,0x05,0x36,0x81,0xa4,0x67,0x21,0xfd,0xe6,0x88,0x23,0xc6,0x25 },
{ 0xc4,0x72,0xc1,0x06,0x2e,0xd0,0x36,0x6f,0x81,0x8d,0xeb,0xc0,0x7e,0xf8,0x89,0x0e,0x1f,0xc5,0x14,0x7d,0xd0,0xdc,0x26,0x7c,0x17,0x1f,0x3a,0x2a,0x3e,0x07,0xe4,0xf1,0x41,0x82,0x0e,0x01,0x94,0x5f,0x70,0xe9,0x64,0x32,0xab,0x5a,0x84,0xd6,0x67,0xd8,0x85,0xf3,0xb7,0xb1,0xe2,0x2b,0x5d,0x8a,0x57,0x1c,0x68,0x3d,0x86,0xb0,0xda,0xa9 },
{ 0xcc,0xe9,0xc6,0x2e,0xc6,0x3c,0x1b,0x57,0x8f,0xa4,0x85,0xda,0x6f,0x74,0x6f,0x60,0xeb,0xd1,0x4a,0xc5,0x4c,0x41,0x66,0x8f,0x25,0x00,0xe0,0xc9,0x10,0x41,0x7f,0x35,0xfa,0x37,0xbe,0x24,0x88,0x47,0x19,0xd0,0x4d,0xd7,0xd6,0x26,0xdd,0xcf,0x76,0x45,0x07,0x08,0xae,0x72,0xce,0xbf,0x44,0x9a,0x27,0xa5,0x56,0x58,0xb3,0xdd,0xe6,0xb6 },
{ 0x45,0x4e,0x27,0xcb,0xfa,0x01,0xcb,0xe5,0x42,0xcd,0xdf,0x6f,0xba,0x29,0x97,0x1e,0xf8,0xc4,0x90,0x96,0x98,0x7f,0x88,0xef,0xc0,0x51,0x29,0x99,0xfa,0x86,0x34,0x37,0x13,0x4a,0x4b,0x21,0x4c,0xf0,0x1e,0x9e,0x9e,0x7e,0x5f,0x8f,0x2f,0x81,0x01,0x7c,0x6b,0x8d,0x88,0xd5,0xc6,0x51,0xb9,0x86,0x17,0x9b,0x00,0xe5,0x51,0xa6,0xbb,0xe6 },
{ 0x10,0x76,0x0f,0x0d,0x22,0xf3,0xa6,0x66,0x0b,0x2b,0x08,0x37,0x75,0x6b,0xd4,0xec,0xc0,0x43,0x90,0x2a,0x4c,0xc5,0x33,0xf3,0x67,0x24,0xff,0xf9,0x78,0xee,0xb4,0xe2,0x2b,0x9c,0x24,0xae,0x58,0x62,0x7b,0x0c,0x29,0xa4,0x37,0x82,0x68,0xf7,0x37,0x42,0x4a,0x19,0x21,0x87,0x3a,0x4c,0x54,0xeb,0x83,0xb1,0xc6,0x7b,0x1b,0xbe,0xa1,0x94 },
{ 0x0e,0xcf,0xef,0x25,0xfb,0xc3,0x69,0x8c,0x06,0x22,0x6d,0x56,0x29,0xc5,0x1f,0xff,0xb9,0x41,0x30,0x62,0x3c,0x2c,0x03,0x17,0x38,0x28,0x17,0x9c,0x80,0x84,0xa5,0x99,0x81,0x32,0xb9,0x8b,0xf2,0x95,0xf2,0xc0,0xb2,0x47,0x1c,0x83,0x9f,0x9a,0x79,0x82,0xee,0x9d,0x57,0xdf,0x99,0x2f,0x62,0xb2,0x3d,0xcb,0x4c,0x13,0xd5,0x20,0xe9,0x22 },
{ 0x14,0x59,0x45,0x22,0x09,0xa2,0x95,0x73,0x25,0x08,0xd6,0x63,0xb0,0x2c,0x86,0xad,0x96,0xe5,0x40,0x6b,0x27,0x5e,0xcd,0x30,0xdf,0x74,0x63,0x2f,0xc6,0x50,0xe8,0x6f,0x5f,0xc8,0xc4,0x04,0xe5,0xd8,0x13,0x2b,0x24,0xec,0x58,0xa7,0x5b,0x38,0xc2,0xc2,0x53,0x5c,0xbb,0x64,0xa0,0x3d,0xd4,0x63,0x3a,0x0a,0x63,0x02,0xfd,0xff,0x91,0xf0 },
{ 0xf1,0x1f,0x5d,0x1d,0xdc,0xbb,0xe3,0x46,0x9e,0xc2,0xc0,0xfe,0xcc,0x2f,0x9b,0x18,0x07,0x59,0x69,0x94,0x4b,0x3b,0x7e,0xdb,0x64,0x46,0x30,0xba,0x41,0x33,0x0c,0x21,0xd2,0x00,0x45,0xd6,0x57,0x02,0x78,0xc2,0xb3,0xe3,0x75,0x0f,0x78,0x87,0x16,0x61,0x0c,0xaf,0x2c,0xbd,0x57,0x92,0x77,0x15,0x54,0xe0,0x6c,0x77,0x49,0xee,0x7a,0xe0 },
{ 0x4a,0xb2,0x35,0x93,0x7b,0xc6,0xfb,0xe7,0x0b,0x2b,0x4b,0x0b,0x57,0xe4,0x64,0xef,0xfa,0xf2,0x83,0xa2,0x94,0x82,0xe3,0xfa,0xa7,0x3e,0x4e,0x84,0xd4,0x41,0xae,0xd9,0x2a,0xca,0xbf,0x97,0xb0,0x58,0xe9,0xdc,0x0d,0xc1,0x7e,0x9e,0x96,0xd2,0x2e,0x74,0x16,0xed,0x5c,0x85,0xa7,0x44,0x5a,0xf5,0xfb,0x95,0x15,0xa3,0x24,0x6f,0x05,0xce },
{ 0x3d,0xe9,0x5c,0x12,0x26,0x34,0xa4,0x47,0x29,0x2e,0xb9,0x00,0x16,0x6d,0xf8,0x8d,0xe8,0x87,0xe5,0x73,0x82,0xea,0xd9,0xcb,0x79,0xfa,0xfc,0x4a,0x19,0x47,0xb9,0xf3,0x7c,0x1f,0x61,0x57,0x88,0x4f,0xde,0x79,0xb1,0x76,0xec,0x3c,0xb9,0x46,0x50,0xb4,0xb5,0xac,0x3d,0x96,0xdb,0x50,0x35,0x8d,0x0b,0x0c,0x76,0x45,0xdc,0x56,0x76,0xa2 },
{ 0x55,0xd5,0x39,0x8d,0x16,0x66,0x43,0x2b,0x55,0x75,0x82,0xc9,0x9a,0xd5,0x34,0x58,0x01,0x01,0xfb,0x06,0xa0,0x50,0xe6,0x2c,0x32,0x0f,0x09,0xc3,0x83,0x9b,0xb8,0x5f,0x57,0x6e,0x22,0x90,0x49,0xff,0x8e,0x2d,0x05,0x9c,0x6a,0x9e,0x8e,0xba,0xa7,0x2a,0xd9,0x0d,0x6a,0x7f,0x18,0x33,0xd9,0xe1,0xf7,0xf6,0x31,0x18,0x4f,0xed,0x93,0x6f },
{ 0xdb,0x5a,0xa7,0xa5,0x96,0xe1,0x10,0x68,0x2a,0x1f,0x8b,0xcd,0x38,0xbf,0x9c,0x99,0xa3,0x6d,0x3f,0x67,0x94,0x07,0x70,0x71,0x7d,0xda,0x6d,0x48,0x2b,0x84,0x8a,0xcb,0x19,0xf3,0x8d,0x27,0x68,0x18,0x05,0xeb,0x76,0x01,0x1f,0x80,0xaf,0xeb,0x41,0x55,0x8c,0x0f,0xdc,0xdc,0x35,0x66,0xda,0xdf,0x75,0x87,0x44,0xc6,0x9c,0x79,0x27,0x36 },
{ 0x41,0x9a,0x4f,0x03,0xae,0x76,0x17,0xcc,0xfd,0x23,0x63,0x95,0x85,0xd5,0x6f,0x8d,0x28,0xb1,0xeb,0x93,0xff,0xf3,0xc1,0x18,0xf6,0x42,0xe9,0x5b,0x4f,0x49,0x11,0x55,0x23,0x7c,0x2d,0x34,0x3a,0x6e,0x83,0x5b,0x2e,0x33,0x4b,0x14,0x84,0x80,0x45,0x45,0xc7,0xab,0x4a,0x22,0x07,0x4c,0x68,0x89,0x4b,0x91,0xba,0x6a,0xd4,0x89,0xbb,0xc7 },
{ 0x8f,0xb0,0x01,0x83,0xf8,0x32,0xf6,0x83,0x6b,0x3f,0xa7,0x2a,0x87,0xd8,0x6a,0xea,0x79,0xe8,0x4a,0x30,0x08,0x5e,0xd3,0x0f,0x59,0xad,0xa6,0x1c,0xa5,0xae,0xde,0xa8,0x3c,0x6f,0x9c,0xa2,0xd4,0x7d,0xc0,0xb6,0xcf,0x97,0xd2,0x0e,0x46,0x6a,0xf0,0x74,0xc6,0xcf,0x85,0x3e,0x12,0x47,0xb0,0xe8,0xc5,0x70,0x84,0xf8,0x3c,0xbe,0x25,0xd3 },
{ 0xa2,0x15,0x7e,0xb3,0xda,0xdf,0x28,0x28,0x37,0x23,0x04,0xad,0x31,0xab,0xf7,0x5e,0xc3,0xe6,0x1d,0xae,0x0b,0x35,0xd0,0xfc,0xc0,0x84,0x1b,0xa9,0xe4,0x9e,0x8f,0x34,0x08,0x17,0x69,0x7d,0xa7,0x0d,0xf3,0x1d,0x0f,0xb4,0x25,0x77,0xcc,0xfb,0xe5,0xa2,0x06,0x4b,0xbb,0xa3,0x5b,0x18,0x7f,0x4e,0x1a,0x8e,0x98,0x32,0x89,0xee,0xbe,0xf3 },
{ 0xeb,0x5d,0x1c,0xe1,0xdf,0x11,0x57,0x67,0x76,0x10,0x38,0x46,0x24,0xaf,0xac,0xe9,0x77,0xbc,0xa5,0x82,0x43,0xf7,0xec,0x34,0x2b,0x85,0x98,0xaa,0x90,0xa4,0xe1,0x29,0x6e,0x12,0x69,0x42,0xbb,0x0d,0xdf,0x41,0x15,0xf2,0xba,0x3e,0xd5,0xb7,0xdc,0x6c,0x5d,0x64,0x96,0xf6,0x52,0x77,0x57,0x46,0x41,0x75,0x5c,0x46,0x4d,0x76,0xf9,0xd4 },
{ 0xdc,0x38,0x6d,0xb7,0xf4,0x09,0xd9,0xe0,0xfb,0x28,0x65,0x2a,0x88,0xc3,0x76,0xd2,0x27,0xfc,0xe6,0x2d,0x1d,0xf1,0x45,0x15,0xd4,0xeb,0x28,0x1c,0x2d,0x5c,0x50,0x2e,0x52,0x6c,0x63,0x76,0xcf,0x20,0x18,0x8a,0xe7,0xe6,0x9c,0x45,0x9d,0x7a,0xd7,0x2b,0x37,0x2c,0x3d,0xb3,0xcc,0x76,0x0b,0x7b,0x23,0xb4,0x7a,0x25,0x7b,0xfc,0x1e,0x4f },
{ 0x85,0x52,0x0e,0xe9,0xce,0x56,0x40,0x94,0x07,0xde,0x0d,0xe6,0x58,0x2b,0xe7,0x25,0xdd,0xdb,0xbd,0xff,0x2c,0xe4,0x16,0x6d,0xfb,0x91,0xcd,0x39,0x58,0x8f,0xa4,0x4c,0xfe,0x12,0x28,0xe5,0xc0,0x0f,0x9d,0xf3,0x47,0x53,0xdb,0x7d,0x30,0xde,0xc0,0x09,0xc5,0x98,0x10,0x58,0x7d,0xd1,0x80,0x25,0xa8,0x95,0x29,0x80,0x54,0x9a,0xe7,0x01 },
{ 0x88,0x42,0x86,0x46,0x3c,0xa0,0x87,0x26,0x94,0xfe,0xba,0xb2,0x4b,0xfc,0x33,0x83,0xcc,0x26,0x89,0x40,0xef,0xec,0x85,0xec,0xc6,0x2d,0xbc,0x9c,0x32,0x51,0x39,0x26,0xf7,0x78,0x42,0x9c,0x01,0xc2,0xdd,0x5a,0x69,0x66,0x0d,0xb3,0x65,0xd8,0x12,0x07,0xce,0x0e,0xb1,0x22,0xeb,0xdb,0xc1,0x5a,0x0e,0xe4,0x28,0x2a,0xaf,0xb8,0xa5,0x4d },
{ 0xc4,0xf8,0x42,0x50,0xad,0x71,0x45,0x2a,0x39,0x8a,0xd0,0x3f,0xb5,0xb2,0xb6,0xff,0xdb,0x3e,0xca,0xa4,0x90,0x6a,0x08,0x57,0x4d,0xf7,0x6e,0x5c,0x62,0xf6,0xed,0xee,0x85,0x7f,0x12,0x09,0x5f,0x01,0x0f,0x4b,0xff,0x41,0x78,0x5c,0xcf,0xe9,0x29,0xbf,0xee,0xab,0xbf,0xf5,0x92,0x0d,0xb2,0x6c,0xdb,0x09,0x46,0x1c,0x56,0x81,0xcf,0xdf },
{ 0x78,0x9b,0xbe,0xb0,0x19,0x9b,0x2c,0x38,0xb4,0x8c,0x9a,0xd4,0x80,0x8a,0x2e,0x9f,0x0f,0x3d,0x27,0xb9,0x4c,0xd4,0x41,0x7f,0x00,0x57,0x91,0xea,0x7c,0x2a,0xe6,0x35,0x14,0x35,0x7e,0x61,0x99,0x18,0x9b,0xc6,0x86,0x80,0xb7,0x9f,0x62,0xf1,0x21,0x7a,0x7f,0xef,0x5a,0x9c,0x2c,0xa1,0x55,0x0f,0xb7,0x81,0xdf,0xec,0xbf,0xe9,0x6d,0xb6 },
{ 0x9e,0x6f,0x42,0x23,0xa5,0x5f,0x89,0x18,0x35,0xbd,0x06,0x60,0x6c,0x95,0xbd,0x96,0xce,0xe4,0x1b,0xdc,0x2c,0xab,0xd2,0x7e,0x3c,0x93,0x35,0xce,0x29,0x81,0x05,0xe0,0x59,0xf7,0x90,0x23,0x89,0x74,0x21,0xf1,0x94,0xf5,0xe7,0x34,0x21,0xb9,0xa3,0xae,0x30,0xc1,0x70,0x6a,0x53,0x61,0x61,0xe5,0xba,0x5b,0xdd,0xd3,0x6c,0xea,0x08,0x3b },
{ 0x87,0xc1,0xd9,0x9c,0x5e,0xad,0x72,0xde,0x2c,0xbc,0x4a,0x51,0x3a,0x0a,0x9b,0xbd,0x51,0x56,0xb3,0xfd,0x89,0xb8,0x46,0x39,0xb1,0xf1,0x1f,0x16,0xf5,0x29,0xb1,0xcc,0x7e,0x16,0x54,0xc6,0x98,0x5d,0x0b,0xcd,0xb8,0x61,0x7a,0x6c,0xa5,0x5e,0xf6,0x83,0xbb,0x0d,0x0e,0xb2,0xc5,0xb2,0x75,0xe3,0xcf,0x26,0x97,0x8d,0xd5,0xa9,0x4d,0x6c },
{ 0xc8,0x9e,0xde,0x2e,0xb7,0xf7,0x58,0x52,0x0f,0x2a,0x9d,0xec,0x26,0xe4,0xb0,0xe7,0xbb,0xea,0x91,0xf3,0x34,0xee,0xfd,0xac,0x18,0xa0,0x42,0x4b,0xcf,0x80,0xe3,0x7a,0x51,0xad,0x85,0x12,0x21,0xea,0x87,0xbc,0x39,0x46,0x4c,0xfe,0x98,0xc9,0xc9,0x40,0x03,0x4e,0x0b,0x17,0xdd,0x55,0x10,0x00,0x56,0x71,0x06,0xa5,0x5a,0xf3,0xc4,0x90 },
{ 0x28,0x00,0x04,0x3a,0xda,0x09,0x82,0xe2,0x2d,0xdb,0x6c,0x3d,0xdc,0x7f,0x43,0xd5,0x37,0x19,0xa8,0xb6,0x6b,0xb1,0x9b,0xe6,0xf0,0xf6,0x79,0xf1,0x0b,0x79,0x84,0x7d,0x0f,0x99,0x17,0x46,0x67,0xe8,0x29,0x09,0xb6,0xc0,0x79,0x65,0x84,0xa4,0xdc,0x3b,0xa8,0x70,0x58,0xdb,0xb8,0x51,0x3a,0xe9,0xfe,0x5b,0x00,0x83,0x90,0x8d,0x9e,0xda },
{ 0x82,0xad,0x29,0xef,0x60,0x0f,0x7c,0x71,0xbd,0x7c,0x8d,0xb6,0x5e,0x63,0xf8,0x2e,0x82,0x4f,0x80,0x02,0xcc,0x3c,0xa8,0x55,0x6e,0x11,0x49,0x15,0x41,0xc5,0x6e,0x43,0x94,0xb4,0x71,0x7e,0x66,0x81,0x94,0x75,0x26,0xa7,0x82,0xbb,0xb6,0xdf,0x12,0xff,0xb8,0xd0,0x6d,0x91,0xfc,0x6c,0x08,0x30,0xd8,0x46,0x84,0x6f,0x95,0xcf,0x8b,0x85 },
{ 0xb2,0xa9,0x21,0x4b,0x34,0x34,0x98,0x69,0xcb,0xed,0x7e,0x3d,0xa1,0x2c,0x1b,0xfa,0x7a,0x25,0x34,0x2d,0x52,0x87,0xe9,0x71,0xb6,0xe7,0xea,0x3a,0x28,0x51,0xfb,0xa1,0xf6,0xfb,0x69,0x82,0x43,0x4f,0xee,0x41,0xf3,0xd4,0xd5,0x5d,0xbe,0x6d,0x44,0xb7,0x00,0x05,0xf2,0xf5,0x1d,0x9a,0xdd,0xc3,0x9f,0xba,0xd7,0x1d,0xaa,0x7e,0xf7,0xf4 },
{ 0xb4,0x95,0x8c,0x4e,0x21,0xde,0x21,0xd4,0x7f,0xb6,0x0c,0x55,0xed,0xb9,0x25,0x55,0x9e,0xaa,0x85,0x20,0xa5,0xed,0x11,0x5e,0x3e,0x0b,0x5d,0x5a,0xd4,0x44,0x1f,0xbb,0xfc,0xd6,0xe7,0xbf,0x99,0x66,0x40,0xef,0xe5,0xc0,0x41,0xfb,0xc3,0x8c,0xb7,0xe1,0x2d,0xb9,0xf6,0x13,0x2d,0x46,0x38,0x41,0x4c,0x7e,0x3c,0x9f,0x4a,0xdd,0x71,0x18 },
{ 0x6c,0x7d,0xe4,0x4d,0x9b,0x3a,0xd7,0x13,0x6f,0xf2,0x81,0x86,0x05,0x33,0xdf,0x71,0x8b,0x9d,0x6a,0x5f,0x7a,0x6a,0xdc,0x61,0xd7,0x46,0xaf,0xad,0xb7,0x55,0x56,0x0f,0xbf,0xd3,0x7b,0x6f,0xff,0x10,0x63,0x0a,0x86,0x98,0xd0,0xe0,0x4f,0x3b,0xa8,0x54,0x2a,0x91,0xa8,0xf4,0x41,0xf5,0xec,0x62,0x2c,0xb7,0x8f,0xa5,0x46,0x32,0x55,0x21 },
{ 0xa4,0x1e,0x9e,0x9e,0xd5,0x87,0x64,0x81,0xe7,0x7c,0xeb,0x19,0xf8,0x4d,0xf2,0x58,0x2c,0xdd,0x70,0x4d,0xbc,0x1a,0x71,0xc7,0xfc,0x4d,0xa1,0x17,0x6b,0xd0,0x0b,0x59,0x50,0xdc,0x31,0x72,0x3b,0x30,0xf2,0xb6,0xda,0x4e,0x1e,0xd1,0xef,0xc7,0x39,0xb8,0x5c,0xd2,0x53,0x56,0x3d,0xd4,0x35,0x9f,0xe8,0xdd,0x28,0xcd,0xcf,0x2e,0x6f,0x15 },
{ 0x60,0x73,0x84,0x2a,0xe1,0xe9,0xeb,0x54,0xea,0x6a,0xfc,0xbb,0xe1,0x62,0x54,0xbc,0x18,0x86,0xf2,0xae,0x53,0x5e,0x88,0xf9,0x16,0x3f,0x34,0xf6,0xb9,0x85,0x99,0x67,0xff,0x52,0x0b,0x4f,0xcb,0xfb,0xab,0xf6,0x55,0x33,0x68,0x67,0x96,0x3b,0x83,0xd8,0xe2,0xae,0x53,0xc8,0xac,0xf2,0x7a,0x3d,0xe4,0x20,0x4d,0xaf,0x38,0x8b,0xce,0x1f },
{ 0xc0,0x2a,0x0f,0x2e,0x94,0xcc,0x35,0xac,0x2c,0x5f,0x09,0xa8,0x7d,0x68,0x86,0xdf,0x32,0xa6,0xd9,0x4e,0xbf,0x58,0xe7,0x93,0xab,0x0c,0x96,0xef,0x40,0x14,0x03,0xf9,0x8e,0xba,0xa8,0xa1,0x8e,0x49,0x1a,0xae,0x0f,0x71,0x6d,0x45,0x7c,0x5c,0xd4,0x73,0xab,0xb9,0x13,0x06,0x60,0x00,0xad,0xb5,0x21,0xf5,0x96,0x39,0xa7,0xed,0x80,0xb0 },
{ 0xb9,0x60,0x06,0xfc,0xfe,0x00,0xab,0xb1,0x05,0xb9,0x43,0x63,0xa1,0x27,0xd4,0x69,0xae,0x04,0xda,0x21,0x6e,0xea,0x59,0x16,0xba,0xc3,0xd5,0x0b,0x7c,0x4c,0x76,0xd0,0x16,0xc7,0x7e,0x18,0x18,0x14,0x3b,0x1d,0xea,0x6f,0xd6,0xe2,0xc6,0xf4,0x36,0x58,0x0a,0x85,0xf1,0x36,0x41,0xbf,0x44,0x91,0xe2,0x4d,0x27,0x9d,0x1f,0x35,0x81,0x54 },
{ 0xb8,0xd5,0x50,0xa1,0x0d,0x92,0x65,0x57,0x1a,0x76,0x5d,0xe1,0x49,0x13,0xe2,0x6b,0x9a,0x6c,0x22,0xe3,0xec,0xa4,0x76,0x58,0xa6,0x91,0x73,0x87,0x5f,0x7a,0x8d,0x33,0xde,0xd9,0x08,0xe0,0xed,0x16,0x1c,0x30,0x7d,0x17,0x90,0xc9,0x70,0x73,0xe1,0x88,0x54,0x1c,0x3a,0xaf,0x58,0x6f,0x67,0x0d,0x17,0x77,0xb7,0x7b,0xfe,0xc3,0xab,0xee },
{ 0x59,0xa3,0x4e,0x77,0x3d,0x36,0x89,0xf9,0x03,0x4f,0x1e,0x37,0xd9,0x7e,0x1a,0xc7,0xff,0xe5,0xf8,0x34,0x4a,0x41,0x45,0x3e,0x2d,0x08,0xee,0x73,0xab,0xe7,0xeb,0xa5,0xe8,0x51,0x21,0xab,0xca,0x95,0x5e,0x09,0x85,0xab,0xbb,0x77,0x17,0xb1,0xd0,0x87,0x4a,0x14,0x39,0x96,0x56,0x4b,0xd9,0xfc,0x6f,0x64,0xc9,0x21,0x0e,0x17,0x3c,0x02 },
{ 0xd0,0xe0,0x91,0x96,0x88,0xe9,0x32,0xb6,0x41,0x34,0xbf,0x13,0xb3,0x46,0x02,0x7c,0xd8,0xa7,0xfd,0x0b,0x7d,0x76,0x1d,0x04,0xac,0x24,0xe6,0x43,0x6e,0x12,0xe1,0xdf,0x06,0x9c,0x9a,0x59,0xfe,0x7d,0x14,0x52,0xb4,0xeb,0x60,0xb6,0x91,0xdb,0xf8,0x67,0x54,0x4c,0xc4,0xbd,0x98,0x46,0xb8,0xdf,0x6a,0x65,0x44,0xdb,0x9f,0xd2,0x8f,0xbe },
{ 0xa7,0x61,0x63,0xf8,0xdd,0xaf,0xb8,0x0e,0xcf,0x43,0xbd,0xd9,0xa1,0x09,0x53,0xd9,0xd0,0xf5,0x48,0x93,0x40,0xab,0xed,0x86,0xb7,0xc2,0xb8,0xb3,0xbf,0xc2,0xfd,0x41,0x76,0x9e,0x27,0x23,0x7e,0xc9,0x41,0x4d,0x80,0xa3,0x74,0x34,0x78,0x61,0xc2,0xfd,0x5a,0xf4,0x3a,0xc6,0x87,0x0a,0x1a,0xa3,0x13,0xd1,0x9f,0xd5,0x37,0x71,0x6e,0xfa },
{ 0x49,0xc6,0x96,0xad,0x84,0xa3,0xa2,0xcc,0x66,0xd8,0xc6,0xbe,0x3c,0x06,0x4a,0xbe,0x8f,0x71,0x37,0xdd,0xf2,0x87,0xbe,0x11,0xe2,0x7b,0x29,0xcc,0x18,0xda,0xc2,0xd8,0xfb,0x7c,0xbe,0xda,0xe8,0x54,0xb6,0xdf,0x57,0x89,0x62,0xc7,0x08,0x8d,0xde,0x4b,0x4d,0x0f,0xec,0x2a,0xcf,0xc3,0xe0,0x19,0xba,0x5c,0xf2,0x1d,0xe3,0xa6,0xae,0xe8 },
{ 0x00,0xd2,0x6a,0xd1,0xbd,0x70,0xd6,0x1b,0x97,0xfc,0xfb,0xc4,0x2f,0xbe,0xee,0x9f,0x95,0x4e,0x83,0xa9,0xde,0xf0,0x0e,0x12,0x77,0x62,0xc0,0xa3,0xb7,0x92,0x89,0xed,0x7e,0x9b,0x72,0x43,0x7f,0x2a,0x09,0x6a,0xcf,0x3a,0x98,0xd8,0x5a,0xea,0xf9,0x8d,0x82,0xee,0xf1,0x38,0x70,0x5e,0x60,0x63,0x94,0xbc,0x2e,0x51,0x22,0x87,0xde,0x5f },
{ 0xe7,0xfe,0x1a,0x77,0x50,0x6a,0xeb,0xc7,0x1c,0x42,0x02,0x73,0x71,0xd3,0xac,0x47,0x95,0xf5,0xbb,0xf9,0x4b,0xf1,0x53,0x88,0x8e,0xb8,0xb6,0x73,0x00,0x50,0xf0,0x80,0x6a,0x87,0xc4,0x6d,0x10,0xe6,0x5d,0xaf,0x1d,0xe5,0x1e,0x78,0x93,0xcb,0x58,0x38,0xf8,0xed,0xfb,0x37,0x67,0x64,0x96,0xa8,0x48,0xc9,0x89,0xda,0x99,0xe9,0xe3,0x2b },
{ 0xd5,0xfd,0xff,0xf5,0x1a,0xb5,0xec,0xca,0x9e,0xf1,0x47,0x9f,0x1f,0xa1,0xa6,0xd4,0x6c,0xba,0xaa,0x0d,0x00,0x7f,0x4a,0x78,0xca,0xb1,0x18,0x06,0x22,0x4e,0xbf,0x1b,0xb7,0xe2,0x14,0x25,0x27,0x74,0xf2,0x21,0xf7,0x7f,0x96,0xcf,0xcc,0x23,0xf1,0xba,0x68,0x6b,0x90,0xb0,0xb6,0x89,0x45,0xc2,0x1b,0xbc,0x47,0x2b,0x57,0xd6,0x12,0x82 },
{ 0x9e,0x02,0xfb,0x86,0xb5,0x06,0x17,0x41,0x06,0x9f,0x16,0xf4,0x19,0xb1,0x23,0x08,0x5a,0x47,0xfd,0x7b,0xfa,0x47,0xb0,0x95,0x05,0xec,0x39,0x21,0xfa,0x72,0x67,0x2f,0xd6,0x22,0x30,0x5f,0xee,0xa9,0xf1,0x83,0x26,0x5a,0xb8,0xce,0x55,0x0b,0x0c,0x1e,0x11,0x74,0x1a,0x02,0x6e,0xd5,0xc3,0xde,0xb2,0x4f,0x5d,0x49,0xf4,0xb7,0x50,0x2d },
{ 0x37,0x28,0x15,0x64,0x60,0x30,0xa9,0xad,0xc8,0x18,0xf3,0x0d,0x91,0xfb,0x14,0x1f,0xae,0x1a,0xde,0x4a,0x67,0x68,0xc0,0x44,0x9c,0xf0,0xec,0xef,0xb7,0xe5,0x02,0x86,0x2c,0xe8,0x01,0x45,0x41,0x28,0xbe,0x91,0xfb,0x88,0x6c,0x00,0x10,0xf2,0x48,0x7a,0x39,0xd4,0x14,0x6a,0x32,0xba,0x23,0xf0,0x3a,0x7e,0xa4,0x08,0x94,0xf5,0xc8,0x6e },
{ 0x69,0xc0,0xe7,0x67,0xf9,0xbe,0xaa,0xbf,0xdb,0xcd,0xf3,0x04,0xa0,0xec,0x68,0xb5,0xf6,0xd6,0x71,0x03,0xcf,0x37,0x58,0x9f,0xd8,0x46,0xda,0x1a,0x1d,0xd4,0x47,0xb3,0xc5,0x17,0x41,0x6e,0x45,0x01,0x44,0x63,0xfc,0x9c,0xf1,0xc4,0x04,0x7d,0x02,0xac,0xe4,0x5d,0xa4,0x73,0x91,0x6a,0xa5,0x1d,0x7b,0x2d,0xc3,0xd0,0x80,0x33,0x45,0x2b },
{ 0x68,0xf6,0xb8,0x54,0x27,0x83,0xdf,0xee,0xeb,0x5b,0x06,0xe7,0x0c,0xe0,0x8f,0xfe,0xfd,0x75,0xf3,0xfa,0x01,0x87,0x6b,0xd8,0x6a,0x70,0x3f,0x10,0xe8,0x95,0xdf,0x07,0xcb,0xe1,0xfe,0xba,0x92,0xe4,0x0c,0xe6,0xfb,0xc8,0x04,0x4d,0xfd,0xa4,0x50,0x28,0xcf,0x52,0x93,0xd2,0xf3,0x10,0xbf,0x7f,0x90,0xc7,0x6f,0x8a,0x78,0x71,0x26,0x55 },
{ 0xb1,0xcc,0xd8,0x0f,0x9b,0x74,0x55,0xbc,0x77,0x84,0x96,0x3a,0x41,0xf4,0x2d,0xcd,0x24,0x94,0x08,0xdd,0x0d,0x60,0xa0,0x61,0xf9,0x5f,0xeb,0x4f,0x28,0x3f,0x5f,0xfa,0x06,0xff,0x93,0x5c,0xac,0x90,0x42,0x7b,0x8d,0x7d,0x8b,0xe9,0xb9,0x71,0xe7,0x03,0x3b,0x13,0x48,0x94,0x50,0x73,0x7b,0xcb,0x85,0xd0,0xfa,0x5c,0x83,0xce,0x6d,0x32 },
{ 0xe1,0xb4,0x0c,0x54,0x8c,0x1c,0x0d,0x5f,0xf3,0xcf,0x09,0xcd,0x0e,0x55,0xe5,0x41,0x66,0x66,0x23,0xf1,0x72,0xe9,0x92,0x58,0x9d,0x10,0x53,0x1d,0x80,0xc1,0x5f,0xc7,0x1e,0xa8,0xaa,0xac,0x3f,0x38,0x4f,0xf9,0xf4,0x7d,0x81,0x12,0x07,0xf4,0x70,0x8f,0x00,0x92,0x45,0x20,0xde,0x9b,0xb6,0x24,0x17,0xca,0x84,0x68,0x2a,0x31,0x80,0x24 },
{ 0x0b,0x98,0x1a,0x2a,0x2d,0x9c,0xae,0x6e,0x15,0x9d,0xb9,0x76,0x7f,0x60,0xc4,0x53,0x23,0x53,0x5a,0x7d,0xbe,0xe0,0xfb,0xbe,0x6a,0xbf,0x56,0xe2,0x9c,0x04,0x6a,0xef,0x99,0xa6,0x4f,0xb4,0xec,0x03,0xbb,0x1f,0xc1,0x96,0xfa,0x8b,0xe6,0x42,0x11,0xd8,0x89,0xfb,0xd6,0x03,0x8e,0xce,0x87,0x33,0x3f,0x40,0x67,0x39,0xf5,0x78,0x5c,0xc5 },
{ 0x96,0x3e,0x31,0x5d,0xba,0x2a,0x02,0xdf,0x42,0x01,0xbb,0xa7,0xbc,0x72,0xa3,0x7e,0xf1,0xe4,0x9c,0x25,0x70,0x98,0x9e,0x56,0xa2,0x5b,0x59,0x7e,0x83,0x1e,0xba,0x7e,0x5c,0x02,0xba,0x13,0xc8,0x4a,0x39,0x35,0xa2,0xa3,0xcb,0x7c,0x52,0x16,0x7e,0x11,0x86,0x9d,0x0a,0xe5,0xc0,0xd5,0xf1,0x3c,0x3d,0xfa,0x4b,0x32,0x8e,0x7c,0x79,0xc0 },
{ 0x61,0xed,0xe9,0xf9,0x8b,0xd2,0xd2,0x08,0xfe,0x1e,0x54,0x59,0xbc,0x20,0x62,0x76,0xad,0xf2,0x28,0xa2,0x9e,0x5c,0xfa,0xb7,0xe0,0x28,0xbd,0x1a,0xb3,0x58,0xb5,0x93,0x05,0xa9,0xa1,0x0c,0xb7,0x10,0xbe,0x88,0x61,0xc0,0x30,0x40,0x44,0xa3,0x17,0x21,0xd2,0xde,0x0c,0x1a,0x00,0x59,0x79,0x65,0x8a,0xd0,0x63,0xca,0x1c,0xef,0x96,0x0b },
{ 0x6f,0xa2,0xd9,0x90,0x05,0x99,0x43,0x93,0x7b,0xe3,0x69,0x47,0x86,0x40,0xda,0x20,0xb3,0xe9,0x60,0xfd,0x62,0x6f,0x21,0x7c,0x6c,0x38,0xba,0x21,0x34,0x85,0x60,0xa9,0x9e,0xba,0x0c,0xc3,0x91,0x5a,0xc7,0xe8,0x37,0x54,0xa3,0x52,0xa6,0x98,0x5c,0x3a,0xfe,0x39,0xcd,0xab,0xc5,0x51,0xc5,0xee,0xb9,0x60,0x93,0x77,0xba,0xe5,0x27,0x57 },
{ 0xf2,0x5a,0x39,0xdb,0xd6,0x05,0x65,0xf4,0x0f,0xab,0x83,0xdb,0xbf,0xbc,0xc8,0xba,0x50,0xde,0x43,0xa8,0x82,0x27,0x03,0x81,0x6d,0x5d,0x21,0x9f,0x8f,0xba,0x89,0xec,0x66,0x02,0x7f,0x45,0x50,0x4e,0x93,0x3a,0x7e,0x21,0x96,0x4b,0xe1,0x78,0x1f,0xa7,0x4f,0xd7,0xd2,0x10,0x17,0x99,0x41,0xe8,0x52,0x0f,0xd7,0x10,0x24,0x97,0xc2,0xf5 },
{ 0x7f,0x94,0x60,0xa2,0x3d,0x47,0x4b,0x66,0xc3,0xb4,0x1d,0x17,0x93,0xb3,0x53,0xd6,0x64,0x6b,0xd3,0x54,0x04,0x73,0x9e,0x0d,0xd3,0x4d,0xab,0x17,0x67,0xea,0x1f,0x34,0xd0,0xd5,0x16,0x77,0x8f,0xb0,0x61,0x87,0x69,0xf1,0xf2,0xbf,0x8f,0x07,0x66,0x61,0xc6,0xff,0x81,0x51,0x24,0xe3,0x4f,0xfc,0x58,0xbe,0xc2,0xca,0xcd,0x90,0x63,0xec },
{ 0x0e,0x3c,0x83,0x72,0xd2,0x6f,0x07,0x7e,0x81,0x4c,0x9e,0xf7,0x33,0xe4,0x50,0xb9,0x9b,0x00,0x44,0xb3,0x4f,0x92,0xf5,0xe3,0x67,0xfc,0x0a,0x3d,0xf2,0x54,0x5e,0x7a,0x18,0xc9,0xa0,0x53,0x1e,0x57,0xd7,0x97,0x2d,0x5f,0x69,0x69,0xb1,0x00,0xd6,0x06,0xb6,0xfd,0xd4,0xf7,0xbd,0xb5,0x5e,0x4a,0x67,0x79,0x38,0xc5,0x7c,0xc2,0x60,0xde },
{ 0x02,0x29,0x2b,0x08,0x87,0xdb,0x3c,0x97,0x9f,0x79,0x6a,0x57,0xe0,0x32,0x1e,0xfc,0x80,0x0d,0x59,0x72,0x27,0x71,0xbc,0x76,0x2e,0x45,0xa0,0x05,0x2b,0x8c,0x5b,0xdb,0x10,0xb6,0x68,0x84,0x75,0x07,0xe3,0x82,0x70,0xcf,0x05,0x01,0xcf,0x41,0x85,0xf6,0x34,0xc8,0xf0,0x11,0x16,0x66,0x2d,0x89,0x4b,0xcf,0xe7,0xb5,0x20,0x72,0x56,0xf2 },
{ 0x9e,0xcd,0xb1,0x5e,0xa2,0x18,0xb4,0x5c,0x6b,0x9a,0x30,0x27,0xa7,0xf5,0x74,0x0c,0xf3,0x8e,0x1a,0xca,0x71,0x93,0x4b,0x73,0xb6,0x47,0xbe,0xbf,0x46,0x2e,0x36,0xa7,0xb4,0x6f,0x00,0x93,0xb6,0xc7,0xda,0xb9,0x05,0x5b,0x35,0x60,0x3c,0x30,0x30,0x02,0xc1,0x96,0x2e,0xbc,0xc3,0xcb,0x89,0x8f,0x32,0x56,0xd6,0x17,0xd1,0xe1,0xf2,0xcb },
{ 0xf6,0xa1,0x6b,0x60,0x54,0xbf,0x7a,0xc1,0xe0,0x1e,0xfc,0xe4,0x82,0x08,0x42,0x5e,0xea,0xf7,0xde,0xb9,0x5d,0xae,0x05,0xa0,0x7b,0xcf,0xfb,0x0d,0x18,0x40,0xa4,0x84,0x71,0x6c,0x92,0x11,0x6b,0x36,0xd2,0x91,0x59,0xcf,0x3e,0x32,0x4c,0x39,0x94,0x09,0xac,0xdc,0x81,0x7c,0x6f,0xe7,0xae,0x35,0x87,0xdc,0x4e,0x6e,0x63,0x8f,0x91,0x11 },
{ 0xa1,0xab,0x43,0xb4,0xb9,0x9e,0x73,0xb0,0x8c,0xd5,0xc2,0x42,0x9d,0xc5,0x56,0x90,0x7a,0x0b,0xd0,0xc2,0x03,0xaa,0xe9,0x2a,0x86,0x9f,0xb2,0x2d,0xa9,0x90,0xd3,0xbb,0x3c,0x7b,0xf2,0xa6,0x56,0x05,0x8c,0xd0,0x4d,0x6d,0xf5,0x6f,0x43,0x84,0xec,0x10,0xdc,0x2f,0x2c,0x96,0x48,0x49,0x7c,0xbc,0x69,0x17,0xb0,0x20,0xb5,0x9e,0xc2,0xac },
{ 0x94,0x8f,0x39,0x5d,0x3e,0x84,0x54,0x45,0x6a,0x3e,0xfd,0xd5,0xad,0x26,0x52,0xc1,0xbc,0x7c,0x0e,0xd1,0x7f,0xf7,0x8b,0x36,0x16,0x17,0xac,0xdc,0xdb,0xc1,0x0b,0xa4,0x98,0xba,0x00,0x06,0xd1,0x1a,0xe9,0xb5,0x72,0xa4,0x13,0x00,0xa1,0xb5,0xa9,0xef,0x5a,0x63,0xd2,0x97,0xff,0xd0,0x98,0x7c,0x1a,0x6b,0x40,0xca,0x6d,0xa2,0xbe,0x0f },
{ 0xb1,0x0f,0xa2,0x74,0x58,0xac,0x74,0xe1,0x95,0xac,0xff,0x3f,0xf5,0x2d,0x2b,0x45,0x9e,0x80,0x71,0xfd,0x4f,0x05,0x42,0x2d,0xe8,0xd9,0xaa,0x05,0xd6,0x18,0x30,0x5c,0xc5,0x46,0x47,0x4e,0x46,0xf0,0xdc,0x93,0x2f,0xb0,0x72,0x60,0xc9,0x91,0x90,0xfb,0x7c,0xfb,0xfc,0xb6,0x5c,0xfb,0x85,0x76,0x74,0xdf,0xc9,0xad,0xf0,0xd4,0xa6,0x65 },
{ 0xbd,0xdc,0x43,0xd7,0x33,0xb3,0xc6,0x3a,0x71,0x33,0x03,0x0f,0xff,0x73,0x80,0x1e,0x4c,0x82,0x60,0xd5,0x32,0x82,0xac,0xce,0x8a,0xc5,0xec,0xe5,0xe4,0x5f,0x68,0x2c,0x17,0x2f,0x3f,0x88,0x16,0x56,0x79,0xfd,0xd7,0xa0,0xe6,0xb0,0x23,0xb9,0xd7,0x22,0x0d,0x7c,0x58,0x39,0x9d,0xfe,0x32,0xa0,0x36,0xe3,0x07,0xab,0x58,0x04,0x52,0x96 },
{ 0x9c,0x39,0xcb,0x60,0xa3,0x3d,0x56,0x3d,0x29,0x58,0xf4,0x9f,0x1b,0x6e,0xe9,0x45,0x82,0xf2,0xd7,0xa8,0x46,0x96,0x7f,0x0d,0xce,0xc9,0xb4,0xd7,0x8e,0x6d,0x84,0x83,0xf0,0x97,0xbf,0x1e,0xe4,0x93,0xe5,0x10,0x03,0xd1,0x96,0xb7,0xbc,0xa1,0x65,0x46,0xbb,0xad,0xe5,0x2f,0x3d,0xbe,0x43,0x68,0x94,0xb3,0x35,0x6f,0x6b,0x2c,0x50,0xfb },
{ 0x66,0x9d,0x6a,0xe4,0xb6,0xb0,0x86,0x64,0x98,0x20,0x46,0xa0,0xa9,0x86,0xa8,0xaa,0xe1,0x50,0xbf,0x35,0x89,0xe7,0x86,0x4f,0xb7,0x5e,0x3d,0x43,0x1d,0xe1,0xc0,0x51,0x1e,0x8f,0x85,0x4d,0xc8,0x62,0x55,0xe7,0x52,0x5d,0xdc,0x2c,0x47,0x99,0xfb,0x4f,0x85,0x7c,0x68,0x79,0x91,0x1b,0x00,0x0c,0xac,0xe3,0x9c,0xa7,0xb9,0x41,0x2c,0x5c },
{ 0xcb,0xc8,0x09,0xae,0x94,0xd7,0x80,0x2f,0x33,0xe8,0xa4,0xeb,0x3b,0x32,0x3e,0xd1,0x41,0x06,0x7a,0x63,0x36,0xfe,0x96,0xa7,0x13,0x63,0x78,0x4b,0x6c,0x7f,0x27,0xbf,0xbd,0x9c,0xbb,0x0e,0x18,0x11,0x5c,0x85,0xd7,0xaa,0xce,0xb5,0xdf,0xdc,0xdb,0x05,0x07,0xad,0x4d,0xd8,0x90,0x3d,0xaa,0x9a,0xec,0xc6,0x9d,0x63,0xca,0xa3,0x0f,0xa6 },
{ 0xc1,0x9d,0x55,0x0f,0x30,0xd4,0x55,0x0c,0x98,0xb1,0xfc,0xa6,0x4c,0x3f,0x4f,0xed,0x5b,0xf6,0x75,0xc1,0x80,0x3f,0xc0,0xd2,0xd8,0xf9,0x92,0xc4,0x10,0xfe,0xa9,0xac,0xda,0x04,0xd6,0x8c,0x73,0x29,0x5c,0x75,0x4d,0xc4,0xac,0x26,0x63,0x19,0x93,0x50,0x2a,0xb6,0xf9,0xfc,0x57,0x25,0x19,0xd6,0x6d,0x43,0xf5,0x74,0x91,0x5b,0x76,0x7b },
{ 0x8b,0xfb,0xee,0x24,0xc6,0xe5,0x26,0x18,0x37,0x15,0x1e,0xf3,0x49,0x50,0x6c,0xf4,0x82,0x2c,0x3c,0x1c,0xb4,0x3b,0x22,0x3b,0xbe,0x5c,0xc1,0x87,0x60,0xa8,0x1c,0xad,0xd7,0x51,0x27,0xca,0xa3,0x40,0x9b,0x59,0x0c,0xfd,0x28,0x9f,0xe7,0x1b,0xe1,0x51,0x8d,0x9f,0xc8,0xec,0xac,0xfd,0x23,0x76,0x69,0x86,0xb9,0x51,0x5f,0xf0,0x01,0x3e },
{ 0x72,0x5b,0xdf,0x66,0xbd,0xae,0x3e,0xbf,0xb7,0x66,0xd8,0xfa,0xc1,0xc0,0x73,0x14,0xcb,0x02,0xa8,0x3a,0x92,0x4e,0x72,0x79,0x32,0xdd,0x9b,0xbf,0x8a,0x3b,0x21,0x28,0x4b,0x5b,0x57,0x67,0x33,0x0f,0x5f,0xba,0xb0,0xdf,0xca,0xca,0x22,0x81,0xdd,0x37,0x53,0x6a,0xf9,0x94,0xb1,0xa1,0xb9,0x69,0xa8,0xa3,0x59,0x05,0x76,0x9a,0x7d,0xe4 },
{ 0xb8,0x18,0x1b,0xc6,0xba,0xdb,0xe1,0x24,0xc0,0x78,0x79,0x42,0x10,0x41,0xe8,0xf1,0x76,0xb0,0x7b,0x2b,0xd6,0x3a,0xfc,0x5c,0xc2,0x11,0x15,0x78,0x2f,0xb3,0x3b,0x93,0xbb,0x01,0x2f,0x51,0x18,0xcc,0xe7,0xca,0xde,0xef,0x10,0x4b,0xe9,0x67,0xdd,0x75,0xf9,0xac,0xc5,0xb1,0x4b,0xf6,0x27,0xdc,0x91,0x1a,0x5e,0x16,0x7a,0x54,0xea,0xd6 },
{ 0xc2,0x14,0x24,0x6e,0xf9,0x47,0x1a,0xf0,0x4e,0x4e,0xb6,0xae,0x23,0xd8,0xf6,0x94,0x00,0x19,0xe1,0x72,0xa9,0x6e,0x0a,0xef,0x8b,0x3b,0x59,0xd5,0x44,0x0d,0x7e,0x0e,0xcb,0x52,0xd9,0xaf,0x0a,0x44,0x58,0x8f,0xc5,0x77,0xc9,0x50,0xc6,0x3a,0xd5,0xa5,0x97,0xf4,0x71,0x16,0xf9,0x1b,0x2b,0x67,0x23,0x6c,0x18,0xbe,0x41,0xd9,0xe1,0x91 },
{ 0x3d,0x92,0x85,0x26,0x11,0x22,0x99,0x38,0x97,0x56,0x6e,0x74,0x30,0x18,0x1e,0x25,0xe2,0xfd,0x65,0xf1,0xb1,0xb1,0x73,0x74,0x7d,0xda,0x97,0xc5,0x5c,0x38,0xd4,0xe4,0xd3,0x2c,0xa0,0xa5,0xd4,0x68,0xea,0xb5,0x3f,0xf0,0x57,0x03,0x5c,0x28,0x69,0xea,0xcc,0x0a,0xb1,0x38,0x19,0x7a,0xbc,0x7f,0x6f,0xaa,0xef,0x00,0xc0,0xcc,0xf0,0xd3 },
{ 0x82,0x52,0x5b,0xe3,0xf5,0xcd,0x7f,0x18,0xad,0xdf,0xa9,0xcf,0x29,0x26,0xad,0x52,0xff,0xa2,0x94,0xdb,0x05,0x68,0x76,0x1f,0xbd,0x2d,0x17,0x3b,0x91,0x19,0x59,0xe8,0x3a,0xca,0x20,0xe3,0x34,0x8e,0x36,0x35,0x8b,0x6c,0x18,0x8f,0xdc,0xff,0x4f,0x88,0xbc,0xe8,0x6a,0xf6,0x31,0xb7,0x75,0x76,0x2c,0x32,0xdf,0xc5,0xbb,0x72,0x44,0x7a },
{ 0x55,0x51,0xc1,0xb5,0x3b,0x08,0x78,0xea,0xe3,0xfe,0xdc,0xfb,0xd3,0x14,0xc3,0x0f,0x0d,0x23,0xb7,0xfe,0x32,0x84,0x5d,0xc2,0xd9,0xde,0x4a,0x8b,0xd4,0x90,0x42,0x97,0x2f,0xaa,0xf8,0x50,0xde,0xf0,0x3f,0xfa,0x2d,0xc6,0xf8,0x5e,0x00,0xe6,0x5a,0x5c,0xf2,0xbe,0x73,0x83,0xdb,0x69,0x67,0xa6,0xdd,0xbd,0xec,0x1a,0x85,0x15,0x38,0x09 },
{ 0x0b,0x80,0x3d,0x88,0x08,0xe3,0x74,0x0c,0x7b,0x35,0x90,0x8b,0xca,0x57,0x22,0x15,0x52,0xe6,0x53,0xf8,0x99,0x17,0x74,0xc4,0x3b,0x2b,0xab,0xab,0x11,0x5c,0xc2,0xc9,0xf6,0xa8,0xd8,0x8d,0x7e,0x6d,0x15,0xfc,0x45,0xf8,0x64,0x9c,0x14,0xe3,0xf4,0x63,0x75,0x5a,0x3c,0x1e,0xbf,0xf5,0x78,0xa4,0x83,0xed,0x2e,0x59,0x50,0x72,0xa3,0x6f },
{ 0x6a,0x9c,0xb4,0x1f,0x4e,0x7d,0x95,0xcd,0x6b,0xf7,0x49,0x1e,0x6e,0xf9,0x6a,0x09,0x27,0x4b,0x13,0x6a,0x6b,0xeb,0x56,0xc9,0xb1,0x48,0x8f,0xe5,0x8e,0x20,0x58,0xc2,0xed,0xd9,0x3d,0x45,0xec,0x97,0xa9,0x66,0x02,0xb9,0x07,0xa6,0x08,0xa2,0x12,0x08,0x05,0x08,0x86,0xaa,0x9a,0xa7,0xf3,0x67,0xea,0x95,0xab,0x2b,0xc8,0x6b,0x14,0x95 },
{ 0x16,0x4e,0x57,0xae,0x2b,0x31,0x7b,0x4a,0x11,0x8a,0x8c,0xb1,0xbb,0x95,0xaa,0x7f,0x87,0xc1,0xd3,0xa9,0x6f,0x8f,0xb0,0xed,0x82,0x71,0xc3,0x43,0x8e,0xf7,0x54,0x3d,0xfe,0x8f,0xe3,0x5d,0x06,0x32,0xda,0x9e,0xae,0x2a,0x7a,0x02,0x79,0xdf,0x89,0xdc,0x9c,0x3a,0x7d,0x8c,0x8c,0x72,0x01,0x1f,0x59,0x34,0xeb,0xc6,0x4b,0xa5,0x0f,0xad },
{ 0xda,0xb5,0xfc,0x7f,0xe5,0x70,0x6d,0x90,0xb6,0xac,0x29,0xed,0x3f,0x20,0x3a,0xdd,0x37,0x8c,0x76,0xb9,0x44,0xd4,0x51,0x59,0x24,0x5c,0xdf,0xd1,0x7a,0x53,0xcb,0xf5,0x97,0xf6,0xcc,0x21,0x6d,0x05,0x57,0xb4,0x50,0x39,0x59,0x8f,0xd8,0xb4,0x91,0x97,0x87,0xb1,0x51,0x73,0xc1,0x66,0xc9,0x97,0xbf,0x8c,0x1d,0x4b,0x30,0x52,0xfb,0x1a },
{ 0x26,0x57,0x76,0xdb,0xd9,0x31,0x95,0x4a,0xa9,0x4b,0x91,0x74,0xb3,0x5a,0x02,0x75,0x20,0x48,0x1c,0xa4,0x47,0x84,0x87,0x2a,0x51,0x20,0x29,0x2e,0x9b,0xa3,0xeb,0x99,0xcd,0x58,0x5a,0xf7,0xf9,0xb4,0x47,0xb6,0xe7,0x34,0x87,0xe4,0x85,0xe5,0x30,0xe0,0xa2,0xab,0xf2,0x82,0x85,0x3a,0xfc,0x19,0x5a,0x02,0xbe,0x8d,0x40,0x0f,0x09,0x9e },
{ 0x5f,0xe4,0xa6,0x3a,0x42,0x34,0xff,0xeb,0x5f,0xe3,0x9b,0x04,0xb7,0xd4,0x9b,0xc0,0x6e,0xc1,0x80,0xd0,0xda,0xb2,0xe0,0x8a,0xf0,0x21,0xb5,0xc7,0xc7,0x63,0xa1,0xa5,0x56,0xc2,0xc2,0xf4,0xe9,0x21,0x00,0xa6,0x66,0x3c,0x3e,0x01,0x88,0xd0,0x05,0x24,0x4f,0x55,0x8b,0xfb,0xc9,0xd4,0x00,0x2d,0xe3,0xa7,0x1b,0x19,0xfb,0x42,0x6e,0x32 },
{ 0xf5,0x0b,0x99,0xb7,0x46,0x88,0x10,0xb7,0x3a,0x5a,0x7d,0xcf,0x08,0xbd,0x17,0x91,0x5c,0x08,0x96,0x6a,0x2e,0xcc,0x1e,0x07,0x60,0x63,0x04,0xb1,0xa4,0x4e,0x8d,0xe3,0xe2,0xb5,0x06,0x1e,0x55,0xf1,0x8f,0x0c,0x87,0x89,0x97,0x3a,0x2d,0xed,0xce,0xbb,0xe9,0x75,0xf1,0x8d,0x21,0x72,0x1e,0x85,0x4a,0x3f,0x3b,0xa6,0xdb,0x7f,0x35,0x88 },
{ 0x4e,0x0e,0xb2,0xf2,0xdb,0x1d,0x3a,0x35,0xd7,0x7e,0x5a,0x83,0x6b,0x6d,0xcb,0x99,0xa3,0x02,0x9a,0x7e,0x6e,0x23,0xb8,0xee,0x78,0xc5,0xca,0x57,0x3a,0x01,0x85,0xfe,0x01,0xd5,0x32,0xf5,0xec,0x0d,0xdd,0xe9,0x65,0x47,0xe8,0x1c,0x63,0xc1,0xb7,0x46,0x0c,0xd5,0x51,0xbc,0x6b,0x57,0x93,0x49,0x30,0x1a,0xc5,0x09,0x82,0x89,0x32,0xb2 },
{ 0x2a,0x14,0x89,0x54,0x22,0x71,0x98,0xc9,0xb0,0x9c,0x74,0x30,0x20,0xa4,0x6e,0x97,0xd8,0x33,0x21,0xfb,0xa2,0x7a,0xd8,0x00,0xa9,0x10,0x3a,0x2d,0x60,0xdc,0x74,0x9c,0xaa,0x21,0x5a,0x18,0x89,0x74,0xe4,0x22,0xea,0x3c,0x24,0x40,0xa3,0x76,0x08,0xc4,0xbe,0xf9,0x2d,0xcd,0xc3,0x9b,0x6f,0x01,0xf2,0xe1,0xf2,0x8f,0xf0,0xfa,0x3c,0xf2 },
{ 0xdb,0x2d,0x4c,0x8a,0x7e,0x18,0x0c,0xc8,0x4a,0x6e,0xb8,0x72,0x7f,0x7a,0xbf,0x91,0x2a,0xe0,0xc3,0x64,0x06,0x79,0x30,0xff,0xef,0x9e,0xa7,0x3a,0x96,0x1e,0x7a,0x15,0x7c,0x4b,0x72,0xca,0x9c,0x26,0x91,0x31,0x04,0x34,0x1d,0xf2,0x26,0x41,0x9c,0xf3,0x00,0xb4,0x3f,0x99,0xea,0xbf,0xdf,0xfa,0x8c,0xeb,0x1b,0xeb,0x3e,0x9b,0x31,0x20 },
{ 0x0a,0x5a,0x48,0x78,0xf4,0xcc,0x44,0x53,0xcc,0x7a,0x3e,0xc5,0x8a,0x64,0x2c,0x87,0x1e,0xbb,0x7d,0x20,0x8e,0x87,0xbd,0xcc,0x1e,0x0c,0xc3,0x72,0xdd,0x96,0x2a,0xbc,0xf7,0x14,0x8b,0x22,0x88,0xb0,0xdc,0x57,0x4d,0x72,0xb1,0x4d,0xf2,0x90,0x30,0x17,0x58,0x32,0xa6,0x4c,0x8e,0x50,0xa9,0xfa,0xe8,0x5d,0xaa,0xbc,0x9e,0x2c,0xc3,0xfa },
{ 0xdc,0xfe,0x55,0x15,0x33,0x45,0x80,0xcd,0xf2,0xdd,0x3f,0x63,0x6d,0x1d,0x8c,0xb0,0xea,0x88,0xf3,0xe9,0x8b,0x0f,0x79,0x87,0xd1,0xd3,0xec,0xf0,0x41,0x06,0x11,0x85,0x96,0x35,0xce,0x13,0x8c,0xa5,0x8a,0x95,0x2b,0x70,0xf6,0x6b,0xcf,0x4c,0xd3,0x7a,0x81,0xa6,0xfd,0x8b,0xf3,0x85,0x85,0x76,0x53,0x25,0xb0,0x5f,0xc9,0xd9,0x37,0x30 },
{ 0xf5,0xe3,0xef,0xcb,0x5a,0x92,0xf1,0xb3,0x20,0xfe,0xb9,0xfb,0xdd,0x6c,0x93,0xfc,0xce,0xce,0xaf,0x38,0xed,0x97,0x68,0xe7,0x93,0x92,0x5b,0x40,0x12,0x8a,0xa5,0xcd,0x76,0xcf,0xa2,0x89,0x9b,0xf3,0xde,0x05,0x4e,0x51,0xe2,0xdf,0xeb,0x07,0xbd,0x2b,0x84,0xe0,0xa6,0xf4,0xb1,0x10,0xce,0xc9,0xab,0x27,0x99,0xc7,0xce,0xaa,0x0f,0xb4 },
{ 0x00,0x7e,0x38,0xc7,0xa1,0x75,0x44,0x57,0xb3,0x25,0x26,0x81,0xee,0x3b,0x45,0x93,0x0d,0xe8,0x01,0x99,0x35,0xb8,0xe2,0xc5,0xb1,0x86,0xaa,0xae,0xd9,0x4d,0xf8,0x96,0x1c,0xa3,0x56,0x5d,0x78,0x4c,0x87,0x85,0xd7,0xbf,0xc0,0x3a,0x7b,0x4d,0x16,0x46,0xfa,0x9d,0xcc,0xf8,0x9c,0xf0,0x09,0x01,0x18,0x84,0x5c,0x66,0x10,0x69,0xe5,0x0d },
{ 0x04,0x25,0x31,0x82,0x3f,0xf5,0xed,0x0b,0x0d,0x77,0xf4,0x88,0x0d,0xa0,0xb0,0xe0,0x74,0x00,0xf2,0x46,0xc3,0xcd,0xaa,0x85,0x9e,0x19,0x94,0x05,0x60,0x37,0xcf,0xb4,0xc9,0x0e,0x8b,0xcc,0xfa,0xe0,0x0f,0x7e,0x62,0x8c,0xa4,0xd0,0xc8,0x66,0x1f,0xac,0xee,0xa3,0xe4,0xf5,0x34,0xec,0x5d,0xd4,0x00,0xb7,0x32,0x5e,0xd8,0x77,0x5d,0x23 },
{ 0x3c,0xa3,0x2e,0xcb,0x0d,0x10,0xe1,0x0b,0xe2,0xe1,0x7d,0x12,0x91,0xb5,0x85,0x74,0x34,0x73,0x07,0xa9,0x33,0xd8,0x2f,0xc3,0x47,0xcd,0x5b,0x50,0x69,0x02,0xf2,0xfd,0x48,0x05,0x0a,0x47,0xc7,0x4e,0x2e,0x77,0xa8,0x94,0x72,0x7f,0x1d,0x32,0x89,0x10,0xce,0xac,0x55,0x2a,0x36,0xba,0x2d,0x18,0x8c,0x91,0xd1,0x23,0xa2,0xc7,0xab,0x69 },
{ 0xb0,0xd7,0xa6,0xdb,0xed,0x42,0x6d,0x40,0xdb,0xaa,0x6c,0x12,0x8d,0x47,0xdf,0x66,0x37,0x38,0x5a,0x13,0x78,0x24,0x16,0x62,0xfd,0x6e,0x14,0x83,0xe6,0x6b,0x5a,0x8b,0xf6,0x52,0x63,0x48,0x15,0xab,0xf3,0x16,0xfd,0x1c,0x0d,0x68,0x7e,0xf4,0xa3,0x16,0x23,0x9b,0x77,0x37,0x15,0x72,0x06,0x8b,0xf6,0xc4,0xfb,0x12,0xcc,0x55,0x0a,0xe3 },
{ 0x6c,0x25,0x24,0x49,0xea,0x09,0x5b,0x3d,0xc7,0xb5,0xe5,0x86,0x1f,0x6c,0xca,0x40,0xfc,0x7f,0xa6,0x05,0x12,0x1f,0xa4,0xaf,0x99,0x73,0x95,0x6c,0xe9,0xd4,0x55,0x80,0xdb,0xc0,0x74,0xef,0x0b,0xa7,0xf4,0x24,0x70,0x33,0xc9,0x43,0xef,0x88,0x34,0xac,0x59,0x56,0xd8,0xdc,0x97,0x07,0xcf,0x79,0x37,0x59,0xed,0x20,0x77,0x04,0x9e,0xba },
{ 0x04,0x0b,0xf3,0x6b,0xde,0xa2,0xde,0x0a,0x45,0x42,0xcb,0x5c,0x53,0x9a,0x53,0x4c,0x68,0x72,0x32,0x75,0x96,0x4a,0xa5,0xeb,0x9c,0x1a,0x74,0xb2,0x82,0x37,0x59,0x88,0xe8,0xb5,0xb2,0xb6,0x81,0xda,0xd7,0x53,0x37,0xd1,0x68,0x67,0x76,0x7e,0xe3,0xc5,0x97,0x7a,0xbe,0x33,0xae,0x04,0xf7,0xf0,0x80,0xd2,0xa3,0xd4,0x79,0x33,0x01,0xcb },
{ 0x38,0x46,0x9c,0x6f,0x4c,0xfd,0x80,0x6a,0x5d,0x05,0xd4,0xb4,0xd8,0x46,0x47,0xc9,0x88,0x26,0x88,0xe2,0xbe,0x1d,0x94,0xc3,0x91,0xbf,0x71,0xcf,0x14,0x4d,0xb8,0xa2,0x33,0x94,0x98,0x29,0xc6,0x1a,0x8d,0x15,0x36,0x0e,0x77,0xc4,0x0d,0x59,0x33,0xe3,0x31,0x87,0x34,0x07,0xf4,0x32,0x09,0xed,0xef,0xc8,0x9f,0x47,0x4b,0x31,0x6d,0x6e },
{ 0x37,0x54,0xe9,0x9f,0x07,0x86,0xe2,0xe1,0x3d,0x70,0x13,0x9b,0xfc,0xd5,0xce,0x69,0x8b,0xe4,0x4e,0x33,0x92,0xeb,0x68,0xe1,0x0e,0x78,0x9e,0x3f,0xf0,0xcd,0xb5,0x9d,0x24,0xc2,0xf8,0x74,0x96,0xad,0xdc,0xbe,0x01,0x2f,0x3c,0x27,0x20,0x64,0x80,0xdb,0x61,0x01,0x9b,0x6f,0x63,0x27,0x34,0xf0,0x42,0x39,0xc0,0xff,0xeb,0x6a,0x84,0x99 },
{ 0xfc,0xcb,0x63,0x61,0x88,0x61,0xbe,0x74,0xc8,0xe1,0xfb,0x8b,0xb4,0x3b,0x6e,0x59,0x29,0x56,0x04,0x69,0x39,0xa2,0x07,0x3c,0x75,0x43,0x06,0x02,0xdc,0xe3,0x9c,0x37,0xfe,0xd6,0x96,0x33,0xcc,0x3c,0x75,0x14,0x1e,0xaa,0x5e,0x39,0xe1,0xd5,0xc3,0x13,0x78,0x0f,0xf0,0x14,0xcc,0xa3,0x99,0x28,0x40,0x28,0x78,0xbe,0x76,0x8d,0xd1,0xe8 },
{ 0x27,0x65,0x12,0xd7,0x59,0xc9,0x7c,0x4b,0x57,0x75,0x1a,0xab,0x2d,0x2d,0x4a,0x47,0x83,0x18,0x64,0x76,0x39,0xb9,0xb4,0x2f,0xb3,0xf4,0xe5,0xad,0xc8,0xf3,0x17,0x6c,0x8a,0x63,0xb4,0x3f,0x82,0x67,0x19,0x30,0xd5,0x42,0xee,0x64,0x43,0x32,0x0a,0x94,0xdb,0xf5,0x95,0x79,0x1c,0x2c,0xa4,0x40,0xa2,0x97,0x97,0xb1,0x31,0x20,0xec,0x3b },
{ 0x9b,0xbf,0x06,0xda,0xd9,0xab,0x59,0x05,0xe0,0x54,0x71,0xce,0x16,0xd5,0x22,0x2c,0x89,0xc2,0xca,0xa3,0x9f,0x26,0x26,0x7a,0xc0,0x74,0x71,0x29,0x88,0x5f,0xbd,0x44,0x1b,0xcc,0x7f,0xa8,0x4d,0xe1,0x20,0xa3,0x67,0x55,0xda,0xf3,0x0a,0x6f,0x47,0xe8,0xc0,0xd4,0xbd,0xdc,0x15,0x03,0x6e,0xd2,0xa3,0x44,0x7d,0xfa,0x7a,0x1d,0x3e,0x88 },
{ 0x9c,0x69,0xb7,0x26,0x4a,0x30,0xb3,0xf1,0x65,0x0c,0x00,0x60,0xac,0x40,0x33,0x90,0xcc,0x24,0xbc,0x04,0xcd,0x4f,0xf9,0x28,0xe8,0x78,0x72,0x4d,0x14,0x14,0x6c,0x91,0xa0,0xbe,0x1e,0x8e,0xeb,0x62,0x29,0xfb,0x72,0x29,0x08,0x32,0x42,0xbf,0xed,0x51,0x5a,0xfb,0x33,0x0b,0x26,0xd6,0x3d,0x9d,0x54,0xbd,0xdf,0xf1,0xc0,0x12,0xe4,0x9d },
{ 0xf8,0xef,0x49,0xb4,0xbb,0xed,0xf4,0x16,0x4a,0xda,0xab,0x19,0x2f,0xbf,0xb7,0x8c,0x90,0x59,0x9d,0x29,0xa4,0xc5,0x18,0x1f,0x3c,0xe5,0x98,0x40,0xd8,0x49,0x00,0x05,0x97,0x9e,0x67,0xa7,0xee,0x97,0x21,0x64,0x02,0xbb,0xd7,0x76,0x65,0xa4,0xb7,0x3a,0x58,0xf2,0x12,0x88,0x37,0xde,0xee,0x67,0x1a,0x46,0x2e,0x83,0xbd,0x62,0xaf,0xde },
{ 0xbf,0xa0,0xca,0x38,0x18,0x38,0x61,0xd0,0xb2,0x42,0xf6,0xbe,0xa1,0x67,0x0a,0x60,0x28,0x7e,0x41,0xda,0x9a,0x23,0x3f,0x76,0xf4,0x03,0x2a,0xda,0xd2,0xdf,0x28,0x0d,0x79,0xea,0x23,0x54,0x58,0x48,0xcc,0xa4,0x21,0xf2,0xe2,0xcb,0x5b,0xa9,0x8e,0xd9,0xd8,0x92,0xc4,0xc3,0xf0,0x77,0x85,0xa7,0xad,0x3a,0x95,0x9d,0xab,0x1c,0x26,0x5c },
{ 0xbe,0x63,0xab,0x41,0xd2,0xc7,0x43,0xf0,0x1b,0x3a,0x9b,0x22,0xd6,0x6d,0x91,0x01,0xfe,0x44,0xd4,0xfc,0x2e,0x04,0xeb,0xa7,0xed,0xde,0xea,0x19,0xf8,0x7b,0x33,0x8b,0x1f,0x12,0x5f,0x14,0x5e,0x22,0xf4,0x75,0x8d,0x30,0x21,0xbb,0xb9,0x0b,0x35,0x3b,0x70,0x53,0xcb,0x7e,0x45,0x93,0x0d,0xaf,0x9d,0x21,0x2f,0x25,0x91,0xb0,0x0a,0x85 },
{ 0xf1,0x43,0xe9,0x48,0x1f,0xbf,0xe6,0x73,0x64,0x3b,0x25,0xe1,0xfd,0x1c,0xfd,0xa0,0x05,0x09,0x71,0x0e,0xcb,0x78,0xa9,0x4a,0x9c,0x53,0x29,0xda,0xb8,0xed,0x86,0x2d,0x5a,0xe1,0x16,0x80,0xd7,0x21,0x8b,0xd5,0xe6,0xf9,0xd1,0x40,0x23,0x03,0x47,0xe1,0x4d,0xe0,0x43,0x7a,0xdd,0xd5,0x14,0x5e,0x78,0x1d,0x3a,0xea,0xed,0x13,0x21,0x28 },
{ 0xfc,0x1d,0x6f,0x42,0xb0,0x5d,0x00,0xe6,0xae,0xda,0x82,0xdf,0x28,0x6e,0xb6,0xe2,0x57,0x80,0x42,0xf6,0xca,0xeb,0xe7,0x21,0x44,0x34,0x24,0x66,0x11,0x3b,0xd8,0x1e,0x6d,0x2c,0xdf,0x43,0xac,0x02,0x38,0x2a,0x93,0xd7,0x4b,0xd9,0x7f,0xd7,0x6c,0xe6,0x39,0x76,0xb5,0x31,0x54,0x6d,0xc8,0xdc,0x41,0xe3,0xd4,0x41,0x5d,0x7e,0xe1,0xea },
{ 0x11,0x9a,0xd9,0x0d,0x1c,0x9c,0x3e,0x36,0x07,0x7f,0xfa,0x19,0x59,0xec,0x37,0x3c,0xfd,0x0c,0xdc,0xbe,0xf6,0x60,0x09,0x05,0x79,0x46,0xf7,0x56,0x5c,0x36,0xc1,0x8d,0x03,0x39,0x28,0x89,0xbb,0x6d,0xca,0x4b,0x39,0x4e,0x72,0x55,0x09,0x7c,0x5e,0xf4,0x48,0x34,0xe0,0x82,0x9c,0xbc,0xd2,0x3e,0x64,0x2d,0x78,0x7b,0xd9,0x1a,0xcf,0xf3 },
{ 0xb1,0x2f,0xad,0xf5,0x29,0x43,0xdf,0xa5,0x49,0x43,0xfc,0xcb,0x3b,0x78,0x93,0xe7,0x96,0x35,0x76,0x86,0xc1,0x03,0x19,0xe3,0x1e,0xad,0x32,0x33,0x44,0x4c,0x04,0x48,0x02,0xe2,0x45,0x95,0x99,0xb0,0xf4,0xac,0xe9,0x6f,0x8f,0x66,0x77,0xb2,0xa6,0xa7,0x1d,0x05,0xe7,0x03,0x32,0xfc,0x4d,0xf2,0x96,0x57,0x5e,0x76,0xb3,0x69,0xde,0x57 },
{ 0xcc,0x64,0xba,0x04,0xf0,0xcf,0x89,0x09,0x8d,0x2e,0x67,0xcf,0x30,0xc8,0x22,0x4b,0xb7,0xfa,0xed,0xaf,0x2e,0x02,0xd6,0x0f,0x98,0xf4,0x8d,0x2a,0x4f,0x79,0xca,0x4b,0xfe,0x31,0xed,0x7f,0x3d,0x26,0x7b,0x8f,0x9b,0x38,0xcb,0x05,0x2c,0xe5,0x86,0xc2,0x3e,0xb1,0xd1,0x83,0xd4,0x4b,0x01,0x29,0xbe,0x35,0x39,0x92,0xc8,0x8b,0x21,0xe5 },
{ 0x60,0x54,0xb2,0x22,0x5e,0x75,0xb6,0xa4,0xbe,0x2d,0xf2,0x9f,0x6c,0xea,0x3b,0x79,0x3b,0xf2,0xd8,0x2d,0x8d,0x98,0xb3,0x68,0x58,0x62,0x7e,0x5e,0x8b,0x47,0xe2,0x7b,0x6e,0x71,0x06,0xf3,0xb1,0x90,0xd8,0xed,0xb0,0x76,0x0c,0xd1,0xf5,0x74,0xe0,0xf8,0x1d,0x78,0x9c,0xf5,0xaf,0xad,0x19,0x87,0x00,0x18,0x29,0xe7,0x64,0xae,0x4b,0x62 },
{ 0x11,0xfd,0x00,0xae,0xc4,0x09,0xa9,0x5f,0x9a,0x5c,0xe4,0x1d,0xe3,0x00,0x71,0x0f,0xe0,0x73,0x27,0xc6,0x65,0xd6,0xd0,0xec,0xc3,0xd7,0xbb,0x13,0x6f,0x65,0x72,0xf4,0x6c,0xbf,0x95,0x44,0xa5,0x8c,0x96,0x96,0xf4,0x1f,0xce,0x45,0x09,0x99,0xfb,0x83,0x9f,0x81,0x1e,0xbb,0x0f,0xe7,0xb6,0x71,0xc0,0x77,0x5f,0x75,0x01,0x0e,0x71,0x46 },
{ 0x01,0xee,0x7f,0xc2,0x02,0x70,0x8c,0xfe,0xb0,0xc2,0xbf,0x93,0x0b,0xf3,0x3a,0x68,0xad,0x08,0x6d,0x4c,0xe9,0x9a,0x11,0xe3,0x8d,0x93,0xca,0x69,0x8e,0xb9,0x98,0x05,0x96,0x55,0xce,0xf0,0x1b,0x02,0x48,0x82,0x12,0x4b,0xe0,0x2e,0xf3,0x45,0x57,0x11,0x81,0x18,0x36,0xea,0x35,0xbe,0x79,0x9b,0x09,0xfd,0x5f,0x4e,0x10,0xee,0xcc,0xaf },
{ 0xc1,0xd1,0x72,0x69,0xe4,0x6e,0x38,0x7a,0xcb,0xe2,0x99,0xec,0x2c,0xc9,0xcc,0x2d,0xad,0xa3,0xf0,0x5e,0x4c,0xf4,0x12,0xf2,0xad,0x94,0x6b,0x70,0x0a,0xa2,0x61,0x3a,0xed,0xb7,0x74,0x4f,0x37,0x0c,0x13,0xa4,0xf4,0x99,0x57,0xd5,0x4f,0xf7,0x98,0x11,0x9d,0x11,0x1f,0x69,0x12,0x9c,0x24,0xdb,0x5f,0x5f,0xb8,0x41,0x62,0x90,0x9d,0xbb },
{ 0x77,0xb2,0x0a,0x91,0x2e,0x6b,0x23,0x13,0x50,0x66,0xe9,0x11,0x89,0x15,0x24,0xbc,0x4e,0xfe,0x35,0x60,0xe3,0xe9,0x23,0x50,0xb5,0x2d,0xec,0x8f,0x37,0x5f,0x2b,0x54,0xa3,0xdc,0x29,0x18,0x25,0xce,0xa3,0xf7,0xf7,0xb1,0x0b,0xfc,0xdd,0x03,0x8a,0x72,0xdf,0x62,0x3d,0xa1,0xe8,0x50,0xe0,0xf1,0xca,0xa8,0x01,0xfc,0xd6,0xcc,0x67,0xff },
{ 0x5c,0xfe,0xf2,0x13,0xfe,0x03,0x00,0x8d,0xca,0x1b,0x9e,0xc0,0x3c,0xbf,0x88,0x22,0xea,0x22,0xc1,0x2f,0x74,0x25,0xab,0xf9,0x98,0x09,0xbd,0x15,0x36,0x0a,0x21,0x95,0xa8,0x7b,0xce,0x16,0x67,0x59,0x88,0x3b,0x3b,0xa3,0xb2,0xe2,0x06,0x66,0x2d,0xcf,0x33,0x77,0x86,0x8a,0x75,0xb0,0xa0,0x9b,0xf7,0xf3,0x29,0x73,0x7f,0x76,0xec,0x9d },
{ 0x51,0x08,0x69,0xf6,0x62,0x98,0xa7,0xcf,0x0c,0xd8,0x44,0x89,0xc6,0x8f,0x7b,0x4b,0xd1,0xd9,0x83,0xea,0x87,0xc3,0xea,0x8f,0xe5,0x1c,0xdf,0x4f,0xed,0x67,0x41,0xcb,0xce,0xe1,0xab,0x93,0xa5,0xb4,0x0c,0xc2,0xba,0x41,0x24,0x33,0xbb,0xa6,0x3c,0xe9,0x30,0x38,0x0a,0x05,0xe0,0xa5,0xc2,0x78,0x57,0x25,0x2b,0x04,0x6f,0xc4,0xac,0x9d },
{ 0x70,0x6e,0x45,0xfc,0x41,0x62,0xe8,0xcd,0x79,0x9b,0x23,0xbd,0x32,0x2f,0x0c,0xdf,0x60,0x19,0x41,0x70,0x9f,0x49,0xdb,0x21,0x78,0x83,0xb3,0xda,0xb7,0xd4,0xf9,0x3b,0x3b,0xef,0x1c,0x13,0x4e,0xed,0x7a,0xa7,0x4c,0x04,0x2a,0xcc,0x68,0x51,0xae,0xae,0x8e,0x14,0x23,0x3b,0x73,0x90,0xff,0x9a,0xda,0xa9,0x05,0x60,0xdb,0x69,0x65,0x04 },
{ 0x6e,0x83,0xc3,0xa6,0xb4,0x3f,0xdc,0xd3,0x00,0xe4,0x19,0xe6,0xf7,0x8d,0xca,0xe1,0x14,0x55,0xea,0x63,0x8f,0x8f,0xf5,0xda,0x5c,0x0c,0x0e,0x3d,0xf0,0x0d,0x26,0x4c,0xcd,0x3d,0xa4,0xcf,0x02,0x28,0xe5,0x6c,0xb2,0x57,0x11,0x0a,0x49,0xaf,0x64,0x12,0x5b,0xc0,0xdb,0xf6,0x91,0x5f,0xe8,0x49,0x8e,0x70,0xf5,0xa4,0x00,0x60,0x37,0x14 },
{ 0x66,0xb7,0x1d,0x0b,0xd4,0x73,0x44,0x19,0x7c,0xcf,0xb0,0xc9,0x57,0x8e,0xaf,0x0a,0xdb,0x60,0x9e,0x05,0xbb,0x4e,0x8f,0x87,0xd5,0x6b,0xd3,0x4f,0x24,0xee,0x7c,0x47,0x14,0xa0,0xec,0xb7,0xf7,0x08,0xc0,0x2b,0x2b,0xae,0x23,0x8d,0x2c,0x46,0x07,0xbb,0x9d,0x04,0xfc,0xe6,0x4e,0x10,0xa4,0x28,0xc9,0x11,0xd6,0xfa,0x25,0xb2,0xf0,0xfd },
{ 0x03,0x31,0x2d,0xb9,0x42,0xa8,0x65,0xb8,0x9a,0xf4,0x1a,0x5c,0xe5,0x8f,0xa0,0x03,0x39,0x90,0x2e,0x0c,0x0a,0x9f,0x9b,0x84,0x64,0x14,0xd6,0x5d,0x3c,0x11,0x9e,0xff,0x6e,0x3e,0xda,0x64,0x6b,0x37,0x24,0xdf,0x10,0x4e,0xea,0x31,0x78,0x09,0xe8,0x6f,0x0a,0xec,0x59,0xdb,0x5f,0x51,0x55,0x85,0xfe,0x95,0xa3,0xa9,0xf8,0xb1,0xb9,0x50 },
{ 0x0c,0x0f,0xc2,0x71,0x19,0xea,0x88,0x06,0x2a,0xad,0x57,0xe3,0x83,0x8c,0xcb,0xd9,0xf9,0x62,0x5a,0xda,0x62,0xa0,0x56,0x30,0x21,0x6d,0x35,0x68,0x1c,0xd7,0x31,0x0d,0x81,0x8f,0xc9,0x14,0x5f,0xe4,0x6e,0xf3,0x9d,0x2c,0xac,0x60,0xa3,0x0a,0x87,0x94,0x32,0x7b,0x23,0x37,0x55,0x9e,0x29,0xbc,0xb9,0x3e,0xfb,0xe3,0x45,0x10,0xe1,0x35 },
{ 0x39,0x64,0x76,0xe8,0x5a,0x9a,0x22,0xc6,0x20,0x26,0x27,0x1d,0x18,0xee,0x3a,0xc1,0xbf,0xd1,0x80,0x03,0xc2,0x96,0x7c,0x8e,0xea,0x7c,0x20,0x7c,0x6e,0x7e,0x22,0x1c,0xd0,0xe7,0xd7,0x54,0xcf,0x5a,0x86,0xa6,0x77,0xba,0x9d,0x9a,0x15,0xa5,0xff,0x27,0x87,0x74,0x19,0x9c,0x2b,0x1f,0xba,0x18,0x43,0x36,0x29,0x87,0xb2,0x6a,0x70,0xbd },
{ 0x9e,0xff,0x2e,0x63,0x2b,0x11,0xdb,0x4a,0x3d,0x8a,0xd3,0x9f,0xe3,0xe2,0x44,0xd8,0xf4,0xd2,0xa5,0x3d,0xff,0x16,0x38,0x15,0xee,0x43,0x7a,0x23,0x31,0x83,0x88,0x4f,0x66,0xda,0x54,0x79,0x18,0x66,0x88,0x12,0xbd,0x31,0x0c,0x8e,0x33,0x9d,0xcd,0x07,0xb3,0xd5,0x08,0xbc,0xd6,0x23,0xa0,0xbd,0x86,0x84,0x7a,0xfe,0xfd,0x3c,0x30,0x6a },
{ 0x70,0x0a,0xc2,0x97,0x4f,0x5e,0x65,0x7c,0x16,0xce,0x35,0x61,0xac,0xa1,0x1f,0x4e,0x03,0xa9,0x23,0xf0,0xb6,0xb1,0xed,0x93,0xe3,0x26,0x15,0x41,0xab,0x17,0xdc,0xd2,0x4b,0x22,0x24,0xd8,0xa2,0x19,0x6c,0x0a,0x3a,0x90,0xc9,0xd7,0xce,0x96,0x5e,0xa9,0xe9,0x6d,0xa9,0xd9,0x01,0x30,0x6e,0xdd,0x46,0x30,0x0d,0x4a,0xdb,0x50,0xee,0x0b },
{ 0x0b,0x68,0x87,0x6a,0xfb,0xd4,0xf4,0xe6,0x20,0x66,0x30,0x0c,0x77,0x46,0x38,0x86,0xed,0x9a,0x74,0xea,0x15,0x04,0x71,0x42,0xc7,0x90,0x65,0x25,0x5e,0xef,0x13,0x0e,0xb1,0xf1,0xa2,0xb1,0x82,0xfa,0xaa,0x7e,0xb0,0x44,0x6f,0xae,0x32,0xf4,0xd2,0x78,0x41,0xab,0x7a,0xad,0x6c,0x69,0xee,0x3b,0xdc,0xce,0x75,0x23,0x66,0x19,0x12,0x90 },
{ 0x4f,0xf0,0x33,0x43,0x09,0x2d,0x86,0x53,0xac,0x73,0x87,0xb0,0xca,0xae,0xf5,0x1d,0x4c,0x8c,0x7f,0x56,0x10,0xb4,0x60,0x44,0xee,0x37,0xab,0x54,0x73,0x56,0x16,0x61,0x1c,0x70,0x29,0x01,0x57,0x5b,0x1f,0x28,0x16,0x2d,0xfa,0xaa,0xf7,0x59,0x97,0xa9,0xcb,0x64,0xff,0x6f,0x21,0x0b,0xe3,0xf8,0x96,0x5c,0x0e,0xee,0x29,0x47,0x29,0xd9 },
{ 0xbe,0x6e,0xea,0x45,0xba,0x37,0x35,0xe5,0x07,0x72,0xde,0x7d,0xf6,0xf1,0x29,0x9c,0xf3,0xb5,0xb0,0x4e,0xd0,0xee,0x5e,0xde,0x75,0xb2,0x0c,0x06,0xdf,0x59,0x80,0x7f,0x47,0x73,0x4e,0x39,0x54,0x19,0x57,0xad,0xc1,0x71,0x48,0x84,0x19,0x09,0xef,0x7e,0xcf,0xfa,0xcb,0xb4,0x25,0xfc,0xea,0x1a,0x18,0x6a,0x03,0x69,0xaa,0xc9,0x1f,0x2f },
{ 0xe1,0xb2,0x24,0x61,0xa5,0xc4,0x24,0xf3,0xa6,0x7d,0x44,0x79,0x9a,0x68,0x55,0x92,0xcd,0x9f,0xdc,0xf9,0xfc,0x91,0xcb,0xa2,0x65,0x82,0x50,0xda,0x9c,0xfc,0xdb,0x4e,0xf5,0x62,0x9a,0xa2,0x21,0x52,0xe2,0x6d,0xfb,0xb0,0x92,0xe0,0xdc,0xeb,0x5c,0x56,0x73,0x40,0x4d,0xc4,0xc0,0x42,0x34,0xc9,0xa0,0xa2,0x7e,0xe2,0x45,0x40,0xfc,0x78 },
{ 0x24,0x83,0x9a,0x30,0x25,0x18,0xeb,0x58,0x00,0x16,0x4c,0x0e,0x65,0xa7,0x2d,0x48,0x01,0x76,0xf9,0x7c,0x28,0xbb,0x7f,0x5a,0xb4,0xef,0x7e,0x10,0xde,0xe2,0x83,0xb8,0x88,0xc3,0xde,0x39,0x91,0xd0,0xb6,0x09,0x1c,0xfe,0xae,0x64,0x7c,0x7f,0x2c,0xbe,0xe3,0x8e,0xe8,0x9c,0x29,0x4f,0xdc,0x4a,0x60,0x5d,0xdc,0xf7,0x29,0x1d,0x2e,0xc4 },
{ 0x84,0x79,0x83,0x95,0x3a,0xe8,0xbe,0xbb,0x13,0x3f,0x17,0x90,0x17,0x5e,0x90,0xf3,0x9b,0x5f,0xfd,0xde,0x2b,0x27,0xfb,0xd0,0x5e,0xc1,0xa1,0x58,0x9a,0x12,0x53,0x5d,0x30,0x9c,0xd4,0x49,0x56,0xd6,0x2f,0xae,0x3b,0x16,0xef,0xfa,0x4c,0x59,0xa9,0x68,0x9d,0x2a,0x68,0x26,0x04,0x88,0xda,0x75,0x4f,0x21,0x31,0x9f,0x1b,0x97,0x6d,0x40 },
{ 0x38,0xcc,0x45,0x58,0x14,0xe7,0xdd,0x44,0xc4,0x07,0xca,0x42,0xe7,0x1e,0x7d,0x50,0x1f,0x01,0x05,0x93,0xd1,0x7a,0x26,0xf4,0x25,0x1b,0x2d,0x1a,0x24,0xd3,0xe5,0xaa,0xae,0xac,0xe9,0x12,0x0c,0x3e,0xaf,0x48,0x03,0xee,0x79,0x06,0xe2,0x74,0x6e,0xd1,0xf9,0xfa,0xd0,0x93,0x82,0xa8,0xc2,0x52,0xd1,0xff,0x3c,0x2d,0xd5,0x25,0x26,0x34 },
{ 0x0f,0x40,0x50,0xd2,0xe5,0x85,0x12,0xa0,0xa9,0xd9,0xda,0xf6,0x12,0x0f,0x9e,0x93,0x7f,0x6e,0xf4,0x2e,0x78,0xdc,0x72,0xb5,0x14,0x1e,0x1a,0xff,0x9f,0x32,0x88,0x3b,0x89,0xc7,0x0e,0x03,0xa1,0x58,0xef,0xa5,0x51,0x64,0x36,0xc1,0xca,0xc3,0xcc,0xba,0xbd,0x20,0xa2,0xd3,0x5e,0x83,0xc8,0xe8,0xbf,0xa4,0xba,0x8d,0xe4,0xe8,0x7d,0x56 },
{ 0xa8,0x74,0x2e,0xca,0x68,0x0d,0x75,0x19,0x7d,0xa7,0x8c,0x2c,0x33,0x2f,0x9f,0x81,0xa8,0x8b,0xa0,0xc2,0x50,0xcd,0xf2,0xd4,0xa6,0xa3,0x0d,0x82,0x34,0xf4,0xf8,0x3b,0x5e,0x02,0xd4,0x7f,0xcc,0x1b,0x17,0x23,0x40,0xe8,0x20,0x5f,0x93,0xe6,0xdd,0xcd,0x55,0xa4,0xbf,0xf2,0x0c,0x86,0x80,0x8f,0x11,0x3e,0x3b,0x50,0x2f,0x9e,0xdb,0x8b },
{ 0x86,0xc4,0x0a,0x2d,0xb9,0x8c,0x7a,0x3d,0x7a,0xed,0x26,0x03,0x1a,0xed,0x6d,0x69,0x96,0xfb,0x0f,0x12,0xc2,0x7c,0x1c,0x74,0x61,0x2d,0x67,0xb5,0xc2,0x71,0x9a,0xfc,0x51,0x8d,0x22,0xf4,0xb2,0xee,0x3a,0x02,0xc9,0x8e,0x4f,0xe9,0x02,0x2e,0xec,0x1a,0xc7,0x1c,0xad,0x2d,0xb2,0xe6,0x88,0xf6,0x89,0x5f,0x6a,0x26,0xde,0xf5,0x69,0xfa },
{ 0x7f,0xbd,0x52,0x58,0x46,0xdd,0xe7,0xde,0x36,0x59,0xa7,0x81,0xc3,0xdd,0x10,0x6a,0x2b,0x28,0xe9,0xc7,0xe2,0x07,0x0a,0x53,0x29,0x46,0xbc,0xd5,0x80,0x6d,0x81,0x12,0x98,0x7f,0x47,0x79,0x6b,0x29,0x55,0x7a,0xab,0xf2,0x78,0x1d,0xce,0x37,0x1e,0x31,0x4f,0xa2,0x44,0x16,0x79,0xc8,0xf4,0xa5,0xe7,0xfe,0xfe,0x27,0xf9,0x3a,0x25,0xfe },
{ 0x68,0xc8,0x2a,0x75,0xb9,0xf1,0x29,0xf2,0x57,0xe1,0xa5,0xf3,0xc6,0xe5,0x91,0x30,0xfe,0x09,0x41,0x04,0x61,0xef,0x0f,0x4f,0xd8,0x9c,0x84,0x6c,0xf4,0xef,0x33,0xc8,0x4c,0x64,0x08,0x71,0xcb,0x79,0x8f,0xc9,0x61,0x93,0xaa,0xdf,0x46,0x55,0x25,0x52,0xd5,0xa8,0xbb,0xf4,0x92,0xca,0xe0,0x9c,0xd1,0x7e,0xd7,0x2a,0x57,0x78,0xfc,0x64 },
{ 0xd6,0x03,0x43,0x1e,0x52,0xc5,0x28,0x4a,0xb0,0x8d,0x7b,0x96,0xff,0x60,0x36,0x36,0x4e,0x96,0x11,0xf0,0x94,0xf7,0x93,0xed,0x6a,0x58,0xd3,0x30,0xef,0x91,0x5d,0x4a,0x61,0x7f,0x38,0x88,0x6c,0x4e,0xb4,0xf7,0x5b,0xe5,0x43,0xb3,0x70,0xcc,0x1f,0x8f,0x3e,0xc6,0x11,0x37,0x49,0xb1,0x97,0xf6,0x75,0xe2,0x15,0x06,0x81,0x0f,0x81,0x39 },
{ 0x5e,0x4a,0x73,0xcc,0x21,0x89,0x32,0xfd,0xc3,0x3c,0x4f,0xa8,0xd9,0x10,0xaf,0x6d,0x46,0x77,0x03,0x87,0x07,0x9c,0x1f,0x96,0x38,0x24,0xd1,0xe5,0x57,0x71,0x5f,0x84,0xd6,0xab,0xd2,0x9e,0x3d,0x5d,0xc3,0xe5,0xab,0x63,0x45,0xb9,0x84,0x8b,0x6d,0xb7,0xa2,0x34,0x34,0x97,0xba,0x53,0x93,0x68,0x66,0x8c,0xe7,0xc7,0x24,0x03,0xc4,0x17 },
{ 0xba,0x17,0xe7,0x58,0xb0,0xdf,0xb3,0xdf,0x04,0xde,0xa0,0xea,0x3c,0x83,0xb6,0xef,0x1a,0xb1,0x6f,0x39,0xab,0x64,0x39,0xa5,0x76,0x56,0xf4,0xaf,0x2b,0xe5,0xf9,0x8a,0x5c,0x77,0x53,0xea,0xa8,0x58,0xd8,0x55,0x67,0x9e,0x97,0xe6,0xeb,0x1a,0x46,0xfb,0x93,0x16,0x72,0x2c,0x78,0x3e,0x0a,0x73,0xee,0x6d,0x7a,0x31,0xc7,0x75,0xed,0x0c },
{ 0xe6,0x00,0x80,0x35,0xf2,0x90,0xd4,0x8a,0x47,0x5d,0x8f,0xb3,0x90,0x29,0x6a,0xe0,0xef,0x4a,0xde,0x09,0x9c,0x5f,0x70,0xce,0xff,0x8c,0x08,0x50,0xfe,0xd2,0xe4,0xb5,0x93,0x2e,0x91,0x2a,0x57,0xfe,0xb4,0x28,0x9f,0xb4,0x2e,0x5a,0x43,0x19,0x97,0xa2,0xf0,0x1f,0xb3,0x31,0x7f,0xdc,0x7f,0xfb,0x0f,0x45,0x01,0x21,0x9b,0x42,0x95,0x59 },
{ 0x93,0x29,0xc1,0xe0,0x40,0xe1,0x5a,0x5d,0xa4,0xcd,0x31,0xf8,0xaf,0x11,0x49,0xeb,0xaa,0x3f,0x59,0x69,0x34,0x34,0x08,0xb9,0x92,0x38,0xd8,0xf8,0xce,0x2d,0xe0,0x41,0x57,0x05,0x8b,0x9c,0xce,0x26,0x21,0x57,0x0d,0x53,0x1f,0x8c,0x3b,0x07,0x6a,0x68,0xfd,0x55,0x4a,0x8f,0x45,0xe4,0x2b,0x6d,0x2c,0x67,0xc6,0x64,0x0a,0x56,0xd7,0x1f },
{ 0xf1,0xf6,0x30,0x9a,0x15,0xe9,0x04,0xd5,0xa8,0x0f,0xe6,0x8d,0x70,0x10,0xf0,0xa5,0x98,0xfd,0x57,0x2e,0x3c,0x1f,0x30,0xbb,0x1e,0xc4,0xa0,0x92,0x78,0x3d,0xd8,0x5c,0xfc,0xf7,0x8f,0x95,0xb4,0x06,0x1a,0x09,0x99,0xcb,0x43,0x89,0x0c,0x13,0xc1,0x1c,0x44,0x29,0xb0,0x1a,0x0c,0xaf,0x85,0x6a,0xce,0x8f,0xca,0x44,0x58,0x71,0xa9,0x74 },
{ 0x08,0x13,0xa1,0x54,0x5c,0xf2,0x92,0x3c,0xfa,0xdb,0xdf,0xb6,0x64,0x0c,0xa8,0x5f,0x2b,0x1e,0x28,0x8f,0x6a,0xca,0x49,0xe7,0x35,0x14,0x49,0x59,0x70,0xa1,0x7d,0x4c,0xa4,0x59,0xfe,0xa5,0x8f,0x07,0xa7,0x24,0xa8,0x5d,0x5e,0xf5,0xe7,0xd2,0xca,0xef,0x42,0xd3,0x59,0xcf,0x9a,0xc7,0xc1,0xd0,0xc3,0xbe,0xd2,0xec,0x81,0x4a,0xca,0xdc },
{ 0xbb,0xb8,0x8b,0xae,0x19,0xc3,0x9d,0x9d,0x46,0x1c,0xd2,0xc9,0x18,0x42,0x81,0x4a,0xb3,0xdf,0xd3,0x11,0xcb,0xf8,0xc0,0x0e,0xba,0x43,0x39,0x0c,0x2c,0xd5,0x0d,0x42,0xf0,0x62,0xdd,0x34,0xd1,0x97,0xf2,0x57,0x56,0x32,0x27,0x57,0x68,0x6f,0x98,0x76,0xb4,0xa3,0x00,0x07,0x52,0x6d,0xe1,0x89,0x02,0xa4,0xed,0x86,0xd7,0x13,0x9a,0xd3 },
{ 0x22,0x10,0xb8,0xed,0x74,0xfc,0xf5,0x08,0x02,0xe1,0x5a,0x6b,0x0f,0x84,0xe7,0x7a,0x21,0x34,0xce,0x2c,0xa1,0xfd,0xeb,0x30,0x3f,0xbf,0x41,0xeb,0x3a,0x11,0x37,0x0e,0xc3,0x8a,0xa6,0xf7,0x21,0xfd,0x0a,0xb7,0xb5,0xb3,0x1c,0xbc,0x6e,0xdd,0xf7,0x59,0xcd,0xd4,0x62,0xe8,0x92,0x0a,0x99,0x9e,0x01,0x6d,0x8b,0x87,0x55,0xb9,0x9a,0x7e },
{ 0x9a,0xcb,0x52,0xc2,0x94,0x4e,0x01,0x5f,0x73,0xed,0xfe,0x25,0x97,0x07,0xc5,0x85,0xb0,0x5c,0xbd,0x52,0xa4,0x56,0xd1,0x43,0xbd,0x8e,0x5e,0x4f,0x69,0x6b,0xef,0x8b,0xee,0xc8,0x14,0x32,0xa2,0xb7,0x32,0x77,0x11,0x5a,0x8b,0x91,0x66,0x30,0x89,0x8b,0x40,0x35,0xa8,0x4e,0xd4,0x43,0x26,0x61,0x18,0x5d,0x0b,0x4e,0x3b,0xd1,0xaa,0x7f },
{ 0x64,0x23,0xdd,0x70,0x26,0x5c,0x18,0x13,0x51,0x69,0x70,0xac,0x17,0xc8,0x94,0x1e,0x71,0xfc,0x0a,0x81,0x7e,0x0a,0x8b,0x19,0x1d,0x0d,0x31,0x4f,0x9e,0x22,0x67,0xd0,0x10,0xb9,0x90,0x80,0x9a,0xd1,0xcd,0x16,0x13,0x02,0x9d,0xac,0x5a,0x3c,0x4d,0x70,0x35,0x5f,0x45,0x7c,0x4e,0xcd,0xf7,0x14,0xe8,0xb1,0xd2,0xc1,0x43,0x68,0x5f,0x3a },
{ 0x88,0xbc,0x66,0x5b,0x5a,0x9d,0xd2,0x9c,0x43,0xce,0x23,0xef,0x38,0xfa,0x4d,0x41,0x51,0xf9,0x70,0x98,0xed,0x5c,0xd8,0x37,0xd7,0x1b,0xe4,0x0c,0x4b,0xb3,0xd2,0xb4,0x56,0xeb,0x51,0xdc,0xa7,0xf3,0xc6,0x2f,0xc7,0x52,0x94,0xc2,0xf0,0x60,0x32,0x84,0xde,0x32,0x1c,0xd4,0xd6,0x4a,0xe0,0xd3,0x43,0xfd,0x2f,0xd8,0x33,0x5e,0xa4,0xc4 },
{ 0x2f,0xfb,0x10,0x9f,0xe1,0xdd,0x57,0x8e,0x2a,0x2f,0x77,0xf8,0x0f,0x62,0xcb,0xb6,0x0b,0x95,0x53,0x62,0xf0,0x35,0x0e,0x46,0xc5,0x3e,0x66,0x0e,0x41,0x3b,0xef,0x27,0xc1,0x2c,0xa7,0x83,0x91,0xc0,0x72,0x96,0x30,0x14,0xfd,0x40,0x3c,0x56,0x1b,0x4f,0x05,0x97,0xae,0x42,0xc1,0xc5,0x55,0x4f,0xaa,0xdd,0xa4,0x84,0xae,0x57,0xbd,0x5f },
{ 0xd3,0x8e,0xc5,0xa3,0x43,0x95,0x8d,0x2d,0x80,0x88,0x42,0x45,0x5b,0x9e,0xdd,0x41,0x5b,0x45,0xe2,0x22,0xd7,0x4e,0x93,0x1b,0x0d,0x33,0xb1,0xf2,0x59,0x16,0x28,0x2c,0x75,0xa6,0x2a,0xd2,0x44,0x84,0x56,0x3d,0xe4,0xec,0xe5,0x31,0x0d,0xd2,0x9d,0x69,0xb5,0x6a,0xe2,0x33,0x78,0x2b,0x71,0xc9,0x72,0xc3,0x01,0x27,0xa9,0xaa,0xce,0x4c },
{ 0x84,0xc6,0xfb,0xff,0x51,0x71,0x1e,0xe2,0xb9,0x28,0xca,0x90,0x52,0x72,0x45,0xc7,0xa2,0xf3,0x63,0xc9,0xb9,0x65,0x61,0x28,0x10,0x9e,0x67,0xe7,0x42,0xc2,0x82,0x88,0xe6,0x35,0xce,0xe9,0xd5,0xbd,0xea,0xcd,0x11,0xb9,0xca,0xc3,0xf1,0x45,0xe3,0x3f,0x02,0xf4,0x33,0xfb,0x25,0xa5,0x15,0xf3,0xa3,0xaf,0xb7,0x05,0xac,0xe7,0xad,0x15 },
{ 0x67,0xad,0x62,0x0b,0x4c,0xb1,0x24,0x4f,0xc5,0xde,0xa7,0x6e,0x2f,0x9a,0xac,0x32,0xb4,0xeb,0x00,0xcf,0x65,0xd6,0x07,0x36,0x58,0xb9,0xe0,0x98,0x3b,0x24,0x91,0x98,0x2e,0x69,0x32,0xdd,0x12,0x03,0xa7,0x13,0xc3,0x16,0xa6,0xa1,0xf4,0xfa,0x20,0x8d,0xf2,0x51,0x94,0x1b,0x38,0x75,0x4d,0x83,0xb1,0x93,0xf5,0xbc,0xd5,0x1b,0xde,0xcd },
{ 0x89,0xc5,0xa8,0xb7,0xf9,0x66,0xd6,0xc0,0xa1,0x70,0xd7,0x2c,0xe8,0xd1,0x87,0xbc,0x61,0x66,0x3d,0xff,0xa6,0x24,0xc3,0xa8,0x09,0x98,0xb8,0x53,0x66,0xfe,0x89,0x18,0xd2,0x6f,0xe7,0x9f,0xf8,0xb3,0xfa,0xd1,0xa7,0x41,0x6c,0x9a,0x70,0x15,0xaf,0x92,0xc6,0x21,0x5c,0x30,0xc3,0xa7,0xe8,0x52,0xb8,0x37,0x2b,0x1a,0xf7,0xfb,0x4d,0x4d },
{ 0xa7,0x85,0x62,0xa9,0xaf,0xe5,0xa9,0x4d,0xc2,0xeb,0x33,0xb6,0x82,0xa2,0xcc,0x16,0xc8,0xd5,0xdf,0xc2,0xc7,0xf9,0x13,0x2d,0xe4,0x13,0x12,0x56,0x98,0x70,0xbb,0x59,0x69,0x1f,0x3f,0x60,0x3a,0x1d,0xf5,0x4c,0x4d,0xa7,0x9d,0xd5,0x76,0xa3,0x5e,0x01,0x94,0x12,0x07,0x23,0x23,0x5d,0xfd,0xb8,0x81,0xf9,0x3c,0x5f,0xdf,0x6b,0xef,0x03 },
{ 0x49,0xd0,0xae,0x45,0x48,0xc5,0x27,0x8f,0x6e,0xc0,0xd3,0xd5,0x1e,0x9f,0xde,0x18,0xde,0xa9,0xf2,0xc0,0x3a,0xaa,0x0b,0x33,0x77,0x5d,0xd0,0x2a,0x1a,0x4a,0xd5,0x8c,0xcc,0xd6,0xd2,0x4b,0x1e,0x6b,0xe1,0x89,0xee,0x7f,0x40,0x34,0x42,0x42,0x97,0x1d,0x23,0x98,0xcd,0xdb,0xfc,0x79,0x9f,0x08,0x8d,0x1e,0x49,0x6d,0x8e,0x03,0x2a,0x54 },
{ 0x91,0x84,0x6f,0x34,0x40,0xbf,0x88,0xa1,0xfd,0x08,0x99,0xe2,0x55,0x44,0xc6,0x62,0xed,0xbc,0xf7,0xad,0xfd,0xb4,0x43,0x18,0x5e,0x3b,0x0b,0xed,0xfc,0x20,0x4c,0x95,0xd9,0x74,0x9b,0xc9,0x97,0x20,0xa3,0x3a,0xf6,0x5d,0xe7,0x00,0x1e,0x39,0x0d,0xdd,0xb7,0xd8,0x6d,0x1d,0x82,0x54,0x54,0x28,0xc7,0xd5,0x5f,0x81,0xb7,0x1d,0x50,0xf5 },
{ 0x90,0x15,0x27,0x00,0x50,0xde,0x7f,0x2e,0x1c,0x88,0x79,0xb8,0xc5,0x2d,0x58,0x92,0x99,0x4e,0x1c,0xa0,0xf7,0xe3,0x9d,0x5c,0xdb,0xc4,0x8e,0x86,0x86,0x3c,0xc2,0x55,0xb7,0x88,0xd3,0x9b,0x06,0x30,0xad,0x86,0x2d,0xd6,0xfd,0x42,0x67,0xbc,0x19,0x7f,0xd4,0x94,0x9a,0x4d,0x4c,0x84,0x9b,0xd9,0x4f,0x13,0x06,0xeb,0x2b,0xd7,0xa7,0x53 },
{ 0xb6,0x01,0xdc,0x08,0xfa,0x7b,0xc0,0xea,0x7c,0x6b,0xc1,0x36,0x99,0xe7,0x31,0xbf,0xd3,0x00,0xf3,0x34,0x20,0xbc,0xfc,0xd6,0x33,0x96,0x4a,0xef,0x94,0xde,0x95,0x23,0xd1,0xd7,0xf4,0x3c,0x21,0xe6,0xca,0xea,0x5f,0x8b,0x40,0x3a,0x07,0x0f,0x24,0x7a,0x6a,0x81,0x81,0x29,0xf0,0x6d,0x37,0xd8,0xc7,0xb6,0x19,0x5a,0x71,0x59,0xbd,0xcd },
{ 0xc8,0x09,0x17,0xc7,0xf2,0x99,0x6e,0xe4,0xcc,0x05,0x0d,0x3a,0x08,0x30,0xd6,0xd9,0xf4,0x01,0x28,0xfc,0x5a,0xcf,0xee,0x64,0x90,0xde,0x97,0xb7,0xe4,0x52,0x92,0x6a,0xe6,0x09,0xec,0xc8,0xc1,0xdb,0xa0,0x8b,0x24,0x15,0xd1,0x74,0xcd,0xb7,0x65,0xce,0x75,0x82,0xe8,0x63,0x32,0x49,0x06,0xf3,0x66,0x20,0x71,0x3f,0xcb,0x94,0x63,0x24 },
{ 0xff,0xea,0x49,0x4c,0x03,0xe7,0xf3,0x97,0x63,0x3a,0x57,0xd3,0x0b,0x5b,0x5f,0x1b,0x1a,0x35,0x58,0x9d,0x71,0x81,0xb5,0x5b,0x00,0x7c,0x3b,0x55,0xd8,0xad,0x31,0x01,0x04,0x77,0xdd,0x7c,0x3a,0x53,0x26,0xde,0x84,0x2c,0x83,0xc2,0xd0,0x08,0xfd,0x64,0x01,0x82,0x66,0x3c,0xa4,0xb5,0x1b,0xd0,0x6d,0xf7,0x4f,0x4e,0x4f,0x4a,0xb5,0xa9 },
{ 0x59,0xca,0x1f,0xd4,0xc8,0xfb,0xbd,0xfc,0xc8,0x26,0xf2,0x6f,0xd5,0x51,0xaa,0xab,0xe7,0x8b,0xf2,0x5b,0x79,0x4a,0x47,0x02,0x84,0xf7,0xe3,0x4b,0xac,0x1f,0x8f,0x3a,0xb5,0xdd,0x8d,0x59,0x32,0xb8,0x96,0x29,0x3d,0x32,0x54,0x89,0x73,0xd3,0x88,0xf9,0x6a,0x2a,0xe7,0x0d,0x3f,0x83,0x9f,0xb1,0x7c,0xcb,0xb6,0x88,0x5d,0xc6,0x5a,0x18 },
{ 0x5f,0xb1,0x18,0x7b,0x28,0x02,0xa8,0xa4,0x3f,0xba,0x97,0x96,0x87,0x9b,0x21,0x8d,0xb7,0x95,0x6d,0x9b,0x90,0xd3,0xe2,0xcd,0x75,0x93,0x1f,0xc0,0xe8,0x2b,0xda,0x7e,0xcd,0x2e,0x7a,0xce,0xa4,0x0a,0xab,0x9a,0x80,0xea,0x03,0x08,0x12,0xbe,0x61,0x20,0x4e,0xcd,0xd7,0x77,0x26,0xac,0x19,0xf1,0xd3,0xb9,0xe8,0x11,0xbe,0x6a,0x15,0x9a },
{ 0xaf,0x3a,0xd9,0x3d,0x1c,0x6e,0x1d,0xa1,0x0b,0xd0,0x19,0x05,0x9c,0xb1,0x44,0xf3,0xdd,0x36,0xde,0x60,0x27,0x8f,0xb5,0x96,0x9e,0x02,0x5d,0xeb,0x30,0x8c,0x25,0x8b,0xfa,0xb3,0xea,0x05,0x7e,0xaf,0x86,0xfb,0x97,0x8a,0xa0,0xde,0x80,0x1e,0xff,0xdf,0x09,0xd1,0x82,0xd0,0xf1,0x6a,0x14,0x96,0x6f,0xe0,0x5f,0x6c,0xba,0x75,0x12,0x6d },
{ 0xb0,0x4c,0xa0,0xa1,0x02,0xd2,0xb7,0xc4,0x1e,0x0b,0x0c,0x95,0x81,0x77,0x4b,0xb1,0xe7,0x40,0xd4,0x74,0x1d,0xae,0xe3,0xc1,0x00,0x6d,0x7c,0x39,0xf8,0xf3,0xf2,0xdd,0x0b,0x74,0xfb,0x26,0xe3,0x03,0x30,0x5f,0x90,0xd8,0x46,0x50,0xa6,0x2d,0xe4,0x25,0x08,0x1e,0x0f,0x85,0x71,0xe5,0x3f,0xa6,0xe1,0x8a,0x41,0x16,0xe9,0xa2,0x6e,0xcd },
{ 0xe5,0x0e,0x51,0xff,0x5f,0xf0,0xb2,0xd5,0xc3,0x33,0x25,0xac,0x3b,0x60,0x60,0xfd,0x49,0x63,0x7a,0x8f,0x75,0x7d,0x86,0x68,0xf2,0xf5,0xda,0xe8,0xf8,0xdb,0x6d,0xd5,0xeb,0xae,0x60,0xbd,0xd5,0x3a,0x54,0x22,0x1d,0x34,0x25,0x75,0xe9,0x2d,0x4b,0x93,0xad,0xf8,0x81,0xfc,0x67,0x2e,0x64,0x46,0x77,0x77,0x12,0x96,0x9f,0x25,0x5d,0x70 },
{ 0x07,0xa5,0x03,0x43,0xfa,0x01,0x45,0x78,0x83,0xcc,0x6c,0xa3,0xf3,0x77,0xb8,0xfa,0xea,0x61,0x1f,0x40,0xa7,0x3f,0x04,0xd3,0x5e,0x74,0xc0,0x23,0xf3,0xb2,0xc4,0xb2,0x0a,0xc3,0x90,0x76,0xff,0x2b,0x70,0x7c,0x34,0xc7,0x75,0xc1,0xb0,0xa3,0x92,0xcc,0x6f,0xc1,0x23,0x13,0x8e,0x28,0xa0,0x53,0x96,0xd6,0x62,0xb1,0xbf,0x39,0x69,0xb9 },
{ 0x3a,0x29,0x10,0x0f,0x3a,0xa9,0x80,0x3d,0x4e,0x70,0xe2,0x95,0xb5,0xa4,0x54,0xa0,0x05,0x07,0xb3,0x6e,0x29,0x26,0x97,0x2b,0xcf,0x48,0x47,0x98,0x9e,0xfd,0xc2,0x18,0x18,0x35,0x75,0x63,0x77,0xd9,0xd9,0xe2,0x6f,0x3b,0x86,0x28,0xe6,0xd0,0xb8,0xea,0x80,0x74,0xb3,0x7e,0x7f,0x94,0xa3,0x66,0xb9,0x01,0xfc,0x56,0xb3,0x5d,0xa6,0xb1 },
{ 0x7d,0x84,0x30,0x95,0x42,0x6c,0xa7,0x50,0x09,0x3d,0x0e,0x36,0x65,0x27,0x99,0x6c,0x01,0x9c,0x6f,0x43,0x8f,0x86,0x3b,0xad,0x8e,0xfc,0x01,0x4a,0x6b,0xc2,0xa3,0xba,0x3c,0xac,0x8d,0x80,0xe5,0x0c,0xf7,0x05,0x39,0x86,0x6d,0x9a,0x78,0x8b,0xd0,0xbc,0x76,0xc5,0x6f,0xf6,0x9f,0x6c,0xd3,0x11,0x7a,0x5a,0x53,0x4d,0x37,0x4e,0x77,0x1d },
{ 0xb2,0xb9,0x73,0x92,0x67,0xe5,0x49,0xf2,0x5a,0xdd,0x18,0xff,0x08,0x0e,0x0b,0x2e,0xa6,0x2b,0x35,0xf2,0x43,0x00,0x47,0x62,0x09,0xb2,0x45,0x09,0xb3,0x9c,0x71,0xe6,0x56,0xfa,0x9d,0x57,0xcd,0x81,0x7f,0x85,0xba,0xae,0x6e,0xbc,0xf6,0xc2,0x3c,0xb3,0x81,0x5e,0xf7,0x7e,0xfc,0xdc,0x9a,0x80,0x05,0x83,0x26,0xe4,0x34,0x79,0xf1,0x4d },
{ 0xb6,0xf7,0x17,0x92,0x54,0x7b,0x5a,0x46,0x34,0x00,0x4b,0x44,0x45,0xed,0x64,0xa3,0x0a,0x34,0x08,0x08,0x25,0x6a,0x78,0x9c,0xfd,0xa2,0x08,0x41,0x9d,0xb2,0xda,0xcb,0x1c,0x59,0x03,0x74,0xd8,0x2c,0x4e,0x28,0x0c,0xfc,0xe8,0x4b,0x76,0xe2,0x09,0xc0,0xee,0x5b,0xd7,0xba,0x28,0x10,0x62,0x28,0xf9,0x70,0xbf,0xe8,0x13,0xff,0x94,0x03 },
{ 0x78,0xee,0xa9,0xec,0x3a,0x4f,0x58,0xfc,0xb4,0x88,0xb2,0xc6,0x5d,0x16,0xdd,0xc6,0x0a,0xa0,0x6e,0x6a,0x65,0xd6,0x4f,0x8a,0x63,0x78,0xf5,0x8e,0x62,0xfb,0x91,0xec,0x47,0x1a,0x9f,0xa2,0xab,0x43,0x38,0xd7,0x5a,0x04,0x22,0x0d,0x1a,0xfe,0x07,0xc4,0x98,0x22,0xea,0x5d,0xe1,0x86,0x2b,0x33,0xb9,0xa2,0xbf,0x2f,0x48,0x39,0x35,0xab },
{ 0x4f,0x22,0x0a,0x92,0x74,0xce,0x6f,0x17,0x68,0xa5,0x4a,0x11,0xec,0x32,0x84,0x58,0xde,0x89,0x67,0xb1,0xd1,0x59,0xd7,0x49,0xdd,0x44,0x98,0xab,0x9f,0xe8,0xcd,0x6f,0x64,0x62,0x00,0x0c,0xeb,0x70,0x34,0x41,0xc3,0x19,0x76,0x93,0x55,0x3e,0xde,0x19,0x6a,0xbc,0xa3,0xc5,0xd8,0xda,0x5a,0x91,0x58,0x32,0x4e,0xa4,0x88,0xbb,0x39,0x0c },
{ 0x55,0x6e,0xcb,0x7b,0xc2,0x5a,0x47,0x5a,0xb7,0xdb,0xa7,0xfa,0x6f,0x8b,0xcc,0x35,0xe1,0x37,0x33,0x88,0x73,0x16,0x90,0xff,0x00,0xe6,0xcd,0x54,0x2c,0xc9,0x9d,0xbc,0x6a,0x0f,0x1f,0x48,0x4b,0xcc,0x98,0x56,0x91,0x67,0x73,0x7d,0x8a,0x02,0x5e,0xbb,0x87,0xbe,0x2f,0xec,0x0a,0x0f,0xad,0x57,0x4e,0x5f,0x5b,0x5e,0xfa,0x0c,0x0a,0x66 },
{ 0x1e,0x2b,0xb5,0x07,0x9a,0x59,0x5f,0x90,0xdd,0x21,0xaf,0xb3,0x27,0x38,0x40,0xb6,0x15,0x33,0x1b,0x08,0xea,0xb1,0x50,0xb0,0xad,0x76,0xb5,0xa7,0x62,0x85,0x7c,0x5a,0x85,0x76,0xc7,0x50,0x6b,0xe2,0xb4,0xd9,0xdd,0x42,0x7c,0x66,0x33,0xf4,0xd0,0x85,0x0d,0x68,0xae,0x1f,0xc4,0x8c,0x8b,0x85,0x20,0x3f,0x37,0x69,0x7e,0x79,0x2a,0x17 },
{ 0xa0,0xc5,0x33,0xb3,0x77,0x1e,0xfa,0xa6,0x33,0xa4,0x67,0xa3,0xd2,0xd6,0xf9,0x9b,0xb8,0x89,0x28,0x4e,0x3b,0x68,0x2e,0x6d,0xec,0x22,0x34,0xbe,0x0a,0x35,0x38,0x79,0xe7,0xd6,0xd5,0x7a,0x1d,0xdc,0x45,0x35,0xaf,0x7c,0xa7,0xd9,0x31,0x83,0x30,0x14,0xa6,0x4c,0x8f,0x85,0x48,0x5c,0xb3,0x4e,0x76,0x4d,0x3e,0x6e,0xb2,0xaa,0xa6,0x5f },
{ 0x2c,0xcf,0xc4,0xeb,0x14,0xe8,0x3e,0xba,0x2f,0x9d,0xc2,0xba,0xa9,0x2f,0xb2,0x02,0x94,0xd1,0xc5,0x4d,0xce,0xb6,0x98,0x41,0x30,0x57,0x52,0x87,0xe0,0xd2,0x2c,0x21,0xf4,0x81,0x9d,0x74,0xfa,0xc6,0xeb,0xad,0x0b,0xdb,0xbe,0x49,0x10,0x4b,0x5b,0x91,0xd9,0x45,0xa2,0x6c,0x22,0x7e,0x3a,0x67,0x25,0xdb,0x3e,0xf1,0xfd,0xaf,0x5c,0x3a },
{ 0xc7,0x3d,0x44,0xb5,0x7c,0x00,0x68,0x48,0xa1,0x51,0xc0,0x8f,0xe2,0x4b,0x6a,0x62,0x53,0xe9,0xf6,0xe9,0xe3,0x3e,0xed,0xb5,0x1c,0xaf,0xdc,0x87,0x9f,0xfd,0x9d,0x2a,0xc2,0xec,0x47,0x24,0x1d,0xc5,0xbe,0xce,0xbf,0x29,0xa7,0x0e,0x62,0xd6,0xbe,0xb8,0x20,0x71,0xb6,0xcf,0x81,0x1d,0x1a,0x20,0x85,0xb8,0x9e,0xe7,0x9e,0xce,0x97,0x7b },
{ 0x55,0x88,0x3a,0xad,0x16,0x87,0x02,0x67,0x55,0xcc,0x13,0xa0,0xf1,0xc9,0xb9,0x39,0xd7,0x20,0x90,0xc9,0xe6,0x4c,0x8e,0x69,0x72,0x09,0xca,0xdf,0x1d,0xda,0x15,0xdc,0x79,0xfa,0x2f,0x50,0x64,0xf3,0x70,0x01,0x71,0x27,0x61,0xdd,0xa6,0xfa,0x65,0x3b,0x4f,0xfc,0xb4,0x4e,0x0a,0xfa,0x7c,0xc0,0x25,0x08,0x1e,0xd5,0x22,0xda,0x1d,0xa3 },
{ 0x26,0x79,0xe9,0x30,0x72,0x2d,0x55,0xbc,0x75,0x2f,0x27,0x83,0x1b,0x23,0x33,0x22,0x7b,0x5f,0x36,0x30,0xde,0xe8,0xaa,0xc0,0x6c,0xc6,0xd0,0xaa,0x11,0x0b,0xbd,0x77,0xa3,0x24,0x44,0x7f,0xac,0x14,0x25,0xe0,0x81,0xe4,0xef,0x64,0x0a,0xf1,0x11,0x9e,0x10,0x46,0x7d,0xf2,0x0c,0xb9,0xb8,0x90,0x6a,0x9e,0x09,0xff,0x0d,0xa6,0x37,0x6e },
{ 0x60,0x8c,0x48,0xed,0x1a,0x40,0xae,0x02,0xfe,0x03,0xc4,0x2b,0x68,0x99,0x4a,0x80,0x64,0x42,0x73,0x09,0x50,0x55,0x2f,0xbc,0xfd,0xe2,0x62,0x29,0x38,0x0f,0x25,0x2b,0xd1,0x24,0xfa,0x39,0x4f,0x0d,0x29,0x42,0x97,0x1e,0xb5,0xbd,0x63,0xa7,0x44,0xf0,0xa2,0x02,0xd7,0x01,0xfa,0xa5,0xcb,0x31,0xc3,0x88,0x9f,0x2f,0x6d,0x4f,0x7a,0xa5 },
{ 0x76,0x2f,0x05,0x08,0x23,0x1f,0xed,0x8d,0x9a,0x9d,0x31,0x81,0xb2,0x5a,0x18,0xcb,0x38,0x81,0x5a,0xec,0x46,0xde,0x8f,0xa1,0xc0,0x93,0xa7,0xaa,0x81,0x9d,0xa1,0x5d,0xa4,0xb8,0x64,0xa6,0x8c,0xa3,0x05,0x40,0x3a,0x95,0x39,0x1d,0xb7,0xae,0xe0,0xe8,0xcb,0xba,0xe3,0x52,0xaf,0xca,0x46,0xa6,0x5c,0x06,0x33,0x03,0xf8,0xfe,0x05,0x4c },
{ 0x4a,0x96,0xfa,0x08,0x5f,0x49,0xe0,0x91,0xfb,0xfd,0x34,0x1a,0x02,0x0d,0x57,0x2d,0x35,0x3c,0x65,0x3f,0x6a,0x29,0x2e,0x1d,0xa3,0x59,0xaf,0x98,0x17,0x11,0x41,0xb5,0xe0,0x6f,0x1a,0xd7,0x98,0xfc,0xc9,0xb8,0x5c,0xd6,0xaa,0x6a,0xc5,0x6b,0x9e,0x81,0x29,0x2e,0xfa,0x8b,0x54,0xd0,0xb6,0x4d,0xee,0x3d,0x87,0xde,0xf1,0x98,0x50,0x1f },
{ 0x8f,0x05,0x23,0xd3,0xa3,0x60,0xae,0xb3,0xa3,0xf5,0x37,0x7b,0xbd,0xd7,0xa4,0x35,0x1d,0x7a,0x98,0x57,0x75,0x86,0x90,0x45,0xf1,0x06,0xb6,0xa0,0x00,0x28,0x90,0xe8,0xae,0x50,0x75,0x1a,0x65,0x5f,0xaa,0x7d,0x1b,0x3b,0x4c,0x62,0x6c,0x20,0xa2,0x4b,0x02,0xe7,0x39,0x07,0x42,0x9c,0x9e,0xbb,0x64,0xfd,0x00,0xce,0xc6,0x10,0xff,0x9c },
{ 0xb3,0xe4,0xeb,0xbe,0xe7,0x75,0x23,0x75,0x9c,0x97,0x2d,0x86,0x2d,0xa8,0x07,0x6c,0x87,0x27,0x63,0x95,0x1b,0x3c,0xd3,0xb6,0xa3,0x57,0xdc,0xa2,0x89,0x2e,0xde,0x27,0x4e,0xc2,0x3a,0x35,0x52,0x3f,0xff,0x7d,0x61,0xfd,0x14,0xd6,0xaf,0x0e,0x69,0xe2,0xc5,0xf7,0xdd,0xe2,0x03,0xdc,0x62,0x1a,0xab,0xa0,0x1f,0x1c,0x08,0x30,0x42,0x61 },
{ 0xa8,0xc6,0xb3,0x81,0x70,0x4d,0xee,0x6d,0x2d,0x4c,0xef,0x72,0xdd,0xb2,0x5f,0x46,0x18,0x24,0x0e,0xd2,0x70,0x77,0x85,0xec,0x01,0xcc,0xac,0xd7,0xb3,0x94,0x4b,0x36,0xfb,0x66,0x69,0x3f,0x7e,0x8d,0xcb,0x5a,0x2b,0x34,0x4a,0x68,0xb2,0x89,0x7a,0xdf,0x5d,0x8e,0x32,0xca,0xd0,0x4b,0xfb,0xfb,0xd8,0x28,0x8c,0xf6,0x4a,0x2d,0x69,0xf3 },
{ 0x38,0x80,0xbd,0x00,0xc0,0xab,0xb7,0x3d,0x39,0x61,0x50,0x91,0x9b,0x54,0xa0,0xfc,0x19,0xc4,0x95,0xe5,0xe6,0xf7,0xeb,0x40,0xf5,0x8a,0x17,0x1c,0x4c,0x59,0xbe,0x26,0x47,0xfc,0x48,0xc8,0xdd,0x78,0xad,0xd2,0x73,0x3b,0xb3,0x6a,0x13,0x05,0xe9,0x4f,0xc2,0x7d,0xd6,0xe5,0x98,0x00,0xce,0x33,0xf0,0xbd,0xdd,0x62,0x79,0x44,0x19,0x24 },
{ 0xd7,0xb4,0xb5,0xa7,0xbb,0x34,0x1a,0xea,0xef,0x41,0x8e,0xa9,0x00,0x7b,0xb6,0xe0,0x02,0x23,0x68,0xf0,0xd6,0x86,0xf6,0xb4,0x83,0xcd,0xdd,0xa6,0x82,0xce,0x21,0x24,0x32,0xb1,0x04,0x2f,0x29,0xce,0x85,0x12,0x46,0xb2,0x66,0xa7,0x38,0xf1,0x83,0x86,0x4a,0xb5,0x36,0x9d,0xbf,0x4a,0x9c,0xc1,0xcc,0xfe,0xc9,0xfa,0x07,0x2e,0x74,0x52 },
{ 0x2b,0x02,0xa6,0x7c,0xd3,0x32,0xae,0x04,0x69,0x91,0x0d,0xd9,0x51,0xb8,0xee,0x6a,0x65,0x62,0x36,0xe1,0x57,0x79,0x1b,0x96,0xd4,0x03,0x00,0x24,0x81,0x41,0xb8,0x31,0xb5,0xdf,0x14,0xb4,0x5c,0xbb,0x9b,0xa7,0x70,0xcd,0xf7,0xd6,0x6f,0xcd,0x3d,0xfb,0x52,0x90,0x3a,0x48,0xe6,0x8d,0x4a,0x72,0x4e,0x4d,0x51,0x4a,0x8a,0x5b,0x8b,0x90 },
{ 0x96,0xa6,0x98,0x3f,0xcd,0xd8,0x9b,0xa8,0xe9,0x98,0x85,0xee,0xf2,0x1c,0x3a,0x19,0xfd,0xfd,0x03,0x15,0xac,0xf5,0xa0,0x7e,0x60,0xa5,0x3c,0xb0,0xe0,0x65,0xa5,0x9a,0x99,0x0e,0x85,0x19,0xb9,0x7b,0x83,0x69,0xc7,0x3c,0x55,0x28,0xc0,0xe1,0x28,0x69,0xef,0xda,0xde,0xea,0x55,0x4a,0x15,0x13,0x08,0xe3,0x53,0x20,0xb0,0xdf,0x7c,0x82 },
{ 0x10,0x52,0x05,0x28,0x6f,0xb4,0xff,0x92,0x8e,0xf7,0x9a,0x84,0xb2,0x51,0xf1,0xe2,0xa5,0xcf,0x6c,0x30,0x11,0x20,0xc5,0x61,0x3c,0xca,0xc5,0x6e,0xa7,0x3f,0x96,0xb0,0xa9,0xc9,0xef,0xdd,0x84,0xab,0xd3,0x8e,0x40,0xa1,0x75,0xbb,0x72,0xfd,0x97,0xee,0x4e,0xe7,0x9f,0x58,0x92,0xdf,0x5b,0xa6,0x7c,0x8b,0x8f,0x56,0xdc,0x4d,0x5f,0x94 },
{ 0xf8,0xee,0xe6,0x48,0xf1,0x89,0xb9,0x67,0xbe,0x1a,0x9b,0xf7,0x10,0xa7,0xdb,0xdd,0x2b,0x82,0x67,0x64,0xbf,0x75,0x62,0xd5,0xe9,0xdd,0xec,0xd5,0xcc,0xf0,0x1c,0xce,0xf9,0x64,0xb1,0xb4,0xb7,0x58,0x85,0x04,0x9d,0xb5,0xc7,0x5f,0x79,0xd1,0xbc,0xe3,0xc5,0xe7,0x2a,0xc4,0x6d,0x00,0x78,0xa9,0xd7,0x4d,0x73,0x56,0x81,0xd8,0xd9,0x56 },
{ 0x8e,0x7c,0x26,0x33,0xf7,0xab,0xd6,0x67,0xec,0x7a,0xf0,0xaa,0xec,0xf4,0x88,0x01,0xcc,0x9e,0xdc,0x0b,0xd5,0xcf,0x4a,0x65,0x62,0x91,0x40,0xa3,0x74,0xa5,0x15,0xd6,0x87,0x33,0x66,0x6b,0x5a,0x7f,0x7e,0xad,0x88,0xd7,0x32,0x11,0xe4,0x6c,0x88,0x1b,0xb3,0x55,0xd1,0x40,0xf8,0x62,0x3a,0x92,0x0b,0xa5,0xa9,0xc3,0x3f,0xfb,0x07,0x3f },
{ 0x61,0xf8,0xf2,0xcd,0x4d,0x74,0x79,0xb1,0x5d,0x5a,0x95,0x86,0xa5,0xfb,0x6e,0xa2,0xbc,0xf5,0x0a,0x39,0x66,0xcb,0x4c,0x52,0x82,0x7d,0x8f,0xc5,0x9b,0x82,0x71,0xcc,0x1c,0x21,0xaa,0xb3,0x89,0x17,0x98,0x77,0x57,0xbd,0x28,0xb4,0x49,0xa4,0xb1,0xc8,0xdd,0xbc,0x23,0x87,0x5a,0xb8,0xce,0xd2,0x9a,0xae,0xb0,0xc9,0x64,0x5a,0x4b,0x91 },
{ 0xba,0x29,0xe6,0x74,0x2a,0xd9,0xa4,0xc0,0xb8,0x7f,0x48,0x49,0xad,0xfc,0xf3,0x0e,0xbd,0x9b,0x8f,0x97,0x66,0xb1,0x8e,0xda,0x68,0xa2,0x7a,0xf5,0x4d,0x7f,0xe8,0xf5,0xfe,0x23,0xbb,0x77,0xa8,0x95,0xf6,0xc4,0xcd,0xa4,0xdc,0x40,0x22,0x75,0x4f,0xd6,0x31,0x13,0xd4,0x35,0xce,0x20,0xb2,0x15,0x00,0x77,0x0d,0xb3,0xc7,0x5d,0x23,0x6d },
{ 0x89,0x05,0xe1,0xcd,0xcc,0xbb,0x86,0xf6,0x8f,0xac,0x39,0x71,0x90,0x53,0x51,0x17,0xe2,0xb9,0xa3,0xb3,0xd1,0x1a,0x21,0xff,0x46,0x04,0xaf,0xf7,0x0b,0xac,0x05,0xe2,0x8e,0x60,0x1f,0xf0,0x16,0x8c,0x07,0x08,0x07,0x89,0x52,0x4b,0x0a,0x9d,0xed,0x40,0x6a,0x40,0x2e,0x0d,0x42,0xf8,0x50,0x9e,0xe3,0x6d,0x32,0x79,0xf6,0xb9,0xf3,0xdc },
{ 0x54,0x16,0xe5,0x39,0xf7,0x8a,0x10,0xe1,0x41,0x8e,0x8a,0xb1,0x45,0x19,0x36,0xe7,0x2d,0xb5,0x05,0x54,0x74,0x42,0x81,0x0f,0xa9,0xe0,0xa8,0xf8,0x2f,0x5d,0xbd,0x4e,0x69,0xa8,0xa9,0xc8,0x7e,0xe6,0xce,0x20,0xdf,0x62,0x47,0x50,0x57,0xcd,0xf5,0xda,0xda,0xc1,0x62,0xe8,0x22,0x87,0x4b,0xc3,0x6b,0x96,0x5f,0xf5,0x44,0x03,0x4c,0x79 },
{ 0x8a,0xb2,0x5a,0xaa,0x65,0x03,0x13,0x81,0x53,0xd4,0x01,0x6c,0xa2,0xb6,0xe9,0x75,0x47,0xd7,0x2f,0x34,0xa3,0x47,0x70,0x43,0x95,0xdb,0x9d,0xf9,0x22,0x23,0xf3,0xc1,0xe1,0xd2,0x5a,0x6b,0xcc,0x0f,0xa8,0x86,0x2c,0xc6,0xae,0xaa,0xbc,0x1f,0x93,0x5a,0xbb,0xa7,0xc0,0x91,0x2c,0x25,0x4c,0x3f,0xdd,0x4f,0x4b,0xec,0x80,0x7e,0x32,0xd0 },
{ 0x4f,0xe1,0x45,0xba,0x34,0xb9,0x94,0xa2,0x03,0x28,0xd1,0x71,0x16,0xb5,0xe4,0x35,0x9e,0x19,0xf2,0x3c,0x66,0x45,0xfc,0x0f,0x87,0x44,0x55,0x02,0xcd,0xc5,0x45,0x85,0x03,0x65,0x36,0xf4,0x28,0x67,0xe6,0x07,0x95,0x1d,0x60,0xca,0x33,0x57,0x9a,0x77,0x47,0xbe,0x97,0x87,0x84,0x13,0x53,0x88,0xee,0x60,0x30,0x5f,0x33,0x47,0x10,0x95 },
{ 0x92,0x45,0xec,0xca,0x72,0xb4,0x4c,0x08,0x46,0xb0,0x9e,0xeb,0x57,0x24,0xf8,0xa7,0x75,0x0b,0x34,0xfe,0x24,0x4f,0x89,0x2b,0x48,0x77,0x28,0xdf,0x23,0x0f,0x1c,0xc5,0x47,0x72,0x7e,0x51,0xb8,0x3b,0xcd,0xd5,0x58,0xf8,0xdb,0x6d,0x29,0xdc,0xed,0xde,0x76,0x52,0x7b,0xd5,0xf0,0x4f,0x1c,0x1e,0x4c,0x98,0x79,0x4a,0xe3,0xce,0x04,0xeb },
{ 0xc8,0x77,0x60,0xfb,0x4f,0x70,0xc2,0x42,0x8f,0xaf,0xf9,0xd6,0x75,0x1b,0xe3,0x80,0xd4,0xf6,0xda,0xd8,0x6f,0x7d,0x49,0x1f,0x13,0x50,0x92,0x6a,0x09,0x69,0x2f,0x38,0xf9,0xc5,0xd7,0x7a,0x7a,0x24,0x43,0xea,0xe5,0x51,0x38,0x60,0x61,0x89,0x90,0xaf,0x28,0x64,0xc8,0x8a,0xcb,0x29,0x47,0x60,0xd9,0x28,0xa4,0xb9,0xad,0x48,0x5a,0x0f },
{ 0xe3,0x2d,0x1b,0x8f,0x53,0xd0,0xe6,0xdb,0x48,0xcc,0xf9,0x88,0xe5,0xf7,0x6e,0x78,0x71,0xc4,0x89,0x8f,0xe1,0xa6,0xc1,0x93,0x0b,0x5e,0x01,0x10,0xd8,0x72,0x7e,0x8c,0xe2,0xa1,0xf7,0xaa,0xe6,0xf2,0x8a,0xa3,0xa7,0xd5,0x82,0x14,0x60,0xb2,0x86,0xaa,0xd0,0x46,0x51,0x99,0x6b,0xa9,0xc0,0x69,0xef,0x39,0x96,0x8c,0x96,0xd9,0x1f,0xc5 },
{ 0x7d,0xa9,0x9a,0x15,0x3c,0x1d,0xf0,0xdc,0x17,0x94,0x7c,0x41,0xaf,0x1c,0xd9,0x05,0x3a,0xac,0xbd,0x95,0xb2,0xfa,0xef,0x2e,0x6b,0xb6,0x23,0xe8,0x1f,0xc4,0x1d,0x4c,0x25,0xca,0xc6,0xe3,0xac,0x1e,0x1c,0x02,0x60,0xfb,0x3c,0xdf,0x7e,0x83,0x25,0x3f,0x5d,0xf0,0x15,0xe6,0x99,0x1a,0x38,0xc9,0x1f,0x61,0xd9,0x3b,0x5e,0x71,0xb4,0x18 },
{ 0xf6,0xfb,0xc8,0x54,0xf3,0xdb,0x45,0x9e,0x8f,0x8d,0xfa,0x4c,0x95,0x9f,0xb2,0x03,0x75,0xbe,0x44,0x37,0x50,0xda,0x64,0xa8,0xc8,0xd4,0x6b,0x9b,0x35,0xa3,0x86,0xa2,0xd3,0x37,0x3a,0x55,0x91,0xbe,0xe9,0x4c,0x34,0x2c,0x5a,0x4e,0x26,0x50,0xeb,0x8f,0x1e,0x99,0xcf,0xc1,0xfb,0x81,0x06,0xf2,0xbc,0x86,0x91,0xdc,0x4a,0x41,0x6a,0xd2 },
{ 0x5f,0xff,0x74,0xef,0x5b,0x61,0x85,0xc1,0x22,0x54,0x03,0xc2,0x61,0x31,0x71,0x99,0xe2,0x59,0x94,0x45,0xcd,0x75,0x7b,0xf9,0xa8,0x66,0x37,0xc6,0xe5,0x4f,0x9f,0x75,0x8a,0xbe,0xfa,0x4c,0x04,0xb6,0x23,0x42,0xcf,0x96,0x41,0x08,0xdc,0x39,0xc0,0x50,0x22,0xf9,0x35,0xd9,0x3c,0xb1,0x50,0x70,0xa8,0x3c,0xf1,0xef,0x4e,0xa5,0x68,0x82 },
{ 0xd0,0xbd,0xa4,0xd9,0xc2,0xf2,0x8c,0xbb,0xbc,0x56,0x27,0x3d,0xd4,0xe9,0xc5,0x92,0x6c,0x46,0x17,0x3e,0xb8,0x2d,0x5e,0xf0,0xa2,0x5e,0x61,0x12,0xf9,0xe1,0x31,0x34,0x5a,0x38,0xf2,0x81,0x30,0x94,0x86,0x8d,0xba,0xd5,0x64,0xe9,0x00,0x54,0x46,0x03,0x30,0x8b,0xb9,0x63,0x0a,0x86,0xea,0x42,0x51,0xa1,0xaa,0xbe,0x27,0x37,0x27,0xf4 },
{ 0xe8,0xd9,0xbe,0x9c,0x76,0xcd,0x1b,0xa1,0xcd,0x46,0xa1,0x3c,0xc7,0xa3,0x8e,0x4a,0xa3,0xa5,0x78,0xdd,0x74,0xa2,0xa4,0x4e,0x97,0xd4,0x39,0x35,0x51,0xbf,0xde,0x30,0x87,0x7d,0x47,0x92,0xfc,0x13,0xca,0xae,0xd4,0x59,0xe9,0x45,0xbc,0x17,0xe6,0x50,0xcd,0xc7,0xad,0x4f,0x48,0x18,0xd3,0x58,0xf7,0xc6,0xbd,0xe5,0x32,0xb8,0x28,0x67 },
{ 0x03,0x02,0xb5,0x91,0x38,0xce,0x7e,0xf4,0x66,0x5f,0xf7,0x54,0x4f,0xce,0x12,0xfc,0xf4,0x18,0x9f,0x72,0x66,0xab,0xea,0xd2,0x31,0x1a,0xbf,0x04,0xb5,0x82,0xa0,0x3a,0x3d,0x73,0x03,0xe6,0xd9,0x9d,0x89,0x93,0xcd,0x4e,0x1a,0x5a,0xbf,0x16,0x9a,0x89,0xf0,0xd5,0x8c,0x71,0x4a,0x38,0x0f,0x8f,0xf6,0x57,0x32,0x42,0xff,0xd9,0x90,0xfb },
{ 0x80,0x8d,0x0a,0x93,0xa4,0x21,0x22,0xb9,0x81,0xfa,0x13,0xdd,0x76,0x4a,0x93,0x91,0x84,0xb9,0xca,0x8f,0x2e,0xac,0x3b,0x7c,0x9c,0x56,0x5f,0xd8,0x11,0xa6,0x55,0x41,0xd2,0xc4,0x54,0x07,0xf5,0x81,0x58,0xa1,0x0d,0xe0,0x56,0xae,0x0e,0xdd,0x0c,0x1e,0xe8,0xa7,0x11,0x47,0x61,0xaa,0x3d,0xec,0xc1,0xe3,0x5e,0x6a,0xb9,0x92,0x33,0x40 },
{ 0x81,0x80,0x70,0xea,0x84,0x60,0x66,0x28,0x17,0xf2,0x60,0xe5,0x4c,0xd6,0x72,0x12,0x7d,0xdb,0xa8,0xe8,0xf1,0x69,0x79,0x4a,0xbd,0x7b,0xf3,0xc8,0x9a,0x5a,0xa0,0x8c,0xb1,0x1b,0x0e,0x92,0x74,0x34,0xa2,0x77,0xa0,0xf3,0x6a,0xd6,0x16,0x05,0x39,0x87,0xdd,0x5d,0xef,0x38,0x72,0x5e,0x1c,0xee,0x69,0x35,0x22,0xfd,0x7c,0x38,0x31,0x83 },
{ 0xb4,0xa2,0x63,0x6f,0xd6,0x42,0x4a,0x44,0x29,0xde,0x22,0xdc,0xe2,0x48,0x14,0x22,0xb5,0x3e,0x09,0xdb,0x17,0xb2,0xc6,0x9b,0x16,0x08,0x97,0xef,0x60,0x04,0xa4,0x9c,0xfd,0xe5,0xe3,0xc1,0x50,0x22,0xa8,0xff,0x13,0xb7,0x23,0xda,0x2f,0x3f,0x67,0x67,0xa0,0x13,0xce,0x8c,0xb1,0xf6,0xa8,0x51,0x17,0x84,0x49,0xb2,0x7f,0xf9,0x29,0x53 },
{ 0x2e,0x1a,0xad,0xf3,0x0d,0x88,0x1c,0xef,0x3c,0x94,0xea,0x4a,0xf6,0x14,0xfa,0x2f,0xe4,0xd3,0x09,0xf5,0xb4,0xa2,0xd0,0xd2,0x6c,0x46,0x2d,0x29,0x91,0x1b,0x77,0x75,0x21,0xf8,0x97,0xad,0x73,0xfb,0x77,0x14,0xf5,0x2f,0x83,0x4c,0xc1,0xd9,0x86,0x7c,0x38,0x75,0xef,0x20,0x5a,0xb8,0x9f,0x3c,0xc6,0x81,0x4a,0x1c,0xb6,0x62,0x86,0xcb },
{ 0xe8,0x6e,0xdb,0x4f,0x84,0x8f,0x04,0x0e,0xdc,0x98,0x01,0x00,0x76,0xff,0x35,0x31,0xd2,0xd1,0xb3,0xae,0x00,0x6f,0xad,0x2b,0x31,0xdc,0xc3,0x04,0x11,0xe2,0x76,0x02,0x87,0x49,0xc4,0x2d,0x47,0xdc,0x8d,0x70,0x6e,0x21,0x19,0xbc,0x59,0x3f,0x18,0x7a,0xf9,0x56,0xee,0x42,0x4c,0xd4,0x4d,0x27,0xc8,0x0b,0xb4,0x12,0x4e,0xcb,0xec,0xb1 },
{ 0x44,0x2a,0xe1,0xb9,0xc4,0x3f,0x9d,0xba,0xa9,0x55,0x7e,0x39,0xf1,0x28,0x31,0xbd,0x38,0xbb,0x61,0x33,0xb9,0xde,0xda,0x56,0x3c,0xe2,0xb0,0x7e,0x9a,0xa1,0x17,0xb2,0x26,0x8e,0xb0,0x60,0x4a,0xe9,0xe6,0xb7,0xb6,0x76,0x81,0x61,0x99,0xa2,0xd3,0xc5,0xb5,0x5a,0x6d,0x6d,0x01,0x01,0xc3,0x02,0x1e,0x91,0xb7,0x19,0x4e,0xc7,0xa3,0x41 },
{ 0x0c,0x4f,0xb8,0xbb,0x73,0x97,0x24,0x09,0xdd,0xa2,0xda,0x0e,0x8f,0xb9,0x00,0x33,0x40,0x6d,0xb1,0xc4,0x43,0x6a,0x0f,0x25,0x12,0x3b,0x40,0x71,0xb1,0x03,0x3c,0x74,0xb1,0x26,0xe6,0xd0,0x1e,0xe5,0xe8,0x0c,0xcf,0x3f,0xa7,0xa2,0x5c,0x5f,0x4d,0x14,0x69,0x67,0x66,0x68,0x4a,0x86,0x98,0x8c,0x09,0x8a,0xb4,0xc9,0x0b,0xe6,0x77,0x06 },
{ 0xf7,0x85,0x06,0x39,0x0b,0x3c,0x8f,0xaf,0x9d,0x20,0xc1,0x0e,0xd4,0x7c,0xcf,0x2e,0xb6,0x06,0xfa,0xc3,0x8f,0x50,0xa5,0x34,0x33,0xab,0x85,0x91,0x21,0x76,0xf0,0x15,0x6d,0x3f,0x65,0x3c,0xcd,0x28,0xd5,0x49,0x64,0x1e,0x3d,0xf2,0x99,0x3f,0x20,0x31,0xe9,0x1f,0x45,0x7b,0x0f,0x59,0x72,0x7d,0xcb,0xda,0x63,0xdb,0x56,0xce,0x54,0x0c },
{ 0xe6,0xae,0xce,0x52,0x48,0x62,0x5e,0x65,0x43,0x5e,0x88,0x9e,0x28,0xcc,0x6b,0xcd,0x3b,0x1e,0x5f,0x7d,0x3f,0xbd,0xec,0xff,0xf0,0x5c,0x3b,0x9c,0x04,0x69,0xa4,0xdf,0x68,0x1c,0x75,0x90,0x43,0x29,0x4d,0xa8,0xaa,0xcf,0xec,0xcb,0x43,0x20,0x3a,0x83,0x14,0x49,0xc7,0x7c,0x21,0x88,0x53,0x11,0x0c,0x80,0xf1,0xdb,0x1b,0x89,0xab,0x8e },
{ 0xa8,0xa6,0xc8,0x5e,0xbd,0x44,0xd5,0x80,0xf0,0x68,0x9a,0xa1,0xf1,0x1c,0x4e,0x40,0x05,0x1f,0x7b,0x03,0x4f,0xb6,0xcc,0x21,0x2b,0x11,0x2c,0xb0,0x20,0x66,0xc4,0x7c,0x3f,0x62,0xce,0x19,0x81,0x0d,0xe5,0x1d,0xf4,0xcf,0x39,0x06,0x59,0xe8,0xb2,0x65,0x18,0x2d,0x7a,0x26,0xef,0x76,0x34,0x3c,0xa6,0xa4,0x06,0x62,0xf3,0xf5,0x55,0x0e },
{ 0x11,0x5d,0xcb,0x65,0x67,0x93,0xaa,0xa0,0x9d,0x6c,0x1e,0x5b,0x53,0xe2,0xc4,0x75,0xa9,0x3d,0xc4,0x47,0xca,0x8a,0xfa,0x08,0x86,0xee,0x9e,0x04,0xcb,0x60,0x85,0xd6,0xf8,0x80,0x07,0x00,0x5f,0xd0,0xb7,0x7f,0x2f,0x1c,0x9e,0x00,0x54,0xba,0xe9,0x07,0x52,0x69,0x7a,0xb1,0x51,0xf2,0x47,0x30,0x60,0xd1,0x29,0x89,0x37,0x19,0xbf,0xc9 },
{ 0x4b,0x6b,0xdd,0xe8,0x0c,0xca,0x4e,0x3e,0xc3,0x94,0xd8,0xa4,0xb3,0x40,0xc6,0x81,0x79,0x40,0x0a,0x55,0x01,0x86,0xfa,0x39,0xfc,0xbd,0x3a,0x3c,0xff,0x58,0x35,0x72,0xb9,0xcc,0x92,0x52,0x23,0x3d,0x02,0xb7,0x79,0x79,0xbb,0xbc,0x42,0xc8,0x5c,0xea,0xbd,0xb4,0x55,0xa0,0xb1,0x6d,0x29,0x3f,0x16,0x2f,0x4a,0x68,0x4a,0xc1,0x46,0xb6 },
{ 0xba,0x54,0x2b,0x09,0xb3,0x68,0xee,0x5a,0xed,0xdc,0x7a,0x09,0x88,0xce,0x0a,0xeb,0x12,0xa1,0x7c,0x5d,0x79,0xb8,0x50,0x82,0xcb,0x76,0xbd,0x89,0x11,0xc5,0x21,0xd3,0x67,0x33,0x98,0xc1,0xd9,0x15,0xf3,0x54,0xba,0x50,0xe7,0x95,0x77,0xf2,0x73,0x37,0x7c,0x7a,0x13,0x38,0xef,0x30,0x55,0xc6,0x40,0xba,0x4a,0x50,0x88,0xbb,0x11,0x4c },
{ 0x6e,0xe3,0xd9,0x51,0x53,0x40,0xff,0x8f,0xf8,0xf5,0x65,0xa9,0x5d,0x0e,0x7e,0x58,0x44,0x17,0x09,0x57,0x9b,0x06,0xc9,0x57,0x46,0xd6,0xb1,0x3a,0xb8,0xfa,0x85,0x2f,0x58,0x3b,0xb2,0xed,0x18,0x5b,0x7c,0x22,0xe3,0xab,0x08,0x76,0xbb,0x01,0x1a,0xc2,0xd8,0x61,0xde,0xdf,0xac,0x98,0x35,0x23,0x47,0xe9,0xe0,0x3a,0xd7,0xe0,0xc0,0x12 },
{ 0xb0,0x74,0x89,0xfb,0x69,0x75,0x03,0x69,0x1f,0xa6,0x7d,0x9f,0x24,0xad,0x40,0xce,0xbf,0x54,0xda,0xe5,0xe3,0x97,0x81,0x98,0x8a,0x99,0x14,0xd8,0x75,0x13,0x8e,0xdb,0x2d,0x6b,0xa5,0xf6,0x89,0x32,0x4b,0xb7,0xc4,0x5a,0x5c,0x2f,0x6c,0x4c,0xea,0xf9,0x2e,0x37,0x7e,0x62,0xa9,0x0e,0x0a,0xf3,0xae,0x61,0xcb,0x91,0xcc,0x8c,0x86,0x18 },
{ 0x1e,0x8e,0x28,0xb4,0x63,0x38,0x99,0x10,0x55,0xa7,0xb9,0xec,0x1d,0xb4,0x98,0xb0,0xcb,0x37,0x03,0xef,0x6a,0x0e,0xbf,0x6b,0x71,0x89,0xdb,0x81,0x5a,0x7d,0x58,0xc5,0x1d,0x3f,0xed,0x33,0x1e,0x26,0xaa,0xbd,0x93,0x08,0x31,0x9c,0x0f,0xec,0x95,0x3c,0x68,0x23,0x59,0x6f,0x97,0xc4,0x81,0xef,0x48,0x1d,0x7d,0x42,0x41,0x5e,0x42,0xec },
{ 0xfe,0xc1,0xfe,0x0f,0x35,0xc7,0x94,0x55,0xb9,0x97,0xf8,0xf0,0x12,0xb5,0xe6,0xf8,0x7a,0x65,0xd3,0xe1,0x91,0xc9,0x7e,0x78,0x90,0x97,0x5c,0xef,0x92,0x55,0xee,0x57,0x8e,0x5f,0xae,0x18,0x9d,0xdd,0xce,0x75,0x5f,0x98,0xea,0x69,0xea,0x20,0x8c,0x5f,0xb5,0xc7,0xa4,0x0e,0xcf,0xd7,0xae,0x47,0x51,0x40,0x45,0x96,0x1d,0xd2,0x57,0xd2 },
{ 0x2f,0xb7,0x9e,0x26,0xe1,0xfc,0x03,0xac,0x8b,0x86,0xd7,0x4d,0xc8,0x25,0x4d,0x10,0x23,0xa9,0xaf,0xc9,0x34,0x4b,0x58,0xd9,0x7c,0x0b,0x78,0xe2,0x31,0x46,0x2e,0x61,0xca,0x10,0xce,0x30,0xed,0xc0,0x83,0x83,0xf3,0xce,0x5e,0x04,0x78,0x8b,0xbc,0x60,0xc1,0x7d,0x51,0xa3,0x85,0x9e,0x24,0x91,0xe0,0x54,0xd8,0x03,0xd1,0x0e,0x1f,0x0d },
{ 0xc9,0x2a,0xad,0x5d,0x33,0x42,0x32,0xab,0xf8,0x09,0x84,0x03,0x07,0xff,0xff,0x7a,0x30,0x09,0xca,0xdb,0x61,0x9a,0x59,0xee,0xfa,0x43,0x99,0x4c,0xbf,0xf9,0x05,0x81,0x48,0x91,0x02,0xaa,0x2a,0xa4,0x3e,0xe1,0x12,0xa7,0x9d,0xf8,0xee,0xcd,0x75,0xcc,0xe8,0xa5,0x00,0x34,0x88,0x72,0x30,0xb8,0x36,0x18,0x94,0x93,0xc8,0x09,0xb3,0xfe },
{ 0x66,0x0a,0xef,0x00,0xd7,0xd4,0xc6,0x62,0x4e,0xad,0x73,0xb5,0x78,0xd9,0xd9,0xf3,0x00,0x62,0xac,0x5a,0x6d,0x62,0x9b,0xf7,0xae,0xc4,0x3c,0xc0,0x0c,0xd3,0x6e,0x2f,0x83,0xad,0x6b,0x36,0x71,0x39,0x83,0xb6,0x64,0x4a,0xbc,0xc7,0x1a,0xdc,0xb3,0xcc,0x8f,0xe0,0xfb,0x5f,0xa5,0xb4,0x3a,0xc8,0x0b,0x12,0x4a,0x2c,0x1a,0xa1,0xba,0xf4 },
{ 0x2b,0x07,0xa5,0x2c,0xbd,0x6d,0xb2,0x4c,0x42,0x71,0x15,0x2c,0xc9,0xfe,0x01,0x3b,0x54,0xd8,0x4f,0x0f,0x38,0x25,0xf6,0xdf,0x59,0xe5,0xba,0x0c,0x7b,0xb3,0x17,0x4e,0xde,0x1d,0x90,0x92,0xcb,0x01,0xbf,0x5f,0xbf,0x08,0xf7,0xa0,0x55,0x58,0xe0,0x5c,0xa5,0x9d,0xf8,0x24,0x77,0xac,0x79,0x38,0x55,0xdc,0x0e,0x84,0xb1,0xc6,0x0e,0x19 },
{ 0x73,0xdc,0xc3,0x92,0xc2,0x03,0xb8,0xb6,0x80,0x53,0x73,0xd1,0xdb,0xb2,0xd1,0xc1,0xb2,0xa8,0xd8,0xad,0x21,0x58,0xfe,0x7c,0xe0,0x58,0x7b,0x7c,0x6d,0xec,0x0b,0xe4,0x74,0xc6,0xe0,0xd8,0x25,0xec,0xaa,0x1b,0xa2,0xb3,0x2b,0x5c,0x0c,0x38,0x92,0x5d,0x1a,0xe2,0x42,0x9e,0x15,0xa7,0x23,0x77,0xc7,0x88,0x98,0xd6,0xd7,0x87,0xa0,0xc2 },
{ 0x68,0x8a,0x43,0x84,0x40,0x30,0xf4,0x07,0x70,0x4f,0x3e,0xde,0xbc,0x73,0x8f,0xec,0x85,0x42,0xc9,0xaa,0x84,0xbd,0x72,0x17,0x48,0x4a,0x46,0xd9,0xc2,0xce,0xbb,0x28,0x60,0x80,0xf3,0x91,0x1d,0xfc,0x71,0x4a,0xd4,0xf6,0xae,0x70,0x4f,0x9f,0xca,0xce,0xec,0x3c,0xb4,0x23,0xc3,0x5f,0xdc,0x38,0x94,0x8f,0x95,0x06,0x7c,0x06,0xab,0xc0 },
{ 0xee,0x28,0x9b,0x4c,0xc9,0x89,0x37,0x4f,0x96,0xf2,0x3d,0x4f,0xbc,0x99,0x3b,0x12,0x27,0x24,0xa5,0x8c,0x79,0x64,0xfc,0xe6,0xd2,0xc4,0x9c,0x44,0x68,0xba,0x97,0xd8,0xed,0xb3,0x9f,0x96,0x9b,0x10,0xe7,0x8e,0x73,0x94,0x3d,0x2c,0xc7,0x31,0xfb,0xeb,0x75,0x0b,0x09,0x98,0x45,0x39,0xb1,0xad,0x00,0x82,0xbc,0x9d,0x4d,0x78,0xaa,0xca },
{ 0x75,0x68,0x96,0x07,0x74,0x40,0xfd,0x8d,0xcb,0x81,0x8d,0xff,0xf5,0x4a,0x09,0x57,0x43,0xb4,0x40,0x91,0x1f,0xb6,0x59,0xcb,0x53,0x45,0xe4,0x91,0x84,0x35,0x1d,0x18,0xff,0xda,0xdb,0xa5,0x51,0x6c,0x6d,0xe9,0x1a,0xe4,0x1e,0x55,0x2e,0x9f,0x2f,0x84,0x61,0xfb,0x6c,0x15,0xc4,0x2e,0xd7,0x8f,0xbf,0xd5,0xa0,0x28,0xb0,0x43,0x0e,0xd3 },
{ 0x5e,0xc2,0x23,0xe5,0xe6,0xbe,0xcf,0xbb,0x3e,0xb9,0xb7,0x51,0x5d,0xba,0x2e,0x9f,0xbb,0xc3,0xef,0xfe,0x5b,0xca,0x09,0x5e,0x49,0xf5,0xf1,0x51,0xdd,0x35,0x3e,0x63,0xd1,0x26,0xe3,0x0d,0x60,0x70,0x6e,0x96,0x90,0x92,0xb8,0x10,0xa0,0x02,0xd0,0xc0,0x28,0xeb,0xd0,0xf7,0x8e,0x6d,0xed,0xfd,0xfd,0x1e,0x16,0x77,0x03,0x77,0xf2,0x0b },
{ 0xb5,0xea,0xe6,0xf3,0x14,0x03,0x85,0x56,0x27,0xe2,0xf6,0x9e,0x61,0xb1,0xd4,0x14,0xe4,0x5e,0xcc,0x7d,0xac,0x5f,0xcf,0x4a,0xdc,0xd5,0xae,0xfb,0x01,0x44,0x3f,0x85,0xaa,0xd4,0xec,0x18,0x32,0xb0,0x3f,0xef,0x58,0x4b,0x2b,0x4f,0x74,0x09,0x4c,0x90,0x1d,0x21,0x5c,0xb9,0x43,0x35,0xf4,0x7e,0xdf,0xc2,0x7a,0xbb,0xfe,0xa4,0x64,0xf0 },
{ 0xd0,0x5f,0x0a,0x8c,0xf3,0x79,0xc9,0x55,0xed,0x22,0x75,0x29,0x6a,0xa7,0xc0,0x33,0x24,0x0e,0x28,0xe5,0xc3,0x87,0x8d,0x29,0xe5,0x21,0xf7,0x92,0x80,0x19,0x40,0xc4,0x33,0x95,0x84,0x78,0x50,0x2e,0xa0,0x84,0xdc,0xae,0xec,0xf7,0x24,0x70,0xf4,0x15,0x79,0x7d,0x4c,0x62,0x73,0x0d,0x4e,0x98,0xf7,0x20,0x49,0x89,0xc2,0xce,0xb6,0xde },
{ 0xc3,0xc3,0xb8,0xa3,0xb7,0xae,0xde,0x43,0x93,0xf9,0x04,0x76,0x5f,0x27,0xc6,0x20,0xdc,0xfb,0x37,0x95,0x5a,0x03,0x23,0xc4,0xb0,0xd5,0x00,0xb9,0xd8,0x24,0x64,0x94,0xce,0xe8,0xf9,0x69,0x61,0xf0,0x9c,0xf5,0x6e,0x6d,0xe0,0xdf,0x14,0x73,0x5e,0xb6,0x43,0xe9,0xf8,0x83,0x4b,0x6b,0x89,0x34,0xd5,0x50,0x78,0x43,0x23,0x11,0x7f,0x32 },
{ 0x27,0x12,0xc7,0x6a,0x98,0xc5,0xe1,0x20,0xe5,0xad,0x98,0x51,0xd7,0x2d,0x22,0x21,0xfe,0xb3,0x4f,0xcb,0x68,0x76,0xe4,0x4c,0x47,0x53,0x3e,0xf7,0x3c,0x09,0x38,0x0c,0xee,0xef,0x5e,0x60,0x75,0x33,0x14,0x6c,0xe0,0x5a,0xb3,0x03,0xf1,0x18,0xb4,0x82,0x63,0x50,0xda,0xb2,0xc8,0xfa,0xb3,0x8d,0xbe,0x76,0x28,0x54,0xec,0xb3,0x63,0x6a },
{ 0x33,0xd8,0x48,0x18,0x7d,0x1a,0x69,0x86,0x03,0xad,0x07,0xc1,0x4e,0x90,0x72,0x35,0x1e,0xcf,0x31,0x25,0x47,0x30,0xac,0xfa,0x14,0xa1,0xec,0x53,0xc7,0xd3,0x6f,0x19,0xb6,0x6c,0xaa,0xf4,0x0e,0x4e,0x33,0x48,0x5f,0xf0,0x79,0xd3,0xa4,0xa7,0xb0,0xaf,0x49,0xb3,0x8e,0xff,0x48,0xd5,0xcc,0xe5,0x61,0x1f,0xd4,0x1e,0x5e,0x44,0x05,0x88 },
{ 0x91,0x0e,0xff,0xe8,0x4d,0xd3,0xae,0xa4,0xcf,0xfb,0x0e,0x8b,0x78,0xc4,0x1f,0x73,0x5a,0x10,0x37,0xdf,0x18,0x2d,0x1f,0x79,0x8e,0xf5,0xaa,0x09,0xc5,0xba,0xb6,0xb3,0x23,0x5a,0xdb,0x9e,0x73,0xd1,0xdb,0x80,0x30,0x5d,0xd5,0x6d,0x98,0x4b,0xe3,0x67,0x9d,0xee,0xa9,0xd7,0x6f,0x31,0x7c,0x54,0x47,0x38,0x8e,0x79,0xb9,0xaf,0x87,0x99 },
{ 0xd6,0x1b,0x1f,0xca,0x26,0x87,0x37,0x38,0x3b,0x49,0xe3,0xc0,0x39,0x96,0xe2,0x68,0xf8,0xff,0xf2,0x51,0xc0,0x65,0xed,0xf2,0x31,0xde,0x83,0xac,0x8c,0x73,0x0d,0x9c,0x06,0xe9,0xfc,0x67,0x2d,0x79,0x27,0x10,0x9e,0xf0,0x2a,0xe5,0x3b,0x23,0xbb,0xc6,0xb6,0xef,0x36,0xb2,0xee,0x45,0xb5,0x05,0x1c,0xfd,0x9a,0x84,0x2d,0xd2,0x37,0x27 },
{ 0x02,0x86,0x58,0xcb,0xec,0x40,0x86,0x4a,0xb3,0x9a,0x95,0xa0,0xfb,0xa1,0x31,0x33,0xfe,0xb8,0x17,0xa6,0xe5,0x84,0x07,0x8c,0x7f,0xb9,0xaf,0x5b,0xb6,0x5d,0x37,0x18,0xa7,0xca,0xa5,0xa3,0xde,0xfd,0x6e,0xd5,0x25,0xff,0x44,0xc5,0xaa,0x16,0xad,0xd0,0xa8,0x2f,0xf3,0x8f,0xce,0x5c,0x17,0x8a,0x09,0x57,0xbe,0x4b,0x8d,0x45,0x4a,0x3a },
{ 0x9c,0xdd,0xaa,0xc9,0x44,0x14,0xd6,0x01,0xd0,0xa8,0x7f,0xb0,0xe4,0x54,0x60,0xa8,0xa1,0x8f,0x78,0x0f,0x24,0xd4,0x26,0x88,0x59,0xe7,0xb7,0x66,0x03,0xf2,0x71,0x0a,0x13,0xdb,0x88,0x56,0xd1,0x34,0x72,0x79,0xce,0xf8,0xe6,0xbd,0x57,0x55,0x9d,0x39,0x1e,0xf2,0x42,0xed,0x03,0xb6,0x56,0x83,0x54,0x7d,0x5f,0x73,0x64,0x9a,0x83,0x69 },
{ 0x5c,0x10,0x98,0xd7,0xf6,0xb5,0xc0,0xee,0x40,0x8f,0x81,0x8a,0xbc,0xdd,0x59,0xc1,0xfb,0xc6,0xf9,0xf4,0xf5,0xb8,0xbe,0x69,0x6f,0x22,0x44,0xde,0x7d,0x2b,0xba,0x6a,0xe6,0xde,0x21,0x63,0x1e,0xd5,0xae,0xed,0x38,0xbd,0x3c,0x4e,0x42,0x07,0xba,0x9c,0x1b,0x65,0x55,0x59,0xd8,0xad,0xe8,0x2e,0xf7,0x49,0x91,0x5f,0x55,0xa6,0x88,0x92 },
{ 0x79,0x4c,0x57,0x63,0xbb,0x4d,0x90,0x51,0xfb,0xf4,0xff,0x85,0x2a,0x57,0x9c,0xe2,0xb0,0x6e,0x4f,0x8e,0xe5,0x58,0xe1,0xdc,0x54,0xf8,0x90,0xa4,0x63,0x44,0x02,0x2a,0x7d,0x32,0xcd,0x38,0x98,0xbf,0x5e,0x31,0x3f,0x8b,0x9a,0x33,0x7d,0x80,0x90,0xcb,0x21,0x9b,0xee,0x13,0x81,0xe2,0xa2,0xe5,0xfe,0x58,0xb8,0x7a,0xad,0xb3,0x9e,0xab },
{ 0xf1,0x27,0x4d,0x2c,0xbd,0xb9,0xe8,0x49,0xf1,0x76,0x74,0x28,0x8c,0x75,0xfa,0xef,0x31,0xa7,0xed,0x03,0x96,0x1e,0xde,0xf3,0xa4,0x5b,0x7d,0xdc,0x74,0x29,0xba,0xf1,0x3a,0x30,0x13,0x95,0x84,0x83,0xc6,0x64,0x1f,0xbb,0x89,0x68,0x63,0x6f,0xa0,0xe9,0x10,0xf7,0xf2,0x1a,0xad,0x9d,0xd2,0x8a,0xcf,0x54,0x7d,0x9a,0x84,0xdd,0xea,0x64 },
{ 0x17,0xf7,0xb7,0x36,0xd5,0xc6,0xf0,0x9a,0x24,0x43,0x68,0xd0,0x90,0x4f,0xd2,0x8f,0xd8,0x96,0x19,0x58,0x03,0x14,0xe0,0x3c,0xe7,0x6f,0x51,0x1a,0x49,0xdd,0xda,0xb4,0x0b,0xb7,0x51,0xb8,0x50,0xa6,0x04,0xdd,0x94,0x88,0x00,0xb5,0x31,0xd9,0x00,0x8e,0xc4,0x86,0x2a,0xe3,0x0c,0x7a,0x44,0x43,0x2e,0x55,0xe3,0x85,0xc4,0x82,0x6b,0x89 },
{ 0xdf,0xc9,0xf5,0x73,0x65,0xb1,0x6f,0x23,0x83,0xf1,0x74,0x73,0x33,0x10,0xfc,0xd4,0xb7,0x7b,0xa1,0x70,0xe1,0x59,0x8e,0xa0,0x40,0xa6,0x55,0x1c,0x21,0x08,0xb8,0xf8,0x0d,0xec,0x12,0x08,0x56,0x28,0x5e,0x57,0xb5,0xea,0xf7,0x65,0xc2,0xc7,0xa5,0xb0,0x54,0x4e,0x72,0xc9,0x33,0xe5,0x71,0x7a,0x20,0xbd,0x38,0x03,0x12,0x9e,0x82,0xd8 },
{ 0x47,0xfc,0xda,0xc7,0xfe,0xd1,0x48,0xa6,0xcd,0x20,0xd6,0x43,0x7c,0x3e,0x28,0xf0,0x2b,0x4e,0x9c,0xa7,0x68,0x91,0xa3,0x5a,0xc3,0x42,0x43,0xd4,0xd1,0xb1,0x73,0xf5,0xd0,0x76,0xd6,0xa6,0x26,0xc3,0x93,0xa0,0xe2,0xf3,0x74,0xa9,0x5e,0x7e,0xda,0x97,0xac,0x44,0x1a,0x00,0xde,0xc9,0x6f,0x18,0x7a,0xb7,0xd1,0x50,0xdf,0x1c,0x3c,0x6c },
{ 0xb1,0x99,0xf3,0xf6,0x1d,0x5e,0xa3,0x01,0x3c,0x21,0xde,0x8f,0x93,0x67,0x35,0x48,0x00,0x56,0xe2,0x82,0xce,0x9e,0x69,0x0d,0x2b,0x41,0x81,0xa2,0x5a,0xab,0x4d,0xd3,0xfc,0xab,0x8f,0x52,0x10,0xb9,0x28,0x50,0xa2,0xbb,0x14,0xc6,0xbc,0xea,0xd1,0x31,0x05,0x5e,0xe7,0x96,0xd9,0x59,0xd0,0x25,0x33,0xd9,0x19,0x4b,0x14,0x63,0x72,0x71 },
{ 0x23,0x45,0x03,0x28,0x6e,0x3d,0x08,0xdf,0x74,0xe8,0x15,0x65,0xb6,0xc5,0x80,0x3d,0x87,0x79,0xf9,0x6d,0x20,0x9f,0x01,0xf8,0x90,0xc8,0x6e,0xea,0xdd,0xac,0x03,0x82,0x66,0x74,0x99,0x7a,0x01,0xf6,0x0b,0x62,0x79,0x3f,0xea,0x01,0xcd,0xbd,0x0a,0xe4,0x4e,0x14,0xfb,0xa7,0xa1,0x18,0xcf,0x90,0xe1,0x3a,0x45,0x92,0x7e,0xfe,0x9f,0x85 },
{ 0xdd,0x40,0x1b,0xf0,0x44,0x8b,0x9f,0xe6,0xdc,0x29,0x90,0x2a,0x89,0xad,0x1b,0x56,0x15,0x3d,0x80,0xb6,0x7b,0x0e,0x74,0x75,0xa4,0x71,0x5c,0x2c,0x45,0x24,0x15,0xdd,0xe2,0x77,0xaa,0x52,0xfa,0xed,0x71,0x2f,0x35,0xa5,0xbd,0x7f,0xbf,0xc9,0x4f,0x4b,0x50,0xe7,0x98,0x0d,0x11,0x9c,0x41,0xb6,0x26,0xdb,0xba,0x3e,0x69,0x9e,0x3f,0x26 },
{ 0x08,0x31,0xbd,0xdc,0x44,0x8c,0x12,0xc6,0xe8,0x6d,0x82,0x6b,0xe1,0x9d,0x2c,0x3f,0x72,0xf5,0x76,0x5f,0x77,0x7c,0x25,0xb8,0x42,0x51,0x1f,0x0f,0x03,0xb9,0x73,0x45,0x43,0x19,0x64,0x5c,0x2a,0xaa,0xfc,0x59,0x97,0x23,0xfd,0x95,0x94,0xd7,0x25,0x37,0xb6,0x03,0x81,0x05,0x3e,0xa0,0x59,0xe3,0x6c,0x34,0x38,0x80,0x90,0x14,0x71,0xaa },
{ 0x49,0x4d,0xc3,0x9c,0xb9,0x6e,0x7a,0x68,0x25,0xe4,0xa4,0x98,0x78,0x6b,0xd3,0x05,0x8e,0xc5,0x5b,0x8d,0x3b,0xc8,0xc6,0x7d,0x7d,0x37,0xc7,0x91,0x70,0x65,0xa9,0x66,0x3f,0x4b,0xca,0x7f,0x78,0xb9,0xd5,0x2a,0xa9,0xcc,0x6c,0x66,0x88,0x7e,0x21,0xef,0x7e,0x84,0x3b,0xd6,0xb0,0x7b,0x36,0x22,0xa7,0x9d,0x4f,0x41,0xa2,0x4c,0xbe,0xb1 },
{ 0x80,0x44,0xbc,0xee,0x57,0x69,0x26,0x19,0x7f,0x11,0x37,0xb5,0xa3,0xd3,0x91,0xfc,0xb6,0x65,0xdc,0xc5,0xa4,0xd4,0x2f,0x36,0xa9,0xe1,0x89,0xc3,0x96,0xc9,0x13,0xf6,0xe3,0x19,0xbc,0x1e,0xf4,0xe7,0x03,0x65,0xd5,0xd9,0xe5,0xcc,0x9d,0x92,0x05,0xf6,0x15,0x66,0x54,0x6c,0x9f,0x02,0x40,0xfc,0xa7,0xf7,0x8d,0x90,0x2d,0x19,0x7c,0xba },
{ 0x68,0xd1,0x7e,0xb4,0x52,0xc7,0x70,0xce,0xb3,0x92,0x64,0x40,0x39,0xfe,0x48,0xeb,0x02,0xe0,0x36,0x27,0x85,0xaa,0x6d,0x16,0x1a,0xe8,0x6b,0x5e,0xe5,0x73,0xfe,0x6f,0xd4,0xeb,0x01,0xf6,0x8e,0x06,0x4c,0xd9,0x27,0x43,0x00,0x70,0x94,0x20,0x7e,0x0a,0xe9,0xa2,0x2b,0xc6,0x66,0x87,0x5b,0xa0,0x22,0x14,0x05,0x30,0x7f,0x68,0x55,0xdb },
{ 0xa9,0xf7,0x57,0x11,0x91,0x12,0xdd,0xa2,0x54,0x07,0x9f,0x57,0x66,0x7a,0xf6,0xe1,0xd2,0x13,0xf6,0xa6,0x8f,0xa6,0x8f,0xc3,0xfb,0x8a,0xcf,0x73,0x54,0x40,0xfb,0x00,0x6b,0xd8,0xbb,0xc7,0x52,0xf1,0xe6,0xfe,0x06,0x80,0x40,0x0b,0x09,0xe9,0x4b,0x6e,0x00,0x4b,0x21,0x13,0x64,0xc9,0x29,0x9a,0x0c,0x4e,0xae,0x97,0x8b,0x66,0x63,0x4f },
{ 0x76,0x56,0x71,0x84,0x70,0x63,0xec,0x35,0x96,0x36,0x6c,0x4e,0xf3,0xfe,0x9e,0xd8,0xe3,0x8a,0x1a,0x28,0x5d,0xef,0x76,0x83,0xa0,0x9d,0x5e,0x2f,0x5c,0xb5,0x6d,0x99,0x5e,0x3b,0x60,0x49,0xa3,0xaf,0xc4,0xb2,0xd4,0x23,0xea,0xf9,0x0d,0x6e,0x05,0xd3,0xc5,0x46,0xba,0xe2,0xa6,0x06,0x18,0x2d,0xa3,0x7f,0x9c,0x99,0x41,0x89,0xc5,0x07 },
{ 0x17,0x57,0xf1,0x80,0xa4,0xc9,0xda,0x0c,0x53,0xda,0x52,0x5b,0xf6,0xe8,0x2c,0xf8,0xf3,0x94,0x66,0x43,0x7f,0x7c,0xd4,0xdb,0x36,0xc0,0xb5,0xd3,0xee,0x72,0x6c,0x56,0xa7,0x7e,0x56,0x26,0x8c,0x77,0xee,0x19,0xdf,0x53,0x7c,0x5e,0x3c,0xb5,0x36,0x71,0x40,0x4a,0x7b,0x7d,0x1b,0x4f,0xe4,0xd7,0xd5,0xcb,0x7f,0x80,0xdd,0x6a,0x2e,0xd8 },
{ 0xf9,0x7b,0x42,0x24,0x20,0xe5,0x40,0xb3,0x5d,0xe2,0x0d,0xb0,0x29,0x86,0x12,0xbd,0x09,0x49,0x1b,0x23,0x3a,0xb2,0x3e,0x5c,0x76,0x0d,0x94,0xc9,0x96,0x70,0x5f,0x69,0xd6,0xf5,0x0b,0x4a,0x89,0xf1,0xa1,0x22,0x4f,0x27,0x54,0x12,0x02,0xee,0x4c,0xf5,0xdb,0x9f,0x50,0xfb,0xab,0x0d,0xae,0xcd,0x77,0x0b,0x21,0x88,0x70,0xb6,0x6c,0xf7 },
{ 0xf5,0xaf,0x3c,0x2e,0x7f,0x11,0xc2,0x72,0xfb,0x4f,0x3e,0x13,0x09,0xc7,0x69,0x53,0x7e,0x53,0x4e,0x6f,0xe7,0xb0,0xe9,0x13,0x7d,0x5c,0x94,0x75,0xe7,0xc1,0x2f,0x42,0x8e,0x9c,0x3b,0xdb,0xaf,0x4a,0xe7,0x0d,0xf5,0xb4,0x68,0xa1,0x1b,0x82,0xb8,0x2f,0x2c,0xd6,0x43,0xe3,0x37,0x9c,0x0c,0x3e,0x26,0x10,0xce,0x72,0xd6,0xb0,0x11,0x66 },
{ 0x00,0xdd,0x81,0xdc,0xc1,0x57,0x10,0x7f,0x95,0x2a,0x74,0x34,0x4f,0x31,0xda,0x30,0x7a,0x16,0x76,0xf3,0x6d,0xfc,0x24,0xd1,0x9b,0xaa,0xcf,0x18,0x7a,0x3d,0xea,0x8c,0xc7,0xc4,0xd5,0x82,0xa2,0xa3,0x61,0x57,0x64,0xda,0x31,0x7b,0xcf,0xb9,0x3f,0x9d,0xc3,0xf3,0x6c,0x83,0x32,0xb2,0x75,0x73,0x8a,0x48,0x81,0x2b,0x8a,0x70,0x63,0x5f },
{ 0x53,0xa4,0x24,0x37,0x2f,0x94,0x6f,0x6e,0xfb,0x97,0xda,0x6f,0x73,0xa4,0xca,0xc6,0xcb,0xe6,0x2f,0x71,0xe4,0x44,0xed,0x26,0x66,0x95,0x5f,0x86,0x26,0x03,0x5f,0x35,0x7e,0xeb,0xeb,0xeb,0x5f,0x7a,0xc2,0x0e,0x00,0xdc,0x6a,0xc5,0x63,0x44,0x23,0x54,0xd1,0x19,0x65,0xe4,0x8e,0x46,0xa4,0x3a,0x47,0xfd,0x08,0x77,0x73,0x5a,0xdc,0x39 },
{ 0xce,0xfa,0x5f,0x9a,0x69,0x27,0xe0,0x83,0x34,0x3a,0xa7,0x11,0xd9,0xe2,0xf5,0x44,0xe5,0x4e,0x96,0xcd,0x74,0x54,0x59,0xa8,0xa8,0x05,0x25,0x55,0xd0,0x1b,0x82,0x8b,0x61,0x51,0x4d,0xf7,0x04,0x79,0x6d,0xaf,0xb7,0x09,0x55,0x4c,0x34,0x70,0x2f,0xb7,0x5f,0xa5,0xa1,0x90,0x08,0x25,0x31,0xb2,0x51,0x72,0xa1,0x3c,0x4c,0xdb,0x19,0x63 },
{ 0xff,0x87,0x8f,0x47,0x05,0x23,0x3f,0x8f,0x18,0xad,0xd8,0x46,0x4b,0xbc,0xe4,0x68,0x1e,0xdd,0x3d,0xc8,0x6a,0x77,0x6a,0x82,0xe1,0xc5,0xcc,0x19,0xd4,0xf9,0xf5,0xde,0x9e,0x89,0xcc,0x09,0x2f,0x66,0x15,0x95,0xe9,0xb8,0xeb,0x61,0xbf,0x29,0xd0,0xa4,0x60,0x9b,0xe3,0x9a,0x6b,0xf2,0x1f,0xb5,0x77,0x70,0x99,0x49,0x69,0x32,0x28,0x99 },
{ 0xfb,0xae,0xef,0x36,0x14,0x57,0x00,0xe9,0xb1,0x77,0x10,0xaf,0x6d,0x07,0xa0,0x0c,0x95,0x06,0xc2,0x14,0x17,0xed,0x56,0x5a,0x2b,0x6f,0x7d,0xac,0x40,0xe1,0xca,0xa6,0x73,0x29,0xbd,0xd1,0x4b,0x47,0xd6,0xee,0xe7,0x3e,0x28,0x88,0x6b,0xe8,0xce,0x72,0x01,0x99,0x8a,0x96,0x1f,0x58,0x55,0xdd,0x74,0x6f,0x76,0x45,0x31,0x2a,0x62,0x31 },
{ 0xd3,0xe6,0x83,0x70,0xb5,0xdb,0x4a,0x6d,0xbb,0x49,0xf8,0xb0,0xf6,0xb7,0xeb,0x62,0x3c,0x46,0xd5,0xac,0x6c,0x18,0x10,0x21,0x1d,0x04,0xe7,0x39,0x59,0xbe,0x98,0x36,0x32,0x25,0x8c,0x1a,0x08,0xb3,0x64,0xae,0xa8,0x6e,0x75,0x6f,0x20,0xed,0x9f,0xb7,0x2f,0xfd,0xb0,0xb1,0x46,0xe3,0xe0,0x5f,0x20,0xbf,0x79,0x24,0x2d,0xde,0xeb,0x32 },
{ 0x1b,0x27,0x00,0x19,0x4d,0x2e,0xbc,0x8d,0x9f,0xe0,0x15,0x89,0xc2,0x54,0x03,0xa4,0x3f,0xa1,0xb4,0xa2,0x26,0x34,0x87,0xd4,0xda,0x54,0x87,0x95,0xa3,0x38,0xbb,0x17,0x1f,0x5a,0x6b,0x49,0x9a,0x2e,0x1f,0x08,0x06,0x6f,0xe9,0x6a,0x43,0xfe,0xbd,0xd0,0x43,0x94,0xaa,0x99,0x59,0x4d,0x75,0xf8,0xf4,0xcd,0x78,0xe7,0x90,0xba,0x01,0xa3 },
{ 0x04,0x2f,0x69,0xfa,0x07,0x61,0x56,0x00,0xe8,0x18,0xf5,0x0f,0x3c,0x13,0x0c,0x78,0x3d,0x0e,0xc8,0x0c,0xdf,0xaf,0xbf,0xb8,0x15,0x98,0xa6,0x0b,0xfa,0xb2,0xe3,0x1f,0xb4,0xce,0x67,0x49,0x33,0x43,0x90,0xbd,0x34,0xb9,0x90,0x3b,0x1a,0x68,0x2c,0xbb,0x2c,0xd4,0xb3,0xce,0x18,0x28,0xa2,0x3d,0xb6,0x37,0x6d,0x18,0x80,0x48,0xb1,0x4c },
{ 0xf2,0x08,0xf4,0x3f,0x90,0xab,0x1e,0x3e,0xe4,0x3b,0x85,0x76,0x9b,0xa3,0x2a,0x75,0x7e,0x92,0xbc,0x3f,0x68,0x84,0xe1,0xb6,0x39,0x1d,0x13,0xcc,0x82,0xcd,0xc8,0x0e,0xb9,0x72,0x62,0x61,0x45,0xc3,0xbb,0xbb,0xae,0x62,0x72,0x4f,0x6d,0x5d,0x03,0xa9,0x02,0x38,0x9a,0x8e,0xac,0x64,0xa7,0x74,0x13,0xe0,0x66,0xd5,0x59,0x73,0x51,0x47 },
{ 0x44,0xbb,0xf9,0xd2,0x8a,0xe5,0xa3,0x95,0x1c,0xee,0xbd,0x30,0xab,0xdf,0xea,0x4c,0x47,0x44,0xa4,0xa1,0xce,0x92,0x8b,0x4e,0x8c,0xc0,0xb2,0x7d,0xde,0x00,0xed,0x90,0x52,0xbe,0xf5,0x14,0xf0,0xf3,0xdf,0xe9,0x0d,0xdf,0xa5,0xab,0x29,0xcd,0x7e,0x0a,0x3e,0x27,0xc9,0x37,0x3f,0x7f,0x3b,0x86,0x0c,0x39,0x9f,0xec,0xdb,0x40,0x4b,0x68 },
{ 0x05,0x0d,0xa8,0x3e,0xb1,0x35,0x1f,0x6c,0xe0,0x9b,0xaa,0x33,0xe4,0x66,0xe7,0x02,0x9b,0xbd,0x7a,0x6b,0x0a,0xfb,0xae,0xa0,0x02,0xed,0x18,0x73,0x63,0x19,0x11,0xa4,0x47,0xea,0xf2,0xaa,0xc3,0x17,0x32,0x9b,0x7f,0x6b,0x24,0x6c,0x77,0xc9,0x91,0xc1,0xf7,0x71,0xc4,0x10,0xef,0x44,0x86,0xcf,0xea,0x26,0x6c,0xf6,0x0a,0xf1,0x71,0x58 },
{ 0x29,0xd0,0x1b,0xf0,0x4d,0xb3,0x4a,0xa0,0x6e,0xb5,0x05,0x51,0x78,0x07,0x60,0x63,0x92,0xaa,0x11,0xb0,0x5a,0xe4,0x50,0xf5,0x81,0x3f,0x6c,0x59,0x92,0x02,0x57,0x05,0xc1,0x8f,0x1a,0x82,0x71,0xc4,0xec,0x09,0x88,0x1e,0xb6,0x59,0x89,0x1b,0x1b,0xde,0x9e,0x85,0x40,0x44,0x80,0xda,0x4a,0xac,0x73,0x2f,0xf3,0x5d,0x0c,0x24,0x37,0xbf },
{ 0x5f,0xde,0xb6,0x85,0x02,0x37,0xc0,0x75,0x7c,0x8f,0x46,0xbd,0x57,0x7f,0x7c,0x92,0x13,0xcb,0x21,0x92,0xea,0x73,0xa0,0xc4,0x5c,0x18,0xea,0xb4,0x61,0x41,0x1e,0x00,0x47,0x24,0x06,0x45,0xe8,0x8e,0xb0,0x2b,0xdb,0x20,0xad,0xa1,0x40,0xcc,0x09,0x97,0xfa,0x4c,0x02,0x12,0xec,0xd0,0x11,0x37,0x2a,0x8c,0x36,0x7e,0x77,0x65,0x3a,0xe9 },
{ 0x97,0x53,0xbb,0xb2,0xae,0x5e,0x0a,0x22,0xaa,0x46,0x93,0xea,0x94,0xad,0x2a,0x94,0xc4,0x42,0x24,0xd9,0x0d,0x05,0x91,0x22,0x4e,0x9d,0xab,0xa9,0xb8,0xdf,0xb8,0xb3,0x7c,0xf2,0x8a,0x83,0x12,0x51,0x30,0x82,0x96,0xcc,0x50,0x6e,0x40,0x51,0xa8,0x43,0x7f,0x4c,0x6d,0x80,0x60,0xb1,0x92,0xe0,0x3b,0x5d,0xb8,0x98,0x86,0x59,0x79,0x64 },
{ 0x07,0x71,0xc6,0x43,0x9c,0x78,0xfc,0x47,0xf5,0x62,0x54,0xe6,0x92,0x6c,0x31,0xe6,0xb2,0x15,0x5a,0x81,0x30,0x40,0x61,0x01,0x87,0xd4,0xd4,0x42,0x71,0x7e,0xfe,0xa0,0xc3,0xc3,0xd8,0x6f,0x95,0x10,0xb9,0x69,0x64,0x9b,0xde,0x0a,0x1c,0x8e,0x06,0x7d,0xd2,0x15,0xdb,0xaa,0x85,0xde,0xe1,0x95,0xfb,0x9b,0x94,0x96,0x76,0x9e,0x41,0x74 },
{ 0xc1,0x6f,0x65,0x3d,0x9f,0xc4,0xa4,0x66,0x4f,0x1c,0x10,0x24,0xef,0x7f,0x1f,0x97,0xb8,0xdf,0xff,0xc4,0xd8,0xac,0xe0,0x9f,0x7e,0x75,0xbe,0x1f,0x82,0x3e,0x61,0x97,0xf9,0x58,0xf4,0xa0,0xf5,0x57,0xbe,0xbf,0x9a,0xdd,0x64,0xcd,0xd6,0xe9,0x16,0xb7,0xd2,0x25,0x6d,0x32,0x9c,0xda,0xba,0xa2,0xaf,0x01,0xc4,0x0f,0x6e,0xb9,0xf9,0xad },
{ 0xcc,0x52,0xc3,0x97,0x0c,0x1a,0x96,0x4f,0x8d,0x09,0x72,0x26,0x71,0x60,0xf9,0x67,0x97,0x4d,0xc8,0x54,0x37,0xfc,0x97,0x4b,0x8e,0x78,0x9b,0xf3,0xf6,0x39,0x01,0x98,0x9b,0x18,0x8c,0xef,0x19,0xd6,0xb2,0x22,0x8c,0xe5,0x7a,0xa2,0x5d,0xb2,0x67,0x2f,0x8d,0xcb,0x61,0x16,0x3c,0x49,0x39,0x66,0xc1,0x79,0xda,0x69,0x06,0xc4,0x17,0x1b },
{ 0xb7,0x2e,0xcd,0x05,0x7b,0x6c,0x13,0x62,0xab,0x66,0x89,0x87,0xfb,0x76,0x67,0xcb,0x1b,0xb8,0x5a,0xb4,0x9e,0xdb,0x84,0xac,0xbb,0xe5,0x9e,0x13,0x49,0xe0,0x79,0x32,0x74,0x94,0x0a,0x4f,0x6c,0x09,0xf7,0xe9,0xb0,0x17,0xfd,0xd4,0x82,0xe6,0x34,0x42,0x76,0xda,0xf8,0x4f,0xa1,0x6b,0x14,0xfd,0xe0,0x12,0x80,0x08,0x7d,0x0e,0x82,0xdc },
{ 0x0e,0x58,0x40,0x05,0x50,0xc9,0xc2,0x66,0xab,0xcf,0x3f,0xa9,0x64,0x02,0x60,0xbf,0xcd,0xba,0xfe,0x1c,0x0a,0xe2,0xc8,0xcb,0x87,0x07,0x8d,0xb7,0x0d,0xd5,0x74,0xcd,0x0e,0x7d,0x92,0x28,0x55,0x89,0x31,0x90,0x8a,0x2f,0x36,0x1c,0x5f,0x5d,0x39,0x5e,0xb7,0x14,0x19,0x96,0x2d,0xab,0xc9,0x73,0x68,0xe0,0x47,0xb1,0x15,0xd0,0xf3,0xdf },
{ 0x14,0xa2,0x3f,0xd5,0x15,0x96,0xfc,0xde,0x85,0x87,0xba,0xec,0xc8,0xb8,0x28,0x36,0xc4,0x81,0xa2,0x44,0x9c,0x4e,0xeb,0x87,0x46,0xe8,0xae,0xf0,0x24,0xca,0xe0,0xad,0x83,0x77,0xca,0x4f,0x1a,0x8b,0xfb,0xe5,0x97,0x28,0xe1,0xe1,0xa2,0x2c,0x2e,0x6f,0x1e,0x44,0xce,0xcd,0x6e,0xd1,0x07,0x31,0x59,0x86,0x54,0xfc,0x86,0x8e,0xee,0xe4 },
{ 0x3d,0x50,0x20,0xc0,0xe1,0x05,0xaf,0x36,0xfd,0x35,0x77,0x83,0x6d,0x9d,0x76,0x61,0x51,0xbe,0x45,0xa3,0xd5,0xab,0x8a,0xaa,0x02,0xab,0xef,0x41,0xeb,0x85,0x23,0x6e,0x39,0x9a,0xea,0xa8,0xdf,0x0e,0x32,0x9d,0x26,0xe2,0x17,0xa8,0x8f,0x74,0x63,0xb7,0xa9,0xe0,0x26,0xf3,0xc9,0x7f,0xbf,0x3e,0xc6,0x9f,0xe7,0x4c,0xfb,0x08,0xc0,0xd2 },
{ 0x09,0x19,0x06,0x29,0x23,0x57,0x85,0x20,0xb3,0xef,0x08,0x17,0xc9,0x39,0x84,0xf2,0x47,0x2e,0x25,0x2d,0x55,0xd8,0xf3,0x26,0x98,0x12,0x91,0x40,0xdc,0x72,0x68,0xf9,0x8c,0x38,0x17,0x24,0x39,0x76,0x4b,0xb1,0xbd,0x8b,0xaf,0x70,0x22,0x3d,0xeb,0xe4,0xb2,0xaa,0x85,0x35,0x08,0xfa,0xbe,0x64,0x28,0x7d,0x96,0x67,0x71,0x3c,0xf9,0x85 },
{ 0xdf,0xe2,0x47,0x0f,0x70,0xea,0xce,0xc5,0x48,0x74,0x95,0x8f,0xe9,0xe0,0xad,0xa8,0x58,0x6b,0x4b,0x0c,0xcc,0x9e,0xb4,0xcd,0x07,0x72,0x80,0xaf,0x2b,0x4b,0x2c,0xf0,0x13,0xf0,0x5c,0x11,0xbf,0x2f,0x05,0x03,0x17,0x5a,0x75,0x2c,0x78,0x99,0x15,0xc6,0x0f,0x89,0x2d,0x58,0x15,0x1c,0x34,0x74,0xd7,0x7c,0x5a,0x0e,0x30,0x79,0x2a,0xa8 },
{ 0xe3,0x09,0x95,0x38,0xe0,0x97,0xa6,0x19,0xa0,0x88,0x65,0x98,0xa7,0xf0,0xac,0x1f,0xaf,0x95,0xaa,0xf3,0xd4,0x15,0xb2,0x52,0xd8,0x8d,0x35,0x23,0x67,0x5f,0xe8,0x0a,0x31,0xcd,0xc4,0xad,0xc5,0xf8,0xfb,0xd9,0x01,0x16,0x41,0x9c,0xd4,0xad,0x7e,0x98,0xbe,0xe6,0x5b,0xc0,0x0c,0xdc,0x21,0x62,0x15,0xc6,0x6c,0x01,0xa0,0xe3,0xdd,0x4c },
{ 0xf4,0x67,0x32,0xd4,0xde,0xa1,0xbb,0x17,0x3a,0xe8,0xa6,0xf0,0xd8,0x96,0xbc,0x89,0x44,0x74,0xdc,0x9f,0x48,0xc0,0x1c,0xc8,0x6d,0x35,0x45,0x3c,0xd8,0xd8,0xe3,0x68,0x49,0xd8,0x13,0xa3,0x0c,0x00,0x02,0x42,0xc8,0x3e,0xa0,0x39,0x15,0x88,0x42,0x24,0xdd,0xda,0x1b,0x24,0xf3,0x64,0xe5,0xd9,0x87,0x84,0xbb,0xc4,0xc7,0xea,0xac,0x41 },
{ 0xda,0xb3,0xb3,0x6b,0xc6,0x2c,0xf1,0xc9,0xef,0xa7,0x34,0xca,0x12,0x10,0x39,0x0f,0x33,0x6f,0xaa,0x4b,0x2d,0x08,0x8b,0x9b,0xb4,0xce,0xe8,0x3b,0x45,0x22,0x74,0xed,0xf7,0x8f,0x8a,0x87,0xf4,0x4b,0x45,0xd4,0x33,0x5f,0xa0,0x46,0x81,0x10,0x47,0x14,0x3e,0xc8,0x31,0x27,0x3a,0x30,0xc3,0xb3,0x6b,0x22,0x6d,0x99,0x18,0x85,0x6d,0x86 },
{ 0xe1,0x4e,0xdb,0x00,0x96,0x14,0xad,0xeb,0x1b,0x2c,0x93,0x0e,0x8f,0x7a,0xd3,0xe7,0xec,0xa6,0x47,0x9b,0x13,0xcc,0x69,0x8b,0x76,0x0d,0x44,0xf0,0x23,0x10,0x2e,0xf8,0x6d,0x49,0x8a,0x3d,0x5f,0x07,0x46,0x20,0xe1,0x04,0xee,0xc3,0xb2,0x33,0xa0,0x52,0x52,0x95,0x2d,0x7d,0xb9,0x06,0x01,0x15,0x63,0xce,0xa2,0x21,0x11,0xa9,0xa2,0xa3 },
{ 0x5a,0x05,0x8a,0x61,0x7d,0xe0,0xe2,0x5f,0x82,0xad,0x7b,0xf5,0x27,0x9e,0x83,0x4b,0x8a,0xa2,0x02,0x84,0x32,0x4c,0x35,0x7f,0xb7,0x85,0x6d,0x09,0xe0,0x48,0x1b,0xe2,0x4b,0xa7,0x83,0x8b,0x05,0x01,0x59,0x92,0xa7,0x42,0xa5,0x8a,0x02,0x7d,0x02,0x96,0xe6,0x68,0x78,0x34,0x2a,0xdc,0x7b,0x8f,0xe9,0xe3,0xfe,0xaf,0x1f,0x0e,0x8b,0x5e },
{ 0x27,0xc9,0xe1,0x09,0xf7,0x48,0xc1,0x46,0xaf,0x9d,0xaf,0xf1,0x40,0xa9,0x73,0x0c,0x0e,0x2a,0x8a,0x52,0xea,0xe2,0xce,0x2d,0xec,0x10,0x0a,0xad,0x66,0x94,0xfc,0x36,0xb2,0xb1,0xb6,0x3d,0xda,0xeb,0x53,0x5b,0x0b,0xd1,0x8f,0xb7,0xfa,0x1a,0xb9,0x44,0x14,0xf6,0xf2,0x40,0x61,0xf4,0xae,0xb0,0x39,0x1d,0xc0,0xcc,0x07,0x82,0x9e,0x04 },
{ 0xdd,0x95,0x1e,0xc4,0x81,0xed,0x54,0x06,0xed,0x87,0x4f,0x61,0xe9,0xf1,0xf1,0xf8,0x3a,0x59,0x22,0x62,0xcd,0xab,0x25,0x96,0x9b,0x90,0xaa,0x6d,0xec,0x27,0xc2,0x35,0x10,0xa3,0xa2,0x16,0x4c,0x2f,0x66,0xdd,0xab,0x99,0x97,0x28,0xaf,0x20,0x15,0x21,0xbd,0xe1,0xbc,0x2a,0xac,0x2a,0x24,0x5a,0x17,0xed,0x59,0x65,0x1f,0x4e,0x53,0xa3 },
{ 0x40,0xf2,0xfe,0xc7,0xef,0x02,0xeb,0x34,0x81,0xd7,0xcc,0x3e,0x5f,0x41,0xa0,0x39,0xf1,0x08,0x74,0x4e,0xad,0x7e,0x31,0x97,0x23,0x26,0x45,0x52,0xb0,0x9f,0xfd,0x9a,0xdd,0x2a,0x3d,0xc7,0x75,0xee,0x12,0x3c,0x7d,0x8c,0xeb,0xc5,0xb0,0xe8,0xf9,0xf0,0x12,0xbc,0xfa,0xb4,0x24,0x35,0xa5,0x24,0x88,0x37,0x3f,0xf1,0x60,0xc4,0x33,0x04 },
{ 0x1c,0xb5,0x65,0x73,0x98,0xa5,0x98,0xa6,0x98,0x5b,0x05,0x7a,0x94,0xe3,0x71,0x53,0x1d,0x1a,0xa4,0x84,0xef,0xe5,0x1d,0x42,0x93,0x77,0xa4,0xbc,0x22,0xea,0x6a,0x0f,0x61,0x84,0xe7,0xb7,0x30,0xf6,0xf4,0x04,0xd0,0x15,0x24,0x1d,0x04,0x26,0x55,0x64,0x39,0x60,0xb3,0x82,0xe9,0xd3,0xd0,0x1e,0x41,0xa9,0x4a,0xc0,0x22,0x24,0x92,0x81 },
{ 0xca,0x97,0xa0,0x77,0x30,0x10,0xd4,0x58,0xf7,0xfb,0x15,0xe3,0x32,0x34,0xff,0x17,0xc4,0x2e,0x29,0x71,0xdf,0x95,0x5f,0x10,0xc4,0xdc,0x18,0x74,0xa7,0x31,0x8a,0xd5,0x0f,0xf1,0x73,0xf2,0x7a,0x02,0xb7,0x0d,0xcc,0xd6,0x6a,0x22,0xa0,0xe7,0x01,0xfb,0xe1,0xdd,0x70,0xb0,0x32,0x9e,0xa8,0x25,0x5a,0x9d,0x25,0x14,0x61,0xc5,0x29,0x11 },
{ 0x4f,0x02,0x9e,0x05,0xe2,0x07,0x6c,0x58,0x34,0x41,0x67,0xc3,0x98,0x7e,0xf6,0xb6,0x56,0xb3,0x18,0x7f,0x70,0x84,0x74,0x2e,0xcb,0x6b,0xf5,0xac,0xe2,0xd7,0x36,0xba,0x25,0xbb,0xfa,0x76,0x2c,0x70,0x3c,0x61,0xb0,0x8c,0x3b,0x07,0x9b,0xb6,0xd3,0xed,0x5f,0xa0,0xbc,0x9d,0x4a,0xd3,0x77,0x3d,0xad,0x8f,0xab,0x9c,0xcf,0x47,0x49,0x3a },
{ 0x94,0xb8,0x06,0x66,0x76,0x5d,0xcd,0x50,0x70,0xc4,0xb6,0x54,0x75,0xab,0xc4,0x47,0xdd,0xc9,0x0d,0x2b,0xc5,0x7a,0x53,0x54,0x17,0x93,0xef,0xf7,0x70,0x7d,0x7f,0xf5,0x39,0xc8,0xab,0xb8,0xc7,0x95,0x46,0xad,0x95,0xb4,0x23,0x94,0x3a,0xef,0x8a,0x8d,0xbc,0xcc,0xd4,0xba,0x51,0x62,0xf2,0xbe,0x32,0x0b,0x2f,0x5a,0x72,0xdd,0x52,0x91 },
{ 0x3c,0x0a,0xe2,0x2c,0x70,0xf0,0x4b,0xbd,0x6e,0xe6,0xd3,0x5e,0xc7,0x04,0x9e,0x82,0x3c,0x86,0x80,0xfa,0xa4,0x60,0xdf,0xc2,0xbc,0x74,0x1f,0xc6,0x2f,0xe8,0x3c,0x80,0xad,0xcf,0x8f,0xcb,0xd1,0xdb,0x0c,0xbd,0xb0,0x33,0xdf,0x6f,0x82,0x2e,0x7c,0x5b,0x49,0x47,0x7c,0xf2,0xcc,0x52,0x9c,0x44,0xf8,0xf2,0x85,0x16,0x43,0x75,0xa8,0xdd },
{ 0x9c,0x62,0x92,0xf3,0x32,0xfb,0xe6,0x43,0x58,0x21,0x28,0x79,0xab,0x41,0x34,0xa6,0x4d,0x91,0xee,0x07,0x5a,0x3e,0xac,0xdf,0x5e,0xb2,0xa5,0xce,0xbd,0xc1,0x0c,0xc8,0x21,0x7b,0xea,0x4b,0x79,0x93,0xdb,0xfa,0x0d,0x1d,0x16,0x88,0x75,0x9b,0x21,0x45,0xa6,0xfb,0x9b,0x9e,0xc3,0x76,0xe3,0x05,0xc5,0x2a,0xf7,0xa0,0x93,0x79,0x4e,0x15 },
{ 0xd5,0x48,0xea,0x1c,0x5c,0xee,0x83,0x57,0xc8,0xdd,0x71,0x30,0x7f,0x3e,0x26,0xc4,0x32,0xea,0xa0,0xb1,0x16,0x63,0xbc,0xa8,0x03,0x3f,0x55,0xda,0x5a,0x3a,0xa3,0x22,0xc7,0x57,0x6f,0xc8,0x9f,0x6a,0x3b,0x19,0x89,0x03,0x17,0x7e,0x7c,0x31,0xc8,0xc8,0x47,0xca,0x83,0x09,0xdb,0x86,0x0f,0x6c,0x70,0xec,0xe2,0x2b,0xbe,0x23,0xc7,0x25 },
{ 0xa0,0x46,0x2c,0x1f,0xf6,0x44,0xa2,0xe3,0x92,0x20,0x5c,0x01,0x6f,0xe6,0xdb,0x14,0x9c,0xdd,0x33,0xc0,0x87,0xa3,0x48,0xae,0x88,0x53,0xfa,0x9b,0x51,0xca,0x1d,0xca,0xfa,0x37,0x30,0xbd,0x36,0x40,0x4f,0x12,0xb2,0xc2,0xce,0x54,0x97,0x78,0x20,0xd5,0xaf,0x6d,0xc2,0xca,0x1c,0x5b,0x94,0x58,0xb4,0x95,0xd7,0x4f,0xdd,0xb4,0x57,0x49 },
{ 0xc2,0x74,0x9a,0xe2,0xcf,0xdf,0xff,0x43,0x92,0x9c,0x5a,0x34,0xd8,0x56,0xe4,0x0e,0xff,0xaa,0xfc,0x9b,0x55,0xe6,0xa2,0x2a,0xff,0x10,0x4b,0x74,0xb3,0xae,0x00,0xbf,0x5e,0xc9,0xc9,0x04,0x78,0x54,0x3d,0xbf,0x73,0x7d,0xf7,0x1b,0xc8,0x4f,0x68,0xf1,0xd2,0x02,0x5a,0xd3,0x6a,0xa1,0x1f,0x87,0x17,0x4f,0x45,0x15,0xca,0x6c,0x77,0x54 },
{ 0x45,0x4b,0xfc,0x6e,0x3e,0x11,0xb4,0x6f,0x26,0xc7,0x48,0xfa,0xe5,0x27,0xee,0xfe,0x7a,0xae,0xdc,0x5a,0xec,0x5f,0x48,0xf6,0xaa,0xbe,0x6b,0x7d,0xcd,0x70,0xbf,0x24,0x59,0x99,0xa1,0x44,0xb6,0x07,0xc5,0xfb,0x74,0x1a,0x11,0x3a,0x16,0x03,0xd0,0xc4,0x57,0x2b,0x93,0xaa,0x1b,0xa0,0xff,0x71,0x9b,0xe8,0x36,0x8e,0x60,0x16,0xcb,0xa0 },
{ 0x0d,0xc1,0xdb,0x93,0x5c,0xe6,0x21,0xbb,0x75,0x9b,0x4b,0x79,0xe0,0x83,0x59,0x0c,0x4c,0x6c,0x93,0x5b,0xbc,0xbc,0x63,0x8e,0x81,0xc0,0x8a,0xbb,0x32,0x90,0x41,0x2a,0xa3,0x30,0x32,0xbf,0x6c,0x96,0x27,0x0c,0xa7,0x26,0x30,0xfa,0xad,0x4b,0xfb,0x3d,0x95,0xe2,0xe7,0xe3,0xae,0x2a,0x05,0x81,0x78,0x99,0x52,0x10,0xcc,0xf4,0x4a,0xca },
{ 0xff,0xf2,0x93,0xc5,0x85,0x0b,0xba,0x38,0x53,0xba,0x1d,0x18,0xfb,0x26,0xe0,0x00,0x14,0xff,0xbe,0x15,0x5f,0x29,0xf2,0xb2,0x18,0x50,0x35,0x17,0xe9,0x5d,0xb0,0x26,0x45,0x3c,0xdd,0x14,0x80,0x9d,0xca,0x53,0x72,0x88,0x6f,0x69,0x91,0xd3,0x1a,0x37,0x07,0x24,0x12,0x24,0x09,0xaf,0x52,0xce,0x20,0x30,0x30,0xbf,0xa4,0xfe,0xd5,0xa7 },
{ 0xfe,0x54,0x22,0xbb,0x36,0x26,0xe9,0xe2,0x25,0xeb,0x0a,0x2d,0x15,0x2a,0x2d,0x84,0x3d,0xaf,0xb4,0x29,0x15,0x9a,0x3b,0x75,0x02,0xb6,0x43,0x0a,0xc9,0xbf,0x08,0x2d,0xe9,0xd3,0x57,0xc2,0x91,0xf3,0x86,0x28,0xad,0x0a,0x2b,0x28,0xa3,0xba,0xc8,0xcb,0xe3,0x5a,0x71,0x5b,0x22,0x60,0xe5,0x9d,0x65,0x94,0x6e,0x15,0xbf,0x02,0x50,0x02 },
{ 0x52,0x11,0x5e,0xa8,0x90,0x6b,0xd4,0x43,0xe9,0x09,0xee,0xa1,0x78,0x32,0xe8,0xc9,0x78,0x8a,0x0f,0x6e,0xd2,0xdd,0xef,0x10,0xf9,0x52,0xd3,0x50,0xe1,0x74,0x71,0xf1,0xad,0x1b,0xa8,0xe3,0x1f,0xc2,0xbe,0x57,0x0f,0xf5,0xe3,0x9c,0x2c,0xb3,0x82,0x67,0x06,0x55,0xcc,0x64,0xc5,0x09,0x73,0x79,0x77,0xe6,0x33,0xce,0xdd,0x9f,0xc0,0xa2 },
{ 0x91,0x88,0x00,0x12,0x11,0x36,0xc8,0xe0,0x15,0x8e,0xe0,0x3d,0x2a,0x3d,0x6c,0x71,0x26,0x88,0xf2,0xf0,0xf6,0x63,0x2d,0x79,0x70,0x6c,0x35,0x2a,0xdd,0xc9,0x17,0x2c,0xfa,0xe9,0x36,0xc8,0xaa,0xc7,0x74,0x3a,0xfc,0x1e,0x0d,0x21,0x02,0x28,0xce,0x2b,0x7c,0x2c,0x6c,0x7e,0x29,0xc1,0x3f,0x3d,0xaf,0x1b,0x9f,0x8a,0x97,0xfa,0x81,0x1b },
{ 0xab,0x97,0xd1,0xbd,0x7c,0xbc,0x6f,0x7d,0xae,0x7c,0x18,0x9d,0x09,0x87,0x7e,0x70,0x52,0x77,0x43,0x0c,0x28,0x40,0x62,0x2f,0x0b,0x4b,0x22,0xad,0xd5,0x8c,0xf4,0x9d,0x20,0xdf,0x10,0x43,0x74,0x2a,0xb0,0xd5,0x21,0x40,0xfc,0x8b,0xcd,0x91,0xf3,0x83,0x12,0x10,0xe8,0x67,0xaf,0x57,0xe9,0xa1,0x27,0x92,0x21,0x36,0x07,0x98,0x5c,0x33 },
{ 0xdd,0x86,0x02,0xfd,0x25,0x2d,0x3c,0xbf,0x4c,0x1e,0xa5,0xe5,0x91,0xac,0x2d,0x91,0xb1,0xde,0x4b,0xb7,0x4a,0x0f,0xd3,0xab,0x7d,0xec,0x92,0x6f,0x80,0x6e,0x8a,0x6a,0x37,0x9c,0x25,0xf1,0x0d,0xef,0x8a,0x41,0x83,0xfc,0x75,0x88,0x5d,0xa0,0xf0,0x2e,0x88,0x44,0x84,0x24,0xc3,0x87,0x78,0x69,0x5d,0x45,0xcc,0x99,0x00,0x45,0x11,0x12 },
{ 0x27,0xbf,0x66,0xa3,0xbd,0xe4,0xb1,0xbb,0x18,0x6e,0xaa,0xa7,0xe6,0xfa,0x3d,0x5e,0x62,0x06,0x4c,0x6c,0x10,0x2d,0x63,0xcb,0x51,0x26,0x7f,0xb6,0x3f,0x9e,0x25,0x92,0x2d,0x4c,0x47,0x02,0x36,0xdd,0x5d,0xa3,0x77,0x2a,0x5d,0xc5,0x07,0x8a,0x7a,0x81,0x2c,0x4b,0x5b,0xcc,0x4b,0x84,0x34,0x8c,0xd4,0x14,0xb7,0x9d,0x37,0x13,0xc9,0x13 },
{ 0x3c,0x6f,0x5e,0xe0,0xcd,0xcb,0xb0,0x22,0x29,0xe8,0xaa,0x53,0x73,0x19,0x8d,0x76,0xca,0x3c,0x32,0x92,0x27,0xa3,0xbf,0x41,0xe9,0x6b,0xcc,0x53,0x9f,0x46,0x40,0x70,0x60,0xc7,0xaf,0xb4,0xd1,0x12,0xcf,0x56,0xaf,0x88,0x05,0xc6,0xec,0x62,0x09,0x2d,0x43,0x9b,0x1d,0xd7,0xda,0x3b,0xb8,0x32,0xf5,0x59,0xc9,0xfc,0x91,0x42,0xd0,0xe7 },
{ 0x3d,0x69,0xa0,0x17,0x38,0x8f,0x8d,0xdd,0xb1,0x53,0xa2,0xbd,0x2e,0x95,0x3f,0x9f,0x3b,0x79,0xf6,0x3e,0x8d,0x95,0xf3,0xbf,0xfb,0x71,0x3a,0xbd,0xfd,0x52,0xc1,0xa6,0xe6,0x76,0x0a,0x76,0x34,0x0c,0x0c,0x9f,0x40,0xcb,0x84,0xf4,0xfb,0x63,0xe4,0xc7,0x07,0xc9,0x1b,0xc8,0x36,0x44,0xdc,0xf3,0x51,0xff,0xfd,0xb8,0x68,0x5f,0x50,0x8b },
{ 0xdd,0x37,0xd3,0x32,0x6f,0x41,0xaa,0xb3,0xdf,0x8c,0x94,0x8c,0x03,0x8b,0xbb,0x0f,0xdc,0xbe,0x01,0xfd,0x57,0x25,0x63,0x64,0x1a,0x68,0x32,0xa0,0x3e,0xec,0xaa,0x86,0xde,0x1e,0x32,0x72,0x1e,0x29,0xfc,0x1d,0x73,0x1e,0xde,0x68,0x2c,0xf8,0xfb,0x59,0xf4,0x53,0xc2,0xed,0xee,0x5f,0xd7,0x76,0xa2,0x61,0x17,0xe8,0x1c,0x7c,0xc3,0x87 },
{ 0xeb,0x2b,0xa6,0xd5,0x00,0x91,0x50,0x7c,0x22,0xaf,0x63,0xf1,0x12,0xda,0xa3,0xbc,0xce,0xaa,0xdf,0xff,0xcc,0x2a,0xea,0xd2,0xb6,0xa9,0x05,0xd8,0x7b,0x6d,0x46,0x0a,0xca,0x3a,0x2b,0x39,0x26,0x02,0xf3,0x2d,0xfa,0xd0,0x97,0x5c,0x54,0xc9,0xaf,0x61,0x1e,0xd1,0x8c,0x33,0xb2,0xce,0x4d,0xa6,0xd3,0xdb,0xc4,0xfc,0xf3,0x3f,0x4f,0xcd },
{ 0x0e,0x08,0x19,0xd8,0xa6,0xb2,0x75,0x16,0x83,0x02,0xa4,0x50,0xf8,0xd9,0x9d,0x91,0x4f,0x19,0xe1,0x48,0xf2,0xe5,0xd9,0xe8,0x35,0x23,0x5c,0xbb,0xfd,0xc2,0xf5,0xeb,0x19,0x77,0x26,0xd7,0xd9,0xec,0xbe,0x79,0x89,0x16,0xbe,0xca,0xb4,0x75,0x62,0x75,0x61,0x77,0x7e,0x50,0xa0,0x30,0xc8,0xe9,0xc2,0x9f,0x77,0x9e,0xd2,0x9a,0x0b,0x30 },
{ 0x2e,0x21,0x25,0xa8,0x35,0xaa,0xb1,0x74,0x51,0xf9,0x8b,0x43,0xa9,0xb8,0xb1,0xf9,0x75,0xde,0x21,0xc6,0x01,0xd8,0xbb,0xd7,0x9a,0xa4,0x32,0x55,0x21,0x2d,0x8e,0xfe,0x54,0x2a,0xa1,0xeb,0xba,0xe4,0x6a,0x89,0x1d,0x70,0x7d,0x4d,0x77,0x6f,0xb3,0xcb,0xd6,0xef,0xa6,0x03,0x63,0x8f,0xe9,0xf8,0x76,0x15,0xd0,0xaa,0x4f,0x95,0x62,0x9e },
{ 0xee,0x8c,0x78,0xfd,0xb4,0x71,0x22,0xce,0x19,0xe0,0xfd,0xc0,0xfe,0x48,0x42,0x03,0x02,0x60,0x58,0x16,0x01,0x81,0x8e,0x0d,0x2c,0xef,0xfa,0x03,0xf4,0xba,0xcc,0xff,0xf5,0x48,0x2f,0x0c,0xc1,0xa7,0x93,0xc2,0x31,0x6b,0x01,0x65,0x43,0x5c,0xe9,0x58,0x82,0x2a,0x51,0x07,0xb9,0x3d,0x75,0x43,0xd2,0x39,0xd1,0x19,0xc3,0x80,0x61,0x7b },
{ 0x1b,0xa8,0x11,0x57,0x0c,0x96,0x7d,0x50,0x49,0x40,0xb6,0x66,0x3b,0xd8,0x28,0x2f,0x55,0x17,0xa9,0x3e,0xc7,0x4b,0x29,0x07,0xef,0xa8,0x27,0x90,0x2f,0xd3,0x5c,0x67,0x2b,0xc3,0x61,0x24,0x6b,0x89,0x72,0x87,0xcf,0x1b,0xfe,0x23,0xd3,0x59,0x48,0x13,0x87,0x24,0x5b,0xf4,0x8d,0x3b,0x0d,0xf4,0xcc,0x78,0x19,0x07,0xb7,0x29,0xe4,0x5c },
{ 0x77,0x65,0x77,0xe2,0x09,0xf4,0x90,0x28,0x50,0x0e,0xfa,0x1e,0x54,0x9d,0x67,0xd9,0x68,0x6e,0x53,0x5f,0x55,0xdd,0x07,0xa5,0x3d,0xf2,0xf2,0xe3,0xda,0x11,0x6c,0xdb,0xce,0x8b,0x3f,0x70,0x94,0xc1,0x63,0xb3,0xb6,0xc7,0x8d,0x68,0xa8,0xd1,0xe9,0x89,0x99,0xab,0x5c,0xc1,0xb9,0xce,0x69,0xf6,0xc9,0xd4,0xd4,0xe6,0x77,0x15,0xd5,0xd1 },
{ 0xd4,0xa6,0xbe,0x83,0xb8,0xcf,0x7d,0x6e,0xef,0x3c,0x92,0xb4,0x70,0xb7,0xfd,0x5d,0x11,0x64,0x34,0xce,0x3a,0xd8,0x23,0xeb,0x53,0x73,0xc3,0x75,0xc5,0x26,0x5c,0x5c,0x14,0xd1,0x3d,0x9e,0x94,0xd3,0x5e,0x76,0x6f,0x04,0x4e,0xff,0x1b,0x37,0x30,0x70,0xed,0x5a,0x6f,0x34,0x8c,0xc6,0x68,0x43,0x7b,0xc2,0x61,0x06,0x07,0x4f,0x06,0x7a },
{ 0x96,0x61,0x3a,0x36,0xd7,0xde,0xc6,0xb3,0x82,0xfa,0xb0,0xb6,0x89,0xef,0xc7,0x58,0xbb,0x0e,0xcb,0x44,0xa7,0x6a,0x39,0x1b,0xbc,0x6d,0xb7,0x14,0x75,0xfb,0xac,0x88,0x94,0x0c,0xdb,0xb6,0xf2,0x6d,0x79,0x7f,0xb2,0x99,0xef,0xe2,0x45,0x8d,0x8d,0x70,0x5d,0x10,0xcb,0x24,0x80,0x7d,0x97,0x82,0xa7,0xa6,0xf8,0xae,0x76,0xe2,0xb7,0x71 },
{ 0x0e,0x36,0xe4,0x77,0xeb,0xd0,0x21,0x08,0x0e,0x0d,0xe1,0x09,0xa4,0x95,0x87,0x10,0xca,0xbb,0xe0,0xa7,0x81,0xd2,0xc9,0x3f,0xa4,0x65,0x4e,0x1b,0x16,0x99,0x5a,0x96,0x30,0x0b,0x50,0x03,0xd7,0x51,0xd3,0x9f,0xc1,0x66,0x59,0x94,0xda,0x74,0x72,0xe4,0x0a,0xbe,0x6e,0xd7,0xc9,0x46,0x9c,0xe6,0xd5,0x13,0xaa,0xcc,0x39,0x14,0x2a,0x84 },
{ 0xf2,0x32,0xb3,0x7c,0x05,0xa6,0xd2,0x9d,0xc4,0xbc,0x9c,0xb2,0xe3,0xff,0xdb,0x9f,0x20,0x60,0x88,0x38,0x46,0xe0,0x9e,0x59,0x92,0x01,0xd9,0x39,0x32,0xae,0x26,0xab,0x7c,0x74,0x1b,0x6d,0x77,0x75,0xff,0x31,0xa1,0x28,0x41,0xed,0x03,0x94,0x3d,0xff,0x84,0x80,0xfa,0x0e,0x00,0x8b,0xc0,0x36,0xbe,0x1c,0x0b,0xf2,0xee,0xe6,0xa6,0xc5 },
{ 0x37,0xad,0xcd,0x9f,0x97,0xc3,0x94,0xda,0xc0,0xae,0xfc,0xcd,0x90,0xac,0x98,0x85,0xff,0x9e,0x0b,0x63,0x17,0xf6,0x5e,0x32,0x57,0x35,0xb8,0xdf,0xaf,0x56,0x72,0x13,0x83,0xc4,0xf5,0xd7,0x9e,0x9b,0x2d,0x29,0xd8,0x40,0x2f,0x29,0xc7,0x2b,0x1e,0x96,0xf7,0x2c,0xc6,0x77,0x21,0xec,0x08,0xb7,0x01,0x5e,0x3c,0x88,0x18,0x96,0xbc,0xf8 },
{ 0x6c,0x65,0xb9,0x8b,0xbd,0x66,0x95,0x82,0xd8,0xec,0x04,0x18,0xb6,0x0c,0x30,0x73,0xba,0x99,0xea,0xcb,0x91,0x8b,0xcf,0xeb,0x34,0xac,0x9e,0xe7,0xa5,0xf4,0x13,0x68,0x55,0x58,0x58,0xc5,0x0f,0xdc,0x58,0x1f,0x54,0x60,0xe5,0x65,0x57,0x2d,0x41,0xf3,0x87,0x01,0x74,0xc7,0x53,0xf7,0x6a,0x2f,0x98,0x26,0x78,0xfb,0x8e,0xf6,0x59,0xd3 },
{ 0x3d,0x5a,0x48,0x85,0xb2,0xfa,0x58,0x7c,0x14,0xcc,0xc7,0x31,0x2c,0x87,0xda,0xb0,0xbc,0x25,0xd1,0xf1,0x30,0xd7,0xed,0xba,0xb8,0x56,0xac,0xb0,0x69,0x6a,0x26,0xec,0x44,0x17,0x13,0xaa,0x70,0x9b,0x63,0xfa,0x98,0x01,0x69,0xbc,0xd0,0x40,0x61,0xec,0x8c,0x39,0xea,0x1d,0xa9,0xc5,0x5d,0x8c,0x11,0x0c,0x55,0x5f,0xd5,0x89,0x43,0x77 },
{ 0x42,0x41,0x7f,0xfd,0xfe,0xf1,0x37,0x55,0x59,0x84,0xfa,0x5f,0xf0,0x29,0xa0,0x8d,0x25,0x41,0xe9,0x62,0xdd,0x9d,0x3f,0x9a,0xaa,0xa2,0x17,0xb3,0xc8,0x8c,0x86,0x89,0x6a,0xad,0x40,0xca,0x33,0xbc,0xac,0xd9,0xd8,0x89,0x1c,0x50,0x19,0xa8,0x2f,0xf9,0xe0,0xfb,0xf8,0xc0,0x97,0xc6,0x2b,0x6e,0xb3,0xa9,0x7d,0x39,0x39,0x13,0x92,0x35 },
{ 0x8f,0x08,0x32,0xd9,0xe6,0x5e,0x5c,0x81,0x2a,0xd3,0xba,0x8e,0x0f,0xd3,0x4a,0x27,0x13,0x8a,0x76,0x67,0xb0,0x7a,0x28,0xfb,0x04,0xae,0xeb,0x05,0xec,0xc3,0x20,0x8a,0x5b,0x07,0xab,0x77,0xdc,0x6d,0x21,0xe1,0xca,0x59,0xde,0x5b,0xb5,0x3a,0xb8,0x0f,0x0d,0xa1,0x56,0x53,0x08,0xfe,0xee,0x10,0x69,0x3c,0x5b,0x11,0x90,0x1b,0x3b,0x93 },
{ 0x3c,0x9a,0x5c,0xb3,0xaa,0x0c,0xfc,0xa9,0xbe,0xcb,0xc2,0x63,0x84,0x02,0xda,0xb6,0xd6,0x96,0xa7,0xc1,0x0d,0x2e,0xd4,0x6b,0x1d,0x15,0x4e,0xdb,0x83,0x2a,0x78,0x2d,0x97,0x3b,0x15,0x34,0x48,0xb0,0x5c,0x05,0x68,0xe7,0xd1,0xa8,0x66,0x87,0x3d,0x4f,0x2f,0x46,0xde,0x6c,0x89,0x89,0x25,0xb6,0x72,0x62,0xfb,0x4d,0x0f,0x1d,0xff,0xce },
{ 0x53,0xb5,0x83,0x57,0x15,0xdf,0xff,0x32,0xcd,0xce,0x01,0x4c,0x73,0x68,0xbc,0xc9,0x22,0x35,0x17,0x4b,0xba,0x21,0x0f,0xeb,0x54,0xf5,0x90,0x6f,0x88,0x0a,0x24,0xb9,0x32,0x31,0xc6,0x1c,0xea,0xe9,0x18,0xc3,0xdc,0x8b,0x5e,0xb2,0x15,0x8b,0xb2,0x9e,0xd3,0x43,0x44,0xd1,0xc5,0x97,0xa7,0x8c,0x0b,0x95,0x28,0xe4,0x29,0xf9,0xb2,0xff },
{ 0xb4,0xc4,0x8a,0x4a,0xde,0xa7,0x04,0xb9,0xc0,0x3a,0x01,0x8e,0x6d,0x5b,0x4c,0xd2,0x36,0xa4,0x7e,0xa0,0xfd,0x26,0x0c,0x19,0x04,0x79,0x71,0x88,0x8d,0xd2,0xc7,0x6e,0xc4,0x0f,0x50,0x71,0x7c,0x49,0xff,0x83,0x54,0x03,0x7d,0xfe,0x6e,0x38,0xed,0x0c,0xdd,0xf1,0x7f,0x4f,0x98,0x85,0x61,0xda,0xad,0x86,0x49,0x3a,0x93,0xad,0x38,0xd6 },
{ 0xf9,0x92,0x93,0x1c,0xd7,0x8e,0x98,0x41,0xb8,0x4a,0xce,0x13,0x4f,0x04,0xe6,0x8a,0x1b,0xb5,0xa6,0xdf,0x86,0x68,0xb8,0x38,0x4d,0x41,0xdb,0xd1,0x73,0xfc,0x3f,0x2a,0x97,0xcc,0xec,0xe7,0xd0,0x6b,0xf0,0x42,0x41,0x7a,0x4b,0x11,0x03,0xc8,0xe7,0x52,0xe9,0xcc,0x90,0xd3,0xdb,0x67,0xae,0x0e,0x2d,0x8f,0x9e,0x74,0x0f,0x1b,0x20,0x6c },
{ 0x49,0x61,0x45,0x90,0xbe,0x34,0x71,0xf4,0xb7,0x38,0x76,0x51,0xa3,0x22,0x7c,0x1a,0xcf,0xf1,0x8c,0xc9,0x0c,0x1e,0x83,0x4f,0x7f,0x18,0x78,0x0d,0x33,0xd5,0x0d,0x1e,0x56,0x5f,0x31,0xfd,0x25,0xc6,0x82,0x84,0x3e,0x8e,0xa0,0x09,0x04,0xed,0xdb,0x69,0x4c,0x1e,0x4c,0x4d,0x2b,0xf1,0x72,0x44,0x34,0x46,0x8a,0x0d,0x43,0x33,0x74,0xe5 },
{ 0x80,0xa6,0xfa,0x8d,0xdc,0x6d,0xee,0x65,0xdb,0x76,0xb4,0x56,0x85,0x6d,0xd2,0x6e,0xd4,0x78,0xce,0xc3,0x7e,0x28,0x4d,0xc0,0x3b,0x70,0x2c,0x39,0x35,0x0f,0xb3,0x46,0xa0,0x9d,0xf8,0xec,0x18,0xea,0x2c,0xd1,0x6c,0x3e,0x41,0x1b,0xb8,0x91,0xc8,0x11,0x56,0x70,0xa0,0x11,0x71,0x37,0xc4,0x03,0x71,0xe9,0x68,0x40,0xfd,0x77,0x8e,0x70 },
{ 0xee,0xdc,0x7c,0x99,0xdf,0x2f,0x5d,0x2a,0x4a,0xf8,0xa5,0xa0,0x08,0xd0,0xcb,0xca,0xcc,0x82,0x0a,0x57,0x63,0x90,0xc7,0x67,0xb7,0xfe,0x29,0x28,0xf3,0xf9,0xdf,0x15,0xa0,0xf4,0xe0,0xbf,0xc1,0x2d,0x8f,0x6e,0x08,0x5b,0xce,0xbc,0x0d,0xc6,0x63,0xca,0xb7,0xa1,0x1c,0x42,0x9a,0x57,0x25,0x78,0x42,0x6c,0x68,0x31,0x14,0x01,0xb0,0x9c },
{ 0xd9,0xae,0xdf,0x56,0x5b,0xfc,0x22,0x88,0x1a,0x0b,0x34,0x8d,0x62,0x1f,0xc1,0x19,0xfa,0xe7,0xc3,0xfc,0x2e,0x5d,0x3d,0x84,0x35,0x84,0x0b,0x81,0xd6,0xc1,0x3f,0xa6,0x1e,0x13,0x82,0x1c,0x11,0x99,0x7c,0xc6,0xbc,0x59,0x90,0xaa,0x4d,0x49,0x2b,0x1f,0xd2,0xce,0xc3,0xfd,0x08,0x47,0x40,0xee,0x9c,0x75,0x32,0x02,0xc5,0x90,0xb6,0x23 },
{ 0x7c,0xda,0x01,0x05,0x0a,0xa8,0x92,0x4d,0x09,0xa5,0xbf,0xb1,0x69,0x3a,0x44,0x6a,0x3b,0x4e,0x1a,0xe1,0x50,0x6d,0x80,0x13,0xb7,0x02,0xe5,0x22,0xa8,0xfd,0x53,0x3f,0xbd,0xcb,0x90,0xe0,0x15,0xfa,0xa0,0x46,0x35,0x54,0xab,0x98,0xce,0xe0,0x35,0x59,0xac,0xa7,0x03,0xfa,0xfe,0x8a,0x67,0x9e,0x75,0xf1,0x18,0xe0,0x9d,0x89,0xcf,0xe9 },
{ 0x13,0xc4,0xbd,0x37,0x30,0x0b,0x12,0x8a,0xd8,0x7e,0x04,0x28,0x82,0xdd,0x89,0xb9,0x33,0xeb,0xf8,0x44,0xee,0xa8,0xba,0xf5,0x3e,0xad,0xa3,0x4b,0xbc,0xeb,0xaf,0x5c,0x7a,0x86,0xb6,0x74,0x5b,0xd4,0x2d,0xd3,0x53,0xd6,0xb6,0x10,0x13,0x37,0x94,0x68,0x49,0x5b,0xb5,0xee,0xd1,0xcd,0xfd,0xb0,0x33,0x94,0xa2,0xe7,0x91,0x57,0x41,0xe1 },
{ 0x1c,0x95,0x2e,0xa9,0x18,0x67,0xa1,0xd2,0x05,0x8f,0x5b,0xc9,0x9b,0xa7,0xe8,0x5c,0x77,0xac,0xf3,0xaf,0x89,0x44,0x8c,0x11,0xa3,0xdd,0x90,0x82,0xb3,0x26,0x85,0xae,0xa9,0x41,0xd7,0xce,0xc8,0x04,0xcc,0xb4,0xff,0x95,0xa0,0x1d,0xcd,0x5e,0x4e,0x73,0x08,0x1b,0x22,0xc6,0x4c,0xfc,0xa2,0xa5,0x5b,0xf8,0x5e,0x4c,0x97,0xbc,0x61,0x93 },
{ 0x3f,0xa2,0xfa,0x36,0x05,0x7c,0xdd,0x93,0xeb,0xef,0x5a,0x85,0x58,0x12,0x1a,0x15,0x10,0x92,0x49,0xb5,0xba,0x15,0xd7,0x5a,0xf9,0xc3,0xeb,0xb5,0x0d,0xf5,0x85,0x53,0x08,0xd4,0x15,0x99,0xe8,0xe9,0xc1,0xc7,0x51,0x39,0xe6,0x70,0x03,0x7b,0x19,0xeb,0x1c,0xd9,0x28,0x35,0x3b,0x52,0x55,0xa0,0xef,0x95,0x42,0x7d,0x63,0x92,0xc7,0x9a },
{ 0x77,0x22,0x2e,0x45,0xc1,0x86,0xa1,0x5c,0xf5,0xcc,0x98,0x3d,0xd3,0x5f,0xad,0x1e,0x72,0x62,0xeb,0x1f,0x1c,0xf7,0xe1,0xcb,0x0d,0x09,0x03,0xa7,0xe8,0x0b,0x2c,0x7a,0x50,0x63,0x2d,0x0e,0xc7,0x56,0x1d,0x43,0x81,0x54,0xff,0x28,0xf5,0xf4,0x8b,0x0a,0x6d,0xf7,0x96,0x3d,0x72,0xc0,0xb4,0x1f,0x0a,0x41,0x94,0xbe,0x2f,0xf0,0xae,0x3e },
{ 0x2a,0x3c,0x0a,0x21,0x1b,0x3f,0xa0,0xe4,0x41,0xab,0xec,0x71,0xa8,0x66,0xeb,0xb9,0x33,0xb2,0xab,0xc5,0x85,0xbe,0xef,0x32,0xbf,0x60,0x40,0xb7,0xef,0x97,0x09,0x39,0x14,0xc5,0x28,0x1b,0xfc,0xcf,0x65,0x7f,0xf4,0xc6,0xa0,0x3b,0xa4,0xb7,0x9d,0x6c,0x02,0x2f,0x70,0x4e,0x2d,0x41,0xd4,0x55,0xc6,0xcb,0x6a,0x59,0xd1,0x8e,0xdf,0xab },
{ 0xd6,0xf9,0x49,0xb2,0x58,0x3c,0x39,0x23,0x81,0x2a,0x4d,0xb4,0x0e,0x9c,0xdf,0x46,0x11,0x0c,0x2d,0x5a,0x2a,0x17,0x1c,0x70,0x46,0x23,0x68,0xc6,0x87,0x93,0x3d,0xd8,0x27,0xd2,0x99,0x84,0x54,0x47,0x1f,0x36,0x4a,0xc6,0xd1,0x4d,0x7e,0x19,0xb1,0x6f,0x21,0x64,0xd7,0xe6,0xdd,0x7e,0x44,0x64,0xab,0x4e,0x07,0x0f,0xef,0xcd,0x75,0xee },
{ 0xe2,0x88,0x22,0xd2,0x3a,0x67,0x3e,0x5d,0xa0,0x11,0xd0,0xf2,0xe5,0x0b,0xdd,0x93,0x4f,0xce,0xcd,0xd4,0xac,0x73,0x6b,0xa8,0x52,0xb7,0xe4,0xc8,0xeb,0x20,0x50,0xc8,0x7a,0x9e,0xcc,0x50,0x36,0x10,0xdf,0xbd,0xd2,0x29,0x0f,0x45,0x1a,0x75,0xe1,0x6a,0xd4,0x5c,0x08,0x2b,0xbd,0xa9,0xe0,0x9a,0x26,0xc7,0xa7,0x8b,0xf3,0x45,0x95,0x12 },
{ 0x5d,0xad,0x34,0x5c,0xdf,0x02,0x6b,0x83,0x19,0x5e,0x5d,0x80,0x63,0xdd,0xb4,0xfe,0x56,0x59,0x79,0xe8,0xea,0xf8,0x64,0x82,0xf0,0x66,0x23,0x03,0x56,0xe1,0xd0,0xbe,0x48,0x3e,0x04,0x4e,0xf2,0x80,0x49,0x0d,0x6d,0x47,0x5a,0x66,0x37,0x2e,0xc4,0xda,0xaa,0x67,0xf4,0xa9,0x15,0x8b,0xca,0x6d,0x4e,0x60,0xdc,0xac,0x82,0xd3,0xd2,0x43 },
{ 0x2d,0x36,0xc7,0xf7,0xb3,0x99,0x71,0xb3,0xc5,0x1f,0x23,0x18,0xca,0x51,0x27,0x16,0xa1,0x72,0x7e,0x33,0x9b,0xbe,0xd2,0x1f,0xe9,0x25,0x31,0x52,0x05,0xd0,0xb8,0x8c,0x06,0x5f,0x56,0xce,0x3a,0x14,0x59,0xa5,0x0d,0xbd,0x7d,0xd5,0x56,0xc1,0xa0,0xaf,0xab,0x33,0x05,0x3c,0x17,0xa7,0x03,0x15,0x88,0x51,0x47,0x96,0xb8,0xbb,0xf6,0x83 },
{ 0xff,0x22,0x0f,0x4a,0xbb,0xa9,0xc2,0x59,0x2c,0xb2,0x1c,0x10,0x7f,0xbe,0x4b,0x57,0xcf,0x77,0xda,0x76,0x2e,0x2f,0xe0,0x96,0x4e,0xf9,0x94,0x2e,0x28,0xd6,0xe3,0x18,0x4a,0xb1,0x05,0xed,0xe5,0xbf,0x78,0xfa,0x37,0xf2,0x0a,0x1a,0xb7,0xf9,0xfa,0x86,0xba,0xb0,0x20,0xb8,0x58,0xcb,0x99,0xa8,0xbe,0x7b,0xfb,0x24,0x86,0xd7,0xbd,0xe4 },
{ 0xe3,0x1a,0x5b,0x95,0x18,0x8a,0x59,0x18,0x66,0x58,0x78,0xb5,0x4b,0x1b,0xf1,0x42,0xf6,0x60,0xc9,0x1c,0xfb,0x4e,0x87,0x5e,0x1b,0x21,0x1c,0xc0,0x59,0x43,0x18,0xa6,0x0a,0x0a,0x10,0x9a,0x9a,0x12,0x95,0x53,0xaf,0xc9,0x5b,0x48,0x20,0x86,0xef,0x75,0xf4,0xef,0x70,0x1e,0x63,0x06,0xee,0x8e,0x9e,0x5b,0x8b,0x1a,0xfb,0x9f,0x1e,0xda },
{ 0xb8,0x4e,0xfb,0x3f,0xc5,0xb8,0xbb,0x75,0xd7,0x2d,0xe4,0x53,0xab,0x9d,0x4b,0xef,0xbe,0x06,0xc8,0x9d,0xa9,0x82,0x70,0xeb,0xc3,0x02,0x90,0x5c,0xd3,0x4a,0xc8,0xc9,0xfa,0xdf,0x23,0xf9,0x3f,0x49,0xd0,0xef,0x9b,0xb2,0xe1,0x94,0xe9,0xac,0x7d,0xdd,0xf1,0x90,0x99,0x70,0xe7,0x20,0x88,0x27,0x0e,0x9b,0xb3,0xc0,0x74,0x75,0x82,0xa1 },
{ 0x69,0x7e,0x8d,0x01,0x88,0x5b,0x69,0x54,0x97,0x2d,0x42,0xb5,0xb1,0x98,0x6b,0x19,0x41,0x59,0xe1,0x88,0x53,0x64,0x36,0xf2,0xaa,0xb6,0x6c,0x6d,0x85,0x3d,0xdb,0x6c,0xc7,0x42,0xc3,0xee,0xd0,0xd4,0x01,0x20,0xc6,0x6c,0x3b,0xac,0xb9,0x0a,0xbe,0xae,0x6d,0xb2,0x95,0xb3,0xc6,0x80,0x72,0x4c,0x99,0x39,0xb7,0x43,0x67,0x4e,0x51,0xbb },
{ 0x9b,0x2b,0xc0,0x72,0x60,0xbe,0xa9,0x43,0x35,0x82,0xaa,0x03,0xb8,0xb3,0x15,0x00,0x67,0x5a,0x36,0xbf,0xdd,0xd1,0x45,0x08,0x1e,0x0d,0x46,0x8b,0xee,0x6a,0xd3,0x4b,0x3e,0xf9,0x25,0x5d,0x7c,0x36,0xa7,0x59,0xeb,0x49,0x15,0x7e,0xc0,0xd0,0x3c,0x60,0x37,0x44,0x45,0x50,0x0b,0x73,0x6a,0xd9,0xbe,0xd7,0xb0,0xa7,0x29,0x43,0x81,0xd5 },
{ 0xec,0x2e,0x35,0x9f,0x21,0xcd,0xa7,0xd7,0xdd,0xcd,0x39,0xb6,0xfd,0x32,0xab,0x0a,0x6c,0xd6,0x1e,0x91,0x3f,0xc1,0xcf,0x46,0x02,0x60,0x27,0x8d,0x79,0x0f,0xab,0x0b,0x54,0xae,0xc5,0x1a,0xf5,0x18,0x1f,0xa7,0x91,0xe3,0x40,0x1f,0xd3,0x15,0x1f,0x5e,0x83,0xa4,0x08,0x3b,0x68,0x90,0x94,0xf0,0x8b,0x8d,0x22,0x02,0xc6,0x5d,0x9a,0x36 },
{ 0x93,0x18,0x6d,0x16,0xb2,0x12,0xef,0x40,0xcb,0x61,0x8e,0x66,0x3d,0xf6,0x93,0xf5,0x44,0xc1,0x69,0x4b,0xc4,0x17,0x72,0xa5,0x9d,0x9d,0x1b,0x32,0xe1,0xe2,0xe6,0x41,0x70,0x31,0x30,0x99,0x17,0x04,0x29,0x77,0x1d,0x01,0x72,0x56,0xfe,0xa5,0x47,0x90,0x40,0xf3,0x9f,0x25,0xed,0xed,0xf1,0x2d,0x70,0xfe,0x70,0x80,0x92,0xc5,0xba,0x90 },
{ 0xe1,0xd1,0x9d,0xe5,0xd5,0x9c,0x68,0xbd,0x72,0xd7,0x9f,0xd5,0x05,0x34,0x5f,0xaf,0xcc,0xc9,0x88,0x51,0x6c,0x87,0x8a,0x84,0x9a,0xb6,0x0d,0x0b,0xab,0xe6,0xfd,0x35,0x11,0x50,0xff,0xd1,0x93,0x73,0xfd,0x77,0x61,0xc8,0xce,0x84,0x83,0x4d,0x03,0x95,0x2b,0xb4,0xfe,0xd5,0x06,0xe4,0xdd,0x64,0x5f,0x5b,0x3b,0x84,0x67,0x48,0xc6,0x6d },
{ 0x98,0xb1,0xdd,0xbf,0x6b,0xd2,0x48,0x87,0x71,0xe7,0xbf,0x00,0x4a,0xc3,0xf1,0x0c,0x04,0x67,0x70,0x4c,0x61,0xb0,0x58,0x6a,0x61,0x72,0x22,0xae,0xd8,0x4b,0x96,0xea,0xb5,0xaa,0xbe,0xae,0xaf,0x8f,0xa9,0xe7,0x45,0x63,0x89,0xd8,0xd4,0x83,0x51,0x58,0xbb,0xad,0xdb,0xa6,0x8e,0x63,0x5d,0x84,0xa6,0xcd,0x7d,0x99,0x35,0xc7,0x05,0xf0 },
{ 0x24,0x09,0xdc,0x80,0x26,0xe2,0x56,0x5e,0x5d,0x9c,0x31,0x41,0x4d,0x4a,0xa3,0x8b,0x59,0x17,0xca,0xe0,0x04,0x02,0x19,0xfe,0x22,0x63,0x83,0xc4,0xad,0xe9,0x0b,0x3c,0xb2,0x79,0xe4,0x0b,0x48,0xf1,0xf0,0xa7,0xba,0x54,0xf5,0x16,0x5e,0x0a,0x6a,0x94,0x98,0x9b,0x6c,0xb4,0xb6,0x49,0x29,0xdf,0x14,0xef,0x8a,0x49,0x47,0xf5,0xbf,0x79 },
{ 0x67,0xf5,0x11,0xd9,0xa9,0x1d,0x13,0xb3,0x64,0x76,0xb3,0x03,0x79,0xb6,0xd0,0x4e,0x59,0x5d,0xf7,0xc6,0xc4,0x64,0x1d,0x44,0x1d,0xf5,0x82,0x15,0x7d,0x05,0x36,0xf5,0x68,0xfb,0x1a,0xdb,0xe7,0x90,0x55,0x54,0x15,0xdf,0xe9,0x4d,0x13,0x91,0xb3,0xe8,0x43,0x9f,0x5b,0xbe,0x68,0x0b,0x1b,0x13,0x56,0xcd,0x63,0xb7,0x4c,0x3d,0xee,0xc9 },
{ 0xbc,0x31,0x0c,0x16,0xe4,0x4e,0x9a,0x6f,0x58,0x19,0x6f,0x39,0x19,0x60,0x11,0x1e,0x73,0x0e,0xb2,0x7f,0x92,0xbd,0xd8,0x1f,0xca,0x79,0x4f,0xf0,0xb8,0xa4,0xb6,0x22,0x42,0x7b,0x0d,0xb7,0xa5,0xc7,0x7d,0x3f,0x07,0x9e,0x98,0x06,0x36,0x18,0x51,0x85,0x1f,0x6a,0xcd,0x24,0x27,0x68,0x7a,0x1d,0x4a,0x1e,0x82,0xa1,0x0e,0x4e,0x2a,0xa5 },
{ 0xdd,0xe5,0x60,0xe8,0x0e,0x5a,0x8b,0x1c,0xb8,0x62,0x31,0x79,0x6a,0xec,0xa0,0x14,0xaa,0x1c,0xfa,0x19,0x64,0x2f,0xb7,0x01,0x82,0xa3,0x7f,0x27,0x23,0xec,0xa5,0x7b,0x4d,0x70,0x22,0xa5,0x02,0xae,0x78,0x71,0x0d,0x82,0x13,0x81,0x86,0x09,0x58,0x8f,0x72,0xb5,0xb0,0x06,0xdf,0x50,0xbd,0x08,0x00,0x81,0x89,0xdf,0x7c,0xef,0x3e,0x8a },
{ 0x68,0x2f,0x73,0x33,0xb7,0xa5,0x15,0x17,0x81,0x9b,0x90,0x93,0xf3,0xdb,0xe1,0xe8,0x7a,0x72,0x47,0x4d,0xb7,0x53,0x21,0x22,0xbc,0x2f,0x16,0xf0,0x75,0x08,0xa7,0xae,0x9c,0x37,0x4d,0x8a,0x3f,0x67,0xc1,0x84,0xfa,0x34,0x7f,0x21,0x5d,0xda,0xfb,0x8a,0x84,0x44,0x63,0xd0,0xf1,0x03,0x0b,0x29,0x83,0x7d,0x81,0x00,0xa0,0xcf,0xef,0xdc },
{ 0x37,0x3c,0x97,0xcf,0x8f,0x3a,0xbb,0x58,0x15,0xd5,0x60,0xeb,0x8d,0x30,0x2a,0xcb,0x50,0x4d,0x05,0x69,0x58,0xb0,0x85,0x73,0xdd,0x6a,0x4e,0x34,0x98,0xb0,0x1f,0x01,0x78,0x10,0x75,0x42,0x85,0x07,0x09,0xa5,0xa1,0x1d,0x28,0x0e,0x98,0x06,0x06,0x01,0x92,0xf9,0x75,0xd6,0x66,0x6f,0x7e,0xad,0x20,0x90,0x03,0x78,0x6e,0xcb,0xf3,0x3e },
{ 0xdb,0x34,0xa5,0x50,0x49,0xd9,0x4a,0x10,0xef,0xee,0x81,0xb8,0x2e,0x22,0x48,0xbf,0x38,0x4e,0x0c,0x34,0x1e,0x5b,0xec,0xa0,0x7a,0xe4,0xa6,0x33,0x8d,0x1e,0x04,0xfc,0xe8,0x78,0xd7,0xbe,0xdb,0xb0,0x95,0x8c,0xa3,0x82,0x0c,0xb7,0x83,0x8e,0xe9,0x5c,0x5c,0xaa,0x87,0x12,0x47,0xae,0xbf,0x0f,0xc0,0x4d,0xf5,0xed,0x41,0x0e,0x83,0x03 },
{ 0x48,0x25,0xf0,0xbc,0x4c,0x22,0x46,0xf6,0xe4,0xa2,0xab,0x2e,0xa7,0xfc,0x41,0xf1,0x13,0x49,0x67,0x9c,0x5a,0x44,0xfe,0x08,0x17,0xc6,0xef,0x18,0xb1,0x6d,0x54,0x88,0x8b,0x13,0x8a,0x21,0xf6,0xb5,0xba,0x16,0x9b,0x11,0x66,0x2e,0x1e,0x86,0xac,0xad,0x13,0xd3,0x8a,0xcd,0xa8,0x6e,0x95,0x4f,0xd1,0xe5,0x3c,0xfc,0x25,0xd0,0x4c,0x90 },
{ 0xae,0xd1,0x68,0xbc,0x65,0x64,0x45,0xfb,0x0d,0xa4,0x4f,0xd7,0x11,0xca,0x64,0x43,0xa8,0x58,0xdd,0x12,0x54,0x22,0x86,0xb7,0x1a,0x9d,0xf5,0xe7,0x83,0x1c,0xf3,0x9d,0x16,0xa7,0x85,0xe0,0x12,0xc4,0xdd,0x56,0x46,0x90,0x9b,0x51,0xa8,0xd9,0x0f,0xd1,0x79,0xd8,0x85,0xfa,0x59,0x2b,0x96,0x79,0x1d,0x32,0x8d,0x2c,0x93,0x35,0xe4,0xc1 },
{ 0x81,0x59,0xf0,0x5c,0xa4,0x16,0x73,0x53,0x12,0x90,0x1f,0xbb,0x80,0xf2,0x07,0x0d,0x15,0xcb,0xed,0x42,0xdd,0x08,0x9a,0xca,0xb0,0xc2,0xdc,0x66,0xe9,0x30,0x79,0x0b,0xd4,0x0f,0xe8,0x20,0x5c,0x9f,0x34,0x3c,0x69,0x01,0x5e,0xd4,0xbf,0x15,0xd8,0xe9,0xdf,0x66,0xbe,0x46,0x4d,0x35,0x46,0x2a,0xfd,0x88,0x40,0xf6,0x70,0xdc,0x9f,0xfe },
{ 0x2d,0x7a,0x4d,0x3b,0x3b,0x7e,0x2f,0x59,0xde,0x88,0x25,0xc5,0x0b,0xfc,0x11,0xc3,0xa6,0xa9,0x12,0x3a,0x8e,0x06,0x9b,0xd4,0xda,0x5d,0xc2,0x20,0xdb,0xdb,0x32,0x5c,0xdf,0xfa,0x01,0x19,0x3c,0xec,0x35,0x9c,0x9b,0x71,0xa2,0x47,0xff,0x8e,0xc3,0xe0,0x71,0x38,0x2b,0xb1,0xef,0xb5,0x2f,0x02,0xa5,0xf2,0x7b,0x08,0x8d,0x90,0x4d,0x7c },
{ 0x8e,0x5f,0xb8,0xbc,0xe0,0x1d,0xc0,0x26,0xb5,0xc7,0x06,0x63,0x10,0x00,0xe2,0x5d,0x96,0x89,0x1f,0x29,0x95,0x8d,0xa6,0x18,0xde,0x20,0xf4,0x14,0xa7,0x87,0x99,0x32,0x2d,0x18,0xea,0x6a,0x6e,0x15,0xba,0x5d,0xf0,0x58,0xcd,0x33,0xb4,0x53,0x27,0x7a,0xb7,0xf0,0xfd,0x9b,0x94,0xcd,0x3f,0xee,0xa5,0xa0,0xc9,0x23,0x2d,0xde,0x4d,0x49 },
{ 0xff,0xdd,0x5f,0xb4,0x91,0x66,0x89,0x95,0xe8,0xd6,0x1a,0xcd,0x17,0x71,0x6e,0xa5,0x61,0x85,0xfc,0xac,0x7b,0x25,0x3b,0xf5,0x52,0xda,0x83,0x44,0x83,0xf2,0x18,0x02,0x8a,0x9a,0x39,0x59,0xf2,0xd7,0x05,0x4b,0x25,0x51,0x46,0x87,0x8a,0x6f,0x60,0x15,0x0e,0x3f,0x80,0xe8,0xc3,0x1e,0xbb,0xba,0x3c,0x06,0xf6,0xf0,0x71,0x66,0x62,0x51 },
{ 0x4f,0xe6,0x86,0xe1,0x4b,0xe5,0x3e,0x53,0x83,0xfa,0xf5,0xf1,0xd3,0x95,0x91,0x6f,0x05,0x65,0xa5,0xc6,0x2b,0x53,0x6a,0xd3,0x2c,0xfa,0x4b,0x98,0x28,0xd1,0x0d,0xa8,0xc8,0xae,0x26,0xb4,0x8f,0x3a,0x22,0x33,0x16,0xa5,0x2e,0xbe,0x1c,0x6b,0x05,0x27,0xde,0xb9,0x0b,0xab,0x0f,0x38,0x94,0x16,0xd8,0x86,0xad,0x20,0x96,0xbd,0x6f,0x5d },
{ 0x44,0xa0,0xc8,0xc1,0x96,0x8b,0x43,0x05,0x23,0x1a,0x67,0x99,0xca,0x77,0x31,0x14,0x1a,0xa6,0x10,0x91,0xe4,0xfe,0x1e,0xc5,0x71,0xd0,0x6d,0x8d,0x23,0x32,0x79,0xae,0x31,0xdf,0x36,0x9b,0x86,0x3a,0x94,0xc5,0xa2,0x00,0xa0,0xc4,0xfe,0x63,0xe7,0x1a,0x84,0xa2,0x7d,0x99,0x94,0x4c,0x82,0x7f,0x85,0xd8,0x40,0x4d,0x05,0x9f,0xe9,0xca },
{ 0x11,0xc1,0xbd,0x2c,0x28,0xbe,0x0a,0xf4,0xeb,0x68,0x62,0x13,0x65,0xd3,0x9e,0x09,0x7f,0x30,0x5d,0xc4,0x0e,0xb0,0x0b,0xff,0x19,0x95,0xda,0x2c,0xf7,0xed,0x1b,0x98,0x6c,0x4e,0xf4,0x5e,0xa3,0x92,0x38,0x59,0x02,0x05,0x50,0xfb,0xc4,0x4b,0xe7,0x1c,0x42,0x0e,0x23,0xde,0xc0,0x2e,0xe4,0x46,0x2a,0x7f,0x86,0xe1,0x23,0xcb,0x7d,0x50 },
{ 0xf8,0x94,0xee,0xdc,0xe2,0xf2,0xbc,0x89,0x5e,0x7c,0x6a,0x39,0xc1,0xe9,0x46,0x34,0xab,0x47,0xf9,0x7f,0xbc,0x54,0x55,0x6c,0xe4,0xf3,0x26,0x82,0x89,0x34,0x41,0xe9,0x44,0xab,0x90,0x00,0x83,0x81,0xc1,0x76,0x3b,0x6b,0xa9,0x5e,0x71,0x3b,0xca,0x05,0x8a,0xa4,0xac,0x77,0x5b,0xb0,0x2c,0x6d,0xf3,0x3a,0xf2,0xaf,0xbf,0xe5,0xd4,0x2f },
{ 0xeb,0x0f,0x5e,0x21,0xb5,0xbe,0xb5,0xbb,0x20,0x5c,0xd8,0x79,0x5d,0x0a,0xe5,0xdd,0x44,0x27,0x01,0x80,0xa7,0x4d,0xb2,0x9a,0x7c,0xf2,0x8b,0xf6,0xba,0xd2,0x40,0x7d,0x5d,0x6f,0x8c,0x51,0x97,0xc6,0x30,0x50,0x0e,0x16,0x61,0xd2,0x1d,0xff,0x56,0x1e,0x14,0x3c,0x67,0xaf,0xae,0xd1,0xd3,0x0b,0x92,0x48,0xd3,0x85,0xf0,0x81,0x27,0x27 },
{ 0xd5,0xbd,0xf9,0x45,0xb1,0xcb,0xff,0x17,0x94,0xcd,0x62,0x03,0xef,0x62,0xcb,0x06,0xdf,0x16,0x45,0x96,0x8e,0x35,0x6c,0x2b,0xd1,0xba,0xea,0xf4,0xd2,0x95,0xaa,0xc8,0xa0,0x7a,0x2e,0x4f,0x8b,0x31,0xa1,0xdf,0x7a,0xac,0xd6,0x84,0x0d,0x50,0x8a,0x58,0x3c,0xa5,0x54,0xbe,0xf4,0x90,0x72,0x58,0xf8,0x91,0xbc,0x42,0x75,0xd4,0x0f,0x49 },
{ 0x9d,0x59,0xb6,0xf4,0x02,0x39,0xc7,0xa5,0x5c,0x51,0x6f,0x86,0x52,0xae,0xba,0xb8,0x8a,0x31,0xdd,0x07,0x9c,0x5a,0xa3,0x82,0x79,0x95,0xf0,0x65,0x4e,0xc1,0xa6,0x69,0x89,0x44,0x1d,0x3b,0x0b,0xbb,0x93,0x22,0x43,0x5f,0xf7,0x79,0x7a,0x01,0x7f,0x25,0x61,0x85,0x72,0x62,0xbb,0xc9,0x14,0x30,0x24,0xdc,0x2b,0xd8,0xc6,0xdc,0xae,0xb8 },
{ 0xcd,0x19,0xde,0x43,0xf4,0x33,0x77,0x37,0x3a,0xa5,0x21,0xb0,0xd8,0xa0,0xbb,0x94,0x4a,0x07,0x74,0x6b,0xb8,0x29,0xa6,0xdb,0x40,0x60,0xb2,0xb9,0xba,0x03,0x1a,0x05,0xff,0xca,0x8c,0x4b,0x0f,0x1b,0x5e,0xaa,0x53,0xf0,0x2c,0xf4,0xd3,0x7f,0x98,0x22,0xe6,0x5b,0x9e,0xa0,0x9b,0xd9,0x50,0xab,0x27,0xc1,0xa2,0xad,0xc9,0xfb,0xec,0xde },
{ 0xac,0xd6,0x25,0x89,0xcb,0x61,0x25,0x59,0x19,0xc7,0xcc,0xee,0x7d,0xec,0x13,0xe2,0x23,0x2b,0xa1,0xa8,0x54,0x6f,0x97,0xe5,0x9a,0x66,0xc0,0xb7,0x66,0xd2,0xc0,0xb2,0x9a,0x4a,0x45,0x79,0xbd,0x50,0x4a,0x41,0x36,0xa1,0xcc,0xcc,0xb9,0xbd,0xe7,0x4b,0xcd,0x1b,0x48,0x78,0x1c,0x2e,0x73,0x2f,0xd9,0xb4,0xdd,0xf2,0x54,0x01,0x51,0xbb },
{ 0x67,0xd3,0x82,0x40,0x30,0x05,0xa2,0x00,0x89,0xe4,0x61,0x3c,0x31,0x39,0xb7,0x2f,0xcc,0xd4,0x67,0xff,0x67,0x2b,0xfd,0x35,0x1c,0x7b,0x05,0x83,0xdb,0xc6,0x92,0xe8,0xf8,0x0d,0x11,0x78,0x3e,0x94,0xe4,0x05,0x03,0xbb,0x9b,0x8f,0x72,0x7b,0x93,0xd2,0xb1,0x68,0x84,0xe2,0x88,0x34,0x34,0xfb,0xd4,0xfc,0xc9,0x58,0x86,0xcd,0x85,0x48 },
{ 0xa5,0xd3,0x2c,0x02,0xd4,0xcd,0x34,0x29,0x1d,0xee,0x16,0x2f,0x10,0xee,0x85,0x5a,0x22,0x92,0x35,0x07,0xc0,0x16,0x58,0x36,0x62,0xac,0x86,0xba,0x93,0x9d,0x8b,0xc9,0xdd,0xc6,0xf6,0x5a,0xa4,0x97,0x04,0xf1,0x19,0x6d,0x1a,0xb2,0x71,0x01,0x18,0x3d,0x4d,0x2e,0x0a,0x39,0x47,0x0d,0xe5,0x9a,0x26,0x7f,0x3a,0x8b,0x7d,0xe0,0x90,0xc9 },
{ 0x61,0x57,0xe0,0xfb,0xc6,0xf6,0xe1,0x2e,0x68,0x86,0x6f,0xdd,0x74,0x76,0x63,0xf4,0xcd,0x24,0x1d,0x68,0x2b,0xa0,0x62,0x05,0x9a,0x0c,0xe6,0xb1,0x10,0x3f,0xe6,0x04,0x98,0x09,0xb5,0xe8,0x97,0x60,0xd0,0x46,0xb2,0xb6,0x99,0x82,0xab,0xe6,0xfe,0x3b,0x40,0x5f,0xc0,0xf5,0xbc,0x1b,0xe3,0xf0,0x00,0x65,0xe6,0x01,0x6b,0x4e,0x71,0xcd },
{ 0x83,0xdc,0xd7,0xb1,0xe0,0xf4,0x14,0x1a,0xc4,0xe6,0xb7,0x79,0x25,0x75,0xe5,0x27,0x12,0xda,0x94,0x5e,0x19,0x1a,0x12,0xd4,0xb5,0xa8,0xb5,0xdc,0x58,0xbd,0xb6,0x76,0x88,0x7a,0xf9,0xdc,0x28,0xbc,0x7f,0x74,0x54,0x27,0x20,0xea,0x2d,0x7c,0x2f,0x32,0xba,0x42,0xc0,0xeb,0x15,0xa8,0xf9,0x45,0x2a,0xbd,0xfd,0x7b,0xe9,0x2f,0xd1,0x38 },
{ 0x40,0x37,0xab,0x67,0x50,0xe6,0xdd,0x86,0xe3,0xe7,0xb4,0x14,0x01,0xce,0x64,0x84,0x45,0x97,0x37,0xd4,0xb3,0x1d,0xfe,0x7d,0x9d,0x9e,0xdf,0xf6,0xd5,0x26,0x6c,0x2e,0xd5,0x83,0xdf,0xc0,0x64,0x0e,0x6a,0x7f,0xda,0x32,0x4a,0x09,0xbb,0x6b,0x40,0xc5,0x40,0x90,0xe6,0x18,0xd6,0xd1,0xe0,0xce,0xcf,0x8a,0xd6,0xf9,0x00,0x4f,0xbe,0xff },
{ 0x7e,0x1f,0xad,0x27,0x37,0x0b,0xc3,0xec,0x39,0xf0,0x15,0x2e,0xd0,0x99,0x3c,0xac,0xf6,0xf2,0x47,0x02,0x2b,0xc7,0xd6,0xe3,0x9a,0x11,0x9c,0x85,0x46,0xc2,0x12,0x39,0x6f,0x2c,0x81,0x5c,0xd8,0x2f,0x6f,0x7b,0x2b,0xe2,0x04,0x04,0x90,0xa8,0x4f,0x85,0x2b,0xd8,0xd8,0xd9,0xb0,0x0d,0x8e,0x60,0x92,0x96,0xfc,0xf8,0xd7,0x0a,0x62,0x4e },
{ 0x7b,0x6f,0x16,0x95,0xbe,0xd8,0xfa,0x14,0x8b,0xf2,0xa4,0xe9,0xe4,0x93,0x90,0x93,0xc0,0x87,0x6c,0x55,0x01,0xc9,0xac,0x77,0x31,0xd0,0x0e,0x10,0x5d,0xd4,0xaa,0x1c,0xef,0x30,0x68,0xbc,0xa9,0x9f,0x46,0x25,0xba,0xc7,0x79,0x17,0xdb,0x89,0x53,0x1c,0x0c,0x1e,0x9a,0x28,0x23,0x97,0xcf,0x37,0x81,0x62,0xc2,0x40,0x6b,0x8c,0x54,0xde },
{ 0xda,0xfb,0x37,0xa5,0xea,0x23,0x73,0x89,0xa9,0xd7,0xda,0x56,0xd7,0xc9,0xca,0x0f,0xc5,0x46,0xe9,0x28,0xca,0xe4,0x53,0x78,0xb8,0x69,0x52,0x2b,0x30,0x0c,0x7a,0x5b,0x60,0xc2,0xc4,0x19,0xe1,0xa2,0x9c,0x56,0x66,0xcf,0x79,0x7c,0x45,0x60,0xff,0x62,0xff,0xed,0x35,0x5e,0x8b,0x5b,0xf0,0x34,0x1a,0xd3,0xce,0x62,0x99,0x37,0xe1,0x19 },
{ 0xdc,0xdf,0x3e,0x69,0xa9,0x93,0x1c,0x1b,0xb7,0x47,0xa5,0x27,0xc5,0x95,0xbd,0xed,0xc4,0xab,0x48,0x8e,0xf5,0xec,0xdb,0xdc,0x62,0x15,0xad,0x30,0x90,0x06,0x76,0xca,0x43,0x7e,0x05,0x3d,0xa1,0x44,0xec,0x4e,0xe8,0x8a,0x88,0x2e,0x0c,0x8d,0x51,0x6e,0x9d,0x0a,0x4f,0x68,0xf6,0xe9,0xaa,0x50,0x93,0x57,0xf1,0x0d,0x50,0xef,0x0a,0xca },
{ 0xd0,0xf7,0x3b,0xa3,0x3c,0xf6,0x08,0x77,0xf8,0x8e,0x97,0xd7,0x1f,0x47,0x60,0xd2,0x7e,0x1d,0x93,0x70,0x45,0x6c,0x36,0xd4,0x74,0x7a,0xb7,0x4e,0x78,0x4f,0x69,0x00,0xfa,0x4c,0xf4,0xae,0xfd,0x15,0x11,0xa0,0xb1,0xac,0xb9,0x60,0x07,0x64,0x3f,0x95,0xc4,0xbe,0x0a,0x34,0x88,0xad,0xa2,0x01,0x55,0xbd,0x9a,0xe0,0x84,0xe9,0x5a,0xfb },
{ 0xf7,0x4d,0x73,0x64,0xd1,0xe0,0x86,0xf3,0xb1,0xf7,0x6a,0x76,0xbc,0x18,0x17,0xab,0x15,0xa9,0x19,0xb0,0x4a,0xf6,0x00,0x2b,0x37,0x37,0x91,0x05,0x18,0x12,0x7d,0xc1,0x7b,0x08,0x61,0xd7,0x2f,0xf3,0x10,0xf5,0x4f,0x0b,0xf7,0x79,0x22,0x52,0x6c,0x7f,0x4c,0xbb,0x2b,0x84,0x95,0xcf,0xcc,0x66,0x3c,0x01,0x4e,0xd5,0x59,0x15,0x42,0x98 },
{ 0x13,0xf4,0xf8,0x77,0xdb,0x01,0x10,0xc4,0x2b,0x55,0x55,0x87,0x07,0xb4,0x97,0xa1,0xf9,0x4e,0x84,0xac,0x4c,0x81,0xac,0xc8,0xf0,0xb8,0xd2,0xe4,0x80,0x67,0xbc,0xf9,0x12,0x2f,0x9c,0x88,0x86,0x51,0x90,0xdb,0x20,0x5c,0xbb,0xb6,0x1f,0x3b,0x3b,0x7d,0x0d,0xec,0x8a,0x43,0xba,0xfc,0x4e,0x4a,0xbb,0x3d,0x8c,0x9f,0x33,0x1d,0xa7,0xd4 },
{ 0x97,0xe0,0xa6,0xb1,0x73,0x04,0x28,0x13,0x1e,0x64,0x95,0x50,0xcd,0x6a,0x32,0xcc,0xc2,0x1e,0xcb,0xba,0x80,0x3a,0xe7,0x76,0xd2,0x85,0xac,0x9d,0xda,0x3f,0xdf,0xa3,0xf6,0x39,0xbe,0xde,0xd8,0xa5,0xbf,0x22,0x40,0x8d,0x17,0x26,0x88,0xe8,0x04,0xca,0xef,0x25,0xc6,0xa9,0x48,0xd9,0x72,0xd8,0x65,0xe4,0x82,0x72,0xd2,0xa2,0xe2,0xb4 },
{ 0xf4,0x26,0x7c,0x68,0xf8,0xdd,0xd5,0x2f,0x8e,0x58,0xac,0x55,0x7a,0x3a,0x19,0xcf,0x3b,0x05,0x55,0x57,0x9c,0x7f,0xa2,0x8f,0x34,0xed,0x81,0x4d,0xfd,0xee,0x4c,0xc7,0x6d,0xc5,0x00,0xe2,0x12,0x63,0x8b,0x57,0xda,0x77,0xe9,0x37,0x81,0xcf,0x22,0x6d,0xe7,0x1b,0x29,0x0e,0xe1,0x2a,0x08,0x4a,0x25,0xc4,0x02,0xe5,0x77,0x4f,0x43,0x0b },
{ 0x9c,0x64,0x1b,0x8f,0x99,0x23,0x38,0x45,0x5d,0x3b,0xa2,0x9c,0xa7,0xef,0x38,0x3b,0xf8,0x13,0xd6,0x0f,0x21,0x7c,0x81,0xa3,0xb9,0x31,0x7c,0xc7,0x69,0x99,0x83,0xfc,0xaa,0x86,0x0f,0xe3,0x3f,0x34,0x62,0x6f,0xf3,0xf7,0xaa,0x51,0xc7,0xe8,0xb2,0x28,0xfb,0x1e,0x9e,0xeb,0xfd,0x6c,0x59,0x55,0x33,0x35,0xee,0x4d,0x89,0xb7,0x58,0x80 },
{ 0xfa,0xa7,0x66,0x96,0xc0,0x1b,0x29,0xfd,0xf4,0x3b,0xb1,0x37,0x07,0x01,0x2d,0x0c,0x9c,0x52,0x3e,0x91,0x0e,0xc8,0xbd,0x35,0xd9,0xd8,0x58,0x6f,0xd6,0xd7,0x01,0xe1,0x5e,0xd3,0xb9,0xbc,0x4c,0x07,0x77,0x5f,0x87,0xf6,0xc2,0x9c,0x38,0xc6,0x42,0x76,0x8e,0xd3,0x56,0x85,0xe9,0x9f,0x34,0x7d,0xe7,0xb7,0xbd,0x23,0x33,0xaf,0x2b,0x7b },
{ 0x2c,0xf2,0xb5,0x28,0x40,0x8b,0xd5,0x77,0x0f,0x04,0x20,0x28,0x28,0xf5,0x11,0x8e,0x7d,0xd4,0x25,0x5f,0x68,0xd2,0xed,0xe7,0xc2,0xb6,0x50,0x6e,0x76,0x81,0xdb,0x22,0x06,0x4e,0xd3,0x8a,0x80,0xca,0x78,0x64,0x87,0xb7,0x3f,0xe4,0x09,0xd0,0x31,0xcd,0x67,0x3a,0x6b,0xb8,0x5c,0x81,0x41,0x8e,0xaf,0x19,0x7d,0x18,0xcc,0x51,0x19,0x88 },
{ 0x50,0x4d,0x99,0xa0,0xaa,0xcb,0xcf,0xdc,0xc6,0x95,0x5a,0x64,0x39,0x95,0x58,0xc0,0xa0,0x6b,0xee,0xe7,0xbc,0x7e,0x20,0x89,0xae,0x19,0xa3,0xa5,0x41,0x22,0x55,0xd3,0xae,0x19,0x04,0xff,0x67,0x36,0x3f,0xcb,0x89,0xb8,0x90,0x49,0x2d,0x80,0xc9,0xc9,0xe4,0x2d,0x3b,0x76,0xa0,0xb1,0xf7,0x67,0xa4,0x76,0x5a,0x1d,0x78,0xbd,0xde,0xcc },
{ 0xe2,0x27,0xaa,0xce,0xc6,0x7f,0x06,0x73,0xc0,0xb6,0x11,0xeb,0xea,0xb4,0x2d,0x76,0x63,0x92,0xc7,0x71,0xb6,0xb3,0x89,0x4b,0xcf,0x72,0x08,0x90,0xc3,0xbb,0xb4,0x38,0x03,0x01,0xac,0x19,0xce,0x4d,0x1b,0x8d,0x9e,0x86,0x8a,0x3e,0x7b,0xce,0x06,0xd4,0x48,0x36,0xa4,0xc6,0xd7,0xd0,0xcc,0xd2,0xb2,0x3e,0x24,0xfb,0x6b,0x3e,0xbb,0x80 },
{ 0xb4,0x81,0x36,0xb9,0x7f,0x3a,0x48,0x33,0xa6,0x2e,0xab,0x5b,0x45,0x70,0x7b,0x40,0xae,0xdf,0xdf,0xbf,0x35,0x7e,0x04,0x7a,0x8f,0x30,0x54,0x03,0x2a,0x69,0x48,0x44,0xf7,0x50,0xf2,0x59,0xc2,0x45,0x61,0xb6,0xb0,0x78,0x04,0x9b,0xf1,0xcd,0x98,0x6b,0x33,0x87,0xfd,0xc6,0x8f,0x98,0xd3,0x7a,0xd4,0xc3,0xcd,0x7b,0xce,0x4a,0xf6,0x03 },
{ 0xf9,0x4d,0x3a,0xfb,0x9c,0xc6,0x01,0x22,0x3c,0x71,0x52,0x85,0x77,0xe6,0x82,0x3c,0x1a,0xfa,0xa6,0x50,0x38,0xac,0x2b,0x7b,0x81,0x3b,0xd7,0x07,0xd2,0x76,0x6a,0x36,0x95,0xe9,0x58,0x29,0x42,0xea,0x4f,0x8f,0xfa,0xb4,0x93,0x73,0xe3,0x62,0x04,0xd6,0x67,0x84,0xf2,0x01,0x64,0x21,0x33,0x20,0x34,0x66,0x48,0xee,0x64,0x8d,0x5c,0xaf },
{ 0x34,0xac,0xc5,0x8e,0x01,0xf8,0x20,0xdb,0x82,0xe6,0xce,0x11,0xdf,0xe5,0xb4,0x4b,0xf9,0xdf,0xe4,0xdd,0xf5,0xaa,0xdd,0x85,0x37,0x7e,0xe7,0xd4,0xab,0x97,0x9c,0xf3,0xef,0xd2,0x03,0x65,0xb4,0x03,0x74,0x1c,0xc8,0xc8,0x94,0x64,0x7c,0x74,0x85,0x21,0x13,0x32,0x20,0xc3,0xec,0xd7,0xe8,0x9a,0xf4,0x5b,0x20,0x6e,0x5c,0xa4,0xf4,0x33 },
{ 0x28,0xe4,0x9f,0x0d,0x59,0xa4,0xf2,0xff,0x1b,0xe3,0xd1,0x77,0x23,0x6c,0x51,0xa6,0x1a,0xe3,0x26,0x91,0x35,0x65,0x2c,0x55,0x79,0xb4,0x4c,0x6a,0xc3,0x53,0x20,0x80,0x17,0x8d,0xf8,0xe7,0xef,0xee,0xe8,0x31,0x53,0x72,0xd0,0x41,0xa6,0xae,0xd7,0xf5,0x69,0xa0,0x75,0x5e,0xce,0x71,0xec,0xc1,0x29,0xc3,0x49,0xe9,0x56,0xa6,0x9d,0x93 },
{ 0x1d,0xed,0x7d,0x3a,0x80,0x25,0x5d,0xa6,0xfc,0x9f,0x3d,0x15,0xb4,0x61,0x80,0x0c,0xb4,0xb8,0xcd,0x05,0xa1,0xce,0x66,0x75,0x11,0x27,0xf0,0xca,0xd1,0x59,0xa7,0x08,0xcc,0xde,0x61,0x91,0xdb,0x6c,0x9b,0xda,0xbd,0x88,0xf8,0x36,0x8d,0x0b,0xba,0xc4,0xbf,0x2d,0x5f,0x0d,0x49,0x3d,0xe1,0x4e,0xbe,0xa8,0x9a,0xef,0x25,0xf1,0xff,0xd6 },
{ 0xc3,0x10,0x0c,0xb6,0xc0,0xa3,0xa2,0xdd,0x96,0xb0,0xd4,0x4b,0xa4,0x7e,0x95,0x12,0xb6,0x17,0x22,0xc4,0x9d,0xae,0x86,0x72,0xe9,0x47,0x08,0xf3,0xc4,0x64,0x5b,0x87,0xd0,0x23,0xdf,0xbe,0xe7,0x70,0x55,0x77,0x5a,0xee,0xa2,0x25,0x44,0x9d,0xab,0xb0,0x7c,0x04,0x6f,0x26,0xe6,0xbc,0xf9,0x73,0x7a,0xc5,0x84,0x21,0xe5,0xfa,0xce,0x9f },
{ 0xc3,0x90,0x8e,0x85,0x55,0x70,0x50,0x96,0xc5,0xf0,0x0c,0x91,0xec,0x75,0xd2,0x5b,0x1e,0x3c,0xe5,0x24,0x1a,0xb2,0x7f,0x60,0x7e,0xbc,0x4e,0xd9,0x50,0x27,0xb5,0x7e,0xc1,0x91,0x0f,0x75,0x02,0xa0,0xf8,0x58,0xf2,0xaa,0xcf,0xaa,0x10,0xfe,0x67,0x82,0x27,0x5e,0x52,0x8a,0xa5,0xea,0x7f,0x6d,0xe0,0x07,0xb9,0x33,0x13,0x04,0xd0,0x4a },
{ 0x5e,0xe6,0xcf,0xe5,0x1f,0x8f,0x81,0x92,0xf5,0xaa,0x2f,0x80,0xe0,0x5e,0xb6,0x11,0xde,0x6c,0x4d,0x00,0x42,0xb7,0xc4,0xc7,0x91,0x42,0xb4,0x38,0x9e,0x00,0x9b,0x38,0x91,0x4d,0x90,0x6a,0xdf,0xea,0xd7,0xfd,0xfe,0xf5,0xd8,0xf6,0xed,0x72,0xe7,0x37,0x32,0xa1,0xb0,0x77,0xc9,0x99,0xa1,0xe9,0x27,0xfb,0x38,0xd8,0x2e,0x05,0x79,0x4f },
{ 0x1b,0x35,0xac,0x38,0xe4,0xe6,0x78,0x99,0xc1,0xc1,0xd3,0xfe,0x78,0x2d,0x42,0x34,0xcc,0x7d,0x4e,0xc8,0xe5,0xab,0x84,0x7e,0xa1,0xc7,0x54,0x75,0x7d,0x6b,0x27,0x9d,0xf3,0xe6,0xd6,0x43,0x84,0x0d,0x5a,0xb8,0xb4,0x73,0x0d,0x78,0x47,0x0c,0x71,0x49,0x69,0x93,0x8a,0x8e,0x2a,0xf2,0x7d,0x2b,0xd7,0x62,0x56,0x0a,0xa6,0x4a,0x23,0x27 },
{ 0x8e,0x40,0x0b,0x49,0x73,0xed,0xa8,0xd3,0x13,0xd1,0x80,0x2c,0xb3,0xaa,0xe6,0x8e,0x05,0x01,0x2a,0x93,0xb4,0xf8,0x21,0x49,0x98,0x8b,0x98,0xab,0x10,0xf0,0x93,0x38,0xb5,0xb3,0xa9,0xb5,0x34,0x41,0x24,0x85,0x81,0x84,0xaa,0x77,0x17,0xc6,0x44,0x47,0x9e,0xe4,0x50,0x18,0xdf,0xc0,0x44,0x74,0x54,0x65,0xe7,0xc6,0xef,0x1c,0x37,0x42 },
{ 0x88,0xe2,0xc7,0xed,0x0b,0x73,0x5b,0xef,0xcc,0xad,0xdb,0x9d,0x2d,0x37,0xd2,0x14,0xcb,0x22,0x77,0x33,0xb8,0x47,0x1c,0xb0,0xdc,0x99,0xa0,0x1d,0x1b,0xd2,0x84,0xcc,0x8d,0xfc,0x31,0xe4,0x1d,0xa5,0x7a,0xef,0xe9,0x34,0x46,0x7d,0x77,0xeb,0x00,0xc7,0x31,0x6e,0x70,0xcb,0xf1,0x2c,0xfc,0x3b,0xdf,0x26,0xa2,0xf7,0x5e,0x14,0xb9,0x98 },
{ 0x2f,0x61,0x39,0x44,0x72,0x22,0x07,0x1f,0x9e,0x6a,0xaa,0x12,0xd3,0x32,0xf9,0x2a,0x86,0xfd,0x1b,0x70,0x74,0x25,0x54,0x5b,0x6f,0x74,0x47,0x4f,0xa5,0x8f,0x82,0x5c,0xb3,0xf8,0x10,0xe7,0x7b,0x7d,0xda,0x1e,0x09,0x8b,0xa6,0xfb,0x59,0x02,0xf8,0x43,0x46,0x9e,0x94,0xf3,0x9b,0x0d,0xb6,0xa4,0xfb,0x55,0x99,0xf5,0x25,0x62,0xe6,0x4c },
{ 0x5c,0x87,0xdb,0xcf,0xc9,0xcb,0xd5,0x47,0xc8,0x94,0x33,0x68,0x19,0xdc,0x3b,0x92,0xe6,0xf8,0x30,0x7a,0x97,0xcd,0x17,0x79,0x14,0xbd,0x13,0x0f,0x4e,0x9f,0xb9,0x05,0xc3,0x1c,0xbc,0xed,0x6c,0x80,0x70,0x38,0xd8,0xc1,0x9f,0x4d,0x11,0x01,0xcf,0xa6,0xb1,0x54,0x3c,0xdc,0x24,0xad,0xab,0x2d,0xae,0x7e,0x56,0xce,0xb8,0x19,0xe3,0x88 },
{ 0x8c,0xb9,0xad,0xe4,0xf5,0x2a,0x4f,0xb8,0x6c,0xc0,0x0f,0xcf,0x1a,0xfd,0x3f,0x38,0x49,0x8c,0xe8,0xe9,0x39,0x9a,0x12,0xe4,0xdc,0x4e,0x9c,0x5c,0xd4,0x8c,0x36,0x9f,0x68,0xc2,0x23,0xdd,0x5e,0x31,0x17,0xc3,0x0e,0xcb,0x10,0x3d,0x8e,0x1b,0xfa,0xb9,0xcf,0x94,0xc8,0x1b,0x9f,0xaf,0x7d,0xba,0x24,0x06,0xaf,0x10,0xbc,0xca,0xed,0xbb },
{ 0x19,0xc0,0x13,0x4c,0x72,0x7e,0x6d,0x4e,0xdd,0xa6,0x53,0x52,0x7d,0x62,0x2d,0xe8,0xe7,0xb9,0x80,0xb5,0xd2,0x4d,0x98,0xc1,0x9e,0x83,0x00,0xa5,0x0d,0x25,0x4c,0xcc,0x5a,0xc0,0x79,0x87,0x80,0x22,0xcc,0xa5,0x52,0x67,0xca,0x4b,0x13,0x0d,0x45,0xae,0xb8,0xac,0xc3,0x86,0x7e,0xda,0xb2,0x01,0x66,0xee,0xff,0x07,0x54,0x65,0x38,0xa0 },
{ 0xdf,0xb0,0x88,0xce,0x96,0xf2,0xaa,0xec,0x74,0xc7,0x89,0xd1,0xaa,0x86,0xea,0x75,0xe7,0xd0,0x39,0xae,0x98,0x31,0xbe,0x80,0x1b,0x9e,0x25,0xb3,0x57,0x7d,0x7d,0x85,0xd9,0x01,0x64,0x57,0x46,0x92,0xb6,0xf8,0xab,0x88,0xe9,0xa2,0xdc,0xcd,0x44,0xf1,0x48,0x9d,0xf5,0xea,0x5b,0x93,0x11,0x82,0xb4,0x66,0x5f,0xad,0xcd,0x51,0x01,0xa2 },
{ 0x08,0x50,0xa1,0x81,0x30,0xaf,0x5e,0xc3,0xf9,0x62,0xfa,0x33,0x9f,0x60,0xab,0x46,0x4f,0x3f,0x66,0x87,0x96,0x97,0xf5,0xf5,0x9e,0x8c,0x99,0x4a,0x7c,0x47,0x2c,0xdf,0x41,0x13,0xf6,0x7b,0x43,0x1a,0x6e,0xe0,0xd4,0x35,0x9f,0x9f,0x8c,0xff,0x3b,0x8d,0xc4,0xfd,0xac,0x83,0xe5,0x16,0x9d,0x0d,0xc6,0x88,0xe2,0xae,0x75,0x79,0xbb,0x50 },
{ 0x63,0x6c,0xf7,0x4f,0x5b,0x49,0x2a,0x33,0xa6,0x17,0x1c,0xdb,0x75,0x02,0x7b,0x1f,0x75,0x9a,0xa1,0x74,0x78,0xa9,0xc2,0x16,0x91,0x1e,0xe9,0x37,0x94,0xdb,0x8f,0x21,0x78,0xf7,0x70,0x25,0x92,0x83,0x6b,0xa0,0x9f,0x10,0xb0,0xdf,0xcd,0x00,0xa2,0xe9,0x66,0x1c,0x2a,0xe7,0x59,0x36,0x05,0x27,0x65,0x27,0x47,0x1d,0x23,0x05,0x54,0x1f },
{ 0xd3,0xf7,0x94,0xa4,0x38,0xca,0x92,0x0e,0x66,0x29,0x84,0xd5,0x2c,0x36,0xa5,0x87,0x91,0xa0,0x50,0xe8,0xf7,0x52,0x9e,0x3e,0xab,0xeb,0xfb,0xc8,0xfc,0x3d,0xd8,0x97,0x10,0x3f,0x01,0xf8,0xb3,0x2d,0xdb,0x18,0xc4,0xf2,0x01,0x98,0xfb,0xde,0x28,0x97,0xd3,0x1e,0x8b,0x4e,0xef,0x0a,0x0b,0xcf,0x7f,0x2c,0x0e,0x7c,0x99,0xd2,0xd8,0xdd },
{ 0x2d,0x41,0x73,0x4e,0xf2,0x67,0xa1,0xe1,0x78,0xa8,0x45,0xc5,0x09,0xda,0xf2,0x12,0x3a,0xad,0x9b,0xfc,0xb1,0x78,0xa2,0x8a,0x15,0x35,0xd5,0x4a,0x9b,0x3e,0x37,0x8e,0x64,0x3e,0x9a,0x6f,0x45,0xd9,0x14,0xe4,0x6c,0x44,0x24,0xfc,0x39,0xb1,0x10,0xdf,0x7e,0xd7,0xe5,0x41,0xd7,0x5a,0x8e,0x46,0xe2,0xbc,0xfd,0xe6,0x3c,0x68,0xb6,0x3b },
{ 0x69,0xd8,0x29,0x34,0x58,0x90,0xc7,0x6b,0x6a,0x47,0x96,0xe1,0x0d,0x33,0x51,0x1c,0xbe,0xdb,0x4d,0x8d,0x47,0xe5,0x28,0x09,0x2c,0x71,0xcc,0x57,0x1e,0x38,0x67,0xe3,0xa3,0xde,0x3e,0x52,0xdf,0x3a,0x97,0xdd,0x48,0xf3,0x5f,0x22,0x54,0xec,0x7c,0x14,0xe2,0x36,0x06,0x58,0xa5,0x66,0xa8,0xea,0xc3,0x3a,0x28,0x14,0x02,0x04,0xdf,0x83 },
{ 0x55,0x84,0x3c,0x97,0xa5,0xc4,0xc8,0x9c,0xcf,0xc7,0x2c,0x5b,0x9e,0x61,0xcd,0xed,0x50,0xa3,0x30,0x04,0xcd,0x0d,0x6d,0x73,0xc0,0xbe,0xa1,0xbb,0x02,0xa2,0x54,0x18,0xf6,0xfa,0x1d,0x95,0xcf,0x8f,0x8d,0xcc,0x8a,0x09,0x81,0x7e,0xdd,0xf2,0x85,0x88,0xba,0x5b,0x6b,0x26,0x31,0x5a,0x72,0xc9,0x3f,0xb0,0x8a,0x51,0x7b,0xf1,0xf4,0xe8 },
{ 0xfc,0x4a,0xa2,0x7d,0x15,0x88,0xc5,0xff,0xe9,0xdd,0xe6,0x54,0xa7,0x57,0xb7,0x40,0x80,0x81,0xf7,0x6c,0x17,0xb0,0x0e,0xbe,0x14,0xba,0x17,0x14,0x39,0x3b,0xd2,0x73,0x53,0x2c,0x2c,0x76,0xa1,0x1a,0x5f,0xfe,0x57,0x6b,0x40,0x8f,0xac,0xda,0xe6,0x79,0x8c,0xe7,0xc7,0x24,0xa3,0x34,0x56,0x8e,0xe9,0xfa,0x30,0xd5,0x0c,0x40,0x7f,0x88 },
{ 0xa1,0x3d,0xd0,0x72,0x79,0x27,0xb4,0x9c,0xf3,0x15,0xa6,0xe2,0x1e,0x6a,0xe0,0x89,0xde,0xb6,0x8d,0x13,0xef,0x2b,0x46,0x60,0xa1,0xac,0x60,0x5f,0xef,0xde,0xa1,0xeb,0x29,0x33,0xe0,0x9a,0x31,0x3f,0x79,0x57,0x28,0xf1,0xfd,0xea,0x63,0x09,0x82,0xad,0x10,0x9a,0x9e,0x43,0x3c,0xd6,0xd8,0x26,0xbe,0x16,0xc9,0x9f,0x37,0x6a,0x4b,0xb4 },
{ 0x14,0x87,0x1b,0x9b,0x35,0xdf,0x66,0x95,0x73,0x79,0x0e,0xa6,0xb1,0xb6,0xd7,0xf4,0xa4,0x4b,0x03,0x1c,0x11,0xa3,0xdc,0x1f,0x6f,0xc0,0xc6,0x48,0x4d,0x85,0xc2,0x18,0xcc,0xef,0x44,0x92,0x30,0x26,0x4c,0x81,0x30,0xff,0xd5,0x77,0x03,0x4a,0x0e,0xbc,0xd7,0xfe,0xe0,0x37,0x0d,0xba,0xba,0xe5,0xae,0x40,0x34,0x4d,0x3c,0x97,0xc5,0x2f },
{ 0xa1,0x1e,0x84,0x7f,0x0a,0x3c,0x12,0xe8,0xc8,0xcb,0xd6,0x3a,0x53,0x54,0x91,0x83,0x19,0x08,0x03,0x61,0x99,0xc6,0x16,0x78,0x01,0xaa,0xa1,0x3e,0xb9,0x81,0xd9,0xa4,0x78,0x49,0xa2,0x52,0xb4,0x53,0x06,0xa1,0x44,0x00,0xc4,0xd1,0x52,0xbb,0xe0,0x67,0x68,0xe8,0x17,0xf6,0xe6,0xd1,0x41,0x0b,0xf7,0x9e,0xc2,0xc1,0x09,0x7a,0x51,0xd5 },
{ 0x74,0x8c,0x48,0xbf,0x3d,0xe9,0x72,0x2c,0x49,0x6d,0x5f,0xfd,0x7c,0x03,0xf2,0x8b,0x80,0x70,0x3a,0xb2,0x0d,0x4b,0x97,0x5b,0xad,0x0e,0x18,0x6e,0x60,0xc1,0x6a,0xfc,0x08,0x78,0x7a,0x1f,0x0f,0xc3,0x03,0xa9,0x81,0x54,0x55,0x72,0xe6,0x28,0x80,0xd1,0x2a,0x95,0xe1,0xb0,0x04,0xc6,0xdb,0x85,0x3e,0x3b,0xe5,0x66,0x7a,0x0a,0x2c,0x67 },
{ 0x4b,0xd1,0x05,0x43,0x11,0x3c,0x6a,0x54,0xde,0xbf,0x5b,0x74,0x13,0x29,0x28,0x08,0xe8,0xc3,0xa8,0x59,0x19,0xe9,0xae,0x98,0xde,0x5f,0x4a,0x30,0x83,0x13,0xba,0xaf,0x60,0xb7,0x2a,0x00,0x38,0xc0,0x04,0x82,0x58,0xb8,0x62,0x63,0xaa,0x57,0x1e,0x18,0x5b,0x44,0xed,0x0d,0xbc,0x47,0x36,0x3a,0xcb,0x72,0x5d,0x8b,0x99,0xea,0xb3,0xfd },
{ 0x37,0x84,0x90,0xd6,0xce,0xea,0x69,0x02,0x3d,0x3e,0x15,0xbb,0x83,0x4c,0xcb,0xd0,0xd3,0x2c,0x88,0xac,0xc3,0xfb,0x5f,0x21,0x33,0x40,0x24,0x78,0x45,0xeb,0xd4,0x74,0xe8,0x7c,0x5a,0xc1,0x69,0x0a,0x95,0x60,0x56,0x93,0x3f,0x64,0x58,0x42,0xf2,0x82,0x70,0x17,0x62,0x2e,0x80,0x9f,0x00,0x07,0x22,0xeb,0xe4,0xc4,0x68,0xa0,0xe2,0xc9 },
{ 0x98,0x94,0xfc,0x1e,0x90,0x7c,0x72,0x03,0xd5,0xd2,0x99,0x98,0x62,0xe4,0xcf,0x42,0x55,0x4b,0xcc,0x34,0x9d,0x25,0x08,0xf6,0x65,0xe0,0x31,0x95,0x8d,0x93,0xd9,0x13,0xec,0xfc,0x06,0xcd,0x75,0x99,0x33,0x16,0xc4,0xc4,0x0e,0xa5,0x03,0xfd,0x4e,0x05,0xd9,0xf2,0x95,0x48,0x12,0x23,0xe2,0xd3,0x65,0xd6,0xa8,0xc0,0xf0,0xa6,0xb1,0xa7 },
{ 0xcc,0x38,0xf2,0x04,0xe4,0x9b,0x87,0x16,0x65,0x98,0xc1,0xc8,0x41,0xb7,0x91,0x9d,0x1e,0x06,0xbe,0x97,0xb8,0x0a,0x95,0xfc,0xdf,0xd3,0x35,0x48,0x3a,0xee,0xc8,0x66,0x7d,0x9c,0xc3,0x0d,0xfa,0x9b,0xd6,0xa1,0x5a,0xfd,0x34,0x64,0x8b,0xca,0xdf,0x96,0x1d,0x1e,0xa8,0xc1,0x1e,0x20,0x02,0x7a,0xf6,0x88,0xc7,0xf2,0x72,0x24,0x1b,0xc4 },
{ 0xbd,0x3d,0x64,0xaa,0xa5,0xf4,0xa9,0xb6,0xc1,0x9b,0x32,0x89,0x6e,0x6a,0xe7,0x0f,0x70,0x3f,0x7b,0x86,0xac,0x7a,0x72,0xd8,0x8c,0x3b,0x1f,0xc3,0x2d,0xbf,0x30,0xd1,0xc1,0x8b,0x8c,0x0f,0x43,0xa2,0x4e,0x24,0x16,0xc0,0xc0,0x3a,0xfb,0x5b,0xf3,0x27,0x36,0xba,0x26,0xcb,0xbb,0x34,0x1f,0xa7,0x76,0x9f,0x98,0x83,0x33,0x86,0xc6,0x20 },
{ 0x74,0x84,0x18,0xcb,0x55,0xe0,0xf2,0x8a,0xce,0x06,0x68,0x0c,0x24,0xfe,0x88,0xd4,0xb8,0x17,0xec,0xd0,0x91,0x0e,0x99,0x22,0x62,0x45,0x54,0x2c,0xf5,0xcd,0x86,0x9b,0x38,0x2a,0xfc,0x65,0xcd,0x66,0xbf,0x68,0x4b,0x15,0xdf,0xe5,0x32,0x9b,0x6b,0x13,0x11,0xb0,0x89,0xfb,0x6a,0x9e,0xd9,0x04,0xd3,0xeb,0xc3,0x39,0xbf,0x49,0x53,0x16 },
{ 0xf3,0xd0,0x47,0xf0,0xc2,0xcd,0x58,0x41,0xab,0xf0,0x00,0xfb,0x7b,0x49,0x34,0x66,0x88,0x93,0x2e,0x00,0x6c,0x0a,0x3f,0xf9,0xeb,0x07,0xed,0x7a,0x71,0xaa,0x8f,0xe5,0xeb,0xe6,0x5d,0x1f,0x29,0xf5,0x7d,0x44,0xe2,0xf9,0x2d,0xdd,0x05,0x40,0x4f,0x13,0xb9,0x70,0x70,0xb0,0x3d,0x71,0x20,0x23,0x4f,0x07,0x59,0x2f,0x6b,0xf8,0xd5,0xd1 },
{ 0x3f,0x73,0x2b,0x6a,0x5d,0x92,0x3c,0x42,0x91,0xa0,0x4a,0x36,0x55,0x63,0x56,0x2f,0x5c,0xe4,0xe0,0xb7,0xc4,0xb7,0x76,0x67,0x0f,0x69,0x15,0x38,0x7c,0x75,0xc1,0x6b,0xb0,0x5c,0xed,0xcb,0x5b,0x3b,0xb0,0x4f,0x4e,0x3e,0x6b,0x4e,0x0c,0x57,0xc2,0xb7,0x12,0x5b,0xcd,0xd4,0x26,0xa0,0x0e,0xe6,0x68,0x45,0xcc,0x44,0xdf,0xf5,0x1f,0x7d },
{ 0x0b,0x4c,0x5e,0xa2,0xae,0x00,0xf6,0xdf,0x11,0xe5,0x81,0x00,0x49,0xbf,0x50,0x5a,0x29,0x98,0x65,0xb6,0x47,0xae,0xc9,0x61,0x4f,0x7d,0x6f,0x20,0x9f,0xe6,0x2d,0xab,0x96,0x39,0x4e,0x11,0x2b,0x66,0xd4,0x2b,0xfe,0x0d,0x32,0x17,0x49,0x20,0x3e,0x8b,0x04,0xea,0x62,0xd9,0xb7,0x8b,0xa1,0x37,0xe7,0x35,0xd9,0x44,0xed,0x79,0x7b,0x82 },
{ 0xc6,0xd6,0x88,0xfd,0xc1,0x87,0x13,0x19,0x26,0xb9,0xae,0xbc,0x80,0xde,0xed,0xc9,0xcf,0x90,0x90,0x03,0x8e,0x3e,0x68,0xd3,0xf5,0xef,0x7e,0x79,0xe6,0x6a,0x97,0x6c,0xc9,0x39,0x7f,0x98,0x1a,0x25,0xd4,0x00,0x0b,0xf9,0xb1,0x9c,0x47,0x8c,0x14,0x49,0xc1,0xcc,0x66,0xf5,0xaf,0x25,0xec,0xc2,0xae,0x66,0xc6,0x2c,0xe6,0xe5,0xaf,0x7d },
{ 0xfd,0x05,0x47,0x02,0x11,0x77,0xfe,0x06,0xcd,0x66,0xf7,0xba,0xfd,0x84,0x1e,0x70,0x71,0xcc,0xe5,0xc0,0xb4,0x75,0xaa,0xe7,0x2b,0x25,0x94,0xef,0x99,0x16,0x67,0xfa,0xec,0x6e,0x10,0x72,0x2d,0x0f,0x3f,0x72,0x8d,0xf6,0x78,0x3a,0x71,0xd8,0xfa,0x11,0xeb,0xfc,0x77,0x25,0xaf,0x1f,0xfe,0xc6,0xbc,0x0f,0xae,0xc5,0xf4,0xde,0xd0,0xd0 },
{ 0x01,0x5d,0x41,0x07,0xf0,0xf6,0x76,0x60,0x41,0xcf,0x0a,0xd1,0x1c,0xa5,0x2b,0x77,0xcc,0x79,0x63,0x65,0x5d,0x9e,0x08,0x43,0x20,0x23,0x17,0xdb,0x53,0xbe,0x1f,0x60,0x87,0xb2,0xcb,0x74,0xec,0xc2,0xc9,0x11,0x3f,0x48,0x8b,0x00,0xc2,0xbb,0xef,0xe7,0x7e,0xd7,0xf1,0x93,0xf1,0x93,0x42,0xe9,0x58,0xd8,0x86,0xce,0x86,0x8d,0xee,0x7f },
{ 0x84,0x9a,0xd3,0xb7,0xdc,0x53,0x93,0xf3,0x77,0xb2,0x4c,0x35,0xfb,0x2c,0x87,0xcd,0xdf,0x86,0x96,0xfb,0x34,0x15,0xae,0x7d,0xe3,0xa0,0x9c,0x6a,0xed,0x0c,0x43,0x60,0x9b,0x6b,0x4a,0xd9,0xe0,0x0f,0x68,0x44,0xa0,0x44,0x55,0x54,0x35,0xe4,0x46,0x1a,0x77,0x96,0xf9,0x05,0x68,0x2e,0x42,0xdb,0x6c,0xca,0x6a,0xab,0xaa,0xfd,0xed,0x7d },
{ 0x4f,0x96,0x11,0x01,0x2c,0x66,0xe9,0x14,0xf7,0x05,0x54,0xf5,0x75,0xe1,0x81,0x57,0xb3,0xa5,0xed,0x16,0xeb,0x9e,0xa2,0xff,0x29,0xfc,0xc1,0xce,0x35,0x07,0xfc,0x0b,0xf5,0x91,0x25,0x77,0xa6,0xb8,0x32,0xc5,0x54,0x8e,0x59,0x98,0x81,0x29,0x7f,0xba,0xa8,0x8f,0x0f,0x5b,0xcb,0x2b,0xb0,0x39,0x5b,0x7a,0xd1,0x70,0x39,0x8d,0x93,0x26 },
{ 0xca,0xb3,0x1f,0x2a,0x8e,0x57,0x48,0x83,0x14,0xa0,0xab,0x19,0xfd,0xf7,0xac,0x0b,0x13,0x1a,0x37,0x3b,0x07,0x87,0xbc,0x31,0xcc,0x1e,0x6d,0xc2,0x47,0x76,0xf8,0xc1,0xc2,0xc3,0xd3,0xca,0xf8,0x40,0xd8,0x30,0x1b,0x00,0x1c,0xcb,0xaa,0x7e,0xf8,0xbb,0x42,0xe1,0xa1,0x9c,0x7a,0x6b,0x00,0xae,0x6a,0xac,0xc2,0x52,0x77,0x89,0xa1,0x3c },
{ 0x25,0x2f,0xa3,0xe6,0xcd,0x1d,0xff,0xe5,0x4c,0x04,0x22,0x00,0xc2,0x62,0x22,0x21,0xb5,0xa6,0x16,0x1c,0x1f,0x52,0x4d,0xfe,0xde,0xe4,0x1f,0x40,0xd7,0x83,0x1c,0xeb,0x71,0xf5,0x7b,0x92,0xc1,0x34,0xf9,0x31,0xbf,0x74,0x2f,0xd1,0xc4,0x9a,0xd4,0x8f,0x2d,0x1e,0xec,0x4f,0xc0,0x18,0x26,0x67,0xc5,0x8d,0xde,0x20,0xfd,0xff,0xe6,0x27 },
{ 0xed,0x3e,0x42,0x25,0xcd,0x53,0x74,0x4c,0x59,0x91,0xd1,0x70,0x57,0xae,0x89,0x0a,0xd7,0x7e,0x2f,0xee,0xa8,0xe1,0xb5,0x44,0xeb,0xdb,0xf1,0x32,0x92,0x9a,0xab,0x34,0xb4,0x74,0x3a,0xa5,0x6c,0x03,0x9c,0x21,0x14,0x7d,0x43,0xdf,0xd2,0xea,0x8a,0x73,0x9e,0x1e,0xef,0xea,0xc9,0xa2,0xb9,0x59,0x1c,0x8e,0x7b,0xe4,0xb9,0x0e,0x26,0xc1 },
{ 0x6c,0xd7,0x68,0x3c,0xc5,0x25,0x75,0x93,0x53,0xbc,0x2b,0x5b,0x41,0x7d,0x7e,0x42,0x6b,0xd2,0xa5,0x5b,0x10,0xa6,0xd6,0x04,0xcb,0x39,0x2e,0x96,0xd8,0x0b,0xce,0xb3,0x28,0x3b,0x21,0x72,0xb1,0xed,0xe7,0xfb,0x1e,0xf0,0x44,0x29,0x7d,0x30,0x13,0x8f,0x0d,0xe3,0x7e,0x4e,0x18,0x6e,0x3e,0x0e,0xf5,0x3f,0x7a,0x0c,0x6c,0x33,0x5b,0x87 },
{ 0xae,0x4e,0xf5,0xf6,0x96,0xf4,0x1a,0xc1,0x6a,0xc7,0x3d,0x47,0xb4,0x49,0x97,0xa6,0x7f,0xda,0x58,0x07,0x99,0x5a,0xc3,0x87,0x07,0x53,0x9a,0xb7,0x5b,0x10,0x36,0xcf,0x9c,0x78,0x36,0xe0,0x89,0x87,0x6c,0xfe,0xae,0x94,0xf8,0x12,0x1d,0xc3,0xe6,0xc0,0x20,0x6a,0xcf,0x8b,0x34,0x84,0xeb,0x1c,0x13,0x50,0xa7,0xc2,0xb6,0xf5,0x7b,0x6b },
{ 0x01,0x87,0x0b,0x35,0xc2,0x41,0x2f,0x1d,0x60,0x75,0x48,0xc8,0x5d,0xaa,0x91,0x56,0xb6,0x45,0x57,0x60,0x21,0x3d,0xbc,0x0e,0x21,0x7c,0x55,0x41,0x14,0x36,0xed,0x9e,0xa5,0x9a,0x30,0x09,0xf2,0xed,0x78,0xe2,0x70,0x16,0xae,0x78,0x3b,0x06,0x28,0x6b,0xc3,0x8f,0xb7,0x48,0x69,0x4b,0x17,0xed,0x60,0xe3,0xf3,0x1d,0xfd,0xa2,0x5c,0x03 },
{ 0x48,0xc7,0xfd,0xb2,0x09,0xf1,0x3b,0x88,0x39,0xce,0x1d,0xa6,0x03,0x4f,0xf5,0x49,0xf8,0x91,0x01,0xc3,0xeb,0xe9,0x7d,0xcc,0xd6,0x2d,0x4b,0x8a,0x55,0x20,0xce,0x5f,0xf8,0x2c,0xfe,0x0c,0xf0,0x8d,0xcb,0xbc,0x19,0x10,0x76,0x41,0x24,0xe1,0xb1,0x4e,0xb2,0x40,0x1f,0x16,0xd2,0x7c,0x27,0x63,0x81,0x3e,0xa8,0xb9,0x3e,0x87,0xa3,0x79 },
{ 0xe0,0x9a,0x40,0x24,0xc6,0x07,0x9f,0x8e,0xc5,0xe1,0x6c,0xe4,0xce,0x4f,0x26,0x0c,0x67,0xa3,0xd3,0x93,0xc6,0xb3,0xd3,0xa8,0x88,0x42,0xca,0x8c,0x98,0x88,0xfe,0x0a,0xd9,0xc1,0x3f,0x57,0xad,0xf5,0x94,0x45,0x05,0x13,0x07,0xbe,0x98,0x0c,0x24,0x02,0x27,0xe3,0x0a,0xca,0x41,0x45,0x0d,0xa9,0x00,0xa7,0xe1,0x0b,0x24,0xc0,0xfb,0x73 },
{ 0xca,0x68,0x53,0xb8,0xbf,0x7f,0x43,0x7b,0x5c,0x88,0xbd,0x20,0x2b,0x23,0x5f,0x76,0xe7,0x2e,0xa1,0x27,0x05,0x53,0x28,0x43,0x45,0xb6,0x23,0x63,0xad,0x50,0x75,0x9c,0xbb,0x06,0x39,0x33,0xca,0x06,0xcd,0xb9,0xe7,0xd8,0xaf,0xb8,0xeb,0x19,0x47,0xb4,0x97,0xbb,0x8e,0xe4,0x2a,0xcf,0xb5,0xea,0xdb,0x45,0xbe,0xbe,0xc1,0x70,0x05,0x6b },
{ 0x0d,0x5f,0x00,0x0d,0x6e,0x95,0x12,0xf1,0x80,0x1d,0x36,0xaf,0x94,0xee,0x98,0x9d,0x57,0x3a,0x56,0x06,0x08,0x5a,0xaf,0x91,0xb4,0xd2,0x8c,0x75,0x6f,0xc2,0xe1,0x40,0x23,0x30,0xd3,0xe0,0x5e,0xe8,0x22,0xa7,0x7d,0x1f,0x94,0xd1,0x3f,0xcf,0x9f,0x46,0x53,0x5c,0xad,0x83,0x7c,0x2b,0xb7,0x91,0x64,0x1d,0x0e,0x29,0x6d,0xf1,0x0c,0x5a },
{ 0x4b,0x84,0xc8,0x0b,0x11,0xb4,0x65,0x8e,0x80,0xc0,0xfc,0x16,0x22,0x5a,0xf4,0x55,0x55,0xeb,0x14,0xf5,0xd7,0x32,0xd9,0xa8,0xe0,0x39,0x46,0xea,0x4d,0x91,0x15,0xbf,0xfd,0x2f,0x6b,0xe1,0x22,0xc8,0x6c,0xe5,0x15,0xe1,0x50,0xd9,0x92,0xd5,0x91,0x77,0xef,0xdf,0xad,0x8d,0xa6,0x29,0xb1,0xa8,0x31,0x9d,0x42,0x71,0x8b,0x7c,0x13,0xae },
{ 0x9c,0x36,0xa4,0xc1,0x4d,0xce,0x6a,0xb0,0x49,0xcd,0x31,0x29,0xc2,0x88,0x87,0xd5,0xbd,0x7a,0x14,0x69,0x69,0x16,0x09,0x06,0x6d,0xe6,0x96,0xd3,0x5c,0x1c,0xf7,0xcd,0x8d,0x45,0x9f,0x28,0x57,0x2a,0x39,0xe6,0xc2,0x4c,0xbf,0x9f,0x15,0xb8,0x96,0xdf,0x39,0xed,0xe6,0xd5,0x74,0x54,0x61,0x8d,0xd7,0x2e,0xdb,0x67,0x36,0xfd,0x03,0x4b },
{ 0xce,0x1a,0x85,0x25,0xe3,0x53,0x92,0x97,0xfb,0x2e,0x7d,0xcd,0xf9,0xab,0x94,0x83,0x60,0xb2,0xe2,0xa7,0xc9,0x39,0xaf,0xdf,0xf8,0x44,0xef,0xbc,0xce,0x53,0x3c,0x0e,0x50,0x41,0x7f,0xbe,0xa2,0xe9,0x1a,0xc2,0x99,0x1a,0xd6,0x56,0xc5,0xaf,0xe7,0x6b,0x55,0xb0,0x7f,0x66,0x15,0x00,0x05,0x8b,0x67,0x50,0xc1,0xcf,0xff,0x5f,0x4f,0x71 },
{ 0xe6,0xed,0xa8,0x19,0xfd,0x0d,0xcf,0x76,0x8c,0x5f,0x57,0x16,0x18,0x28,0x0e,0x95,0x65,0x22,0xa7,0x38,0x32,0x81,0xee,0x48,0x7c,0xa5,0x1a,0xc6,0x69,0x2b,0x81,0x49,0x01,0x6d,0xcb,0xff,0x92,0x04,0x0b,0x5a,0xbc,0x72,0xa4,0x48,0x70,0x02,0xc2,0xd6,0x14,0x17,0x94,0x96,0xcc,0xd0,0x2a,0xad,0xf2,0x6f,0xd2,0x3a,0x8e,0x1f,0xf1,0x6d },
{ 0x6f,0x03,0x86,0xd9,0x30,0xe3,0xad,0x67,0xe0,0x9e,0x76,0xe0,0x45,0xc2,0x84,0x26,0x6d,0x8d,0x7a,0xd3,0x74,0x92,0xc6,0x57,0x90,0x81,0x68,0x2c,0x58,0xdb,0x4b,0xf3,0x52,0xca,0x07,0xd0,0xae,0xe9,0x92,0x1f,0x5f,0x1b,0xe0,0x94,0x33,0xc4,0x5f,0x38,0xb6,0xec,0xa2,0x10,0x99,0x38,0xa6,0x3e,0xdf,0xd5,0x4f,0x96,0xfe,0xcd,0x34,0xa8 },
{ 0x88,0x83,0xc9,0x8e,0x7f,0x50,0xda,0xef,0x97,0xed,0x52,0x26,0xc6,0x8a,0x08,0x76,0x2f,0x4b,0x2e,0x59,0xcc,0x61,0xdd,0x2a,0xfa,0x68,0x50,0x56,0xb4,0x40,0xb4,0x8c,0x8a,0x6e,0x7a,0xce,0x2b,0xdc,0x88,0xac,0x04,0xfd,0x7e,0xbf,0x1b,0xd4,0xe3,0x78,0x3a,0x96,0x37,0xfc,0x1e,0x11,0xd4,0x95,0xb6,0x2f,0xd7,0x64,0xb8,0xc0,0xe8,0x41 },
{ 0xa5,0x28,0xa0,0x17,0xdd,0x90,0xeb,0x51,0xbf,0xff,0x84,0xd7,0x67,0xc4,0x2c,0xbc,0x57,0x5c,0x1f,0x2f,0x24,0xfe,0x18,0x22,0x1e,0xc7,0x1f,0x84,0x8c,0x4b,0x5d,0xb2,0x35,0x5c,0x2b,0x0d,0xb4,0x94,0x5b,0x59,0x6f,0x7b,0x3e,0x7e,0xb6,0xbd,0x29,0x07,0x43,0xf0,0x10,0x19,0x5b,0x23,0x29,0x38,0x39,0x41,0x9d,0xb5,0x6d,0xd7,0x1e,0xd4 },
{ 0xc1,0xea,0x3b,0x1a,0xed,0x9c,0x0c,0x13,0xeb,0x56,0x3a,0x73,0x42,0x0f,0xab,0xba,0x14,0x72,0x0c,0xcb,0xf2,0xf3,0xfa,0xca,0x8c,0xd9,0xcb,0xd9,0x76,0x99,0x63,0x52,0xa1,0x05,0x70,0x7f,0xd3,0x11,0x5e,0x9e,0x29,0x72,0x39,0x60,0x2c,0x6f,0xa3,0x0d,0xdd,0x28,0xd0,0xcc,0x6e,0xc5,0x3a,0x9d,0x6d,0x2d,0x3e,0x28,0xd6,0x3d,0xcd,0xad },
{ 0xc2,0x42,0x21,0x44,0xda,0x11,0x0e,0x0a,0x08,0x0b,0xcb,0xfd,0xd6,0x94,0x27,0xe0,0x7b,0xcf,0x53,0xb5,0x74,0x52,0x59,0x8e,0x97,0xf1,0xec,0x54,0x68,0x8a,0x7c,0xd9,0x31,0x18,0x12,0x27,0x51,0x2d,0x13,0x74,0x61,0xd5,0xc2,0x97,0xd3,0xd3,0xf4,0xef,0x83,0x44,0x70,0x7a,0xce,0x7b,0xa8,0x09,0x6c,0xb6,0xcb,0x40,0x1f,0xe0,0xda,0xd9 },
{ 0x04,0x51,0x5e,0x1c,0xe3,0x67,0xf1,0x9b,0xcd,0xa1,0xee,0xe4,0x5f,0xd5,0x74,0x2c,0x36,0xef,0x51,0xee,0xbc,0x31,0xde,0x5d,0x7a,0x62,0xaa,0x12,0x04,0xc0,0xf1,0x8c,0xb8,0x1c,0xb0,0xc9,0x1e,0xcf,0xb5,0xf2,0xce,0x80,0xeb,0xc3,0x8e,0x58,0x43,0x61,0x13,0x63,0x63,0x97,0x9c,0x0b,0x9f,0xee,0x26,0xa6,0x0a,0x6d,0x23,0xe1,0x72,0xb1 },
{ 0xea,0xe4,0x2e,0x38,0xcb,0xbd,0x15,0xed,0xd0,0x70,0xea,0x75,0xf0,0x81,0x39,0x14,0x35,0x90,0x75,0x33,0xbd,0x67,0x16,0x5a,0x06,0xc6,0x08,0xa5,0x9c,0xc8,0xf0,0xfe,0x13,0x2f,0xd9,0x48,0xea,0x63,0x7d,0x9c,0x5e,0x3a,0x3a,0x47,0x63,0x23,0xf2,0xa8,0xf1,0xfe,0x72,0xbf,0x79,0xe0,0x4f,0x07,0xb4,0x88,0xb3,0x6e,0xf6,0x82,0x6a,0x69 },
{ 0x46,0x91,0xc6,0x0d,0xbf,0x4c,0x8c,0x52,0x8f,0x92,0x24,0x1f,0x49,0x5a,0xea,0x76,0xb8,0x1a,0x51,0xc6,0xf8,0x81,0xa6,0xcd,0x86,0x8b,0x8d,0xc0,0xca,0x07,0xd5,0xbf,0xa6,0xc1,0xfe,0x4a,0x34,0xf9,0x14,0xb7,0x3d,0x1a,0x63,0xb8,0x96,0x34,0xbe,0x1c,0x41,0xb0,0x12,0xa3,0x0a,0xfc,0xae,0x34,0x70,0xfe,0x42,0xda,0x03,0x95,0x5f,0xde },
{ 0x5a,0x4d,0xae,0x91,0xde,0xf7,0x5e,0xff,0xc4,0x4c,0x1e,0x9d,0xfa,0x64,0xde,0xc4,0x60,0x68,0x4d,0xb1,0xef,0x77,0x36,0xc2,0x4d,0x9c,0xe7,0x24,0x05,0xf2,0x9c,0x6c,0x87,0x96,0x42,0x6f,0x5f,0x91,0xb9,0x9f,0x6d,0x07,0x26,0xcb,0xa7,0x9b,0xe2,0xfe,0x76,0x76,0xfe,0x61,0xce,0x05,0x61,0xc5,0xaf,0xf5,0x1c,0x23,0xcd,0x8a,0x7f,0xee },
{ 0x24,0x80,0xf2,0x52,0xee,0xc6,0x8c,0x4c,0xb6,0x22,0xc8,0x9c,0x69,0xb2,0x66,0x8a,0xc8,0x12,0xa0,0x24,0xb2,0x50,0x06,0xb5,0xf8,0x0e,0xca,0xc1,0xc6,0x80,0xa4,0x04,0xcd,0xd5,0x93,0xf0,0x69,0xba,0x40,0x08,0xb1,0x24,0x3b,0x28,0x6a,0x7f,0x8b,0x53,0x1b,0xa1,0xfb,0x64,0x37,0x98,0xb7,0x5a,0x83,0xd4,0x47,0xd1,0xdb,0x80,0xcf,0xd8 },
{ 0x48,0xac,0xee,0xe5,0x62,0xb8,0xe2,0x2b,0x47,0xf3,0xb5,0x65,0x7b,0xf2,0x98,0x6e,0x16,0xbc,0xfd,0xb4,0x4a,0x14,0xa1,0x28,0xd1,0xda,0xe9,0x5c,0xa5,0xaf,0x78,0x73,0x0f,0x85,0xcf,0xd1,0x10,0x08,0x19,0x01,0xcd,0x7b,0xbf,0x72,0x20,0xf5,0x2d,0x4a,0x5c,0x9c,0x78,0xc0,0xed,0xcb,0x47,0x75,0x78,0x38,0x98,0x14,0xb1,0x4a,0x11,0xb6 },
{ 0x47,0xf8,0x81,0xec,0x46,0x7b,0x59,0x40,0xcd,0x3c,0x91,0xc4,0x4f,0x28,0x1e,0x8d,0xca,0x68,0x35,0x69,0xbd,0xc3,0x0e,0x6f,0x74,0xb5,0x9d,0x52,0x5a,0x48,0xaa,0xc1,0xd5,0x86,0xc3,0x0e,0x70,0xd9,0xe0,0x90,0x95,0xdb,0xec,0xcf,0xc7,0xa7,0x68,0x34,0x27,0xd3,0xb4,0x5b,0xf9,0xe8,0x4e,0x91,0x3a,0x11,0x4a,0x30,0x03,0x7e,0x88,0xc0 },
{ 0x1b,0xfe,0x19,0x05,0xca,0x17,0xf7,0x67,0x2d,0x76,0x91,0xca,0x42,0x04,0x26,0x2b,0x28,0xe0,0x3d,0x98,0xa6,0x18,0x9b,0x4a,0x23,0x2e,0xc1,0xa2,0x9e,0xe4,0x33,0x25,0x37,0xa3,0xde,0x25,0x16,0xb1,0x8c,0x07,0xcc,0x6c,0x1e,0xb3,0xc7,0x05,0x37,0x78,0x41,0xa6,0x05,0x84,0xd5,0x4c,0xab,0x9c,0xc4,0x2b,0x2a,0x95,0xa8,0x39,0x97,0x82 },
{ 0x28,0xb7,0x3a,0x08,0xd4,0x1c,0x1d,0x3a,0x97,0x00,0x20,0xa0,0x06,0x45,0x88,0xa0,0x07,0x68,0x57,0x2b,0xc8,0xbb,0x0a,0x58,0x35,0x89,0x37,0xf1,0x3a,0x8b,0xb5,0x13,0x0d,0x7c,0xfb,0x3e,0x2e,0x2c,0x5d,0x21,0x19,0xb0,0x09,0xab,0x6c,0xcb,0x34,0x5f,0x0d,0x6d,0x54,0x07,0x8d,0x5c,0xb2,0xbf,0x88,0x61,0x8b,0xbb,0x6e,0xa4,0xce,0xe9 },
{ 0x31,0xea,0x59,0xab,0xe3,0xcd,0xea,0x0a,0xf4,0x87,0xd5,0x2e,0x25,0xe7,0x3c,0x5e,0xe6,0xca,0x85,0xe4,0x35,0x00,0x77,0xec,0x0e,0xa2,0x67,0x4c,0x7a,0xab,0x20,0x82,0x32,0xde,0x4c,0xb1,0xc2,0x10,0xdc,0xd7,0xcc,0x92,0x31,0xc9,0x81,0x4f,0x7d,0x77,0x95,0xa0,0x28,0x00,0x85,0xce,0x17,0x34,0x24,0xee,0x19,0xb3,0x62,0xca,0xde,0x98 },
{ 0xee,0x82,0x8a,0xfc,0x24,0xa1,0xc7,0x59,0x8b,0x7b,0x19,0x76,0x01,0xe2,0x05,0x83,0xf2,0x04,0x21,0x33,0x15,0xf9,0xe8,0x2e,0x42,0x38,0xad,0xa0,0xf6,0x7f,0x64,0xa3,0x05,0x60,0x46,0x70,0x61,0x74,0x36,0xfb,0x37,0x5e,0xd9,0x3a,0xa1,0xa0,0x22,0xd1,0x8c,0x56,0x26,0x8f,0x43,0x1f,0xfb,0xc0,0xdc,0x2d,0xfd,0x9a,0x87,0xac,0xeb,0x88 },
{ 0xad,0x69,0xbc,0xd3,0xd5,0x9d,0x6a,0xc0,0x82,0x34,0x2b,0xc6,0x01,0x93,0xf6,0x00,0x38,0x9a,0x79,0x83,0x38,0xbc,0x0a,0x23,0x7a,0xea,0xc7,0x26,0x15,0x96,0x94,0x58,0xdc,0x0c,0x42,0x08,0x29,0x45,0xf6,0x82,0x1e,0x42,0xad,0x29,0xaa,0x83,0x21,0xd1,0x3a,0xf2,0x92,0x9a,0x18,0x45,0x0f,0x04,0xc1,0x07,0x23,0xbb,0x8a,0x00,0x5f,0x56 },
{ 0x97,0x32,0xcf,0xac,0x72,0xfa,0x88,0xec,0x8c,0x83,0x3e,0x73,0x97,0x82,0xdb,0x33,0x8f,0x59,0x10,0x1e,0xfb,0xca,0x7a,0x50,0xb2,0x61,0x65,0xd3,0x62,0x30,0xec,0x68,0xd2,0x95,0xb6,0x84,0xc4,0x7d,0x33,0x10,0xe5,0x16,0xb4,0xc6,0x43,0x7e,0x02,0x7c,0x27,0x97,0x49,0xf5,0xc1,0x17,0xbb,0x5a,0x8b,0x89,0xa9,0x5e,0xe9,0x3f,0xe5,0x04 },
{ 0x67,0xd7,0xb3,0x92,0x99,0xcd,0x5b,0x77,0xc4,0x77,0xac,0xec,0x10,0x11,0x24,0x7e,0x94,0x4c,0x49,0xd7,0x59,0xd2,0x6d,0x33,0x9b,0x79,0xc2,0x95,0x27,0xb7,0xe0,0xdb,0x83,0xd4,0x34,0x61,0x95,0x35,0x42,0xdc,0x48,0xff,0xc9,0x3b,0xaa,0x46,0x77,0xc0,0x8a,0xa6,0xe7,0x92,0x51,0x37,0x81,0xd8,0x0f,0xd4,0x21,0x58,0x87,0xf6,0xa6,0x41 },
{ 0x02,0x4b,0x92,0x97,0xdf,0xcb,0xf4,0x52,0x62,0x15,0x58,0xbc,0xbe,0x7b,0xc0,0xae,0x2e,0xfc,0x0f,0x87,0x38,0xa3,0xae,0x86,0x4e,0x82,0xee,0xf7,0xe1,0x72,0x6b,0xf7,0xd6,0xbf,0x66,0x6b,0xbc,0x0f,0x34,0x45,0x2f,0x5d,0x45,0x9b,0xa7,0xc4,0xdd,0x23,0x48,0x7b,0xdb,0xa4,0xef,0x53,0x35,0x4f,0xaa,0x6a,0x3d,0x68,0xcc,0x24,0x6c,0x84 },
{ 0xb1,0xf9,0xfb,0xea,0x48,0x66,0x7e,0x6e,0x3c,0xa3,0x50,0x18,0x9c,0xf7,0xf8,0x00,0xd6,0x42,0x72,0x45,0xec,0x42,0x63,0xc8,0xe6,0xcc,0xe3,0x94,0x32,0x39,0xac,0x3e,0x7b,0xc6,0xe9,0xa5,0x17,0x05,0x82,0x2b,0xac,0xa7,0xb2,0x2c,0x84,0xb9,0x72,0x06,0x1c,0x5c,0x49,0x99,0x31,0x7a,0xa4,0x9d,0x5d,0xe9,0x02,0xb3,0xdf,0xfc,0xa6,0xa3 },
{ 0x4b,0x12,0x1f,0xc2,0xd9,0xc3,0x9a,0x49,0xaf,0x42,0x20,0xa3,0xca,0xfd,0x97,0x8b,0x9d,0x07,0x33,0x0c,0x88,0x88,0x73,0xff,0x30,0xf6,0x87,0x88,0xc0,0x2f,0xb4,0x33,0xbf,0x34,0x77,0xf6,0xf5,0x02,0x20,0xb3,0x7a,0x4d,0x10,0x80,0x1f,0x72,0x56,0xf1,0xfc,0x73,0x6f,0x1c,0x9c,0x82,0xb0,0xa5,0x49,0x77,0xec,0x5b,0x29,0x85,0xb0,0x65 },
{ 0x75,0x8a,0x25,0x2c,0x47,0xe2,0xae,0xd1,0x1f,0x94,0xc3,0x9c,0x24,0xe7,0x3d,0x10,0x5f,0x60,0x84,0x80,0xa5,0x52,0x57,0xa3,0x30,0xf3,0x0f,0x5f,0xd2,0xf7,0x92,0xc1,0x00,0x70,0x15,0xf8,0x79,0x67,0x1a,0xa5,0xc3,0x61,0x30,0xc7,0x33,0xd2,0xb3,0x97,0x70,0x48,0x2a,0x2b,0x53,0xdd,0x4b,0x77,0xb0,0x6e,0xbb,0x6e,0xf8,0x46,0xc6,0xda },
{ 0xcb,0xf5,0x9e,0x6c,0x41,0x62,0x05,0x21,0x19,0xb7,0xc8,0xbd,0x0a,0x51,0x09,0x92,0x49,0x91,0x59,0xd2,0x33,0xd4,0xbe,0x8a,0xec,0x5f,0x08,0x38,0x9a,0xf1,0x5d,0x93,0xff,0xf5,0xb9,0x19,0xe5,0xd1,0xd6,0xb0,0xeb,0x67,0x15,0x91,0x44,0x55,0x97,0xa1,0x66,0x64,0x98,0x1b,0x99,0x83,0x3f,0x05,0xbf,0xd8,0xd1,0x82,0xcb,0x47,0x8d,0x65 },
{ 0x0c,0x0b,0x71,0xc3,0xfa,0xe8,0xba,0xda,0x0a,0xe8,0x97,0xcb,0xbc,0xa2,0x75,0xa7,0x85,0xa5,0x09,0xc5,0x87,0x87,0xe0,0xc7,0x31,0xe8,0x39,0x52,0xc3,0x1b,0xc5,0xf3,0x6e,0x5f,0xbe,0xdc,0x01,0x14,0x0b,0x38,0x10,0x8c,0x25,0xf0,0xa4,0x5b,0x0c,0x59,0x30,0x18,0xd7,0x0c,0x30,0xb3,0xdd,0x1c,0x7a,0xb8,0xbb,0xcf,0x38,0xfe,0x2e,0x52 },
{ 0x09,0x39,0x57,0x3b,0x1f,0xd4,0x17,0xb7,0xb0,0x19,0xda,0x73,0xe5,0xb4,0x01,0x01,0x6c,0x24,0xcc,0x2e,0x40,0x41,0xd1,0xfa,0x81,0x3f,0xe2,0x8f,0xd1,0x3b,0x3b,0xf9,0x90,0xc5,0xae,0xef,0x35,0x3d,0x3b,0x25,0x9a,0xea,0x21,0x04,0x9a,0x5b,0x27,0xdb,0x18,0x1d,0xb8,0xe5,0x2b,0xa3,0xfd,0x9b,0x9a,0x02,0xa7,0x71,0xe8,0xb7,0x51,0x9d },
{ 0xad,0x4a,0xfa,0xc5,0xa9,0x74,0x31,0xb4,0xf7,0xf9,0xd8,0x33,0x31,0xf7,0x78,0x39,0x69,0x5d,0xde,0xae,0x45,0x1e,0xd8,0x5a,0x66,0xcd,0x91,0xb6,0xca,0x41,0x48,0x97,0xf6,0xe2,0x2e,0xa2,0x16,0x1b,0x42,0xdd,0xae,0x08,0xfa,0x10,0x47,0x44,0x23,0xb7,0x86,0xa5,0xad,0x35,0xab,0x61,0xfa,0xc1,0x41,0x64,0x90,0xa2,0x05,0xf0,0xba,0x3c },
{ 0x58,0x0c,0x1a,0x3b,0x6b,0xab,0x70,0x87,0x5a,0xb6,0x79,0x6f,0x29,0x1a,0x89,0xdd,0x33,0x10,0xa0,0xfe,0x36,0x4f,0xd5,0x90,0x0e,0xef,0x63,0x5e,0xe1,0xae,0xd1,0xfc,0xe2,0xd1,0x90,0x0e,0x36,0x0b,0x7a,0xf8,0xe5,0x39,0x0d,0xe2,0x6a,0xda,0x8d,0xd6,0x56,0xdc,0xb5,0x59,0x2d,0xcc,0x18,0xff,0x14,0x55,0xd5,0xe6,0x85,0xf4,0x1c,0xba },
{ 0x2d,0x06,0xc1,0x3c,0x51,0xb5,0xcf,0x31,0x82,0xe8,0x65,0xe2,0x29,0x66,0x37,0x55,0xd3,0x4e,0x48,0x61,0x2e,0x28,0xa7,0x02,0xc4,0xfd,0x9f,0x3b,0x05,0x52,0xe1,0xe7,0x08,0xc7,0x0c,0x01,0xd7,0x49,0x74,0x4a,0x29,0xa7,0x26,0x9d,0xf0,0xfa,0x8e,0xf1,0x48,0x06,0x04,0xce,0x7f,0xbc,0x52,0x1d,0xa7,0xcd,0x8f,0x71,0x29,0xe8,0x73,0x8b },
{ 0xed,0xc9,0x9e,0x7c,0xfc,0x09,0xf9,0x2e,0x80,0x27,0x66,0xcd,0x72,0xc9,0x16,0x5a,0xb7,0xa5,0x04,0x44,0x99,0x69,0x6d,0xb2,0x80,0x61,0xc2,0x82,0xfe,0x31,0xca,0x80,0x17,0x26,0x90,0x1b,0xd7,0x20,0x43,0x78,0xef,0x31,0x40,0xa6,0x2f,0x22,0x92,0xf2,0x20,0x23,0x59,0xe9,0xc4,0x87,0xeb,0x10,0xfd,0xf1,0xd6,0xa8,0x47,0xe6,0x93,0x54 },
{ 0x8a,0x33,0xd4,0xe5,0xa7,0x1e,0xb1,0x40,0xaa,0x48,0x73,0x60,0x18,0xcb,0x7a,0x3f,0x16,0xa3,0xa6,0x60,0x25,0xb0,0xc5,0xa7,0x44,0x8b,0x05,0x5b,0xa9,0x29,0x08,0x89,0x77,0x4d,0xe2,0x90,0x34,0xf9,0x50,0xaa,0xe9,0xd8,0x9e,0x7f,0xda,0xec,0xc7,0x23,0x0b,0x99,0xbd,0x95,0x8c,0x7b,0xcf,0x2a,0x71,0x93,0x69,0xbe,0x75,0x62,0xb0,0x1c },
{ 0x3c,0x3a,0x33,0x62,0xfa,0x4d,0x09,0xe7,0x59,0x73,0xef,0x3c,0xe9,0x2c,0x94,0xd5,0x4f,0x1f,0xa3,0xd2,0x93,0xd4,0xc2,0x67,0x85,0xac,0xd5,0xf1,0xbc,0x4d,0x60,0x3b,0x60,0x56,0xc4,0x83,0x91,0xea,0x8a,0xc5,0xac,0x40,0x5b,0x53,0xf5,0xdd,0xc5,0x8e,0xfb,0x05,0xc5,0x98,0xfd,0x9a,0xac,0x67,0xdd,0xea,0xc8,0xb6,0xe9,0x1e,0x25,0xed },
{ 0x68,0x0d,0x8e,0x46,0x34,0x80,0x16,0x43,0xd1,0xa7,0x0e,0x5a,0x4e,0xfc,0xed,0x69,0xdb,0xa5,0x17,0x49,0x07,0x3e,0x37,0x7e,0xf6,0x05,0x1c,0x82,0x83,0x6c,0xc6,0x4f,0x15,0x71,0xcd,0x07,0xd5,0x6a,0xa6,0xe5,0x55,0xc5,0x85,0x92,0x6d,0x87,0x81,0xfe,0xc5,0x26,0xe2,0x5b,0x6e,0x78,0x60,0xd8,0xb9,0x98,0xe6,0xa5,0x48,0x14,0xda,0xc4 },
{ 0xd1,0xf8,0x2d,0x51,0x8d,0x0d,0x2b,0x3a,0xe7,0xba,0xd3,0x45,0xad,0xb2,0xd7,0x37,0xbf,0x02,0xd4,0xde,0xcb,0x21,0x0a,0x88,0x6d,0x3d,0xe8,0xc0,0x2a,0x4c,0x70,0x66,0xce,0x01,0x43,0x50,0xfe,0x0c,0x62,0x69,0xaa,0x63,0xc5,0xbd,0xae,0xaa,0x4a,0x4b,0x95,0x0b,0x32,0xb4,0x59,0x8e,0x3b,0x83,0xf0,0xe9,0x6d,0x99,0x01,0xa0,0x17,0x31 },
{ 0xc1,0x5e,0xed,0x3c,0x46,0xf0,0xd0,0xed,0xa5,0x0c,0x76,0x34,0xe8,0x22,0x42,0xdf,0x8d,0xe8,0xcb,0x20,0xb3,0x5e,0xbf,0xc2,0x93,0x12,0xad,0x30,0x5a,0xfe,0xbd,0x17,0x97,0x50,0xb4,0x59,0x47,0x63,0x50,0x1b,0x7e,0xed,0x9d,0x52,0x51,0x6b,0x76,0xee,0x1f,0xb9,0xca,0xfb,0xe3,0x0b,0x49,0x0c,0x01,0x55,0xab,0x18,0x3b,0xf4,0x13,0xe6 },
{ 0x33,0x5a,0x32,0xbf,0x13,0xe5,0x7e,0x26,0x1b,0xb7,0x48,0x4b,0x5b,0x38,0x1d,0x14,0xe9,0x64,0x31,0x14,0x4f,0x97,0x26,0x44,0xd8,0xf6,0x6c,0x3f,0xdf,0xf0,0x7c,0xfd,0xe2,0x1e,0x19,0x4a,0x39,0xd4,0x28,0x44,0x36,0x50,0xda,0x47,0x5b,0xb2,0xe5,0x9c,0x5e,0x98,0xdd,0x7e,0x19,0x8a,0x86,0x4e,0x71,0x61,0x6f,0x2b,0x7f,0xf9,0x58,0x01 },
{ 0x1b,0xca,0x77,0x05,0x1d,0x33,0x14,0xfb,0xca,0xd5,0x75,0xf2,0x4c,0x2f,0x62,0x34,0x8a,0x66,0x86,0x93,0x55,0x78,0xae,0xdb,0x3f,0x56,0x78,0xbb,0x85,0x01,0x51,0xff,0xe9,0xa5,0x6e,0x09,0x46,0xaf,0x9b,0x83,0x68,0x4a,0x0c,0x70,0xdc,0xe3,0x5d,0x16,0x67,0xab,0x23,0x33,0x0c,0x4d,0x8a,0xdd,0x09,0xc5,0x29,0xd3,0x7e,0xdc,0xa3,0x97 },
{ 0xa8,0x65,0x5e,0x7c,0x47,0xe7,0x5a,0x44,0x81,0x7d,0x3c,0x34,0x0f,0xb5,0xe3,0xbb,0x0a,0xb8,0x3a,0xed,0x39,0xcc,0x22,0x41,0x81,0x51,0xf7,0x53,0xe5,0x8f,0x5b,0xca,0xf3,0xa8,0x9d,0x1b,0xbf,0x46,0xc5,0xa2,0x2a,0xd5,0x61,0xe7,0x64,0x26,0x5e,0x77,0xd1,0x84,0x15,0xb2,0xeb,0xa1,0x37,0x8c,0xd6,0x96,0xee,0x81,0xb0,0xe2,0x5d,0x23 },
{ 0x98,0x87,0xf5,0x35,0xb1,0x32,0x03,0x15,0x9f,0xad,0x4a,0xf8,0xe0,0x7f,0x1c,0x9b,0x69,0x16,0x24,0x84,0xac,0x31,0x2e,0x3d,0x3c,0x92,0x20,0xc8,0x0c,0xec,0x58,0x0e,0x01,0xab,0x0d,0xb8,0xf0,0x71,0x40,0xdb,0x25,0x92,0x37,0x74,0x8e,0x23,0x1d,0x19,0xbe,0x62,0xaa,0x52,0x20,0xeb,0x74,0xb8,0x60,0x27,0xf4,0x49,0x36,0x1d,0xf8,0xfd },
{ 0xf4,0xc3,0x31,0x32,0xe6,0x82,0xa2,0x8f,0x61,0x06,0x0b,0x66,0x4b,0xff,0xbc,0x19,0x7b,0x47,0xde,0x5d,0x07,0x19,0xdb,0x24,0x79,0xa0,0x28,0xe9,0xa9,0xe0,0x67,0xf9,0xcc,0xdc,0xec,0xf8,0xc6,0xee,0x8d,0x07,0x78,0x9f,0xcf,0x68,0xcf,0xf2,0xd9,0xcb,0xba,0x83,0x7f,0x68,0x6b,0x12,0x88,0x2f,0x67,0xb1,0x0c,0xbc,0xc7,0x55,0x83,0xbe },
{ 0x5b,0xf1,0x75,0x1e,0x45,0x4e,0x2e,0x33,0x19,0xf6,0x44,0xaa,0x24,0x64,0xf9,0x62,0x2a,0xdb,0xfe,0xa8,0x50,0x64,0xd0,0x0e,0x7e,0x6b,0xa6,0x94,0xb3,0xb7,0x69,0x1c,0x3f,0x93,0x90,0x44,0xf9,0x40,0xb9,0x13,0xa3,0x76,0xb1,0x8d,0x2b,0x3c,0x7f,0xe3,0xf6,0x20,0x7a,0x70,0x6c,0x6d,0x0b,0x15,0xdd,0xf1,0x7f,0x6f,0x70,0xf9,0x65,0x39 },
{ 0xe0,0xf2,0x51,0xdf,0x0f,0xc2,0xa1,0x09,0xd7,0x3e,0x36,0xea,0xfd,0x8d,0xc1,0xa7,0x2d,0xd0,0xe0,0xdf,0x8c,0xce,0xa3,0xc2,0x21,0x4a,0x92,0xc9,0x50,0x09,0xdf,0xfb,0xae,0xce,0xad,0x89,0x47,0x1f,0x38,0x40,0x1f,0x61,0x9f,0x9f,0xa5,0xad,0x80,0xb1,0xf3,0xc6,0x0f,0xef,0x0f,0xb8,0xc2,0xe2,0x33,0xe9,0x11,0x4e,0x49,0xab,0x4b,0x6f },
{ 0xda,0xe8,0xad,0x60,0xaa,0x3a,0x7a,0xd1,0x26,0x69,0x59,0xae,0xc7,0xde,0x13,0x1f,0xbe,0x1e,0x6f,0x56,0x71,0x58,0xdb,0xa3,0x83,0x24,0x55,0xde,0xdf,0x8a,0xd0,0x08,0x89,0x1a,0x15,0x0d,0x96,0x58,0x4e,0x78,0xb6,0x25,0x7e,0x86,0x4b,0x3b,0x25,0x95,0xff,0xed,0x56,0x41,0x91,0x02,0x8b,0x93,0x53,0xc9,0xf0,0x7b,0xe1,0x15,0x76,0x31 },
{ 0x9b,0x1e,0x9c,0x0e,0x9f,0x2a,0x9f,0x87,0x32,0x97,0x31,0x32,0xb1,0x89,0x41,0x13,0x9b,0x14,0x37,0xa9,0x30,0x64,0x65,0xcf,0x06,0xf3,0xbc,0xb6,0x73,0xb4,0xb5,0x93,0x36,0xf1,0x01,0x56,0x1a,0x01,0xe8,0x82,0x0e,0x71,0xfc,0x5a,0x1a,0xcc,0xf4,0x5d,0xc2,0xf0,0xd4,0x91,0x0c,0xa2,0xf1,0xd6,0xd5,0xdc,0x37,0xa0,0x7b,0x01,0x7c,0x1c },
{ 0x3b,0x67,0x77,0x98,0x14,0x9e,0xea,0x56,0x5c,0x0d,0x80,0x03,0xa0,0x22,0xcb,0x71,0x13,0xfb,0x32,0x12,0xfa,0x87,0x1a,0x0f,0x9b,0xb2,0x05,0x65,0x19,0xb9,0x87,0x8e,0x3e,0xda,0x42,0x2f,0xce,0xbb,0xcd,0xa6,0xb4,0x6f,0x6d,0x6d,0x7d,0x14,0x4d,0x09,0xc6,0x27,0x06,0xc1,0x85,0x2d,0xf0,0x2b,0xbf,0xaf,0xa3,0xa1,0xfc,0x1a,0x30,0x14 },
{ 0x90,0x7c,0x1c,0xaf,0x9f,0xb8,0x3a,0x5a,0x50,0x8c,0x89,0xe6,0xec,0x39,0xcc,0x70,0xb1,0xfa,0x7f,0x04,0xed,0xc4,0xd9,0x7e,0x19,0x40,0x78,0xc1,0xb5,0xe3,0x24,0x00,0x5c,0x97,0x46,0x78,0x43,0x8c,0xa8,0xa4,0xb5,0xcf,0x36,0x27,0x74,0xba,0x29,0xef,0xae,0xcd,0x79,0x88,0xfe,0x33,0x12,0x99,0xd2,0x5e,0x3f,0x18,0x6a,0xf5,0x8d,0x2c },
{ 0xa3,0x3d,0xa9,0x24,0x5a,0xf0,0x9c,0xab,0x63,0x2b,0x10,0x85,0xa9,0xa2,0x59,0xfe,0x63,0x49,0x99,0xc0,0x4f,0x3d,0xf8,0xb1,0xd8,0xab,0x0e,0xc0,0x9c,0x73,0xcd,0x33,0xad,0xde,0x2c,0x11,0xc9,0x3c,0x70,0x6e,0xf0,0x8e,0x5e,0xec,0x36,0x45,0xa4,0x5c,0x30,0x2b,0x23,0xa7,0xaa,0x0e,0x2c,0x66,0x93,0xb1,0x7f,0xba,0x9a,0x77,0x5f,0x72 },
{ 0x10,0xac,0x84,0xe9,0x6e,0x8e,0xf3,0x5b,0xc5,0x84,0xc7,0xb2,0xc4,0x43,0xe4,0xf7,0x43,0xda,0x5e,0xdc,0xbc,0xa0,0x56,0x69,0x86,0x8c,0xa6,0xc3,0xb5,0x4c,0xf3,0xf6,0xa8,0x98,0x80,0xd5,0x61,0x89,0xf2,0x36,0x77,0x24,0x4c,0xa2,0x0b,0x57,0x8e,0xee,0x47,0x95,0xd9,0x3b,0x33,0x0a,0x6d,0x2d,0x0a,0x4f,0xb9,0x2f,0x82,0xd3,0x70,0x74 },
{ 0x7e,0xd3,0xfc,0x31,0xd1,0xa8,0xca,0x13,0x66,0xb4,0x6c,0x79,0xde,0xa4,0x2a,0xa6,0x05,0x83,0x14,0x10,0x93,0x9b,0x16,0x4f,0xcf,0xcd,0x80,0x6c,0xa1,0x1a,0x52,0xdc,0x76,0x58,0x45,0xf9,0xdb,0xda,0xe1,0xd0,0x24,0xc7,0xa8,0x0b,0xb4,0x1a,0x77,0x55,0xf0,0x1b,0xae,0xd7,0x93,0x52,0xf9,0x46,0x2f,0x87,0xb9,0x9a,0x6f,0xef,0xab,0xd1 },
{ 0x59,0x05,0xe6,0x63,0x61,0xce,0xca,0x4f,0x72,0xe4,0xaa,0xed,0x33,0x26,0x4c,0xa0,0x24,0x20,0xa9,0xcf,0x9b,0x9e,0x42,0xe9,0x69,0xde,0x06,0xa0,0x26,0xc2,0xc9,0x67,0x43,0xcc,0x0a,0x17,0x00,0x2a,0x00,0x19,0xc2,0x62,0x40,0x55,0x7e,0xc2,0x3c,0x94,0xa0,0x93,0xfd,0xcd,0xef,0x9c,0x6e,0x82,0x87,0x29,0x05,0xc0,0xa4,0x0b,0x20,0xfd },
{ 0x7f,0x98,0x32,0x85,0x1b,0x57,0xaa,0x84,0x7c,0x76,0xd3,0x13,0x4f,0xd4,0xb2,0xb3,0xf9,0x8f,0xd4,0xcd,0x06,0xa1,0x18,0xe4,0x64,0x68,0xb4,0x1f,0x69,0x83,0x9e,0x05,0xaf,0xf6,0xef,0x06,0x78,0xb3,0xbd,0xf9,0x3e,0x6d,0xa4,0x2d,0x87,0x79,0x53,0xea,0xab,0xb8,0x0e,0xe0,0xca,0x26,0x29,0xf1,0x27,0x15,0x0f,0x40,0xbb,0xcb,0x72,0xf6 },
{ 0x77,0x4e,0x44,0x88,0x27,0x3e,0xd3,0x39,0x4c,0x24,0xa0,0x0f,0xce,0x70,0x85,0xcc,0x40,0x2f,0xb9,0x11,0x2d,0x94,0xc5,0x44,0xc9,0x18,0x1c,0x7e,0x37,0x17,0x9f,0xc1,0x2c,0x4d,0xa8,0xa6,0xa8,0xf0,0x28,0xd9,0x21,0x73,0x2e,0x2b,0xe2,0xf8,0x61,0x55,0xb7,0xa8,0xe2,0x81,0x8a,0xac,0x56,0x4c,0xa1,0x63,0x4e,0xf8,0x14,0x7c,0xcc,0x13 },
{ 0xe7,0x61,0xdf,0x69,0x9b,0x4b,0xe9,0x1e,0x61,0x1b,0x55,0x32,0xcb,0x6f,0x31,0xa4,0xa7,0xbb,0xe0,0x61,0x7e,0xb2,0x8d,0x1a,0xe7,0x8d,0x65,0x5f,0x02,0xbe,0x67,0xae,0xe1,0x29,0x29,0xf8,0x71,0x1c,0x56,0x17,0xd7,0x45,0x71,0x5d,0x81,0xf4,0xc5,0x6b,0xef,0xd4,0x7b,0xd1,0x0d,0x55,0xaa,0x91,0x82,0x4a,0xae,0x77,0xbf,0xc7,0x39,0x17 },
{ 0xfb,0xb6,0x93,0xb9,0xd9,0x10,0x48,0xe2,0xad,0xcd,0xf8,0x97,0x28,0x8f,0x7e,0xd0,0x11,0xd8,0x2c,0x8f,0x9e,0x82,0x7e,0xd5,0x47,0x52,0xc4,0x7c,0x78,0xe9,0xf9,0x97,0x3b,0xf3,0xe5,0xa1,0xe5,0xf2,0xd9,0x5e,0x6b,0xfa,0x5b,0x10,0x04,0xf1,0xf1,0x9a,0x3c,0xf1,0x43,0xd1,0xe8,0xc4,0xa8,0xfb,0xb8,0xa8,0x28,0x43,0x2c,0xcb,0xd3,0xbe },
{ 0xa3,0x00,0xaa,0x04,0xf5,0xed,0x02,0x74,0x49,0xcc,0x98,0x67,0x26,0xdf,0x2b,0xf0,0x34,0x65,0xd5,0x98,0xe2,0xc7,0x8d,0x17,0x73,0xb8,0x85,0xbd,0x79,0x48,0x0d,0x2f,0xc5,0x5b,0x79,0x8e,0xd5,0xc4,0x19,0x23,0x4c,0x3a,0xdc,0xc7,0x08,0xf0,0x46,0x3b,0x74,0x78,0x2e,0xad,0x85,0xba,0x7b,0xda,0x53,0x89,0x91,0xd2,0x6b,0x31,0x75,0x2d },
{ 0x0f,0x4a,0xfa,0xe2,0x83,0x4e,0x04,0xde,0xeb,0x01,0xfb,0x62,0xe8,0xdb,0x13,0x18,0xe7,0x35,0x44,0xed,0xec,0xff,0x72,0xa3,0x61,0x13,0x99,0xce,0xfb,0xf6,0x4b,0x9e,0x65,0x0f,0xe5,0x57,0xca,0xb2,0xcd,0xc8,0x61,0x61,0x1c,0x3b,0x83,0x09,0x9d,0x8d,0x44,0x33,0x7e,0xca,0xd6,0x24,0x9f,0x91,0xe7,0xb4,0xf2,0xf5,0x5e,0x5d,0xd8,0xc5 },
{ 0x0f,0x8e,0xc0,0x2e,0xe6,0x05,0x70,0xf4,0xd0,0x63,0x9d,0x2b,0xce,0xde,0x0a,0x0a,0x13,0x9e,0xcc,0xed,0x68,0x2e,0xe7,0xaa,0xdf,0xfe,0xd3,0x38,0x60,0xf5,0x72,0x25,0x08,0x58,0x17,0x79,0x95,0xa5,0x95,0x91,0xff,0xf7,0x2f,0x65,0x34,0x16,0xfa,0x54,0xa2,0x2a,0xc9,0xee,0xf2,0x13,0xd3,0xe7,0xa3,0x05,0xc9,0x31,0x15,0x45,0xeb,0x4d },
{ 0x26,0x21,0x45,0x3b,0xd0,0x6e,0xc8,0x5f,0xb5,0x54,0xbb,0x38,0x09,0x28,0x48,0x2d,0xf2,0xaf,0x6c,0x55,0x33,0xcf,0x1d,0x66,0x53,0xaf,0xf5,0xb0,0x1d,0x45,0xbe,0x2f,0x10,0xee,0x7e,0x1a,0x37,0xc3,0x7a,0x69,0x98,0x6f,0x98,0xd9,0x95,0xfa,0x7e,0x6d,0xdd,0xcc,0xda,0x08,0xc8,0xac,0xe9,0x5b,0x35,0x85,0xbf,0x05,0x22,0x35,0x80,0xa8 },
{ 0x0e,0x99,0x92,0x33,0xc8,0xbd,0x93,0x39,0x65,0x02,0xfc,0xcb,0xf8,0x5e,0x26,0x1c,0x7f,0xf6,0xde,0x98,0xef,0xc8,0x39,0x3c,0x74,0x00,0xf3,0xdd,0x43,0x7c,0xbf,0x54,0xf7,0x96,0xc0,0x03,0xf5,0x93,0x0e,0x01,0x54,0x85,0xe6,0x52,0xef,0x79,0x39,0x38,0x4f,0xc3,0xbe,0xa4,0xeb,0x54,0x7c,0x6a,0x87,0x82,0x94,0x19,0x1f,0xda,0x83,0xdd },
{ 0x84,0x11,0xd6,0x8c,0x4c,0x24,0xa2,0x09,0xbf,0x58,0x26,0x0a,0xcc,0x0b,0x4b,0xad,0x28,0xc2,0x98,0xa7,0x85,0x31,0xf5,0x5f,0x73,0x25,0xca,0xfe,0x71,0x51,0xe7,0xce,0x42,0x31,0x89,0xcd,0xee,0x41,0xb0,0x7c,0x60,0x36,0x53,0x6e,0xcb,0x77,0x4c,0x20,0x6e,0x8a,0x45,0x24,0x77,0x1a,0x12,0x5b,0xbd,0xac,0xa0,0xe1,0x9c,0xc4,0x74,0x3e },
{ 0xf2,0x62,0x2a,0x7f,0xf5,0x49,0xfd,0x90,0x89,0x17,0xd2,0x08,0x21,0x55,0x2f,0x9b,0x4a,0xbe,0x77,0x66,0xfa,0x0f,0x46,0xee,0xd8,0x72,0xc6,0xe2,0x9f,0x53,0xcc,0x03,0xef,0x57,0xe2,0x34,0x18,0xa3,0x09,0xf4,0x7c,0xc8,0x45,0xdd,0x55,0xb6,0x05,0x12,0x39,0x74,0x20,0x7d,0xe9,0xa3,0x18,0xf8,0x6e,0xd6,0xc2,0x0c,0xed,0xb6,0x30,0x5f },
{ 0x55,0x9f,0xc2,0x0f,0xa0,0x9f,0x8f,0x37,0x67,0xab,0x5c,0xb2,0x3e,0x98,0x95,0xa8,0xc7,0xba,0xf3,0xc3,0x23,0xaa,0xea,0xb2,0x10,0xf3,0x23,0xd7,0xbf,0x9c,0xbb,0x5c,0x8f,0x7b,0xa8,0x1e,0xb4,0xd0,0x96,0xad,0xf6,0x2d,0xf2,0x7d,0xa4,0xb9,0x67,0x2f,0x96,0xdc,0xee,0x26,0x83,0x68,0xbd,0x01,0x1e,0x86,0x08,0x8c,0x3b,0x80,0x0b,0x09 },
{ 0xef,0x7a,0x4f,0xef,0x4c,0x9d,0xfe,0x51,0x0d,0x99,0x2d,0x52,0x85,0x60,0x02,0xcb,0xa1,0xc3,0x3f,0x8e,0x3d,0x25,0x24,0x77,0x0a,0x7c,0xfe,0x43,0x96,0x95,0xa3,0x1d,0xb9,0xc0,0x13,0x13,0xbb,0x7a,0x6b,0x5e,0xf2,0xf8,0x2b,0x97,0x5c,0xd1,0x86,0xdf,0x6a,0x38,0x86,0xbe,0x6f,0x29,0x24,0x93,0x27,0xfa,0xa9,0xd1,0xd3,0x67,0x62,0x19 },
{ 0x4b,0x60,0x41,0xb8,0x08,0xea,0x3f,0x0b,0xda,0xb6,0xe5,0x24,0x20,0x96,0xcd,0x6a,0xc1,0x51,0x60,0x49,0x9f,0x49,0x09,0x95,0x85,0x26,0xe6,0x75,0x96,0x36,0xb3,0x4c,0x62,0x2a,0x86,0x93,0x5d,0x16,0x61,0x09,0x53,0x6d,0x8b,0x3c,0xc0,0x40,0xf6,0xe5,0x72,0x81,0x56,0x3b,0xde,0xab,0x77,0xd7,0x69,0xbb,0xbf,0xef,0x5b,0x76,0xb2,0xf0 },
{ 0xe0,0x48,0x40,0xf7,0xa6,0x96,0x17,0x9f,0xcc,0xa5,0x5e,0xa7,0x93,0x38,0x00,0xb6,0xb5,0xd1,0x67,0xe0,0xf0,0xf8,0x1e,0xbd,0x81,0xb5,0xf5,0xaa,0xa5,0x32,0xe4,0x54,0xb1,0x0f,0x23,0xe8,0x44,0xe7,0x67,0x8d,0x75,0x2c,0x9b,0x26,0x51,0xdc,0x97,0x87,0xa2,0xb4,0x2f,0xad,0x6e,0x48,0x92,0x91,0xb9,0x97,0x7a,0x96,0x82,0x9a,0x6e,0x80 },
{ 0xc0,0x0e,0xec,0x4f,0x0f,0x7d,0xc0,0xf2,0xde,0x70,0xad,0x09,0x01,0xdb,0xc3,0xe8,0x32,0x2b,0xf0,0x68,0xc7,0x13,0xce,0x14,0xfd,0x93,0xca,0x73,0x24,0x26,0x70,0x36,0x5c,0xa5,0x00,0x9c,0x9a,0xdf,0x49,0x47,0x8a,0x6b,0x2d,0x0d,0x10,0x49,0xc7,0x13,0x36,0x46,0x1c,0x41,0xa4,0x9a,0x7d,0xe1,0xc0,0x56,0xe3,0x05,0xb9,0x21,0xc8,0x5f },
{ 0x98,0xa0,0xc4,0xed,0x0d,0x63,0x42,0xef,0x06,0x54,0x95,0x59,0x71,0xd2,0x30,0xfd,0x49,0x6e,0xde,0xcb,0xc4,0xbe,0xe2,0x26,0xda,0x96,0x9a,0x79,0x9a,0xc2,0xe8,0x7a,0x28,0x86,0x84,0xa8,0x20,0x92,0x72,0x73,0x63,0x8f,0xb4,0x6d,0x62,0x21,0xac,0xd9,0xf4,0x97,0x92,0xbd,0x6e,0x65,0x9b,0xb6,0x7b,0x28,0xfe,0x2b,0x75,0x9b,0xc0,0x1f },
{ 0x4e,0x4c,0xe2,0xea,0x1b,0x8d,0x8c,0x2a,0x40,0x14,0x5c,0x56,0x6e,0xa4,0xb1,0x40,0xe0,0x59,0x2d,0x56,0x59,0x7a,0x27,0x65,0xbd,0xbe,0x06,0xcc,0x8f,0x20,0x59,0xa0,0xa3,0xb6,0x97,0x27,0x20,0xe3,0x11,0xd2,0x71,0xf5,0x24,0x9c,0x59,0x5b,0xf1,0x41,0xee,0x0e,0x76,0x2f,0xbd,0xf5,0xe2,0xee,0x20,0x1d,0xc4,0xe8,0xbd,0xce,0x12,0x31 },
{ 0x07,0x7f,0x32,0x50,0xde,0x58,0xfa,0xb8,0x73,0xf9,0xf8,0x49,0x02,0xe5,0x6b,0x4d,0xdf,0x94,0xa1,0xf7,0x3f,0x9b,0x99,0x3f,0xf9,0x38,0x95,0x21,0x37,0x56,0x6e,0x1c,0xed,0x6d,0xd4,0xad,0xc5,0x68,0x07,0xe8,0xd2,0x94,0xdb,0x48,0x04,0x26,0xa6,0xa3,0x21,0xd7,0x4d,0x85,0x51,0x77,0x0e,0xea,0x2c,0x66,0x71,0x25,0xda,0xfa,0x4e,0xe0 },
{ 0x2f,0xfc,0xa2,0x58,0x5a,0x6b,0x6b,0xfd,0xe6,0x12,0xbf,0x05,0x65,0x93,0xe3,0x0b,0x64,0x01,0x3b,0x8e,0x3f,0xb0,0xd8,0xbe,0xb7,0x75,0x6f,0xd4,0x42,0x2d,0x8c,0xe2,0x91,0xab,0x23,0x1d,0x32,0x71,0xf5,0x24,0xcd,0x27,0x22,0x7e,0x1b,0x24,0x86,0xf8,0x01,0x78,0x17,0x2d,0x8b,0x35,0xd8,0x85,0x57,0x78,0x1c,0x89,0xa1,0x20,0xee,0xba },
{ 0x7e,0xac,0x8d,0x23,0x0c,0xaa,0x0a,0x2c,0x3d,0x72,0x35,0xb8,0x27,0x42,0x97,0x9a,0x4b,0xf0,0x14,0x74,0xc6,0x35,0x29,0x01,0x48,0x9f,0xfd,0xe0,0x0f,0xc7,0x1b,0x7c,0x6a,0x13,0xad,0xc1,0x17,0x7f,0xcc,0x9d,0x8d,0xd7,0x54,0xef,0x5e,0xd5,0xad,0x56,0x22,0xee,0x1b,0x24,0x42,0x37,0xed,0xb9,0x8f,0x40,0xe9,0x22,0x1a,0xff,0xb3,0xa9 },
{ 0xa5,0xaa,0x39,0xf9,0x7d,0x3f,0x36,0xd5,0x85,0xd9,0x5f,0xdf,0x57,0xbb,0xec,0x18,0x45,0xad,0x26,0x5a,0x1d,0x49,0x87,0x98,0xd5,0xc5,0xa9,0x2e,0xb1,0x77,0x51,0xfe,0x5d,0x71,0x47,0xbc,0xcf,0x74,0xce,0x99,0x69,0x52,0xbc,0xf6,0x62,0xe8,0xaa,0xa8,0x0d,0x84,0x40,0xdb,0x3b,0xb6,0xc1,0x49,0x5f,0x92,0x5d,0xcd,0xd2,0x25,0x2a,0x9d },
{ 0xb8,0x8d,0x10,0xaa,0x41,0x28,0x0f,0x63,0x01,0xf5,0xa0,0x31,0x55,0x82,0x73,0x03,0xe8,0xb3,0x7a,0xb5,0x84,0x3a,0x97,0xc7,0xe0,0x2c,0x6e,0xce,0x30,0x1b,0xcb,0xd2,0x06,0xbe,0xc2,0xde,0xa3,0xe4,0xbb,0x5e,0x18,0xac,0x4f,0xef,0xf3,0x58,0xe8,0x38,0x3c,0x02,0xe2,0xb5,0x99,0x26,0x63,0x07,0xfa,0xd2,0x49,0x32,0x5a,0xf5,0xd5,0x19 },
{ 0x09,0x78,0x9e,0x74,0x63,0x1a,0xa8,0x92,0x1e,0xbe,0x96,0x41,0x7a,0x00,0xfb,0x58,0x87,0x04,0xbc,0x44,0xc5,0x6d,0xe6,0xed,0xc2,0xfc,0x91,0x8e,0xbf,0x20,0x70,0x98,0x00,0xea,0x94,0x69,0x22,0x5c,0x7b,0x1c,0x6d,0x10,0x09,0x7a,0xb9,0x06,0x29,0xfb,0x1d,0x30,0xd4,0x6f,0x9a,0xbc,0xe7,0x1a,0xbc,0x41,0x51,0xb9,0x6c,0x21,0xed,0x7b },
{ 0xfe,0xe6,0xcb,0xf5,0xbd,0xa6,0xd1,0xe9,0x97,0xde,0xca,0x99,0xc7,0x0e,0xb4,0xb9,0x07,0xd0,0xb8,0x19,0xd2,0x61,0xd7,0x96,0x51,0x11,0xc7,0x65,0xf1,0xdc,0xa9,0xed,0xff,0x04,0xf9,0x25,0xc3,0x95,0x18,0xa3,0x39,0x04,0x4e,0x9f,0x24,0xb3,0x6c,0x66,0xb1,0x3b,0x3c,0x05,0xed,0x80,0x12,0x96,0x44,0x57,0x71,0xd6,0x7b,0x1e,0x49,0xff },
{ 0x75,0x01,0x00,0x61,0xf2,0x01,0xb7,0x6d,0xa3,0x45,0x17,0xf6,0x22,0xb1,0xb3,0x11,0xcd,0xe4,0x25,0x44,0x11,0xd3,0x3a,0x06,0x63,0x48,0xfc,0x2d,0x71,0xa1,0x8c,0x8e,0x8a,0x02,0xc6,0xfb,0xaa,0x1f,0x72,0x23,0x6e,0x1d,0xb5,0x06,0x38,0x1d,0xd6,0xc8,0x90,0xbc,0x08,0x94,0xe1,0xf9,0x22,0xe8,0x61,0x01,0x45,0x16,0xce,0x11,0x88,0x61 },
{ 0x6a,0xce,0x15,0x1a,0xb6,0x5b,0x9f,0x57,0x56,0x77,0x9d,0x39,0x57,0x9f,0xcc,0xa3,0x82,0x2c,0xf9,0x17,0x0a,0x76,0x17,0xaa,0x10,0xf0,0xaf,0xc2,0xad,0xc1,0x1d,0x7d,0xcd,0xe7,0xb4,0x88,0x95,0x4e,0xc9,0xd5,0x5a,0x1f,0x46,0xab,0x1e,0x39,0x8f,0x3a,0xff,0x22,0x2d,0x4e,0xcc,0xd5,0x10,0x1c,0xac,0x9e,0x6d,0xe9,0x21,0x48,0xef,0x45 },
{ 0x6a,0x32,0x76,0x73,0x0d,0x01,0x9c,0xc7,0xdd,0xca,0xca,0x98,0x96,0x65,0xde,0x80,0x03,0x06,0xa7,0x3f,0xff,0xbd,0x22,0xb6,0xa4,0x0b,0x02,0x0f,0x48,0x17,0xab,0x14,0xf0,0x24,0x8d,0xb6,0x43,0x62,0x6c,0x14,0x1a,0x1d,0xd4,0xed,0x8a,0x73,0xe0,0xfd,0x50,0xb4,0x3d,0x7e,0xd5,0x84,0x9c,0x92,0x73,0xa7,0xef,0x55,0xaf,0x6b,0x7c,0x4f },
{ 0xcc,0xe6,0xad,0x5e,0x6c,0xfc,0x31,0x03,0x35,0xbc,0xbd,0x6d,0xa6,0xb5,0x11,0x4b,0x29,0xe0,0xf8,0xd2,0xea,0x8e,0x49,0x72,0x1d,0x23,0x6c,0x93,0x4b,0x6b,0xa7,0xe5,0x5e,0x31,0xfe,0xf0,0x3e,0xd9,0x35,0x75,0xb8,0x33,0x3b,0x14,0x49,0x1f,0x75,0x45,0x8c,0xd8,0x56,0x73,0x57,0x60,0x32,0xf5,0x19,0xf0,0xaf,0x75,0x8c,0x7c,0x70,0x17 },
{ 0x83,0x39,0x16,0x08,0x52,0xf7,0x67,0xc4,0x6a,0x59,0xdd,0xd7,0x61,0xc7,0x73,0xbd,0x74,0x69,0x2c,0x87,0x66,0xc0,0x6d,0x01,0x30,0x59,0x5f,0xdf,0xbe,0xe9,0xd7,0xf9,0x96,0x50,0xed,0xfa,0x9b,0xc4,0x8a,0x7b,0x19,0xe6,0x49,0xbc,0xc2,0xfb,0xc5,0xdc,0x8d,0x49,0xa3,0x11,0xdc,0x77,0x2b,0xf9,0x98,0xaf,0xae,0xe4,0x96,0xc4,0xd5,0x4d },
{ 0xf5,0xa3,0xda,0x9b,0xfa,0x8b,0x39,0xd9,0xde,0xc2,0x34,0x57,0x1a,0x43,0x67,0x58,0xbf,0x73,0x4b,0xea,0x3c,0xa4,0x86,0xfd,0x8c,0x88,0x25,0x5c,0xe7,0x1c,0x69,0xb4,0x4c,0xaa,0x99,0x42,0x6e,0x0a,0x60,0x94,0xad,0xaf,0xaf,0xf8,0xe6,0x62,0xb6,0x0d,0x2f,0xfa,0xd4,0xfa,0x24,0xa5,0x50,0x95,0xef,0x36,0x37,0x6a,0x6f,0xa2,0xb8,0x9d },
{ 0xc6,0xdf,0xa0,0xa6,0x35,0x96,0xe1,0x18,0x2e,0x69,0xf7,0xd1,0x10,0x65,0xda,0xc4,0xa2,0x48,0xdc,0xef,0x05,0x89,0xc0,0x9b,0xe4,0x4d,0x5f,0xb5,0xb8,0x66,0x76,0x82,0xce,0x46,0xde,0xcb,0x01,0x7c,0x99,0xe3,0xfe,0x29,0x91,0x86,0x41,0x54,0x94,0x38,0x9c,0x97,0x90,0xc7,0x5d,0x1e,0x0f,0x93,0x74,0x10,0x1b,0x70,0x4b,0x84,0x32,0xa2 },
{ 0xae,0x17,0x4f,0xd0,0x24,0x6a,0x1f,0x72,0xa7,0xdf,0x0f,0x40,0x3a,0xb7,0x5c,0x1c,0x2c,0xf4,0x09,0xef,0x4f,0x35,0x61,0x6b,0x38,0x9a,0x66,0xbf,0xff,0x23,0x71,0xc7,0xb4,0x13,0x77,0xe6,0xae,0xac,0xb0,0x4b,0xcb,0xf4,0x47,0x1b,0x8f,0x90,0x78,0xe0,0x3d,0xa4,0x0f,0x81,0xd7,0xa4,0xcc,0x1e,0x28,0x36,0xba,0xf9,0x8b,0x94,0x14,0x05 },
{ 0xca,0x3c,0xf2,0x07,0xae,0x12,0xc3,0x91,0x32,0x4b,0xff,0x14,0x89,0x53,0x12,0x7b,0xf3,0x4c,0x7b,0x94,0x42,0xf6,0x62,0x6b,0x51,0xab,0x4a,0xc1,0x38,0xa4,0xb6,0x8d,0xd2,0xfd,0x21,0xfc,0x7e,0x33,0x8d,0x65,0xfb,0x2a,0x63,0xe9,0x7d,0xff,0xdd,0x10,0x76,0x2f,0xcf,0xc8,0x51,0x23,0x94,0x24,0xe6,0x62,0xfb,0x68,0x2d,0x7f,0xc1,0x0e },
{ 0x08,0x41,0x9b,0xa6,0xce,0xae,0x8d,0x59,0xea,0x38,0xa5,0x9e,0xdd,0xe9,0xb8,0x5a,0x61,0x7b,0xb7,0xdb,0x9d,0x3f,0x33,0xfd,0xab,0xf1,0x0d,0xdd,0x74,0xc8,0xca,0x71,0x2c,0xf8,0x56,0x2f,0xbd,0x39,0x48,0xd6,0xec,0x32,0xe7,0x6b,0x6e,0x2b,0x51,0xd8,0x84,0x60,0x7f,0xf2,0x51,0xaf,0x3e,0xde,0xfb,0x6b,0x5c,0xbb,0x70,0x4e,0x47,0xfb },
{ 0x05,0x21,0x0c,0x0c,0xb2,0x4d,0x60,0x56,0xf4,0x3e,0xb9,0xa3,0xea,0x89,0x1e,0xf7,0x32,0x8c,0x02,0x34,0xf5,0x48,0xa4,0x72,0x48,0x71,0x64,0x69,0x9b,0x00,0xe2,0x20,0x72,0xab,0x26,0xbb,0x61,0x2b,0x03,0xa6,0xb8,0x1f,0x0a,0x7b,0xdb,0x9a,0xd6,0xc8,0x83,0xc4,0xe5,0x4d,0x57,0xeb,0xdf,0x04,0x67,0x61,0xa8,0x71,0x68,0x46,0xb2,0x50 },
{ 0x15,0xb3,0xe3,0x06,0x54,0x73,0x69,0xb8,0x79,0xb1,0xe4,0x8c,0xf1,0x16,0xc4,0x13,0xf5,0x4f,0x8e,0xd7,0xf7,0x42,0x7b,0x2b,0x4b,0xe4,0xaa,0xc5,0xed,0x09,0x97,0x00,0xc9,0x19,0x9e,0x02,0xe3,0x23,0x58,0xcc,0xc5,0x00,0xcf,0xb1,0xfe,0x3c,0x95,0xcb,0x90,0xb6,0x1b,0x96,0x46,0xa4,0x3c,0x5a,0xa4,0x9d,0xe4,0xfc,0xaf,0xe5,0x4a,0x93 },
{ 0xce,0xcd,0x15,0x2c,0x03,0x66,0x8c,0x41,0xed,0x86,0xbe,0x50,0x4d,0x93,0x52,0x73,0xae,0x92,0xcd,0xac,0x5a,0x6a,0x00,0xee,0x94,0x72,0x33,0xc4,0xd4,0x17,0xb7,0x31,0xd8,0xfb,0x99,0x8a,0x40,0x20,0x01,0x0a,0x12,0xa9,0xcb,0x03,0xa0,0xc9,0xb9,0x7e,0xd9,0x85,0x1a,0x8a,0x52,0x27,0xf8,0xf2,0x1e,0xdb,0x0e,0xad,0xa7,0x4f,0xd1,0x10 },
{ 0x09,0x3a,0x44,0x57,0x08,0xf7,0x59,0xfc,0xe1,0xe9,0x4d,0x7c,0x7b,0xa6,0x0c,0xbc,0xd8,0x27,0xd1,0xd0,0x33,0x4f,0x77,0xc3,0x5e,0xd4,0xc5,0x55,0xe4,0xf6,0x2a,0x8a,0xd1,0xc8,0x00,0xf2,0x29,0x1e,0x93,0x5d,0x1c,0xe7,0x5a,0x23,0xf1,0x9f,0xa9,0xa3,0x71,0x3e,0x80,0x38,0x6f,0x6f,0x71,0x7e,0x31,0x8d,0x89,0xa4,0x52,0xea,0x74,0x75 },
{ 0x57,0x2f,0x98,0x82,0x65,0x9a,0x00,0xcf,0x4d,0xaf,0x1d,0xa7,0xbf,0xe0,0x19,0xc2,0x89,0xee,0xf1,0x09,0xca,0xb6,0xf5,0x5c,0xdf,0x2c,0x89,0x3a,0xc3,0xa7,0x59,0x4c,0x92,0x11,0x24,0xe8,0x99,0x67,0x7b,0xbc,0x1d,0x26,0xf6,0xa5,0x05,0xfa,0xf8,0x1f,0x1a,0x8a,0x14,0x94,0x92,0xd2,0x18,0x80,0xaf,0x89,0xd4,0xab,0xc8,0x98,0x4f,0xb8 },
{ 0xec,0x98,0x25,0x6d,0x10,0x35,0x1b,0x4a,0x50,0x8d,0xfd,0x55,0x5a,0xe3,0x58,0xfc,0x8d,0xea,0x53,0xfc,0x01,0x07,0xb0,0x65,0xc0,0x0e,0x10,0x1b,0x0e,0x4e,0xdf,0xfb,0x4a,0x85,0x6f,0xe7,0x47,0xfe,0xf1,0xaa,0xf4,0x2c,0x71,0x2a,0xe0,0x5b,0x38,0x10,0xbf,0x86,0x0b,0xc2,0x66,0x42,0xd2,0x5b,0x13,0xa1,0xed,0x73,0xa0,0xa4,0x80,0xa7 },
{ 0x27,0x85,0x57,0xe5,0xc5,0x4a,0x22,0x27,0x2a,0xa6,0xa9,0x93,0x99,0x85,0x01,0xc9,0x52,0x1e,0x29,0x7d,0xec,0x26,0x76,0x9f,0xad,0xe2,0x5b,0x24,0x35,0x8b,0x3a,0xc3,0xc4,0x07,0x0a,0xd8,0xb7,0x5b,0x58,0xf9,0x29,0x6d,0x5c,0xd7,0xdd,0x64,0x8a,0xae,0xb3,0xbd,0x15,0x88,0x4b,0x2b,0x3e,0xbe,0x51,0x83,0xa8,0x8a,0x52,0x02,0x80,0x5a },
{ 0x58,0x92,0xc8,0x1c,0x31,0x77,0x58,0xce,0xd7,0xd5,0xb7,0x86,0x73,0xe7,0x79,0x89,0x52,0x33,0x8d,0xd1,0xfc,0xc8,0x76,0x71,0xea,0xc6,0x0c,0x2e,0xa1,0x68,0xde,0xa6,0x38,0x61,0xf0,0xd8,0x0f,0xf3,0x5a,0x13,0xdf,0x1e,0x8d,0x83,0xc9,0x57,0x9a,0xe9,0x1a,0x75,0xfe,0xab,0xe5,0xa6,0xc5,0x9f,0x80,0xab,0x8c,0x06,0x9f,0xb2,0x4b,0xf1 },
{ 0xea,0x3b,0x32,0x69,0xab,0x08,0x8f,0x0c,0x0b,0x02,0x90,0x45,0x07,0x47,0x93,0xd8,0x9f,0xba,0xb9,0x01,0x73,0x27,0xe0,0x35,0x23,0x17,0xcb,0x53,0xad,0x0e,0xd1,0xce,0xe5,0xd4,0x1a,0xf3,0x62,0x49,0x56,0x9f,0xe5,0xa9,0x68,0x33,0x3f,0x54,0xfe,0x07,0x4b,0xd9,0x04,0x6b,0xe4,0x06,0x92,0x0b,0xfd,0x41,0x04,0xb4,0x19,0x57,0x67,0xa4 },
{ 0x6a,0x3a,0xbb,0xde,0x58,0xb7,0x97,0x4e,0xb0,0x88,0xaa,0x1c,0x65,0x94,0x51,0x57,0xab,0x1a,0x61,0xc5,0x50,0x55,0xa8,0xec,0xd2,0x0f,0x6a,0x9c,0x8c,0x48,0xc8,0x12,0x87,0x2b,0x7d,0x08,0x59,0xd7,0x64,0x3d,0x16,0x1d,0xcd,0xdc,0xf1,0x30,0x4f,0xe9,0x14,0x33,0x68,0x0a,0x05,0xb0,0xf4,0x92,0xea,0xdc,0x70,0x3c,0x01,0xc6,0x35,0x6a },
{ 0x27,0xf3,0x33,0x73,0x10,0x77,0x28,0x13,0x81,0x49,0x64,0xdb,0xd3,0x63,0xc0,0x9c,0xfe,0xb3,0xf7,0xd6,0x21,0x64,0xb2,0x9e,0x29,0x9f,0x19,0xee,0xa5,0x02,0x81,0xb4,0x28,0x71,0x6f,0x8a,0x6b,0xb6,0xaf,0x0d,0x6d,0x7a,0x7e,0x70,0xaf,0x20,0xb5,0xb2,0x24,0xdf,0x16,0xd7,0x63,0x0b,0x74,0xf7,0x58,0xc5,0x1e,0x6b,0xd3,0x3e,0x63,0xff },
{ 0x9d,0x29,0xb9,0x75,0x9e,0xe6,0x5b,0xa1,0xdf,0x87,0xc5,0x72,0x23,0xb2,0x4d,0x3b,0x67,0xf8,0xf9,0x3c,0x5e,0x2c,0xe7,0x4f,0x50,0x3e,0xb6,0x39,0xda,0xd2,0x84,0x1c,0x66,0x50,0x1c,0x96,0xde,0x15,0x2b,0x54,0xc3,0xd6,0xc2,0xc6,0xcd,0x7b,0x89,0xf9,0x4d,0xaf,0x6e,0xd0,0x90,0xaa,0xf1,0x40,0x2e,0x99,0x45,0xfd,0x1e,0x70,0xae,0x8f },
{ 0x7e,0xf3,0x83,0xf0,0x66,0xb1,0x40,0x22,0x49,0x8e,0x46,0xb4,0x5e,0x21,0x7b,0x5b,0xc1,0x67,0x06,0x9d,0xd8,0x24,0x31,0x00,0x33,0x44,0xde,0xe6,0x25,0x38,0x6f,0x9e,0xce,0x46,0xdf,0xad,0x01,0x51,0x29,0xfa,0x0b,0x7e,0x4d,0x44,0x17,0xb3,0xba,0x9c,0x9d,0x3f,0x2e,0x24,0x8e,0x02,0x28,0xdd,0x30,0xcd,0xe0,0xd0,0xbc,0xb4,0xdd,0xe9 },
{ 0x85,0x10,0x01,0x76,0xbe,0x47,0x9f,0xed,0x09,0x90,0xa2,0xcc,0x7f,0xd8,0x9f,0xf1,0x55,0xd0,0x93,0xbb,0x99,0x12,0x14,0xa4,0x1a,0xc5,0xe4,0x68,0x42,0xe9,0xae,0xda,0x6e,0x1d,0xdf,0xd9,0x56,0x11,0x8a,0xc3,0x9e,0x30,0x84,0xbd,0x8c,0x90,0x45,0xb1,0xe8,0xd4,0x6d,0x1d,0xb2,0x7f,0xd8,0x38,0x65,0x47,0x08,0xc5,0x7d,0x7d,0xb6,0x67 },
{ 0x7d,0x67,0xd9,0x40,0x56,0xe9,0x75,0xf4,0x66,0x70,0x05,0xa0,0x82,0xf7,0xcb,0x42,0x94,0xe9,0x45,0x30,0x59,0x3a,0xb9,0x6d,0xc1,0x36,0x66,0xc8,0x89,0x36,0x34,0x4c,0x09,0xe0,0xb0,0xf1,0x46,0xcc,0x2b,0x01,0x0c,0xfd,0xa0,0x29,0xcd,0x6c,0xc1,0xfd,0x02,0x74,0xd3,0x38,0xc3,0x90,0x19,0xf4,0xaf,0x79,0x06,0x47,0x22,0x64,0xfd,0xe4 },
{ 0x47,0xbc,0x11,0xf5,0x5a,0x98,0xb0,0x1a,0x41,0xb9,0xf6,0xe8,0x0f,0x8b,0xd9,0x2c,0x15,0x1a,0x2d,0x5f,0x03,0x8a,0x41,0x9a,0x31,0xbc,0x90,0x06,0x0d,0x3e,0xb4,0x00,0xa6,0x8d,0x7a,0x00,0x7f,0x23,0xc7,0x81,0x6e,0xd8,0x30,0xef,0x38,0xaf,0x35,0xcf,0x9c,0x21,0x93,0x06,0xc9,0x0e,0x2d,0xb4,0xf5,0x25,0x2d,0x15,0x0a,0xff,0x43,0x98 },
{ 0xac,0xf4,0x25,0x17,0x60,0x70,0x40,0xb0,0xb4,0x28,0x7e,0x6b,0xa2,0x75,0x98,0x63,0x30,0x26,0x1d,0x98,0x17,0x52,0xfe,0x50,0x27,0xfa,0x69,0x94,0x4b,0xb3,0x1e,0xbe,0x29,0xc2,0xea,0x10,0x0a,0x80,0x83,0xec,0xe2,0x95,0x9c,0xdd,0x18,0x51,0x31,0x50,0xd1,0x34,0x61,0xfc,0x4c,0x43,0x25,0xbb,0x94,0xb1,0x87,0xab,0x06,0xc2,0x6c,0xb3 },
{ 0x44,0x07,0x20,0x88,0xfc,0xb4,0x44,0x17,0x7f,0x02,0xfe,0x8c,0x2a,0x15,0x2e,0x83,0x9d,0xfb,0xf0,0x33,0x1b,0xdc,0xd6,0xcc,0xca,0x6e,0xd2,0xa8,0xe2,0xac,0x55,0xcd,0x9b,0xcf,0xa4,0xa9,0xe8,0xd2,0x61,0xcc,0xc6,0x4d,0xab,0xe9,0x19,0xa3,0x17,0x95,0xbb,0xa9,0x18,0x07,0xfc,0x79,0x2b,0x0a,0x88,0xbd,0xbe,0x71,0x81,0xc0,0xbd,0x3b },
{ 0x03,0xb5,0xbb,0xa2,0x88,0x0b,0xf3,0x99,0xfa,0x59,0xf6,0xa5,0xd5,0xe6,0x8f,0x06,0x94,0xeb,0x44,0x89,0x51,0x94,0x4a,0x18,0x96,0xbf,0xb3,0x2f,0xb2,0x5e,0x0c,0xc0,0x74,0x8f,0x64,0x44,0x2c,0x52,0x50,0x5f,0xde,0x94,0xe2,0x33,0x5e,0x1e,0xb1,0xa3,0x48,0x84,0x2a,0xbc,0x5f,0xe8,0x19,0x5b,0xee,0xe8,0xa3,0x7d,0xd4,0x40,0x72,0x22 },
{ 0xdd,0x60,0x86,0xf1,0x50,0xbc,0x1d,0xa4,0x06,0x60,0xbf,0xa9,0x3b,0x84,0x30,0x4a,0xd2,0xcf,0xad,0x66,0xec,0x9e,0xf2,0xcb,0x09,0x58,0xa2,0x26,0xd5,0x75,0x66,0x50,0xbd,0x0a,0x59,0xde,0x38,0x02,0x72,0x58,0xbb,0xf5,0xf3,0x07,0x91,0x81,0xb2,0x76,0x06,0x5d,0x30,0x2b,0xcf,0xd9,0xe9,0xeb,0xbe,0xe2,0xf8,0x86,0x58,0xec,0x0f,0x4e },
{ 0x8c,0x52,0xf1,0x25,0xc5,0xb8,0x5c,0x82,0x84,0x07,0x9c,0xd4,0xd0,0x67,0x40,0xf9,0xb4,0xcd,0xb5,0x93,0x45,0x18,0x04,0x1c,0xb9,0x4f,0xfc,0xc9,0x16,0xc7,0x1c,0x5b,0x78,0x70,0x99,0x60,0x31,0x03,0xe3,0x14,0x5d,0x4f,0x0d,0x31,0x70,0x83,0xaa,0x46,0x4e,0x0e,0x1e,0x99,0xa9,0x27,0x98,0x4c,0x20,0x74,0x58,0xec,0x19,0xa4,0x32,0x98 },
{ 0x41,0x70,0x6b,0x1d,0xda,0x7c,0xb1,0x70,0x2e,0x4a,0xe9,0x91,0x18,0x80,0xbe,0xb7,0x7a,0xb6,0x98,0x1b,0xba,0xfa,0xc8,0x5b,0x42,0xd3,0x90,0x64,0xdd,0xec,0x9b,0x7b,0x7f,0x76,0x9d,0x27,0x1f,0x02,0xe4,0x44,0x07,0x01,0x71,0xf4,0xa1,0x63,0x3e,0x53,0x7b,0xd4,0xbb,0xc9,0x48,0x2c,0x93,0xa8,0xf1,0x3d,0xef,0x90,0xd8,0xcd,0xfb,0xd2 },
{ 0x57,0x0c,0xc5,0x7c,0x19,0x15,0x07,0xb4,0x60,0xca,0x72,0x96,0x70,0xe7,0xf5,0xa7,0x6b,0x7d,0xfa,0x5f,0x2d,0x0d,0x16,0x24,0xea,0xea,0xf0,0x5e,0xbe,0x8b,0xac,0x54,0xd9,0x10,0x36,0xd1,0x58,0xcf,0x8f,0xb5,0x95,0xd7,0x56,0xb0,0x91,0xf4,0xd7,0x0c,0xe2,0x39,0x75,0x94,0x32,0x54,0xb2,0xac,0x97,0xff,0x44,0xb1,0x1e,0x74,0x28,0x7e },
{ 0x55,0x27,0x26,0x88,0x23,0x6e,0xd7,0xb4,0x17,0x7b,0xac,0x7c,0xc4,0x1c,0x0c,0xf3,0xdb,0xfc,0x6d,0x36,0x4a,0x07,0xbd,0xff,0xe7,0x8a,0x4a,0xdc,0xa2,0x8d,0x1b,0xd8,0x0e,0x24,0x6a,0xca,0x08,0x52,0x63,0xb1,0xa4,0x51,0x3f,0xcd,0x8d,0xc0,0x7e,0x4a,0x6c,0xa6,0xa0,0x97,0x12,0x15,0x23,0x57,0x24,0x11,0x5d,0x97,0xc8,0x59,0xf5,0xf3 },
{ 0x26,0xe4,0x52,0x79,0x19,0xc0,0xe1,0xc9,0xd8,0x53,0x5f,0x41,0xb6,0x1e,0xc5,0xdb,0x29,0x10,0x1c,0x6b,0x2b,0x14,0x98,0x46,0x9e,0x6c,0xc3,0x20,0xed,0xb3,0x2d,0xb2,0x08,0x04,0xf9,0x93,0xe7,0x10,0x9a,0xbf,0xf2,0xc4,0x91,0xb1,0xaf,0x55,0xfa,0x47,0xfe,0xb5,0x78,0x53,0x68,0x7e,0xb7,0xde,0xa7,0xf1,0xd8,0x6d,0xd9,0x4f,0x82,0x7e },
{ 0xa3,0x17,0xa6,0xde,0xb9,0xbd,0x84,0x5e,0x1f,0x90,0xe5,0xc9,0x0e,0x8c,0xe5,0xeb,0x3d,0x48,0x7b,0x59,0x11,0x85,0xfd,0xd2,0xfe,0xb8,0x47,0xff,0xf8,0x75,0x6d,0xbb,0x09,0x0a,0xe3,0xad,0x04,0x96,0xfa,0x05,0x65,0xc4,0x27,0x48,0xa7,0xef,0xa3,0x07,0xb9,0x0a,0x1b,0xdd,0x72,0x42,0x45,0xe8,0x05,0x3a,0x10,0xc6,0xbc,0x06,0xb7,0x6c },
{ 0xbb,0x26,0x47,0x4e,0x03,0x92,0xba,0xf4,0x50,0x57,0x79,0xdc,0x0f,0xfb,0xdd,0xc6,0x01,0x76,0x94,0xa8,0xf8,0x80,0x93,0x7e,0x18,0xea,0xd9,0x37,0x09,0x50,0xc1,0x44,0x45,0x00,0x0f,0x67,0x60,0x5d,0xb3,0x5c,0xc4,0x7b,0xd1,0xad,0x4e,0x97,0x29,0xdd,0x73,0x95,0x01,0x6a,0x00,0x6a,0x1e,0xda,0xfa,0x8e,0x91,0x0c,0x3f,0xb4,0xa8,0x77 },
{ 0x58,0x68,0x91,0x83,0x2c,0xea,0xf2,0xac,0x8d,0x6e,0xd2,0xb5,0x9b,0x01,0xbc,0x88,0x10,0x24,0x7a,0x79,0x76,0x45,0xdd,0xf8,0x41,0x52,0x64,0xcb,0x05,0x9e,0xe2,0xd4,0x06,0x48,0x98,0x2d,0x7e,0xc9,0xfe,0xc8,0x3f,0x61,0x99,0x99,0x86,0xe8,0x82,0xee,0x20,0xca,0xf9,0xd5,0x9b,0x17,0x6d,0xab,0x8a,0x65,0xa4,0xe7,0x61,0xb8,0xae,0xf4 },
{ 0x15,0x29,0xed,0x5a,0x49,0xf4,0x34,0x60,0x5f,0x2c,0x45,0x3e,0x7f,0x8f,0xcc,0x80,0xd0,0x7d,0xb4,0x5a,0xaf,0x96,0x93,0xd0,0xfe,0xea,0xdb,0xb7,0xbe,0xa1,0x5d,0x69,0x65,0x34,0x61,0x4d,0x9e,0x51,0x29,0xb5,0x21,0x48,0x0c,0x34,0x9f,0x77,0xa2,0x5d,0x21,0x48,0xee,0x37,0x7e,0x44,0x38,0x2c,0xea,0x86,0x5d,0xaa,0x2a,0x2c,0x52,0xc8 },
{ 0x40,0xb7,0xc5,0xd0,0xa5,0x4f,0x90,0x10,0x40,0x3b,0xd6,0x57,0x24,0x8f,0x8c,0x7d,0x63,0x3c,0x41,0x2d,0x93,0x84,0xb8,0x0b,0xb4,0x79,0x08,0x0c,0xf4,0x33,0x48,0xbf,0x28,0x5e,0x2d,0x1f,0x66,0xf8,0x0e,0x32,0x73,0x45,0x92,0x6d,0x25,0xf1,0x53,0x9c,0x20,0x1c,0xce,0x86,0x92,0x13,0xde,0x6a,0x8f,0xdc,0x1f,0x36,0x8c,0x48,0xa7,0x03 },
{ 0x57,0x10,0x59,0xca,0xb0,0xca,0x09,0x30,0x6d,0xf6,0xd0,0xdb,0xe5,0x0d,0x82,0x29,0x95,0xf5,0x40,0x4e,0x6f,0x89,0x6c,0xc0,0x9f,0xe1,0x09,0xca,0x46,0x8c,0xf6,0x75,0x71,0xb2,0xb1,0x04,0x09,0x93,0x2d,0x07,0xeb,0x4b,0x92,0x30,0x66,0x5a,0xc1,0xbd,0x1e,0xec,0x1d,0x15,0xc3,0xc9,0x90,0x8f,0x62,0x24,0xe4,0x12,0x69,0x63,0x99,0xe0 },
{ 0x68,0x02,0xe0,0xd0,0x38,0xa0,0x91,0xbd,0xb0,0x44,0x4d,0xd3,0x93,0x2d,0x4a,0x6b,0x08,0xca,0xff,0x3a,0xd1,0xd9,0x95,0xda,0x67,0x66,0x13,0xfc,0x98,0x1f,0x79,0xf8,0x13,0xe5,0x01,0x15,0x1f,0xe8,0x78,0xbc,0x10,0x06,0x40,0x2d,0x16,0x0a,0x76,0x74,0x3b,0x16,0xbc,0x04,0xd5,0x5e,0xad,0x24,0xf5,0x3f,0xc5,0xe0,0x1e,0x18,0xbb,0x7a },
{ 0x21,0x60,0x26,0x7b,0x0c,0x25,0x58,0x77,0x29,0xdf,0xdf,0x4f,0x71,0xe5,0x04,0xa0,0x99,0xae,0x53,0x5a,0x97,0x0d,0x97,0x1c,0x00,0x11,0x94,0x70,0x5a,0x74,0x1d,0xfc,0x55,0x37,0x41,0x3a,0x78,0x76,0x6a,0x1a,0xf7,0xaa,0x15,0xf6,0x67,0x5c,0xff,0xda,0x70,0xe5,0x99,0xd0,0x28,0x23,0x18,0x95,0x7a,0xf6,0xc7,0xb3,0x22,0xef,0x65,0x8e },
{ 0x83,0x68,0x78,0x74,0x2a,0xe2,0x01,0xd7,0x59,0x3b,0xb4,0x3d,0xd6,0xd5,0x5a,0xd0,0x73,0x86,0xa9,0x97,0xc1,0xe2,0xa6,0xf2,0x92,0x93,0xf5,0x23,0x57,0x4f,0x22,0x66,0xd5,0x8f,0x7c,0x54,0xac,0xbf,0xa5,0x45,0xa6,0x18,0x25,0x1e,0xbd,0x1f,0xd1,0xa5,0x58,0x37,0xac,0xb9,0xad,0x8f,0xad,0x7c,0x8b,0xae,0x78,0x9a,0xe6,0x38,0x2d,0xeb },
{ 0x72,0xfb,0x57,0xf5,0x0b,0x0b,0xb3,0xc1,0x0c,0x44,0x7e,0x5d,0x42,0x1d,0xb7,0x08,0x3e,0xb8,0x8e,0x85,0xe7,0xd4,0x28,0x71,0x3f,0xee,0xbd,0x5c,0x5c,0xd9,0xa8,0x0e,0xf3,0x2f,0x55,0xe5,0x0b,0xb1,0xd6,0x85,0x41,0xc5,0x6f,0x32,0xac,0xc6,0xe9,0x95,0x00,0x73,0x89,0xab,0xe5,0x66,0x43,0xad,0x7a,0xcd,0x3c,0xcf,0xa9,0xe7,0x69,0x61 },
{ 0xb4,0xa5,0x1a,0x9c,0x7e,0x3e,0xe5,0x9d,0x4e,0x42,0x31,0x1b,0x2e,0x87,0x28,0xa6,0x8b,0x96,0x1d,0x04,0xf0,0x05,0xa5,0x87,0x6c,0xc4,0x5a,0xc7,0xcb,0x41,0x4c,0x92,0x08,0x88,0xac,0x94,0x53,0x72,0xcb,0x78,0xfc,0x2d,0xec,0x45,0x2a,0x24,0x89,0xe1,0x5c,0x76,0x9a,0x0b,0x58,0x73,0xae,0x6c,0x3a,0xd3,0x2d,0x74,0x48,0x9c,0x62,0x65 },
{ 0x79,0xfe,0x31,0x75,0x2c,0x29,0xe0,0xec,0x9d,0x04,0x45,0x60,0x34,0xaa,0x7b,0xdc,0x9b,0x56,0xac,0x59,0xab,0x79,0xe2,0x92,0x55,0xaf,0xe8,0x1f,0x46,0x7b,0x8f,0x86,0x67,0xeb,0x45,0x68,0xa6,0x8a,0x8a,0xf6,0xf0,0xde,0x9a,0x03,0x6f,0x18,0x55,0xb4,0x66,0xc4,0x66,0x66,0xa9,0x44,0xd1,0xcb,0x89,0xe9,0x3c,0x6e,0x77,0x71,0x00,0x02 },
{ 0xb1,0xd5,0xb9,0xd5,0x2f,0xe1,0x7c,0xba,0x10,0xa9,0x4e,0xc7,0x1a,0xaa,0x02,0xd8,0xec,0x40,0xb6,0xce,0x68,0x39,0x5a,0x85,0x4c,0xed,0x12,0x5e,0x1a,0xcf,0x1a,0x19,0x20,0x5b,0xf3,0x5e,0x6f,0x11,0x30,0xa8,0x57,0x69,0xda,0xf5,0xe3,0xb8,0xac,0x24,0x0d,0xf6,0x1f,0xdc,0xbd,0x0d,0x3a,0x71,0x9c,0x18,0x55,0x01,0xed,0x13,0x5d,0x9d },
{ 0x91,0x8c,0x8d,0x24,0x4e,0x99,0x09,0x0d,0xcb,0x30,0x2d,0x95,0xfe,0x8a,0x98,0x03,0x7d,0xe8,0x45,0x5a,0xd5,0x9c,0x2a,0x10,0x6b,0x01,0xf4,0x79,0x15,0xc8,0x56,0xb2,0xaa,0x7b,0xd7,0xae,0x6c,0x5b,0x12,0xfe,0x7d,0x1c,0x05,0x27,0xa0,0xf6,0x38,0xb4,0x72,0x81,0xe5,0x2a,0xa1,0x3d,0xd3,0x80,0xab,0x0a,0x50,0x37,0x6a,0x02,0xd4,0x9f },
{ 0x2b,0x5d,0xea,0x7f,0xb5,0x83,0xc0,0xae,0x1a,0x9c,0x50,0x28,0x59,0x31,0x07,0x3d,0x6e,0xe4,0x4a,0x21,0x08,0x1e,0xea,0xd7,0x52,0x53,0xbd,0x9e,0x3a,0x82,0xfa,0xeb,0x1f,0x9e,0x66,0x3b,0x56,0x0b,0xff,0x7b,0x09,0x6d,0x47,0xcf,0xdd,0x03,0x8c,0x7e,0x88,0xad,0x50,0x0e,0xd0,0x0f,0x65,0xf6,0xe5,0xb2,0xc8,0xa5,0xab,0x03,0xb7,0xf8 },
{ 0x1a,0x24,0xd3,0xab,0x81,0x5c,0xd3,0x55,0xf3,0xb8,0x0c,0x30,0xe7,0xde,0x3b,0xd4,0x00,0xfb,0xaa,0x76,0x6f,0xc2,0x47,0xe3,0xcd,0x4d,0xcd,0x99,0x6d,0x2b,0x9f,0xef,0x32,0xa7,0xef,0x3e,0xf4,0x83,0x4f,0xf1,0x84,0x62,0xfe,0xe2,0x1c,0x73,0x5a,0x5c,0xe7,0xf7,0xc4,0x5c,0x37,0x4c,0x3c,0xc5,0xff,0xe0,0xeb,0xde,0x7f,0x13,0x34,0x6e },
{ 0x2b,0xfc,0x6a,0xb5,0x6a,0xf9,0xdd,0x2c,0x2b,0x46,0x1d,0x7e,0x26,0xee,0xc2,0x03,0x72,0x9c,0xca,0xc4,0xf4,0xf8,0xb6,0x49,0x7a,0x0f,0x7e,0x71,0x21,0x49,0x8f,0x82,0x58,0x7c,0x7b,0x3e,0x1d,0x55,0x4f,0x88,0x14,0xe8,0x8a,0xaf,0x66,0x86,0x61,0x10,0x5a,0x21,0xfc,0xac,0x83,0x1c,0x94,0x3f,0x35,0xaa,0xf7,0x25,0x2d,0x36,0x46,0x00 },
{ 0x14,0x97,0xa5,0x59,0xcd,0x57,0x5c,0x37,0xb4,0xa4,0xe5,0x8c,0xd9,0xd9,0xbc,0xcf,0xcc,0x1d,0xc9,0x4d,0x7d,0xb4,0x07,0xbf,0xb1,0x05,0xb9,0x26,0x62,0x83,0x48,0x2e,0x40,0x27,0x49,0xaf,0x24,0x53,0x72,0xd0,0x87,0xb6,0xbc,0xdc,0x7c,0x62,0xe0,0xd5,0x95,0x6b,0x4e,0x45,0x33,0xdc,0xdb,0xa2,0xc8,0xd8,0xb6,0x4f,0xb0,0x5c,0xac,0xd1 },
{ 0xab,0x3a,0x13,0x12,0xf3,0x4e,0xad,0xf8,0xc5,0x42,0x86,0x91,0x7b,0xd9,0x20,0x9e,0x56,0xcc,0x81,0x5e,0xd3,0x4a,0x45,0x7d,0xc0,0xb3,0x18,0xd9,0x96,0xa2,0x37,0xa5,0x46,0x5d,0x0e,0xf2,0x23,0x8f,0x93,0x0c,0x3b,0x2e,0x5f,0xbb,0xec,0x80,0x67,0x3f,0x8c,0x94,0x0a,0xa4,0xcf,0x0d,0x30,0x01,0x25,0x29,0xd3,0x5f,0x4f,0x10,0x7c,0x5f },
{ 0x20,0x22,0xdb,0x98,0x15,0x04,0x74,0xec,0x46,0x53,0xd2,0x07,0x16,0x3b,0x19,0xa1,0x04,0x54,0x6b,0x10,0x8c,0xf8,0x01,0x68,0x42,0x6b,0xc7,0xae,0xb8,0x32,0xf0,0x44,0x34,0x66,0x7a,0x63,0xd4,0xd3,0x4f,0x5d,0x6a,0x9c,0x6a,0xf3,0xd3,0x06,0x5e,0xb5,0xe5,0xf8,0x8b,0xb7,0xa9,0x58,0x49,0x92,0xe7,0x98,0xbf,0x99,0x20,0xeb,0x5b,0x33 },
{ 0xee,0x49,0xbe,0x69,0x4e,0xeb,0x72,0x5c,0xbe,0x9a,0x25,0x67,0x17,0x56,0xff,0x0f,0xe6,0x70,0xf3,0xc2,0x86,0xe6,0x2e,0x5c,0x92,0x7b,0x84,0x54,0x0b,0x62,0x9d,0x73,0xdb,0xf1,0x8a,0x20,0x8f,0x44,0xb7,0xcb,0x68,0xab,0x99,0x09,0xf3,0x7d,0xb6,0xf2,0x4a,0x2d,0xeb,0x9c,0x71,0x42,0x55,0x0a,0x8f,0xa2,0xe9,0x28,0xaf,0xb4,0x7a,0xd4 },
{ 0x8f,0x7b,0x42,0xff,0x1c,0x96,0x47,0x1e,0x2c,0xd8,0x8b,0x0c,0xd4,0x3d,0xe2,0x86,0xe0,0x93,0xe1,0x67,0x52,0x39,0xc0,0x85,0xc6,0x53,0xb3,0x94,0x87,0x21,0x39,0x96,0xd8,0x02,0xb2,0xaf,0x40,0x93,0xa3,0xeb,0x59,0x26,0xb6,0xd4,0x8c,0x36,0x8d,0x10,0x14,0xe1,0xb5,0xd2,0xd4,0x05,0x82,0xe7,0x04,0x5d,0x15,0x5b,0x5b,0x2f,0x77,0x94 },
{ 0xca,0xd2,0x9f,0xfe,0x2c,0xb8,0x5c,0x79,0x59,0x96,0xc5,0x40,0xe1,0x28,0x75,0xf9,0x44,0x33,0x8a,0x33,0x71,0xe1,0x27,0xb8,0x40,0xd6,0x3a,0x42,0xeb,0x5e,0xaf,0x42,0x9b,0xae,0xca,0x6b,0xdc,0xc1,0xcd,0x33,0x5e,0xd0,0x48,0xaa,0x82,0x05,0x72,0xda,0xa4,0x61,0x18,0x0e,0x93,0xe9,0x97,0x99,0x54,0x37,0x52,0xc8,0x46,0xe6,0xb7,0x64 },
{ 0xd4,0x6d,0xbc,0xea,0xec,0xda,0x89,0xd8,0xdf,0x16,0xe6,0x1c,0xe7,0x2c,0x87,0x12,0x12,0x10,0xaa,0xe4,0x02,0x2e,0xf2,0x21,0xe8,0x73,0x5a,0xf0,0x1d,0x0d,0x6d,0x19,0xd9,0xa8,0x94,0x60,0x63,0xe3,0x47,0xb6,0x08,0x43,0x20,0x16,0xa5,0x75,0x6f,0x44,0x1c,0x87,0x8f,0x9a,0xa3,0x74,0xa3,0x4e,0xf9,0x79,0xf3,0x3f,0x5c,0x1c,0x57,0x1c },
{ 0x89,0x55,0xd2,0x44,0xe1,0xf1,0xa0,0xe6,0xdf,0xbf,0x4c,0x15,0x92,0x7b,0x99,0xb6,0xc7,0x92,0x45,0x87,0x2e,0x8c,0xb4,0x9f,0x48,0x6d,0x71,0xd8,0xe6,0x8b,0xde,0x13,0xaf,0x69,0xe9,0x59,0x66,0x5c,0x70,0xf6,0x4b,0x28,0x51,0x59,0xfd,0xa4,0xc9,0x22,0x90,0x58,0x31,0xa3,0xdd,0x3f,0x66,0x72,0x3a,0xf3,0x33,0xbd,0xd1,0x5f,0xc5,0x85 },
{ 0x78,0xd5,0x0a,0xaa,0xbf,0xf1,0xa5,0x74,0xf7,0x8a,0x31,0xcc,0x45,0x23,0x4f,0x8a,0x15,0x62,0x36,0x14,0x80,0x68,0x24,0x9f,0x89,0xf9,0xd7,0x89,0xb9,0x3e,0x7f,0xe3,0x85,0xa8,0xbf,0x92,0x53,0xe5,0xf8,0x16,0x00,0xc4,0x92,0xa0,0x46,0x6a,0x71,0x15,0x86,0xd7,0xb8,0x25,0xf3,0x06,0xd1,0xfc,0xc4,0x6e,0x0b,0xa7,0xbf,0x08,0xa0,0x7a },
{ 0x2b,0xcc,0x5b,0x73,0x78,0x91,0x18,0x9d,0xd8,0x23,0x72,0x29,0x74,0x18,0x02,0x22,0x41,0x68,0xee,0x17,0x4b,0xc0,0x9f,0xd9,0xd5,0x54,0xfc,0x76,0x9f,0x65,0x99,0x54,0x73,0xc7,0x5c,0xca,0xaa,0xb9,0x25,0x46,0x2b,0xd3,0x67,0xbb,0x18,0x46,0x87,0x93,0x16,0xe4,0xe3,0xfa,0xc1,0xdf,0xce,0x94,0xcf,0x13,0xe9,0xdb,0x70,0xd2,0x9c,0x33 },
{ 0x45,0x69,0x7a,0x46,0xc2,0x44,0x7e,0x14,0xdc,0xc6,0xc0,0x2d,0x54,0x08,0xb5,0x91,0x70,0xf1,0x8b,0xbb,0x2b,0x28,0x63,0xf3,0x62,0x8d,0xfd,0x69,0x2b,0xd2,0x9f,0xfd,0x45,0x67,0xfb,0x06,0x46,0x60,0xcc,0x24,0x1a,0x45,0x6d,0xf9,0x0c,0xd3,0x86,0x58,0xc6,0x1c,0x24,0x04,0xa6,0xe6,0x32,0x10,0xab,0x3a,0x5b,0x0c,0xe8,0xb6,0x88,0xe0 },
{ 0xb4,0xc4,0x1d,0x8d,0x9d,0x8f,0x44,0xed,0xcd,0x6c,0xb3,0x87,0x3e,0x98,0x8c,0x8d,0x50,0x89,0x1a,0x75,0xd4,0xf9,0xe6,0x71,0x11,0x64,0x1f,0xd1,0x14,0x60,0x6e,0xd6,0xf6,0x4c,0x4a,0xa8,0xc9,0x2a,0xbb,0x77,0xe1,0x01,0xe3,0xb7,0x21,0xb0,0x11,0xc8,0x60,0x01,0xdd,0xd5,0xa0,0xba,0xc1,0x2d,0xf3,0x23,0x8a,0xbe,0xa9,0x3a,0x73,0x5d },
{ 0xe3,0xf8,0xb6,0xae,0xe3,0xf7,0x46,0x90,0x37,0xc5,0x6a,0xff,0xbf,0x25,0xdf,0x07,0x6a,0x86,0xa8,0xe7,0x69,0x01,0x44,0xd6,0x9b,0x94,0xd9,0x73,0xc7,0x38,0x6d,0xc0,0xbd,0x1d,0x51,0x38,0xca,0xc7,0xb7,0xed,0x4a,0xa3,0x1a,0xba,0xc1,0x9b,0x1b,0x19,0x4a,0x46,0xca,0x90,0xa0,0xe1,0x05,0xbd,0x4a,0x90,0xd1,0x47,0x88,0x7d,0x60,0x64 },
{ 0x29,0x5b,0xd3,0x92,0x23,0xd3,0x5c,0x12,0x72,0x68,0xaf,0x61,0x12,0x43,0xf8,0x89,0xf4,0x4d,0xb2,0x65,0x6d,0xa2,0xe5,0x63,0xad,0x91,0x3d,0x1b,0x2e,0x83,0xb9,0x96,0xec,0x72,0xdc,0x7c,0x40,0x88,0x90,0xf3,0xde,0x9a,0x07,0x7d,0x1c,0x45,0x3a,0x59,0x09,0x03,0xae,0xd5,0xf0,0xbb,0xd6,0x8e,0xcf,0x60,0xc0,0x5e,0x5f,0x8a,0xb3,0x6c },
{ 0x9d,0xef,0xd1,0xcb,0xc0,0x4e,0x0d,0x8e,0x29,0x4b,0x63,0x41,0x87,0x48,0xdd,0x38,0x8f,0x80,0x94,0xb8,0xef,0x63,0x09,0xb1,0x45,0x0a,0xdf,0xaa,0x57,0x54,0xd8,0x5b,0x65,0xa5,0x40,0x60,0x09,0xfd,0x75,0x05,0x68,0x64,0xc9,0x50,0x5c,0x3c,0x8c,0x55,0x5a,0xf2,0xe5,0x91,0xe0,0x43,0xad,0x58,0xf3,0x77,0x78,0xf4,0xbe,0x75,0x84,0xe7 },
{ 0xca,0x8a,0x95,0xa8,0x61,0x03,0x71,0x9d,0xb6,0xa2,0x9e,0xa3,0x71,0x2f,0xac,0xc1,0xe5,0x11,0x09,0xda,0xaf,0x0c,0x64,0xe9,0xce,0x4e,0xc4,0xdb,0x14,0x85,0x0b,0x09,0x59,0xdc,0xbd,0x91,0xe1,0x86,0x75,0x82,0x75,0x27,0xc9,0xf7,0x3e,0xf3,0xdd,0xe2,0x62,0xa7,0x31,0x07,0xf8,0x07,0x47,0x9f,0x1d,0x3d,0xc2,0x52,0x00,0x33,0x18,0x16 },
{ 0x5d,0x20,0x9c,0x6f,0xeb,0x60,0x4d,0x6e,0xe0,0xe1,0x6e,0xfe,0x01,0x8e,0x3d,0x0f,0x8b,0x55,0xf7,0xa8,0xa0,0xe4,0xf3,0xa5,0x5c,0x2e,0x56,0xfd,0x38,0x0c,0x30,0x52,0x72,0xbe,0x88,0x02,0xc8,0x19,0x2c,0xb3,0x9c,0xbd,0x62,0xd6,0x3f,0x82,0x56,0xf7,0xe2,0x09,0xa8,0x1d,0xc9,0x02,0x2e,0xfb,0x3d,0x9d,0x9f,0xe2,0xd1,0x64,0x8e,0xb7 },
{ 0xe4,0x7d,0x1f,0x66,0x7d,0x3e,0x09,0x89,0xa2,0x93,0x6c,0xe1,0x35,0x68,0x93,0xe7,0xb5,0x11,0xeb,0x8e,0x7c,0x38,0x4e,0x2d,0x5d,0xab,0x1b,0x9f,0x46,0x3a,0x8d,0xb5,0x5e,0xbc,0xa2,0x7d,0xc0,0x26,0xf7,0xc0,0x6a,0x24,0x93,0x8c,0xa1,0x9f,0xcd,0x16,0x2c,0x24,0x6e,0x5d,0x38,0x67,0x93,0x5f,0xaf,0xee,0x83,0x1a,0x99,0x13,0x2f,0x1b },
{ 0x04,0xf7,0xf8,0x85,0x98,0xb0,0xb9,0xaf,0x49,0x08,0xb7,0xc6,0x3d,0xd1,0x6b,0x6b,0x1e,0xcf,0x92,0x35,0xe8,0xef,0x58,0x50,0x45,0x80,0x47,0x3e,0x39,0x47,0xca,0x31,0x3d,0xa2,0xb8,0x7e,0xcf,0xc2,0x5d,0x90,0x9e,0x46,0x92,0xbe,0x5b,0xa8,0x12,0x7e,0x7d,0x14,0x6a,0x93,0x13,0xe7,0xd9,0xc2,0x5d,0x16,0x36,0xfa,0xb4,0x5b,0xdb,0xcd },
{ 0xf2,0x54,0x31,0xd4,0x7a,0x91,0xb8,0x9a,0xfb,0xa3,0xda,0x46,0xe1,0xc5,0x15,0x67,0xc7,0xdd,0xea,0xe4,0x00,0x42,0x04,0x7e,0x57,0xbe,0x3b,0xcb,0xf4,0x43,0x72,0xca,0x65,0x48,0xf5,0x37,0xc4,0x22,0x80,0x93,0xb5,0xd3,0x0d,0xa3,0x08,0x00,0x81,0x88,0xa6,0x51,0xd8,0xdc,0x72,0x2a,0x8c,0x41,0x45,0x5f,0x26,0x18,0x76,0x85,0x0c,0x7e },
{ 0xe7,0x39,0x5e,0xef,0xf6,0x65,0xe4,0x7e,0x83,0xd7,0xcd,0xd7,0x87,0x30,0xb6,0xec,0x5f,0x75,0x06,0xb0,0x46,0x93,0x7e,0xf0,0x94,0x25,0xad,0x7a,0x97,0x4e,0x20,0x87,0xd8,0x39,0xa1,0x23,0x1c,0xce,0x84,0x6d,0xb9,0xed,0x60,0x1e,0xda,0xcb,0xc4,0x7f,0xd3,0x83,0xda,0x27,0x3d,0x5c,0x24,0x3c,0x01,0x83,0x1d,0xef,0x0e,0xd7,0xd6,0x5f },
{ 0xa3,0x52,0x32,0x0c,0xa1,0x95,0xc1,0xb8,0x36,0xc6,0x89,0xcc,0xc7,0x64,0xbd,0x6b,0xbf,0xef,0x5d,0x8a,0x8a,0x05,0xbf,0xb5,0xaa,0x22,0xa3,0xa5,0x5a,0xc7,0xa0,0x61,0xfc,0x42,0x95,0xb2,0x6a,0x67,0x00,0x4b,0x1b,0x45,0x7e,0xe9,0x50,0x0d,0x10,0x72,0x5c,0xb7,0x12,0x1e,0x15,0x01,0xe2,0x92,0x48,0x26,0x27,0x95,0x9a,0x1a,0x3c,0x92 },
{ 0x26,0xa7,0x7a,0x72,0xfa,0xca,0xed,0x2a,0x45,0x1c,0xa1,0x24,0x78,0xcd,0xcd,0x93,0x43,0xa8,0x66,0x32,0xaf,0x10,0x09,0xa9,0xcf,0x12,0xe2,0x1f,0x0e,0x94,0x31,0xee,0x59,0xa3,0x9f,0xb9,0xc0,0x57,0xf6,0x53,0x23,0xfa,0xa2,0xe2,0x64,0xfc,0xab,0xec,0xa2,0x5c,0xe3,0xf6,0xee,0x7b,0xe9,0xc3,0xfd,0x6b,0xf8,0x37,0xcd,0xa8,0x69,0xb5 },
{ 0x40,0xd0,0x63,0x3d,0x50,0xda,0x02,0x9b,0x6a,0x09,0x32,0x58,0xe7,0xb7,0xff,0x87,0xe5,0x7d,0x42,0xea,0xbd,0xe7,0xfe,0x5b,0x6e,0x5f,0x0c,0x8f,0xfc,0x64,0x53,0x9a,0x91,0x93,0x34,0x57,0x89,0x63,0xf7,0x20,0x45,0x72,0x59,0xcf,0x33,0xc2,0x2e,0x5f,0xb4,0x07,0x16,0x9d,0x61,0xe4,0x5b,0xba,0x10,0x73,0x0d,0x17,0x00,0x52,0xf0,0x4a },
{ 0x10,0xda,0x82,0x62,0x80,0x9c,0xec,0xb9,0x65,0x9c,0x27,0x55,0x59,0xa1,0xc5,0xff,0xb0,0xbd,0x27,0x47,0x49,0x3e,0x08,0xd4,0x9f,0xfd,0x92,0xf4,0xea,0xf6,0x2c,0x60,0xbf,0xcc,0xe3,0x88,0xd6,0x18,0x67,0x95,0xe5,0x87,0x61,0x51,0x49,0xef,0x0b,0x8d,0xa2,0x66,0xa9,0xeb,0x03,0xe2,0xa8,0xc3,0xfa,0xc0,0xe4,0x04,0x72,0x99,0xf2,0x1e },
{ 0xaf,0x38,0x22,0x6f,0xa8,0xfd,0x2c,0x12,0x15,0x05,0x29,0x8a,0x3f,0xcc,0x25,0x20,0x78,0x71,0x8f,0x38,0x0c,0xef,0x8c,0x4a,0x38,0x69,0xae,0x36,0x8d,0x08,0xad,0x6a,0x63,0x32,0xa9,0xfe,0x41,0x32,0xa8,0x87,0x3e,0x9a,0xaa,0x0f,0x3b,0x98,0x63,0xe1,0x87,0xfb,0x1c,0x02,0x3b,0xa2,0x9e,0xf6,0xe5,0xac,0xc3,0x4a,0x59,0x36,0x67,0xf4 },
{ 0x3c,0xfc,0xb8,0x01,0x26,0x97,0xa8,0xc1,0x85,0xb1,0xb8,0xa9,0xda,0x35,0x2c,0x2b,0xc5,0xb7,0xe0,0xc7,0x10,0x49,0xcb,0xe6,0x81,0x1b,0x88,0x9e,0x7f,0x6b,0x29,0x1a,0x46,0x7a,0xdf,0x23,0x25,0xff,0x89,0x3f,0x8d,0xbb,0x27,0xb0,0xe5,0xb9,0xa0,0xa8,0x8c,0xb6,0xd8,0xaa,0x7f,0xa4,0xeb,0x97,0x8f,0x1c,0x01,0xe3,0x14,0x46,0x67,0xa6 },
{ 0x05,0x4d,0x68,0xf5,0xe0,0x5b,0x16,0x3f,0xb3,0x44,0xde,0xbf,0x65,0x38,0xd7,0xa4,0xf9,0x73,0x1f,0xe0,0xb2,0xb9,0x3a,0x85,0x5c,0x69,0xad,0xc4,0x2c,0xb9,0xe9,0xf3,0x1e,0x14,0x1a,0x80,0x40,0x47,0xaa,0x0c,0x06,0xb0,0x75,0xdc,0x04,0x48,0xa7,0x2f,0x1f,0x2e,0xc5,0x1e,0x7c,0x91,0x5e,0x1d,0x97,0xef,0xf8,0xc8,0x36,0xfb,0xa6,0x3c },
{ 0x49,0x79,0xd6,0x72,0x8b,0x75,0x97,0xfa,0x94,0xd9,0x55,0x22,0x34,0x60,0x4c,0xff,0xf8,0xfc,0x05,0x78,0xe0,0x29,0x18,0xdf,0xb7,0x0b,0x0e,0x35,0xcf,0x4a,0x73,0x4d,0x85,0xa2,0xac,0x64,0x81,0x32,0x26,0x9f,0x70,0x7d,0xaf,0x62,0x6c,0x31,0x04,0x63,0xc8,0xec,0xdb,0xa2,0xd3,0xa9,0x74,0x7c,0x3c,0x2a,0x17,0xd9,0xc0,0x51,0x9f,0x69 },
{ 0x75,0x6d,0x81,0x73,0xdd,0x31,0x8c,0xb5,0x77,0x45,0xa6,0x70,0x9b,0xfc,0xbb,0x3f,0x08,0x3f,0xcb,0xb4,0xc1,0x02,0x89,0x39,0x3e,0xec,0x52,0x06,0xb1,0x94,0x6d,0xf1,0xf0,0xad,0x0b,0xf4,0x39,0xae,0xd4,0xc4,0xe7,0x3d,0x69,0x8d,0xe6,0x2f,0x3c,0x74,0xf4,0x52,0x97,0x12,0x55,0xa5,0x49,0xa7,0xad,0x02,0x6a,0x95,0x5e,0x60,0xbb,0x23 },
{ 0x11,0xd9,0x16,0x96,0x81,0xfe,0xc6,0xee,0x39,0x86,0x37,0x58,0x98,0x1c,0x6a,0xb9,0xb6,0x06,0x8e,0x41,0x44,0x17,0x3d,0x27,0x60,0x12,0x6d,0xd4,0x26,0x55,0xaf,0xff,0x17,0x8c,0x13,0xab,0xb5,0xb6,0x88,0x7b,0x1e,0xbb,0x10,0x48,0x16,0xc4,0x70,0x8c,0x9d,0xe7,0x91,0xf9,0xae,0x82,0x29,0x94,0x23,0x7a,0x45,0xcf,0x93,0x39,0x89,0x58 },
{ 0x2f,0xa8,0x0f,0xde,0x83,0x41,0xc0,0x6a,0x3c,0xf4,0xaf,0x17,0x07,0x01,0xc7,0x9b,0xcc,0x08,0x05,0x4f,0x52,0x78,0x17,0x92,0x27,0xe7,0x35,0xb2,0xeb,0x1d,0xc9,0x61,0x66,0xf0,0x53,0xfc,0x8e,0xb8,0x65,0x91,0xb1,0x0b,0x53,0x73,0x79,0xb5,0x27,0x63,0xb9,0x3d,0x76,0x6f,0xf6,0x2e,0x70,0x12,0x8e,0x62,0xb5,0x8f,0x03,0x28,0x3d,0xf6 },
{ 0xc1,0xa7,0xae,0x1f,0x7c,0xf1,0x35,0x9a,0x8b,0x59,0xaf,0xa1,0x22,0x70,0x31,0x95,0x0e,0x0a,0x66,0x55,0xbd,0xa7,0xa5,0x1e,0x04,0xc1,0x91,0x4a,0x9e,0xaa,0xf8,0x31,0xa9,0x29,0xe5,0x75,0xa1,0x9d,0x08,0x8f,0xeb,0x33,0x52,0x68,0x11,0xb0,0x2e,0xac,0xf4,0x2e,0xd0,0x68,0x0c,0xaf,0x8f,0x91,0x68,0x90,0x80,0x2d,0xab,0xf9,0x7f,0x28 },
{ 0xc4,0xa9,0x31,0xbd,0x5b,0x60,0xd9,0xf4,0xe1,0xce,0x8e,0x9e,0x40,0x95,0x01,0xd7,0x6c,0x4a,0x9c,0x08,0x83,0x86,0x4b,0x94,0x3f,0xc3,0x3c,0x08,0x29,0x6d,0x1d,0x3f,0x30,0x04,0x97,0xd9,0x93,0x7c,0x68,0xb3,0x0f,0x3c,0xca,0xf2,0xba,0xe5,0x59,0x9d,0x68,0x47,0x64,0x94,0x75,0xe4,0xa8,0x1d,0xa2,0x84,0x81,0x17,0x6e,0xbe,0x76,0x62 },
{ 0x84,0x90,0x02,0x3d,0xcb,0x12,0x8e,0x39,0xb4,0xda,0x40,0x69,0xd5,0xaf,0x10,0x7c,0x52,0x18,0x30,0x4a,0xe8,0x7a,0xc8,0xf8,0xbe,0x9d,0x9b,0xd6,0xec,0x08,0xe9,0x61,0xa1,0x0a,0xdd,0x02,0xa6,0xc0,0xb5,0xa7,0x0a,0x8c,0x70,0x92,0x2e,0xe2,0xbf,0xa0,0x67,0x10,0xc3,0x56,0xd5,0x66,0x6e,0xac,0x61,0x3b,0x7f,0xe9,0x61,0x11,0xf4,0x36 },
{ 0x02,0x68,0xba,0xac,0x46,0x63,0x91,0xef,0x78,0xf9,0x3e,0xdc,0xb0,0x46,0xf3,0x87,0x0e,0x6e,0x8d,0x37,0x74,0xcd,0xcb,0x3b,0xd5,0xc5,0x7b,0x27,0xd7,0x54,0xe7,0x16,0x02,0xb2,0x85,0x44,0x73,0xb5,0x74,0xdf,0x7d,0x5a,0xc9,0xce,0x4d,0x50,0x9d,0xc2,0x7c,0x2c,0xea,0x5e,0x28,0xa1,0x47,0xcc,0x56,0x8c,0x6e,0x16,0x41,0x9a,0x29,0x81 },
{ 0xca,0x81,0xfc,0x1a,0xc6,0x93,0x1a,0x79,0x2f,0x7b,0xd0,0xb4,0xdc,0x0e,0x72,0x7c,0xdf,0x9e,0x64,0x8d,0xeb,0xd4,0xde,0xdf,0xa7,0x89,0x13,0x4b,0x20,0xc7,0x1c,0x73,0x4f,0xaf,0xa5,0xbf,0xf9,0xf1,0x0d,0xc8,0xa7,0xd0,0x40,0x07,0x9f,0x89,0x07,0x51,0x02,0x6f,0x8b,0xb9,0x0e,0x27,0xf0,0xfc,0x35,0x71,0x2b,0xd4,0x8c,0x9b,0x8b,0xca },
{ 0x71,0xc9,0x9e,0x52,0x86,0xb1,0x75,0x63,0x8a,0x71,0xd9,0xf5,0x96,0x95,0xee,0x5f,0x8e,0x8b,0xaf,0x3c,0xe8,0x64,0xba,0xf8,0x6b,0x05,0x13,0x12,0x6d,0x2c,0xd2,0x3f,0xb9,0xa6,0xa2,0x45,0x63,0x9d,0x9a,0x28,0x7c,0x0e,0xb7,0x17,0x99,0xd8,0x1c,0x12,0xd5,0x73,0xf0,0xea,0x09,0xd7,0x83,0xe3,0xb0,0x0b,0x0d,0xe8,0xe3,0xf4,0xcb,0xae },
{ 0x43,0xf3,0xa5,0xf7,0x3c,0x73,0x91,0x55,0xf9,0x04,0x8a,0x59,0xef,0xba,0x19,0x35,0x5c,0xcd,0xd8,0xdf,0x90,0x5c,0xa5,0x02,0x4a,0x3f,0xf3,0xe8,0x51,0xa5,0x1e,0x3f,0xdc,0x11,0xd6,0xe3,0xb5,0xb7,0x09,0xbd,0xbe,0xcb,0xa3,0x93,0x22,0x38,0x15,0x85,0x80,0x29,0xb5,0x3c,0x5a,0x26,0xca,0xd9,0xaf,0x5e,0x8f,0xe9,0xce,0x0e,0x80,0x3c },
{ 0x6f,0x15,0xf6,0x3c,0xdd,0x3d,0x40,0x6a,0xb5,0x0f,0x9d,0x70,0xf4,0x7f,0x51,0x8c,0xc7,0xaa,0xda,0xa0,0x25,0xa2,0xa1,0x67,0x5f,0x7f,0x09,0xf6,0xba,0x2e,0x31,0x3d,0x5c,0x2b,0x8a,0x91,0x80,0xb4,0x6c,0xfd,0x26,0x8c,0xa2,0xde,0x36,0x9e,0x2b,0xfc,0x56,0x91,0x2b,0x97,0x47,0xe6,0x84,0xd0,0x7a,0xad,0x48,0xa4,0xa0,0xb5,0x41,0xdf },
{ 0x39,0x03,0x45,0xfd,0xe0,0x5e,0xa2,0xde,0x98,0xb1,0xf7,0x31,0x58,0xbc,0x11,0x6e,0x6d,0x2e,0x5e,0xc5,0xe4,0x34,0x83,0xd8,0xda,0x9d,0x03,0x64,0xd2,0xee,0xd4,0xca,0xf6,0x51,0xd3,0x61,0x74,0xbc,0xef,0x53,0x69,0xb1,0xed,0x4b,0x34,0x9d,0x89,0x78,0x43,0xa9,0xc6,0x68,0x15,0x71,0x6c,0x91,0x36,0x42,0xf9,0x09,0xbe,0x5a,0x76,0x15 },
{ 0xcb,0xe2,0x01,0x7c,0x82,0xae,0x59,0x94,0xe0,0x61,0x5d,0x0d,0xa8,0x0a,0x79,0x86,0xdb,0xe2,0x14,0x77,0x4a,0x98,0xe1,0x67,0xea,0xc0,0x4a,0x0f,0xaf,0x3e,0x62,0xe1,0x22,0x0d,0xdb,0x9a,0xa8,0x00,0x8f,0x3c,0x64,0x4f,0xbc,0x2c,0x8e,0xad,0x50,0xcc,0x79,0xc2,0xc7,0xc3,0x81,0x82,0x61,0x35,0xca,0x06,0x44,0xb8,0x3b,0xf8,0xb8,0xc2 },
{ 0xf0,0x8c,0xf9,0x65,0xa7,0x92,0x60,0xf1,0x4a,0x50,0x47,0xb4,0x29,0x8a,0x87,0xd8,0xe4,0x99,0xc2,0x25,0x46,0x5e,0x94,0x2b,0x65,0x36,0x8f,0x8b,0x69,0x51,0xe0,0x4d,0xd7,0xd6,0x10,0x07,0x10,0xd7,0xf0,0x77,0x3a,0x92,0x41,0x8e,0xe9,0x8b,0x1b,0x9e,0x27,0x5c,0x3e,0xde,0x9e,0xc1,0xdc,0xa5,0x72,0x29,0x19,0x09,0x14,0x2d,0x0a,0x59 },
{ 0xe0,0x3e,0x5f,0x6d,0xd9,0x32,0xef,0x32,0xa8,0x31,0x83,0xc2,0x40,0x3d,0x2f,0x3f,0x89,0x67,0x81,0xa8,0xd1,0x13,0x2d,0xde,0x95,0x80,0x2d,0xbb,0xca,0xf8,0xba,0x98,0xe4,0x3e,0xc6,0x99,0xa6,0x01,0x5c,0xa8,0x59,0xa6,0xb7,0x2a,0x7c,0x44,0xf0,0xe3,0x71,0x15,0x43,0x8b,0x24,0xdb,0x8e,0x23,0xe1,0x78,0x03,0xf5,0x7c,0xa4,0x56,0x9e },
{ 0x3a,0x8e,0x63,0x9d,0x7c,0x1a,0x66,0x3e,0x15,0xb3,0x36,0xc1,0x66,0x71,0x00,0x64,0x90,0xcf,0xb8,0xd8,0x08,0x7e,0x31,0x86,0xa0,0x38,0x38,0x6d,0x51,0x07,0x43,0xd3,0x9e,0xf8,0xc9,0xc0,0x08,0xd3,0x02,0xb1,0xd2,0xb9,0xc7,0x05,0xac,0xdd,0x9f,0xfb,0xdb,0xa6,0x93,0xd4,0x20,0x77,0x98,0xad,0x62,0xd4,0x1b,0xce,0xb0,0x0c,0x30,0xe6 },
{ 0x46,0x56,0x10,0x59,0xd4,0x4a,0x39,0x54,0x21,0xab,0xe3,0x82,0x4d,0xfa,0x68,0xb8,0x9e,0xc9,0xf6,0x4c,0x81,0x58,0x73,0x94,0x9a,0xd6,0x09,0x3c,0xe8,0x30,0x2b,0xbc,0x94,0x71,0xd0,0x1a,0xdf,0x10,0x8e,0x02,0xd6,0x03,0x4b,0xc2,0x19,0xe4,0xfc,0x4f,0xa7,0x80,0x5c,0xc8,0x85,0x1c,0x74,0x58,0x43,0xf3,0x8b,0x65,0xa5,0x4d,0x76,0x97 },
{ 0xa7,0x3d,0xe1,0xcf,0x84,0x58,0xd8,0x09,0xe6,0x3e,0x2c,0x5f,0x28,0x78,0x47,0xba,0x34,0x25,0x1f,0xd6,0x19,0x44,0x0b,0xed,0x61,0x63,0x25,0x24,0xf8,0x7d,0xfa,0x70,0x64,0x37,0xe3,0x48,0xc7,0x29,0x07,0x07,0x31,0x68,0x9b,0x5b,0xb0,0x3d,0x7f,0xb2,0xff,0xd5,0xf4,0x1d,0x67,0x96,0x1f,0x90,0xd9,0x78,0x47,0xe1,0xa2,0xd0,0x25,0x93 },
{ 0x4b,0xdc,0x1d,0x8c,0x9b,0x24,0x21,0x04,0x65,0xf8,0x10,0xe1,0x56,0x7c,0xb6,0xec,0x03,0xf8,0x9d,0xcd,0x91,0x9a,0x5f,0xad,0x9a,0x6c,0xdb,0x74,0x1a,0x6c,0x7e,0x43,0xc7,0xc9,0x2d,0xaa,0xb9,0x34,0x26,0x8f,0xfc,0x75,0x66,0xc6,0xf4,0xe0,0xa4,0xfa,0xe2,0xc4,0x3f,0x25,0xf8,0x08,0x9c,0x68,0x63,0xd2,0xa4,0xd6,0x1a,0xcc,0x13,0xb8 },
{ 0x50,0x0a,0xc8,0x67,0xa8,0x87,0x1d,0x36,0xfe,0x4f,0x8c,0x7b,0x0c,0xe8,0x32,0x60,0x95,0x0c,0x83,0xff,0x60,0xa2,0x1a,0x53,0x52,0x6f,0xae,0x55,0xc8,0xc8,0xfc,0xf1,0x0f,0x64,0xbb,0xde,0x79,0xd1,0x7b,0x4a,0x72,0x9c,0x80,0x60,0x61,0x1c,0x90,0x30,0xca,0x83,0xe7,0x88,0xca,0x90,0x19,0x75,0x4f,0x65,0xed,0x09,0xae,0xf7,0x27,0xd2 },
{ 0x4b,0x69,0x00,0x3e,0x50,0x6f,0x58,0x26,0xa1,0x01,0xc4,0x11,0x69,0x21,0x10,0xe9,0x07,0x32,0x78,0xea,0x70,0x8e,0x25,0x02,0xfd,0xad,0x3c,0x61,0xdc,0xd0,0x19,0x89,0xee,0x6e,0x45,0x86,0x68,0x85,0x0e,0x42,0xa8,0x52,0xf8,0x9f,0xba,0xf9,0x19,0xe4,0x38,0x64,0xfb,0x02,0x67,0xf1,0x93,0x8b,0x37,0x03,0x7e,0x7f,0x0e,0xcb,0x4f,0xdd },
{ 0xae,0x79,0xfb,0xff,0x99,0xb5,0x0c,0x21,0x6f,0x01,0xa9,0x15,0xb2,0x1f,0xb5,0x41,0x00,0xff,0xfc,0x01,0xb9,0xb5,0x75,0x89,0x03,0x48,0xfc,0xec,0x3f,0x3f,0x87,0x25,0x53,0x92,0xad,0x5c,0xe5,0xbd,0xc2,0x37,0xc5,0x97,0x28,0x57,0x7a,0xdc,0x6d,0x01,0x2d,0xa2,0x9b,0x37,0x8f,0xf8,0x20,0x57,0x8d,0x33,0x3b,0x63,0xd3,0x21,0xee,0x6e },
{ 0x1b,0xaf,0x5e,0x8f,0x15,0x7a,0xbc,0xdf,0x0d,0x4d,0x5a,0x0e,0xef,0x1e,0xbf,0xfe,0x41,0x44,0xb8,0xd7,0xd5,0x02,0x1b,0x49,0x77,0x81,0xa8,0x4b,0xf8,0xed,0x55,0xa4,0x74,0x02,0xd2,0x95,0x75,0x08,0x7b,0xb5,0x7b,0x8e,0x5a,0xb1,0xc0,0xe2,0xc8,0x82,0x82,0x18,0xbd,0x3c,0xc8,0xe0,0xc3,0x33,0x11,0x35,0x35,0xa9,0x65,0xd5,0x21,0x7d },
{ 0x0d,0x65,0xae,0x6a,0x93,0xb3,0x9b,0x53,0x44,0xbf,0xf5,0x29,0xe9,0x99,0xc9,0x39,0x06,0x92,0x13,0xa4,0xc4,0xaf,0xb3,0xda,0xca,0x5e,0xbf,0x90,0x42,0x58,0xeb,0x65,0xb5,0x6c,0x4b,0x93,0xad,0x6b,0x5f,0xda,0x12,0xf5,0x4b,0x54,0xdd,0xbe,0x6d,0x44,0x12,0xa5,0xa6,0x3b,0xee,0xd7,0x37,0x5a,0xce,0xa5,0xda,0xc2,0xc6,0x16,0xb6,0xd2 },
{ 0x11,0xd2,0x57,0xc5,0x1f,0x93,0x91,0x46,0x16,0x68,0x24,0x77,0x20,0xbf,0x62,0xcf,0xec,0x11,0x5b,0x7d,0x04,0x1b,0x36,0x16,0xe4,0x70,0x37,0xa1,0x3e,0x17,0xc5,0xcf,0x7a,0x3a,0xc5,0x99,0x40,0xf9,0xd7,0x80,0x88,0xb3,0x5a,0xc1,0xe8,0x85,0x6b,0x37,0xb3,0x16,0xf4,0x1b,0xd9,0x34,0xc6,0x2d,0x21,0x67,0x84,0x20,0x8e,0xa2,0x2f,0x59 },
{ 0x58,0x69,0x3b,0xb9,0xdd,0x7d,0x04,0x1a,0x35,0x57,0x3a,0x08,0x19,0xec,0x00,0x61,0xc1,0x27,0x27,0x77,0xed,0x8e,0x1b,0xd1,0x26,0x37,0x57,0x82,0x10,0x95,0x5d,0x7f,0x53,0xf7,0x64,0x8c,0x39,0xc9,0xdb,0x7d,0x56,0xef,0x0a,0x33,0xf3,0xec,0xe6,0x78,0x2e,0xbe,0x1d,0x51,0x45,0x8b,0x01,0x3b,0xf7,0x89,0xe3,0xbd,0x49,0xee,0x63,0x56 },
{ 0xf1,0x8b,0xa4,0xa3,0x8a,0xb6,0x19,0xc2,0xe1,0x31,0x9c,0x01,0x39,0x09,0x0d,0xbb,0xe3,0xb0,0xe0,0xbb,0x73,0x24,0xc6,0x75,0x47,0x91,0xde,0xa4,0x84,0x2e,0x62,0xb8,0x17,0x5c,0xe9,0xa4,0xda,0xd3,0x12,0xbd,0x98,0xa6,0x2a,0x40,0xa9,0xff,0xf8,0x07,0x7e,0x19,0x5e,0x26,0x6f,0xc6,0x09,0x3d,0x7a,0x29,0xd1,0xb0,0x6e,0x4f,0x82,0x08 },
{ 0xfc,0xe7,0xb6,0x9a,0xe9,0x9b,0xa7,0xe7,0x76,0x0e,0x2c,0x93,0x81,0x87,0xfe,0x3c,0x8c,0xd1,0x24,0x8a,0xea,0x9c,0x56,0xdd,0x22,0x0d,0x78,0x8f,0x0c,0xbc,0x1e,0xbd,0xfd,0xa8,0x77,0xa6,0x9c,0xea,0x9d,0xdb,0x20,0xb7,0x97,0x74,0x7a,0x27,0xad,0x58,0x04,0x8f,0x0d,0xba,0xaf,0xd9,0x88,0xac,0x9f,0xbc,0x92,0x66,0xe7,0x2f,0x22,0xb9 },
{ 0x5e,0xa2,0xa0,0xed,0xa1,0xb7,0x85,0x0b,0xa7,0xa9,0x03,0x96,0xb8,0xf7,0x1a,0x69,0x4f,0x8e,0x95,0x9c,0xd4,0xa3,0xb4,0x81,0x61,0x2f,0x82,0x14,0xd1,0xa0,0xc0,0xaf,0x73,0x19,0x30,0xd2,0xe4,0xc7,0xfc,0x73,0xc1,0x49,0xb2,0x46,0x73,0x5b,0x73,0xe7,0x6a,0x73,0x0f,0x4a,0xad,0x60,0xb3,0x9b,0xdd,0xd7,0xf5,0x5d,0x48,0x21,0x3e,0x39 },
{ 0x38,0xd3,0x25,0xe1,0x08,0x9a,0xd7,0x4a,0x34,0x17,0x64,0x31,0x87,0xae,0xea,0x1c,0xdb,0x8d,0x6f,0x8a,0x81,0x84,0xd0,0xf5,0x5e,0xaf,0xe7,0x61,0x54,0x38,0x23,0x33,0xd7,0x4e,0x41,0x52,0x8f,0xd1,0x3c,0x49,0xeb,0x2f,0xd6,0x55,0xf4,0xf3,0xa9,0xa5,0x87,0xe1,0xb1,0x5d,0x90,0x78,0xde,0xe0,0x98,0xf0,0x10,0x4a,0x9a,0x8c,0x84,0x1f },
{ 0x43,0x48,0x5a,0x0e,0xae,0x20,0x24,0x2c,0xcf,0x01,0x49,0x9c,0x2f,0xa4,0x1c,0x6c,0x8a,0xb4,0xd1,0x6e,0x35,0xf3,0xd5,0x1e,0x10,0xe5,0x00,0x26,0xcf,0x7a,0xb9,0x91,0x89,0x79,0x79,0xb2,0x81,0x10,0x5c,0x5e,0x7f,0xa6,0x7d,0xa3,0xd5,0xa1,0x81,0xcf,0xcc,0x86,0x66,0xb2,0x7c,0x4d,0x19,0x04,0x64,0x79,0x0d,0xd8,0x96,0xa0,0x41,0x9e },
{ 0xf0,0x33,0x31,0x75,0xfc,0xb0,0x27,0x79,0xf1,0x18,0xb6,0x12,0x8b,0x43,0x29,0x62,0xb9,0x35,0xbb,0xf5,0x6a,0xb7,0xfe,0xda,0xf7,0xac,0xdf,0xee,0x49,0xae,0xad,0x3d,0xdf,0x40,0x8c,0xcf,0x0e,0x03,0xc4,0x2a,0x34,0xb8,0xe8,0xad,0x95,0xa1,0x01,0xdc,0x4e,0xed,0xfc,0x67,0x4e,0xc0,0x94,0xa3,0xb9,0xe9,0x9a,0xf2,0xe5,0xc4,0xfc,0x01 },
{ 0xb3,0xa3,0x74,0xa1,0xd3,0x5e,0x78,0xc0,0xa0,0xab,0x49,0xf9,0x88,0xe6,0x95,0x78,0x0a,0x0e,0x03,0x61,0x87,0xbc,0xce,0xaf,0x26,0x19,0x23,0x72,0x5f,0x4f,0xec,0x4a,0x8b,0x13,0xd5,0xfe,0xc7,0x06,0x18,0x50,0x16,0xd0,0xca,0xcb,0x72,0x2c,0x8f,0x23,0x95,0x05,0x1d,0xc2,0xd6,0xf0,0x94,0x5e,0xbf,0x6e,0x4c,0xb0,0x27,0x93,0xf9,0x03 },
{ 0x61,0x7d,0x6f,0x47,0x3c,0x7b,0x5b,0x89,0xed,0x00,0xb2,0xcd,0x6c,0x97,0xbd,0x1e,0xcd,0x8c,0x8b,0x3e,0x48,0x9d,0x61,0xc0,0x0a,0xc5,0xd5,0x07,0x33,0x57,0xa9,0xc5,0x8a,0xad,0xb5,0x54,0xf5,0x6b,0xdb,0xa9,0x00,0x36,0x93,0x4f,0xe4,0x53,0x16,0xad,0x42,0x80,0x6e,0x86,0x5b,0x8a,0x7d,0x8c,0x55,0x95,0xc6,0x0d,0xad,0xb7,0x06,0x4a },
{ 0x23,0x77,0x6b,0x8f,0x63,0xa9,0x08,0x69,0x15,0xee,0x2b,0x48,0x74,0x4f,0x3d,0x8a,0x3d,0x20,0xdd,0x82,0x84,0x44,0xf5,0x9e,0x9b,0xbf,0xce,0xa5,0xc4,0x6c,0xdc,0x1c,0x75,0x2f,0x0a,0x93,0x10,0x50,0x35,0xc7,0xbc,0x07,0xe0,0x35,0x2c,0x25,0x30,0x2c,0xe9,0xf5,0xe1,0xb7,0x7b,0x8b,0x7c,0x38,0xe1,0x9a,0x13,0xd7,0xec,0xbc,0x96,0x5d },
{ 0x10,0x6c,0xf9,0xac,0x5d,0x23,0x49,0xac,0x48,0x60,0xf6,0x13,0xa3,0xf1,0x66,0xdc,0xa5,0xec,0xed,0x85,0xe5,0xdb,0x33,0x99,0xad,0xd2,0xed,0x3a,0x28,0x2a,0x1c,0x1a,0x12,0xc9,0xd4,0x20,0xce,0xab,0x90,0x93,0x39,0xb1,0x05,0xea,0x42,0x98,0xcf,0x4a,0x89,0xec,0x38,0xb1,0x48,0x21,0xec,0x1f,0x13,0xc7,0x43,0x21,0x14,0xec,0xe8,0xf2 },
{ 0x82,0x77,0x96,0xff,0x4f,0xb5,0x8d,0xc1,0x89,0x79,0xec,0xb3,0x88,0x2c,0xb0,0xf9,0xbe,0x5b,0xf2,0xae,0x97,0x81,0xaf,0xa6,0xb4,0x6b,0x5c,0xd4,0x45,0xfc,0x44,0x56,0x43,0xe3,0xcc,0x8b,0xdf,0xc4,0x65,0xb3,0xd1,0xad,0x09,0xe5,0x7e,0x85,0xee,0x2b,0xf4,0xd0,0x04,0xf2,0x0b,0x49,0x55,0x30,0xad,0x3c,0xf8,0x32,0x79,0x16,0x2a,0xc8 },
{ 0xd7,0xe7,0x4a,0x64,0xa4,0x0f,0x76,0xcd,0x2a,0x2b,0xaa,0xd3,0x46,0x19,0x15,0x42,0xab,0x25,0x4f,0xe3,0x44,0x2e,0x3a,0xa5,0xe1,0x7a,0x4d,0x4f,0x48,0xf1,0xc1,0x35,0xb0,0x44,0xf0,0x47,0x7f,0xe2,0xac,0x34,0xe8,0xb6,0x34,0x2d,0xa6,0xe2,0xd9,0xb5,0x80,0x2a,0x1b,0x32,0xb2,0x68,0xcd,0xdd,0xd1,0x29,0x59,0xc0,0x56,0x81,0x21,0x95 },
{ 0xcd,0x40,0x15,0x33,0x0a,0xeb,0x6c,0x7e,0x35,0x68,0x2f,0x65,0xdb,0x83,0x51,0x01,0xe5,0x5b,0xc4,0xed,0x5c,0x4e,0x73,0x3a,0x17,0x31,0x5d,0xd5,0x6b,0xe9,0xe8,0xbf,0xd8,0xfd,0x11,0xb1,0xb8,0xfa,0x38,0xee,0xc9,0x9a,0x80,0x33,0x0c,0x01,0x68,0x73,0x82,0xb4,0xb7,0x4b,0xff,0x68,0x5e,0x8a,0xf7,0x82,0x46,0x67,0x67,0x1f,0x1b,0x32 },
{ 0xb4,0x5a,0xdf,0x39,0x60,0x98,0x84,0xf2,0x99,0x39,0x6b,0x67,0xe4,0x08,0x35,0xf9,0x8c,0x97,0xa1,0xf4,0x10,0x9a,0x4e,0x13,0xe0,0x8c,0xe1,0x79,0xfc,0x55,0xb2,0x5d,0xc7,0xdc,0x4d,0xba,0x46,0x30,0x57,0xc2,0xa7,0x11,0xa6,0x45,0x9d,0x37,0x5d,0x69,0x16,0x08,0x7b,0x42,0x0a,0x1d,0x5d,0xad,0xb8,0xd4,0xe4,0x92,0xc7,0x8e,0x6b,0xe6 },
{ 0x4f,0xf9,0x55,0x91,0xd1,0xb3,0x9f,0xaa,0xb3,0x2e,0x37,0x53,0x3e,0x0b,0xb5,0x55,0x6a,0x58,0xbd,0x5f,0x67,0x7d,0x12,0xae,0x76,0x1a,0x87,0xbb,0xed,0xbe,0xa1,0xd5,0x79,0xda,0x7b,0x4a,0x91,0x23,0xfa,0x06,0x57,0x29,0x7f,0x3a,0x16,0x2e,0x08,0x64,0x52,0xee,0x6a,0xbf,0xfa,0xb8,0x61,0xb2,0x98,0x74,0x9a,0x21,0xe7,0xf1,0x7c,0x9b },
{ 0xba,0x92,0xa5,0xe4,0x7a,0xb2,0x32,0x40,0x06,0xe9,0x0d,0x2d,0x23,0xac,0x03,0x85,0x86,0x1a,0x8a,0xbf,0xc2,0xf1,0x2c,0x13,0x73,0x56,0xe8,0x78,0x62,0x5c,0x93,0x3b,0x37,0x02,0xf7,0xdb,0xee,0x50,0x20,0x48,0xde,0xd2,0x42,0x4a,0xb4,0x5f,0x47,0xca,0xec,0xd2,0xf8,0xd9,0xa7,0xe1,0x98,0xfa,0x84,0x2e,0x8a,0xf7,0x63,0x7c,0xca,0x6d },
{ 0xdb,0x09,0x43,0xc5,0x83,0xd0,0x1c,0x5e,0x81,0x95,0x10,0xb5,0x4e,0x60,0xf1,0xcc,0x9f,0x8c,0x6e,0x46,0x95,0x6d,0x66,0xc0,0x19,0x65,0x03,0x80,0xc2,0xc0,0x7e,0x9c,0xe7,0x1c,0x3e,0x2a,0x34,0x64,0x26,0x7f,0x0b,0xef,0x1d,0x2c,0xc9,0xf5,0xd8,0xbf,0x17,0x22,0xf0,0x3e,0xba,0xee,0x6c,0x3a,0xe4,0x4f,0xa0,0x4e,0xd2,0x29,0x19,0x7c },
{ 0xc7,0xdc,0xe3,0xf3,0xfb,0xf2,0x49,0xeb,0x21,0x9e,0xea,0xe4,0x90,0x9b,0x24,0x5f,0xc5,0x7e,0xfd,0x47,0x0d,0xd4,0xd3,0x3e,0xdc,0x04,0x1e,0xde,0x63,0x1f,0x37,0x4a,0xbf,0xda,0x22,0x09,0xbf,0x30,0x9b,0x8e,0x52,0xa8,0x88,0x02,0x65,0x19,0x80,0xee,0x2d,0x9d,0x43,0x93,0xd9,0x70,0x18,0xba,0x32,0x73,0x2c,0x3f,0x8f,0xba,0x40,0x4e },
{ 0xcc,0x81,0xbe,0x13,0xdb,0xe8,0x2b,0xbd,0x71,0x9b,0xa1,0xee,0xa7,0x06,0xe4,0x6f,0x1f,0x98,0xb4,0x86,0xb0,0x8f,0x77,0xa0,0xfc,0xd4,0x6c,0x2a,0x31,0x5a,0x8d,0xef,0xd5,0xc9,0x22,0xee,0x3b,0x1f,0x2f,0x66,0x82,0x21,0x16,0x07,0x85,0xce,0xdd,0x99,0xa5,0x3c,0x50,0x00,0x6a,0xaa,0xdb,0xa3,0x3f,0x63,0x34,0xc2,0x09,0x7c,0x34,0x09 },
{ 0x19,0xf3,0xf5,0x7b,0x53,0x0c,0x7f,0xdc,0xf4,0x82,0x46,0xce,0x0a,0x14,0x22,0xaa,0x36,0xee,0x52,0x3e,0x0b,0x59,0x0b,0xf5,0x11,0xf6,0x65,0x29,0x9f,0xeb,0x7b,0x34,0x2b,0x6a,0xdb,0x6b,0x9b,0x89,0x33,0x2f,0xd2,0xb0,0xd9,0x3b,0xd5,0x05,0x3e,0x99,0x3c,0x01,0x42,0x70,0x5d,0xaa,0xdb,0xbb,0xd8,0x3a,0x04,0x4f,0xc3,0x86,0x74,0xc4 },
{ 0xf7,0x2c,0xbd,0x24,0x0e,0x26,0xc0,0xd2,0x1b,0x10,0x23,0x17,0x95,0x86,0xeb,0x53,0x2c,0x61,0x02,0xc4,0x9c,0x36,0x77,0xcc,0x1a,0x3d,0x13,0x2b,0x9d,0xb9,0xd3,0x1a,0x43,0xe4,0xca,0x77,0xe2,0xa3,0x66,0x21,0xdc,0x0d,0xbd,0x91,0xbf,0xe7,0xa5,0xd2,0x23,0x25,0x0e,0xf0,0xcd,0xca,0x83,0x1e,0xe4,0x53,0xd9,0x3f,0xa8,0x34,0x08,0xa7 },
tinyssh-20180201/crypto-tests/precomp_nistp256.data.py 0000664 0000000 0000000 00000003742 13227043065 0022543 0 ustar 00root root 0000000 0000000 import binascii
p = 2**256 - 2**224 + 2**192 + 2**96 - 1
basepx = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
basepy = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
B = (basepx, basepy)
def expmod(b, e, m):
if e == 0: return 1
t = expmod(b, e/2, m)**2 % p
if e & 1: t = (t * b) % p
return t
def inv(x):
return expmod(x, p - 2, p)
def add(P, Q):
"""
"""
x1 = P[0]
y1 = P[1]
x2 = Q[0]
y2 = Q[1]
x3 = ((y2-y1)**2)*inv((x2-x1)**2)-x1-x2
y3 = (2*x1+x2)*(y2-y1)*inv(x2-x1)-((y2-y1)**3)*inv((x2-x1)**3)-y1
return [x3 % p, y3 % p]
def dbl(P):
"""
"""
x1 = P[0]
y1 = P[1]
x3 = (3*x1**2-3)**2 * inv((2*y1)**2)-x1-x1
y3 = (2*x1+x1)*(3*x1**2-3)*inv((2*y1))-(3*x1**2-3)**3*inv((2*y1)**3)-y1
return [x3 % p, y3 % p]
def scalarmult(P, e):
if e == 0: return [0,0]
if e == 1: return P
Q = scalarmult(P, e/2)
Q = dbl(Q)
if e & 1: Q = add(Q, P)
return Q
def pack(n):
n = n % p
r = ""
for i in range(32):
r = "%s%s" % (chr(n & 255), r)
n = n >> 8
return r
def unpack(s):
r = 0
for i in range(32):
r <<= 8
r += ord(s[i])
return r
def publickey(sk):
a = unpack(sk)
A = scalarmult(B, a)
return "%s%s" % (pack(A[0]), pack(A[1]))
f = open("precomp.txt")
def l(line):
l = ""
for i in range(64):
if i == 63:
l += "0x%s%s" % (line[2*i], line[2*i+1])
else:
l += "0x%s%s," % (line[2*i], line[2*i+1])
return l
while True:
line=f.readline()
if len(line) == 0:
f.close()
break
print "{", l(binascii.hexlify(publickey(binascii.unhexlify(line[0:-1])))), "},"
tinyssh-20180201/crypto-tests/randombytestest.c 0000664 0000000 0000000 00000003773 13227043065 0021541 0 ustar 00root root 0000000 0000000 /*
20140318
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "misc.h"
#include "randombytes.h"
static int verify(const unsigned char *x, const unsigned char *y) {
unsigned int i, d = 0;
for(i = 0; i < 16; ++i) d |= x[i] ^ y[i];
return (1 & ((d - 1) >> 8)) - 1;
}
static int readall(int fd, unsigned char *x, long long xlen) {
long long r;
while (xlen > 0) {
r = read(fd, x, xlen);
if (r <= 0) return -1;
x += r;
xlen -= r;
}
return 0;
}
static int writeall(int fd, unsigned char *x, long long xlen) {
long long r;
while (xlen > 0) {
r = write(fd, x, xlen);
if (r <= 0) return -1;
x += r;
xlen -= r;
}
return 0;
}
static void run(unsigned char *x, long long xlen) {
pid_t pid;
int status, fromchild[2];
unsigned char buf[16];
if (pipe(fromchild) == -1) fail("pipe() failure");
pid = fork();
if (pid == -1) fail("fork() failure");
if (pid == 0) {
close(fromchild[0]);
randombytes(buf, sizeof buf);
if (writeall(fromchild[1], buf, sizeof buf) == -1) _exit(111);
_exit(0);
}
close(fromchild[1]);
if (readall(fromchild[0], x, xlen) == -1) fail("read() failure");
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) fail("process killed");
if (WEXITSTATUS(status)) fail("process exited with status != 0");
}
int main(void) {
unsigned char buf1[16];
unsigned char buf2[16];
run(buf1, sizeof buf1);
run(buf2, sizeof buf2);
if (verify(buf1, buf2) == 0) fail("randombytes() cryptographically dangerous");
randombytes(buf1, sizeof buf1);
randombytes(buf2, sizeof buf2);
if (verify(buf1, buf2) == 0) fail("randombytes() cryptographically dangerous");
run(buf1, sizeof buf1);
run(buf2, sizeof buf2);
if (verify(buf1, buf2) == 0) fail("randombytes() cryptographically dangerous across fork()");
_exit(0);
}
tinyssh-20180201/crypto/ 0000775 0000000 0000000 00000000000 13227043065 0014774 5 ustar 00root root 0000000 0000000 tinyssh-20180201/crypto/CRYPTOLIBS 0000664 0000000 0000000 00000000734 13227043065 0016415 0 ustar 00root root 0000000 0000000 crypto_onetimeauth_poly1305.o
aes.o
crypto_core_aes256encrypt.o
randombytes.o
uint32_pack.o
uint32_unpack.o
uint32_pack_big.o
uint32_unpack_big.o
crypto_stream_chacha20.o
verify.o
crypto_verify_16.o
crypto_verify_32.o
crypto_hash_sha512.o
sha256.o
crypto_hash_sha256.o
crypto_auth_hmacsha256.o
fe.o
fe25519.o
ge25519.o
sc25519.o
fep256.o
gep256.o
scp256.o
crypto_scalarmult_curve25519.o
crypto_sign_ed25519.o
crypto_scalarmult_nistp256.o
crypto_sign_nistp256ecdsa.o
cleanup.o
tinyssh-20180201/crypto/CRYPTOPRIMITIVES 0000664 0000000 0000000 00000000666 13227043065 0017363 0 ustar 00root root 0000000 0000000 crypto_int64 0
crypto_uint16 0
crypto_uint32 0
crypto_uint64 0
crypto_uint8 0
crypto_stream_chacha20 1
crypto_onetimeauth_poly1305 1
crypto_auth_hmacsha256 1
crypto_hash_sha512 1
crypto_hash_sha256 1
crypto_verify_16 1
crypto_verify_32 1
crypto_core_aes256encrypt 1
crypto_scalarmult_curve25519 1
crypto_scalarmult_nistp256 1
crypto_sign_ed25519 1
crypto_sign_nistp256ecdsa 1
randombytes 0
uint32_pack_big 0
uint32_unpack_big 0
cleanup 0
tinyssh-20180201/crypto/CRYPTOSOURCES 0000664 0000000 0000000 00000000644 13227043065 0017007 0 ustar 00root root 0000000 0000000 crypto_onetimeauth_poly1305
aes
crypto_core_aes256encrypt
randombytes
uint32_pack
uint32_unpack
uint32_pack_big
uint32_unpack_big
crypto_stream_chacha20
verify
crypto_verify_16
crypto_verify_32
sha256
crypto_hash_sha256
crypto_auth_hmacsha256
crypto_hash_sha512
fe
fe25519
ge25519
sc25519
fep256
gep256
scp256
crypto_scalarmult_curve25519
crypto_sign_ed25519
crypto_scalarmult_nistp256
crypto_sign_nistp256ecdsa
cleanup
tinyssh-20180201/crypto/aes.c 0000664 0000000 0000000 00000012521 13227043065 0015711 0 ustar 00root root 0000000 0000000 /*
- based on crypto_core/aes256encrypt/ref from supercop-20140622
- added bitsliced 'bytesub'
*/
#include "cleanup.h"
#include "aessbox.h"
#include "crypto_uint32.h"
#include "aes.h"
static unsigned char gmul2(unsigned char a) {
unsigned char x = a >> 7; /* 0x00 or 0x01 */
x = -x; /* 0x00 or 0xff */
x &= 0x1b; /* 0x00 or 0x1b */
a <<= 1;
return x ^ a;
}
/* functions for aessbox macro */
static void xor2(crypto_uint32 *r, const crypto_uint32 *x) { *r ^= *x; }
static void and2(crypto_uint32 *r, const crypto_uint32 *x) { *r &= *x; }
static void or2(crypto_uint32 *r, const crypto_uint32 *x) { *r |= *x; }
static void copy2(crypto_uint32 *r, const crypto_uint32 *x) { *r = *x; }
/* 16x SubBytes parallel using bitslicing */
static void bytesub(unsigned char *r, unsigned char *c) {
crypto_uint32 t0, t1, t2, t3, t4, t5, t6, t7;
crypto_uint32 b0 = 0, b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0;
long long j;
for (j = 0; j < 16; ++j) {
b0 <<= 1; b0 |= 1 & (c[j] );
b1 <<= 1; b1 |= 1 & (c[j] >> 1);
b2 <<= 1; b2 |= 1 & (c[j] >> 2);
b3 <<= 1; b3 |= 1 & (c[j] >> 3);
b4 <<= 1; b4 |= 1 & (c[j] >> 4);
b5 <<= 1; b5 |= 1 & (c[j] >> 5);
b6 <<= 1; b6 |= 1 & (c[j] >> 6);
b7 <<= 1; b7 |= 1 & (c[j] >> 7);
}
aessbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, t4, t5, t6, t7);
for (j = 0; j < 16; ++j) {
r[15 - j] = 0; r[15 - j] |= 1 & b5; b5 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b2; b2 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b7; b7 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b3; b3 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b6; b6 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b4; b4 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b1; b1 >>= 1;
r[15 - j] <<= 1; r[15 - j] |= 1 & b0; b0 >>= 1;
r[15 - j] ^= 0x63;
}
}
void aes_core(unsigned char *out, const unsigned char *in, const unsigned char *k, long long rounds) {
unsigned char expanded[4][60];
unsigned char state[4][4];
unsigned char newstate[4][4];
unsigned char a0, a1, a2, a3;
long long i, j, r;
/* load expanded key */
for (j = 0; j < 4 * (rounds + 1); ++j)
for (i = 0; i < 4; ++i)
expanded[i][j] = k[j * 4 + i];
/* AddRoundKey */
for (j = 0; j < 4; ++j)
for (i = 0; i < 4; ++i)
state[i][j] = in[j * 4 + i] ^ expanded[i][j];
for (r = 0; r < rounds; ++r) {
/* SubBytes */
bytesub((unsigned char *)newstate, (unsigned char *)state);
/* ShiftRows */
for (i = 0; i < 4; ++i)
for (j = 0; j < 4; ++j)
state[i][j] = newstate[i][(j + i) % 4];
/* MixColumns */
if (r < rounds - 1)
for (j = 0; j < 4; ++j) {
a0 = state[0][j];
a1 = state[1][j];
a2 = state[2][j];
a3 = state[3][j];
state[0][j] = gmul2(a0 ^ a1) ^ a1 ^ a2 ^ a3;
state[1][j] = gmul2(a1 ^ a2) ^ a2 ^ a3 ^ a0;
state[2][j] = gmul2(a2 ^ a3) ^ a3 ^ a0 ^ a1;
state[3][j] = gmul2(a3 ^ a0) ^ a0 ^ a1 ^ a2;
}
/* AddRoundKey */
for (i = 0; i < 4; ++i)
for (j = 0; j < 4; ++j)
state[i][j] ^= expanded[i][r * 4 + 4 + j];
}
/* store output */
for (j = 0; j < 4; ++j)
for (i = 0; i < 4; ++i)
out[j * 4 + i] = state[i][j];
/* cleanup */
cleanup(expanded); cleanup(state); cleanup(newstate);
}
int aes_expandkey256(unsigned char *o, const unsigned char *k) {
unsigned char expanded[4][60], temp[16], roundconstant = 1;
long long i, j;
for (j = 0; j < 8; ++j)
for (i = 0; i < 4; ++i)
expanded[i][j] = k[j * 4 + i];
for (j = 8; j < 60; ++j) {
if (j % 4)
for (i = 0; i < 4; ++i) temp[i] = expanded[i][j - 1];
else if (j % 8) {
for (i = 0; i < 4; ++i) temp[i] = expanded[i][j - 1];
bytesub(temp, temp);
}
else {
for (i = 0; i < 4; ++i) temp[i] = expanded[(i + 1) % 4][j - 1];
bytesub(temp, temp);
temp[0] ^= roundconstant;
roundconstant = gmul2(roundconstant);
}
for (i = 0; i < 4; ++i) expanded[i][j] = temp[i] ^ expanded[i][j - 8];
}
for (j = 0; j < 60; ++j)
for (i = 0; i < 4; ++i)
o[j * 4 + i] = expanded[i][j];
cleanup(temp); cleanup(expanded);
return 0;
}
int aes_expandkey128(unsigned char *o, const unsigned char *k) {
unsigned char expanded[4][44], temp[16], roundconstant = 1;
long long i, j;
for (j = 0; j < 4; ++j)
for (i = 0; i < 4; ++i)
expanded[i][j] = k[j * 4 + i];
for (j = 4; j < 44; ++j) {
if (j % 4)
for (i = 0; i < 4; ++i) temp[i] = expanded[i][j - 1];
else {
for (i = 0; i < 4; ++i) temp[i] = expanded[(i + 1) % 4][j - 1];
bytesub(temp, temp);
temp[0] ^= roundconstant;
roundconstant = gmul2(roundconstant);
}
for (i = 0; i < 4; ++i) expanded[i][j] = temp[i] ^ expanded[i][j - 4];
}
for (j = 0; j < 44; ++j)
for (i = 0; i < 4; ++i)
o[j * 4 + i] = expanded[i][j];
cleanup(temp); cleanup(expanded);
return 0;
}
tinyssh-20180201/crypto/aes.h 0000664 0000000 0000000 00000000653 13227043065 0015721 0 ustar 00root root 0000000 0000000 #ifndef _AES_H_____
#define _AES_H_____
extern int aes_expandkey256(unsigned char *, const unsigned char *);
extern int aes_expandkey128(unsigned char *, const unsigned char *);
extern void aes_core(unsigned char *, const unsigned char *, const unsigned char *, long long);
extern int aes_stream_xor(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *, const unsigned char *, long long);
#endif
tinyssh-20180201/crypto/aessbox.h 0000664 0000000 0000000 00000011012 13227043065 0016604 0 ustar 00root root 0000000 0000000 /* Author: Peter Schwabe, ported from an assembly implementation by Emilia Käsper
Date: 2009-03-19
Public domain
Modifications by J. Mojzis (20140630):
renamed common.h -> aessbox.h
removed unnecessary macros
*/
#ifndef _AESSBOX_H_____
#define _AESSBOX_H_____
#define aessbox(b0, b1, b2, b3, b4, b5, b6, b7, t0, t1, t2, t3, s0, s1, s2, s3) \
InBasisChange(b0, b1, b2, b3, b4, b5, b6, b7); \
Inv_GF256(b6, b5, b0, b3, b7, b1, b4, b2, t0, t1, t2, t3, s0, s1, s2, s3); \
OutBasisChange(b7, b1, b4, b2, b6, b5, b0, b3); \
#define InBasisChange(b0, b1, b2, b3, b4, b5, b6, b7) \
xor2(&b5, &b6);\
xor2(&b2, &b1);\
xor2(&b5, &b0);\
xor2(&b6, &b2);\
xor2(&b3, &b0);\
;\
xor2(&b6, &b3);\
xor2(&b3, &b7);\
xor2(&b3, &b4);\
xor2(&b7, &b5);\
xor2(&b3, &b1);\
;\
xor2(&b4, &b5);\
xor2(&b2, &b7);\
xor2(&b1, &b5);\
#define OutBasisChange(b0, b1, b2, b3, b4, b5, b6, b7) \
xor2(&b0, &b6);\
xor2(&b1, &b4);\
xor2(&b2, &b0);\
xor2(&b4, &b6);\
xor2(&b6, &b1);\
;\
xor2(&b1, &b5);\
xor2(&b5, &b3);\
xor2(&b2, &b5);\
xor2(&b3, &b7);\
xor2(&b7, &b5);\
;\
xor2(&b4, &b7);\
#define Mul_GF4(x0, x1, y0, y1, t0) \
copy2(&t0, &y0);\
xor2(&t0, &y1);\
and2(&t0, &x0);\
xor2(&x0, &x1);\
and2(&x0, &y1);\
and2(&x1, &y0);\
xor2(&x0, &x1);\
xor2(&x1, &t0);\
#define Mul_GF4_N(x0, x1, y0, y1, t0) \
copy2(&t0, &y0);\
xor2(&t0, &y1);\
and2(&t0, &x0);\
xor2(&x0, &x1);\
and2(&x0, &y1);\
and2(&x1, &y0);\
xor2(&x1, &x0);\
xor2(&x0, &t0);\
#define Mul_GF4_2(x0, x1, x2, x3, y0, y1, t0, t1) \
copy2(&t0, = y0);\
xor2(&t0, &y1);\
copy2(&t1, &t0);\
and2(&t0, &x0);\
and2(&t1, &x2);\
xor2(&x0, &x1);\
xor2(&x2, &x3);\
and2(&x0, &y1);\
and2(&x2, &y1);\
and2(&x1, &y0);\
and2(&x3, &y0);\
xor2(&x0, &x1);\
xor2(&x2, &x3);\
xor2(&x1, &t0);\
xor2(&x3, &t1);\
#define Mul_GF16(x0, x1, x2, x3, y0, y1, y2, y3, t0, t1, t2, t3) \
copy2(&t0, &x0);\
copy2(&t1, &x1);\
Mul_GF4(x0, x1, y0, y1, t2);\
xor2(&t0, &x2);\
xor2(&t1, &x3);\
xor2(&y0, &y2);\
xor2(&y1, &y3);\
Mul_GF4_N(t0, t1, y0, y1, t2);\
Mul_GF4(x2, x3, y2, y3, t3);\
;\
xor2(&x0, &t0);\
xor2(&x2, &t0);\
xor2(&x1, &t1);\
xor2(&x3, &t1);\
#define Mul_GF16_2(x0, x1, x2, x3, x4, x5, x6, x7, y0, y1, y2, y3, t0, t1, t2, t3) \
copy2(&t0, &x0);\
copy2(&t1, &x1);\
Mul_GF4(x0, x1, y0, y1, t2);\
xor2(&t0, &x2);\
xor2(&t1, &x3);\
xor2(&y0, &y2);\
xor2(&y1, &y3);\
Mul_GF4_N(t0, t1, y0, y1, t3);\
Mul_GF4(x2, x3, y2, y3, t2);\
;\
xor2(&x0, &t0);\
xor2(&x2, &t0);\
xor2(&x1, &t1);\
xor2(&x3, &t1);\
;\
copy2(&t0, &x4);\
copy2(&t1, &x5);\
xor2(&t0, &x6);\
xor2(&t1, &x7);\
Mul_GF4_N(t0, t1, y0, y1, t3);\
Mul_GF4(x6, x7, y2, y3, t2);\
xor2(&y0, &y2);\
xor2(&y1, &y3);\
Mul_GF4(x4, x5, y0, y1, t3);\
;\
xor2(&x4, &t0);\
xor2(&x6, &t0);\
xor2(&x5, &t1);\
xor2(&x7, &t1);\
#define Inv_GF16(x0, x1, x2, x3, t0, t1, t2, t3) \
copy2(&t0, &x1);\
copy2(&t1, &x0);\
and2(&t0, &x3);\
or2(&t1, &x2);\
copy2(&t2, &x1);\
copy2(&t3, &x0);\
or2(&t2, &x2);\
or2(&t3, &x3);\
xor2(&t2, &t3);\
;\
xor2(&t0, &t2);\
xor2(&t1, &t2);\
;\
Mul_GF4_2(x0, x1, x2, x3, t1, t0, t2, t3);\
#define Inv_GF256(x0, x1, x2, x3, x4, x5, x6, x7, t0, t1, t2, t3, s0, s1, s2, s3) \
copy2(&t3, &x4);\
copy2(&t2, &x5);\
copy2(&t1, &x1);\
copy2(&s1, &x7);\
copy2(&s0, &x0);\
;\
xor2(&t3, &x6);\
xor2(&t2, &x7);\
xor2(&t1, &x3);\
xor2(&s1, &x6);\
xor2(&s0, &x2);\
;\
copy2(&s2, &t3);\
copy2(&t0, &t2);\
copy2(&s3, &t3);\
;\
or2(&t2, &t1);\
or2(&t3, &s0);\
xor2(&s3, &t0);\
and2(&s2, &s0);\
and2(&t0, &t1);\
xor2(&s0, &t1);\
and2(&s3, &s0);\
copy2(&s0, &x3);\
xor2(&s0, &x2);\
and2(&s1, &s0);\
xor2(&t3, &s1);\
xor2(&t2, &s1);\
copy2(&s1, &x4);\
xor2(&s1, &x5);\
copy2(&s0, &x1);\
copy2(&t1, &s1);\
xor2(&s0, &x0);\
or2(&t1, &s0);\
and2(&s1, &s0);\
xor2(&t0, &s1);\
xor2(&t3, &s3);\
xor2(&t2, &s2);\
xor2(&t1, &s3);\
xor2(&t0, &s2);\
xor2(&t1, &s2);\
copy2(&s0, &x7);\
copy2(&s1, &x6);\
copy2(&s2, &x5);\
copy2(&s3, &x4);\
and2(&s0, &x3);\
and2(&s1, &x2);\
and2(&s2, &x1);\
or2(&s3, &x0);\
xor2(&t3, &s0);\
xor2(&t2, &s1);\
xor2(&t1, &s2);\
xor2(&t0, &s3);\
;\
copy2(&s0, &t3);\
xor2(&s0, &t2);\
and2(&t3, &t1);\
copy2(&s2, &t0);\
xor2(&s2, &t3);\
copy2(&s3, &s0);\
and2(&s3, &s2);\
xor2(&s3, &t2);\
copy2(&s1, &t1);\
xor2(&s1, &t0);\
xor2(&t3, &t2);\
and2(&s1, &t3);\
xor2(&s1, &t0);\
xor2(&t1, &s1);\
copy2(&t2, &s2);\
xor2(&t2, &s1);\
and2(&t2, &t0);\
xor2(&t1, &t2);\
xor2(&s2, &t2);\
and2(&s2, &s3);\
xor2(&s2, &s0);\
;\
Mul_GF16_2(x0, x1, x2, x3, x4, x5, x6, x7, s3, s2, s1, t1, s0, t0, t2, t3);\
#endif
tinyssh-20180201/crypto/cleanup.c 0000664 0000000 0000000 00000000424 13227043065 0016567 0 ustar 00root root 0000000 0000000 #include "cleanup.h"
#include "hasasmvolatilememory.h"
void cleanup_(void *yv, long long ylen) {
volatile char *y = (volatile char *)yv;
while (ylen > 0) { *y++ = 0; --ylen; }
#ifdef HASASMVOLATILEMEMORY
__asm__ __volatile__("" : : "r"(yv) : "memory");
#endif
}
tinyssh-20180201/crypto/cleanup.h 0000664 0000000 0000000 00000000214 13227043065 0016571 0 ustar 00root root 0000000 0000000 #ifndef _CLEANUP_H____
#define _CLEANUP_H____
extern void cleanup_(void *, long long);
#define cleanup(x) cleanup_((x), sizeof(x))
#endif
tinyssh-20180201/crypto/crypto_auth_hmacsha256.c 0000664 0000000 0000000 00000000773 13227043065 0021431 0 ustar 00root root 0000000 0000000 #include "sha256.h"
#include "crypto_verify_32.h"
#include "crypto_auth_hmacsha256.h"
int crypto_auth_hmacsha256_tinynacl(unsigned char *out, const unsigned char *m, unsigned long long n, const unsigned char *k) {
return sha256_auth(out, m, n, k);
}
int crypto_auth_hmacsha256_tinynacl_verify(const unsigned char *h, const unsigned char *m, unsigned long long n, const unsigned char *k) {
unsigned char x[32];
crypto_auth_hmacsha256_tinynacl(x, m, n, k);
return crypto_verify_32(h, x);
}
tinyssh-20180201/crypto/crypto_auth_hmacsha256.h 0000664 0000000 0000000 00000001510 13227043065 0021424 0 ustar 00root root 0000000 0000000 #ifndef crypto_auth_hmacsha256_H
#define crypto_auth_hmacsha256_H
#define crypto_auth_hmacsha256_tinynacl_BYTES 32
#define crypto_auth_hmacsha256_tinynacl_KEYBYTES 32
extern int crypto_auth_hmacsha256_tinynacl(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *);
extern int crypto_auth_hmacsha256_tinynacl_verify(const unsigned char *, const unsigned char *, unsigned long long, const unsigned char *);
#define crypto_auth_hmacsha256 crypto_auth_hmacsha256_tinynacl
#define crypto_auth_hmacsha256_verify crypto_auth_hmacsha256_tinynacl_verify
#define crypto_auth_hmacsha256_BYTES crypto_auth_hmacsha256_tinynacl_BYTES
#define crypto_auth_hmacsha256_KEYBYTES crypto_auth_hmacsha256_tinynacl_KEYBYTES
#define crypto_auth_hmacsha256_IMPLEMENTATION "tinynacl"
#define crypto_auth_hmacsha256_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_core_aes256encrypt.c 0000664 0000000 0000000 00000000540 13227043065 0022161 0 ustar 00root root 0000000 0000000 #include "aes.h"
#include "cleanup.h"
#include "crypto_core_aes256encrypt.h"
int crypto_core_aes256encrypt_tinynacl(unsigned char *out, const unsigned char *in, const unsigned char *k, const unsigned char *c) {
unsigned char d[240];
aes_expandkey256(d, k);
aes_core(out, in, d, 14);
cleanup(d);
if (c) return -1;
return 0;
}
tinyssh-20180201/crypto/crypto_core_aes256encrypt.h 0000664 0000000 0000000 00000001717 13227043065 0022175 0 ustar 00root root 0000000 0000000 #ifndef crypto_core_aes256encrypt_H
#define crypto_core_aes256encrypt_H
#define crypto_core_aes256encrypt_tinynacl_OUTPUTBYTES 16
#define crypto_core_aes256encrypt_tinynacl_INPUTBYTES 16
#define crypto_core_aes256encrypt_tinynacl_KEYBYTES 32
#define crypto_core_aes256encrypt_tinynacl_CONSTBYTES 0
extern int crypto_core_aes256encrypt_tinynacl(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
#define crypto_core_aes256encrypt crypto_core_aes256encrypt_tinynacl
#define crypto_core_aes256encrypt_OUTPUTBYTES crypto_core_aes256encrypt_tinynacl_OUTPUTBYTES
#define crypto_core_aes256encrypt_INPUTBYTES crypto_core_aes256encrypt_tinynacl_INPUTBYTES
#define crypto_core_aes256encrypt_KEYBYTES crypto_core_aes256encrypt_tinynacl_KEYBYTES
#define crypto_core_aes256encrypt_CONSTBYTES crypto_core_aes256encrypt_tinynacl_CONSTBYTES
#define crypto_core_aes256encrypt_IMPLEMENTATION "tinynacl"
#define crypto_core_aes256encrypt_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_hash_sha256.c 0000664 0000000 0000000 00000000276 13227043065 0020560 0 ustar 00root root 0000000 0000000 #include "sha256.h"
#include "crypto_hash_sha256.h"
int crypto_hash_sha256_tinynacl(unsigned char *out, const unsigned char *m, unsigned long long n) {
return sha256_hash(out, m, n);
}
tinyssh-20180201/crypto/crypto_hash_sha256.h 0000664 0000000 0000000 00000000651 13227043065 0020562 0 ustar 00root root 0000000 0000000 #ifndef crypto_hash_sha256_H
#define crypto_hash_sha256_H
#define crypto_hash_sha256_tinynacl_BYTES 32
extern int crypto_hash_sha256_tinynacl(unsigned char *,const unsigned char *,unsigned long long);
#define crypto_hash_sha256 crypto_hash_sha256_tinynacl
#define crypto_hash_sha256_BYTES crypto_hash_sha256_tinynacl_BYTES
#define crypto_hash_sha256_IMPLEMENTATION "tinynacl"
#define crypto_hash_sha256_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_hash_sha512.c 0000664 0000000 0000000 00000011442 13227043065 0020550 0 ustar 00root root 0000000 0000000 /*
20180104
*/
/*
- based on tweetnacl 20140427 (http://tweetnacl.cr.yp.to/software.html)
- slightly modified
*/
#include "crypto_hash_sha512.h"
static void store64_bigendian(unsigned char *y, unsigned long long x) {
long long i;
for (i = 7; i >= 0; --i) { y[i] = x; x >>= 8; }
}
static unsigned long long load64_bigendian(const unsigned char *x) {
unsigned long long y = 0;
long long i;
for (i = 0; i < 8; ++i) y = (y << 8) | x[i];
return y;
}
static unsigned long long R(unsigned long long x,int c) { return (x >> c) | ((x & 0xffffffffffffffffULL) << (64 - c)); }
static unsigned long long Ch(unsigned long long x, unsigned long long y, unsigned long long z) { return (x & y) ^ (~x & z); }
static unsigned long long Maj(unsigned long long x, unsigned long long y, unsigned long long z) { return (x & y) ^ (x & z) ^ (y & z); }
static unsigned long long Sigma0(unsigned long long x) { return R(x, 28) ^ R(x, 34) ^ R(x, 39); }
static unsigned long long Sigma1(unsigned long long x) { return R(x, 14) ^ R(x, 18) ^ R(x, 41); }
static unsigned long long sigma0(unsigned long long x) { return R(x, 1) ^ R(x, 8) ^ (x >> 7); }
static unsigned long long sigma1(unsigned long long x) { return R(x, 19) ^ R(x, 61) ^ (x >> 6); }
static const unsigned long long K[80] = {
0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
};
static void blocks(unsigned long long *z, const unsigned char *m, unsigned long long n) {
unsigned long long b[8], a[8], w[80], t;
long long i, j;
for (i = 0; i < 8; ++i) a[i] = z[i];
while (n >= 128) {
for (i = 0; i < 16; ++i) w[i] = load64_bigendian(m + 8 * i);
for (i = 16; i < 80; ++i) w[i] = (sigma1(w[i - 2]) + w[i - 7] + sigma0(w[i - 15]) + w[i - 16]) & 0xffffffffffffffffULL;
for (i = 0; i < 80; ++i) {
for (j = 0; j < 8; ++j) b[j] = a[j];
t = a[7] + Sigma1(a[4]) + Ch(a[4], a[5], a[6]) + K[i] + w[i];
b[7] = t + Sigma0(a[0]) + Maj(a[0], a[1], a[2]);
b[3] += t;
for (j = 0; j < 8; ++j) a[(j + 1) % 8] = b[j] & 0xffffffffffffffffULL;
}
for (i = 0; i < 8; ++i) { a[i] += z[i]; a[i] &= 0xffffffffffffffffULL; z[i] = a[i]; }
m += 128;
n -= 128;
}
}
int crypto_hash_sha512_tinynacl(unsigned char *o,const unsigned char *m, unsigned long long n) {
long long i;
unsigned char x[256];
unsigned long long b = n;
unsigned long long h[8] = {
0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL,
0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL
};
blocks(h, m, n);
m += n;
n &= 127;
m -= n;
for (i = 0; i < sizeof x; ++i) x[i] = 0;
for (i = 0; i < n; ++i) x[i] = m[i];
x[n] = 128;
n = 256 - 128 * (n < 112);
x[n - 9] = b >> 61;
store64_bigendian(x + n - 8, b << 3);
blocks(h, x, n);
for (i = 0; i < 8; ++i) store64_bigendian(o + 8 * i, h[i]);
return 0;
}
tinyssh-20180201/crypto/crypto_hash_sha512.h 0000664 0000000 0000000 00000000653 13227043065 0020557 0 ustar 00root root 0000000 0000000 #ifndef crypto_hash_sha512_H
#define crypto_hash_sha512_H
#define crypto_hash_sha512_tinynacl_BYTES 64
extern int crypto_hash_sha512_tinynacl(unsigned char *, const unsigned char *, unsigned long long);
#define crypto_hash_sha512 crypto_hash_sha512_tinynacl
#define crypto_hash_sha512_BYTES crypto_hash_sha512_tinynacl_BYTES
#define crypto_hash_sha512_IMPLEMENTATION "tinynacl"
#define crypto_hash_sha512_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_int64.h 0000664 0000000 0000000 00000000152 13227043065 0017507 0 ustar 00root root 0000000 0000000 #ifndef crypto_int64_h
#define crypto_int64_h
#include
typedef int64_t crypto_int64;
#endif
tinyssh-20180201/crypto/crypto_onetimeauth_poly1305.c 0000664 0000000 0000000 00000012741 13227043065 0022443 0 ustar 00root root 0000000 0000000 /*
20180104
*/
/*
Based on poly1305-donna (https://github.com/floodyberry/poly1305-opt/blob/master/extensions/poly1305_ref-32.c)
- modified for NaCl API
*/
#include "crypto_onetimeauth_poly1305.h"
static unsigned long unpack(const unsigned char *x) {
return
(unsigned long) (x[0]) \
| (((unsigned long) (x[1])) << 8) \
| (((unsigned long) (x[2])) << 16) \
| (((unsigned long) (x[3])) << 24);
}
static void pack(unsigned char *x, unsigned long u) {
x[0] = u; u >>= 8;
x[1] = u; u >>= 8;
x[2] = u; u >>= 8;
x[3] = u;
}
int crypto_onetimeauth_poly1305_tinynacl(unsigned char *o, const unsigned char *m, unsigned long long n, const unsigned char *k) {
unsigned long h0, h1, h2, h3, h4;
unsigned long r0, r1, r2, r3, r4;
unsigned long s1, s2, s3, s4;
unsigned long long d0, d1, d2, d3, d4;
unsigned long c, mask;
unsigned long long f;
long long i;
/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */
r0 = (unpack(k + 0) ) & 0x3ffffff;
r1 = (unpack(k + 3) >> 2) & 0x3ffff03;
r2 = (unpack(k + 6) >> 4) & 0x3ffc0ff;
r3 = (unpack(k + 9) >> 6) & 0x3f03fff;
r4 = (unpack(k + 12) >> 8) & 0x00fffff;
s1 = r1 * 5;
s2 = r2 * 5;
s3 = r3 * 5;
s4 = r4 * 5;
/* h = 0 */
h0 = h1 = h2 = h3 = h4 = 0;
while ((long long)n > 0) {
/* h += m[i] */
if (n >= 16) {
h0 += (unpack(m ) ) & 0x3ffffff;
h1 += (unpack(m + 3) >> 2) & 0x3ffffff;
h2 += (unpack(m + 6) >> 4) & 0x3ffffff;
h3 += (unpack(m + 9) >> 6) & 0x3ffffff;
h4 += (unpack(m + 12) >> 8) | 16777216;
}
else {
unsigned char mm[16];
for (i = 0; i < 16; ++i) mm[i] = 0;
for (i = 0; i < n; ++i) mm[i] = m[i];
mm[i] = 1;
h0 += (unpack(mm ) ) & 0x3ffffff;
h1 += (unpack(mm + 3) >> 2) & 0x3ffffff;
h2 += (unpack(mm + 6) >> 4) & 0x3ffffff;
h3 += (unpack(mm + 9) >> 6) & 0x3ffffff;
h4 += (unpack(mm + 12) >> 8);
}
/* h *= r */
d0 = ((unsigned long long)h0 * r0) + ((unsigned long long)h1 * s4) + ((unsigned long long)h2 * s3) + ((unsigned long long)h3 * s2) + ((unsigned long long)h4 * s1);
d1 = ((unsigned long long)h0 * r1) + ((unsigned long long)h1 * r0) + ((unsigned long long)h2 * s4) + ((unsigned long long)h3 * s3) + ((unsigned long long)h4 * s2);
d2 = ((unsigned long long)h0 * r2) + ((unsigned long long)h1 * r1) + ((unsigned long long)h2 * r0) + ((unsigned long long)h3 * s4) + ((unsigned long long)h4 * s3);
d3 = ((unsigned long long)h0 * r3) + ((unsigned long long)h1 * r2) + ((unsigned long long)h2 * r1) + ((unsigned long long)h3 * r0) + ((unsigned long long)h4 * s4);
d4 = ((unsigned long long)h0 * r4) + ((unsigned long long)h1 * r3) + ((unsigned long long)h2 * r2) + ((unsigned long long)h3 * r1) + ((unsigned long long)h4 * r0);
/* (partial) h %= p */
c = (unsigned long)(d0 >> 26); h0 = (unsigned long)d0 & 0x3ffffff;
d1 += c; c = (unsigned long)(d1 >> 26); h1 = (unsigned long)d1 & 0x3ffffff;
d2 += c; c = (unsigned long)(d2 >> 26); h2 = (unsigned long)d2 & 0x3ffffff;
d3 += c; c = (unsigned long)(d3 >> 26); h3 = (unsigned long)d3 & 0x3ffffff;
d4 += c; c = (unsigned long)(d4 >> 26); h4 = (unsigned long)d4 & 0x3ffffff;
h0 += c * 5; c = (h0 >> 26); h0 = h0 & 0x3ffffff;
h1 += c;
m += 16;
n -= 16;
}
/* fully carry h */
c = h1 >> 26; h1 = h1 & 0x3ffffff;
h2 += c; c = h2 >> 26; h2 = h2 & 0x3ffffff;
h3 += c; c = h3 >> 26; h3 = h3 & 0x3ffffff;
h4 += c; c = h4 >> 26; h4 = h4 & 0x3ffffff;
h0 += c * 5; c = h0 >> 26; h0 = h0 & 0x3ffffff;
h1 += c;
/* compute h + -p */
r0 = h0 + 5; c = r0 >> 26; r0 &= 0x3ffffff;
r1 = h1 + c; c = r1 >> 26; r1 &= 0x3ffffff;
r2 = h2 + c; c = r2 >> 26; r2 &= 0x3ffffff;
r3 = h3 + c; c = r3 >> 26; r3 &= 0x3ffffff;
r4 = h4 + c - (1 << 26);
/* select h if h < p, or h + -p if h >= p */
mask = (r4 >> ((sizeof(unsigned long) * 8) - 1)) - 1;
r0 &= mask;
r1 &= mask;
r2 &= mask;
r3 &= mask;
r4 &= mask;
mask = ~mask;
h0 = (h0 & mask) | r0;
h1 = (h1 & mask) | r1;
h2 = (h2 & mask) | r2;
h3 = (h3 & mask) | r3;
h4 = (h4 & mask) | r4;
/* h = h % (2^128) */
h0 = ((h0 ) | (h1 << 26)) & 0xffffffff;
h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff;
h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff;
h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff;
/* mac = (h + pad) % (2^128) */
f = (unsigned long long)h0 + unpack(k + 16) ; h0 = (unsigned long)f;
f = (unsigned long long)h1 + unpack(k + 20) + (f >> 32); h1 = (unsigned long)f;
f = (unsigned long long)h2 + unpack(k + 24) + (f >> 32); h2 = (unsigned long)f;
f = (unsigned long long)h3 + unpack(k + 28) + (f >> 32); h3 = (unsigned long)f;
pack(o + 0, h0);
pack(o + 4, h1);
pack(o + 8, h2);
pack(o + 12, h3);
return 0;
}
int crypto_onetimeauth_poly1305_tinynacl_verify(const unsigned char *h, const unsigned char *in, unsigned long long l, const unsigned char *k) {
unsigned char correct[16];
unsigned int d = 0;
long long i;
crypto_onetimeauth_poly1305(correct, in, l, k);
for (i = 0; i < 16; ++i) d |= correct[i] ^ h[i];
return (1 & ((d - 1) >> 8)) - 1;
}
tinyssh-20180201/crypto/crypto_onetimeauth_poly1305.h 0000664 0000000 0000000 00000001622 13227043065 0022444 0 ustar 00root root 0000000 0000000 #ifndef crypto_onetimeauth_poly1305_H
#define crypto_onetimeauth_poly1305_H
#define crypto_onetimeauth_poly1305_tinynacl_BYTES 16
#define crypto_onetimeauth_poly1305_tinynacl_KEYBYTES 32
extern int crypto_onetimeauth_poly1305_tinynacl(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
extern int crypto_onetimeauth_poly1305_tinynacl_verify(const unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
#define crypto_onetimeauth_poly1305 crypto_onetimeauth_poly1305_tinynacl
#define crypto_onetimeauth_poly1305_verify crypto_onetimeauth_poly1305_tinynacl_verify
#define crypto_onetimeauth_poly1305_BYTES crypto_onetimeauth_poly1305_tinynacl_BYTES
#define crypto_onetimeauth_poly1305_KEYBYTES crypto_onetimeauth_poly1305_tinynacl_KEYBYTES
#define crypto_onetimeauth_poly1305_IMPLEMENTATION "tinynacl"
#define crypto_onetimeauth_poly1305_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_scalarmult_curve25519.c 0000664 0000000 0000000 00000003561 13227043065 0022526 0 ustar 00root root 0000000 0000000 #include "cleanup.h"
#include "fe25519.h"
#include "crypto_scalarmult_curve25519.h"
int crypto_scalarmult_curve25519_tinynacl(unsigned char *q, const unsigned char *n, const unsigned char *p) {
unsigned char e[32];
fe x1, x2, z2, x3, z3, tmp0, tmp1;
long long i;
unsigned int d = 0;
int pos;
crypto_uint32 swap, b;
for (i = 0; i < 32; ++i) e[i] = n[i];
e[0] &= 248;
e[31] &= 127;
e[31] |= 64;
fe25519_frombytes(x1, p);
fe_1(x2);
fe_0(z2);
fe_copy(x3, x1);
fe_1(z3);
swap = 0;
for (pos = 254; pos >= 0; --pos) {
b = e[pos / 8] >> (pos & 7);
b &= 1;
swap ^= b;
fe_cswap(x2, x3, swap);
fe_cswap(z2, z3, swap);
swap = b;
fe25519_sub(tmp0, x3, z3);
fe25519_sub(tmp1, x2, z2);
fe25519_add(x2, x2, z2);
fe25519_add(z2, x3, z3);
fe25519_mul(z3, tmp0, x2);
fe25519_mul(z2, z2, tmp1);
fe25519_sq(tmp0, tmp1);
fe25519_sq(tmp1, x2);
fe25519_add(x3, z3, z2);
fe25519_sub(z2, z3, z2);
fe25519_mul(x2, tmp1, tmp0);
fe25519_sub(tmp1, tmp1, tmp0);
fe25519_sq(z2, z2);
fe25519_mul121666(z3, tmp1);
fe25519_sq(x3, x3);
fe25519_add(tmp0, tmp0, z3);
fe25519_mul(z3, x1, z2);
fe25519_mul(z2, tmp1, tmp0);
}
fe_cswap(x2, x3, swap);
fe_cswap(z2, z3, swap);
fe25519_inv(z2, z2);
fe25519_mul(x2, x2, z2);
fe25519_tobytes(q, x2);
cleanup(e);
cleanup(tmp0); cleanup(tmp1);
cleanup(x1); cleanup(x2); cleanup(x3);
cleanup(z2); cleanup(z3);
for (i = 0; i < 32; ++i) d |= q[i];
return -(1 & ((d - 1) >> 8));
}
static const unsigned char basepoint[32] = {9};
int crypto_scalarmult_curve25519_tinynacl_base(unsigned char *q, const unsigned char *n) {
return crypto_scalarmult_curve25519_tinynacl(q, n, basepoint);
}
tinyssh-20180201/crypto/crypto_scalarmult_curve25519.h 0000664 0000000 0000000 00000001543 13227043065 0022531 0 ustar 00root root 0000000 0000000 #ifndef crypto_scalarmult_curve25519_H
#define crypto_scalarmult_curve25519_H
#define crypto_scalarmult_curve25519_tinynacl_BYTES 32
#define crypto_scalarmult_curve25519_tinynacl_SCALARBYTES 32
extern int crypto_scalarmult_curve25519_tinynacl(unsigned char *,const unsigned char *,const unsigned char *);
extern int crypto_scalarmult_curve25519_tinynacl_base(unsigned char *,const unsigned char *);
#define crypto_scalarmult_curve25519 crypto_scalarmult_curve25519_tinynacl
#define crypto_scalarmult_curve25519_base crypto_scalarmult_curve25519_tinynacl_base
#define crypto_scalarmult_curve25519_BYTES crypto_scalarmult_curve25519_tinynacl_BYTES
#define crypto_scalarmult_curve25519_SCALARBYTES crypto_scalarmult_curve25519_tinynacl_SCALARBYTES
#define crypto_scalarmult_curve25519_IMPLEMENTATION "tinynacl"
#define crypto_scalarmult_curve25519_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_scalarmult_nistp256.c 0000664 0000000 0000000 00000001416 13227043065 0022363 0 ustar 00root root 0000000 0000000 /*
20140917
Jan Mojzis
Public domain.
*/
#include "cleanup.h"
#include "gep256.h"
#include "crypto_scalarmult_nistp256.h"
int crypto_scalarmult_nistp256_tinynacl(unsigned char *q, const unsigned char *n, const unsigned char *p) {
gep256 P, Q;
long long i;
int ret = -1;
if (gep256_frombytes(P, p) != 0) goto fail;
gep256_scalarmult(Q, P, n);
if (gep256_tobytes(q, Q) != 0) goto fail;
ret = 0;
goto cleanup;
fail:
for (i = 0; i < 64; ++i) q[i] = 0;
cleanup:
cleanup(P); cleanup(Q);
return ret;
}
int crypto_scalarmult_nistp256_tinynacl_base(unsigned char *q, const unsigned char *n) {
gep256 Q;
int ret = -1;
gep256_scalarmult_base(Q, n);
if (gep256_tobytes(q, Q) == 0) ret = 0;
cleanup(Q);
return ret;
}
tinyssh-20180201/crypto/crypto_scalarmult_nistp256.h 0000664 0000000 0000000 00000001503 13227043065 0022365 0 ustar 00root root 0000000 0000000 #ifndef crypto_scalarmult_nistp256_H
#define crypto_scalarmult_nistp256_H
#define crypto_scalarmult_nistp256_tinynacl_BYTES 64
#define crypto_scalarmult_nistp256_tinynacl_SCALARBYTES 32
extern int crypto_scalarmult_nistp256_tinynacl(unsigned char *,const unsigned char *,const unsigned char *);
extern int crypto_scalarmult_nistp256_tinynacl_base(unsigned char *,const unsigned char *);
#define crypto_scalarmult_nistp256 crypto_scalarmult_nistp256_tinynacl
#define crypto_scalarmult_nistp256_base crypto_scalarmult_nistp256_tinynacl_base
#define crypto_scalarmult_nistp256_BYTES crypto_scalarmult_nistp256_tinynacl_BYTES
#define crypto_scalarmult_nistp256_SCALARBYTES crypto_scalarmult_nistp256_tinynacl_SCALARBYTES
#define crypto_scalarmult_nistp256_IMPLEMENTATION "tinynacl"
#define crypto_scalarmult_nistp256_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_sign_ed25519.c 0000664 0000000 0000000 00000006322 13227043065 0020561 0 ustar 00root root 0000000 0000000 #include "randombytes.h"
#include "cleanup.h"
#include "crypto_hash_sha512.h"
#include "crypto_verify_32.h"
#include "ge25519.h"
#include "sc25519.h"
#include "crypto_sign_ed25519.h"
int crypto_sign_ed25519_tinynacl(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long n, const unsigned char *skorig) {
long long i;
unsigned char nonce[64], hram[64], sk[64], pk[32];
ge25519 R;
/* compute secret key from seed sk = H(skorig), H = sha512 */
crypto_hash_sha512(sk, skorig, 32);
sk[0] &= 248;
sk[31] &= 63;
sk[31] |= 64;
/* copy m to sm, copy secret key and public key */
*smlen = n + 64;
for (i = 31; i >= 0; --i) pk[i ] = skorig[i + 32];
for (i = n - 1; i >= 0; --i) sm[i + 64] = m[i];
for (i = 31; i >= 0; --i) sm[i + 32] = sk[i + 32];
/* get pseudorandom nonce = H(sk2, m) */
crypto_hash_sha512(nonce, sm + 32, n + 32);
sc25519_reduce(nonce);
/* copy pk to sm */
for (i = 31; i >= 0; --i) sm[i + 32] = pk[i];
/* compute R */
ge25519_scalarmult_base(R, nonce);
ge25519_tobytes(sm, R);
/* calculate hram = H(r, a, m) */
crypto_hash_sha512(hram, sm, n + 64);
sc25519_reduce(hram);
/* compute S */
sc25519_muladd(sm + 32, hram, sk, nonce);
/* cleanup */
cleanup(nonce); cleanup(hram); cleanup(sk); cleanup(pk); cleanup(R);
return 0;
}
int crypto_sign_ed25519_tinynacl_open(unsigned char *m, unsigned long long *mlen, const unsigned char *sm, unsigned long long n, const unsigned char *pk) {
long long i;
unsigned char pkcopy[32], rcopy[32], scopy[32], hram[64], rcheck[32];
ge25519 R, S, A;
int ret = -1;
/* check input */
if (n < 64) goto fail;
if (sm[63] & 224) goto fail;
/* unpack pk */
if (ge25519_frombytes_negate_vartime(A, pk) != 0) goto fail;
/* copy pk, r, s */
for (i = 0; i < 32; ++i) pkcopy[i] = pk[i];
for (i = 0; i < 32; ++i) rcopy[i] = sm[i];
for (i = 0; i < 32; ++i) scopy[i] = sm[i + 32];
/* copy sm to m and copy pk to m */
for (i = n - 1; i >= 0; --i) m[i] = sm[i];
for (i = 0; i < 32; ++i) m[i + 32] = pkcopy[i];
/* calculate hram = H(r, a, m) */
crypto_hash_sha512(hram, m, n);
sc25519_reduce(hram);
/* compute R */
ge25519_scalarmult(A, A, hram);
ge25519_scalarmult_base(S, scopy);
ge25519_add(R, S, A);
/* check R */
ge25519_tobytes(rcheck, R);
if (crypto_verify_32(rcheck, rcopy) != 0) goto fail;
/* copy message */
n -= 64; *mlen = n;
for (i = 0; i < n; ++i) m[i] = m[i + 64];
for (i = 0; i < 64; ++i) m[i + n] = 0;
ret = 0;
goto cleanup;
fail:
for (i = 0; i < n; ++i) m[i] = 0;
cleanup:
cleanup(pkcopy); cleanup(rcopy); cleanup(scopy);
cleanup(hram); cleanup(rcheck);
cleanup(R); cleanup(S); cleanup(A);
return ret;
}
int crypto_sign_ed25519_tinynacl_keypair(unsigned char *pk, unsigned char *sk) {
unsigned char h[64];
ge25519 A;
long long i;
randombytes(sk, 32);
crypto_hash_sha512(h, sk, 32);
h[0] &= 248;
h[31] &= 63;
h[31] |= 64;
ge25519_scalarmult_base(A, h);
ge25519_tobytes(pk, A);
for (i = 31; i >= 0; --i) sk[i + 32] = pk[i];
cleanup(h); cleanup(A);
return 0;
}
tinyssh-20180201/crypto/crypto_sign_ed25519.h 0000664 0000000 0000000 00000002153 13227043065 0020564 0 ustar 00root root 0000000 0000000 #ifndef crypto_sign_ed25519_H
#define crypto_sign_ed25519_H
#define crypto_sign_ed25519_tinynacl_SECRETKEYBYTES 64
#define crypto_sign_ed25519_tinynacl_PUBLICKEYBYTES 32
#define crypto_sign_ed25519_tinynacl_BYTES 64
extern int crypto_sign_ed25519_tinynacl(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
extern int crypto_sign_ed25519_tinynacl_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
extern int crypto_sign_ed25519_tinynacl_keypair(unsigned char *,unsigned char *);
#define crypto_sign_ed25519 crypto_sign_ed25519_tinynacl
#define crypto_sign_ed25519_open crypto_sign_ed25519_tinynacl_open
#define crypto_sign_ed25519_keypair crypto_sign_ed25519_tinynacl_keypair
#define crypto_sign_ed25519_BYTES crypto_sign_ed25519_tinynacl_BYTES
#define crypto_sign_ed25519_PUBLICKEYBYTES crypto_sign_ed25519_tinynacl_PUBLICKEYBYTES
#define crypto_sign_ed25519_SECRETKEYBYTES crypto_sign_ed25519_tinynacl_SECRETKEYBYTES
#define crypto_sign_ed25519_IMPLEMENTATION "tinynacl"
#define crypto_sign_ed25519_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_sign_nistp256ecdsa.c 0000664 0000000 0000000 00000007535 13227043065 0022164 0 ustar 00root root 0000000 0000000 /*
20140917
Jan Mojzis
Public domain.
*/
#include "fep256.h"
#include "scp256.h"
#include "gep256.h"
#include "crypto_hash_sha512.h"
#include "crypto_hash_sha256.h"
#include "cleanup.h"
#include "randombytes.h"
#include "crypto_verify_32.h"
#include "crypto_sign_nistp256ecdsa.h"
int crypto_sign_nistp256ecdsa_tinynacl(unsigned char *sm, unsigned long long *smlen, const unsigned char *m, unsigned long long n, const unsigned char *skorig) {
long long i;
unsigned char nonce[64], hm[64], sk[32], zero[32];
gep256 R;
int ret = -1;
/* copy m to sm and copy secret key */
*smlen = n + 64;
for (i = n - 1; i >= 0; --i) sm[i + 64] = m[i];
for (i = 31; i >= 0; --i) sm[i + 32] = skorig[i + 32];
for (i = 31; i >= 0; --i) sk[i ] = skorig[i ];
for (i = 31; i >= 0; --i) zero[i] = 0;
/* get pseudorandom nonce = H(sk2, m) */
crypto_hash_sha512(nonce, sm + 32, n + 32);
scp256_reduce64(nonce);
if (crypto_verify_32(nonce, zero) == 0) goto fail;
/* compute R and check whether R != 0 */
gep256_scalarmult_base(R, nonce);
if (gep256_tobytes(sm, R) != 0) goto fail;
if (crypto_verify_32(sm, zero) == 0) goto fail;
/* calculate hm = H(m) */
crypto_hash_sha256(hm, sm + 64, n);
/* compute S and check whether S != 0 */
scp256_inv(nonce);
scp256_mul(sm + 32, sm , sk);
scp256_add(sm + 32, sm + 32, hm);
scp256_mul(sm + 32, sm + 32, nonce);
if (crypto_verify_32(sm + 32, zero) == 0) goto fail;
ret = 0;
goto cleanup;
fail:
for (i = 0; i < 64; ++i) sm[i] = 0;
cleanup:
cleanup(nonce); cleanup(hm); cleanup(sk); cleanup(R);
return ret;
}
int crypto_sign_nistp256ecdsa_tinynacl_open(unsigned char *m, unsigned long long *mlen, const unsigned char *sm, unsigned long long n, const unsigned char *pk) {
long long i;
unsigned char rcopy[32], scopy[32], tmp[64];
gep256 R, S, A;
int ret = -1;
/* check input */
if (n < 64) goto fail;
/* unpack pk */
if (gep256_frombytes(A, pk) != 0) goto fail;
/* copy pk, r, s */
for (i = 0; i < 32; ++i) tmp[i] = 0;
for (i = 0; i < 32; ++i) rcopy[i] = sm[i];
for (i = 0; i < 32; ++i) scopy[i] = sm[i + 32];
/* copy sm to m */
for (i = n - 1; i >= 0; --i) m[i] = sm[i];
/* check whether R != 0 and S != 0 */
scp256_reduce32(rcopy);
if (crypto_verify_32(rcopy, tmp) == 0) goto fail;
scp256_reduce32(scopy);
if (crypto_verify_32(scopy, tmp) == 0) goto fail;
/* calculate tmp = H(m) */
crypto_hash_sha256(tmp, m + 64, n - 64);
/* compute R */
scp256_inv(scopy);
scp256_mul(tmp, tmp, scopy);
gep256_scalarmult_base(S, tmp);
scp256_mul(tmp, rcopy, scopy);
gep256_scalarmult(A, A, tmp);
gep256_add(R, S, A);
/* check R */
if (gep256_tobytes(tmp, R) != 0) goto fail;
scp256_reduce32(tmp);
if (crypto_verify_32(tmp, rcopy) != 0) goto fail;
/* copy message */
n -= 64; *mlen = n;
for (i = 0; i < n; ++i) m[i] = m[i + 64];
for (i = 0; i < 64; ++i) m[i + n] = 0;
ret = 0;
goto cleanup;
fail:
for (i = 0; i < n; ++i) m[i] = 0;
cleanup:
cleanup(rcopy); cleanup(scopy); cleanup(tmp);
cleanup(R); cleanup(S); cleanup(A);
return ret;
}
/*
creates public key and secret key for signing
secret key has 2 parts:
32B - the discrete logarithm of the public key
32B - is used for k-generation (k is generated by hashing the secret key together with the entire message)
*/
int crypto_sign_nistp256ecdsa_tinynacl_keypair(unsigned char *pk, unsigned char *sk) {
gep256 A;
int ret = -1;
randombytes(sk, 64); /* create random initial value */
crypto_hash_sha512(sk, sk, 64); /* use crypto_hash(iv) as sk */
gep256_scalarmult_base(A, sk); /* create pk */
if (gep256_tobytes(pk, A) == 0) ret = 0;
cleanup(A);
return ret;
}
tinyssh-20180201/crypto/crypto_sign_nistp256ecdsa.h 0000664 0000000 0000000 00000002357 13227043065 0022166 0 ustar 00root root 0000000 0000000 #ifndef crypto_sign_nistp256ecdsa_H
#define crypto_sign_nistp256ecdsa_H
#define crypto_sign_nistp256ecdsa_tinynacl_SECRETKEYBYTES 64
#define crypto_sign_nistp256ecdsa_tinynacl_PUBLICKEYBYTES 64
#define crypto_sign_nistp256ecdsa_tinynacl_BYTES 64
extern int crypto_sign_nistp256ecdsa_tinynacl(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
extern int crypto_sign_nistp256ecdsa_tinynacl_open(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
extern int crypto_sign_nistp256ecdsa_tinynacl_keypair(unsigned char *,unsigned char *);
#define crypto_sign_nistp256ecdsa crypto_sign_nistp256ecdsa_tinynacl
#define crypto_sign_nistp256ecdsa_open crypto_sign_nistp256ecdsa_tinynacl_open
#define crypto_sign_nistp256ecdsa_keypair crypto_sign_nistp256ecdsa_tinynacl_keypair
#define crypto_sign_nistp256ecdsa_BYTES crypto_sign_nistp256ecdsa_tinynacl_BYTES
#define crypto_sign_nistp256ecdsa_PUBLICKEYBYTES crypto_sign_nistp256ecdsa_tinynacl_PUBLICKEYBYTES
#define crypto_sign_nistp256ecdsa_SECRETKEYBYTES crypto_sign_nistp256ecdsa_tinynacl_SECRETKEYBYTES
#define crypto_sign_nistp256ecdsa_IMPLEMENTATION "tinynacl"
#define crypto_sign_nistp256ecdsa_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_stream_chacha20.c 0000664 0000000 0000000 00000016025 13227043065 0021470 0 ustar 00root root 0000000 0000000 /*
20180104
Jan Mojzis
Public domain.
*/
#include "crypto_stream_chacha20.h"
static unsigned long unpack32(const unsigned char *x) {
return
(unsigned long) (x[0]) \
| (((unsigned long) (x[1])) << 8) \
| (((unsigned long) (x[2])) << 16) \
| (((unsigned long) (x[3])) << 24);
}
static void pack32(unsigned char *x, unsigned long u) {
x[0] = u; u >>= 8;
x[1] = u; u >>= 8;
x[2] = u; u >>= 8;
x[3] = u;
}
#define ROTATE32(x, c) ((x) << (c)) | (((x) & 0xffffffff) >> (32 - (c)))
#define QUARTERROUND(a, b, c, d) \
a += b; d = ROTATE32(d ^ a, 16); \
c += d; b = ROTATE32(b ^ c, 12); \
a += b; d = ROTATE32(d ^ a, 8); \
c += d; b = ROTATE32(b ^ c, 7);
#define TWOROUNDS \
QUARTERROUND( x0, x4, x8, x12) \
QUARTERROUND( x1, x5, x9, x13) \
QUARTERROUND( x2, x6, x10, x14) \
QUARTERROUND( x3, x7, x11, x15) \
QUARTERROUND( x0, x5, x10, x15) \
QUARTERROUND( x1, x6, x11, x12) \
QUARTERROUND( x2, x7, x8, x13) \
QUARTERROUND( x3, x4, x9, x14)
#define XORBLOCK(o, i) \
x0 = s0; \
x1 = s1; \
x2 = s2; \
x3 = s3; \
x4 = k0; \
x5 = k1; \
x6 = k2; \
x7 = k3; \
x8 = k4; \
x9 = k5; \
x10 = k6; \
x11 = k7; \
x12 = n0; \
x13 = n1; \
x14 = n2; \
x15 = n3; \
\
TWOROUNDS /* round 1, 2 */ \
TWOROUNDS /* round 3, 4 */ \
TWOROUNDS /* round 5, 6 */ \
TWOROUNDS /* round 7, 8 */ \
TWOROUNDS /* round 9, 10 */ \
TWOROUNDS /* round 11, 12 */ \
TWOROUNDS /* round 13, 14 */ \
TWOROUNDS /* round 15, 16 */ \
TWOROUNDS /* round 17, 18 */ \
TWOROUNDS /* round 19, 20 */ \
\
pack32(o , (x0 + s0) ^ unpack32(i )); \
pack32(o + 4, (x1 + s1) ^ unpack32(i + 4)); \
pack32(o + 8, (x2 + s2) ^ unpack32(i + 8)); \
pack32(o + 12, (x3 + s3) ^ unpack32(i + 12)); \
pack32(o + 16, (x4 + k0) ^ unpack32(i + 16)); \
pack32(o + 20, (x5 + k1) ^ unpack32(i + 20)); \
pack32(o + 24, (x6 + k2) ^ unpack32(i + 24)); \
pack32(o + 28, (x7 + k3) ^ unpack32(i + 28)); \
pack32(o + 32, (x8 + k4) ^ unpack32(i + 32)); \
pack32(o + 36, (x9 + k5) ^ unpack32(i + 36)); \
pack32(o + 40, (x10 + k6) ^ unpack32(i + 40)); \
pack32(o + 44, (x11 + k7) ^ unpack32(i + 44)); \
pack32(o + 48, (x12 + n0) ^ unpack32(i + 48)); \
pack32(o + 52, (x13 + n1) ^ unpack32(i + 52)); \
pack32(o + 56, (x14 + n2) ^ unpack32(i + 56)); \
pack32(o + 60, (x15 + n3) ^ unpack32(i + 60));
#define _CRYPTO_STREAM_XOR(inttype, fcename) \
static int fcename( unsigned char *c, \
const unsigned char *m, \
unsigned long long l, \
const unsigned char *n, \
const unsigned char *k) { \
\
inttype x0, x1, x2, x3, x4, x5, x6, x7; \
inttype x8, x9, x10, x11, x12, x13, x14, x15; \
inttype k0 = unpack32(k ); \
inttype k1 = unpack32(k + 4); \
inttype k2 = unpack32(k + 8); \
inttype k3 = unpack32(k + 12); \
inttype k4 = unpack32(k + 16); \
inttype k5 = unpack32(k + 20); \
inttype k6 = unpack32(k + 24); \
inttype k7 = unpack32(k + 28); \
inttype n0 = 0; \
inttype n1 = 0; \
inttype n2 = unpack32(n ); \
inttype n3 = unpack32(n + 4); \
inttype s0 = 0x61707865; \
inttype s1 = 0x3320646E; \
inttype s2 = 0x79622D32; \
inttype s3 = 0x6B206574; \
unsigned long long u = 0; \
\
if (!l) return 0; \
\
while (l >= 64) { \
XORBLOCK(c, m); \
\
++u; \
if (!u) return -1; \
n0 = (inttype)(u & 0xffffffff); \
n1 = (inttype)(u >> 32); \
\
l -= 64; \
c += 64; \
m += 64; \
} \
if (l) { \
unsigned char b[64] = {0}; \
long long j; \
\
for (j = 0; j < l; ++j) b[j] = m[j]; \
XORBLOCK(b, b); \
for (j = 0; j < l; ++j) c[j] = b[j]; \
} \
return 0; \
}
_CRYPTO_STREAM_XOR(unsigned int, int_crypto_stream_xor)
_CRYPTO_STREAM_XOR(unsigned long, long_crypto_stream_xor)
int crypto_stream_chacha20_tinynacl_xor(unsigned char *c, const unsigned char *m, unsigned long long l, const unsigned char *n, const unsigned char *k) {
if (sizeof(int) == 4) return int_crypto_stream_xor(c, m, l, n, k);
return long_crypto_stream_xor(c, m, l, n, k);
}
int crypto_stream_chacha20_tinynacl(unsigned char *c, unsigned long long l, const unsigned char *n, const unsigned char *k) {
long long j;
unsigned char ncopy[8], kcopy[32];
for (j = 0; j < 32; ++j) kcopy[j] = k[j];
for (j = 0; j < 8; ++j) ncopy[j] = n[j];
for (j = 0; j < l; ++j) c[j] = 0;
return crypto_stream_chacha20_tinynacl_xor(c, c, l, ncopy, kcopy);
}
tinyssh-20180201/crypto/crypto_stream_chacha20.h 0000664 0000000 0000000 00000001536 13227043065 0021476 0 ustar 00root root 0000000 0000000 #ifndef crypto_stream_chacha20_H
#define crypto_stream_chacha20_H
#define crypto_stream_chacha20_tinynacl_KEYBYTES 32
#define crypto_stream_chacha20_tinynacl_NONCEBYTES 8
extern int crypto_stream_chacha20_tinynacl(unsigned char *, unsigned long long, const unsigned char *, const unsigned char *);
extern int crypto_stream_chacha20_tinynacl_xor(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *, const unsigned char *);
#define crypto_stream_chacha20 crypto_stream_chacha20_tinynacl
#define crypto_stream_chacha20_xor crypto_stream_chacha20_tinynacl_xor
#define crypto_stream_chacha20_KEYBYTES crypto_stream_chacha20_tinynacl_KEYBYTES
#define crypto_stream_chacha20_NONCEBYTES crypto_stream_chacha20_tinynacl_NONCEBYTES
#define crypto_stream_chacha20_IMPLEMENTATION "tinynacl"
#define crypto_stream_chacha20_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_uint16.h 0000664 0000000 0000000 00000000156 13227043065 0017675 0 ustar 00root root 0000000 0000000 #ifndef crypto_uint16_h
#define crypto_uint16_h
#include
typedef uint16_t crypto_uint16;
#endif
tinyssh-20180201/crypto/crypto_uint32.h 0000664 0000000 0000000 00000000156 13227043065 0017673 0 ustar 00root root 0000000 0000000 #ifndef crypto_uint32_h
#define crypto_uint32_h
#include
typedef uint32_t crypto_uint32;
#endif
tinyssh-20180201/crypto/crypto_uint64.h 0000664 0000000 0000000 00000000156 13227043065 0017700 0 ustar 00root root 0000000 0000000 #ifndef crypto_uint64_h
#define crypto_uint64_h
#include
typedef uint64_t crypto_uint64;
#endif
tinyssh-20180201/crypto/crypto_uint8.h 0000664 0000000 0000000 00000000152 13227043065 0017612 0 ustar 00root root 0000000 0000000 #ifndef crypto_uint8_h
#define crypto_uint8_h
#include
typedef uint8_t crypto_uint8;
#endif
tinyssh-20180201/crypto/crypto_verify_16.c 0000664 0000000 0000000 00000000242 13227043065 0020350 0 ustar 00root root 0000000 0000000 #include "verify.h"
#include "crypto_verify_16.h"
int crypto_verify_16_tinynacl(const unsigned char *x, const unsigned char *y) {
return verify(x, y, 16);
}
tinyssh-20180201/crypto/crypto_verify_16.h 0000664 0000000 0000000 00000000611 13227043065 0020355 0 ustar 00root root 0000000 0000000 #ifndef crypto_verify_16_H
#define crypto_verify_16_H
#define crypto_verify_16_tinynacl_BYTES 16
extern int crypto_verify_16_tinynacl(const unsigned char *, const unsigned char *);
#define crypto_verify_16 crypto_verify_16_tinynacl
#define crypto_verify_16_BYTES crypto_verify_16_tinynacl_BYTES
#define crypto_verify_16_IMPLEMENTATION "tinynacl"
#define crypto_verify_16_VERSION "-"
#endif
tinyssh-20180201/crypto/crypto_verify_32.c 0000664 0000000 0000000 00000000242 13227043065 0020346 0 ustar 00root root 0000000 0000000 #include "verify.h"
#include "crypto_verify_32.h"
int crypto_verify_32_tinynacl(const unsigned char *x, const unsigned char *y) {
return verify(x, y, 32);
}
tinyssh-20180201/crypto/crypto_verify_32.h 0000664 0000000 0000000 00000000611 13227043065 0020353 0 ustar 00root root 0000000 0000000 #ifndef crypto_verify_32_H
#define crypto_verify_32_H
#define crypto_verify_32_tinynacl_BYTES 32
extern int crypto_verify_32_tinynacl(const unsigned char *, const unsigned char *);
#define crypto_verify_32 crypto_verify_32_tinynacl
#define crypto_verify_32_BYTES crypto_verify_32_tinynacl_BYTES
#define crypto_verify_32_IMPLEMENTATION "tinynacl"
#define crypto_verify_32_VERSION "-"
#endif
tinyssh-20180201/crypto/fe.c 0000664 0000000 0000000 00000010726 13227043065 0015540 0 ustar 00root root 0000000 0000000 /*
20140918
Jan Mojzis
Public domain.
*/
#include "fe.h"
/*
o = 0
*/
void fe_0(fe o) {
long long i;
for (i = 0; i < 8; ++i) o[i] = 0;
}
/*
o = 1
*/
void fe_1(fe o) {
fe_0(o);
o[0] = 1;
}
/*
o = x
*/
void fe_copy(fe o, const fe x) {
long long i;
for (i = 0; i < 8; ++i) o[i] = x[i];
}
/*
if (b) swap(f, g)
*/
void fe_cswap(fe f, fe g, crypto_uint32 b) {
long long i;
fe t;
b = -b;
for (i = 0; i < 8; ++i) t[i] = b & (f[i] ^ g[i]);
for (i = 0; i < 8; ++i) f[i] ^= t[i];
for (i = 0; i < 8; ++i) g[i] ^= t[i];
fe_0(t);
}
/*
if (b) f = g
*/
void fe_cmov(fe f, const fe g, crypto_uint32 b) {
long long i;
fe t;
b = -b;
for (i = 0; i < 8; ++i) t[i] = b & (f[i] ^ g[i]);
for (i = 0; i < 8; ++i) f[i] ^= t[i];
fe_0(t);
}
/*
o = a * b
*/
/*
Implementation note: fe_mul_() is unrolled version of:
void fe_mul_(fel o, const fe a, const fe b) {
crypto_uint64 u;
long long i, j;
for (i = 0; i < 16; ++i) o[i] = 0;
for (i = 0; i < 8; ++i) for (j = 0; j < 8; ++j) {
u = (crypto_uint64)a[i] * (crypto_uint64)b[j];
o[i + j ] += u & 0xffffffff;
o[i + j + 1] += u >> 32;
}
}
*/
#define M(i, j) u = (crypto_uint64)a[i] * (crypto_uint64)b[j]; \
o[i + j ] += u & 0xffffffff; \
o[i + j + 1] += u >> 32;
void fe_mul_(fel o, const fe a, const fe b) {
crypto_uint64 u;
long long i;
for (i = 0; i < 16; ++i) o[i] = 0;
M(0, 0); M(0, 1); M(0, 2); M(0, 3); M(0, 4); M(0, 5); M(0, 6); M(0, 7);
M(1, 0); M(1, 1); M(1, 2); M(1, 3); M(1, 4); M(1, 5); M(1, 6); M(1, 7);
M(2, 0); M(2, 1); M(2, 2); M(2, 3); M(2, 4); M(2, 5); M(2, 6); M(2, 7);
M(3, 0); M(3, 1); M(3, 2); M(3, 3); M(3, 4); M(3, 5); M(3, 6); M(3, 7);
M(4, 0); M(4, 1); M(4, 2); M(4, 3); M(4, 4); M(4, 5); M(4, 6); M(4, 7);
M(5, 0); M(5, 1); M(5, 2); M(5, 3); M(5, 4); M(5, 5); M(5, 6); M(5, 7);
M(6, 0); M(6, 1); M(6, 2); M(6, 3); M(6, 4); M(6, 5); M(6, 6); M(6, 7);
M(7, 0); M(7, 1); M(7, 2); M(7, 3); M(7, 4); M(7, 5); M(7, 6); M(7, 7);
}
/*
o = x ^ 2
*/
/*
Implementation note: fe_sq_() is unrolled version of:
void fe_sq_(fel o, const fe a) {
crypto_uint64 u;
long long i, j;
for (i = 0; i < 16; ++i) o[i] = 0;
for (i = 0; i < 8; ++i) for (j = i + 1; j < 8; ++j) {
u = (crypto_uint64)a[i] * (crypto_uint64)a[j];
o[i + j ] += 2 * (u & 0xffffffff);
o[i + j + 1] += 2 * (u >> 32);
}
for (i = 0; i < 8; ++i) {
u = (crypto_uint64)a[i] * (crypto_uint64)a[i];
o[2 * i ] += (u & 0xffffffff);
o[2 * i + 1] += (u >> 32);
}
}
*/
#define M2(i, j) u = (crypto_uint64)a[i] * (crypto_uint64)a[j]; \
o[i + j ] += 2 * (u & 0xffffffff); \
o[i + j + 1] += 2 * (u >> 32);
#define SQ(i) u = (crypto_uint64)a[i] * (crypto_uint64)a[i]; \
o[2 * i ] += (u & 0xffffffff); \
o[2 * i + 1] += (u >> 32)
void fe_sq_(fel o, const fe a) {
crypto_uint64 u;
long long i;
for (i = 0; i < 16; ++i) o[i] = 0;
M2(0, 1); M2(0, 2); M2(0, 3); M2(0, 4); M2(0, 5); M2(0, 6); M2(0, 7);
M2(1, 2); M2(1, 3); M2(1, 4); M2(1, 5); M2(1, 6); M2(1, 7);
M2(2, 3); M2(2, 4); M2(2, 5); M2(2, 6); M2(2, 7);
M2(3, 4); M2(3, 5); M2(3, 6); M2(3, 7);
M2(4, 5); M2(4, 6); M2(4, 7);
M2(5, 6); M2(5, 7);
M2(6, 7);
SQ(0); SQ(1); SQ(2); SQ(3); SQ(4); SQ(5); SQ(6); SQ(7);
}
/*
if (p < r) r -= p
*/
void fe_reducesmall(fe r, const fe p, const crypto_uint64 carry) {
crypto_uint64 pb = 0, b;
long long i;
fe t;
for (i = 0; i < 8; ++i) {
pb += (crypto_uint64)p[i];
b = (crypto_uint64)r[i] - pb; b >>= 63;
t[i] = (crypto_uint64)r[i] - pb + (b << 32);
pb = b;
}
b = carry - pb; b >>= 63;
b -= 1;
for (i = 0; i < 8; ++i) r[i] ^= b & (r[i] ^ t[i]);
fe_0(t);
}
/*
if (f == 0 && g == 0 && h == 0) return 1;
else return 0;
*/
int fe_iszero3(const fe f, const fe g, const fe h) {
long long i;
crypto_uint32 x = 0;
for (i = 0; i < 8; ++i) x |= f[i];
for (i = 0; i < 8; ++i) x |= g[i];
for (i = 0; i < 8; ++i) x |= h[i];
return (4294967296ULL - (crypto_uint64)x) >> 32;
}
/*
if (f == 0 && g == 0) return 1;
else return 0;
*/
int fe_iszero2(const fe f, const fe g) {
long long i;
crypto_uint32 x = 0;
for (i = 0; i < 8; ++i) x |= f[i];
for (i = 0; i < 8; ++i) x |= g[i];
return (4294967296ULL - (crypto_uint64)x) >> 32;
}
tinyssh-20180201/crypto/fe.h 0000664 0000000 0000000 00000001104 13227043065 0015533 0 ustar 00root root 0000000 0000000 #ifndef _FE_H____
#define _FE_H____
#include "crypto_uint32.h"
#include "crypto_uint64.h"
typedef crypto_uint32 fe[8];
typedef crypto_uint64 fel[16];
extern void fe_0(fe);
extern void fe_1(fe);
extern void fe_copy(fe, const fe);
extern void fe_cswap(fe, fe, crypto_uint32);
extern void fe_cmov(fe, const fe, crypto_uint32);
extern void fe_mul_(fel, const fe, const fe);
extern void fe_sq_(fel, const fe);
extern void fe_reducesmall(fe, const fe, const crypto_uint64);
extern int fe_iszero3(const fe, const fe, const fe);
extern int fe_iszero2(const fe, const fe);
#endif
tinyssh-20180201/crypto/fe25519.c 0000664 0000000 0000000 00000013434 13227043065 0016145 0 ustar 00root root 0000000 0000000 #include "uint32_pack.h"
#include "uint32_unpack.h"
#include "crypto_verify_32.h"
#include "cleanup.h"
#include "fe.h"
#include "fe25519.h"
/*
p = 2^255 - 19
*/
static const fe p = {
0xffffffed, 0xffffffff, 0xffffffff, 0xffffffff,
0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff
};
/*
p3 = 3 * p
*/
static const crypto_uint64 p3[8] = {
0x2ffffffc7ULL, 0x2fffffffdULL, 0x2fffffffdULL, 0x2fffffffdULL,
0x2fffffffdULL, 0x2fffffffdULL, 0x2fffffffdULL, 0x17ffffffdULL
};
/*
reduction modulo p: 16 limbs -> 8 limbs
*/
static void fe25519_reducebig(fe o, fel t) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 7; ++i) { u += t[i] + 38ULL * t[i + 8]; t[i] = u & 0xffffffff; u >>= 32; }
u += t[i] + 38ULL * t[i + 8]; t[i] = u & 0x7fffffff; u >>= 31;
u *= 19ULL;
for (i = 0; i < 8; ++i) { u += t[i]; o[i] = u & 0xffffffff; u >>= 32; }
}
/*
o = (a * b) % p
*/
void fe25519_mul(fe o, const fe a, const fe b) {
fel t;
fe_mul_(t, a, b);
fe25519_reducebig(o, t);
cleanup(t);
}
/*
o = (a ^ 2) % p
*/
void fe25519_sq(fe o, const fe a) {
fel t;
fe_sq_(t, a);
fe25519_reducebig(o, t);
cleanup(t);
}
/*
o = (121666 * f) % p;
*/
void fe25519_mul121666(fe o, const fe f) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 7; ++i) { u += (crypto_uint64)121666 * (crypto_uint64)f[i]; o[i] = u & 0xffffffff; u >>= 32; }
u += (crypto_uint64)121666 * (crypto_uint64)f[i]; o[i] = u & 0x7fffffff; u >>= 31;
u *= 19ULL;
for (i = 0; i < 8; ++i) { u += o[i]; o[i] = u & 0xffffffff; u >>= 32; }
}
/*
o = (x + y) % p
*/
void fe25519_add(fe o, const fe x, const fe y) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 7; ++i) { u += (crypto_uint64)x[i] + (crypto_uint64)y[i]; o[i] = u & 0xffffffff; u >>= 32; }
u += (crypto_uint64)x[i] + (crypto_uint64)y[i]; o[i] = u & 0x7fffffff; u >>= 31;
u *= 19ULL;
for (i = 0; i < 8; ++i) { u += o[i]; o[i] = u & 0xffffffff; u >>= 32; }
}
/*
o = (x - y) % p
*/
void fe25519_sub(fe o, const fe x, const fe y) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 7; ++i) { u += p3[i] - (crypto_uint64)y[i] + (crypto_uint64)x[i]; o[i] = u & 0xffffffff; u >>= 32; }
u += p3[i] - (crypto_uint64)y[i] + (crypto_uint64)x[i]; o[i] = u & 0x7fffffff; u >>= 31;
u *= 19ULL;
for (i = 0; i < 8; ++i) { u += o[i]; o[i] = u & 0xffffffff; u >>= 32; }
}
/*
o = -x % p
*/
void fe25519_neg(fe o, const fe x) {
fe t;
fe_0(t);
fe25519_sub(o, t, x);
}
/*
o = (1 / z) % p
... using Fermat's Little Theorem
*/
void fe25519_inv(fe o, const fe z) {
fe t0, t1, t2, t3;
long long i;
fe25519_sq(t0, z); for (i = 1; i < 1; ++i) fe25519_sq(t0, t0);
fe25519_sq(t1,t0); for (i = 1; i < 2; ++i) fe25519_sq(t1, t1);
fe25519_mul(t1, z, t1);
fe25519_mul(t0, t0, t1);
fe25519_sq(t2, t0); for (i = 1; i < 1; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t1, t2);
fe25519_sq(t2, t1); for (i = 1; i < 5; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t2, t1);
fe25519_sq(t2, t1); for (i = 1; i < 10; ++i) fe25519_sq(t2, t2);
fe25519_mul(t2, t2, t1);
fe25519_sq(t3, t2); for (i = 1; i < 20; ++i) fe25519_sq(t3, t3);
fe25519_mul(t2, t3, t2);
fe25519_sq(t2, t2); for (i = 1; i < 10; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t2, t1);
fe25519_sq(t2, t1); for (i = 1; i < 50; ++i) fe25519_sq(t2, t2);
fe25519_mul(t2, t2, t1);
fe25519_sq(t3, t2); for (i = 1; i < 100; ++i) fe25519_sq(t3, t3);
fe25519_mul(t2, t3, t2);
fe25519_sq(t2, t2); for (i = 1; i < 50; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t2, t1);
fe25519_sq(t1, t1); for (i = 1; i < 5; ++i) fe25519_sq(t1, t1);
fe25519_mul(o, t1, t0);
cleanup(t0); cleanup(t1); cleanup(t2); cleanup(t3);
}
void fe25519_pow22523(fe out, const fe z) {
fe t0, t1, t2;
long long i;
fe25519_sq(t0, z); for (i = 1; i < 1; ++i) fe25519_sq(t0, t0);
fe25519_sq(t1, t0); for (i = 1; i < 2; ++i) fe25519_sq(t1, t1);
fe25519_mul(t1, z, t1);
fe25519_mul(t0, t0, t1);
fe25519_sq(t0, t0); for (i = 1; i < 1; ++i) fe25519_sq(t0, t0);
fe25519_mul(t0, t1, t0);
fe25519_sq(t1, t0); for (i = 1; i < 5; ++i) fe25519_sq(t1, t1);
fe25519_mul(t0, t1, t0);
fe25519_sq(t1, t0); for (i = 1; i < 10; ++i) fe25519_sq(t1, t1);
fe25519_mul(t1, t1, t0);
fe25519_sq(t2, t1); for (i = 1; i < 20; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t2, t1);
fe25519_sq(t1, t1); for (i = 1; i < 10; ++i) fe25519_sq(t1, t1);
fe25519_mul(t0, t1, t0);
fe25519_sq(t1, t0); for (i = 1; i < 50; ++i) fe25519_sq(t1, t1);
fe25519_mul(t1, t1, t0);
fe25519_sq(t2, t1); for (i = 1; i < 100; ++i) fe25519_sq(t2, t2);
fe25519_mul(t1, t2, t1);
fe25519_sq(t1, t1); for (i = 1; i < 50; ++i) fe25519_sq(t1, t1);
fe25519_mul(t0, t1, t0);
fe25519_sq(t0, t0); for (i = 1; i < 2; ++i) fe25519_sq(t0, t0);
fe25519_mul(out, t0, z);
cleanup(t0); cleanup(t1); cleanup(t2);
}
/*
converts field-element into byte-array
*/
void fe25519_tobytes(unsigned char *out, const fe in) {
long long i;
fe x;
fe_copy(x, in);
fe_reducesmall(x, p, 0);
for (i = 0; i < 8; ++i) uint32_pack(out + 4 * i, x[i]);
cleanup(x);
}
/*
converts byte-array into field-element
*/
void fe25519_frombytes(fe out, const unsigned char *in) {
long long i;
for (i = 0; i < 8; ++i) out[i] = uint32_unpack(in + 4 * i);
out[7] &= 0x7fffffff;
}
/*
if (f == 0) return 0;
else return -1;
*/
static const unsigned char zero[32] = {0};
int fe25519_isnonzero(const fe f) {
unsigned char s[32];
int r;
fe25519_tobytes(s, f);
r = crypto_verify_32(s, zero);
cleanup(s);
return r;
}
/*
if (f >= 0) return 0;
else return -1;
*/
int fe25519_isnegative(const fe f) {
unsigned char s[32];
int r;
fe25519_tobytes(s,f);
r = s[0] & 1;
cleanup(s);
return r;
}
tinyssh-20180201/crypto/fe25519.h 0000664 0000000 0000000 00000001156 13227043065 0016150 0 ustar 00root root 0000000 0000000 #ifndef _FE25519_H____
#define _FE25519_H____
#include "fe.h"
extern void fe25519_mul(fe, const fe, const fe);
extern void fe25519_sq(fe, const fe);
extern void fe25519_add(fe, const fe, const fe);
extern void fe25519_mul121666(fe, const fe);
extern void fe25519_sub(fe, const fe, const fe);
extern void fe25519_neg(fe, const fe);
extern void fe25519_inv(fe, const fe);
extern void fe25519_pow22523(fe, const fe);
extern void fe25519_tobytes(unsigned char *, const fe);
extern void fe25519_frombytes(fe, const unsigned char *);
extern int fe25519_isnonzero(const fe);
extern int fe25519_isnegative(const fe);
#endif
tinyssh-20180201/crypto/fep256.c 0000664 0000000 0000000 00000013374 13227043065 0016157 0 ustar 00root root 0000000 0000000 /*
20140918
Jan Mojzis
Public domain.
*/
#include "uint32_pack_big.h"
#include "uint32_unpack_big.h"
#include "crypto_verify_32.h"
#include "crypto_int64.h"
#include "cleanup.h"
#include "fe.h"
#include "fep256.h"
/* p = 2^256 - 2^224 + 2^192 + 2^96 - 1 */
static const fe p = {
0xffffffff, 0xffffffff, 0xffffffff, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0xffffffff
};
/* pl = 2^256 - p */
static const fe pl = {
0x00000001, 0x00000000, 0x00000000, 0xffffffff,
0xffffffff, 0xffffffff, 0xfffffffe, 0x00000000
};
/*
reduction modulo p: 9 limbs -> 8 limbs
note: 0 < x < 9p
*/
static void fep256_reduce(fe o, crypto_uint64 t[9]) {
crypto_uint64 u;
long long i;
u = 0;
for (i = 0; i < 9; ++i) { u += t[i]; t[i] = u & 0xffffffff; u >>= 32; }
u = 0;
for (i = 0; i < 8; ++i) { u += t[i] + t[8] * (crypto_uint64)pl[i]; o[i] = u & 0xffffffff; u >>= 32; }
fe_reducesmall(o, p, u);
}
/*
reduction modulo p: 16 limbs -> 8 limbs
*/
static void fep256_reducebig(fe o, fel t) {
crypto_uint64 u = 0;
crypto_int64 x[9], c, i;
for (i = 0; i < 16; ++i) { u += t[i]; t[i] = u & 0xffffffff; u >>= 32; }
x[8] = 0;
x[7] = t[7] + 2 * t[15] + t[15] + t[ 8] - t[10] - t[11] - t[12] - t[13];
x[6] = t[6] + 2 * t[14] + 2 * t[15] + t[14] + t[13] - t[ 8] - t[ 9] ;
x[5] = t[5] + 2 * t[13] + 2 * t[14] + t[15] - t[10] - t[11] ;
x[4] = t[4] + 2 * t[12] + 2 * t[13] + t[14] - t[ 9] - t[10] ;
x[3] = t[3] + 2 * t[11] + 2 * t[12] + t[13] - t[15] - t[ 8] - t[ 9] ;
x[2] = t[2] + + t[10] + t[11] - t[13] - t[14] - t[15] ;
x[1] = t[1] + + t[ 9] + t[10] - t[12] - t[13] - t[14] - t[15];
x[0] = t[0] + + t[ 8] + t[ 9] - t[11] - t[12] - t[13] - t[14];
x[0] += x[8];
x[3] -= x[8];
x[6] -= x[8];
x[7] += x[8];
x[8] = 4;
for (i = 0; i < 8; ++i) {
x[i] += (4LL << 32) - (crypto_uint64)pl[i] * 4LL;
c = x[i] >> 32;
x[i + 1] += c - 4;
x[i ] -= c << 32;
}
fep256_reduce(o, (crypto_uint64 *)x);
cleanup(x);
}
/*
o = (a * b) % p
*/
void fep256_mul(fe o, const fe a, const fe b) {
fel t;
fe_mul_(t, a, b);
fep256_reducebig(o, t);
cleanup(t);
}
/*
o = (a ^ 2) % p
*/
void fep256_sq(fe o, const fe a) {
fel t;
fe_sq_(t, a);
fep256_reducebig(o, t);
cleanup(t);
}
/*
o = (x * y) % p;
*/
void fep256_mulx_(fe o, const fe x, const crypto_uint64 y) {
crypto_uint64 t[9];
long long i;
t[8] = 0;
for (i = 0; i < 8; ++i) t[i] = (crypto_uint64)x[i] * y;
fep256_reduce(o, t);
cleanup(t);
}
/*
o = (x * 2) % p;
*/
void fep256_mul2(fe o, const fe x) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 8; ++i) { u += (crypto_uint64)x[i] * 2ULL; o[i] = u & 0xffffffff; u >>= 32; }
fe_reducesmall(o, p, u);
}
/*
o = (x + y) % p;
*/
void fep256_add(fe o, const fe x, const fe y) {
crypto_uint64 u = 0;
long long i;
for (i = 0; i < 8; ++i) { u += (crypto_uint64)x[i] + (crypto_uint64)y[i]; o[i] = u & 0xffffffff; u >>= 32; }
fe_reducesmall(o, p, u);
}
/*
o = (x - y) % p;
*/
void fep256_sub(fe o, const fe x, const fe y) {
crypto_uint64 a, b, pb, u;
long long i;
u = pb = 0;
for (i = 0; i < 8; ++i) {
pb += (crypto_uint64)y[i];
a = (crypto_uint64)x[i] + (crypto_uint64)p[i];
b = a - pb; b >>= 63;
a += (b << 32) - pb;
pb = b;
u += a; o[i] = u & 0xffffffff; u >>= 32;
}
fe_reducesmall(o, p, u);
}
/*
o = -x % p
*/
void fep256_neg(fe o, const fe x) {
fe t;
fe_0(t);
fep256_sub(o, t, x);
}
/*
out = (1 / in) % p;
... using Fermat's Little Theorem
13 * mul, 255 * sq
*/
void fep256_inv(fe out, const fe in) {
fe o, x2, x4, x8, x16, x32;
long long i;
fep256_sq(o, in);
for (i = 0; i < 1 - 1; ++i) fep256_sq(o, o);
fep256_mul(x2, o, in);
fep256_sq(o, x2);
for (i = 0; i < 2 - 1; ++i) fep256_sq(o, o);
fep256_mul(x4, o, x2);
fep256_sq(o, x4);
for (i = 0; i < 4 - 1; ++i) fep256_sq(o, o);
fep256_mul(x8, o, x4);
fep256_sq(o, x8);
for (i = 0; i < 8 - 1; ++i) fep256_sq(o, o);
fep256_mul(x16, o, x8);
fep256_sq(o, x16);
for (i = 0; i < 16 - 1; ++i) fep256_sq(o, o);
fep256_mul(x32, o, x16);
fep256_sq(o, x32);
for (i = 0; i < 32 - 1; ++i) fep256_sq(o, o);
fep256_mul(o, o, in);
for (i = 0; i < 128; ++i) fep256_sq(o, o);
fep256_mul(o, o, x32);
for (i = 0; i < 32; ++i) fep256_sq(o, o);
fep256_mul(o, o, x32);
for (i = 0; i < 16; ++i) fep256_sq(o, o);
fep256_mul(o, o, x16);
for (i = 0; i < 8; ++i) fep256_sq(o, o);
fep256_mul(o, o, x8);
for (i = 0; i < 4; ++i) fep256_sq(o, o);
fep256_mul(o, o, x4);
for (i = 0; i < 2; ++i) fep256_sq(o, o);
fep256_mul(o, o, x2);
for (i = 0; i < 2; ++i) fep256_sq(o, o);
fep256_mul(out, o, in);
cleanup(o); cleanup(x2); cleanup(x4);
cleanup(x8); cleanup(x16); cleanup(x32);
}
/*
converts field-element into byte-array
*/
void fep256_tobytes(unsigned char *out, const fe in) {
long long i;
fe x;
fe_copy(x, in);
fe_reducesmall(x, p, 0);
for (i = 0; i < 8; ++i) uint32_pack_big(out + 28 - 4 * i, x[i]);
cleanup(x);
}
/*
converts byte-array into field-element
*/
void fep256_frombytes(fe out, const unsigned char *in) {
long long i;
for (i = 0; i < 8; ++i) out[i] = uint32_unpack_big(in + 28 - 4 * i);
fe_reducesmall(out, p, 0);
}
/*
if (f == 0) return 0;
else return -1;
*/
static const unsigned char zero[32] = {0};
int fep256_isnonzero(const fe f) {
unsigned char s[32];
int r;
fep256_tobytes(s, f);
r = crypto_verify_32(s, zero);
cleanup(s);
return r;
}
tinyssh-20180201/crypto/fep256.h 0000664 0000000 0000000 00000001244 13227043065 0016155 0 ustar 00root root 0000000 0000000 #ifndef _FEP256_H____
#define _FEP256_H____
#include "fe.h"
extern void fep256_mul(fe, const fe, const fe);
extern void fep256_sq(fe, const fe);
extern void fep256_mul2(fe, const fe);
extern void fep256_mulx_(fe, const fe, const crypto_uint64);
#define fep256_mul3(x, y) fep256_mulx_(x, y, 3)
#define fep256_mul6(x, y) fep256_mulx_(x, y, 6)
extern void fep256_inv(fe, const fe);
extern void fep256_add(fe, const fe, const fe);
extern void fep256_sub(fe, const fe, const fe);
extern void fep256_neg(fe, const fe);
extern void fep256_tobytes(unsigned char *, const fe);
extern void fep256_frombytes(fe, const unsigned char *);
extern int fep256_isnonzero(const fe);
#endif
tinyssh-20180201/crypto/ge25519.base 0000664 0000000 0000000 00000222240 13227043065 0016633 0 ustar 00root root 0000000 0000000 {
{
{ 0xf58c3b85,0x2fbc93c6,0xfb8c0e19,0xcf932dc6,0x643d42c2,0x270b4898,0x33d4ba65,0x07cf9d3a },
{ 0xd740913e,0x9d103905,0xd140beb3,0xfd399f05,0x688f8a09,0xa5c18434,0x98f81267,0x44fd2f92 },
{ 0x877aaa68,0xabc91205,0xccaac49e,0x26d9e823,0xdd43598c,0x5a1b7dcb,0x9f0c65a8,0x6f117b68 },
},
{
{ 0x933c71d7,0x9224e7fc,0x7a0ff5b5,0x9f469d96,0xe1d60702,0x5aa69a65,0xa87d2e2e,0x590c063f },
{ 0x42b4d5a8,0x8a99a560,0x4e60acf6,0x8f2b810c,0xb16e37aa,0xe09e236b,0x69c92555,0x6bb595a6 },
{ 0xa59b7a5f,0x43faa8b3,0x5d9acf78,0x36c16bdd,0x0b3d6a31,0x500fa084,0x3ea50b73,0x701af5b1 },
},
{
{ 0x4cee9730,0xaf25b0a8,0xe8864b8a,0x025a8430,0x9f016732,0xc11b5002,0x9a80f8f4,0x7a164e1b },
{ 0xa4fcd265,0x56611fe8,0xe5c1ba7d,0x3bd353fd,0x214bd6bd,0x8131f31a,0x555bda62,0x2ab91587 },
{ 0x0dd0d889,0x14ae933f,0x1c35da62,0x58942322,0x8cf2db4c,0xd170e545,0x12b9b4c6,0x5a2826af },
},
{
{ 0x8efc099f,0x287351b9,0x7dfd2538,0x6765c6f4,0xfb0a9265,0xca348d3d,0x21e58727,0x680e9103 },
{ 0x056818bf,0x95fe050a,0x5660faa9,0x327e8971,0x06a05073,0xc3e8e3cd,0x7445a49a,0x27933f4c },
{ 0xc476ff09,0x5a13fbe9,0x7b5cc172,0x6e9e3945,0x102b4494,0x5ddbdcf9,0x63553e2b,0x7f9d0cbf },
},
{
{ 0x08a5bb33,0xa212bc44,0xc75eed02,0x8d5048c3,0x5abfec44,0xdd1beb0c,0x46e206eb,0x2945ccf1 },
{ 0xa447d6ba,0x7f9182c3,0x4b2729b7,0xd50014d1,0xb864a087,0xe33cf11c,0xeb1b55f3,0x154a7e73 },
{ 0x812a8285,0xbcbbdbf1,0xd0bdd1fc,0x270e0807,0x1bbda72d,0xb41b670b,0x6b3bb69a,0x43aabe69 },
},
{
{ 0x77157131,0x3a0ceeeb,0x00c8af88,0x9b271589,0xda59a736,0x8065b668,0xa2cc38bd,0x51e57bb6 },
{ 0x7b7d8ca4,0x499806b6,0x27d22739,0x575be284,0x204553b9,0xbb085ce7,0xae417884,0x38b64c41 },
{ 0x02ea4b71,0x85ac3267,0x41a1bb01,0xbe70e003,0x083bc144,0x53e4a24b,0x9f0d61e3,0x10b8e91a },
},
{
{ 0x944ea3bf,0x6b1a5cd0,0xb39dc0d2,0x7470353a,0x28542e49,0x71b25282,0x283c927e,0x461bea69 },
{ 0xaa3221b1,0xba6f2c9a,0x3bba23a7,0x6ca02153,0x92192c3a,0x9dea764f,0x2e5317e0,0x1d6edd5d },
{ 0x01b8b3a2,0xf1836dc8,0x053ea49a,0xb3035f47,0x5877adf3,0x529c41ba,0x6a0f90a7,0x7a9fbb1c },
},
{
{ 0x04dd3e8f,0x59b75966,0xe288702c,0x6cb30377,0x5ed9c323,0xb1339c66,0x61bce52f,0x0915e760 },
{ 0xf39234d9,0xe2a75ded,0xe1b558f9,0x963d7680,0x6e3c23fb,0x2c2741ac,0x320e01c3,0x3a9024a1 },
{ 0xc9a2911a,0xe7c1f5d9,0x8bcca7d7,0xb8a37178,0x0eb62a32,0x63641219,0x2ecc4e95,0x26907c5c },
},
},
{
{
{ 0x632f9c1d,0x2eccdd0e,0x76893115,0x51d0b696,0xa8637a58,0x52dfb76b,0xa00eef39,0x6dd37d49 },
{ 0x49aa515e,0xed5b6354,0x0bc6823a,0xa865c49f,0x5b42d1c4,0x850c1fe9,0x03d315b9,0x30d76d6f },
{ 0x2106e4c7,0x6c444417,0x928d7f69,0xfb53d680,0x694d3f26,0xb4739ea4,0x2e864bb0,0x10c69711 },
},
{
{ 0x8358c805,0x0ca62aa0,0x7a204247,0x6a3d4ae3,0x3b11eddc,0x7464d3a6,0x550806ef,0x03bf9baf },
{ 0x7dbe5fde,0x6493c427,0x19ad7ea2,0x265d4fad,0x46304590,0x0e00dfc8,0xed66fe09,0x25e61cab },
{ 0xcc586604,0x3f13e128,0xb459747e,0x6f5873ec,0xcc1268f5,0xa0b63ded,0x4586e22c,0x566d7863 },
},
{
{ 0xc65a2fd0,0xa1054285,0xf31667c3,0x6c64112a,0x731aee58,0x680ae240,0x4793b22a,0x14fba5f3 },
{ 0x9cc10834,0x1637a49f,0xa89bc451,0xbc8e56d5,0x7f7fd2db,0x1cb5ec0f,0x5ecc35d9,0x33975bca },
{ 0x6985f7d4,0x3cd74616,0xc9c80057,0x593e5e84,0x7b61131e,0x2fc3f2b6,0x83fc526c,0x14829cea },
},
{
{ 0x4e71ecb8,0x21e70b2f,0x40a477e3,0xe656ddb9,0xce1d4f80,0xbf6556ce,0x535d7b7e,0x05fc3bc4 },
{ 0x97dd95c2,0xff437b84,0xaa4eb5a7,0x6c744e30,0x3c85e88b,0x9e0c5d61,0x5f758173,0x2fd9c71e },
{ 0x52afdedd,0x24b8b3ae,0xed3b30cf,0x3495638c,0xa9be8195,0x33a4bc83,0x5c651f04,0x37376747 },
},
{
{ 0x14246590,0x634095cb,0x16c15535,0xef121440,0x8910bc60,0x9e38140c,0x30907c8c,0x6bf59057 },
{ 0x40d1add9,0x2fba99fd,0x96f4d027,0xb307166f,0x15f03bae,0x4363f052,0x3b18f999,0x1fbea56c },
{ 0xe1415b8a,0x0fa778f1,0xbac3a77e,0x06409ff7,0x9aa29a50,0x6f52d7b8,0x7a635a56,0x02521cf6 },
},
{
{ 0x772f5ee4,0xb1146720,0x96079ace,0xe8f894b1,0x00ac824a,0x4af8224d,0xf7cd6cc4,0x001753d9 },
{ 0x0a9d5294,0x513fee0b,0x0fdf5a66,0x8f98e75c,0xbfe107ce,0xd4618688,0x71382ced,0x3fa00a7e },
{ 0x963ddb34,0x3c69232d,0xb4973858,0x1dde87da,0xa091f285,0xaad7d1f9,0xa048edb6,0x12b5fe2f },
},
{
{ 0xad6f1e92,0xdf2b7c26,0x504b8913,0x4b66d323,0x751c8bc3,0x8c409dc0,0x0796c7b8,0x6f7e93c2 },
{ 0x96fce34d,0x71f0fbc4,0xadf35bed,0x73b9826b,0xff28c561,0xd2047261,0x6fb1206f,0x749b76f9 },
{ 0xaea6ae05,0x1f5af604,0xbee49c99,0xc12351f1,0xeeff6b66,0x61a808b5,0x01e02151,0x0fcec10f },
},
{
{ 0xc4244e45,0x3df2d29d,0x93d8de0a,0x2b020e74,0x820c214d,0x6cc8067e,0x6feab90a,0x41377916 },
{ 0x49fe1e44,0x644d58a6,0x31ad777e,0x21fcaea2,0x887fd0d2,0x02441c5a,0x83c511f3,0x4901aa71 },
{ 0x8c1af8f0,0x08b1b754,0x246299b4,0xce0f7a7c,0x1e06d939,0xf760b0f9,0x726d1213,0x41bb887b },
},
},
{
{
{ 0x7c6691ae,0x7e234c59,0x0a85b4c8,0x64889d3d,0x354afae7,0xdae2c90c,0x0c6a9e1d,0x0a871e07 },
{ 0x744346be,0x40e87d44,0x15b52b25,0x1d48dad4,0xa13b603e,0x7c3a8a18,0x2fcdbdf7,0x4eb728c1 },
{ 0x4bbc8989,0x3301b599,0x5bdd4260,0x736bae3a,0x19d59e3c,0x0d61ade2,0x2685d464,0x3ee7300f },
},
{
{ 0x841e7518,0x43fa7947,0x639c46d7,0xe5c6fa59,0xe3052b74,0xa1065e1d,0xcfb89030,0x7d47c6a2 },
{ 0x9e7dd6b7,0xf5d255e4,0x610b1eac,0x8016115c,0x92e187ca,0x3c99975d,0x979125c2,0x13815762 },
{ 0x8ef0d6e0,0x3fdad014,0x91546f3c,0x9d3e749a,0x26bb8157,0x71ec6210,0x34c9ec80,0x148cf58d },
},
{
{ 0x9ae4756d,0xe2572f7d,0x88f3487f,0x56c345bb,0x6960a88d,0x9fd10b6d,0x4eaea1b9,0x278febad },
{ 0x7934f027,0x46a492f6,0xf6840aa9,0x469984be,0x89611854,0x5ca1bc2a,0xbd5dbbd4,0x3ff2fa1e },
{ 0x8c933966,0xb1aa681f,0x20290c98,0x8c21949c,0x219d3c52,0x39115291,0xfe9c677b,0x4104dd02 },
},
{
{ 0xdb096ab8,0x81214e06,0x0ce44f35,0x21a8b6c9,0x409e2af5,0x6524c12a,0x8efca481,0x0165b5a4 },
{ 0x1124422a,0x72b2bf5e,0x98a33ab5,0xa1fa0c33,0xfa52b666,0x94cb6101,0xafaf53d5,0x2c863b00 },
{ 0xa0846a76,0xf190a474,0xcd2f7cc0,0x12eff984,0x58aa2b8f,0x695e2906,0xbffec8b8,0x591b67d9 },
},
{
{ 0x9f18b55d,0x99b9b371,0xa18c641e,0xe465e5fa,0xc29f05ed,0x61081136,0x7030128b,0x489b4f86 },
{ 0x80b49bfa,0x312f0d1c,0xabf3ec8a,0x5979515e,0x9ef01c88,0x727033c0,0xca8f7bcb,0x3de02ec7 },
{ 0x3aeb92ef,0xd232102d,0x6116a861,0xe16253b4,0x190baa24,0x3d7eabe7,0x496cbebf,0x49f5fbba },
},
{
{ 0x1e9c572e,0x155d628c,0xc5884741,0x8a4d86ac,0x515763eb,0x91a352f6,0x8867515b,0x06a1a6c2 },
{ 0x8a5bcfd4,0x30949a10,0xbc6473eb,0xdc40dd70,0x307c0d1c,0x92c294c1,0xcbfa6e74,0x5604a86d },
{ 0x7c1764b6,0x7288d1d4,0xe0418b51,0x72541140,0x18acf6d1,0x9f031a60,0xfe2742c6,0x20989e89 },
},
{
{ 0x85eaec2e,0x1674278b,0x7acb2bdf,0x5621dc07,0x61cbf45a,0x640a4c16,0xf70595d3,0x730b9950 },
{ 0x3a2dcc7f,0x499777fd,0xa54fd892,0x32857c2c,0xd207e3a0,0xa279d864,0x0ca67e29,0x0403ed1d },
{ 0x874ec552,0xc94b2d35,0x98246f8d,0xc5e6c8cf,0x16c035ce,0xf7cb46fa,0x08303dcc,0x5bd74543 },
},
{
{ 0x15e7792a,0x85c49321,0xbdcdddc9,0xc64c89a2,0xada3d762,0x9d1e3da8,0x3067f82c,0x5bb7db12 },
{ 0x28b24cc2,0x7f9ad195,0x6335c181,0x7f6b5465,0x4fc07236,0x66b8b66e,0x7380ad83,0x133a7800 },
{ 0xc6ca62be,0x0961f467,0x211952ee,0x04ec21d6,0x9bd54770,0x18236077,0x58f0e0d2,0x740dca6d },
},
},
{
{
{ 0x0478433c,0x231a8c57,0xc281439d,0xb7b5270e,0xe3d9079f,0xdbaa99ea,0x6c2b03d9,0x2c03f525 },
{ 0x52cfce4e,0xdf48ee07,0x06ec08b7,0xc3fffaf3,0xb95459c4,0x05710b2a,0x963ea38d,0x161d25fa },
{ 0x7b53a47d,0x790f1875,0xcf0c5879,0x307b0130,0x257ef7f9,0x31903d77,0xbd96bbaf,0x699468bd },
},
{
{ 0x6aa91948,0xd8dd3de6,0x2fc0d2cc,0x485064c2,0x34fdea2f,0x9b482466,0x6c4a2e3a,0x293e1c4e },
{ 0xf4dafecf,0xbd1f2f46,0xa47fd6f7,0x7cef0114,0x4a47b37f,0xd31ffdda,0x73905785,0x525219a4 },
{ 0x925112e1,0x376e134b,0xdca15da0,0x703778b5,0x461c3111,0xb04589af,0x7f032823,0x5b605c44 },
},
{
{ 0xf0e7f04c,0x3be9fec6,0x75e34962,0x866a579e,0x1e1de61a,0x5542ef16,0xcc5abdd5,0x2f12fef4 },
{ 0x20c47c89,0xb9658059,0x923b8fcc,0xe7f0100c,0x02e2ef77,0x00012565,0xa8aeb3ee,0x24a76dce },
{ 0xdfc0c740,0x0a4522b2,0x40c9a407,0x10d06e7f,0x78cff668,0xc6cf1441,0x18a43790,0x5e607b25 },
},
{
{ 0xa596cf14,0xa02c431c,0xaed3e400,0xe3c42d40,0x2e0f26db,0xd2452680,0x9e457068,0x201f3313 },
{ 0x6cdf1818,0x58b31d8f,0xc36258a2,0x35cfa74f,0x66e61d6e,0xe1b3ff4f,0x6ccdd5f7,0x5067acab },
{ 0x08039d51,0xfd527f6b,0x017c0006,0x18b14964,0x2e25a4a8,0xd5220eb0,0x62460375,0x397cba88 },
},
{
{ 0xc81379e7,0x7815c3fb,0xdde12af1,0xa6619420,0x85a8fdd5,0xffa9c0f8,0xc1e1c252,0x771b4022 },
{ 0xf05959b2,0x30c13093,0xe9a97976,0xe23aa18d,0x721d5e26,0x222fd491,0x766e6c3a,0x2339d320 },
{ 0x513a2fa7,0xd87dd986,0xf9d4cf08,0xf5ac9b71,0x1ea283b3,0xd06bc31b,0x19971a76,0x331a1892 },
},
{
{ 0x9d7572af,0x26512f3a,0x68074a9e,0x5bcbe288,0x1180f7c4,0x84edc1c1,0xf649a67b,0x1ac9619f },
{ 0xfb4f80c6,0xf5166f45,0x61c775cf,0x9c36c7de,0x9041d91c,0xe3d4e81b,0x83bdfe21,0x31167c6b },
{ 0x524b1068,0xf22b3842,0xee9ce987,0x5068343b,0x4a6250c8,0xfc9d7184,0x1f08b111,0x61243634 },
},
{
{ 0x1a2d2638,0x8b6349e3,0x9bd3fd35,0x9ddfb700,0xa3a06ba4,0x7f8bf1b8,0x78d90445,0x1522aa31 },
{ 0x874e898d,0xd99d41db,0x6c07dc20,0x09fea5f1,0xd00f9bbc,0x793d2c67,0x9e5eff40,0x46ebe230 },
{ 0x69614938,0x2c382f53,0xb72d6d10,0xdafe409a,0xb646f227,0xe8c83391,0x0524306c,0x45fe70f5 },
},
{
{ 0xc8951491,0x62f24920,0x3f630ca2,0x05f007c8,0xf5c9d4b8,0x6fbb45d2,0xb57a2245,0x16619f6d },
{ 0x960c0b8c,0xda4875a6,0xef0e2f20,0x5b68d076,0x3d0b8fd4,0x07fb51cf,0xa0e392d4,0x428d1623 },
{ 0x01a308fd,0x084f4a44,0x76a5caac,0xa82219c3,0x43d1bc7d,0xdeb8de46,0x60bd38c6,0x1d81592d },
},
},
{
{
{ 0x7b85c5e8,0x8765b69f,0xd168bab2,0x6ff0678b,0x1d330f9b,0x3a70e77c,0xb0af8e7c,0x3a5f6d51 },
{ 0xa60dac5f,0x61368756,0xebabdc57,0x17e02f6a,0x4cce0f7d,0x7f193f2d,0x89ecdcf0,0x20234a77 },
{ 0x7178b252,0x76d20db6,0xd51ed160,0x071c34f9,0xb3e41170,0xf62a4a20,0x3cffe366,0x7cd68235 },
},
{
{ 0x68acf4f3,0xa665cd60,0x3cd7e3d3,0x42d92d18,0x336025d9,0x5759389d,0x2b2cd8ff,0x3ef0253b },
{ 0xd887fab6,0x0be1a45b,0xba403b6e,0x2a846a32,0xe96e6000,0xd9921012,0x3bdc0943,0x2838c886 },
{ 0x4a465030,0xd16bb0cf,0x15c577ab,0xfa496b41,0xf4ab419d,0x82cfae8a,0x06a82812,0x21dcb8a6 },
},
{
{ 0xbe7731ba,0x9a8d00fa,0x629e1889,0x8203607e,0x43f3d97f,0xb2cc0237,0x6c6f678b,0x5d840dbf },
{ 0x8c9d9fc8,0x5c600446,0xd42aa3cb,0x2540096e,0x12ee2f9c,0x125b4d4c,0x94a31dab,0x0bc3d081 },
{ 0x309fe18b,0x706e380d,0xb9e165c7,0x6eb02da6,0x7dae20ab,0x57bbba99,0x2ac196dd,0x3a427623 },
},
{
{ 0xdb447ecb,0x3bf8c172,0xc6282dbd,0x5fcfc41f,0x75aa15fe,0x80acffc0,0x24e1a9f9,0x0770c9e8 },
{ 0x8a7084fa,0x4b42432c,0xdfb9e545,0x898a19e3,0x9c58e45d,0xbe9f0021,0xa16debd1,0x1ff177ce },
{ 0x45b5b5fd,0xcf61d99a,0x1b3a7924,0x860984e9,0x303e3e89,0xe7300919,0x41500b1e,0x39f264fd },
},
{
{ 0xfe097be1,0xd19b4aab,0xdfe01929,0xa46dfce1,0x2ca6f1ff,0xc3c90894,0x2c35f14e,0x65c62127 },
{ 0xdbe7e29c,0xa7ad3417,0x2b9c139c,0xbd94376a,0x93597ba9,0xa0e91b8e,0x68889840,0x1712d734 },
{ 0xce3193dd,0xe72b89f8,0xa125c0bb,0x4d103356,0x2e1cfe83,0x0419a93d,0xb19ce272,0x22f9800a },
},
{
{ 0x9a6efdac,0x42029fdd,0x34a54941,0xb912cebe,0x87bdf37b,0x640f64b9,0x8598cab4,0x4171a4d3 },
{ 0x3e9ef8cb,0x605a368a,0xa5504715,0xe3e9c022,0x5f24248f,0x553d48b0,0x647626e5,0x13f416cd },
{ 0x99c94c8c,0xfa2758aa,0xb000b807,0x23006f6f,0xadda5392,0xfbd291dd,0x574bd1ab,0x508214fa },
},
{
{ 0x53d003d6,0x461a15bb,0xbcf3c965,0xb2102888,0x6c683a5a,0x27c57675,0xc86cb447,0x3a7758a4 },
{ 0x3ed6fe4b,0xc2026915,0x511d77c4,0xa65a6739,0x2c14af94,0xcbde2646,0x6faba74b,0x22f960ec },
{ 0x93ae5076,0x548111f6,0x1dfd54a6,0x1dae21df,0xf3115e65,0x12248c90,0x8de7f494,0x5d9fd15f },
},
{
{ 0xeed7521e,0x3f244d2a,0x432e9615,0x8e3a9028,0x2e9c16d4,0xe164ba77,0x47eb98d8,0x3bc187fa },
{ 0x6d63727f,0x031408d3,0xd7c7b533,0x6a379aef,0xccaee24b,0xa9e18fc5,0x4f8fbed3,0x332f3591 },
{ 0xea86c20c,0x6d470115,0x6c46d125,0x998ab7cb,0x3a660188,0xd77832b5,0x906fba03,0x450d81ce },
},
},
{
{
{ 0x1cae743f,0xd074d896,0xee1c63ed,0xf86d18f5,0xe7f4ed29,0x97bdc55b,0x663ab108,0x4cbad279 },
{ 0xa6205275,0x6e7bb6a1,0x413c8e83,0xaa4f21d7,0xe88f5cb2,0x6f56d155,0xa6345be1,0x2de25d4b },
{ 0xa0d71fcd,0x80d19024,0xfb288af8,0xc525c20a,0x5f3a6419,0xb1a3974b,0xe2007233,0x7d7fbcef },
},
{
{ 0xf3c29094,0xcd7c5dc5,0x2a9105ab,0xc781a29a,0x421c3058,0x80c61d36,0xdcd8d4d7,0x4f9cd196 },
{ 0x266b2801,0xfaef1e6a,0xd5739f16,0x866c68c4,0x1b03762c,0xf68a2fbc,0x87b75a8d,0x5975435e },
{ 0x6a7b3768,0x199297d8,0x1ad17a63,0xd0d05824,0x5c1c0c17,0xba029cad,0x387a0307,0x7ccdd084 },
},
{
{ 0x6760cc93,0x9b0c8418,0x1ab32a99,0xcdae007a,0x620bda18,0xa88dec86,0x8190ca44,0x3593ca84 },
{ 0x6d260417,0xdca6422c,0x948240bd,0xae153d50,0xfb68c677,0xa9c0c1b4,0x61d0cf53,0x428bd0ed },
{ 0x5e849aa7,0x9213189a,0x65d8facd,0xd4d8c335,0x53fdbbd1,0x8c52545b,0xda2d63e6,0x27398308 },
},
{
{ 0x0a702453,0xb9a10e4c,0xd57d1bde,0x0fa25866,0xcd27daf7,0xffb9d9b5,0x492c33fd,0x572c2945 },
{ 0x435ed413,0x42c38d28,0x3278ccc9,0xbd50f360,0x79da03ef,0xbb07ab1a,0xbe8c3355,0x269597ae },
{ 0xd6cd30be,0xc77fc745,0xe3baaefb,0xe4dfe8d3,0xaa5dda0c,0xa22c8830,0xc05bca80,0x7f985498 },
},
{
{ 0x0fbf6363,0xd3561552,0xcf4dfba6,0x08045a45,0x873fa0c2,0xeec24fbc,0xd69b12e7,0x30f2653c },
{ 0x9f0be117,0x3849ce88,0x7b54a288,0x8005ad1b,0x23fc921c,0x3da3c39f,0x0a31f304,0x76c2ec47 },
{ 0xaac10c85,0x8a08c938,0xdb276bcb,0x46179b60,0x0e6fac70,0xa920c01e,0x596473da,0x2f1273f1 },
},
{
{ 0x55a70bc0,0x30488bd7,0xf1d442e7,0x06d6b5a4,0xbc596162,0xead1a69e,0xedc5f784,0x38ac1997 },
{ 0x8ae01e11,0x4739fc7c,0x4a6aab9f,0xfd527490,0x87728f2e,0x41d98a82,0xd85b69f2,0x5d9e572a },
{ 0xa751b13b,0x0666b517,0x7e9b858c,0x747d0686,0x454dde49,0xacacc011,0xbfe9e69c,0x22dfcd9c },
},
{
{ 0x103be0a1,0x56ec59b4,0xd259f969,0x2ee3baec,0x13f5cd32,0x797cb294,0x24cde472,0x0fe98778 },
{ 0xc30d0cd9,0x8ddbd2e0,0xacbb4333,0xad8e665f,0x322a961f,0x8f6b258c,0x5448c1c7,0x6b2916c0 },
{ 0x0aba913b,0x7edb34d1,0x2e6dac0e,0x4ea3cd82,0x6578f815,0x66083dff,0x7ff00a17,0x4c303f30 },
},
{
{ 0x0dd94500,0x29fc0358,0x6fbbec93,0xecd27aa4,0xc2e2a7f8,0x130a155f,0xb706a1d5,0x416b151a },
{ 0x17b28c85,0xd30a3bd6,0x39773bea,0xc5d377b7,0x1e6a5cbf,0xc6c6e78c,0x8b2ab7c4,0x0d61b8f7 },
{ 0xe9c136b0,0x56a8d7ef,0x58e44b20,0xbd07e5cd,0x1b57e0ab,0xafe62fda,0x4277e8d2,0x191a2af7 },
},
},
{
{
{ 0x4f460efb,0x9fe62b43,0xa63607d6,0xded303d4,0xb7a0da24,0xf052210e,0x00545b93,0x237e7dbe },
{ 0xc53c1431,0xce16f74b,0x2072edde,0x2b9725ce,0xb5b23ee7,0xb8b9c36f,0x0b5cc908,0x7e2e0e45 },
{ 0x6701b430,0x013575ed,0x9f0bfd10,0x231094e6,0x83e47f22,0x75320f15,0xb11155e3,0x71afa699 },
},
{
{ 0x473b50d6,0xea423c1c,0x3b38ef10,0x51e87a1f,0xb2c9be95,0x9b84bf5f,0x78f89a1c,0x00731fbc },
{ 0x3953b61d,0x65ce6f9b,0xafa141e6,0xc65839ea,0xa9f759fe,0x0f435ffd,0xc2b1c28e,0x021142e9 },
{ 0x48f81880,0xe430c718,0x5ecec119,0xbf960c22,0x6bba15e3,0xb6dae083,0x47e15808,0x4c4d6f33 },
},
{
{ 0x988f1970,0x2f0cddfc,0xb0b9f51b,0x6b916227,0x779176be,0x6ec7b6c4,0xa88f9fa8,0x38bf9500 },
{ 0xc17d1fc9,0x18f7eccf,0x51403c14,0x6c75f5a6,0xf7ee0cdf,0xdbde712b,0xa7e47a22,0x193fddaa },
{ 0x37e8876f,0x1fd2c93c,0x18d1462c,0xa2f61e5a,0x39241276,0x5080f582,0xbf0d4969,0x6a6fb99e },
},
{
{ 0xb6e423c6,0xeeb122b5,0xf286ff8e,0x939d7010,0x1dcf5d8c,0x90a92a83,0x42c5eb10,0x136fda9f },
{ 0x560855eb,0x6a46c1bb,0xf893f09d,0x2416bb38,0x8f71acc1,0xd71d1137,0xa31896ea,0x75f76914 },
{ 0xa305bdd1,0xf94cdfb1,0x9ff82c08,0x0f364b9d,0xc3bb588a,0x2a87d8a5,0x0be8dcba,0x02218351 },
},
{
{ 0x43307a7f,0x9d5a7101,0xc47da45f,0xb063de9e,0xbe927ad3,0x22bbfe52,0xfd40426c,0x1387c441 },
{ 0x5ead2d14,0x4af76638,0xca7c5830,0xa08ed880,0x10211e3d,0x0d13a6e6,0x7b806c03,0x6a071ce1 },
{ 0x87978af8,0xb5d3c3d1,0x7f0e4413,0x722b5a3d,0xbb477ca0,0x0d7b4848,0xaf1edc92,0x3171b26a },
},
{
{ 0xb28a47d1,0xa60db7d8,0x1770a4f1,0xa6bf14d6,0x53ddbd58,0xd4a1f893,0x344243e9,0x6c514a63 },
{ 0x97564ca8,0xa92f3190,0x2275e119,0xff7bb84c,0xa4875150,0x4f55fe37,0x3cf0835a,0x221fd487 },
{ 0x3a156341,0x2322204f,0xba0a032d,0xfb73e0e9,0x410f030e,0xfce0dd4c,0xfb924aaa,0x48daa596 },
},
{
{ 0xc84c9793,0x14f61d5d,0xef418206,0x9941f9e3,0x346277ac,0xcdf5b88f,0x0e8a79a9,0x58c837fa },
{ 0x5ca59cc7,0x6eca8e66,0x2e38aca0,0xa847254b,0xd21e17ce,0x31afc708,0xcad84af7,0x676dd6fc },
{ 0x96fc9058,0x0cf96885,0x7b56a01b,0x1ddcbbf3,0x4935d66a,0xdcc2e77d,0xc6a57f0a,0x1c4f73f2 },
},
{
{ 0xfc7c3484,0xb36e706e,0xc3c1cf61,0x73dfc9b4,0x781cc7e5,0xeb1d79c9,0x7daf675c,0x70459adb },
{ 0x305fa0bb,0x0e7a4fbd,0x54c663ad,0x829d4ce0,0x2fe33848,0xf421c383,0x1bf64c42,0x795ac80d },
{ 0x91b42bb3,0x1b91db49,0x4b02dcca,0x57269623,0x1f8c78dc,0x9fdf9ee5,0x8ce21fd3,0x5fe16284 },
},
},
{
{
{ 0x5d7cb208,0x2879852d,0x687df2e7,0xb8dedd70,0x21687891,0xdc0bffab,0x677daa35,0x2b44c043 },
{ 0xe194961a,0x4e59214f,0x0d71cd4f,0x49be7dc7,0x3b50f22d,0x9300cfd2,0xfc917232,0x4789d446 },
{ 0x074eb78e,0x1a1c87ab,0x99daf467,0xfac6d18e,0x484f9067,0x3eacbbcd,0x2bb9a4e4,0x60c52eef },
},
{
{ 0x7cae6d11,0x702bc5c2,0x54a48cab,0x44c7699b,0xba492eb2,0xefbc4056,0xd9b6676d,0x70d77248 },
{ 0x3bfd8bf1,0x0b5d89bc,0xc9f3551a,0xb06b9237,0xd53028f5,0x0e4c16b0,0x2ccfcaab,0x10bc9c31 },
{ 0x3ec2a05b,0xaa8ae84b,0xed1781e0,0x98699ef4,0x708e85d1,0x794513e4,0xa976f413,0x63755bd3 },
},
{
{ 0x97f1acb7,0x3dc71018,0xc165bbd8,0x5dda7d5e,0x0fa1020f,0x508e5b9c,0x37c52a56,0x27637517 },
{ 0x2ad10853,0xb55fa03e,0x9ee63569,0x356f7590,0xbe69b890,0x9ff9f1fd,0x8bc16f84,0x0d8cc1c4 },
{ 0x6eb419a9,0x029402d3,0x77b460a5,0xf0b44e7e,0xd43c4956,0xcfa86230,0x7ad166e7,0x70c2dd8a },
},
{
{ 0xb8ed7e13,0x91d4967d,0xd776817a,0x74252f0a,0x0d852564,0xe40982e0,0x16a53ce5,0x32b86138 },
{ 0x9f6fec0e,0x65619450,0x46c6518d,0xee2e7ea9,0x67e09b5c,0x9733c1f3,0x63948495,0x2e0fac63 },
{ 0xe448cd64,0x79e7f7be,0x087886d0,0x6ac83a67,0xa0e4db2e,0xf89fd4d9,0x735a4f41,0x4179215c },
},
{
{ 0x286bcd34,0xe4ae33b9,0x559dd6dc,0xb7ef7eb6,0xb3d38e1f,0x278b141f,0x2241c286,0x31fa8566 },
{ 0xd7dced2a,0x8c7094e7,0x47d39c70,0x97fb8ac3,0xa906d902,0xe13be033,0x0cd99d76,0x700344a3 },
{ 0x2e3622f4,0xaf826c42,0x9833502d,0xc1202987,0x2b389123,0x9bc1b7e1,0xa9952489,0x24bb2312 },
},
{
{ 0xf5f85c6b,0x41f80c2a,0x04fa6794,0x687284c3,0xa3ba1bad,0x8945df99,0xffeb5d16,0x0d1d2af9 },
{ 0x32de67c3,0xb1a8ed17,0x461b4948,0x3cb49418,0x76cfbcd2,0x8ebd4343,0x1e188008,0x0fee3e87 },
{ 0x32621edf,0xa9da8aa1,0x59226579,0x30b822a1,0xa79ac193,0x4004197b,0x18531d76,0x16acd797 },
},
{
{ 0x7887b6ad,0xc959c6c5,0x5f90feba,0x94e19ead,0xa342f504,0x16e24e62,0x18161700,0x164ed34b },
{ 0x2d9b1d3d,0x72df72af,0xa432245a,0x63462a36,0x16b39637,0x3ecea079,0xb9302309,0x123e0ef6 },
{ 0x192fe69a,0x487ed94c,0x3a911513,0x61ae2cea,0xb9a4de27,0x877bf6d3,0x1073f3eb,0x78da0fc6 },
},
{
{ 0x680c3a94,0xa29f80f1,0x1ae9e7e6,0x71f77e15,0x48017973,0x1100f158,0x16b38ddd,0x054aa4b3 },
{ 0xe52bc66a,0x5bf15d28,0x70f01a8e,0x2c47e318,0x06c28bdd,0x2419afbc,0x256b173a,0x2d25deeb },
{ 0x19267cb8,0xdfc8468d,0x66e54daf,0x0b28789c,0x666eec17,0x2aeb1d2a,0xab7da760,0x134610a6 },
},
},
{
{
{ 0x77d1f515,0xcd2a65e7,0x8faa60f1,0x54899187,0xdabc06e5,0xb1b73bbc,0xa97cc9fb,0x654878cb },
{ 0x8df6b0fe,0x51138ec7,0xe575f51b,0x5397da89,0x717af1b9,0x09207a1d,0x2b20d650,0x2102fdba },
{ 0x055ce6a1,0x969ee405,0x1251ad29,0x36bca768,0xaa7da415,0x3a1af517,0x29ecb2ba,0x0ad725db },
},
{
{ 0x9b056f85,0xfec7bc0c,0xe7f5ffd7,0x537d5268,0x4312aefa,0x77afc662,0x02399fd9,0x4f675f53 },
{ 0x834e2457,0xdc4267b1,0x70ce1bc5,0xb67544b5,0xf7d15ed7,0x1af07a0b,0x71a03650,0x4aefcffb },
{ 0x0415171e,0xc32d3636,0x8998483b,0xcd2bef11,0xd0945110,0x870a6ead,0xa2a86561,0x0bccbb72 },
},
{
{ 0x50fe1296,0x186d5e4c,0xfee89f7e,0xe0397b82,0x507031b0,0x3bc7f6c5,0x108f37c2,0x6678fd69 },
{ 0xeab1a9c8,0x185e962f,0x65147dcd,0x86e7e635,0xbb5b6df2,0xb092e031,0x59d6b73e,0x4024f0ab },
{ 0x636863c2,0x1586fa31,0x572d33f2,0x07f68c48,0x789eaefc,0x4f73cc9f,0x8ead4701,0x2d42e210 },
},
{
{ 0x0f537593,0x21717b0d,0x131e064c,0x914e690b,0x752ae09f,0x1bb687ae,0x9b423c6e,0x420bf3a7 },
{ 0x94dfd29b,0x97f51315,0x313f4c6a,0x6155985d,0x08455010,0xeba13f07,0xb8d2d322,0x676b2608 },
{ 0x1c5b2b47,0x8138ba65,0x311b1b80,0x8671b6ec,0xbc3135b0,0x7bff0cb1,0x9c0cf1e0,0x745d2ffa },
},
{
{ 0x21d34e6a,0x6036df57,0x997bb3d0,0xb1db8827,0xc8756afa,0xd3c209c3,0x4c1dc839,0x06e15be5 },
{ 0x2bc9c8bd,0xbf525a1e,0x26479d81,0xea5b2608,0xdf0155db,0xd511c70e,0x960cf5d0,0x1ae23ceb },
{ 0x1932994a,0x5b725d87,0xceb1dab0,0x32351cb5,0xdab7ca05,0x7dc41549,0x278ec1f7,0x58ded861 },
},
{
{ 0xb6c2c9a8,0x2dfb5ba8,0xf52c598c,0x48eeef8e,0xf12d1573,0x33809107,0x531d5bd8,0x08ba696b },
{ 0xf266c55c,0xd8173793,0xcc454e49,0xc8c976c5,0xbc26c3a8,0x5ce382f8,0x5485f6f9,0x2ff39de8 },
{ 0xc3efc57a,0x77ed3eee,0xd4ff4811,0x04e05517,0xf1a671cb,0xea3d7a3f,0x947cfe54,0x120633b4 },
},
{
{ 0x4912100a,0x82bd3147,0x7e6fbe06,0xde237b6d,0x11ea79c6,0xe11e7619,0xcb393bde,0x07433be3 },
{ 0x91610042,0x0b949878,0xecebfae8,0x4ee7b13c,0x94f0a4c0,0x70be7395,0xb4d59185,0x35d30a99 },
{ 0x5ce997f4,0xff7944c0,0xb05c51a3,0x575d3de4,0x5a76847c,0x583381fd,0x7af6da9f,0x2d873ede },
},
{
{ 0x4e5df981,0xaa6202e1,0x5015e1f5,0xa20d5917,0xbae21d6c,0x18a275d3,0x01600253,0x0543618a },
{ 0x43373409,0x157a3164,0xf4aa81d9,0xfab8b7ee,0xf5a64806,0xb093fee6,0x707fa7b6,0x2e773654 },
{ 0x974c23c1,0x0deabdf4,0x9dce4693,0xaa6f0a25,0xa29aba2c,0x04202cb8,0x2d07960d,0x4b144336 },
},
},
{
{
{ 0x1c529ccb,0x967c54e9,0x64c635fb,0x30f62692,0x78121965,0x2747aff4,0xeaf66f5c,0x17038418 },
{ 0xb66e1f7a,0xccc4b7c7,0xf50c2f7e,0x44157e25,0x713eaf1c,0x3ef06dfc,0x52da63f7,0x582f4467 },
{ 0x20324ce4,0xc6317bd3,0xa4488bc4,0xa81042e8,0x4e5a1364,0xb21ef18b,0xcda28dc9,0x0c2a1c4b },
},
{
{ 0x69bd6945,0xedc48148,0xbe1c8d22,0x0d6d907d,0xd55cc5ab,0xc63bd212,0xa314dc83,0x5a6a9b30 },
{ 0x6f1f0447,0xd24dc7d0,0xdb87c059,0xb2269e3e,0xfbb2d28f,0xd15b0272,0xc6f64877,0x7c558bd1 },
{ 0xd396463d,0xd0ec1524,0xc35a24f0,0x12bb628a,0x1cbc5fa4,0xa50c3a79,0x0afbafc3,0x0404a5ca },
},
{
{ 0x2a416fd1,0x62bc9e1b,0xe350598b,0xb5c6f728,0x3d5d6967,0x04343fd8,0xe7f8ee98,0x39527516 },
{ 0x0aa743d6,0x8c1f4007,0x5b265ee8,0xccbad0cb,0x668fd2de,0x574b046b,0xcadd9633,0x46395bfd },
{ 0x1a5d9a9c,0x117fdb2d,0xd1005c2a,0x9c7745bc,0x54d56fea,0xefd4bef1,0xe822d016,0x76579a29 },
},
{
{ 0x52b434f2,0x333cb513,0x93de80e1,0xd8322849,0x750d35ce,0xb5512887,0x2a2777c1,0x02c514bb },
{ 0x49c02a17,0x45b68e7e,0xbca9a37f,0x23cd51a2,0xec224c1b,0x3ed65f11,0x9e05bdb1,0x43a384dc },
{ 0x8bf1b645,0x684bd5da,0xf6b54b53,0xfb8bd37e,0xa9b0d253,0x313916d7,0x61548059,0x11609209 },
},
{
{ 0x369b4dcd,0x7a385616,0x655c3563,0x75c02ca7,0xd4f18021,0x7dc21bf9,0x91e6e042,0x2f637d74 },
{ 0x29dacfaa,0xb44d1669,0x8413598f,0xda529f4c,0x453d5559,0xe9ef63ca,0xc5698e0b,0x351e125b },
{ 0x1af67bbe,0xd4b49b46,0xc8ab8961,0xd603037a,0xf9a699fb,0x71dee19f,0xe7ce2a9a,0x7f182d06 },
},
{
{ 0x8e217522,0x09454b72,0xd484b8d8,0xaa58e8f4,0x7f46903c,0xd358254d,0x241c5217,0x44acc043 },
{ 0xab0168ec,0x7a7c8e64,0x15edc543,0xcb5a4a55,0x47cd0eda,0x095519d3,0x343e93b0,0x67d4ac8c },
{ 0x4f7a5777,0x1c7d6bbb,0x918313e1,0x8b35fed4,0xc96b4684,0x4adca1c6,0x12ad71bd,0x556d1c83 },
},
{
{ 0xb11be821,0x81f06756,0x10a3f3dd,0x0faff823,0x6a99465d,0xf8b2d055,0xcc8c7f05,0x097abe38 },
{ 0x0c8d3982,0x17ef40e3,0x15a3fa34,0x31f7073e,0x0773646e,0x4f21f3cb,0x1d824eff,0x746c6c6d },
{ 0x7ea52da4,0x0c49c987,0x9bdc1d43,0x4c436955,0xf7ccebd2,0x022c3809,0x4bee84bd,0x577e14a3 },
},
{
{ 0xbd4dd72b,0x94fecebe,0x060f2211,0xf46a4fda,0xc0c8d1ff,0x124a5977,0xfb009295,0x705304b8 },
{ 0x61a73b0a,0xf0e268ac,0x3791a5f5,0xf2fafa10,0x6b6d00e9,0xc1e13e82,0x6fd78f42,0x60fa7ee9 },
{ 0x4d296ec6,0xb63d1d35,0x5fad31d8,0xf3c3053e,0xb4bd42ec,0x670b958c,0xa16353fd,0x21398e0c },
},
},
{
{
{ 0xb4b75601,0x2798aaf9,0x5c8dad72,0x5eac7213,0x61b7a023,0xd2ceaa61,0xe98f7d4e,0x1bbfb284 },
{ 0x382b33f3,0x89f5058a,0xad48c0b4,0x5ae2ba0b,0xa53db36e,0x8f93b503,0x95a232e6,0x5aa3ed9d },
{ 0xc7d96561,0x656777e9,0x72c78036,0xcb2b1254,0xd9506eee,0x65053299,0x5e8957cc,0x4a07e14e },
},
{
{ 0xc477a49b,0x240b58cd,0x6447f017,0xfd38dade,0xa7c86aad,0x19928d32,0x84afa081,0x50af7aed },
{ 0x980df999,0x4ee412cb,0x3c6ec771,0xa315d76f,0x925c77fd,0xbba5edde,0x1d313402,0x3f0bac39 },
{ 0x15f65be5,0x6e4fde01,0x216109b2,0x29982621,0x0badd6d9,0x78020581,0xbaebd006,0x1921a316 },
},
{
{ 0xd9f3c18b,0xd75aad9a,0x60b1c19c,0x566a0eef,0x255c0ed9,0x3e9a0bac,0xa062c7f5,0x7b049dec },
{ 0xdfb870fc,0x89422f7e,0x4f76b3bd,0x2c296beb,0x36c24df7,0x0738f1d4,0xe273aeb0,0x6458df41 },
{ 0x35444483,0xdccbe37a,0x0fedbe93,0x75887933,0x12c5dd87,0x786004c3,0xc2950e64,0x6093dccb },
},
{
{ 0x6084034b,0x6bdeeebe,0x780fb854,0x3199c2b6,0xb62d0695,0x973376ab,0x8b647d90,0x6e3180c9 },
{ 0x85e0706d,0x1ff39a85,0xb3e73933,0x36d0a5d8,0x718f453b,0x43b9f2e1,0x4827a97c,0x57d1ea08 },
{ 0xa128b071,0xee7ab6e7,0x93a88baa,0xa4c1596d,0xb2216130,0xf7b4de82,0xdd97bd18,0x363e999d },
},
{
{ 0xe24baec6,0x2f1848dc,0xbabcaf60,0x769b7255,0x3cefe931,0x90cb3c6e,0xc6f9b355,0x231f979b },
{ 0x35ee1fc4,0x96a843c1,0x08e4c8cf,0x976eb355,0xb58cd330,0xb42f6801,0x693a052b,0x48ee9b78 },
{ 0xcc2af3c6,0x5c31de4b,0xfe208d1f,0xb04bb030,0xc14fb466,0xb78d7009,0x08792413,0x079bfa9b },
},
{
{ 0xa2d54245,0xf3c9ed80,0x77f63952,0x0aa08b78,0xd1085475,0xd76dac63,0x9470636b,0x1ef4fb15 },
{ 0xda300df4,0xe3903a51,0x3da95ab0,0x84396423,0x0b356480,0xed3cf12d,0x84817194,0x038c77f6 },
{ 0x5b167bec,0x854e5ee6,0x96d0cdc2,0x59590a42,0x98102199,0x72b2df34,0x4a0bff56,0x575ee92a },
},
{
{ 0x0aa4d801,0x5d46bc45,0xa533b9d8,0xc3af1227,0x2b8906c2,0x389e3b26,0x382f581b,0x200a1e7e },
{ 0x8a182fcf,0xd4c08090,0x99489dbd,0x30e170c2,0x52f733de,0x05babd57,0x2cd3fd00,0x43d4e711 },
{ 0xeaf93ac5,0x518db967,0x056652c0,0x71bc989b,0x567197f5,0xfe2b85d9,0x651e4e38,0x050eca52 },
},
{
{ 0x60e668ea,0x97ac3976,0x153ab497,0x9b19bbfe,0x34eca79f,0x4cb179b5,0xa131ae57,0x6151c09f },
{ 0x453f0c9c,0xc3431ade,0xff703b9b,0xe9f5045e,0xed847b3d,0xfcd97ac9,0x1c58f4c6,0x4b0ee6c2 },
{ 0xfdf05d96,0x3af55c0d,0x2ab4ee7a,0xdd262ee0,0x12171709,0x11b2bb87,0x800f030b,0x1fef24fa },
},
},
{
{
{ 0x30976b86,0x22d2aff5,0xc2d24604,0x8d90b806,0x4de5bae5,0xdca1896c,0xc8340c17,0x28005fe6 },
{ 0x1aa73196,0x37d653fb,0x3fd76418,0x0f949530,0xfb3a17b2,0xad200b09,0x2fc8613e,0x544d4929 },
{ 0x34528688,0x6aefba9f,0x25107da1,0x5c1bff94,0x66d94b36,0xf75bbbcd,0x0f316dfa,0x72e47293 },
},
{
{ 0xd32a7627,0x07f3f635,0x5f6566f0,0x7aaa4d86,0x28d04450,0x3c85e797,0x0fe06438,0x1fee7f00 },
{ 0x9781084f,0x2695208c,0x23450ee1,0xb1502a0b,0x03efde02,0xfd9daea6,0x2733a34c,0x5a9d2e8c },
{ 0x03dbf7e5,0x765305da,0x1434cdbd,0xa4daf249,0xd24a88ec,0x7b4ad5cd,0xee040543,0x00f94051 },
},
{
{ 0x07af9753,0xd7ef93bb,0x3db766a7,0x583ed0cf,0x6e0b1ec5,0xce6998bf,0x5dd40452,0x47b7ffd2 },
{ 0xc3d330b2,0x8d356b23,0xb0471b06,0xf21c8b9b,0x6e42b83c,0xb36c316c,0x8beab10d,0x07d79c7e },
{ 0xbc08dd12,0x87fbfb9c,0xe1eec29b,0x8a066b3a,0xdb1fc1bf,0x0d57242b,0x5ea64bb6,0x1c3520a3 },
},
{
{ 0x216bc059,0xcda86f40,0x12bcd87e,0x1fbb231d,0x17c70990,0xb4956a9e,0x66d12e55,0x38750c3b },
{ 0xbccba34a,0x80d253a6,0x3838219b,0x3e61c3a1,0x9882e396,0x90c3b601,0x5d0ee66f,0x1c3d0577 },
{ 0x9422e51a,0x692ef140,0x2b5df671,0xcbc0c73c,0x744ce029,0x21014fe7,0xd330487c,0x0621e2c7 },
},
{
{ 0xb0dbf0f3,0xb7ae1796,0xe17ce196,0x54dfafb9,0xe9aaa3b4,0x25923071,0xa1002e9d,0x5d8e589c },
{ 0x8259838d,0xaf9860cc,0xc69f9adc,0x90ea48c1,0x65581e30,0x65264837,0x7bd3a5bc,0x0007d609 },
{ 0x0842a94b,0xc0bf1d95,0x588f2e3e,0xb2d3c363,0xbb51e2ef,0x0a961438,0x3c1cbf86,0x1583d778 },
},
{
{ 0xcc9d28c7,0x90034704,0xf72cc58f,0x1d1b679e,0xbe5b8726,0x16e12b5f,0x83c5580a,0x4958064e },
{ 0x5da27ae1,0xeceea2ef,0x55670174,0x597c3a14,0x6609167a,0xc9a62a12,0x81ed8f70,0x252a5f2e },
{ 0x5066e80d,0x0d289426,0x307c8c6b,0xfcc3f785,0x0c1112fd,0x1b53da78,0xd843b388,0x079c170b },
},
{
{ 0xc0d5d056,0xcdd6cd50,0xbb03573b,0x9af7686d,0xf3c3ef48,0x3ca6723f,0x317b8acc,0x6768c0d7 },
{ 0x64fa6fff,0x0506ece4,0x6205e523,0xbee3431e,0x51b8ea42,0x35794224,0x4ac9fb00,0x6dec05e3 },
{ 0xf155c1b3,0x94b625e5,0x997b7b91,0x417bf3a7,0x6d6b2600,0xc22cbddc,0xddcd52f4,0x51445e14 },
},
{
{ 0x2bbea455,0x893147ab,0x92079129,0x8c53a24f,0xbe30f7a7,0x4b49f948,0x6e4fd43d,0x12e99008 },
{ 0x3b144951,0x57502b4b,0x444bbcb3,0x8e67ff6b,0x166385db,0xb8bd6927,0xe39295c8,0x13186f31 },
{ 0x7fdfbb2e,0xf10c96b3,0x121ceaf9,0x9f9a935e,0x3a5b983f,0xdf1136c4,0x5d3e99af,0x77b2e3f0 },
},
},
{
{
{ 0x12ddb0a4,0xd598639c,0xc024866b,0xa5d19f30,0x58fce460,0xd17c2f03,0x2e095e8a,0x07a19515 },
{ 0x9c2ec4de,0x296fa9c5,0x4f84f3cb,0xbc8b61bf,0x17a8f908,0x1c7706d9,0x7ad3255d,0x63b795fc },
{ 0x389e5fc8,0xa8368f02,0xcf8de43b,0x90433b02,0xc5412643,0xafa1fd5d,0x032f0137,0x3e8fe83d },
},
{
{ 0xe8efd13c,0x08704c8d,0x33e03731,0xdfc51a8e,0x1260cde3,0xa59d5da5,0xa6258c86,0x22d60899 },
{ 0x0570a294,0x2f8b15b9,0x67084549,0x94f24270,0x61bbfd84,0xde1c5ae1,0x7fac4007,0x75ba3b79 },
{ 0x70cdd196,0x6239dbc0,0x6c7d8a9a,0x60fe8a8b,0xeb401260,0xb38847bc,0x87779e5e,0x0904d07b },
},
{
{ 0x48f940b9,0xf4322d66,0xbd2d0c39,0x06952f0c,0xa081f931,0x167697ad,0xbaf72a6c,0x6240aace },
{ 0xddba919c,0xb4ce1fd4,0xc74c8daa,0xcf31db3e,0xad86cc51,0x2c63cc63,0xbc1dde07,0x43e2143f },
{ 0x5ba295a0,0xf834749c,0xca37d25a,0xd6947c5b,0xe7c9316a,0x66f13ba7,0x8db40cac,0x56bdaf23 },
},
{
{ 0xc19d3bb2,0x1310d36c,0x622386b9,0x062a6bb7,0xd7a14f5c,0x7c9b8591,0x7e1e5754,0x03aa3150 },
{ 0xf53533eb,0x362ab9e3,0x6eb93d40,0x338568d5,0x1d5a5572,0x9e0e1452,0x83741318,0x1d24a86d },
{ 0xffd4ce1f,0xf4ec7648,0x54ac8c1c,0xe045eaf0,0x1d09357c,0x88d22582,0x9aeb4859,0x43b261dc },
},
{
{ 0x6c951364,0x19513d8b,0x000bf47b,0x94fe7126,0xd54f9567,0x028d10dd,0x42940964,0x02b4d5e2 },
{ 0x88bb79bb,0xe55b1e19,0xc17a359d,0xa09ed07d,0x603dea33,0xb02c2ee2,0x5b276bc2,0x326055cf },
{ 0x28d18df2,0xb4a155cb,0x186ce508,0xeacc4646,0x6c824389,0xc49cf493,0xae5d3410,0x27a6c809 },
},
{
{ 0xc43d6954,0xcd2c270a,0x6a66cab2,0xdd4a3e57,0x69d7036c,0x79fa5924,0x3d8c2599,0x22150360 },
{ 0x1f0db188,0x8ba6ebcd,0x675a5be8,0x37d3d73a,0x15f5585a,0xf22edfa3,0xff60a17e,0x2cb67174 },
{ 0x390be1d0,0x59eecdf9,0x728ce3f1,0xa9422044,0x7a94f0f4,0x82891c66,0x3890f436,0x7b1df4b7 },
},
{
{ 0x07f8f58c,0x5f2e2218,0xd49409d4,0xe3555c9f,0x1fb6a630,0xb2aaa88d,0xd352e03d,0x68698245 },
{ 0xb3b2a224,0xe492f2e0,0x2b551160,0x7c6c9e06,0x0d7f7b0e,0x15eb8fe2,0x58fc5992,0x61fcef26 },
{ 0x2a18187a,0xdbb15d85,0x86ddacd7,0xf3e4aad3,0x0ff6c482,0x44bae281,0x3daf01cf,0x46cf4c47 },
},
{
{ 0xf1498140,0x213c6ea7,0x392b4854,0x7c1e7ef8,0x5629ceba,0x2488c38c,0x0d8cc5bb,0x1065aae5 },
{ 0x9ec4e5f9,0x426525ed,0x16903303,0x0e5eda01,0xcbe5cadc,0x72b1a7f2,0x14eb5f40,0x29387bcd },
{ 0xdf200d57,0x1c2c4525,0xbfca674a,0x5c3b2dd6,0xe1834030,0x0a07e7b1,0x4f1ce716,0x69a198e6 },
},
},
{
{
{ 0xdcc5caed,0xe1014434,0x3c84fb33,0x47ed5d96,0xed86a0e7,0x70019576,0xd267f9e4,0x25b2697b },
{ 0xd91a78bc,0x9062b2e0,0xc8509667,0x47c9889c,0x405070b8,0x9df54a66,0x2493a1bf,0x7369e6a9 },
{ 0x13986864,0x9d673ffb,0x415dc7b8,0x3ca5fbd9,0xdf273b5e,0xe04ecc3b,0xb54e4cd2,0x1420683d },
},
{
{ 0xc1cc5ad0,0x34eebb6f,0x9646ac8b,0x6a1b0ce9,0xa66bde53,0xd3b0da49,0x61d081c1,0x31e83b41 },
{ 0x249dd197,0xb478bd1e,0x5e58c102,0x620c3500,0xccbaac5c,0xfb02d32f,0xf508a72d,0x60b63beb },
{ 0x9e062b4f,0x97e8c712,0x29320ad8,0x49e48f4f,0x6f18683f,0x5bece14b,0x2d550317,0x55cf1eb6 },
},
{
{ 0x7df58c52,0x3076b5e3,0xe799cc36,0xd73ab9dd,0x4913ee20,0xbd831ce3,0x62ba0133,0x1a56fbaa },
{ 0x65c23d58,0x58791010,0x5094819c,0x8b9d086d,0x12c55fa7,0xe2402fa9,0x570891d4,0x669a6564 },
{ 0x5c9dc9ec,0x943e6b50,0xa77c371a,0x302557bb,0x41347651,0x9873ae56,0x99c58a5c,0x13c48367 },
},
{
{ 0x5d8bd080,0xc4dcfb6a,0x571a4842,0xdeebc4ec,0xb8e55365,0xd4b2e883,0xc8e5b827,0x50bdc87d },
{ 0x5ab3e1b9,0x423a5d46,0xc7f13f61,0xfc13c187,0xecb5b9b6,0x19f83664,0xa637b607,0x66f80c93 },
{ 0x6edfe111,0x606d3783,0xf011abd9,0x32353e15,0x25b73b96,0x64b03ac3,0x725fd5ae,0x1dd56444 },
},
{
{ 0x08bac89a,0xc297e600,0xeae1c3e0,0x7d4cea11,0x9fe7977c,0xf3e38be1,0x63a305cd,0x3a3a450f },
{ 0x3362127d,0x8fa47ff8,0x71cd7c15,0xbc9f6ac4,0x49220c8b,0x6e714543,0x219f732e,0x0e645912 },
{ 0xd8394627,0x078f2f31,0xde94a510,0x389d3183,0x17996f80,0xd1e36c6d,0x93a9a87b,0x318c8d93 },
},
{
{ 0xab1dd398,0x5d669e29,0x342d9e3b,0xfc921658,0xf35973cd,0x55851dfd,0x25950af6,0x509a41c3 },
{ 0x2afffe19,0xf2745d03,0x7f24db66,0x0c9f3c49,0xba8598ef,0xbc98d3e3,0x9a1d5314,0x224c7c67 },
{ 0xa6f925e9,0xbdc06edc,0x641b1f33,0x793ef3f4,0x9d833e89,0x82ec1280,0x28a11389,0x05bff023 },
},
{
{ 0x0dc512e4,0x6881a0dd,0x44a5fafe,0x4fe70dc8,0x8f4a5240,0x1f748e6b,0xee01a3ea,0x576277cd },
{ 0x23cae00b,0x36321370,0xd1accf59,0x544acf0a,0xd21a1c88,0x96741049,0xfa2a44a7,0x780b8cc3 },
{ 0x234f305f,0x1ef38abc,0x1405de08,0x9a577fbd,0x34e62a0d,0x5e82a514,0x6271b7a1,0x5ff41872 },
},
{
{ 0x13b69540,0xe5db47e8,0x432610e1,0xf35d2a3b,0x38781276,0xac1f26e9,0xa0a0cb69,0x29d4db8c },
{ 0x1789db9d,0x398e080c,0xf3e778f5,0xa7602025,0x06bd035d,0xfa98894c,0x25a966be,0x106a03dc },
{ 0x333353d0,0xd9ad0aaf,0xacd309e5,0x38669da5,0xc888f7f0,0x3c57658a,0x052cbefa,0x4ab38a51 },
},
},
{
{
{ 0x5fddc09c,0xd6cfd1ef,0xf7575dce,0xe82b3efd,0x201634c2,0x25d56b5d,0x04ed2b9b,0x3041c6bb },
{ 0x6768d593,0xda7c2b25,0x4422ca13,0x98c1c057,0xca0ace1d,0xf1a80bd5,0xc088a690,0x29cdd1ad },
{ 0xd956e148,0x0ff2f2f9,0x9f356b2e,0xade79775,0x5f6c025c,0x1a4698bb,0x14049a7b,0x104bbd68 },
},
{
{ 0xd67ff163,0xa95d9a5f,0x4cc75681,0xe92be69d,0xde20f257,0xb7f8024c,0xfb072df5,0x204f2a20 },
{ 0x68f1ed67,0x51f0fd31,0xd86f3bc2,0x2c811dcd,0x04d2f2de,0x44dc5c43,0x092a7149,0x5be8cc57 },
{ 0x30ebb079,0xc8143b3d,0xbd652e30,0x7589155a,0x8f6d5c31,0x653c3c31,0xc279161f,0x2570fb17 },
},
{
{ 0x0bb8245a,0x192ea955,0x8f9050d1,0xc8e6fba8,0x88a4c935,0x7986ea2d,0xde018668,0x241c5f91 },
{ 0x2cb61575,0x3efa367f,0x1cd6026c,0xf5f96f76,0x65b52562,0xe8c7142a,0x53030acd,0x3dcb65ea },
{ 0x40de6caa,0x28d81729,0x22d9733a,0x8fbf2cf0,0x235b01d1,0x16d7fcdd,0x5fcdf0e5,0x08420edd },
},
{
{ 0x04f410ce,0x0358c34e,0x276e0685,0xb6135b5a,0xebb91521,0x5d9670c7,0x21db889c,0x04d654f3 },
{ 0x8362fa4a,0xcdff20ab,0xe21a3e6e,0x57e118d4,0xfc39e62b,0xe3179617,0xbc1769fd,0x0d9a53ef },
{ 0xddbdb5d5,0x5e7dc116,0x8da5dd2d,0x2954deb6,0x3334a292,0x1cb60817,0x18991ad7,0x4a7a4f26 },
},
{
{ 0xaf372a4b,0x24c3b291,0x718147f2,0x93da8270,0x86899ef2,0xdd848564,0x23e0ee33,0x4a963142 },
{ 0x5fb15f95,0xf4a71802,0x6b5c1b8f,0x3df65f34,0x00e01112,0xcdfcf085,0xddd31848,0x11b50c4c },
{ 0x08a4ffd6,0xa6e82744,0x9c1576d9,0x738e177e,0x3d02b3f2,0x773348b6,0xce6bcc51,0x4f4bce4d },
},
{
{ 0xc49d0b6f,0x30e2616e,0xcaec2317,0xe456718f,0xf26b4fa6,0x48eb409b,0x61595f37,0x3042cee5 },
{ 0xe2242584,0xa71fce5a,0x92f58a9e,0x26ea7256,0x1cea3cf4,0xd21a09d7,0xb71c01e6,0x73fcdd14 },
{ 0x449bac41,0x427e7079,0xbce2310a,0x855ae36d,0x5f841a7c,0x4cae7621,0x9a9ce1d6,0x389e740c },
},
{
{ 0x570eac28,0xc9bd78f6,0x27919ce1,0xe55b0b32,0xa19b91ed,0x65fc3eab,0xd6263690,0x25c425e5 },
{ 0x34dcb9ce,0x64fcb3ae,0xe348d0ad,0x97500323,0x62c6381b,0x45b3f07d,0x465a6788,0x61545379 },
{ 0xf1d7de6e,0x3f3e06a6,0x8e062308,0x3ef97627,0x4e8a6c77,0x8c14f626,0x15484759,0x6539a089 },
},
{
{ 0x14bb4a19,0xddc4dbd4,0x98424f8e,0x19b2bc3c,0x36ca7169,0x48a89fd7,0xf019bd90,0x0f65320e },
{ 0xc3d2f773,0xe9d21f74,0x25c46845,0xc1505441,0xf9b99e33,0x624e5ce8,0xc5cd186c,0x11c5e4aa },
{ 0xcafde0c6,0xd486d1b1,0x163b5181,0x4f3fe6e3,0xfaf2939a,0x59a8af0d,0xec33072a,0x4cabc7bd },
},
},
{
{
{ 0x3f78d289,0xc08f788f,0xa1404d9f,0xfe30a72c,0xcf65cc9d,0xf2778bfc,0x5acb2021,0x7ee49816 },
{ 0x089c0a2e,0x239e9624,0x3afe4738,0xc748c4c0,0x764fa12a,0x17dbed2a,0x321c8582,0x639b93f0 },
{ 0x9111a1c3,0x7bd508e3,0x80907489,0x2b2b90d4,0xae72fd19,0xe7d2aec2,0x85b602a6,0x0edf493c },
},
{
{ 0x84764113,0x6767c4d2,0xf7f5f835,0xa090403f,0xcae6bede,0x1c8fcffa,0xd1dfa369,0x04c00c54 },
{ 0x599b5a68,0xaecc8158,0xebade20e,0xea574f0f,0x22b67f07,0x4fe41d74,0x019d4fb4,0x403b92e3 },
{ 0x8b465cf8,0x4dc22f81,0x1480eff8,0x71a0f35a,0x04c7d657,0xaee8bfad,0xb26176f4,0x355bb12a },
},
{
{ 0x5a8c7318,0xa301dac7,0xb3ceaa11,0xed90039d,0x3bae3f2d,0x6f077cbf,0xe052ad8e,0x7518eaf8 },
{ 0x7493bbf4,0xa71e64cc,0xeca3b0c3,0xe5bd84d9,0xfa05e785,0x0a6bc50c,0x182ec312,0x0f9b8132 },
{ 0x1b7f6c32,0xa48859c4,0xf4383298,0x0f2d60bc,0xc9b1d1d9,0x1815a929,0xbb1755c4,0x47c3871b },
},
{
{ 0xc85066b0,0xfbe65d50,0xb3a299b0,0x62ecc4b0,0x441ae8e0,0xe53754ea,0xe8d48d5f,0x08fea02c },
{ 0x71ec4f48,0x51445397,0xc98c5d6e,0xf805b17d,0x47c3c66b,0xf762c11a,0x764699dc,0x00b89b85 },
{ 0x68deead0,0x824ddd76,0x4b685d23,0xc8644520,0x5d89d665,0xb514cfcd,0x4f75d537,0x473829a7 },
},
{
{ 0xad3902c9,0x23d9533a,0xef03588f,0x64c2ddce,0xcfe12fb4,0x15257390,0x44e4d390,0x6c668b4d },
{ 0x4679c418,0x82d2da75,0xb2618df0,0xe63bd7d8,0xac47eb0a,0x355eef24,0x4833c6b4,0x2078684c },
{ 0x7a78820c,0x3b48cf21,0x81273e97,0xf76a0ab2,0x8c8eed7b,0xa96c65a7,0x4f8a433f,0x7411a605 },
},
{
{ 0x18b175b4,0x579ae53d,0xf392a102,0x68713159,0x1eef35f5,0x8455ecba,0x458c398f,0x1ec9a872 },
{ 0xb99dc86d,0x4d659d32,0x603af115,0x044cdc75,0xdcc2e488,0xb34c712c,0xfb8134ff,0x7c136574 },
{ 0x00a2509b,0xb8e6a4d4,0x0bc882b4,0x9b81d702,0xf1957561,0x57e7cc9b,0xc7cd6460,0x3add88a5 },
},
{
{ 0x59393046,0x85c298d4,0x5ff659ec,0x8f7e3598,0xf2f66e3a,0x1d2ca22a,0xa406a720,0x61ba1131 },
{ 0xb635dcf2,0xab895770,0xf66c1fbc,0x02dfef6c,0xbeb6d187,0x85530268,0xcc879e74,0x249929fc },
{ 0x16959029,0xa3d0a0f1,0xba7ebd89,0x023b6b6c,0x26783307,0x7bf15a3e,0xbbd8ece7,0x5620310c },
},
{
{ 0x77e285d6,0x6646b5f4,0x6c8f6193,0x40e8ff67,0xabb594dd,0xa6ec7311,0x658cec4d,0x7ec846f3 },
{ 0x4934d643,0x52899343,0xa51222f5,0xb9dbf806,0xc3f41c22,0x8f6d878f,0x4d9d9730,0x37676a2a },
{ 0x1da22ec7,0x9b5e8f3f,0x6c01cd13,0x130f1d77,0xa2989fb8,0x214c8fcf,0x399b9dd5,0x6daaf723 },
},
},
{
{
{ 0xacad8ea2,0x583b04bf,0x148be884,0x29b743e8,0x0810c5db,0x2b1e583b,0x8eb3bbaa,0x2b5449e5 },
{ 0xeb3dbe47,0x5f3a7562,0x8ebda0b8,0xf7ea3854,0x45747299,0x00c3e531,0x1627d551,0x1304e9e7 },
{ 0x6adc9cfe,0x789814d2,0x8b48dd0b,0x3c1bab3f,0xf979c60a,0xda0fe1ff,0x7c2dd693,0x4468de2d },
},
{
{ 0xf86307ce,0x4b9ad8c6,0x435d0c28,0x21113531,0x657a772c,0xd4a866c5,0x63247352,0x5da6427e },
{ 0x9419469e,0x51bb355e,0x23ddc754,0x33e6dc4c,0x447f9962,0x93a5b6d6,0xfb44bd63,0x6cce7c6f },
{ 0xdeac22ca,0x1a94c688,0xbbae1ff8,0xb9066ef7,0x8d59580f,0x88ad8c38,0xe79f2ca8,0x58f29abf },
},
{
{ 0x710ecdf6,0x4b5a64bf,0x462c293c,0xb14ce538,0xd50b3ab9,0x3643d056,0x185b4870,0x6af93724 },
{ 0x8de73e68,0xe90ecfab,0x377e76a5,0x54036f9f,0xbe015982,0xf0495b0b,0xa7f41e36,0x577629c4 },
{ 0x09c6a888,0x32200245,0x4b558973,0xd2e03613,0x3c33289f,0x83e23623,0x0caec18f,0x701f25bb },
},
{
{ 0x7cbec113,0x9d18f6d9,0x74bfdbe4,0x844a06e6,0xac4e60d6,0x20f5b522,0x50955e51,0x720a5bc0 },
{ 0xe4616ced,0xc3a8b0f8,0x9e25a87d,0xf700660e,0xf4bca59c,0x61e3061f,0xbdc40be9,0x2e0c92bf },
{ 0x9b805a35,0x0c3f0943,0x6242abfc,0xe84e8b37,0x5c229346,0x691417f3,0x144ef0ec,0x0e9b9cbb },
},
{
{ 0x5db1beee,0x8dee9bd5,0x0a723fb9,0xc9c3ab37,0x1c68d791,0x44a8f1bf,0x1cfd3cde,0x366d4419 },
{ 0xfb5720ad,0xfbbad48f,0xdbf90d0e,0xee81916b,0x635543bf,0xd4813152,0x3f337bd8,0x221104eb },
{ 0xf2bc8c14,0x9e3c1743,0xb5856c3b,0x2eda26fc,0x68a7fb97,0xccb82f0e,0xbc593244,0x4167a4e6 },
},
{
{ 0xf8ce8fee,0xc2be2665,0xe880d62c,0xe967ff14,0x2f364eee,0xf12e6e7e,0xcb7ed2f6,0x34b33370 },
{ 0x76f62700,0x643b9d28,0x0e7668eb,0x5d1d9d40,0x21fc0684,0x1b4b4303,0x2255246a,0x7938bb7e },
{ 0x8681d6cc,0xcdc591ee,0xed85a753,0xce02109c,0x58808883,0xed7485c1,0x2dfe65e4,0x1176fc6e },
},
{
{ 0x49770eb8,0xdb90e289,0xacf440a3,0x98fbcc2a,0xded7879b,0x21354ffe,0xf26906b6,0x1f6a3e54 },
{ 0x5b9c619b,0xb4af6cd0,0xb2a58480,0x2ddfc9f4,0xebe94dc4,0x3d4fa502,0x677d5f34,0x08fc3a4c },
{ 0xd30734ea,0x60a4c199,0x31165cd6,0x40c085b6,0xf7598295,0xe2333e23,0x16b900d1,0x4f2fad01 },
},
{
{ 0xb73bb638,0x962cd91d,0xfc129c08,0xe60577aa,0xf3b61689,0x6f619b39,0x2944ee81,0x3451995f },
{ 0x94ae4e54,0x44beb241,0x1857ef6c,0x5f541c51,0x368d0498,0xa61e6b2d,0x972ef7ab,0x445484a4 },
{ 0x9fea7d7c,0x9152fcd0,0xb0935cf6,0x4a816c94,0x47285c40,0x258e9aaa,0x042893b7,0x10b89ca6 },
},
},
{
{
{ 0x5a45f06e,0x753941be,0x6d9c5f65,0xd07caeed,0x72ff51b6,0x11776b9c,0xef0d4da9,0x17d2d1d9 },
{ 0x9718289c,0x3d594749,0x24533f26,0x12ebf8c5,0x14c3ef15,0x0262bfcb,0x77b7518e,0x20b878d5 },
{ 0x073f3e6a,0x27f2af18,0xd7521069,0xfd3fe519,0x3ca60022,0x22e3b72c,0xcc65c6a7,0x72214f63 },
},
{
{ 0xf43b29c9,0x1d9db7b9,0x4f518f75,0xd605824a,0x312f9dc4,0xf2c072bd,0x5a1545b0,0x1f24ac85 },
{ 0x5307a693,0xb4e37f40,0x2f336795,0xaba714d7,0x73761099,0xd6fbd0a7,0x8171cbc9,0x5fdf48c5 },
{ 0x8e9505aa,0x24d60832,0x0c1420ee,0x4748c1d1,0x06fb25a2,0xc7ffe45c,0x2ae395e6,0x00ba739e },
},
{
{ 0xea88bb26,0xae4426f5,0x84973bfb,0x360679d9,0x26694e50,0x5c9f030c,0xd518d226,0x72297de7 },
{ 0x5c8790d6,0x592e98de,0x45c2a2df,0xe5bfb7d3,0xf9b49922,0x115a3b60,0x67ad78f3,0x03283a3e },
{ 0xbe0cb939,0x48241dc7,0x8b633080,0x32f19b4d,0x02289308,0xd3dfc90d,0x46271945,0x05e12968 },
},
{
{ 0x242c4550,0xadbfbbc8,0xd03081d9,0xbcc80cec,0xf5c8df92,0x843566a6,0x8258ce4c,0x78cf25d3 },
{ 0x2d9c495a,0xba82eeb3,0xf12bb97c,0xceefc8fc,0x93b5d1e0,0xb02dabae,0x13698d9b,0x39c00c9c },
{ 0x31489d68,0x15ae6b8e,0x9c2bf087,0xaa851cab,0xf04efa05,0xc9a75a97,0x6b3ff832,0x006b5207 },
},
{
{ 0xb9ce082d,0xf5cb7e16,0x417abc29,0x3407f14c,0x2bf4a7ab,0xd4b36bce,0x1a9f75ce,0x7de2e956 },
{ 0x9d95781c,0x29e0cfe1,0x966310e2,0xb681df18,0x70516b39,0x57df39d3,0x3bc76122,0x4d57e344 },
{ 0xb6a55ecb,0xde70d4f4,0x5d85db99,0x4801527f,0xd3ee9a81,0xdbc9c440,0x1a6029ed,0x6b2a90af },
},
{
{ 0x5bb2d80a,0x77ebf324,0x2fb9079b,0xd8301b47,0x4cee7333,0xc647e6f2,0x276c2109,0x465812c8 },
{ 0x9ae61e97,0x6923f4fc,0xe03f5fd1,0x5735281d,0xe6edd12d,0xa764ae43,0xd12d3e4a,0x5fd8f4e9 },
{ 0x2a1062d9,0x4d43beb2,0x3831dc16,0x7065fb75,0xde2968d7,0x180d4a7b,0x1cb16790,0x05b32c2b },
},
{
{ 0x7ad58195,0xf7fca42c,0x4333f3cc,0x3214286e,0x340b979d,0xb6c29d0d,0x567307e1,0x31771a48 },
{ 0xd24da8fd,0xc8c05ecc,0x05dfef83,0xa1cf1aac,0x7df9cd61,0xdbbeeff2,0x7b471e99,0x3b5556a3 },
{ 0xe14dd482,0x32b0c524,0x1a2ba4b6,0xedb35154,0x282b5af3,0xa3d16048,0x7a7336eb,0x4fc079d2 },
},
{
{ 0x0c86c50d,0xdc348b44,0xcc94e651,0x1337cbc9,0x643e3cb9,0x6422f74d,0xbae3cd08,0x241170c2 },
{ 0x89bf2f7f,0x51c938b0,0x02dfe9a7,0x2497bd65,0x7880e453,0xffffc09c,0xcaf98e92,0x124567ce },
{ 0x0ac473b4,0x3ff9ab86,0x0113e435,0xf0911dee,0xebc6c4af,0x4ae75060,0x6c87000d,0x3f861296 },
},
},
{
{
{ 0x36048d13,0x9c18fcfa,0x73899ddd,0x29159db3,0x9f92d0aa,0xdc9f350b,0x878a19d4,0x26f57eee },
{ 0x782a0dde,0x559a0cc9,0xea718385,0x551dcdb2,0x31ef238c,0x7f62865b,0x7973613d,0x504aa776 },
{ 0x5687efb1,0x0cab2cd5,0x247af17b,0x5180d162,0x4f5a2467,0x85c15a34,0x9dba3069,0x4041943d },
},
{
{ 0xa26caadd,0x4b217743,0x648ab7ce,0x47a6b424,0x03fbc9e3,0xcb1d4f7a,0x9800d019,0x12d93142 },
{ 0x43ebcc96,0xc3c0eeba,0x26ea9caf,0x8d749c9c,0x1c77ccc6,0xd9fa95ee,0x7684340f,0x1420a1d9 },
{ 0xd337594f,0x00c67799,0xb23aa47b,0x5e3c5140,0xe35ff395,0x44182854,0x4359a012,0x1b4f9231 },
},
{
{ 0xa49866b1,0x33cf3030,0x215f4859,0x251f73d2,0x51def4f6,0xab82aa40,0x6f9a23f6,0x5ff191d5 },
{ 0x89150951,0x3e5c109d,0x2de9696a,0x39cefa91,0x975f3020,0x20eae43f,0x7f132dae,0x239b572a },
{ 0xac2d9068,0x819ed433,0x5fc98523,0x2883ab79,0x5593eb3d,0xef457280,0x758f36cb,0x020c526a },
},
{
{ 0xf042cc89,0xe931ef59,0x8e124bb6,0x2c589c9d,0xaec75997,0xadc8e18a,0x5602c50c,0x452cfe0a },
{ 0x9ed8dbbc,0x779834f8,0xdc7ca46c,0xc8f2aaf9,0xa3e1b074,0xa9524cdc,0x15313877,0x02aacc46 },
{ 0x647877df,0x86a0f7a0,0x0e607c9f,0xbbc46427,0xf1fb11c9,0xab17ea25,0x304b877b,0x4cfb7d7b },
},
{
{ 0x9789ef12,0xe28699c2,0xdf57190d,0x2b6ecd71,0xecc970d0,0xc343c857,0x434d3ac5,0x5b1d4cbc },
{ 0xb89b75fe,0x72b43d6c,0x9c6adc80,0x54c694d9,0x3ee34c9f,0xb8c3aa37,0x39075364,0x14b4622b },
{ 0xcc0a9f26,0xb6fb2615,0xb88dcce5,0x3a4f0e2b,0x3369a705,0x1301498b,0x58592dd1,0x2f98f712 },
},
{
{ 0x4f54a701,0x2e12ae44,0xa9cbd7de,0xfcfe3ef0,0x75835de0,0xcebf890d,0xe7614554,0x1d8062e9 },
{ 0xb50f9e56,0x0c94a74c,0x8e8e1320,0x5b1ff4a9,0x82300f67,0x9a2acc21,0xd806aaf9,0x3a6ae249 },
{ 0xa9907c5a,0x657ada85,0x91b90f62,0x1a0ea8b5,0xdf34b4e9,0x8d0e1dfb,0xaef25ff3,0x298b8ce8 },
},
{
{ 0x0a2165de,0x837a72ea,0x0bcf79f6,0x3fab07b4,0x7738ae70,0x521636c7,0x03a7d7dc,0x6ba62718 },
{ 0xeff70cb2,0x2a927953,0x79157076,0x4b89c92a,0x30a7cf6a,0x9418457a,0x4d5ce485,0x34b8a840 },
{ 0x83693335,0xc26eecb5,0x63b5fefd,0xd5a813df,0xa4b22573,0xa293aa9a,0x465e1c6a,0x71d62bdd },
},
{
{ 0xb1f75ef5,0xcd2db5da,0x16b065f5,0xd77f95cf,0x3f49f085,0x14571fea,0x262b2b3d,0x1c333621 },
{ 0xd378df80,0x6533cc28,0x0a0fa4b4,0xf6db4379,0xf701da5a,0xe3645ff9,0xf3172ba4,0x74d5f317 },
{ 0x67d9ca81,0xa86fe554,0x2b298c37,0x398b7c75,0xe3ac623b,0xda6d0892,0x47e9d98c,0x4aebcc45 },
},
},
{
{
{ 0x7354b610,0x0b408d9e,0x5ba85b6e,0x806b3253,0x4a58a207,0xdbe63a03,0xc9a1df2c,0x173bd9dd },
{ 0x276d01c9,0x12f0071b,0x86c48c70,0xe7b8bac5,0x71d6fba9,0x5308129b,0x5a3db792,0x5d88fbf9 },
{ 0xfe5872df,0x2b500f1e,0xd43918c1,0x58d6582e,0xc9673ae0,0xe6ed278e,0xb19ea319,0x06e1cd13 },
},
{
{ 0x9e5b0353,0x472baf62,0x278d0447,0x3baa0b90,0x9643bf27,0x0c785f46,0x8d837b13,0x7f3a6a1a },
{ 0x6f166f23,0x40d0ad51,0x1fab6abe,0x118e3293,0xa04d088e,0x3fe35e14,0x26e16266,0x30806035 },
{ 0x5d3d800b,0xf7e64439,0xc901edf6,0x95a8d555,0x592c6339,0x68cd7830,0x2e51307e,0x30d0fded },
},
{
{ 0x68b84750,0x9cb4971e,0x6664bbcf,0xa0957229,0x72fa412b,0x5c8de726,0x51c589d9,0x46150843 },
{ 0xf21233b3,0xe0594d1a,0xf0cc4d9c,0x1bdbe78e,0x8f499a77,0x6965187f,0x2c099868,0x0a921420 },
{ 0xaeb9a02e,0xbc9019c0,0x16034cae,0x55c7110d,0x659932ec,0x0e6df501,0x95ca5dfe,0x3bca0d28 },
},
{
{ 0x9ecc01bf,0x9c688eb6,0xa644896f,0xf0bc83ad,0x5f7a9fe2,0xca2d955f,0x8df28241,0x4ea8b403 },
{ 0x3c5d62a4,0x40f031bc,0xcff07a60,0x19fc8b3e,0x130fb545,0x98183da2,0xae8f13cd,0x5631dedd },
{ 0xf1cad202,0x2aed460a,0xa48cee83,0x46305305,0x49f11a5f,0x91217745,0x542ca463,0x24ce0930 },
},
{
{ 0xfdf30b85,0x3fcfa155,0x36372ea4,0xd2f7168e,0x6492f844,0xb2e064de,0x324f4280,0x549928a7 },
{ 0xfd06c106,0x1fe890f5,0x5d8810f2,0xb5c46835,0x6e8caf3e,0x827808fe,0x8a06d74b,0x41d4e3c2 },
{ 0x63ee1a2e,0xf26e32a7,0xd25ffdea,0xae91e4b7,0xd17f4d69,0xbc3bd33b,0xc0dcff6a,0x491b66de },
},
{
{ 0xd0da64a1,0x75f04a8e,0x67e2284b,0xed222caf,0x1f7b7ba4,0x8234a379,0xb7018b67,0x4cf6b8b0 },
{ 0xc7ea32a7,0x98f5b13d,0x7e16db98,0xe3d5f8cc,0xcbf8d947,0xac0abf52,0xc85ee4ac,0x08f338d0 },
{ 0x991a73bd,0xc383a821,0xdf320c7a,0xab27bc01,0x84777063,0xc13d331b,0xeb078a99,0x530d4a82 },
},
{
{ 0x6c9abf9e,0x6d697345,0x4900a880,0x257fb2fc,0xc8cfb850,0x2bacf412,0x0cbfbd5b,0x0db3e7e0 },
{ 0xe1f94825,0x004c3630,0x8cab535a,0x7e2d7826,0xcc84ff8b,0xc7482323,0x101770b9,0x65ea753f },
{ 0xe2096363,0x3d66fc3e,0x61b5cb6b,0x81d62c7f,0x13443b1a,0x0fbe0442,0x21e1a1db,0x02a4ec19 },
},
{
{ 0xf1cf795f,0xf5c86162,0x26ee57f2,0x118c8619,0x1c063578,0x17212485,0xec067fcf,0x36d12b5d },
{ 0x3b24b8a2,0x5ce6259a,0x45afa0b8,0xb8577acc,0x8ba07037,0xcccbe6e8,0x127809bf,0x3d143c51 },
{ 0x79154557,0x126d2791,0xfc783a0a,0xd5e48f5c,0xdf179bac,0x36bdb6e8,0x5ba82859,0x2ef51788 },
},
},
{
{
{ 0x305b2f51,0x96eebffb,0x889596b8,0xd3f938ad,0x46d5dd25,0xf0f52dc7,0xbb3a0095,0x57968290 },
{ 0x8c58aedc,0x4637974e,0xabf041a4,0xb9ef22fb,0xe980718a,0xe185d956,0xb143a8a6,0x2f1b78fa },
{ 0x0a20e101,0xf71ab843,0x24f0ec47,0xf393658d,0x6ee2eed1,0xcf7509a8,0xdc2aa3e1,0x7dc43e35 },
},
{
{ 0x273e9718,0x5a782a5c,0x5e4efd94,0x3576c699,0x1f237d3e,0x0f2ed805,0x82d50a99,0x044fb81d },
{ 0x887dd9c3,0x85966665,0x4bb05355,0xc90f9b31,0xef2079b1,0xc6e08df8,0x758cc12f,0x7ef72016 },
{ 0xa907e3d9,0xc1df18c5,0xce4c6359,0x57b3371d,0xb201bb49,0xca704534,0x9c30dd2e,0x7f79823f },
},
{
{ 0x68f587ba,0x6a9c1ff0,0x0050c8de,0x0827894e,0x7ded5be7,0x3cbf9955,0x1c06d6f0,0x64a9b043 },
{ 0xa3b513e8,0x8334d239,0xb91fa8d8,0xc13670d4,0xf590bd33,0x12b54136,0xd784d9b4,0x0a4e0373 },
{ 0x5b7d2919,0x2eb3d6a1,0xd53a8235,0xb0b4f6a0,0x89a45d47,0x7156ce43,0xce18346c,0x071a7d0a },
},
{
{ 0x20e14431,0xcc0c3552,0x09b15141,0x0d659507,0x209d5f36,0x9af5621b,0x617755d3,0x7c69bcf7 },
{ 0xc887ba0b,0xd3072daa,0xbfa562ee,0x01262905,0xc0ef768b,0xcf543002,0x46ea7e9c,0x2c3bcc71 },
{ 0x04e8295f,0x07f0d7eb,0x2f50f37d,0x10db1825,0x171798d7,0xe951a9a3,0x22aca51d,0x6f5a9a73 },
},
{
{ 0xa3d944be,0xe729d4eb,0x8078af9e,0x8d9e0940,0x47869c03,0x4525567a,0xee8d3b24,0x02ab9680 },
{ 0x2f41c6c5,0x8ba1000c,0x0cfefb9b,0xc49f79c1,0x3cc51c9f,0x4efa4770,0xe147afca,0x494e21a2 },
{ 0xdde50d9a,0xefa48a85,0x0fb9a249,0x219a224e,0xd91ef6d9,0xfa091f1d,0xea46bb34,0x6b5d76cb },
},
{
{ 0x1e782522,0xe0f94117,0x036936d3,0xf1e6ae74,0xd0fcc746,0x408b3ea2,0x03dd313e,0x16fb869c },
{ 0xec0cd994,0x8857556c,0x5cd01dba,0x6472dc6f,0x8f42b477,0xaf016914,0x85277354,0x0ae333f6 },
{ 0x33b60962,0x288e1997,0xd8abe133,0x24fc72b4,0x0991d03e,0x4811f7ed,0x8f70d075,0x3f81e38b },
},
{
{ 0x5f17c824,0x0adb7f35,0xd74299a4,0x74b923c3,0xcbf8eaf7,0xd57c3e8b,0x4cdedc3d,0x0ad3e2d3 },
{ 0x7ed9affe,0x7f910fcc,0x2465874b,0x545cb8a1,0x4b0c4704,0xa8397ed2,0x04f50993,0x50510fc1 },
{ 0x336e249d,0x6f0c0fc5,0xc331cfd9,0x745ede19,0x09eefe1c,0xf2d6fd00,0xf0fa1ebe,0x127c158b },
},
{
{ 0xae51b974,0xdea28fc4,0x744dfe96,0x1d9973d3,0x873848a8,0x6240680b,0xd167df95,0x4ed82479 },
{ 0x2e9879a2,0xf6197c42,0x52ca3647,0xa44addd4,0x4b4eaccb,0x9b413fc1,0x07ef4f68,0x354ef87d },
{ 0x60c5d975,0xfee3b522,0xeb41b0b8,0x50352efc,0xa9f6653c,0x8808ac30,0x0539236d,0x302d92d2 },
},
},
{
{
{ 0xe4e0f177,0x2dbc6fb6,0xa4bd6a93,0x04e1bf29,0x787af6e8,0x5e1966d4,0xb426d060,0x0edc5f5e },
{ 0xbca4283d,0x7813c1a2,0xa1863dd9,0xed62f091,0xc268fa86,0xaec7bcb8,0x6f1cae4c,0x10e5d3b7 },
{ 0x53da8e67,0x5453bfd6,0x24a9f641,0xe9dc1eec,0x03578a23,0xbf87263b,0x361cba72,0x45b46c51 },
},
{
{ 0x8a7fe3e4,0xce9d4ddd,0x76620e30,0xab136456,0xb30e9958,0x4b594f7b,0x321229df,0x5c1c0aef },
{ 0x314f7fa1,0xa9402abf,0x8e8cf450,0xe257f1dc,0x23a8be84,0x1dbbd54b,0x6dcb713b,0x2177bfa3 },
{ 0xfa79db8f,0x37081bbc,0xc25f59b3,0x6048811e,0x9c832487,0x087a7665,0x7d8ab5bb,0x4ae61938 },
},
{
{ 0x985bfb83,0x61117e44,0x71963136,0xfce0462a,0xd425904b,0x83ac3448,0x5ba43d64,0x75685abe },
{ 0x5344a32e,0x8ddbf6aa,0xb41b4078,0x7d88eab4,0x4a130d60,0x5eb0eb97,0x17bf3e03,0x1a00d91b },
{ 0xeb61f2b2,0x6e960933,0xc9ff4952,0x543d0fa8,0x7af66569,0xdf727510,0x23b0e6aa,0x135529b6 },
},
{
{ 0xe22e83fe,0xf5c716bc,0xe80985c1,0xb42beb19,0x14254aae,0xec9da637,0x1590a613,0x5972ea05 },
{ 0xadd1d518,0x18f0dbd7,0xcfc11f11,0x979f7888,0x7114759b,0x8732e1f0,0x65ca3a01,0x79b5b81a },
{ 0xdc8f7811,0x0fd4ac20,0xac4d4fa8,0x9a9ad294,0xb3360434,0xc01b2d64,0x905f3bdb,0x4f7e9c95 },
},
{
{ 0x355299fe,0x71c8443d,0xdbebead7,0x8bcd3b1c,0xf1a49466,0x8092499e,0xa144adc8,0x1942eec4 },
{ 0x5781302e,0x62674bbc,0x89addc0f,0xd8520f39,0x53fbd9c6,0x8c2999ae,0x2e638e4c,0x31993ad9 },
{ 0xae234992,0x7dac5319,0x0cea3e92,0x2c1b3d91,0x253c1122,0x553ce494,0x4ef9ca75,0x2a0a6531 },
},
{
{ 0x3c1c793a,0xcf361acd,0x5a35bc3b,0x2f9ebcac,0xa8cda6ab,0x60e860e9,0x6dea1a13,0x055dc39b },
{ 0xf7f927c2,0x2db7937f,0x17d0a635,0xdb741f06,0x1155af76,0x5982f3a2,0x647c2ded,0x4cf6e218 },
{ 0xc28d5bb6,0xb119227c,0x774dffab,0x07e24ebc,0xe4a32c89,0xa83c78ce,0x10aa24b6,0x121a3077 },
},
{
{ 0xc77483c9,0xd659713e,0xb82b96af,0x88bfe077,0x1097bcd3,0x289e2823,0x6ced3a9b,0x527bb94a },
{ 0x9f034a97,0xe4db5d5e,0x3034bc2d,0xe153fc09,0x9551d3b1,0x46054691,0x7a40e52d,0x333fc76c },
{ 0x995b482e,0x563d992a,0x6e383801,0x3405d07c,0x2f64d8e5,0x485035de,0x20a7a9f7,0x6b89069b },
},
{
{ 0xb5c7db77,0x4082fa8c,0xc734c155,0x068686f8,0xf6e7a57e,0x29e6c8d9,0xa7639bcf,0x0473d308 },
{ 0x6270220d,0x812aa041,0xf9245b4e,0x995a89fa,0x5072ef05,0xffadc4ce,0xaa73eb73,0x23bc2103 },
{ 0x03589e05,0xcaee7926,0x46dcc492,0x2b4b4212,0xe601a94f,0x02a1ef74,0xde04341a,0x102f73bf },
},
},
{
{
{ 0xb5511c9a,0xa2b4dae0,0x2bffff06,0x7ac86029,0xf5504234,0x981f375d,0xda4ea12d,0x3f6bd725 },
{ 0x7f5745c6,0xeb18b9ab,0x5787c690,0x023a8aee,0x2df7afa9,0xb72712da,0xea5c013d,0x36597d25 },
{ 0x106058ac,0x734d8d7b,0x6fc6905f,0xd940579e,0x9202932d,0x6466f8f9,0xda60d6d0,0x7b7ecc19 },
},
{
{ 0xa77cfa9b,0x6dae4a51,0xe7a38650,0x82263654,0x8f2d82db,0x09bbffcd,0x1bf5caba,0x03bedc66 },
{ 0x695c690d,0x78c2373c,0x0642906e,0xdd252e66,0x4ae12bd2,0x951d4444,0x01743956,0x4235ad76 },
{ 0x078975f5,0x6258cb0d,0x9189f298,0x49294254,0xe2e36ee4,0xa0cab423,0xcdf066a1,0x0e7ce2b0 },
},
{
{ 0xd94b70f9,0xfea6fedf,0xc1fcba2d,0xf130c051,0x7f2fab89,0x4882d47e,0x8aeceeb5,0x61525613 },
{ 0xc48c85a3,0xc494643a,0x3c6139ad,0xfd361df4,0x3ae94d48,0x09db17dd,0x8fb4674a,0x666e0a5d },
{ 0x4870cb0d,0x2abbf64e,0xaa458b6b,0xcd65bcf0,0x75e8985d,0x9abe4eba,0xd514dee4,0x7f0bc810 },
},
{
{ 0x737213a0,0x83ac9dad,0x2ef72e98,0x9ff6f8ba,0x43ec6957,0x311e2edd,0xdec5ab75,0x1d3a907d },
{ 0x26f4136f,0xb9006ba4,0x57e03035,0x8d67369e,0x4f463c28,0xcbc8dfd9,0xf8eedbf5,0x0d1f8dbc },
{ 0x3ed081dc,0xba169331,0x851b3480,0x29329fad,0x030321cb,0x0128013c,0xa31bfde3,0x00011b44 },
},
{
{ 0x6a0aa75c,0x16561f69,0x5852bd6a,0xc1bf725c,0x9a7966ad,0x11a8dd7f,0xd2851026,0x63d988a2 },
{ 0x3fc66c0c,0x3fdfa06c,0x4dd60dd2,0x5d40e38e,0x268e4d71,0x7ae38b38,0x6e8357e1,0x3ac48d91 },
{ 0xafbd232e,0x00120753,0xfdd8f683,0xe92bceb8,0x84e72b91,0xf81669b3,0x2368a066,0x33fad52b },
},
{
{ 0xc422cfe8,0x8d2cc8d0,0x05a13acb,0x072b4f7b,0xecf6a56f,0xa3feb6e6,0xb90a71e2,0x3cc355cc },
{ 0xc5e41e16,0x540649c6,0x333f7735,0x0af86430,0xf305e746,0xb2acfcd2,0xa256dca7,0x16c0f429 },
{ 0x903e9131,0xe9b69443,0x7a5637ce,0xb8a494cb,0xbaba9244,0xc87cd1a4,0x6bae7568,0x631eaf42 },
},
{
{ 0xa3700de8,0x47d975b9,0xe2f80552,0x7280c5fb,0x32e45de1,0x53658f27,0x665f80b5,0x431f2c7f },
{ 0xda66fe9f,0xb3e90410,0x6c16e5a6,0x85dd4b52,0x1ef9bf83,0xbc3d9761,0x1ea919b5,0x5599648b },
{ 0x858f7b19,0xd6026344,0xa1ea514a,0x14ab352f,0x2090a9d7,0x8900441a,0x91253b26,0x7b04715f },
},
{
{ 0xc4e6bac6,0xb376c280,0x6d1d9b0b,0x970ed3dd,0x450bf944,0xb09a9558,0x57cde223,0x48d0acfa },
{ 0xacf6ae43,0x83edbd28,0x7d5c7ab4,0x86357c8b,0xb7eb2c44,0xc0404769,0xc2f6583f,0x59b37bf5 },
{ 0x7dabe671,0xb60f26e4,0x622f3a37,0xf1d1a197,0xe9960394,0x4208ce7e,0x336d3bdb,0x16234191 },
},
},
{
{
{ 0x1ff38640,0xdd499cd6,0x063625a0,0x29cd9bc3,0x3dd73dc3,0x51e2d802,0x203b9231,0x4a25707a },
{ 0xf6267ff6,0xb9e499de,0x742c0843,0x7772ca7b,0xe9a4f2b1,0x23a0153f,0xd5d05006,0x2cdfdfec },
{ 0x53f6ed6a,0x2ab7668a,0x1dd170a1,0x30424258,0x3ae20161,0x4000144c,0x248e49fc,0x5721896d },
},
{
{ 0xa1d0da4e,0x285d5091,0xb5fe3e08,0x4baa6fa7,0xe19393b3,0x63e5177c,0xc4b030fd,0x03c935af },
{ 0xfd181bae,0x0b6e5517,0x2bb963b4,0x9022629f,0x32064625,0x5509bce9,0xf63c13da,0x578edd74 },
{ 0x492b0c3d,0x997276c6,0xdfe205fc,0x47ccc2c4,0xdd623a3c,0xdcd29b84,0x0288c7a2,0x3ec2ab59 },
},
{
{ 0xae32d1cb,0xa7213a09,0x40f5c2d5,0x0f2b87df,0xe81eab29,0x0baea4c6,0x6adbac5e,0x0e1bf66c },
{ 0xe4d87bb9,0xa1a0d27b,0x61391aed,0xa98b4deb,0x73cb9b83,0x99a0ddd0,0x200fcace,0x2dd5c25a },
{ 0x792c887e,0xe2abd5e9,0xcb926d5d,0x1a020018,0xbaae5f1e,0xbfba69cd,0x5ae88f5f,0x730548b3 },
},
{
{ 0xa1d6e334,0x805b094b,0x09353f19,0xbf3ef177,0x0622702b,0x423f06cb,0xd87845dd,0x585a2277 },
{ 0xcba8b8ee,0xc43551a3,0xb2115f16,0x65a26f1d,0xab8c3850,0x760f4f52,0x411db8ca,0x3043443b },
{ 0x33d48962,0xa18a5f82,0xec78257f,0x6698c4b5,0x373e41ff,0xa78e6fa5,0x50ef981f,0x76562789 },
},
{
{ 0xea86cf9d,0xe17073a3,0x07155fdc,0x3a8cfbb7,0x31838a8e,0x4853e7fc,0xb613f616,0x28bbf484 },
{ 0xd51fc8c0,0x38c3cf59,0x0506b6f2,0x9bedd2fd,0xab570e8f,0x26bf109f,0xc1b846a6,0x3f4160a8 },
{ 0x6f136c7c,0xf2612f5c,0xf6dd11be,0xafead107,0x13de6f33,0x527e9ad2,0x8188f75d,0x1e79cb35 },
},
{
{ 0xf5e08181,0x77e953d8,0x299dded9,0x84a50c44,0x864525e5,0xdc6c2d0c,0x39d1f2f4,0x478ab52d },
{ 0xeef7e3f1,0x013436c3,0xfe9e10f8,0x828b6a7f,0xbcf9defc,0x7ff908e5,0x3a3b3831,0x65d7951b },
{ 0x9252d159,0x66a6a4d3,0x871ac807,0xe5dde1bc,0xa6c1c96f,0xb82c6b40,0x1a212214,0x16d87a41 },
},
{
{ 0xd54e0583,0xfba4d5e2,0x2ebd99fa,0xe21fafd7,0x6ee9778f,0x497ac273,0x7a5a6dde,0x1f990b57 },
{ 0x42066215,0xb3bd7e5a,0x0c5a24c1,0x879be3cd,0xd6f994b7,0x57c05db1,0x65f38ca6,0x28f87c81 },
{ 0x1be8f7d6,0xa3344ead,0xacea798f,0x7d1e50eb,0x520de052,0x77c6569e,0x534d6d3e,0x45882fe1 },
},
{
{ 0x943c6fe4,0xd8ac9929,0xa38392a2,0xb5f9f161,0xbec89af3,0x2699db13,0xe405f074,0x7dcf843c },
{ 0x757983d6,0x6669345d,0x17aa11a6,0x62b6ed11,0x985e128f,0x7ddd1857,0xf626f6dd,0x688fe5b8 },
{ 0x4a4732c0,0x6c90d648,0xca563299,0xd52143fd,0x915dc6e1,0xb3be28c3,0x7327191b,0x6739687e },
},
},
{
{
{ 0xc80c1ac0,0xa66dcc9d,0x1b38a436,0x97a05cf4,0x95dbd7c6,0xa7ebf3be,0x8d7e7dab,0x7da0b8f6 },
{ 0x385675a6,0xef782014,0xaafda9e8,0xa2649f30,0x5cdfa8cb,0x4cd1eb50,0x1d4dc0b3,0x46115aba },
{ 0xc3b5da76,0xd40f1953,0x21119e9b,0x1dac6f73,0xfeb25960,0x03cc6021,0x83674b4b,0x5a5f887e },
},
{
{ 0xa0a643b9,0x9e9628d3,0xe6c32064,0xb5c3cb00,0x7c2dec32,0x9b530289,0xd5d1c70c,0x43e37ae2 },
{ 0x70a13d11,0x8f6301cf,0x350dd0c4,0xcfceb815,0xa4bca47e,0xf70297d4,0xe44d1434,0x3669b656 },
{ 0xeda6e133,0x387e3f06,0x99a13ac0,0x67301d51,0x36263811,0xbd5ad8f8,0x4fd5e9be,0x6a21e6cd },
},
{
{ 0x6699b2e3,0xef412912,0x708d1301,0x71d30847,0x1182b0bd,0x325432d0,0x001e8b36,0x45371b07 },
{ 0x3046e65f,0xf1c6170a,0x00d23524,0x58712a2a,0x8c82b755,0x69dbbd3c,0xa195ff57,0x586bf9f1 },
{ 0x5ef8790b,0xa6db088d,0x610937e5,0x5278f0dc,0x61a16eb8,0xac0349d2,0x90e52179,0x0eafb037 },
},
{
{ 0x0f75ae1d,0x5140805e,0x2662cc30,0xec02fbe3,0xea92396d,0x2cebdf1e,0xc5435bb3,0x44ae3344 },
{ 0x3748042f,0x960555c1,0x820baa11,0x219a41e6,0x73486d0c,0x1c81f738,0x5a02c661,0x309acc67 },
{ 0xbba543ee,0x9cf289b9,0x5ac97142,0xf3760e9d,0x4f9360aa,0x1d82e5c6,0x7f94678f,0x62d5221b },
},
{
{ 0x3af77a3c,0x7585d426,0xfee9144d,0xdfae7b11,0x59f7193d,0xa5067080,0x83922037,0x14f29a53 },
{ 0x18d0936d,0x524c299c,0x8a0c1a0c,0xc86bb56c,0xdb4a8631,0xa375052e,0xbc754562,0x5c0efde4 },
{ 0x25b2d7f5,0xdf717edc,0x99b53040,0x21f970db,0xc3ed4c62,0xda9234b7,0x7bee093e,0x5e72365c },
},
{
{ 0x2f08b33e,0x7d933906,0xdf9f32be,0x5b9659e5,0x1f9ebdfd,0xacff3dad,0xcb7349b7,0x70b20555 },
{ 0x4571217f,0x575bfc07,0x0694d95b,0x3779675d,0xf4191e33,0x9a0a37bb,0x47b4eabc,0x77f1104c },
{ 0x55112c4c,0xbe5113c5,0x9a881fcd,0x6688423a,0x5e503b47,0x44667785,0x4a06404a,0x0e34398f },
},
{
{ 0x3e4b1928,0x18930b09,0x73f3f640,0x7de3e10e,0x73395d6f,0xf43217da,0xca379c3e,0x6f8aded6 },
{ 0x3ecebde8,0xb67d22d9,0x27822f07,0x09b3e841,0xb05b6d8d,0x743fa61f,0x8a362372,0x5e540536 },
{ 0xfdb7b29a,0xe340123d,0xa21ab291,0x487b97e1,0xfde6949e,0xf9967d02,0xc8d3de97,0x780de72e },
},
{
{ 0x00f42772,0x671feaf3,0x2a8c41aa,0x8f72eb2a,0x97373292,0x29a17fd7,0x32b587a6,0x1defc6ad },
{ 0x089ae7bc,0x0ae28545,0x1c7f4d06,0x388ddecf,0x0a4811b8,0x38ac1551,0x71928ce4,0x0eb28bf6 },
{ 0xef5195a7,0xaf5bbe1a,0x917b15ed,0x148c1277,0x7ae5da2e,0x2991f7fb,0xf8dd2867,0x467d201b },
},
},
{
{
{ 0x567ae7a9,0xbc1ef4bd,0xd64498bd,0x3f624cb2,0x2c1f4ec8,0xe41064d2,0xba384001,0x2ef9c5a5 },
{ 0x74ef4fad,0x95fe919a,0xf6a308a2,0x3a827bec,0x09a47b01,0x964e01d3,0x5ba3c797,0x71c43c4f },
{ 0xfa9e74cd,0xb6fd6df6,0xe4af267a,0xf18278bc,0xf1ef990e,0x8255b3d0,0x90c5f293,0x5a758ca3 },
},
{
{ 0x1d61dc94,0x8ce0918b,0x9a813066,0x8ded3646,0xafe8aad3,0xd4e6a829,0xf639d43f,0x0a738027 },
{ 0xd9462495,0xa2b72710,0xd57d5003,0x3aa8c6d2,0xa0b487ca,0xe3d400bf,0xb3eb72ec,0x2dbae244 },
{ 0x57ffe1cc,0x980f4a2f,0xe1839843,0x00670d0d,0x49fb15fd,0x105c3f4a,0x5126a69c,0x2698ca63 },
},
{
{ 0x5e3dd90e,0x2e3d702f,0xe4d25386,0x9e3f0918,0x024da96a,0x5e773ef6,0x4afa3332,0x3c004b0c },
{ 0x32b0ba78,0xe7653188,0x925cff8b,0x381831f7,0xa0291fcc,0x08a81b91,0x49caeb07,0x1fb43dcc },
{ 0x06f4b82b,0x9aa946ac,0xa806c4f3,0x1ca284a5,0xc6cd4787,0x3ed3265f,0xcd1fd217,0x6b43fd01 },
},
{
{ 0x3e760ef3,0xb5c74258,0xee0ab990,0x75dc52b9,0x072b923f,0xbf1427c2,0x6ff0d9f0,0x73420b2d },
{ 0x4697c544,0xc7a75d4b,0xdf0fffbf,0x15fdf848,0xaa46785a,0x2868b9eb,0x5b52f714,0x5a68d710 },
{ 0x9e851e06,0xaf2cf6cb,0xc62238c4,0x8f593913,0x99fbf373,0xda8ab896,0xea34bc9e,0x3db5632f },
},
{
{ 0x829825d5,0x2e4990b1,0x3e9a8991,0xedeaeb87,0x4c704af8,0xeef03d39,0x95df2b0e,0x59197ea4 },
{ 0xf75dd9d8,0xf46eee2b,0x396759a5,0x0d17b1f6,0x499e7273,0x1bf2d131,0x49d75f13,0x04321adf },
{ 0xe4e55aae,0x04e16019,0x7e2f92e9,0xe77b437a,0x6f159aa4,0xc7ce2dc1,0xf4d70cc0,0x45eafdc1 },
},
{
{ 0xcfccb1ed,0xb60e4624,0xbd5c0395,0x59dbc292,0xdc0481c9,0x31a09d1d,0x5d56d940,0x3f73ceea },
{ 0x8045d72b,0x69840185,0xcf2f0651,0x4c22faa2,0x6b222dc6,0x941a3665,0x0362dade,0x5a5eebc8 },
{ 0x0a4e8dc6,0xb7a7bfd1,0x44c9b339,0xbe57007e,0x1557aefa,0x60c1207f,0x266218db,0x26058891 },
},
{
{ 0xc676e542,0x4c818e3c,0x03ceccad,0x5e422c93,0xb4129f08,0xec07ccca,0xb24443b8,0x0dedfa10 },
{ 0x8360ff04,0x59f704a6,0x7661e6f4,0xc3d93fde,0x12873551,0x831b2a73,0x4e615d57,0x54ad0c2e },
{ 0xb82b522a,0xee3b67d5,0x9fa5c1eb,0x36f16346,0x6ec19fd3,0xa5b4d2f2,0xa77a9408,0x62ecb2ba },
},
{
{ 0xafb62874,0x92072836,0x79e104a5,0x5fcd5e85,0xc630a14a,0x5aad01ad,0x75663f98,0x61913d50 },
{ 0x61152b3d,0xe5ed7952,0x0eddd7d1,0x4962357d,0xb96b4c71,0x7482c8d0,0xa966d8be,0x2e59f919 },
{ 0x1a3231da,0x0dc62d36,0x94200270,0xfa475832,0x3f9594ce,0x02d80151,0x31c05d5c,0x3ddbc2a1 },
},
},
{
{
{ 0x2796bb14,0xf3aa57a2,0x9b07da21,0x883abab7,0x31a0391c,0xe54be218,0xd83205f9,0x5ee7fb38 },
{ 0xce5ec54b,0x9adc0ff9,0x8c2f130d,0x039c2a6b,0xf0f89515,0x028007c7,0xac04b36b,0x78968314 },
{ 0x41446a8e,0x538dfdcb,0x434937f9,0xa5acfda9,0x263c8c78,0x46af908d,0x9bca0d09,0x61d0633c },
},
{
{ 0xf8fc73df,0xada328bc,0xa6f037fc,0xee84695d,0x38c2a909,0x637fb4db,0xf8067bdc,0x5b23ac2d },
{ 0xffdb2566,0x63744935,0x780b68bb,0xc5bd6b89,0x553eec03,0x6f1b3280,0x47aed7f5,0x6e965fd8 },
{ 0xee80527b,0x9ad2b953,0xfade6d8d,0xe88f19aa,0x150e82cf,0x0e711704,0xdd95dedc,0x79b9bbb9 },
},
{
{ 0x8e9f7374,0xd1997dae,0xcfbb0816,0xa032a2f8,0x6d445f0a,0xcd6cba12,0x0accb834,0x1ba81146 },
{ 0x6a3126c2,0xebb35540,0x68c8c393,0xd26383a8,0xe5b97a82,0x6c0c6429,0xc9fd2147,0x5065f158 },
{ 0x0c429954,0x708169fb,0xd76ecf67,0xe14600ac,0x70e645ba,0x2eaab98a,0x58a4faf2,0x3981f39e },
},
{
{ 0x6de66fde,0xc845dfa5,0x2c40483a,0xe152a500,0xc7b4f632,0xe9d2e163,0xdcbc1b65,0x30f4452e },
{ 0x59230a93,0x18fb8a75,0x60e6f45d,0x1d168f69,0x14a93cb5,0x3a85a945,0x05acd0fd,0x38dc0837 },
{ 0xc5759740,0x856d2782,0xf99cbecc,0xfa134569,0xc0ea4e71,0x8844fc73,0x593f2469,0x632d9a1a },
},
{
{ 0xed0c84a7,0xbf09fd11,0x0d9f693a,0x63f07181,0x57cf8779,0x21908c2d,0x8af64ba2,0x3a5a7df2 },
{ 0xb807cba6,0xf6bb6b15,0xbc54f0d7,0x1823c7df,0x6e29670b,0xbb1d9703,0x47ed4a57,0x0b24f488 },
{ 0x511beac7,0xdcdad4be,0xed26ccf2,0xa4538075,0x005f9a65,0xe19cff9f,0x75481f63,0x34fcf744 },
},
{
{ 0x78cfaa98,0xa5bb1dab,0x190b72f2,0x5ceda267,0x0a92608e,0x9309c911,0x2fb374b0,0x0119a304 },
{ 0x789767ca,0xc197e04c,0x38d9467d,0xb8714dcb,0x83f95fa8,0x55de8882,0x4dfa63f7,0x3d3bdc16 },
{ 0xe8c2177d,0x67a2d89c,0x6895d0c1,0x669da5f6,0xb282a2b0,0xf56598e5,0xede20a73,0x56c088f1 },
},
{
{ 0x24f38f02,0x581b5fac,0xbae30cbd,0xa90be9fe,0x8acf92f0,0x9a216902,0x8359038f,0x038b7ea4 },
{ 0x10a86e17,0x336d3d11,0x0b75b2fa,0xd7f38832,0x25072988,0xf9153376,0x99108b87,0x09674c6b },
{ 0x99316ff8,0x9f4ef821,0xeaa78d4f,0x2f49d282,0x5aef3174,0x0971a5ab,0x5969eb65,0x6e5e3102 },
},
{
{ 0x63066222,0x3304fb0e,0x87acba3f,0xfb350689,0x8c1061a3,0xbd192477,0xd1838620,0x3058ad43 },
{ 0x87e593fb,0xb16c62f5,0xca5d3e71,0x4999edde,0x14cc3e6d,0xb491c1e0,0x89a8dba8,0x08f51147 },
{ 0xe57663d0,0x323c0ffd,0xa22ea610,0x05c3df38,0xac994f9a,0xbdc78abd,0xefe3dc99,0x26549fa4 },
},
},
{
{
{ 0xaf3f666e,0xdb468549,0xf14a0ea5,0xd77fcf04,0xa4ba0c47,0x3df23ff7,0x32ce3c85,0x3a10dfe1 },
{ 0x1e6bf9d6,0x741d5a46,0x7777a581,0x2305b3fc,0x6474d3d9,0xd45574a2,0x6401e0ff,0x1926e1dc },
{ 0xea17cea0,0xe07f4e8a,0x3a1fc1fd,0x2fd51546,0x31f2c0f1,0x175322fd,0x861e5d15,0x1fa1d01d },
},
{
{ 0xd1df94ab,0x38dcac00,0xd1080de9,0x2e712bdd,0xfdd5e262,0x7f13e93e,0xee9a01e5,0x73fced18 },
{ 0x7d599832,0xcc805594,0x37f15520,0x1e4656da,0x4e059320,0x99f6f774,0x6a75cf33,0x773563bc },
{ 0x63139cb3,0x06b1e908,0xc5a03ecd,0xa493da67,0xad638932,0x8d77cec8,0x1b864f44,0x1f426b70 },
},
{
{ 0x91a12552,0xf17e35c8,0x575e9c76,0xb76b8153,0x0d9b723e,0xfa83406f,0x3fa7e438,0x0b76bb1b },
{ 0x41911c01,0xefc9264c,0x17a22c25,0xf1a3b7b8,0xf30f1447,0x5875da6b,0x1d31b090,0x4e1af527 },
{ 0x7f92939b,0x08b8c1f9,0xd444ab6e,0xbe6771cb,0x99bb8017,0x22e56463,0xb772a955,0x7b6dd61e },
},
{
{ 0xab01d2c7,0x5730abf9,0x40143b18,0x16fb76dc,0xa0cbb281,0x866cbe65,0x9bff6afe,0x53fa9b65 },
{ 0x50f33d92,0xb7adc1e8,0x608cd5cf,0x7998fa4f,0x8dfc5bdb,0xad962dbd,0xaf1d2f4f,0x703e9bce },
{ 0x94885455,0x6c14c8e9,0x65aed4e5,0x843a5d66,0xbcd65af1,0x181bb73e,0xc4c61f50,0x398d93e5 },
},
{
{ 0xd2e7e3f2,0xc3877c60,0x30828bb1,0x3b34aaa0,0x739ef138,0x283e26e7,0x02c30577,0x699c9c90 },
{ 0x33e248f3,0x1c4bd167,0x15bf0a5f,0xbd9e1287,0xa10b0376,0xd43f8cf0,0xdf191b13,0x53b09b5d },
{ 0x5946f1cc,0xf306a723,0xcce5d97d,0x921718b5,0x81b4e975,0x28cdd247,0x6fcdd907,0x51caf30c },
},
{
{ 0x18ac54c7,0x737af99a,0xc51cb30f,0x903378dc,0x4ce10cc7,0x2b89bc33,0x89f8e99a,0x12ae29c1 },
{ 0x7674e00a,0xa60ba742,0xa17a7bf3,0x630e8570,0xcf3324cc,0x3758563d,0x2383fdaa,0x5504aa29 },
{ 0x1f0d01cf,0xa99ec0cb,0x3a34f7ae,0x0dd1efcc,0xd09c4e22,0x55ca7521,0x58eba5ea,0x5fd14fe9 },
},
{
{ 0xbf93cb8e,0x3c42fe5e,0x36d4565f,0xbedfa851,0x884220e8,0xe0f0859e,0x0725d128,0x7dd73f96 },
{ 0x2845ab2c,0xb5dc2ddf,0x0a7fe993,0x069491b1,0x4002e346,0x4daaf3d6,0x586474d1,0x093ff26e },
{ 0x68059829,0xb10d24fe,0xdbaf23e5,0x75730672,0xb457ac29,0x1367253a,0x86b470a4,0x2f59bcbc },
},
{
{ 0xb691c301,0x7041d560,0xadd7e71e,0x85201b3f,0x11335585,0x16c2e163,0x010828b1,0x2aa55e3d },
{ 0x9917135f,0x83847d42,0x567d03d7,0xad1b911f,0xbe77aad1,0x7e7748d9,0x2e51af4a,0x5458b42e },
{ 0x0c07444f,0xed5192e6,0x74421d10,0x42c54e2d,0xfdb5c864,0x352b4c82,0x8a768664,0x13e9004a },
},
},
{
{
{ 0x193b877f,0xbb2e00c9,0xe0dc506b,0xece3a890,0x36de649f,0xecf3b7c0,0x98de9e1a,0x5f460408 },
{ 0x832fcedb,0x739d8845,0xae6bf863,0xfa38d6c9,0xb74ffef7,0x32bc0dca,0x14bce45e,0x73937e88 },
{ 0x297bf48d,0xb9037116,0xd4f06834,0xa9d13b22,0x4696bdc6,0xe1971557,0x91d5e835,0x2cf8a4e8 },
},
{
{ 0x17d06ba2,0x2cb5487e,0x3950196b,0x24d2381c,0x85978a30,0xd7659c81,0x91d6a4f6,0x7a6f7f28 },
{ 0x07110f67,0x6d93fd87,0x7c38b549,0xdd4c09d3,0xc2736a86,0x7cb16a4c,0x58252a09,0x2049bd6e },
{ 0x6a9aef49,0x7d09fd8d,0x5b3db90b,0xf0ee60be,0x519ebfd4,0x4c21b52c,0xc545941d,0x6011aadf },
},
{
{ 0x02cbf890,0x63ded0c8,0x0dff6aaa,0xfbd098ca,0xb9b6ed99,0x624d0afd,0x79340b1e,0x69ce18b7 },
{ 0xcf95f83c,0x5f67926d,0x71289071,0x7c7e8561,0x998f7a5b,0xd6a1e7f3,0x0b62f9e0,0x6fc5cc1b },
{ 0xb29879cb,0xd1ef5528,0xd47e9092,0xdd1aae3c,0x189f2352,0x127e0442,0xe57101f1,0x15596b3a },
},
{
{ 0x7e5124ca,0x09ff3116,0xd9c745df,0x0be4158b,0x7ef556e5,0x292b7d22,0xafb6d138,0x3aa4e241 },
{ 0x3f9179a2,0x462739d2,0x97d6ddcf,0xff831231,0x53f2148a,0x1307deb5,0x7b5f4dda,0x0d223768 },
{ 0x2a3305f5,0x2cc138bf,0xa2e926c3,0x48583f8f,0x5549d2eb,0x083ab1a2,0x4687a36c,0x32fcaa6e },
},
{
{ 0x2787ccdf,0x3207a473,0xf213e3f8,0x17e31908,0xf60d964e,0xd5b2ecd7,0xc2600be9,0x746f6336 },
{ 0xc57d9af5,0x7bc56e8d,0x9df0bdf2,0x3e0bd2ed,0x22efe4a3,0xaac014de,0xfebd6a5c,0x4627e9ce },
{ 0xab6c971c,0x3f4af345,0x9943731f,0xe288eb72,0x0344186d,0x33596a8a,0x7ed66293,0x7b491700 },
},
{
{ 0xdd53a2dd,0x54341b28,0xdf42fc3f,0xaa17905b,0x4dd2f8f4,0x0ff592d9,0xe08cd37d,0x1d03620f },
{ 0xab84b064,0x2d85fb5c,0x89f3bc14,0x497810d2,0x7b15ce0c,0x476adc44,0xf844fd7b,0x122ba376 },
{ 0xa2b4e554,0xc20232cd,0x115d187f,0x9ed0fd42,0x7dd479d9,0x2eabb4be,0x2b68ec4c,0x02c70bf5 },
},
{
{ 0x458d72e1,0xace532bf,0x7cb73cb5,0x5be768e0,0xee8bbde7,0x56cf7d94,0xfeb43a03,0x6b0697e3 },
{ 0x5d0b2fbb,0xa287ec4b,0x074882ca,0x415c5790,0xc1d0815c,0xe044a61e,0x409ef5e0,0x26334f0a },
{ 0xdf62a3c0,0xb6c8f04a,0x076da45d,0x3ef000ef,0x49f0d2a9,0x9c9cb958,0x441b2fae,0x1cc37f43 },
},
{
{ 0xc9ceaeb9,0xd76656f1,0x18e5656a,0x1c5b15f8,0x844c2334,0x26e72832,0x2f196838,0x3a346f77 },
{ 0x5cc7324f,0x508f565a,0xe506a922,0xd061c4c0,0x5c45ac19,0xfb18abdb,0x0380314a,0x6c6809c1 },
{ 0xe2da6ac8,0xd2d55112,0xb1e851ed,0xe9bd0331,0x8ec67262,0x960746dd,0x6ef7c5d0,0x05911b9f },
},
},
{
{
{ 0x512eeaef,0x5349acf3,0x1cc1cb49,0x20c141d3,0xa99a688d,0x24180c07,0xc64b2d17,0x555ef9d1 },
{ 0xf5df0ebb,0xc1339983,0x512c4cac,0xc0f3758f,0x0bb398e1,0x2cf1130a,0xaa270c62,0x6b3cecf9 },
{ 0x3b73bd08,0x36a770ba,0xa3afbf0c,0x624aef08,0xb40946f2,0x5737ff98,0x3381749d,0x675f4de1 },
},
{
{ 0x3bdab31d,0xa12ff6d9,0x9d652dfe,0x0725d80f,0x9abe9487,0x019c4ff3,0x82cd3c43,0x60f450b8 },
{ 0x6b1782fc,0x0e2c5203,0x6cad83b4,0x64816c81,0x6964073e,0xd0dcbdd9,0x0164c520,0x13d99df7 },
{ 0x21e5c0ca,0x014b5ec3,0xd719bfa2,0x4fcb69c9,0x750023a0,0x4e5f1c18,0x55edac80,0x1c06de9e },
},
{
{ 0xff6d69aa,0xffd52b40,0xdc4049bb,0x34530b18,0xa34d9897,0x5e4a5c2f,0x7d32ba2d,0x78096f8e },
{ 0xa33ec4e2,0x990f7ad6,0xbe2ee08e,0x6608f938,0x63284515,0x9ca143c5,0xec2db60d,0x4cf38a1f },
{ 0x0dfa5ce7,0xa0aaaa65,0x48b5478c,0xf9c49e2a,0x7003725b,0x4f09cc7d,0x26091abe,0x373cad3a },
},
{
{ 0x89ddbbad,0xf1bea8fb,0x61aeaecb,0x3bcb2cbc,0x1f9b8d9d,0x8f58a7bb,0x5112a686,0x21547eda },
{ 0x82c9f57c,0xb294634d,0x24934536,0x1fcbfde1,0x418cdb5a,0x9e9c4db3,0x454419fc,0x0040f3d9 },
{ 0xfd5986d3,0xdefde939,0x510a380c,0xf4272c89,0xbb3119b9,0xb72ba407,0x4a254df4,0x63550a33 },
},
{
{ 0x72547b49,0x9bba5845,0xe2c408e0,0xf305c6fa,0xc734f18d,0x60e8fa69,0xaa7d767a,0x39a92baf },
{ 0xb569cf37,0x6507d6ed,0x0ca52ee1,0x178429b0,0xeb6bd65d,0xea7c0090,0xdaf78f51,0x3eea62c7 },
{ 0xe693274e,0x9d24c713,0x68dbd375,0x5f638577,0xeb8ab39a,0x70525560,0x65c9c4cd,0x68436a06 },
},
{
{ 0xe820107c,0x1e56d317,0x840ae965,0xc5266844,0x320ffc7a,0xc1e0a1c6,0x91611472,0x5373669c },
{ 0x202f3f27,0xbc0235e8,0x64f975b0,0xc75c00e2,0xa38c2416,0x91a4e9d5,0x8ab789f9,0x17b6e7f6 },
{ 0x9a0e5257,0x5d2814ab,0xc9cab3fc,0x908f2084,0x5b2d1eca,0xafcaf588,0x78f87d11,0x1cb4b5a6 },
},
{
{ 0xa2a007e7,0x6b74aa62,0xf071c7b1,0xf311e0b0,0x000be223,0x5707e438,0x82ef6eac,0x2dc0fd2d },
{ 0x394afc6c,0xb664c06b,0x98da5fb1,0x0c88de24,0x4bcad834,0x4f8d0316,0xde7434a2,0x330bca78 },
{ 0x1119744e,0x982eff84,0x2b074724,0xf9695e96,0xbfc953fb,0xc58ac14f,0x369f1cf5,0x3c31be1b },
},
{
{ 0xf9cb4272,0xc168bc93,0xc7cedb98,0xaeb8711f,0x34ac8d7a,0x7f0e52aa,0x7e7d55bb,0x41cec109 },
{ 0x08948aee,0xb0f4864d,0x91ba1c6f,0x07dc19ee,0xa6aca158,0x7975cdae,0x4262d4bb,0x330b6113 },
{ 0xa26d808a,0xf79619d7,0x1d9e156d,0xbb1fd49e,0xdba1df27,0x73d7c36c,0x1f28777d,0x26b44cd9 },
},
},
{
{
{ 0x62730383,0xe1b7f293,0xebca8a2c,0x4b5279ff,0xbfd41314,0xdafc778a,0x9c72610f,0x7deb1014 },
{ 0x8f387475,0x51f04847,0x9cbecb3c,0xb25dbcf4,0xd99f2055,0x9aab1244,0x1c10a5d6,0x2c709e6c },
{ 0x8766ee7a,0xcb62af6a,0x5553cd0e,0x66cbec04,0x0f0be4b5,0x58800138,0xf62ce2ea,0x08e68e9f },
},
{
{ 0x0ab8f2f9,0x2f2d09d5,0xc55923df,0xacb9218d,0x73766cb9,0x4a8f3426,0x38f719f5,0x4cb13bd7 },
{ 0x4bc130ad,0x34ad500a,0x3d0bd49c,0x8d38db49,0x500a89be,0xa25c3d98,0xeeba3b09,0x2f1f3f87 },
{ 0xe515b64a,0xf7848c75,0xdb4a9038,0xa59501ba,0x3f751b50,0xc20d313f,0xc0ae2ee8,0x19a1e353 },
},
{
{ 0xd596bdbd,0xb42172cd,0x98eefc40,0x93e04543,0xb44109b5,0x9fb15347,0x0266ae34,0x736bd399 },
{ 0xbafa05c3,0x7d1c7560,0xc6e55e61,0xb3e1a0a0,0xc0d66473,0xe3529718,0xc20c3486,0x41546b11 },
{ 0x9334b3b4,0x85532d50,0x60816573,0x46fd114b,0x425c8375,0xcc5f5f30,0xb87fab5c,0x412295a2 },
},
{
{ 0xe293eac6,0x2e655261,0x2133acdb,0x845a9203,0x7900996b,0x460975cb,0x195add80,0x0760bb8d },
{ 0xf57ed6e9,0x19c99b88,0x6df8c825,0x5393cb26,0xb30ad273,0x5cee3213,0xb52d2e34,0x14e153eb },
{ 0xcde6818a,0x413e1a17,0xed69a084,0x57156da9,0x46caccb1,0x2cbf268f,0xc33ac5f2,0x6b34be9b },
},
{
{ 0x6571f2d3,0x11fc6965,0x530e737a,0xc6c9e845,0xd4fe5035,0xe33ae7a2,0x2e6dd30b,0x01b9c7b6 },
{ 0x3a78c0b2,0xf3df2f64,0xf22e027c,0x4c3e971e,0x49c1b5a3,0xec7d1c5e,0x0922dd2d,0x2012c18f },
{ 0x5ac89d29,0x880b55e5,0x45a0a763,0x1483241f,0xc2e76c1f,0x3d36efdf,0x4e4bade8,0x08af5b78 },
},
{
{ 0x89cc2c4b,0xe27314d2,0xa287178d,0x4be4bd11,0xfa3364ce,0x18d528d6,0xafd9826e,0x6423c1d5 },
{ 0x881f2533,0x283499dc,0x779323b6,0x9d0525da,0x673441f4,0x897addfb,0x163a168d,0x32b79d71 },
{ 0xedfcb36a,0xcc85f8d9,0x3746e5f9,0x22bcc28f,0xf9e5d3cd,0xe49de338,0xc13e2dcc,0x480a5efb },
},
{
{ 0x42ce221f,0xb6614ce4,0x4c053928,0x6e199dcc,0xdc1cbe03,0x663fb4a4,0x691c8e06,0x24b31d47 },
{ 0x01622071,0x0b51e70b,0x8b1dafc5,0x06b505cf,0xef5aabcd,0x2c6bb061,0x0cb7bf31,0x47aa2760 },
{ 0xc015f8c3,0x2a541eed,0x7c693f7c,0x11a4fe7e,0x4ea278d6,0xf0af6613,0x14dda094,0x545b585d },
},
{
{ 0xe3b321e1,0x6204e4d0,0x28ff1e95,0x3baa637a,0x5b99bd9e,0x0b0ccffd,0x64c8d071,0x4d22dc3e },
{ 0xa0d43a0f,0x67bf275e,0x089beebe,0xade68e34,0xd479e72e,0x4289134c,0x32ba5454,0x0f62f9c3 },
{ 0xd63b5f39,0xfcb46589,0x57cbcf61,0x5cae6a3f,0x953afa05,0xfebac2d2,0x36371436,0x1c0fa01a },
},
},
{
{
{ 0x8c936a50,0x69082b0e,0xc1dac5b6,0xf9c9a035,0xc4dfb634,0x6fb73e54,0x1d2bc140,0x4005419b },
{ 0x22943dff,0xd2c604b6,0x44cfb3a0,0xbc8cbece,0x97808678,0x5d254ff3,0x3b1ca6bf,0x0fa3614f },
{ 0xb9be82f0,0xa003febd,0x3a44ac90,0x2089c1af,0x1954fa8e,0xf8499f91,0xef40ab42,0x1fba218a },
},
{
{ 0x3e7b0194,0x4f3e5704,0x08daaf7f,0xa81d3eee,0x99dcdef1,0xc839c6ab,0xff7761d5,0x6c535d13 },
{ 0xfac8f53e,0xab549448,0x7ba63741,0x81f6e89a,0x6c2b5e01,0x74fd6c7d,0xa8c86e42,0x392e3aca },
{ 0x3e8a35af,0x4cbd34e9,0x5887e816,0x2e078144,0xf29ab0ab,0x19319c76,0xd50ac13b,0x25e17fe4 },
},
{
{ 0x76f121a7,0x915f7ff5,0x2fcd87e3,0xc34a3227,0x4d1be526,0xccba2fde,0x8969899b,0x6bba828f },
{ 0x1e04f676,0x0a289bd7,0xd6420f95,0x208e1c52,0x34691fab,0x5186d8b0,0x2a9fb351,0x25575144 },
{ 0x90fe3901,0xe2d1bc66,0xa0997ad5,0x4cb54a18,0xaf8460d4,0x971d6914,0x7f6b7be4,0x559d504f },
},
{
{ 0xf6d266fd,0x9c4891e7,0x0307781b,0x0744a19b,0x6061e23b,0x88388f1d,0x354bd50e,0x123ea6a3 },
{ 0xb3eb54d5,0xa7738378,0xa5553c7c,0x1d69d366,0xf92800ba,0x0a26cf62,0x807e3217,0x01ab12d5 },
{ 0x41e32d96,0x118d1890,0xd8315848,0xb9ede3c2,0xd83245d9,0x1eab4271,0xc918a154,0x4a3961e2 },
},
{
{ 0xf3233f1e,0x0327d644,0x34fcf016,0x499a260e,0xf2dab979,0x83b5a716,0x9bd4111f,0x68aceead },
{ 0xf8e6bba0,0x71dc3be0,0x7effe30a,0xd6cef834,0xe13a476a,0xa992425f,0xfb1db763,0x2cd6bce3 },
{ 0xf3d7c210,0x38b4c90e,0xb7ad040c,0x308e6e24,0xb7e73e23,0x3860d9f1,0xb508f597,0x595760d5 },
},
{
{ 0xfd022790,0x882acbeb,0xc4115760,0x89af3305,0x7d3473f4,0x65f492e3,0x54515a2b,0x2cb2c5df },
{ 0x04aa6397,0x6129bfe1,0xa4a7fccb,0x8f960008,0x7d909458,0x3f8bc089,0xdcb291a9,0x709fa43e },
{ 0x63fd2aca,0xeb0a5d8c,0x2e694eff,0xd22bc166,0xf8cbb03a,0x2723f36e,0xf0c8131f,0x70f029ec },
},
{
{ 0x5e10b0b9,0x2a6aafaa,0xef041aa9,0x78f0a370,0xaa3ad61f,0x773efb77,0xa74bd9e1,0x44eca5a2 },
{ 0x2eed3e33,0x461307b3,0xa45581e7,0xae042f33,0x195f0366,0xc94449d3,0x6c314858,0x0b7d5d8a },
{ 0x7b95d543,0x25d44832,0xa3340f1d,0x70d38300,0x60e1c52b,0xde1c531c,0x2c7de9e4,0x27222451 },
},
{
{ 0x42a975fc,0xbf7bbb8a,0x96ada358,0x8c5c3977,0xcdedaa48,0xe27fc76f,0xf6bc20a6,0x19735fd7 },
{ 0x49c5342e,0x1abc92af,0xb2e6fad0,0xffeed811,0xfcc84e29,0xefa28c8d,0xa44cc543,0x11b5df18 },
{ 0x42c84266,0xe3ab90d0,0x7f19547e,0xeb848e0f,0x65a497b9,0x2503a1d0,0x91df895f,0x0fef9111 },
},
},
tinyssh-20180201/crypto/ge25519.base.py 0000664 0000000 0000000 00000002127 13227043065 0017262 0 ustar 00root root 0000000 0000000 b = 256
q = 2**255 - 19
l = 2**252 + 27742317777372353535851937790883648493
def expmod(b,e,m):
if e == 0: return 1
t = expmod(b,e/2,m)**2 % m
if e & 1: t = (t*b) % m
return t
def inv(x):
return expmod(x,q-2,q)
d = -121665 * inv(121666)
I = expmod(2,(q-1)/4,q)
def xrecover(y):
xx = (y*y-1) * inv(d*y*y+1)
x = expmod(xx,(q+3)/8,q)
if (x*x - xx) % q != 0: x = (x*I) % q
if x % 2 != 0: x = q-x
return x
By = 4 * inv(5)
Bx = xrecover(By)
B = [Bx % q,By % q]
def edwards(P,Q):
x1 = P[0]
y1 = P[1]
x2 = Q[0]
y2 = Q[1]
x3 = (x1*y2+x2*y1) * inv(1+d*x1*x2*y1*y2)
y3 = (y1*y2+x1*x2) * inv(1-d*x1*x2*y1*y2)
return [x3 % q,y3 % q]
def radix32(r):
o = ""
r = r % q
for i in range(8):
o += "0x%08x," % (r & 0xffffffff)
r = r >> 32
return o[:-1]
Bi = B
for i in range(32):
print "{"
Bij = Bi
for j in range(8):
print " {"
print " {",radix32(Bij[1]+Bij[0]),"},"
print " {",radix32(Bij[1]-Bij[0]),"},"
print " {",radix32(2*d*Bij[0]*Bij[1]),"},"
Bij = edwards(Bij,Bi)
print " },"
print "},"
for k in range(8):
Bi = edwards(Bi,Bi)
tinyssh-20180201/crypto/ge25519.c 0000664 0000000 0000000 00000016447 13227043065 0016155 0 ustar 00root root 0000000 0000000 #include "fe25519.h"
#include "cleanup.h"
#include "ge25519.h"
/* D = -121665/121666 */
static fe D = {
0x135978a3, 0x75eb4dca, 0x4141d8ab, 0x00700a4d,
0x7779e898, 0x8cc74079, 0x2b6ffe73, 0x52036cee
};
/* D2 = 2 * -121665/121666 */
static fe D2 = {
0x26b2f159, 0xebd69b94, 0x8283b156, 0x00e0149a,
0xeef3d130, 0x198e80f2, 0x56dffce7, 0x2406d9dc
};
static fe sqrtm1 = {
0x4a0ea0b0, 0xc4ee1b27, 0xad2fe478, 0x2f431806,
0x3dfbd7a7, 0x2b4d0099, 0x4fc1df0b, 0x2b832480,
};
static void neutral(ge25519 p) {
fe_0(p[0]);
fe_1(p[1]);
fe_1(p[2]);
fe_0(p[3]);
}
static void neutral_precomp(ge25519_precomp p) {
fe_1(p[0]);
fe_1(p[1]);
fe_0(p[2]);
}
/*
p = q
*/
static void copy(ge25519 p, ge25519 q) {
fe_copy(p[0], q[0]);
fe_copy(p[1], q[1]);
fe_copy(p[2], q[2]);
fe_copy(p[3], q[3]);
}
/*
if (b) p = q;
*/
static void cmov(ge25519 p, ge25519 q, crypto_uint32 b) {
fe_cmov(p[0], q[0], b);
fe_cmov(p[1], q[1], b);
fe_cmov(p[2], q[2], b);
fe_cmov(p[3], q[3], b);
}
static void cmov_precomp(ge25519_precomp p, ge25519_precomp q, crypto_uint32 b) {
fe_cmov(p[0], q[0], b);
fe_cmov(p[1], q[1], b);
fe_cmov(p[2], q[2], b);
}
void ge25519_add(ge25519 o, ge25519 p, ge25519 q) {
fe a, b, c, d, t, e, f, g, h;
fe25519_sub(a, p[1], p[0]);
fe25519_sub(t, q[1], q[0]);
fe25519_mul(a, a, t);
fe25519_add(b, p[0], p[1]);
fe25519_add(t, q[0], q[1]);
fe25519_mul(b, b, t);
fe25519_mul(c, p[3], q[3]);
fe25519_mul(c, c, D2);
fe25519_mul(d, p[2], q[2]);
fe25519_add(d, d, d);
fe25519_sub(e, b, a);
fe25519_sub(f, d, c);
fe25519_add(g, d, c);
fe25519_add(h, b, a);
fe25519_mul(o[0], e, f);
fe25519_mul(o[1], h, g);
fe25519_mul(o[2], g, f);
fe25519_mul(o[3], e, h);
cleanup(a); cleanup(b); cleanup(c); cleanup(d); cleanup(t);
cleanup(e); cleanup(f); cleanup(g); cleanup(h);
}
static void madd(ge25519 o, ge25519 p, ge25519_precomp q) {
fe a, b, c, d, e, f, g, h;
fe25519_sub(a, p[1], p[0]);
fe25519_mul(a, a, q[1]);
fe25519_add(b, p[0], p[1]);
fe25519_mul(b, b, q[0]);
fe25519_mul(c, p[3], q[2]);
fe25519_add(d, p[2], p[2]);
fe25519_sub(e, b, a);
fe25519_sub(f, d, c);
fe25519_add(g, d, c);
fe25519_add(h, b, a);
fe25519_mul(o[0], e, f);
fe25519_mul(o[1], h, g);
fe25519_mul(o[2], g, f);
fe25519_mul(o[3], e, h);
cleanup(a); cleanup(b); cleanup(c); cleanup(d);
cleanup(e); cleanup(f); cleanup(g); cleanup(h);
}
/* https://hyperelliptic.org/EFD/g1p/auto-code/twisted/extended/doubling/dbl-2008-hwcd.op3 */
static void dbl(ge25519 o, ge25519 p) {
fe a, b, c, d, e, f, g, h;
fe25519_sq(a, p[0]); /* A = X1^2 */
fe25519_sq(b, p[1]); /* B = Y1^2 */
fe25519_sq(c, p[2]); /* t0 = Z1^2 */
fe25519_add(c, c, c); /* C = 2*t0 */
fe25519_neg(d, a); /* D = a*A */
fe25519_add(e, p[0], p[1]); /* t1 = X1+Y1 */
fe25519_sq(e, e); /* t2 = t1^2 */
fe25519_sub(e, e, a); /* t3 = t2-A */
fe25519_sub(e, e, b); /* E = t3-B */
fe25519_add(g, d, b); /* G = D+B */
fe25519_sub(f, g, c); /* F = G-C */
fe25519_sub(h, d, b); /* H = D-B */
fe25519_mul(o[0], e, f); /* X3 = E*F */
fe25519_mul(o[1], g, h); /* Y3 = G*H */
fe25519_mul(o[2], f, g); /* Z3 = F*G */
fe25519_mul(o[3], e, h); /* T3 = E*H */
cleanup(a); cleanup(b); cleanup(c); cleanup(d);
cleanup(e); cleanup(f); cleanup(g); cleanup(h);
}
void ge25519_tobytes(unsigned char *s, ge25519 h) {
fe x, y, z;
fe25519_inv(z, h[2]);
fe25519_mul(x, h[0], z);
fe25519_mul(y, h[1], z);
fe25519_tobytes(s, y);
s[31] ^= fe25519_isnegative(x) << 7;
cleanup(x); cleanup(y); cleanup(z);
}
int ge25519_frombytes_negate_vartime(ge25519 h, const unsigned char *s) {
fe u, v, v3, vxx, check;
int ret = -1;
fe25519_frombytes(h[1], s);
fe_1(h[2]);
fe25519_sq(u,h[1]);
fe25519_mul(v,u,D);
fe25519_sub(u,u,h[2]); /* u = y^2-1 */
fe25519_add(v,v,h[2]); /* v = dy^2+1 */
fe25519_sq(v3,v);
fe25519_mul(v3,v3,v); /* v3 = v^3 */
fe25519_sq(h[0],v3);
fe25519_mul(h[0],h[0],v);
fe25519_mul(h[0],h[0],u); /* x = uv^7 */
fe25519_pow22523(h[0],h[0]); /* x = (uv^7)^((q-5)/8) */
fe25519_mul(h[0],h[0],v3);
fe25519_mul(h[0],h[0],u); /* x = uv^3(uv^7)^((q-5)/8) */
fe25519_sq(vxx,h[0]);
fe25519_mul(vxx,vxx,v);
fe25519_sub(check,vxx,u); /* vx^2-u */
if (fe25519_isnonzero(check)) {
fe25519_add(check,vxx,u); /* vx^2+u */
if (fe25519_isnonzero(check)) {
goto cleanup;
}
fe25519_mul(h[0],h[0],sqrtm1);
}
if (fe25519_isnegative(h[0]) == (s[31] >> 7))
fe25519_neg(h[0], h[0]);
fe25519_mul(h[3],h[0],h[1]);
ret = 0;
cleanup:
cleanup(u); cleanup(v); cleanup(v3);
cleanup(vxx); cleanup(check);
return ret;
}
/*
if (a == b) return 1;
else return 0;
*/
static unsigned char equal(unsigned char a, unsigned char b) {
unsigned char x = a ^ b;
crypto_uint32 y = x;
y -= 1;
y >>= 31;
return y;
}
/*
point multiplication using windowed method
*/
void ge25519_scalarmult(ge25519 o, ge25519 q, const unsigned char *a) {
long long i, j;
ge25519 t[16], sp, p;
unsigned char e[64];
for (i = 0; i < 32; ++i) {
e[2 * i + 0] = (a[i] >> 0) & 0x0f;
e[2 * i + 1] = (a[i] >> 4) & 0x0f;
}
neutral(p);
/* precompute points */
copy(t[0], p);
copy(t[1], q);
for (i = 2; i < 16; ++i) {
if ((i & 1) == 0) dbl(t[i], t[i / 2]);
else ge25519_add(t[i], t[i - 1], q);
}
for (i = 63; i >= 0; --i) {
for (j = 0; j < 4; ++j) dbl(p, p);
for (j = 0; j < 16; ++j) cmov(sp, t[j], equal(e[i], j));
ge25519_add(p, p, sp);
}
copy(o, p);
cleanup(p); cleanup(t); cleanup(sp); cleanup(e);
}
static ge25519_precomp base[32][8] = {
#include "ge25519.base"
};
static unsigned char isnegative(signed char b) {
crypto_uint32 x = b;
x >>= 31;
return x;
}
static void select(ge25519_precomp t, long long pos, signed char b) {
ge25519_precomp minust;
unsigned char bnegative = isnegative(b);
unsigned char babs = b - (((-bnegative) & b) << 1);
long long i;
neutral_precomp(t);
for (i = 0; i < 8; ++i) cmov_precomp(t, base[pos][i], equal(babs, i + 1));
fe_copy(minust[0], t[1]);
fe_copy(minust[1], t[0]);
fe25519_neg(minust[2], t[2]);
cmov_precomp(t, minust, bnegative);
}
/*
base-point multiplication using precomputed tables
*/
void ge25519_scalarmult_base(ge25519 p, const unsigned char *a) {
long long i;
ge25519_precomp sp;
signed char e[64], carry;
neutral(p);
for (i = 0; i < 32; ++i) {
e[2 * i + 0] = (a[i] >> 0) & 0x0f;
e[2 * i + 1] = (a[i] >> 4) & 0x0f;
}
carry = 0;
for (i = 0; i < 63; ++i) {
e[i] += carry;
carry = e[i] + 8;
carry >>= 4;
e[i] -= carry << 4;
}
e[63] += carry;
for (i = 1; i < 64; i += 2) {
select(sp, i / 2, e[i]);
madd(p, p, sp);
}
for (i = 0; i < 4; ++i) dbl(p, p);
for (i = 0; i < 64; i += 2) {
select(sp, i / 2, e[i]);
madd(p, p, sp);
}
cleanup(sp); cleanup(e);
}
tinyssh-20180201/crypto/ge25519.h 0000664 0000000 0000000 00000000770 13227043065 0016152 0 ustar 00root root 0000000 0000000 #ifndef _GE25519_H____
#define _GE25519_H____
#include "fe.h"
typedef fe ge25519[4]; /* X, Y, Z, T */
typedef fe ge25519_precomp[3]; /* Y+X, Y-X, 2*d*X*Y */
extern void ge25519_tobytes(unsigned char *, ge25519);
extern int ge25519_frombytes_negate_vartime(ge25519, const unsigned char *);
extern void ge25519_add(ge25519, ge25519, ge25519);
extern void ge25519_scalarmult(ge25519, ge25519, const unsigned char *);
extern void ge25519_scalarmult_base(ge25519, const unsigned char *);
#endif
tinyssh-20180201/crypto/gep256.base 0000664 0000000 0000000 00000145715 13227043065 0016655 0 ustar 00root root 0000000 0000000 {
{
{ 0xd898c296,0xf4a13945,0x2deb33a0,0x77037d81,0x63a440f2,0xf8bce6e5,0xe12c4247,0x6b17d1f2 },
{ 0x37bf51f5,0xcbb64068,0x6b315ece,0x2bce3357,0x7c0f9e16,0x8ee7eb4a,0xfe1a7f9b,0x4fe342e2 },
},
{
{ 0x47669978,0xa60b48fc,0x77f21b35,0xc08969e2,0x04b51ac3,0x8a523803,0x8d034f7e,0x7cf27b18 },
{ 0x227873d1,0x9e04b79d,0x3ce98229,0xba7dade6,0x9f7430db,0x293d9ac6,0xdb8ed040,0x07775510 },
},
{
{ 0xc6e7fd6c,0xfb41661b,0xefada985,0xe6c6b721,0x1d4bf165,0xc8f7ef95,0xa6330a44,0x5ecbe4d1 },
{ 0xa27d5032,0x9a79b127,0x384fb83d,0xd82ab036,0x1a64a2ec,0x374b06ce,0x4998ff7e,0x8734640c },
},
{
{ 0x6b030852,0x50930244,0x785596ef,0x031fe2db,0x9ee62bd0,0xa02dde65,0x32d08fbb,0xe2534a35 },
{ 0x184ed8c6,0x5c42c23f,0xf30ee005,0x4efc96c3,0xda862d76,0x19dfee5f,0x4c633cc7,0xe0f1575a },
},
{
{ 0xc3d033ed,0x21554a0d,0x1f5be524,0xef8c82fd,0x08668fdf,0xd784c856,0x515140d2,0x51590b7a },
{ 0xfda16da4,0xd1d0bb44,0xd4d80888,0x0d012f00,0xbf8a7926,0x8ae1bf36,0x904a727d,0xe0c17da8 },
},
{
{ 0x3c2291a9,0xc6b0aae9,0xebb215b4,0x024c740d,0xb897dde3,0x92d3242c,0x76a4602c,0xb01a172a },
{ 0x8fc77fe2,0xfd7c4853,0x1c7e16bd,0x1c00f770,0xfba70379,0x6fec0e2d,0x3237dad5,0xe85c1074 },
},
{
{ 0x3187b2a3,0x30062870,0xa80fef5b,0x7ef9f8b8,0x7c01fb60,0x25bb3066,0xa0bf7b46,0x8e533b6f },
{ 0xc1f400b4,0xc55e1a86,0xcb041b21,0x53c73633,0xa6f59000,0x6d069f83,0xe0331836,0x73eb1dbd },
},
{
{ 0xdb6fb393,0xb4dd9dc1,0x0fce97db,0xc1d23898,0x3ab54cad,0x4042742d,0xbee9b053,0x62d9779d },
{ 0x0f09957e,0xda540a6a,0xbbe76a78,0xa2ed51f6,0x1167cee0,0x4ff15d77,0x91e9d824,0xad5accbd },
},
},
{
{
{ 0x12d0441b,0x2db2e35f,0x0d6a564c,0x190d0b71,0x8603ed61,0x87ffd152,0xb0091659,0x34a2d4a3 },
{ 0x5e93b146,0xb424e784,0xdeddd81d,0xe7d766b9,0x6e777fc0,0x2bca7104,0x53a1e3c2,0xbeaaed6a },
},
{
{ 0x9f3f98de,0x3469cea3,0x0b3c5dfc,0xa416b9ae,0x818d459a,0xe8897bbd,0x8be759e4,0x04c49052 },
{ 0x4e8d6e96,0xebd94943,0x4a4605ee,0x471d9d7b,0x242a8107,0xade84c66,0x405cc74f,0x30e50b46 },
},
{
{ 0xbda08424,0xdce4ae33,0x74f644a9,0x3abfb7ab,0xa95d23ed,0x1b58c5ff,0xadc359aa,0xa98b0a07 },
{ 0xe831800c,0x361287a0,0xa0df582d,0x752be80b,0x8e1d1320,0xe5319e8c,0x22499b66,0x4754c647 },
},
{
{ 0x8e61ca07,0x80e76bb9,0xe1d527e2,0xcdc5849a,0xeb6fe80c,0x897299b9,0x87d4f481,0x16949b72 },
{ 0xa0420427,0xa09c2be7,0xfedf983a,0x4d2d6ac6,0x5b601209,0xbdf997b7,0x770edede,0xe7a4146d },
},
{
{ 0x883c2d6a,0xb52d7e5e,0x81bd29b3,0xd22f918d,0xc85a696d,0xd21b6b78,0xc88daac5,0xa034f009 },
{ 0xc2c30e72,0xf4336ef2,0x16267e7c,0xbe06035f,0x5ceceb06,0xb0cdb854,0xca899c1f,0xfe1b0036 },
},
{
{ 0x8f6752cd,0x6d61fdb4,0x3f3f923b,0xb71bdd3c,0x20b265cb,0xa8420fe5,0xf0e14da3,0x3fb660a7 },
{ 0x64c6017e,0x2f12e8c0,0x1100a0c1,0x8bc013bd,0xd9577d59,0x4c2869c4,0x4224637c,0x6545851d },
},
{
{ 0x28be8c78,0x716a51dd,0x2b793e4d,0x4a096cf8,0x0962e9a1,0xa076e2b4,0x319d4401,0xb52226ff },
{ 0x51686903,0x203367ca,0xe5b58ff3,0x819f7fc8,0x7e92851a,0xca1b3669,0xf539f540,0x701ee0c9 },
},
{
{ 0x1abe45c0,0xe1404a86,0xf46f925a,0x281b195f,0x49b86176,0x886a8f47,0x16475f72,0xb01a67f7 },
{ 0x0090106c,0xc72f0dbe,0x41b62c7f,0x72fc6763,0x164ef994,0xacd56b13,0x5a3956e2,0x7c521bbf },
},
},
{
{
{ 0x6eade3c4,0x03e8465c,0xc9052a05,0x714ab749,0x40e586b4,0x8e5c6433,0x4e91e90d,0xa018366f },
{ 0x6b26e8d0,0xf45c4202,0x44614f37,0xd5f7284e,0x349d8369,0x7c6ce578,0x14110b16,0xe2bbec17 },
},
{
{ 0x47a9112d,0xfebccee6,0xfe1ce3ee,0xeb7d5adf,0xea254c45,0x9ea25487,0x707da2a6,0xcd7ce65d },
{ 0x3a92b3af,0xffbabe0d,0x8bee60a5,0xa190aa49,0xa5ee6708,0x89b9016a,0x4c966f97,0x85e04a4b },
},
{
{ 0x59e0af06,0x6e1cdeac,0x62ed958d,0x92f398a5,0x6d45055c,0x50bd3b5a,0xb88d8964,0x9cdf1f00 },
{ 0x6216ade7,0x8d7a32db,0x197ca546,0x828522dc,0xdc8d94b0,0x4d958bbc,0xd3f2ad66,0x916d25fe },
},
{
{ 0xc3212f1a,0x6c88ad96,0x6c998bef,0xe8af0bc3,0x3705ae59,0x8e67d4c7,0x09963471,0x0f5f0aea },
{ 0x7712b09a,0x755d7b1e,0xde29af7c,0x4f5ed40d,0x4ba16b78,0x5886aadd,0xc8593c95,0xf8a8b2b7 },
},
{
{ 0x9305097e,0x81372b93,0x843ba519,0x38d6170e,0x05404483,0xab6b1b2d,0xd1a663ed,0x45bfd9d5 },
{ 0x908ddc04,0x54ba058e,0xbfd2c159,0x683b9d33,0x470ce908,0xbad88305,0x855afd2b,0x09d1dc12 },
},
{
{ 0xd95bcc47,0x000349ac,0x1a7f80ef,0xb0e2d44b,0x8fa79a96,0x3407fae4,0xf9bfb400,0x7784f06c },
{ 0x80fbb3b4,0x02fbde01,0xd4f6ffb6,0xf464b5cd,0xb2fee6ce,0x3f8de493,0xc3edc43a,0xcca2733e },
},
{
{ 0xb63bd6df,0xcd31f1a0,0xdd66aec3,0xd1fc23c2,0x02895e6f,0x671e9f9c,0x6476693b,0xb599ad15 },
{ 0x8efa09ac,0x8ea1cea3,0x91134b45,0x6a40c4f6,0x8b23c416,0x4637360b,0xc4fab332,0x6979d1de },
},
{
{ 0xfc4471bb,0x2435158c,0xe1e6e917,0x91428bf4,0x0ae25c90,0xf15f0d87,0xd57f5939,0x471ad0a8 },
{ 0x49693a0c,0x454318fa,0x7f23982c,0xb0d7e9ff,0x8094d138,0x2a367ab4,0x778e8e39,0x2234ca62 },
},
},
{
{
{ 0xe392d805,0x3725c5dc,0x875405d4,0xa87a8069,0xfaa3449a,0xa4a54daa,0x4c6a93d7,0xf8f5dccf },
{ 0x6cda02fa,0x02661951,0xa52143ba,0x51f3da64,0x64613273,0x389d3e33,0x66d63054,0xe58176cf },
},
{
{ 0xac51d8a6,0xaca7f0b2,0x78182a90,0xfd42d884,0x48af581f,0x9b317fe2,0x4bc45d9c,0xa118b0f2 },
{ 0x5c87b030,0x8621b55d,0xe376967d,0x81922408,0x09464d6a,0xdf7b25ae,0x0f7e1798,0x698b53fd },
},
{
{ 0x7fa046f7,0x19d4b316,0x0207309d,0x17110f39,0x946e2d45,0x4e084ac8,0x865883a9,0xe12c8e4a },
{ 0xa12646ad,0x53a55a28,0x13311934,0xdd0c04e1,0x393126f6,0x433b3ed5,0x0fd9a2f3,0x7cec0461 },
},
{
{ 0x9cf5250e,0xfa42e872,0x88828675,0x7bd24be7,0x66d715ea,0xde9ec295,0x4e502d2e,0xfcc8ca2e },
{ 0x730fd4a2,0x602e0fbf,0xc03b2120,0x9046bc05,0x8b34da5c,0xf6b9880a,0xeef8bd04,0x30b57bcc },
},
{
{ 0xc2853c43,0xb9b127e8,0xae22e466,0x48166c57,0xe3d13236,0x3d08e2ef,0x17969209,0x394bd474 },
{ 0xa064469d,0xb17828cc,0xd90fcf0c,0xd52f6712,0xf1d60767,0x207e3fc2,0x151dc6b9,0x2b4d6d52 },
},
{
{ 0x74cb5cbf,0x18da08ba,0xbc30f120,0x1f177e3a,0xbc7ed64e,0x26a78cad,0x28b19095,0x81341ae3 },
{ 0x3e856d6f,0x46172667,0x73bc3358,0x80babdc7,0x06cf0349,0x0dd25cfe,0xb2deb5f4,0xf2a47728 },
},
{
{ 0xfc722e94,0xec2dd739,0x6d058961,0x4ed81039,0xc5940433,0x445c6656,0x38de82e9,0xca8538df },
{ 0x1049a527,0x3a0a62df,0xa48b26a4,0xf20953a8,0xa1fb9f12,0x11e73126,0xeb9e05c3,0x3b27fc42 },
},
{
{ 0x89a95e03,0x2318aa04,0xd2af3c3d,0xf349f675,0xcf2e4e3a,0xee9a4b43,0xfa35ddc0,0x24bbe05b },
{ 0x8d793c4d,0x87df45ed,0x375aa149,0xd40aa52e,0xd2760faa,0x17182d4d,0x090a22cf,0xd49405ee },
},
},
{
{
{ 0x185a5943,0x3a5a9e22,0x5c65dfb6,0x1ab91936,0x262c71da,0x21656b32,0xaf22af89,0x7fe36b40 },
{ 0x699ca101,0xd50d152c,0x7b8af212,0x74b3d586,0x07dca6f1,0x9f09f404,0x25b63624,0xe697d458 },
},
{
{ 0xc68278c2,0x336dd1e7,0xa60e47c0,0xa1dd10b8,0x43adfa5a,0x6554caa3,0x47864343,0x61779471 },
{ 0xefabd2cf,0x9d03ecb2,0x2317a1a6,0x32796999,0xc8986473,0x03bff005,0xa568791f,0x4ecee7d5 },
},
{
{ 0xdf0922a8,0x76a78091,0x545cf8d9,0x8e90e9d2,0x022f8b80,0x80924e56,0x5b4e2d73,0x4b656a40 },
{ 0x999a80bb,0x4dadcac5,0xb9850f69,0xd473b9e2,0x55d8c4d6,0x20d04cc2,0x12e77839,0xee1ea31d },
},
{
{ 0x5a7d9344,0xaeab9396,0x0101b56b,0xf7221aba,0xabf96019,0x193d8758,0x89729d1a,0x521cf0cd },
{ 0x96b7064a,0x4529f281,0x5a95fba1,0x7a1341ca,0xd386371b,0xc583fe0e,0xcbf9e9ba,0xd60220da },
},
{
{ 0x69d07e9e,0xb504f888,0xf6a60c36,0xa09e7ca1,0xfb3d8e5e,0x93db2be0,0xbd65e13d,0x9d78956e },
{ 0xc3d8c8ee,0xf4dd615a,0x3b94c7b2,0x7460a2da,0x1d3210ce,0x6542a89c,0xf48ea8cd,0xd5149e6e },
},
{
{ 0x3b281418,0xbb430cf3,0xb0000e35,0x7ce5019b,0x3639e706,0x4d56c261,0x8863a8dd,0x7c86b3ad },
{ 0x3117e0ec,0x79dd3eed,0x7bc0861b,0x82ea7c31,0x68daa72f,0x4c62b977,0xeebefe95,0xd958bacc },
},
{
{ 0x7dc4950f,0x66775086,0xbd394207,0x5741b2ad,0xe4db6316,0x57236846,0xe1353fa9,0x4acb1272 },
{ 0x63d8b4df,0x66c6e444,0xb5866ac5,0xdf9e4280,0xcc71e29f,0x8cf298f6,0xb743cdad,0x726cd20f },
},
{
{ 0x2b3fce8c,0x0b3184a3,0x1543d1a7,0xbd4bbdec,0xce42700b,0x562fc9ef,0x328ed07b,0x176c11c1 },
{ 0xa3c9f19f,0x6ea68436,0x5bb51ab1,0x5c5d842a,0xb7de3b7e,0x89592180,0x934b8a35,0xd17f8dae },
},
},
{
{
{ 0x4d9aefbd,0x258fca6c,0x73b95775,0x1efe47b2,0x41bc43dc,0x32ca9f0d,0x8c669d76,0x0fbc341c },
{ 0xd3e71ca0,0xed3b6ea9,0x200a9ff1,0x950b069e,0x4957d3d3,0xe4014b1d,0x2f360e3f,0xbd802263 },
},
{
{ 0x73e44b54,0xf3a6db8a,0x7c1e27f7,0x54dbeefa,0x2620546c,0x2dcb6c35,0x9d8f776a,0x82901931 },
{ 0xfe5fe6ac,0x6803f5e4,0x01135484,0x9f47a0a1,0xac1dd9a0,0x65888d6e,0x3ea8fa1d,0xe6a26e71 },
},
{
{ 0xe9434837,0x8796dffe,0x8620c1bb,0xadb3140b,0xfb4fb06d,0xb1341c6f,0xc4a87aed,0xd76d18ab },
{ 0xbb215b4c,0x4faa04f9,0x75b7ccc2,0x90a458e7,0xf7ab9332,0xde0e4214,0x2ed96644,0xf6bc4da3 },
},
{
{ 0xea394a20,0xa5e743ce,0xe198a281,0xb41ca518,0xb517ac92,0x444cd57d,0x2299cf2a,0xc48dbfa1 },
{ 0xea77a75b,0x4a0580db,0x991bb5e2,0x9440b125,0x1bdbd6cd,0x64ff2e41,0x0e1380ba,0xbc83cba0 },
},
{
{ 0x9c07f222,0x02e89f21,0xac60fe7d,0xc5e21c63,0x1f1753d1,0x4f481d1a,0x6167ff60,0xd5c0c650 },
{ 0x0c6ffd57,0xe2ef691e,0x78813a86,0xbaf3f51a,0xf49f75b9,0x0cde0c77,0x0817b885,0x15a30b86 },
},
{
{ 0x96a178d4,0x5bb8cbe5,0xf408a8ef,0x2233bc4f,0x8bce969c,0x4439015b,0xfcb52791,0x1b71b816 },
{ 0xb5507f51,0x4a2d7ebb,0xf6cc1171,0xe0e5b6c1,0x8d738fc0,0xde6ef1c2,0xa48a8e2c,0x7e659d1d },
},
{
{ 0x4e93bfa6,0x4a4716a2,0x09a1362a,0xd39d295a,0x6b4c9fe0,0xe549cba6,0x4a46f62c,0x734c364e },
{ 0x98d10774,0xfc6fa799,0x890297c4,0xeca13620,0x520c5f48,0x9de981e3,0xaaa79d04,0x09951503 },
},
{
{ 0xb049e7cd,0xcd013f88,0xe57fdc00,0xe8f9257a,0xfc3a9301,0x3be71969,0x58cff937,0x987f256d },
{ 0x6efa35d6,0xb7254bbc,0x07aaffdb,0x47b46052,0x0007e39e,0xe860ebd6,0x94ec505c,0x8e926956 },
},
},
{
{
{ 0x17e55104,0xc2ebaf80,0xbb8e9c71,0xf73a835f,0x4d8b561c,0x63de93c3,0x27b78737,0xd8de7652 },
{ 0xe52e08cd,0x2a02ef80,0x1940db1b,0xc2f73fce,0xd1dcf924,0x5c4c628a,0xbe13f2d1,0x2fd29465 },
},
{
{ 0xf722a81b,0x06eb9409,0x9467b68f,0xe9227bab,0x56a0a320,0x6020f717,0x9a38b79b,0xd03eb26a },
{ 0xd8a85767,0x95e25f86,0x6df208f5,0x9dff1a28,0x5262d412,0x6ce05704,0x2c21a3e7,0x50c5fcb0 },
},
{
{ 0xe987bfd3,0x6939c2c7,0xf4c4284c,0x87c5472f,0xfaddd191,0x551dfbea,0xbd518e33,0xe3a5786f },
{ 0x8cc23e7d,0x7ed31b6c,0xd928e081,0xa3dcf2ec,0x4ad8210c,0x8477b9ff,0x535840e6,0xf74bad09 },
},
{
{ 0x03f61c13,0xe834110d,0xf1790dd7,0xff6986d6,0x07c7976f,0x2d3ad94e,0x0eb8cda7,0xfe409101 },
{ 0xbda0b3ae,0xc3d3cecd,0x99e1d973,0xf986fbdb,0x093b0b79,0x39486faf,0xda404032,0x081759c1 },
},
{
{ 0x22d5056e,0xb67951d2,0xe247a07c,0x0edcb5a7,0xe96e5e48,0x11525ffc,0xeca520d4,0x42a97041 },
{ 0xb0f7db11,0x48414dc8,0x6e9fd1fd,0xb64e483d,0x6b563b26,0x6ec36dd2,0xcf008706,0xf2fc7f66 },
},
{
{ 0x0a94a6b1,0x7bca829e,0xd0d9e4b6,0xca300c28,0x93fc4323,0x28a7cebe,0x2aa7b78d,0x5873b9f3 },
{ 0xde524c9d,0x52bf9f98,0x9ffb3df0,0x1f505488,0xc39bb95a,0xf4e0379c,0xed5e2eb5,0x17a7dbf4 },
},
{
{ 0xd3dafd3b,0xc6745f91,0x2dcb3956,0x6fb899f0,0xd65379d6,0xfe232c2e,0x1c27964c,0x0d6ca71b },
{ 0x1a6fe6e8,0xd6adf142,0xee88771a,0xa02248ab,0x2707de58,0x9fe494a0,0x8fde293d,0xa85130b3 },
},
{
{ 0x8fa8ee41,0x13d00c24,0xc7743648,0xcb4e6644,0x63154403,0x1e809570,0x39dd5895,0xc90e3008 },
{ 0xc3d7c1ae,0x47a63667,0x17accd6e,0x50455347,0x53840362,0x9c0710c6,0x6d19e73c,0x62f50417 },
},
},
{
{
{ 0x22d32936,0xc30fb771,0x32847f01,0xe40cd02e,0x513d7f38,0x9f6cc7d1,0x7814a47d,0xc5440c59 },
{ 0x47cabfd4,0x9a42fa37,0x31e41e5d,0xd8a6d286,0x23ecf4ac,0x2edc1e1d,0x383e1fa7,0xd27ee9ba },
},
{
{ 0x2c2e32b9,0xcbe1a18d,0xfbd492c0,0xf165803d,0x2f5bab12,0xff3e42d5,0x2daa15af,0xd07e9589 },
{ 0x2c1a4f5c,0x5e78ad6a,0x5228e81e,0x23ed98f1,0xf893ef4e,0x731f0769,0x06724528,0x774e4d65 },
},
{
{ 0x7989a8e1,0x7d8501ec,0x74ee4bdd,0x7c1d96f3,0x9b9cfe0a,0x7500e047,0x5cdfa79b,0x3e4d03c4 },
{ 0x441c240a,0x98791388,0xf3bd6740,0xffaf18d5,0xd7caa719,0xaac117ca,0x815a6475,0x12f744d0 },
},
{
{ 0xf79f7b91,0x7601aeee,0xe19d957c,0x4275a149,0x95829d32,0x3a06ae02,0xb86fd8fc,0x437f6e07 },
{ 0x75270033,0x64b6ace3,0x91396833,0x589a7711,0x9b15d63c,0xbf38b828,0xa889f13a,0x5fe8d37c },
},
{
{ 0xd9bb7902,0x6939a8d0,0x86b7c73f,0xd8c26c72,0x94485e9f,0x9a9a249e,0xb3d61035,0x01b68449 },
{ 0xe03ee653,0xcd7f44b1,0x71836682,0xfceb2604,0xc36d1581,0x0bf198e5,0xe9379c3e,0xe59063a1 },
},
{
{ 0x45046203,0x360cdeed,0xdc6cfcbd,0x5533528a,0x7d06e463,0x53466599,0x17fd7e77,0xd2ea9fb2 },
{ 0x3e8ea623,0x8599f27a,0x6a34c3f5,0x15dff2d5,0x24500d44,0x5b064208,0x9f909a70,0x16ad23b0 },
},
{
{ 0xc371d9fe,0xc29b56d4,0x1999d6bb,0xf04b356c,0xc3ab3a4c,0x335955a7,0xaccc9ca2,0x952c3cb1 },
{ 0x4189a13f,0xd76ce6d2,0x1808c75e,0x664464f1,0xf6ece5d0,0xa7df9136,0xf7d62f06,0x59b98546 },
},
{
{ 0xc51cd9c7,0xa969ecfe,0x3447db8f,0xb80a7c8a,0x6483ee28,0x79ca1e2a,0x5cab844f,0xcecdff7a },
{ 0x29389632,0xeb76eac7,0x645e5a3f,0x0d09d06b,0x9c7d0f6b,0x92af6881,0x22868008,0x9323e54d },
},
},
{
{
{ 0x8e14db63,0x90e75cb4,0xad651f7e,0x29493baa,0x326e25de,0x8492592e,0x2811aaa5,0x0fa822bc },
{ 0x5f462ee7,0xe4112454,0x50fe82f5,0x34b1a650,0xb3df188b,0x6f4ad4bc,0xf5dba80d,0xbff44ae8 },
},
{
{ 0xa05f57b5,0x794a16ba,0x57324591,0x53fe448a,0x06960801,0xe4c13d03,0xdf8dc746,0x031a8747 },
{ 0x9c0343fd,0x1827ee57,0x42b8def2,0x1431c18c,0x1e387a32,0x60e8aa6c,0xfda8d586,0x883a2c64 },
},
{
{ 0x7db3cdec,0x752c453f,0xb228ebf5,0xdbef3a12,0x7bea4bc8,0xe596645e,0xff912f5c,0x85b2c064 },
{ 0x4a03f81f,0x8f4d0820,0xe64cf8e0,0xdc980b34,0x2fcc6d00,0x63c7fa2d,0x39d11536,0xf64b278f },
},
{
{ 0x580b2322,0x015e2e65,0x96513cca,0x4eccac60,0xc0d5934a,0xf9571975,0x9b973c17,0xa7163c2b },
{ 0x2197ffe9,0x3933b223,0xe09952d7,0xb841a4f4,0x545a6b7a,0x63389991,0x7af31fa5,0x308a9a79 },
},
{
{ 0x8607b030,0x288a5ae4,0xe584d673,0x24daff63,0xec16f29c,0x7851fbac,0xc4021467,0x110b0376 },
{ 0xb3617c3a,0xf43aa112,0xfb298749,0x87be1556,0x8461c70c,0x4c6eb89f,0x318ee673,0x84432b85 },
},
{
{ 0x6a334020,0x9afbd391,0x8ef9afb9,0xa1815999,0x517690ac,0xe22a0772,0x875d4eed,0x3c714524 },
{ 0xba701655,0x6102a85c,0xe7938c2c,0x152fcaaf,0xff7f3d8c,0x4889e729,0x771aaf5c,0x7f090565 },
},
{
{ 0x75a76f08,0x54edd81c,0x8bbbed4e,0x3295f253,0x2b1caaf8,0x14f6e124,0x9f6471d7,0x18784e44 },
{ 0x6b824993,0x0b39605d,0xa60a2532,0xfc9d74a7,0xac71e671,0x1777a8fd,0x4a1e1ae7,0x8d76ed7f },
},
{
{ 0x5c42a280,0x6cb04a6a,0x2db2670c,0x02a50c38,0xef4b991f,0x811b3923,0x03ab8279,0x1bffab8c },
{ 0x4ddb9261,0xc9c74236,0xa9d24fb6,0x982a369a,0x529f1aaa,0x332ac758,0xceb1d098,0x2982b620 },
},
},
{
{
{ 0x70aae231,0x60aafad1,0x79f96b7c,0x5194b852,0x9267756f,0x85f24823,0x9761e3f2,0x1d35c969 },
{ 0xccd6ac71,0x5867063a,0x729a66f1,0xedf58aa4,0x22ebf810,0x1d660ab6,0x2df60823,0xc7226cb6 },
},
{
{ 0x26432d92,0x501a3274,0x2b473903,0xd9c9823c,0xa6397ab4,0x9910e1c2,0x7800cdd8,0x6f2b065a },
{ 0x63e17c9f,0x6d2d1c49,0xe33dbecb,0x093bf02d,0x700826c5,0xeb1472cf,0xe5e7a2e4,0x0acfeb77 },
},
{
{ 0x8cfa3fac,0xce0d3fe1,0xc32b8193,0x23ad869f,0xd60d8030,0xe2cebb45,0xa6d2234c,0xdf3d4047 },
{ 0x8fc7d419,0xf4626d93,0x96882975,0xafd63ce4,0x9c0f9dbf,0x24aa21f2,0x29fd40db,0x48fa6f52 },
},
{
{ 0x8a6edbf5,0xe3065e08,0x9662876b,0x2f335256,0xfdadd0af,0x68991da7,0xa3dd7774,0x870ac12b },
{ 0xf02f8ce3,0x1906d2dc,0x2e5f297e,0xd03c6402,0x69d05a67,0x8de7efd7,0x999a7699,0x7543728b },
},
{
{ 0x1f1322d4,0xaed925ae,0x4accdcbb,0xcb0a6940,0xa311f822,0xea1e6c4c,0xb1f96144,0xdbb2af6a },
{ 0x4a8c5311,0xaa492b4f,0x7b7e3a5f,0x9a9fc978,0xd6433f9d,0xa1b60d1e,0x2f13561a,0xebae75b9 },
},
{
{ 0x373a6b7a,0xe8a58ada,0x6252d45b,0xf3adf06c,0x14226d09,0x09b667aa,0xb5222134,0x17b29fd1 },
{ 0x4844ebac,0x0c148207,0xd388cbae,0x39d03897,0x3efefbd2,0xe9924e66,0x352f3d4e,0x15fb4490 },
},
{
{ 0xa1138f7b,0xf069a33c,0x2df2e8f2,0xc4c1c93e,0x7f9b5f0b,0xcafa8a26,0x7f261fd4,0x1dba7b59 },
{ 0xa39bf268,0xdc82d8c7,0x998232c0,0x8136e6b7,0xbb8007f5,0x3ae19006,0x5de7efc6,0x6aaf7d3e },
},
{
{ 0x50c06af3,0x7aa6e463,0x9fdbf0f0,0x6a9e8c74,0x8034db34,0xa0bf5fef,0xda0d5592,0xdbec13e6 },
{ 0xb6d243ed,0x7caf0f7c,0x64edb664,0x42243a32,0xb745e4d4,0xc0e57348,0xd619e5f8,0xf859978f },
},
},
{
{
{ 0x4351964c,0xd4d3d2de,0x6f5412c1,0x34692437,0x85755c08,0xae5abca1,0xbe28c47f,0x6e29f959 },
{ 0x563fd88f,0x118824bd,0x7a0bfb63,0xef640c52,0xc184246d,0x5052ec6c,0x500f32f6,0x34565d9f },
},
{
{ 0xe5e84da4,0x61e0f0ef,0x6ed90cad,0x3b09f077,0x496e6894,0x10cfa381,0xb5909a0b,0x8efa0f79 },
{ 0x596969d3,0xfde19f42,0x97816035,0x79957c48,0x5daafd14,0x9fa46f1c,0x934cd613,0x242418e7 },
},
{
{ 0x8c0e49cc,0x3f950103,0x5bc5400d,0x41232da8,0xcbb740ed,0xdd8288de,0x78970f6e,0xd691d4a9 },
{ 0xd00f4152,0xdd0bb4c1,0x2ad043f2,0xac5be1d0,0x763e0c52,0xf7fbbdb5,0x4b78f397,0x7a79e787 },
},
{
{ 0x023ac4ce,0x4acaf2c0,0x1eb3f397,0x1f8973e3,0xf360db2f,0xb9d6d6d0,0xcb8fdb30,0xd0d4af73 },
{ 0xa47dd6b9,0xe3df0360,0x863aae77,0x61850b1c,0x3e529530,0xbbe9ccee,0xf15d7ddc,0xed90f8c8 },
},
{
{ 0x2b9b930a,0x3d876b9f,0x4530f58f,0xdeb1352a,0x7a7bbc49,0xdee5b7df,0xa2e0d7c5,0x2a5d6846 },
{ 0x3b2caeca,0x86ff345f,0x5e271685,0xea5b7343,0x03c4ab58,0xe5ccf039,0x6876476d,0xdc3d7c09 },
},
{
{ 0xb886719a,0x0bc6e130,0x470922f0,0x165cb495,0x332b75e3,0xfd851c4d,0xe445915b,0x8b277f8c },
{ 0x6ed37c38,0x078b30fe,0xcea31a3d,0x55213780,0x69ec9139,0x6e4b52ee,0x164543bc,0xcf44d77b },
},
{
{ 0x816959ef,0xfa7dcbd2,0x741db59a,0x7679d056,0x2e275df8,0x2f043141,0x389bb526,0x8764496a },
{ 0xe0cd5010,0x660311cb,0x72f9e3f1,0x2856ad41,0x96ed961f,0x9e0b4127,0x1d002ffd,0x599b69d6 },
},
{
{ 0x92397d42,0xe399da61,0x51256eac,0x38d1d602,0x65b85f90,0xa6d6f71b,0xed5452e8,0x829b8dd0 },
{ 0xe3df5612,0x91b71631,0x63ad1a5d,0x5c5adc42,0x896241af,0x99e73c8a,0x3fccf46d,0xd300ec54 },
},
},
{
{
{ 0xc5852e50,0xc7d0b24c,0xcf570cc5,0x8b2c7e63,0x49ee7eff,0xc1f9aa23,0xfeabb058,0xe486c7df },
{ 0xaecf107d,0x66ba3cad,0x3392ebd8,0x694463d6,0x9f51e05a,0x9ee88a5c,0x5606a12e,0x51fd75ed },
},
{
{ 0x78692e20,0x74502ca3,0xc339d0ea,0x63ad9e86,0x906276e9,0x21ff1441,0x5a5fcb88,0x69a16e24 },
{ 0xb3116c8f,0x996e69a9,0x0f7da894,0x113d2862,0x4cddba10,0x06f01e9a,0x891afc01,0xa7c968cd },
},
{
{ 0x5c881907,0xc66aa645,0x5b00b1da,0x142c8673,0x66ae0415,0x964105cc,0x8e2ffb7c,0x4acf44bb },
{ 0xf63cdafc,0x2926b456,0x7cd84b25,0x99352b2f,0xd10a5457,0x3544285a,0x0ffd587b,0xad99a8fe },
},
{
{ 0x06bc8d71,0x47bde797,0xc79b0d17,0x7a39f95b,0xfa0e745a,0x21190e12,0x7eefb2c7,0xdcad8b2a },
{ 0xa297fcf2,0x470cfe2e,0x7b717b56,0x2726c407,0xe07c0fa3,0x2211993c,0xb91faf9b,0x8bf1287a },
},
{
{ 0x7439383f,0x82bae069,0xb601a2aa,0x34ffa562,0xc8234eec,0xdd7aa292,0x4188a649,0x4ddf2283 },
{ 0x23d52337,0x632fa818,0x131f8269,0x3dd5d045,0xd38c0c6b,0x74abae97,0x0d91883d,0xe71c627b },
},
{
{ 0x0ef15db0,0x1f6b16a3,0x01c829f8,0xef4c1ad6,0x882eba59,0xf3f78331,0x1731eb21,0x89be840a },
{ 0x1d0b8200,0x791d68c7,0xca29a81f,0x53b9df77,0x75e9016c,0xf4c56446,0x3cb32816,0x70ec8c19 },
},
{
{ 0x5822b4f4,0x26dc8815,0xf865df8f,0xa5353afc,0x797bf39b,0x1334e9e0,0x1379879e,0x58b06579 },
{ 0x0c60fbca,0x6607a821,0xfc4e5259,0x1ca4a076,0x0262836c,0x027ca55f,0x145a2c37,0x55a98aa4 },
},
{
{ 0xaa99ad56,0xd7273629,0xad0e2f87,0x13fea55a,0x228c57c4,0x4dca9848,0x1d318bc5,0xd9f8b377 },
{ 0x5f5c61b9,0xd4e91938,0x31f63cb4,0x995de59a,0xfb70a4a3,0xc6551557,0xf0d22377,0x07aad641 },
},
},
{
{
{ 0x7512218e,0xa84aa939,0x74ca0141,0xe9a521b0,0x18a2e902,0x57880b3a,0x12a677a6,0x4a5b5066 },
{ 0x4c4f3840,0x0beada7a,0x19e26d9d,0x626db154,0xe1627d40,0xc42604fb,0xeac089f1,0xeb13461c },
},
{
{ 0xbf8d5842,0x1b68edcc,0x8455b67c,0xda74be4d,0x3eb337c5,0x52147314,0xccdaf543,0xcc8fe9ec },
{ 0x487100c7,0x567e1ac9,0x458677c8,0x5df1592d,0x0b91fb77,0x75cec614,0xd9f2fc3f,0xc2a5d01c },
},
{
{ 0x518473fd,0x52ef40e2,0xc6973391,0xbbb9026b,0x9728a9e3,0x85292ab9,0x33318ba0,0x10640632 },
{ 0x785cf805,0xafa6162e,0x0c21d039,0xcfbe190d,0x6585883c,0xc8e7829e,0x3b8ba2d8,0x9c683282 },
},
{
{ 0x0c37da54,0x23f389be,0xbc1184de,0x71b0b96c,0x37e86261,0x8006b50f,0x0823d8ce,0x11c88139 },
{ 0x08ee3df5,0x567c6514,0x384d2adf,0xb3e32b21,0xcaf61ae4,0xa42aaf13,0x6726bda3,0x82f5ca51 },
},
{
{ 0x653f30f3,0x3567eec8,0xeda238dd,0x2b423ed2,0x54083f21,0x5eda410d,0xf05f27bf,0x38c8ad8f },
{ 0xebe9217b,0xa060e749,0x2959df37,0x6583fa98,0xddbd641f,0xf3909654,0x76dcb116,0x83c26178 },
},
{
{ 0xfd7046cc,0x62b66e34,0xe32d8d77,0x280398b6,0x930f5e51,0x23a5d12e,0x505a876c,0x3f789c12 },
{ 0x90683e4d,0x14878565,0x8e0b3fd6,0x6320de84,0x964e47a2,0x64c974dd,0xa291a6e5,0xd0d9f1b3 },
},
{
{ 0xb6ef1584,0x543e6911,0x8f920cbf,0x77a9a2a3,0xfd351842,0x5858fbe3,0xe860bb09,0x6fcb8cbc },
{ 0x1d3110f2,0xc3c9f7c2,0x928a4325,0x5992f6d6,0xac30459d,0xd54c0823,0x8b721d76,0xa8f1a83d },
},
{
{ 0xfd698f73,0x355c95a1,0x2a5c98ea,0xcb4cb3a7,0xfc8b8d71,0x676e37e7,0x52a32680,0x9c7a4efa },
{ 0x120cf142,0x122443bd,0xea879e7c,0x94b07cd5,0xd0ade69b,0x16c424c1,0xb2150c7b,0xa2c4a71a },
},
},
{
{
{ 0x3ecca7e0,0xc739a5ea,0x6743333e,0xa7d2c98f,0x224d9428,0x0fef6335,0x5c792a0c,0x7ef2ee3c },
{ 0x552ac094,0x302b22dd,0xdfbd3d20,0x81b21450,0xd5e609db,0xa4f67f51,0x30acc011,0xafb68627 },
},
{
{ 0xab896d0f,0x6db02c92,0x0c09223c,0x5e880be5,0x6986c76b,0x93539def,0x86e68db1,0x06464724 },
{ 0xa4f528ea,0x90d74508,0xc63b4f90,0xdb1b895d,0xf9047cfe,0xf2b3f5ce,0xfe7063bb,0xf1f4ee22 },
},
{
{ 0xa33f0ffa,0x72f3583d,0x11807a41,0xcae4cac6,0xc9d9c641,0x7624a576,0x16887acd,0x37045727 },
{ 0x60fa35ac,0x5fed3fc6,0xaa8bf2fc,0x57ba3eb7,0x8895ff4c,0x841bb4bb,0x1a71e74f,0x5c6408c6 },
},
{
{ 0xa8d5825e,0x699c584d,0x384d570b,0x7beb467e,0x4ff03fd1,0x2ea71354,0x5292fc71,0x0d42e1f1 },
{ 0x7a8946b3,0xed180897,0x4b4340cb,0x0c4cb2ec,0x5a85ca7e,0x2c1f17a5,0x21f69acb,0xadda2b0a },
},
{
{ 0x32603513,0x3c6f9865,0x814a0095,0xf6c64dc6,0xc08bb697,0x2d1eaa42,0x4298db72,0xc2a979e5 },
{ 0x3c3505b9,0x95755b2c,0x48151449,0x8cc666df,0x935bce7e,0x54278081,0x1e6eb5c8,0xef9dd74a },
},
{
{ 0x15fc7295,0xdfb7dbf3,0x49cf786f,0x4307ad95,0xf115d687,0x3fb48be1,0xd603693a,0xae67ecd7 },
{ 0xfa4f5b62,0x04ff9c5e,0x2c2aee34,0xfc301972,0x4a82d9c1,0x072b94b8,0xa5faa6d2,0xd23cd2ae },
},
{
{ 0xd9fdee3e,0xe646ffb1,0x6c302e01,0x681f9771,0xdb17afb9,0x172bb15c,0xb1fc59e1,0xc9f4186a },
{ 0xcced22e7,0x51e66cc5,0x7b58df4f,0x44e1531c,0xb8832143,0x0df73142,0x3cb3a341,0x09420a7f },
},
{
{ 0x9ad780b2,0xf9c18a46,0xf68440e7,0x8c3b0da6,0x8f9ae751,0x0e19d0c2,0x945c7db2,0x44dc4d9e },
{ 0xab93b11e,0x91437413,0xc2cec39d,0xb47775e1,0x683f5f95,0xf8fd19dc,0x45c2f9c9,0xdbeb9187 },
},
},
{
{
{ 0xe2f2b734,0xf0699bf9,0x5501d267,0x79c3bb5b,0xf1164457,0x0634a786,0x9eecc99a,0x224a0229 },
{ 0x91ec7fdf,0x840f5854,0x73c7afd0,0x07b704b6,0x871d7fff,0x149a08ad,0x9b6d22b4,0xfa41a8d2 },
},
{
{ 0x1991e607,0xa8df3dae,0x196e11de,0xe310d10e,0xaf6b2261,0x760f78b8,0xbea5bda1,0xafd35b35 },
{ 0x4308126f,0x5e0b73bc,0x2155af41,0xbab7d987,0x6b81ec93,0x96d8ee26,0xe204e994,0x03555f48 },
},
{
{ 0x5d254033,0xc9e92f47,0xc2a4707a,0x78368280,0x88b6f240,0xfcdadfa6,0x153cec59,0xe63502ee },
{ 0x68f05e3f,0x7e8aa889,0x4bfcf360,0x2c915a0c,0x0709ce48,0xad74e80f,0x1f621e11,0xa7c5837b },
},
{
{ 0xf0b9a00a,0x7e16cc51,0x2f93e68f,0x05174da4,0xb56175d5,0xa0c7cc97,0x35eb4955,0xe5ceac40 },
{ 0x67984a57,0x157ff80e,0x86fe794f,0x8ceddb75,0x3396d1e4,0x854a459c,0x1fcd56b9,0x660cb930 },
},
{
{ 0xe1e08f33,0x2b9609af,0xcb982cca,0xb1fd631d,0x33f000e2,0x12ab45c5,0x72eb9687,0x5648dec2 },
{ 0x4269f1c9,0x26eed9ac,0xe0117951,0x3e72bbf2,0x4d77a269,0xf478f5c6,0x708f7043,0x95fddc70 },
},
{
{ 0xe8a5c546,0x8daa3455,0xa3187b91,0x1f0ea68b,0x5268d693,0x3e774b6d,0xafc5667b,0xa643c538 },
{ 0xd3fff857,0xeb1e337c,0x0dc64a7b,0x4893db48,0x1cfd3519,0x46003301,0x4377db0e,0xa8d602ea },
},
{
{ 0xfab98c43,0xe3b8200b,0x7e3e8aa4,0xc5ba5775,0xcbec8f03,0x95152f8e,0x3380ed26,0x1941c19f },
{ 0x22abe217,0x8fa210da,0xb8df5639,0xd8f62d3d,0x48fb8c53,0xe2b6db2a,0x595db2b6,0x8e66b834 },
},
{
{ 0x2343750b,0x4f556db2,0x7d329c76,0x944995a2,0xa2b75f9c,0x8ec64fd2,0x2be67902,0x0e415c46 },
{ 0xbecd56cc,0xa6097c15,0x5ff7ec06,0x6ef691a4,0x77f8cddc,0x27bca210,0x77f984e2,0xc3056e71 },
},
},
{
{
{ 0x72bd05a0,0x3438c84a,0x0b1fc80d,0xba82337d,0xf36d1f90,0xedc2f995,0x3a31885c,0xe5e89236 },
{ 0xe1a69f5d,0xc936de2b,0x9cd099ae,0xca73995b,0xe79b5c3e,0x1301eb01,0xda1b87d2,0x77439de4 },
},
{
{ 0x73b4df41,0x0c665cf9,0x0f696a51,0xfe6784fa,0xd3177c78,0x44d95fec,0x3ffec8d1,0xc827ed76 },
{ 0x80f91f4a,0x2e5b6a23,0x6c0047b3,0xbfe9a610,0x66ef3cd3,0x60e17d7b,0xf2da5ed5,0x1e4c4475 },
},
{
{ 0x01467d6b,0x4f095281,0x52a24b51,0x357d7129,0x642cf1d8,0xd1018611,0x9435ccf5,0x5d2393df },
{ 0xb1bc5458,0x07c673c6,0x510473a8,0x72a707a7,0x2d5af46d,0x7acbd85b,0x63fd0f7d,0xe66e63f2 },
},
{
{ 0x46340d60,0x405904b3,0x956e7dc2,0x8998961b,0xb3c1587d,0x25ed93ee,0x91b74657,0xb5110014 },
{ 0x653ecaa6,0x68cd6178,0x18594791,0x8fb582b1,0xf769f978,0x72ab899e,0x31fe4c46,0x9c3981f4 },
},
{
{ 0x9d159f7a,0xf0b1e93c,0xf242e590,0xecf93a9c,0xd2ff873f,0x3adcfb2b,0x3aab893f,0x453657a5 },
{ 0x8a02fb78,0x99c22b70,0xe81dda5d,0x6f949bd4,0x3a01c728,0xda2ef091,0x88023dc5,0xbfb5aeff },
},
{
{ 0x4cfb1a94,0x973276c6,0x63cdcde9,0xa32f06e3,0xe480e645,0xffc3dda2,0xb72432f0,0x27a0c221 },
{ 0xd4098584,0xab98f8c2,0x78674297,0x91e3b03d,0xc1821e9d,0xf2f2ef8d,0xb3a0a792,0xc3f6ab3e },
},
{
{ 0xd46cb42a,0x31ededf3,0xa7239093,0xbc052853,0xa13d73e7,0x4d14adea,0x07b04c46,0x435b54cb },
{ 0xdaf72dd0,0xb7e24ded,0x433949a6,0x5edc4c79,0xc1e0585d,0x49f4a54c,0xe4718a1a,0xd726c031 },
},
{
{ 0x678e27d3,0xc193d479,0x0e4c688f,0xc12883ed,0x48e4774e,0x1cb2f031,0xc40e8409,0x60aacaee },
{ 0x28c4d2de,0xff7c6102,0x3a680f4b,0x46d40078,0x03de04ee,0xda54f7c8,0xc5def66d,0x9677dffc },
},
},
{
{
{ 0xd789bd85,0x57c84fc9,0xc297eac3,0xfc35ff7d,0x88c6766e,0xfb982fd5,0xeedb5e67,0x447d739b },
{ 0x72e25b32,0x0c7e33c9,0xa7fae500,0x3d349b95,0x3a4aaff7,0xe12e9d95,0x834131ee,0x2d4825ab },
},
{
{ 0x1a6b665e,0xeb042121,0xa7f6803a,0x802f779e,0x3c0804c3,0x47501f2a,0x4945a1d4,0xa263919b },
{ 0x30bcdcfb,0x9ee40400,0x4c00efe2,0xac3f83df,0xe60d60c5,0x2e9d3c9d,0x2aed20fc,0x873200bd },
},
{
{ 0xdea6db68,0x73e1998e,0x082632c2,0xddfad856,0x65def4f6,0x58b14df9,0x03ca017f,0xf8b6533e },
{ 0xae760da9,0x69bd25b0,0x9c5ca0ed,0x6bbd70dd,0x50aa3ec6,0x2f046dda,0xec445486,0xc30f4ef5 },
},
{
{ 0x4d771f0c,0xf6f1d3ac,0x3be0aea8,0xacad16e6,0x579547f0,0x18e63add,0xe57e1961,0x2890d721 },
{ 0xb5890d78,0x0a5728ec,0x7ef54069,0x7dc0e7f7,0x416752ec,0xaf77e1d1,0x9ddc032a,0x69b5b815 },
},
{
{ 0xf924e753,0x66d5d4eb,0x2cf8727c,0x5f017307,0x29edfb75,0x548ef187,0x5582847c,0xf35289d3 },
{ 0xeb13a20c,0xaa45b5c2,0x292d0f04,0xc562fc57,0xb50e1bd8,0x93df08a1,0xc5ec13fb,0x75c1781e },
},
{
{ 0x2670213a,0xf8b6930d,0xaf7a9da4,0x946d1bf2,0x595033cb,0x5430c3c0,0xec5be480,0x929f5cfa },
{ 0xcd486f14,0xa53059c5,0xf7f20170,0x1b383964,0x51e39045,0xc5ac64bb,0x293320c6,0x29cd3692 },
},
{
{ 0x3018017e,0x2395cb67,0xd6df23d7,0xaf141fff,0xb6734e01,0x4834185f,0xda441716,0xcfd06b74 },
{ 0xce0dff50,0xa0ae7be4,0x6b779777,0x00303078,0x87da7950,0x8103b395,0xb72ba913,0xb647b7a9 },
},
{
{ 0xac7e9e44,0x4f5822ef,0x71da1781,0xd4e3ff5e,0x033de305,0x81690628,0xdd4d9c6f,0x7b8b8867 },
{ 0xa8cd12c3,0x0767022a,0xbbd72365,0x64057e6d,0x7dd5adb5,0x2246073c,0x511680b4,0x8bc6273e },
},
},
{
{
{ 0x44cd3397,0x741145c1,0x19515eb5,0xdc34c106,0xb5156ded,0x89386cf2,0x19eda723,0x73baff04 },
{ 0x9adcb8e4,0x41ef2a13,0xf8261349,0x779ef92c,0xc18f825e,0x6a00d1e8,0x4977ac5f,0x1e97de63 },
},
{
{ 0xdfd83618,0xacc1fd7c,0x318d93bc,0x140b55dc,0xa0f4871e,0x36ca35ad,0x91ba4305,0x6fb54563 },
{ 0x02430626,0x3f39f5cb,0xaae5d33e,0x2f1e6499,0x2109daba,0xed3b68c5,0x66c6b8a3,0xf663d877 },
},
{
{ 0x161fb913,0x7eb0f952,0x56d31297,0x3e102461,0x44bed04e,0x344388de,0x33e60a18,0x45f8330c },
{ 0x0c15c3bc,0x70d4817c,0xf6fc3373,0xf06d0879,0xd8ba7760,0xf80e8076,0xbfd6906e,0xc212cf6d },
},
{
{ 0x1cbd9a71,0x357bdb04,0xb46ef479,0x42d91e70,0xdf98e4b9,0xa145c7eb,0xb2862113,0xd554ded0 },
{ 0x3c8cc32e,0xa43a4a8b,0xa7a61c99,0x5f29fea9,0x5ac39314,0xff0f7ad4,0x6c36708e,0x74b8f94b },
},
{
{ 0xee393654,0x5aef9691,0xf3edd7c7,0x965d4be1,0x8bcd5991,0x65f5a01c,0xacd7bdab,0x5544dc49 },
{ 0x8f53206f,0x23610bbf,0x03d58e73,0x241efe97,0xb8935192,0xc04c05b5,0x5087fd4a,0xed3e8589 },
},
{
{ 0xbab5593a,0xe8b93f55,0xe662a7a0,0x44ce7343,0xd42eb14f,0x54e17c99,0xe9e10135,0x44130b2c },
{ 0xbf5b8e89,0xe3a5763d,0xcdce2e3f,0x776d1bde,0x5b0580a1,0x31ca5121,0x7907224f,0x49197fc7 },
},
{
{ 0x28a15dfd,0x13f35994,0x25fa9e55,0x741dbac0,0x5ae2f695,0x4b3d2ed5,0x619ee773,0x2757b790 },
{ 0xf042c341,0xfc8e840c,0x3ca7156d,0x1768978a,0x3cd5500d,0x5cc97521,0x54c2b12e,0xdf46d2d5 },
},
{
{ 0x3be28c8a,0xde82817f,0x22130485,0x9f617766,0x29625171,0x63c4e454,0xcf05f1c7,0xb889d78b },
{ 0xeafdf89e,0x3037fe51,0x782fb8c3,0xdff631e5,0x75c700ea,0x182be4a9,0xfa511b9b,0xbabb0b07 },
},
},
{
{
{ 0x523b716d,0x826fadc0,0xf74e1a6b,0x0d238966,0x8d18df9e,0xe8a5c793,0x8b8ca534,0xf81f5be3 },
{ 0x12632401,0x464002f5,0x3a878330,0x66075850,0x380e0328,0x1d56d29d,0x9c1f06df,0xdc7f4932 },
},
{
{ 0x90789539,0x46e0c527,0x3bd05725,0x0e4e1a71,0x80d63182,0x158ea762,0xc29c4c3f,0x7459e772 },
{ 0x1439d97f,0x3cdf5a47,0x4f7db391,0x383af5e0,0x8a2ec1a9,0xec7e8e85,0x183444ea,0x892bc7f5 },
},
{
{ 0x39d19d8a,0x84c56850,0x51a55215,0x3b412789,0xc16d490a,0x5af6ec35,0xfb128638,0xa6008450 },
{ 0x590d2c4f,0xfd95dbb3,0xa726573d,0xf0fe008f,0x7be9ca84,0xc8f6d45e,0x67a37c72,0x7b4b79c0 },
},
{
{ 0x8ef2dfe7,0xf4727e8c,0x5b8881c4,0x345e4fd9,0x7d2efd3f,0xc604c9f8,0x3d7f8492,0x2e1c7c38 },
{ 0xc55e5f2a,0x3f85cca2,0x67b0c5bd,0xc2d747d6,0xff7ea8f1,0x6d9f4529,0x09f0be26,0xc629dc2b },
},
{
{ 0x496cac9f,0x26987b39,0x5c44de72,0x59e38cea,0x8feb0e1c,0xc64c0979,0x967df354,0xde5382b1 },
{ 0xafa473d3,0x7ce082fd,0x73d84115,0xc2e3e294,0x91cf9f2b,0x62c3b009,0xb69c9185,0x9c47b678 },
},
{
{ 0x31bf35a9,0x3b4c7c08,0x6d621c90,0xe2ed3036,0x638b5965,0x40cb0798,0xc5345e53,0x74dfabec },
{ 0x36a268e1,0x3615b07b,0xc564848d,0x3f5fa126,0xc517ce99,0x69281e79,0x8956a770,0x48341b4c },
},
{
{ 0x86807a23,0x7cb29637,0x6a25ff3e,0x40002051,0x51194ec8,0x5344b99d,0x07f2a908,0xa7227b08 },
{ 0xd4115894,0x1c471983,0xb728cdc9,0xe7bf8157,0x20a075ab,0x45da8479,0xd45d39e8,0xf5507525 },
},
{
{ 0xf2f21873,0xacebe833,0x8429b019,0x022fc19d,0x0228dc28,0xe63138a9,0x36e7d519,0x8c86799b },
{ 0xe5159140,0x8905b7d7,0xe861f0ec,0x5dbf4306,0x75a272d1,0x61ce9fe4,0xa5a3e85d,0x5c0c2c12 },
},
},
{
{
{ 0x12378c16,0xddc6dc1b,0x4615622a,0x9e360755,0x6bf9597d,0xb319e52d,0xc12b3b11,0x1136b759 },
{ 0xb3488127,0x79f59bd0,0xe751cce3,0x9614aa28,0x0fe9ecb2,0x09f0abc6,0x45168fdd,0x7dec0fcf },
},
{
{ 0xf34d3977,0xd0e6daff,0x18d0145f,0xd95c410a,0xb6445072,0x086f8c11,0x8159984d,0x11f1f573 },
{ 0x00154b71,0x14bc90ea,0x3dc68206,0x937e953f,0xd3a748c7,0xcb829f87,0x79c0b985,0xab98c1b5 },
},
{
{ 0x7b299740,0x970e6d82,0x713db134,0xf40f467d,0x93faad48,0xcc4ad137,0x1cdd4336,0x53893eb7 },
{ 0x3fff7509,0x51ea6f1b,0x21fde8cd,0xd8a132ef,0xea75dc8d,0x3841ce28,0x9485fbd8,0x27728a7e },
},
{
{ 0x4d6a6a96,0xbe840ca8,0x9a2e613f,0x953b9a77,0x5e7d2586,0x9b8018b7,0xaa1cdc48,0x934c89b9 },
{ 0x33d838ed,0xebef1485,0xe2e4ca9f,0x107d2df0,0xb31b2e9d,0x4516d6d6,0xbccaf40a,0x856af4ff },
},
{
{ 0x738000fc,0x30b3c956,0x7bf03bc1,0x4e1e2770,0xf1fae560,0x57e376ba,0x754cda27,0xdd64e9dd },
{ 0xddf4ac12,0xbfaa1c50,0xb91e48f8,0xbe45d022,0x19ca79ff,0x6df89e3e,0x0c2932c9,0x432193eb },
},
{
{ 0x573aa9b8,0xfce56020,0x829ed224,0xdf7150b8,0xb295f467,0x5aa3227f,0x592c6943,0xd1bd257b },
{ 0x2b51d81b,0xc1656849,0x84cf7342,0x75ce33d7,0x396a0e41,0xd0b4922e,0x4bc60526,0x177cc0cc },
},
{
{ 0x33878c4a,0xef821517,0x8551c055,0xd883d03c,0xe4a91b21,0xf2c69c60,0x7effd516,0xff9845a8 },
{ 0x7488df68,0x6ba6847d,0xb65cfebc,0xf1f33746,0xdff5e8dd,0x8fd8a48e,0xa4e2428f,0x835b9af4 },
},
{
{ 0xacc506c8,0xfebf5ea4,0x8d3a3511,0xa8030f01,0x5cda09c3,0x8f583266,0x9a9df215,0x4d00885c },
{ 0x1835aa2c,0xd4fa660e,0xa56ce133,0x45d17aca,0x09fe88a1,0x14c04744,0x9671c7f2,0x3f853c3a },
},
},
{
{
{ 0xf7f82f2a,0xaee9c75d,0x4afdf43a,0x9e4c3587,0x37371326,0xf5622df4,0x6ec73617,0x8a535f56 },
{ 0x223094b7,0xc5f9a0ac,0x4c8c7669,0xcde53386,0x085a92bf,0x37e02819,0x68b08bd7,0x0455c084 },
},
{
{ 0x01cd7f36,0xe8b043c4,0x9419149b,0x5799c8f1,0x48bdfa17,0xd36e2c60,0x88814d84,0x4eafa17a },
{ 0x0b2d1c43,0xc778c64a,0xad4543d2,0x5036a58c,0x27efc47b,0xee455315,0x51ec201f,0xa47974d8 },
},
{
{ 0xab348fa0,0xfb14f217,0x051541dd,0xe0fe2459,0x6c24b4bc,0xc2a22323,0xddeb882d,0x86eac93d },
{ 0x4da51cee,0x4ee38095,0x51cfee8a,0x6c26d963,0x8d6f4671,0x5a436f9e,0xcbbc4d8d,0x948f3853 },
},
{
{ 0xb96214fb,0xcc319d54,0x8febc765,0x71dc987a,0xcdf1c589,0xcda9e496,0x4fbfdb25,0xc6122fc4 },
{ 0xb7adfff7,0x3702bd8f,0x1e271f8a,0x08a6e48c,0x8877f91f,0x9031c986,0x8343ac41,0xea205bec },
},
{
{ 0x99222c03,0x7af41ffc,0x87e5e103,0x948ce77e,0x4859f407,0x3f5e7d78,0xf9fb3aae,0x8bf09eba },
{ 0xea72bb54,0xa145f742,0xde20e1d4,0x9c9ec0e1,0xe7e5ba30,0x3b48b1db,0xe2e27a73,0x509cbaaf },
},
{
{ 0x8d215bfd,0x1686977a,0x7f1462b7,0x8be07426,0xa2d65d24,0x85b6220e,0x1f52629e,0x8b4fcebe },
{ 0x475ec26b,0x06eaf00a,0x9d21add6,0xf9d502d0,0xda9254ff,0xf96fb1ca,0xa822157e,0x1f3307a9 },
},
{
{ 0xd1ae9300,0xb453a2c1,0x75c48280,0x5e1c4704,0xa2f3735b,0x19130bad,0xb7e70fc6,0xe85e2dcb },
{ 0x1546e25e,0x72a0dfdd,0xdf8c31bb,0xdeb7e185,0x823c2707,0xc7ba7b5b,0xd51ce0bf,0x451aafa6 },
},
{
{ 0x0e9d6b84,0xe97be9ed,0xee86b987,0x6f4fffdd,0x13019fda,0x24b4042c,0xc1812137,0xb6d94022 },
{ 0xbca7cb21,0xe1bcaa0f,0xec4f382a,0xc23273ea,0x84d77ad3,0x86344788,0x62928723,0x93ff3f41 },
},
},
{
{
{ 0x93c4a205,0xa52f2c36,0xf510a848,0xde1adf89,0x75b929fc,0xe4665570,0x6305bbc4,0xb6e06c51 },
{ 0x5db36d05,0x537f4d86,0xa82a9f87,0x63f99419,0xe79ed73b,0xc5e1f126,0x21b323f5,0xbdb4277c },
},
{
{ 0xfcdcfc44,0x29f315f9,0xd797eb13,0xaf3674c6,0x7bee1e8d,0xe55703a0,0xf5f8ddbf,0xa61727a4 },
{ 0x0ef3d60e,0x93b82a7f,0x62f080f3,0xc1b90104,0x2bbae158,0xde692d5a,0x9b02696a,0x03fd9e4f },
},
{
{ 0xf9e27907,0x92f821f6,0x88d9e4d6,0x771ad4b3,0x6fdfbd68,0x6b395d5d,0x84241c4e,0x0ed9e43f },
{ 0x6e78c4fb,0xf13f4f50,0xb8ba1905,0xe9151cfe,0xeb120e0c,0xf5bc0fd8,0xff6b2347,0xb5af874a },
},
{
{ 0x553faea4,0x93fa154a,0xc96b10c8,0x324a7181,0x7cbf6a9e,0x8c89f34b,0xe8bdb74f,0x27708f23 },
{ 0xd0802d2f,0xb21ade75,0xd1965bd1,0xfc6d68b3,0x6cc2c973,0x300225d6,0x49caa4a4,0x575f1861 },
},
{
{ 0x35b38f54,0x36d05725,0x5caf07ce,0x2e2a860e,0x48fee1f9,0xc55268db,0x076d8f7d,0x57a7e410 },
{ 0x245f2809,0x5fa781e6,0xa907eba7,0xdfd76e39,0xbc82dd21,0x194c8a23,0xc8ecad24,0xfd7f0f03 },
},
{
{ 0xa0f69001,0xa8c081b7,0xb30c8656,0xcfc99d57,0x34b55a4f,0x57dd0cd9,0xae243bf7,0x2ed8369a },
{ 0x2dba519e,0x616ca32a,0x5a9244f9,0x9e3959c5,0xb4fdd7de,0xf38a5dba,0x6a90f28a,0x8d916d51 },
},
{
{ 0xa7a79593,0x46febbf9,0xd25c4979,0x347a7249,0x8cca5cf3,0xf52d9b25,0xf3ef5dbe,0x24799ae2 },
{ 0xd0920d55,0xd6388d75,0x9beb1398,0x9994361f,0xd363e300,0x32c3d1a9,0x2ec87b7b,0x9436b526 },
},
{
{ 0x97445fb2,0x7fb5bf45,0xb2da6510,0xb0844aec,0xab77ae6c,0x09bfe97c,0xaa66dc61,0x7cee417f },
{ 0xa8223a26,0x4fffcd61,0x9ed0e31f,0xa667e856,0xf9cf0bb3,0x96d871e7,0xe1e5b9f5,0x3040efeb },
},
},
{
{
{ 0x9076f57b,0x28cf1ab9,0xcecac607,0x030b86e3,0x1cf2a53f,0xb927e350,0x4880c79c,0x20e11856 },
{ 0xada7afe6,0x8583bedb,0x40e1b71e,0x9fe0dc9b,0xfb6de997,0x31bdc3e3,0xac437ef7,0xff67b352 },
},
{
{ 0xd4c20855,0x9e849544,0x0ba0405b,0x62df6c0f,0x9289d72b,0x3fefe10d,0xfbb5c307,0x4eed0b4d },
{ 0x8bdffd1f,0x4c087a3f,0x2d34fe3f,0x1136ccd3,0x7fc115c8,0x1941d328,0x8a56693a,0xace0fb28 },
},
{
{ 0x4b661da4,0x849e3aed,0x64a84a5c,0x940a51ac,0x03061a21,0x8f7c7fd9,0xb86606ce,0xffca2a5b },
{ 0xaf9b8a5a,0x8984835e,0xe5687f6f,0x478f87ad,0x48f46c8c,0xa53cc9a1,0x2b71cdc8,0xce1cb0e3 },
},
{
{ 0x0524722b,0x83d637e6,0xe6a12de7,0xfeb99f12,0x8ed12d20,0x0a45b116,0x7aca84f7,0x42e0437c },
{ 0x1fea76c6,0x766939c8,0xaf54265a,0xdbea2a6d,0xc9b4ea3e,0xbafd84cc,0x01d920ee,0x2de1da09 },
},
{
{ 0x9c8cfd22,0x3cac1e13,0xb636be58,0x4e2b0671,0x0dad354a,0x63653515,0xffc116ab,0xff209ced },
{ 0x93bc5535,0x2389b14e,0xc9684b94,0x0d4f4b92,0x4ccff1c8,0x207d41d2,0x469d0f7e,0xad79f397 },
},
{
{ 0xecdc9426,0xc4ad7478,0x935382a4,0x0e411d07,0x0670dfde,0x9025f824,0xc268d865,0xb30ddefb },
{ 0x29c7275e,0xf33e104b,0xaec0238f,0x5b93309c,0xc983d48b,0x4ab3871b,0xc014c153,0x7dbf4fd5 },
},
{
{ 0x8f4e983e,0xe807e585,0x7017f77c,0x6d9e6ec8,0xd33b4b15,0x58604080,0x0b079ba9,0x33d5f02d },
{ 0x91ea37a9,0x6d70db87,0x59630c95,0x7a71aa92,0x55bba1eb,0x73c3d616,0xd39c4784,0x01eb5a76 },
},
{
{ 0x7bcec904,0xc6f24fc3,0x445cc228,0x49a7cbf2,0xc2ef48c9,0xc499ea8f,0xc51afb00,0x070d96cc },
{ 0xa3ab316f,0xf62f4db2,0x34681bac,0x53bdec7b,0x55f0e977,0xfc61582d,0xff0abc21,0x9b915ef5 },
},
},
{
{
{ 0x28523eb3,0xe7dd9ab3,0x556c6c4a,0x351a3a75,0x4f3dcde3,0x46ac1844,0xf8a8b5ab,0xbaffd4eb },
{ 0xd5acf387,0x1978300c,0xbf48b6ee,0x24511ccf,0x795ac09c,0x003a8eb3,0xdbc95e83,0x0fa93dc5 },
},
{
{ 0x9d2157ff,0xae03ad0f,0x7d07f1ee,0xe9817b13,0xe4eb8eee,0x751a418a,0x57874a09,0xcafb6c86 },
{ 0x73ce8988,0x16cec081,0x913b9e0e,0x9c6ab445,0x9ab4e2e0,0x01a1cbb9,0xd5c5c67a,0x2adafb1e },
},
{
{ 0xf4737641,0xd0099b4e,0x66c2e13a,0x1afac0c1,0x36563fb7,0x7778b512,0x441c89ed,0x91b44522 },
{ 0xe101bbe0,0xf2512b29,0x6e077d03,0xc9d7dc66,0xb02fb428,0x2c13235a,0x37fda976,0x3f4463bd },
},
{
{ 0xe51b2cf9,0x4700eb8c,0xa4bf795c,0x37d28a48,0xcf8ea9a3,0x9a879a27,0xfad37ccb,0x894890b2 },
{ 0x35979d3b,0x0d187ac8,0xa3bc2ecb,0x498e7116,0xfd48e438,0x88a0abfd,0x7c5b3011,0xd46800ff },
},
{
{ 0x26dd01df,0xc6a2bab8,0x538fefb9,0x743eff76,0xc8689165,0xa37ea6c7,0xe82db07a,0x296d135d },
{ 0xaa3a0dc8,0x4950d320,0xe5e66f60,0xdffaf618,0x76c777ca,0x2b871297,0x92e145e4,0x14054edd },
},
{
{ 0xcfe63974,0x427abb1c,0x2466a2df,0xd15f33ed,0x55f2bdc5,0xb7c5e382,0xab8e7935,0x9b46d393 },
{ 0xfcfb2502,0xabedd0a2,0xf5415950,0xbf7eed5f,0x26b9c5d6,0x0554f01e,0x918b71a2,0xf3ccefe1 },
},
{
{ 0xd650f5dd,0xc67e6f06,0x2191b2c8,0x54ffe124,0xf19e4a96,0x8f13c2f1,0x91367a31,0x4b0942f3 },
{ 0x7aeddc6d,0xc2ea5bcc,0xe4e73a62,0x023c6782,0x5613c25f,0xe055c101,0x366cabc0,0x7432aaa6 },
},
{
{ 0x7e460d62,0xbcff6026,0x94139936,0xa26e2a1e,0xf8b8c55b,0xa1697678,0xe481aacd,0x463d8e29 },
{ 0x8c11217f,0x22665088,0xda469b0a,0x8f9eac14,0x24f85296,0xf1fd6c67,0x7ae2a66e,0x400f734b },
},
},
{
{
{ 0x313728be,0x6cf20ffb,0xa3c6b94a,0x96439591,0x44315fc5,0x2736ff83,0xa7849276,0xa6d39677 },
{ 0xc357f5f4,0xf2bab833,0x2284059b,0x824a920c,0x2d27ecdf,0x66b8babd,0x9b0b8816,0x674f8474 },
},
{
{ 0x5974bb08,0x1583948c,0xaeeadd25,0x75f3b0ca,0x2d2a1086,0x4a661caa,0xce62e80d,0x3f06dcd2 },
{ 0x95083c99,0x89655da9,0x5e88f53e,0x83160690,0x931d9b2e,0x985807be,0xce1922db,0x08bc2550 },
},
{
{ 0xcf15d864,0xc054b569,0xa1cc8d3c,0x2406fdc6,0xbe26cf35,0xafc8ece7,0xc5dedb0d,0x07ef66d7 },
{ 0x740907fe,0x54625427,0x1cce4a8b,0x9f470e3b,0x21fd505e,0x06d40c52,0xb89de6a5,0x2db3325d },
},
{
{ 0xd5c7c27c,0x1c101b8f,0x4bdc794c,0xeb3228b9,0x527e97b7,0xe0c05b31,0x918a1d05,0xec61ff29 },
{ 0xd9ddfe51,0xadf01167,0x7690233d,0xfe3c46c4,0xc7759298,0xd0960f82,0xc1b257a1,0x02fa1d3d },
},
{
{ 0x17c7c05e,0xc695143c,0x2ce5416a,0xb283cb95,0x75f28c0b,0x14f3a72f,0xc06dc460,0x82df4e5f },
{ 0xd8fff26b,0xb9613d02,0x842db300,0xcf15d946,0x1217cbd1,0x27521621,0x8c96420a,0xe4e188c9 },
},
{
{ 0x1d7dd05c,0xc23e42e2,0xc1b00e1a,0xc54f84d4,0xe7d116d1,0x69a3fb20,0xff791761,0x5bb18bcd },
{ 0xcb96a309,0x56c549f2,0xa4d2a416,0x95187587,0xd7f58215,0xf81b6dd5,0x2dea4874,0x42ad9217 },
},
{
{ 0x540368b0,0x80ae1d41,0x8fee949d,0x1324c22f,0x38e47a62,0x7d9e5b8d,0xc12b0c6a,0x261efc9b },
{ 0xbdeb011f,0x13ad2559,0xe39b5d30,0x7e340be1,0xd64fff79,0xfdc8852c,0xe386fce9,0x8a9d2adb },
},
{
{ 0xe46e2050,0xc409332d,0x00f5abf0,0xf5ac2a39,0x316797e2,0x4d6c6698,0xe71e347f,0x9a79bfbf },
{ 0x926250d2,0x7a3f4781,0xb6dfde31,0xca94facc,0xb224efa9,0xb6f671f3,0xd316e200,0xe98b4de6 },
},
},
{
{
{ 0x2fd20bae,0x55d4e37a,0xd5b4a811,0x26035672,0x176d343a,0x027bba12,0xc3bcfcd9,0x285250ed },
{ 0x54e0ab97,0xf9de455a,0xf1eff323,0x6e9b1a2c,0x1046c171,0x3f7284ad,0xf4ad7ea8,0x7866c086 },
},
{
{ 0x220ca9a7,0xf0f2efdb,0x817c6662,0x3840e563,0x325161c0,0xb651d0cc,0x9944b44e,0xdbc091d8 },
{ 0x16c8e76b,0x4d205883,0xe96192c8,0x6367309f,0x1e4aa5fc,0x2d57926d,0xae856795,0x092d80ea },
},
{
{ 0xa636a50b,0xcc8876ab,0xabb75196,0x5d2ef616,0xfc78baf6,0x5836fa12,0x45d5a75c,0xf1e3c565 },
{ 0xab3128b6,0xdf77914e,0xd22d7a6e,0x6b7fa576,0xf6a5f313,0x6c736a67,0x6e1efce7,0x12b8847a },
},
{
{ 0x7ef7d72d,0xd6be4fd0,0xf518e8d7,0xad3a6dd5,0x6ee06d88,0xb322489c,0x1e938f23,0x9018baa1 },
{ 0xc036ce68,0x1267044f,0x02736aeb,0x4eb56d80,0x43bf00b7,0xe8c147f7,0x71f9c6c9,0xc9c382d8 },
},
{
{ 0x4e583340,0x517f1321,0x5d34f3b2,0xf45c1b6b,0xfa9b228c,0x6d87cdab,0x81e134a7,0x584d729c },
{ 0x74fb24b9,0x72f6e5e9,0x6494c070,0x8f1770a6,0x3030affa,0xcd307c59,0x560d80ab,0x2fdd80a4 },
},
{
{ 0xb5182e0f,0x08e24680,0xb2ad008b,0x86c0e6ee,0xde8ad36c,0x28a8842d,0xd5478dde,0xa77f7298 },
{ 0xc4b82d57,0xa2b37f28,0x2475b42c,0x3368ac6e,0xca515f6a,0x0f1e64bb,0x911b4fcb,0xfa48a69c },
},
{
{ 0x0235809b,0x92c83ede,0xb5eb8173,0x3c572df0,0xc2383c45,0x1e2e028d,0xc837df7d,0xbaaeae00 },
{ 0xc154fd62,0xcd61d8a5,0xa1d2e7e5,0x835c3c42,0xcb49f299,0xb4a2307b,0x3f324b80,0x32578883 },
},
{
{ 0x536ba602,0x07596c1f,0xff60a8a6,0xdd2f1e9b,0x135004a3,0x63336038,0xfef3fb24,0xedd513bb },
{ 0x45dbf993,0x3b8086f9,0x2da5dcac,0x61854d44,0x90f0188b,0x7c592ca2,0x3bb3f7a9,0x257b598c },
},
},
{
{
{ 0x839bb85f,0x320f09c3,0xa050e62c,0x0101fb06,0x9ad53458,0x557582c9,0x1666432b,0x55d5398d },
{ 0x4fed936f,0xf7f63118,0x1833d9e1,0xd90d6a7f,0x8ebaa72a,0x059c6a9e,0x49ff8e2d,0x576e2290 },
},
{
{ 0x4f491155,0xf642e95b,0xfff3c118,0x28b1eb93,0x85d56f8d,0xfd236395,0xae7617cc,0x419a4f03 },
{ 0xd489bbc7,0x4b91ba6a,0x074c6889,0xc7ab4a22,0x84804545,0x2e334b14,0x3a6e835b,0x237c2d34 },
},
{
{ 0x12ea285a,0xc07e2b92,0xf7b910d1,0x9f01c1e6,0xddc0a7a3,0x7858058d,0x814f888b,0x1bb46408 },
{ 0x907dc702,0xdc0c8a79,0x992fa94e,0x1e52a34b,0x92b4a4fc,0xa40fd9b8,0xafae1125,0x8a3016bf },
},
{
{ 0xe49e8f34,0xc0841ba9,0x0b35d0fc,0xc3e61dae,0x31abf75e,0x372304ad,0xdadf2828,0xa2157eb3 },
{ 0x89eebef3,0x1a8e9832,0x5b187f4e,0x064bbba3,0xccfbe5a2,0x0fb42577,0xa70df31d,0x0817697d },
},
{
{ 0xd539785a,0x45012900,0xb8297f01,0x8c88d076,0x78627a54,0xe0973e26,0xe02fa14e,0x04bc4e70 },
{ 0xca62e3bb,0x53990475,0x7a3275c3,0x87701772,0x3f3dfb4f,0xa5f5a1cf,0xb8cb4cc3,0x5729f224 },
},
{
{ 0xb80f772a,0x4e9c6714,0xb96ee4b2,0x4c3758a2,0x669a910e,0x7e54f059,0x3e918ce5,0xb76f4023 },
{ 0x72eeff74,0x2b481d7c,0x6b16ae25,0x56ba2419,0xceb09998,0x9618f274,0xa7aed93c,0x05197211 },
},
{
{ 0xe114cfb5,0x112d4bb1,0xa3d5a6a3,0xd136189a,0xb7df0876,0x587739e1,0xc1f88173,0xd3e492fd },
{ 0x697f7045,0xbceb9aa5,0x46754eef,0x9c88f06e,0xbf15fea3,0x1fee2676,0x73f8c48b,0x3604a70a },
},
{
{ 0x2d5c502e,0xd4eb281c,0x1df14515,0x27fce62d,0x88c376d2,0xfb28652a,0xf409d9e0,0xdc386db7 },
{ 0x7bfc1e4f,0x23b47a25,0xcc760b7b,0x372c3db3,0x9d7ad72b,0xe7e69c45,0xcf20188a,0x526c6376 },
},
},
{
{
{ 0xd4441fbb,0x3e0b5d5a,0xa5ed115e,0x9eaa8520,0xedb92555,0x7fb60c55,0x21de21d4,0xb4958c4e },
{ 0x4add7118,0x4c7e3c9f,0x2d463841,0x2db9f613,0xc38cb7e1,0xe5c041fb,0x996640ef,0xfcd6e7bf },
},
{
{ 0x6bd00b59,0xfc4da117,0xbc1a71c7,0x2cdd704d,0xf84df258,0xe77ceb19,0xd5876481,0xa41e9e9e },
{ 0xcf2e6f15,0xe8dd28cd,0x3dd4359f,0x5cd25356,0xefc739b8,0xda4e1ed1,0x3b30f2b6,0x50dc3172 },
},
{
{ 0x371f07f1,0x5aed684c,0x30d70c4a,0x878cedb7,0x4606684b,0x232ea0b6,0x7b20444d,0xb3a43f5e },
{ 0xe01dfda5,0x53cd22f4,0xcdcb0ecc,0xec7877a0,0x69975ee7,0x41832273,0x248fd6b8,0x34c64f5b },
},
{
{ 0x401403f9,0xab0c96ef,0xbf58e793,0x32a6d94e,0x7d6886df,0x2c5f09a8,0x94cc35ac,0xc02a0f2e },
{ 0xa7ed80b0,0x21f59639,0x6000adb5,0xabb91306,0x7c5cd473,0x0f716d45,0x8e491aae,0x8ebaa8a1 },
},
{
{ 0x6b559d49,0xff7c97a4,0x0ddc9b44,0x48e1b469,0x84c008b1,0xc2662ffd,0xa46be14a,0x452e9869 },
{ 0xda0d6ba7,0x747c6046,0x3b1ee425,0x5982856c,0x6761ee52,0xf5c0057b,0x195f80d0,0x8c5e8a8f },
},
{
{ 0x2975566a,0xfee1fa91,0x39c2b06f,0x6af2b72d,0x12b7d65f,0x276c8d63,0xd27219b8,0x9f170a79 },
{ 0xecf3e6d8,0x5a576c88,0xf5db695f,0xa0a6a793,0x7d4e8578,0xc799b007,0xe8864a0c,0x54a6aa2d },
},
{
{ 0x53ce94da,0x537a67eb,0x56829e60,0x8bb24f42,0x3ac474ee,0x51cde0dc,0x8c6d62bb,0x19a7f5d4 },
{ 0x3025e7bb,0x73044716,0xae25eb03,0xfb625306,0x4200a2e8,0x2f6a51d4,0xa93075c3,0xa2504ba7 },
},
{
{ 0x5f7a8d33,0xa6917387,0xeca47658,0x9a6c22e3,0x4913e26b,0x1a765de1,0x0d926557,0xb8d550a1 },
{ 0xfec3abee,0x1777b77b,0x586f670d,0x541c3aaf,0x7073e188,0x7d1790c9,0xed161c30,0xded908e0 },
},
},
{
{
{ 0xe895df07,0x6a703f10,0x01876bd8,0xfd75f3fa,0x0ce08ffe,0xeb5b06e7,0x2783dfee,0x68f6b854 },
{ 0x78712655,0x90c76f8a,0xf310bf7f,0xcf5293d2,0xfda45028,0xfbc8044d,0x92e40ce6,0xcbe1feba },
},
{
{ 0x80c15fc7,0x9d10531d,0x72e99258,0x666623f1,0x0e55e541,0xf3cf09cd,0x8c1c0d5f,0xe1b40c54 },
{ 0x2a318024,0x17ca8468,0xde9bb624,0x00924520,0x07f4708f,0xf47d8112,0x3f384ff9,0x1ea8aaac },
},
{
{ 0x3aa89692,0xe418fa23,0xf94c2308,0x713b08d6,0x2418a776,0xe996e641,0x81668f4d,0x3bdfca71 },
{ 0x1a510308,0x93dbdb43,0x45e2ef13,0xc7dc0c63,0xaeda5333,0x49426151,0x565167b8,0x0a721f68 },
},
{
{ 0x831eba7e,0xa25b597e,0x70989e56,0xf1e49c25,0xbc72a37e,0x4201bba7,0xba2a02df,0x963e315d },
{ 0x8e7c79c0,0x3dfa4b32,0xc0d5f13c,0x869d0ae5,0x52167e11,0xa2a3cb7c,0xc84a3935,0x5c02ba13 },
},
{
{ 0xc37ea1d7,0x079b2342,0xf89aae4d,0xb2393658,0x518d9e4f,0x35328552,0xb7521056,0xaca8ac95 },
{ 0x9ba973a2,0xddefb104,0x413935e9,0xe1edbfdc,0x92872189,0x94304c4b,0xdd75cc20,0x7f12c567 },
},
{
{ 0xed8d3763,0x02d58a93,0xb3d25d44,0x163c1b41,0x7c82521e,0x8c082120,0x5d5941a2,0x79cc3216 },
{ 0xbc5f6bfc,0x36aab0f0,0x81d3626b,0xadabc175,0x942ffc3e,0x27cc1d59,0x073053d0,0x9cf893e8 },
},
{
{ 0xd3245b7f,0x5db2781c,0x90597fbf,0xa37d6696,0x98d85311,0x206c21af,0xdb667c0e,0xfa904704 },
{ 0x4ddf6bef,0xef833df1,0x624f1d47,0xcb9eecd2,0x40f1c189,0x2d6fa3ed,0x74a836a4,0x1a1c8c36 },
},
{
{ 0x348560a9,0x6c38ba21,0x626f217c,0xb3e960fd,0x8640da20,0x7be36947,0x05994393,0x6fa2d990 },
{ 0xbae52757,0xb9609377,0xc551c5ee,0xfe39cdab,0xa6985c3a,0x3754a352,0x915ac7e8,0x9eba0cc3 },
},
},
{
{
{ 0x8e6d8483,0xcec9b4d7,0x46967f0d,0x82f2d7a8,0x1b6ee945,0x2958f49f,0xa33d563d,0x9c39cb60 },
{ 0x6b2c50fb,0x94b3356f,0x3dbe4368,0xbbade52f,0xbca16546,0x03d196b7,0xe493e510,0xf097bf1e },
},
{
{ 0x6c7f27bf,0x1363784b,0x36fe96a7,0x41067a63,0x3b323ed1,0x33e8a4eb,0x94d7802f,0xcbc809ae },
{ 0xcaa30fa6,0xecc69d63,0x903daa9a,0x07ad4dd8,0xdfdcdb05,0xd7aaceb5,0x18115c85,0xbd9cbb0e },
},
{
{ 0x47a14dda,0xf55c31f8,0x674b4df3,0x606d0429,0x24013083,0x443768f7,0x90eadad7,0x18f37acc },
{ 0x25ac8364,0xe22fcdc3,0x8a8536cb,0x77d8f7c7,0xee1bcd0b,0xd7bbffec,0xaa092c26,0x2f944bba },
},
{
{ 0x60a81cad,0xbe5cc187,0xb43b223b,0x822c3c1c,0x49506cf4,0x37151ef3,0xc6e52618,0x8bfbee24 },
{ 0x5ff0013e,0x6986b951,0xacfd2376,0x8d9fc8ec,0xe71be151,0x0cfd289f,0xa3409b59,0xd75127ca },
},
{
{ 0xcc7d59be,0x5674e8e8,0x8e0932fb,0x98ea1858,0x4772736b,0x4ec5ffee,0x281e79da,0x5413358c },
{ 0xe4f80590,0x2d7ea1f6,0xc900b367,0x53e25b15,0x0164515a,0xe7c48fd2,0x969cb024,0x680fd4de },
},
{
{ 0x4f58b08e,0xc2284980,0x171b57dd,0xdc769ced,0x2fd64cac,0xfeb5c7e7,0x27ffec73,0x0b1c1b03 },
{ 0xf5023ab2,0x0f1c83ac,0xf7b955aa,0x0d8beb6c,0x870a6a7c,0x95a16812,0x8d354127,0x6e8fb87a },
},
{
{ 0x876051a8,0x8eb80c9f,0x3a457ea5,0xbed77396,0xc1b85280,0x5dcfc1a3,0x91b194f0,0x4e2fd126 },
{ 0xe9cc9005,0x6afec74f,0x92c4fe2e,0xebb8baa5,0x508a31bc,0x371b35a1,0xf5f4fbb2,0x122abbdb },
},
{
{ 0x2fb33b93,0xc2111578,0xd63afc5c,0x76b07b2b,0x1041e8f1,0xc0787942,0xbadbe124,0xb8181bc6 },
{ 0x7a54ead6,0x911a5e16,0x4bf627dc,0xf9acc5b1,0xe967dd75,0xdeef104b,0x18cce7ca,0xbb012f51 },
},
},
{
{
{ 0xa44e8de3,0x606304b1,0x2ecc1e07,0x5c08966a,0x08bd1791,0x3a5a7dcf,0x468810b7,0xf50b99b7 },
{ 0xdb7f3588,0x4a3f3ba6,0x21721e85,0xe975f18d,0x2dedcebb,0x8789973a,0x55f18f0c,0xe2b5061e },
},
{
{ 0x60dc749c,0xa9103a2d,0xa27ad800,0xd83321fb,0x20a46e97,0xb09c7430,0x227198c9,0x2a148954 },
{ 0xf0fa3cf2,0xf2e1f28f,0xc39b6f01,0xbef92dcd,0xa37608c4,0xea3c2440,0x8974e422,0xaa215a18 },
},
{
{ 0x82accf8b,0xdddc6b6b,0x82816fa7,0x81d29991,0x51394304,0x645f30e2,0xa5505770,0x598d7f61 },
{ 0x0f6cb808,0x1b84673c,0x353540b9,0xd2289a8f,0xb273ebca,0x546c5162,0x4f8f2609,0x9f3121f7 },
},
{
{ 0xdd962abc,0x1e0cc372,0x8e87bdcc,0x1ebb7d20,0x8a642c87,0xcc7a3ec5,0xf4cc4453,0x0a5a4878 },
{ 0x9e2cc3fa,0xe85daabc,0x8e50a9fa,0x5832a64c,0xf2903017,0x4d72b14d,0x88b0dc57,0xf7148b22 },
},
{
{ 0x64aa7b3e,0x9fb39a54,0x056c9cea,0x13c4ef1b,0x541c5810,0x64fd2091,0xf49f4c4d,0x715a2012 },
{ 0xbc7d081d,0xd9a33944,0xa88b47d0,0x421bc588,0x8a913b62,0x1f79288f,0xaa606c0a,0x5922b3b1 },
},
{
{ 0x18ae2298,0x85c3fa70,0x81b3e0d6,0xcb07adef,0x89578652,0xaa743567,0x1ac87d03,0xf8093ca1 },
{ 0xd35c93b0,0x06c36192,0x6db6006f,0xe4509a0f,0x307e9cf3,0xb16129ec,0x6ef49c10,0x32074f21 },
},
{
{ 0x620db220,0xd1bdb697,0x1687ace4,0xc71ccb10,0x7fb87876,0xc409ce89,0x6aa9b125,0x49ec8c5e },
{ 0x677338c2,0x99b8aca0,0xe53b9cce,0x842c3073,0x865f5429,0x3da9cc34,0xe5ea629b,0x99a97d4f },
},
{
{ 0x128aa5cd,0x93925b40,0xed9768e7,0xceceaf38,0xdd6c93fc,0x20feb9fb,0x5a92f1b3,0xf5e3efcb },
{ 0xceaa0fb4,0xab2799c7,0xb110cec9,0x84e0a6f4,0xeb07bd2b,0x4e51e2df,0x9bf3de05,0x76cfa289 },
},
},
{
{
{ 0x885fbd44,0xc0747129,0x9f26267a,0x89c2caa3,0x16d5222c,0xe05471ce,0xd9ab5905,0x9bbf06da },
{ 0x7a1d3e88,0xa3447dfa,0x15036ed2,0xc0d4bddc,0x0a6f47e8,0x6755daf3,0x4de120a3,0x1bcc7fa8 },
},
{
{ 0xd8490005,0x3ce59840,0xa4c5181f,0x90599d29,0x2fbfb78c,0x4adaab19,0xbbedf416,0xf8ef49b4 },
{ 0xbd62afde,0x1a462e83,0x37deee67,0x58f21288,0x65a4b73a,0x02bbd776,0xee972164,0x979e67a7 },
},
{
{ 0xb4a7b506,0x8b7ae792,0xe7860be0,0x22758bba,0xe7500ee9,0x429cfb2a,0x5b3b5bd3,0x646ff7f6 },
{ 0x2b36f946,0xc979c125,0xc08e6995,0x492dfc4f,0x804a8fe8,0x5a61e331,0x064a18a5,0xbc112a9d },
},
{
{ 0xf87b338b,0xeddeea19,0x2e04eba7,0xfe44d4fc,0xd66d9101,0x1b3a9b22,0xd2c743f0,0xbe63ab41 },
{ 0x91b00a85,0x9d212f25,0x45930daf,0x7053cb7e,0xb90b353b,0x8d3021bb,0x5e22f475,0x1f125f14 },
},
{
{ 0xc103b553,0x154b71c9,0x83385a80,0xbe60ea27,0xb27e507e,0x9d0c1000,0xa617d39a,0x7cc0547a },
{ 0xcd45a526,0x5799cba3,0xac228b7d,0x00185a0a,0x39fc94c4,0xbdd728cb,0x2328045a,0x7b329ebd },
},
{
{ 0x58583600,0x98904595,0x723b5310,0x6beb2ffe,0xebc5fd4a,0xe62280c7,0x9efe26de,0x1516534b },
{ 0xc3a0131b,0x08428e0c,0xe74e0c09,0x2bab43c9,0xecaa5c59,0xb0e74299,0xa7ce88ea,0x60e343b6 },
},
{
{ 0x19e717a4,0xac2ef454,0xacf01b81,0x68da2bda,0x6daee154,0x0563ed53,0x0bc1db4e,0x94685199 },
{ 0xb526dea3,0xa75f0fd1,0xf70acd9c,0x57999590,0xb2667dc0,0xb3b8d0e6,0x0dc591a8,0xca5c7842 },
},
{
{ 0x113bd81e,0x44342466,0xcaebe721,0x578042f6,0x286eb6e2,0xaeda82df,0xb05d00e6,0xfc1d6f42 },
{ 0x5d7ee1ea,0x41e3d441,0x546dc8dc,0x3976b531,0x7fd76ce6,0x93d74bd9,0xac02382a,0x6d2cdf43 },
},
},
{
{
{ 0xc420924a,0x39912513,0x487cab57,0x00b60867,0x48adde64,0x5afb62de,0x1e67a44b,0x0b197a2e },
{ 0xd1045a5f,0xb9e53b38,0xb8bfb340,0x0f5f54ef,0x67c641fc,0x566f385d,0xf39453e2,0xa4a03b30 },
},
{
{ 0x81868ba1,0x23787197,0x1d53f9e2,0x5c1fdf97,0xa4afba59,0x504023d8,0xd10a793b,0x1de4d76c },
{ 0xcdde321b,0xfc55fa88,0x7a4e620d,0x988c00b9,0x3ed71df4,0xbecb359b,0x743848a6,0x71821762 },
},
{
{ 0x117f3422,0xc6771b1e,0x58fef2b1,0xe0ce9381,0x061a94c5,0x10237e11,0x50aa0677,0x1f256f8c },
{ 0x9f4262f0,0xaa1697ba,0x5d459464,0x22c6ae05,0x73032f9d,0x756df03e,0x5ba69832,0x20d65bf4 },
},
{
{ 0xbbdfb796,0x4056283e,0x43a1cf74,0x4f128204,0x90d8319a,0xcfc407f3,0x096496c0,0x6eb5732a },
{ 0x13896dcc,0x1dfed669,0x4bd0ab9a,0x367f8387,0xfc3cdce0,0x98a505a9,0x26b59384,0xd77d1c93 },
},
{
{ 0x40410675,0x13d7d106,0xd49d411e,0xca1dc00f,0x476f4cf0,0xf3e15132,0x1f0aa42e,0x43b373d5 },
{ 0x59220b1e,0x6663aca4,0x338b9786,0x457bf8fb,0x0b40585b,0x014a2f9c,0xb81f710c,0xffec0d9a },
},
{
{ 0xa2ef15a8,0xae2c08a8,0x4a125c0e,0x7c17c217,0xc5ca8632,0x35bb9be6,0xecd8f442,0x76b5e935 },
{ 0xeb1b6a5d,0x4986841d,0x37a5fcfe,0x41db04db,0x3072cacc,0x94b887f2,0x245cecaf,0x432f257c },
},
{
{ 0x79edd558,0x1bc52bfb,0x354cc703,0x4e5da8bd,0xec5dcd85,0x3651639d,0xadfc3716,0x0f4b0083 },
{ 0x8a632321,0x3e636c8a,0x23d4e656,0x37f47218,0x134cd659,0x6faaadff,0xcd724765,0x8dc30254 },
},
{
{ 0xff83ab89,0x79b2929f,0x39d174f8,0x9c6c6f9d,0x6875f641,0xe08530e0,0x3df2d2b6,0x518c254c },
{ 0x3594ead2,0x9ecafd1a,0x0eba0eee,0x1c734735,0xc8e2877f,0x33f1250f,0xc9594300,0xbf8462a0 },
},
},
tinyssh-20180201/crypto/gep256.base.py 0000664 0000000 0000000 00000003030 13227043065 0017263 0 ustar 00root root 0000000 0000000 p = 2**256 - 2**224 + 2**192 + 2**96 - 1
basepx = 0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
basepy = 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
B = (basepx, basepy)
def expmod(b, e, m):
if e == 0: return 1
t = expmod(b, e/2, m)**2 % p
if e & 1: t = (t * b) % p
return t
def inv(x):
return expmod(x, p - 2, p)
def add(P, Q):
"""
"""
x1 = P[0]
y1 = P[1]
x2 = Q[0]
y2 = Q[1]
x3 = ((y2-y1)**2)*inv((x2-x1)**2)-x1-x2
y3 = (2*x1+x2)*(y2-y1)*inv(x2-x1)-((y2-y1)**3)*inv((x2-x1)**3)-y1
return [x3 % p, y3 % p]
def dbl(P):
"""
"""
x1 = P[0]
y1 = P[1]
x3 = (3*x1**2-3)**2 * inv((2*y1)**2)-x1-x1
y3 = (2*x1+x1)*(3*x1**2-3)*inv((2*y1))-(3*x1**2-3)**3*inv((2*y1)**3)-y1
return [x3 % p, y3 % p]
b = []
b.append(B)
tmp = dbl(B)
b.append(tmp)
for i in range(6):
tmp = add(tmp, B)
b.append(tmp)
def radix32(r):
o = ""
r = r % p
for i in range(8):
o += "0x%08x," % (r & 0xffffffff)
r = r >> 32
return o[:-1]
for i in range(33):
print "{"
for j in range(0, 8):
print " {"
print " {",radix32(b[j][0]),"},"
print " {",radix32(b[j][1]),"},"
print " },"
print "},"
for j in range(0, 8):
for k in range(8):
b[j] = dbl(b[j])
tinyssh-20180201/crypto/gep256.c 0000664 0000000 0000000 00000021502 13227043065 0016150 0 ustar 00root root 0000000 0000000 /*
20140918
Jan Mojzis
Public domain.
*/
#include "cleanup.h"
#include "fe.h"
#include "fep256.h"
#include "gep256.h"
/* b = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b */
static const fe paramb = {
0x27d2604b, 0x3bce3c3e, 0xcc53b0f6, 0x651d06b0,
0x769886bc, 0xb3ebbd55, 0xaa3a93e7, 0x5ac635d8
};
/* XXX - fake neutral point at infinity */
static void neutral(gep256 p) {
fe_0(p[0]);
fe_0(p[1]);
fe_0(p[2]);
}
static void neutral_precomp(gep256_precomp p) {
fe_0(p[0]);
fe_0(p[1]);
}
/*
p = q
*/
static void copy(gep256 p, gep256 q) {
fe_copy(p[0], q[0]);
fe_copy(p[1], q[1]);
fe_copy(p[2], q[2]);
}
/*
if (b) p = q;
*/
static void cmov(gep256 p, gep256 q, crypto_uint32 b) {
fe_cmov(p[0], q[0], b);
fe_cmov(p[1], q[1], b);
fe_cmov(p[2], q[2], b);
}
static void cmov_precomp(gep256_precomp p, gep256_precomp q, crypto_uint32 b) {
fe_cmov(p[0], q[0], b);
fe_cmov(p[1], q[1], b);
}
/*
if (a == b) return 1;
else return 0;
*/
static unsigned char equal(unsigned char a, unsigned char b) {
unsigned char x = a ^ b;
crypto_uint32 y = x;
y -= 1;
y >>= 31;
return y;
}
/*
if (p == oo) return 1;
else return 0
*/
static int isneutral(gep256 p) {
return fe_iszero3(p[0], p[1], p[2]);
}
static int isneutral_precomp(gep256_precomp p) {
return fe_iszero2(p[0], p[1]);
}
static void madd(gep256 out, gep256 p, gep256_precomp qp) {
gep256 q, o;
fe ZZ1, S2, R, RR, U2, H, HH, HHH, t0, t1;
fe_copy(q[0], qp[0]);
fe_copy(q[1], qp[1]);
fe_1(q[2]);
fep256_sq(ZZ1, p[2]);
fep256_mul(S2, ZZ1, p[2]);
fep256_mul(S2, S2, q[1]); /* S2 = Y2 * Z1^3 */
fep256_sub(R, p[1], S2); /* R = X1 - S2 */
fep256_mul(U2, q[0], ZZ1); /* U2 = X2 * Z1^2 */
fep256_sub(H, p[0], U2); /* H = X1 - U2 */
fep256_mul(o[2], H, p[2]); /* Z3 = H * Z1 */
fep256_sq(RR, R); /* R^2 */
fep256_sq(HH, H); /* H^2 */
fep256_mul(HHH, HH, H); /* H^3 */
fep256_mul(t0, p[0], HH); /* X1 * H^2 */
fep256_mul2(t1, t0); /* 2 * X1 * H^2 */
fep256_sub(o[0], RR, t1);
fep256_add(o[0], o[0], HHH); /* X3 = R^2 + H^3 - 2 * X1 * H^2 */
fep256_sub(o[1], t0, o[0]);
fep256_mul(o[1], R, o[1]);
fep256_mul(t1, p[1], HHH);
fep256_sub(o[1], o[1], t1); /* Y3 = R * (X1 * H^2 - X3) - X1 * H^3 */
/* if (p = neutral) o = q */
/* if (q = neutral) o = p */
cmov(o, q, isneutral(p));
cmov(o, p, isneutral_precomp(qp));
copy(out, o);
cleanup(ZZ1); cleanup(S2); cleanup(t0); cleanup(o);
cleanup(R); cleanup(RR); cleanup(U2); cleanup(t1);
cleanup(H); cleanup(HH); cleanup(HHH); cleanup(q);
}
void gep256_add(gep256 out, gep256 p, gep256 q) {
fe ZZ1, ZZ2, S1, S2, R, RR, U1, U2, H, HH, HHH, t0, t1;
gep256 o;
fep256_sq(ZZ1, p[2]);
fep256_sq(ZZ2, q[2]);
fep256_mul(S1, ZZ2, q[2]);
fep256_mul(S2, ZZ1, p[2]);
fep256_mul(S1, S1, p[1]); /* S1 = Y1 * Z2^3 */
fep256_mul(S2, S2, q[1]); /* S2 = Y2 * Z1^3 */
fep256_sub(R, S1, S2); /* R = S1 - S2 */
fep256_mul(U1, p[0], ZZ2); /* U1 = X1 * Z2^2 */
fep256_mul(U2, q[0], ZZ1); /* U2 = X2 * Z1^2 */
fep256_sub(H, U1, U2); /* H = U1 - U2 */
fep256_mul(o[2], H, p[2]);
fep256_mul(o[2], o[2], q[2]); /* Z3 = H * Z1 * Z2 */
fep256_sq(RR, R); /* R^2 */
fep256_sq(HH, H); /* H^2 */
fep256_mul(HHH, HH, H); /* H^3 */
fep256_mul(t0, U1, HH); /* U1 * H^2 */
fep256_mul2(t1, t0); /* 2 * U1 * H^2 */
fep256_sub(o[0], RR, t1);
fep256_add(o[0], o[0], HHH); /* X3 = R^2 + H^3 - 2 * U1 * H^2 */
fep256_sub(o[1], t0, o[0]);
fep256_mul(o[1], R, o[1]);
fep256_mul(t1, S1, HHH);
fep256_sub(o[1], o[1], t1); /* Y3 = R * (U1 * H^2 - X3) - S1 * H^3 */
/* if (p = neutral) o = q */
/* if (q = neutral) o = p */
cmov(o, q, isneutral(p));
cmov(o, p, isneutral(q));
copy(out, o);
cleanup(ZZ1); cleanup(ZZ2); cleanup(S1); cleanup(S2);
cleanup(R); cleanup(RR); cleanup(U1); cleanup(U2);
cleanup(H); cleanup(HH); cleanup(HHH);
cleanup(t0); cleanup(t1); cleanup(o);
}
static void dbl(gep256 p, gep256 q) {
gep256 o;
fe t0, t1, t2, S, S2, M, ZZ, U;
fep256_mul2(t0, q[1]); /* t0 = 2 * Y1 */
fep256_mul2(t1, t0); /* t1 = 4 * Y1 */
fep256_mul(t2, t0, t1); /* t2 = 8 * Y1^2 */
fep256_sq(U, t2); /* U = 64 * Y1^4 */
fep256_mul(S, t2, q[0]);
fep256_mul2(S, S); /* S = 16 * X * Y^2 */
fep256_mul2(S2, S); /* S2 = 32 * X * Y^2 */
fep256_mul(o[2], t1, q[2]); /* Z3 = 4 * Y1 * Z1 */
fep256_sq(ZZ, q[2]);
fep256_add(t1, q[0], ZZ);
fep256_sub(t2, q[0], ZZ);
fep256_mul(M, t1, t2);
fep256_mul6(M, M); /* M = 6 * (X1^2 - Z1^4) */
fep256_sq(o[0], M);
fep256_sub(o[0], o[0], S2); /* X3 = M^2 - 2S */
fep256_sub(o[1], S, o[0]);
fep256_mul(o[1], o[1], M);
fep256_sub(o[1], o[1], U); /* Y3 = M * (S - X3) - 64 * Y1^4 */
copy(p, o);
cleanup(t0); cleanup(t1); cleanup(t2);
cleanup(o); cleanup(S); cleanup(S2);
cleanup(M); cleanup(ZZ); cleanup(U);
}
/*
checks if point is on curve x^3 - 3x + b = y^2
*/
static int checkaffine(gep256 p) {
fe tmpx, tmpy;
int ret = -1;
fep256_sq(tmpx, p[0]);
fep256_mul(tmpx, tmpx, p[0]); /* x ^ 3 */
fep256_mul3(tmpy, p[0]); /* 3x */
fep256_sub(tmpy, paramb, tmpy); /* -3x + b */
fep256_add(tmpx, tmpx, tmpy); /* x ^ 3 - 3x + b */
fep256_sq(tmpy, p[1]); /* y ^ 2 */
fep256_sub(tmpx, tmpx, tmpy); /* y ^ 2 = x ^ 3 - 3x + b */
if (!fep256_isnonzero(tmpx)) ret = 0;
cleanup(tmpx); cleanup(tmpy);
return ret;
}
/*
conversion from Jacobian coordinates into affine form
*/
static int toaffine(gep256 p) {
fe invz, tmp;
if (!fep256_isnonzero(p[2])) return -1;
fep256_inv(invz, p[2]);
fe_copy(tmp, invz);
fep256_sq(invz, invz);
fep256_mul(p[0], p[0], invz);
fep256_mul(invz, invz, tmp);
fep256_mul(p[1], p[1], invz);
fe_1(p[2]);
cleanup(invz); cleanup(tmp);
return checkaffine(p);
}
int gep256_tobytes(unsigned char *out, gep256 in) {
if (toaffine(in) != 0) return -1;
fep256_tobytes(out , in[0]);
fep256_tobytes(out + 32, in[1]);
return 0;
}
int gep256_frombytes(gep256 out, const unsigned char *in) {
fep256_frombytes(out[0], in );
fep256_frombytes(out[1], in + 32);
fe_1(out[2]);
return checkaffine(out);
}
/*
point multiplication using windowed method
*/
void gep256_scalarmult(gep256 o, gep256 q, const unsigned char *a) {
long long i, j;
gep256 t[16], sp, p;
unsigned char e[64];
for (i = 0; i < 32; ++i) {
e[2 * i + 0] = (a[31 - i] >> 0) & 0x0f;
e[2 * i + 1] = (a[31 - i] >> 4) & 0x0f;
}
neutral(p);
/* precompute points */
copy(t[0], p);
copy(t[1], q);
for (i = 2; i < 16; ++i) {
if ((i & 1) == 0) dbl(t[i], t[i / 2]);
else gep256_add(t[i], t[i - 1], q);
}
for (i = 63; i >= 0; --i) {
for (j = 0; j < 4; ++j) dbl(p, p);
for (j = 0; j < 16; ++j) cmov(sp, t[j], equal(e[i], j));
gep256_add(p, p, sp);
}
copy(o, p);
cleanup(p); cleanup(t); cleanup(sp); cleanup(e);
}
static gep256_precomp base[33][8] = {
#include "gep256.base"
};
static unsigned char isnegative(signed char b) {
crypto_uint32 x = b;
x >>= 31;
return x;
}
static void select(gep256_precomp t, long long pos, signed char b) {
gep256_precomp minust;
unsigned char bnegative = isnegative(b);
unsigned char babs = b - (((-bnegative) & b) << 1);
long long i;
neutral_precomp(t);
for (i = 0; i < 8; ++i) cmov_precomp(t, base[pos][i], equal(babs, i + 1));
fe_copy(minust[0], t[0]);
fep256_neg(minust[1], t[1]);
cmov_precomp(t, minust, bnegative);
}
/*
base-point multiplication using precomputed tables
*/
void gep256_scalarmult_base(gep256 p, const unsigned char *a) {
long long i;
gep256_precomp sp;
signed char e[65], carry;
neutral(p);
for (i = 0; i < 32; ++i) {
e[2 * i + 0] = (a[31 - i] >> 0) & 0x0f;
e[2 * i + 1] = (a[31 - i] >> 4) & 0x0f;
}
e[64] = 0;
carry = 0;
for (i = 0; i < 65; ++i) {
e[i] += carry;
carry = e[i] + 8;
carry >>= 4;
e[i] -= carry << 4;
}
for (i = 1; i < 65; i += 2) {
select(sp, i / 2, e[i]);
madd(p, p, sp);
}
for (i = 0; i < 4; ++i) dbl(p, p);
for (i = 0; i < 65; i += 2) {
select(sp, i / 2, e[i]);
madd(p, p, sp);
}
cleanup(sp); cleanup(e);
}
tinyssh-20180201/crypto/gep256.h 0000664 0000000 0000000 00000000717 13227043065 0016162 0 ustar 00root root 0000000 0000000 #ifndef _GEP256_H____
#define _GEP256_H____
#include "fe.h"
typedef fe gep256[3]; /* X, Y, Z */
typedef fe gep256_precomp[2]; /* X, Y */
extern void gep256_scalarmult(gep256, gep256, const unsigned char *);
extern void gep256_scalarmult_base(gep256, const unsigned char *);
extern int gep256_tobytes(unsigned char *, gep256);
extern int gep256_frombytes(gep256, const unsigned char *);
extern void gep256_add(gep256, gep256, gep256);
#endif
tinyssh-20180201/crypto/randombytes.c 0000664 0000000 0000000 00000001404 13227043065 0017466 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from randombytes/devurandom.c, added close-on-exec */
#include
#include
#include
#include
#include "randombytes.h"
/* it's really stupid that there isn't a syscall for this */
static int fd = -1;
void randombytes(unsigned char *x,unsigned long long xlen)
{
int i;
if (fd == -1) {
for (;;) {
#ifdef O_CLOEXEC
fd = open("/dev/urandom",O_RDONLY | O_CLOEXEC);
#else
fd = open("/dev/urandom",O_RDONLY);
fcntl(fd,F_SETFD,1);
#endif
if (fd != -1) break;
sleep(1);
}
}
while (xlen > 0) {
if (xlen < 1048576) i = xlen; else i = 1048576;
i = read(fd,x,i);
if (i < 1) {
sleep(1);
continue;
}
x += i;
xlen -= i;
}
}
tinyssh-20180201/crypto/randombytes.h 0000664 0000000 0000000 00000000326 13227043065 0017475 0 ustar 00root root 0000000 0000000 #ifndef _RANDOMBYTES_H____
#define _RANDOMBYTES_H____
extern void randombytes(unsigned char *, unsigned long long);
#ifndef randombytes_implementation
#define randombytes_implementation "tinynacl"
#endif
#endif
tinyssh-20180201/crypto/sc25519.c 0000664 0000000 0000000 00000002774 13227043065 0016165 0 ustar 00root root 0000000 0000000 /*
- based on tweetnacl 20140427 (http://tweetnacl.cr.yp.to/software.html)
*/
#include "crypto_int64.h"
#include "crypto_uint32.h"
#include "crypto_uint64.h"
#include "cleanup.h"
#include "sc25519.h"
#define FOR(i,n) for (i = 0;i < n;++i)
static const crypto_uint64 L[32] = {0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10};
static void modL(unsigned char *r,crypto_int64 x[64])
{
crypto_int64 carry,i,j;
for (i = 63;i >= 32;--i) {
carry = 0;
for (j = i - 32;j < i - 12;++j) {
x[j] += carry - 16 * x[i] * L[j - (i - 32)];
carry = (x[j] + 128) >> 8;
x[j] -= carry << 8;
}
x[j] += carry;
x[i] = 0;
}
carry = 0;
FOR(j,32) {
x[j] += carry - (x[31] >> 4) * L[j];
carry = x[j] >> 8;
x[j] &= 255;
}
FOR(j,32) x[j] -= carry * L[j];
FOR(i,32) {
x[i+1] += x[i] >> 8;
r[i] = x[i] & 255;
}
}
void sc25519_reduce(unsigned char *s) {
crypto_int64 t[64], i;
for (i = 0; i < 64; ++i) t[i] = s[i];
for (i = 0; i < 64; ++i) s[i] = 0;
modL(s, t);
cleanup(t);
}
void sc25519_muladd(unsigned char *s, const unsigned char *a, const unsigned char *b, const unsigned char *c) {
crypto_int64 t[64], i, j;
for (i = 0; i < 64; ++i) t[i] = 0;
for (i = 0; i < 32; ++i) for (j = 0; j < 32; ++j) {
t[i + j] += (crypto_int64)a[i] * (crypto_int64)b[j];
}
for (i = 0; i < 32; ++i) t[i] += c[i];
modL(s, t);
cleanup(t);
}
tinyssh-20180201/crypto/sc25519.h 0000664 0000000 0000000 00000000326 13227043065 0016161 0 ustar 00root root 0000000 0000000 #ifndef _SC25519_H____
#define _SC25519_H____
extern void sc25519_reduce(unsigned char *);
extern void sc25519_muladd(unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *);
#endif
tinyssh-20180201/crypto/scp256.c 0000664 0000000 0000000 00000013511 13227043065 0016163 0 ustar 00root root 0000000 0000000 /*
20140918
Jan Mojzis
Public domain.
*/
#include "uint32_pack_big.h"
#include "uint32_unpack_big.h"
#include "fe.h"
#include "cleanup.h"
#include "scp256.h"
/* m = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551L */
static const fe m = {
0xfc632551, 0xf3b9cac2, 0xa7179e84, 0xbce6faad,
0xffffffff, 0xffffffff, 0x00000000, 0xffffffff
};
/* m2 = bce6faada7179e84f3b9cac2fc63254f */
static const unsigned char m2[32] = {
0x0b, 0x0c, 0x0e, 0x06, 0x0f, 0x0a, 0x0a, 0x0d,
0x0a, 0x07, 0x01, 0x07, 0x09, 0x0e, 0x08, 0x04,
0x0f, 0x03, 0x0b, 0x09, 0x0c, 0x0a, 0x0c, 0x02,
0x0f, 0x0c, 0x06, 0x03, 0x02, 0x05, 0x04, 0x0f
};
/*
ml[0] = (2^256 * 2^0) % m;
ml[1] = (2^256 * 2^32) % m;
ml[2] = (2^256 * 2^64) % m;
...
*/
static const fe ml[8] = {
{ 0x039cdaaf, 0x0c46353d, 0x58e8617b, 0x43190552, 0x00000000, 0x00000000, 0xffffffff, 0x00000000 },
{ 0x00000000, 0x039cdaaf, 0x0c46353d, 0x58e8617b, 0x43190552, 0x00000000, 0x00000000, 0xffffffff },
{ 0xfc632551, 0xf756a571, 0xb6faae70, 0x22159165, 0x9c0166cd, 0x43190552, 0x00000001, 0xfffffffe },
{ 0xf8c64aa2, 0xe7739585, 0x51cc17b8, 0x89b10547, 0x652e96b7, 0x9c0166cd, 0x43190554, 0xfffffffe },
{ 0xfc632551, 0xf01cf013, 0x9ad16947, 0x679b73e1, 0xccca0a99, 0x652e96b7, 0x9c0166ce, 0x43190552 },
{ 0x609a770e, 0x74d1cb7b, 0xadae2385, 0xa83f3999, 0x79318f1c, 0xccca0a99, 0x22159165, 0xdf1a6c20 },
{ 0x4a40048f, 0x227511de, 0x0a16ad07, 0x27f60529, 0xe2b8f21e, 0x79318f1c, 0xedaf9e78, 0x012ffd85 },
{ 0xb9bd8feb, 0x108e407a, 0x5c29d906, 0xecd00db8, 0x2845b238, 0xe2b8f21e, 0x78019197, 0xeedf9bfd }
};
/*
r = x % m;
*/
static void _reducebig(fe r, fel x) {
crypto_uint64 i, j, u, t[10];
u = 0;
for (i = 0; i < 16; ++i) { u += x[i]; x[i] = u & 0xffffffff; u >>= 32; }
/* 16 limbs -> 10 limbs */
for (i = 0; i < 8; ++i) t[i] = x[i];
t[8] = t[9] = 0;
for (j = 0; j < 8; ++j) for (i = 0; i < 8; ++i) {
u = (crypto_uint64)ml[j][i] * x[j + 8];
t[i ] += u & 0xffffffff;
t[i + 1] += u >> 32;
}
u = 0;
for (i = 0; i < 10; ++i) { u += t[i]; t[i] = u & 0xffffffff; u >>= 32; }
/* 10 limbs -> 9 limbs */
for (j = 0; j < 2; ++j) {
u = 0;
for (i = 0; i < 8; ++i) { u += t[i] + (crypto_uint32)ml[1][i] * t[9]; t[i] = u & 0xffffffff; u >>= 32; }
u += t[8]; t[8] = u & 0xffffffff; u >>= 32; t[9] = u;
}
/* 9 limbs -> 8 limbs */
for (j = 0; j < 2; ++j) {
u = 0;
for (i = 0; i < 8; ++i) { u += t[i] + (crypto_uint32)ml[0][i] * t[8]; t[i] = u & 0xffffffff; u >>= 32; }
t[8] = u;
}
/* final reduce */
for (i = 0; i < 8; ++i) r[i] = t[i];
fe_reducesmall(r, m, u);
cleanup(t);
}
/*
o = (a * b) % m
*/
static void _mul(fe o, const fe a, const fe b) {
fel t;
fe_mul_(t, a, b);
_reducebig(o, t);
cleanup(t);
}
/*
o = (a ^ 2) % m
*/
static void _sq(fe o, const fe a) {
fel t;
fe_sq_(t, a);
_reducebig(o, t);
cleanup(t);
}
/*
out = (a + b) % m;
*/
static void _add(fe out, fe a, const fe b) {
fel t;
long long i;
for (i = 0; i < 16; ++i) t[i] = 0;
for (i = 0; i < 8; ++i) t[i] = (crypto_uint64)a[i] + (crypto_uint64)b[i];
_reducebig(out, t);
cleanup(t);
}
/*
out = (1 / in) % m;
... using Fermat's Little Theorem
44 mul, 262 sq
*/
static void _inv(fe out, const fe in) {
fe o, x2, x4, x8, x16, x32, t[16];
long long i;
_sq(o, in);
for (i = 0; i < 1 - 1; ++i) _sq(o, o);
_mul(x2, o, in);
_sq(o, x2);
for (i = 0; i < 2 - 1; ++i) _sq(o, o);
_mul(x4, o, x2);
_sq(o, x4);
for (i = 0; i < 4 - 1; ++i) _sq(o, o);
_mul(x8, o, x4);
_sq(o, x8);
for (i = 0; i < 8 - 1; ++i) _sq(o, o);
_mul(x16, o, x8);
_sq(o, x16);
for (i = 0; i < 16 - 1; ++i) _sq(o, o);
_mul(x32, o, x16);
_sq(o, x32);
for (i = 0; i < 32 - 1; ++i) _sq(o, o);
for (i = 0; i < 32; ++i) _sq(o, o);
_mul(o, o, x32);
for (i = 0; i < 32; ++i) _sq(o, o);
_mul(o, o, x32);
fe_0(t[0]);
fe_copy(t[1], in);
_sq(t[2], t[1]);
fe_copy(t[3], x2);
for (i = 4; i < 15; ++i) {
if ((i & 1) == 0) _sq(t[i], t[i / 2]);
else _mul(t[i], t[i - 1], in);
}
fe_copy(t[15], x4);
for (i = 0; i < 32; ++i) {
_sq(o, o); _sq(o, o); _sq(o, o); _sq(o, o);
_mul(o, o, t[m2[i]]);
}
fe_copy(out, o);
cleanup(o); cleanup(t);
cleanup(x2); cleanup(x4);
cleanup(x8); cleanup(x16); cleanup(x32);
}
static void _tobytes(unsigned char *out, fe in) {
long long i;
fe_reducesmall(in, m, 0);
for (i = 0; i < 8; ++i) uint32_pack_big(out + 28 - 4 * i, in[i]);
}
static void _frombytes(fe out, const unsigned char *in) {
long long i;
for (i = 0; i < 8; ++i) out[i] = uint32_unpack_big(in + 28 - 4 * i);
fe_reducesmall(out, m, 0);
}
static void _from64bytes(fe out, const unsigned char *in) {
long long i;
fel t;
for (i = 0; i < 16; ++i) t[i] = uint32_unpack_big(in + 60 - 4 * i);
_reducebig(out, t);
cleanup(t);
}
void scp256_reduce64(unsigned char *x) {
fe a;
long long i;
_from64bytes(a, x);
for (i = 0; i < 64; ++i) x[i] = 0;
_tobytes(x, a);
cleanup(a);
}
void scp256_reduce32(unsigned char *x) {
fe a;
_frombytes(a, x);
fe_reducesmall(a, m, 0);
_tobytes(x, a);
cleanup(a);
}
void scp256_inv(unsigned char *x) {
fe a;
_frombytes(a, x);
_inv(a, a);
_tobytes(x, a);
cleanup(a);
}
void scp256_mul(unsigned char *o, const unsigned char *x, const unsigned char *y) {
fe a, b;
_frombytes(a, x);
_frombytes(b, y);
_mul(a, a, b);
_tobytes(o, a);
cleanup(a); cleanup(b);
}
void scp256_add(unsigned char *o, const unsigned char *x, const unsigned char *y) {
fe a, b;
_frombytes(a, x);
_frombytes(b, y);
_add(a, a, b);
_tobytes(o, a);
cleanup(a); cleanup(b);
}
tinyssh-20180201/crypto/scp256.h 0000664 0000000 0000000 00000000551 13227043065 0016170 0 ustar 00root root 0000000 0000000 #ifndef _SCP256_H____
#define _SCP256_H____
extern void scp256_reduce64(unsigned char *);
extern void scp256_reduce32(unsigned char *);
extern void scp256_inv(unsigned char *);
extern void scp256_mul(unsigned char *, const unsigned char *, const unsigned char *);
extern void scp256_add(unsigned char *, const unsigned char *, const unsigned char *);
#endif
tinyssh-20180201/crypto/sha256.c 0000664 0000000 0000000 00000011120 13227043065 0016143 0 ustar 00root root 0000000 0000000 #include "crypto_uint32.h"
#include "crypto_uint64.h"
#include "sha256.h"
static void store64_bigendian(unsigned char *y, crypto_uint64 x) {
long long i;
for (i = 7; i >= 0; --i) { y[i] = x; x >>= 8; }
}
static void store32_bigendian(unsigned char *y, crypto_uint32 x) {
long long i;
for (i = 3; i >= 0; --i) { y[i] = x; x >>= 8; }
}
static crypto_uint32 load32_bigendian(const unsigned char *x) {
crypto_uint32 y = 0;
long long i;
for (i = 0; i < 4; ++i) y = (y << 8) | x[i];
return y;
}
static crypto_uint32 R(crypto_uint32 x, int c) { return (x >> c) | ((x & 0xffffffff) << (32 - c)); }
static crypto_uint32 Ch(crypto_uint32 x,crypto_uint32 y,crypto_uint32 z) { return (x & y) ^ (~x & z); }
static crypto_uint32 Maj(crypto_uint32 x,crypto_uint32 y,crypto_uint32 z) { return (x & y) ^ (x & z) ^ (y & z); }
static crypto_uint32 Sigma0(crypto_uint32 x) { return R(x, 2) ^ R(x,13) ^ R(x,22); }
static crypto_uint32 Sigma1(crypto_uint32 x) { return R(x, 6) ^ R(x,11) ^ R(x,25); }
static crypto_uint32 sigma0(crypto_uint32 x) { return R(x, 7) ^ R(x,18) ^ (x >> 3); }
static crypto_uint32 sigma1(crypto_uint32 x) { return R(x,17) ^ R(x,19) ^ (x >> 10); }
static const crypto_uint32 K[64] = {
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
};
static void blocks(crypto_uint32 *z, const unsigned char *m, unsigned long long n) {
crypto_uint32 b[8], a[8], w[64], t;
long long i, j;
for (i = 0; i < 8; ++i) a[i] = z[i];
while (n >= 64) {
for (i = 0; i < 16; ++i) w[i] = load32_bigendian(m + 4 * i);
for (i = 16; i < 64; ++i) w[i] = (sigma1(w[i - 2]) + w[i - 7] + sigma0(w[i - 15]) + w[i - 16]) & 0xffffffff;
for (i = 0; i < 64; ++i) {
for (j = 0; j < 8; ++j) b[j] = a[j];
t = a[7] + Sigma1(a[4]) + Ch(a[4], a[5], a[6]) + K[i] + w[i];
b[7] = t + Sigma0(a[0]) + Maj(a[0], a[1], a[2]);
b[3] += t;
for (j = 0; j < 8; ++j) a[(j + 1) % 8] = b[j] & 0xffffffff;
}
for (i = 0; i < 8; ++i) { a[i] += z[i]; a[i] &= 0xffffffff; z[i] = a[i]; }
m += 64;
n -= 64;
}
}
static crypto_uint32 iv[8] = {
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
};
int sha256_hash(unsigned char *o, const unsigned char *m, unsigned long long n) {
long long i;
unsigned char x[128];
crypto_uint64 b = n;
crypto_uint32 h[8];
for (i = 0; i < 8; ++i) h[i] = iv[i];
blocks(h, m, n);
m += n;
n &= 63;
m -= n;
for (i = 0; i < sizeof x; ++i) x[i] = 0;
for (i = 0; i < n; ++i) x[i] = m[i];
x[n] = 128;
n = 128 - 64 * (n < 56);
store64_bigendian(x + n - 8, b << 3);
blocks(h, x, n);
for (i = 0; i < 8; ++i) store32_bigendian(o + 4 * i, h[i]);
return 0;
}
int sha256_auth(unsigned char *o, const unsigned char *m, unsigned long long n, const unsigned char *k) {
long long i;
crypto_uint64 b = n;
unsigned char x[128], y[32];
crypto_uint32 h[8];
for (i = 0; i < 8; ++i) h[i] = iv[i];
for (i = 0; i < 64; ++i) x[i] = 0x36;
for (i = 0; i < 32; ++i) x[i] ^= k[i];
blocks(h, x, 64);
blocks(h, m, n);
m += n;
n &= 63;
m -= n;
for (i = 0; i < sizeof x; ++i) x[i] = 0;
for (i = 0; i < n; ++i) x[i] = m[i];
x[n] = 128;
n = 128 - 64 * (n < 56);
store64_bigendian(x + n - 8, 512 + (b << 3));
blocks(h, x, n);
for (i = 0; i < 64; ++i) x[i] = 0x5c;
for (i = 0; i < 32; ++i) x[i] ^= k[i];
for (i = 0; i < 8; ++i) store32_bigendian(y + 4 * i, h[i]);
for (i = 0; i < 32; ++i) x[i + 64] ^= y[i];
for (i = 0; i < 8; ++i) h[i] = iv[i];
for (i = 32; i < 64; ++i) x[64 + i] = 0;
x[64 + 32] = 0x80;
x[64 + 62] = 3;
blocks(h, x, 128);
for (i = 0; i < 8; ++i) store32_bigendian(o + 4 * i, h[i]);
return 0;
}
tinyssh-20180201/crypto/sha256.h 0000664 0000000 0000000 00000000366 13227043065 0016162 0 ustar 00root root 0000000 0000000 #ifndef _SHA256_H_____
#define _SHA256_H_____
extern int sha256_auth(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *);
extern int sha256_hash(unsigned char *, const unsigned char *, unsigned long long);
#endif
tinyssh-20180201/crypto/uint32_pack.c 0000664 0000000 0000000 00000000405 13227043065 0017261 0 ustar 00root root 0000000 0000000 #include "uint32_pack.h"
/*
The 'uint32_pack' function converts 32-bit unsigned
integer into 4 bytes stored in little-endian format
*/
void uint32_pack(unsigned char *y, crypto_uint32 x) {
long long i;
for (i = 0; i < 4; ++i) { y[i] = x; x >>= 8; }
}
tinyssh-20180201/crypto/uint32_pack.h 0000664 0000000 0000000 00000000224 13227043065 0017265 0 ustar 00root root 0000000 0000000 #ifndef _UINT32_PACK_H____
#define _UINT32_PACK_H____
#include "crypto_uint32.h"
extern void uint32_pack(unsigned char *, crypto_uint32);
#endif
tinyssh-20180201/crypto/uint32_pack_big.c 0000664 0000000 0000000 00000000420 13227043065 0020077 0 ustar 00root root 0000000 0000000 #include "uint32_pack_big.h"
/*
The 'uint32_pack_big' function converts 32-bit unsigned
integer into 4 bytes stored in big-endian format
*/
void uint32_pack_big(unsigned char *y, crypto_uint32 x) {
long long i;
for (i = 3; i >= 0; --i) { y[i] = x; x >>= 8; }
}
tinyssh-20180201/crypto/uint32_pack_big.h 0000664 0000000 0000000 00000000237 13227043065 0020112 0 ustar 00root root 0000000 0000000 #ifndef _UINT32_PACK_BIG____
#define _UINT32_PACK_BIG____
#include "crypto_uint32.h"
extern void uint32_pack_big(unsigned char *y, crypto_uint32 x);
#endif
tinyssh-20180201/crypto/uint32_unpack.c 0000664 0000000 0000000 00000000451 13227043065 0017625 0 ustar 00root root 0000000 0000000 #include "uint32_unpack.h"
/*
The 'uint32_unpack' function converts 4 bytes
in little-endian format into 32-bit unsigned integer.
*/
crypto_uint32 uint32_unpack(const unsigned char *x) {
crypto_uint32 y = 0;
long long i;
for (i = 3; i >= 0; --i) y = (y << 8) | x[i];
return y;
}
tinyssh-20180201/crypto/uint32_unpack.h 0000664 0000000 0000000 00000000232 13227043065 0017627 0 ustar 00root root 0000000 0000000 #ifndef _UINT32_UNPACK_H____
#define _UINT32_UNPACK_H____
#include "crypto_uint32.h"
extern crypto_uint32 uint32_unpack(const unsigned char *);
#endif
tinyssh-20180201/crypto/uint32_unpack_big.c 0000664 0000000 0000000 00000000462 13227043065 0020450 0 ustar 00root root 0000000 0000000 #include "uint32_unpack_big.h"
/*
The 'uint32_unpack_big' function converts 4 bytes
in big-endian format into 32-bit unsigned integer.
*/
crypto_uint32 uint32_unpack_big(const unsigned char *x) {
crypto_uint32 y = 0;
long long i;
for (i = 0; i < 4; ++i) y = (y << 8) | x[i];
return y;
}
tinyssh-20180201/crypto/uint32_unpack_big.h 0000664 0000000 0000000 00000000242 13227043065 0020451 0 ustar 00root root 0000000 0000000 #ifndef _UINT32_UNPACK_BIG____
#define _UINT32_UNPACK_BIG____
#include "crypto_uint32.h"
extern crypto_uint32 uint32_unpack_big(const unsigned char *);
#endif
tinyssh-20180201/crypto/verify.c 0000664 0000000 0000000 00000000337 13227043065 0016447 0 ustar 00root root 0000000 0000000 #include "verify.h"
int verify(const unsigned char *x, const unsigned char *y, long long n) {
unsigned int d = 0;
long long i;
for (i = 0; i < n; ++i) d |= x[i] ^ y[i];
return (1 & ((d - 1) >> 8)) - 1;
}
tinyssh-20180201/crypto/verify.h 0000664 0000000 0000000 00000000201 13227043065 0016442 0 ustar 00root root 0000000 0000000 #ifndef _VERIFY_H____
#define _VERIFY_H____
extern int verify(const unsigned char *, const unsigned char *, long long);
#endif
tinyssh-20180201/make-install.sh 0000775 0000000 0000000 00000002546 13227043065 0016403 0 ustar 00root root 0000000 0000000 #!/bin/sh -e
build="`pwd`/build"
source="`pwd`"
bin="${build}/bin"
man="${build}/man"
installcmd="${bin}/_tinysshd-install"
cat "${source}/tinyssh/TARGETS" |\
while read x
do
[ -x "${bin}/${x}" ] || \
(
echo "=== `date` === $x not compiled, compile first!"
exit 111;
) || exit 111
done || exit 111
[ -x "${installcmd}" ] || \
(
echo "=== `date` === ${installcmd} not compiled, compile first!"
exit 111;
) || exit 111
#bin
confbin="`head -1 conf-bin`"
bindir=`echo "$1/${confbin}" | sed 's,//,/,g'`
echo "=== `date` === installing bin directory ${bindir}"
mkdir -p "${bindir}" || exit 111
cat "${source}/tinyssh/TARGETS" |\
while read x
do
"${installcmd}" "${bin}/${x}" "${bindir}" "${x}.tmp" "${x}" 1 || exit 111
echo "=== `date` === installing ${bin}/${x} -> ${bindir}/${x}"
done || exit 111
echo "=== `date` === finishing"
#man
confman="`head -1 conf-man`"
mandir=`echo "$1/${confman}" | sed 's,//,/,g'`
echo "=== `date` === installing man directory ${mandir}"
mkdir -p "${mandir}" || exit 111
ls "${man}" | sort |\
while read x
do
n=`echo "${x}" | cut -d'.' -f2`
mkdir -p "${mandir}/man${n}" || exit 111
"${installcmd}" "${man}/${x}" "${mandir}/man${n}" "${x}.tmp" "${x}" || exit 111
echo "=== `date` === installing ${man}/${x} -> ${mandir}/man${n}/${x}"
done || exit 111
echo "=== `date` === finishing"
exit 0
tinyssh-20180201/make-tinyssh.sh 0000775 0000000 0000000 00000022202 13227043065 0016425 0 ustar 00root root 0000000 0000000 #!/bin/sh -e
top="`pwd`"
build="`pwd`/build"
bin="${build}/bin"
man="${build}/man"
lib="${build}/lib"
include="${build}/include"
log="${build}/log"
work="${build}/work"
contribdir="`pwd`/build-contrib"
rm -rf "${build}"
mkdir -p "${build}"
mkdir -p "${bin}"
mkdir -p "${man}"
mkdir -p "${lib}"
mkdir -p "${include}"
exec 5>"${log}"
exec 2>&5
exec &5
}
log1() {
echo "=== `date` === $@"
echo "=== `date` === $@" >&5
}
log2() {
echo "=== `date` === $@"
echo "=== `date` === $@" >&5
}
version=`head -1 "${top}/debian/changelog" | cut -d '(' -f2 | cut -d ')' -f1` #XXX
if [ x"${version}" = x ]; then
version=noversion
fi
LANG=C
export LANG
log0 "uname -a: `uname -a || :`"
log0 "uname -F: `uname -F || :`"
log0 "uname -M: `uname -M || :`"
log0 "ulimit -a: `echo; ulimit -a || :`"
log1 "obtaining compiler"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
(
if [ x"${CC}" != x ]; then
echo "${CC} "
fi
cat "${top}/conf-cc"
) | while read compiler
do
echo 'int main(void) { return 0; }' > try.c
${compiler} -o try try.c || { log2 "${compiler} failed"; continue; }
log2 "${compiler} ok"
echo "${compiler}" > compiler
break
done
)
compiler=`head -1 "${work}/compiler"`
log1 "finishing"
log1 "checking compiler options"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
cflags=`cat "${top}/conf-cflags" || :`
cflags="${CPPFLAGS} ${CFLAGS} ${LDFLAGS} ${cflags}"
for i in ${cflags}; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${options} "${i}" -o try try.c || { log2 "${i} failed"; continue; }
options="${options} ${i}"
log2 "${i} ok"
done
echo ${options} > options
)
compilerorig=${compiler}
compiler="${compiler} `cat ${work}/options`"
log2 "${compiler}"
log1 "finishing"
log1 "checking libs"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
(
cat "${top}/conf-libs" || :
) | (
exec 9>syslibs
while read i; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${i} -o try try.c || { log2 "${i} failed"; continue; }
echo "${i}" >&9
log2 "${i} ok"
done
)
)
libs=`cat "${work}/syslibs"`
log1 "finishing"
log1 "checking \$LIBS"
if [ x"${LIBS}" != x ]; then
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
for i in ${LIBS}; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${i} -o try try.c || { log2 "${i} failed"; continue; }
syslibs="${i} ${syslibs}"
log2 "${i} ok"
done
echo ${syslibs} > syslibs
)
fi
libsorig=${libs}
libs="${libs} `cat ${work}/syslibs`"
log1 "finishing"
log1 "building sysdep headers"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr sysdep/* "${work}"
(
cd "${work}"
sh list | (
while read target source
do
[ -f "${include}/${target}" ] && continue
rm -f "${source}" "${target}.tmp"
${compiler} -O0 -o "${source}" "${source}.c" ${libs} || continue
"./${source}" > "${target}.tmp" 2>/dev/null || continue
if [ -f "${source}.out" ]; then
cp "${source}.out" "${include}/${target}"
else
#runtime
cp "${target}.tmp" "${include}/${target}"
fi
log2 "${target} ${source}"
done
)
)
log1 "finishing"
log1 "starting crypto lib"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr crypto/* "${work}"
(
cd "${work}"
cat CRYPTOSOURCES\
| while read x
do
${compiler} -I"${include}" -c "${x}.c" || { log2 "libtinynacl.a failed ... see the log ${log}"; exit 111; }
done || exit 111
ar cr "${lib}/libtinynacl.a" `cat CRYPTOLIBS` || exit 0
)
log2 "libtinynacl.a ok"
log1 "finishing"
origlibs="${origlibs} ${lib}/libtinynacl.a"
libs="${libs} ${lib}/libtinynacl.a"
log1 "starting crypto headers"
rm -rf "${work}"
mkdir -p "${work}"
cp -p crypto/CRYPTOPRIMITIVES "${work}"
cp -pr crypto-tests/*test.c "${work}"
cp -pr crypto-tests/*.h "${work}"
cp -pr crypto-tests/*.data "${work}" 2>/dev/null || :
(
cd "${work}"
cat CRYPTOPRIMITIVES\
| while read primitive checkflag
do
if [ "x${checkflag}" = x0 ]; then
cp -p "${top}/crypto/${primitive}.h" "${include}"
continue;
fi
testf=`echo "${primitive}" | sed 's/$/test/'`
(
echo '#include '
echo "#include <${primitive}.h>"
echo 'int main(void) {'
echo "#ifdef ${primitive}_PRIMITIVE"
echo "printf(\"%s\\\\n\", ${primitive}_PRIMITIVE);"
echo '#else'
echo "#ifdef ${primitive}_IMPLEMENTATION"
echo "printf(\"%s\\\\n\", ${primitive}_IMPLEMENTATION);"
echo '#endif'
echo "#ifdef ${primitive}_implementation"
echo "printf(\"%s\\\\n\", ${primitive}_implementation);"
echo '#endif'
echo '#endif'
echo 'return 0; }'
) > try.c
#try ext. crypto library
log0 "trying: ext. ${primitive}:"
if ${compiler} -c "${testf}.c" ${libs}; then
if ${compiler} -o "${testf}" "${testf}.o" ${libs}; then
if ${compiler} -o try try.c; then
if /bin/sh -ec "./${testf}"; then
log2 "${primitive}.h (`./try`) ok"
echo "#include <${primitive}.h>" >> crypto.h
continue
else
log2 "${primitive}.h (`./try`) failed"
fi
fi
fi
fi
#try int. crypto library
log0 "trying: int. ${primitive}:"
if cp -p "${top}/crypto/${primitive}.h" . ; then
if ${compilerorig} -I. -I"$include" -o "${testf}" "${testf}.c" ${origlibs}; then
if ${compilerorig} -I. -I"$include" -o try try.c; then
if /bin/sh -ec "./${testf}"; then
log2 "${primitive}.h (`./try`) ok"
echo "#include \"${primitive}.h\"" >> crypto.h
cp -p "${primitive}.h" "${include}"
continue
fi
fi
fi
fi
log2 "${primitive}.h failed ... see the log ${log}"
exit 111
done || exit 111
cp crypto.h "${include}/crypto.h"
)
log1 "finishing"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr tinyssh/* "${work}"
cp -pr tinyssh-tests/*test.c "${work}"
cp -pr tinyssh-tests/*.h "${work}"
cp -pr _tinyssh/* "${work}" 2>/dev/null || :
(
cd "${work}"
log1 "starting tinyssh objects"
touch SOURCES TARGETS _TARGETS
cat SOURCES TARGETS _TARGETS\
| while read x
do
${compiler} "-DCOMPILER=\"${compilerorig}\"" "-DVERSION=\"${version}\"" -I"${include}" -c "${x}.c" || { log2 "${x}.o failed ... see the log ${log}"; exit 111; }
log2 "${x}.o ok"
done || exit 111
ar cr libtinyssh.a `cat LIBS` || exit 111
log1 "finishing"
#tests
log1 "starting tinyssh-tests"
cat LIBS \
| while read x
do
t=`echo ${x} | sed 's/.o$/test/'`
if [ ! -h "${t}.c" ]; then
${compiler} -I"${include}" -c "${t}.c" || { log2 "${t} failed ... see the log ${log}"; exit 111; }
${compiler} -I"${include}" -o "${t}" "${t}.o" libtinyssh.a ${libs} || { log2 "${t} failed ... see the log ${log}"; exit 111; }
"./${t}" || { log2 "${t} failed ... see the log ${log}"; exit 111; }
log2 "${t} ok"
fi
done || exit 111
log1 "finishing"
log1 "starting _tinyssh"
cat _TARGETS \
| while read x
do
${compiler} -I"${include}" -o "${x}" "${x}.o" libtinyssh.a ${libs} || { log2 "${x} failed ... see the log ${log}"; exit 111; }
log2 "${x} ok"
cp -p "${x}" "${bin}/${x}";
done || exit 111
log1 "finishing"
log1 "starting tinyssh"
cat TARGETS \
| while read x
do
${compiler} -I"${include}" -o "${x}" "${x}.o" libtinyssh.a ${libs} || { log2 "${x} failed ... see the log ${log}"; exit 111; }
log2 "${x} ok"
done || exit 111
log1 "finishing"
log1 "starting tinyssh regression tests"
cat TARGETS \
| while read x
do
sh ${x}.rts > ${x}.out
cmp "${x}.out" "${x}.exp" || { log2 "${x} regression test failed ... see the difference `pwd`/${x}.out `pwd`/${x}.exp"; exit 111; }
log2 "${x} ok"
cp -p "${x}" "${bin}/${x}";
done || exit 111
log1 "finishing"
) || exit 111
log1 "starting manpages"
cp -pr man/* "${man}"
log1 "finishing"
log1 "counting words of code - tests"
rm -rf "${work}"
mkdir -p "${work}"
for dir in tinyssh-tests crypto-tests _tinyssh; do
(
touch "${work}/${dir}"
[ -d "${dir}" ] || exit 0
cd "${dir}"
cat *.c *.h > "${work}/${dir}" || :
)
(
cd "${work}"
cat "${dir}" \
| (
cpp -fpreprocessed || gcpp -fpreprocessed
) | (
x=`sed 's/[_a-zA-Z0-9][_a-zA-Z0-9]*/x/g' | tr -d ' \012' | wc -c | tr -d ' '`
log2 "${dir} ${x}"
)
)
done
(
cd "${work}"
cat * \
| (
cpp -fpreprocessed || gcpp -fpreprocessed
) | (
x=`sed 's/[_a-zA-Z0-9][_a-zA-Z0-9]*/x/g' | tr -d ' \012' | wc -c | tr -d ' '`
log2 "$x words of code"
)
)
log1 "finishing"
echo "=== `date` === counting words of code"
rm -rf "${work}"
mkdir -p "${work}"
for dir in sysdep tinyssh crypto; do
(
cd "${dir}"
cat *.c *.h > "${work}/${dir}" || :
)
(
cd "${work}"
cat "${dir}" \
| (
cpp -fpreprocessed || gcpp -fpreprocessed
) | (
x=`sed 's/[_a-zA-Z0-9][_a-zA-Z0-9]*/x/g' | tr -d ' \012' | wc -c | tr -d ' '`
log2 "${dir} ${x}"
)
)
done
(
cd "${work}"
cat * \
| (
cpp -fpreprocessed || gcpp -fpreprocessed
) | (
x=`sed 's/[_a-zA-Z0-9][_a-zA-Z0-9]*/x/g' | tr -d ' \012' | wc -c | tr -d ' '`
log2 "${x} words of code"
)
)
log1 "finishing"
exit 0
tinyssh-20180201/make-tinysshcc.sh 0000775 0000000 0000000 00000011263 13227043065 0016740 0 ustar 00root root 0000000 0000000 #!/bin/sh -e
top="`pwd`"
build="`pwd`/build"
bin="${build}/bin"
man="${build}/man"
lib="${build}/lib"
include="${build}/include"
log="${build}/log"
work="${build}/work"
contribdir="`pwd`/build-contrib"
rm -rf "${build}"
mkdir -p "${build}"
mkdir -p "${bin}"
mkdir -p "${man}"
mkdir -p "${lib}"
mkdir -p "${include}"
exec 5>"${log}"
exec 2>&5
exec &5
}
log1() {
echo "=== `date` === $@"
echo "=== `date` === $@" >&5
}
log2() {
echo "=== `date` === $@"
echo "=== `date` === $@" >&5
}
version=`head -1 "${top}/debian/changelog" | cut -d '(' -f2 | cut -d ')' -f1` #XXX
if [ x"${version}" = x ]; then
version=noversion
fi
LANG=C
export LANG
log0 "uname -a: `uname -a || :`"
log0 "uname -F: `uname -F || :`"
log0 "uname -M: `uname -M || :`"
log1 "obtaining compiler"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
(
if [ x"${CC}" != x ]; then
echo "${CC} "
fi
cat "${top}/conf-cc"
) | while read compiler
do
echo 'int main(void) { return 0; }' > try.c
${compiler} -o try try.c || { log2 "${compiler} failed"; continue; }
log2 "${compiler} ok"
echo "${compiler}" > compiler
break
done
)
compiler=`head -1 "${work}/compiler"`
log1 "finishing"
log1 "checking compiler options"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
cflags=`cat "${top}/conf-cflags" || :`
cflags="${CPPFLAGS} ${CFLAGS} ${LDFLAGS} ${cflags}"
for i in ${cflags}; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${options} "${i}" -o try try.c || { log2 "${i} failed"; continue; }
options="${options} ${i}"
log2 "${i} ok"
done
echo ${options} > options
)
compilerorig=${compiler}
compiler="${compiler} `cat ${work}/options`"
log2 "${compiler}"
log1 "finishing"
log1 "checking libs"
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
(
cat "${top}/conf-libs" || :
) | (
exec 9>syslibs
while read i; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${i} -o try try.c || { log2 "${i} failed"; continue; }
echo "${i}" >&9
log2 "${i} ok"
done
)
)
libs=`cat "${work}/syslibs"`
log1 "finishing"
log1 "checking \$LIBS"
if [ x"${LIBS}" != x ]; then
rm -rf "${work}"
mkdir -p "${work}"
(
cd "${work}"
for i in ${LIBS}; do
echo 'int main(void) { return 0; }' > try.c
${compiler} ${i} -o try try.c || { log2 "${i} failed"; continue; }
syslibs="${i} ${syslibs}"
log2 "${i} ok"
done
echo ${syslibs} > syslibs
)
fi
libsorig=${libs}
libs="${libs} `cat ${work}/syslibs`"
log1 "finishing"
log1 "building sysdep headers"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr sysdep/* "${work}"
(
cd "${work}"
sh list | (
while read target source
do
[ -f "${include}/${target}" ] && continue
rm -f "${source}" "${target}.tmp"
[ -f "${source}.out" ] || continue
${compiler} -O0 -o "${source}" "${source}.c" ${libs} || continue
cp "${source}.out" "${include}/${target}"
log2 "${target} ${source}"
done
)
)
log1 "finishing"
log1 "starting crypto lib"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr crypto/* "${work}"
(
cd "${work}"
cat CRYPTOSOURCES\
| while read x
do
${compiler} -I"${include}" -c "${x}.c" || { log2 "libtinynacl.a failed ... see the log ${log}"; exit 111; }
done || exit 111
ar cr "${lib}/libtinynacl.a" `cat CRYPTOLIBS` || exit 0
)
log2 "libtinynacl.a ok"
log1 "finishing"
origlibs="${origlibs} ${lib}/libtinynacl.a"
libs="${libs} ${lib}/libtinynacl.a"
log1 "starting crypto headers"
rm -rf "${work}"
mkdir -p "${work}"
cp -p crypto/CRYPTOPRIMITIVES "${work}"
(
cd "${work}"
cat CRYPTOPRIMITIVES\
| while read primitive checkflag
do
if [ "x${checkflag}" != x0 ]; then
echo "#include \"${primitive}.h\"" >> crypto.h
fi
cp -p "${top}/crypto/${primitive}.h" "${include}"
done || exit 111
cp crypto.h "${include}/crypto.h"
)
log1 "finishing"
rm -rf "${work}"
mkdir -p "${work}"
cp -pr tinyssh/* "${work}"
(
cd "${work}"
log1 "starting tinyssh objects"
touch SOURCES TARGETS
cat SOURCES TARGETS\
| while read x
do
${compiler} "-DCOMPILER=\"${compilerorig}\"" "-DVERSION=\"${version}\"" -I"${include}" -c "${x}.c" || { log2 "${x}.o failed ... see the log ${log}"; exit 111; }
log2 "${x}.o ok"
done || exit 111
ar cr libtinyssh.a `cat LIBS` || exit 111
log1 "finishing"
log1 "starting tinyssh"
cat TARGETS \
| while read x
do
${compiler} -I"${include}" -o "${x}" "${x}.o" libtinyssh.a ${libs} || { log2 "${x} failed ... see the log ${log}"; exit 111; }
cp -p "${x}" "${bin}/${x}"
log2 "${x} ok"
done || exit 111
log1 "finishing"
) || exit 111
log1 "starting manpages"
cp -pr man/* "${man}"
log1 "finishing"
exit 0
tinyssh-20180201/man/ 0000775 0000000 0000000 00000000000 13227043065 0014227 5 ustar 00root root 0000000 0000000 tinyssh-20180201/man/tinysshd-makekey.1 0000664 0000000 0000000 00000001063 13227043065 0017602 0 ustar 00root root 0000000 0000000 .TH tinysshd\-makekey 1
.SH NAME
tinysshd\-makekey \- create TinySSH key\-directory
.SH SYNOPSIS
.B tinysshd\-makekey
[ options ]
.I keydir
.SH DESCRIPTION
.B tinysshd\-makekey
safely creates secret\-keys and appropriate public\-keys in directory
.I keydir
.SH OPTIONS
.TP
.B \-q
no error messages
.TP
.B \-Q
print error messages (default)
.TP
.TP
.I keydir
directory for TinySSH keys, typically /etc/tinyssh/sshkeydir
.SH EXAMPLE
tinysshd\-makekey /etc/tinyssh/sshkeydir
.SH SEE ALSO
.BR tinysshd (8),
.BR tinysshd\-printkey (1)
.sp
.nf
https://tinyssh.org/
.fi
tinyssh-20180201/man/tinysshd-printkey.1 0000664 0000000 0000000 00000000701 13227043065 0020017 0 ustar 00root root 0000000 0000000 .TH tinysshd\-printkey 1
.SH NAME
tinysshd\-printkey \- print TinySSH public\-keys
.SH SYNOPSIS
.B tinysshd\-printkey
.I keydir
.SH DESCRIPTION
.B tinysshd\-printkey
prints TinySSH public\-keys in base64 format
.SH OPTIONS
.TP
.I keydir
directory containing TinySSH keys, typically /etc/tinyssh/sshkeydir
.SH EXAMPLE
tinysshd\-printkey /etc/tinyssh/sshkeydir
.SH SEE ALSO
.BR tinysshd (8),
.BR tinysshd\-makekey (1)
.sp
.nf
https://tinyssh.org/
.fi
tinyssh-20180201/man/tinysshd.8 0000664 0000000 0000000 00000006321 13227043065 0016167 0 ustar 00root root 0000000 0000000 .TH tinysshd 8
.SH NAME
tinysshd \- Tiny SSH daemon
.SH SYNOPSIS
.B tinysshd
[ options ]
.I keydir
.SH DESCRIPTION
.B tinysshd
is a minimalistic SSH server which implements only a subset of SSHv2 features.
.sp
.B tinysshd
supports only secure cryptography (minimum 128\-bit security, protected against cache\-timing attacks)
.sp
.B tinysshd
doesn't implement unnecessary features (such as SSH1 protocol, compression, ...)
.sp
.B tinysshd
doesn't implement older crypto (such as RSA, DSA, HMAC\-MD5, HMAC\-SHA1, 3DES, RC4, ...)
.sp
.B tinysshd
doesn't implement unsafe features (such as password or hostbased authentication)
.sp
.B tinysshd
doesn't use dynamic memory allocation (no allocation failures, etc.)
.SH OPTIONS
.TP
.B \-q
no error messages
.TP
.B \-Q
print error messages (default)
.TP
.B \-v
print extra information
.TP
.B \-o
enable older standardized crypto \- ecdsa\-sha2\-nistp256, ecdh\-sha2\-nistp256, aes256\-ctr, hmac\-sha2\-256
.TP
.B \-O
disable older standardized crypto (default)
.TP
.B \-s
enable state\-of\-the\-art crypto \- ssh\-ed25519, curve25519\-sha256@libssh.org, chacha20\-poly1305@openssh.com (default)
.TP
.B \-S
disable state\-of\-the\-art crypto
.TP
.B \-p
enable post\-quantum crypto \- TODO, TODO, chacha20\-poly1305@openssh.com
.TP
.B \-P
disable post\-quantum crypto
.TP
.B \-l
use syslog instead of standard error output (useful for running from inetd)
.TP
.B \-L
don't use syslog, use standard error output (default)
.TP
.B \-x \fIname=command
add subsystem command (e.g.: sftp=/usr/libexec/openssh/sftp\-server)
.TP
.I keydir
directory containing TinySSH keys, typically /etc/tinyssh/sshkeydir
.SH AUTHORIZATION
.B tinysshd
supports only public-key authorization via
.B AuthorizedKeysFile
~/.ssh/authorized_keys. Each line of the file contains one key in format "keytype base64-encoded-key comment".
.B tinyssh
supports only "ssh-ed25519" and "ecdsa-sha2-nistp256" keytypes.
.sp
~/.ssh/authorized_keys example:
.nf
.RS 2
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILV5AGhGQ1QVXjBWhTKJP3vrqE3isL4ivisBailQ14gS comment
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPqVpPptLAMlCzojDM6W2x5rmzAxmOyOW0K9K3wuClgqMeguHg82Ju6IrA2YP76vhjhU8atfjM+tsfTXgplEo4o= comment
.RE
.SH RUNNING
.TP
.B TCPSERVER
tcpserver \-HRDl0 0.0.0.0 22 /usr/sbin/tinysshd \-v /etc/tinyssh/sshkeydir &
.TP
.B BUSYBOX
busybox tcpsvd 0 22 tinysshd \-v /etc/tinyssh/sshkeydir &
.TP
.B INETD
.RS 4
/etc/inetd.conf:
.RS 4
ssh stream tcp nowait root /usr/sbin/tinysshd tinysshd \-l \-v /etc/tinyssh/sshkeydir
.RE
.RE
.TP
.B SYSTEMD
.RS 4
tinysshd.socket:
.RS 4
.nf
[Unit]
Description=TinySSH server socket
ConditionPathExists=!/etc/tinyssh/disable_tinysshd
[Socket]
ListenStream=22
Accept=yes
[Install]
WantedBy=sockets.target
.fi
.RE
.RE
.sp
.RS 4
tinysshd@.service:
.RS 4
.nf
[Unit]
Description=Tiny SSH server
After=network.target auditd.service
[Service]
ExecStartPre=\-/usr/sbin/tinysshd\-makekey \-q /etc/tinyssh/sshkeydir
EnvironmentFile=\-/etc/default/tinysshd
ExecStart=/usr/sbin/tinysshd ${TINYSSHDOPTS} \-\- /etc/tinyssh/sshkeydir
KillMode=process
StandardInput=socket
StandardError=journal
[Install]
WantedBy=multi\-user.target
.fi
.RE
.RE
.SH SEE ALSO
.BR tinysshd\-makekey (1),
.BR tinysshd\-printkey (1)
.sp
.nf
https://tinyssh.org/
.fi
tinyssh-20180201/sysdep/ 0000775 0000000 0000000 00000000000 13227043065 0014763 5 ustar 00root root 0000000 0000000 tinyssh-20180201/sysdep/default.h-no.c 0000664 0000000 0000000 00000000066 13227043065 0017415 0 ustar 00root root 0000000 0000000 /* Public domain. */
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/default.h-no.out 0000664 0000000 0000000 00000000000 13227043065 0017766 0 ustar 00root root 0000000 0000000 tinyssh-20180201/sysdep/hasasmvolatilememory.h-yes.c 0000664 0000000 0000000 00000000376 13227043065 0022426 0 ustar 00root root 0000000 0000000 /* Public domain. */
static void foo(void *yv, long long ylen) {
char *y = yv;
while (ylen > 0) { *y++ = 0; --ylen; }
__asm__ __volatile__("" : : "r"(yv) : "memory");
}
int main(void) {
char x[16];
foo(x, sizeof x);
return 0;
}
tinyssh-20180201/sysdep/hasasmvolatilememory.h-yes.out 0000664 0000000 0000000 00000000037 13227043065 0023005 0 ustar 00root root 0000000 0000000 #define HASASMVOLATILEMEMORY 1
tinyssh-20180201/sysdep/haslibutilh.h-yes.c 0000664 0000000 0000000 00000000114 13227043065 0020457 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/haslibutilh.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021046 0 ustar 00root root 0000000 0000000 #define HASLIBUTILH 1
tinyssh-20180201/sysdep/haslimits.h-yes.c 0000664 0000000 0000000 00000000113 13227043065 0020143 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/haslimits.h-yes.out 0000664 0000000 0000000 00000000024 13227043065 0020531 0 ustar 00root root 0000000 0000000 #define HASLIMITS 1
tinyssh-20180201/sysdep/haslogintty.h-yes.c 0000664 0000000 0000000 00000000177 13227043065 0020525 0 ustar 00root root 0000000 0000000 /* Public domain. */
extern int login_tty(int);
static void foo(void) {
login_tty(0);
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/haslogintty.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021103 0 ustar 00root root 0000000 0000000 #define HASLOGINTTY 1
tinyssh-20180201/sysdep/hasmlock.h-yes.c 0000664 0000000 0000000 00000000217 13227043065 0017754 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
int main(void) {
char x[16];
mlock(x, sizeof x);
munlock(x, sizeof x);
return 0;
}
tinyssh-20180201/sysdep/hasmlock.h-yes.out 0000664 0000000 0000000 00000000023 13227043065 0020334 0 ustar 00root root 0000000 0000000 #define HASMLOCK 1
tinyssh-20180201/sysdep/hasopenpty.h-yes.c 0000664 0000000 0000000 00000000442 13227043065 0020345 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
static void foo(void) {
int master, slave;
openpty(&master, &slave, 0, 0, 0);
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasopenpty.h-yes.out 0000664 0000000 0000000 00000000025 13227043065 0020727 0 ustar 00root root 0000000 0000000 #define HASOPENPTY 1
tinyssh-20180201/sysdep/hasutilh.h-yes.c 0000664 0000000 0000000 00000000111 13227043065 0017765 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasutilh.h-yes.out 0000664 0000000 0000000 00000000023 13227043065 0020354 0 ustar 00root root 0000000 0000000 #define HASUTILH 1
tinyssh-20180201/sysdep/hasutmp.h-yes.c 0000664 0000000 0000000 00000000214 13227043065 0017631 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut = {0};
return 0;
}
tinyssh-20180201/sysdep/hasutmp.h-yes.out 0000664 0000000 0000000 00000000022 13227043065 0020213 0 ustar 00root root 0000000 0000000 #define HASUTMP 1
tinyssh-20180201/sysdep/hasutmphost.h-yes.c 0000664 0000000 0000000 00000000261 13227043065 0020531 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut;
if (sizeof ut.ut_host < 8) return 111;
return 0;
}
tinyssh-20180201/sysdep/hasutmphost.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021115 0 ustar 00root root 0000000 0000000 #define HASUTMPHOST 1
tinyssh-20180201/sysdep/hasutmploginlogout.h-yes.c 0000664 0000000 0000000 00000000430 13227043065 0022114 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
extern void login(const struct utmp *);
extern int logout(const char *);
static void foo(void) {
struct utmp ut = {0};
login(&ut);
logout(ut.ut_line);
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasutmploginlogout.h-yes.out 0000664 0000000 0000000 00000000035 13227043065 0022502 0 ustar 00root root 0000000 0000000 #define HASUTMPLOGINLOGOUT 1
tinyssh-20180201/sysdep/hasutmplogwtmp.h-yes.c 0000664 0000000 0000000 00000000253 13227043065 0021246 0 ustar 00root root 0000000 0000000 /* Public domain. */
extern void logwtmp(const char *, const char *, const char *);
static void foo(void) {
logwtmp("", "", "");
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasutmplogwtmp.h-yes.out 0000664 0000000 0000000 00000000031 13227043065 0021625 0 ustar 00root root 0000000 0000000 #define HASUTMPLOGWTMP 1
tinyssh-20180201/sysdep/hasutmpname.h-yes.c 0000664 0000000 0000000 00000000261 13227043065 0020474 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut;
if (sizeof ut.ut_name < 8) return 111;
return 0;
}
tinyssh-20180201/sysdep/hasutmpname.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021060 0 ustar 00root root 0000000 0000000 #define HASUTMPNAME 1
tinyssh-20180201/sysdep/hasutmppid.h-yes.c 0000664 0000000 0000000 00000000224 13227043065 0020327 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut = {0};
return ut.ut_pid;
}
tinyssh-20180201/sysdep/hasutmppid.h-yes.out 0000664 0000000 0000000 00000000025 13227043065 0020713 0 ustar 00root root 0000000 0000000 #define HASUTMPPID 1
tinyssh-20180201/sysdep/hasutmptime.h-yes.c 0000664 0000000 0000000 00000000224 13227043065 0020511 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut = {0};
return ut.ut_time;
}
tinyssh-20180201/sysdep/hasutmptime.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021076 0 ustar 00root root 0000000 0000000 #define HASUTMPTIME 1
tinyssh-20180201/sysdep/hasutmptv.h-yes.c 0000664 0000000 0000000 00000000255 13227043065 0020210 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut = {0};
return ut.ut_tv.tv_sec + ut.ut_tv.tv_usec;
}
tinyssh-20180201/sysdep/hasutmptv.h-yes.out 0000664 0000000 0000000 00000000024 13227043065 0020567 0 ustar 00root root 0000000 0000000 #define HASUTMPTV 1
tinyssh-20180201/sysdep/hasutmptype.h-yes.c 0000664 0000000 0000000 00000000264 13227043065 0020540 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut;
ut.ut_type = USER_PROCESS | DEAD_PROCESS;
return 0;
}
tinyssh-20180201/sysdep/hasutmptype.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021121 0 ustar 00root root 0000000 0000000 #define HASUTMPTYPE 1
tinyssh-20180201/sysdep/hasutmpuser.h-yes.c 0000664 0000000 0000000 00000000261 13227043065 0020532 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
#include
#include
int main(void) {
struct utmp ut;
if (sizeof ut.ut_user < 8) return 111;
return 0;
}
tinyssh-20180201/sysdep/hasutmpuser.h-yes.out 0000664 0000000 0000000 00000000026 13227043065 0021116 0 ustar 00root root 0000000 0000000 #define HASUTMPUSER 1
tinyssh-20180201/sysdep/hasutmpx.h-yes.c 0000664 0000000 0000000 00000000407 13227043065 0020025 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
static void foo(void) {
struct utmpx ut;
ut.ut_type = DEAD_PROCESS;
ut.ut_type = USER_PROCESS;
ut.ut_type = 0;
setutxent();
pututxline(&ut);
endutxent();
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasutmpx.h-yes.out 0000664 0000000 0000000 00000000023 13227043065 0020404 0 ustar 00root root 0000000 0000000 #define HASUTMPX 1
tinyssh-20180201/sysdep/hasutmpxsyslen.h-yes.c 0000664 0000000 0000000 00000000161 13227043065 0021260 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
int main(void) {
struct utmpx ut = {0};
return ut.ut_syslen;
}
tinyssh-20180201/sysdep/hasutmpxsyslen.h-yes.out 0000664 0000000 0000000 00000000031 13227043065 0021641 0 ustar 00root root 0000000 0000000 #define HASUTMPXSYSLEN 1
tinyssh-20180201/sysdep/hasutmpxupdwtmpx.h-yes.c 0000664 0000000 0000000 00000000243 13227043065 0021634 0 ustar 00root root 0000000 0000000 /* Public domain. */
#include
static void foo(void) {
struct utmpx ut = {0};
updwtmpx("/nonexistent", &ut);
}
int main(void) {
return 0;
}
tinyssh-20180201/sysdep/hasutmpxupdwtmpx.h-yes.out 0000664 0000000 0000000 00000000033 13227043065 0022216 0 ustar 00root root 0000000 0000000 #define HASUTMPXUPDWTMPX 1
tinyssh-20180201/sysdep/list 0000664 0000000 0000000 00000003073 13227043065 0015664 0 ustar 00root root 0000000 0000000 #!/bin/sh -e
#__asm__ __volatile__ ...
echo 'hasasmvolatilememory.h hasasmvolatilememory.h-yes'
echo 'hasasmvolatilememory.h default.h-no'
#mlock
echo 'hasmlock.h hasmlock.h-yes'
echo 'hasmlock.h default.h-no'
#util/libutil
echo 'haslibutilh.h haslibutilh.h-yes'
echo 'haslibutilh.h default.h-no'
echo 'hasutilh.h hasutilh.h-yes'
echo 'hasutilh.h default.h-no'
#openpty/login_tty
echo 'hasopenpty.h hasopenpty.h-yes'
echo 'hasopenpty.h default.h-no'
echo 'haslogintty.h haslogintty.h-yes'
echo 'haslogintty.h default.h-no'
#utmpx
echo 'hasutmpx.h hasutmpx.h-yes'
echo 'hasutmpx.h default.h-no'
echo 'hasutmpxupdwtmpx.h hasutmpxupdwtmpx.h-yes'
echo 'hasutmpxupdwtmpx.h default.h-no'
echo 'hasutmpxsyslen.h hasutmpxsyslen.h-yes'
echo 'hasutmpxsyslen.h default.h-no'
#utmp
echo 'hasutmp.h hasutmp.h-yes'
echo 'hasutmp.h default.h-no'
echo 'hasutmpname.h hasutmpname.h-yes'
echo 'hasutmpname.h default.h-no'
echo 'hasutmpuser.h hasutmpuser.h-yes'
echo 'hasutmpuser.h default.h-no'
echo 'hasutmphost.h hasutmphost.h-yes'
echo 'hasutmphost.h default.h-no'
echo 'hasutmptime.h hasutmptime.h-yes'
echo 'hasutmptime.h default.h-no'
echo 'hasutmptv.h hasutmptv.h-yes'
echo 'hasutmptv.h default.h-no'
echo 'hasutmppid.h hasutmppid.h-yes'
echo 'hasutmppid.h default.h-no'
echo 'hasutmptype.h hasutmptype.h-yes'
echo 'hasutmptype.h default.h-no'
echo 'hasutmplogwtmp.h hasutmplogwtmp.h-yes'
echo 'hasutmplogwtmp.h default.h-no'
echo 'hasutmploginlogout.h hasutmploginlogout.h-yes'
echo 'hasutmploginlogout.h default.h-no'
#limits
echo 'haslimits.h haslimits.h-yes'
echo 'haslimits.h default.h-no'
tinyssh-20180201/tinyssh-tests/ 0000775 0000000 0000000 00000000000 13227043065 0016315 5 ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/blockingtest.c 0000664 0000000 0000000 00000001066 13227043065 0021154 0 ustar 00root root 0000000 0000000 /*
20140302
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "blocking.h"
int main(void) {
int pi[2];
long long i;
if (pipe(pi) == -1) fail("failure");
for (i = 0; i < 2; ++i) {
if ((fcntl(pi[i], F_GETFL) & O_NONBLOCK) != 0) fail("failure");
blocking_disable(pi[i]);
if ((fcntl(pi[i], F_GETFL) & O_NONBLOCK) == 0) fail("failure");
blocking_enable(pi[i]);
if ((fcntl(pi[i], F_GETFL) & O_NONBLOCK) != 0) fail("failure");
}
_exit(0);
}
tinyssh-20180201/tinyssh-tests/buftest.c 0000664 0000000 0000000 00000050601 13227043065 0020137 0 ustar 00root root 0000000 0000000 /*
20140303
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "byte.h"
#include "buf.h"
#include "str.h"
#include "crypto_uint32.h"
#include "crypto_uint8.h"
/* XXX */
static int xbuf_putnum8_(const char *fn, unsigned long long line,
struct buf *b, long long uu) {
crypto_uint8 u = uu;
return buf_putnum8_(fn, line, b, u);
}
static int xbuf_putnum32_(const char *fn, unsigned long long line,
struct buf *b, long long uu) {
crypto_uint32 u = uu;
return buf_putnum32_(fn, line, b, u);
}
struct vectors1 {
int (*op)(const char *, unsigned long long, struct buf *, long long);
long long spacelen;
long long xlen;
} testvectors1[] = {
{ buf_putzerobytes_, 5, 4 },
{ buf_putrandombytes_, 5, 4 },
{ buf_putpadding_, 5, 4 },
{ xbuf_putnum32_, 5, 0 },
{ xbuf_putnum8_, 2, 0 },
{ 0, 0, 0 }
};
struct vectors2 {
int (*op)(const char *, unsigned long long, struct buf *, const unsigned char *, long long);
long long spacelen;
const unsigned char *x;
long long xlen;
} testvectors2[] = {
{ buf_put_, 1, (unsigned char *)"", 0 },
{ buf_put_, 5, (unsigned char *)"ahoj", 4 },
{ buf_putstringlen_, 5, (unsigned char *)"", 0 },
{ buf_putstringlen_, 9, (unsigned char *)"ahoj", 4 },
{ 0, 0, 0, 0 }
};
struct vectors3 {
int (*op)(const char *, unsigned long long, struct buf *, const char *);
long long spacelen;
const char *x;
} testvectors3[] = {
{ buf_puts_, 1, "" },
{ buf_puts_, 5, "ahoj" },
{ buf_putstring_, 5, "" },
{ buf_putstring_, 9, "ahoj" },
{ 0, 0, 0 }
};
static int _test1a1(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, long long), long long xlen) {
pid_t pid;
int status;
unsigned char bspace[10];
struct buf b;
pid = fork();
if (pid == -1) return -1;
if (pid == 0) {
close(2);
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, xlen);
buf_put(&b, (unsigned char *)"", 1); /* overflow */
_exit(0);
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
static int _test1a2(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, const unsigned char *, long long), const unsigned char *x, long long xlen) {
pid_t pid;
int status;
unsigned char bspace[10];
struct buf b;
pid = fork();
if (pid == -1) return -1;
if (pid == 0) {
close(2);
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, x, xlen);
buf_put(&b, (unsigned char *)"", 1); /* overflow */
_exit(0);
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
static int _test1a3(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, const char *), const char *x) {
pid_t pid;
int status;
unsigned char bspace[10];
struct buf b;
pid = fork();
if (pid == -1) return -1;
if (pid == 0) {
close(2);
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, x);
buf_put(&b, (unsigned char *)"", 1); /* overflow */
_exit(0);
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
static void _test1b1(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, long long), long long xlen) {
unsigned char bspace[10];
struct buf b;
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, xlen);
}
static void _test1b2(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, const unsigned char *, long long), const unsigned char *x, long long xlen) {
unsigned char bspace[10];
struct buf b;
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, x, xlen);
}
static void _test1b3(long long spacelen, int (*op)(const char *, unsigned long long, struct buf *, const char *), const char *x) {
unsigned char bspace[10];
struct buf b;
buf_init(&b, bspace, spacelen);
op(__FILE__, __LINE__, &b, x);
}
static void test1(void) {
long long i;
int r;
for (i = 0; testvectors1[i].op; ++i) {
r = _test1a1(testvectors1[i].spacelen, testvectors1[i].op, testvectors1[i].xlen);
if (r == 0) fail("failure");
_test1b1(testvectors1[i].spacelen, testvectors1[i].op, testvectors1[i].xlen);
}
for (i = 0; testvectors2[i].op; ++i) {
r = _test1a2(testvectors2[i].spacelen, testvectors2[i].op, testvectors2[i].x, testvectors2[i].xlen);
if (r == 0) fail("failure");
_test1b2(testvectors2[i].spacelen, testvectors2[i].op, testvectors2[i].x, testvectors2[i].xlen);
}
for (i = 0; testvectors3[i].op; ++i) {
r = _test1a3(testvectors3[i].spacelen, testvectors3[i].op, testvectors3[i].x);
if (r == 0) fail("failure");
_test1b3(testvectors3[i].spacelen, testvectors3[i].op, testvectors3[i].x);
}
}
static void test2(void) {
unsigned char bspace[2];
struct buf b;
unsigned char ch = 0;
long long i;
buf_init(&b, bspace, sizeof bspace);
for (i = 0; i < 10; ++i) {
buf_put(&b, &ch, 1);
buf_purge(&b);
}
}
struct vectors64 {
const char *in;
long long inlen;
const char *out;
} testvectors64[] = {
{ "\107\303\221\307\306\077\106\014\235\115\356\215\375", 13, "R8ORx8Y/RgydTe6N/Q==" },
{ "\133\253\044\246\070\374", 6, "W6skpjj8" },
{ "\253\374\323\142\326", 5, "q/zTYtY=" },
{ "\335\251\125\150\245\321\040\143\174\152", 10, "3alVaKXRIGN8ag==" },
{ "\155\065\344\122\353", 5, "bTXkUus=" },
{ "\266\071\073\373\072\035\270\151\201", 9, "tjk7+zoduGmB" },
{ "\302\373\135\206\370\012\365", 7, "wvtdhvgK9Q==" },
{ "\071\203", 2, "OYM=" },
{ "\210\236\076\336\014\122\125\050\016\076\063", 11, "iJ4+3gxSVSgOPjM=" },
{ "\241\330\251\122\325\061\142\167\174\315\201\000\275\157\056", 15, "odipUtUxYnd8zYEAvW8u" },
{ "\334\306\014\014\021\323\000\120\347\363\335", 11, "3MYMDBHTAFDn890=" },
{ "\356\243\102\105\343\146\154\064\006\316\360\301\256\164", 14, "7qNCReNmbDQGzvDBrnQ=" },
{ "\250\211\165\344\276\224\031\205\162\315", 10, "qIl15L6UGYVyzQ==" },
{ "\356\104\051\125\022\121\070\074\332\301\014\377\303\254\140", 15, "7kQpVRJRODzawQz/w6xg" },
{ "\065\340\116\113\133\334\100", 7, "NeBOS1vcQA==" },
{ "\151\340\101\120\376", 5, "aeBBUP4=" },
{ "\345", 1, "5Q==" },
{ "\010\134", 2, "CFw=" },
{ "\221\044\355\143\047\351\127\165\314\370\017\347\365", 13, "kSTtYyfpV3XM+A/n9Q==" },
{ "\222\237\301\021\214\011\002\367", 8, "kp/BEYwJAvc=" },
{ "\235\245\251\304\303\232\223\046\063\062\252\366", 12, "naWpxMOakyYzMqr2" },
{ "\215\267\333\017\237\313\210\114\067\164\067\337\024\211\174", 15, "jbfbD5/LiEw3dDffFIl8" },
{ "\344\122\212\142\231\251\146\253", 8, "5FKKYpmpZqs=" },
{ "\147\105", 2, "Z0U=" },
{ "\013\235\177\100\212\167\123\172\201", 9, "C51/QIp3U3qB" },
{ "\102\136\120\260\230\125\046\253\323\305\044", 11, "Ql5QsJhVJqvTxSQ=" },
{ "\101\152\200\060\134\014\124\202\023\057\250\115\341", 13, "QWqAMFwMVIITL6hN4Q==" },
{ "\012\310\224\166\265\072\072\270\052\262\147\145\022", 13, "CsiUdrU6OrgqsmdlEg==" },
{ "\021\131\104\067\051\316", 6, "EVlENynO" },
{ "\104\323", 2, "RNM=" },
{ "\070\274\150\150\014\077", 6, "OLxoaAw/" },
{ "\100\132\201\357\023\222\243\301\357", 9, "QFqB7xOSo8Hv" },
{ "\225\244", 2, "laQ=" },
{ "\212\270\067\052\145\203", 6, "irg3KmWD" },
{ "\363\252\326\213\370\065\072\154\077\335\202\242\236\274", 14, "86rWi/g1Omw/3YKinrw=" },
{ "\141\041\315\033", 4, "YSHNGw==" },
{ "\216\257\025\305\362\044\264\133", 8, "jq8VxfIktFs=" },
{ "\342\377\135\236", 4, "4v9dng==" },
{ "\121\100\077\162\374\162\274\121\100", 9, "UUA/cvxyvFFA" },
{ "\204", 1, "hA==" },
{ "\306\345\332\023\241\273\064\227\020\326\102\123\003", 13, "xuXaE6G7NJcQ1kJTAw==" },
{ "\227\142\207\137\322\344\074\317\007\245\120", 11, "l2KHX9LkPM8HpVA=" },
{ "\267\051\051", 3, "tykp" },
{ "\005\244", 2, "BaQ=" },
{ "\215\060\165\046\210", 5, "jTB1Jog=" },
{ "\100\376\271\317\250\013\264\360\330\012\325\103", 12, "QP65z6gLtPDYCtVD" },
{ "\233\340\212\127\160\167\077", 7, "m+CKV3B3Pw==" },
{ "\200\041\036\206\273\067", 6, "gCEehrs3" },
{ "\207\067\003\324\025\351\033\223\226\300\002\255\167\342\316", 15, "hzcD1BXpG5OWwAKtd+LO" },
{ "\263\364\115\054\347\350", 6, "s/RNLOfo" },
{ "\211\252\065\167\224", 5, "iao1d5Q=" },
{ "\024\327\120\076\031\035\104\003\247", 9, "FNdQPhkdRAOn" },
{ "\143\302\131\030\204\134\036\023\305\203\010\236\204\303", 14, "Y8JZGIRcHhPFgwiehMM=" },
{ "\124\225\066\007", 4, "VJU2Bw==" },
{ "\173\043\162\031\330\351", 6, "eyNyGdjp" },
{ "\323\112\227\176\021\120\311\202\035\041\153\326\137", 13, "00qXfhFQyYIdIWvWXw==" },
{ "\235\006\017\301\200\121\013\230\373\264\215\256\322\126\111", 15, "nQYPwYBRC5j7tI2u0lZJ" },
{ "\317\113\144\056\014\120\246\143\325\272", 10, "z0tkLgxQpmPVug==" },
{ "\106\136\226\023\146\054\366\070\007\270\345\321\245\304\177\147", 16, "Rl6WE2Ys9jgHuOXRpcR/Zw==" },
{ "\042\163\374\234\332\173\055\166", 8, "InP8nNp7LXY=" },
{ "\375\011\321\370\300", 5, "/QnR+MA=" },
{ "\034", 1, "HA==" },
{ "\350", 1, "6A==" },
{ "\147\136\210\264\353\267\311\341\073\110\270\071\033", 13, "Z16ItOu3yeE7SLg5Gw==" },
{ "\133\341\131\206\211\171", 6, "W+FZhol5" },
{ "\146\176\236\340\264\370\270\313\261\304\217", 11, "Zn6e4LT4uMuxxI8=" },
{ "\347\111\263\244\131\103\022\272\163\100\337\324\340\247\006", 15, "50mzpFlDErpzQN/U4KcG" },
{ "\132\167\314\125\023\172\223\140\264\146\167\156\245", 13, "WnfMVRN6k2C0ZndupQ==" },
{ "\206", 1, "hg==" },
{ "\000\346\367\051\051\116", 6, "AOb3KSlO" },
{ "\253\117\134\331", 4, "q09c2Q==" },
{ "\267\130\307\170", 4, "t1jHeA==" },
{ "\252\367\311\250\126\031\001\065\107", 9, "qvfJqFYZATVH" },
{ "\204\011\351\022\206\076\056\334\100", 9, "hAnpEoY+LtxA" },
{ "\004\302\141\333\230\255\215", 7, "BMJh25itjQ==" },
{ "\052\357\233\266\237\017\260\101\000", 9, "Ku+btp8PsEEA" },
{ "\302\024\373\144\071\312\012\044\304\340\026\222\066\216", 14, "whT7ZDnKCiTE4BaSNo4=" },
{ "\342\054\344\331\312\200\052", 7, "4izk2cqAKg==" },
{ "\156\234\310\023\077\041\310\005\137\175\034\307\247", 13, "bpzIEz8hyAVffRzHpw==" },
{ "\051\316\243\225\076\257", 6, "Kc6jlT6v" },
{ "\275\263\026\127\315\140\172\110\002\365\067\061\270\331", 14, "vbMWV81gekgC9TcxuNk=" },
{ "\240\021", 2, "oBE=" },
{ "\125\161\171\026\354", 5, "VXF5Fuw=" },
{ "\052\131", 2, "Klk=" },
{ "\335\234\230\006\054\265\273\124\147\131\015\054\036\335\353", 15, "3ZyYBiy1u1RnWQ0sHt3r" },
{ "\073\126\160\312\341\345\234\353\264\245\115\220\316\063\102", 15, "O1ZwyuHlnOu0pU2QzjNC" },
{ "\200\070\242\226\226\027\147", 7, "gDiilpYXZw==" },
{ "\132\111\013\325\224\115\107\236\124\310\144\262\156\001\004\227", 16, "WkkL1ZRNR55UyGSybgEElw==" },
{ "\340\357\121\156\255\173\153\221\125\024", 10, "4O9Rbq17a5FVFA==" },
{ "\060\037\251\063\073\022\206\033", 8, "MB+pMzsShhs=" },
{ "\355\241", 2, "7aE=" },
{ "\144\033\132\321\153\017\244\145\211\027\313\067\166\167\104", 15, "ZBta0WsPpGWJF8s3dndE" },
{ "\073\227\264\070\151\002", 6, "O5e0OGkC" },
{ "\201\364\206\002\033\125\075\110\036\152\347\011\146\077\023\354", 16, "gfSGAhtVPUgeaucJZj8T7A==" },
{ "\232\205\305\006\214\266\355\107\007\314\223\254\142\055\045\260", 16, "moXFBoy27UcHzJOsYi0lsA==" },
{ "\053\221\122\341\163", 5, "K5FS4XM=" },
{ "\245\113\335\066\012\245\334\335\006\350\373\254\121\346", 14, "pUvdNgql3N0G6PusUeY=" },
{ "\250\126\360\135\053\301\342\200", 8, "qFbwXSvB4oA=" },
{ "\154\323\054\236\175\252\270\270\220", 9, "bNMsnn2quLiQ" },
{ "\322\260\320\175\263", 5, "0rDQfbM=" },
{ "\136\073\307\102\376\033\002\243", 8, "XjvHQv4bAqM=" },
{ "\361\323\236", 3, "8dOe" },
{ "\143\007\375\015", 4, "Ywf9DQ==" },
{ "\122\240\036\350\132\212\037\134\114", 9, "UqAe6FqKH1xM" },
{ "\213\004\377\313\312\314\144\350\055\147\062\064\270\273\150\221", 16, "iwT/y8rMZOgtZzI0uLtokQ==" },
{ "\246\346\106\301\277\300\100", 7, "puZGwb/AQA==" },
{ "\176\034\360\143\160\016\072\017\322", 9, "fhzwY3AOOg/S" },
{ "\046\335\103\356\145\364\266\165\356\146", 10, "Jt1D7mX0tnXuZg==" },
{ "\147\231\300\372\053\373\375\363\257\071", 10, "Z5nA+iv7/fOvOQ==" },
{ "\241", 1, "oQ==" },
{ "\044\231\150\021\346\347", 6, "JJloEebn" },
{ "\026\361\151\071\101", 5, "FvFpOUE=" },
{ "\274\021\324\260\123\343", 6, "vBHUsFPj" },
{ "\255\312", 2, "rco=" },
{ "\012\362\172\166", 4, "CvJ6dg==" },
{ "\223\117\213\351\120\321", 6, "k0+L6VDR" },
{ "\314\150\017\355\321\372", 6, "zGgP7dH6" },
{ "\262\152\141\170\227\353\363\162\116\327\247\342\302\326\255\245", 16, "smpheJfr83JO16fiwtatpQ==" },
{ "\276\336\043\244\015\360\114\273\113", 9, "vt4jpA3wTLtL" },
{ "\307\075\305\152\226\265\045\170", 8, "xz3Fapa1JXg=" },
{ "\342\210\307\244\132\345", 6, "4ojHpFrl" },
{ "\370\125\040\013\267\004\057\371\155\321\107\174\241\041", 14, "+FUgC7cEL/lt0Ud8oSE=" },
{ "\327\111\202\040\314\147\164\116\217\217\220", 11, "10mCIMxndE6Pj5A=" },
{ "\176", 1, "fg==" },
{ "\107\326\002\256\146\112\137\304\013\020\020\163\264\213\145\141", 16, "R9YCrmZKX8QLEBBztItlYQ==" },
{ "\216", 1, "jg==" },
{ "\327\246\371\266\023", 5, "16b5thM=" },
{ "\027\352\164\125\266\241\266\272", 8, "F+p0Vbahtro=" },
{ "\001\135\250\345", 4, "AV2o5Q==" },
{ "\237\302\312\152\355\022\161\240\000\151\330", 11, "n8LKau0ScaAAadg=" },
{ "\343\144\171\236\255\261\275\315\300\026\346", 11, "42R5nq2xvc3AFuY=" },
{ "\371\206\264\033\200\232\373\003\237\061\120\051\353", 13, "+Ya0G4Ca+wOfMVAp6w==" },
{ "\315\220\061\106", 4, "zZAxRg==" },
{ "\007", 1, "Bw==" },
{ "\125\217\033\216\066\340\143\254\133\004\165\110\143\117\146", 15, "VY8bjjbgY6xbBHVIY09m" },
{ "\050\073\200\116\346\355\073\205\061\266\161\033\125\301", 14, "KDuATubtO4UxtnEbVcE=" },
{ "\233\140\272\145\333", 5, "m2C6Zds=" },
{ "\045\256\173\034\034\373\051\205\041\016\070\212\023\073\204\267", 16, "Ja57HBz7KYUhDjiKEzuEtw==" },
{ "\342\254\000\251\017\204\350\152\211\106\116\323\146\262\067\031", 16, "4qwAqQ+E6GqJRk7TZrI3GQ==" },
{ "\100\246\015\313\000\366\205\367\273\053", 10, "QKYNywD2hfe7Kw==" },
{ "\353\127\334\173\217\266\372\214\374", 9, "61fce4+2+oz8" },
{ "\144\243\162\123\006\211\035\337\342\174\071\157\244\316\063\154", 16, "ZKNyUwaJHd/ifDlvpM4zbA==" },
{ "\013\371\150\050", 4, "C/loKA==" },
{ "\340\214\237\210\113\145\007\077\136\351", 10, "4IyfiEtlBz9e6Q==" },
{ "\336\055\356\341\212\040", 6, "3i3u4Yog" },
{ "\354\316\211\157\113\304\374\267\010\137\264\043\220\306\210\125", 16, "7M6Jb0vE/LcIX7QjkMaIVQ==" },
{ "\355\116\363\331\314\366\005\230\253\137", 10, "7U7z2cz2BZirXw==" },
{ "\017\353\200\145\335\054\106\231", 8, "D+uAZd0sRpk=" },
{ "\017\146\253\337\150\156\326\076\105\040\026\154\133", 13, "D2ar32hu1j5FIBZsWw==" },
{ "\072", 1, "Og==" },
{ "\163\107\062\261\176\103\261\267\031\214\346\350\124\101\257", 15, "c0cysX5DsbcZjOboVEGv" },
{ "\333\005\104\376\205\323\203", 7, "2wVE/oXTgw==" },
{ "\072", 1, "Og==" },
{ "\246\270\237\262\261\252\220\273", 8, "prifsrGqkLs=" },
{ "\076\140", 2, "PmA=" },
{ "\343\043\335\346\134\003\240\244\067\271\105\311", 12, "4yPd5lwDoKQ3uUXJ" },
{ "\327\375\152\126", 4, "1/1qVg==" },
{ "\103\231\176\252\263\126\047\356\370\266\027\072\003\162", 14, "Q5l+qrNWJ+74thc6A3I=" },
{ "\373\321", 2, "+9E=" },
{ "\127\052\054\340\245\243\261", 7, "Vyos4KWjsQ==" },
{ "\027\236\317\116\373\155\111\057\026\371\247\227\055\242", 14, "F57PTvttSS8W+aeXLaI=" },
{ "\175\166\256\272\045\302\221\306\237\151\116\031\223\233", 14, "fXauuiXCkcafaU4Zk5s=" },
{ "\140\241", 2, "YKE=" },
{ "\064\332\317\246\113\370\276\341\302", 9, "NNrPpkv4vuHC" },
{ "\245\306\176\341\217\000\073\265\237\124", 10, "pcZ+4Y8AO7WfVA==" },
{ "\026\173\274\034\340\061\376\246\233\375\326\250\164\313\304\353", 16, "Fnu8HOAx/qab/daodMvE6w==" },
{ "\277\034", 2, "vxw=" },
{ "\215\120\005\160\173\000\153\373\026\123\045\074\142\337", 14, "jVAFcHsAa/sWUyU8Yt8=" },
{ "\221\122\070\352\346\035\227\270\342\066\237\170\266", 13, "kVI46uYdl7jiNp94tg==" },
{ "\274\270", 2, "vLg=" },
{ "\341\155\367\111\106\042\036\112\242\262\004\354\131\153", 14, "4W33SUYiHkqisgTsWWs=" },
{ "\254\103\176\060", 4, "rEN+MA==" },
{ "\277\305\046\061\037\111\121\315", 8, "v8UmMR9JUc0=" },
{ "\220\155\334\167\323\340\065\301\101\014\101\277", 12, "kG3cd9PgNcFBDEG/" },
{ "\117", 1, "Tw==" },
{ "\152\165\104\351\003\100\006\311\061\045", 10, "anVE6QNABskxJQ==" },
{ "\171\020\056\304\213", 5, "eRAuxIs=" },
{ "\263\317\223\332\321\036\203\241\016\355\173\163\060\121", 14, "s8+T2tEeg6EO7XtzMFE=" },
{ "\051\046\035\170\002", 5, "KSYdeAI=" },
{ "\214\324\001\125\062\247\010\122\147\376\021\031", 12, "jNQBVTKnCFJn/hEZ" },
{ "\035\126\117\235\225\176\135\370\347", 9, "HVZPnZV+Xfjn" },
{ "\334", 1, "3A==" },
{ "\203\117\166\021\144\257", 6, "g092EWSv" },
{ "\262\155", 2, "sm0=" },
{ "\241\242\031\110\014\223\340\175\311", 9, "oaIZSAyT4H3J" },
{ "\074\373\225\217\164\140\125\353\300\256\146\202\301\133", 14, "PPuVj3RgVevArmaCwVs=" },
{ "\336\354\143\220\367\007\342\114\007\040\331\362\245", 13, "3uxjkPcH4kwHINnypQ==" },
{ "\144\107\331\316\274\005\264", 7, "ZEfZzrwFtA==" },
{ "\027\371\125\116\174\275\160\220\306\266", 10, "F/lVTny9cJDGtg==" },
{ "\155\315\167\325\171\213\242\064\211\122\217\335\250\154", 14, "bc131XmLojSJUo/dqGw=" },
{ "\126\075\332\131\265\225\065\337\130\133\314\337", 12, "Vj3aWbWVNd9YW8zf" },
{ "\051\032\131\176\353\047\001\037\304\170\136\155\222\344", 14, "KRpZfusnAR/EeF5tkuQ=" },
{ "\323\011\213\013\160\037\274\235\026\155\352\234", 12, "0wmLC3AfvJ0Wbeqc" },
{ "\174\260\057\114\125\272\330\213\141\034\130\277", 12, "fLAvTFW62IthHFi/" },
{ "\234\376\012\217\376\061\152\202\177", 9, "nP4Kj/4xaoJ/" },
{ "\162\267\211\246\213\237\325\136\140\143\173", 11, "creJpouf1V5gY3s=" },
{ "\224\317\166\131\020\266\045", 7, "lM92WRC2JQ==" },
{ "\075\002\145\273\112\375\070\101\311\125\337\070\003\336\363", 15, "PQJlu0r9OEHJVd84A97z" },
{ "\177\105\134\344\106\350\034\205", 8, "f0Vc5EboHIU=" },
{ "\130\336\125\300\053\331\050", 7, "WN5VwCvZKA==" },
{ 0, 0, 0 }
};
static void test3(void) {
unsigned char bspace[100];
struct buf b;
long long i, outlen;
buf_init(&b, bspace, sizeof bspace);
for (i = 0; testvectors64[i].in; ++i) {
buf_purge(&b);
outlen = str_len(testvectors64[i].out);
buf_putbase64(&b, (unsigned char *)testvectors64[i].in, testvectors64[i].inlen);
if (b.len != outlen || !byte_isequal(b.buf, outlen, testvectors64[i].out)) {
fail("buf_putbase64 failed");
}
}
}
static void test4(void) {
unsigned char bspace[2];
struct buf b;
buf_init(&b, bspace, 1);
if (buf_ready(&b, 1)) fail("buf_ready failed");
buf_init(&b, bspace, 2);
if (!buf_ready(&b, 1)) fail("buf_ready failed");
}
struct vectorssh {
const char *in;
long long inlen;
const char *out;
long long outlen;
} testvectorssh[] = {
{ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 32, "\0\0\0\0" , 4},
{ "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1", 32, "\0\0\0\040\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1" , 36},
{ "\377\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1", 32, "\0\0\0\041\0\377\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1" , 37},
{ 0, 0, 0, 0},
};
static unsigned char bspacesh[64];
static struct buf b;
static void test5(void) {
long long i;
buf_init(&b, bspacesh, sizeof bspacesh);
for (i = 0; testvectorssh[i].in; ++i) {
buf_purge(&b);
buf_putsharedsecret(&b, (unsigned char *)testvectorssh[i].in, testvectorssh[i].inlen);
if (b.len != testvectorssh[i].outlen || !byte_isequal(b.buf, b.len, testvectorssh[i].out)) {
fail("buf_putbasesharedsecret failed");
}
}
}
int main(void) {
test1();
test2();
test3();
test4();
test5();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/bytetest.c 0000664 0000000 0000000 00000003407 13227043065 0020330 0 ustar 00root root 0000000 0000000 /*
20140302
Jan Mojzis
Public domain.
*/
/*
XXX TODO
- check if byte_isequal is constant-time
*/
#include
#include "fail.h"
#include "byte.h"
int main(void) {
unsigned char b1[32];
unsigned char b2[32];
long long i, j;
const char *x = "abcdefgh";
char y[8];
/* byte_zero test */
for (i = 0; i < 32; ++i) {
for (j = 0; j < sizeof b1; ++j) b1[j] = 0;
for (j = 0; j < sizeof b2; ++j) b2[j] = 0;
b1[i] = 0xff; b2[i] = 0xff;
byte_zero(b1, sizeof b1);
if (byte_isequal(b1, 32, b2) != 0) fail("byte_zero failure");
}
/* byte_isequal test */
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0xff;
if (byte_isequal(b1, 32, b2) == 0) fail("byte_isequal failure");
for (i = 0; i < 32; ++i) {
b1[i] = 0;
if (byte_isequal(b1, 32, b2) != 0) fail("byte_isequal failure");
b1[i] = 0xff;
}
/* byte_copy test */
for (i = 0; i < sizeof b1; ++i) b1[i] = 0xff;
for (i = 0; i < sizeof b2; ++i) b2[i] = 0x00;
byte_copy(b1, 32, b2);
if (byte_isequal(b1, 32, b2) == 0) fail("byte_copy failure");
for (i = 0; i < 32; ++i) {
b1[i] = 0;
byte_copy(b1, 32, b2);
if (byte_isequal(b1, 32, b2) == 0) fail("byte_copy failure");
b1[i] = 0xff;
}
byte_zero(y, 8);
if (!byte_isequal(y, 8, "\0\0\0\0\0\0\0\0")) fail("byte_zero/byte_isequal failure");
byte_copy(y, 8, x);
if (!byte_isequal(y, 8, x)) fail("byte_copy/byte_isequal failure");
byte_copy(y, 7, y + 1);
if (!byte_isequal(y, 8, "bcdefghh")) fail("byte_copy/byte_isequal failure");
byte_zero(y, 8);
if (!byte_isequal(y, 8, "\0\0\0\0\0\0\0\0")) fail("byte_zero/byte_isequal failure");
return 0;
}
tinyssh-20180201/tinyssh-tests/channel_droptest.c 0000777 0000000 0000000 00000000000 13227043065 0024212 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/channel_forkptytest.c 0000777 0000000 0000000 00000000000 13227043065 0024744 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/channel_forktest.c 0000664 0000000 0000000 00000004105 13227043065 0022012 0 ustar 00root root 0000000 0000000 /*
20140416
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include
#include "fail.h"
#include "writeall.h"
#include "readall.h"
#include "byte.h"
#include "channel.h"
/* test if channel_fork pipes works from child to parent */
static void test1(void) {
int fd[3];
pid_t pid;
int status;
char buf[5];
pid = channel_fork(fd);
if (pid == -1) fail("channel_fork failure");
if (pid == 0) {
if (writeall(1, "ahoj1", 5) == -1) fail("writeall failure");
if (writeall(2, "ahoj2", 5) == -1) fail("writeall failure");
_exit(0);
}
if (fd[0] == -1) fail("channel_fork failure");
if (fd[1] == -1) fail("channel_fork failure");
if (fd[2] == -1) fail("channel_fork failure");
if (readall(fd[1], buf, 5) == -1) fail("readall failure");
if (!byte_isequal(buf, 5, "ahoj1")) fail("readall failure");
if (readall(fd[2], buf, 5) == -1) fail("readall failure");
if (!byte_isequal(buf, 5, "ahoj2")) fail("readall failure");
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) fail("process killed");
if (WEXITSTATUS(status)) fail("process exited with status != 0");
}
/* test if channel_fork pipes works from parent to child */
static void test2(void) {
int fd[3];
pid_t pid;
int status;
char buf[5];
pid = channel_fork(fd);
if (pid == -1) fail("channel_fork failure");
if (pid == 0) {
if (readall(0, buf, 5) == -1) fail("readall failure");
if (!byte_isequal(buf, 5, "ahoj0")) fail("readall failure");
_exit(0);
}
if (fd[0] == -1) fail("channel_fork failure");
if (fd[1] == -1) fail("channel_fork failure");
if (fd[2] == -1) fail("channel_fork failure");
if (writeall(fd[0], "ahoj0", 5) == -1) fail("writeall failure");
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) fail("process killed");
if (WEXITSTATUS(status)) fail("process exited with status != 0");
}
int main(void) {
alarm(10);
test1();
test2();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/channel_subsystemtest.c 0000664 0000000 0000000 00000003463 13227043065 0023115 0 ustar 00root root 0000000 0000000 /*
20150113
Jan Mojzis
Public domain.
*/
#include
#include "fail.h"
#include "numtostr.h"
#include "channel.h"
const char *vector[] = {
"0=0",
"1=1",
"2=2",
"3=3",
"4=4",
"5=5",
"6=6",
"7=7",
"8=8",
"9=9",
"10=10",
"11=11",
"12=12",
"13=13",
"14=14",
"15=15",
"16=16",
"17=17",
"18=18",
"19=19",
"20=20",
"21=21",
"22=22",
"23=23",
"24=24",
"25=25",
"26=26",
"27=27",
"28=28",
"29=29",
"30=30",
"31=31",
"32=32",
"33=33",
"34=34",
"35=35",
"36=36",
"37=37",
"38=38",
"39=39",
"40=40",
"41=41",
"42=42",
"43=43",
"44=44",
"45=45",
"46=46",
"47=47",
"48=48",
"49=49",
"50=50",
"51=51",
"52=52",
"53=53",
"54=54",
"55=55",
"56=56",
"57=57",
"58=58",
"59=59",
"60=60",
"61=61",
"62x=62",
"63=63x",
"64=64"
};
#if CHANNEL_SUBSYSTEM_MAX != 64
error !
#endif
static void test1(void) {
long long i;
for (i = 0; i < 64; ++i) {
if (!channel_subsystem_add(vector[i])) fail("failure");
}
if (channel_subsystem_add(vector[i])) fail("failure");
}
static void test2(void) {
long long i;
char *x, *n;
for (i = 0; i < 62; ++i) {
n = numtostr(0, i);
x = channel_subsystem_get(n);
if (!x) fail("failure");
if (strcmp(x, n)) fail("failure");
}
n = numtostr(0, 62);
x = channel_subsystem_get(n);
if (x) fail("failure");
n = numtostr(0, 63);
x = channel_subsystem_get(n);
if (!x) fail("failure");
if (!strcmp(x, n)) fail("failure");
n = numtostr(0, 64);
x = channel_subsystem_get(n);
if (x) fail("failure");
}
int main(void) {
test1();
test2();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/channeltest.c 0000664 0000000 0000000 00000012236 13227043065 0020775 0 ustar 00root root 0000000 0000000 /*
20140423
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "crypto_uint32.h"
#include "fail.h"
#include "run.h"
#include "byte.h"
#include "channel.h"
const char *user = "user";
const char *termname = "xterm";
crypto_uint32 id = 0;
crypto_uint32 remotewindow = 100;
crypto_uint32 maxpacket = 100;
crypto_uint32 localwindow;
unsigned char ch = 'x';
static char *name(void) {
struct passwd *pw;
pw = getpwuid(geteuid());
return pw->pw_name;
}
/* channel can't be opened 2x */
static void testopen1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_open(user, id, remotewindow, maxpacket, &localwindow);
}
/* *localwindow can't be 0 */
static void testopen2(void) {
channel_open(user, id, remotewindow, maxpacket, 0);
}
/* maxpacket can't be 0 */
static void testopen3(void) {
channel_open(user, id, remotewindow, 0, &localwindow);
}
/* remotewindow can't be 0 */
static void testopen4(void) {
channel_open(user, id, 0, maxpacket, &localwindow);
}
/* channel_openterminal() can't be called before channel_open() */
static void testtermopen1(void) {
channel_openterminal(termname, 0, 0, 0, 0);
}
/* channel_env() can't be called before channel_open() */
static void testenv1(void) {
channel_env("a", "b");
}
/* channel_env() can't be called after channel_exec() */
static void testenv2(void) {
channel_open(name(), id, remotewindow, maxpacket, &localwindow);
channel_exec("exit 0");
channel_env("a", "b");
}
/* channel_exec() can't be called before channel_open() */
static void testexec1(void) {
channel_exec("true");
}
/* channel_put() can't be called before channel_exec() */
static void testput1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_put(&ch, 1);
}
/* channel_puteof() can't be called before channel_exec() */
static void testputeof1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_puteof();
}
/* channel_read() can't be called before channel_exec() */
static void testread1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_read(&ch, 1);
}
/* channel_extendedread() can't be called before channel_exec() */
static void testextendedread1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_extendedread(&ch, 1);
}
/* channel_write() can't be called before channel_exec() */
static void testwrite1(void) {
channel_open(user, id, remotewindow, maxpacket, &localwindow);
channel_write();
}
/* OK - tests */
static void testok1(void) {
int r, s, e;
channel_open(name(), id, remotewindow, maxpacket, &localwindow);
channel_exec("exit 0");
do {
r = channel_waitnohang(&s, &e);
} while (r == 0);
if (s != 0) fail("process killed");
if (e != 0) fail("bad status");
_exit(0);
}
static void testok2(void) {
int r, s, e;
channel_open(name(), id, remotewindow, maxpacket, &localwindow);
channel_exec("exit 1");
do {
r = channel_waitnohang(&s, &e);
} while (r == 0);
if (s != 0) fail("process killed");
if (e != 1) fail("bad status");
_exit(0);
}
static void testok3(void) {
int r, s, e;
channel_open(name(), id, remotewindow, maxpacket, &localwindow);
channel_exec("kill -9 $$");
do {
r = channel_waitnohang(&s, &e);
} while (r == 0);
if (s != 9) fail("bad exit signal");
_exit(0);
}
static void testok4(void) {
int r, s, e;
unsigned char buf[10];
channel_open(name(), id, remotewindow, maxpacket, &localwindow);
channel_exec("cat");
ch = 'a';
channel_put(&ch, 1);
do {
r = channel_write();
} while (r == 0);
do {
r = channel_read(buf, sizeof buf);
} while (r == 0);
if (r != 1) fail("channel_write()/channel_read() failure");
if (buf[0] != 'a') fail("channel_write()/channel_read() failure");
channel_puteof();
do {
r = channel_waitnohang(&s, &e);
} while (r == 0);
if (s != 0) fail("process killed");
if (e != 0) fail("bad status");
_exit(0);
}
#define warn_(a, b, x) do { fprintf(stderr, "%s:%llu: warning: %s\n", (a), (unsigned long long)(b), (x)); fflush(stderr); _exit(0); } while (0);
#define warn(x) warn_(__FILE__, __LINE__, (x))
static int homedir(void) {
struct passwd *pw;
struct stat st;
pw = getpwuid(geteuid());
if (!pw) return 0;
return 1 + stat(pw->pw_dir, &st);
}
int main(void) {
/* don't run check when homedir not exist */
if (!homedir()) {
warn("homedir not exist - skipping tests")
_exit(0);
}
run_mustfail(testopen1);
run_mustfail(testopen2);
run_mustfail(testopen3);
run_mustfail(testopen4);
run_mustfail(testtermopen1);
run_mustfail(testenv1);
run_mustfail(testenv2);
run_mustfail(testexec1);
run_mustfail(testput1);
run_mustfail(testputeof1);
run_mustfail(testread1);
run_mustfail(testextendedread1);
run_mustfail(testwrite1);
run_mustpass(testok1);
run_mustpass(testok2);
run_mustpass(testok3);
run_mustpass(testok4);
;
_exit(0);
}
tinyssh-20180201/tinyssh-tests/coetest.c 0000664 0000000 0000000 00000000773 13227043065 0020136 0 ustar 00root root 0000000 0000000 /*
20140302
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "coe.h"
int main(void) {
int pi[2];
long long i;
if (pipe(pi) == -1) fail("failure");
for (i = 0; i < 2; ++i) {
if (fcntl(pi[i], F_GETFD) != 0) fail("failure");
coe_enable(pi[i]);
if (fcntl(pi[i], F_GETFD) == 0) fail("failure");
coe_disable(pi[i]);
if (fcntl(pi[i], F_GETFD) != 0) fail("failure");
}
_exit(0);
}
tinyssh-20180201/tinyssh-tests/connectioninfotest.c 0000664 0000000 0000000 00000012622 13227043065 0022377 0 ustar 00root root 0000000 0000000 /*
20140302
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "fail.h"
#include "porttostr.h"
#include "iptostr.h"
#include "connectioninfo.h"
#include "byte.h"
static void connectioninfotest_empty(void) {
char localip[IPTOSTR_LEN];
char localport[PORTTOSTR_LEN];
char remoteip[IPTOSTR_LEN];
char remoteport[PORTTOSTR_LEN];
connectioninfo(localip, localport, remoteip, remoteport);
if (strcmp(localip, "unknown")) fail("connectioninfo failed");
if (strcmp(localport, "0")) fail("connectioninfo failed");
if (strcmp(remoteip, "unknown")) fail("connectioninfo failed");
if (strcmp(remoteport, "0")) fail("connectioninfo failed");
}
static void connectioninfotest_tcpserverenv(void) {
char localip[IPTOSTR_LEN];
char localport[PORTTOSTR_LEN];
char remoteip[IPTOSTR_LEN];
char remoteport[PORTTOSTR_LEN];
if (setenv("TCPLOCALIP", "aaax", 1) == -1) fail("setenv failed")
if (setenv("TCPLOCALPORT", "bbbx", 1) == -1) fail("setenv failed")
if (setenv("TCPREMOTEIP", "cccx", 1) == -1) fail("setenv failed")
if (setenv("TCPREMOTEPORT", "dddx", 1) == -1) fail("setenv failed")
connectioninfo(localip, localport, remoteip, remoteport);
if (strcmp(localip, "aaax")) fail("connectioninfo failed");
if (strcmp(localport, "bbbx")) fail("connectioninfo failed");
if (strcmp(remoteip, "cccx")) fail("connectioninfo failed");
if (strcmp(remoteport, "dddx")) fail("connectioninfo failed");
if (unsetenv("TCPLOCALIP") == -1) fail("unsetenv failed")
if (unsetenv("TCPLOCALPORT") == -1) fail("unsetenv failed")
if (unsetenv("TCPREMOTEIP") == -1) fail("unsetenv failed")
if (unsetenv("TCPREMOTEPORT") == -1) fail("unsetenv failed")
}
static void connectioninfotest_curvecpserverenv(void) {
#ifdef TODO
char localip[IPTOSTR_LEN];
char localport[PORTTOSTR_LEN];
char remoteip[IPTOSTR_LEN];
char remoteport[PORTTOSTR_LEN];
if (setenv("CURVECPLOCALIP", "aaay", 1) == -1) fail("setenv failed")
if (setenv("CURVECPLOCALPORT", "bbby", 1) == -1) fail("setenv failed")
if (setenv("CURVECPREMOTEIP", "cccy", 1) == -1) fail("setenv failed")
if (setenv("CURVECPREMOTEPORT", "dddy", 1) == -1) fail("setenv failed")
connectioninfo(localip, localport, remoteip, remoteport);
if (strcmp(localip, "aaay")) fail("connectioninfo failed");
if (strcmp(localport, "bbby")) fail("connectioninfo failed");
if (strcmp(remoteip, "cccy")) fail("connectioninfo failed");
if (strcmp(remoteport, "dddy")) fail("connectioninfo failed");
if (unsetenv("CURVECPLOCALIP") == -1) fail("unsetenv failed")
if (unsetenv("CURVECPLOCALPORT") == -1) fail("unsetenv failed")
if (unsetenv("CURVECPREMOTEIP") == -1) fail("unsetenv failed")
if (unsetenv("CURVECPREMOTEPORT") == -1) fail("unsetenv failed")
#endif
}
static struct vectors {
const char *port;
const char *portstr;
} testvectors[] = {
{ "\377\000", "65280" },
{ "\377\001", "65281" },
{ "\377\002", "65282" },
{ "\377\003", "65283" },
{ "\377\004", "65284" },
{ "\377\005", "65285" },
{ "\377\006", "65286" },
{ "\377\007", "65287" },
{ "\377\010", "65288" },
{ "\377\011", "65289" },
{ "\377\012", "65290" },
{ "\377\013", "65291" },
{ "\377\014", "65292" },
{ "\377\015", "65293" },
{ "\377\016", "65294" },
{ "\377\017", "65295" },
{ "\377\020", "65296" },
{ "\377\021", "65297" },
{ "\377\022", "65298" },
{ "\377\023", "65299" },
{ 0, 0 }
};
static void connectioninfotest_fromfd(void) {
int fd;
struct sockaddr_in sa;
long long i, j;
char localip[IPTOSTR_LEN];
char localport[PORTTOSTR_LEN];
char remoteip[IPTOSTR_LEN];
char remoteport[PORTTOSTR_LEN];
/* create socket */
fd = socket(PF_INET, SOCK_DGRAM, 0);
if (fd == -1) fail("socket failed");
/* bind */
for (i = 0; testvectors[i].port; ++i) {
byte_zero(&sa, sizeof sa);
sa.sin_family = PF_INET;
byte_copy(&sa.sin_addr, 4, "\177\0\0\1");
byte_copy(&sa.sin_port, 2, testvectors[i].port);
if (bind(fd, (struct sockaddr *)&sa, sizeof sa) == 0) goto bind;
}
fail("bind failed");
bind:
/* connect */
for (j = i; testvectors[j].port; ++j) {
byte_zero(&sa, sizeof sa);
sa.sin_family = PF_INET;
byte_copy(&sa.sin_addr, 4, "\177\0\0\1");
byte_copy(&sa.sin_port, 2, testvectors[i].port);
if (connect(fd, (struct sockaddr *)&sa, sizeof sa) == 0) goto connect;
}
fail("connect failed");
connect:
close(0);
if (dup(fd) != 0) fail("dup failed");
close(fd);
connectioninfo(localip, localport, remoteip, remoteport);
if (strcmp(localip, "127.0.0.1")) fail("connectioninfo failed");
if (strcmp(localport, testvectors[i].portstr)) fail("connectioninfo failed");
if (strcmp(remoteip, "127.0.0.1")) fail("connectioninfo failed");
if (strcmp(remoteport, testvectors[j].portstr)) fail("connectioninfo failed");
close(0);
}
int main(void) {
connectioninfotest_empty();
connectioninfotest_tcpserverenv();
connectioninfotest_empty();
connectioninfotest_curvecpserverenv();
connectioninfotest_empty();
connectioninfotest_fromfd();
connectioninfotest_empty();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/dietest.c 0000777 0000000 0000000 00000000000 13227043065 0022317 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/dropuidgidtest.c 0000664 0000000 0000000 00000001405 13227043065 0021513 0 ustar 00root root 0000000 0000000 /*
20140320
Jan Mojzis
Public domain.
*/
#include
#include "run.h"
#include "fail.h"
#include "dropuidgid.h"
static void droproot(void) {
if (geteuid() == 0) {
if (!dropuidgid(0, 1230, 1230)) _exit(111);
}
if (geteuid() == 0) _exit(111);
}
static void test1(void) {
droproot();
if (dropuidgid(0, 1231, getegid())) _exit(111);
_exit(0);
}
static void test2(void) {
droproot();
if (!dropuidgid(0, geteuid(), getegid())) _exit(111);
if (!dropuidgid(0, geteuid(), getegid())) _exit(111);
_exit(0);
}
static void test3(void) {
droproot();
if (!dropuidgid(0, 0, 0)) _exit(111);
_exit(0);
}
int main(void) {
run_mustpass(test1);
run_mustpass(test2);
run_mustfail(test3);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/emptytest.c 0000664 0000000 0000000 00000000141 13227043065 0020513 0 ustar 00root root 0000000 0000000 /*
20140319
Jan Mojzis
Public domain.
*/
#include
int main(void) {
_exit(0);
}
tinyssh-20180201/tinyssh-tests/envtest.c 0000664 0000000 0000000 00000002177 13227043065 0020160 0 ustar 00root root 0000000 0000000 /*
20130606
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "env.h"
static void test_zero(void) {
if (env_get(0)) fail("env_get accepts zero input");
}
static void doit(const char *d0, const char *d) {
char *s;
s = env_get(d0);
if (!s) {
if (d) fail("env_get failure");
return;
}
if (!s) fail("env_get failure");
if (strcmp(s, d)) fail("env_get failure");
return;
}
static void test_setunset(void) {
setenv("x","x",1);
doit("x", "x");
setenv("x","y",1);
doit("x", "y");
unsetenv("x");
doit("x", 0);
}
static void test_env(void) {
const char *env[10];
env[0] = "a=1";
env[1] = "a=2";
env[2] = "b=b=1";
env[3] = "c=";
env[4] = "d";
env[5] = "=null";
env[6] = "e==";
env[7] = 0;
environ = (char **)env;
doit("a", "1");
doit("b", "b=1");
doit("b=b", "1");
doit("c", "");
doit("d", 0);
doit("e", "=");
doit("", "null");
}
int main(void) {
test_zero();
test_setunset();
test_env();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/etest.c 0000664 0000000 0000000 00000000216 13227043065 0017604 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include "e.h"
#ifndef EPROTO
error!
#endif
int main(void) {
_exit(0);
}
tinyssh-20180201/tinyssh-tests/fail.h 0000664 0000000 0000000 00000001344 13227043065 0017403 0 ustar 00root root 0000000 0000000 #ifndef _FAIL_H____
#define _FAIL_H____
#include
#include
#include "fail.h"
#define fail_(a, b, x) do { fprintf(stderr, "%s:%llu: %s\n", (a), (unsigned long long)(b), (x)); fflush(stderr); _exit(111); } while (0);
#define fail(x) fail_(__FILE__, __LINE__, (x))
static void fail_printdata(char *text, unsigned char *data, long long len) {
long long i;
fprintf(stderr, "%s = {\n ", text);
for (i = 0; i < len; ++i) {
if (i == len - 1) {
fprintf(stderr, "0x%02x", data[i]);
}
else {
fprintf(stderr, "0x%02x, ", data[i]);
if (i % 8 == 7) fprintf(stderr, "\n ");
}
}
fprintf(stderr, "\n};\n");
fflush(stderr);
}
#endif
tinyssh-20180201/tinyssh-tests/forkptytest.c 0000777 0000000 0000000 00000000000 13227043065 0023254 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/getlntest.c 0000664 0000000 0000000 00000004015 13227043065 0020472 0 ustar 00root root 0000000 0000000 /*
20140323
Jan Mojzis
Public domain.
*/
#include
#include
#include "fail.h"
#include "savesync.h"
#include "str.h"
#include "byte.h"
#include "open.h"
#include "getln.h"
int main(void) {
char buf[6];
int fd;
int r;
/* create test file */
if (savesync("getlntest.txt", "ab\ncd", 5) == -1) fail("savesync() failure");
/* ok test */
fd = open_read("getlntest.txt");
if (fd == -1) fail("open_read() failure");
r = getln(fd, buf, sizeof buf);
if (r != 1) fail("getln() failure");
if (str_len(buf) != 3) fail("getln() failure");
if (!byte_isequal(buf, 3, "ab\n")) fail("getln() failure");
r = getln(fd, buf, sizeof buf);
if (r != 0) fail("getln() failure");
if (str_len(buf) != 2) fail("getln() failure");
if (!byte_isequal(buf, 2, "cd")) fail("getln() failure");
close(fd);
/* overflow test */
fd = open_read("getlntest.txt");
if (fd == -1) fail("open_read() failure");
r = getln(fd, buf, 3);
if (r != -1) fail("getln() failure");
close(fd);
if (unlink("getlntest.txt") == -1) fail("unlink() failure");
/* empty test */
if (savesync("getlntest.txt", "", 0) == -1) fail("savesync() failure");
fd = open_read("getlntest.txt");
if (fd == -1) fail("open_read() failure");
r = getln(fd, buf, sizeof buf);
if (r != 0) fail("getln() failure");
if (str_len(buf) != 0) fail("getln() failure");
close(fd);
if (unlink("getlntest.txt") == -1) fail("unlink() failure");
/* empty line test */
if (savesync("getlntest.txt", "\n", 1) == -1) fail("savesync() failure");
fd = open_read("getlntest.txt");
if (fd == -1) fail("open_read() failure");
r = getln(fd, buf, sizeof buf);
if (r != 1) fail("getln() failure");
if (str_len(buf) != 1) fail("getln() failure");
r = getln(fd, buf, sizeof buf);
if (r != 0) fail("getln() failure");
if (str_len(buf) != 0) fail("getln() failure");
close(fd);
if (unlink("getlntest.txt") == -1) fail("unlink() failure");
_exit(0);
}
tinyssh-20180201/tinyssh-tests/globaltest.c 0000664 0000000 0000000 00000000414 13227043065 0020620 0 ustar 00root root 0000000 0000000 /*
20140304
Jan Mojzis
Public domain.
*/
#include
#include "global.h"
#ifndef GLOBAL_BSIZE
error!
#endif
int main(void) {
global_init();
global_init();
global_purge();
global_purge();
global_init();
global_init();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/iptostrtest.c 0000664 0000000 0000000 00000145314 13227043065 0021075 0 ustar 00root root 0000000 0000000 /*
20130605
Jan Mojzis
Public domain.
*/
#include
#include "fail.h"
#include "iptostr.h"
struct vectors {
const char *ip;
const char *ipstr;
} testvectors[] = {
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", "::" },
{ "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000", "1::" },
{ "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000", "0:1::" },
{ "\000\001\000\001\000\000\000\000\000\000\000\000\000\000\000\000", "1:1::" },
{ "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000", "0:0:1::" },
{ "\000\001\000\000\000\001\000\000\000\000\000\000\000\000\000\000", "1:0:1::" },
{ "\000\000\000\001\000\001\000\000\000\000\000\000\000\000\000\000", "0:1:1::" },
{ "\000\001\000\001\000\001\000\000\000\000\000\000\000\000\000\000", "1:1:1::" },
{ "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000", "0:0:0:1::" },
{ "\000\001\000\000\000\000\000\001\000\000\000\000\000\000\000\000", "1:0:0:1::" },
{ "\000\000\000\001\000\000\000\001\000\000\000\000\000\000\000\000", "0:1:0:1::" },
{ "\000\001\000\001\000\000\000\001\000\000\000\000\000\000\000\000", "1:1:0:1::" },
{ "\000\000\000\000\000\001\000\001\000\000\000\000\000\000\000\000", "0:0:1:1::" },
{ "\000\001\000\000\000\001\000\001\000\000\000\000\000\000\000\000", "1:0:1:1::" },
{ "\000\000\000\001\000\001\000\001\000\000\000\000\000\000\000\000", "0:1:1:1::" },
{ "\000\001\000\001\000\001\000\001\000\000\000\000\000\000\000\000", "1:1:1:1::" },
{ "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000", "::1:0:0:0" },
{ "\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000", "1::1:0:0:0" },
{ "\000\000\000\001\000\000\000\000\000\001\000\000\000\000\000\000", "0:1:0:0:1::" },
{ "\000\001\000\001\000\000\000\000\000\001\000\000\000\000\000\000", "1:1:0:0:1::" },
{ "\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\000", "0:0:1:0:1::" },
{ "\000\001\000\000\000\001\000\000\000\001\000\000\000\000\000\000", "1:0:1:0:1::" },
{ "\000\000\000\001\000\001\000\000\000\001\000\000\000\000\000\000", "0:1:1:0:1::" },
{ "\000\001\000\001\000\001\000\000\000\001\000\000\000\000\000\000", "1:1:1:0:1::" },
{ "\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\000", "::1:1:0:0:0" },
{ "\000\001\000\000\000\000\000\001\000\001\000\000\000\000\000\000", "1:0:0:1:1::" },
{ "\000\000\000\001\000\000\000\001\000\001\000\000\000\000\000\000", "0:1:0:1:1::" },
{ "\000\001\000\001\000\000\000\001\000\001\000\000\000\000\000\000", "1:1:0:1:1::" },
{ "\000\000\000\000\000\001\000\001\000\001\000\000\000\000\000\000", "0:0:1:1:1::" },
{ "\000\001\000\000\000\001\000\001\000\001\000\000\000\000\000\000", "1:0:1:1:1::" },
{ "\000\000\000\001\000\001\000\001\000\001\000\000\000\000\000\000", "0:1:1:1:1::" },
{ "\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\000", "1:1:1:1:1::" },
{ "\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000", "::1:0:0" },
{ "\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\000", "1::1:0:0" },
{ "\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000", "0:1::1:0:0" },
{ "\000\001\000\001\000\000\000\000\000\000\000\001\000\000\000\000", "1:1::1:0:0" },
{ "\000\000\000\000\000\001\000\000\000\000\000\001\000\000\000\000", "::1:0:0:1:0:0" },
{ "\000\001\000\000\000\001\000\000\000\000\000\001\000\000\000\000", "1:0:1::1:0:0" },
{ "\000\000\000\001\000\001\000\000\000\000\000\001\000\000\000\000", "0:1:1::1:0:0" },
{ "\000\001\000\001\000\001\000\000\000\000\000\001\000\000\000\000", "1:1:1::1:0:0" },
{ "\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\000", "::1:0:1:0:0" },
{ "\000\001\000\000\000\000\000\001\000\000\000\001\000\000\000\000", "1::1:0:1:0:0" },
{ "\000\000\000\001\000\000\000\001\000\000\000\001\000\000\000\000", "0:1:0:1:0:1::" },
{ "\000\001\000\001\000\000\000\001\000\000\000\001\000\000\000\000", "1:1:0:1:0:1::" },
{ "\000\000\000\000\000\001\000\001\000\000\000\001\000\000\000\000", "::1:1:0:1:0:0" },
{ "\000\001\000\000\000\001\000\001\000\000\000\001\000\000\000\000", "1:0:1:1:0:1::" },
{ "\000\000\000\001\000\001\000\001\000\000\000\001\000\000\000\000", "0:1:1:1:0:1::" },
{ "\000\001\000\001\000\001\000\001\000\000\000\001\000\000\000\000", "1:1:1:1:0:1::" },
{ "\000\000\000\000\000\000\000\000\000\001\000\001\000\000\000\000", "::1:1:0:0" },
{ "\000\001\000\000\000\000\000\000\000\001\000\001\000\000\000\000", "1::1:1:0:0" },
{ "\000\000\000\001\000\000\000\000\000\001\000\001\000\000\000\000", "0:1::1:1:0:0" },
{ "\000\001\000\001\000\000\000\000\000\001\000\001\000\000\000\000", "1:1::1:1:0:0" },
{ "\000\000\000\000\000\001\000\000\000\001\000\001\000\000\000\000", "::1:0:1:1:0:0" },
{ "\000\001\000\000\000\001\000\000\000\001\000\001\000\000\000\000", "1:0:1:0:1:1::" },
{ "\000\000\000\001\000\001\000\000\000\001\000\001\000\000\000\000", "0:1:1:0:1:1::" },
{ "\000\001\000\001\000\001\000\000\000\001\000\001\000\000\000\000", "1:1:1:0:1:1::" },
{ "\000\000\000\000\000\000\000\001\000\001\000\001\000\000\000\000", "::1:1:1:0:0" },
{ "\000\001\000\000\000\000\000\001\000\001\000\001\000\000\000\000", "1::1:1:1:0:0" },
{ "\000\000\000\001\000\000\000\001\000\001\000\001\000\000\000\000", "0:1:0:1:1:1::" },
{ "\000\001\000\001\000\000\000\001\000\001\000\001\000\000\000\000", "1:1:0:1:1:1::" },
{ "\000\000\000\000\000\001\000\001\000\001\000\001\000\000\000\000", "::1:1:1:1:0:0" },
{ "\000\001\000\000\000\001\000\001\000\001\000\001\000\000\000\000", "1:0:1:1:1:1::" },
{ "\000\000\000\001\000\001\000\001\000\001\000\001\000\000\000\000", "0:1:1:1:1:1::" },
{ "\000\001\000\001\000\001\000\001\000\001\000\001\000\000\000\000", "1:1:1:1:1:1::" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000", "::1:0" }, /* inet_ntop incompatible: ::0.1.0.0 */
{ "\000\001\000\000\000\000\000\000\000\000\000\000\000\001\000\000", "1::1:0" },
{ "\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\000", "0:1::1:0" },
{ "\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\000", "1:1::1:0" },
{ "\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\000", "0:0:1::1:0" },
{ "\000\001\000\000\000\001\000\000\000\000\000\000\000\001\000\000", "1:0:1::1:0" },
{ "\000\000\000\001\000\001\000\000\000\000\000\000\000\001\000\000", "0:1:1::1:0" },
{ "\000\001\000\001\000\001\000\000\000\000\000\000\000\001\000\000", "1:1:1::1:0" },
{ "\000\000\000\000\000\000\000\001\000\000\000\000\000\001\000\000", "::1:0:0:1:0" },
{ "\000\001\000\000\000\000\000\001\000\000\000\000\000\001\000\000", "1::1:0:0:1:0" },
{ "\000\000\000\001\000\000\000\001\000\000\000\000\000\001\000\000", "0:1:0:1::1:0" },
{ "\000\001\000\001\000\000\000\001\000\000\000\000\000\001\000\000", "1:1:0:1::1:0" },
{ "\000\000\000\000\000\001\000\001\000\000\000\000\000\001\000\000", "::1:1:0:0:1:0" },
{ "\000\001\000\000\000\001\000\001\000\000\000\000\000\001\000\000", "1:0:1:1::1:0" },
{ "\000\000\000\001\000\001\000\001\000\000\000\000\000\001\000\000", "0:1:1:1::1:0" },
{ "\000\001\000\001\000\001\000\001\000\000\000\000\000\001\000\000", "1:1:1:1::1:0" },
{ "\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\000", "::1:0:1:0" },
{ "\000\001\000\000\000\000\000\000\000\001\000\000\000\001\000\000", "1::1:0:1:0" },
{ "\000\000\000\001\000\000\000\000\000\001\000\000\000\001\000\000", "0:1::1:0:1:0" },
{ "\000\001\000\001\000\000\000\000\000\001\000\000\000\001\000\000", "1:1::1:0:1:0" },
{ "\000\000\000\000\000\001\000\000\000\001\000\000\000\001\000\000", "::1:0:1:0:1:0" },
{ "\000\001\000\000\000\001\000\000\000\001\000\000\000\001\000\000", "1:0:1:0:1:0:1:0" },
{ "\000\000\000\001\000\001\000\000\000\001\000\000\000\001\000\000", "0:1:1:0:1:0:1:0" },
{ "\000\001\000\001\000\001\000\000\000\001\000\000\000\001\000\000", "1:1:1:0:1:0:1:0" },
{ "\000\000\000\000\000\000\000\001\000\001\000\000\000\001\000\000", "::1:1:0:1:0" },
{ "\000\001\000\000\000\000\000\001\000\001\000\000\000\001\000\000", "1::1:1:0:1:0" },
{ "\000\000\000\001\000\000\000\001\000\001\000\000\000\001\000\000", "0:1:0:1:1:0:1:0" },
{ "\000\001\000\001\000\000\000\001\000\001\000\000\000\001\000\000", "1:1:0:1:1:0:1:0" },
{ "\000\000\000\000\000\001\000\001\000\001\000\000\000\001\000\000", "::1:1:1:0:1:0" },
{ "\000\001\000\000\000\001\000\001\000\001\000\000\000\001\000\000", "1:0:1:1:1:0:1:0" },
{ "\000\000\000\001\000\001\000\001\000\001\000\000\000\001\000\000", "0:1:1:1:1:0:1:0" },
{ "\000\001\000\001\000\001\000\001\000\001\000\000\000\001\000\000", "1:1:1:1:1:0:1:0" },
{ "\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\000", "::1:1:0" },
{ "\000\001\000\000\000\000\000\000\000\000\000\001\000\001\000\000", "1::1:1:0" },
{ "\000\000\000\001\000\000\000\000\000\000\000\001\000\001\000\000", "0:1::1:1:0" },
{ "\000\001\000\001\000\000\000\000\000\000\000\001\000\001\000\000", "1:1::1:1:0" },
{ "\000\000\000\000\000\001\000\000\000\000\000\001\000\001\000\000", "::1:0:0:1:1:0" },
{ "\000\001\000\000\000\001\000\000\000\000\000\001\000\001\000\000", "1:0:1::1:1:0" },
{ "\000\000\000\001\000\001\000\000\000\000\000\001\000\001\000\000", "0:1:1::1:1:0" },
{ "\000\001\000\001\000\001\000\000\000\000\000\001\000\001\000\000", "1:1:1::1:1:0" },
{ "\000\000\000\000\000\000\000\001\000\000\000\001\000\001\000\000", "::1:0:1:1:0" },
{ "\000\001\000\000\000\000\000\001\000\000\000\001\000\001\000\000", "1::1:0:1:1:0" },
{ "\000\000\000\001\000\000\000\001\000\000\000\001\000\001\000\000", "0:1:0:1:0:1:1:0" },
{ "\000\001\000\001\000\000\000\001\000\000\000\001\000\001\000\000", "1:1:0:1:0:1:1:0" },
{ "\000\000\000\000\000\001\000\001\000\000\000\001\000\001\000\000", "::1:1:0:1:1:0" },
{ "\000\001\000\000\000\001\000\001\000\000\000\001\000\001\000\000", "1:0:1:1:0:1:1:0" },
{ "\000\000\000\001\000\001\000\001\000\000\000\001\000\001\000\000", "0:1:1:1:0:1:1:0" },
{ "\000\001\000\001\000\001\000\001\000\000\000\001\000\001\000\000", "1:1:1:1:0:1:1:0" },
{ "\000\000\000\000\000\000\000\000\000\001\000\001\000\001\000\000", "::1:1:1:0" },
{ "\000\001\000\000\000\000\000\000\000\001\000\001\000\001\000\000", "1::1:1:1:0" },
{ "\000\000\000\001\000\000\000\000\000\001\000\001\000\001\000\000", "0:1::1:1:1:0" },
{ "\000\001\000\001\000\000\000\000\000\001\000\001\000\001\000\000", "1:1::1:1:1:0" },
{ "\000\000\000\000\000\001\000\000\000\001\000\001\000\001\000\000", "::1:0:1:1:1:0" },
{ "\000\001\000\000\000\001\000\000\000\001\000\001\000\001\000\000", "1:0:1:0:1:1:1:0" },
{ "\000\000\000\001\000\001\000\000\000\001\000\001\000\001\000\000", "0:1:1:0:1:1:1:0" },
{ "\000\001\000\001\000\001\000\000\000\001\000\001\000\001\000\000", "1:1:1:0:1:1:1:0" },
{ "\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\000", "::1:1:1:1:0" },
{ "\000\001\000\000\000\000\000\001\000\001\000\001\000\001\000\000", "1::1:1:1:1:0" },
{ "\000\000\000\001\000\000\000\001\000\001\000\001\000\001\000\000", "0:1:0:1:1:1:1:0" },
{ "\000\001\000\001\000\000\000\001\000\001\000\001\000\001\000\000", "1:1:0:1:1:1:1:0" },
{ "\000\000\000\000\000\001\000\001\000\001\000\001\000\001\000\000", "::1:1:1:1:1:0" },
{ "\000\001\000\000\000\001\000\001\000\001\000\001\000\001\000\000", "1:0:1:1:1:1:1:0" },
{ "\000\000\000\001\000\001\000\001\000\001\000\001\000\001\000\000", "0:1:1:1:1:1:1:0" },
{ "\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\000", "1:1:1:1:1:1:1:0" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001", "::1" },
{ "\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001", "1::1" },
{ "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001", "0:1::1" },
{ "\000\001\000\001\000\000\000\000\000\000\000\000\000\000\000\001", "1:1::1" },
{ "\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\001", "0:0:1::1" },
{ "\000\001\000\000\000\001\000\000\000\000\000\000\000\000\000\001", "1:0:1::1" },
{ "\000\000\000\001\000\001\000\000\000\000\000\000\000\000\000\001", "0:1:1::1" },
{ "\000\001\000\001\000\001\000\000\000\000\000\000\000\000\000\001", "1:1:1::1" },
{ "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\001", "::1:0:0:0:1" },
{ "\000\001\000\000\000\000\000\001\000\000\000\000\000\000\000\001", "1:0:0:1::1" },
{ "\000\000\000\001\000\000\000\001\000\000\000\000\000\000\000\001", "0:1:0:1::1" },
{ "\000\001\000\001\000\000\000\001\000\000\000\000\000\000\000\001", "1:1:0:1::1" },
{ "\000\000\000\000\000\001\000\001\000\000\000\000\000\000\000\001", "0:0:1:1::1" },
{ "\000\001\000\000\000\001\000\001\000\000\000\000\000\000\000\001", "1:0:1:1::1" },
{ "\000\000\000\001\000\001\000\001\000\000\000\000\000\000\000\001", "0:1:1:1::1" },
{ "\000\001\000\001\000\001\000\001\000\000\000\000\000\000\000\001", "1:1:1:1::1" },
{ "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\001", "::1:0:0:1" },
{ "\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\001", "1::1:0:0:1" },
{ "\000\000\000\001\000\000\000\000\000\001\000\000\000\000\000\001", "0:1::1:0:0:1" },
{ "\000\001\000\001\000\000\000\000\000\001\000\000\000\000\000\001", "1:1::1:0:0:1" },
{ "\000\000\000\000\000\001\000\000\000\001\000\000\000\000\000\001", "::1:0:1:0:0:1" },
{ "\000\001\000\000\000\001\000\000\000\001\000\000\000\000\000\001", "1:0:1:0:1::1" },
{ "\000\000\000\001\000\001\000\000\000\001\000\000\000\000\000\001", "0:1:1:0:1::1" },
{ "\000\001\000\001\000\001\000\000\000\001\000\000\000\000\000\001", "1:1:1:0:1::1" },
{ "\000\000\000\000\000\000\000\001\000\001\000\000\000\000\000\001", "::1:1:0:0:1" },
{ "\000\001\000\000\000\000\000\001\000\001\000\000\000\000\000\001", "1::1:1:0:0:1" },
{ "\000\000\000\001\000\000\000\001\000\001\000\000\000\000\000\001", "0:1:0:1:1::1" },
{ "\000\001\000\001\000\000\000\001\000\001\000\000\000\000\000\001", "1:1:0:1:1::1" },
{ "\000\000\000\000\000\001\000\001\000\001\000\000\000\000\000\001", "::1:1:1:0:0:1" },
{ "\000\001\000\000\000\001\000\001\000\001\000\000\000\000\000\001", "1:0:1:1:1::1" },
{ "\000\000\000\001\000\001\000\001\000\001\000\000\000\000\000\001", "0:1:1:1:1::1" },
{ "\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\001", "1:1:1:1:1::1" },
{ "\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\001", "::1:0:1" },
{ "\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\001", "1::1:0:1" },
{ "\000\000\000\001\000\000\000\000\000\000\000\001\000\000\000\001", "0:1::1:0:1" },
{ "\000\001\000\001\000\000\000\000\000\000\000\001\000\000\000\001", "1:1::1:0:1" },
{ "\000\000\000\000\000\001\000\000\000\000\000\001\000\000\000\001", "::1:0:0:1:0:1" },
{ "\000\001\000\000\000\001\000\000\000\000\000\001\000\000\000\001", "1:0:1::1:0:1" },
{ "\000\000\000\001\000\001\000\000\000\000\000\001\000\000\000\001", "0:1:1::1:0:1" },
{ "\000\001\000\001\000\001\000\000\000\000\000\001\000\000\000\001", "1:1:1::1:0:1" },
{ "\000\000\000\000\000\000\000\001\000\000\000\001\000\000\000\001", "::1:0:1:0:1" },
{ "\000\001\000\000\000\000\000\001\000\000\000\001\000\000\000\001", "1::1:0:1:0:1" },
{ "\000\000\000\001\000\000\000\001\000\000\000\001\000\000\000\001", "0:1:0:1:0:1:0:1" },
{ "\000\001\000\001\000\000\000\001\000\000\000\001\000\000\000\001", "1:1:0:1:0:1:0:1" },
{ "\000\000\000\000\000\001\000\001\000\000\000\001\000\000\000\001", "::1:1:0:1:0:1" },
{ "\000\001\000\000\000\001\000\001\000\000\000\001\000\000\000\001", "1:0:1:1:0:1:0:1" },
{ "\000\000\000\001\000\001\000\001\000\000\000\001\000\000\000\001", "0:1:1:1:0:1:0:1" },
{ "\000\001\000\001\000\001\000\001\000\000\000\001\000\000\000\001", "1:1:1:1:0:1:0:1" },
{ "\000\000\000\000\000\000\000\000\000\001\000\001\000\000\000\001", "::1:1:0:1" },
{ "\000\001\000\000\000\000\000\000\000\001\000\001\000\000\000\001", "1::1:1:0:1" },
{ "\000\000\000\001\000\000\000\000\000\001\000\001\000\000\000\001", "0:1::1:1:0:1" },
{ "\000\001\000\001\000\000\000\000\000\001\000\001\000\000\000\001", "1:1::1:1:0:1" },
{ "\000\000\000\000\000\001\000\000\000\001\000\001\000\000\000\001", "::1:0:1:1:0:1" },
{ "\000\001\000\000\000\001\000\000\000\001\000\001\000\000\000\001", "1:0:1:0:1:1:0:1" },
{ "\000\000\000\001\000\001\000\000\000\001\000\001\000\000\000\001", "0:1:1:0:1:1:0:1" },
{ "\000\001\000\001\000\001\000\000\000\001\000\001\000\000\000\001", "1:1:1:0:1:1:0:1" },
{ "\000\000\000\000\000\000\000\001\000\001\000\001\000\000\000\001", "::1:1:1:0:1" },
{ "\000\001\000\000\000\000\000\001\000\001\000\001\000\000\000\001", "1::1:1:1:0:1" },
{ "\000\000\000\001\000\000\000\001\000\001\000\001\000\000\000\001", "0:1:0:1:1:1:0:1" },
{ "\000\001\000\001\000\000\000\001\000\001\000\001\000\000\000\001", "1:1:0:1:1:1:0:1" },
{ "\000\000\000\000\000\001\000\001\000\001\000\001\000\000\000\001", "::1:1:1:1:0:1" },
{ "\000\001\000\000\000\001\000\001\000\001\000\001\000\000\000\001", "1:0:1:1:1:1:0:1" },
{ "\000\000\000\001\000\001\000\001\000\001\000\001\000\000\000\001", "0:1:1:1:1:1:0:1" },
{ "\000\001\000\001\000\001\000\001\000\001\000\001\000\000\000\001", "1:1:1:1:1:1:0:1" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\001", "::1:1" }, /* inet_ntop incompatible: ::0.1.0.1 */
{ "\000\001\000\000\000\000\000\000\000\000\000\000\000\001\000\001", "1::1:1" },
{ "\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\001", "0:1::1:1" },
{ "\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\001", "1:1::1:1" },
{ "\000\000\000\000\000\001\000\000\000\000\000\000\000\001\000\001", "0:0:1::1:1" },
{ "\000\001\000\000\000\001\000\000\000\000\000\000\000\001\000\001", "1:0:1::1:1" },
{ "\000\000\000\001\000\001\000\000\000\000\000\000\000\001\000\001", "0:1:1::1:1" },
{ "\000\001\000\001\000\001\000\000\000\000\000\000\000\001\000\001", "1:1:1::1:1" },
{ "\000\000\000\000\000\000\000\001\000\000\000\000\000\001\000\001", "::1:0:0:1:1" },
{ "\000\001\000\000\000\000\000\001\000\000\000\000\000\001\000\001", "1::1:0:0:1:1" },
{ "\000\000\000\001\000\000\000\001\000\000\000\000\000\001\000\001", "0:1:0:1::1:1" },
{ "\000\001\000\001\000\000\000\001\000\000\000\000\000\001\000\001", "1:1:0:1::1:1" },
{ "\000\000\000\000\000\001\000\001\000\000\000\000\000\001\000\001", "::1:1:0:0:1:1" },
{ "\000\001\000\000\000\001\000\001\000\000\000\000\000\001\000\001", "1:0:1:1::1:1" },
{ "\000\000\000\001\000\001\000\001\000\000\000\000\000\001\000\001", "0:1:1:1::1:1" },
{ "\000\001\000\001\000\001\000\001\000\000\000\000\000\001\000\001", "1:1:1:1::1:1" },
{ "\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\001", "::1:0:1:1" },
{ "\000\001\000\000\000\000\000\000\000\001\000\000\000\001\000\001", "1::1:0:1:1" },
{ "\000\000\000\001\000\000\000\000\000\001\000\000\000\001\000\001", "0:1::1:0:1:1" },
{ "\000\001\000\001\000\000\000\000\000\001\000\000\000\001\000\001", "1:1::1:0:1:1" },
{ "\000\000\000\000\000\001\000\000\000\001\000\000\000\001\000\001", "::1:0:1:0:1:1" },
{ "\000\001\000\000\000\001\000\000\000\001\000\000\000\001\000\001", "1:0:1:0:1:0:1:1" },
{ "\000\000\000\001\000\001\000\000\000\001\000\000\000\001\000\001", "0:1:1:0:1:0:1:1" },
{ "\000\001\000\001\000\001\000\000\000\001\000\000\000\001\000\001", "1:1:1:0:1:0:1:1" },
{ "\000\000\000\000\000\000\000\001\000\001\000\000\000\001\000\001", "::1:1:0:1:1" },
{ "\000\001\000\000\000\000\000\001\000\001\000\000\000\001\000\001", "1::1:1:0:1:1" },
{ "\000\000\000\001\000\000\000\001\000\001\000\000\000\001\000\001", "0:1:0:1:1:0:1:1" },
{ "\000\001\000\001\000\000\000\001\000\001\000\000\000\001\000\001", "1:1:0:1:1:0:1:1" },
{ "\000\000\000\000\000\001\000\001\000\001\000\000\000\001\000\001", "::1:1:1:0:1:1" },
{ "\000\001\000\000\000\001\000\001\000\001\000\000\000\001\000\001", "1:0:1:1:1:0:1:1" },
{ "\000\000\000\001\000\001\000\001\000\001\000\000\000\001\000\001", "0:1:1:1:1:0:1:1" },
{ "\000\001\000\001\000\001\000\001\000\001\000\000\000\001\000\001", "1:1:1:1:1:0:1:1" },
{ "\000\000\000\000\000\000\000\000\000\000\000\001\000\001\000\001", "::1:1:1" },
{ "\000\001\000\000\000\000\000\000\000\000\000\001\000\001\000\001", "1::1:1:1" },
{ "\000\000\000\001\000\000\000\000\000\000\000\001\000\001\000\001", "0:1::1:1:1" },
{ "\000\001\000\001\000\000\000\000\000\000\000\001\000\001\000\001", "1:1::1:1:1" },
{ "\000\000\000\000\000\001\000\000\000\000\000\001\000\001\000\001", "::1:0:0:1:1:1" },
{ "\000\001\000\000\000\001\000\000\000\000\000\001\000\001\000\001", "1:0:1::1:1:1" },
{ "\000\000\000\001\000\001\000\000\000\000\000\001\000\001\000\001", "0:1:1::1:1:1" },
{ "\000\001\000\001\000\001\000\000\000\000\000\001\000\001\000\001", "1:1:1::1:1:1" },
{ "\000\000\000\000\000\000\000\001\000\000\000\001\000\001\000\001", "::1:0:1:1:1" },
{ "\000\001\000\000\000\000\000\001\000\000\000\001\000\001\000\001", "1::1:0:1:1:1" },
{ "\000\000\000\001\000\000\000\001\000\000\000\001\000\001\000\001", "0:1:0:1:0:1:1:1" },
{ "\000\001\000\001\000\000\000\001\000\000\000\001\000\001\000\001", "1:1:0:1:0:1:1:1" },
{ "\000\000\000\000\000\001\000\001\000\000\000\001\000\001\000\001", "::1:1:0:1:1:1" },
{ "\000\001\000\000\000\001\000\001\000\000\000\001\000\001\000\001", "1:0:1:1:0:1:1:1" },
{ "\000\000\000\001\000\001\000\001\000\000\000\001\000\001\000\001", "0:1:1:1:0:1:1:1" },
{ "\000\001\000\001\000\001\000\001\000\000\000\001\000\001\000\001", "1:1:1:1:0:1:1:1" },
{ "\000\000\000\000\000\000\000\000\000\001\000\001\000\001\000\001", "::1:1:1:1" },
{ "\000\001\000\000\000\000\000\000\000\001\000\001\000\001\000\001", "1::1:1:1:1" },
{ "\000\000\000\001\000\000\000\000\000\001\000\001\000\001\000\001", "0:1::1:1:1:1" },
{ "\000\001\000\001\000\000\000\000\000\001\000\001\000\001\000\001", "1:1::1:1:1:1" },
{ "\000\000\000\000\000\001\000\000\000\001\000\001\000\001\000\001", "::1:0:1:1:1:1" },
{ "\000\001\000\000\000\001\000\000\000\001\000\001\000\001\000\001", "1:0:1:0:1:1:1:1" },
{ "\000\000\000\001\000\001\000\000\000\001\000\001\000\001\000\001", "0:1:1:0:1:1:1:1" },
{ "\000\001\000\001\000\001\000\000\000\001\000\001\000\001\000\001", "1:1:1:0:1:1:1:1" },
{ "\000\000\000\000\000\000\000\001\000\001\000\001\000\001\000\001", "::1:1:1:1:1" },
{ "\000\001\000\000\000\000\000\001\000\001\000\001\000\001\000\001", "1::1:1:1:1:1" },
{ "\000\000\000\001\000\000\000\001\000\001\000\001\000\001\000\001", "0:1:0:1:1:1:1:1" },
{ "\000\001\000\001\000\000\000\001\000\001\000\001\000\001\000\001", "1:1:0:1:1:1:1:1" },
{ "\000\000\000\000\000\001\000\001\000\001\000\001\000\001\000\001", "::1:1:1:1:1:1" },
{ "\000\001\000\000\000\001\000\001\000\001\000\001\000\001\000\001", "1:0:1:1:1:1:1:1" },
{ "\000\000\000\001\000\001\000\001\000\001\000\001\000\001\000\001", "0:1:1:1:1:1:1:1" },
{ "\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\001", "1:1:1:1:1:1:1:1" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", "::" },
{ "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000", "ffff::" },
{ "\000\000\377\377\000\000\000\000\000\000\000\000\000\000\000\000", "0:ffff::" },
{ "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\000\000", "ffff:ffff::" },
{ "\000\000\000\000\377\377\000\000\000\000\000\000\000\000\000\000", "0:0:ffff::" },
{ "\377\377\000\000\377\377\000\000\000\000\000\000\000\000\000\000", "ffff:0:ffff::" },
{ "\000\000\377\377\377\377\000\000\000\000\000\000\000\000\000\000", "0:ffff:ffff::" },
{ "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\000\000", "ffff:ffff:ffff::" },
{ "\000\000\000\000\000\000\377\377\000\000\000\000\000\000\000\000", "0:0:0:ffff::" },
{ "\377\377\000\000\000\000\377\377\000\000\000\000\000\000\000\000", "ffff:0:0:ffff::" },
{ "\000\000\377\377\000\000\377\377\000\000\000\000\000\000\000\000", "0:ffff:0:ffff::" },
{ "\377\377\377\377\000\000\377\377\000\000\000\000\000\000\000\000", "ffff:ffff:0:ffff::" },
{ "\000\000\000\000\377\377\377\377\000\000\000\000\000\000\000\000", "0:0:ffff:ffff::" },
{ "\377\377\000\000\377\377\377\377\000\000\000\000\000\000\000\000", "ffff:0:ffff:ffff::" },
{ "\000\000\377\377\377\377\377\377\000\000\000\000\000\000\000\000", "0:ffff:ffff:ffff::" },
{ "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000\000", "ffff:ffff:ffff:ffff::" },
{ "\000\000\000\000\000\000\000\000\377\377\000\000\000\000\000\000", "::ffff:0:0:0" },
{ "\377\377\000\000\000\000\000\000\377\377\000\000\000\000\000\000", "ffff::ffff:0:0:0" },
{ "\000\000\377\377\000\000\000\000\377\377\000\000\000\000\000\000", "0:ffff:0:0:ffff::" },
{ "\377\377\377\377\000\000\000\000\377\377\000\000\000\000\000\000", "ffff:ffff:0:0:ffff::" },
{ "\000\000\000\000\377\377\000\000\377\377\000\000\000\000\000\000", "0:0:ffff:0:ffff::" },
{ "\377\377\000\000\377\377\000\000\377\377\000\000\000\000\000\000", "ffff:0:ffff:0:ffff::" },
{ "\000\000\377\377\377\377\000\000\377\377\000\000\000\000\000\000", "0:ffff:ffff:0:ffff::" },
{ "\377\377\377\377\377\377\000\000\377\377\000\000\000\000\000\000", "ffff:ffff:ffff:0:ffff::" },
{ "\000\000\000\000\000\000\377\377\377\377\000\000\000\000\000\000", "::ffff:ffff:0:0:0" },
{ "\377\377\000\000\000\000\377\377\377\377\000\000\000\000\000\000", "ffff:0:0:ffff:ffff::" },
{ "\000\000\377\377\000\000\377\377\377\377\000\000\000\000\000\000", "0:ffff:0:ffff:ffff::" },
{ "\377\377\377\377\000\000\377\377\377\377\000\000\000\000\000\000", "ffff:ffff:0:ffff:ffff::" },
{ "\000\000\000\000\377\377\377\377\377\377\000\000\000\000\000\000", "0:0:ffff:ffff:ffff::" },
{ "\377\377\000\000\377\377\377\377\377\377\000\000\000\000\000\000", "ffff:0:ffff:ffff:ffff::" },
{ "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\000\000", "0:ffff:ffff:ffff:ffff::" },
{ "\377\377\377\377\377\377\377\377\377\377\000\000\000\000\000\000", "ffff:ffff:ffff:ffff:ffff::" },
{ "\000\000\000\000\000\000\000\000\000\000\377\377\000\000\000\000", "0.0.0.0" }, /* inet_ntop incompatible: ::ffff:0.0.0.0 */
{ "\377\377\000\000\000\000\000\000\000\000\377\377\000\000\000\000", "ffff::ffff:0:0" },
{ "\000\000\377\377\000\000\000\000\000\000\377\377\000\000\000\000", "0:ffff::ffff:0:0" },
{ "\377\377\377\377\000\000\000\000\000\000\377\377\000\000\000\000", "ffff:ffff::ffff:0:0" },
{ "\000\000\000\000\377\377\000\000\000\000\377\377\000\000\000\000", "::ffff:0:0:ffff:0:0" },
{ "\377\377\000\000\377\377\000\000\000\000\377\377\000\000\000\000", "ffff:0:ffff::ffff:0:0" },
{ "\000\000\377\377\377\377\000\000\000\000\377\377\000\000\000\000", "0:ffff:ffff::ffff:0:0" },
{ "\377\377\377\377\377\377\000\000\000\000\377\377\000\000\000\000", "ffff:ffff:ffff::ffff:0:0" },
{ "\000\000\000\000\000\000\377\377\000\000\377\377\000\000\000\000", "::ffff:0:ffff:0:0" },
{ "\377\377\000\000\000\000\377\377\000\000\377\377\000\000\000\000", "ffff::ffff:0:ffff:0:0" },
{ "\000\000\377\377\000\000\377\377\000\000\377\377\000\000\000\000", "0:ffff:0:ffff:0:ffff::" },
{ "\377\377\377\377\000\000\377\377\000\000\377\377\000\000\000\000", "ffff:ffff:0:ffff:0:ffff::" },
{ "\000\000\000\000\377\377\377\377\000\000\377\377\000\000\000\000", "::ffff:ffff:0:ffff:0:0" },
{ "\377\377\000\000\377\377\377\377\000\000\377\377\000\000\000\000", "ffff:0:ffff:ffff:0:ffff::" },
{ "\000\000\377\377\377\377\377\377\000\000\377\377\000\000\000\000", "0:ffff:ffff:ffff:0:ffff::" },
{ "\377\377\377\377\377\377\377\377\000\000\377\377\000\000\000\000", "ffff:ffff:ffff:ffff:0:ffff::" },
{ "\000\000\000\000\000\000\000\000\377\377\377\377\000\000\000\000", "::ffff:ffff:0:0" },
{ "\377\377\000\000\000\000\000\000\377\377\377\377\000\000\000\000", "ffff::ffff:ffff:0:0" },
{ "\000\000\377\377\000\000\000\000\377\377\377\377\000\000\000\000", "0:ffff::ffff:ffff:0:0" },
{ "\377\377\377\377\000\000\000\000\377\377\377\377\000\000\000\000", "ffff:ffff::ffff:ffff:0:0" },
{ "\000\000\000\000\377\377\000\000\377\377\377\377\000\000\000\000", "::ffff:0:ffff:ffff:0:0" },
{ "\377\377\000\000\377\377\000\000\377\377\377\377\000\000\000\000", "ffff:0:ffff:0:ffff:ffff::" },
{ "\000\000\377\377\377\377\000\000\377\377\377\377\000\000\000\000", "0:ffff:ffff:0:ffff:ffff::" },
{ "\377\377\377\377\377\377\000\000\377\377\377\377\000\000\000\000", "ffff:ffff:ffff:0:ffff:ffff::" },
{ "\000\000\000\000\000\000\377\377\377\377\377\377\000\000\000\000", "::ffff:ffff:ffff:0:0" },
{ "\377\377\000\000\000\000\377\377\377\377\377\377\000\000\000\000", "ffff::ffff:ffff:ffff:0:0" },
{ "\000\000\377\377\000\000\377\377\377\377\377\377\000\000\000\000", "0:ffff:0:ffff:ffff:ffff::" },
{ "\377\377\377\377\000\000\377\377\377\377\377\377\000\000\000\000", "ffff:ffff:0:ffff:ffff:ffff::" },
{ "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\000\000", "::ffff:ffff:ffff:ffff:0:0" },
{ "\377\377\000\000\377\377\377\377\377\377\377\377\000\000\000\000", "ffff:0:ffff:ffff:ffff:ffff::" },
{ "\000\000\377\377\377\377\377\377\377\377\377\377\000\000\000\000", "0:ffff:ffff:ffff:ffff:ffff::" },
{ "\377\377\377\377\377\377\377\377\377\377\377\377\000\000\000\000", "ffff:ffff:ffff:ffff:ffff:ffff::" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\000\000", "::ffff:0" }, /* inet_ntop incompatible: ::255.255.0.0 */
{ "\377\377\000\000\000\000\000\000\000\000\000\000\377\377\000\000", "ffff::ffff:0" },
{ "\000\000\377\377\000\000\000\000\000\000\000\000\377\377\000\000", "0:ffff::ffff:0" },
{ "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\000\000", "ffff:ffff::ffff:0" },
{ "\000\000\000\000\377\377\000\000\000\000\000\000\377\377\000\000", "0:0:ffff::ffff:0" },
{ "\377\377\000\000\377\377\000\000\000\000\000\000\377\377\000\000", "ffff:0:ffff::ffff:0" },
{ "\000\000\377\377\377\377\000\000\000\000\000\000\377\377\000\000", "0:ffff:ffff::ffff:0" },
{ "\377\377\377\377\377\377\000\000\000\000\000\000\377\377\000\000", "ffff:ffff:ffff::ffff:0" },
{ "\000\000\000\000\000\000\377\377\000\000\000\000\377\377\000\000", "::ffff:0:0:ffff:0" },
{ "\377\377\000\000\000\000\377\377\000\000\000\000\377\377\000\000", "ffff::ffff:0:0:ffff:0" },
{ "\000\000\377\377\000\000\377\377\000\000\000\000\377\377\000\000", "0:ffff:0:ffff::ffff:0" },
{ "\377\377\377\377\000\000\377\377\000\000\000\000\377\377\000\000", "ffff:ffff:0:ffff::ffff:0" },
{ "\000\000\000\000\377\377\377\377\000\000\000\000\377\377\000\000", "::ffff:ffff:0:0:ffff:0" },
{ "\377\377\000\000\377\377\377\377\000\000\000\000\377\377\000\000", "ffff:0:ffff:ffff::ffff:0" },
{ "\000\000\377\377\377\377\377\377\000\000\000\000\377\377\000\000", "0:ffff:ffff:ffff::ffff:0" },
{ "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\000\000", "ffff:ffff:ffff:ffff::ffff:0" },
{ "\000\000\000\000\000\000\000\000\377\377\000\000\377\377\000\000", "::ffff:0:ffff:0" },
{ "\377\377\000\000\000\000\000\000\377\377\000\000\377\377\000\000", "ffff::ffff:0:ffff:0" },
{ "\000\000\377\377\000\000\000\000\377\377\000\000\377\377\000\000", "0:ffff::ffff:0:ffff:0" },
{ "\377\377\377\377\000\000\000\000\377\377\000\000\377\377\000\000", "ffff:ffff::ffff:0:ffff:0" },
{ "\000\000\000\000\377\377\000\000\377\377\000\000\377\377\000\000", "::ffff:0:ffff:0:ffff:0" },
{ "\377\377\000\000\377\377\000\000\377\377\000\000\377\377\000\000", "ffff:0:ffff:0:ffff:0:ffff:0" },
{ "\000\000\377\377\377\377\000\000\377\377\000\000\377\377\000\000", "0:ffff:ffff:0:ffff:0:ffff:0" },
{ "\377\377\377\377\377\377\000\000\377\377\000\000\377\377\000\000", "ffff:ffff:ffff:0:ffff:0:ffff:0" },
{ "\000\000\000\000\000\000\377\377\377\377\000\000\377\377\000\000", "::ffff:ffff:0:ffff:0" },
{ "\377\377\000\000\000\000\377\377\377\377\000\000\377\377\000\000", "ffff::ffff:ffff:0:ffff:0" },
{ "\000\000\377\377\000\000\377\377\377\377\000\000\377\377\000\000", "0:ffff:0:ffff:ffff:0:ffff:0" },
{ "\377\377\377\377\000\000\377\377\377\377\000\000\377\377\000\000", "ffff:ffff:0:ffff:ffff:0:ffff:0" },
{ "\000\000\000\000\377\377\377\377\377\377\000\000\377\377\000\000", "::ffff:ffff:ffff:0:ffff:0" },
{ "\377\377\000\000\377\377\377\377\377\377\000\000\377\377\000\000", "ffff:0:ffff:ffff:ffff:0:ffff:0" },
{ "\000\000\377\377\377\377\377\377\377\377\000\000\377\377\000\000", "0:ffff:ffff:ffff:ffff:0:ffff:0" },
{ "\377\377\377\377\377\377\377\377\377\377\000\000\377\377\000\000", "ffff:ffff:ffff:ffff:ffff:0:ffff:0" },
{ "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\000\000", "255.255.0.0" }, /* inet_ntop incompatible: ::ffff:255.255.0.0 */
{ "\377\377\000\000\000\000\000\000\000\000\377\377\377\377\000\000", "ffff::ffff:ffff:0" },
{ "\000\000\377\377\000\000\000\000\000\000\377\377\377\377\000\000", "0:ffff::ffff:ffff:0" },
{ "\377\377\377\377\000\000\000\000\000\000\377\377\377\377\000\000", "ffff:ffff::ffff:ffff:0" },
{ "\000\000\000\000\377\377\000\000\000\000\377\377\377\377\000\000", "::ffff:0:0:ffff:ffff:0" },
{ "\377\377\000\000\377\377\000\000\000\000\377\377\377\377\000\000", "ffff:0:ffff::ffff:ffff:0" },
{ "\000\000\377\377\377\377\000\000\000\000\377\377\377\377\000\000", "0:ffff:ffff::ffff:ffff:0" },
{ "\377\377\377\377\377\377\000\000\000\000\377\377\377\377\000\000", "ffff:ffff:ffff::ffff:ffff:0" },
{ "\000\000\000\000\000\000\377\377\000\000\377\377\377\377\000\000", "::ffff:0:ffff:ffff:0" },
{ "\377\377\000\000\000\000\377\377\000\000\377\377\377\377\000\000", "ffff::ffff:0:ffff:ffff:0" },
{ "\000\000\377\377\000\000\377\377\000\000\377\377\377\377\000\000", "0:ffff:0:ffff:0:ffff:ffff:0" },
{ "\377\377\377\377\000\000\377\377\000\000\377\377\377\377\000\000", "ffff:ffff:0:ffff:0:ffff:ffff:0" },
{ "\000\000\000\000\377\377\377\377\000\000\377\377\377\377\000\000", "::ffff:ffff:0:ffff:ffff:0" },
{ "\377\377\000\000\377\377\377\377\000\000\377\377\377\377\000\000", "ffff:0:ffff:ffff:0:ffff:ffff:0" },
{ "\000\000\377\377\377\377\377\377\000\000\377\377\377\377\000\000", "0:ffff:ffff:ffff:0:ffff:ffff:0" },
{ "\377\377\377\377\377\377\377\377\000\000\377\377\377\377\000\000", "ffff:ffff:ffff:ffff:0:ffff:ffff:0" },
{ "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\000\000", "::ffff:ffff:ffff:0" },
{ "\377\377\000\000\000\000\000\000\377\377\377\377\377\377\000\000", "ffff::ffff:ffff:ffff:0" },
{ "\000\000\377\377\000\000\000\000\377\377\377\377\377\377\000\000", "0:ffff::ffff:ffff:ffff:0" },
{ "\377\377\377\377\000\000\000\000\377\377\377\377\377\377\000\000", "ffff:ffff::ffff:ffff:ffff:0" },
{ "\000\000\000\000\377\377\000\000\377\377\377\377\377\377\000\000", "::ffff:0:ffff:ffff:ffff:0" },
{ "\377\377\000\000\377\377\000\000\377\377\377\377\377\377\000\000", "ffff:0:ffff:0:ffff:ffff:ffff:0" },
{ "\000\000\377\377\377\377\000\000\377\377\377\377\377\377\000\000", "0:ffff:ffff:0:ffff:ffff:ffff:0" },
{ "\377\377\377\377\377\377\000\000\377\377\377\377\377\377\000\000", "ffff:ffff:ffff:0:ffff:ffff:ffff:0" },
{ "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\000\000", "::ffff:ffff:ffff:ffff:0" },
{ "\377\377\000\000\000\000\377\377\377\377\377\377\377\377\000\000", "ffff::ffff:ffff:ffff:ffff:0" },
{ "\000\000\377\377\000\000\377\377\377\377\377\377\377\377\000\000", "0:ffff:0:ffff:ffff:ffff:ffff:0" },
{ "\377\377\377\377\000\000\377\377\377\377\377\377\377\377\000\000", "ffff:ffff:0:ffff:ffff:ffff:ffff:0" },
{ "\000\000\000\000\377\377\377\377\377\377\377\377\377\377\000\000", "::ffff:ffff:ffff:ffff:ffff:0" },
{ "\377\377\000\000\377\377\377\377\377\377\377\377\377\377\000\000", "ffff:0:ffff:ffff:ffff:ffff:ffff:0" },
{ "\000\000\377\377\377\377\377\377\377\377\377\377\377\377\000\000", "0:ffff:ffff:ffff:ffff:ffff:ffff:0" },
{ "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\000\000", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\377\377", "::ffff" },
{ "\377\377\000\000\000\000\000\000\000\000\000\000\000\000\377\377", "ffff::ffff" },
{ "\000\000\377\377\000\000\000\000\000\000\000\000\000\000\377\377", "0:ffff::ffff" },
{ "\377\377\377\377\000\000\000\000\000\000\000\000\000\000\377\377", "ffff:ffff::ffff" },
{ "\000\000\000\000\377\377\000\000\000\000\000\000\000\000\377\377", "0:0:ffff::ffff" },
{ "\377\377\000\000\377\377\000\000\000\000\000\000\000\000\377\377", "ffff:0:ffff::ffff" },
{ "\000\000\377\377\377\377\000\000\000\000\000\000\000\000\377\377", "0:ffff:ffff::ffff" },
{ "\377\377\377\377\377\377\000\000\000\000\000\000\000\000\377\377", "ffff:ffff:ffff::ffff" },
{ "\000\000\000\000\000\000\377\377\000\000\000\000\000\000\377\377", "::ffff:0:0:0:ffff" },
{ "\377\377\000\000\000\000\377\377\000\000\000\000\000\000\377\377", "ffff:0:0:ffff::ffff" },
{ "\000\000\377\377\000\000\377\377\000\000\000\000\000\000\377\377", "0:ffff:0:ffff::ffff" },
{ "\377\377\377\377\000\000\377\377\000\000\000\000\000\000\377\377", "ffff:ffff:0:ffff::ffff" },
{ "\000\000\000\000\377\377\377\377\000\000\000\000\000\000\377\377", "0:0:ffff:ffff::ffff" },
{ "\377\377\000\000\377\377\377\377\000\000\000\000\000\000\377\377", "ffff:0:ffff:ffff::ffff" },
{ "\000\000\377\377\377\377\377\377\000\000\000\000\000\000\377\377", "0:ffff:ffff:ffff::ffff" },
{ "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\377\377", "ffff:ffff:ffff:ffff::ffff" },
{ "\000\000\000\000\000\000\000\000\377\377\000\000\000\000\377\377", "::ffff:0:0:ffff" },
{ "\377\377\000\000\000\000\000\000\377\377\000\000\000\000\377\377", "ffff::ffff:0:0:ffff" },
{ "\000\000\377\377\000\000\000\000\377\377\000\000\000\000\377\377", "0:ffff::ffff:0:0:ffff" },
{ "\377\377\377\377\000\000\000\000\377\377\000\000\000\000\377\377", "ffff:ffff::ffff:0:0:ffff" },
{ "\000\000\000\000\377\377\000\000\377\377\000\000\000\000\377\377", "::ffff:0:ffff:0:0:ffff" },
{ "\377\377\000\000\377\377\000\000\377\377\000\000\000\000\377\377", "ffff:0:ffff:0:ffff::ffff" },
{ "\000\000\377\377\377\377\000\000\377\377\000\000\000\000\377\377", "0:ffff:ffff:0:ffff::ffff" },
{ "\377\377\377\377\377\377\000\000\377\377\000\000\000\000\377\377", "ffff:ffff:ffff:0:ffff::ffff" },
{ "\000\000\000\000\000\000\377\377\377\377\000\000\000\000\377\377", "::ffff:ffff:0:0:ffff" },
{ "\377\377\000\000\000\000\377\377\377\377\000\000\000\000\377\377", "ffff::ffff:ffff:0:0:ffff" },
{ "\000\000\377\377\000\000\377\377\377\377\000\000\000\000\377\377", "0:ffff:0:ffff:ffff::ffff" },
{ "\377\377\377\377\000\000\377\377\377\377\000\000\000\000\377\377", "ffff:ffff:0:ffff:ffff::ffff" },
{ "\000\000\000\000\377\377\377\377\377\377\000\000\000\000\377\377", "::ffff:ffff:ffff:0:0:ffff" },
{ "\377\377\000\000\377\377\377\377\377\377\000\000\000\000\377\377", "ffff:0:ffff:ffff:ffff::ffff" },
{ "\000\000\377\377\377\377\377\377\377\377\000\000\000\000\377\377", "0:ffff:ffff:ffff:ffff::ffff" },
{ "\377\377\377\377\377\377\377\377\377\377\000\000\000\000\377\377", "ffff:ffff:ffff:ffff:ffff::ffff" },
{ "\000\000\000\000\000\000\000\000\000\000\377\377\000\000\377\377", "0.0.255.255" }, /* inet_ntop incompatible: ::ffff:0.0.255.255 */
{ "\377\377\000\000\000\000\000\000\000\000\377\377\000\000\377\377", "ffff::ffff:0:ffff" },
{ "\000\000\377\377\000\000\000\000\000\000\377\377\000\000\377\377", "0:ffff::ffff:0:ffff" },
{ "\377\377\377\377\000\000\000\000\000\000\377\377\000\000\377\377", "ffff:ffff::ffff:0:ffff" },
{ "\000\000\000\000\377\377\000\000\000\000\377\377\000\000\377\377", "::ffff:0:0:ffff:0:ffff" },
{ "\377\377\000\000\377\377\000\000\000\000\377\377\000\000\377\377", "ffff:0:ffff::ffff:0:ffff" },
{ "\000\000\377\377\377\377\000\000\000\000\377\377\000\000\377\377", "0:ffff:ffff::ffff:0:ffff" },
{ "\377\377\377\377\377\377\000\000\000\000\377\377\000\000\377\377", "ffff:ffff:ffff::ffff:0:ffff" },
{ "\000\000\000\000\000\000\377\377\000\000\377\377\000\000\377\377", "::ffff:0:ffff:0:ffff" },
{ "\377\377\000\000\000\000\377\377\000\000\377\377\000\000\377\377", "ffff::ffff:0:ffff:0:ffff" },
{ "\000\000\377\377\000\000\377\377\000\000\377\377\000\000\377\377", "0:ffff:0:ffff:0:ffff:0:ffff" },
{ "\377\377\377\377\000\000\377\377\000\000\377\377\000\000\377\377", "ffff:ffff:0:ffff:0:ffff:0:ffff" },
{ "\000\000\000\000\377\377\377\377\000\000\377\377\000\000\377\377", "::ffff:ffff:0:ffff:0:ffff" },
{ "\377\377\000\000\377\377\377\377\000\000\377\377\000\000\377\377", "ffff:0:ffff:ffff:0:ffff:0:ffff" },
{ "\000\000\377\377\377\377\377\377\000\000\377\377\000\000\377\377", "0:ffff:ffff:ffff:0:ffff:0:ffff" },
{ "\377\377\377\377\377\377\377\377\000\000\377\377\000\000\377\377", "ffff:ffff:ffff:ffff:0:ffff:0:ffff" },
{ "\000\000\000\000\000\000\000\000\377\377\377\377\000\000\377\377", "::ffff:ffff:0:ffff" },
{ "\377\377\000\000\000\000\000\000\377\377\377\377\000\000\377\377", "ffff::ffff:ffff:0:ffff" },
{ "\000\000\377\377\000\000\000\000\377\377\377\377\000\000\377\377", "0:ffff::ffff:ffff:0:ffff" },
{ "\377\377\377\377\000\000\000\000\377\377\377\377\000\000\377\377", "ffff:ffff::ffff:ffff:0:ffff" },
{ "\000\000\000\000\377\377\000\000\377\377\377\377\000\000\377\377", "::ffff:0:ffff:ffff:0:ffff" },
{ "\377\377\000\000\377\377\000\000\377\377\377\377\000\000\377\377", "ffff:0:ffff:0:ffff:ffff:0:ffff" },
{ "\000\000\377\377\377\377\000\000\377\377\377\377\000\000\377\377", "0:ffff:ffff:0:ffff:ffff:0:ffff" },
{ "\377\377\377\377\377\377\000\000\377\377\377\377\000\000\377\377", "ffff:ffff:ffff:0:ffff:ffff:0:ffff" },
{ "\000\000\000\000\000\000\377\377\377\377\377\377\000\000\377\377", "::ffff:ffff:ffff:0:ffff" },
{ "\377\377\000\000\000\000\377\377\377\377\377\377\000\000\377\377", "ffff::ffff:ffff:ffff:0:ffff" },
{ "\000\000\377\377\000\000\377\377\377\377\377\377\000\000\377\377", "0:ffff:0:ffff:ffff:ffff:0:ffff" },
{ "\377\377\377\377\000\000\377\377\377\377\377\377\000\000\377\377", "ffff:ffff:0:ffff:ffff:ffff:0:ffff" },
{ "\000\000\000\000\377\377\377\377\377\377\377\377\000\000\377\377", "::ffff:ffff:ffff:ffff:0:ffff" },
{ "\377\377\000\000\377\377\377\377\377\377\377\377\000\000\377\377", "ffff:0:ffff:ffff:ffff:ffff:0:ffff" },
{ "\000\000\377\377\377\377\377\377\377\377\377\377\000\000\377\377", "0:ffff:ffff:ffff:ffff:ffff:0:ffff" },
{ "\377\377\377\377\377\377\377\377\377\377\377\377\000\000\377\377", "ffff:ffff:ffff:ffff:ffff:ffff:0:ffff" },
{ "\000\000\000\000\000\000\000\000\000\000\000\000\377\377\377\377", "::ffff:ffff" }, /* inet_ntop incompatible: ::255.255.255.255 */
{ "\377\377\000\000\000\000\000\000\000\000\000\000\377\377\377\377", "ffff::ffff:ffff" },
{ "\000\000\377\377\000\000\000\000\000\000\000\000\377\377\377\377", "0:ffff::ffff:ffff" },
{ "\377\377\377\377\000\000\000\000\000\000\000\000\377\377\377\377", "ffff:ffff::ffff:ffff" },
{ "\000\000\000\000\377\377\000\000\000\000\000\000\377\377\377\377", "0:0:ffff::ffff:ffff" },
{ "\377\377\000\000\377\377\000\000\000\000\000\000\377\377\377\377", "ffff:0:ffff::ffff:ffff" },
{ "\000\000\377\377\377\377\000\000\000\000\000\000\377\377\377\377", "0:ffff:ffff::ffff:ffff" },
{ "\377\377\377\377\377\377\000\000\000\000\000\000\377\377\377\377", "ffff:ffff:ffff::ffff:ffff" },
{ "\000\000\000\000\000\000\377\377\000\000\000\000\377\377\377\377", "::ffff:0:0:ffff:ffff" },
{ "\377\377\000\000\000\000\377\377\000\000\000\000\377\377\377\377", "ffff::ffff:0:0:ffff:ffff" },
{ "\000\000\377\377\000\000\377\377\000\000\000\000\377\377\377\377", "0:ffff:0:ffff::ffff:ffff" },
{ "\377\377\377\377\000\000\377\377\000\000\000\000\377\377\377\377", "ffff:ffff:0:ffff::ffff:ffff" },
{ "\000\000\000\000\377\377\377\377\000\000\000\000\377\377\377\377", "::ffff:ffff:0:0:ffff:ffff" },
{ "\377\377\000\000\377\377\377\377\000\000\000\000\377\377\377\377", "ffff:0:ffff:ffff::ffff:ffff" },
{ "\000\000\377\377\377\377\377\377\000\000\000\000\377\377\377\377", "0:ffff:ffff:ffff::ffff:ffff" },
{ "\377\377\377\377\377\377\377\377\000\000\000\000\377\377\377\377", "ffff:ffff:ffff:ffff::ffff:ffff" },
{ "\000\000\000\000\000\000\000\000\377\377\000\000\377\377\377\377", "::ffff:0:ffff:ffff" },
{ "\377\377\000\000\000\000\000\000\377\377\000\000\377\377\377\377", "ffff::ffff:0:ffff:ffff" },
{ "\000\000\377\377\000\000\000\000\377\377\000\000\377\377\377\377", "0:ffff::ffff:0:ffff:ffff" },
{ "\377\377\377\377\000\000\000\000\377\377\000\000\377\377\377\377", "ffff:ffff::ffff:0:ffff:ffff" },
{ "\000\000\000\000\377\377\000\000\377\377\000\000\377\377\377\377", "::ffff:0:ffff:0:ffff:ffff" },
{ "\377\377\000\000\377\377\000\000\377\377\000\000\377\377\377\377", "ffff:0:ffff:0:ffff:0:ffff:ffff" },
{ "\000\000\377\377\377\377\000\000\377\377\000\000\377\377\377\377", "0:ffff:ffff:0:ffff:0:ffff:ffff" },
{ "\377\377\377\377\377\377\000\000\377\377\000\000\377\377\377\377", "ffff:ffff:ffff:0:ffff:0:ffff:ffff" },
{ "\000\000\000\000\000\000\377\377\377\377\000\000\377\377\377\377", "::ffff:ffff:0:ffff:ffff" },
{ "\377\377\000\000\000\000\377\377\377\377\000\000\377\377\377\377", "ffff::ffff:ffff:0:ffff:ffff" },
{ "\000\000\377\377\000\000\377\377\377\377\000\000\377\377\377\377", "0:ffff:0:ffff:ffff:0:ffff:ffff" },
{ "\377\377\377\377\000\000\377\377\377\377\000\000\377\377\377\377", "ffff:ffff:0:ffff:ffff:0:ffff:ffff" },
{ "\000\000\000\000\377\377\377\377\377\377\000\000\377\377\377\377", "::ffff:ffff:ffff:0:ffff:ffff" },
{ "\377\377\000\000\377\377\377\377\377\377\000\000\377\377\377\377", "ffff:0:ffff:ffff:ffff:0:ffff:ffff" },
{ "\000\000\377\377\377\377\377\377\377\377\000\000\377\377\377\377", "0:ffff:ffff:ffff:ffff:0:ffff:ffff" },
{ "\377\377\377\377\377\377\377\377\377\377\000\000\377\377\377\377", "ffff:ffff:ffff:ffff:ffff:0:ffff:ffff" },
{ "\000\000\000\000\000\000\000\000\000\000\377\377\377\377\377\377", "255.255.255.255" }, /* inet_ntop incompatible: ::ffff:255.255.255.255 */
{ "\377\377\000\000\000\000\000\000\000\000\377\377\377\377\377\377", "ffff::ffff:ffff:ffff" },
{ "\000\000\377\377\000\000\000\000\000\000\377\377\377\377\377\377", "0:ffff::ffff:ffff:ffff" },
{ "\377\377\377\377\000\000\000\000\000\000\377\377\377\377\377\377", "ffff:ffff::ffff:ffff:ffff" },
{ "\000\000\000\000\377\377\000\000\000\000\377\377\377\377\377\377", "::ffff:0:0:ffff:ffff:ffff" },
{ "\377\377\000\000\377\377\000\000\000\000\377\377\377\377\377\377", "ffff:0:ffff::ffff:ffff:ffff" },
{ "\000\000\377\377\377\377\000\000\000\000\377\377\377\377\377\377", "0:ffff:ffff::ffff:ffff:ffff" },
{ "\377\377\377\377\377\377\000\000\000\000\377\377\377\377\377\377", "ffff:ffff:ffff::ffff:ffff:ffff" },
{ "\000\000\000\000\000\000\377\377\000\000\377\377\377\377\377\377", "::ffff:0:ffff:ffff:ffff" },
{ "\377\377\000\000\000\000\377\377\000\000\377\377\377\377\377\377", "ffff::ffff:0:ffff:ffff:ffff" },
{ "\000\000\377\377\000\000\377\377\000\000\377\377\377\377\377\377", "0:ffff:0:ffff:0:ffff:ffff:ffff" },
{ "\377\377\377\377\000\000\377\377\000\000\377\377\377\377\377\377", "ffff:ffff:0:ffff:0:ffff:ffff:ffff" },
{ "\000\000\000\000\377\377\377\377\000\000\377\377\377\377\377\377", "::ffff:ffff:0:ffff:ffff:ffff" },
{ "\377\377\000\000\377\377\377\377\000\000\377\377\377\377\377\377", "ffff:0:ffff:ffff:0:ffff:ffff:ffff" },
{ "\000\000\377\377\377\377\377\377\000\000\377\377\377\377\377\377", "0:ffff:ffff:ffff:0:ffff:ffff:ffff" },
{ "\377\377\377\377\377\377\377\377\000\000\377\377\377\377\377\377", "ffff:ffff:ffff:ffff:0:ffff:ffff:ffff" },
{ "\000\000\000\000\000\000\000\000\377\377\377\377\377\377\377\377", "::ffff:ffff:ffff:ffff" },
{ "\377\377\000\000\000\000\000\000\377\377\377\377\377\377\377\377", "ffff::ffff:ffff:ffff:ffff" },
{ "\000\000\377\377\000\000\000\000\377\377\377\377\377\377\377\377", "0:ffff::ffff:ffff:ffff:ffff" },
{ "\377\377\377\377\000\000\000\000\377\377\377\377\377\377\377\377", "ffff:ffff::ffff:ffff:ffff:ffff" },
{ "\000\000\000\000\377\377\000\000\377\377\377\377\377\377\377\377", "::ffff:0:ffff:ffff:ffff:ffff" },
{ "\377\377\000\000\377\377\000\000\377\377\377\377\377\377\377\377", "ffff:0:ffff:0:ffff:ffff:ffff:ffff" },
{ "\000\000\377\377\377\377\000\000\377\377\377\377\377\377\377\377", "0:ffff:ffff:0:ffff:ffff:ffff:ffff" },
{ "\377\377\377\377\377\377\000\000\377\377\377\377\377\377\377\377", "ffff:ffff:ffff:0:ffff:ffff:ffff:ffff" },
{ "\000\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377", "::ffff:ffff:ffff:ffff:ffff" },
{ "\377\377\000\000\000\000\377\377\377\377\377\377\377\377\377\377", "ffff::ffff:ffff:ffff:ffff:ffff" },
{ "\000\000\377\377\000\000\377\377\377\377\377\377\377\377\377\377", "0:ffff:0:ffff:ffff:ffff:ffff:ffff" },
{ "\377\377\377\377\000\000\377\377\377\377\377\377\377\377\377\377", "ffff:ffff:0:ffff:ffff:ffff:ffff:ffff" },
{ "\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\377", "::ffff:ffff:ffff:ffff:ffff:ffff" },
{ "\377\377\000\000\377\377\377\377\377\377\377\377\377\377\377\377", "ffff:0:ffff:ffff:ffff:ffff:ffff:ffff" },
{ "\000\000\377\377\377\377\377\377\377\377\377\377\377\377\377\377", "0:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
{ "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" },
{ 0, 0 }
};
static void test_compress(void) {
long long i, j;
char *buf0;
char buf1[IPTOSTR_LEN];
char buf2[IPTOSTR_LEN];
for (i = 0;testvectors[i].ip; ++i) {
for (j = 0; j < IPTOSTR_LEN; ++j) { buf1[j] = (char)0xff; buf2[j] = 0; }
buf0 = iptostr(0, (unsigned char *)testvectors[i].ip);
iptostr(buf1, (unsigned char *)testvectors[i].ip);
for (j = 0; j < IPTOSTR_LEN; ++j) {
buf2[j] = testvectors[i].ipstr[j];
if (!buf2[j]) break;
}
for (j = 0; j < IPTOSTR_LEN; ++j) {
if (buf0[j] != buf2[j]) fail("bad output");
if (buf1[j] != buf2[j]) fail("bad output");
}
}
}
static void test_bufferoverflow(void) {
char buf[IPTOSTR_LEN + 16];
long long i, j;
unsigned char ip[16];
char ch[2] = {0x00, (char)0xff };
if ((IPTOSTR_LEN) < sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")) fail("IPTOSTR_LEN too small");
for (i = 0; i < 16; ++i) ip[i] = 0x11;
for (j = 0; j < 2; ++j) {
for (i = 0; i < sizeof buf; ++i) buf[i] = ch[j];
iptostr(buf + 8, ip);
for (i = 0; i < 8; ++i) if (buf[i] != ch[j]) fail("iptostr writes before output");
for (i = 0; i < 8; ++i) if (buf[i + IPTOSTR_LEN + 8] != ch[j]) fail("iptostr writes after output");
}
}
int main(void) {
test_compress();
test_bufferoverflow();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/loadtest.c 0000664 0000000 0000000 00000001401 13227043065 0020274 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "open.h"
#include "randombytes.h"
#include "byte.h"
#include "load.h"
#include "writeall.h"
#define SPACELEN 1048577
unsigned char space1[SPACELEN];
unsigned char space2[SPACELEN];
static void test1(void) {
int fd;
fd = open_write("loadtest.data");
if (fd == -1) fail("failure");
randombytes(space1, sizeof space1);
if (writeall(fd, space1, sizeof space1) == -1) fail("failure");
close(fd);
if (load("loadtest.data", space2, sizeof space2) == -1) fail("failure");
if (!byte_isequal(space1, SPACELEN, space2)) fail("failure");
}
int main(void) {
test1();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/loginshelltest.c 0000664 0000000 0000000 00000002510 13227043065 0021517 0 ustar 00root root 0000000 0000000 /*
20140429
Jan Mojzis
Public domain.
*/
#include "str.h"
#include "byte.h"
#include "fail.h"
#include "loginshell.h"
static char buf[10];
static struct vector {
const char *in;
const char *out;
} vectors[] = {
{ "", "-" },
{ "/", "-" },
{ "//", "-" },
{ "///", "-" },
{ "////", "-" },
{ "/////", "-" },
{ "/a/b/c/d/", "-" },
{ "/a///d/", "-" },
{ "//b/c//", "-" },
{ "x/", "-" },
{ "x/x/xx/xxx/", "-" },
{ "sh", "-sh" },
{ "/bin/bash", "-bash" },
{ "///////dash", "-dash" },
{ "///////-ksh", "--ksh" },
/* truncation */
{ "longlongsh", "-longlong" },
{ 0, 0 }
};
static void testok(void) {
long long i, len;
for (i = 0; vectors[i].in; ++i) {
if (!loginshell(buf, sizeof buf, vectors[i].in)) fail("loginshell failure");
len = str_len(vectors[i].out);
if (str_len(buf) != len) fail("loginshell failure");
if (!byte_isequal(buf, len, vectors[i].out)) fail("loginshell failure");
}
}
static void testbad(void) {
if (loginshell(buf, -1, "")) fail("loginshell failure");
if (loginshell(buf, 0, "")) fail("loginshell failure");
if (loginshell(buf, 1, "")) fail("loginshell failure");
if (loginshell(buf, 1, "//")) fail("loginshell failure");
}
int main(void) {
testok();
testbad();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/logsystest.c 0000777 0000000 0000000 00000000000 13227043065 0023076 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/logtest.c 0000664 0000000 0000000 00000005037 13227043065 0020147 0 ustar 00root root 0000000 0000000 /*
20140319
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "byte.h"
#include "log.h"
static int readall(int fd, unsigned char *x, long long xlen) {
long long r;
long long len = 0;
while (xlen > 0) {
r = read(fd, x, xlen);
if (r == 0) break;
if (r <= 0) return -1;
x += r;
len += r;
xlen -= r;
}
return len;
}
static unsigned char buf[1024];
#define LINE_EXP "?????????\n????????????????????? !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????"
static void run(void (*op)(void)) {
pid_t pid;
int status, fromchild[2];
long long r, i, j;
if (pipe(fromchild) == -1) fail("pipe() failure");
pid = fork();
if (pid == -1) fail("fork() failure");
if (pid == 0) {
close(fromchild[0]);
if (dup2(fromchild[1], 2) == -1) _exit(111);
op();
_exit(0);
}
close(fromchild[1]);
r = readall(fromchild[0], buf, sizeof buf);
if (r == -1) fail("read() failure");
j = 0;
for (i = 0; i < r; ++i) {
if (buf[i] == ' ') ++j;
if (j == 3) break;
}
r -= i + 1;
byte_copy(buf, r, buf + i + 1);
for (r = r - 1; r > 0; --r) {
if (buf[r] == ' ') {
buf[r] = 0;
break;
}
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) fail("process killed");
if (WEXITSTATUS(status)) fail("process exited with status != 0");
if (r < sizeof(LINE_EXP) - 1) fail("failure");
if (!byte_isequal(buf, sizeof(LINE_EXP) - 1, LINE_EXP)) fail("failure");
}
static char line[256];
static void feed(void) {
unsigned long long i;
for (i = 0; i < 256; ++i) line[i] = (unsigned char)(i + 1);
}
static void test_fatal(void) {
log_init(0, "x", 1, 0);
log_d1("hidden");
log_i1("hidden");
log_w1("hidden");
log_f1(line);
}
static void test_warning(void) {
log_init(1, "x", 1, 0);
log_d1("hidden");
log_i1("hidden");
log_w1(line);
}
static void test_info(void) {
log_init(1, "x", 1, 0);
log_d1("hidden");
log_i1(line);
}
static void test_debug(void) {
log_init(2, "x", 1, 0);
log_d1(line);
}
int main(void) {
return 0;
feed();
run(test_fatal);
run(test_warning);
run(test_info);
run(test_debug);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/newenvtest.c 0000664 0000000 0000000 00000006657 13227043065 0020701 0 ustar 00root root 0000000 0000000 /*
20140129
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "run.h"
#include "fail.h"
#include "newenv.h"
#define SCRIPT1 "\
err='newenvtest: failed: newenv_env does not set correcty variable'\n\
[ x\"$AA1\" = x ] || ( echo $err; exit 111; ) \n\
[ x\"$AA3\" = x ] || ( echo $err; exit 111; ) \n\
[ x\"$BBB\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$CC1\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$CC3\" = x ] || ( echo $err; exit 111; ) \n\
[ x\"$DD1\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$DD3\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$EE1\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$FF1\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$YY1\" = xok ] || ( echo $err; exit 111; ) \n\
[ x\"$ZZ1\" = x ] || ( echo $err; exit 111; ) \n\
[ x\"$ZZ3\" = x ] || ( echo $err; exit 111; ) \n\
exit 0 \n\
"
static void test1(void) {
char *run[4];
long long i;
char buf[100];
/* normal setenv */
if (setenv("BBB", "ok", 1) == -1) fail("setenv failure");
if (!newenv_copyenv("BBB")) fail("newenv_copyenv failure");
/* normal env */
if (!newenv_env("CC1", "ok")) fail("newenv_env failure");
if (newenv_copyenv("CC3")) fail("newenv_copyenv failure");
/* replaced env */
if (!newenv_env("DD1", "failed")) fail("newenv_env failure");
if (!newenv_env("DD1", "ok")) fail("newenv_env failure");
if (setenv("DD3", "failed", 1) == -1) fail("setenv failure");
if (!newenv_copyenv("DD3")) fail("newenv_copyenv failure");
if (setenv("DD3", "ok", 1) == -1) fail("setenv failure");
if (!newenv_copyenv("DD3")) fail("newenv_copyenv failure");
/* setenv first */
if (setenv("EE1", "failed", 1) == -1) fail("setenv failure");
if (!newenv_env("EE1", "ok")) fail("newenv_env failure");
/* setenv last */
if (!newenv_env("FF1", "ok")) fail("newenv_env failure");
if (setenv("FF1", "failed", 1) == -1) fail("setenv failure");
/* replaced env - ok */
if (!newenv_env("YY1", "ok")) fail("newenv_env failure");
for (i = 0; i < 200; ++i) {
snprintf(buf, sizeof buf, "%lld", i);
newenv_env(buf, buf);
}
if (!newenv_env("YY1", "ok")) fail("newenv_env failure");
/* replaced env - overflow */
for (i = 0; i < 200; ++i) {
snprintf(buf, sizeof buf, "%lld", i);
newenv_env(buf, buf);
}
if (newenv_env("ZZ1", "failed")) fail("newenv_env failure");
if (setenv("ZZ3", "failed", 1) == -1) fail("setenv failure");
if (newenv_copyenv("ZZ3")) fail("newenv_copyenv failure");
run[0] = (char *)"/bin/sh";
run[1] = (char *)"-ec";
run[2] = (char *)SCRIPT1;
run[3] = (char *)0;
newenv_exec(*run, run);
fail("failure");
}
#define SCRIPT2 "\
err='newenvtest2: failed: environment should be empty'\n\
[ x\"$AAAA\" = x ] || ( echo $err; exit 111; ) \n\
exit 0 \n\
"
static void test2(void) {
char *run[4];
/* setenv */
if (setenv("AAAA", "failed", 1) == -1) fail("setenv failure");
run[0] = (char *)"/bin/sh";
run[1] = (char *)"-ec";
run[2] = (char *)SCRIPT2;
run[3] = 0;
newenv_exec(*run, run);
}
static void test3(void) {
for (;;) {
if (newenv_lowenv("XXX", "YYY")) break;
}
if (!newenv_env("XXX", "YYY")) fail("newenv_env failure");
}
static void testdummy(void) {
_exit(111);
}
int main(void) {
run_mustpass(test1);
run_mustpass(test2);
test3();
run_mustfail(testdummy);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/numtostrtest.c 0000664 0000000 0000000 00000022773 13227043065 0021267 0 ustar 00root root 0000000 0000000 /*
20140201
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "numtostr.h"
static long long int128max(void) {
long long x = 9223372036854775807LL;
x <<= 32;
x <<= 32;
x += 9223372036854775807LL;
x += 9223372036854775807LL;
x += 1;
return x;
}
static void test_bufferoverflow(void) {
char buf[NUMTOSTR_LEN + 16];
long long i, j;
char ch[2] = {0x00, (char)0xff };
long long llmaxnum;
long long llminnum;
long long numlen = sizeof(long long);
if (numlen == 16) {
llmaxnum = int128max();
llminnum = -llmaxnum - 1LL;
}
else if (numlen == 8) {
llmaxnum = 9223372036854775807LL;
llminnum = -llmaxnum - 1LL;
}
else {
fail("unsupported size for 'num'");
}
if ((NUMTOSTR_LEN) < sizeof("-170141183460469231731687303715884105728")) fail("NUMTOSTR_LEN too small");
for (j = 0; j < 2; ++j) {
for (i = 0; i < sizeof buf; ++i) buf[i] = ch[j];
numtostr(buf + 8, llminnum);
for (i = 0; i < 8; ++i) if (buf[i] != ch[j]) fail("numtostr() writes before output");
for (i = 0; i < 8; ++i) if (buf[i + NUMTOSTR_LEN + 8] != ch[j]) fail("numtostr() writes after output");
for (i = 0; i < sizeof buf; ++i) buf[i] = ch[j];
numtostr(buf + 8, llmaxnum);
for (i = 0; i < 8; ++i) if (buf[i] != ch[j]) fail("numtostr() writes before output");
for (i = 0; i < 8; ++i) if (buf[i + NUMTOSTR_LEN + 8] != ch[j]) fail("numtostr() writes after output");
}
}
static void test_minmax(void) {
const char *llmax;
const char *llmin;
long long llmaxnum;
long long llminnum;
char *x;
long long numlen = sizeof(long long);
if (numlen == 16) {
llmax = "170141183460469231731687303715884105727";
llmin = "-170141183460469231731687303715884105728";
llmaxnum = int128max();
llminnum = -llmaxnum - 1LL;
}
else if (numlen == 8) {
llmax = "9223372036854775807";
llmin = "-9223372036854775808";
llmaxnum = 9223372036854775807LL;
llminnum = -llmaxnum - 1LL;
}
else {
fail("unsupported size for 'num'");
}
x = numtostr(0, llmaxnum);
if (strcmp(x, llmax)) fail("numtostr() failure");
x = numtostr(0, llminnum);
if (strcmp(x, llmin)) fail("numtostr() failure");
}
struct vectors {
long long num;
const char *strnum;
} testvectors[] = {
{ -100, "-100" },
{ -99, "-99" },
{ -98, "-98" },
{ -97, "-97" },
{ -96, "-96" },
{ -95, "-95" },
{ -94, "-94" },
{ -93, "-93" },
{ -92, "-92" },
{ -91, "-91" },
{ -90, "-90" },
{ -89, "-89" },
{ -88, "-88" },
{ -87, "-87" },
{ -86, "-86" },
{ -85, "-85" },
{ -84, "-84" },
{ -83, "-83" },
{ -82, "-82" },
{ -81, "-81" },
{ -80, "-80" },
{ -79, "-79" },
{ -78, "-78" },
{ -77, "-77" },
{ -76, "-76" },
{ -75, "-75" },
{ -74, "-74" },
{ -73, "-73" },
{ -72, "-72" },
{ -71, "-71" },
{ -70, "-70" },
{ -69, "-69" },
{ -68, "-68" },
{ -67, "-67" },
{ -66, "-66" },
{ -65, "-65" },
{ -64, "-64" },
{ -63, "-63" },
{ -62, "-62" },
{ -61, "-61" },
{ -60, "-60" },
{ -59, "-59" },
{ -58, "-58" },
{ -57, "-57" },
{ -56, "-56" },
{ -55, "-55" },
{ -54, "-54" },
{ -53, "-53" },
{ -52, "-52" },
{ -51, "-51" },
{ -50, "-50" },
{ -49, "-49" },
{ -48, "-48" },
{ -47, "-47" },
{ -46, "-46" },
{ -45, "-45" },
{ -44, "-44" },
{ -43, "-43" },
{ -42, "-42" },
{ -41, "-41" },
{ -40, "-40" },
{ -39, "-39" },
{ -38, "-38" },
{ -37, "-37" },
{ -36, "-36" },
{ -35, "-35" },
{ -34, "-34" },
{ -33, "-33" },
{ -32, "-32" },
{ -31, "-31" },
{ -30, "-30" },
{ -29, "-29" },
{ -28, "-28" },
{ -27, "-27" },
{ -26, "-26" },
{ -25, "-25" },
{ -24, "-24" },
{ -23, "-23" },
{ -22, "-22" },
{ -21, "-21" },
{ -20, "-20" },
{ -19, "-19" },
{ -18, "-18" },
{ -17, "-17" },
{ -16, "-16" },
{ -15, "-15" },
{ -14, "-14" },
{ -13, "-13" },
{ -12, "-12" },
{ -11, "-11" },
{ -10, "-10" },
{ -9, "-9" },
{ -8, "-8" },
{ -7, "-7" },
{ -6, "-6" },
{ -5, "-5" },
{ -4, "-4" },
{ -3, "-3" },
{ -2, "-2" },
{ -1, "-1" },
{ 0, "0" },
{ 1, "1" },
{ 2, "2" },
{ 3, "3" },
{ 4, "4" },
{ 5, "5" },
{ 6, "6" },
{ 7, "7" },
{ 8, "8" },
{ 9, "9" },
{ 10, "10" },
{ 11, "11" },
{ 12, "12" },
{ 13, "13" },
{ 14, "14" },
{ 15, "15" },
{ 16, "16" },
{ 17, "17" },
{ 18, "18" },
{ 19, "19" },
{ 20, "20" },
{ 21, "21" },
{ 22, "22" },
{ 23, "23" },
{ 24, "24" },
{ 25, "25" },
{ 26, "26" },
{ 27, "27" },
{ 28, "28" },
{ 29, "29" },
{ 30, "30" },
{ 31, "31" },
{ 32, "32" },
{ 33, "33" },
{ 34, "34" },
{ 35, "35" },
{ 36, "36" },
{ 37, "37" },
{ 38, "38" },
{ 39, "39" },
{ 40, "40" },
{ 41, "41" },
{ 42, "42" },
{ 43, "43" },
{ 44, "44" },
{ 45, "45" },
{ 46, "46" },
{ 47, "47" },
{ 48, "48" },
{ 49, "49" },
{ 50, "50" },
{ 51, "51" },
{ 52, "52" },
{ 53, "53" },
{ 54, "54" },
{ 55, "55" },
{ 56, "56" },
{ 57, "57" },
{ 58, "58" },
{ 59, "59" },
{ 60, "60" },
{ 61, "61" },
{ 62, "62" },
{ 63, "63" },
{ 64, "64" },
{ 65, "65" },
{ 66, "66" },
{ 67, "67" },
{ 68, "68" },
{ 69, "69" },
{ 70, "70" },
{ 71, "71" },
{ 72, "72" },
{ 73, "73" },
{ 74, "74" },
{ 75, "75" },
{ 76, "76" },
{ 77, "77" },
{ 78, "78" },
{ 79, "79" },
{ 80, "80" },
{ 81, "81" },
{ 82, "82" },
{ 83, "83" },
{ 84, "84" },
{ 85, "85" },
{ 86, "86" },
{ 87, "87" },
{ 88, "88" },
{ 89, "89" },
{ 90, "90" },
{ 91, "91" },
{ 92, "92" },
{ 93, "93" },
{ 94, "94" },
{ 95, "95" },
{ 96, "96" },
{ 97, "97" },
{ 98, "98" },
{ 99, "99" },
{ 100, "100" },
{ -9223372036854775808LL, "-9223372036854775808" },
{ -9223372036854775807LL, "-9223372036854775807" },
{ -9223372036854775806LL, "-9223372036854775806" },
{ -9223372036854775805LL, "-9223372036854775805" },
{ -9223372036854775804LL, "-9223372036854775804" },
{ -9223372036854775803LL, "-9223372036854775803" },
{ -9223372036854775802LL, "-9223372036854775802" },
{ -9223372036854775801LL, "-9223372036854775801" },
{ -9223372036854775800LL, "-9223372036854775800" },
{ -9223372036854775799LL, "-9223372036854775799" },
{ -9223372036854775798LL, "-9223372036854775798" },
{ -9223372036854775797LL, "-9223372036854775797" },
{ -9223372036854775796LL, "-9223372036854775796" },
{ -9223372036854775795LL, "-9223372036854775795" },
{ -9223372036854775794LL, "-9223372036854775794" },
{ -9223372036854775793LL, "-9223372036854775793" },
{ -9223372036854775792LL, "-9223372036854775792" },
{ -9223372036854775791LL, "-9223372036854775791" },
{ -9223372036854775790LL, "-9223372036854775790" },
{ -9223372036854775789LL, "-9223372036854775789" },
{ -9223372036854775788LL, "-9223372036854775788" },
{ -9223372036854775787LL, "-9223372036854775787" },
{ -9223372036854775786LL, "-9223372036854775786" },
{ -9223372036854775785LL, "-9223372036854775785" },
{ -9223372036854775784LL, "-9223372036854775784" },
{ -9223372036854775783LL, "-9223372036854775783" },
{ -9223372036854775782LL, "-9223372036854775782" },
{ -9223372036854775781LL, "-9223372036854775781" },
{ 9223372036854775780LL, "9223372036854775780" },
{ 9223372036854775781LL, "9223372036854775781" },
{ 9223372036854775782LL, "9223372036854775782" },
{ 9223372036854775783LL, "9223372036854775783" },
{ 9223372036854775784LL, "9223372036854775784" },
{ 9223372036854775785LL, "9223372036854775785" },
{ 9223372036854775786LL, "9223372036854775786" },
{ 9223372036854775787LL, "9223372036854775787" },
{ 9223372036854775788LL, "9223372036854775788" },
{ 9223372036854775789LL, "9223372036854775789" },
{ 9223372036854775790LL, "9223372036854775790" },
{ 9223372036854775791LL, "9223372036854775791" },
{ 9223372036854775792LL, "9223372036854775792" },
{ 9223372036854775793LL, "9223372036854775793" },
{ 9223372036854775794LL, "9223372036854775794" },
{ 9223372036854775795LL, "9223372036854775795" },
{ 9223372036854775796LL, "9223372036854775796" },
{ 9223372036854775797LL, "9223372036854775797" },
{ 9223372036854775798LL, "9223372036854775798" },
{ 9223372036854775799LL, "9223372036854775799" },
{ 9223372036854775800LL, "9223372036854775800" },
{ 9223372036854775801LL, "9223372036854775801" },
{ 9223372036854775802LL, "9223372036854775802" },
{ 9223372036854775803LL, "9223372036854775803" },
{ 9223372036854775804LL, "9223372036854775804" },
{ 9223372036854775805LL, "9223372036854775805" },
{ 9223372036854775806LL, "9223372036854775806" },
{ 9223372036854775807LL, "9223372036854775807" },
{ 0, 0 }
};
static void test_vector(void) {
long long i;
char *x;
for (i = 0; testvectors[i].strnum; ++i) {
x = numtostr(0, testvectors[i].num);
if (strcmp(x, testvectors[i].strnum)) fail("numtostr() failure");
}
}
int main(void) {
test_bufferoverflow();
test_minmax();
test_vector();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/opentest.c 0000664 0000000 0000000 00000002260 13227043065 0020322 0 ustar 00root root 0000000 0000000 /*
20140410
Jan Mojzis
Public domain.
*/
#include
#include
#include "run.h"
#include "fail.h"
#include "open.h"
static void cat(void) {
char *catcmd[2] = { (char *)"cat", 0 };
execvp(*catcmd, catcmd);
}
/* test if close-on-exec works for open_read() */
static void test1(void) {
int fd;
close(0);
fd = open_read("opentest.c");
if (fd != 0) fail("unable to open opentest.c for reading");
cat();
}
/* test if close-on-exec works for open_write() */
static void test2(void) {
int fd;
close(1);
fd = open_write("opentest.data");
if (fd != 1) fail("unable to open opentest.data for writing");
cat();
}
/* test if close-on-exec works for open_pipe() */
static void test3(void) {
int fd, pi[2];
close(0);
close(1);
fd = open_pipe(pi);
if (fd == -1) fail("unable to open pipe");
if (pi[0] != 0) fail("unable to open pipe");
if (pi[1] != 1) fail("unable to open pipe");
cat();
}
/* dummy test */
static void testdummy(void) {
_exit(0);
}
int main(void) {
alarm(10);
run_mustfail(test1);
run_mustfail(test2);
run_mustfail(test3);
run_mustpass(testdummy);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/packet_authtest.c 0000777 0000000 0000000 00000000000 13227043065 0024046 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_channel_opentest.c 0000777 0000000 0000000 00000000000 13227043065 0025536 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_channel_recvtest.c 0000777 0000000 0000000 00000000000 13227043065 0025534 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_channel_requesttest.c 0000777 0000000 0000000 00000000000 13227043065 0026265 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_channel_sendtest.c 0000777 0000000 0000000 00000000000 13227043065 0025526 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_gettest.c 0000777 0000000 0000000 00000000000 13227043065 0023664 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_hellotest.c 0000777 0000000 0000000 00000000000 13227043065 0024210 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_kexdhtest.c 0000777 0000000 0000000 00000000000 13227043065 0024210 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_kextest.c 0000777 0000000 0000000 00000000000 13227043065 0023674 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_puttest.c 0000777 0000000 0000000 00000000000 13227043065 0023715 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_recvtest.c 0000777 0000000 0000000 00000000000 13227043065 0024044 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_sendtest.c 0000777 0000000 0000000 00000000000 13227043065 0024036 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packet_unimplementedtest.c 0000777 0000000 0000000 00000000000 13227043065 0025753 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/packetparsertest.c 0000664 0000000 0000000 00000011314 13227043065 0022045 0 ustar 00root root 0000000 0000000 /*
20140303
Jan Mojzis
Public domain.
*/
#include
#include "run.h"
#include "fail.h"
#include "byte.h"
#include "packetparser.h"
/*
checks packetparser_uint8(), packetparser_uint32() function
and packetparser_end called more than once
*/
static void test1(void) {
unsigned char buf[4];
crypto_uint8 ch;
crypto_uint32 u;
long long i, pos = 0;
byte_copy(buf, 4, "abcd");
/* uint8 */
pos = 0;
for (i = 0; i < sizeof buf; ++i) {
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
if (ch != buf[i]) fail("failure");
}
if (pos != sizeof buf) fail("failure");
/* uint32 */
pos = 0;
pos = packetparser_uint8(buf, sizeof buf, 0, &ch);
pos = packetparser_uint32(buf, sizeof buf, 0, &u);
if (pos != sizeof buf) fail("failure");
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
}
/* checks if packetparser_skip() skips 0 bytes */
static void test2(void) {
unsigned char buf[5];
crypto_uint8 ch;
crypto_uint32 len;
long long i, pos = 0;
for (i = 0; i < sizeof buf; ++i) buf[i] = 0;
pos = packetparser_uint32(buf, sizeof buf, pos, &len);
if (len != 0) fail("failure");
pos = packetparser_skip(buf, sizeof buf, pos, len);
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
if (ch) fail("failure");
if (pos != sizeof buf) fail("failure");
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
}
/* checks if packetparser_copy() accepts 0 bytes */
static void test4(void) {
unsigned char buf[5];
unsigned char buf2[6];
crypto_uint8 ch;
crypto_uint32 len;
long long i, pos = 0;
for (i = 0; i < sizeof buf; ++i) buf[i] = 0;
pos = packetparser_uint32(buf, sizeof buf, pos, &len);
if (len != 0) fail("failure");
pos = packetparser_copy(buf, sizeof buf, pos, buf2, len);
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
if (ch) fail("failure");
if (pos != sizeof buf) fail("failure");
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
pos = packetparser_end(buf, sizeof buf, pos);
}
/* packetparser_skip() overflow */
static void _test3a(void) {
unsigned char buf[5];
long long pos = 0;
pos = packetparser_skip(buf, sizeof buf, pos, 6);
}
static void _test3aa(void) {
unsigned char buf[5];
long long len, pos;
len = pos = 9223372036854775807LL;
pos = packetparser_skip(buf, len, pos, 1);
}
/* packetparser_uint32() overflow */
static void _test3b(void) {
unsigned char buf[3];
crypto_uint32 u;
long long pos = 0;
pos = packetparser_uint32(buf, sizeof buf, pos, &u);
}
static void _test3bb(void) {
unsigned char buf[4];
crypto_uint32 u;
long long len, pos;
len = pos = 9223372036854775807LL;
pos = packetparser_uint32(buf, len, pos, &u);
}
/* packetparser_uint8() overflow */
static void _test3c(void) {
unsigned char buf[3];
crypto_uint8 ch;
long long pos = 0;
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
pos = packetparser_uint8(buf, sizeof buf, pos, &ch);
}
static void _test3cc(void) {
unsigned char buf[3];
crypto_uint8 ch;
long long len, pos;
len = pos = 9223372036854775807LL;
pos = packetparser_uint8(buf, len, pos, &ch);
}
/* packetparser_copy() overflow */
static void _test3d(void) {
unsigned char buf1[10];
unsigned char buf2[11];
long long pos = 0;
pos = packetparser_copy(buf1, sizeof buf1, pos, buf2, sizeof buf2);
}
static void _test3dd(void) {
unsigned char buf1[10];
unsigned char buf2[10];
long long len, pos;
len = pos = 9223372036854775807LL;
pos = packetparser_copy(buf1, len, pos, buf2, sizeof buf2);
}
/* packetparser_end() failure */
static void _test3e(void) {
unsigned char buf[1];
packetparser_end(buf, 0, 1);
}
static void _test3ee(void) {
unsigned char buf[1];
long long pos = 9223372036854775807LL;
packetparser_end(buf, pos, pos);
}
static void test3(void) {
run_mustfail(_test3a);
run_mustfail(_test3aa);
run_mustfail(_test3b);
run_mustfail(_test3bb);
run_mustfail(_test3c);
run_mustfail(_test3cc);
run_mustfail(_test3d);
run_mustfail(_test3dd);
run_mustfail(_test3e);
run_mustfail(_test3ee);
}
/* dummy test */
static void testdummy(void) {
_exit(0);
}
int main(void) {
test1();
test2();
test3();
test4();
run_mustpass(testdummy);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/packettest.c 0000777 0000000 0000000 00000000000 13227043065 0023025 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/porttostrtest.c 0000664 0000000 0000000 00000004605 13227043065 0021446 0 ustar 00root root 0000000 0000000 /*
20140201
Jan Mojzis
Public domain.
*/
#include
#include
#include "fail.h"
#include "porttostr.h"
#include "crypto_uint16.h"
static void porttostr_bufferoverflow(void) {
char buf[PORTTOSTR_LEN + 16];
long long i, j;
unsigned char port[2] = { 5, 5 };
char ch[2] = {0x00, (char)0xff };
if ((PORTTOSTR_LEN) < sizeof("65535")) fail("PORTTOSTR_LEN too small");
for (j = 0; j < 2; ++j) {
for (i = 0; i < sizeof buf; ++i) buf[i] = ch[j];
porttostr(buf + 8, port);
for (i = 0; i < 8; ++i) if (buf[i] != ch[j]) fail("porttostr writes before output");
for (i = 0; i < 8; ++i) if (buf[i + PORTTOSTR_LEN + 8] != ch[j]) fail("porttostr writes after output");
}
}
static struct vectors {
const char *port;
const char *portstr;
} testvectors[] = {
{ "\377\377", "65535" },
{ "\000\000", "0\0\0\0\0" },
{ 0, 0 }
};
static void porttostr_testvectors(void) {
char *x, *y, *z;
long long i, j;
char buf[PORTTOSTR_LEN];
for (i = 0; testvectors[i].port; ++i) {
for (j = 0; j < sizeof buf; ++j) buf[j] = (char)0xff;
x = porttostr(buf, (unsigned char *)testvectors[i].port);
y = porttostr(0, (unsigned char *)testvectors[i].port);
z = (char *)testvectors[i].portstr;
for (j = 0; j < PORTTOSTR_LEN; ++j) {
if (buf[j] != z[j]) fail("bad output");
if (x[j] != z[j]) fail("bad output");
if (y[j] != z[j]) fail("bad output");
}
}
}
static void packport(unsigned char *y, crypto_uint16 x) {
y[1] = x & 255; x >>= 8;
y[0] = x & 255;
}
static void porttostr_full(void) {
long long i, j;
unsigned char port[2];
char *x, *y;
char buf[PORTTOSTR_LEN];
char buf2[PORTTOSTR_LEN + 10];
for (i = 0; i < 65536; ++i) {
for (j = 0; j < sizeof buf; ++j) buf[j] = (char)0xff;
for (j = 0; j < sizeof buf; ++j) buf2[j] = 0;
packport(port, i);
x = porttostr(buf, port);
y = porttostr(0, port);
snprintf(buf2, sizeof buf2, "%lld", i);
for (j = 0; j < PORTTOSTR_LEN; ++j) {
if (buf[j] != buf2[j]) fail("bad output");
if (x[j] != buf2[j]) fail("bad output");
if (y[j] != buf2[j]) fail("bad output");
}
}
}
int main(void) {
porttostr_bufferoverflow();
porttostr_testvectors();
porttostr_full();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/randommodtest.c 0000664 0000000 0000000 00000001054 13227043065 0021341 0 ustar 00root root 0000000 0000000 /*
20140416
Jan Mojzis
Public domain.
*/
#include
#include
#include "fail.h"
#include "randommod.h"
int main(void) {
long long i, r;
if (randommod(-1) != 0) fail("failure");
if (randommod(0) != 0) fail("failure");
if (randommod(1) != 0) fail("failure");
for (i = 2; i < 10; ++i) {
r = randommod(i);
if (r > i - 1 || r < 0) fail("failure");
}
for (i = 18014398509481984ULL; i < 18014398509481994ULL; ++i) {
if (randommod(i) == randommod(i)) fail("failure");
}
_exit(0);
}
tinyssh-20180201/tinyssh-tests/readalltest.c 0000664 0000000 0000000 00000001454 13227043065 0020771 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "open.h"
#include "randombytes.h"
#include "byte.h"
#include "readall.h"
#include "writeall.h"
#define SPACELEN 1048577
unsigned char space1[SPACELEN];
unsigned char space2[SPACELEN];
static void test1(void) {
int fd;
fd = open_write("readall.data");
if (fd == -1) fail("failure");
randombytes(space1, sizeof space1);
if (writeall(fd, space1, sizeof space1) == -1) fail("failure");
close(fd);
fd = open_read("readall.data");
if (readall(fd, space2, sizeof space2) == -1) fail("failure");
close(fd);
if (!byte_isequal(space1, SPACELEN, space2)) fail("failure");
}
int main(void) {
test1();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/run.h 0000664 0000000 0000000 00000006420 13227043065 0017274 0 ustar 00root root 0000000 0000000 #ifndef _RUN_H____
#define _RUN_H____
#include
#include
#include
#include
#include "fail.h"
static void _run_mustfail(const char *file, unsigned long long line, void (*op)(void)) {\
\
pid_t pid; \
int status; \
\
pid = fork(); \
if (pid == -1) fail_(file, line, "unable to fork"); \
\
if (pid == 0) { \
close(2); \
op(); \
_exit(0); \
} \
\
while (waitpid(pid, &status, 0) != pid) {}; \
if (!WIFEXITED(status)) fail_(file, line, "process killed"); \
if (!WEXITSTATUS(status)) fail_(file, line, "process exited with status = 0"); \
}
static void _run_mustpass(const char *file, unsigned long long line, void (*op)(void)) {\
\
pid_t pid; \
int status; \
\
pid = fork(); \
if (pid == -1) fail_(file, line, "unable to fork"); \
\
if (pid == 0) { \
close(2); \
op(); \
_exit(111); \
} \
\
while (waitpid(pid, &status, 0) != pid) {}; \
if (!WIFEXITED(status)) fail_(file, line, "process killed"); \
if (WEXITSTATUS(status)) fail_(file, line, "process exited with status != 0"); \
}
#define run_mustfail(x) _run_mustfail(__FILE__, __LINE__, (x));
#define run_mustpass(x) _run_mustpass(__FILE__, __LINE__, (x));
#endif
tinyssh-20180201/tinyssh-tests/savesynctest.c 0000664 0000000 0000000 00000001330 13227043065 0021211 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "randombytes.h"
#include "byte.h"
#include "load.h"
#include "savesync.h"
#include "writeall.h"
#define SPACELEN 1048577
unsigned char space1[SPACELEN];
unsigned char space2[SPACELEN];
static void test1(void) {
randombytes(space1, sizeof space1);
if (savesync("savesynctest.data", space1, sizeof space1) == -1) fail("savesync() failure");
if (load("savesynctest.data", space2, sizeof space2) == -1) fail("load() failure");
if (!byte_isequal(space1, SPACELEN, space2)) fail("load()/savesync() failure");
}
int main(void) {
test1();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/sshcrypto_cipher_aesctr128test.c 0000777 0000000 0000000 00000000000 13227043065 0026742 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_cipher_aesctr256test.c 0000777 0000000 0000000 00000000000 13227043065 0026744 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_cipher_aesctrtest.c 0000777 0000000 0000000 00000000000 13227043065 0026507 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_cipher_chachapolytest.c 0000777 0000000 0000000 00000000000 13227043065 0027341 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_ciphertest.c 0000777 0000000 0000000 00000000000 13227043065 0025146 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_kex_curve25519test.c 0000777 0000000 0000000 00000000000 13227043065 0026275 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_kex_nistp256test.c 0000777 0000000 0000000 00000000000 13227043065 0026135 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_kextest.c 0000777 0000000 0000000 00000000000 13227043065 0024463 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_key_ed25519test.c 0000777 0000000 0000000 00000000000 13227043065 0025542 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_key_nistp256ecdsatest.c 0000777 0000000 0000000 00000000000 13227043065 0027136 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcrypto_keytest.c 0000777 0000000 0000000 00000000000 13227043065 0024464 2emptytest.c ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh-tests/sshcryptotest.c 0000664 0000000 0000000 00000002100 13227043065 0021410 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include "sshcrypto.h"
/* grep "define sshcrypto_" source/tinyssh/sshcrypto.h | cut -d ' ' -f2 | while read x; do echo \#ifndef $x; echo error! ;echo \#endif; done */
#ifndef sshcrypto_dh_PUBLICKEYMAX
error!
#endif
#ifndef sshcrypto_dh_SECRETKEYMAX
error!
#endif
#ifndef sshcrypto_dh_MAX
error!
#endif
#ifndef sshcrypto_hash_MAX
error!
#endif
#ifndef sshcrypto_sign_PUBLICKEYMAX
error!
#endif
#ifndef sshcrypto_sign_SECRETKEYMAX
error!
#endif
#ifndef sshcrypto_sign_MAX
error!
#endif
#ifndef sshcrypto_sign_BASE64PUBLICKEYMAX
error!
#endif
#ifndef sshcrypto_sign_BASE64PUBLICKEYMIN
error!
#endif
#ifndef sshcrypto_cipher_KEYMAX
error!
#endif
int main(void) {
/* check sshcrypto_init() called called more than once */
sshcrypto_init();
sshcrypto_init();
/* check sshcrypto_purge() called called more than once */
sshcrypto_purge();
sshcrypto_purge();
/* check sshcrypto_init() called called more than once after sshcrypto_purge() */
sshcrypto_init();
sshcrypto_init();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/sshtest.c 0000664 0000000 0000000 00000003450 13227043065 0020160 0 ustar 00root root 0000000 0000000 /*
20140319
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "ssh.h"
/*
grep SSH_ * | sed 's/.*SSH_/SSH_/g' | cut -d ',' -f1 | cut -d ' ' -f1 | cut -d ')' -f1 | cut -d ':' -f1 | cut -d '"' -f1 | cut -d ';' -f1 | sort -u | grep -v 'SSH_TTY\|SSH_CONNECTION'| while read x; do echo \#ifndef $x; echo error! ;echo \#endif; done
*/
#ifndef SSH_MSG_CHANNEL_CLOSE
error!
#endif
#ifndef SSH_MSG_CHANNEL_DATA
error!
#endif
#ifndef SSH_MSG_CHANNEL_EOF
error!
#endif
#ifndef SSH_MSG_CHANNEL_EXTENDED_DATA
error!
#endif
#ifndef SSH_MSG_CHANNEL_OPEN
error!
#endif
#ifndef SSH_MSG_CHANNEL_OPEN_CONFIRMATION
error!
#endif
#ifndef SSH_MSG_CHANNEL_OPEN_FAILURE
error!
#endif
#ifndef SSH_MSG_CHANNEL_REQUEST
error!
#endif
#ifndef SSH_MSG_CHANNEL_SUCCESS
error!
#endif
#ifndef SSH_MSG_CHANNEL_WINDOW_ADJUST
error!
#endif
#ifndef SSH_MSG_DEBUG
error!
#endif
#ifndef SSH_MSG_DISCONNECT
error!
#endif
#ifndef SSH_MSG_IGNORE
error!
#endif
#ifndef SSH_MSG_KEXDH_INIT
error!
#endif
#ifndef SSH_MSG_KEXDH_REPLY
error!
#endif
#ifndef SSH_MSG_KEXINIT
error!
#endif
#ifndef SSH_MSG_NEWKEYS
error!
#endif
#ifndef SSH_MSG_SERVICE_ACCEPT
error!
#endif
#ifndef SSH_MSG_SERVICE_REQUEST
error!
#endif
#ifndef SSH_MSG_UNIMPLEMENTED
error!
#endif
#ifndef SSH_MSG_USERAUTH_FAILURE
error!
#endif
#ifndef SSH_MSG_USERAUTH_PK_OK
error!
#endif
#ifndef SSH_MSG_USERAUTH_REQUEST
error!
#endif
#ifndef SSH_MSG_USERAUTH_SUCCESS
error!
#endif
#ifndef SSH_OPEN_ADMINISTRATIVELY_PROHIBITED
error!
#endif
int main(void) {
if (strcmp(ssh_sigstr(SIGTERM), "TERM")) fail("failure")
if (strcmp(ssh_sigstrlong(SIGTERM), "SIGTERM (termination)")) fail("failure")
if (strcmp(ssh_sigstr(-1), "UNKNOWN")) fail("failure")
if (strcmp(ssh_sigstrlong(-1), "UNKNOWN SIGNAL")) fail("failure")
_exit(0);
}
tinyssh-20180201/tinyssh-tests/stringparsertest.c 0000664 0000000 0000000 00000004022 13227043065 0022102 0 ustar 00root root 0000000 0000000 /*
20140204
Jan Mojzis
Public domain.
*/
#include
#include
#include "fail.h"
#include "str.h"
#include "byte.h"
#include "stringparser.h"
static struct vectors {
const char *buf;
} testvectors[] = {
{ "aaa,bb,c" },
{ ",aaa,bb,c" },
{ "aaa,bb,c," },
{ "aaa,,,,bb,,,,c" },
{ ",,,aaa,,,,bb,,,,c" },
{ ",,,aaa,,,,bb,,,,c,,," },
{ "aaa,bb,,c," },
{ 0 }
};
static void stringstringparser_test1(void) {
unsigned char *buf;
long long i, pos = 0;
unsigned char *x;
long long xlen, len;
for (i = 0; testvectors[i].buf; ++i) {
buf = (unsigned char *)testvectors[i].buf;
len = str_len(testvectors[i].buf);
pos = 0;
pos = stringparser(buf, len, pos, &x, &xlen); if (!pos) fail("parsing error");
if (xlen != 3) fail("parsing error");
if (!byte_isequal(x, xlen, "aaa")) fail("parsing error");
pos = stringparser(buf, len, pos, &x, &xlen); if (!pos) fail("parsing error");
if (xlen != 2) fail("parsing error");
if (!byte_isequal(x, xlen, "bb")) fail("parsing error");
pos = stringparser(buf, len, pos, &x, &xlen); if (!pos) fail("parsing error");
if (xlen != 1) fail("parsing error");
if (!byte_isequal(x, xlen, "c")) fail("parsing error");
if (stringparser(buf, len, pos, &x, &xlen)) fail("overflow");
}
}
static void stringstringparser_test2(void) {
unsigned char *buf;
long long pos = 0;
unsigned char *x;
long long xlen, len;
buf = (unsigned char *)"";
len = str_len((char *)buf);
pos = 0;
if (stringparser(buf, len, pos, &x, &xlen)) fail("overflow");
buf = (unsigned char *)",";
len = str_len((char *)buf);
pos = 0;
if (stringparser(buf, len, pos, &x, &xlen)) fail("overflow");
buf = (unsigned char *)",,,,,,,,";
len = str_len((char *)buf);
pos = 0;
if (stringparser(buf, len, pos, &x, &xlen)) fail("overflow");
}
int main(void) {
stringstringparser_test1();
stringstringparser_test2();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/strtest.c 0000664 0000000 0000000 00000005635 13227043065 0020202 0 ustar 00root root 0000000 0000000 /*
20130610
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "str.h"
static void test_len(void) {
if (str_len("") != 0) fail("str_len return's bad length");
if (str_len("\0ahoj") != 0) fail("str_len return's bad length");
if (str_len("a\0hoj") != 1) fail("str_len return's bad length");
if (str_len("ahoj\0") != 4) fail("str_len return's bad length");
if (str_len("ahoj") != 4) fail("str_len return's bad length");
}
static void test_start(void) {
if (!str_start("","")) fail("str_start failure");
if (!str_start("x","")) fail("str_start failure");
if (str_start("","x")) fail("str_start failure");
if (!str_start("ahojx","ahoj")) fail("str_start failure");
if (str_start("ahoj","ahojx")) fail("str_start failure");
}
static void test_equal(void) {
#ifdef TODO
/* equal */
if (!str_equal("","")) fail("str_equal failure");
if (!str_equal("\0","\0")) fail("str_equal failure");
if (!str_equal("","\0")) fail("str_equal failure");
if (!str_equal("\0","")) fail("str_equal failure");
if (!str_equal("ahoj","ahoj")) fail("str_equal failure");
if (!str_equal("ahoj","ahoj\0")) fail("str_equal failure");
if (!str_equal("ahoj\0","ahoj")) fail("str_equal failure");
/* not equal */
if (str_equal("x","")) fail("str_equal failure");
if (str_equal("","x")) fail("str_equal failure");
if (str_equal("xx","x")) fail("str_equal failure");
if (str_equal("x","xx")) fail("str_equal failure");
if (str_equal("ahojx","ahoj")) fail("str_equal failure");
if (str_equal("ahoj","ahojx")) fail("str_equal failure");
#endif
}
static void test_equaln(void) {
char buf[5];
/* not equal */
if (str_equaln(buf, 0, "a")) fail("str_equaln failure");
if (str_equaln("ahoj", 4, "aho")) fail("str_equaln failure");
if (str_equaln("ahoj", 4, "ahoj!")) fail("str_equaln failure");
if (str_equaln("ahoj", 4, "ahox")) fail("str_equaln failure");
/* equal */
if (!str_equaln(buf, 0, "")) fail("str_equaln failure");
if (strncmp(buf, "", 0)) fail("strncmp failure");
if (!str_equaln("ahoj", 4, "ahoj")) fail("str_equaln failure");
if (strncmp("ahoj", "ahoj", 4)) fail("strncmp failure");
}
static void test_copyn(void) {
char buf[5];
/* bad */
if (str_copyn(buf, 0, "")) fail("str_copyn failure");
if (str_copyn(buf, 1, "a")) fail("str_copyn failure");
if (str_copyn(buf, sizeof buf, "ahoj!")) fail("str_copyn failure");
if (strcmp(buf, "ahoj")) fail("str_copyn failure");
/* ok */
if (!str_copyn(buf, sizeof buf, "ahoj")) fail("str_copyn failure");
if (strcmp(buf, "ahoj")) fail("str_copyn failure");
if (!str_copyn(buf, sizeof buf, "")) fail("str_copyn failure");
if (strcmp(buf, "")) fail("str_copyn failure");
}
int main(void) {
test_len();
test_start();
test_equal();
test_equaln();
test_copyn();
_exit(0);
}
tinyssh-20180201/tinyssh-tests/subprocess_authtest.c 0000664 0000000 0000000 00000044701 13227043065 0022600 0 ustar 00root root 0000000 0000000 /*
20140321
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include
#include "fail.h"
#include "dropuidgid.h"
#include "savesync.h"
#include "open.h"
#include "global.h"
#include "byte.h"
#include "str.h"
#include "log.h"
#include "subprocess.h"
static int readall(int fd, unsigned char *x, long long xlen) {
long long r;
long long len = 0;
while (xlen > 0) {
r = read(fd, x, xlen);
if (r == 0) break;
if (r <= 0) return -1;
x += r;
len += r;
xlen -= r;
}
return len;
}
static unsigned char logbuf[1024];
static char globalpath[4096];
static long long globalpathlen;
static void run(void (*op)(void), const char *exp) {
pid_t pid;
int status, fromchild[2];
long long r, i;
if (pipe(fromchild) == -1) fail("pipe() failure");
pid = fork();
if (pid == -1) fail("fork() failure");
if (pid == 0) {
close(fromchild[0]);
if (dup2(fromchild[1], 2) == -1) _exit(111);
op();
_exit(0);
}
close(fromchild[1]);
r = readall(fromchild[0], logbuf, sizeof logbuf);
if (r == -1) fail("read() failure");
for (i = 0; i < r; ++i) if (logbuf[i] == '\n') break;
r = i;
for (i = 0; i < r; ++i) if (logbuf[i] == '/') break;
r -= i;
byte_copy(logbuf, r, logbuf + i);
/* fprintf(stderr, "xxx: %s\n", logbuf); fflush(stderr); */
if (r < globalpathlen + 1) fail("log error");
if (!byte_isequal(globalpath, globalpathlen, logbuf)) fail("log error");
r -= globalpathlen + 1;
byte_copy(logbuf, r, logbuf + globalpathlen + 1);
for (i = 0; i < r; ++i) if (logbuf[i] == '{') break;
r = i;
logbuf[r] = 0;
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) fail("process killed");
if (WEXITSTATUS(status)) fail("process exited with status != 0");
i = str_len(exp);
if (r != i) fail("failed");
if (!byte_isequal(logbuf, i, exp)) fail("failed");
}
static int run2(void (*op)(void)) {
pid_t pid;
int status;
pid = fork();
if (pid == -1) return -1;
if (pid == 0) {
close(2);
op();
_exit(0);
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
static void test_usernotexist(void) {
const char *account = "21ecdfcc00506bc138d004a0c04139442e24b02ac456bf05601f1e8f645baa2";
const char *keyname = "ssh-ed25519";
const char *key = "key1";
if (subprocess_auth(account, keyname, key) == 0) fail("subprocess_auth() failure");
}
static void test_usertoolong(void) {
const char *account = "21ecdfcc00506bc138d004a0c04139442e24b02ac456bf05601f1e8f645baa25";
const char *keyname = "ssh-ed25519";
const char *key = "key1";
if (subprocess_auth(account, keyname, key) == 0) fail("subprocess_auth() failure");
}
static void test_keytooshort(void) {
const char *account = "21ecdfcc00506bc138d004a0c04139442e24b02ac456bf05601f1e8f645baa2";
const char *keyname = "ssh-ed25519";
const char *key = "AAAAC3NzaC1lZDI1NTE5AAAAICj44ZR+OCpjuLbOwqys2MKHroSvAWGgEE1o7yq+UVe";
if (subprocess_auth(account, keyname, key) == 0) fail("subprocess_auth() failure");
}
static struct passwd *pw;
static void droproot(void) {
uid_t uid;
uid = geteuid();
if (uid == 0) {
pw = getpwnam("nobody");
if (!pw) fail("getpwnam() failure")
if (!dropuidgid(pw->pw_name, pw->pw_uid, pw->pw_gid)) fail("dropuidgid() failure");
}
else {
pw = getpwuid(uid);
if (!pw) fail("getpwuid() failure")
}
if (geteuid() == 0) fail("dropuidgid() failure");
}
static void test_root(void) {
const char *account = "root";
const char *keyname = "ssh-ed25519";
const char *key = "key1";
if (subprocess_auth(account, keyname, key) == 0) fail("subprocess_auth() failure");
}
#define path global_bspace2 /* reusing global buffer */
#define buf global_bspace1 /* reusing global buffer */
static void test_path_authorizedkeys_ne(void) {
umask(000);
if (mkdir("d1", 0755) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_authorizedkeys_fifo(void) {
umask(000);
if (mkdir("d1", 0755) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkfifo("authorized_keys", 0644) == -1) fail("mkfifo() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_authorizedkeys_perm1(void) {
umask(000);
if (mkdir("d1", 0755) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (chmod("authorized_keys", 0777) == -1) fail("chmod() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_authorizedkeys_perm2(void) {
umask(000);
if (mkdir("d1", 0755) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (chmod("authorized_keys", 0775) == -1) fail("chmod() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_authorizedkeys_perm3(void) {
umask(000);
if (mkdir("d1", 0755) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (chmod("authorized_keys", 0757) == -1) fail("chmod() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir_perm1(void) {
umask(000);
if (mkdir("d1", 0775) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir_perm2(void) {
umask(000);
if (mkdir("d1", 0777) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir_perm3(void) {
umask(000);
if (mkdir("d1", 0757) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir2_perm1(void) {
umask(000);
if (mkdir("d1", 0777) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0777) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir2_perm2(void) {
umask(000);
if (mkdir("d1", 0777) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0775) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir2_perm3(void) {
umask(000);
if (mkdir("d1", 0777) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0757) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir3_perm1(void) {
umask(000);
if (mkdir("d1", 0777) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0755) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir3_perm2(void) {
umask(000);
if (mkdir("d1", 0775) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0755) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir3_perm3(void) {
umask(000);
if (mkdir("d1", 0757) == -1) fail("mkdir() failure");
if (chdir("d1") == -1) fail("chdir() failure");
if (mkdir("d2", 0755) == -1) fail("mkdir() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d2") == -1) fail("rmdir() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_path_dir_symlink(void) {
umask(000);
if (mkdir("d1", 0775) == -1) fail("mkdir() failure");
if (symlink("d1", "d2") == -1) fail("symlink() failure");
if (chdir("d2") == -1) fail("chdir() failure");
if (savesync("authorized_keys", "", 0) == -1) fail("savesync() failure");
if (subprocess_auth_checkpath_((char *)path, sizeof path, geteuid())) fail("subprocess_auth_checkpath_() failure");
if (unlink("authorized_keys") == -1) fail("unlink() failure");
if (chdir("..") == -1) fail("chdir() failure");
if (unlink("d2") == -1) fail("rmdir() failure");
if (rmdir("d1") == -1) fail("rmdir() failure");
}
static void test_authorizedkeys_ne(void) {
const char *keyname = "";
const char *key = "";
if (!getcwd((char *)path, sizeof path)) fail("getcwd() failure");
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
}
#define AUTHORIZED_KEYS "\
\n\
\n\
###\n\
\n\
\n\
\n\
\n\
ssh-rsa AAAAB3Nza...LiPk== user@example.net\n\
from=\"*.sales.example.net,!pc.sales.example.net\" ssh-rsa AAAAB2...19Q== john@example.net\n\
command=\"dump /home\",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net\n\
permitopen=\"192.0.2.1:80\",permitopen=\"192.0.2.2:25\" ssh-dss AAAAB5...21S==\n\
tunnel=\"0\",command=\"sh /etc/netstart tun0\" ssh-rsa AAAA...== jane@example.net\n\
ecdsa-sha2-nistp256 ecdsakey1 apache@apache\n\
\n\
\n\
ssh-ed25519 badkey1 note - extra ' ' before keyname\n\
ssh-ed25519 badkey2. note - '.' as separator\n\
ssh-ed255191 badkey3\n\
ssh-ed25519\tbadkey4\n\
ssh-ed25519 badkey5\n\
\n\
\n\
ssh-ed25519 key1\n\
ssh-ed25519 key2\r\n\
ssh-ed25519 key3 note - ' ' as separator\n\
ssh-ed25519 key4\0note - '\0' as separator\n\
ssh-ed25519 key5 note - last line"
static void authorizedkeys(void) {
if (savesync("authorized_keys", AUTHORIZED_KEYS, sizeof(AUTHORIZED_KEYS) - 1) == -1) fail("savesync() failure");
}
static void test_authorizedkeys_ok(void) {
const char *keyname, *key;
if (!getcwd((char *)path, sizeof path)) fail("getcwd() failure");
keyname = "ssh-ed25519"; key = "key1";
if (!subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "key2";
if (!subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "key3";
if (!subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "key4";
if (!subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "key5";
if (!subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
}
static void test_authorizedkeys_bad(void) {
const char *keyname, *key;
if (!getcwd((char *)path, sizeof path)) fail("getcwd() failure");
keyname = "ssh-ed25519"; key = "badkey1";
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "badkey2";
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "badkey3";
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "badkey4";
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
keyname = "ssh-ed25519"; key = "badkey5";
if (subprocess_auth_authorizedkeys_((char *)keyname, (char *)key, (char *)path, (char *)buf, sizeof buf))
fail("subprocess_auth_authorizedkeys_() failure");
}
int main(void) {
if (!getcwd(globalpath, sizeof globalpath)) fail("getcwd() failure");
globalpathlen = str_len(globalpath);
log_init(2, "xxx", 1, 0);
run(test_path_authorizedkeys_ne, "d1/authorized_keys (file does not exist)");
run(test_path_authorizedkeys_fifo, "d1/authorized_keys (access denied)");
run(test_path_authorizedkeys_perm1, "d1/authorized_keys (access denied)");
run(test_path_authorizedkeys_perm2, "d1/authorized_keys (access denied)");
run(test_path_authorizedkeys_perm3, "d1/authorized_keys (access denied)");
run(test_path_dir_perm1, "d1/ (access denied)");
run(test_path_dir_perm2, "d1/ (access denied)");
run(test_path_dir_perm3, "d1/ (access denied)");
run(test_path_dir2_perm1, "d1/d2/ (access denied)");
run(test_path_dir2_perm2, "d1/d2/ (access denied)");
run(test_path_dir2_perm3, "d1/d2/ (access denied)");
run(test_path_dir3_perm1, "d1/ (access denied)");
run(test_path_dir3_perm2, "d1/ (access denied)");
run(test_path_dir3_perm3, "d1/ (access denied)");
run(test_path_dir_symlink, "d1/ (access denied)");
log_init(-1, "xxx", 1, 0);
test_authorizedkeys_ne();
authorizedkeys();
test_authorizedkeys_ok();
test_authorizedkeys_bad();
droproot();
run2(test_usernotexist);
run2(test_usertoolong);
run2(test_keytooshort);
run2(test_root);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/subprocess_signtest.c 0000664 0000000 0000000 00000005702 13227043065 0022575 0 ustar 00root root 0000000 0000000 /*
20140321
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "fail.h"
#include "savesync.h"
#include "sshcrypto.h"
#include "open.h"
#include "purge.h"
#include "byte.h"
#include "randommod.h"
#include "crypto_uint32.h"
#include "subprocess.h"
unsigned char sh[sshcrypto_hash_MAX];
unsigned char sm[sshcrypto_sign_MAX + sshcrypto_hash_MAX];
unsigned char m[sshcrypto_sign_MAX + sshcrypto_hash_MAX];
unsigned long long mlen;
unsigned char sk[sshcrypto_sign_SECRETKEYMAX];
const char *keydir = "./keydir";
static void create(const char *fn, const unsigned char *x, long long xlen) {
if (savesync(fn, x, xlen) == -1) fail("unable to create test directory");
}
int main(void) {
long long i, j;
int fd;
fd = open_cwd();
if (fd == -1) fail("open_cwd() failure");
/* make keydir */
umask(022);
if (mkdir(keydir, 0755) == -1) fail("unable to create test directory");
if (chdir(keydir) == -1) fail("unable to chdir to directory");
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (sshcrypto_keys[i].sign_keypair(sshcrypto_keys[i].sign_publickey, sk) != 0) fail("unable to generate key pair");
umask(022);
create(sshcrypto_keys[i].sign_publickeyfilename, sshcrypto_keys[i].sign_publickey, sshcrypto_keys[i].sign_publickeybytes);
umask(077);
create(sshcrypto_keys[i].sign_secretkeyfilename, sk, sshcrypto_keys[i].sign_secretkeybytes);
purge(sk, sizeof sk);
}
if (fchdir(fd) == -1) fail("fchdir() failure");
for (i = 0; sshcrypto_keys[i].name; ++i) {
/* set globals */
sshcrypto_key_name = sshcrypto_keys[i].name;
sshcrypto_sign = sshcrypto_keys[i].sign;
sshcrypto_sign_publickey = sshcrypto_keys[i].sign_publickey;
sshcrypto_sign_publickeybytes = sshcrypto_keys[i].sign_publickeybytes;
sshcrypto_sign_secretkeybytes = sshcrypto_keys[i].sign_secretkeybytes;
sshcrypto_sign_bytes = sshcrypto_keys[i].sign_bytes;
sshcrypto_sign_secretkeyfilename = sshcrypto_keys[i].sign_secretkeyfilename;
sshcrypto_hash_bytes = 64;
for (j = 0; j < 100; ++j) {
/* sign */
purge(sh, sizeof sh);
if (subprocess_sign(sm, sshcrypto_sign_bytes, keydir, sh, sshcrypto_hash_bytes) != 0)
fail("unable to sign");
byte_copy(sm + sshcrypto_sign_bytes, sshcrypto_hash_bytes, sh);
/* verify */
if (sshcrypto_keys[i].sign_open(m, &mlen, sm, sshcrypto_hash_bytes + sshcrypto_sign_bytes, sshcrypto_keys[i].sign_publickey) != 0)
fail("unable to open signed box");
#if 0
/* forgery */
sm[randommod(sshcrypto_sign_bytes + sshcrypto_hash_bytes)] += 1 + randommod(255);
if (sshcrypto_keys[i].sign_open(m, &mlen, sm, sshcrypto_hash_bytes + sshcrypto_sign_bytes, sshcrypto_keys[i].sign_publickey) == 0)
fail("forgery");
#endif
}
}
_exit(0);
}
tinyssh-20180201/tinyssh-tests/trymlocktest.c 0000664 0000000 0000000 00000000323 13227043065 0021223 0 ustar 00root root 0000000 0000000 /*
20140303
Jan Mojzis
Public domain.
*/
#include
#include "trymlock.h"
unsigned char buf[100];
int main(void) {
long long i;
for (i = 81; i < 100; ++i) trymlock(buf, i);
_exit(0);
}
tinyssh-20180201/tinyssh-tests/writealltest.c 0000664 0000000 0000000 00000001411 13227043065 0021201 0 ustar 00root root 0000000 0000000 /*
20140417
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include "fail.h"
#include "open.h"
#include "randombytes.h"
#include "byte.h"
#include "load.h"
#include "writeall.h"
#define SPACELEN 1048577
unsigned char space1[SPACELEN];
unsigned char space2[SPACELEN];
static void test1(void) {
int fd;
fd = open_write("writealltest.data");
if (fd == -1) fail("failure");
randombytes(space1, sizeof space1);
if (writeall(fd, space1, sizeof space1) == -1) fail("failure");
close(fd);
if (load("writealltest.data", space2, sizeof space2) == -1) fail("failure");
if (!byte_isequal(space1, SPACELEN, space2)) fail("failure");
}
int main(void) {
test1();
_exit(0);
}
tinyssh-20180201/tinyssh/ 0000775 0000000 0000000 00000000000 13227043065 0015155 5 ustar 00root root 0000000 0000000 tinyssh-20180201/tinyssh/LIBS 0000664 0000000 0000000 00000001554 13227043065 0015636 0 ustar 00root root 0000000 0000000 blocking.o
buf.o
byte.o
channel_drop.o
channel_fork.o
channel_forkpty.o
channel.o
channel_subsystem.o
coe.o
connectioninfo.o
die.o
dropuidgid.o
env.o
e.o
getln.o
global.o
iptostr.o
load.o
loginshell.o
log.o
logsys.o
newenv.o
numtostr.o
open.o
packet_auth.o
packet_channel_open.o
packet_channel_recv.o
packet_channel_request.o
packet_channel_send.o
packet_get.o
packet_hello.o
packet_kexdh.o
packet_kex.o
packet.o
packetparser.o
packet_put.o
packet_recv.o
packet_send.o
packet_unimplemented.o
porttostr.o
randommod.o
readall.o
savesync.o
sshcrypto_cipher_aesctr256.o
sshcrypto_cipher_aesctr.o
sshcrypto_cipher_chachapoly.o
sshcrypto_cipher.o
sshcrypto_kex_curve25519.o
sshcrypto_kex_nistp256.o
sshcrypto_kex.o
sshcrypto_key_ed25519.o
sshcrypto_key_nistp256ecdsa.o
sshcrypto_key.o
sshcrypto.o
ssh.o
stringparser.o
str.o
subprocess_auth.o
subprocess_sign.o
trymlock.o
writeall.o
tinyssh-20180201/tinyssh/SOURCES 0000664 0000000 0000000 00000001436 13227043065 0016227 0 ustar 00root root 0000000 0000000 blocking
buf
byte
channel
channel_drop
channel_fork
channel_forkpty
channel_subsystem
coe
connectioninfo
die
dropuidgid
e
env
getln
global
iptostr
load
log
loginshell
logsys
newenv
numtostr
open
packet
packet_auth
packet_channel_open
packet_channel_recv
packet_channel_request
packet_channel_send
packet_get
packet_hello
packet_kex
packet_kexdh
packetparser
packet_put
packet_recv
packet_send
packet_unimplemented
porttostr
randommod
readall
savesync
ssh
sshcrypto
sshcrypto_cipher
sshcrypto_cipher_aesctr
sshcrypto_cipher_aesctr256
sshcrypto_cipher_chachapoly
sshcrypto_kex
sshcrypto_kex_curve25519
sshcrypto_kex_nistp256
sshcrypto_key
sshcrypto_key_ed25519
sshcrypto_key_nistp256ecdsa
str
stringparser
subprocess_auth
subprocess_sign
tinysshd
tinysshd-makekey
tinysshd-printkey
trymlock
writeall
tinyssh-20180201/tinyssh/TARGETS 0000664 0000000 0000000 00000000054 13227043065 0016210 0 ustar 00root root 0000000 0000000 tinysshd-makekey
tinysshd-printkey
tinysshd
tinyssh-20180201/tinyssh/blocking.c 0000664 0000000 0000000 00000000423 13227043065 0017110 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/blocking.c */
#include
#include "blocking.h"
void blocking_enable(int fd)
{
fcntl(fd,F_SETFL,fcntl(fd,F_GETFL,0) & ~O_NONBLOCK);
}
void blocking_disable(int fd)
{
fcntl(fd,F_SETFL,fcntl(fd,F_GETFL,0) | O_NONBLOCK);
}
tinyssh-20180201/tinyssh/blocking.h 0000664 0000000 0000000 00000000164 13227043065 0017117 0 ustar 00root root 0000000 0000000 #ifndef BLOCKING_H
#define BLOCKING_H
extern void blocking_enable(int);
extern void blocking_disable(int);
#endif
tinyssh-20180201/tinyssh/buf.c 0000664 0000000 0000000 00000013442 13227043065 0016101 0 ustar 00root root 0000000 0000000 /*
20140108
Jan Mojzis
Public domain.
The 'buf' library holds a string in allocated space.
The string length is limited by allocated memory.
All 'buf_put*' functions checks the limit and if
the string exceeds the limit, 'buf_put*' function
immediately exits with 111 status code.
*/
#include "byte.h"
#include "str.h"
#include "purge.h"
#include "randombytes.h"
#include "uint32_pack_big.h"
#include "bug.h"
#include "buf.h"
/*
Initialize 'b' structure.
*/
void buf_init_(const char *fn, unsigned long long line,
struct buf *b, unsigned char *buf, long long alloc) {
if (!b || !buf || alloc <= 0 || alloc > 1073741824) bug_inval_(fn, line);
b->buf = buf;
b->len = 0;
b->alloc = alloc;
purge(b->buf, b->alloc);
}
/*
Remove content of 'b'.
*/
void buf_purge_(const char *fn, unsigned long long line,
struct buf *b) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf) bug_inval_(fn, line);
purge(b->buf, b->len);
b->len = 0;
}
/*
Retun if 'b' has available space for string of length 'len'.
*/
int buf_ready_(const char *fn, unsigned long long line,
struct buf *b, long long len) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf || len < 0 || len > 1073741824) bug_inval_(fn, line);
return (b->len + len < b->alloc);
}
/*
Put string 'x' of length 'len'.
*/
int buf_put_(const char *fn, unsigned long long line,
struct buf *b, const unsigned char *x, long long len) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf || !x || len < 0 || len > 1073741824) bug_inval_(fn, line);
if (b->len + len >= b->alloc) bug_nomem_(fn, line);
byte_copy(b->buf + b->len, len, x);
b->len += len;
return 1;
}
/*
Put 0-terminated string 'x'.
*/
int buf_puts_(const char *fn, unsigned long long line,
struct buf *b, const char *x) {
return buf_put_(fn, line, b, (const unsigned char *)x, str_len(x));
}
/*
Put zero bytes of length 'len'.
*/
int buf_putzerobytes_(const char *fn, unsigned long long line,
struct buf *b, long long len) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf || len < 0 || len > 1073741824) bug_inval_(fn, line);
if (b->len + len >= b->alloc) bug_nomem_(fn, line);
byte_zero(b->buf + b->len, len);
b->len += len;
return 1;
}
/*
Put random bytes of length 'len'.
*/
int buf_putrandombytes_(const char *fn, unsigned long long line,
struct buf *b, long long len) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf || len < 0 || len > 1073741824) bug_inval_(fn, line);
if (b->len + len >= b->alloc) bug_nomem_(fn, line);
randombytes(b->buf + b->len, len);
b->len += len;
return 1;
}
/*
Put padding of length 'len'.
*/
int buf_putpadding_(const char *fn, unsigned long long line,
struct buf *b, long long len) {
if (!b || b->len < 0 || b->len > 1073741824 || b->alloc <= 0 || b->alloc > 1073741824 || !b->buf || len < 0 || len > 1073741824) bug_inval_(fn, line);
if (b->len + len >= b->alloc) bug_nomem_(fn, line);
purge(b->buf + b->len, len);
b->len += len;
return 1;
}
/*
Put 32-bit unsigned integer in big-endian format.
*/
int buf_putnum32_(const char *fn, unsigned long long line,
struct buf *b, crypto_uint32 x) {
unsigned char s[4];
uint32_pack_big(s, x);
return buf_put_(fn, line, b, s, sizeof s);
}
/*
Put 8-bit unsigned integer.
*/
int buf_putnum8_(const char *fn, unsigned long long line,
struct buf *b, crypto_uint8 u) {
return buf_put_(fn, line, b, &u, 1);
}
/*
Put string 'x' of length 'len' and format it as a SSH-string.
*/
int buf_putstringlen_(const char *fn, unsigned long long line,
struct buf *b, const unsigned char *x, long long len) {
if (!buf_putnum32_(fn, line, b, len)) return 0;
return buf_put_(fn, line, b, x, len);
}
/*
Put 0-terminated string 'x' and format it as a SSH-string.
*/
int buf_putstring_(const char *fn, unsigned long long line,
struct buf *b, const char *x) {
return buf_putstringlen_(fn, line, b, (unsigned char *)x, str_len(x));
}
/*
Put SSH shared secret (bignum formated into wire format)
*/
int buf_putsharedsecret_(const char *fn, unsigned long long line,
struct buf *b, const unsigned char *x, long long len) {
long long pos;
if (len < 0 || len > 1073741824 || !b || !x) bug_inval_(fn, line);
for (pos = 0; pos < len; ++pos) if (x[pos]) break;
if (x[pos] & 0x80) {
buf_putnum32_(fn, line, b, len - pos + 1);
buf_putnum8_(fn, line, b, 0);
}
else {
buf_putnum32_(fn, line, b, len - pos + 0);
}
return buf_put_(fn, line, b, x + pos, len - pos);
}
/*
Put string 'x' of length 'len' and encode it into base64.
*/
static const unsigned char b64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int buf_putbase64_(const char *fn, unsigned long long line,
struct buf *b, const unsigned char *x, long long len) {
long long i;
unsigned long long bits = 0, v = 0;
unsigned char ch;
if (len < 0 || len > 1073741824 || !b || !x) bug_inval_(fn, line);
for (i = 0; i < len; ++i) {
v <<= 8; v += x[i]; bits += 8;
while (bits > 6) {
ch = b64chars[((v >> (bits - 6)) & 63)];
buf_putnum8_(fn, line, b, ch);
bits -= 6;
}
}
if (bits) {
v <<= (6 - bits);
ch = b64chars[v & 63];
buf_putnum8_(fn, line, b, ch);
}
while (b->len & 3) {
buf_putnum8_(fn, line, b, '=');
}
return 1;
}
tinyssh-20180201/tinyssh/buf.h 0000664 0000000 0000000 00000005035 13227043065 0016105 0 ustar 00root root 0000000 0000000 /*
20140108
Jan Mojzis
Public domain.
*/
#ifndef _BUF_H____
#define _BUF_H____
#include "crypto_uint8.h"
#include "crypto_uint32.h"
struct buf {
unsigned char *buf;
long long len;
long long alloc;
};
extern void buf_init_(const char *, unsigned long long, struct buf *, unsigned char *, long long);
extern void buf_purge_(const char *, unsigned long long, struct buf *);
extern int buf_ready_(const char *, unsigned long long, struct buf *, long long);
extern int buf_put_(const char *, unsigned long long, struct buf *, const unsigned char *, long long);
extern int buf_puts_(const char *, unsigned long long, struct buf *, const char *);
extern int buf_putzerobytes_(const char *, unsigned long long, struct buf *, long long);
extern int buf_putrandombytes_(const char *, unsigned long long, struct buf *, long long);
extern int buf_putpadding_(const char *, unsigned long long, struct buf *, long long);
extern int buf_putnum32_(const char *, unsigned long long, struct buf *, crypto_uint32);
extern int buf_putnum8_(const char *, unsigned long long, struct buf *, crypto_uint8);
extern int buf_putstringlen_(const char *, unsigned long long, struct buf *, const unsigned char *, long long);
extern int buf_putstring_(const char *, unsigned long long, struct buf *, const char *);
extern int buf_putsharedsecret_(const char *, unsigned long long, struct buf *, const unsigned char *, long long);
extern int buf_putbase64_(const char *, unsigned long long, struct buf *, const unsigned char *, long long);
#define buf_init(a, b, c) buf_init_(__FILE__, __LINE__, (a), (b), (c))
#define buf_purge(a) buf_purge_(__FILE__, __LINE__, (a))
#define buf_ready(a, b) buf_ready_(__FILE__, __LINE__, (a), (b))
#define buf_put(a, b, c) buf_put_(__FILE__, __LINE__, (a), (b), (c))
#define buf_puts(a, b) buf_puts_(__FILE__, __LINE__, (a), (b))
#define buf_putzerobytes(a, b) buf_putzerobytes_(__FILE__, __LINE__, (a), (b))
#define buf_putrandombytes(a, b) buf_putrandombytes_(__FILE__, __LINE__, (a), (b))
#define buf_putpadding(a, b) buf_putpadding_(__FILE__, __LINE__, (a), (b))
#define buf_putnum32(a, b) buf_putnum32_(__FILE__, __LINE__, (a), (b))
#define buf_putnum8(a, b) buf_putnum8_(__FILE__, __LINE__, (a), (b))
#define buf_putstringlen(a, b, c) buf_putstringlen_(__FILE__, __LINE__, (a), (b), (c))
#define buf_putstring(a, b) buf_putstring_(__FILE__, __LINE__, (a), (b))
#define buf_putsharedsecret(a, b, c) buf_putsharedsecret_(__FILE__, __LINE__, (a), (b), (c))
#define buf_putbase64(a, b, c) buf_putbase64_(__FILE__, __LINE__, (a), (b), (c))
#endif
tinyssh-20180201/tinyssh/bug.h 0000664 0000000 0000000 00000001223 13227043065 0016101 0 ustar 00root root 0000000 0000000 #ifndef _BUG_H____
#define _BUG_H____
#include
#include "global.h"
#include "e.h"
#include "log.h"
#define bug_(a, b) do { log_9_(-1, 0, a, b, 0, 0, 0, 0, 0, 0, 0, 0, 0); global_die(111); } while (0);
#define bug() bug_(__FILE__, __LINE__)
#define bug_nomem() do { errno = ENOMEM; bug(); } while (0);
#define bug_proto() do { errno = EPROTO; bug(); } while (0);
#define bug_inval() do { errno = EINVAL; bug(); } while (0);
#define bug_nomem_(a, b) do { errno = ENOMEM; bug_(a, b); } while (0);
#define bug_proto_(a, b) do { errno = EPROTO; bug_(a, b); } while (0);
#define bug_inval_(a, b) do { errno = EINVAL; bug_(a, b); } while (0);
#endif
tinyssh-20180201/tinyssh/byte.c 0000664 0000000 0000000 00000001263 13227043065 0016266 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/byte_copy.c curvecp/byte_isequal.c curvecp/byte_zero.c */
#include "byte.h"
void byte_copy(void *yv,long long ylen,const void *xv)
{
char *y = (char *)yv;
const char *x = (const char *)xv;
while (ylen > 0) { *y++ = *x++; --ylen; }
}
int byte_isequal(const void *yv,long long ylen,const void *xv)
{
const unsigned char *y = (const unsigned char *)yv;
const unsigned char *x = (const unsigned char *)xv;
unsigned char diff = 0;
while (ylen > 0) { diff |= (*y++ ^ *x++); --ylen; }
return (256 - (unsigned int) diff) >> 8;
}
void byte_zero(void *yv,long long ylen)
{
char *y = (char *)yv;
while (ylen > 0) { *y++ = 0; --ylen; }
}
tinyssh-20180201/tinyssh/byte.h 0000664 0000000 0000000 00000000304 13227043065 0016266 0 ustar 00root root 0000000 0000000 #ifndef BYTE_H
#define BYTE_H
extern void byte_zero(void *,long long);
extern void byte_copy(void *,long long,const void *);
extern int byte_isequal(const void *,long long,const void *);
#endif
tinyssh-20180201/tinyssh/channel.c 0000664 0000000 0000000 00000027232 13227043065 0016737 0 ustar 00root root 0000000 0000000 /*
20140124
Jan Mojzis
Public domain.
The 'channel' library is used to handle data from/to SSH channel (rfc4254).
*/
#include
#include
#include
#include
#include
#include
#include
extern char *ptsname(int);
#include "byte.h"
#include "bug.h"
#include "newenv.h"
#include "e.h"
#include "purge.h"
#include "connectioninfo.h"
#include "iptostr.h"
#include "porttostr.h"
#include "buf.h"
#include "str.h"
#include "logsys.h"
#include "loginshell.h"
#include "trymlock.h"
#include "limit.h"
#include "channel.h"
/*
1. channel not open: maxpacket == 0, pid == 0
2. channel open: maxpacket != 0, pid == 0
3. child executed: maxpacket != 0, pid > 0, fd[01] != -1
4. child eof: maxpacket != 0, pid > 0, fd[12] == -1
5. child died: maxpacket != 0, pid == -1
*/
struct channel channel = {0};
/*
The 'channel_open' function opens the channel.
It sets 'localwindow' and maxpacket, values obtained from
from SSH_MSG_CHANNEL_OPEN message.
Function also obtaines connection information and sets
environment variables PATH, SSH_CONNECTION and MAIL.
*/
int channel_open(const char *user, crypto_uint32 id, crypto_uint32 remotewindow, crypto_uint32 maxpacket, crypto_uint32 *localwindow) {
struct buf b = { channel.buf0, 0, CHANNEL_BUFSIZE };
if (!localwindow) bug_inval();
if (!maxpacket) bug_inval();
if (!remotewindow) bug_inval();
if (channel.maxpacket != 0) bug_proto();
if (channel.pid != 0) bug_proto();
/* copy user-name */
if (!str_copyn(channel.user, sizeof channel.user, user)) bug_nomem();
/* set id, maxpacket, remotewindow, localwindow */
channel.id = id;
channel.maxpacket = maxpacket;
channel.remotewindow = remotewindow;
channel.localwindow = *localwindow = CHANNEL_BUFSIZE;
/* copy PATH */
if (!newenv_copyenv("PATH")) if (!newenv_env("PATH", "/bin:/usr/bin")) return 0;
/* create env. SSH_CONNECTION */
connectioninfo(channel.localip, channel.localport, channel.remoteip, channel.remoteport);
buf_purge(&b);
buf_puts(&b, channel.remoteip);
buf_puts(&b, " ");
buf_puts(&b, channel.remoteport);
buf_puts(&b, " ");
buf_puts(&b, channel.localip);
buf_puts(&b, " ");
buf_puts(&b, channel.localport);
buf_putnum8(&b, 0);
if (!newenv_env("SSH_CONNECTION", (char *)b.buf)) return 0;
/* create env. MAIL */
#ifdef _PATH_MAILDIR
buf_purge(&b);
buf_puts(&b, _PATH_MAILDIR);
buf_puts(&b, "/");
buf_puts(&b, user);
buf_putnum8(&b, 0);
if (!newenv_env("MAIL", (char *)b.buf)) return 0;
#endif
purge(channel.buf0, sizeof channel.buf0);
return 1;
}
/*
The 'channel_openterminal' function opens terminal,
sets environment variable TERM and initial terminal windowsize.
*/
int channel_openterminal(const char *name, crypto_uint32 a, crypto_uint32 b, crypto_uint32 x, crypto_uint32 y) {
if (channel.maxpacket == 0) bug_proto();
if (channel.pid != 0) bug_proto();
if (channel.flagterminal == 1) bug_proto();
if (!channel_openpty(&channel.master, &channel.slave)) return 0;
if (!newenv_env("TERM", name)) return 0;
channel.flagterminal = 1;
channel.a = a;
channel.b = b;
channel.x = x;
channel.y = y;
return 1;
}
/*
The 'channel_ptyresize' function sets new
terminal windowsize.
*/
void channel_ptyresize(crypto_uint32 a, crypto_uint32 b, crypto_uint32 x, crypto_uint32 y) {
struct winsize w;
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0) bug_proto();
if (!a && !b && !x && !y) return;
w.ws_col = a;
w.ws_row = b;
w.ws_xpixel = x;
w.ws_ypixel = y;
ioctl(channel.fd0, TIOCSWINSZ, &w);
}
/*
The 'channel_env' adds new environment variable
sent from client.
*/
int channel_env(const char *x, const char *y) {
if (channel.maxpacket == 0) bug_proto();
if (channel.pid != 0) bug_proto();
if (!x || !y) bug_inval();
return newenv_lowenv(x, y);
}
/*
The 'channel_exec' function executes new process.
If terminal is requsted, than users shell is executed,
if exec is requested, than command 'cmd' is executed.
Process is executed under appropriate users UID.
*/
int channel_exec(const char *cmd) {
char *run[4];
char *shell;
char *name;
int fd[3];
char ln[NAME_MAX + 2];
if (channel.maxpacket == 0) bug_proto();
if (channel.pid != 0 ) bug_proto();
if (channel.flagterminal) {
channel.pid = channel_forkpty(fd, channel.master, channel.slave);
if (channel.pid > 0) {
name = ptsname(fd[0]);
if (!name) bug();
if (!str_copyn(channel.termname, sizeof channel.termname, name)) bug_nomem();
}
}
else {
channel.pid = channel_fork(fd);
}
if (channel.pid == -1) return 0;
if (channel.pid == 0) {
logsys_login(channel.user, channel.remoteip, 0, 0);
if (!channel_droppriv(channel.user, &shell)) _exit(111);
if (cmd) {
run[0] = shell;
run[1] = (char *)"-c";
run[2] = (char *)cmd;
run[3] = 0;
}
else {
if (!loginshell(ln, sizeof ln, shell)) bug();
run[0] = ln;
run[1] = 0;
}
signal(SIGPIPE, SIG_DFL);
newenv_exec(shell, run);
_exit(111);
}
channel.fd0 = fd[0];
channel.fd1 = fd[1];
channel.fd2 = fd[2];
channel.len0 = 0;
newenv_purge();
if (channel.flagterminal && channel.pid > 0) channel_ptyresize(channel.a, channel.b, channel.x, channel.y);
return 1;
}
/*
The 'channel_put' function adds data from
client to childs buffer.
*/
void channel_put(unsigned char *buf, long long len) {
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0 ) bug_proto();
if (channel.fd0 == -1) bug_proto();
if (!buf || len < 0) bug_inval();
if (channel.len0 + len > CHANNEL_BUFSIZE) bug_nomem();
byte_copy(channel.buf0 + channel.len0, len, buf);
channel.len0 += len;
channel.localwindow -= len;
}
/*
The 'channel_puteof' function adds information
that remote side closed standard output.
*/
void channel_puteof(void) {
if (channel.maxpacket == 0) bug_proto();
if (channel.pid == 0) bug_proto();
if (channel.fd0 == -1) bug_proto();
channel.remoteeof = 1;
if (channel.len0 == 0) {
close(channel.fd0);
channel.fd0 = -1;
}
}
/*
The 'channel_putisready' function returns
if child is ready accept data.
*/
int channel_putisready(void) {
if (channel.maxpacket == 0) return 0;
if (channel.pid <= 0) return 0;
if (channel.fd0 == -1) return 0;
return (CHANNEL_BUFSIZE > channel.len0);
}
/*
The 'channel_read' function reads
data from childs standard output.
*/
long long channel_read(unsigned char *buf, long long len) {
long long r;
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0 ) bug_proto();
if (channel.fd1 == -1) bug_proto();
if (!buf || len < 0) bug_inval();
if (channel.remotewindow <= 0) return 0;
r = len;
if (r > 1048576) r = 1048576;
if (r > channel.remotewindow) r = channel.remotewindow;
r = read(channel.fd1, buf, r);
if (r == -1) {
if (errno == EINTR) return 0;
if (errno == EAGAIN) return 0;
if (errno == EWOULDBLOCK) return 0;
}
if (r <= 0) {
channel.fd1 = -1;
return 0;
}
channel.remotewindow -= r;
return r;
}
/*
The 'channel_extendedread' function reads
data from childs error output.
*/
long long channel_extendedread(unsigned char *buf, long long len) {
long long r;
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0 ) bug_proto();
if (channel.fd2 == -1) bug_proto();
if (!buf || len < 0) bug_inval();
if (channel.remotewindow <= 0) return 0;
r = len;
if (r > 1048576) r = 1048576;
if (r > channel.remotewindow) r = channel.remotewindow;
r = read(channel.fd2, buf, r);
if (r == -1) {
if (errno == EINTR) return 0;
if (errno == EAGAIN) return 0;
if (errno == EWOULDBLOCK) return 0;
}
if (r <= 0) {
channel.fd2 = -1;
return 0;
}
channel.remotewindow -= r;
return r;
}
/*
The 'channel_readisready' function returns
if we can read data from childs standard output.
*/
int channel_readisready(void) {
if (channel.maxpacket == 0 || channel.pid == 0) return 0;
if (channel.fd1 == -1) return 0;
return (channel.remotewindow > 0);
}
/*
The 'channel_extendedreadisready' function returns
if we can read data from childs error output.
*/
int channel_extendedreadisready(void) {
if (channel.maxpacket == 0 || channel.pid == 0) return 0;
if (channel.fd2 == -1) return 0;
return (channel.remotewindow > 0);
}
/*
The 'channel_write' function writes
data to childs standard input.
*/
int channel_write(void) {
long long w;
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0 ) bug_proto();
if (channel.fd0 == -1) bug_proto();
if (channel.len0 <= 0) return 1;
w = write(channel.fd0, channel.buf0, channel.len0);
if (w == -1) {
if (errno == EINTR) return 1;
if (errno == EAGAIN) return 1;
if (errno == EWOULDBLOCK) return 1;
}
if (w <= 0) {
channel.fd0 = -1;
return 0;
}
byte_copy(channel.buf0, channel.len0 - w, channel.buf0 + w);
purge(channel.buf0 + channel.len0 - w, w);
channel.len0 -= w;
if (channel.remoteeof && channel.len0 == 0) { close(channel.fd0); channel.fd0 = -1; }
return 1;
}
/*
The 'channel_writeisready' function returns
if we can write data to childs standard input.
*/
int channel_writeisready(void) {
if (channel.maxpacket == 0) return 0;
if (channel.pid <= 0 ) return 0;
if (channel.fd0 == -1) return 0;
return (channel.len0 > 0);
}
/*
The 'channel_iseof' function returns
if child closed standard and error output.
*/
int channel_iseof(void) {
if (channel.maxpacket == 0) return 0;
if (channel.pid == 0) return 0;
if (channel.pid == -1) return 1;
return (channel.fd1 == -1 && channel.fd2 == -1);
}
/*
The 'channel_waitnohang' function returns
if child exited or was killed.
*/
int channel_waitnohang(int *s, int *e) {
int r, status;
if (!s || !e) bug_inval();
if (channel.maxpacket == 0) bug_proto();
if (channel.pid <= 0 ) return 0;
do {
r = waitpid(channel.pid, &status, WNOHANG);
} while (r == -1 && errno == EINTR);
if (r <= 0) return 0;
if (channel.flagterminal) logsys_logout(channel.user, channel.remoteip, channel.termname, channel.pid);
if (WIFEXITED(status)) {
*e = WEXITSTATUS(status);
*s = 0;
}
else if (WIFSIGNALED(status)) {
*e = 0;
*s = WTERMSIG(status);
}
else {
*e = *s = -1;
}
channel.pid = -1;
return 1;
}
/*
Remove sentitive data from allocated memory.
*/
void channel_purge(void) {
purge(&channel, sizeof channel);
trymunlock(&channel, sizeof channel);
}
/*
Initialize channel structure.
*/
void channel_init(void) {
trymlock(&channel, sizeof channel);
purge(&channel, sizeof channel);
channel.maxpacket = 0;
channel.remoteeof = 0;
channel.len0 = 0;
channel.pid = 0;
channel.flagterminal = 0;
channel.master = -1;
channel.slave = -1;
}
int channel_getfd0(void) { return channel.fd0; }
int channel_getfd1(void) { return channel.fd1; }
int channel_getfd2(void) { return channel.fd2; }
long long channel_getlen0(void) { return channel.len0; }
crypto_uint32 channel_getid(void) { return channel.id; }
crypto_uint32 channel_getlocalwindow(void) { return channel.localwindow; }
void channel_incrementremotewindow(crypto_uint32 x) { channel.remotewindow += x; }
void channel_incrementlocalwindow(crypto_uint32 x) { channel.localwindow += x; }
tinyssh-20180201/tinyssh/channel.h 0000664 0000000 0000000 00000005156 13227043065 0016745 0 ustar 00root root 0000000 0000000 #ifndef _CHANNEL_H____
#define _CHANNEL_H____
#include "crypto_uint32.h"
#include "iptostr.h"
#include "porttostr.h"
#include "limit.h"
#define CHANNEL_BUFSIZE 131072
struct channel {
/* channel */
crypto_uint32 maxpacket;
crypto_uint32 id;
crypto_uint32 localwindow;
crypto_uint32 remotewindow;
/* child */
unsigned char buf0[CHANNEL_BUFSIZE];
long long len0;
long long pid;
int fd0;
int fd1;
int fd2;
int status;
/* ip */
char localip[IPTOSTR_LEN];
char localport[PORTTOSTR_LEN];
char remoteip[IPTOSTR_LEN];
char remoteport[PORTTOSTR_LEN];
/* terminal */
char user[LOGIN_NAME_MAX + 1];
char termname[TTY_NAME_MAX + 1];
int flagterminal;
int master;
int slave;
int a;
int b;
int x;
int y;
/* channel */
int remoteeof;
};
extern struct channel channel;
/* channel_drop.c */
extern int channel_droppriv(char *, char **);
/* channel_fork.c */
extern long long channel_fork(int *);
/* channel_forkpty.c */
extern long long channel_forkpty(int *, int, int);
extern int channel_openpty(int *, int *);
/* channel.c */
extern void channel_purge(void);
extern int channel_open(const char *, crypto_uint32, crypto_uint32, crypto_uint32, crypto_uint32 *);
extern int channel_openterminal(const char *, crypto_uint32, crypto_uint32, crypto_uint32, crypto_uint32);
extern void channel_ptyresize(crypto_uint32, crypto_uint32, crypto_uint32, crypto_uint32);
extern int channel_env(const char *, const char *);
extern int channel_exec(const char *);
extern void channel_put(unsigned char *, long long);
extern void channel_puteof(void);
extern int channel_putisready(void);
extern long long channel_read(unsigned char *, long long);
extern long long channel_extendedread(unsigned char *, long long);
extern int channel_readisready(void);
extern int channel_extendedreadisready(void);
extern int channel_write(void);
extern int channel_writeisready(void);
extern int channel_iseof(void);
extern int channel_waitnohang(int *, int *);
extern void channel_purge(void);
extern void channel_init(void);
extern int channel_getfd0(void);
extern int channel_getfd1(void);
extern int channel_getfd2(void);
extern long long channel_getlen0(void);
extern crypto_uint32 channel_getid(void);
extern crypto_uint32 channel_getlocalwindow(void);
extern void channel_incrementremotewindow(crypto_uint32);
extern void channel_incrementlocalwindow(crypto_uint32);
/* channel subsystem.c */
#define CHANNEL_SUBSYSTEM_MAX 64
extern int channel_subsystem_add(const char *);
extern char *channel_subsystem_get(const char *);
extern void channel_subsystem_log(void);
#endif
tinyssh-20180201/tinyssh/channel_drop.c 0000664 0000000 0000000 00000002000 13227043065 0017745 0 ustar 00root root 0000000 0000000 /*
20140129
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "dropuidgid.h"
#include "newenv.h"
#include "channel.h"
int channel_droppriv(char *user, char **shell) {
struct passwd *pw;
char *name;
pw = getpwnam(user);
if (!pw) return 0;
if (isatty(0)) {
name = ttyname(0);
if (!name) return 0;
if (!newenv_env("SSH_TTY", name)) return 0;
/* setowner */
if (chown(name, pw->pw_uid, pw->pw_gid) == -1) return 0;
if (chmod(name, 0600) == -1) return 0;
}
/* drop privileges */
if (!dropuidgid(pw->pw_name, pw->pw_uid, pw->pw_gid)) return 0;
if (chdir(pw->pw_dir) == -1) return 0;
if (!newenv_env("HOME", pw->pw_dir)) return 0;
if (!newenv_env("USER", pw->pw_name)) return 0;
if (!newenv_env("LOGNAME", pw->pw_name)) return 0;
if (!newenv_env("LOGIN", pw->pw_name)) return 0;
if (!newenv_env("SHELL", pw->pw_shell)) return 0;
*shell = pw->pw_shell;
return 1;
}
tinyssh-20180201/tinyssh/channel_fork.c 0000664 0000000 0000000 00000002135 13227043065 0017753 0 ustar 00root root 0000000 0000000 /*
20140129
Jan Mojzis
Public domain.
*/
#include
#include "blocking.h"
#include "open.h"
#include "channel.h"
/*
The 'channel_fork' function is used to create a new process.
Function creates 3 pipes from/to child:
fd[0] is pipe to childs standard input
fd[1] is pipe from childs standard output
fd[2] is pipe from childs error output
Function returns also childs PID.
*/
long long channel_fork(int fd[3]) {
int pi[2], pa[3], ch[3];
long long i, pid;
for (i = 0; i < 3; ++i) pa[i] = ch[i] = fd[i] = -1;
for (i = 0; i < 3; ++i) {
if (open_pipe(pi) == -1) goto cleanup;
pa[i] = pi[i ? 0 : 1];
ch[i] = pi[i ? 1 : 0];
}
pid = fork();
if (pid == -1) goto cleanup;
if (pid == 0) {
for (i = 0; i < 3; ++i) {
close(pa[i]); close(i);
blocking_enable(ch[i]);
if (dup(ch[i]) != i) _exit(111);
}
return 0;
}
for (i = 0; i < 3; ++i) {
close(ch[i]);
fd[i] = pa[i];
}
return pid;
cleanup:
for (i = 0; i < 3; ++i) { close(pa[i]); close(ch[i]); }
return -1;
}
tinyssh-20180201/tinyssh/channel_forkpty.c 0000664 0000000 0000000 00000006226 13227043065 0020515 0 ustar 00root root 0000000 0000000 /*
20150212
Jan Mojzis
Public domain.
*/
#include
#if defined(sun) || defined(__hpux)
#include
#endif
#include
#include
#include
#include
#include
extern char *ptsname(int);
extern int grantpt(int);
extern int unlockpt(int);
#include "hasopenpty.h"
#ifdef HASOPENPTY
extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
#endif
#include "haslogintty.h"
#ifdef HASLOGINTTY
extern int login_tty(int);
#endif
#include "coe.h"
#include "blocking.h"
#include "global.h"
#include "channel.h"
static int _login_tty(int fd) {
char *name;
setsid();
#ifdef TIOCSCTTY
if (ioctl(fd, TIOCSCTTY, (char *)0) == -1) return -1;
#endif
name = ttyname(fd);
if (!name) return -1;
#ifndef TIOCSCTTY
if (fd != 0) close(0);
if (fd != 1) close(1);
if (fd != 2) close(2);
close(open(name, O_RDWR));
#endif
if (dup2(fd, 0) == -1) return -1;
if (dup2(fd, 1) == -1) return -1;
if (dup2(fd, 2) == -1) return -1;
if (fd > 2) close(fd);
return 0;
}
static int _openpty(int *amaster, int *aslave) {
int master = -1, slave = -1;
char *slave_name;
static const char *fn[] = { "/dev/ptmx", "/dev/ptc", 0 };
long long i;
for (i = 0; fn[i]; ++i) {
master = open(fn[i], O_RDWR | O_NOCTTY);
if (master != -1) break;
}
if (master == -1) return -1;
if (grantpt(master) == -1) { close(master); return -1; }
if (unlockpt(master) == -1) { close(master); return -1; }
slave_name = ptsname(master);
if (!slave_name) { close(master); return -1; }
slave = open(slave_name, O_RDWR | O_NOCTTY);
if (slave == -1) { close(master); return -1; }
#if defined(sun) || defined(__hpux)
ioctl(slave, I_PUSH, "ptem");
ioctl(slave, I_PUSH, "ldterm");
#endif
#if defined(sun)
ioctl(slave, I_PUSH, "ttcompat");
#endif
if (amaster) *amaster = master;
if (aslave) *aslave = slave;
return 0;
}
int channel_openpty(int *amaster, int *aslave) {
#ifdef HASOPENPTY
if (openpty(amaster, aslave, 0, 0, 0) == -1) return 0;
#else
if (_openpty(amaster, aslave) == -1) return 0;
#endif
if (!ttyname(*aslave)) {
close(*amaster);
close(*aslave);
return 0;
}
return 1;
}
/*
The 'channel_forkpty' function is used to create a new process
operating in a pseudoterminal. Function sets 3 integers in 'fd[3]':
fd[0] and fd[1] is pseudoterminal fd
fd[2] is always -1
*/
long long channel_forkpty(int fd[3], int master, int slave) {
long long pid;
if (!ttyname(slave)) return -1;
fd[0] = fd[1] = master;
fd[2] = -1;
pid = fork();
switch (pid) {
case -1:
close(slave);
close(master);
return -1;
case 0:
close(master);
#ifdef HASLOGINTTY
if (!ttyname(slave)) global_die(111);
if (login_tty(slave) == -1) global_die(111);
#else
if (_login_tty(slave) == -1) global_die(111);
#endif
return 0;
default:
coe_enable(master);
blocking_disable(master);
close(slave);
return pid;
}
}
tinyssh-20180201/tinyssh/channel_subsystem.c 0000664 0000000 0000000 00000001742 13227043065 0021053 0 ustar 00root root 0000000 0000000 /*
20150114
Jan Mojzis
Public domain.
*/
#include "str.h"
#include "log.h"
#include "e.h"
#include "channel.h"
static long long channel_subsystem_pos = 0;
static char *channel_subsystem[CHANNEL_SUBSYSTEM_MAX] = {0};
int channel_subsystem_add(const char *x) {
if (channel_subsystem_pos >= CHANNEL_SUBSYSTEM_MAX) return 0;
channel_subsystem[channel_subsystem_pos++] = (char *)x;
return 1;
}
char *channel_subsystem_get(const char *x) {
long long len, i;
if (!x) return 0;
len = str_len(x);
for (i = 0; i < CHANNEL_SUBSYSTEM_MAX; ++i) {
if (!channel_subsystem[i]) break;
if (str_start(channel_subsystem[i], x) && (channel_subsystem[i][len] == '='))
return channel_subsystem[i] + len + 1;
}
return 0;
}
void channel_subsystem_log(void) {
long long i;
for (i = 0; i < CHANNEL_SUBSYSTEM_MAX; ++i) {
if (!channel_subsystem[i]) break;
log_d3("subsystem: ", channel_subsystem[i], " registered");
}
}
tinyssh-20180201/tinyssh/coe.c 0000664 0000000 0000000 00000000575 13227043065 0016076 0 ustar 00root root 0000000 0000000 /*
20140414
Jan Mojzis
Public domain.
*/
#include
#include "coe.h"
/*
The 'coe_enable(fd)' function enables
the close-on-exec flag on a file-descriptor 'fd'.
*/
void coe_enable(int fd) {
fcntl(fd, F_SETFD, 1);
}
/*
The 'coe_disable(fd)' function disables
the close-on-exec flag on a file-descriptor 'fd'.
*/
void coe_disable(int fd) {
fcntl(fd, F_SETFD, 0);
}
tinyssh-20180201/tinyssh/coe.h 0000664 0000000 0000000 00000000152 13227043065 0016072 0 ustar 00root root 0000000 0000000 #ifndef _COE_H____
#define _COE_H____
extern void coe_enable(int);
extern void coe_disable(int);
#endif
tinyssh-20180201/tinyssh/connectioninfo.c 0000664 0000000 0000000 00000007037 13227043065 0020343 0 ustar 00root root 0000000 0000000 /*
20140131
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include
#include "e.h"
#include "byte.h"
#include "iptostr.h"
#include "porttostr.h"
#include "env.h"
#include "str.h"
#include "connectioninfo.h"
/*
The connectioninfo_fromfd function gets
informations about TCP connection from
getsockname(), getpeername() libc functions.
*/
static int connectioninfo_fromfd(char *localip, char *localport, char *remoteip, char *remoteport) {
long long i;
struct sockaddr_storage sa;
socklen_t salen;
int fd = 0;
unsigned char ip[16];
unsigned char port[2];
char *ipstr[2];
char *portstr[2];
int (*op[2])(int, struct sockaddr *, socklen_t *) = { getsockname, getpeername };
ipstr[0] = localip; portstr[0] = localport;
ipstr[1] = remoteip; portstr[1] = remoteport;
for (i = 0; i < 2; ++i) {
salen = sizeof sa;
if (op[i](fd, (struct sockaddr *)&sa, &salen) == -1) return 0;
if (sa.ss_family == PF_INET) {
struct sockaddr_in *sin = (struct sockaddr_in *)&sa;
byte_copy(ip, 12, "\0\0\0\0\0\0\0\0\0\0\377\377");
byte_copy(ip + 12, 4, &sin->sin_addr);
byte_copy(port, 2, &sin->sin_port);
}
#ifdef PF_INET6
else if (sa.ss_family == PF_INET6) {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa;
byte_copy(ip, 16, &sin6->sin6_addr);
byte_copy(port, 2, &sin6->sin6_port);
}
#endif
else {
errno = EPROTONOSUPPORT;
return 0;
}
iptostr(ipstr[i], ip);
porttostr(portstr[i], port);
}
return 1;
}
static int env(char *y, long long ylen, const char *e) {
char *x;
x = env_get(e);
if (!x) return 0;
if (!str_copyn(y, ylen, x)) return 0;
return 1;
}
/*
The connectioninfo_fromtcpserverenv function gets
informations about TCP connection from environment.
*/
static int connectioninfo_fromtcpserverenv(char *localip, char *localport, char *remoteip, char *remoteport) {
if (!env(localip, IPTOSTR_LEN, "TCPLOCALIP")) return 0;
if (!env(localport, PORTTOSTR_LEN, "TCPLOCALPORT")) return 0;
if (!env(remoteip, IPTOSTR_LEN, "TCPREMOTEIP")) return 0;
if (!env(remoteport, PORTTOSTR_LEN, "TCPREMOTEPORT")) return 0;
return 1;
}
/*
The connectioninfo_fromcurvecpserverenv function gets
informations about CurveCP connection from environment.
*/
static int connectioninfo_fromcurvecpserverenv(char *localip, char *localport, char *remoteip, char *remoteport) {
if (!env(localip, IPTOSTR_LEN, "CURVECPLOCALIP")) return 0;
if (!env(localport, PORTTOSTR_LEN, "CURVECPLOCALPORT")) return 0;
if (!env(remoteip, IPTOSTR_LEN, "CURVECPREMOTEIP")) return 0;
if (!env(remoteport, PORTTOSTR_LEN, "CURVECPREMOTEPORT")) return 0;
return 1;
}
#define unknown "unknown"
#define port0 "0"
/*
The connectioninfo function gets informations about TCP/CurveCP connection.
*/
void connectioninfo(char *localip, char *localport, char *remoteip, char *remoteport) {
if (connectioninfo_fromtcpserverenv(localip, localport, remoteip, remoteport)) return;
if (connectioninfo_fromcurvecpserverenv(localip, localport, remoteip, remoteport)) return;
if (connectioninfo_fromfd(localip, localport, remoteip, remoteport)) return;
byte_copy(localip, sizeof unknown, unknown);
byte_copy(remoteip, sizeof unknown, unknown);
byte_copy(localport, sizeof port0, port0);
byte_copy(remoteport, sizeof port0, port0);
return;
}
tinyssh-20180201/tinyssh/connectioninfo.h 0000664 0000000 0000000 00000000201 13227043065 0020332 0 ustar 00root root 0000000 0000000 #ifndef _CONNECTIONINFO_H____
#define _CONNECTIONINFO_H____
extern void connectioninfo(char *, char *, char *, char *);
#endif
tinyssh-20180201/tinyssh/die.c 0000664 0000000 0000000 00000000776 13227043065 0016074 0 ustar 00root root 0000000 0000000 #include "global.h"
#include "log.h"
#include "die.h"
void die_usage(const char *x) {
log_u1(x);
global_die(100);
}
void die_fatal_(const char *fn, unsigned long long line, const char *trouble, const char *d, const char *f) {
if (d) {
if (f) log_9_(1, 0, fn, line, trouble, " ", d, "/", f, 0, 0, 0, 0);
else log_9_(1, 0, fn, line, trouble, " ", d, 0, 0, 0, 0, 0, 0);
}
else {
log_9_(1, 0, fn, line, trouble, 0, 0, 0, 0, 0, 0, 0, 0);
}
global_die(111);
}
tinyssh-20180201/tinyssh/die.h 0000664 0000000 0000000 00000000402 13227043065 0016063 0 ustar 00root root 0000000 0000000 #ifndef _DIE_H____
#define _DIE_H____
extern void die_usage(const char *);
extern void die_fatal_(const char *, unsigned long long, const char *, const char *, const char *);
#define die_fatal(a, b, c) die_fatal_(__FILE__, __LINE__, (a), (b), (c))
#endif
tinyssh-20180201/tinyssh/dropuidgid.c 0000664 0000000 0000000 00000001524 13227043065 0017455 0 ustar 00root root 0000000 0000000 /*
20140420
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "e.h"
#include "dropuidgid.h"
/*
The 'dropuidgid' function is used to drop root privileges.
If the process has appropriate permittions, the 'dropuidgid'
function sets user ID and group ID of calling process to
uid and gid.
The 'dropuidgid' function also initialize supplementary group IDs.
*/
int dropuidgid(const char *name, uid_t uid, gid_t gid) {
/* we can change group only as the root */
if (geteuid() == 0) {
if (setgid(gid) == -1) return 0;
if (getgid() != gid) { errno = EPERM; return 0; }
if (name) if (initgroups(name, gid) == -1) return 0;
}
if (geteuid() != uid) {
if (setuid(uid) == -1) return 0;
if (getuid() != uid) { errno = EPERM; return 0; }
}
return 1;
}
tinyssh-20180201/tinyssh/dropuidgid.h 0000664 0000000 0000000 00000000207 13227043065 0017457 0 ustar 00root root 0000000 0000000 #ifndef _DROPUIDGID_H____
#define _DROPUIDGID_H____
#include
extern int dropuidgid(const char *, uid_t, gid_t);
#endif
tinyssh-20180201/tinyssh/e.c 0000664 0000000 0000000 00000007030 13227043065 0015545 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/e.c */
#include "e.h"
#define X(e,s) if (i == e) return s;
const char *e_str(int i)
{
X(0,"no error");
X(EINTR,"interrupted system call")
X(ENOMEM,"out of memory")
X(ENOENT,"file does not exist")
X(ETXTBSY,"text busy")
X(EIO,"input/output error")
X(EEXIST,"file already exists")
X(ETIMEDOUT,"timed out")
X(EINPROGRESS,"operation in progress")
X(EAGAIN,"temporary failure")
X(EWOULDBLOCK,"input/output would block")
X(EPIPE,"broken pipe")
X(EPERM,"permission denied")
X(EACCES,"access denied")
X(ENODEV,"device not configured")
X(EPROTO,"protocol error")
X(EISDIR,"is a directory")
X(ESRCH,"no such process")
X(E2BIG,"argument list too long")
X(ENOEXEC,"exec format error")
X(EBADF,"file descriptor not open")
X(ECHILD,"no child processes")
X(EDEADLK,"operation would cause deadlock")
X(EFAULT,"bad address")
X(ENOTBLK,"not a block device")
X(EBUSY,"device busy")
X(EXDEV,"cross-device link")
X(ENODEV,"device does not support operation")
X(ENOTDIR,"not a directory")
X(EINVAL,"invalid argument")
X(ENFILE,"system cannot open more files")
X(EMFILE,"process cannot open more files")
X(ENOTTY,"not a tty")
X(EFBIG,"file too big")
X(ENOSPC,"out of disk space")
X(ESPIPE,"unseekable descriptor")
X(EROFS,"read-only file system")
X(EMLINK,"too many links")
X(EDOM,"input out of range")
X(ERANGE,"output out of range")
X(EALREADY,"operation already in progress")
X(ENOTSOCK,"not a socket")
X(EDESTADDRREQ,"destination address required")
X(EMSGSIZE,"message too long")
X(EPROTOTYPE,"incorrect protocol type")
X(ENOPROTOOPT,"protocol not available")
X(EPROTONOSUPPORT,"protocol not supported")
X(ESOCKTNOSUPPORT,"socket type not supported")
X(EOPNOTSUPP,"operation not supported")
X(EPFNOSUPPORT,"protocol family not supported")
X(EAFNOSUPPORT,"address family not supported")
X(EADDRINUSE,"address already used")
X(EADDRNOTAVAIL,"address not available")
X(ENETDOWN,"network down")
X(ENETUNREACH,"network unreachable")
X(ENETRESET,"network reset")
X(ECONNABORTED,"connection aborted")
X(ECONNRESET,"connection reset")
X(ENOBUFS,"out of buffer space")
X(EISCONN,"already connected")
X(ENOTCONN,"not connected")
X(ESHUTDOWN,"socket shut down")
X(ETOOMANYREFS,"too many references")
X(ECONNREFUSED,"connection refused")
X(ELOOP,"symbolic link loop")
X(ENAMETOOLONG,"file name too long")
X(EHOSTDOWN,"host down")
X(EHOSTUNREACH,"host unreachable")
X(ENOTEMPTY,"directory not empty")
X(EPROCLIM,"too many processes")
X(EUSERS,"too many users")
X(EDQUOT,"disk quota exceeded")
X(ESTALE,"stale NFS file handle")
X(EREMOTE,"too many levels of remote in path")
X(EBADRPC,"RPC structure is bad")
X(ERPCMISMATCH,"RPC version mismatch")
X(EPROGUNAVAIL,"RPC program unavailable")
X(EPROGMISMATCH,"program version mismatch")
X(EPROCUNAVAIL,"bad procedure for program")
X(ENOLCK,"no locks available")
X(ENOSYS,"system call not available")
X(EFTYPE,"bad file type")
X(EAUTH,"authentication error")
X(ENEEDAUTH,"not authenticated")
X(ENOSTR,"not a stream device")
X(ETIME,"timer expired")
X(ENOSR,"out of stream resources")
X(ENOMSG,"no message of desired type")
X(EBADMSG,"bad message type")
X(EIDRM,"identifier removed")
X(ENONET,"machine not on network")
X(EREMOTE,"object not local")
X(ENOLINK,"link severed")
X(EADV,"advertise error")
X(ESRMNT,"srmount error")
X(ECOMM,"communication error")
X(EMULTIHOP,"multihop attempted")
X(EREMCHG,"remote address changed")
return "unknown error";
}
tinyssh-20180201/tinyssh/e.h 0000664 0000000 0000000 00000015506 13227043065 0015561 0 ustar 00root root 0000000 0000000 #ifndef E_H
#define E_H
#include
extern const char *e_str(int);
#ifndef EPERM
#define EPERM (-5001)
#endif
#ifndef ENOENT
#define ENOENT (-5002)
#endif
#ifndef ESRCH
#define ESRCH (-5003)
#endif
#ifndef EINTR
#define EINTR (-5004)
#endif
#ifndef EIO
#define EIO (-5005)
#endif
#ifndef ENXIO
#define ENXIO (-5006)
#endif
#ifndef E2BIG
#define E2BIG (-5007)
#endif
#ifndef ENOEXEC
#define ENOEXEC (-5008)
#endif
#ifndef EBADF
#define EBADF (-5009)
#endif
#ifndef ECHILD
#define ECHILD (-5010)
#endif
#ifndef EAGAIN
#define EAGAIN (-5011)
#endif
#ifndef EWOULDBLOCK
#define EWOULDBLOCK (-7011)
#endif
#ifndef ENOMEM
#define ENOMEM (-5012)
#endif
#ifndef EACCES
#define EACCES (-5013)
#endif
#ifndef EFAULT
#define EFAULT (-5014)
#endif
#ifndef ENOTBLK
#define ENOTBLK (-5015)
#endif
#ifndef EBUSY
#define EBUSY (-5016)
#endif
#ifndef EEXIST
#define EEXIST (-5017)
#endif
#ifndef EXDEV
#define EXDEV (-5018)
#endif
#ifndef ENODEV
#define ENODEV (-5019)
#endif
#ifndef ENOTDIR
#define ENOTDIR (-5020)
#endif
#ifndef EISDIR
#define EISDIR (-5021)
#endif
#ifndef EINVAL
#define EINVAL (-5022)
#endif
#ifndef ENFILE
#define ENFILE (-5023)
#endif
#ifndef EMFILE
#define EMFILE (-5024)
#endif
#ifndef ENOTTY
#define ENOTTY (-5025)
#endif
#ifndef ETXTBSY
#define ETXTBSY (-5026)
#endif
#ifndef EFBIG
#define EFBIG (-5027)
#endif
#ifndef ENOSPC
#define ENOSPC (-5028)
#endif
#ifndef ESPIPE
#define ESPIPE (-5029)
#endif
#ifndef EROFS
#define EROFS (-5030)
#endif
#ifndef EMLINK
#define EMLINK (-5031)
#endif
#ifndef EPIPE
#define EPIPE (-5032)
#endif
#ifndef EDOM
#define EDOM (-5033)
#endif
#ifndef ERANGE
#define ERANGE (-5034)
#endif
#ifndef EDEADLK
#define EDEADLK (-5035)
#endif
#ifndef EDEADLOCK
#define EDEADLOCK (-7035)
#endif
#ifndef ENAMETOOLONG
#define ENAMETOOLONG (-5036)
#endif
#ifndef ENOLCK
#define ENOLCK (-5037)
#endif
#ifndef ENOSYS
#define ENOSYS (-5038)
#endif
#ifndef ENOTEMPTY
#define ENOTEMPTY (-5039)
#endif
#ifndef ELOOP
#define ELOOP (-5040)
#endif
#ifndef ENOMSG
#define ENOMSG (-5042)
#endif
#ifndef EIDRM
#define EIDRM (-5043)
#endif
#ifndef ECHRNG
#define ECHRNG (-5044)
#endif
#ifndef EL2NSYNC
#define EL2NSYNC (-5045)
#endif
#ifndef EL3HLT
#define EL3HLT (-5046)
#endif
#ifndef EL3RST
#define EL3RST (-5047)
#endif
#ifndef ELNRNG
#define ELNRNG (-5048)
#endif
#ifndef EUNATCH
#define EUNATCH (-5049)
#endif
#ifndef ENOCSI
#define ENOCSI (-5050)
#endif
#ifndef EL2HLT
#define EL2HLT (-5051)
#endif
#ifndef EBADE
#define EBADE (-5052)
#endif
#ifndef EBADR
#define EBADR (-5053)
#endif
#ifndef EXFULL
#define EXFULL (-5054)
#endif
#ifndef ENOANO
#define ENOANO (-5055)
#endif
#ifndef EBADRQC
#define EBADRQC (-5056)
#endif
#ifndef EBADSLT
#define EBADSLT (-5057)
#endif
#ifndef EBFONT
#define EBFONT (-5059)
#endif
#ifndef ENOSTR
#define ENOSTR (-5060)
#endif
#ifndef ENODATA
#define ENODATA (-5061)
#endif
#ifndef ETIME
#define ETIME (-5062)
#endif
#ifndef ENOSR
#define ENOSR (-5063)
#endif
#ifndef ENONET
#define ENONET (-5064)
#endif
#ifndef ENOPKG
#define ENOPKG (-5065)
#endif
#ifndef EREMOTE
#define EREMOTE (-5066)
#endif
#ifndef ENOLINK
#define ENOLINK (-5067)
#endif
#ifndef EADV
#define EADV (-5068)
#endif
#ifndef ESRMNT
#define ESRMNT (-5069)
#endif
#ifndef ECOMM
#define ECOMM (-5070)
#endif
#ifndef EPROTO
#define EPROTO (-5071)
#endif
#ifndef EMULTIHOP
#define EMULTIHOP (-5072)
#endif
#ifndef EDOTDOT
#define EDOTDOT (-5073)
#endif
#ifndef EBADMSG
#define EBADMSG (-5074)
#endif
#ifndef EOVERFLOW
#define EOVERFLOW (-5075)
#endif
#ifndef ENOTUNIQ
#define ENOTUNIQ (-5076)
#endif
#ifndef EBADFD
#define EBADFD (-5077)
#endif
#ifndef EREMCHG
#define EREMCHG (-5078)
#endif
#ifndef ELIBACC
#define ELIBACC (-5079)
#endif
#ifndef ELIBBAD
#define ELIBBAD (-5080)
#endif
#ifndef ELIBSCN
#define ELIBSCN (-5081)
#endif
#ifndef ELIBMAX
#define ELIBMAX (-5082)
#endif
#ifndef ELIBEXEC
#define ELIBEXEC (-5083)
#endif
#ifndef EILSEQ
#define EILSEQ (-5084)
#endif
#ifndef ERESTART
#define ERESTART (-5085)
#endif
#ifndef ESTRPIPE
#define ESTRPIPE (-5086)
#endif
#ifndef EUSERS
#define EUSERS (-5087)
#endif
#ifndef ENOTSOCK
#define ENOTSOCK (-5088)
#endif
#ifndef EDESTADDRREQ
#define EDESTADDRREQ (-5089)
#endif
#ifndef EMSGSIZE
#define EMSGSIZE (-5090)
#endif
#ifndef EPROTOTYPE
#define EPROTOTYPE (-5091)
#endif
#ifndef ENOPROTOOPT
#define ENOPROTOOPT (-5092)
#endif
#ifndef EPROTONOSUPPORT
#define EPROTONOSUPPORT (-5093)
#endif
#ifndef ESOCKTNOSUPPORT
#define ESOCKTNOSUPPORT (-5094)
#endif
#ifndef EOPNOTSUPP
#define EOPNOTSUPP (-5095)
#endif
#ifndef EPFNOSUPPORT
#define EPFNOSUPPORT (-5096)
#endif
#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT (-5097)
#endif
#ifndef EADDRINUSE
#define EADDRINUSE (-5098)
#endif
#ifndef EADDRNOTAVAIL
#define EADDRNOTAVAIL (-5099)
#endif
#ifndef ENETDOWN
#define ENETDOWN (-5100)
#endif
#ifndef ENETUNREACH
#define ENETUNREACH (-5101)
#endif
#ifndef ENETRESET
#define ENETRESET (-5102)
#endif
#ifndef ECONNABORTED
#define ECONNABORTED (-5103)
#endif
#ifndef ECONNRESET
#define ECONNRESET (-5104)
#endif
#ifndef ENOBUFS
#define ENOBUFS (-5105)
#endif
#ifndef EISCONN
#define EISCONN (-5106)
#endif
#ifndef ENOTCONN
#define ENOTCONN (-5107)
#endif
#ifndef ESHUTDOWN
#define ESHUTDOWN (-5108)
#endif
#ifndef ETOOMANYREFS
#define ETOOMANYREFS (-5109)
#endif
#ifndef ETIMEDOUT
#define ETIMEDOUT (-5110)
#endif
#ifndef ECONNREFUSED
#define ECONNREFUSED (-5111)
#endif
#ifndef EHOSTDOWN
#define EHOSTDOWN (-5112)
#endif
#ifndef EHOSTUNREACH
#define EHOSTUNREACH (-5113)
#endif
#ifndef EALREADY
#define EALREADY (-5114)
#endif
#ifndef EINPROGRESS
#define EINPROGRESS (-5115)
#endif
#ifndef ESTALE
#define ESTALE (-5116)
#endif
#ifndef EUCLEAN
#define EUCLEAN (-5117)
#endif
#ifndef ENOTNAM
#define ENOTNAM (-5118)
#endif
#ifndef ENAVAIL
#define ENAVAIL (-5119)
#endif
#ifndef EISNAM
#define EISNAM (-5120)
#endif
#ifndef EREMOTEIO
#define EREMOTEIO (-5121)
#endif
#ifndef EDQUOT
#define EDQUOT (-5122)
#endif
#ifndef ENOMEDIUM
#define ENOMEDIUM (-5123)
#endif
#ifndef EMEDIUMTYPE
#define EMEDIUMTYPE (-5124)
#endif
#ifndef ECANCELED
#define ECANCELED (-5125)
#endif
#ifndef ENOKEY
#define ENOKEY (-5126)
#endif
#ifndef EKEYEXPIRED
#define EKEYEXPIRED (-5127)
#endif
#ifndef EKEYREVOKED
#define EKEYREVOKED (-5128)
#endif
#ifndef EKEYREJECTED
#define EKEYREJECTED (-5129)
#endif
#ifndef EOWNERDEAD
#define EOWNERDEAD (-5130)
#endif
#ifndef ENOTRECOVERABLE
#define ENOTRECOVERABLE (-5131)
#endif
#ifndef ERFKILL
#define ERFKILL (-5132)
#endif
#ifndef EPROCLIM
#define EPROCLIM (-6067)
#endif
#ifndef EBADRPC
#define EBADRPC (-6072)
#endif
#ifndef ERPCMISMATCH
#define ERPCMISMATCH (-6073)
#endif
#ifndef EPROGUNAVAIL
#define EPROGUNAVAIL (-6074)
#endif
#ifndef EPROGMISMATCH
#define EPROGMISMATCH (-6075)
#endif
#ifndef EPROCUNAVAIL
#define EPROCUNAVAIL (-6076)
#endif
#ifndef EFTYPE
#define EFTYPE (-6079)
#endif
#ifndef EAUTH
#define EAUTH (-6080)
#endif
#ifndef ENEEDAUTH
#define ENEEDAUTH (-6081)
#endif
#ifndef ENOATTR
#define ENOATTR (-6087)
#endif
#ifndef ENOTCAPABLE
#define ENOTCAPABLE (-6093)
#endif
#endif
tinyssh-20180201/tinyssh/env.c 0000664 0000000 0000000 00000000676 13227043065 0016122 0 ustar 00root root 0000000 0000000 #include "str.h"
#include "env.h"
/*
The 'env_get(name)' function returns the value of the first environment
variable whose name is 'name', or 0 if there is no such variable.
*/
char *env_get(const char *name) {
long long len, i;
if (!name) return 0;
len = str_len(name);
for (i = 0; environ[i]; ++i)
if (str_start(environ[i], name) && (environ[i][len] == '='))
return environ[i] + len + 1;
return 0;
}
tinyssh-20180201/tinyssh/env.h 0000664 0000000 0000000 00000000420 13227043065 0016112 0 ustar 00root root 0000000 0000000 #ifndef _ENV_H____
#define _ENV_H____
/*
The environment 'environ', is a 0-terminated array
of 0-terminated strings, called environment variables.
Each environment variable is of the form name=value.
*/
extern char **environ;
extern char *env_get(const char *);
#endif
tinyssh-20180201/tinyssh/getln.c 0000664 0000000 0000000 00000002210 13227043065 0016425 0 ustar 00root root 0000000 0000000 /*
20140323
Jan Mojzis
Public domain.
*/
#include
#include
#include "e.h"
#include "getln.h"
static int getch(int fd, char *x) {
int r;
struct pollfd p;
for (;;) {
r = read(fd, x, 1);
if (r == -1) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK) {
p.fd = fd;
p.events = POLLIN | POLLERR;
poll(&p, 1, -1);
continue;
}
}
break;
}
return r;
}
/*
The function 'getln' reads line from filedescriptor 'fd' into
buffer 'xv' of length 'xmax'.
*/
int getln(int fd, void *xv, long long xmax) {
long long xlen;
int r;
char ch;
char *x = (char *)xv;
if (xmax < 1) { errno = EINVAL; return -1; }
x[0] = 0;
if (fd < 0) { errno = EBADF; return -1; }
xlen = 0;
for (;;) {
if (xlen >= xmax - 1) { x[xmax - 1] = 0; errno = ENOMEM; return -1; }
r = getch(fd, &ch);
if (r != 1) { close(fd); fd = -1; break; }
if (ch == 0) ch = '\n';
x[xlen++] = ch;
if (ch == '\n') break;
}
x[xlen] = 0;
return r;
}
tinyssh-20180201/tinyssh/getln.h 0000664 0000000 0000000 00000000135 13227043065 0016436 0 ustar 00root root 0000000 0000000 #ifndef _GETLN_H____
#define _GETLN_H____
extern int getln(int, void *, long long);
#endif
tinyssh-20180201/tinyssh/global.c 0000664 0000000 0000000 00000002537 13227043065 0016570 0 ustar 00root root 0000000 0000000 /*
20140214
Jan Mojzis
Public domain.
The 'global' library is used for global memory
initializition and global memory cleanup.
The 'global' library also has space
for 2 versatile buffers.
*/
#include
#include "newenv.h"
#include "channel.h"
#include "packet.h"
#include "sshcrypto.h"
#include "purge.h"
#include "trymlock.h"
#include "global.h"
unsigned char global_bspace1[GLOBAL_BSIZE];
unsigned char global_bspace2[GLOBAL_BSIZE];
/*
Initialize memory space.
*/
void global_init(void) {
packet_init();
channel_init();
newenv_init();
sshcrypto_init();
trymlock(global_bspace1, sizeof global_bspace1);
trymlock(global_bspace2, sizeof global_bspace2);
purge(global_bspace1, sizeof global_bspace1);
purge(global_bspace2, sizeof global_bspace2);
}
/*
Remove sentitive data from allocated memory.
*/
void global_purge(void) {
unsigned char stack[4096];
purge(stack, sizeof stack);
packet_purge();
channel_purge();
newenv_purge();
sshcrypto_purge();
purge(global_bspace1, sizeof global_bspace1);
purge(global_bspace2, sizeof global_bspace2);
trymunlock(global_bspace1, sizeof global_bspace1);
trymunlock(global_bspace2, sizeof global_bspace2);
}
/*
Remove sentitive data from allocated memory
and exit with status 'x'.
*/
void global_die(int x) {
global_purge();
_exit(x);
}
tinyssh-20180201/tinyssh/global.h 0000664 0000000 0000000 00000000423 13227043065 0016565 0 ustar 00root root 0000000 0000000 #ifndef _GLOBAL_H____
#define _GLOBAL_H____
#define GLOBAL_BSIZE 65536
extern unsigned char global_bspace1[GLOBAL_BSIZE];
extern unsigned char global_bspace2[GLOBAL_BSIZE];
extern void global_init(void);
extern void global_purge(void);
extern void global_die(int);
#endif
tinyssh-20180201/tinyssh/iptostr.c 0000664 0000000 0000000 00000005573 13227043065 0017037 0 ustar 00root root 0000000 0000000 /*
20130604
Jan Mojzis
Public domain.
*/
#include "byte.h"
#include "iptostr.h"
static char *iptostr4(char *, const unsigned char *);
static char *iptostr6(char *, const unsigned char *);
/*
The 'iptostr(strbuf,ip)' function converts IP address 'ip'
from network byte order into the 0-terminated string.
The 'ip' length is always 16 bytes. The caller must
allocate at least IPTOSTR_LEN bytes for 'strbuf'.
*/
char *iptostr(char *strbuf, const unsigned char *ip) {
static char staticbuf[IPTOSTR_LEN];
if (!strbuf) strbuf = staticbuf; /* not thread-safe */
if (byte_isequal("\0\0\0\0\0\0\0\0\0\0\377\377", 12, ip)) {
return iptostr4(strbuf, ip + 12);
}
return iptostr6(strbuf, ip);
}
/* convert IPv4 address */
static char *iptostr4(char *strbuf, const unsigned char *ip) {
long long i, len = 0;
unsigned long long num;
for (i = 3; i >= 0; --i) {
num = ip[i];
do {
num /= 10; ++len;
} while (num);
if (i > 0) ++len;
}
strbuf += len;
for (i = 3; i >= 0; --i) {
num = ip[i];
do {
*--strbuf = '0' + (num % 10);
num /= 10;
} while (num);
if (i > 0) *--strbuf = '.';
}
while (len < IPTOSTR_LEN) strbuf[len++] = 0;
return strbuf;
}
/*
The 'ip' is splited into 8 16-bit blocks and
the 'countz' function counts successive zeros and
searches for largest zero-block.
'first' ... first position of the zero-block
'last' ... last position of the zero-block
*/
static void countz(long long *first, long long *last, const unsigned long long *ip) {
long long i, j, e;
long long count[8];
for (i = 7; i >= 0; --i) count[i] = 0;
e = 8;
for (i = 7; i >= 0; --i) {
if (!ip[i]) {
for (j = i; j < e; ++j) ++count[j];
}
else {
e = i;
}
}
e = 0; j = 0;
for (i = 7; i >= 0; --i) {
if (count[i]) {
if (count[i] >= e) { e = count[i]; j = i; }
}
}
*first = j - count[j] + 1;
*last = j;
}
/* convert IPv6 address */
static char *iptostr6(char *strbuf, const unsigned char *ip) {
long long first, last, i;
unsigned long long ip2[8];
char *s = strbuf;
for (i = 7; i >= 0; --i) {
ip2[i] = ip[2 * i];
ip2[i] <<= 8;
ip2[i] += ip[2 * i + 1];
}
countz(&first, &last, ip2);
strbuf += IPTOSTR_LEN - 1;
*strbuf = 0;
for (i = 7; i >= 0; --i) {
if (i <= last && i >= first && first != last) {
if (i == last) *--strbuf = ':';
if (i == 7) *--strbuf = ':';
continue;
}
do {
*--strbuf = "0123456789abcdef"[ip2[i] & 15];
ip2[i] >>= 4;
} while (ip2[i]);
if (i > 0) *--strbuf = ':';
}
i = strbuf - s;
byte_copy(s, IPTOSTR_LEN - i, strbuf);
byte_zero(s + IPTOSTR_LEN - i, i);
return s;
}
tinyssh-20180201/tinyssh/iptostr.h 0000664 0000000 0000000 00000000204 13227043065 0017026 0 ustar 00root root 0000000 0000000 #ifndef _IPTOSTR_H____
#define _IPTOSTR_H____
#define IPTOSTR_LEN 46
extern char *iptostr(char *, const unsigned char *);
#endif
tinyssh-20180201/tinyssh/limit.h 0000664 0000000 0000000 00000000423 13227043065 0016443 0 ustar 00root root 0000000 0000000 #ifndef _LIMIT_H____
#define _LIMIT_H____
#include "haslimits.h"
#ifdef HASLIMITS
#include
#endif
#ifndef LOGIN_NAME_MAX
#define LOGIN_NAME_MAX 256
#endif
#ifndef NAME_MAX
#define NAME_MAX 255
#endif
#ifndef TTY_NAME_MAX
#define TTY_NAME_MAX 32
#endif
#endif
tinyssh-20180201/tinyssh/load.c 0000664 0000000 0000000 00000000474 13227043065 0016245 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/load.c */
#include
#include "readall.h"
#include "open.h"
#include "e.h"
#include "load.h"
int load(const char *fn,void *x,long long xlen)
{
int fd;
int r;
fd = open_read(fn);
if (fd == -1) return -1;
r = readall(fd,x,xlen);
close(fd);
return r;
}
tinyssh-20180201/tinyssh/load.h 0000664 0000000 0000000 00000000127 13227043065 0016245 0 ustar 00root root 0000000 0000000 #ifndef LOAD_H
#define LOAD_H
extern int load(const char *,void *,long long);
#endif
tinyssh-20180201/tinyssh/log.c 0000664 0000000 0000000 00000010003 13227043065 0016074 0 ustar 00root root 0000000 0000000 /*
20140202
Jan Mojzis
Public domain.
The 'log' library is used to write log messages
on standard error output including source file,
function and line number.
Non-printable characters are replaced using '?'.
The 'log' library also supports syslog.
*/
#include
#include "writeall.h"
#include "randommod.h"
#include "purge.h"
#include "numtostr.h"
#include "e.h"
#include "log.h"
static const char *logtext = "x";
static char logstring[9] = "________";
static int loglevel = 1;
static int logflagfnln = 1;
static int logflagsyslog = 0;
static char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRTSUVWXYZ0123456789";
void log_init(int level, const char *text, int line, int flagsyslog) {
long long i;
loglevel = level;
logtext = text;
logflagfnln = line;
for (i = 0; i < sizeof logstring; ++i) {
logstring[i] = chars[randommod(sizeof chars - 1)];
}
logstring[sizeof logstring - 1] = 0;
if (flagsyslog) {
openlog(text, 0, LOG_DAEMON);
logflagsyslog = 1;
}
errno = 0;
}
char *log_string(void) {
return logstring;
}
static char buf[257];
static long long buflen = 0;
static void flush(void) {
if (logflagsyslog) {
buf[buflen] = 0;
syslog(LOG_INFO, "%s", buf);
}
else {
writeall(2, buf, buflen);
}
buflen = 0;
purge(buf, buflen);
}
static void outs(const char *x) {
long long i;
for(i = 0; x[i]; ++i) {
if (buflen >= sizeof buf - 1) flush();
if (x[i] == '\n') buf[buflen++] = '\n';
else if (x[i] < 32) buf[buflen++] = '?';
else if (x[i] > 126) buf[buflen++] = '?';
else buf[buflen++] = x[i];
}
}
static void outnum(unsigned long long n) {
char b[NUMTOSTR_LEN];
outs(numtostr(b, n));
}
void log_9_(
int level
,int ignoreerrno
,const char *f
,unsigned long long l
,const char *s0
,const char *s1
,const char *s2
,const char *s3
,const char *s4
,const char *s5
,const char *s6
,const char *s7
,const char *s8
)
{
const char *s[9];
long long i;
const char *m;
if (level > loglevel) return;
s[0] = s0; s[1] = s1; s[2] = s2; s[3] = s3;
s[4] = s4; s[5] = s5; s[6] = s6; s[7] = s7;
s[8] = s8;
switch (level) {
case -1:
m = "BUG";
break;
case 0:
m = "usage";
break;
case 1:
m = "fatal";
break;
case 2:
if (!ignoreerrno) m = "warning";
else m = "info";
break;
case 3:
m = "debug";
break;
default:
m = "unknown";
break;
}
/* name: session: level: message (error){file:line} */
/* 'name:' */
do {
if (level == 0) break; /* don't print in usage level */
if (logflagsyslog) break; /* don't print in syslog mode */
outs(logtext); outs(": ");
} while (0);
/* 'session:' */
do {
if (level == 0) break; /* don't print in usage level */
if (!logflagfnln) break; /* don't print when disabled */
outs(logstring); outs(": ");
} while (0);
/* 'level:' */
do {
if (level == 0) break; /* don't print in usage level */
outs(m); outs(": ");
} while (0);
/* 'message' */
for (i = 0; i < 9 && s[i]; ++i) outs(s[i]);
outs(" ");
/* '(error)' */
do {
if (!errno) break; /* don't print when errno = 0 */
if (ignoreerrno) break; /* don't print when disabled */
outs("("); outs(e_str(errno)); outs(")");
} while (0);
/* {file:line} */
do {
if (level == 0) break; /* don't print in usage level */
if (!f) break; /* don't print when no f */
if (!l) break; /* don't print when no l */
if (!logflagfnln && level != -1) break; /* don't print when disabled */
outs("{"); outs(f); outs(":"); outnum(l); outs("}");
} while (0);
outs("\n");
flush();
return;
}
tinyssh-20180201/tinyssh/log.h 0000664 0000000 0000000 00000005231 13227043065 0016110 0 ustar 00root root 0000000 0000000 #ifndef _LOG_H____
#define _LOG_H____
extern void log_init(int, const char *, int, int);
extern char *log_string(void);
extern void log_9_(
int,
int,
const char *,
unsigned long long,
const char *,
const char *,
const char *,
const char *,
const char *,
const char *,
const char *,
const char *,
const char *);
/* usage */
#define log_u9(a,b,c,d,e,f,g,h,i) log_9_(0,1,__FILE__,__LINE__,a,b,c,d,e,f,g,h,i)
#define log_u8(a,b,c,d,e,f,g,h) log_u9(a,b,c,d,e,f,g,h,0)
#define log_u7(a,b,c,d,e,f,g) log_u8(a,b,c,d,e,f,g,0)
#define log_u6(a,b,c,d,e,f) log_u7(a,b,c,d,e,f,0)
#define log_u5(a,b,c,d,e) log_u6(a,b,c,d,e,0)
#define log_u4(a,b,c,d) log_u5(a,b,c,d,0)
#define log_u3(a,b,c) log_u4(a,b,c,0)
#define log_u2(a,b) log_u3(a,b,0)
#define log_u1(a) log_u2(a,0)
/* fatal */
#define log_f9(a,b,c,d,e,f,g,h,i) log_9_(1,0,__FILE__,__LINE__,a,b,c,d,e,f,g,h,i)
#define log_f8(a,b,c,d,e,f,g,h) log_f9(a,b,c,d,e,f,g,h,0)
#define log_f7(a,b,c,d,e,f,g) log_f8(a,b,c,d,e,f,g,0)
#define log_f6(a,b,c,d,e,f) log_f7(a,b,c,d,e,f,0)
#define log_f5(a,b,c,d,e) log_f6(a,b,c,d,e,0)
#define log_f4(a,b,c,d) log_f5(a,b,c,d,0)
#define log_f3(a,b,c) log_f4(a,b,c,0)
#define log_f2(a,b) log_f3(a,b,0)
#define log_f1(a) log_f2(a,0)
/* warning */
#define log_w9(a,b,c,d,e,f,g,h,i) log_9_(2,0,__FILE__,__LINE__,a,b,c,d,e,f,g,h,i)
#define log_w8(a,b,c,d,e,f,g,h) log_w9(a,b,c,d,e,f,g,h,0)
#define log_w7(a,b,c,d,e,f,g) log_w8(a,b,c,d,e,f,g,0)
#define log_w6(a,b,c,d,e,f) log_w7(a,b,c,d,e,f,0)
#define log_w5(a,b,c,d,e) log_w6(a,b,c,d,e,0)
#define log_w4(a,b,c,d) log_w5(a,b,c,d,0)
#define log_w3(a,b,c) log_w4(a,b,c,0)
#define log_w2(a,b) log_w3(a,b,0)
#define log_w1(a) log_w2(a,0)
/* info */
#define log_i9(a,b,c,d,e,f,g,h,i) log_9_(2,1,__FILE__,__LINE__,a,b,c,d,e,f,g,h,i)
#define log_i8(a,b,c,d,e,f,g,h) log_i9(a,b,c,d,e,f,g,h,0)
#define log_i7(a,b,c,d,e,f,g) log_i8(a,b,c,d,e,f,g,0)
#define log_i6(a,b,c,d,e,f) log_i7(a,b,c,d,e,f,0)
#define log_i5(a,b,c,d,e) log_i6(a,b,c,d,e,0)
#define log_i4(a,b,c,d) log_i5(a,b,c,d,0)
#define log_i3(a,b,c) log_i4(a,b,c,0)
#define log_i2(a,b) log_i3(a,b,0)
#define log_i1(a) log_i2(a,0)
/* debug */
#define log_d9(a,b,c,d,e,f,g,h,i) log_9_(3,1,__FILE__,__LINE__,a,b,c,d,e,f,g,h,i)
#define log_d8(a,b,c,d,e,f,g,h) log_d9(a,b,c,d,e,f,g,h,0)
#define log_d7(a,b,c,d,e,f,g) log_d8(a,b,c,d,e,f,g,0)
#define log_d6(a,b,c,d,e,f) log_d7(a,b,c,d,e,f,0)
#define log_d5(a,b,c,d,e) log_d6(a,b,c,d,e,0)
#define log_d4(a,b,c,d) log_d5(a,b,c,d,0)
#define log_d3(a,b,c) log_d4(a,b,c,0)
#define log_d2(a,b) log_d3(a,b,0)
#define log_d1(a) log_d2(a,0)
#endif
tinyssh-20180201/tinyssh/loginshell.c 0000664 0000000 0000000 00000001202 13227043065 0017454 0 ustar 00root root 0000000 0000000 /*
20140429
Jan Mojzis
Public domain.
*/
#include "e.h"
#include "loginshell.h"
/*
The 'loginshell()' function converts shell path
into -shell name. For example:
'/bin/sh' -> '-sh'
'/usr/pkg/bin/bash' -> '-bash'
*/
int loginshell(char *out, long long outlen, const char *in) {
long long len, pos = -1;
if (!out || !in || outlen < 2) { errno = EINVAL; return 0; }
for (len = 0; in[len]; ++len) if (in[len] == '/') pos = len;
in += pos + 1;
len -= pos + 1;
if (len > outlen - 2) len = outlen - 2; /* truncate name */
*out++ = '-';
while (len > 0) { *out++ = *in++; --len; }
*out = 0;
return 1;
}
tinyssh-20180201/tinyssh/loginshell.h 0000664 0000000 0000000 00000000165 13227043065 0017470 0 ustar 00root root 0000000 0000000 #ifndef _LOGINSHELL_H____
#define _LOGINSHELL_H____
extern int loginshell(char *, long long, const char *);
#endif
tinyssh-20180201/tinyssh/logsys.c 0000664 0000000 0000000 00000007212 13227043065 0016643 0 ustar 00root root 0000000 0000000 /*
20140212
Jan Mojzis
Public domain.
The 'logsys' library is used to login recording
and logout recording in the system using
utmp/utmpx ...
Portability - HELL !!
*/
/*
tested on:
FreeBSD 9.2
OpenBSD 5.3
NetBSD 6.1.2
Linux Debian 7.0
SunOS 5.11
*/
#include
#include
#include
#include
#include "hasutilh.h"
#ifdef HASUTILH
#include
#endif
#include "hasutmpx.h"
#ifdef HASUTMPX
#include
#endif
#include "hasutmpxupdwtmpx.h"
#include "hasutmpxsyslen.h"
#include "hasutmp.h"
#ifdef HASUTMP
#include
#endif
#include "hasutmpname.h"
#include "hasutmppid.h"
#include "hasutmptime.h"
#include "hasutmptv.h"
#include "hasutmptype.h"
#include "hasutmphost.h"
#include "hasutmpuser.h"
#include "hasutmplogwtmp.h"
#include "hasutmploginlogout.h"
#include "str.h"
#include "byte.h"
#include "logsys.h"
static void logsys_utmpx(const char *user, const char *host, const char *name, long long pid, int flaglogin) {
#ifdef HASUTMPX
struct timeval tv;
struct utmpx ut;
byte_zero(&ut, sizeof ut);
/* line */
if (!name) name = ttyname(0);
if (!name) return;
if (str_start(name, "/dev/")) name += 5;
str_copyn(ut.ut_line, sizeof ut.ut_line, name);
/* host */
str_copyn(ut.ut_host, sizeof ut.ut_host, host);
#ifdef HASUTMPXSYSLEN
ut.ut_syslen = str_len(ut.ut_host) + 1;
#endif
/* user */
str_copyn(ut.ut_user, sizeof ut.ut_user, user);
/* time */
gettimeofday(&tv, 0);
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;
/* pid */
if (pid == 0) pid = getpid();
ut.ut_pid = pid;
/* type */
if (flaglogin) ut.ut_type = USER_PROCESS;
else ut.ut_type = DEAD_PROCESS;
/* update utmpx */
setutxent();
pututxline(&ut);
endutxent();
/* update wtmpx */
#if defined(_PATH_WTMPX) && defined(HASUTMPXUPDWTMPX)
updwtmpx(_PATH_WTMPX, &ut);
#endif
#endif
}
static void logsys_utmp(const char *user, const char *host, const char *name, long long pid, int flaglogin) {
#ifdef HASUTMP
struct timeval tv;
struct utmp ut;
byte_zero(&ut, sizeof ut);
/* line */
if (!name) name = ttyname(0);
if (!name) return;
if (str_start(name, "/dev/")) name += 5;
str_copyn(ut.ut_line, sizeof ut.ut_line, name);
/* host */
#ifdef HASUTMPHOST
str_copyn(ut.ut_host, sizeof ut.ut_host, host);
#endif
/* user */
#ifdef HASUTMPNAME
str_copyn(ut.ut_name, sizeof ut.ut_name, user);
#endif
#ifdef HASUTMPUSER
str_copyn(ut.ut_user, sizeof ut.ut_user, user);
#endif
/* time */
gettimeofday(&tv, 0);
#ifdef HASUTMPTIME
ut.ut_time = tv.tv_sec;
#endif
#ifdef HASUTMPTV
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;
#endif
/* pid */
#ifdef HASUTMPPID
if (pid == 0) pid = getpid();
ut.ut_pid = pid;
#endif
/* type */
#ifdef HASUTMPTYPE
if (flaglogin) ut.ut_type = USER_PROCESS;
else ut.ut_type = DEAD_PROCESS;
#endif
if (flaglogin) {
#ifdef HASUTMPLOGINLOGOUT
login(&ut);
#else
setutent();
pututline(&ut);
endutent();
#endif
}
else {
#ifdef HASUTMPLOGINLOGOUT
logout(ut.ut_line);
#else
setutent();
pututline(&ut);
endutent();
#endif
#if defined(HASUTMPLOGWTMP)
logwtmp(ut.ut_line, "", "");
#endif
}
#endif
}
void logsys_login(const char *user, const char *host, const char *name, long long pid) {
logsys_utmp(user, host, name, pid, 1);
logsys_utmpx(user, host, name, pid, 1);
}
void logsys_logout(const char *user, const char *host, const char *name, long long pid) {
logsys_utmp(user, host, name, pid, 0);
logsys_utmpx(user, host, name, pid, 0);
}
tinyssh-20180201/tinyssh/logsys.h 0000664 0000000 0000000 00000000334 13227043065 0016646 0 ustar 00root root 0000000 0000000 /* Public domain. */
#ifndef _LOGSYS_H____
#define _LOGSYS_H____
void logsys_login(const char *, const char *, const char *, long long);
void logsys_logout(const char *, const char *, const char *, long long);
#endif
tinyssh-20180201/tinyssh/newenv.c 0000664 0000000 0000000 00000004372 13227043065 0016631 0 ustar 00root root 0000000 0000000 /*
20140215
Jan Mojzis
Public domain.
The 'newenv' library is used to execute process in completely new environment.
*/
#include
#include "e.h"
#include "byte.h"
#include "str.h"
#include "purge.h"
#include "bug.h"
#include "env.h"
#include "trymlock.h"
#include "newenv.h"
#define NEWENV_LEN 128
#define NEWENV_SPACE 2048
static struct newenv {
char *e[NEWENV_LEN];
long long elen;
char es[NEWENV_SPACE];
long long eslen;
} n = { {0}, 0, {0}, 0 };
/*
Remove sentitive data from allocated memory.
*/
void newenv_purge(void) {
purge(&n, sizeof n);
n.elen = NEWENV_LEN;
n.eslen = NEWENV_SPACE;
trymunlock(&n, sizeof n);
}
/*
Initialize newenv structure.
*/
void newenv_init(void) {
trymlock(&n, sizeof n);
purge(&n, sizeof n);
n.e[0] = 0;
n.elen = n.eslen = 0;
}
/*
The 'newenv_env/newenv_lowenv' function adds the variable
into new environment.
The newenv_lowenv is limited to a half of the buffer-space.
*/
int newenv_env_(int x, const char *s, const char *t) {
long long slen, tlen, len, i;
if (!x || !s || !t) bug_inval();
if (n.elen < 0) bug_inval();
if (n.eslen < 0) bug_inval();
slen = str_len(s);
tlen = str_len(t);
len = slen + tlen + 2;
if (!n.elen) newenv_init();
for (i = 0; n.e[i]; ++i) {
if (str_start(n.e[i], s) && (n.e[i][slen] == '=')) {
n.e[i] = n.e[--n.elen];
break;
}
}
if (n.elen + 2 > NEWENV_LEN / x) { errno = ENOMEM; return 0; }
if (n.eslen + len > NEWENV_SPACE / x) { errno = ENOMEM; return 0; }
byte_copy(n.es + n.eslen, slen, s); n.eslen += slen; n.es[n.eslen++] = '=';
byte_copy(n.es + n.eslen, tlen, t); n.eslen += tlen; n.es[n.eslen++] = 0;
n.e[n.elen++] = n.es + n.eslen - len;
n.e[n.elen] = 0;
return 1;
}
/*
The 'newenv_copyenv' function copies the variable
from current environment into new environment.
*/
int newenv_copyenv(const char *s) {
char *t;
if (!s) bug_inval();
t = env_get(s);
if (!t) { errno = ENOENT; return 0; }
return newenv_env_(1, s, t);
}
/*
The 'newenv_exec' function executes the command
in new environment.
*/
void newenv_exec(char *filename, char **argv) {
if (!argv || !filename) bug_inval();
execve(filename, argv, n.e);
}
tinyssh-20180201/tinyssh/newenv.h 0000664 0000000 0000000 00000000550 13227043065 0016630 0 ustar 00root root 0000000 0000000 #ifndef _NEWENV_H____
#define _NEWENV_H____
extern int newenv_env_(int, const char *, const char *);
#define newenv_env(x, y) newenv_env_(1, (x), (y))
#define newenv_lowenv(x, y) newenv_env_(2, (x), (y))
extern int newenv_copyenv(const char *);
extern void newenv_exec(char *, char **);
extern void newenv_init(void);
extern void newenv_purge(void);
#endif
tinyssh-20180201/tinyssh/numtostr.c 0000664 0000000 0000000 00000001632 13227043065 0017216 0 ustar 00root root 0000000 0000000 /*
20130604
Jan Mojzis
Public domain.
*/
#include "numtostr.h"
/*
The 'numtostr(strbuf,n)' converts number 'n' into the 0-terminated string.
The caller must allocate at least NUMTOSTR_LEN bytes for 'strbuf'.
The 'numtostr' function is ready for 128-bit integer.
*/
char *numtostr(char *strbuf, long long n) {
long long len = 0;
unsigned long long n1, n2;
static char staticbuf[NUMTOSTR_LEN];
int flagsign = 0;
if (!strbuf) strbuf = staticbuf; /* not thread-safe */
if (n < 0) {
n1 = n2 = -(unsigned long long)n;
flagsign = 1;
}
else {
n1 = n2 = (unsigned long long)n;
}
do {
n1 /= 10; ++len;
} while (n1);
if (flagsign) ++len;
strbuf += len;
do {
*--strbuf = '0' + (n2 % 10);
n2 /= 10;
} while (n2);
if (flagsign) *--strbuf = '-';
while (len < NUMTOSTR_LEN) strbuf[len++] = 0;
return strbuf;
}
tinyssh-20180201/tinyssh/numtostr.h 0000664 0000000 0000000 00000000174 13227043065 0017223 0 ustar 00root root 0000000 0000000 #ifndef _NUMTOSTR_H____
#define _NUMTOSTR_H____
#define NUMTOSTR_LEN 41
extern char *numtostr(char *, long long);
#endif
tinyssh-20180201/tinyssh/open.c 0000664 0000000 0000000 00000001653 13227043065 0016267 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/open_cwd.c curvecp/open_pipe.c curvecp/open_read.c curvecp/open_write.c */
#include
#include
#include
#include
#include "blocking.h"
#include "open.h"
int open_cwd(void)
{
return open_read(".");
}
int open_pipe(int *fd)
{
int i;
if (pipe(fd) == -1) return -1;
for (i = 0;i < 2;++i) {
fcntl(fd[i],F_SETFD,1);
blocking_disable(fd[i]);
}
return 0;
}
int open_read(const char *fn)
{
#ifdef O_CLOEXEC
return open(fn,O_RDONLY | O_NONBLOCK | O_CLOEXEC);
#else
int fd = open(fn,O_RDONLY | O_NONBLOCK);
if (fd == -1) return -1;
fcntl(fd,F_SETFD,1);
return fd;
#endif
}
int open_write(const char *fn)
{
#ifdef O_CLOEXEC
return open(fn,O_CREAT | O_WRONLY | O_NONBLOCK | O_CLOEXEC,0644);
#else
int fd = open(fn,O_CREAT | O_WRONLY | O_NONBLOCK,0644);
if (fd == -1) return -1;
fcntl(fd,F_SETFD,1);
return fd;
#endif
}
tinyssh-20180201/tinyssh/open.h 0000664 0000000 0000000 00000000314 13227043065 0016265 0 ustar 00root root 0000000 0000000 #ifndef OPEN_H
#define OPEN_H
extern int open_read(const char *);
extern int open_write(const char *);
extern int open_lock(const char *);
extern int open_cwd(void);
extern int open_pipe(int *);
#endif
tinyssh-20180201/tinyssh/packet.c 0000664 0000000 0000000 00000002253 13227043065 0016572 0 ustar 00root root 0000000 0000000 /*
20140222
Jan Mojzis
Public domain.
*/
#include "purge.h"
#include "trymlock.h"
#include "packet.h"
struct packet packet = {0};
void packet_purge(void) {
purge(&packet, sizeof packet);
trymunlock(&packet, sizeof packet);
}
void packet_init(void) {
trymlock(&packet, sizeof packet);
purge(&packet, sizeof packet);
packet.flagkeys = 0;
packet.flagauthorized = 0;
packet.flagrekeying = 0;
packet.flagclosesent = 0;
packet.flageofsent = 0;
packet.flagchanneleofreceived = 0;
packet.sendpacketid = 0;
packet.receivepacketid = 0;
packet.packet_length = 0;
buf_init(&packet.hellosend, packet.hellosendspace, sizeof packet.hellosendspace);
buf_init(&packet.helloreceive, packet.helloreceivespace, sizeof packet.helloreceivespace);
buf_init(&packet.kexsend, packet.kexsendspace, sizeof packet.kexsendspace);
buf_init(&packet.kexrecv, packet.kexrecvspace, sizeof packet.kexrecvspace);
buf_init(&packet.hashbuf, packet.hashbufspace, sizeof packet.hashbufspace);
buf_init(&packet.sendbuf, packet.sendbufspace, sizeof packet.sendbufspace);
buf_init(&packet.recvbuf, packet.recvbufspace, sizeof packet.recvbufspace);
}
tinyssh-20180201/tinyssh/packet.h 0000664 0000000 0000000 00000006673 13227043065 0016611 0 ustar 00root root 0000000 0000000 /*
20140108
Jan Mojzis
Public domain.
*/
#ifndef _PACKET_H____
#define _PACKET_H____
#include "buf.h"
#include "crypto_uint32.h"
#include "crypto_uint8.h"
#include "sshcrypto.h"
#include "limit.h"
#include "channel.h"
#define PACKET_UNAUTHENTICATED_MESSAGES 30
#define PACKET_LIMIT 32768
#define PACKET_FULLLIMIT 35000
#define PACKET_RECVLIMIT 131072
#define PACKET_ZEROBYTES 64
struct packet {
/* flags */
int flagkeys;
int flagauthorized;
int flagrekeying;
/* channel */
int flageofsent;
int flagclosesent;
int flagchanneleofreceived;
/* packet id */
crypto_uint32 sendpacketid;
crypto_uint32 receivepacketid;
/* keys */
unsigned char serverkey[sshcrypto_cipher_KEYMAX];
unsigned char clientkey[sshcrypto_cipher_KEYMAX];
unsigned char servermackey[sshcrypto_cipher_KEYMAX];
unsigned char clientmackey[sshcrypto_cipher_KEYMAX];
unsigned char servernonce[sshcrypto_cipher_KEYMAX];
unsigned char clientnonce[sshcrypto_cipher_KEYMAX];
unsigned char sessionid[sshcrypto_hash_MAX];
char name[LOGIN_NAME_MAX + 1];
crypto_uint8 kex_packet_follows;
crypto_uint8 kex_guess;
/* buffers */
unsigned char hellosendspace[256];
unsigned char helloreceivespace[256];
unsigned char kexsendspace[1024];
unsigned char kexrecvspace[65536];
unsigned char hashbufspace[65536];
struct buf hellosend;
struct buf helloreceive;
struct buf kexsend;
struct buf kexrecv;
struct buf hashbuf;
/* send/recv */
unsigned char recvbufspace[4 * PACKET_FULLLIMIT + 1 + PACKET_ZEROBYTES];
unsigned char sendbufspace[4 * PACKET_FULLLIMIT + 1];
struct buf recvbuf;
struct buf sendbuf;
crypto_uint32 packet_length;
};
/* packet.c */
extern struct packet packet;
extern void packet_purge(void);
extern void packet_init(void);
/* packet_send.c */
extern int packet_sendisready(void);
extern int packet_send(void);
extern int packet_sendall(void);
/* packet_recv.c */
extern int packet_recvisready(void);
extern int packet_recv(void);
/* packet_get.c */
extern int packet_get(struct buf *, crypto_uint8);
extern int packet_getall(struct buf *, crypto_uint8);
/* packet_put.c */
extern void packet_put(struct buf *);
extern int packet_putisready(void);
/* packet_hello.c */
extern int packet_hello_send(void);
extern int packet_hello_receive(void);
/* packet_kex.c */
extern int packet_kex_send(void);
extern int packet_kex_receive(void);
/* packet_kexdh.c */
extern int packet_kexdh(const char *, struct buf *, struct buf *);
/* packet_auth.c */
extern int packet_auth(struct buf *, struct buf *);
/* packet_channel_open.c */
extern int packet_channel_open(struct buf *, struct buf *);
/* packet_channel_request.c */
extern int packet_channel_request(struct buf *, struct buf *);
/* packet_channel_recv.c */
extern int packet_channel_recv_data(struct buf *);
extern int packet_channel_recv_extendeddata(struct buf *);
extern int packet_channel_recv_windowadjust(struct buf *);
extern int packet_channel_recv_eof(struct buf *);
extern int packet_channel_recv_close(struct buf *);
/* packet_channel_send.c */
extern void packet_channel_send_data(struct buf *);
extern void packet_channel_send_extendeddata(struct buf *);
extern int packet_channel_send_windowadjust(struct buf *);
extern void packet_channel_send_eof(struct buf *);
extern int packet_channel_send_close(struct buf *, int, int);
/* packet_unimplemented.c */
extern int packet_unimplemented(struct buf *);
#endif
tinyssh-20180201/tinyssh/packet_auth.c 0000664 0000000 0000000 00000015245 13227043065 0017620 0 ustar 00root root 0000000 0000000 /*
20140110
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "e.h"
#include "str.h"
#include "packetparser.h"
#include "subprocess.h"
#include "sshcrypto.h"
#include "bug.h"
#include "purge.h"
#include "log.h"
#include "packet.h"
int packet_auth(struct buf *b, struct buf *b2) {
crypto_uint8 ch, flagsignature;
long long pos, i, count, sign_bytes = 0;
crypto_uint32 len;
const char *pkname;
int (*sign_open)(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *) = 0;
int (*parsesignpk)(unsigned char *, const unsigned char *, long long) = 0;
int (*parsesignature)(unsigned char *, const unsigned char *, long long) = 0;
void (*putsignpk)(struct buf *, const unsigned char *) = 0;
void (*putsignpkbase64)(struct buf *, const unsigned char *) = 0;
unsigned char pk[sshcrypto_sign_PUBLICKEYMAX];
unsigned char sig[sshcrypto_sign_MAX];
unsigned long long smlen;
buf_purge(b);
/* parse "ssh-userauth" */
pos = 0;
if (!packet_getall(b, SSH_MSG_SERVICE_REQUEST)) bug();
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* SSH_MSG_SERVICE_REQUEST */
if (ch != SSH_MSG_SERVICE_REQUEST) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* "ssh-userauth" */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!str_equaln((char *)b->buf + pos - len, len, "ssh-userauth")) bug_proto();
pos = packetparser_end(b->buf, b->len, pos);
/* send service accept */
b->buf[0] = SSH_MSG_SERVICE_ACCEPT;
packet_put(b);
if (!packet_sendall()) bug();
for (count = 0; count < 32; ++count) {
/* receive userauth request */
pkname = "unknown";
pos = 0;
buf_purge(b);
if (!packet_getall(b, SSH_MSG_USERAUTH_REQUEST)) bug();
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* SSH_MSG_USERAUTH_REQUEST */
if (ch != SSH_MSG_USERAUTH_REQUEST) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* name */
if (len >= sizeof packet.name) bug_proto();
pos = packetparser_copy(b->buf, b->len, pos, (unsigned char *)packet.name, len);
packet.name[len] = 0;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* "ssh-connection" */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!str_equaln((char *)b->buf + pos - len, len, "ssh-connection")) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* publickey/password/hostbased/none */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (str_equaln((char *)b->buf + pos - len, len, "none")) pkname = "none";
if (str_equaln((char *)b->buf + pos - len, len, "password")) pkname = "password";
if (str_equaln((char *)b->buf + pos - len, len, "hostbased")) pkname = "hostbased";
if (str_equaln((char *)b->buf + pos - len, len, "publickey")) {
pos = packetparser_uint8(b->buf, b->len, pos, &flagsignature);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* public key algorithm name */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (b->buf[pos] != 0) bug_proto();
pkname = (char *)b->buf + pos - len; /* XXX */
sign_open = 0; parsesignpk = 0; putsignpk = 0; putsignpkbase64 = 0; parsesignature = 0; sign_bytes = 0;
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (!sshcrypto_keys[i].sign_flagclient) continue;
if (!str_equaln(pkname, len, sshcrypto_keys[i].name)) continue;
pkname = sshcrypto_keys[i].name;
sign_open = sshcrypto_keys[i].sign_open;
parsesignature = sshcrypto_keys[i].parsesignature;
parsesignpk = sshcrypto_keys[i].parsesignpk;
putsignpk = sshcrypto_keys[i].buf_putsignpk;
putsignpkbase64 = sshcrypto_keys[i].buf_putsignpkbase64;
sign_bytes = sshcrypto_keys[i].sign_bytes;
break;
}
if (sign_open && parsesignpk && putsignpk && putsignpkbase64 && parsesignature) {
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* public key blob */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!parsesignpk(pk, b->buf + pos - len, len)) bug_proto();
if (!flagsignature) {
/* 'publickey' ... without signature */
buf_purge(b);
buf_putnum8(b, SSH_MSG_USERAUTH_PK_OK);
buf_putstring(b, pkname);
putsignpk(b, pk);
packet_put(b);
if (!packet_sendall()) bug();
continue;
}
/* 'publickey' ... with signature */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* signature blob */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!parsesignature(sig, b->buf + pos - len, len)) bug_proto();
pos = packetparser_end(b->buf, b->len, pos);
purge(b->buf + b->len - len - 4, len + 4);
b->len -= len + 4;
/* authenticate user - verify signature */
buf_purge(b2);
buf_put(b2, sig, sign_bytes);
buf_putstringlen(b2, packet.sessionid, sshcrypto_hash_bytes);
buf_put(b2, b->buf, b->len);
buf_purge(b);
if (b->alloc <= b2->len) bug_nomem();
if (sign_open(b->buf, &smlen, b2->buf, b2->len, pk) != 0) { errno = EAUTH; bug(); }
b->len = smlen; buf_purge(b);
/* authorize user - using authorized_keys */
buf_purge(b);
putsignpkbase64(b, pk);
buf_putnum8(b, 0);
if (subprocess_auth(packet.name, pkname, (char *)b->buf) == 0) goto authorized;
}
}
/* reject */
log_d5("auth: ", packet.name, ": ", pkname, " rejected");
buf_purge(b);
buf_putnum8(b, SSH_MSG_USERAUTH_FAILURE);
buf_putstring(b,"publickey");
buf_putnum8(b, 0);
packet_put(b);
if (!packet_sendall()) bug();
}
log_w1("auth: too many authentication tries");
return 0;
authorized:
/* authenticated + authorized */
log_i7("auth: ", packet.name, ": ", pkname, " ", (char *)b->buf, " accepted");
buf_purge(b);
buf_putnum8(b, SSH_MSG_USERAUTH_SUCCESS);
buf_putstring(b,"ssh-connection");
packet_put(b);
if (!packet_sendall()) bug();
purge(pk, sizeof pk);
purge(sig, sizeof sig);
return 1;
}
tinyssh-20180201/tinyssh/packet_channel_open.c 0000664 0000000 0000000 00000005463 13227043065 0021311 0 ustar 00root root 0000000 0000000 /*
20140120
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "e.h"
#include "bug.h"
#include "packetparser.h"
#include "str.h"
#include "packet.h"
int packet_channel_open(struct buf *b1, struct buf *b2) {
crypto_uint32 id, remotewindow, localwindow, maxpacket, chanlen;
long long pos = 0;
crypto_uint8 ch;
char *chan = (char *)b1->buf + pos;
/* parse packet */
pos = packetparser_uint8(b1->buf, b1->len, pos, &ch); /* byte SSH_MSG_CHANNEL_OPEN */
if (ch != SSH_MSG_CHANNEL_OPEN) bug_proto();
pos = packetparser_uint32(b1->buf, b1->len, pos, &chanlen); /* string channel type in US-ASCII only */
chan = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, chanlen);
pos = packetparser_uint32(b1->buf, b1->len, pos, &id); /* uint32 sender channel */
pos = packetparser_uint32(b1->buf, b1->len, pos, &remotewindow); /* uint32 initial window size */
pos = packetparser_uint32(b1->buf, b1->len, pos, &maxpacket); /* uint32 maximum packet size */
if (maxpacket > PACKET_LIMIT) maxpacket = PACKET_LIMIT;
if (str_equaln(chan, chanlen, "session")) {
/* byte SSH_MSG_CHANNEL_OPEN
string "session"
uint32 sender channel
uint32 initial window size
uint32 maximum packet size
*/
pos = packetparser_end(b1->buf, b1->len, pos);
/* send confirmation */
buf_purge(b1);
if (channel_open(packet.name, id, remotewindow, maxpacket, &localwindow)) {
buf_purge(b2);
buf_putnum8(b2, SSH_MSG_CHANNEL_OPEN_CONFIRMATION); /* byte SSH_MSG_CHANNEL_OPEN_CONFIRMATION */
buf_putnum32(b2, id); /* uint32 recipient channel */
buf_putnum32(b2, id); /* uint32 sender channel */
buf_putnum32(b2, localwindow); /* uint32 initial window size */
buf_putnum32(b2, PACKET_LIMIT); /* uint32 maximum packet size */
packet_put(b2);
buf_purge(b2);
return 1;
}
}
/* reject channel */
buf_purge(b2);
buf_putnum8(b2, SSH_MSG_CHANNEL_OPEN_FAILURE); /* byte SSH_MSG_CHANNEL_OPEN_FAILURE */
buf_putnum32(b2, id); /* uint32 recipient channel */
buf_putnum32(b2, SSH_OPEN_ADMINISTRATIVELY_PROHIBITED); /* uint32 reason code */
buf_putstring(b2, "only one 'session' channel allowed"); /* string description in ISO-10646 UTF-8 encoding [RFC3629] */
buf_putstring(b2, ""); /* string language tag [RFC3066] */
packet_put(b2);
buf_purge(b1); buf_purge(b2);
return 1;
}
tinyssh-20180201/tinyssh/packet_channel_recv.c 0000664 0000000 0000000 00000005252 13227043065 0021303 0 ustar 00root root 0000000 0000000 /*
20140210
Jan Mojzis
Public domain.
*/
#include "bug.h"
#include "buf.h"
#include "channel.h"
#include "ssh.h"
#include "packetparser.h"
#include "packet.h"
int packet_channel_recv_data(struct buf *b) {
long long pos = 0;
crypto_uint32 len, id;
crypto_uint8 ch;
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* byte SSH_MSG_CHANNEL_DATA */
if (ch != SSH_MSG_CHANNEL_DATA) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &id); /* uint32 recipient channel */
if (id != channel_getid()) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* string data */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_end(b->buf, b->len, pos);
channel_put(b->buf + pos - len, len);
buf_purge(b);
return 1;
}
int packet_channel_recv_extendeddata(struct buf *b) {
/* ignore extended data */
buf_purge(b);
return 1;
}
int packet_channel_recv_windowadjust(struct buf *b) {
long long pos = 0;
crypto_uint32 len, id;
crypto_uint8 ch;
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* byte SSH_MSG_CHANNEL_WINDOW_ADJUST */
if (ch != SSH_MSG_CHANNEL_WINDOW_ADJUST) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &id); /* uint32 recipient channel */
if (id != channel_getid()) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* uint32 bytes to add */
pos = packetparser_end(b->buf, b->len, pos);
channel_incrementremotewindow(len);
buf_purge(b);
return 1;
}
int packet_channel_recv_eof(struct buf *b) {
long long pos = 0;
crypto_uint32 id;
crypto_uint8 ch;
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* byte SSH_MSG_CHANNEL_EOF */
if (ch != SSH_MSG_CHANNEL_EOF) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &id); /* uint32 recipient channel */
if (id != channel_getid()) bug_proto();
pos = packetparser_end(b->buf, b->len, pos);
channel_puteof();
buf_purge(b);
return 1;
}
int packet_channel_recv_close(struct buf *b) {
long long pos = 0;
crypto_uint32 id;
crypto_uint8 ch;
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* byte SSH_MSG_CHANNEL_CLOSE */
if (ch != SSH_MSG_CHANNEL_CLOSE) bug_proto();
pos = packetparser_uint32(b->buf, b->len, pos, &id); /* uint32 recipient channel */
if (id != channel_getid()) bug_proto();
pos = packetparser_end(b->buf, b->len, pos);
packet_channel_send_eof(b);
packet.flagchanneleofreceived = 1;
buf_purge(b);
return 1;
}
tinyssh-20180201/tinyssh/packet_channel_request.c 0000664 0000000 0000000 00000015745 13227043065 0022044 0 ustar 00root root 0000000 0000000 /*
20140120
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "e.h"
#include "bug.h"
#include "str.h"
#include "log.h"
#include "packetparser.h"
#include "packet.h"
int packet_channel_request(struct buf *b1, struct buf *b2) {
long long pos = 0;
crypto_uint8 ch, wantreply;
crypto_uint32 id, a, b, x, y;
char *cmd;
crypto_uint32 cmdlen;
char *p1, *p2;
crypto_uint32 plen1, plen2;
pos = packetparser_uint8(b1->buf, b1->len, pos, &ch); /* byte SSH_MSG_CHANNEL_REQUEST */
if (ch != SSH_MSG_CHANNEL_REQUEST) bug_proto();
pos = packetparser_uint32(b1->buf, b1->len, pos, &id); /* uint32 recipient channel */
if (id != channel_getid()) bug_proto();
pos = packetparser_uint32(b1->buf, b1->len, pos, &cmdlen); /* string request type in US-ASCII characters only */
cmd = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, cmdlen);
pos = packetparser_uint8(b1->buf, b1->len, pos, &wantreply); /* boolean want reply */
cmd[cmdlen] = 0;
if (str_equaln(cmd, cmdlen, "exec")) {
/* byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "exec"
boolean want reply
string command
*/
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen1);
p1 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen1);
pos = packetparser_end(b1->buf, b1->len, pos);
buf_putnum8(b1, 0);
p1[plen1] = 0;
if (!channel_exec(p1)) bug();
log_d3("packet=SSH_MSG_CHANNEL_REQUEST, exec ", p1, ", accepted");
goto accept;
}
if (str_equaln(cmd, cmdlen, "subsystem")) {
/* byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "subsystem"
boolean want reply
string subsystem name
*/
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen1);
p1 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen1);
pos = packetparser_end(b1->buf, b1->len, pos);
buf_putnum8(b1, 0);
p1[plen1] = 0;
p2 = channel_subsystem_get(p1);
if (!p2) {
log_d3("packet=SSH_MSG_CHANNEL_REQUEST, subsystem ", p1, ", rejected");
goto reject;
}
if (!channel_exec(p2)) bug();
log_d5("packet=SSH_MSG_CHANNEL_REQUEST, subsystem ", p1, "=", p2, ", accepted");
goto accept;
}
if (str_equaln(cmd, cmdlen, "shell")) {
/* byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "shell"
boolean want reply
*/
pos = packetparser_end(b1->buf, b1->len, pos);
if (!channel_exec(0)) bug();
log_d1("packet=SSH_MSG_CHANNEL_REQUEST, shell, accepted");
goto accept;
}
if (str_equaln(cmd, cmdlen, "env")) {
/* byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "env"
boolean want reply
string variable name
string variable value
*/
/**/
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen1); /* string variable name */
p1 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen1);
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen2); /* string variable value */
p2 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen2);
pos = packetparser_end(b1->buf, b1->len, pos);
buf_putnum8(b1, 0);
p1[plen1] = 0;
p2[plen2] = 0;
if (channel_env(p1, p2)) {
log_d5("packet=SSH_MSG_CHANNEL_REQUEST, env ", p1, "=", p2, ", accepted");
goto accept;
}
else {
log_d5("packet=SSH_MSG_CHANNEL_REQUEST, env ", p1, "=", p2, ", rejected");
goto reject;
}
}
if (str_equaln(cmd, cmdlen, "pty-req")) {
/*
byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "pty-req"
boolean want_reply
string TERM environment variable value (e.g., vt100)
uint32 terminal width, characters (e.g., 80)
uint32 terminal height, rows (e.g., 24)
uint32 terminal width, pixels (e.g., 640)
uint32 terminal height, pixels (e.g., 480)
string encoded terminal modes
*/
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen1);
p1 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen1);
pos = packetparser_uint32(b1->buf, b1->len, pos, &a);
pos = packetparser_uint32(b1->buf, b1->len, pos, &b);
pos = packetparser_uint32(b1->buf, b1->len, pos, &x);
pos = packetparser_uint32(b1->buf, b1->len, pos, &y);
pos = packetparser_uint32(b1->buf, b1->len, pos, &plen2);
p2 = (char *)b1->buf + pos;
pos = packetparser_skip(b1->buf, b1->len, pos, plen2);
pos = packetparser_end(b1->buf, b1->len, pos);
buf_putnum8(b1, 0);
/* XXX TODO encoded terminal modes (p2, plen2) */
p1[plen1] = 0;
p2[plen2] = 0;
if (!channel_openterminal(p1, a, b, x, y)) {
log_w1("unable to open terminal");
log_d3("packet=SSH_MSG_CHANNEL_REQUEST, pty-req ", p1, ", rejected");
goto reject;
}
log_d3("packet=SSH_MSG_CHANNEL_REQUEST, pty-req ", p1, ", accepted");
goto accept;
}
if (str_equaln(cmd, cmdlen, "window-change")) {
/*
byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "window-change"
boolean FALSE
uint32 terminal width, columns
uint32 terminal height, rows
uint32 terminal width, pixels
uint32 terminal height, pixels
*/
pos = packetparser_uint32(b1->buf, b1->len, pos, &a);
pos = packetparser_uint32(b1->buf, b1->len, pos, &b);
pos = packetparser_uint32(b1->buf, b1->len, pos, &x);
pos = packetparser_uint32(b1->buf, b1->len, pos, &y);
pos = packetparser_end(b1->buf, b1->len, pos);
channel_ptyresize(a, b, x, y);
log_d1("packet=SSH_MSG_CHANNEL_REQUEST, window-change, accepted");
goto accept;
}
log_d3("packet=SSH_MSG_CHANNEL_REQUEST, ", cmd, ", rejected or ignored");
reject:
/* reject channel request */
if (!wantreply) goto done;
buf_purge(b2);
buf_putnum8(b2, SSH_MSG_CHANNEL_FAILURE); /* byte SSH_MSG_CHANNEL_SUCCESS */
buf_putnum32(b2, id); /* uint32 recipient channel */
packet_put(b2);
buf_purge(b1); buf_purge(b2);
return 1;
accept:
if (!wantreply) goto done;
buf_purge(b2);
buf_putnum8(b2, SSH_MSG_CHANNEL_SUCCESS); /* byte SSH_MSG_CHANNEL_SUCCESS */
buf_putnum32(b2, id); /* uint32 recipient channel */
packet_put(b2);
buf_purge(b1); buf_purge(b2);
return 1;
done:
buf_purge(b1); buf_purge(b2);
return 1;
}
tinyssh-20180201/tinyssh/packet_channel_send.c 0000664 0000000 0000000 00000010163 13227043065 0021272 0 ustar 00root root 0000000 0000000 /*
20140211
Jan Mojzis
Public domain.
*/
#include "bug.h"
#include "buf.h"
#include "channel.h"
#include "ssh.h"
#include "bug.h"
#include "uint32_pack_big.h"
#include "packet.h"
void packet_channel_send_data(struct buf *b) {
long long r;
buf_purge(b);
if (b->alloc <= PACKET_LIMIT) bug_nomem();
if (!packet_putisready()) return;
r = channel_read(b->buf + 9, PACKET_LIMIT - 9);
if (r == 0) return;
b->len = r + 9;
b->buf[0] = SSH_MSG_CHANNEL_DATA; /* byte SSH_MSG_CHANNEL_DATA */
uint32_pack_big(b->buf + 1, channel_getid()); /* uint32 recipient channel */
uint32_pack_big(b->buf + 5, r); /* string data */
packet_put(b);
buf_purge(b);
return;
}
void packet_channel_send_extendeddata(struct buf *b) {
long long r;
buf_purge(b);
if (b->alloc <= PACKET_LIMIT) bug_nomem();
if (!packet_putisready()) return;
r = channel_extendedread(b->buf + 13, PACKET_LIMIT - 13);
if (r == 0) return;
b->len = r + 13;
b->buf[0] = SSH_MSG_CHANNEL_EXTENDED_DATA; /* byte SSH_MSG_CHANNEL_EXTENDED_DATA */
uint32_pack_big(b->buf + 1, channel_getid()); /* uint32 recipient channel */
uint32_pack_big(b->buf + 5, 1); /* uint32 data_type_code (1 = stderr) */
uint32_pack_big(b->buf + 9, r); /* string data */
packet_put(b);
buf_purge(b);
return;
}
int packet_channel_send_windowadjust(struct buf *b) {
crypto_uint32 plus;
if (channel_getlen0() > CHANNEL_BUFSIZE / 2) return 1;
if (channel_getlocalwindow() > CHANNEL_BUFSIZE / 2) return 1;
buf_purge(b);
buf_putnum8(b, SSH_MSG_CHANNEL_WINDOW_ADJUST);
buf_putnum32(b, channel_getid());
plus = CHANNEL_BUFSIZE - channel_getlen0() - channel_getlocalwindow();
buf_putnum32(b, plus);
channel_incrementlocalwindow(plus);
packet_put(b);
buf_purge(b);
return 1;
}
void packet_channel_send_eof(struct buf *b) {
if (packet.flageofsent) return;
buf_purge(b);
buf_putnum8(b, SSH_MSG_CHANNEL_EOF);
buf_putnum32(b, channel_getid());
packet_put(b);
buf_purge(b);
packet.flageofsent = 1;
}
int packet_channel_send_close(struct buf *b, int exitsignal, int exitcode) {
packet_channel_send_eof(b);
if (packet.flagclosesent) return 1;
if (exitsignal > 0) {
buf_purge(b);
buf_putnum8(b, SSH_MSG_CHANNEL_REQUEST); /* byte SSH_MSG_CHANNEL_REQUEST */
buf_putnum32(b, channel_getid()); /* uint32 recipient channel */
buf_putstring(b, "exit-signal"); /* string "exit-signal" */
buf_putnum8(b, 0); /* boolean FALSE */
buf_putstring(b, ssh_sigstr(exitsignal)); /* string signal name (without the "SIG" prefix) */
buf_putnum8(b, 0); /* boolean core dumped */
buf_putstring(b, ssh_sigstrlong(exitsignal)); /* string error message in ISO-10646 UTF-8 encoding */
buf_putstring(b, ""); /* string language tag [RFC3066] */
packet_put(b);
buf_purge(b);
if (!packet_sendall()) return 0;
}
else {
buf_purge(b);
buf_putnum8(b, SSH_MSG_CHANNEL_REQUEST); /* byte SSH_MSG_CHANNEL_REQUEST */
buf_putnum32(b, channel_getid()); /* uint32 recipient channel */
buf_putstring(b, "exit-status"); /* string "exit-status" */
buf_putnum8(b, 0); /* boolean FALSE */
buf_putnum32(b, exitcode); /* uint32 exit_status */
packet_put(b);
buf_purge(b);
if (!packet_sendall()) return 0;
}
buf_purge(b);
buf_putnum8(b, SSH_MSG_CHANNEL_CLOSE); /* byte SSH_MSG_CHANNEL_CLOSE */
buf_putnum32(b, channel_getid()); /* uint32 recipient channel */
packet_put(b);
if (!packet_sendall()) return 0;
buf_purge(b);
packet.flagclosesent = 1;
return 1;
}
tinyssh-20180201/tinyssh/packet_get.c 0000664 0000000 0000000 00000005520 13227043065 0017431 0 ustar 00root root 0000000 0000000 /*
20140126
Jan Mojzis
Public domain.
*/
#include
#include
#include "byte.h"
#include "e.h"
#include "bug.h"
#include "uint32_unpack_big.h"
#include "purge.h"
#include "ssh.h"
#include "sshcrypto.h"
#include "numtostr.h"
#include "packet.h"
static int packet_get_plain_(struct buf *b) {
crypto_uint32 packet_length;
long long len;
struct buf *recvbuf = &packet.recvbuf;
unsigned char *pp;
long long l;
pp = recvbuf->buf + PACKET_ZEROBYTES;
l = recvbuf->len - PACKET_ZEROBYTES;
/* we need at least 4 bytes */
if (l < 4) return 1;
/* parse length */
packet_length = uint32_unpack_big(pp);
if (packet_length > PACKET_LIMIT) {
char buf1[NUMTOSTR_LEN];
char buf2[NUMTOSTR_LEN];
errno = EPROTO;
log_f4("packet length ", numtostr(buf1, packet_length), " > PACKET_LIMIT ", numtostr(buf2, PACKET_LIMIT));
global_die(111);
}
if (packet_length + 4 > l) return 1;
/* we have full packet */
len = packet_length;
len -= recvbuf->buf[PACKET_ZEROBYTES + 4] + 1;
if (len <= 0) bug_proto();
buf_put(b, recvbuf->buf + PACKET_ZEROBYTES + 5, len);
byte_copy(pp, l - packet_length + 4, pp + packet_length + 4);
purge(pp + l - packet_length + 4, packet_length + 4);
recvbuf->len -= packet_length + 4;
packet.receivepacketid++;
return 1;
}
static int packet_get_(struct buf *b) {
if (packet.flagkeys) {
return sshcrypto_packet_get(b);
}
else {
return packet_get_plain_(b);
}
}
int packet_get(struct buf *b, crypto_uint8 x) {
buf_purge(b);
if (!packet_get_(b)) return 0;
if (b->len <= 0) return 1;
if (!packet.flagauthorized) if (packet.receivepacketid > PACKET_UNAUTHENTICATED_MESSAGES) {
errno = EPROTO;
log_f1("too many unauthenticated messages");
global_die(111);
}
switch (b->buf[0]) {
case SSH_MSG_DISCONNECT:
errno = 0;
return 0;
case SSH_MSG_IGNORE:
case SSH_MSG_DEBUG:
buf_purge(b);
break;
default:
if (x && x != b->buf[0]) {
char buf1[NUMTOSTR_LEN];
char buf2[NUMTOSTR_LEN];
errno = EPROTO;
log_f4("expected packet type ", numtostr(buf1, x), ", got ", numtostr(buf2, b->buf[0]));
global_die(111);
}
break;
}
return 1;
}
int packet_getall(struct buf *b, crypto_uint8 ch) {
struct pollfd x;
long long before;
buf_purge(b);
for (;;) {
before = packet.recvbuf.len;
if (!packet_get(b, ch)) return 0;
if (b->len > 0) break;
if (before != packet.recvbuf.len) continue;
x.fd = 0;
x.events = POLLIN | POLLERR;
poll(&x, 1, -1);
if (!packet_recv()) return 0;
}
return 1;
}
tinyssh-20180201/tinyssh/packet_hello.c 0000664 0000000 0000000 00000003222 13227043065 0017752 0 ustar 00root root 0000000 0000000 /*
20140125
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "byte.h"
#include "writeall.h"
#include "purge.h"
#include "log.h"
#include "str.h"
#include "getln.h"
#include "e.h"
#include "packet.h"
/*
The 'packet_hello_send()' function sends SSH hello string to the client.
See RFC 4253 4.2. Protocol Version Exchange.
Example: SSH-2.0-tinyssh_20160201 iX512l8j
*/
int packet_hello_send(void) {
struct buf *b = &packet.hellosend;
buf_purge(b);
buf_puts(b, "SSH-2.0-tinyssh");
#ifdef VERSION
buf_puts(b, "_");
buf_puts(b, VERSION);
#endif
buf_puts(b, " ");
buf_puts(b, log_string());
buf_puts(b, "\r\n");
if (writeall(1, b->buf, b->len) == -1) return 0;
b->len -= 2; /* remove "\r\n" */
b->buf[b->len] = 0;
log_d2("hello: server: ", (char *)(b->buf));
purge(b->buf + b->len, b->alloc - b->len);
return 1;
}
/*
The 'packet_hello_receive()' function receives SSH hello string from the client.
See RFC 4253 4.2. Protocol Version Exchange.
Example: SSH-2.0-OpenSSH_6.6.1p1 Debian-4~bpo70+1
*/
int packet_hello_receive(void) {
int r;
struct buf *b = &packet.helloreceive;
r = getln(0, b->buf, b->alloc);
if (r == 0) { errno = ECONNRESET; return 0; }
if (r != 1) return 0;
b->len = str_len((char *)b->buf);
if (b->len < 6) { errno = EPROTO; return 0; }
if (b->buf[b->len - 1] == '\n') --(b->len); /* remove '\n' */
if (b->buf[b->len - 1] == '\r') --(b->len); /* remove '\r' */
b->buf[b->len] = 0;
if (!byte_isequal(b->buf, 4, "SSH-")) { errno = EPROTO; return 0; }
log_d2("hello: client: ", (char *)b->buf);
purge(b->buf + b->len, b->alloc - b->len);
return 1;
}
tinyssh-20180201/tinyssh/packet_kex.c 0000664 0000000 0000000 00000007753 13227043065 0017453 0 ustar 00root root 0000000 0000000 /*
20140110
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "sshcrypto.h"
#include "packetparser.h"
#include "bug.h"
#include "packet.h"
int packet_kex_send(void) {
struct buf *b = &packet.kexsend;
/* send server kex_init */
buf_purge(b);
buf_putnum8(b, SSH_MSG_KEXINIT); /* SSH_MSG_KEXINIT */
buf_putrandombytes(b, 16); /* cookie */
sshcrypto_kex_put(b); /* kex algorithms */
sshcrypto_key_put(b); /* server host key algorithms */
sshcrypto_cipher_put(b); /* encryption algorithms client to server */
sshcrypto_cipher_put(b); /* encryption algorithms server to client */
sshcrypto_cipher_macput(b); /* mac algorithms client to server */
sshcrypto_cipher_macput(b); /* mac algorithms server to client */
buf_putstring(b, "none"); /* compress algorithms client to server */
buf_putstring(b, "none"); /* compress algorithms server to client */
buf_putstring(b, ""); /* languages client to server */
buf_putstring(b, ""); /* languages server to client */
buf_putnum8(b, 0); /* kex first packet follows */
buf_putnum32(b, 0); /* reserved */
packet_put(b);
return packet_sendall();
}
int packet_kex_receive(void) {
struct buf *b = &packet.kexrecv;
long long pos = 0;
crypto_uint8 ch;
crypto_uint32 len;
if (!packet_getall(b, SSH_MSG_KEXINIT)) return 0;
/* parse packet */
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* SSH_MSG_KEXINIT */
if (ch != SSH_MSG_KEXINIT) bug_proto();
pos = packetparser_skip(b->buf, b->len, pos, 16); /* cookie */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* kex algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!sshcrypto_kex_select(b->buf + pos - len, len, &packet.kex_guess)) return 0;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* server host key algorithms */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!sshcrypto_key_select(b->buf + pos - len, len)) return 0;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!sshcrypto_cipher_select(b->buf + pos - len, len)) return 0;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* encryption algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
/* XXX assuming same as encryption algorithms client to server */
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
if (!sshcrypto_cipher_macselect(b->buf + pos - len, len)) return 0;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* mac algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* compress algorithms server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages client to server */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* languages server to client */
pos = packetparser_skip(b->buf, b->len, pos, len);
pos = packetparser_uint8(b->buf, b->len, pos, &ch); /* kex first packet follows */
packet.kex_packet_follows = ch;
pos = packetparser_uint32(b->buf, b->len, pos, &len); /* reserved */
pos = packetparser_end(b->buf, b->len, pos);
return 1;
}
tinyssh-20180201/tinyssh/packet_kexdh.c 0000664 0000000 0000000 00000011431 13227043065 0017753 0 ustar 00root root 0000000 0000000 /*
20141025
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "e.h"
#include "uint32_unpack_big.h"
#include "byte.h"
#include "sshcrypto.h"
#include "packetparser.h"
#include "bug.h"
#include "log.h"
#include "purge.h"
#include "subprocess.h"
#include "packet.h"
int packet_kexdh(const char *keydir, struct buf *b1, struct buf *b2) {
unsigned char clientpk[sshcrypto_dh_PUBLICKEYMAX];
unsigned char serversk[sshcrypto_dh_SECRETKEYMAX];
unsigned char serverpk[sshcrypto_dh_PUBLICKEYMAX];
unsigned char sharedsecret[sshcrypto_dh_MAX];
unsigned char sm[sshcrypto_sign_MAX];
unsigned char key[sshcrypto_cipher_KEYMAX];
unsigned char hash[sshcrypto_hash_MAX];
long long pos = 0;
crypto_uint8 ch;
crypto_uint32 len;
long long i;
if (packet.kex_packet_follows && !packet.kex_guess) {
buf_purge(b1);
if (!packet_getall(b1, SSH_MSG_KEXDH_INIT)) bug_proto();
}
buf_purge(b1);
if (!packet_getall(b1, SSH_MSG_KEXDH_INIT)) bug_proto();
pos = packetparser_uint8(b1->buf, b1->len, pos, &ch); /* byte SSH_MSG_KEXDH_INIT */
if (ch != SSH_MSG_KEXDH_INIT) bug_proto();
pos = packetparser_uint32(b1->buf, b1->len, pos, &len); /* string client's public key */
if (len != sshcrypto_dh_publickeybytes) bug_proto();
pos = packetparser_copy(b1->buf, b1->len, pos, clientpk, len);
pos = packetparser_end(b1->buf, b1->len, pos);
buf_purge(b1);
/* generate key and compute shared secret */
do {
/* XXX - workaroud for bug in OpenSSH 6.5 - 6.6 */
if (sshcrypto_dh_keypair(serverpk, serversk) != 0) bug_proto();
if (sshcrypto_dh(sharedsecret, clientpk, serversk) != 0) bug_proto();
} while(sharedsecret[0] == 0 && sshcrypto_dh_publickeybytes == 32);
/* create hash */
buf_purge(&packet.hashbuf);
buf_putstringlen(&packet.hashbuf, packet.helloreceive.buf, packet.helloreceive.len);
buf_putstringlen(&packet.hashbuf, packet.hellosend.buf, packet.hellosend.len);
buf_putstringlen(&packet.hashbuf, packet.kexrecv.buf, packet.kexrecv.len);
buf_putstringlen(&packet.hashbuf, packet.kexsend.buf, packet.kexsend.len);
sshcrypto_buf_putsignpk(&packet.hashbuf, sshcrypto_sign_publickey);
sshcrypto_buf_putdhpk(&packet.hashbuf, clientpk);
sshcrypto_buf_putdhpk(&packet.hashbuf, serverpk);
sshcrypto_buf_putsharedsecret(&packet.hashbuf, sharedsecret);
sshcrypto_hash(hash, packet.hashbuf.buf, packet.hashbuf.len);
/* session id */
if (!packet.flagrekeying) byte_copy(packet.sessionid, sshcrypto_hash_bytes, hash);
packet.flagrekeying = 1;
/* signature */
if (subprocess_sign(sm, sshcrypto_sign_bytes, keydir, hash, sshcrypto_hash_bytes) != 0) bug();
buf_purge(b1); buf_purge(b2);
/* send server kex_ecdh_reply */
buf_putnum8(b2, SSH_MSG_KEXDH_REPLY); /* SSH_MSG_KEXDH_REPLY */
sshcrypto_buf_putsignpk(b2, sshcrypto_sign_publickey); /* public key */
sshcrypto_buf_putdhpk(b2, serverpk); /* servers's public key */
sshcrypto_buf_putsignature(b2, sm); /* signature */
packet_put(b2);
/* send server newkeys */
buf_purge(b2);
buf_putnum8(b2, SSH_MSG_NEWKEYS);
packet_put(b2);
if (!packet_sendall()) bug();
/* receive new keys */
do {
buf_purge(b2);
if (!packet_getall(b2, 0)) bug();
} while (b2->buf[0] != SSH_MSG_NEWKEYS);
/* key derivation */
for(i = 0; i < 6; ++i) {
buf_purge(b1);
sshcrypto_buf_putsharedsecret(b1, sharedsecret);
buf_put(b1, hash, sshcrypto_hash_bytes);
buf_putnum8(b1, 'A' + i);
buf_put(b1, packet.sessionid, sshcrypto_hash_bytes);
sshcrypto_hash(key, b1->buf, b1->len);
/* one extend */
buf_purge(b1);
sshcrypto_buf_putsharedsecret(b1, sharedsecret);
buf_put(b1, hash, sshcrypto_hash_bytes);
buf_put(b1, key, sshcrypto_hash_bytes);
sshcrypto_hash(key + sshcrypto_hash_bytes, b1->buf, b1->len);
if (i == 0) byte_copy(packet.clientnonce, sshcrypto_cipher_KEYMAX, key);
if (i == 1) byte_copy(packet.servernonce, sshcrypto_cipher_KEYMAX, key);
if (i == 2) byte_copy(packet.clientkey, sshcrypto_cipher_KEYMAX, key);
if (i == 3) byte_copy(packet.serverkey, sshcrypto_cipher_KEYMAX, key);
if (i == 4) byte_copy(packet.clientmackey, sshcrypto_cipher_KEYMAX, key);
if (i == 5) byte_copy(packet.servermackey, sshcrypto_cipher_KEYMAX, key);
}
purge(clientpk, sizeof clientpk);
purge(serversk, sizeof serversk);
purge(serverpk, sizeof serverpk);
purge(sharedsecret, sizeof sharedsecret);
purge(sm, sizeof sm);
purge(key, sizeof key);
purge(hash, sizeof hash);
return 1;
}
tinyssh-20180201/tinyssh/packet_put.c 0000664 0000000 0000000 00000002005 13227043065 0017455 0 ustar 00root root 0000000 0000000 /*
20140207
Jan Mojzis
Public domain.
*/
#include "uint32_pack_big.h"
#include "buf.h"
#include "packet.h"
static void packet_put_plain_(struct buf *b) {
long long pos;
crypto_uint8 paddinglen;
struct buf *sendbuf = &packet.sendbuf;
pos = sendbuf->len; /* get position */
buf_putnum32(sendbuf, 0); /* length */
buf_putnum8(sendbuf, 0); /* padding length */
buf_put(sendbuf, b->buf, b->len); /* add data */
packet.sendpacketid++; /* increment id */
/* padding */
paddinglen = 2 * 8 - ((sendbuf->len - pos) % 8);
buf_putzerobytes(sendbuf, paddinglen);
sendbuf->buf[pos + 4] = paddinglen;
/* add packet length */
uint32_pack_big(sendbuf->buf + pos, sendbuf->len - pos - 4);
}
int packet_putisready(void) {
return buf_ready(&packet.sendbuf, PACKET_FULLLIMIT);
}
void packet_put(struct buf *b) {
if (packet.flagkeys) {
sshcrypto_packet_put(b);
}
else {
packet_put_plain_(b);
}
}
tinyssh-20180201/tinyssh/packet_recv.c 0000664 0000000 0000000 00000001376 13227043065 0017616 0 ustar 00root root 0000000 0000000 /*
20140120
Jan Mojzis
Public domain.
*/
#include
#include "e.h"
#include "buf.h"
#include "purge.h"
#include "packet.h"
int packet_recvisready(void) {
return buf_ready(&packet.recvbuf, PACKET_FULLLIMIT);
}
int packet_recv(void) {
long long r;
struct buf *b = &packet.recvbuf;
if (b->len < PACKET_ZEROBYTES) {
b->len = PACKET_ZEROBYTES;
purge(b->buf, PACKET_ZEROBYTES);
}
if (!packet_recvisready()) return 1;
r = read(0, b->buf + b->len, PACKET_FULLLIMIT);
if (r == 0) { errno = ECONNRESET; return 0; }
if (r == -1) {
if (errno == EINTR) return 1;
if (errno == EAGAIN) return 1;
if (errno == EWOULDBLOCK) return 1;
return 0;
}
b->len += r;
return 1;
}
tinyssh-20180201/tinyssh/packet_send.c 0000664 0000000 0000000 00000001617 13227043065 0017606 0 ustar 00root root 0000000 0000000 /*
20140120
Jan Mojzis
Public domain.
*/
#include
#include "writeall.h"
#include "e.h"
#include "byte.h"
#include "purge.h"
#include "packet.h"
int packet_sendisready(void) {
return (packet.sendbuf.len > 0);
}
int packet_send(void) {
struct buf *sendbuf = &packet.sendbuf;
long long w;
if (sendbuf->len <= 0) return 1;
w = write(1, sendbuf->buf, sendbuf->len);
if (w == -1) {
if (errno == EINTR) return 1;
if (errno == EAGAIN) return 1;
if (errno == EWOULDBLOCK) return 1;
return 0;
}
byte_copy(sendbuf->buf, sendbuf->len - w, sendbuf->buf + w);
sendbuf->len -= w;
purge(sendbuf->buf + sendbuf->len, w);
return 1;
}
int packet_sendall(void) {
if (writeall(1, packet.sendbuf.buf, packet.sendbuf.len) == -1) return 0;
purge(packet.sendbuf.buf, packet.sendbuf.len);
packet.sendbuf.len = 0;
return 1;
}
tinyssh-20180201/tinyssh/packet_unimplemented.c 0000664 0000000 0000000 00000001062 13227043065 0021515 0 ustar 00root root 0000000 0000000 /*
20150719
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "ssh.h"
#include "log.h"
#include "numtostr.h"
#include "packet.h"
int packet_unimplemented(struct buf *b) {
char strnum[NUMTOSTR_LEN];
/* note that b->buf[0] contains packetid */
log_d3("packet=", numtostr(strnum, b->buf[0]),", sending SSH_MSG_UNIMPLEMENTED message");
buf_purge(b);
buf_putnum8(b, SSH_MSG_UNIMPLEMENTED); /* SSH_MSG_UNIMPLEMENTED */
buf_putnum32(b, packet.receivepacketid); /* packeid */
packet_put(b);
return packet_sendall();
}
tinyssh-20180201/tinyssh/packetparser.c 0000664 0000000 0000000 00000005014 13227043065 0020005 0 ustar 00root root 0000000 0000000 /*
20140210
Jan Mojzis
Public domain.
The 'packetparser' library is used to parse SSH packets.
The 'packetparser_*' function has always information about buffer, buffer length
and position in the buffer. Before parsing checks if the position
is not exceeding the buffer length. If the position exceeds the buffer length,
packetparser_* function immediately exits with 111 status code.
*/
#include "e.h"
#include "uint32_unpack_big.h"
#include "bug.h"
#include "byte.h"
#include "packetparser.h"
/*
Parse one-byte character.
*/
long long packetparser_uint8_(const char *fn, unsigned long long line,
const unsigned char *buf, long long len, long long pos, crypto_uint8 *out) {
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824 || !out) bug_inval_(fn, line);
if (pos + 1 > len) bug_proto_(fn, line);
*out = buf[pos];
return pos + 1;
}
/*
Parse the unsigned 32-bit number.
*/
long long packetparser_uint32_(const char *fn, unsigned long long line,
const unsigned char *buf, long long len, long long pos, crypto_uint32 *out) {
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824 || !out) bug_inval_(fn, line);
if (pos + 4 > len) bug_proto_(fn, line);
*out = uint32_unpack_big(buf + pos);
return pos + 4;
}
/*
Parse the string and copy it.
*/
long long packetparser_copy_(const char *fn, unsigned long long line,
const unsigned char *buf, long long len, long long pos, unsigned char *out, long long outlen) {
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824 || !out || outlen < 0 || outlen > 1073741824) bug_inval_(fn, line);
if (pos + outlen > len) bug_proto_(fn, line);
byte_copy(out, outlen, buf + pos);
return pos + outlen;
}
/*
Skip 'len' bytes.
*/
long long packetparser_skip_(const char *fn, unsigned long long line,
const unsigned char *buf, long long len, long long pos, long long skip) {
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824 || skip < 0 || skip > 1073741824) bug_inval_(fn, line);
if (pos + skip > len) bug_proto_(fn, line);
return pos + skip;
}
/*
Check if the position is end-position.
*/
long long packetparser_end_(const char *fn, unsigned long long line,
const unsigned char *buf, long long len, long long pos) {
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824) bug_inval_(fn, line);
if (pos != len) bug_proto_(fn, line);
return pos;
}
tinyssh-20180201/tinyssh/packetparser.h 0000664 0000000 0000000 00000002365 13227043065 0020020 0 ustar 00root root 0000000 0000000 #ifndef _PACKETPARSER_H____
#define _PACKETPARSER_H____
#include "crypto_uint32.h"
#include "crypto_uint8.h"
extern long long packetparser_uint8_(const char *, unsigned long long, const unsigned char *, long long, long long, crypto_uint8 *);
extern long long packetparser_uint32_(const char *, unsigned long long, const unsigned char *, long long, long long, crypto_uint32 *);
extern long long packetparser_copy_(const char *, unsigned long long, const unsigned char *, long long, long long, unsigned char *, long long);
extern long long packetparser_skip_(const char *, unsigned long long, const unsigned char *, long long, long long, long long);
extern long long packetparser_end_(const char *, unsigned long long, const unsigned char *, long long, long long);
#define packetparser_uint8(a, b, c, d) packetparser_uint8_(__FILE__, __LINE__, (a), (b), (c), (d))
#define packetparser_uint32(a, b, c, d) packetparser_uint32_(__FILE__, __LINE__, (a), (b), (c), (d))
#define packetparser_copy(a, b, c, d, e)packetparser_copy_(__FILE__, __LINE__, (a), (b), (c), (d), (e))
#define packetparser_skip(a, b, c, d) packetparser_skip_(__FILE__, __LINE__, (a), (b), (c), (d))
#define packetparser_end(a, b, c) packetparser_end_(__FILE__, __LINE__, (a), (b), (c))
#endif
tinyssh-20180201/tinyssh/porttostr.c 0000664 0000000 0000000 00000001504 13227043065 0017401 0 ustar 00root root 0000000 0000000 /*
20130604
Jan Mojzis
Public domain.
*/
#include "crypto_uint16.h"
#include "porttostr.h"
/*
The 'porttostr(strbuf,port)' converts 'port' from network byte order
into the 0-terminated string. The 'port' length is always 2 bytes.
The caller must allocate at least PORTTOSTR_LEN bytes for 'strbuf'.
*/
char *porttostr(char *strbuf, const unsigned char *port) {
long long len = 0;
crypto_uint16 num;
static char staticbuf[PORTTOSTR_LEN];
if (!strbuf) strbuf = staticbuf; /* not thread-safe */
num = port[0]; num <<= 8; num |= port[1];
do {
num /= 10; ++len;
} while (num);
strbuf += len;
num = port[0]; num <<= 8; num |= port[1];
do {
*--strbuf = '0' + (num % 10);
num /= 10;
} while (num);
while (len < PORTTOSTR_LEN) strbuf[len++] = 0;
return strbuf;
}
tinyssh-20180201/tinyssh/porttostr.h 0000664 0000000 0000000 00000000213 13227043065 0017402 0 ustar 00root root 0000000 0000000 #ifndef _PORTTOSTR_H____
#define _PORTTOSTR_H____
#define PORTTOSTR_LEN 6
extern char *porttostr(char *, const unsigned char *);
#endif
tinyssh-20180201/tinyssh/purge.h 0000664 0000000 0000000 00000000137 13227043065 0016451 0 ustar 00root root 0000000 0000000 #ifndef _PURGE_H____
#define _PURGE_H____
#include "cleanup.h"
#define purge cleanup_
#endif
tinyssh-20180201/tinyssh/randommod.c 0000664 0000000 0000000 00000000625 13227043065 0017304 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/randommod.c */
#include "randombytes.h"
#include "randommod.h"
/* XXX: current implementation is limited to n<2^55 */
long long randommod(long long n)
{
long long result = 0;
long long j;
unsigned char r[32];
if (n <= 1) return 0;
randombytes(r,32);
for (j = 0;j < 32;++j) result = (result * 256 + (unsigned long long) r[j]) % n;
return result;
}
tinyssh-20180201/tinyssh/randommod.h 0000664 0000000 0000000 00000000142 13227043065 0017303 0 ustar 00root root 0000000 0000000 #ifndef _RANDOMMOD_H____
#define _RANDOMMOD_H____
extern long long randommod(long long);
#endif
tinyssh-20180201/tinyssh/readall.c 0000664 0000000 0000000 00000001060 13227043065 0016722 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/load.c */
#include
#include "e.h"
#include "readall.h"
int readall(int fd, void *xv, long long xlen) {
long long r;
unsigned char *x = (unsigned char *)xv;
while (xlen > 0) {
r = xlen;
if (r > 1048576) r = 1048576;
r = read(fd, x, r);
if (r == 0) errno = EPROTO;
if (r <= 0) {
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK) continue;
return -1;
}
x += r;
xlen -= r;
}
return 0;
}
tinyssh-20180201/tinyssh/readall.h 0000664 0000000 0000000 00000000143 13227043065 0016730 0 ustar 00root root 0000000 0000000 #ifndef _READALL_H____
#define _READALL_H____
extern int readall(int, void *, long long);
#endif
tinyssh-20180201/tinyssh/savesync.c 0000664 0000000 0000000 00000001002 13227043065 0017145 0 ustar 00root root 0000000 0000000 /* taken from nacl-20110221, from curvecp/savesync.c */
#include
#include
#include
#include
#include "open.h"
#include "savesync.h"
#include "writeall.h"
static int writesync(int fd,const void *x,long long xlen)
{
if (writeall(fd,x,xlen) == -1) return -1;
return fsync(fd);
}
int savesync(const char *fn,const void *x,long long xlen)
{
int fd;
int r;
fd = open_write(fn);
if (fd == -1) return -1;
r = writesync(fd,x,xlen);
close(fd);
return r;
}
tinyssh-20180201/tinyssh/savesync.h 0000664 0000000 0000000 00000000151 13227043065 0017156 0 ustar 00root root 0000000 0000000 #ifndef SAVESYNC_H
#define SAVESYNC_H
extern int savesync(const char *,const void *,long long);
#endif
tinyssh-20180201/tinyssh/ssh.c 0000664 0000000 0000000 00000003142 13227043065 0016116 0 ustar 00root root 0000000 0000000 #include
#include "ssh.h"
#define X(e,s) if (i == e) return s;
/*
Return short name of signal.
*/
const char *ssh_sigstr(int i) {
#ifdef SIGABRT
X(SIGABRT, "ABRT");
#endif
#ifdef SIGALRM
X(SIGALRM, "ALRM");
#endif
#ifdef SIGFPE
X(SIGFPE, "FPE");
#endif
#ifdef SIGHUP
X(SIGHUP, "HUP");
#endif
#ifdef SIGILL
X(SIGILL, "ILL");
#endif
#ifdef SIGINT
X(SIGINT, "INT");
#endif
#ifdef SIGKILL
X(SIGKILL, "KILL");
#endif
#ifdef SIGPIPE
X(SIGPIPE, "PIPE");
#endif
#ifdef SIGQUIT
X(SIGQUIT, "QUIT");
#endif
#ifdef SIGSEGV
X(SIGSEGV, "SEGV");
#endif
#ifdef SIGTERM
X(SIGTERM, "TERM");
#endif
#ifdef SIGUSR1
X(SIGUSR1, "USR1");
#endif
#ifdef SIGUSR2
X(SIGUSR2, "USR2");
#endif
return "UNKNOWN";
}
/*
Return long name of signal.
*/
const char *ssh_sigstrlong(int i) {
#ifdef SIGABRT
X(SIGABRT, "SIGABRT (abort)")
#endif
#ifdef SIGALRM
X(SIGALRM, "SIGALRM (alarm clock)")
#endif
#ifdef SIGFPE
X(SIGFPE, "SIGFPE (floating-point exception)")
#endif
#ifdef SIGILL
X(SIGILL, "SIGILL (illegal instruction)")
#endif
#ifdef SIGINT
X(SIGINT, "SIGINT (interrupt)")
#endif
#ifdef SIGKILL
X(SIGKILL, "SIGKILL (kill, unblockable)")
#endif
#ifdef SIGPIPE
X(SIGPIPE, "SIGPIPE (broken pipe)")
#endif
#ifdef SIGQUIT
X(SIGQUIT, "SIGQUIT (quit)")
#endif
#ifdef SIGSEGV
X(SIGSEGV, "SIGSEGV (segment violation)")
#endif
#ifdef SIGTERM
X(SIGTERM, "SIGTERM (termination)")
#endif
#ifdef SIGUSR1
X(SIGUSR1, "SIGUSR1 (user defined signal 1)")
#endif
#ifdef SIGUSR2
X(SIGUSR2, "SIGUSR2 (user defined signal 2)")
#endif
return "UNKNOWN SIGNAL";
}
tinyssh-20180201/tinyssh/ssh.h 0000664 0000000 0000000 00000010336 13227043065 0016126 0 ustar 00root root 0000000 0000000 #ifndef _SSH_H____
#define _SSH_H____
extern const char *ssh_sigstr(int);
extern const char *ssh_sigstrlong(int);
#define SSH_MSG_DISCONNECT 1 /* 0x1 */
#define SSH_MSG_IGNORE 2 /* 0x2 */
#define SSH_MSG_UNIMPLEMENTED 3 /* 0x3 */
#define SSH_MSG_DEBUG 4 /* 0x4 */
#define SSH_MSG_SERVICE_REQUEST 5 /* 0x5 */
#define SSH_MSG_SERVICE_ACCEPT 6 /* 0x6 */
#define SSH_MSG_KEXINIT 20 /* 0x14 */
#define SSH_MSG_NEWKEYS 21 /* 0x15 */
#define SSH_MSG_KEXDH_INIT 30 /* 0x1e */
#define SSH_MSG_KEXDH_REPLY 31 /* 0x1f */
#define SSH_MSG_KEX_DH_GEX_REQUEST 30 /* 0x1e */
#define SSH_MSG_KEX_DH_GEX_GROUP 31 /* 0x1f */
#define SSH_MSG_KEX_DH_GEX_INIT 32 /* 0x20 */
#define SSH_MSG_KEX_DH_GEX_REPLY 33 /* 0x21 */
#define SSH_MSG_KEXRSA_PUBKEY 30 /* 0x1e */
#define SSH_MSG_KEXRSA_SECRET 31 /* 0x1f */
#define SSH_MSG_KEXRSA_DONE 32 /* 0x20 */
#define SSH_MSG_USERAUTH_REQUEST 50 /* 0x32 */
#define SSH_MSG_USERAUTH_FAILURE 51 /* 0x33 */
#define SSH_MSG_USERAUTH_SUCCESS 52 /* 0x34 */
#define SSH_MSG_USERAUTH_BANNER 53 /* 0x35 */
#define SSH_MSG_USERAUTH_PK_OK 60 /* 0x3c */
#define SSH_MSG_USERAUTH_PASSWD_CHANGEREQ 60 /* 0x3c */
#define SSH_MSG_USERAUTH_INFO_REQUEST 60 /* 0x3c */
#define SSH_MSG_USERAUTH_INFO_RESPONSE 61 /* 0x3d */
#define SSH_MSG_GLOBAL_REQUEST 80 /* 0x50 */
#define SSH_MSG_REQUEST_SUCCESS 81 /* 0x51 */
#define SSH_MSG_REQUEST_FAILURE 82 /* 0x52 */
#define SSH_MSG_CHANNEL_OPEN 90 /* 0x5a */
#define SSH_MSG_CHANNEL_OPEN_CONFIRMATION 91 /* 0x5b */
#define SSH_MSG_CHANNEL_OPEN_FAILURE 92 /* 0x5c */
#define SSH_MSG_CHANNEL_WINDOW_ADJUST 93 /* 0x5d */
#define SSH_MSG_CHANNEL_DATA 94 /* 0x5e */
#define SSH_MSG_CHANNEL_EXTENDED_DATA 95 /* 0x5f */
#define SSH_MSG_CHANNEL_EOF 96 /* 0x60 */
#define SSH_MSG_CHANNEL_CLOSE 97 /* 0x61 */
#define SSH_MSG_CHANNEL_REQUEST 98 /* 0x62 */
#define SSH_MSG_CHANNEL_SUCCESS 99 /* 0x63 */
#define SSH_MSG_CHANNEL_FAILURE 100 /* 0x64 */
#define SSH_MSG_USERAUTH_GSSAPI_RESPONSE 60
#define SSH_MSG_USERAUTH_GSSAPI_TOKEN 61
#define SSH_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE 63
#define SSH_MSG_USERAUTH_GSSAPI_ERROR 64
#define SSH_MSG_USERAUTH_GSSAPI_ERRTOK 65
#define SSH_MSG_USERAUTH_GSSAPI_MIC 66
#define SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT 1
#define SSH_DISCONNECT_PROTOCOL_ERROR 2
#define SSH_DISCONNECT_KEY_EXCHANGE_FAILED 3
#define SSH_DISCONNECT_RESERVED 4
#define SSH_DISCONNECT_MAC_ERROR 5
#define SSH_DISCONNECT_COMPRESSION_ERROR 6
#define SSH_DISCONNECT_SERVICE_NOT_AVAILABLE 7
#define SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED 8
#define SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE 9
#define SSH_DISCONNECT_CONNECTION_LOST 10
#define SSH_DISCONNECT_BY_APPLICATION 11
#define SSH_DISCONNECT_TOO_MANY_CONNECTIONS 12
#define SSH_DISCONNECT_AUTH_CANCELLED_BY_USER 13
#define SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE 14
#define SSH_DISCONNECT_ILLEGAL_USER_NAME 15
#define SSH_OPEN_ADMINISTRATIVELY_PROHIBITED 1
#define SSH_OPEN_CONNECT_FAILED 2
#define SSH_OPEN_UNKNOWN_CHANNEL_TYPE 3
#define SSH_OPEN_RESOURCE_SHORTAGE 4
#endif
tinyssh-20180201/tinyssh/sshcrypto.c 0000664 0000000 0000000 00000003245 13227043065 0017363 0 ustar 00root root 0000000 0000000 /*
20140225
Jan Mojzis
Public domain.
*/
#include "purge.h"
#include "bug.h"
#include "str.h"
#include "sshcrypto.h"
/*
Initialize and check *MAX constants
*/
void sshcrypto_init(void) {
long long i;
/* kex */
for (i = 0; sshcrypto_kexs[i].name; ++i) {
if (sshcrypto_kexs[i].dh_publickeybytes > sshcrypto_dh_PUBLICKEYMAX) bug_inval();
if (sshcrypto_kexs[i].dh_secretkeybytes > sshcrypto_dh_SECRETKEYMAX) bug_inval();
if (sshcrypto_kexs[i].dh_bytes > sshcrypto_dh_MAX) bug_inval();
if (sshcrypto_kexs[i].hash_bytes > sshcrypto_hash_MAX) bug_inval();
}
/* key */
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (sshcrypto_keys[i].sign_publickeybytes > sshcrypto_sign_PUBLICKEYMAX) bug_inval();
if (sshcrypto_keys[i].sign_secretkeybytes > sshcrypto_sign_SECRETKEYMAX) bug_inval();
if (sshcrypto_keys[i].sign_bytes > sshcrypto_sign_MAX) bug_inval();
if (str_len(sshcrypto_keys[i].name) + 1 > sshcrypto_sign_NAMEMAX) bug_inval();
}
/* cipher */
for (i = 0; sshcrypto_ciphers[i].name; ++i) {
if (sshcrypto_ciphers[i].stream_keybytes > sshcrypto_cipher_KEYMAX) bug_inval();
}
}
/*
Remove sentitive data from allocated memory.
*/
void sshcrypto_purge(void) {
long long i;
/* kex */
for (i = 0; sshcrypto_kexs[i].name; ++i) {
purge(&sshcrypto_kexs[i], sizeof(struct sshcrypto_kex));
}
/* key */
for (i = 0; sshcrypto_keys[i].name; ++i) {
purge(&sshcrypto_keys[i], sizeof(struct sshcrypto_key));
}
/* cipher */
for (i = 0; sshcrypto_ciphers[i].name; ++i) {
purge(&sshcrypto_ciphers[i], sizeof(struct sshcrypto_cipher));
}
}
tinyssh-20180201/tinyssh/sshcrypto.h 0000664 0000000 0000000 00000017666 13227043065 0017404 0 ustar 00root root 0000000 0000000 #ifndef _SSHCRYPTO_H____
#define _SSHCRYPTO_H____
#include "buf.h"
#include "crypto.h"
/* crypto type */
#define sshcrypto_TYPEOLDCRYPTO 0x1 /* ecdsa-sha2-nistp256, ecdh-sha2-nistp256, aes256-ctr, hmac-sha2-256 */
#define sshcrypto_TYPENEWCRYPTO 0x2 /* ssh-ed25519, curve25519-sha256@libssh.org, chacha20-poly1305@openssh.com */
#define sshcrypto_TYPEPQCRYPTO 0x4 /* TODO, TODO, chacha20-poly1305@openssh.com */
/* kex - dh + hash */
#define sshcrypto_dh_PUBLICKEYMAX 64 + 1 /* space for nistp256 pk */
#define sshcrypto_dh_SECRETKEYMAX 32 /* space for nistp256/curve25519 sk */
#define sshcrypto_dh_MAX 32 /* space for nistp256/curve25519 k */
#define sshcrypto_hash_MAX 64 /* space for sha512 */
struct sshcrypto_kex {
const char *name;
int (*dh)(unsigned char *, unsigned char *, unsigned char *);
int (*dh_keypair)(unsigned char *, unsigned char *);
long long dh_publickeybytes;
long long dh_secretkeybytes;
long long dh_bytes;
int (*hash)(unsigned char *, const unsigned char *, unsigned long long);
long long hash_bytes;
void (*buf_putsharedsecret)(struct buf *, const unsigned char *);
void (*buf_putdhpk)(struct buf *, const unsigned char *);
unsigned int cryptotype;
int flagenabled;
};
extern struct sshcrypto_kex sshcrypto_kexs[];
extern const char *sshcrypto_kex_name;
extern int (*sshcrypto_dh)(unsigned char *, unsigned char *, unsigned char *);
extern int (*sshcrypto_dh_keypair)(unsigned char *, unsigned char *);
extern long long sshcrypto_dh_publickeybytes;
extern long long sshcrypto_dh_secretkeybytes;
extern long long sshcrypto_dh_bytes;
extern int (*sshcrypto_hash)(unsigned char *, const unsigned char *, unsigned long long);
extern long long sshcrypto_hash_bytes;
extern void (*sshcrypto_buf_putsharedsecret)(struct buf *, const unsigned char *);
extern void (*sshcrypto_buf_putdhpk)(struct buf *, const unsigned char *);
extern int sshcrypto_kex_select(const unsigned char *, long long, crypto_uint8 *);
extern void sshcrypto_kex_put(struct buf *);
#if defined(crypto_scalarmult_curve25519_BYTES) && defined(crypto_hash_sha256_BYTES)
/* sshcrypto_kex_curve25519.c */
extern int curve25519_dh(unsigned char *, unsigned char *, unsigned char *);
extern int curve25519_keypair(unsigned char *, unsigned char *);
extern void curve25519_putdhpk(struct buf *, const unsigned char *);
extern void curve25519_putsharedsecret(struct buf *, const unsigned char *);
#endif
#if defined(crypto_scalarmult_nistp256_BYTES) && defined(crypto_hash_sha256_BYTES)
/* sshcrypto_kex_nistp256.c */
extern int nistp256_dh(unsigned char *, unsigned char *, unsigned char *);
extern int nistp256_keypair(unsigned char *, unsigned char *);
extern void nistp256_putdhpk(struct buf *, const unsigned char *);
extern void nistp256_putsharedsecret(struct buf *, const unsigned char *);
#endif
/* key - sign */
#define sshcrypto_sign_PUBLICKEYMAX 64 /* space for nistp256ecdsa pk */
#define sshcrypto_sign_SECRETKEYMAX 64 /* space for nistp256ecdsa sk */
#define sshcrypto_sign_MAX 64 /* space for nistp256ecdsa/ed25519 sig */
#define sshcrypto_sign_BASE64PUBLICKEYMAX 141 /* space for nistp256ecdsa in base64 + 0-terminator */
#define sshcrypto_sign_BASE64PUBLICKEYMIN 69 /* space for ed25519 in base64 + 0-terminator */
#define sshcrypto_sign_NAMEMAX 20 /* space for string ecdsa-sha2-nistp256 + 0-terminator */
struct sshcrypto_key {
const char *name;
int (*sign)(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
int (*sign_open)(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
int (*sign_keypair)(unsigned char *, unsigned char *);
unsigned char sign_publickey[sshcrypto_sign_PUBLICKEYMAX];
long long sign_publickeybytes;
long long sign_secretkeybytes;
long long sign_bytes;
const char *sign_publickeyfilename;
const char *sign_secretkeyfilename;
unsigned int cryptotype;
int sign_flagserver;
int sign_flagclient;
void (*buf_putsignature)(struct buf *, const unsigned char *);
void (*buf_putsignpk)(struct buf *, const unsigned char *);
void (*buf_putsignpkbase64)(struct buf *, const unsigned char *);
int (*parsesignature)(unsigned char *, const unsigned char *, long long);
int (*parsesignpk)(unsigned char *, const unsigned char *, long long);
};
extern struct sshcrypto_key sshcrypto_keys[];
extern const char *sshcrypto_key_name;
extern int (*sshcrypto_sign)(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *);
extern unsigned char *sshcrypto_sign_publickey;
extern long long sshcrypto_sign_publickeybytes;
extern long long sshcrypto_sign_secretkeybytes;
extern long long sshcrypto_sign_bytes;
extern const char *sshcrypto_sign_secretkeyfilename;
extern void (*sshcrypto_buf_putsignature)(struct buf *, const unsigned char *);
extern void (*sshcrypto_buf_putsignpk)(struct buf *, const unsigned char *);
extern int sshcrypto_key_select(const unsigned char *, long long);
extern void sshcrypto_key_put(struct buf *);
#ifdef crypto_sign_ed25519_BYTES
/* sshcrypto_key_ed25519.c */
extern void ed25519_putsignature(struct buf *, const unsigned char *);
extern void ed25519_putsignpk(struct buf *, const unsigned char *);
extern void ed25519_putsignpkbase64(struct buf *, const unsigned char *);
extern int ed25519_parsesignpk(unsigned char *, const unsigned char *, long long);
extern int ed25519_parsesignature(unsigned char *, const unsigned char *, long long);
#endif
#ifdef crypto_sign_nistp256ecdsa_BYTES
/* sshcrypto_key_nistp256ecdsa.c */
extern void nistp256ecdsa_putsignature(struct buf *, const unsigned char *);
extern void nistp256ecdsa_putsignpk(struct buf *, const unsigned char *);
extern void nistp256ecdsa_putsignpkbase64(struct buf *, const unsigned char *);
extern int nistp256ecdsa_parsesignpk(unsigned char *, const unsigned char *, long long);
extern int nistp256ecdsa_parsesignature(unsigned char *, const unsigned char *, long long);
#endif
/* cipher + mac */
#define sshcrypto_cipher_KEYMAX 128 /* space for 2 x sha512 */
struct sshcrypto_cipher {
const char *name;
int (*stream_xor)(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
int (*auth)(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
long long stream_keybytes;
long long cipher_blockbytes;
long long auth_bytes;
void (*packet_put)(struct buf *);
int (*packet_get)(struct buf *);
unsigned int cryptotype;
int flagenabled;
};
extern struct sshcrypto_cipher sshcrypto_ciphers[];
extern const char *sshcrypto_cipher_name;
extern int (*sshcrypto_stream_xor)(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *);
extern int (*sshcrypto_auth)(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *);
extern long long sshcrypto_stream_keybytes;
extern long long sshcrypto_cipher_blockbytes;
extern long long sshcrypto_auth_bytes;
extern void (*sshcrypto_packet_put)(struct buf *);
extern int (*sshcrypto_packet_get)(struct buf *);
extern int sshcrypto_cipher_select(const unsigned char *, long long);
extern int sshcrypto_cipher_macselect(const unsigned char *, long long);
extern void sshcrypto_cipher_put(struct buf *);
extern void sshcrypto_cipher_macput(struct buf *b);
/* from sshcrypto_cipher_chachapoly.c */
extern void chachapoly_packet_put(struct buf *);
extern int chachapoly_packet_get(struct buf *);
/* from sshcrypto_cipher_aesctr.c */
extern void aesctr_packet_put(struct buf *);
extern int aesctr_packet_get(struct buf *);
/* from sshcrypto_cipher_aesctr256.c */
extern int aesctr256_xor(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *, const unsigned char *);
/* init/purge */
extern void sshcrypto_init(void);
extern void sshcrypto_purge(void);
#endif
tinyssh-20180201/tinyssh/sshcrypto_cipher.c 0000664 0000000 0000000 00000010270 13227043065 0020711 0 ustar 00root root 0000000 0000000 /*
20140207
Jan Mojzis
Public domain.
*/
#include "crypto.h"
#include "stringparser.h"
#include "e.h"
#include "log.h"
#include "bug.h"
#include "str.h"
#include "byte.h"
#include "packet.h"
#include "sshcrypto.h"
struct sshcrypto_cipher sshcrypto_ciphers[] = {
#if defined(crypto_stream_chacha20_KEYBYTES) && defined(crypto_onetimeauth_poly1305_BYTES)
{ "chacha20-poly1305@openssh.com",
crypto_stream_chacha20_xor,
crypto_onetimeauth_poly1305,
crypto_stream_chacha20_KEYBYTES * 2,
8,
crypto_onetimeauth_poly1305_BYTES,
chachapoly_packet_put,
chachapoly_packet_get,
sshcrypto_TYPENEWCRYPTO | sshcrypto_TYPEPQCRYPTO,
0
},
#endif
#if defined(crypto_core_aes256encrypt_KEYBYTES) && defined(crypto_auth_hmacsha256_BYTES)
{ "aes256-ctr",
aesctr256_xor,
crypto_auth_hmacsha256,
crypto_core_aes256encrypt_KEYBYTES,
16,
crypto_auth_hmacsha256_BYTES,
aesctr_packet_put,
aesctr_packet_get,
sshcrypto_TYPEOLDCRYPTO,
0
},
#endif
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
const char *sshcrypto_cipher_name = 0;
int (*sshcrypto_stream_xor)(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *, const unsigned char *) = 0;
int (*sshcrypto_stream_beforenm)(unsigned char *, const unsigned char *) = 0;
int (*sshcrypto_auth)(unsigned char *, const unsigned char *, unsigned long long, const unsigned char *) = 0;
long long sshcrypto_stream_keybytes = 0;
long long sshcrypto_cipher_blockbytes = 0;
long long sshcrypto_auth_bytes = 0;
void (*sshcrypto_packet_put)(struct buf *) = 0;
int (*sshcrypto_packet_get)(struct buf *) = 0;
int sshcrypto_cipher_select(const unsigned char *buf, long long len) {
long long i, pos = 0;
unsigned char *x;
long long xlen;
if (sshcrypto_cipher_name) return 1;
if (buf[len] != 0) bug_proto();
log_d2("kex: client: cipher algorithms: ", (char *)buf);
for (;;) {
pos = stringparser(buf, len, pos, &x, &xlen);
if (!pos) break;
for (i = 0; sshcrypto_ciphers[i].name; ++i) {
if (!sshcrypto_ciphers[i].flagenabled) continue;
if (str_equaln((char *)x, xlen, sshcrypto_ciphers[i].name)) {
sshcrypto_cipher_name = sshcrypto_ciphers[i].name;
sshcrypto_stream_xor = sshcrypto_ciphers[i].stream_xor;
sshcrypto_auth = sshcrypto_ciphers[i].auth;
sshcrypto_stream_keybytes = sshcrypto_ciphers[i].stream_keybytes;
sshcrypto_cipher_blockbytes = sshcrypto_ciphers[i].cipher_blockbytes;
sshcrypto_auth_bytes = sshcrypto_ciphers[i].auth_bytes;
sshcrypto_packet_get = sshcrypto_ciphers[i].packet_get;
sshcrypto_packet_put = sshcrypto_ciphers[i].packet_put;
log_d2("kex: cipher selected: ", sshcrypto_ciphers[i].name);
return 1;
}
}
}
log_d2("kex: cipher not available ", (char *)buf);
errno = EPROTO;
return 0;
}
int sshcrypto_cipher_macselect(const unsigned char *buf, long long len) {
if (buf[len] != 0) bug_proto();
log_d2("kex: client: mac algorithms: ", (char *)buf);
log_d1("kex: mac selected: hmac-sha2-256 (ignored for chacha20-poly1305@openssh.com)");
return 1;
}
void sshcrypto_cipher_put(struct buf *b) {
crypto_uint32 len = 0;
long long i, j, start;
j = 0;
for (i = 0; sshcrypto_ciphers[i].name; ++i) {
if (!sshcrypto_ciphers[i].flagenabled) continue;
if (j++) ++len;
len += str_len(sshcrypto_ciphers[i].name);
}
buf_putnum32(b, len);
start = b->len;
j = 0;
for (i = 0; sshcrypto_ciphers[i].name; ++i) {
if (!sshcrypto_ciphers[i].flagenabled) continue;
if (j++) buf_puts(b, ",");
buf_puts(b, sshcrypto_ciphers[i].name);
}
b->buf[b->len] = 0;
log_d2("kex: server: cipher algorithms: ", (char *)b->buf + start);
}
/*
XXX we support only hmac-sha2-256 with aes256-ctr
for chacha20-poly1305@openssh.com is hmac-sha2-256 string ignored
*/
void sshcrypto_cipher_macput(struct buf *b) {
buf_putstring(b, "hmac-sha2-256");
log_d1("kex: server: mac algorithms: hmac-sha2-256");
}
tinyssh-20180201/tinyssh/sshcrypto_cipher_aesctr.c 0000664 0000000 0000000 00000010634 13227043065 0022256 0 ustar 00root root 0000000 0000000 /*
20140207
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "uint32_pack_big.h"
#include "uint32_unpack_big.h"
#include "randommod.h"
#include "packet.h"
#include "byte.h"
#include "bug.h"
#include "purge.h"
#include "e.h"
#include "crypto_verify_32.h"
#include "log.h"
#include "sshcrypto.h"
#define BB sshcrypto_cipher_blockbytes
#define AB sshcrypto_auth_bytes
void aesctr_packet_put(struct buf *b) {
long long pos;
crypto_uint8 paddinglen;
struct buf *sendbuf = &packet.sendbuf;
pos = sendbuf->len; /* get position */
buf_putnum32(sendbuf, 0); /* packet id, for MAC */
buf_putnum32(sendbuf, 0); /* packet length */
buf_putnum8(sendbuf, 0); /* padding length */
buf_put(sendbuf, b->buf, b->len); /* add data */
/* add padding */
paddinglen = 2 * BB - ((sendbuf->len - pos - 4) % BB);
paddinglen += randommod(2) * BB;
buf_putpadding(sendbuf, paddinglen);
/* add space for mac */
buf_putzerobytes(sendbuf, AB);
/* add packet ID */
uint32_pack_big(sendbuf->buf + pos, packet.sendpacketid++);
/* add packet length */
uint32_pack_big(sendbuf->buf + pos + 4, sendbuf->len - pos - AB - 4 - 4);
/* add padding length*/
sendbuf->buf[pos + 8] = paddinglen;
/* get mac */
if (sshcrypto_auth(
sendbuf->buf + sendbuf->len - AB, /* a */
sendbuf->buf + pos, /* m */
sendbuf->len - pos - AB, /* mlen */
packet.servermackey /* k */
) != 0) bug_proto();
/* encrypt */
if (sshcrypto_stream_xor(
sendbuf->buf + pos + 4, /* c */
sendbuf->buf + pos + 4, /* m */
sendbuf->len - pos - 4 - AB, /* mlen */
packet.servernonce, /* n */
packet.serverkey /* k */
) != 0) bug_proto();
/* remove packet id */
byte_copy(sendbuf->buf + pos, sendbuf->len - pos - 4, sendbuf->buf + pos + 4);
sendbuf->len -= 4;
/* cleanup */
purge(sendbuf->buf + sendbuf->len, 4);
}
#define ZB PACKET_ZEROBYTES
int aesctr_packet_get(struct buf *b) {
long long len;
struct buf *recvbuf = &packet.recvbuf;
unsigned char *pp;
long long l;
/* we need at least one block */
if (recvbuf->len - ZB < BB) { packet.packet_length = 0; return 1; }
/* decrypt first block */
if (packet.packet_length == 0) {
if (sshcrypto_stream_xor(
recvbuf->buf + ZB, /* c */
recvbuf->buf + ZB, /* m */
BB, /* mlen */
packet.clientnonce, /* n */
packet.clientkey /* k */
) != 0) bug_proto();
packet.packet_length = uint32_unpack_big(recvbuf->buf + ZB);
}
if (packet.packet_length > PACKET_LIMIT) bug_proto();
if (packet.packet_length + 4 + AB > recvbuf->len - ZB) return 1;
/* decrypt and check MAC */
uint32_pack_big(recvbuf->buf + ZB - 4, packet.receivepacketid++);
if (sshcrypto_stream_xor(
recvbuf->buf + ZB + BB, /* c */
recvbuf->buf + ZB + BB, /* m */
packet.packet_length + 4 - BB, /* mlen */
packet.clientnonce, /* n */
packet.clientkey /* k */
) != 0) bug_proto();
if (sshcrypto_auth(
recvbuf->buf, /* a */
recvbuf->buf + ZB - 4, /* m */
packet.packet_length + 8, /* mlen */
packet.clientmackey /* k */
) != 0) bug_proto();
if (crypto_verify_32(recvbuf->buf, recvbuf->buf + ZB + packet.packet_length + 4) != 0) bug_proto();
len = packet.packet_length;
len -= recvbuf->buf[ZB + 4] + 1;
if (len <= 0) bug_proto();
buf_put(b, recvbuf->buf + ZB + 5, len);
pp = recvbuf->buf + ZB;
l = recvbuf->len - ZB;
byte_copy(pp, l - packet.packet_length + AB + 4, pp + packet.packet_length + AB + 4);
purge(pp + l - packet.packet_length + AB + 4, packet.packet_length + AB + 4);
recvbuf->len -= packet.packet_length + AB + 4;
packet.packet_length = 0;
purge(recvbuf->buf, ZB);
return 1;
}
tinyssh-20180201/tinyssh/sshcrypto_cipher_aesctr256.c 0000664 0000000 0000000 00000001375 13227043065 0022515 0 ustar 00root root 0000000 0000000 #include "crypto.h"
#include "sshcrypto.h"
#if defined(crypto_core_aes256encrypt_KEYBYTES)
int aesctr256_xor(unsigned char *c, const unsigned char *m, unsigned long long l, const unsigned char *nn, const unsigned char *k) {
unsigned int u;
unsigned char x[16];
unsigned char *n = (unsigned char *)nn; /* XXX */
long long i;
if (l % 16) return -1;
while (l >= 16) {
crypto_core_aes256encrypt(x, n, k, 0);
for (i = 0; i < 16; ++i) c[i] = m[i] ^ x[i];
u = 1;
for (i = 15; i >= 0; --i) {
u += (unsigned int) n[i];
n[i] = u;
u >>= 8;
}
l -= 16;
m += 16;
c += 16;
}
for (i = 0; i < sizeof x; ++i) x[i] = 0;
return 0;
}
#endif
tinyssh-20180201/tinyssh/sshcrypto_cipher_chachapoly.c 0000664 0000000 0000000 00000007520 13227043065 0023110 0 ustar 00root root 0000000 0000000 /*
20140207
Jan Mojzis
Public domain.
*/
#include "uint32_pack_big.h"
#include "uint32_unpack_big.h"
#include "crypto_verify_16.h"
#include "randommod.h"
#include "e.h"
#include "byte.h"
#include "purge.h"
#include "sshcrypto.h"
#include "bug.h"
#include "packet.h"
#define BB sshcrypto_cipher_blockbytes
#define AB sshcrypto_auth_bytes
#define ZB 60
void chachapoly_packet_put(struct buf *b) {
long long pos;
crypto_uint8 paddinglen;
struct buf *sendbuf = &packet.sendbuf;
unsigned char n[8];
pos = sendbuf->len; /* get position */
buf_putzerobytes(sendbuf, ZB); /* zero bytes */
buf_putnum32(sendbuf, 0); /* the length */
buf_putnum8(sendbuf, 0); /* padding length */
buf_put(sendbuf, b->buf, b->len); /* add data */
/* pack nonce */
byte_zero(n, 4);
uint32_pack_big(n + 4, packet.sendpacketid++);
/* padding */
paddinglen = 2 * BB - ((sendbuf->len - pos - ZB) % BB) + 4;
paddinglen += randommod(2) * BB;
buf_putpadding(sendbuf, paddinglen);
sendbuf->buf[pos + ZB + 4] = paddinglen;
/* space for mac */
buf_putzerobytes(sendbuf, AB);
/* encrypt data */
sshcrypto_stream_xor(sendbuf->buf + pos, sendbuf->buf + pos, sendbuf->len - pos - AB, n, packet.serverkey);
/* add packet length */
uint32_pack_big(sendbuf->buf + pos + ZB, sendbuf->len - pos - AB - 4 - ZB);
/* encrypt the length */
sshcrypto_stream_xor(sendbuf->buf + pos + ZB, sendbuf->buf + pos + ZB, 4, n, packet.serverkey + 32);
purge(n, sizeof n);
/* authenticate data */
sshcrypto_auth(sendbuf->buf + sendbuf->len - AB, sendbuf->buf + pos + ZB, sendbuf->len - AB - pos - ZB, sendbuf->buf + pos);
/* remove zerobytes */
byte_copy(sendbuf->buf + pos, sendbuf->len - pos - ZB, sendbuf->buf + pos + ZB);
sendbuf->len -= ZB;
purge(sendbuf->buf + sendbuf->len, ZB);
}
int chachapoly_packet_get(struct buf *b) {
long long len;
struct buf *recvbuf = &packet.recvbuf;
unsigned char buf[16];
unsigned char *pp;
long long l;
unsigned char n[8];
/* we need at least 4 bytes */
if (recvbuf->len - PACKET_ZEROBYTES < 4) { packet.packet_length = 0; return 1; }
/* parse length */
byte_zero(n, 4);
uint32_pack_big(n + 4, packet.receivepacketid);
if (packet.packet_length == 0) {
sshcrypto_stream_xor(buf, recvbuf->buf + PACKET_ZEROBYTES, 4, n, packet.clientkey + 32);
packet.packet_length = uint32_unpack_big(buf);
}
if (packet.packet_length > PACKET_LIMIT) bug_proto();
if (packet.packet_length + AB + 4 > recvbuf->len - PACKET_ZEROBYTES) return 1;
/* verify and decrypt packet */
byte_zero(recvbuf->buf, 32);
sshcrypto_stream_xor(recvbuf->buf, recvbuf->buf, 32, n, packet.clientkey);
sshcrypto_auth(buf, recvbuf->buf + PACKET_ZEROBYTES, packet.packet_length + 4, recvbuf->buf);
if (crypto_verify_16(buf, recvbuf->buf + PACKET_ZEROBYTES + packet.packet_length + 4) != 0) bug_proto();
purge(buf, sizeof buf);
sshcrypto_stream_xor(recvbuf->buf + 4, recvbuf->buf + 4, packet.packet_length + PACKET_ZEROBYTES, n, packet.clientkey);
purge(n, sizeof n);
/* process packet */
len = packet.packet_length;
len -= recvbuf->buf[PACKET_ZEROBYTES + 4] + 1;
if (len <= 0) bug_proto();
buf_put(b, recvbuf->buf + PACKET_ZEROBYTES + 5, len);
pp = recvbuf->buf + PACKET_ZEROBYTES;
l = recvbuf->len - PACKET_ZEROBYTES;
byte_copy(pp, l - packet.packet_length + AB + 4, pp + packet.packet_length + AB + 4);
purge(pp + l - packet.packet_length + AB + 4, packet.packet_length + AB + 4);
recvbuf->len -= packet.packet_length + AB + 4;
/* packetid */
packet.receivepacketid++;
/* cleanup */
packet.packet_length = 0;
purge(recvbuf->buf, PACKET_ZEROBYTES);
return 1;
}
tinyssh-20180201/tinyssh/sshcrypto_kex.c 0000664 0000000 0000000 00000011514 13227043065 0020230 0 ustar 00root root 0000000 0000000 /*
20140203
Jan Mojzis
Public domain.
*/
#include "crypto.h"
#include "stringparser.h"
#include "str.h"
#include "byte.h"
#include "e.h"
#include "log.h"
#include "bug.h"
#include "sshcrypto.h"
struct sshcrypto_kex sshcrypto_kexs[] = {
#if defined(crypto_scalarmult_curve25519_BYTES) && defined(crypto_hash_sha256_BYTES)
{ "curve25519-sha256@libssh.org",
curve25519_dh,
curve25519_keypair,
crypto_scalarmult_curve25519_BYTES, /* pk */
crypto_scalarmult_curve25519_SCALARBYTES, /* sk */
crypto_scalarmult_curve25519_BYTES, /* k */
crypto_hash_sha256,
crypto_hash_sha256_BYTES,
curve25519_putsharedsecret,
curve25519_putdhpk,
sshcrypto_TYPENEWCRYPTO,
0,
},
{ "curve25519-sha256",
curve25519_dh,
curve25519_keypair,
crypto_scalarmult_curve25519_BYTES, /* pk */
crypto_scalarmult_curve25519_SCALARBYTES, /* sk */
crypto_scalarmult_curve25519_BYTES, /* k */
crypto_hash_sha256,
crypto_hash_sha256_BYTES,
curve25519_putsharedsecret,
curve25519_putdhpk,
sshcrypto_TYPENEWCRYPTO,
0,
},
#endif
#if defined(crypto_scalarmult_nistp256_BYTES) && defined(crypto_hash_sha256_BYTES)
{ "ecdh-sha2-nistp256",
nistp256_dh,
nistp256_keypair,
crypto_scalarmult_nistp256_BYTES + 1, /* pk */
crypto_scalarmult_nistp256_SCALARBYTES, /* sk */
crypto_scalarmult_nistp256_BYTES / 2, /* k */
crypto_hash_sha256,
crypto_hash_sha256_BYTES,
nistp256_putsharedsecret,
nistp256_putdhpk,
sshcrypto_TYPEOLDCRYPTO,
0,
},
#endif
#if 0
{ "pqkexTODO",
curve25519_dh,
curve25519_keypair,
crypto_scalarmult_curve25519_BYTES, /* pk */
crypto_scalarmult_curve25519_SCALARBYTES, /* sk */
crypto_scalarmult_curve25519_BYTES, /* k */
crypto_hash_sha256,
crypto_hash_sha256_BYTES,
curve25519_putsharedsecret,
curve25519_putdhpk,
sshcrypto_TYPEPQCRYPTO,
0,
},
#endif
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
const char *sshcrypto_kex_name = 0;
int (*sshcrypto_dh)(unsigned char *, unsigned char *, unsigned char *) = 0;
int (*sshcrypto_dh_keypair)(unsigned char *, unsigned char *) = 0;
long long sshcrypto_dh_publickeybytes = 0;
long long sshcrypto_dh_secretkeybytes = 0;
long long sshcrypto_dh_bytes = 0;
int (*sshcrypto_hash)(unsigned char *, const unsigned char *, unsigned long long) = 0;
long long sshcrypto_hash_bytes = 0;
void (*sshcrypto_buf_putsharedsecret)(struct buf *, const unsigned char *) = 0;
void (*sshcrypto_buf_putdhpk)(struct buf *, const unsigned char *) = 0;
int sshcrypto_kex_select(const unsigned char *buf, long long len, crypto_uint8 *kex_guess) {
long long i, pos = 0;
unsigned char *x;
long long xlen;
if (sshcrypto_kex_name) return 1;
if (buf[len] != 0) bug_proto();
log_d2("kex: client: kex algorithms: ", (char *)buf);
*kex_guess = 1;
for (;;) {
pos = stringparser(buf, len, pos, &x, &xlen);
if (!pos) break;
for (i = 0; sshcrypto_kexs[i].name; ++i) {
if (!sshcrypto_kexs[i].flagenabled) continue;
if (str_equaln((char *)x, xlen, sshcrypto_kexs[i].name)) {
sshcrypto_kex_name = sshcrypto_kexs[i].name;
sshcrypto_dh = sshcrypto_kexs[i].dh;
sshcrypto_dh_keypair = sshcrypto_kexs[i].dh_keypair;
sshcrypto_dh_publickeybytes = sshcrypto_kexs[i].dh_publickeybytes;
sshcrypto_dh_secretkeybytes = sshcrypto_kexs[i].dh_secretkeybytes;
sshcrypto_dh_bytes = sshcrypto_kexs[i].dh_bytes;
sshcrypto_hash = sshcrypto_kexs[i].hash;
sshcrypto_hash_bytes = sshcrypto_kexs[i].hash_bytes;
sshcrypto_buf_putsharedsecret = sshcrypto_kexs[i].buf_putsharedsecret;
sshcrypto_buf_putdhpk = sshcrypto_kexs[i].buf_putdhpk;
log_d2("kex: kex selected: ", sshcrypto_kexs[i].name);
return 1;
}
}
*kex_guess = 0;
}
log_d2("kex: kex not available ", (char *)buf);
errno = EPROTO;
return 0;
}
void sshcrypto_kex_put(struct buf *b) {
crypto_uint32 len = 0;
long long i, j, start;
j = 0;
for (i = 0; sshcrypto_kexs[i].name; ++i) {
if (!sshcrypto_kexs[i].flagenabled) continue;
if (j++) ++len;
len += str_len(sshcrypto_kexs[i].name);
}
buf_putnum32(b, len);
start = b->len;
j = 0;
for (i = 0; sshcrypto_kexs[i].name; ++i) {
if (!sshcrypto_kexs[i].flagenabled) continue;
if (j++) buf_puts(b, ",");
buf_puts(b, sshcrypto_kexs[i].name);
}
b->buf[b->len] = 0;
log_d2("kex: server: kex algorithms: ", (char *)b->buf + start);
}
tinyssh-20180201/tinyssh/sshcrypto_kex_curve25519.c 0000664 0000000 0000000 00000001731 13227043065 0022042 0 ustar 00root root 0000000 0000000 /*
20140203
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "crypto.h"
#include "randombytes.h"
#include "sshcrypto.h"
#if defined(crypto_scalarmult_curve25519_BYTES) && defined(crypto_hash_sha256_BYTES)
int curve25519_dh(unsigned char *k, unsigned char *pk, unsigned char *sk) {
long long i;
unsigned int d = 0;
int ret;
ret = crypto_scalarmult_curve25519(k, sk, pk);
for (i = 0; i < crypto_scalarmult_curve25519_BYTES; ++i) d |= k[i];
ret |= -(1 & ((d - 1) >> 8));
return ret;
}
int curve25519_keypair(unsigned char *pk, unsigned char *sk) {
randombytes(sk, crypto_scalarmult_curve25519_SCALARBYTES);
return crypto_scalarmult_curve25519_base(pk, sk);
}
void curve25519_putdhpk(struct buf *b, const unsigned char *x) {
buf_putstringlen(b, x, crypto_scalarmult_curve25519_BYTES);
}
void curve25519_putsharedsecret(struct buf *b, const unsigned char *x) {
buf_putsharedsecret(b, x, crypto_scalarmult_curve25519_BYTES);
}
#endif
tinyssh-20180201/tinyssh/sshcrypto_kex_nistp256.c 0000664 0000000 0000000 00000002103 13227043065 0021674 0 ustar 00root root 0000000 0000000 /*
20140203
Jan Mojzis
Public domain.
*/
#include "buf.h"
#include "crypto.h"
#include "byte.h"
#include "purge.h"
#include "randombytes.h"
#include "sshcrypto.h"
#if defined(crypto_scalarmult_nistp256_BYTES) && defined(crypto_hash_sha256_BYTES)
int nistp256_dh(unsigned char *k, unsigned char *pk, unsigned char *sk) {
unsigned char kk[crypto_scalarmult_nistp256_BYTES];
if (pk[0] != 4) return -1;
if (crypto_scalarmult_nistp256(kk, sk, pk + 1) != 0) return -1;
byte_copy(k, crypto_scalarmult_nistp256_BYTES / 2, kk);
purge(kk, sizeof kk);
return 0;
}
int nistp256_keypair(unsigned char *pk, unsigned char *sk) {
randombytes(sk, crypto_scalarmult_nistp256_SCALARBYTES);
pk[0] = 4; /* means uncompressed point */
return crypto_scalarmult_nistp256_base(pk + 1, sk);
}
void nistp256_putdhpk(struct buf *b, const unsigned char *x) {
buf_putstringlen(b, x, crypto_scalarmult_nistp256_BYTES + 1);
}
void nistp256_putsharedsecret(struct buf *b, const unsigned char *x) {
buf_putsharedsecret(b, x, crypto_scalarmult_nistp256_BYTES / 2);
}
#endif
tinyssh-20180201/tinyssh/sshcrypto_key.c 0000664 0000000 0000000 00000011152 13227043065 0020227 0 ustar 00root root 0000000 0000000 /*
20140204
Jan Mojzis
Public domain.
*/
#include "crypto.h"
#include "packetparser.h"
#include "stringparser.h"
#include "str.h"
#include "byte.h"
#include "e.h"
#include "log.h"
#include "bug.h"
#include "purge.h"
#include "sshcrypto.h"
struct sshcrypto_key sshcrypto_keys[] = {
#ifdef crypto_sign_ed25519_BYTES
{ "ssh-ed25519",
crypto_sign_ed25519,
crypto_sign_ed25519_open,
crypto_sign_ed25519_keypair,
{0},
crypto_sign_ed25519_PUBLICKEYBYTES,
crypto_sign_ed25519_SECRETKEYBYTES,
crypto_sign_ed25519_BYTES,
"ed25519.pk",
".ed25519.sk",
sshcrypto_TYPENEWCRYPTO,
0,
0,
ed25519_putsignature,
ed25519_putsignpk,
ed25519_putsignpkbase64,
ed25519_parsesignature,
ed25519_parsesignpk,
},
#endif
#ifdef crypto_sign_nistp256ecdsa_BYTES
{ "ecdsa-sha2-nistp256",
crypto_sign_nistp256ecdsa,
crypto_sign_nistp256ecdsa_open,
crypto_sign_nistp256ecdsa_keypair,
{0},
crypto_sign_nistp256ecdsa_PUBLICKEYBYTES,
crypto_sign_nistp256ecdsa_SECRETKEYBYTES,
crypto_sign_nistp256ecdsa_BYTES,
"nistp256ecdsa.pk",
".nistp256ecdsa.sk",
sshcrypto_TYPEOLDCRYPTO,
0,
0,
nistp256ecdsa_putsignature,
nistp256ecdsa_putsignpk,
nistp256ecdsa_putsignpkbase64,
nistp256ecdsa_parsesignature,
nistp256ecdsa_parsesignpk,
},
#endif
#if 0
{ "pqkeyTODO",
crypto_sign_ed25519,
crypto_sign_ed25519_open,
crypto_sign_ed25519_keypair,
{0},
crypto_sign_ed25519_PUBLICKEYBYTES,
crypto_sign_ed25519_SECRETKEYBYTES,
crypto_sign_ed25519_BYTES,
"pqkeyTODO.pk",
".pqkeyTODO.sk",
sshcrypto_TYPEPQCRYPTO,
0,
0,
ed25519_putsignature,
ed25519_putsignpk,
ed25519_putsignpkbase64,
ed25519_parsesignature,
ed25519_parsesignpk,
},
#endif
{ 0, 0, 0, 0, {0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
const char *sshcrypto_key_name = 0;
int (*sshcrypto_sign)(unsigned char *,unsigned long long *,const unsigned char *,unsigned long long,const unsigned char *) = 0;
unsigned char *sshcrypto_sign_publickey = 0;
long long sshcrypto_sign_publickeybytes = 0;
long long sshcrypto_sign_secretkeybytes = 0;
long long sshcrypto_sign_bytes = 0;
const char *sshcrypto_sign_secretkeyfilename = 0;
void (*sshcrypto_buf_putsignature)(struct buf *, const unsigned char *) = 0;
void (*sshcrypto_buf_putsignpk)(struct buf *, const unsigned char *) = 0;
int sshcrypto_key_select(const unsigned char *buf, long long len) {
long long i, pos = 0;
unsigned char *x;
long long xlen;
if (sshcrypto_key_name) return 1;
if (buf[len] != 0) bug_proto();
log_d2("kex: client: key algorithms: ", (char *)buf);
for (;;) {
pos = stringparser(buf, len, pos, &x, &xlen);
if (!pos) break;
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (!sshcrypto_keys[i].sign_flagserver) continue;
if (str_equaln((char *)x, xlen, sshcrypto_keys[i].name)) {
sshcrypto_key_name = sshcrypto_keys[i].name;
sshcrypto_sign = sshcrypto_keys[i].sign;
sshcrypto_sign_publickey = sshcrypto_keys[i].sign_publickey;
sshcrypto_sign_publickeybytes = sshcrypto_keys[i].sign_publickeybytes;
sshcrypto_sign_secretkeybytes = sshcrypto_keys[i].sign_secretkeybytes;
sshcrypto_sign_bytes = sshcrypto_keys[i].sign_bytes;
sshcrypto_sign_secretkeyfilename = sshcrypto_keys[i].sign_secretkeyfilename;
sshcrypto_buf_putsignature = sshcrypto_keys[i].buf_putsignature;
sshcrypto_buf_putsignpk = sshcrypto_keys[i].buf_putsignpk;
log_d2("kex: key selected: ", sshcrypto_keys[i].name);
return 1;
}
}
}
log_d2("kex: key not available ", (char *)buf);
errno = EPROTO;
return 0;
}
void sshcrypto_key_put(struct buf *b) {
crypto_uint32 len = 0;
long long i, j, start;
j = 0;
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (!sshcrypto_keys[i].sign_flagserver) continue;
if (j++) ++len;
len += str_len(sshcrypto_keys[i].name);
}
buf_putnum32(b, len);
start = b->len;
j = 0;
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (!sshcrypto_keys[i].sign_flagserver) continue;
if (j++) buf_puts(b, ",");
buf_puts(b, sshcrypto_keys[i].name);
}
b->buf[b->len] = 0;
log_d2("kex: server: key algorithms: ", (char *)b->buf + start);
}
tinyssh-20180201/tinyssh/sshcrypto_key_ed25519.c 0000664 0000000 0000000 00000004134 13227043065 0021307 0 ustar 00root root 0000000 0000000 /*
20140204
Jan Mojzis
Public domain.
*/
#include "crypto.h"
#include "packetparser.h"
#include "buf.h"
#include "byte.h"
#include "str.h"
#include "purge.h"
#include "sshcrypto.h"
#ifdef crypto_sign_ed25519_BYTES
void ed25519_putsignature(struct buf *b, const unsigned char *x) {
const char *name = "ssh-ed25519";
long long len = crypto_sign_ed25519_BYTES;
buf_putnum32(b, len + str_len(name) + 8);
buf_putstring(b, name);
buf_putstringlen(b, x, len);
}
void ed25519_putsignpk(struct buf *b, const unsigned char *x) {
const char *name = "ssh-ed25519";
long long len = crypto_sign_ed25519_PUBLICKEYBYTES;
buf_putnum32(b, len + str_len(name) + 8);
buf_putstring(b, name);
buf_putstringlen(b, x, len);
}
void ed25519_putsignpkbase64(struct buf *b, const unsigned char *x) {
unsigned char buf[19 + crypto_sign_ed25519_PUBLICKEYBYTES];
byte_copy(buf, 19, "\0\0\0\013ssh-ed25519\0\0\0\040");
byte_copy(buf + 19, crypto_sign_ed25519_PUBLICKEYBYTES, x);
buf_putbase64(b, buf, sizeof buf);
purge(buf, sizeof buf);
}
int ed25519_parsesignpk(unsigned char *buf, const unsigned char *x, long long xlen) {
long long pos = 0;
crypto_uint32 len;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!str_equaln((char *)x + pos - len, len, "ssh-ed25519")) return 0;
pos = packetparser_uint32(x, xlen, pos, &len);
if (len != crypto_sign_ed25519_PUBLICKEYBYTES) return 0;
pos = packetparser_copy(x, xlen, pos, buf, len);
pos = packetparser_end(x, xlen, pos);
return 1;
}
int ed25519_parsesignature(unsigned char *buf, const unsigned char *x, long long xlen) {
long long pos = 0;
crypto_uint32 len;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!str_equaln((char *)x + pos - len, len, "ssh-ed25519")) return 0;
pos = packetparser_uint32(x, xlen, pos, &len);
if (len != crypto_sign_ed25519_BYTES) return 0;
pos = packetparser_copy(x, xlen, pos, buf, len);
pos = packetparser_end(x, xlen, pos);
return 1;
}
#endif
tinyssh-20180201/tinyssh/sshcrypto_key_nistp256ecdsa.c 0000664 0000000 0000000 00000012025 13227043065 0022701 0 ustar 00root root 0000000 0000000 /*
20140204
Jan Mojzis
Public domain.
*/
#include "crypto.h"
#include "packetparser.h"
#include "buf.h"
#include "byte.h"
#include "str.h"
#include "purge.h"
#include "sshcrypto.h"
#ifdef crypto_sign_nistp256ecdsa_BYTES
static void _putmpint(struct buf *b, const unsigned char *x, long long len) {
long long pos;
for (pos = 0; pos < len; ++pos) if (x[pos]) break;
if (x[pos] & 0x80) {
buf_putnum32(b, len - pos + 1);
buf_putnum8(b, 0);
}
else {
buf_putnum32(b, len - pos);
}
buf_put(b, x + pos, len - pos);
}
void nistp256ecdsa_putsignature(struct buf *b, const unsigned char *x) {
unsigned char mpintrspace[crypto_sign_nistp256ecdsa_BYTES / 2 + 4 + 1 + 1];
unsigned char mpintsspace[crypto_sign_nistp256ecdsa_BYTES / 2 + 4 + 1 + 1];
unsigned char mpintbspace[crypto_sign_nistp256ecdsa_BYTES + 10 + 1];
unsigned char sigblobspace[4 + 23 + crypto_sign_nistp256ecdsa_BYTES + 10 + 1];
struct buf mpintr;
struct buf mpints;
struct buf mpintb;
struct buf sigblob;
long long halflen = crypto_sign_nistp256ecdsa_BYTES / 2;
const char *name = "ecdsa-sha2-nistp256";
buf_init(&mpintr, mpintrspace, sizeof mpintrspace);
buf_init(&mpints, mpintsspace, sizeof mpintsspace);
buf_init(&mpintb, mpintbspace, sizeof mpintbspace);
buf_init(&sigblob, sigblobspace, sizeof sigblobspace);
_putmpint(&mpintr, x, halflen);
_putmpint(&mpints, x + halflen, halflen);
buf_put(&mpintb, mpintr.buf, mpintr.len);
buf_put(&mpintb, mpints.buf, mpints.len);
buf_putstring(&sigblob, name);
buf_putstringlen(&sigblob, mpintb.buf, mpintb.len);
buf_putstringlen(b, sigblob.buf, sigblob.len);
purge(mpintrspace, sizeof mpintrspace);
purge(mpintsspace, sizeof mpintsspace);
purge(mpintbspace, sizeof mpintbspace);
purge(sigblobspace, sizeof sigblobspace);
}
void nistp256ecdsa_putsignpk(struct buf *b, const unsigned char *x) {
const char *name = "ecdsa-sha2-nistp256";
const char *ecname = "nistp256";
long long len = crypto_sign_nistp256ecdsa_PUBLICKEYBYTES;
buf_putnum32(b, len + str_len(name) + str_len(ecname) + 12 + 1);
buf_putstring(b, name);
buf_putstring(b, ecname);
buf_putnum32(b, len + 1);
buf_putnum8(b, 4);
buf_put(b, x, crypto_sign_nistp256ecdsa_PUBLICKEYBYTES);
}
void nistp256ecdsa_putsignpkbase64(struct buf *b, const unsigned char *x) {
unsigned char buf[40 + crypto_sign_nistp256ecdsa_PUBLICKEYBYTES];
byte_copy(buf, 40, "\0\0\0\023ecdsa-sha2-nistp256\0\0\0\010nistp256\0\0\0\101\004");
byte_copy(buf + 40, crypto_sign_nistp256ecdsa_PUBLICKEYBYTES, x);
buf_putbase64(b, buf, sizeof buf);
purge(buf, sizeof buf);
}
int nistp256ecdsa_parsesignpk(unsigned char *buf, const unsigned char *x, long long xlen) {
long long pos = 0;
crypto_uint32 len;
crypto_uint8 ch;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!str_equaln((char *)x + pos - len, len, "ecdsa-sha2-nistp256")) return 0;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!str_equaln((char *)x + pos - len, len, "nistp256")) return 0;
pos = packetparser_uint32(x, xlen, pos, &len);
if (len != crypto_sign_nistp256ecdsa_PUBLICKEYBYTES + 1) return 0;
pos = packetparser_uint8(x, xlen, pos, &ch);
if (ch != 4) return 0;
pos = packetparser_copy(x, xlen, pos, buf, len - 1);
pos = packetparser_end(x, xlen, pos);
return 1;
}
static int _parsempintblob(unsigned char *buf, const unsigned char *x, long long xlen) {
long long pos = 0, bpos = 0;
crypto_uint32 len;
unsigned char bufr[crypto_sign_nistp256ecdsa_BYTES / 2 + 1];
unsigned char bufs[crypto_sign_nistp256ecdsa_BYTES / 2 + 1];
byte_zero(bufr, sizeof bufr);
byte_zero(bufs, sizeof bufs);
pos = packetparser_uint32(x, xlen, pos, &len);
bpos = crypto_sign_nistp256ecdsa_BYTES / 2 - len + 1;
if (bpos < 0) return 0;
pos = packetparser_copy(x, xlen, pos, bufr + bpos, len);
pos = packetparser_uint32(x, xlen, pos, &len);
bpos = crypto_sign_nistp256ecdsa_BYTES / 2 - len + 1;
if (bpos < 0) return 0;
pos = packetparser_copy(x, xlen, pos, bufs + bpos, len);
byte_copy(buf, crypto_sign_nistp256ecdsa_BYTES / 2, bufr + 1);
byte_copy(buf + crypto_sign_nistp256ecdsa_BYTES / 2, crypto_sign_nistp256ecdsa_BYTES / 2, bufs + 1);
purge(bufr, sizeof bufr);
purge(bufs, sizeof bufs);
pos = packetparser_end(x, xlen, pos);
return 1;
}
int nistp256ecdsa_parsesignature(unsigned char *buf, const unsigned char *x, long long xlen) {
long long pos = 0;
crypto_uint32 len;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!str_equaln((char *)x + pos - len, len, "ecdsa-sha2-nistp256")) return 0;
pos = packetparser_uint32(x, xlen, pos, &len);
pos = packetparser_skip(x, xlen, pos, len);
if (!_parsempintblob(buf, x + pos - len, len)) return 0;
pos = packetparser_end(x, xlen, pos);
return 1;
}
#endif
tinyssh-20180201/tinyssh/str.c 0000664 0000000 0000000 00000002577 13227043065 0016144 0 ustar 00root root 0000000 0000000 #include "str.h"
/*
The 'str_len(s)' function calculates the length of the string 's'.
*/
long long str_len(const char *s) {
long long i;
for (i = 0; s[i]; ++i);
return i;
}
/*
The 'str_start(s,t)' function returns 1 if t is a prefix of s, 0 otherwise.
*/
int str_start(const char *s, const char *t) {
char x;
for (;;) {
x = *t++;
if (!x) return 1;
if (x != *s++) return 0;
}
}
/*
The 'str_equaln(y,ylen,x)' function returns 1 if the length of string 'x' is ylen and
if y and x match up to, 0 otherwise.
*/
int str_equaln(const char *y, long long ylen, const char *x) {
long long i;
if (str_len(x) != ylen) return 0;
for (i = 0; i < ylen; ++i) if (y[i] != x[i]) return 0;
return 1;
}
/*
The 'str_copyn(y,ylen,x)' function copies the string pointed to by 'x' (including \0) to the buffer pointed to by 'y'.
If the length of string x is smaller than ylen or equal, then function returns 1.
If the length of string x is biger than ylen, then only ylen - 1 bytes of 'x' are copied and function returns 0.
The 'y' string is always \0 terminated.
*/
int str_copyn(char *y, long long ylen, const char *x) {
long long len = str_len(x);
int ret = 1;
if (ylen <= 0) return 0;
if (ylen - 1 < len) {
len = ylen - 1;
ret = 0;
}
y[len] = 0;
while (len > 0) { *y++ = *x++; --len; }
return ret;
}
tinyssh-20180201/tinyssh/str.h 0000664 0000000 0000000 00000000376 13227043065 0016144 0 ustar 00root root 0000000 0000000 #ifndef _STR_H____
#define _STR_H____
extern long long str_len(const char *);
extern int str_start(const char *, const char *);
extern int str_equaln(const char *, long long, const char *);
extern int str_copyn(char *, long long, const char *);
#endif
tinyssh-20180201/tinyssh/stringparser.c 0000664 0000000 0000000 00000001330 13227043065 0020041 0 ustar 00root root 0000000 0000000 /*
20140203
Jan Mojzis
Public domain.
*/
#include "byte.h"
#include "e.h"
#include "bug.h"
#include "stringparser.h"
/*
The 'stringparser' function parses items from
comma-separated list. Empty strings are ignored.
*/
long long stringparser(const unsigned char *buf, long long len, long long pos, unsigned char **x, long long *xlen) {
long long i;
if (!buf || len < 0 || len > 1073741824 || pos < 0 || pos > 1073741824 || !x || !xlen) bug_inval();
for (;;) {
if (pos >= len) return 0;
for (i = pos; i < len; ++i) {
if (buf[i] == ',') break;
}
*x = (unsigned char *)buf + pos;
*xlen = i - pos;
pos = i + 1;
if (*xlen != 0) return pos;
}
}
tinyssh-20180201/tinyssh/stringparser.h 0000664 0000000 0000000 00000000255 13227043065 0020053 0 ustar 00root root 0000000 0000000 #ifndef _STRINGPARSER_H____
#define _STRINGPARSER_H____
extern long long stringparser(const unsigned char *, long long, long long, unsigned char **, long long *);
#endif
tinyssh-20180201/tinyssh/subprocess.h 0000664 0000000 0000000 00000000650 13227043065 0017517 0 ustar 00root root 0000000 0000000 #ifndef _SUBPROCESS_H____
#define _SUBPROCESS_H____
#include
extern int subprocess_sign(unsigned char *, long long, const char *, unsigned char *, long long);
extern int subprocess_auth(const char *, const char *, const char *);
extern int subprocess_auth_checkpath_(char *, long long, uid_t);
extern int subprocess_auth_authorizedkeys_(const char *, const char *, const char *, char *, long long);
#endif
tinyssh-20180201/tinyssh/subprocess_auth.c 0000664 0000000 0000000 00000010670 13227043065 0020536 0 ustar 00root root 0000000 0000000 /*
20140214
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include
#include "str.h"
#include "open.h"
#include "dropuidgid.h"
#include "global.h"
#include "e.h"
#include "log.h"
#include "sshcrypto.h"
#include "getln.h"
#include "bug.h"
#include "limit.h"
#include "subprocess.h"
static int findnameandkey(const char *keyname, const char *key, char *x) {
if (!str_start(x, keyname)) return 0;
x += str_len(keyname);
if (*x != ' ') return 0;
x += 1;
if (!str_start(x, key)) return 0;
x += str_len(key);
if (*x == ' ') return 1;
if (*x == '\n') return 1;
if (*x == '\r') return 1;
if (*x == 0) return 1;
return 0;
}
static void check(uid_t uid, const char *d, const char *f, long long *err) {
struct stat st;
int e = 0;
if (f) {
if (stat(f, &st) == -1) { log_w4("auth: unable to stat file: ", d, "/", f); e = 1; }
if (e == 0 && !S_ISREG(st.st_mode)) { errno = EACCES; log_w4("auth: non-regular file: ", d, "/", f); e = 1; }
}
else {
if (stat(d, &st) == -1) { log_w4("auth: unable to stat directory: ", d, "/", f); e = 1; }
if (e == 0 && !S_ISDIR(st.st_mode)) { errno = ENOTDIR; log_w4("auth: unable to stat directory: ", d, "/", f); e = 1; }
}
if (e == 0 && (st.st_mode & 022) != 0) { errno = EACCES; log_w4("auth: bad mode: ", d, "/", f); e = 1; }
if (e == 0 && st.st_uid != uid && st.st_uid != 0) { errno = EACCES; log_w4("auth: bad owner: ", d, "/", f); e = 1; }
if (e) *err = 1;
else log_d4("auth: path: ok: ", d, "/", f);
}
int subprocess_auth_checkpath_(char *path, long long pathlen, uid_t uid) {
long long err = 0, j, i;
if (pathlen <= 16) return 0;
if (!getcwd(path, pathlen)) return 0;
for (i = 0; i < pathlen; ++i) if (path[i] == 0) break;
if (i == pathlen) return 0;
check(uid, path, "authorized_keys", &err);
do {
check(uid, path, 0, &err);
for (j = i; j >= 0; --j) {
if (path[j] == '/') {
path[j] = 0;
i = j;
break;
}
}
} while (j > 0);
return (err == 0);
}
int subprocess_auth_authorizedkeys_(const char *keyname, const char *key, const char *dir, char *buf, long long bufmax) {
int fd = -1;
int r;
fd = open_read("authorized_keys");
if (fd == -1) {
log_w3("auth: unable to open file: ", dir, "/authorized_keys");
return 0;
}
do {
r = getln(fd, buf, bufmax);
if (r == -1) {
log_w3("auth: unable to read from file ", dir, "/authorized_keys");
return 0;
}
if (findnameandkey(keyname, key, buf)) return 1; /* authorized */
} while (r > 0);
log_w1("auth: unable to authorize using authorized_keys: key not found");
return 0;
}
/*
The 'subprocess_auth' is used for authorization using
~/.ssh/authorized_keys file.
*/
int subprocess_auth(const char *account, const char *keyname, const char *key) {
pid_t pid;
int status;
pid = fork();
if (pid == -1) return -1;
if (pid == 0) {
#define buf global_bspace2 /* reusing global buffer */
struct passwd *pw;
if (!account || !keyname || !key) bug_inval();
if (sshcrypto_sign_BASE64PUBLICKEYMIN > str_len(key) + 1) bug_inval();
/* drop privileges */
pw = getpwnam(account);
if (!pw) {
log_w3("auth: account ", account, ": not exist");
global_die(111);
}
if (!dropuidgid(pw->pw_name, pw->pw_uid, pw->pw_gid)) {
log_w2("auth: unable to drop privileges to account ", account);
global_die(111);
}
/* change directory to ~/.ssh */
if (chdir(pw->pw_dir) == -1) {
log_w2("auth: unable to change directory to ", pw->pw_dir);
global_die(111);
}
if (chdir(".ssh") == -1) {
log_w3("auth: unable to change directory to ", pw->pw_dir, "/.ssh");
global_die(111);
}
/* authorization starts here */
if (!subprocess_auth_checkpath_((char *)buf, sizeof buf, pw->pw_uid)) global_die(111);
if (!subprocess_auth_authorizedkeys_(keyname, key, pw->pw_dir, (char *)buf, sizeof buf)) global_die(111);
/* authorization ends here */
global_die(0);
}
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
tinyssh-20180201/tinyssh/subprocess_sign.c 0000664 0000000 0000000 00000005141 13227043065 0020532 0 ustar 00root root 0000000 0000000 /*
20140117
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "load.h"
#include "log.h"
#include "open.h"
#include "writeall.h"
#include "purge.h"
#include "global.h"
#include "bug.h"
#include "e.h"
#include "purge.h"
#include "readall.h"
#include "blocking.h"
#include "sshcrypto.h"
#include "subprocess.h"
/*
The 'subprocess_sign' function reads secret-key from 'keydir' and
sings the data 'x' of length 'xlen' and returns it in 'y'.
Caller is expecting 'y' of length 'ylen'. Signing is done
in a different process, so secret-key is in a separate
memory space than rest of the program.
*/
int subprocess_sign(unsigned char *y, long long ylen, const char *keydir, unsigned char *x, long long xlen) {
pid_t pid;
int status, fromchild[2] = {-1, -1};
if (ylen != sshcrypto_sign_bytes) bug_inval();
if (xlen != sshcrypto_hash_bytes) bug_inval();
if (!y || !keydir || !x) bug_inval();
if (open_pipe(fromchild) == -1) return -1;
pid = fork();
if (pid == -1) { close(fromchild[0]); close(fromchild[1]); return -1; }
if (pid == 0) {
unsigned char sk[sshcrypto_sign_SECRETKEYMAX];
unsigned char sm[sshcrypto_sign_MAX + sshcrypto_hash_MAX];
unsigned long long smlen;
close(fromchild[0]);
/* signing starts here */
if (chdir(keydir) == -1) {
log_w2("sign: unable to change directory to ", keydir);
global_die(111);
}
if (load(sshcrypto_sign_secretkeyfilename, sk, sshcrypto_sign_secretkeybytes) == -1) {
log_w4("sign: unable to load secret-key from file ", keydir, "/", sshcrypto_sign_secretkeyfilename);
purge(sk, sizeof sk);
global_die(111);
}
if (sshcrypto_sign(sm, &smlen, x, sshcrypto_hash_bytes, sk) != 0) {
log_w4("sign: unable to sign using secret-key from file ", keydir, "/", sshcrypto_sign_secretkeyfilename);
purge(sk, sizeof sk);
global_die(111);
}
purge(sk, sizeof sk);
if (writeall(fromchild[1], sm, sshcrypto_sign_bytes) == -1) {
log_w1("sign: unable to write signature to parrent process");
global_die(111);
}
close(fromchild[1]);
/* signing ends here */
purge(sm, sizeof sm);
global_die(0);
}
close(fromchild[1]);
blocking_enable(fromchild[0]);
if (readall(fromchild[0], y, ylen) == -1) { close(fromchild[0]); return -1; }
close(fromchild[0]);
while (waitpid(pid, &status, 0) != pid) {};
if (!WIFEXITED(status)) return -1;
return WEXITSTATUS(status);
}
tinyssh-20180201/tinyssh/tinysshd-makekey.c 0000664 0000000 0000000 00000003474 13227043065 0020622 0 ustar 00root root 0000000 0000000 /*
20121022
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include "savesync.h"
#include "log.h"
#include "sshcrypto.h"
#include "global.h"
#include "die.h"
#define sk global_bspace1 /* reusing global buffer */
#define pk global_bspace2 /* reusing global buffer */
#define USAGE "usage: tinysshd-makekey keydir"
static void create(const char *d, const char *fn, const unsigned char *x, long long xlen) {
if (savesync(fn, x, xlen) == -1) die_fatal("unable to create", d, fn);
}
static int flagverbose = 1;
int main(int argc, char **argv) {
char *x;
long long i;
log_init(flagverbose, "tinysshd-makekey", 0, 0);
if (argc < 2) die_usage(USAGE);
if (!argv[0]) die_usage(USAGE);
for (;;) {
if (!argv[1]) break;
if (argv[1][0] != '-') break;
x = *++argv;
if (x[0] == '-' && x[1] == 0) break;
if (x[0] == '-' && x[1] == '-' && x[2] == 0) break;
while (*++x) {
if (*x == 'q') { flagverbose = 0; continue; }
if (*x == 'Q') { flagverbose = 1; continue; }
die_usage(USAGE);
}
}
x = *++argv; if (!x) die_usage(USAGE);
log_init(flagverbose, "tinysshd-makekey", 0, 0);
umask(022);
if (mkdir(x, 0755) == -1) die_fatal("unable to create directory", x, 0);
if (chdir(x) == -1) die_fatal("unable to chdir to directory", x, 0);
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (sshcrypto_keys[i].sign_keypair(pk, sk) != 0) die_fatal("unable to generate key pair", x, 0);
umask(022);
create(x, sshcrypto_keys[i].sign_publickeyfilename, pk, sshcrypto_keys[i].sign_publickeybytes);
umask(077);
create(x, sshcrypto_keys[i].sign_secretkeyfilename, sk, sshcrypto_keys[i].sign_secretkeybytes);
}
global_die(0); return 111;
}
tinyssh-20180201/tinyssh/tinysshd-makekey.exp 0000664 0000000 0000000 00000000573 13227043065 0021171 0 ustar 00root root 0000000 0000000 --- tinysshd-makekey prints help
100
--- tinysshd-makekey creates key-directory
keydir/ed25519.pk
keydir/nistp256ecdsa.pk
0
--- tinysshd-makekey fails when directory exists
tinysshd-makekey: fatal: unable to create directory keydir (file already exists)
111
--- tinysshd-makekey handles '-r' parameter (prints help)
100
--- tinysshd-makekey creates '-r' key-directory
0
tinyssh-20180201/tinyssh/tinysshd-makekey.rts 0000664 0000000 0000000 00000001166 13227043065 0021204 0 ustar 00root root 0000000 0000000 #!/bin/sh
LANG=C
export LANG
LC_ALL=C
export LC_ALL
echo '--- tinysshd-makekey prints help'
echo
./tinysshd-makekey 2>/dev/null
echo $?
echo
echo '--- tinysshd-makekey creates key-directory'
echo
rm -rf keydir
./tinysshd-makekey keydir 2>&1
ls keydir/*.pk | sort
echo $?
echo
echo '--- tinysshd-makekey fails when directory exists'
echo
rm -rf keydir
mkdir keydir
./tinysshd-makekey keydir 2>&1
echo $?
echo "--- tinysshd-makekey handles '-r' parameter (prints help)"
echo
./tinysshd-makekey -r 2>/dev/null
echo $?
echo
echo "--- tinysshd-makekey creates '-r' key-directory"
echo
./tinysshd-makekey -- -r 2>&1
echo $?
echo
tinyssh-20180201/tinyssh/tinysshd-printkey.c 0000664 0000000 0000000 00000003610 13227043065 0021031 0 ustar 00root root 0000000 0000000 /*
20150124
Jan Mojzis
Public domain.
*/
#include
#include "e.h"
#include "load.h"
#include "sshcrypto.h"
#include "crypto.h"
#include "global.h"
#include "buf.h"
#include "log.h"
#include "writeall.h"
#include "die.h"
static struct buf b1 = { global_bspace1, 0, sizeof global_bspace1 }; /* reusing global buffer */
static struct buf b2 = { global_bspace2, 0, sizeof global_bspace2 }; /* reusing global buffer */
static unsigned char pk[sshcrypto_sign_PUBLICKEYMAX];
#define USAGE "usage: tinysshd-printkey keydir"
int main(int argc, char **argv) {
char *x;
long long i;
log_init(3, "tinysshd-printkey", 0, 0);
if (argc < 2) die_usage(USAGE);
if (!argv[0]) die_usage(USAGE);
for (;;) {
if (!argv[1]) break;
if (argv[1][0] != '-') break;
x = *++argv;
if (x[0] == '-' && x[1] == 0) break;
if (x[0] == '-' && x[1] == '-' && x[2] == 0) break;
while (*++x) {
die_usage(USAGE);
}
}
x = *++argv; if (!x) die_usage(USAGE);
if (chdir(x) == -1) die_fatal("unable to chdir to directory", x, 0);
/* read public keys */
for (i = 0; sshcrypto_keys[i].name; ++i) {
if (load(sshcrypto_keys[i].sign_publickeyfilename, pk, sshcrypto_keys[i].sign_publickeybytes) == -1) {
if (errno == ENOENT) continue;
die_fatal("unable to read public key from file", x, sshcrypto_keys[i].sign_publickeyfilename);
}
buf_purge(&b1);
sshcrypto_keys[i].buf_putsignpk(&b1, pk);
if (b1.len < 4) die_fatal("unable to get publickey", 0, 0);
/* base64 */
buf_purge(&b2);
buf_puts(&b2, sshcrypto_keys[i].name);
buf_puts(&b2, " ");
buf_putbase64(&b2, b1.buf + 4, b1.len - 4);
buf_puts(&b2, "\n");
if (writeall(1, b2.buf, b2.len) == -1) die_fatal("unable to write output", 0, 0);
}
global_die(0); return 111;
}
tinyssh-20180201/tinyssh/tinysshd-printkey.exp 0000664 0000000 0000000 00000001445 13227043065 0021407 0 ustar 00root root 0000000 0000000 --- tinysshd-printkey prints help
100
--- tinysshd-printkey prints keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgK
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eAo=
0
--- tinysshd-printkey prints only ssh-ed25519 key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgK
0
--- tinysshd-printkey prints only ecdsa-sha2-nistp256 key
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eAo=
0
--- tinysshd-printkey handles '-r' parameter (prints help)
100
--- tinysshd-printkey prints keys from '-r' key-directory
0
tinyssh-20180201/tinyssh/tinysshd-printkey.rts 0000664 0000000 0000000 00000002106 13227043065 0021416 0 ustar 00root root 0000000 0000000 #!/bin/sh
rm -rf keydir
mkdir keydir
echo '--- tinysshd-printkey prints help'
echo
./tinysshd-printkey 2>/dev/null
echo $?
echo
(
echo 'ed25519.pk xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
echo 'nistp256ecdsa.pk xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
) | (
while read name key
do
echo ${key} > "keydir/${name}"
done
)
echo '--- tinysshd-printkey prints keys'
echo
./tinysshd-printkey keydir
echo $?
echo
mv keydir/nistp256ecdsa.pk keydir/nistp256ecdsa.pk.bk
echo '--- tinysshd-printkey prints only ssh-ed25519 key'
echo
./tinysshd-printkey keydir
echo $?
echo
mv keydir/nistp256ecdsa.pk.bk keydir/nistp256ecdsa.pk
mv keydir/ed25519.pk keydir/ed25519.pk.bk
echo '--- tinysshd-printkey prints only ecdsa-sha2-nistp256 key'
echo
./tinysshd-printkey keydir
echo $?
echo
./tinysshd-makekey 2>/dev/null || :
echo "--- tinysshd-printkey handles '-r' parameter (prints help)"
echo
./tinysshd-printkey -r 2>/dev/null
echo $?
echo
echo "--- tinysshd-printkey prints keys from '-r' key-directory"
echo
./tinysshd-printkey -- -r 1>/dev/null
echo $?
echo
exit 0
tinyssh-20180201/tinyssh/tinysshd.c 0000664 0000000 0000000 00000024634 13227043065 0017177 0 ustar 00root root 0000000 0000000 /*
20140107
Jan Mojzis
Public domain.
*/
#include
#include
#include
#include
#include