From: Adam Dickmeiss Date: Tue, 27 Mar 2001 14:47:45 +0000 (+0000) Subject: New server facility scheme. X-Git-Tag: YAZPP.0.3~52 X-Git-Url: http://jsfdemo.indexdata.com/?a=commitdiff_plain;h=5238ea544d4a2b414592f1d503f5ed83f305b21b;p=yazpp-moved-to-github.git New server facility scheme. --- diff --git a/include/yaz++/yaz-z-server.h b/include/yaz++/yaz-z-server.h index 1e606fa..969a8f6 100644 --- a/include/yaz++/yaz-z-server.h +++ b/include/yaz++/yaz-z-server.h @@ -2,66 +2,107 @@ * Copyright (c) 2000-2001, Index Data. * See the file LICENSE for details. * - * $Id: yaz-z-server.h,v 1.2 2001-03-26 14:43:49 adam Exp $ + * $Id: yaz-z-server.h,v 1.3 2001-03-27 14:47:45 adam Exp $ */ #include class Yaz_Z_Server; -class YAZ_EXPORT Yaz_I_Facility { +class YAZ_EXPORT IYaz_Server_Facility { public: - virtual const char *get_name(Yaz_Z_Server *server) = 0; - virtual int open(Yaz_Z_Server *server, + virtual int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse) = 0; - virtual int recv_PDU(Yaz_Z_Server *server, Z_APDU *apdu) = 0; - virtual int close(Yaz_Z_Server *server) = 0; + virtual int recv(Yaz_Z_Server *server, Z_APDU *apdu) = 0; }; -class YAZ_EXPORT Yaz_Facility_Retrieval : public Yaz_I_Facility { + +class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility { public: - const char *get_name(Yaz_Z_Server *server); - int open(Yaz_Z_Server *server, + int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse); - int recv_PDU(Yaz_Z_Server *server, Z_APDU *apdu); - int close(Yaz_Z_Server *server); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); + + virtual int ill_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) = 0; + + void create_databaseRecord (Z_NamePlusRecord *rec, + const char *dbname, int format, + const void *buf, int len); + void create_surrogateDiagnostics(Z_NamePlusRecord *rec, + const char *dbname, int error, + char *const addinfo); + virtual ODR odr_encode(); + private: + ODR m_odr; }; -class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc { -public: - Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable); - virtual void recv_Z_PDU(Z_APDU *apdu); - virtual void recv_Z_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse) = 0; - virtual void recv_Z_search (Z_SearchRequest *searchRequest, - Z_SearchResponse *searchResponse) = 0; - virtual void recv_Z_present (Z_PresentRequest *presentRequest, - Z_PresentResponse *presentResponse) = 0; - virtual void recv_Z_record (const char *resultSetName, - int position, - int *format, +class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility { + public: + int init(Yaz_Z_Server *server, + Z_InitRequest *initRequest, + Z_InitResponse *initResponse); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); + + virtual int sr_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) = 0; + virtual void sr_search (Z_SearchRequest *searchRequest, + Z_SearchResponse *searchResponse) = 0; + virtual void sr_present (Z_PresentRequest *presentRequest, + Z_PresentResponse *presentResponse) = 0; + virtual void sr_record (const char *resultSetName, + int position, + int *format, Z_RecordComposition *comp, Z_NamePlusRecord *namePlusRecord, Z_Records *diagnostics) = 0; - Z_Records *Yaz_Z_Server::create_nonSurrogateDiagnostics ( - int error, const char *addinfo); void create_databaseRecord (Z_NamePlusRecord *rec, const char *dbname, int format, const void *buf, int len); void create_surrogateDiagnostics(Z_NamePlusRecord *rec, const char *dbname, int error, char *const addinfo); + virtual ODR odr_encode(); private: Z_Records *pack_records (const char *resultSetName, int start, int num, Z_RecordComposition *comp, int *next, int *pres, int *oid); + + Z_Records *create_nonSurrogateDiagnostics (int error, + const char *addinfo); + void fetch_via_piggyback (Z_SearchRequest *searchRequest, Z_SearchResponse *searchResponse); void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res); + int m_preferredMessageSize; int m_maximumRecordSize; + ODR m_odr; +}; + +class YAZ_EXPORT Yaz_Z_Server_Facility_Info { + friend class Yaz_Z_Server; + IYaz_Server_Facility *m_facility; + char *m_name; + Yaz_Z_Server_Facility_Info *m_next; +}; + +class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc { +public: + Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable); + virtual ~Yaz_Z_Server(); + virtual void recv_Z_PDU(Z_APDU *apdu); + void facility_add(IYaz_Server_Facility *facility, const char *name); + void facility_reset (); + private: + Yaz_Z_Server_Facility_Info *m_facilities; +}; + +class YAZ_EXPORT Yaz_USMARC { + public: + const char *get_record(int position); }; diff --git a/src/Makefile.am b/src/Makefile.am index c04230c..2061c40 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -## $Id: Makefile.am,v 1.2 2001-03-26 14:43:49 adam Exp $ +## $Id: Makefile.am,v 1.3 2001-03-27 14:47:45 adam Exp $ INCLUDES=$(YAZINC) -I$(srcdir)/../include @@ -6,17 +6,18 @@ lib_LTLIBRARIES = libyaz++.la libyaz___la_SOURCES=yaz-socket-manager.cpp yaz-pdu-assoc.cpp \ yaz-z-assoc.cpp yaz-proxy.cpp yaz-z-query.cpp yaz-ir-assoc.cpp \ - yaz-z-server.cpp yaz-pdu-assoc-thread.cpp + yaz-z-server.cpp yaz-pdu-assoc-thread.cpp yaz-z-server-sr.cpp \ + yaz-z-server-ill.cpp libyaz___la_LDFLAGS=-version-info 0:0:0 -bin_PROGRAMS = yaz-client++ yaz-server++ yaz-proxy +bin_PROGRAMS = yaz-my-client yaz-my-server yaz-proxy bin_SCRIPTS = yaz++-config -yaz_client___SOURCES=yaz-client.cpp +yaz_my_client_SOURCES=yaz-my-client.cpp -yaz_server___SOURCES=yaz-server.cpp +yaz_my_server_SOURCES=yaz-my-server.cpp yaz-marc-sample.cpp yaz_proxy_SOURCES=yaz-proxy-main.cpp -LDADD=libyaz++.la $(YAZLALIB) -lpthread +LDADD=libyaz++.la $(YAZLALIB) diff --git a/src/yaz-client.cpp b/src/yaz-client.cpp deleted file mode 100644 index a14956e..0000000 --- a/src/yaz-client.cpp +++ /dev/null @@ -1,723 +0,0 @@ -/* - * Copyright (c) 1998-2000, Index Data. - * See the file LICENSE for details. - * - * $Log: yaz-client.cpp,v $ - * Revision 1.17 2001-03-26 14:43:49 adam - * New threaded PDU association. - * - * Revision 1.16 2000/11/01 14:22:59 adam - * Added fd parameter for method IYaz_PDU_Observer::clone. - * - * Revision 1.15 2000/10/11 11:58:16 adam - * Moved header files to include/yaz++. Switched to libtool and automake. - * Configure script creates yaz++-config script. - * - * Revision 1.14 2000/09/08 10:23:42 adam - * Added skeleton of yaz-z-server. - * - * Revision 1.13 2000/09/06 14:23:45 adam - * WIN32 updates. - * - * Revision 1.12 2000/09/04 08:59:16 adam - * Changed call to logging functions (yaz_ added). - * - * Revision 1.11 2000/07/04 13:48:49 adam - * Implemented upper-limit on proxy-to-target sessions. - * - * Revision 1.10 2000/05/30 03:12:27 ian - * minor change to stop g++ 2.95.2 complaining about taking the address - * of a member function. - * - * Revision 1.9 1999/12/06 13:52:45 adam - * Modified for new location of YAZ header files. Experimental threaded - * operation. - * - * Revision 1.8 1999/11/10 10:02:34 adam - * Work on proxy. - * - * Revision 1.7 1999/04/21 12:09:01 adam - * Many improvements. Modified to proxy server to work with "sessions" - * based on cookies. - * - * Revision 1.6 1999/04/20 10:30:05 adam - * Implemented various stuff for client and proxy. Updated calls - * to ODR to reflect new name parameter. - * - * Revision 1.5 1999/04/09 11:46:57 adam - * Added object Yaz_Z_Assoc. Much more functional client. - * - * Revision 1.4 1999/03/23 14:17:57 adam - * More work on timeout handling. Work on yaz-client. - * - * Revision 1.3 1999/02/02 14:01:18 adam - * First WIN32 port of YAZ++. - * - * Revision 1.2 1999/01/28 13:08:42 adam - * Yaz_PDU_Assoc better encapsulated. Memory leak fix in - * yaz-socket-manager.cc. - * - * Revision 1.1.1.1 1999/01/28 09:41:07 adam - * First implementation of YAZ++. - * - */ - -#include -#include -#include -#include -#include -#include - -extern "C" { -#if HAVE_READLINE_READLINE_H -#include -#endif -#if HAVE_READLINE_HISTORY_H -#include -#endif -} - -class YAZ_EXPORT MyClient : public Yaz_IR_Assoc { -private: - int m_interactive_flag; - char m_thisCommand[1024]; - char m_lastCommand[1024]; - int m_setOffset; - Yaz_SocketManager *m_socketManager; -public: - MyClient(IYaz_PDU_Observable *the_PDU_Observable, - Yaz_SocketManager *the_SocketManager); - IYaz_PDU_Observer *sessionNotify( - IYaz_PDU_Observable *the_PDU_Observable, int fd); - int args(Yaz_SocketManager *socketManager, int argc, char **argv); - int interactive(Yaz_SocketManager *socketManager); - int wait(); - void recv_initResponse(Z_InitResponse *initResponse); - void recv_searchResponse(Z_SearchResponse *searchResponse); - void recv_presentResponse(Z_PresentResponse *presentResponse); - void recv_records (Z_Records *records); - void recv_diagrecs(Z_DiagRec **pp, int num); - void recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset); - void recv_record(Z_DatabaseRecord *record, int offset, - const char *databaseName); - void recv_textRecord(int type, const char *buf, size_t len); - void recv_genericRecord(Z_GenericRecord *r); - void display_genericRecord(Z_GenericRecord *r, int level); - void display_variant(Z_Variant *v, int level); - void connectNotify(); - void failNotify(); - void timeoutNotify(); - char *get_cookie (Z_OtherInformation **oi); - int processCommand(const char *cmd); - const char *MyClient::getCommand(); - int cmd_open(char *host); - int cmd_connect(char *host); - int cmd_quit(char *args); - int cmd_close(char *args); - int cmd_find(char *args); - int cmd_show(char *args); - int cmd_cookie(char *args); - int cmd_init(char *args); - int cmd_format(char *args); - int cmd_proxy(char *args); -}; - - -void MyClient::connectNotify() -{ - printf ("Connection accepted by target\n"); - set_lastReceived(-1); -} - -void MyClient::timeoutNotify() -{ - printf ("Connection timeout\n"); - close(); -} - -void MyClient::failNotify() -{ - printf ("Connection closed by target\n"); - set_lastReceived(-1); -} - -IYaz_PDU_Observer *MyClient::sessionNotify( - IYaz_PDU_Observable *the_PDU_Observable, int fd) -{ - return new MyClient(the_PDU_Observable, m_socketManager); -} - -MyClient::MyClient(IYaz_PDU_Observable *the_PDU_Observable, - Yaz_SocketManager *the_socketManager) : - Yaz_IR_Assoc (the_PDU_Observable) -{ - m_setOffset = 1; - m_interactive_flag = 1; - m_thisCommand[0] = '\0'; - m_lastCommand[0] = '\0'; - m_socketManager = the_socketManager; -} - -void usage(char *prog) -{ - fprintf (stderr, "%s: [-v log] [-c cookie] [-p proxy] [zurl]\n", prog); - exit (1); -} - -char *MyClient::get_cookie(Z_OtherInformation **otherInfo) -{ - int oid[OID_SIZE]; - Z_OtherInformationUnit *oi; - struct oident ent; - ent.proto = PROTO_Z3950; - ent.oclass = CLASS_USERINFO; - ent.value = (oid_value) VAL_COOKIE; - - if (oid_ent_to_oid (&ent, oid) && - (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) && - oi->which == Z_OtherInfo_characterInfo) - return oi->information.characterInfo; - return 0; -} - -void MyClient::recv_initResponse(Z_InitResponse *initResponse) -{ - printf ("Got InitResponse. Status "); - if (*initResponse->result) - { - printf ("Ok\n"); - - const char *p = get_cookie (&initResponse->otherInfo); - if (p) - { - printf ("cookie = %s\n", p); - set_cookie(p); - } - } - else - printf ("Fail\n"); -} - -void MyClient::recv_diagrecs(Z_DiagRec **pp, int num) -{ - int i; - oident *ent; - Z_DefaultDiagFormat *r; - - printf("Diagnostic message(s) from database:\n"); - for (i = 0; iwhich != Z_DiagRec_defaultFormat) - { - printf("Diagnostic record not in default format.\n"); - return; - } - else - r = p->u.defaultFormat; - if (!(ent = oid_getentbyoid(r->diagnosticSetId)) || - ent->oclass != CLASS_DIAGSET || ent->value != VAL_BIB1) - printf("Missing or unknown diagset\n"); - printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition)); -#ifdef ASN_COMPILED - switch (r->which) - { - case Z_DefaultDiagFormat_v2Addinfo: - printf (" -- v2 addinfo '%s'\n", r->u.v2Addinfo); - break; - case Z_DefaultDiagFormat_v3Addinfo: - printf (" -- v3 addinfo '%s'\n", r->u.v3Addinfo); - break; - } -#else - if (r->addinfo && *r->addinfo) - printf(" -- '%s'\n", r->addinfo); - else - printf("\n"); -#endif - } -} - -void MyClient::recv_textRecord(int type, const char *buf, size_t len) -{ - fwrite (buf, 1, len, stdout); - fputc ('\n', stdout); -} - -void MyClient::display_variant(Z_Variant *v, int level) -{ - int i; - - for (i = 0; i < v->num_triples; i++) - { - printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass, - *v->triples[i]->type); - if (v->triples[i]->which == Z_Triple_internationalString) - printf(",value=%s\n", v->triples[i]->value.internationalString); - else - printf("\n"); - } -} - -void MyClient::display_genericRecord(Z_GenericRecord *r, int level) -{ - int i; - - if (!r) - return; - for (i = 0; i < r->num_elements; i++) - { - Z_TaggedElement *t; - - printf("%*s", level * 4, ""); - t = r->elements[i]; - printf("("); - if (t->tagType) - printf("%d,", *t->tagType); - else - printf("?,"); - if (t->tagValue->which == Z_StringOrNumeric_numeric) - printf("%d) ", *t->tagValue->u.numeric); - else - printf("%s) ", t->tagValue->u.string); - if (t->content->which == Z_ElementData_subtree) - { - printf("\n"); - display_genericRecord(t->content->u.subtree, level+1); - } - else if (t->content->which == Z_ElementData_string) - printf("%s\n", t->content->u.string); - else if (t->content->which == Z_ElementData_numeric) - printf("%d\n", *t->content->u.numeric); - else if (t->content->which == Z_ElementData_oid) - { - int *ip = t->content->u.oid; - oident *oent; - - if ((oent = oid_getentbyoid(t->content->u.oid))) - printf("OID: %s\n", oent->desc); - else - { - printf("{"); - while (ip && *ip >= 0) - printf(" %d", *(ip++)); - printf(" }\n"); - } - } - else if (t->content->which == Z_ElementData_noDataRequested) - printf("[No data requested]\n"); - else if (t->content->which == Z_ElementData_elementEmpty) - printf("[Element empty]\n"); - else if (t->content->which == Z_ElementData_elementNotThere) - printf("[Element not there]\n"); - else - printf("??????\n"); - if (t->appliedVariant) - display_variant(t->appliedVariant, level+1); - if (t->metaData && t->metaData->supportedVariants) - { - int c; - - printf("%*s---- variant list\n", (level+1)*4, ""); - for (c = 0; c < t->metaData->num_supportedVariants; c++) - { - printf("%*svariant #%d\n", (level+1)*4, "", c); - display_variant(t->metaData->supportedVariants[c], level + 2); - } - } - } -} - -void MyClient::recv_genericRecord(Z_GenericRecord *r) -{ - display_genericRecord(r, 0); -} - -void MyClient::recv_record(Z_DatabaseRecord *record, int offset, - const char *databaseName) -{ - Z_External *r = (Z_External*) record; - oident *ent = oid_getentbyoid(r->direct_reference); - - /* - * Tell the user what we got. - */ - if (r->direct_reference) - { - printf("Record type: "); - if (ent) - printf("%s\n", ent->desc); - } - /* Check if this is a known, ASN.1 type tucked away in an octet string */ - Z_ext_typeent *etype = z_ext_getentbyref(ent->value); - if (ent && (r->which == Z_External_octet || r->which == Z_External_single) - && (etype = z_ext_getentbyref(ent->value))) - - { - void *rr; - /* - * Call the given decoder to process the record. - */ - odr_setbuf(odr_decode(), (char*)record->u.octet_aligned->buf, - record->u.octet_aligned->len, 0); - if (!(*etype->fun)(odr_decode(), (char **)&rr, 0, 0)) - { - odr_perror(odr_decode(), "Decoding constructed record."); - fprintf(stderr, "[Near %d]\n", odr_offset(odr_decode())); - fprintf(stderr, "Packet dump:\n---------\n"); - odr_dumpBER(stderr, (char*)record->u.octet_aligned->buf, - record->u.octet_aligned->len); - fprintf(stderr, "---------\n"); - } - if (etype->what == Z_External_sutrs) - { - Z_SUTRS *sutrs = (Z_SUTRS *) rr; - recv_textRecord ((int) VAL_SUTRS, (const char *) sutrs->buf, - (size_t) sutrs->len); - } - return; - } - if (r->which == Z_External_octet && record->u.octet_aligned->len) - { - recv_textRecord((int) ent->value, - (const char *) record->u.octet_aligned->buf, - (size_t) record->u.octet_aligned->len); - } - else if (ent && ent->value == VAL_SUTRS && r->which == Z_External_sutrs) - recv_textRecord((int) VAL_SUTRS, (const char *) r->u.sutrs->buf, - (size_t) r->u.sutrs->len); - else if (ent && ent->value == VAL_GRS1 && r->which == Z_External_grs1) - recv_genericRecord(r->u.grs1); - else - { - printf("Unknown record representation.\n"); - if (!z_External(odr_print(), &r, 0, 0)) - { - odr_perror(odr_print(), "Printing external"); - odr_reset(odr_print()); - } - } -} - -void MyClient::recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset) -{ - if (zpr->databaseName) - printf("[%s]", zpr->databaseName); - if (zpr->which == Z_NamePlusRecord_surrogateDiagnostic) - recv_diagrecs(&zpr->u.surrogateDiagnostic, 1); - else - recv_record(zpr->u.databaseRecord, offset, zpr->databaseName); -} - -void MyClient::recv_records (Z_Records *records) -{ -#ifdef ASN_COMPILED - Z_DiagRec dr, *dr_p = &dr; -#endif - if (!records) - return; - int i; - switch (records->which) - { - case Z_Records_DBOSD: - for (i = 0; i < records->u.databaseOrSurDiagnostics->num_records; i++) - recv_namePlusRecord(records->u.databaseOrSurDiagnostics-> - records[i], i + m_setOffset); - m_setOffset += records->u.databaseOrSurDiagnostics->num_records; - break; - case Z_Records_NSD: -#ifdef ASN_COMPILED - dr.which = Z_DiagRec_defaultFormat; - dr.u.defaultFormat = records->u.nonSurrogateDiagnostic; - recv_diagrecs (&dr_p, 1); -#else - recv_diagrecs (&records->u.nonSurrogateDiagnostic, 1); -#endif - break; - case Z_Records_multipleNSD: - recv_diagrecs (records->u.multipleNonSurDiagnostics->diagRecs, - records->u.multipleNonSurDiagnostics->num_diagRecs); - break; - } -} - -void MyClient::recv_searchResponse(Z_SearchResponse *searchResponse) -{ - printf ("Got SearchResponse. Status "); - if (!*searchResponse->searchStatus) - { - printf ("Fail\n"); - return; - } - printf ("Ok\n"); - printf ("Hits: %d\n", *searchResponse->resultCount); - recv_records (searchResponse->records); -} - -void MyClient::recv_presentResponse(Z_PresentResponse *presentResponse) -{ - printf ("Got PresentResponse\n"); - recv_records (presentResponse->records); -} - -int MyClient::wait() -{ - set_lastReceived(0); - while (m_socketManager->processEvent() > 0) - { - if (get_lastReceived()) - return 1; - } - return 0; -} - -#define C_PROMPT "Z>" - -int MyClient::cmd_connect(char *host) -{ - client (host); - timeout (10); - wait (); - timeout (0); - return 1; -} - -int MyClient::cmd_open(char *host) -{ - client (host); - timeout (10); - wait (); - timeout (0); - send_initRequest(); - wait (); - return 1; -} - -int MyClient::cmd_init(char *args) -{ - if (send_initRequest() >= 0) - wait(); - else - close(); - return 1; -} - -int MyClient::cmd_quit(char *args) -{ - return 0; -} - -int MyClient::cmd_close(char *args) -{ - close(); - return 1; -} - -int MyClient::cmd_find(char *args) -{ - Yaz_Z_Query query; - - if (query.set_rpn(args) <= 0) - { - printf ("Bad RPN query\n"); - return 1; - } - if (send_searchRequest(&query) >= 0) - wait(); - else - printf ("Not connected\n"); - return 1; -} - -int MyClient::cmd_show(char *args) -{ - int start = m_setOffset, number = 1; - - sscanf (args, "%d %d", &start, &number); - m_setOffset = start; - if (send_presentRequest(start, number) >= 0) - wait(); - else - printf ("Not connected\n"); - return 1; -} - -int MyClient::cmd_cookie(char *args) -{ - set_cookie(*args ? args : 0); - return 1; -} - -int MyClient::cmd_format(char *args) -{ - set_preferredRecordSyntax(args); - return 1; -} - -int MyClient::cmd_proxy(char *args) -{ - set_proxy(args); - return 1; -} - -int MyClient::processCommand(const char *commandLine) -{ - char cmdStr[1024], cmdArgs[1024]; - cmdArgs[0] = '\0'; - cmdStr[0] = '\0'; - static struct { - char *cmd; - int (MyClient::*fun)(char *arg); - char *ad; - } cmd[] = { - {"open", &MyClient::cmd_open, "[':'][/]"}, - {"connect", &MyClient::cmd_connect, "[':'][/]"}, - {"quit", &MyClient::cmd_quit, ""}, - {"close", &MyClient::cmd_close, ""}, - {"find", &MyClient::cmd_find, ""}, - {"show", &MyClient::cmd_show, "[ []]"}, - {"cookie", &MyClient::cmd_cookie, ""}, - {"init", &MyClient::cmd_init, ""}, - {"format", &MyClient::cmd_format, ""}, - {"proxy", &MyClient::cmd_proxy, ":[':']"}, - {0,0,0} - }; - - if (sscanf(commandLine, "%s %[^;]", cmdStr, cmdArgs) < 1) - return 1; - int i; - for (i = 0; cmd[i].cmd; i++) - if (!strncmp(cmd[i].cmd, cmdStr, strlen(cmdStr))) - break; - - int res = 1; - if (cmd[i].cmd) // Invoke command handler - res = (this->*cmd[i].fun)(cmdArgs); - else // Dump help screen - { - printf("Unknown command: %s.\n", cmdStr); - printf("Currently recognized commands:\n"); - for (i = 0; cmd[i].cmd; i++) - printf(" %s %s\n", cmd[i].cmd, cmd[i].ad); - } - return res; -} - -const char *MyClient::getCommand() -{ -#if HAVE_READLINE_READLINE_H - // Read using GNU readline - char *line_in; - line_in=readline(C_PROMPT); - if (!line_in) - return 0; -#if HAVE_READLINE_HISTORY_H - if (*line_in) - add_history(line_in); -#endif - strncpy(m_thisCommand,line_in, 1023); - m_thisCommand[1023] = '\0'; - free (line_in); -#else - // Read using fgets(3) - printf (C_PROMPT); - fflush(stdout); - if (!fgets(m_thisCommand, 1023, stdin)) - return 0; -#endif - // Remove trailing whitespace - char *cp = m_thisCommand + strlen(m_thisCommand); - while (cp != m_thisCommand && strchr("\t \n", cp[-1])) - cp--; - *cp = '\0'; - cp = m_thisCommand; - // Remove leading spaces... - while (*cp && strchr ("\t \n", *cp)) - cp++; - // Save command if non-empty - if (*cp != '\0') - strcpy (m_lastCommand, cp); - return m_lastCommand; -} - -int MyClient::interactive(Yaz_SocketManager *socketManager) -{ - const char *cmd; - if (!m_interactive_flag) - return 0; - while ((cmd = getCommand())) - { - if (!processCommand(cmd)) - break; - } - return 0; -} - -int MyClient::args(Yaz_SocketManager *socketManager, int argc, char **argv) -{ - char *host = 0; - char *proxy = 0; - char *arg; - char *prog = argv[0]; - int ret; - - while ((ret = options("c:p:v:q", argv, argc, &arg)) != -2) - { - switch (ret) - { - case 0: - if (host) - { - usage(prog); - return 1; - } - host = arg; - break; - case 'p': - if (proxy) - { - usage(prog); - return 1; - } - set_proxy(arg); - break; - case 'c': - set_cookie(arg); - break; - case 'v': - yaz_log_init_level (yaz_log_mask_str(arg)); - break; - case 'q': - m_interactive_flag = 0; - break; - default: - usage(prog); - return 1; - } - } - if (host) - { - client (host); - timeout (10); - wait (); - timeout (0); - send_initRequest(); - wait (); - } - return 0; -} - -int main(int argc, char **argv) -{ - Yaz_SocketManager mySocketManager; - Yaz_PDU_Assoc *some = new Yaz_PDU_Assoc(&mySocketManager); - - MyClient z(some, &mySocketManager); - - if (z.args(&mySocketManager, argc, argv)) - exit (1); - if (z.interactive(&mySocketManager)) - exit (1); - return 0; -} diff --git a/src/yaz-marc-sample.cpp b/src/yaz-marc-sample.cpp new file mode 100644 index 0000000..a276242 --- /dev/null +++ b/src/yaz-marc-sample.cpp @@ -0,0 +1,1490 @@ +/* + * Copyright (c) 2000-2001, Index Data. + * See the file LICENSE for details. + * + * $Log: yaz-marc-sample.cpp,v $ + * Revision 1.1 2001-03-27 14:47:45 adam + * New server facility scheme. + * + */ + +#include + +static char *marc_records[] = { +{ + "\x30\x30\x33\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x31\x36" + "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x31\x37\x39\x30\x34\x30\x30\x30\x31\x33\x30\x30\x30\x37\x35" + "\x30\x35\x30\x30\x30\x31\x32\x30\x30\x30\x38\x38\x31\x30\x30\x30" + "\x30\x31\x37\x30\x30\x31\x30\x30\x32\x34\x35\x30\x30\x33\x30\x30" + "\x30\x31\x31\x37\x32\x36\x30\x30\x30\x31\x32\x30\x30\x31\x34\x37" + "\x32\x36\x33\x30\x30\x30\x39\x30\x30\x31\x35\x39\x33\x30\x30\x30" + "\x30\x31\x31\x30\x30\x31\x36\x38\x1E\x20\x20\x20\x31\x31\x32\x32" + "\x34\x34\x36\x36\x20\x1E\x44\x4C\x43\x1E\x30\x30\x30\x30\x30\x30" + "\x30\x30\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x39\x31\x30\x37\x31" + "\x30\x63\x31\x39\x39\x31\x30\x37\x30\x31\x6E\x6A\x75\x20\x20\x20" + "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" + "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" + "\x1E\x30\x30\x1F\x61\x31\x32\x33\x2D\x78\x79\x7A\x1E\x31\x30\x1F" + "\x61\x4A\x61\x63\x6B\x20\x43\x6F\x6C\x6C\x69\x6E\x73\x1E\x31\x30" + "\x1F\x61\x48\x6F\x77\x20\x74\x6F\x20\x70\x72\x6F\x67\x72\x61\x6D" + "\x20\x61\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x1E\x31\x20\x1F\x61" + "\x50\x65\x6E\x67\x75\x69\x6E\x1E\x20\x20\x1F\x61\x38\x37\x31\x30" + "\x1E\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20\x1E\x1D" +},{ + "\x30\x30\x33\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x31\x36" + "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x31\x37\x39\x30\x34\x30\x30\x30\x31\x33\x30\x30\x30\x37\x35" + "\x30\x35\x30\x30\x30\x31\x32\x30\x30\x30\x38\x38\x31\x30\x30\x30" + "\x30\x31\x37\x30\x30\x31\x30\x30\x32\x34\x35\x30\x30\x33\x30\x30" + "\x30\x31\x31\x37\x32\x36\x30\x30\x30\x31\x32\x30\x30\x31\x34\x37" + "\x32\x36\x33\x30\x30\x30\x39\x30\x30\x31\x35\x39\x33\x30\x30\x30" + "\x30\x31\x31\x30\x30\x31\x36\x38\x1E\x20\x20\x20\x31\x31\x32\x32" + "\x34\x34\x36\x37\x20\x1E\x44\x4C\x43\x1E\x30\x30\x30\x30\x30\x30" + "\x30\x30\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x39\x31\x30\x37\x31" + "\x30\x63\x31\x39\x39\x31\x30\x37\x30\x31\x6E\x6A\x75\x20\x20\x20" + "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" + "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" + "\x1E\x30\x30\x1F\x61\x31\x32\x33\x2D\x78\x79\x7A\x1E\x31\x30\x1F" + "\x61\x4A\x61\x63\x6B\x20\x43\x6F\x6C\x6C\x69\x6E\x73\x1E\x31\x30" + "\x1F\x61\x48\x6F\x77\x20\x74\x6F\x20\x70\x72\x6F\x67\x72\x61\x6D" + "\x20\x61\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x1E\x31\x20\x1F\x61" + "\x50\x65\x6E\x67\x75\x69\x6E\x1E\x20\x20\x1F\x61\x38\x37\x31\x30" + "\x1E\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x37\x20\x1E\x1D" +},{ + "\x30\x31\x33\x36\x39\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" + "\x35\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" + "\x31\x30\x38\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" + "\x30\x35\x30\x30\x30\x32\x32\x30\x30\x30\x39\x38\x30\x38\x32\x30" + "\x30\x32\x31\x30\x30\x31\x32\x30\x31\x31\x31\x30\x31\x32\x31\x30" + "\x30\x31\x34\x31\x32\x34\x35\x30\x33\x34\x37\x30\x30\x32\x36\x32" + "\x32\x36\x30\x30\x30\x35\x34\x30\x30\x36\x30\x39\x33\x30\x30\x30" + "\x30\x33\x30\x30\x30\x36\x36\x33\x35\x30\x34\x30\x30\x35\x31\x30" + "\x30\x36\x39\x33\x36\x35\x30\x30\x30\x35\x36\x30\x30\x37\x34\x34" + "\x36\x35\x30\x30\x30\x33\x39\x30\x30\x38\x30\x30\x36\x35\x30\x30" + "\x30\x36\x32\x30\x30\x38\x33\x39\x37\x30\x30\x30\x30\x32\x33\x30" + "\x30\x39\x30\x31\x37\x30\x30\x30\x30\x32\x30\x30\x30\x39\x32\x34" + "\x37\x31\x30\x30\x30\x37\x31\x30\x30\x39\x34\x34\x37\x31\x30\x30" + "\x30\x36\x36\x30\x31\x30\x31\x35\x1E\x20\x20\x20\x37\x33\x30\x39" + "\x30\x39\x32\x34\x20\x2F\x2F\x72\x38\x32\x1E\x44\x4C\x43\x1E\x31" + "\x39\x38\x32\x30\x35\x32\x34\x30\x30\x30\x30\x30\x30\x2E\x30\x1E" + "\x37\x36\x30\x36\x30\x39\x73\x31\x39\x37\x34\x20\x20\x20\x20\x6E" + "\x79\x75\x61\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x31\x30\x31" + "\x31\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43" + "\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x52" + "\x43\x37\x31\x2E\x33\x1F\x62\x2E\x57\x36\x37\x20\x31\x39\x37\x31" + "\x1E\x30\x30\x1F\x61\x36\x31\x36\x2E\x30\x37\x2F\x35\x37\x35\x2F" + "\x30\x32\x38\x35\x34\x1E\x32\x30\x1F\x61\x57\x6F\x72\x6B\x73\x68" + "\x6F\x70\x20\x6F\x6E\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x50" + "\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x20\x6F\x66\x20\x44\x79\x6E" + "\x61\x6D\x69\x63\x20\x49\x6D\x61\x67\x65\x73\x20\x66\x72\x6F\x6D" + "\x20\x61\x6E\x20\x41\x6E\x67\x65\x72\x20\x53\x63\x69\x6E\x74\x69" + "\x6C\x6C\x61\x74\x69\x6F\x6E\x20\x43\x61\x6D\x65\x72\x61\x2C\x1F" + "\x63\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69\x76" + "\x65\x72\x73\x69\x74\x79\x2C\x1F\x64\x31\x39\x37\x31\x2E\x1E\x31" + "\x30\x1F\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x70\x72\x6F\x63" + "\x65\x73\x73\x69\x6E\x67\x20\x6F\x66\x20\x64\x79\x6E\x61\x6D\x69" + "\x63\x20\x69\x6D\x61\x67\x65\x73\x20\x66\x72\x6F\x6D\x20\x61\x6E" + "\x20\x41\x6E\x67\x65\x72\x20\x73\x63\x69\x6E\x74\x69\x6C\x6C\x61" + "\x74\x69\x6F\x6E\x20\x63\x61\x6D\x65\x72\x61\x20\x3A\x1F\x62\x74" + "\x68\x65\x20\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F" + "\x66\x20\x61\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x2F\x1F\x63" + "\x63\x6F\x73\x70\x6F\x6E\x73\x6F\x72\x65\x64\x20\x62\x79\x20\x74" + "\x68\x65\x20\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43\x6F" + "\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F\x72" + "\x79\x20\x61\x6E\x64\x20\x74\x68\x65\x20\x4E\x75\x63\x6C\x65\x61" + "\x72\x20\x4D\x65\x64\x69\x63\x69\x6E\x65\x20\x44\x69\x76\x69\x73" + "\x69\x6F\x6E\x2C\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" + "\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x2C\x20\x53\x63" + "\x68\x6F\x6F\x6C\x20\x6F\x66\x20\x4D\x65\x64\x69\x63\x69\x6E\x65" + "\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69" + "\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F\x75" + "\x69\x73\x2C\x20\x4A\x61\x6E\x75\x61\x72\x79\x20\x31\x38\x2D\x32" + "\x32\x2C\x20\x31\x39\x37\x31\x20\x3B\x20\x65\x64\x69\x74\x65\x64" + "\x20\x62\x79\x20\x4B\x65\x6E\x6E\x65\x74\x68\x20\x42\x2E\x20\x4C" + "\x61\x72\x73\x6F\x6E\x2C\x20\x4A\x65\x72\x6F\x6D\x65\x20\x52\x2E" + "\x20\x43\x6F\x78\x2C\x20\x4A\x72\x2E\x1E\x30\x20\x1F\x61\x4E\x65" + "\x77\x20\x59\x6F\x72\x6B\x20\x3A\x1F\x62\x53\x6F\x63\x69\x65\x74" + "\x79\x20\x6F\x66\x20\x4E\x75\x63\x6C\x65\x61\x72\x20\x4D\x65\x64" + "\x69\x63\x69\x6E\x65\x2C\x1F\x63\x5B\x63\x31\x39\x37\x34\x5D\x1E" + "\x20\x20\x1F\x61\x78\x69\x76\x2C\x20\x70\x2E\x20\x3A\x1F\x62\x69" + "\x6C\x6C\x2E\x20\x3B\x1F\x63\x32\x34\x20\x63\x6D\x2E\x1E\x20\x20" + "\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62\x69\x62\x6C\x69" + "\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72\x65\x66\x65\x72" + "\x65\x6E\x63\x65\x73\x20\x61\x6E\x64\x20\x69\x6E\x64\x65\x78\x2E" + "\x1E\x20\x30\x1F\x61\x52\x61\x64\x69\x6F\x69\x73\x6F\x74\x6F\x70" + "\x65\x20\x73\x63\x61\x6E\x6E\x69\x6E\x67\x1F\x78\x44\x61\x74\x61" + "\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x1F\x78\x43\x6F\x6E" + "\x67\x72\x65\x73\x73\x65\x73\x2E\x1E\x20\x30\x1F\x61\x53\x63\x69" + "\x6E\x74\x69\x6C\x6C\x61\x74\x69\x6F\x6E\x20\x63\x61\x6D\x65\x72" + "\x61\x73\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73\x2E\x1E" + "\x20\x30\x1F\x61\x49\x6D\x61\x67\x69\x6E\x67\x20\x73\x79\x73\x74" + "\x65\x6D\x73\x20\x69\x6E\x20\x6D\x65\x64\x69\x63\x69\x6E\x65\x1F" + "\x78\x44\x61\x74\x61\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67" + "\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73\x2E\x1E\x31\x30" + "\x1F\x61\x4C\x61\x72\x73\x6F\x6E\x2C\x20\x4B\x65\x6E\x6E\x65\x74" + "\x68\x20\x42\x2E\x1E\x31\x30\x1F\x61\x43\x6F\x78\x2C\x20\x4A\x65" + "\x72\x6F\x6D\x65\x20\x52\x2E\x20\x1E\x32\x30\x1F\x61\x57\x61\x73" + "\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69\x76\x65\x72\x73\x69" + "\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F\x75\x69\x73\x2E\x1F\x62" + "\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43\x6F\x6D\x70\x75" + "\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F\x72\x79\x2E\x1E" + "\x32\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55" + "\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C" + "\x6F\x75\x69\x73\x2E\x1F\x62\x4E\x75\x63\x6C\x65\x61\x72\x20\x4D" + "\x65\x64\x69\x63\x69\x6E\x65\x20\x44\x69\x76\x69\x73\x69\x6F\x6E" + "\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x33\x30\x39\x30\x39\x32" + "\x34\x20\x2F\x2F\x72\x38\x32\x1E\x1D" +},{ + "\x30\x30\x39\x34\x32\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x35" + "\x33\x31\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x39\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x33\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x34\x30\x30\x31\x30\x30\x30\x32\x33\x30" + "\x30\x36\x36\x35\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x31" + "\x30\x34\x31\x30\x30\x31\x34\x30\x30\x30\x39\x39\x30\x35\x30\x30" + "\x30\x31\x36\x30\x30\x31\x31\x33\x30\x38\x32\x30\x30\x31\x36\x30" + "\x30\x31\x32\x39\x32\x34\x35\x30\x30\x37\x33\x30\x30\x31\x34\x35" + "\x32\x36\x30\x30\x30\x37\x30\x30\x30\x32\x31\x38\x33\x30\x30\x30" + "\x30\x35\x30\x30\x30\x32\x38\x38\x35\x30\x30\x30\x30\x34\x38\x30" + "\x30\x33\x33\x38\x35\x30\x30\x30\x30\x39\x36\x30\x30\x33\x38\x36" + "\x36\x33\x30\x30\x30\x33\x39\x30\x30\x34\x38\x32\x36\x33\x30\x30" + "\x30\x33\x39\x30\x30\x35\x32\x31\x37\x30\x30\x30\x30\x33\x38\x30" + "\x30\x35\x36\x30\x37\x30\x30\x30\x30\x33\x33\x30\x30\x35\x39\x38" + "\x37\x31\x30\x30\x30\x33\x34\x30\x30\x36\x33\x31\x1E\x20\x20\x20" + "\x37\x33\x32\x30\x39\x36\x32\x32\x20\x2F\x2F\x72\x38\x32\x33\x1E" + "\x44\x4C\x43\x1E\x31\x39\x38\x32\x30\x33\x32\x35\x30\x30\x30\x30" + "\x30\x30\x2E\x30\x1E\x37\x38\x30\x33\x30\x36\x6D\x31\x39\x30\x30" + "\x39\x39\x39\x39\x6F\x68\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20" + "\x20\x20\x30\x30\x30\x30\x30\x20\x67\x72\x63\x20\x20\x1E\x20\x20" + "\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E" + "\x30\x20\x1F\x61\x67\x72\x63\x68\x65\x62\x65\x6E\x67\x1E\x30\x30" + "\x1F\x61\x42\x53\x34\x32\x31\x1F\x62\x2E\x43\x36\x34\x1E\x30\x30" + "\x1F\x61\x32\x32\x30\x2E\x34\x2F\x34\x1F\x32\x31\x39\x1E\x30\x34" + "\x1F\x61\x54\x68\x65\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x42" + "\x69\x62\x6C\x65\x20\x2F\x1F\x63\x4A\x2E\x20\x41\x72\x74\x68\x75" + "\x72\x20\x42\x61\x69\x72\x64\x2C\x20\x44\x61\x76\x69\x64\x20\x4E" + "\x6F\x65\x6C\x20\x46\x72\x65\x65\x64\x6D\x61\x6E\x2C\x20\x65\x64" + "\x69\x74\x6F\x72\x73\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x6F\x6F\x73" + "\x74\x65\x72\x2C\x20\x4F\x68\x69\x6F\x5D\x20\x3A\x1F\x62\x42\x69" + "\x62\x6C\x69\x63\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20" + "\x41\x73\x73\x6F\x63\x69\x61\x74\x65\x73\x2C\x1F\x63\x3C\x31\x39" + "\x37\x33\x2D\x63\x31\x39\x38\x30\x20\x20\x20\x3E\x1E\x20\x20\x1F" + "\x61\x76\x2E\x20\x3C\x32\x2D\x34\x2C\x20\x37\x2D\x31\x30\x2C\x20" + "\x31\x33\x2C\x20\x31\x35\x2D\x31\x38\x2C\x20\x32\x30\x2D\x32\x34" + "\x20\x20\x20\x3E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20" + "\x20\x1F\x61\x48\x65\x62\x72\x65\x77\x20\x61\x6E\x64\x20\x47\x72" + "\x65\x65\x6B\x3B\x20\x69\x6E\x74\x72\x6F\x64\x75\x63\x74\x69\x6F" + "\x6E\x73\x20\x69\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x2E\x1E\x20" + "\x20\x1F\x61\x56\x6F\x6C\x73\x2E\x20\x32\x2C\x20\x38\x3A\x20\x4D" + "\x69\x73\x73\x6F\x75\x6C\x61\x2C\x20\x4D\x6F\x6E\x74\x2E\x20\x3A" + "\x20\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x62\x79\x20\x53\x63" + "\x68\x6F\x6C\x61\x72\x73\x20\x50\x72\x65\x73\x73\x20\x66\x6F\x72" + "\x20\x42\x69\x62\x6C\x69\x63\x61\x6C\x20\x52\x65\x73\x65\x61\x72" + "\x63\x68\x20\x41\x73\x73\x6F\x63\x69\x61\x74\x65\x73\x2E\x1E\x20" + "\x30\x1F\x61\x42\x69\x62\x6C\x65\x2E\x20\x4F\x2E\x54\x2E\x1F\x78" + "\x43\x6F\x6E\x63\x6F\x72\x64\x61\x6E\x63\x65\x73\x2C\x20\x48\x65" + "\x62\x72\x65\x77\x2E\x1E\x30\x30\x1F\x61\x42\x69\x62\x6C\x65\x2E" + "\x1F\x70\x4E\x2E\x54\x2E\x1F\x78\x43\x6F\x6E\x63\x6F\x72\x64\x61" + "\x6E\x63\x65\x73\x2C\x20\x47\x72\x65\x65\x6B\x2E\x1E\x31\x30\x1F" + "\x61\x42\x61\x69\x72\x64\x2C\x20\x4A\x2E\x20\x41\x72\x74\x68\x75" + "\x72\x1F\x71\x28\x4A\x6F\x73\x65\x70\x68\x20\x41\x72\x74\x68\x75" + "\x72\x29\x1E\x31\x30\x1F\x61\x46\x72\x65\x65\x64\x6D\x61\x6E\x2C" + "\x20\x44\x61\x76\x69\x64\x20\x4E\x6F\x65\x6C\x2C\x1F\x64\x31\x39" + "\x32\x32\x2D\x1E\x32\x30\x1F\x61\x42\x69\x62\x6C\x69\x63\x61\x6C" + "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x41\x73\x73\x6F\x63\x69" + "\x61\x74\x65\x73\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x33\x32" + "\x30\x39\x36\x32\x32\x20\x2F\x2F\x72\x38\x32\x33\x1E\x1D" +},{ + "\x30\x31\x30\x33\x33\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x35" + "\x33\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x32\x31\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x32\x31" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x35\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x34\x32\x30\x31\x30\x30\x30\x32\x35\x30" + "\x30\x37\x35\x34\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x33" + "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x31\x30\x35\x30\x30" + "\x30\x32\x32\x30\x30\x31\x31\x33\x31\x30\x30\x30\x30\x31\x39\x30" + "\x30\x31\x33\x35\x32\x34\x35\x30\x31\x30\x35\x30\x30\x31\x35\x34" + "\x32\x36\x30\x30\x30\x37\x33\x30\x30\x32\x35\x39\x33\x30\x30\x30" + "\x30\x33\x38\x30\x30\x33\x33\x32\x34\x39\x30\x30\x30\x36\x38\x30" + "\x30\x33\x37\x30\x35\x30\x30\x30\x30\x33\x35\x30\x30\x34\x33\x38" + "\x35\x30\x34\x30\x30\x32\x34\x30\x30\x34\x37\x33\x36\x35\x30\x30" + "\x30\x33\x34\x30\x30\x34\x39\x37\x36\x35\x31\x30\x30\x34\x36\x30" + "\x30\x35\x33\x31\x37\x30\x30\x30\x30\x33\x39\x30\x30\x35\x37\x37" + "\x38\x31\x30\x30\x31\x33\x38\x30\x30\x36\x31\x36\x1E\x20\x20\x20" + "\x37\x36\x33\x35\x37\x38\x39\x35\x20\x2F\x4D\x41\x50\x2F\x72\x38" + "\x32\x1E\x44\x4C\x43\x1E\x31\x39\x38\x32\x30\x38\x30\x36\x30\x30" + "\x30\x30\x30\x30\x2E\x30\x1E\x37\x36\x30\x34\x30\x37\x73\x31\x39" + "\x37\x34\x20\x20\x20\x20\x77\x61\x75\x61\x20\x20\x20\x20\x20\x62" + "\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" + "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" + "\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x77\x61\x1E\x30\x30" + "\x1F\x61\x47\x31\x34\x36\x37\x2E\x50\x38\x1F\x62\x4D\x33\x20\x31" + "\x39\x37\x34\x1E\x31\x30\x1F\x61\x4D\x61\x69\x72\x73\x2C\x20\x4A" + "\x6F\x68\x6E\x20\x57\x2E\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x50" + "\x75\x67\x65\x74\x20\x53\x6F\x75\x6E\x64\x20\x52\x65\x67\x69\x6F" + "\x6E\x20\x3A\x1F\x62\x61\x20\x70\x6F\x72\x74\x66\x6F\x6C\x69\x6F" + "\x20\x6F\x66\x20\x74\x68\x65\x6D\x61\x74\x69\x63\x20\x63\x6F\x6D" + "\x70\x75\x74\x65\x72\x20\x6D\x61\x70\x73\x20\x2F\x1F\x63\x4A\x6F" + "\x68\x6E\x20\x57\x2E\x20\x4D\x61\x69\x72\x73\x2C\x20\x45\x75\x67" + "\x65\x6E\x65\x20\x41\x2E\x20\x48\x6F\x65\x72\x61\x75\x66\x2E\x1E" + "\x30\x20\x1F\x61\x5B\x42\x65\x6C\x6C\x69\x6E\x67\x68\x61\x6D\x2C" + "\x20\x57\x61\x73\x68\x2E\x5D\x20\x3A\x1F\x62\x43\x65\x6E\x74\x65" + "\x72\x20\x66\x6F\x72\x20\x50\x61\x63\x69\x66\x69\x63\x20\x4E\x6F" + "\x72\x74\x68\x77\x65\x73\x74\x20\x53\x74\x75\x64\x69\x65\x73\x2C" + "\x1F\x63\x63\x31\x39\x37\x34\x2E\x1E\x20\x20\x1F\x61\x69\x69\x69" + "\x2C\x20\x34\x31\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20" + "\x3B\x1F\x63\x32\x35\x20\x78\x20\x33\x36\x20\x63\x6D\x2E\x1E\x31" + "\x20\x1F\x61\x4F\x63\x63\x61\x73\x69\x6F\x6E\x61\x6C\x20\x70\x61" + "\x70\x65\x72\x20\x2D\x20\x43\x65\x6E\x74\x65\x72\x20\x66\x6F\x72" + "\x20\x50\x61\x63\x69\x66\x69\x63\x20\x4E\x6F\x72\x74\x68\x77\x65" + "\x73\x74\x20\x53\x74\x75\x64\x69\x65\x73\x20\x3B\x20\x6E\x6F\x2E" + "\x20\x33\x1E\x20\x20\x1F\x61\x53\x63\x61\x6C\x65\x20\x6F\x66\x20" + "\x6D\x61\x70\x73\x20\x63\x61\x2E\x20\x31\x3A\x31\x2C\x30\x30\x30" + "\x2C\x30\x30\x30\x2E\x1E\x20\x20\x1F\x61\x42\x69\x62\x6C\x69\x6F" + "\x67\x72\x61\x70\x68\x79\x3A\x20\x70\x2E\x20\x34\x2E\x1E\x20\x30" + "\x1F\x61\x43\x61\x72\x74\x6F\x67\x72\x61\x70\x68\x79\x1F\x78\x44" + "\x61\x74\x61\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x2E\x1E" + "\x20\x30\x1F\x61\x50\x75\x67\x65\x74\x20\x53\x6F\x75\x6E\x64\x20" + "\x72\x65\x67\x69\x6F\x6E\x20\x28\x57\x61\x73\x68\x2E\x29\x1F\x78" + "\x43\x65\x6E\x73\x75\x73\x1F\x78\x4D\x61\x70\x73\x2E\x1E\x31\x30" + "\x1F\x61\x48\x6F\x65\x72\x61\x75\x66\x2C\x20\x45\x75\x67\x65\x6E" + "\x65\x20\x41\x2E\x2C\x1F\x65\x6A\x6F\x69\x6E\x74\x20\x61\x75\x74" + "\x68\x6F\x72\x2E\x1E\x31\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67" + "\x74\x6F\x6E\x20\x28\x53\x74\x61\x74\x65\x29\x2E\x1F\x62\x57\x65" + "\x73\x74\x65\x72\x6E\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E" + "\x20\x53\x74\x61\x74\x65\x20\x43\x6F\x6C\x6C\x65\x67\x65\x2C\x20" + "\x42\x65\x6C\x6C\x69\x6E\x67\x68\x61\x6D\x2E\x1F\x62\x43\x65\x6E" + "\x74\x65\x72\x20\x66\x6F\x72\x20\x50\x61\x63\x69\x66\x69\x63\x20" + "\x4E\x6F\x72\x74\x68\x77\x65\x73\x74\x20\x53\x74\x75\x64\x69\x65" + "\x73\x2E\x1F\x74\x4F\x63\x63\x61\x73\x69\x6F\x6E\x61\x6C\x20\x70" + "\x61\x70\x65\x72\x20\x3B\x1F\x76\x6E\x6F\x2E\x20\x33\x2E\x1E\x20" + "\x20\x1F\x61\x20\x20\x20\x37\x36\x33\x35\x37\x38\x39\x35\x20\x2F" + "\x4D\x41\x50\x2F\x72\x38\x32\x1E\x1D" +},{ + "\x30\x31\x30\x30\x30\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" + "\x39\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x37\x35\x33\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x37\x35" + "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x39\x30\x30\x35\x30\x30" + "\x30\x31\x38\x30\x30\x31\x30\x38\x30\x38\x32\x30\x30\x31\x35\x30" + "\x30\x31\x32\x36\x32\x34\x35\x30\x33\x30\x34\x30\x30\x31\x34\x31" + "\x32\x36\x30\x30\x30\x34\x38\x30\x30\x34\x34\x35\x33\x30\x30\x30" + "\x30\x33\x33\x30\x30\x34\x39\x33\x35\x30\x34\x30\x30\x35\x31\x30" + "\x30\x35\x32\x36\x36\x35\x30\x30\x30\x32\x38\x30\x30\x35\x37\x37" + "\x37\x30\x30\x30\x30\x32\x39\x30\x30\x36\x30\x35\x37\x31\x30\x30" + "\x30\x34\x38\x30\x30\x36\x33\x34\x37\x31\x30\x30\x30\x37\x31\x30" + "\x30\x36\x38\x32\x1E\x20\x20\x20\x37\x37\x30\x30\x30\x33\x34\x38" + "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x37\x30\x37\x30\x30" + "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x31\x31\x32\x73\x31\x39" + "\x37\x37\x20\x20\x20\x20\x6D\x64\x75\x61\x20\x20\x20\x20\x20\x62" + "\x20\x20\x20\x20\x31\x30\x31\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" + "\x20\x20\x1F\x61\x30\x38\x33\x39\x31\x30\x38\x38\x32\x36\x1E\x20" + "\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43" + "\x1E\x30\x30\x1F\x61\x52\x43\x37\x38\x2E\x37\x2E\x54\x36\x1F\x62" + "\x52\x34\x1E\x30\x30\x1F\x61\x36\x31\x36\x2E\x30\x37\x2F\x35\x37" + "\x32\x1E\x30\x30\x1F\x61\x52\x65\x63\x6F\x6E\x73\x74\x72\x75\x63" + "\x74\x69\x6F\x6E\x20\x74\x6F\x6D\x6F\x67\x72\x61\x70\x68\x79\x20" + "\x69\x6E\x20\x64\x69\x61\x67\x6E\x6F\x73\x74\x69\x63\x20\x72\x61" + "\x64\x69\x6F\x6C\x6F\x67\x79\x20\x61\x6E\x64\x20\x6E\x75\x63\x6C" + "\x65\x61\x72\x20\x6D\x65\x64\x69\x63\x69\x6E\x65\x20\x3A\x1F\x62" + "\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F\x66\x20\x74" + "\x68\x65\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x2E\x2E\x2E\x20" + "\x2F\x1F\x63\x65\x64\x69\x74\x65\x64\x20\x62\x79\x20\x4D\x69\x63" + "\x68\x65\x6C\x20\x4D\x2E\x20\x54\x65\x72\x2D\x50\x6F\x67\x6F\x73" + "\x73\x69\x61\x6E\x20\x2E\x2E\x2E\x20\x5B\x65\x74\x20\x61\x6C\x2E" + "\x5D\x20\x3B\x20\x63\x6F\x2D\x73\x70\x6F\x6E\x73\x6F\x72\x73\x2C" + "\x20\x74\x68\x65\x20\x45\x64\x77\x61\x72\x64\x20\x4D\x61\x6C\x6C" + "\x69\x6E\x63\x6B\x72\x6F\x64\x74\x20\x49\x6E\x73\x74\x69\x74\x75" + "\x74\x65\x20\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x20" + "\x61\x6E\x64\x20\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43" + "\x6F\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F" + "\x72\x79\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55" + "\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x20\x53\x63\x68\x6F\x6F\x6C" + "\x20\x6F\x66\x20\x4D\x65\x64\x69\x63\x69\x6E\x65\x20\x2E\x2E\x2E" + "\x2E\x1E\x30\x20\x1F\x61\x42\x61\x6C\x74\x69\x6D\x6F\x72\x65\x20" + "\x3A\x1F\x62\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x20\x50\x61" + "\x72\x6B\x20\x50\x72\x65\x73\x73\x2C\x1F\x63\x63\x31\x39\x37\x37" + "\x2E\x1E\x20\x20\x1F\x61\x78\x76\x2C\x20\x35\x37\x33\x20\x70\x2E" + "\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F\x63\x32\x34\x20\x63" + "\x6D\x2E\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20" + "\x62\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20" + "\x72\x65\x66\x65\x72\x65\x6E\x63\x65\x73\x20\x61\x6E\x64\x20\x69" + "\x6E\x64\x65\x78\x2E\x1E\x20\x30\x1F\x61\x54\x6F\x6D\x6F\x67\x72" + "\x61\x70\x68\x79\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73" + "\x2E\x1E\x32\x30\x1F\x61\x54\x65\x72\x2D\x50\x6F\x67\x6F\x73\x73" + "\x69\x61\x6E\x2C\x20\x4D\x69\x63\x68\x65\x6C\x20\x4D\x2E\x1E\x32" + "\x30\x1F\x61\x45\x64\x77\x61\x72\x64\x20\x4D\x61\x6C\x6C\x69\x6E" + "\x63\x6B\x72\x6F\x64\x74\x20\x49\x6E\x73\x74\x69\x74\x75\x74\x65" + "\x20\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x2E\x1E\x32" + "\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E" + "\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F" + "\x75\x69\x73\x2E\x1F\x62\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C" + "\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61" + "\x74\x6F\x72\x79\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x30" + "\x30\x30\x33\x34\x38\x20\x1E\x1D" +},{ + "\x30\x31\x34\x39\x33\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x37" + "\x37\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x31\x31\x39\x38\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" + "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x33\x30\x35\x30\x30" + "\x30\x33\x34\x30\x30\x31\x30\x35\x30\x38\x32\x30\x30\x32\x38\x30" + "\x30\x31\x33\x39\x30\x38\x36\x30\x30\x31\x38\x30\x30\x31\x36\x37" + "\x31\x31\x31\x30\x30\x39\x35\x30\x30\x31\x38\x35\x32\x34\x35\x30" + "\x34\x34\x38\x30\x30\x32\x38\x30\x32\x36\x30\x30\x31\x33\x38\x30" + "\x30\x37\x32\x38\x33\x30\x30\x30\x30\x33\x34\x30\x30\x38\x36\x36" + "\x34\x39\x30\x30\x30\x33\x36\x30\x30\x39\x30\x30\x36\x35\x30\x30" + "\x30\x35\x39\x30\x30\x39\x33\x36\x37\x30\x30\x30\x30\x33\x31\x30" + "\x30\x39\x39\x35\x37\x30\x30\x30\x30\x32\x31\x30\x31\x30\x32\x36" + "\x37\x30\x30\x30\x30\x32\x30\x30\x31\x30\x34\x37\x37\x31\x30\x30" + "\x30\x35\x30\x30\x31\x30\x36\x37\x38\x31\x30\x30\x30\x38\x31\x30" + "\x31\x31\x31\x37\x1E\x20\x20\x20\x37\x37\x30\x30\x34\x37\x37\x33" + "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x38\x32\x32\x30\x30" + "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x33\x32\x31\x73\x31\x39" + "\x37\x37\x20\x20\x20\x20\x64\x63\x75\x61\x20\x20\x20\x20\x20\x20" + "\x20\x20\x20\x20\x31\x30\x30\x30\x30\x20\x65\x6E\x67\x20\x20\x1E" + "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" + "\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x30\x30" + "\x1F\x61\x51\x43\x31\x30\x30\x1F\x62\x2E\x55\x35\x37\x20\x6E\x6F" + "\x2E\x20\x35\x30\x30\x2D\x38\x1F\x61\x54\x41\x31\x36\x35\x30\x1E" + "\x30\x30\x1F\x61\x36\x30\x32\x2F\x2E\x31\x20\x73\x1F\x61\x36\x32" + "\x31\x2E\x33\x38\x31\x2E\x39\x2F\x35\x39\x38\x1E\x20\x20\x1F\x61" + "\x43\x31\x33\x2E\x31\x30\x3A\x35\x30\x30\x2D\x38\x2E\x1E\x32\x30" + "\x1F\x61\x57\x6F\x72\x6B\x73\x68\x6F\x70\x20\x6F\x6E\x20\x53\x74" + "\x61\x6E\x64\x61\x72\x64\x73\x20\x66\x6F\x72\x20\x49\x6D\x61\x67" + "\x65\x20\x50\x61\x74\x74\x65\x72\x6E\x20\x52\x65\x63\x6F\x67\x6E" + "\x69\x74\x69\x6F\x6E\x2C\x1F\x63\x4E\x61\x74\x69\x6F\x6E\x61\x6C" + "\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64" + "\x61\x72\x64\x73\x2C\x1F\x64\x31\x39\x37\x36\x2E\x1E\x31\x30\x1F" + "\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x73\x63\x69\x65\x6E\x63" + "\x65\x20\x26\x20\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79\x20\x3A" + "\x1F\x62\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F\x66" + "\x20\x61\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x68\x65\x6C\x64" + "\x20\x61\x74\x20\x74\x68\x65\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C" + "\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64" + "\x61\x72\x64\x73\x2C\x20\x47\x61\x69\x74\x68\x65\x72\x73\x62\x75" + "\x72\x67\x2C\x20\x4D\x44\x2C\x20\x4A\x75\x6E\x65\x20\x33\x2D\x34" + "\x2C\x20\x31\x39\x37\x36\x20\x2F\x1F\x63\x57\x6F\x72\x6B\x73\x68" + "\x6F\x70\x20\x6F\x6E\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x20" + "\x66\x6F\x72\x20\x49\x6D\x61\x67\x65\x20\x50\x61\x74\x74\x65\x72" + "\x6E\x20\x52\x65\x63\x6F\x67\x6E\x69\x74\x69\x6F\x6E\x20\x3B\x20" + "\x4A\x6F\x68\x6E\x20\x4D\x2E\x20\x45\x76\x61\x6E\x73\x2C\x20\x4A" + "\x72\x2E\x2C\x20\x52\x75\x73\x73\x65\x6C\x6C\x20\x4B\x69\x72\x73" + "\x63\x68\x2C\x20\x61\x6E\x64\x20\x52\x6F\x67\x65\x72\x20\x4E\x2E" + "\x20\x4E\x61\x67\x65\x6C\x2C\x20\x65\x64\x69\x74\x6F\x72\x5B\x73" + "\x5D\x20\x3B\x20\x73\x70\x6F\x6E\x73\x6F\x72\x65\x64\x20\x62\x79" + "\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72\x65\x61\x75" + "\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x2C\x20\x45" + "\x6C\x65\x63\x74\x72\x6F\x6E\x69\x63\x20\x49\x6E\x64\x75\x73\x74" + "\x72\x69\x65\x73\x20\x41\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E" + "\x2C\x20\x49\x6E\x73\x74\x69\x74\x75\x74\x65\x20\x6F\x66\x20\x45" + "\x6C\x65\x63\x74\x72\x69\x63\x61\x6C\x20\x61\x6E\x64\x20\x45\x6C" + "\x65\x63\x74\x72\x6F\x6E\x69\x63\x20\x45\x6E\x67\x69\x6E\x65\x65" + "\x72\x73\x2C\x20\x69\x6E\x20\x63\x6F\x6F\x70\x65\x72\x61\x74\x69" + "\x6F\x6E\x20\x77\x69\x74\x68\x20\x41\x73\x73\x6F\x63\x69\x61\x74" + "\x69\x6F\x6E\x20\x66\x6F\x72\x20\x43\x6F\x6D\x70\x75\x74\x69\x6E" + "\x67\x20\x4D\x61\x63\x68\x69\x6E\x65\x72\x79\x2E\x1E\x30\x20\x1F" + "\x61\x5B\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x5D\x20\x3A\x1F" + "\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20\x43" + "\x6F\x6D\x6D\x65\x72\x63\x65\x2C\x20\x4E\x61\x74\x69\x6F\x6E\x61" + "\x6C\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E" + "\x64\x61\x72\x64\x73\x20\x3A\x20\x66\x6F\x72\x20\x73\x61\x6C\x65" + "\x20\x62\x79\x20\x74\x68\x65\x20\x53\x75\x70\x74\x2E\x20\x6F\x66" + "\x20\x44\x6F\x63\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x6F\x76" + "\x74\x2E\x20\x50\x72\x69\x6E\x74\x2E\x20\x4F\x66\x66\x2E\x2C\x1F" + "\x63\x31\x39\x37\x37\x2E\x1E\x20\x20\x1F\x61\x76\x69\x69\x2C\x20" + "\x31\x31\x32\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B" + "\x1F\x63\x32\x36\x20\x63\x6D\x2E\x1E\x31\x20\x1F\x61\x4E\x42\x53" + "\x20\x73\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62\x6C\x69\x63\x61" + "\x74\x69\x6F\x6E\x20\x3B\x20\x35\x30\x30\x2D\x38\x1E\x20\x30\x1F" + "\x61\x4F\x70\x74\x69\x63\x61\x6C\x20\x70\x61\x74\x74\x65\x72\x6E" + "\x20\x72\x65\x63\x6F\x67\x6E\x69\x74\x69\x6F\x6E\x1F\x78\x53\x74" + "\x61\x6E\x64\x61\x72\x64\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20" + "\x53\x74\x61\x74\x65\x73\x2E\x1E\x31\x30\x1F\x61\x45\x76\x61\x6E" + "\x73\x2C\x20\x4A\x6F\x68\x6E\x20\x4D\x61\x72\x74\x69\x6E\x2C\x1F" + "\x64\x31\x39\x34\x32\x2D\x1E\x31\x30\x1F\x61\x4B\x69\x72\x73\x63" + "\x68\x2C\x20\x52\x75\x73\x73\x65\x6C\x6C\x2E\x1E\x31\x30\x1F\x61" + "\x4E\x61\x67\x65\x6C\x2C\x20\x52\x6F\x67\x65\x72\x20\x4E\x2E\x1E" + "\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65" + "\x73\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72" + "\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73" + "\x2E\x1E\x31\x20\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" + "\x74\x65\x73\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42" + "\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72" + "\x64\x73\x2E\x1F\x74\x53\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62" + "\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x3B\x1F\x76\x35\x30\x30\x2D" + "\x38\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x30\x30\x34\x37" + "\x37\x33\x20\x1E\x1D" +},{ + "\x30\x30\x38\x37\x38\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" + "\x39\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x36\x33\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" + "\x30\x35\x30\x30\x30\x33\x38\x30\x30\x30\x39\x33\x30\x38\x32\x30" + "\x30\x32\x32\x30\x30\x31\x33\x31\x30\x38\x36\x30\x30\x31\x37\x30" + "\x30\x31\x35\x33\x31\x30\x30\x30\x30\x31\x39\x30\x30\x31\x37\x30" + "\x32\x34\x35\x30\x30\x38\x37\x30\x30\x31\x38\x39\x32\x36\x30\x30" + "\x31\x33\x38\x30\x30\x32\x37\x36\x33\x30\x30\x30\x30\x32\x34\x30" + "\x30\x34\x31\x34\x34\x34\x30\x30\x30\x33\x34\x30\x30\x34\x33\x38" + "\x34\x39\x30\x30\x30\x33\x36\x30\x30\x34\x37\x32\x36\x35\x30\x30" + "\x30\x34\x32\x30\x30\x35\x30\x38\x38\x31\x30\x30\x30\x38\x31\x30" + "\x30\x35\x35\x30\x1E\x20\x20\x20\x37\x37\x30\x30\x35\x35\x35\x38" + "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x37\x31\x33\x30\x30" + "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x34\x30\x31\x73\x31\x39" + "\x37\x37\x20\x20\x20\x20\x64\x63\x75\x20\x20\x20\x20\x20\x20\x20" + "\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" + "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" + "\x43\x1E\x30\x30\x1F\x61\x51\x43\x31\x30\x30\x1F\x62\x2E\x55\x35" + "\x37\x20\x6E\x6F\x2E\x20\x35\x30\x30\x2D\x39\x1F\x61\x51\x41\x37" + "\x36\x2E\x39\x2E\x41\x32\x35\x1E\x30\x30\x1F\x61\x36\x30\x32\x2F" + "\x2E\x31\x20\x73\x1F\x61\x30\x30\x31\x2E\x36\x2F\x34\x1E\x30\x20" + "\x1F\x61\x43\x31\x33\x2E\x31\x30\x3A\x35\x30\x30\x2D\x39\x1E\x31" + "\x30\x1F\x61\x57\x6F\x6F\x64\x2C\x20\x48\x65\x6C\x65\x6E\x20\x4D" + "\x2E\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x75\x73\x65\x20\x6F\x66" + "\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x73\x20\x66\x6F\x72\x20\x63" + "\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x64\x20\x61\x63\x63\x65\x73\x73" + "\x20\x74\x6F\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x20\x72\x65\x73" + "\x6F\x75\x72\x63\x65\x73\x20\x2F\x1F\x63\x48\x65\x6C\x65\x6E\x20" + "\x4D\x2E\x20\x57\x6F\x6F\x64\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x61" + "\x73\x68\x69\x6E\x67\x74\x6F\x6E\x5D\x20\x3A\x1F\x62\x55\x2E\x53" + "\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20\x43\x6F\x6D\x6D\x65" + "\x72\x63\x65\x2C\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75" + "\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64" + "\x73\x20\x3A\x20\x66\x6F\x72\x20\x73\x61\x6C\x65\x20\x62\x79\x20" + "\x74\x68\x65\x20\x53\x75\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63" + "\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x6F\x76\x74\x2E\x20\x50" + "\x72\x69\x6E\x74\x2E\x20\x4F\x66\x66\x2E\x2C\x1F\x63\x31\x39\x37" + "\x37\x2E\x1E\x20\x20\x1F\x61\x69\x76\x2C\x20\x35\x33\x20\x70\x2E" + "\x20\x3B\x1F\x63\x32\x36\x20\x63\x6D\x2E\x1E\x20\x30\x1F\x61\x43" + "\x6F\x6D\x70\x75\x74\x65\x72\x20\x73\x63\x69\x65\x6E\x63\x65\x20" + "\x26\x20\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79\x1E\x31\x20\x1F" + "\x61\x4E\x42\x53\x20\x73\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62" + "\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x3B\x20\x35\x30\x30\x2D\x39" + "\x1E\x20\x30\x1F\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x73\x1F\x78" + "\x41\x63\x63\x65\x73\x73\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x1F\x78" + "\x50\x61\x73\x73\x77\x6F\x72\x64\x73\x2E\x1E\x31\x20\x1F\x61\x55" + "\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4E" + "\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72\x65\x61\x75\x20\x6F" + "\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x2E\x1F\x74\x53\x70" + "\x65\x63\x69\x61\x6C\x20\x70\x75\x62\x6C\x69\x63\x61\x74\x69\x6F" + "\x6E\x20\x3B\x1F\x76\x35\x30\x30\x2D\x39\x2E\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x37\x37\x30\x30\x35\x35\x35\x38\x20\x1E\x1D" +},{ + "\x30\x30\x37\x39\x31\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" + "\x37\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" + "\x30\x35\x35\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" + "\x30\x34\x33\x30\x30\x33\x30\x30\x30\x30\x39\x38\x30\x35\x30\x30" + "\x30\x31\x38\x30\x30\x31\x32\x38\x30\x38\x32\x30\x30\x31\x38\x30" + "\x30\x31\x34\x36\x31\x30\x30\x30\x30\x32\x31\x30\x30\x31\x36\x34" + "\x32\x34\x35\x30\x31\x36\x32\x30\x30\x31\x38\x35\x32\x36\x30\x30" + "\x30\x32\x33\x30\x30\x33\x34\x37\x33\x30\x30\x30\x30\x32\x36\x30" + "\x30\x33\x37\x30\x35\x30\x30\x30\x30\x32\x39\x30\x30\x33\x39\x36" + "\x36\x35\x30\x30\x30\x36\x34\x30\x30\x34\x32\x35\x37\x31\x30\x30" + "\x30\x36\x32\x30\x30\x34\x38\x39\x1E\x20\x20\x20\x37\x37\x36\x31" + "\x36\x33\x36\x37\x20\x2F\x2F\x72\x38\x34\x1E\x44\x4C\x43\x1E\x31" + "\x39\x38\x34\x31\x32\x31\x33\x30\x30\x30\x30\x30\x30\x2E\x30\x1E" + "\x37\x32\x30\x33\x32\x39\x73\x31\x39\x37\x31\x20\x20\x20\x20\x64" + "\x63\x75\x61\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30" + "\x31\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43" + "\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x6E" + "\x2D\x75\x73\x2D\x64\x63\x1F\x61\x6E\x2D\x75\x73\x2D\x6D\x64\x1F" + "\x61\x6E\x2D\x75\x73\x2D\x76\x61\x1E\x30\x30\x1F\x61\x48\x45\x32" + "\x37\x38\x31\x2E\x57\x33\x1F\x62\x45\x35\x1E\x30\x30\x1F\x61\x33" + "\x38\x35\x2F\x2E\x32\x32\x2F\x30\x39\x37\x35\x33\x1E\x31\x30\x1F" + "\x61\x45\x6E\x67\x6C\x75\x6E\x64\x2C\x20\x43\x61\x72\x6C\x20\x52" + "\x2E\x1E\x31\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E" + "\x20\x6D\x65\x74\x72\x6F\x70\x6F\x6C\x69\x74\x61\x6E\x20\x61\x72" + "\x65\x61\x20\x72\x61\x69\x6C\x20\x63\x6F\x6D\x70\x75\x74\x65\x72" + "\x20\x66\x65\x61\x73\x69\x62\x69\x6C\x69\x74\x79\x20\x73\x74\x75" + "\x64\x79\x3B\x1F\x62\x66\x69\x6E\x61\x6C\x20\x72\x65\x70\x6F\x72" + "\x74\x1F\x63\x5B\x62\x79\x5D\x20\x43\x61\x72\x6C\x20\x52\x2E\x20" + "\x45\x6E\x67\x6C\x75\x6E\x64\x2C\x20\x4A\x72\x2E\x20\x50\x72\x65" + "\x70\x61\x72\x65\x64\x20\x66\x6F\x72\x20\x55\x72\x62\x61\x6E\x20" + "\x4D\x61\x73\x73\x20\x54\x72\x61\x6E\x73\x70\x6F\x72\x74\x61\x74" + "\x69\x6F\x6E\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69" + "\x6F\x6E\x2E\x1E\x30\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74" + "\x6F\x6E\x2C\x1F\x63\x31\x39\x37\x31\x2E\x1E\x20\x20\x1F\x61\x39" + "\x32\x20\x6C\x2E\x1F\x62\x69\x6C\x6C\x75\x73\x2E\x1F\x63\x32\x38" + "\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x22\x43\x6F\x6E\x74\x72\x61" + "\x63\x74\x20\x44\x4F\x54\x2D\x55\x54\x2D\x31\x30\x30\x30\x33\x2E" + "\x22\x1E\x20\x30\x1F\x61\x52\x61\x69\x6C\x72\x6F\x61\x64\x73\x1F" + "\x7A\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x4D\x65\x74\x72" + "\x6F\x70\x6F\x6C\x69\x74\x61\x6E\x20\x41\x72\x65\x61\x1F\x78\x43" + "\x6F\x6D\x6D\x75\x74\x69\x6E\x67\x20\x74\x72\x61\x66\x66\x69\x63" + "\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" + "\x74\x65\x73\x2E\x1F\x62\x55\x72\x62\x61\x6E\x20\x4D\x61\x73\x73" + "\x20\x54\x72\x61\x6E\x73\x70\x6F\x72\x74\x61\x74\x69\x6F\x6E\x20" + "\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x2E\x1E" + "\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x36\x31\x36\x33\x36\x37\x20" + "\x2F\x2F\x72\x38\x34\x1E\x1D" +},{ + "\x30\x30\x36\x38\x36\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" + "\x39\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" + "\x30\x34\x33\x34\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" + "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x38\x30\x35\x30\x30" + "\x30\x32\x34\x30\x30\x31\x31\x30\x30\x38\x32\x30\x30\x31\x39\x30" + "\x30\x31\x33\x34\x31\x31\x30\x30\x30\x37\x30\x30\x30\x31\x35\x33" + "\x32\x34\x35\x30\x30\x35\x35\x30\x30\x32\x32\x33\x32\x35\x30\x30" + "\x30\x30\x39\x30\x30\x32\x37\x38\x32\x36\x30\x30\x30\x32\x31\x30" + "\x30\x32\x38\x37\x33\x30\x30\x30\x30\x31\x38\x30\x30\x33\x30\x38" + "\x35\x30\x30\x30\x30\x31\x37\x30\x30\x33\x32\x36\x36\x35\x30\x30" + "\x30\x34\x38\x30\x30\x33\x34\x33\x36\x35\x30\x30\x30\x34\x33\x30" + "\x30\x33\x39\x31\x1E\x20\x20\x20\x37\x37\x36\x33\x37\x30\x37\x35" + "\x20\x2F\x2F\x72\x38\x32\x1E\x44\x4C\x43\x1E\x31\x39\x38\x32\x30" + "\x38\x31\x37\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x32\x30\x33" + "\x32\x30\x73\x31\x39\x37\x31\x20\x20\x20\x20\x77\x61\x75\x20\x20" + "\x20\x20\x20\x20\x73\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65" + "\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C" + "\x43\x1F\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D" + "\x77\x61\x1E\x30\x30\x1F\x61\x4C\x42\x31\x30\x32\x38\x2E\x35\x1F" + "\x62\x2E\x57\x33\x37\x20\x31\x39\x37\x31\x1E\x30\x30\x1F\x61\x33" + "\x37\x38\x2F\x2E\x30\x35\x32\x2F\x30\x39\x37\x39\x37\x1E\x31\x30" + "\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x28\x53\x74" + "\x61\x74\x65\x29\x2E\x1F\x62\x53\x74\x61\x74\x65\x20\x42\x6F\x61" + "\x72\x64\x20\x66\x6F\x72\x20\x43\x6F\x6D\x6D\x75\x6E\x69\x74\x79" + "\x20\x43\x6F\x6C\x6C\x65\x67\x65\x20\x45\x64\x75\x63\x61\x74\x69" + "\x6F\x6E\x2E\x1E\x31\x32\x1F\x61\x41\x20\x70\x6C\x61\x6E\x20\x66" + "\x6F\x72\x20\x63\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x20\x63\x6F\x6C" + "\x6C\x65\x67\x65\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x20\x64\x65" + "\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74\x2E\x1E\x20\x20\x1F\x61\x52" + "\x65\x76\x2E\x1E\x31\x20\x1F\x61\x5B\x4F\x6C\x79\x6D\x70\x69\x61" + "\x5D\x1F\x63\x31\x39\x37\x31\x2E\x1E\x20\x20\x1F\x61\x34\x37\x20" + "\x6C\x2E\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x43" + "\x6F\x76\x65\x72\x20\x74\x69\x74\x6C\x65\x2E\x1E\x20\x30\x1F\x61" + "\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x69\x65\x73\x20\x61\x6E\x64" + "\x20\x63\x6F\x6C\x6C\x65\x67\x65\x73\x1F\x78\x44\x61\x74\x61\x20" + "\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x2E\x1E\x20\x30\x1F\x61" + "\x43\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x20\x63\x6F\x6C\x6C\x65\x67" + "\x65\x73\x1F\x7A\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x28" + "\x53\x74\x61\x74\x65\x29\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37" + "\x36\x33\x37\x30\x37\x35\x20\x2F\x2F\x72\x38\x32\x1E\x1D" +},{ + "\x30\x30\x36\x36\x38\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" + "\x37\x31\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x34\x33\x33\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" + "\x30\x35\x30\x30\x30\x31\x38\x30\x30\x30\x39\x33\x30\x38\x32\x30" + "\x30\x31\x36\x30\x30\x31\x31\x31\x31\x30\x30\x30\x30\x31\x39\x30" + "\x30\x31\x32\x37\x32\x34\x35\x30\x30\x37\x36\x30\x30\x31\x34\x36" + "\x32\x36\x30\x30\x30\x34\x30\x30\x30\x32\x32\x32\x33\x30\x30\x30" + "\x30\x34\x30\x30\x30\x32\x36\x32\x33\x35\x30\x30\x30\x30\x39\x30" + "\x30\x33\x30\x32\x34\x39\x30\x30\x30\x33\x32\x30\x30\x33\x31\x31" + "\x35\x30\x34\x30\x30\x33\x30\x30\x30\x33\x34\x33\x36\x33\x30\x30" + "\x30\x36\x30\x30\x30\x33\x37\x33\x1E\x20\x20\x20\x37\x30\x30\x30" + "\x31\x30\x37\x30\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x30\x30\x34" + "\x32\x37\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x30\x30\x33\x30" + "\x32\x73\x31\x39\x36\x38\x20\x20\x20\x20\x6D\x6F\x75\x61\x62\x20" + "\x20\x20\x20\x62\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65\x6E" + "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" + "\x1F\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x42\x53\x31\x32\x37\x35" + "\x2E\x35\x1F\x62\x2E\x4F\x32\x1E\x30\x30\x1F\x61\x32\x32\x32\x2F" + "\x2E\x31\x35\x2F\x30\x30\x37\x1E\x31\x30\x1F\x61\x4F\x62\x65\x72" + "\x73\x74\x2C\x20\x42\x72\x75\x63\x65\x2E\x1E\x30\x30\x1F\x61\x44" + "\x65\x75\x74\x65\x72\x6F\x6E\x6F\x6D\x79\x2E\x1F\x63\x54\x68\x6F" + "\x75\x67\x68\x74\x20\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2C\x20" + "\x62\x79\x20\x44\x6F\x6E\x20\x44\x65\x57\x65\x6C\x74\x2E\x20\x53" + "\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x41\x64\x61\x6D\x20\x43" + "\x6C\x61\x72\x6B\x65\x2E\x1E\x30\x20\x1F\x61\x4A\x6F\x70\x6C\x69" + "\x6E\x2C\x20\x4D\x6F\x2E\x2C\x1F\x62\x43\x6F\x6C\x6C\x65\x67\x65" + "\x20\x50\x72\x65\x73\x73\x1F\x63\x5B\x31\x39\x36\x38\x5D\x1E\x20" + "\x20\x1F\x61\x76\x69\x69\x69\x2C\x20\x34\x35\x32\x20\x70\x2E\x1F" + "\x62\x69\x6C\x6C\x75\x73\x2E\x2C\x20\x6D\x61\x70\x73\x2E\x1F\x63" + "\x32\x32\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x35\x2E\x39\x35\x1E" + "\x30\x20\x1F\x61\x42\x69\x62\x6C\x65\x20\x73\x74\x75\x64\x79\x20" + "\x74\x65\x78\x74\x62\x6F\x6F\x6B\x20\x73\x65\x72\x69\x65\x73\x1E" + "\x20\x20\x1F\x61\x42\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x79" + "\x3A\x20\x70\x2E\x20\x34\x34\x39\x2D\x34\x35\x32\x2E\x1E\x20\x30" + "\x1F\x61\x42\x69\x62\x6C\x65\x2E\x20\x4F\x2E\x54\x2E\x20\x44\x65" + "\x75\x74\x65\x72\x6F\x6E\x6F\x6D\x79\x1F\x78\x53\x74\x75\x64\x79" + "\x1F\x78\x4F\x75\x74\x6C\x69\x6E\x65\x73\x2C\x20\x73\x79\x6C\x6C" + "\x61\x62\x69\x2C\x20\x65\x74\x63\x2E\x1E\x20\x20\x1F\x61\x20\x20" + "\x20\x37\x30\x30\x30\x31\x30\x37\x30\x20\x1E\x1D" +},{ + "\x30\x30\x38\x38\x38\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" + "\x35\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x36\x30\x35\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x37\x35" + "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x39\x30\x30\x34\x33\x30" + "\x30\x31\x32\x30\x30\x31\x30\x38\x30\x35\x30\x30\x30\x32\x30\x30" + "\x30\x31\x32\x30\x30\x38\x32\x30\x30\x31\x32\x30\x30\x31\x34\x30" + "\x31\x30\x30\x30\x30\x32\x39\x30\x30\x31\x35\x32\x32\x34\x35\x30" + "\x30\x39\x33\x30\x30\x31\x38\x31\x32\x36\x30\x30\x30\x35\x35\x30" + "\x30\x32\x37\x34\x33\x30\x30\x30\x30\x32\x38\x30\x30\x33\x32\x39" + "\x35\x30\x30\x30\x30\x38\x31\x30\x30\x33\x35\x37\x35\x30\x34\x30" + "\x30\x34\x31\x30\x30\x34\x33\x38\x36\x35\x30\x30\x30\x34\x35\x30" + "\x30\x34\x37\x39\x36\x35\x30\x30\x30\x32\x35\x30\x30\x35\x32\x34" + "\x36\x35\x31\x30\x30\x32\x32\x30\x30\x35\x34\x39\x38\x33\x30\x30" + "\x30\x33\x34\x30\x30\x35\x37\x31\x1E\x20\x20\x20\x37\x32\x30\x30" + "\x32\x35\x36\x35\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x33\x30\x34" + "\x30\x39\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x32\x30\x34\x31" + "\x38\x72\x31\x39\x37\x32\x31\x39\x30\x39\x6E\x79\x75\x20\x20\x20" + "\x20\x20\x20\x62\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65\x6E" + "\x67\x20\x20\x1E\x20\x20\x1F\x61\x30\x38\x33\x36\x39\x36\x38\x34" + "\x33\x33\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F" + "\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x65\x2D\x67\x72\x2D\x2D\x2D" + "\x1E\x30\x30\x1F\x61\x42\x4C\x37\x38\x35\x1F\x62\x2E\x41\x33\x20" + "\x31\x39\x37\x32\x1E\x30\x30\x1F\x61\x32\x39\x32\x2F\x2E\x30\x38" + "\x1E\x31\x30\x1F\x61\x41\x64\x61\x6D\x2C\x20\x4A\x61\x6D\x65\x73" + "\x2C\x1F\x64\x31\x38\x36\x30\x2D\x31\x39\x30\x37\x2E\x1E\x31\x34" + "\x1F\x61\x54\x68\x65\x20\x72\x65\x6C\x69\x67\x69\x6F\x75\x73\x20" + "\x74\x65\x61\x63\x68\x65\x72\x73\x20\x6F\x66\x20\x47\x72\x65\x65" + "\x63\x65\x2E\x1F\x63\x45\x64\x69\x74\x65\x64\x20\x77\x69\x74\x68" + "\x20\x61\x20\x6D\x65\x6D\x6F\x69\x72\x2C\x20\x62\x79\x20\x68\x69" + "\x73\x20\x77\x69\x66\x65\x2C\x20\x41\x64\x65\x6C\x61\x20\x4D\x61" + "\x72\x69\x6F\x6E\x20\x41\x64\x61\x6D\x2E\x1E\x30\x20\x1F\x61\x46" + "\x72\x65\x65\x70\x6F\x72\x74\x2C\x20\x4E\x2E\x59\x2E\x2C\x1F\x62" + "\x42\x6F\x6F\x6B\x73\x20\x66\x6F\x72\x20\x4C\x69\x62\x72\x61\x72" + "\x69\x65\x73\x20\x50\x72\x65\x73\x73\x1F\x63\x5B\x31\x39\x37\x32" + "\x5D\x1E\x20\x20\x1F\x61\x78\x69\x78\x2C\x20\x6C\x76\x2C\x20\x34" + "\x36\x37\x20\x70\x2E\x1F\x63\x32\x32\x20\x63\x6D\x2E\x1E\x20\x20" + "\x1F\x61\x52\x65\x70\x72\x69\x6E\x74\x20\x6F\x66\x20\x74\x68\x65" + "\x20\x31\x39\x30\x39\x20\x65\x64\x2E\x2C\x20\x77\x68\x69\x63\x68" + "\x20\x77\x61\x73\x20\x69\x73\x73\x75\x65\x64\x20\x61\x73\x20\x74" + "\x68\x65\x20\x31\x39\x30\x34\x2D\x31\x39\x30\x36\x20\x47\x69\x66" + "\x66\x6F\x72\x64\x20\x6C\x65\x63\x74\x75\x72\x65\x73\x2E\x1E\x20" + "\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62\x69\x62\x6C" + "\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72\x65\x66\x65" + "\x72\x65\x6E\x63\x65\x73\x2E\x1E\x20\x30\x1F\x61\x47\x72\x65\x65" + "\x6B\x20\x6C\x69\x74\x65\x72\x61\x74\x75\x72\x65\x1F\x78\x48\x69" + "\x73\x74\x6F\x72\x79\x20\x61\x6E\x64\x20\x63\x72\x69\x74\x69\x63" + "\x69\x73\x6D\x2E\x1E\x20\x30\x1F\x61\x50\x68\x69\x6C\x6F\x73\x6F" + "\x70\x68\x79\x2C\x20\x41\x6E\x63\x69\x65\x6E\x74\x2E\x1E\x20\x30" + "\x1F\x61\x47\x72\x65\x65\x63\x65\x1F\x78\x52\x65\x6C\x69\x67\x69" + "\x6F\x6E\x2E\x1E\x20\x30\x1F\x61\x47\x69\x66\x66\x6F\x72\x64\x20" + "\x6C\x65\x63\x74\x75\x72\x65\x73\x2C\x1F\x76\x31\x39\x30\x34\x2D" + "\x31\x39\x30\x36\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x32\x30" + "\x30\x32\x35\x36\x35\x20\x1E\x1D" +},{ + "\x30\x31\x31\x32\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" + "\x35\x20\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x38\x34\x33\x30\x32\x30\x30\x30\x33\x31\x30\x30\x30\x37\x35" + "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x31\x30\x36\x30\x35\x30\x30" + "\x30\x32\x31\x30\x30\x31\x32\x34\x30\x38\x32\x30\x30\x31\x38\x30" + "\x30\x31\x34\x35\x31\x30\x30\x30\x30\x34\x32\x30\x30\x31\x36\x33" + "\x32\x34\x35\x30\x31\x35\x38\x30\x30\x32\x30\x35\x32\x35\x30\x30" + "\x30\x33\x37\x30\x30\x33\x36\x33\x32\x36\x30\x30\x30\x34\x35\x30" + "\x30\x34\x30\x30\x33\x30\x30\x30\x30\x35\x30\x30\x30\x34\x34\x35" + "\x34\x34\x30\x30\x30\x33\x35\x30\x30\x34\x39\x35\x36\x33\x30\x30" + "\x30\x36\x34\x30\x30\x35\x33\x30\x36\x33\x30\x30\x30\x36\x34\x30" + "\x30\x35\x39\x34\x36\x33\x30\x30\x30\x36\x32\x30\x30\x36\x35\x38" + "\x36\x33\x30\x30\x30\x36\x33\x30\x30\x37\x32\x30\x37\x33\x30\x30" + "\x30\x36\x30\x30\x30\x37\x38\x33\x1E\x20\x20\x20\x38\x30\x30\x38" + "\x32\x33\x32\x39\x20\x1E\x44\x4C\x43\x1E\x31\x39\x38\x31\x30\x35" + "\x32\x38\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x38\x31\x30\x35\x32" + "\x36\x73\x31\x39\x38\x30\x20\x20\x20\x20\x63\x74\x75\x61\x66\x20" + "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" + "\x67\x20\x20\x1E\x20\x20\x1F\x61\x30\x38\x37\x39\x38\x33\x32\x33" + "\x35\x35\x20\x28\x70\x62\x6B\x2E\x29\x20\x3A\x1F\x63\x24\x34\x2E" + "\x39\x35\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F" + "\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x42\x53\x31\x34\x33\x33\x1F" + "\x62\x2E\x53\x35\x20\x31\x39\x38\x30\x1E\x30\x30\x1F\x61\x32\x32" + "\x33\x2F\x2E\x32\x30\x37\x37\x1F\x32\x31\x39\x1E\x31\x30\x1F\x61" + "\x53\x6D\x69\x74\x68\x2C\x20\x47\x65\x6F\x72\x67\x65\x20\x41\x64" + "\x61\x6D\x2C\x1F\x63\x53\x69\x72\x2C\x1F\x64\x31\x38\x35\x36\x2D" + "\x31\x39\x34\x32\x2E\x1E\x31\x30\x1F\x61\x46\x6F\x75\x72\x20\x70" + "\x73\x61\x6C\x6D\x73\x20\x3A\x1F\x62\x58\x58\x49\x49\x49\x2C\x20" + "\x58\x58\x58\x56\x49\x2C\x20\x4C\x49\x49\x2C\x20\x43\x58\x58\x49" + "\x20\x2F\x1F\x63\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x65\x64\x20" + "\x66\x6F\x72\x20\x70\x72\x61\x63\x74\x69\x63\x61\x6C\x20\x75\x73" + "\x65\x20\x62\x79\x20\x47\x65\x6F\x72\x67\x65\x20\x41\x64\x61\x6D" + "\x20\x53\x6D\x69\x74\x68\x20\x3B\x20\x69\x6E\x74\x72\x6F\x64\x75" + "\x63\x74\x69\x6F\x6E\x20\x62\x79\x20\x46\x2E\x46\x2E\x20\x42\x72" + "\x75\x63\x65\x20\x3B\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74\x69" + "\x6F\x6E\x73\x20\x62\x79\x20\x52\x6F\x6E\x20\x4D\x63\x43\x61\x72" + "\x74\x79\x2E\x1E\x20\x20\x1F\x61\x53\x68\x65\x70\x68\x65\x72\x64" + "\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74\x65\x64\x20\x63\x6C\x61" + "\x73\x73\x69\x63\x20\x65\x64\x2E\x1E\x30\x20\x1F\x61\x4E\x65\x77" + "\x20\x43\x61\x6E\x61\x61\x6E\x2C\x20\x43\x6F\x6E\x6E\x2E\x20\x3A" + "\x1F\x62\x4B\x65\x61\x74\x73\x20\x50\x75\x62\x2E\x2C\x1F\x63\x63" + "\x31\x39\x38\x30\x2E\x1E\x20\x20\x1F\x61\x38\x31\x20\x70\x2E\x2C" + "\x20\x5B\x35\x5D\x20\x6C\x65\x61\x76\x65\x73\x20\x6F\x66\x20\x70" + "\x6C\x61\x74\x65\x73\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F" + "\x63\x32\x31\x20\x63\x6D\x2E\x1E\x20\x32\x1F\x61\x41\x20\x53\x68" + "\x65\x70\x68\x65\x72\x64\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74" + "\x65\x64\x20\x63\x6C\x61\x73\x73\x69\x63\x1E\x30\x30\x1F\x61\x42" + "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" + "\x6C\x6D\x73\x20\x58\x58\x49\x49\x49\x1F\x78\x43\x72\x69\x74\x69" + "\x63\x69\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61" + "\x74\x69\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42" + "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" + "\x6C\x6D\x73\x20\x58\x58\x58\x56\x49\x1F\x78\x43\x72\x69\x74\x69" + "\x63\x69\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61" + "\x74\x69\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42" + "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" + "\x6C\x6D\x73\x20\x4C\x49\x49\x1F\x78\x43\x72\x69\x74\x69\x63\x69" + "\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61\x74\x69" + "\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42\x69\x62" + "\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61\x6C\x6D" + "\x73\x20\x43\x58\x58\x49\x1F\x78\x43\x72\x69\x74\x69\x63\x69\x73" + "\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61\x74\x69\x6F" + "\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x31\x1F\x61\x42\x69\x62\x6C" + "\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61\x6C\x6D\x73" + "\x20\x58\x58\x49\x49\x49\x2C\x20\x58\x58\x58\x56\x49\x2C\x20\x4C" + "\x49\x49\x2C\x20\x43\x58\x58\x49\x2E\x1F\x6C\x45\x6E\x67\x6C\x69" + "\x73\x68\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x38\x30\x30\x38\x32" + "\x33\x32\x39\x20\x1E\x1D" +},{ + "\x30\x31\x34\x33\x33\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x34\x32" + "\x31\x20\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x33\x31\x30" + "\x30\x30\x37\x31\x30\x32\x32\x30\x30\x31\x34\x30\x30\x31\x30\x32" + "\x30\x33\x30\x30\x30\x31\x31\x30\x30\x31\x31\x36\x30\x33\x32\x30" + "\x30\x31\x37\x30\x30\x31\x32\x37\x30\x33\x35\x30\x30\x32\x30\x30" + "\x30\x31\x34\x34\x30\x33\x35\x30\x30\x32\x37\x30\x30\x31\x36\x34" + "\x30\x34\x30\x30\x30\x39\x36\x30\x30\x31\x39\x31\x30\x34\x32\x30" + "\x30\x31\x33\x30\x30\x32\x38\x37\x30\x35\x30\x30\x30\x32\x30\x30" + "\x30\x33\x30\x30\x30\x37\x30\x30\x30\x31\x38\x30\x30\x33\x32\x30" + "\x30\x37\x32\x30\x30\x30\x39\x30\x30\x33\x33\x38\x30\x38\x32\x30" + "\x30\x31\x34\x30\x30\x33\x34\x37\x32\x31\x30\x30\x30\x31\x39\x30" + "\x30\x33\x36\x31\x32\x32\x32\x30\x30\x31\x39\x30\x30\x33\x38\x30" + "\x32\x34\x35\x30\x30\x32\x30\x30\x30\x33\x39\x39\x32\x36\x30\x30" + "\x30\x34\x33\x30\x30\x34\x31\x39\x32\x36\x35\x30\x30\x35\x38\x30" + "\x30\x34\x36\x32\x33\x30\x30\x30\x30\x31\x37\x30\x30\x35\x32\x30" + "\x33\x31\x30\x30\x30\x36\x32\x30\x30\x35\x33\x37\x33\x35\x30\x30" + "\x30\x31\x31\x30\x30\x35\x39\x39\x33\x36\x32\x30\x30\x33\x32\x30" + "\x30\x36\x31\x30\x35\x30\x30\x30\x30\x32\x34\x30\x30\x36\x34\x32" + "\x36\x35\x30\x30\x30\x34\x36\x30\x30\x36\x36\x36\x36\x35\x30\x30" + "\x30\x33\x36\x30\x30\x37\x31\x32\x36\x35\x30\x30\x30\x33\x39\x30" + "\x30\x37\x34\x38\x36\x35\x30\x30\x30\x33\x35\x30\x30\x37\x38\x37" + "\x36\x35\x30\x30\x30\x33\x33\x30\x30\x38\x32\x32\x37\x38\x30\x30" + "\x30\x38\x32\x30\x30\x38\x35\x35\x38\x35\x30\x30\x30\x37\x34\x30" + "\x30\x39\x33\x37\x1E\x41\x43\x44\x2D\x33\x38\x33\x37\x1E\x44\x4C" + "\x43\x1E\x31\x39\x39\x34\x30\x36\x31\x34\x30\x36\x35\x36\x31\x34" + "\x2E\x30\x1E\x39\x32\x30\x37\x32\x38\x63\x31\x39\x39\x32\x39\x39" + "\x39\x39\x63\x74\x75\x6D\x6E\x31\x70\x20\x20\x20\x20\x20\x20\x20" + "\x30\x20\x20\x20\x61\x30\x65\x6E\x67\x20\x64\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x39\x32\x36\x34\x36\x30\x36\x32\x20\x1F\x7A\x73\x6E" + "\x20\x39\x32\x30\x30\x34\x34\x33\x30\x20\x1E\x30\x20\x1F\x61\x31" + "\x30\x36\x34\x2D\x33\x39\x32\x33\x1E\x20\x20\x1F\x61\x49\x45\x52" + "\x4E\x45\x38\x1E\x20\x20\x1F\x61\x30\x30\x38\x31\x38\x37\x1F\x62" + "\x55\x53\x50\x53\x1E\x20\x20\x1F\x61\x28\x4F\x43\x6F\x4C\x43\x29" + "\x32\x36\x32\x37\x33\x32\x37\x35\x1E\x30\x30\x1F\x69\x6C\x63\x6D" + "\x61\x72\x63\x2F\x41\x51\x50\x2D\x36\x32\x38\x35\x2F\x4A\x45\x41" + "\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x4E\x53\x44\x50\x1F\x63\x4E\x53" + "\x44\x50\x1F\x64\x57\x61\x55\x1F\x64\x4E\x49\x43\x1F\x64\x44\x4E" + "\x41\x4C\x1F\x64\x4F\x55\x43\x41\x1F\x64\x4E\x53\x54\x1F\x64\x44" + "\x4C\x43\x1F\x64\x4E\x53\x54\x1F\x64\x4E\x53\x44\x50\x1F\x64\x4E" + "\x53\x54\x1F\x64\x44\x4C\x43\x1F\x64\x49\x6E\x55\x1F\x64\x4D\x48" + "\x1F\x64\x4E\x53\x44\x50\x1F\x64\x4E\x1F\x64\x44\x4C\x43\x1F\x64" + "\x4D\x69\x55\x1E\x20\x20\x1F\x61\x6E\x73\x64\x70\x1F\x61\x6C\x63" + "\x1E\x30\x30\x1F\x61\x54\x4B\x35\x31\x30\x35\x2E\x35\x1F\x62\x2E" + "\x52\x34\x34\x38\x1E\x30\x20\x1F\x61\x54\x4B\x35\x31\x30\x35\x2E" + "\x35\x2E\x52\x34\x34\x38\x1E\x20\x30\x1F\x61\x58\x32\x30\x30\x1E" + "\x30\x30\x1F\x61\x33\x38\x34\x2E\x33\x1F\x32\x32\x30\x1E\x30\x20" + "\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x77\x6F\x72\x6C\x64" + "\x1E\x20\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x77\x6F" + "\x72\x6C\x64\x1E\x30\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74" + "\x20\x77\x6F\x72\x6C\x64\x2E\x1E\x20\x20\x1F\x61\x57\x65\x73\x74" + "\x70\x6F\x72\x74\x2C\x20\x43\x54\x20\x3A\x1F\x62\x4D\x65\x63\x6B" + "\x6C\x65\x72\x20\x43\x6F\x72\x70\x2E\x2C\x1F\x63\x63\x31\x39\x39" + "\x32\x2D\x1E\x20\x20\x1F\x61\x4D\x65\x63\x6B\x6C\x65\x72\x20\x43" + "\x6F\x72\x70\x2E\x2C\x20\x31\x31\x20\x46\x65\x72\x72\x79\x20\x4C" + "\x61\x6E\x65\x20\x57\x65\x73\x74\x2C\x20\x57\x65\x73\x74\x70\x6F" + "\x72\x74\x2C\x20\x43\x54\x20\x30\x36\x38\x38\x30\x1E\x20\x20\x1F" + "\x61\x76\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20" + "\x1F\x61\x4D\x6F\x6E\x74\x68\x6C\x79\x20\x28\x65\x78\x63\x65\x70" + "\x74\x20\x4A\x61\x6E\x2E\x2F\x46\x65\x62\x2E\x2C\x20\x4A\x75\x6C" + "\x79\x2F\x41\x75\x67\x2E\x2C\x20\x4E\x6F\x76\x2E\x2F\x44\x65\x63" + "\x2E\x20\x63\x6F\x6D\x62\x69\x6E\x65\x64\x29\x1E\x20\x20\x1F\x61" + "\x24\x39\x37\x2E\x30\x30\x1E\x30\x20\x1F\x61\x56\x6F\x6C\x2E\x20" + "\x33\x2C\x20\x6E\x6F\x2E\x20\x37\x20\x28\x53\x65\x70\x74\x2E\x20" + "\x31\x39\x39\x32\x29\x2D\x1E\x20\x20\x1F\x61\x54\x69\x74\x6C\x65" + "\x20\x66\x72\x6F\x6D\x20\x63\x61\x70\x74\x69\x6F\x6E\x2E\x1E\x20" + "\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x28\x43\x6F\x6D" + "\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72\x6B\x29\x1F\x78" + "\x50\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x30\x1F" + "\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72" + "\x6B\x73\x1F\x78\x50\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E" + "\x1E\x20\x30\x1F\x61\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E" + "\x20\x6E\x65\x74\x77\x6F\x72\x6B\x73\x1F\x78\x50\x65\x72\x69\x6F" + "\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x32\x1F\x61\x43\x6F\x6D\x70" + "\x75\x74\x65\x72\x20\x53\x79\x73\x74\x65\x6D\x73\x1F\x78\x70\x65" + "\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x32\x1F\x61\x4F" + "\x6E\x6C\x69\x6E\x65\x20\x53\x79\x73\x74\x65\x6D\x73\x1F\x78\x70" + "\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x30\x30\x1F\x74" + "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x26\x20\x65\x64\x75\x63\x61" + "\x74\x69\x6F\x6E\x20\x6E\x65\x74\x77\x6F\x72\x6B\x69\x6E\x67\x1F" + "\x78\x31\x30\x35\x31\x2D\x34\x37\x39\x31\x1F\x77\x28\x44\x4C\x43" + "\x29\x20\x20\x20\x39\x30\x36\x34\x36\x36\x31\x33\x1F\x77\x28\x4F" + "\x43\x6F\x4C\x43\x29\x32\x31\x39\x37\x34\x34\x34\x38\x1E\x20\x20" + "\x1F\x61\x44\x4C\x43\x1F\x61\x44\x4E\x41\x4C\x1F\x61\x44\x4E\x47" + "\x41\x1F\x61\x49\x6E\x55\x1F\x61\x4D\x42\x43\x6F\x1F\x61\x4D\x48" + "\x2D\x45\x64\x1F\x61\x4D\x64\x42\x4A\x1F\x61\x4D\x69\x55\x1F\x61" + "\x4D\x6F\x4B\x4C\x1F\x61\x4E\x1F\x61\x4E\x49\x43\x1F\x61\x54\x78" + "\x48\x52\x1F\x61\x57\x61\x55\x1E\x1D" +},{ + "\x30\x31\x33\x33\x30\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x33\x37" + "\x33\x35\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x30\x37\x31\x30\x32\x32\x30\x30\x32\x35\x30\x30\x30\x38\x38" + "\x30\x33\x35\x30\x30\x32\x30\x30\x30\x31\x31\x33\x30\x33\x35\x30" + "\x30\x32\x37\x30\x30\x31\x33\x33\x30\x34\x30\x30\x30\x32\x39\x30" + "\x30\x31\x36\x30\x30\x34\x32\x30\x30\x31\x36\x30\x30\x31\x38\x39" + "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x32\x30\x35\x30\x35\x35\x30" + "\x30\x31\x32\x30\x30\x32\x31\x37\x30\x38\x32\x30\x30\x31\x32\x30" + "\x30\x32\x32\x39\x31\x33\x30\x30\x30\x33\x35\x30\x30\x32\x34\x31" + "\x32\x31\x30\x30\x30\x32\x37\x30\x30\x32\x37\x36\x32\x32\x32\x30" + "\x30\x32\x39\x30\x30\x33\x30\x33\x32\x34\x35\x30\x30\x31\x37\x30" + "\x30\x33\x33\x32\x32\x36\x30\x30\x30\x35\x34\x30\x30\x33\x34\x39" + "\x32\x36\x35\x30\x30\x36\x39\x30\x30\x34\x30\x33\x33\x30\x30\x30" + "\x30\x32\x35\x30\x30\x34\x37\x32\x33\x31\x30\x30\x30\x31\x32\x30" + "\x30\x34\x39\x37\x33\x35\x30\x30\x30\x32\x31\x30\x30\x35\x30\x39" + "\x33\x36\x32\x30\x30\x33\x33\x30\x30\x35\x33\x30\x35\x30\x30\x30" + "\x30\x32\x34\x30\x30\x35\x36\x33\x35\x38\x30\x30\x30\x35\x38\x30" + "\x30\x35\x38\x37\x37\x38\x30\x30\x30\x38\x33\x30\x30\x36\x34\x35" + "\x37\x38\x30\x30\x30\x35\x31\x30\x30\x37\x32\x38\x37\x38\x35\x30" + "\x30\x38\x33\x30\x30\x37\x37\x39\x37\x38\x37\x30\x30\x39\x34\x30" + "\x30\x38\x36\x32\x1E\x41\x43\x44\x2D\x33\x37\x39\x39\x1E\x44\x4C" + "\x43\x1E\x31\x39\x39\x34\x30\x36\x31\x34\x30\x39\x30\x35\x31\x34" + "\x2E\x30\x1E\x39\x32\x30\x37\x32\x33\x63\x31\x39\x39\x31\x39\x39" + "\x39\x39\x6F\x6E\x63\x6D\x72\x34\x70\x20\x20\x20\x20\x20\x20\x20" + "\x30\x20\x20\x20\x61\x30\x65\x6E\x67\x20\x64\x1E\x20\x20\x1F\x61" + "\x63\x6E\x20\x39\x32\x30\x33\x31\x36\x34\x31\x20\x1E\x30\x20\x1F" + "\x61\x31\x31\x38\x37\x2D\x37\x30\x38\x31\x1F\x79\x30\x30\x32\x35" + "\x2D\x39\x35\x33\x35\x1E\x20\x20\x1F\x61\x28\x4F\x43\x6F\x4C\x43" + "\x29\x32\x36\x32\x34\x34\x38\x34\x34\x1E\x30\x30\x1F\x69\x6C\x63" + "\x6D\x61\x72\x63\x2F\x41\x51\x46\x2D\x32\x38\x39\x36\x2F\x4A\x45" + "\x41\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x43\x61\x4F\x4F\x43\x4D\x1F" + "\x62\x65\x6E\x67\x1F\x63\x43\x61\x4F\x4F\x4E\x4C\x1F\x64\x49\x6E" + "\x55\x1E\x20\x20\x1F\x61\x6E\x6C\x63\x1F\x61\x69\x73\x64\x73\x2F" + "\x63\x1E\x20\x20\x1F\x61\x6E\x2D\x63\x6E\x2D\x2D\x2D\x1E\x20\x32" + "\x1F\x61\x48\x44\x39\x36\x39\x36\x2A\x1E\x31\x20\x1F\x61\x30\x30" + "\x34\x1F\x32\x31\x32\x1E\x30\x20\x1F\x61\x49\x6E\x66\x6F\x20\x43" + "\x61\x6E\x61\x64\x61\x20\x28\x44\x6F\x77\x6E\x73\x76\x69\x65\x77" + "\x2C\x20\x4F\x6E\x74\x2E\x29\x2E\x1E\x30\x20\x1F\x61\x49\x6E\x66" + "\x6F\x20\x43\x61\x6E\x2E\x1F\x62\x28\x44\x6F\x77\x6E\x73\x76\x69" + "\x65\x77\x29\x1E\x20\x30\x1F\x61\x49\x6E\x66\x6F\x20\x43\x61\x6E" + "\x61\x64\x61\x1F\x62\x28\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x29" + "\x1E\x30\x30\x1F\x61\x49\x6E\x66\x6F\x20\x43\x61\x6E\x61\x64\x61" + "\x2E\x1E\x20\x20\x1F\x61\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x2C" + "\x20\x4F\x6E\x74\x2E\x20\x3A\x1F\x62\x4C\x61\x75\x72\x65\x6E\x74" + "\x69\x61\x6E\x20\x54\x65\x63\x68\x6E\x6F\x6D\x65\x64\x69\x61\x2C" + "\x1F\x63\x31\x39\x39\x31\x2D\x1E\x20\x20\x1F\x61\x4C\x61\x75\x72" + "\x65\x6E\x74\x69\x61\x6E\x20\x54\x65\x63\x68\x6E\x6F\x6D\x65\x64" + "\x69\x61\x2C\x20\x35\x30\x31\x20\x4F\x61\x6B\x64\x61\x6C\x65\x20" + "\x52\x64\x2E\x2C\x20\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x2C\x20" + "\x4F\x6E\x74\x2E\x20\x4D\x33\x4E\x20\x31\x57\x37\x1E\x20\x20\x1F" + "\x61\x76\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F\x63\x34" + "\x30\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x4D\x6F\x6E\x74\x68\x6C" + "\x79\x1E\x20\x20\x1F\x61\x24\x35\x30\x2E\x30\x30\x20\x70\x65\x72" + "\x20\x79\x65\x61\x72\x2E\x1E\x30\x20\x1F\x61\x56\x6F\x6C\x2E\x20" + "\x31\x36\x2C\x20\x6E\x6F\x2E\x20\x39\x20\x28\x53\x65\x70\x74\x2E" + "\x20\x31\x39\x39\x31\x29\x2D\x1E\x20\x20\x1F\x61\x54\x69\x74\x6C" + "\x65\x20\x66\x72\x6F\x6D\x20\x63\x61\x70\x74\x69\x6F\x6E\x2E\x1E" + "\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x3A\x20\x4E\x65" + "\x74\x77\x6F\x72\x6B\x20\x77\x6F\x72\x6C\x64\x20\x43\x61\x6E\x61" + "\x64\x61\x2C\x20\x53\x65\x70\x74\x2E\x20\x31\x39\x39\x31\x2D\x4A" + "\x61\x6E\x2E\x20\x31\x39\x39\x32\x2E\x1E\x30\x30\x1F\x74\x43\x6F" + "\x6D\x70\x75\x74\x65\x72\x20\x64\x61\x74\x61\x1F\x78\x30\x33\x38" + "\x33\x2D\x37\x33\x31\x39\x1F\x77\x28\x43\x61\x4F\x4F\x4E\x4C\x29" + "\x37\x37\x30\x33\x30\x38\x33\x31\x37\x1F\x77\x28\x4F\x43\x6F\x4C" + "\x43\x29\x31\x31\x34\x31\x36\x34\x37\x39\x1F\x77\x28\x44\x4C\x43" + "\x29\x63\x6E\x20\x37\x37\x30\x33\x30\x38\x33\x31\x1E\x30\x35\x1F" + "\x74\x49\x2E\x54\x2E\x20\x6D\x61\x67\x61\x7A\x69\x6E\x65\x20\x28" + "\x54\x6F\x72\x6F\x6E\x74\x6F\x2C\x20\x4F\x6E\x74\x2E\x29\x1F\x77" + "\x28\x4F\x43\x6F\x4C\x43\x29\x32\x37\x36\x39\x39\x30\x36\x36\x1E" + "\x30\x31\x1F\x74\x4E\x65\x74\x77\x6F\x72\x6B\x20\x77\x6F\x72\x6C" + "\x64\x20\x43\x61\x6E\x61\x64\x61\x1F\x67\x46\x65\x62\x2E\x20\x31" + "\x39\x39\x32\x1F\x78\x31\x31\x38\x37\x2D\x32\x39\x38\x35\x1F\x77" + "\x28\x4F\x43\x6F\x4C\x43\x29\x32\x35\x33\x31\x34\x30\x31\x32\x1F" + "\x77\x28\x43\x61\x4F\x4F\x4E\x4C\x29\x39\x32\x30\x33\x30\x35\x37" + "\x32\x35\x1E\x31\x20\x1F\x74\x4E\x65\x74\x77\x6F\x72\x6B\x20\x77" + "\x6F\x72\x6C\x64\x20\x43\x61\x6E\x61\x64\x61\x1F\x67\x53\x65\x70" + "\x74\x2E\x20\x31\x39\x39\x31\x2D\x4A\x61\x6E\x2E\x20\x31\x39\x39" + "\x32\x1F\x78\x31\x31\x38\x37\x2D\x32\x39\x38\x35\x1F\x77\x28\x4F" + "\x43\x6F\x4C\x43\x29\x32\x35\x33\x31\x34\x30\x31\x32\x1F\x77\x28" + "\x43\x61\x4F\x4F\x4E\x4C\x29\x39\x32\x30\x33\x30\x35\x37\x32\x35" + "\x1E\x1D" +},{ + "\x30\x30\x38\x30\x33\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" + "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" + "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x31\x37\x30" + "\x30\x30\x37\x31\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x38\x38" + "\x30\x33\x35\x30\x30\x32\x37\x30\x30\x31\x30\x33\x30\x34\x30\x30" + "\x30\x31\x33\x30\x30\x31\x33\x30\x30\x34\x33\x30\x30\x31\x32\x30" + "\x30\x31\x34\x33\x30\x35\x30\x30\x30\x32\x38\x30\x30\x31\x35\x35" + "\x30\x38\x32\x30\x30\x31\x38\x30\x30\x31\x38\x33\x31\x30\x30\x30" + "\x30\x32\x35\x30\x30\x32\x30\x31\x32\x34\x35\x30\x30\x39\x35\x30" + "\x30\x32\x32\x36\x32\x35\x30\x30\x30\x31\x32\x30\x30\x33\x32\x31" + "\x32\x36\x30\x30\x30\x33\x34\x30\x30\x33\x33\x33\x32\x36\x33\x30" + "\x30\x30\x39\x30\x30\x33\x36\x37\x33\x30\x30\x30\x30\x31\x31\x30" + "\x30\x33\x37\x36\x35\x30\x30\x30\x30\x32\x30\x30\x30\x33\x38\x37" + "\x36\x33\x30\x30\x30\x33\x38\x30\x30\x34\x30\x37\x36\x30\x30\x30" + "\x30\x32\x32\x30\x30\x34\x34\x35\x36\x30\x30\x30\x30\x31\x35\x30" + "\x30\x34\x36\x37\x36\x35\x30\x30\x30\x33\x31\x30\x30\x34\x38\x32" + "\x1E\x41\x43\x44\x2D\x33\x37\x39\x32\x1E\x44\x4C\x43\x1E\x31\x39" + "\x39\x33\x31\x32\x31\x35\x30\x38\x34\x36\x30\x35\x2E\x37\x1E\x39" + "\x33\x31\x32\x30\x36\x73\x31\x39\x39\x33\x20\x20\x20\x20\x6E\x79" + "\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x31\x20" + "\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x20\x20\x20\x39" + "\x33\x30\x34\x37\x39\x39\x32\x20\x1E\x20\x20\x1F\x61\x31\x35\x36" + "\x32\x38\x32\x37\x35\x34\x35\x1E\x30\x30\x1F\x69\x6C\x63\x6D\x61" + "\x72\x63\x2F\x41\x52\x55\x2D\x32\x33\x36\x34\x2F\x53\x54\x45\x56" + "\x45\x53\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1E" + "\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x30\x30\x1F\x61" + "\x50\x4E\x31\x39\x39\x32\x2E\x37\x37\x2E\x54\x36\x33\x1F\x62\x43" + "\x33\x37\x20\x31\x39\x39\x33\x1E\x30\x30\x1F\x61\x37\x39\x31\x2E" + "\x34\x35\x2F\x37\x32\x1F\x32\x32\x30\x1E\x31\x20\x1F\x61\x43\x61" + "\x72\x74\x65\x72\x2C\x20\x42\x69\x6C\x6C\x2C\x1F\x64\x31\x39\x34" + "\x39\x2D\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x6C\x61\x74\x65\x20" + "\x73\x68\x69\x66\x74\x20\x3A\x1F\x62\x4C\x65\x74\x74\x65\x72\x6D" + "\x61\x6E\x2C\x20\x4C\x65\x6E\x6F\x2C\x20\x61\x6E\x64\x20\x74\x68" + "\x65\x20\x6E\x65\x74\x77\x6F\x72\x6B\x20\x62\x61\x74\x74\x6C\x65" + "\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x6E\x69\x67\x68\x74\x20\x2F" + "\x1F\x63\x62\x79\x20\x42\x69\x6C\x6C\x20\x43\x61\x72\x74\x65\x72" + "\x2E\x1E\x20\x20\x1F\x61\x31\x73\x74\x20\x65\x64\x2E\x1E\x20\x20" + "\x1F\x61\x4E\x65\x77\x20\x59\x6F\x72\x6B\x20\x3A\x1F\x62\x48\x79" + "\x70\x65\x72\x69\x6F\x6E\x2C\x1F\x63\x63\x31\x39\x39\x33\x2E\x1E" + "\x20\x20\x1F\x61\x39\x34\x30\x32\x1E\x20\x20\x1F\x61\x70\x2E\x20" + "\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73" + "\x20\x69\x6E\x64\x65\x78\x2E\x1E\x30\x30\x1F\x61\x54\x6F\x6E\x69" + "\x67\x68\x74\x20\x73\x68\x6F\x77\x20\x28\x54\x65\x6C\x65\x76\x69" + "\x73\x69\x6F\x6E\x20\x70\x72\x6F\x67\x72\x61\x6D\x29\x1E\x31\x30" + "\x1F\x61\x4C\x65\x74\x74\x65\x72\x6D\x61\x6E\x2C\x20\x44\x61\x76" + "\x69\x64\x2E\x1E\x31\x30\x1F\x61\x4C\x65\x6E\x6F\x2C\x20\x4A\x61" + "\x79\x2E\x1E\x20\x30\x1F\x61\x54\x61\x6C\x6B\x20\x73\x68\x6F\x77" + "\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" + "\x2E\x1E\x1D" +},{ + "\x30\x30\x37\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" + "\x35\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x30\x39" + "\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x32\x36\x30\x31\x30\x30" + "\x30\x31\x37\x30\x30\x30\x36\x37\x30\x32\x30\x30\x30\x31\x35\x30" + "\x30\x30\x38\x34\x30\x33\x35\x30\x30\x32\x39\x30\x30\x30\x39\x39" + "\x30\x34\x30\x30\x30\x31\x33\x30\x30\x31\x32\x38\x30\x35\x30\x30" + "\x30\x32\x39\x30\x30\x31\x34\x31\x30\x38\x32\x30\x30\x31\x36\x30" + "\x30\x31\x37\x30\x32\x34\x35\x30\x30\x37\x36\x30\x30\x31\x38\x36" + "\x32\x35\x30\x30\x30\x31\x36\x30\x30\x32\x36\x32\x32\x36\x30\x30" + "\x30\x35\x36\x30\x30\x32\x37\x38\x32\x36\x33\x30\x30\x30\x39\x30" + "\x30\x33\x33\x34\x33\x30\x30\x30\x30\x31\x31\x30\x30\x33\x34\x33" + "\x34\x34\x30\x30\x30\x33\x32\x30\x30\x33\x35\x34\x35\x30\x30\x30" + "\x30\x32\x30\x30\x30\x33\x38\x36\x36\x35\x30\x30\x30\x33\x32\x30" + "\x30\x34\x30\x36\x36\x35\x30\x30\x30\x31\x39\x30\x30\x34\x33\x38" + "\x37\x30\x30\x30\x30\x32\x35\x30\x30\x34\x35\x37\x37\x30\x30\x30" + "\x30\x31\x38\x30\x30\x34\x38\x32\x1E\x41\x43\x44\x2D\x33\x36\x36" + "\x35\x1E\x31\x39\x39\x33\x30\x37\x33\x30\x30\x39\x32\x30\x30\x34" + "\x2E\x31\x1E\x39\x33\x30\x37\x32\x31\x73\x31\x39\x39\x33\x20\x20" + "\x20\x20\x6E\x6A\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20" + "\x30\x30\x31\x20\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x39\x33\x30\x33\x30\x37\x37\x35\x20\x1E\x20\x20\x1F" + "\x61\x30\x31\x33\x32\x38\x39\x36\x36\x31\x33\x1E\x30\x30\x1F\x69" + "\x6C\x63\x6D\x61\x72\x63\x2F\x41\x52\x49\x2D\x33\x38\x30\x34\x2F" + "\x4A\x55\x4C\x49\x41\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x44\x4C\x43" + "\x1F\x63\x44\x4C\x43\x1E\x30\x30\x1F\x61\x54\x4B\x35\x31\x30\x35" + "\x2E\x38\x37\x35\x2E\x49\x35\x37\x1F\x62\x49\x35\x36\x20\x31\x39" + "\x39\x33\x1E\x30\x30\x1F\x61\x33\x38\x34\x2E\x33\x2F\x34\x1F\x32" + "\x32\x30\x1E\x30\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20" + "\x3A\x1F\x62\x6D\x61\x69\x6C\x69\x6E\x67\x20\x6C\x69\x73\x74\x73" + "\x20\x2F\x1F\x63\x65\x64\x69\x74\x65\x64\x20\x62\x79\x20\x45\x64" + "\x77\x61\x72\x64\x20\x54\x2E\x4C\x2E\x20\x48\x61\x72\x64\x69\x65" + "\x2C\x20\x56\x69\x76\x69\x61\x6E\x20\x4E\x65\x6F\x75\x2E\x1E\x20" + "\x20\x1F\x61\x55\x70\x64\x61\x74\x65\x64\x20\x65\x64\x2E\x1E\x20" + "\x20\x1F\x61\x45\x6E\x67\x6C\x65\x77\x6F\x6F\x64\x20\x43\x6C\x69" + "\x66\x66\x73\x2C\x20\x4E\x2E\x4A\x2E\x20\x3A\x1F\x62\x50\x54\x52" + "\x20\x50\x72\x65\x6E\x74\x69\x63\x65\x20\x48\x61\x6C\x6C\x2C\x1F" + "\x63\x31\x39\x39\x33\x2E\x1E\x20\x20\x1F\x61\x39\x33\x30\x38\x1E" + "\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x30\x1F\x61\x49" + "\x6E\x74\x65\x72\x6E\x65\x74\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74" + "\x69\x6F\x6E\x20\x73\x65\x72\x69\x65\x73\x1E\x20\x20\x1F\x61\x49" + "\x6E\x63\x6C\x75\x64\x65\x73\x20\x69\x6E\x64\x65\x78\x2E\x1E\x20" + "\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x28\x43\x6F\x6D" + "\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72\x6B\x29\x1E\x20" + "\x30\x1F\x61\x4D\x61\x69\x6C\x69\x6E\x67\x20\x6C\x69\x73\x74\x73" + "\x2E\x1E\x31\x30\x1F\x61\x48\x61\x72\x64\x69\x65\x2C\x20\x45\x64" + "\x77\x61\x72\x64\x20\x54\x2E\x20\x4C\x2E\x1E\x31\x30\x1F\x61\x4E" + "\x65\x6F\x75\x2C\x20\x56\x69\x76\x69\x61\x6E\x2E\x1E\x1D" +},{ + "\x30\x31\x33\x32\x34\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" + "\x39\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x33\x30" + "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x33" + "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x35\x30\x38\x36\x30" + "\x30\x32\x32\x30\x30\x31\x33\x34\x30\x34\x39\x30\x30\x30\x39\x30" + "\x30\x31\x35\x36\x32\x34\x35\x30\x30\x36\x32\x30\x30\x31\x36\x35" + "\x32\x36\x30\x30\x31\x34\x35\x30\x30\x32\x32\x37\x33\x30\x30\x30" + "\x30\x32\x35\x30\x30\x33\x37\x32\x35\x30\x30\x30\x30\x38\x30\x30" + "\x30\x33\x39\x37\x35\x30\x30\x30\x32\x32\x31\x30\x30\x34\x37\x37" + "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x36\x39\x38\x35\x30\x30\x30" + "\x30\x32\x31\x30\x30\x37\x35\x33\x35\x30\x30\x30\x30\x32\x32\x30" + "\x30\x37\x37\x34\x36\x31\x30\x30\x30\x36\x31\x30\x30\x37\x39\x36" + "\x36\x35\x30\x30\x30\x34\x33\x30\x30\x38\x35\x37\x36\x35\x30\x30" + "\x30\x34\x35\x30\x30\x39\x30\x30\x37\x30\x30\x30\x30\x32\x31\x30" + "\x30\x39\x34\x35\x37\x31\x30\x30\x30\x36\x38\x30\x30\x39\x36\x36" + "\x1E\x41\x43\x44\x2D\x32\x37\x32\x38\x1E\x39\x31\x30\x35\x31\x34" + "\x73\x31\x39\x38\x34\x20\x20\x20\x20\x6E\x79\x75\x20\x20\x20\x20" + "\x20\x20\x72\x20\x20\x20\x66\x30\x30\x31\x30\x30\x20\x65\x6E\x67" + "\x20\x64\x1E\x31\x39\x39\x31\x30\x35\x31\x39\x31\x34\x34\x35\x35" + "\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x37\x34\x30\x30\x30\x32" + "\x1E\x20\x20\x1F\x61\x45\x44\x20\x45\x44\x20\x32\x38\x39\x34\x35" + "\x39\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73" + "\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41\x2D\x30" + "\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20\x31\x2E" + "\x33\x31\x30\x2F\x32\x3A\x32\x38\x39\x34\x35\x39\x1E\x20\x20\x1F" + "\x61\x44\x52\x55\x47\x1E\x30\x30\x1F\x61\x54\x65\x63\x68\x6E\x6F" + "\x6C\x6F\x67\x79\x20\x70\x72\x6F\x67\x72\x61\x6D\x73\x20\x74\x68" + "\x61\x74\x20\x77\x6F\x72\x6B\x20\x2F\x1F\x63\x4D\x69\x63\x68\x61" + "\x65\x6C\x20\x42\x2E\x20\x57\x65\x62\x62\x2C\x20\x65\x64\x69\x74" + "\x6F\x72\x2E\x1E\x30\x20\x1F\x61\x4E\x65\x77\x20\x59\x6F\x72\x6B" + "\x2C\x20\x4E\x2E\x59\x2E\x20\x3A\x1F\x62\x54\x65\x63\x68\x6E\x6F" + "\x6C\x6F\x67\x79\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x4E\x44\x4E" + "\x20\x50\x72\x6F\x6A\x65\x63\x74\x2C\x20\x49\x6E\x73\x74\x69\x74" + "\x75\x74\x65\x20\x66\x6F\x72\x20\x55\x72\x62\x61\x6E\x20\x61\x6E" + "\x64\x20\x4D\x69\x6E\x6F\x72\x69\x74\x79\x20\x45\x64\x75\x63\x61" + "\x74\x69\x6F\x6E\x2C\x20\x54\x65\x61\x63\x68\x65\x72\x73\x20\x43" + "\x6F\x6C\x6C\x65\x67\x65\x2C\x20\x43\x6F\x6C\x75\x6D\x62\x69\x61" + "\x20\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x1F\x63\x5B\x31" + "\x39\x38\x34\x5D\x1E\x20\x20\x1F\x61\x37\x32\x2C\x20\x5B\x31\x5D" + "\x20\x70\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20" + "\x1F\x61\x22\x53\x70\x6F\x6E\x73\x20\x61\x67\x65\x6E\x63\x79\x20" + "\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74" + "\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61" + "\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x22\x2D" + "\x2D\x44\x6F\x63\x2E\x20\x72\x65\x73\x75\x6D\x65\x2E\x1E\x20\x20" + "\x1F\x61\x22\x54\x68\x69\x73\x20\x64\x69\x72\x65\x63\x74\x6F\x72" + "\x79\x20\x77\x61\x73\x20\x64\x65\x76\x65\x6C\x6F\x70\x65\x64\x20" + "\x62\x79\x20\x74\x68\x65\x20\x54\x65\x63\x68\x6E\x6F\x6C\x6F\x67" + "\x79\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x4E\x61\x74\x69\x6F\x6E" + "\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74" + "\x77\x6F\x72\x6B\x20\x50\x72\x6F\x6A\x65\x63\x74\x2C\x20\x54\x65" + "\x61\x63\x68\x65\x72\x73\x20\x43\x6F\x6C\x6C\x65\x67\x65\x2C\x20" + "\x43\x6F\x6C\x75\x6D\x62\x69\x61\x20\x55\x6E\x69\x76\x65\x72\x73" + "\x69\x74\x79\x20\x70\x75\x72\x73\x75\x61\x6E\x74\x20\x74\x6F\x20" + "\x63\x6F\x6E\x74\x72\x61\x63\x74\x20\x6E\x75\x6D\x62\x65\x72\x20" + "\x4F\x45\x2D\x33\x30\x30\x2D\x38\x33\x2D\x30\x32\x35\x33\x2C\x20" + "\x55\x2E\x53\x2E\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" + "\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x22\x2D\x2D\x54" + "\x2E\x70\x2E\x20\x76\x65\x72\x73\x6F\x2E\x1E\x20\x20\x1F\x61\x44" + "\x69\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65" + "\x70\x6F\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69" + "\x65\x73\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65" + "\x2E\x1E\x20\x20\x1F\x61\x22\x44\x65\x63\x65\x6D\x62\x65\x72\x20" + "\x31\x39\x38\x34\x2E\x22\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75" + "\x64\x65\x73\x20\x69\x6E\x64\x65\x78\x65\x73\x2E\x1E\x31\x30\x1F" + "\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F" + "\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73" + "\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B\x1F\x78\x44\x69\x72" + "\x65\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x45\x64" + "\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x74\x65\x63\x68\x6E\x6F" + "\x6C\x6F\x67\x79\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" + "\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x46\x65\x64\x65\x72\x61\x6C" + "\x20\x61\x69\x64\x20\x74\x6F\x20\x65\x64\x75\x63\x61\x74\x69\x6F" + "\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" + "\x2E\x1E\x31\x30\x1F\x61\x57\x65\x62\x62\x2C\x20\x4D\x69\x63\x68" + "\x61\x65\x6C\x20\x42\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65" + "\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63" + "\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C" + "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D" + "\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2E\x1E\x1D" +},{ + "\x30\x31\x35\x35\x39\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x33\x37" + "\x33\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x30\x30" + "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x30" + "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x32\x30\x38\x36\x30" + "\x30\x32\x32\x30\x30\x31\x33\x31\x30\x38\x38\x30\x30\x31\x36\x30" + "\x30\x31\x35\x33\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x36\x39" + "\x31\x30\x30\x30\x30\x32\x32\x30\x30\x31\x37\x38\x32\x34\x35\x30" + "\x32\x35\x39\x30\x30\x32\x30\x30\x32\x36\x30\x30\x31\x30\x35\x30" + "\x30\x34\x35\x39\x33\x30\x30\x30\x30\x33\x33\x30\x30\x35\x36\x34" + "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x35\x39\x37\x35\x30\x30\x30" + "\x30\x31\x37\x30\x30\x36\x35\x32\x35\x30\x34\x30\x30\x34\x31\x30" + "\x30\x36\x36\x39\x35\x30\x30\x30\x30\x31\x38\x30\x30\x37\x31\x30" + "\x36\x35\x30\x30\x30\x34\x34\x30\x30\x37\x32\x38\x36\x35\x30\x30" + "\x30\x34\x34\x30\x30\x37\x37\x32\x36\x35\x30\x30\x30\x33\x37\x30" + "\x30\x38\x31\x36\x36\x35\x30\x30\x30\x35\x32\x30\x30\x38\x35\x33" + "\x36\x35\x30\x30\x30\x33\x37\x30\x30\x39\x30\x35\x37\x30\x30\x30" + "\x30\x34\x34\x30\x30\x39\x34\x32\x37\x30\x30\x30\x30\x32\x35\x30" + "\x30\x39\x38\x36\x37\x31\x30\x30\x30\x34\x38\x30\x31\x30\x31\x31" + "\x37\x31\x30\x30\x30\x33\x30\x30\x31\x30\x35\x39\x37\x31\x30\x30" + "\x30\x36\x38\x30\x31\x30\x38\x39\x37\x34\x30\x30\x30\x32\x38\x30" + "\x31\x31\x35\x37\x1E\x41\x43\x44\x2D\x32\x34\x37\x36\x1E\x39\x31" + "\x30\x34\x32\x35\x73\x31\x39\x38\x37\x20\x20\x20\x20\x64\x63\x75" + "\x61\x20\x20\x20\x20\x20\x62\x20\x20\x20\x66\x30\x30\x30\x31\x30" + "\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30\x35\x31\x39\x31" + "\x34\x34\x35\x35\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x36\x30" + "\x32\x33\x38\x39\x1E\x20\x20\x1F\x61\x45\x44\x20\x32\x38\x38\x35" + "\x32\x39\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75" + "\x73\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41\x2D" + "\x30\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20\x31" + "\x2E\x33\x31\x30\x2F\x32\x3A\x32\x38\x38\x35\x32\x39\x1E\x20\x20" + "\x1F\x61\x4C\x50\x20\x38\x37\x2D\x34\x30\x33\x20\x63\x1E\x20\x20" + "\x1F\x61\x44\x52\x55\x47\x1E\x31\x30\x1F\x61\x53\x65\x61\x67\x65" + "\x72\x2C\x20\x41\x6E\x64\x72\x65\x77\x20\x4A\x2E\x1E\x31\x30\x1F" + "\x61\x43\x68\x65\x63\x6B\x20\x74\x68\x69\x73\x20\x6F\x75\x74\x20" + "\x3A\x1F\x62\x6C\x69\x62\x72\x61\x72\x79\x20\x70\x72\x6F\x67\x72" + "\x61\x6D\x20\x6D\x6F\x64\x65\x6C\x73\x20\x2F\x1F\x63\x70\x72\x65" + "\x70\x61\x72\x65\x64\x20\x62\x79\x20\x41\x6E\x64\x72\x65\x77\x20" + "\x4A\x2E\x20\x53\x65\x61\x67\x65\x72\x2C\x20\x53\x61\x72\x61\x68" + "\x20\x4A\x2E\x20\x52\x6F\x62\x65\x72\x74\x73\x2C\x20\x43\x61\x72" + "\x6F\x6C\x20\x5A\x2E\x20\x4C\x69\x6E\x63\x6F\x6C\x6E\x20\x3B\x20" + "\x70\x72\x65\x70\x61\x72\x65\x64\x20\x66\x6F\x72\x20\x4E\x61\x74" + "\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20" + "\x4E\x65\x74\x77\x6F\x72\x6B\x20\x75\x6E\x64\x65\x72\x20\x63\x6F" + "\x6E\x74\x72\x61\x63\x74\x20\x74\x6F\x20\x52\x4D\x43\x20\x43\x6F" + "\x72\x70\x6F\x72\x61\x74\x69\x6F\x6E\x2C\x20\x63\x6F\x6E\x74\x72" + "\x61\x63\x74\x20\x33\x30\x30\x2D\x38\x34\x2D\x30\x32\x35\x31\x20" + "\x77\x69\x74\x68\x20\x74\x68\x65\x20\x55\x6E\x69\x74\x65\x64\x20" + "\x53\x74\x61\x74\x65\x73\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E" + "\x74\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2E\x1E" + "\x30\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20" + "\x44\x2E\x43\x2E\x20\x3A\x1F\x62\x4F\x66\x66\x69\x63\x65\x20\x6F" + "\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65" + "\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F" + "\x76\x65\x6D\x65\x6E\x74\x2C\x20\x55\x2E\x53\x2E\x20\x44\x65\x70" + "\x74\x2E\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C" + "\x1F\x63\x5B\x31\x39\x38\x37\x5D\x1E\x20\x20\x1F\x61\x69\x78\x2C" + "\x20\x33\x31\x39\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20" + "\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x44\x69" + "\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70" + "\x6F\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65" + "\x73\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E" + "\x1E\x20\x20\x1F\x61\x22\x4A\x75\x6C\x79\x20\x31\x39\x38\x37\x2E" + "\x22\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62" + "\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72" + "\x65\x66\x65\x72\x65\x6E\x63\x65\x73\x2E\x1E\x20\x20\x1F\x61\x22" + "\x4C\x50\x20\x38\x37\x2D\x34\x30\x33\x63\x2E\x22\x1E\x20\x30\x1F" + "\x61\x4C\x69\x62\x72\x61\x72\x69\x65\x73\x20\x61\x6E\x64\x20\x63" + "\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x1F\x7A\x55\x6E\x69\x74\x65\x64" + "\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C\x69\x62" + "\x72\x61\x72\x69\x65\x73\x20\x61\x6E\x64\x20\x65\x64\x75\x63\x61" + "\x74\x69\x6F\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" + "\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x53\x63\x68\x6F\x6F\x6C\x20" + "\x6C\x69\x62\x72\x61\x72\x69\x65\x73\x1F\x7A\x55\x6E\x69\x74\x65" + "\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x49\x6E" + "\x73\x74\x72\x75\x63\x74\x69\x6F\x6E\x61\x6C\x20\x6D\x61\x74\x65" + "\x72\x69\x61\x6C\x73\x20\x63\x65\x6E\x74\x65\x72\x73\x1F\x7A\x55" + "\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30" + "\x1F\x61\x50\x75\x62\x6C\x69\x63\x20\x6C\x69\x62\x72\x61\x72\x69" + "\x65\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65" + "\x73\x2E\x1E\x31\x30\x1F\x61\x52\x6F\x62\x65\x72\x74\x73\x2C\x20" + "\x53\x61\x72\x61\x68\x20\x4A\x2E\x1F\x71\x28\x53\x61\x72\x61\x68" + "\x20\x4A\x61\x6E\x65\x29\x2C\x1F\x64\x31\x39\x34\x36\x2D\x1E\x31" + "\x30\x1F\x61\x4C\x69\x6E\x63\x6F\x6C\x6E\x2C\x20\x43\x61\x72\x6F" + "\x6C\x20\x5A\x61\x6C\x6C\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74" + "\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4E\x61\x74\x69" + "\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E" + "\x65\x74\x77\x6F\x72\x6B\x2E\x1E\x32\x30\x1F\x61\x52\x4D\x43\x20" + "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x43\x6F\x72\x70\x6F\x72\x61" + "\x74\x69\x6F\x6E\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64" + "\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63\x65" + "\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20" + "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70" + "\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2E\x1E\x30\x31\x1F\x61\x4C\x69" + "\x62\x72\x61\x72\x79\x20\x70\x72\x6F\x67\x72\x61\x6D\x20\x6D\x6F" + "\x64\x65\x6C\x73\x2E\x1E\x1D" +},{ + "\x30\x31\x31\x35\x35\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x33\x31" + "\x33\x35\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x32\x37\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x30\x38\x30" + "\x30\x30\x39\x34\x30\x31\x32\x30\x30\x31\x32\x30\x30\x31\x30\x32" + "\x30\x34\x32\x30\x30\x30\x37\x30\x30\x31\x31\x34\x30\x35\x30\x30" + "\x30\x31\x35\x30\x30\x31\x32\x31\x30\x37\x34\x30\x30\x31\x31\x30" + "\x30\x31\x33\x36\x30\x38\x36\x30\x30\x32\x30\x30\x30\x31\x34\x37" + "\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x36\x37\x32\x31\x32\x30" + "\x30\x38\x33\x30\x30\x31\x37\x36\x32\x34\x35\x30\x30\x36\x39\x30" + "\x30\x32\x35\x39\x32\x36\x30\x30\x31\x31\x35\x30\x30\x33\x32\x38" + "\x32\x36\x35\x30\x30\x37\x31\x30\x30\x34\x34\x33\x33\x30\x30\x30" + "\x30\x31\x37\x30\x30\x35\x31\x34\x33\x31\x30\x30\x30\x31\x31\x30" + "\x30\x35\x33\x31\x35\x30\x30\x30\x30\x33\x32\x30\x30\x35\x34\x32" + "\x36\x31\x30\x30\x30\x33\x36\x30\x30\x35\x37\x34\x36\x35\x30\x30" + "\x30\x36\x32\x30\x30\x36\x31\x30\x36\x35\x30\x30\x30\x36\x34\x30" + "\x30\x36\x37\x32\x37\x31\x30\x30\x30\x32\x32\x30\x30\x37\x33\x36" + "\x37\x31\x30\x30\x30\x37\x30\x30\x30\x37\x35\x38\x39\x33\x36\x30" + "\x30\x31\x33\x30\x30\x38\x32\x38\x1E\x41\x43\x44\x2D\x32\x33\x37" + "\x36\x1E\x39\x31\x30\x32\x32\x35\x63\x31\x39\x75\x75\x39\x39\x39" + "\x39\x64\x63\x75\x61\x72\x20\x20\x20\x20\x20\x20\x20\x20\x66\x30" + "\x75\x75\x75\x20\x30\x65\x6E\x67\x20\x20\x1E\x31\x39\x39\x31\x30" + "\x35\x31\x39\x31\x34\x34\x35\x35\x31\x2E\x30\x1E\x20\x20\x1F\x61" + "\x20\x20\x20\x39\x31\x36\x35\x36\x30\x36\x30\x20\x1F\x6F\x32\x33" + "\x31\x35\x30\x38\x34\x37\x1E\x20\x20\x1F\x64\x47\x50\x4F\x1E\x20" + "\x20\x1F\x61\x32\x1F\x69\x39\x31\x30\x33\x1E\x20\x20\x1F\x61\x6C" + "\x63\x1E\x30\x30\x1F\x61\x49\x4E\x20\x50\x52\x4F\x43\x45\x53\x53" + "\x1E\x20\x20\x1F\x61\x30\x37\x38\x35\x2D\x48\x1E\x30\x20\x1F\x61" + "\x4C\x43\x20\x31\x2E\x34\x30\x2F\x32\x3A\x46\x20\x33\x31\x2F\x1E" + "\x20\x20\x1F\x61\x44\x52\x55\x47\x1E\x30\x20\x1F\x61\x46\x65\x64" + "\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61\x72\x79\x20\x61\x6E\x64" + "\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x4E\x65\x74" + "\x77\x6F\x72\x6B\x20\x73\x65\x72\x76\x69\x63\x65\x73\x20\x64\x69" + "\x72\x65\x63\x74\x6F\x72\x79\x20\x66\x6F\x72\x20\x66\x69\x73\x63" + "\x61\x6C\x20\x79\x65\x61\x72\x20\x2E\x2E\x2E\x1E\x30\x30\x1F\x61" + "\x46\x45\x44\x4C\x49\x4E\x4B\x20\x73\x65\x72\x76\x69\x63\x65\x73" + "\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79\x20\x66\x6F\x72\x20\x66" + "\x69\x73\x63\x61\x6C\x20\x79\x65\x61\x72\x20\x2E\x2E\x2E\x20\x2F" + "\x1F\x63\x46\x4C\x49\x43\x43\x2F\x46\x45\x44\x4C\x49\x4E\x4B\x2E" + "\x1E\x30\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C" + "\x20\x44\x2E\x43\x2E\x20\x3A\x1F\x62\x46\x65\x64\x65\x72\x61\x6C" + "\x20\x4C\x69\x62\x72\x61\x72\x79\x20\x61\x6E\x64\x20\x49\x6E\x66" + "\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B" + "\x2C\x20\x46\x65\x64\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61\x72" + "\x79\x20\x61\x6E\x64\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F" + "\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x43\x6F\x6D\x6D\x69\x74\x74" + "\x65\x65\x2C\x1E\x20\x20\x1F\x61\x46\x45\x44\x4C\x49\x4E\x4B\x2C" + "\x20\x52\x6F\x6F\x6D\x20\x4C\x41\x20\x31\x30\x32\x36\x43\x2C\x20" + "\x4C\x69\x62\x72\x61\x72\x79\x20\x6F\x66\x20\x43\x6F\x6E\x67\x72" + "\x65\x73\x73\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20" + "\x44\x2E\x43\x2E\x20\x32\x30\x35\x34\x30\x1E\x20\x20\x1F\x61\x76" + "\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" + "\x41\x6E\x6E\x75\x61\x6C\x1E\x20\x20\x1F\x61\x44\x65\x73\x63\x72" + "\x69\x70\x74\x69\x6F\x6E\x20\x62\x61\x73\x65\x64\x20\x6F\x6E\x3A" + "\x20\x31\x39\x39\x30\x2E\x1E\x32\x30\x1F\x61\x46\x45\x44\x4C\x49" + "\x4E\x4B\x20\x28\x4E\x65\x74\x77\x6F\x72\x6B\x29\x1F\x78\x44\x69" + "\x72\x65\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C" + "\x69\x62\x72\x61\x72\x79\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74\x69" + "\x6F\x6E\x20\x6E\x65\x74\x77\x6F\x72\x6B\x73\x1F\x7A\x55\x6E\x69" + "\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x1F\x78\x44\x69\x72\x65" + "\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C\x69\x62" + "\x72\x61\x72\x69\x65\x73\x2C\x20\x47\x6F\x76\x65\x72\x6E\x6D\x65" + "\x6E\x74\x61\x6C\x2C\x20\x61\x64\x6D\x69\x6E\x69\x73\x74\x72\x61" + "\x74\x69\x76\x65\x2C\x20\x65\x74\x63\x2E\x1F\x78\x50\x65\x72\x69" + "\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x32\x30\x1F\x61\x46\x45\x44" + "\x4C\x49\x4E\x4B\x20\x28\x4E\x65\x74\x77\x6F\x72\x6B\x29\x1E\x32" + "\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" + "\x2E\x1F\x62\x46\x65\x64\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61" + "\x72\x79\x20\x61\x6E\x64\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69" + "\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x43\x6F\x6D\x6D\x69\x74" + "\x74\x65\x65\x2E\x1E\x20\x20\x1F\x61\x31\x39\x39\x31\x20\x4C\x49" + "\x43\x1E\x1D" +},{ + "\x30\x30\x39\x31\x35\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" + "\x39\x4B\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x31\x33\x30" + "\x30\x30\x38\x30\x30\x33\x37\x30\x30\x32\x30\x30\x30\x30\x39\x33" + "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x33\x30\x38\x36\x30" + "\x30\x32\x32\x30\x30\x31\x33\x32\x30\x34\x39\x30\x30\x30\x39\x30" + "\x30\x31\x35\x34\x31\x30\x30\x30\x30\x31\x38\x30\x30\x31\x36\x33" + "\x32\x34\x35\x30\x31\x35\x37\x30\x30\x31\x38\x31\x32\x36\x30\x30" + "\x31\x32\x34\x30\x30\x33\x33\x38\x33\x30\x30\x30\x30\x30\x39\x30" + "\x30\x34\x36\x32\x35\x33\x33\x30\x30\x39\x33\x30\x30\x34\x37\x31" + "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x35\x36\x34\x36\x35\x30\x30" + "\x30\x31\x34\x30\x30\x36\x31\x39\x37\x31\x30\x30\x30\x35\x32\x30" + "\x30\x36\x33\x33\x1E\x41\x43\x44\x2D\x31\x39\x34\x39\x1E\x39\x31" + "\x30\x34\x31\x35\x72\x31\x39\x39\x30\x31\x30\x38\x37\x64\x63\x75" + "\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x66\x30\x30\x30\x31\x30" + "\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30\x34\x32\x31\x31" + "\x32\x32\x35\x34\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x34\x36" + "\x39\x32\x36\x31\x1E\x20\x20\x1F\x61\x47\x50\x4F\x1F\x63\x47\x50" + "\x4F\x1E\x20\x20\x1F\x61\x45\x44\x20\x32\x38\x36\x39\x39\x32\x1F" + "\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41" + "\x2D\x30\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20" + "\x31\x2E\x33\x31\x30\x2F\x32\x3A\x32\x38\x36\x39\x39\x32\x1E\x20" + "\x20\x1F\x61\x44\x52\x55\x47\x1E\x31\x30\x1F\x61\x50\x61\x75\x6C" + "\x75\x2C\x20\x4E\x61\x6E\x63\x79\x2E\x1E\x31\x30\x1F\x61\x44\x65" + "\x61\x6C\x69\x6E\x67\x20\x77\x69\x74\x68\x20\x64\x72\x6F\x70\x6F" + "\x75\x74\x73\x1F\x68\x6D\x69\x63\x72\x6F\x66\x6F\x72\x6D\x20\x3A" + "\x1F\x62\x74\x68\x65\x20\x75\x72\x62\x61\x6E\x20\x73\x75\x70\x65" + "\x72\x69\x6E\x74\x65\x6E\x64\x65\x6E\x74\x73\x27\x20\x63\x61\x6C" + "\x6C\x20\x74\x6F\x20\x61\x63\x74\x69\x6F\x6E\x20\x2F\x1F\x63\x62" + "\x79\x20\x74\x68\x65\x20\x4F\x45\x52\x49\x20\x55\x72\x62\x61\x6E" + "\x20\x53\x75\x70\x65\x72\x69\x6E\x74\x65\x6E\x64\x65\x6E\x74\x73" + "\x20\x4E\x65\x74\x77\x6F\x72\x6B\x20\x3B\x20\x4E\x61\x6E\x63\x79" + "\x20\x50\x61\x75\x6C\x75\x2C\x20\x77\x72\x69\x74\x65\x72\x2D\x65" + "\x64\x69\x74\x6F\x72\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x61\x73\x68" + "\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x5D\x2E\x20\x3A\x1F" + "\x62\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61" + "\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20" + "\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C" + "\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73" + "\x6F\x75\x72\x63\x65\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69" + "\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x2C\x1F\x63\x5B\x31\x39\x38" + "\x37\x5D\x1E\x20\x20\x1F\x61\x31\x20\x76\x2E\x1E\x20\x20\x1F\x61" + "\x4D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1F\x62\x5B\x57\x61" + "\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x3F\x5D" + "\x20\x3A\x1F\x63\x53\x75\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63" + "\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x2E\x50\x2E\x4F\x2E\x2C" + "\x1F\x64\x5B\x31\x39\x39\x30\x5D\x2E\x1F\x65\x31\x20\x6D\x69\x63" + "\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E\x20\x20\x1F\x61\x44\x69\x73" + "\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70\x6F" + "\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65\x73" + "\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E" + "\x20\x30\x1F\x61\x44\x72\x6F\x70\x6F\x75\x74\x73\x2E\x1E\x32\x30" + "\x1F\x61\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65" + "\x73\x6F\x75\x72\x63\x65\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74" + "\x69\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x28\x55\x2E\x53\x2E" + "\x29\x1E\x1D" +},{ + "\x30\x31\x30\x35\x33\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" + "\x37\x4B\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x30\x30" + "\x30\x30\x38\x30\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x30\x30" + "\x30\x38\x36\x30\x30\x32\x32\x30\x30\x31\x31\x39\x30\x34\x39\x30" + "\x30\x30\x39\x30\x30\x31\x34\x31\x32\x34\x35\x30\x31\x36\x33\x30" + "\x30\x31\x35\x30\x32\x36\x30\x30\x32\x35\x31\x30\x30\x33\x31\x33" + "\x33\x30\x30\x30\x30\x30\x39\x30\x30\x35\x36\x34\x35\x33\x33\x30" + "\x30\x39\x34\x30\x30\x35\x37\x33\x35\x30\x30\x30\x30\x35\x35\x30" + "\x30\x36\x36\x37\x36\x35\x30\x30\x30\x32\x34\x30\x30\x37\x32\x32" + "\x36\x35\x30\x30\x30\x33\x37\x30\x30\x37\x34\x36\x37\x31\x30\x30" + "\x30\x35\x32\x30\x30\x37\x38\x33\x1E\x41\x43\x44\x2D\x31\x39\x34" + "\x37\x1E\x39\x31\x30\x34\x31\x35\x72\x31\x39\x39\x30\x31\x39\x38" + "\x36\x64\x63\x75\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x66\x30" + "\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30" + "\x34\x32\x31\x31\x32\x32\x35\x34\x31\x2E\x30\x1E\x20\x20\x1F\x6F" + "\x32\x33\x34\x36\x39\x30\x39\x38\x1E\x20\x20\x1F\x61\x45\x44\x20" + "\x32\x38\x36\x33\x33\x33\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F" + "\x61\x30\x34\x36\x36\x2D\x41\x2D\x30\x33\x20\x28\x4D\x46\x29\x1E" + "\x30\x20\x1F\x61\x45\x44\x20\x31\x2E\x33\x31\x30\x2F\x32\x3A\x32" + "\x38\x36\x33\x33\x33\x1E\x20\x20\x1F\x61\x44\x52\x55\x47\x1E\x30" + "\x30\x1F\x61\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x64\x69\x73\x73" + "\x65\x6D\x69\x6E\x61\x74\x69\x6F\x6E\x20\x6D\x6F\x64\x65\x6C\x20" + "\x66\x6F\x72\x20\x74\x68\x65\x20\x49\x27\x4D\x20\x53\x50\x45\x43" + "\x49\x41\x4C\x20\x50\x72\x6F\x67\x72\x61\x6D\x20\x6F\x66\x20\x50" + "\x68\x79\x73\x69\x63\x61\x6C\x20\x45\x64\x75\x63\x61\x74\x69\x6F" + "\x6E\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x48\x61\x6E\x64\x69\x63" + "\x61\x70\x70\x65\x64\x2C\x20\x31\x39\x38\x33\x2D\x31\x39\x38\x36" + "\x1F\x68\x6D\x69\x63\x72\x6F\x66\x6F\x72\x6D\x20\x3A\x1F\x62\x66" + "\x69\x6E\x61\x6C\x20\x72\x65\x70\x6F\x72\x74\x2C\x20\x49\x27\x4D" + "\x20\x53\x50\x45\x43\x49\x41\x4C\x20\x6E\x65\x74\x77\x6F\x72\x6B" + "\x2E\x1E\x30\x20\x1F\x61\x54\x61\x6D\x70\x61\x2C\x20\x46\x6C\x61" + "\x2E\x20\x3A\x1F\x62\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" + "\x6F\x66\x20\x50\x68\x79\x73\x69\x63\x61\x6C\x20\x45\x64\x75\x63" + "\x61\x74\x69\x6F\x6E\x2C\x20\x43\x6F\x6C\x6C\x65\x67\x65\x20\x6F" + "\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20\x55\x6E\x69" + "\x76\x65\x72\x73\x69\x74\x79\x20\x6F\x66\x20\x53\x6F\x75\x74\x68" + "\x20\x46\x6C\x6F\x72\x69\x64\x61\x20\x3B\x1F\x61\x5B\x57\x61\x73" + "\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x5D\x20\x3A" + "\x1F\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20" + "\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20\x4F\x66\x66\x69\x63" + "\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C" + "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D" + "\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C\x20\x45\x64\x75\x63\x61" + "\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x6F\x75\x72\x63\x65\x73" + "\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x43\x65\x6E" + "\x74\x65\x72\x2C\x1F\x63\x5B\x31\x39\x38\x36\x5D\x1E\x20\x20\x1F" + "\x61\x31\x20\x76\x2E\x1E\x20\x20\x1F\x61\x4D\x69\x63\x72\x6F\x66" + "\x69\x63\x68\x65\x2E\x1F\x62\x5B\x57\x61\x73\x68\x69\x6E\x67\x74" + "\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x3F\x5D\x20\x3A\x1F\x63\x53\x75" + "\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63\x73\x2E\x2C\x20\x55\x2E" + "\x53\x2E\x20\x47\x2E\x50\x2E\x4F\x2E\x2C\x1F\x64\x5B\x31\x39\x39" + "\x30\x5D\x2E\x1F\x65\x32\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68" + "\x65\x73\x2E\x1E\x20\x20\x1F\x61\x44\x69\x73\x74\x72\x69\x62\x75" + "\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70\x6F\x73\x69\x74\x6F\x72" + "\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65\x73\x20\x69\x6E\x20\x6D" + "\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E\x20\x30\x1F\x61\x50" + "\x68\x79\x73\x69\x63\x61\x6C\x20\x65\x64\x75\x63\x61\x74\x69\x6F" + "\x6E\x2E\x1E\x20\x30\x1F\x61\x48\x61\x6E\x64\x69\x63\x61\x70\x70" + "\x65\x64\x20\x63\x68\x69\x6C\x64\x72\x65\x6E\x1F\x78\x45\x64\x75" + "\x63\x61\x74\x69\x6F\x6E\x2E\x1E\x32\x30\x1F\x61\x45\x64\x75\x63" + "\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x6F\x75\x72\x63\x65" + "\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x43\x65" + "\x6E\x74\x65\x72\x20\x28\x55\x2E\x53\x2E\x29\x1E\x1D" +},{ + "\x30\x31\x30\x33\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" + "\x39\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" + "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" + "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" + "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x31\x33\x30" + "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x33" + "\x30\x37\x34\x30\x30\x31\x34\x30\x30\x31\x30\x35\x30\x38\x36\x30" + "\x30\x31\x38\x30\x30\x31\x31\x39\x30\x38\x38\x30\x30\x31\x35\x30" + "\x30\x31\x33\x37\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x35\x32" + "\x32\x34\x35\x30\x30\x34\x35\x30\x30\x31\x36\x31\x32\x36\x30\x30" + "\x31\x30\x35\x30\x30\x32\x30\x36\x33\x30\x30\x30\x30\x34\x31\x30" + "\x30\x33\x31\x31\x35\x30\x30\x30\x30\x35\x35\x30\x30\x33\x35\x32" + "\x35\x30\x30\x30\x30\x33\x33\x30\x30\x34\x30\x37\x35\x30\x30\x30" + "\x30\x32\x38\x30\x30\x34\x34\x30\x35\x30\x30\x30\x30\x32\x36\x30" + "\x30\x34\x36\x38\x36\x31\x30\x30\x30\x34\x38\x30\x30\x34\x39\x34" + "\x36\x35\x30\x30\x30\x35\x35\x30\x30\x35\x34\x32\x36\x35\x30\x30" + "\x30\x34\x34\x30\x30\x35\x39\x37\x37\x31\x30\x30\x30\x36\x38\x30" + "\x30\x36\x34\x31\x37\x34\x30\x30\x30\x33\x37\x30\x30\x37\x30\x39" + "\x1E\x41\x43\x44\x2D\x31\x39\x33\x38\x1E\x39\x31\x30\x34\x31\x35" + "\x73\x31\x39\x39\x31\x20\x20\x20\x20\x64\x63\x75\x20\x20\x20\x20" + "\x20\x20\x20\x20\x20\x20\x66\x30\x30\x30\x30\x30\x20\x65\x6E\x67" + "\x20\x64\x1E\x31\x39\x39\x31\x30\x34\x32\x31\x31\x32\x32\x35\x34" + "\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x34\x36\x38\x32\x37\x32" + "\x1E\x20\x20\x1F\x61\x47\x50\x4F\x1F\x63\x47\x50\x4F\x1E\x20\x20" + "\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34" + "\x36\x31\x2D\x44\x2D\x30\x35\x1E\x30\x20\x1F\x61\x45\x44\x20\x31" + "\x2E\x33\x30\x32\x3A\x53\x68\x20\x32\x1E\x20\x20\x1F\x61\x50\x49" + "\x50\x20\x39\x31\x2D\x38\x33\x36\x1E\x20\x20\x1F\x61\x44\x52\x55" + "\x47\x1E\x30\x30\x1F\x61\x4E\x44\x4E\x2C\x20\x73\x68\x61\x72\x69" + "\x6E\x67\x20\x73\x75\x63\x63\x65\x73\x73\x20\x74\x6F\x20\x69\x6D" + "\x70\x72\x6F\x76\x65\x20\x73\x63\x68\x6F\x6F\x6C\x73\x2E\x1E\x30" + "\x20\x1F\x61\x5B\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20" + "\x44\x43\x5D\x20\x3A\x1F\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74" + "\x2E\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20" + "\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74" + "\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61" + "\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C\x1F" + "\x63\x5B\x31\x39\x39\x31\x5D\x1E\x20\x20\x1F\x61\x31\x20\x66\x6F" + "\x6C\x64\x65\x64\x20\x73\x68\x65\x65\x74\x20\x28\x36\x20\x70\x2E" + "\x29\x20\x3B\x1F\x63\x32\x32\x20\x78\x20\x31\x30\x20\x63\x6D\x2E" + "\x1E\x20\x20\x1F\x61\x41\x74\x20\x68\x65\x61\x64\x20\x6F\x66\x20" + "\x74\x69\x74\x6C\x65\x3A\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20" + "\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72" + "\x6B\x2C\x20\x4E\x44\x4E\x2E\x1E\x20\x20\x1F\x61\x53\x68\x69\x70" + "\x70\x69\x6E\x67\x20\x6C\x69\x73\x74\x20\x6E\x6F\x2E\x3A\x20\x39" + "\x31\x2D\x31\x39\x38\x2D\x50\x2E\x1E\x20\x20\x1F\x61\x22\x4A\x61" + "\x6E\x75\x61\x72\x79\x20\x31\x39\x39\x31\x22\x2D\x2D\x50\x2E\x20" + "\x5B\x35\x5D\x2E\x1E\x20\x20\x1F\x61\x22\x50\x49\x50\x20\x39\x31" + "\x2D\x38\x33\x36\x22\x2D\x2D\x50\x2E\x20\x5B\x35\x5D\x2E\x1E\x31" + "\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" + "\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66" + "\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B\x2E\x1E\x20" + "\x30\x1F\x61\x44\x65\x6D\x6F\x6E\x73\x74\x72\x61\x74\x69\x6F\x6E" + "\x20\x63\x65\x6E\x74\x65\x72\x73\x20\x69\x6E\x20\x65\x64\x75\x63" + "\x61\x74\x69\x6F\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74" + "\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x45\x64\x75\x63\x61\x74" + "\x69\x6F\x6E\x61\x6C\x20\x69\x6E\x6E\x6F\x76\x61\x74\x69\x6F\x6E" + "\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" + "\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" + "\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20" + "\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65" + "\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65" + "\x6D\x65\x6E\x74\x2E\x1E\x30\x31\x1F\x61\x4E\x61\x74\x69\x6F\x6E" + "\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74" + "\x77\x6F\x72\x6B\x2C\x20\x4E\x44\x4E\x2E\x1E\x1D" +}}; + +const char *Yaz_USMARC::get_record(int position) +{ + int max = sizeof(marc_records) / sizeof(*marc_records); + int eff_pos = (position-1) % max; + return marc_records[eff_pos]; +} diff --git a/src/yaz-my-client.cpp b/src/yaz-my-client.cpp new file mode 100644 index 0000000..94ed951 --- /dev/null +++ b/src/yaz-my-client.cpp @@ -0,0 +1,726 @@ +/* + * Copyright (c) 1998-2000, Index Data. + * See the file LICENSE for details. + * + * $Log: yaz-my-client.cpp,v $ + * Revision 1.1 2001-03-27 14:47:45 adam + * New server facility scheme. + * + * Revision 1.17 2001/03/26 14:43:49 adam + * New threaded PDU association. + * + * Revision 1.16 2000/11/01 14:22:59 adam + * Added fd parameter for method IYaz_PDU_Observer::clone. + * + * Revision 1.15 2000/10/11 11:58:16 adam + * Moved header files to include/yaz++. Switched to libtool and automake. + * Configure script creates yaz++-config script. + * + * Revision 1.14 2000/09/08 10:23:42 adam + * Added skeleton of yaz-z-server. + * + * Revision 1.13 2000/09/06 14:23:45 adam + * WIN32 updates. + * + * Revision 1.12 2000/09/04 08:59:16 adam + * Changed call to logging functions (yaz_ added). + * + * Revision 1.11 2000/07/04 13:48:49 adam + * Implemented upper-limit on proxy-to-target sessions. + * + * Revision 1.10 2000/05/30 03:12:27 ian + * minor change to stop g++ 2.95.2 complaining about taking the address + * of a member function. + * + * Revision 1.9 1999/12/06 13:52:45 adam + * Modified for new location of YAZ header files. Experimental threaded + * operation. + * + * Revision 1.8 1999/11/10 10:02:34 adam + * Work on proxy. + * + * Revision 1.7 1999/04/21 12:09:01 adam + * Many improvements. Modified to proxy server to work with "sessions" + * based on cookies. + * + * Revision 1.6 1999/04/20 10:30:05 adam + * Implemented various stuff for client and proxy. Updated calls + * to ODR to reflect new name parameter. + * + * Revision 1.5 1999/04/09 11:46:57 adam + * Added object Yaz_Z_Assoc. Much more functional client. + * + * Revision 1.4 1999/03/23 14:17:57 adam + * More work on timeout handling. Work on yaz-client. + * + * Revision 1.3 1999/02/02 14:01:18 adam + * First WIN32 port of YAZ++. + * + * Revision 1.2 1999/01/28 13:08:42 adam + * Yaz_PDU_Assoc better encapsulated. Memory leak fix in + * yaz-socket-manager.cc. + * + * Revision 1.1.1.1 1999/01/28 09:41:07 adam + * First implementation of YAZ++. + * + */ + +#include +#include +#include +#include +#include +#include + +extern "C" { +#if HAVE_READLINE_READLINE_H +#include +#endif +#if HAVE_READLINE_HISTORY_H +#include +#endif +} + +class YAZ_EXPORT MyClient : public Yaz_IR_Assoc { +private: + int m_interactive_flag; + char m_thisCommand[1024]; + char m_lastCommand[1024]; + int m_setOffset; + Yaz_SocketManager *m_socketManager; +public: + MyClient(IYaz_PDU_Observable *the_PDU_Observable, + Yaz_SocketManager *the_SocketManager); + IYaz_PDU_Observer *sessionNotify( + IYaz_PDU_Observable *the_PDU_Observable, int fd); + int args(Yaz_SocketManager *socketManager, int argc, char **argv); + int interactive(Yaz_SocketManager *socketManager); + int wait(); + void recv_initResponse(Z_InitResponse *initResponse); + void recv_searchResponse(Z_SearchResponse *searchResponse); + void recv_presentResponse(Z_PresentResponse *presentResponse); + void recv_records (Z_Records *records); + void recv_diagrecs(Z_DiagRec **pp, int num); + void recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset); + void recv_record(Z_DatabaseRecord *record, int offset, + const char *databaseName); + void recv_textRecord(int type, const char *buf, size_t len); + void recv_genericRecord(Z_GenericRecord *r); + void display_genericRecord(Z_GenericRecord *r, int level); + void display_variant(Z_Variant *v, int level); + void connectNotify(); + void failNotify(); + void timeoutNotify(); + char *get_cookie (Z_OtherInformation **oi); + int processCommand(const char *cmd); + const char *MyClient::getCommand(); + int cmd_open(char *host); + int cmd_connect(char *host); + int cmd_quit(char *args); + int cmd_close(char *args); + int cmd_find(char *args); + int cmd_show(char *args); + int cmd_cookie(char *args); + int cmd_init(char *args); + int cmd_format(char *args); + int cmd_proxy(char *args); +}; + + +void MyClient::connectNotify() +{ + printf ("Connection accepted by target\n"); + set_lastReceived(-1); +} + +void MyClient::timeoutNotify() +{ + printf ("Connection timeout\n"); + close(); +} + +void MyClient::failNotify() +{ + printf ("Connection closed by target\n"); + set_lastReceived(-1); +} + +IYaz_PDU_Observer *MyClient::sessionNotify( + IYaz_PDU_Observable *the_PDU_Observable, int fd) +{ + return new MyClient(the_PDU_Observable, m_socketManager); +} + +MyClient::MyClient(IYaz_PDU_Observable *the_PDU_Observable, + Yaz_SocketManager *the_socketManager) : + Yaz_IR_Assoc (the_PDU_Observable) +{ + m_setOffset = 1; + m_interactive_flag = 1; + m_thisCommand[0] = '\0'; + m_lastCommand[0] = '\0'; + m_socketManager = the_socketManager; +} + +void usage(char *prog) +{ + fprintf (stderr, "%s: [-v log] [-c cookie] [-p proxy] [zurl]\n", prog); + exit (1); +} + +char *MyClient::get_cookie(Z_OtherInformation **otherInfo) +{ + int oid[OID_SIZE]; + Z_OtherInformationUnit *oi; + struct oident ent; + ent.proto = PROTO_Z3950; + ent.oclass = CLASS_USERINFO; + ent.value = (oid_value) VAL_COOKIE; + + if (oid_ent_to_oid (&ent, oid) && + (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) && + oi->which == Z_OtherInfo_characterInfo) + return oi->information.characterInfo; + return 0; +} + +void MyClient::recv_initResponse(Z_InitResponse *initResponse) +{ + printf ("Got InitResponse. Status "); + if (*initResponse->result) + { + printf ("Ok\n"); + + const char *p = get_cookie (&initResponse->otherInfo); + if (p) + { + printf ("cookie = %s\n", p); + set_cookie(p); + } + } + else + printf ("Fail\n"); +} + +void MyClient::recv_diagrecs(Z_DiagRec **pp, int num) +{ + int i; + oident *ent; + Z_DefaultDiagFormat *r; + + printf("Diagnostic message(s) from database:\n"); + for (i = 0; iwhich != Z_DiagRec_defaultFormat) + { + printf("Diagnostic record not in default format.\n"); + return; + } + else + r = p->u.defaultFormat; + if (!(ent = oid_getentbyoid(r->diagnosticSetId)) || + ent->oclass != CLASS_DIAGSET || ent->value != VAL_BIB1) + printf("Missing or unknown diagset\n"); + printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition)); +#ifdef ASN_COMPILED + switch (r->which) + { + case Z_DefaultDiagFormat_v2Addinfo: + printf (" -- v2 addinfo '%s'\n", r->u.v2Addinfo); + break; + case Z_DefaultDiagFormat_v3Addinfo: + printf (" -- v3 addinfo '%s'\n", r->u.v3Addinfo); + break; + } +#else + if (r->addinfo && *r->addinfo) + printf(" -- '%s'\n", r->addinfo); + else + printf("\n"); +#endif + } +} + +void MyClient::recv_textRecord(int type, const char *buf, size_t len) +{ + fwrite (buf, 1, len, stdout); + fputc ('\n', stdout); +} + +void MyClient::display_variant(Z_Variant *v, int level) +{ + int i; + + for (i = 0; i < v->num_triples; i++) + { + printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass, + *v->triples[i]->type); + if (v->triples[i]->which == Z_Triple_internationalString) + printf(",value=%s\n", v->triples[i]->value.internationalString); + else + printf("\n"); + } +} + +void MyClient::display_genericRecord(Z_GenericRecord *r, int level) +{ + int i; + + if (!r) + return; + for (i = 0; i < r->num_elements; i++) + { + Z_TaggedElement *t; + + printf("%*s", level * 4, ""); + t = r->elements[i]; + printf("("); + if (t->tagType) + printf("%d,", *t->tagType); + else + printf("?,"); + if (t->tagValue->which == Z_StringOrNumeric_numeric) + printf("%d) ", *t->tagValue->u.numeric); + else + printf("%s) ", t->tagValue->u.string); + if (t->content->which == Z_ElementData_subtree) + { + printf("\n"); + display_genericRecord(t->content->u.subtree, level+1); + } + else if (t->content->which == Z_ElementData_string) + printf("%s\n", t->content->u.string); + else if (t->content->which == Z_ElementData_numeric) + printf("%d\n", *t->content->u.numeric); + else if (t->content->which == Z_ElementData_oid) + { + int *ip = t->content->u.oid; + oident *oent; + + if ((oent = oid_getentbyoid(t->content->u.oid))) + printf("OID: %s\n", oent->desc); + else + { + printf("{"); + while (ip && *ip >= 0) + printf(" %d", *(ip++)); + printf(" }\n"); + } + } + else if (t->content->which == Z_ElementData_noDataRequested) + printf("[No data requested]\n"); + else if (t->content->which == Z_ElementData_elementEmpty) + printf("[Element empty]\n"); + else if (t->content->which == Z_ElementData_elementNotThere) + printf("[Element not there]\n"); + else + printf("??????\n"); + if (t->appliedVariant) + display_variant(t->appliedVariant, level+1); + if (t->metaData && t->metaData->supportedVariants) + { + int c; + + printf("%*s---- variant list\n", (level+1)*4, ""); + for (c = 0; c < t->metaData->num_supportedVariants; c++) + { + printf("%*svariant #%d\n", (level+1)*4, "", c); + display_variant(t->metaData->supportedVariants[c], level + 2); + } + } + } +} + +void MyClient::recv_genericRecord(Z_GenericRecord *r) +{ + display_genericRecord(r, 0); +} + +void MyClient::recv_record(Z_DatabaseRecord *record, int offset, + const char *databaseName) +{ + Z_External *r = (Z_External*) record; + oident *ent = oid_getentbyoid(r->direct_reference); + + /* + * Tell the user what we got. + */ + if (r->direct_reference) + { + printf("Record type: "); + if (ent) + printf("%s\n", ent->desc); + } + /* Check if this is a known, ASN.1 type tucked away in an octet string */ + Z_ext_typeent *etype = z_ext_getentbyref(ent->value); + if (ent && (r->which == Z_External_octet || r->which == Z_External_single) + && (etype = z_ext_getentbyref(ent->value))) + + { + void *rr; + /* + * Call the given decoder to process the record. + */ + odr_setbuf(odr_decode(), (char*)record->u.octet_aligned->buf, + record->u.octet_aligned->len, 0); + if (!(*etype->fun)(odr_decode(), (char **)&rr, 0, 0)) + { + odr_perror(odr_decode(), "Decoding constructed record."); + fprintf(stderr, "[Near %d]\n", odr_offset(odr_decode())); + fprintf(stderr, "Packet dump:\n---------\n"); + odr_dumpBER(stderr, (char*)record->u.octet_aligned->buf, + record->u.octet_aligned->len); + fprintf(stderr, "---------\n"); + } + if (etype->what == Z_External_sutrs) + { + Z_SUTRS *sutrs = (Z_SUTRS *) rr; + recv_textRecord ((int) VAL_SUTRS, (const char *) sutrs->buf, + (size_t) sutrs->len); + } + return; + } + if (r->which == Z_External_octet && record->u.octet_aligned->len) + { + recv_textRecord((int) ent->value, + (const char *) record->u.octet_aligned->buf, + (size_t) record->u.octet_aligned->len); + } + else if (ent && ent->value == VAL_SUTRS && r->which == Z_External_sutrs) + recv_textRecord((int) VAL_SUTRS, (const char *) r->u.sutrs->buf, + (size_t) r->u.sutrs->len); + else if (ent && ent->value == VAL_GRS1 && r->which == Z_External_grs1) + recv_genericRecord(r->u.grs1); + else + { + printf("Unknown record representation.\n"); + if (!z_External(odr_print(), &r, 0, 0)) + { + odr_perror(odr_print(), "Printing external"); + odr_reset(odr_print()); + } + } +} + +void MyClient::recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset) +{ + if (zpr->databaseName) + printf("[%s]", zpr->databaseName); + if (zpr->which == Z_NamePlusRecord_surrogateDiagnostic) + recv_diagrecs(&zpr->u.surrogateDiagnostic, 1); + else + recv_record(zpr->u.databaseRecord, offset, zpr->databaseName); +} + +void MyClient::recv_records (Z_Records *records) +{ +#ifdef ASN_COMPILED + Z_DiagRec dr, *dr_p = &dr; +#endif + if (!records) + return; + int i; + switch (records->which) + { + case Z_Records_DBOSD: + for (i = 0; i < records->u.databaseOrSurDiagnostics->num_records; i++) + recv_namePlusRecord(records->u.databaseOrSurDiagnostics-> + records[i], i + m_setOffset); + m_setOffset += records->u.databaseOrSurDiagnostics->num_records; + break; + case Z_Records_NSD: +#ifdef ASN_COMPILED + dr.which = Z_DiagRec_defaultFormat; + dr.u.defaultFormat = records->u.nonSurrogateDiagnostic; + recv_diagrecs (&dr_p, 1); +#else + recv_diagrecs (&records->u.nonSurrogateDiagnostic, 1); +#endif + break; + case Z_Records_multipleNSD: + recv_diagrecs (records->u.multipleNonSurDiagnostics->diagRecs, + records->u.multipleNonSurDiagnostics->num_diagRecs); + break; + } +} + +void MyClient::recv_searchResponse(Z_SearchResponse *searchResponse) +{ + printf ("Got SearchResponse. Status "); + if (!*searchResponse->searchStatus) + { + printf ("Fail\n"); + return; + } + printf ("Ok\n"); + printf ("Hits: %d\n", *searchResponse->resultCount); + recv_records (searchResponse->records); +} + +void MyClient::recv_presentResponse(Z_PresentResponse *presentResponse) +{ + printf ("Got PresentResponse\n"); + recv_records (presentResponse->records); +} + +int MyClient::wait() +{ + set_lastReceived(0); + while (m_socketManager->processEvent() > 0) + { + if (get_lastReceived()) + return 1; + } + return 0; +} + +#define C_PROMPT "Z>" + +int MyClient::cmd_connect(char *host) +{ + client (host); + timeout (10); + wait (); + timeout (0); + return 1; +} + +int MyClient::cmd_open(char *host) +{ + client (host); + timeout (10); + wait (); + timeout (0); + send_initRequest(); + wait (); + return 1; +} + +int MyClient::cmd_init(char *args) +{ + if (send_initRequest() >= 0) + wait(); + else + close(); + return 1; +} + +int MyClient::cmd_quit(char *args) +{ + return 0; +} + +int MyClient::cmd_close(char *args) +{ + close(); + return 1; +} + +int MyClient::cmd_find(char *args) +{ + Yaz_Z_Query query; + + if (query.set_rpn(args) <= 0) + { + printf ("Bad RPN query\n"); + return 1; + } + if (send_searchRequest(&query) >= 0) + wait(); + else + printf ("Not connected\n"); + return 1; +} + +int MyClient::cmd_show(char *args) +{ + int start = m_setOffset, number = 1; + + sscanf (args, "%d %d", &start, &number); + m_setOffset = start; + if (send_presentRequest(start, number) >= 0) + wait(); + else + printf ("Not connected\n"); + return 1; +} + +int MyClient::cmd_cookie(char *args) +{ + set_cookie(*args ? args : 0); + return 1; +} + +int MyClient::cmd_format(char *args) +{ + set_preferredRecordSyntax(args); + return 1; +} + +int MyClient::cmd_proxy(char *args) +{ + set_proxy(args); + return 1; +} + +int MyClient::processCommand(const char *commandLine) +{ + char cmdStr[1024], cmdArgs[1024]; + cmdArgs[0] = '\0'; + cmdStr[0] = '\0'; + static struct { + char *cmd; + int (MyClient::*fun)(char *arg); + char *ad; + } cmd[] = { + {"open", &MyClient::cmd_open, "[':'][/]"}, + {"connect", &MyClient::cmd_connect, "[':'][/]"}, + {"quit", &MyClient::cmd_quit, ""}, + {"close", &MyClient::cmd_close, ""}, + {"find", &MyClient::cmd_find, ""}, + {"show", &MyClient::cmd_show, "[ []]"}, + {"cookie", &MyClient::cmd_cookie, ""}, + {"init", &MyClient::cmd_init, ""}, + {"format", &MyClient::cmd_format, ""}, + {"proxy", &MyClient::cmd_proxy, ":[':']"}, + {0,0,0} + }; + + if (sscanf(commandLine, "%s %[^;]", cmdStr, cmdArgs) < 1) + return 1; + int i; + for (i = 0; cmd[i].cmd; i++) + if (!strncmp(cmd[i].cmd, cmdStr, strlen(cmdStr))) + break; + + int res = 1; + if (cmd[i].cmd) // Invoke command handler + res = (this->*cmd[i].fun)(cmdArgs); + else // Dump help screen + { + printf("Unknown command: %s.\n", cmdStr); + printf("Currently recognized commands:\n"); + for (i = 0; cmd[i].cmd; i++) + printf(" %s %s\n", cmd[i].cmd, cmd[i].ad); + } + return res; +} + +const char *MyClient::getCommand() +{ +#if HAVE_READLINE_READLINE_H + // Read using GNU readline + char *line_in; + line_in=readline(C_PROMPT); + if (!line_in) + return 0; +#if HAVE_READLINE_HISTORY_H + if (*line_in) + add_history(line_in); +#endif + strncpy(m_thisCommand,line_in, 1023); + m_thisCommand[1023] = '\0'; + free (line_in); +#else + // Read using fgets(3) + printf (C_PROMPT); + fflush(stdout); + if (!fgets(m_thisCommand, 1023, stdin)) + return 0; +#endif + // Remove trailing whitespace + char *cp = m_thisCommand + strlen(m_thisCommand); + while (cp != m_thisCommand && strchr("\t \n", cp[-1])) + cp--; + *cp = '\0'; + cp = m_thisCommand; + // Remove leading spaces... + while (*cp && strchr ("\t \n", *cp)) + cp++; + // Save command if non-empty + if (*cp != '\0') + strcpy (m_lastCommand, cp); + return m_lastCommand; +} + +int MyClient::interactive(Yaz_SocketManager *socketManager) +{ + const char *cmd; + if (!m_interactive_flag) + return 0; + while ((cmd = getCommand())) + { + if (!processCommand(cmd)) + break; + } + return 0; +} + +int MyClient::args(Yaz_SocketManager *socketManager, int argc, char **argv) +{ + char *host = 0; + char *proxy = 0; + char *arg; + char *prog = argv[0]; + int ret; + + while ((ret = options("c:p:v:q", argv, argc, &arg)) != -2) + { + switch (ret) + { + case 0: + if (host) + { + usage(prog); + return 1; + } + host = arg; + break; + case 'p': + if (proxy) + { + usage(prog); + return 1; + } + set_proxy(arg); + break; + case 'c': + set_cookie(arg); + break; + case 'v': + yaz_log_init_level (yaz_log_mask_str(arg)); + break; + case 'q': + m_interactive_flag = 0; + break; + default: + usage(prog); + return 1; + } + } + if (host) + { + client (host); + timeout (10); + wait (); + timeout (0); + send_initRequest(); + wait (); + } + return 0; +} + +int main(int argc, char **argv) +{ + Yaz_SocketManager mySocketManager; + Yaz_PDU_Assoc *some = new Yaz_PDU_Assoc(&mySocketManager); + + MyClient z(some, &mySocketManager); + + if (z.args(&mySocketManager, argc, argv)) + exit (1); + if (z.interactive(&mySocketManager)) + exit (1); + return 0; +} diff --git a/src/yaz-my-server.cpp b/src/yaz-my-server.cpp new file mode 100644 index 0000000..c7c92f4 --- /dev/null +++ b/src/yaz-my-server.cpp @@ -0,0 +1,254 @@ +/* + * Copyright (c) 1998-2001, Index Data. + * See the file LICENSE for details. + * + * $Log: yaz-my-server.cpp,v $ + * Revision 1.1 2001-03-27 14:47:45 adam + * New server facility scheme. + * + * Revision 1.15 2001/03/26 14:43:49 adam + * New threaded PDU association. + * + * Revision 1.14 2000/11/01 14:22:59 adam + * Added fd parameter for method IYaz_PDU_Observer::clone. + * + * Revision 1.13 2000/10/11 11:58:16 adam + * Moved header files to include/yaz++. Switched to libtool and automake. + * Configure script creates yaz++-config script. + * + * Revision 1.12 2000/09/21 21:43:20 adam + * Better high-level server API. + * + * Revision 1.11 2000/09/12 16:23:49 adam + * Updated server example. + * + * Revision 1.10 2000/09/12 16:04:17 adam + * Added comstack method for Yaz_PDU_Assoc.. + * + * Revision 1.9 2000/09/12 12:09:53 adam + * More work on high-level server. + * + * Revision 1.8 2000/09/08 10:23:42 adam + * Added skeleton of yaz-z-server. + * + * Revision 1.7 1999/12/06 13:52:45 adam + * Modified for new location of YAZ header files. Experimental threaded + * operation. + * + * Revision 1.6 1999/04/21 12:09:01 adam + * Many improvements. Modified to proxy server to work with "sessions" + * based on cookies. + * + * Revision 1.5 1999/04/09 11:46:57 adam + * Added object Yaz_Z_Assoc. Much more functional client. + * + * Revision 1.4 1999/03/23 14:17:57 adam + * More work on timeout handling. Work on yaz-client. + * + * Revision 1.3 1999/02/02 14:01:22 adam + * First WIN32 port of YAZ++. + * + * Revision 1.2 1999/01/28 13:08:47 adam + * Yaz_PDU_Assoc better encapsulated. Memory leak fix in + * yaz-socket-manager.cc. + * + * Revision 1.1.1.1 1999/01/28 09:41:07 adam + * First implementation of YAZ++. + * + */ + +#include +#include +#include +#include +#include + +class MyILL : public Yaz_Facility_ILL { +public: + int ill_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse); +}; + +class MyRetrieval : public Yaz_Facility_Retrieval, Yaz_USMARC { +public: + int sr_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse); + void sr_search (Z_SearchRequest *searchRequest, + Z_SearchResponse *searchResponse); + void sr_present (Z_PresentRequest *presentRequest, + Z_PresentResponse *presentResponse); + void sr_record (const char *resultSetName, + int position, + int *format, + Z_RecordComposition *comp, + Z_NamePlusRecord *namePlusRecord, + Z_Records *records); +}; + +class MyServer : public Yaz_Z_Server { +public: + MyServer(IYaz_PDU_Observable *the_PDU_Observable); + IYaz_PDU_Observer* sessionNotify(IYaz_PDU_Observable *the_PDU_Observable, + int fd); + void failNotify(); + void timeoutNotify(); + void connectNotify(); + +private: + int m_no; +}; + +int MyILL::ill_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) +{ + yaz_log (LOG_LOG, "MyILL::ill_init"); + return 1; +} + +int MyRetrieval::sr_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) +{ + yaz_log (LOG_LOG, "MyServer::sr_init"); + return 1; +} + +void MyRetrieval::sr_search (Z_SearchRequest *searchRequest, + Z_SearchResponse *searchResponse) +{ + yaz_log (LOG_LOG, "MyServer::recv_Z_search"); + if (searchRequest->query->which == Z_Query_type_1) + { + Z_RPNStructure *s = searchRequest->query->u.type_1->RPNStructure; + if (s->which == Z_RPNStructure_simple && + s->u.simple->which == Z_Operand_APT && + s->u.simple->u.attributesPlusTerm->term->which == Z_Term_general) + { + Odr_oct *term = s->u.simple->u.attributesPlusTerm->term->u.general; + char *str = (char *) odr_malloc (odr_encode(), term->len+1); + if (term->len) + memcpy (str, term->buf, term->len); + str[term->len] = '\0'; + *searchResponse->resultCount = atoi(str); + } + } +} + +void MyRetrieval::sr_present (Z_PresentRequest *presentRequest, + Z_PresentResponse *presentResponse) +{ + yaz_log (LOG_LOG, "MyServer::recv_Z_present"); +} + +void MyRetrieval::sr_record (const char *resultSetName, + int position, + int *format, + Z_RecordComposition *comp, + Z_NamePlusRecord *namePlusRecord, + Z_Records *records) +{ + yaz_log (LOG_LOG, "MyServer::recv_Z_record"); + const char *rec = get_record(position); + create_databaseRecord (namePlusRecord, 0, VAL_USMARC, rec, + strlen(rec)); +} + +IYaz_PDU_Observer *MyServer::sessionNotify( + IYaz_PDU_Observable *the_PDU_Observable, int fd) +{ + MyServer *new_server; + MyRetrieval *new_ret = new MyRetrieval; + MyILL *new_ill = new MyILL; + m_no++; + new_server = new MyServer(the_PDU_Observable); + new_server->timeout(900); + new_server->facility_add(new_ret, "my sr"); + new_server->facility_add(new_ill, "my ill"); + + new_server->set_APDU_log(get_APDU_log()); + + return new_server; +} + +MyServer::MyServer(IYaz_PDU_Observable *the_PDU_Observable) : + Yaz_Z_Server (the_PDU_Observable) +{ + m_no = 0; +} + +void MyServer::timeoutNotify() +{ + yaz_log (LOG_LOG, "connection timed out"); + delete this; +} + +void MyServer::failNotify() +{ + yaz_log (LOG_LOG, "connection closed by client"); + delete this; +} + +void MyServer::connectNotify() +{ +} + + +void usage(char *prog) +{ + fprintf (stderr, "%s: [-a log] [-v level] [-T] @:port\n", prog); + exit (1); +} + +int main(int argc, char **argv) +{ + int thread_flag = 0; + char *arg; + char *prog = *argv; + char *addr = "tcp:@:9999"; + char *apdu_log = 0; + + Yaz_SocketManager mySocketManager; + + Yaz_PDU_Assoc *my_PDU_Assoc = 0; + + MyServer *z = 0; + int ret; + + while ((ret = options("a:v:T", argv, argc, &arg)) != -2) + { + switch (ret) + { + case 0: + addr = xstrdup(arg); + break; + case 'a': + apdu_log = xstrdup(arg); + break; + case 'v': + yaz_log_init_level (yaz_log_mask_str(arg)); + break; + case 'T': + thread_flag = 1; + break; + default: + usage(prog); + return 1; + } + } + if (thread_flag) + my_PDU_Assoc = new Yaz_PDU_AssocThread(&mySocketManager); + else + my_PDU_Assoc = new Yaz_PDU_Assoc(&mySocketManager); + + z = new MyServer(my_PDU_Assoc); + z->server(addr); + if (apdu_log) + { + yaz_log (LOG_LOG, "set_APDU_log %s", apdu_log); + z->set_APDU_log(apdu_log); + } + + while (mySocketManager.processEvent() > 0) + ; + delete z; + return 0; +} diff --git a/src/yaz-pdu-assoc-thread.cpp b/src/yaz-pdu-assoc-thread.cpp index 5f7a20e..01078d5 100644 --- a/src/yaz-pdu-assoc-thread.cpp +++ b/src/yaz-pdu-assoc-thread.cpp @@ -3,22 +3,29 @@ * See the file LICENSE for details. * * $Log: yaz-pdu-assoc-thread.cpp,v $ - * Revision 1.1 2001-03-26 14:43:49 adam + * Revision 1.2 2001-03-27 14:47:45 adam + * New server facility scheme. + * + * Revision 1.1 2001/03/26 14:43:49 adam * New threaded PDU association. * */ +#ifdef WIN32 +#include +#else +#include +#include +#endif + + +#include #include #include #include #include -#ifdef WIN32 -#include -#else -#include -#endif Yaz_PDU_AssocThread::Yaz_PDU_AssocThread( @@ -64,9 +71,12 @@ void Yaz_PDU_AssocThread::childNotify(COMSTACK cs) exit (1); } #else - pthread_t type; + pthread_t tid; - int id = pthread_create (&type, 0, events, socket_observable); - yaz_log (LOG_LOG, "pthread_create returned id=%d", id); + int id = pthread_create (&tid, 0, events, socket_observable); + if (id) + yaz_log (LOG_ERRNO|LOG_FATAL, "pthread_create returned id=%d", id); + else + pthread_detach (tid); #endif } diff --git a/src/yaz-server.cpp b/src/yaz-server.cpp deleted file mode 100644 index f64a6b4..0000000 --- a/src/yaz-server.cpp +++ /dev/null @@ -1,1666 +0,0 @@ -/* - * Copyright (c) 1998-2001, Index Data. - * See the file LICENSE for details. - * - * $Log: yaz-server.cpp,v $ - * Revision 1.15 2001-03-26 14:43:49 adam - * New threaded PDU association. - * - * Revision 1.14 2000/11/01 14:22:59 adam - * Added fd parameter for method IYaz_PDU_Observer::clone. - * - * Revision 1.13 2000/10/11 11:58:16 adam - * Moved header files to include/yaz++. Switched to libtool and automake. - * Configure script creates yaz++-config script. - * - * Revision 1.12 2000/09/21 21:43:20 adam - * Better high-level server API. - * - * Revision 1.11 2000/09/12 16:23:49 adam - * Updated server example. - * - * Revision 1.10 2000/09/12 16:04:17 adam - * Added comstack method for Yaz_PDU_Assoc.. - * - * Revision 1.9 2000/09/12 12:09:53 adam - * More work on high-level server. - * - * Revision 1.8 2000/09/08 10:23:42 adam - * Added skeleton of yaz-z-server. - * - * Revision 1.7 1999/12/06 13:52:45 adam - * Modified for new location of YAZ header files. Experimental threaded - * operation. - * - * Revision 1.6 1999/04/21 12:09:01 adam - * Many improvements. Modified to proxy server to work with "sessions" - * based on cookies. - * - * Revision 1.5 1999/04/09 11:46:57 adam - * Added object Yaz_Z_Assoc. Much more functional client. - * - * Revision 1.4 1999/03/23 14:17:57 adam - * More work on timeout handling. Work on yaz-client. - * - * Revision 1.3 1999/02/02 14:01:22 adam - * First WIN32 port of YAZ++. - * - * Revision 1.2 1999/01/28 13:08:47 adam - * Yaz_PDU_Assoc better encapsulated. Memory leak fix in - * yaz-socket-manager.cc. - * - * Revision 1.1.1.1 1999/01/28 09:41:07 adam - * First implementation of YAZ++. - * - */ - -#include -#include -#include -#include - -class MyServer : public Yaz_Z_Server { -public: - MyServer(IYaz_PDU_Observable *the_PDU_Observable); - void recv_Z_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse); - void recv_Z_search (Z_SearchRequest *searchRequest, - Z_SearchResponse *searchResponse); - void recv_Z_present (Z_PresentRequest *presentRequest, - Z_PresentResponse *presentResponse); - - void recv_Z_record (const char *resultSetName, - int position, - int *format, - Z_RecordComposition *comp, - Z_NamePlusRecord *namePlusRecord, - Z_Records *records); - IYaz_PDU_Observer* sessionNotify(IYaz_PDU_Observable *the_PDU_Observable, - int fd); - void failNotify(); - void timeoutNotify(); - void connectNotify(); -private: - int m_no; -}; - - -static char *marc_records[] = { -{ - "\x30\x30\x33\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x31\x36" - "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x31\x37\x39\x30\x34\x30\x30\x30\x31\x33\x30\x30\x30\x37\x35" - "\x30\x35\x30\x30\x30\x31\x32\x30\x30\x30\x38\x38\x31\x30\x30\x30" - "\x30\x31\x37\x30\x30\x31\x30\x30\x32\x34\x35\x30\x30\x33\x30\x30" - "\x30\x31\x31\x37\x32\x36\x30\x30\x30\x31\x32\x30\x30\x31\x34\x37" - "\x32\x36\x33\x30\x30\x30\x39\x30\x30\x31\x35\x39\x33\x30\x30\x30" - "\x30\x31\x31\x30\x30\x31\x36\x38\x1E\x20\x20\x20\x31\x31\x32\x32" - "\x34\x34\x36\x36\x20\x1E\x44\x4C\x43\x1E\x30\x30\x30\x30\x30\x30" - "\x30\x30\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x39\x31\x30\x37\x31" - "\x30\x63\x31\x39\x39\x31\x30\x37\x30\x31\x6E\x6A\x75\x20\x20\x20" - "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" - "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" - "\x1E\x30\x30\x1F\x61\x31\x32\x33\x2D\x78\x79\x7A\x1E\x31\x30\x1F" - "\x61\x4A\x61\x63\x6B\x20\x43\x6F\x6C\x6C\x69\x6E\x73\x1E\x31\x30" - "\x1F\x61\x48\x6F\x77\x20\x74\x6F\x20\x70\x72\x6F\x67\x72\x61\x6D" - "\x20\x61\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x1E\x31\x20\x1F\x61" - "\x50\x65\x6E\x67\x75\x69\x6E\x1E\x20\x20\x1F\x61\x38\x37\x31\x30" - "\x1E\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20\x1E\x1D" -},{ - "\x30\x30\x33\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x31\x36" - "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x31\x37\x39\x30\x34\x30\x30\x30\x31\x33\x30\x30\x30\x37\x35" - "\x30\x35\x30\x30\x30\x31\x32\x30\x30\x30\x38\x38\x31\x30\x30\x30" - "\x30\x31\x37\x30\x30\x31\x30\x30\x32\x34\x35\x30\x30\x33\x30\x30" - "\x30\x31\x31\x37\x32\x36\x30\x30\x30\x31\x32\x30\x30\x31\x34\x37" - "\x32\x36\x33\x30\x30\x30\x39\x30\x30\x31\x35\x39\x33\x30\x30\x30" - "\x30\x31\x31\x30\x30\x31\x36\x38\x1E\x20\x20\x20\x31\x31\x32\x32" - "\x34\x34\x36\x37\x20\x1E\x44\x4C\x43\x1E\x30\x30\x30\x30\x30\x30" - "\x30\x30\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x39\x31\x30\x37\x31" - "\x30\x63\x31\x39\x39\x31\x30\x37\x30\x31\x6E\x6A\x75\x20\x20\x20" - "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" - "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" - "\x1E\x30\x30\x1F\x61\x31\x32\x33\x2D\x78\x79\x7A\x1E\x31\x30\x1F" - "\x61\x4A\x61\x63\x6B\x20\x43\x6F\x6C\x6C\x69\x6E\x73\x1E\x31\x30" - "\x1F\x61\x48\x6F\x77\x20\x74\x6F\x20\x70\x72\x6F\x67\x72\x61\x6D" - "\x20\x61\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x1E\x31\x20\x1F\x61" - "\x50\x65\x6E\x67\x75\x69\x6E\x1E\x20\x20\x1F\x61\x38\x37\x31\x30" - "\x1E\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x37\x20\x1E\x1D" -},{ - "\x30\x31\x33\x36\x39\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" - "\x35\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" - "\x31\x30\x38\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" - "\x30\x35\x30\x30\x30\x32\x32\x30\x30\x30\x39\x38\x30\x38\x32\x30" - "\x30\x32\x31\x30\x30\x31\x32\x30\x31\x31\x31\x30\x31\x32\x31\x30" - "\x30\x31\x34\x31\x32\x34\x35\x30\x33\x34\x37\x30\x30\x32\x36\x32" - "\x32\x36\x30\x30\x30\x35\x34\x30\x30\x36\x30\x39\x33\x30\x30\x30" - "\x30\x33\x30\x30\x30\x36\x36\x33\x35\x30\x34\x30\x30\x35\x31\x30" - "\x30\x36\x39\x33\x36\x35\x30\x30\x30\x35\x36\x30\x30\x37\x34\x34" - "\x36\x35\x30\x30\x30\x33\x39\x30\x30\x38\x30\x30\x36\x35\x30\x30" - "\x30\x36\x32\x30\x30\x38\x33\x39\x37\x30\x30\x30\x30\x32\x33\x30" - "\x30\x39\x30\x31\x37\x30\x30\x30\x30\x32\x30\x30\x30\x39\x32\x34" - "\x37\x31\x30\x30\x30\x37\x31\x30\x30\x39\x34\x34\x37\x31\x30\x30" - "\x30\x36\x36\x30\x31\x30\x31\x35\x1E\x20\x20\x20\x37\x33\x30\x39" - "\x30\x39\x32\x34\x20\x2F\x2F\x72\x38\x32\x1E\x44\x4C\x43\x1E\x31" - "\x39\x38\x32\x30\x35\x32\x34\x30\x30\x30\x30\x30\x30\x2E\x30\x1E" - "\x37\x36\x30\x36\x30\x39\x73\x31\x39\x37\x34\x20\x20\x20\x20\x6E" - "\x79\x75\x61\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x31\x30\x31" - "\x31\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43" - "\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x52" - "\x43\x37\x31\x2E\x33\x1F\x62\x2E\x57\x36\x37\x20\x31\x39\x37\x31" - "\x1E\x30\x30\x1F\x61\x36\x31\x36\x2E\x30\x37\x2F\x35\x37\x35\x2F" - "\x30\x32\x38\x35\x34\x1E\x32\x30\x1F\x61\x57\x6F\x72\x6B\x73\x68" - "\x6F\x70\x20\x6F\x6E\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x50" - "\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x20\x6F\x66\x20\x44\x79\x6E" - "\x61\x6D\x69\x63\x20\x49\x6D\x61\x67\x65\x73\x20\x66\x72\x6F\x6D" - "\x20\x61\x6E\x20\x41\x6E\x67\x65\x72\x20\x53\x63\x69\x6E\x74\x69" - "\x6C\x6C\x61\x74\x69\x6F\x6E\x20\x43\x61\x6D\x65\x72\x61\x2C\x1F" - "\x63\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69\x76" - "\x65\x72\x73\x69\x74\x79\x2C\x1F\x64\x31\x39\x37\x31\x2E\x1E\x31" - "\x30\x1F\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x70\x72\x6F\x63" - "\x65\x73\x73\x69\x6E\x67\x20\x6F\x66\x20\x64\x79\x6E\x61\x6D\x69" - "\x63\x20\x69\x6D\x61\x67\x65\x73\x20\x66\x72\x6F\x6D\x20\x61\x6E" - "\x20\x41\x6E\x67\x65\x72\x20\x73\x63\x69\x6E\x74\x69\x6C\x6C\x61" - "\x74\x69\x6F\x6E\x20\x63\x61\x6D\x65\x72\x61\x20\x3A\x1F\x62\x74" - "\x68\x65\x20\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F" - "\x66\x20\x61\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x2F\x1F\x63" - "\x63\x6F\x73\x70\x6F\x6E\x73\x6F\x72\x65\x64\x20\x62\x79\x20\x74" - "\x68\x65\x20\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43\x6F" - "\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F\x72" - "\x79\x20\x61\x6E\x64\x20\x74\x68\x65\x20\x4E\x75\x63\x6C\x65\x61" - "\x72\x20\x4D\x65\x64\x69\x63\x69\x6E\x65\x20\x44\x69\x76\x69\x73" - "\x69\x6F\x6E\x2C\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" - "\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x2C\x20\x53\x63" - "\x68\x6F\x6F\x6C\x20\x6F\x66\x20\x4D\x65\x64\x69\x63\x69\x6E\x65" - "\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69" - "\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F\x75" - "\x69\x73\x2C\x20\x4A\x61\x6E\x75\x61\x72\x79\x20\x31\x38\x2D\x32" - "\x32\x2C\x20\x31\x39\x37\x31\x20\x3B\x20\x65\x64\x69\x74\x65\x64" - "\x20\x62\x79\x20\x4B\x65\x6E\x6E\x65\x74\x68\x20\x42\x2E\x20\x4C" - "\x61\x72\x73\x6F\x6E\x2C\x20\x4A\x65\x72\x6F\x6D\x65\x20\x52\x2E" - "\x20\x43\x6F\x78\x2C\x20\x4A\x72\x2E\x1E\x30\x20\x1F\x61\x4E\x65" - "\x77\x20\x59\x6F\x72\x6B\x20\x3A\x1F\x62\x53\x6F\x63\x69\x65\x74" - "\x79\x20\x6F\x66\x20\x4E\x75\x63\x6C\x65\x61\x72\x20\x4D\x65\x64" - "\x69\x63\x69\x6E\x65\x2C\x1F\x63\x5B\x63\x31\x39\x37\x34\x5D\x1E" - "\x20\x20\x1F\x61\x78\x69\x76\x2C\x20\x70\x2E\x20\x3A\x1F\x62\x69" - "\x6C\x6C\x2E\x20\x3B\x1F\x63\x32\x34\x20\x63\x6D\x2E\x1E\x20\x20" - "\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62\x69\x62\x6C\x69" - "\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72\x65\x66\x65\x72" - "\x65\x6E\x63\x65\x73\x20\x61\x6E\x64\x20\x69\x6E\x64\x65\x78\x2E" - "\x1E\x20\x30\x1F\x61\x52\x61\x64\x69\x6F\x69\x73\x6F\x74\x6F\x70" - "\x65\x20\x73\x63\x61\x6E\x6E\x69\x6E\x67\x1F\x78\x44\x61\x74\x61" - "\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x1F\x78\x43\x6F\x6E" - "\x67\x72\x65\x73\x73\x65\x73\x2E\x1E\x20\x30\x1F\x61\x53\x63\x69" - "\x6E\x74\x69\x6C\x6C\x61\x74\x69\x6F\x6E\x20\x63\x61\x6D\x65\x72" - "\x61\x73\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73\x2E\x1E" - "\x20\x30\x1F\x61\x49\x6D\x61\x67\x69\x6E\x67\x20\x73\x79\x73\x74" - "\x65\x6D\x73\x20\x69\x6E\x20\x6D\x65\x64\x69\x63\x69\x6E\x65\x1F" - "\x78\x44\x61\x74\x61\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67" - "\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73\x2E\x1E\x31\x30" - "\x1F\x61\x4C\x61\x72\x73\x6F\x6E\x2C\x20\x4B\x65\x6E\x6E\x65\x74" - "\x68\x20\x42\x2E\x1E\x31\x30\x1F\x61\x43\x6F\x78\x2C\x20\x4A\x65" - "\x72\x6F\x6D\x65\x20\x52\x2E\x20\x1E\x32\x30\x1F\x61\x57\x61\x73" - "\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E\x69\x76\x65\x72\x73\x69" - "\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F\x75\x69\x73\x2E\x1F\x62" - "\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43\x6F\x6D\x70\x75" - "\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F\x72\x79\x2E\x1E" - "\x32\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55" - "\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C" - "\x6F\x75\x69\x73\x2E\x1F\x62\x4E\x75\x63\x6C\x65\x61\x72\x20\x4D" - "\x65\x64\x69\x63\x69\x6E\x65\x20\x44\x69\x76\x69\x73\x69\x6F\x6E" - "\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x33\x30\x39\x30\x39\x32" - "\x34\x20\x2F\x2F\x72\x38\x32\x1E\x1D" -},{ - "\x30\x30\x39\x34\x32\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x35" - "\x33\x31\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x39\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x33\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x34\x30\x30\x31\x30\x30\x30\x32\x33\x30" - "\x30\x36\x36\x35\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x31" - "\x30\x34\x31\x30\x30\x31\x34\x30\x30\x30\x39\x39\x30\x35\x30\x30" - "\x30\x31\x36\x30\x30\x31\x31\x33\x30\x38\x32\x30\x30\x31\x36\x30" - "\x30\x31\x32\x39\x32\x34\x35\x30\x30\x37\x33\x30\x30\x31\x34\x35" - "\x32\x36\x30\x30\x30\x37\x30\x30\x30\x32\x31\x38\x33\x30\x30\x30" - "\x30\x35\x30\x30\x30\x32\x38\x38\x35\x30\x30\x30\x30\x34\x38\x30" - "\x30\x33\x33\x38\x35\x30\x30\x30\x30\x39\x36\x30\x30\x33\x38\x36" - "\x36\x33\x30\x30\x30\x33\x39\x30\x30\x34\x38\x32\x36\x33\x30\x30" - "\x30\x33\x39\x30\x30\x35\x32\x31\x37\x30\x30\x30\x30\x33\x38\x30" - "\x30\x35\x36\x30\x37\x30\x30\x30\x30\x33\x33\x30\x30\x35\x39\x38" - "\x37\x31\x30\x30\x30\x33\x34\x30\x30\x36\x33\x31\x1E\x20\x20\x20" - "\x37\x33\x32\x30\x39\x36\x32\x32\x20\x2F\x2F\x72\x38\x32\x33\x1E" - "\x44\x4C\x43\x1E\x31\x39\x38\x32\x30\x33\x32\x35\x30\x30\x30\x30" - "\x30\x30\x2E\x30\x1E\x37\x38\x30\x33\x30\x36\x6D\x31\x39\x30\x30" - "\x39\x39\x39\x39\x6F\x68\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20" - "\x20\x20\x30\x30\x30\x30\x30\x20\x67\x72\x63\x20\x20\x1E\x20\x20" - "\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E" - "\x30\x20\x1F\x61\x67\x72\x63\x68\x65\x62\x65\x6E\x67\x1E\x30\x30" - "\x1F\x61\x42\x53\x34\x32\x31\x1F\x62\x2E\x43\x36\x34\x1E\x30\x30" - "\x1F\x61\x32\x32\x30\x2E\x34\x2F\x34\x1F\x32\x31\x39\x1E\x30\x34" - "\x1F\x61\x54\x68\x65\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x42" - "\x69\x62\x6C\x65\x20\x2F\x1F\x63\x4A\x2E\x20\x41\x72\x74\x68\x75" - "\x72\x20\x42\x61\x69\x72\x64\x2C\x20\x44\x61\x76\x69\x64\x20\x4E" - "\x6F\x65\x6C\x20\x46\x72\x65\x65\x64\x6D\x61\x6E\x2C\x20\x65\x64" - "\x69\x74\x6F\x72\x73\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x6F\x6F\x73" - "\x74\x65\x72\x2C\x20\x4F\x68\x69\x6F\x5D\x20\x3A\x1F\x62\x42\x69" - "\x62\x6C\x69\x63\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20" - "\x41\x73\x73\x6F\x63\x69\x61\x74\x65\x73\x2C\x1F\x63\x3C\x31\x39" - "\x37\x33\x2D\x63\x31\x39\x38\x30\x20\x20\x20\x3E\x1E\x20\x20\x1F" - "\x61\x76\x2E\x20\x3C\x32\x2D\x34\x2C\x20\x37\x2D\x31\x30\x2C\x20" - "\x31\x33\x2C\x20\x31\x35\x2D\x31\x38\x2C\x20\x32\x30\x2D\x32\x34" - "\x20\x20\x20\x3E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20" - "\x20\x1F\x61\x48\x65\x62\x72\x65\x77\x20\x61\x6E\x64\x20\x47\x72" - "\x65\x65\x6B\x3B\x20\x69\x6E\x74\x72\x6F\x64\x75\x63\x74\x69\x6F" - "\x6E\x73\x20\x69\x6E\x20\x45\x6E\x67\x6C\x69\x73\x68\x2E\x1E\x20" - "\x20\x1F\x61\x56\x6F\x6C\x73\x2E\x20\x32\x2C\x20\x38\x3A\x20\x4D" - "\x69\x73\x73\x6F\x75\x6C\x61\x2C\x20\x4D\x6F\x6E\x74\x2E\x20\x3A" - "\x20\x50\x75\x62\x6C\x69\x73\x68\x65\x64\x20\x62\x79\x20\x53\x63" - "\x68\x6F\x6C\x61\x72\x73\x20\x50\x72\x65\x73\x73\x20\x66\x6F\x72" - "\x20\x42\x69\x62\x6C\x69\x63\x61\x6C\x20\x52\x65\x73\x65\x61\x72" - "\x63\x68\x20\x41\x73\x73\x6F\x63\x69\x61\x74\x65\x73\x2E\x1E\x20" - "\x30\x1F\x61\x42\x69\x62\x6C\x65\x2E\x20\x4F\x2E\x54\x2E\x1F\x78" - "\x43\x6F\x6E\x63\x6F\x72\x64\x61\x6E\x63\x65\x73\x2C\x20\x48\x65" - "\x62\x72\x65\x77\x2E\x1E\x30\x30\x1F\x61\x42\x69\x62\x6C\x65\x2E" - "\x1F\x70\x4E\x2E\x54\x2E\x1F\x78\x43\x6F\x6E\x63\x6F\x72\x64\x61" - "\x6E\x63\x65\x73\x2C\x20\x47\x72\x65\x65\x6B\x2E\x1E\x31\x30\x1F" - "\x61\x42\x61\x69\x72\x64\x2C\x20\x4A\x2E\x20\x41\x72\x74\x68\x75" - "\x72\x1F\x71\x28\x4A\x6F\x73\x65\x70\x68\x20\x41\x72\x74\x68\x75" - "\x72\x29\x1E\x31\x30\x1F\x61\x46\x72\x65\x65\x64\x6D\x61\x6E\x2C" - "\x20\x44\x61\x76\x69\x64\x20\x4E\x6F\x65\x6C\x2C\x1F\x64\x31\x39" - "\x32\x32\x2D\x1E\x32\x30\x1F\x61\x42\x69\x62\x6C\x69\x63\x61\x6C" - "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x41\x73\x73\x6F\x63\x69" - "\x61\x74\x65\x73\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x33\x32" - "\x30\x39\x36\x32\x32\x20\x2F\x2F\x72\x38\x32\x33\x1E\x1D" -},{ - "\x30\x31\x30\x33\x33\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x35" - "\x33\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x32\x31\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x32\x31" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x35\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x34\x32\x30\x31\x30\x30\x30\x32\x35\x30" - "\x30\x37\x35\x34\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x33" - "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x31\x30\x35\x30\x30" - "\x30\x32\x32\x30\x30\x31\x31\x33\x31\x30\x30\x30\x30\x31\x39\x30" - "\x30\x31\x33\x35\x32\x34\x35\x30\x31\x30\x35\x30\x30\x31\x35\x34" - "\x32\x36\x30\x30\x30\x37\x33\x30\x30\x32\x35\x39\x33\x30\x30\x30" - "\x30\x33\x38\x30\x30\x33\x33\x32\x34\x39\x30\x30\x30\x36\x38\x30" - "\x30\x33\x37\x30\x35\x30\x30\x30\x30\x33\x35\x30\x30\x34\x33\x38" - "\x35\x30\x34\x30\x30\x32\x34\x30\x30\x34\x37\x33\x36\x35\x30\x30" - "\x30\x33\x34\x30\x30\x34\x39\x37\x36\x35\x31\x30\x30\x34\x36\x30" - "\x30\x35\x33\x31\x37\x30\x30\x30\x30\x33\x39\x30\x30\x35\x37\x37" - "\x38\x31\x30\x30\x31\x33\x38\x30\x30\x36\x31\x36\x1E\x20\x20\x20" - "\x37\x36\x33\x35\x37\x38\x39\x35\x20\x2F\x4D\x41\x50\x2F\x72\x38" - "\x32\x1E\x44\x4C\x43\x1E\x31\x39\x38\x32\x30\x38\x30\x36\x30\x30" - "\x30\x30\x30\x30\x2E\x30\x1E\x37\x36\x30\x34\x30\x37\x73\x31\x39" - "\x37\x34\x20\x20\x20\x20\x77\x61\x75\x61\x20\x20\x20\x20\x20\x62" - "\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" - "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" - "\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x77\x61\x1E\x30\x30" - "\x1F\x61\x47\x31\x34\x36\x37\x2E\x50\x38\x1F\x62\x4D\x33\x20\x31" - "\x39\x37\x34\x1E\x31\x30\x1F\x61\x4D\x61\x69\x72\x73\x2C\x20\x4A" - "\x6F\x68\x6E\x20\x57\x2E\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x50" - "\x75\x67\x65\x74\x20\x53\x6F\x75\x6E\x64\x20\x52\x65\x67\x69\x6F" - "\x6E\x20\x3A\x1F\x62\x61\x20\x70\x6F\x72\x74\x66\x6F\x6C\x69\x6F" - "\x20\x6F\x66\x20\x74\x68\x65\x6D\x61\x74\x69\x63\x20\x63\x6F\x6D" - "\x70\x75\x74\x65\x72\x20\x6D\x61\x70\x73\x20\x2F\x1F\x63\x4A\x6F" - "\x68\x6E\x20\x57\x2E\x20\x4D\x61\x69\x72\x73\x2C\x20\x45\x75\x67" - "\x65\x6E\x65\x20\x41\x2E\x20\x48\x6F\x65\x72\x61\x75\x66\x2E\x1E" - "\x30\x20\x1F\x61\x5B\x42\x65\x6C\x6C\x69\x6E\x67\x68\x61\x6D\x2C" - "\x20\x57\x61\x73\x68\x2E\x5D\x20\x3A\x1F\x62\x43\x65\x6E\x74\x65" - "\x72\x20\x66\x6F\x72\x20\x50\x61\x63\x69\x66\x69\x63\x20\x4E\x6F" - "\x72\x74\x68\x77\x65\x73\x74\x20\x53\x74\x75\x64\x69\x65\x73\x2C" - "\x1F\x63\x63\x31\x39\x37\x34\x2E\x1E\x20\x20\x1F\x61\x69\x69\x69" - "\x2C\x20\x34\x31\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20" - "\x3B\x1F\x63\x32\x35\x20\x78\x20\x33\x36\x20\x63\x6D\x2E\x1E\x31" - "\x20\x1F\x61\x4F\x63\x63\x61\x73\x69\x6F\x6E\x61\x6C\x20\x70\x61" - "\x70\x65\x72\x20\x2D\x20\x43\x65\x6E\x74\x65\x72\x20\x66\x6F\x72" - "\x20\x50\x61\x63\x69\x66\x69\x63\x20\x4E\x6F\x72\x74\x68\x77\x65" - "\x73\x74\x20\x53\x74\x75\x64\x69\x65\x73\x20\x3B\x20\x6E\x6F\x2E" - "\x20\x33\x1E\x20\x20\x1F\x61\x53\x63\x61\x6C\x65\x20\x6F\x66\x20" - "\x6D\x61\x70\x73\x20\x63\x61\x2E\x20\x31\x3A\x31\x2C\x30\x30\x30" - "\x2C\x30\x30\x30\x2E\x1E\x20\x20\x1F\x61\x42\x69\x62\x6C\x69\x6F" - "\x67\x72\x61\x70\x68\x79\x3A\x20\x70\x2E\x20\x34\x2E\x1E\x20\x30" - "\x1F\x61\x43\x61\x72\x74\x6F\x67\x72\x61\x70\x68\x79\x1F\x78\x44" - "\x61\x74\x61\x20\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x2E\x1E" - "\x20\x30\x1F\x61\x50\x75\x67\x65\x74\x20\x53\x6F\x75\x6E\x64\x20" - "\x72\x65\x67\x69\x6F\x6E\x20\x28\x57\x61\x73\x68\x2E\x29\x1F\x78" - "\x43\x65\x6E\x73\x75\x73\x1F\x78\x4D\x61\x70\x73\x2E\x1E\x31\x30" - "\x1F\x61\x48\x6F\x65\x72\x61\x75\x66\x2C\x20\x45\x75\x67\x65\x6E" - "\x65\x20\x41\x2E\x2C\x1F\x65\x6A\x6F\x69\x6E\x74\x20\x61\x75\x74" - "\x68\x6F\x72\x2E\x1E\x31\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67" - "\x74\x6F\x6E\x20\x28\x53\x74\x61\x74\x65\x29\x2E\x1F\x62\x57\x65" - "\x73\x74\x65\x72\x6E\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E" - "\x20\x53\x74\x61\x74\x65\x20\x43\x6F\x6C\x6C\x65\x67\x65\x2C\x20" - "\x42\x65\x6C\x6C\x69\x6E\x67\x68\x61\x6D\x2E\x1F\x62\x43\x65\x6E" - "\x74\x65\x72\x20\x66\x6F\x72\x20\x50\x61\x63\x69\x66\x69\x63\x20" - "\x4E\x6F\x72\x74\x68\x77\x65\x73\x74\x20\x53\x74\x75\x64\x69\x65" - "\x73\x2E\x1F\x74\x4F\x63\x63\x61\x73\x69\x6F\x6E\x61\x6C\x20\x70" - "\x61\x70\x65\x72\x20\x3B\x1F\x76\x6E\x6F\x2E\x20\x33\x2E\x1E\x20" - "\x20\x1F\x61\x20\x20\x20\x37\x36\x33\x35\x37\x38\x39\x35\x20\x2F" - "\x4D\x41\x50\x2F\x72\x38\x32\x1E\x1D" -},{ - "\x30\x31\x30\x30\x30\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" - "\x39\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x37\x35\x33\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x37\x35" - "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x39\x30\x30\x35\x30\x30" - "\x30\x31\x38\x30\x30\x31\x30\x38\x30\x38\x32\x30\x30\x31\x35\x30" - "\x30\x31\x32\x36\x32\x34\x35\x30\x33\x30\x34\x30\x30\x31\x34\x31" - "\x32\x36\x30\x30\x30\x34\x38\x30\x30\x34\x34\x35\x33\x30\x30\x30" - "\x30\x33\x33\x30\x30\x34\x39\x33\x35\x30\x34\x30\x30\x35\x31\x30" - "\x30\x35\x32\x36\x36\x35\x30\x30\x30\x32\x38\x30\x30\x35\x37\x37" - "\x37\x30\x30\x30\x30\x32\x39\x30\x30\x36\x30\x35\x37\x31\x30\x30" - "\x30\x34\x38\x30\x30\x36\x33\x34\x37\x31\x30\x30\x30\x37\x31\x30" - "\x30\x36\x38\x32\x1E\x20\x20\x20\x37\x37\x30\x30\x30\x33\x34\x38" - "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x37\x30\x37\x30\x30" - "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x31\x31\x32\x73\x31\x39" - "\x37\x37\x20\x20\x20\x20\x6D\x64\x75\x61\x20\x20\x20\x20\x20\x62" - "\x20\x20\x20\x20\x31\x30\x31\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" - "\x20\x20\x1F\x61\x30\x38\x33\x39\x31\x30\x38\x38\x32\x36\x1E\x20" - "\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43" - "\x1E\x30\x30\x1F\x61\x52\x43\x37\x38\x2E\x37\x2E\x54\x36\x1F\x62" - "\x52\x34\x1E\x30\x30\x1F\x61\x36\x31\x36\x2E\x30\x37\x2F\x35\x37" - "\x32\x1E\x30\x30\x1F\x61\x52\x65\x63\x6F\x6E\x73\x74\x72\x75\x63" - "\x74\x69\x6F\x6E\x20\x74\x6F\x6D\x6F\x67\x72\x61\x70\x68\x79\x20" - "\x69\x6E\x20\x64\x69\x61\x67\x6E\x6F\x73\x74\x69\x63\x20\x72\x61" - "\x64\x69\x6F\x6C\x6F\x67\x79\x20\x61\x6E\x64\x20\x6E\x75\x63\x6C" - "\x65\x61\x72\x20\x6D\x65\x64\x69\x63\x69\x6E\x65\x20\x3A\x1F\x62" - "\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F\x66\x20\x74" - "\x68\x65\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x2E\x2E\x2E\x20" - "\x2F\x1F\x63\x65\x64\x69\x74\x65\x64\x20\x62\x79\x20\x4D\x69\x63" - "\x68\x65\x6C\x20\x4D\x2E\x20\x54\x65\x72\x2D\x50\x6F\x67\x6F\x73" - "\x73\x69\x61\x6E\x20\x2E\x2E\x2E\x20\x5B\x65\x74\x20\x61\x6C\x2E" - "\x5D\x20\x3B\x20\x63\x6F\x2D\x73\x70\x6F\x6E\x73\x6F\x72\x73\x2C" - "\x20\x74\x68\x65\x20\x45\x64\x77\x61\x72\x64\x20\x4D\x61\x6C\x6C" - "\x69\x6E\x63\x6B\x72\x6F\x64\x74\x20\x49\x6E\x73\x74\x69\x74\x75" - "\x74\x65\x20\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x20" - "\x61\x6E\x64\x20\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C\x20\x43" - "\x6F\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61\x74\x6F" - "\x72\x79\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55" - "\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x20\x53\x63\x68\x6F\x6F\x6C" - "\x20\x6F\x66\x20\x4D\x65\x64\x69\x63\x69\x6E\x65\x20\x2E\x2E\x2E" - "\x2E\x1E\x30\x20\x1F\x61\x42\x61\x6C\x74\x69\x6D\x6F\x72\x65\x20" - "\x3A\x1F\x62\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x20\x50\x61" - "\x72\x6B\x20\x50\x72\x65\x73\x73\x2C\x1F\x63\x63\x31\x39\x37\x37" - "\x2E\x1E\x20\x20\x1F\x61\x78\x76\x2C\x20\x35\x37\x33\x20\x70\x2E" - "\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F\x63\x32\x34\x20\x63" - "\x6D\x2E\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20" - "\x62\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20" - "\x72\x65\x66\x65\x72\x65\x6E\x63\x65\x73\x20\x61\x6E\x64\x20\x69" - "\x6E\x64\x65\x78\x2E\x1E\x20\x30\x1F\x61\x54\x6F\x6D\x6F\x67\x72" - "\x61\x70\x68\x79\x1F\x78\x43\x6F\x6E\x67\x72\x65\x73\x73\x65\x73" - "\x2E\x1E\x32\x30\x1F\x61\x54\x65\x72\x2D\x50\x6F\x67\x6F\x73\x73" - "\x69\x61\x6E\x2C\x20\x4D\x69\x63\x68\x65\x6C\x20\x4D\x2E\x1E\x32" - "\x30\x1F\x61\x45\x64\x77\x61\x72\x64\x20\x4D\x61\x6C\x6C\x69\x6E" - "\x63\x6B\x72\x6F\x64\x74\x20\x49\x6E\x73\x74\x69\x74\x75\x74\x65" - "\x20\x6F\x66\x20\x52\x61\x64\x69\x6F\x6C\x6F\x67\x79\x2E\x1E\x32" - "\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x55\x6E" - "\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x20\x53\x74\x2E\x20\x4C\x6F" - "\x75\x69\x73\x2E\x1F\x62\x42\x69\x6F\x6D\x65\x64\x69\x63\x61\x6C" - "\x20\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x4C\x61\x62\x6F\x72\x61" - "\x74\x6F\x72\x79\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x30" - "\x30\x30\x33\x34\x38\x20\x1E\x1D" -},{ - "\x30\x31\x34\x39\x33\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x37" - "\x37\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x31\x31\x39\x38\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" - "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x33\x30\x35\x30\x30" - "\x30\x33\x34\x30\x30\x31\x30\x35\x30\x38\x32\x30\x30\x32\x38\x30" - "\x30\x31\x33\x39\x30\x38\x36\x30\x30\x31\x38\x30\x30\x31\x36\x37" - "\x31\x31\x31\x30\x30\x39\x35\x30\x30\x31\x38\x35\x32\x34\x35\x30" - "\x34\x34\x38\x30\x30\x32\x38\x30\x32\x36\x30\x30\x31\x33\x38\x30" - "\x30\x37\x32\x38\x33\x30\x30\x30\x30\x33\x34\x30\x30\x38\x36\x36" - "\x34\x39\x30\x30\x30\x33\x36\x30\x30\x39\x30\x30\x36\x35\x30\x30" - "\x30\x35\x39\x30\x30\x39\x33\x36\x37\x30\x30\x30\x30\x33\x31\x30" - "\x30\x39\x39\x35\x37\x30\x30\x30\x30\x32\x31\x30\x31\x30\x32\x36" - "\x37\x30\x30\x30\x30\x32\x30\x30\x31\x30\x34\x37\x37\x31\x30\x30" - "\x30\x35\x30\x30\x31\x30\x36\x37\x38\x31\x30\x30\x30\x38\x31\x30" - "\x31\x31\x31\x37\x1E\x20\x20\x20\x37\x37\x30\x30\x34\x37\x37\x33" - "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x38\x32\x32\x30\x30" - "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x33\x32\x31\x73\x31\x39" - "\x37\x37\x20\x20\x20\x20\x64\x63\x75\x61\x20\x20\x20\x20\x20\x20" - "\x20\x20\x20\x20\x31\x30\x30\x30\x30\x20\x65\x6E\x67\x20\x20\x1E" - "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" - "\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x30\x30" - "\x1F\x61\x51\x43\x31\x30\x30\x1F\x62\x2E\x55\x35\x37\x20\x6E\x6F" - "\x2E\x20\x35\x30\x30\x2D\x38\x1F\x61\x54\x41\x31\x36\x35\x30\x1E" - "\x30\x30\x1F\x61\x36\x30\x32\x2F\x2E\x31\x20\x73\x1F\x61\x36\x32" - "\x31\x2E\x33\x38\x31\x2E\x39\x2F\x35\x39\x38\x1E\x20\x20\x1F\x61" - "\x43\x31\x33\x2E\x31\x30\x3A\x35\x30\x30\x2D\x38\x2E\x1E\x32\x30" - "\x1F\x61\x57\x6F\x72\x6B\x73\x68\x6F\x70\x20\x6F\x6E\x20\x53\x74" - "\x61\x6E\x64\x61\x72\x64\x73\x20\x66\x6F\x72\x20\x49\x6D\x61\x67" - "\x65\x20\x50\x61\x74\x74\x65\x72\x6E\x20\x52\x65\x63\x6F\x67\x6E" - "\x69\x74\x69\x6F\x6E\x2C\x1F\x63\x4E\x61\x74\x69\x6F\x6E\x61\x6C" - "\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64" - "\x61\x72\x64\x73\x2C\x1F\x64\x31\x39\x37\x36\x2E\x1E\x31\x30\x1F" - "\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x73\x63\x69\x65\x6E\x63" - "\x65\x20\x26\x20\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79\x20\x3A" - "\x1F\x62\x70\x72\x6F\x63\x65\x65\x64\x69\x6E\x67\x73\x20\x6F\x66" - "\x20\x61\x20\x77\x6F\x72\x6B\x73\x68\x6F\x70\x20\x68\x65\x6C\x64" - "\x20\x61\x74\x20\x74\x68\x65\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C" - "\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64" - "\x61\x72\x64\x73\x2C\x20\x47\x61\x69\x74\x68\x65\x72\x73\x62\x75" - "\x72\x67\x2C\x20\x4D\x44\x2C\x20\x4A\x75\x6E\x65\x20\x33\x2D\x34" - "\x2C\x20\x31\x39\x37\x36\x20\x2F\x1F\x63\x57\x6F\x72\x6B\x73\x68" - "\x6F\x70\x20\x6F\x6E\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x20" - "\x66\x6F\x72\x20\x49\x6D\x61\x67\x65\x20\x50\x61\x74\x74\x65\x72" - "\x6E\x20\x52\x65\x63\x6F\x67\x6E\x69\x74\x69\x6F\x6E\x20\x3B\x20" - "\x4A\x6F\x68\x6E\x20\x4D\x2E\x20\x45\x76\x61\x6E\x73\x2C\x20\x4A" - "\x72\x2E\x2C\x20\x52\x75\x73\x73\x65\x6C\x6C\x20\x4B\x69\x72\x73" - "\x63\x68\x2C\x20\x61\x6E\x64\x20\x52\x6F\x67\x65\x72\x20\x4E\x2E" - "\x20\x4E\x61\x67\x65\x6C\x2C\x20\x65\x64\x69\x74\x6F\x72\x5B\x73" - "\x5D\x20\x3B\x20\x73\x70\x6F\x6E\x73\x6F\x72\x65\x64\x20\x62\x79" - "\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72\x65\x61\x75" - "\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x2C\x20\x45" - "\x6C\x65\x63\x74\x72\x6F\x6E\x69\x63\x20\x49\x6E\x64\x75\x73\x74" - "\x72\x69\x65\x73\x20\x41\x73\x73\x6F\x63\x69\x61\x74\x69\x6F\x6E" - "\x2C\x20\x49\x6E\x73\x74\x69\x74\x75\x74\x65\x20\x6F\x66\x20\x45" - "\x6C\x65\x63\x74\x72\x69\x63\x61\x6C\x20\x61\x6E\x64\x20\x45\x6C" - "\x65\x63\x74\x72\x6F\x6E\x69\x63\x20\x45\x6E\x67\x69\x6E\x65\x65" - "\x72\x73\x2C\x20\x69\x6E\x20\x63\x6F\x6F\x70\x65\x72\x61\x74\x69" - "\x6F\x6E\x20\x77\x69\x74\x68\x20\x41\x73\x73\x6F\x63\x69\x61\x74" - "\x69\x6F\x6E\x20\x66\x6F\x72\x20\x43\x6F\x6D\x70\x75\x74\x69\x6E" - "\x67\x20\x4D\x61\x63\x68\x69\x6E\x65\x72\x79\x2E\x1E\x30\x20\x1F" - "\x61\x5B\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x5D\x20\x3A\x1F" - "\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20\x43" - "\x6F\x6D\x6D\x65\x72\x63\x65\x2C\x20\x4E\x61\x74\x69\x6F\x6E\x61" - "\x6C\x20\x42\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E" - "\x64\x61\x72\x64\x73\x20\x3A\x20\x66\x6F\x72\x20\x73\x61\x6C\x65" - "\x20\x62\x79\x20\x74\x68\x65\x20\x53\x75\x70\x74\x2E\x20\x6F\x66" - "\x20\x44\x6F\x63\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x6F\x76" - "\x74\x2E\x20\x50\x72\x69\x6E\x74\x2E\x20\x4F\x66\x66\x2E\x2C\x1F" - "\x63\x31\x39\x37\x37\x2E\x1E\x20\x20\x1F\x61\x76\x69\x69\x2C\x20" - "\x31\x31\x32\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B" - "\x1F\x63\x32\x36\x20\x63\x6D\x2E\x1E\x31\x20\x1F\x61\x4E\x42\x53" - "\x20\x73\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62\x6C\x69\x63\x61" - "\x74\x69\x6F\x6E\x20\x3B\x20\x35\x30\x30\x2D\x38\x1E\x20\x30\x1F" - "\x61\x4F\x70\x74\x69\x63\x61\x6C\x20\x70\x61\x74\x74\x65\x72\x6E" - "\x20\x72\x65\x63\x6F\x67\x6E\x69\x74\x69\x6F\x6E\x1F\x78\x53\x74" - "\x61\x6E\x64\x61\x72\x64\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20" - "\x53\x74\x61\x74\x65\x73\x2E\x1E\x31\x30\x1F\x61\x45\x76\x61\x6E" - "\x73\x2C\x20\x4A\x6F\x68\x6E\x20\x4D\x61\x72\x74\x69\x6E\x2C\x1F" - "\x64\x31\x39\x34\x32\x2D\x1E\x31\x30\x1F\x61\x4B\x69\x72\x73\x63" - "\x68\x2C\x20\x52\x75\x73\x73\x65\x6C\x6C\x2E\x1E\x31\x30\x1F\x61" - "\x4E\x61\x67\x65\x6C\x2C\x20\x52\x6F\x67\x65\x72\x20\x4E\x2E\x1E" - "\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65" - "\x73\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72" - "\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73" - "\x2E\x1E\x31\x20\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" - "\x74\x65\x73\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42" - "\x75\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72" - "\x64\x73\x2E\x1F\x74\x53\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62" - "\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x3B\x1F\x76\x35\x30\x30\x2D" - "\x38\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x30\x30\x34\x37" - "\x37\x33\x20\x1E\x1D" -},{ - "\x30\x30\x38\x37\x38\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" - "\x39\x20\x69\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x36\x33\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" - "\x30\x35\x30\x30\x30\x33\x38\x30\x30\x30\x39\x33\x30\x38\x32\x30" - "\x30\x32\x32\x30\x30\x31\x33\x31\x30\x38\x36\x30\x30\x31\x37\x30" - "\x30\x31\x35\x33\x31\x30\x30\x30\x30\x31\x39\x30\x30\x31\x37\x30" - "\x32\x34\x35\x30\x30\x38\x37\x30\x30\x31\x38\x39\x32\x36\x30\x30" - "\x31\x33\x38\x30\x30\x32\x37\x36\x33\x30\x30\x30\x30\x32\x34\x30" - "\x30\x34\x31\x34\x34\x34\x30\x30\x30\x33\x34\x30\x30\x34\x33\x38" - "\x34\x39\x30\x30\x30\x33\x36\x30\x30\x34\x37\x32\x36\x35\x30\x30" - "\x30\x34\x32\x30\x30\x35\x30\x38\x38\x31\x30\x30\x30\x38\x31\x30" - "\x30\x35\x35\x30\x1E\x20\x20\x20\x37\x37\x30\x30\x35\x35\x35\x38" - "\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x37\x30\x37\x31\x33\x30\x30" - "\x30\x30\x30\x30\x2E\x30\x1E\x37\x37\x30\x34\x30\x31\x73\x31\x39" - "\x37\x37\x20\x20\x20\x20\x64\x63\x75\x20\x20\x20\x20\x20\x20\x20" - "\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x20\x1E" - "\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C" - "\x43\x1E\x30\x30\x1F\x61\x51\x43\x31\x30\x30\x1F\x62\x2E\x55\x35" - "\x37\x20\x6E\x6F\x2E\x20\x35\x30\x30\x2D\x39\x1F\x61\x51\x41\x37" - "\x36\x2E\x39\x2E\x41\x32\x35\x1E\x30\x30\x1F\x61\x36\x30\x32\x2F" - "\x2E\x31\x20\x73\x1F\x61\x30\x30\x31\x2E\x36\x2F\x34\x1E\x30\x20" - "\x1F\x61\x43\x31\x33\x2E\x31\x30\x3A\x35\x30\x30\x2D\x39\x1E\x31" - "\x30\x1F\x61\x57\x6F\x6F\x64\x2C\x20\x48\x65\x6C\x65\x6E\x20\x4D" - "\x2E\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x75\x73\x65\x20\x6F\x66" - "\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x73\x20\x66\x6F\x72\x20\x63" - "\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x64\x20\x61\x63\x63\x65\x73\x73" - "\x20\x74\x6F\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x20\x72\x65\x73" - "\x6F\x75\x72\x63\x65\x73\x20\x2F\x1F\x63\x48\x65\x6C\x65\x6E\x20" - "\x4D\x2E\x20\x57\x6F\x6F\x64\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x61" - "\x73\x68\x69\x6E\x67\x74\x6F\x6E\x5D\x20\x3A\x1F\x62\x55\x2E\x53" - "\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20\x43\x6F\x6D\x6D\x65" - "\x72\x63\x65\x2C\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75" - "\x72\x65\x61\x75\x20\x6F\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64" - "\x73\x20\x3A\x20\x66\x6F\x72\x20\x73\x61\x6C\x65\x20\x62\x79\x20" - "\x74\x68\x65\x20\x53\x75\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63" - "\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x6F\x76\x74\x2E\x20\x50" - "\x72\x69\x6E\x74\x2E\x20\x4F\x66\x66\x2E\x2C\x1F\x63\x31\x39\x37" - "\x37\x2E\x1E\x20\x20\x1F\x61\x69\x76\x2C\x20\x35\x33\x20\x70\x2E" - "\x20\x3B\x1F\x63\x32\x36\x20\x63\x6D\x2E\x1E\x20\x30\x1F\x61\x43" - "\x6F\x6D\x70\x75\x74\x65\x72\x20\x73\x63\x69\x65\x6E\x63\x65\x20" - "\x26\x20\x74\x65\x63\x68\x6E\x6F\x6C\x6F\x67\x79\x1E\x31\x20\x1F" - "\x61\x4E\x42\x53\x20\x73\x70\x65\x63\x69\x61\x6C\x20\x70\x75\x62" - "\x6C\x69\x63\x61\x74\x69\x6F\x6E\x20\x3B\x20\x35\x30\x30\x2D\x39" - "\x1E\x20\x30\x1F\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x73\x1F\x78" - "\x41\x63\x63\x65\x73\x73\x20\x63\x6F\x6E\x74\x72\x6F\x6C\x1F\x78" - "\x50\x61\x73\x73\x77\x6F\x72\x64\x73\x2E\x1E\x31\x20\x1F\x61\x55" - "\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4E" - "\x61\x74\x69\x6F\x6E\x61\x6C\x20\x42\x75\x72\x65\x61\x75\x20\x6F" - "\x66\x20\x53\x74\x61\x6E\x64\x61\x72\x64\x73\x2E\x1F\x74\x53\x70" - "\x65\x63\x69\x61\x6C\x20\x70\x75\x62\x6C\x69\x63\x61\x74\x69\x6F" - "\x6E\x20\x3B\x1F\x76\x35\x30\x30\x2D\x39\x2E\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x37\x37\x30\x30\x35\x35\x35\x38\x20\x1E\x1D" -},{ - "\x30\x30\x37\x39\x31\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" - "\x37\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" - "\x30\x35\x35\x31\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" - "\x30\x34\x33\x30\x30\x33\x30\x30\x30\x30\x39\x38\x30\x35\x30\x30" - "\x30\x31\x38\x30\x30\x31\x32\x38\x30\x38\x32\x30\x30\x31\x38\x30" - "\x30\x31\x34\x36\x31\x30\x30\x30\x30\x32\x31\x30\x30\x31\x36\x34" - "\x32\x34\x35\x30\x31\x36\x32\x30\x30\x31\x38\x35\x32\x36\x30\x30" - "\x30\x32\x33\x30\x30\x33\x34\x37\x33\x30\x30\x30\x30\x32\x36\x30" - "\x30\x33\x37\x30\x35\x30\x30\x30\x30\x32\x39\x30\x30\x33\x39\x36" - "\x36\x35\x30\x30\x30\x36\x34\x30\x30\x34\x32\x35\x37\x31\x30\x30" - "\x30\x36\x32\x30\x30\x34\x38\x39\x1E\x20\x20\x20\x37\x37\x36\x31" - "\x36\x33\x36\x37\x20\x2F\x2F\x72\x38\x34\x1E\x44\x4C\x43\x1E\x31" - "\x39\x38\x34\x31\x32\x31\x33\x30\x30\x30\x30\x30\x30\x2E\x30\x1E" - "\x37\x32\x30\x33\x32\x39\x73\x31\x39\x37\x31\x20\x20\x20\x20\x64" - "\x63\x75\x61\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30" - "\x31\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43" - "\x1F\x63\x44\x4C\x43\x1F\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x6E" - "\x2D\x75\x73\x2D\x64\x63\x1F\x61\x6E\x2D\x75\x73\x2D\x6D\x64\x1F" - "\x61\x6E\x2D\x75\x73\x2D\x76\x61\x1E\x30\x30\x1F\x61\x48\x45\x32" - "\x37\x38\x31\x2E\x57\x33\x1F\x62\x45\x35\x1E\x30\x30\x1F\x61\x33" - "\x38\x35\x2F\x2E\x32\x32\x2F\x30\x39\x37\x35\x33\x1E\x31\x30\x1F" - "\x61\x45\x6E\x67\x6C\x75\x6E\x64\x2C\x20\x43\x61\x72\x6C\x20\x52" - "\x2E\x1E\x31\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E" - "\x20\x6D\x65\x74\x72\x6F\x70\x6F\x6C\x69\x74\x61\x6E\x20\x61\x72" - "\x65\x61\x20\x72\x61\x69\x6C\x20\x63\x6F\x6D\x70\x75\x74\x65\x72" - "\x20\x66\x65\x61\x73\x69\x62\x69\x6C\x69\x74\x79\x20\x73\x74\x75" - "\x64\x79\x3B\x1F\x62\x66\x69\x6E\x61\x6C\x20\x72\x65\x70\x6F\x72" - "\x74\x1F\x63\x5B\x62\x79\x5D\x20\x43\x61\x72\x6C\x20\x52\x2E\x20" - "\x45\x6E\x67\x6C\x75\x6E\x64\x2C\x20\x4A\x72\x2E\x20\x50\x72\x65" - "\x70\x61\x72\x65\x64\x20\x66\x6F\x72\x20\x55\x72\x62\x61\x6E\x20" - "\x4D\x61\x73\x73\x20\x54\x72\x61\x6E\x73\x70\x6F\x72\x74\x61\x74" - "\x69\x6F\x6E\x20\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69" - "\x6F\x6E\x2E\x1E\x30\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74" - "\x6F\x6E\x2C\x1F\x63\x31\x39\x37\x31\x2E\x1E\x20\x20\x1F\x61\x39" - "\x32\x20\x6C\x2E\x1F\x62\x69\x6C\x6C\x75\x73\x2E\x1F\x63\x32\x38" - "\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x22\x43\x6F\x6E\x74\x72\x61" - "\x63\x74\x20\x44\x4F\x54\x2D\x55\x54\x2D\x31\x30\x30\x30\x33\x2E" - "\x22\x1E\x20\x30\x1F\x61\x52\x61\x69\x6C\x72\x6F\x61\x64\x73\x1F" - "\x7A\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x4D\x65\x74\x72" - "\x6F\x70\x6F\x6C\x69\x74\x61\x6E\x20\x41\x72\x65\x61\x1F\x78\x43" - "\x6F\x6D\x6D\x75\x74\x69\x6E\x67\x20\x74\x72\x61\x66\x66\x69\x63" - "\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" - "\x74\x65\x73\x2E\x1F\x62\x55\x72\x62\x61\x6E\x20\x4D\x61\x73\x73" - "\x20\x54\x72\x61\x6E\x73\x70\x6F\x72\x74\x61\x74\x69\x6F\x6E\x20" - "\x41\x64\x6D\x69\x6E\x69\x73\x74\x72\x61\x74\x69\x6F\x6E\x2E\x1E" - "\x20\x20\x1F\x61\x20\x20\x20\x37\x37\x36\x31\x36\x33\x36\x37\x20" - "\x2F\x2F\x72\x38\x34\x1E\x1D" -},{ - "\x30\x30\x36\x38\x36\x63\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" - "\x39\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x38\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x38" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x32\x32\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x39\x30\x31\x30\x30\x30\x32\x32\x30" - "\x30\x34\x33\x34\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x38\x30" - "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x38\x30\x35\x30\x30" - "\x30\x32\x34\x30\x30\x31\x31\x30\x30\x38\x32\x30\x30\x31\x39\x30" - "\x30\x31\x33\x34\x31\x31\x30\x30\x30\x37\x30\x30\x30\x31\x35\x33" - "\x32\x34\x35\x30\x30\x35\x35\x30\x30\x32\x32\x33\x32\x35\x30\x30" - "\x30\x30\x39\x30\x30\x32\x37\x38\x32\x36\x30\x30\x30\x32\x31\x30" - "\x30\x32\x38\x37\x33\x30\x30\x30\x30\x31\x38\x30\x30\x33\x30\x38" - "\x35\x30\x30\x30\x30\x31\x37\x30\x30\x33\x32\x36\x36\x35\x30\x30" - "\x30\x34\x38\x30\x30\x33\x34\x33\x36\x35\x30\x30\x30\x34\x33\x30" - "\x30\x33\x39\x31\x1E\x20\x20\x20\x37\x37\x36\x33\x37\x30\x37\x35" - "\x20\x2F\x2F\x72\x38\x32\x1E\x44\x4C\x43\x1E\x31\x39\x38\x32\x30" - "\x38\x31\x37\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x32\x30\x33" - "\x32\x30\x73\x31\x39\x37\x31\x20\x20\x20\x20\x77\x61\x75\x20\x20" - "\x20\x20\x20\x20\x73\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65" - "\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C" - "\x43\x1F\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D" - "\x77\x61\x1E\x30\x30\x1F\x61\x4C\x42\x31\x30\x32\x38\x2E\x35\x1F" - "\x62\x2E\x57\x33\x37\x20\x31\x39\x37\x31\x1E\x30\x30\x1F\x61\x33" - "\x37\x38\x2F\x2E\x30\x35\x32\x2F\x30\x39\x37\x39\x37\x1E\x31\x30" - "\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x28\x53\x74" - "\x61\x74\x65\x29\x2E\x1F\x62\x53\x74\x61\x74\x65\x20\x42\x6F\x61" - "\x72\x64\x20\x66\x6F\x72\x20\x43\x6F\x6D\x6D\x75\x6E\x69\x74\x79" - "\x20\x43\x6F\x6C\x6C\x65\x67\x65\x20\x45\x64\x75\x63\x61\x74\x69" - "\x6F\x6E\x2E\x1E\x31\x32\x1F\x61\x41\x20\x70\x6C\x61\x6E\x20\x66" - "\x6F\x72\x20\x63\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x20\x63\x6F\x6C" - "\x6C\x65\x67\x65\x20\x63\x6F\x6D\x70\x75\x74\x65\x72\x20\x64\x65" - "\x76\x65\x6C\x6F\x70\x6D\x65\x6E\x74\x2E\x1E\x20\x20\x1F\x61\x52" - "\x65\x76\x2E\x1E\x31\x20\x1F\x61\x5B\x4F\x6C\x79\x6D\x70\x69\x61" - "\x5D\x1F\x63\x31\x39\x37\x31\x2E\x1E\x20\x20\x1F\x61\x34\x37\x20" - "\x6C\x2E\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x43" - "\x6F\x76\x65\x72\x20\x74\x69\x74\x6C\x65\x2E\x1E\x20\x30\x1F\x61" - "\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x69\x65\x73\x20\x61\x6E\x64" - "\x20\x63\x6F\x6C\x6C\x65\x67\x65\x73\x1F\x78\x44\x61\x74\x61\x20" - "\x70\x72\x6F\x63\x65\x73\x73\x69\x6E\x67\x2E\x1E\x20\x30\x1F\x61" - "\x43\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x20\x63\x6F\x6C\x6C\x65\x67" - "\x65\x73\x1F\x7A\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20\x28" - "\x53\x74\x61\x74\x65\x29\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x37" - "\x36\x33\x37\x30\x37\x35\x20\x2F\x2F\x72\x38\x32\x1E\x1D" -},{ - "\x30\x30\x36\x36\x38\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" - "\x37\x31\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x34\x33\x33\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x37\x35" - "\x30\x35\x30\x30\x30\x31\x38\x30\x30\x30\x39\x33\x30\x38\x32\x30" - "\x30\x31\x36\x30\x30\x31\x31\x31\x31\x30\x30\x30\x30\x31\x39\x30" - "\x30\x31\x32\x37\x32\x34\x35\x30\x30\x37\x36\x30\x30\x31\x34\x36" - "\x32\x36\x30\x30\x30\x34\x30\x30\x30\x32\x32\x32\x33\x30\x30\x30" - "\x30\x34\x30\x30\x30\x32\x36\x32\x33\x35\x30\x30\x30\x30\x39\x30" - "\x30\x33\x30\x32\x34\x39\x30\x30\x30\x33\x32\x30\x30\x33\x31\x31" - "\x35\x30\x34\x30\x30\x33\x30\x30\x30\x33\x34\x33\x36\x33\x30\x30" - "\x30\x36\x30\x30\x30\x33\x37\x33\x1E\x20\x20\x20\x37\x30\x30\x30" - "\x31\x30\x37\x30\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x30\x30\x34" - "\x32\x37\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x30\x30\x33\x30" - "\x32\x73\x31\x39\x36\x38\x20\x20\x20\x20\x6D\x6F\x75\x61\x62\x20" - "\x20\x20\x20\x62\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65\x6E" - "\x67\x20\x20\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43" - "\x1F\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x42\x53\x31\x32\x37\x35" - "\x2E\x35\x1F\x62\x2E\x4F\x32\x1E\x30\x30\x1F\x61\x32\x32\x32\x2F" - "\x2E\x31\x35\x2F\x30\x30\x37\x1E\x31\x30\x1F\x61\x4F\x62\x65\x72" - "\x73\x74\x2C\x20\x42\x72\x75\x63\x65\x2E\x1E\x30\x30\x1F\x61\x44" - "\x65\x75\x74\x65\x72\x6F\x6E\x6F\x6D\x79\x2E\x1F\x63\x54\x68\x6F" - "\x75\x67\x68\x74\x20\x71\x75\x65\x73\x74\x69\x6F\x6E\x73\x2C\x20" - "\x62\x79\x20\x44\x6F\x6E\x20\x44\x65\x57\x65\x6C\x74\x2E\x20\x53" - "\x75\x6D\x6D\x61\x72\x79\x20\x62\x79\x20\x41\x64\x61\x6D\x20\x43" - "\x6C\x61\x72\x6B\x65\x2E\x1E\x30\x20\x1F\x61\x4A\x6F\x70\x6C\x69" - "\x6E\x2C\x20\x4D\x6F\x2E\x2C\x1F\x62\x43\x6F\x6C\x6C\x65\x67\x65" - "\x20\x50\x72\x65\x73\x73\x1F\x63\x5B\x31\x39\x36\x38\x5D\x1E\x20" - "\x20\x1F\x61\x76\x69\x69\x69\x2C\x20\x34\x35\x32\x20\x70\x2E\x1F" - "\x62\x69\x6C\x6C\x75\x73\x2E\x2C\x20\x6D\x61\x70\x73\x2E\x1F\x63" - "\x32\x32\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x35\x2E\x39\x35\x1E" - "\x30\x20\x1F\x61\x42\x69\x62\x6C\x65\x20\x73\x74\x75\x64\x79\x20" - "\x74\x65\x78\x74\x62\x6F\x6F\x6B\x20\x73\x65\x72\x69\x65\x73\x1E" - "\x20\x20\x1F\x61\x42\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x79" - "\x3A\x20\x70\x2E\x20\x34\x34\x39\x2D\x34\x35\x32\x2E\x1E\x20\x30" - "\x1F\x61\x42\x69\x62\x6C\x65\x2E\x20\x4F\x2E\x54\x2E\x20\x44\x65" - "\x75\x74\x65\x72\x6F\x6E\x6F\x6D\x79\x1F\x78\x53\x74\x75\x64\x79" - "\x1F\x78\x4F\x75\x74\x6C\x69\x6E\x65\x73\x2C\x20\x73\x79\x6C\x6C" - "\x61\x62\x69\x2C\x20\x65\x74\x63\x2E\x1E\x20\x20\x1F\x61\x20\x20" - "\x20\x37\x30\x30\x30\x31\x30\x37\x30\x20\x1E\x1D" -},{ - "\x30\x30\x38\x38\x38\x70\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" - "\x35\x20\x20\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x36\x30\x35\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x37\x35" - "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x30\x39\x30\x30\x34\x33\x30" - "\x30\x31\x32\x30\x30\x31\x30\x38\x30\x35\x30\x30\x30\x32\x30\x30" - "\x30\x31\x32\x30\x30\x38\x32\x30\x30\x31\x32\x30\x30\x31\x34\x30" - "\x31\x30\x30\x30\x30\x32\x39\x30\x30\x31\x35\x32\x32\x34\x35\x30" - "\x30\x39\x33\x30\x30\x31\x38\x31\x32\x36\x30\x30\x30\x35\x35\x30" - "\x30\x32\x37\x34\x33\x30\x30\x30\x30\x32\x38\x30\x30\x33\x32\x39" - "\x35\x30\x30\x30\x30\x38\x31\x30\x30\x33\x35\x37\x35\x30\x34\x30" - "\x30\x34\x31\x30\x30\x34\x33\x38\x36\x35\x30\x30\x30\x34\x35\x30" - "\x30\x34\x37\x39\x36\x35\x30\x30\x30\x32\x35\x30\x30\x35\x32\x34" - "\x36\x35\x31\x30\x30\x32\x32\x30\x30\x35\x34\x39\x38\x33\x30\x30" - "\x30\x33\x34\x30\x30\x35\x37\x31\x1E\x20\x20\x20\x37\x32\x30\x30" - "\x32\x35\x36\x35\x20\x1E\x44\x4C\x43\x1E\x31\x39\x37\x33\x30\x34" - "\x30\x39\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x37\x32\x30\x34\x31" - "\x38\x72\x31\x39\x37\x32\x31\x39\x30\x39\x6E\x79\x75\x20\x20\x20" - "\x20\x20\x20\x62\x20\x20\x20\x20\x30\x30\x30\x30\x30\x20\x65\x6E" - "\x67\x20\x20\x1E\x20\x20\x1F\x61\x30\x38\x33\x36\x39\x36\x38\x34" - "\x33\x33\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F" - "\x64\x44\x4C\x43\x1E\x20\x20\x1F\x61\x65\x2D\x67\x72\x2D\x2D\x2D" - "\x1E\x30\x30\x1F\x61\x42\x4C\x37\x38\x35\x1F\x62\x2E\x41\x33\x20" - "\x31\x39\x37\x32\x1E\x30\x30\x1F\x61\x32\x39\x32\x2F\x2E\x30\x38" - "\x1E\x31\x30\x1F\x61\x41\x64\x61\x6D\x2C\x20\x4A\x61\x6D\x65\x73" - "\x2C\x1F\x64\x31\x38\x36\x30\x2D\x31\x39\x30\x37\x2E\x1E\x31\x34" - "\x1F\x61\x54\x68\x65\x20\x72\x65\x6C\x69\x67\x69\x6F\x75\x73\x20" - "\x74\x65\x61\x63\x68\x65\x72\x73\x20\x6F\x66\x20\x47\x72\x65\x65" - "\x63\x65\x2E\x1F\x63\x45\x64\x69\x74\x65\x64\x20\x77\x69\x74\x68" - "\x20\x61\x20\x6D\x65\x6D\x6F\x69\x72\x2C\x20\x62\x79\x20\x68\x69" - "\x73\x20\x77\x69\x66\x65\x2C\x20\x41\x64\x65\x6C\x61\x20\x4D\x61" - "\x72\x69\x6F\x6E\x20\x41\x64\x61\x6D\x2E\x1E\x30\x20\x1F\x61\x46" - "\x72\x65\x65\x70\x6F\x72\x74\x2C\x20\x4E\x2E\x59\x2E\x2C\x1F\x62" - "\x42\x6F\x6F\x6B\x73\x20\x66\x6F\x72\x20\x4C\x69\x62\x72\x61\x72" - "\x69\x65\x73\x20\x50\x72\x65\x73\x73\x1F\x63\x5B\x31\x39\x37\x32" - "\x5D\x1E\x20\x20\x1F\x61\x78\x69\x78\x2C\x20\x6C\x76\x2C\x20\x34" - "\x36\x37\x20\x70\x2E\x1F\x63\x32\x32\x20\x63\x6D\x2E\x1E\x20\x20" - "\x1F\x61\x52\x65\x70\x72\x69\x6E\x74\x20\x6F\x66\x20\x74\x68\x65" - "\x20\x31\x39\x30\x39\x20\x65\x64\x2E\x2C\x20\x77\x68\x69\x63\x68" - "\x20\x77\x61\x73\x20\x69\x73\x73\x75\x65\x64\x20\x61\x73\x20\x74" - "\x68\x65\x20\x31\x39\x30\x34\x2D\x31\x39\x30\x36\x20\x47\x69\x66" - "\x66\x6F\x72\x64\x20\x6C\x65\x63\x74\x75\x72\x65\x73\x2E\x1E\x20" - "\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62\x69\x62\x6C" - "\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72\x65\x66\x65" - "\x72\x65\x6E\x63\x65\x73\x2E\x1E\x20\x30\x1F\x61\x47\x72\x65\x65" - "\x6B\x20\x6C\x69\x74\x65\x72\x61\x74\x75\x72\x65\x1F\x78\x48\x69" - "\x73\x74\x6F\x72\x79\x20\x61\x6E\x64\x20\x63\x72\x69\x74\x69\x63" - "\x69\x73\x6D\x2E\x1E\x20\x30\x1F\x61\x50\x68\x69\x6C\x6F\x73\x6F" - "\x70\x68\x79\x2C\x20\x41\x6E\x63\x69\x65\x6E\x74\x2E\x1E\x20\x30" - "\x1F\x61\x47\x72\x65\x65\x63\x65\x1F\x78\x52\x65\x6C\x69\x67\x69" - "\x6F\x6E\x2E\x1E\x20\x30\x1F\x61\x47\x69\x66\x66\x6F\x72\x64\x20" - "\x6C\x65\x63\x74\x75\x72\x65\x73\x2C\x1F\x76\x31\x39\x30\x34\x2D" - "\x31\x39\x30\x36\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x37\x32\x30" - "\x30\x32\x35\x36\x35\x20\x1E\x1D" -},{ - "\x30\x31\x31\x32\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" - "\x35\x20\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x31\x33" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x37\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x34\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x38\x34\x33\x30\x32\x30\x30\x30\x33\x31\x30\x30\x30\x37\x35" - "\x30\x34\x30\x30\x30\x31\x38\x30\x30\x31\x30\x36\x30\x35\x30\x30" - "\x30\x32\x31\x30\x30\x31\x32\x34\x30\x38\x32\x30\x30\x31\x38\x30" - "\x30\x31\x34\x35\x31\x30\x30\x30\x30\x34\x32\x30\x30\x31\x36\x33" - "\x32\x34\x35\x30\x31\x35\x38\x30\x30\x32\x30\x35\x32\x35\x30\x30" - "\x30\x33\x37\x30\x30\x33\x36\x33\x32\x36\x30\x30\x30\x34\x35\x30" - "\x30\x34\x30\x30\x33\x30\x30\x30\x30\x35\x30\x30\x30\x34\x34\x35" - "\x34\x34\x30\x30\x30\x33\x35\x30\x30\x34\x39\x35\x36\x33\x30\x30" - "\x30\x36\x34\x30\x30\x35\x33\x30\x36\x33\x30\x30\x30\x36\x34\x30" - "\x30\x35\x39\x34\x36\x33\x30\x30\x30\x36\x32\x30\x30\x36\x35\x38" - "\x36\x33\x30\x30\x30\x36\x33\x30\x30\x37\x32\x30\x37\x33\x30\x30" - "\x30\x36\x30\x30\x30\x37\x38\x33\x1E\x20\x20\x20\x38\x30\x30\x38" - "\x32\x33\x32\x39\x20\x1E\x44\x4C\x43\x1E\x31\x39\x38\x31\x30\x35" - "\x32\x38\x30\x30\x30\x30\x30\x30\x2E\x30\x1E\x38\x31\x30\x35\x32" - "\x36\x73\x31\x39\x38\x30\x20\x20\x20\x20\x63\x74\x75\x61\x66\x20" - "\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x30\x31\x30\x20\x65\x6E" - "\x67\x20\x20\x1E\x20\x20\x1F\x61\x30\x38\x37\x39\x38\x33\x32\x33" - "\x35\x35\x20\x28\x70\x62\x6B\x2E\x29\x20\x3A\x1F\x63\x24\x34\x2E" - "\x39\x35\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1F" - "\x64\x44\x4C\x43\x1E\x30\x30\x1F\x61\x42\x53\x31\x34\x33\x33\x1F" - "\x62\x2E\x53\x35\x20\x31\x39\x38\x30\x1E\x30\x30\x1F\x61\x32\x32" - "\x33\x2F\x2E\x32\x30\x37\x37\x1F\x32\x31\x39\x1E\x31\x30\x1F\x61" - "\x53\x6D\x69\x74\x68\x2C\x20\x47\x65\x6F\x72\x67\x65\x20\x41\x64" - "\x61\x6D\x2C\x1F\x63\x53\x69\x72\x2C\x1F\x64\x31\x38\x35\x36\x2D" - "\x31\x39\x34\x32\x2E\x1E\x31\x30\x1F\x61\x46\x6F\x75\x72\x20\x70" - "\x73\x61\x6C\x6D\x73\x20\x3A\x1F\x62\x58\x58\x49\x49\x49\x2C\x20" - "\x58\x58\x58\x56\x49\x2C\x20\x4C\x49\x49\x2C\x20\x43\x58\x58\x49" - "\x20\x2F\x1F\x63\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x65\x64\x20" - "\x66\x6F\x72\x20\x70\x72\x61\x63\x74\x69\x63\x61\x6C\x20\x75\x73" - "\x65\x20\x62\x79\x20\x47\x65\x6F\x72\x67\x65\x20\x41\x64\x61\x6D" - "\x20\x53\x6D\x69\x74\x68\x20\x3B\x20\x69\x6E\x74\x72\x6F\x64\x75" - "\x63\x74\x69\x6F\x6E\x20\x62\x79\x20\x46\x2E\x46\x2E\x20\x42\x72" - "\x75\x63\x65\x20\x3B\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74\x69" - "\x6F\x6E\x73\x20\x62\x79\x20\x52\x6F\x6E\x20\x4D\x63\x43\x61\x72" - "\x74\x79\x2E\x1E\x20\x20\x1F\x61\x53\x68\x65\x70\x68\x65\x72\x64" - "\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74\x65\x64\x20\x63\x6C\x61" - "\x73\x73\x69\x63\x20\x65\x64\x2E\x1E\x30\x20\x1F\x61\x4E\x65\x77" - "\x20\x43\x61\x6E\x61\x61\x6E\x2C\x20\x43\x6F\x6E\x6E\x2E\x20\x3A" - "\x1F\x62\x4B\x65\x61\x74\x73\x20\x50\x75\x62\x2E\x2C\x1F\x63\x63" - "\x31\x39\x38\x30\x2E\x1E\x20\x20\x1F\x61\x38\x31\x20\x70\x2E\x2C" - "\x20\x5B\x35\x5D\x20\x6C\x65\x61\x76\x65\x73\x20\x6F\x66\x20\x70" - "\x6C\x61\x74\x65\x73\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F" - "\x63\x32\x31\x20\x63\x6D\x2E\x1E\x20\x32\x1F\x61\x41\x20\x53\x68" - "\x65\x70\x68\x65\x72\x64\x20\x69\x6C\x6C\x75\x73\x74\x72\x61\x74" - "\x65\x64\x20\x63\x6C\x61\x73\x73\x69\x63\x1E\x30\x30\x1F\x61\x42" - "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" - "\x6C\x6D\x73\x20\x58\x58\x49\x49\x49\x1F\x78\x43\x72\x69\x74\x69" - "\x63\x69\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61" - "\x74\x69\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42" - "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" - "\x6C\x6D\x73\x20\x58\x58\x58\x56\x49\x1F\x78\x43\x72\x69\x74\x69" - "\x63\x69\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61" - "\x74\x69\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42" - "\x69\x62\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61" - "\x6C\x6D\x73\x20\x4C\x49\x49\x1F\x78\x43\x72\x69\x74\x69\x63\x69" - "\x73\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61\x74\x69" - "\x6F\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x30\x1F\x61\x42\x69\x62" - "\x6C\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61\x6C\x6D" - "\x73\x20\x43\x58\x58\x49\x1F\x78\x43\x72\x69\x74\x69\x63\x69\x73" - "\x6D\x2C\x20\x69\x6E\x74\x65\x72\x70\x72\x65\x74\x61\x74\x69\x6F" - "\x6E\x2C\x20\x65\x74\x63\x2E\x1E\x30\x31\x1F\x61\x42\x69\x62\x6C" - "\x65\x2E\x1F\x70\x4F\x2E\x54\x2E\x1F\x70\x50\x73\x61\x6C\x6D\x73" - "\x20\x58\x58\x49\x49\x49\x2C\x20\x58\x58\x58\x56\x49\x2C\x20\x4C" - "\x49\x49\x2C\x20\x43\x58\x58\x49\x2E\x1F\x6C\x45\x6E\x67\x6C\x69" - "\x73\x68\x2E\x1E\x20\x20\x1F\x61\x20\x20\x20\x38\x30\x30\x38\x32" - "\x33\x32\x39\x20\x1E\x1D" -},{ - "\x30\x31\x34\x33\x33\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x34\x32" - "\x31\x20\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x33\x31\x30" - "\x30\x30\x37\x31\x30\x32\x32\x30\x30\x31\x34\x30\x30\x31\x30\x32" - "\x30\x33\x30\x30\x30\x31\x31\x30\x30\x31\x31\x36\x30\x33\x32\x30" - "\x30\x31\x37\x30\x30\x31\x32\x37\x30\x33\x35\x30\x30\x32\x30\x30" - "\x30\x31\x34\x34\x30\x33\x35\x30\x30\x32\x37\x30\x30\x31\x36\x34" - "\x30\x34\x30\x30\x30\x39\x36\x30\x30\x31\x39\x31\x30\x34\x32\x30" - "\x30\x31\x33\x30\x30\x32\x38\x37\x30\x35\x30\x30\x30\x32\x30\x30" - "\x30\x33\x30\x30\x30\x37\x30\x30\x30\x31\x38\x30\x30\x33\x32\x30" - "\x30\x37\x32\x30\x30\x30\x39\x30\x30\x33\x33\x38\x30\x38\x32\x30" - "\x30\x31\x34\x30\x30\x33\x34\x37\x32\x31\x30\x30\x30\x31\x39\x30" - "\x30\x33\x36\x31\x32\x32\x32\x30\x30\x31\x39\x30\x30\x33\x38\x30" - "\x32\x34\x35\x30\x30\x32\x30\x30\x30\x33\x39\x39\x32\x36\x30\x30" - "\x30\x34\x33\x30\x30\x34\x31\x39\x32\x36\x35\x30\x30\x35\x38\x30" - "\x30\x34\x36\x32\x33\x30\x30\x30\x30\x31\x37\x30\x30\x35\x32\x30" - "\x33\x31\x30\x30\x30\x36\x32\x30\x30\x35\x33\x37\x33\x35\x30\x30" - "\x30\x31\x31\x30\x30\x35\x39\x39\x33\x36\x32\x30\x30\x33\x32\x30" - "\x30\x36\x31\x30\x35\x30\x30\x30\x30\x32\x34\x30\x30\x36\x34\x32" - "\x36\x35\x30\x30\x30\x34\x36\x30\x30\x36\x36\x36\x36\x35\x30\x30" - "\x30\x33\x36\x30\x30\x37\x31\x32\x36\x35\x30\x30\x30\x33\x39\x30" - "\x30\x37\x34\x38\x36\x35\x30\x30\x30\x33\x35\x30\x30\x37\x38\x37" - "\x36\x35\x30\x30\x30\x33\x33\x30\x30\x38\x32\x32\x37\x38\x30\x30" - "\x30\x38\x32\x30\x30\x38\x35\x35\x38\x35\x30\x30\x30\x37\x34\x30" - "\x30\x39\x33\x37\x1E\x41\x43\x44\x2D\x33\x38\x33\x37\x1E\x44\x4C" - "\x43\x1E\x31\x39\x39\x34\x30\x36\x31\x34\x30\x36\x35\x36\x31\x34" - "\x2E\x30\x1E\x39\x32\x30\x37\x32\x38\x63\x31\x39\x39\x32\x39\x39" - "\x39\x39\x63\x74\x75\x6D\x6E\x31\x70\x20\x20\x20\x20\x20\x20\x20" - "\x30\x20\x20\x20\x61\x30\x65\x6E\x67\x20\x64\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x39\x32\x36\x34\x36\x30\x36\x32\x20\x1F\x7A\x73\x6E" - "\x20\x39\x32\x30\x30\x34\x34\x33\x30\x20\x1E\x30\x20\x1F\x61\x31" - "\x30\x36\x34\x2D\x33\x39\x32\x33\x1E\x20\x20\x1F\x61\x49\x45\x52" - "\x4E\x45\x38\x1E\x20\x20\x1F\x61\x30\x30\x38\x31\x38\x37\x1F\x62" - "\x55\x53\x50\x53\x1E\x20\x20\x1F\x61\x28\x4F\x43\x6F\x4C\x43\x29" - "\x32\x36\x32\x37\x33\x32\x37\x35\x1E\x30\x30\x1F\x69\x6C\x63\x6D" - "\x61\x72\x63\x2F\x41\x51\x50\x2D\x36\x32\x38\x35\x2F\x4A\x45\x41" - "\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x4E\x53\x44\x50\x1F\x63\x4E\x53" - "\x44\x50\x1F\x64\x57\x61\x55\x1F\x64\x4E\x49\x43\x1F\x64\x44\x4E" - "\x41\x4C\x1F\x64\x4F\x55\x43\x41\x1F\x64\x4E\x53\x54\x1F\x64\x44" - "\x4C\x43\x1F\x64\x4E\x53\x54\x1F\x64\x4E\x53\x44\x50\x1F\x64\x4E" - "\x53\x54\x1F\x64\x44\x4C\x43\x1F\x64\x49\x6E\x55\x1F\x64\x4D\x48" - "\x1F\x64\x4E\x53\x44\x50\x1F\x64\x4E\x1F\x64\x44\x4C\x43\x1F\x64" - "\x4D\x69\x55\x1E\x20\x20\x1F\x61\x6E\x73\x64\x70\x1F\x61\x6C\x63" - "\x1E\x30\x30\x1F\x61\x54\x4B\x35\x31\x30\x35\x2E\x35\x1F\x62\x2E" - "\x52\x34\x34\x38\x1E\x30\x20\x1F\x61\x54\x4B\x35\x31\x30\x35\x2E" - "\x35\x2E\x52\x34\x34\x38\x1E\x20\x30\x1F\x61\x58\x32\x30\x30\x1E" - "\x30\x30\x1F\x61\x33\x38\x34\x2E\x33\x1F\x32\x32\x30\x1E\x30\x20" - "\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x77\x6F\x72\x6C\x64" - "\x1E\x20\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x77\x6F" - "\x72\x6C\x64\x1E\x30\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74" - "\x20\x77\x6F\x72\x6C\x64\x2E\x1E\x20\x20\x1F\x61\x57\x65\x73\x74" - "\x70\x6F\x72\x74\x2C\x20\x43\x54\x20\x3A\x1F\x62\x4D\x65\x63\x6B" - "\x6C\x65\x72\x20\x43\x6F\x72\x70\x2E\x2C\x1F\x63\x63\x31\x39\x39" - "\x32\x2D\x1E\x20\x20\x1F\x61\x4D\x65\x63\x6B\x6C\x65\x72\x20\x43" - "\x6F\x72\x70\x2E\x2C\x20\x31\x31\x20\x46\x65\x72\x72\x79\x20\x4C" - "\x61\x6E\x65\x20\x57\x65\x73\x74\x2C\x20\x57\x65\x73\x74\x70\x6F" - "\x72\x74\x2C\x20\x43\x54\x20\x30\x36\x38\x38\x30\x1E\x20\x20\x1F" - "\x61\x76\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20" - "\x1F\x61\x4D\x6F\x6E\x74\x68\x6C\x79\x20\x28\x65\x78\x63\x65\x70" - "\x74\x20\x4A\x61\x6E\x2E\x2F\x46\x65\x62\x2E\x2C\x20\x4A\x75\x6C" - "\x79\x2F\x41\x75\x67\x2E\x2C\x20\x4E\x6F\x76\x2E\x2F\x44\x65\x63" - "\x2E\x20\x63\x6F\x6D\x62\x69\x6E\x65\x64\x29\x1E\x20\x20\x1F\x61" - "\x24\x39\x37\x2E\x30\x30\x1E\x30\x20\x1F\x61\x56\x6F\x6C\x2E\x20" - "\x33\x2C\x20\x6E\x6F\x2E\x20\x37\x20\x28\x53\x65\x70\x74\x2E\x20" - "\x31\x39\x39\x32\x29\x2D\x1E\x20\x20\x1F\x61\x54\x69\x74\x6C\x65" - "\x20\x66\x72\x6F\x6D\x20\x63\x61\x70\x74\x69\x6F\x6E\x2E\x1E\x20" - "\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x28\x43\x6F\x6D" - "\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72\x6B\x29\x1F\x78" - "\x50\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x30\x1F" - "\x61\x43\x6F\x6D\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72" - "\x6B\x73\x1F\x78\x50\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E" - "\x1E\x20\x30\x1F\x61\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E" - "\x20\x6E\x65\x74\x77\x6F\x72\x6B\x73\x1F\x78\x50\x65\x72\x69\x6F" - "\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x32\x1F\x61\x43\x6F\x6D\x70" - "\x75\x74\x65\x72\x20\x53\x79\x73\x74\x65\x6D\x73\x1F\x78\x70\x65" - "\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x20\x32\x1F\x61\x4F" - "\x6E\x6C\x69\x6E\x65\x20\x53\x79\x73\x74\x65\x6D\x73\x1F\x78\x70" - "\x65\x72\x69\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x30\x30\x1F\x74" - "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x26\x20\x65\x64\x75\x63\x61" - "\x74\x69\x6F\x6E\x20\x6E\x65\x74\x77\x6F\x72\x6B\x69\x6E\x67\x1F" - "\x78\x31\x30\x35\x31\x2D\x34\x37\x39\x31\x1F\x77\x28\x44\x4C\x43" - "\x29\x20\x20\x20\x39\x30\x36\x34\x36\x36\x31\x33\x1F\x77\x28\x4F" - "\x43\x6F\x4C\x43\x29\x32\x31\x39\x37\x34\x34\x34\x38\x1E\x20\x20" - "\x1F\x61\x44\x4C\x43\x1F\x61\x44\x4E\x41\x4C\x1F\x61\x44\x4E\x47" - "\x41\x1F\x61\x49\x6E\x55\x1F\x61\x4D\x42\x43\x6F\x1F\x61\x4D\x48" - "\x2D\x45\x64\x1F\x61\x4D\x64\x42\x4A\x1F\x61\x4D\x69\x55\x1F\x61" - "\x4D\x6F\x4B\x4C\x1F\x61\x4E\x1F\x61\x4E\x49\x43\x1F\x61\x54\x78" - "\x48\x52\x1F\x61\x57\x61\x55\x1E\x1D" -},{ - "\x30\x31\x33\x33\x30\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x33\x37" - "\x33\x35\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x30\x37\x31\x30\x32\x32\x30\x30\x32\x35\x30\x30\x30\x38\x38" - "\x30\x33\x35\x30\x30\x32\x30\x30\x30\x31\x31\x33\x30\x33\x35\x30" - "\x30\x32\x37\x30\x30\x31\x33\x33\x30\x34\x30\x30\x30\x32\x39\x30" - "\x30\x31\x36\x30\x30\x34\x32\x30\x30\x31\x36\x30\x30\x31\x38\x39" - "\x30\x34\x33\x30\x30\x31\x32\x30\x30\x32\x30\x35\x30\x35\x35\x30" - "\x30\x31\x32\x30\x30\x32\x31\x37\x30\x38\x32\x30\x30\x31\x32\x30" - "\x30\x32\x32\x39\x31\x33\x30\x30\x30\x33\x35\x30\x30\x32\x34\x31" - "\x32\x31\x30\x30\x30\x32\x37\x30\x30\x32\x37\x36\x32\x32\x32\x30" - "\x30\x32\x39\x30\x30\x33\x30\x33\x32\x34\x35\x30\x30\x31\x37\x30" - "\x30\x33\x33\x32\x32\x36\x30\x30\x30\x35\x34\x30\x30\x33\x34\x39" - "\x32\x36\x35\x30\x30\x36\x39\x30\x30\x34\x30\x33\x33\x30\x30\x30" - "\x30\x32\x35\x30\x30\x34\x37\x32\x33\x31\x30\x30\x30\x31\x32\x30" - "\x30\x34\x39\x37\x33\x35\x30\x30\x30\x32\x31\x30\x30\x35\x30\x39" - "\x33\x36\x32\x30\x30\x33\x33\x30\x30\x35\x33\x30\x35\x30\x30\x30" - "\x30\x32\x34\x30\x30\x35\x36\x33\x35\x38\x30\x30\x30\x35\x38\x30" - "\x30\x35\x38\x37\x37\x38\x30\x30\x30\x38\x33\x30\x30\x36\x34\x35" - "\x37\x38\x30\x30\x30\x35\x31\x30\x30\x37\x32\x38\x37\x38\x35\x30" - "\x30\x38\x33\x30\x30\x37\x37\x39\x37\x38\x37\x30\x30\x39\x34\x30" - "\x30\x38\x36\x32\x1E\x41\x43\x44\x2D\x33\x37\x39\x39\x1E\x44\x4C" - "\x43\x1E\x31\x39\x39\x34\x30\x36\x31\x34\x30\x39\x30\x35\x31\x34" - "\x2E\x30\x1E\x39\x32\x30\x37\x32\x33\x63\x31\x39\x39\x31\x39\x39" - "\x39\x39\x6F\x6E\x63\x6D\x72\x34\x70\x20\x20\x20\x20\x20\x20\x20" - "\x30\x20\x20\x20\x61\x30\x65\x6E\x67\x20\x64\x1E\x20\x20\x1F\x61" - "\x63\x6E\x20\x39\x32\x30\x33\x31\x36\x34\x31\x20\x1E\x30\x20\x1F" - "\x61\x31\x31\x38\x37\x2D\x37\x30\x38\x31\x1F\x79\x30\x30\x32\x35" - "\x2D\x39\x35\x33\x35\x1E\x20\x20\x1F\x61\x28\x4F\x43\x6F\x4C\x43" - "\x29\x32\x36\x32\x34\x34\x38\x34\x34\x1E\x30\x30\x1F\x69\x6C\x63" - "\x6D\x61\x72\x63\x2F\x41\x51\x46\x2D\x32\x38\x39\x36\x2F\x4A\x45" - "\x41\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x43\x61\x4F\x4F\x43\x4D\x1F" - "\x62\x65\x6E\x67\x1F\x63\x43\x61\x4F\x4F\x4E\x4C\x1F\x64\x49\x6E" - "\x55\x1E\x20\x20\x1F\x61\x6E\x6C\x63\x1F\x61\x69\x73\x64\x73\x2F" - "\x63\x1E\x20\x20\x1F\x61\x6E\x2D\x63\x6E\x2D\x2D\x2D\x1E\x20\x32" - "\x1F\x61\x48\x44\x39\x36\x39\x36\x2A\x1E\x31\x20\x1F\x61\x30\x30" - "\x34\x1F\x32\x31\x32\x1E\x30\x20\x1F\x61\x49\x6E\x66\x6F\x20\x43" - "\x61\x6E\x61\x64\x61\x20\x28\x44\x6F\x77\x6E\x73\x76\x69\x65\x77" - "\x2C\x20\x4F\x6E\x74\x2E\x29\x2E\x1E\x30\x20\x1F\x61\x49\x6E\x66" - "\x6F\x20\x43\x61\x6E\x2E\x1F\x62\x28\x44\x6F\x77\x6E\x73\x76\x69" - "\x65\x77\x29\x1E\x20\x30\x1F\x61\x49\x6E\x66\x6F\x20\x43\x61\x6E" - "\x61\x64\x61\x1F\x62\x28\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x29" - "\x1E\x30\x30\x1F\x61\x49\x6E\x66\x6F\x20\x43\x61\x6E\x61\x64\x61" - "\x2E\x1E\x20\x20\x1F\x61\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x2C" - "\x20\x4F\x6E\x74\x2E\x20\x3A\x1F\x62\x4C\x61\x75\x72\x65\x6E\x74" - "\x69\x61\x6E\x20\x54\x65\x63\x68\x6E\x6F\x6D\x65\x64\x69\x61\x2C" - "\x1F\x63\x31\x39\x39\x31\x2D\x1E\x20\x20\x1F\x61\x4C\x61\x75\x72" - "\x65\x6E\x74\x69\x61\x6E\x20\x54\x65\x63\x68\x6E\x6F\x6D\x65\x64" - "\x69\x61\x2C\x20\x35\x30\x31\x20\x4F\x61\x6B\x64\x61\x6C\x65\x20" - "\x52\x64\x2E\x2C\x20\x44\x6F\x77\x6E\x73\x76\x69\x65\x77\x2C\x20" - "\x4F\x6E\x74\x2E\x20\x4D\x33\x4E\x20\x31\x57\x37\x1E\x20\x20\x1F" - "\x61\x76\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20\x3B\x1F\x63\x34" - "\x30\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x4D\x6F\x6E\x74\x68\x6C" - "\x79\x1E\x20\x20\x1F\x61\x24\x35\x30\x2E\x30\x30\x20\x70\x65\x72" - "\x20\x79\x65\x61\x72\x2E\x1E\x30\x20\x1F\x61\x56\x6F\x6C\x2E\x20" - "\x31\x36\x2C\x20\x6E\x6F\x2E\x20\x39\x20\x28\x53\x65\x70\x74\x2E" - "\x20\x31\x39\x39\x31\x29\x2D\x1E\x20\x20\x1F\x61\x54\x69\x74\x6C" - "\x65\x20\x66\x72\x6F\x6D\x20\x63\x61\x70\x74\x69\x6F\x6E\x2E\x1E" - "\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x3A\x20\x4E\x65" - "\x74\x77\x6F\x72\x6B\x20\x77\x6F\x72\x6C\x64\x20\x43\x61\x6E\x61" - "\x64\x61\x2C\x20\x53\x65\x70\x74\x2E\x20\x31\x39\x39\x31\x2D\x4A" - "\x61\x6E\x2E\x20\x31\x39\x39\x32\x2E\x1E\x30\x30\x1F\x74\x43\x6F" - "\x6D\x70\x75\x74\x65\x72\x20\x64\x61\x74\x61\x1F\x78\x30\x33\x38" - "\x33\x2D\x37\x33\x31\x39\x1F\x77\x28\x43\x61\x4F\x4F\x4E\x4C\x29" - "\x37\x37\x30\x33\x30\x38\x33\x31\x37\x1F\x77\x28\x4F\x43\x6F\x4C" - "\x43\x29\x31\x31\x34\x31\x36\x34\x37\x39\x1F\x77\x28\x44\x4C\x43" - "\x29\x63\x6E\x20\x37\x37\x30\x33\x30\x38\x33\x31\x1E\x30\x35\x1F" - "\x74\x49\x2E\x54\x2E\x20\x6D\x61\x67\x61\x7A\x69\x6E\x65\x20\x28" - "\x54\x6F\x72\x6F\x6E\x74\x6F\x2C\x20\x4F\x6E\x74\x2E\x29\x1F\x77" - "\x28\x4F\x43\x6F\x4C\x43\x29\x32\x37\x36\x39\x39\x30\x36\x36\x1E" - "\x30\x31\x1F\x74\x4E\x65\x74\x77\x6F\x72\x6B\x20\x77\x6F\x72\x6C" - "\x64\x20\x43\x61\x6E\x61\x64\x61\x1F\x67\x46\x65\x62\x2E\x20\x31" - "\x39\x39\x32\x1F\x78\x31\x31\x38\x37\x2D\x32\x39\x38\x35\x1F\x77" - "\x28\x4F\x43\x6F\x4C\x43\x29\x32\x35\x33\x31\x34\x30\x31\x32\x1F" - "\x77\x28\x43\x61\x4F\x4F\x4E\x4C\x29\x39\x32\x30\x33\x30\x35\x37" - "\x32\x35\x1E\x31\x20\x1F\x74\x4E\x65\x74\x77\x6F\x72\x6B\x20\x77" - "\x6F\x72\x6C\x64\x20\x43\x61\x6E\x61\x64\x61\x1F\x67\x53\x65\x70" - "\x74\x2E\x20\x31\x39\x39\x31\x2D\x4A\x61\x6E\x2E\x20\x31\x39\x39" - "\x32\x1F\x78\x31\x31\x38\x37\x2D\x32\x39\x38\x35\x1F\x77\x28\x4F" - "\x43\x6F\x4C\x43\x29\x32\x35\x33\x31\x34\x30\x31\x32\x1F\x77\x28" - "\x43\x61\x4F\x4F\x4E\x4C\x29\x39\x32\x30\x33\x30\x35\x37\x32\x35" - "\x1E\x1D" -},{ - "\x30\x30\x38\x30\x33\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" - "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x33\x30\x30\x30\x34\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x31\x33\x30\x30\x38\x30" - "\x30\x34\x31\x30\x30\x30\x33\x30\x30\x31\x30\x30\x30\x31\x37\x30" - "\x30\x30\x37\x31\x30\x32\x30\x30\x30\x31\x35\x30\x30\x30\x38\x38" - "\x30\x33\x35\x30\x30\x32\x37\x30\x30\x31\x30\x33\x30\x34\x30\x30" - "\x30\x31\x33\x30\x30\x31\x33\x30\x30\x34\x33\x30\x30\x31\x32\x30" - "\x30\x31\x34\x33\x30\x35\x30\x30\x30\x32\x38\x30\x30\x31\x35\x35" - "\x30\x38\x32\x30\x30\x31\x38\x30\x30\x31\x38\x33\x31\x30\x30\x30" - "\x30\x32\x35\x30\x30\x32\x30\x31\x32\x34\x35\x30\x30\x39\x35\x30" - "\x30\x32\x32\x36\x32\x35\x30\x30\x30\x31\x32\x30\x30\x33\x32\x31" - "\x32\x36\x30\x30\x30\x33\x34\x30\x30\x33\x33\x33\x32\x36\x33\x30" - "\x30\x30\x39\x30\x30\x33\x36\x37\x33\x30\x30\x30\x30\x31\x31\x30" - "\x30\x33\x37\x36\x35\x30\x30\x30\x30\x32\x30\x30\x30\x33\x38\x37" - "\x36\x33\x30\x30\x30\x33\x38\x30\x30\x34\x30\x37\x36\x30\x30\x30" - "\x30\x32\x32\x30\x30\x34\x34\x35\x36\x30\x30\x30\x30\x31\x35\x30" - "\x30\x34\x36\x37\x36\x35\x30\x30\x30\x33\x31\x30\x30\x34\x38\x32" - "\x1E\x41\x43\x44\x2D\x33\x37\x39\x32\x1E\x44\x4C\x43\x1E\x31\x39" - "\x39\x33\x31\x32\x31\x35\x30\x38\x34\x36\x30\x35\x2E\x37\x1E\x39" - "\x33\x31\x32\x30\x36\x73\x31\x39\x39\x33\x20\x20\x20\x20\x6E\x79" - "\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x30\x30\x31\x20" - "\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61\x20\x20\x20\x39" - "\x33\x30\x34\x37\x39\x39\x32\x20\x1E\x20\x20\x1F\x61\x31\x35\x36" - "\x32\x38\x32\x37\x35\x34\x35\x1E\x30\x30\x1F\x69\x6C\x63\x6D\x61" - "\x72\x63\x2F\x41\x52\x55\x2D\x32\x33\x36\x34\x2F\x53\x54\x45\x56" - "\x45\x53\x1E\x20\x20\x1F\x61\x44\x4C\x43\x1F\x63\x44\x4C\x43\x1E" - "\x20\x20\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x30\x30\x1F\x61" - "\x50\x4E\x31\x39\x39\x32\x2E\x37\x37\x2E\x54\x36\x33\x1F\x62\x43" - "\x33\x37\x20\x31\x39\x39\x33\x1E\x30\x30\x1F\x61\x37\x39\x31\x2E" - "\x34\x35\x2F\x37\x32\x1F\x32\x32\x30\x1E\x31\x20\x1F\x61\x43\x61" - "\x72\x74\x65\x72\x2C\x20\x42\x69\x6C\x6C\x2C\x1F\x64\x31\x39\x34" - "\x39\x2D\x1E\x31\x34\x1F\x61\x54\x68\x65\x20\x6C\x61\x74\x65\x20" - "\x73\x68\x69\x66\x74\x20\x3A\x1F\x62\x4C\x65\x74\x74\x65\x72\x6D" - "\x61\x6E\x2C\x20\x4C\x65\x6E\x6F\x2C\x20\x61\x6E\x64\x20\x74\x68" - "\x65\x20\x6E\x65\x74\x77\x6F\x72\x6B\x20\x62\x61\x74\x74\x6C\x65" - "\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x6E\x69\x67\x68\x74\x20\x2F" - "\x1F\x63\x62\x79\x20\x42\x69\x6C\x6C\x20\x43\x61\x72\x74\x65\x72" - "\x2E\x1E\x20\x20\x1F\x61\x31\x73\x74\x20\x65\x64\x2E\x1E\x20\x20" - "\x1F\x61\x4E\x65\x77\x20\x59\x6F\x72\x6B\x20\x3A\x1F\x62\x48\x79" - "\x70\x65\x72\x69\x6F\x6E\x2C\x1F\x63\x63\x31\x39\x39\x33\x2E\x1E" - "\x20\x20\x1F\x61\x39\x34\x30\x32\x1E\x20\x20\x1F\x61\x70\x2E\x20" - "\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73" - "\x20\x69\x6E\x64\x65\x78\x2E\x1E\x30\x30\x1F\x61\x54\x6F\x6E\x69" - "\x67\x68\x74\x20\x73\x68\x6F\x77\x20\x28\x54\x65\x6C\x65\x76\x69" - "\x73\x69\x6F\x6E\x20\x70\x72\x6F\x67\x72\x61\x6D\x29\x1E\x31\x30" - "\x1F\x61\x4C\x65\x74\x74\x65\x72\x6D\x61\x6E\x2C\x20\x44\x61\x76" - "\x69\x64\x2E\x1E\x31\x30\x1F\x61\x4C\x65\x6E\x6F\x2C\x20\x4A\x61" - "\x79\x2E\x1E\x20\x30\x1F\x61\x54\x61\x6C\x6B\x20\x73\x68\x6F\x77" - "\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" - "\x2E\x1E\x1D" -},{ - "\x30\x30\x37\x36\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x36" - "\x35\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x30\x39" - "\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x32\x36\x30\x31\x30\x30" - "\x30\x31\x37\x30\x30\x30\x36\x37\x30\x32\x30\x30\x30\x31\x35\x30" - "\x30\x30\x38\x34\x30\x33\x35\x30\x30\x32\x39\x30\x30\x30\x39\x39" - "\x30\x34\x30\x30\x30\x31\x33\x30\x30\x31\x32\x38\x30\x35\x30\x30" - "\x30\x32\x39\x30\x30\x31\x34\x31\x30\x38\x32\x30\x30\x31\x36\x30" - "\x30\x31\x37\x30\x32\x34\x35\x30\x30\x37\x36\x30\x30\x31\x38\x36" - "\x32\x35\x30\x30\x30\x31\x36\x30\x30\x32\x36\x32\x32\x36\x30\x30" - "\x30\x35\x36\x30\x30\x32\x37\x38\x32\x36\x33\x30\x30\x30\x39\x30" - "\x30\x33\x33\x34\x33\x30\x30\x30\x30\x31\x31\x30\x30\x33\x34\x33" - "\x34\x34\x30\x30\x30\x33\x32\x30\x30\x33\x35\x34\x35\x30\x30\x30" - "\x30\x32\x30\x30\x30\x33\x38\x36\x36\x35\x30\x30\x30\x33\x32\x30" - "\x30\x34\x30\x36\x36\x35\x30\x30\x30\x31\x39\x30\x30\x34\x33\x38" - "\x37\x30\x30\x30\x30\x32\x35\x30\x30\x34\x35\x37\x37\x30\x30\x30" - "\x30\x31\x38\x30\x30\x34\x38\x32\x1E\x41\x43\x44\x2D\x33\x36\x36" - "\x35\x1E\x31\x39\x39\x33\x30\x37\x33\x30\x30\x39\x32\x30\x30\x34" - "\x2E\x31\x1E\x39\x33\x30\x37\x32\x31\x73\x31\x39\x39\x33\x20\x20" - "\x20\x20\x6E\x6A\x75\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20" - "\x30\x30\x31\x20\x30\x20\x65\x6E\x67\x20\x20\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x39\x33\x30\x33\x30\x37\x37\x35\x20\x1E\x20\x20\x1F" - "\x61\x30\x31\x33\x32\x38\x39\x36\x36\x31\x33\x1E\x30\x30\x1F\x69" - "\x6C\x63\x6D\x61\x72\x63\x2F\x41\x52\x49\x2D\x33\x38\x30\x34\x2F" - "\x4A\x55\x4C\x49\x41\x4E\x4E\x45\x1E\x20\x20\x1F\x61\x44\x4C\x43" - "\x1F\x63\x44\x4C\x43\x1E\x30\x30\x1F\x61\x54\x4B\x35\x31\x30\x35" - "\x2E\x38\x37\x35\x2E\x49\x35\x37\x1F\x62\x49\x35\x36\x20\x31\x39" - "\x39\x33\x1E\x30\x30\x1F\x61\x33\x38\x34\x2E\x33\x2F\x34\x1F\x32" - "\x32\x30\x1E\x30\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20" - "\x3A\x1F\x62\x6D\x61\x69\x6C\x69\x6E\x67\x20\x6C\x69\x73\x74\x73" - "\x20\x2F\x1F\x63\x65\x64\x69\x74\x65\x64\x20\x62\x79\x20\x45\x64" - "\x77\x61\x72\x64\x20\x54\x2E\x4C\x2E\x20\x48\x61\x72\x64\x69\x65" - "\x2C\x20\x56\x69\x76\x69\x61\x6E\x20\x4E\x65\x6F\x75\x2E\x1E\x20" - "\x20\x1F\x61\x55\x70\x64\x61\x74\x65\x64\x20\x65\x64\x2E\x1E\x20" - "\x20\x1F\x61\x45\x6E\x67\x6C\x65\x77\x6F\x6F\x64\x20\x43\x6C\x69" - "\x66\x66\x73\x2C\x20\x4E\x2E\x4A\x2E\x20\x3A\x1F\x62\x50\x54\x52" - "\x20\x50\x72\x65\x6E\x74\x69\x63\x65\x20\x48\x61\x6C\x6C\x2C\x1F" - "\x63\x31\x39\x39\x33\x2E\x1E\x20\x20\x1F\x61\x39\x33\x30\x38\x1E" - "\x20\x20\x1F\x61\x70\x2E\x20\x63\x6D\x2E\x1E\x20\x30\x1F\x61\x49" - "\x6E\x74\x65\x72\x6E\x65\x74\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74" - "\x69\x6F\x6E\x20\x73\x65\x72\x69\x65\x73\x1E\x20\x20\x1F\x61\x49" - "\x6E\x63\x6C\x75\x64\x65\x73\x20\x69\x6E\x64\x65\x78\x2E\x1E\x20" - "\x30\x1F\x61\x49\x6E\x74\x65\x72\x6E\x65\x74\x20\x28\x43\x6F\x6D" - "\x70\x75\x74\x65\x72\x20\x6E\x65\x74\x77\x6F\x72\x6B\x29\x1E\x20" - "\x30\x1F\x61\x4D\x61\x69\x6C\x69\x6E\x67\x20\x6C\x69\x73\x74\x73" - "\x2E\x1E\x31\x30\x1F\x61\x48\x61\x72\x64\x69\x65\x2C\x20\x45\x64" - "\x77\x61\x72\x64\x20\x54\x2E\x20\x4C\x2E\x1E\x31\x30\x1F\x61\x4E" - "\x65\x6F\x75\x2C\x20\x56\x69\x76\x69\x61\x6E\x2E\x1E\x1D" -},{ - "\x30\x31\x33\x32\x34\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" - "\x39\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x33\x30" - "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x33" - "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x35\x30\x38\x36\x30" - "\x30\x32\x32\x30\x30\x31\x33\x34\x30\x34\x39\x30\x30\x30\x39\x30" - "\x30\x31\x35\x36\x32\x34\x35\x30\x30\x36\x32\x30\x30\x31\x36\x35" - "\x32\x36\x30\x30\x31\x34\x35\x30\x30\x32\x32\x37\x33\x30\x30\x30" - "\x30\x32\x35\x30\x30\x33\x37\x32\x35\x30\x30\x30\x30\x38\x30\x30" - "\x30\x33\x39\x37\x35\x30\x30\x30\x32\x32\x31\x30\x30\x34\x37\x37" - "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x36\x39\x38\x35\x30\x30\x30" - "\x30\x32\x31\x30\x30\x37\x35\x33\x35\x30\x30\x30\x30\x32\x32\x30" - "\x30\x37\x37\x34\x36\x31\x30\x30\x30\x36\x31\x30\x30\x37\x39\x36" - "\x36\x35\x30\x30\x30\x34\x33\x30\x30\x38\x35\x37\x36\x35\x30\x30" - "\x30\x34\x35\x30\x30\x39\x30\x30\x37\x30\x30\x30\x30\x32\x31\x30" - "\x30\x39\x34\x35\x37\x31\x30\x30\x30\x36\x38\x30\x30\x39\x36\x36" - "\x1E\x41\x43\x44\x2D\x32\x37\x32\x38\x1E\x39\x31\x30\x35\x31\x34" - "\x73\x31\x39\x38\x34\x20\x20\x20\x20\x6E\x79\x75\x20\x20\x20\x20" - "\x20\x20\x72\x20\x20\x20\x66\x30\x30\x31\x30\x30\x20\x65\x6E\x67" - "\x20\x64\x1E\x31\x39\x39\x31\x30\x35\x31\x39\x31\x34\x34\x35\x35" - "\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x37\x34\x30\x30\x30\x32" - "\x1E\x20\x20\x1F\x61\x45\x44\x20\x45\x44\x20\x32\x38\x39\x34\x35" - "\x39\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75\x73" - "\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41\x2D\x30" - "\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20\x31\x2E" - "\x33\x31\x30\x2F\x32\x3A\x32\x38\x39\x34\x35\x39\x1E\x20\x20\x1F" - "\x61\x44\x52\x55\x47\x1E\x30\x30\x1F\x61\x54\x65\x63\x68\x6E\x6F" - "\x6C\x6F\x67\x79\x20\x70\x72\x6F\x67\x72\x61\x6D\x73\x20\x74\x68" - "\x61\x74\x20\x77\x6F\x72\x6B\x20\x2F\x1F\x63\x4D\x69\x63\x68\x61" - "\x65\x6C\x20\x42\x2E\x20\x57\x65\x62\x62\x2C\x20\x65\x64\x69\x74" - "\x6F\x72\x2E\x1E\x30\x20\x1F\x61\x4E\x65\x77\x20\x59\x6F\x72\x6B" - "\x2C\x20\x4E\x2E\x59\x2E\x20\x3A\x1F\x62\x54\x65\x63\x68\x6E\x6F" - "\x6C\x6F\x67\x79\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x4E\x44\x4E" - "\x20\x50\x72\x6F\x6A\x65\x63\x74\x2C\x20\x49\x6E\x73\x74\x69\x74" - "\x75\x74\x65\x20\x66\x6F\x72\x20\x55\x72\x62\x61\x6E\x20\x61\x6E" - "\x64\x20\x4D\x69\x6E\x6F\x72\x69\x74\x79\x20\x45\x64\x75\x63\x61" - "\x74\x69\x6F\x6E\x2C\x20\x54\x65\x61\x63\x68\x65\x72\x73\x20\x43" - "\x6F\x6C\x6C\x65\x67\x65\x2C\x20\x43\x6F\x6C\x75\x6D\x62\x69\x61" - "\x20\x55\x6E\x69\x76\x65\x72\x73\x69\x74\x79\x2C\x1F\x63\x5B\x31" - "\x39\x38\x34\x5D\x1E\x20\x20\x1F\x61\x37\x32\x2C\x20\x5B\x31\x5D" - "\x20\x70\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20" - "\x1F\x61\x22\x53\x70\x6F\x6E\x73\x20\x61\x67\x65\x6E\x63\x79\x20" - "\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74" - "\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61" - "\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x22\x2D" - "\x2D\x44\x6F\x63\x2E\x20\x72\x65\x73\x75\x6D\x65\x2E\x1E\x20\x20" - "\x1F\x61\x22\x54\x68\x69\x73\x20\x64\x69\x72\x65\x63\x74\x6F\x72" - "\x79\x20\x77\x61\x73\x20\x64\x65\x76\x65\x6C\x6F\x70\x65\x64\x20" - "\x62\x79\x20\x74\x68\x65\x20\x54\x65\x63\x68\x6E\x6F\x6C\x6F\x67" - "\x79\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x4E\x61\x74\x69\x6F\x6E" - "\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74" - "\x77\x6F\x72\x6B\x20\x50\x72\x6F\x6A\x65\x63\x74\x2C\x20\x54\x65" - "\x61\x63\x68\x65\x72\x73\x20\x43\x6F\x6C\x6C\x65\x67\x65\x2C\x20" - "\x43\x6F\x6C\x75\x6D\x62\x69\x61\x20\x55\x6E\x69\x76\x65\x72\x73" - "\x69\x74\x79\x20\x70\x75\x72\x73\x75\x61\x6E\x74\x20\x74\x6F\x20" - "\x63\x6F\x6E\x74\x72\x61\x63\x74\x20\x6E\x75\x6D\x62\x65\x72\x20" - "\x4F\x45\x2D\x33\x30\x30\x2D\x38\x33\x2D\x30\x32\x35\x33\x2C\x20" - "\x55\x2E\x53\x2E\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" - "\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x22\x2D\x2D\x54" - "\x2E\x70\x2E\x20\x76\x65\x72\x73\x6F\x2E\x1E\x20\x20\x1F\x61\x44" - "\x69\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65" - "\x70\x6F\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69" - "\x65\x73\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65" - "\x2E\x1E\x20\x20\x1F\x61\x22\x44\x65\x63\x65\x6D\x62\x65\x72\x20" - "\x31\x39\x38\x34\x2E\x22\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75" - "\x64\x65\x73\x20\x69\x6E\x64\x65\x78\x65\x73\x2E\x1E\x31\x30\x1F" - "\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F" - "\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73" - "\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B\x1F\x78\x44\x69\x72" - "\x65\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x45\x64" - "\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x74\x65\x63\x68\x6E\x6F" - "\x6C\x6F\x67\x79\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" - "\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x46\x65\x64\x65\x72\x61\x6C" - "\x20\x61\x69\x64\x20\x74\x6F\x20\x65\x64\x75\x63\x61\x74\x69\x6F" - "\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" - "\x2E\x1E\x31\x30\x1F\x61\x57\x65\x62\x62\x2C\x20\x4D\x69\x63\x68" - "\x61\x65\x6C\x20\x42\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65" - "\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63" - "\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C" - "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D" - "\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2E\x1E\x1D" -},{ - "\x30\x31\x35\x35\x39\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x33\x37" - "\x33\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x30\x30" - "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x31\x30\x30" - "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x32\x30\x38\x36\x30" - "\x30\x32\x32\x30\x30\x31\x33\x31\x30\x38\x38\x30\x30\x31\x36\x30" - "\x30\x31\x35\x33\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x36\x39" - "\x31\x30\x30\x30\x30\x32\x32\x30\x30\x31\x37\x38\x32\x34\x35\x30" - "\x32\x35\x39\x30\x30\x32\x30\x30\x32\x36\x30\x30\x31\x30\x35\x30" - "\x30\x34\x35\x39\x33\x30\x30\x30\x30\x33\x33\x30\x30\x35\x36\x34" - "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x35\x39\x37\x35\x30\x30\x30" - "\x30\x31\x37\x30\x30\x36\x35\x32\x35\x30\x34\x30\x30\x34\x31\x30" - "\x30\x36\x36\x39\x35\x30\x30\x30\x30\x31\x38\x30\x30\x37\x31\x30" - "\x36\x35\x30\x30\x30\x34\x34\x30\x30\x37\x32\x38\x36\x35\x30\x30" - "\x30\x34\x34\x30\x30\x37\x37\x32\x36\x35\x30\x30\x30\x33\x37\x30" - "\x30\x38\x31\x36\x36\x35\x30\x30\x30\x35\x32\x30\x30\x38\x35\x33" - "\x36\x35\x30\x30\x30\x33\x37\x30\x30\x39\x30\x35\x37\x30\x30\x30" - "\x30\x34\x34\x30\x30\x39\x34\x32\x37\x30\x30\x30\x30\x32\x35\x30" - "\x30\x39\x38\x36\x37\x31\x30\x30\x30\x34\x38\x30\x31\x30\x31\x31" - "\x37\x31\x30\x30\x30\x33\x30\x30\x31\x30\x35\x39\x37\x31\x30\x30" - "\x30\x36\x38\x30\x31\x30\x38\x39\x37\x34\x30\x30\x30\x32\x38\x30" - "\x31\x31\x35\x37\x1E\x41\x43\x44\x2D\x32\x34\x37\x36\x1E\x39\x31" - "\x30\x34\x32\x35\x73\x31\x39\x38\x37\x20\x20\x20\x20\x64\x63\x75" - "\x61\x20\x20\x20\x20\x20\x62\x20\x20\x20\x66\x30\x30\x30\x31\x30" - "\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30\x35\x31\x39\x31" - "\x34\x34\x35\x35\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x36\x30" - "\x32\x33\x38\x39\x1E\x20\x20\x1F\x61\x45\x44\x20\x32\x38\x38\x35" - "\x32\x39\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x6E\x2D\x75" - "\x73\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41\x2D" - "\x30\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20\x31" - "\x2E\x33\x31\x30\x2F\x32\x3A\x32\x38\x38\x35\x32\x39\x1E\x20\x20" - "\x1F\x61\x4C\x50\x20\x38\x37\x2D\x34\x30\x33\x20\x63\x1E\x20\x20" - "\x1F\x61\x44\x52\x55\x47\x1E\x31\x30\x1F\x61\x53\x65\x61\x67\x65" - "\x72\x2C\x20\x41\x6E\x64\x72\x65\x77\x20\x4A\x2E\x1E\x31\x30\x1F" - "\x61\x43\x68\x65\x63\x6B\x20\x74\x68\x69\x73\x20\x6F\x75\x74\x20" - "\x3A\x1F\x62\x6C\x69\x62\x72\x61\x72\x79\x20\x70\x72\x6F\x67\x72" - "\x61\x6D\x20\x6D\x6F\x64\x65\x6C\x73\x20\x2F\x1F\x63\x70\x72\x65" - "\x70\x61\x72\x65\x64\x20\x62\x79\x20\x41\x6E\x64\x72\x65\x77\x20" - "\x4A\x2E\x20\x53\x65\x61\x67\x65\x72\x2C\x20\x53\x61\x72\x61\x68" - "\x20\x4A\x2E\x20\x52\x6F\x62\x65\x72\x74\x73\x2C\x20\x43\x61\x72" - "\x6F\x6C\x20\x5A\x2E\x20\x4C\x69\x6E\x63\x6F\x6C\x6E\x20\x3B\x20" - "\x70\x72\x65\x70\x61\x72\x65\x64\x20\x66\x6F\x72\x20\x4E\x61\x74" - "\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20" - "\x4E\x65\x74\x77\x6F\x72\x6B\x20\x75\x6E\x64\x65\x72\x20\x63\x6F" - "\x6E\x74\x72\x61\x63\x74\x20\x74\x6F\x20\x52\x4D\x43\x20\x43\x6F" - "\x72\x70\x6F\x72\x61\x74\x69\x6F\x6E\x2C\x20\x63\x6F\x6E\x74\x72" - "\x61\x63\x74\x20\x33\x30\x30\x2D\x38\x34\x2D\x30\x32\x35\x31\x20" - "\x77\x69\x74\x68\x20\x74\x68\x65\x20\x55\x6E\x69\x74\x65\x64\x20" - "\x53\x74\x61\x74\x65\x73\x20\x44\x65\x70\x61\x72\x74\x6D\x65\x6E" - "\x74\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2E\x1E" - "\x30\x20\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20" - "\x44\x2E\x43\x2E\x20\x3A\x1F\x62\x4F\x66\x66\x69\x63\x65\x20\x6F" - "\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65" - "\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F" - "\x76\x65\x6D\x65\x6E\x74\x2C\x20\x55\x2E\x53\x2E\x20\x44\x65\x70" - "\x74\x2E\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C" - "\x1F\x63\x5B\x31\x39\x38\x37\x5D\x1E\x20\x20\x1F\x61\x69\x78\x2C" - "\x20\x33\x31\x39\x20\x70\x2E\x20\x3A\x1F\x62\x69\x6C\x6C\x2E\x20" - "\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61\x44\x69" - "\x73\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70" - "\x6F\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65" - "\x73\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E" - "\x1E\x20\x20\x1F\x61\x22\x4A\x75\x6C\x79\x20\x31\x39\x38\x37\x2E" - "\x22\x1E\x20\x20\x1F\x61\x49\x6E\x63\x6C\x75\x64\x65\x73\x20\x62" - "\x69\x62\x6C\x69\x6F\x67\x72\x61\x70\x68\x69\x63\x61\x6C\x20\x72" - "\x65\x66\x65\x72\x65\x6E\x63\x65\x73\x2E\x1E\x20\x20\x1F\x61\x22" - "\x4C\x50\x20\x38\x37\x2D\x34\x30\x33\x63\x2E\x22\x1E\x20\x30\x1F" - "\x61\x4C\x69\x62\x72\x61\x72\x69\x65\x73\x20\x61\x6E\x64\x20\x63" - "\x6F\x6D\x6D\x75\x6E\x69\x74\x79\x1F\x7A\x55\x6E\x69\x74\x65\x64" - "\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C\x69\x62" - "\x72\x61\x72\x69\x65\x73\x20\x61\x6E\x64\x20\x65\x64\x75\x63\x61" - "\x74\x69\x6F\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" - "\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x53\x63\x68\x6F\x6F\x6C\x20" - "\x6C\x69\x62\x72\x61\x72\x69\x65\x73\x1F\x7A\x55\x6E\x69\x74\x65" - "\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x49\x6E" - "\x73\x74\x72\x75\x63\x74\x69\x6F\x6E\x61\x6C\x20\x6D\x61\x74\x65" - "\x72\x69\x61\x6C\x73\x20\x63\x65\x6E\x74\x65\x72\x73\x1F\x7A\x55" - "\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1E\x20\x30" - "\x1F\x61\x50\x75\x62\x6C\x69\x63\x20\x6C\x69\x62\x72\x61\x72\x69" - "\x65\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65" - "\x73\x2E\x1E\x31\x30\x1F\x61\x52\x6F\x62\x65\x72\x74\x73\x2C\x20" - "\x53\x61\x72\x61\x68\x20\x4A\x2E\x1F\x71\x28\x53\x61\x72\x61\x68" - "\x20\x4A\x61\x6E\x65\x29\x2C\x1F\x64\x31\x39\x34\x36\x2D\x1E\x31" - "\x30\x1F\x61\x4C\x69\x6E\x63\x6F\x6C\x6E\x2C\x20\x43\x61\x72\x6F" - "\x6C\x20\x5A\x61\x6C\x6C\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74" - "\x65\x64\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4E\x61\x74\x69" - "\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E" - "\x65\x74\x77\x6F\x72\x6B\x2E\x1E\x32\x30\x1F\x61\x52\x4D\x43\x20" - "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x43\x6F\x72\x70\x6F\x72\x61" - "\x74\x69\x6F\x6E\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64" - "\x20\x53\x74\x61\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63\x65" - "\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20" - "\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70" - "\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2E\x1E\x30\x31\x1F\x61\x4C\x69" - "\x62\x72\x61\x72\x79\x20\x70\x72\x6F\x67\x72\x61\x6D\x20\x6D\x6F" - "\x64\x65\x6C\x73\x2E\x1E\x1D" -},{ - "\x30\x31\x31\x35\x35\x6E\x61\x73\x20\x20\x32\x32\x30\x30\x33\x31" - "\x33\x35\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x32\x37\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x30\x38\x30" - "\x30\x30\x39\x34\x30\x31\x32\x30\x30\x31\x32\x30\x30\x31\x30\x32" - "\x30\x34\x32\x30\x30\x30\x37\x30\x30\x31\x31\x34\x30\x35\x30\x30" - "\x30\x31\x35\x30\x30\x31\x32\x31\x30\x37\x34\x30\x30\x31\x31\x30" - "\x30\x31\x33\x36\x30\x38\x36\x30\x30\x32\x30\x30\x30\x31\x34\x37" - "\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x36\x37\x32\x31\x32\x30" - "\x30\x38\x33\x30\x30\x31\x37\x36\x32\x34\x35\x30\x30\x36\x39\x30" - "\x30\x32\x35\x39\x32\x36\x30\x30\x31\x31\x35\x30\x30\x33\x32\x38" - "\x32\x36\x35\x30\x30\x37\x31\x30\x30\x34\x34\x33\x33\x30\x30\x30" - "\x30\x31\x37\x30\x30\x35\x31\x34\x33\x31\x30\x30\x30\x31\x31\x30" - "\x30\x35\x33\x31\x35\x30\x30\x30\x30\x33\x32\x30\x30\x35\x34\x32" - "\x36\x31\x30\x30\x30\x33\x36\x30\x30\x35\x37\x34\x36\x35\x30\x30" - "\x30\x36\x32\x30\x30\x36\x31\x30\x36\x35\x30\x30\x30\x36\x34\x30" - "\x30\x36\x37\x32\x37\x31\x30\x30\x30\x32\x32\x30\x30\x37\x33\x36" - "\x37\x31\x30\x30\x30\x37\x30\x30\x30\x37\x35\x38\x39\x33\x36\x30" - "\x30\x31\x33\x30\x30\x38\x32\x38\x1E\x41\x43\x44\x2D\x32\x33\x37" - "\x36\x1E\x39\x31\x30\x32\x32\x35\x63\x31\x39\x75\x75\x39\x39\x39" - "\x39\x64\x63\x75\x61\x72\x20\x20\x20\x20\x20\x20\x20\x20\x66\x30" - "\x75\x75\x75\x20\x30\x65\x6E\x67\x20\x20\x1E\x31\x39\x39\x31\x30" - "\x35\x31\x39\x31\x34\x34\x35\x35\x31\x2E\x30\x1E\x20\x20\x1F\x61" - "\x20\x20\x20\x39\x31\x36\x35\x36\x30\x36\x30\x20\x1F\x6F\x32\x33" - "\x31\x35\x30\x38\x34\x37\x1E\x20\x20\x1F\x64\x47\x50\x4F\x1E\x20" - "\x20\x1F\x61\x32\x1F\x69\x39\x31\x30\x33\x1E\x20\x20\x1F\x61\x6C" - "\x63\x1E\x30\x30\x1F\x61\x49\x4E\x20\x50\x52\x4F\x43\x45\x53\x53" - "\x1E\x20\x20\x1F\x61\x30\x37\x38\x35\x2D\x48\x1E\x30\x20\x1F\x61" - "\x4C\x43\x20\x31\x2E\x34\x30\x2F\x32\x3A\x46\x20\x33\x31\x2F\x1E" - "\x20\x20\x1F\x61\x44\x52\x55\x47\x1E\x30\x20\x1F\x61\x46\x65\x64" - "\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61\x72\x79\x20\x61\x6E\x64" - "\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x4E\x65\x74" - "\x77\x6F\x72\x6B\x20\x73\x65\x72\x76\x69\x63\x65\x73\x20\x64\x69" - "\x72\x65\x63\x74\x6F\x72\x79\x20\x66\x6F\x72\x20\x66\x69\x73\x63" - "\x61\x6C\x20\x79\x65\x61\x72\x20\x2E\x2E\x2E\x1E\x30\x30\x1F\x61" - "\x46\x45\x44\x4C\x49\x4E\x4B\x20\x73\x65\x72\x76\x69\x63\x65\x73" - "\x20\x64\x69\x72\x65\x63\x74\x6F\x72\x79\x20\x66\x6F\x72\x20\x66" - "\x69\x73\x63\x61\x6C\x20\x79\x65\x61\x72\x20\x2E\x2E\x2E\x20\x2F" - "\x1F\x63\x46\x4C\x49\x43\x43\x2F\x46\x45\x44\x4C\x49\x4E\x4B\x2E" - "\x1E\x30\x30\x1F\x61\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C" - "\x20\x44\x2E\x43\x2E\x20\x3A\x1F\x62\x46\x65\x64\x65\x72\x61\x6C" - "\x20\x4C\x69\x62\x72\x61\x72\x79\x20\x61\x6E\x64\x20\x49\x6E\x66" - "\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B" - "\x2C\x20\x46\x65\x64\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61\x72" - "\x79\x20\x61\x6E\x64\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F" - "\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x43\x6F\x6D\x6D\x69\x74\x74" - "\x65\x65\x2C\x1E\x20\x20\x1F\x61\x46\x45\x44\x4C\x49\x4E\x4B\x2C" - "\x20\x52\x6F\x6F\x6D\x20\x4C\x41\x20\x31\x30\x32\x36\x43\x2C\x20" - "\x4C\x69\x62\x72\x61\x72\x79\x20\x6F\x66\x20\x43\x6F\x6E\x67\x72" - "\x65\x73\x73\x2C\x20\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x20" - "\x44\x2E\x43\x2E\x20\x32\x30\x35\x34\x30\x1E\x20\x20\x1F\x61\x76" - "\x2E\x20\x3B\x1F\x63\x32\x38\x20\x63\x6D\x2E\x1E\x20\x20\x1F\x61" - "\x41\x6E\x6E\x75\x61\x6C\x1E\x20\x20\x1F\x61\x44\x65\x73\x63\x72" - "\x69\x70\x74\x69\x6F\x6E\x20\x62\x61\x73\x65\x64\x20\x6F\x6E\x3A" - "\x20\x31\x39\x39\x30\x2E\x1E\x32\x30\x1F\x61\x46\x45\x44\x4C\x49" - "\x4E\x4B\x20\x28\x4E\x65\x74\x77\x6F\x72\x6B\x29\x1F\x78\x44\x69" - "\x72\x65\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C" - "\x69\x62\x72\x61\x72\x79\x20\x69\x6E\x66\x6F\x72\x6D\x61\x74\x69" - "\x6F\x6E\x20\x6E\x65\x74\x77\x6F\x72\x6B\x73\x1F\x7A\x55\x6E\x69" - "\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73\x1F\x78\x44\x69\x72\x65" - "\x63\x74\x6F\x72\x69\x65\x73\x2E\x1E\x20\x30\x1F\x61\x4C\x69\x62" - "\x72\x61\x72\x69\x65\x73\x2C\x20\x47\x6F\x76\x65\x72\x6E\x6D\x65" - "\x6E\x74\x61\x6C\x2C\x20\x61\x64\x6D\x69\x6E\x69\x73\x74\x72\x61" - "\x74\x69\x76\x65\x2C\x20\x65\x74\x63\x2E\x1F\x78\x50\x65\x72\x69" - "\x6F\x64\x69\x63\x61\x6C\x73\x2E\x1E\x32\x30\x1F\x61\x46\x45\x44" - "\x4C\x49\x4E\x4B\x20\x28\x4E\x65\x74\x77\x6F\x72\x6B\x29\x1E\x32" - "\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" - "\x2E\x1F\x62\x46\x65\x64\x65\x72\x61\x6C\x20\x4C\x69\x62\x72\x61" - "\x72\x79\x20\x61\x6E\x64\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69" - "\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x43\x6F\x6D\x6D\x69\x74" - "\x74\x65\x65\x2E\x1E\x20\x20\x1F\x61\x31\x39\x39\x31\x20\x4C\x49" - "\x43\x1E\x1D" -},{ - "\x30\x30\x39\x31\x35\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x32" - "\x39\x4B\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x31\x33\x30" - "\x30\x30\x38\x30\x30\x33\x37\x30\x30\x32\x30\x30\x30\x30\x39\x33" - "\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x31\x33\x30\x38\x36\x30" - "\x30\x32\x32\x30\x30\x31\x33\x32\x30\x34\x39\x30\x30\x30\x39\x30" - "\x30\x31\x35\x34\x31\x30\x30\x30\x30\x31\x38\x30\x30\x31\x36\x33" - "\x32\x34\x35\x30\x31\x35\x37\x30\x30\x31\x38\x31\x32\x36\x30\x30" - "\x31\x32\x34\x30\x30\x33\x33\x38\x33\x30\x30\x30\x30\x30\x39\x30" - "\x30\x34\x36\x32\x35\x33\x33\x30\x30\x39\x33\x30\x30\x34\x37\x31" - "\x35\x30\x30\x30\x30\x35\x35\x30\x30\x35\x36\x34\x36\x35\x30\x30" - "\x30\x31\x34\x30\x30\x36\x31\x39\x37\x31\x30\x30\x30\x35\x32\x30" - "\x30\x36\x33\x33\x1E\x41\x43\x44\x2D\x31\x39\x34\x39\x1E\x39\x31" - "\x30\x34\x31\x35\x72\x31\x39\x39\x30\x31\x30\x38\x37\x64\x63\x75" - "\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x66\x30\x30\x30\x31\x30" - "\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30\x34\x32\x31\x31" - "\x32\x32\x35\x34\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x34\x36" - "\x39\x32\x36\x31\x1E\x20\x20\x1F\x61\x47\x50\x4F\x1F\x63\x47\x50" - "\x4F\x1E\x20\x20\x1F\x61\x45\x44\x20\x32\x38\x36\x39\x39\x32\x1F" - "\x62\x45\x52\x49\x43\x1E\x20\x20\x1F\x61\x30\x34\x36\x36\x2D\x41" - "\x2D\x30\x33\x20\x28\x4D\x46\x29\x1E\x30\x20\x1F\x61\x45\x44\x20" - "\x31\x2E\x33\x31\x30\x2F\x32\x3A\x32\x38\x36\x39\x39\x32\x1E\x20" - "\x20\x1F\x61\x44\x52\x55\x47\x1E\x31\x30\x1F\x61\x50\x61\x75\x6C" - "\x75\x2C\x20\x4E\x61\x6E\x63\x79\x2E\x1E\x31\x30\x1F\x61\x44\x65" - "\x61\x6C\x69\x6E\x67\x20\x77\x69\x74\x68\x20\x64\x72\x6F\x70\x6F" - "\x75\x74\x73\x1F\x68\x6D\x69\x63\x72\x6F\x66\x6F\x72\x6D\x20\x3A" - "\x1F\x62\x74\x68\x65\x20\x75\x72\x62\x61\x6E\x20\x73\x75\x70\x65" - "\x72\x69\x6E\x74\x65\x6E\x64\x65\x6E\x74\x73\x27\x20\x63\x61\x6C" - "\x6C\x20\x74\x6F\x20\x61\x63\x74\x69\x6F\x6E\x20\x2F\x1F\x63\x62" - "\x79\x20\x74\x68\x65\x20\x4F\x45\x52\x49\x20\x55\x72\x62\x61\x6E" - "\x20\x53\x75\x70\x65\x72\x69\x6E\x74\x65\x6E\x64\x65\x6E\x74\x73" - "\x20\x4E\x65\x74\x77\x6F\x72\x6B\x20\x3B\x20\x4E\x61\x6E\x63\x79" - "\x20\x50\x61\x75\x6C\x75\x2C\x20\x77\x72\x69\x74\x65\x72\x2D\x65" - "\x64\x69\x74\x6F\x72\x2E\x1E\x30\x20\x1F\x61\x5B\x57\x61\x73\x68" - "\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x5D\x2E\x20\x3A\x1F" - "\x62\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61" - "\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20" - "\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C" - "\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73" - "\x6F\x75\x72\x63\x65\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69" - "\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x2C\x1F\x63\x5B\x31\x39\x38" - "\x37\x5D\x1E\x20\x20\x1F\x61\x31\x20\x76\x2E\x1E\x20\x20\x1F\x61" - "\x4D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1F\x62\x5B\x57\x61" - "\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x3F\x5D" - "\x20\x3A\x1F\x63\x53\x75\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63" - "\x73\x2E\x2C\x20\x55\x2E\x53\x2E\x20\x47\x2E\x50\x2E\x4F\x2E\x2C" - "\x1F\x64\x5B\x31\x39\x39\x30\x5D\x2E\x1F\x65\x31\x20\x6D\x69\x63" - "\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E\x20\x20\x1F\x61\x44\x69\x73" - "\x74\x72\x69\x62\x75\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70\x6F" - "\x73\x69\x74\x6F\x72\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65\x73" - "\x20\x69\x6E\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E" - "\x20\x30\x1F\x61\x44\x72\x6F\x70\x6F\x75\x74\x73\x2E\x1E\x32\x30" - "\x1F\x61\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65" - "\x73\x6F\x75\x72\x63\x65\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74" - "\x69\x6F\x6E\x20\x43\x65\x6E\x74\x65\x72\x20\x28\x55\x2E\x53\x2E" - "\x29\x1E\x1D" -},{ - "\x30\x31\x30\x35\x33\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x31" - "\x37\x4B\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x33\x37\x30\x30\x32\x30\x30" - "\x30\x30\x38\x30\x30\x37\x34\x30\x30\x31\x39\x30\x30\x31\x30\x30" - "\x30\x38\x36\x30\x30\x32\x32\x30\x30\x31\x31\x39\x30\x34\x39\x30" - "\x30\x30\x39\x30\x30\x31\x34\x31\x32\x34\x35\x30\x31\x36\x33\x30" - "\x30\x31\x35\x30\x32\x36\x30\x30\x32\x35\x31\x30\x30\x33\x31\x33" - "\x33\x30\x30\x30\x30\x30\x39\x30\x30\x35\x36\x34\x35\x33\x33\x30" - "\x30\x39\x34\x30\x30\x35\x37\x33\x35\x30\x30\x30\x30\x35\x35\x30" - "\x30\x36\x36\x37\x36\x35\x30\x30\x30\x32\x34\x30\x30\x37\x32\x32" - "\x36\x35\x30\x30\x30\x33\x37\x30\x30\x37\x34\x36\x37\x31\x30\x30" - "\x30\x35\x32\x30\x30\x37\x38\x33\x1E\x41\x43\x44\x2D\x31\x39\x34" - "\x37\x1E\x39\x31\x30\x34\x31\x35\x72\x31\x39\x39\x30\x31\x39\x38" - "\x36\x64\x63\x75\x20\x20\x20\x20\x20\x62\x20\x20\x20\x20\x66\x30" - "\x30\x30\x31\x30\x20\x65\x6E\x67\x20\x64\x1E\x31\x39\x39\x31\x30" - "\x34\x32\x31\x31\x32\x32\x35\x34\x31\x2E\x30\x1E\x20\x20\x1F\x6F" - "\x32\x33\x34\x36\x39\x30\x39\x38\x1E\x20\x20\x1F\x61\x45\x44\x20" - "\x32\x38\x36\x33\x33\x33\x1F\x62\x45\x52\x49\x43\x1E\x20\x20\x1F" - "\x61\x30\x34\x36\x36\x2D\x41\x2D\x30\x33\x20\x28\x4D\x46\x29\x1E" - "\x30\x20\x1F\x61\x45\x44\x20\x31\x2E\x33\x31\x30\x2F\x32\x3A\x32" - "\x38\x36\x33\x33\x33\x1E\x20\x20\x1F\x61\x44\x52\x55\x47\x1E\x30" - "\x30\x1F\x61\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x64\x69\x73\x73" - "\x65\x6D\x69\x6E\x61\x74\x69\x6F\x6E\x20\x6D\x6F\x64\x65\x6C\x20" - "\x66\x6F\x72\x20\x74\x68\x65\x20\x49\x27\x4D\x20\x53\x50\x45\x43" - "\x49\x41\x4C\x20\x50\x72\x6F\x67\x72\x61\x6D\x20\x6F\x66\x20\x50" - "\x68\x79\x73\x69\x63\x61\x6C\x20\x45\x64\x75\x63\x61\x74\x69\x6F" - "\x6E\x20\x66\x6F\x72\x20\x74\x68\x65\x20\x48\x61\x6E\x64\x69\x63" - "\x61\x70\x70\x65\x64\x2C\x20\x31\x39\x38\x33\x2D\x31\x39\x38\x36" - "\x1F\x68\x6D\x69\x63\x72\x6F\x66\x6F\x72\x6D\x20\x3A\x1F\x62\x66" - "\x69\x6E\x61\x6C\x20\x72\x65\x70\x6F\x72\x74\x2C\x20\x49\x27\x4D" - "\x20\x53\x50\x45\x43\x49\x41\x4C\x20\x6E\x65\x74\x77\x6F\x72\x6B" - "\x2E\x1E\x30\x20\x1F\x61\x54\x61\x6D\x70\x61\x2C\x20\x46\x6C\x61" - "\x2E\x20\x3A\x1F\x62\x44\x65\x70\x61\x72\x74\x6D\x65\x6E\x74\x20" - "\x6F\x66\x20\x50\x68\x79\x73\x69\x63\x61\x6C\x20\x45\x64\x75\x63" - "\x61\x74\x69\x6F\x6E\x2C\x20\x43\x6F\x6C\x6C\x65\x67\x65\x20\x6F" - "\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20\x55\x6E\x69" - "\x76\x65\x72\x73\x69\x74\x79\x20\x6F\x66\x20\x53\x6F\x75\x74\x68" - "\x20\x46\x6C\x6F\x72\x69\x64\x61\x20\x3B\x1F\x61\x5B\x57\x61\x73" - "\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x5D\x20\x3A" - "\x1F\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74\x2E\x20\x6F\x66\x20" - "\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20\x4F\x66\x66\x69\x63" - "\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C" - "\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D" - "\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C\x20\x45\x64\x75\x63\x61" - "\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x6F\x75\x72\x63\x65\x73" - "\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x43\x65\x6E" - "\x74\x65\x72\x2C\x1F\x63\x5B\x31\x39\x38\x36\x5D\x1E\x20\x20\x1F" - "\x61\x31\x20\x76\x2E\x1E\x20\x20\x1F\x61\x4D\x69\x63\x72\x6F\x66" - "\x69\x63\x68\x65\x2E\x1F\x62\x5B\x57\x61\x73\x68\x69\x6E\x67\x74" - "\x6F\x6E\x2C\x20\x44\x2E\x43\x2E\x3F\x5D\x20\x3A\x1F\x63\x53\x75" - "\x70\x74\x2E\x20\x6F\x66\x20\x44\x6F\x63\x73\x2E\x2C\x20\x55\x2E" - "\x53\x2E\x20\x47\x2E\x50\x2E\x4F\x2E\x2C\x1F\x64\x5B\x31\x39\x39" - "\x30\x5D\x2E\x1F\x65\x32\x20\x6D\x69\x63\x72\x6F\x66\x69\x63\x68" - "\x65\x73\x2E\x1E\x20\x20\x1F\x61\x44\x69\x73\x74\x72\x69\x62\x75" - "\x74\x65\x64\x20\x74\x6F\x20\x64\x65\x70\x6F\x73\x69\x74\x6F\x72" - "\x79\x20\x6C\x69\x62\x72\x61\x72\x69\x65\x73\x20\x69\x6E\x20\x6D" - "\x69\x63\x72\x6F\x66\x69\x63\x68\x65\x2E\x1E\x20\x30\x1F\x61\x50" - "\x68\x79\x73\x69\x63\x61\x6C\x20\x65\x64\x75\x63\x61\x74\x69\x6F" - "\x6E\x2E\x1E\x20\x30\x1F\x61\x48\x61\x6E\x64\x69\x63\x61\x70\x70" - "\x65\x64\x20\x63\x68\x69\x6C\x64\x72\x65\x6E\x1F\x78\x45\x64\x75" - "\x63\x61\x74\x69\x6F\x6E\x2E\x1E\x32\x30\x1F\x61\x45\x64\x75\x63" - "\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x6F\x75\x72\x63\x65" - "\x73\x20\x49\x6E\x66\x6F\x72\x6D\x61\x74\x69\x6F\x6E\x20\x43\x65" - "\x6E\x74\x65\x72\x20\x28\x55\x2E\x53\x2E\x29\x1E\x1D" -},{ - "\x30\x31\x30\x33\x36\x6E\x61\x6D\x20\x20\x32\x32\x30\x30\x32\x38" - "\x39\x49\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x30\x39\x30" - "\x30\x30\x30\x30\x30\x30\x38\x30\x30\x34\x31\x30\x30\x30\x30\x39" - "\x30\x30\x35\x30\x30\x31\x37\x30\x30\x30\x35\x30\x30\x31\x30\x30" - "\x30\x31\x33\x30\x30\x30\x36\x37\x30\x34\x30\x30\x30\x31\x33\x30" - "\x30\x30\x38\x30\x30\x34\x33\x30\x30\x31\x32\x30\x30\x30\x39\x33" - "\x30\x37\x34\x30\x30\x31\x34\x30\x30\x31\x30\x35\x30\x38\x36\x30" - "\x30\x31\x38\x30\x30\x31\x31\x39\x30\x38\x38\x30\x30\x31\x35\x30" - "\x30\x31\x33\x37\x30\x34\x39\x30\x30\x30\x39\x30\x30\x31\x35\x32" - "\x32\x34\x35\x30\x30\x34\x35\x30\x30\x31\x36\x31\x32\x36\x30\x30" - "\x31\x30\x35\x30\x30\x32\x30\x36\x33\x30\x30\x30\x30\x34\x31\x30" - "\x30\x33\x31\x31\x35\x30\x30\x30\x30\x35\x35\x30\x30\x33\x35\x32" - "\x35\x30\x30\x30\x30\x33\x33\x30\x30\x34\x30\x37\x35\x30\x30\x30" - "\x30\x32\x38\x30\x30\x34\x34\x30\x35\x30\x30\x30\x30\x32\x36\x30" - "\x30\x34\x36\x38\x36\x31\x30\x30\x30\x34\x38\x30\x30\x34\x39\x34" - "\x36\x35\x30\x30\x30\x35\x35\x30\x30\x35\x34\x32\x36\x35\x30\x30" - "\x30\x34\x34\x30\x30\x35\x39\x37\x37\x31\x30\x30\x30\x36\x38\x30" - "\x30\x36\x34\x31\x37\x34\x30\x30\x30\x33\x37\x30\x30\x37\x30\x39" - "\x1E\x41\x43\x44\x2D\x31\x39\x33\x38\x1E\x39\x31\x30\x34\x31\x35" - "\x73\x31\x39\x39\x31\x20\x20\x20\x20\x64\x63\x75\x20\x20\x20\x20" - "\x20\x20\x20\x20\x20\x20\x66\x30\x30\x30\x30\x30\x20\x65\x6E\x67" - "\x20\x64\x1E\x31\x39\x39\x31\x30\x34\x32\x31\x31\x32\x32\x35\x34" - "\x31\x2E\x30\x1E\x20\x20\x1F\x6F\x32\x33\x34\x36\x38\x32\x37\x32" - "\x1E\x20\x20\x1F\x61\x47\x50\x4F\x1F\x63\x47\x50\x4F\x1E\x20\x20" - "\x1F\x61\x6E\x2D\x75\x73\x2D\x2D\x2D\x1E\x20\x20\x1F\x61\x30\x34" - "\x36\x31\x2D\x44\x2D\x30\x35\x1E\x30\x20\x1F\x61\x45\x44\x20\x31" - "\x2E\x33\x30\x32\x3A\x53\x68\x20\x32\x1E\x20\x20\x1F\x61\x50\x49" - "\x50\x20\x39\x31\x2D\x38\x33\x36\x1E\x20\x20\x1F\x61\x44\x52\x55" - "\x47\x1E\x30\x30\x1F\x61\x4E\x44\x4E\x2C\x20\x73\x68\x61\x72\x69" - "\x6E\x67\x20\x73\x75\x63\x63\x65\x73\x73\x20\x74\x6F\x20\x69\x6D" - "\x70\x72\x6F\x76\x65\x20\x73\x63\x68\x6F\x6F\x6C\x73\x2E\x1E\x30" - "\x20\x1F\x61\x5B\x57\x61\x73\x68\x69\x6E\x67\x74\x6F\x6E\x2C\x20" - "\x44\x43\x5D\x20\x3A\x1F\x62\x55\x2E\x53\x2E\x20\x44\x65\x70\x74" - "\x2E\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x2C\x20" - "\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20\x45\x64\x75\x63\x61\x74" - "\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65\x61\x72\x63\x68\x20\x61" - "\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65\x6D\x65\x6E\x74\x2C\x1F" - "\x63\x5B\x31\x39\x39\x31\x5D\x1E\x20\x20\x1F\x61\x31\x20\x66\x6F" - "\x6C\x64\x65\x64\x20\x73\x68\x65\x65\x74\x20\x28\x36\x20\x70\x2E" - "\x29\x20\x3B\x1F\x63\x32\x32\x20\x78\x20\x31\x30\x20\x63\x6D\x2E" - "\x1E\x20\x20\x1F\x61\x41\x74\x20\x68\x65\x61\x64\x20\x6F\x66\x20" - "\x74\x69\x74\x6C\x65\x3A\x20\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20" - "\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72" - "\x6B\x2C\x20\x4E\x44\x4E\x2E\x1E\x20\x20\x1F\x61\x53\x68\x69\x70" - "\x70\x69\x6E\x67\x20\x6C\x69\x73\x74\x20\x6E\x6F\x2E\x3A\x20\x39" - "\x31\x2D\x31\x39\x38\x2D\x50\x2E\x1E\x20\x20\x1F\x61\x22\x4A\x61" - "\x6E\x75\x61\x72\x79\x20\x31\x39\x39\x31\x22\x2D\x2D\x50\x2E\x20" - "\x5B\x35\x5D\x2E\x1E\x20\x20\x1F\x61\x22\x50\x49\x50\x20\x39\x31" - "\x2D\x38\x33\x36\x22\x2D\x2D\x50\x2E\x20\x5B\x35\x5D\x2E\x1E\x31" - "\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" - "\x2E\x1F\x62\x4E\x61\x74\x69\x6F\x6E\x61\x6C\x20\x44\x69\x66\x66" - "\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74\x77\x6F\x72\x6B\x2E\x1E\x20" - "\x30\x1F\x61\x44\x65\x6D\x6F\x6E\x73\x74\x72\x61\x74\x69\x6F\x6E" - "\x20\x63\x65\x6E\x74\x65\x72\x73\x20\x69\x6E\x20\x65\x64\x75\x63" - "\x61\x74\x69\x6F\x6E\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74" - "\x61\x74\x65\x73\x2E\x1E\x20\x30\x1F\x61\x45\x64\x75\x63\x61\x74" - "\x69\x6F\x6E\x61\x6C\x20\x69\x6E\x6E\x6F\x76\x61\x74\x69\x6F\x6E" - "\x73\x1F\x7A\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61\x74\x65\x73" - "\x2E\x1E\x31\x30\x1F\x61\x55\x6E\x69\x74\x65\x64\x20\x53\x74\x61" - "\x74\x65\x73\x2E\x1F\x62\x4F\x66\x66\x69\x63\x65\x20\x6F\x66\x20" - "\x45\x64\x75\x63\x61\x74\x69\x6F\x6E\x61\x6C\x20\x52\x65\x73\x65" - "\x61\x72\x63\x68\x20\x61\x6E\x64\x20\x49\x6D\x70\x72\x6F\x76\x65" - "\x6D\x65\x6E\x74\x2E\x1E\x30\x31\x1F\x61\x4E\x61\x74\x69\x6F\x6E" - "\x61\x6C\x20\x44\x69\x66\x66\x75\x73\x69\x6F\x6E\x20\x4E\x65\x74" - "\x77\x6F\x72\x6B\x2C\x20\x4E\x44\x4E\x2E\x1E\x1D" -}}; - -void MyServer::recv_Z_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse) -{ - yaz_log (LOG_LOG, "MyServer::recv_Z_init"); -} - -static MyServer *myServer = 0; - -void MyServer::recv_Z_search (Z_SearchRequest *searchRequest, - Z_SearchResponse *searchResponse) -{ - yaz_log (LOG_LOG, "MyServer::recv_Z_search"); - if (searchRequest->query->which == Z_Query_type_1) - { - Z_RPNStructure *s = searchRequest->query->u.type_1->RPNStructure; - if (s->which == Z_RPNStructure_simple && - s->u.simple->which == Z_Operand_APT && - s->u.simple->u.attributesPlusTerm->term->which == Z_Term_general) - { - Odr_oct *term = s->u.simple->u.attributesPlusTerm->term->u.general; - char *str = (char *) odr_malloc (odr_decode(), term->len+1); - if (term->len) - memcpy (str, term->buf, term->len); - str[term->len] = '\0'; - *searchResponse->resultCount = atoi(str); - } - } -} - -void MyServer::recv_Z_present (Z_PresentRequest *presentRequest, - Z_PresentResponse *presentResponse) -{ - yaz_log (LOG_LOG, "MyServer::recv_Z_present"); -} - -void MyServer::recv_Z_record (const char *resultSetName, - int position, - int *format, - Z_RecordComposition *comp, - Z_NamePlusRecord *namePlusRecord, - Z_Records *records) -{ - yaz_log (LOG_LOG, "MyServer::recv_Z_record"); - int max = sizeof(marc_records) / sizeof(*marc_records); - int eff_pos = (position-1) % max; - create_databaseRecord (namePlusRecord, 0, VAL_USMARC, - marc_records[eff_pos], - strlen(marc_records[eff_pos])); -} - -IYaz_PDU_Observer *MyServer::sessionNotify( - IYaz_PDU_Observable *the_PDU_Observable, int fd) -{ - MyServer *new_server; - m_no++; - new_server = new MyServer(the_PDU_Observable); - new_server->timeout(900); - return new_server; -} - -MyServer::MyServer(IYaz_PDU_Observable *the_PDU_Observable) : - Yaz_Z_Server (the_PDU_Observable) -{ - m_no = 0; -} - -void MyServer::timeoutNotify() -{ - yaz_log (LOG_LOG, "connection timed out"); - delete this; -} - -void MyServer::failNotify() -{ - yaz_log (LOG_LOG, "connection closed by client"); - delete this; -} - -void MyServer::connectNotify() -{ -} - -int main(int argc, char **argv) -{ - while (1) - { - Yaz_SocketManager mySocketManager; - Yaz_PDU_AssocThread *my_PDU_Assoc = new Yaz_PDU_AssocThread(&mySocketManager); - - myServer = new MyServer(my_PDU_Assoc); - - MyServer *z = myServer; - - if (argc <= 1) - z->server("@:9999"); - else - { - for (int i = 1; i < argc; i++) - z->server(argv[i]); - } - while (mySocketManager.processEvent() > 0) - ; - delete z; - break; - } - return 0; -} diff --git a/src/yaz-z-assoc.cpp b/src/yaz-z-assoc.cpp index 5034821..94b8638 100644 --- a/src/yaz-z-assoc.cpp +++ b/src/yaz-z-assoc.cpp @@ -1,9 +1,12 @@ /* - * Copyright (c) 1998-2000, Index Data. + * Copyright (c) 1998-2001, Index Data. * See the file LICENSE for details. * * $Log: yaz-z-assoc.cpp,v $ - * Revision 1.18 2001-03-26 14:43:49 adam + * Revision 1.19 2001-03-27 14:47:45 adam + * New server facility scheme. + * + * Revision 1.18 2001/03/26 14:43:49 adam * New threaded PDU association. * * Revision 1.17 2001/01/04 14:25:25 heikki @@ -199,13 +202,13 @@ Z_APDU *Yaz_Z_Assoc::decode_Z_PDU(const char *buf, int len) int Yaz_Z_Assoc::encode_Z_PDU(Z_APDU *apdu, char **buf, int *len) { + if (m_APDU_file) + z_APDU(m_odr_print, &apdu, 0, "encode"); if (!z_APDU(m_odr_out, &apdu, 0, 0)) { logf (LOG_LOG, "yaz_Z_Assoc::encode_Z_PDU failed"); return -1; } - if (m_APDU_file) - z_APDU(m_odr_print, &apdu, 0, "encode"); *buf = odr_getbuf (m_odr_out, len, 0); odr_reset (m_odr_out); return *len; @@ -359,13 +362,12 @@ Z_ReferenceId* Yaz_Z_Assoc::getRefID(char* str) { Z_ReferenceId* id = NULL; - if ( str ) + if (str) { id = (Z_ReferenceId*) odr_malloc (m_odr_out, sizeof(*id)); id->size = id->len = strlen(str); id->buf = (unsigned char *) str; } - return id; } diff --git a/src/yaz-z-server-ill.cpp b/src/yaz-z-server-ill.cpp new file mode 100644 index 0000000..2571f3c --- /dev/null +++ b/src/yaz-z-server-ill.cpp @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2000-2001, Index Data. + * See the file LICENSE for details. + * + * $Log: yaz-z-server-ill.cpp,v $ + * Revision 1.1 2001-03-27 14:47:45 adam + * New server facility scheme. + * + */ + +#include +#include + +/* + * database record. + */ +void Yaz_Facility_ILL::create_databaseRecord ( + Z_NamePlusRecord *rec, const char *dbname, int format, + const void *buf, int len) +{ + rec->databaseName = dbname ? odr_strdup (m_odr, dbname) : 0; + rec->which = Z_NamePlusRecord_databaseRecord; + rec->u.databaseRecord = z_ext_record (m_odr, format, + (const char *) buf, len); +} + +/* + * surrogate diagnostic. + */ +void Yaz_Facility_ILL::create_surrogateDiagnostics( + Z_NamePlusRecord *rec, const char *dbname, int error, char *const addinfo) +{ + int oid[OID_SIZE]; + int *err = (int *)odr_malloc (m_odr, sizeof(*err)); + oident bib1; + Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (m_odr, sizeof(*drec)); + Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *) + odr_malloc (m_odr, sizeof(*dr)); + + bib1.proto = PROTO_Z3950; + bib1.oclass = CLASS_DIAGSET; + bib1.value = VAL_BIB1; + + yaz_log(LOG_DEBUG, "SurrogateDiagnotic: %d -- %s", error, addinfo); + *err = error; + rec->databaseName = dbname ? odr_strdup (m_odr, dbname) : 0; + rec->which = Z_NamePlusRecord_surrogateDiagnostic; + rec->u.surrogateDiagnostic = drec; + drec->which = Z_DiagRec_defaultFormat; + drec->u.defaultFormat = dr; + dr->diagnosticSetId = odr_oiddup (m_odr, + oid_ent_to_oid(&bib1, oid)); + dr->condition = err; + dr->which = Z_DefaultDiagFormat_v2Addinfo; + dr->u.v2Addinfo = odr_strdup (m_odr, addinfo ? addinfo : ""); +} + +ODR Yaz_Facility_ILL::odr_encode() +{ + return m_odr; +} + +int Yaz_Facility_ILL::init(Yaz_Z_Server *s, Z_InitRequest *initRequest, + Z_InitResponse *initResponse) +{ + Z_Options *req = initRequest->options; + Z_Options *res = initResponse->options; + + if (ODR_MASK_GET(req, Z_Options_extendedServices)) + ODR_MASK_SET(res, Z_Options_extendedServices); + return ill_init (initRequest, initResponse); +} + +int Yaz_Facility_ILL::recv(Yaz_Z_Server *s, Z_APDU *apdu_request) +{ + Z_APDU *apdu_response; + + m_odr = s->odr_encode(); + if (apdu_request->which != Z_APDU_extendedServicesRequest) + return 0; + + yaz_log (LOG_LOG, "got extendedSericesRequest p=%p", this); + apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse); + s->send_Z_PDU(apdu_response); + return 1; +} diff --git a/src/yaz-z-server.cpp b/src/yaz-z-server.cpp index b6b0a10..09d251e 100644 --- a/src/yaz-z-server.cpp +++ b/src/yaz-z-server.cpp @@ -3,7 +3,10 @@ * See the file LICENSE for details. * * $Log: yaz-z-server.cpp,v $ - * Revision 1.7 2001-03-26 14:43:49 adam + * Revision 1.8 2001-03-27 14:47:45 adam + * New server facility scheme. + * + * Revision 1.7 2001/03/26 14:43:49 adam * New threaded PDU association. * * Revision 1.6 2001/01/29 11:18:24 adam @@ -31,304 +34,92 @@ #include #include - Yaz_Z_Server::Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable) : Yaz_Z_Assoc(the_PDU_Observable) { + m_facilities = 0; } -/* - * database record. - */ -void Yaz_Z_Server::create_databaseRecord ( - Z_NamePlusRecord *rec, const char *dbname, int format, const void *buf, int len) +Yaz_Z_Server::~Yaz_Z_Server() { - rec->databaseName = dbname ? odr_strdup (odr_encode(), dbname) : 0; - rec->which = Z_NamePlusRecord_databaseRecord; - rec->u.databaseRecord = z_ext_record (odr_encode(), format, - (const char *) buf, len); + facility_reset(); } -/* - * surrogate diagnostic. - */ -void Yaz_Z_Server::create_surrogateDiagnostics( - Z_NamePlusRecord *rec, const char *dbname, int error, char *const addinfo) +void Yaz_Z_Server::facility_reset () { - int oid[OID_SIZE]; - int *err = (int *)odr_malloc (odr_encode(), sizeof(*err)); - oident bib1; - Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (odr_encode(), sizeof(*drec)); - Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *) - odr_malloc (odr_encode(), sizeof(*dr)); - - bib1.proto = PROTO_Z3950; - bib1.oclass = CLASS_DIAGSET; - bib1.value = VAL_BIB1; + Yaz_Z_Server_Facility_Info *p = m_facilities; + while (p) + { + Yaz_Z_Server_Facility_Info *p_next = p->m_next; - yaz_log(LOG_DEBUG, "SurrogateDiagnotic: %d -- %s", error, addinfo); - *err = error; - rec->databaseName = dbname ? odr_strdup (odr_encode(), dbname) : 0; - rec->which = Z_NamePlusRecord_surrogateDiagnostic; - rec->u.surrogateDiagnostic = drec; - drec->which = Z_DiagRec_defaultFormat; - drec->u.defaultFormat = dr; - dr->diagnosticSetId = odr_oiddup (odr_encode(), - oid_ent_to_oid(&bib1, oid)); - dr->condition = err; - dr->which = Z_DefaultDiagFormat_v2Addinfo; - dr->u.v2Addinfo = odr_strdup (odr_encode(), addinfo ? addinfo : ""); + delete [] p->m_name; + delete [] p->m_facility; + delete p; + p = p_next; + } + m_facilities = 0; } -Z_Records *Yaz_Z_Server::create_nonSurrogateDiagnostics ( - int error, const char *addinfo) +void Yaz_Z_Server::facility_add(IYaz_Server_Facility *facility, + const char *name) { - int oid[OID_SIZE]; - Z_Records *rec = (Z_Records *) - odr_malloc (odr_encode(), sizeof(*rec)); - oident bib1; - int *err = (int *) - odr_malloc (odr_encode(), sizeof(*err)); - Z_DiagRec *drec = (Z_DiagRec *) - odr_malloc (odr_encode(), sizeof(*drec)); - Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *) - odr_malloc (odr_encode(), sizeof(*dr)); + Yaz_Z_Server_Facility_Info **p = &m_facilities; + while (*p) + p = &(*p)->m_next; - bib1.proto = PROTO_Z3950; - bib1.oclass = CLASS_DIAGSET; - bib1.value = VAL_BIB1; + *p = new Yaz_Z_Server_Facility_Info; - *err = error; - rec->which = Z_Records_NSD; - rec->u.nonSurrogateDiagnostic = dr; - dr->diagnosticSetId = - odr_oiddup (odr_encode(), oid_ent_to_oid(&bib1, oid)); - dr->condition = err; - dr->which = Z_DefaultDiagFormat_v2Addinfo; - dr->u.v2Addinfo = odr_strdup (odr_encode(), addinfo ? addinfo : ""); - return rec; + (*p)->m_next = 0; + (*p)->m_name = new char [strlen(name)+1]; + strcpy ((*p)->m_name, name); + (*p)->m_facility = facility; } -Z_Records *Yaz_Z_Server::pack_records (const char *resultSetName, - int start, int xnum, - Z_RecordComposition *comp, - int *next, int *pres, - int *format) -{ - int recno, total_length = 0, toget = xnum, dumped_records = 0; - Z_Records *records = - (Z_Records *) odr_malloc (odr_encode(), sizeof(*records)); - Z_NamePlusRecordList *reclist = - (Z_NamePlusRecordList *) odr_malloc (odr_encode(), sizeof(*reclist)); - Z_NamePlusRecord **list = - (Z_NamePlusRecord **) odr_malloc (odr_encode(), sizeof(*list) * toget); - - records->which = Z_Records_DBOSD; - records->u.databaseOrSurDiagnostics = reclist; - reclist->num_records = 0; - reclist->records = list; - *pres = Z_PRES_SUCCESS; - *next = 0; - - yaz_log(LOG_LOG, "Request to pack %d+%d", start, toget); - yaz_log(LOG_LOG, "pms=%d, mrs=%d", m_preferredMessageSize, - m_maximumRecordSize); - for (recno = start; reclist->num_records < toget; recno++) +void Yaz_Z_Server::recv_Z_PDU (Z_APDU *apdu_request) +{ + Yaz_Z_Server_Facility_Info *f = m_facilities; + + if (apdu_request->which == Z_APDU_initRequest) { - Z_NamePlusRecord *this_rec = - (Z_NamePlusRecord *) odr_malloc (odr_encode(), sizeof(*this_rec)); - this_rec->databaseName = 0; - this_rec->which = Z_NamePlusRecord_databaseRecord; - this_rec->u.databaseRecord = 0; - - int this_length = 0; + Z_APDU *apdu_response = create_Z_PDU(Z_APDU_initResponse); - recv_Z_record (resultSetName, recno, format, comp, this_rec, records); - - if (records->which != Z_Records_DBOSD) + Z_InitRequest *req = apdu_request->u.initRequest; + Z_InitResponse *resp = apdu_response->u.initResponse; + + if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1)) { - *pres = Z_PRES_FAILURE; - return records; + ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_1); } - - if (this_rec->which == Z_NamePlusRecord_databaseRecord && - this_rec->u.databaseRecord == 0) - { // handler did not return a record.. - create_surrogateDiagnostics(this_rec, 0, 14, 0); + if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_2)) + { + ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_2); } - /* - * we get the number of bytes allocated on the stream before any - * allocation done by the backend - this should give us a reasonable - * idea of the total size of the data so far. - */ - total_length = odr_total(odr_encode()) - dumped_records; - this_length = odr_total(odr_encode()) - total_length; - yaz_log(LOG_LOG, " fetched record, len=%d, total=%d", - this_length, total_length); - if (this_length + total_length > m_preferredMessageSize) + if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_3)) { - /* record is small enough, really */ - if (this_length <= m_preferredMessageSize) - { - yaz_log(LOG_LOG, " Dropped last normal-sized record"); - *pres = Z_PRES_PARTIAL_2; - break; - } - if (this_length >= m_maximumRecordSize) - { /* too big entirely */ - yaz_log(LOG_LOG, "Record > maxrcdsz"); - reclist->records[reclist->num_records] = this_rec; - create_surrogateDiagnostics(this_rec, - this_rec->databaseName, 17, 0); - reclist->num_records++; - *next = recno + 1; - dumped_records += this_length; - continue; - } - else /* record can only be fetched by itself */ - { - yaz_log(LOG_LOG, " Record > prefmsgsz"); - if (toget > 1) - { - yaz_log(LOG_DEBUG, " Dropped it"); - reclist->records[reclist->num_records] = this_rec; - create_surrogateDiagnostics(this_rec, - this_rec->databaseName, - 16, 0); - reclist->num_records++; - // *next = freq.last_in_set ? 0 : recno + 1; - *next = recno + 1; - dumped_records += this_length; - continue; - } - } + ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_3); } - reclist->records[reclist->num_records] = this_rec; - reclist->num_records++; - *next = recno + 1; - } - return records; -} - -void Yaz_Z_Server::fetch_via_piggyback (Z_SearchRequest *req, - Z_SearchResponse *res) -{ - bool_t *sr = (bool_t *)odr_malloc (odr_encode(), sizeof(*sr)); - *sr = 1; - - int toget = 0; - - Z_RecordComposition comp, *compp = 0; - int hits = *res->resultCount; - - int *nulint = (int *)odr_malloc (odr_encode(), sizeof(*nulint)); - *nulint = 0; - - comp.which = Z_RecordComp_simple; - /* how many records does the user agent want, then? */ - if (hits <= *req->smallSetUpperBound) - { - toget = hits; - if ((comp.u.simple = req->smallSetElementSetNames)) - compp = ∁ - } - else if (hits < *req->largeSetLowerBound) - { - toget = *req->mediumSetPresentNumber; - if (toget > hits) - toget = hits; - if ((comp.u.simple = req->mediumSetElementSetNames)) - compp = ∁ - } - - if (toget && !res->records) - { - res->presentStatus = (int *) odr_malloc (odr_encode(), sizeof(int)); - *res->presentStatus = Z_PRES_SUCCESS; - res->records = - pack_records(req->resultSetName, 1, toget, compp, - res->nextResultSetPosition, - res->presentStatus, - req->preferredRecordSyntax); - if (!res->records) - return; - if (res->records->which == Z_Records_DBOSD) - *res->numberOfRecordsReturned = - res->records->u.databaseOrSurDiagnostics->num_records; - res->searchStatus = sr; - res->resultSetStatus = 0; + while (f) + { + f->m_facility->init(this, req, resp); + f = f->m_next; + } + send_Z_PDU(apdu_response); } else { - if (hits) - *res->nextResultSetPosition = 1; - res->numberOfRecordsReturned = nulint; - res->searchStatus = sr; - res->resultSetStatus = 0; - res->presentStatus = 0; - } -} - -void Yaz_Z_Server::fetch_via_present (Z_PresentRequest *req, - Z_PresentResponse *res) -{ - res->records = pack_records (req->resultSetId,*req->resultSetStartPoint, - *req->numberOfRecordsRequested, - req->recordComposition, - res->nextResultSetPosition, - res->presentStatus, - req->preferredRecordSyntax); - if (res->records->which == Z_Records_DBOSD) - *res->numberOfRecordsReturned = - res->records->u.databaseOrSurDiagnostics->num_records; -} - -void Yaz_Z_Server::recv_Z_PDU (Z_APDU *apdu_request) -{ - Z_Options *req, *res; - Z_APDU *apdu_response; - switch (apdu_request->which) - { - case Z_APDU_initRequest: - yaz_log (LOG_LOG, "got InitRequest p=%p", this); - apdu_response = create_Z_PDU(Z_APDU_initResponse); - req = apdu_request->u.initRequest->options; - res = apdu_response->u.initResponse->options; - - if (ODR_MASK_GET(req, Z_Options_search)) - ODR_MASK_SET(res, Z_Options_search); - if (ODR_MASK_GET(req, Z_Options_present)) - ODR_MASK_SET(res, Z_Options_present); - recv_Z_init (apdu_request->u.initRequest, - apdu_response->u.initResponse); - m_preferredMessageSize = - *apdu_request->u.initRequest->preferredMessageSize; - m_maximumRecordSize = - *apdu_request->u.initRequest->maximumRecordSize; - send_Z_PDU(apdu_response); - break; - case Z_APDU_searchRequest: - yaz_log (LOG_LOG, "got SearchRequest p=%p", this); - apdu_response = create_Z_PDU(Z_APDU_searchResponse); - recv_Z_search (apdu_request->u.searchRequest, - apdu_response->u.searchResponse); - if (!apdu_response->u.searchResponse->records) + f = m_facilities; + int taken = 0; + while (f) { - fetch_via_piggyback(apdu_request->u.searchRequest, - apdu_response->u.searchResponse); + taken = f->m_facility->recv(this, apdu_request); + if (taken) + break; + f = f->m_next; + } + if (!taken) + { + yaz_log (LOG_LOG, "got request = %d", apdu_request->which); + delete this; } - send_Z_PDU(apdu_response); - break; - case Z_APDU_presentRequest: - yaz_log (LOG_LOG, "got PresentRequest p=%p", this); - apdu_response = create_Z_PDU(Z_APDU_presentResponse); - recv_Z_present (apdu_request->u.presentRequest, - apdu_response->u.presentResponse); - if (!apdu_response->u.presentResponse->records) - fetch_via_present(apdu_request->u.presentRequest, - apdu_response->u.presentResponse); - send_Z_PDU(apdu_response); - break; } } -