maint: Indent code.
Signed-off-by: Simon Josefsson <simon@josefsson.org>
diff --git a/cfg.mk b/cfg.mk
index 317a6c9..a96d7af 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -22,8 +22,6 @@
bootstrap-tools = gnulib,autoconf,automake,libtoolize,make,makeinfo,bison,help2man,gtkdocize,tar,gzip
-INDENT_SOURCES = `find . -name \*.[ch]|grep -v -e ^./gnulib -e ^./lib/gl -e ^./build-aux/ -e ^./lib/ASN1.c -e ^./tests/Test_tree_asn1_tab.c`
-
local-checks-to-skip = sc_prohibit_strcmp sc_prohibit_have_config_h \
sc_require_config_h sc_require_config_h_first \
sc_immutable_NEWS sc_prohibit_magic_number_exit \
diff --git a/fuzz/asn1_decode_simple_ber_fuzzer.c b/fuzz/asn1_decode_simple_ber_fuzzer.c
index 132fa79..7eb34ed 100644
--- a/fuzz/asn1_decode_simple_ber_fuzzer.c
+++ b/fuzz/asn1_decode_simple_ber_fuzzer.c
@@ -27,23 +27,30 @@
#include "libtasn1.h"
#include "fuzzer.h"
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- int ret;
- unsigned int ret_len;
- unsigned char *str;
+ int ret;
+ unsigned int ret_len;
+ unsigned char *str;
- ret = asn1_decode_simple_ber(ASN1_ETYPE_BIT_STRING, data, size, &str, &ret_len, NULL);
- if (ret == ASN1_SUCCESS) {
- free(str);
- assert(ret_len <= size);
- }
+ ret =
+ asn1_decode_simple_ber (ASN1_ETYPE_BIT_STRING, data, size, &str, &ret_len,
+ NULL);
+ if (ret == ASN1_SUCCESS)
+ {
+ free (str);
+ assert (ret_len <= size);
+ }
- ret = asn1_decode_simple_ber(ASN1_ETYPE_OCTET_STRING, data, size, &str, &ret_len, NULL);
- if (ret == ASN1_SUCCESS) {
- free(str);
- assert(ret_len <= size);
- }
+ ret =
+ asn1_decode_simple_ber (ASN1_ETYPE_OCTET_STRING, data, size, &str,
+ &ret_len, NULL);
+ if (ret == ASN1_SUCCESS)
+ {
+ free (str);
+ assert (ret_len <= size);
+ }
- return 0;
+ return 0;
}
diff --git a/fuzz/asn1_decode_simple_der_fuzzer.c b/fuzz/asn1_decode_simple_der_fuzzer.c
index adc22dc..ee5445d 100644
--- a/fuzz/asn1_decode_simple_der_fuzzer.c
+++ b/fuzz/asn1_decode_simple_der_fuzzer.c
@@ -26,21 +26,28 @@
#include "libtasn1.h"
#include "fuzzer.h"
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- int ret;
- unsigned int ret_len;
- const unsigned char *str;
+ int ret;
+ unsigned int ret_len;
+ const unsigned char *str;
- ret = asn1_decode_simple_der(ASN1_ETYPE_BIT_STRING, data, size, &str, &ret_len);
- if (ret == ASN1_SUCCESS) {
- assert(ret_len <= size);
- }
+ ret =
+ asn1_decode_simple_der (ASN1_ETYPE_BIT_STRING, data, size, &str,
+ &ret_len);
+ if (ret == ASN1_SUCCESS)
+ {
+ assert (ret_len <= size);
+ }
- ret = asn1_decode_simple_der(ASN1_ETYPE_OCTET_STRING, data, size, &str, &ret_len);
- if (ret == ASN1_SUCCESS) {
- assert(ret_len <= size);
- }
+ ret =
+ asn1_decode_simple_der (ASN1_ETYPE_OCTET_STRING, data, size, &str,
+ &ret_len);
+ if (ret == ASN1_SUCCESS)
+ {
+ assert (ret_len <= size);
+ }
- return 0;
+ return 0;
}
diff --git a/fuzz/asn1_get_length_ber_fuzzer.c b/fuzz/asn1_get_length_ber_fuzzer.c
index cb9d0bc..4572140 100644
--- a/fuzz/asn1_get_length_ber_fuzzer.c
+++ b/fuzz/asn1_get_length_ber_fuzzer.c
@@ -27,14 +27,15 @@
#define MAXDATASIZE 512
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- int ret_len;
+ int ret_len;
- if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
- return 0;
+ if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
+ return 0;
- asn1_get_length_ber(data, size, &ret_len);
+ asn1_get_length_ber (data, size, &ret_len);
- return 0;
+ return 0;
}
diff --git a/fuzz/asn1_get_length_der_fuzzer.c b/fuzz/asn1_get_length_der_fuzzer.c
index f5fe9d0..0ad8944 100644
--- a/fuzz/asn1_get_length_der_fuzzer.c
+++ b/fuzz/asn1_get_length_der_fuzzer.c
@@ -27,14 +27,15 @@
#define MAXDATASIZE 512
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- int ret_len;
+ int ret_len;
- if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
- return 0;
+ if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
+ return 0;
- asn1_get_length_der(data, size, &ret_len);
+ asn1_get_length_der (data, size, &ret_len);
- return 0;
+ return 0;
}
diff --git a/fuzz/asn1_get_object_id_der_fuzzer.c b/fuzz/asn1_get_object_id_der_fuzzer.c
index c77e616..dfb59cc 100644
--- a/fuzz/asn1_get_object_id_der_fuzzer.c
+++ b/fuzz/asn1_get_object_id_der_fuzzer.c
@@ -25,12 +25,13 @@
#include "libtasn1.h"
#include "fuzzer.h"
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- int ret_len;
- char str[256];
+ int ret_len;
+ char str[256];
- asn1_get_object_id_der(data, size, &ret_len, str, sizeof(str));
+ asn1_get_object_id_der (data, size, &ret_len, str, sizeof (str));
- return 0;
+ return 0;
}
diff --git a/fuzz/corpus2array.c b/fuzz/corpus2array.c
index 6bc9522..f2a503b 100644
--- a/fuzz/corpus2array.c
+++ b/fuzz/corpus2array.c
@@ -34,40 +34,52 @@
#include <string.h>
#include <ctype.h>
-struct fuzz_elem {
- unsigned int type;
- char name[20];
- char value[20];
+struct fuzz_elem
+{
+ unsigned int type;
+ char name[20];
+ char value[20];
};
-static char *escape(unsigned char *s)
+static char *
+escape (unsigned char *s)
{
- static char out[19 * 6 + 1];
- char *p = out;
+ static char out[19 * 6 + 1];
+ char *p = out;
- while (*s) {
- if (*s > 127) {
- if (isxdigit(s[1])) {
- sprintf(p, "\\u%04x", *s++);
- p += 6;
- } else {
- sprintf(p, "\\x%02x", *s++);
- p += 4;
- }
- } else if (*s == '\n') {
- sprintf(p, "\\n");
- p += 2;
- s++;
- } else if (*s == '\t') {
- sprintf(p, "\\t");
- p += 2;
- s++;
- } else
- *p++ = *s++;
+ while (*s)
+ {
+ if (*s > 127)
+ {
+ if (isxdigit (s[1]))
+ {
+ sprintf (p, "\\u%04x", *s++);
+ p += 6;
+ }
+ else
+ {
+ sprintf (p, "\\x%02x", *s++);
+ p += 4;
+ }
}
- *p = 0;
+ else if (*s == '\n')
+ {
+ sprintf (p, "\\n");
+ p += 2;
+ s++;
+ }
+ else if (*s == '\t')
+ {
+ sprintf (p, "\\t");
+ p += 2;
+ s++;
+ }
+ else
+ *p++ = *s++;
+ }
+ *p = 0;
- return out;
+ return out;
}
static const char *typename[24] = {
@@ -88,7 +100,7 @@
"CONST_DEFINED_BY",
"CONST_GENERALIZED",
"CONST_UTC",
- NULL, /* #define CONST_IMPORTS (1<<25) */
+ NULL, /* #define CONST_IMPORTS (1<<25) */
"CONST_NOT_USED",
"CONST_SET",
"CONST_ASSIGN",
@@ -97,49 +109,56 @@
NULL
};
-int main(void)
+int
+main (void)
{
- struct fuzz_elem e;
+ struct fuzz_elem e;
- printf("const asn1_static_node tab[] = {\n");
+ printf ("const asn1_static_node tab[] = {\n");
- while (fread(&e, sizeof(e), 1, stdin) == 1) {
- e.name[sizeof(e.name) - 1] = 0;
- e.value[sizeof(e.value) - 1] = 0;
- if (strcmp(e.name, "NULL"))
- printf(" { \"%s\"", escape((unsigned char *) e.name));
- else
- printf(" { NULL");
+ while (fread (&e, sizeof (e), 1, stdin) == 1)
+ {
+ e.name[sizeof (e.name) - 1] = 0;
+ e.value[sizeof (e.value) - 1] = 0;
+ if (strcmp (e.name, "NULL"))
+ printf (" { \"%s\"", escape ((unsigned char *) e.name));
+ else
+ printf (" { NULL");
- if (e.type) {
- int add = 0;
+ if (e.type)
+ {
+ int add = 0;
- // we leave the lowest 8 bit out
- if ((e.type & 0xFF) == 17) {
- printf(", ASN1_ETYPE_TIME");
- add = 1;
- }
+ // we leave the lowest 8 bit out
+ if ((e.type & 0xFF) == 17)
+ {
+ printf (", ASN1_ETYPE_TIME");
+ add = 1;
+ }
- for (int i = 8; i < 32 ; i++) {
- if ((e.type & (1U << i)) && typename[i - 8]) {
- printf(add ? "|%s" : ", %s", typename[i - 8]);
- add = 1;
- }
- }
+ for (int i = 8; i < 32; i++)
+ {
+ if ((e.type & (1U << i)) && typename[i - 8])
+ {
+ printf (add ? "|%s" : ", %s", typename[i - 8]);
+ add = 1;
+ }
+ }
- if (!add)
- printf(", %u", e.type);
- } else
- printf(", 0");
-
- if (strcmp(e.value, "NULL"))
- printf(", \"%s\" },\n", escape((unsigned char *) e.value));
- else
- printf(", NULL },");
+ if (!add)
+ printf (", %u", e.type);
}
+ else
+ printf (", 0");
- printf(" { NULL, 0, NULL }\n");
- printf("};\n");
+ if (strcmp (e.value, "NULL"))
+ printf (", \"%s\" },\n", escape ((unsigned char *) e.value));
+ else
+ printf (", NULL },");
+ }
- return 0;
+ printf (" { NULL, 0, NULL }\n");
+ printf ("};\n");
+
+ return 0;
}
diff --git a/fuzz/fuzzer.h b/fuzz/fuzzer.h
index 8b70818..62f0302 100644
--- a/fuzz/fuzzer.h
+++ b/fuzz/fuzzer.h
@@ -17,15 +17,15 @@
* along with libtasn1. If not, see <https://www.gnu.org/licenses/>.
*/
-#include <stddef.h> // size_t
-#include <stdint.h> // uint8_t
+#include <stddef.h> // size_t
+#include <stdint.h> // uint8_t
#if defined __clang__ || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
- #pragma GCC diagnostic ignored "-Wunused"
- #pragma GCC diagnostic ignored "-Wpedantic"
+# pragma GCC diagnostic ignored "-Wunused"
+# pragma GCC diagnostic ignored "-Wpedantic"
#endif
#ifdef __cplusplus
extern "C"
#endif
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+int LLVMFuzzerTestOneInput (const uint8_t * data, size_t size);
diff --git a/fuzz/libtasn1_array2tree_fuzzer.c b/fuzz/libtasn1_array2tree_fuzzer.c
index 28559da..33f947c 100644
--- a/fuzz/libtasn1_array2tree_fuzzer.c
+++ b/fuzz/libtasn1_array2tree_fuzzer.c
@@ -22,71 +22,73 @@
#include <config.h>
-#include <assert.h> // assert
-#include <stdlib.h> // malloc, free
-#include <string.h> // memcpy
+#include <assert.h> // assert
+#include <stdlib.h> // malloc, free
+#include <string.h> // memcpy
#include "libtasn1.h"
#include "fuzzer.h"
const asn1_static_node pkix_asn1_tab[] = {
- { "PKIX1Implicit88", 536875024, NULL },
- { NULL, 0, NULL }
+ {"PKIX1Implicit88", 536875024, NULL},
+ {NULL, 0, NULL}
};
#define NAMESIZE 20
#define VALUESIZE 20
-struct fuzz_elem {
- unsigned int type;
- char name[NAMESIZE];
- char value[VALUESIZE];
+struct fuzz_elem
+{
+ unsigned int type;
+ char name[NAMESIZE];
+ char value[VALUESIZE];
};
#define MAXELEM 100
#define MAXDATASIZE (100 * sizeof(struct fuzz_elem))
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
- return 0;
+ if (size > MAXDATASIZE) // same as max_len = <MAXDATASIZE> in .options file
+ return 0;
- struct fuzz_elem *elem = (struct fuzz_elem *) malloc(size);
- assert(elem != NULL);
- memcpy(elem, data, size);
+ struct fuzz_elem *elem = (struct fuzz_elem *) malloc (size);
+ assert (elem != NULL);
+ memcpy (elem, data, size);
- int nelem = size / sizeof(struct fuzz_elem);
- asn1_static_node tab[MAXELEM + 1]; // avoid VLA here
+ int nelem = size / sizeof (struct fuzz_elem);
+ asn1_static_node tab[MAXELEM + 1]; // avoid VLA here
- for (int it = 0; it < nelem; it++) {
- tab[it].type = elem[it].type;
- elem[it].name[NAMESIZE - 1] = 0;
- if (strcmp(elem[it].name, "NULL"))
- tab[it].name = elem[it].name;
- else
- tab[it].name = NULL;
- elem[it].value[VALUESIZE -1] = 0;
- if (strcmp(elem[it].value, "NULL"))
- tab[it].value = elem[it].value;
- else
- tab[it].value = NULL;
- }
+ for (int it = 0; it < nelem; it++)
+ {
+ tab[it].type = elem[it].type;
+ elem[it].name[NAMESIZE - 1] = 0;
+ if (strcmp (elem[it].name, "NULL"))
+ tab[it].name = elem[it].name;
+ else
+ tab[it].name = NULL;
+ elem[it].value[VALUESIZE - 1] = 0;
+ if (strcmp (elem[it].value, "NULL"))
+ tab[it].value = elem[it].value;
+ else
+ tab[it].value = NULL;
+ }
- // end-of-array indicator
- tab[nelem].type = 0;
- tab[nelem].name = NULL;
- tab[nelem].value = NULL;
+ // end-of-array indicator
+ tab[nelem].type = 0;
+ tab[nelem].name = NULL;
+ tab[nelem].value = NULL;
- int result;
- asn1_node node = NULL;
- char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
+ int result;
+ asn1_node node = NULL;
+ char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
- result =
- asn1_array2tree(tab, &node, errorDescription);
+ result = asn1_array2tree (tab, &node, errorDescription);
- if (result == ASN1_SUCCESS)
- asn1_delete_structure(&node);
+ if (result == ASN1_SUCCESS)
+ asn1_delete_structure (&node);
- free(elem);
+ free (elem);
- return 0;
+ return 0;
}
diff --git a/fuzz/libtasn1_gnutls_der_fuzzer.c b/fuzz/libtasn1_gnutls_der_fuzzer.c
index 728f637..a7bcac0 100644
--- a/fuzz/libtasn1_gnutls_der_fuzzer.c
+++ b/fuzz/libtasn1_gnutls_der_fuzzer.c
@@ -22,9 +22,9 @@
#include <config.h>
-#include <assert.h> // assert
-#include <stdlib.h> // malloc, free
-#include <string.h> // strcmp, memcpy
+#include <assert.h> // assert
+#include <stdlib.h> // malloc, free
+#include <string.h> // strcmp, memcpy
#include "libtasn1.h"
#include "fuzzer.h"
@@ -34,142 +34,156 @@
* It is created from lib/gnutls.asn over at the GnuTLS project.
*/
const asn1_static_node gnutls_asn1_tab[] = {
- { "GNUTLS", 536872976, NULL },
- { NULL, 1073741836, NULL },
- { "RSAPublicKey", 1610612741, NULL },
- { "modulus", 1073741827, NULL },
- { "publicExponent", 3, NULL },
- { "RSAPrivateKey", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "modulus", 1073741827, NULL },
- { "publicExponent", 1073741827, NULL },
- { "privateExponent", 1073741827, NULL },
- { "prime1", 1073741827, NULL },
- { "prime2", 1073741827, NULL },
- { "exponent1", 1073741827, NULL },
- { "exponent2", 1073741827, NULL },
- { "coefficient", 1073741827, NULL },
- { "otherPrimeInfos", 16386, "OtherPrimeInfos"},
- { "ProvableSeed", 1610612741, NULL },
- { "algorithm", 1073741836, NULL },
- { "seed", 7, NULL },
- { "OtherPrimeInfos", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "OtherPrimeInfo"},
- { "OtherPrimeInfo", 1610612741, NULL },
- { "prime", 1073741827, NULL },
- { "exponent", 1073741827, NULL },
- { "coefficient", 3, NULL },
- { "AlgorithmIdentifier", 1610612741, NULL },
- { "algorithm", 1073741836, NULL },
- { "parameters", 541081613, NULL },
- { "algorithm", 1, NULL },
- { "DigestInfo", 1610612741, NULL },
- { "digestAlgorithm", 1073741826, "DigestAlgorithmIdentifier"},
- { "digest", 7, NULL },
- { "DigestAlgorithmIdentifier", 1073741826, "AlgorithmIdentifier"},
- { "DSAPublicKey", 1073741827, NULL },
- { "DSAParameters", 1610612741, NULL },
- { "p", 1073741827, NULL },
- { "q", 1073741827, NULL },
- { "g", 3, NULL },
- { "DSASignatureValue", 1610612741, NULL },
- { "r", 1073741827, NULL },
- { "s", 3, NULL },
- { "DSAPrivateKey", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "p", 1073741827, NULL },
- { "q", 1073741827, NULL },
- { "g", 1073741827, NULL },
- { "Y", 1073741827, NULL },
- { "priv", 3, NULL },
- { "DHParameter", 1610612741, NULL },
- { "prime", 1073741827, NULL },
- { "base", 1073741827, NULL },
- { "privateValueLength", 16387, NULL },
- { "ECParameters", 1610612754, NULL },
- { "namedCurve", 12, NULL },
- { "ECPrivateKey", 1610612741, NULL },
- { "Version", 1073741827, NULL },
- { "privateKey", 1073741831, NULL },
- { "parameters", 1610637314, "ECParameters"},
- { NULL, 2056, "0"},
- { "publicKey", 536895494, NULL },
- { NULL, 2056, "1"},
- { "PrincipalName", 1610612741, NULL },
- { "name-type", 1610620931, NULL },
- { NULL, 2056, "0"},
- { "name-string", 536879115, NULL },
- { NULL, 1073743880, "1"},
- { NULL, 27, NULL },
- { "KRB5PrincipalName", 1610612741, NULL },
- { "realm", 1610620955, NULL },
- { NULL, 2056, "0"},
- { "principalName", 536879106, "PrincipalName"},
- { NULL, 2056, "1"},
- { "RSAPSSParameters", 1610612741, NULL },
- { "hashAlgorithm", 1610637314, "AlgorithmIdentifier"},
- { NULL, 2056, "0"},
- { "maskGenAlgorithm", 1610637314, "AlgorithmIdentifier"},
- { NULL, 2056, "1"},
- { "saltLength", 1610653699, NULL },
- { NULL, 1073741833, "20"},
- { NULL, 2056, "2"},
- { "trailerField", 536911875, NULL },
- { NULL, 1073741833, "1"},
- { NULL, 2056, "3"},
- { "GOSTParameters", 1610612741, NULL },
- { "publicKeyParamSet", 1073741836, NULL },
- { "digestParamSet", 1073741836, NULL },
- { "encryptionParamSet", 16396, NULL },
- { "GOSTPrivateKey", 1073741831, NULL },
- { "GOSTPrivateKeyOld", 3, NULL },
- { NULL, 0, NULL }
+ {"GNUTLS", 536872976, NULL},
+ {NULL, 1073741836, NULL},
+ {"RSAPublicKey", 1610612741, NULL},
+ {"modulus", 1073741827, NULL},
+ {"publicExponent", 3, NULL},
+ {"RSAPrivateKey", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"modulus", 1073741827, NULL},
+ {"publicExponent", 1073741827, NULL},
+ {"privateExponent", 1073741827, NULL},
+ {"prime1", 1073741827, NULL},
+ {"prime2", 1073741827, NULL},
+ {"exponent1", 1073741827, NULL},
+ {"exponent2", 1073741827, NULL},
+ {"coefficient", 1073741827, NULL},
+ {"otherPrimeInfos", 16386, "OtherPrimeInfos"},
+ {"ProvableSeed", 1610612741, NULL},
+ {"algorithm", 1073741836, NULL},
+ {"seed", 7, NULL},
+ {"OtherPrimeInfos", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "OtherPrimeInfo"},
+ {"OtherPrimeInfo", 1610612741, NULL},
+ {"prime", 1073741827, NULL},
+ {"exponent", 1073741827, NULL},
+ {"coefficient", 3, NULL},
+ {"AlgorithmIdentifier", 1610612741, NULL},
+ {"algorithm", 1073741836, NULL},
+ {"parameters", 541081613, NULL},
+ {"algorithm", 1, NULL},
+ {"DigestInfo", 1610612741, NULL},
+ {"digestAlgorithm", 1073741826, "DigestAlgorithmIdentifier"},
+ {"digest", 7, NULL},
+ {"DigestAlgorithmIdentifier", 1073741826, "AlgorithmIdentifier"},
+ {"DSAPublicKey", 1073741827, NULL},
+ {"DSAParameters", 1610612741, NULL},
+ {"p", 1073741827, NULL},
+ {"q", 1073741827, NULL},
+ {"g", 3, NULL},
+ {"DSASignatureValue", 1610612741, NULL},
+ {"r", 1073741827, NULL},
+ {"s", 3, NULL},
+ {"DSAPrivateKey", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"p", 1073741827, NULL},
+ {"q", 1073741827, NULL},
+ {"g", 1073741827, NULL},
+ {"Y", 1073741827, NULL},
+ {"priv", 3, NULL},
+ {"DHParameter", 1610612741, NULL},
+ {"prime", 1073741827, NULL},
+ {"base", 1073741827, NULL},
+ {"privateValueLength", 16387, NULL},
+ {"ECParameters", 1610612754, NULL},
+ {"namedCurve", 12, NULL},
+ {"ECPrivateKey", 1610612741, NULL},
+ {"Version", 1073741827, NULL},
+ {"privateKey", 1073741831, NULL},
+ {"parameters", 1610637314, "ECParameters"},
+ {NULL, 2056, "0"},
+ {"publicKey", 536895494, NULL},
+ {NULL, 2056, "1"},
+ {"PrincipalName", 1610612741, NULL},
+ {"name-type", 1610620931, NULL},
+ {NULL, 2056, "0"},
+ {"name-string", 536879115, NULL},
+ {NULL, 1073743880, "1"},
+ {NULL, 27, NULL},
+ {"KRB5PrincipalName", 1610612741, NULL},
+ {"realm", 1610620955, NULL},
+ {NULL, 2056, "0"},
+ {"principalName", 536879106, "PrincipalName"},
+ {NULL, 2056, "1"},
+ {"RSAPSSParameters", 1610612741, NULL},
+ {"hashAlgorithm", 1610637314, "AlgorithmIdentifier"},
+ {NULL, 2056, "0"},
+ {"maskGenAlgorithm", 1610637314, "AlgorithmIdentifier"},
+ {NULL, 2056, "1"},
+ {"saltLength", 1610653699, NULL},
+ {NULL, 1073741833, "20"},
+ {NULL, 2056, "2"},
+ {"trailerField", 536911875, NULL},
+ {NULL, 1073741833, "1"},
+ {NULL, 2056, "3"},
+ {"GOSTParameters", 1610612741, NULL},
+ {"publicKeyParamSet", 1073741836, NULL},
+ {"digestParamSet", 1073741836, NULL},
+ {"encryptionParamSet", 16396, NULL},
+ {"GOSTPrivateKey", 1073741831, NULL},
+ {"GOSTPrivateKeyOld", 3, NULL},
+ {NULL, 0, NULL}
};
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- static asn1_node _gnutls_gnutls_asn = NULL;
- static int first = 1;
- asn1_node dn;
- int res;
+ static asn1_node _gnutls_gnutls_asn = NULL;
+ static int first = 1;
+ asn1_node dn;
+ int res;
- if (size > 10000) // same as max_len = 10000 in .options file
- return 0;
+ if (size > 10000) // same as max_len = 10000 in .options file
+ return 0;
- if (first) {
- first = 0;
+ if (first)
+ {
+ first = 0;
- // from _gnutls_global_init()
- res = asn1_array2tree(gnutls_asn1_tab, &_gnutls_gnutls_asn, NULL);
- assert(res == ASN1_SUCCESS);
+ // from _gnutls_global_init()
+ res = asn1_array2tree (gnutls_asn1_tab, &_gnutls_gnutls_asn, NULL);
+ assert (res == ASN1_SUCCESS);
+ }
+
+ // from gnutls_dh_params_import_pkcs3()
+ if ((res =
+ asn1_create_element (_gnutls_gnutls_asn, "GNUTLS.DHParameter",
+ &dn)) == ASN1_SUCCESS)
+ {
+ // from cert_get_issuer_dn()
+ res = asn1_der_decoding (&dn, data, size, NULL);
+ asn1_delete_structure (&dn);
+ }
+
+ // from _gnutls_x509_write_gost_params()
+ if ((res =
+ asn1_create_element (_gnutls_gnutls_asn, "GNUTLS.GOSTParameters",
+ &dn)) == ASN1_SUCCESS)
+ {
+ if ((res =
+ asn1_write_value (dn, "digestParamSet", "1.2.643.7.1.1.2.2",
+ 1)) == ASN1_SUCCESS)
+ {
+ // from cert_get_issuer_dn()
+ res = asn1_der_decoding (&dn, data, size, NULL);
+
+ // from _gnutls_x509_der_encode()
+ int dersize = 0;
+ if ((res =
+ asn1_der_coding (dn, "", NULL, &dersize,
+ NULL)) == ASN1_MEM_ERROR)
+ {
+ void *der = malloc (dersize);
+ assert (der);
+ res = asn1_der_coding (dn, "", der, &dersize, NULL);
+ free (der);
+ }
}
- // from gnutls_dh_params_import_pkcs3()
- if ((res = asn1_create_element(_gnutls_gnutls_asn, "GNUTLS.DHParameter", &dn)) == ASN1_SUCCESS) {
- // from cert_get_issuer_dn()
- res = asn1_der_decoding(&dn, data, size, NULL);
- asn1_delete_structure(&dn);
- }
+ asn1_delete_structure (&dn);
+ }
- // from _gnutls_x509_write_gost_params()
- if ((res = asn1_create_element(_gnutls_gnutls_asn, "GNUTLS.GOSTParameters", &dn)) == ASN1_SUCCESS) {
- if ((res = asn1_write_value(dn, "digestParamSet", "1.2.643.7.1.1.2.2", 1)) == ASN1_SUCCESS) {
- // from cert_get_issuer_dn()
- res = asn1_der_decoding(&dn, data, size, NULL);
-
- // from _gnutls_x509_der_encode()
- int dersize = 0;
- if ((res = asn1_der_coding(dn, "", NULL, &dersize, NULL)) == ASN1_MEM_ERROR) {
- void *der = malloc(dersize);
- assert(der);
- res = asn1_der_coding(dn, "", der, &dersize, NULL);
- free(der);
- }
- }
-
- asn1_delete_structure(&dn);
- }
-
- return 0;
+ return 0;
}
diff --git a/fuzz/libtasn1_parser2tree_fuzzer.c b/fuzz/libtasn1_parser2tree_fuzzer.c
index 8e726b7..9564201 100644
--- a/fuzz/libtasn1_parser2tree_fuzzer.c
+++ b/fuzz/libtasn1_parser2tree_fuzzer.c
@@ -22,8 +22,8 @@
#include <config.h>
-#include <stdlib.h> // malloc, free
-#include <string.h> // strcmp, memcpy
+#include <stdlib.h> // malloc, free
+#include <string.h> // strcmp, memcpy
#include "libtasn1.h"
#include "fuzzer.h"
@@ -32,36 +32,40 @@
static size_t g_size;
#if defined HAVE_DLFCN_H && defined HAVE_FMEMOPEN
-#include <dlfcn.h>
-#ifdef RTLD_NEXT /* Not defined e.g. on CygWin */
+# include <dlfcn.h>
+# ifdef RTLD_NEXT /* Not defined e.g. on CygWin */
-FILE *fopen(const char *pathname, const char *mode) {
- FILE * (*libc_fopen)(const char *, const char *) =
- (FILE * (*)(const char *, const char *)) dlsym(RTLD_NEXT, "fopen");
-
- if (!strcmp(pathname, "pkix.asn"))
- return fmemopen((void *) g_data, g_size, mode);
-
- return libc_fopen(pathname, mode);
-}
-#endif
-#endif
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+FILE *
+fopen (const char *pathname, const char *mode)
{
- char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
- asn1_node definitions = NULL;
+ FILE *(*libc_fopen) (const char *, const char *) =
+ (FILE * (*)(const char *, const char *)) dlsym (RTLD_NEXT, "fopen");
- if (size > 10000) // same as max_len = 10000 in .options file
- return 0;
+ if (!strcmp (pathname, "pkix.asn"))
+ return fmemopen ((void *) g_data, g_size, mode);
- g_data = data;
- g_size = size;
+ return libc_fopen (pathname, mode);
+}
+# endif
+#endif
- int rc = asn1_parser2tree("pkix.asn", &definitions, errorDescription);
- if (rc == ASN1_SUCCESS) {
- asn1_delete_structure(&definitions);
- }
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
+{
+ char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
+ asn1_node definitions = NULL;
- return 0;
+ if (size > 10000) // same as max_len = 10000 in .options file
+ return 0;
+
+ g_data = data;
+ g_size = size;
+
+ int rc = asn1_parser2tree ("pkix.asn", &definitions, errorDescription);
+ if (rc == ASN1_SUCCESS)
+ {
+ asn1_delete_structure (&definitions);
+ }
+
+ return 0;
}
diff --git a/fuzz/libtasn1_pkix_der_fuzzer.c b/fuzz/libtasn1_pkix_der_fuzzer.c
index 515495c..f88f542 100644
--- a/fuzz/libtasn1_pkix_der_fuzzer.c
+++ b/fuzz/libtasn1_pkix_der_fuzzer.c
@@ -22,9 +22,9 @@
#include <config.h>
-#include <assert.h> // assert
-#include <stdlib.h> // malloc, free
-#include <string.h> // strcmp, memcpy
+#include <assert.h> // assert
+#include <stdlib.h> // malloc, free
+#include <string.h> // strcmp, memcpy
#include "libtasn1.h"
#include "fuzzer.h"
@@ -34,524 +34,536 @@
* It is created from lib/pkix.asn over at the GnuTLS project.
*/
static const asn1_static_node pkix_asn1_tab[] = {
- { "PKIX1", 536875024, NULL },
- { NULL, 1073741836, NULL },
- { "PrivateKeyUsagePeriod", 1610612741, NULL },
- { "notBefore", 1610637349, NULL },
- { NULL, 4104, "0"},
- { "notAfter", 536895525, NULL },
- { NULL, 4104, "1"},
- { "AuthorityKeyIdentifier", 1610612741, NULL },
- { "keyIdentifier", 1610637319, NULL },
- { NULL, 4104, "0"},
- { "authorityCertIssuer", 1610637314, "GeneralNames"},
- { NULL, 4104, "1"},
- { "authorityCertSerialNumber", 536895490, "CertificateSerialNumber"},
- { NULL, 4104, "2"},
- { "SubjectKeyIdentifier", 1073741831, NULL },
- { "KeyUsage", 1073741830, NULL },
- { "DirectoryString", 1610612754, NULL },
- { "teletexString", 1612709918, NULL },
- { "MAX", 524298, "1"},
- { "printableString", 1612709919, NULL },
- { "MAX", 524298, "1"},
- { "universalString", 1612709920, NULL },
- { "MAX", 524298, "1"},
- { "utf8String", 1612709922, NULL },
- { "MAX", 524298, "1"},
- { "bmpString", 1612709921, NULL },
- { "MAX", 524298, "1"},
- { "ia5String", 538968093, NULL },
- { "MAX", 524298, "1"},
- { "SubjectAltName", 1073741826, "GeneralNames"},
- { "GeneralNames", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "GeneralName"},
- { "GeneralName", 1610612754, NULL },
- { "otherName", 1610620930, "AnotherName"},
- { NULL, 4104, "0"},
- { "rfc822Name", 1610620957, NULL },
- { NULL, 4104, "1"},
- { "dNSName", 1610620957, NULL },
- { NULL, 4104, "2"},
- { "x400Address", 1610620941, NULL },
- { NULL, 4104, "3"},
- { "directoryName", 1610620939, NULL },
- { NULL, 1073743880, "4"},
- { NULL, 2, "RelativeDistinguishedName"},
- { "ediPartyName", 1610620941, NULL },
- { NULL, 4104, "5"},
- { "uniformResourceIdentifier", 1610620957, NULL },
- { NULL, 4104, "6"},
- { "iPAddress", 1610620935, NULL },
- { NULL, 4104, "7"},
- { "registeredID", 536879116, NULL },
- { NULL, 4104, "8"},
- { "AnotherName", 1610612741, NULL },
- { "type-id", 1073741836, NULL },
- { "value", 541073421, NULL },
- { NULL, 1073743880, "0"},
- { "type-id", 1, NULL },
- { "IssuerAltName", 1073741826, "GeneralNames"},
- { "BasicConstraints", 1610612741, NULL },
- { "cA", 1610645508, NULL },
- { NULL, 131081, NULL },
- { "pathLenConstraint", 537411587, NULL },
- { "0", 10, "MAX"},
- { "CRLDistributionPoints", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "DistributionPoint"},
- { "DistributionPoint", 1610612741, NULL },
- { "distributionPoint", 1610637314, "DistributionPointName"},
- { NULL, 2056, "0"},
- { "reasons", 1610637314, "ReasonFlags"},
- { NULL, 4104, "1"},
- { "cRLIssuer", 536895490, "GeneralNames"},
- { NULL, 4104, "2"},
- { "DistributionPointName", 1610612754, NULL },
- { "fullName", 1610620930, "GeneralNames"},
- { NULL, 4104, "0"},
- { "nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"},
- { NULL, 4104, "1"},
- { "ReasonFlags", 1073741830, NULL },
- { "ExtKeyUsageSyntax", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 12, NULL },
- { "AuthorityInfoAccessSyntax", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "AccessDescription"},
- { "AccessDescription", 1610612741, NULL },
- { "accessMethod", 1073741836, NULL },
- { "accessLocation", 2, "GeneralName"},
- { "Attribute", 1610612741, NULL },
- { "type", 1073741836, NULL },
- { "values", 536870927, NULL },
- { NULL, 13, NULL },
- { "AttributeTypeAndValue", 1610612741, NULL },
- { "type", 1073741836, NULL },
- { "value", 13, NULL },
- { "Name", 1610612754, NULL },
- { "rdnSequence", 536870923, NULL },
- { NULL, 2, "RelativeDistinguishedName"},
- { "DistinguishedName", 1610612747, NULL },
- { NULL, 2, "RelativeDistinguishedName"},
- { "RelativeDistinguishedName", 1612709903, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "AttributeTypeAndValue"},
- { "Certificate", 1610612741, NULL },
- { "tbsCertificate", 1073741826, "TBSCertificate"},
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 6, NULL },
- { "TBSCertificate", 1610612741, NULL },
- { "version", 1610653699, NULL },
- { NULL, 1073741833, "0"},
- { NULL, 2056, "0"},
- { "serialNumber", 1073741826, "CertificateSerialNumber"},
- { "signature", 1073741826, "AlgorithmIdentifier"},
- { "issuer", 1073741826, "Name"},
- { "validity", 1073741826, "Validity"},
- { "subject", 1073741826, "Name"},
- { "subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"},
- { "issuerUniqueID", 1610637314, "UniqueIdentifier"},
- { NULL, 4104, "1"},
- { "subjectUniqueID", 1610637314, "UniqueIdentifier"},
- { NULL, 4104, "2"},
- { "extensions", 536895490, "Extensions"},
- { NULL, 2056, "3"},
- { "CertificateSerialNumber", 1073741827, NULL },
- { "Validity", 1610612741, NULL },
- { "notBefore", 1073741826, "Time"},
- { "notAfter", 2, "Time"},
- { "Time", 1610612754, NULL },
- { "utcTime", 1073741860, NULL },
- { "generalTime", 37, NULL },
- { "UniqueIdentifier", 1073741830, NULL },
- { "SubjectPublicKeyInfo", 1610612741, NULL },
- { "algorithm", 1073741826, "AlgorithmIdentifier"},
- { "subjectPublicKey", 6, NULL },
- { "Extensions", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "Extension"},
- { "Extension", 1610612741, NULL },
- { "extnID", 1073741836, NULL },
- { "critical", 1610645508, NULL },
- { NULL, 131081, NULL },
- { "extnValue", 7, NULL },
- { "CertificateList", 1610612741, NULL },
- { "tbsCertList", 1073741826, "TBSCertList"},
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 6, NULL },
- { "TBSCertList", 1610612741, NULL },
- { "version", 1073758211, NULL },
- { "signature", 1073741826, "AlgorithmIdentifier"},
- { "issuer", 1073741826, "Name"},
- { "thisUpdate", 1073741826, "Time"},
- { "nextUpdate", 1073758210, "Time"},
- { "revokedCertificates", 1610629131, NULL },
- { NULL, 536870917, NULL },
- { "userCertificate", 1073741826, "CertificateSerialNumber"},
- { "revocationDate", 1073741826, "Time"},
- { "crlEntryExtensions", 16386, "Extensions"},
- { "crlExtensions", 536895490, "Extensions"},
- { NULL, 2056, "0"},
- { "AlgorithmIdentifier", 1610612741, NULL },
- { "algorithm", 1073741836, NULL },
- { "parameters", 541081613, NULL },
- { "algorithm", 1, NULL },
- { "Dss-Sig-Value", 1610612741, NULL },
- { "r", 1073741827, NULL },
- { "s", 3, NULL },
- { "Dss-Parms", 1610612741, NULL },
- { "p", 1073741827, NULL },
- { "q", 1073741827, NULL },
- { "g", 3, NULL },
- { "pkcs-7-ContentInfo", 1610612741, NULL },
- { "contentType", 1073741836, NULL },
- { "content", 541073421, NULL },
- { NULL, 1073743880, "0"},
- { "contentType", 1, NULL },
- { "pkcs-7-DigestInfo", 1610612741, NULL },
- { "digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "digest", 7, NULL },
- { "pkcs-7-SignedData", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "digestAlgorithms", 1073741826, "pkcs-7-DigestAlgorithmIdentifiers"},
- { "encapContentInfo", 1073741826, "pkcs-7-EncapsulatedContentInfo"},
- { "certificates", 1610637314, "pkcs-7-CertificateSet"},
- { NULL, 4104, "0"},
- { "crls", 1610637314, "pkcs-7-CertificateRevocationLists"},
- { NULL, 4104, "1"},
- { "signerInfos", 2, "pkcs-7-SignerInfos"},
- { "pkcs-7-DigestAlgorithmIdentifiers", 1610612751, NULL },
- { NULL, 2, "AlgorithmIdentifier"},
- { "pkcs-7-EncapsulatedContentInfo", 1610612741, NULL },
- { "eContentType", 1073741836, NULL },
- { "eContent", 536895501, NULL },
- { NULL, 2056, "0"},
- { "pkcs-7-CertificateRevocationLists", 1610612751, NULL },
- { NULL, 13, NULL },
- { "pkcs-7-CertificateChoices", 1610612754, NULL },
- { "certificate", 13, NULL },
- { "pkcs-7-CertificateSet", 1610612751, NULL },
- { NULL, 2, "pkcs-7-CertificateChoices"},
- { "IssuerAndSerialNumber", 1610612741, NULL },
- { "issuer", 1073741826, "Name"},
- { "serialNumber", 2, "CertificateSerialNumber"},
- { "pkcs-7-SignerInfo", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "sid", 1073741826, "SignerIdentifier"},
- { "digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signedAttrs", 1610637314, "SignedAttributes"},
- { NULL, 4104, "0"},
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 1073741831, NULL },
- { "unsignedAttrs", 536895490, "SignedAttributes"},
- { NULL, 4104, "1"},
- { "SignedAttributes", 1612709903, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "Attribute"},
- { "SignerIdentifier", 1610612754, NULL },
- { "issuerAndSerialNumber", 1073741826, "IssuerAndSerialNumber"},
- { "subjectKeyIdentifier", 536879111, NULL },
- { NULL, 4104, "0"},
- { "pkcs-7-SignerInfos", 1610612751, NULL },
- { NULL, 2, "pkcs-7-SignerInfo"},
- { "pkcs-10-CertificationRequestInfo", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "subject", 1073741826, "Name"},
- { "subjectPKInfo", 1073741826, "SubjectPublicKeyInfo"},
- { "attributes", 536879106, "Attributes"},
- { NULL, 4104, "0"},
- { "Attributes", 1610612751, NULL },
- { NULL, 2, "Attribute"},
- { "pkcs-10-CertificationRequest", 1610612741, NULL },
- { "certificationRequestInfo", 1073741826, "pkcs-10-CertificationRequestInfo"},
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 6, NULL },
- { "pkcs-9-at-challengePassword", 1879048204, NULL },
- { "iso", 1073741825, "1"},
- { "member-body", 1073741825, "2"},
- { "us", 1073741825, "840"},
- { "rsadsi", 1073741825, "113549"},
- { "pkcs", 1073741825, "1"},
- { NULL, 1073741825, "9"},
- { NULL, 1, "7"},
- { "pkcs-9-challengePassword", 1610612754, NULL },
- { "printableString", 1073741855, NULL },
- { "utf8String", 34, NULL },
- { "pkcs-9-localKeyId", 1073741831, NULL },
- { "pkcs-8-PrivateKeyInfo", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "privateKeyAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "privateKey", 1073741831, NULL },
- { "attributes", 536895490, "Attributes"},
- { NULL, 4104, "0"},
- { "pkcs-8-EncryptedPrivateKeyInfo", 1610612741, NULL },
- { "encryptionAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "encryptedData", 2, "pkcs-8-EncryptedData"},
- { "pkcs-8-EncryptedData", 1073741831, NULL },
- { "pkcs-5-des-CBC-params", 1612709895, NULL },
- { NULL, 1048586, "8"},
- { "pkcs-5-des-EDE3-CBC-params", 1612709895, NULL },
- { NULL, 1048586, "8"},
- { "pkcs-5-aes128-CBC-params", 1612709895, NULL },
- { NULL, 1048586, "16"},
- { "pkcs-5-aes192-CBC-params", 1612709895, NULL },
- { NULL, 1048586, "16"},
- { "pkcs-5-aes256-CBC-params", 1612709895, NULL },
- { NULL, 1048586, "16"},
- { "Gost28147-89-Parameters", 1610612741, NULL },
- { "iv", 1073741831, NULL },
- { "encryptionParamSet", 12, NULL },
- { "pkcs-5-PBE-params", 1610612741, NULL },
- { "salt", 1073741831, NULL },
- { "iterationCount", 3, NULL },
- { "pkcs-5-PBES2-params", 1610612741, NULL },
- { "keyDerivationFunc", 1073741826, "AlgorithmIdentifier"},
- { "encryptionScheme", 2, "AlgorithmIdentifier"},
- { "pkcs-5-PBKDF2-params", 1610612741, NULL },
- { "salt", 1610612754, NULL },
- { "specified", 1073741831, NULL },
- { "otherSource", 2, "AlgorithmIdentifier"},
- { "iterationCount", 1611137027, NULL },
- { "1", 10, "MAX"},
- { "keyLength", 1611153411, NULL },
- { "1", 10, "MAX"},
- { "prf", 16386, "AlgorithmIdentifier"},
- { "pkcs-12-PFX", 1610612741, NULL },
- { "version", 1610874883, NULL },
- { "v3", 1, "3"},
- { "authSafe", 1073741826, "pkcs-7-ContentInfo"},
- { "macData", 16386, "pkcs-12-MacData"},
- { "pkcs-12-PbeParams", 1610612741, NULL },
- { "salt", 1073741831, NULL },
- { "iterations", 3, NULL },
- { "pkcs-12-MacData", 1610612741, NULL },
- { "mac", 1073741826, "pkcs-7-DigestInfo"},
- { "macSalt", 1073741831, NULL },
- { "iterations", 536903683, NULL },
- { NULL, 9, "1"},
- { "pkcs-12-AuthenticatedSafe", 1610612747, NULL },
- { NULL, 2, "pkcs-7-ContentInfo"},
- { "pkcs-12-SafeContents", 1610612747, NULL },
- { NULL, 2, "pkcs-12-SafeBag"},
- { "pkcs-12-SafeBag", 1610612741, NULL },
- { "bagId", 1073741836, NULL },
- { "bagValue", 1614815245, NULL },
- { NULL, 1073743880, "0"},
- { "badId", 1, NULL },
- { "bagAttributes", 536887311, NULL },
- { NULL, 2, "Attribute"},
- { "pkcs-12-CertBag", 1610612741, NULL },
- { "certId", 1073741836, NULL },
- { "certValue", 541073421, NULL },
- { NULL, 1073743880, "0"},
- { "certId", 1, NULL },
- { "pkcs-12-CRLBag", 1610612741, NULL },
- { "crlId", 1073741836, NULL },
- { "crlValue", 541073421, NULL },
- { NULL, 1073743880, "0"},
- { "crlId", 1, NULL },
- { "pkcs-12-SecretBag", 1610612741, NULL },
- { "secretTypeId", 1073741836, NULL },
- { "secretValue", 541073421, NULL },
- { NULL, 1073743880, "0"},
- { "secretTypeId", 1, NULL },
- { "pkcs-7-Data", 1073741831, NULL },
- { "pkcs-7-EncryptedData", 1610612741, NULL },
- { "version", 1073741827, NULL },
- { "encryptedContentInfo", 1073741826, "pkcs-7-EncryptedContentInfo"},
- { "unprotectedAttrs", 536895490, "pkcs-7-UnprotectedAttributes"},
- { NULL, 4104, "1"},
- { "pkcs-7-EncryptedContentInfo", 1610612741, NULL },
- { "contentType", 1073741836, NULL },
- { "contentEncryptionAlgorithm", 1073741826, "pkcs-7-ContentEncryptionAlgorithmIdentifier"},
- { "encryptedContent", 536895495, NULL },
- { NULL, 4104, "0"},
- { "pkcs-7-ContentEncryptionAlgorithmIdentifier", 1073741826, "AlgorithmIdentifier"},
- { "pkcs-7-UnprotectedAttributes", 1612709903, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "Attribute"},
- { "ProxyCertInfo", 1610612741, NULL },
- { "pCPathLenConstraint", 1611153411, NULL },
- { "0", 10, "MAX"},
- { "proxyPolicy", 2, "ProxyPolicy"},
- { "ProxyPolicy", 1610612741, NULL },
- { "policyLanguage", 1073741836, NULL },
- { "policy", 16391, NULL },
- { "certificatePolicies", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "PolicyInformation"},
- { "PolicyInformation", 1610612741, NULL },
- { "policyIdentifier", 1073741836, NULL },
- { "policyQualifiers", 538984459, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "PolicyQualifierInfo"},
- { "PolicyQualifierInfo", 1610612741, NULL },
- { "policyQualifierId", 1073741836, NULL },
- { "qualifier", 541065229, NULL },
- { "policyQualifierId", 1, NULL },
- { "CPSuri", 1073741853, NULL },
- { "UserNotice", 1610612741, NULL },
- { "noticeRef", 1073758210, "NoticeReference"},
- { "explicitText", 16386, "DisplayText"},
- { "NoticeReference", 1610612741, NULL },
- { "organization", 1073741826, "DisplayText"},
- { "noticeNumbers", 536870923, NULL },
- { NULL, 3, NULL },
- { "DisplayText", 1610612754, NULL },
- { "ia5String", 1612709917, NULL },
- { "200", 524298, "1"},
- { "visibleString", 1612709923, NULL },
- { "200", 524298, "1"},
- { "bmpString", 1612709921, NULL },
- { "200", 524298, "1"},
- { "utf8String", 538968098, NULL },
- { "200", 524298, "1"},
- { "OCSPRequest", 1610612741, NULL },
- { "tbsRequest", 1073741826, "TBSRequest"},
- { "optionalSignature", 536895490, "Signature"},
- { NULL, 2056, "0"},
- { "TBSRequest", 1610612741, NULL },
- { "version", 1610653699, NULL },
- { NULL, 1073741833, "0"},
- { NULL, 2056, "0"},
- { "requestorName", 1610637314, "GeneralName"},
- { NULL, 2056, "1"},
- { "requestList", 1610612747, NULL },
- { NULL, 2, "Request"},
- { "requestExtensions", 536895490, "Extensions"},
- { NULL, 2056, "2"},
- { "Signature", 1610612741, NULL },
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 1073741830, NULL },
- { "certs", 536895499, NULL },
- { NULL, 1073743880, "0"},
- { NULL, 2, "Certificate"},
- { "Request", 1610612741, NULL },
- { "reqCert", 1073741826, "CertID"},
- { "singleRequestExtensions", 536895490, "Extensions"},
- { NULL, 2056, "0"},
- { "CertID", 1610612741, NULL },
- { "hashAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "issuerNameHash", 1073741831, NULL },
- { "issuerKeyHash", 1073741831, NULL },
- { "serialNumber", 2, "CertificateSerialNumber"},
- { "OCSPResponse", 1610612741, NULL },
- { "responseStatus", 1073741826, "OCSPResponseStatus"},
- { "responseBytes", 536895490, "ResponseBytes"},
- { NULL, 2056, "0"},
- { "OCSPResponseStatus", 1610874901, NULL },
- { "successful", 1073741825, "0"},
- { "malformedRequest", 1073741825, "1"},
- { "internalError", 1073741825, "2"},
- { "tryLater", 1073741825, "3"},
- { "sigRequired", 1073741825, "5"},
- { "unauthorized", 1, "6"},
- { "ResponseBytes", 1610612741, NULL },
- { "responseType", 1073741836, NULL },
- { "response", 7, NULL },
- { "BasicOCSPResponse", 1610612741, NULL },
- { "tbsResponseData", 1073741826, "ResponseData"},
- { "signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
- { "signature", 1073741830, NULL },
- { "certs", 536895499, NULL },
- { NULL, 1073743880, "0"},
- { NULL, 2, "Certificate"},
- { "ResponseData", 1610612741, NULL },
- { "version", 1610653699, NULL },
- { NULL, 1073741833, "0"},
- { NULL, 2056, "0"},
- { "responderID", 1073741826, "ResponderID"},
- { "producedAt", 1073741861, NULL },
- { "responses", 1610612747, NULL },
- { NULL, 2, "SingleResponse"},
- { "responseExtensions", 536895490, "Extensions"},
- { NULL, 2056, "1"},
- { "ResponderID", 1610612754, NULL },
- { "byName", 1610620939, NULL },
- { NULL, 1073743880, "1"},
- { NULL, 2, "RelativeDistinguishedName"},
- { "byKey", 536879111, NULL },
- { NULL, 2056, "2"},
- { "SingleResponse", 1610612741, NULL },
- { "certID", 1073741826, "CertID"},
- { "certStatus", 1073741826, "CertStatus"},
- { "thisUpdate", 1073741861, NULL },
- { "nextUpdate", 1610637349, NULL },
- { NULL, 2056, "0"},
- { "singleExtensions", 536895490, "Extensions"},
- { NULL, 2056, "1"},
- { "CertStatus", 1610612754, NULL },
- { "good", 1610620948, NULL },
- { NULL, 4104, "0"},
- { "revoked", 1610620930, "RevokedInfo"},
- { NULL, 4104, "1"},
- { "unknown", 536879106, "UnknownInfo"},
- { NULL, 4104, "2"},
- { "RevokedInfo", 1610612741, NULL },
- { "revocationTime", 1073741861, NULL },
- { "revocationReason", 537157653, NULL },
- { NULL, 1073743880, "0"},
- { "unspecified", 1, "0"},
- { "UnknownInfo", 1073741844, NULL },
- { "NameConstraints", 1610612741, NULL },
- { "permittedSubtrees", 1610637314, "GeneralSubtrees"},
- { NULL, 4104, "0"},
- { "excludedSubtrees", 536895490, "GeneralSubtrees"},
- { NULL, 4104, "1"},
- { "GeneralSubtrees", 1612709899, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "GeneralSubtree"},
- { "GeneralSubtree", 1610612741, NULL },
- { "base", 1073741826, "GeneralName"},
- { "minimum", 1610653699, NULL },
- { NULL, 1073741833, "0"},
- { NULL, 4104, "0"},
- { "maximum", 536895491, NULL },
- { NULL, 4104, "1"},
- { "TlsFeatures", 536870923, NULL },
- { NULL, 3, NULL },
- { NULL, 0, NULL }
+ {"PKIX1", 536875024, NULL},
+ {NULL, 1073741836, NULL},
+ {"PrivateKeyUsagePeriod", 1610612741, NULL},
+ {"notBefore", 1610637349, NULL},
+ {NULL, 4104, "0"},
+ {"notAfter", 536895525, NULL},
+ {NULL, 4104, "1"},
+ {"AuthorityKeyIdentifier", 1610612741, NULL},
+ {"keyIdentifier", 1610637319, NULL},
+ {NULL, 4104, "0"},
+ {"authorityCertIssuer", 1610637314, "GeneralNames"},
+ {NULL, 4104, "1"},
+ {"authorityCertSerialNumber", 536895490, "CertificateSerialNumber"},
+ {NULL, 4104, "2"},
+ {"SubjectKeyIdentifier", 1073741831, NULL},
+ {"KeyUsage", 1073741830, NULL},
+ {"DirectoryString", 1610612754, NULL},
+ {"teletexString", 1612709918, NULL},
+ {"MAX", 524298, "1"},
+ {"printableString", 1612709919, NULL},
+ {"MAX", 524298, "1"},
+ {"universalString", 1612709920, NULL},
+ {"MAX", 524298, "1"},
+ {"utf8String", 1612709922, NULL},
+ {"MAX", 524298, "1"},
+ {"bmpString", 1612709921, NULL},
+ {"MAX", 524298, "1"},
+ {"ia5String", 538968093, NULL},
+ {"MAX", 524298, "1"},
+ {"SubjectAltName", 1073741826, "GeneralNames"},
+ {"GeneralNames", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "GeneralName"},
+ {"GeneralName", 1610612754, NULL},
+ {"otherName", 1610620930, "AnotherName"},
+ {NULL, 4104, "0"},
+ {"rfc822Name", 1610620957, NULL},
+ {NULL, 4104, "1"},
+ {"dNSName", 1610620957, NULL},
+ {NULL, 4104, "2"},
+ {"x400Address", 1610620941, NULL},
+ {NULL, 4104, "3"},
+ {"directoryName", 1610620939, NULL},
+ {NULL, 1073743880, "4"},
+ {NULL, 2, "RelativeDistinguishedName"},
+ {"ediPartyName", 1610620941, NULL},
+ {NULL, 4104, "5"},
+ {"uniformResourceIdentifier", 1610620957, NULL},
+ {NULL, 4104, "6"},
+ {"iPAddress", 1610620935, NULL},
+ {NULL, 4104, "7"},
+ {"registeredID", 536879116, NULL},
+ {NULL, 4104, "8"},
+ {"AnotherName", 1610612741, NULL},
+ {"type-id", 1073741836, NULL},
+ {"value", 541073421, NULL},
+ {NULL, 1073743880, "0"},
+ {"type-id", 1, NULL},
+ {"IssuerAltName", 1073741826, "GeneralNames"},
+ {"BasicConstraints", 1610612741, NULL},
+ {"cA", 1610645508, NULL},
+ {NULL, 131081, NULL},
+ {"pathLenConstraint", 537411587, NULL},
+ {"0", 10, "MAX"},
+ {"CRLDistributionPoints", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "DistributionPoint"},
+ {"DistributionPoint", 1610612741, NULL},
+ {"distributionPoint", 1610637314, "DistributionPointName"},
+ {NULL, 2056, "0"},
+ {"reasons", 1610637314, "ReasonFlags"},
+ {NULL, 4104, "1"},
+ {"cRLIssuer", 536895490, "GeneralNames"},
+ {NULL, 4104, "2"},
+ {"DistributionPointName", 1610612754, NULL},
+ {"fullName", 1610620930, "GeneralNames"},
+ {NULL, 4104, "0"},
+ {"nameRelativeToCRLIssuer", 536879106, "RelativeDistinguishedName"},
+ {NULL, 4104, "1"},
+ {"ReasonFlags", 1073741830, NULL},
+ {"ExtKeyUsageSyntax", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 12, NULL},
+ {"AuthorityInfoAccessSyntax", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "AccessDescription"},
+ {"AccessDescription", 1610612741, NULL},
+ {"accessMethod", 1073741836, NULL},
+ {"accessLocation", 2, "GeneralName"},
+ {"Attribute", 1610612741, NULL},
+ {"type", 1073741836, NULL},
+ {"values", 536870927, NULL},
+ {NULL, 13, NULL},
+ {"AttributeTypeAndValue", 1610612741, NULL},
+ {"type", 1073741836, NULL},
+ {"value", 13, NULL},
+ {"Name", 1610612754, NULL},
+ {"rdnSequence", 536870923, NULL},
+ {NULL, 2, "RelativeDistinguishedName"},
+ {"DistinguishedName", 1610612747, NULL},
+ {NULL, 2, "RelativeDistinguishedName"},
+ {"RelativeDistinguishedName", 1612709903, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "AttributeTypeAndValue"},
+ {"Certificate", 1610612741, NULL},
+ {"tbsCertificate", 1073741826, "TBSCertificate"},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 6, NULL},
+ {"TBSCertificate", 1610612741, NULL},
+ {"version", 1610653699, NULL},
+ {NULL, 1073741833, "0"},
+ {NULL, 2056, "0"},
+ {"serialNumber", 1073741826, "CertificateSerialNumber"},
+ {"signature", 1073741826, "AlgorithmIdentifier"},
+ {"issuer", 1073741826, "Name"},
+ {"validity", 1073741826, "Validity"},
+ {"subject", 1073741826, "Name"},
+ {"subjectPublicKeyInfo", 1073741826, "SubjectPublicKeyInfo"},
+ {"issuerUniqueID", 1610637314, "UniqueIdentifier"},
+ {NULL, 4104, "1"},
+ {"subjectUniqueID", 1610637314, "UniqueIdentifier"},
+ {NULL, 4104, "2"},
+ {"extensions", 536895490, "Extensions"},
+ {NULL, 2056, "3"},
+ {"CertificateSerialNumber", 1073741827, NULL},
+ {"Validity", 1610612741, NULL},
+ {"notBefore", 1073741826, "Time"},
+ {"notAfter", 2, "Time"},
+ {"Time", 1610612754, NULL},
+ {"utcTime", 1073741860, NULL},
+ {"generalTime", 37, NULL},
+ {"UniqueIdentifier", 1073741830, NULL},
+ {"SubjectPublicKeyInfo", 1610612741, NULL},
+ {"algorithm", 1073741826, "AlgorithmIdentifier"},
+ {"subjectPublicKey", 6, NULL},
+ {"Extensions", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "Extension"},
+ {"Extension", 1610612741, NULL},
+ {"extnID", 1073741836, NULL},
+ {"critical", 1610645508, NULL},
+ {NULL, 131081, NULL},
+ {"extnValue", 7, NULL},
+ {"CertificateList", 1610612741, NULL},
+ {"tbsCertList", 1073741826, "TBSCertList"},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 6, NULL},
+ {"TBSCertList", 1610612741, NULL},
+ {"version", 1073758211, NULL},
+ {"signature", 1073741826, "AlgorithmIdentifier"},
+ {"issuer", 1073741826, "Name"},
+ {"thisUpdate", 1073741826, "Time"},
+ {"nextUpdate", 1073758210, "Time"},
+ {"revokedCertificates", 1610629131, NULL},
+ {NULL, 536870917, NULL},
+ {"userCertificate", 1073741826, "CertificateSerialNumber"},
+ {"revocationDate", 1073741826, "Time"},
+ {"crlEntryExtensions", 16386, "Extensions"},
+ {"crlExtensions", 536895490, "Extensions"},
+ {NULL, 2056, "0"},
+ {"AlgorithmIdentifier", 1610612741, NULL},
+ {"algorithm", 1073741836, NULL},
+ {"parameters", 541081613, NULL},
+ {"algorithm", 1, NULL},
+ {"Dss-Sig-Value", 1610612741, NULL},
+ {"r", 1073741827, NULL},
+ {"s", 3, NULL},
+ {"Dss-Parms", 1610612741, NULL},
+ {"p", 1073741827, NULL},
+ {"q", 1073741827, NULL},
+ {"g", 3, NULL},
+ {"pkcs-7-ContentInfo", 1610612741, NULL},
+ {"contentType", 1073741836, NULL},
+ {"content", 541073421, NULL},
+ {NULL, 1073743880, "0"},
+ {"contentType", 1, NULL},
+ {"pkcs-7-DigestInfo", 1610612741, NULL},
+ {"digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"digest", 7, NULL},
+ {"pkcs-7-SignedData", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"digestAlgorithms", 1073741826, "pkcs-7-DigestAlgorithmIdentifiers"},
+ {"encapContentInfo", 1073741826, "pkcs-7-EncapsulatedContentInfo"},
+ {"certificates", 1610637314, "pkcs-7-CertificateSet"},
+ {NULL, 4104, "0"},
+ {"crls", 1610637314, "pkcs-7-CertificateRevocationLists"},
+ {NULL, 4104, "1"},
+ {"signerInfos", 2, "pkcs-7-SignerInfos"},
+ {"pkcs-7-DigestAlgorithmIdentifiers", 1610612751, NULL},
+ {NULL, 2, "AlgorithmIdentifier"},
+ {"pkcs-7-EncapsulatedContentInfo", 1610612741, NULL},
+ {"eContentType", 1073741836, NULL},
+ {"eContent", 536895501, NULL},
+ {NULL, 2056, "0"},
+ {"pkcs-7-CertificateRevocationLists", 1610612751, NULL},
+ {NULL, 13, NULL},
+ {"pkcs-7-CertificateChoices", 1610612754, NULL},
+ {"certificate", 13, NULL},
+ {"pkcs-7-CertificateSet", 1610612751, NULL},
+ {NULL, 2, "pkcs-7-CertificateChoices"},
+ {"IssuerAndSerialNumber", 1610612741, NULL},
+ {"issuer", 1073741826, "Name"},
+ {"serialNumber", 2, "CertificateSerialNumber"},
+ {"pkcs-7-SignerInfo", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"sid", 1073741826, "SignerIdentifier"},
+ {"digestAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signedAttrs", 1610637314, "SignedAttributes"},
+ {NULL, 4104, "0"},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 1073741831, NULL},
+ {"unsignedAttrs", 536895490, "SignedAttributes"},
+ {NULL, 4104, "1"},
+ {"SignedAttributes", 1612709903, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "Attribute"},
+ {"SignerIdentifier", 1610612754, NULL},
+ {"issuerAndSerialNumber", 1073741826, "IssuerAndSerialNumber"},
+ {"subjectKeyIdentifier", 536879111, NULL},
+ {NULL, 4104, "0"},
+ {"pkcs-7-SignerInfos", 1610612751, NULL},
+ {NULL, 2, "pkcs-7-SignerInfo"},
+ {"pkcs-10-CertificationRequestInfo", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"subject", 1073741826, "Name"},
+ {"subjectPKInfo", 1073741826, "SubjectPublicKeyInfo"},
+ {"attributes", 536879106, "Attributes"},
+ {NULL, 4104, "0"},
+ {"Attributes", 1610612751, NULL},
+ {NULL, 2, "Attribute"},
+ {"pkcs-10-CertificationRequest", 1610612741, NULL},
+ {"certificationRequestInfo", 1073741826,
+ "pkcs-10-CertificationRequestInfo"},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 6, NULL},
+ {"pkcs-9-at-challengePassword", 1879048204, NULL},
+ {"iso", 1073741825, "1"},
+ {"member-body", 1073741825, "2"},
+ {"us", 1073741825, "840"},
+ {"rsadsi", 1073741825, "113549"},
+ {"pkcs", 1073741825, "1"},
+ {NULL, 1073741825, "9"},
+ {NULL, 1, "7"},
+ {"pkcs-9-challengePassword", 1610612754, NULL},
+ {"printableString", 1073741855, NULL},
+ {"utf8String", 34, NULL},
+ {"pkcs-9-localKeyId", 1073741831, NULL},
+ {"pkcs-8-PrivateKeyInfo", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"privateKeyAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"privateKey", 1073741831, NULL},
+ {"attributes", 536895490, "Attributes"},
+ {NULL, 4104, "0"},
+ {"pkcs-8-EncryptedPrivateKeyInfo", 1610612741, NULL},
+ {"encryptionAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"encryptedData", 2, "pkcs-8-EncryptedData"},
+ {"pkcs-8-EncryptedData", 1073741831, NULL},
+ {"pkcs-5-des-CBC-params", 1612709895, NULL},
+ {NULL, 1048586, "8"},
+ {"pkcs-5-des-EDE3-CBC-params", 1612709895, NULL},
+ {NULL, 1048586, "8"},
+ {"pkcs-5-aes128-CBC-params", 1612709895, NULL},
+ {NULL, 1048586, "16"},
+ {"pkcs-5-aes192-CBC-params", 1612709895, NULL},
+ {NULL, 1048586, "16"},
+ {"pkcs-5-aes256-CBC-params", 1612709895, NULL},
+ {NULL, 1048586, "16"},
+ {"Gost28147-89-Parameters", 1610612741, NULL},
+ {"iv", 1073741831, NULL},
+ {"encryptionParamSet", 12, NULL},
+ {"pkcs-5-PBE-params", 1610612741, NULL},
+ {"salt", 1073741831, NULL},
+ {"iterationCount", 3, NULL},
+ {"pkcs-5-PBES2-params", 1610612741, NULL},
+ {"keyDerivationFunc", 1073741826, "AlgorithmIdentifier"},
+ {"encryptionScheme", 2, "AlgorithmIdentifier"},
+ {"pkcs-5-PBKDF2-params", 1610612741, NULL},
+ {"salt", 1610612754, NULL},
+ {"specified", 1073741831, NULL},
+ {"otherSource", 2, "AlgorithmIdentifier"},
+ {"iterationCount", 1611137027, NULL},
+ {"1", 10, "MAX"},
+ {"keyLength", 1611153411, NULL},
+ {"1", 10, "MAX"},
+ {"prf", 16386, "AlgorithmIdentifier"},
+ {"pkcs-12-PFX", 1610612741, NULL},
+ {"version", 1610874883, NULL},
+ {"v3", 1, "3"},
+ {"authSafe", 1073741826, "pkcs-7-ContentInfo"},
+ {"macData", 16386, "pkcs-12-MacData"},
+ {"pkcs-12-PbeParams", 1610612741, NULL},
+ {"salt", 1073741831, NULL},
+ {"iterations", 3, NULL},
+ {"pkcs-12-MacData", 1610612741, NULL},
+ {"mac", 1073741826, "pkcs-7-DigestInfo"},
+ {"macSalt", 1073741831, NULL},
+ {"iterations", 536903683, NULL},
+ {NULL, 9, "1"},
+ {"pkcs-12-AuthenticatedSafe", 1610612747, NULL},
+ {NULL, 2, "pkcs-7-ContentInfo"},
+ {"pkcs-12-SafeContents", 1610612747, NULL},
+ {NULL, 2, "pkcs-12-SafeBag"},
+ {"pkcs-12-SafeBag", 1610612741, NULL},
+ {"bagId", 1073741836, NULL},
+ {"bagValue", 1614815245, NULL},
+ {NULL, 1073743880, "0"},
+ {"badId", 1, NULL},
+ {"bagAttributes", 536887311, NULL},
+ {NULL, 2, "Attribute"},
+ {"pkcs-12-CertBag", 1610612741, NULL},
+ {"certId", 1073741836, NULL},
+ {"certValue", 541073421, NULL},
+ {NULL, 1073743880, "0"},
+ {"certId", 1, NULL},
+ {"pkcs-12-CRLBag", 1610612741, NULL},
+ {"crlId", 1073741836, NULL},
+ {"crlValue", 541073421, NULL},
+ {NULL, 1073743880, "0"},
+ {"crlId", 1, NULL},
+ {"pkcs-12-SecretBag", 1610612741, NULL},
+ {"secretTypeId", 1073741836, NULL},
+ {"secretValue", 541073421, NULL},
+ {NULL, 1073743880, "0"},
+ {"secretTypeId", 1, NULL},
+ {"pkcs-7-Data", 1073741831, NULL},
+ {"pkcs-7-EncryptedData", 1610612741, NULL},
+ {"version", 1073741827, NULL},
+ {"encryptedContentInfo", 1073741826, "pkcs-7-EncryptedContentInfo"},
+ {"unprotectedAttrs", 536895490, "pkcs-7-UnprotectedAttributes"},
+ {NULL, 4104, "1"},
+ {"pkcs-7-EncryptedContentInfo", 1610612741, NULL},
+ {"contentType", 1073741836, NULL},
+ {"contentEncryptionAlgorithm", 1073741826,
+ "pkcs-7-ContentEncryptionAlgorithmIdentifier"},
+ {"encryptedContent", 536895495, NULL},
+ {NULL, 4104, "0"},
+ {"pkcs-7-ContentEncryptionAlgorithmIdentifier", 1073741826,
+ "AlgorithmIdentifier"},
+ {"pkcs-7-UnprotectedAttributes", 1612709903, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "Attribute"},
+ {"ProxyCertInfo", 1610612741, NULL},
+ {"pCPathLenConstraint", 1611153411, NULL},
+ {"0", 10, "MAX"},
+ {"proxyPolicy", 2, "ProxyPolicy"},
+ {"ProxyPolicy", 1610612741, NULL},
+ {"policyLanguage", 1073741836, NULL},
+ {"policy", 16391, NULL},
+ {"certificatePolicies", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "PolicyInformation"},
+ {"PolicyInformation", 1610612741, NULL},
+ {"policyIdentifier", 1073741836, NULL},
+ {"policyQualifiers", 538984459, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "PolicyQualifierInfo"},
+ {"PolicyQualifierInfo", 1610612741, NULL},
+ {"policyQualifierId", 1073741836, NULL},
+ {"qualifier", 541065229, NULL},
+ {"policyQualifierId", 1, NULL},
+ {"CPSuri", 1073741853, NULL},
+ {"UserNotice", 1610612741, NULL},
+ {"noticeRef", 1073758210, "NoticeReference"},
+ {"explicitText", 16386, "DisplayText"},
+ {"NoticeReference", 1610612741, NULL},
+ {"organization", 1073741826, "DisplayText"},
+ {"noticeNumbers", 536870923, NULL},
+ {NULL, 3, NULL},
+ {"DisplayText", 1610612754, NULL},
+ {"ia5String", 1612709917, NULL},
+ {"200", 524298, "1"},
+ {"visibleString", 1612709923, NULL},
+ {"200", 524298, "1"},
+ {"bmpString", 1612709921, NULL},
+ {"200", 524298, "1"},
+ {"utf8String", 538968098, NULL},
+ {"200", 524298, "1"},
+ {"OCSPRequest", 1610612741, NULL},
+ {"tbsRequest", 1073741826, "TBSRequest"},
+ {"optionalSignature", 536895490, "Signature"},
+ {NULL, 2056, "0"},
+ {"TBSRequest", 1610612741, NULL},
+ {"version", 1610653699, NULL},
+ {NULL, 1073741833, "0"},
+ {NULL, 2056, "0"},
+ {"requestorName", 1610637314, "GeneralName"},
+ {NULL, 2056, "1"},
+ {"requestList", 1610612747, NULL},
+ {NULL, 2, "Request"},
+ {"requestExtensions", 536895490, "Extensions"},
+ {NULL, 2056, "2"},
+ {"Signature", 1610612741, NULL},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 1073741830, NULL},
+ {"certs", 536895499, NULL},
+ {NULL, 1073743880, "0"},
+ {NULL, 2, "Certificate"},
+ {"Request", 1610612741, NULL},
+ {"reqCert", 1073741826, "CertID"},
+ {"singleRequestExtensions", 536895490, "Extensions"},
+ {NULL, 2056, "0"},
+ {"CertID", 1610612741, NULL},
+ {"hashAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"issuerNameHash", 1073741831, NULL},
+ {"issuerKeyHash", 1073741831, NULL},
+ {"serialNumber", 2, "CertificateSerialNumber"},
+ {"OCSPResponse", 1610612741, NULL},
+ {"responseStatus", 1073741826, "OCSPResponseStatus"},
+ {"responseBytes", 536895490, "ResponseBytes"},
+ {NULL, 2056, "0"},
+ {"OCSPResponseStatus", 1610874901, NULL},
+ {"successful", 1073741825, "0"},
+ {"malformedRequest", 1073741825, "1"},
+ {"internalError", 1073741825, "2"},
+ {"tryLater", 1073741825, "3"},
+ {"sigRequired", 1073741825, "5"},
+ {"unauthorized", 1, "6"},
+ {"ResponseBytes", 1610612741, NULL},
+ {"responseType", 1073741836, NULL},
+ {"response", 7, NULL},
+ {"BasicOCSPResponse", 1610612741, NULL},
+ {"tbsResponseData", 1073741826, "ResponseData"},
+ {"signatureAlgorithm", 1073741826, "AlgorithmIdentifier"},
+ {"signature", 1073741830, NULL},
+ {"certs", 536895499, NULL},
+ {NULL, 1073743880, "0"},
+ {NULL, 2, "Certificate"},
+ {"ResponseData", 1610612741, NULL},
+ {"version", 1610653699, NULL},
+ {NULL, 1073741833, "0"},
+ {NULL, 2056, "0"},
+ {"responderID", 1073741826, "ResponderID"},
+ {"producedAt", 1073741861, NULL},
+ {"responses", 1610612747, NULL},
+ {NULL, 2, "SingleResponse"},
+ {"responseExtensions", 536895490, "Extensions"},
+ {NULL, 2056, "1"},
+ {"ResponderID", 1610612754, NULL},
+ {"byName", 1610620939, NULL},
+ {NULL, 1073743880, "1"},
+ {NULL, 2, "RelativeDistinguishedName"},
+ {"byKey", 536879111, NULL},
+ {NULL, 2056, "2"},
+ {"SingleResponse", 1610612741, NULL},
+ {"certID", 1073741826, "CertID"},
+ {"certStatus", 1073741826, "CertStatus"},
+ {"thisUpdate", 1073741861, NULL},
+ {"nextUpdate", 1610637349, NULL},
+ {NULL, 2056, "0"},
+ {"singleExtensions", 536895490, "Extensions"},
+ {NULL, 2056, "1"},
+ {"CertStatus", 1610612754, NULL},
+ {"good", 1610620948, NULL},
+ {NULL, 4104, "0"},
+ {"revoked", 1610620930, "RevokedInfo"},
+ {NULL, 4104, "1"},
+ {"unknown", 536879106, "UnknownInfo"},
+ {NULL, 4104, "2"},
+ {"RevokedInfo", 1610612741, NULL},
+ {"revocationTime", 1073741861, NULL},
+ {"revocationReason", 537157653, NULL},
+ {NULL, 1073743880, "0"},
+ {"unspecified", 1, "0"},
+ {"UnknownInfo", 1073741844, NULL},
+ {"NameConstraints", 1610612741, NULL},
+ {"permittedSubtrees", 1610637314, "GeneralSubtrees"},
+ {NULL, 4104, "0"},
+ {"excludedSubtrees", 536895490, "GeneralSubtrees"},
+ {NULL, 4104, "1"},
+ {"GeneralSubtrees", 1612709899, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "GeneralSubtree"},
+ {"GeneralSubtree", 1610612741, NULL},
+ {"base", 1073741826, "GeneralName"},
+ {"minimum", 1610653699, NULL},
+ {NULL, 1073741833, "0"},
+ {NULL, 4104, "0"},
+ {"maximum", 536895491, NULL},
+ {NULL, 4104, "1"},
+ {"TlsFeatures", 536870923, NULL},
+ {NULL, 3, NULL},
+ {NULL, 0, NULL}
};
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+int
+LLVMFuzzerTestOneInput (const uint8_t * data, size_t size)
{
- static asn1_node _gnutls_pkix1_asn = NULL;
- static int first = 1;
- asn1_node dn;
- int res, start, end;
+ static asn1_node _gnutls_pkix1_asn = NULL;
+ static int first = 1;
+ asn1_node dn;
+ int res, start, end;
- if (size > 10000) // same as max_len = 10000 in .options file
- return 0;
+ if (size > 10000) // same as max_len = 10000 in .options file
+ return 0;
- if (first) {
- first = 0;
+ if (first)
+ {
+ first = 0;
- // from _gnutls_global_init()
- res = asn1_array2tree(pkix_asn1_tab, &_gnutls_pkix1_asn, NULL);
- assert(res == ASN1_SUCCESS);
- }
+ // from _gnutls_global_init()
+ res = asn1_array2tree (pkix_asn1_tab, &_gnutls_pkix1_asn, NULL);
+ assert (res == ASN1_SUCCESS);
+ }
- // from cert_get_issuer_dn()
- if ((res = asn1_create_element(_gnutls_pkix1_asn, "PKIX1.Certificate", &dn)) != ASN1_SUCCESS) {
- goto out;
- }
+ // from cert_get_issuer_dn()
+ if ((res =
+ asn1_create_element (_gnutls_pkix1_asn, "PKIX1.Certificate",
+ &dn)) != ASN1_SUCCESS)
+ {
+ goto out;
+ }
- // from cert_get_issuer_dn()
- res = asn1_der_decoding(&dn, data, size, NULL);
- if (res != ASN1_SUCCESS) {
- goto out;
- }
+ // from cert_get_issuer_dn()
+ res = asn1_der_decoding (&dn, data, size, NULL);
+ if (res != ASN1_SUCCESS)
+ {
+ goto out;
+ }
- // from cert_get_issuer_dn()
- res = asn1_der_decoding_startEnd(dn, data, size, "tbsCertificate.issuer", &start, &end);
- if (res != ASN1_SUCCESS) {
- goto out;
- }
+ // from cert_get_issuer_dn()
+ res =
+ asn1_der_decoding_startEnd (dn, data, size, "tbsCertificate.issuer",
+ &start, &end);
+ if (res != ASN1_SUCCESS)
+ {
+ goto out;
+ }
out:
- asn1_delete_structure(&dn);
+ asn1_delete_structure (&dn);
- return 0;
+ return 0;
}
diff --git a/fuzz/main.c b/fuzz/main.c
index 96a38cf..c0a593c 100644
--- a/fuzz/main.c
+++ b/fuzz/main.c
@@ -37,158 +37,189 @@
#ifdef TEST_RUN
-#include <dirent.h>
+# include <dirent.h>
-static int test_single_file(const char *fname)
+static int
+test_single_file (const char *fname)
{
- int fd, ret;
- struct stat st;
- uint8_t *data;
- ssize_t n;
+ int fd, ret;
+ struct stat st;
+ uint8_t *data;
+ ssize_t n;
- if ((fd = open(fname, O_RDONLY)) == -1) {
- fprintf(stderr, "Failed to open %s (%d)\n", fname, errno);
- return -1;
- }
+ if ((fd = open (fname, O_RDONLY)) == -1)
+ {
+ fprintf (stderr, "Failed to open %s (%d)\n", fname, errno);
+ return -1;
+ }
- if (fstat(fd, &st) != 0) {
- fprintf(stderr, "Failed to stat %d (%d)\n", fd, errno);
- close(fd);
- return -1;
- }
+ if (fstat (fd, &st) != 0)
+ {
+ fprintf (stderr, "Failed to stat %d (%d)\n", fd, errno);
+ close (fd);
+ return -1;
+ }
- data = malloc(st.st_size);
- if ((n = read(fd, data, st.st_size)) == st.st_size) {
- printf("testing %llu bytes from '%s'\n", (unsigned long long) st.st_size, fname);
- fflush(stdout);
- LLVMFuzzerTestOneInput(data, st.st_size);
- fflush(stderr);
- ret = 0;
- } else {
- fprintf(stderr, "Failed to read %llu bytes from %s (%d), got %zd\n", (unsigned long long) st.st_size, fname, errno, n);
- ret = -1;
- }
+ data = malloc (st.st_size);
+ if ((n = read (fd, data, st.st_size)) == st.st_size)
+ {
+ printf ("testing %llu bytes from '%s'\n",
+ (unsigned long long) st.st_size, fname);
+ fflush (stdout);
+ LLVMFuzzerTestOneInput (data, st.st_size);
+ fflush (stderr);
+ ret = 0;
+ }
+ else
+ {
+ fprintf (stderr, "Failed to read %llu bytes from %s (%d), got %zd\n",
+ (unsigned long long) st.st_size, fname, errno, n);
+ ret = -1;
+ }
- free(data);
- close(fd);
- return ret;
+ free (data);
+ close (fd);
+ return ret;
}
-static void test_all_from(const char *dirname)
+static void
+test_all_from (const char *dirname)
{
- DIR *dirp;
- struct dirent *dp;
- char fname[1024];
- int len;
+ DIR *dirp;
+ struct dirent *dp;
+ char fname[1024];
+ int len;
- if ((dirp = opendir(dirname))) {
- while ((dp = readdir(dirp))) {
- if (*dp->d_name == '.') continue;
+ if ((dirp = opendir (dirname)))
+ {
+ while ((dp = readdir (dirp)))
+ {
+ if (*dp->d_name == '.')
+ continue;
- len = snprintf(fname, sizeof(fname), "%s/%s", dirname, dp->d_name);
- if (len < 0 || len >= (int) sizeof(fname)) {
- fprintf(stderr, "File name truncation: %s/%s\n", dirname, dp->d_name);
- continue;
- }
+ len =
+ snprintf (fname, sizeof (fname), "%s/%s", dirname, dp->d_name);
+ if (len < 0 || len >= (int) sizeof (fname))
+ {
+ fprintf (stderr, "File name truncation: %s/%s\n", dirname,
+ dp->d_name);
+ continue;
+ }
- int fd;
- if ((fd = open(fname, O_RDONLY)) == -1) {
- fprintf(stderr, "Failed to open %s (%d)\n", fname, errno);
- continue;
- }
+ int fd;
+ if ((fd = open (fname, O_RDONLY)) == -1)
+ {
+ fprintf (stderr, "Failed to open %s (%d)\n", fname, errno);
+ continue;
+ }
- struct stat st;
- if (fstat(fd, &st) != 0) {
- fprintf(stderr, "Failed to stat %d (%d)\n", fd, errno);
- close(fd);
- continue;
- }
+ struct stat st;
+ if (fstat (fd, &st) != 0)
+ {
+ fprintf (stderr, "Failed to stat %d (%d)\n", fd, errno);
+ close (fd);
+ continue;
+ }
- uint8_t *data = malloc(st.st_size);
- ssize_t n;
- if ((n = read(fd, data, st.st_size)) == st.st_size) {
- printf("testing %llu bytes from '%s'\n", (unsigned long long) st.st_size, fname);
- LLVMFuzzerTestOneInput(data, st.st_size);
- } else
- fprintf(stderr, "Failed to read %llu bytes from %s (%d), got %d\n", (unsigned long long) st.st_size, fname, errno, (int) n);
+ uint8_t *data = malloc (st.st_size);
+ ssize_t n;
+ if ((n = read (fd, data, st.st_size)) == st.st_size)
+ {
+ printf ("testing %llu bytes from '%s'\n",
+ (unsigned long long) st.st_size, fname);
+ LLVMFuzzerTestOneInput (data, st.st_size);
+ }
+ else
+ fprintf (stderr,
+ "Failed to read %llu bytes from %s (%d), got %d\n",
+ (unsigned long long) st.st_size, fname, errno, (int) n);
- free(data);
- close(fd);
- }
- closedir(dirp);
+ free (data);
+ close (fd);
}
+ closedir (dirp);
+ }
}
-int main(int argc, char **argv)
+int
+main (int argc, char **argv)
{
- int len;
+ int len;
- /* if VALGRIND testing is enabled, we have to call ourselves with valgrind checking */
- if (argc == 1) {
- const char *valgrind = getenv("TESTS_VALGRIND");
+ /* if VALGRIND testing is enabled, we have to call ourselves with valgrind checking */
+ if (argc == 1)
+ {
+ const char *valgrind = getenv ("TESTS_VALGRIND");
- if (valgrind && *valgrind) {
- char cmd[1024]; /* avoid alloca / VLA / heap allocation */
+ if (valgrind && *valgrind)
+ {
+ char cmd[1024]; /* avoid alloca / VLA / heap allocation */
- len = snprintf(cmd, sizeof(cmd), "TESTS_VALGRIND="" %s %s", valgrind, argv[0]);
- if (len < 0 || len >= (int) sizeof(cmd))
- return 1; /* failure on command truncation */
+ len =
+ snprintf (cmd, sizeof (cmd), "TESTS_VALGRIND=" " %s %s", valgrind,
+ argv[0]);
+ if (len < 0 || len >= (int) sizeof (cmd))
+ return 1; /* failure on command truncation */
- return system(cmd) != 0;
- }
+ return system (cmd) != 0;
}
+ }
- if (argc > 1)
- return test_single_file(argv[1]);
+ if (argc > 1)
+ return test_single_file (argv[1]);
- const char *target = strrchr(argv[0], '/');
- target = target ? target + 1 : argv[0];
+ const char *target = strrchr (argv[0], '/');
+ target = target ? target + 1 : argv[0];
- char corporadir[1024]; /* avoid alloca / VLA / heap allocation */
+ char corporadir[1024]; /* avoid alloca / VLA / heap allocation */
- len = snprintf(corporadir, sizeof(corporadir), SRCDIR "/%s.in", target);
- if (len < 0 || len >= (int) sizeof(corporadir))
- return 1; /* failure on file name truncation */
+ len = snprintf (corporadir, sizeof (corporadir), SRCDIR "/%s.in", target);
+ if (len < 0 || len >= (int) sizeof (corporadir))
+ return 1; /* failure on file name truncation */
- test_all_from(corporadir);
+ test_all_from (corporadir);
- snprintf(corporadir, sizeof(corporadir), SRCDIR "/%s.repro", target);
+ snprintf (corporadir, sizeof (corporadir), SRCDIR "/%s.repro", target);
- test_all_from(corporadir);
+ test_all_from (corporadir);
- return 0;
+ return 0;
}
#else
-#ifndef __AFL_LOOP
-static int __AFL_LOOP(int n)
+# ifndef __AFL_LOOP
+static int
+__AFL_LOOP (int n)
{
- static int first = 1;
+ static int first = 1;
- if (first) {
- first = 0;
- return 1;
- }
+ if (first)
+ {
+ first = 0;
+ return 1;
+ }
- return 0;
+ return 0;
}
-#endif
+# endif
-int main(int argc, char **argv)
+int
+main (int argc, char **argv)
{
- int ret;
- unsigned char buf[64 * 1024];
+ int ret;
+ unsigned char buf[64 * 1024];
- while (__AFL_LOOP(10000)) { // only works with afl-clang-fast
- ret = fread(buf, 1, sizeof(buf), stdin);
- if (ret < 0)
- return 0;
-
- LLVMFuzzerTestOneInput(buf, ret);
- }
-
+ while (__AFL_LOOP (10000))
+ { // only works with afl-clang-fast
+ ret = fread (buf, 1, sizeof (buf), stdin);
+ if (ret < 0)
return 0;
+
+ LLVMFuzzerTestOneInput (buf, ret);
+ }
+
+ return 0;
}
#endif /* TEST_RUN */
diff --git a/lib/coding.c b/lib/coding.c
index 5a947a7..671104f 100644
--- a/lib/coding.c
+++ b/lib/coding.c
@@ -317,14 +317,14 @@
}
*/
-static
-void encode_val(uint64_t val, unsigned char *der, int max_len, int *der_len)
+static void
+encode_val (uint64_t val, unsigned char *der, int max_len, int *der_len)
{
int first, k;
unsigned char bit7;
first = 0;
- for (k = sizeof(val); k >= 0; k--)
+ for (k = sizeof (val); k >= 0; k--)
{
bit7 = (val >> (k * 7)) & 0x7F;
if (bit7 || first || !k)
@@ -385,30 +385,30 @@
counter++;
if (counter == 1)
- {
+ {
val1 = val;
}
else if (counter == 2)
{
uint64_t val0;
- if (val1 > 2)
- {
- free(temp);
- return ASN1_VALUE_NOT_VALID;
- }
- else if ((val1 == 0 || val1 == 1) && val > 39)
- {
- free(temp);
- return ASN1_VALUE_NOT_VALID;
- }
+ if (val1 > 2)
+ {
+ free (temp);
+ return ASN1_VALUE_NOT_VALID;
+ }
+ else if ((val1 == 0 || val1 == 1) && val > 39)
+ {
+ free (temp);
+ return ASN1_VALUE_NOT_VALID;
+ }
val0 = 40 * val1 + val;
- encode_val(val0, der, max_len, der_len);
+ encode_val (val0, der, max_len, der_len);
}
else
{
- encode_val(val, der, max_len, der_len);
+ encode_val (val, der, max_len, der_len);
}
n_start = n_end + 1;
}
@@ -443,7 +443,9 @@
* vector isn't big enough and in this case @der_len will contain the
* length needed.
**/
-int asn1_object_id_der(const char *str, unsigned char *der, int *der_len, unsigned flags)
+int
+asn1_object_id_der (const char *str, unsigned char *der, int *der_len,
+ unsigned flags)
{
unsigned char tag_der[MAX_TAG_LEN];
int tag_len = 0, r;
@@ -451,12 +453,12 @@
*der_len = 0;
- _asn1_tag_der (ETYPE_CLASS (ASN1_ETYPE_OBJECT_ID), ETYPE_TAG (ASN1_ETYPE_OBJECT_ID),
- tag_der, &tag_len);
+ _asn1_tag_der (ETYPE_CLASS (ASN1_ETYPE_OBJECT_ID),
+ ETYPE_TAG (ASN1_ETYPE_OBJECT_ID), tag_der, &tag_len);
if (max_len > tag_len)
{
- memcpy(der, tag_der, tag_len);
+ memcpy (der, tag_der, tag_len);
}
max_len -= tag_len;
der += tag_len;
@@ -548,7 +550,7 @@
{
p = node->down;
if (p == NULL)
- return ASN1_DER_ERROR;
+ return ASN1_DER_ERROR;
/* When there are nested tags we must complete them reverse to
the order they were created. This is because completing a tag
modifies all data within it, including the incomplete tags
@@ -666,7 +668,8 @@
{
asn1_node p;
int tag_len, is_tag_implicit;
- unsigned char class, class_implicit = 0, temp[MAX(SIZEOF_UNSIGNED_INT * 3 + 1, LTOSTR_MAX_SIZE)];
+ unsigned char class, class_implicit =
+ 0, temp[MAX (SIZEOF_UNSIGNED_INT * 3 + 1, LTOSTR_MAX_SIZE)];
unsigned long tag_implicit = 0;
unsigned char tag_der[MAX_TAG_LEN];
@@ -796,7 +799,7 @@
p = node->down;
while (p && ((type_field (p->type) == ASN1_ETYPE_TAG) ||
- (type_field (p->type) == ASN1_ETYPE_SIZE)))
+ (type_field (p->type) == ASN1_ETYPE_SIZE)))
p = p->right;
if ((p == NULL) || (p->right == NULL))
@@ -807,7 +810,7 @@
{
p_vet = malloc (sizeof (struct vet));
if (p_vet == NULL)
- {
+ {
err = ASN1_MEM_ALLOC_ERROR;
goto error;
}
@@ -826,7 +829,7 @@
if (err != ASN1_SUCCESS)
goto error;
- t = ((unsigned int)class) << 24;
+ t = ((unsigned int) class) << 24;
p_vet->value = t | tag;
counter += len2;
@@ -894,7 +897,7 @@
{
p_vet = first;
first = first->next;
- free(p_vet);
+ free (p_vet);
}
return err;
}
@@ -905,7 +908,8 @@
int size;
};
-static int setof_compar(const void *_e1, const void *_e2)
+static int
+setof_compar (const void *_e1, const void *_e2)
{
unsigned length;
const struct vet *e1 = _e1, *e2 = _e2;
@@ -918,15 +922,15 @@
* The padding octets are for comparison purposes and
* do not appear in the encodings.
*/
- length = MIN(e1->size, e2->size);
+ length = MIN (e1->size, e2->size);
- rval = memcmp(e1->ptr, e2->ptr, length);
+ rval = memcmp (e1->ptr, e2->ptr, length);
if (rval == 0 && e1->size != e2->size)
{
if (e1->size > e2->size)
- rval = 1;
+ rval = 1;
else if (e2->size > e1->size)
- rval = -1;
+ rval = -1;
}
return rval;
@@ -963,7 +967,7 @@
p = node->down;
while (p && ((type_field (p->type) == ASN1_ETYPE_TAG) ||
- (type_field (p->type) == ASN1_ETYPE_SIZE)))
+ (type_field (p->type) == ASN1_ETYPE_SIZE)))
p = p->right;
if (p == NULL)
return ASN1_VALUE_NOT_VALID;
@@ -975,27 +979,27 @@
while (p)
{
list_size++;
- tlist = realloc (list, list_size*sizeof(struct vet));
+ tlist = realloc (list, list_size * sizeof (struct vet));
if (tlist == NULL)
{
err = ASN1_MEM_ALLOC_ERROR;
goto error;
}
list = tlist;
- p_vet = &list[list_size-1];
+ p_vet = &list[list_size - 1];
- p_vet->ptr = der+counter;
+ p_vet->ptr = der + counter;
p_vet->size = 0;
/* extraction of tag and length */
if (der_len - counter > 0)
{
err = asn1_get_tag_der (der + counter, der_len - counter, &class,
- &len, NULL);
+ &len, NULL);
if (err != ASN1_SUCCESS)
goto error;
counter += len;
- p_vet->size += len;
+ p_vet->size += len;
len2 = asn1_get_length_der (der + counter, der_len - counter, &len);
if (len2 < 0)
@@ -1004,7 +1008,7 @@
goto error;
}
counter += len + len2;
- p_vet->size += len + len2;
+ p_vet->size += len + len2;
}
else
@@ -1021,9 +1025,9 @@
goto error;
}
- qsort(list, list_size, sizeof(struct vet), setof_compar);
+ qsort (list, list_size, sizeof (struct vet), setof_compar);
- out = malloc(der_len);
+ out = malloc (der_len);
if (out == NULL)
{
err = ASN1_MEM_ERROR;
@@ -1035,16 +1039,16 @@
for (i = 0; i < list_size; i++)
{
p_vet = &list[i];
- memcpy(out+counter, p_vet->ptr, p_vet->size);
+ memcpy (out + counter, p_vet->ptr, p_vet->size);
counter += p_vet->size;
}
- memcpy(der, out, der_len);
- free(out);
+ memcpy (der, out, der_len);
+ free (out);
err = ASN1_SUCCESS;
error:
- free(list);
+ free (list);
return err;
}
@@ -1070,11 +1074,11 @@
* length needed.
**/
int
-asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len,
- char *ErrorDescription)
+asn1_der_coding (asn1_node_const element, const char *name, void *ider,
+ int *len, char *ErrorDescription)
{
asn1_node node, p, p2;
- unsigned char temp[MAX(LTOSTR_MAX_SIZE, SIZEOF_UNSIGNED_LONG_INT * 3 + 1)];
+ unsigned char temp[MAX (LTOSTR_MAX_SIZE, SIZEOF_UNSIGNED_LONG_INT * 3 + 1)];
int counter, counter_old, len2, len3, move, max_len, max_len_old;
int err;
unsigned char *der = ider;
@@ -1114,7 +1118,7 @@
max_len_old = max_len;
if (move != UP)
{
- p->start = counter;
+ p->start = counter;
err = _asn1_insert_tag_der (p, der, &counter, &max_len);
if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
goto error;
@@ -1202,7 +1206,9 @@
goto error;
}
len2 = max_len;
- err = _asn1_object_id_der ((char*)p->value, der ? der + counter : &dummy, &len2);
+ err =
+ _asn1_object_id_der ((char *) p->value,
+ der ? der + counter : &dummy, &len2);
if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
goto error;
@@ -1220,7 +1226,9 @@
goto error;
}
len2 = max_len;
- err = _asn1_time_der (p->value, p->value_len, der ? der + counter : &dummy, &len2);
+ err =
+ _asn1_time_der (p->value, p->value_len,
+ der ? der + counter : &dummy, &len2);
if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
goto error;
@@ -1288,7 +1296,9 @@
p->tmp_ival = 0;
if ((type_field (p->type) == ASN1_ETYPE_SET) && (max_len >= 0))
{
- err = _asn1_ordering_set (der ? der + len2 : &dummy, counter - len2, p);
+ err =
+ _asn1_ordering_set (der ? der + len2 : &dummy,
+ counter - len2, p);
if (err != ASN1_SUCCESS)
goto error;
}
@@ -1329,7 +1339,9 @@
if ((type_field (p->type) == ASN1_ETYPE_SET_OF)
&& (counter - len2 > 0) && (max_len >= 0))
{
- err = _asn1_ordering_set_of (der ? der + len2 : &dummy, counter - len2, p);
+ err =
+ _asn1_ordering_set_of (der ? der + len2 : &dummy,
+ counter - len2, p);
if (err != ASN1_SUCCESS)
goto error;
}
@@ -1370,7 +1382,7 @@
if ((move != DOWN) && (counter != counter_old))
{
- p->end = counter - 1;
+ p->end = counter - 1;
err = _asn1_complete_explicit_tag (p, der, &counter, &max_len);
if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
goto error;
diff --git a/lib/decoding.c b/lib/decoding.c
index 378219c..b1a3535 100644
--- a/lib/decoding.c
+++ b/lib/decoding.c
@@ -71,18 +71,19 @@
} while (0)
static int
-_asn1_get_indefinite_length_string (const unsigned char *der, int der_len, int *len);
+_asn1_get_indefinite_length_string (const unsigned char *der, int der_len,
+ int *len);
static int
_asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
- unsigned int _der_len, unsigned char **str,
- unsigned int *str_len, unsigned int *ber_len,
- unsigned dflags);
+ unsigned int _der_len, unsigned char **str,
+ unsigned int *str_len, unsigned int *ber_len,
+ unsigned dflags);
static int
_asn1_decode_simple_der (unsigned int etype, const unsigned char *der,
- unsigned int _der_len, const unsigned char **str,
- unsigned int *str_len, unsigned dflags);
+ unsigned int _der_len, const unsigned char **str,
+ unsigned int *str_len, unsigned dflags);
static void
_asn1_error_description_tag_error (asn1_node node, char *ErrorDescription)
@@ -129,7 +130,7 @@
k = der[0] & 0x7F;
punt = 1;
if (k)
- { /* definite length method */
+ { /* definite length method */
ans = 0;
while (punt <= k && punt < der_len)
{
@@ -255,7 +256,7 @@
if (ret == -1 && ber_len > 1)
{ /* indefinite length method */
- err = _asn1_get_indefinite_length_string (ber + 1, ber_len-1, &ret);
+ err = _asn1_get_indefinite_length_string (ber + 1, ber_len - 1, &ret);
if (err != ASN1_SUCCESS)
return -3;
}
@@ -297,7 +298,7 @@
if (str_size >= *str_len)
{
if (*str_len > 0 && str != NULL)
- memcpy (str, der + len_len, *str_len);
+ memcpy (str, der + len_len, *str_len);
}
else
{
@@ -325,8 +326,8 @@
* Returns: %ASN1_SUCCESS on success, or an error.
-*/
static int
-_asn1_get_time_der (unsigned type, const unsigned char *der, int der_len, int *ret_len,
- char *str, int str_size, unsigned flags)
+_asn1_get_time_der (unsigned type, const unsigned char *der, int der_len,
+ int *ret_len, char *str, int str_size, unsigned flags)
{
int len_len, str_len;
unsigned i;
@@ -344,46 +345,47 @@
/* perform some sanity checks on the data */
if (str_len < 8)
{
- warn();
+ warn ();
return ASN1_TIME_ENCODING_ERROR;
}
- if ((flags & ASN1_DECODE_FLAG_STRICT_DER) && !(flags & ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME))
+ if ((flags & ASN1_DECODE_FLAG_STRICT_DER)
+ && !(flags & ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME))
{
p = &der[len_len];
- for (i=0;i<(unsigned)(str_len-1);i++)
- {
- if (c_isdigit(p[i]) == 0)
- {
- if (type == ASN1_ETYPE_GENERALIZED_TIME)
- {
- /* tolerate lax encodings */
- if (p[i] == '.' && dot_count == 0)
- {
- dot_count++;
- continue;
- }
+ for (i = 0; i < (unsigned) (str_len - 1); i++)
+ {
+ if (c_isdigit (p[i]) == 0)
+ {
+ if (type == ASN1_ETYPE_GENERALIZED_TIME)
+ {
+ /* tolerate lax encodings */
+ if (p[i] == '.' && dot_count == 0)
+ {
+ dot_count++;
+ continue;
+ }
- /* This is not really valid DER, but there are
- * structures using that */
- if (!(flags & ASN1_DECODE_FLAG_STRICT_DER) &&
- (p[i] == '+' || p[i] == '-') && sign_count == 0)
- {
- sign_count++;
- continue;
- }
- }
+ /* This is not really valid DER, but there are
+ * structures using that */
+ if (!(flags & ASN1_DECODE_FLAG_STRICT_DER) &&
+ (p[i] == '+' || p[i] == '-') && sign_count == 0)
+ {
+ sign_count++;
+ continue;
+ }
+ }
- warn();
- return ASN1_TIME_ENCODING_ERROR;
- }
- }
+ warn ();
+ return ASN1_TIME_ENCODING_ERROR;
+ }
+ }
- if (sign_count == 0 && p[str_len-1] != 'Z')
- {
- warn();
- return ASN1_TIME_ENCODING_ERROR;
- }
+ if (sign_count == 0 && p[str_len - 1] != 'Z')
+ {
+ warn ();
+ return ASN1_TIME_ENCODING_ERROR;
+ }
}
memcpy (str, der + len_len, str_len);
str[str_len] = 0;
@@ -454,11 +456,11 @@
{
val = 1;
val1 = val0 - 40;
- if (val1 > 39)
- {
- val = 2;
- val1 = val0 - 80;
- }
+ if (val1 > 39)
+ {
+ val = 2;
+ val1 = val0 - 80;
+ }
}
_asn1_str_cpy (str, str_size, _asn1_ltostr (val, temp));
@@ -535,7 +537,7 @@
if (str_size >= len_byte)
{
if (len_byte > 0 && str)
- memcpy (str, der + len_len + 1, len_byte);
+ memcpy (str, der + len_len + 1, len_byte);
}
else
{
@@ -586,21 +588,19 @@
&tag) != ASN1_SUCCESS)
return ASN1_DER_ERROR;
- DECR_LEN(der_len, len2);
+ DECR_LEN (der_len, len2);
counter += len2;
if (flags & ASN1_DECODE_FLAG_STRICT_DER)
len3 =
- asn1_get_length_der (der + counter, der_len,
- &len2);
+ asn1_get_length_der (der + counter, der_len, &len2);
else
len3 =
- asn1_get_length_ber (der + counter, der_len,
- &len2);
+ asn1_get_length_ber (der + counter, der_len, &len2);
if (len3 < 0)
return ASN1_DER_ERROR;
- DECR_LEN(der_len, len2);
+ DECR_LEN (der_len, len2);
counter += len2;
if (!is_tag_implicit)
@@ -638,11 +638,10 @@
if (is_tag_implicit)
{
if (asn1_get_tag_der
- (der + counter, der_len, &class, &len2,
- &tag) != ASN1_SUCCESS)
+ (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS)
return ASN1_DER_ERROR;
- DECR_LEN(der_len, len2);
+ DECR_LEN (der_len, len2);
if ((class != class_implicit) || (tag != tag_implicit))
{
@@ -668,11 +667,10 @@
}
if (asn1_get_tag_der
- (der + counter, der_len, &class, &len2,
- &tag) != ASN1_SUCCESS)
+ (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS)
return ASN1_DER_ERROR;
- DECR_LEN(der_len, len2);
+ DECR_LEN (der_len, len2);
switch (type)
{
@@ -733,28 +731,32 @@
}
static int
-extract_tag_der_recursive(asn1_node node, const unsigned char *der, int der_len,
- int *ret_len, int *inner_len, unsigned flags)
+extract_tag_der_recursive (asn1_node node, const unsigned char *der,
+ int der_len, int *ret_len, int *inner_len,
+ unsigned flags)
{
-asn1_node p;
-int ris = ASN1_DER_ERROR;
+ asn1_node p;
+ int ris = ASN1_DER_ERROR;
if (type_field (node->type) == ASN1_ETYPE_CHOICE)
{
p = node->down;
while (p)
- {
- ris = _asn1_extract_tag_der (p, der, der_len, ret_len, inner_len, flags);
- if (ris == ASN1_SUCCESS)
- break;
- p = p->right;
+ {
+ ris =
+ _asn1_extract_tag_der (p, der, der_len, ret_len, inner_len,
+ flags);
+ if (ris == ASN1_SUCCESS)
+ break;
+ p = p->right;
}
*ret_len = 0;
return ris;
}
else
- return _asn1_extract_tag_der (node, der, der_len, ret_len, inner_len, flags);
+ return _asn1_extract_tag_der (node, der, der_len, ret_len, inner_len,
+ flags);
}
static int
@@ -829,10 +831,11 @@
while (1)
{
- if (HAVE_TWO(der_len) && (der[counter] == 0) && (der[counter + 1] == 0))
+ if (HAVE_TWO (der_len) && (der[counter] == 0)
+ && (der[counter + 1] == 0))
{
counter += 2;
- DECR_LEN(der_len, 2);
+ DECR_LEN (der_len, 2);
indefinite--;
if (indefinite <= 0)
@@ -842,11 +845,10 @@
}
if (asn1_get_tag_der
- (der + counter, der_len, &class, &len2,
- &tag) != ASN1_SUCCESS)
+ (der + counter, der_len, &class, &len2, &tag) != ASN1_SUCCESS)
return ASN1_DER_ERROR;
- DECR_LEN(der_len, len2);
+ DECR_LEN (der_len, len2);
counter += len2;
len2 = asn1_get_length_der (der + counter, der_len, &len3);
@@ -857,12 +859,12 @@
{
indefinite++;
counter += 1;
- DECR_LEN(der_len, 1);
+ DECR_LEN (der_len, 1);
}
else
{
counter += len2 + len3;
- DECR_LEN(der_len, len2+len3);
+ DECR_LEN (der_len, len2 + len3);
}
}
@@ -873,7 +875,8 @@
return result;
}
-static void delete_unneeded_choice_fields(asn1_node p)
+static void
+delete_unneeded_choice_fields (asn1_node p)
{
asn1_node p2;
@@ -912,13 +915,13 @@
* name (*@ELEMENT deleted).
**/
int
-asn1_der_decoding2 (asn1_node *element, const void *ider, int *max_ider_len,
+asn1_der_decoding2 (asn1_node * element, const void *ider, int *max_ider_len,
unsigned int flags, char *errorDescription)
{
asn1_node node, p, p2, p3;
char temp[128];
int counter, len2, len3, len4, move, ris, tlen;
- struct node_tail_cache_st tcache = {NULL, NULL};
+ struct node_tail_cache_st tcache = { NULL, NULL };
unsigned char class;
unsigned long tag;
int tag_len;
@@ -939,7 +942,7 @@
if (node->type & CONST_OPTION)
{
result = ASN1_GENERIC_ERROR;
- warn();
+ warn ();
goto cleanup;
}
@@ -959,12 +962,13 @@
len2 = p2->tmp_ival;
if (len2 == -1)
{
- if (HAVE_TWO(ider_len) && !der[counter] && !der[counter + 1])
+ if (HAVE_TWO (ider_len) && !der[counter]
+ && !der[counter + 1])
{
p = p2;
move = UP;
counter += 2;
- DECR_LEN(ider_len, 2);
+ DECR_LEN (ider_len, 2);
continue;
}
}
@@ -977,7 +981,7 @@
else if (counter > len2)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
p2 = p2->down;
@@ -986,8 +990,9 @@
if ((p2->type & CONST_SET) && (p2->type & CONST_NOT_USED))
{
ris =
- extract_tag_der_recursive (p2, der + counter,
- ider_len, &len2, NULL, flags);
+ extract_tag_der_recursive (p2, der + counter,
+ ider_len, &len2, NULL,
+ flags);
if (ris == ASN1_SUCCESS)
{
p2->type &= ~CONST_NOT_USED;
@@ -1000,7 +1005,7 @@
if (p2 == NULL)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
}
@@ -1036,18 +1041,18 @@
while (p->down)
{
ris =
- extract_tag_der_recursive (p->down, der + counter,
- ider_len, &len2, NULL, flags);
+ extract_tag_der_recursive (p->down, der + counter,
+ ider_len, &len2, NULL, flags);
if (ris == ASN1_SUCCESS)
{
- delete_unneeded_choice_fields(p->down);
+ delete_unneeded_choice_fields (p->down);
break;
}
else if (ris == ASN1_ERROR_TYPE_ANY)
{
result = ASN1_ERROR_TYPE_ANY;
- warn();
+ warn ();
goto cleanup;
}
else
@@ -1062,7 +1067,7 @@
if (!(p->type & CONST_OPTION))
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
}
@@ -1084,7 +1089,7 @@
if (ris == ASN1_SUCCESS)
ris =
extract_tag_der_recursive (p, der + counter, ider_len,
- &tag_len, &inner_tag_len, flags);
+ &tag_len, &inner_tag_len, flags);
if (ris != ASN1_SUCCESS)
{
@@ -1104,13 +1109,13 @@
_asn1_error_description_tag_error (p, errorDescription);
result = ASN1_TAG_ERROR;
- warn();
+ warn ();
goto cleanup;
}
}
else
{
- DECR_LEN(ider_len, tag_len);
+ DECR_LEN (ider_len, tag_len);
counter += tag_len;
}
}
@@ -1120,23 +1125,23 @@
switch (type_field (p->type))
{
case ASN1_ETYPE_NULL:
- DECR_LEN(ider_len, 1);
+ DECR_LEN (ider_len, 1);
if (der[counter])
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
counter++;
move = RIGHT;
break;
case ASN1_ETYPE_BOOLEAN:
- DECR_LEN(ider_len, 2);
+ DECR_LEN (ider_len, 2);
if (der[counter++] != 1)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
if (der[counter++] == 0)
@@ -1147,16 +1152,15 @@
break;
case ASN1_ETYPE_INTEGER:
case ASN1_ETYPE_ENUMERATED:
- len2 =
- asn1_get_length_der (der + counter, ider_len, &len3);
+ len2 = asn1_get_length_der (der + counter, ider_len, &len3);
if (len2 < 0)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len3+len2);
+ DECR_LEN (ider_len, len3 + len2);
_asn1_set_value (p, der + counter, len3 + len2);
counter += len3 + len2;
@@ -1167,12 +1171,12 @@
asn1_get_object_id_der (der + counter, ider_len, &len2,
temp, sizeof (temp));
if (result != ASN1_SUCCESS)
- {
- warn();
+ {
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
tlen = strlen (temp);
if (tlen > 0)
@@ -1184,15 +1188,16 @@
case ASN1_ETYPE_GENERALIZED_TIME:
case ASN1_ETYPE_UTC_TIME:
result =
- _asn1_get_time_der (type_field (p->type), der + counter, ider_len, &len2, temp,
- sizeof (temp) - 1, flags);
+ _asn1_get_time_der (type_field (p->type), der + counter,
+ ider_len, &len2, temp, sizeof (temp) - 1,
+ flags);
if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ {
+ warn ();
+ goto cleanup;
+ }
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
tlen = strlen (temp);
if (tlen > 0)
@@ -1203,57 +1208,60 @@
break;
case ASN1_ETYPE_OCTET_STRING:
if (counter < inner_tag_len)
- {
+ {
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
- }
+ }
- ptag = der + counter - inner_tag_len;
- if ((flags & ASN1_DECODE_FLAG_STRICT_DER) || !(ptag[0] & ASN1_CLASS_STRUCTURED))
- {
- if (ptag[0] & ASN1_CLASS_STRUCTURED)
+ ptag = der + counter - inner_tag_len;
+ if ((flags & ASN1_DECODE_FLAG_STRICT_DER)
+ || !(ptag[0] & ASN1_CLASS_STRUCTURED))
+ {
+ if (ptag[0] & ASN1_CLASS_STRUCTURED)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- len2 =
- asn1_get_length_der (der + counter, ider_len, &len3);
- if (len2 < 0)
+ len2 = asn1_get_length_der (der + counter, ider_len, &len3);
+ if (len2 < 0)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len3+len2);
+ DECR_LEN (ider_len, len3 + len2);
- _asn1_set_value (p, der + counter, len3 + len2);
- counter += len3 + len2;
- }
- else
- {
- unsigned dflags = 0, vlen, ber_len;
+ _asn1_set_value (p, der + counter, len3 + len2);
+ counter += len3 + len2;
+ }
+ else
+ {
+ unsigned dflags = 0, vlen, ber_len;
- if (ptag[0] & ASN1_CLASS_STRUCTURED)
- dflags |= DECODE_FLAG_CONSTRUCTED;
+ if (ptag[0] & ASN1_CLASS_STRUCTURED)
+ dflags |= DECODE_FLAG_CONSTRUCTED;
- result = _asn1_decode_simple_ber(type_field (p->type), der+counter, ider_len, &ptmp, &vlen, &ber_len, dflags);
- if (result != ASN1_SUCCESS)
- {
- warn();
+ result =
+ _asn1_decode_simple_ber (type_field (p->type),
+ der + counter, ider_len, &ptmp,
+ &vlen, &ber_len, dflags);
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, ber_len);
+ DECR_LEN (ider_len, ber_len);
_asn1_set_value_lv (p, ptmp, vlen);
- counter += ber_len;
- free(ptmp);
- }
+ counter += ber_len;
+ free (ptmp);
+ }
move = RIGHT;
break;
case ASN1_ETYPE_GENERALSTRING:
@@ -1266,16 +1274,15 @@
case ASN1_ETYPE_UTF8_STRING:
case ASN1_ETYPE_VISIBLE_STRING:
case ASN1_ETYPE_BIT_STRING:
- len2 =
- asn1_get_length_der (der + counter, ider_len, &len3);
+ len2 = asn1_get_length_der (der + counter, ider_len, &len3);
if (len2 < 0)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len3+len2);
+ DECR_LEN (ider_len, len3 + len2);
_asn1_set_value (p, der + counter, len3 + len2);
counter += len3 + len2;
@@ -1289,12 +1296,12 @@
p->tmp_ival = 0;
if (len2 == -1)
{ /* indefinite length method */
- DECR_LEN(ider_len, 2);
+ DECR_LEN (ider_len, 2);
if ((der[counter]) || der[counter + 1])
- {
- result = ASN1_DER_ERROR;
- warn();
- goto cleanup;
+ {
+ result = ASN1_DER_ERROR;
+ warn ();
+ goto cleanup;
}
counter += 2;
}
@@ -1303,7 +1310,7 @@
if (len2 != counter)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
}
@@ -1311,16 +1318,15 @@
}
else
{ /* move==DOWN || move==RIGHT */
- len3 =
- asn1_get_length_der (der + counter, ider_len, &len2);
- if (IS_ERR(len3, flags))
+ len3 = asn1_get_length_der (der + counter, ider_len, &len2);
+ if (IS_ERR (len3, flags))
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
counter += len2;
if (len3 > 0)
@@ -1358,23 +1364,24 @@
len2 = p->tmp_ival;
if (len2 == -1)
{ /* indefinite length method */
- if (!HAVE_TWO(ider_len) || ((der[counter]) || der[counter + 1]))
+ if (!HAVE_TWO (ider_len)
+ || ((der[counter]) || der[counter + 1]))
{
result = _asn1_append_sequence_set (p, &tcache);
if (result != 0)
{
- warn();
- goto cleanup;
- }
+ warn ();
+ goto cleanup;
+ }
p = tcache.tail;
move = RIGHT;
continue;
}
p->tmp_ival = 0;
- tcache.tail = NULL; /* finished decoding this structure */
+ tcache.tail = NULL; /* finished decoding this structure */
tcache.head = NULL;
- DECR_LEN(ider_len, 2);
+ DECR_LEN (ider_len, 2);
counter += 2;
}
else
@@ -1384,69 +1391,68 @@
result = _asn1_append_sequence_set (p, &tcache);
if (result != 0)
{
- warn();
- goto cleanup;
- }
+ warn ();
+ goto cleanup;
+ }
p = tcache.tail;
move = RIGHT;
continue;
}
p->tmp_ival = 0;
- tcache.tail = NULL; /* finished decoding this structure */
+ tcache.tail = NULL; /* finished decoding this structure */
tcache.head = NULL;
if (len2 != counter)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
}
}
else
{ /* move==DOWN || move==RIGHT */
- len3 =
- asn1_get_length_der (der + counter, ider_len, &len2);
- if (IS_ERR(len3, flags))
+ len3 = asn1_get_length_der (der + counter, ider_len, &len2);
+ if (IS_ERR (len3, flags))
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
counter += len2;
if (len3)
{
if (len3 > 0)
{ /* definite length method */
- p->tmp_ival = counter + len3;
+ p->tmp_ival = counter + len3;
}
else
{ /* indefinite length method */
- p->tmp_ival = -1;
+ p->tmp_ival = -1;
}
p2 = p->down;
- if (p2 == NULL)
- {
- result = ASN1_DER_ERROR;
- warn();
- goto cleanup;
- }
+ if (p2 == NULL)
+ {
+ result = ASN1_DER_ERROR;
+ warn ();
+ goto cleanup;
+ }
while ((type_field (p2->type) == ASN1_ETYPE_TAG)
|| (type_field (p2->type) == ASN1_ETYPE_SIZE))
p2 = p2->right;
if (p2->right == NULL)
- {
+ {
result = _asn1_append_sequence_set (p, &tcache);
if (result != 0)
{
- warn();
- goto cleanup;
- }
+ warn ();
+ goto cleanup;
+ }
}
p = p2;
}
@@ -1456,81 +1462,82 @@
case ASN1_ETYPE_ANY:
/* Check indefinite lenth method in an EXPLICIT TAG */
- if (!(flags & ASN1_DECODE_FLAG_STRICT_DER) && (p->type & CONST_TAG) &&
- tag_len == 2 && (der[counter - 1] == 0x80))
+ if (!(flags & ASN1_DECODE_FLAG_STRICT_DER)
+ && (p->type & CONST_TAG) && tag_len == 2
+ && (der[counter - 1] == 0x80))
indefinite = 1;
else
- indefinite = 0;
+ indefinite = 0;
if (asn1_get_tag_der
(der + counter, ider_len, &class, &len2,
&tag) != ASN1_SUCCESS)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
len4 =
- asn1_get_length_der (der + counter + len2,
- ider_len, &len3);
- if (IS_ERR(len4, flags))
+ asn1_get_length_der (der + counter + len2, ider_len, &len3);
+ if (IS_ERR (len4, flags))
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
- if (len4 != -1) /* definite */
+ if (len4 != -1) /* definite */
{
len2 += len4;
- DECR_LEN(ider_len, len4+len3);
+ DECR_LEN (ider_len, len4 + len3);
_asn1_set_value_lv (p, der + counter, len2 + len3);
counter += len2 + len3;
}
- else /* == -1 */
+ else /* == -1 */
{ /* indefinite length */
- ider_len += len2; /* undo DECR_LEN */
+ ider_len += len2; /* undo DECR_LEN */
if (counter == 0)
{
result = ASN1_DER_ERROR;
- warn();
+ warn ();
goto cleanup;
}
result =
- _asn1_get_indefinite_length_string (der + counter, ider_len, &len2);
+ _asn1_get_indefinite_length_string (der + counter,
+ ider_len, &len2);
if (result != ASN1_SUCCESS)
{
- warn();
- goto cleanup;
- }
+ warn ();
+ goto cleanup;
+ }
- DECR_LEN(ider_len, len2);
+ DECR_LEN (ider_len, len2);
_asn1_set_value_lv (p, der + counter, len2);
counter += len2;
}
- /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with
- an indefinite length method. */
- if (indefinite)
- {
- DECR_LEN(ider_len, 2);
- if (!der[counter] && !der[counter + 1])
- {
- counter += 2;
- }
- else
- {
- result = ASN1_DER_ERROR;
- warn();
- goto cleanup;
- }
- }
+ /* Check if a couple of 0x00 are present due to an EXPLICIT TAG with
+ an indefinite length method. */
+ if (indefinite)
+ {
+ DECR_LEN (ider_len, 2);
+ if (!der[counter] && !der[counter + 1])
+ {
+ counter += 2;
+ }
+ else
+ {
+ result = ASN1_DER_ERROR;
+ warn ();
+ goto cleanup;
+ }
+ }
move = RIGHT;
break;
@@ -1541,9 +1548,9 @@
}
if (p)
- {
- p->end = counter - 1;
- }
+ {
+ p->end = counter - 1;
+ }
if (p == node && move != DOWN)
break;
@@ -1571,7 +1578,7 @@
if ((ider_len < 0) ||
(!(flags & ASN1_DECODE_FLAG_ALLOW_PADDING) && (ider_len != 0)))
{
- warn();
+ warn ();
result = ASN1_DER_ERROR;
goto cleanup;
}
@@ -1641,7 +1648,7 @@
asn1_der_decoding_element (asn1_node * structure, const char *elementName,
const void *ider, int len, char *errorDescription)
{
- return asn1_der_decoding(structure, ider, len, errorDescription);
+ return asn1_der_decoding (structure, ider, len, errorDescription);
}
/**
@@ -1695,19 +1702,19 @@
if (*start == 0 && *end == 0)
{
if (ider == NULL || ider_len == 0)
- return ASN1_GENERIC_ERROR;
+ return ASN1_GENERIC_ERROR;
/* it seems asn1_der_decoding() wasn't called before. Do it now */
result = asn1_der_decoding (&node, ider, ider_len, NULL);
if (result != ASN1_SUCCESS)
- {
- warn();
- return result;
- }
+ {
+ warn ();
+ return result;
+ }
node_to_find = asn1_find_node (node, name_element);
if (node_to_find == NULL)
- return ASN1_ELEMENT_NOT_FOUND;
+ return ASN1_ELEMENT_NOT_FOUND;
*start = node_to_find->start;
*end = node_to_find->end;
@@ -1738,8 +1745,7 @@
int
asn1_expand_any_defined_by (asn1_node_const definitions, asn1_node * element)
{
- char name[2 * ASN1_MAX_NAME_SIZE + 2],
- value[ASN1_MAX_NAME_SIZE];
+ char name[2 * ASN1_MAX_NAME_SIZE + 2], value[ASN1_MAX_NAME_SIZE];
int retCode = ASN1_SUCCESS, result;
int len, len2, len3;
asn1_node_const p2;
@@ -1825,7 +1831,8 @@
if ((type_field (p2->type) == ASN1_ETYPE_OBJECT_ID) &&
(p2->type & CONST_ASSIGN))
{
- snprintf(name, sizeof(name), "%s.%s", definitionsName, p2->name);
+ snprintf (name, sizeof (name), "%s.%s", definitionsName,
+ p2->name);
len = ASN1_MAX_NAME_SIZE;
result =
@@ -1841,7 +1848,8 @@
if (p2)
{
- snprintf(name, sizeof(name), "%s.%s", definitionsName, p2->name);
+ snprintf (name, sizeof (name), "%s.%s",
+ definitionsName, p2->name);
result =
asn1_create_element (definitions, name, &aux);
@@ -2105,8 +2113,8 @@
-*/
static int
_asn1_decode_simple_der (unsigned int etype, const unsigned char *der,
- unsigned int _der_len, const unsigned char **str,
- unsigned int *str_len, unsigned dflags)
+ unsigned int _der_len, const unsigned char **str,
+ unsigned int *str_len, unsigned dflags)
{
int tag_len, len_len;
const unsigned char *p;
@@ -2118,11 +2126,11 @@
if (der == NULL || der_len == 0)
return ASN1_VALUE_NOT_VALID;
- if (ETYPE_OK (etype) == 0 || ETYPE_IS_STRING(etype) == 0)
+ if (ETYPE_OK (etype) == 0 || ETYPE_IS_STRING (etype) == 0)
return ASN1_VALUE_NOT_VALID;
/* doesn't handle constructed classes */
- class = ETYPE_CLASS(etype);
+ class = ETYPE_CLASS (etype);
if (class != ASN1_CLASS_UNIVERSAL)
return ASN1_VALUE_NOT_VALID;
@@ -2132,18 +2140,18 @@
{
ret = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag);
if (ret != ASN1_SUCCESS)
- return ret;
+ return ret;
if (class != ETYPE_CLASS (etype) || tag != ETYPE_TAG (etype))
- {
- warn();
- return ASN1_DER_ERROR;
- }
+ {
+ warn ();
+ return ASN1_DER_ERROR;
+ }
p += tag_len;
der_len -= tag_len;
if (der_len <= 0)
- return ASN1_DER_ERROR;
+ return ASN1_DER_ERROR;
}
ret = asn1_get_length_der (p, der_len, &len_len);
@@ -2179,18 +2187,21 @@
unsigned int _der_len, const unsigned char **str,
unsigned int *str_len)
{
- return _asn1_decode_simple_der(etype, der, _der_len, str, str_len, DECODE_FLAG_HAVE_TAG);
+ return _asn1_decode_simple_der (etype, der, _der_len, str, str_len,
+ DECODE_FLAG_HAVE_TAG);
}
-static int append(uint8_t **dst, unsigned *dst_size, const unsigned char *src, unsigned src_size)
+static int
+append (uint8_t ** dst, unsigned *dst_size, const unsigned char *src,
+ unsigned src_size)
{
if (src_size == 0)
return ASN1_SUCCESS;
- *dst = _asn1_realloc(*dst, *dst_size+src_size);
+ *dst = _asn1_realloc (*dst, *dst_size + src_size);
if (*dst == NULL)
return ASN1_MEM_ALLOC_ERROR;
- memcpy(*dst + *dst_size, src, src_size);
+ memcpy (*dst + *dst_size, src, src_size);
*dst_size += src_size;
return ASN1_SUCCESS;
}
@@ -2213,9 +2224,9 @@
-*/
static int
_asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
- unsigned int _der_len, unsigned char **str,
- unsigned int *str_len, unsigned int *ber_len,
- unsigned dflags)
+ unsigned int _der_len, unsigned char **str,
+ unsigned int *str_len, unsigned int *ber_len,
+ unsigned dflags)
{
int tag_len, len_len;
const unsigned char *p;
@@ -2229,17 +2240,18 @@
unsigned out_len;
long result;
- if (ber_len) *ber_len = 0;
+ if (ber_len)
+ *ber_len = 0;
if (der == NULL || der_len == 0)
{
- warn();
+ warn ();
return ASN1_VALUE_NOT_VALID;
}
if (ETYPE_OK (etype) == 0)
{
- warn();
+ warn ();
return ASN1_VALUE_NOT_VALID;
}
@@ -2247,7 +2259,7 @@
class = ETYPE_CLASS (etype);
if (class != ASN1_CLASS_UNIVERSAL)
{
- warn();
+ warn ();
return ASN1_VALUE_NOT_VALID;
}
@@ -2256,190 +2268,200 @@
if (dflags & DECODE_FLAG_HAVE_TAG)
{
result = asn1_get_tag_der (p, der_len, &class, &tag_len, &tag);
- if (result != ASN1_SUCCESS)
- {
- warn();
- return result;
- }
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
+ return result;
+ }
- if (tag != ETYPE_TAG (etype))
- {
- warn();
- return ASN1_DER_ERROR;
- }
+ if (tag != ETYPE_TAG (etype))
+ {
+ warn ();
+ return ASN1_DER_ERROR;
+ }
- p += tag_len;
+ p += tag_len;
- DECR_LEN(der_len, tag_len);
+ DECR_LEN (der_len, tag_len);
- if (ber_len) *ber_len += tag_len;
+ if (ber_len)
+ *ber_len += tag_len;
}
/* indefinite constructed */
- if ((((dflags & DECODE_FLAG_CONSTRUCTED) || class == ASN1_CLASS_STRUCTURED) && ETYPE_IS_STRING(etype)) &&
- !(dflags & DECODE_FLAG_LEVEL3))
+ if ((((dflags & DECODE_FLAG_CONSTRUCTED) || class == ASN1_CLASS_STRUCTURED)
+ && ETYPE_IS_STRING (etype)) && !(dflags & DECODE_FLAG_LEVEL3))
{
if (der_len == 0)
- {
- warn();
- result = ASN1_DER_ERROR;
- goto cleanup;
- }
+ {
+ warn ();
+ result = ASN1_DER_ERROR;
+ goto cleanup;
+ }
- if (der_len > 0 && p[0] == 0x80) /* indefinite */
- {
- len_len = 1;
- DECR_LEN(der_len, len_len);
- p += len_len;
+ if (der_len > 0 && p[0] == 0x80) /* indefinite */
+ {
+ len_len = 1;
+ DECR_LEN (der_len, len_len);
+ p += len_len;
- if (ber_len) *ber_len += len_len;
+ if (ber_len)
+ *ber_len += len_len;
- /* decode the available octet strings */
- do
- {
- unsigned tmp_len;
- unsigned flags = DECODE_FLAG_HAVE_TAG;
+ /* decode the available octet strings */
+ do
+ {
+ unsigned tmp_len;
+ unsigned flags = DECODE_FLAG_HAVE_TAG;
- if (dflags & DECODE_FLAG_LEVEL1)
- flags |= DECODE_FLAG_LEVEL2;
- else if (dflags & DECODE_FLAG_LEVEL2)
- flags |= DECODE_FLAG_LEVEL3;
- else
+ if (dflags & DECODE_FLAG_LEVEL1)
+ flags |= DECODE_FLAG_LEVEL2;
+ else if (dflags & DECODE_FLAG_LEVEL2)
+ flags |= DECODE_FLAG_LEVEL3;
+ else
flags |= DECODE_FLAG_LEVEL1;
- result = _asn1_decode_simple_ber(etype, p, der_len, &out, &out_len, &tmp_len,
- flags);
- if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ result =
+ _asn1_decode_simple_ber (etype, p, der_len, &out, &out_len,
+ &tmp_len, flags);
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
+ goto cleanup;
+ }
- p += tmp_len;
- DECR_LEN(der_len, tmp_len);
+ p += tmp_len;
+ DECR_LEN (der_len, tmp_len);
- if (ber_len) *ber_len += tmp_len;
+ if (ber_len)
+ *ber_len += tmp_len;
- DECR_LEN(der_len, 2); /* we need the EOC */
+ DECR_LEN (der_len, 2); /* we need the EOC */
- result = append(&total, &total_size, out, out_len);
- if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ result = append (&total, &total_size, out, out_len);
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
+ goto cleanup;
+ }
- free(out);
- out = NULL;
+ free (out);
+ out = NULL;
- if (p[0] == 0 && p[1] == 0) /* EOC */
- {
- if (ber_len) *ber_len += 2;
- break;
- }
+ if (p[0] == 0 && p[1] == 0) /* EOC */
+ {
+ if (ber_len)
+ *ber_len += 2;
+ break;
+ }
- /* no EOC */
- der_len += 2;
+ /* no EOC */
+ der_len += 2;
- if (der_len == 2)
- {
- warn();
- result = ASN1_DER_ERROR;
- goto cleanup;
- }
- }
- while(1);
- }
- else /* constructed */
- {
- long const_len;
+ if (der_len == 2)
+ {
+ warn ();
+ result = ASN1_DER_ERROR;
+ goto cleanup;
+ }
+ }
+ while (1);
+ }
+ else /* constructed */
+ {
+ long const_len;
- result = asn1_get_length_ber(p, der_len, &len_len);
- if (result < 0)
- {
- warn();
- result = ASN1_DER_ERROR;
- goto cleanup;
- }
+ result = asn1_get_length_ber (p, der_len, &len_len);
+ if (result < 0)
+ {
+ warn ();
+ result = ASN1_DER_ERROR;
+ goto cleanup;
+ }
- DECR_LEN(der_len, len_len);
- p += len_len;
+ DECR_LEN (der_len, len_len);
+ p += len_len;
- const_len = result;
+ const_len = result;
- if (ber_len) *ber_len += len_len;
+ if (ber_len)
+ *ber_len += len_len;
- /* decode the available octet strings */
- while(const_len > 0)
- {
- unsigned tmp_len;
- unsigned flags = DECODE_FLAG_HAVE_TAG;
+ /* decode the available octet strings */
+ while (const_len > 0)
+ {
+ unsigned tmp_len;
+ unsigned flags = DECODE_FLAG_HAVE_TAG;
- if (dflags & DECODE_FLAG_LEVEL1)
- flags |= DECODE_FLAG_LEVEL2;
- else if (dflags & DECODE_FLAG_LEVEL2)
- flags |= DECODE_FLAG_LEVEL3;
- else
+ if (dflags & DECODE_FLAG_LEVEL1)
+ flags |= DECODE_FLAG_LEVEL2;
+ else if (dflags & DECODE_FLAG_LEVEL2)
+ flags |= DECODE_FLAG_LEVEL3;
+ else
flags |= DECODE_FLAG_LEVEL1;
- result = _asn1_decode_simple_ber(etype, p, der_len, &out, &out_len, &tmp_len,
- flags);
- if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ result =
+ _asn1_decode_simple_ber (etype, p, der_len, &out, &out_len,
+ &tmp_len, flags);
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
+ goto cleanup;
+ }
- p += tmp_len;
- DECR_LEN(der_len, tmp_len);
- DECR_LEN(const_len, tmp_len);
+ p += tmp_len;
+ DECR_LEN (der_len, tmp_len);
+ DECR_LEN (const_len, tmp_len);
- if (ber_len) *ber_len += tmp_len;
+ if (ber_len)
+ *ber_len += tmp_len;
- result = append(&total, &total_size, out, out_len);
- if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ result = append (&total, &total_size, out, out_len);
+ if (result != ASN1_SUCCESS)
+ {
+ warn ();
+ goto cleanup;
+ }
- free(out);
- out = NULL;
- }
- }
+ free (out);
+ out = NULL;
+ }
+ }
}
- else if (class == ETYPE_CLASS(etype))
+ else if (class == ETYPE_CLASS (etype))
{
if (ber_len)
- {
- result = asn1_get_length_der (p, der_len, &len_len);
- if (result < 0)
- {
- warn();
- result = ASN1_DER_ERROR;
- goto cleanup;
- }
- *ber_len += result + len_len;
- }
+ {
+ result = asn1_get_length_der (p, der_len, &len_len);
+ if (result < 0)
+ {
+ warn ();
+ result = ASN1_DER_ERROR;
+ goto cleanup;
+ }
+ *ber_len += result + len_len;
+ }
/* non-string values are decoded as DER */
- result = _asn1_decode_simple_der(etype, der, _der_len, &cout, &out_len, dflags);
+ result =
+ _asn1_decode_simple_der (etype, der, _der_len, &cout, &out_len,
+ dflags);
if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ {
+ warn ();
+ goto cleanup;
+ }
- result = append(&total, &total_size, cout, out_len);
+ result = append (&total, &total_size, cout, out_len);
if (result != ASN1_SUCCESS)
- {
- warn();
- goto cleanup;
- }
+ {
+ warn ();
+ goto cleanup;
+ }
}
else
{
- warn();
+ warn ();
result = ASN1_DER_ERROR;
goto cleanup;
}
@@ -2449,8 +2471,8 @@
return ASN1_SUCCESS;
cleanup:
- free(out);
- free(total);
+ free (out);
+ free (total);
return result;
}
@@ -2474,5 +2496,6 @@
unsigned int _der_len, unsigned char **str,
unsigned int *str_len, unsigned int *ber_len)
{
- return _asn1_decode_simple_ber(etype, der, _der_len, str, str_len, ber_len, DECODE_FLAG_HAVE_TAG);
+ return _asn1_decode_simple_ber (etype, der, _der_len, str, str_len, ber_len,
+ DECODE_FLAG_HAVE_TAG);
}
diff --git a/lib/element.c b/lib/element.c
index 550fdb2..86e64f2 100644
--- a/lib/element.c
+++ b/lib/element.c
@@ -115,7 +115,7 @@
if (value_out != NULL)
{
for (k2 = k; k2 < SIZEOF_UNSIGNED_LONG_INT; k2++)
- value_out[k2 - k] = val[k2];
+ value_out[k2 - k] = val[k2];
}
#if 0
@@ -142,7 +142,7 @@
_asn1_append_sequence_set (asn1_node node, struct node_tail_cache_st *pcache)
{
asn1_node p, p2;
- char temp[LTOSTR_MAX_SIZE+1];
+ char temp[LTOSTR_MAX_SIZE + 1];
long n;
if (!node || !(node->down))
@@ -160,9 +160,9 @@
if (pcache == NULL || pcache->tail == NULL || pcache->head != node)
{
while (p->right)
- {
- p = p->right;
- }
+ {
+ p = p->right;
+ }
}
else
{
@@ -321,7 +321,8 @@
type = type_field (node->type);
- if ((type == ASN1_ETYPE_SEQUENCE_OF || type == ASN1_ETYPE_SET_OF) && (value == NULL) && (len == 0))
+ if ((type == ASN1_ETYPE_SEQUENCE_OF || type == ASN1_ETYPE_SET_OF)
+ && (value == NULL) && (len == 0))
{
p = node->down;
while ((type_field (p->type) == ASN1_ETYPE_TAG)
@@ -757,7 +758,8 @@
* this function may return %ASN1_SUCCESS even if the provided @len is zero.
**/
int
-asn1_read_value (asn1_node_const root, const char *name, void *ivalue, int *len)
+asn1_read_value (asn1_node_const root, const char *name, void *ivalue,
+ int *len)
{
return asn1_read_value_type (root, name, ivalue, len, NULL);
}
@@ -894,8 +896,8 @@
|| (p->value[0] == '+'))
{
result = _asn1_convert_integer
- (p->value, value, value_size, len);
- if (result != ASN1_SUCCESS)
+ (p->value, value, value_size, len);
+ if (result != ASN1_SUCCESS)
return result;
}
else
@@ -908,8 +910,7 @@
if (!_asn1_strcmp (p2->name, p->value))
{
result = _asn1_convert_integer
- (p2->value, value, value_size,
- len);
+ (p2->value, value, value_size, len);
if (result != ASN1_SUCCESS)
return result;
break;
@@ -923,9 +924,8 @@
{
len2 = -1;
result = asn1_get_octet_der
- (node->value, node->value_len, &len2, value, value_size,
- len);
- if (result != ASN1_SUCCESS)
+ (node->value, node->value_len, &len2, value, value_size, len);
+ if (result != ASN1_SUCCESS)
return result;
}
break;
@@ -978,16 +978,14 @@
case ASN1_ETYPE_VISIBLE_STRING:
len2 = -1;
result = asn1_get_octet_der
- (node->value, node->value_len, &len2, value, value_size,
- len);
+ (node->value, node->value_len, &len2, value, value_size, len);
if (result != ASN1_SUCCESS)
return result;
break;
case ASN1_ETYPE_BIT_STRING:
len2 = -1;
result = asn1_get_bit_der
- (node->value, node->value_len, &len2, value, value_size,
- len);
+ (node->value, node->value_len, &len2, value, value_size, len);
if (result != ASN1_SUCCESS)
return result;
break;
diff --git a/lib/element.h b/lib/element.h
index 717bfaf..4c9a901 100644
--- a/lib/element.h
+++ b/lib/element.h
@@ -20,21 +20,23 @@
*/
#ifndef _ELEMENT_H
-#define _ELEMENT_H
+# define _ELEMENT_H
struct node_tail_cache_st
{
- asn1_node head; /* the first element of the sequence */
- asn1_node tail;
+ asn1_node head; /* the first element of the sequence */
+ asn1_node tail;
};
-int _asn1_append_sequence_set (asn1_node node, struct node_tail_cache_st *pcached);
+int _asn1_append_sequence_set (asn1_node node,
+ struct node_tail_cache_st *pcached);
int _asn1_convert_integer (const unsigned char *value,
unsigned char *value_out,
int value_out_size, int *len);
-void _asn1_hierarchical_name (asn1_node_const node, char *name, int name_size);
+void _asn1_hierarchical_name (asn1_node_const node, char *name,
+ int name_size);
#endif
diff --git a/lib/errors.c b/lib/errors.c
index a3daad4..4dadbd9 100644
--- a/lib/errors.c
+++ b/lib/errors.c
@@ -21,7 +21,7 @@
#include <int.h>
#ifdef STDC_HEADERS
-#include <stdarg.h>
+# include <stdarg.h>
#endif
#define LIBTASN1_ERROR_ENTRY(name) { #name, name }
diff --git a/lib/gstr.h b/lib/gstr.h
index e549c77..cd47d14 100644
--- a/lib/gstr.h
+++ b/lib/gstr.h
@@ -26,22 +26,25 @@
const char *src);
void _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src);
-#define Estrcpy(x,y) _asn1_str_cpy(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
-#define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
+# define Estrcpy(x,y) _asn1_str_cpy(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
+# define Estrcat(x,y) _asn1_str_cat(x,ASN1_MAX_ERROR_DESCRIPTION_SIZE,y)
-inline static
-void safe_memset(void *data, int c, size_t size)
+inline static void
+safe_memset (void *data, int c, size_t size)
{
- volatile unsigned volatile_zero = 0;
- volatile char *vdata = (volatile char*)data;
+ volatile unsigned volatile_zero = 0;
+ volatile char *vdata = (volatile char *) data;
- /* This is based on a nice trick for safe memset,
- * sent by David Jacobson in the openssl-dev mailing list.
- */
+ /* This is based on a nice trick for safe memset,
+ * sent by David Jacobson in the openssl-dev mailing list.
+ */
- if (size > 0) do {
- memset(data, c, size);
- } while(vdata[volatile_zero] != c);
+ if (size > 0)
+ do
+ {
+ memset (data, c, size);
+ }
+ while (vdata[volatile_zero] != c);
}
#endif /* GSTR_H */
diff --git a/lib/includes/libtasn1.h.in b/lib/includes/libtasn1.h.in
index 97a01c1..94a1881 100644
--- a/lib/includes/libtasn1.h.in
+++ b/lib/includes/libtasn1.h.in
@@ -32,148 +32,148 @@
#ifndef LIBTASN1_H
-#define LIBTASN1_H
+# define LIBTASN1_H
-#ifndef ASN1_API
-#if defined ASN1_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
-#define ASN1_API __attribute__((__visibility__("default")))
-#elif defined ASN1_BUILDING && defined _MSC_VER && ! defined ASN1_STATIC
-#define ASN1_API __declspec(dllexport)
-#elif defined _MSC_VER && ! defined ASN1_STATIC
-#define ASN1_API __declspec(dllimport)
-#else
-#define ASN1_API
-#endif
-#endif
+# ifndef ASN1_API
+# if defined ASN1_BUILDING && defined HAVE_VISIBILITY && HAVE_VISIBILITY
+# define ASN1_API __attribute__((__visibility__("default")))
+# elif defined ASN1_BUILDING && defined _MSC_VER && ! defined ASN1_STATIC
+# define ASN1_API __declspec(dllexport)
+# elif defined _MSC_VER && ! defined ASN1_STATIC
+# define ASN1_API __declspec(dllimport)
+# else
+# define ASN1_API
+# endif
+# endif
-#ifdef __GNUC__
-# define __LIBTASN1_CONST__ __attribute__((const))
-# define __LIBTASN1_PURE__ __attribute__((pure))
-#else
-# define __LIBTASN1_CONST__
-# define __LIBTASN1_PURE__
-#endif
+# ifdef __GNUC__
+# define __LIBTASN1_CONST__ __attribute__((const))
+# define __LIBTASN1_PURE__ __attribute__((pure))
+# else
+# define __LIBTASN1_CONST__
+# define __LIBTASN1_PURE__
+# endif
-#include <sys/types.h>
-#include <time.h>
-#include <stdio.h> /* for FILE* */
+# include <sys/types.h>
+# include <time.h>
+# include <stdio.h> /* for FILE* */
-#ifdef __cplusplus
+# ifdef __cplusplus
extern "C"
{
-#endif
+# endif
/**
* ASN1_VERSION:
*
* Version of the library as a string.
*/
-#define ASN1_VERSION "@VERSION@"
+# define ASN1_VERSION "@VERSION@"
/**
* ASN1_VERSION_MAJOR:
*
* Major version number of the library.
*/
-#define ASN1_VERSION_MAJOR @MAJOR_VERSION@
+# define ASN1_VERSION_MAJOR @MAJOR_VERSION@
/**
* ASN1_VERSION_MINOR:
*
* Minor version number of the library.
*/
-#define ASN1_VERSION_MINOR @MINOR_VERSION@
+# define ASN1_VERSION_MINOR @MINOR_VERSION@
/**
* ASN1_VERSION_PATCH:
*
* Patch version number of the library.
*/
-#define ASN1_VERSION_PATCH @PATCH_VERSION@
+# define ASN1_VERSION_PATCH @PATCH_VERSION@
/**
* ASN1_VERSION_NUMBER:
*
* Version number of the library as a number.
*/
-#define ASN1_VERSION_NUMBER @NUMBER_VERSION@
+# define ASN1_VERSION_NUMBER @NUMBER_VERSION@
-#if defined __GNUC__ && !defined ASN1_INTERNAL_BUILD
-# define _ASN1_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-# if _ASN1_GCC_VERSION >= 30100
-# define _ASN1_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
+# if defined __GNUC__ && !defined ASN1_INTERNAL_BUILD
+# define _ASN1_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+# if _ASN1_GCC_VERSION >= 30100
+# define _ASN1_GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__))
+# endif
# endif
-#endif
-#ifndef _ASN1_GCC_ATTR_DEPRECATED
-#define _ASN1_GCC_ATTR_DEPRECATED
-#endif
+# ifndef _ASN1_GCC_ATTR_DEPRECATED
+# define _ASN1_GCC_ATTR_DEPRECATED
+# endif
/*****************************************/
/* Errors returned by libtasn1 functions */
/*****************************************/
-#define ASN1_SUCCESS 0
-#define ASN1_FILE_NOT_FOUND 1
-#define ASN1_ELEMENT_NOT_FOUND 2
-#define ASN1_IDENTIFIER_NOT_FOUND 3
-#define ASN1_DER_ERROR 4
-#define ASN1_VALUE_NOT_FOUND 5
-#define ASN1_GENERIC_ERROR 6
-#define ASN1_VALUE_NOT_VALID 7
-#define ASN1_TAG_ERROR 8
-#define ASN1_TAG_IMPLICIT 9
-#define ASN1_ERROR_TYPE_ANY 10
-#define ASN1_SYNTAX_ERROR 11
-#define ASN1_MEM_ERROR 12
-#define ASN1_MEM_ALLOC_ERROR 13
-#define ASN1_DER_OVERFLOW 14
-#define ASN1_NAME_TOO_LONG 15
-#define ASN1_ARRAY_ERROR 16
-#define ASN1_ELEMENT_NOT_EMPTY 17
-#define ASN1_TIME_ENCODING_ERROR 18
-#define ASN1_RECURSION 19
+# define ASN1_SUCCESS 0
+# define ASN1_FILE_NOT_FOUND 1
+# define ASN1_ELEMENT_NOT_FOUND 2
+# define ASN1_IDENTIFIER_NOT_FOUND 3
+# define ASN1_DER_ERROR 4
+# define ASN1_VALUE_NOT_FOUND 5
+# define ASN1_GENERIC_ERROR 6
+# define ASN1_VALUE_NOT_VALID 7
+# define ASN1_TAG_ERROR 8
+# define ASN1_TAG_IMPLICIT 9
+# define ASN1_ERROR_TYPE_ANY 10
+# define ASN1_SYNTAX_ERROR 11
+# define ASN1_MEM_ERROR 12
+# define ASN1_MEM_ALLOC_ERROR 13
+# define ASN1_DER_OVERFLOW 14
+# define ASN1_NAME_TOO_LONG 15
+# define ASN1_ARRAY_ERROR 16
+# define ASN1_ELEMENT_NOT_EMPTY 17
+# define ASN1_TIME_ENCODING_ERROR 18
+# define ASN1_RECURSION 19
/*************************************/
/* Constants used in asn1_visit_tree */
/*************************************/
-#define ASN1_PRINT_NAME 1
-#define ASN1_PRINT_NAME_TYPE 2
-#define ASN1_PRINT_NAME_TYPE_VALUE 3
-#define ASN1_PRINT_ALL 4
+# define ASN1_PRINT_NAME 1
+# define ASN1_PRINT_NAME_TYPE 2
+# define ASN1_PRINT_NAME_TYPE_VALUE 3
+# define ASN1_PRINT_ALL 4
/*****************************************/
/* Constants returned by asn1_read_tag */
/*****************************************/
-#define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */
-#define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */
-#define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */
-#define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */
-#define ASN1_CLASS_STRUCTURED 0x20
+# define ASN1_CLASS_UNIVERSAL 0x00 /* old: 1 */
+# define ASN1_CLASS_APPLICATION 0x40 /* old: 2 */
+# define ASN1_CLASS_CONTEXT_SPECIFIC 0x80 /* old: 3 */
+# define ASN1_CLASS_PRIVATE 0xC0 /* old: 4 */
+# define ASN1_CLASS_STRUCTURED 0x20
/*****************************************/
/* Constants returned by asn1_read_tag */
/*****************************************/
-#define ASN1_TAG_BOOLEAN 0x01
-#define ASN1_TAG_INTEGER 0x02
-#define ASN1_TAG_SEQUENCE 0x10
-#define ASN1_TAG_SET 0x11
-#define ASN1_TAG_OCTET_STRING 0x04
-#define ASN1_TAG_BIT_STRING 0x03
-#define ASN1_TAG_UTCTime 0x17
-#define ASN1_TAG_GENERALIZEDTime 0x18
-#define ASN1_TAG_OBJECT_ID 0x06
-#define ASN1_TAG_ENUMERATED 0x0A
-#define ASN1_TAG_NULL 0x05
-#define ASN1_TAG_GENERALSTRING 0x1B
-#define ASN1_TAG_NUMERIC_STRING 0x12
-#define ASN1_TAG_IA5_STRING 0x16
-#define ASN1_TAG_TELETEX_STRING 0x14
-#define ASN1_TAG_PRINTABLE_STRING 0x13
-#define ASN1_TAG_UNIVERSAL_STRING 0x1C
-#define ASN1_TAG_BMP_STRING 0x1E
-#define ASN1_TAG_UTF8_STRING 0x0C
-#define ASN1_TAG_VISIBLE_STRING 0x1A
+# define ASN1_TAG_BOOLEAN 0x01
+# define ASN1_TAG_INTEGER 0x02
+# define ASN1_TAG_SEQUENCE 0x10
+# define ASN1_TAG_SET 0x11
+# define ASN1_TAG_OCTET_STRING 0x04
+# define ASN1_TAG_BIT_STRING 0x03
+# define ASN1_TAG_UTCTime 0x17
+# define ASN1_TAG_GENERALIZEDTime 0x18
+# define ASN1_TAG_OBJECT_ID 0x06
+# define ASN1_TAG_ENUMERATED 0x0A
+# define ASN1_TAG_NULL 0x05
+# define ASN1_TAG_GENERALSTRING 0x1B
+# define ASN1_TAG_NUMERIC_STRING 0x12
+# define ASN1_TAG_IA5_STRING 0x16
+# define ASN1_TAG_TELETEX_STRING 0x14
+# define ASN1_TAG_PRINTABLE_STRING 0x13
+# define ASN1_TAG_UNIVERSAL_STRING 0x1C
+# define ASN1_TAG_BMP_STRING 0x1E
+# define ASN1_TAG_UTF8_STRING 0x0C
+# define ASN1_TAG_VISIBLE_STRING 0x1A
/**
* asn1_node:
@@ -181,10 +181,10 @@
* Structure definition used for the node of the tree
* that represents an ASN.1 DEFINITION.
*/
-typedef struct asn1_node_st asn1_node_st;
+ typedef struct asn1_node_st asn1_node_st;
-typedef asn1_node_st *asn1_node;
-typedef const asn1_node_st *asn1_node_const;
+ typedef asn1_node_st *asn1_node;
+ typedef const asn1_node_st *asn1_node_const;
/**
* ASN1_MAX_NAME_SIZE:
@@ -192,7 +192,7 @@
* Maximum number of characters of a name
* inside a file with ASN1 definitions.
*/
-#define ASN1_MAX_NAME_SIZE 64
+# define ASN1_MAX_NAME_SIZE 64
/**
@@ -203,46 +203,46 @@
*
* For the on-disk format of ASN.1 trees, created by asn1_parser2array().
*/
-typedef struct asn1_static_node_st
-{
- const char *name; /* Node name */
- unsigned int type; /* Node type */
- const void *value; /* Node value */
-} asn1_static_node;
+ typedef struct asn1_static_node_st
+ {
+ const char *name; /* Node name */
+ unsigned int type; /* Node type */
+ const void *value; /* Node value */
+ } asn1_static_node;
/* List of constants for field type of asn1_static_node */
-#define ASN1_ETYPE_INVALID 0
-#define ASN1_ETYPE_CONSTANT 1
-#define ASN1_ETYPE_IDENTIFIER 2
-#define ASN1_ETYPE_INTEGER 3
-#define ASN1_ETYPE_BOOLEAN 4
-#define ASN1_ETYPE_SEQUENCE 5
-#define ASN1_ETYPE_BIT_STRING 6
-#define ASN1_ETYPE_OCTET_STRING 7
-#define ASN1_ETYPE_TAG 8
-#define ASN1_ETYPE_DEFAULT 9
-#define ASN1_ETYPE_SIZE 10
-#define ASN1_ETYPE_SEQUENCE_OF 11
-#define ASN1_ETYPE_OBJECT_ID 12
-#define ASN1_ETYPE_ANY 13
-#define ASN1_ETYPE_SET 14
-#define ASN1_ETYPE_SET_OF 15
-#define ASN1_ETYPE_DEFINITIONS 16
-#define ASN1_ETYPE_CHOICE 18
-#define ASN1_ETYPE_IMPORTS 19
-#define ASN1_ETYPE_NULL 20
-#define ASN1_ETYPE_ENUMERATED 21
-#define ASN1_ETYPE_GENERALSTRING 27
-#define ASN1_ETYPE_NUMERIC_STRING 28
-#define ASN1_ETYPE_IA5_STRING 29
-#define ASN1_ETYPE_TELETEX_STRING 30
-#define ASN1_ETYPE_PRINTABLE_STRING 31
-#define ASN1_ETYPE_UNIVERSAL_STRING 32
-#define ASN1_ETYPE_BMP_STRING 33
-#define ASN1_ETYPE_UTF8_STRING 34
-#define ASN1_ETYPE_VISIBLE_STRING 35
-#define ASN1_ETYPE_UTC_TIME 36
-#define ASN1_ETYPE_GENERALIZED_TIME 37
+# define ASN1_ETYPE_INVALID 0
+# define ASN1_ETYPE_CONSTANT 1
+# define ASN1_ETYPE_IDENTIFIER 2
+# define ASN1_ETYPE_INTEGER 3
+# define ASN1_ETYPE_BOOLEAN 4
+# define ASN1_ETYPE_SEQUENCE 5
+# define ASN1_ETYPE_BIT_STRING 6
+# define ASN1_ETYPE_OCTET_STRING 7
+# define ASN1_ETYPE_TAG 8
+# define ASN1_ETYPE_DEFAULT 9
+# define ASN1_ETYPE_SIZE 10
+# define ASN1_ETYPE_SEQUENCE_OF 11
+# define ASN1_ETYPE_OBJECT_ID 12
+# define ASN1_ETYPE_ANY 13
+# define ASN1_ETYPE_SET 14
+# define ASN1_ETYPE_SET_OF 15
+# define ASN1_ETYPE_DEFINITIONS 16
+# define ASN1_ETYPE_CHOICE 18
+# define ASN1_ETYPE_IMPORTS 19
+# define ASN1_ETYPE_NULL 20
+# define ASN1_ETYPE_ENUMERATED 21
+# define ASN1_ETYPE_GENERALSTRING 27
+# define ASN1_ETYPE_NUMERIC_STRING 28
+# define ASN1_ETYPE_IA5_STRING 29
+# define ASN1_ETYPE_TELETEX_STRING 30
+# define ASN1_ETYPE_PRINTABLE_STRING 31
+# define ASN1_ETYPE_UNIVERSAL_STRING 32
+# define ASN1_ETYPE_BMP_STRING 33
+# define ASN1_ETYPE_UTF8_STRING 34
+# define ASN1_ETYPE_VISIBLE_STRING 35
+# define ASN1_ETYPE_UTC_TIME 36
+# define ASN1_ETYPE_GENERALIZED_TIME 37
/**
* ASN1_DELETE_FLAG_ZEROIZE:
@@ -251,7 +251,7 @@
*
* Zeroize values prior to deinitialization.
*/
-#define ASN1_DELETE_FLAG_ZEROIZE 1
+# define ASN1_DELETE_FLAG_ZEROIZE 1
/**
* ASN1_DECODE_FLAG_ALLOW_PADDING:
@@ -260,7 +260,7 @@
*
* This flag would allow arbitrary data past the DER data.
*/
-#define ASN1_DECODE_FLAG_ALLOW_PADDING 1
+# define ASN1_DECODE_FLAG_ALLOW_PADDING 1
/**
* ASN1_DECODE_FLAG_STRICT_DER:
*
@@ -268,7 +268,7 @@
*
* This flag would ensure that no BER decoding takes place.
*/
-#define ASN1_DECODE_FLAG_STRICT_DER (1<<1)
+# define ASN1_DECODE_FLAG_STRICT_DER (1<<1)
/**
* ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME:
*
@@ -276,7 +276,7 @@
*
* This flag will tolerate Time encoding errors when in strict DER.
*/
-#define ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME (1<<2)
+# define ASN1_DECODE_FLAG_ALLOW_INCORRECT_TIME (1<<2)
/**
@@ -288,14 +288,14 @@
*
* Data node inside a #asn1_node structure.
*/
-struct asn1_data_node_st
-{
- const char *name; /* Node name */
- const void *value; /* Node value */
- unsigned int value_len; /* Node value size */
- unsigned int type; /* Node value type (ASN1_ETYPE_*) */
-};
-typedef struct asn1_data_node_st asn1_data_node_st;
+ struct asn1_data_node_st
+ {
+ const char *name; /* Node name */
+ const void *value; /* Node value */
+ unsigned int value_len; /* Node value size */
+ unsigned int type; /* Node value type (ASN1_ETYPE_*) */
+ };
+ typedef struct asn1_data_node_st asn1_data_node_st;
/***********************************/
/* Fixed constants */
@@ -308,181 +308,183 @@
* of a description message
* (null character included).
*/
-#define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128
+# define ASN1_MAX_ERROR_DESCRIPTION_SIZE 128
/***********************************/
/* Functions definitions */
/***********************************/
-extern ASN1_API int
- asn1_parser2tree (const char *file,
+ extern ASN1_API int
+ asn1_parser2tree (const char *file,
asn1_node * definitions, char *error_desc);
-extern ASN1_API int
- asn1_parser2array (const char *inputFileName,
+ extern ASN1_API int
+ asn1_parser2array (const char *inputFileName,
const char *outputFileName,
const char *vectorName, char *error_desc);
-extern ASN1_API int
- asn1_array2tree (const asn1_static_node * array,
+ extern ASN1_API int
+ asn1_array2tree (const asn1_static_node * array,
asn1_node * definitions, char *errorDescription);
-extern ASN1_API void
- asn1_print_structure (FILE * out, asn1_node_const structure,
+ extern ASN1_API void
+ asn1_print_structure (FILE * out, asn1_node_const structure,
const char *name, int mode);
-extern ASN1_API int
- asn1_create_element (asn1_node_const definitions,
+ extern ASN1_API int
+ asn1_create_element (asn1_node_const definitions,
const char *source_name, asn1_node * element);
-extern ASN1_API int asn1_delete_structure (asn1_node * structure);
+ extern ASN1_API int asn1_delete_structure (asn1_node * structure);
-extern ASN1_API int asn1_delete_structure2 (asn1_node * structure, unsigned int flags);
+ extern ASN1_API int asn1_delete_structure2 (asn1_node * structure,
+ unsigned int flags);
-extern ASN1_API int
- asn1_delete_element (asn1_node structure, const char *element_name);
+ extern ASN1_API int
+ asn1_delete_element (asn1_node structure, const char *element_name);
-extern ASN1_API int
- asn1_write_value (asn1_node node_root, const char *name,
+ extern ASN1_API int
+ asn1_write_value (asn1_node node_root, const char *name,
const void *ivalue, int len);
-extern ASN1_API int
- asn1_read_value (asn1_node_const root, const char *name,
+ extern ASN1_API int
+ asn1_read_value (asn1_node_const root, const char *name,
void *ivalue, int *len);
-extern ASN1_API int
- asn1_read_value_type (asn1_node_const root, const char *name,
+ extern ASN1_API int
+ asn1_read_value_type (asn1_node_const root, const char *name,
void *ivalue, int *len, unsigned int *etype);
-extern ASN1_API int
- asn1_read_node_value (asn1_node_const node, asn1_data_node_st * data);
+ extern ASN1_API int
+ asn1_read_node_value (asn1_node_const node, asn1_data_node_st * data);
-extern ASN1_API int
- asn1_number_of_elements (asn1_node_const element, const char *name, int *num);
+ extern ASN1_API int
+ asn1_number_of_elements (asn1_node_const element, const char *name,
+ int *num);
-extern ASN1_API int
- asn1_der_coding (asn1_node_const element, const char *name,
+ extern ASN1_API int
+ asn1_der_coding (asn1_node_const element, const char *name,
void *ider, int *len, char *ErrorDescription);
-extern ASN1_API int
- asn1_der_decoding2 (asn1_node *element, const void *ider,
+ extern ASN1_API int
+ asn1_der_decoding2 (asn1_node * element, const void *ider,
int *max_ider_len, unsigned int flags,
char *errorDescription);
-extern ASN1_API int
- asn1_der_decoding (asn1_node * element, const void *ider,
+ extern ASN1_API int
+ asn1_der_decoding (asn1_node * element, const void *ider,
int ider_len, char *errorDescription);
/* Do not use. Use asn1_der_decoding() instead. */
-extern ASN1_API int
- asn1_der_decoding_element (asn1_node * structure,
+ extern ASN1_API int
+ asn1_der_decoding_element (asn1_node * structure,
const char *elementName,
const void *ider, int len,
- char *errorDescription) _ASN1_GCC_ATTR_DEPRECATED;
+ char *errorDescription)
+ _ASN1_GCC_ATTR_DEPRECATED;
-extern ASN1_API int
- asn1_der_decoding_startEnd (asn1_node element,
+ extern ASN1_API int
+ asn1_der_decoding_startEnd (asn1_node element,
const void *ider, int ider_len,
const char *name_element,
int *start, int *end);
-extern ASN1_API int
- asn1_expand_any_defined_by (asn1_node_const definitions, asn1_node * element);
+ extern ASN1_API int
+ asn1_expand_any_defined_by (asn1_node_const definitions,
+ asn1_node * element);
-extern ASN1_API int
- asn1_expand_octet_string (asn1_node_const definitions,
+ extern ASN1_API int
+ asn1_expand_octet_string (asn1_node_const definitions,
asn1_node * element,
const char *octetName, const char *objectName);
-extern ASN1_API int
- asn1_read_tag (asn1_node_const root, const char *name,
+ extern ASN1_API int
+ asn1_read_tag (asn1_node_const root, const char *name,
int *tagValue, int *classValue);
-extern ASN1_API const char *asn1_find_structure_from_oid (asn1_node_const
+ extern ASN1_API const char *asn1_find_structure_from_oid (asn1_node_const
definitions,
const char
*oidValue);
-__LIBTASN1_PURE__
-extern ASN1_API const char *asn1_check_version (const char *req_version);
+ __LIBTASN1_PURE__
+ extern ASN1_API const char *asn1_check_version (const char *req_version);
-__LIBTASN1_PURE__
-extern ASN1_API const char *asn1_strerror (int error);
+ __LIBTASN1_PURE__ extern ASN1_API const char *asn1_strerror (int error);
-extern ASN1_API void asn1_perror (int error);
+ extern ASN1_API void asn1_perror (int error);
-#define ASN1_MAX_TAG_SIZE 4
-#define ASN1_MAX_LENGTH_SIZE 9
-#define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE)
-extern ASN1_API long
- asn1_get_length_der (const unsigned char *der, int der_len, int *len);
+# define ASN1_MAX_TAG_SIZE 4
+# define ASN1_MAX_LENGTH_SIZE 9
+# define ASN1_MAX_TL_SIZE (ASN1_MAX_TAG_SIZE+ASN1_MAX_LENGTH_SIZE)
+ extern ASN1_API long
+ asn1_get_length_der (const unsigned char *der, int der_len, int *len);
-extern ASN1_API long
- asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len);
+ extern ASN1_API long
+ asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len);
-extern ASN1_API void
- asn1_length_der (unsigned long int len, unsigned char *der, int *der_len);
+ extern ASN1_API void
+ asn1_length_der (unsigned long int len, unsigned char *der, int *der_len);
/* Other utility functions. */
-extern ASN1_API
- int asn1_decode_simple_der (unsigned int etype, const unsigned char *der,
+ extern ASN1_API
+ int asn1_decode_simple_der (unsigned int etype, const unsigned char *der,
unsigned int _der_len,
const unsigned char **str,
unsigned int *str_len);
-extern ASN1_API
- int asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
+ extern ASN1_API
+ int asn1_decode_simple_ber (unsigned int etype, const unsigned char *der,
unsigned int _der_len,
unsigned char **str,
- unsigned int *str_len,
- unsigned int *ber_len);
+ unsigned int *str_len, unsigned int *ber_len);
-extern ASN1_API int
- asn1_encode_simple_der (unsigned int etype, const unsigned char *str,
+ extern ASN1_API int
+ asn1_encode_simple_der (unsigned int etype, const unsigned char *str,
unsigned int str_len, unsigned char *tl,
unsigned int *tl_len);
-extern ASN1_API asn1_node
- asn1_find_node (asn1_node_const pointer, const char *name);
+ extern ASN1_API asn1_node
+ asn1_find_node (asn1_node_const pointer, const char *name);
-extern ASN1_API int
- asn1_copy_node (asn1_node dst, const char *dst_name,
+ extern ASN1_API int
+ asn1_copy_node (asn1_node dst, const char *dst_name,
asn1_node_const src, const char *src_name);
-extern ASN1_API asn1_node
- asn1_dup_node (asn1_node_const src, const char *src_name);
+ extern ASN1_API asn1_node
+ asn1_dup_node (asn1_node_const src, const char *src_name);
/* Internal and low-level DER utility functions. */
-extern ASN1_API int
- asn1_get_tag_der (const unsigned char *der, int der_len,
+ extern ASN1_API int
+ asn1_get_tag_der (const unsigned char *der, int der_len,
unsigned char *cls, int *len, unsigned long *tag);
-extern ASN1_API void
- asn1_octet_der (const unsigned char *str, int str_len,
+ extern ASN1_API void
+ asn1_octet_der (const unsigned char *str, int str_len,
unsigned char *der, int *der_len);
-extern ASN1_API int
- asn1_get_octet_der (const unsigned char *der, int der_len,
+ extern ASN1_API int
+ asn1_get_octet_der (const unsigned char *der, int der_len,
int *ret_len, unsigned char *str,
int str_size, int *str_len);
-extern ASN1_API void asn1_bit_der (const unsigned char *str, int bit_len,
+ extern ASN1_API void asn1_bit_der (const unsigned char *str, int bit_len,
unsigned char *der, int *der_len);
-extern ASN1_API int
- asn1_get_bit_der (const unsigned char *der, int der_len,
+ extern ASN1_API int
+ asn1_get_bit_der (const unsigned char *der, int der_len,
int *ret_len, unsigned char *str,
int str_size, int *bit_len);
-extern ASN1_API int
- asn1_get_object_id_der (const unsigned char *der,
- int der_len, int *ret_len,
- char *str, int str_size);
+ extern ASN1_API int
+ asn1_get_object_id_der (const unsigned char *der,
+ int der_len, int *ret_len,
+ char *str, int str_size);
-extern ASN1_API int
- asn1_object_id_der (const char *str, unsigned char *der, int *der_len,
- unsigned flags);
+ extern ASN1_API int
+ asn1_object_id_der (const char *str, unsigned char *der, int *der_len,
+ unsigned flags);
/* Compatibility types */
@@ -493,7 +495,7 @@
*
* Deprecated: 3.0: Use int instead.
*/
-typedef int asn1_retCode _ASN1_GCC_ATTR_DEPRECATED;
+ typedef int asn1_retCode _ASN1_GCC_ATTR_DEPRECATED;
/**
* node_asn_struct:
@@ -502,13 +504,13 @@
*
* Deprecated: 3.0: Use #asn1_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define node_asn_struct _Pragma ("GCC warning \"'node_asn_struct' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
-#else
-#define node_asn_struct asn1_node_st
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define node_asn_struct _Pragma ("GCC warning \"'node_asn_struct' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
+# else
+# define node_asn_struct asn1_node_st
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* node_asn:
@@ -517,13 +519,13 @@
*
* Deprecated: 3.0: Use #asn1_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define node_asn _Pragma ("GCC warning \"'node_asn' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
-#else
-#define node_asn asn1_node_st
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define node_asn _Pragma ("GCC warning \"'node_asn' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
+# else
+# define node_asn asn1_node_st
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* ASN1_TYPE:
@@ -532,13 +534,13 @@
*
* Deprecated: 3.0: Use #asn1_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define ASN1_TYPE _Pragma ("GCC warning \"'ASN1_TYPE' macro is deprecated, use 'asn1_node' instead.\"") asn1_node
-#else
-#define ASN1_TYPE asn1_node
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define ASN1_TYPE _Pragma ("GCC warning \"'ASN1_TYPE' macro is deprecated, use 'asn1_node' instead.\"") asn1_node
+# else
+# define ASN1_TYPE asn1_node
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* ASN1_TYPE_EMPTY:
@@ -547,13 +549,13 @@
*
* Deprecated: 3.0: Use NULL instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define ASN1_TYPE_EMPTY _Pragma ("GCC warning \"'ASN1_TYPE_EMPTY' macro is deprecated, use 'NULL' instead.\"") NULL
-#else
-#define ASN1_TYPE_EMPTY NULL
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define ASN1_TYPE_EMPTY _Pragma ("GCC warning \"'ASN1_TYPE_EMPTY' macro is deprecated, use 'NULL' instead.\"") NULL
+# else
+# define ASN1_TYPE_EMPTY NULL
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* static_struct_asn:
@@ -562,13 +564,13 @@
*
* Deprecated: 3.0: Use #asn1_static_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define static_struct_asn _Pragma ("GCC warning \"'static_struct_asn' macro is deprecated, use 'asn1_static_node_st' instead.\"") asn1_static_node_st
-#else
-#define static_struct_asn asn1_static_node_st
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define static_struct_asn _Pragma ("GCC warning \"'static_struct_asn' macro is deprecated, use 'asn1_static_node_st' instead.\"") asn1_static_node_st
+# else
+# define static_struct_asn asn1_static_node_st
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* ASN1_ARRAY_TYPE:
@@ -577,13 +579,13 @@
*
* Deprecated: 3.0: Use #asn1_static_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define ASN1_ARRAY_TYPE _Pragma ("GCC warning \"'ASN1_ARRAY_TYPE' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
-#else
-#define ASN1_ARRAY_TYPE asn1_static_node
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define ASN1_ARRAY_TYPE _Pragma ("GCC warning \"'ASN1_ARRAY_TYPE' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
+# else
+# define ASN1_ARRAY_TYPE asn1_static_node
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* asn1_static_node_t:
@@ -592,13 +594,13 @@
*
* Deprecated: 3.0: Use #asn1_static_node instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define asn1_static_node_t _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
-#else
-#define asn1_static_node_t asn1_static_node
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define asn1_static_node_t _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
+# else
+# define asn1_static_node_t asn1_static_node
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* node_data_struct:
@@ -607,13 +609,13 @@
*
* Deprecated: 3.0: Use #asn1_data_node_st instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define node_data_struct _Pragma ("GCC warning \"'node_data_struct' macro is deprecated, use 'asn1_data_node_st' instead.\"") asn1_data_node_st
-#else
-#define node_data_struct asn1_data_node_st
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define node_data_struct _Pragma ("GCC warning \"'node_data_struct' macro is deprecated, use 'asn1_data_node_st' instead.\"") asn1_data_node_st
+# else
+# define node_data_struct asn1_data_node_st
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
/**
* ASN1_DATA_NODE:
@@ -622,16 +624,16 @@
*
* Deprecated: 3.0: Use #asn1_data_node_st instead.
*/
-#ifndef ASN1_DISABLE_DEPRECATED
-#if _ASN1_GCC_VERSION >= 30100
-#define ASN1_DATA_NODE _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_data_node_st
-#else
-#define ASN1_DATA_NODE asn1_data_node_st
-#endif
-#endif /* !ASN1_DISABLE_DEPRECATED */
+# ifndef ASN1_DISABLE_DEPRECATED
+# if _ASN1_GCC_VERSION >= 30100
+# define ASN1_DATA_NODE _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_data_node_st
+# else
+# define ASN1_DATA_NODE asn1_data_node_st
+# endif
+# endif /* !ASN1_DISABLE_DEPRECATED */
-#ifdef __cplusplus
+# ifdef __cplusplus
}
-#endif
+# endif
#endif /* LIBTASN1_H */
diff --git a/lib/int.h b/lib/int.h
index 57f1efd..404cd15 100644
--- a/lib/int.h
+++ b/lib/int.h
@@ -20,24 +20,24 @@
*/
#ifndef INT_H
-#define INT_H
+# define INT_H
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+# ifdef HAVE_CONFIG_H
+# include <config.h>
+# endif
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
+# include <string.h>
+# include <stdlib.h>
+# include <stdio.h>
+# include <stdint.h>
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
+# ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+# endif
-#include <libtasn1.h>
+# include <libtasn1.h>
-#define ASN1_SMALL_VALUE_SIZE 16
+# define ASN1_SMALL_VALUE_SIZE 16
/* This structure is also in libtasn1.h, but then contains less
fields. You cannot make any modifications to these first fields
@@ -58,8 +58,8 @@
/* values used during decoding/coding */
int tmp_ival;
- unsigned start; /* the start of the DER sequence - if decoded */
- unsigned end; /* the end of the DER sequence - if decoded */
+ unsigned start; /* the start of the DER sequence - if decoded */
+ unsigned end; /* the end of the DER sequence - if decoded */
};
typedef struct tag_and_class_st
@@ -70,7 +70,7 @@
} tag_and_class_st;
/* the types that are handled in _asn1_tags */
-#define CASE_HANDLED_ETYPES \
+# define CASE_HANDLED_ETYPES \
case ASN1_ETYPE_NULL: \
case ASN1_ETYPE_BOOLEAN: \
case ASN1_ETYPE_INTEGER: \
@@ -94,13 +94,13 @@
case ASN1_ETYPE_GENERALIZED_TIME: \
case ASN1_ETYPE_SET_OF
-#define ETYPE_TAG(etype) (_asn1_tags[etype].tag)
-#define ETYPE_CLASS(etype) (_asn1_tags[etype].class)
-#define ETYPE_OK(etype) (((etype) != ASN1_ETYPE_INVALID && \
+# define ETYPE_TAG(etype) (_asn1_tags[etype].tag)
+# define ETYPE_CLASS(etype) (_asn1_tags[etype].class)
+# define ETYPE_OK(etype) (((etype) != ASN1_ETYPE_INVALID && \
(etype) <= _asn1_tags_size && \
_asn1_tags[(etype)].desc != NULL)?1:0)
-#define ETYPE_IS_STRING(etype) ((etype == ASN1_ETYPE_GENERALSTRING || \
+# define ETYPE_IS_STRING(etype) ((etype == ASN1_ETYPE_GENERALSTRING || \
etype == ASN1_ETYPE_NUMERIC_STRING || etype == ASN1_ETYPE_IA5_STRING || \
etype == ASN1_ETYPE_TELETEX_STRING || etype == ASN1_ETYPE_PRINTABLE_STRING || \
etype == ASN1_ETYPE_UNIVERSAL_STRING || etype == ASN1_ETYPE_BMP_STRING || \
@@ -110,66 +110,66 @@
extern unsigned int _asn1_tags_size;
extern const tag_and_class_st _asn1_tags[];
-#define _asn1_strlen(s) strlen((const char *) s)
-#define _asn1_strtol(n,e,b) strtol((const char *) n, e, b)
-#define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b)
-#define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b)
-#define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
-#define _asn1_strcat(a,b) strcat((char *)a, (const char *)b)
+# define _asn1_strlen(s) strlen((const char *) s)
+# define _asn1_strtol(n,e,b) strtol((const char *) n, e, b)
+# define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b)
+# define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b)
+# define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
+# define _asn1_strcat(a,b) strcat((char *)a, (const char *)b)
-#if SIZEOF_UNSIGNED_LONG_INT == 8
-# define _asn1_strtou64(n,e,b) strtoul((const char *) n, e, b)
-#else
-# define _asn1_strtou64(n,e,b) strtoull((const char *) n, e, b)
-#endif
+# if SIZEOF_UNSIGNED_LONG_INT == 8
+# define _asn1_strtou64(n,e,b) strtoul((const char *) n, e, b)
+# else
+# define _asn1_strtou64(n,e,b) strtoull((const char *) n, e, b)
+# endif
-#define MAX_LOG_SIZE 1024 /* maximum number of characters of a log message */
+# define MAX_LOG_SIZE 1024 /* maximum number of characters of a log message */
/* Define used for visiting trees. */
-#define UP 1
-#define RIGHT 2
-#define DOWN 3
+# define UP 1
+# define RIGHT 2
+# define DOWN 3
/***********************************************************************/
/* List of constants to better specify the type of typedef asn1_node_st. */
/***********************************************************************/
/* Used with TYPE_TAG */
-#define CONST_UNIVERSAL (1U<<8)
-#define CONST_PRIVATE (1U<<9)
-#define CONST_APPLICATION (1U<<10)
-#define CONST_EXPLICIT (1U<<11)
-#define CONST_IMPLICIT (1U<<12)
+# define CONST_UNIVERSAL (1U<<8)
+# define CONST_PRIVATE (1U<<9)
+# define CONST_APPLICATION (1U<<10)
+# define CONST_EXPLICIT (1U<<11)
+# define CONST_IMPLICIT (1U<<12)
-#define CONST_TAG (1U<<13) /* Used in ASN.1 assignement */
-#define CONST_OPTION (1U<<14)
-#define CONST_DEFAULT (1U<<15)
-#define CONST_TRUE (1U<<16)
-#define CONST_FALSE (1U<<17)
+# define CONST_TAG (1U<<13) /* Used in ASN.1 assignement */
+# define CONST_OPTION (1U<<14)
+# define CONST_DEFAULT (1U<<15)
+# define CONST_TRUE (1U<<16)
+# define CONST_FALSE (1U<<17)
-#define CONST_LIST (1U<<18) /* Used with TYPE_INTEGER and TYPE_BIT_STRING */
-#define CONST_MIN_MAX (1U<<19)
+# define CONST_LIST (1U<<18) /* Used with TYPE_INTEGER and TYPE_BIT_STRING */
+# define CONST_MIN_MAX (1U<<19)
-#define CONST_1_PARAM (1U<<20)
+# define CONST_1_PARAM (1U<<20)
-#define CONST_SIZE (1U<<21)
+# define CONST_SIZE (1U<<21)
-#define CONST_DEFINED_BY (1U<<22)
+# define CONST_DEFINED_BY (1U<<22)
/* Those two are deprecated and used for backwards compatibility */
-#define CONST_GENERALIZED (1U<<23)
-#define CONST_UTC (1U<<24)
+# define CONST_GENERALIZED (1U<<23)
+# define CONST_UTC (1U<<24)
/* #define CONST_IMPORTS (1U<<25) */
-#define CONST_NOT_USED (1U<<26)
-#define CONST_SET (1U<<27)
-#define CONST_ASSIGN (1U<<28)
+# define CONST_NOT_USED (1U<<26)
+# define CONST_SET (1U<<27)
+# define CONST_ASSIGN (1U<<28)
-#define CONST_DOWN (1U<<29)
-#define CONST_RIGHT (1U<<30)
+# define CONST_DOWN (1U<<29)
+# define CONST_RIGHT (1U<<30)
-#define ASN1_ETYPE_TIME 17
+# define ASN1_ETYPE_TIME 17
/****************************************/
/* Returns the first 8 bits. */
/* Used with the field type of asn1_node_st */
@@ -202,18 +202,18 @@
return ntype;
}
-static inline
-void *_asn1_realloc(void *ptr, size_t size)
+static inline void *
+_asn1_realloc (void *ptr, size_t size)
{
void *ret;
if (size == 0)
return ptr;
- ret = realloc(ptr, size);
+ ret = realloc (ptr, size);
if (ret == NULL)
{
- free(ptr);
+ free (ptr);
}
return ret;
}
diff --git a/lib/parser_aux.c b/lib/parser_aux.c
index bb88ab9..c99c5a4 100644
--- a/lib/parser_aux.c
+++ b/lib/parser_aux.c
@@ -19,7 +19,7 @@
* 02110-1301, USA
*/
-#include <limits.h> // WORD_BIT
+#include <limits.h> // WORD_BIT
#include "int.h"
#include "parser_aux.h"
@@ -38,11 +38,9 @@
This implementation has been changed from size_t -> unsigned int. */
#ifdef __clang__
-__attribute__((no_sanitize("integer")))
+__attribute__((no_sanitize ("integer")))
#endif
-_GL_ATTRIBUTE_PURE
-static unsigned int
-_asn1_hash_name (const char *x)
+ _GL_ATTRIBUTE_PURE static unsigned int _asn1_hash_name (const char *x)
{
const unsigned char *s = (unsigned char *) x;
unsigned h = 0;
@@ -64,7 +62,7 @@
/* Return: pointer to the new element. */
/******************************************************/
asn1_node
-_asn1_add_static_node (list_type **e_list, unsigned int type)
+_asn1_add_static_node (list_type ** e_list, unsigned int type)
{
list_type *p;
asn1_node punt;
@@ -89,8 +87,8 @@
return punt;
}
-static
-int _asn1_add_static_node2 (list_type **e_list, asn1_node node)
+static int
+_asn1_add_static_node2 (list_type ** e_list, asn1_node node)
{
list_type *p;
@@ -138,10 +136,10 @@
n_start = name;
if (name[0] == '?' && name[1] == 'C' && p->name[0] == '?')
- { /* ?CURRENT */
- n_start = strchr(n_start, '.');
+ { /* ?CURRENT */
+ n_start = strchr (n_start, '.');
if (n_start)
- n_start++;
+ n_start++;
}
else if (p->name[0] != 0)
{ /* has *pointer got a name ? */
@@ -149,8 +147,8 @@
if (n_end)
{
nsize = n_end - n_start;
- if (nsize >= sizeof(n))
- return NULL;
+ if (nsize >= sizeof (n))
+ return NULL;
memcpy (n, n_start, nsize);
n[nsize] = 0;
@@ -190,8 +188,8 @@
if (n_end)
{
nsize = n_end - n_start;
- if (nsize >= sizeof(n))
- return NULL;
+ if (nsize >= sizeof (n))
+ return NULL;
memcpy (n, n_start, nsize);
n[nsize] = 0;
@@ -212,11 +210,11 @@
p = p->down;
if (p == NULL)
- return NULL;
+ return NULL;
/* The identifier "?LAST" indicates the last element
in the right chain. */
- if (n[0] == '?' && n[1] == 'L') /* ?LAST */
+ if (n[0] == '?' && n[1] == 'L') /* ?LAST */
{
while (p->right)
p = p->right;
@@ -232,7 +230,7 @@
}
}
if (p == NULL)
- return NULL;
+ return NULL;
} /* while */
return (asn1_node) p;
@@ -371,13 +369,13 @@
}
if (prev_len > 0)
- memcpy (node->value, node->small_value, prev_len);
+ memcpy (node->value, node->small_value, prev_len);
memcpy (&node->value[prev_len], value, len);
return node;
}
- else /* if (node->value != NULL && node->value != node->small_value) */
+ else /* if (node->value != NULL && node->value != node->small_value) */
{
/* value is allocated */
int prev_len = node->value_len;
@@ -503,12 +501,12 @@
if (node->value != NULL)
{
if (flags & ASN1_DELETE_FLAG_ZEROIZE)
- {
- safe_memset(node->value, 0, node->value_len);
- }
+ {
+ safe_memset (node->value, 0, node->value_len);
+ }
if (node->value != node->small_value)
- free (node->value);
+ free (node->value);
}
free (node);
}
@@ -536,8 +534,8 @@
return p->left;
}
-static
-unsigned _asn1_is_up (asn1_node_const up_cand, asn1_node_const down)
+static unsigned
+_asn1_is_up (asn1_node_const up_cand, asn1_node_const down)
{
asn1_node_const d, u;
@@ -546,10 +544,10 @@
d = down;
- while ((u = _asn1_find_up(d)) != NULL && u != d)
+ while ((u = _asn1_find_up (d)) != NULL && u != d)
{
if (u == up_cand)
- return 1;
+ return 1;
d = u;
}
@@ -561,14 +559,14 @@
/* Description: deletes the list element given */
/******************************************************************/
void
-_asn1_delete_node_from_list (list_type *list, asn1_node node)
+_asn1_delete_node_from_list (list_type * list, asn1_node node)
{
list_type *p = list;
while (p)
{
if (p->node == node)
- p->node = NULL;
+ p->node = NULL;
p = p->next;
}
}
@@ -579,7 +577,7 @@
/* pointed by them). */
/******************************************************************/
void
-_asn1_delete_list (list_type *e_list)
+_asn1_delete_list (list_type * e_list)
{
list_type *p;
@@ -597,7 +595,7 @@
/* pointed by them. */
/******************************************************************/
void
-_asn1_delete_list_and_nodes (list_type *e_list)
+_asn1_delete_list_and_nodes (list_type * e_list)
{
list_type *p;
@@ -623,7 +621,7 @@
{
str[0] = '-';
start = 1;
- val = -((uint64_t)v);
+ val = -((uint64_t) v);
}
else
{
@@ -640,7 +638,7 @@
count++;
val = d;
}
- while (val && ((start+count) < LTOSTR_MAX_SIZE-1));
+ while (val && ((start + count) < LTOSTR_MAX_SIZE - 1));
for (k = 0; k < count; k++)
str[k + start] = temp[start + count - k - 1];
@@ -729,7 +727,7 @@
/* otherwise ASN1_SUCCESS */
/******************************************************************/
int
-_asn1_expand_object_id (list_type **list, asn1_node node)
+_asn1_expand_object_id (list_type ** list, asn1_node node)
{
asn1_node p, p2, p3, p4, p5;
char name_root[ASN1_MAX_NAME_SIZE], name2[2 * ASN1_MAX_NAME_SIZE + 1];
@@ -759,9 +757,10 @@
{
_asn1_str_cpy (name2, sizeof (name2), name_root);
_asn1_str_cat (name2, sizeof (name2), ".");
- _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
+ _asn1_str_cat (name2, sizeof (name2),
+ (char *) p2->value);
p3 = asn1_find_node (node, name2);
- if (!p3 || _asn1_is_up(p2, p3) ||
+ if (!p3 || _asn1_is_up (p2, p3) ||
(type_field (p3->type) != ASN1_ETYPE_OBJECT_ID) ||
!(p3->type & CONST_ASSIGN))
return ASN1_ELEMENT_NOT_FOUND;
@@ -769,7 +768,7 @@
_asn1_set_down (p, p2->right);
if (p2->down)
_asn1_delete_structure (*list, &p2->down, 0);
- _asn1_delete_node_from_list(*list, p2);
+ _asn1_delete_node_from_list (*list, p2);
_asn1_remove_node (p2, 0);
p2 = p;
p4 = p3->down;
@@ -780,18 +779,18 @@
{
max_constants++;
if (max_constants == MAX_CONSTANTS)
- return ASN1_RECURSION;
+ return ASN1_RECURSION;
p5 =
_asn1_add_single_node (ASN1_ETYPE_CONSTANT);
_asn1_set_name (p5, p4->name);
if (p4->value)
- {
- tlen = _asn1_strlen (p4->value);
- if (tlen > 0)
- _asn1_set_value (p5, p4->value, tlen + 1);
- }
- _asn1_add_static_node2(list, p5);
+ {
+ tlen = _asn1_strlen (p4->value);
+ if (tlen > 0)
+ _asn1_set_value (p5, p4->value, tlen + 1);
+ }
+ _asn1_add_static_node2 (list, p5);
if (p2 == p)
{
@@ -810,8 +809,8 @@
move = DOWN;
tries++;
- if (tries >= EXPAND_OBJECT_ID_MAX_RECURSION)
- return ASN1_RECURSION;
+ if (tries >= EXPAND_OBJECT_ID_MAX_RECURSION)
+ return ASN1_RECURSION;
continue;
}
@@ -1031,7 +1030,9 @@
if (p2 == NULL)
{
if (p->value)
- _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p->value);
+ _asn1_str_cpy (_asn1_identifierMissing,
+ sizeof (_asn1_identifierMissing),
+ (char *) p->value);
else
_asn1_strcpy (_asn1_identifierMissing, "(null)");
return ASN1_IDENTIFIER_NOT_FOUND;
@@ -1045,11 +1046,13 @@
{
_asn1_str_cpy (name2, sizeof (name2), node->name);
if (p2->value)
- {
- _asn1_str_cat (name2, sizeof (name2), ".");
- _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
- _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
- }
+ {
+ _asn1_str_cat (name2, sizeof (name2), ".");
+ _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
+ _asn1_str_cpy (_asn1_identifierMissing,
+ sizeof (_asn1_identifierMissing),
+ (char *) p2->value);
+ }
else
_asn1_strcpy (_asn1_identifierMissing, "(null)");
@@ -1072,7 +1075,9 @@
_asn1_str_cpy (name2, sizeof (name2), node->name);
_asn1_str_cat (name2, sizeof (name2), ".");
_asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
- _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
+ _asn1_str_cpy (_asn1_identifierMissing,
+ sizeof (_asn1_identifierMissing),
+ (char *) p2->value);
p2 = asn1_find_node (node, name2);
if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID)
diff --git a/lib/parser_aux.h b/lib/parser_aux.h
index 0e8621b..b21235e 100644
--- a/lib/parser_aux.h
+++ b/lib/parser_aux.h
@@ -20,7 +20,7 @@
*/
#ifndef _PARSER_AUX_H
-#define _PARSER_AUX_H
+# define _PARSER_AUX_H
/***********************************************/
/* Type: list_type */
@@ -36,13 +36,13 @@
/***************************************/
/* Functions used by ASN.1 parser */
/***************************************/
-asn1_node _asn1_add_static_node (list_type **e_list, unsigned int type);
+asn1_node _asn1_add_static_node (list_type ** e_list, unsigned int type);
-void _asn1_delete_list (list_type *e_list);
+void _asn1_delete_list (list_type * e_list);
-void _asn1_delete_list_and_nodes (list_type *e_list);
+void _asn1_delete_list_and_nodes (list_type * e_list);
-void _asn1_delete_node_from_list (list_type *list, asn1_node node);
+void _asn1_delete_node_from_list (list_type * list, asn1_node node);
asn1_node
_asn1_set_value (asn1_node node, const void *value, unsigned int len);
@@ -66,15 +66,15 @@
void _asn1_remove_node (asn1_node node, unsigned int flags);
/* Max 64-bit integer length is 20 chars + 1 for sign + 1 for null termination */
-#define LTOSTR_MAX_SIZE 22
+# define LTOSTR_MAX_SIZE 22
char *_asn1_ltostr (int64_t v, char str[LTOSTR_MAX_SIZE]);
asn1_node _asn1_find_up (asn1_node_const node);
int _asn1_change_integer_value (asn1_node node);
-#define EXPAND_OBJECT_ID_MAX_RECURSION 16
-int _asn1_expand_object_id (list_type **list, asn1_node node);
+# define EXPAND_OBJECT_ID_MAX_RECURSION 16
+int _asn1_expand_object_id (list_type ** list, asn1_node node);
int _asn1_type_set_config (asn1_node node);
diff --git a/lib/structure.c b/lib/structure.c
index b2be85c..c080220 100644
--- a/lib/structure.c
+++ b/lib/structure.c
@@ -78,8 +78,8 @@
int
-_asn1_create_static_structure (asn1_node_const pointer, char *output_file_name,
- char *vector_name)
+_asn1_create_static_structure (asn1_node_const pointer,
+ char *output_file_name, char *vector_name)
{
FILE *file;
asn1_node_const p;
@@ -208,15 +208,15 @@
if (move == DOWN)
{
if (p_last && p_last->down)
- _asn1_delete_structure (e_list, &p_last->down, 0);
+ _asn1_delete_structure (e_list, &p_last->down, 0);
_asn1_set_down (p_last, p);
}
else if (move == RIGHT)
- {
+ {
if (p_last && p_last->right)
- _asn1_delete_structure (e_list, &p_last->right, 0);
+ _asn1_delete_structure (e_list, &p_last->right, 0);
_asn1_set_right (p_last, p);
- }
+ }
p_last = p;
@@ -314,7 +314,8 @@
}
int
-_asn1_delete_structure (list_type *e_list, asn1_node * structure, unsigned int flags)
+_asn1_delete_structure (list_type * e_list, asn1_node * structure,
+ unsigned int flags)
{
asn1_node p, p2, p3;
@@ -892,7 +893,8 @@
fprintf (out, " value(%i):",
(len - 1) * 8 - (p->value[len2]));
for (k = 1; k < len; k++)
- fprintf (out, "%02x", (unsigned) (p->value)[k + len2]);
+ fprintf (out, "%02x",
+ (unsigned) (p->value)[k + len2]);
}
}
break;
@@ -1114,7 +1116,8 @@
* the OID.
**/
const char *
-asn1_find_structure_from_oid (asn1_node_const definitions, const char *oidValue)
+asn1_find_structure_from_oid (asn1_node_const definitions,
+ const char *oidValue)
{
char name[2 * ASN1_MAX_NAME_SIZE + 2];
char value[ASN1_MAX_NAME_SIZE];
@@ -1135,7 +1138,7 @@
if ((type_field (p->type) == ASN1_ETYPE_OBJECT_ID) &&
(p->type & CONST_ASSIGN))
{
- snprintf(name, sizeof(name), "%s.%s", definitionsName, p->name);
+ snprintf (name, sizeof (name), "%s.%s", definitionsName, p->name);
len = ASN1_MAX_NAME_SIZE;
result = asn1_read_value (definitions, name, value, &len);
@@ -1218,5 +1221,5 @@
asn1_node
asn1_dup_node (asn1_node_const src, const char *src_name)
{
- return _asn1_copy_structure2(src, src_name);
+ return _asn1_copy_structure2 (src, src_name);
}
diff --git a/lib/structure.h b/lib/structure.h
index f06298f..da70ae5 100644
--- a/lib/structure.h
+++ b/lib/structure.h
@@ -26,9 +26,9 @@
/*************************************************/
#ifndef _STRUCTURE_H
-#define _STRUCTURE_H
+# define _STRUCTURE_H
-#include "parser_aux.h" // list_type
+# include "parser_aux.h" // list_type
int _asn1_create_static_structure (asn1_node_const pointer,
char *output_file_name, char *vector_name);
@@ -40,6 +40,7 @@
asn1_node _asn1_find_left (asn1_node_const node);
int
-_asn1_delete_structure (list_type *e_list, asn1_node *structure, unsigned int flags);
+_asn1_delete_structure (list_type * e_list, asn1_node * structure,
+ unsigned int flags);
#endif
diff --git a/lib/version.c b/lib/version.c
index 83e69d8..9949fc4 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -20,7 +20,7 @@
*/
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <string.h> /* for strverscmp */
diff --git a/msvc/snprintf.h b/msvc/snprintf.h
index a26247f..58b585f 100644
--- a/msvc/snprintf.h
+++ b/msvc/snprintf.h
@@ -1,33 +1,32 @@
-#if defined(_MSC_VER) && _MSC_VER <= 1900
-#include <stdarg.h>
-#include <stdio.h>
-
-
-#define snprintf c99_snprintf
-#define vsnprintf c99_vsnprintf
-
-__inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
+#if defined(_MSC_VER) && _MSC_VER <= 1900
+# include <stdarg.h>
+# include <stdio.h>
+# define snprintf c99_snprintf
+# define vsnprintf c99_vsnprintf
+__inline int
+c99_vsnprintf (char *outBuf, size_t size, const char *format, va_list ap)
{
- int count = -1;
+ int count = -1;
- if (size != 0)
- count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
- if (count == -1)
- count = _vscprintf(format, ap);
+ if (size != 0)
+ count = _vsnprintf_s (outBuf, size, _TRUNCATE, format, ap);
+ if (count == -1)
+ count = _vscprintf (format, ap);
- return count;
+ return count;
}
-__inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...)
+__inline int
+c99_snprintf (char *outBuf, size_t size, const char *format, ...)
{
- int count;
- va_list ap;
+ int count;
+ va_list ap;
- va_start(ap, format);
- count = c99_vsnprintf(outBuf, size, format, ap);
- va_end(ap);
+ va_start (ap, format);
+ count = c99_vsnprintf (outBuf, size, format, ap);
+ va_end (ap);
- return count;
+ return count;
}
-#endif
\ No newline at end of file
+#endif
diff --git a/src/asn1Coding.c b/src/asn1Coding.c
index e8927a8..f1869bf 100644
--- a/src/asn1Coding.c
+++ b/src/asn1Coding.c
@@ -34,9 +34,9 @@
/* This feature is available in gcc versions 2.5 and later. */
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
-#define ATTR_NO_RETRUN
+# define ATTR_NO_RETRUN
#else
-#define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
+# define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
#endif
ATTR_NO_RETRUN static void
@@ -114,8 +114,8 @@
strlen (".out"));
if (*outputFileName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
+ fprintf (stderr, "Memory error\n");
+ exit (1);
}
memcpy (*outputFileName, inputFileName, dot_p - inputFileName);
@@ -182,12 +182,12 @@
checkSyntaxOnly = 1;
break;
case 'o': /* OUTPUT */
- assert(optarg != NULL);
- outputFileName = strdup(optarg);
+ assert (optarg != NULL);
+ outputFileName = strdup (optarg);
if (outputFileName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
+ fprintf (stderr, "Memory error\n");
+ exit (1);
}
break;
case '?': /* UNKNOW OPTION */
@@ -200,7 +200,7 @@
default:
fprintf (stderr,
"asn1Coding: ?? getopt returned character code Ox%x ??\n",
- (unsigned)option_result);
+ (unsigned) option_result);
}
}
@@ -211,18 +211,18 @@
usage (EXIT_FAILURE);
}
- inputFileAsnName = strdup(argv[optind]);
+ inputFileAsnName = strdup (argv[optind]);
if (inputFileAsnName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
+ fprintf (stderr, "Memory error\n");
+ exit (1);
}
- inputFileAssignmentName = strdup(argv[optind+1]);
+ inputFileAssignmentName = strdup (argv[optind + 1]);
if (inputFileAssignmentName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
+ fprintf (stderr, "Memory error\n");
+ exit (1);
}
asn1_result =
@@ -276,8 +276,8 @@
asn1_result = asn1_create_element (definitions, value, &structure);
}
else
- {
- if (strcmp(value, "(NULL)") == 0)
+ {
+ if (strcmp (value, "(NULL)") == 0)
asn1_result = asn1_write_value (structure, varName, NULL, 0);
else
asn1_result = asn1_write_value (structure, varName, value, 0);
@@ -315,10 +315,10 @@
{
der = malloc (der_len);
if (der == NULL)
- {
- fprintf(stderr, "Memory error\n");
- exit(1);
- }
+ {
+ fprintf (stderr, "Memory error\n");
+ exit (1);
+ }
asn1_result = asn1_der_coding (structure, "", der, &der_len,
errorDescription);
}
diff --git a/src/asn1Decoding.c b/src/asn1Decoding.c
index c453cb3..a7967c7 100644
--- a/src/asn1Decoding.c
+++ b/src/asn1Decoding.c
@@ -41,9 +41,9 @@
/* This feature is available in gcc versions 2.5 and later. */
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
-#define ATTR_NO_RETRUN
+# define ATTR_NO_RETRUN
#else
-#define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
+# define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
#endif
ATTR_NO_RETRUN static void
@@ -139,7 +139,7 @@
default:
fprintf (stderr,
"asn1Decoding: ?? getopt returned character code Ox%x ??\n",
- (unsigned)option_result);
+ (unsigned) option_result);
}
}
@@ -150,17 +150,17 @@
usage (EXIT_FAILURE);
}
- inputFileAsnName = strdup(argv[optind]);
- inputFileDerName = strdup(argv[optind + 1]);
- typeName = strdup(argv[optind + 2]);
+ inputFileAsnName = strdup (argv[optind]);
+ inputFileDerName = strdup (argv[optind + 1]);
+ typeName = strdup (argv[optind + 2]);
if (!(inputFileAsnName && inputFileDerName && typeName))
{
- fprintf(stderr, "allocation failed\n");
- free(inputFileAsnName);
- free(inputFileDerName);
- free(typeName);
- exit(1);
+ fprintf (stderr, "allocation failed\n");
+ free (inputFileAsnName);
+ free (inputFileDerName);
+ free (typeName);
+ exit (1);
}
asn1_result =
@@ -202,7 +202,7 @@
* with this reallocation we ensure that memory accesses outside the
* boundaries are detected */
if (der != NULL && debug != 0)
- der = realloc(der, der_len);
+ der = realloc (der, der_len);
if (der == NULL)
{
@@ -232,7 +232,8 @@
fclose(inputFile);
*/
- if (decode (definitions, typeName, der, der_len, benchmark, flags) != ASN1_SUCCESS)
+ if (decode (definitions, typeName, der, der_len, benchmark, flags) !=
+ ASN1_SUCCESS)
{
asn1_delete_structure (&definitions);
free (inputFileAsnName);
@@ -280,7 +281,7 @@
if (flags != 0)
asn1_result =
- asn1_der_decoding2(&structure, der, &der_len, flags, errorDescription);
+ asn1_der_decoding2 (&structure, der, &der_len, flags, errorDescription);
else
asn1_result =
asn1_der_decoding (&structure, der, der_len, errorDescription);
@@ -311,14 +312,16 @@
struct benchmark_st st;
if (benchmark == 0)
- return simple_decode (definitions, typeName, der, der_len, benchmark, flags);
+ return simple_decode (definitions, typeName, der, der_len, benchmark,
+ flags);
else
{
start_benchmark (&st);
do
{
- simple_decode (definitions, typeName, der, der_len, benchmark, flags);
+ simple_decode (definitions, typeName, der, der_len, benchmark,
+ flags);
st.size++;
}
while (benchmark_must_finish == 0);
diff --git a/src/asn1Parser.c b/src/asn1Parser.c
index fdcca68..32a7220 100644
--- a/src/asn1Parser.c
+++ b/src/asn1Parser.c
@@ -34,9 +34,9 @@
/* This feature is available in gcc versions 2.5 and later. */
#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
-#define ATTR_NO_RETRUN
+# define ATTR_NO_RETRUN
#else
-#define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
+# define ATTR_NO_RETRUN __attribute__ ((__noreturn__))
#endif
ATTR_NO_RETRUN static void
@@ -122,22 +122,22 @@
checkSyntaxOnly = 1;
break;
case 'o': /* OUTPUT */
- assert(optarg != NULL);
- outputFileName = strdup(optarg);
+ assert (optarg != NULL);
+ outputFileName = strdup (optarg);
if (outputFileName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
- }
+ fprintf (stderr, "Memory error\n");
+ exit (1);
+ }
break;
case 'n': /* VECTOR NAME */
- assert(optarg != NULL);
- vectorName = strdup(optarg);
+ assert (optarg != NULL);
+ vectorName = strdup (optarg);
if (vectorName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
- }
+ fprintf (stderr, "Memory error\n");
+ exit (1);
+ }
break;
case '?': /* UNKNOW OPTION */
fprintf (stderr,
@@ -150,7 +150,7 @@
default:
fprintf (stderr,
"asn1Parser: ?? getopt returned character code Ox%x ??\n",
- (unsigned)option_result);
+ (unsigned) option_result);
}
}
@@ -166,8 +166,8 @@
inputFileName = (char *) malloc (strlen (argv[optind]) + 1);
if (inputFileName == NULL)
{
- fprintf(stderr, "Memory error\n");
- exit(1);
+ fprintf (stderr, "Memory error\n");
+ exit (1);
}
strcpy (inputFileName, argv[optind]);
}
diff --git a/src/benchmark.c b/src/benchmark.c
index d5802cc..1bd8043 100644
--- a/src/benchmark.c
+++ b/src/benchmark.c
@@ -29,7 +29,7 @@
int benchmark_must_finish = 0;
#if defined _WIN32
-#include <windows.h>
+# include <windows.h>
static DWORD WINAPI
alarm_handler (LPVOID lpParameter)
{
diff --git a/src/benchmark.h b/src/benchmark.h
index 52ed1a4..5bee606 100644
--- a/src/benchmark.h
+++ b/src/benchmark.h
@@ -20,14 +20,14 @@
#ifndef BENCHMARK_H
# define BENCHMARK_H
-#include <sys/time.h>
-#include <time.h>
-#include <signal.h>
-#if defined _WIN32
-#include <windows.h>
-#endif
-#include <time.h>
-#include "timespec.h" /* gnulib gettime */
+# include <sys/time.h>
+# include <time.h>
+# include <signal.h>
+# if defined _WIN32
+# include <windows.h>
+# endif
+# include <time.h>
+# include "timespec.h" /* gnulib gettime */
typedef void (*sighandler_t) (int);
@@ -36,11 +36,11 @@
struct timespec start;
unsigned long size;
sighandler_t old_handler;
-#if defined _WIN32
+# if defined _WIN32
HANDLE wtimer;
HANDLE wthread;
LARGE_INTEGER alarm_timeout;
-#endif
+# endif
};
extern int benchmark_must_finish;
diff --git a/tests/CVE-2018-1000654.c b/tests/CVE-2018-1000654.c
index d93bfcc..7cc6d20 100644
--- a/tests/CVE-2018-1000654.c
+++ b/tests/CVE-2018-1000654.c
@@ -38,9 +38,11 @@
if (argc > 1)
verbose = 1;
- printf("Test 1\n");
+ printf ("Test 1\n");
- result = asn1_array2tree (CVE_2018_1000654_1_asn1_tab, &definitions, errorDescription);
+ result =
+ asn1_array2tree (CVE_2018_1000654_1_asn1_tab, &definitions,
+ errorDescription);
if (result != ASN1_RECURSION)
{
asn1_perror (result);
@@ -50,9 +52,11 @@
asn1_delete_structure (&definitions);
- printf("Test 2\n");
+ printf ("Test 2\n");
- result = asn1_array2tree (CVE_2018_1000654_2_asn1_tab, &definitions, errorDescription);
+ result =
+ asn1_array2tree (CVE_2018_1000654_2_asn1_tab, &definitions,
+ errorDescription);
if (result != ASN1_RECURSION)
{
asn1_perror (result);
diff --git a/tests/Test_choice.c b/tests/Test_choice.c
index 86dce9d..311bf01 100644
--- a/tests/Test_choice.c
+++ b/tests/Test_choice.c
@@ -23,7 +23,7 @@
#include <libtasn1.h>
int
-main (int argc, char** argv)
+main (int argc, char **argv)
{
int result = 0;
asn1_node definitions = NULL, node1 = NULL, node2 = NULL;
diff --git a/tests/Test_choice_ocsp.c b/tests/Test_choice_ocsp.c
index 33c17fc..8ba1a99 100644
--- a/tests/Test_choice_ocsp.c
+++ b/tests/Test_choice_ocsp.c
@@ -4,7 +4,7 @@
#include <libtasn1.h>
int
-main (int argc, char** argv)
+main (int argc, char **argv)
{
int result = 0, len;
asn1_node definitions = NULL, node1 = NULL;
@@ -37,14 +37,14 @@
exit (1);
}
- fp = fopen(datafile, "rb");
+ fp = fopen (datafile, "rb");
if (fp == NULL)
{
printf ("error in %d\n", __LINE__);
exit (1);
}
- data_size = fread(data, 1, sizeof(data), fp);
- fclose(fp);
+ data_size = fread (data, 1, sizeof (data), fp);
+ fclose (fp);
result = asn1_der_decoding (&node1, data, data_size, errorDescription);
if (result != ASN1_SUCCESS)
@@ -53,7 +53,7 @@
exit (1);
}
- len = sizeof(data2);
+ len = sizeof (data2);
result = asn1_der_coding (node1, "", data2, &len, errorDescription);
if (result != ASN1_SUCCESS)
{
@@ -63,11 +63,12 @@
if (len != data_size)
{
- printf ("length doesn't match (got: %d, should be: %d)\n", len, data_size);
+ printf ("length doesn't match (got: %d, should be: %d)\n", len,
+ data_size);
exit (1);
}
- if (memcmp(data, data2, len) != 0)
+ if (memcmp (data, data2, len) != 0)
{
printf ("contents don't match\n");
exit (1);
diff --git a/tests/Test_encdec.c b/tests/Test_encdec.c
index 8a43120..7ff9b8e 100644
--- a/tests/Test_encdec.c
+++ b/tests/Test_encdec.c
@@ -117,7 +117,9 @@
exit (1);
}
- result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList",
+ &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -126,11 +128,13 @@
}
if (start != 4 && end != 358)
{
- printf("Error in start and end values. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values. Have: %d..%d\n", start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature",
+ &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -139,11 +143,15 @@
}
if (start != 372 && end != 503)
{
- printf("Error in start and end values for signature. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for signature. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList.revokedCertificates.?1.userCertificate", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (asn1_element, buffer, size,
+ "tbsCertList.revokedCertificates.?1.userCertificate",
+ &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -152,11 +160,13 @@
}
if (start != 326 && end != 343)
{
- printf("Error in start and end values for userCertificate. Have: %d..%d\n", start, end);
- exit(1);
+ printf
+ ("Error in start and end values for userCertificate. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- size2 = sizeof(buffer2);
+ size2 = sizeof (buffer2);
result = asn1_der_coding (asn1_element, "", buffer2, &size2, NULL);
if (result != ASN1_SUCCESS)
{
@@ -165,10 +175,10 @@
exit (1);
}
- if (size2 != size || memcmp(buffer, buffer2, size) != 0)
+ if (size2 != size || memcmp (buffer, buffer2, size) != 0)
{
- printf("DER encoded data differ!\n");
- exit(1);
+ printf ("DER encoded data differ!\n");
+ exit (1);
}
/* Clear the definition structures */
diff --git a/tests/Test_indefinite.c b/tests/Test_indefinite.c
index 4bb57d2..092eb17 100644
--- a/tests/Test_indefinite.c
+++ b/tests/Test_indefinite.c
@@ -118,7 +118,8 @@
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
- printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription);
+ printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size,
+ indeffile, errorDescription);
exit (1);
}
@@ -153,7 +154,8 @@
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
- printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile2, errorDescription);
+ printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size,
+ indeffile2, errorDescription);
exit (1);
}
@@ -188,7 +190,8 @@
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
- printf ("Cannot decode DER data (size %ld) in %s: %s\n", (long) size, indeffile3, errorDescription);
+ printf ("Cannot decode DER data (size %ld) in %s: %s\n", (long) size,
+ indeffile3, errorDescription);
exit (1);
}
diff --git a/tests/Test_parser.c b/tests/Test_parser.c
index 2e7e679..d1b1749 100644
--- a/tests/Test_parser.c
+++ b/tests/Test_parser.c
@@ -50,8 +50,8 @@
{5,
"TEST_PARSER2 { } DEFINITIONS IMPLICIT TAGS ::= BEGIN int1 ::= INTEGER END",
ASN1_SYNTAX_ERROR,
- {_FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting end of file near 'TEST_PARSER'", /* bison >= 3.6 */
- _FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting $end near 'TEST_PARSER'"}}, /* bison < 3.6 */
+ {_FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting end of file near 'TEST_PARSER'", /* bison >= 3.6 */
+ _FILE_ ":6: Error: syntax error, unexpected IDENTIFIER, expecting $end near 'TEST_PARSER'"}}, /* bison < 3.6 */
{6, "TEST_PARSER { }", ASN1_SUCCESS, {""}},
/* Test ASN1_MAX_NAME_SIZE (128) */
@@ -82,9 +82,11 @@
{14, "int1 [1] INTEGER,", ASN1_SUCCESS, {""}},
{14, "int1 [1] EXPLICIT INTEGER,", ASN1_SUCCESS, {""}},
{14, "int1 [1] IMPLICIT INTEGER,", ASN1_SUCCESS, {""}},
- {12, "Integer ::= [1] EXPLICIT INTEGER {v1(-1), v2(1)}", ASN1_SUCCESS, {""}},
+ {12, "Integer ::= [1] EXPLICIT INTEGER {v1(-1), v2(1)}", ASN1_SUCCESS,
+ {""}},
{12, "Integer ::= INTEGER {v1(0), v2}", ASN1_SYNTAX_ERROR,
- {_FILE_ ":12: Error: syntax error, unexpected '}', expecting '(' near '}'"}},
+ {_FILE_
+ ":12: Error: syntax error, unexpected '}', expecting '(' near '}'"}},
{12, "Integer ::= INTEGER {v1(0), 1}",
ASN1_SYNTAX_ERROR,
{_FILE_
@@ -109,8 +111,11 @@
{_FILE_ ":21: Error: syntax error, unexpected '}' near '}'"}},
{20, " oid1 OBJECT IDENTIFIER DEFAULT Oid-type1",
ASN1_SUCCESS, {""}},
- {22, "KeyUsage ::= BIT STRING { xxx (0), enring UTF8String (SIZE (1..200)) }",
- ASN1_SYNTAX_ERROR, {_FILE_":22: Error: syntax error, unexpected UTF8String, expecting '(' near 'UTF8String'"}},
+ {22,
+ "KeyUsage ::= BIT STRING { xxx (0), enring UTF8String (SIZE (1..200)) }",
+ ASN1_SYNTAX_ERROR,
+ {_FILE_
+ ":22: Error: syntax error, unexpected UTF8String, expecting '(' near 'UTF8String'"}},
/* end */
{0}
diff --git a/tests/Test_simple.c b/tests/Test_simple.c
index 31c4d28..fc56823 100644
--- a/tests/Test_simple.c
+++ b/tests/Test_simple.c
@@ -128,7 +128,8 @@
if (result != ASN1_SUCCESS || ret_len != tv[i].derlen
|| bit_len != tv[i].bitlen)
{
- fprintf (stderr, "asn1_get_bit_der iter %lu, err: %d\n", (unsigned long) i, result);
+ fprintf (stderr, "asn1_get_bit_der iter %lu, err: %d\n",
+ (unsigned long) i, result);
return 1;
}
}
diff --git a/tests/Test_strings.c b/tests/Test_strings.c
index 197d533..2138679 100644
--- a/tests/Test_strings.c
+++ b/tests/Test_strings.c
@@ -57,17 +57,20 @@
#define SSTR(x) sizeof(x)-1,x
static const struct tv ber[] = {
{ASN1_ETYPE_OCTET_STRING,
- SSTR("\xa0\xa0"),
- SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x00\x00")},
+ SSTR ("\xa0\xa0"),
+ SSTR ("\x24\x80\x04\x82\x00\x02\xa0\xa0\x00\x00")},
{ASN1_ETYPE_OCTET_STRING,
- SSTR("\xa0\xa0\xb0\xb0\xb0"),
- SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x00\x00")},
+ SSTR ("\xa0\xa0\xb0\xb0\xb0"),
+ SSTR
+ ("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x00\x00")},
{ASN1_ETYPE_OCTET_STRING,
- SSTR("\xa0\xa0\xb0\xb0\xb0\xa1\xa1"),
- SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x00\x00\x00\x00")},
+ SSTR ("\xa0\xa0\xb0\xb0\xb0\xa1\xa1"),
+ SSTR
+ ("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x00\x00\x00\x00")},
{ASN1_ETYPE_OCTET_STRING,
- SSTR("\xa0\xa0\xb0\xb0\xb0\xa1\xa1\xc1"),
- SSTR("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x04\x82\x00\x01\xc1\x00\x00\x00\x00")},
+ SSTR ("\xa0\xa0\xb0\xb0\xb0\xa1\xa1\xc1"),
+ SSTR
+ ("\x24\x80\x04\x82\x00\x02\xa0\xa0\x04\x82\x00\x03\xb0\xb0\xb0\x24\x80\x04\x82\x00\x02\xa1\xa1\x04\x82\x00\x01\xc1\x00\x00\x00\x00")},
};
int
@@ -145,7 +148,7 @@
i, str_len, ber[i].str_len);
return 1;
}
- free(b);
+ free (b);
}
diff --git a/tests/Test_tree.c b/tests/Test_tree.c
index 98fb251..1219217 100644
--- a/tests/Test_tree.c
+++ b/tests/Test_tree.c
@@ -539,7 +539,8 @@
result = asn1_delete_structure (&asn1_element);
break;
case ACT_DELETE2:
- result = asn1_delete_structure2 (&asn1_element, ASN1_DELETE_FLAG_ZEROIZE);
+ result =
+ asn1_delete_structure2 (&asn1_element, ASN1_DELETE_FLAG_ZEROIZE);
break;
case ACT_DELETE_ELEMENT:
result = asn1_delete_element (asn1_element, test->par1);
@@ -790,7 +791,7 @@
printf (" Error expected: %s - %d - ",
asn1_strerror (test->errorNumber), test->par3);
for (k = 0; k < test->par3; k++)
- printf ("%02x", (unsigned int)test->par2[k]);
+ printf ("%02x", (unsigned int) test->par2[k]);
printf ("\n Error detected: %s - %d - ",
asn1_strerror (result), valueLen);
for (k = 0; k < valueLen; k++)
diff --git a/tests/Test_tree_asn1_tab.c b/tests/Test_tree_asn1_tab.c
index 7869f85..21a37a0 100644
--- a/tests/Test_tree_asn1_tab.c
+++ b/tests/Test_tree_asn1_tab.c
@@ -5,165 +5,165 @@
#include <libtasn1.h>
const asn1_static_node Test_tree_asn1_tab[] = {
- { "TEST_TREE", 536875024, NULL },
- { NULL, 1610612748, NULL },
- { "iso", 1073741825, "1"},
- { "identified-organization", 1073741825, "3"},
- { "dod", 1073741825, "6"},
- { "internet", 1073741825, "1"},
- { "security", 1073741825, "5"},
- { "mechanisms", 1073741825, "5"},
- { "pkix", 1073741825, "7"},
- { "id-mod", 1073741825, "0"},
- { "id-pkix1-implicit-88", 1, "2"},
- { "KrbError", 1610620933, NULL },
- { NULL, 1073746952, "30"},
- { "pvno", 536879107, NULL },
- { NULL, 4104, "0"},
- { "Checksum", 1610612741, NULL },
- { "checksum", 536879111, NULL },
- { NULL, 4104, "1"},
- { "CertTemplate", 1610612741, NULL },
- { "version", 1610637315, NULL },
- { NULL, 4104, "0"},
- { "issuer", 1610637314, "Name"},
- { NULL, 4104, "3"},
- { "validity", 536895491, NULL },
- { NULL, 4104, "4"},
- { "Name", 1610612754, NULL },
- { "rdnSequence", 2, "RDNSequence"},
- { "RDNSequence", 1073741826, "RelativeDistinguishedName"},
- { "RelativeDistinguishedName", 1612709903, NULL },
- { "MAX", 1074266122, "1"},
- { NULL, 2, "AttributeTypeAndValue"},
- { "AttributeTypeAndValue", 1610612741, NULL },
- { "type", 1073741826, "AttributeType"},
- { "value", 2, "AttributeValue"},
- { "AttributeType", 1073741836, NULL },
- { "AttributeValue", 1073741837, NULL },
- { "sequenceEmpty", 1610612741, NULL },
- { "int1", 1073741827, NULL },
- { "seq1", 1610620930, "Sequence_octetTest1"},
- { NULL, 4104, "1"},
- { "set1", 536879119, NULL },
- { NULL, 1073743880, "2"},
- { NULL, 3, NULL },
- { "IndefiniteLengthTest", 1610612741, NULL },
- { "seq1", 1610620930, "Sequence_octetTest1"},
- { NULL, 4104, "1"},
- { "set1", 1610612751, NULL },
- { NULL, 12, NULL },
- { "int1", 3, NULL },
- { "OidTest", 1610612741, NULL },
- { "oid3", 1610653708, NULL },
- { NULL, 1073741833, "id-Test"},
- { NULL, 4104, "3"},
- { "oid", 1610653708, NULL },
- { NULL, 1073741833, "id-anyTest2"},
- { NULL, 4104, "1"},
- { "oid2", 536911884, NULL },
- { NULL, 1073741833, "id-anyTest"},
- { NULL, 4104, "2"},
- { "OidAndTimeTest", 1610612741, NULL },
- { "set", 1610612751, NULL },
- { NULL, 3, NULL },
- { "oid", 1073741836, NULL },
- { "time2", 1082130449, NULL },
- { "bol", 1073741828, NULL },
- { "oct", 1073741831, NULL },
- { "bit", 1073758214, NULL },
- { "bol2", 1610645508, NULL },
- { NULL, 65545, NULL },
- { "enum", 1610907669, NULL },
- { NULL, 1073741833, "v1"},
- { "v1", 1073741825, "1"},
- { "v2", 1, "2"},
- { "any", 1610637325, NULL },
- { NULL, 4104, "1"},
- { "gen", 1073758235, NULL },
- { "time1", 16777233, NULL },
- { "SequenceTestTag", 1610612741, NULL },
- { "int1", 1610620931, NULL },
- { NULL, 2056, "2"},
- { "int2", 1610620931, NULL },
- { NULL, 4104, "3"},
- { "str1", 1610620959, NULL },
- { NULL, 4104, "1"},
- { "str2", 1073741856, NULL },
- { "str3", 536879136, NULL },
- { NULL, 2056, "2"},
- { "Sequence1", 1610612741, NULL },
- { "int1", 1610915843, NULL },
- { NULL, 1073741833, "v2"},
- { NULL, 1073745928, "0"},
- { "v1", 1073741825, "0"},
- { "v2", 1073741825, "1"},
- { "v3", 1, "2"},
- { "int2", 1073741827, NULL },
- { "seq", 1610612751, NULL },
- { NULL, 3, NULL },
- { "id", 1073741836, NULL },
- { "oct", 1073741831, NULL },
- { "any1", 541081613, NULL },
- { "id", 1, NULL },
- { "DHParameter", 1610612741, NULL },
- { "prime", 1073741827, NULL },
- { "base", 1073741827, NULL },
- { "privateValueLength", 16387, NULL },
- { "id-octetTest1", 1879048204, NULL },
- { NULL, 1073741825, "1"},
- { NULL, 1073741825, "2"},
- { NULL, 1073741825, "3"},
- { NULL, 1, "4"},
- { "Sequence_octetTest1", 1610612741, NULL },
- { "int", 16387, NULL },
- { "AnyTest2", 1610612754, NULL },
- { "str", 1073741831, NULL },
- { "int", 3, NULL },
- { "id-ic", 1879048204, NULL },
- { NULL, 1073741825, "2"},
- { NULL, 1, "5"},
- { "id-anyTest", 1879048204, NULL },
- { NULL, 1073741825, "id-ic"},
- { NULL, 1073741825, "29"},
- { NULL, 1, "1"},
- { "id-anyTest2", 1879048204, NULL },
- { NULL, 1073741825, "id-ic"},
- { NULL, 1073741825, "29"},
- { NULL, 1, "2"},
- { "anyTest2", 1073741827, NULL },
- { "VisibleString", 1610620935, NULL },
- { NULL, 4360, "26"},
- { "NumericString", 1610620935, NULL },
- { NULL, 4360, "18"},
- { "IA5String", 1610620935, NULL },
- { NULL, 4360, "22"},
- { "TeletexString", 1610620935, NULL },
- { NULL, 4360, "20"},
- { "PrintableString", 1610620935, NULL },
- { NULL, 4360, "19"},
- { "UniversalString", 1610620935, NULL },
- { NULL, 4360, "28"},
- { "BMPString", 1610620935, NULL },
- { NULL, 4360, "30"},
- { "UTF8String", 1610620935, NULL },
- { NULL, 4360, "12"},
- { "Test3", 1610612741, NULL },
- { "a", 1073741827, NULL },
- { "b", 536879106, "GeneralString2"},
- { NULL, 2056, "1"},
- { "GeneralString2", 1610620955, NULL },
- { NULL, 2056, "2"},
- { "X520LocalityName", 1610612754, NULL },
- { "teletexString", 1073741854, NULL },
- { "printableString", 1073741855, NULL },
- { "universalString", 1073741856, NULL },
- { "utf8String", 1073741858, NULL },
- { "bmpString", 33, NULL },
- { "id-Test", 805306380, NULL },
- { NULL, 1073741825, "1"},
- { NULL, 1073741825, "2"},
- { NULL, 1073741825, "29"},
- { NULL, 1, "2"},
- { NULL, 0, NULL }
+ {"TEST_TREE", 536875024, NULL},
+ {NULL, 1610612748, NULL},
+ {"iso", 1073741825, "1"},
+ {"identified-organization", 1073741825, "3"},
+ {"dod", 1073741825, "6"},
+ {"internet", 1073741825, "1"},
+ {"security", 1073741825, "5"},
+ {"mechanisms", 1073741825, "5"},
+ {"pkix", 1073741825, "7"},
+ {"id-mod", 1073741825, "0"},
+ {"id-pkix1-implicit-88", 1, "2"},
+ {"KrbError", 1610620933, NULL},
+ {NULL, 1073746952, "30"},
+ {"pvno", 536879107, NULL},
+ {NULL, 4104, "0"},
+ {"Checksum", 1610612741, NULL},
+ {"checksum", 536879111, NULL},
+ {NULL, 4104, "1"},
+ {"CertTemplate", 1610612741, NULL},
+ {"version", 1610637315, NULL},
+ {NULL, 4104, "0"},
+ {"issuer", 1610637314, "Name"},
+ {NULL, 4104, "3"},
+ {"validity", 536895491, NULL},
+ {NULL, 4104, "4"},
+ {"Name", 1610612754, NULL},
+ {"rdnSequence", 2, "RDNSequence"},
+ {"RDNSequence", 1073741826, "RelativeDistinguishedName"},
+ {"RelativeDistinguishedName", 1612709903, NULL},
+ {"MAX", 1074266122, "1"},
+ {NULL, 2, "AttributeTypeAndValue"},
+ {"AttributeTypeAndValue", 1610612741, NULL},
+ {"type", 1073741826, "AttributeType"},
+ {"value", 2, "AttributeValue"},
+ {"AttributeType", 1073741836, NULL},
+ {"AttributeValue", 1073741837, NULL},
+ {"sequenceEmpty", 1610612741, NULL},
+ {"int1", 1073741827, NULL},
+ {"seq1", 1610620930, "Sequence_octetTest1"},
+ {NULL, 4104, "1"},
+ {"set1", 536879119, NULL},
+ {NULL, 1073743880, "2"},
+ {NULL, 3, NULL},
+ {"IndefiniteLengthTest", 1610612741, NULL},
+ {"seq1", 1610620930, "Sequence_octetTest1"},
+ {NULL, 4104, "1"},
+ {"set1", 1610612751, NULL},
+ {NULL, 12, NULL},
+ {"int1", 3, NULL},
+ {"OidTest", 1610612741, NULL},
+ {"oid3", 1610653708, NULL},
+ {NULL, 1073741833, "id-Test"},
+ {NULL, 4104, "3"},
+ {"oid", 1610653708, NULL},
+ {NULL, 1073741833, "id-anyTest2"},
+ {NULL, 4104, "1"},
+ {"oid2", 536911884, NULL},
+ {NULL, 1073741833, "id-anyTest"},
+ {NULL, 4104, "2"},
+ {"OidAndTimeTest", 1610612741, NULL},
+ {"set", 1610612751, NULL},
+ {NULL, 3, NULL},
+ {"oid", 1073741836, NULL},
+ {"time2", 1082130449, NULL},
+ {"bol", 1073741828, NULL},
+ {"oct", 1073741831, NULL},
+ {"bit", 1073758214, NULL},
+ {"bol2", 1610645508, NULL},
+ {NULL, 65545, NULL},
+ {"enum", 1610907669, NULL},
+ {NULL, 1073741833, "v1"},
+ {"v1", 1073741825, "1"},
+ {"v2", 1, "2"},
+ {"any", 1610637325, NULL},
+ {NULL, 4104, "1"},
+ {"gen", 1073758235, NULL},
+ {"time1", 16777233, NULL},
+ {"SequenceTestTag", 1610612741, NULL},
+ {"int1", 1610620931, NULL},
+ {NULL, 2056, "2"},
+ {"int2", 1610620931, NULL},
+ {NULL, 4104, "3"},
+ {"str1", 1610620959, NULL},
+ {NULL, 4104, "1"},
+ {"str2", 1073741856, NULL},
+ {"str3", 536879136, NULL},
+ {NULL, 2056, "2"},
+ {"Sequence1", 1610612741, NULL},
+ {"int1", 1610915843, NULL},
+ {NULL, 1073741833, "v2"},
+ {NULL, 1073745928, "0"},
+ {"v1", 1073741825, "0"},
+ {"v2", 1073741825, "1"},
+ {"v3", 1, "2"},
+ {"int2", 1073741827, NULL},
+ {"seq", 1610612751, NULL},
+ {NULL, 3, NULL},
+ {"id", 1073741836, NULL},
+ {"oct", 1073741831, NULL},
+ {"any1", 541081613, NULL},
+ {"id", 1, NULL},
+ {"DHParameter", 1610612741, NULL},
+ {"prime", 1073741827, NULL},
+ {"base", 1073741827, NULL},
+ {"privateValueLength", 16387, NULL},
+ {"id-octetTest1", 1879048204, NULL},
+ {NULL, 1073741825, "1"},
+ {NULL, 1073741825, "2"},
+ {NULL, 1073741825, "3"},
+ {NULL, 1, "4"},
+ {"Sequence_octetTest1", 1610612741, NULL},
+ {"int", 16387, NULL},
+ {"AnyTest2", 1610612754, NULL},
+ {"str", 1073741831, NULL},
+ {"int", 3, NULL},
+ {"id-ic", 1879048204, NULL},
+ {NULL, 1073741825, "2"},
+ {NULL, 1, "5"},
+ {"id-anyTest", 1879048204, NULL},
+ {NULL, 1073741825, "id-ic"},
+ {NULL, 1073741825, "29"},
+ {NULL, 1, "1"},
+ {"id-anyTest2", 1879048204, NULL},
+ {NULL, 1073741825, "id-ic"},
+ {NULL, 1073741825, "29"},
+ {NULL, 1, "2"},
+ {"anyTest2", 1073741827, NULL},
+ {"VisibleString", 1610620935, NULL},
+ {NULL, 4360, "26"},
+ {"NumericString", 1610620935, NULL},
+ {NULL, 4360, "18"},
+ {"IA5String", 1610620935, NULL},
+ {NULL, 4360, "22"},
+ {"TeletexString", 1610620935, NULL},
+ {NULL, 4360, "20"},
+ {"PrintableString", 1610620935, NULL},
+ {NULL, 4360, "19"},
+ {"UniversalString", 1610620935, NULL},
+ {NULL, 4360, "28"},
+ {"BMPString", 1610620935, NULL},
+ {NULL, 4360, "30"},
+ {"UTF8String", 1610620935, NULL},
+ {NULL, 4360, "12"},
+ {"Test3", 1610612741, NULL},
+ {"a", 1073741827, NULL},
+ {"b", 536879106, "GeneralString2"},
+ {NULL, 2056, "1"},
+ {"GeneralString2", 1610620955, NULL},
+ {NULL, 2056, "2"},
+ {"X520LocalityName", 1610612754, NULL},
+ {"teletexString", 1073741854, NULL},
+ {"printableString", 1073741855, NULL},
+ {"universalString", 1073741856, NULL},
+ {"utf8String", 1073741858, NULL},
+ {"bmpString", 33, NULL},
+ {"id-Test", 805306380, NULL},
+ {NULL, 1073741825, "1"},
+ {NULL, 1073741825, "2"},
+ {NULL, 1073741825, "29"},
+ {NULL, 1, "2"},
+ {NULL, 0, NULL}
};
diff --git a/tests/coding-decoding2.c b/tests/coding-decoding2.c
index 80fb74c..493d610 100644
--- a/tests/coding-decoding2.c
+++ b/tests/coding-decoding2.c
@@ -23,7 +23,7 @@
#include <libtasn1.h>
int
-main (int argc, char** argv)
+main (int argc, char **argv)
{
int result = 0;
asn1_node definitions = NULL, node1 = NULL, node2 = NULL;
@@ -87,7 +87,8 @@
exit (1);
}
- result = asn1_write_value (node1, "choice0.choice1.choice2.int1", "1234", 0);
+ result =
+ asn1_write_value (node1, "choice0.choice1.choice2.int1", "1234", 0);
if (result != ASN1_SUCCESS)
{
printf ("error in %d\n", __LINE__);
@@ -101,9 +102,11 @@
exit (1);
}
- /*asn1_print_structure(stdout, node1, "", ASN1_PRINT_ALL);*/
+ /*asn1_print_structure(stdout, node1, "", ASN1_PRINT_ALL); */
- result = asn1_der_decoding_startEnd (node1, data, data_size, "choice0.choice1.choice2.int1", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (node1, data, data_size,
+ "choice0.choice1.choice2.int1", &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -112,11 +115,15 @@
}
if (start != 7 && end != 10)
{
- printf("Error in start and end values for choice1.choice2.int1. Have: %d..%d\n", start, end);
- exit(1);
+ printf
+ ("Error in start and end values for choice1.choice2.int1. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (node1, data, data_size, "choice0.choice1", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (node1, data, data_size, "choice0.choice1",
+ &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -125,11 +132,13 @@
}
if (start != 7 && end != 10)
{
- printf("Error in start and end values for choice1. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for choice1. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (node1, data, data_size, "pad2", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (node1, data, data_size, "pad2", &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -138,8 +147,9 @@
}
if (start != 11 && end != 13)
{
- printf("Error in start and end values for pad2. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for pad2. Have: %d..%d\n", start,
+ end);
+ exit (1);
}
asn1_delete_structure (&node1);
@@ -166,7 +176,9 @@
exit (1);
}
- result = asn1_der_decoding_startEnd (node2, data, data_size, "choice0.choice1.choice2.int1", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (node2, data, data_size,
+ "choice0.choice1.choice2.int1", &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -175,11 +187,14 @@
}
if (start != 7 && end != 10)
{
- printf("Error in start and end values for choice0.choice1.choice2.int1. Have: %d..%d\n", start, end);
- exit(1);
+ printf
+ ("Error in start and end values for choice0.choice1.choice2.int1. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (node2, data, data_size, "pad2", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (node2, data, data_size, "pad2", &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -188,8 +203,9 @@
}
if (start != 11 && end != 13)
{
- printf("Error in start and end values for pad2. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for pad2. Have: %d..%d\n", start,
+ end);
+ exit (1);
}
asn1_delete_structure (&node2);
diff --git a/tests/coding-long-oid.c b/tests/coding-long-oid.c
index 8b05058..b93113c 100644
--- a/tests/coding-long-oid.c
+++ b/tests/coding-long-oid.c
@@ -28,123 +28,123 @@
*/
const unsigned char der_data[] =
- "\x30\x82\x06\xdc\x30\x82\x05\xc4\xa0\x03\x02\x01\x02\x02\x08\x35"
- "\x73\x8c\xaf\x21\xea\xbd\x2d\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7"
- "\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55"
- "\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x08\x13"
- "\x0e\x4e\x6f\x72\x74\x68\x20\x43\x61\x72\x6f\x6c\x69\x6e\x61\x31"
- "\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x52\x61\x6c\x65\x69\x67"
- "\x68\x31\x10\x30\x0e\x06\x03\x55\x04\x0a\x13\x07\x4b\x61\x74\x65"
- "\x6c\x6c\x6f\x31\x14\x30\x12\x06\x03\x55\x04\x0b\x13\x0b\x53\x6f"
- "\x6d\x65\x4f\x72\x67\x55\x6e\x69\x74\x31\x2c\x30\x2a\x06\x03\x55"
- "\x04\x03\x13\x23\x73\x61\x74\x2d\x72\x32\x32\x30\x2d\x31\x30\x2e"
- "\x6c\x61\x62\x2e\x65\x6e\x67\x2e\x72\x64\x75\x32\x2e\x72\x65\x64"
- "\x68\x61\x74\x2e\x63\x6f\x6d\x30\x1e\x17\x0d\x31\x36\x30\x37\x30"
- "\x31\x31\x38\x35\x34\x31\x37\x5a\x17\x0d\x34\x39\x31\x32\x30\x31"
- "\x31\x33\x30\x30\x30\x30\x5a\x30\x2b\x31\x29\x30\x27\x06\x03\x55"
- "\x04\x03\x13\x20\x38\x61\x38\x38\x38\x30\x31\x37\x35\x35\x61\x37"
- "\x63\x39\x30\x37\x30\x31\x35\x35\x61\x37\x63\x66\x62\x65\x33\x36"
- "\x30\x30\x30\x34\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86"
- "\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a"
- "\x02\x82\x01\x01\x00\xdc\x70\x8b\x9c\x84\xe9\x3e\x79\x8f\x03\xe5"
- "\x5f\x21\xf0\x29\x9e\xd9\x94\x4e\x0f\x37\x45\x47\x42\xda\x2a\xe0"
- "\xda\xf5\x8b\xfa\xe1\xf8\x62\x51\x14\x9d\x9e\xe0\xc7\x69\xd0\x3d"
- "\xfc\x25\x2f\xb6\x10\x45\xbd\x0d\xbc\x92\x86\x54\xbb\x4e\x7d\xd4"
- "\x92\x75\x65\xba\x48\xa4\x64\xa1\xeb\xf7\xe7\xdc\xc0\xd7\x0a\x5e"
- "\x36\x13\x0e\x4e\x35\xcc\x2c\xc6\xf3\xe7\xe7\xe5\x32\x8a\x0c\xf7"
- "\x47\x28\x7a\x02\xc2\x68\x66\x19\x3a\xba\xca\x31\xe2\xdd\x43\xbe"
- "\x26\x4c\x80\x12\x0c\xae\x44\x40\xeb\x69\x7d\x9e\x58\xd3\xab\xaf"
- "\x69\xe6\x54\xae\x7d\x80\xee\x2c\x10\xe9\xbb\x5e\x6b\x89\x15\x2e"
- "\x2c\x72\x26\xba\x7f\xe5\xa3\x66\xc5\x98\xc6\x57\xbf\x05\x1e\x55"
- "\x93\xa6\x16\x83\xa6\x88\x79\x8f\x4e\xb5\x7e\x70\xeb\xf0\xa9\xa6"
- "\xd5\xf9\x1f\xe6\xab\x70\x06\x43\xe0\xde\x82\xad\x0e\x04\x17\x2b"
- "\x69\x82\x40\x98\x84\x14\x00\x2a\xa2\xda\x61\x7b\x35\xac\x71\x05"
- "\x43\x6f\x55\x3a\x28\x4b\xd1\xa4\xeb\x3b\xf5\x03\xc2\xf8\x3c\xfd"
- "\x0a\xc4\x99\x1d\xa7\x7d\x08\x5c\xd1\x15\x70\x73\xb9\xdc\x5c\xf2"
- "\xfe\x2c\xc6\x21\x8a\xbe\xbd\x52\x37\x64\x04\xe5\x06\x3e\xc6\x62"
- "\xa1\xe9\x8e\xcb\xc1\x02\x03\x01\x00\x01\xa3\x82\x03\x9e\x30\x82"
- "\x03\x9a\x30\x11\x06\x09\x60\x86\x48\x01\x86\xf8\x42\x01\x01\x04"
- "\x04\x03\x02\x05\xa0\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02"
- "\x04\xb0\x30\x81\xc3\x06\x03\x55\x1d\x23\x04\x81\xbb\x30\x81\xb8"
- "\x80\x14\xca\xca\x62\x86\x04\x05\xf0\xf5\x9b\x38\xd2\x2c\x3c\x8c"
- "\x65\x0f\xc6\xba\xa5\x3c\xa1\x81\x94\xa4\x81\x91\x30\x81\x8e\x31"
- "\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15"
- "\x06\x03\x55\x04\x08\x13\x0e\x4e\x6f\x72\x74\x68\x20\x43\x61\x72"
- "\x6f\x6c\x69\x6e\x61\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07"
- "\x52\x61\x6c\x65\x69\x67\x68\x31\x10\x30\x0e\x06\x03\x55\x04\x0a"
- "\x13\x07\x4b\x61\x74\x65\x6c\x6c\x6f\x31\x14\x30\x12\x06\x03\x55"
- "\x04\x0b\x13\x0b\x53\x6f\x6d\x65\x4f\x72\x67\x55\x6e\x69\x74\x31"
- "\x2c\x30\x2a\x06\x03\x55\x04\x03\x13\x23\x73\x61\x74\x2d\x72\x32"
- "\x32\x30\x2d\x31\x30\x2e\x6c\x61\x62\x2e\x65\x6e\x67\x2e\x72\x64"
- "\x75\x32\x2e\x72\x65\x64\x68\x61\x74\x2e\x63\x6f\x6d\x82\x09\x00"
- "\xa4\xe7\xca\xeb\xbe\x43\x5d\xcc\x30\x1d\x06\x03\x55\x1d\x0e\x04"
- "\x16\x04\x14\x0e\x8d\x7b\x53\xba\x5a\x9e\x92\x44\xe5\x64\x58\xa1"
- "\xdb\x83\x47\x05\x3e\x32\xd3\x30\x13\x06\x03\x55\x1d\x25\x04\x0c"
- "\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x02\x30\x2a\x06\x10"
- "\x2b\x06\x01\x04\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x01"
- "\x04\x16\x0c\x14\x6d\x6f\x72\x64\x6f\x72\x5f\x75\x65\x62\x65\x72"
- "\x5f\x70\x72\x6f\x64\x75\x63\x74\x30\x16\x06\x10\x2b\x06\x01\x04"
- "\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x03\x04\x02\x0c\x00"
- "\x30\x16\x06\x10\x2b\x06\x01\x04\x01\x92\x08\x09\x01\xaa\xda\xbe"
- "\xbe\xfa\x5b\x02\x04\x02\x0c\x00\x30\x16\x06\x10\x2b\x06\x01\x04"
- "\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x05\x04\x02\x0c\x00"
- "\x30\x19\x06\x10\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe"
- "\xbe\xfa\x72\x01\x04\x05\x0c\x03\x79\x75\x6d\x30\x24\x06\x11\x2b"
- "\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x01"
- "\x04\x0f\x0c\x0d\x75\x65\x62\x65\x72\x5f\x63\x6f\x6e\x74\x65\x6e"
- "\x74\x30\x32\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda"
- "\xbe\xbe\xfa\x72\x01\x02\x04\x1d\x0c\x1b\x31\x34\x36\x37\x33\x39"
- "\x39\x32\x35\x37\x34\x33\x35\x5f\x75\x65\x62\x65\x72\x5f\x63\x6f"
- "\x6e\x74\x65\x6e\x74\x30\x1d\x06\x11\x2b\x06\x01\x04\x01\x92\x08"
- "\x09\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x05\x04\x08\x0c\x06\x43\x75"
- "\x73\x74\x6f\x6d\x30\x1e\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09"
- "\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x06\x04\x09\x0c\x07\x2f\x6d\x6f"
- "\x72\x64\x6f\x72\x30\x17\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09"
- "\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x07\x04\x02\x0c\x00\x30\x18\x06"
- "\x11\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe\xbe\xfa\x72"
- "\x01\x08\x04\x03\x0c\x01\x31\x30\x24\x06\x0a\x2b\x06\x01\x04\x01"
- "\x92\x08\x09\x04\x01\x04\x16\x0c\x14\x6d\x6f\x72\x64\x6f\x72\x5f"
- "\x75\x65\x62\x65\x72\x5f\x70\x72\x6f\x64\x75\x63\x74\x30\x10\x06"
- "\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x02\x04\x02\x0c\x00\x30"
- "\x1d\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x03\x04\x0f\x0c"
- "\x0d\x31\x34\x36\x37\x33\x39\x39\x32\x35\x37\x34\x33\x35\x30\x11"
- "\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x05\x04\x03\x0c\x01"
- "\x31\x30\x24\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x06\x04"
- "\x16\x0c\x14\x32\x30\x31\x36\x2d\x30\x37\x2d\x30\x31\x54\x31\x38"
- "\x3a\x35\x34\x3a\x31\x37\x5a\x30\x24\x06\x0a\x2b\x06\x01\x04\x01"
- "\x92\x08\x09\x04\x07\x04\x16\x0c\x14\x32\x30\x34\x39\x2d\x31\x32"
- "\x2d\x30\x31\x54\x31\x33\x3a\x30\x30\x3a\x30\x30\x5a\x30\x11\x06"
- "\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x0c\x04\x03\x0c\x01\x30"
- "\x30\x11\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x0e\x04\x03"
- "\x0c\x01\x30\x30\x11\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04"
- "\x0b\x04\x03\x0c\x01\x31\x30\x34\x06\x0a\x2b\x06\x01\x04\x01\x92"
- "\x08\x09\x05\x01\x04\x26\x0c\x24\x39\x34\x35\x33\x66\x38\x65\x36"
- "\x2d\x38\x34\x62\x32\x2d\x34\x38\x32\x65\x2d\x61\x33\x65\x61\x2d"
- "\x30\x31\x63\x33\x62\x33\x65\x32\x36\x36\x61\x35\x30\x0d\x06\x09"
- "\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00"
- "\xf7\x4d\xf3\x30\x53\xcd\x35\xbf\x49\x07\x29\x9b\xf0\x7a\xaa\x49"
- "\x60\xda\xce\x14\x45\xb5\x32\x8f\xda\xc3\xce\x6b\xec\xbf\x20\xc0"
- "\x05\xa3\x3a\x89\xc4\x7d\x66\x34\xfc\xf3\x16\xb8\xf3\x03\xda\xfc"
- "\x82\x4a\xb8\x97\xf8\x67\x3d\xc2\x8c\x78\xb4\x6d\xb8\xbb\x18\xec"
- "\x36\xee\xc4\x28\x79\xda\xfe\xa1\x1f\xaf\x0b\x3f\xe4\x75\xde\x83"
- "\xff\x6b\xf9\x11\x60\x09\x57\xea\x85\x34\xed\x60\xe2\x94\x8b\xd6"
- "\xf2\x21\x9b\xda\x97\x99\xf3\x0d\xa9\x0f\xb5\x3b\x3a\x8f\x96\x8d"
- "\x0b\xdf\x30\x17\x03\xe6\x47\xc3\x71\x32\x09\x18\xbc\xc0\xa9\x83"
- "\x7e\xb7\x5f\x5c\xbb\xeb\x0a\x18\x3f\xa9\x40\x98\xae\x57\xab\x99"
- "\x3d\x47\x1b\x98\x8a\xdc\x6e\x85\xa2\xea\x5e\x21\x80\xa9\xb5\x48"
- "\xc9\x1d\x63\xc1\x1b\xe6\x01\xa1\xbd\x84\x38\x7f\x1a\x43\xa5\xd4"
- "\x7f\x41\x5b\xf6\x88\x33\xb0\xf1\xb8\x8f\xe1\x39\x69\x6f\x60\x13"
- "\xd3\x5d\x70\xde\x95\x0d\x2f\xa9\x89\x6c\xd4\x3a\xeb\x22\x59\xe6"
- "\x31\x67\x71\xa5\xed\xfb\xcb\x20\x11\x0c\x31\x2e\xe0\x98\x9a\x3b"
- "\x9c\x7b\xa2\x74\x6f\x87\x97\xa1\xd9\x82\x7f\x7d\x62\x6b\x45\x6c"
- "\x0b\x5e\x25\x43\x8a\x20\x16\x7d\xe5\x84\x18\x3f\x7c\xda\xfc\xf9";
+ "\x30\x82\x06\xdc\x30\x82\x05\xc4\xa0\x03\x02\x01\x02\x02\x08\x35"
+ "\x73\x8c\xaf\x21\xea\xbd\x2d\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7"
+ "\x0d\x01\x01\x05\x05\x00\x30\x81\x8e\x31\x0b\x30\x09\x06\x03\x55"
+ "\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x08\x13"
+ "\x0e\x4e\x6f\x72\x74\x68\x20\x43\x61\x72\x6f\x6c\x69\x6e\x61\x31"
+ "\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07\x52\x61\x6c\x65\x69\x67"
+ "\x68\x31\x10\x30\x0e\x06\x03\x55\x04\x0a\x13\x07\x4b\x61\x74\x65"
+ "\x6c\x6c\x6f\x31\x14\x30\x12\x06\x03\x55\x04\x0b\x13\x0b\x53\x6f"
+ "\x6d\x65\x4f\x72\x67\x55\x6e\x69\x74\x31\x2c\x30\x2a\x06\x03\x55"
+ "\x04\x03\x13\x23\x73\x61\x74\x2d\x72\x32\x32\x30\x2d\x31\x30\x2e"
+ "\x6c\x61\x62\x2e\x65\x6e\x67\x2e\x72\x64\x75\x32\x2e\x72\x65\x64"
+ "\x68\x61\x74\x2e\x63\x6f\x6d\x30\x1e\x17\x0d\x31\x36\x30\x37\x30"
+ "\x31\x31\x38\x35\x34\x31\x37\x5a\x17\x0d\x34\x39\x31\x32\x30\x31"
+ "\x31\x33\x30\x30\x30\x30\x5a\x30\x2b\x31\x29\x30\x27\x06\x03\x55"
+ "\x04\x03\x13\x20\x38\x61\x38\x38\x38\x30\x31\x37\x35\x35\x61\x37"
+ "\x63\x39\x30\x37\x30\x31\x35\x35\x61\x37\x63\x66\x62\x65\x33\x36"
+ "\x30\x30\x30\x34\x30\x82\x01\x22\x30\x0d\x06\x09\x2a\x86\x48\x86"
+ "\xf7\x0d\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x00\x30\x82\x01\x0a"
+ "\x02\x82\x01\x01\x00\xdc\x70\x8b\x9c\x84\xe9\x3e\x79\x8f\x03\xe5"
+ "\x5f\x21\xf0\x29\x9e\xd9\x94\x4e\x0f\x37\x45\x47\x42\xda\x2a\xe0"
+ "\xda\xf5\x8b\xfa\xe1\xf8\x62\x51\x14\x9d\x9e\xe0\xc7\x69\xd0\x3d"
+ "\xfc\x25\x2f\xb6\x10\x45\xbd\x0d\xbc\x92\x86\x54\xbb\x4e\x7d\xd4"
+ "\x92\x75\x65\xba\x48\xa4\x64\xa1\xeb\xf7\xe7\xdc\xc0\xd7\x0a\x5e"
+ "\x36\x13\x0e\x4e\x35\xcc\x2c\xc6\xf3\xe7\xe7\xe5\x32\x8a\x0c\xf7"
+ "\x47\x28\x7a\x02\xc2\x68\x66\x19\x3a\xba\xca\x31\xe2\xdd\x43\xbe"
+ "\x26\x4c\x80\x12\x0c\xae\x44\x40\xeb\x69\x7d\x9e\x58\xd3\xab\xaf"
+ "\x69\xe6\x54\xae\x7d\x80\xee\x2c\x10\xe9\xbb\x5e\x6b\x89\x15\x2e"
+ "\x2c\x72\x26\xba\x7f\xe5\xa3\x66\xc5\x98\xc6\x57\xbf\x05\x1e\x55"
+ "\x93\xa6\x16\x83\xa6\x88\x79\x8f\x4e\xb5\x7e\x70\xeb\xf0\xa9\xa6"
+ "\xd5\xf9\x1f\xe6\xab\x70\x06\x43\xe0\xde\x82\xad\x0e\x04\x17\x2b"
+ "\x69\x82\x40\x98\x84\x14\x00\x2a\xa2\xda\x61\x7b\x35\xac\x71\x05"
+ "\x43\x6f\x55\x3a\x28\x4b\xd1\xa4\xeb\x3b\xf5\x03\xc2\xf8\x3c\xfd"
+ "\x0a\xc4\x99\x1d\xa7\x7d\x08\x5c\xd1\x15\x70\x73\xb9\xdc\x5c\xf2"
+ "\xfe\x2c\xc6\x21\x8a\xbe\xbd\x52\x37\x64\x04\xe5\x06\x3e\xc6\x62"
+ "\xa1\xe9\x8e\xcb\xc1\x02\x03\x01\x00\x01\xa3\x82\x03\x9e\x30\x82"
+ "\x03\x9a\x30\x11\x06\x09\x60\x86\x48\x01\x86\xf8\x42\x01\x01\x04"
+ "\x04\x03\x02\x05\xa0\x30\x0b\x06\x03\x55\x1d\x0f\x04\x04\x03\x02"
+ "\x04\xb0\x30\x81\xc3\x06\x03\x55\x1d\x23\x04\x81\xbb\x30\x81\xb8"
+ "\x80\x14\xca\xca\x62\x86\x04\x05\xf0\xf5\x9b\x38\xd2\x2c\x3c\x8c"
+ "\x65\x0f\xc6\xba\xa5\x3c\xa1\x81\x94\xa4\x81\x91\x30\x81\x8e\x31"
+ "\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15"
+ "\x06\x03\x55\x04\x08\x13\x0e\x4e\x6f\x72\x74\x68\x20\x43\x61\x72"
+ "\x6f\x6c\x69\x6e\x61\x31\x10\x30\x0e\x06\x03\x55\x04\x07\x13\x07"
+ "\x52\x61\x6c\x65\x69\x67\x68\x31\x10\x30\x0e\x06\x03\x55\x04\x0a"
+ "\x13\x07\x4b\x61\x74\x65\x6c\x6c\x6f\x31\x14\x30\x12\x06\x03\x55"
+ "\x04\x0b\x13\x0b\x53\x6f\x6d\x65\x4f\x72\x67\x55\x6e\x69\x74\x31"
+ "\x2c\x30\x2a\x06\x03\x55\x04\x03\x13\x23\x73\x61\x74\x2d\x72\x32"
+ "\x32\x30\x2d\x31\x30\x2e\x6c\x61\x62\x2e\x65\x6e\x67\x2e\x72\x64"
+ "\x75\x32\x2e\x72\x65\x64\x68\x61\x74\x2e\x63\x6f\x6d\x82\x09\x00"
+ "\xa4\xe7\xca\xeb\xbe\x43\x5d\xcc\x30\x1d\x06\x03\x55\x1d\x0e\x04"
+ "\x16\x04\x14\x0e\x8d\x7b\x53\xba\x5a\x9e\x92\x44\xe5\x64\x58\xa1"
+ "\xdb\x83\x47\x05\x3e\x32\xd3\x30\x13\x06\x03\x55\x1d\x25\x04\x0c"
+ "\x30\x0a\x06\x08\x2b\x06\x01\x05\x05\x07\x03\x02\x30\x2a\x06\x10"
+ "\x2b\x06\x01\x04\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x01"
+ "\x04\x16\x0c\x14\x6d\x6f\x72\x64\x6f\x72\x5f\x75\x65\x62\x65\x72"
+ "\x5f\x70\x72\x6f\x64\x75\x63\x74\x30\x16\x06\x10\x2b\x06\x01\x04"
+ "\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x03\x04\x02\x0c\x00"
+ "\x30\x16\x06\x10\x2b\x06\x01\x04\x01\x92\x08\x09\x01\xaa\xda\xbe"
+ "\xbe\xfa\x5b\x02\x04\x02\x0c\x00\x30\x16\x06\x10\x2b\x06\x01\x04"
+ "\x01\x92\x08\x09\x01\xaa\xda\xbe\xbe\xfa\x5b\x05\x04\x02\x0c\x00"
+ "\x30\x19\x06\x10\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe"
+ "\xbe\xfa\x72\x01\x04\x05\x0c\x03\x79\x75\x6d\x30\x24\x06\x11\x2b"
+ "\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x01"
+ "\x04\x0f\x0c\x0d\x75\x65\x62\x65\x72\x5f\x63\x6f\x6e\x74\x65\x6e"
+ "\x74\x30\x32\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda"
+ "\xbe\xbe\xfa\x72\x01\x02\x04\x1d\x0c\x1b\x31\x34\x36\x37\x33\x39"
+ "\x39\x32\x35\x37\x34\x33\x35\x5f\x75\x65\x62\x65\x72\x5f\x63\x6f"
+ "\x6e\x74\x65\x6e\x74\x30\x1d\x06\x11\x2b\x06\x01\x04\x01\x92\x08"
+ "\x09\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x05\x04\x08\x0c\x06\x43\x75"
+ "\x73\x74\x6f\x6d\x30\x1e\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09"
+ "\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x06\x04\x09\x0c\x07\x2f\x6d\x6f"
+ "\x72\x64\x6f\x72\x30\x17\x06\x11\x2b\x06\x01\x04\x01\x92\x08\x09"
+ "\x02\xaa\xda\xbe\xbe\xfa\x72\x01\x07\x04\x02\x0c\x00\x30\x18\x06"
+ "\x11\x2b\x06\x01\x04\x01\x92\x08\x09\x02\xaa\xda\xbe\xbe\xfa\x72"
+ "\x01\x08\x04\x03\x0c\x01\x31\x30\x24\x06\x0a\x2b\x06\x01\x04\x01"
+ "\x92\x08\x09\x04\x01\x04\x16\x0c\x14\x6d\x6f\x72\x64\x6f\x72\x5f"
+ "\x75\x65\x62\x65\x72\x5f\x70\x72\x6f\x64\x75\x63\x74\x30\x10\x06"
+ "\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x02\x04\x02\x0c\x00\x30"
+ "\x1d\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x03\x04\x0f\x0c"
+ "\x0d\x31\x34\x36\x37\x33\x39\x39\x32\x35\x37\x34\x33\x35\x30\x11"
+ "\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x05\x04\x03\x0c\x01"
+ "\x31\x30\x24\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x06\x04"
+ "\x16\x0c\x14\x32\x30\x31\x36\x2d\x30\x37\x2d\x30\x31\x54\x31\x38"
+ "\x3a\x35\x34\x3a\x31\x37\x5a\x30\x24\x06\x0a\x2b\x06\x01\x04\x01"
+ "\x92\x08\x09\x04\x07\x04\x16\x0c\x14\x32\x30\x34\x39\x2d\x31\x32"
+ "\x2d\x30\x31\x54\x31\x33\x3a\x30\x30\x3a\x30\x30\x5a\x30\x11\x06"
+ "\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x0c\x04\x03\x0c\x01\x30"
+ "\x30\x11\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04\x0e\x04\x03"
+ "\x0c\x01\x30\x30\x11\x06\x0a\x2b\x06\x01\x04\x01\x92\x08\x09\x04"
+ "\x0b\x04\x03\x0c\x01\x31\x30\x34\x06\x0a\x2b\x06\x01\x04\x01\x92"
+ "\x08\x09\x05\x01\x04\x26\x0c\x24\x39\x34\x35\x33\x66\x38\x65\x36"
+ "\x2d\x38\x34\x62\x32\x2d\x34\x38\x32\x65\x2d\x61\x33\x65\x61\x2d"
+ "\x30\x31\x63\x33\x62\x33\x65\x32\x36\x36\x61\x35\x30\x0d\x06\x09"
+ "\x2a\x86\x48\x86\xf7\x0d\x01\x01\x05\x05\x00\x03\x82\x01\x01\x00"
+ "\xf7\x4d\xf3\x30\x53\xcd\x35\xbf\x49\x07\x29\x9b\xf0\x7a\xaa\x49"
+ "\x60\xda\xce\x14\x45\xb5\x32\x8f\xda\xc3\xce\x6b\xec\xbf\x20\xc0"
+ "\x05\xa3\x3a\x89\xc4\x7d\x66\x34\xfc\xf3\x16\xb8\xf3\x03\xda\xfc"
+ "\x82\x4a\xb8\x97\xf8\x67\x3d\xc2\x8c\x78\xb4\x6d\xb8\xbb\x18\xec"
+ "\x36\xee\xc4\x28\x79\xda\xfe\xa1\x1f\xaf\x0b\x3f\xe4\x75\xde\x83"
+ "\xff\x6b\xf9\x11\x60\x09\x57\xea\x85\x34\xed\x60\xe2\x94\x8b\xd6"
+ "\xf2\x21\x9b\xda\x97\x99\xf3\x0d\xa9\x0f\xb5\x3b\x3a\x8f\x96\x8d"
+ "\x0b\xdf\x30\x17\x03\xe6\x47\xc3\x71\x32\x09\x18\xbc\xc0\xa9\x83"
+ "\x7e\xb7\x5f\x5c\xbb\xeb\x0a\x18\x3f\xa9\x40\x98\xae\x57\xab\x99"
+ "\x3d\x47\x1b\x98\x8a\xdc\x6e\x85\xa2\xea\x5e\x21\x80\xa9\xb5\x48"
+ "\xc9\x1d\x63\xc1\x1b\xe6\x01\xa1\xbd\x84\x38\x7f\x1a\x43\xa5\xd4"
+ "\x7f\x41\x5b\xf6\x88\x33\xb0\xf1\xb8\x8f\xe1\x39\x69\x6f\x60\x13"
+ "\xd3\x5d\x70\xde\x95\x0d\x2f\xa9\x89\x6c\xd4\x3a\xeb\x22\x59\xe6"
+ "\x31\x67\x71\xa5\xed\xfb\xcb\x20\x11\x0c\x31\x2e\xe0\x98\x9a\x3b"
+ "\x9c\x7b\xa2\x74\x6f\x87\x97\xa1\xd9\x82\x7f\x7d\x62\x6b\x45\x6c"
+ "\x0b\x5e\x25\x43\x8a\x20\x16\x7d\xe5\x84\x18\x3f\x7c\xda\xfc\xf9";
-int der_data_size = sizeof(der_data)-1;
+int der_data_size = sizeof (der_data) - 1;
-char new_data[4*1024];
+char new_data[4 * 1024];
int
-main (int argc, char** argv)
+main (int argc, char **argv)
{
int result = 0;
asn1_node definitions = NULL, node1 = NULL;
@@ -170,15 +170,17 @@
exit (1);
}
- result = asn1_der_decoding (&node1, der_data, der_data_size, errorDescription);
+ result =
+ asn1_der_decoding (&node1, der_data, der_data_size, errorDescription);
if (result != ASN1_SUCCESS)
{
printf ("error in %d: %s\n", __LINE__, errorDescription);
exit (1);
}
- new_data_size = sizeof(new_data);
- result = asn1_der_coding (node1, "", new_data, &new_data_size, errorDescription);
+ new_data_size = sizeof (new_data);
+ result =
+ asn1_der_coding (node1, "", new_data, &new_data_size, errorDescription);
if (result != ASN1_SUCCESS)
{
printf ("error in %d\n", __LINE__);
@@ -192,7 +194,7 @@
exit (1);
}
- if (memcmp(new_data, der_data, der_data_size) != 0)
+ if (memcmp (new_data, der_data, der_data_size) != 0)
{
printf ("error in %d\n", __LINE__);
exit (1);
diff --git a/tests/copynode.c b/tests/copynode.c
index c4b60c5..d79a97d 100644
--- a/tests/copynode.c
+++ b/tests/copynode.c
@@ -127,7 +127,7 @@
exit (1);
}
- result = asn1_copy_node(cpy_node, "", asn1_element, "");
+ result = asn1_copy_node (cpy_node, "", asn1_element, "");
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -136,7 +136,7 @@
}
/* test whether the copied node encodes the same */
- size2 = sizeof(buffer2);
+ size2 = sizeof (buffer2);
result = asn1_der_coding (cpy_node, "", buffer2, &size2, NULL);
if (result != ASN1_SUCCESS)
{
@@ -145,16 +145,16 @@
exit (1);
}
- if (size2 != size || memcmp(buffer, buffer2, size) != 0)
+ if (size2 != size || memcmp (buffer, buffer2, size) != 0)
{
- printf("DER encoded data differ!\n");
- exit(1);
+ printf ("DER encoded data differ!\n");
+ exit (1);
}
asn1_delete_structure (&cpy_node);
/* Test asn1_dup_node */
- cpy_node = asn1_dup_node(asn1_element, "");
+ cpy_node = asn1_dup_node (asn1_element, "");
if (cpy_node == NULL)
{
printf ("Cannot copy node (dup_node)\n");
@@ -162,7 +162,7 @@
}
/* test whether the copied node encodes the same */
- size2 = sizeof(buffer2);
+ size2 = sizeof (buffer2);
result = asn1_der_coding (cpy_node, "", buffer2, &size2, NULL);
if (result != ASN1_SUCCESS)
{
@@ -171,13 +171,15 @@
exit (1);
}
- if (size2 != size || memcmp(buffer, buffer2, size) != 0)
+ if (size2 != size || memcmp (buffer, buffer2, size) != 0)
{
- printf("DER encoded data differ!\n");
- exit(1);
+ printf ("DER encoded data differ!\n");
+ exit (1);
}
- result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "tbsCertList.issuer", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (asn1_element, buffer, size,
+ "tbsCertList.issuer", &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -186,11 +188,14 @@
}
if (start != 24 && end != 291)
{
- printf("Error in start and end values for issuer. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for issuer. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
- result = asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature", &start, &end);
+ result =
+ asn1_der_decoding_startEnd (asn1_element, buffer, size, "signature",
+ &start, &end);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
@@ -199,8 +204,9 @@
}
if (start != 372 && end != 503)
{
- printf("Error in start and end values for signature. Have: %d..%d\n", start, end);
- exit(1);
+ printf ("Error in start and end values for signature. Have: %d..%d\n",
+ start, end);
+ exit (1);
}
/* Clear the definition structures */
diff --git a/tests/object-id-decoding.c b/tests/object-id-decoding.c
index 7052b4f..06a6c52 100644
--- a/tests/object-id-decoding.c
+++ b/tests/object-id-decoding.c
@@ -36,13 +36,13 @@
{.der_len = 5,
.der = (void *) "\x06\x03\x80\x37\x03",
.oid = "2.999.3",
- .expected_error = ASN1_DER_ERROR /* leading 0x80 */
- },
+ .expected_error = ASN1_DER_ERROR /* leading 0x80 */
+ },
{.der_len = 12,
.der = (void *) "\x06\x0a\x2b\x06\x01\x80\x01\x92\x08\x09\x05\x01",
.oid = "1.3.6.1.4.1.2312.9.5.1",
- .expected_error = ASN1_DER_ERROR /* leading 0x80 */
- },
+ .expected_error = ASN1_DER_ERROR /* leading 0x80 */
+ },
{.der_len = 6,
.der = (void *) "\x06\x04\x01\x02\x03\x04",
.oid = "0.1.2.3.4",
@@ -60,7 +60,9 @@
.oid = "1.3.6.1.4.1.2312.9.5.1",
.expected_error = ASN1_SUCCESS},
{.der_len = 19,
- .der = (void *) "\x06\x11\xfa\x80\x00\x00\x00\x0e\x01\x0e\xfa\x80\x00\x00\x00\x0e\x63\x6f\x6d",
+ .der =
+ (void *)
+ "\x06\x11\xfa\x80\x00\x00\x00\x0e\x01\x0e\xfa\x80\x00\x00\x00\x0e\x63\x6f\x6d",
.oid = "2.1998768.0.0.14.1.14.1998848.0.0.14.99.111.109",
.expected_error = ASN1_SUCCESS},
{.der_len = 19,
@@ -82,25 +84,26 @@
{
/* decode */
ret =
- asn1_get_object_id_der (tv[i].der+1,
- tv[i].der_len-1, &ret_len, str,
+ asn1_get_object_id_der (tv[i].der + 1,
+ tv[i].der_len - 1, &ret_len, str,
sizeof (str));
if (ret != tv[i].expected_error)
{
fprintf (stderr,
"%d: asn1_get_object_id_der iter %lu: got '%s' expected %d\n",
- __LINE__, (unsigned long) i, asn1_strerror(ret), tv[i].expected_error);
+ __LINE__, (unsigned long) i, asn1_strerror (ret),
+ tv[i].expected_error);
return 1;
}
if (tv[i].expected_error != ASN1_SUCCESS)
- continue;
+ continue;
- if (ret_len != tv[i].der_len-1)
+ if (ret_len != tv[i].der_len - 1)
{
fprintf (stderr,
"%d: iter %lu: error in DER, length returned is %d, had %d\n",
- __LINE__, (unsigned long)i, ret_len, tv[i].der_len-1);
+ __LINE__, (unsigned long) i, ret_len, tv[i].der_len - 1);
return 1;
}
diff --git a/tests/object-id-encoding.c b/tests/object-id-encoding.c
index 8736abd..1a33969 100644
--- a/tests/object-id-encoding.c
+++ b/tests/object-id-encoding.c
@@ -36,23 +36,23 @@
{.der_len = 0,
.der = (void *) "",
.oid = "5.999.3",
- .expected_error = ASN1_VALUE_NOT_VALID /* cannot start with 5 */
- },
+ .expected_error = ASN1_VALUE_NOT_VALID /* cannot start with 5 */
+ },
{.der_len = 0,
.der = (void *) "",
.oid = "0.48.9",
- .expected_error = ASN1_VALUE_NOT_VALID /* second field cannot be 48 */
- },
+ .expected_error = ASN1_VALUE_NOT_VALID /* second field cannot be 48 */
+ },
{.der_len = 0,
.der = (void *) "",
.oid = "1.40.9",
- .expected_error = ASN1_VALUE_NOT_VALID /* second field cannot be 40 */
- },
+ .expected_error = ASN1_VALUE_NOT_VALID /* second field cannot be 40 */
+ },
{.der_len = 4,
.der = (void *) "\x06\x02\x4f\x63",
.oid = "1.39.99",
.expected_error = ASN1_SUCCESS,
- },
+ },
{.der_len = 6,
.der = (void *) "\x06\x04\x01\x02\x03\x04",
.oid = "0.1.2.3.4",
@@ -70,7 +70,9 @@
.oid = "1.3.6.1.4.1.2312.9.5.1",
.expected_error = ASN1_SUCCESS},
{.der_len = 19,
- .der = (void *) "\x06\x11\xfa\x80\x00\x00\x00\x0e\x01\x0e\xfa\x80\x00\x00\x00\x0e\x63\x6f\x6d",
+ .der =
+ (void *)
+ "\x06\x11\xfa\x80\x00\x00\x00\x0e\x01\x0e\xfa\x80\x00\x00\x00\x0e\x63\x6f\x6d",
.oid = "2.1998768.0.0.14.1.14.1998848.0.0.14.99.111.109",
.expected_error = ASN1_SUCCESS},
{.der_len = 19,
@@ -87,40 +89,41 @@
unsigned char der[128];
int ret, der_len, i, j;
- for (i = 0; i < (int)(sizeof (tv) / sizeof (tv[0])); i++)
+ for (i = 0; i < (int) (sizeof (tv) / sizeof (tv[0])); i++)
{
- der_len = sizeof(der);
- ret = asn1_object_id_der(tv[i].oid, der, &der_len, 0);
+ der_len = sizeof (der);
+ ret = asn1_object_id_der (tv[i].oid, der, &der_len, 0);
if (ret != ASN1_SUCCESS)
{
if (ret == tv[i].expected_error)
continue;
fprintf (stderr,
"%d: iter %lu, encoding of OID failed: %s\n",
- __LINE__, (unsigned long) i, asn1_strerror(ret));
+ __LINE__, (unsigned long) i, asn1_strerror (ret));
return 1;
}
else if (ret != tv[i].expected_error)
- {
+ {
fprintf (stderr,
"%d: iter %lu, encoding of OID %s succeeded when expecting failure\n",
__LINE__, (unsigned long) i, tv[i].oid);
- return 1;
- }
+ return 1;
+ }
- if (der_len != tv[i].der_len || memcmp(der, tv[i].der, der_len) != 0)
+ if (der_len != tv[i].der_len || memcmp (der, tv[i].der, der_len) != 0)
{
fprintf (stderr,
"%d: iter %lu, re-encoding of OID %s resulted to different string (%d vs %d bytes)\n",
- __LINE__, (unsigned long) i, tv[i].oid, der_len, tv[i].der_len);
- fprintf(stderr, "\nGot:\t\t");
- for (j=0;j<der_len;j++)
- fprintf(stderr, "%.2x", der[j]);
+ __LINE__, (unsigned long) i, tv[i].oid, der_len,
+ tv[i].der_len);
+ fprintf (stderr, "\nGot:\t\t");
+ for (j = 0; j < der_len; j++)
+ fprintf (stderr, "%.2x", der[j]);
- fprintf(stderr, "\nExpected:\t");
- for (j=0;j<tv[i].der_len;j++)
- fprintf(stderr, "%.2x", tv[i].der[j]);
- fprintf(stderr, "\n");
+ fprintf (stderr, "\nExpected:\t");
+ for (j = 0; j < tv[i].der_len; j++)
+ fprintf (stderr, "%.2x", tv[i].der[j]);
+ fprintf (stderr, "\n");
return 1;
}
diff --git a/tests/ocsp-basic-response.c b/tests/ocsp-basic-response.c
index 252a87e..6c1efb6 100644
--- a/tests/ocsp-basic-response.c
+++ b/tests/ocsp-basic-response.c
@@ -24,7 +24,7 @@
#include <libtasn1.h>
int
-main (int argc, char** argv)
+main (int argc, char **argv)
{
int result = 0, len;
asn1_node definitions = NULL, node1 = NULL;
@@ -49,72 +49,87 @@
exit (1);
}
- result = asn1_create_element (definitions, "PKIX1.BasicOCSPResponse", &node1);
+ result =
+ asn1_create_element (definitions, "PKIX1.BasicOCSPResponse", &node1);
if (result != ASN1_SUCCESS)
{
fprintf (stderr, "error in %d\n", __LINE__);
exit (1);
}
- fp = fopen(datafile, "rb");
+ fp = fopen (datafile, "rb");
if (fp == NULL)
{
fprintf (stderr, "error in %d\n", __LINE__);
exit (1);
}
- data_size = fread(data, 1, sizeof(data), fp);
- fclose(fp);
+ data_size = fread (data, 1, sizeof (data), fp);
+ fclose (fp);
- result = asn1_der_decoding2 (&node1, data, &data_size, ASN1_DECODE_FLAG_STRICT_DER, errorDescription);
+ result =
+ asn1_der_decoding2 (&node1, data, &data_size, ASN1_DECODE_FLAG_STRICT_DER,
+ errorDescription);
if (result != ASN1_SUCCESS)
{
- fprintf (stderr, "error in %d: decoding: %s\n", __LINE__, errorDescription);
+ fprintf (stderr, "error in %d: decoding: %s\n", __LINE__,
+ errorDescription);
exit (1);
}
- len = sizeof(data);
- result = asn1_read_value(node1, "tbsResponseData.responderID", data, &len);
+ len = sizeof (data);
+ result = asn1_read_value (node1, "tbsResponseData.responderID", data, &len);
if (result != ASN1_SUCCESS)
{
fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
exit (1);
}
- if (strcmp(data, "byKey") != 0)
+ if (strcmp (data, "byKey") != 0)
{
fprintf (stderr, "error in %d: %s\n", __LINE__, data);
exit (1);
}
len = 0;
- result = asn1_read_value_type(node1, "tbsResponseData.responderID.byKey", NULL, &len, &etype);
+ result =
+ asn1_read_value_type (node1, "tbsResponseData.responderID.byKey", NULL,
+ &len, &etype);
if (result != ASN1_MEM_ERROR)
{
- fprintf (stderr, "error in %d: result is: %s\n", __LINE__, asn1_strerror(result));
+ fprintf (stderr, "error in %d: result is: %s\n", __LINE__,
+ asn1_strerror (result));
exit (1);
}
if (etype != ASN1_ETYPE_OCTET_STRING)
{
- fprintf (stderr, "error in %d: The type (%d) doesn't match octet string.\n", __LINE__, (int)etype);
+ fprintf (stderr,
+ "error in %d: The type (%d) doesn't match octet string.\n",
+ __LINE__, (int) etype);
exit (1);
}
if (len != 20)
{
- fprintf (stderr, "length doesn't match the expected (got: %d, should be: 20)\n", len);
+ fprintf (stderr,
+ "length doesn't match the expected (got: %d, should be: 20)\n",
+ len);
exit (1);
}
- len = sizeof(data);
- result = asn1_read_value(node1, "tbsResponseData.responderID.byKey", data, &len);
+ len = sizeof (data);
+ result =
+ asn1_read_value (node1, "tbsResponseData.responderID.byKey", data, &len);
if (result != ASN1_SUCCESS)
{
fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
exit (1);
}
- if (memcmp(data, "\x50\xEA\x73\x89\xDB\x29\xFB\x10\x8F\x9E\xE5\x01\x20\xD4\xDE\x79\x99\x48\x83\xF7", len) != 0)
+ if (memcmp
+ (data,
+ "\x50\xEA\x73\x89\xDB\x29\xFB\x10\x8F\x9E\xE5\x01\x20\xD4\xDE\x79\x99\x48\x83\xF7",
+ len) != 0)
{
fprintf (stderr, "contents don't match\n");
exit (1);
diff --git a/tests/octet-string.c b/tests/octet-string.c
index 3024d47..ec9b335 100644
--- a/tests/octet-string.c
+++ b/tests/octet-string.c
@@ -40,73 +40,75 @@
static const struct tv tv[] = {
{.name = "primitive octet strings",
.der_len = 10,
- .der_str =
- (void*)"\x04\x08\x01\x23\x45\x67\x89\xab\xcd\xef",
+ .der_str = (void *) "\x04\x08\x01\x23\x45\x67\x89\xab\xcd\xef",
.len = 8,
- .string =
- (void*)"\x01\x23\x45\x67\x89\xab\xcd\xef",
+ .string = (void *) "\x01\x23\x45\x67\x89\xab\xcd\xef",
.ber = 0},
{.der_len = 22,
.der_str =
- (void*)"\x04\x14\x13\x00\xd9\xa8\x47\xf7\xf2\x1c\xf4\xb0\xec\x5f\xc1\x73\xe5\x1b\x25\xc2\x62\x27",
+ (void *)
+ "\x04\x14\x13\x00\xd9\xa8\x47\xf7\xf2\x1c\xf4\xb0\xec\x5f\xc1\x73\xe5\x1b\x25\xc2\x62\x27",
.len = 20,
.string =
- (void*)"\x13\x00\xD9\xA8\x47\xF7\xF2\x1C\xF4\xB0\xEC\x5F\xC1\x73\xE5\x1B\x25\xC2\x62\x27"},
+ (void *)
+ "\x13\x00\xD9\xA8\x47\xF7\xF2\x1C\xF4\xB0\xEC\x5F\xC1\x73\xE5\x1B\x25\xC2\x62\x27"},
{.name = "long type of length",
.der_len = 23,
.der_str =
- (void*)"\x04\x81\x14\x13\x00\xd9\xa8\x47\xf7\xf2\x1c\xf4\xb0\xec\x5f\xc1\x73\xe5\x1b\x25\xc2\x62\x27",
+ (void *)
+ "\x04\x81\x14\x13\x00\xd9\xa8\x47\xf7\xf2\x1c\xf4\xb0\xec\x5f\xc1\x73\xe5\x1b\x25\xc2\x62\x27",
.len = 20,
.string =
- (void*)"\x13\x00\xD9\xA8\x47\xF7\xF2\x1C\xF4\xB0\xEC\x5F\xC1\x73\xE5\x1B\x25\xC2\x62\x27",
+ (void *)
+ "\x13\x00\xD9\xA8\x47\xF7\xF2\x1C\xF4\xB0\xEC\x5F\xC1\x73\xE5\x1B\x25\xC2\x62\x27",
.ber = 1},
{.der_len = 11,
- .der_str =
- (void*)"\x04\x81\x08\x01\x23\x45\x67\x89\xab\xcd\xef",
+ .der_str = (void *) "\x04\x81\x08\x01\x23\x45\x67\x89\xab\xcd\xef",
.len = 8,
- .string =
- (void*)"\x01\x23\x45\x67\x89\xab\xcd\xef",
+ .string = (void *) "\x01\x23\x45\x67\x89\xab\xcd\xef",
.ber = 1},
{.name = "constructed - indefinite",
.der_len = 11,
- .der_str = (void*)"\x24\x80\x04\x05\x01\x02\x03\x04\x05\x00\x00",
+ .der_str = (void *) "\x24\x80\x04\x05\x01\x02\x03\x04\x05\x00\x00",
.len = 5,
- .string = (void*)"\x01\x02\x03\x04\x05",
+ .string = (void *) "\x01\x02\x03\x04\x05",
.ber = 1,
},
{.name = "constructed - definite - concat",
.der_len = 12,
- .der_str = (void*)"\x24\x0a\x04\x04\x0a\x0b\x0c\x0d\x04\x02\x0e\x0f",
+ .der_str = (void *) "\x24\x0a\x04\x04\x0a\x0b\x0c\x0d\x04\x02\x0e\x0f",
.len = 6,
- .string = (void*)"\x0a\x0b\x0c\x0d\x0e\x0f",
+ .string = (void *) "\x0a\x0b\x0c\x0d\x0e\x0f",
.ber = 1,
},
{.name = "constructed - definite - recursive",
.der_len = 15,
- .der_str = (void*)"\x24\x0d\x04\x04\x0a\x0b\x0c\x0d\x24\x05\x04\x00\x04\x01\x0f",
+ .der_str =
+ (void *) "\x24\x0d\x04\x04\x0a\x0b\x0c\x0d\x24\x05\x04\x00\x04\x01\x0f",
.len = 5,
- .string = (void*)"\x0a\x0b\x0c\x0d\x0f",
+ .string = (void *) "\x0a\x0b\x0c\x0d\x0f",
.ber = 1,
},
{.name = "constructed - definite - single",
.der_len = 7,
- .der_str = (void*)"\x24\x05\x04\x03\x01\x02\x03",
+ .der_str = (void *) "\x24\x05\x04\x03\x01\x02\x03",
.len = 3,
- .string = (void*)"\x01\x02\x03",
+ .string = (void *) "\x01\x02\x03",
.ber = 1,
},
/* a large amount of recursive indefinite encoding */
{.name = "a large amount of recursive indefinite encoding",
.der_len = 29325,
- .der_str = (void*)"\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80",
+ .der_str =
+ (void *)
+ "\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80\x24\x80",
.len = 0,
.ber = 1,
- .expected_error = ASN1_DER_ERROR
- }
+ .expected_error = ASN1_DER_ERROR}
};
int
@@ -135,8 +137,7 @@
{
fprintf (stderr,
"%d: asn1_get_octet_der: %s: got %d expected %d\n",
- __LINE__, tv[i].name, ret,
- tv[i].expected_error);
+ __LINE__, tv[i].name, ret, tv[i].expected_error);
return 1;
}
if (tv[i].expected_error)
@@ -157,15 +158,15 @@
"%d: memcmp: %s: got invalid decoding\n",
__LINE__, tv[i].name);
- fprintf(stderr, "\nGot:\t\t");
- for (j=0;j<str_size;j++)
- fprintf(stderr, "%.2x", str[j]);
+ fprintf (stderr, "\nGot:\t\t");
+ for (j = 0; j < str_size; j++)
+ fprintf (stderr, "%.2x", str[j]);
- fprintf(stderr, "\nExpected:\t");
- for (j=0;j<tv[i].len;j++)
- fprintf(stderr, "%.2x", tv[i].string[j]);
- fprintf(stderr, "\n");
- return 1;
+ fprintf (stderr, "\nExpected:\t");
+ for (j = 0; j < tv[i].len; j++)
+ fprintf (stderr, "%.2x", tv[i].string[j]);
+ fprintf (stderr, "\n");
+ return 1;
}
/* Encode */
@@ -176,8 +177,7 @@
|| memcmp (tv[i].der_str + 1, der, tv[i].der_len - 1) != 0)
{
fprintf (stderr,
- "encoding: %s: got invalid encoding\n",
- tv[i].name);
+ "encoding: %s: got invalid encoding\n", tv[i].name);
return 1;
}
}
@@ -185,16 +185,18 @@
ret =
asn1_decode_simple_ber (ASN1_ETYPE_OCTET_STRING,
tv[i].der_str, tv[i].der_len,
- &tmp, (unsigned int*)&str_size, (unsigned int*)&der_len);
+ &tmp, (unsigned int *) &str_size,
+ (unsigned int *) &der_len);
if (ret != tv[i].expected_error)
{
fprintf (stderr,
"%d: asn1_decode_simple_ber: %s: got %s expected %s\n",
- __LINE__, tv[i].name, asn1_strerror(ret), asn1_strerror(tv[i].expected_error));
+ __LINE__, tv[i].name, asn1_strerror (ret),
+ asn1_strerror (tv[i].expected_error));
return 1;
}
if (tv[i].expected_error)
- continue;
+ continue;
if (der_len != tv[i].der_len)
{
@@ -209,15 +211,15 @@
fprintf (stderr,
"%d: memcmp: %s: got invalid decoding\n",
__LINE__, tv[i].name);
- fprintf(stderr, "\nGot:\t\t");
- for (j=0;j<str_size;j++)
- fprintf(stderr, "%.2x", tmp[j]);
+ fprintf (stderr, "\nGot:\t\t");
+ for (j = 0; j < str_size; j++)
+ fprintf (stderr, "%.2x", tmp[j]);
- fprintf(stderr, "\nExpected:\t");
- for (j=0;j<tv[i].len;j++)
- fprintf(stderr, "%.2x", tv[i].string[j]);
- fprintf(stderr, "\n");
- return 1;
+ fprintf (stderr, "\nExpected:\t");
+ for (j = 0; j < tv[i].len; j++)
+ fprintf (stderr, "%.2x", tv[i].string[j]);
+ fprintf (stderr, "\n");
+ return 1;
}
free (tmp);
tmp = NULL;
diff --git a/tests/setof.c b/tests/setof.c
index d1ad223..8a4875a 100644
--- a/tests/setof.c
+++ b/tests/setof.c
@@ -91,58 +91,64 @@
}
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "?LAST.val", "\x00\x02", 2);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x00\x01\x00\x00", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x00\x01\x00\x00", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x00", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x00", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x02", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x02", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x01", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x00\x00\x00\x01", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x01\x00\x00\x00", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x01\x00\x00\x00", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
- result = asn1_write_value (asn1_element, "?LAST.val", "\x01\x01\x00\x00", 4);
- assert(result == ASN1_SUCCESS);
+ result =
+ asn1_write_value (asn1_element, "?LAST.val", "\x01\x01\x00\x00", 4);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "?LAST.val", "\x05", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "", "NEW", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
result = asn1_write_value (asn1_element, "?LAST.val", "\x01", 1);
- assert(result == ASN1_SUCCESS);
+ assert (result == ASN1_SUCCESS);
/* Clear the definition structures */
@@ -157,25 +163,29 @@
asn1_delete_structure (&asn1_element);
asn1_delete_structure (&definitions);
- if (data_size != sizeof(expected_der) || memcmp(data, expected_der, data_size) != 0)
+ if (data_size != sizeof (expected_der)
+ || memcmp (data, expected_der, data_size) != 0)
{
- fprintf(stderr, "encoded data differ to expected [%d - %d]!\n", data_size, (int)sizeof(expected_der));
- printf("static unsigned char got[] = {\n");
- for (i=0;i<(unsigned)data_size;i++) {
- printf("0x%.2x, ", (unsigned)data[i]);
- if ((i+1) % 8 == 0)
- printf("\n");
- }
- printf("};\n");
+ fprintf (stderr, "encoded data differ to expected [%d - %d]!\n",
+ data_size, (int) sizeof (expected_der));
+ printf ("static unsigned char got[] = {\n");
+ for (i = 0; i < (unsigned) data_size; i++)
+ {
+ printf ("0x%.2x, ", (unsigned) data[i]);
+ if ((i + 1) % 8 == 0)
+ printf ("\n");
+ }
+ printf ("};\n");
- printf("static unsigned char expected[] = {\n");
- for (i=0;i<(unsigned)sizeof(expected_der);i++) {
- printf("0x%.2x, ", (unsigned)expected_der[i]);
- if ((i+1) % 8 == 0)
- printf("\n");
- }
- printf("};\n");
- exit(1);
+ printf ("static unsigned char expected[] = {\n");
+ for (i = 0; i < (unsigned) sizeof (expected_der); i++)
+ {
+ printf ("0x%.2x, ", (unsigned) expected_der[i]);
+ if ((i + 1) % 8 == 0)
+ printf ("\n");
+ }
+ printf ("};\n");
+ exit (1);
}
if (verbose)
diff --git a/tests/spc_pe_image_data.c b/tests/spc_pe_image_data.c
index a6bff0c..59bab5c 100644
--- a/tests/spc_pe_image_data.c
+++ b/tests/spc_pe_image_data.c
@@ -23,126 +23,133 @@
#include <string.h>
#include <libtasn1.h>
-int main (int argc, char** argv)
+int
+main (int argc, char **argv)
{
- int result = 0, len;
- asn1_node definitions = NULL, node1 = NULL;
- char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
- const char *choicefile = getenv ("ASN1_MSCAT");
- const char *datafile = getenv ("ASN1_SPC_PE_IMAGE_DATA");
- FILE *fp;
- char data[1024];
- int data_size = sizeof (data);
- unsigned etype;
- int cmp;
+ int result = 0, len;
+ asn1_node definitions = NULL, node1 = NULL;
+ char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE];
+ const char *choicefile = getenv ("ASN1_MSCAT");
+ const char *datafile = getenv ("ASN1_SPC_PE_IMAGE_DATA");
+ FILE *fp;
+ char data[1024];
+ int data_size = sizeof (data);
+ unsigned etype;
+ int cmp;
- if (choicefile == NULL) {
- choicefile = "mscat.asn";
- }
+ if (choicefile == NULL)
+ {
+ choicefile = "mscat.asn";
+ }
- if (datafile == NULL) {
- datafile = "spc_pe_image_data.der";
- }
+ if (datafile == NULL)
+ {
+ datafile = "spc_pe_image_data.der";
+ }
- result = asn1_parser2tree(choicefile, &definitions, errorDescription);
- if (result != ASN1_SUCCESS) {
- fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription);
- exit (1);
- }
+ result = asn1_parser2tree (choicefile, &definitions, errorDescription);
+ if (result != ASN1_SUCCESS)
+ {
+ fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
+ exit (1);
+ }
- result = asn1_create_element(definitions,
- "CATALOG.SpcPEImageData",
- &node1);
- if (result != ASN1_SUCCESS) {
- fprintf(stderr, "error in %d\n", __LINE__);
- exit (1);
- }
+ result = asn1_create_element (definitions,
+ "CATALOG.SpcPEImageData", &node1);
+ if (result != ASN1_SUCCESS)
+ {
+ fprintf (stderr, "error in %d\n", __LINE__);
+ exit (1);
+ }
- fp = fopen(datafile, "rb");
- if (fp == NULL) {
- fprintf (stderr, "error in %d\n", __LINE__);
- exit(1);
- }
- data_size = fread(data, 1, sizeof(data), fp);
- fclose(fp);
+ fp = fopen (datafile, "rb");
+ if (fp == NULL)
+ {
+ fprintf (stderr, "error in %d\n", __LINE__);
+ exit (1);
+ }
+ data_size = fread (data, 1, sizeof (data), fp);
+ fclose (fp);
- result = asn1_der_decoding2(&node1,
- data,
- &data_size,
- ASN1_DECODE_FLAG_STRICT_DER,
- errorDescription);
- if (result != ASN1_SUCCESS) {
- fprintf(stderr, "error in %d: decoding: %s\n", __LINE__, errorDescription);
- exit(1);
- }
+ result = asn1_der_decoding2 (&node1,
+ data,
+ &data_size,
+ ASN1_DECODE_FLAG_STRICT_DER, errorDescription);
+ if (result != ASN1_SUCCESS)
+ {
+ fprintf (stderr, "error in %d: decoding: %s\n", __LINE__,
+ errorDescription);
+ exit (1);
+ }
- len = 0;
- result = asn1_read_value_type(node1,
- "flags",
- NULL,
- &len,
- &etype);
- if (result != ASN1_MEM_ERROR) {
- fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription);
- exit(1);
- }
+ len = 0;
+ result = asn1_read_value_type (node1, "flags", NULL, &len, &etype);
+ if (result != ASN1_MEM_ERROR)
+ {
+ fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
+ exit (1);
+ }
- if ((size_t)len >= sizeof(data)) {
- fprintf(stderr,
- "error len=%d, sizeof(data)=%zu\n",
- len,
- sizeof(data));
- exit(1);
- }
+ if ((size_t) len >= sizeof (data))
+ {
+ fprintf (stderr,
+ "error len=%d, sizeof(data)=%zu\n", len, sizeof (data));
+ exit (1);
+ }
- result = asn1_read_value(node1, "flags", data, &len);
- if (result != ASN1_SUCCESS) {
- fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription);
- exit (1);
- }
+ result = asn1_read_value (node1, "flags", data, &len);
+ if (result != ASN1_SUCCESS)
+ {
+ fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
+ exit (1);
+ }
- etype = 0;
- len = 0;
- result = asn1_read_value_type(node1, "link", NULL, &len, &etype);
- if (result != ASN1_MEM_ERROR)
- {
- fprintf(stderr,
- "error in %d: result is: %s\n",
- __LINE__,
- asn1_strerror(result));
- exit(1);
- }
+ etype = 0;
+ len = 0;
+ result = asn1_read_value_type (node1, "link", NULL, &len, &etype);
+ if (result != ASN1_MEM_ERROR)
+ {
+ fprintf (stderr,
+ "error in %d: result is: %s\n",
+ __LINE__, asn1_strerror (result));
+ exit (1);
+ }
- if (etype != ASN1_ETYPE_CHOICE) {
- fprintf(stderr,
- "error in %d: The type (%u) doesn't match choice.\n",
- __LINE__,
- etype);
- exit(1);
- }
+ if (etype != ASN1_ETYPE_CHOICE)
+ {
+ fprintf (stderr,
+ "error in %d: The type (%u) doesn't match choice.\n",
+ __LINE__, etype);
+ exit (1);
+ }
- if (len != 5) {
- fprintf (stderr, "length doesn't match the expected (got: %d, should be: 20)\n", len);
- exit (1);
- }
+ if (len != 5)
+ {
+ fprintf (stderr,
+ "length doesn't match the expected (got: %d, should be: 20)\n",
+ len);
+ exit (1);
+ }
- len = sizeof(data);
- result = asn1_read_value(node1, "link", data, &len);
- if (result != ASN1_SUCCESS) {
- fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription);
- exit (1);
- }
+ len = sizeof (data);
+ result = asn1_read_value (node1, "link", data, &len);
+ if (result != ASN1_SUCCESS)
+ {
+ fprintf (stderr, "error in %d: %s\n", __LINE__, errorDescription);
+ exit (1);
+ }
- cmp = memcmp(data, "file", len);
- if (cmp != 0) {
- fprintf(stderr, "contents don't match\n");
- exit(1);
- }
+ cmp = memcmp (data, "file", len);
+ if (cmp != 0)
+ {
+ fprintf (stderr, "contents don't match\n");
+ exit (1);
+ }
- printf("SUCCESS\n");
+ printf ("SUCCESS\n");
- asn1_delete_structure (&node1);
- asn1_delete_structure (&definitions);
+ asn1_delete_structure (&node1);
+ asn1_delete_structure (&definitions);
- return 0;
+ return 0;
}
diff --git a/tests/strict-der.c b/tests/strict-der.c
index a3ec5d1..ea43242 100644
--- a/tests/strict-der.c
+++ b/tests/strict-der.c
@@ -96,11 +96,13 @@
exit (1);
}
- result = asn1_der_decoding2 (&asn1_element, buffer, &size, 0, errorDescription);
+ result =
+ asn1_der_decoding2 (&asn1_element, buffer, &size, 0, errorDescription);
if (result != ASN1_SUCCESS)
{
asn1_perror (result);
- printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription);
+ printf ("Cannot decode BER data (size %ld) in %s: %s\n", (long) size,
+ indeffile, errorDescription);
exit (1);
}
@@ -116,11 +118,14 @@
exit (1);
}
- result = asn1_der_decoding2 (&asn1_element, buffer, &size, ASN1_DECODE_FLAG_STRICT_DER, errorDescription);
+ result =
+ asn1_der_decoding2 (&asn1_element, buffer, &size,
+ ASN1_DECODE_FLAG_STRICT_DER, errorDescription);
if (result == ASN1_SUCCESS)
{
asn1_perror (result);
- printf ("Should not have decoded DER data (size %ld) in %s: %s\n", (long) size, indeffile, errorDescription);
+ printf ("Should not have decoded DER data (size %ld) in %s: %s\n",
+ (long) size, indeffile, errorDescription);
exit (1);
}