diff --git a/Makefile b/Makefile index 15b4fcb578..2c484dc854 100644 --- a/Makefile +++ b/Makefile @@ -74,9 +74,9 @@ examples_win: clean_examples_win: $(foreach X, $(EXAMPLES_WIN), $(MAKE) -C $(X) clean &) -test/packed_fs.c: Makefile src/ssi.h test/fuzz.c test/data/a.txt +test/packed_fs.c: Makefile src/ssi.h test/fuzz.c test/data/a.txt test/data/ca.pem $(CC) $(CFLAGS) test/pack.c -o pack - $(RUN) ./pack Makefile src/ssi.h test/fuzz.c test/data/a.txt test/data/range.txt > $@ + $(RUN) ./pack Makefile src/ssi.h test/fuzz.c test/data/a.txt test/data/range.txt test/data/ca.pem > $@ # Check that all external (exported) symbols have "mg_" prefix mg_prefix: mongoose.c mongoose.h @@ -175,7 +175,7 @@ mongoose.c: Makefile $(wildcard src/*.c) $(wildcard src/drivers/*.c) (cat src/license.h; echo; echo '#include "mongoose.h"' ; (for F in src/*.c src/drivers/*.c ; do echo; echo '#ifdef MG_ENABLE_LINES'; echo "#line 1 \"$$F\""; echo '#endif'; cat $$F | sed -e 's,#include ".*,,'; done))> $@ mongoose.h: $(HDRS) Makefile - (cat src/license.h; echo; echo '#ifndef MONGOOSE_H'; echo '#define MONGOOSE_H'; echo; cat src/version.h ; echo; echo '#ifdef __cplusplus'; echo 'extern "C" {'; echo '#endif'; cat src/arch.h src/arch_*.h src/net_ft.h src/net_lwip.h src/net_rl.h src/config.h src/str.h src/queue.h src/fmt.h src/printf.h src/log.h src/timer.h src/fs.h src/util.h src/url.h src/iobuf.h src/base64.h src/md5.h src/sha1.h src/event.h src/net.h src/http.h src/ssi.h src/tls.h src/tls_mbed.h src/tls_openssl.h src/ws.h src/sntp.h src/mqtt.h src/dns.h src/json.h src/rpc.h src/ota.h src/net_builtin.h src/drivers/*.h src/certs.h | sed -e '/keep/! s,#include ".*,,' -e 's,^#pragma once,,'; echo; echo '#ifdef __cplusplus'; echo '}'; echo '#endif'; echo '#endif // MONGOOSE_H')> $@ + (cat src/license.h; echo; echo '#ifndef MONGOOSE_H'; echo '#define MONGOOSE_H'; echo; cat src/version.h ; echo; echo '#ifdef __cplusplus'; echo 'extern "C" {'; echo '#endif'; cat src/arch.h src/arch_*.h src/net_ft.h src/net_lwip.h src/net_rl.h src/config.h src/str.h src/queue.h src/fmt.h src/printf.h src/log.h src/timer.h src/fs.h src/util.h src/url.h src/iobuf.h src/base64.h src/md5.h src/sha1.h src/event.h src/net.h src/http.h src/ssi.h src/tls.h src/tls_mbed.h src/tls_openssl.h src/ws.h src/sntp.h src/mqtt.h src/dns.h src/json.h src/rpc.h src/ota.h src/net_builtin.h src/drivers/*.h | sed -e '/keep/! s,#include ".*,,' -e 's,^#pragma once,,'; echo; echo '#ifdef __cplusplus'; echo '}'; echo '#endif'; echo '#endif // MONGOOSE_H')> $@ clean: clean_examples clean_embedded diff --git a/examples/http-client/Makefile b/examples/http-client/Makefile index bbdb7b6dd9..2d3ed92d95 100644 --- a/examples/http-client/Makefile +++ b/examples/http-client/Makefile @@ -1,14 +1,16 @@ PROG ?= example # Program we are building +PACK ?= ./pack # Packing executable DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary + PACK = pack.exe # Packing executable CC = gcc # Use MinGW gcc compiler CFLAGS += -lws2_32 # Link against Winsock library DELETE = cmd /C del /Q /F /S # Command prompt command to delete files @@ -25,6 +27,11 @@ $(PROG): $(SOURCES) # Build program from sources clean: # Cleanup. Delete built program and all build artifacts $(DELETE) $(PROG) *.o *.obj *.exe *.dSYM mbedtls +# Generate packed filesystem for serving cert +packed_fs.c: $(wildcard certs/*) Makefile + $(CC) ../../test/pack.c -o $(PACK) + $(PACK) $(wildcard certs/*) > $@ + # see https://mongoose.ws/tutorials/tls/#how-to-build for TLS build options mbedtls: # Pull and build mbedTLS library diff --git a/examples/http-client/ca.pem b/examples/http-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/http-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-client/certs/client_ca.pem b/examples/http-client/certs/client_ca.pem new file mode 120000 index 0000000000..f1db4c57f9 --- /dev/null +++ b/examples/http-client/certs/client_ca.pem @@ -0,0 +1 @@ +../../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-client/main.c b/examples/http-client/main.c index 909791898d..fd30dcb627 100644 --- a/examples/http-client/main.c +++ b/examples/http-client/main.c @@ -59,7 +59,7 @@ int main(int argc, char *argv[]) { if (argc > 1) s_url = argv[1]; // Use URL provided in the command line mg_log_set(atoi(log_level)); // Set to 0 to disable debug mg_mgr_init(&mgr); // Initialise event manager - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_http_connect(&mgr, s_url, fn, &done); // Create client connection while (!done) mg_mgr_poll(&mgr, 50); // Event manager loops until 'done' diff --git a/examples/http-client/packed_fs.c b/examples/http-client/packed_fs.c new file mode 100644 index 0000000000..aa514d0aef --- /dev/null +++ b/examples/http-client/packed_fs.c @@ -0,0 +1,2579 @@ +#include +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif +const char *mg_unlist(size_t no); +const char *mg_unpack(const char *, size_t *, time_t *); +#if defined(__cplusplus) +} +#endif + +static const unsigned char v1[] = { + 45, 32, 77, 97, 107, 101, 32, 115, 117, 114, 101, 32, // - Make sure + 121, 111, 117, 114, 32, 80, 69, 77, 32, 102, 105, 108, // your PEM fil + 101, 32, 115, 116, 97, 114, 116, 115, 32, 119, 105, 116, // e starts wit + 104, 32, 97, 32, 100, 97, 115, 104, 32, 45, 10, 10, // h a dash -.. + 73, 115, 115, 117, 101, 114, 58, 32, 67, 32, 61, 32, // Issuer: C = + 85, 83, 44, 32, 79, 32, 61, 32, 73, 110, 116, 101, // US, O = Inte + 114, 110, 101, 116, 32, 83, 101, 99, 117, 114, 105, 116, // rnet Securit + 121, 32, 82, 101, 115, 101, 97, 114, 99, 104, 32, 71, // y Research G + 114, 111, 117, 112, 44, 32, 67, 78, 32, 61, 32, 73, // roup, CN = I + 83, 82, 71, 32, 82, 111, 111, 116, 32, 88, 49, 10, // SRG Root X1. + 78, 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, // Not Before: + 74, 117, 110, 32, 32, 52, 32, 49, 49, 58, 48, 52, // Jun 4 11:04 + 58, 51, 56, 32, 50, 48, 49, 53, 32, 71, 77, 84, // :38 2015 GMT + 10, 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, // .Not After : + 32, 74, 117, 110, 32, 32, 52, 32, 49, 49, 58, 48, // Jun 4 11:0 + 52, 58, 51, 56, 32, 50, 48, 51, 53, 32, 71, 77, // 4:38 2035 GM + 84, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, // T.-----BEGIN + 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, // CERTIFICATE + 45, 45, 45, 45, 45, 10, 77, 73, 73, 70, 97, 122, // -----.MIIFaz + 67, 67, 65, 49, 79, 103, 65, 119, 73, 66, 65, 103, // CCA1OgAwIBAg + 73, 82, 65, 73, 73, 81, 122, 55, 68, 83, 81, 79, // IRAIIQz7DSQO + 78, 90, 82, 71, 80, 103, 117, 50, 79, 67, 105, 119, // NZRGPgu2OCiw + 65, 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, 118, // AwDQYJKoZIhv + 99, 78, 65, 81, 69, 76, 66, 81, 65, 119, 10, 84, // cNAQELBQAw.T + 122, 69, 76, 77, 65, 107, 71, 65, 49, 85, 69, 66, // zELMAkGA1UEB + 104, 77, 67, 86, 86, 77, 120, 75, 84, 65, 110, 66, // hMCVVMxKTAnB + 103, 78, 86, 66, 65, 111, 84, 73, 69, 108, 117, 100, // gNVBAoTIElud + 71, 86, 121, 98, 109, 86, 48, 73, 70, 78, 108, 89, // GVybmV0IFNlY + 51, 86, 121, 97, 88, 82, 53, 73, 70, 74, 108, 99, // 3VyaXR5IFJlc + 50, 86, 104, 10, 99, 109, 78, 111, 73, 69, 100, 121, // 2Vh.cmNoIEdy + 98, 51, 86, 119, 77, 82, 85, 119, 69, 119, 89, 68, // b3VwMRUwEwYD + 86, 81, 81, 68, 69, 119, 120, 74, 85, 49, 74, 72, // VQQDEwxJU1JH + 73, 70, 74, 118, 98, 51, 81, 103, 87, 68, 69, 119, // IFJvb3QgWDEw + 72, 104, 99, 78, 77, 84, 85, 119, 78, 106, 65, 48, // HhcNMTUwNjA0 + 77, 84, 69, 119, 78, 68, 77, 52, 10, 87, 104, 99, // MTEwNDM4.Whc + 78, 77, 122, 85, 119, 78, 106, 65, 48, 77, 84, 69, // NMzUwNjA0MTE + 119, 78, 68, 77, 52, 87, 106, 66, 80, 77, 81, 115, // wNDM4WjBPMQs + 119, 67, 81, 89, 68, 86, 81, 81, 71, 69, 119, 74, // wCQYDVQQGEwJ + 86, 85, 122, 69, 112, 77, 67, 99, 71, 65, 49, 85, // VUzEpMCcGA1U + 69, 67, 104, 77, 103, 83, 87, 53, 48, 90, 88, 74, // EChMgSW50ZXJ + 117, 10, 90, 88, 81, 103, 85, 50, 86, 106, 100, 88, // u.ZXQgU2VjdX + 74, 112, 100, 72, 107, 103, 85, 109, 86, 122, 90, 87, // JpdHkgUmVzZW + 70, 121, 89, 50, 103, 103, 82, 51, 74, 118, 100, 88, // FyY2ggR3JvdX + 65, 120, 70, 84, 65, 84, 66, 103, 78, 86, 66, 65, // AxFTATBgNVBA + 77, 84, 68, 69, 108, 84, 85, 107, 99, 103, 85, 109, // MTDElTUkcgUm + 57, 118, 100, 67, 66, 89, 10, 77, 84, 67, 67, 65, // 9vdCBY.MTCCA + 105, 73, 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, // iIwDQYJKoZIh + 118, 99, 78, 65, 81, 69, 66, 66, 81, 65, 68, 103, // vcNAQEBBQADg + 103, 73, 80, 65, 68, 67, 67, 65, 103, 111, 67, 103, // gIPADCCAgoCg + 103, 73, 66, 65, 75, 51, 111, 74, 72, 80, 48, 70, // gIBAK3oJHP0F + 68, 102, 122, 109, 53, 52, 114, 86, 121, 103, 99, 10, // Dfzm54rVygc. + 104, 55, 55, 99, 116, 57, 56, 52, 107, 73, 120, 117, // h77ct984kIxu + 80, 79, 90, 88, 111, 72, 106, 51, 100, 99, 75, 105, // POZXoHj3dcKi + 47, 118, 86, 113, 98, 118, 89, 65, 84, 121, 106, 98, // /vVqbvYATyjb + 51, 109, 105, 71, 98, 69, 83, 84, 116, 114, 70, 106, // 3miGbESTtrFj + 47, 82, 81, 83, 97, 55, 56, 102, 48, 117, 111, 120, // /RQSa78f0uox + 109, 121, 70, 43, 10, 48, 84, 77, 56, 117, 107, 106, // myF+.0TM8ukj + 49, 51, 88, 110, 102, 115, 55, 106, 47, 69, 118, 69, // 13Xnfs7j/EvE + 104, 109, 107, 118, 66, 105, 111, 90, 120, 97, 85, 112, // hmkvBioZxaUp + 109, 90, 109, 121, 80, 102, 106, 120, 119, 118, 54, 48, // mZmyPfjxwv60 + 112, 73, 103, 98, 122, 53, 77, 68, 109, 103, 75, 55, // pIgbz5MDmgK7 + 105, 83, 52, 43, 51, 109, 88, 54, 85, 10, 65, 53, // iS4+3mX6U.A5 + 47, 84, 82, 53, 100, 56, 109, 85, 103, 106, 85, 43, // /TR5d8mUgjU+ + 103, 52, 114, 107, 56, 75, 98, 52, 77, 117, 48, 85, // g4rk8Kb4Mu0U + 108, 88, 106, 73, 66, 48, 116, 116, 111, 118, 48, 68, // lXjIB0ttov0D + 105, 78, 101, 119, 78, 119, 73, 82, 116, 49, 56, 106, // iNewNwIRt18j + 65, 56, 43, 111, 43, 117, 51, 100, 112, 106, 113, 43, // A8+o+u3dpjq+ + 115, 87, 10, 84, 56, 75, 79, 69, 85, 116, 43, 122, // sW.T8KOEUt+z + 119, 118, 111, 47, 55, 86, 51, 76, 118, 83, 121, 101, // wvo/7V3LvSye + 48, 114, 103, 84, 66, 73, 108, 68, 72, 67, 78, 65, // 0rgTBIlDHCNA + 121, 109, 103, 52, 86, 77, 107, 55, 66, 80, 90, 55, // ymg4VMk7BPZ7 + 104, 109, 47, 69, 76, 78, 75, 106, 68, 43, 74, 111, // hm/ELNKjD+Jo + 50, 70, 82, 51, 113, 121, 72, 10, 66, 53, 84, 48, // 2FR3qyH.B5T0 + 89, 51, 72, 115, 76, 117, 74, 118, 87, 53, 105, 66, // Y3HsLuJvW5iB + 52, 89, 108, 99, 78, 72, 108, 115, 100, 117, 56, 55, // 4YlcNHlsdu87 + 107, 71, 74, 53, 53, 116, 117, 107, 109, 105, 56, 109, // kGJ55tukmi8m + 120, 100, 65, 81, 52, 81, 55, 101, 50, 82, 67, 79, // xdAQ4Q7e2RCO + 70, 118, 117, 51, 57, 54, 106, 51, 120, 43, 85, 67, // Fvu396j3x+UC + 10, 66, 53, 105, 80, 78, 103, 105, 86, 53, 43, 73, // .B5iPNgiV5+I + 51, 108, 103, 48, 50, 100, 90, 55, 55, 68, 110, 75, // 3lg02dZ77DnK + 120, 72, 90, 117, 56, 65, 47, 108, 74, 66, 100, 105, // xHZu8A/lJBdi + 66, 51, 81, 87, 48, 75, 116, 90, 66, 54, 97, 119, // B3QW0KtZB6aw + 66, 100, 112, 85, 75, 68, 57, 106, 102, 49, 98, 48, // BdpUKD9jf1b0 + 83, 72, 122, 85, 118, 10, 75, 66, 100, 115, 48, 112, // SHzUv.KBds0p + 106, 66, 113, 65, 108, 107, 100, 50, 53, 72, 78, 55, // jBqAlkd25HN7 + 114, 79, 114, 70, 108, 101, 97, 74, 49, 47, 99, 116, // rOrFleaJ1/ct + 97, 74, 120, 81, 90, 66, 75, 84, 53, 90, 80, 116, // aJxQZBKT5ZPt + 48, 109, 57, 83, 84, 74, 69, 97, 100, 97, 111, 48, // 0m9STJEadao0 + 120, 65, 72, 48, 97, 104, 109, 98, 87, 110, 10, 79, // xAH0ahmbWn.O + 108, 70, 117, 104, 106, 117, 101, 102, 88, 75, 110, 69, // lFuhjuefXKnE + 103, 86, 52, 87, 101, 48, 43, 85, 88, 103, 86, 67, // gV4We0+UXgVC + 119, 79, 80, 106, 100, 65, 118, 66, 98, 73, 43, 101, // wOPjdAvBbI+e + 48, 111, 99, 83, 51, 77, 70, 69, 118, 122, 71, 54, // 0ocS3MFEvzG6 + 117, 66, 81, 69, 51, 120, 68, 107, 51, 83, 122, 121, // uBQE3xDk3Szy + 110, 84, 110, 10, 106, 104, 56, 66, 67, 78, 65, 119, // nTn.jh8BCNAw + 49, 70, 116, 120, 78, 114, 81, 72, 117, 115, 69, 119, // 1FtxNrQHusEw + 77, 70, 120, 73, 116, 52, 73, 55, 109, 75, 90, 57, // MFxIt4I7mKZ9 + 89, 73, 113, 105, 111, 121, 109, 67, 122, 76, 113, 57, // YIqioymCzLq9 + 103, 119, 81, 98, 111, 111, 77, 68, 81, 97, 72, 87, // gwQbooMDQaHW + 66, 102, 69, 98, 119, 114, 98, 119, 10, 113, 72, 121, // BfEbwrbw.qHy + 71, 79, 48, 97, 111, 83, 67, 113, 73, 51, 72, 97, // GO0aoSCqI3Ha + 97, 100, 114, 56, 102, 97, 113, 85, 57, 71, 89, 47, // adr8faqU9GY/ + 114, 79, 80, 78, 107, 51, 115, 103, 114, 68, 81, 111, // rOPNk3sgrDQo + 111, 47, 47, 102, 98, 52, 104, 86, 67, 49, 67, 76, // o//fb4hVC1CL + 81, 74, 49, 51, 104, 101, 102, 52, 89, 53, 51, 67, // QJ13hef4Y53C + 73, 10, 114, 85, 55, 109, 50, 89, 115, 54, 120, 116, // I.rU7m2Ys6xt + 48, 110, 85, 87, 55, 47, 118, 71, 84, 49, 77, 48, // 0nUW7/vGT1M0 + 78, 80, 65, 103, 77, 66, 65, 65, 71, 106, 81, 106, // NPAgMBAAGjQj + 66, 65, 77, 65, 52, 71, 65, 49, 85, 100, 68, 119, // BAMA4GA1UdDw + 69, 66, 47, 119, 81, 69, 65, 119, 73, 66, 66, 106, // EB/wQEAwIBBj + 65, 80, 66, 103, 78, 86, 10, 72, 82, 77, 66, 65, // APBgNV.HRMBA + 102, 56, 69, 66, 84, 65, 68, 65, 81, 72, 47, 77, // f8EBTADAQH/M + 66, 48, 71, 65, 49, 85, 100, 68, 103, 81, 87, 66, // B0GA1UdDgQWB + 66, 82, 53, 116, 70, 110, 109, 101, 55, 98, 108, 53, // BR5tFnme7bl5 + 65, 70, 122, 103, 65, 105, 73, 121, 66, 112, 89, 57, // AFzgAiIyBpY9 + 117, 109, 98, 98, 106, 65, 78, 66, 103, 107, 113, 10, // umbbjANBgkq. + 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, 115, 70, // hkiG9w0BAQsF + 65, 65, 79, 67, 65, 103, 69, 65, 86, 82, 57, 89, // AAOCAgEAVR9Y + 113, 98, 121, 121, 113, 70, 68, 81, 68, 76, 72, 89, // qbyyqFDQDLHY + 71, 109, 107, 103, 74, 121, 107, 73, 114, 71, 70, 49, // GmkgJykIrGF1 + 88, 73, 112, 117, 43, 73, 76, 108, 97, 83, 47, 86, // XIpu+ILlaS/V + 57, 108, 90, 76, 10, 117, 98, 104, 122, 69, 70, 110, // 9lZL.ubhzEFn + 84, 73, 90, 100, 43, 53, 48, 120, 120, 43, 55, 76, // TIZd+50xx+7L + 83, 89, 75, 48, 53, 113, 65, 118, 113, 70, 121, 70, // SYK05qAvqFyF + 87, 104, 102, 70, 81, 68, 108, 110, 114, 122, 117, 66, // WhfFQDlnrzuB + 90, 54, 98, 114, 74, 70, 101, 43, 71, 110, 89, 43, // Z6brJFe+GnY+ + 69, 103, 80, 98, 107, 54, 90, 71, 81, 10, 51, 66, // EgPbk6ZGQ.3B + 101, 98, 89, 104, 116, 70, 56, 71, 97, 86, 48, 110, // ebYhtF8GaV0n + 120, 118, 119, 117, 111, 55, 55, 120, 47, 80, 121, 57, // xvwuo77x/Py9 + 97, 117, 74, 47, 71, 112, 115, 77, 105, 117, 47, 88, // auJ/GpsMiu/X + 49, 43, 109, 118, 111, 105, 66, 79, 118, 47, 50, 88, // 1+mvoiBOv/2X + 47, 113, 107, 83, 115, 105, 115, 82, 99, 79, 106, 47, // /qkSsisRcOj/ + 75, 75, 10, 78, 70, 116, 89, 50, 80, 119, 66, 121, // KK.NFtY2PwBy + 86, 83, 53, 117, 67, 98, 77, 105, 111, 103, 122, 105, // VS5uCbMiogzi + 85, 119, 116, 104, 68, 121, 67, 51, 43, 54, 87, 86, // UwthDyC3+6WV + 119, 87, 54, 76, 76, 118, 51, 120, 76, 102, 72, 84, // wW6LLv3xLfHT + 106, 117, 67, 118, 106, 72, 73, 73, 110, 78, 122, 107, // juCvjHIInNzk + 116, 72, 67, 103, 75, 81, 53, 10, 79, 82, 65, 122, // tHCgKQ5.ORAz + 73, 52, 74, 77, 80, 74, 43, 71, 115, 108, 87, 89, // I4JMPJ+GslWY + 72, 98, 52, 112, 104, 111, 119, 105, 109, 53, 55, 105, // Hb4phowim57i + 97, 122, 116, 88, 79, 111, 74, 119, 84, 100, 119, 74, // aztXOoJwTdwJ + 120, 52, 110, 76, 67, 103, 100, 78, 98, 79, 104, 100, // x4nLCgdNbOhd + 106, 115, 110, 118, 122, 113, 118, 72, 117, 55, 85, 114, // jsnvzqvHu7Ur + 10, 84, 107, 88, 87, 83, 116, 65, 109, 122, 79, 86, // .TkXWStAmzOV + 121, 121, 103, 104, 113, 112, 90, 88, 106, 70, 97, 72, // yyghqpZXjFaH + 51, 112, 79, 51, 74, 76, 70, 43, 108, 43, 47, 43, // 3pO3JLF+l+/+ + 115, 75, 65, 73, 117, 118, 116, 100, 55, 117, 43, 78, // sKAIuvtd7u+N + 120, 101, 53, 65, 87, 48, 119, 100, 101, 82, 108, 78, // xe5AW0wdeRlN + 56, 78, 119, 100, 67, 10, 106, 78, 80, 69, 108, 112, // 8NwdC.jNPElp + 122, 86, 109, 98, 85, 113, 52, 74, 85, 97, 103, 69, // zVmbUq4JUagE + 105, 117, 84, 68, 107, 72, 122, 115, 120, 72, 112, 70, // iuTDkHzsxHpF + 75, 86, 75, 55, 113, 52, 43, 54, 51, 83, 77, 49, // KVK7q4+63SM1 + 78, 57, 53, 82, 49, 78, 98, 100, 87, 104, 115, 99, // N95R1NbdWhsc + 100, 67, 98, 43, 90, 65, 74, 122, 86, 99, 10, 111, // dCb+ZAJzVc.o + 121, 105, 51, 66, 52, 51, 110, 106, 84, 79, 81, 53, // yi3B43njTOQ5 + 121, 79, 102, 43, 49, 67, 99, 101, 87, 120, 71, 49, // yOf+1CceWxG1 + 98, 81, 86, 115, 53, 90, 117, 102, 112, 115, 77, 108, // bQVs5ZufpsMl + 106, 113, 52, 85, 105, 48, 47, 49, 108, 118, 104, 43, // jq4Ui0/1lvh+ + 119, 106, 67, 104, 80, 52, 107, 113, 75, 79, 74, 50, // wjChP4kqKOJ2 + 113, 120, 113, 10, 52, 82, 103, 113, 115, 97, 104, 68, // qxq.4RgqsahD + 89, 86, 118, 84, 72, 57, 119, 55, 106, 88, 98, 121, // YVvTH9w7jXby + 76, 101, 105, 78, 100, 100, 56, 88, 77, 50, 119, 57, // LeiNdd8XM2w9 + 85, 47, 116, 55, 121, 48, 70, 102, 47, 57, 121, 105, // U/t7y0Ff/9yi + 48, 71, 69, 52, 52, 90, 97, 52, 114, 70, 50, 76, // 0GE44Za4rF2L + 78, 57, 100, 49, 49, 84, 80, 65, 10, 109, 82, 71, // N9d11TPA.mRG + 117, 110, 85, 72, 66, 99, 110, 87, 69, 118, 103, 74, // unUHBcnWEvgJ + 66, 81, 108, 57, 110, 74, 69, 105, 85, 48, 90, 115, // BQl9nJEiU0Zs + 110, 118, 103, 99, 47, 117, 98, 104, 80, 103, 88, 82, // nvgc/ubhPgXR + 82, 52, 88, 113, 51, 55, 90, 48, 106, 52, 114, 55, // R4Xq37Z0j4r7 + 103, 49, 83, 103, 69, 69, 122, 119, 120, 65, 53, 55, // g1SgEEzwxA57 + 100, 10, 101, 109, 121, 80, 120, 103, 99, 89, 120, 110, // d.emyPxgcYxn + 47, 101, 82, 52, 52, 47, 75, 74, 52, 69, 66, 115, // /eR44/KJ4EBs + 43, 108, 86, 68, 82, 51, 118, 101, 121, 74, 109, 43, // +lVDR3veyJm+ + 107, 88, 81, 57, 57, 98, 50, 49, 47, 43, 106, 104, // kXQ99b21/+jh + 53, 88, 111, 115, 49, 65, 110, 88, 53, 105, 73, 116, // 5Xos1AnX5iIt + 114, 101, 71, 67, 99, 61, 10, 45, 45, 45, 45, 45, // reGCc=.----- + 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, // END CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 83, 117, // ATE-----..Su + 98, 106, 101, 99, 116, 58, 32, 67, 61, 73, 69, 44, // bject: C=IE, + 32, 79, 61, 66, 97, 108, 116, 105, 109, 111, 114, 101, // O=Baltimore + 44, 32, 79, 85, 61, 67, 121, 98, 101, 114, 84, 114, // , OU=CyberTr + 117, 115, 116, 44, 32, 67, 78, 61, 66, 97, 108, 116, // ust, CN=Balt + 105, 109, 111, 114, 101, 32, 67, 121, 98, 101, 114, 84, // imore CyberT + 114, 117, 115, 116, 32, 82, 111, 111, 116, 10, 78, 111, // rust Root.No + 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 77, 97, // t Before: Ma + 121, 32, 49, 50, 32, 49, 56, 58, 52, 54, 58, 48, // y 12 18:46:0 + 48, 32, 50, 48, 48, 48, 32, 71, 77, 84, 10, 78, // 0 2000 GMT.N + 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 77, // ot After : M + 97, 121, 32, 49, 50, 32, 50, 51, 58, 53, 57, 58, // ay 12 23:59: + 48, 48, 32, 50, 48, 50, 53, 32, 71, 77, 84, 10, // 00 2025 GMT. + 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, // -----BEGIN C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 77, 73, 73, 68, 100, 122, 67, 67, // ---.MIIDdzCC + 65, 108, 43, 103, 65, 119, 73, 66, 65, 103, 73, 69, // Al+gAwIBAgIE + 65, 103, 65, 65, 117, 84, 65, 78, 66, 103, 107, 113, // AgAAuTANBgkq + 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, 85, 70, // hkiG9w0BAQUF + 65, 68, 66, 97, 77, 81, 115, 119, 67, 81, 89, 68, // ADBaMQswCQYD + 86, 81, 81, 71, 69, 119, 74, 74, 10, 82, 84, 69, // VQQGEwJJ.RTE + 83, 77, 66, 65, 71, 65, 49, 85, 69, 67, 104, 77, // SMBAGA1UEChM + 74, 81, 109, 70, 115, 100, 71, 108, 116, 98, 51, 74, // JQmFsdGltb3J + 108, 77, 82, 77, 119, 69, 81, 89, 68, 86, 81, 81, // lMRMwEQYDVQQ + 76, 69, 119, 112, 68, 101, 87, 74, 108, 99, 108, 82, // LEwpDeWJlclR + 121, 100, 88, 78, 48, 77, 83, 73, 119, 73, 65, 89, // ydXN0MSIwIAY + 68, 10, 86, 81, 81, 68, 69, 120, 108, 67, 89, 87, // D.VQQDExlCYW + 120, 48, 97, 87, 49, 118, 99, 109, 85, 103, 81, 51, // x0aW1vcmUgQ3 + 108, 105, 90, 88, 74, 85, 99, 110, 86, 122, 100, 67, // liZXJUcnVzdC + 66, 83, 98, 50, 57, 48, 77, 66, 52, 88, 68, 84, // BSb290MB4XDT + 65, 119, 77, 68, 85, 120, 77, 106, 69, 52, 78, 68, // AwMDUxMjE4ND + 89, 119, 77, 70, 111, 88, 10, 68, 84, 73, 49, 77, // YwMFoX.DTI1M + 68, 85, 120, 77, 106, 73, 122, 78, 84, 107, 119, 77, // DUxMjIzNTkwM + 70, 111, 119, 87, 106, 69, 76, 77, 65, 107, 71, 65, // FowWjELMAkGA + 49, 85, 69, 66, 104, 77, 67, 83, 85, 85, 120, 69, // 1UEBhMCSUUxE + 106, 65, 81, 66, 103, 78, 86, 66, 65, 111, 84, 67, // jAQBgNVBAoTC + 85, 74, 104, 98, 72, 82, 112, 98, 87, 57, 121, 10, // UJhbHRpbW9y. + 90, 84, 69, 84, 77, 66, 69, 71, 65, 49, 85, 69, // ZTETMBEGA1UE + 67, 120, 77, 75, 81, 51, 108, 105, 90, 88, 74, 85, // CxMKQ3liZXJU + 99, 110, 86, 122, 100, 68, 69, 105, 77, 67, 65, 71, // cnVzdDEiMCAG + 65, 49, 85, 69, 65, 120, 77, 90, 81, 109, 70, 115, // A1UEAxMZQmFs + 100, 71, 108, 116, 98, 51, 74, 108, 73, 69, 78, 53, // dGltb3JlIEN5 + 89, 109, 86, 121, 10, 86, 72, 74, 49, 99, 51, 81, // YmVy.VHJ1c3Q + 103, 85, 109, 57, 118, 100, 68, 67, 67, 65, 83, 73, // gUm9vdDCCASI + 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, 118, 99, // wDQYJKoZIhvc + 78, 65, 81, 69, 66, 66, 81, 65, 68, 103, 103, 69, // NAQEBBQADggE + 80, 65, 68, 67, 67, 65, 81, 111, 67, 103, 103, 69, // PADCCAQoCggE + 66, 65, 75, 77, 69, 117, 121, 75, 114, 10, 109, 68, // BAKMEuyKr.mD + 49, 88, 54, 67, 90, 121, 109, 114, 86, 53, 49, 67, // 1X6CZymrV51C + 110, 105, 52, 101, 105, 86, 103, 76, 71, 119, 52, 49, // ni4eiVgLGw41 + 117, 79, 75, 121, 109, 97, 90, 78, 43, 104, 88, 101, // uOKymaZN+hXe + 50, 119, 67, 81, 86, 116, 50, 121, 103, 117, 122, 109, // 2wCQVt2yguzm + 75, 105, 89, 118, 54, 48, 105, 78, 111, 83, 54, 122, // KiYv60iNoS6z + 106, 114, 10, 73, 90, 51, 65, 81, 83, 115, 66, 85, // jr.IZ3AQSsBU + 110, 117, 73, 100, 57, 77, 99, 106, 56, 101, 54, 117, // nuId9Mcj8e6u + 89, 105, 49, 97, 103, 110, 110, 99, 43, 103, 82, 81, // Yi1agnnc+gRQ + 75, 102, 82, 122, 77, 112, 105, 106, 83, 51, 108, 106, // KfRzMpijS3lj + 119, 117, 109, 85, 78, 75, 111, 85, 77, 77, 111, 54, // wumUNKoUMMo6 + 118, 87, 114, 74, 89, 101, 75, 10, 109, 112, 89, 99, // vWrJYeK.mpYc + 113, 87, 101, 52, 80, 119, 122, 86, 57, 47, 108, 83, // qWe4PwzV9/lS + 69, 121, 47, 67, 71, 57, 86, 119, 99, 80, 67, 80, // Ey/CG9VwcPCP + 119, 66, 76, 75, 66, 115, 117, 97, 52, 100, 110, 75, // wBLKBsua4dnK + 77, 51, 112, 51, 49, 118, 106, 115, 117, 102, 70, 111, // M3p31vjsufFo + 82, 69, 74, 73, 69, 57, 76, 65, 119, 113, 83, 117, // REJIE9LAwqSu + 10, 88, 109, 68, 43, 116, 113, 89, 70, 47, 76, 84, // .XmD+tqYF/LT + 100, 66, 49, 107, 67, 49, 70, 107, 89, 109, 71, 80, // dB1kC1FkYmGP + 49, 112, 87, 80, 103, 107, 65, 120, 57, 88, 98, 73, // 1pWPgkAx9XbI + 71, 101, 118, 79, 70, 54, 117, 118, 85, 65, 54, 53, // GevOF6uvUA65 + 101, 104, 68, 53, 102, 47, 120, 88, 116, 97, 98, 122, // ehD5f/xXtabz + 53, 79, 84, 90, 121, 10, 100, 99, 57, 51, 85, 107, // 5OTZy.dc93Uk + 51, 122, 121, 90, 65, 115, 117, 84, 51, 108, 121, 83, // 3zyZAsuT3lyS + 78, 84, 80, 120, 56, 107, 109, 67, 70, 99, 66, 53, // NTPx8kmCFcB5 + 107, 112, 118, 99, 89, 54, 55, 79, 100, 117, 104, 106, // kpvcY67Oduhj + 112, 114, 108, 51, 82, 106, 77, 55, 49, 111, 71, 68, // prl3RjM71oGD + 72, 119, 101, 73, 49, 50, 118, 47, 121, 101, 10, 106, // HweI12v/ye.j + 108, 48, 113, 104, 113, 100, 78, 107, 78, 119, 110, 71, // l0qhqdNkNwnG + 106, 107, 67, 65, 119, 69, 65, 65, 97, 78, 70, 77, // jkCAwEAAaNFM + 69, 77, 119, 72, 81, 89, 68, 86, 82, 48, 79, 66, // EMwHQYDVR0OB + 66, 89, 69, 70, 79, 87, 100, 87, 84, 67, 67, 82, // BYEFOWdWTCCR + 49, 106, 77, 114, 80, 111, 73, 86, 68, 97, 71, 101, // 1jMrPoIVDaGe + 122, 113, 49, 10, 66, 69, 51, 119, 77, 66, 73, 71, // zq1.BE3wMBIG + 65, 49, 85, 100, 69, 119, 69, 66, 47, 119, 81, 73, // A1UdEwEB/wQI + 77, 65, 89, 66, 65, 102, 56, 67, 65, 81, 77, 119, // MAYBAf8CAQMw + 68, 103, 89, 68, 86, 82, 48, 80, 65, 81, 72, 47, // DgYDVR0PAQH/ + 66, 65, 81, 68, 65, 103, 69, 71, 77, 65, 48, 71, // BAQDAgEGMA0G + 67, 83, 113, 71, 83, 73, 98, 51, 10, 68, 81, 69, // CSqGSIb3.DQE + 66, 66, 81, 85, 65, 65, 52, 73, 66, 65, 81, 67, // BBQUAA4IBAQC + 70, 68, 70, 50, 79, 53, 71, 57, 82, 97, 69, 73, // FDF2O5G9RaEI + 70, 111, 78, 50, 55, 84, 121, 99, 108, 104, 65, 79, // FoN27TyclhAO + 57, 57, 50, 84, 57, 76, 100, 99, 119, 52, 54, 81, // 992T9Ldcw46Q + 81, 70, 43, 118, 97, 75, 83, 109, 50, 101, 84, 57, // QF+vaKSm2eT9 + 50, 10, 57, 104, 107, 84, 73, 55, 103, 81, 67, 118, // 2.9hkTI7gQCv + 108, 89, 112, 78, 82, 104, 99, 76, 48, 69, 89, 87, // lYpNRhcL0EYW + 111, 83, 105, 104, 102, 86, 67, 114, 51, 70, 118, 68, // oSihfVCr3FvD + 66, 56, 49, 117, 107, 77, 74, 89, 50, 71, 81, 69, // B81ukMJY2GQE + 47, 115, 122, 75, 78, 43, 79, 77, 89, 51, 69, 85, // /szKN+OMY3EU + 47, 116, 51, 87, 103, 120, 10, 106, 107, 122, 83, 115, // /t3Wgx.jkzSs + 119, 70, 48, 55, 114, 53, 49, 88, 103, 100, 73, 71, // wF07r51XgdIG + 110, 57, 119, 47, 120, 90, 99, 104, 77, 66, 53, 104, // n9w/xZchMB5h + 98, 103, 70, 47, 88, 43, 43, 90, 82, 71, 106, 68, // bgF/X++ZRGjD + 56, 65, 67, 116, 80, 104, 83, 78, 122, 107, 69, 49, // 8ACtPhSNzkE1 + 97, 107, 120, 101, 104, 105, 47, 111, 67, 114, 48, 10, // akxehi/oCr0. + 69, 112, 110, 51, 111, 48, 87, 67, 52, 122, 120, 101, // Epn3o0WC4zxe + 57, 90, 50, 101, 116, 99, 105, 101, 102, 67, 55, 73, // 9Z2etciefC7I + 112, 74, 53, 79, 67, 66, 82, 76, 98, 102, 49, 119, // pJ5OCBRLbf1w + 98, 87, 115, 97, 89, 55, 49, 107, 53, 104, 43, 51, // bWsaY71k5h+3 + 122, 118, 68, 121, 110, 121, 54, 55, 71, 55, 102, 121, // zvDyny67G7fy + 85, 73, 104, 122, 10, 107, 115, 76, 105, 52, 120, 97, // UIhz.ksLi4xa + 78, 109, 106, 73, 67, 113, 52, 52, 89, 51, 101, 107, // NmjICq44Y3ek + 81, 69, 101, 53, 43, 78, 97, 117, 81, 114, 122, 52, // QEe5+NauQrz4 + 119, 108, 72, 114, 81, 77, 122, 50, 110, 90, 81, 47, // wlHrQMz2nZQ/ + 49, 47, 73, 54, 101, 89, 115, 57, 72, 82, 67, 119, // 1/I6eYs9HRCw + 66, 88, 98, 115, 100, 116, 84, 76, 83, 10, 82, 57, // BXbsdtTLS.R9 + 73, 52, 76, 116, 68, 43, 103, 100, 119, 121, 97, 104, // I4LtD+gdwyah + 54, 49, 55, 106, 122, 86, 47, 79, 101, 66, 72, 82, // 617jzV/OeBHR + 110, 68, 74, 69, 76, 113, 89, 122, 109, 112, 10, 45, // nDJELqYzmp.- + 45, 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, // ----END CERT + 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, // IFICATE----- + 10, 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, // ..Subject: C + 61, 85, 83, 44, 32, 79, 61, 71, 101, 111, 84, 114, // =US, O=GeoTr + 117, 115, 116, 32, 73, 110, 99, 46, 44, 32, 67, 78, // ust Inc., CN + 61, 71, 101, 111, 84, 114, 117, 115, 116, 32, 71, 108, // =GeoTrust Gl + 111, 98, 97, 108, 32, 67, 65, 10, 78, 111, 116, 32, // obal CA.Not + 66, 101, 102, 111, 114, 101, 58, 32, 77, 97, 121, 32, // Before: May + 50, 49, 32, 48, 52, 58, 48, 48, 58, 48, 48, 32, // 21 04:00:00 + 50, 48, 48, 50, 32, 71, 77, 84, 10, 78, 111, 116, // 2002 GMT.Not + 32, 65, 102, 116, 101, 114, 32, 58, 32, 77, 97, 121, // After : May + 32, 50, 49, 32, 48, 52, 58, 48, 48, 58, 48, 48, // 21 04:00:00 + 32, 50, 48, 50, 50, 32, 71, 77, 84, 10, 45, 45, // 2022 GMT.-- + 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, 69, 82, // ---BEGIN CER + 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, // TIFICATE---- + 45, 10, 77, 73, 73, 68, 86, 68, 67, 67, 65, 106, // -.MIIDVDCCAj + 121, 103, 65, 119, 73, 66, 65, 103, 73, 68, 65, 106, // ygAwIBAgIDAj + 82, 87, 77, 65, 48, 71, 67, 83, 113, 71, 83, 73, // RWMA0GCSqGSI + 98, 51, 68, 81, 69, 66, 66, 81, 85, 65, 77, 69, // b3DQEBBQUAME + 73, 120, 67, 122, 65, 74, 66, 103, 78, 86, 66, 65, // IxCzAJBgNVBA + 89, 84, 65, 108, 86, 84, 10, 77, 82, 89, 119, 70, // YTAlVT.MRYwF + 65, 89, 68, 86, 81, 81, 75, 69, 119, 49, 72, 90, // AYDVQQKEw1HZ + 87, 57, 85, 99, 110, 86, 122, 100, 67, 66, 74, 98, // W9UcnVzdCBJb + 109, 77, 117, 77, 82, 115, 119, 71, 81, 89, 68, 86, // mMuMRswGQYDV + 81, 81, 68, 69, 120, 74, 72, 90, 87, 57, 85, 99, // QQDExJHZW9Uc + 110, 86, 122, 100, 67, 66, 72, 98, 71, 57, 105, 10, // nVzdCBHbG9i. + 89, 87, 119, 103, 81, 48, 69, 119, 72, 104, 99, 78, // YWwgQ0EwHhcN + 77, 68, 73, 119, 78, 84, 73, 120, 77, 68, 81, 119, // MDIwNTIxMDQw + 77, 68, 65, 119, 87, 104, 99, 78, 77, 106, 73, 119, // MDAwWhcNMjIw + 78, 84, 73, 120, 77, 68, 81, 119, 77, 68, 65, 119, // NTIxMDQwMDAw + 87, 106, 66, 67, 77, 81, 115, 119, 67, 81, 89, 68, // WjBCMQswCQYD + 86, 81, 81, 71, 10, 69, 119, 74, 86, 85, 122, 69, // VQQG.EwJVUzE + 87, 77, 66, 81, 71, 65, 49, 85, 69, 67, 104, 77, // WMBQGA1UEChM + 78, 82, 50, 86, 118, 86, 72, 74, 49, 99, 51, 81, // NR2VvVHJ1c3Q + 103, 83, 87, 53, 106, 76, 106, 69, 98, 77, 66, 107, // gSW5jLjEbMBk + 71, 65, 49, 85, 69, 65, 120, 77, 83, 82, 50, 86, // GA1UEAxMSR2V + 118, 86, 72, 74, 49, 99, 51, 81, 103, 10, 82, 50, // vVHJ1c3Qg.R2 + 120, 118, 89, 109, 70, 115, 73, 69, 78, 66, 77, 73, // xvYmFsIENBMI + 73, 66, 73, 106, 65, 78, 66, 103, 107, 113, 104, 107, // IBIjANBgkqhk + 105, 71, 57, 119, 48, 66, 65, 81, 69, 70, 65, 65, // iG9w0BAQEFAA + 79, 67, 65, 81, 56, 65, 77, 73, 73, 66, 67, 103, // OCAQ8AMIIBCg + 75, 67, 65, 81, 69, 65, 50, 115, 119, 89, 89, 122, // KCAQEA2swYYz + 68, 57, 10, 57, 66, 99, 106, 71, 108, 90, 43, 87, // D9.9BcjGlZ+W + 57, 56, 56, 98, 68, 106, 107, 99, 98, 100, 52, 107, // 988bDjkcbd4k + 100, 83, 56, 111, 100, 104, 77, 43, 75, 104, 68, 116, // dS8odhM+KhDt + 103, 80, 112, 84, 83, 69, 72, 67, 73, 106, 97, 87, // gPpTSEHCIjaW + 67, 57, 109, 79, 83, 109, 57, 66, 88, 105, 76, 110, // C9mOSm9BXiLn + 84, 106, 111, 66, 98, 100, 113, 10, 102, 110, 71, 107, // TjoBbdq.fnGk + 53, 115, 82, 103, 112, 114, 68, 118, 103, 79, 83, 74, // 5sRgprDvgOSJ + 75, 65, 43, 101, 74, 100, 98, 116, 103, 47, 79, 116, // KA+eJdbtg/Ot + 112, 112, 72, 72, 109, 77, 108, 67, 71, 68, 85, 85, // ppHHmMlCGDUU + 110, 97, 50, 89, 82, 112, 73, 117, 84, 56, 114, 120, // na2YRpIuT8rx + 104, 48, 80, 66, 70, 112, 86, 88, 76, 86, 68, 118, // h0PBFpVXLVDv + 10, 105, 83, 50, 65, 101, 108, 101, 116, 56, 117, 53, // .iS2Aelet8u5 + 102, 97, 57, 73, 65, 106, 98, 107, 85, 43, 66, 81, // fa9IAjbkU+BQ + 86, 78, 100, 110, 65, 82, 113, 78, 55, 99, 115, 105, // VNdnARqN7csi + 82, 118, 56, 108, 86, 75, 56, 51, 81, 108, 122, 54, // Rv8lVK83Qlz6 + 99, 74, 109, 84, 77, 51, 56, 54, 68, 71, 88, 72, // cJmTM386DGXH + 75, 84, 117, 98, 85, 10, 49, 88, 117, 112, 71, 99, // KTubU.1XupGc + 49, 86, 51, 115, 106, 115, 48, 108, 52, 52, 85, 43, // 1V3sjs0l44U+ + 86, 99, 84, 52, 119, 116, 47, 108, 65, 106, 78, 118, // VcT4wt/lAjNv + 120, 109, 53, 115, 117, 79, 112, 68, 107, 90, 65, 76, // xm5suOpDkZAL + 101, 86, 65, 106, 109, 82, 67, 119, 55, 43, 79, 67, // eVAjmRCw7+OC + 55, 82, 72, 81, 87, 97, 57, 107, 48, 43, 10, 98, // 7RHQWa9k0+.b + 119, 56, 72, 72, 97, 56, 115, 72, 111, 57, 103, 79, // w8HHa8sHo9gO + 101, 76, 54, 78, 108, 77, 84, 79, 100, 82, 101, 74, // eL6NlMTOdReJ + 105, 118, 98, 80, 97, 103, 85, 118, 84, 76, 114, 71, // ivbPagUvTLrG + 65, 77, 111, 85, 103, 82, 120, 53, 97, 115, 122, 80, // AMoUgRx5aszP + 101, 69, 52, 117, 119, 99, 50, 104, 71, 75, 99, 101, // eE4uwc2hGKce + 101, 111, 87, 10, 77, 80, 82, 102, 119, 67, 118, 111, // eoW.MPRfwCvo + 99, 87, 118, 107, 43, 81, 73, 68, 65, 81, 65, 66, // cWvk+QIDAQAB + 111, 49, 77, 119, 85, 84, 65, 80, 66, 103, 78, 86, // o1MwUTAPBgNV + 72, 82, 77, 66, 65, 102, 56, 69, 66, 84, 65, 68, // HRMBAf8EBTAD + 65, 81, 72, 47, 77, 66, 48, 71, 65, 49, 85, 100, // AQH/MB0GA1Ud + 68, 103, 81, 87, 66, 66, 84, 65, 10, 101, 112, 104, // DgQWBBTA.eph + 111, 106, 89, 110, 55, 113, 119, 86, 107, 68, 66, 70, // ojYn7qwVkDBF + 57, 113, 110, 49, 108, 117, 77, 114, 77, 84, 106, 65, // 9qn1luMrMTjA + 102, 66, 103, 78, 86, 72, 83, 77, 69, 71, 68, 65, // fBgNVHSMEGDA + 87, 103, 66, 84, 65, 101, 112, 104, 111, 106, 89, 110, // WgBTAephojYn + 55, 113, 119, 86, 107, 68, 66, 70, 57, 113, 110, 49, // 7qwVkDBF9qn1 + 108, 10, 117, 77, 114, 77, 84, 106, 65, 78, 66, 103, // l.uMrMTjANBg + 107, 113, 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, // kqhkiG9w0BAQ + 85, 70, 65, 65, 79, 67, 65, 81, 69, 65, 78, 101, // UFAAOCAQEANe + 77, 112, 97, 117, 85, 118, 88, 86, 83, 79, 75, 86, // MpauUvXVSOKV + 67, 85, 110, 53, 107, 97, 70, 79, 83, 80, 101, 67, // CUn5kaFOSPeC + 112, 105, 108, 75, 73, 110, 10, 90, 53, 55, 81, 122, // pilKIn.Z57Qz + 120, 112, 101, 82, 43, 110, 66, 115, 113, 84, 80, 51, // xpeR+nBsqTP3 + 85, 69, 97, 66, 85, 54, 98, 83, 43, 53, 75, 98, // UEaBU6bS+5Kb + 49, 86, 83, 115, 121, 83, 104, 78, 119, 114, 114, 90, // 1VSsyShNwrrZ + 72, 89, 113, 76, 105, 122, 122, 47, 84, 116, 49, 107, // HYqLizz/Tt1k + 76, 47, 54, 99, 100, 106, 72, 80, 84, 102, 83, 10, // L/6cdjHPTfS. + 116, 81, 87, 86, 89, 114, 109, 109, 51, 111, 107, 57, // tQWVYrmm3ok9 + 78, 110, 115, 52, 100, 48, 105, 88, 114, 75, 89, 103, // Nns4d0iXrKYg + 106, 121, 54, 109, 121, 81, 122, 67, 115, 112, 108, 70, // jy6myQzCsplF + 65, 77, 102, 79, 69, 86, 69, 105, 73, 117, 67, 108, // AMfOEVEiIuCl + 54, 114, 89, 86, 83, 65, 108, 107, 54, 108, 53, 80, // 6rYVSAlk6l5P + 100, 80, 99, 70, 10, 80, 115, 101, 75, 85, 103, 122, // dPcF.PseKUgz + 98, 70, 98, 83, 57, 98, 90, 118, 108, 120, 114, 70, // bFbS9bZvlxrF + 85, 97, 75, 110, 106, 97, 90, 67, 50, 109, 113, 85, // UaKnjaZC2mqU + 80, 117, 76, 107, 47, 73, 72, 50, 117, 83, 114, 87, // PuLk/IH2uSrW + 52, 110, 79, 81, 100, 116, 113, 118, 109, 108, 75, 88, // 4nOQdtqvmlKX + 66, 120, 52, 79, 116, 50, 47, 85, 110, 10, 104, 119, // Bx4Ot2/Un.hw + 52, 69, 98, 78, 88, 47, 51, 97, 66, 100, 55, 89, // 4EbNX/3aBd7Y + 100, 83, 116, 121, 115, 86, 65, 113, 52, 53, 112, 109, // dStysVAq45pm + 112, 48, 54, 100, 114, 69, 53, 55, 120, 78, 78, 66, // p06drE57xNNB + 54, 112, 88, 69, 48, 122, 88, 53, 73, 74, 76, 52, // 6pXE0zX5IJL4 + 104, 109, 88, 88, 101, 88, 120, 120, 49, 50, 69, 54, // hmXXeXxx12E6 + 110, 86, 10, 53, 102, 69, 87, 67, 82, 69, 49, 49, // nV.5fEWCRE11 + 97, 122, 98, 74, 72, 70, 119, 76, 74, 104, 87, 67, // azbJHFwLJhWC + 57, 107, 88, 116, 78, 72, 106, 85, 83, 116, 101, 100, // 9kXtNHjUSted + 101, 106, 86, 48, 78, 120, 80, 78, 79, 51, 67, 66, // ejV0NxPNO3CB + 87, 97, 65, 111, 99, 118, 109, 77, 119, 61, 61, 10, // WaAocvmMw==. + 45, 45, 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, // -----END CER + 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, // TIFICATE---- + 45, 10, 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, // -..Subject: + 67, 61, 85, 83, 44, 32, 79, 61, 83, 121, 109, 97, // C=US, O=Syma + 110, 116, 101, 99, 32, 67, 111, 114, 112, 111, 114, 97, // ntec Corpora + 116, 105, 111, 110, 44, 32, 79, 85, 61, 83, 121, 109, // tion, OU=Sym + 97, 110, 116, 101, 99, 32, 84, 114, 117, 115, 116, 32, // antec Trust + 78, 101, 116, 119, 111, 114, 107, 44, 32, 67, 78, 61, // Network, CN= + 83, 121, 109, 97, 110, 116, 101, 99, 32, 67, 108, 97, // Symantec Cla + 115, 115, 32, 51, 32, 69, 67, 67, 32, 50, 53, 54, // ss 3 ECC 256 + 32, 98, 105, 116, 32, 83, 83, 76, 32, 67, 65, 32, // bit SSL CA + 45, 32, 71, 50, 10, 78, 111, 116, 32, 66, 101, 102, // - G2.Not Bef + 111, 114, 101, 58, 32, 77, 97, 121, 32, 49, 50, 32, // ore: May 12 + 48, 48, 58, 48, 48, 58, 48, 48, 32, 50, 48, 49, // 00:00:00 201 + 53, 32, 71, 77, 84, 10, 78, 111, 116, 32, 65, 102, // 5 GMT.Not Af + 116, 101, 114, 32, 58, 32, 77, 97, 121, 32, 49, 49, // ter : May 11 + 32, 50, 51, 58, 53, 57, 58, 53, 57, 32, 50, 48, // 23:59:59 20 + 50, 53, 32, 71, 77, 84, 10, 45, 45, 45, 45, 45, // 25 GMT.----- + 66, 69, 71, 73, 78, 32, 67, 69, 82, 84, 73, 70, // BEGIN CERTIF + 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 77, // ICATE-----.M + 73, 73, 69, 97, 106, 67, 67, 65, 49, 75, 103, 65, // IIEajCCA1KgA + 119, 73, 66, 65, 103, 73, 81, 80, 53, 75, 72, 118, // wIBAgIQP5KHv + 112, 48, 100, 112, 75, 78, 54, 110, 102, 89, 111, 76, // p0dpKN6nfYoL + 110, 100, 97, 120, 68, 65, 78, 66, 103, 107, 113, 104, // ndaxDANBgkqh + 107, 105, 71, 57, 119, 48, 66, 65, 81, 115, 70, 65, // kiG9w0BAQsFA + 68, 67, 66, 10, 121, 106, 69, 76, 77, 65, 107, 71, // DCB.yjELMAkG + 65, 49, 85, 69, 66, 104, 77, 67, 86, 86, 77, 120, // A1UEBhMCVVMx + 70, 122, 65, 86, 66, 103, 78, 86, 66, 65, 111, 84, // FzAVBgNVBAoT + 68, 108, 90, 108, 99, 109, 108, 84, 97, 87, 100, 117, // DlZlcmlTaWdu + 76, 67, 66, 74, 98, 109, 77, 117, 77, 82, 56, 119, // LCBJbmMuMR8w + 72, 81, 89, 68, 86, 81, 81, 76, 10, 69, 120, 90, // HQYDVQQL.ExZ + 87, 90, 88, 74, 112, 85, 50, 108, 110, 98, 105, 66, // WZXJpU2lnbiB + 85, 99, 110, 86, 122, 100, 67, 66, 79, 90, 88, 82, // UcnVzdCBOZXR + 51, 98, 51, 74, 114, 77, 84, 111, 119, 79, 65, 89, // 3b3JrMTowOAY + 68, 86, 81, 81, 76, 69, 122, 69, 111, 89, 121, 107, // DVQQLEzEoYyk + 103, 77, 106, 65, 119, 78, 105, 66, 87, 90, 88, 74, // gMjAwNiBWZXJ + 112, 10, 85, 50, 108, 110, 98, 105, 119, 103, 83, 87, // p.U2lnbiwgSW + 53, 106, 76, 105, 65, 116, 73, 69, 90, 118, 99, 105, // 5jLiAtIEZvci + 66, 104, 100, 88, 82, 111, 98, 51, 74, 112, 101, 109, // BhdXRob3Jpem + 86, 107, 73, 72, 86, 122, 90, 83, 66, 118, 98, 109, // VkIHVzZSBvbm + 120, 53, 77, 85, 85, 119, 81, 119, 89, 68, 86, 81, // x5MUUwQwYDVQ + 81, 68, 69, 122, 120, 87, 10, 90, 88, 74, 112, 85, // QDEzxW.ZXJpU + 50, 108, 110, 98, 105, 66, 68, 98, 71, 70, 122, 99, // 2lnbiBDbGFzc + 121, 65, 122, 73, 70, 66, 49, 89, 109, 120, 112, 89, // yAzIFB1YmxpY + 121, 66, 81, 99, 109, 108, 116, 89, 88, 74, 53, 73, // yBQcmltYXJ5I + 69, 78, 108, 99, 110, 82, 112, 90, 109, 108, 106, 89, // ENlcnRpZmljY + 88, 82, 112, 98, 50, 52, 103, 81, 88, 86, 48, 10, // XRpb24gQXV0. + 97, 71, 57, 121, 97, 88, 82, 53, 73, 67, 48, 103, // aG9yaXR5IC0g + 82, 122, 85, 119, 72, 104, 99, 78, 77, 84, 85, 119, // RzUwHhcNMTUw + 78, 84, 69, 121, 77, 68, 65, 119, 77, 68, 65, 119, // NTEyMDAwMDAw + 87, 104, 99, 78, 77, 106, 85, 119, 78, 84, 69, 120, // WhcNMjUwNTEx + 77, 106, 77, 49, 79, 84, 85, 53, 87, 106, 67, 66, // MjM1OTU5WjCB + 103, 68, 69, 76, 10, 77, 65, 107, 71, 65, 49, 85, // gDEL.MAkGA1U + 69, 66, 104, 77, 67, 86, 86, 77, 120, 72, 84, 65, // EBhMCVVMxHTA + 98, 66, 103, 78, 86, 66, 65, 111, 84, 70, 70, 78, // bBgNVBAoTFFN + 53, 98, 87, 70, 117, 100, 71, 86, 106, 73, 69, 78, // 5bWFudGVjIEN + 118, 99, 110, 66, 118, 99, 109, 70, 48, 97, 87, 57, // vcnBvcmF0aW9 + 117, 77, 82, 56, 119, 72, 81, 89, 68, 10, 86, 81, // uMR8wHQYD.VQ + 81, 76, 69, 120, 90, 84, 101, 87, 49, 104, 98, 110, // QLExZTeW1hbn + 82, 108, 89, 121, 66, 85, 99, 110, 86, 122, 100, 67, // RlYyBUcnVzdC + 66, 79, 90, 88, 82, 51, 98, 51, 74, 114, 77, 84, // BOZXR3b3JrMT + 69, 119, 76, 119, 89, 68, 86, 81, 81, 68, 69, 121, // EwLwYDVQQDEy + 104, 84, 101, 87, 49, 104, 98, 110, 82, 108, 89, 121, // hTeW1hbnRlYy + 66, 68, 10, 98, 71, 70, 122, 99, 121, 65, 122, 73, // BD.bGFzcyAzI + 69, 86, 68, 81, 121, 65, 121, 78, 84, 89, 103, 89, // EVDQyAyNTYgY + 109, 108, 48, 73, 70, 78, 84, 84, 67, 66, 68, 81, // ml0IFNTTCBDQ + 83, 65, 116, 73, 69, 99, 121, 77, 70, 107, 119, 69, // SAtIEcyMFkwE + 119, 89, 72, 75, 111, 90, 73, 122, 106, 48, 67, 65, // wYHKoZIzj0CA + 81, 89, 73, 75, 111, 90, 73, 10, 122, 106, 48, 68, // QYIKoZI.zj0D + 65, 81, 99, 68, 81, 103, 65, 69, 68, 120, 117, 107, // AQcDQgAEDxuk + 107, 100, 102, 110, 114, 79, 102, 82, 84, 107, 54, 51, // kdfnrOfRTk63 + 90, 70, 118, 104, 106, 51, 57, 117, 66, 78, 79, 114, // ZFvhj39uBNOr + 79, 78, 116, 69, 116, 48, 66, 99, 98, 98, 50, 87, // ONtEt0Bcbb2W + 108, 106, 102, 102, 101, 89, 109, 71, 90, 47, 101, 120, // ljffeYmGZ/ex + 10, 72, 119, 105, 101, 47, 87, 77, 55, 82, 111, 121, // .Hwie/WM7Roy + 102, 118, 86, 80, 111, 70, 100, 121, 88, 80, 105, 117, // fvVPoFdyXPiu + 66, 82, 113, 50, 71, 102, 119, 52, 66, 79, 97, 79, // BRq2Gfw4BOaO + 67, 65, 86, 48, 119, 103, 103, 70, 90, 77, 67, 52, // CAV0wggFZMC4 + 71, 67, 67, 115, 71, 65, 81, 85, 70, 66, 119, 69, // GCCsGAQUFBwE + 66, 66, 67, 73, 119, 10, 73, 68, 65, 101, 66, 103, // BBCIw.IDAeBg + 103, 114, 66, 103, 69, 70, 66, 81, 99, 119, 65, 89, // grBgEFBQcwAY + 89, 83, 97, 72, 82, 48, 99, 68, 111, 118, 76, 51, // YSaHR0cDovL3 + 77, 117, 99, 51, 108, 116, 89, 50, 81, 117, 89, 50, // Muc3ltY2QuY2 + 57, 116, 77, 66, 73, 71, 65, 49, 85, 100, 69, 119, // 9tMBIGA1UdEw + 69, 66, 47, 119, 81, 73, 77, 65, 89, 66, 10, 65, // EB/wQIMAYB.A + 102, 56, 67, 65, 81, 65, 119, 90, 81, 89, 68, 86, // f8CAQAwZQYDV + 82, 48, 103, 66, 70, 52, 119, 88, 68, 66, 97, 66, // R0gBF4wXDBaB + 103, 112, 103, 104, 107, 103, 66, 104, 118, 104, 70, 65, // gpghkgBhvhFA + 81, 99, 50, 77, 69, 119, 119, 73, 119, 89, 73, 75, // Qc2MEwwIwYIK + 119, 89, 66, 66, 81, 85, 72, 65, 103, 69, 87, 70, // wYBBQUHAgEWF + 50, 104, 48, 10, 100, 72, 66, 122, 79, 105, 56, 118, // 2h0.dHBzOi8v + 90, 67, 53, 122, 101, 87, 49, 106, 89, 105, 53, 106, // ZC5zeW1jYi5j + 98, 50, 48, 118, 89, 51, 66, 122, 77, 67, 85, 71, // b20vY3BzMCUG + 67, 67, 115, 71, 65, 81, 85, 70, 66, 119, 73, 67, // CCsGAQUFBwIC + 77, 66, 107, 97, 70, 50, 104, 48, 100, 72, 66, 122, // MBkaF2h0dHBz + 79, 105, 56, 118, 90, 67, 53, 122, 10, 101, 87, 49, // Oi8vZC5z.eW1 + 106, 89, 105, 53, 106, 98, 50, 48, 118, 99, 110, 66, // jYi5jb20vcnB + 104, 77, 67, 56, 71, 65, 49, 85, 100, 72, 119, 81, // hMC8GA1UdHwQ + 111, 77, 67, 89, 119, 74, 75, 65, 105, 111, 67, 67, // oMCYwJKAioCC + 71, 72, 109, 104, 48, 100, 72, 65, 54, 76, 121, 57, // GHmh0dHA6Ly9 + 122, 76, 110, 78, 53, 98, 87, 78, 105, 76, 109, 78, // zLnN5bWNiLmN + 118, 10, 98, 83, 57, 119, 89, 50, 69, 122, 76, 87, // v.bS9wY2EzLW + 99, 49, 76, 109, 78, 121, 98, 68, 65, 79, 66, 103, // c1LmNybDAOBg + 78, 86, 72, 81, 56, 66, 65, 102, 56, 69, 66, 65, // NVHQ8BAf8EBA + 77, 67, 65, 81, 89, 119, 75, 119, 89, 68, 86, 82, // MCAQYwKwYDVR + 48, 82, 66, 67, 81, 119, 73, 113, 81, 103, 77, 66, // 0RBCQwIqQgMB + 52, 120, 72, 68, 65, 97, 10, 66, 103, 78, 86, 66, // 4xHDAa.BgNVB + 65, 77, 84, 69, 49, 78, 90, 84, 85, 77, 116, 82, // AMTE1NZTUMtR + 85, 78, 68, 76, 85, 78, 66, 76, 88, 65, 121, 78, // UNDLUNBLXAyN + 84, 89, 116, 77, 106, 73, 119, 72, 81, 89, 68, 86, // TYtMjIwHQYDV + 82, 48, 79, 66, 66, 89, 69, 70, 67, 88, 119, 105, // R0OBBYEFCXwi + 117, 70, 76, 101, 116, 107, 66, 108, 81, 114, 116, 10, // uFLetkBlQrt. + 120, 108, 80, 120, 106, 72, 103, 102, 50, 102, 80, 52, // xlPxjHgf2fP4 + 77, 66, 56, 71, 65, 49, 85, 100, 73, 119, 81, 89, // MB8GA1UdIwQY + 77, 66, 97, 65, 70, 72, 47, 84, 90, 97, 102, 67, // MBaAFH/TZafC + 51, 101, 121, 55, 56, 68, 65, 74, 56, 48, 77, 53, // 3ey78DAJ80M5 + 43, 103, 75, 118, 77, 122, 69, 122, 77, 65, 48, 71, // +gKvMzEzMA0G + 67, 83, 113, 71, 10, 83, 73, 98, 51, 68, 81, 69, // CSqG.SIb3DQE + 66, 67, 119, 85, 65, 65, 52, 73, 66, 65, 81, 65, // BCwUAA4IBAQA + 77, 77, 71, 85, 88, 66, 97, 87, 84, 100, 97, 76, // MMGUXBaWTdaL + 120, 115, 84, 71, 116, 99, 66, 47, 110, 97, 113, 106, // xsTGtcB/naqj + 73, 81, 114, 76, 118, 111, 86, 57, 78, 71, 43, 55, // IQrLvoV9NG+7 + 77, 111, 72, 112, 71, 100, 47, 54, 57, 10, 100, 90, // MoHpGd/69.dZ + 47, 104, 50, 122, 79, 121, 55, 115, 71, 70, 85, 72, // /h2zOy7sGFUH + 111, 71, 47, 48, 72, 71, 82, 65, 57, 114, 120, 84, // oG/0HGRA9rxT + 47, 53, 119, 53, 71, 107, 69, 86, 73, 86, 107, 120, // /5w5GkEVIVkx + 116, 87, 121, 73, 87, 87, 113, 54, 114, 115, 52, 67, // tWyIWWq6rs4C + 84, 90, 116, 56, 66, 101, 106, 47, 75, 72, 89, 82, // TZt8Bej/KHYR + 98, 111, 10, 106, 116, 69, 68, 85, 107, 67, 84, 90, // bo.jtEDUkCTZ + 83, 84, 76, 105, 67, 118, 103, 117, 80, 121, 118, 105, // STLiCvguPyvi + 110, 88, 103, 120, 121, 43, 76, 72, 84, 43, 80, 109, // nXgxy+LHT+Pm + 100, 116, 69, 102, 88, 115, 118, 99, 100, 98, 101, 66, // dtEfXsvcdbeB + 83, 87, 85, 89, 112, 79, 115, 68, 89, 118, 68, 50, // SWUYpOsDYvD2 + 104, 78, 116, 122, 57, 100, 119, 10, 79, 100, 53, 110, // hNtz9dw.Od5n + 66, 111, 115, 77, 65, 112, 109, 100, 120, 116, 43, 122, // BosMApmdxt+z + 55, 76, 81, 121, 90, 117, 56, 119, 77, 110, 102, 73, // 7LQyZu8wMnfI + 49, 85, 54, 73, 77, 79, 43, 82, 87, 111, 119, 120, // 1U6IMO+RWowx + 90, 56, 117, 121, 48, 111, 115, 119, 100, 70, 89, 100, // Z8uy0oswdFYd + 51, 50, 108, 57, 120, 101, 43, 97, 65, 69, 47, 107, // 32l9xe+aAE/k + 10, 121, 57, 97, 108, 76, 117, 47, 77, 57, 112, 118, // .y9alLu/M9pv + 120, 105, 85, 75, 117, 102, 113, 72, 74, 82, 103, 68, // xiUKufqHJRgD + 66, 75, 65, 54, 117, 68, 106, 72, 76, 77, 80, 88, // BKA6uDjHLMPX + 43, 47, 110, 120, 88, 97, 78, 67, 80, 88, 51, 83, // +/nxXaNCPX3S + 73, 52, 75, 86, 90, 49, 115, 116, 72, 81, 47, 85, // I4KVZ1stHQ/U + 53, 111, 78, 108, 77, 10, 100, 72, 78, 57, 117, 109, // 5oNlM.dHN9um + 65, 118, 108, 85, 51, 49, 51, 103, 48, 73, 103, 74, // AvlU313g0IgJ + 114, 106, 115, 81, 50, 110, 73, 100, 102, 57, 100, 115, // rjsQ2nIdf9ds + 100, 80, 43, 54, 108, 114, 109, 80, 55, 115, 10, 45, // dP+6lrmP7s.- + 45, 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, // ----END CERT + 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, // IFICATE----- + 10, 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, // ..Subject: C + 61, 85, 83, 44, 32, 79, 61, 86, 101, 114, 105, 83, // =US, O=VeriS + 105, 103, 110, 44, 32, 73, 110, 99, 46, 44, 32, 79, // ign, Inc., O + 85, 61, 86, 101, 114, 105, 83, 105, 103, 110, 32, 84, // U=VeriSign T + 114, 117, 115, 116, 32, 78, 101, 116, 119, 111, 114, 107, // rust Network + 44, 32, 79, 85, 61, 40, 99, 41, 32, 50, 48, 48, // , OU=(c) 200 + 54, 32, 86, 101, 114, 105, 83, 105, 103, 110, 44, 32, // 6 VeriSign, + 73, 110, 99, 46, 32, 45, 32, 70, 111, 114, 32, 97, // Inc. - For a + 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 117, 115, // uthorized us + 101, 32, 111, 110, 108, 121, 44, 32, 67, 78, 61, 86, // e only, CN=V + 101, 114, 105, 83, 105, 103, 110, 32, 67, 108, 97, 115, // eriSign Clas + 115, 32, 51, 32, 80, 117, 98, 108, 105, 99, 32, 80, // s 3 Public P + 114, 105, 109, 97, 114, 121, 32, 67, 101, 114, 116, 105, // rimary Certi + 102, 105, 99, 97, 116, 105, 111, 110, 32, 65, 117, 116, // fication Aut + 104, 111, 114, 105, 116, 121, 32, 45, 32, 71, 53, 10, // hority - G5. + 78, 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, // Not Before: + 78, 111, 118, 32, 32, 56, 32, 48, 48, 58, 48, 48, // Nov 8 00:00 + 58, 48, 48, 32, 50, 48, 48, 54, 32, 71, 77, 84, // :00 2006 GMT + 10, 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, // .Not After : + 32, 74, 117, 108, 32, 49, 54, 32, 50, 51, 58, 53, // Jul 16 23:5 + 57, 58, 53, 57, 32, 50, 48, 51, 54, 32, 71, 77, // 9:59 2036 GM + 84, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, // T.-----BEGIN + 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, // CERTIFICATE + 45, 45, 45, 45, 45, 10, 77, 73, 73, 69, 48, 122, // -----.MIIE0z + 67, 67, 65, 55, 117, 103, 65, 119, 73, 66, 65, 103, // CCA7ugAwIBAg + 73, 81, 71, 78, 114, 82, 110, 105, 90, 57, 54, 76, // IQGNrRniZ96L + 116, 75, 73, 86, 106, 78, 122, 71, 115, 55, 83, 106, // tKIVjNzGs7Sj + 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, // ANBgkqhkiG9w + 48, 66, 65, 81, 85, 70, 65, 68, 67, 66, 10, 121, // 0BAQUFADCB.y + 106, 69, 76, 77, 65, 107, 71, 65, 49, 85, 69, 66, // jELMAkGA1UEB + 104, 77, 67, 86, 86, 77, 120, 70, 122, 65, 86, 66, // hMCVVMxFzAVB + 103, 78, 86, 66, 65, 111, 84, 68, 108, 90, 108, 99, // gNVBAoTDlZlc + 109, 108, 84, 97, 87, 100, 117, 76, 67, 66, 74, 98, // mlTaWduLCBJb + 109, 77, 117, 77, 82, 56, 119, 72, 81, 89, 68, 86, // mMuMR8wHQYDV + 81, 81, 76, 10, 69, 120, 90, 87, 90, 88, 74, 112, // QQL.ExZWZXJp + 85, 50, 108, 110, 98, 105, 66, 85, 99, 110, 86, 122, // U2lnbiBUcnVz + 100, 67, 66, 79, 90, 88, 82, 51, 98, 51, 74, 114, // dCBOZXR3b3Jr + 77, 84, 111, 119, 79, 65, 89, 68, 86, 81, 81, 76, // MTowOAYDVQQL + 69, 122, 69, 111, 89, 121, 107, 103, 77, 106, 65, 119, // EzEoYykgMjAw + 78, 105, 66, 87, 90, 88, 74, 112, 10, 85, 50, 108, // NiBWZXJp.U2l + 110, 98, 105, 119, 103, 83, 87, 53, 106, 76, 105, 65, // nbiwgSW5jLiA + 116, 73, 69, 90, 118, 99, 105, 66, 104, 100, 88, 82, // tIEZvciBhdXR + 111, 98, 51, 74, 112, 101, 109, 86, 107, 73, 72, 86, // ob3JpemVkIHV + 122, 90, 83, 66, 118, 98, 109, 120, 53, 77, 85, 85, // zZSBvbmx5MUU + 119, 81, 119, 89, 68, 86, 81, 81, 68, 69, 122, 120, // wQwYDVQQDEzx + 87, 10, 90, 88, 74, 112, 85, 50, 108, 110, 98, 105, // W.ZXJpU2lnbi + 66, 68, 98, 71, 70, 122, 99, 121, 65, 122, 73, 70, // BDbGFzcyAzIF + 66, 49, 89, 109, 120, 112, 89, 121, 66, 81, 99, 109, // B1YmxpYyBQcm + 108, 116, 89, 88, 74, 53, 73, 69, 78, 108, 99, 110, // ltYXJ5IENlcn + 82, 112, 90, 109, 108, 106, 89, 88, 82, 112, 98, 50, // RpZmljYXRpb2 + 52, 103, 81, 88, 86, 48, 10, 97, 71, 57, 121, 97, // 4gQXV0.aG9ya + 88, 82, 53, 73, 67, 48, 103, 82, 122, 85, 119, 72, // XR5IC0gRzUwH + 104, 99, 78, 77, 68, 89, 120, 77, 84, 65, 52, 77, // hcNMDYxMTA4M + 68, 65, 119, 77, 68, 65, 119, 87, 104, 99, 78, 77, // DAwMDAwWhcNM + 122, 89, 119, 78, 122, 69, 50, 77, 106, 77, 49, 79, // zYwNzE2MjM1O + 84, 85, 53, 87, 106, 67, 66, 121, 106, 69, 76, 10, // TU5WjCByjEL. + 77, 65, 107, 71, 65, 49, 85, 69, 66, 104, 77, 67, // MAkGA1UEBhMC + 86, 86, 77, 120, 70, 122, 65, 86, 66, 103, 78, 86, // VVMxFzAVBgNV + 66, 65, 111, 84, 68, 108, 90, 108, 99, 109, 108, 84, // BAoTDlZlcmlT + 97, 87, 100, 117, 76, 67, 66, 74, 98, 109, 77, 117, // aWduLCBJbmMu + 77, 82, 56, 119, 72, 81, 89, 68, 86, 81, 81, 76, // MR8wHQYDVQQL + 69, 120, 90, 87, 10, 90, 88, 74, 112, 85, 50, 108, // ExZW.ZXJpU2l + 110, 98, 105, 66, 85, 99, 110, 86, 122, 100, 67, 66, // nbiBUcnVzdCB + 79, 90, 88, 82, 51, 98, 51, 74, 114, 77, 84, 111, // OZXR3b3JrMTo + 119, 79, 65, 89, 68, 86, 81, 81, 76, 69, 122, 69, // wOAYDVQQLEzE + 111, 89, 121, 107, 103, 77, 106, 65, 119, 78, 105, 66, // oYykgMjAwNiB + 87, 90, 88, 74, 112, 85, 50, 108, 110, 10, 98, 105, // WZXJpU2ln.bi + 119, 103, 83, 87, 53, 106, 76, 105, 65, 116, 73, 69, // wgSW5jLiAtIE + 90, 118, 99, 105, 66, 104, 100, 88, 82, 111, 98, 51, // ZvciBhdXRob3 + 74, 112, 101, 109, 86, 107, 73, 72, 86, 122, 90, 83, // JpemVkIHVzZS + 66, 118, 98, 109, 120, 53, 77, 85, 85, 119, 81, 119, // Bvbmx5MUUwQw + 89, 68, 86, 81, 81, 68, 69, 122, 120, 87, 90, 88, // YDVQQDEzxWZX + 74, 112, 10, 85, 50, 108, 110, 98, 105, 66, 68, 98, // Jp.U2lnbiBDb + 71, 70, 122, 99, 121, 65, 122, 73, 70, 66, 49, 89, // GFzcyAzIFB1Y + 109, 120, 112, 89, 121, 66, 81, 99, 109, 108, 116, 89, // mxpYyBQcmltY + 88, 74, 53, 73, 69, 78, 108, 99, 110, 82, 112, 90, // XJ5IENlcnRpZ + 109, 108, 106, 89, 88, 82, 112, 98, 50, 52, 103, 81, // mljYXRpb24gQ + 88, 86, 48, 97, 71, 57, 121, 10, 97, 88, 82, 53, // XV0aG9y.aXR5 + 73, 67, 48, 103, 82, 122, 85, 119, 103, 103, 69, 105, // IC0gRzUwggEi + 77, 65, 48, 71, 67, 83, 113, 71, 83, 73, 98, 51, // MA0GCSqGSIb3 + 68, 81, 69, 66, 65, 81, 85, 65, 65, 52, 73, 66, // DQEBAQUAA4IB + 68, 119, 65, 119, 103, 103, 69, 75, 65, 111, 73, 66, // DwAwggEKAoIB + 65, 81, 67, 118, 74, 65, 103, 73, 75, 88, 111, 49, // AQCvJAgIKXo1 + 10, 110, 109, 65, 77, 113, 117, 100, 76, 79, 48, 55, // .nmAMqudLO07 + 99, 102, 76, 119, 56, 82, 82, 121, 55, 75, 43, 68, // cfLw8RRy7K+D + 43, 75, 81, 76, 53, 86, 119, 105, 106, 90, 73, 85, // +KQL5VwijZIU + 86, 74, 47, 88, 120, 114, 99, 103, 120, 105, 86, 48, // VJ/XxrcgxiV0 + 105, 54, 67, 113, 113, 112, 107, 75, 122, 106, 47, 105, // i6CqqpkKzj/i + 53, 86, 98, 101, 120, 10, 116, 48, 117, 122, 47, 111, // 5Vbex.t0uz/o + 57, 43, 66, 49, 102, 115, 55, 48, 80, 98, 90, 109, // 9+B1fs70PbZm + 73, 86, 89, 99, 57, 103, 68, 97, 84, 89, 51, 118, // IVYc9gDaTY3v + 106, 103, 119, 50, 73, 73, 80, 86, 81, 84, 54, 48, // jgw2IIPVQT60 + 110, 75, 87, 86, 83, 70, 74, 117, 85, 114, 106, 120, // nKWVSFJuUrjx + 117, 102, 54, 47, 87, 104, 107, 99, 73, 122, 10, 83, // uf6/WhkcIz.S + 100, 104, 68, 89, 50, 112, 83, 83, 57, 75, 80, 54, // dhDY2pSS9KP6 + 72, 66, 82, 84, 100, 71, 74, 97, 88, 118, 72, 99, // HBRTdGJaXvHc + 80, 97, 122, 51, 66, 74, 48, 50, 51, 116, 100, 83, // Paz3BJ023tdS + 49, 98, 84, 108, 114, 56, 86, 100, 54, 71, 119, 57, // 1bTlr8Vd6Gw9 + 75, 73, 108, 56, 113, 56, 99, 107, 109, 99, 89, 53, // KIl8q8ckmcY5 + 102, 81, 71, 10, 66, 79, 43, 81, 117, 101, 81, 65, // fQG.BO+QueQA + 53, 78, 48, 54, 116, 82, 110, 47, 65, 114, 114, 48, // 5N06tRn/Arr0 + 80, 79, 55, 103, 105, 43, 115, 51, 105, 43, 122, 48, // PO7gi+s3i+z0 + 49, 54, 122, 121, 57, 118, 65, 57, 114, 57, 49, 49, // 16zy9vA9r911 + 107, 84, 77, 90, 72, 82, 120, 65, 121, 51, 81, 107, // kTMZHRxAy3Qk + 71, 83, 71, 84, 50, 82, 84, 43, 10, 114, 67, 112, // GSGT2RT+.rCp + 83, 120, 52, 47, 86, 66, 69, 110, 107, 106, 87, 78, // Sx4/VBEnkjWN + 72, 105, 68, 120, 112, 103, 56, 118, 43, 82, 55, 48, // HiDxpg8v+R70 + 114, 102, 107, 47, 70, 108, 97, 52, 79, 110, 100, 84, // rfk/Fla4OndT + 82, 81, 56, 66, 110, 99, 43, 77, 85, 67, 72, 55, // RQ8Bnc+MUCH7 + 108, 80, 53, 57, 122, 117, 68, 77, 75, 122, 49, 48, // lP59zuDMKz10 + 47, 10, 78, 73, 101, 87, 105, 117, 53, 84, 54, 67, // /.NIeWiu5T6C + 85, 86, 65, 103, 77, 66, 65, 65, 71, 106, 103, 98, // UVAgMBAAGjgb + 73, 119, 103, 97, 56, 119, 68, 119, 89, 68, 86, 82, // Iwga8wDwYDVR + 48, 84, 65, 81, 72, 47, 66, 65, 85, 119, 65, 119, // 0TAQH/BAUwAw + 69, 66, 47, 122, 65, 79, 66, 103, 78, 86, 72, 81, // EB/zAOBgNVHQ + 56, 66, 65, 102, 56, 69, 10, 66, 65, 77, 67, 65, // 8BAf8E.BAMCA + 81, 89, 119, 98, 81, 89, 73, 75, 119, 89, 66, 66, // QYwbQYIKwYBB + 81, 85, 72, 65, 81, 119, 69, 89, 84, 66, 102, 111, // QUHAQwEYTBfo + 86, 50, 103, 87, 122, 66, 90, 77, 70, 99, 119, 86, // V2gWzBZMFcwV + 82, 89, 74, 97, 87, 49, 104, 90, 50, 85, 118, 90, // RYJaW1hZ2UvZ + 50, 108, 109, 77, 67, 69, 119, 72, 122, 65, 72, 10, // 2lmMCEwHzAH. + 66, 103, 85, 114, 68, 103, 77, 67, 71, 103, 81, 85, // BgUrDgMCGgQU + 106, 43, 88, 84, 71, 111, 97, 115, 106, 89, 53, 114, // j+XTGoasjY5r + 119, 56, 43, 65, 97, 116, 82, 73, 71, 67, 120, 55, // w8+AatRIGCx7 + 71, 83, 52, 119, 74, 82, 89, 106, 97, 72, 82, 48, // GS4wJRYjaHR0 + 99, 68, 111, 118, 76, 50, 120, 118, 90, 50, 56, 117, // cDovL2xvZ28u + 100, 109, 86, 121, 10, 97, 88, 78, 112, 90, 50, 52, // dmVy.aXNpZ24 + 117, 89, 50, 57, 116, 76, 51, 90, 122, 98, 71, 57, // uY29tL3ZzbG9 + 110, 98, 121, 53, 110, 97, 87, 89, 119, 72, 81, 89, // nby5naWYwHQY + 68, 86, 82, 48, 79, 66, 66, 89, 69, 70, 72, 47, // DVR0OBBYEFH/ + 84, 90, 97, 102, 67, 51, 101, 121, 55, 56, 68, 65, // TZafC3ey78DA + 74, 56, 48, 77, 53, 43, 103, 75, 118, 10, 77, 122, // J80M5+gKv.Mz + 69, 122, 77, 65, 48, 71, 67, 83, 113, 71, 83, 73, // EzMA0GCSqGSI + 98, 51, 68, 81, 69, 66, 66, 81, 85, 65, 65, 52, // b3DQEBBQUAA4 + 73, 66, 65, 81, 67, 84, 74, 69, 111, 119, 88, 50, // IBAQCTJEowX2 + 76, 80, 50, 66, 113, 89, 76, 122, 51, 113, 51, 74, // LP2BqYLz3q3J + 107, 116, 118, 88, 102, 50, 112, 88, 107, 105, 79, 79, // ktvXf2pXkiOO + 122, 69, 10, 112, 54, 66, 52, 69, 113, 49, 105, 68, // zE.p6B4Eq1iD + 107, 86, 119, 90, 77, 88, 110, 108, 50, 89, 116, 109, // kVwZMXnl2Ytm + 65, 108, 43, 88, 54, 47, 87, 122, 67, 104, 108, 56, // Al+X6/WzChl8 + 103, 71, 113, 67, 66, 112, 72, 51, 118, 110, 53, 102, // gGqCBpH3vn5f + 74, 74, 97, 67, 71, 107, 103, 68, 100, 107, 43, 98, // JJaCGkgDdk+b + 87, 52, 56, 68, 87, 55, 89, 10, 53, 103, 97, 82, // W48DW7Y.5gaR + 81, 66, 105, 53, 43, 77, 72, 116, 51, 57, 116, 66, // QBi5+MHt39tB + 113, 117, 67, 87, 73, 77, 110, 78, 90, 66, 85, 52, // quCWIMnNZBU4 + 103, 99, 109, 85, 55, 113, 75, 69, 75, 81, 115, 84, // gcmU7qKEKQsT + 98, 52, 55, 98, 68, 78, 48, 108, 65, 116, 117, 107, // b47bDN0lAtuk + 105, 120, 108, 69, 48, 107, 70, 54, 66, 87, 108, 75, // ixlE0kF6BWlK + 10, 87, 69, 57, 103, 121, 110, 54, 67, 97, 103, 115, // .WE9gyn6Cags + 67, 113, 105, 85, 88, 79, 98, 88, 98, 102, 43, 101, // CqiUXObXbf+e + 69, 90, 83, 113, 86, 105, 114, 50, 71, 51, 108, 54, // EZSqVir2G3l6 + 66, 70, 111, 77, 116, 69, 77, 122, 101, 47, 97, 105, // BFoMtEMze/ai + 67, 75, 109, 48, 111, 72, 119, 48, 76, 120, 79, 88, // CKm0oHw0LxOX + 110, 71, 105, 89, 90, 10, 52, 102, 81, 82, 98, 120, // nGiYZ.4fQRbx + 67, 49, 108, 102, 122, 110, 81, 103, 85, 121, 50, 56, // C1lfznQgUy28 + 54, 100, 85, 86, 52, 111, 116, 112, 54, 70, 48, 49, // 6dUV4otp6F01 + 118, 118, 112, 88, 49, 70, 81, 72, 75, 79, 116, 119, // vvpX1FQHKOtw + 53, 114, 68, 103, 98, 55, 77, 122, 86, 73, 99, 98, // 5rDgb7MzVIcb + 105, 100, 74, 52, 118, 69, 90, 86, 56, 78, 10, 104, // idJ4vEZV8N.h + 110, 97, 99, 82, 72, 114, 50, 108, 86, 122, 50, 88, // nacRHr2lVz2X + 84, 73, 73, 77, 54, 82, 85, 116, 104, 103, 47, 97, // TIIM6RUthg/a + 70, 122, 121, 81, 107, 113, 70, 79, 70, 83, 68, 88, // FzyQkqFOFSDX + 57, 72, 111, 76, 80, 75, 115, 69, 100, 97, 111, 55, // 9HoLPKsEdao7 + 87, 78, 113, 10, 45, 45, 45, 45, 45, 69, 78, 68, // WNq.-----END + 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, // CERTIFICATE + 45, 45, 45, 45, 45, 10, 10, 83, 117, 98, 106, 101, // -----..Subje + 99, 116, 58, 32, 67, 61, 85, 83, 44, 32, 79, 61, // ct: C=US, O= + 84, 104, 101, 32, 71, 111, 32, 68, 97, 100, 100, 121, // The Go Daddy + 32, 71, 114, 111, 117, 112, 44, 32, 73, 110, 99, 46, // Group, Inc. + 44, 32, 79, 85, 61, 71, 111, 32, 68, 97, 100, 100, // , OU=Go Dadd + 121, 32, 67, 108, 97, 115, 115, 32, 50, 32, 67, 101, // y Class 2 Ce + 114, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 32, // rtification + 65, 117, 116, 104, 111, 114, 105, 116, 121, 10, 78, 111, // Authority.No + 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 74, 117, // t Before: Ju + 110, 32, 50, 57, 32, 49, 55, 58, 48, 54, 58, 50, // n 29 17:06:2 + 48, 32, 50, 48, 48, 52, 32, 71, 77, 84, 10, 78, // 0 2004 GMT.N + 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 74, // ot After : J + 117, 110, 32, 50, 57, 32, 49, 55, 58, 48, 54, 58, // un 29 17:06: + 50, 48, 32, 50, 48, 51, 52, 32, 71, 77, 84, 10, // 20 2034 GMT. + 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, // -----BEGIN C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 77, 73, 73, 69, 65, 68, 67, 67, // ---.MIIEADCC + 65, 117, 105, 103, 65, 119, 73, 66, 65, 103, 73, 66, // AuigAwIBAgIB + 65, 68, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, // ADANBgkqhkiG + 57, 119, 48, 66, 65, 81, 85, 70, 65, 68, 66, 106, // 9w0BAQUFADBj + 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, // MQswCQYDVQQG + 69, 119, 74, 86, 85, 122, 69, 104, 10, 77, 66, 56, // EwJVUzEh.MB8 + 71, 65, 49, 85, 69, 67, 104, 77, 89, 86, 71, 104, // GA1UEChMYVGh + 108, 73, 69, 100, 118, 73, 69, 82, 104, 90, 71, 82, // lIEdvIERhZGR + 53, 73, 69, 100, 121, 98, 51, 86, 119, 76, 67, 66, // 5IEdyb3VwLCB + 74, 98, 109, 77, 117, 77, 84, 69, 119, 76, 119, 89, // JbmMuMTEwLwY + 68, 86, 81, 81, 76, 69, 121, 104, 72, 98, 121, 66, // DVQQLEyhHbyB + 69, 10, 89, 87, 82, 107, 101, 83, 66, 68, 98, 71, // E.YWRkeSBDbG + 70, 122, 99, 121, 65, 121, 73, 69, 78, 108, 99, 110, // FzcyAyIENlcn + 82, 112, 90, 109, 108, 106, 89, 88, 82, 112, 98, 50, // RpZmljYXRpb2 + 52, 103, 81, 88, 86, 48, 97, 71, 57, 121, 97, 88, // 4gQXV0aG9yaX + 82, 53, 77, 66, 52, 88, 68, 84, 65, 48, 77, 68, // R5MB4XDTA0MD + 89, 121, 79, 84, 69, 51, 10, 77, 68, 89, 121, 77, // YyOTE3.MDYyM + 70, 111, 88, 68, 84, 77, 48, 77, 68, 89, 121, 79, // FoXDTM0MDYyO + 84, 69, 51, 77, 68, 89, 121, 77, 70, 111, 119, 89, // TE3MDYyMFowY + 122, 69, 76, 77, 65, 107, 71, 65, 49, 85, 69, 66, // zELMAkGA1UEB + 104, 77, 67, 86, 86, 77, 120, 73, 84, 65, 102, 66, // hMCVVMxITAfB + 103, 78, 86, 66, 65, 111, 84, 71, 70, 82, 111, 10, // gNVBAoTGFRo. + 90, 83, 66, 72, 98, 121, 66, 69, 89, 87, 82, 107, // ZSBHbyBEYWRk + 101, 83, 66, 72, 99, 109, 57, 49, 99, 67, 119, 103, // eSBHcm91cCwg + 83, 87, 53, 106, 76, 106, 69, 120, 77, 67, 56, 71, // SW5jLjExMC8G + 65, 49, 85, 69, 67, 120, 77, 111, 82, 50, 56, 103, // A1UECxMoR28g + 82, 71, 70, 107, 90, 72, 107, 103, 81, 50, 120, 104, // RGFkZHkgQ2xh + 99, 51, 77, 103, 10, 77, 105, 66, 68, 90, 88, 74, // c3Mg.MiBDZXJ + 48, 97, 87, 90, 112, 89, 50, 70, 48, 97, 87, 57, // 0aWZpY2F0aW9 + 117, 73, 69, 70, 49, 100, 71, 104, 118, 99, 109, 108, // uIEF1dGhvcml + 48, 101, 84, 67, 67, 65, 83, 65, 119, 68, 81, 89, // 0eTCCASAwDQY + 74, 75, 111, 90, 73, 104, 118, 99, 78, 65, 81, 69, // JKoZIhvcNAQE + 66, 66, 81, 65, 68, 103, 103, 69, 78, 10, 65, 68, // BBQADggEN.AD + 67, 67, 65, 81, 103, 67, 103, 103, 69, 66, 65, 78, // CCAQgCggEBAN + 54, 100, 49, 43, 112, 88, 71, 69, 109, 104, 87, 43, // 6d1+pXGEmhW+ + 118, 88, 88, 48, 105, 71, 54, 114, 55, 100, 47, 43, // vXX0iG6r7d/+ + 84, 118, 90, 120, 122, 48, 90, 87, 105, 122, 86, 51, // TvZxz0ZWizV3 + 71, 103, 88, 110, 101, 55, 55, 90, 116, 74, 54, 88, // GgXne77ZtJ6X + 67, 65, 10, 80, 86, 89, 89, 89, 119, 104, 118, 50, // CA.PVYYYwhv2 + 118, 76, 77, 48, 68, 57, 47, 65, 108, 81, 105, 86, // vLM0D9/AlQiV + 66, 68, 89, 115, 111, 72, 85, 119, 72, 85, 57, 83, // BDYsoHUwHU9S + 51, 47, 72, 100, 56, 77, 43, 101, 75, 115, 97, 65, // 3/Hd8M+eKsaA + 55, 85, 103, 97, 121, 57, 113, 75, 55, 72, 70, 105, // 7Ugay9qK7HFi + 72, 55, 69, 117, 120, 54, 119, 10, 119, 100, 104, 70, // H7Eux6w.wdhF + 74, 50, 43, 113, 78, 49, 106, 51, 104, 121, 98, 88, // J2+qN1j3hybX + 50, 67, 51, 50, 113, 82, 101, 51, 72, 51, 73, 50, // 2C32qRe3H3I2 + 84, 113, 89, 88, 80, 50, 87, 89, 107, 116, 115, 113, // TqYXP2WYktsq + 98, 108, 50, 105, 47, 111, 106, 103, 67, 57, 53, 47, // bl2i/ojgC95/ + 53, 89, 48, 86, 52, 101, 118, 76, 79, 116, 88, 105, // 5Y0V4evLOtXi + 10, 69, 113, 73, 84, 76, 100, 105, 79, 114, 49, 56, // .EqITLdiOr18 + 83, 80, 97, 65, 73, 66, 81, 105, 50, 88, 75, 86, // SPaAIBQi2XKV + 108, 79, 65, 82, 70, 109, 82, 54, 106, 89, 71, 66, // lOARFmR6jYGB + 48, 120, 85, 71, 108, 99, 109, 73, 98, 89, 115, 85, // 0xUGlcmIbYsU + 102, 98, 49, 56, 97, 81, 114, 52, 67, 85, 87, 87, // fb18aQr4CUWW + 111, 114, 105, 77, 89, 10, 97, 118, 120, 52, 65, 54, // oriMY.avx4A6 + 108, 78, 102, 52, 68, 68, 43, 113, 116, 97, 47, 75, // lNf4DD+qta/K + 70, 65, 112, 77, 111, 90, 70, 118, 54, 121, 121, 79, // FApMoZFv6yyO + 57, 101, 99, 119, 51, 117, 100, 55, 50, 97, 57, 110, // 9ecw3ud72a9n + 109, 89, 118, 76, 69, 72, 90, 54, 73, 86, 68, 100, // mYvLEHZ6IVDd + 50, 103, 87, 77, 90, 69, 101, 119, 111, 43, 10, 89, // 2gWMZEewo+.Y + 105, 104, 102, 117, 107, 69, 72, 85, 49, 106, 80, 69, // ihfukEHU1jPE + 88, 52, 52, 100, 77, 88, 52, 47, 55, 86, 112, 107, // X44dMX4/7Vpk + 73, 43, 69, 100, 79, 113, 88, 71, 54, 56, 67, 65, // I+EdOqXG68CA + 81, 79, 106, 103, 99, 65, 119, 103, 98, 48, 119, 72, // QOjgcAwgb0wH + 81, 89, 68, 86, 82, 48, 79, 66, 66, 89, 69, 70, // QYDVR0OBBYEF + 78, 76, 69, 10, 115, 78, 75, 82, 49, 69, 119, 82, // NLE.sNKR1EwR + 99, 98, 78, 104, 121, 122, 50, 104, 47, 116, 50, 111, // cbNhyz2h/t2o + 97, 116, 84, 106, 77, 73, 71, 78, 66, 103, 78, 86, // atTjMIGNBgNV + 72, 83, 77, 69, 103, 89, 85, 119, 103, 89, 75, 65, // HSMEgYUwgYKA + 70, 78, 76, 69, 115, 78, 75, 82, 49, 69, 119, 82, // FNLEsNKR1EwR + 99, 98, 78, 104, 121, 122, 50, 104, 10, 47, 116, 50, // cbNhyz2h./t2 + 111, 97, 116, 84, 106, 111, 87, 101, 107, 90, 84, 66, // oatTjoWekZTB + 106, 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, // jMQswCQYDVQQ + 71, 69, 119, 74, 86, 85, 122, 69, 104, 77, 66, 56, // GEwJVUzEhMB8 + 71, 65, 49, 85, 69, 67, 104, 77, 89, 86, 71, 104, // GA1UEChMYVGh + 108, 73, 69, 100, 118, 73, 69, 82, 104, 90, 71, 82, // lIEdvIERhZGR + 53, 10, 73, 69, 100, 121, 98, 51, 86, 119, 76, 67, // 5.IEdyb3VwLC + 66, 74, 98, 109, 77, 117, 77, 84, 69, 119, 76, 119, // BJbmMuMTEwLw + 89, 68, 86, 81, 81, 76, 69, 121, 104, 72, 98, 121, // YDVQQLEyhHby + 66, 69, 89, 87, 82, 107, 101, 83, 66, 68, 98, 71, // BEYWRkeSBDbG + 70, 122, 99, 121, 65, 121, 73, 69, 78, 108, 99, 110, // FzcyAyIENlcn + 82, 112, 90, 109, 108, 106, 10, 89, 88, 82, 112, 98, // RpZmlj.YXRpb + 50, 52, 103, 81, 88, 86, 48, 97, 71, 57, 121, 97, // 24gQXV0aG9ya + 88, 82, 53, 103, 103, 69, 65, 77, 65, 119, 71, 65, // XR5ggEAMAwGA + 49, 85, 100, 69, 119, 81, 70, 77, 65, 77, 66, 65, // 1UdEwQFMAMBA + 102, 56, 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, // f8wDQYJKoZIh + 118, 99, 78, 65, 81, 69, 70, 66, 81, 65, 68, 10, // vcNAQEFBQAD. + 103, 103, 69, 66, 65, 68, 74, 76, 56, 55, 76, 75, // ggEBADJL87LK + 80, 112, 72, 56, 69, 115, 97, 104, 66, 52, 121, 79, // PpH8EsahB4yO + 100, 54, 65, 122, 66, 104, 82, 99, 107, 66, 52, 89, // d6AzBhRckB4Y + 57, 119, 105, 109, 80, 81, 111, 90, 43, 89, 101, 65, // 9wimPQoZ+YeA + 69, 87, 53, 112, 53, 74, 89, 88, 77, 80, 56, 48, // EW5p5JYXMP80 + 107, 87, 78, 121, 10, 79, 79, 55, 77, 72, 65, 71, // kWNy.OO7MHAG + 106, 72, 90, 81, 111, 112, 68, 72, 50, 101, 115, 82, // jHZQopDH2esR + 85, 49, 47, 98, 108, 77, 86, 103, 68, 111, 115, 122, // U1/blMVgDosz + 79, 89, 116, 117, 85, 82, 88, 79, 49, 118, 48, 88, // OYtuURXO1v0X + 74, 74, 76, 88, 86, 103, 103, 75, 116, 73, 51, 108, // JJLXVggKtI3l + 112, 106, 98, 105, 50, 84, 99, 55, 80, 10, 84, 77, // pjbi2Tc7P.TM + 111, 122, 73, 43, 103, 99, 105, 75, 113, 100, 105, 48, // ozI+gciKqdi0 + 70, 117, 70, 115, 107, 103, 53, 89, 109, 101, 122, 84, // FuFskg5YmezT + 118, 97, 99, 80, 100, 43, 109, 83, 89, 103, 70, 70, // vacPd+mSYgFF + 81, 108, 113, 50, 53, 122, 104, 101, 97, 98, 73, 90, // Qlq25zheabIZ + 48, 75, 98, 73, 73, 79, 113, 80, 106, 67, 68, 80, // 0KbIIOqPjCDP + 111, 81, 10, 72, 109, 121, 87, 55, 52, 99, 78, 120, // oQ.HmyW74cNx + 65, 57, 104, 105, 54, 51, 117, 103, 121, 117, 86, 43, // A9hi63ugyuV+ + 73, 54, 83, 104, 72, 73, 53, 54, 121, 68, 113, 103, // I6ShHI56yDqg + 43, 50, 68, 122, 90, 100, 117, 67, 76, 122, 114, 84, // +2DzZduCLzrT + 105, 97, 50, 99, 121, 118, 107, 48, 47, 90, 77, 47, // ia2cyvk0/ZM/ + 105, 90, 120, 52, 109, 69, 82, 10, 100, 69, 114, 47, // iZx4mER.dEr/ + 86, 120, 113, 72, 68, 51, 86, 73, 76, 115, 57, 82, // VxqHD3VILs9R + 97, 82, 101, 103, 65, 104, 74, 104, 108, 100, 88, 82, // aRegAhJhldXR + 81, 76, 73, 81, 84, 79, 55, 69, 114, 66, 66, 68, // QLIQTO7ErBBD + 112, 113, 87, 101, 67, 116, 87, 86, 89, 112, 111, 78, // pqWeCtWVYpoN + 122, 52, 105, 67, 120, 84, 73, 77, 53, 67, 117, 102, // z4iCxTIM5Cuf + 10, 82, 101, 89, 78, 110, 121, 105, 99, 115, 98, 107, // .ReYNnyicsbk + 113, 87, 108, 101, 116, 78, 119, 43, 118, 72, 88, 47, // qWletNw+vHX/ + 98, 118, 90, 56, 61, 10, 45, 45, 45, 45, 45, 69, // bvZ8=.-----E + 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, // ND CERTIFICA + 84, 69, 45, 45, 45, 45, 45, 10, 10, 35, 32, 78, // TE-----..# N + 111, 116, 101, 58, 32, 65, 109, 97, 122, 111, 110, 32, // ote: Amazon + 65, 84, 83, 32, 101, 110, 100, 112, 111, 105, 110, 116, // ATS endpoint + 32, 117, 115, 101, 115, 32, 116, 104, 105, 115, 32, 40, // uses this ( + 50, 48, 49, 56, 47, 49, 50, 47, 49, 56, 41, 10, // 2018/12/18). + 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, 61, 85, // Subject: C=U + 83, 44, 32, 79, 61, 83, 116, 97, 114, 102, 105, 101, // S, O=Starfie + 108, 100, 32, 84, 101, 99, 104, 110, 111, 108, 111, 103, // ld Technolog + 105, 101, 115, 44, 32, 73, 110, 99, 46, 44, 32, 79, // ies, Inc., O + 85, 61, 83, 116, 97, 114, 102, 105, 101, 108, 100, 32, // U=Starfield + 67, 108, 97, 115, 115, 32, 50, 32, 67, 101, 114, 116, // Class 2 Cert + 105, 102, 105, 99, 97, 116, 105, 111, 110, 32, 65, 117, // ification Au + 116, 104, 111, 114, 105, 116, 121, 10, 78, 111, 116, 32, // thority.Not + 66, 101, 102, 111, 114, 101, 58, 32, 74, 117, 110, 32, // Before: Jun + 50, 57, 32, 49, 55, 58, 51, 57, 58, 49, 54, 32, // 29 17:39:16 + 50, 48, 48, 52, 32, 71, 77, 84, 10, 78, 111, 116, // 2004 GMT.Not + 32, 65, 102, 116, 101, 114, 32, 58, 32, 74, 117, 110, // After : Jun + 32, 50, 57, 32, 49, 55, 58, 51, 57, 58, 49, 54, // 29 17:39:16 + 32, 50, 48, 51, 52, 32, 71, 77, 84, 10, 45, 45, // 2034 GMT.-- + 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, 69, 82, // ---BEGIN CER + 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, // TIFICATE---- + 45, 10, 77, 73, 73, 69, 68, 122, 67, 67, 65, 118, // -.MIIEDzCCAv + 101, 103, 65, 119, 73, 66, 65, 103, 73, 66, 65, 68, // egAwIBAgIBAD + 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, // ANBgkqhkiG9w + 48, 66, 65, 81, 85, 70, 65, 68, 66, 111, 77, 81, // 0BAQUFADBoMQ + 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, 69, 119, // swCQYDVQQGEw + 74, 86, 85, 122, 69, 108, 10, 77, 67, 77, 71, 65, // JVUzEl.MCMGA + 49, 85, 69, 67, 104, 77, 99, 85, 51, 82, 104, 99, // 1UEChMcU3Rhc + 109, 90, 112, 90, 87, 120, 107, 73, 70, 82, 108, 89, // mZpZWxkIFRlY + 50, 104, 117, 98, 50, 120, 118, 90, 50, 108, 108, 99, // 2hub2xvZ2llc + 121, 119, 103, 83, 87, 53, 106, 76, 106, 69, 121, 77, // ywgSW5jLjEyM + 68, 65, 71, 65, 49, 85, 69, 67, 120, 77, 112, 10, // DAGA1UECxMp. + 85, 51, 82, 104, 99, 109, 90, 112, 90, 87, 120, 107, // U3RhcmZpZWxk + 73, 69, 78, 115, 89, 88, 78, 122, 73, 68, 73, 103, // IENsYXNzIDIg + 81, 50, 86, 121, 100, 71, 108, 109, 97, 87, 78, 104, // Q2VydGlmaWNh + 100, 71, 108, 118, 98, 105, 66, 66, 100, 88, 82, 111, // dGlvbiBBdXRo + 98, 51, 74, 112, 100, 72, 107, 119, 72, 104, 99, 78, // b3JpdHkwHhcN + 77, 68, 81, 119, 10, 78, 106, 73, 53, 77, 84, 99, // MDQw.NjI5MTc + 122, 79, 84, 69, 50, 87, 104, 99, 78, 77, 122, 81, // zOTE2WhcNMzQ + 119, 78, 106, 73, 53, 77, 84, 99, 122, 79, 84, 69, // wNjI5MTczOTE + 50, 87, 106, 66, 111, 77, 81, 115, 119, 67, 81, 89, // 2WjBoMQswCQY + 68, 86, 81, 81, 71, 69, 119, 74, 86, 85, 122, 69, // DVQQGEwJVUzE + 108, 77, 67, 77, 71, 65, 49, 85, 69, 10, 67, 104, // lMCMGA1UE.Ch + 77, 99, 85, 51, 82, 104, 99, 109, 90, 112, 90, 87, // McU3RhcmZpZW + 120, 107, 73, 70, 82, 108, 89, 50, 104, 117, 98, 50, // xkIFRlY2hub2 + 120, 118, 90, 50, 108, 108, 99, 121, 119, 103, 83, 87, // xvZ2llcywgSW + 53, 106, 76, 106, 69, 121, 77, 68, 65, 71, 65, 49, // 5jLjEyMDAGA1 + 85, 69, 67, 120, 77, 112, 85, 51, 82, 104, 99, 109, // UECxMpU3Rhcm + 90, 112, 10, 90, 87, 120, 107, 73, 69, 78, 115, 89, // Zp.ZWxkIENsY + 88, 78, 122, 73, 68, 73, 103, 81, 50, 86, 121, 100, // XNzIDIgQ2Vyd + 71, 108, 109, 97, 87, 78, 104, 100, 71, 108, 118, 98, // GlmaWNhdGlvb + 105, 66, 66, 100, 88, 82, 111, 98, 51, 74, 112, 100, // iBBdXRob3Jpd + 72, 107, 119, 103, 103, 69, 103, 77, 65, 48, 71, 67, // HkwggEgMA0GC + 83, 113, 71, 83, 73, 98, 51, 10, 68, 81, 69, 66, // SqGSIb3.DQEB + 65, 81, 85, 65, 65, 52, 73, 66, 68, 81, 65, 119, // AQUAA4IBDQAw + 103, 103, 69, 73, 65, 111, 73, 66, 65, 81, 67, 51, // ggEIAoIBAQC3 + 77, 115, 106, 43, 54, 88, 71, 109, 66, 73, 87, 116, // Msj+6XGmBIWt + 68, 66, 70, 107, 51, 56, 53, 78, 55, 56, 103, 68, // DBFk385N78gD + 71, 73, 99, 47, 111, 97, 118, 55, 80, 75, 97, 102, // GIc/oav7PKaf + 10, 56, 77, 79, 104, 50, 116, 84, 89, 98, 105, 116, // .8MOh2tTYbit + 84, 107, 80, 115, 107, 112, 68, 54, 69, 56, 74, 55, // TkPskpD6E8J7 + 111, 88, 43, 122, 108, 74, 48, 84, 49, 75, 75, 89, // oX+zlJ0T1KKY + 47, 101, 57, 55, 103, 75, 118, 68, 73, 114, 49, 77, // /e97gKvDIr1M + 118, 110, 115, 111, 70, 65, 90, 77, 101, 106, 50, 89, // vnsoFAZMej2Y + 99, 79, 97, 100, 78, 10, 43, 108, 113, 50, 99, 119, // cOadN.+lq2cw + 81, 108, 90, 117, 116, 51, 102, 43, 100, 90, 120, 107, // QlZut3f+dZxk + 113, 90, 74, 82, 82, 85, 54, 121, 98, 72, 56, 51, // qZJRRU6ybH83 + 56, 90, 49, 84, 66, 119, 106, 54, 43, 119, 82, 105, // 8Z1TBwj6+wRi + 114, 47, 114, 101, 115, 112, 55, 100, 101, 102, 113, 103, // r/resp7defqg + 83, 72, 111, 57, 84, 53, 105, 97, 85, 48, 10, 88, // SHo9T5iaU0.X + 57, 116, 68, 107, 89, 73, 50, 50, 87, 89, 56, 115, // 9tDkYI22WY8s + 98, 105, 53, 103, 118, 50, 99, 79, 106, 52, 81, 121, // bi5gv2cOj4Qy + 68, 118, 118, 66, 109, 86, 109, 101, 112, 115, 90, 71, // DvvBmVmepsZG + 68, 51, 47, 99, 86, 69, 56, 77, 67, 53, 102, 118, // D3/cVE8MC5fv + 106, 49, 51, 99, 55, 74, 100, 66, 109, 122, 68, 73, // j13c7JdBmzDI + 49, 97, 97, 10, 75, 52, 85, 109, 107, 104, 121, 110, // 1aa.K4Umkhyn + 65, 114, 80, 107, 80, 119, 50, 118, 67, 72, 109, 67, // ArPkPw2vCHmC + 117, 68, 89, 57, 54, 112, 122, 84, 78, 98, 79, 56, // uDY96pzTNbO8 + 97, 99, 114, 49, 122, 74, 51, 111, 47, 87, 83, 78, // acr1zJ3o/WSN + 70, 52, 65, 122, 98, 108, 53, 75, 88, 90, 110, 74, // F4Azbl5KXZnJ + 72, 111, 101, 48, 110, 82, 114, 65, 10, 49, 87, 52, // Hoe0nRrA.1W4 + 84, 78, 83, 78, 101, 51, 53, 116, 102, 80, 101, 47, // TNSNe35tfPe/ + 87, 57, 51, 98, 67, 54, 106, 54, 55, 101, 65, 48, // W93bC6j67eA0 + 99, 81, 109, 100, 114, 66, 78, 106, 52, 49, 116, 112, // cQmdrBNj41tp + 118, 105, 47, 74, 69, 111, 65, 71, 114, 65, 103, 69, // vi/JEoAGrAgE + 68, 111, 52, 72, 70, 77, 73, 72, 67, 77, 66, 48, // Do4HFMIHCMB0 + 71, 10, 65, 49, 85, 100, 68, 103, 81, 87, 66, 66, // G.A1UdDgQWBB + 83, 47, 88, 55, 102, 82, 122, 116, 48, 102, 104, 118, // S/X7fRzt0fhv + 82, 98, 86, 97, 122, 99, 49, 120, 68, 67, 68, 113, // RbVazc1xDCDq + 109, 73, 53, 122, 67, 66, 107, 103, 89, 68, 86, 82, // mI5zCBkgYDVR + 48, 106, 66, 73, 71, 75, 77, 73, 71, 72, 103, 66, // 0jBIGKMIGHgB + 83, 47, 88, 55, 102, 82, 10, 122, 116, 48, 102, 104, // S/X7fR.zt0fh + 118, 82, 98, 86, 97, 122, 99, 49, 120, 68, 67, 68, // vRbVazc1xDCD + 113, 109, 73, 53, 54, 70, 115, 112, 71, 111, 119, 97, // qmI56FspGowa + 68, 69, 76, 77, 65, 107, 71, 65, 49, 85, 69, 66, // DELMAkGA1UEB + 104, 77, 67, 86, 86, 77, 120, 74, 84, 65, 106, 66, // hMCVVMxJTAjB + 103, 78, 86, 66, 65, 111, 84, 72, 70, 78, 48, 10, // gNVBAoTHFN0. + 89, 88, 74, 109, 97, 87, 86, 115, 90, 67, 66, 85, // YXJmaWVsZCBU + 90, 87, 78, 111, 98, 109, 57, 115, 98, 50, 100, 112, // ZWNobm9sb2dp + 90, 88, 77, 115, 73, 69, 108, 117, 89, 121, 52, 120, // ZXMsIEluYy4x + 77, 106, 65, 119, 66, 103, 78, 86, 66, 65, 115, 84, // MjAwBgNVBAsT + 75, 86, 78, 48, 89, 88, 74, 109, 97, 87, 86, 115, // KVN0YXJmaWVs + 90, 67, 66, 68, 10, 98, 71, 70, 122, 99, 121, 65, // ZCBD.bGFzcyA + 121, 73, 69, 78, 108, 99, 110, 82, 112, 90, 109, 108, // yIENlcnRpZml + 106, 89, 88, 82, 112, 98, 50, 52, 103, 81, 88, 86, // jYXRpb24gQXV + 48, 97, 71, 57, 121, 97, 88, 82, 53, 103, 103, 69, // 0aG9yaXR5ggE + 65, 77, 65, 119, 71, 65, 49, 85, 100, 69, 119, 81, // AMAwGA1UdEwQ + 70, 77, 65, 77, 66, 65, 102, 56, 119, 10, 68, 81, // FMAMBAf8w.DQ + 89, 74, 75, 111, 90, 73, 104, 118, 99, 78, 65, 81, // YJKoZIhvcNAQ + 69, 70, 66, 81, 65, 68, 103, 103, 69, 66, 65, 65, // EFBQADggEBAA + 87, 100, 80, 52, 105, 100, 48, 99, 107, 97, 86, 97, // WdP4id0ckaVa + 71, 115, 97, 102, 80, 122, 87, 100, 113, 98, 65, 89, // GsafPzWdqbAY + 99, 97, 84, 49, 101, 112, 111, 88, 107, 74, 75, 116, // caT1epoXkJKt + 118, 51, 10, 76, 55, 73, 101, 122, 77, 100, 101, 97, // v3.L7IezMdea + 116, 105, 68, 104, 54, 71, 88, 55, 48, 107, 49, 80, // tiDh6GX70k1P + 110, 99, 71, 81, 86, 104, 105, 118, 52, 53, 89, 117, // ncGQVhiv45Yu + 65, 112, 110, 80, 43, 121, 122, 51, 83, 70, 109, 72, // ApnP+yz3SFmH + 56, 108, 85, 43, 110, 76, 77, 80, 85, 120, 65, 50, // 8lU+nLMPUxA2 + 73, 71, 118, 100, 53, 54, 68, 10, 101, 114, 117, 105, // IGvd56D.erui + 120, 47, 85, 48, 70, 52, 55, 90, 69, 85, 68, 48, // x/U0F47ZEUD0 + 47, 67, 119, 113, 84, 82, 86, 47, 112, 50, 74, 100, // /CwqTRV/p2Jd + 76, 105, 88, 84, 65, 65, 115, 103, 71, 104, 49, 111, // LiXTAAsgGh1o + 43, 82, 101, 52, 57, 76, 50, 76, 55, 83, 104, 90, // +Re49L2L7ShZ + 51, 85, 48, 87, 105, 120, 101, 68, 121, 76, 74, 108, // 3U0WixeDyLJl + 10, 120, 121, 49, 54, 112, 97, 113, 56, 85, 52, 90, // .xy16paq8U4Z + 116, 51, 86, 101, 107, 121, 118, 103, 103, 81, 81, 116, // t3VekyvggQQt + 111, 56, 80, 84, 55, 100, 76, 53, 87, 88, 88, 112, // o8PT7dL5WXXp + 53, 57, 102, 107, 100, 104, 101, 77, 116, 108, 98, 55, // 59fkdheMtlb7 + 49, 99, 90, 66, 68, 122, 73, 48, 102, 109, 103, 65, // 1cZBDzI0fmgA + 75, 104, 121, 110, 112, 10, 86, 83, 74, 89, 65, 67, // Khynp.VSJYAC + 80, 113, 52, 120, 74, 68, 75, 86, 116, 72, 67, 78, // Pq4xJDKVtHCN + 50, 77, 81, 87, 112, 108, 66, 113, 106, 108, 73, 97, // 2MQWplBqjlIa + 112, 66, 116, 74, 85, 104, 108, 98, 108, 57, 48, 84, // pBtJUhlbl90T + 83, 114, 69, 57, 97, 116, 118, 78, 122, 105, 80, 84, // SrE9atvNziPT + 110, 78, 118, 84, 53, 49, 99, 75, 69, 89, 10, 87, // nNvT51cKEY.W + 81, 80, 74, 73, 114, 83, 80, 110, 78, 86, 101, 75, // QPJIrSPnNVeK + 116, 101, 108, 116, 116, 81, 75, 98, 102, 105, 51, 81, // telttQKbfi3Q + 66, 70, 71, 109, 104, 57, 53, 68, 109, 75, 47, 68, // BFGmh95DmK/D + 53, 102, 115, 52, 67, 56, 102, 70, 53, 81, 61, 10, // 5fs4C8fF5Q=. + 45, 45, 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, // -----END CER + 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, // TIFICATE---- + 45, 10, 10, 78, 111, 116, 32, 66, 101, 102, 111, 114, // -..Not Befor + 101, 58, 32, 83, 101, 112, 32, 32, 49, 32, 48, 48, // e: Sep 1 00 + 58, 48, 48, 58, 48, 48, 32, 50, 48, 48, 57, 32, // :00:00 2009 + 71, 77, 84, 10, 78, 111, 116, 32, 65, 102, 116, 101, // GMT.Not Afte + 114, 32, 58, 32, 68, 101, 99, 32, 51, 49, 32, 50, // r : Dec 31 2 + 51, 58, 53, 57, 58, 53, 57, 32, 50, 48, 51, 55, // 3:59:59 2037 + 32, 71, 77, 84, 10, 83, 117, 98, 106, 101, 99, 116, // GMT.Subject + 58, 32, 67, 61, 85, 83, 44, 32, 83, 84, 61, 65, // : C=US, ST=A + 114, 105, 122, 111, 110, 97, 44, 32, 76, 61, 83, 99, // rizona, L=Sc + 111, 116, 116, 115, 100, 97, 108, 101, 44, 32, 79, 61, // ottsdale, O= + 83, 116, 97, 114, 102, 105, 101, 108, 100, 32, 84, 101, // Starfield Te + 99, 104, 110, 111, 108, 111, 103, 105, 101, 115, 44, 32, // chnologies, + 73, 110, 99, 46, 44, 32, 67, 78, 61, 83, 116, 97, // Inc., CN=Sta + 114, 102, 105, 101, 108, 100, 32, 82, 111, 111, 116, 32, // rfield Root + 67, 101, 114, 116, 105, 102, 105, 99, 97, 116, 101, 32, // Certificate + 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 45, 32, // Authority - + 71, 50, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, // G2.-----BEGI + 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, // N CERTIFICAT + 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 68, 51, // E-----.MIID3 + 84, 67, 67, 65, 115, 87, 103, 65, 119, 73, 66, 65, // TCCAsWgAwIBA + 103, 73, 66, 65, 68, 65, 78, 66, 103, 107, 113, 104, // gIBADANBgkqh + 107, 105, 71, 57, 119, 48, 66, 65, 81, 115, 70, 65, // kiG9w0BAQsFA + 68, 67, 66, 106, 122, 69, 76, 77, 65, 107, 71, 65, // DCBjzELMAkGA + 49, 85, 69, 66, 104, 77, 67, 86, 86, 77, 120, 10, // 1UEBhMCVVMx. + 69, 68, 65, 79, 66, 103, 78, 86, 66, 65, 103, 84, // EDAOBgNVBAgT + 66, 48, 70, 121, 97, 88, 112, 118, 98, 109, 69, 120, // B0FyaXpvbmEx + 69, 122, 65, 82, 66, 103, 78, 86, 66, 65, 99, 84, // EzARBgNVBAcT + 67, 108, 78, 106, 98, 51, 82, 48, 99, 50, 82, 104, // ClNjb3R0c2Rh + 98, 71, 85, 120, 74, 84, 65, 106, 66, 103, 78, 86, // bGUxJTAjBgNV + 66, 65, 111, 84, 10, 72, 70, 78, 48, 89, 88, 74, // BAoT.HFN0YXJ + 109, 97, 87, 86, 115, 90, 67, 66, 85, 90, 87, 78, // maWVsZCBUZWN + 111, 98, 109, 57, 115, 98, 50, 100, 112, 90, 88, 77, // obm9sb2dpZXM + 115, 73, 69, 108, 117, 89, 121, 52, 120, 77, 106, 65, // sIEluYy4xMjA + 119, 66, 103, 78, 86, 66, 65, 77, 84, 75, 86, 78, // wBgNVBAMTKVN + 48, 89, 88, 74, 109, 97, 87, 86, 115, 10, 90, 67, // 0YXJmaWVs.ZC + 66, 83, 98, 50, 57, 48, 73, 69, 78, 108, 99, 110, // BSb290IENlcn + 82, 112, 90, 109, 108, 106, 89, 88, 82, 108, 73, 69, // RpZmljYXRlIE + 70, 49, 100, 71, 104, 118, 99, 109, 108, 48, 101, 83, // F1dGhvcml0eS + 65, 116, 73, 69, 99, 121, 77, 66, 52, 88, 68, 84, // AtIEcyMB4XDT + 65, 53, 77, 68, 107, 119, 77, 84, 65, 119, 77, 68, // A5MDkwMTAwMD + 65, 119, 10, 77, 70, 111, 88, 68, 84, 77, 51, 77, // Aw.MFoXDTM3M + 84, 73, 122, 77, 84, 73, 122, 78, 84, 107, 49, 79, // TIzMTIzNTk1O + 86, 111, 119, 103, 89, 56, 120, 67, 122, 65, 74, 66, // VowgY8xCzAJB + 103, 78, 86, 66, 65, 89, 84, 65, 108, 86, 84, 77, // gNVBAYTAlVTM + 82, 65, 119, 68, 103, 89, 68, 86, 81, 81, 73, 69, // RAwDgYDVQQIE + 119, 100, 66, 99, 109, 108, 54, 10, 98, 50, 53, 104, // wdBcml6.b25h + 77, 82, 77, 119, 69, 81, 89, 68, 86, 81, 81, 72, // MRMwEQYDVQQH + 69, 119, 112, 84, 89, 50, 57, 48, 100, 72, 78, 107, // EwpTY290dHNk + 89, 87, 120, 108, 77, 83, 85, 119, 73, 119, 89, 68, // YWxlMSUwIwYD + 86, 81, 81, 75, 69, 120, 120, 84, 100, 71, 70, 121, // VQQKExxTdGFy + 90, 109, 108, 108, 98, 71, 81, 103, 86, 71, 86, 106, // ZmllbGQgVGVj + 10, 97, 71, 53, 118, 98, 71, 57, 110, 97, 87, 86, // .aG5vbG9naWV + 122, 76, 67, 66, 74, 98, 109, 77, 117, 77, 84, 73, // zLCBJbmMuMTI + 119, 77, 65, 89, 68, 86, 81, 81, 68, 69, 121, 108, // wMAYDVQQDEyl + 84, 100, 71, 70, 121, 90, 109, 108, 108, 98, 71, 81, // TdGFyZmllbGQ + 103, 85, 109, 57, 118, 100, 67, 66, 68, 90, 88, 74, // gUm9vdCBDZXJ + 48, 97, 87, 90, 112, 10, 89, 50, 70, 48, 90, 83, // 0aWZp.Y2F0ZS + 66, 66, 100, 88, 82, 111, 98, 51, 74, 112, 100, 72, // BBdXRob3JpdH + 107, 103, 76, 83, 66, 72, 77, 106, 67, 67, 65, 83, // kgLSBHMjCCAS + 73, 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, 118, // IwDQYJKoZIhv + 99, 78, 65, 81, 69, 66, 66, 81, 65, 68, 103, 103, // cNAQEBBQADgg + 69, 80, 65, 68, 67, 67, 65, 81, 111, 67, 10, 103, // EPADCCAQoC.g + 103, 69, 66, 65, 76, 51, 116, 119, 81, 80, 56, 57, // gEBAL3twQP89 + 111, 47, 56, 65, 114, 70, 118, 87, 53, 57, 73, 50, // o/8ArFvW59I2 + 90, 49, 53, 52, 113, 75, 51, 65, 50, 70, 87, 71, // Z154qK3A2FWG + 77, 78, 72, 116, 116, 102, 75, 80, 84, 85, 117, 105, // MNHttfKPTUui + 85, 80, 51, 111, 87, 109, 98, 51, 111, 111, 97, 47, // UP3oWmb3ooa/ + 82, 77, 103, 10, 110, 76, 82, 74, 100, 122, 73, 112, // RMg.nLRJdzIp + 86, 118, 50, 53, 55, 73, 122, 100, 73, 118, 112, 121, // Vv257IzdIvpy + 51, 67, 100, 104, 108, 43, 55, 50, 87, 111, 84, 115, // 3Cdhl+72WoTs + 98, 104, 109, 53, 105, 83, 122, 99, 104, 70, 118, 86, // bhm5iSzchFvV + 100, 80, 116, 114, 88, 56, 87, 74, 112, 82, 66, 83, // dPtrX8WJpRBS + 105, 85, 90, 86, 57, 76, 104, 49, 10, 72, 79, 90, // iUZV9Lh1.HOZ + 47, 53, 70, 83, 117, 83, 47, 104, 86, 99, 108, 99, // /5FSuS/hVclc + 67, 71, 102, 103, 88, 99, 86, 110, 114, 72, 105, 103, // CGfgXcVnrHig + 72, 100, 77, 87, 100, 83, 76, 53, 115, 116, 80, 83, // HdMWdSL5stPS + 107, 115, 80, 78, 107, 78, 51, 109, 83, 119, 79, 120, // ksPNkN3mSwOx + 71, 88, 110, 47, 104, 98, 86, 78, 77, 89, 113, 47, // GXn/hbVNMYq/ + 78, 10, 72, 119, 116, 106, 117, 122, 113, 100, 43, 47, // N.Hwtjuzqd+/ + 120, 53, 65, 74, 104, 104, 100, 77, 56, 109, 103, 107, // x5AJhhdM8mgk + 66, 106, 56, 55, 74, 121, 97, 104, 107, 78, 109, 99, // Bj87JyahkNmc + 114, 85, 68, 110, 88, 77, 78, 47, 117, 76, 105, 99, // rUDnXMN/uLic + 70, 90, 56, 87, 74, 47, 88, 55, 78, 102, 90, 84, // FZ8WJ/X7NfZT + 68, 52, 112, 55, 100, 78, 10, 100, 108, 111, 101, 100, // D4p7dN.dloed + 108, 52, 48, 119, 79, 105, 87, 86, 112, 109, 75, 115, // l40wOiWVpmKs + 47, 66, 47, 112, 77, 50, 57, 51, 68, 73, 120, 102, // /B/pM293DIxf + 74, 72, 80, 52, 70, 56, 82, 43, 71, 117, 113, 83, // JHP4F8R+GuqS + 86, 122, 82, 109, 90, 84, 82, 111, 117, 78, 106, 87, // VzRmZTRouNjW + 119, 108, 50, 116, 86, 90, 105, 52, 85, 116, 48, 10, // wl2tVZi4Ut0. + 72, 90, 98, 85, 74, 116, 81, 73, 66, 70, 110, 81, // HZbUJtQIBFnQ + 109, 65, 52, 79, 53, 116, 55, 56, 119, 43, 119, 102, // mA4O5t78w+wf + 107, 80, 69, 67, 65, 119, 69, 65, 65, 97, 78, 67, // kPECAwEAAaNC + 77, 69, 65, 119, 68, 119, 89, 68, 86, 82, 48, 84, // MEAwDwYDVR0T + 65, 81, 72, 47, 66, 65, 85, 119, 65, 119, 69, 66, // AQH/BAUwAwEB + 47, 122, 65, 79, 10, 66, 103, 78, 86, 72, 81, 56, // /zAO.BgNVHQ8 + 66, 65, 102, 56, 69, 66, 65, 77, 67, 65, 81, 89, // BAf8EBAMCAQY + 119, 72, 81, 89, 68, 86, 82, 48, 79, 66, 66, 89, // wHQYDVR0OBBY + 69, 70, 72, 119, 77, 77, 104, 43, 110, 50, 84, 66, // EFHwMMh+n2TB + 47, 120, 72, 49, 111, 111, 50, 75, 111, 111, 99, 54, // /xH1oo2Kooc6 + 114, 66, 49, 115, 110, 77, 65, 48, 71, 10, 67, 83, // rB1snMA0G.CS + 113, 71, 83, 73, 98, 51, 68, 81, 69, 66, 67, 119, // qGSIb3DQEBCw + 85, 65, 65, 52, 73, 66, 65, 81, 65, 82, 87, 102, // UAA4IBAQARWf + 111, 108, 84, 119, 78, 118, 108, 74, 107, 55, 109, 104, // olTwNvlJk7mh + 43, 67, 104, 84, 110, 85, 100, 103, 87, 85, 88, 117, // +ChTnUdgWUXu + 69, 111, 107, 50, 49, 105, 88, 81, 110, 67, 111, 75, // Eok21iXQnCoK + 106, 85, 10, 115, 72, 85, 52, 56, 84, 82, 113, 110, // jU.sHU48TRqn + 101, 83, 102, 105, 111, 89, 109, 85, 101, 89, 115, 48, // eSfioYmUeYs0 + 99, 89, 116, 98, 112, 85, 103, 83, 112, 73, 66, 55, // cYtbpUgSpIB7 + 76, 105, 75, 90, 51, 115, 120, 52, 109, 99, 117, 106, // LiKZ3sx4mcuj + 74, 85, 68, 74, 105, 53, 68, 110, 85, 111, 120, 57, // JUDJi5DnUox9 + 103, 54, 49, 68, 76, 117, 51, 10, 52, 106, 100, 47, // g61DLu3.4jd/ + 73, 114, 111, 65, 111, 119, 53, 55, 85, 118, 116, 114, // IroAow57Uvtr + 117, 122, 118, 69, 48, 51, 108, 82, 84, 115, 50, 81, // uzvE03lRTs2Q + 57, 71, 99, 72, 71, 99, 103, 56, 82, 110, 111, 78, // 9GcHGcg8RnoN + 65, 88, 51, 70, 87, 79, 100, 116, 53, 111, 85, 119, // AX3FWOdt5oUw + 70, 53, 111, 107, 120, 66, 68, 103, 66, 80, 102, 103, // F5okxBDgBPfg + 10, 56, 110, 47, 85, 113, 103, 114, 47, 81, 104, 48, // .8n/Uqgr/Qh0 + 51, 55, 90, 84, 108, 90, 70, 107, 83, 73, 72, 99, // 37ZTlZFkSIHc + 52, 48, 122, 73, 43, 79, 73, 70, 49, 108, 110, 80, // 40zI+OIF1lnP + 54, 97, 73, 43, 120, 121, 56, 52, 102, 120, 101, 122, // 6aI+xy84fxez + 54, 110, 72, 55, 80, 102, 114, 72, 120, 66, 121, 50, // 6nH7PfrHxBy2 + 50, 47, 76, 47, 75, 10, 112, 76, 47, 81, 108, 119, // 2/L/K.pL/Qlw + 86, 75, 118, 79, 111, 89, 75, 65, 75, 81, 118, 86, // VKvOoYKAKQvV + 82, 52, 67, 83, 70, 120, 48, 57, 70, 57, 72, 100, // R4CSFx09F9Hd + 107, 87, 115, 75, 108, 104, 80, 100, 65, 75, 65, 67, // kWsKlhPdAKAC + 76, 56, 120, 51, 118, 76, 67, 87, 82, 70, 67, 122, // L8x3vLCWRFCz + 116, 65, 103, 102, 100, 57, 102, 68, 76, 49, 10, 109, // tAgfd9fDL1.m + 77, 112, 89, 106, 110, 48, 113, 55, 112, 66, 90, 99, // MpYjn0q7pBZc + 50, 84, 53, 78, 110, 82, 101, 74, 97, 72, 49, 90, // 2T5NnReJaH1Z + 103, 85, 117, 102, 122, 107, 86, 113, 83, 114, 55, 85, // gUufzkVqSr7U + 73, 117, 79, 104, 87, 110, 48, 10, 45, 45, 45, 45, // IuOhWn0.---- + 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, // -END CERTIFI + 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 83, // CATE-----..S + 117, 98, 106, 101, 99, 116, 58, 32, 67, 61, 85, 83, // ubject: C=US + 44, 32, 83, 84, 61, 65, 114, 105, 122, 111, 110, 97, // , ST=Arizona + 44, 32, 76, 61, 83, 99, 111, 116, 116, 115, 100, 97, // , L=Scottsda + 108, 101, 44, 32, 79, 61, 83, 116, 97, 114, 102, 105, // le, O=Starfi + 101, 108, 100, 32, 84, 101, 99, 104, 110, 111, 108, 111, // eld Technolo + 103, 105, 101, 115, 44, 32, 73, 110, 99, 46, 44, 32, // gies, Inc., + 67, 78, 61, 83, 116, 97, 114, 102, 105, 101, 108, 100, // CN=Starfield + 32, 83, 101, 114, 118, 105, 99, 101, 115, 32, 82, 111, // Services Ro + 111, 116, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, // ot Certifica + 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, // te Authority + 32, 45, 32, 71, 50, 10, 78, 111, 116, 32, 66, 101, // - G2.Not Be + 102, 111, 114, 101, 58, 32, 83, 101, 112, 32, 32, 49, // fore: Sep 1 + 32, 48, 48, 58, 48, 48, 58, 48, 48, 32, 50, 48, // 00:00:00 20 + 48, 57, 32, 71, 77, 84, 10, 78, 111, 116, 32, 65, // 09 GMT.Not A + 102, 116, 101, 114, 32, 58, 32, 68, 101, 99, 32, 51, // fter : Dec 3 + 49, 32, 50, 51, 58, 53, 57, 58, 53, 57, 32, 50, // 1 23:59:59 2 + 48, 51, 55, 32, 71, 77, 84, 10, 45, 45, 45, 45, // 037 GMT.---- + 45, 66, 69, 71, 73, 78, 32, 67, 69, 82, 84, 73, // -BEGIN CERTI + 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, // FICATE-----. + 77, 73, 73, 68, 55, 122, 67, 67, 65, 116, 101, 103, // MIID7zCCAteg + 65, 119, 73, 66, 65, 103, 73, 66, 65, 68, 65, 78, // AwIBAgIBADAN + 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, 48, 66, // BgkqhkiG9w0B + 65, 81, 115, 70, 65, 68, 67, 66, 109, 68, 69, 76, // AQsFADCBmDEL + 77, 65, 107, 71, 65, 49, 85, 69, 66, 104, 77, 67, // MAkGA1UEBhMC + 86, 86, 77, 120, 10, 69, 68, 65, 79, 66, 103, 78, // VVMx.EDAOBgN + 86, 66, 65, 103, 84, 66, 48, 70, 121, 97, 88, 112, // VBAgTB0FyaXp + 118, 98, 109, 69, 120, 69, 122, 65, 82, 66, 103, 78, // vbmExEzARBgN + 86, 66, 65, 99, 84, 67, 108, 78, 106, 98, 51, 82, // VBAcTClNjb3R + 48, 99, 50, 82, 104, 98, 71, 85, 120, 74, 84, 65, // 0c2RhbGUxJTA + 106, 66, 103, 78, 86, 66, 65, 111, 84, 10, 72, 70, // jBgNVBAoT.HF + 78, 48, 89, 88, 74, 109, 97, 87, 86, 115, 90, 67, // N0YXJmaWVsZC + 66, 85, 90, 87, 78, 111, 98, 109, 57, 115, 98, 50, // BUZWNobm9sb2 + 100, 112, 90, 88, 77, 115, 73, 69, 108, 117, 89, 121, // dpZXMsIEluYy + 52, 120, 79, 122, 65, 53, 66, 103, 78, 86, 66, 65, // 4xOzA5BgNVBA + 77, 84, 77, 108, 78, 48, 89, 88, 74, 109, 97, 87, // MTMlN0YXJmaW + 86, 115, 10, 90, 67, 66, 84, 90, 88, 74, 50, 97, // Vs.ZCBTZXJ2a + 87, 78, 108, 99, 121, 66, 83, 98, 50, 57, 48, 73, // WNlcyBSb290I + 69, 78, 108, 99, 110, 82, 112, 90, 109, 108, 106, 89, // ENlcnRpZmljY + 88, 82, 108, 73, 69, 70, 49, 100, 71, 104, 118, 99, // XRlIEF1dGhvc + 109, 108, 48, 101, 83, 65, 116, 73, 69, 99, 121, 77, // ml0eSAtIEcyM + 66, 52, 88, 68, 84, 65, 53, 10, 77, 68, 107, 119, // B4XDTA5.MDkw + 77, 84, 65, 119, 77, 68, 65, 119, 77, 70, 111, 88, // MTAwMDAwMFoX + 68, 84, 77, 51, 77, 84, 73, 122, 77, 84, 73, 122, // DTM3MTIzMTIz + 78, 84, 107, 49, 79, 86, 111, 119, 103, 90, 103, 120, // NTk1OVowgZgx + 67, 122, 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, // CzAJBgNVBAYT + 65, 108, 86, 84, 77, 82, 65, 119, 68, 103, 89, 68, // AlVTMRAwDgYD + 10, 86, 81, 81, 73, 69, 119, 100, 66, 99, 109, 108, // .VQQIEwdBcml + 54, 98, 50, 53, 104, 77, 82, 77, 119, 69, 81, 89, // 6b25hMRMwEQY + 68, 86, 81, 81, 72, 69, 119, 112, 84, 89, 50, 57, // DVQQHEwpTY29 + 48, 100, 72, 78, 107, 89, 87, 120, 108, 77, 83, 85, // 0dHNkYWxlMSU + 119, 73, 119, 89, 68, 86, 81, 81, 75, 69, 120, 120, // wIwYDVQQKExx + 84, 100, 71, 70, 121, 10, 90, 109, 108, 108, 98, 71, // TdGFy.ZmllbG + 81, 103, 86, 71, 86, 106, 97, 71, 53, 118, 98, 71, // QgVGVjaG5vbG + 57, 110, 97, 87, 86, 122, 76, 67, 66, 74, 98, 109, // 9naWVzLCBJbm + 77, 117, 77, 84, 115, 119, 79, 81, 89, 68, 86, 81, // MuMTswOQYDVQ + 81, 68, 69, 122, 74, 84, 100, 71, 70, 121, 90, 109, // QDEzJTdGFyZm + 108, 108, 98, 71, 81, 103, 85, 50, 86, 121, 10, 100, // llbGQgU2Vy.d + 109, 108, 106, 90, 88, 77, 103, 85, 109, 57, 118, 100, // mljZXMgUm9vd + 67, 66, 68, 90, 88, 74, 48, 97, 87, 90, 112, 89, // CBDZXJ0aWZpY + 50, 70, 48, 90, 83, 66, 66, 100, 88, 82, 111, 98, // 2F0ZSBBdXRob + 51, 74, 112, 100, 72, 107, 103, 76, 83, 66, 72, 77, // 3JpdHkgLSBHM + 106, 67, 67, 65, 83, 73, 119, 68, 81, 89, 74, 75, // jCCASIwDQYJK + 111, 90, 73, 10, 104, 118, 99, 78, 65, 81, 69, 66, // oZI.hvcNAQEB + 66, 81, 65, 68, 103, 103, 69, 80, 65, 68, 67, 67, // BQADggEPADCC + 65, 81, 111, 67, 103, 103, 69, 66, 65, 78, 85, 77, // AQoCggEBANUM + 79, 115, 81, 113, 43, 85, 55, 105, 57, 98, 52, 90, // OsQq+U7i9b4Z + 108, 49, 43, 79, 105, 70, 79, 120, 72, 122, 47, 76, // l1+OiFOxHz/L + 122, 53, 56, 103, 69, 50, 48, 112, 10, 79, 115, 103, // z58gE20p.Osg + 80, 102, 84, 122, 51, 97, 51, 89, 52, 89, 57, 107, // PfTz3a3Y4Y9k + 50, 89, 75, 105, 98, 88, 108, 119, 65, 103, 76, 73, // 2YKibXlwAgLI + 118, 87, 88, 47, 50, 104, 47, 107, 108, 81, 52, 98, // vWX/2h/klQ4b + 110, 97, 82, 116, 83, 109, 112, 68, 104, 99, 101, 80, // naRtSmpDhceP + 89, 76, 81, 49, 79, 98, 47, 98, 73, 83, 100, 109, // YLQ1Ob/bISdm + 50, 10, 56, 120, 112, 87, 114, 105, 117, 50, 100, 66, // 2.8xpWriu2dB + 84, 114, 122, 47, 115, 109, 52, 120, 113, 54, 72, 90, // Trz/sm4xq6HZ + 89, 117, 97, 106, 116, 89, 108, 73, 108, 72, 86, 118, // YuajtYlIlHVv + 56, 108, 111, 74, 78, 119, 85, 52, 80, 97, 104, 72, // 8loJNwU4PahH + 81, 85, 119, 50, 101, 101, 66, 71, 103, 54, 51, 52, // QUw2eeBGg634 + 53, 65, 87, 104, 49, 75, 10, 84, 115, 57, 68, 107, // 5AWh1K.Ts9Dk + 84, 118, 110, 86, 116, 89, 65, 99, 77, 116, 83, 55, // TvnVtYAcMtS7 + 110, 116, 57, 114, 106, 114, 110, 118, 68, 72, 53, 82, // nt9rjrnvDH5R + 102, 98, 67, 89, 77, 56, 84, 87, 81, 73, 114, 103, // fbCYM8TWQIrg + 77, 119, 48, 82, 57, 43, 53, 51, 112, 66, 108, 98, // Mw0R9+53pBlb + 81, 76, 80, 76, 74, 71, 109, 112, 117, 102, 101, 10, // QLPLJGmpufe. + 104, 82, 104, 74, 102, 71, 90, 79, 111, 122, 112, 116, // hRhJfGZOozpt + 113, 98, 88, 117, 78, 67, 54, 54, 68, 81, 79, 52, // qbXuNC66DQO4 + 77, 57, 57, 72, 54, 55, 70, 114, 106, 83, 88, 90, // M99H67FrjSXZ + 109, 56, 54, 66, 48, 85, 86, 71, 77, 112, 90, 119, // m86B0UVGMpZw + 104, 57, 52, 67, 68, 107, 108, 68, 104, 98, 90, 115, // h94CDklDhbZs + 99, 55, 116, 107, 10, 54, 109, 70, 66, 114, 77, 110, // c7tk.6mFBrMn + 85, 86, 78, 43, 72, 76, 56, 99, 105, 115, 105, 98, // UVN+HL8cisib + 77, 110, 49, 108, 85, 97, 74, 47, 56, 118, 105, 111, // Mn1lUaJ/8vio + 118, 120, 70, 85, 99, 100, 85, 66, 103, 70, 52, 85, // vxFUcdUBgF4U + 67, 86, 84, 109, 76, 102, 119, 85, 67, 65, 119, 69, // CVTmLfwUCAwE + 65, 65, 97, 78, 67, 77, 69, 65, 119, 10, 68, 119, // AAaNCMEAw.Dw + 89, 68, 86, 82, 48, 84, 65, 81, 72, 47, 66, 65, // YDVR0TAQH/BA + 85, 119, 65, 119, 69, 66, 47, 122, 65, 79, 66, 103, // UwAwEB/zAOBg + 78, 86, 72, 81, 56, 66, 65, 102, 56, 69, 66, 65, // NVHQ8BAf8EBA + 77, 67, 65, 81, 89, 119, 72, 81, 89, 68, 86, 82, // MCAQYwHQYDVR + 48, 79, 66, 66, 89, 69, 70, 74, 120, 102, 65, 78, // 0OBBYEFJxfAN + 43, 113, 10, 65, 100, 99, 119, 75, 122, 105, 73, 111, // +q.AdcwKziIo + 114, 104, 116, 83, 112, 122, 121, 69, 90, 71, 68, 77, // rhtSpzyEZGDM + 65, 48, 71, 67, 83, 113, 71, 83, 73, 98, 51, 68, // A0GCSqGSIb3D + 81, 69, 66, 67, 119, 85, 65, 65, 52, 73, 66, 65, // QEBCwUAA4IBA + 81, 66, 76, 78, 113, 97, 69, 100, 50, 110, 100, 79, // QBLNqaEd2ndO + 120, 109, 102, 90, 121, 77, 73, 10, 98, 119, 53, 104, // xmfZyMI.bw5h + 121, 102, 50, 69, 51, 70, 47, 89, 78, 111, 72, 78, // yf2E3F/YNoHN + 50, 66, 116, 66, 76, 90, 57, 103, 51, 99, 99, 97, // 2BtBLZ9g3cca + 97, 78, 110, 82, 98, 111, 98, 104, 105, 67, 80, 80, // aNnRbobhiCPP + 69, 57, 53, 68, 122, 43, 73, 48, 115, 119, 83, 100, // E95Dz+I0swSd + 72, 121, 110, 86, 118, 47, 104, 101, 121, 78, 88, 66, // HynVv/heyNXB + 10, 118, 101, 54, 83, 98, 122, 74, 48, 56, 112, 71, // .ve6SbzJ08pG + 67, 76, 55, 50, 67, 81, 110, 113, 116, 75, 114, 99, // CL72CQnqtKrc + 103, 102, 85, 50, 56, 101, 108, 85, 83, 119, 104, 88, // gfU28elUSwhX + 113, 118, 102, 100, 113, 108, 83, 53, 115, 100, 74, 47, // qvfdqlS5sdJ/ + 80, 72, 76, 84, 121, 120, 81, 71, 106, 104, 100, 66, // PHLTyxQGjhdB + 121, 80, 113, 49, 122, 10, 113, 119, 117, 98, 100, 81, // yPq1z.qwubdQ + 120, 116, 82, 98, 101, 79, 108, 75, 121, 87, 78, 55, // xtRbeOlKyWN7 + 87, 103, 48, 73, 56, 86, 82, 119, 55, 106, 54, 73, // Wg0I8VRw7j6I + 80, 100, 106, 47, 51, 118, 81, 81, 70, 51, 122, 67, // Pdj/3vQQF3zC + 101, 112, 89, 111, 85, 122, 56, 106, 99, 73, 55, 51, // epYoUz8jcI73 + 72, 80, 100, 119, 98, 101, 121, 66, 107, 100, 10, 105, // HPdwbeyBkd.i + 69, 68, 80, 102, 85, 89, 100, 47, 120, 55, 72, 52, // EDPfUYd/x7H4 + 99, 55, 47, 73, 57, 118, 71, 43, 111, 49, 86, 84, // c7/I9vG+o1VT + 113, 107, 67, 53, 48, 99, 82, 82, 106, 55, 48, 47, // qkC50cRRj70/ + 98, 49, 55, 75, 83, 97, 55, 113, 87, 70, 105, 78, // b17KSa7qWFiN + 121, 105, 50, 76, 83, 114, 50, 69, 73, 90, 107, 121, // yi2LSr2EIZky + 88, 67, 110, 10, 48, 113, 50, 51, 75, 88, 66, 53, // XCn.0q23KXB5 + 54, 106, 122, 97, 89, 121, 87, 102, 47, 87, 105, 51, // 6jzaYyWf/Wi3 + 77, 79, 120, 119, 43, 51, 87, 75, 116, 50, 49, 103, // MOxw+3WKt21g + 90, 55, 73, 101, 121, 76, 110, 112, 50, 75, 104, 118, // Z7IeyLnp2Khv + 65, 111, 116, 110, 68, 85, 48, 109, 86, 51, 72, 97, // AotnDU0mV3Ha + 73, 80, 122, 66, 83, 108, 67, 78, 10, 115, 83, 105, // IPzBSlCN.sSi + 54, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, 67, // 6.-----END C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 10, 83, 117, 98, 106, 101, 99, 116, // ---..Subject + 58, 32, 67, 32, 61, 32, 66, 69, 44, 32, 79, 32, // : C = BE, O + 61, 32, 71, 108, 111, 98, 97, 108, 83, 105, 103, 110, // = GlobalSign + 32, 110, 118, 45, 115, 97, 44, 32, 79, 85, 32, 61, // nv-sa, OU = + 32, 82, 111, 111, 116, 32, 67, 65, 44, 32, 67, 78, // Root CA, CN + 32, 61, 32, 71, 108, 111, 98, 97, 108, 83, 105, 103, // = GlobalSig + 110, 32, 82, 111, 111, 116, 32, 67, 65, 10, 78, 111, // n Root CA.No + 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 83, 101, // t Before: Se + 112, 32, 32, 49, 32, 49, 50, 58, 48, 48, 58, 48, // p 1 12:00:0 + 48, 32, 49, 57, 57, 56, 32, 71, 77, 84, 10, 78, // 0 1998 GMT.N + 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 74, // ot After : J + 97, 110, 32, 50, 56, 32, 49, 50, 58, 48, 48, 58, // an 28 12:00: + 48, 48, 32, 50, 48, 50, 56, 32, 71, 77, 84, 10, // 00 2028 GMT. + 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, // -----BEGIN C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 77, 73, 73, 68, 100, 84, 67, 67, // ---.MIIDdTCC + 65, 108, 50, 103, 65, 119, 73, 66, 65, 103, 73, 76, // Al2gAwIBAgIL + 66, 65, 65, 65, 65, 65, 65, 66, 70, 85, 116, 97, // BAAAAAABFUta + 119, 53, 81, 119, 68, 81, 89, 74, 75, 111, 90, 73, // w5QwDQYJKoZI + 104, 118, 99, 78, 65, 81, 69, 70, 66, 81, 65, 119, // hvcNAQEFBQAw + 86, 122, 69, 76, 77, 65, 107, 71, 10, 65, 49, 85, // VzELMAkG.A1U + 69, 66, 104, 77, 67, 81, 107, 85, 120, 71, 84, 65, // EBhMCQkUxGTA + 88, 66, 103, 78, 86, 66, 65, 111, 84, 69, 69, 100, // XBgNVBAoTEEd + 115, 98, 50, 74, 104, 98, 70, 78, 112, 90, 50, 52, // sb2JhbFNpZ24 + 103, 98, 110, 89, 116, 99, 50, 69, 120, 69, 68, 65, // gbnYtc2ExEDA + 79, 66, 103, 78, 86, 66, 65, 115, 84, 66, 49, 74, // OBgNVBAsTB1J + 118, 10, 98, 51, 81, 103, 81, 48, 69, 120, 71, 122, // v.b3QgQ0ExGz + 65, 90, 66, 103, 78, 86, 66, 65, 77, 84, 69, 107, // AZBgNVBAMTEk + 100, 115, 98, 50, 74, 104, 98, 70, 78, 112, 90, 50, // dsb2JhbFNpZ2 + 52, 103, 85, 109, 57, 118, 100, 67, 66, 68, 81, 84, // 4gUm9vdCBDQT + 65, 101, 70, 119, 48, 53, 79, 68, 65, 53, 77, 68, // AeFw05ODA5MD + 69, 120, 77, 106, 65, 119, 10, 77, 68, 66, 97, 70, // ExMjAw.MDBaF + 119, 48, 121, 79, 68, 65, 120, 77, 106, 103, 120, 77, // w0yODAxMjgxM + 106, 65, 119, 77, 68, 66, 97, 77, 70, 99, 120, 67, // jAwMDBaMFcxC + 122, 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, 65, // zAJBgNVBAYTA + 107, 74, 70, 77, 82, 107, 119, 70, 119, 89, 68, 86, // kJFMRkwFwYDV + 81, 81, 75, 69, 120, 66, 72, 98, 71, 57, 105, 10, // QQKExBHbG9i. + 89, 87, 120, 84, 97, 87, 100, 117, 73, 71, 53, 50, // YWxTaWduIG52 + 76, 88, 78, 104, 77, 82, 65, 119, 68, 103, 89, 68, // LXNhMRAwDgYD + 86, 81, 81, 76, 69, 119, 100, 83, 98, 50, 57, 48, // VQQLEwdSb290 + 73, 69, 78, 66, 77, 82, 115, 119, 71, 81, 89, 68, // IENBMRswGQYD + 86, 81, 81, 68, 69, 120, 74, 72, 98, 71, 57, 105, // VQQDExJHbG9i + 89, 87, 120, 84, 10, 97, 87, 100, 117, 73, 70, 74, // YWxT.aWduIFJ + 118, 98, 51, 81, 103, 81, 48, 69, 119, 103, 103, 69, // vb3QgQ0EwggE + 105, 77, 65, 48, 71, 67, 83, 113, 71, 83, 73, 98, // iMA0GCSqGSIb + 51, 68, 81, 69, 66, 65, 81, 85, 65, 65, 52, 73, // 3DQEBAQUAA4I + 66, 68, 119, 65, 119, 103, 103, 69, 75, 65, 111, 73, // BDwAwggEKAoI + 66, 65, 81, 68, 97, 68, 117, 97, 90, 10, 106, 99, // BAQDaDuaZ.jc + 54, 106, 52, 48, 43, 75, 102, 118, 118, 120, 105, 52, // 6j40+Kfvvxi4 + 77, 108, 97, 43, 112, 73, 72, 47, 69, 113, 115, 76, // Mla+pIH/EqsL + 109, 86, 69, 81, 83, 57, 56, 71, 80, 82, 52, 109, // mVEQS98GPR4m + 100, 109, 122, 120, 122, 100, 122, 120, 116, 73, 75, 43, // dmzxzdzxtIK+ + 54, 78, 105, 89, 54, 97, 114, 121, 109, 65, 90, 97, // 6NiY6arymAZa + 118, 112, 10, 120, 121, 48, 83, 121, 54, 115, 99, 84, // vp.xy0Sy6scT + 72, 65, 72, 111, 84, 48, 75, 77, 77, 48, 86, 106, // HAHoT0KMM0Vj + 85, 47, 52, 51, 100, 83, 77, 85, 66, 85, 99, 55, // U/43dSMUBUc7 + 49, 68, 117, 120, 67, 55, 51, 47, 79, 108, 83, 56, // 1DuxC73/OlS8 + 112, 70, 57, 52, 71, 51, 86, 78, 84, 67, 79, 88, // pF94G3VNTCOX + 107, 78, 122, 56, 107, 72, 112, 10, 49, 87, 114, 106, // kNz8kHp.1Wrj + 115, 111, 107, 54, 86, 106, 107, 52, 98, 119, 89, 56, // sok6Vjk4bwY8 + 105, 71, 108, 98, 75, 107, 51, 70, 112, 49, 83, 52, // iGlbKk3Fp1S4 + 98, 73, 110, 77, 109, 47, 107, 56, 121, 117, 88, 57, // bInMm/k8yuX9 + 105, 102, 85, 83, 80, 74, 74, 52, 108, 116, 98, 99, // ifUSPJJ4ltbc + 100, 71, 54, 84, 82, 71, 72, 82, 106, 99, 100, 71, // dG6TRGHRjcdG + 10, 115, 110, 85, 79, 104, 117, 103, 90, 105, 116, 86, // .snUOhugZitV + 116, 98, 78, 86, 52, 70, 112, 87, 105, 54, 99, 103, // tbNV4FpWi6cg + 75, 79, 79, 118, 121, 74, 66, 78, 80, 99, 49, 83, // KOOvyJBNPc1S + 84, 69, 52, 85, 54, 71, 55, 119, 101, 78, 76, 87, // TE4U6G7weNLW + 76, 66, 89, 121, 53, 100, 52, 117, 120, 50, 120, 56, // LBYy5d4ux2x8 + 103, 107, 97, 115, 74, 10, 85, 50, 54, 81, 122, 110, // gkasJ.U26Qzn + 115, 51, 100, 76, 108, 119, 82, 53, 69, 105, 85, 87, // s3dLlwR5EiUW + 77, 87, 101, 97, 54, 120, 114, 107, 69, 109, 67, 77, // MWea6xrkEmCM + 103, 90, 75, 57, 70, 71, 113, 107, 106, 87, 90, 67, // gZK9FGqkjWZC + 114, 88, 103, 122, 84, 47, 76, 67, 114, 66, 98, 66, // rXgzT/LCrBbB + 108, 68, 83, 103, 101, 70, 53, 57, 78, 56, 10, 57, // lDSgeF59N8.9 + 105, 70, 111, 55, 43, 114, 121, 85, 112, 57, 47, 107, // iFo7+ryUp9/k + 53, 68, 80, 65, 103, 77, 66, 65, 65, 71, 106, 81, // 5DPAgMBAAGjQ + 106, 66, 65, 77, 65, 52, 71, 65, 49, 85, 100, 68, // jBAMA4GA1UdD + 119, 69, 66, 47, 119, 81, 69, 65, 119, 73, 66, 66, // wEB/wQEAwIBB + 106, 65, 80, 66, 103, 78, 86, 72, 82, 77, 66, 65, // jAPBgNVHRMBA + 102, 56, 69, 10, 66, 84, 65, 68, 65, 81, 72, 47, // f8E.BTADAQH/ + 77, 66, 48, 71, 65, 49, 85, 100, 68, 103, 81, 87, // MB0GA1UdDgQW + 66, 66, 82, 103, 101, 50, 89, 97, 82, 81, 50, 88, // BBRge2YaRQ2X + 121, 111, 108, 81, 76, 51, 48, 69, 122, 84, 83, 111, // yolQL30EzTSo + 47, 47, 122, 57, 83, 122, 65, 78, 66, 103, 107, 113, // //z9SzANBgkq + 104, 107, 105, 71, 57, 119, 48, 66, 10, 65, 81, 85, // hkiG9w0B.AQU + 70, 65, 65, 79, 67, 65, 81, 69, 65, 49, 110, 80, // FAAOCAQEA1nP + 110, 102, 69, 57, 50, 48, 73, 50, 47, 55, 76, 113, // nfE920I2/7Lq + 105, 118, 106, 84, 70, 75, 68, 75, 49, 102, 80, 120, // ivjTFKDK1fPx + 115, 110, 67, 119, 114, 118, 81, 109, 101, 85, 55, 57, // snCwrvQmeU79 + 114, 88, 113, 111, 82, 83, 76, 98, 108, 67, 75, 79, // rXqoRSLblCKO + 122, 10, 121, 106, 49, 104, 84, 100, 78, 71, 67, 98, // z.yj1hTdNGCb + 77, 43, 119, 54, 68, 106, 89, 49, 85, 98, 56, 114, // M+w6DjY1Ub8r + 114, 118, 114, 84, 110, 104, 81, 55, 107, 52, 111, 43, // rvrTnhQ7k4o+ + 89, 118, 105, 105, 89, 55, 55, 54, 66, 81, 86, 118, // YviiY776BQVv + 110, 71, 67, 118, 48, 52, 122, 99, 81, 76, 99, 70, // nGCv04zcQLcF + 71, 85, 108, 53, 103, 69, 10, 51, 56, 78, 102, 108, // GUl5gE.38Nfl + 78, 85, 86, 121, 82, 82, 66, 110, 77, 82, 100, 100, // NUVyRRBnMRdd + 87, 81, 86, 68, 102, 57, 86, 77, 79, 121, 71, 106, // WQVDf9VMOyGj + 47, 56, 78, 55, 121, 121, 53, 89, 48, 98, 50, 113, // /8N7yy5Y0b2q + 118, 122, 102, 118, 71, 110, 57, 76, 104, 74, 73, 90, // vzfvGn9LhJIZ + 74, 114, 103, 108, 102, 67, 109, 55, 121, 109, 80, 10, // JrglfCm7ymP. + 65, 98, 69, 86, 116, 81, 119, 100, 112, 102, 53, 112, // AbEVtQwdpf5p + 76, 71, 107, 107, 101, 66, 54, 122, 112, 120, 120, 120, // LGkkeB6zpxxx + 89, 117, 55, 75, 121, 74, 101, 115, 70, 49, 50, 75, // Yu7KyJesF12K + 119, 118, 104, 72, 104, 109, 52, 113, 120, 70, 89, 120, // wvhHhm4qxFYx + 108, 100, 66, 110, 105, 89, 85, 114, 43, 87, 121, 109, // ldBniYUr+Wym + 88, 85, 97, 100, 10, 68, 75, 113, 67, 53, 74, 108, // XUad.DKqC5Jl + 82, 51, 88, 67, 51, 50, 49, 89, 57, 89, 101, 82, // R3XC321Y9YeR + 113, 52, 86, 122, 87, 57, 118, 52, 57, 51, 107, 72, // q4VzW9v493kH + 77, 66, 54, 53, 106, 85, 114, 57, 84, 85, 47, 81, // MB65jUr9TU/Q + 114, 54, 99, 102, 57, 116, 118, 101, 67, 88, 52, 88, // r6cf9tveCX4X + 83, 81, 82, 106, 98, 103, 98, 77, 69, 10, 72, 77, // SQRjbgbME.HM + 85, 102, 112, 73, 66, 118, 70, 83, 68, 74, 51, 103, // UfpIBvFSDJ3g + 121, 73, 67, 104, 51, 87, 90, 108, 88, 105, 47, 69, // yICh3WZlXi/E + 106, 74, 75, 83, 90, 112, 52, 65, 61, 61, 10, 45, // jJKSZp4A==.- + 45, 45, 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, // ----END CERT + 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, // IFICATE----- + 10, 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 79, // ..Subject: O + 85, 32, 61, 32, 71, 108, 111, 98, 97, 108, 83, 105, // U = GlobalSi + 103, 110, 32, 69, 67, 67, 32, 82, 111, 111, 116, 32, // gn ECC Root + 67, 65, 32, 45, 32, 82, 53, 44, 32, 79, 32, 61, // CA - R5, O = + 32, 71, 108, 111, 98, 97, 108, 83, 105, 103, 110, 44, // GlobalSign, + 32, 67, 78, 32, 61, 32, 71, 108, 111, 98, 97, 108, // CN = Global + 83, 105, 103, 110, 10, 78, 111, 116, 32, 66, 101, 102, // Sign.Not Bef + 111, 114, 101, 58, 32, 78, 111, 118, 32, 49, 51, 32, // ore: Nov 13 + 48, 48, 58, 48, 48, 58, 48, 48, 32, 50, 48, 49, // 00:00:00 201 + 50, 32, 71, 77, 84, 10, 78, 111, 116, 32, 65, 102, // 2 GMT.Not Af + 116, 101, 114, 32, 58, 32, 74, 97, 110, 32, 49, 57, // ter : Jan 19 + 32, 48, 51, 58, 49, 52, 58, 48, 55, 32, 50, 48, // 03:14:07 20 + 51, 56, 32, 71, 77, 84, 10, 45, 45, 45, 45, 45, // 38 GMT.----- + 66, 69, 71, 73, 78, 32, 67, 69, 82, 84, 73, 70, // BEGIN CERTIF + 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 77, // ICATE-----.M + 73, 73, 67, 72, 106, 67, 67, 65, 97, 83, 103, 65, // IICHjCCAaSgA + 119, 73, 66, 65, 103, 73, 82, 89, 70, 108, 74, 52, // wIBAgIRYFlJ4 + 67, 89, 117, 117, 49, 88, 53, 67, 110, 101, 75, 99, // CYuu1X5CneKc + 102, 108, 75, 50, 71, 119, 119, 67, 103, 89, 73, 75, // flK2GwwCgYIK + 111, 90, 73, 122, 106, 48, 69, 65, 119, 77, 119, 85, // oZIzj0EAwMwU + 68, 69, 107, 10, 77, 67, 73, 71, 65, 49, 85, 69, // DEk.MCIGA1UE + 67, 120, 77, 98, 82, 50, 120, 118, 89, 109, 70, 115, // CxMbR2xvYmFs + 85, 50, 108, 110, 98, 105, 66, 70, 81, 48, 77, 103, // U2lnbiBFQ0Mg + 85, 109, 57, 118, 100, 67, 66, 68, 81, 83, 65, 116, // Um9vdCBDQSAt + 73, 70, 73, 49, 77, 82, 77, 119, 69, 81, 89, 68, // IFI1MRMwEQYD + 86, 81, 81, 75, 69, 119, 112, 72, 10, 98, 71, 57, // VQQKEwpH.bG9 + 105, 89, 87, 120, 84, 97, 87, 100, 117, 77, 82, 77, // iYWxTaWduMRM + 119, 69, 81, 89, 68, 86, 81, 81, 68, 69, 119, 112, // wEQYDVQQDEwp + 72, 98, 71, 57, 105, 89, 87, 120, 84, 97, 87, 100, // HbG9iYWxTaWd + 117, 77, 66, 52, 88, 68, 84, 69, 121, 77, 84, 69, // uMB4XDTEyMTE + 120, 77, 122, 65, 119, 77, 68, 65, 119, 77, 70, 111, // xMzAwMDAwMFo + 88, 10, 68, 84, 77, 52, 77, 68, 69, 120, 79, 84, // X.DTM4MDExOT + 65, 122, 77, 84, 81, 119, 78, 49, 111, 119, 85, 68, // AzMTQwN1owUD + 69, 107, 77, 67, 73, 71, 65, 49, 85, 69, 67, 120, // EkMCIGA1UECx + 77, 98, 82, 50, 120, 118, 89, 109, 70, 115, 85, 50, // MbR2xvYmFsU2 + 108, 110, 98, 105, 66, 70, 81, 48, 77, 103, 85, 109, // lnbiBFQ0MgUm + 57, 118, 100, 67, 66, 68, 10, 81, 83, 65, 116, 73, // 9vdCBD.QSAtI + 70, 73, 49, 77, 82, 77, 119, 69, 81, 89, 68, 86, // FI1MRMwEQYDV + 81, 81, 75, 69, 119, 112, 72, 98, 71, 57, 105, 89, // QQKEwpHbG9iY + 87, 120, 84, 97, 87, 100, 117, 77, 82, 77, 119, 69, // WxTaWduMRMwE + 81, 89, 68, 86, 81, 81, 68, 69, 119, 112, 72, 98, // QYDVQQDEwpHb + 71, 57, 105, 89, 87, 120, 84, 97, 87, 100, 117, 10, // G9iYWxTaWdu. + 77, 72, 89, 119, 69, 65, 89, 72, 75, 111, 90, 73, // MHYwEAYHKoZI + 122, 106, 48, 67, 65, 81, 89, 70, 75, 52, 69, 69, // zj0CAQYFK4EE + 65, 67, 73, 68, 89, 103, 65, 69, 82, 48, 85, 79, // ACIDYgAER0UO + 108, 118, 116, 57, 88, 98, 47, 112, 79, 100, 69, 104, // lvt9Xb/pOdEh + 43, 74, 56, 76, 116, 116, 86, 55, 72, 112, 73, 54, // +J8LttV7HpI6 + 83, 70, 107, 99, 10, 56, 71, 73, 120, 76, 99, 66, // SFkc.8GIxLcB + 54, 75, 80, 52, 97, 112, 49, 121, 122, 116, 115, 121, // 6KP4ap1yztsy + 88, 53, 48, 88, 85, 87, 80, 114, 82, 100, 50, 49, // X50XUWPrRd21 + 68, 111, 115, 67, 72, 90, 84, 81, 75, 72, 51, 114, // DosCHZTQKH3r + 100, 54, 122, 119, 122, 111, 99, 87, 100, 84, 97, 82, // d6zwzocWdTaR + 118, 81, 90, 85, 52, 102, 56, 107, 101, 10, 104, 79, // vQZU4f8ke.hO + 118, 82, 110, 107, 109, 83, 104, 53, 83, 72, 68, 68, // vRnkmSh5SHDD + 113, 70, 83, 109, 97, 102, 110, 86, 109, 84, 84, 90, // qFSmafnVmTTZ + 100, 104, 66, 111, 90, 75, 111, 48, 73, 119, 81, 68, // dhBoZKo0IwQD + 65, 79, 66, 103, 78, 86, 72, 81, 56, 66, 65, 102, // AOBgNVHQ8BAf + 56, 69, 66, 65, 77, 67, 65, 81, 89, 119, 68, 119, // 8EBAMCAQYwDw + 89, 68, 10, 86, 82, 48, 84, 65, 81, 72, 47, 66, // YD.VR0TAQH/B + 65, 85, 119, 65, 119, 69, 66, 47, 122, 65, 100, 66, // AUwAwEB/zAdB + 103, 78, 86, 72, 81, 52, 69, 70, 103, 81, 85, 80, // gNVHQ4EFgQUP + 101, 89, 112, 83, 74, 118, 113, 66, 56, 111, 104, 82, // eYpSJvqB8ohR + 69, 111, 109, 51, 109, 55, 101, 48, 111, 80, 81, 110, // Eom3m7e0oPQn + 49, 107, 119, 67, 103, 89, 73, 10, 75, 111, 90, 73, // 1kwCgYI.KoZI + 122, 106, 48, 69, 65, 119, 77, 68, 97, 65, 65, 119, // zj0EAwMDaAAw + 90, 81, 73, 120, 65, 79, 86, 112, 69, 115, 108, 117, // ZQIxAOVpEslu + 50, 56, 89, 120, 117, 103, 108, 66, 52, 90, 102, 52, // 28YxuglB4Zf4 + 43, 47, 50, 97, 52, 110, 48, 83, 121, 101, 49, 56, // +/2a4n0Sye18 + 90, 78, 80, 76, 66, 83, 87, 76, 86, 116, 109, 103, // ZNPLBSWLVtmg + 10, 53, 49, 53, 100, 84, 103, 117, 68, 110, 70, 116, // .515dTguDnFt + 50, 75, 97, 65, 74, 74, 105, 70, 113, 89, 103, 73, // 2KaAJJiFqYgI + 119, 99, 100, 75, 49, 106, 49, 122, 113, 79, 43, 70, // wcdK1j1zqO+F + 52, 67, 89, 87, 111, 100, 90, 73, 55, 121, 70, 122, // 4CYWodZI7yFz + 57, 83, 79, 56, 78, 100, 67, 75, 111, 67, 79, 74, // 9SO8NdCKoCOJ + 117, 120, 85, 110, 79, 10, 120, 119, 121, 56, 112, 50, // uxUnO.xwy8p2 + 70, 112, 56, 102, 99, 55, 52, 83, 114, 76, 43, 83, // Fp8fc74SrL+S + 118, 122, 90, 112, 65, 51, 10, 45, 45, 45, 45, 45, // vzZpA3.----- + 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, // END CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 83, 117, // ATE-----..Su + 98, 106, 101, 99, 116, 58, 32, 67, 61, 85, 83, 44, // bject: C=US, + 32, 79, 61, 68, 105, 103, 105, 67, 101, 114, 116, 32, // O=DigiCert + 73, 110, 99, 44, 32, 79, 85, 61, 119, 119, 119, 46, // Inc, OU=www. + 100, 105, 103, 105, 99, 101, 114, 116, 46, 99, 111, 109, // digicert.com + 44, 32, 67, 78, 61, 68, 105, 103, 105, 67, 101, 114, // , CN=DigiCer + 116, 32, 72, 105, 103, 104, 32, 65, 115, 115, 117, 114, // t High Assur + 97, 110, 99, 101, 32, 69, 86, 32, 82, 111, 111, 116, // ance EV Root + 32, 67, 65, 10, 78, 111, 116, 32, 66, 101, 102, 111, // CA.Not Befo + 114, 101, 58, 32, 78, 111, 118, 32, 49, 48, 32, 48, // re: Nov 10 0 + 48, 58, 48, 48, 58, 48, 48, 32, 50, 48, 48, 54, // 0:00:00 2006 + 32, 71, 77, 84, 10, 78, 111, 116, 32, 65, 102, 116, // GMT.Not Aft + 101, 114, 32, 58, 32, 78, 111, 118, 32, 49, 48, 32, // er : Nov 10 + 48, 48, 58, 48, 48, 58, 48, 48, 32, 50, 48, 51, // 00:00:00 203 + 49, 32, 71, 77, 84, 10, 45, 45, 45, 45, 45, 66, // 1 GMT.-----B + 69, 71, 73, 78, 32, 67, 69, 82, 84, 73, 70, 73, // EGIN CERTIFI + 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 77, 73, // CATE-----.MI + 73, 68, 120, 84, 67, 67, 65, 113, 50, 103, 65, 119, // IDxTCCAq2gAw + 73, 66, 65, 103, 73, 81, 65, 113, 120, 99, 74, 109, // IBAgIQAqxcJm + 111, 76, 81, 74, 117, 80, 67, 51, 110, 121, 114, 107, // oLQJuPC3nyrk + 89, 108, 100, 122, 65, 78, 66, 103, 107, 113, 104, 107, // YldzANBgkqhk + 105, 71, 57, 119, 48, 66, 65, 81, 85, 70, 65, 68, // iG9w0BAQUFAD + 66, 115, 10, 77, 81, 115, 119, 67, 81, 89, 68, 86, // Bs.MQswCQYDV + 81, 81, 71, 69, 119, 74, 86, 85, 122, 69, 86, 77, // QQGEwJVUzEVM + 66, 77, 71, 65, 49, 85, 69, 67, 104, 77, 77, 82, // BMGA1UEChMMR + 71, 108, 110, 97, 85, 78, 108, 99, 110, 81, 103, 83, // GlnaUNlcnQgS + 87, 53, 106, 77, 82, 107, 119, 70, 119, 89, 68, 86, // W5jMRkwFwYDV + 81, 81, 76, 69, 120, 66, 51, 10, 100, 51, 99, 117, // QQLExB3.d3cu + 90, 71, 108, 110, 97, 87, 78, 108, 99, 110, 81, 117, // ZGlnaWNlcnQu + 89, 50, 57, 116, 77, 83, 115, 119, 75, 81, 89, 68, // Y29tMSswKQYD + 86, 81, 81, 68, 69, 121, 74, 69, 97, 87, 100, 112, // VQQDEyJEaWdp + 81, 50, 86, 121, 100, 67, 66, 73, 97, 87, 100, 111, // Q2VydCBIaWdo + 73, 69, 70, 122, 99, 51, 86, 121, 89, 87, 53, 106, // IEFzc3VyYW5j + 10, 90, 83, 66, 70, 86, 105, 66, 83, 98, 50, 57, // .ZSBFViBSb29 + 48, 73, 69, 78, 66, 77, 66, 52, 88, 68, 84, 65, // 0IENBMB4XDTA + 50, 77, 84, 69, 120, 77, 68, 65, 119, 77, 68, 65, // 2MTExMDAwMDA + 119, 77, 70, 111, 88, 68, 84, 77, 120, 77, 84, 69, // wMFoXDTMxMTE + 120, 77, 68, 65, 119, 77, 68, 65, 119, 77, 70, 111, // xMDAwMDAwMFo + 119, 98, 68, 69, 76, 10, 77, 65, 107, 71, 65, 49, // wbDEL.MAkGA1 + 85, 69, 66, 104, 77, 67, 86, 86, 77, 120, 70, 84, // UEBhMCVVMxFT + 65, 84, 66, 103, 78, 86, 66, 65, 111, 84, 68, 69, // ATBgNVBAoTDE + 82, 112, 90, 50, 108, 68, 90, 88, 74, 48, 73, 69, // RpZ2lDZXJ0IE + 108, 117, 89, 122, 69, 90, 77, 66, 99, 71, 65, 49, // luYzEZMBcGA1 + 85, 69, 67, 120, 77, 81, 100, 51, 100, 51, 10, 76, // UECxMQd3d3.L + 109, 82, 112, 90, 50, 108, 106, 90, 88, 74, 48, 76, // mRpZ2ljZXJ0L + 109, 78, 118, 98, 84, 69, 114, 77, 67, 107, 71, 65, // mNvbTErMCkGA + 49, 85, 69, 65, 120, 77, 105, 82, 71, 108, 110, 97, // 1UEAxMiRGlna + 85, 78, 108, 99, 110, 81, 103, 83, 71, 108, 110, 97, // UNlcnQgSGlna + 67, 66, 66, 99, 51, 78, 49, 99, 109, 70, 117, 89, // CBBc3N1cmFuY + 50, 85, 103, 10, 82, 86, 89, 103, 85, 109, 57, 118, // 2Ug.RVYgUm9v + 100, 67, 66, 68, 81, 84, 67, 67, 65, 83, 73, 119, // dCBDQTCCASIw + 68, 81, 89, 74, 75, 111, 90, 73, 104, 118, 99, 78, // DQYJKoZIhvcN + 65, 81, 69, 66, 66, 81, 65, 68, 103, 103, 69, 80, // AQEBBQADggEP + 65, 68, 67, 67, 65, 81, 111, 67, 103, 103, 69, 66, // ADCCAQoCggEB + 65, 77, 98, 77, 53, 88, 80, 109, 10, 43, 57, 83, // AMbM5XPm.+9S + 55, 53, 83, 48, 116, 77, 113, 98, 102, 53, 89, 69, // 75S0tMqbf5YE + 47, 121, 99, 48, 108, 83, 98, 90, 120, 75, 115, 80, // /yc0lSbZxKsP + 86, 108, 68, 82, 110, 111, 103, 111, 99, 115, 70, 57, // VlDRnogocsF9 + 112, 112, 107, 67, 120, 120, 76, 101, 121, 106, 57, 67, // ppkCxxLeyj9C + 89, 112, 75, 108, 66, 87, 84, 114, 84, 51, 74, 84, // YpKlBWTrT3JT + 87, 10, 80, 78, 116, 48, 79, 75, 82, 75, 122, 69, // W.PNt0OKRKzE + 48, 108, 103, 118, 100, 75, 112, 86, 77, 83, 79, 79, // 0lgvdKpVMSOO + 55, 122, 83, 87, 49, 120, 107, 88, 53, 106, 116, 113, // 7zSW1xkX5jtq + 117, 109, 88, 56, 79, 107, 104, 80, 104, 80, 89, 108, // umX8OkhPhPYl + 71, 43, 43, 77, 88, 115, 50, 122, 105, 83, 52, 119, // G++MXs2ziS4w + 98, 108, 67, 74, 69, 77, 10, 120, 67, 104, 66, 86, // blCJEM.xChBV + 102, 118, 76, 87, 111, 107, 86, 102, 110, 72, 111, 78, // fvLWokVfnHoN + 98, 57, 78, 99, 103, 107, 57, 118, 106, 111, 52, 85, // b9Ncgk9vjo4U + 70, 116, 51, 77, 82, 117, 78, 115, 56, 99, 107, 82, // Ft3MRuNs8ckR + 90, 113, 110, 114, 71, 48, 65, 70, 70, 111, 69, 116, // ZqnrG0AFFoEt + 55, 111, 84, 54, 49, 69, 75, 109, 69, 70, 66, 10, // 7oT61EKmEFB. + 73, 107, 53, 108, 89, 89, 101, 66, 81, 86, 67, 109, // Ik5lYYeBQVCm + 101, 86, 121, 74, 51, 104, 108, 75, 86, 57, 85, 117, // eVyJ3hlKV9Uu + 53, 108, 48, 99, 85, 121, 120, 43, 109, 77, 48, 97, // 5l0cUyx+mM0a + 66, 104, 97, 107, 97, 72, 80, 81, 78, 65, 81, 84, // BhakaHPQNAQT + 88, 75, 70, 120, 48, 49, 112, 56, 86, 100, 116, 101, // XKFx01p8Vdte + 90, 79, 69, 51, 10, 104, 122, 66, 87, 66, 79, 85, // ZOE3.hzBWBOU + 82, 116, 67, 109, 65, 69, 118, 70, 53, 79, 89, 105, // RtCmAEvF5OYi + 105, 65, 104, 70, 56, 74, 50, 97, 51, 105, 76, 100, // iAhF8J2a3iLd + 52, 56, 115, 111, 75, 113, 68, 105, 114, 67, 109, 84, // 48soKqDirCmT + 67, 118, 50, 90, 100, 108, 89, 84, 66, 111, 83, 85, // Cv2ZdlYTBoSU + 101, 104, 49, 48, 97, 85, 65, 115, 103, 10, 69, 115, // eh10aUAsg.Es + 120, 66, 117, 50, 52, 76, 85, 84, 105, 52, 83, 56, // xBu24LUTi4S8 + 115, 67, 65, 119, 69, 65, 65, 97, 78, 106, 77, 71, // sCAwEAAaNjMG + 69, 119, 68, 103, 89, 68, 86, 82, 48, 80, 65, 81, // EwDgYDVR0PAQ + 72, 47, 66, 65, 81, 68, 65, 103, 71, 71, 77, 65, // H/BAQDAgGGMA + 56, 71, 65, 49, 85, 100, 69, 119, 69, 66, 47, 119, // 8GA1UdEwEB/w + 81, 70, 10, 77, 65, 77, 66, 65, 102, 56, 119, 72, // QF.MAMBAf8wH + 81, 89, 68, 86, 82, 48, 79, 66, 66, 89, 69, 70, // QYDVR0OBBYEF + 76, 69, 43, 119, 50, 107, 68, 43, 76, 57, 72, 65, // LE+w2kD+L9HA + 100, 83, 89, 74, 104, 111, 73, 65, 117, 57, 106, 90, // dSYJhoIAu9jZ + 67, 118, 68, 77, 66, 56, 71, 65, 49, 85, 100, 73, // CvDMB8GA1UdI + 119, 81, 89, 77, 66, 97, 65, 10, 70, 76, 69, 43, // wQYMBaA.FLE+ + 119, 50, 107, 68, 43, 76, 57, 72, 65, 100, 83, 89, // w2kD+L9HAdSY + 74, 104, 111, 73, 65, 117, 57, 106, 90, 67, 118, 68, // JhoIAu9jZCvD + 77, 65, 48, 71, 67, 83, 113, 71, 83, 73, 98, 51, // MA0GCSqGSIb3 + 68, 81, 69, 66, 66, 81, 85, 65, 65, 52, 73, 66, // DQEBBQUAA4IB + 65, 81, 65, 99, 71, 103, 97, 88, 51, 78, 101, 99, // AQAcGgaX3Nec + 10, 110, 122, 121, 73, 90, 103, 89, 73, 86, 121, 72, // .nzyIZgYIVyH + 98, 73, 85, 102, 52, 75, 109, 101, 113, 118, 120, 103, // bIUf4Kmeqvxg + 121, 100, 107, 65, 81, 86, 56, 71, 75, 56, 51, 114, // ydkAQV8GK83r + 90, 69, 87, 87, 79, 78, 102, 113, 101, 47, 69, 87, // ZEWWONfqe/EW + 49, 110, 116, 108, 77, 77, 85, 117, 52, 107, 101, 104, // 1ntlMMUu4keh + 68, 76, 73, 54, 122, 10, 101, 77, 55, 98, 52, 49, // DLI6z.eM7b41 + 78, 53, 99, 100, 98, 108, 73, 90, 81, 66, 50, 108, // N5cdblIZQB2l + 87, 72, 109, 105, 82, 107, 57, 111, 112, 109, 122, 78, // WHmiRk9opmzN + 54, 99, 78, 56, 50, 111, 78, 76, 70, 112, 109, 121, // 6cN82oNLFpmy + 80, 73, 110, 110, 103, 105, 75, 51, 66, 68, 52, 49, // PInngiK3BD41 + 86, 72, 77, 87, 69, 90, 55, 49, 106, 70, 10, 104, // VHMWEZ71jF.h + 83, 57, 79, 77, 80, 97, 103, 77, 82, 89, 106, 121, // S9OMPagMRYjy + 79, 102, 105, 90, 82, 89, 122, 121, 55, 56, 97, 71, // OfiZRYzy78aG + 54, 65, 57, 43, 77, 112, 101, 105, 122, 71, 76, 89, // 6A9+MpeizGLY + 65, 105, 74, 76, 81, 119, 71, 88, 70, 75, 51, 120, // AiJLQwGXFK3x + 80, 107, 75, 109, 78, 69, 86, 88, 53, 56, 83, 118, // PkKmNEVX58Sv + 110, 119, 50, 10, 89, 122, 105, 57, 82, 75, 82, 47, // nw2.Yzi9RKR/ + 53, 67, 89, 114, 67, 115, 83, 88, 97, 81, 51, 112, // 5CYrCsSXaQ3p + 106, 79, 76, 65, 69, 70, 101, 52, 121, 72, 89, 83, // jOLAEFe4yHYS + 107, 86, 88, 121, 83, 71, 110, 89, 118, 67, 111, 67, // kVXySGnYvCoC + 87, 119, 57, 69, 49, 67, 65, 120, 50, 47, 83, 54, // Ww9E1CAx2/S6 + 99, 67, 90, 100, 107, 71, 67, 101, 10, 118, 69, 115, // cCZdkGCe.vEs + 88, 67, 83, 43, 48, 121, 120, 53, 68, 97, 77, 107, // XCS+0yx5DaMk + 72, 74, 56, 72, 83, 88, 80, 102, 113, 73, 98, 108, // HJ8HSXPfqIbl + 111, 69, 112, 119, 56, 110, 76, 43, 101, 47, 73, 66, // oEpw8nL+e/IB + 99, 109, 50, 80, 78, 55, 69, 101, 113, 74, 83, 100, // cm2PN7EeqJSd + 110, 111, 68, 102, 122, 65, 73, 74, 57, 86, 78, 101, // noDfzAIJ9VNe + 112, 10, 43, 79, 107, 117, 69, 54, 78, 51, 54, 66, // p.+OkuE6N36B + 57, 75, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, // 9K.-----END + 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, // CERTIFICATE- + 45, 45, 45, 45, 10, 10, 83, 117, 98, 106, 101, 99, // ----..Subjec + 116, 58, 32, 67, 61, 85, 83, 44, 32, 79, 61, 68, // t: C=US, O=D + 105, 103, 105, 67, 101, 114, 116, 32, 73, 110, 99, 44, // igiCert Inc, + 32, 79, 85, 61, 119, 119, 119, 46, 100, 105, 103, 105, // OU=www.digi + 99, 101, 114, 116, 46, 99, 111, 109, 44, 32, 67, 78, // cert.com, CN + 61, 68, 105, 103, 105, 67, 101, 114, 116, 32, 71, 108, // =DigiCert Gl + 111, 98, 97, 108, 32, 82, 111, 111, 116, 32, 67, 65, // obal Root CA + 10, 78, 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, // .Not Before: + 32, 78, 111, 118, 32, 49, 48, 32, 48, 48, 58, 48, // Nov 10 00:0 + 48, 58, 48, 48, 32, 50, 48, 48, 54, 32, 71, 77, // 0:00 2006 GM + 84, 10, 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, // T.Not After + 58, 32, 78, 111, 118, 32, 49, 48, 32, 48, 48, 58, // : Nov 10 00: + 48, 48, 58, 48, 48, 32, 50, 48, 51, 49, 32, 71, // 00:00 2031 G + 77, 84, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, // MT.-----BEGI + 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, // N CERTIFICAT + 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 68, 114, // E-----.MIIDr + 122, 67, 67, 65, 112, 101, 103, 65, 119, 73, 66, 65, // zCCApegAwIBA + 103, 73, 81, 67, 68, 118, 103, 86, 112, 66, 67, 82, // gIQCDvgVpBCR + 114, 71, 104, 100, 87, 114, 74, 87, 90, 72, 72, 83, // rGhdWrJWZHHS + 106, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, // jANBgkqhkiG9 + 119, 48, 66, 65, 81, 85, 70, 65, 68, 66, 104, 10, // w0BAQUFADBh. + 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, // MQswCQYDVQQG + 69, 119, 74, 86, 85, 122, 69, 86, 77, 66, 77, 71, // EwJVUzEVMBMG + 65, 49, 85, 69, 67, 104, 77, 77, 82, 71, 108, 110, // A1UEChMMRGln + 97, 85, 78, 108, 99, 110, 81, 103, 83, 87, 53, 106, // aUNlcnQgSW5j + 77, 82, 107, 119, 70, 119, 89, 68, 86, 81, 81, 76, // MRkwFwYDVQQL + 69, 120, 66, 51, 10, 100, 51, 99, 117, 90, 71, 108, // ExB3.d3cuZGl + 110, 97, 87, 78, 108, 99, 110, 81, 117, 89, 50, 57, // naWNlcnQuY29 + 116, 77, 83, 65, 119, 72, 103, 89, 68, 86, 81, 81, // tMSAwHgYDVQQ + 68, 69, 120, 100, 69, 97, 87, 100, 112, 81, 50, 86, // DExdEaWdpQ2V + 121, 100, 67, 66, 72, 98, 71, 57, 105, 89, 87, 119, // ydCBHbG9iYWw + 103, 85, 109, 57, 118, 100, 67, 66, 68, 10, 81, 84, // gUm9vdCBD.QT + 65, 101, 70, 119, 48, 119, 78, 106, 69, 120, 77, 84, // AeFw0wNjExMT + 65, 119, 77, 68, 65, 119, 77, 68, 66, 97, 70, 119, // AwMDAwMDBaFw + 48, 122, 77, 84, 69, 120, 77, 84, 65, 119, 77, 68, // 0zMTExMTAwMD + 65, 119, 77, 68, 66, 97, 77, 71, 69, 120, 67, 122, // AwMDBaMGExCz + 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, 65, 108, // AJBgNVBAYTAl + 86, 84, 10, 77, 82, 85, 119, 69, 119, 89, 68, 86, // VT.MRUwEwYDV + 81, 81, 75, 69, 119, 120, 69, 97, 87, 100, 112, 81, // QQKEwxEaWdpQ + 50, 86, 121, 100, 67, 66, 74, 98, 109, 77, 120, 71, // 2VydCBJbmMxG + 84, 65, 88, 66, 103, 78, 86, 66, 65, 115, 84, 69, // TAXBgNVBAsTE + 72, 100, 51, 100, 121, 53, 107, 97, 87, 100, 112, 89, // Hd3dy5kaWdpY + 50, 86, 121, 100, 67, 53, 106, 10, 98, 50, 48, 120, // 2VydC5j.b20x + 73, 68, 65, 101, 66, 103, 78, 86, 66, 65, 77, 84, // IDAeBgNVBAMT + 70, 48, 82, 112, 90, 50, 108, 68, 90, 88, 74, 48, // F0RpZ2lDZXJ0 + 73, 69, 100, 115, 98, 50, 74, 104, 98, 67, 66, 83, // IEdsb2JhbCBS + 98, 50, 57, 48, 73, 69, 78, 66, 77, 73, 73, 66, // b290IENBMIIB + 73, 106, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, // IjANBgkqhkiG + 10, 57, 119, 48, 66, 65, 81, 69, 70, 65, 65, 79, // .9w0BAQEFAAO + 67, 65, 81, 56, 65, 77, 73, 73, 66, 67, 103, 75, // CAQ8AMIIBCgK + 67, 65, 81, 69, 65, 52, 106, 118, 104, 69, 88, 76, // CAQEA4jvhEXL + 101, 113, 75, 84, 84, 111, 49, 101, 113, 85, 75, 75, // eqKTTo1eqUKK + 80, 67, 51, 101, 81, 121, 97, 75, 108, 55, 104, 76, // PC3eQyaKl7hL + 79, 108, 108, 115, 66, 10, 67, 83, 68, 77, 65, 90, // OllsB.CSDMAZ + 79, 110, 84, 106, 67, 51, 85, 47, 100, 68, 120, 71, // OnTjC3U/dDxG + 107, 65, 86, 53, 51, 105, 106, 83, 76, 100, 104, 119, // kAV53ijSLdhw + 90, 65, 65, 73, 69, 74, 122, 115, 52, 98, 103, 55, // ZAAIEJzs4bg7 + 47, 102, 122, 84, 116, 120, 82, 117, 76, 87, 90, 115, // /fzTtxRuLWZs + 99, 70, 115, 51, 89, 110, 70, 111, 57, 55, 10, 110, // cFs3YnFo97.n + 104, 54, 86, 102, 101, 54, 51, 83, 75, 77, 73, 50, // h6Vfe63SKMI2 + 116, 97, 118, 101, 103, 119, 53, 66, 109, 86, 47, 83, // tavegw5BmV/S + 108, 48, 102, 118, 66, 102, 52, 113, 55, 55, 117, 75, // l0fvBf4q77uK + 78, 100, 48, 102, 51, 112, 52, 109, 86, 109, 70, 97, // Nd0f3p4mVmFa + 71, 53, 99, 73, 122, 74, 76, 118, 48, 55, 65, 54, // G5cIzJLv07A6 + 70, 112, 116, 10, 52, 51, 67, 47, 100, 120, 67, 47, // Fpt.43C/dxC/ + 47, 65, 72, 50, 104, 100, 109, 111, 82, 66, 66, 89, // /AH2hdmoRBBY + 77, 113, 108, 49, 71, 78, 88, 82, 111, 114, 53, 72, // Mql1GNXRor5H + 52, 105, 100, 113, 57, 74, 111, 122, 43, 69, 107, 73, // 4idq9Joz+EkI + 89, 73, 118, 85, 88, 55, 81, 54, 104, 76, 43, 104, // YIvUX7Q6hL+h + 113, 107, 112, 77, 102, 84, 55, 80, 10, 84, 49, 57, // qkpMfT7P.T19 + 115, 100, 108, 54, 103, 83, 122, 101, 82, 110, 116, 119, // sdl6gSzeRntw + 105, 53, 109, 51, 79, 70, 66, 113, 79, 97, 115, 118, // i5m3OFBqOasv + 43, 122, 98, 77, 85, 90, 66, 102, 72, 87, 121, 109, // +zbMUZBfHWym + 101, 77, 114, 47, 121, 55, 118, 114, 84, 67, 48, 76, // eMr/y7vrTC0L + 85, 113, 55, 100, 66, 77, 116, 111, 77, 49, 79, 47, // Uq7dBMtoM1O/ + 52, 10, 103, 100, 87, 55, 106, 86, 103, 47, 116, 82, // 4.gdW7jVg/tR + 118, 111, 83, 83, 105, 105, 99, 78, 111, 120, 66, 78, // voSSiicNoxBN + 51, 51, 115, 104, 98, 121, 84, 65, 112, 79, 66, 54, // 33shbyTApOB6 + 106, 116, 83, 106, 49, 101, 116, 88, 43, 106, 107, 77, // jtSj1etX+jkM + 79, 118, 74, 119, 73, 68, 65, 81, 65, 66, 111, 50, // OvJwIDAQABo2 + 77, 119, 89, 84, 65, 79, 10, 66, 103, 78, 86, 72, // MwYTAO.BgNVH + 81, 56, 66, 65, 102, 56, 69, 66, 65, 77, 67, 65, // Q8BAf8EBAMCA + 89, 89, 119, 68, 119, 89, 68, 86, 82, 48, 84, 65, // YYwDwYDVR0TA + 81, 72, 47, 66, 65, 85, 119, 65, 119, 69, 66, 47, // QH/BAUwAwEB/ + 122, 65, 100, 66, 103, 78, 86, 72, 81, 52, 69, 70, // zAdBgNVHQ4EF + 103, 81, 85, 65, 57, 53, 81, 78, 86, 98, 82, 10, // gQUA95QNVbR. + 84, 76, 116, 109, 56, 75, 80, 105, 71, 120, 118, 68, // TLtm8KPiGxvD + 108, 55, 73, 57, 48, 86, 85, 119, 72, 119, 89, 68, // l7I90VUwHwYD + 86, 82, 48, 106, 66, 66, 103, 119, 70, 111, 65, 85, // VR0jBBgwFoAU + 65, 57, 53, 81, 78, 86, 98, 82, 84, 76, 116, 109, // A95QNVbRTLtm + 56, 75, 80, 105, 71, 120, 118, 68, 108, 55, 73, 57, // 8KPiGxvDl7I9 + 48, 86, 85, 119, 10, 68, 81, 89, 74, 75, 111, 90, // 0VUw.DQYJKoZ + 73, 104, 118, 99, 78, 65, 81, 69, 70, 66, 81, 65, // IhvcNAQEFBQA + 68, 103, 103, 69, 66, 65, 77, 117, 99, 78, 54, 112, // DggEBAMucN6p + 73, 69, 120, 73, 75, 43, 116, 49, 69, 110, 69, 57, // IExIK+t1EnE9 + 83, 115, 80, 84, 102, 114, 103, 84, 49, 101, 88, 107, // SsPTfrgT1eXk + 73, 111, 121, 81, 89, 47, 69, 115, 114, 10, 104, 77, // IoyQY/Esr.hM + 65, 116, 117, 100, 88, 72, 47, 118, 84, 66, 72, 49, // AtudXH/vTBH1 + 106, 76, 117, 71, 50, 99, 101, 110, 84, 110, 109, 67, // jLuG2cenTnmC + 109, 114, 69, 98, 88, 106, 99, 75, 67, 104, 122, 85, // mrEbXjcKChzU + 121, 73, 109, 90, 79, 77, 107, 88, 68, 105, 113, 119, // yImZOMkXDiqw + 56, 99, 118, 112, 79, 112, 47, 50, 80, 86, 53, 65, // 8cvpOp/2PV5A + 100, 103, 10, 48, 54, 79, 47, 110, 86, 115, 74, 56, // dg.06O/nVsJ8 + 100, 87, 79, 52, 49, 80, 48, 106, 109, 80, 54, 80, // dWO41P0jmP6P + 54, 102, 98, 116, 71, 98, 102, 89, 109, 98, 87, 48, // 6fbtGbfYmbW0 + 87, 53, 66, 106, 102, 73, 116, 116, 101, 112, 51, 83, // W5BjfIttep3S + 112, 43, 100, 87, 79, 73, 114, 87, 99, 66, 65, 73, // p+dWOIrWcBAI + 43, 48, 116, 75, 73, 74, 70, 10, 80, 110, 108, 85, // +0tKIJF.PnlU + 107, 105, 97, 89, 52, 73, 66, 73, 113, 68, 102, 118, // kiaY4IBIqDfv + 56, 78, 90, 53, 89, 66, 98, 101, 114, 79, 103, 79, // 8NZ5YBberOgO + 122, 87, 54, 115, 82, 66, 99, 52, 76, 48, 110, 97, // zW6sRBc4L0na + 52, 85, 85, 43, 75, 114, 107, 50, 85, 56, 56, 54, // 4UU+Krk2U886 + 85, 65, 98, 51, 76, 117, 106, 69, 86, 48, 108, 115, // UAb3LujEV0ls + 10, 89, 83, 69, 89, 49, 81, 83, 116, 101, 68, 119, // .YSEY1QSteDw + 115, 79, 111, 66, 114, 112, 43, 117, 118, 70, 82, 84, // sOoBrp+uvFRT + 112, 50, 73, 110, 66, 117, 84, 104, 115, 52, 112, 70, // p2InBuThs4pF + 115, 105, 118, 57, 107, 117, 88, 99, 108, 86, 122, 68, // siv9kuXclVzD + 65, 71, 121, 83, 106, 52, 100, 122, 112, 51, 48, 100, // AGySj4dzp30d + 56, 116, 98, 81, 107, 10, 67, 65, 85, 119, 55, 67, // 8tbQk.CAUw7C + 50, 57, 67, 55, 57, 70, 118, 49, 67, 53, 113, 102, // 29C79Fv1C5qf + 80, 114, 109, 65, 69, 83, 114, 99, 105, 73, 120, 112, // PrmAESrciIxp + 103, 48, 88, 52, 48, 75, 80, 77, 98, 112, 49, 90, // g0X40KPMbp1Z + 87, 86, 98, 100, 52, 61, 10, 45, 45, 45, 45, 45, // WVbd4=.----- + 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, // END CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 35, 32, // ATE-----..# + 42, 46, 97, 122, 117, 114, 101, 45, 100, 101, 118, 105, // *.azure-devi + 99, 101, 115, 46, 100, 101, 32, 117, 115, 101, 32, 116, // ces.de use t + 104, 105, 115, 32, 114, 111, 111, 116, 46, 10, 83, 117, // his root..Su + 98, 106, 101, 99, 116, 58, 32, 67, 32, 61, 32, 68, // bject: C = D + 69, 44, 32, 79, 32, 61, 32, 68, 45, 84, 114, 117, // E, O = D-Tru + 115, 116, 32, 71, 109, 98, 72, 44, 32, 67, 78, 32, // st GmbH, CN + 61, 32, 68, 45, 84, 82, 85, 83, 84, 32, 82, 111, // = D-TRUST Ro + 111, 116, 32, 67, 108, 97, 115, 115, 32, 51, 32, 67, // ot Class 3 C + 65, 32, 50, 32, 50, 48, 48, 57, 10, 78, 111, 116, // A 2 2009.Not + 32, 66, 101, 102, 111, 114, 101, 58, 32, 78, 111, 118, // Before: Nov + 32, 32, 53, 32, 48, 56, 58, 51, 53, 58, 53, 56, // 5 08:35:58 + 32, 50, 48, 48, 57, 32, 71, 77, 84, 10, 78, 111, // 2009 GMT.No + 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 78, 111, // t After : No + 118, 32, 32, 53, 32, 48, 56, 58, 51, 53, 58, 53, // v 5 08:35:5 + 56, 32, 50, 48, 50, 57, 32, 71, 77, 84, 10, 45, // 8 2029 GMT.- + 45, 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, 69, // ----BEGIN CE + 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, // RTIFICATE--- + 45, 45, 10, 77, 73, 73, 69, 77, 122, 67, 67, 65, // --.MIIEMzCCA + 120, 117, 103, 65, 119, 73, 66, 65, 103, 73, 68, 67, // xugAwIBAgIDC + 89, 80, 122, 77, 65, 48, 71, 67, 83, 113, 71, 83, // YPzMA0GCSqGS + 73, 98, 51, 68, 81, 69, 66, 67, 119, 85, 65, 77, // Ib3DQEBCwUAM + 69, 48, 120, 67, 122, 65, 74, 66, 103, 78, 86, 66, // E0xCzAJBgNVB + 65, 89, 84, 65, 107, 82, 70, 10, 77, 82, 85, 119, // AYTAkRF.MRUw + 69, 119, 89, 68, 86, 81, 81, 75, 68, 65, 120, 69, // EwYDVQQKDAxE + 76, 86, 82, 121, 100, 88, 78, 48, 73, 69, 100, 116, // LVRydXN0IEdt + 89, 107, 103, 120, 74, 122, 65, 108, 66, 103, 78, 86, // YkgxJzAlBgNV + 66, 65, 77, 77, 72, 107, 81, 116, 86, 70, 74, 86, // BAMMHkQtVFJV + 85, 49, 81, 103, 85, 109, 57, 118, 100, 67, 66, 68, // U1QgUm9vdCBD + 10, 98, 71, 70, 122, 99, 121, 65, 122, 73, 69, 78, // .bGFzcyAzIEN + 66, 73, 68, 73, 103, 77, 106, 65, 119, 79, 84, 65, // BIDIgMjAwOTA + 101, 70, 119, 48, 119, 79, 84, 69, 120, 77, 68, 85, // eFw0wOTExMDU + 119, 79, 68, 77, 49, 78, 84, 104, 97, 70, 119, 48, // wODM1NThaFw0 + 121, 79, 84, 69, 120, 77, 68, 85, 119, 79, 68, 77, // yOTExMDUwODM + 49, 78, 84, 104, 97, 10, 77, 69, 48, 120, 67, 122, // 1NTha.ME0xCz + 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, 65, 107, // AJBgNVBAYTAk + 82, 70, 77, 82, 85, 119, 69, 119, 89, 68, 86, 81, // RFMRUwEwYDVQ + 81, 75, 68, 65, 120, 69, 76, 86, 82, 121, 100, 88, // QKDAxELVRydX + 78, 48, 73, 69, 100, 116, 89, 107, 103, 120, 74, 122, // N0IEdtYkgxJz + 65, 108, 66, 103, 78, 86, 66, 65, 77, 77, 10, 72, // AlBgNVBAMM.H + 107, 81, 116, 86, 70, 74, 86, 85, 49, 81, 103, 85, // kQtVFJVU1QgU + 109, 57, 118, 100, 67, 66, 68, 98, 71, 70, 122, 99, // m9vdCBDbGFzc + 121, 65, 122, 73, 69, 78, 66, 73, 68, 73, 103, 77, // yAzIENBIDIgM + 106, 65, 119, 79, 84, 67, 67, 65, 83, 73, 119, 68, // jAwOTCCASIwD + 81, 89, 74, 75, 111, 90, 73, 104, 118, 99, 78, 65, // QYJKoZIhvcNA + 81, 69, 66, 10, 66, 81, 65, 68, 103, 103, 69, 80, // QEB.BQADggEP + 65, 68, 67, 67, 65, 81, 111, 67, 103, 103, 69, 66, // ADCCAQoCggEB + 65, 78, 79, 121, 83, 115, 57, 54, 82, 43, 57, 49, // ANOySs96R+91 + 109, 121, 80, 54, 79, 105, 47, 87, 85, 69, 87, 74, // myP6Oi/WUEWJ + 78, 84, 114, 71, 97, 57, 118, 43, 50, 119, 66, 111, // NTrGa9v+2wBo + 113, 79, 65, 68, 69, 82, 48, 51, 10, 85, 65, 105, // qOADER03.UAi + 102, 84, 85, 112, 111, 108, 68, 87, 122, 85, 57, 71, // fTUpolDWzU9G + 85, 89, 54, 99, 103, 86, 113, 47, 101, 85, 88, 106, // UY6cgVq/eUXj + 115, 75, 106, 51, 122, 83, 69, 104, 81, 80, 103, 114, // sKj3zSEhQPgr + 102, 82, 108, 87, 76, 74, 50, 51, 68, 69, 69, 48, // fRlWLJ23DEE0 + 78, 107, 86, 74, 68, 50, 73, 102, 103, 88, 85, 52, // NkVJD2IfgXU4 + 50, 10, 116, 83, 72, 75, 88, 122, 108, 65, 66, 70, // 2.tSHKXzlABF + 57, 98, 102, 115, 121, 106, 120, 105, 117, 112, 81, 66, // 9bfsyjxiupQB + 55, 90, 78, 111, 84, 87, 83, 80, 79, 83, 72, 106, // 7ZNoTWSPOSHj + 82, 71, 73, 67, 84, 66, 112, 70, 71, 79, 83, 104, // RGICTBpFGOSh + 114, 118, 85, 68, 57, 112, 88, 82, 108, 47, 82, 99, // rvUD9pXRl/Rc + 80, 72, 65, 89, 57, 82, 10, 121, 83, 80, 111, 99, // PHAY9R.ySPoc + 113, 54, 48, 118, 70, 89, 74, 102, 120, 76, 76, 72, // q60vFYJfxLLH + 76, 71, 118, 75, 90, 65, 75, 121, 86, 88, 77, 68, // LGvKZAKyVXMD + 57, 79, 48, 71, 117, 49, 72, 78, 86, 112, 75, 55, // 9O0Gu1HNVpK7 + 90, 120, 122, 66, 67, 72, 81, 113, 114, 48, 77, 69, // ZxzBCHQqr0ME + 55, 85, 65, 121, 105, 90, 115, 120, 71, 115, 77, 10, // 7UAyiZsxGsM. + 108, 70, 113, 86, 108, 78, 112, 81, 109, 118, 72, 47, // lFqVlNpQmvH/ + 112, 83, 116, 109, 77, 97, 84, 74, 79, 75, 68, 102, // pStmMaTJOKDf + 72, 82, 43, 52, 67, 83, 55, 122, 112, 43, 104, 110, // HR+4CS7zp+hn + 85, 113, 117, 86, 72, 43, 66, 71, 80, 116, 105, 107, // UquVH+BGPtik + 119, 56, 112, 97, 120, 84, 71, 65, 54, 69, 105, 97, // w8paxTGA6Eia + 110, 53, 82, 112, 10, 47, 104, 110, 100, 50, 72, 78, // n5Rp./hnd2HN + 56, 103, 99, 113, 87, 51, 111, 55, 116, 115, 122, 73, // 8gcqW3o7tszI + 70, 90, 89, 81, 48, 53, 117, 98, 57, 86, 120, 67, // FZYQ05ub9VxC + 49, 88, 51, 97, 47, 76, 55, 65, 81, 68, 99, 85, // 1X3a/L7AQDcU + 67, 65, 119, 69, 65, 65, 97, 79, 67, 65, 82, 111, // CAwEAAaOCARo + 119, 103, 103, 69, 87, 77, 65, 56, 71, 10, 65, 49, // wggEWMA8G.A1 + 85, 100, 69, 119, 69, 66, 47, 119, 81, 70, 77, 65, // UdEwEB/wQFMA + 77, 66, 65, 102, 56, 119, 72, 81, 89, 68, 86, 82, // MBAf8wHQYDVR + 48, 79, 66, 66, 89, 69, 70, 80, 51, 97, 70, 77, // 0OBBYEFP3aFM + 83, 102, 77, 78, 52, 104, 118, 82, 53, 67, 79, 102, // SfMN4hvR5COf + 121, 114, 89, 121, 78, 74, 52, 80, 71, 69, 77, 65, // yrYyNJ4PGEMA + 52, 71, 10, 65, 49, 85, 100, 68, 119, 69, 66, 47, // 4G.A1UdDwEB/ + 119, 81, 69, 65, 119, 73, 66, 66, 106, 67, 66, 48, // wQEAwIBBjCB0 + 119, 89, 68, 86, 82, 48, 102, 66, 73, 72, 76, 77, // wYDVR0fBIHLM + 73, 72, 73, 77, 73, 71, 65, 111, 72, 54, 103, 102, // IHIMIGAoH6gf + 73, 90, 54, 98, 71, 82, 104, 99, 68, 111, 118, 76, // IZ6bGRhcDovL + 50, 82, 112, 99, 109, 86, 106, 10, 100, 71, 57, 121, // 2RpcmVj.dG9y + 101, 83, 53, 107, 76, 88, 82, 121, 100, 88, 78, 48, // eS5kLXRydXN0 + 76, 109, 53, 108, 100, 67, 57, 68, 84, 106, 49, 69, // Lm5ldC9DTj1E + 76, 86, 82, 83, 86, 86, 78, 85, 74, 84, 73, 119, // LVRSVVNUJTIw + 85, 109, 57, 118, 100, 67, 85, 121, 77, 69, 78, 115, // Um9vdCUyMENs + 89, 88, 78, 122, 74, 84, 73, 119, 77, 121, 85, 121, // YXNzJTIwMyUy + 10, 77, 69, 78, 66, 74, 84, 73, 119, 77, 105, 85, // .MENBJTIwMiU + 121, 77, 68, 73, 119, 77, 68, 107, 115, 84, 122, 49, // yMDIwMDksTz1 + 69, 76, 86, 82, 121, 100, 88, 78, 48, 74, 84, 73, // ELVRydXN0JTI + 119, 82, 50, 49, 105, 83, 67, 120, 68, 80, 85, 82, // wR21iSCxDPUR + 70, 80, 50, 78, 108, 99, 110, 82, 112, 90, 109, 108, // FP2NlcnRpZml + 106, 89, 88, 82, 108, 10, 99, 109, 86, 50, 98, 50, // jYXRl.cmV2b2 + 78, 104, 100, 71, 108, 118, 98, 109, 120, 112, 99, 51, // NhdGlvbmxpc3 + 81, 119, 81, 54, 66, 66, 111, 68, 43, 71, 80, 87, // QwQ6BBoD+GPW + 104, 48, 100, 72, 65, 54, 76, 121, 57, 51, 100, 51, // h0dHA6Ly93d3 + 99, 117, 90, 67, 49, 48, 99, 110, 86, 122, 100, 67, // cuZC10cnVzdC + 53, 117, 90, 88, 81, 118, 89, 51, 74, 115, 10, 76, // 5uZXQvY3Js.L + 50, 81, 116, 100, 72, 74, 49, 99, 51, 82, 102, 99, // 2QtdHJ1c3Rfc + 109, 57, 118, 100, 70, 57, 106, 98, 71, 70, 122, 99, // m9vdF9jbGFzc + 49, 56, 122, 88, 50, 78, 104, 88, 122, 74, 102, 77, // 18zX2NhXzJfM + 106, 65, 119, 79, 83, 53, 106, 99, 109, 119, 119, 68, // jAwOS5jcmwwD + 81, 89, 74, 75, 111, 90, 73, 104, 118, 99, 78, 65, // QYJKoZIhvcNA + 81, 69, 76, 10, 66, 81, 65, 68, 103, 103, 69, 66, // QEL.BQADggEB + 65, 72, 43, 88, 50, 122, 68, 73, 51, 54, 83, 99, // AH+X2zDI36Sc + 102, 83, 70, 54, 103, 72, 68, 79, 70, 66, 74, 112, // fSF6gHDOFBJp + 105, 66, 83, 86, 89, 69, 81, 66, 114, 76, 76, 112, // iBSVYEQBrLLp + 77, 69, 43, 98, 85, 77, 74, 109, 50, 72, 54, 78, // ME+bUMJm2H6N + 77, 76, 86, 119, 77, 101, 110, 105, 10, 97, 99, 102, // MLVwMeni.acf + 122, 99, 78, 115, 103, 70, 89, 98, 81, 68, 102, 67, // zcNsgFYbQDfC + 43, 114, 65, 70, 49, 104, 77, 53, 43, 110, 48, 50, // +rAF1hM5+n02 + 47, 116, 50, 65, 55, 110, 80, 80, 75, 72, 101, 74, // /t2A7nPPKHeJ + 101, 97, 78, 105, 106, 110, 90, 102, 108, 81, 71, 68, // eaNijnZflQGD + 83, 78, 105, 72, 43, 48, 76, 83, 52, 70, 57, 112, // SNiH+0LS4F9p + 48, 10, 111, 51, 47, 85, 51, 55, 67, 89, 65, 113, // 0.o3/U37CYAq + 120, 118, 97, 50, 115, 115, 74, 83, 82, 121, 111, 87, // xva2ssJSRyoW + 88, 117, 74, 86, 114, 108, 53, 106, 76, 110, 56, 116, // XuJVrl5jLn8t + 43, 114, 83, 102, 114, 122, 107, 71, 107, 106, 50, 119, // +rSfrzkGkj2w + 84, 90, 53, 49, 120, 89, 47, 71, 88, 85, 108, 55, // TZ51xY/GXUl7 + 55, 77, 47, 67, 52, 75, 10, 122, 67, 85, 113, 78, // 7M/C4K.zCUqN + 81, 84, 52, 89, 74, 69, 86, 100, 84, 49, 66, 47, // QT4YJEVdT1B/ + 121, 77, 102, 71, 99, 104, 115, 54, 52, 74, 84, 66, // yMfGchs64JTB + 75, 98, 107, 84, 67, 74, 78, 106, 89, 121, 54, 122, // KbkTCJNjYy6z + 108, 116, 122, 55, 71, 82, 85, 85, 71, 51, 82, 110, // ltz7GRUUG3Rn + 70, 88, 55, 97, 99, 77, 50, 119, 52, 121, 56, 10, // FX7acM2w4y8. + 80, 73, 87, 109, 97, 119, 111, 109, 68, 101, 67, 84, // PIWmawomDeCT + 109, 71, 67, 117, 102, 115, 89, 107, 108, 52, 112, 104, // mGCufsYkl4ph + 88, 53, 71, 79, 90, 112, 73, 74, 104, 122, 98, 78, // X5GOZpIJhzbN + 105, 53, 115, 116, 80, 118, 90, 82, 49, 70, 68, 85, // i5stPvZR1FDU + 87, 83, 105, 57, 103, 47, 76, 77, 75, 72, 116, 84, // WSi9g/LMKHtT + 104, 109, 51, 89, 10, 74, 111, 104, 119, 49, 43, 113, // hm3Y.Johw1+q + 82, 122, 84, 54, 53, 121, 115, 67, 81, 98, 108, 114, // RzT65ysCQblr + 71, 88, 110, 82, 108, 49, 49, 122, 43, 111, 43, 73, // GXnRl11z+o+I + 61, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, 67, // =.-----END C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 10, 35, 32, 104, 116, 116, 112, 115, // ---..# https + 58, 47, 47, 119, 119, 119, 46, 97, 109, 97, 122, 111, // ://www.amazo + 110, 116, 114, 117, 115, 116, 46, 99, 111, 109, 47, 114, // ntrust.com/r + 101, 112, 111, 115, 105, 116, 111, 114, 121, 47, 10, 83, // epository/.S + 117, 98, 106, 101, 99, 116, 58, 32, 67, 32, 61, 32, // ubject: C = + 85, 83, 44, 32, 79, 32, 61, 32, 65, 109, 97, 122, // US, O = Amaz + 111, 110, 44, 32, 67, 78, 32, 61, 32, 65, 109, 97, // on, CN = Ama + 122, 111, 110, 32, 82, 111, 111, 116, 32, 67, 65, 32, // zon Root CA + 49, 10, 78, 111, 116, 32, 66, 101, 102, 111, 114, 101, // 1.Not Before + 58, 32, 77, 97, 121, 32, 50, 54, 32, 48, 48, 58, // : May 26 00: + 48, 48, 58, 48, 48, 32, 50, 48, 49, 53, 32, 71, // 00:00 2015 G + 77, 84, 10, 78, 111, 116, 32, 65, 102, 116, 101, 114, // MT.Not After + 32, 58, 32, 74, 97, 110, 32, 49, 55, 32, 48, 48, // : Jan 17 00 + 58, 48, 48, 58, 48, 48, 32, 50, 48, 51, 56, 32, // :00:00 2038 + 71, 77, 84, 10, 45, 45, 45, 45, 45, 66, 69, 71, // GMT.-----BEG + 73, 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, // IN CERTIFICA + 84, 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 68, // TE-----.MIID + 81, 84, 67, 67, 65, 105, 109, 103, 65, 119, 73, 66, // QTCCAimgAwIB + 65, 103, 73, 84, 66, 109, 121, 102, 122, 53, 109, 47, // AgITBmyfz5m/ + 106, 65, 111, 53, 52, 118, 66, 52, 105, 107, 80, 109, // jAo54vB4ikPm + 108, 106, 90, 98, 121, 106, 65, 78, 66, 103, 107, 113, // ljZbyjANBgkq + 104, 107, 105, 71, 57, 119, 48, 66, 65, 81, 115, 70, // hkiG9w0BAQsF + 10, 65, 68, 65, 53, 77, 81, 115, 119, 67, 81, 89, // .ADA5MQswCQY + 68, 86, 81, 81, 71, 69, 119, 74, 86, 85, 122, 69, // DVQQGEwJVUzE + 80, 77, 65, 48, 71, 65, 49, 85, 69, 67, 104, 77, // PMA0GA1UEChM + 71, 81, 87, 49, 104, 101, 109, 57, 117, 77, 82, 107, // GQW1hem9uMRk + 119, 70, 119, 89, 68, 86, 81, 81, 68, 69, 120, 66, // wFwYDVQQDExB + 66, 98, 87, 70, 54, 10, 98, 50, 52, 103, 85, 109, // BbWF6.b24gUm + 57, 118, 100, 67, 66, 68, 81, 83, 65, 120, 77, 66, // 9vdCBDQSAxMB + 52, 88, 68, 84, 69, 49, 77, 68, 85, 121, 78, 106, // 4XDTE1MDUyNj + 65, 119, 77, 68, 65, 119, 77, 70, 111, 88, 68, 84, // AwMDAwMFoXDT + 77, 52, 77, 68, 69, 120, 78, 122, 65, 119, 77, 68, // M4MDExNzAwMD + 65, 119, 77, 70, 111, 119, 79, 84, 69, 76, 10, 77, // AwMFowOTEL.M + 65, 107, 71, 65, 49, 85, 69, 66, 104, 77, 67, 86, // AkGA1UEBhMCV + 86, 77, 120, 68, 122, 65, 78, 66, 103, 78, 86, 66, // VMxDzANBgNVB + 65, 111, 84, 66, 107, 70, 116, 89, 88, 112, 118, 98, // AoTBkFtYXpvb + 106, 69, 90, 77, 66, 99, 71, 65, 49, 85, 69, 65, // jEZMBcGA1UEA + 120, 77, 81, 81, 87, 49, 104, 101, 109, 57, 117, 73, // xMQQW1hem9uI + 70, 74, 118, 10, 98, 51, 81, 103, 81, 48, 69, 103, // FJv.b3QgQ0Eg + 77, 84, 67, 67, 65, 83, 73, 119, 68, 81, 89, 74, // MTCCASIwDQYJ + 75, 111, 90, 73, 104, 118, 99, 78, 65, 81, 69, 66, // KoZIhvcNAQEB + 66, 81, 65, 68, 103, 103, 69, 80, 65, 68, 67, 67, // BQADggEPADCC + 65, 81, 111, 67, 103, 103, 69, 66, 65, 76, 74, 52, // AQoCggEBALJ4 + 103, 72, 72, 75, 101, 78, 88, 106, 10, 99, 97, 57, // gHHKeNXj.ca9 + 72, 103, 70, 66, 48, 102, 87, 55, 89, 49, 52, 104, // HgFB0fW7Y14h + 50, 57, 74, 108, 111, 57, 49, 103, 104, 89, 80, 108, // 29Jlo91ghYPl + 48, 104, 65, 69, 118, 114, 65, 73, 116, 104, 116, 79, // 0hAEvrAIthtO + 103, 81, 51, 112, 79, 115, 113, 84, 81, 78, 114, 111, // gQ3pOsqTQNro + 66, 118, 111, 51, 98, 83, 77, 103, 72, 70, 122, 90, // Bvo3bSMgHFzZ + 77, 10, 57, 79, 54, 73, 73, 56, 99, 43, 54, 122, // M.9O6II8c+6z + 102, 49, 116, 82, 110, 52, 83, 87, 105, 119, 51, 116, // f1tRn4SWiw3t + 101, 53, 100, 106, 103, 100, 89, 90, 54, 107, 47, 111, // e5djgdYZ6k/o + 73, 50, 112, 101, 86, 75, 86, 117, 82, 70, 52, 102, // I2peVKVuRF4f + 110, 57, 116, 66, 98, 54, 100, 78, 113, 99, 109, 122, // n9tBb6dNqcmz + 85, 53, 76, 47, 113, 119, 10, 73, 70, 65, 71, 98, // U5L/qw.IFAGb + 72, 114, 81, 103, 76, 75, 109, 43, 97, 47, 115, 82, // HrQgLKm+a/sR + 120, 109, 80, 85, 68, 103, 72, 51, 75, 75, 72, 79, // xmPUDgH3KKHO + 86, 106, 52, 117, 116, 87, 112, 43, 85, 104, 110, 77, // Vj4utWp+UhnM + 74, 98, 117, 108, 72, 104, 101, 98, 52, 109, 106, 85, // JbulHheb4mjU + 99, 65, 119, 104, 109, 97, 104, 82, 87, 97, 54, 10, // cAwhmahRWa6. + 86, 79, 117, 106, 119, 53, 72, 53, 83, 78, 122, 47, // VOujw5H5SNz/ + 48, 101, 103, 119, 76, 88, 48, 116, 100, 72, 65, 49, // 0egwLX0tdHA1 + 49, 52, 103, 107, 57, 53, 55, 69, 87, 87, 54, 55, // 14gk957EWW67 + 99, 52, 99, 88, 56, 106, 74, 71, 75, 76, 104, 68, // c4cX8jJGKLhD + 43, 114, 99, 100, 113, 115, 113, 48, 56, 112, 56, 107, // +rcdqsq08p8k + 68, 105, 49, 76, 10, 57, 51, 70, 99, 88, 109, 110, // Di1L.93FcXmn + 47, 54, 112, 85, 67, 121, 122, 105, 75, 114, 108, 65, // /6pUCyziKrlA + 52, 98, 57, 118, 55, 76, 87, 73, 98, 120, 99, 99, // 4b9v7LWIbxcc + 101, 86, 79, 70, 51, 52, 71, 102, 73, 68, 53, 121, // eVOF34GfID5y + 72, 73, 57, 89, 47, 81, 67, 66, 47, 73, 73, 68, // HI9Y/QCB/IID + 69, 103, 69, 119, 43, 79, 121, 81, 109, 10, 106, 103, // EgEw+OyQm.jg + 83, 117, 98, 74, 114, 73, 113, 103, 48, 67, 65, 119, // SubJrIqg0CAw + 69, 65, 65, 97, 78, 67, 77, 69, 65, 119, 68, 119, // EAAaNCMEAwDw + 89, 68, 86, 82, 48, 84, 65, 81, 72, 47, 66, 65, // YDVR0TAQH/BA + 85, 119, 65, 119, 69, 66, 47, 122, 65, 79, 66, 103, // UwAwEB/zAOBg + 78, 86, 72, 81, 56, 66, 65, 102, 56, 69, 66, 65, // NVHQ8BAf8EBA + 77, 67, 10, 65, 89, 89, 119, 72, 81, 89, 68, 86, // MC.AYYwHQYDV + 82, 48, 79, 66, 66, 89, 69, 70, 73, 81, 89, 122, // R0OBBYEFIQYz + 73, 85, 48, 55, 76, 119, 77, 108, 74, 81, 117, 67, // IU07LwMlJQuC + 70, 109, 99, 120, 55, 73, 81, 84, 103, 111, 73, 77, // Fmcx7IQTgoIM + 65, 48, 71, 67, 83, 113, 71, 83, 73, 98, 51, 68, // A0GCSqGSIb3D + 81, 69, 66, 67, 119, 85, 65, 10, 65, 52, 73, 66, // QEBCwUA.A4IB + 65, 81, 67, 89, 56, 106, 100, 97, 81, 90, 67, 104, // AQCY8jdaQZCh + 71, 115, 86, 50, 85, 83, 103, 103, 78, 105, 77, 79, // GsV2USggNiMO + 114, 117, 89, 111, 117, 54, 114, 52, 108, 75, 53, 73, // ruYou6r4lK5I + 112, 68, 66, 47, 71, 47, 119, 107, 106, 85, 117, 48, // pDB/G/wkjUu0 + 121, 75, 71, 88, 57, 114, 98, 120, 101, 110, 68, 73, // yKGX9rbxenDI + 10, 85, 53, 80, 77, 67, 67, 106, 106, 109, 67, 88, // .U5PMCCjjmCX + 80, 73, 54, 84, 53, 51, 105, 72, 84, 102, 73, 85, // PI6T53iHTfIU + 74, 114, 85, 54, 97, 100, 84, 114, 67, 67, 50, 113, // JrU6adTrCC2q + 74, 101, 72, 90, 69, 82, 120, 104, 108, 98, 73, 49, // JeHZERxhlbI1 + 66, 106, 106, 116, 47, 109, 115, 118, 48, 116, 97, 100, // Bjjt/msv0tad + 81, 49, 119, 85, 115, 10, 78, 43, 103, 68, 83, 54, // Q1wUs.N+gDS6 + 51, 112, 89, 97, 65, 67, 98, 118, 88, 121, 56, 77, // 3pYaACbvXy8M + 87, 121, 55, 86, 117, 51, 51, 80, 113, 85, 88, 72, // Wy7Vu33PqUXH + 101, 101, 69, 54, 86, 47, 85, 113, 50, 86, 56, 118, // eeE6V/Uq2V8v + 105, 84, 79, 57, 54, 76, 88, 70, 118, 75, 87, 108, // iTO96LXFvKWl + 74, 98, 89, 75, 56, 85, 57, 48, 118, 118, 10, 111, // JbYK8U90vv.o + 47, 117, 102, 81, 74, 86, 116, 77, 86, 84, 56, 81, // /ufQJVtMVT8Q + 116, 80, 72, 82, 104, 56, 106, 114, 100, 107, 80, 83, // tPHRh8jrdkPS + 72, 67, 97, 50, 88, 86, 52, 99, 100, 70, 121, 81, // HCa2XV4cdFyQ + 122, 82, 49, 98, 108, 100, 90, 119, 103, 74, 99, 74, // zR1bldZwgJcJ + 109, 65, 112, 122, 121, 77, 90, 70, 111, 54, 73, 81, // mApzyMZFo6IQ + 54, 88, 85, 10, 53, 77, 115, 73, 43, 121, 77, 82, // 6XU.5MsI+yMR + 81, 43, 104, 68, 75, 88, 74, 105, 111, 97, 108, 100, // Q+hDKXJioald + 88, 103, 106, 85, 107, 75, 54, 52, 50, 77, 52, 85, // XgjUkK642M4U + 119, 116, 66, 86, 56, 111, 98, 50, 120, 74, 78, 68, // wtBV8ob2xJND + 100, 50, 90, 104, 119, 76, 110, 111, 81, 100, 101, 88, // d2ZhwLnoQdeX + 101, 71, 65, 68, 98, 107, 112, 121, 10, 114, 113, 88, // eGADbkpy.rqX + 82, 102, 98, 111, 81, 110, 111, 90, 115, 71, 52, 113, // RfboQnoZsG4q + 53, 87, 84, 80, 52, 54, 56, 83, 81, 118, 118, 71, // 5WTP468SQvvG + 53, 10, 45, 45, 45, 45, 45, 69, 78, 68, 32, 67, // 5.-----END C + 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, // ERTIFICATE-- + 45, 45, 45, 10, 10, 83, 117, 98, 106, 101, 99, 116, // ---..Subject + 58, 32, 67, 32, 61, 32, 85, 83, 44, 32, 79, 32, // : C = US, O + 61, 32, 65, 109, 97, 122, 111, 110, 44, 32, 67, 78, // = Amazon, CN + 32, 61, 32, 65, 109, 97, 122, 111, 110, 32, 82, 111, // = Amazon Ro + 111, 116, 32, 67, 65, 32, 50, 10, 78, 111, 116, 32, // ot CA 2.Not + 66, 101, 102, 111, 114, 101, 58, 32, 77, 97, 121, 32, // Before: May + 50, 54, 32, 48, 48, 58, 48, 48, 58, 48, 48, 32, // 26 00:00:00 + 50, 48, 49, 53, 32, 71, 77, 84, 10, 78, 111, 116, // 2015 GMT.Not + 32, 65, 102, 116, 101, 114, 32, 58, 32, 77, 97, 121, // After : May + 32, 50, 54, 32, 48, 48, 58, 48, 48, 58, 48, 48, // 26 00:00:00 + 32, 50, 48, 52, 48, 32, 71, 77, 84, 10, 45, 45, // 2040 GMT.-- + 45, 45, 45, 66, 69, 71, 73, 78, 32, 67, 69, 82, // ---BEGIN CER + 84, 73, 70, 73, 67, 65, 84, 69, 45, 45, 45, 45, // TIFICATE---- + 45, 10, 77, 73, 73, 70, 81, 84, 67, 67, 65, 121, // -.MIIFQTCCAy + 109, 103, 65, 119, 73, 66, 65, 103, 73, 84, 66, 109, // mgAwIBAgITBm + 121, 102, 48, 112, 89, 49, 104, 112, 56, 75, 68, 43, // yf0pY1hp8KD+ + 87, 71, 101, 80, 104, 98, 74, 114, 117, 75, 78, 122, // WGePhbJruKNz + 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, 57, 119, // ANBgkqhkiG9w + 48, 66, 65, 81, 119, 70, 10, 65, 68, 65, 53, 77, // 0BAQwF.ADA5M + 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, 69, // QswCQYDVQQGE + 119, 74, 86, 85, 122, 69, 80, 77, 65, 48, 71, 65, // wJVUzEPMA0GA + 49, 85, 69, 67, 104, 77, 71, 81, 87, 49, 104, 101, // 1UEChMGQW1he + 109, 57, 117, 77, 82, 107, 119, 70, 119, 89, 68, 86, // m9uMRkwFwYDV + 81, 81, 68, 69, 120, 66, 66, 98, 87, 70, 54, 10, // QQDExBBbWF6. + 98, 50, 52, 103, 85, 109, 57, 118, 100, 67, 66, 68, // b24gUm9vdCBD + 81, 83, 65, 121, 77, 66, 52, 88, 68, 84, 69, 49, // QSAyMB4XDTE1 + 77, 68, 85, 121, 78, 106, 65, 119, 77, 68, 65, 119, // MDUyNjAwMDAw + 77, 70, 111, 88, 68, 84, 81, 119, 77, 68, 85, 121, // MFoXDTQwMDUy + 78, 106, 65, 119, 77, 68, 65, 119, 77, 70, 111, 119, // NjAwMDAwMFow + 79, 84, 69, 76, 10, 77, 65, 107, 71, 65, 49, 85, // OTEL.MAkGA1U + 69, 66, 104, 77, 67, 86, 86, 77, 120, 68, 122, 65, // EBhMCVVMxDzA + 78, 66, 103, 78, 86, 66, 65, 111, 84, 66, 107, 70, // NBgNVBAoTBkF + 116, 89, 88, 112, 118, 98, 106, 69, 90, 77, 66, 99, // tYXpvbjEZMBc + 71, 65, 49, 85, 69, 65, 120, 77, 81, 81, 87, 49, // GA1UEAxMQQW1 + 104, 101, 109, 57, 117, 73, 70, 74, 118, 10, 98, 51, // hem9uIFJv.b3 + 81, 103, 81, 48, 69, 103, 77, 106, 67, 67, 65, 105, // QgQ0EgMjCCAi + 73, 119, 68, 81, 89, 74, 75, 111, 90, 73, 104, 118, // IwDQYJKoZIhv + 99, 78, 65, 81, 69, 66, 66, 81, 65, 68, 103, 103, // cNAQEBBQADgg + 73, 80, 65, 68, 67, 67, 65, 103, 111, 67, 103, 103, // IPADCCAgoCgg + 73, 66, 65, 75, 50, 87, 110, 121, 50, 99, 83, 107, // IBAK2Wny2cSk + 120, 75, 10, 103, 88, 108, 82, 109, 101, 121, 75, 121, // xK.gXlRmeyKy + 50, 116, 103, 85, 82, 79, 56, 84, 87, 48, 71, 47, // 2tgURO8TW0G/ + 76, 65, 73, 106, 100, 48, 90, 69, 71, 114, 72, 74, // LAIjd0ZEGrHJ + 103, 119, 49, 50, 77, 66, 118, 73, 73, 84, 112, 108, // gw12MBvIITpl + 76, 71, 98, 104, 81, 80, 68, 87, 57, 116, 75, 54, // LGbhQPDW9tK6 + 77, 106, 52, 107, 72, 98, 90, 10, 87, 48, 47, 106, // Mj4kHbZ.W0/j + 84, 79, 103, 71, 78, 107, 51, 77, 109, 113, 119, 57, // TOgGNk3Mmqw9 + 68, 74, 65, 114, 107, 116, 81, 71, 71, 87, 67, 115, // DJArktQGGWCs + 78, 48, 82, 53, 104, 89, 71, 67, 114, 86, 111, 51, // N0R5hYGCrVo3 + 52, 65, 51, 77, 110, 97, 90, 77, 85, 110, 98, 113, // 4A3MnaZMUnbq + 81, 53, 50, 51, 66, 78, 70, 81, 57, 108, 88, 103, // Q523BNFQ9lXg + 10, 49, 100, 75, 109, 83, 89, 88, 112, 78, 43, 110, // .1dKmSYXpN+n + 75, 102, 113, 53, 99, 108, 85, 49, 73, 109, 106, 43, // Kfq5clU1Imj+ + 117, 73, 70, 112, 116, 105, 74, 88, 90, 78, 76, 104, // uIFptiJXZNLh + 83, 71, 107, 79, 81, 115, 76, 57, 115, 66, 98, 109, // SGkOQsL9sBbm + 50, 101, 76, 102, 113, 48, 79, 81, 54, 80, 66, 74, // 2eLfq0OQ6PBJ + 84, 89, 118, 57, 75, 10, 56, 110, 117, 43, 78, 81, // TYv9K.8nu+NQ + 87, 112, 69, 106, 84, 106, 56, 50, 82, 48, 89, 105, // WpEjTj82R0Yi + 119, 57, 65, 69, 108, 97, 75, 80, 52, 121, 82, 76, // w9AElaKP4yRL + 117, 72, 51, 87, 85, 110, 65, 110, 69, 55, 50, 107, // uH3WUnAnE72k + 114, 51, 72, 57, 114, 78, 57, 121, 70, 86, 107, 69, // r3H9rN9yFVkE + 56, 80, 55, 75, 54, 67, 52, 90, 57, 114, 10, 50, // 8P7K6C4Z9r.2 + 85, 88, 84, 117, 47, 66, 102, 104, 43, 48, 56, 76, // UXTu/Bfh+08L + 68, 109, 71, 50, 106, 47, 101, 55, 72, 74, 86, 54, // DmG2j/e7HJV6 + 51, 109, 106, 114, 100, 118, 100, 102, 76, 67, 54, 72, // 3mjrdvdfLC6H + 77, 55, 56, 51, 107, 56, 49, 100, 115, 56, 80, 43, // M783k81ds8P+ + 72, 103, 102, 97, 106, 90, 82, 82, 105, 100, 104, 87, // HgfajZRRidhW + 43, 109, 101, 10, 122, 47, 67, 105, 86, 88, 49, 56, // +me.z/CiVX18 + 74, 89, 112, 118, 76, 55, 84, 70, 122, 52, 81, 117, // JYpvL7TFz4Qu + 75, 47, 48, 78, 85, 82, 66, 115, 43, 49, 56, 98, // K/0NURBs+18b + 118, 66, 116, 43, 120, 97, 52, 55, 109, 65, 69, 120, // vBt+xa47mAEx + 107, 118, 56, 76, 86, 47, 83, 97, 115, 114, 108, 88, // kv8LV/SasrlX + 54, 97, 118, 118, 68, 88, 98, 82, 10, 56, 79, 55, // 6avvDXbR.8O7 + 48, 122, 111, 97, 110, 52, 71, 55, 112, 116, 71, 109, // 0zoan4G7ptGm + 104, 51, 50, 110, 50, 77, 56, 90, 112, 76, 112, 99, // h32n2M8ZpLpc + 84, 110, 113, 87, 72, 115, 70, 99, 81, 103, 84, 102, // TnqWHsFcQgTf + 74, 85, 55, 79, 55, 102, 47, 97, 83, 48, 90, 122, // JU7O7f/aS0Zz + 81, 71, 80, 83, 83, 98, 116, 113, 68, 84, 54, 90, // QGPSSbtqDT6Z + 106, 10, 109, 85, 121, 108, 43, 49, 55, 118, 73, 87, // j.mUyl+17vIW + 82, 54, 73, 70, 57, 115, 90, 73, 85, 86, 121, 122, // R6IF9sZIUVyz + 102, 112, 89, 103, 119, 76, 75, 104, 98, 99, 65, 83, // fpYgwLKhbcAS + 52, 121, 50, 106, 53, 76, 57, 90, 52, 54, 57, 104, // 4y2j5L9Z469h + 100, 65, 108, 79, 43, 101, 107, 81, 105, 71, 43, 114, // dAlO+ekQiG+r + 53, 106, 113, 70, 111, 122, 10, 55, 77, 116, 48, 81, // 5jqFoz.7Mt0Q + 53, 88, 53, 98, 71, 108, 83, 78, 115, 99, 112, 98, // 5X5bGlSNscpb + 47, 120, 86, 65, 49, 119, 102, 43, 53, 43, 57, 82, // /xVA1wf+5+9R + 43, 118, 110, 83, 85, 101, 86, 67, 48, 54, 74, 73, // +vnSUeVC06JI + 103, 108, 74, 52, 80, 86, 104, 72, 118, 71, 47, 76, // glJ4PVhHvG/L + 111, 112, 121, 98, 111, 66, 90, 47, 49, 99, 54, 10, // opyboBZ/1c6. + 43, 88, 85, 121, 111, 48, 53, 102, 55, 79, 48, 111, // +XUyo05f7O0o + 89, 116, 108, 78, 99, 47, 76, 77, 103, 82, 100, 103, // YtlNc/LMgRdg + 55, 99, 51, 114, 51, 78, 117, 110, 121, 115, 86, 43, // 7c3r3NunysV+ + 65, 114, 51, 121, 86, 65, 104, 85, 47, 98, 81, 116, // Ar3yVAhU/bQt + 67, 83, 119, 88, 86, 69, 113, 89, 48, 86, 84, 104, // CSwXVEqY0VTh + 85, 87, 99, 73, 10, 48, 117, 49, 117, 102, 109, 56, // UWcI.0u1ufm8 + 47, 48, 105, 50, 66, 87, 83, 108, 109, 121, 53, 65, // /0i2BWSlmy5A + 53, 108, 82, 69, 101, 100, 67, 102, 43, 51, 101, 117, // 5lREedCf+3eu + 118, 65, 103, 77, 66, 65, 65, 71, 106, 81, 106, 66, // vAgMBAAGjQjB + 65, 77, 65, 56, 71, 65, 49, 85, 100, 69, 119, 69, // AMA8GA1UdEwE + 66, 47, 119, 81, 70, 77, 65, 77, 66, 10, 65, 102, // B/wQFMAMB.Af + 56, 119, 68, 103, 89, 68, 86, 82, 48, 80, 65, 81, // 8wDgYDVR0PAQ + 72, 47, 66, 65, 81, 68, 65, 103, 71, 71, 77, 66, // H/BAQDAgGGMB + 48, 71, 65, 49, 85, 100, 68, 103, 81, 87, 66, 66, // 0GA1UdDgQWBB + 83, 119, 68, 80, 66, 77, 77, 80, 81, 70, 87, 65, // SwDPBMMPQFWA + 74, 73, 47, 84, 80, 108, 85, 113, 57, 76, 104, 79, // JI/TPlUq9LhO + 78, 109, 10, 85, 106, 65, 78, 66, 103, 107, 113, 104, // Nm.UjANBgkqh + 107, 105, 71, 57, 119, 48, 66, 65, 81, 119, 70, 65, // kiG9w0BAQwFA + 65, 79, 67, 65, 103, 69, 65, 113, 113, 105, 65, 106, // AOCAgEAqqiAj + 119, 53, 52, 111, 43, 67, 105, 49, 77, 51, 109, 57, // w54o+Ci1M3m9 + 90, 104, 54, 79, 43, 111, 65, 65, 55, 67, 88, 68, // Zh6O+oAA7CXD + 112, 79, 56, 87, 113, 106, 50, 10, 76, 73, 120, 121, // pO8Wqj2.LIxy + 104, 54, 109, 120, 47, 72, 57, 122, 47, 87, 78, 120, // h6mx/H9z/WNx + 101, 75, 87, 72, 87, 99, 56, 119, 52, 81, 48, 81, // eKWHWc8w4Q0Q + 115, 104, 78, 97, 98, 89, 76, 49, 97, 117, 97, 65, // shNabYL1auaA + 110, 54, 65, 70, 67, 50, 106, 107, 82, 50, 118, 72, // n6AFC2jkR2vH + 97, 116, 43, 50, 47, 88, 99, 121, 99, 117, 85, 89, // at+2/XcycuUY + 10, 43, 103, 110, 48, 111, 74, 77, 115, 88, 100, 75, // .+gn0oJMsXdK + 77, 100, 89, 86, 50, 90, 90, 65, 77, 65, 51, 109, // MdYV2ZZAMA3m + 51, 77, 83, 78, 106, 114, 88, 105, 68, 67, 89, 90, // 3MSNjrXiDCYZ + 111, 104, 77, 114, 47, 43, 99, 56, 109, 109, 112, 74, // ohMr/+c8mmpJ + 53, 53, 56, 49, 76, 120, 101, 100, 104, 112, 120, 102, // 5581Lxedhpxf + 76, 56, 54, 107, 83, 10, 107, 53, 78, 114, 112, 43, // L86kS.k5Nrp+ + 103, 118, 85, 53, 76, 69, 89, 70, 105, 119, 122, 65, // gvU5LEYFiwzA + 74, 82, 71, 70, 117, 70, 106, 87, 74, 90, 89, 55, // JRGFuFjWJZY7 + 97, 116, 116, 78, 54, 97, 43, 121, 98, 51, 65, 67, // attN6a+yb3AC + 102, 65, 88, 86, 85, 51, 100, 74, 110, 74, 85, 72, // fAXVU3dJnJUH + 47, 106, 87, 83, 53, 69, 52, 121, 119, 108, 10, 55, // /jWS5E4ywl.7 + 117, 120, 77, 77, 110, 101, 48, 110, 120, 114, 112, 83, // uxMMne0nxrpS + 49, 48, 103, 120, 100, 114, 57, 72, 73, 99, 87, 120, // 10gxdr9HIcWx + 107, 80, 111, 49, 76, 115, 109, 109, 107, 86, 119, 88, // kPo1LsmmkVwX + 113, 107, 76, 78, 49, 80, 105, 82, 110, 115, 110, 47, // qkLN1PiRnsn/ + 101, 66, 71, 56, 111, 109, 51, 122, 69, 75, 50, 121, // eBG8om3zEK2y + 121, 103, 109, 10, 98, 116, 109, 108, 121, 84, 114, 73, // ygm.btmlyTrI + 81, 82, 78, 103, 57, 49, 67, 77, 70, 97, 54, 121, // QRNg91CMFa6y + 98, 82, 111, 86, 71, 108, 100, 52, 53, 112, 73, 113, // bRoVGld45pIq + 50, 87, 87, 81, 103, 106, 57, 115, 65, 113, 43, 117, // 2WWQgj9sAq+u + 69, 106, 111, 110, 108, 106, 89, 69, 49, 120, 50, 105, // EjonljYE1x2i + 103, 71, 79, 112, 109, 47, 72, 108, 10, 117, 114, 82, // gGOpm/Hl.urR + 56, 70, 76, 66, 79, 121, 98, 69, 102, 100, 70, 56, // 8FLBOybEfdF8 + 52, 57, 108, 72, 113, 109, 47, 111, 115, 111, 104, 72, // 49lHqm/osohH + 85, 113, 83, 48, 110, 71, 107, 87, 120, 114, 55, 74, // UqS0nGkWxr7J + 79, 99, 81, 51, 65, 87, 69, 98, 87, 97, 81, 98, // OcQ3AWEbWaQb + 76, 85, 56, 117, 122, 47, 109, 116, 66, 122, 85, 70, // LU8uz/mtBzUF + 43, 10, 102, 85, 119, 80, 102, 72, 74, 53, 101, 108, // +.fUwPfHJ5el + 110, 78, 88, 107, 111, 79, 114, 74, 117, 112, 109, 72, // nNXkoOrJupmH + 78, 53, 102, 76, 84, 48, 122, 76, 109, 52, 66, 119, // N5fLT0zLm4Bw + 121, 121, 100, 70, 121, 52, 120, 50, 43, 73, 111, 90, // yydFy4x2+IoZ + 67, 110, 57, 75, 114, 53, 118, 50, 99, 54, 57, 66, // Cn9Kr5v2c69B + 111, 86, 89, 104, 54, 51, 10, 110, 55, 52, 57, 115, // oVYh63.n749s + 83, 109, 118, 90, 54, 69, 83, 56, 108, 103, 81, 71, // SmvZ6ES8lgQG + 86, 77, 68, 77, 66, 117, 52, 71, 111, 110, 50, 110, // VMDMBu4Gon2n + 76, 50, 88, 65, 52, 54, 106, 67, 102, 77, 100, 105, // L2XA46jCfMdi + 121, 72, 120, 116, 78, 47, 107, 72, 78, 71, 102, 90, // yHxtN/kHNGfZ + 81, 73, 71, 54, 108, 122, 87, 69, 55, 79, 69, 10, // QIG6lzWE7OE. + 55, 54, 75, 108, 88, 73, 120, 51, 75, 97, 100, 111, // 76KlXIx3Kado + 119, 71, 117, 117, 81, 78, 75, 111, 116, 79, 114, 78, // wGuuQNKotOrN + 56, 73, 49, 76, 79, 74, 119, 90, 109, 104, 115, 111, // 8I1LOJwZmhso + 86, 76, 105, 74, 107, 79, 47, 75, 100, 89, 69, 43, // VLiJkO/KdYE+ + 72, 118, 74, 107, 74, 77, 99, 89, 114, 48, 55, 47, // HvJkJMcYr07/ + 82, 53, 52, 72, 10, 57, 106, 86, 108, 112, 78, 77, // R54H.9jVlpNM + 75, 86, 118, 47, 49, 70, 50, 82, 115, 55, 54, 103, // KVv/1F2Rs76g + 105, 74, 85, 109, 84, 116, 116, 56, 65, 70, 57, 112, // iJUmTtt8AF9p + 89, 102, 108, 51, 117, 120, 82, 117, 119, 48, 100, 70, // Yfl3uxRuw0dF + 102, 73, 82, 68, 72, 43, 102, 79, 54, 65, 103, 111, // fIRDH+fO6Ago + 110, 66, 56, 88, 120, 49, 115, 102, 84, 10, 52, 80, // nB8Xx1sfT.4P + 115, 74, 89, 71, 119, 61, 10, 45, 45, 45, 45, 45, // sJYGw=.----- + 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, // END CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 78, 111, // ATE-----..No + 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 77, 97, // t Before: Ma + 121, 32, 50, 54, 32, 48, 48, 58, 48, 48, 58, 48, // y 26 00:00:0 + 48, 32, 50, 48, 49, 53, 32, 71, 77, 84, 10, 78, // 0 2015 GMT.N + 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 77, // ot After : M + 97, 121, 32, 50, 54, 32, 48, 48, 58, 48, 48, 58, // ay 26 00:00: + 48, 48, 32, 50, 48, 52, 48, 32, 71, 77, 84, 10, // 00 2040 GMT. + 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, 32, 61, // Subject: C = + 32, 85, 83, 44, 32, 79, 32, 61, 32, 65, 109, 97, // US, O = Ama + 122, 111, 110, 44, 32, 67, 78, 32, 61, 32, 65, 109, // zon, CN = Am + 97, 122, 111, 110, 32, 82, 111, 111, 116, 32, 67, 65, // azon Root CA + 32, 51, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, // 3.-----BEGI + 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, // N CERTIFICAT + 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 66, 116, // E-----.MIIBt + 106, 67, 67, 65, 86, 117, 103, 65, 119, 73, 66, 65, // jCCAVugAwIBA + 103, 73, 84, 66, 109, 121, 102, 49, 88, 83, 88, 78, // gITBmyf1XSXN + 109, 89, 47, 79, 119, 117, 97, 50, 101, 105, 101, 100, // mY/Owua2eied + 103, 80, 121, 83, 106, 65, 75, 66, 103, 103, 113, 104, // gPySjAKBggqh + 107, 106, 79, 80, 81, 81, 68, 65, 106, 65, 53, 10, // kjOPQQDAjA5. + 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, 71, // MQswCQYDVQQG + 69, 119, 74, 86, 85, 122, 69, 80, 77, 65, 48, 71, // EwJVUzEPMA0G + 65, 49, 85, 69, 67, 104, 77, 71, 81, 87, 49, 104, // A1UEChMGQW1h + 101, 109, 57, 117, 77, 82, 107, 119, 70, 119, 89, 68, // em9uMRkwFwYD + 86, 81, 81, 68, 69, 120, 66, 66, 98, 87, 70, 54, // VQQDExBBbWF6 + 98, 50, 52, 103, 10, 85, 109, 57, 118, 100, 67, 66, // b24g.Um9vdCB + 68, 81, 83, 65, 122, 77, 66, 52, 88, 68, 84, 69, // DQSAzMB4XDTE + 49, 77, 68, 85, 121, 78, 106, 65, 119, 77, 68, 65, // 1MDUyNjAwMDA + 119, 77, 70, 111, 88, 68, 84, 81, 119, 77, 68, 85, // wMFoXDTQwMDU + 121, 78, 106, 65, 119, 77, 68, 65, 119, 77, 70, 111, // yNjAwMDAwMFo + 119, 79, 84, 69, 76, 77, 65, 107, 71, 10, 65, 49, // wOTELMAkG.A1 + 85, 69, 66, 104, 77, 67, 86, 86, 77, 120, 68, 122, // UEBhMCVVMxDz + 65, 78, 66, 103, 78, 86, 66, 65, 111, 84, 66, 107, // ANBgNVBAoTBk + 70, 116, 89, 88, 112, 118, 98, 106, 69, 90, 77, 66, // FtYXpvbjEZMB + 99, 71, 65, 49, 85, 69, 65, 120, 77, 81, 81, 87, // cGA1UEAxMQQW + 49, 104, 101, 109, 57, 117, 73, 70, 74, 118, 98, 51, // 1hem9uIFJvb3 + 81, 103, 10, 81, 48, 69, 103, 77, 122, 66, 90, 77, // Qg.Q0EgMzBZM + 66, 77, 71, 66, 121, 113, 71, 83, 77, 52, 57, 65, // BMGByqGSM49A + 103, 69, 71, 67, 67, 113, 71, 83, 77, 52, 57, 65, // gEGCCqGSM49A + 119, 69, 72, 65, 48, 73, 65, 66, 67, 109, 88, 112, // wEHA0IABCmXp + 56, 90, 66, 102, 56, 65, 78, 109, 43, 103, 66, 71, // 8ZBf8ANm+gBG + 49, 98, 71, 56, 108, 75, 108, 10, 117, 105, 50, 121, // 1bG8lKl.ui2y + 69, 117, 106, 83, 76, 116, 102, 54, 121, 99, 88, 89, // EujSLtf6ycXY + 113, 109, 48, 102, 99, 52, 69, 55, 79, 53, 104, 114, // qm0fc4E7O5hr + 79, 88, 119, 122, 112, 99, 86, 79, 104, 111, 54, 65, // OXwzpcVOho6A + 70, 50, 104, 105, 82, 86, 100, 57, 82, 70, 103, 100, // F2hiRVd9RFgd + 115, 122, 102, 108, 90, 119, 106, 114, 90, 116, 54, 106, // szflZwjrZt6j + 10, 81, 106, 66, 65, 77, 65, 56, 71, 65, 49, 85, // .QjBAMA8GA1U + 100, 69, 119, 69, 66, 47, 119, 81, 70, 77, 65, 77, // dEwEB/wQFMAM + 66, 65, 102, 56, 119, 68, 103, 89, 68, 86, 82, 48, // BAf8wDgYDVR0 + 80, 65, 81, 72, 47, 66, 65, 81, 68, 65, 103, 71, // PAQH/BAQDAgG + 71, 77, 66, 48, 71, 65, 49, 85, 100, 68, 103, 81, // GMB0GA1UdDgQ + 87, 66, 66, 83, 114, 10, 116, 116, 118, 88, 66, 112, // WBBSr.ttvXBp + 52, 51, 114, 68, 67, 71, 66, 53, 70, 119, 120, 53, // 43rDCGB5Fwx5 + 122, 69, 71, 98, 70, 52, 119, 68, 65, 75, 66, 103, // zEGbF4wDAKBg + 103, 113, 104, 107, 106, 79, 80, 81, 81, 68, 65, 103, // gqhkjOPQQDAg + 78, 74, 65, 68, 66, 71, 65, 105, 69, 65, 52, 73, // NJADBGAiEA4I + 87, 83, 111, 120, 101, 51, 106, 102, 107, 114, 10, 66, // WSoxe3jfkr.B + 113, 87, 84, 114, 66, 113, 89, 97, 71, 70, 121, 43, // qWTrBqYaGFy+ + 117, 71, 104, 48, 80, 115, 99, 101, 71, 67, 109, 81, // uGh0PsceGCmQ + 53, 110, 70, 117, 77, 81, 67, 73, 81, 67, 99, 65, // 5nFuMQCIQCcA + 117, 47, 120, 108, 74, 121, 122, 108, 118, 110, 114, 120, // u/xlJyzlvnrx + 105, 114, 52, 116, 105, 122, 43, 79, 112, 65, 85, 70, // ir4tiz+OpAUF + 116, 101, 77, 10, 89, 121, 82, 73, 72, 78, 56, 119, // teM.YyRIHN8w + 102, 100, 86, 111, 79, 119, 61, 61, 10, 45, 45, 45, // fdVoOw==.--- + 45, 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, // --END CERTIF + 73, 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, // ICATE-----.. + 78, 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, // Not Before: + 77, 97, 121, 32, 50, 54, 32, 48, 48, 58, 48, 48, // May 26 00:00 + 58, 48, 48, 32, 50, 48, 49, 53, 32, 71, 77, 84, // :00 2015 GMT + 10, 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, // .Not After : + 32, 77, 97, 121, 32, 50, 54, 32, 48, 48, 58, 48, // May 26 00:0 + 48, 58, 48, 48, 32, 50, 48, 52, 48, 32, 71, 77, // 0:00 2040 GM + 84, 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, // T.Subject: C + 32, 61, 32, 85, 83, 44, 32, 79, 32, 61, 32, 65, // = US, O = A + 109, 97, 122, 111, 110, 44, 32, 67, 78, 32, 61, 32, // mazon, CN = + 65, 109, 97, 122, 111, 110, 32, 82, 111, 111, 116, 32, // Amazon Root + 67, 65, 32, 52, 10, 45, 45, 45, 45, 45, 66, 69, // CA 4.-----BE + 71, 73, 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, // GIN CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, // ATE-----.MII + 66, 56, 106, 67, 67, 65, 88, 105, 103, 65, 119, 73, // B8jCCAXigAwI + 66, 65, 103, 73, 84, 66, 109, 121, 102, 49, 56, 71, // BAgITBmyf18G + 55, 69, 69, 119, 112, 81, 43, 86, 120, 101, 51, 115, // 7EEwpQ+Vxe3s + 115, 121, 66, 114, 66, 68, 106, 65, 75, 66, 103, 103, // syBrBDjAKBgg + 113, 104, 107, 106, 79, 80, 81, 81, 68, 65, 122, 65, // qhkjOPQQDAzA + 53, 10, 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, // 5.MQswCQYDVQ + 81, 71, 69, 119, 74, 86, 85, 122, 69, 80, 77, 65, // QGEwJVUzEPMA + 48, 71, 65, 49, 85, 69, 67, 104, 77, 71, 81, 87, // 0GA1UEChMGQW + 49, 104, 101, 109, 57, 117, 77, 82, 107, 119, 70, 119, // 1hem9uMRkwFw + 89, 68, 86, 81, 81, 68, 69, 120, 66, 66, 98, 87, // YDVQQDExBBbW + 70, 54, 98, 50, 52, 103, 10, 85, 109, 57, 118, 100, // F6b24g.Um9vd + 67, 66, 68, 81, 83, 65, 48, 77, 66, 52, 88, 68, // CBDQSA0MB4XD + 84, 69, 49, 77, 68, 85, 121, 78, 106, 65, 119, 77, // TE1MDUyNjAwM + 68, 65, 119, 77, 70, 111, 88, 68, 84, 81, 119, 77, // DAwMFoXDTQwM + 68, 85, 121, 78, 106, 65, 119, 77, 68, 65, 119, 77, // DUyNjAwMDAwM + 70, 111, 119, 79, 84, 69, 76, 77, 65, 107, 71, 10, // FowOTELMAkG. + 65, 49, 85, 69, 66, 104, 77, 67, 86, 86, 77, 120, // A1UEBhMCVVMx + 68, 122, 65, 78, 66, 103, 78, 86, 66, 65, 111, 84, // DzANBgNVBAoT + 66, 107, 70, 116, 89, 88, 112, 118, 98, 106, 69, 90, // BkFtYXpvbjEZ + 77, 66, 99, 71, 65, 49, 85, 69, 65, 120, 77, 81, // MBcGA1UEAxMQ + 81, 87, 49, 104, 101, 109, 57, 117, 73, 70, 74, 118, // QW1hem9uIFJv + 98, 51, 81, 103, 10, 81, 48, 69, 103, 78, 68, 66, // b3Qg.Q0EgNDB + 50, 77, 66, 65, 71, 66, 121, 113, 71, 83, 77, 52, // 2MBAGByqGSM4 + 57, 65, 103, 69, 71, 66, 83, 117, 66, 66, 65, 65, // 9AgEGBSuBBAA + 105, 65, 50, 73, 65, 66, 78, 75, 114, 105, 106, 100, // iA2IABNKrijd + 80, 111, 49, 77, 78, 47, 115, 71, 75, 101, 48, 117, // Po1MN/sGKe0u + 111, 101, 48, 90, 76, 89, 55, 66, 105, 10, 57, 105, // oe0ZLY7Bi.9i + 48, 98, 50, 119, 104, 120, 73, 100, 73, 65, 54, 71, // 0b2whxIdIA6G + 79, 57, 109, 105, 102, 55, 56, 68, 108, 117, 88, 101, // O9mif78DluXe + 111, 57, 112, 99, 109, 66, 113, 113, 78, 98, 73, 74, // o9pcmBqqNbIJ + 104, 70, 88, 82, 98, 98, 47, 101, 103, 81, 98, 101, // hFXRbb/egQbe + 79, 99, 52, 79, 79, 57, 88, 52, 82, 105, 56, 51, // Oc4OO9X4Ri83 + 66, 107, 10, 77, 54, 68, 76, 74, 67, 57, 119, 117, // Bk.M6DLJC9wu + 111, 105, 104, 75, 113, 66, 49, 43, 73, 71, 117, 89, // oihKqB1+IGuY + 103, 98, 69, 103, 100, 115, 53, 98, 105, 109, 119, 72, // gbEgds5bimwH + 118, 111, 117, 88, 75, 78, 67, 77, 69, 65, 119, 68, // vouXKNCMEAwD + 119, 89, 68, 86, 82, 48, 84, 65, 81, 72, 47, 66, // wYDVR0TAQH/B + 65, 85, 119, 65, 119, 69, 66, 10, 47, 122, 65, 79, // AUwAwEB./zAO + 66, 103, 78, 86, 72, 81, 56, 66, 65, 102, 56, 69, // BgNVHQ8BAf8E + 66, 65, 77, 67, 65, 89, 89, 119, 72, 81, 89, 68, // BAMCAYYwHQYD + 86, 82, 48, 79, 66, 66, 89, 69, 70, 78, 80, 115, // VR0OBBYEFNPs + 120, 122, 112, 108, 98, 115, 122, 104, 50, 110, 97, 97, // xzplbszh2naa + 86, 118, 117, 99, 56, 52, 90, 116, 86, 43, 87, 66, // Vvuc84ZtV+WB + 10, 77, 65, 111, 71, 67, 67, 113, 71, 83, 77, 52, // .MAoGCCqGSM4 + 57, 66, 65, 77, 68, 65, 50, 103, 65, 77, 71, 85, // 9BAMDA2gAMGU + 67, 77, 68, 113, 76, 73, 102, 71, 57, 102, 104, 71, // CMDqLIfG9fhG + 116, 48, 79, 57, 89, 108, 105, 47, 87, 54, 53, 49, // t0O9Yli/W651 + 43, 107, 73, 48, 114, 122, 50, 90, 86, 119, 121, 122, // +kI0rz2ZVwyz + 106, 75, 75, 108, 119, 10, 67, 107, 99, 79, 56, 68, // jKKlw.CkcO8D + 100, 90, 69, 118, 56, 116, 109, 90, 81, 111, 84, 105, // dZEv8tmZQoTi + 112, 80, 78, 85, 48, 122, 87, 103, 73, 120, 65, 79, // pPNU0zWgIxAO + 112, 49, 65, 69, 52, 55, 120, 68, 113, 85, 69, 112, // p1AE47xDqUEp + 72, 74, 87, 69, 97, 100, 73, 82, 78, 121, 112, 52, // HJWEadIRNyp4 + 105, 99, 105, 117, 82, 77, 83, 116, 117, 87, 10, 49, // iciuRMStuW.1 + 75, 121, 76, 97, 50, 116, 74, 69, 108, 77, 122, 114, // KyLa2tJElMzr + 100, 102, 107, 118, 105, 84, 56, 116, 81, 112, 50, 49, // dfkviT8tQp21 + 75, 87, 56, 69, 65, 61, 61, 10, 45, 45, 45, 45, // KW8EA==.---- + 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, // -END CERTIFI + 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 78, // CATE-----..N + 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 78, // ot Before: N + 111, 118, 32, 49, 48, 32, 48, 48, 58, 48, 48, 58, // ov 10 00:00: + 48, 48, 32, 50, 48, 48, 54, 32, 71, 77, 84, 10, // 00 2006 GMT. + 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, // Not After : + 78, 111, 118, 32, 49, 48, 32, 48, 48, 58, 48, 48, // Nov 10 00:00 + 58, 48, 48, 32, 50, 48, 51, 49, 32, 71, 77, 84, // :00 2031 GMT + 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, 32, // .Subject: C + 61, 32, 85, 83, 44, 32, 79, 32, 61, 32, 68, 105, // = US, O = Di + 103, 105, 67, 101, 114, 116, 32, 73, 110, 99, 44, 32, // giCert Inc, + 79, 85, 32, 61, 32, 119, 119, 119, 46, 100, 105, 103, // OU = www.dig + 105, 99, 101, 114, 116, 46, 99, 111, 109, 44, 32, 67, // icert.com, C + 78, 32, 61, 32, 68, 105, 103, 105, 67, 101, 114, 116, // N = DigiCert + 32, 71, 108, 111, 98, 97, 108, 32, 82, 111, 111, 116, // Global Root + 32, 67, 65, 10, 45, 45, 45, 45, 45, 66, 69, 71, // CA.-----BEG + 73, 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, // IN CERTIFICA + 84, 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 68, // TE-----.MIID + 114, 122, 67, 67, 65, 112, 101, 103, 65, 119, 73, 66, // rzCCApegAwIB + 65, 103, 73, 81, 67, 68, 118, 103, 86, 112, 66, 67, // AgIQCDvgVpBC + 82, 114, 71, 104, 100, 87, 114, 74, 87, 90, 72, 72, // RrGhdWrJWZHH + 83, 106, 65, 78, 66, 103, 107, 113, 104, 107, 105, 71, // SjANBgkqhkiG + 57, 119, 48, 66, 65, 81, 85, 70, 65, 68, 66, 104, // 9w0BAQUFADBh + 10, 77, 81, 115, 119, 67, 81, 89, 68, 86, 81, 81, // .MQswCQYDVQQ + 71, 69, 119, 74, 86, 85, 122, 69, 86, 77, 66, 77, // GEwJVUzEVMBM + 71, 65, 49, 85, 69, 67, 104, 77, 77, 82, 71, 108, // GA1UEChMMRGl + 110, 97, 85, 78, 108, 99, 110, 81, 103, 83, 87, 53, // naUNlcnQgSW5 + 106, 77, 82, 107, 119, 70, 119, 89, 68, 86, 81, 81, // jMRkwFwYDVQQ + 76, 69, 120, 66, 51, 10, 100, 51, 99, 117, 90, 71, // LExB3.d3cuZG + 108, 110, 97, 87, 78, 108, 99, 110, 81, 117, 89, 50, // lnaWNlcnQuY2 + 57, 116, 77, 83, 65, 119, 72, 103, 89, 68, 86, 81, // 9tMSAwHgYDVQ + 81, 68, 69, 120, 100, 69, 97, 87, 100, 112, 81, 50, // QDExdEaWdpQ2 + 86, 121, 100, 67, 66, 72, 98, 71, 57, 105, 89, 87, // VydCBHbG9iYW + 119, 103, 85, 109, 57, 118, 100, 67, 66, 68, 10, 81, // wgUm9vdCBD.Q + 84, 65, 101, 70, 119, 48, 119, 78, 106, 69, 120, 77, // TAeFw0wNjExM + 84, 65, 119, 77, 68, 65, 119, 77, 68, 66, 97, 70, // TAwMDAwMDBaF + 119, 48, 122, 77, 84, 69, 120, 77, 84, 65, 119, 77, // w0zMTExMTAwM + 68, 65, 119, 77, 68, 66, 97, 77, 71, 69, 120, 67, // DAwMDBaMGExC + 122, 65, 74, 66, 103, 78, 86, 66, 65, 89, 84, 65, // zAJBgNVBAYTA + 108, 86, 84, 10, 77, 82, 85, 119, 69, 119, 89, 68, // lVT.MRUwEwYD + 86, 81, 81, 75, 69, 119, 120, 69, 97, 87, 100, 112, // VQQKEwxEaWdp + 81, 50, 86, 121, 100, 67, 66, 74, 98, 109, 77, 120, // Q2VydCBJbmMx + 71, 84, 65, 88, 66, 103, 78, 86, 66, 65, 115, 84, // GTAXBgNVBAsT + 69, 72, 100, 51, 100, 121, 53, 107, 97, 87, 100, 112, // EHd3dy5kaWdp + 89, 50, 86, 121, 100, 67, 53, 106, 10, 98, 50, 48, // Y2VydC5j.b20 + 120, 73, 68, 65, 101, 66, 103, 78, 86, 66, 65, 77, // xIDAeBgNVBAM + 84, 70, 48, 82, 112, 90, 50, 108, 68, 90, 88, 74, // TF0RpZ2lDZXJ + 48, 73, 69, 100, 115, 98, 50, 74, 104, 98, 67, 66, // 0IEdsb2JhbCB + 83, 98, 50, 57, 48, 73, 69, 78, 66, 77, 73, 73, // Sb290IENBMII + 66, 73, 106, 65, 78, 66, 103, 107, 113, 104, 107, 105, // BIjANBgkqhki + 71, 10, 57, 119, 48, 66, 65, 81, 69, 70, 65, 65, // G.9w0BAQEFAA + 79, 67, 65, 81, 56, 65, 77, 73, 73, 66, 67, 103, // OCAQ8AMIIBCg + 75, 67, 65, 81, 69, 65, 52, 106, 118, 104, 69, 88, // KCAQEA4jvhEX + 76, 101, 113, 75, 84, 84, 111, 49, 101, 113, 85, 75, // LeqKTTo1eqUK + 75, 80, 67, 51, 101, 81, 121, 97, 75, 108, 55, 104, // KPC3eQyaKl7h + 76, 79, 108, 108, 115, 66, 10, 67, 83, 68, 77, 65, // LOllsB.CSDMA + 90, 79, 110, 84, 106, 67, 51, 85, 47, 100, 68, 120, // ZOnTjC3U/dDx + 71, 107, 65, 86, 53, 51, 105, 106, 83, 76, 100, 104, // GkAV53ijSLdh + 119, 90, 65, 65, 73, 69, 74, 122, 115, 52, 98, 103, // wZAAIEJzs4bg + 55, 47, 102, 122, 84, 116, 120, 82, 117, 76, 87, 90, // 7/fzTtxRuLWZ + 115, 99, 70, 115, 51, 89, 110, 70, 111, 57, 55, 10, // scFs3YnFo97. + 110, 104, 54, 86, 102, 101, 54, 51, 83, 75, 77, 73, // nh6Vfe63SKMI + 50, 116, 97, 118, 101, 103, 119, 53, 66, 109, 86, 47, // 2tavegw5BmV/ + 83, 108, 48, 102, 118, 66, 102, 52, 113, 55, 55, 117, // Sl0fvBf4q77u + 75, 78, 100, 48, 102, 51, 112, 52, 109, 86, 109, 70, // KNd0f3p4mVmF + 97, 71, 53, 99, 73, 122, 74, 76, 118, 48, 55, 65, // aG5cIzJLv07A + 54, 70, 112, 116, 10, 52, 51, 67, 47, 100, 120, 67, // 6Fpt.43C/dxC + 47, 47, 65, 72, 50, 104, 100, 109, 111, 82, 66, 66, // //AH2hdmoRBB + 89, 77, 113, 108, 49, 71, 78, 88, 82, 111, 114, 53, // YMql1GNXRor5 + 72, 52, 105, 100, 113, 57, 74, 111, 122, 43, 69, 107, // H4idq9Joz+Ek + 73, 89, 73, 118, 85, 88, 55, 81, 54, 104, 76, 43, // IYIvUX7Q6hL+ + 104, 113, 107, 112, 77, 102, 84, 55, 80, 10, 84, 49, // hqkpMfT7P.T1 + 57, 115, 100, 108, 54, 103, 83, 122, 101, 82, 110, 116, // 9sdl6gSzeRnt + 119, 105, 53, 109, 51, 79, 70, 66, 113, 79, 97, 115, // wi5m3OFBqOas + 118, 43, 122, 98, 77, 85, 90, 66, 102, 72, 87, 121, // v+zbMUZBfHWy + 109, 101, 77, 114, 47, 121, 55, 118, 114, 84, 67, 48, // meMr/y7vrTC0 + 76, 85, 113, 55, 100, 66, 77, 116, 111, 77, 49, 79, // LUq7dBMtoM1O + 47, 52, 10, 103, 100, 87, 55, 106, 86, 103, 47, 116, // /4.gdW7jVg/t + 82, 118, 111, 83, 83, 105, 105, 99, 78, 111, 120, 66, // RvoSSiicNoxB + 78, 51, 51, 115, 104, 98, 121, 84, 65, 112, 79, 66, // N33shbyTApOB + 54, 106, 116, 83, 106, 49, 101, 116, 88, 43, 106, 107, // 6jtSj1etX+jk + 77, 79, 118, 74, 119, 73, 68, 65, 81, 65, 66, 111, // MOvJwIDAQABo + 50, 77, 119, 89, 84, 65, 79, 10, 66, 103, 78, 86, // 2MwYTAO.BgNV + 72, 81, 56, 66, 65, 102, 56, 69, 66, 65, 77, 67, // HQ8BAf8EBAMC + 65, 89, 89, 119, 68, 119, 89, 68, 86, 82, 48, 84, // AYYwDwYDVR0T + 65, 81, 72, 47, 66, 65, 85, 119, 65, 119, 69, 66, // AQH/BAUwAwEB + 47, 122, 65, 100, 66, 103, 78, 86, 72, 81, 52, 69, // /zAdBgNVHQ4E + 70, 103, 81, 85, 65, 57, 53, 81, 78, 86, 98, 82, // FgQUA95QNVbR + 10, 84, 76, 116, 109, 56, 75, 80, 105, 71, 120, 118, // .TLtm8KPiGxv + 68, 108, 55, 73, 57, 48, 86, 85, 119, 72, 119, 89, // Dl7I90VUwHwY + 68, 86, 82, 48, 106, 66, 66, 103, 119, 70, 111, 65, // DVR0jBBgwFoA + 85, 65, 57, 53, 81, 78, 86, 98, 82, 84, 76, 116, // UA95QNVbRTLt + 109, 56, 75, 80, 105, 71, 120, 118, 68, 108, 55, 73, // m8KPiGxvDl7I + 57, 48, 86, 85, 119, 10, 68, 81, 89, 74, 75, 111, // 90VUw.DQYJKo + 90, 73, 104, 118, 99, 78, 65, 81, 69, 70, 66, 81, // ZIhvcNAQEFBQ + 65, 68, 103, 103, 69, 66, 65, 77, 117, 99, 78, 54, // ADggEBAMucN6 + 112, 73, 69, 120, 73, 75, 43, 116, 49, 69, 110, 69, // pIExIK+t1EnE + 57, 83, 115, 80, 84, 102, 114, 103, 84, 49, 101, 88, // 9SsPTfrgT1eX + 107, 73, 111, 121, 81, 89, 47, 69, 115, 114, 10, 104, // kIoyQY/Esr.h + 77, 65, 116, 117, 100, 88, 72, 47, 118, 84, 66, 72, // MAtudXH/vTBH + 49, 106, 76, 117, 71, 50, 99, 101, 110, 84, 110, 109, // 1jLuG2cenTnm + 67, 109, 114, 69, 98, 88, 106, 99, 75, 67, 104, 122, // CmrEbXjcKChz + 85, 121, 73, 109, 90, 79, 77, 107, 88, 68, 105, 113, // UyImZOMkXDiq + 119, 56, 99, 118, 112, 79, 112, 47, 50, 80, 86, 53, // w8cvpOp/2PV5 + 65, 100, 103, 10, 48, 54, 79, 47, 110, 86, 115, 74, // Adg.06O/nVsJ + 56, 100, 87, 79, 52, 49, 80, 48, 106, 109, 80, 54, // 8dWO41P0jmP6 + 80, 54, 102, 98, 116, 71, 98, 102, 89, 109, 98, 87, // P6fbtGbfYmbW + 48, 87, 53, 66, 106, 102, 73, 116, 116, 101, 112, 51, // 0W5BjfIttep3 + 83, 112, 43, 100, 87, 79, 73, 114, 87, 99, 66, 65, // Sp+dWOIrWcBA + 73, 43, 48, 116, 75, 73, 74, 70, 10, 80, 110, 108, // I+0tKIJF.Pnl + 85, 107, 105, 97, 89, 52, 73, 66, 73, 113, 68, 102, // UkiaY4IBIqDf + 118, 56, 78, 90, 53, 89, 66, 98, 101, 114, 79, 103, // v8NZ5YBberOg + 79, 122, 87, 54, 115, 82, 66, 99, 52, 76, 48, 110, // OzW6sRBc4L0n + 97, 52, 85, 85, 43, 75, 114, 107, 50, 85, 56, 56, // a4UU+Krk2U88 + 54, 85, 65, 98, 51, 76, 117, 106, 69, 86, 48, 108, // 6UAb3LujEV0l + 115, 10, 89, 83, 69, 89, 49, 81, 83, 116, 101, 68, // s.YSEY1QSteD + 119, 115, 79, 111, 66, 114, 112, 43, 117, 118, 70, 82, // wsOoBrp+uvFR + 84, 112, 50, 73, 110, 66, 117, 84, 104, 115, 52, 112, // Tp2InBuThs4p + 70, 115, 105, 118, 57, 107, 117, 88, 99, 108, 86, 122, // Fsiv9kuXclVz + 68, 65, 71, 121, 83, 106, 52, 100, 122, 112, 51, 48, // DAGySj4dzp30 + 100, 56, 116, 98, 81, 107, 10, 67, 65, 85, 119, 55, // d8tbQk.CAUw7 + 67, 50, 57, 67, 55, 57, 70, 118, 49, 67, 53, 113, // C29C79Fv1C5q + 102, 80, 114, 109, 65, 69, 83, 114, 99, 105, 73, 120, // fPrmAESrciIx + 112, 103, 48, 88, 52, 48, 75, 80, 77, 98, 112, 49, // pg0X40KPMbp1 + 90, 87, 86, 98, 100, 52, 61, 10, 45, 45, 45, 45, // ZWVbd4=.---- + 45, 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, // -END CERTIFI + 67, 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 78, // CATE-----..N + 111, 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 78, // ot Before: N + 111, 118, 32, 49, 51, 32, 48, 48, 58, 48, 48, 58, // ov 13 00:00: + 48, 48, 32, 50, 48, 49, 50, 32, 71, 77, 84, 10, // 00 2012 GMT. + 78, 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, // Not After : + 74, 97, 110, 32, 49, 57, 32, 48, 51, 58, 49, 52, // Jan 19 03:14 + 58, 48, 55, 32, 50, 48, 51, 56, 32, 71, 77, 84, // :07 2038 GMT + 10, 83, 117, 98, 106, 101, 99, 116, 58, 32, 79, 85, // .Subject: OU + 32, 61, 32, 71, 108, 111, 98, 97, 108, 83, 105, 103, // = GlobalSig + 110, 32, 69, 67, 67, 32, 82, 111, 111, 116, 32, 67, // n ECC Root C + 65, 32, 45, 32, 82, 52, 44, 32, 79, 32, 61, 32, // A - R4, O = + 71, 108, 111, 98, 97, 108, 83, 105, 103, 110, 44, 32, // GlobalSign, + 67, 78, 32, 61, 32, 71, 108, 111, 98, 97, 108, 83, // CN = GlobalS + 105, 103, 110, 10, 45, 45, 45, 45, 45, 66, 69, 71, // ign.-----BEG + 73, 78, 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, // IN CERTIFICA + 84, 69, 45, 45, 45, 45, 45, 10, 77, 73, 73, 66, // TE-----.MIIB + 52, 84, 67, 67, 65, 89, 101, 103, 65, 119, 73, 66, // 4TCCAYegAwIB + 65, 103, 73, 82, 75, 106, 105, 107, 72, 74, 89, 75, // AgIRKjikHJYK + 66, 78, 53, 67, 115, 105, 105, 108, 67, 43, 103, 48, // BN5CsiilC+g0 + 109, 65, 73, 119, 67, 103, 89, 73, 75, 111, 90, 73, // mAIwCgYIKoZI + 122, 106, 48, 69, 65, 119, 73, 119, 85, 68, 69, 107, // zj0EAwIwUDEk + 10, 77, 67, 73, 71, 65, 49, 85, 69, 67, 120, 77, // .MCIGA1UECxM + 98, 82, 50, 120, 118, 89, 109, 70, 115, 85, 50, 108, // bR2xvYmFsU2l + 110, 98, 105, 66, 70, 81, 48, 77, 103, 85, 109, 57, // nbiBFQ0MgUm9 + 118, 100, 67, 66, 68, 81, 83, 65, 116, 73, 70, 73, // vdCBDQSAtIFI + 48, 77, 82, 77, 119, 69, 81, 89, 68, 86, 81, 81, // 0MRMwEQYDVQQ + 75, 69, 119, 112, 72, 10, 98, 71, 57, 105, 89, 87, // KEwpH.bG9iYW + 120, 84, 97, 87, 100, 117, 77, 82, 77, 119, 69, 81, // xTaWduMRMwEQ + 89, 68, 86, 81, 81, 68, 69, 119, 112, 72, 98, 71, // YDVQQDEwpHbG + 57, 105, 89, 87, 120, 84, 97, 87, 100, 117, 77, 66, // 9iYWxTaWduMB + 52, 88, 68, 84, 69, 121, 77, 84, 69, 120, 77, 122, // 4XDTEyMTExMz + 65, 119, 77, 68, 65, 119, 77, 70, 111, 88, 10, 68, // AwMDAwMFoX.D + 84, 77, 52, 77, 68, 69, 120, 79, 84, 65, 122, 77, // TM4MDExOTAzM + 84, 81, 119, 78, 49, 111, 119, 85, 68, 69, 107, 77, // TQwN1owUDEkM + 67, 73, 71, 65, 49, 85, 69, 67, 120, 77, 98, 82, // CIGA1UECxMbR + 50, 120, 118, 89, 109, 70, 115, 85, 50, 108, 110, 98, // 2xvYmFsU2lnb + 105, 66, 70, 81, 48, 77, 103, 85, 109, 57, 118, 100, // iBFQ0MgUm9vd + 67, 66, 68, 10, 81, 83, 65, 116, 73, 70, 73, 48, // CBD.QSAtIFI0 + 77, 82, 77, 119, 69, 81, 89, 68, 86, 81, 81, 75, // MRMwEQYDVQQK + 69, 119, 112, 72, 98, 71, 57, 105, 89, 87, 120, 84, // EwpHbG9iYWxT + 97, 87, 100, 117, 77, 82, 77, 119, 69, 81, 89, 68, // aWduMRMwEQYD + 86, 81, 81, 68, 69, 119, 112, 72, 98, 71, 57, 105, // VQQDEwpHbG9i + 89, 87, 120, 84, 97, 87, 100, 117, 10, 77, 70, 107, // YWxTaWdu.MFk + 119, 69, 119, 89, 72, 75, 111, 90, 73, 122, 106, 48, // wEwYHKoZIzj0 + 67, 65, 81, 89, 73, 75, 111, 90, 73, 122, 106, 48, // CAQYIKoZIzj0 + 68, 65, 81, 99, 68, 81, 103, 65, 69, 117, 77, 90, // DAQcDQgAEuMZ + 53, 48, 52, 57, 115, 74, 81, 54, 102, 76, 106, 107, // 5049sJQ6fLjk + 90, 72, 65, 79, 107, 114, 112, 114, 108, 79, 81, 99, // ZHAOkrprlOQc + 74, 10, 70, 115, 112, 106, 115, 98, 109, 71, 43, 73, // J.FspjsbmG+I + 112, 88, 119, 86, 102, 79, 81, 118, 112, 122, 111, 102, // pXwVfOQvpzof + 100, 108, 81, 118, 56, 101, 119, 81, 67, 121, 98, 110, // dlQv8ewQCybn + 77, 79, 47, 56, 99, 104, 53, 82, 105, 107, 113, 116, // MO/8ch5Rikqt + 108, 120, 80, 54, 106, 85, 117, 99, 54, 77, 72, 97, // lxP6jUuc6MHa + 78, 67, 77, 69, 65, 119, 10, 68, 103, 89, 68, 86, // NCMEAw.DgYDV + 82, 48, 80, 65, 81, 72, 47, 66, 65, 81, 68, 65, // R0PAQH/BAQDA + 103, 69, 71, 77, 65, 56, 71, 65, 49, 85, 100, 69, // gEGMA8GA1UdE + 119, 69, 66, 47, 119, 81, 70, 77, 65, 77, 66, 65, // wEB/wQFMAMBA + 102, 56, 119, 72, 81, 89, 68, 86, 82, 48, 79, 66, // f8wHQYDVR0OB + 66, 89, 69, 70, 70, 83, 119, 101, 54, 49, 70, 10, // BYEFFSwe61F. + 117, 79, 74, 65, 102, 47, 115, 75, 98, 118, 117, 43, // uOJAf/sKbvu+ + 77, 56, 107, 56, 111, 52, 84, 86, 77, 65, 111, 71, // M8k8o4TVMAoG + 67, 67, 113, 71, 83, 77, 52, 57, 66, 65, 77, 67, // CCqGSM49BAMC + 65, 48, 103, 65, 77, 69, 85, 67, 73, 81, 68, 99, // A0gAMEUCIQDc + 107, 113, 71, 103, 69, 54, 98, 80, 65, 55, 68, 109, // kqGgE6bPA7Dm + 120, 67, 71, 88, 10, 107, 80, 111, 85, 86, 121, 48, // xCGX.kPoUVy0 + 68, 55, 79, 52, 56, 48, 50, 55, 75, 113, 71, 120, // D7O48027KqGx + 50, 118, 75, 76, 101, 117, 119, 73, 103, 74, 54, 105, // 2vKLeuwIgJ6i + 70, 74, 122, 87, 98, 86, 115, 97, 106, 56, 107, 102, // FJzWbVsaj8kf + 83, 116, 50, 52, 98, 65, 103, 65, 88, 113, 109, 101, // St24bAgAXqme + 109, 70, 90, 72, 101, 43, 112, 84, 115, 10, 101, 119, // mFZHe+pTs.ew + 118, 52, 110, 52, 81, 61, 10, 45, 45, 45, 45, 45, // v4n4Q=.----- + 69, 78, 68, 32, 67, 69, 82, 84, 73, 70, 73, 67, // END CERTIFIC + 65, 84, 69, 45, 45, 45, 45, 45, 10, 10, 78, 111, // ATE-----..No + 116, 32, 66, 101, 102, 111, 114, 101, 58, 32, 78, 111, // t Before: No + 118, 32, 32, 49, 32, 48, 48, 58, 48, 48, 58, 52, // v 1 00:00:4 + 50, 32, 50, 48, 49, 56, 32, 71, 77, 84, 10, 78, // 2 2018 GMT.N + 111, 116, 32, 65, 102, 116, 101, 114, 32, 58, 32, 78, // ot After : N + 111, 118, 32, 32, 49, 32, 48, 48, 58, 48, 48, 58, // ov 1 00:00: + 52, 50, 32, 50, 48, 52, 50, 32, 71, 77, 84, 10, // 42 2042 GMT. + 83, 117, 98, 106, 101, 99, 116, 58, 32, 67, 32, 61, // Subject: C = + 32, 85, 83, 44, 32, 79, 32, 61, 32, 71, 111, 111, // US, O = Goo + 103, 108, 101, 32, 84, 114, 117, 115, 116, 32, 83, 101, // gle Trust Se + 114, 118, 105, 99, 101, 115, 32, 76, 76, 67, 44, 32, // rvices LLC, + 67, 78, 32, 61, 32, 71, 84, 83, 32, 76, 84, 83, // CN = GTS LTS + 82, 10, 45, 45, 45, 45, 45, 66, 69, 71, 73, 78, // R.-----BEGIN + 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, // CERTIFICATE + 45, 45, 45, 45, 45, 10, 77, 73, 73, 66, 120, 84, // -----.MIIBxT + 67, 67, 65, 87, 117, 103, 65, 119, 73, 66, 65, 103, // CCAWugAwIBAg + 73, 78, 65, 102, 68, 51, 110, 86, 110, 100, 98, 108, // INAfD3nVndbl + 68, 51, 81, 110, 78, 120, 85, 68, 65, 75, 66, 103, // D3QnNxUDAKBg + 103, 113, 104, 107, 106, 79, 80, 81, 81, 68, 65, 106, // gqhkjOPQQDAj + 66, 69, 77, 81, 115, 119, 67, 81, 89, 68, 10, 86, // BEMQswCQYD.V + 81, 81, 71, 69, 119, 74, 86, 85, 122, 69, 105, 77, // QQGEwJVUzEiM + 67, 65, 71, 65, 49, 85, 69, 67, 104, 77, 90, 82, // CAGA1UEChMZR + 50, 57, 118, 90, 50, 120, 108, 73, 70, 82, 121, 100, // 29vZ2xlIFRyd + 88, 78, 48, 73, 70, 78, 108, 99, 110, 90, 112, 89, // XN0IFNlcnZpY + 50, 86, 122, 73, 69, 120, 77, 81, 122, 69, 82, 77, // 2VzIExMQzERM + 65, 56, 71, 10, 65, 49, 85, 69, 65, 120, 77, 73, // A8G.A1UEAxMI + 82, 49, 82, 84, 73, 69, 120, 85, 85, 49, 73, 119, // R1RTIExUU1Iw + 72, 104, 99, 78, 77, 84, 103, 120, 77, 84, 65, 120, // HhcNMTgxMTAx + 77, 68, 65, 119, 77, 68, 81, 121, 87, 104, 99, 78, // MDAwMDQyWhcN + 78, 68, 73, 120, 77, 84, 65, 120, 77, 68, 65, 119, // NDIxMTAxMDAw + 77, 68, 81, 121, 87, 106, 66, 69, 10, 77, 81, 115, // MDQyWjBE.MQs + 119, 67, 81, 89, 68, 86, 81, 81, 71, 69, 119, 74, // wCQYDVQQGEwJ + 86, 85, 122, 69, 105, 77, 67, 65, 71, 65, 49, 85, // VUzEiMCAGA1U + 69, 67, 104, 77, 90, 82, 50, 57, 118, 90, 50, 120, // EChMZR29vZ2x + 108, 73, 70, 82, 121, 100, 88, 78, 48, 73, 70, 78, // lIFRydXN0IFN + 108, 99, 110, 90, 112, 89, 50, 86, 122, 73, 69, 120, // lcnZpY2VzIEx + 77, 10, 81, 122, 69, 82, 77, 65, 56, 71, 65, 49, // M.QzERMA8GA1 + 85, 69, 65, 120, 77, 73, 82, 49, 82, 84, 73, 69, // UEAxMIR1RTIE + 120, 85, 85, 49, 73, 119, 87, 84, 65, 84, 66, 103, // xUU1IwWTATBg + 99, 113, 104, 107, 106, 79, 80, 81, 73, 66, 66, 103, // cqhkjOPQIBBg + 103, 113, 104, 107, 106, 79, 80, 81, 77, 66, 66, 119, // gqhkjOPQMBBw + 78, 67, 65, 65, 84, 78, 10, 56, 89, 121, 79, 50, // NCAATN.8YyO2 + 117, 43, 121, 67, 81, 111, 90, 100, 119, 65, 107, 85, // u+yCQoZdwAkU + 78, 118, 53, 99, 51, 100, 111, 107, 102, 85, 76, 102, // Nv5c3dokfULf + 114, 65, 54, 81, 74, 103, 70, 86, 50, 88, 77, 117, // rA6QJgFV2XMu + 69, 78, 116, 81, 90, 73, 71, 53, 72, 85, 79, 83, // ENtQZIG5HUOS + 54, 106, 70, 110, 56, 102, 48, 121, 83, 108, 86, 10, // 6jFn8f0ySlV. + 101, 79, 82, 67, 120, 113, 70, 121, 106, 68, 74, 121, // eORCxqFyjDJy + 82, 110, 56, 54, 100, 43, 73, 107, 111, 48, 73, 119, // Rn86d+Iko0Iw + 81, 68, 65, 79, 66, 103, 78, 86, 72, 81, 56, 66, // QDAOBgNVHQ8B + 65, 102, 56, 69, 66, 65, 77, 67, 65, 89, 89, 119, // Af8EBAMCAYYw + 68, 119, 89, 68, 86, 82, 48, 84, 65, 81, 72, 47, // DwYDVR0TAQH/ + 66, 65, 85, 119, 10, 65, 119, 69, 66, 47, 122, 65, // BAUw.AwEB/zA + 100, 66, 103, 78, 86, 72, 81, 52, 69, 70, 103, 81, // dBgNVHQ4EFgQ + 85, 80, 118, 55, 47, 122, 70, 76, 114, 118, 122, 81, // UPv7/zFLrvzQ + 43, 80, 102, 78, 65, 48, 79, 81, 108, 115, 86, 43, // +PfNA0OQlsV+ + 52, 117, 49, 73, 119, 67, 103, 89, 73, 75, 111, 90, // 4u1IwCgYIKoZ + 73, 122, 106, 48, 69, 65, 119, 73, 68, 10, 83, 65, // Izj0EAwID.SA + 65, 119, 82, 81, 73, 104, 65, 80, 75, 117, 102, 47, // AwRQIhAPKuf/ + 86, 116, 66, 72, 113, 71, 119, 51, 84, 85, 119, 85, // VtBHqGw3TUwU + 73, 113, 55, 84, 102, 97, 69, 120, 112, 51, 98, 72, // Iq7TfaExp3bH + 55, 98, 106, 67, 66, 109, 86, 88, 74, 117, 112, 84, // 7bjCBmVXJupT + 57, 70, 65, 105, 66, 114, 48, 83, 109, 67, 116, 115, // 9FAiBr0SmCts + 117, 107, 10, 109, 105, 71, 103, 112, 97, 106, 106, 102, // uk.miGgpajjf + 47, 103, 70, 105, 103, 71, 77, 51, 52, 70, 57, 48, // /gFigGM34F90 + 50, 49, 98, 67, 87, 115, 49, 77, 98, 76, 48, 83, // 21bCWs1MbL0S + 65, 61, 61, 10, 45, 45, 45, 45, 45, 69, 78, 68, // A==.-----END + 32, 67, 69, 82, 84, 73, 70, 73, 67, 65, 84, 69, // CERTIFICATE + 45, 45, 45, 45, 45, 10, 10, 0 // -----.. +}; + +static const struct packed_file { + const char *name; + const unsigned char *data; + size_t size; + time_t mtime; +} packed_files[] = { + {"/certs/client_ca.pem", v1, sizeof(v1), 1694016785}, + {NULL, NULL, 0, 0} +}; + +static int scmp(const char *a, const char *b) { + while (*a && (*a == *b)) a++, b++; + return *(const unsigned char *) a - *(const unsigned char *) b; +} +const char *mg_unlist(size_t no) { + return packed_files[no].name; +} +const char *mg_unpack(const char *name, size_t *size, time_t *mtime) { + const struct packed_file *p; + for (p = packed_files; p->name != NULL; p++) { + if (scmp(p->name, name) != 0) continue; + if (size != NULL) *size = p->size - 1; + if (mtime != NULL) *mtime = p->mtime; + return (const char *) p->data; + } + return NULL; +} diff --git a/examples/http-proxy-client/Makefile b/examples/http-proxy-client/Makefile index 4af0e480ea..e31ad06277 100644 --- a/examples/http-proxy-client/Makefile +++ b/examples/http-proxy-client/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 // see tutorial at https://mongoose.ws/tutorials/http-proxy-client/ ARGS ?= 167.235.63.238:3128 http://info.cern.ch/ # default call arguments diff --git a/examples/http-proxy-client/ca.pem b/examples/http-proxy-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/http-proxy-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-proxy-client/main.c b/examples/http-proxy-client/main.c index a90167bf61..7f9e3e89f8 100644 --- a/examples/http-proxy-client/main.c +++ b/examples/http-proxy-client/main.c @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) { } mg_mgr_init(&mgr); // Initialise event manager - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_http_connect(&mgr, argv[1], fn, argv[2]); // Connect to the proxy for (;;) mg_mgr_poll(&mgr, 1000); // Event loop diff --git a/examples/http-proxy-client/packed_fs.c b/examples/http-proxy-client/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/http-proxy-client/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/http-restful-server/ca.pem b/examples/http-restful-server/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/http-restful-server/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-reverse-proxy/Makefile b/examples/http-reverse-proxy/Makefile index 4c35f940da..25f8151228 100644 --- a/examples/http-reverse-proxy/Makefile +++ b/examples/http-reverse-proxy/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -CFLAGS_MONGOOSE += -DMG_IO_SIZE=128 -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_IO_SIZE=128 -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/http-reverse-proxy/ca.pem b/examples/http-reverse-proxy/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/http-reverse-proxy/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-reverse-proxy/main.c b/examples/http-reverse-proxy/main.c index 1a38008049..a8c558d2f3 100644 --- a/examples/http-reverse-proxy/main.c +++ b/examples/http-reverse-proxy/main.c @@ -74,7 +74,7 @@ int main(void) { mg_log_set(MG_LL_DEBUG); // Set log level mg_mgr_init(&mgr); // Initialise event manager - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_http_listen(&mgr, s_listen_url, fn, NULL); // Start proxy for (;;) mg_mgr_poll(&mgr, 1000); // Event loop diff --git a/examples/http-reverse-proxy/packed_fs.c b/examples/http-reverse-proxy/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/http-reverse-proxy/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/http-streaming-client/Makefile b/examples/http-streaming-client/Makefile index bbdb7b6dd9..92e2836535 100644 --- a/examples/http-streaming-client/Makefile +++ b/examples/http-streaming-client/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/http-streaming-client/ca.pem b/examples/http-streaming-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/http-streaming-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/http-streaming-client/main.c b/examples/http-streaming-client/main.c index eef3eb99dc..fc8a46f677 100644 --- a/examples/http-streaming-client/main.c +++ b/examples/http-streaming-client/main.c @@ -56,7 +56,7 @@ int main(int argc, char *argv[]) { mg_log_set(atoi(log_level)); // Set to 0 to disable debug log if (argc > 1) s_url = argv[1]; // Use URL from command line - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_http_connect(&mgr, s_url, fn, &done); // Create client connection diff --git a/examples/http-streaming-client/packed_fs.c b/examples/http-streaming-client/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/http-streaming-client/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/mip-pcap/ca.pem b/examples/mip-pcap/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/mip-pcap/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/mip-tap/ca.pem b/examples/mip-tap/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/mip-tap/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/mqtt-client-aws-iot/Makefile b/examples/mqtt-client-aws-iot/Makefile index 762728ecd4..92e2836535 100644 --- a/examples/mqtt-client-aws-iot/Makefile +++ b/examples/mqtt-client-aws-iot/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/mqtt-client-aws-iot/ca.pem b/examples/mqtt-client-aws-iot/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/mqtt-client-aws-iot/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/mqtt-client-aws-iot/main.c b/examples/mqtt-client-aws-iot/main.c index 117141fa5f..a4bdf14c72 100644 --- a/examples/mqtt-client-aws-iot/main.c +++ b/examples/mqtt-client-aws-iot/main.c @@ -87,7 +87,7 @@ int main(void) { struct mg_mqtt_opts opts = {.clean = true}; bool done = false; mg_mgr_init(&mgr); // Initialise event manager - struct mg_tls_opts topts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts topts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; //TODO() 2-way auth and certificate loading mg_tls_ctx_init(&mgr, &topts); MG_INFO(("Connecting to %s", s_url)); // Inform that we're starting diff --git a/examples/mqtt-client-aws-iot/packed_fs.c b/examples/mqtt-client-aws-iot/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/mqtt-client-aws-iot/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/mqtt-client/Makefile b/examples/mqtt-client/Makefile index 762728ecd4..92e2836535 100644 --- a/examples/mqtt-client/Makefile +++ b/examples/mqtt-client/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/mqtt-client/ca.pem b/examples/mqtt-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/mqtt-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/mqtt-client/main.c b/examples/mqtt-client/main.c index 67352de15f..ae3b670717 100644 --- a/examples/mqtt-client/main.c +++ b/examples/mqtt-client/main.c @@ -101,7 +101,8 @@ int main(int argc, char *argv[]) { signal(SIGTERM, signal_handler); // manager loop on SIGINT and SIGTERM mg_mgr_init(&mgr); - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_timer_add(&mgr, 3000, MG_TIMER_REPEAT | MG_TIMER_RUN_NOW, timer_fn, &mgr); while (s_signo == 0) mg_mgr_poll(&mgr, 1000); // Event loop, 1s timeout diff --git a/examples/mqtt-client/packed_fs.c b/examples/mqtt-client/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/mqtt-client/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/mqtt-over-ws-client/Makefile b/examples/mqtt-over-ws-client/Makefile index 762728ecd4..92e2836535 100644 --- a/examples/mqtt-over-ws-client/Makefile +++ b/examples/mqtt-over-ws-client/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/mqtt-over-ws-client/ca.pem b/examples/mqtt-over-ws-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/mqtt-over-ws-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/mqtt-over-ws-client/main.c b/examples/mqtt-over-ws-client/main.c index feaa527532..14ab809cae 100644 --- a/examples/mqtt-over-ws-client/main.c +++ b/examples/mqtt-over-ws-client/main.c @@ -92,7 +92,7 @@ int main(void) { struct mg_mgr mgr; // Event manager bool done = false; // Event handler flips it to true when done mg_mgr_init(&mgr); // Initialise event manager - struct mg_tls_opts opts = {.client_ca = mg_str(CA_ALL)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_log_set(MG_LL_DEBUG); // Set log level mg_ws_connect(&mgr, s_url, fn, &done, NULL); // Create client connection diff --git a/examples/mqtt-over-ws-client/packed_fs.c b/examples/mqtt-over-ws-client/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/mqtt-over-ws-client/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/smtp-client/Makefile b/examples/smtp-client/Makefile index 762728ecd4..92e2836535 100644 --- a/examples/smtp-client/Makefile +++ b/examples/smtp-client/Makefile @@ -1,11 +1,11 @@ PROG ?= example # Program we are building DELETE = rm -rf # Command to remove files OUT ?= -o $(PROG) # Compiler argument for output file -SOURCES = main.c mongoose.c # Source code files +SOURCES = main.c mongoose.c packed_fs.c # Source code files, packed_fs.c contains ca.pem, which contains CA certs for TLS CFLAGS = -W -Wall -Wextra -g -I. # Build options # Mongoose build options. See https://mongoose.ws/documentation/#build-options -#CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 +CFLAGS_MONGOOSE += -DMG_ENABLE_LINES=1 -DMG_ENABLE_PACKED_FS=1 ifeq ($(OS),Windows_NT) # Windows settings. Assume MinGW compiler. To use VC: make CC=cl CFLAGS=/MD OUT=/Feprog.exe PROG ?= example.exe # Use .exe suffix for the binary diff --git a/examples/smtp-client/ca.pem b/examples/smtp-client/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/smtp-client/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/examples/smtp-client/main.c b/examples/smtp-client/main.c index 9bd768c496..7fa7a956dc 100644 --- a/examples/smtp-client/main.c +++ b/examples/smtp-client/main.c @@ -75,7 +75,7 @@ int main(void) { struct mg_mgr mgr; mg_mgr_init(&mgr); - struct mg_tls_opts opts = {.client_ca = mg_str(CA_GLOBALSIGN_RSA)}; + struct mg_tls_opts opts = {.client_ca = mg_unpacked("/certs/client_ca.pem")}; mg_tls_ctx_init(&mgr, &opts); mg_log_set(MG_LL_DEBUG); diff --git a/examples/smtp-client/packed_fs.c b/examples/smtp-client/packed_fs.c new file mode 120000 index 0000000000..3da43a3c83 --- /dev/null +++ b/examples/smtp-client/packed_fs.c @@ -0,0 +1 @@ +../http-client/packed_fs.c \ No newline at end of file diff --git a/examples/wifi-router-dashboard/ca.pem b/examples/wifi-router-dashboard/ca.pem deleted file mode 120000 index 8addd9e2f4..0000000000 --- a/examples/wifi-router-dashboard/ca.pem +++ /dev/null @@ -1 +0,0 @@ -../../test/data/ca.pem \ No newline at end of file diff --git a/mongoose.c b/mongoose.c index 9b4ae91666..49492fb141 100644 --- a/mongoose.c +++ b/mongoose.c @@ -3563,270 +3563,6 @@ struct mg_connection *mg_mqtt_listen(struct mg_mgr *mgr, const char *url, return c; } -#ifdef MG_ENABLE_LINES -#line 1 "src/net.c" -#endif - - - - - - - - -size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) { - size_t old = c->send.len; - mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); - return c->send.len - old; -} - -size_t mg_printf(struct mg_connection *c, const char *fmt, ...) { - size_t len = 0; - va_list ap; - va_start(ap, fmt); - len = mg_vprintf(c, fmt, &ap); - va_end(ap); - return len; -} - -static bool mg_atonl(struct mg_str str, struct mg_addr *addr) { - uint32_t localhost = mg_htonl(0x7f000001); - if (mg_vcasecmp(&str, "localhost") != 0) return false; - memcpy(addr->ip, &localhost, sizeof(uint32_t)); - addr->is_ip6 = false; - return true; -} - -static bool mg_atone(struct mg_str str, struct mg_addr *addr) { - if (str.len > 0) return false; - memset(addr->ip, 0, sizeof(addr->ip)); - addr->is_ip6 = false; - return true; -} - -static bool mg_aton4(struct mg_str str, struct mg_addr *addr) { - uint8_t data[4] = {0, 0, 0, 0}; - size_t i, num_dots = 0; - for (i = 0; i < str.len; i++) { - if (str.ptr[i] >= '0' && str.ptr[i] <= '9') { - int octet = data[num_dots] * 10 + (str.ptr[i] - '0'); - if (octet > 255) return false; - data[num_dots] = (uint8_t) octet; - } else if (str.ptr[i] == '.') { - if (num_dots >= 3 || i == 0 || str.ptr[i - 1] == '.') return false; - num_dots++; - } else { - return false; - } - } - if (num_dots != 3 || str.ptr[i - 1] == '.') return false; - memcpy(&addr->ip, data, sizeof(data)); - addr->is_ip6 = false; - return true; -} - -static bool mg_v4mapped(struct mg_str str, struct mg_addr *addr) { - int i; - uint32_t ipv4; - if (str.len < 14) return false; - if (str.ptr[0] != ':' || str.ptr[1] != ':' || str.ptr[6] != ':') return false; - for (i = 2; i < 6; i++) { - if (str.ptr[i] != 'f' && str.ptr[i] != 'F') return false; - } - // struct mg_str s = mg_str_n(&str.ptr[7], str.len - 7); - if (!mg_aton4(mg_str_n(&str.ptr[7], str.len - 7), addr)) return false; - memcpy(&ipv4, addr->ip, sizeof(ipv4)); - memset(addr->ip, 0, sizeof(addr->ip)); - addr->ip[10] = addr->ip[11] = 255; - memcpy(&addr->ip[12], &ipv4, 4); - addr->is_ip6 = true; - return true; -} - -static bool mg_aton6(struct mg_str str, struct mg_addr *addr) { - size_t i, j = 0, n = 0, dc = 42; - if (str.len > 2 && str.ptr[0] == '[') str.ptr++, str.len -= 2; - if (mg_v4mapped(str, addr)) return true; - for (i = 0; i < str.len; i++) { - if ((str.ptr[i] >= '0' && str.ptr[i] <= '9') || - (str.ptr[i] >= 'a' && str.ptr[i] <= 'f') || - (str.ptr[i] >= 'A' && str.ptr[i] <= 'F')) { - unsigned long val; - if (i > j + 3) return false; - // MG_DEBUG(("%zu %zu [%.*s]", i, j, (int) (i - j + 1), &str.ptr[j])); - val = mg_unhexn(&str.ptr[j], i - j + 1); - addr->ip[n] = (uint8_t) ((val >> 8) & 255); - addr->ip[n + 1] = (uint8_t) (val & 255); - } else if (str.ptr[i] == ':') { - j = i + 1; - if (i > 0 && str.ptr[i - 1] == ':') { - dc = n; // Double colon - if (i > 1 && str.ptr[i - 2] == ':') return false; - } else if (i > 0) { - n += 2; - } - if (n > 14) return false; - addr->ip[n] = addr->ip[n + 1] = 0; // For trailing :: - } else { - return false; - } - } - if (n < 14 && dc == 42) return false; - if (n < 14) { - memmove(&addr->ip[dc + (14 - n)], &addr->ip[dc], n - dc + 2); - memset(&addr->ip[dc], 0, 14 - n); - } - - addr->is_ip6 = true; - return true; -} - -bool mg_aton(struct mg_str str, struct mg_addr *addr) { - // MG_INFO(("[%.*s]", (int) str.len, str.ptr)); - return mg_atone(str, addr) || mg_atonl(str, addr) || mg_aton4(str, addr) || - mg_aton6(str, addr); -} - -struct mg_connection *mg_alloc_conn(struct mg_mgr *mgr) { - struct mg_connection *c = - (struct mg_connection *) calloc(1, sizeof(*c) + mgr->extraconnsize); - if (c != NULL) { - c->mgr = mgr; - c->send.align = c->recv.align = MG_IO_SIZE; - c->id = ++mgr->nextid; - } - return c; -} - -void mg_close_conn(struct mg_connection *c) { - mg_resolve_cancel(c); // Close any pending DNS query - LIST_DELETE(struct mg_connection, &c->mgr->conns, c); - if (c == c->mgr->dns4.c) c->mgr->dns4.c = NULL; - if (c == c->mgr->dns6.c) c->mgr->dns6.c = NULL; - // Order of operations is important. `MG_EV_CLOSE` event must be fired - // before we deallocate received data, see #1331 - mg_call(c, MG_EV_CLOSE, NULL); - MG_DEBUG(("%lu %p closed", c->id, c->fd)); - - mg_tls_free(c); - mg_iobuf_free(&c->recv); - mg_iobuf_free(&c->send); - memset(c, 0, sizeof(*c)); - free(c); -} - -struct mg_connection *mg_connect(struct mg_mgr *mgr, const char *url, - mg_event_handler_t fn, void *fn_data) { - struct mg_connection *c = NULL; - if (url == NULL || url[0] == '\0') { - MG_ERROR(("null url")); - } else if ((c = mg_alloc_conn(mgr)) == NULL) { - MG_ERROR(("OOM")); - } else { - LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); - c->is_udp = (strncmp(url, "udp:", 4) == 0); - c->fd = (void *) (size_t) MG_INVALID_SOCKET; - c->fn = fn; - c->is_client = true; - c->fn_data = fn_data; - MG_DEBUG(("%lu %p %s", c->id, c->fd, url)); - mg_call(c, MG_EV_OPEN, (void *) url); - mg_resolve(c, url); - if (mg_url_is_ssl(url)) { - struct mg_str host = mg_url_host(url); - mg_tls_init(c, host); - } - } - return c; -} - -struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url, - mg_event_handler_t fn, void *fn_data) { - struct mg_connection *c = NULL; - if ((c = mg_alloc_conn(mgr)) == NULL) { - MG_ERROR(("OOM %s", url)); - } else if (!mg_open_listener(c, url)) { - MG_ERROR(("Failed: %s, errno %d", url, errno)); - free(c); - c = NULL; - } else { - c->is_listening = 1; - c->is_udp = strncmp(url, "udp:", 4) == 0; - LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); - c->fn = fn; - c->fn_data = fn_data; - mg_call(c, MG_EV_OPEN, NULL); - if (mg_url_is_ssl(url)) c->is_tls = 1; // Accepted connection must - MG_DEBUG(("%lu %p %s", c->id, c->fd, url)); - } - return c; -} - -struct mg_connection *mg_wrapfd(struct mg_mgr *mgr, int fd, - mg_event_handler_t fn, void *fn_data) { - struct mg_connection *c = mg_alloc_conn(mgr); - if (c != NULL) { - c->fd = (void *) (size_t) fd; - c->fn = fn; - c->fn_data = fn_data; - MG_EPOLL_ADD(c); - mg_call(c, MG_EV_OPEN, NULL); - LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); - } - return c; -} - -struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds, - unsigned flags, void (*fn)(void *), void *arg) { - struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t)); - if (t != NULL) { - mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg); - t->id = mgr->timerid++; - } - return t; -} - -void mg_mgr_free(struct mg_mgr *mgr) { - struct mg_connection *c; - struct mg_timer *tmp, *t = mgr->timers; - while (t != NULL) tmp = t->next, free(t), t = tmp; - mgr->timers = NULL; // Important. Next call to poll won't touch timers - for (c = mgr->conns; c != NULL; c = c->next) c->is_closing = 1; - mg_mgr_poll(mgr, 0); -#if MG_ENABLE_FREERTOS_TCP - FreeRTOS_DeleteSocketSet(mgr->ss); -#endif - MG_DEBUG(("All connections closed")); -#if MG_ENABLE_EPOLL - if (mgr->epoll_fd >= 0) close(mgr->epoll_fd), mgr->epoll_fd = -1; -#endif - mg_tls_ctx_free(mgr); -} - -void mg_mgr_init(struct mg_mgr *mgr) { - memset(mgr, 0, sizeof(*mgr)); -#if MG_ENABLE_EPOLL - if ((mgr->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0) - MG_ERROR(("epoll_create1 errno %d", errno)); -#else - mgr->epoll_fd = -1; -#endif -#if MG_ARCH == MG_ARCH_WIN32 && MG_ENABLE_WINSOCK - // clang-format off - { WSADATA data; WSAStartup(MAKEWORD(2, 2), &data); } - // clang-format on -#elif MG_ENABLE_FREERTOS_TCP - mgr->ss = FreeRTOS_CreateSocketSet(); -#elif defined(__unix) || defined(__unix__) || defined(__APPLE__) - // Ignore SIGPIPE signal, so if client cancels the request, it - // won't kill the whole process. - signal(SIGPIPE, SIG_IGN); -#endif - mgr->dnstimeout = 3000; - mgr->dns4.url = "udp://8.8.8.8:53"; - mgr->dns6.url = "udp://[2001:4860:4860::8888]:53"; -} - #ifdef MG_ENABLE_LINES #line 1 "src/net_builtin.c" #endif @@ -4783,144 +4519,408 @@ void mg_tcpip_init(struct mg_mgr *mgr, struct mg_tcpip_if *ifp) { } } -void mg_tcpip_free(struct mg_tcpip_if *ifp) { - free(ifp->recv_queue.buf); - free((char *) ifp->tx.ptr); +void mg_tcpip_free(struct mg_tcpip_if *ifp) { + free(ifp->recv_queue.buf); + free((char *) ifp->tx.ptr); +} + +int mg_mkpipe(struct mg_mgr *m, mg_event_handler_t fn, void *d, bool udp) { + (void) m, (void) fn, (void) d, (void) udp; + MG_ERROR(("Not implemented")); + return -1; +} + +static void send_syn(struct mg_connection *c) { + struct connstate *s = (struct connstate *) (c + 1); + uint32_t isn = mg_htonl((uint32_t) mg_ntohs(c->loc.port)); + struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; + uint32_t rem_ip; + memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); + tx_tcp(ifp, s->mac, rem_ip, TH_SYN, c->loc.port, c->rem.port, isn, 0, NULL, + 0); +} + +void mg_connect_resolved(struct mg_connection *c) { + struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; + uint32_t rem_ip; + memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); + c->is_resolving = 0; + if (ifp->eport < MG_EPHEMERAL_PORT_BASE) ifp->eport = MG_EPHEMERAL_PORT_BASE; + memcpy(c->loc.ip, &ifp->ip, sizeof(uint32_t)); + c->loc.port = mg_htons(ifp->eport++); + MG_DEBUG(("%lu %M -> %M", c->id, mg_print_ip_port, &c->loc, mg_print_ip_port, + &c->rem)); + mg_call(c, MG_EV_RESOLVE, NULL); + if (((rem_ip & ifp->mask) == (ifp->ip & ifp->mask))) { + // If we're in the same LAN, fire an ARP lookup. + MG_DEBUG(("%lu ARP lookup...", c->id)); + arp_ask(ifp, rem_ip); + settmout(c, MIP_TTYPE_ARP); + c->is_arplooking = 1; + c->is_connecting = 1; + } else if (rem_ip == (ifp->ip | ~ifp->mask)) { + struct connstate *s = (struct connstate *) (c + 1); + memset(s->mac, 0xFF, sizeof(s->mac)); // local broadcast + } else if ((*((uint8_t *) &rem_ip) & 0xE0) == 0xE0) { + struct connstate *s = (struct connstate *) (c + 1); // 224 to 239, E0 to EF + uint8_t mcastp[3] = {0x01, 0x00, 0x5E}; // multicast group + memcpy(s->mac, mcastp, 3); + memcpy(s->mac + 3, ((uint8_t *) &rem_ip) + 1, 3); // 23 LSb + s->mac[3] &= 0x7F; + } else { + struct connstate *s = (struct connstate *) (c + 1); + memcpy(s->mac, ifp->gwmac, sizeof(ifp->gwmac)); + if (c->is_udp) { + mg_call(c, MG_EV_CONNECT, NULL); + } else { + send_syn(c); + settmout(c, MIP_TTYPE_SYN); + c->is_connecting = 1; + } + } +} + +bool mg_open_listener(struct mg_connection *c, const char *url) { + c->loc.port = mg_htons(mg_url_port(url)); + return true; +} + +static void write_conn(struct mg_connection *c) { + long len = c->is_tls ? mg_tls_send(c, c->send.buf, c->send.len) + : mg_io_send(c, c->send.buf, c->send.len); + if (len > 0) { + mg_iobuf_del(&c->send, 0, (size_t) len); + mg_call(c, MG_EV_WRITE, &len); + } +} + +static void init_closure(struct mg_connection *c) { + struct connstate *s = (struct connstate *) (c + 1); + if (c->is_udp == false && c->is_listening == false && + c->is_connecting == false) { // For TCP conns, + struct mg_tcpip_if *ifp = + (struct mg_tcpip_if *) c->mgr->priv; // send TCP FIN + uint32_t rem_ip; + memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); + tx_tcp(ifp, s->mac, rem_ip, TH_FIN | TH_ACK, c->loc.port, c->rem.port, + mg_htonl(s->seq), mg_htonl(s->ack), NULL, 0); + settmout(c, MIP_TTYPE_FIN); + } +} + +static void close_conn(struct mg_connection *c) { + struct connstate *s = (struct connstate *) (c + 1); + mg_iobuf_free(&s->raw); // For TLS connections, release raw data + mg_close_conn(c); +} + +static bool can_write(struct mg_connection *c) { + return c->is_connecting == 0 && c->is_resolving == 0 && c->send.len > 0 && + c->is_tls_hs == 0 && c->is_arplooking == 0; +} + +void mg_mgr_poll(struct mg_mgr *mgr, int ms) { + struct mg_connection *c, *tmp; + uint64_t now = mg_millis(); + mg_tcpip_poll((struct mg_tcpip_if *) mgr->priv, now); + mg_timer_poll(&mgr->timers, now); + for (c = mgr->conns; c != NULL; c = tmp) { + tmp = c->next; + struct connstate *s = (struct connstate *) (c + 1); + mg_call(c, MG_EV_POLL, &now); + MG_VERBOSE(("%lu .. %c%c%c%c%c", c->id, c->is_tls ? 'T' : 't', + c->is_connecting ? 'C' : 'c', c->is_tls_hs ? 'H' : 'h', + c->is_resolving ? 'R' : 'r', c->is_closing ? 'C' : 'c')); + if (c->is_tls_hs) mg_tls_handshake(c); + if (can_write(c)) write_conn(c); + if (c->is_draining && c->send.len == 0 && s->ttype != MIP_TTYPE_FIN) + init_closure(c); + if (c->is_closing) close_conn(c); + } + (void) ms; +} + +bool mg_send(struct mg_connection *c, const void *buf, size_t len) { + struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; + bool res = false; + uint32_t rem_ip; + memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); + if (ifp->ip == 0 || ifp->state != MG_TCPIP_STATE_READY) { + mg_error(c, "net down"); + } else if (c->is_udp) { + struct connstate *s = (struct connstate *) (c + 1); + tx_udp(ifp, s->mac, ifp->ip, c->loc.port, rem_ip, c->rem.port, buf, len); + res = true; + } else { + res = mg_iobuf_add(&c->send, c->send.len, buf, len); + } + return res; +} +#endif // MG_ENABLE_TCPIP + +#ifdef MG_ENABLE_LINES +#line 1 "src/net.c" +#endif + + + + + + + + +size_t mg_vprintf(struct mg_connection *c, const char *fmt, va_list *ap) { + size_t old = c->send.len; + mg_vxprintf(mg_pfn_iobuf, &c->send, fmt, ap); + return c->send.len - old; +} + +size_t mg_printf(struct mg_connection *c, const char *fmt, ...) { + size_t len = 0; + va_list ap; + va_start(ap, fmt); + len = mg_vprintf(c, fmt, &ap); + va_end(ap); + return len; +} + +static bool mg_atonl(struct mg_str str, struct mg_addr *addr) { + uint32_t localhost = mg_htonl(0x7f000001); + if (mg_vcasecmp(&str, "localhost") != 0) return false; + memcpy(addr->ip, &localhost, sizeof(uint32_t)); + addr->is_ip6 = false; + return true; +} + +static bool mg_atone(struct mg_str str, struct mg_addr *addr) { + if (str.len > 0) return false; + memset(addr->ip, 0, sizeof(addr->ip)); + addr->is_ip6 = false; + return true; +} + +static bool mg_aton4(struct mg_str str, struct mg_addr *addr) { + uint8_t data[4] = {0, 0, 0, 0}; + size_t i, num_dots = 0; + for (i = 0; i < str.len; i++) { + if (str.ptr[i] >= '0' && str.ptr[i] <= '9') { + int octet = data[num_dots] * 10 + (str.ptr[i] - '0'); + if (octet > 255) return false; + data[num_dots] = (uint8_t) octet; + } else if (str.ptr[i] == '.') { + if (num_dots >= 3 || i == 0 || str.ptr[i - 1] == '.') return false; + num_dots++; + } else { + return false; + } + } + if (num_dots != 3 || str.ptr[i - 1] == '.') return false; + memcpy(&addr->ip, data, sizeof(data)); + addr->is_ip6 = false; + return true; +} + +static bool mg_v4mapped(struct mg_str str, struct mg_addr *addr) { + int i; + uint32_t ipv4; + if (str.len < 14) return false; + if (str.ptr[0] != ':' || str.ptr[1] != ':' || str.ptr[6] != ':') return false; + for (i = 2; i < 6; i++) { + if (str.ptr[i] != 'f' && str.ptr[i] != 'F') return false; + } + // struct mg_str s = mg_str_n(&str.ptr[7], str.len - 7); + if (!mg_aton4(mg_str_n(&str.ptr[7], str.len - 7), addr)) return false; + memcpy(&ipv4, addr->ip, sizeof(ipv4)); + memset(addr->ip, 0, sizeof(addr->ip)); + addr->ip[10] = addr->ip[11] = 255; + memcpy(&addr->ip[12], &ipv4, 4); + addr->is_ip6 = true; + return true; +} + +static bool mg_aton6(struct mg_str str, struct mg_addr *addr) { + size_t i, j = 0, n = 0, dc = 42; + if (str.len > 2 && str.ptr[0] == '[') str.ptr++, str.len -= 2; + if (mg_v4mapped(str, addr)) return true; + for (i = 0; i < str.len; i++) { + if ((str.ptr[i] >= '0' && str.ptr[i] <= '9') || + (str.ptr[i] >= 'a' && str.ptr[i] <= 'f') || + (str.ptr[i] >= 'A' && str.ptr[i] <= 'F')) { + unsigned long val; + if (i > j + 3) return false; + // MG_DEBUG(("%zu %zu [%.*s]", i, j, (int) (i - j + 1), &str.ptr[j])); + val = mg_unhexn(&str.ptr[j], i - j + 1); + addr->ip[n] = (uint8_t) ((val >> 8) & 255); + addr->ip[n + 1] = (uint8_t) (val & 255); + } else if (str.ptr[i] == ':') { + j = i + 1; + if (i > 0 && str.ptr[i - 1] == ':') { + dc = n; // Double colon + if (i > 1 && str.ptr[i - 2] == ':') return false; + } else if (i > 0) { + n += 2; + } + if (n > 14) return false; + addr->ip[n] = addr->ip[n + 1] = 0; // For trailing :: + } else { + return false; + } + } + if (n < 14 && dc == 42) return false; + if (n < 14) { + memmove(&addr->ip[dc + (14 - n)], &addr->ip[dc], n - dc + 2); + memset(&addr->ip[dc], 0, 14 - n); + } + + addr->is_ip6 = true; + return true; +} + +bool mg_aton(struct mg_str str, struct mg_addr *addr) { + // MG_INFO(("[%.*s]", (int) str.len, str.ptr)); + return mg_atone(str, addr) || mg_atonl(str, addr) || mg_aton4(str, addr) || + mg_aton6(str, addr); } -int mg_mkpipe(struct mg_mgr *m, mg_event_handler_t fn, void *d, bool udp) { - (void) m, (void) fn, (void) d, (void) udp; - MG_ERROR(("Not implemented")); - return -1; +struct mg_connection *mg_alloc_conn(struct mg_mgr *mgr) { + struct mg_connection *c = + (struct mg_connection *) calloc(1, sizeof(*c) + mgr->extraconnsize); + if (c != NULL) { + c->mgr = mgr; + c->send.align = c->recv.align = MG_IO_SIZE; + c->id = ++mgr->nextid; + } + return c; } -static void send_syn(struct mg_connection *c) { - struct connstate *s = (struct connstate *) (c + 1); - uint32_t isn = mg_htonl((uint32_t) mg_ntohs(c->loc.port)); - struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; - uint32_t rem_ip; - memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); - tx_tcp(ifp, s->mac, rem_ip, TH_SYN, c->loc.port, c->rem.port, isn, 0, NULL, - 0); +void mg_close_conn(struct mg_connection *c) { + mg_resolve_cancel(c); // Close any pending DNS query + LIST_DELETE(struct mg_connection, &c->mgr->conns, c); + if (c == c->mgr->dns4.c) c->mgr->dns4.c = NULL; + if (c == c->mgr->dns6.c) c->mgr->dns6.c = NULL; + // Order of operations is important. `MG_EV_CLOSE` event must be fired + // before we deallocate received data, see #1331 + mg_call(c, MG_EV_CLOSE, NULL); + MG_DEBUG(("%lu %p closed", c->id, c->fd)); + + mg_tls_free(c); + mg_iobuf_free(&c->recv); + mg_iobuf_free(&c->send); + memset(c, 0, sizeof(*c)); + free(c); } -void mg_connect_resolved(struct mg_connection *c) { - struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; - uint32_t rem_ip; - memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); - c->is_resolving = 0; - if (ifp->eport < MG_EPHEMERAL_PORT_BASE) ifp->eport = MG_EPHEMERAL_PORT_BASE; - memcpy(c->loc.ip, &ifp->ip, sizeof(uint32_t)); - c->loc.port = mg_htons(ifp->eport++); - MG_DEBUG(("%lu %M -> %M", c->id, mg_print_ip_port, &c->loc, mg_print_ip_port, - &c->rem)); - mg_call(c, MG_EV_RESOLVE, NULL); - if (((rem_ip & ifp->mask) == (ifp->ip & ifp->mask))) { - // If we're in the same LAN, fire an ARP lookup. - MG_DEBUG(("%lu ARP lookup...", c->id)); - arp_ask(ifp, rem_ip); - settmout(c, MIP_TTYPE_ARP); - c->is_arplooking = 1; - c->is_connecting = 1; - } else if (rem_ip == (ifp->ip | ~ifp->mask)) { - struct connstate *s = (struct connstate *) (c + 1); - memset(s->mac, 0xFF, sizeof(s->mac)); // local broadcast - } else if ((*((uint8_t *) &rem_ip) & 0xE0) == 0xE0) { - struct connstate *s = (struct connstate *) (c + 1); // 224 to 239, E0 to EF - uint8_t mcastp[3] = {0x01, 0x00, 0x5E}; // multicast group - memcpy(s->mac, mcastp, 3); - memcpy(s->mac + 3, ((uint8_t *) &rem_ip) + 1, 3); // 23 LSb - s->mac[3] &= 0x7F; +struct mg_connection *mg_connect(struct mg_mgr *mgr, const char *url, + mg_event_handler_t fn, void *fn_data) { + struct mg_connection *c = NULL; + if (url == NULL || url[0] == '\0') { + MG_ERROR(("null url")); + } else if ((c = mg_alloc_conn(mgr)) == NULL) { + MG_ERROR(("OOM")); } else { - struct connstate *s = (struct connstate *) (c + 1); - memcpy(s->mac, ifp->gwmac, sizeof(ifp->gwmac)); - if (c->is_udp) { - mg_call(c, MG_EV_CONNECT, NULL); - } else { - send_syn(c); - settmout(c, MIP_TTYPE_SYN); - c->is_connecting = 1; + LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); + c->is_udp = (strncmp(url, "udp:", 4) == 0); + c->fd = (void *) (size_t) MG_INVALID_SOCKET; + c->fn = fn; + c->is_client = true; + c->fn_data = fn_data; + MG_DEBUG(("%lu %p %s", c->id, c->fd, url)); + mg_call(c, MG_EV_OPEN, (void *) url); + mg_resolve(c, url); + if (mg_url_is_ssl(url)) { + struct mg_str host = mg_url_host(url); + mg_tls_init(c, host); } } + return c; } -bool mg_open_listener(struct mg_connection *c, const char *url) { - c->loc.port = mg_htons(mg_url_port(url)); - return true; -} - -static void write_conn(struct mg_connection *c) { - long len = c->is_tls ? mg_tls_send(c, c->send.buf, c->send.len) - : mg_io_send(c, c->send.buf, c->send.len); - if (len > 0) { - mg_iobuf_del(&c->send, 0, (size_t) len); - mg_call(c, MG_EV_WRITE, &len); +struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url, + mg_event_handler_t fn, void *fn_data) { + struct mg_connection *c = NULL; + if ((c = mg_alloc_conn(mgr)) == NULL) { + MG_ERROR(("OOM %s", url)); + } else if (!mg_open_listener(c, url)) { + MG_ERROR(("Failed: %s, errno %d", url, errno)); + free(c); + c = NULL; + } else { + c->is_listening = 1; + c->is_udp = strncmp(url, "udp:", 4) == 0; + LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); + c->fn = fn; + c->fn_data = fn_data; + mg_call(c, MG_EV_OPEN, NULL); + if (mg_url_is_ssl(url)) c->is_tls = 1; // Accepted connection must + MG_DEBUG(("%lu %p %s", c->id, c->fd, url)); } + return c; } -static void init_closure(struct mg_connection *c) { - struct connstate *s = (struct connstate *) (c + 1); - if (c->is_udp == false && c->is_listening == false && - c->is_connecting == false) { // For TCP conns, - struct mg_tcpip_if *ifp = - (struct mg_tcpip_if *) c->mgr->priv; // send TCP FIN - uint32_t rem_ip; - memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); - tx_tcp(ifp, s->mac, rem_ip, TH_FIN | TH_ACK, c->loc.port, c->rem.port, - mg_htonl(s->seq), mg_htonl(s->ack), NULL, 0); - settmout(c, MIP_TTYPE_FIN); +struct mg_connection *mg_wrapfd(struct mg_mgr *mgr, int fd, + mg_event_handler_t fn, void *fn_data) { + struct mg_connection *c = mg_alloc_conn(mgr); + if (c != NULL) { + c->fd = (void *) (size_t) fd; + c->fn = fn; + c->fn_data = fn_data; + MG_EPOLL_ADD(c); + mg_call(c, MG_EV_OPEN, NULL); + LIST_ADD_HEAD(struct mg_connection, &mgr->conns, c); } + return c; } -static void close_conn(struct mg_connection *c) { - struct connstate *s = (struct connstate *) (c + 1); - mg_iobuf_free(&s->raw); // For TLS connections, release raw data - mg_close_conn(c); -} - -static bool can_write(struct mg_connection *c) { - return c->is_connecting == 0 && c->is_resolving == 0 && c->send.len > 0 && - c->is_tls_hs == 0 && c->is_arplooking == 0; +struct mg_timer *mg_timer_add(struct mg_mgr *mgr, uint64_t milliseconds, + unsigned flags, void (*fn)(void *), void *arg) { + struct mg_timer *t = (struct mg_timer *) calloc(1, sizeof(*t)); + if (t != NULL) { + mg_timer_init(&mgr->timers, t, milliseconds, flags, fn, arg); + t->id = mgr->timerid++; + } + return t; } -void mg_mgr_poll(struct mg_mgr *mgr, int ms) { - struct mg_connection *c, *tmp; - uint64_t now = mg_millis(); - mg_tcpip_poll((struct mg_tcpip_if *) mgr->priv, now); - mg_timer_poll(&mgr->timers, now); - for (c = mgr->conns; c != NULL; c = tmp) { - tmp = c->next; - struct connstate *s = (struct connstate *) (c + 1); - mg_call(c, MG_EV_POLL, &now); - MG_VERBOSE(("%lu .. %c%c%c%c%c", c->id, c->is_tls ? 'T' : 't', - c->is_connecting ? 'C' : 'c', c->is_tls_hs ? 'H' : 'h', - c->is_resolving ? 'R' : 'r', c->is_closing ? 'C' : 'c')); - if (c->is_tls_hs) mg_tls_handshake(c); - if (can_write(c)) write_conn(c); - if (c->is_draining && c->send.len == 0 && s->ttype != MIP_TTYPE_FIN) - init_closure(c); - if (c->is_closing) close_conn(c); - } - (void) ms; +void mg_mgr_free(struct mg_mgr *mgr) { + struct mg_connection *c; + struct mg_timer *tmp, *t = mgr->timers; + while (t != NULL) tmp = t->next, free(t), t = tmp; + mgr->timers = NULL; // Important. Next call to poll won't touch timers + for (c = mgr->conns; c != NULL; c = c->next) c->is_closing = 1; + mg_mgr_poll(mgr, 0); +#if MG_ENABLE_FREERTOS_TCP + FreeRTOS_DeleteSocketSet(mgr->ss); +#endif + MG_DEBUG(("All connections closed")); +#if MG_ENABLE_EPOLL + if (mgr->epoll_fd >= 0) close(mgr->epoll_fd), mgr->epoll_fd = -1; +#endif + mg_tls_ctx_free(mgr); } -bool mg_send(struct mg_connection *c, const void *buf, size_t len) { - struct mg_tcpip_if *ifp = (struct mg_tcpip_if *) c->mgr->priv; - bool res = false; - uint32_t rem_ip; - memcpy(&rem_ip, c->rem.ip, sizeof(uint32_t)); - if (ifp->ip == 0 || ifp->state != MG_TCPIP_STATE_READY) { - mg_error(c, "net down"); - } else if (c->is_udp) { - struct connstate *s = (struct connstate *) (c + 1); - tx_udp(ifp, s->mac, ifp->ip, c->loc.port, rem_ip, c->rem.port, buf, len); - res = true; - } else { - res = mg_iobuf_add(&c->send, c->send.len, buf, len); - } - return res; +void mg_mgr_init(struct mg_mgr *mgr) { + memset(mgr, 0, sizeof(*mgr)); +#if MG_ENABLE_EPOLL + if ((mgr->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0) + MG_ERROR(("epoll_create1 errno %d", errno)); +#else + mgr->epoll_fd = -1; +#endif +#if MG_ARCH == MG_ARCH_WIN32 && MG_ENABLE_WINSOCK + // clang-format off + { WSADATA data; WSAStartup(MAKEWORD(2, 2), &data); } + // clang-format on +#elif MG_ENABLE_FREERTOS_TCP + mgr->ss = FreeRTOS_CreateSocketSet(); +#elif defined(__unix) || defined(__unix__) || defined(__APPLE__) + // Ignore SIGPIPE signal, so if client cancels the request, it + // won't kill the whole process. + signal(SIGPIPE, SIG_IGN); +#endif + mgr->dnstimeout = 3000; + mgr->dns4.url = "udp://8.8.8.8:53"; + mgr->dns6.url = "udp://[2001:4860:4860::8888]:53"; } -#endif // MG_ENABLE_TCPIP #ifdef MG_ENABLE_LINES #line 1 "src/ota_dummy.c" diff --git a/mongoose.h b/mongoose.h index 656367f891..c510a89ba9 100644 --- a/mongoose.h +++ b/mongoose.h @@ -1819,165 +1819,6 @@ struct mg_tcpip_driver_tm4c_data { int mdc_cr; // Valid values: -1, 0, 1, 2, 3 }; - -#define CA_ISRG_ROOT_X2 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw\n" \ - "CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg\n" \ - "R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00\n" \ - "MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT\n" \ - "ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw\n" \ - "EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW\n" \ - "+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9\n" \ - "ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T\n" \ - "AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI\n" \ - "zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW\n" \ - "tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1\n" \ - "/q4AaOeMSQ+2b1tbFfLn\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_ISRG_ROOT_X1 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\n" \ - "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" \ - "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\n" \ - "WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\n" \ - "ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\n" \ - "MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\n" \ - "h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n" \ - "0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\n" \ - "A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\n" \ - "T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\n" \ - "B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\n" \ - "B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\n" \ - "KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\n" \ - "OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\n" \ - "jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\n" \ - "qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\n" \ - "rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n" \ - "HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\n" \ - "hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\n" \ - "ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n" \ - "3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\n" \ - "NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\n" \ - "ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\n" \ - "TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\n" \ - "jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\n" \ - "oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n" \ - "4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\n" \ - "mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\n" \ - "emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GOOGLE_TRUST \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIBxTCCAWugAwIBAgINAfD3nVndblD3QnNxUDAKBggqhkjOPQQDAjBEMQswCQYD\n" \ - "VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzERMA8G\n" \ - "A1UEAxMIR1RTIExUU1IwHhcNMTgxMTAxMDAwMDQyWhcNNDIxMTAxMDAwMDQyWjBE\n" \ - "MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\n" \ - "QzERMA8GA1UEAxMIR1RTIExUU1IwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATN\n" \ - "8YyO2u+yCQoZdwAkUNv5c3dokfULfrA6QJgFV2XMuENtQZIG5HUOS6jFn8f0ySlV\n" \ - "eORCxqFyjDJyRn86d+Iko0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUw\n" \ - "AwEB/zAdBgNVHQ4EFgQUPv7/zFLrvzQ+PfNA0OQlsV+4u1IwCgYIKoZIzj0EAwID\n" \ - "SAAwRQIhAPKuf/VtBHqGw3TUwUIq7TfaExp3bH7bjCBmVXJupT9FAiBr0SmCtsuk\n" \ - "miGgpajjf/gFigGM34F9021bCWs1MbL0SA==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GLOBALSIGN_EC \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk\n" \ - "MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH\n" \ - "bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX\n" \ - "DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD\n" \ - "QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu\n" \ - "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ\n" \ - "FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw\n" \ - "DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F\n" \ - "uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX\n" \ - "kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs\n" \ - "ewv4n4Q=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GLOBALSIGN_RSA \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\n" \ - "A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\n" \ - "b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\n" \ - "MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\n" \ - "YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\n" \ - "aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\n" \ - "jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\n" \ - "xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n" \ - "1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\n" \ - "snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\n" \ - "U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n" \ - "9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\n" \ - "BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\n" \ - "AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\n" \ - "yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n" \ - "38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\n" \ - "AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\n" \ - "DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\n" \ - "HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_DIGICERT \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \ - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ - "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" \ - "QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n" \ - "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" \ - "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n" \ - "9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n" \ - "CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n" \ - "nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n" \ - "43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n" \ - "T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n" \ - "gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n" \ - "BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n" \ - "TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n" \ - "DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n" \ - "hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n" \ - "06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n" \ - "PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n" \ - "YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \ - "CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_AMAZON_4 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5\n" \ - "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n" \ - "Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n" \ - "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n" \ - "Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi\n" \ - "9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk\n" \ - "M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB\n" \ - "/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB\n" \ - "MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw\n" \ - "CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW\n" \ - "1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_AMAZON_3 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\n" \ - "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n" \ - "Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n" \ - "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n" \ - "Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\n" \ - "ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\n" \ - "QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\n" \ - "ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\n" \ - "BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\n" \ - "YyRIHN8wfdVoOw==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_ALL \ - CA_ISRG_ROOT_X1 CA_ISRG_ROOT_X2 CA_GOOGLE_TRUST CA_GLOBALSIGN_EC \ - CA_GLOBALSIGN_RSA CA_DIGICERT CA_AMAZON_4 CA_AMAZON_3 - #ifdef __cplusplus } #endif diff --git a/src/certs.h b/src/certs.h deleted file mode 100644 index c6658d5112..0000000000 --- a/src/certs.h +++ /dev/null @@ -1,159 +0,0 @@ -#pragma once - -#define CA_ISRG_ROOT_X2 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw\n" \ - "CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg\n" \ - "R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00\n" \ - "MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT\n" \ - "ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw\n" \ - "EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW\n" \ - "+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9\n" \ - "ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T\n" \ - "AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI\n" \ - "zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW\n" \ - "tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1\n" \ - "/q4AaOeMSQ+2b1tbFfLn\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_ISRG_ROOT_X1 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\n" \ - "TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\n" \ - "cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\n" \ - "WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\n" \ - "ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\n" \ - "MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\n" \ - "h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n" \ - "0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\n" \ - "A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\n" \ - "T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\n" \ - "B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\n" \ - "B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\n" \ - "KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\n" \ - "OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\n" \ - "jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\n" \ - "qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\n" \ - "rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\n" \ - "HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\n" \ - "hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\n" \ - "ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n" \ - "3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\n" \ - "NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\n" \ - "ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\n" \ - "TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\n" \ - "jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\n" \ - "oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n" \ - "4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\n" \ - "mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\n" \ - "emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GOOGLE_TRUST \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIBxTCCAWugAwIBAgINAfD3nVndblD3QnNxUDAKBggqhkjOPQQDAjBEMQswCQYD\n" \ - "VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzERMA8G\n" \ - "A1UEAxMIR1RTIExUU1IwHhcNMTgxMTAxMDAwMDQyWhcNNDIxMTAxMDAwMDQyWjBE\n" \ - "MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM\n" \ - "QzERMA8GA1UEAxMIR1RTIExUU1IwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATN\n" \ - "8YyO2u+yCQoZdwAkUNv5c3dokfULfrA6QJgFV2XMuENtQZIG5HUOS6jFn8f0ySlV\n" \ - "eORCxqFyjDJyRn86d+Iko0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUw\n" \ - "AwEB/zAdBgNVHQ4EFgQUPv7/zFLrvzQ+PfNA0OQlsV+4u1IwCgYIKoZIzj0EAwID\n" \ - "SAAwRQIhAPKuf/VtBHqGw3TUwUIq7TfaExp3bH7bjCBmVXJupT9FAiBr0SmCtsuk\n" \ - "miGgpajjf/gFigGM34F9021bCWs1MbL0SA==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GLOBALSIGN_EC \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk\n" \ - "MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH\n" \ - "bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX\n" \ - "DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD\n" \ - "QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu\n" \ - "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ\n" \ - "FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw\n" \ - "DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F\n" \ - "uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX\n" \ - "kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs\n" \ - "ewv4n4Q=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_GLOBALSIGN_RSA \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\n" \ - "A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\n" \ - "b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\n" \ - "MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\n" \ - "YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\n" \ - "aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\n" \ - "jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\n" \ - "xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n" \ - "1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\n" \ - "snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\n" \ - "U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n" \ - "9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\n" \ - "BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\n" \ - "AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\n" \ - "yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n" \ - "38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\n" \ - "AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\n" \ - "DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\n" \ - "HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_DIGICERT \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n" \ - "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n" \ - "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n" \ - "QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n" \ - "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n" \ - "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n" \ - "9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n" \ - "CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n" \ - "nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n" \ - "43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n" \ - "T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n" \ - "gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n" \ - "BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n" \ - "TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n" \ - "DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n" \ - "hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n" \ - "06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n" \ - "PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n" \ - "YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n" \ - "CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_AMAZON_4 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5\n" \ - "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n" \ - "Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n" \ - "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n" \ - "Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi\n" \ - "9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk\n" \ - "M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB\n" \ - "/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB\n" \ - "MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw\n" \ - "CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW\n" \ - "1KyLa2tJElMzrdfkviT8tQp21KW8EA==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_AMAZON_3 \ - "-----BEGIN CERTIFICATE-----\n" \ - "MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\n" \ - "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n" \ - "Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n" \ - "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n" \ - "Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\n" \ - "ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\n" \ - "QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\n" \ - "ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\n" \ - "BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\n" \ - "YyRIHN8wfdVoOw==\n" \ - "-----END CERTIFICATE-----\n" - -#define CA_ALL \ - CA_ISRG_ROOT_X1 CA_ISRG_ROOT_X2 CA_GOOGLE_TRUST CA_GLOBALSIGN_EC \ - CA_GLOBALSIGN_RSA CA_DIGICERT CA_AMAZON_4 CA_AMAZON_3 diff --git a/test/data/ca.pem b/test/data/ca.pem index 650097912c..9091ef920a 100644 --- a/test/data/ca.pem +++ b/test/data/ca.pem @@ -1,3 +1,5 @@ +- Make sure your PEM file starts with a dash - + Issuer: C = US, O = Internet Security Research Group, CN = ISRG Root X1 Not Before: Jun 4 11:04:38 2015 GMT Not After : Jun 4 11:04:38 2035 GMT diff --git a/test/unit_test.c b/test/unit_test.c index c54300ff80..1f9259eee9 100644 --- a/test/unit_test.c +++ b/test/unit_test.c @@ -760,8 +760,8 @@ static int fetch(struct mg_mgr *mgr, char *buf, const char *url, va_list ap; if (mgr->tls_ctx == NULL) { struct mg_tls_opts opts; - memset(&opts, 0, sizeof(opts)); - opts.client_ca = mg_str(CA_ISRG_ROOT_X1); + memset(&opts, 0, sizeof(opts)); // read CA from packed_fs + opts.client_ca = mg_unpacked("test/data/ca.pem"); if (strstr(url, "127.0.0.1") != NULL) { // Local connection, use self-signed certificates opts.client_ca = mg_str(s_tls_ca); @@ -1247,9 +1247,11 @@ static void test_http_client(void) { struct mg_mgr mgr; struct mg_connection *c = NULL; int i, ok = 0; + size_t size = 0; // read CA certs from plain file + char *data = mg_file_read(&mg_fs_posix, "test/data/ca.pem", &size); memset(&opts, 0, sizeof(opts)); mg_mgr_init(&mgr); - opts.client_ca = mg_str(CA_ISRG_ROOT_X2 CA_ISRG_ROOT_X1); + opts.client_ca = mg_str_n(data, size); mg_tls_ctx_init(&mgr, &opts); c = mg_http_connect(&mgr, "http://cesanta.com", f3, &ok); ASSERT(c != NULL); @@ -1305,6 +1307,7 @@ static void test_http_client(void) { mg_mgr_free(&mgr); ASSERT(mgr.conns == NULL); + free(data); } static void f4(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {