diff --git a/.gitignore b/.gitignore
index 259148f..bd8b478 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+build
+.vscode
+
# Prerequisites
*.d
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..eb97384
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,92 @@
+cmake_minimum_required(VERSION 2.8)
+
+if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
+ if(DEFINED ENV{VITASDK})
+ set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE PATH "toolchain file")
+ else()
+ message(FATAL_ERROR "Please define VITASDK to point to your SDK path!")
+ endif()
+endif()
+
+project(ftpclient)
+include("${VITASDK}/share/vita.cmake" REQUIRED)
+
+set(VITA_APP_NAME "Ftp Client")
+set(VITA_TITLEID "FTPCLIENT")
+set(VITA_VERSION "01.00")
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
+
+include_directories(
+ src
+)
+
+add_executable(${PROJECT_NAME}
+ src/textures.cpp
+ src/fs.cpp
+ src/main.cpp
+ src/inifile.c
+ src/config.cpp
+ src/style.cpp
+ src/ime_dialog.cpp
+ src/net.cpp
+ src/ftpclient.cpp
+ src/vitaaudiolib.c
+ src/gui.cpp
+ src/windows.cpp
+ src/actions.cpp
+ src/updater.cpp
+ src/sfo.cpp
+ src/audio.c
+ src/ogg.c
+ src/sha1.c
+ src/zip.c
+ src/unzip.c
+ src/ioapi.c
+)
+
+target_link_libraries(${PROJECT_NAME}
+ debugnet
+ vorbisfile
+ vorbis
+ ogg
+ vita2d
+ png
+ imgui_vita2d
+ stdc++
+ c
+ z
+ SceCommonDialog_stub
+ SceLibKernel_stub
+ SceDisplay_stub
+ SceGxm_stub
+ SceSysmodule_stub
+ SceCtrl_stub
+ SceTouch_stub
+ SceAudio_stub
+ SceHid_stub
+ SceNet_stub
+ SceNetCtl_stub
+ SceHttp_stub
+ SceSsl_stub
+ ScePspnetAdhoc_stub
+ ScePromoterUtil_stub
+ SceShellSvc_stub
+ m
+ SceAppMgr_stub
+ SceAppUtil_stub
+ SceShaccCg_stub
+)
+
+vita_create_self(eboot.bin ${PROJECT_NAME} UNSAFE)
+vita_create_vpk(${PROJECT_NAME}.vpk ${VITA_TITLEID} eboot.bin
+ VERSION ${VITA_VERSION}
+ NAME ${VITA_APP_NAME}
+ FILE sce_sys/icon0.png sce_sys/icon0.png
+ FILE sce_sys/livearea/contents/bg.png sce_sys/livearea/contents/bg.png
+ FILE sce_sys/livearea/contents/startup.png sce_sys/livearea/contents/startup.png
+ FILE sce_sys/livearea/contents/template.xml sce_sys/livearea/contents/template.xml
+ FILE default_style.ini default_style.ini
+ FILE head.bin head.bin
+ FILE music.ogg music.ogg
+)
diff --git a/default_style.ini b/default_style.ini
new file mode 100644
index 0000000..4fe5a94
--- /dev/null
+++ b/default_style.ini
@@ -0,0 +1,44 @@
+[Style]
+Text=1.00,1.00,1.00,1.00
+TextDisabled=0.50,0.50,0.50,1.00
+WindowBackgroud=0.06,0.06,0.06,0.94
+ChildBackground=0.00,0.00,0.00,0.00
+PopupBackground=0.08,0.08,0.08,0.94
+Border=0.43,0.43,0.50,0.50
+BorderShadhow=0.00,0.00,0.00,0.00
+FrameBackground=0.16,0.29,0.48,0.54
+FrameBackgroundHovered=0.26,0.59,0.98,0.40
+FrameBackgroundActive=0.26,0.59,0.98,0.67
+TitleBackground=0.04,0.04,0.04,1.00
+TitleBackgroundActive=0.16,0.29,0.48,1.00
+TitleBackgroundCollapsed=0.00,0.00,0.00,0.51
+MenuBarBackground=0.14,0.14,0.14,1.00
+ScrollbarBackground=0.02,0.02,0.02,0.53
+ScrollbarGrab=0.31,0.31,0.31,1.00
+ScrollbarGrabHovered=0.41,0.41,0.41,1.00
+ScrollbarGrabActive=0.51,0.51,0.51,1.00
+CheckMark=0.26,0.59,0.98,1.00
+SliderGrab=0.24,0.52,0.88,1.00
+SliderGrabActive=0.26,0.59,0.98,1.00
+Button=0.26,0.59,0.98,0.40
+ButtonHovered=0.26,0.59,0.98,1.00
+ButtonActive=0.06,0.53,0.98,1.00
+Header=0.26,0.59,0.98,0.31
+HeaderHovered=0.26,0.59,0.98,0.80
+HeaderActive=0.26,0.59,0.98,1.00
+Separator=0.43,0.43,0.50,0.50
+SeparatorHovered=0.10,0.40,0.75,0.78
+SeparatorActive=0.10,0.40,0.75,1.00
+ResizeGrip=0.26,0.59,0.98,0.25
+ResizeHovered=0.26,0.59,0.98,0.67
+ResizeGripActive=0.26,0.59,0.98,0.95
+Tab=0.18,0.35,0.58,0.86
+TabHovered=0.26,0.59,0.98,0.80
+TabActive=0.31,0.31,0.31,1.00
+TabUnocused=0.07,0.10,0.15,0.97
+TabUnocusedActive=0.14,0.26,0.42,0.76
+TextSelectedBackground=0.26,0.59,0.98,0.35
+NavigationHighlight=0.26,0.59,0.98,1.00
+NavigationWindowingHighlight=1.00,1.00,1.00,0.70
+NavigationWindowingDimBackground=0.80,0.80,0.80,0.20
+ModalWindowDimBackground=0.80,0.80,0.80,0.35
diff --git a/head.bin b/head.bin
new file mode 100644
index 0000000..0399fcb
Binary files /dev/null and b/head.bin differ
diff --git a/music.ogg b/music.ogg
new file mode 100755
index 0000000..ad65f61
Binary files /dev/null and b/music.ogg differ
diff --git a/sce_sys/icon0.png b/sce_sys/icon0.png
new file mode 100644
index 0000000..c3f9163
Binary files /dev/null and b/sce_sys/icon0.png differ
diff --git a/sce_sys/livearea/contents/bg.png b/sce_sys/livearea/contents/bg.png
new file mode 100644
index 0000000..b4abd5d
Binary files /dev/null and b/sce_sys/livearea/contents/bg.png differ
diff --git a/sce_sys/livearea/contents/startup.png b/sce_sys/livearea/contents/startup.png
new file mode 100644
index 0000000..3152ec5
Binary files /dev/null and b/sce_sys/livearea/contents/startup.png differ
diff --git a/sce_sys/livearea/contents/template.xml b/sce_sys/livearea/contents/template.xml
new file mode 100644
index 0000000..3fdeadf
--- /dev/null
+++ b/sce_sys/livearea/contents/template.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ bg.png
+
+
+
+ startup.png
+
+
diff --git a/src/actions.cpp b/src/actions.cpp
new file mode 100644
index 0000000..bfca2fd
--- /dev/null
+++ b/src/actions.cpp
@@ -0,0 +1,87 @@
+#include "fs.h"
+#include "config.h"
+#include "windows.h"
+#include "ftpclient.h"
+
+namespace Actions {
+
+ void HandleChangeLocalDirectory(FsEntry *entry)
+ {
+ if (!entry->isDir)
+ return;
+
+ if (strcmp(entry->name, "..") == 0)
+ {
+ std::string temp_path = std::string(entry->directory);
+ sprintf(local_directory, "%s", temp_path.substr(0, temp_path.find_last_of("/")).c_str());
+ sprintf(local_file_to_select, "%s", temp_path.substr(temp_path.find_last_of("/")+1).c_str());
+ }
+ else
+ {
+ sprintf(local_directory, "%s", entry->path);
+ sprintf(local_file_to_select, "..");
+ }
+ local_files.clear();
+ local_files = FS::ListDir(local_directory);
+ FS::Sort(local_files);
+ selected_local_file = nullptr;
+ selected_action = NONE;
+ }
+
+ void HandleChangeRemoteDirectory(FtpDirEntry *entry)
+ {
+ if (!entry->isDir)
+ return;
+
+ if (strcmp(entry->name, "..") == 0)
+ {
+ std::string temp_path = std::string(entry->directory);
+ if (temp_path.size()>1)
+ {
+ if (temp_path.find_last_of("/") == 0)
+ {
+ sprintf(remote_directory, "/");
+ }
+ else
+ {
+ sprintf(remote_directory, "%s", temp_path.substr(0, temp_path.find_last_of("/")).c_str());
+ }
+ }
+ sprintf(remote_file_to_select, "%s", temp_path.substr(temp_path.find_last_of("/")+1).c_str());
+ }
+ else
+ {
+ sprintf(remote_directory, "%s", entry->path);
+ sprintf(remote_file_to_select, "..");
+ }
+ remote_files.clear();
+ remote_files = ftpclient->ListDir(remote_directory);
+ sprintf(status_message, "%s", ftpclient->LastResponse());
+ FtpClient::Sort(remote_files);
+ selected_remote_file = nullptr;
+ selected_action = NONE;
+ }
+
+ void ConnectFTP()
+ {
+ if (ftpclient->Connect(ftp_settings.server_ip, ftp_settings.server_port))
+ {
+ if (ftpclient->Login(ftp_settings.username, ftp_settings.password))
+ {
+ remote_files.clear();
+ remote_files = ftpclient->ListDir(remote_directory);
+ FtpClient::Sort(remote_files);
+ sprintf(status_message, "%s", ftpclient->LastResponse());
+ }
+ else
+ {
+ snprintf(status_message, 1024, "%s", ftpclient->LastResponse());
+ }
+ }
+ else
+ {
+ snprintf(status_message, 1024, "%s", ftpclient->LastResponse());
+ }
+ selected_action = NONE;
+ }
+}
diff --git a/src/actions.h b/src/actions.h
new file mode 100644
index 0000000..2f559f5
--- /dev/null
+++ b/src/actions.h
@@ -0,0 +1,26 @@
+#ifndef ACTIONS_H
+#define ACTIONS_H
+
+#include "fs.h"
+
+enum ACTIONS {
+ NONE = 0,
+ CHANGE_LOCAL_DIRECTORY,
+ COPY_LOCAL,
+ PASTE_LOCAL,
+ DELETE_LOCAL,
+ CHANGE_REMOTE_DIRECTORY,
+ COPY_REMOTE,
+ PASTE_REMOTE,
+ DELETE_REMOTE,
+ CONNECT_FTP
+};
+
+namespace Actions {
+
+ void HandleChangeLocalDirectory(FsEntry *entry);
+ void HandleChangeRemoteDirectory(FtpDirEntry *entry);
+ void ConnectFTP();
+}
+
+#endif
\ No newline at end of file
diff --git a/src/audio.c b/src/audio.c
new file mode 100644
index 0000000..027d397
--- /dev/null
+++ b/src/audio.c
@@ -0,0 +1,107 @@
+#include
+#include
+#include
+
+#include "audio.h"
+#include "vitaaudiolib.h"
+#include "ogg.h"
+
+enum Audio_FileType {
+ FILE_TYPE_NONE,
+ FILE_TYPE_OGG
+};
+
+typedef struct {
+ int (* init)(const char *path);
+ SceUInt32 (* rate)(void);
+ SceUInt8 (* channels)(void);
+ void (* decode)(void *buf, unsigned int length, void *userdata);
+ SceUInt64 (* position)(void);
+ SceUInt64 (* length)(void);
+ SceUInt64 (* seek)(SceUInt64 index);
+ void (* term)(void);
+} Audio_Decoder;
+
+static enum Audio_FileType file_type = FILE_TYPE_NONE;
+Audio_Metadata metadata = {0};
+static Audio_Metadata empty_metadata = {0};
+static Audio_Decoder decoder = {0}, empty_decoder = {0};
+SceBool playing = SCE_TRUE, m_paused = SCE_FALSE;
+
+static void Audio_Decode(void *buf, unsigned int length, void *userdata) {
+ if (playing == SCE_FALSE || m_paused == SCE_TRUE) {
+ short *buf_short = (short *)buf;
+ unsigned int count;
+ for (count = 0; count < length * 2; count++)
+ *(buf_short + count) = 0;
+ }
+ else
+ (* decoder.decode)(buf, length, userdata);
+}
+
+int Audio_Init(const char *path) {
+ playing = SCE_TRUE;
+ m_paused = SCE_FALSE;
+
+ file_type = FILE_TYPE_OGG;
+ decoder.init = OGG_Init;
+ decoder.rate = OGG_GetSampleRate;
+ decoder.channels = OGG_GetChannels;
+ decoder.decode = OGG_Decode;
+ decoder.position = OGG_GetPosition;
+ decoder.length = OGG_GetLength;
+ decoder.seek = OGG_Seek;
+ decoder.term = OGG_Term;
+
+ (* decoder.init)(path);
+ vitaAudioInit((* decoder.rate)(), (* decoder.channels)() == 2? SCE_AUDIO_OUT_MODE_STEREO : SCE_AUDIO_OUT_MODE_MONO);
+ vitaAudioSetChannelCallback(0, Audio_Decode, NULL);
+ return 0;
+}
+
+SceBool Audio_IsPaused(void) {
+ return m_paused;
+}
+
+void Audio_Pause(void) {
+ m_paused = !m_paused;
+}
+
+void Audio_Stop(void) {
+ playing = !playing;
+}
+
+SceUInt64 Audio_GetPosition(void) {
+ return (* decoder.position)();
+}
+
+SceUInt64 Audio_GetLength(void) {
+ return (* decoder.length)();
+}
+
+SceUInt64 Audio_GetPositionSeconds(void) {
+ return (Audio_GetPosition() / (* decoder.rate)());
+}
+
+SceUInt64 Audio_GetLengthSeconds(void) {
+ return (Audio_GetLength() / (* decoder.rate)());
+}
+
+SceUInt64 Audio_Seek(SceUInt64 index) {
+ return (* decoder.seek)(index);
+}
+
+void Audio_Term(void) {
+ playing = SCE_TRUE;
+ m_paused = SCE_FALSE;
+
+ vitaAudioSetChannelCallback(0, NULL, NULL); // Clear channel callback
+ vitaAudioEndPre();
+ sceKernelDelayThread(100 * 1000);
+ vitaAudioEnd();
+ (* decoder.term)();
+
+ // Clear metadata struct
+ metadata = empty_metadata;
+ decoder = empty_decoder;
+}
diff --git a/src/audio.h b/src/audio.h
new file mode 100644
index 0000000..ec99ad7
--- /dev/null
+++ b/src/audio.h
@@ -0,0 +1,35 @@
+#ifndef _ELEVENMPV_AUDIO_H_
+#define _ELEVENMPV_AUDIO_H_
+
+#include
+#include
+
+#define R_FAILED(res) ((res)<0)
+
+extern SceBool playing, paused;
+
+typedef struct {
+ SceBool has_meta;
+ char title[64];
+ char album[64];
+ char artist[64];
+ char year[64];
+ char comment[64];
+ char genre[64];
+ vita2d_texture *cover_image;
+} Audio_Metadata;
+
+extern Audio_Metadata metadata;
+
+int Audio_Init(const char *path);
+SceBool Audio_IsPaused(void);
+void Audio_Pause(void);
+void Audio_Stop(void);
+SceUInt64 Audio_GetPosition(void);
+SceUInt64 Audio_GetLength(void);
+SceUInt64 Audio_GetPositionSeconds(void);
+SceUInt64 Audio_GetLengthSeconds(void);
+SceUInt64 Audio_Seek(SceUInt64 index);
+void Audio_Term(void);
+
+#endif
diff --git a/src/certs.h b/src/certs.h
new file mode 100644
index 0000000..41b85c4
--- /dev/null
+++ b/src/certs.h
@@ -0,0 +1,383 @@
+/* Generated by bin2c, do not edit manually */
+
+/* Contents of file DigiCert High Assurance EV Root CA.pem */
+static long int DigiCert_High_Assurance_EV_Root_CA_pem_size = 1390;
+static char DigiCert_High_Assurance_EV_Root_CA_pem[1390] = {
+ 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49,
+ 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49,
+ 0x44, 0x78, 0x54, 0x43, 0x43, 0x41, 0x71, 0x32, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49,
+ 0x51, 0x41, 0x71, 0x78, 0x63, 0x4A, 0x6D, 0x6F, 0x4C, 0x51, 0x4A, 0x75, 0x50, 0x43, 0x33, 0x6E,
+ 0x79, 0x72, 0x6B, 0x59, 0x6C, 0x64, 0x7A, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69,
+ 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x73, 0x0D, 0x0A, 0x4D,
+ 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4A, 0x56, 0x55,
+ 0x7A, 0x45, 0x56, 0x4D, 0x42, 0x4D, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4D, 0x4D, 0x52,
+ 0x47, 0x6C, 0x6E, 0x61, 0x55, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6A, 0x4D,
+ 0x52, 0x6B, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4C, 0x45, 0x78, 0x42, 0x33, 0x0D,
+ 0x0A, 0x64, 0x33, 0x63, 0x75, 0x5A, 0x47, 0x6C, 0x6E, 0x61, 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51,
+ 0x75, 0x59, 0x32, 0x39, 0x74, 0x4D, 0x53, 0x73, 0x77, 0x4B, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51,
+ 0x44, 0x45, 0x79, 0x4A, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42,
+ 0x49, 0x61, 0x57, 0x64, 0x6F, 0x49, 0x45, 0x46, 0x7A, 0x63, 0x33, 0x56, 0x79, 0x59, 0x57, 0x35,
+ 0x6A, 0x0D, 0x0A, 0x5A, 0x53, 0x42, 0x46, 0x56, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49,
+ 0x45, 0x4E, 0x42, 0x4D, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41, 0x32, 0x4D, 0x54, 0x45, 0x78, 0x4D,
+ 0x44, 0x41, 0x77, 0x4D, 0x44, 0x41, 0x77, 0x4D, 0x46, 0x6F, 0x58, 0x44, 0x54, 0x4D, 0x78, 0x4D,
+ 0x54, 0x45, 0x78, 0x4D, 0x44, 0x41, 0x77, 0x4D, 0x44, 0x41, 0x77, 0x4D, 0x46, 0x6F, 0x77, 0x62,
+ 0x44, 0x45, 0x4C, 0x0D, 0x0A, 0x4D, 0x41, 0x6B, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4D,
+ 0x43, 0x56, 0x56, 0x4D, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4E, 0x56, 0x42, 0x41, 0x6F,
+ 0x54, 0x44, 0x45, 0x52, 0x70, 0x5A, 0x32, 0x6C, 0x44, 0x5A, 0x58, 0x4A, 0x30, 0x49, 0x45, 0x6C,
+ 0x75, 0x59, 0x7A, 0x45, 0x5A, 0x4D, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4D,
+ 0x51, 0x64, 0x33, 0x64, 0x33, 0x0D, 0x0A, 0x4C, 0x6D, 0x52, 0x70, 0x5A, 0x32, 0x6C, 0x6A, 0x5A,
+ 0x58, 0x4A, 0x30, 0x4C, 0x6D, 0x4E, 0x76, 0x62, 0x54, 0x45, 0x72, 0x4D, 0x43, 0x6B, 0x47, 0x41,
+ 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 0x69, 0x52, 0x47, 0x6C, 0x6E, 0x61, 0x55, 0x4E, 0x6C, 0x63,
+ 0x6E, 0x51, 0x67, 0x53, 0x47, 0x6C, 0x6E, 0x61, 0x43, 0x42, 0x42, 0x63, 0x33, 0x4E, 0x31, 0x63,
+ 0x6D, 0x46, 0x75, 0x59, 0x32, 0x55, 0x67, 0x0D, 0x0A, 0x52, 0x56, 0x59, 0x67, 0x55, 0x6D, 0x39,
+ 0x76, 0x64, 0x43, 0x42, 0x44, 0x51, 0x54, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59,
+ 0x4A, 0x4B, 0x6F, 0x5A, 0x49, 0x68, 0x76, 0x63, 0x4E, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41,
+ 0x44, 0x67, 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6F, 0x43, 0x67, 0x67, 0x45,
+ 0x42, 0x41, 0x4D, 0x62, 0x4D, 0x35, 0x58, 0x50, 0x6D, 0x0D, 0x0A, 0x2B, 0x39, 0x53, 0x37, 0x35,
+ 0x53, 0x30, 0x74, 0x4D, 0x71, 0x62, 0x66, 0x35, 0x59, 0x45, 0x2F, 0x79, 0x63, 0x30, 0x6C, 0x53,
+ 0x62, 0x5A, 0x78, 0x4B, 0x73, 0x50, 0x56, 0x6C, 0x44, 0x52, 0x6E, 0x6F, 0x67, 0x6F, 0x63, 0x73,
+ 0x46, 0x39, 0x70, 0x70, 0x6B, 0x43, 0x78, 0x78, 0x4C, 0x65, 0x79, 0x6A, 0x39, 0x43, 0x59, 0x70,
+ 0x4B, 0x6C, 0x42, 0x57, 0x54, 0x72, 0x54, 0x33, 0x4A, 0x54, 0x57, 0x0D, 0x0A, 0x50, 0x4E, 0x74,
+ 0x30, 0x4F, 0x4B, 0x52, 0x4B, 0x7A, 0x45, 0x30, 0x6C, 0x67, 0x76, 0x64, 0x4B, 0x70, 0x56, 0x4D,
+ 0x53, 0x4F, 0x4F, 0x37, 0x7A, 0x53, 0x57, 0x31, 0x78, 0x6B, 0x58, 0x35, 0x6A, 0x74, 0x71, 0x75,
+ 0x6D, 0x58, 0x38, 0x4F, 0x6B, 0x68, 0x50, 0x68, 0x50, 0x59, 0x6C, 0x47, 0x2B, 0x2B, 0x4D, 0x58,
+ 0x73, 0x32, 0x7A, 0x69, 0x53, 0x34, 0x77, 0x62, 0x6C, 0x43, 0x4A, 0x45, 0x4D, 0x0D, 0x0A, 0x78,
+ 0x43, 0x68, 0x42, 0x56, 0x66, 0x76, 0x4C, 0x57, 0x6F, 0x6B, 0x56, 0x66, 0x6E, 0x48, 0x6F, 0x4E,
+ 0x62, 0x39, 0x4E, 0x63, 0x67, 0x6B, 0x39, 0x76, 0x6A, 0x6F, 0x34, 0x55, 0x46, 0x74, 0x33, 0x4D,
+ 0x52, 0x75, 0x4E, 0x73, 0x38, 0x63, 0x6B, 0x52, 0x5A, 0x71, 0x6E, 0x72, 0x47, 0x30, 0x41, 0x46,
+ 0x46, 0x6F, 0x45, 0x74, 0x37, 0x6F, 0x54, 0x36, 0x31, 0x45, 0x4B, 0x6D, 0x45, 0x46, 0x42, 0x0D,
+ 0x0A, 0x49, 0x6B, 0x35, 0x6C, 0x59, 0x59, 0x65, 0x42, 0x51, 0x56, 0x43, 0x6D, 0x65, 0x56, 0x79,
+ 0x4A, 0x33, 0x68, 0x6C, 0x4B, 0x56, 0x39, 0x55, 0x75, 0x35, 0x6C, 0x30, 0x63, 0x55, 0x79, 0x78,
+ 0x2B, 0x6D, 0x4D, 0x30, 0x61, 0x42, 0x68, 0x61, 0x6B, 0x61, 0x48, 0x50, 0x51, 0x4E, 0x41, 0x51,
+ 0x54, 0x58, 0x4B, 0x46, 0x78, 0x30, 0x31, 0x70, 0x38, 0x56, 0x64, 0x74, 0x65, 0x5A, 0x4F, 0x45,
+ 0x33, 0x0D, 0x0A, 0x68, 0x7A, 0x42, 0x57, 0x42, 0x4F, 0x55, 0x52, 0x74, 0x43, 0x6D, 0x41, 0x45,
+ 0x76, 0x46, 0x35, 0x4F, 0x59, 0x69, 0x69, 0x41, 0x68, 0x46, 0x38, 0x4A, 0x32, 0x61, 0x33, 0x69,
+ 0x4C, 0x64, 0x34, 0x38, 0x73, 0x6F, 0x4B, 0x71, 0x44, 0x69, 0x72, 0x43, 0x6D, 0x54, 0x43, 0x76,
+ 0x32, 0x5A, 0x64, 0x6C, 0x59, 0x54, 0x42, 0x6F, 0x53, 0x55, 0x65, 0x68, 0x31, 0x30, 0x61, 0x55,
+ 0x41, 0x73, 0x67, 0x0D, 0x0A, 0x45, 0x73, 0x78, 0x42, 0x75, 0x32, 0x34, 0x4C, 0x55, 0x54, 0x69,
+ 0x34, 0x53, 0x38, 0x73, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4E, 0x6A, 0x4D, 0x47, 0x45,
+ 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48, 0x2F, 0x42, 0x41, 0x51,
+ 0x44, 0x41, 0x67, 0x47, 0x47, 0x4D, 0x41, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45,
+ 0x42, 0x2F, 0x77, 0x51, 0x46, 0x0D, 0x0A, 0x4D, 0x41, 0x4D, 0x42, 0x41, 0x66, 0x38, 0x77, 0x48,
+ 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4F, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4C, 0x45, 0x2B, 0x77,
+ 0x32, 0x6B, 0x44, 0x2B, 0x4C, 0x39, 0x48, 0x41, 0x64, 0x53, 0x59, 0x4A, 0x68, 0x6F, 0x49, 0x41,
+ 0x75, 0x39, 0x6A, 0x5A, 0x43, 0x76, 0x44, 0x4D, 0x42, 0x38, 0x47, 0x41, 0x31, 0x55, 0x64, 0x49,
+ 0x77, 0x51, 0x59, 0x4D, 0x42, 0x61, 0x41, 0x0D, 0x0A, 0x46, 0x4C, 0x45, 0x2B, 0x77, 0x32, 0x6B,
+ 0x44, 0x2B, 0x4C, 0x39, 0x48, 0x41, 0x64, 0x53, 0x59, 0x4A, 0x68, 0x6F, 0x49, 0x41, 0x75, 0x39,
+ 0x6A, 0x5A, 0x43, 0x76, 0x44, 0x4D, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62,
+ 0x33, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x41, 0x51, 0x41,
+ 0x63, 0x47, 0x67, 0x61, 0x58, 0x33, 0x4E, 0x65, 0x63, 0x0D, 0x0A, 0x6E, 0x7A, 0x79, 0x49, 0x5A,
+ 0x67, 0x59, 0x49, 0x56, 0x79, 0x48, 0x62, 0x49, 0x55, 0x66, 0x34, 0x4B, 0x6D, 0x65, 0x71, 0x76,
+ 0x78, 0x67, 0x79, 0x64, 0x6B, 0x41, 0x51, 0x56, 0x38, 0x47, 0x4B, 0x38, 0x33, 0x72, 0x5A, 0x45,
+ 0x57, 0x57, 0x4F, 0x4E, 0x66, 0x71, 0x65, 0x2F, 0x45, 0x57, 0x31, 0x6E, 0x74, 0x6C, 0x4D, 0x4D,
+ 0x55, 0x75, 0x34, 0x6B, 0x65, 0x68, 0x44, 0x4C, 0x49, 0x36, 0x7A, 0x0D, 0x0A, 0x65, 0x4D, 0x37,
+ 0x62, 0x34, 0x31, 0x4E, 0x35, 0x63, 0x64, 0x62, 0x6C, 0x49, 0x5A, 0x51, 0x42, 0x32, 0x6C, 0x57,
+ 0x48, 0x6D, 0x69, 0x52, 0x6B, 0x39, 0x6F, 0x70, 0x6D, 0x7A, 0x4E, 0x36, 0x63, 0x4E, 0x38, 0x32,
+ 0x6F, 0x4E, 0x4C, 0x46, 0x70, 0x6D, 0x79, 0x50, 0x49, 0x6E, 0x6E, 0x67, 0x69, 0x4B, 0x33, 0x42,
+ 0x44, 0x34, 0x31, 0x56, 0x48, 0x4D, 0x57, 0x45, 0x5A, 0x37, 0x31, 0x6A, 0x46, 0x0D, 0x0A, 0x68,
+ 0x53, 0x39, 0x4F, 0x4D, 0x50, 0x61, 0x67, 0x4D, 0x52, 0x59, 0x6A, 0x79, 0x4F, 0x66, 0x69, 0x5A,
+ 0x52, 0x59, 0x7A, 0x79, 0x37, 0x38, 0x61, 0x47, 0x36, 0x41, 0x39, 0x2B, 0x4D, 0x70, 0x65, 0x69,
+ 0x7A, 0x47, 0x4C, 0x59, 0x41, 0x69, 0x4A, 0x4C, 0x51, 0x77, 0x47, 0x58, 0x46, 0x4B, 0x33, 0x78,
+ 0x50, 0x6B, 0x4B, 0x6D, 0x4E, 0x45, 0x56, 0x58, 0x35, 0x38, 0x53, 0x76, 0x6E, 0x77, 0x32, 0x0D,
+ 0x0A, 0x59, 0x7A, 0x69, 0x39, 0x52, 0x4B, 0x52, 0x2F, 0x35, 0x43, 0x59, 0x72, 0x43, 0x73, 0x53,
+ 0x58, 0x61, 0x51, 0x33, 0x70, 0x6A, 0x4F, 0x4C, 0x41, 0x45, 0x46, 0x65, 0x34, 0x79, 0x48, 0x59,
+ 0x53, 0x6B, 0x56, 0x58, 0x79, 0x53, 0x47, 0x6E, 0x59, 0x76, 0x43, 0x6F, 0x43, 0x57, 0x77, 0x39,
+ 0x45, 0x31, 0x43, 0x41, 0x78, 0x32, 0x2F, 0x53, 0x36, 0x63, 0x43, 0x5A, 0x64, 0x6B, 0x47, 0x43,
+ 0x65, 0x0D, 0x0A, 0x76, 0x45, 0x73, 0x58, 0x43, 0x53, 0x2B, 0x30, 0x79, 0x78, 0x35, 0x44, 0x61,
+ 0x4D, 0x6B, 0x48, 0x4A, 0x38, 0x48, 0x53, 0x58, 0x50, 0x66, 0x71, 0x49, 0x62, 0x6C, 0x6F, 0x45,
+ 0x70, 0x77, 0x38, 0x6E, 0x4C, 0x2B, 0x65, 0x2F, 0x49, 0x42, 0x63, 0x6D, 0x32, 0x50, 0x4E, 0x37,
+ 0x45, 0x65, 0x71, 0x4A, 0x53, 0x64, 0x6E, 0x6F, 0x44, 0x66, 0x7A, 0x41, 0x49, 0x4A, 0x39, 0x56,
+ 0x4E, 0x65, 0x70, 0x0D, 0x0A, 0x2B, 0x4F, 0x6B, 0x75, 0x45, 0x36, 0x4E, 0x33, 0x36, 0x42, 0x39,
+ 0x4B, 0x0D, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54,
+ 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A
+};
+
+/* Contents of file DigiCert SHA2 High Assurance Server CA.pem */
+static long int DigiCert_SHA2_High_Assurance_Server_CA_pem_size = 1716;
+static char DigiCert_SHA2_High_Assurance_Server_CA_pem[1716] = {
+ 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49,
+ 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49,
+ 0x45, 0x73, 0x54, 0x43, 0x43, 0x41, 0x35, 0x6D, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49,
+ 0x51, 0x42, 0x4F, 0x48, 0x6E, 0x70, 0x4E, 0x78, 0x63, 0x38, 0x76, 0x4E, 0x74, 0x77, 0x43, 0x74,
+ 0x43, 0x75, 0x46, 0x30, 0x56, 0x6E, 0x7A, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69,
+ 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x73, 0x0D, 0x0A, 0x4D,
+ 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4A, 0x56, 0x55,
+ 0x7A, 0x45, 0x56, 0x4D, 0x42, 0x4D, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4D, 0x4D, 0x52,
+ 0x47, 0x6C, 0x6E, 0x61, 0x55, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x67, 0x53, 0x57, 0x35, 0x6A, 0x4D,
+ 0x52, 0x6B, 0x77, 0x46, 0x77, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4C, 0x45, 0x78, 0x42, 0x33, 0x0D,
+ 0x0A, 0x64, 0x33, 0x63, 0x75, 0x5A, 0x47, 0x6C, 0x6E, 0x61, 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51,
+ 0x75, 0x59, 0x32, 0x39, 0x74, 0x4D, 0x53, 0x73, 0x77, 0x4B, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51,
+ 0x44, 0x45, 0x79, 0x4A, 0x45, 0x61, 0x57, 0x64, 0x70, 0x51, 0x32, 0x56, 0x79, 0x64, 0x43, 0x42,
+ 0x49, 0x61, 0x57, 0x64, 0x6F, 0x49, 0x45, 0x46, 0x7A, 0x63, 0x33, 0x56, 0x79, 0x59, 0x57, 0x35,
+ 0x6A, 0x0D, 0x0A, 0x5A, 0x53, 0x42, 0x46, 0x56, 0x69, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x49,
+ 0x45, 0x4E, 0x42, 0x4D, 0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x7A, 0x4D, 0x54, 0x41, 0x79, 0x4D,
+ 0x6A, 0x45, 0x79, 0x4D, 0x44, 0x41, 0x77, 0x4D, 0x46, 0x6F, 0x58, 0x44, 0x54, 0x49, 0x34, 0x4D,
+ 0x54, 0x41, 0x79, 0x4D, 0x6A, 0x45, 0x79, 0x4D, 0x44, 0x41, 0x77, 0x4D, 0x46, 0x6F, 0x77, 0x63,
+ 0x44, 0x45, 0x4C, 0x0D, 0x0A, 0x4D, 0x41, 0x6B, 0x47, 0x41, 0x31, 0x55, 0x45, 0x42, 0x68, 0x4D,
+ 0x43, 0x56, 0x56, 0x4D, 0x78, 0x46, 0x54, 0x41, 0x54, 0x42, 0x67, 0x4E, 0x56, 0x42, 0x41, 0x6F,
+ 0x54, 0x44, 0x45, 0x52, 0x70, 0x5A, 0x32, 0x6C, 0x44, 0x5A, 0x58, 0x4A, 0x30, 0x49, 0x45, 0x6C,
+ 0x75, 0x59, 0x7A, 0x45, 0x5A, 0x4D, 0x42, 0x63, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x78, 0x4D,
+ 0x51, 0x64, 0x33, 0x64, 0x33, 0x0D, 0x0A, 0x4C, 0x6D, 0x52, 0x70, 0x5A, 0x32, 0x6C, 0x6A, 0x5A,
+ 0x58, 0x4A, 0x30, 0x4C, 0x6D, 0x4E, 0x76, 0x62, 0x54, 0x45, 0x76, 0x4D, 0x43, 0x30, 0x47, 0x41,
+ 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 0x6D, 0x52, 0x47, 0x6C, 0x6E, 0x61, 0x55, 0x4E, 0x6C, 0x63,
+ 0x6E, 0x51, 0x67, 0x55, 0x30, 0x68, 0x42, 0x4D, 0x69, 0x42, 0x49, 0x61, 0x57, 0x64, 0x6F, 0x49,
+ 0x45, 0x46, 0x7A, 0x63, 0x33, 0x56, 0x79, 0x0D, 0x0A, 0x59, 0x57, 0x35, 0x6A, 0x5A, 0x53, 0x42,
+ 0x54, 0x5A, 0x58, 0x4A, 0x32, 0x5A, 0x58, 0x49, 0x67, 0x51, 0x30, 0x45, 0x77, 0x67, 0x67, 0x45,
+ 0x69, 0x4D, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45,
+ 0x42, 0x41, 0x51, 0x55, 0x41, 0x41, 0x34, 0x49, 0x42, 0x44, 0x77, 0x41, 0x77, 0x67, 0x67, 0x45,
+ 0x4B, 0x41, 0x6F, 0x49, 0x42, 0x41, 0x51, 0x43, 0x32, 0x0D, 0x0A, 0x34, 0x43, 0x2F, 0x43, 0x4A,
+ 0x41, 0x62, 0x49, 0x62, 0x51, 0x52, 0x66, 0x31, 0x2B, 0x38, 0x4B, 0x5A, 0x41, 0x61, 0x79, 0x66,
+ 0x53, 0x49, 0x6D, 0x5A, 0x52, 0x61, 0x75, 0x51, 0x6B, 0x43, 0x62, 0x7A, 0x74, 0x79, 0x66, 0x6E,
+ 0x33, 0x59, 0x48, 0x50, 0x73, 0x4D, 0x77, 0x56, 0x59, 0x63, 0x5A, 0x75, 0x55, 0x2B, 0x55, 0x44,
+ 0x6C, 0x71, 0x55, 0x48, 0x31, 0x56, 0x57, 0x74, 0x4D, 0x49, 0x43, 0x0D, 0x0A, 0x4B, 0x71, 0x2F,
+ 0x51, 0x6D, 0x4F, 0x34, 0x4C, 0x51, 0x4E, 0x66, 0x45, 0x30, 0x44, 0x74, 0x79, 0x79, 0x42, 0x53,
+ 0x65, 0x37, 0x35, 0x43, 0x78, 0x45, 0x61, 0x6D, 0x75, 0x30, 0x73, 0x69, 0x34, 0x51, 0x7A, 0x72,
+ 0x5A, 0x43, 0x77, 0x76, 0x56, 0x31, 0x5A, 0x58, 0x31, 0x51, 0x4B, 0x2F, 0x49, 0x48, 0x65, 0x31,
+ 0x4E, 0x6E, 0x46, 0x39, 0x58, 0x74, 0x34, 0x5A, 0x51, 0x61, 0x4A, 0x6E, 0x31, 0x0D, 0x0A, 0x69,
+ 0x74, 0x72, 0x53, 0x78, 0x77, 0x55, 0x66, 0x71, 0x4A, 0x66, 0x4A, 0x33, 0x4B, 0x53, 0x78, 0x67,
+ 0x6F, 0x51, 0x74, 0x78, 0x71, 0x32, 0x6C, 0x6E, 0x4D, 0x63, 0x5A, 0x67, 0x71, 0x61, 0x46, 0x44,
+ 0x31, 0x35, 0x45, 0x57, 0x43, 0x6F, 0x33, 0x6A, 0x2F, 0x30, 0x31, 0x38, 0x51, 0x73, 0x49, 0x4A,
+ 0x7A, 0x4A, 0x61, 0x39, 0x62, 0x75, 0x4C, 0x6E, 0x71, 0x53, 0x39, 0x55, 0x64, 0x41, 0x6E, 0x0D,
+ 0x0A, 0x34, 0x74, 0x30, 0x37, 0x51, 0x6A, 0x4F, 0x6A, 0x42, 0x53, 0x6A, 0x45, 0x75, 0x79, 0x6A,
+ 0x4D, 0x6D, 0x71, 0x77, 0x72, 0x49, 0x77, 0x31, 0x34, 0x78, 0x6E, 0x76, 0x6D, 0x58, 0x6E, 0x47,
+ 0x33, 0x53, 0x6A, 0x34, 0x49, 0x2B, 0x34, 0x47, 0x33, 0x46, 0x68, 0x61, 0x68, 0x6E, 0x53, 0x4D,
+ 0x53, 0x54, 0x65, 0x58, 0x58, 0x6B, 0x67, 0x69, 0x73, 0x64, 0x61, 0x53, 0x63, 0x75, 0x73, 0x30,
+ 0x58, 0x0D, 0x0A, 0x73, 0x68, 0x35, 0x45, 0x4E, 0x57, 0x56, 0x2F, 0x55, 0x79, 0x55, 0x35, 0x30,
+ 0x52, 0x77, 0x4B, 0x6D, 0x6D, 0x4D, 0x62, 0x47, 0x5A, 0x4A, 0x30, 0x61, 0x41, 0x6F, 0x33, 0x77,
+ 0x73, 0x4A, 0x53, 0x53, 0x4D, 0x73, 0x35, 0x57, 0x71, 0x4B, 0x32, 0x34, 0x56, 0x33, 0x42, 0x33,
+ 0x61, 0x41, 0x67, 0x75, 0x43, 0x47, 0x69, 0x6B, 0x79, 0x5A, 0x76, 0x46, 0x45, 0x6F, 0x68, 0x51,
+ 0x63, 0x66, 0x74, 0x0D, 0x0A, 0x62, 0x5A, 0x76, 0x79, 0x53, 0x43, 0x2F, 0x7A, 0x41, 0x2F, 0x57,
+ 0x69, 0x61, 0x4A, 0x4A, 0x54, 0x4C, 0x31, 0x37, 0x6A, 0x41, 0x67, 0x4D, 0x42, 0x41, 0x41, 0x47,
+ 0x6A, 0x67, 0x67, 0x46, 0x4A, 0x4D, 0x49, 0x49, 0x42, 0x52, 0x54, 0x41, 0x53, 0x42, 0x67, 0x4E,
+ 0x56, 0x48, 0x52, 0x4D, 0x42, 0x41, 0x66, 0x38, 0x45, 0x43, 0x44, 0x41, 0x47, 0x41, 0x51, 0x48,
+ 0x2F, 0x41, 0x67, 0x45, 0x41, 0x0D, 0x0A, 0x4D, 0x41, 0x34, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44,
+ 0x77, 0x45, 0x42, 0x2F, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x42, 0x68, 0x6A, 0x41, 0x64, 0x42,
+ 0x67, 0x4E, 0x56, 0x48, 0x53, 0x55, 0x45, 0x46, 0x6A, 0x41, 0x55, 0x42, 0x67, 0x67, 0x72, 0x42,
+ 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x44, 0x41, 0x51, 0x59, 0x49, 0x4B, 0x77, 0x59, 0x42, 0x42,
+ 0x51, 0x55, 0x48, 0x41, 0x77, 0x49, 0x77, 0x0D, 0x0A, 0x4E, 0x41, 0x59, 0x49, 0x4B, 0x77, 0x59,
+ 0x42, 0x42, 0x51, 0x55, 0x48, 0x41, 0x51, 0x45, 0x45, 0x4B, 0x44, 0x41, 0x6D, 0x4D, 0x43, 0x51,
+ 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x7A, 0x41, 0x42, 0x68, 0x68, 0x68,
+ 0x6F, 0x64, 0x48, 0x52, 0x77, 0x4F, 0x69, 0x38, 0x76, 0x62, 0x32, 0x4E, 0x7A, 0x63, 0x43, 0x35,
+ 0x6B, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, 0x56, 0x79, 0x0D, 0x0A, 0x64, 0x43, 0x35, 0x6A, 0x62,
+ 0x32, 0x30, 0x77, 0x53, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42, 0x45, 0x51, 0x77, 0x51,
+ 0x6A, 0x42, 0x41, 0x6F, 0x44, 0x36, 0x67, 0x50, 0x49, 0x59, 0x36, 0x61, 0x48, 0x52, 0x30, 0x63,
+ 0x44, 0x6F, 0x76, 0x4C, 0x32, 0x4E, 0x79, 0x62, 0x44, 0x51, 0x75, 0x5A, 0x47, 0x6C, 0x6E, 0x61,
+ 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x0D, 0x0A, 0x4C, 0x30, 0x52,
+ 0x70, 0x5A, 0x32, 0x6C, 0x44, 0x5A, 0x58, 0x4A, 0x30, 0x53, 0x47, 0x6C, 0x6E, 0x61, 0x45, 0x46,
+ 0x7A, 0x63, 0x33, 0x56, 0x79, 0x59, 0x57, 0x35, 0x6A, 0x5A, 0x55, 0x56, 0x57, 0x55, 0x6D, 0x39,
+ 0x76, 0x64, 0x45, 0x4E, 0x42, 0x4C, 0x6D, 0x4E, 0x79, 0x62, 0x44, 0x41, 0x39, 0x42, 0x67, 0x4E,
+ 0x56, 0x48, 0x53, 0x41, 0x45, 0x4E, 0x6A, 0x41, 0x30, 0x4D, 0x44, 0x49, 0x47, 0x0D, 0x0A, 0x42,
+ 0x46, 0x55, 0x64, 0x49, 0x41, 0x41, 0x77, 0x4B, 0x6A, 0x41, 0x6F, 0x42, 0x67, 0x67, 0x72, 0x42,
+ 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x43, 0x41, 0x52, 0x59, 0x63, 0x61, 0x48, 0x52, 0x30, 0x63,
+ 0x48, 0x4D, 0x36, 0x4C, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5A, 0x47, 0x6C, 0x6E, 0x61,
+ 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4C, 0x30, 0x4E, 0x51, 0x0D,
+ 0x0A, 0x55, 0x7A, 0x41, 0x64, 0x42, 0x67, 0x4E, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51,
+ 0x55, 0x55, 0x57, 0x6A, 0x2F, 0x6B, 0x4B, 0x38, 0x43, 0x42, 0x33, 0x55, 0x38, 0x7A, 0x4E, 0x6C,
+ 0x6C, 0x5A, 0x47, 0x4B, 0x69, 0x45, 0x72, 0x68, 0x5A, 0x63, 0x6A, 0x73, 0x77, 0x48, 0x77, 0x59,
+ 0x44, 0x56, 0x52, 0x30, 0x6A, 0x42, 0x42, 0x67, 0x77, 0x46, 0x6F, 0x41, 0x55, 0x73, 0x54, 0x37,
+ 0x44, 0x0D, 0x0A, 0x61, 0x51, 0x50, 0x34, 0x76, 0x30, 0x63, 0x42, 0x31, 0x4A, 0x67, 0x6D, 0x47,
+ 0x67, 0x67, 0x43, 0x37, 0x32, 0x4E, 0x6B, 0x4B, 0x38, 0x4D, 0x77, 0x44, 0x51, 0x59, 0x4A, 0x4B,
+ 0x6F, 0x5A, 0x49, 0x68, 0x76, 0x63, 0x4E, 0x41, 0x51, 0x45, 0x4C, 0x42, 0x51, 0x41, 0x44, 0x67,
+ 0x67, 0x45, 0x42, 0x41, 0x42, 0x69, 0x4B, 0x6C, 0x59, 0x6B, 0x44, 0x35, 0x6D, 0x33, 0x66, 0x58,
+ 0x50, 0x77, 0x64, 0x0D, 0x0A, 0x61, 0x4F, 0x70, 0x4B, 0x6A, 0x34, 0x50, 0x57, 0x55, 0x53, 0x2B,
+ 0x4E, 0x61, 0x30, 0x51, 0x57, 0x6E, 0x71, 0x78, 0x6A, 0x39, 0x64, 0x4A, 0x75, 0x62, 0x49, 0x53,
+ 0x5A, 0x69, 0x36, 0x71, 0x42, 0x63, 0x59, 0x52, 0x62, 0x37, 0x54, 0x52, 0x4F, 0x73, 0x4C, 0x64,
+ 0x35, 0x6B, 0x69, 0x6E, 0x4D, 0x4C, 0x59, 0x42, 0x71, 0x38, 0x49, 0x34, 0x67, 0x34, 0x58, 0x6D,
+ 0x6B, 0x2F, 0x67, 0x4E, 0x48, 0x0D, 0x0A, 0x45, 0x2B, 0x72, 0x31, 0x68, 0x73, 0x70, 0x5A, 0x63,
+ 0x58, 0x33, 0x30, 0x42, 0x4A, 0x5A, 0x72, 0x30, 0x31, 0x6C, 0x59, 0x50, 0x66, 0x37, 0x54, 0x4D,
+ 0x53, 0x56, 0x63, 0x47, 0x44, 0x69, 0x45, 0x6F, 0x2B, 0x61, 0x66, 0x67, 0x76, 0x32, 0x4D, 0x57,
+ 0x35, 0x67, 0x78, 0x54, 0x73, 0x31, 0x34, 0x6E, 0x68, 0x72, 0x39, 0x68, 0x63, 0x74, 0x4A, 0x71,
+ 0x76, 0x49, 0x6E, 0x69, 0x35, 0x6C, 0x79, 0x0D, 0x0A, 0x2F, 0x44, 0x36, 0x71, 0x31, 0x55, 0x45,
+ 0x4C, 0x32, 0x74, 0x55, 0x32, 0x6F, 0x62, 0x38, 0x63, 0x62, 0x6B, 0x64, 0x4A, 0x66, 0x31, 0x37,
+ 0x5A, 0x53, 0x48, 0x77, 0x44, 0x32, 0x66, 0x32, 0x4C, 0x53, 0x61, 0x43, 0x59, 0x4A, 0x6B, 0x4A,
+ 0x41, 0x36, 0x39, 0x61, 0x53, 0x45, 0x61, 0x52, 0x6B, 0x43, 0x6C, 0x64, 0x55, 0x78, 0x50, 0x55,
+ 0x64, 0x31, 0x67, 0x4A, 0x65, 0x61, 0x36, 0x7A, 0x75, 0x0D, 0x0A, 0x78, 0x49, 0x43, 0x61, 0x45,
+ 0x6E, 0x4C, 0x36, 0x56, 0x70, 0x50, 0x58, 0x2F, 0x37, 0x38, 0x77, 0x68, 0x51, 0x59, 0x77, 0x76,
+ 0x77, 0x74, 0x2F, 0x54, 0x76, 0x39, 0x58, 0x42, 0x5A, 0x30, 0x6B, 0x37, 0x59, 0x58, 0x44, 0x4B,
+ 0x2F, 0x75, 0x6D, 0x64, 0x61, 0x69, 0x73, 0x4C, 0x52, 0x62, 0x76, 0x66, 0x58, 0x6B, 0x6E, 0x73,
+ 0x75, 0x76, 0x43, 0x6E, 0x51, 0x73, 0x48, 0x36, 0x71, 0x71, 0x46, 0x0D, 0x0A, 0x30, 0x77, 0x47,
+ 0x6A, 0x49, 0x43, 0x68, 0x42, 0x57, 0x55, 0x4D, 0x6F, 0x30, 0x6F, 0x48, 0x6A, 0x71, 0x76, 0x62,
+ 0x73, 0x65, 0x7A, 0x74, 0x33, 0x74, 0x6B, 0x42, 0x69, 0x67, 0x41, 0x56, 0x42, 0x52, 0x51, 0x48,
+ 0x76, 0x46, 0x77, 0x59, 0x2B, 0x33, 0x73, 0x41, 0x7A, 0x6D, 0x32, 0x66, 0x54, 0x59, 0x53, 0x35,
+ 0x79, 0x68, 0x2B, 0x52, 0x70, 0x2F, 0x42, 0x49, 0x41, 0x56, 0x30, 0x41, 0x65, 0x0D, 0x0A, 0x63,
+ 0x50, 0x55, 0x65, 0x79, 0x62, 0x51, 0x3D, 0x0D, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E,
+ 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D,
+ 0x2D, 0x2D, 0x0D, 0x0A
+};
+
+static long int Baltimore_CyberTrust_Root_pem_size = 1282;
+static char Baltimore_CyberTrust_Root_pem[1282] = {
+ 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49,
+ 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49,
+ 0x44, 0x64, 0x7A, 0x43, 0x43, 0x41, 0x6C, 0x2B, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49,
+ 0x45, 0x41, 0x67, 0x41, 0x41, 0x75, 0x54, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69,
+ 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x55, 0x46, 0x41, 0x44, 0x42, 0x61, 0x4D, 0x51, 0x73,
+ 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4A, 0x4A, 0x0D, 0x0A, 0x52,
+ 0x54, 0x45, 0x53, 0x4D, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4D, 0x4A, 0x51,
+ 0x6D, 0x46, 0x73, 0x64, 0x47, 0x6C, 0x74, 0x62, 0x33, 0x4A, 0x6C, 0x4D, 0x52, 0x4D, 0x77, 0x45,
+ 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4C, 0x45, 0x77, 0x70, 0x44, 0x65, 0x57, 0x4A, 0x6C, 0x63,
+ 0x6C, 0x52, 0x79, 0x64, 0x58, 0x4E, 0x30, 0x4D, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59, 0x44, 0x0D,
+ 0x0A, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6C, 0x43, 0x59, 0x57, 0x78, 0x30, 0x61, 0x57, 0x31,
+ 0x76, 0x63, 0x6D, 0x55, 0x67, 0x51, 0x33, 0x6C, 0x69, 0x5A, 0x58, 0x4A, 0x55, 0x63, 0x6E, 0x56,
+ 0x7A, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4D, 0x42, 0x34, 0x58, 0x44, 0x54, 0x41,
+ 0x77, 0x4D, 0x44, 0x55, 0x78, 0x4D, 0x6A, 0x45, 0x34, 0x4E, 0x44, 0x59, 0x77, 0x4D, 0x46, 0x6F,
+ 0x58, 0x0D, 0x0A, 0x44, 0x54, 0x49, 0x31, 0x4D, 0x44, 0x55, 0x78, 0x4D, 0x6A, 0x49, 0x7A, 0x4E,
+ 0x54, 0x6B, 0x77, 0x4D, 0x46, 0x6F, 0x77, 0x57, 0x6A, 0x45, 0x4C, 0x4D, 0x41, 0x6B, 0x47, 0x41,
+ 0x31, 0x55, 0x45, 0x42, 0x68, 0x4D, 0x43, 0x53, 0x55, 0x55, 0x78, 0x45, 0x6A, 0x41, 0x51, 0x42,
+ 0x67, 0x4E, 0x56, 0x42, 0x41, 0x6F, 0x54, 0x43, 0x55, 0x4A, 0x68, 0x62, 0x48, 0x52, 0x70, 0x62,
+ 0x57, 0x39, 0x79, 0x0D, 0x0A, 0x5A, 0x54, 0x45, 0x54, 0x4D, 0x42, 0x45, 0x47, 0x41, 0x31, 0x55,
+ 0x45, 0x43, 0x78, 0x4D, 0x4B, 0x51, 0x33, 0x6C, 0x69, 0x5A, 0x58, 0x4A, 0x55, 0x63, 0x6E, 0x56,
+ 0x7A, 0x64, 0x44, 0x45, 0x69, 0x4D, 0x43, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D,
+ 0x5A, 0x51, 0x6D, 0x46, 0x73, 0x64, 0x47, 0x6C, 0x74, 0x62, 0x33, 0x4A, 0x6C, 0x49, 0x45, 0x4E,
+ 0x35, 0x59, 0x6D, 0x56, 0x79, 0x0D, 0x0A, 0x56, 0x48, 0x4A, 0x31, 0x63, 0x33, 0x51, 0x67, 0x55,
+ 0x6D, 0x39, 0x76, 0x64, 0x44, 0x43, 0x43, 0x41, 0x53, 0x49, 0x77, 0x44, 0x51, 0x59, 0x4A, 0x4B,
+ 0x6F, 0x5A, 0x49, 0x68, 0x76, 0x63, 0x4E, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x67,
+ 0x67, 0x45, 0x50, 0x41, 0x44, 0x43, 0x43, 0x41, 0x51, 0x6F, 0x43, 0x67, 0x67, 0x45, 0x42, 0x41,
+ 0x4B, 0x4D, 0x45, 0x75, 0x79, 0x4B, 0x72, 0x0D, 0x0A, 0x6D, 0x44, 0x31, 0x58, 0x36, 0x43, 0x5A,
+ 0x79, 0x6D, 0x72, 0x56, 0x35, 0x31, 0x43, 0x6E, 0x69, 0x34, 0x65, 0x69, 0x56, 0x67, 0x4C, 0x47,
+ 0x77, 0x34, 0x31, 0x75, 0x4F, 0x4B, 0x79, 0x6D, 0x61, 0x5A, 0x4E, 0x2B, 0x68, 0x58, 0x65, 0x32,
+ 0x77, 0x43, 0x51, 0x56, 0x74, 0x32, 0x79, 0x67, 0x75, 0x7A, 0x6D, 0x4B, 0x69, 0x59, 0x76, 0x36,
+ 0x30, 0x69, 0x4E, 0x6F, 0x53, 0x36, 0x7A, 0x6A, 0x72, 0x0D, 0x0A, 0x49, 0x5A, 0x33, 0x41, 0x51,
+ 0x53, 0x73, 0x42, 0x55, 0x6E, 0x75, 0x49, 0x64, 0x39, 0x4D, 0x63, 0x6A, 0x38, 0x65, 0x36, 0x75,
+ 0x59, 0x69, 0x31, 0x61, 0x67, 0x6E, 0x6E, 0x63, 0x2B, 0x67, 0x52, 0x51, 0x4B, 0x66, 0x52, 0x7A,
+ 0x4D, 0x70, 0x69, 0x6A, 0x53, 0x33, 0x6C, 0x6A, 0x77, 0x75, 0x6D, 0x55, 0x4E, 0x4B, 0x6F, 0x55,
+ 0x4D, 0x4D, 0x6F, 0x36, 0x76, 0x57, 0x72, 0x4A, 0x59, 0x65, 0x4B, 0x0D, 0x0A, 0x6D, 0x70, 0x59,
+ 0x63, 0x71, 0x57, 0x65, 0x34, 0x50, 0x77, 0x7A, 0x56, 0x39, 0x2F, 0x6C, 0x53, 0x45, 0x79, 0x2F,
+ 0x43, 0x47, 0x39, 0x56, 0x77, 0x63, 0x50, 0x43, 0x50, 0x77, 0x42, 0x4C, 0x4B, 0x42, 0x73, 0x75,
+ 0x61, 0x34, 0x64, 0x6E, 0x4B, 0x4D, 0x33, 0x70, 0x33, 0x31, 0x76, 0x6A, 0x73, 0x75, 0x66, 0x46,
+ 0x6F, 0x52, 0x45, 0x4A, 0x49, 0x45, 0x39, 0x4C, 0x41, 0x77, 0x71, 0x53, 0x75, 0x0D, 0x0A, 0x58,
+ 0x6D, 0x44, 0x2B, 0x74, 0x71, 0x59, 0x46, 0x2F, 0x4C, 0x54, 0x64, 0x42, 0x31, 0x6B, 0x43, 0x31,
+ 0x46, 0x6B, 0x59, 0x6D, 0x47, 0x50, 0x31, 0x70, 0x57, 0x50, 0x67, 0x6B, 0x41, 0x78, 0x39, 0x58,
+ 0x62, 0x49, 0x47, 0x65, 0x76, 0x4F, 0x46, 0x36, 0x75, 0x76, 0x55, 0x41, 0x36, 0x35, 0x65, 0x68,
+ 0x44, 0x35, 0x66, 0x2F, 0x78, 0x58, 0x74, 0x61, 0x62, 0x7A, 0x35, 0x4F, 0x54, 0x5A, 0x79, 0x0D,
+ 0x0A, 0x64, 0x63, 0x39, 0x33, 0x55, 0x6B, 0x33, 0x7A, 0x79, 0x5A, 0x41, 0x73, 0x75, 0x54, 0x33,
+ 0x6C, 0x79, 0x53, 0x4E, 0x54, 0x50, 0x78, 0x38, 0x6B, 0x6D, 0x43, 0x46, 0x63, 0x42, 0x35, 0x6B,
+ 0x70, 0x76, 0x63, 0x59, 0x36, 0x37, 0x4F, 0x64, 0x75, 0x68, 0x6A, 0x70, 0x72, 0x6C, 0x33, 0x52,
+ 0x6A, 0x4D, 0x37, 0x31, 0x6F, 0x47, 0x44, 0x48, 0x77, 0x65, 0x49, 0x31, 0x32, 0x76, 0x2F, 0x79,
+ 0x65, 0x0D, 0x0A, 0x6A, 0x6C, 0x30, 0x71, 0x68, 0x71, 0x64, 0x4E, 0x6B, 0x4E, 0x77, 0x6E, 0x47,
+ 0x6A, 0x6B, 0x43, 0x41, 0x77, 0x45, 0x41, 0x41, 0x61, 0x4E, 0x46, 0x4D, 0x45, 0x4D, 0x77, 0x48,
+ 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x4F, 0x42, 0x42, 0x59, 0x45, 0x46, 0x4F, 0x57, 0x64, 0x57,
+ 0x54, 0x43, 0x43, 0x52, 0x31, 0x6A, 0x4D, 0x72, 0x50, 0x6F, 0x49, 0x56, 0x44, 0x61, 0x47, 0x65,
+ 0x7A, 0x71, 0x31, 0x0D, 0x0A, 0x42, 0x45, 0x33, 0x77, 0x4D, 0x42, 0x49, 0x47, 0x41, 0x31, 0x55,
+ 0x64, 0x45, 0x77, 0x45, 0x42, 0x2F, 0x77, 0x51, 0x49, 0x4D, 0x41, 0x59, 0x42, 0x41, 0x66, 0x38,
+ 0x43, 0x41, 0x51, 0x4D, 0x77, 0x44, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x50, 0x41, 0x51, 0x48,
+ 0x2F, 0x42, 0x41, 0x51, 0x44, 0x41, 0x67, 0x45, 0x47, 0x4D, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71,
+ 0x47, 0x53, 0x49, 0x62, 0x33, 0x0D, 0x0A, 0x44, 0x51, 0x45, 0x42, 0x42, 0x51, 0x55, 0x41, 0x41,
+ 0x34, 0x49, 0x42, 0x41, 0x51, 0x43, 0x46, 0x44, 0x46, 0x32, 0x4F, 0x35, 0x47, 0x39, 0x52, 0x61,
+ 0x45, 0x49, 0x46, 0x6F, 0x4E, 0x32, 0x37, 0x54, 0x79, 0x63, 0x6C, 0x68, 0x41, 0x4F, 0x39, 0x39,
+ 0x32, 0x54, 0x39, 0x4C, 0x64, 0x63, 0x77, 0x34, 0x36, 0x51, 0x51, 0x46, 0x2B, 0x76, 0x61, 0x4B,
+ 0x53, 0x6D, 0x32, 0x65, 0x54, 0x39, 0x32, 0x0D, 0x0A, 0x39, 0x68, 0x6B, 0x54, 0x49, 0x37, 0x67,
+ 0x51, 0x43, 0x76, 0x6C, 0x59, 0x70, 0x4E, 0x52, 0x68, 0x63, 0x4C, 0x30, 0x45, 0x59, 0x57, 0x6F,
+ 0x53, 0x69, 0x68, 0x66, 0x56, 0x43, 0x72, 0x33, 0x46, 0x76, 0x44, 0x42, 0x38, 0x31, 0x75, 0x6B,
+ 0x4D, 0x4A, 0x59, 0x32, 0x47, 0x51, 0x45, 0x2F, 0x73, 0x7A, 0x4B, 0x4E, 0x2B, 0x4F, 0x4D, 0x59,
+ 0x33, 0x45, 0x55, 0x2F, 0x74, 0x33, 0x57, 0x67, 0x78, 0x0D, 0x0A, 0x6A, 0x6B, 0x7A, 0x53, 0x73,
+ 0x77, 0x46, 0x30, 0x37, 0x72, 0x35, 0x31, 0x58, 0x67, 0x64, 0x49, 0x47, 0x6E, 0x39, 0x77, 0x2F,
+ 0x78, 0x5A, 0x63, 0x68, 0x4D, 0x42, 0x35, 0x68, 0x62, 0x67, 0x46, 0x2F, 0x58, 0x2B, 0x2B, 0x5A,
+ 0x52, 0x47, 0x6A, 0x44, 0x38, 0x41, 0x43, 0x74, 0x50, 0x68, 0x53, 0x4E, 0x7A, 0x6B, 0x45, 0x31,
+ 0x61, 0x6B, 0x78, 0x65, 0x68, 0x69, 0x2F, 0x6F, 0x43, 0x72, 0x30, 0x0D, 0x0A, 0x45, 0x70, 0x6E,
+ 0x33, 0x6F, 0x30, 0x57, 0x43, 0x34, 0x7A, 0x78, 0x65, 0x39, 0x5A, 0x32, 0x65, 0x74, 0x63, 0x69,
+ 0x65, 0x66, 0x43, 0x37, 0x49, 0x70, 0x4A, 0x35, 0x4F, 0x43, 0x42, 0x52, 0x4C, 0x62, 0x66, 0x31,
+ 0x77, 0x62, 0x57, 0x73, 0x61, 0x59, 0x37, 0x31, 0x6B, 0x35, 0x68, 0x2B, 0x33, 0x7A, 0x76, 0x44,
+ 0x79, 0x6E, 0x79, 0x36, 0x37, 0x47, 0x37, 0x66, 0x79, 0x55, 0x49, 0x68, 0x7A, 0x0D, 0x0A, 0x6B,
+ 0x73, 0x4C, 0x69, 0x34, 0x78, 0x61, 0x4E, 0x6D, 0x6A, 0x49, 0x43, 0x71, 0x34, 0x34, 0x59, 0x33,
+ 0x65, 0x6B, 0x51, 0x45, 0x65, 0x35, 0x2B, 0x4E, 0x61, 0x75, 0x51, 0x72, 0x7A, 0x34, 0x77, 0x6C,
+ 0x48, 0x72, 0x51, 0x4D, 0x7A, 0x32, 0x6E, 0x5A, 0x51, 0x2F, 0x31, 0x2F, 0x49, 0x36, 0x65, 0x59,
+ 0x73, 0x39, 0x48, 0x52, 0x43, 0x77, 0x42, 0x58, 0x62, 0x73, 0x64, 0x74, 0x54, 0x4C, 0x53, 0x0D,
+ 0x0A, 0x52, 0x39, 0x49, 0x34, 0x4C, 0x74, 0x44, 0x2B, 0x67, 0x64, 0x77, 0x79, 0x61, 0x68, 0x36,
+ 0x31, 0x37, 0x6A, 0x7A, 0x56, 0x2F, 0x4F, 0x65, 0x42, 0x48, 0x52, 0x6E, 0x44, 0x4A, 0x45, 0x4C,
+ 0x71, 0x59, 0x7A, 0x6D, 0x70, 0x0D, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20,
+ 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
+ 0x0D, 0x0A
+};
+
+static long int Cloudflare_Inc_ECC_CA_3_pem_size = 1402;
+static char Cloudflare_Inc_ECC_CA_3_pem[1402] = {
+ 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49,
+ 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49,
+ 0x44, 0x7A, 0x54, 0x43, 0x43, 0x41, 0x72, 0x57, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49,
+ 0x51, 0x43, 0x6A, 0x65, 0x48, 0x5A, 0x46, 0x35, 0x66, 0x74, 0x49, 0x77, 0x69, 0x54, 0x76, 0x30,
+ 0x62, 0x37, 0x52, 0x51, 0x4D, 0x50, 0x44, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69,
+ 0x47, 0x39, 0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x44, 0x42, 0x61, 0x0D, 0x0A, 0x4D,
+ 0x51, 0x73, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x47, 0x45, 0x77, 0x4A, 0x4A, 0x52,
+ 0x54, 0x45, 0x53, 0x4D, 0x42, 0x41, 0x47, 0x41, 0x31, 0x55, 0x45, 0x43, 0x68, 0x4D, 0x4A, 0x51,
+ 0x6D, 0x46, 0x73, 0x64, 0x47, 0x6C, 0x74, 0x62, 0x33, 0x4A, 0x6C, 0x4D, 0x52, 0x4D, 0x77, 0x45,
+ 0x51, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4C, 0x45, 0x77, 0x70, 0x44, 0x65, 0x57, 0x4A, 0x6C, 0x0D,
+ 0x0A, 0x63, 0x6C, 0x52, 0x79, 0x64, 0x58, 0x4E, 0x30, 0x4D, 0x53, 0x49, 0x77, 0x49, 0x41, 0x59,
+ 0x44, 0x56, 0x51, 0x51, 0x44, 0x45, 0x78, 0x6C, 0x43, 0x59, 0x57, 0x78, 0x30, 0x61, 0x57, 0x31,
+ 0x76, 0x63, 0x6D, 0x55, 0x67, 0x51, 0x33, 0x6C, 0x69, 0x5A, 0x58, 0x4A, 0x55, 0x63, 0x6E, 0x56,
+ 0x7A, 0x64, 0x43, 0x42, 0x53, 0x62, 0x32, 0x39, 0x30, 0x4D, 0x42, 0x34, 0x58, 0x44, 0x54, 0x49,
+ 0x77, 0x0D, 0x0A, 0x4D, 0x44, 0x45, 0x79, 0x4E, 0x7A, 0x45, 0x79, 0x4E, 0x44, 0x67, 0x77, 0x4F,
+ 0x46, 0x6F, 0x58, 0x44, 0x54, 0x49, 0x30, 0x4D, 0x54, 0x49, 0x7A, 0x4D, 0x54, 0x49, 0x7A, 0x4E,
+ 0x54, 0x6B, 0x31, 0x4F, 0x56, 0x6F, 0x77, 0x53, 0x6A, 0x45, 0x4C, 0x4D, 0x41, 0x6B, 0x47, 0x41,
+ 0x31, 0x55, 0x45, 0x42, 0x68, 0x4D, 0x43, 0x56, 0x56, 0x4D, 0x78, 0x47, 0x54, 0x41, 0x58, 0x42,
+ 0x67, 0x4E, 0x56, 0x0D, 0x0A, 0x42, 0x41, 0x6F, 0x54, 0x45, 0x45, 0x4E, 0x73, 0x62, 0x33, 0x56,
+ 0x6B, 0x5A, 0x6D, 0x78, 0x68, 0x63, 0x6D, 0x55, 0x73, 0x49, 0x45, 0x6C, 0x75, 0x59, 0x79, 0x34,
+ 0x78, 0x49, 0x44, 0x41, 0x65, 0x42, 0x67, 0x4E, 0x56, 0x42, 0x41, 0x4D, 0x54, 0x46, 0x30, 0x4E,
+ 0x73, 0x62, 0x33, 0x56, 0x6B, 0x5A, 0x6D, 0x78, 0x68, 0x63, 0x6D, 0x55, 0x67, 0x53, 0x57, 0x35,
+ 0x6A, 0x49, 0x45, 0x56, 0x44, 0x0D, 0x0A, 0x51, 0x79, 0x42, 0x44, 0x51, 0x53, 0x30, 0x7A, 0x4D,
+ 0x46, 0x6B, 0x77, 0x45, 0x77, 0x59, 0x48, 0x4B, 0x6F, 0x5A, 0x49, 0x7A, 0x6A, 0x30, 0x43, 0x41,
+ 0x51, 0x59, 0x49, 0x4B, 0x6F, 0x5A, 0x49, 0x7A, 0x6A, 0x30, 0x44, 0x41, 0x51, 0x63, 0x44, 0x51,
+ 0x67, 0x41, 0x45, 0x75, 0x61, 0x31, 0x4E, 0x5A, 0x70, 0x6B, 0x55, 0x43, 0x30, 0x62, 0x73, 0x48,
+ 0x34, 0x48, 0x52, 0x4B, 0x6C, 0x41, 0x65, 0x0D, 0x0A, 0x6E, 0x51, 0x4D, 0x56, 0x4C, 0x7A, 0x51,
+ 0x53, 0x66, 0x53, 0x32, 0x57, 0x75, 0x49, 0x67, 0x34, 0x6D, 0x34, 0x56, 0x66, 0x6A, 0x37, 0x2B,
+ 0x37, 0x54, 0x65, 0x39, 0x68, 0x52, 0x73, 0x54, 0x4A, 0x63, 0x39, 0x51, 0x6B, 0x54, 0x2B, 0x44,
+ 0x75, 0x48, 0x4D, 0x35, 0x73, 0x73, 0x31, 0x46, 0x78, 0x4C, 0x32, 0x72, 0x75, 0x54, 0x41, 0x55,
+ 0x4A, 0x64, 0x39, 0x4E, 0x79, 0x59, 0x71, 0x53, 0x62, 0x0D, 0x0A, 0x31, 0x36, 0x4F, 0x43, 0x41,
+ 0x57, 0x67, 0x77, 0x67, 0x67, 0x46, 0x6B, 0x4D, 0x42, 0x30, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44,
+ 0x67, 0x51, 0x57, 0x42, 0x42, 0x53, 0x6C, 0x7A, 0x6A, 0x66, 0x71, 0x36, 0x37, 0x42, 0x31, 0x44,
+ 0x70, 0x52, 0x6E, 0x69, 0x4C, 0x52, 0x46, 0x2B, 0x74, 0x6B, 0x6B, 0x45, 0x49, 0x65, 0x57, 0x48,
+ 0x7A, 0x41, 0x66, 0x42, 0x67, 0x4E, 0x56, 0x48, 0x53, 0x4D, 0x45, 0x0D, 0x0A, 0x47, 0x44, 0x41,
+ 0x57, 0x67, 0x42, 0x54, 0x6C, 0x6E, 0x56, 0x6B, 0x77, 0x67, 0x6B, 0x64, 0x59, 0x7A, 0x4B, 0x7A,
+ 0x36, 0x43, 0x46, 0x51, 0x32, 0x68, 0x6E, 0x73, 0x36, 0x74, 0x51, 0x52, 0x4E, 0x38, 0x44, 0x41,
+ 0x4F, 0x42, 0x67, 0x4E, 0x56, 0x48, 0x51, 0x38, 0x42, 0x41, 0x66, 0x38, 0x45, 0x42, 0x41, 0x4D,
+ 0x43, 0x41, 0x59, 0x59, 0x77, 0x48, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6C, 0x0D, 0x0A, 0x42,
+ 0x42, 0x59, 0x77, 0x46, 0x41, 0x59, 0x49, 0x4B, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55, 0x48, 0x41,
+ 0x77, 0x45, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x77, 0x4D, 0x43, 0x4D,
+ 0x42, 0x49, 0x47, 0x41, 0x31, 0x55, 0x64, 0x45, 0x77, 0x45, 0x42, 0x2F, 0x77, 0x51, 0x49, 0x4D,
+ 0x41, 0x59, 0x42, 0x41, 0x66, 0x38, 0x43, 0x41, 0x51, 0x41, 0x77, 0x4E, 0x41, 0x59, 0x49, 0x0D,
+ 0x0A, 0x4B, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55, 0x48, 0x41, 0x51, 0x45, 0x45, 0x4B, 0x44, 0x41,
+ 0x6D, 0x4D, 0x43, 0x51, 0x47, 0x43, 0x43, 0x73, 0x47, 0x41, 0x51, 0x55, 0x46, 0x42, 0x7A, 0x41,
+ 0x42, 0x68, 0x68, 0x68, 0x6F, 0x64, 0x48, 0x52, 0x77, 0x4F, 0x69, 0x38, 0x76, 0x62, 0x32, 0x4E,
+ 0x7A, 0x63, 0x43, 0x35, 0x6B, 0x61, 0x57, 0x64, 0x70, 0x59, 0x32, 0x56, 0x79, 0x64, 0x43, 0x35,
+ 0x6A, 0x0D, 0x0A, 0x62, 0x32, 0x30, 0x77, 0x4F, 0x67, 0x59, 0x44, 0x56, 0x52, 0x30, 0x66, 0x42,
+ 0x44, 0x4D, 0x77, 0x4D, 0x54, 0x41, 0x76, 0x6F, 0x43, 0x32, 0x67, 0x4B, 0x34, 0x59, 0x70, 0x61,
+ 0x48, 0x52, 0x30, 0x63, 0x44, 0x6F, 0x76, 0x4C, 0x32, 0x4E, 0x79, 0x62, 0x44, 0x4D, 0x75, 0x5A,
+ 0x47, 0x6C, 0x6E, 0x61, 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4C,
+ 0x30, 0x39, 0x74, 0x0D, 0x0A, 0x62, 0x6D, 0x6C, 0x79, 0x62, 0x32, 0x39, 0x30, 0x4D, 0x6A, 0x41,
+ 0x79, 0x4E, 0x53, 0x35, 0x6A, 0x63, 0x6D, 0x77, 0x77, 0x62, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30,
+ 0x67, 0x42, 0x47, 0x59, 0x77, 0x5A, 0x44, 0x41, 0x33, 0x42, 0x67, 0x6C, 0x67, 0x68, 0x6B, 0x67,
+ 0x42, 0x68, 0x76, 0x31, 0x73, 0x41, 0x51, 0x45, 0x77, 0x4B, 0x6A, 0x41, 0x6F, 0x42, 0x67, 0x67,
+ 0x72, 0x42, 0x67, 0x45, 0x46, 0x0D, 0x0A, 0x42, 0x51, 0x63, 0x43, 0x41, 0x52, 0x59, 0x63, 0x61,
+ 0x48, 0x52, 0x30, 0x63, 0x48, 0x4D, 0x36, 0x4C, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x5A,
+ 0x47, 0x6C, 0x6E, 0x61, 0x57, 0x4E, 0x6C, 0x63, 0x6E, 0x51, 0x75, 0x59, 0x32, 0x39, 0x74, 0x4C,
+ 0x30, 0x4E, 0x51, 0x55, 0x7A, 0x41, 0x4C, 0x42, 0x67, 0x6C, 0x67, 0x68, 0x6B, 0x67, 0x42, 0x68,
+ 0x76, 0x31, 0x73, 0x41, 0x51, 0x49, 0x77, 0x0D, 0x0A, 0x43, 0x41, 0x59, 0x47, 0x5A, 0x34, 0x45,
+ 0x4D, 0x41, 0x51, 0x49, 0x42, 0x4D, 0x41, 0x67, 0x47, 0x42, 0x6D, 0x65, 0x42, 0x44, 0x41, 0x45,
+ 0x43, 0x41, 0x6A, 0x41, 0x49, 0x42, 0x67, 0x5A, 0x6E, 0x67, 0x51, 0x77, 0x42, 0x41, 0x67, 0x4D,
+ 0x77, 0x44, 0x51, 0x59, 0x4A, 0x4B, 0x6F, 0x5A, 0x49, 0x68, 0x76, 0x63, 0x4E, 0x41, 0x51, 0x45,
+ 0x4C, 0x42, 0x51, 0x41, 0x44, 0x67, 0x67, 0x45, 0x42, 0x0D, 0x0A, 0x41, 0x41, 0x55, 0x6B, 0x48,
+ 0x64, 0x30, 0x62, 0x73, 0x43, 0x72, 0x72, 0x6D, 0x4E, 0x61, 0x46, 0x34, 0x7A, 0x6C, 0x4E, 0x58,
+ 0x6D, 0x74, 0x58, 0x6E, 0x59, 0x4A, 0x58, 0x2F, 0x4F, 0x76, 0x6F, 0x4D, 0x61, 0x4A, 0x58, 0x6B,
+ 0x47, 0x55, 0x46, 0x76, 0x68, 0x5A, 0x45, 0x4F, 0x46, 0x70, 0x33, 0x41, 0x72, 0x6E, 0x50, 0x45,
+ 0x45, 0x4C, 0x47, 0x34, 0x5A, 0x4B, 0x6B, 0x34, 0x30, 0x55, 0x6E, 0x0D, 0x0A, 0x2B, 0x41, 0x42,
+ 0x48, 0x4C, 0x47, 0x69, 0x6F, 0x56, 0x70, 0x6C, 0x54, 0x56, 0x49, 0x2B, 0x74, 0x6E, 0x6B, 0x44,
+ 0x42, 0x30, 0x41, 0x2B, 0x32, 0x31, 0x77, 0x30, 0x4C, 0x4F, 0x45, 0x68, 0x73, 0x55, 0x43, 0x78,
+ 0x4A, 0x6B, 0x41, 0x5A, 0x62, 0x5A, 0x42, 0x32, 0x4C, 0x7A, 0x45, 0x67, 0x77, 0x4C, 0x74, 0x34,
+ 0x49, 0x34, 0x70, 0x74, 0x4A, 0x49, 0x73, 0x43, 0x53, 0x44, 0x42, 0x46, 0x65, 0x0D, 0x0A, 0x6C,
+ 0x70, 0x4B, 0x55, 0x31, 0x66, 0x77, 0x67, 0x33, 0x46, 0x5A, 0x73, 0x35, 0x5A, 0x4B, 0x54, 0x76,
+ 0x33, 0x6F, 0x63, 0x77, 0x44, 0x66, 0x6A, 0x68, 0x55, 0x6B, 0x56, 0x2B, 0x69, 0x76, 0x68, 0x64,
+ 0x44, 0x6B, 0x59, 0x44, 0x37, 0x66, 0x61, 0x38, 0x36, 0x4A, 0x58, 0x57, 0x47, 0x42, 0x50, 0x7A,
+ 0x49, 0x36, 0x55, 0x41, 0x50, 0x78, 0x47, 0x65, 0x7A, 0x51, 0x78, 0x50, 0x6B, 0x31, 0x48, 0x0D,
+ 0x0A, 0x67, 0x6F, 0x45, 0x36, 0x79, 0x2F, 0x53, 0x4A, 0x58, 0x51, 0x37, 0x76, 0x54, 0x51, 0x31,
+ 0x75, 0x6E, 0x42, 0x75, 0x43, 0x4A, 0x4E, 0x30, 0x79, 0x4A, 0x56, 0x30, 0x52, 0x65, 0x46, 0x45,
+ 0x51, 0x50, 0x61, 0x41, 0x31, 0x49, 0x77, 0x51, 0x76, 0x5A, 0x57, 0x2B, 0x63, 0x77, 0x64, 0x46,
+ 0x44, 0x31, 0x39, 0x41, 0x65, 0x38, 0x7A, 0x46, 0x6E, 0x57, 0x53, 0x66, 0x64, 0x61, 0x39, 0x4A,
+ 0x31, 0x0D, 0x0A, 0x43, 0x5A, 0x4D, 0x52, 0x4A, 0x43, 0x51, 0x55, 0x7A, 0x79, 0x6D, 0x2B, 0x35,
+ 0x69, 0x50, 0x44, 0x75, 0x49, 0x39, 0x79, 0x50, 0x2B, 0x6B, 0x48, 0x79, 0x43, 0x52, 0x45, 0x55,
+ 0x33, 0x71, 0x7A, 0x75, 0x57, 0x46, 0x6C, 0x6F, 0x55, 0x77, 0x4F, 0x78, 0x6B, 0x67, 0x41, 0x79,
+ 0x58, 0x56, 0x6A, 0x42, 0x59, 0x64, 0x77, 0x52, 0x56, 0x4B, 0x44, 0x30, 0x35, 0x57, 0x64, 0x52,
+ 0x65, 0x72, 0x77, 0x0D, 0x0A, 0x36, 0x44, 0x45, 0x64, 0x66, 0x67, 0x6B, 0x66, 0x43, 0x76, 0x34,
+ 0x2B, 0x33, 0x61, 0x6F, 0x38, 0x58, 0x6E, 0x54, 0x53, 0x72, 0x4C, 0x45, 0x3D, 0x0D, 0x0A, 0x2D,
+ 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43,
+ 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A
+};
diff --git a/src/config.cpp b/src/config.cpp
new file mode 100644
index 0000000..e8b10eb
--- /dev/null
+++ b/src/config.cpp
@@ -0,0 +1,128 @@
+#include
+#include
+#include
+#include