Add P6 OTA Requestor App (#14563)

* Add P6 ota-requestor app.

* More work on p6 ota app.

* Add new linker script for p6 ota requestor.
Add necessary defines for ota.

* Add anycloud-ota and serial-flash submodules.

* Adding more code to p6 OTA.

* Add factory reset button handling
Fix factory reset bug.

* Move various ota objects to AppTask.

* Fix init bug.

* More p6 ota changes.

* Fix build issues with other p6 apps.

* Add mcuboot config headers.

* Add bootloader hex.

* Format with clang-format and gn format.

* Small improvement to P6 OTA image processor.

* App network commissioning fixes.

* Add ota build scripts.
Add build flag for ota update image.

* Fixup documentation

* Ran gn format

* CI fixes

* Restyling!

* Add DAPLINK to word list.

* More restyling.

* Remove duplicate submodule entry.

* Addressing review issues.

* Add button handling to trigger query-image commands from device.

* Fix for restyle.

* A few more review items.

* More restyle

* Move persistent storage to last 1/4 of flash to leave room for OTA images at start.

* Fix compile issue and add some comments.

* Move NotifyUpdateApplied to after update and reboot.

* Add arg for chip_stack_lock_tracking.

* Delete call to removed function.

* Restyled by clang-format

* Restyled by gn

* Save software version persistently and fix update logic.

* Restyling.

* Fix compile error on other platforms.

* Compile fix for linux fake tests.

* Fix P6 compile after rebase.

* Quick update to README.

* Restyle.

Co-authored-by: Restyled.io <commits@restyled.io>
diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
index a43f325..82beacd 100644
--- a/.github/.wordlist.txt
+++ b/.github/.wordlist.txt
@@ -294,6 +294,7 @@
 CYW
 DAC
 DAP
+DAPLINK
 DataFrame
 DataModelRevision
 dataset
diff --git a/.gitmodules b/.gitmodules
index 3669fb0..45cbaf4 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -181,6 +181,9 @@
 [submodule "cyw30739_sdk/tools"]
 	path = third_party/cyw30739_sdk/repos/btsdk-tools
 	url = https://github.com/Infineon/btsdk-tools.git
+[submodule "third_party/p6/p6_sdk/libs/anycloud-ota"]
+	path = third_party/p6/p6_sdk/libs/anycloud-ota
+	url = https://github.com/Infineon/anycloud-ota
 [submodule "third_party/mbed-mcu-boot/repo"]
 	path = third_party/mbed-mcu-boot/repo
 	url = https://github.com/ATmobica/mcuboot.git
diff --git a/examples/ota-requestor-app/p6/.gn b/examples/ota-requestor-app/p6/.gn
new file mode 100644
index 0000000..81cec9d
--- /dev/null
+++ b/examples/ota-requestor-app/p6/.gn
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+
+# The location of the build configuration file.
+buildconfig = "${build_root}/config/BUILDCONFIG.gn"
+
+# CHIP uses angle bracket includes.
+check_system_includes = true
+
+default_args = {
+  target_cpu = "arm"
+  target_os = "freertos"
+
+  import("//args.gni")
+}
diff --git a/examples/ota-requestor-app/p6/BUILD.gn b/examples/ota-requestor-app/p6/BUILD.gn
new file mode 100644
index 0000000..f628f77
--- /dev/null
+++ b/examples/ota-requestor-app/p6/BUILD.gn
@@ -0,0 +1,174 @@
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/build.gni")
+import("//build_overrides/chip.gni")
+import("//build_overrides/p6.gni")
+
+import("${build_root}/config/defaults.gni")
+import("${p6_sdk_build_root}/p6_executable.gni")
+import("${p6_sdk_build_root}/p6_sdk.gni")
+
+assert(current_os == "freertos")
+
+p6_project_dir = "${chip_root}/examples/ota-requestor-app/p6"
+examples_plat_dir = "${chip_root}/examples/platform/p6"
+
+declare_args() {
+  # Dump memory usage at link time.
+  chip_print_memory_usage = false
+
+  # PIN code for PASE session establishment.
+  setup_pin_code = 20202021
+
+  # Monitor & log memory usage at runtime.
+  enable_heap_monitoring = false
+
+  # Build update app
+  build_update_image = false
+}
+
+config("p6_ota_config") {
+  ldflags = [ "-T/" + rebase_path("src/cy8c6xxa_cm4_dual_ota_int.ld",
+                                  "/",
+                                  "${p6_project_dir}") ]
+
+  ldflags += [ "-Wl,--defsym,MCUBOOT_HEADER_SIZE=0x400,--defsym,MCUBOOT_BOOTLOADER_SIZE=0x18000,--defsym,CY_BOOT_PRIMARY_1_SIZE=0x1C0000" ]
+
+  defines = [
+    "P6_OTA",
+    "OTA_SUPPORT ",
+    "OTA_USE_EXTERNAL_FLASH",
+    "CY_BOOT_USE_EXTERNAL_FLASH",
+    "MCUBOOT_HEADER_SIZE=0x400",
+    "MCUBOOT_MAX_IMG_SECTORS=3584",
+    "CY_BOOT_SCRATCH_SIZE=0x00004000",
+    "MCUBOOT_BOOTLOADER_SIZE=0x00018000",
+    "CY_BOOT_BOOTLOADER_SIZE=0x00018000",
+    "CY_BOOT_PRIMARY_1_START=0x00018000",
+    "CY_BOOT_PRIMARY_1_SIZE=0x1C0000",
+    "CY_BOOT_SECONDARY_1_START=0x00000000",
+    "CY_BOOT_SECONDARY_1_SIZE=0x001C0000",
+    "CY_FLASH_ERASE_VALUE=0xFF",
+    "MCUBOOT_IMAGE_NUMBER=1",
+    "MCUBOOT_SLOT_SIZE=0x1C0000",
+    "MCUBOOT_SCRATCH_SIZE=0x4000",
+    "MCUBOOT_SECTOR_SIZE = 512",
+    "APP_VERSION_MAJOR=1",
+    "APP_VERSION_MINOR=0",
+    "APP_VERSION_BUILD=0",
+    "MCUBOOT_OVERWRITE_ONLY",
+    "CY_ENABLE_XIP_PROGRAM",
+  ]
+
+  if (build_update_image) {
+    defines += [ "CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION=2" ]
+  } else {
+    defines += [ "CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION=1" ]
+  }
+}
+
+# Warning: Don't change the name of this target without also modifying
+# third_party/p6/BUILD.gn and third_party/p6/p6_sdk.gn. There are conditionals
+# relying on this name.
+p6_sdk_sources("ota_requestor_app_sdk_sources") {
+  include_dirs = [
+    "${chip_root}/src/platform/P6",
+    "${p6_project_dir}/include",
+    "${examples_plat_dir}",
+    "${p6_project_dir}/config",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/mem_config/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/include/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/include/flash_map_backend/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/sysflash/",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/bootutil/include",
+  ]
+
+  defines = [
+    "BOARD_ID=${p6_board}",
+    "P6_LOG_ENABLED=1",
+    "CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE=${setup_pin_code}",
+  ]
+
+  sources = [
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/bootutil/src/bootutil_misc.c",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/cy_flash_map.c",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/cy_flash_psoc6.c",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/cy_smif_psoc6.c",
+    "${chip_root}/third_party/p6/p6_sdk/libs/anycloud-ota/source/mcuboot/cy_flash_pal/mem_config/mem_config_sfdp.c",
+    "${p6_project_dir}/include/CHIPProjectConfig.h",
+  ]
+
+  public_configs = [
+    "${chip_root}/third_party/p6:p6_sdk_config",
+    ":p6_ota_config",
+  ]
+}
+
+p6_executable("ota_requestor_app") {
+  include_dirs = []
+  defines = []
+  output_name = "chip-p6-ota-requestor-example.out"
+
+  sources = [
+    "${examples_plat_dir}/LEDWidget.cpp",
+    "${examples_plat_dir}/init_p6Platform.cpp",
+    "src/AppTask.cpp",
+    "src/ButtonHandler.cpp",
+    "src/ZclCallbacks.cpp",
+    "src/main.cpp",
+  ]
+
+  deps = [
+    ":ota_requestor_app_sdk_sources",
+    "${chip_root}/examples/common/QRCode",
+    "${chip_root}/examples/ota-requestor-app/ota-requestor-common",
+    "${chip_root}/src/app/server",
+    "${chip_root}/src/lib",
+    "${chip_root}/src/setup_payload",
+  ]
+
+  include_dirs += [
+    "include",
+    "${examples_plat_dir}",
+    "${p6_project_dir}/include",
+    "${chip_root}/examples/ota-requestor-app/ota-requestor-common/include",
+  ]
+
+  defines = []
+
+  if (enable_heap_monitoring) {
+    sources += [ "${examples_plat_dir}/MemMonitoring.cpp" ]
+    defines += [ "HEAP_MONITORING" ]
+  }
+
+  if (chip_print_memory_usage) {
+    ldflags += [
+      "-Wl,--print-memory-usage",
+      "-fstack-usage",
+    ]
+  }
+
+  output_dir = root_out_dir
+}
+
+group("p6") {
+  deps = [ ":ota_requestor_app" ]
+}
+
+group("default") {
+  deps = [ ":p6" ]
+}
diff --git a/examples/ota-requestor-app/p6/README.md b/examples/ota-requestor-app/p6/README.md
new file mode 100644
index 0000000..73c5361
--- /dev/null
+++ b/examples/ota-requestor-app/p6/README.md
@@ -0,0 +1,138 @@
+#CHIP P6 OTA Requestor Example
+
+An example demonstrating the OTA Requestor cluster on a Infineon
+CY8CKIT-062S2-43012 board.
+
+<hr>
+
+-   [Matter P6 OTA Requestor Example](#chip-p6-ota-requestor-example)
+    -   [Introduction](#introduction)
+    -   [Building](#building)
+    -   [Flashing the Application](#flashing-the-application)
+    -   [Running OTA Update Process](#running-ota-update-process)
+    -   [Notes](#notes)
+
+<hr>
+
+<a name="introduction"></a>
+
+## Introduction
+
+The P6 OTA Requestor example provides a baseline demonstration of a OTA
+requestor device, built using Matter and the Infineon Modustoolbox SDK. It can
+be controlled by Matter controller over Wi-Fi network.
+
+The P6 device can be commissioned over Bluetooth Low Energy where the device and
+the Matter controller will exchange security information with the Rendezvous
+procedure. Wi-Fi Network credentials are then provided to the P6 device which
+will then join the network.
+
+<a name="building"></a>
+
+## Building
+
+-   [Modustoolbox Software](https://www.cypress.com/products/modustoolbox)
+
+    Refer to `integrations/docker/images/chip-build-infineon/Dockerfile` or
+    `scripts/examples/gn_p6_example.sh` for downloading the Software and related
+    tools.
+
+-   Install some additional tools (likely already present for Matter
+    developers): \$ sudo apt install gcc g++ clang ninja-build python
+    python3-venv libssl-dev libavahi-client-dev libglib2.0-dev git cmake
+    python3-pip
+
+-   Supported hardware:
+    [CY8CKIT-062S2-43012](https://www.cypress.com/CY8CKIT-062S2-43012)
+
+*   The following applications must be built to demonstrate the OTA process:
+
+          - The P6 OTA Requestor App
+          - The Updated P6 OTA Requestor App (or other app)
+          - An OTA Provider App (the Linux ota-provider app is used here)
+          - chip-tool
+
+*   Build the P6 OTA Requestor application from the chip root dir:
+
+          $ ./examples/ota-requestor-app/examples/ota_base_build.sh
+
+*   Build the P6 OTA Update application from the chip root dir:
+
+          $ ./examples/ota-requestor-app/examples/ota_update_build.sh
+
+*   On a RPi4: Build the Linux OTA Provider application from the chip root dir:
+
+          $ ./scripts/examples/gn_build_example.sh examples/ota-provider-app/linux/ out/ota_provider_debug/ chip_config_network_layer_ble=false
+
+*   On a RPi4: Build chip-tool:
+
+          $ ./scripts/examples/gn_build_example.sh examples/chip-tool/ out/chip-tool/
+
+*   Additionally a pre-compiled bootloader must be flashed to the board. This
+    can be found at:
+
+          $ ./examples/ota-requestor-app/p6/matter-psoc6-mcuboot-bootloader.hex
+
+<a name="flashing-the-application"></a>
+
+## Flashing the Application
+
+-   Flash the bootloader by first putting the CY8CKIT-062S2-43012 board into
+    KitProg3 DAPLINK Mode by pressing the `MODE SELECT` button.
+    `KITPROG3 STATUS` LED will blink to indicate the the board is in the proper
+    mode. A drive named 'DAPLINK' should be automatically mounted. To flash
+    drag-and-drop matter-psoc6-mcuboot-bootloader.hex into that drive.
+
+-   Put CY8CKIT-062S2-43012 board back into KitProg3 CMSIS-DAP Mode by pressing
+    the `MODE SELECT` button. `KITPROG3 STATUS` LED is ON confirms board is in
+    proper mode.
+
+-   On the command line:
+
+          $ cd ~/connectedhomeip
+          $ python3 out/ota_requestor_debug/chip-p6-ota-requestor-example.flash.py
+
+<a name="running-ota-update-process"></a>
+
+### Running OTA Update Process
+
+-   Make sure the ota-requestor-app is flashed and booting on the
+    CY8CKIT-062S2-43012.
+
+-   Transfer out/ota_requestor_update_debug/chip-p6-ota-requestor-example.bin to
+    a RPi4.
+
+-   On the RPi: In terminal 1 run the Linux ota-provider-app as follows:
+
+        $ ./out/ota_provider_debug/chip-ota-provider-app -f chip-p6-ota-requestor-example.bin
+
+-   On the RPi: In terminal 2 run the following chip-tool commands
+
+        $ ./out/chip-tool/chip-tool pairing ble-wifi 2 "<SSID>" "<PASSWORD>" 20202021 3840
+
+        $ ./out/chip-tool/chip-tool pairing onnetwork 1 20202021
+
+        $ ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1, 2], "targets": [{"cluster": null, "endpoint": 0, "deviceType": null}]}]' 1 0
+
+        $ ./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": [1, 2], "targets": [{"cluster": null, "endpoint": 0, "deviceType": null}]}]' 2 0
+
+        $ ./chip-tool otasoftwareupdaterequestor write default-ota-providers '[{"fabricIndex": 1, "providerNodeID": 1, "endpoint": 0}]' 2 0
+
+-   Press user button 1 on the CY8CKIT-062S2-43012. This will trigger a
+    query-image call from the board using the default ota provider list written
+    in the above commands.
+
+-   Using a serial emulator reading from the CY8CKIT-062S2-43012, you should
+    observe the updated application being transferred to the board, written to
+    flash, and, when completed, booted into.
+
+<a name="notes"></a>
+
+#### Notes
+
+Raspberry Pi 4 BLE connection issues can be avoided by running the following
+commands. These power cycle the BlueTooth hardware and disable BR/EDR mode.
+
+          $ sudo btmgmt -i hci0 power off
+          $ sudo btmgmt -i hci0 bredr off
+          $ sudo btmgmt -i hci0 power on
diff --git a/examples/ota-requestor-app/p6/args.gni b/examples/ota-requestor-app/p6/args.gni
new file mode 100644
index 0000000..0afa5bc
--- /dev/null
+++ b/examples/ota-requestor-app/p6/args.gni
@@ -0,0 +1,28 @@
+# Copyright (c) 2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import("//build_overrides/chip.gni")
+import("//build_overrides/pigweed.gni")
+import("${chip_root}/src/platform/P6/args.gni")
+
+declare_args() {
+  chip_enable_ota_requestor = true
+
+  # Disable lock tracking, since our FreeRTOS configuration does not set
+  # INCLUDE_xSemaphoreGetMutexHolder
+  chip_stack_lock_tracking = "none"
+}
+
+p6_target_project =
+    get_label_info(":ota_requestor_app_sdk_sources", "label_no_toolchain")
diff --git a/examples/ota-requestor-app/p6/build_overrides b/examples/ota-requestor-app/p6/build_overrides
new file mode 120000
index 0000000..194ee0b
--- /dev/null
+++ b/examples/ota-requestor-app/p6/build_overrides
@@ -0,0 +1 @@
+../../build_overrides/
\ No newline at end of file
diff --git a/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_assert.h b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_assert.h
new file mode 100644
index 0000000..15a6955
--- /dev/null
+++ b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_assert.h
@@ -0,0 +1,20 @@
+/*
+ * mcuboot_assert.h
+ *
+ * Cypress-specific assert() macro redefinition
+ *
+ */
+
+#ifndef MCUBOOT_ASSERT_H
+#define MCUBOOT_ASSERT_H
+
+#define CYBL_ASSERT(...) Cy_BLServ_Assert(__VA_ARGS__)
+
+#if !defined(NDEBUG)
+#undef assert
+#define assert(...) CYBL_ASSERT(__VA_ARGS__)
+#else
+#define assert
+#endif
+
+#endif /* MCUBOOT_ASSERT_H */
diff --git a/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_config.h b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_config.h
new file mode 100644
index 0000000..6b11d85
--- /dev/null
+++ b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_config.h
@@ -0,0 +1,151 @@
+/* Copyright 2019 Cypress Semiconductor Corporation
+ *
+ * Copyright (c) 2018 Open Source Foundries Limited
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#ifndef MCUBOOT_CONFIG_H
+#define MCUBOOT_CONFIG_H
+
+/*
+ * Template configuration file for MCUboot.
+ *
+ * When porting MCUboot to a new target, copy it somewhere that your
+ * include path can find it as mcuboot_config/mcuboot_config.h, and
+ * make adjustments to suit your platform.
+ *
+ * For examples, see:
+ *
+ * boot/zephyr/include/mcuboot_config/mcuboot_config.h
+ * boot/mynewt/mcuboot_config/include/mcuboot_config/mcuboot_config.h
+ */
+/* Default maximum number of flash sectors per image slot; change
+ * as desirable. */
+#ifndef MCUBOOT_MAX_IMG_SECTORS
+#define MCUBOOT_MAX_IMG_SECTORS 128
+#endif
+
+/*
+ * Signature types
+ *
+ * You must choose exactly one signature type.
+ */
+
+/* Uncomment for RSA signature support */
+//#define MCUBOOT_SIGN_RSA
+
+/* Uncomment for ECDSA signatures using curve P-256. */
+//#define MCUBOOT_SIGN_EC256
+//#define NUM_ECC_BYTES (256 / 8) // P-256 curve size in bytes, rnok: to make compilable
+
+// #define MCUBOOT_SIGN_EC
+
+/*
+ * Upgrade mode
+ *
+ * The default is to support A/B image swapping with rollback.  A
+ * simpler code path, which only supports overwriting the
+ * existing image with the update image, is also available.
+ */
+#ifdef MCUBOOT_OVERWRITE_ONLY
+/* Uncomment to only erase and overwrite those slot 0 sectors needed
+ * to install the new image, rather than the entire image slot. */
+/* #define MCUBOOT_OVERWRITE_ONLY_FAST */
+#else
+/* Using SWAP w Scratch by default.
+ * Comment/Uncomment which is needed. */
+/* #define MCUBOOT_SWAP_USING_SCRATCH 1 */
+/* #define MCUBOOT_SWAP_USING_MOVE 1 */
+#define MCUBOOT_SWAP_USING_STATUS 1
+#endif
+
+/*
+ * Cryptographic settings
+ *
+ * You must choose between mbedTLS and Tinycrypt as source of
+ * cryptographic primitives. Other cryptographic settings are also
+ * available.
+ */
+
+/* Uncomment to use ARM's mbedTLS cryptographic primitives */
+#define MCUBOOT_USE_MBED_TLS
+/* Uncomment to use Tinycrypt's. */
+/* #define MCUBOOT_USE_TINYCRYPT */
+
+/*
+ * Always check the signature of the image in slot 0 before booting,
+ * even if no upgrade was performed. This is recommended if the boot
+ * time penalty is acceptable.
+ */
+//#define MCUBOOT_VALIDATE_PRIMARY_SLOT
+
+/*
+ * Flash abstraction
+ */
+
+/* Uncomment if your flash map API supports flash_area_get_sectors().
+ * See the flash APIs for more details. */
+// TODO: FWSECURITY-755
+#define MCUBOOT_USE_FLASH_AREA_GET_SECTORS
+
+/* Default number of separately updateable images; change in case of
+ * multiple images. */
+#ifndef MCUBOOT_IMAGE_NUMBER
+#define MCUBOOT_IMAGE_NUMBER 1
+#endif
+
+/*
+ * Logging
+ */
+
+/*
+ * If logging is enabled the following functions must be defined by the
+ * platform:
+ *
+ *    MCUBOOT_LOG_ERR(...)
+ *    MCUBOOT_LOG_WRN(...)
+ *    MCUBOOT_LOG_INF(...)
+ *    MCUBOOT_LOG_DBG(...)
+ *
+ * The following global logging level configuration macros must also be
+ * defined, each with a unique value. Those will be used to define a global
+ * configuration and will allow any source files to override the global
+ * configuration:
+ *
+ *    MCUBOOT_LOG_LEVEL_OFF
+ *    MCUBOOT_LOG_LEVEL_ERROR
+ *    MCUBOOT_LOG_LEVEL_WARNING
+ *    MCUBOOT_LOG_LEVEL_INFO
+ *    MCUBOOT_LOG_LEVEL_DEBUG
+ *
+ * The global logging level must be defined, with one of the previously defined
+ * logging levels:
+ *
+ *    #define MCUBOOT_LOG_LEVEL MCUBOOT_LOG_LEVEL_(OFF|ERROR|WARNING|INFO|DEBUG)
+ *
+ * MCUBOOT_LOG_LEVEL sets the minimum level that will be logged. The function
+ * priority is:
+ *
+ *    MCUBOOT_LOG_ERR > MCUBOOT_LOG_WRN > MCUBOOT_LOG_INF > MCUBOOT_LOG_DBG
+ *
+ * NOTE: Each source file is still able to request its own logging level by
+ * defining BOOT_LOG_LEVEL before #including `bootutil_log.h`
+ */
+#define MCUBOOT_HAVE_LOGGING 1
+
+/*
+ * Assertions
+ */
+
+/* Uncomment if your platform has its own mcuboot_config/mcuboot_assert.h.
+ * If so, it must provide an ASSERT macro for use by bootutil. Otherwise,
+ * "assert" is used. */
+//#define MCUBOOT_HAVE_ASSERT_H
+
+#define MCUBOOT_WATCHDOG_FEED()                                                                                                    \
+    do                                                                                                                             \
+    {                                                                                                                              \
+        /* TODO: to be implemented */                                                                                              \
+    } while (0)
+
+#endif /* MCUBOOT_CONFIG_H */
diff --git a/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_logging.h b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_logging.h
new file mode 100644
index 0000000..35424b4
--- /dev/null
+++ b/examples/ota-requestor-app/p6/config/mcuboot_config/mcuboot_logging.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2018 Nordic Semiconductor ASA
+ * Copyright (c) 2015 Runtime Inc
+ * Copyright (c) 2020 Cypress Semiconductor Corporation
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+/*******************************************************************************/
+
+#ifndef MCUBOOT_LOGGING_H
+#define MCUBOOT_LOGGING_H
+
+#include <stdio.h>
+
+#define MCUBOOT_LOG_LEVEL_OFF 0
+#define MCUBOOT_LOG_LEVEL_ERROR 1
+#define MCUBOOT_LOG_LEVEL_WARNING 2
+#define MCUBOOT_LOG_LEVEL_INFO 3
+#define MCUBOOT_LOG_LEVEL_DEBUG 4
+
+/*
+ * The compiled log level determines the maximum level that can be
+ * printed.  Messages at or below this level can be printed, provided
+ * they are also enabled through the Rust logging system, such as by
+ * setting RUST_LOG to bootsim::api=info.
+ */
+#ifndef MCUBOOT_LOG_LEVEL
+#define MCUBOOT_LOG_LEVEL MCUBOOT_LOG_LEVEL_INFO
+#endif
+
+int sim_log_enabled(int level);
+
+#define sim_log_enabled(x) 1
+
+#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_ERROR
+#define MCUBOOT_LOG_ERR(_fmt, ...)                                                                                                 \
+    do                                                                                                                             \
+    {                                                                                                                              \
+        if (sim_log_enabled(MCUBOOT_LOG_LEVEL_ERROR))                                                                              \
+        {                                                                                                                          \
+            fprintf(stderr, "[ERR] " _fmt "\n\r", ##__VA_ARGS__);                                                                  \
+        }                                                                                                                          \
+    } while (0)
+#else
+#define MCUBOOT_LOG_ERR(...) IGNORE(__VA_ARGS__)
+#endif
+
+#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_WARNING
+#define MCUBOOT_LOG_WRN(_fmt, ...)                                                                                                 \
+    do                                                                                                                             \
+    {                                                                                                                              \
+        if (sim_log_enabled(MCUBOOT_LOG_LEVEL_WARNING))                                                                            \
+        {                                                                                                                          \
+            fprintf(stderr, "[WRN] " _fmt "\n\r", ##__VA_ARGS__);                                                                  \
+        }                                                                                                                          \
+    } while (0)
+#else
+#define MCUBOOT_LOG_WRN(...) IGNORE(__VA_ARGS__)
+#endif
+
+#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_INFO
+#define MCUBOOT_LOG_INF(_fmt, ...)                                                                                                 \
+    do                                                                                                                             \
+    {                                                                                                                              \
+        if (sim_log_enabled(MCUBOOT_LOG_LEVEL_INFO))                                                                               \
+        {                                                                                                                          \
+            fprintf(stderr, "[INF] " _fmt "\n\r", ##__VA_ARGS__);                                                                  \
+        }                                                                                                                          \
+    } while (0)
+#else
+#define MCUBOOT_LOG_INF(...) IGNORE(__VA_ARGS__)
+#endif
+
+#if MCUBOOT_LOG_LEVEL >= MCUBOOT_LOG_LEVEL_DEBUG
+#define MCUBOOT_LOG_DBG(_fmt, ...)                                                                                                 \
+    do                                                                                                                             \
+    {                                                                                                                              \
+        if (sim_log_enabled(MCUBOOT_LOG_LEVEL_DEBUG))                                                                              \
+        {                                                                                                                          \
+            fprintf(stderr, "[DBG] " _fmt "\n\r", ##__VA_ARGS__);                                                                  \
+        }                                                                                                                          \
+    } while (0)
+#else
+#define MCUBOOT_LOG_DBG(...) IGNORE(__VA_ARGS__)
+#endif
+
+#define MCUBOOT_LOG_MODULE_DECLARE(...)
+
+#endif /* MCUBOOT_LOGGING_H */
diff --git a/examples/ota-requestor-app/p6/config/mcuboot_crypto_acc_config.h b/examples/ota-requestor-app/p6/config/mcuboot_crypto_acc_config.h
new file mode 100644
index 0000000..2bf440a
--- /dev/null
+++ b/examples/ota-requestor-app/p6/config/mcuboot_crypto_acc_config.h
@@ -0,0 +1,52 @@
+/*
+ * mbed Microcontroller Library
+ * Copyright (c) 2019 Cypress Semiconductor Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * \file    mcuboot_crypto_acc_config.h
+ * \version 1.1
+ */
+
+#ifndef MCUBOOT_MBEDTLS_DEVICE_H
+#define MCUBOOT_MBEDTLS_DEVICE_H
+
+/* Currently this target supports SHA1 */
+// #define MBEDTLS_SHA1_C
+
+#define MBEDTLS_SHA1_ALT
+#define MBEDTLS_SHA256_ALT
+#define MBEDTLS_SHA512_ALT
+
+/* Currently this target supports CBC, CFB, OFB, CTR and XTS cipher modes */
+#define MBEDTLS_AES_ALT
+// #define MBEDTLS_CIPHER_MODE_CBC
+// #define MBEDTLS_CIPHER_MODE_CFB
+// #define MBEDTLS_CIPHER_MODE_OFB
+// #define MBEDTLS_CIPHER_MODE_CTR
+// #define MBEDTLS_CIPHER_MODE_XTS
+
+/* Only NIST-P curves are currently supported */
+#define MBEDTLS_ECP_ALT
+// #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP224R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
+
+#define MBEDTLS_ECDSA_SIGN_ALT
+#define MBEDTLS_ECDSA_VERIFY_ALT
+
+#endif /* MCUBOOT_MBEDTLS_DEVICE_H */
diff --git a/examples/ota-requestor-app/p6/config/mcuboot_crypto_config.h b/examples/ota-requestor-app/p6/config/mcuboot_crypto_config.h
new file mode 100644
index 0000000..4f0f7d3
--- /dev/null
+++ b/examples/ota-requestor-app/p6/config/mcuboot_crypto_config.h
@@ -0,0 +1,3606 @@
+/**
+ * \file config.h
+ *
+ * \brief Configuration options (set of defines)
+ *
+ *  This set of compile-time options may be used to enable
+ *  or disable features selectively, and reduce the global
+ *  memory footprint.
+ */
+/*
+ *  Copyright (C) 2006-2018, ARM Limited, All Rights Reserved
+ *  SPDX-License-Identifier: Apache-2.0
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *  not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  This file is part of mbed TLS (https://tls.mbed.org)
+ */
+
+#ifndef MBEDTLS_CONFIG_H
+#define MBEDTLS_CONFIG_H
+
+#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+
+/**
+ * \name SECTION: System support
+ *
+ * This section sets system specific settings.
+ * \{
+ */
+
+/**
+ * \def MBEDTLS_HAVE_ASM
+ *
+ * The compiler has support for asm().
+ *
+ * Requires support for asm() in compiler.
+ *
+ * Used in:
+ *      library/aria.c
+ *      library/timing.c
+ *      include/mbedtls/bn_mul.h
+ *
+ * Required by:
+ *      MBEDTLS_AESNI_C
+ *      MBEDTLS_PADLOCK_C
+ *
+ * Comment to disable the use of assembly code.
+ */
+#define MBEDTLS_HAVE_ASM
+
+/**
+ * \def MBEDTLS_NO_UDBL_DIVISION
+ *
+ * The platform lacks support for double-width integer division (64-bit
+ * division on a 32-bit platform, 128-bit division on a 64-bit platform).
+ *
+ * Used in:
+ *      include/mbedtls/bignum.h
+ *      library/bignum.c
+ *
+ * The bignum code uses double-width division to speed up some operations.
+ * Double-width division is often implemented in software that needs to
+ * be linked with the program. The presence of a double-width integer
+ * type is usually detected automatically through preprocessor macros,
+ * but the automatic detection cannot know whether the code needs to
+ * and can be linked with an implementation of division for that type.
+ * By default division is assumed to be usable if the type is present.
+ * Uncomment this option to prevent the use of double-width division.
+ *
+ * Note that division for the native integer type is always required.
+ * Furthermore, a 64-bit type is always required even on a 32-bit
+ * platform, but it need not support multiplication or division. In some
+ * cases it is also desirable to disable some double-width operations. For
+ * example, if double-width division is implemented in software, disabling
+ * it can reduce code size in some embedded targets.
+ */
+//#define MBEDTLS_NO_UDBL_DIVISION
+
+/**
+ * \def MBEDTLS_NO_64BIT_MULTIPLICATION
+ *
+ * The platform lacks support for 32x32 -> 64-bit multiplication.
+ *
+ * Used in:
+ *      library/poly1305.c
+ *
+ * Some parts of the library may use multiplication of two unsigned 32-bit
+ * operands with a 64-bit result in order to speed up computations. On some
+ * platforms, this is not available in hardware and has to be implemented in
+ * software, usually in a library provided by the toolchain.
+ *
+ * Sometimes it is not desirable to have to link to that library. This option
+ * removes the dependency of that library on platforms that lack a hardware
+ * 64-bit multiplier by embedding a software implementation in Mbed TLS.
+ *
+ * Note that depending on the compiler, this may decrease performance compared
+ * to using the library function provided by the toolchain.
+ */
+//#define MBEDTLS_NO_64BIT_MULTIPLICATION
+
+/**
+ * \def MBEDTLS_HAVE_SSE2
+ *
+ * CPU supports SSE2 instruction set.
+ *
+ * Uncomment if the CPU supports SSE2 (IA-32 specific).
+ */
+//#define MBEDTLS_HAVE_SSE2
+
+/**
+ * \def MBEDTLS_HAVE_TIME
+ *
+ * System has time.h and time().
+ * The time does not need to be correct, only time differences are used,
+ * by contrast with MBEDTLS_HAVE_TIME_DATE
+ *
+ * Defining MBEDTLS_HAVE_TIME allows you to specify MBEDTLS_PLATFORM_TIME_ALT,
+ * MBEDTLS_PLATFORM_TIME_MACRO, MBEDTLS_PLATFORM_TIME_TYPE_MACRO and
+ * MBEDTLS_PLATFORM_STD_TIME.
+ *
+ * Comment if your system does not support time functions
+ */
+#define MBEDTLS_HAVE_TIME
+
+/**
+ * \def MBEDTLS_HAVE_TIME_DATE
+ *
+ * System has time.h, time(), and an implementation for
+ * mbedtls_platform_gmtime_r() (see below).
+ * The time needs to be correct (not necessarily very accurate, but at least
+ * the date should be correct). This is used to verify the validity period of
+ * X.509 certificates.
+ *
+ * Comment if your system does not have a correct clock.
+ *
+ * \note mbedtls_platform_gmtime_r() is an abstraction in platform_util.h that
+ * behaves similarly to the gmtime_r() function from the C standard. Refer to
+ * the documentation for mbedtls_platform_gmtime_r() for more information.
+ *
+ * \note It is possible to configure an implementation for
+ * mbedtls_platform_gmtime_r() at compile-time by using the macro
+ * MBEDTLS_PLATFORM_GMTIME_R_ALT.
+ */
+#define MBEDTLS_HAVE_TIME_DATE
+
+/**
+ * \def MBEDTLS_PLATFORM_MEMORY
+ *
+ * Enable the memory allocation layer.
+ *
+ * By default mbed TLS uses the system-provided calloc() and free().
+ * This allows different allocators (self-implemented or provided) to be
+ * provided to the platform abstraction layer.
+ *
+ * Enabling MBEDTLS_PLATFORM_MEMORY without the
+ * MBEDTLS_PLATFORM_{FREE,CALLOC}_MACROs will provide
+ * "mbedtls_platform_set_calloc_free()" allowing you to set an alternative calloc() and
+ * free() function pointer at runtime.
+ *
+ * Enabling MBEDTLS_PLATFORM_MEMORY and specifying
+ * MBEDTLS_PLATFORM_{CALLOC,FREE}_MACROs will allow you to specify the
+ * alternate function at compile time.
+ *
+ * Requires: MBEDTLS_PLATFORM_C
+ *
+ * Enable this layer to allow use of alternative memory allocators.
+ */
+//#define MBEDTLS_PLATFORM_MEMORY
+
+/**
+ * \def MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
+ *
+ * Do not assign standard functions in the platform layer (e.g. calloc() to
+ * MBEDTLS_PLATFORM_STD_CALLOC and printf() to MBEDTLS_PLATFORM_STD_PRINTF)
+ *
+ * This makes sure there are no linking errors on platforms that do not support
+ * these functions. You will HAVE to provide alternatives, either at runtime
+ * via the platform_set_xxx() functions or at compile time by setting
+ * the MBEDTLS_PLATFORM_STD_XXX defines, or enabling a
+ * MBEDTLS_PLATFORM_XXX_MACRO.
+ *
+ * Requires: MBEDTLS_PLATFORM_C
+ *
+ * Uncomment to prevent default assignment of standard functions in the
+ * platform layer.
+ */
+//#define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS
+
+/**
+ * \def MBEDTLS_PLATFORM_EXIT_ALT
+ *
+ * MBEDTLS_PLATFORM_XXX_ALT: Uncomment a macro to let mbed TLS support the
+ * function in the platform abstraction layer.
+ *
+ * Example: In case you uncomment MBEDTLS_PLATFORM_PRINTF_ALT, mbed TLS will
+ * provide a function "mbedtls_platform_set_printf()" that allows you to set an
+ * alternative printf function pointer.
+ *
+ * All these define require MBEDTLS_PLATFORM_C to be defined!
+ *
+ * \note MBEDTLS_PLATFORM_SNPRINTF_ALT is required on Windows;
+ * it will be enabled automatically by check_config.h
+ *
+ * \warning MBEDTLS_PLATFORM_XXX_ALT cannot be defined at the same time as
+ * MBEDTLS_PLATFORM_XXX_MACRO!
+ *
+ * Requires: MBEDTLS_PLATFORM_TIME_ALT requires MBEDTLS_HAVE_TIME
+ *
+ * Uncomment a macro to enable alternate implementation of specific base
+ * platform function
+ */
+//#define MBEDTLS_PLATFORM_EXIT_ALT
+//#define MBEDTLS_PLATFORM_TIME_ALT
+//#define MBEDTLS_PLATFORM_FPRINTF_ALT
+//#define MBEDTLS_PLATFORM_PRINTF_ALT
+//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
+//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT
+//#define MBEDTLS_PLATFORM_NV_SEED_ALT
+//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
+
+/**
+ * \def MBEDTLS_DEPRECATED_WARNING
+ *
+ * Mark deprecated functions so that they generate a warning if used.
+ * Functions deprecated in one version will usually be removed in the next
+ * version. You can enable this to help you prepare the transition to a new
+ * major version by making sure your code is not using these functions.
+ *
+ * This only works with GCC and Clang. With other compilers, you may want to
+ * use MBEDTLS_DEPRECATED_REMOVED
+ *
+ * Uncomment to get warnings on using deprecated functions.
+ */
+//#define MBEDTLS_DEPRECATED_WARNING
+
+/**
+ * \def MBEDTLS_DEPRECATED_REMOVED
+ *
+ * Remove deprecated functions so that they generate an error if used.
+ * Functions deprecated in one version will usually be removed in the next
+ * version. You can enable this to help you prepare the transition to a new
+ * major version by making sure your code is not using these functions.
+ *
+ * Uncomment to get errors on using deprecated functions.
+ */
+//#define MBEDTLS_DEPRECATED_REMOVED
+
+/**
+ * \def MBEDTLS_CHECK_PARAMS
+ *
+ * This configuration option controls whether the library validates more of
+ * the parameters passed to it.
+ *
+ * When this flag is not defined, the library only attempts to validate an
+ * input parameter if: (1) they may come from the outside world (such as the
+ * network, the filesystem, etc.) or (2) not validating them could result in
+ * internal memory errors such as overflowing a buffer controlled by the
+ * library. On the other hand, it doesn't attempt to validate parameters whose
+ * values are fully controlled by the application (such as pointers).
+ *
+ * When this flag is defined, the library additionally attempts to validate
+ * parameters that are fully controlled by the application, and should always
+ * be valid if the application code is fully correct and trusted.
+ *
+ * For example, when a function accepts as input a pointer to a buffer that may
+ * contain untrusted data, and its documentation mentions that this pointer
+ * must not be NULL:
+ * - The pointer is checked to be non-NULL only if this option is enabled.
+ * - The content of the buffer is always validated.
+ *
+ * When this flag is defined, if a library function receives a parameter that
+ * is invalid:
+ * 1. The function will invoke the macro MBEDTLS_PARAM_FAILED().
+ * 2. If MBEDTLS_PARAM_FAILED() did not terminate the program, the function
+ *   will immediately return. If the function returns an Mbed TLS error code,
+ *   the error code in this case is MBEDTLS_ERR_xxx_BAD_INPUT_DATA.
+ *
+ * When defining this flag, you also need to arrange a definition for
+ * MBEDTLS_PARAM_FAILED(). You can do this by any of the following methods:
+ * - By default, the library defines MBEDTLS_PARAM_FAILED() to call a
+ *   function mbedtls_param_failed(), but the library does not define this
+ *   function. If you do not make any other arrangements, you must provide
+ *   the function mbedtls_param_failed() in your application.
+ *   See `platform_util.h` for its prototype.
+ * - If you enable the macro #MBEDTLS_CHECK_PARAMS_ASSERT, then the
+ *   library defines MBEDTLS_PARAM_FAILED(\c cond) to be `assert(cond)`.
+ *   You can still supply an alternative definition of
+ *   MBEDTLS_PARAM_FAILED(), which may call `assert`.
+ * - If you define a macro MBEDTLS_PARAM_FAILED() before including `config.h`
+ *   or you uncomment the definition of MBEDTLS_PARAM_FAILED() in `config.h`,
+ *   the library will call the macro that you defined and will not supply
+ *   its own version. Note that if MBEDTLS_PARAM_FAILED() calls `assert`,
+ *   you need to enable #MBEDTLS_CHECK_PARAMS_ASSERT so that library source
+ *   files include `<assert.h>`.
+ *
+ * Uncomment to enable validation of application-controlled parameters.
+ */
+//#define MBEDTLS_CHECK_PARAMS
+
+/**
+ * \def MBEDTLS_CHECK_PARAMS_ASSERT
+ *
+ * Allow MBEDTLS_PARAM_FAILED() to call `assert`, and make it default to
+ * `assert`. This macro is only used if #MBEDTLS_CHECK_PARAMS is defined.
+ *
+ * If this macro is not defined, then MBEDTLS_PARAM_FAILED() defaults to
+ * calling a function mbedtls_param_failed(). See the documentation of
+ * #MBEDTLS_CHECK_PARAMS for details.
+ *
+ * Uncomment to allow MBEDTLS_PARAM_FAILED() to call `assert`.
+ */
+//#define MBEDTLS_CHECK_PARAMS_ASSERT
+
+/* \} name SECTION: System support */
+
+/**
+ * \name SECTION: mbed TLS feature support
+ *
+ * This section sets support for features that are or are not needed
+ * within the modules that are enabled.
+ * \{
+ */
+
+/**
+ * \def MBEDTLS_TIMING_ALT
+ *
+ * Uncomment to provide your own alternate implementation for mbedtls_timing_hardclock(),
+ * mbedtls_timing_get_timer(), mbedtls_set_alarm(), mbedtls_set/get_delay()
+ *
+ * Only works if you have MBEDTLS_TIMING_C enabled.
+ *
+ * You will need to provide a header "timing_alt.h" and an implementation at
+ * compile time.
+ */
+//#define MBEDTLS_TIMING_ALT
+
+/**
+ * \def MBEDTLS_AES_ALT
+ *
+ * MBEDTLS__MODULE_NAME__ALT: Uncomment a macro to let mbed TLS use your
+ * alternate core implementation of a symmetric crypto, an arithmetic or hash
+ * module (e.g. platform specific assembly optimized implementations). Keep
+ * in mind that the function prototypes should remain the same.
+ *
+ * This replaces the whole module. If you only want to replace one of the
+ * functions, use one of the MBEDTLS__FUNCTION_NAME__ALT flags.
+ *
+ * Example: In case you uncomment MBEDTLS_AES_ALT, mbed TLS will no longer
+ * provide the "struct mbedtls_aes_context" definition and omit the base
+ * function declarations and implementations. "aes_alt.h" will be included from
+ * "aes.h" to include the new function definitions.
+ *
+ * Uncomment a macro to enable alternate implementation of the corresponding
+ * module.
+ *
+ * \warning   MD2, MD4, MD5, ARC4, DES and SHA-1 are considered weak and their
+ *            use constitutes a security risk. If possible, we recommend
+ *            avoiding dependencies on them, and considering stronger message
+ *            digests and ciphers instead.
+ *
+ */
+//#define MBEDTLS_AES_ALT
+//#define MBEDTLS_ARC4_ALT
+//#define MBEDTLS_ARIA_ALT
+//#define MBEDTLS_BLOWFISH_ALT
+//#define MBEDTLS_CAMELLIA_ALT
+//#define MBEDTLS_CCM_ALT
+//#define MBEDTLS_CHACHA20_ALT
+//#define MBEDTLS_CHACHAPOLY_ALT
+//#define MBEDTLS_CMAC_ALT
+//#define MBEDTLS_DES_ALT
+//#define MBEDTLS_DHM_ALT
+//#define MBEDTLS_ECJPAKE_ALT
+//#define MBEDTLS_GCM_ALT
+//#define MBEDTLS_NIST_KW_ALT
+//#define MBEDTLS_MD2_ALT
+//#define MBEDTLS_MD4_ALT
+//#define MBEDTLS_MD5_ALT
+//#define MBEDTLS_POLY1305_ALT
+//#define MBEDTLS_RIPEMD160_ALT
+//#define MBEDTLS_RSA_ALT
+//#define MBEDTLS_SHA1_ALT
+//#define MBEDTLS_SHA256_ALT
+//#define MBEDTLS_SHA512_ALT
+//#define MBEDTLS_XTEA_ALT
+
+/*
+ * When replacing the elliptic curve module, pleace consider, that it is
+ * implemented with two .c files:
+ *      - ecp.c
+ *      - ecp_curves.c
+ * You can replace them very much like all the other MBEDTLS__MODULE_NAME__ALT
+ * macros as described above. The only difference is that you have to make sure
+ * that you provide functionality for both .c files.
+ */
+//#define MBEDTLS_ECP_ALT
+
+/**
+ * \def MBEDTLS_MD2_PROCESS_ALT
+ *
+ * MBEDTLS__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use you
+ * alternate core implementation of symmetric crypto or hash function. Keep in
+ * mind that function prototypes should remain the same.
+ *
+ * This replaces only one function. The header file from mbed TLS is still
+ * used, in contrast to the MBEDTLS__MODULE_NAME__ALT flags.
+ *
+ * Example: In case you uncomment MBEDTLS_SHA256_PROCESS_ALT, mbed TLS will
+ * no longer provide the mbedtls_sha1_process() function, but it will still provide
+ * the other function (using your mbedtls_sha1_process() function) and the definition
+ * of mbedtls_sha1_context, so your implementation of mbedtls_sha1_process must be compatible
+ * with this definition.
+ *
+ * \note Because of a signature change, the core AES encryption and decryption routines are
+ *       currently named mbedtls_aes_internal_encrypt and mbedtls_aes_internal_decrypt,
+ *       respectively. When setting up alternative implementations, these functions should
+ *       be overridden, but the wrapper functions mbedtls_aes_decrypt and mbedtls_aes_encrypt
+ *       must stay untouched.
+ *
+ * \note If you use the AES_xxx_ALT macros, then is is recommended to also set
+ *       MBEDTLS_AES_ROM_TABLES in order to help the linker garbage-collect the AES
+ *       tables.
+ *
+ * Uncomment a macro to enable alternate implementation of the corresponding
+ * function.
+ *
+ * \warning   MD2, MD4, MD5, DES and SHA-1 are considered weak and their use
+ *            constitutes a security risk. If possible, we recommend avoiding
+ *            dependencies on them, and considering stronger message digests
+ *            and ciphers instead.
+ *
+ */
+//#define MBEDTLS_MD2_PROCESS_ALT
+//#define MBEDTLS_MD4_PROCESS_ALT
+//#define MBEDTLS_MD5_PROCESS_ALT
+//#define MBEDTLS_RIPEMD160_PROCESS_ALT
+//#define MBEDTLS_SHA1_PROCESS_ALT
+//#define MBEDTLS_SHA256_PROCESS_ALT
+//#define MBEDTLS_SHA512_PROCESS_ALT
+//#define MBEDTLS_DES_SETKEY_ALT
+//#define MBEDTLS_DES_CRYPT_ECB_ALT
+//#define MBEDTLS_DES3_CRYPT_ECB_ALT
+//#define MBEDTLS_AES_SETKEY_ENC_ALT
+//#define MBEDTLS_AES_SETKEY_DEC_ALT
+//#define MBEDTLS_AES_ENCRYPT_ALT
+//#define MBEDTLS_AES_DECRYPT_ALT
+//#define MBEDTLS_ECDH_GEN_PUBLIC_ALT
+//#define MBEDTLS_ECDH_COMPUTE_SHARED_ALT
+//#define MBEDTLS_ECDSA_VERIFY_ALT
+//#define MBEDTLS_ECDSA_SIGN_ALT
+//#define MBEDTLS_ECDSA_GENKEY_ALT
+
+/**
+ * \def MBEDTLS_ECP_INTERNAL_ALT
+ *
+ * Expose a part of the internal interface of the Elliptic Curve Point module.
+ *
+ * MBEDTLS_ECP__FUNCTION_NAME__ALT: Uncomment a macro to let mbed TLS use your
+ * alternative core implementation of elliptic curve arithmetic. Keep in mind
+ * that function prototypes should remain the same.
+ *
+ * This partially replaces one function. The header file from mbed TLS is still
+ * used, in contrast to the MBEDTLS_ECP_ALT flag. The original implementation
+ * is still present and it is used for group structures not supported by the
+ * alternative.
+ *
+ * Any of these options become available by defining MBEDTLS_ECP_INTERNAL_ALT
+ * and implementing the following functions:
+ *      unsigned char mbedtls_internal_ecp_grp_capable(
+ *          const mbedtls_ecp_group *grp )
+ *      int  mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp )
+ *      void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp )
+ * The mbedtls_internal_ecp_grp_capable function should return 1 if the
+ * replacement functions implement arithmetic for the given group and 0
+ * otherwise.
+ * The functions mbedtls_internal_ecp_init and mbedtls_internal_ecp_free are
+ * called before and after each point operation and provide an opportunity to
+ * implement optimized set up and tear down instructions.
+ *
+ * Example: In case you uncomment MBEDTLS_ECP_INTERNAL_ALT and
+ * MBEDTLS_ECP_DOUBLE_JAC_ALT, mbed TLS will still provide the ecp_double_jac
+ * function, but will use your mbedtls_internal_ecp_double_jac if the group is
+ * supported (your mbedtls_internal_ecp_grp_capable function returns 1 when
+ * receives it as an argument). If the group is not supported then the original
+ * implementation is used. The other functions and the definition of
+ * mbedtls_ecp_group and mbedtls_ecp_point will not change, so your
+ * implementation of mbedtls_internal_ecp_double_jac and
+ * mbedtls_internal_ecp_grp_capable must be compatible with this definition.
+ *
+ * Uncomment a macro to enable alternate implementation of the corresponding
+ * function.
+ */
+/* Required for all the functions in this section */
+//#define MBEDTLS_ECP_INTERNAL_ALT
+/* Support for Weierstrass curves with Jacobi representation */
+//#define MBEDTLS_ECP_RANDOMIZE_JAC_ALT
+//#define MBEDTLS_ECP_ADD_MIXED_ALT
+//#define MBEDTLS_ECP_DOUBLE_JAC_ALT
+//#define MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT
+//#define MBEDTLS_ECP_NORMALIZE_JAC_ALT
+/* Support for curves with Montgomery arithmetic */
+//#define MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT
+//#define MBEDTLS_ECP_RANDOMIZE_MXZ_ALT
+//#define MBEDTLS_ECP_NORMALIZE_MXZ_ALT
+
+/**
+ * \def MBEDTLS_TEST_NULL_ENTROPY
+ *
+ * Enables testing and use of mbed TLS without any configured entropy sources.
+ * This permits use of the library on platforms before an entropy source has
+ * been integrated (see for example the MBEDTLS_ENTROPY_HARDWARE_ALT or the
+ * MBEDTLS_ENTROPY_NV_SEED switches).
+ *
+ * WARNING! This switch MUST be disabled in production builds, and is suitable
+ * only for development.
+ * Enabling the switch negates any security provided by the library.
+ *
+ * Requires MBEDTLS_ENTROPY_C, MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
+ *
+ */
+//#define MBEDTLS_TEST_NULL_ENTROPY
+
+/**
+ * \def MBEDTLS_ENTROPY_HARDWARE_ALT
+ *
+ * Uncomment this macro to let mbed TLS use your own implementation of a
+ * hardware entropy collector.
+ *
+ * Your function must be called \c mbedtls_hardware_poll(), have the same
+ * prototype as declared in entropy_poll.h, and accept NULL as first argument.
+ *
+ * Uncomment to use your own hardware entropy collector.
+ */
+//#define MBEDTLS_ENTROPY_HARDWARE_ALT
+
+/**
+ * \def MBEDTLS_AES_ROM_TABLES
+ *
+ * Use precomputed AES tables stored in ROM.
+ *
+ * Uncomment this macro to use precomputed AES tables stored in ROM.
+ * Comment this macro to generate AES tables in RAM at runtime.
+ *
+ * Tradeoff: Using precomputed ROM tables reduces RAM usage by ~8kb
+ * (or ~2kb if \c MBEDTLS_AES_FEWER_TABLES is used) and reduces the
+ * initialization time before the first AES operation can be performed.
+ * It comes at the cost of additional ~8kb ROM use (resp. ~2kb if \c
+ * MBEDTLS_AES_FEWER_TABLES below is used), and potentially degraded
+ * performance if ROM access is slower than RAM access.
+ *
+ * This option is independent of \c MBEDTLS_AES_FEWER_TABLES.
+ *
+ */
+//#define MBEDTLS_AES_ROM_TABLES
+
+/**
+ * \def MBEDTLS_AES_FEWER_TABLES
+ *
+ * Use less ROM/RAM for AES tables.
+ *
+ * Uncommenting this macro omits 75% of the AES tables from
+ * ROM / RAM (depending on the value of \c MBEDTLS_AES_ROM_TABLES)
+ * by computing their values on the fly during operations
+ * (the tables are entry-wise rotations of one another).
+ *
+ * Tradeoff: Uncommenting this reduces the RAM / ROM footprint
+ * by ~6kb but at the cost of more arithmetic operations during
+ * runtime. Specifically, one has to compare 4 accesses within
+ * different tables to 4 accesses with additional arithmetic
+ * operations within the same table. The performance gain/loss
+ * depends on the system and memory details.
+ *
+ * This option is independent of \c MBEDTLS_AES_ROM_TABLES.
+ *
+ */
+//#define MBEDTLS_AES_FEWER_TABLES
+
+/**
+ * \def MBEDTLS_CAMELLIA_SMALL_MEMORY
+ *
+ * Use less ROM for the Camellia implementation (saves about 768 bytes).
+ *
+ * Uncomment this macro to use less memory for Camellia.
+ */
+//#define MBEDTLS_CAMELLIA_SMALL_MEMORY
+
+/**
+ * \def MBEDTLS_CIPHER_MODE_CBC
+ *
+ * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers.
+ */
+#define MBEDTLS_CIPHER_MODE_CBC
+
+/**
+ * \def MBEDTLS_CIPHER_MODE_CFB
+ *
+ * Enable Cipher Feedback mode (CFB) for symmetric ciphers.
+ */
+#define MBEDTLS_CIPHER_MODE_CFB
+
+/**
+ * \def MBEDTLS_CIPHER_MODE_CTR
+ *
+ * Enable Counter Block Cipher mode (CTR) for symmetric ciphers.
+ */
+#define MBEDTLS_CIPHER_MODE_CTR
+
+/**
+ * \def MBEDTLS_CIPHER_MODE_OFB
+ *
+ * Enable Output Feedback mode (OFB) for symmetric ciphers.
+ */
+#define MBEDTLS_CIPHER_MODE_OFB
+
+/**
+ * \def MBEDTLS_CIPHER_MODE_XTS
+ *
+ * Enable Xor-encrypt-xor with ciphertext stealing mode (XTS) for AES.
+ */
+#define MBEDTLS_CIPHER_MODE_XTS
+
+/**
+ * \def MBEDTLS_CIPHER_NULL_CIPHER
+ *
+ * Enable NULL cipher.
+ * Warning: Only do so when you know what you are doing. This allows for
+ * encryption or channels without any security!
+ *
+ * Requires MBEDTLS_ENABLE_WEAK_CIPHERSUITES as well to enable
+ * the following ciphersuites:
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_NULL_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_NULL_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_NULL_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_NULL_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_NULL_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_NULL_SHA
+ *      MBEDTLS_TLS_RSA_WITH_NULL_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_NULL_SHA
+ *      MBEDTLS_TLS_RSA_WITH_NULL_MD5
+ *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_NULL_SHA
+ *      MBEDTLS_TLS_PSK_WITH_NULL_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_NULL_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_NULL_SHA
+ *
+ * Uncomment this macro to enable the NULL cipher and ciphersuites
+ */
+//#define MBEDTLS_CIPHER_NULL_CIPHER
+
+/**
+ * \def MBEDTLS_CIPHER_PADDING_PKCS7
+ *
+ * MBEDTLS_CIPHER_PADDING_XXX: Uncomment or comment macros to add support for
+ * specific padding modes in the cipher layer with cipher modes that support
+ * padding (e.g. CBC)
+ *
+ * If you disable all padding modes, only full blocks can be used with CBC.
+ *
+ * Enable padding modes in the cipher layer.
+ */
+#define MBEDTLS_CIPHER_PADDING_PKCS7
+#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
+#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
+#define MBEDTLS_CIPHER_PADDING_ZEROS
+
+/**
+ * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES
+ *
+ * Enable weak ciphersuites in SSL / TLS.
+ * Warning: Only do so when you know what you are doing. This allows for
+ * channels with virtually no security at all!
+ *
+ * This enables the following ciphersuites:
+ *      MBEDTLS_TLS_RSA_WITH_DES_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_DES_CBC_SHA
+ *
+ * Uncomment this macro to enable weak ciphersuites
+ *
+ * \warning   DES is considered a weak cipher and its use constitutes a
+ *            security risk. We recommend considering stronger ciphers instead.
+ */
+//#define MBEDTLS_ENABLE_WEAK_CIPHERSUITES
+
+/**
+ * \def MBEDTLS_REMOVE_ARC4_CIPHERSUITES
+ *
+ * Remove RC4 ciphersuites by default in SSL / TLS.
+ * This flag removes the ciphersuites based on RC4 from the default list as
+ * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible to
+ * enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including them
+ * explicitly.
+ *
+ * Uncomment this macro to remove RC4 ciphersuites by default.
+ */
+#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES
+
+/**
+ * \def MBEDTLS_REMOVE_3DES_CIPHERSUITES
+ *
+ * Remove 3DES ciphersuites by default in SSL / TLS.
+ * This flag removes the ciphersuites based on 3DES from the default list as
+ * returned by mbedtls_ssl_list_ciphersuites(). However, it is still possible
+ * to enable (some of) them with mbedtls_ssl_conf_ciphersuites() by including
+ * them explicitly.
+ *
+ * A man-in-the-browser attacker can recover authentication tokens sent through
+ * a TLS connection using a 3DES based cipher suite (see "On the Practical
+ * (In-)Security of 64-bit Block Ciphers" by Karthikeyan Bhargavan and Gaëtan
+ * Leurent, see https://sweet32.info/SWEET32_CCS16.pdf). If this attack falls
+ * in your threat model or you are unsure, then you should keep this option
+ * enabled to remove 3DES based cipher suites.
+ *
+ * Comment this macro to keep 3DES in the default ciphersuite list.
+ */
+#define MBEDTLS_REMOVE_3DES_CIPHERSUITES
+
+/**
+ * \def MBEDTLS_ECP_DP_SECP192R1_ENABLED
+ *
+ * MBEDTLS_ECP_XXXX_ENABLED: Enables specific curves within the Elliptic Curve
+ * module.  By default all supported curves are enabled.
+ *
+ * Comment macros to disable the curve and functions for it
+ */
+// #define MBEDTLS_ECP_DP_SECP192R1_ENABLED
+#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
+#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP384R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP521R1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP192K1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP224K1_ENABLED
+// #define MBEDTLS_ECP_DP_SECP256K1_ENABLED
+// #define MBEDTLS_ECP_DP_BP256R1_ENABLED
+// #define MBEDTLS_ECP_DP_BP384R1_ENABLED
+// #define MBEDTLS_ECP_DP_BP512R1_ENABLED
+// #define MBEDTLS_ECP_DP_CURVE25519_ENABLED
+// #define MBEDTLS_ECP_DP_CURVE448_ENABLED
+
+/**
+ * \def MBEDTLS_ECP_NIST_OPTIM
+ *
+ * Enable specific 'modulo p' routines for each NIST prime.
+ * Depending on the prime and architecture, makes operations 4 to 8 times
+ * faster on the corresponding curve.
+ *
+ * Comment this macro to disable NIST curves optimisation.
+ */
+#define MBEDTLS_ECP_NIST_OPTIM
+
+/**
+ * \def MBEDTLS_ECP_RESTARTABLE
+ *
+ * Enable "non-blocking" ECC operations that can return early and be resumed.
+ *
+ * This allows various functions to pause by returning
+ * #MBEDTLS_ERR_ECP_IN_PROGRESS (or, for functions in the SSL module,
+ * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS) and then be called later again in
+ * order to further progress and eventually complete their operation. This is
+ * controlled through mbedtls_ecp_set_max_ops() which limits the maximum
+ * number of ECC operations a function may perform before pausing; see
+ * mbedtls_ecp_set_max_ops() for more information.
+ *
+ * This is useful in non-threaded environments if you want to avoid blocking
+ * for too long on ECC (and, hence, X.509 or SSL/TLS) operations.
+ *
+ * Uncomment this macro to enable restartable ECC computations.
+ *
+ * \note  This option only works with the default software implementation of
+ *        elliptic curve functionality. It is incompatible with
+ *        MBEDTLS_ECP_ALT, MBEDTLS_ECDH_XXX_ALT, MBEDTLS_ECDSA_XXX_ALT
+ *        and MBEDTLS_ECDH_LEGACY_CONTEXT.
+ */
+//#define MBEDTLS_ECP_RESTARTABLE
+
+/**
+ * \def MBEDTLS_ECDH_LEGACY_CONTEXT
+ *
+ * Use a backward compatible ECDH context.
+ *
+ * Mbed TLS supports two formats for ECDH contexts (#mbedtls_ecdh_context
+ * defined in `ecdh.h`). For most applications, the choice of format makes
+ * no difference, since all library functions can work with either format,
+ * except that the new format is incompatible with MBEDTLS_ECP_RESTARTABLE.
+
+ * The new format used when this option is disabled is smaller
+ * (56 bytes on a 32-bit platform). In future versions of the library, it
+ * will support alternative implementations of ECDH operations.
+ * The new format is incompatible with applications that access
+ * context fields directly and with restartable ECP operations.
+ *
+ * Define this macro if you enable MBEDTLS_ECP_RESTARTABLE or if you
+ * want to access ECDH context fields directly. Otherwise you should
+ * comment out this macro definition.
+ *
+ * This option has no effect if #MBEDTLS_ECDH_C is not enabled.
+ *
+ * \note This configuration option is experimental. Future versions of the
+ *       library may modify the way the ECDH context layout is configured
+ *       and may modify the layout of the new context type.
+ */
+#define MBEDTLS_ECDH_LEGACY_CONTEXT
+
+/**
+ * \def MBEDTLS_ECDSA_DETERMINISTIC
+ *
+ * Enable deterministic ECDSA (RFC 6979).
+ * Standard ECDSA is "fragile" in the sense that lack of entropy when signing
+ * may result in a compromise of the long-term signing key. This is avoided by
+ * the deterministic variant.
+ *
+ * Requires: MBEDTLS_HMAC_DRBG_C
+ *
+ * Comment this macro to disable deterministic ECDSA.
+ */
+#define MBEDTLS_ECDSA_DETERMINISTIC
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+ *
+ * Enable the PSK based ciphersuite modes in SSL / TLS.
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_RC4_128_SHA
+ */
+#define MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
+ *
+ * Enable the DHE-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_DHM_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA
+ *
+ * \warning    Using DHE constitutes a security risk as it
+ *             is not possible to validate custom DH parameters.
+ *             If possible, it is recommended users should consider
+ *             preferring other methods of key exchange.
+ *             See dhm.h for more details.
+ *
+ */
+#define MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+ *
+ * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA
+ */
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
+ *
+ * Enable the RSA-PSK based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
+ *           MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA
+ */
+#define MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
+ *
+ * Enable the RSA-only based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
+ *           MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_RSA_WITH_RC4_128_MD5
+ */
+#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
+ *
+ * Enable the DHE-RSA based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_DHM_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
+ *           MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+ *
+ * \warning    Using DHE constitutes a security risk as it
+ *             is not possible to validate custom DH parameters.
+ *             If possible, it is recommended users should consider
+ *             preferring other methods of key exchange.
+ *             See dhm.h for more details.
+ *
+ */
+#define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
+ *
+ * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C, MBEDTLS_RSA_C, MBEDTLS_PKCS1_V15,
+ *           MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA
+ */
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+ *
+ * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C, MBEDTLS_ECDSA_C, MBEDTLS_X509_CRT_PARSE_C,
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
+ */
+#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+ *
+ * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+ */
+#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
+ *
+ * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS.
+ *
+ * Requires: MBEDTLS_ECDH_C, MBEDTLS_X509_CRT_PARSE_C
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ */
+#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
+
+/**
+ * \def MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+ *
+ * Enable the ECJPAKE based ciphersuite modes in SSL / TLS.
+ *
+ * \warning This is currently experimental. EC J-PAKE support is based on the
+ * Thread v1.0.0 specification; incompatible changes to the specification
+ * might still happen. For this reason, this is disabled by default.
+ *
+ * Requires: MBEDTLS_ECJPAKE_C
+ *           MBEDTLS_SHA256_C
+ *           MBEDTLS_ECP_DP_SECP256R1_ENABLED
+ *
+ * This enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECJPAKE_WITH_AES_128_CCM_8
+ */
+//#define MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED
+
+/**
+ * \def MBEDTLS_PK_PARSE_EC_EXTENDED
+ *
+ * Enhance support for reading EC keys using variants of SEC1 not allowed by
+ * RFC 5915 and RFC 5480.
+ *
+ * Currently this means parsing the SpecifiedECDomain choice of EC
+ * parameters (only known groups are supported, not arbitrary domains, to
+ * avoid validation issues).
+ *
+ * Disable if you only need to support RFC 5915 + 5480 key formats.
+ */
+#define MBEDTLS_PK_PARSE_EC_EXTENDED
+
+/**
+ * \def MBEDTLS_ERROR_STRERROR_DUMMY
+ *
+ * Enable a dummy error function to make use of mbedtls_strerror() in
+ * third party libraries easier when MBEDTLS_ERROR_C is disabled
+ * (no effect when MBEDTLS_ERROR_C is enabled).
+ *
+ * You can safely disable this if MBEDTLS_ERROR_C is enabled, or if you're
+ * not using mbedtls_strerror() or error_strerror() in your application.
+ *
+ * Disable if you run into name conflicts and want to really remove the
+ * mbedtls_strerror()
+ */
+// #define MBEDTLS_ERROR_STRERROR_DUMMY
+
+/**
+ * \def MBEDTLS_GENPRIME
+ *
+ * Enable the prime-number generation code.
+ *
+ * Requires: MBEDTLS_BIGNUM_C
+ */
+#define MBEDTLS_GENPRIME
+
+/**
+ * \def MBEDTLS_FS_IO
+ *
+ * Enable functions that use the filesystem.
+ */
+// #define MBEDTLS_FS_IO
+
+/**
+ * \def MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
+ *
+ * Do not add default entropy sources. These are the platform specific,
+ * mbedtls_timing_hardclock and HAVEGE based poll functions.
+ *
+ * This is useful to have more control over the added entropy sources in an
+ * application.
+ *
+ * Uncomment this macro to prevent loading of default entropy functions.
+ */
+//#define MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
+
+/**
+ * \def MBEDTLS_NO_PLATFORM_ENTROPY
+ *
+ * Do not use built-in platform entropy functions.
+ * This is useful if your platform does not support
+ * standards like the /dev/urandom or Windows CryptoAPI.
+ *
+ * Uncomment this macro to disable the built-in platform entropy functions.
+ */
+#define MBEDTLS_NO_PLATFORM_ENTROPY
+
+/**
+ * \def MBEDTLS_ENTROPY_FORCE_SHA256
+ *
+ * Force the entropy accumulator to use a SHA-256 accumulator instead of the
+ * default SHA-512 based one (if both are available).
+ *
+ * Requires: MBEDTLS_SHA256_C
+ *
+ * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option
+ * if you have performance concerns.
+ *
+ * This option is only useful if both MBEDTLS_SHA256_C and
+ * MBEDTLS_SHA512_C are defined. Otherwise the available hash module is used.
+ */
+//#define MBEDTLS_ENTROPY_FORCE_SHA256
+
+/**
+ * \def MBEDTLS_ENTROPY_NV_SEED
+ *
+ * Enable the non-volatile (NV) seed file-based entropy source.
+ * (Also enables the NV seed read/write functions in the platform layer)
+ *
+ * This is crucial (if not required) on systems that do not have a
+ * cryptographic entropy source (in hardware or kernel) available.
+ *
+ * Requires: MBEDTLS_ENTROPY_C, MBEDTLS_PLATFORM_C
+ *
+ * \note The read/write functions that are used by the entropy source are
+ *       determined in the platform layer, and can be modified at runtime and/or
+ *       compile-time depending on the flags (MBEDTLS_PLATFORM_NV_SEED_*) used.
+ *
+ * \note If you use the default implementation functions that read a seedfile
+ *       with regular fopen(), please make sure you make a seedfile with the
+ *       proper name (defined in MBEDTLS_PLATFORM_STD_NV_SEED_FILE) and at
+ *       least MBEDTLS_ENTROPY_BLOCK_SIZE bytes in size that can be read from
+ *       and written to or you will get an entropy source error! The default
+ *       implementation will only use the first MBEDTLS_ENTROPY_BLOCK_SIZE
+ *       bytes from the file.
+ *
+ * \note The entropy collector will write to the seed file before entropy is
+ *       given to an external source, to update it.
+ */
+//#define MBEDTLS_ENTROPY_NV_SEED
+
+/**
+ * \def MBEDTLS_MEMORY_DEBUG
+ *
+ * Enable debugging of buffer allocator memory issues. Automatically prints
+ * (to stderr) all (fatal) messages on memory allocation issues. Enables
+ * function for 'debug output' of allocated memory.
+ *
+ * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
+ *
+ * Uncomment this macro to let the buffer allocator print out error messages.
+ */
+//#define MBEDTLS_MEMORY_DEBUG
+
+/**
+ * \def MBEDTLS_MEMORY_BACKTRACE
+ *
+ * Include backtrace information with each allocated block.
+ *
+ * Requires: MBEDTLS_MEMORY_BUFFER_ALLOC_C
+ *           GLIBC-compatible backtrace() an backtrace_symbols() support
+ *
+ * Uncomment this macro to include backtrace information
+ */
+//#define MBEDTLS_MEMORY_BACKTRACE
+
+/**
+ * \def MBEDTLS_PK_RSA_ALT_SUPPORT
+ *
+ * Support external private RSA keys (eg from a HSM) in the PK layer.
+ *
+ * Comment this macro to disable support for external private RSA keys.
+ */
+// #define MBEDTLS_PK_RSA_ALT_SUPPORT
+
+/**
+ * \def MBEDTLS_PKCS1_V15
+ *
+ * Enable support for PKCS#1 v1.5 encoding.
+ *
+ * Requires: MBEDTLS_RSA_C
+ *
+ * This enables support for PKCS#1 v1.5 operations.
+ */
+#define MBEDTLS_PKCS1_V15
+
+/**
+ * \def MBEDTLS_PKCS1_V21
+ *
+ * Enable support for PKCS#1 v2.1 encoding.
+ *
+ * Requires: MBEDTLS_MD_C, MBEDTLS_RSA_C
+ *
+ * This enables support for RSAES-OAEP and RSASSA-PSS operations.
+ */
+#define MBEDTLS_PKCS1_V21
+
+/**
+ * \def MBEDTLS_PSA_CRYPTO_SPM
+ *
+ * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is built for SPM (Secure
+ * Partition Manager) integration which separates the code into two parts: a
+ * NSPE (Non-Secure Process Environment) and an SPE (Secure Process
+ * Environment).
+ *
+ * Module:  library/psa_crypto.c
+ * Requires: MBEDTLS_PSA_CRYPTO_C
+ *
+ */
+//#define MBEDTLS_PSA_CRYPTO_SPM
+
+/**
+ * \def MBEDTLS_PSA_INJECT_ENTROPY
+ *
+ * Enable support for entropy injection at first boot. This feature is
+ * required on systems that do not have a built-in entropy source (TRNG).
+ * This feature is currently not supported on systems that have a built-in
+ * entropy source.
+ *
+ * Requires: MBEDTLS_PSA_CRYPTO_STORAGE_C, MBEDTLS_ENTROPY_NV_SEED
+ *
+ */
+//#define MBEDTLS_PSA_INJECT_ENTROPY
+
+/**
+ * \def MBEDTLS_RSA_NO_CRT
+ *
+ * Do not use the Chinese Remainder Theorem
+ * for the RSA private operation.
+ *
+ * Uncomment this macro to disable the use of CRT in RSA.
+ *
+ */
+//#define MBEDTLS_RSA_NO_CRT
+
+/**
+ * \def MBEDTLS_SELF_TEST
+ *
+ * Enable the checkup functions (*_self_test).
+ */
+#define MBEDTLS_SELF_TEST
+
+/**
+ * \def MBEDTLS_SHA256_SMALLER
+ *
+ * Enable an implementation of SHA-256 that has lower ROM footprint but also
+ * lower performance.
+ *
+ * The default implementation is meant to be a reasonnable compromise between
+ * performance and size. This version optimizes more aggressively for size at
+ * the expense of performance. Eg on Cortex-M4 it reduces the size of
+ * mbedtls_sha256_process() from ~2KB to ~0.5KB for a performance hit of about
+ * 30%.
+ *
+ * Uncomment to enable the smaller implementation of SHA256.
+ */
+//#define MBEDTLS_SHA256_SMALLER
+
+/**
+ * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES
+ *
+ * Enable sending of alert messages in case of encountered errors as per RFC.
+ * If you choose not to send the alert messages, mbed TLS can still communicate
+ * with other servers, only debugging of failures is harder.
+ *
+ * The advantage of not sending alert messages, is that no information is given
+ * about reasons for failures thus preventing adversaries of gaining intel.
+ *
+ * Enable sending of all alert messages
+ */
+#define MBEDTLS_SSL_ALL_ALERT_MESSAGES
+
+/**
+ * \def MBEDTLS_SSL_RECORD_CHECKING
+ *
+ * Enable the function mbedtls_ssl_check_record() which can be used to check
+ * the validity and authenticity of an incoming record, to verify that it has
+ * not been seen before. These checks are performed without modifying the
+ * externally visible state of the SSL context.
+ *
+ * See mbedtls_ssl_check_record() for more information.
+ *
+ * Uncomment to enable support for record checking.
+ */
+#define MBEDTLS_SSL_RECORD_CHECKING
+
+/**
+ * \def MBEDTLS_SSL_DTLS_CONNECTION_ID
+ *
+ * Enable support for the DTLS Connection ID extension
+ * (version draft-ietf-tls-dtls-connection-id-05,
+ * https://tools.ietf.org/html/draft-ietf-tls-dtls-connection-id-05)
+ * which allows to identify DTLS connections across changes
+ * in the underlying transport.
+ *
+ * Setting this option enables the SSL APIs `mbedtls_ssl_set_cid()`,
+ * `mbedtls_ssl_get_peer_cid()` and `mbedtls_ssl_conf_cid()`.
+ * See the corresponding documentation for more information.
+ *
+ * \warning The Connection ID extension is still in draft state.
+ *          We make no stability promises for the availability
+ *          or the shape of the API controlled by this option.
+ *
+ * The maximum lengths of outgoing and incoming CIDs can be configured
+ * through the options
+ * - MBEDTLS_SSL_CID_OUT_LEN_MAX
+ * - MBEDTLS_SSL_CID_IN_LEN_MAX.
+ *
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
+ *
+ * Uncomment to enable the Connection ID extension.
+ */
+//#define MBEDTLS_SSL_DTLS_CONNECTION_ID
+
+/**
+ * \def MBEDTLS_SSL_ASYNC_PRIVATE
+ *
+ * Enable asynchronous external private key operations in SSL. This allows
+ * you to configure an SSL connection to call an external cryptographic
+ * module to perform private key operations instead of performing the
+ * operation inside the library.
+ *
+ */
+//#define MBEDTLS_SSL_ASYNC_PRIVATE
+
+/**
+ * \def MBEDTLS_SSL_CONTEXT_SERIALIZATION
+ *
+ * Enable serialization of the TLS context structures, through use of the
+ * functions mbedtls_ssl_context_save() and mbedtls_ssl_context_load().
+ *
+ * This pair of functions allows one side of a connection to serialize the
+ * context associated with the connection, then free or re-use that context
+ * while the serialized state is persisted elsewhere, and finally deserialize
+ * that state to a live context for resuming read/write operations on the
+ * connection. From a protocol perspective, the state of the connection is
+ * unaffected, in particular this is entirely transparent to the peer.
+ *
+ * Note: this is distinct from TLS session resumption, which is part of the
+ * protocol and fully visible by the peer. TLS session resumption enables
+ * establishing new connections associated to a saved session with shorter,
+ * lighter handshakes, while context serialization is a local optimization in
+ * handling a single, potentially long-lived connection.
+ *
+ * Enabling these APIs makes some SSL structures larger, as 64 extra bytes are
+ * saved after the handshake to allow for more efficient serialization, so if
+ * you don't need this feature you'll save RAM by disabling it.
+ *
+ * Comment to disable the context serialization APIs.
+ */
+#define MBEDTLS_SSL_CONTEXT_SERIALIZATION
+
+/**
+ * \def MBEDTLS_SSL_DEBUG_ALL
+ *
+ * Enable the debug messages in SSL module for all issues.
+ * Debug messages have been disabled in some places to prevent timing
+ * attacks due to (unbalanced) debugging function calls.
+ *
+ * If you need all error reporting you should enable this during debugging,
+ * but remove this for production servers that should log as well.
+ *
+ * Uncomment this macro to report all debug messages on errors introducing
+ * a timing side-channel.
+ *
+ */
+//#define MBEDTLS_SSL_DEBUG_ALL
+
+/** \def MBEDTLS_SSL_ENCRYPT_THEN_MAC
+ *
+ * Enable support for Encrypt-then-MAC, RFC 7366.
+ *
+ * This allows peers that both support it to use a more robust protection for
+ * ciphersuites using CBC, providing deep resistance against timing attacks
+ * on the padding or underlying cipher.
+ *
+ * This only affects CBC ciphersuites, and is useless if none is defined.
+ *
+ * Requires: MBEDTLS_SSL_PROTO_TLS1    or
+ *           MBEDTLS_SSL_PROTO_TLS1_1  or
+ *           MBEDTLS_SSL_PROTO_TLS1_2
+ *
+ * Comment this macro to disable support for Encrypt-then-MAC
+ */
+#define MBEDTLS_SSL_ENCRYPT_THEN_MAC
+
+/** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET
+ *
+ * Enable support for Extended Master Secret, aka Session Hash
+ * (draft-ietf-tls-session-hash-02).
+ *
+ * This was introduced as "the proper fix" to the Triple Handshake familiy of
+ * attacks, but it is recommended to always use it (even if you disable
+ * renegotiation), since it actually fixes a more fundamental issue in the
+ * original SSL/TLS design, and has implications beyond Triple Handshake.
+ *
+ * Requires: MBEDTLS_SSL_PROTO_TLS1    or
+ *           MBEDTLS_SSL_PROTO_TLS1_1  or
+ *           MBEDTLS_SSL_PROTO_TLS1_2
+ *
+ * Comment this macro to disable support for Extended Master Secret.
+ */
+#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET
+
+/**
+ * \def MBEDTLS_SSL_FALLBACK_SCSV
+ *
+ * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00).
+ *
+ * For servers, it is recommended to always enable this, unless you support
+ * only one version of TLS, or know for sure that none of your clients
+ * implements a fallback strategy.
+ *
+ * For clients, you only need this if you're using a fallback strategy, which
+ * is not recommended in the first place, unless you absolutely need it to
+ * interoperate with buggy (version-intolerant) servers.
+ *
+ * Comment this macro to disable support for FALLBACK_SCSV
+ */
+#define MBEDTLS_SSL_FALLBACK_SCSV
+
+/**
+ * \def MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+ *
+ * This option controls the availability of the API mbedtls_ssl_get_peer_cert()
+ * giving access to the peer's certificate after completion of the handshake.
+ *
+ * Unless you need mbedtls_ssl_peer_cert() in your application, it is
+ * recommended to disable this option for reduced RAM usage.
+ *
+ * \note If this option is disabled, mbedtls_ssl_get_peer_cert() is still
+ *       defined, but always returns \c NULL.
+ *
+ * \note This option has no influence on the protection against the
+ *       triple handshake attack. Even if it is disabled, Mbed TLS will
+ *       still ensure that certificates do not change during renegotiation,
+ *       for exaple by keeping a hash of the peer's certificate.
+ *
+ * Comment this macro to disable storing the peer's certificate
+ * after the handshake.
+ */
+#define MBEDTLS_SSL_KEEP_PEER_CERTIFICATE
+
+/**
+ * \def MBEDTLS_SSL_HW_RECORD_ACCEL
+ *
+ * Enable hooking functions in SSL module for hardware acceleration of
+ * individual records.
+ *
+ * Uncomment this macro to enable hooking functions.
+ */
+//#define MBEDTLS_SSL_HW_RECORD_ACCEL
+
+/**
+ * \def MBEDTLS_SSL_CBC_RECORD_SPLITTING
+ *
+ * Enable 1/n-1 record splitting for CBC mode in SSLv3 and TLS 1.0.
+ *
+ * This is a countermeasure to the BEAST attack, which also minimizes the risk
+ * of interoperability issues compared to sending 0-length records.
+ *
+ * Comment this macro to disable 1/n-1 record splitting.
+ */
+#define MBEDTLS_SSL_CBC_RECORD_SPLITTING
+
+/**
+ * \def MBEDTLS_SSL_RENEGOTIATION
+ *
+ * Enable support for TLS renegotiation.
+ *
+ * The two main uses of renegotiation are (1) refresh keys on long-lived
+ * connections and (2) client authentication after the initial handshake.
+ * If you don't need renegotiation, it's probably better to disable it, since
+ * it has been associated with security issues in the past and is easy to
+ * misuse/misunderstand.
+ *
+ * Comment this to disable support for renegotiation.
+ *
+ * \note   Even if this option is disabled, both client and server are aware
+ *         of the Renegotiation Indication Extension (RFC 5746) used to
+ *         prevent the SSL renegotiation attack (see RFC 5746 Sect. 1).
+ *         (See \c mbedtls_ssl_conf_legacy_renegotiation for the
+ *          configuration of this extension).
+ *
+ */
+#define MBEDTLS_SSL_RENEGOTIATION
+
+/**
+ * \def MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
+ *
+ * Enable support for receiving and parsing SSLv2 Client Hello messages for the
+ * SSL Server module (MBEDTLS_SSL_SRV_C).
+ *
+ * Uncomment this macro to enable support for SSLv2 Client Hello messages.
+ */
+//#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO
+
+/**
+ * \def MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE
+ *
+ * Pick the ciphersuite according to the client's preferences rather than ours
+ * in the SSL Server module (MBEDTLS_SSL_SRV_C).
+ *
+ * Uncomment this macro to respect client's ciphersuite order
+ */
+//#define MBEDTLS_SSL_SRV_RESPECT_CLIENT_PREFERENCE
+
+/**
+ * \def MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+ *
+ * Enable support for RFC 6066 max_fragment_length extension in SSL.
+ *
+ * Comment this macro to disable support for the max_fragment_length extension
+ */
+#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH
+
+/**
+ * \def MBEDTLS_SSL_PROTO_SSL3
+ *
+ * Enable support for SSL 3.0.
+ *
+ * Requires: MBEDTLS_MD5_C
+ *           MBEDTLS_SHA1_C
+ *
+ * Comment this macro to disable support for SSL 3.0
+ */
+//#define MBEDTLS_SSL_PROTO_SSL3
+
+/**
+ * \def MBEDTLS_SSL_PROTO_TLS1
+ *
+ * Enable support for TLS 1.0.
+ *
+ * Requires: MBEDTLS_MD5_C
+ *           MBEDTLS_SHA1_C
+ *
+ * Comment this macro to disable support for TLS 1.0
+ */
+#define MBEDTLS_SSL_PROTO_TLS1
+
+/**
+ * \def MBEDTLS_SSL_PROTO_TLS1_1
+ *
+ * Enable support for TLS 1.1 (and DTLS 1.0 if DTLS is enabled).
+ *
+ * Requires: MBEDTLS_MD5_C
+ *           MBEDTLS_SHA1_C
+ *
+ * Comment this macro to disable support for TLS 1.1 / DTLS 1.0
+ */
+#define MBEDTLS_SSL_PROTO_TLS1_1
+
+/**
+ * \def MBEDTLS_SSL_PROTO_TLS1_2
+ *
+ * Enable support for TLS 1.2 (and DTLS 1.2 if DTLS is enabled).
+ *
+ * Requires: MBEDTLS_SHA1_C or MBEDTLS_SHA256_C or MBEDTLS_SHA512_C
+ *           (Depends on ciphersuites)
+ *
+ * Comment this macro to disable support for TLS 1.2 / DTLS 1.2
+ */
+#define MBEDTLS_SSL_PROTO_TLS1_2
+
+/**
+ * \def MBEDTLS_SSL_PROTO_DTLS
+ *
+ * Enable support for DTLS (all available versions).
+ *
+ * Enable this and MBEDTLS_SSL_PROTO_TLS1_1 to enable DTLS 1.0,
+ * and/or this and MBEDTLS_SSL_PROTO_TLS1_2 to enable DTLS 1.2.
+ *
+ * Requires: MBEDTLS_SSL_PROTO_TLS1_1
+ *        or MBEDTLS_SSL_PROTO_TLS1_2
+ *
+ * Comment this macro to disable support for DTLS
+ */
+#define MBEDTLS_SSL_PROTO_DTLS
+
+/**
+ * \def MBEDTLS_SSL_ALPN
+ *
+ * Enable support for RFC 7301 Application Layer Protocol Negotiation.
+ *
+ * Comment this macro to disable support for ALPN.
+ */
+#define MBEDTLS_SSL_ALPN
+
+/**
+ * \def MBEDTLS_SSL_DTLS_ANTI_REPLAY
+ *
+ * Enable support for the anti-replay mechanism in DTLS.
+ *
+ * Requires: MBEDTLS_SSL_TLS_C
+ *           MBEDTLS_SSL_PROTO_DTLS
+ *
+ * \warning Disabling this is often a security risk!
+ * See mbedtls_ssl_conf_dtls_anti_replay() for details.
+ *
+ * Comment this to disable anti-replay in DTLS.
+ */
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+
+/**
+ * \def MBEDTLS_SSL_DTLS_HELLO_VERIFY
+ *
+ * Enable support for HelloVerifyRequest on DTLS servers.
+ *
+ * This feature is highly recommended to prevent DTLS servers being used as
+ * amplifiers in DoS attacks against other hosts. It should always be enabled
+ * unless you know for sure amplification cannot be a problem in the
+ * environment in which your server operates.
+ *
+ * \warning Disabling this can ba a security risk! (see above)
+ *
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
+ *
+ * Comment this to disable support for HelloVerifyRequest.
+ */
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+
+/**
+ * \def MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+ *
+ * Enable server-side support for clients that reconnect from the same port.
+ *
+ * Some clients unexpectedly close the connection and try to reconnect using the
+ * same source port. This needs special support from the server to handle the
+ * new connection securely, as described in section 4.2.8 of RFC 6347. This
+ * flag enables that support.
+ *
+ * Requires: MBEDTLS_SSL_DTLS_HELLO_VERIFY
+ *
+ * Comment this to disable support for clients reusing the source port.
+ */
+#define MBEDTLS_SSL_DTLS_CLIENT_PORT_REUSE
+
+/**
+ * \def MBEDTLS_SSL_DTLS_BADMAC_LIMIT
+ *
+ * Enable support for a limit of records with bad MAC.
+ *
+ * See mbedtls_ssl_conf_dtls_badmac_limit().
+ *
+ * Requires: MBEDTLS_SSL_PROTO_DTLS
+ */
+#define MBEDTLS_SSL_DTLS_BADMAC_LIMIT
+
+/**
+ * \def MBEDTLS_SSL_SESSION_TICKETS
+ *
+ * Enable support for RFC 5077 session tickets in SSL.
+ * Client-side, provides full support for session tickets (maintenance of a
+ * session store remains the responsibility of the application, though).
+ * Server-side, you also need to provide callbacks for writing and parsing
+ * tickets, including authenticated encryption and key management. Example
+ * callbacks are provided by MBEDTLS_SSL_TICKET_C.
+ *
+ * Comment this macro to disable support for SSL session tickets
+ */
+#define MBEDTLS_SSL_SESSION_TICKETS
+
+/**
+ * \def MBEDTLS_SSL_EXPORT_KEYS
+ *
+ * Enable support for exporting key block and master secret.
+ * This is required for certain users of TLS, e.g. EAP-TLS.
+ *
+ * Comment this macro to disable support for key export
+ */
+#define MBEDTLS_SSL_EXPORT_KEYS
+
+/**
+ * \def MBEDTLS_SSL_SERVER_NAME_INDICATION
+ *
+ * Enable support for RFC 6066 server name indication (SNI) in SSL.
+ *
+ * Requires: MBEDTLS_X509_CRT_PARSE_C
+ *
+ * Comment this macro to disable support for server name indication in SSL
+ */
+#define MBEDTLS_SSL_SERVER_NAME_INDICATION
+
+/**
+ * \def MBEDTLS_SSL_TRUNCATED_HMAC
+ *
+ * Enable support for RFC 6066 truncated HMAC in SSL.
+ *
+ * Comment this macro to disable support for truncated HMAC in SSL
+ */
+#define MBEDTLS_SSL_TRUNCATED_HMAC
+
+/**
+ * \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT
+ *
+ * Fallback to old (pre-2.7), non-conforming implementation of the truncated
+ * HMAC extension which also truncates the HMAC key. Note that this option is
+ * only meant for a transitory upgrade period and is likely to be removed in
+ * a future version of the library.
+ *
+ * \warning The old implementation is non-compliant and has a security weakness
+ *          (2^80 brute force attack on the HMAC key used for a single,
+ *          uninterrupted connection). This should only be enabled temporarily
+ *          when (1) the use of truncated HMAC is essential in order to save
+ *          bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use
+ *          the fixed implementation yet (pre-2.7).
+ *
+ * \deprecated This option is deprecated and will likely be removed in a
+ *             future version of Mbed TLS.
+ *
+ * Uncomment to fallback to old, non-compliant truncated HMAC implementation.
+ *
+ * Requires: MBEDTLS_SSL_TRUNCATED_HMAC
+ */
+//#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT
+
+/**
+ * \def MBEDTLS_THREADING_ALT
+ *
+ * Provide your own alternate threading implementation.
+ *
+ * Requires: MBEDTLS_THREADING_C
+ *
+ * Uncomment this to allow your own alternate threading implementation.
+ */
+//#define MBEDTLS_THREADING_ALT
+
+/**
+ * \def MBEDTLS_THREADING_PTHREAD
+ *
+ * Enable the pthread wrapper layer for the threading layer.
+ *
+ * Requires: MBEDTLS_THREADING_C
+ *
+ * Uncomment this to enable pthread mutexes.
+ */
+//#define MBEDTLS_THREADING_PTHREAD
+
+/**
+ * \def MBEDTLS_USE_PSA_CRYPTO
+ *
+ * Make the X.509 and TLS library use PSA for cryptographic operations, and
+ * enable new APIs for using keys handled by PSA Crypto.
+ *
+ * \note Development of this option is currently in progress, and parts
+ * of the X.509 and TLS modules are not ported to PSA yet. However, these parts
+ * will still continue to work as usual, so enabling this option should not
+ * break backwards compatibility.
+ *
+ * \warning The PSA Crypto API is in beta stage. While you're welcome to
+ * experiment using it, incompatible API changes are still possible, and some
+ * parts may not have reached the same quality as the rest of Mbed TLS yet.
+ *
+ * \warning This option enables new Mbed TLS APIs that are dependent on the
+ * PSA Crypto API, so can't come with the same stability guarantees as the
+ * rest of the Mbed TLS APIs. You're welcome to experiment with them, but for
+ * now, access to these APIs is opt-in (via enabling the present option), in
+ * order to clearly differentiate them from the stable Mbed TLS APIs.
+ *
+ * Requires: MBEDTLS_PSA_CRYPTO_C.
+ *
+ * Uncomment this to enable internal use of PSA Crypto and new associated APIs.
+ */
+//#define MBEDTLS_USE_PSA_CRYPTO
+
+/**
+ * \def MBEDTLS_VERSION_FEATURES
+ *
+ * Allow run-time checking of compile-time enabled features. Thus allowing users
+ * to check at run-time if the library is for instance compiled with threading
+ * support via mbedtls_version_check_feature().
+ *
+ * Requires: MBEDTLS_VERSION_C
+ *
+ * Comment this to disable run-time checking and save ROM space
+ */
+// #define MBEDTLS_VERSION_FEATURES
+
+/**
+ * \def MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3
+ *
+ * If set, the X509 parser will not break-off when parsing an X509 certificate
+ * and encountering an extension in a v1 or v2 certificate.
+ *
+ * Uncomment to prevent an error.
+ */
+//#define MBEDTLS_X509_ALLOW_EXTENSIONS_NON_V3
+
+/**
+ * \def MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
+ *
+ * If set, the X509 parser will not break-off when parsing an X509 certificate
+ * and encountering an unknown critical extension.
+ *
+ * \warning Depending on your PKI use, enabling this can be a security risk!
+ *
+ * Uncomment to prevent an error.
+ */
+//#define MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
+
+/**
+ * \def MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
+ *
+ * If set, this enables the X.509 API `mbedtls_x509_crt_verify_with_ca_cb()`
+ * and the SSL API `mbedtls_ssl_conf_ca_cb()` which allow users to configure
+ * the set of trusted certificates through a callback instead of a linked
+ * list.
+ *
+ * This is useful for example in environments where a large number of trusted
+ * certificates is present and storing them in a linked list isn't efficient
+ * enough, or when the set of trusted certificates changes frequently.
+ *
+ * See the documentation of `mbedtls_x509_crt_verify_with_ca_cb()` and
+ * `mbedtls_ssl_conf_ca_cb()` for more information.
+ *
+ * Uncomment to enable trusted certificate callbacks.
+ */
+//#define MBEDTLS_X509_TRUSTED_CERTIFICATE_CALLBACK
+
+/**
+ * \def MBEDTLS_X509_CHECK_KEY_USAGE
+ *
+ * Enable verification of the keyUsage extension (CA and leaf certificates).
+ *
+ * Disabling this avoids problems with mis-issued and/or misused
+ * (intermediate) CA and leaf certificates.
+ *
+ * \warning Depending on your PKI use, disabling this can be a security risk!
+ *
+ * Comment to skip keyUsage checking for both CA and leaf certificates.
+ */
+#define MBEDTLS_X509_CHECK_KEY_USAGE
+
+/**
+ * \def MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE
+ *
+ * Enable verification of the extendedKeyUsage extension (leaf certificates).
+ *
+ * Disabling this avoids problems with mis-issued and/or misused certificates.
+ *
+ * \warning Depending on your PKI use, disabling this can be a security risk!
+ *
+ * Comment to skip extendedKeyUsage checking for certificates.
+ */
+#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE
+
+/**
+ * \def MBEDTLS_X509_RSASSA_PSS_SUPPORT
+ *
+ * Enable parsing and verification of X.509 certificates, CRLs and CSRS
+ * signed with RSASSA-PSS (aka PKCS#1 v2.1).
+ *
+ * Comment this macro to disallow using RSASSA-PSS in certificates.
+ */
+#define MBEDTLS_X509_RSASSA_PSS_SUPPORT
+
+/**
+ * \def MBEDTLS_ZLIB_SUPPORT
+ *
+ * If set, the SSL/TLS module uses ZLIB to support compression and
+ * decompression of packet data.
+ *
+ * \warning TLS-level compression MAY REDUCE SECURITY! See for example the
+ * CRIME attack. Before enabling this option, you should examine with care if
+ * CRIME or similar exploits may be applicable to your use case.
+ *
+ * \note Currently compression can't be used with DTLS.
+ *
+ * \deprecated This feature is deprecated and will be removed
+ *             in the next major revision of the library.
+ *
+ * Used in: library/ssl_tls.c
+ *          library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This feature requires zlib library and headers to be present.
+ *
+ * Uncomment to enable use of ZLIB
+ */
+//#define MBEDTLS_ZLIB_SUPPORT
+/* \} name SECTION: mbed TLS feature support */
+
+/**
+ * \name SECTION: mbed TLS modules
+ *
+ * This section enables or disables entire modules in mbed TLS
+ * \{
+ */
+
+/**
+ * \def MBEDTLS_AESNI_C
+ *
+ * Enable AES-NI support on x86-64.
+ *
+ * Module:  library/aesni.c
+ * Caller:  library/aes.c
+ *
+ * Requires: MBEDTLS_HAVE_ASM
+ *
+ * This modules adds support for the AES-NI instructions on x86-64
+ */
+#define MBEDTLS_AESNI_C
+
+/**
+ * \def MBEDTLS_AES_C
+ *
+ * Enable the AES block cipher.
+ *
+ * Module:  library/aes.c
+ * Caller:  library/cipher.c
+ *          library/pem.c
+ *          library/ctr_drbg.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_AES_128_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_GCM_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_AES_256_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_GCM_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_AES_128_CBC_SHA
+ *
+ * PEM_PARSE uses AES for decrypting encrypted keys.
+ */
+#define MBEDTLS_AES_C
+
+/**
+ * \def MBEDTLS_ARC4_C
+ *
+ * Enable the ARCFOUR stream cipher.
+ *
+ * Module:  library/arc4.c
+ * Caller:  library/cipher.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_RSA_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_RSA_WITH_RC4_128_MD5
+ *      MBEDTLS_TLS_RSA_PSK_WITH_RC4_128_SHA
+ *      MBEDTLS_TLS_PSK_WITH_RC4_128_SHA
+ *
+ * \warning   ARC4 is considered a weak cipher and its use constitutes a
+ *            security risk. If possible, we recommend avoidng dependencies on
+ *            it, and considering stronger ciphers instead.
+ *
+ */
+#define MBEDTLS_ARC4_C
+
+/**
+ * \def MBEDTLS_ASN1_PARSE_C
+ *
+ * Enable the generic ASN1 parser.
+ *
+ * Module:  library/asn1.c
+ * Caller:  library/x509.c
+ *          library/dhm.c
+ *          library/pkcs12.c
+ *          library/pkcs5.c
+ *          library/pkparse.c
+ */
+#define MBEDTLS_ASN1_PARSE_C
+
+/**
+ * \def MBEDTLS_ASN1_WRITE_C
+ *
+ * Enable the generic ASN1 writer.
+ *
+ * Module:  library/asn1write.c
+ * Caller:  library/ecdsa.c
+ *          library/pkwrite.c
+ *          library/x509_create.c
+ *          library/x509write_crt.c
+ *          library/x509write_csr.c
+ */
+#define MBEDTLS_ASN1_WRITE_C
+
+/**
+ * \def MBEDTLS_BASE64_C
+ *
+ * Enable the Base64 module.
+ *
+ * Module:  library/base64.c
+ * Caller:  library/pem.c
+ *
+ * This module is required for PEM support (required by X.509).
+ */
+#define MBEDTLS_BASE64_C
+
+/**
+ * \def MBEDTLS_BIGNUM_C
+ *
+ * Enable the multi-precision integer library.
+ *
+ * Module:  library/bignum.c
+ * Caller:  library/dhm.c
+ *          library/ecp.c
+ *          library/ecdsa.c
+ *          library/rsa.c
+ *          library/rsa_internal.c
+ *          library/ssl_tls.c
+ *
+ * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support.
+ */
+#define MBEDTLS_BIGNUM_C
+
+/**
+ * \def MBEDTLS_BLOWFISH_C
+ *
+ * Enable the Blowfish block cipher.
+ *
+ * Module:  library/blowfish.c
+ */
+#define MBEDTLS_BLOWFISH_C
+
+/**
+ * \def MBEDTLS_CAMELLIA_C
+ *
+ * Enable the Camellia block cipher.
+ *
+ * Module:  library/camellia.c
+ * Caller:  library/cipher.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256
+ */
+#define MBEDTLS_CAMELLIA_C
+
+/**
+ * \def MBEDTLS_ARIA_C
+ *
+ * Enable the ARIA block cipher.
+ *
+ * Module:  library/aria.c
+ * Caller:  library/cipher.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *
+ *      MBEDTLS_TLS_RSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384
+ *      MBEDTLS_TLS_PSK_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_PSK_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256
+ *      MBEDTLS_TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384
+ */
+//#define MBEDTLS_ARIA_C
+
+/**
+ * \def MBEDTLS_CCM_C
+ *
+ * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher.
+ *
+ * Module:  library/ccm.c
+ *
+ * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C
+ *
+ * This module enables the AES-CCM ciphersuites, if other requisites are
+ * enabled as well.
+ */
+#define MBEDTLS_CCM_C
+
+/**
+ * \def MBEDTLS_CERTS_C
+ *
+ * Enable the test certificates.
+ *
+ * Module:  library/certs.c
+ * Caller:
+ *
+ * This module is used for testing (ssl_client/server).
+ */
+#define MBEDTLS_CERTS_C
+
+/**
+ * \def MBEDTLS_CHACHA20_C
+ *
+ * Enable the ChaCha20 stream cipher.
+ *
+ * Module:  library/chacha20.c
+ */
+#define MBEDTLS_CHACHA20_C
+
+/**
+ * \def MBEDTLS_CHACHAPOLY_C
+ *
+ * Enable the ChaCha20-Poly1305 AEAD algorithm.
+ *
+ * Module:  library/chachapoly.c
+ *
+ * This module requires: MBEDTLS_CHACHA20_C, MBEDTLS_POLY1305_C
+ */
+#define MBEDTLS_CHACHAPOLY_C
+
+/**
+ * \def MBEDTLS_CIPHER_C
+ *
+ * Enable the generic cipher layer.
+ *
+ * Module:  library/cipher.c
+ * Caller:  library/ssl_tls.c
+ *
+ * Uncomment to enable generic cipher wrappers.
+ */
+#define MBEDTLS_CIPHER_C
+
+/**
+ * \def MBEDTLS_CMAC_C
+ *
+ * Enable the CMAC (Cipher-based Message Authentication Code) mode for block
+ * ciphers.
+ *
+ * Module:  library/cmac.c
+ *
+ * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C
+ *
+ */
+//#define MBEDTLS_CMAC_C
+
+/**
+ * \def MBEDTLS_CTR_DRBG_C
+ *
+ * Enable the CTR_DRBG AES-based random generator.
+ * The CTR_DRBG generator uses AES-256 by default.
+ * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below.
+ *
+ * Module:  library/ctr_drbg.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_AES_C
+ *
+ * This module provides the CTR_DRBG AES random number generator.
+ */
+#define MBEDTLS_CTR_DRBG_C
+
+/**
+ * \def MBEDTLS_DEBUG_C
+ *
+ * Enable the debug functions.
+ *
+ * Module:  library/debug.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *
+ * This module provides debugging functions.
+ */
+#define MBEDTLS_DEBUG_C
+
+/**
+ * \def MBEDTLS_DES_C
+ *
+ * Enable the DES block cipher.
+ *
+ * Module:  library/des.c
+ * Caller:  library/pem.c
+ *          library/cipher.c
+ *
+ * This module enables the following ciphersuites (if other requisites are
+ * enabled as well):
+ *      MBEDTLS_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_RSA_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
+ *      MBEDTLS_TLS_PSK_WITH_3DES_EDE_CBC_SHA
+ *
+ * PEM_PARSE uses DES/3DES for decrypting encrypted keys.
+ *
+ * \warning   DES is considered a weak cipher and its use constitutes a
+ *            security risk. We recommend considering stronger ciphers instead.
+ */
+#define MBEDTLS_DES_C
+
+/**
+ * \def MBEDTLS_DHM_C
+ *
+ * Enable the Diffie-Hellman-Merkle module.
+ *
+ * Module:  library/dhm.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This module is used by the following key exchanges:
+ *      DHE-RSA, DHE-PSK
+ *
+ * \warning    Using DHE constitutes a security risk as it
+ *             is not possible to validate custom DH parameters.
+ *             If possible, it is recommended users should consider
+ *             preferring other methods of key exchange.
+ *             See dhm.h for more details.
+ *
+ */
+#define MBEDTLS_DHM_C
+
+/**
+ * \def MBEDTLS_ECDH_C
+ *
+ * Enable the elliptic curve Diffie-Hellman library.
+ *
+ * Module:  library/ecdh.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This module is used by the following key exchanges:
+ *      ECDHE-ECDSA, ECDHE-RSA, DHE-PSK
+ *
+ * Requires: MBEDTLS_ECP_C
+ */
+#define MBEDTLS_ECDH_C
+
+/**
+ * \def MBEDTLS_ECDSA_C
+ *
+ * Enable the elliptic curve DSA library.
+ *
+ * Module:  library/ecdsa.c
+ * Caller:
+ *
+ * This module is used by the following key exchanges:
+ *      ECDHE-ECDSA
+ *
+ * Requires: MBEDTLS_ECP_C, MBEDTLS_ASN1_WRITE_C, MBEDTLS_ASN1_PARSE_C
+ */
+#define MBEDTLS_ECDSA_C
+
+/**
+ * \def MBEDTLS_ECJPAKE_C
+ *
+ * Enable the elliptic curve J-PAKE library.
+ *
+ * \warning This is currently experimental. EC J-PAKE support is based on the
+ * Thread v1.0.0 specification; incompatible changes to the specification
+ * might still happen. For this reason, this is disabled by default.
+ *
+ * Module:  library/ecjpake.c
+ * Caller:
+ *
+ * This module is used by the following key exchanges:
+ *      ECJPAKE
+ *
+ * Requires: MBEDTLS_ECP_C, MBEDTLS_MD_C
+ */
+//#define MBEDTLS_ECJPAKE_C
+
+/**
+ * \def MBEDTLS_ECP_C
+ *
+ * Enable the elliptic curve over GF(p) library.
+ *
+ * Module:  library/ecp.c
+ * Caller:  library/ecdh.c
+ *          library/ecdsa.c
+ *          library/ecjpake.c
+ *
+ * Requires: MBEDTLS_BIGNUM_C and at least one MBEDTLS_ECP_DP_XXX_ENABLED
+ */
+#define MBEDTLS_ECP_C
+
+/**
+ * \def MBEDTLS_ENTROPY_C
+ *
+ * Enable the platform-specific entropy code.
+ *
+ * Module:  library/entropy.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_SHA512_C or MBEDTLS_SHA256_C
+ *
+ * This module provides a generic entropy pool
+ */
+#define MBEDTLS_ENTROPY_C
+
+/**
+ * \def MBEDTLS_ERROR_C
+ *
+ * Enable error code to error string conversion.
+ *
+ * Module:  library/error.c
+ * Caller:
+ *
+ * This module enables mbedtls_strerror().
+ */
+// #define MBEDTLS_ERROR_C
+
+/**
+ * \def MBEDTLS_GCM_C
+ *
+ * Enable the Galois/Counter Mode (GCM) for AES.
+ *
+ * Module:  library/gcm.c
+ *
+ * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C
+ *
+ * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other
+ * requisites are enabled as well.
+ */
+#define MBEDTLS_GCM_C
+
+/**
+ * \def MBEDTLS_HAVEGE_C
+ *
+ * Enable the HAVEGE random generator.
+ *
+ * Warning: the HAVEGE random generator is not suitable for virtualized
+ *          environments
+ *
+ * Warning: the HAVEGE random generator is dependent on timing and specific
+ *          processor traits. It is therefore not advised to use HAVEGE as
+ *          your applications primary random generator or primary entropy pool
+ *          input. As a secondary input to your entropy pool, it IS able add
+ *          the (limited) extra entropy it provides.
+ *
+ * Module:  library/havege.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_TIMING_C
+ *
+ * Uncomment to enable the HAVEGE random generator.
+ */
+//#define MBEDTLS_HAVEGE_C
+
+/**
+ * \def MBEDTLS_HKDF_C
+ *
+ * Enable the HKDF algorithm (RFC 5869).
+ *
+ * Module:  library/hkdf.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_MD_C
+ *
+ * This module adds support for the Hashed Message Authentication Code
+ * (HMAC)-based key derivation function (HKDF).
+ */
+#define MBEDTLS_HKDF_C
+
+/**
+ * \def MBEDTLS_HMAC_DRBG_C
+ *
+ * Enable the HMAC_DRBG random generator.
+ *
+ * Module:  library/hmac_drbg.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_MD_C
+ *
+ * Uncomment to enable the HMAC_DRBG random number geerator.
+ */
+#define MBEDTLS_HMAC_DRBG_C
+
+/**
+ * \def MBEDTLS_NIST_KW_C
+ *
+ * Enable the Key Wrapping mode for 128-bit block ciphers,
+ * as defined in NIST SP 800-38F. Only KW and KWP modes
+ * are supported. At the moment, only AES is approved by NIST.
+ *
+ * Module:  library/nist_kw.c
+ *
+ * Requires: MBEDTLS_AES_C and MBEDTLS_CIPHER_C
+ */
+//#define MBEDTLS_NIST_KW_C
+
+/**
+ * \def MBEDTLS_MD_C
+ *
+ * Enable the generic message digest layer.
+ *
+ * Module:  library/md.c
+ * Caller:
+ *
+ * Uncomment to enable generic message digest wrappers.
+ */
+#define MBEDTLS_MD_C
+
+/**
+ * \def MBEDTLS_MD2_C
+ *
+ * Enable the MD2 hash algorithm.
+ *
+ * Module:  library/md2.c
+ * Caller:
+ *
+ * Uncomment to enable support for (rare) MD2-signed X.509 certs.
+ *
+ * \warning   MD2 is considered a weak message digest and its use constitutes a
+ *            security risk. If possible, we recommend avoiding dependencies on
+ *            it, and considering stronger message digests instead.
+ *
+ */
+//#define MBEDTLS_MD2_C
+
+/**
+ * \def MBEDTLS_MD4_C
+ *
+ * Enable the MD4 hash algorithm.
+ *
+ * Module:  library/md4.c
+ * Caller:
+ *
+ * Uncomment to enable support for (rare) MD4-signed X.509 certs.
+ *
+ * \warning   MD4 is considered a weak message digest and its use constitutes a
+ *            security risk. If possible, we recommend avoiding dependencies on
+ *            it, and considering stronger message digests instead.
+ *
+ */
+//#define MBEDTLS_MD4_C
+
+/**
+ * \def MBEDTLS_MD5_C
+ *
+ * Enable the MD5 hash algorithm.
+ *
+ * Module:  library/md5.c
+ * Caller:  library/md.c
+ *          library/pem.c
+ *          library/ssl_tls.c
+ *
+ * This module is required for SSL/TLS up to version 1.1, and for TLS 1.2
+ * depending on the handshake parameters. Further, it is used for checking
+ * MD5-signed certificates, and for PBKDF1 when decrypting PEM-encoded
+ * encrypted keys.
+ *
+ * \warning   MD5 is considered a weak message digest and its use constitutes a
+ *            security risk. If possible, we recommend avoiding dependencies on
+ *            it, and considering stronger message digests instead.
+ *
+ */
+#define MBEDTLS_MD5_C
+
+/**
+ * \def MBEDTLS_MEMORY_BUFFER_ALLOC_C
+ *
+ * Enable the buffer allocator implementation that makes use of a (stack)
+ * based buffer to 'allocate' dynamic memory. (replaces calloc() and free()
+ * calls)
+ *
+ * Module:  library/memory_buffer_alloc.c
+ *
+ * Requires: MBEDTLS_PLATFORM_C
+ *           MBEDTLS_PLATFORM_MEMORY (to use it within mbed TLS)
+ *
+ * Enable this module to enable the buffer memory allocator.
+ */
+//#define MBEDTLS_MEMORY_BUFFER_ALLOC_C
+
+/**
+ * \def MBEDTLS_NET_C
+ *
+ * Enable the TCP and UDP over IPv6/IPv4 networking routines.
+ *
+ * \note This module only works on POSIX/Unix (including Linux, BSD and OS X)
+ * and Windows. For other platforms, you'll want to disable it, and write your
+ * own networking callbacks to be passed to \c mbedtls_ssl_set_bio().
+ *
+ * \note See also our Knowledge Base article about porting to a new
+ * environment:
+ * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
+ *
+ * Module:  library/net_sockets.c
+ *
+ * This module provides networking routines.
+ */
+// #define MBEDTLS_NET_C
+
+/**
+ * \def MBEDTLS_OID_C
+ *
+ * Enable the OID database.
+ *
+ * Module:  library/oid.c
+ * Caller:  library/asn1write.c
+ *          library/pkcs5.c
+ *          library/pkparse.c
+ *          library/pkwrite.c
+ *          library/rsa.c
+ *          library/x509.c
+ *          library/x509_create.c
+ *          library/x509_crl.c
+ *          library/x509_crt.c
+ *          library/x509_csr.c
+ *          library/x509write_crt.c
+ *          library/x509write_csr.c
+ *
+ * This modules translates between OIDs and internal values.
+ */
+#define MBEDTLS_OID_C
+
+/**
+ * \def MBEDTLS_PADLOCK_C
+ *
+ * Enable VIA Padlock support on x86.
+ *
+ * Module:  library/padlock.c
+ * Caller:  library/aes.c
+ *
+ * Requires: MBEDTLS_HAVE_ASM
+ *
+ * This modules adds support for the VIA PadLock on x86.
+ */
+#define MBEDTLS_PADLOCK_C
+
+/**
+ * \def MBEDTLS_PEM_PARSE_C
+ *
+ * Enable PEM decoding / parsing.
+ *
+ * Module:  library/pem.c
+ * Caller:  library/dhm.c
+ *          library/pkparse.c
+ *          library/x509_crl.c
+ *          library/x509_crt.c
+ *          library/x509_csr.c
+ *
+ * Requires: MBEDTLS_BASE64_C
+ *
+ * This modules adds support for decoding / parsing PEM files.
+ */
+#define MBEDTLS_PEM_PARSE_C
+
+/**
+ * \def MBEDTLS_PEM_WRITE_C
+ *
+ * Enable PEM encoding / writing.
+ *
+ * Module:  library/pem.c
+ * Caller:  library/pkwrite.c
+ *          library/x509write_crt.c
+ *          library/x509write_csr.c
+ *
+ * Requires: MBEDTLS_BASE64_C
+ *
+ * This modules adds support for encoding / writing PEM files.
+ */
+#define MBEDTLS_PEM_WRITE_C
+
+/**
+ * \def MBEDTLS_PK_C
+ *
+ * Enable the generic public (asymetric) key layer.
+ *
+ * Module:  library/pk.c
+ * Caller:  library/ssl_tls.c
+ *          library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * Requires: MBEDTLS_RSA_C or MBEDTLS_ECP_C
+ *
+ * Uncomment to enable generic public key wrappers.
+ */
+#define MBEDTLS_PK_C
+
+/**
+ * \def MBEDTLS_PK_PARSE_C
+ *
+ * Enable the generic public (asymetric) key parser.
+ *
+ * Module:  library/pkparse.c
+ * Caller:  library/x509_crt.c
+ *          library/x509_csr.c
+ *
+ * Requires: MBEDTLS_PK_C
+ *
+ * Uncomment to enable generic public key parse functions.
+ */
+#define MBEDTLS_PK_PARSE_C
+
+/**
+ * \def MBEDTLS_PK_WRITE_C
+ *
+ * Enable the generic public (asymetric) key writer.
+ *
+ * Module:  library/pkwrite.c
+ * Caller:  library/x509write.c
+ *
+ * Requires: MBEDTLS_PK_C
+ *
+ * Uncomment to enable generic public key write functions.
+ */
+#define MBEDTLS_PK_WRITE_C
+
+/**
+ * \def MBEDTLS_PKCS5_C
+ *
+ * Enable PKCS#5 functions.
+ *
+ * Module:  library/pkcs5.c
+ *
+ * Requires: MBEDTLS_MD_C
+ *
+ * This module adds support for the PKCS#5 functions.
+ */
+#define MBEDTLS_PKCS5_C
+
+/**
+ * \def MBEDTLS_PKCS11_C
+ *
+ * Enable wrapper for PKCS#11 smartcard support.
+ *
+ * Module:  library/pkcs11.c
+ * Caller:  library/pk.c
+ *
+ * Requires: MBEDTLS_PK_C
+ *
+ * This module enables SSL/TLS PKCS #11 smartcard support.
+ * Requires the presence of the PKCS#11 helper library (libpkcs11-helper)
+ */
+//#define MBEDTLS_PKCS11_C
+
+/**
+ * \def MBEDTLS_PKCS12_C
+ *
+ * Enable PKCS#12 PBE functions.
+ * Adds algorithms for parsing PKCS#8 encrypted private keys
+ *
+ * Module:  library/pkcs12.c
+ * Caller:  library/pkparse.c
+ *
+ * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_CIPHER_C, MBEDTLS_MD_C
+ * Can use:  MBEDTLS_ARC4_C
+ *
+ * This module enables PKCS#12 functions.
+ */
+#define MBEDTLS_PKCS12_C
+
+/**
+ * \def MBEDTLS_PLATFORM_C
+ *
+ * Enable the platform abstraction layer that allows you to re-assign
+ * functions like calloc(), free(), snprintf(), printf(), fprintf(), exit().
+ *
+ * Enabling MBEDTLS_PLATFORM_C enables to use of MBEDTLS_PLATFORM_XXX_ALT
+ * or MBEDTLS_PLATFORM_XXX_MACRO directives, allowing the functions mentioned
+ * above to be specified at runtime or compile time respectively.
+ *
+ * \note This abstraction layer must be enabled on Windows (including MSYS2)
+ * as other module rely on it for a fixed snprintf implementation.
+ *
+ * Module:  library/platform.c
+ * Caller:  Most other .c files
+ *
+ * This module enables abstraction of common (libc) functions.
+ */
+#define MBEDTLS_PLATFORM_C
+
+/**
+ * \def MBEDTLS_POLY1305_C
+ *
+ * Enable the Poly1305 MAC algorithm.
+ *
+ * Module:  library/poly1305.c
+ * Caller:  library/chachapoly.c
+ */
+#define MBEDTLS_POLY1305_C
+
+/**
+ * \def MBEDTLS_PSA_CRYPTO_C
+ *
+ * Enable the Platform Security Architecture cryptography API.
+ *
+ * \warning The PSA Crypto API is still beta status. While you're welcome to
+ * experiment using it, incompatible API changes are still possible, and some
+ * parts may not have reached the same quality as the rest of Mbed TLS yet.
+ *
+ * Module:  crypto/library/psa_crypto.c
+ *
+ * Requires: MBEDTLS_CTR_DRBG_C, MBEDTLS_ENTROPY_C
+ *
+ */
+#define MBEDTLS_PSA_CRYPTO_C
+
+/**
+ * \def MBEDTLS_PSA_CRYPTO_STORAGE_C
+ *
+ * Enable the Platform Security Architecture persistent key storage.
+ *
+ * Module:  crypto/library/psa_crypto_storage.c
+ *
+ * Requires: MBEDTLS_PSA_CRYPTO_C,
+ *           either MBEDTLS_PSA_ITS_FILE_C or a native implementation of
+ *           the PSA ITS interface
+ */
+//#define MBEDTLS_PSA_CRYPTO_STORAGE_C
+
+/**
+ * \def MBEDTLS_PSA_ITS_FILE_C
+ *
+ * Enable the emulation of the Platform Security Architecture
+ * Internal Trusted Storage (PSA ITS) over files.
+ *
+ * Module:  crypto/library/psa_its_file.c
+ *
+ * Requires: MBEDTLS_FS_IO
+ *
+ */
+//#define MBEDTLS_PSA_ITS_FILE_C
+
+/**
+ * \def MBEDTLS_RIPEMD160_C
+ *
+ * Enable the RIPEMD-160 hash algorithm.
+ *
+ * Module:  library/ripemd160.c
+ * Caller:  library/md.c
+ *
+ */
+#define MBEDTLS_RIPEMD160_C
+
+/**
+ * \def MBEDTLS_RSA_C
+ *
+ * Enable the RSA public-key cryptosystem.
+ *
+ * Module:  library/rsa.c
+ *          library/rsa_internal.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *          library/x509.c
+ *
+ * This module is used by the following key exchanges:
+ *      RSA, DHE-RSA, ECDHE-RSA, RSA-PSK
+ *
+ * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C
+ */
+#define MBEDTLS_RSA_C
+
+/**
+ * \def MBEDTLS_SHA1_C
+ *
+ * Enable the SHA1 cryptographic hash algorithm.
+ *
+ * Module:  library/sha1.c
+ * Caller:  library/md.c
+ *          library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *          library/x509write_crt.c
+ *
+ * This module is required for SSL/TLS up to version 1.1, for TLS 1.2
+ * depending on the handshake parameters, and for SHA1-signed certificates.
+ *
+ * \warning   SHA-1 is considered a weak message digest and its use constitutes
+ *            a security risk. If possible, we recommend avoiding dependencies
+ *            on it, and considering stronger message digests instead.
+ *
+ */
+#define MBEDTLS_SHA1_C
+
+/**
+ * \def MBEDTLS_SHA256_C
+ *
+ * Enable the SHA-224 and SHA-256 cryptographic hash algorithms.
+ *
+ * Module:  library/sha256.c
+ * Caller:  library/entropy.c
+ *          library/md.c
+ *          library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *
+ * This module adds support for SHA-224 and SHA-256.
+ * This module is required for the SSL/TLS 1.2 PRF function.
+ */
+#define MBEDTLS_SHA256_C
+
+/**
+ * \def MBEDTLS_SHA512_C
+ *
+ * Enable the SHA-384 and SHA-512 cryptographic hash algorithms.
+ *
+ * Module:  library/sha512.c
+ * Caller:  library/entropy.c
+ *          library/md.c
+ *          library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * This module adds support for SHA-384 and SHA-512.
+ */
+#define MBEDTLS_SHA512_C
+
+/**
+ * \def MBEDTLS_SSL_CACHE_C
+ *
+ * Enable simple SSL cache implementation.
+ *
+ * Module:  library/ssl_cache.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_SSL_CACHE_C
+ */
+#define MBEDTLS_SSL_CACHE_C
+
+/**
+ * \def MBEDTLS_SSL_COOKIE_C
+ *
+ * Enable basic implementation of DTLS cookies for hello verification.
+ *
+ * Module:  library/ssl_cookie.c
+ * Caller:
+ */
+#define MBEDTLS_SSL_COOKIE_C
+
+/**
+ * \def MBEDTLS_SSL_TICKET_C
+ *
+ * Enable an implementation of TLS server-side callbacks for session tickets.
+ *
+ * Module:  library/ssl_ticket.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_CIPHER_C
+ */
+#define MBEDTLS_SSL_TICKET_C
+
+/**
+ * \def MBEDTLS_SSL_CLI_C
+ *
+ * Enable the SSL/TLS client code.
+ *
+ * Module:  library/ssl_cli.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_SSL_TLS_C
+ *
+ * This module is required for SSL/TLS client support.
+ */
+#define MBEDTLS_SSL_CLI_C
+
+/**
+ * \def MBEDTLS_SSL_SRV_C
+ *
+ * Enable the SSL/TLS server code.
+ *
+ * Module:  library/ssl_srv.c
+ * Caller:
+ *
+ * Requires: MBEDTLS_SSL_TLS_C
+ *
+ * This module is required for SSL/TLS server support.
+ */
+#define MBEDTLS_SSL_SRV_C
+
+/**
+ * \def MBEDTLS_SSL_TLS_C
+ *
+ * Enable the generic SSL/TLS code.
+ *
+ * Module:  library/ssl_tls.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *
+ * Requires: MBEDTLS_CIPHER_C, MBEDTLS_MD_C
+ *           and at least one of the MBEDTLS_SSL_PROTO_XXX defines
+ *
+ * This module is required for SSL/TLS.
+ */
+#define MBEDTLS_SSL_TLS_C
+
+/**
+ * \def MBEDTLS_THREADING_C
+ *
+ * Enable the threading abstraction layer.
+ * By default mbed TLS assumes it is used in a non-threaded environment or that
+ * contexts are not shared between threads. If you do intend to use contexts
+ * between threads, you will need to enable this layer to prevent race
+ * conditions. See also our Knowledge Base article about threading:
+ * https://tls.mbed.org/kb/development/thread-safety-and-multi-threading
+ *
+ * Module:  library/threading.c
+ *
+ * This allows different threading implementations (self-implemented or
+ * provided).
+ *
+ * You will have to enable either MBEDTLS_THREADING_ALT or
+ * MBEDTLS_THREADING_PTHREAD.
+ *
+ * Enable this layer to allow use of mutexes within mbed TLS
+ */
+//#define MBEDTLS_THREADING_C
+
+/**
+ * \def MBEDTLS_TIMING_C
+ *
+ * Enable the semi-portable timing interface.
+ *
+ * \note The provided implementation only works on POSIX/Unix (including Linux,
+ * BSD and OS X) and Windows. On other platforms, you can either disable that
+ * module and provide your own implementations of the callbacks needed by
+ * \c mbedtls_ssl_set_timer_cb() for DTLS, or leave it enabled and provide
+ * your own implementation of the whole module by setting
+ * \c MBEDTLS_TIMING_ALT in the current file.
+ *
+ * \note See also our Knowledge Base article about porting to a new
+ * environment:
+ * https://tls.mbed.org/kb/how-to/how-do-i-port-mbed-tls-to-a-new-environment-OS
+ *
+ * Module:  library/timing.c
+ * Caller:  library/havege.c
+ *
+ * This module is used by the HAVEGE random number generator.
+ */
+// #define MBEDTLS_TIMING_C
+
+/**
+ * \def MBEDTLS_VERSION_C
+ *
+ * Enable run-time version information.
+ *
+ * Module:  library/version.c
+ *
+ * This module provides run-time version information.
+ */
+// #define MBEDTLS_VERSION_C
+
+/**
+ * \def MBEDTLS_X509_USE_C
+ *
+ * Enable X.509 core for using certificates.
+ *
+ * Module:  library/x509.c
+ * Caller:  library/x509_crl.c
+ *          library/x509_crt.c
+ *          library/x509_csr.c
+ *
+ * Requires: MBEDTLS_ASN1_PARSE_C, MBEDTLS_BIGNUM_C, MBEDTLS_OID_C,
+ *           MBEDTLS_PK_PARSE_C
+ *
+ * This module is required for the X.509 parsing modules.
+ */
+#define MBEDTLS_X509_USE_C
+
+/**
+ * \def MBEDTLS_X509_CRT_PARSE_C
+ *
+ * Enable X.509 certificate parsing.
+ *
+ * Module:  library/x509_crt.c
+ * Caller:  library/ssl_cli.c
+ *          library/ssl_srv.c
+ *          library/ssl_tls.c
+ *
+ * Requires: MBEDTLS_X509_USE_C
+ *
+ * This module is required for X.509 certificate parsing.
+ */
+#define MBEDTLS_X509_CRT_PARSE_C
+
+/**
+ * \def MBEDTLS_X509_CRL_PARSE_C
+ *
+ * Enable X.509 CRL parsing.
+ *
+ * Module:  library/x509_crl.c
+ * Caller:  library/x509_crt.c
+ *
+ * Requires: MBEDTLS_X509_USE_C
+ *
+ * This module is required for X.509 CRL parsing.
+ */
+#define MBEDTLS_X509_CRL_PARSE_C
+
+/**
+ * \def MBEDTLS_X509_CSR_PARSE_C
+ *
+ * Enable X.509 Certificate Signing Request (CSR) parsing.
+ *
+ * Module:  library/x509_csr.c
+ * Caller:  library/x509_crt_write.c
+ *
+ * Requires: MBEDTLS_X509_USE_C
+ *
+ * This module is used for reading X.509 certificate request.
+ */
+#define MBEDTLS_X509_CSR_PARSE_C
+
+/**
+ * \def MBEDTLS_X509_CREATE_C
+ *
+ * Enable X.509 core for creating certificates.
+ *
+ * Module:  library/x509_create.c
+ *
+ * Requires: MBEDTLS_BIGNUM_C, MBEDTLS_OID_C, MBEDTLS_PK_WRITE_C
+ *
+ * This module is the basis for creating X.509 certificates and CSRs.
+ */
+#define MBEDTLS_X509_CREATE_C
+
+/**
+ * \def MBEDTLS_X509_CRT_WRITE_C
+ *
+ * Enable creating X.509 certificates.
+ *
+ * Module:  library/x509_crt_write.c
+ *
+ * Requires: MBEDTLS_X509_CREATE_C
+ *
+ * This module is required for X.509 certificate creation.
+ */
+#define MBEDTLS_X509_CRT_WRITE_C
+
+/**
+ * \def MBEDTLS_X509_CSR_WRITE_C
+ *
+ * Enable creating X.509 Certificate Signing Requests (CSR).
+ *
+ * Module:  library/x509_csr_write.c
+ *
+ * Requires: MBEDTLS_X509_CREATE_C
+ *
+ * This module is required for X.509 certificate request writing.
+ */
+#define MBEDTLS_X509_CSR_WRITE_C
+
+/**
+ * \def MBEDTLS_XTEA_C
+ *
+ * Enable the XTEA block cipher.
+ *
+ * Module:  library/xtea.c
+ * Caller:
+ */
+#define MBEDTLS_XTEA_C
+
+/* \} name SECTION: mbed TLS modules */
+
+/**
+ * \name SECTION: Module configuration options
+ *
+ * This section allows for the setting of module specific sizes and
+ * configuration options. The default values are already present in the
+ * relevant header files and should suffice for the regular use cases.
+ *
+ * Our advice is to enable options and change their values here
+ * only if you have a good reason and know the consequences.
+ *
+ * Please check the respective header file for documentation on these
+ * parameters (to prevent duplicate documentation).
+ * \{
+ */
+
+/* MPI / BIGNUM options */
+//#define MBEDTLS_MPI_WINDOW_SIZE            6 /**< Maximum windows size used. */
+//#define MBEDTLS_MPI_MAX_SIZE            1024 /**< Maximum number of bytes for usable MPIs. */
+
+/* CTR_DRBG options */
+//#define MBEDTLS_CTR_DRBG_ENTROPY_LEN               48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with
+// SHA-256) */ #define MBEDTLS_CTR_DRBG_RESEED_INTERVAL        10000 /**< Interval before reseed is performed by default */ #define
+// MBEDTLS_CTR_DRBG_MAX_INPUT                256 /**< Maximum number of additional input bytes */ #define
+// MBEDTLS_CTR_DRBG_MAX_REQUEST             1024 /**< Maximum number of requested bytes per call */ #define
+// MBEDTLS_CTR_DRBG_MAX_SEED_INPUT           384 /**< Maximum size of (re)seed buffer */ #define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY
+///**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */
+
+/* HMAC_DRBG options */
+//#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL   10000 /**< Interval before reseed is performed by default */
+//#define MBEDTLS_HMAC_DRBG_MAX_INPUT           256 /**< Maximum number of additional input bytes */
+//#define MBEDTLS_HMAC_DRBG_MAX_REQUEST        1024 /**< Maximum number of requested bytes per call */
+//#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT      384 /**< Maximum size of (re)seed buffer */
+
+/* ECP options */
+//#define MBEDTLS_ECP_MAX_BITS             521 /**< Maximum bit size of groups */
+//#define MBEDTLS_ECP_WINDOW_SIZE            6 /**< Maximum window size used */
+//#define MBEDTLS_ECP_FIXED_POINT_OPTIM      1 /**< Enable fixed-point speed-up */
+
+/* Entropy options */
+//#define MBEDTLS_ENTROPY_MAX_SOURCES                20 /**< Maximum number of sources supported */
+//#define MBEDTLS_ENTROPY_MAX_GATHER                128 /**< Maximum amount requested from entropy sources */
+//#define MBEDTLS_ENTROPY_MIN_HARDWARE               32 /**< Default minimum number of bytes required for the hardware entropy
+// source mbedtls_hardware_poll() before entropy is released */
+
+/* Memory buffer allocator options */
+//#define MBEDTLS_MEMORY_ALIGN_MULTIPLE      4 /**< Align on multiples of this value */
+
+/* Platform options */
+//#define MBEDTLS_PLATFORM_STD_MEM_HDR   <stdlib.h> /**< Header to include if MBEDTLS_PLATFORM_NO_STD_FUNCTIONS is defined. Don't
+// define if no header is needed. */ #define MBEDTLS_PLATFORM_STD_CALLOC        calloc /**< Default allocator to use, can be
+// undefined */ #define MBEDTLS_PLATFORM_STD_FREE            free /**< Default free to use, can be undefined */ #define
+// MBEDTLS_PLATFORM_STD_EXIT            exit /**< Default exit to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_TIME time
+///**< Default time to use, can be undefined. MBEDTLS_HAVE_TIME must be enabled */ #define MBEDTLS_PLATFORM_STD_FPRINTF      fprintf
+///**< Default fprintf to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_PRINTF        printf /**< Default printf to use, can
+// be undefined */
+/* Note: your snprintf must correctly zero-terminate the buffer! */
+//#define MBEDTLS_PLATFORM_STD_SNPRINTF    snprintf /**< Default snprintf to use, can be undefined */
+//#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS       0 /**< Default exit value to use, can be undefined */
+//#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE       1 /**< Default exit value to use, can be undefined */
+//#define MBEDTLS_PLATFORM_STD_NV_SEED_READ   mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be
+// undefined */ #define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE  mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function
+// to use, can be undefined */ #define MBEDTLS_PLATFORM_STD_NV_SEED_FILE  "seedfile" /**< Seed file to read/write with default
+// implementation */
+
+/* To Use Function Macros MBEDTLS_PLATFORM_C must be enabled */
+/* MBEDTLS_PLATFORM_XXX_MACRO and MBEDTLS_PLATFORM_XXX_ALT cannot both be defined */
+//#define MBEDTLS_PLATFORM_CALLOC_MACRO        calloc /**< Default allocator macro to use, can be undefined */
+//#define MBEDTLS_PLATFORM_FREE_MACRO            free /**< Default free macro to use, can be undefined */
+//#define MBEDTLS_PLATFORM_EXIT_MACRO            exit /**< Default exit macro to use, can be undefined */
+//#define MBEDTLS_PLATFORM_TIME_MACRO            time /**< Default time macro to use, can be undefined. MBEDTLS_HAVE_TIME must be
+// enabled */ #define MBEDTLS_PLATFORM_TIME_TYPE_MACRO       time_t /**< Default time macro to use, can be undefined.
+// MBEDTLS_HAVE_TIME must be enabled */ #define MBEDTLS_PLATFORM_FPRINTF_MACRO      fprintf /**< Default fprintf macro to use, can
+// be undefined */ #define MBEDTLS_PLATFORM_PRINTF_MACRO        printf /**< Default printf macro to use, can be undefined */
+/* Note: your snprintf must correctly zero-terminate the buffer! */
+//#define MBEDTLS_PLATFORM_SNPRINTF_MACRO    snprintf /**< Default snprintf macro to use, can be undefined */
+//#define MBEDTLS_PLATFORM_VSNPRINTF_MACRO    vsnprintf /**< Default vsnprintf macro to use, can be undefined */
+//#define MBEDTLS_PLATFORM_NV_SEED_READ_MACRO   mbedtls_platform_std_nv_seed_read /**< Default nv_seed_read function to use, can be
+// undefined */ #define MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO  mbedtls_platform_std_nv_seed_write /**< Default nv_seed_write function
+// to use, can be undefined */
+
+/**
+ * \brief       This macro is invoked by the library when an invalid parameter
+ *              is detected that is only checked with #MBEDTLS_CHECK_PARAMS
+ *              (see the documentation of that option for context).
+ *
+ *              When you leave this undefined here, the library provides
+ *              a default definition. If the macro #MBEDTLS_CHECK_PARAMS_ASSERT
+ *              is defined, the default definition is `assert(cond)`,
+ *              otherwise the default definition calls a function
+ *              mbedtls_param_failed(). This function is declared in
+ *              `platform_util.h` for the benefit of the library, but
+ *              you need to define in your application.
+ *
+ *              When you define this here, this replaces the default
+ *              definition in platform_util.h (which no longer declares the
+ *              function mbedtls_param_failed()) and it is your responsibility
+ *              to make sure this macro expands to something suitable (in
+ *              particular, that all the necessary declarations are visible
+ *              from within the library - you can ensure that by providing
+ *              them in this file next to the macro definition).
+ *              If you define this macro to call `assert`, also define
+ *              #MBEDTLS_CHECK_PARAMS_ASSERT so that library source files
+ *              include `<assert.h>`.
+ *
+ *              Note that you may define this macro to expand to nothing, in
+ *              which case you don't have to worry about declarations or
+ *              definitions. However, you will then be notified about invalid
+ *              parameters only in non-void functions, and void function will
+ *              just silently return early on invalid parameters, which
+ *              partially negates the benefits of enabling
+ *              #MBEDTLS_CHECK_PARAMS in the first place, so is discouraged.
+ *
+ * \param cond  The expression that should evaluate to true, but doesn't.
+ */
+//#define MBEDTLS_PARAM_FAILED( cond )               assert( cond )
+
+/* SSL Cache options */
+//#define MBEDTLS_SSL_CACHE_DEFAULT_TIMEOUT       86400 /**< 1 day  */
+//#define MBEDTLS_SSL_CACHE_DEFAULT_MAX_ENTRIES      50 /**< Maximum entries in cache */
+
+/* SSL options */
+
+/** \def MBEDTLS_SSL_MAX_CONTENT_LEN
+ *
+ * Maximum length (in bytes) of incoming and outgoing plaintext fragments.
+ *
+ * This determines the size of both the incoming and outgoing TLS I/O buffers
+ * in such a way that both are capable of holding the specified amount of
+ * plaintext data, regardless of the protection mechanism used.
+ *
+ * To configure incoming and outgoing I/O buffers separately, use
+ * #MBEDTLS_SSL_IN_CONTENT_LEN and #MBEDTLS_SSL_OUT_CONTENT_LEN,
+ * which overwrite the value set by this option.
+ *
+ * \note When using a value less than the default of 16KB on the client, it is
+ *       recommended to use the Maximum Fragment Length (MFL) extension to
+ *       inform the server about this limitation. On the server, there
+ *       is no supported, standardized way of informing the client about
+ *       restriction on the maximum size of incoming messages, and unless
+ *       the limitation has been communicated by other means, it is recommended
+ *       to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN
+ *       while keeping the default value of 16KB for the incoming buffer.
+ *
+ * Uncomment to set the maximum plaintext size of both
+ * incoming and outgoing I/O buffers.
+ */
+//#define MBEDTLS_SSL_MAX_CONTENT_LEN             16384
+
+/** \def MBEDTLS_SSL_IN_CONTENT_LEN
+ *
+ * Maximum length (in bytes) of incoming plaintext fragments.
+ *
+ * This determines the size of the incoming TLS I/O buffer in such a way
+ * that it is capable of holding the specified amount of plaintext data,
+ * regardless of the protection mechanism used.
+ *
+ * If this option is undefined, it inherits its value from
+ * #MBEDTLS_SSL_MAX_CONTENT_LEN.
+ *
+ * \note When using a value less than the default of 16KB on the client, it is
+ *       recommended to use the Maximum Fragment Length (MFL) extension to
+ *       inform the server about this limitation. On the server, there
+ *       is no supported, standardized way of informing the client about
+ *       restriction on the maximum size of incoming messages, and unless
+ *       the limitation has been communicated by other means, it is recommended
+ *       to only change the outgoing buffer size #MBEDTLS_SSL_OUT_CONTENT_LEN
+ *       while keeping the default value of 16KB for the incoming buffer.
+ *
+ * Uncomment to set the maximum plaintext size of the incoming I/O buffer
+ * independently of the outgoing I/O buffer.
+ */
+//#define MBEDTLS_SSL_IN_CONTENT_LEN              16384
+
+/** \def MBEDTLS_SSL_CID_IN_LEN_MAX
+ *
+ * The maximum length of CIDs used for incoming DTLS messages.
+ *
+ */
+//#define MBEDTLS_SSL_CID_IN_LEN_MAX 32
+
+/** \def MBEDTLS_SSL_CID_OUT_LEN_MAX
+ *
+ * The maximum length of CIDs used for outgoing DTLS messages.
+ *
+ */
+//#define MBEDTLS_SSL_CID_OUT_LEN_MAX 32
+
+/** \def MBEDTLS_SSL_CID_PADDING_GRANULARITY
+ *
+ * This option controls the use of record plaintext padding
+ * when using the Connection ID extension in DTLS 1.2.
+ *
+ * The padding will always be chosen so that the length of the
+ * padded plaintext is a multiple of the value of this option.
+ *
+ * Note: A value of \c 1 means that no padding will be used
+ *       for outgoing records.
+ *
+ * Note: On systems lacking division instructions,
+ *       a power of two should be preferred.
+ *
+ */
+//#define MBEDTLS_SSL_CID_PADDING_GRANULARITY 16
+
+/** \def MBEDTLS_SSL_OUT_CONTENT_LEN
+ *
+ * Maximum length (in bytes) of outgoing plaintext fragments.
+ *
+ * This determines the size of the outgoing TLS I/O buffer in such a way
+ * that it is capable of holding the specified amount of plaintext data,
+ * regardless of the protection mechanism used.
+ *
+ * If this option undefined, it inherits its value from
+ * #MBEDTLS_SSL_MAX_CONTENT_LEN.
+ *
+ * It is possible to save RAM by setting a smaller outward buffer, while keeping
+ * the default inward 16384 byte buffer to conform to the TLS specification.
+ *
+ * The minimum required outward buffer size is determined by the handshake
+ * protocol's usage. Handshaking will fail if the outward buffer is too small.
+ * The specific size requirement depends on the configured ciphers and any
+ * certificate data which is sent during the handshake.
+ *
+ * Uncomment to set the maximum plaintext size of the outgoing I/O buffer
+ * independently of the incoming I/O buffer.
+ */
+//#define MBEDTLS_SSL_OUT_CONTENT_LEN             16384
+
+/** \def MBEDTLS_SSL_DTLS_MAX_BUFFERING
+ *
+ * Maximum number of heap-allocated bytes for the purpose of
+ * DTLS handshake message reassembly and future message buffering.
+ *
+ * This should be at least 9/8 * MBEDTLSSL_IN_CONTENT_LEN
+ * to account for a reassembled handshake message of maximum size,
+ * together with its reassembly bitmap.
+ *
+ * A value of 2 * MBEDTLS_SSL_IN_CONTENT_LEN (32768 by default)
+ * should be sufficient for all practical situations as it allows
+ * to reassembly a large handshake message (such as a certificate)
+ * while buffering multiple smaller handshake messages.
+ *
+ */
+//#define MBEDTLS_SSL_DTLS_MAX_BUFFERING             32768
+
+//#define MBEDTLS_SSL_DEFAULT_TICKET_LIFETIME     86400 /**< Lifetime of session tickets (if enabled) */
+//#define MBEDTLS_PSK_MAX_LEN               32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */
+//#define MBEDTLS_SSL_COOKIE_TIMEOUT        60 /**< Default expiration delay of DTLS cookies, in seconds if HAVE_TIME, or in number
+// of cookies issued */
+
+/**
+ * Complete list of ciphersuites to use, in order of preference.
+ *
+ * \warning No dependency checking is done on that field! This option can only
+ * be used to restrict the set of available ciphersuites. It is your
+ * responsibility to make sure the needed modules are active.
+ *
+ * Use this to save a few hundred bytes of ROM (default ordering of all
+ * available ciphersuites) and a few to a few hundred bytes of RAM.
+ *
+ * The value below is only an example, not the default.
+ */
+//#define MBEDTLS_SSL_CIPHERSUITES MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
+
+/* X509 options */
+//#define MBEDTLS_X509_MAX_INTERMEDIATE_CA   8   /**< Maximum number of intermediate CAs in a verification chain. */
+//#define MBEDTLS_X509_MAX_FILE_PATH_LEN     512 /**< Maximum length of a path/filename string in bytes including the null
+// terminator character ('\0'). */
+
+/**
+ * Allow SHA-1 in the default TLS configuration for certificate signing.
+ * Without this build-time option, SHA-1 support must be activated explicitly
+ * through mbedtls_ssl_conf_cert_profile. Turning on this option is not
+ * recommended because of it is possible to generate SHA-1 collisions, however
+ * this may be safe for legacy infrastructure where additional controls apply.
+ *
+ * \warning   SHA-1 is considered a weak message digest and its use constitutes
+ *            a security risk. If possible, we recommend avoiding dependencies
+ *            on it, and considering stronger message digests instead.
+ *
+ */
+//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
+
+/**
+ * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake
+ * signature and ciphersuite selection. Without this build-time option, SHA-1
+ * support must be activated explicitly through mbedtls_ssl_conf_sig_hashes.
+ * The use of SHA-1 in TLS <= 1.1 and in HMAC-SHA-1 is always allowed by
+ * default. At the time of writing, there is no practical attack on the use
+ * of SHA-1 in handshake signatures, hence this option is turned on by default
+ * to preserve compatibility with existing peers, but the general
+ * warning applies nonetheless:
+ *
+ * \warning   SHA-1 is considered a weak message digest and its use constitutes
+ *            a security risk. If possible, we recommend avoiding dependencies
+ *            on it, and considering stronger message digests instead.
+ *
+ */
+#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_KEY_EXCHANGE
+
+/**
+ * Uncomment the macro to let mbed TLS use your alternate implementation of
+ * mbedtls_platform_zeroize(). This replaces the default implementation in
+ * platform_util.c.
+ *
+ * mbedtls_platform_zeroize() is a widely used function across the library to
+ * zero a block of memory. The implementation is expected to be secure in the
+ * sense that it has been written to prevent the compiler from removing calls
+ * to mbedtls_platform_zeroize() as part of redundant code elimination
+ * optimizations. However, it is difficult to guarantee that calls to
+ * mbedtls_platform_zeroize() will not be optimized by the compiler as older
+ * versions of the C language standards do not provide a secure implementation
+ * of memset(). Therefore, MBEDTLS_PLATFORM_ZEROIZE_ALT enables users to
+ * configure their own implementation of mbedtls_platform_zeroize(), for
+ * example by using directives specific to their compiler, features from newer
+ * C standards (e.g using memset_s() in C11) or calling a secure memset() from
+ * their system (e.g explicit_bzero() in BSD).
+ */
+//#define MBEDTLS_PLATFORM_ZEROIZE_ALT
+
+/**
+ * Uncomment the macro to let Mbed TLS use your alternate implementation of
+ * mbedtls_platform_gmtime_r(). This replaces the default implementation in
+ * platform_util.c.
+ *
+ * gmtime() is not a thread-safe function as defined in the C standard. The
+ * library will try to use safer implementations of this function, such as
+ * gmtime_r() when available. However, if Mbed TLS cannot identify the target
+ * system, the implementation of mbedtls_platform_gmtime_r() will default to
+ * using the standard gmtime(). In this case, calls from the library to
+ * gmtime() will be guarded by the global mutex mbedtls_threading_gmtime_mutex
+ * if MBEDTLS_THREADING_C is enabled. We recommend that calls from outside the
+ * library are also guarded with this mutex to avoid race conditions. However,
+ * if the macro MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, Mbed TLS will
+ * unconditionally use the implementation for mbedtls_platform_gmtime_r()
+ * supplied at compile time.
+ */
+//#define MBEDTLS_PLATFORM_GMTIME_R_ALT
+
+/**
+ * Enable the verified implementations of ECDH primitives from Project Everest
+ * (currently only Curve25519). This feature changes the layout of ECDH
+ * contexts and therefore is a compatibility break for applications that access
+ * fields of a mbedtls_ecdh_context structure directly. See also
+ * MBEDTLS_ECDH_LEGACY_CONTEXT in include/mbedtls/ecdh.h.
+ */
+//#define MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED
+
+/* \} name SECTION: Customisation configuration options */
+
+/* Target and application specific configurations
+ *
+ * Allow user to override any previous default.
+ *
+ */
+#if defined(MBEDTLS_USER_CONFIG_FILE)
+#include MBEDTLS_USER_CONFIG_FILE
+#endif
+
+#include "mbedtls/check_config.h"
+
+#endif /* MBEDTLS_CONFIG_H */
diff --git a/examples/ota-requestor-app/p6/include/AppConfig.h b/examples/ota-requestor-app/p6/include/AppConfig.h
new file mode 100644
index 0000000..a7b2502
--- /dev/null
+++ b/examples/ota-requestor-app/p6/include/AppConfig.h
@@ -0,0 +1,65 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+#include "cybsp.h"
+#include "cyhal.h"
+
+// ---- OTA Requestor Example App Config ----
+
+#define APP_TASK_NAME "APP"
+
+#define APP_UPDATE_BUTTON_IDX 0
+#define APP_FUNCTION_BUTTON_IDX 1
+
+#define APP_UPDATE_BUTTON CYBSP_USER_BTN1
+#define APP_FUNCTION_BUTTON CYBSP_USER_BTN2
+#define APP_BUTTON_DEBOUNCE_PERIOD_MS 50
+
+#define APP_BUTTON_PRESSED 0
+#define APP_BUTTON_RELEASED 1
+
+#define SYSTEM_STATE_LED CYBSP_USER_LED1
+#define UPDATE_LED CYBSP_USER_LED2
+
+// Time it takes in ms for the simulated actuator to move from one
+// state to another.
+#define ACTUATOR_MOVEMENT_PERIOS_MS 2000
+
+// ---- Thread Polling Config ----
+#define THREAD_ACTIVE_POLLING_INTERVAL_MS 100
+#define THREAD_INACTIVE_POLLING_INTERVAL_MS 1000
+
+// P6 Logging
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void appError(int err);
+void P6Log(const char * aFormat, ...);
+#define P6_LOG(...) P6Log(__VA_ARGS__)
+
+#ifdef __cplusplus
+}
+
+#include <lib/core/CHIPError.h>
+void appError(CHIP_ERROR error);
+#endif
diff --git a/examples/ota-requestor-app/p6/include/AppEvent.h b/examples/ota-requestor-app/p6/include/AppEvent.h
new file mode 100644
index 0000000..671a1be
--- /dev/null
+++ b/examples/ota-requestor-app/p6/include/AppEvent.h
@@ -0,0 +1,52 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2018 Nest Labs, Inc.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+struct AppEvent;
+typedef void (*EventHandler)(AppEvent *);
+
+struct AppEvent
+{
+    enum AppEventTypes
+    {
+        kEventType_Button = 0,
+        kEventType_Timer,
+        kEventType_Light,
+        kEventType_Install,
+    };
+
+    uint16_t Type;
+
+    union
+    {
+        struct
+        {
+            uint8_t ButtonIdx;
+            uint8_t Action;
+        } ButtonEvent;
+        struct
+        {
+            void * Context;
+        } TimerEvent;
+    };
+
+    EventHandler Handler;
+};
diff --git a/examples/ota-requestor-app/p6/include/AppTask.h b/examples/ota-requestor-app/p6/include/AppTask.h
new file mode 100644
index 0000000..43d448e
--- /dev/null
+++ b/examples/ota-requestor-app/p6/include/AppTask.h
@@ -0,0 +1,89 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "AppEvent.h"
+#include "FreeRTOS.h"
+#include "timers.h" // provides FreeRTOS timer support
+#include <ble/BLEEndPoint.h>
+#include <platform/CHIPDeviceLayer.h>
+
+// Application-defined error codes in the CHIP_ERROR space.
+#define APP_ERROR_EVENT_QUEUE_FAILED CHIP_APPLICATION_ERROR(0x01)
+#define APP_ERROR_CREATE_TASK_FAILED CHIP_APPLICATION_ERROR(0x02)
+#define APP_ERROR_UNHANDLED_EVENT CHIP_APPLICATION_ERROR(0x03)
+#define APP_ERROR_CREATE_TIMER_FAILED CHIP_APPLICATION_ERROR(0x04)
+#define APP_ERROR_START_TIMER_FAILED CHIP_APPLICATION_ERROR(0x05)
+#define APP_ERROR_STOP_TIMER_FAILED CHIP_APPLICATION_ERROR(0x06)
+
+class AppTask
+{
+
+public:
+    CHIP_ERROR StartAppTask();
+    static void AppTaskMain(void * pvParameter);
+
+    void PostEvent(const AppEvent * event);
+
+    void ButtonEventHandler(uint8_t btnIdx, uint8_t btnAction);
+
+private:
+    friend AppTask & GetAppTask(void);
+
+    CHIP_ERROR Init();
+
+    void CancelTimer(void);
+
+    void DispatchEvent(AppEvent * event);
+
+    static void FunctionTimerEventHandler(AppEvent * aEvent);
+    static void UpdateButtonHandler(AppEvent * aEvent);
+    static void FunctionHandler(AppEvent * aEvent);
+    static void TimerEventHandler(TimerHandle_t xTimer);
+
+    static void UpdateClusterState(void);
+
+    void StartTimer(uint32_t aTimeoutMs);
+
+    enum class Function
+    {
+        kNoneSelected   = 0,
+        kSoftwareUpdate = 0,
+        kStartBleAdv    = 1,
+        kFactoryReset   = 2,
+
+        kInvalid
+    };
+
+    Function mFunction              = Function::kNoneSelected;
+    bool mFunctionTimerActive       = false;
+    bool mSyncClusterToButtonAction = false;
+
+    static AppTask sAppTask;
+};
+
+inline AppTask & GetAppTask(void)
+{
+    return AppTask::sAppTask;
+}
diff --git a/examples/ota-requestor-app/p6/include/ButtonHandler.h b/examples/ota-requestor-app/p6/include/ButtonHandler.h
new file mode 100644
index 0000000..8dfbf7e
--- /dev/null
+++ b/examples/ota-requestor-app/p6/include/ButtonHandler.h
@@ -0,0 +1,41 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+#include <stdint.h>
+
+#include "FreeRTOS.h"
+#include "cyhal.h"
+#include "timers.h" // provides FreeRTOS timer support
+
+#define GPIO_INTERRUPT_PRIORITY (5)
+
+class ButtonHandler
+{
+public:
+    static void Init(void);
+
+private:
+    static void GpioInit(void);
+    static void lockbuttonIsr(void * handler_arg, cyhal_gpio_event_t event);
+    static void functionbuttonIsr(void * handler_arg, cyhal_gpio_event_t event);
+    static void TimerCallback(TimerHandle_t xTimer);
+};
diff --git a/examples/ota-requestor-app/p6/include/CHIPProjectConfig.h b/examples/ota-requestor-app/p6/include/CHIPProjectConfig.h
new file mode 100644
index 0000000..17f8d67
--- /dev/null
+++ b/examples/ota-requestor-app/p6/include/CHIPProjectConfig.h
@@ -0,0 +1,135 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+/**
+ *    @file
+ *          Example project configuration file for CHIP.
+ *
+ *          This is a place to put application or project-specific overrides
+ *          to the default configuration values for general CHIP features.
+ *
+ */
+
+#pragma once
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY
+ *
+ * Enables the use of a hard-coded default Chip device id and credentials if no device id
+ * is found in Chip NV storage.
+ *
+ * This option is for testing only and should be disabled in production releases.
+ */
+#define CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY 34
+
+// Use a default pairing code if one hasn't been provisioned in flash.
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021
+#endif
+
+#ifndef CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR
+#define CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF00
+#endif
+
+// For convenience, Chip Security Test Mode can be enabled and the
+// requirement for authentication in various protocols can be disabled.
+//
+//    WARNING: These options make it possible to circumvent basic Chip security functionality,
+//    including message encryption. Because of this they MUST NEVER BE ENABLED IN PRODUCTION BUILDS.
+//
+#define CHIP_CONFIG_SECURITY_TEST_MODE 0
+#define CHIP_CONFIG_REQUIRE_AUTH 1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION
+ *
+ * The product revision number assigned to device or product by the device vendor.  This
+ * number is scoped to the device product id, and typically corresponds to a revision of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software revisions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_REVISION 1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING
+ *
+ * A string identifying the firmware revision running on the device.
+ * CHIP service currently expects the firmware version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING "0.1ALPHA"
+#endif
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
+ *
+ * Enable support for Chip-over-BLE (CHIPoBLE).
+ */
+#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1
+
+/**
+ * CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC
+ *
+ * Enables synchronizing the device's real time clock with a remote Chip Time service
+ * using the Chip Time Sync protocol.
+ */
+#define CHIP_DEVICE_CONFIG_ENABLE_CHIP_TIME_SERVICE_TIME_SYNC 0
+
+/**
+ * CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER
+ *
+ * Enables the use of a hard-coded default serial number if none
+ * is found in Chip NV storage.
+ */
+#define CHIP_DEVICE_CONFIG_TEST_SERIAL_NUMBER "TEST_SN"
+
+/**
+ * CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS
+ *
+ * Enable recording UTC timestamps.
+ */
+#define CHIP_CONFIG_EVENT_LOGGING_UTC_TIMESTAMPS 1
+
+/**
+ * CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE
+ *
+ * A size, in bytes, of the individual debug event logging buffer.
+ */
+#define CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE (512)
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION
+ *
+ * The hardware version number assigned to device or product by the device vendor.  This
+ * number is scoped to the device product id, and typically corresponds to a version of the
+ * physical device, a change to its packaging, and/or a change to its marketing presentation.
+ * This value is generally *not* incremented for device software versions.
+ */
+#define CHIP_DEVICE_CONFIG_DEVICE_HARDWARE_VERSION 1
+
+/**
+ * CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+ *
+ * A string identifying the software version running on the device.
+ * CHIP service currently expects the software version to be in the format
+ * {MAJOR_VERSION}.0d{MINOR_VERSION}
+ */
+#ifndef CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
+#define CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING "0.1ALPHA"
+#endif
diff --git a/examples/ota-requestor-app/p6/matter-psoc6-mcuboot-bootloader.hex b/examples/ota-requestor-app/p6/matter-psoc6-mcuboot-bootloader.hex
new file mode 100644
index 0000000..a8ae0bf
--- /dev/null
+++ b/examples/ota-requestor-app/p6/matter-psoc6-mcuboot-bootloader.hex
@@ -0,0 +1,4099 @@
+:020000041000EA

+:1000000000000208070500100D000000690500103F

+:1000100000000000000000000000000000000000E0

+:100020000000000000000000000000006505001056

+:1000300000000000000000006505001065050010CC

+:1000400065050010650500106505001065050010C8

+:1000500065050010650500106505001065050010B8

+:1000600065050010650500106505001065050010A8

+:100070006505001065050010650500106505001098

+:1000800010B5064C2378002B07D1054B002B02D06E

+:10009000044800E000BF0123237010BD740700086E

+:1000A00000000000DCF60010044B10B5002B03D05C

+:1000B0000349044800E000BF10BDC0460000000036

+:1000C00078070008DCF6001010B500F07DF800F0AD

+:1000D00007F800F069F800F01FF800F029F810BDEB

+:1000E00010B50021012007F059F94D22002101200F

+:1000F00007F092F80021012007F00EF900210020FE

+:1001000007F04CF900220021002007F085F80021BB

+:10011000002007F001F910BD10B5002200212F20AA

+:1001200007F0C0F800220121052007F0BBF810BD40

+:1001300010B5134C134A0021200004F0AFFD124A01

+:100140000121200004F0AAFD104C114A00212000DA

+:1001500004F0A4FD0F4A0121200004F09FFD0E4C85

+:100160000E4A0421200004F099FD0D4A06212000CA

+:1001700004F094FD0B4A0721200004F08FFD10BD10

+:1001800000003140FCDF001030E000108002314000

+:1001900094DF0010C8DF00100003314060DF001062

+:1001A0002CDF0010F8DE0010034B332203495A50B5

+:1001B00003495A507047C0460000304008200000F4

+:1001C00010200000FEE7000030B583B0962100202B

+:1001D00008F048F808F00CF800281BD1774AFF23F4

+:1001E0001B02D4583F231C4007F0F2FF002806D022

+:1001F000012007F0DBFF714B9B6C002B25DB6F4A66

+:10020000FF231B02D45007F07BFA07F06DFA0120A0

+:1002100007F08EFA012008F005FD08F0A1FC08F0B7

+:1002200087FD08F06FFD0021002007F0FFF9002096

+:1002300007F086F9012007F067F9002007F0E2F8DF

+:100240005F4B1A683F23D45C06E00620FFF7BAFF35

+:10025000200007F0BBFC013C002CF9D1002101205B

+:1002600007F09EFA002007F0CFF9002800D189E0BE

+:1002700007F054FB0021002007F092FA0021002033

+:1002800007F0A4F94F4C002500950023002200211F

+:10029000200004F055FC00950023002201212000DD

+:1002A00004F04EFC484807F0FFF9002800D075E044

+:1002B000012007F017F9002007F042F9012007F0AC

+:1002C00023F9002007F09EF80021012007F068FACA

+:1002D0000021002007F064FA0021022007F060FAF4

+:1002E0000021032007F05CFA0021042007F058FAEF

+:1002F0000021052007F054FA344807F02DFB0028B0

+:100300004FD1334807F0F6FB00284DD101210020E2

+:1003100007F05CF90021002007F088F92D49012041

+:1003200007F07AFC002842D12B49012007F00AFD92

+:1003300000283FD10021022007F048F901210220C6

+:1003400007F074F9022007F00DF907F0BFF800205C

+:1003500007F088F8002007F09DF807F0ABF80020C0

+:1003600008F0F4FC012007F06BF807F0BDF901205C

+:1003700007F0DEF99021002007F074FF00F01AF971

+:1003800003B030BD07F03AFA1223FF33984200D091

+:100390006EE70121002007F019F969E70520FFF752

+:1003A00011FF0420FFF70EFF0420FFF70BFF0320CF

+:1003B000FFF708FF0320FFF705FFC04600002740B6

+:1003C000D45F01080000314040420F00C0E100103E

+:1003D000400D0300D4E100101027000010B503F019

+:1003E00059F9054C200004F055FB200004F052FBA5

+:1003F000012002F04FFE10BD8002314010B584682C

+:1004000003681B89E418094B1B68DB68382201214B

+:1004100007480AF0B5F80A21064803F01DF9FFF76E

+:10042000DDFF200000F082F910BDC046EC0100089D

+:10043000DCE100100000654010B584B0FFF744FE19

+:1004400062B6E120400203F0E9F8264C2368DB683D

+:100450001022012124480AF093F82368DB68222245

+:10046000012122480AF08CF8012002F0C1FD041E8F

+:100470000DD11C4B1B68DB682E2201211C480AF0A1

+:100480007FF8002C0BD0002008F032FAFBE7154B68

+:100490001B68D8682200174909F0FEFFF1E701A8A0

+:1004A00000F086FF00280FD10E4B1B68DB682F225F

+:1004B000012111480AF064F8FA20000102F0BAFFA5

+:1004C00001A8FFF79BFFDEE7064B1B68DB683222C3

+:1004D00001210A480AF054F80A21094803F0BCF83F

+:1004E000D1E7C046EC01000818E200102CE2001031

+:1004F00050E2001080E20010C4E20010F4E20010AC

+:10050000000065407047FFF7FDFF72B60F4C104DBD

+:10051000AC4209DA21686268A368043B02DBC85870

+:10052000D050FAE70C34F3E70A490B4A0020521A7C

+:1005300002DD043A8850FCDC084809490860BFF332

+:100540004F8F00F075F8FFF777FFFEE7E8F6001031

+:1005500000F70010740700087C6001080000000824

+:1005600008ED00E0FEE7FEE700B504207146084212

+:1005700002D0EFF3098001E0EFF30880043007F0C8

+:1005800059FEFEE7000000000230800803D0013071

+:100590000238FCD1C046C0467047EFF3108072B6F7

+:1005A000704780F31088704710B5002004F0C2FD3A

+:1005B00010BD704710B5002007F0EAFC041E00D102

+:1005C00010BD144B186006F0AFFF411C200008F06E

+:1005D00035FC0400104B186006F026FF411C20007B

+:1005E00008F02CFC04000D4B1860013C0C49200065

+:1005F00008F024FC01300B4B1870FA218900200010

+:1006000008F01CFC0130084B1860C003074B186051

+:10061000D6E7C04684000008880000088000000873

+:1006200040420F0094000008900000088C00000871

+:1006300010B5234803F036F8224CB022D200A3585C

+:100640005B005B08A350E02189006358302083439E

+:10065000635080235B04A3501B4B1C4AE2500433BD

+:10066000A0229201E2501A4BFF22E25008F098FBC0

+:10067000C0225200A35801218B43A350FFF799FFDA

+:10068000FFF798FF134B1B68BA20195ACA00521A79

+:10069000196A8C4662440021D1601A6A185AC30054

+:1006A0001B1AD31859600C4A8031032004F09AFDBC

+:1006B0000A4804F0F3FB0A4804F048FC10BDC046A9

+:1006C000F8ED001000002640840500000100020043

+:1006D0008C050000D45F010820070008900700087F

+:1006E00028E30010034A90235B01D35803201840ED

+:1006F0007047C0460000204010B5FFF74EFF084C81

+:10070000902149016358074A1A40074B134363502D

+:10071000034B5B68DB06FBD5FFF743FF10BDC0460C

+:1007200000002040FCFF00000100FA0570B5040045

+:10073000830500D001BEFFF730FF0500FFF7D2FFB1

+:10074000032813D00B4B802292009C509020400134

+:100750001A5809491140094A0A431A50054B5B6867

+:10076000DB06FBD52800FFF71CFF70BDFFF7C4FFB9

+:10077000E8E7C04600002040FCFF00000300FA0547

+:1007800000B583B0130001AA1370012301F055FADC

+:1007900003B000BD10B509F00DFF10BD04280AD04C

+:1007A000052804D101394B1E994108007047401AB1

+:1007B00043425841FAE70120F8E710B582B00C0037

+:1007C000C0B201A901F07EFF002803D0012420005F

+:1007D00002B010BD2100019801F094FA04000198C4

+:1007E00001F084FFF3E710B5040001F015FA0100F1

+:1007F00001222000FFF7C4FF10BD10B5040001F076

+:1008000007FA010001222000FFF7BAFF10BD000027

+:1008100030B583B004000E2A10D80E2915D8120165

+:100820000A436B46DD1DDA7101F0FBF9010001237B

+:100830002A00200001F001FA03B030BD9C21064BD4

+:10084000064A8900064809F009FE9C21054B034A27

+:100850008900034809F002FE5CE30010CCE40010BC

+:1008600070E30010B8E3001010B582B004000191ED

+:1008700001F0DCF90100042301AA200001F0DDF9F8

+:1008800002B010BD30B589B006A90120FFF795FF71

+:10089000002800D08CE004A90230FFF78EFF04008E

+:1008A000444B1B68D86806AB1B78012B28D0032B60

+:1008B00024D0414B06AA51789578D27802920195BE

+:1008C00000913E4A3E4909F0E7FD3A4B1B68D86863

+:1008D00004AB1B78012B17D0032B13D0364B04AA83

+:1008E00051789578D278029201950091354A344931

+:1008F00009F0D2FD002C11D0FF2057E0324BD9E790

+:10090000324BD7E7304BEAE7304BE8E72B79042B43

+:1009100028D006AA9278934224D00134022C3CD8E5

+:1009200063001B195B002A4AD51806A90978D05C18

+:10093000FFF734FF0028F0D004AB19786878FFF790

+:100940002DFF0028E9D0AB78042B03D006AAD2787B

+:100950009342E2D1EB78042BD8D004AAD278934208

+:10096000DBD1D3E7134B1B68D8686B79022B07D018

+:10097000032B10D0042B01D0164A02E0164A00E0E7

+:10098000164A174909F088FD6879831EDBB2022BED

+:100990000CD9FF200AE0134AF3E7064B1B68DB681B

+:1009A00017220121104809F0EBFD012009B030BDEC

+:1009B000FF20FBE7EC010008CCE300100CE4001082

+:1009C00030E4001074E40010D8E30010D0E300100D

+:1009D000F4E40010F0E3001004E40010E0E3001081

+:1009E0009CE40010E8E30010B4E4001070B50500CA

+:1009F000002915D001235B422878584004090F22B2

+:100A00001040094E80008359634018091A40920033

+:100A100093594340013901350029EDD1D84370BDC8

+:100A200001235B42FAE7C04608E50010F0B5CE4668

+:100A3000474680B5A7B0140099462E9F2F9B984635

+:100A4000684602F0B9FC0021684602F0BAFC319B0E

+:100A5000002B02D0329B002B07DC2389E2689446EE

+:100A600063446689F618002513E01A003199684638

+:100A700002F0B5FCF1E723003A002900484601F0F6

+:100A800037FE002811D122003900684602F0A7FC89

+:100A90002D19B54204D2741B4445ECD94446EAE70B

+:100AA0003099684602F0A7FC002027B0C0BCB946C8

+:100AB000B046F0BDF0B59FB017001D002C4B1E686E

+:100AC000279B0493269B039306AB0293259B0193DC

+:100AD000249B00932B00FFF7A9FF041E3DD1289B08

+:100AE000002B04D0202206A9180009F071FD002374

+:100AF0000093204B2A00390016A801F00FFD041EB8

+:100B00002BD11CAB72226A441DA916A801F07CFDF2

+:100B1000002821DB1CDC1CA909881029F1D17223D3

+:100B20006B441B88202B20D10EAA1D99280001F0B0

+:100B3000DFFD071E17D120220EA906A8FFF72AFE07

+:100B400006000D4B1B6801248342DAD03C0004E010

+:100B500063425C41E4B200E00400002C00D13400A8

+:100B600020001FB0F0BD0400F7E701246442F7E75E

+:100B700098000008FFFF00001009000810B50B4B9B

+:100B800002689A420FD1C2680389D843824202D8D0

+:100B9000D418012000E00020002805D08B68A34273

+:100BA00002D8002000E0002010BDC0463DB8F396FA

+:100BB000F0B585B005000C000192002001F098FE10

+:100BC000C0B203A901F07EFD002806D001270398DA

+:100BD00001F08CFD380005B0F0BD2C236343EB1809

+:100BE0001A89DE689619042302AA3100039801F0DD

+:100BF0007FFD071E26D12C214C432D196C8902AB99

+:100C00001A88134B9A420DD0002C1DD102AB1A88C2

+:100C1000104B9A421AD1331902AA52889B18019A92

+:100C20001360D4E702AB59888C4201D00327CEE78A

+:100C30008919042302AA039801F05AFD0028E5D07F

+:100C40000127C4E70127C2E70327C0E70327BEE760

+:100C5000086900000769000010B582B004000800B0

+:100C6000E02212010192012906D002290FD00729A2

+:100C700010D1E26D603401E0626A283401A901F00C

+:100C800085FE002801D1019B236002B010BD226DBA

+:100C90005434F3E70120F8E710B5006A01F018FEBC

+:100CA00010BD70B504000121FFF7D6FF002802D067

+:100CB0000125280070BD02212000FFF7CDFF00288C

+:100CC00001D00125F5E707212000FFF7C5FF051E2C

+:100CD00001D00125EDE72000FFF7DEFFA066E8E781

+:100CE000F0B583B004000F00002001F001FEC0B297

+:100CF00001A901F0E7FC061E1AD1019801F008FED7

+:100D00000500019801F0F2FC2C21794361180023C1

+:100D1000032B05D8CA5C954208D10133DBB2F7E753

+:100D20000123002B07D0300003B0F0BD0023F8E70B

+:100D300001267642F7E701267642F4E700B587B050

+:100D4000130000220492039202920132FF320192B8

+:100D5000044A00920A0000210020FFF7ABFE07B012

+:100D600000BDC046805D0108F0B585B005000C00EF

+:100D70000192244B1F68002001F0BAFDC0B203A904

+:100D800001F0A0FC002802D0380005B0F0BD2C30E6

+:100D900060432E1821002800FFF7A2FF00282BD067

+:100DA0003369D90601D5012727E0019B039A310059

+:100DB0002800FFF7C3FF0700039D29003000FFF75D

+:100DC000DDFE002803D0104B1B68BB4215D0002C61

+:100DD0000AD10E4B1B68D868002C0BD10C4A0D4968

+:100DE00009F05AFB012708E0AA680021280001F059

+:100DF00015FDEEE7084AF2E70127039801F076FCBB

+:100E0000C2E7C0469800000810090008EC0100087D

+:100E100054E500105CE5001048E5001070B50500D1

+:100E20000E000020FFF72EFD0400022805D0042844

+:100E300003D0032801D0200070BD3200012128001A

+:100E4000FFF792FF044B1B688342F4D0012801D0C6

+:100E50000524F0E70400EEE710090008F8B50600E5

+:100E60000D0017000024012C11DC2C226243B21863

+:100E70003B002100300000F0D9FB002801D10134F3

+:100E8000F1E7002C04DD002D02D1002000E000205D

+:100E9000F8BD002383718360C36001334371036035

+:100EA0000371C37170474379012B01D00020704753

+:100EB0000368012B01D00020F9E70379012B01D051

+:100EC0000020F4E70120F2E730B583B005000C0004

+:100ED0000023009301930800FFF7E5FF002830D0BE

+:100EE000204B2A689A4212D01E4BEA6A9A421BD0C3

+:100EF000019B009A934200D90093009BA360009A43

+:100F00002100280000F0D2FD002003B030BD6A4669

+:100F100000212800FFF74CFE0028E5D0124B134AB1

+:100F20001349144809F09AFA01AA01212800FFF791

+:100F30003FFE0028DCD00C4B0C4A0F490D4809F04D

+:100F40008DFA21000831002001F000F8002802D1BC

+:100F5000A3680093D3E7044B044A0849054809F005

+:100F60007DFAC0463DB8F39688E50010C8E600104B

+:100F70003604000090E500104D0400006D040000F0

+:100F800070B504000D00FFF79FFF002812D1EB7928

+:100F90006422A354033BDBB2012B11D9EB79022B62

+:100FA00017D0042B15D0032B13D06423E35CFF2B45

+:100FB00018D070BD124B134A1349144809F04EFA69

+:100FC000002000F011FA0028E8D06423FF22E25448

+:100FD000E4E7002000F0F4F90028E6D06423FF22C3

+:100FE000E254E2E70A4B1B68DB680E220121094844

+:100FF00009F0C6FA084B034A0849044809F02EFADA

+:1010000088E50010D8E600109605000090E5001075

+:10101000EC010008D0E50010E0E50010AE0500008E

+:1010200070B50400FFF750FF002814D16423E55C7D

+:10103000EB1EDBB2012B14D9022D03D0042D01D0FD

+:10104000032D07D1002000F0BBF9002802D0642353

+:10105000FF22E25470BD084B084A0949094809F0CB

+:10106000FDF9002000F0C0F90028E5D06423FF223C

+:10107000E254FF25E2E7C04688E50010B4E6001020

+:101080005305000090E5001070B504000D00FFF757

+:1010900008FE00280FD1002200212000FFF7DEFE0D

+:1010A000002814D1200000F0CDFB00281AD16423C1

+:1010B0000122E2540AE0344B1B68D868E022120196

+:1010C000324909F0E9F964230122E25470BD2E4B44

+:1010D0001B68D86800222E4909F0DEF9642301223A

+:1010E000E254F3E72800FFF7D4FE2900200001F0C6

+:1010F00001F8002814D12800FFF7D5FE00281AD0E7

+:10110000EB79012B34D02A0001212000FFF72CFEBF

+:10111000204B1B68834232D064230522E254D5E77A

+:10112000194B1B68D86800221B4909F0B5F96423E4

+:101130000122E254CAE729002000FFF721FF00281E

+:101140000AD12A0000212000FFF788FE002809D1DB

+:1011500064230122E254B9E7104B114A11491248A5

+:1011600009F07CF90D4B0E4A10490F4809F076F949

+:1011700029002000FFF752FE6423E054A6E7EA7935

+:101180006423E254A2E7C046EC010008E4E5001045

+:101190002CE60010100900085CE6001088E500103D

+:1011A000F4E600105306000090E500105906000018

+:1011B00010B501F033FB10BDF8B5DE4657464E467C

+:1011C0004546E0B58946924698460A9B9B460B9E4B

+:1011D000002512E04346E9182300124A484601F070

+:1011E00087FA002819D15B46E91823000D4A5046BA

+:1011F00001F0BEFA002812D12D19B54206D2741B97

+:101200008023DB009C42E5D91C00E3E70020F0BC12

+:10121000BB46B246A946A046F8BD0120F7E701202B

+:10122000F5E7C04680090008F0B5C64600B584B0B1

+:1012300004000E004E4B1B6898466C22002109F0FA

+:10124000D0F94C4B63624C4B23654C4BE365012753

+:101250007F420025012D14D82900002001F048FB11

+:101260002C21694320316118C0B201F02BFA071E0E

+:1012700001D10135EEE7424B424A4349434809F068

+:10128000EDF869462000FFF7FFFE6423E35C6A4641

+:10129000D371042B18D8022B21D2012B2BD164231C

+:1012A000E35CFF2B2BD0012B37D1394B22689A42BC

+:1012B0003BD0384B1B68D86800232200364909F020

+:1012C000EBF80327002549E0052B14D1002000F09E

+:1012D0008BF8071EE3D06423FF22E254DFE7694660

+:1012E0002000FFF79DFE071ED9D0254B254A2B492C

+:1012F000264809F0B3F86423FF22E254CFE7254BD8

+:101300001B68DB680E220121254809F039F9254BBD

+:101310001C4A25491D4809F0A1F86A460021200011

+:10132000FFF79CFD071EC0D0CCE7102200216846C5

+:1013300009F057F9236A5B783371236A5B68B360FD

+:1013400034601A4B1B689846BCE70122521B2C23C1

+:101350005343E318186A01F0C9F90135012DF4D996

+:10136000002F00D14746380004B080BCB846F0BD1D

+:1013700098000008800D0008807D000880ED0008BE

+:1013800088E5001014E70010D406000090E5001076

+:101390003DB8F396EC0100088CE60010140700003D

+:1013A000D0E50010E0E500102B0700001009000850

+:1013B00010B501000148FFF737FF10BD1409000800

+:1013C00010B582B001A9012001F07CF9002803D0FA

+:1013D0000124200002B010BD0198FFF704FA0400B8

+:1013E000019801F083F9F4E710B584B003A9012056

+:1013F00001F068F9002803D00124200004B010BDDA

+:1014000001A9039800F07EFC041E0CD101ABDB782F

+:10141000032B03D0039801F069F9EEE70398FFF777

+:10142000ECF90400F6E70124F4E70000F0B5CE463D

+:1014300000B582B00C0016001D00526AC300D758D8

+:101440001368FF1A0138C0001258D31A99462B6846

+:10145000012B15D1EB68022B0CD00899300000F05D

+:101460008BFD00282AD12A000899300000F0EAFDFF

+:1014700000282AD10999300000F07EFD00282BD1E8

+:10148000220039000898FFF793FE00282BD1019421

+:1014900000974B46089A11003000FFF78DFE002898

+:1014A00028D12900300000F0E9FB2B6801332B60C4

+:1014B000002826D102B080BCB946F0BD5421144B9F

+:1014C000144AFF31144808F0C9FFAB21104B114AF0

+:1014D0004900114808F0C2FFAD210D4B0D4A4900EB

+:1014E0000D4808F0BBFFAF21094B0A4A49000A48E2

+:1014F00008F0B4FF6221064B064AFF31064808F0A7

+:10150000ADFFB321024B034A4900034808F0A6FF90

+:1015100088E50010CCE8001024E70010F0B5CE46B6

+:10152000474680B583B00F0015001C00566AC30003

+:10153000F2583368D21A90460138C0003658F61A6D

+:101540002A6D11581368CB1A99462279012A07D0BF

+:101550002379022B32D003B0C0BCB946B046F0BDEF

+:101560003A0031000A98FFF723FE002818D10197AE

+:1015700000964B460A9A0B992800FFF71DFE00289B

+:1015800015D12100280000F079FB022323710028E7

+:10159000DED08021224B234AFF31234808F05EFF32

+:1015A0007A211F4B1F4AFF311F4808F057FFBE2109

+:1015B0001B4B1C4A49001C4808F050FF3A004946A2

+:1015C0000B98FFF7F5FD00281CD101974B460093BF

+:1015D00043460B9A0A992800FFF7EEFD002818D120

+:1015E0002100280000F04AFB236801332360012317

+:1015F00023710028AFD08C21094B0A4AFF310A48D9

+:1016000008F02CFFC221064B064A4900064808F0A4

+:1016100025FF8821024B034AFF31034808F01EFFD3

+:1016200088E50010B8E8001024E7001070B582B01B

+:1016300016001C1E3AD0436A5D686379012B12D0F4

+:10164000022B19D00025002001F052F9C0B201A9E7

+:1016500001F038F8002830D00125019801F046F853

+:10166000280002B070BD002922D11D4B1B682268E2

+:101670009A42E8D80025E6E72368012B08D9184AE2

+:101680001268934204D8002914D100250131DAE709

+:10169000012B01D00025D6E7002900D00025012923

+:1016A000D1D12379022BCED10021CCE70025CAE786

+:1016B0000025C8E700250021C5E7202332002900C6

+:1016C000019801F015F8051E08D1002CC5D032682C

+:1016D000044B9A42C1D001256D42BEE70125BCE70B

+:1016E0009C0000083DB8F396F0B5DE4657464E46DE

+:1016F0004546E0B589B006000591049200230393A6

+:101700000378032B00D182E000F095FAE0252D014B

+:1017100000239A460133019300239B46013B9946DF

+:101720000023029380464F460BE06B1E9B460292BD

+:101730001AE0019BA34202D001239C46E244013DF2

+:101740000194002D1DDD30784346E918013901234D

+:1017500006AA073200F086FE041E5ADB06ABDA79D1

+:10176000531EDBB2012BE0D9300001F0D1F806ABFB

+:1017700007331B789842DCD07A1CE0D12F0003930A

+:10178000DDE7B9465346012B24DC049908310020DB

+:1017900000F0DCFB041E2BD1049B9E6805998F6E24

+:1017A0003900300007F04AFB05003900300007F02F

+:1017B000CBFB4B1E99416918484601302AD0894518

+:1017C0001CDA0123049A537113004A461A60039AE3

+:1017D0001A711FE0134B1B68DB6825220121124898

+:1017E00008F0CEFE114B124AC221124808F036FE14

+:1017F000114B0F4AC8210F4808F030FE0223049A0B

+:10180000537113005A461A60029A1A7102E00724B3

+:1018100000E00124200009B0F0BCBB46B246A94656

+:10182000A046F0BDEC0100086CE70010E0E50010F8

+:1018300010E9001024E7001088E500100068484314

+:101840007047000070B5856A446DAC4202D0631CDD

+:10185000AB4213D1E0231B019D4219D80023002184

+:10186000A34229D2DA00416A89184968066DB44654

+:10187000624452688A4215D10133F1E7194B1B6863

+:10188000DB683A220121184808F07AFE002012E0B5

+:10189000144B1B68DB6831220121144808F070FEEC

+:1018A000002008E00F4B1B68DB682E220121104846

+:1018B00008F066FE002070BDAC4211D2426ADB0027

+:1018C000D3185B68994201D10120F4E7054B1B68EE

+:1018D000DB682E220121064808F052FE0020EAE7CC

+:1018E0000120E8E7EC01000894E70010D0E70010C1

+:1018F00004E8001070B586B004A90120FEF75DFF72

+:10190000041E25D11D4B1B68D86804AB1B78012B26

+:1019100027D0032B23D01A4B04AD6A78A978EE7830

+:10192000029601910092174A174908F0B5FD2B78ED

+:10193000012B02D1AB78032B15D0104B1B68DB6851

+:1019400019220121114808F01BFE200006B070BDCD

+:1019500030210F4B0F4AFF310F4808F07FFD0F4B2E

+:10196000DAE70F4BD8E7054B1B68DB682122012122

+:101970000C4808F005FE0224E7E7C046EC01000829

+:10198000CCE3001034E8001030E400107CE80010D4

+:1019900088E50010FCE8001024E70010D8E30010F0

+:1019A000D0E3001058E80010F0B589B005900C00A5

+:1019B0001500334962681140324A914202D12268CF

+:1019C000012A01D009B0F0BD06A91800FEF7F5FE06

+:1019D000002834D12C4B1B68D86806AB1B78012B30

+:1019E00036D0032B32D0294B06AF7A78B978FE78FF

+:1019F000029601910092264A264908F04DFD3B7857

+:101A0000032BDFD12900059800F0B6FA002821D178

+:101A10002800FEF7F2FE002823D1A1682800FEF777

+:101A200023FF002824D1280000F010F90028C9D095

+:101A3000B821194B194AFF31194808F00FFDD4217C

+:101A4000154B164A4900164808F008FD154BCBE720

+:101A5000154BC9E7D721104B104A4900104808F030

+:101A6000FDFCB2210C4B0D4AFF310D4808F0F6FC8D

+:101A7000DA21094B094A4900094808F0EFFCC04641

+:101A800000FF00FF00010004EC010008CCE300109F

+:101A900098E8001030E4001088E50010ECE8001031

+:101AA00024E70010D8E30010D0E30010F0B5C646DC

+:101AB00000B584B080460E00354B00211960436AA2

+:101AC0005F680023DB19324D29684C1C2C6093425F

+:101AD000F8D303A9012000F0F5FD002812D102A9D6

+:101AE000022000F0EFFD002813D10223029A3100FA

+:101AF0004046FFF759FF7379012B11D00223737110

+:101B0000012429E0D821234B234AFF31234808F040

+:101B1000A5FCED211F4B204A4900204808F09EFCFF

+:101B20001B4B1C6800E0013C002C11D0184B1B68BB

+:101B300032689B1A0133A342F5D3029B0193039BA6

+:101B400000933300424639002000FFF76FFCEAE7BC

+:101B500001233360D2E701340D4B1B68A3420DD340

+:101B60003368A342F7D8029B0193039B0093330091

+:101B7000424639002000FFF7D1FCECE7039800F063

+:101B8000B5FD029800F0B2FD04B080BCB846F0BDCF

+:101B90009C00000888E50010E0E8001024E7001031

+:101BA000012800D170470220FCE7000010B5102288

+:101BB000044908F0FFFC002801D0022010BD0120DC

+:101BC000FCE7C046E4E4001030B585B00D0001200C

+:101BD00000F078FD041E02D0200005B030BD1023B7

+:101BE0006A460949012000F03DFC041E07D110227D

+:101BF0000649684608F0DEFC002800D10400286889

+:101C000000F074FDE8E7C04684110000E4E4001031

+:101C1000004870478311000010B5FFF7F9FF013845

+:101C200010BD10B5FFF7F8FF013810BD10B5FFF774

+:101C3000F8FF043810BD0020704710B5007800F0A0

+:101C40009FFB002800D110BD0120FCE710B50078F3

+:101C50001023044A044900F093FB002800D110BD72

+:101C60000120FCE7E4E400108411000010B5C36D0E

+:101C700059689020800107F0E1F810BD30B583B0BD

+:101C80000C0001A9012000F01DFD002806D0012450

+:101C9000019800F02BFD200003B030BD0198FFF744

+:101CA000CAFF050001212000FFF7C8FD291863794C

+:101CB000012B0ED023790133DBB26A460332137055

+:101CC000019B1878012300F05BFB041EE0D0012487

+:101CD000DEE72379F1E7F0B5C64600B580460F0090

+:101CE0001600002400E00134B44207D23D5D4046B6

+:101CF00000F00EFE8542F6D0002000E0012080BCFE

+:101D0000B846F0BDF0B5DE4657464E464546E0B50E

+:101D100089B004000E0002A9072000F0D3FC051EC4

+:101D200008D00127380009B0F0BCBB46B246A9462E

+:101D3000A046F0BD2078102304AA834900F092FB4E

+:101D4000002800DAEEE0102204A90298FFF7C3FF92

+:101D5000071E00DAE8E001286FD004A8FFF726FF8D

+:101D600030700023994698462000FFF75AFF010083

+:101D70002078012302AA073200F074FB002800DA61

+:101D8000D4E0012202ABD91D0298FFF7A4FF00287E

+:101D900000DACDE002AB07331B780F221A407270D5

+:101DA0001B093371012801D0042A03D90123737060

+:101DB000002333712000FFF72FFF01002078B71CAC

+:101DC00001233A0000F04EFB002800DAB2E00122C5

+:101DD00039000298FFF77FFF002800DAACE0012805

+:101DE00063D0B078FFF7DCFEB0702000FFF710FF83

+:101DF00082462078F31C9B4601235A46514600F048

+:101E000031FB002800DA99E0012259460298FFF7D9

+:101E100062FF071E00DA93E0012849D0F078FFF74F

+:101E2000BFFEF0704B46002B00D18BE010224146E4

+:101E3000200000F0F3FC070074E7032333702378DD

+:101E4000022B05D0062B03D00023994698468BE73A

+:101E5000A36810225242944663449846102304AA71

+:101E60004146200000F06EFD8146031E00DA59E76E

+:101E700001280DD004A8FFF799FEC0B230700128E8

+:101E80000BD04B46002B00DA4CE7012399466BE759

+:101E9000023333700023994666E72078102304AAA2

+:101EA000294900F06DFA8146EBE70323B3709CE704

+:101EB0000323F3702378052B25D021D8012B22D0C2

+:101EC000022B00D02EE7A3681822524294466344A6

+:101ED000984601235A464146200000F033FD031E78

+:101EE000019000DA1EE7012811D0F078FFF758FEC4

+:101EF000C0B2F07002280DD1019B002B96DA11E7D9

+:101F0000062BE0D00EE7B378012B8BD1DBE7023351

+:101F1000F37087E7207801235A46514600F030FAE3

+:101F20000190E9E70127FDE60127FBE60127F9E635

+:101F30000127F7E60127F5E60127F3E60127F1E699

+:101F40000127EFE62F00EDE68411000030B583B0E5

+:101F50000C0001A9FFF738FE002801D003B030BD06

+:101F6000019D2800FFF762FE01002878042322006B

+:101F700000F078FAF2E70000F0B5CE46474680B5AB

+:101F800083B007008946294B1B68D8680A7828491E

+:101F900008F082FA01A9072000F094FB002806D07F

+:101FA0000124200003B0C0BCB946B046F0BD0021FA

+:101FB00000F09EFC04000121002000F099FC4B463B

+:101FC0001B78A34201D083422ED1180000F048F9BB

+:101FD00080463800FFF74AFE441E0025FA6DE300F4

+:101FE000D3185E6819681368C91A41443200019811

+:101FF000FFF7DEF8002811D1013CAD1990239B01B9

+:102000009D42EBD34B46996840394022484600F048

+:1020100005FC0400019800F069FBC2E7054B064A85

+:102020000649074808F01AFA0124BAE7EC0100084B

+:1020300028E9001088E50010C0E90010190200002E

+:102040004CE9001030B583B00C0015006946022041

+:10205000FEF7B3FB002814D1E979012917D16B46AB

+:10206000DB78012B1FD0A9682000FEF7FDFB0028BC

+:1020700024D12000FFF7EAFD002825D1002003B07D

+:1020800030BD144B144A1549154808F0E7F90022F1

+:102090002000FEF7BDFB0028E1D00E4B0E4A11498F

+:1020A0000F4808F0DBF92000FEF7A7FB0028DAD084

+:1020B000084B094A0C490A4808F0D0F9054B064A72

+:1020C0000A49074808F0CAF9024B034A084904487C

+:1020D00008F0C4F988E50010ACE900103E020000E9

+:1020E0004CE9001042020000470200004B020000D1

+:1020F0005602000070B584B005000E00FFF7FAFB31

+:10210000041EF06008D0022809D103A9012000F0C4

+:10211000D9FA002809D00124200004B070BD1E4B5C

+:102120001E4A1F491F4808F099F902A9072000F02C

+:10213000C9FA002801D00124EEE7320029000398F3

+:10214000FFF7D2FA041E19D10398FFF76AFD0100C8

+:1021500001236A460732012000F084F901226B4610

+:10216000D91D0298FFF7B7FD002813DB01280CD01A

+:102170006B46DA790F231340F3710400039800F0E3

+:10218000B5FA029800F0B2FAC6E76B460122DA719E

+:102190002000EDE70124BFE7E0E5001098E900101A

+:1021A0006F0200004CE9001010B5FA21490006F05A

+:1021B00045FE10BD10B5FFF7F7FF400210BD10B58A

+:1021C000FEF714FC10BD000070B5204CA5440400BF

+:1021D0000E001D000132839201A9072000F072FA5F

+:1021E000002805D00124200084239B009D4470BD5D

+:1021F000FA225200290002A808F0EAF9839B809392

+:10220000134B1B687F93FE21490002A8FFF7D7FFFD

+:1022100082908190012E10D00136F1008919490277

+:10222000091980239B0002AA019800F0A1FA041E5C

+:1022300005D1019800F05AFAD5E70026EDE7054BE5

+:10224000054AE921054808F009F9C046F0FDFFFFFD

+:10225000C4EA001088E500107CEA0010DCE90010F8

+:10226000012804D0022804D190208001704700206A

+:10227000FCE701204042F9E7F0B5DE4657464E46FE

+:102280004546E0B5394CA54481460191029205A925

+:10229000072000F017FA061E63D100250023984698

+:1022A00000279A4603930CE0859B9B46FE2149003C

+:1022B00006A8FFF784FF584518D001239C46E24446

+:1022C0000135012D19D8EC00641964024C448023B7

+:1022D0009B0006AA2100059800F00AFA002842D1C6

+:1022E000234B839A9A42DFD00137E9E7849B9845D4

+:1022F000E6D82E0098460394E2E7022F11D0534609

+:10230000022B1CD101267642059800F0EFF930002F

+:1023100087239B009D44F0BCBB46B246A946A0461D

+:10232000F0BD0023029A1360059800F0F1FA010055

+:10233000FA225200019808F054F90126E4E7029BC2

+:1023400042461A60FA235B00019A0399059800F04F

+:10235000CFF90028D8D0074B074AAB21074808F02F

+:102360007DF80126D3E70126D1E7C046E4FDFFFF53

+:10237000AFBEADDE88E50010ACEA0010DCE900106D

+:10238000F0B5CE46474680B5FFB007000C00914639

+:102390001E00FA214900200006F0D6FD0D0032197A

+:1023A0002A4B9A420DD83800FFF75AFF071E0FDB61

+:1023B0002000FFF7FFFEC719002398460120404286

+:1023C00026E00E21224B234AFF31234808F046F82D

+:1023D0001221224B1F4AFF311F4808F03FF85A1BB9

+:1023E000280068444946414408F0F2F86B467D9A5B

+:1023F00021003800FFF7E8FE002818D1F53EFF3E27

+:1024000080239B009C4667440C3B9C46E04400258F

+:10241000002E15DD7DAA69463800FFF72DFF041E4A

+:102420000CDBFA235B009E42D9DC3200D8E72E2178

+:102430000B4B084AFF31084808F010F801204042D1

+:102440007FB0C0BCB946B046F0BDC0469411000094

+:1024500028EA001098EA0010DCE9001054EA0010A5

+:1024600088E50010F0B5C64600B5FEB005000E00C8

+:1024700090461C00FA214900300006F065FD0F006F

+:10248000A219214B9A420AD82800FFF7E9FE051E3F

+:102490000CDB3000FFF78EFE451900261DE0AA2157

+:1024A0001A4B1B4A49001B4807F0D8FFAC211A4BB6

+:1024B000174A4900174807F0D1FF22003900694444

+:1024C0004346981908F084F8F53CFF3C80239B00B4

+:1024D0009C466544F536FF360027002C0CDD7DAAAE

+:1024E00069462800FFF7C8FE00280ADBFA235B00D4

+:1024F0009C42E2DDDA1BE1E700207EB080BCB846FA

+:10250000F0BD01204042F8E79411000028EA0010D5

+:1025100064EA0010DCE9001054EA0010F0B5D64679

+:102520004F464646C0B582B004000D0017009946DC

+:102530000AAA13789A46002845D0002947D0002FD0

+:1025400049D00E89CB689C466644042301AA310019

+:10255000380000F0CDF88046002840D101AB1A8841

+:10256000274B9A421FD06B89002B40D101AB1A88B0

+:10257000244B9A423FD1256067604B4623815346E6

+:10258000A3726B899B19E3606B899B1901AA52881E

+:102590009B18636104362661404602B0E0BCBA462F

+:1025A000B146A846F0BD6B8901AA51888B421AD169

+:1025B00089190423380000F09BF80028D6D00123A5

+:1025C0005B429846E8E701235B429846E4E7012333

+:1025D0005B429846E0E701235B429846DCE7012333

+:1025E0005B429846D8E701235B429846D4E7012333

+:1025F0005B429846D0E701235B429846CCE7C04651

+:102600000869000007690000F0B583B004000F00FE

+:1026100016001D00002848D00368002B48D04368EE

+:10262000002B20D1012040423BE0042301AA216974

+:10263000606800F05DF800283DD1A37A002B03D03C

+:102640002369E268934239D223891D4A934218D004

+:1026500001AA1288934214D001AB5B882269944688

+:102660006344043323612369626993421BD2226865

+:102670005289002AD9D0E2689A42D6D10433236124

+:10268000D3E7002D02D001AB1B882B8023690433D4

+:102690003B6001AB5B88338022699446634404331A

+:1026A000236103B0F0BD0120FBE701204042F8E7C1

+:1026B00001204042F5E701204042F2E70120F0E727

+:1026C000FFFF000010B5002200E001329300064C2D

+:1026D0001B59002B05D01C788442F6D10B600020DA

+:1026E00001E00120404210BDA0000008704700003A

+:1026F00070B5150044688C4214D9CA18944218D990

+:10270000611842787F2A1BD052B2002A1EDB0124B6

+:102710006442114B1B68D8682200104907F0BCFEC8

+:10272000200070BD20210E4B0E4AFF310E4807F0ED

+:1027300095FE90210D4B0B4A49000B4807F08EFE89

+:102740001A00280007F044FF0024E9E72A0000F0FF

+:102750006FF9041EE4D0DCE7EC01000844EB001044

+:10276000C8EA001098EC0010DCEA00102CEB001016

+:10277000F8B5150044688C420CD9CA18944210D997

+:10278000641842787F2A13D052B2002A34DB012029

+:102790004042F8BDA3211B4B1B4A49001B4807F0D0

+:1027A0005DFE48211A4B184AFF31184807F056FEC3

+:1027B000DA0506D1E205D00D002A09D15F0A06002C

+:1027C00017E0A921134B104A4900104807F046FEB4

+:1027D0005421114B0C4AFF310C4807F03FFE2900F1

+:1027E000200002F017F980239B009C466444654456

+:1027F0000136BE42F3D3CCE72A00210000F040F9B5

+:10280000C7E7C046C8EA001084EC0010DCEA0010FC

+:102810002CEB00106CEB00108CEB001070B5836893

+:10282000934211D38B4216D9541845685B199C42C8

+:1028300018D26D18531941787F291AD049B200294E

+:1028400034DB0120404270BDBC211B4B1B4A4900B8

+:102850001B4807F003FE7A211A4B184AFF3118482B

+:1028600007F0FCFDBD21184B144A4900144807F03D

+:10287000F5FD6D0A6D025B0A5B029D4212D05B1B87

+:102880005C0A0020002CDED0013C6002401902F0FE

+:1028900087F80028F6D094210C4B084AFF310848ED

+:1028A00007F0DCFD280002F07BF8CCE711002800DF

+:1028B00000F00EF9C7E7C046B8EB001070EC00104E

+:1028C000DCEA0010CCEB0010E0EB001008EC00108C

+:1028D00010B543787F2B08D05BB2002B02DB0120C0

+:1028E000404210BD00F0C6FBFBE780208000F8E707

+:1028F000012908D0022908D0002902D00120404235

+:1029000070470120FCE70220FAE70320F8E7000007

+:1029100010B543787F2B0BD05BB2002B02DAFF207F

+:10292000C0B210BD034B044A0449054807F096FDA8

+:102930000020F5E724EC001058EC00101F02000006

+:10294000DCEA0010F8B5CE46474680B50700904651

+:102950001E00FFF7CDFE814600280FD10024B442AF

+:1029600009D243461D5D3800FFF7D2FF854208D1EA

+:102970000134E4B2F3E70123994602E001235B420C

+:1029800099464846C0BCB946B046F8BDF8B50E00F9

+:102990001500002200E00132930020495B58002B13

+:1029A00004D019788142F6D11C0000E01C00002BF5

+:1029B0002ED063787F2B11D05BB2002B2BDA00F086

+:1029C00061FB0700A368D8190138390006F036FA10

+:1029D000336883420BD36268002414E0072802D1D5

+:1029E0008027BF00EEE700F04DFB0700EAE70C4B45

+:1029F0000C4A0D490D4807F031FDE300EB185F600C

+:102A00001A60D21901348442F7D330600020F8BD37

+:102A100001204042FBE701204042F8E7A000000807

+:102A20002CEC001040EC001072020000DCEA0010F8

+:102A3000F0B5C64600B582B00E0017001C00437802

+:102A40007F20184000F0AEFA0500E8231B069C46E4

+:102A5000664400F0AFFA804600F0B0FA01900094AE

+:102A60003B0032002900404604F0F6F9002804D16A

+:102A7000002002B080BCB846F0BD01204042F8E71B

+:102A8000F0B5C64600B582B00E0017001C004378B2

+:102A90007F20184000F086FA0500E8231B069C46BC

+:102AA000664400F087FA804600F088FA01900094AE

+:102AB0003B0032002900404604F048FA002804D1C7

+:102AC000002002B080BCB846F0BD01204042F8E7CB

+:102AD000F0B583B00500002000F064FA0400E8239C

+:102AE0001B06E818A3699D696D42054000F062FA73

+:102AF0000600A3699F6900F061FA00903B002A007C

+:102B00002100300004F0C0FA002802D1002003B0F8

+:102B1000F0BD01204042FAE7F0B5C64600B58C682A

+:102B20000A688423C3580F252B40073DED1A230064

+:102B3000AC4226D92B0024E055782D021678354377

+:102B4000D678360697783F043E4335439827C551DB

+:102B500055792D0216793543A846D67936069579EA

+:102B60002D042E4345463543C551D218E41A84231B

+:102B7000C3580F252B40073DED1A2300AC4200D966

+:102B80002B00002B00D183E0082BD5D0012B24D0C3

+:102B9000022B26D0032B2BD0042B33D0052B3ED079

+:102BA000062B4CD0072B5DD053781B0215782B4396

+:102BB000D5782D069678360435432B4398268351D5

+:102BC00053791B0215792B43D5792D0697793F044C

+:102BD0003D432B4383510823C7E716789025465180

+:102BE000C3E755782D021678354394268551BCE706

+:102BF00055782D0216783543942685519678902580

+:102C00004651B2E755782D0216783543D678360608

+:102C100097783F043E43354398268551A5E755787C

+:102C20002D0216783543D678360697783F043E4312

+:102C300035439826855116799025465195E7557864

+:102C40002D0216783543D678360697783F043E43F2

+:102C500035439826855155792D02167935439426AA

+:102C6000855182E755782D0216783543D678360699

+:102C700097783F043E4335439826855155792D0278

+:102C800016793543942685519679902546516CE7FF

+:102C90000A608C60002C0CD1F924E4000359012255

+:102CA000934303518A61CB69002B02D0CB69012089

+:102CB000984780BCB846F0BDF8B50E004C69CA68AC

+:102CC000C423C3580F21194023008C421CD90B0088

+:102CD0001AE0D825415911700F0A57700F0C9770E0

+:102CE000090ED17045591571290A5171290C91713C

+:102CF0002D0ED571D218E41AC423C3580F251D40D8

+:102D00002300AC4200D92B00002B6DD0082BE0D063

+:102D1000012B1ED0022B20D0032B24D0042B2BD030

+:102D2000052B33D0062B3ED0072B4BD0D821435850

+:102D300013701D0A55701D0C95701B0ED3704358EF

+:102D40001371190A5171190C91711B0ED37108235B

+:102D5000D0E7D02141581170CCE7D42141581170EF

+:102D6000090A5170C6E7D42141581170090A5170FF

+:102D7000D02141589170BDE7D821415811700D0AFA

+:102D800055700D0C9570090ED170B3E7D8214158DC

+:102D900011700D0A55700D0C9570090ED170D0216F

+:102DA00041581171A6E7D821415811700D0A55708C

+:102DB0000D0C9570090ED170D42141581171090A7A

+:102DC000517197E7D821415811700D0A55700D0CBB

+:102DD0009570090ED170D42141581171090A5171B1

+:102DE000D0214158917185E7F2607461002C0DD1BA

+:102DF000F922D200835802218B4383500323B3610D

+:102E0000336A002B02D0336A032098477461F8BDFF

+:102E100010B5264A264BD358DA070DD49A0716D494

+:102E20005A071FD5234B05229A61204AF823DB005D

+:102E30000421D150D35809E01C4C1E492000FFF753

+:102E40006BFEF823DB000122E250E35810BD174C63

+:102E500018492000FFF730FFF823DB000222E25080

+:102E6000E358F3E71A0709D5124B06229A610F4A75

+:102E7000F823DB000821D150D358E7E7DA0609D55B

+:102E80000C4B07229A61094AF823DB001021D1502C

+:102E9000D358DBE79B06D9D5064B08229A61034A33

+:102EA000F823DB002021D150D358CFE70000424067

+:102EB000CC070000805E010810B52E4C2E4A03217D

+:102EC000200001F0EBFE11220321200001F00CFE96

+:102ED0002A4A0421200001F0E1FE112204212000F1

+:102EE00001F002FE264A0521200001F0D7FE112242

+:102EF0000521200001F0F8FD224A0621200001F002

+:102F0000CDFE11220621200001F0EEFD1E4A072110

+:102F1000200001F0C3FE11220721200001F0E4FD92

+:102F20000021022004F052FB0221022004F07EFB6B

+:102F3000022004F017FB1549154805F0BBF8FA22EA

+:102F4000144B92001449154802F040FD041E0FD1A5

+:102F50000F4B00229B5E002B06DB1F2213401E3A04

+:102F60009A4013000E4A13600A490C4802F00CFF05

+:102F7000200010BD8005314044ED001010ED001020

+:102F8000DCEC0010A8EC001078ED0010112E001001

+:102F9000E4010008805E0108ACED00100000424032

+:102FA00000E100E0024B1B685B688000C05870477E

+:102FB000385F0108004870470000424000487047F1

+:102FC000805E010810B50400FFF776FF002800D0EE

+:102FD00010BD044B1C60044A2100044803F02EFE7F

+:102FE000F6E7C046385F0108805E010800004240F5

+:102FF00070B51D4B5B68032831D00AD8012811D069

+:10300000022803D11B6802221A700EE00120404200

+:1030100024E0042803D11B6808221A7005E001206F

+:1030200040421BE01B6801221A7001380F4A43001E

+:10303000191889008C581918890051184D680E7A92

+:103040000B4A16722900200001F028FE32002900E8

+:10305000200001F049FD0448FFF7B4FF70BD1B6874

+:1030600004221A70E1E7C046D40100088C01000870

+:10307000E4000008024B5B681B689B69586A704754

+:10308000D4010008024B5B681B689B699869704714

+:10309000D401000870B504001D4D280003F040FB6A

+:1030A0002B685B005B082B60022004F073FA194B5D

+:1030B00000229B5E002B0BDB1F2213401E3A9A401E

+:1030C0001300154980228B50BFF34F8FBFF36F8FD2

+:1030D000104B59880020185E04F0BAFF013C6000D4

+:1030E000001980000D4BC05801F0D4FC0C4C20009E

+:1030F00001F0D0FC200001F0CDFC200001F0CAFC62

+:10310000200001F0C7FC200001F0C4FC70BDC046E7

+:1031100000004240E401000800E100E08C010008EA

+:1031200080053140074BC200D05A9B1859889A88B5

+:10313000DB88084310431843C0B2431E9841C0B215

+:103140007047C046845F010870B515000024002C4C

+:1031500002D0124C200070BDA3005B195B00104A26

+:103160009A5A6B000F4E9B5B9A4201D30134EEE7F3

+:1031700000230B704C700C4B03602000FFF7D2FF54

+:10318000002807D00649A20055196D006B5A01337B

+:103190006B52DFE7044800F0FDFBF3E7011000008D

+:1031A000845F0108BCED00100000104070B50600FF

+:1031B0000D004C78A3009B185B0010495B5A002B54

+:1031C00004D0A400A4186400013B63526878FFF7A0

+:1031D000A9FF002800D070BD094B1B68002B05D04B

+:1031E0003368002B05DB01232B70F4E700F026FB8E

+:1031F000F6E7300000F014FCF5E7C046845F0108F4

+:10320000D85F010870B504000D0000280BD0211D07

+:103210002A002000FFF798FF002800D1A571434243

+:103220005841C0B270BD01BEF1E710B5002803D00F

+:103230000379002B02D010BD01BEF9E782790100AD

+:1032400001C9FFF7B3FFF6E730B583B005000C0006

+:10325000002801D0002901D103B030BD0321684608

+:10326000FFF7D0FF002803D16846FFF7DEFFF3E742

+:103270000098A3B2074A11682D228A5C1F2A04D83D

+:103280000022290000F07AFCEEE70022290000F07D

+:1032900003FDE9E7D45F010810B5041E01D0002941

+:1032A00000D110BDFFF7D0FF03212000FFF7AAFFD8

+:1032B000F7E7000070B505000C1E22D0002B23D0CC

+:1032C000006816490E682D21715C1F2911D8210054

+:1032D00000F05EFD00281AD12868104B1A682D23D3

+:1032E000D35C1F2B09D8210000F008FE002811D163

+:1032F00070BD210000F0D6FEECE7210000F060FF79

+:10330000F4E701204042F3E701204042F0E70120CA

+:103310004042EDE701204042EAE7C046D45F0108A1

+:1033200070B5002913D0002A14D0CC68002C14D01A

+:1033300000680D4C25682D242C5D1F2C04D800F04E

+:10334000F3FD00280CD170BD00F050FFF9E701201B

+:103350004042F8E701204042F5E701204042F2E711

+:1033600001204042EFE7C046D45F010810B50029B4

+:1033700013D0002A14D0CB68002B14D000680D4B5A

+:103380001C682D23E35C1F2B04D800F019FE0028D5

+:103390000CD110BD01F0C6F8F9E701204042F8E772

+:1033A00001204042F5E701204042F2E7012040427F

+:1033B000EFE7C046D45F010810B59821FFF76CFF16

+:1033C00010BD10B50B0001000831002B05D1022201

+:1033D00003003833FFF76EFF10BD0122F8E710B588

+:1033E0000C00131E01D1002010BD01000831220085

+:1033F000FFF796FFF8E710B50A0001000831FFF764

+:10340000B5FF10BD10B50549C02252008B580120F0

+:1034100003438B5005F008FD10BDC0460000264058

+:103420000349C02252008B58012083438B507047C0

+:103430000000264070B50400421E304B9A4256D818

+:103440002F4B1B78002B55D12D4B01221A702D4B81

+:103450001B78002B0ED0FFF7E3FF2B4B1C800023C3

+:103460000C2B1FD89900294A52185288A24212D90F

+:103470000133F5E7264D8032FF32AB580126334346

+:10348000AB5005F0D1FCE122D200AB58B343AB50B6

+:103490001C4B1E70DFE70A001C49525AA24202D997

+:1034A000140000E00C231B4A1370FF251D40280068

+:1034B00005F0A0FC2004000C06F02CFE164A174B69

+:1034C00005F06AFF05F07EFE82B211235B1B01202E

+:1034D0009840101A80B20E4AC2235B00D358C0181D

+:1034E00080B205F06FFCFFF78DFF002070BD01205A

+:1034F0004042FBE701204042F8E7C0466F1700005A

+:10350000905F0108915F01088E5F0108C4ED001013

+:10351000000026408C5F010833DFC14F1C409F3FF5

+:10352000064AD0239B00D05803E0044AD0239B00D6

+:10353000D058431CF9D0C0B27047C0460000654067

+:1035400010B50400002003E02100034801F0E8FE6C

+:103550000028F9D010BDC0460000654070B50600D7

+:103560000D00002102F0AAF80021012003F016FF4F

+:10357000040004F01DFDE9004B08C01805F05EFCD6

+:10358000421E002C08D0002C0CD0326880231B0671

+:1035900013433360200070BD0021012003F03CFE86

+:1035A0000400F0E70021012003F0B6FE0400ECE780

+:1035B00070B50C001600002901D0002509E0002597

+:1035C000280070BD2078094B1870FFF7B9FF01344F

+:1035D0000135B542F4DA23780A2BF3D1034B1B787B

+:1035E0000D2BEFD00D20FFF7ABFFEBE7D05F01080D

+:1035F00070B50C001600002901D0002503E000255D

+:10360000280070BD0134B542FADAFFF789FF207057

+:1036100001350A28F4D00D28F4D1F1E710B50400E3

+:103620000A4A0B490B4801F08FFE002808D00028F9

+:1036300005D1084A116880231B060B43136010BD97

+:1036400021000448FFF78AFFF1E7C046945F0108B4

+:10365000B8DE00100000654070B505000C0007E002

+:103660000B4B1B689800C0184000FCF78DFF013C15

+:10367000002C0BD082229200AB58DB05DB0DA95841

+:10368000C90B01220A409B18002BE9D170BDC0462E

+:103690009000000810B5024801F0DEFF10BDC046E2

+:1036A00000006540014B18607047C046D45F0108B8

+:1036B000F0B51F001D4B1E68002E2DD0B36B1B18DC

+:1036C0001B68346D2418E41A631E9C41E3B29C46C7

+:1036D000B368C41825680F242C40062CF8D81306AC

+:1036E000F26882183B43136063460B4313D00F4BC1

+:1036F0001B689B68C3181B68DB03F8D50C4B1A6862

+:103700002D23D35C1F2B09D8084B1B681B681B1883

+:103710001B681B06F8D4F0BD3300D2E7034B1B68CF

+:103720001B681B181B68002BF8D1F4E7D85F010851

+:10373000D45F010810B50400E0239B05802200211E

+:10374000FFF7B6FFD0239B05802200212000FFF762

+:10375000AFFFC0239B05802200212000FFF7A8FFB8

+:10376000B0239B05802200212000FFF7A1FFA023AA

+:103770009B05802200212000FFF79AFF90239B05E4

+:10378000802200212000FFF793FF80239B058022E9

+:1037900000212000FFF78CFFE0235B058022002141

+:1037A0002000FFF785FFC0235B0580220021200059

+:1037B000FFF77EFFA0235B05802200212000FFF79A

+:1037C00077FF80235B05802200212000FFF770FF38

+:1037D000C0231B05802200212000FFF769FF802302

+:1037E0001B05802200212000FFF762FF8023DB04FD

+:1037F000802200212000FFF75BFF002380220021B0

+:103800002000FFF755FF0B4B1B689B080A4A116805

+:103810002D228A5C1F2A0AD80C229340F02292059E

+:103820001343802200212000FFF742FF10BD0D222C

+:10383000F3E7C046DC5F0108D45F0108054B1A6856

+:103840002D23D35C1F2B03D8034A044B1A60704707

+:10385000034AFAE7D45F0108B8EE0010D85F010808

+:103860000CEF0010F0B583B01400444B1B68002B24

+:1038700075D0002918D0002973D0002C73D0802275

+:103880001202944200D972E080225201944239D04F

+:1038900021D88022D200944236D00ED98022120143

+:1038A000944216D1782225E0002AE4D11A6D11182D

+:1038B000334A1268D46CA400DDE78022520094429F

+:1038C00024D00132FF32944201D17E2212E02D4DEC

+:1038D0004AE02C4D48E08022D201944218D0802248

+:1038E0001202944201D1002204E08022920194420B

+:1038F0003FD16022224D2E682D25765D1F2E09D9DD

+:10390000671E08E07022F5E77C22F3E77F22F1E7EB

+:103910004022EFE71C4F01910D003D4039422AD172

+:103920001F2E02D91202194942509B6B1B18019A93

+:103930001A60A308124A11682D228A5C1F2A0CD82B

+:103940000C2293401A00F0239B0513438022002190

+:10395000FFF7AEFE0E4B1C6006E00D22F1E7094DAD

+:1039600002E0084D00E0074D280003B0F0BD054D12

+:10397000FAE7044DF8E7034DF6E7C046D85F0108C3

+:10398000D45F01080B003200FF3F000088140000E4

+:10399000DC5F010810B50400FFF750FF1A4B1A68EE

+:1039A0002D23D35C1F2B10D8184B2360184B1B689A

+:1039B0005B6B1B1901221A60164B1B68002B16D07B

+:1039C0002000FFF7B7FE002010BD2368124A134005

+:1039D00023600F4B1B685B681B19104A1A60226832

+:1039E00080231B06134323600323A360DEE7084BF9

+:1039F0001B68196D6118044B1B68DA6C920020007B

+:103A0000FFF730FFDCE7C046D45F01080300008009

+:103A1000D85F0108DC5F0108FFFFFE7F01000200A4

+:103A2000084B1A682D23D35C1F2B06D80023036094

+:103A3000054B00221A60002070470023036083605A

+:103A4000F6E7C046D45F0108DC5F010870B50D4C95

+:103A50002568AC68241826680F243440042CF6D856

+:103A6000EC680419084D2560064C2568ED68451979

+:103A700029602168C96841180A602268D2688018E4

+:103A8000036070BDD85F01081002004270B50F4C92

+:103A90002568AC68241826680C242642F7D1EC6807

+:103AA00004190B4D2560094C2568ED6845192960FE

+:103AB0002168C96841180A602268D26882181360B8

+:103AC0002368DB68C018049B036070BDD85F0108E1

+:103AD0001032004370B51D0004AB1E78084A14680C

+:103AE000A3681A1812681307F8D409060223B34012

+:103AF00019430123AB40E26880181943016070BD8F

+:103B0000D85F010830B51D000B4A1468A3681A1865

+:103B100012681307F8D409060323049A9340194343

+:103B20000223039A934019430123AB40E2688018B3

+:103B30001943016030BDC046D85F010810B582B09E

+:103B4000040008001100002B01D102B010BD0200DA

+:103B50002000FFF77BFF08230093043B0022502145

+:103B60002000FFF7B7FF044B1B681B681B191B687D

+:103B7000DB06F8D4E9E7C046D85F010810B582B08B

+:103B8000040010001A1E01D102B010BD0300200075

+:103B9000FFF75CFF0C230093043B0022512120001F

+:103BA000FFF798FF034B1B681B681B191B68DB069C

+:103BB000F8D4E9E7D85F0108F0B5002B00D1F0BDDB

+:103BC0001E00314C2568AC68241827680F243C403F

+:103BD000042CF6D8862464010459002CFADBEC6826

+:103BE00004192A4D2560284D2C68E46804192260C8

+:103BF0002A68D26882181660234A1468A2681218CC

+:103C000015680F222A40042AF6D8E2688218204C50

+:103C100014601D4C2268D268821811602268D26834

+:103C2000821816600EE0184A11688A681218146823

+:103C30000F222240062AF6D8CA6882181549116058

+:103C4000103B9BB20F2BEED8002B07D10E4B1B68FD

+:103C50001B681B181B68002BF8D1B0E70A4A1168D3

+:103C60008A68121814680F222240062AF6D81B040C

+:103C7000C02212021343CA68821808210B43802114

+:103C8000C9050B431360E1E7D85F01080800007124

+:103C90000C00007008C01040F0B5002B00D1F0BD42

+:103CA0001F00264C2568AC68241826680F24344071

+:103CB000042CF6D8EC680419214D25601F4D2C68A2

+:103CC000E468041921602968C96841180F600F2B46

+:103CD00014D91A490C68A16809180D680F212940E8

+:103CE0000629F6D8E168411886256D03154384241A

+:103CF000E4052C430C60103B9BB2E8E7002B07D196

+:103D00000E4B1B681B681B181B68002BF8D1C6E7FD

+:103D10000A490C68A16809180D680F212940062975

+:103D2000F6D81B04C02109020B43E16841181A436D

+:103D30008423DB051A430A60E2E7C046D85F010826

+:103D40000C00007010B582B004000B0011000722B7

+:103D500058680240C020800022501A699B69009276

+:103D60002000FFF793FE0C230193043B0093043BD8

+:103D700000224C212000FFF7C5FE044B1B681B6886

+:103D80001B191B685B07F8D402B010BDD85F01088F

+:103D900010B5002B01D0002900D101BE062A00D9A0

+:103DA00098E090004C4C205887468B6018004030BB

+:103DB000086154338B610A6000234B60474BCB6230

+:103DC0004023CB602C3B4B614B622D33FF33CB61E7

+:103DD000002010BD8B6018004030086160338B619B

+:103DE0000A6001234B603E4BCB624023CB60203BFB

+:103DF0004B61043B4B62E433CB610020E9E78B600D

+:103E000018004030086160338B610A6001234B6009

+:103E1000344BCB624023CB60203B4B614B62E033A1

+:103E2000CB610020D5E78B60180080300861C0337B

+:103E30008B610A6002234B602B4BCB628023CB60EB

+:103E4000403B4B61103B4B62A0239B00CB610020A9

+:103E5000BFE78B60180080300861C0338B610A6057

+:103E600002234B60214BCB628023CB60403B4B61F4

+:103E70004B62A0239B00CB610020AAE78B60180057

+:103E800080300861C0338B610A6002234B60184B9D

+:103E9000CB628023CB60403B4B61243B4B62A02331

+:103EA0009B00CB61002094E78B6018008030086194

+:103EB000C0338B610A6002234B600E4BCB628023C0

+:103EC000CB60403B4B61203B4B62A0239B00CB610E

+:103ED00000207EE708487CE760EF00107CEF0010D0

+:103EE00090EF0010B0EF0010D0EF001010F00010B5

+:103EF00050F0001090F000100B00320010B50A1EB8

+:103F00000ED000238B620B624B69002B01D1054858

+:103F100010BD0969D26A9BB2FFF710FE0020F7E7D7

+:103F20000048F5E70B003200F0B5D6464F4646464E

+:103F3000C0B581460E001700002931D0002A31D0CB

+:103F4000CA689046002A2FD0002B34D00A6AD218B3

+:103F50000A628C6A1D0014E043461B1B9A46B36834

+:103F6000191953469BB23A004846FFF7E7FDB2687D

+:103F700031004846FFF7E6FE4346E41A2D19574440

+:103F800000242B199845E7D9B362002D0DD0B168F4

+:103F90000919ABB23A004846FFF7D0FD002504E00E

+:103FA000064D02E0054D00E0044D2800E0BCBA4695

+:103FB000B146A846F0BD1D00F7E7C0460B00320031

+:103FC000F0B5DE4657464E464546E0B583B0009014

+:103FD0000E00140000295FD0002A5FD00D698B68A5

+:103FE0009846CF688B6A9A460B6ADB009946802F09

+:103FF0002DD038230193802342465146535401313A

+:104000004144BBB29B4652469B1A9BB2013B9BB2BA

+:1040100000220098FFF7B2FD019B53451AD93B1FC0

+:104020004A46120E4146CA544B461A0CFB1ECA544D

+:104030004B461A0ABB1ECA54013F4A46CA5542465D

+:1040400031000098FFF77EFE706A80081BE0702345

+:104050000193D0E742463100009B9A461800FFF7D3

+:1040600071FE5B46002241465046FFF787FDD6E7CA

+:10407000EB782370AB7863706B78A3702B78E37068

+:104080000434043501380028F2D103B0F0BCBB463B

+:10409000B246A946A046F0BD0148F6E70048F4E75D

+:1040A0000B00320010B5002B01D0002900D101BE59

+:1040B000062A00D970E09000384C205887468B6063

+:1040C00040330B610A6069234B60354BCB62402360

+:1040D000CB602C3B4B614B62002010BD8B604033AA

+:1040E0000B610A606A234B602E4BCB624023CB608E

+:1040F000203B4B614B620020EFE78B6040330B614C

+:104100000A606A234B60284BCB624023CB60203B84

+:104110004B61043B4B620020DFE78B6080330B6117

+:104120000A606B234B60214BCB628023CB60403B0A

+:104130004B614B620020D0E78B6080330B610A60DB

+:104140006B234B601A4BCB628023CB60403B4B61AF

+:10415000103B4B620020C0E78B6080330B610A602C

+:104160006B234B60134BCB628023CB60403B4B6196

+:10417000203B4B620020B0E78B6080330B610A600C

+:104180006B234B600C4BCB628023CB60403B4B617D

+:10419000243B4B620020A0E708489EE7D0F00010C7

+:1041A000ECF0001020F1001000F1001080F1001080

+:1041B00040F1001000F20010C0F100100B003200BE

+:1041C00010B50A1E0ED000238B620B624B69002BC8

+:1041D00001D1054810BD0969D26A9BB2FFF7ECFC1A

+:1041E0000020F7E70048F5E70B003200F0B5D646AF

+:1041F0004F464646C0B504009146002900D180E1F3

+:10420000002A00D17FE1CE68002E00D17DE1002B95

+:1042100005D11800E0BCBA46B146A846F0BD0A6A0E

+:10422000D01808628D6ABA480768BA68101902681F

+:104230000F2010400628F6D8F8682018C827FF0578

+:104240000760B34800680068001900680028F8D1CA

+:104250000A6990464A699446AD480768BA681019D9

+:1042600002680F2010400428F6D8F8682018A94FDB

+:104270000760A74F3868C068201842460260386857

+:10428000C0682018624602604A699446A0480768E0

+:10429000BA68101902680F2010400628F6D8F8688E

+:1042A0002018CC27FF05624617430760984800682E

+:1042B0000068201802689246002AF7D194480268E4

+:1042C0009068001907680F2038400628F6D8D06893

+:1042D0002018CA22D2050260002D48D18C480268FD

+:1042E0009068001907680F2038400428F6D8862007

+:1042F000400120580028FADBD0682018864A026066

+:10430000834A94461068C06820184A460260624694

+:104310001268D268A21813605A19964257D8721BB5

+:1043200090467B4A10688268121917680F223A403B

+:10433000062AF6D82A02C068201847461743CC221E

+:10434000D2053A4302604A689046714A1068826812

+:10435000121917680F223A40062AF6D8C268A21826

+:10436000404600061060AD1B5B195546D4E78A68CD

+:104370009046674802689068001907680F20384027

+:104380000428F6D8D0682018624A0260604A106893

+:10439000C0682018474607601068C068201805608C

+:1043A0005B4802689068001907680F2038400628AB

+:1043B000F6D8D0682018CC22D2052A43026054488F

+:1043C00000680068201800680028F8D186E78A6233

+:1043D000002B4ED18D6A002D64D10E694D694C4B76

+:1043E0001A6893681B1918680F230340042BF6D82A

+:1043F000D368E318494A1A60454A1368DB68E31832

+:104400001E601368DB68E3181D60414B1A689368EF

+:104410001B1918680F230340062BF6D8D368E3183E

+:10442000CA22D2051A604869394B1A6893681B1969

+:1044300019680F230B40062BF6D8D368E318CE2259

+:10444000D20502431A60324B1B681B68E3181868D8

+:104450000028F8D12E4B1A6893681B1919680F238E

+:104460000B40062BF6D8D368E418CA23DB0523607B

+:10447000D0E6274A10688268121916680F22324067

+:10448000062AF6D82D02C268A2182B43CC25ED05CA

+:104490002B4313601E4B1B681B68E3181B68002B23

+:1044A000F8D197E78E681A4B1A6893681B19186839

+:1044B0000F230340042BF6D8D368E318174A1A6079

+:1044C000134A1368DB68E3181E601368DB68E3189F

+:1044D0001D608D6A0E4B1A6893681B1918680F23AC

+:1044E0000340062BF6D8D368E318CE22D2052A4320

+:1044F0001A60074B1B681B68E3181B68002BF8D178

+:104500006BE7074886E6064884E6054882E6C0462B

+:10451000D85F010808000070080000710C000070EE

+:104520000B003200F0B5DE4657464E464546E0B534

+:1045300083B003000192002900D198E1002A00D144

+:1045400097E1CC688E6A0D6A6A0F9346ED00802C65

+:1045500000D171E138229446C7480768BA68D0187C

+:1045600002680F2010400628F6D8F8681818C827E7

+:10457000FF050760C04800680068C0180068002890

+:10458000F8D10A6991464A699046BB480768BA68FB

+:10459000D01802680F2010400428F6D8F8681818C0

+:1045A000B64A0260B44A92461068C06818184A4673

+:1045B000026052461068C0681818424602604A6994

+:1045C0009146AD480768BA68D01802680F201040BD

+:1045D0000628F6D8F8681818CC22D2054F4617439B

+:1045E0000760A54800680068181800680028F8D11E

+:1045F000A1480768BA68D01802680F201040062842

+:10460000F6D8F8681818CA27FF0507608A68904628

+:1046100099480768BA68D01802680F20104004282B

+:10462000F6D8F8681818954F0760934F3868C06837

+:104630001818424602603868C068181806608E482C

+:104640000768BA68D01802680F2010400628F6D80C

+:10465000F8681818CC27FF053743076086480068BC

+:104660000068181800680028F8D183480768BA68FD

+:10467000D01802680F2010400628F6D83202914662

+:10468000F8681818802290464A4647463A439146B1

+:10469000D022D20590464A4647463A430260B44586

+:1046A00000D8CCE0621F94465A46D2B29046724877

+:1046B0000668B268D01807680F2038400628F6D878

+:1046C00062461702F068181842461743D026F605CE

+:1046D00037430760221F90462A0E944666480668B4

+:1046E000B268D01807680F2038400628F6D842462E

+:1046F0001002F6689E1962461043D027FF05384322

+:104700003060E21E9046280CC2B294465A480668B1

+:10471000B268D01807680F2038400628F6D84246FD

+:104720001002F6689E1962461043D027FF053843F1

+:104730003060A21E9046280AC2B294464E480668CF

+:10474000B268D01807680F2038400628F6D84246CD

+:104750001002F6689E1962461043D027FF053843C1

+:104760003060013CEAB2944643480668B268D0180B

+:1047700007680F2038400628F6D82502F068181878

+:1047800062461543D024E405254305604E683A4847

+:104790000468A268D01805680F2028400628F6D8BB

+:1047A000E068181836060660334800680068181874

+:1047B00000680028F8D14F6A2F4C2568AA68D418E1

+:1047C00026680F243440042CF6D8EC681C192C4DB4

+:1047D0002560294D2C68E4681C19019A22602A681A

+:1047E000D2689A181760244A1468A268D21815680B

+:1047F0000F222A40062AF6D8E2689A18CA24E4054D

+:1048000014604D6A1C4A11688A68D21814680F2215

+:104810002240062AF6D8CA689A18CE21C90529432B

+:104820001160184A9A58002AFBDB03B0F0BCBB4663

+:10483000B246A946A046F0BD702294468CE64A686E

+:1048400090460D480668B268D01807680F203840B7

+:104850000628F6D8F068181842461606066006487C

+:1048600000680068181800680028F8D11AE70648A0

+:10487000DBE70548D9E7C046D85F010808000070AB

+:104880000C000070F01000000B003200C005434225

+:104890005841C0B270470000A0231B0698422AD09E

+:1048A00014D8802829D008D980235B0098422AD0C8

+:1048B0001B4B984209D01B4807E010281FD0402806

+:1048C00001D1194801E000281BD17047174B9842CD

+:1048D0001BD007D9164B98421ED0164B98421DD1BB

+:1048E0001548F2E7154B984211D0154B984211D15B

+:1048F000A420C003E9E70020E7E71248E5E71248F3

+:10490000E3E70848E1E70648DFE71048DDE7A020D5

+:10491000C003DAE70348D8E70D48D6E70148D4E7F3

+:1049200006005200FF00520002005000030000F099

+:10493000040000F0050000F003005200090000A090

+:10494000010000F00500520001005000010052007B

+:104950000200520010B50F4B1A683323D35C002BB2

+:1049600000D101BE0B4B1C68BC23E358226A94465D

+:1049700063441B68002B0BDB074B1868FFF78CFFA9

+:10498000636801229A6063689B68002BFBD110BDAD

+:104990000248FCE7D45F0108E05F01080200500014

+:1049A00010B50400FFF772FF002801D1134810BDB5

+:1049B000FBF700FE124B134A1A605C6000229A60FB

+:1049C000DA60114B1A685423D35C002B10D003F02B

+:1049D000FCFAFA21890004F031FA01000B4804F0D6

+:1049E0002DFA0B4BC1188020400009F05DFADEE77C

+:1049F00080200021400009F057FAD8E70600520055

+:104A0000E05F01080001001CD45F010860F5900020

+:104A10009808000070B504000D00FFF737FF00286C

+:104A200027D0002D27D0FBF7C5FD144B144A1A6080

+:104A300000225A609C60DD60124B1A685223D35CDE

+:104A4000002B10D003F0C1FAFA21890004F0F6F926

+:104A500001000D4804F0F2F90C4BC1188020400011

+:104A600009F022FA06E080200021400009F01CFA3B

+:104A700000E0074870BD0648FCE7C046E05F01085B

+:104A800000010005D45F0108C0EA210148260000AA

+:104A90000600520030B5134A11688B69C31ADB094E

+:104AA00049691B01C91800230360812415682C5D26

+:104AB00004192360822415682C5D04192360832463

+:104AC00015682C5D04192360802415682C5D041979

+:104AD0002360836114688422A25C801803600B60E9

+:104AE0004B6030BDD45F010810B5072900D901BE65

+:104AF0001F2314009C4300D001BE104B1B689C690F

+:104B0000001BC0095B690001181803290AD8046852

+:104B1000C9001F238B409C431F231A408A40224315

+:104B2000026010BD04394468C9001F238B409C43B8

+:104B30001F231A408A4022434260F2E7D45F0108F3

+:104B4000F8B506000C0015001F0006AB1A780729FF

+:104B500000D901BE0F232900994303D1012D01D0B3

+:104B6000092D00D101BE012F00D901BE1F23110064

+:104B7000994300D001BE21003000FFF7B5FF336834

+:104B800001210A00A24093433940A14019433160FA

+:104B9000074B1A688123D05C86193268A400723BE7

+:104BA0001900A1408A432B40A34013433360F8BD52

+:104BB000D45F0108072900D901BE012A00D901BE2E

+:104BC00001238B40002A01D1436070478360FCE7DA

+:104BD00030B50400072900D901BE0F231000984307

+:104BE00003D1012A01D0092A00D101BE8900074B57

+:104BF00018688123C05C00190468723B1D008D4059

+:104C0000AC4313408B402343036030BDD45F0108A5

+:104C100030B50300072900D901BE012A00D901BE21

+:104C2000074804688220205CC018046801231D0026

+:104C30008D40AC4313408B402343036030BDC046DE

+:104C4000D45F010830B5082900D901BE012A00D976

+:104C500001BE846901231D008D40AC4313408B408D

+:104C60002343836130BD000030B50300082900D91B

+:104C700001BE032A00D901BE49000748046880200C

+:104C8000205CC018046803231D008D40AC43134012

+:104C90008B402343036030BDD45F0108F8B5CE4696

+:104CA000474680B507000E001400002800D1B1E08F

+:104CB000002A00D1B0E0072900D901BE2368012BEA

+:104CC00000D901BE63680F221900914303D1012B63

+:104CD00001D0092B00D101BE237A1F22934300D0BB

+:104CE00001BEE368032B00D901BE2369012B00D963

+:104CF00001BE6369012B00D901BE236A012B00D9D3

+:104D000001BE636A012B00D901BEA36A012B00D941

+:104D100001BEE36A032B00D901BE236B072B00D928

+:104D200001BEE369032B00D901BEA369012B00D9A1

+:104D300001BE01252B00B3407000103003229146C4

+:104D4000110081400B439C46344B984683234146D7

+:104D50000968C95CC9190B68624693439C46A369FC

+:104D60002B40B340624613439C46E2694B461340D6

+:104D70001A008240634613430B60626831003800BA

+:104D8000FFF726FF227A31003800FFF7ADFEE26818

+:104D900031003800FFF768FF226931003800FFF763

+:104DA00051FF626931003800FFF732FF43461A684D

+:104DB0008423D25CBA1810687B3398469843236AE0

+:104DC0001D40636A5B009C46022361460B401D4305

+:104DD000A36A9B009C46042361460B402B43E16A77

+:104DE000C90018250D402B43216B4D014146294038

+:104DF0000B43B100FE25AD0029408B4003431360F7

+:104E0000226831003800FFF7D5FE0020C0BCB9464B

+:104E1000B046F8BD0248F9E70148F7E7D45F01085A

+:104E200001005A00084B1A68BC23D3581B181B6892

+:104E3000002B07DA0B0C00D001BE0904090C4160FD

+:104E4000002070470148FCE7D45F010801008A0098

+:104E50000368002B08DAC2600B0C00D001BE090405

+:104E6000090C8160002070470048FCE701008A00BF

+:104E700000290BD0074B1A68BC23D3581B181B689A

+:104E8000002B05DAC3680B600020704701BEF1E714

+:104E90000148FAE7D45F010801008A00034B1B6850

+:104EA000002B00D07047014B1860FBE7046001083D

+:104EB00070B5040023480068002840D021480568E8

+:104EC0002C2060432818FF2425001D4005601E0A81

+:104ED000344044601B0C83601B4B1C683323E35C31

+:104EE0009D4200D301BE184B1C68BA23E35A6B43A2

+:104EF000256AAC466344036143683425645DA3427C

+:104F000000D301BE104C2468246A80335B01E4188E

+:104F1000446183681D0C00D001BE1D0C00D001BE91

+:104F20001B041D0C2B43A360C2610162002383613B

+:104F3000049B002B02D000229B5E838170BD01BECA

+:104F4000BCE7C04604600108D45F0108F0B58FB02B

+:104F5000041E44D06368032B00D901BEE36A002B12

+:104F60003FD0236B002B3ED007AA1300210061C95C

+:104F700061C321C921C302AE230014333100A1CB88

+:104F8000A1C121CB21C10821535E0CAD2B80174B51

+:104F90001B681B8F079989B25B186B80089B0D9368

+:104FA0000B9B0A980095A26AE16AFFF781FF069BB6

+:104FB0000598002200920021FFF77AFF216B28005C

+:104FC00003F078F80022AB5E002B06DB1F221340B3

+:104FD0001E3A9A401300064A13600FB0F0BD01BE9E

+:104FE000B8E701BEBDE701BEBEE7C046D45F010819

+:104FF00000E100E0F0B504000800002A2DD01C49B3

+:10500000096800292BD01A4909682C256C430C1912

+:105010004543491901263500486885402D046068DC

+:1050200086402769002F1CD0886900281BD13F6863

+:10503000002F1ADA17683F043F0C17603D431560D4

+:105040002569EA6001228A614B622369320C00D033

+:1050500001BE3604360C9E60F0BD01BECFE701BE36

+:10506000D1E70448F8E70448F6E70348F4E7C04608

+:105070000460010804028A0007028A0070B582B049

+:1050800004000023019300282BD02369002B2AD091

+:105090006369002B29D0236A002B28D06369DD685F

+:1050A0002A0C0BD012041A601B682069204B1A6866

+:1050B000BC23D3581B181B68002B1ADB2D042A0CA9

+:1050C000002D0AD063691A601B68636A002B2AD01E

+:1050D0009847002363620023A36163691B6802B0E1

+:1050E00070BD01BED1E701BED2E701BED3E701BE6C

+:1050F000D4E701A9FFF7BCFE00280ED10198026891

+:10510000160CFF231340E2699A4207D99B00226ADA

+:10511000D358002B02D0984700E0002631002069C8

+:10512000FFF780FECAE7A36A002BD4D09847D2E7E6

+:10513000D45F010810B50200064B1B68002B07D096

+:10514000044B18682C235343C018FFF797FF10BD7A

+:1051500001BEF5E70460010870B50C001D4B1A682C

+:105160003323D35C834230D9002930D00B68DB066F

+:1051700001D019482AE03323D35C984200D301BE02

+:10518000144B1B681D6ABA229B5A58432D18134EA4

+:1051900035602368DA080021606805F022FA0021F2

+:1051A0002800FFF73FFE306822000021FFF750FE85

+:1051B000002801D00A4809E0084B18680021FFF7D1

+:1051C00031FE002802D0064800E0034870BD0248C6

+:1051D000FCE7C046D45F010803018A0008600108AB

+:1051E00001018A0010B50B00002A05D0002A1DD04D

+:1051F000002B15D10E4810BD0029F7D10D4A1168BA

+:1052000033228A5C904200D301BE0A4A11680A6ABE

+:10521000BA24095B4843121807490A601800EAE7F4

+:1052200006490B604A60FFF797FFE4E70048E2E7B2

+:1052300003018A00D45F01080860010830070008F4

+:10524000F0B5C64600B50C00194B1B68DE68336824

+:1052500083422BD947091F23184001258540002987

+:1052600018D000239846124B18680368002B17DAF1

+:105270007368BF00DF193B681D420FD0AB433B6032

+:1052800000250021FFF7CEFD002C0BD0280080BCAC

+:10529000B846F0BDFBF781F98046E4E7054DF0E73D

+:1052A000054DF1E74046FBF77CF9EFE7034DEDE7ED

+:1052B00008600108020188000301880004018A00D7

+:1052C0000A4B1B68DB681A6882420BD941091F220E

+:1052D00010401E3A8240586889000B581A4203D089

+:1052E000034800E0034870470348FCE708600108F2

+:1052F0000101880004018A0000018800074B1B6837

+:105300009B6CC340DB0700D401BE044B1B681B69C8

+:1053100010308002C3580F2018407047D45F010836

+:1053200003681B050CD5802282239B00C358DB0534

+:10533000DB0D934206D090239B00C15001207047A3

+:105340004022F1E70020FAE7F0B5002800D16CE137

+:10535000002900D16BE10B78022B00D901BE4B7BF9

+:10536000023BDBB2062B00D901BE8B7B002B04D0A5

+:10537000022B02D0032B00D001BE2123CB5C012BDA

+:1053800000D901BE2823CB5C012B00D901BE0B78CC

+:10539000012B07D98B7F002B09D04B68013B062BD3

+:1053A00005D903E04B68083B082B00D901BE8B6888

+:1053B000053B042B00D901BE4B69FF2B00D901BE70

+:1053C0008B69FF2B00D901BE8B7C002B06D00B789C

+:1053D000002B02D18B68092B74D001BE964B4C6B0D

+:1053E0001C4200D001BE954BCC6B1C4200D001BECC

+:1053F0000B78022B6AD04B685D1E0B7F002B6AD0A6

+:1054000080235B028C68082C67D880242401234306

+:105410000F242C4023438024A404234303600C6BFB

+:1054200003681B055BD580239C4200D301BE8C6BB7

+:1054300003681B0555D580239C4200D301BE4C6AEE

+:1054400003681B054FD580239C4200D301BE0B7817

+:105450001B06C024A404234003644B7F002B44D0CC

+:1054600040238C7C002C42D08024E40023430C7C1D

+:10547000002C3ED08024640023434C7C002C3AD086

+:105480008024A4002343CC6A013C2404F0252D038E

+:105490002C4023434D7B013D07242C4023438D7B2F

+:1054A0002D0130242C40234383640B7B002B24D01C

+:1054B00080246400CB7B002B21D10B78022B46D0BB

+:1054C00000231EE08B7B002B88D086E78B7F002B90

+:1054D00091D1002591E7002394E7002497E740232A

+:1054E000A2E74023A8E74023AEE70023B9E7002462

+:1054F000BCE70024C0E70024C4E70024DAE78023E7

+:105500009B001C438B685D1E0F231D402C43C0264F

+:10551000B6008451FF244D692C408D692D04FF276E

+:105520003F043D402C43C425AD004451CC6A85590D

+:105530002B4003339C4201D3102C00D901BECB7FFA

+:10554000002B07D00B78012B5FD0002503E08023D0

+:105550009B00D6E700254C7B013C072323402B43CF

+:105560008D7B2D0130242C40234343640B7B002B87

+:105570004ED080256D008B685C1E0F2323402B438B

+:105580000C78012C46D0002423438024A40003512E

+:10559000FF230C6B2340C124A40003512023CB5CC8

+:1055A000002B3AD080239B0421240C5D012C36D0A3

+:1055B0000024234328240C5D012C33D000242343F2

+:1055C000FF244D6A25402B4303658B6B1C408123D0

+:1055D0009B00C4501A4B4C6B23401A4C03511A4B7E

+:1055E000CC6B2340194C0351002A22D00023536076

+:1055F00013609360D3601362D3625363897F303347

+:10560000D154134B93630020F0BD80256D00A2E7B9

+:105610000025B0E780246402B6E70023C4E78024B5

+:105620006404C6E780246402C9E70A48ECE7094835

+:10563000EAE70020E8E7C04692F4FFFF8CF8FFFF9E

+:105640006D0B0000C80F000073070000880F0000FA

+:10565000EFCDAB000160AA00114B03600F3B036468

+:10566000002383640822FF32C021890042500431A4

+:1056700043500C31435043641139FF394250FD32DD

+:1056800083500365074A8350074A8350074A835073

+:10569000074A8350074A8350074A83507047C046E1

+:1056A0000F000003C80E0000880E0000C80F0000A5

+:1056B000880F0000080F0000480F000003685B001F

+:1056C0005B080360002904D000234B600B600B6271

+:1056D000CB627047F0B5C64600B58C680A68842373

+:1056E000C3580F252B40073DED1A2300AC4226D9A5

+:1056F0002B0024E055782D0216783543D6783606EF

+:1057000097783F043E4335439827C55155792D027C

+:1057100016793543A846D679360695792D042E4359

+:1057200045463543C551D218E41A8423C3580F2582

+:105730002B40073DED1A2300AC4200D92B00002B73

+:1057400000D183E0082BD5D0012B24D0022B26D00A

+:10575000032B2BD0042B33D0052B3ED0062B4CD063

+:10576000072B5DD053781B0215782B43D5782D0677

+:105770009678360435432B439826835153791B0280

+:1057800015792B43D5792D0697793F043D432B435B

+:1057900083510823C7E7167890254651C3E755780B

+:1057A0002D021678354394268551BCE755782D0295

+:1057B0001678354394268551967890254651B2E760

+:1057C00055782D0216783543D678360697783F04FB

+:1057D0003E43354398268551A5E755782D02167826

+:1057E0003543D678360697783F043E4335439826AE

+:1057F000855116799025465195E755782D021678F2

+:105800003543D678360697783F043E43354398268D

+:10581000855155792D02167935439426855182E7B5

+:1058200055782D0216783543D678360697783F049A

+:105830003E4335439826855155792D0216793543D7

+:10584000942685519679902546516CE70A608C60C4

+:10585000002C0CD1F924E400035901229343035195

+:105860008A61CB69002B02D0CB690120984780BCAC

+:10587000B846F0BDF8B50E004C69CA68C423C358D9

+:105880000F21194023008C421CD90B001AE0D825A7

+:10589000415911700F0A57700F0C9770090ED17093

+:1058A00045591571290A5171290C91712D0ED57127

+:1058B000D218E41AC423C3580F251D402300AC425C

+:1058C00000D92B00002B6DD0082BE0D0012B1ED06F

+:1058D000022B20D0032B24D0042B2BD0052B33D02C

+:1058E000062B3ED0072B4BD0D821435813701D0AEE

+:1058F00055701D0C95701B0ED37043581371190A07

+:105900005171190C91711B0ED3710823D0E7D0216E

+:1059100041581170CCE7D42141581170090A5170D7

+:10592000C6E7D42141581170090A5170D02141585D

+:105930009170BDE7D821415811700D0A55700D0CBA

+:105940009570090ED170B3E7D821415811700D0A36

+:1059500055700D0C9570090ED170D0214158117100

+:10596000A6E7D821415811700D0A55700D0C95709D

+:10597000090ED170D42141581171090A517197E76C

+:10598000D821415811700D0A55700D0C9570090EF3

+:10599000D170D42141581171090A5171D021415857

+:1059A000917185E7F2607461002C0DD1F922D2006B

+:1059B000835802218B4383500323B361336A002B46

+:1059C00002D0336A032098477461F8BD10B50028EF

+:1059D00032D0002932D0002B32D05A62F922D200C4

+:1059E00083580324A34383500B78012B00D901BEB5

+:1059F0000B7A032B00D901BE4B68072B00D901BEDF

+:105A00000B7B012B00D901BE01230A6813408A6871

+:105A10001203C024A401224013434A681204E02464

+:105A2000E40222401343CA681206802149040A4056

+:105A300013430360002010BD0248FCE70148FAE769

+:105A40000048F8E70400B2004B1EDBB2012B04D97A

+:105A5000042902D0082900D001BE032A00D901BEC2

+:105A6000042920D008D801290DD002291AD1882371

+:105A70001B019C4660440AE0082913D198231B01AE

+:105A80009C46604403E080231B019C466044002840

+:105A900008D0036806490B401204C02189020A405D

+:105AA0001A430260704790231B019C466044EEE756

+:105AB000FFFFFCFFF8B5DE4657464E464546E0B5CB

+:105AC000070008009A460AAB40CB1B789B460CABFC

+:105AD0001B78111FC9B2FA2900D801BE59460439F2

+:105AE000C9B2FA2900D801BE591EC9B2012904D988

+:105AF000042B02D0082B00D001BE002E02D051464C

+:105B000000291CD0002E02D05946FF2919D01B02B3

+:105B1000F02109010B4099460E9B5D6A1104C022D9

+:105B2000920211404B4619430143002E0BD10D9BAD

+:105B3000DA07120C11433965002400200CE001BE85

+:105B4000E0E701BEE3E70022F4E703433B650134ED

+:105B5000E4B2002D1FD128002100B44225D2164BFB

+:105B6000984222D07B6C0422100018401A42F0D1D7

+:105B700053465B5C4A46134398465A461204C02378

+:105B80009B021A40434613430131B142DDD30D9AC3

+:105B9000D007000CD9E7012002F008FB013D002DE1

+:105BA00001D00020D8E70448D6E7F0BCBB46B24697

+:105BB000A946A046F8BDC0460200B20070B58AB042

+:105BC0000500181FC0B2FA2800D801BE002A34D040

+:105BD000686C042634000440064231D11B04C02006

+:105BE00080020340501E0004000C03438020C002CA

+:105BF00003432B65002925D00E9B5E6A009102921B

+:105C00000023079302330693200006E0012002F0F0

+:105C1000CDFA013E002E0ED02000069B022B0DD1A6

+:105C2000094B98420AD069462800FFF753FD002E21

+:105C3000ECD13000F1E70448EFE704480AB070BD4A

+:105C40000348FBE72000F9E70200B2000400B200BD

+:105C50000100B200F0B50400069D181FC0B2FA287A

+:105C600000D801BE002A21D0666C042738003040DD

+:105C700037421DD11B04C026B6023340561E3604DF

+:105C8000360C3343802636033343236500290ED078

+:105C9000E9602A616A61059B2B620423AB61F922EA

+:105CA000D200A35802210B43A35000E00148F0BDED

+:105CB0000148FCE70400B2000100B20070B58AB0F0

+:105CC0000500181FC0B2FA2800D801BE002A34D03F

+:105CD000686C042634000440064231D11B04C02005

+:105CE00080020340501E0004000C03438020000388

+:105CF00003432B65002925D00E9B5E6A0391059214

+:105D00000023089304330693200006E0012002F0EC

+:105D10004DFA013E002E0ED02000069B042B0DD123

+:105D2000094B98420AD069462800FFF7A3FD002ED0

+:105D3000ECD13000F1E70448EFE704480AB070BD49

+:105D40000348FBE72000F9E70200B2000400B200BC

+:105D50000100B20010B5030000290DD0426C0424EC

+:105D600020001040144209D101390904090CC02255

+:105D700012031143196510BD0148FCE70148FAE719

+:105D80000400B2000100B20000230B604B608B6086

+:105D9000CB600B614B618B61026880231B06134350

+:105DA0000360704770B58D69AA682B6AFF26CC68BE

+:105DB000B44384600C696442B443C4602D68013DFF

+:105DC00003242C404969002901D080214900214346

+:105DD0000162002A33D01468611C67D0FF21214082

+:105DE00014792404C025AD022C40214380242406CC

+:105DF0002143016451790904C024A4022140416473

+:105E00009468611C54D0FF212140147B2404C025D8

+:105E1000AD022C4021438024240621438164116972

+:105E2000002905D001391F240C4080210906214397

+:105E3000C164127D1204C02189020A400265002B50

+:105E400033D019684A1C35D0FF220A401979090459

+:105E5000C024A40221400A43802109060A430266A5

+:105E60005A791204C02189020A40426699684A1C84

+:105E700022D0FF220A40197B0904C024A402214039

+:105E80000A43802109060A4382661A69002A05D05E

+:105E9000013A1F211140802212060A43C2661B7D6F

+:105EA0001B04C02292021340036770BD0021A0E7CB

+:105EB0000021B3E70022D2E70022E5E770B5050034

+:105EC00008220026002000E008328B790133DB0035

+:105ED000934216D3FF232B408C5CA342F4D12C0AAF

+:105EE000FF2323408C18E479A342EDD18B185B7813

+:105EF000B342E9D38C18A478012CE5D11E00100020

+:105F0000E2E770BD70B50C0015001E00FFF7D6FF6C

+:105F100000280BD021180B79AB704B796B708B7903

+:105F20002B70CB789B003360002070BD0048FCE7ED

+:105F30008000B2008278520803231340012B07D05F

+:105F4000022B07D0002B01D0002070470320FCE774

+:105F50000420FAE70420F8E70200407900021379F0

+:105F60001843D3791B069279120413431843002B6C

+:105F700002DB0130C0087047033880231B0618433A

+:105F8000F9E7437A0B6000230B7102334B71037AFC

+:105F90005B0908D1013B8B60027A1F2313400B6120

+:105FA00002230B757047FF238B60FD3B0B73F3E7F8

+:105FB000C37A0B6000230B714B71837A5B0908D1A4

+:105FC000013B8B60827A1F2313400B6102230B7508

+:105FD0007047FF238B6000230B73F3E7C37B0B60D9

+:105FE00000230B7101334B71837B5B0908D1013BAB

+:105FF0008B60827B1F2313400B6101230B7570475D

+:10600000FF238B60FE3B0B73F3E7437B0B600023A6

+:106010000B714B71037B5B0908D1013B8B60027BE9

+:106020001F2313400B6101230B757047FF238B6007

+:1060300000230B73F3E703230B6000230B714B71F9

+:10604000012252428A600B610B75704710B50B003C

+:106050001100012B0DD0032B09D00123002B12D0EE

+:1060600083789A0607D45B0609D4FF2010BD00236D

+:10607000F4E70023F2E7FFF784FF0520F6E7FFF7D8

+:1060800097FF0420F2E78378DA0605D4DB0707D40C

+:10609000FFF7D1FF0120E9E7FFF7A0FF0320E5E7C5

+:1060A000FFF7B3FF0220E1E70068052907D8890060

+:1060B0000D4B5B589F46830601D5EC231360704758

+:1060C000C306FCD56C231360F9E70307F7D5BC239F

+:1060D0001360F4E74307F2D53C231360EFE783072F

+:1060E000EDD50C231360EAE740F200102823C35CCF

+:1060F0001B09012098407047F0B5C64600B54F6AAD

+:106100001B38430898460F263E400021002411E02A

+:10611000012800D11024701C013363434D00AC46AC

+:106120008C446546AD00AC46944443435B006046F6

+:1061300083600131032917D8CB005B1A3800D8409F

+:106140000509430A032018401F232B40022809D0C9

+:1061500003D80028DCD10124DDE70328DBD1FA24B1

+:10616000A400D8E78024D6E7434658004044850081

+:106170000C3D5219906880BCB846F0BD10B5446A19

+:10618000816A4A0F032313400A0E1F2111400F2278

+:106190002240022B11D00BD8002B11D0012B11D192

+:1061A00080204000531C013148435843400010BD3B

+:1061B000032B09D1FA200002F4E7FA200001F1E7ED

+:1061C0001020EFE70020EDE70020EBE7836A190AD3

+:1061D0001F2001400F221A409B0406D408230132DD

+:1061E000481C58435043400070474023F7E70623BC

+:1061F00003600023037170470423036000230371CD

+:10620000704702230360002303714371012252424D

+:1062100082600373036103757047122303600023D8

+:10622000037143710122524282600373036103755B

+:1062300070473423036000230371437101225242EB

+:106240008260037303610233037570473E2303606A

+:10625000002202713C3B437101214942816003737A

+:1062600002610375704710B50368042922D009D86C

+:106270000139C9B2022904D85B062BD51000FFF7FB

+:10628000CCFF10BD0529FCD1D90507D4190609D4C6

+:106290005B060BD51000FFF7C0FFF2E71000FFF719

+:1062A000D5FFEEE71000FFF7C4FFEAE71000FFF7A5

+:1062B000A8FFE6E7190605D45B0607D51000FFF72F

+:1062C000ACFFDEE71000FFF7B4FFDAE71000FFF7DE

+:1062D00098FFD6E71000FFF794FFD2E7052303608D

+:1062E0000023037170470000C36A002B10D0036BBA

+:1062F000002B0FD00023026B13713A33CA5C1209D2

+:10630000333B1340052B0ED89B00154AD3589F46AC

+:1063100001BEECE701BEEDE701235B42C363026B04

+:106320001360C26A136070470223C363036B0122C8

+:106330001A60C36A34321A60F5E74023C363036B03

+:1063400001221A60C36A04321A60ECE78023C36337

+:10635000036B3E221A60C36A01321A60E3E7C0464B

+:1063600058F2001060230360002303717047F0B5FA

+:1063700005000368042B07D01D200B5CFF2B2BD1DD

+:10638000222828D80230F8E74369012040421860EB

+:106390004B785B080F261E400023042B07D80124EE

+:1063A0009C4030002040844201D00133F5E7032BAC

+:1063B0001FD81F1D0020032807D8061D44002418DD

+:1063C000A4008E5D16550130F5E76A69C95D11605C

+:1063D00058001D3005E00020002802D06B690A5CDF

+:1063E0001A60002806D000236A6913716A69537124

+:1063F00003E000206B69FF221A71F0BD70B5002226

+:1064000000240FE023001C33C65C53009B189B0044

+:10641000CB180125B5405D6025001D35455D1D701B

+:1064200002340132032AEDD970BD10B5013B9C182E

+:106430000855000A002BF9D110BD10B50400002347

+:10644000002003E00002E25C104301338B42F9D3E9

+:1064500010BD000030B587B004001D004B062AD4E3

+:106460001648CB0725D58B0710D5D368002B0DD048

+:106470001A7919780A9B0493012303930295FE333A

+:106480000193002300932000FFF714FB0B4B98426D

+:1064900001D000280DD10A9B049301230393029598

+:1064A000FE330193002300930022B7212000FFF761

+:1064B00001FB07B030BD0020D3E7C0468000B2002A

+:1064C00030B587B004000800150019000C9B049338

+:1064D00000230393029001930B9B00930A9B0022DD

+:1064E0002000FFF7E7FA002801D007B030BD0C9B71

+:1064F00000930023012229002000FFF7DFFBF4E7CF

+:10650000F0B5DE4657464E464546E0B589B00590A3

+:106510000D0090469B4612AB1B789A4600230693CB

+:106520005D4E002400273000139B99462DE0032088

+:1065300000E00420002108E00020FBE72218521AA6

+:10654000AA18D67806AA565401318842F6D84A4687

+:106550000292019006AA0092172202A98C46624478

+:1065600051460598FFF7ACFF00280BD17F00FBB226

+:10657000172202A98C4662441778049A17407A1EA3

+:1065800097411F430834444531D82B5D9B0716D4EF

+:10659000631CEB5CE21CAA5C0492172202A98C46E5

+:1065A0006244002111702A1992789209012ABED002

+:1065B000022ABED0002ABFD05A461068BAE70600A9

+:1065C000002E16D0002E5CD12B199B780133DBB244

+:1065D00004935A46D364012B5BD93700B24600239B

+:1065E00005961E00A8462500149B994617E02B4EE1

+:1065F000E6E742462B195B78BB42E3D02B199B7828

+:1066000002339B00E418A242F4D2244EDAE7E3609E

+:106610005168380002F012FC60600136F6B2049B4B

+:106620009E422DD2BA440435434658195B5D0F2172

+:10663000194001220023114207D15200D2B2013386

+:10664000DBB2042BF7D9154A059207683F0A0137D8

+:106650003F02B2005946096D8C58524622605A00DA

+:10666000D3189B004A46D2184946CB5CA360936876

+:1066700023615368BB42CAD9E76001236360CCE75A

+:10668000059E300009B0F0BCBB46B246A946A04604

+:10669000F0BD014EF5E7C0460600B2000700B200AB

+:1066A000F0B587B006000D0010000E9C0A7909783D

+:1066B00004940027039702936B79019303230093BB

+:1066C00003003000FFF7F6F9002801D007B0F0BD55

+:1066D00029693000FFF73EFB0028F7D12B7D01949C

+:1066E000002200920C9A0D993000FFF7B3FA061EB3

+:1066F000ECD1656A06E0012001F058FD013D002D56

+:106700000AD03000A369032BE0D0044B9842DDD0BF

+:10671000002DF0D12800F5E70048F3E70200B200B1

+:1067200010B5002134E00B001033DB0100221A50B9

+:10673000CB01C318184C1C192260184C1C1922607C

+:10674000822424011C192260842424011C19226043

+:10675000134C1C192260134C1C192260124C1C197A

+:106760002260852424011C192260862424011C191E

+:1067700022600E4C1C1922600D4C1C1922600D4C1D

+:106780001C19226087242401A44663441A60013145

+:106790000329C8D910BDC046080800000C08000035

+:1067A00044080000480800004C080000640800008D

+:1067B000680800006C08000010B586B00B001400DB

+:1067C0008A69D16800290ED00A79097804940124D5

+:1067D00003941B780293FF23019300230093FFF798

+:1067E00069F906B010BD0148FBE7C0468000B20061

+:1067F00030B587B004000800150019000A9B049307

+:106800000023039302780292FF2201920093002258

+:106810002000FFF74FF9002801D007B030BD0A9BD8

+:1068200000930023012229002000FFF747FAF4E734

+:1068300010B584B00F236B4401241C708C69A36ACB

+:10684000002B0DD01B7800920F226A44FFF7D0FF77

+:10685000002805D1A36B0F226A4411780B401370F6

+:106860000F236B441878431E9841C0B204B010BD8A

+:10687000F0B5002808D085696B6893421DD92E6D4C

+:10688000002E03D0002004E001BEF4E70C4813E022

+:106890000130EB6C83420ED98300F458E3686768DB

+:1068A0007B432768BC466344BA42F1D39A42EFD295

+:1068B0000C60002000E00248F0BD0248FCE7C04642

+:1068C0000600B2000400B200F0B58BB006900C00D8

+:1068D00015000793002928D0002D30D0A6697769CC

+:1068E0000023099331682800FFF7A7FD020009A9DA

+:1068F0002000FFF7BDFF002F1BD03A79FF2A1AD0E6

+:10690000104B984219D0002811D1099B197A079B86

+:106910000493012303932378029301923368009335

+:106920002B000698FFF7C6F80AE001BED4E73978D5

+:10693000EDE7054804E0044802E0034800E00148B0

+:106940000BB0F0BD0400B2008000B200F0B5DE462E

+:1069500057464E464546E0B5C9B005000C00160046

+:106960009946002913D02EAAAE4B19881180997828

+:1069700091702DAA19881180997891702CAA198884

+:1069800011809B789370636B9846002305E001BEED

+:10699000E9E72FA90022CA540133632BF9D94A46EB

+:1069A00031002800FFF750F84346002B13D0529BCC

+:1069B00002932FAB01933823009333002EAA414654

+:1069C0002800FFF76DFE071E06D12FAB9B79062B23

+:1069D00002D9954F07E0944F002F04D12FAB1B78BD

+:1069E000532B08D0904F380049B0F0BCBB46B2469C

+:1069F000A946A046F0BD2FAB5B78462B01D08A4F4D

+:106A0000F1E72FAB9B78442B01D0874FEBE72FABFF

+:106A1000DB78502B01D0844FE5E72FAB1B79052B9A

+:106A200000D8FCE02FAB5B79012B01D07E4FDAE779

+:106A3000049704AB2DAA2FA97C48FFF763FA0597AA

+:106A400005AB2CAA2FA97A48FFF75CFA794B98423C

+:106A500000D1A0E000230693FF2006AB2EAA2FA9A9

+:106A60000002FFF74FFA071EBDD1A368002B00D12B

+:106A700095E0E368002B00D193E02369002B00D15F

+:106A800091E06369002B00D18FE0E369002B00D116

+:106A90008DE0236A002B00D18BE0A36A002B00D18C

+:106AA00089E0529B02932FAB9A460193069B009379

+:106AB00033002EAA41462800FFF7F2FD070020A967

+:106AC0005046FFF79BFC5046FFF734FA20605046D3

+:106AD000FFF742FA60605046FFF708FB6062E0682B

+:106AE000FFF785FB2069FFF787FB0123A363A06AFB

+:106AF000FFF7F4FB51462000FFF7F6FBE069FFF7D4

+:106B000031FC5046FFF73AFB60645046FFF75EFBEE

+:106B1000A064A3689B461A0049465046FFF796FAC0

+:106B200081462368042B48D0206AFFF76AFB20AA1D

+:106B30002FA92000FFF71BFC002809D0431E2FA916

+:106B4000CA5C01239340A36120AAFFF7D5FA206411

+:106B5000236D002B00D146E7529B02932FAB01938C

+:106B6000059B009333002CAA41462800FFF798FDAF

+:106B7000071E00D037E720AB0293529B019300968B

+:106B80002300059A2FA92800FFF7BAFC2A4B984248

+:106B900041D0070027E70023E36423655AE701BEDD

+:106BA00067E701BE69E701BE6BE701BE6DE701BEA5

+:106BB0006FE701BE71E701BE73E752463833D15C1F

+:106BC000529B0093330022002800FFF743FC071E6E

+:106BD00003D0002F0FD00120B0E7529B029307ABE8

+:106BE0000193049B009333002DAA41462800FFF730

+:106BF00057FD0700EDE75A46494607A8FFF754FA44

+:106C0000226A494607A8FFF72EFB20AA07A9200001

+:106C1000FFF7ADFB90E70023E3642365E3E6024F53

+:106C2000E1E6C04670F200100500B20084FF0000EB

+:106C300081FF00008000B2000600B200F0B5DE4621

+:106C400057464E464546E0B583B0061E904600D1F5

+:106C5000ACE0002900D1B1E04F68002F00D1AFE0D7

+:106C6000002A00D1AEE00B689946002B03D0002526

+:106C700000239A465DE0544899E001BE70E0524816

+:106C800007E0082B04D198231B019B46B3440CE07A

+:106C90004D485346002B00D189E0B2200004184330

+:106CA00085E080231B019B46B3445B46002B00D14B

+:106CB0007AE01B68454A1340227A1204C0218902F7

+:106CC0000A4013435A4613606368042210001840B8

+:106CD0001A4257D1A3691B68013B032B00D901BE9F

+:106CE000002825D163689B0722D52169E06802F05E

+:106CF0002BF9002900D001BE236980225202934261

+:106D000002D35A1E1A4200D001BE21005846FFF796

+:106D100049F80223FF3362681340227A1204C0212B

+:106D200089020A4013438022120613435A46136015

+:106D30000135A94536D9AB00FC58002CF8D0227893

+:106D4000531EDBB2012B04D9042A02D0082A00D03A

+:106D500001BE237A032B00D901BEA369002B8CD07E

+:106D60002378042B09D08CD8012B9AD0022B86D102

+:106D700088231B019B46B34497E790231B019B4646

+:106D8000B34492E7237A2278A1694046009030000C

+:106D9000FFF7DCFD00289DD00823AB4052461A4384

+:106DA000924697E7002074E7074872E7064803B069

+:106DB000F0BCBB46B246A946A046F0BD0248F6E785

+:106DC0000148F4E70048F2E70400B200FFFFFCFFCF

+:106DD000F0B5D6464F464646C0B507008846140073

+:106DE00099469608194B9A4203D8002E08D10126DD

+:106DF00006E0174E04E0A41B00281CD0002C1AD07B

+:106E0000FA218900300002F019F88246FA2189003F

+:106E1000300002F099F88DB2504601F0D1F9280007

+:106E200001F0D2F94A4641463800FFF701FDB4426D

+:106E3000E1D80024E0E7002805D10020E0BCBA46F4

+:106E4000B146A846F0BD0348F8E7C04603093D0037

+:106E500040420F000200B200F0B5DE4657464E46F3

+:106E60004546E0B589B082460F0090469946129C8F

+:106E7000139B9B460023079300290BD04B46002B06

+:106E80000AD0BA69956843461B195268934205D8DF

+:106E90002D4817E001BEF1E701BEF2E72A4809B02C

+:106EA000F0BCBB46B246A946A046F0BD002802D1C0

+:106EB000296900293AD100283CD00028EFD1A41B31

+:106EC000B044B144002CEAD0260080235B029C42EF

+:106ED00000D91E00BB691B68002207A94046FFF7C6

+:106EE000A4FABB692A7929785846049000200390B7

+:106EF00038780290687901901B68009307AB504680

+:106F0000FEF7D8FD0028D1D1A9684B1CCED02A7B32

+:106F1000C9B25B4604930023039338780290FF20A4

+:106F2000019000935046FEF7C5FDBFE75046FEF7BF

+:106F300011FFC0E72B7D5A46009232004946504669

+:106F4000FEF7BCFEB9E7C0460400B200F0B5DE466D

+:106F500057464E464546E0B589B082460F001600BA

+:106F60009846129D00230793002910D04346002B1A

+:106F70000FD0BA69536A9946136A9B4673195268CF

+:106F8000934208D83F483B004F46994618E001BE5F

+:106F9000ECE701BEEDE73B4809B0F0BCBB46B246AA

+:106FA000A946A046F0BD2C00139A49465046FFF76B

+:106FB00003FC00280FD00028EED1A04436192D1B69

+:106FC000002DE9D03900300001F0BEFF6B18BB4244

+:106FD000E9D37C1AE8E74B469B691B68002207A9A6

+:106FE0003000FFF722FA4B469B695A461279594600

+:106FF0000978139804900020039048460078029086

+:107000005846407901901B68009307AB5046FEF745

+:1070100051FD002803D15B4699684B1C12D1002812

+:1070200003D15B46196900291DD100281FD0002813

+:10703000C1D14B469B699A6C139B49465046FFF75A

+:10704000C7FEB8E75B461A7BC9B2139B04930023C3

+:107050000393484600780290FF2001900093504629

+:10706000FEF728FDDBE75046FEF774FEDDE75B46E2

+:107070001B7D139A0092220041465046FEF79EFD6A

+:10708000D5E7C0460400B200F0B5DE4657464E468E

+:107090004546E0B587B007000E0015000093109A32

+:1070A0009046EB18013B01930023059304930029BC

+:1070B00048D0B3699B469B699A465B461B6C02931A

+:1070C0005B465B68019A93423ED80023994603933E

+:1070D000504C504B9C4200D194E04B46E81A51462C

+:1070E00001F032FF002900D08BE0039B019A93420C

+:1070F00044D3484B9C4200D184E0019B4A46981AF5

+:107100000130514601F020FF002943D1009B002BA4

+:1071100078D02A0004A93000FFF7AAFB041E6AD128

+:10712000049A13690293D3689A46116853685246C9

+:1071300053435B18013B9946019B4B452ED2019B63

+:1071400099462BE001BEB4E72A0004A93000FFF7FE

+:107150008FFB041E0AD1049B1A689146DA68924696

+:107160005B6853434B44013B039302E00023994681

+:107170000393009B9A45ACD9264CAAE704A930009A

+:10718000FFF776FB041EB4D1049B1A689146DB68B6

+:107190009A46AEE71F4C35E0002CB7D14D45B5D22D

+:1071A000424631003800FFF707FB041EF4D15B466E

+:1071B0001B68002205A92800FFF737F9434605AAF6

+:1071C00031003800FFF780FB041EE5D1029B5A0115

+:1071D000D21A92009C466244D200434631003800E5

+:1071E000FFF7F6FD009B534508D9554452469B1ABC

+:1071F00000930400D0E7019B9946CFE70094040078

+:1072000084E7044C200007B0F0BCBB46B246A94658

+:10721000A046F0BD0400B20010B5002814D1072923

+:107220002ED8FF2A2ED81A4B186883687824005B62

+:107230001B188900C9180B68164803401206120C67

+:107240001A430A60002002E0012801D0124810BD54

+:107250000F2919D880235B029A4217D20C4B186869

+:1072600083687A24005B1B188900C9180B680B48D7

+:10727000034012020A4802401A430A600020E6E76F

+:107280000548E4E70448E2E70348E0E70248DEE7B0

+:10729000D45F0108FF00FFFF01004A00FF0000FF6C

+:1072A00000FFFF0030B51A4B1B6842241C5D84426E

+:1072B00028D9032928D8002901D1072A0FD9012963

+:1072C00005D0022906D0032907D012481BE00F2A57

+:1072D00005D9F6E7032A02D9F5E7002A16D1752465

+:1072E0001D5DA940723CAC40214074241C5D2240CD

+:1072F0009B680A43C02189008C4660448000C250CC

+:10730000002000E0034830BD0248FCE70148FAE7EE

+:10731000D45F010801004A00F0B5032835D80028E1

+:1073200001D107290FD9012805D0022806D003284A

+:1073300007D0184828E00F2905D9F6E7032902D914

+:10734000F5E7002923D1144B1C687723E35C032263

+:1073500015009D402B007425655D7626A65D2F00E7

+:10736000B7403B437526A65DB040B240104018437D

+:10737000294008438021090608438023DB00A268D6

+:10738000D050A268D3580020F0BD0248FCE7014865

+:10739000FAE7C04601004A00D45F010810B503288F

+:1073A00028D8002801D107290FD9012805D00228A3

+:1073B00006D0032807D011481BE00F2905D9F6E7AE

+:1073C000032902D9F5E7002916D10D4B1A68752358

+:1073D000D45CA040723BA34018407423D35C194096

+:1073E000926801438020C00501438023DB00D15017

+:1073F000002010BD0148FCE70048FAE701004A0000

+:10740000D45F0108064B1B681A6888215B58D218A4

+:10741000136804490B400002034313607047C046E1

+:10742000D45F0108FF00FFFF044B1A68136888212E

+:1074300052589B181868000AC0B27047D45F010800

+:10744000012800D901BE054A136805490B40000216

+:10745000C021890008401843106070470000274091

+:10746000FFFCFFFF10B5074B984200D901BE06494B

+:10747000064A8B58064C2340024C20401843885043

+:1074800010BDC046010300000000264004050000B6

+:10749000FEFCFFFF10B50449044A8B58044C2340FE

+:1074A000000403438B5010BD00002640040500007B

+:1074B000FFFF00FF0349044A885880231B0603434B

+:1074C0008B50704700002640040500000349044A21

+:1074D0008B585B005B088B507047C046000026400D

+:1074E0000405000010B50300032800D901BE054CB7

+:1074F000A021C900605803229043134018436050F4

+:1075000010BDC04600002640064B1B681A68882143

+:107510005B58D21813681B021B0A00060343136052

+:107520007047C046D45F0108044B1A68136888216D

+:1075300052589B181868000E7047C046D45F010867

+:10754000064B1B681A688C215B58D21813680449D3

+:107550000B400002034313607047C046D45F01082C

+:10756000FF00FFFF084B1A684023D35C834209D910

+:10757000064AE0308000815880231B060B4383506D

+:10758000002070470248FCE7D45F01080000264055

+:1075900001004A0000280ED0094B1A684023D35C32

+:1075A00083420AD9074AE030800083585B005B08B9

+:1075B0008350002070470448FCE70348FAE7C046C0

+:1075C000D45F01080000264001004A0010B50B4BB3

+:1075D0001A684023D35C83420CD90F290CD8084C7D

+:1075E000E030800003590F229343114019430151A9

+:1075F000002010BD0348FCE70248FAE7D45F010809

+:107600000000264001004A00064B1A684023D35C64

+:10761000834200D801BEE0308000034BC3580F20E6

+:1076200018407047D45F01080000264010B50C4B8D

+:107630001A684023D35C83420DD903290DD8094C25

+:10764000E03080000359302293430901114019436F

+:107650000151002010BD0448FCE70348FAE7C0468A

+:10766000D45F01080000264001004A00074B1A6859

+:107670004023D35C834200D801BEE0308000044B3D

+:10768000C3581B09032018407047C046D45F010847

+:1076900000002640034B1B6904201840431E9841FC

+:1076A000C0B270470000274010B504000A4A1368B2

+:1076B00008210B43136003E0012000F077FD013C3B

+:1076C000FFF7E8FF002801D1002CF5D1002C01D0F4

+:1076D000002010BD0148FCE70000274002004A00DE

+:1076E00000207047002070470349044A88588023CF

+:1076F0001B0603438B507047000026400C0500001A

+:10770000084AC0235B00D3580122100018401A42D7

+:1077100006D10449044A8B585B005B088B507047C4

+:107720000248FCE7000026400C05000003004A0068

+:10773000064A074BD35801229343002800D1002268

+:1077400013430249024A8B507047C046000026404E

+:107750000C050000014B18687047C0460C6001081A

+:10776000084AA623DB00D25803231340032B06D07C

+:10777000044AA623DB00D35801201840704702209A

+:10778000FCE7C0460000264010B5FFF7E9FF0228DD

+:1077900001D0002010BD014B1868FBE71060010804

+:1077A000134B1A683E23D35C83421DD9042904D9A4

+:1077B0004B1EFF3B9BB2132B18D8FF290CD91F235C

+:1077C00019400C4A0300C0339B009950D030800010

+:1077D00004238350002008E007231940D0308000A4

+:1077E000044BC150002000E0034870470248FCE70A

+:1077F000D45F01080000264001004A0003000C4A43

+:1078000011683E228A5C824200D801BE1A00D03242

+:1078100092000849505807221040042800D07047B1

+:10782000C0339B005B581B300340E1301843F6E740

+:10783000D45F01080000264010B52A4B1A683E2389

+:10784000D35C834200D801BEFFF7D8FF88235B00DA

+:10785000984231D012D802282BD004D903280BD15A

+:10786000FFF73EFF3CE0002839D0012802D1FFF7A6

+:1078700071FF35E0002033E0002031E089235B0018

+:10788000984229D01423FF33984206D1164A174B49

+:10789000D358002B1DDB002022E01223FF33984237

+:1078A00005D1FFF7F7FE002810D1002018E00020D6

+:1078B00016E0FFF769FF13E00B4A0D4BD358002B7E

+:1078C00001DB00200CE08020000209E080200002A3

+:1078D00006E08020000203E0FFF704FF00E0054817

+:1078E00010BDC046D45F0108000026403C050000E2

+:1078F0000C05000000127A00024AB023DB00D058C9

+:10790000C00F704700002640034AB223DB00D35863

+:10791000012018407047C046000026400B4BB120A4

+:10792000C0001A580A491140802292050A431A5091

+:10793000B021C9005A58520052085A5005495A58A5

+:10794000520052085A5000207047C046000026409E

+:10795000FFFFFFCF8C05000070B5041E00D175E05D

+:10796000FFF7CAFF002800D074E08023DB02226802

+:107970009A4200D301BE23689B039B0BE279002A45

+:1079800000D165E08022520413433349B022D20073

+:107990008B50A28880239B019A4200D301BE22898A

+:1079A00080239B009A4200D301BEA388DB04DB0C3A

+:1079B0002289120429490A4013432749284A8B5037

+:1079C000A37A0F2B00D901BEE37A0F2B00D901BE99

+:1079D000A28980239B019A4200D301BEA27A0F2381

+:1079E0001340E17A0901FF220A401343A2891202DF

+:1079F0001C490A401343A27B1207C02189050A4093

+:107A000013431549B122D2008B50A379042B00D91E

+:107A100001BE228A80239B009A4200D301BE0E48F9

+:107A200011494358114A1340A2791202E025ED0092

+:107A30002A401343435043580D4A1340228A1204EC

+:107A4000064C224013434350002070BD01BE87E71F

+:107A5000002299E70748F8E7000026400000FF01F0

+:107A60008405000000FF1F008C050000FFF8FFFFE9

+:107A7000FFFF00FE03004A0010B5002832D01A496B

+:107A8000B023DB00CB589A03920B02608022520491

+:107A900013405A1E9341C371144BCB58DA04D20CD5

+:107AA00082801B0CDB05DB0D0381B123DB00CB588F

+:107AB0000F2214001C4084721C092240C2721A0A50

+:107AC000D204D20C82811B0F032213408373084B14

+:107AD000CB58190A04320A4082711B0CDB05DB0DFE

+:107AE000038210BD01BECAE70000264084050000E5

+:107AF0008C05000070B505002649274A8858802368

+:107B00001B0603438B502C0003E0012000F04EFBCA

+:107B1000013C204AB223DB00D3585B0701D4002C80

+:107B2000F3D11C48B121C90043581C4A1A40802394

+:107B30009B0513434350002D01D0002C0CD0154958

+:107B4000B022D200885880231B0603438B5003E0E9

+:107B5000012000F02BFB013CFFF7D6FE002801D1ED

+:107B6000002CF5D1002D01D0002C0ED00949B122F6

+:107B7000D2008858C0239B0503438B50002D02D0B0

+:107B8000002C05D00025280070BDFFF7C7FEF5E7E3

+:107B9000034DF8E7000026408C050000FFFFFFCFF3

+:107BA00002004A000138074B1A683F23D35C834226

+:107BB00000D801BE8130FF308000034BC058C00F99

+:107BC0007047C046D45F01080000264070B50138F8

+:107BD0000D4B1A683F23D35C834201D80B4870BD1C

+:107BE0000B4D8130FF30840063590A4A1A408023CC

+:107BF0009B0513436351012000F0D8FA63595B00E1

+:107C00005B0863510020EAE7D45F010801004A00E5

+:107C100000002640FFFFFFCFF8B504000D002F4BFA

+:107C20001A683F23D35C834201D22D48F8BDFFF789

+:107C3000B9FF002845D1AA78931EDBB20E2B42D89B

+:107C40006B78002B41D0122B41D82F783E00E97879

+:107C5000002932D0133086423BD300292FD0382060

+:107C6000864238D8013C2879022816D07F20384037

+:107C70001B02F8267601334003431204F820400328

+:107C800002401A43C90680231B05194011432300F3

+:107C90008133FF339B00134A995012498134FF34DA

+:107CA000A4006358104A13402A791207C0208005A7

+:107CB0000240134363500020B8E71620CBE7702042

+:107CC000CEE70A48B2E70648B0E70548AEE7044801

+:107CD000ACE70348AAE70248A8E7C046D45F01081A

+:107CE00001004A0000002640FFFFFFCF03004A00CA

+:107CF0000138114B1A683F23D35C83421AD9813073

+:107D0000FF3080000D4BC3587F221A400A70180ABA

+:107D10001F2210404870180C02408A708022120501

+:107D20001A40501E8241CA701B0F032213400B7170

+:107D3000002070470248FCE7D45F0108000026409D

+:107D400001004A0070B50D00461E294B1A683F23FA

+:107D5000D35CB34249D9274933008133FF339B00B9

+:107D600058588022120602435A502C0003E001208A

+:107D700000F01CFA013C33009133FF339B001D4A95

+:107D80009B58DB0701D4002CF1D1002D01D0002C31

+:107D900017D033008133FF339B00164A9A58120FD5

+:107DA00003231340022B01D0002070BD114A8136FD

+:107DB000FF36B600B158C0239B050B43B3500020DB

+:107DC000F3E70C4C8136FF36B60033590A4A1A40A5

+:107DD00080239B0513433351012000F0E7F9335909

+:107DE0005B005B0833510548DFE70548DDE7C04627

+:107DF000D45F010800002640FFFFFFCF02004A00C9

+:107E000001004A00F0B587B01422002101A802F059

+:107E1000E8FB01A8FFF730FEFFF76EFD002807D052

+:107E200001AB9B7B022B01D0012302E0002300E089

+:107E3000002301AA019E94882000D279002A1FD035

+:107E40000225002B1ED000281DD00020FFF7F4FCD7

+:107E500032000023002101F087F906000F002A00FC

+:107E600000232000002101F07FF902000B00CC0765

+:107E70004008204349088019794101F055F902E092

+:107E80000125DEE7002007B0F0BD0000F0B585B0A9

+:107E900004002E4B1B683F229A5C002A53D0002816

+:107EA00052D03E229B5C834200D801BE274B1A6809

+:107EB0003F23D35CA34201D2002045E005220021EC

+:107EC00002A802F08EFB02A92000FFF711FF20009C

+:107ED000FFF768FE002807D002AB1B79022B01D008

+:107EE000012302E0002300E0002302AA167857785D

+:107EF00038009578002B24D0002F25D0002D01D1FB

+:107F0000280021E02000FFF797FC32000023002129

+:107F100001F02AF9009001912A0000233800002185

+:107F200001F022F902000B00CC0740082043490869

+:107F3000009C019D24184D412000290001F0F4F817

+:107F400002E0002000E0002005B0F0BDD45F010891

+:107F500010B504000D4B1A683E23D35C834200D851

+:107F600001BE002C09D0094B1A683F23D35CA34201

+:107F700008D22000FFF760FC10BDFFF743FF002888

+:107F8000FAD1F6E72000FFF781FFF8E7D45F010898

+:107F900070B50600FFF76AFB05000124844030003D

+:107FA000FFF732FBFFF7D4FF64082018E84070BDEC

+:107FB00010B50020FFF7ECFF0400FFF7B5FA411CF5

+:107FC0004808001900F03AFF10BD10B5FFF7F0FFA8

+:107FD0000400FFF729FA411C4808001900F02EFFA1

+:107FE00010BD000030B5194B1B682C229A5C1F2A6B

+:107FF00015D884080722250095432A1E22D1033272

+:108000001040C000FC3282401B682033A4001B19C2

+:108010001C688140614011406140196012E03C22BF

+:108020009A5E0BB29A420ED007230340074A1268A9

+:10803000126880200006184380239B019C466144FF

+:108040008900885030BD01BEEEE7C046D45F01080C

+:1080500010B50A4B1B682C229A5C1F2A0AD91A6891

+:1080600080239B019C46614489008B585B005B0820

+:108070008B5010BD998FFFF7B5FFFAE7D45F010869

+:10808000094B9A68094B9A4204D010308000084B83

+:10809000C0587047002905D01030044A8300985812

+:1080A0009950F6E701BEF7E700ED00E00000000898

+:1080B00000000010F0B5C64600B582B0041E019164

+:1080C0004FD04368032B00D901BE0023E05E002897

+:1080D00025DA254E0023E25E6168002A24DB93083E

+:1080E000224DC0339B005859804603273A40D200A6

+:1080F000FF208446070097404046B84307008901A7

+:1081000060460840904038435851194B9A68194BC3

+:108110009A4220D0300002B080BCB846F0BD6188E1

+:10812000FFF760FF0026D5E70F231340083B9B08AD

+:1081300006339B000E48844663445F680320024078

+:10814000D200FC3005009540AF43890108409040C3

+:1081500038435860D9E70023E05E0199FFF790FFAC

+:10816000D8E7014ED6E7C0460100560000E100E026

+:1081700000ED00E00000000810B5040006E0084B28

+:108180001868F8F701FA074B9C46644480231B02E9

+:108190009C42F4D8044B18686043F8F7F5F910BD19

+:1081A0008C0000080080FFFF9000000810B5034B12

+:1081B0001B785843F8F7E8F910BDC0469400000852

+:1081C00010B5FFF7D9FF10BD10B5FFF7EFFF10BDD9

+:1081D000054B802212069A649B6C002B01DB002069

+:1081E00070470248FCE7C0460000274003004600F5

+:1081F0000D4B8022120198585B68FF221A4202D070

+:108200008023DB021843084A084BD3581B0402D0D2

+:1082100080235B021843044A044BD3581B0C02D042

+:1082200080239B021843704700002640040800008A

+:10823000FEE7000010B50A4B0268DA6142681A6274

+:1082400082685A62C2689A620269DA6242691A6393

+:1082500082695A63C2699A63FFF7EAFF10BDC0469C

+:1082600038070008F0B5C64600B5002833D01923FA

+:108270008B429B415B42314C22681668AC27D25B33

+:10828000B61832680325AA432B401A433260266889

+:108290003268F65B92191768294E374017602768D5

+:1082A0003A689046AE229446BF5A3A004244176854

+:1082B000AF433B431360226813686446125B9B180C

+:1082C0001A6832401A60002807D010291DD92129C8

+:1082D00027D801221AE06423CAE7184B1B685522ED

+:1082E0009A5C8A421FD256229A5C8A421DD2572239

+:1082F0009A5C8A421BD258229A5C8A4219D259222D

+:108300009B5C8B4217D3553A00E000220B4B1B6855

+:1083100059680B680F20834313430B6080BCB84639

+:10832000F0BD0222F2E70022F0E70122EEE702228E

+:10833000ECE70322EAE70522E8E7C046D45F01083C

+:10834000FFFCFFFFB0235B055B78002B04D0B0235C

+:108350005B055878C0B270472120FCE7B0235B056D

+:108360009B899BB2002B04D0B0235B05988980B217

+:10837000704780204000FBE770B5FFF7EFFF8023D8

+:108380005B0098421AD0B0204005174BC358174ADB

+:108390001340174C21680A689C25495952181168E6

+:1083A000C025AD0029400B43136022681368A0214B

+:1083B00052589B180F4A82581A6070BD0C4B1A68AD

+:1083C00011689C20125889180A680F24A2439A3811

+:1083D00002430A601B681A68A0215B58D218136810

+:1083E000A34303431360E8E748180000FFFCFFFFC6

+:1083F000D45F01084418000070B5FFF7AFFF802379

+:108400005B0098421AD0B0204005134BC358134A62

+:108410001340134C21680A689C2549595218116869

+:10842000C025AD0029400B43136022681368A021CA

+:1084300052589B180B4A82581A6070BD084B1A6834

+:1084400013689C2152589B181A68074911408022D2

+:10845000D2010A431A60F0E750180000FFFCFFFF4A

+:10846000D45F01084C180000FF8FFFFF10B5FFF725

+:1084700075FF80235B00984212D0B02252050F4B4B

+:10848000D3580F4A13400F4A11680A689C200958B4

+:1084900052181168C020800001400B43136010BDCA

+:1084A000084B1A6813689C2152589B181A68064991

+:1084B0001140C022D2010A431A60F0E71C180000E4

+:1084C000FFFCFFFFD45F0108FF8FFFFF70B5FFF7D0

+:1084D00045FF80235B0098421BD0B0204005184B1D

+:1084E000C358184A1340184C21680A689C254959FA

+:1084F00052181168C025AD0029400B431360226853

+:108500001368A02152589B18C122520182581A6048

+:1085100070BD0D4B1A6811689C20125889180A68A2

+:108520000F24A243993802430A601B681A68A021ED

+:108530005B58D2181368A34303431360E8E7C046AF

+:1085400024180000FFFCFFFFD45F010870B5204B2A

+:108550001A6813689C2152589B181C68C02000019F

+:108560000440FFF7FBFE80235B0098421FD01849B0

+:10857000086803689C2280581B181868154D28400D

+:1085800018600868036880581B181D68C0263601EB

+:108590003000A04305431D6009680B688A589B188A

+:1085A00018683040001B431E9841C0B270BD0020C7

+:1085B000FCF7A4FE0400FFF7C5FE222803D8002C18

+:1085C00003D10120F2E70120F0E70020EEE7C046EA

+:1085D000D45F0108FFF3FFFF70B584B006000D0003

+:1085E000022804D9042802D0032800D001BE6B1E43

+:1085F000DBB2012B04D9042D02D0082D00D001BE1E

+:10860000B300294A9C58042D1FD0012D1FD0022DE4

+:1086100033D026006469002CFBD1002034E064696B

+:10862000002C18D0214B984213D0A3682B42F6D1CE

+:10863000E3681A6802925B6801930393290002A819

+:10864000236898471A4B1C60E9E70020E8E7002000

+:10865000E6E7012DE9D1012D01D004B070BD134B27

+:10866000984204D0B600134B0022F250F5E7B60052

+:108670000F4B1A680F4BF250EFE70D4B1E68002EA0

+:10868000CBD03669C9E73669002EE6D0B3682B42F5

+:10869000F9D1F3681A6802925B6801930393290089

+:1086A00002A833689847EEE754600108FF004200D3

+:1086B000506001083C600108F0B5C64600B50700EF

+:1086C000012800D901BEFFF73DFE85B2FFF746FE47

+:1086D00006000020FCF712FE041E17D180235B0069

+:1086E0009E4201D02A4C12E0222D42D8294B1B6811

+:1086F000586829494358294A134098463A06802326

+:108700005B041A4043461343435000E0204C80234F

+:108710005B009E422FD080235B009E4225D01D4BE4

+:108720001A683323D35C002B00D101BE194B1B68A0

+:108730001D6A80235B009E4220D0002F24D0184A5F

+:1087400001212800FCF784FB00280ED1114B1A6888

+:10875000BC23D3585B191B68002BF7DBEB681B0E9F

+:108760001B06A0221206934210D0200080BCB846FF

+:10877000F0BD074CCBE7222DD1D8CCE7002F01D09C

+:10878000084ADDE7084ADBE7084AD9E70400ECE7D6

+:1087900004004200D45F010818F00000FFFFFFFE54

+:1087A0000300000C01010030010000300100000C4A

+:1087B00000283DD01F4B1B6888229A5819688C46A8

+:1087C0006244126802628C229A5819688C4662448C

+:1087D0001268426246229A5C002A28D0E0229968F8

+:1087E0008A58D20623D5DA68F223DB01D358036016

+:1087F000104B1B68F022D201D9688A5842600E4A99

+:10880000D9688A5882600D4AD9688A58C2600C4A71

+:10881000D9688A5802610B4AD9688A5842610A4A63

+:10882000D9688A588261DA68084BD358C3617047A7

+:1088300001BEBFE7D45F010804780000087800009B

+:108840000C78000010780000147800001878000000

+:1088500010B500283BD01F4B19680A6888240959B5

+:108860005218016A116019680A68043409595218CB

+:10887000416A11601B6846229A5C002A26D0E022D9

+:1088800099688A58D20621D5F022D201D968446865

+:108890008C50114AD96884688C50104AD968C468D1

+:1088A0008C500F4AD96804698C500E4AD9684469C3

+:1088B0008C500D4AD96884698C500C4AD968C469B7

+:1088C0008C50DA680168F223DB01D15010BD01BE83

+:1088D000C1E7C046D45F01080478000008780000B2

+:1088E0000C78000010780000147800001878000060

+:1088F000F0B5C64600B50700FFF724FD0500012FBF

+:1089000000D901BE7E4B5B68002B00D187E00121BE

+:108910000120FFF761FE041E72D1F7F73EFE06004C

+:10892000774B5B68002B03D004210120FFF754FE36

+:10893000744B1A68136ABA21515ACA00521A9B180A

+:108940001A68002AF4DADB68DA0000D569E08020D2

+:10895000800518436B4B1B68BA215D5AEA00521B15

+:108960001D6AAC466244D060585AC200121A186A96

+:1089700084466244002050601A6A595ACB005B1A40

+:10898000D3185B68FFF7EAFC80235B00984200D1B4

+:108990007FE05C4B1A683323D35C002B00D101BE0F

+:1089A000584B1A68116ABC23D3585B181B68002BFC

+:1089B00000DB72E0544C534B1A68136ABA21515AC7

+:1089C000CA00521A9B181A68002AF4DADD68EB0014

+:1089D00000D581E04D4B1D404A4B1B68BA21585AC7

+:1089E000C200121A186A84466244D5601A6A595A3B

+:1089F000CB005B1AD31800225A603000F7F7D1FD84

+:108A0000002C00D06DE03E4B5B68002B03D00821AA

+:108A10000120FFF7E1FD200080BCB846F0BD002436

+:108A20007BE71B0F1B0798463948FFF7C1FE212D36

+:108A300018D0344D2B68196888229B58C9180B68C8

+:108A400034480340783213430B6029680B688C2547

+:108A500049595B18196801400A431A602C4B424679

+:108A6000134374E7274D2B68196888229B58C9184F

+:108A70000B68284803409022120113430B602968B9

+:108A80000B688C2549595B18196801400A431A6024

+:108A9000E4E7380005F000FA8DE73323D35C012BBF

+:108AA00000D801BE174B1968BA23CA5A0B6A9C46F4

+:108AB0006244BC23CB589B181B68002B0ADB164A68

+:108AC000136904210B431361012F01D030BF72E7FA

+:108AD00020BF70E70C4C6EE728010009FFF7B8FED5

+:108AE00078E7074B5B68002B03D002210120FFF7DA

+:108AF00073FD054B9C4200D18DE7084C8BE7C046C7

+:108B000054600108D45F010805004200FFFFFFDF49

+:108B100014600108FF00FFFF00ED00E0FF004200CD

+:108B2000074A084BD3581F200340B0214905E822CB

+:108B3000D200885CC01A431E9841C0B27047C0463C

+:108B4000000026401CFF0000044B186880231B0413

+:108B5000184043425841C0B27047C046000026400A

+:108B600010B5FFF7F1FF002810D01C4A13681C490C

+:108B70000B4013600820FFF719FB6423174A1268A3

+:108B8000002A09DB002B07D0013BF7E7134A1368E3

+:108B900014490B401360EDE7002B01D1124810BDC2

+:108BA0000E4A136811490B4013600120FFF7FEFACB

+:108BB000FFF7CAFF002801D10020F0E7FFF7B0FF60

+:108BC000012801D00020EAE7B0225205084BD15815

+:108BD000024A084BD1500020E1E7C0460000264081

+:108BE000FFFFFBACFFFFFBAD02004200FFFFFFFBFE

+:108BF00010180000307F000010B5FFF7A5FF002817

+:108C000008D0054B054A10681840C01A4342584125

+:108C1000C0B210BD024BF5E700000453000026402F

+:108C200000000452F8B50400012800D901BEFFF786

+:108C30008DFC002802D12D4D2800F8BDF7F7ADFCC2

+:108C40000600002C14D12A4A2A4B0021D150B02210

+:108C50005205E823DB00D75CFFB20120FFF72CFDB3

+:108C6000051E02D0002D2AD11DE0FFF785FBF9E794

+:108C7000FFF7C2FF002826D01D4A1E4B5021D150BD

+:108C8000B02252051C4BD75CFFB219491B4A8B58C6

+:108C90001F208343143803438B500838FFF786FAAC

+:108CA000FFF7AAFB00251248144943581F2293439B

+:108CB0003A4013434350002C0DD1FFF7D7FB30004F

+:108CC000F7F76FFCB8E7B02252050D4BD158084AB0

+:108CD000084BD150D4E70720FFF768FAFFF7F6FBFF

+:108CE0000020FFF7E9FC0500E9E7C0460300420069

+:108CF00000002640307F0000410700001CFF0000FC

+:108D000010180000084B5A6C120AFF2313403A2B2C

+:108D100000D0704704494B6C044A1A40E8239B0179

+:108D200013434B64F5E7C04600002740FFC5FFDF53

+:108D300004494B6C044A1A40E8239B0113434B64DB

+:108D40007047C04600002740FF00FFFF042810D0F6

+:108D500000060B4B1A681368A42152589B18C022B6

+:108D6000920410401860074A1368A0398B431360BF

+:108D70007047044A136804210B431360F8E7C046A8

+:108D8000D45F010810E000E0044AC0235B00D05823

+:108D9000800F431E9841C0B27047C0460000264075

+:108DA0000749C02252008B589B009B088020C005B9

+:108DB00003438B50885880231B0603438B50704716

+:108DC0000000264010B5040080235B02984200D3C7

+:108DD00001BEFFF7D9FF002809D1054AC4235B0073

+:108DE000D058000C00042404240C0443D45010BDBB

+:108DF0000000264010B504000F2800D901BEFFF77F

+:108E0000C3FF00280BD10649C42252008B580548E5

+:108E100003402404F020000304401C438C5010BD88

+:108E200000002640FFFFF0FF034AE023DB000121A2

+:108E3000D150D3587047C046000026400022430856

+:108E40008B4274D303098B425FD3030A8B4244D312

+:108E5000030B8B4228D3030C8B420DD3FF22090254

+:108E600012BA030C8B4202D31212090265D0030B13

+:108E70008B4219D300E0090AC30B8B4201D3CB0309

+:108E8000C01A5241830B8B4201D38B03C01A52414B

+:108E9000430B8B4201D34B03C01A5241030B8B424D

+:108EA00001D30B03C01A5241C30A8B4201D3CB0238

+:108EB000C01A5241830A8B4201D38B02C01A52411D

+:108EC000430A8B4201D34B02C01A5241030A8B4220

+:108ED00001D30B02C01A5241CDD2C3098B4201D338

+:108EE000CB01C01A524183098B4201D38B01C01AB6

+:108EF000524143098B4201D34B01C01A524103092D

+:108F00008B4201D30B01C01A5241C3088B4201D3DB

+:108F1000CB00C01A524183088B4201D38B00C01A88

+:108F2000524143088B4201D34B00C01A5241411AAF

+:108F300000D20146524110467047FFE701B50020BC

+:108F400000F0F0F802BDC0460029F7D076E7704780

+:108F500003460B437FD4002243088B4274D303099A

+:108F60008B425FD3030A8B4244D3030B8B4228D33B

+:108F7000030C8B420DD3FF22090212BA030C8B4261

+:108F800002D31212090265D0030B8B4219D300E001

+:108F9000090AC30B8B4201D3CB03C01A5241830B86

+:108FA0008B4201D38B03C01A5241430B8B4201D336

+:108FB0004B03C01A5241030B8B4201D30B03C01A5F

+:108FC0005241C30A8B4201D3CB02C01A5241830AD9

+:108FD0008B4201D38B02C01A5241430A8B4201D308

+:108FE0004B02C01A5241030A8B4201D30B02C01A32

+:108FF0005241CDD2C3098B4201D3CB01C01A524199

+:1090000083098B4201D38B01C01A524143098B4221

+:1090100001D34B01C01A524103098B4201D30B010A

+:10902000C01A5241C3088B4201D3CB00C01A52412F

+:1090300083088B4201D38B00C01A524143088B42F4

+:1090400001D34B00C01A5241411A00D2014652418D

+:10905000104670475DE0CA0F00D04942031000D3AC

+:109060004042534000229C4603098B422DD3030A01

+:109070008B4212D3FC22890112BA030A8B420CD311

+:10908000890192118B4208D3890192118B4204D33A

+:1090900089013AD0921100E08909C3098B4201D3BA

+:1090A000CB01C01A524183098B4201D38B01C01AF4

+:1090B000524143098B4201D34B01C01A524103096B

+:1090C0008B4201D30B01C01A5241C3088B4201D31A

+:1090D000CB00C01A524183088B4201D38B00C01AC7

+:1090E0005241D9D243088B4201D34B00C01A52419E

+:1090F000411A00D20146634652415B10104601D32B

+:109100004042002B00D54942704763465B1000D3B4

+:10911000404201B5002000F005F802BD0029F8D05A

+:1091200016E770477047C046002B11D1002A0FD1B7

+:10913000002900D1002802D00021C943080007B44B

+:10914000024802A14018029003BDC046D9FFFFFFAC

+:1091500003B4684601B5029800F052F8019B9E46A0

+:1091600002B00CBC7047C046F0B5CE46474680B54D

+:10917000070099463B0C9C4613041B0C1D000E0077

+:1091800061460004140C000C45434B4360436143AB

+:10919000C0182C0C20188C46834203D980235B0214

+:1091A0009846C444494679437243030C63442D04F2

+:1091B0002D0CC918000440198918C0BCB946B04626

+:1091C000F0BDC04670B500220C4B04000D0001F04C

+:1091D00005F8002804D12000290000F065FF70BDCB

+:1091E000064B00222000290000F0CCFB00F05CFFC1

+:1091F00080231B069C466044F1E7C0460000E04126

+:10920000F0B557464E464546DE46E0B504000D0033

+:109210009246994683B08B4230D82DD0494650466D

+:1092200001F004F829000600200000F0FFFF331AC7

+:109230009846203B9B4633D45A4653469340424679

+:109240001F00534693401E00AF423AD8AF4200D1B0

+:1092500078E05B46A41BBD41002B00DA75E00022DC

+:1092600000230092019301235A4693400193012366

+:1092700042469340009328E08242CFD90022002347

+:10928000009201930C9B002B01D01C605D60009844

+:10929000019903B0F0BCBB46B246A946A046F0BD5A

+:1092A000424620239B1A5246DA40414613004A4662

+:1092B0008A40170042461F43534693401E00AF4268

+:1092C000C4D900220023009201934346002BD9D039

+:1092D000FB0772081A4346467B080EE0AB4201D1F9

+:1092E000A2420CD8A41A9D41012024196D410021ED

+:1092F000013E24184D41002E06D0AB42EED9013E6E

+:1093000024196D41002EF8D1009801995B4600198F

+:109310006941002B24DB2B005A464446D3402A00E7

+:10932000E2401C005B461500002B2ADB26009E4015

+:10933000330026004746BE403200801A9941009013

+:1093400001919FE7A342BCD883E742462023002136

+:109350009B1A0022009101920122DA40019286E7D5

+:10936000424620239B1A2A0046469A402300F34097

+:10937000444613432A00E2401C005B461500002BC4

+:10938000D4DA42462F002023260097409B1ADE4065

+:109390003B003343CDE7C046F0B557464E46454601

+:1093A000DE46E0B5814605000C03480092461F00EA

+:1093B00085B0240B400DCE0F002800D156E1D44BD0

+:1093C000984200D172E16B0FE4001C4380231B0420

+:1093D00023439846CF4BED009B4600239946834498

+:1093E00000933C037B005046240B5B0DFF0F002BCA

+:1093F00000D11FE1C64A934200D162E1C549420F44

+:109400008C46E40059461443802263441204CB1A6C

+:1094100014439B46C200002033007B409A464B46D3

+:109420000F2B27D8BC499B00CB589F46B246009BC8

+:10943000022B16D0032B00D18EE2012B00D0D9E0F5

+:1094400000230024002552461B052343D207134363

+:109450002800190005B0F0BCBB46B246A946A0469C

+:10946000F0BD00240025AA4BEDE7BA46A046150042

+:109470000090DCE7444500D2C7E100D1C2E10123FE

+:109480005B429C462E0040460025E3442302140E16

+:109490001C431B0C994623041F0C120249460092E0

+:1094A0000197FFF751FD02007A430B04310C80460F

+:1094B00019438A4207D901235B429C460919E044BB

+:1094C0008C4200D807E2881A4946FFF73DFD09049F

+:1094D0008C4631046646019A090C4243030031432D

+:1094E0008A4204D90919013B8C4200D8EDE1881A5F

+:1094F000424612041A4390464146009B0E041B0C40

+:109500001F000293009B360C1B04190C0B007343C5

+:10951000120C7E43039151437A431F0CBC467618CC

+:109520006644B14203D9802149028C466244310C21

+:109530008A1831041E04360C8E19904202D312D1BF

+:10954000B54210D24346591E009B9C4665441F00FD

+:109550009D429B415B421B19C018844200D2A0E18E

+:1095600000D19BE18846AE1BB542AD41801A6D42E9

+:10957000401B844200D1D5E14946FFF7E5FC019A42

+:109580000B044243310C050019438A4200D96CE1B7

+:10959000881A4946FFF7D8FC019A36044243090469

+:1095A000360C03000E43B24200D953E10398B61AB9

+:1095B00002002D041D43029F2B041B0C5A437B43C6

+:1095C0009C46290C4843130C8444634479439842D5

+:1095D00003D98020400284466144180C12041B0405

+:1095E000120C41189B188E4200D2FFE000D1FAE025

+:1095F00001231D43494A5A44002A00DCAAE06B07B4

+:1096000000D03DE1ED084346DB0106D54246444B20

+:109610001A4090468022D2005A44424B9A4200DDC2

+:109620001FE743465B071D43434652055C02240B7C

+:10963000530D08E75246224300D17BE0002C00D1B5

+:10964000FAE0200000F0D4FD02000B3A1D230100D7

+:109650009B1A52460839DA408C40144352468A40DD

+:10966000314B58449B4683440020D5E64B46234368

+:10967000984644D0002C00D1CEE0200000F0B8FD88

+:10968000010002000B391D235B1A49461000D94026

+:10969000083884400B004D462343984685402348B4

+:1096A000831A9B460023994600939AE64B46234330

+:1096B00098461DD108239946063B00258346009312

+:1096C0008FE65246224309D1022349461943184BDB

+:1096D00089469C4600240220E3449DE603234A4633

+:1096E0001A43134B91469C4652460320E34493E6AB

+:1096F0000C239946093BA0468346009371E6042358

+:10970000994600239B4601330025009369E6C04635

+:10971000FF07000001FCFFFF74F20010FF030000D0

+:10972000FFFFFFFEFE070000F30300000DFCFFFF3C

+:1097300001F8FFFF4946012319438946002401200F

+:109740006AE6002380249A4600258A4B24037AE6A1

+:1097500001256D4201239B1A382B00DD70E61F2B7B

+:1097600000DCBFE01F2149428A1A4146D1400A006D

+:10977000202B04D04146804B5B4499400D436B1E27

+:109780009D4107232A431D0000241540134200D1A8

+:10979000D4E00F2100231140042900D1CBE0111D9A

+:1097A0009142924152429B180A00190200D4C2E031

+:1097B00001230024002546E6802341461B0319426D

+:1097C00008D01C4206D11C432403BA461500694B3D

+:1097D000240B38E68024434624031C432403B2466A

+:1097E000644B240B2FE6002B00D103E7A619681E5B

+:1097F000A64200D28DE08E4200D2A3E000D1B3E0B9

+:109800000500F5E6AA4200D939E64346DE075808C6

+:109810006B081E43ED0739E6484600F0E9FC0100FD

+:109820000200153120321C2900DC2CE74B46083899

+:1098300083400025984632E700F0DAFC03001A0066

+:10984000153220301C2A00DC00E75446083B002279

+:109850009C4005E73619013BB44200D9A6E6B24266

+:1098600000D8A3E6831E3619A0E60919013D8C42F3

+:1098700000D98DE68A4200D88AE6851E091987E656

+:109880000F232B40042B00D1BCE605235B42AB42E7

+:109890009B4104355B42ED089844B4E6AF4200D9E1

+:1098A00060E6824204D800D05CE6AE4200D859E6B9

+:1098B00002235B429C46009BE0449C4665449D42DB

+:1098C0009B415B421B19C0184DE68A4200D80EE648

+:1098D000831E09190BE68A4200D8F4E5831E9846D8

+:1098E0000919F0E52549280059448D4042468A402F

+:1098F000691E8D414146D840D94002432A430B009E

+:10990000510700D151E70F211140042900D046E74B

+:109910004BE705008E4200D06AE6009A934200D0E1

+:1099200066E667E6164A5A44002A00DC10E701237F

+:109930000025984467E65D075B021C0BD2080023F4

+:10994000154380E50098023D42008242BF417F42BC

+:109950003C1936190092DDE78024434624031C435A

+:109960002403044B240B6EE5009A9A42EAD30500C7

+:10997000D3E7C046FF0700003E0400001E040000BD

+:10998000FF030000F8B557464E464546DE46E0B5B3

+:109990001E0017004A000B03520D5B0A9046420F4F

+:1099A0001A43CD0FCD4C3103C300944670007A0F9B

+:1099B000490AFF009A46B946400DF60F1143A042EE

+:1099C00000D1B1E001225640B346B54200D188E053

+:1099D0004246121A002A00DCAEE0002800D1C1E0A5

+:1099E000BE48804500D151E1802000040143382A5F

+:1099F00000DD7BE11F2A00DDEEE120203E00801A21

+:109A00000C00D640D140874062468440521A781EEE

+:109A10008741944634432743DC1BA3429B41624663

+:109A20005B42D31A99464B461B0200D418E14B46C1

+:109A30005802430A99464B46002B00D137E148466D

+:109A400000F0D6FB010008392023220048465B1AAB

+:109A5000DA4088408C4043461043884500DD36E1BB

+:109A6000C91A4B1C1F2B00DDEAE020222600D21A67

+:109A700001009440DE40D84000239140621E944192

+:109A80008146984631430C43630709D00F23234096

+:109A9000042B05D0231DA342A4416442A1441C0011

+:109AA0004B461B0200D4DEE041468C4B013199420B

+:109AB00000D1E7E04B468A48E40803401800490516

+:109AC0005B07400223434A0D040B1205ED072243B6

+:109AD0002A4318001100F0BCBB46B246A946A04676

+:109AE000F8BD4246121A002A52DD002800D19CE03F

+:109AF000A04500D1CAE0802000040143382A00DDDF

+:109B000049E11F2A00DC97E110000E002038C64012

+:109B1000202A04D04020821A91400F43B9464C4677

+:109B2000621E944134433AE10A003A4328D0B346D6

+:109B3000B5422BD06B4A4244002A5DD0424644468F

+:109B4000821A002C00D0F5E065461D4300D19CE14F

+:109B5000551E012A00D1FBE1604CA24200D1BDE1BB

+:109B60002A00F0E00800384300D1C3E0501E012A6B

+:109B700000D1A8E1594CA24200D187E0020036E7AB

+:109B800001225640B346B54200D021E7554A42442F

+:109B9000002A00D1B5E042464446821A002C00D18A

+:109BA00038E14E4EB04200D1DEE1802664463604F4

+:109BB0003443A446382A00DD96E11F2A00DD24E262

+:109BC0002026B41AA24664465646B440A1461C005C

+:109BD0004E46D440264334005646B3405E1EB34141

+:109BE0001C436346D340C918E419BC42BF417F42BD

+:109BF000B94680468944D8E040463B4C013020427B

+:109C000000D0B4E04046002800D044E1604618434C

+:109C100000D190E10800384300D0AAE16146DB089A

+:109C200049070B436146CC0827E00800384361D060

+:109C3000501E012A00D139E1A24227D002005DE77F

+:109C400002001F39CA401100202B03D04022D31A32

+:109C500098400443631E9C410023994698460C4358

+:109C6000630700D012E74B464A46E4085B072343EC

+:109C7000D408424619498A420ED024035205240BC7

+:109C8000520D22E70A00002400231EE7DB0862468B

+:109C9000520713436246D4081A00224300D1FCE164

+:109CA00080221203144324030C4A240B0DE72000E6

+:109CB00000F09EFA010018311F2900DCC4E60838C4

+:109CC0008440434620000024884500DCC8E6044A5E

+:109CD0005B1A104098468146D6E6C046FF07000052

+:109CE000FFFF7FFF01F8FFFFFE0700000F437A1E12

+:109CF000974191E66146DB0849070B436146CC0872

+:109D0000B8E74046D34C0130204200D0A2E04046A4

+:109D1000002800D001E16046184300D15EE1080050

+:109D2000384300D05FE16146DB0849070B436146D9

+:109D3000CC08A2E7C84DA84200D1CFE080256446F8

+:109D40002D042C43A446382A56DC1F2A00DDD1E01E

+:109D500020251E00AD1A6446AB40AC40D6405D1EC7

+:109D6000AB41344323436446D440091B49E0604679

+:109D7000DC1B461AA34280414042814630004E46D9

+:109D8000801B8146000276D44B46234300D052E626

+:109D90000024002571E739430C00621E9441E41849

+:109DA0009C429B415B42634499464B461B0200D454

+:109DB00056E701239C46A84BE044984538D04B46D3

+:109DC000A648012203401800630814401C43C3073F

+:109DD0001C434308994657E610000E002038C64041

+:109DE000202A04D04020821A91400F43B9464F46A2

+:109DF0007A1E974137430FE662461A4313005A1EF4

+:109E00009341FC1AA742BF417F42CB1B99465D4656

+:109E1000804608E666461E4300D1BEE0561E012A73

+:109E200000D109E18C4CA24200D119E13200C1E617

+:109E300042460024002348E620200C00801A3E0001

+:109E400087408440D640781E8741D14034433C430C

+:109E50008C44A4E7804A904200D1E9E0DF199F4298

+:109E60009B4161445B42C918CC077F084B08994667

+:109E700080463C43F4E6FC1AA742BF4163467F425A

+:109E8000C91ACB1B99465D46D5E5FF084B075D46D1

+:109E90003B43CC08EEE662461A4300D082E00B005A

+:109EA0003B431BD1802400252403F9E6DC199C42A6

+:109EB0009B41614489465B4299444B461B0244D412

+:109EC00001239846CCE6DC1B6246A3429B41511A13

+:109ED0005B42CB1A994601239846A4E5FF084B073D

+:109EE0005D463B43CC08D7E662461A431400631E26

+:109EF0009C4179E615006446203DEC40A046202AAE

+:109F000005D040256446AA1A944023439A465446F5

+:109F1000631E9C414346234373E762461A4323D0A2

+:109F20000A003A4300D0A0E06246DB085207134320

+:109F30006246D408B0E60B003B4300D128E7FF0897

+:109F40004B075D463B43CC0897E60223984636E72D

+:109F5000FC1AA742BF4163467F42C91ACB1B9946F0

+:109F600001235D4698465EE54B07FF083B43CC085E

+:109F700092E6DC1B6046A342B641401A7642801B43

+:109F80008146000260D5FC1AA742BF4163467F426A

+:109F9000C91ACB1B99465D4676E5FF084B073B4344

+:109FA000CC0867E60A00DB083A4300D16FE6624658

+:109FB000520713436246D40880221203144207D08A

+:109FC000C808104204D15D460400FB0849070B4352

+:109FD0005A0FDB00DB08520713435DE64B07FF080F

+:109FE0003B43CC0849E6DC199C429B4161448946CD

+:109FF0005B4299444B461B0200D431E64A46174B5C

+:10A000001A400123914698462AE616006446203EEF

+:10A01000F440A046202A05D040266446B21A944057

+:10A0200023439A465446631E9C4143461C43DBE54A

+:10A0300002000024002348E5DC19BC42BF41614412

+:10A0400089467F42B94438E74B46234300D19FE617

+:10A0500006E6C046FE070000FF070000FFFF7FFF87

+:10A06000FF084B073B43CC0816E66246DB08520765

+:10A0700013436246D40880221203144207D0C80852

+:10A08000104204D15D460400FB0849070B435A0FF8

+:10A09000DB005207DB081343FEE50023014A1C00E6

+:10A0A00013E5C046FF0700000A0030B5134C53000B

+:10A0B00009030500090B00205B0DD20FA34204DD4C

+:10A0C0000F48834202DD0F4BD01830BD8020400383

+:10A0D00001430D48C01A1F2808DD0C48C31AD94097

+:10A0E0000B005842002AF0D11800EEE7084CC5409A

+:10A0F000A446634499400B002B43F2E7FE030000A3

+:10A100001D040000FFFFFF7F330400001304000064

+:10A11000EDFBFFFF70B5002816D0C317C5185D40D2

+:10A12000C40F280000F064F8114A121A0A2816DC3D

+:10A1300003002E0015339E400B23181AC54052050C

+:10A140002D032D0B530D03E00024002300250026D2

+:10A150001B052B43E40723433000190070BD0B3867

+:10A16000854052052D0300262D0B530DF0E7C04608

+:10A170001E0400008446100062468C4619006346A7

+:10A1800000E0C0461FB500F005F9002801D4002109

+:10A19000C8421FBD10B500F055F84042013010BD57

+:10A1A00010B500F0F7F8002801DB002010BD0120F9

+:10A1B00010BDC04610B500F0EDF8002801DD00200C

+:10A1C00010BD012010BDC04610B500F07DF800287C

+:10A1D00001DC002010BD012010BDC04610B500F00C

+:10A1E00073F8002801DA002010BD012010BDC04620

+:10A1F0001C2101231B04984201D3000C10391B0AB7

+:10A20000984201D3000A08391B09984201D300097A

+:10A21000043902A2105C40187047C04604030202D1

+:10A2200001010101000000000000000010B500293C

+:10A2300003D1FFF7DDFF203002E00800FFF7D8FF71

+:10A2400010BDC046F0B54E464546DE4657469046E0

+:10A25000E0B517001A03120B0500844619480E03D7

+:10A260004C0091465A00DB0F9B46360B640DC90F1C

+:10A27000520D844219D0824210D0012094420ED156

+:10A280004E450CD10120C44509D1594517D0002CA9

+:10A2900005D130002843431E984100E00120F0BC66

+:10A2A000BB46B246A946A046F0BD330001202B4371

+:10A2B000F5D1A242F3D14B463B43F0D1E2E7002077

+:10A2C000EDE7C046FF070000F0B54746CE46040064

+:10A2D000180016001B031B0B2D4D4A00994680B534

+:10A2E00043000F03A446B0463F0B520DC90F5B0D50

+:10A2F000C00FAA4221D0AB4213D0002A22D13C4346

+:10A30000002B02D14D462E4322D0002C10D081428A

+:10A3100022D00220013908400138C0BCB946B046FD

+:10A32000F0BD4D462E4329D1002AF0D13C43EED159

+:10A330000028F2D101204042EFE73D0025431DD126

+:10A340009342EED0002BE2D14C462643DFD1E0E72A

+:10A350000020002CE1D0DCE79A420ADCE8DB4F4524

+:10A36000D7D80ED000204F45D7D20029E2D0080020

+:10A37000D3E74342584140000138CEE70220404233

+:10A38000CBE7C445C5D80020C445C6D2EDE7C046DA

+:10A39000FF070000F0B54746CE460400180016003F

+:10A3A0001B031B0B2C4D4A00994680B543000F033D

+:10A3B000A446B0463F0B520DC90F5B0DC00FAA4219

+:10A3C0000DD0AB4210D0002A27D13C43002B11D135

+:10A3D0004D462E430ED10020002C15D00EE03D003E

+:10A3E000254310D1934218D14D462E430BD1002A5C

+:10A3F00002D13C43002C0BD0814214D00220013901

+:10A400000840013800E00220C0BCB946B046F0BDAB

+:10A410000028F9D101204042F6E7002BECD14C4650

+:10A420002643E9D1EAE79A4204DD4342584140001D

+:10A430000138E9E79A42EBDB4F45DFD806D0002030

+:10A440004F45E1D20029E5D00800DDE7C445D5D865

+:10A450000020C445D8D2F5E7FF07000030B514004E

+:10A460001A00094B05001B6885B0D868074B002C03

+:10A4700001D1074B1C00019300912B000549029468

+:10A4800000F00AF801F07CF8EC010008B4F20010CA

+:10A49000EFF20010C1F200100EB403B5010003ABDF

+:10A4A000044804CB0068019300F0DAF902B008BC5C

+:10A4B00003B01847EC010008F7B553430500170037

+:10A4C000089C01910093002804D08369002B01D1DE

+:10A4D00002F030F8274B9C4225D16C68636EDB0795

+:10A4E00005D4A3899B0502D4A06D00F057F8A38979

+:10A4F0001B0722D52369002B1FD00026009B9E42FC

+:10A5000022D0019B995DA368013BA360002B04DA74

+:10A51000A269934226DB0A2924D023685A1C2260B0

+:10A5200019700136EAE7144B9C4201D1AC68D5E7BB

+:10A53000124B9C42D2D1EC68D0E72100280000F0F9

+:10A54000A7FF0026B042D8D0636EDB0705D4A389ED

+:10A550009B0502D4A06D00F022F839003000FEF710

+:10A560006DFCFEBD2200280000F03CFF431CD8D14A

+:10A57000EAE7C046F0F4001010F50010D0F4001027

+:10A5800007B5009313000A00010002480068FFF7B6

+:10A5900093FF0EBDEC01000870477047704770478D

+:10A5A00010B5034B0100186800F0BCF810BDC046A0

+:10A5B000EC01000830B500240139A24201D100208D

+:10A5C00005E0035D01340D5DAB42F6D0581B30BD94

+:10A5D000002310B59A4200D110BDCC5CC4540133A5

+:10A5E000F8E703008218934200D1704719700133D5

+:10A5F000F9E770B5130C0D0C1ED1002B0CD189B2EC

+:10A6000094B24C43210000F08DF8051E1BD02200AF

+:10A610000021FFF7E6FF16E01D1C0B1C92B289B269

+:10A620009CB25143ABB263430C0C1C19220C07D1F2

+:10A63000240489B20C43E5E7002B01D1131CEDE79C

+:10A640000C2300250360280070BD000070B50500D4

+:10A65000002910D00C1F2368002B00DAE418280012

+:10A6600002F096F81D4A1368002B05D16360146050

+:10A67000280002F095F870BDA34208D9216860183F

+:10A680008342F3D118685B6841182160EEE71A0035

+:10A690005B68002B01D0A342F9D911685018A04281

+:10A6A0000BD120680918501811608342E0D1186856

+:10A6B0005B68411811605360DAE7A04202D90C23AD

+:10A6C0002B60D5E721686018834203D118685B6866

+:10A6D0004118216063605460CAE7C0466C6001089D

+:10A6E00070B50F4E0D0031680400002902D100F052

+:10A6F0005FFE30602900200000F05AFE431C0AD0A3

+:10A700000323C51C9D43A84207D0291A200000F04E

+:10A710004FFE431C01D101256D42280070BDC0468B

+:10A7200070600108F7B50322CB1C93430833060081

+:10A730001F000C2B32D20C27B94231D8300002F066

+:10A7400027F8324D2B681C00002C2ED13900300028

+:10A75000FFF7C6FF0400431C1ED12C682500002D06

+:10A760004AD123682900E3183000019300F020FE4D

+:10A77000019B834243D123680337FF1A03239F437E

+:10A7800008370C2F00D20C2739003000FFF7A8FF44

+:10A79000431C34D02368DF19276013E0002BCBDA89

+:10A7A0000C23002533602800FEBD2268D11B20D475

+:10A7B0000B2917D9E2192760A34211D12A606368D7

+:10A7C000116053603000250001F0EAFF07220B35CD

+:10A7D000231D9543EA1A9D42E5D05B1BA350E2E797

+:10A7E0005A60ECE76268A34201D12A60EAE75A6046

+:10A7F000E8E723006468A7E72C006D68AFE70C2347

+:10A800003000336001F0CCFFCDE7C0466C6001083A

+:10A81000936810B5013B9360002B04DA9469A3425E

+:10A8200007DB0A2905D01368581C1060197008004E

+:10A8300010BD00F0D7FD0100F9E7F8B506000F00E4

+:10A840001400D518AC4201D1002007E021783A006D

+:10A850003000FFF7DDFF0134431CF3D1F8BD0000E9

+:10A86000F0B5A1B006000C001F000392002804D030

+:10A870008369002B01D101F05DFE8E4B9C421CD1FF

+:10A880007468636EDB0705D4A3899B0502D4A06DB1

+:10A89000FFF784FEA3891B0702D52369002B1DD176

+:10A8A0002100300000F0F4FD002817D0636EDB07B4

+:10A8B0000DD50120404221B0F0BD7F4B9C4201D11B

+:10A8C000B468DEE77D4B9C42DBD1F468D9E7A3890D

+:10A8D0009B05EED4A06DFFF762FEEAE7002308AD0A

+:10A8E0006B6120336B761033AB760797039F3B7811

+:10A8F000002B01D0252B4ED1039BFB1A0593039B04

+:10A900009F420DD0059B21003000039AFFF795FF71

+:10A91000431C00D1B5E06A69059B944663446B61B2

+:10A920003B78002B00D1ACE001227B1C0393002379

+:10A9300052426A6004A9543252182B60EB60AB603B

+:10A940001370AB65039B052219785D4801F014FF75

+:10A95000039B5F1C002820D12A68D30604D553230B

+:10A9600004A95B1820211970130704D5532304A9E7

+:10A970005B182B211970039B1B782A2B16D0002102

+:10A98000EB68039F3A78781C303A8446092A4FD9FD

+:10A99000002911D117E00137A9E7494B2A68C01AED

+:10A9A0000123834013432B600397CBE7079B191DBB

+:10A9B0001B680791002B01DB0B9304E05B42EB600B

+:10A9C000022313432B603B782E2B0AD17B782A2B52

+:10A9D00037D1079B02371A1D1B680792002B2DDB0E

+:10A9E000099303223978374801F0C6FE002807D0C2

+:10A9F000344B2A68C01A40238340134301372B602D

+:10AA000039787B1C062230480393297601F0B4FE86

+:10AA1000002845D02D4B002B27D10722079B073359

+:10AA20009343083307936B69049A9B186B615DE746

+:10AA30000A214B4367469B180939A3E701235B4270

+:10AA4000CEE700231A0001376B603978781C303963

+:10AA50008446092903D9002BC3D00992C1E70A23F0

+:10AA60005A4367465218093BEFE707AB00932200B1

+:10AA700029003000164B00F0D7F80490049B0133F6

+:10AA8000D1D1636EDB0705D4A3899B0502D4A06DE9

+:10AA9000FFF785FDA3895B0600D50AE70D980AE755

+:10AAA00007AB0093220029003000094B00F06EFB39

+:10AAB000E3E7C046F0F4001010F50010D0F40010E9

+:10AAC000F4F20010FAF20010FEF2001029AC0010AF

+:10AAD0003BA80010F0B51E00002314008BB09E426E

+:10AAE00004DA8021090673181E002D23129A149F80

+:10AAF0001370202303229F43462F07D03B00453B82

+:10AB000059424B411099013ACB18109309AB049369

+:10AB100008AB0393139B00920293109B22000193B6

+:10AB2000330000F0BFFD0500472F02D1119BDB076A

+:10AB300028D5109BEB180793462F14D12B78302B78

+:10AB40000CD10022002320003100FFF723FB002856

+:10AB500004D10123109A9B1A139A1360139B079A2E

+:10AB60001B68D31807930022002320003100FFF751

+:10AB700011FB002801D0079B09933022099B0799FC

+:10AB80008B4206D32800099B159A5B1B13600BB000

+:10AB9000F0BD591C09911A70F0E7F0B5831C87B01D

+:10ABA000039305000C002B230270002901DA4C42AC

+:10ABB00002336B70092C31DD0A2704ABDE1D200047

+:10ABC00039000196FEF7AAFA013E303120003170BB

+:10ABD00039000294FEF7BCF9029B0400632BEEDC03

+:10ABE000019B30349A1E13000399147004A8073097

+:10ABF00098420ED804AB073300209A4204D804AB25

+:10AC00000930C018019BC01A039B1818401B07B0DD

+:10AC1000F0BD1878013308700131E7E73023E418FC

+:10AC2000AB70281DEC70F1E7F0B595B00C000992FF

+:10AC30001E001A9D070001F01DFD036818000C930B

+:10AC400000F0C8FB00231293237E07220A93236897

+:10AC50000E900D930D992B68C90547D59B1893430A

+:10AC60001A0008322A601A685B68A264E364012251

+:10AC7000A36CE56C0B936B005B080F930B98A74BD1

+:10AC80000F99524203F076F8002831D10122A34BEC

+:10AC90000B980F995242FFF78DFA002828D1002215

+:10ACA000002329000B98FFF77BFA002803D023002C

+:10ACB0002D2243331A700A9B994D472B00D9994D89

+:10ACC00003230D9A236101339A43002322600B93DF

+:10ACD000099B21003800009613AA00F0E7F9431CF5

+:10ACE00000D0A2E00120404215B0F0BD0733B6E726

+:10ACF0000B9A2B001000290003F03CF800280BD021

+:10AD0000002D03DA23002D2243331A700A9B864D4F

+:10AD1000472BD5D9854DD3E720220A996368914303

+:10AD20000F915A1C49D10733636080230D9ADB00D1

+:10AD300013430022069212AA05920A9A08A90492C5

+:10AD400011AA03922322236001936368521802928E

+:10AD5000009338002B000B9AFFF7BCFE0F9B0500F9

+:10AD60001199472B08D1CB1C02DB6368994248DD5F

+:10AD70000A9B023BDBB20A930A9B652B24D8200076

+:10AD80001A00013950301191FFF707FF129A0B900A

+:10AD900013182361012A02DC2268D20701D501338E

+:10ADA0002361232308AA9B181B78002B00D18FE76F

+:10ADB00023002D2243331A708AE70F9A472AB4D111

+:10ADC000002BB2D10133AFE70A9B662B1BD163681E

+:10ADD00000290DDD2161002B02D12268D20702D5A6

+:10ADE000013359182161119BA36500230B93D8E708

+:10ADF000002B03D101222168114200D09A1C22614C

+:10AE0000F1E767230A93119B129A934206DB2268AB

+:10AE10002361D207E7D501332361E4E70121002B49

+:10AE200001DC4918C91A5218E9E72268530507D40A

+:10AE300023692A0038000999B047431C28D151E7FB

+:10AE40000A9B652B00D8E1E0A06CE16C0022002396

+:10AE5000FFF7A0F9002831D001233800344A0999BE

+:10AE6000B047431C00D13DE7119B129A934202DB8D

+:10AE70002368DB070CD538000E9B0C9A0999B04764

+:10AE80000025431C00D12DE7129B013BAB420ADC9D

+:10AE900023689B0700D506E1139BE068984200DB1E

+:10AEA00022E7180020E722000123380009991A320E

+:10AEB000B047431C00D115E70135E5E7119B002B96

+:10AEC00038DC012338001A4A0999B047431C00D1E5

+:10AED00008E7119B129A134302D12368DB07D7D5E9

+:10AEE0000E9B38000C9A0999B047431C00D1F9E633

+:10AEF00000230A93119B0A9A5B42934201DC129B46

+:10AF000097E722000123380009991A32B047431C01

+:10AF100000D1E7E60A9B0133EBE7C046FFFFEF7F76

+:10AF200005F3001009F300100DF3001011F30010E9

+:10AF300015F30010129AA36D0A929A4200DD0A934B

+:10AF40000A9B002B3CDC00230D930A9BDB43DB17A1

+:10AF50000F93A36D0F9A0B930A9B13400B9AD31A6E

+:10AF60000D9A934234DC119B129A93423DDB236885

+:10AF7000DB073AD4129A0B9B1199D31A521A0A92F0

+:10AF80009A4200DD0A930A9B002B36DC0A9B0025BF

+:10AF9000DB43DB170B93119A129B0B999B1A0A9AAE

+:10AFA0000A409B1AAB4200DC72E722000123380002

+:10AFB00009991A32B047431C00D193E60135EAE7FC

+:10AFC0000A9B2A0038000999B047431CBBD189E687

+:10AFD00022000123380009991A32B047431C00D1DE

+:10AFE00080E60D9B01330D93B3E70E9B38000C9A5E

+:10AFF0000999B047431CBDD174E60B9B3800EA1891

+:10B0000009990A9BB047431CC0D16BE6129B012BE8

+:10B0100002DC01231A4234D001232A0038000999A6

+:10B02000B047431C00D15DE60E9B38000C9A09998D

+:10B03000B047431C00D155E6A06CE16C0022002310

+:10B04000FFF7A8F800281AD1129B6A1C013B3800B0

+:10B050000999B047431C0ED144E622000123380071

+:10B0600009991A32B047431C00D13BE60135129BC7

+:10B07000013BAB42F1DC22000B9B5032DAE60025AB

+:10B08000F5E72A00E3E72200012338000999193285

+:10B09000B047431C00D125E60135E368139A9B1A9B

+:10B0A000AB42F0DCF8E60025F7E7C046F7B515003F

+:10B0B00001938A680B690C000090934200DA130038

+:10B0C00022002B6043321278002A01D001332B601A

+:10B0D00023689B0602D52B6802332B602268062367

+:10B0E00017001F401A4227D0230043331B785A1EF3

+:10B0F00093412268920630D4220001990098089E5C

+:10B100004332B047431C25D0062320682A68E168F3

+:10B1100000250340042B03D18D1AEB43DB171D40A0

+:10B12000A3682269934201DD9B1AED180027BD42F6

+:10B1300020D1002010E00137E3682A689B1ABB4247

+:10B14000D2DD2200012301990098089E1932B047F0

+:10B15000431CF0D101204042FEBD3020E1184331B4

+:10B16000087021005A1C45310978A2184332023375

+:10B170001170C1E72200012301990098089E1A323C

+:10B18000B047431CE6D00137D1E70000F0B58BB0E3

+:10B1900006920A0043320793059004920A7E0C003F

+:10B1A000109B782A07D8622A09D8002A00D1C1E06A

+:10B1B000582A00D18CE026004236327022E010007E

+:10B1C00063381528F7D802F023F816001F00F6FFA1

+:10B1D000F6FFF6FFF6FF1F00F6FFF6FFF6FFF6FF9D

+:10B1E000A80036009A00F6FFF6FFB900F6FF360019

+:10B1F000F6FFF6FF9E0026001A684236111D196000

+:10B20000136833700123A7E0086819680A1D050652

+:10B210000BD50D681A60002D03DA2D23049A6D42B8

+:10B220001370614B0A2703931BE00D681A604106F7

+:10B23000F1D52DB2EFE70D681968081D18602E06CC

+:10B2400001D50D6803E06D06FBD50D68ADB2564B18

+:10B25000082703936F2A00D00237230000224333CC

+:10B260001A706368A360002B03DB042221689143FA

+:10B270002160002D02D1049E002B0CD0049E2800DA

+:10B280003900FDF761FE039B013E5B5C33702B00D0

+:10B2900005009F42F3D9082F09D12368DB0706D5A3

+:10B2A00063682269934202DC3023013E3370049BC1

+:10B2B0009B1B2361079B210000930598069B09AA0D

+:10B2C000FFF7F4FE431C4CD1012040420BB0F0BD0F

+:10B2D00045310A70344A03921A68216820CA1A60FC

+:10B2E000080616D5CB0702D5202319432160102765

+:10B2F000002DB2D1202322689A432260ADE720229C

+:10B3000009680A4322602200782145321170274AD9

+:10B31000E1E74806E6D5ADB2E4E71A680D68101D0E

+:10B320004969186013682E0601D5196002E06D06A0

+:10B33000FBD519800023049E2361BBE71A68111D09

+:10B340001960166800213000626801F015FA0028C3

+:10B3500001D0801B6060636823610023049A13702E

+:10B36000A8E72369320006990598079DA847431C62

+:10B37000AAD023689B0715D4099BE0689842A5DAF8

+:10B380001800A3E72200012306990598079E1932A9

+:10B39000B047431C98D00135E368099A9B1AAB4229

+:10B3A000F0DCE9E70025F7E717F3001028F30010B9

+:10B3B000002370B5064D040008002B6002F04EFD1E

+:10B3C000431C03D12B68002B00D0236070BDC04606

+:10B3D000746001080023C25C0133002AFBD1581EAF

+:10B3E00070470000F8B505000E001400002804D0D6

+:10B3F0008369002B01D101F09DF8224B9C422ED194

+:10B400006C68A369A360A3891B0732D52369002B4D

+:10B410002FD023682269F7B2981A6369F6B2834283

+:10B4200005DC2100280000F0E3FF002827D1A368F5

+:10B430000130013BA36023685A1C22601F706369BE

+:10B44000834204D0A389DB0707D50A2E05D121004A

+:10B45000280000F0CDFF002811D13000F8BD0A4BC4

+:10B460009C4201D1AC68CCE7084B9C42C9D1EC6846

+:10B47000C7E72100280000F00BF80028C9D00126FA

+:10B480007642EAE7F0F4001010F50010D0F4001056

+:10B49000374B70B51D6806000C00002D05D0AB6958

+:10B4A000002B02D1280001F045F8324B9C420FD10D

+:10B4B0006C680C23E25E93B211072DD4D90611D427

+:10B4C00009230120336037331343A381404270BD09

+:10B4D000294B9C4201D1AC68EBE7284B9C42E8D158

+:10B4E000EC68E6E75B0713D5616B002908D0230001

+:10B4F0004433994202D03000FFF7A8F80023636379

+:10B500002422A3899343A3810023636023692360DA

+:10B510000823A2891343A3812369002B0BD1A02107

+:10B520008022A389890092000B40934203D021001E

+:10B53000300001F0CBF80C22A35E01201A0099B272

+:10B54000024003420FD00022A26062695242A2610F

+:10B55000002022698242BAD10A06B8D5402213439C

+:10B56000A3810138B3E7880700D46269A260EFE7DE

+:10B57000EC010008F0F4001010F50010D0F40010F9

+:10B58000062010B501F0DAFC012002F075FCF0B5E0

+:10B5900006000B69326987B0002003919A4265DB8F

+:10B5A000013B9C0000930B00143305931B1904937B

+:10B5B0003300143302931C19049B27681B6838005E

+:10B5C0005D1C29000193FDF739FC0190AF4224D3A3

+:10B5D0000025AC460298059F08CF019A99B25143C5

+:10B5E0001B0C534349190A0C9B18026889B292B28A

+:10B5F0006244521A01681D0C090C9BB2CB1A11143B

+:10B600005B18191492B21B041A43049B8C4604C0A5

+:10B61000BB42E1D22368002B30D03000039901F007

+:10B620004BFB002821DB30000024019B03990133F0

+:10B63000019314301431036820C99AB21419AAB2C4

+:10B64000A21A1B0C2D0C14145B1B1B191C1492B298

+:10B650001B04134308C0049B8B42ECD2009B029A4C

+:10B660009B00D3181A68002A15D0019807B0F0BDC6

+:10B670002368002B06D1009B013B0093029B043CF6

+:10B68000A342F5D3009B3361C7E71A68002A06D1AD

+:10B69000009A013A0092029A043B9A42F5D3009B29

+:10B6A0003361E2E7F0B59DB002920393029B039CE5

+:10B6B00008930994446A0700259D002C0ED11020A0

+:10B6C000FEF76EFF021E786204D1EA21C74BC8481C

+:10B6D000FEF7C4FE446084600460C4607B6A19683D

+:10B6E00000290AD05A68012393404A608B603800D1

+:10B6F00001F0A2F800227B6A1A60039B002B20DA7B

+:10B7000001232B60039B5B005B080993099DB94BE8

+:10B71000B84A2B40934217D1B74B249A28031360A1

+:10B72000029B000B184301D100F0BFFDB348269BDC

+:10B730000690002B02D0B24B269A136006981DB0DB

+:10B74000F0BD00232B60E1E7089B099C1293139442

+:10B750001298139900220023FEF71CFD041E09D045

+:10B760000123249A1360A74B0693269B002BE5D058

+:10B77000A54BE1E71AAB01931BAB00933800129A7B

+:10B78000139B01F04DFB6E000590760D00D17CE01F

+:10B7900012981399139B9D4A1B031B0B1A4311000C

+:10B7A0009B4B1894F61800229A4BFEF7EBF89A4A36

+:10B7B0009A4B02F073F89A4A9A4B01F033FD040059

+:10B7C00030000D00FEF7A6FC974A984B02F066F891

+:10B7D00002000B002000290001F024FD04000D00F0

+:10B7E000FEF762FC00220290002320002900FEF7F1

+:10B7F000D7FC00280BD00298FEF78CFC2B0022000F

+:10B80000FEF7C8FC43425841029B1B1A02930123D6

+:10B810001693029B162B0FD812981399DA00844BBB

+:10B820009B181A685B68FEF7BBFC002849D0029B96

+:10B83000013B0293002316931A9B9E1B00230A933D

+:10B840003300013B0D9304D501239B1B0A93002376

+:10B850000D93029B002B36DB029A0D9B94466344AA

+:10B860000D93002315920E93229B0124092B64D87B

+:10B87000052B02DD0024043B2293229B981E032803

+:10B8800064D801F0BBFC293836581A9B1B9A9E18C5

+:10B89000684BF218202A0FDD40239B1A9D40664B0F

+:10B8A0000298F318D840284302F082FA0123634C2F

+:10B8B000013E0919189376E7202302989B1A9840B5

+:10B8C000F2E71690B8E70A9B029A9B1A0A93534232

+:10B8D0000E9300231593C7E700230F93239B0C932C

+:10B8E0000793002B13DC01231A000C930793239278

+:10B8F0000DE00123F1E70023239A0F939446029B66

+:10B9000063440C9301330793002B00DC01230022D6

+:10B91000786A426004321500143541689D4219D995

+:10B92000380000F045FF0690002817D1D52102000D

+:10B93000434B4900CBE60123DEE700230F9422931B

+:10B94000013B0C93079300221333D0E701230F939D

+:10B95000023BF6E7013141605200DCE77B6A069A60

+:10B960001A60079B0E2B00D9EBE0002C00D1E8E019

+:10B97000029B002B68DD1A000F212D4B0A40D200DC

+:10B980009B181D685E68029B1C1102231093029B8A

+:10B99000DB050BD52B4B0C401A6A5B6A1298139986

+:10B9A000FDF7FAFC0323089009911093254B14939B

+:10B9B000002C08D1089809992A003300FDF7ECFC07

+:10B9C000089009915CE001231C420BD0109B2800D9

+:10B9D00001331093149B31001A685B6801F05EFF1D

+:10B9E00005000E00149B64100833E0E747F40010D4

+:10B9F0005EF400100000F07F0F27000043F40010F9

+:10BA000046F4001015F3001016F300100000F03F8C

+:10BA100001FCFFFF0000F83F61436F63A787D23F3F

+:10BA2000B3C8608B288AC63FFB799F501344D33F2D

+:10BA3000C8F500103204000012040000000010FEDF

+:10BA4000BCF40010A0F5001002231093029B002B01

+:10BA500016D0129813995C420F23B64A2340DB009C

+:10BA6000D3181A685B6801F019FF012600230890BB

+:10BA70000991B14D2411002C00D094E0002B9FD1EE

+:10BA8000169B002B00D19BE0089C099D0022200002

+:10BA90002900AA4BFEF784FB002800D190E0079B09

+:10BAA000002B00D18CE00C9B002B46DD029B00227A

+:10BAB000200029005E1EA24B01F0F0FE109B0890B2

+:10BAC0000991013310930C9B1098089C099D1493C5

+:10BAD000FEF720FB22002B0001F0E0FE0022994B34

+:10BAE00001F0A0FB10901191109A119B08920993FC

+:10BAF000954A119B9446634417930993149B002B1A

+:10BB000061D1002220002900904BFDF73BFF089AED

+:10BB1000179B04000D00FEF757FB002800D0AFE292

+:10BB20008B481199844661440B0020002900089A33

+:10BB3000FEF736FB002800D09FE2129B139C08936F

+:10BB400009941B9B002B00DA72E1029A0E2A00DD99

+:10BB50006EE1784BD2009B185C681B680A930B94CB

+:10BB6000239B002B00DBF7E0079B002B00DDF3E0BD

+:10BB700000D082E20A980B990022744B01F08EFEED

+:10BB8000089A099BFEF72AFB079E3500002800D083

+:10BB900059E2069B069A0133089331231370029BE6

+:10BBA0000133029354E2344207D0109B01331093C7

+:10BBB0002A686B6801F072FE3300641008355AE79A

+:10BBC000029E079B80E7149B0F995A1E594BD20087

+:10BBD0009B181A685B68002951D000205D49FDF769

+:10BBE000DBFB089A099BFDF7CDFE069A069B94465F

+:10BBF0001793149B1090119163441993290020000E

+:10BC0000FEF752FA1490FEF785FA02000B002000AE

+:10BC10002900FDF7B7FE179B179A01330893149B71

+:10BC2000040030331370109A119B0D00FEF7B8FA20

+:10BC3000002875D122002B0000204049FDF7A2FE0C

+:10BC4000109A119BFEF7ACFA002800D0D2E0199BA5

+:10BC5000089A934200D170E7109811990022384B4E

+:10BC600001F01CFE364B109011910022200029009B

+:10BC700001F014FE089B04000D001793BEE708981E

+:10BC8000099901F00BFE069A069B94460893149BB3

+:10BC9000109011916344199329002000FEF704FAD3

+:10BCA0001790FEF737FA02000B0020002900FDF77D

+:10BCB00069FE179B089A303313701300199A0133E9

+:10BCC00004000D00089393422CD110981199069A04

+:10BCD000149B94466344002208931E4B01F0A2FA81

+:10BCE00002000B0020002900FEF76EFA002800D0A9

+:10BCF00080E0109A119B00201649FDF743FE0200D8

+:10BD00000B0020002900FEF74BFA002800D114E7B1

+:10BD1000089B1A00013A08921278302AF8D008934A

+:10BD2000029655E00022064B01F0B8FD04000D001C

+:10BD3000B2E7C046C8F50010A0F500100000F03FC3

+:10BD40000000244000001C400000C0FC0000144023

+:10BD50000000C07C0000E03F079B069E013B9B1952

+:10BD60000C93089C099D0A9A0B9B20002900FDF763

+:10BD700013FBFEF799F90790FEF7CCF90A9A0B9B93

+:10BD800001F08CFD02000B0020002900FDF7FAFDF8

+:10BD90003300079A013630321A700C9A08969A428C

+:10BDA00039D102000B0001F03DFA0A9A0B9B040006

+:10BDB0000D00FEF709FA00281BD10A9A0B9B200000

+:10BDC0002900FEF7E7F9002802D0079BDB0710D413

+:10BDD0003800059900F030FD0023089A029813708E

+:10BDE000249B01301860269B002B00D1A6E41A602A

+:10BDF000A4E4029E089B0893013B1A78392A06D1D5

+:10BE0000069A9A42F7D13022069901360A701A78BA

+:10BE100001321A7084E70022AA4B01F03FFD002294

+:10BE2000002304000D00FEF7B5F900289BD0CFE7F2

+:10BE30000F9D0E9E0A9C002D12D0229A012A66DCCC

+:10BE4000189A002A5DD0A04A9B180A9A0121D2189C

+:10BE50000A920D9A3800D3180D9300F09DFD05004D

+:10BE6000002C0EDD0D9B002B0BDD0D9A2300944260

+:10BE700000DD13000A9AE41AD21A0A920D9AD31A14

+:10BE80000D930E9B002B1FD00F9B002B54D0002E28

+:10BE900011DD29003200380000F044FE059A01004F

+:10BEA0000500380000F08EFD05991490380000F070

+:10BEB000C3FC149B05930E9B9A1BB34204D038001D

+:10BEC000059900F02FFE05900121380000F064FD77

+:10BED000159B0600002B31DD1A000100380000F030

+:10BEE00021FE229B0600012B2DDD00230E933369DA

+:10BEF00003339B00F318586800F006FD2023181A3E

+:10BF000039E036231A9A0E9E0A9C9B1A9DE7079BDE

+:10BF10005E1E0E9BB34207DB9E1B079B0A9C002BF9

+:10BF200093DAE41A002390E70E9B159AF31AD318BC

+:10BF30000E9615930026F0E70E9AC0E700230E93A5

+:10BF4000229B012B13DC00230E93089B002B0ED1A8

+:10BF5000099B1B030BD15D4B099A134207D00A9B27

+:10BF600001330A930D9B01330D9301230E93159B0F

+:10BF70000120002BBBD10D9B1F221818030013407A

+:10BF8000104246D00132D21A042A3FDD1C22D31AB5

+:10BF90000A9AE418D2180A920D9AD3180D930A9BA4

+:10BFA000002B05DD1A003800059900F017FE0590FA

+:10BFB0000D9B002B05DD31001A00380000F00EFE4D

+:10BFC0000600169B002B26D03100059800F074FE69

+:10BFD000002820DA029B0A22013B0293380000234A

+:10BFE000059900F04DFC0F9B0590002B00D166E1F8

+:10BFF000002329000A22380000F042FC0C9B0500B7

+:10C00000002B47DC229B022B0DDC43E0042AC6D028

+:10C0100013001C33BCE7079B002B35DC229B022B53

+:10C0200032DD079B0C930C9B002B0CD131000522B9

+:10C03000380000F025FC06000100059800F03CFEE9

+:10C04000002800DDA5E5239BDB430293069B0893B4

+:10C0500000243100380000F0EFFB002D00D1B7E6DE

+:10C06000002C05D0AC4203D02100380000F0E4FBE6

+:10C070002900380000F0E0FBAAE600263500E2E7E0

+:10C080000296149E350084E50F9B002B00D1CEE074

+:10C09000079B0C93002C05DD29002200380000F0DE

+:10C0A0009DFD05000E9B2800002B22D038006968FA

+:10C0B00000F07EFB041E0FD10200054B0549FFF77F

+:10C0C00006FBC04600002440330400000000F07F5F

+:10C0D000BCF40010EA02000029002B690C319A1C04

+:10C0E00092000C30FEF774FA01222100380000F0B3

+:10C0F00075FD069B0C9A0A93013B9B1801222C00AC

+:10C1000005001493089B13400F9331000598FFF727

+:10C110003EFA0300210030330D900598079300F09C

+:10C12000CBFD2A000E903100380000F0E1FDC3681D

+:10C130000890109301230C93109B002B04D1010055

+:10C14000059800F0B9FD0C903800089900F074FBD8

+:10C150000A9B0C9A01330893229B13430F9A1343B3

+:10C160000CD1079B392B26D00E9B002B02DD0D9B9B

+:10C17000313307930A9B079A1A706AE70E9B002BCC

+:10C1800004DB229A13430F9A13431FD10C9B002BFD

+:10C19000F0DD05990122380000F020FD3100059006

+:10C1A00000F08AFD002803DCE4D1079BDB07E1D522

+:10C1B000079B392BDBD139230A9A1370089B08930C

+:10C1C000013B1A78392A68D00132D5E70C9B002B45

+:10C1D00007DD079B392BEED0079B0A9A01331370BA

+:10C1E00037E70A9B079A1A70149B0A9A93423ED02B

+:10C1F00000230A220599380000F042FB0023059035

+:10C200000A2221003800AC4206D100F039FB0400BC

+:10C210000500089B0A9378E700F032FB2900040030

+:10C2200000230A22380000F02BFB0500F1E7079BF2

+:10C230000C93002431000598FFF7A9F9069B3030D4

+:10C2400018550C9B01340790A34207DD00230A22F6

+:10C250003800059900F014FB0590EBE70C9B0120DA

+:10C26000002B00DD18000024069B1B18089305997D

+:10C270000122380000F0B2FC3100059000F01CFDF6

+:10C2800000289BDC02D1079BDB0797D4089B08930F

+:10C29000013B1A78302AFAD0DBE6069A9A428ED110

+:10C2A000029B01330293312399E7094B269A0693A7

+:10C2B000084B002A01D0FFF73FFAFFF73FFA0C9B2B

+:10C2C000002BB6DC229B022B00DDACE6B1E7C046BA

+:10C2D0003AF4001042F40010F7B58B8905000C0009

+:10C2E0001A075FD44A68002A04DC0A6C002A01DCC1

+:10C2F0000020FEBDE76A002FFAD0002280212E68C0

+:10C300002A601A0049010A400B4234D0606DA389AB

+:10C310005B0706D56368C01A636B002B01D0236CE2

+:10C32000C01A0200216A00232800E76AB847A189E1

+:10C33000431C06D12B681D2B31D82C4ADA40D30779

+:10C340002DD50023636023692360CB0405D5431CEE

+:10C3500002D12B68002B00D16065616B2E60002933

+:10C36000C6D023004433994202D02800FEF76EF96C

+:10C3700000206063BDE701232800216AB847431C01

+:10C38000C5D12B68002BC2D01D2B01D0162B01D19B

+:10C390002E60ADE74023A2891343A381A9E7402380

+:10C3A0000B43FAE70F69002FA2D00A680F60D21B77

+:10C3B000019200229B0700D14A69A260019B002BD9

+:10C3C00000DC95E73A002800019B216AA66AB04785

+:10C3D000002806DC40230120A28940421343A381A8

+:10C3E00087E7019B3F181B1A0193E7E701004020F4

+:10C3F0000B6970B505000C00002B02D10025280048

+:10C4000070BD002804D08369002B01D100F092F8A0

+:10C41000144B9C421BD16C680C22A35E002BEDD008

+:10C42000626ED20704D49B0502D4A06DFEF7B6F865

+:10C4300028002100FFF750FF636E0500DB07DED404

+:10C44000A3899B05DBD4A06DFEF7A9F8D7E7064BBF

+:10C450009C4201D1AC68DFE7044B9C42DCD1EC6824

+:10C46000DAE7C046F0F4001010F50010D0F4001028

+:10C47000002310B50400036043608360818143663C

+:10C480001900C28103614361836108225C30FEF7B9

+:10C49000A8F8054B24626362044BA362044BE36279

+:10C4A000044B236310BDC0467DCF0010A5CF001004

+:10C4B000DDCF001009D0001010B5024900F0BAF825

+:10C4C00010BDC0467DD0001070B568254A1E55438A

+:10C4D0000E0029007431FEF725F9041E08D0002152

+:10C4E0002A00016046600C30A0606832FEF779F8DF

+:10C4F000200070BD10B50248FEF750F810BDC046D0

+:10C500006960010810B50248FEF749F810BDC04641

+:10C510006960010810B50248FEF740F810BDC0463A

+:10C520006A60010810B50248FEF739F810BDC04630

+:10C530006A60010813B50400FFF7ECFFA369002B44

+:10C5400002D0FFF7EFFF13BDA364E3642365134B31

+:10C55000134A1B68A2620193A34201D10123A36184

+:10C56000200000F01FF86060200000F01BF8A060C1

+:10C57000200000F017F800220421E0606068FFF757

+:10C5800077FF01220921A068FFF772FF0222122122

+:10C59000E068FFF76DFF0123A361D2E7F0F200101E

+:10C5A000B9C40010F8B50700FFF7A4FF1F4B1868C7

+:10C5B0008369002B01D1FFF7BDFF3E004836B46808

+:10C5C0007368013B04D53368002B22D03668F6E748

+:10C5D0000C22A55E002D1AD12000154B5830E360C7

+:10C5E0006566FDF7D9FFFFF78DFF200008222900BF

+:10C5F0002560A560656025616561A5615C30FDF71A

+:10C60000F0FF6563A563A564E5642000F8BD6834A8

+:10C61000D7E704213800FFF757FF041E3060D5D15B

+:10C62000FFF770FF0C233B60EFE7C046F0F200100D

+:10C630000100FFFFF7B50400060000270191483410

+:10C640006368A5680093009B013B009304D52468B0

+:10C65000002CF5D13800FEBDAB89012B08D90E2284

+:10C66000AB5E013304D029003000019B984707439B

+:10C670006835E8E7004870474003000870B50E00D1

+:10C680001D000E23C95E140096B0002908DA0C22A2

+:10C69000B35E00222A601B0611D48023DB000FE06A

+:10C6A0006A4600F05FFD0028F1DBF02301991B02D0

+:10C6B0001940054BC9184B4259412960EDE7402309

+:10C6C0000020236016B070BD00E0FFFFF7B5022622

+:10C6D0008B8905000C00334206D0230047332360CA

+:10C6E000236101236361F7BD6A4601ABFFF7C6FF13

+:10C6F000009907002800FEF715F8002808D10C2241

+:10C70000A35E9A05EFD4032293431E43A681E4E778

+:10C710000F4BAB628023A28920601343A381009B4F

+:10C7200020616361019B002B0DD028000E23E15E88

+:10C7300000F02AFD002806D00322A38993431A00A3

+:10C7400001231343A381A0890743A781CBE7C046F8

+:10C75000B9C4001082B0002900D101A9101E06D072

+:10C76000002B06D013780B601078431E984102B05E

+:10C77000704702204042FAE7C9B28218904201D1C4

+:10C780000020704703788B42FBD00130F6E70000B1

+:10C7900010B50248FDF702FF10BDC04668600108F1

+:10C7A00010B50248FDF7FBFE10BDC04668600108E9

+:10C7B00070B5456A06000C00002D0ED11020FDF763

+:10C7C000EFFE021E706204D16621194B1948FDF775

+:10C7D00045FE456085600560C560756AEB68002BA5

+:10C7E00013D0736AA200DB689B181868002818D160

+:10C7F00001210D00A5406A1D30009200FDF7F9FEF1

+:10C8000000280CD0446085600DE021220421300016

+:10C81000FDF7EFFE736AE860DB68002BE1D10020D2

+:10C8200070BD02681A6000230361C360F8E7C04668

+:10C8300047F400103AF5001070B5466A05000C0088

+:10C84000002E0ED11020FDF7ABFE021E686204D14F

+:10C850008A21094B0948FDF701FE466086600660A3

+:10C86000C660002C07D06B6A6268DB6892009B1878

+:10C870001A6822601C6070BD47F400103AF5001081

+:10C88000F7B50E0001900C001D0000200F69143652

+:10C890003368013099B251431B0C534349190D0CB5

+:10C8A0005B191D0C89B21B045B1808C68742EFDCBC

+:10C8B000002D22D0A368BB4219DC63680198591C83

+:10C8C000FFF776FF061E05D10200B5210C4B0D487F

+:10C8D000FDF7C4FD210023690C319A1C92000C3035

+:10C8E000FDF776FE21000198FFF7A6FF34003B1DFF

+:10C8F0009B00E3185D607B1C23612000FEBDC046E9

+:10C90000BCF400103AF500100300020C0020824233

+:10C9100001D11B0410301A0E01D108301B021A0F6E

+:10C9200001D104301B019A0F01D102309B00002B72

+:10C9300003DB01305B0000D4202070470368020055

+:10C940000721180008400B420DD0063900200B4289

+:10C9500005D10230034203D0CB400800136070477A

+:10C960009B081360FBE799B2002901D110201B0C32

+:10C97000D9B2002901D108301B0A190701D10430AE

+:10C980001B09990701D102309B08D907E9D401306E

+:10C990005B08E6D12020E2E710B50C000121FFF78B

+:10C9A00007FF002806D1A0210200044B04484900DB

+:10C9B000FDF754FD01234461036110BDBCF4001078

+:10C9C0003AF50010F0B50B69140012690D0089B03A

+:10C9D000934201DA25000C002F6926696968BB19AA

+:10C9E0000293AB68BA19934200DA0131FFF7E0FE17

+:10C9F0000190002806D15E210200484B4848FF31D3

+:10CA0000FDF72CFD019B002214339C46BB199B00B3

+:10CA100063440393634603998B422CD32B0022007B

+:10CA20001433BF0014320693B600DB190493931934

+:10CA30000793042305932B00049915330092994220

+:10CA400005D34B1B153B9B0801339B000593079BAC

+:10CA5000009A9A4211D3029B002B06DD039B043BF4

+:10CA600003931B680093002B53D0019B029A18007C

+:10CA70001A6109B0F0BD04C3CDE7009B1B6898B2F2

+:10CA800000281BD067460024069E02CE3A688BB26F

+:10CA9000434392B29B181B190C0C44433A68110C87

+:10CAA00061181C0C09190C0C9BB209040B4308C734

+:10CAB000049BB342E9D86346059A9C50009B1B68CF

+:10CAC0001E0C20D063462C00604600271B681434DF

+:10CAD00022689BB291B271430268120C8918CF1977

+:10CAE00039040B43036002CC4368090C71439BB2C9

+:10CAF0003F0CCB18049ADB191F0C0430A242E7D874

+:10CB0000624605995350009B0433009304239C44D0

+:10CB10009DE7029B013B02939DE7C046BCF40010D9

+:10CB20003AF50010F7B50323150007000E001A4070

+:10CB30001D4208D02549013A920052580023310085

+:10CB4000FFF79EFE0600AD103DD07C6A002C0FD191

+:10CB50001020FDF725FD021E786205D1D7211C4B60

+:10CB60001C484900FDF77AFC446084600460C4609E

+:10CB70007B6A9C680193002C08D138001649FFF7A6

+:10CB80000BFF019B040098600023036001231D42FA

+:10CB90000AD0310022003800FFF714FF3100019065

+:10CBA0003800FFF749FE019E6D100CD02068002868

+:10CBB00007D1220021003800FFF704FF0023206086

+:10CBC00003600400E2E73000FEBDC04690F60010AE

+:10CBD00047F400103AF5001071020000F0B50C00A7

+:10CBE00017002369551187B0EB18029301330193A5

+:10CBF0004968A3680490019A934210DB0498FFF7F8

+:10CC0000D7FD0023020006001900143298420CD10F

+:10CC1000DA210200264B2748FF31FDF71FFC0131C6

+:10CC20005B00E8E7980011500133AB42FADBEB43BD

+:10CC3000DB171D401F2123003800AD005519226964

+:10CC400014339200084084469A180F422AD00131CA

+:10CC5000091A05910021039567461868B8400143F9

+:10CC6000039802C002CB03900598C1409A42F3D8C2

+:10CC7000200015300423824204D3131B153B9B086C

+:10CC800001339B00E950002902D0029B023301933B

+:10CC9000019B0498013B21003361FFF7CDFD30007B

+:10CCA00007B0F0BD02CB02C59A42FBD8F0E7C04600

+:10CCB000BCF400103AF5001002690B6930B50400AD

+:10CCC000D01A9A420DD19B0014341431E218C918BD

+:10CCD000043A043915680B689D4203D001209D4237

+:10CCE00003D330BD9442F3D3FBE74042F9E70000A1

+:10CCF000F0B50E0007001100300087B01400FFF7F8

+:10CD0000DBFF051E10D101003800FFF751FD021EA8

+:10CD100004D1404B40494148FDF7A0FB0123456148

+:10CD20000361100007B0F0BD01230193002804DB6C

+:10CD3000230034001E000023019338006168FFF7D0

+:10CD400037FD021E03D19021324B8900E3E7019B9E

+:10CD50000027C360206914340194019B84001B19CF

+:10CD60003400029333691434990063180393130059

+:10CD700014339C460593019B0493049B02CC20CB67

+:10CD80000493ABB2DF198BB2FB1A090C2D0C6D1A90

+:10CD900019146D1861462F149BB22D042B4308C142

+:10CDA000039B8C46A342E8D83100039C1531042331

+:10CDB0008C4204D3A31B153B9B0801339B000199B4

+:10CDC000CC1805992600CB189C4602998E4210D3A8

+:10CDD000029EE11E00258E4204D3310003310C1B5C

+:10CDE000A408A5005B19043B196800290FD0106145

+:10CDF00097E702CE8DB2ED190F0C291479180F1494

+:10CE0000ADB209040D43614620C18C46DDE701380F

+:10CE1000E9E7C046BCF40010320200003AF5001009

+:10CE2000F7B5012114001E00089FFFF7C1FC051E85

+:10CE300005D10200264B27492748FDF70FFB330396

+:10CE400076001B0B760D24D10193002C27D0684669

+:10CE50000094FFF773FD009C00281ED0019B202149

+:10CE60001A00091A8A40C34022436A610193019C57

+:10CE7000AC61631E9C4101342C61002E18D0174B0D

+:10CE8000F61835233618181A099B3E6018602800DA

+:10CE9000FEBD802252031343D6E76C61E7E701A889

+:10CEA000FFF74CFD0124019B2C616B612030E4E70E

+:10CEB0000B4BC0180B4B3860E3189B00EB185869FC

+:10CEC000FFF722FD6401099B241A1C60DFE7C046BE

+:10CED000BCF400100A0300003AF50010CDFBFFFF80

+:10CEE000CEFBFFFFFFFFFF3F70B504000D001F29C1

+:10CEF00004D9162303600120404270BD436C002B0F

+:10CF000004D08A009B181A68002A08D1200000F07B

+:10CF100031F82A000100200000F01AF8EDE70020A7

+:10CF2000012AEAD0511C03D1162301302360E4E723

+:10CF3000002428001C6090472000DEE710B5034B5A

+:10CF400001001868FFF7D0FF10BDC046EC010008D3

+:10CF5000002370B5064D0400080011002B6000F09E

+:10CF60006DFF431C03D12B68002B00D0236070BDE4

+:10CF70007460010810B500F051FF10BD70B50C00D1

+:10CF80000E25495F00F026F9002803DB636D1B18AE

+:10CF9000636570BDA389024A1340A381F9E7C046C7

+:10CFA000FFEFFFFFF8B51F008B8905000C0016008E

+:10CFB000DB0505D50E23C95E0022022300F0F6F83A

+:10CFC000A389054A28001340A38132000E23E15EA5

+:10CFD0003B0000F02DF8F8BDFFEFFFFF70B50C002F

+:10CFE0000E25495F00F0E2F8A389421C03D1054AEF

+:10CFF0001340A38170BD802252011343A381606559

+:10D00000F8E7C046FFEFFFFF10B50E23C95E00F042

+:10D0100023F810BD0300081E05D0FF2A04D98A2278

+:10D0200001201A604042704701200A70FBE70000AF

+:10D0300070B50400080011001A000023054D2B6094

+:10D04000F6F7B6FA431C03D12B68002B00D02360FF

+:10D0500070BDC04674600108002370B5064D040021

+:10D0600008002B6000F0CAFE431C03D12B68002B84

+:10D0700000D0236070BDC0467460010870B5050023

+:10D080000C1E02D10026300070BD002804D0836938

+:10D09000002B01D1FFF74EFA2F4B9C4217D16C6841

+:10D0A000636EDB0705D4A3899B0502D4A06DFDF751

+:10D0B00075FA0C22A35E002B13D1626E01331600A9

+:10D0C0001E401A42DED1A06DFDF769FADBE7234B63

+:10D0D0009C4201D1AC68E3E7214B9C42E0D1EC6873

+:10D0E000DEE721002800FFF7F7F8236B0600002B8E

+:10D0F00006D02800216A9847002801DA01267642E6

+:10D10000A3891B0603D528002169FDF79FFA616BEF

+:10D11000002908D023004433994202D02800FDF7AB

+:10D1200095FA00236363A16C002904D02800FDF761

+:10D130008DFA0023A364FFF7DDF90023A381636E5A

+:10D14000DB0702D4A06DFDF72AFAA06DFDF725FAE2

+:10D15000FFF7D8F997E7C046F0F4001010F500107B

+:10D16000D0F40010002370B5064D04000800110033

+:10D170002B6000F04BFE431C03D12B68002B00D02A

+:10D18000236070BD74600108002370B5064D040073

+:10D1900008002B6000F04AFE431C03D12B68002BD3

+:10D1A00000D0236070BDC0467460010870B50400F3

+:10D1B000080011001A000023054D2B6000F046FE08

+:10D1C000431C03D12B68002B00D0236070BDC046E8

+:10D1D0007460010870B50400080011001A000023F3

+:10D1E000054D2B60F6F704FA431C03D12B68002B86

+:10D1F00000D0236070BDC0467460010802B471465F

+:10D2000049084900095C49008E4402BC7047C04689

+:10D2100003B47146490840004900095E49008E4444

+:10D2200003BC7047F0B54F464646D6460D00040095

+:10D23000C0B51F0011002803620F400A10437A0096

+:10D24000520DE3003C039146640AFA0F4F0F6E0043

+:10D2500027439246B846760DED0FC900954200D19E

+:10D2600099E04C46341BA446002C00DC7CE04A4686

+:10D27000002A00D1B8E0C54A964200D11CE18022C4

+:10D280003C0012041443A0466246382A00DD61E1E6

+:10D290001F2A00DDCCE164462022121B4446944044

+:10D2A0000F00A14664469140E7404C464A1E91411A

+:10D2B0003C43424621436446E240801A5C1AA34242

+:10D2C0009B415F42C71B3B0200D4D0E07F027F0A34

+:10D2D000002F00D1FFE03800FCF78AFF0100083979

+:10D2E000202322005B1A8F40DA408C401743B14262

+:10D2F00000DAFFE0891B4B1C1F2B00DDA8E0202279

+:10D300003900D21A200094409140D840621E9441C6

+:10D31000DF40002601430C43630709D00F2323405D

+:10D32000042B05D0231DA342A44164423F191C00D5

+:10D330003B0200D49EE0954B01369E4200D1B7E0FF

+:10D34000934AE40817407B0771057F0223433F0B94

+:10D350004A0D12053A43ED072A4318001100E0BCBC

+:10D36000BA46B146A846F0BD002C4BD04C46A41B93

+:10D37000A446002E00D023E104001C4300D1AFE1FD

+:10D380006246541E012A00D115E2804DAC4500D101

+:10D39000C8E1A4461BE14A46B21A9446002A00DCC2

+:10D3A000ACE04A46002A43D0784A964200D1AFE129

+:10D3B00080223C0012041443A0466246382A67DCEF

+:10D3C0001F2A00DC5FE14746203AD7406246202A08

+:10D3D00005D064464022121B4446944021434A1E15

+:10D3E00091410C003C4357E03A000A4300D105E16B

+:10D3F0002200013A012C00D182E1644CA4455BD0AB

+:10D40000944641E7634C771C274200D0C4E00400F7

+:10D410001C43002E00D069E1002C00D1BFE144463E

+:10D420000C4300D0D0E14207DB081343C00829E0D9

+:10D430003A000A4300D170E162466446013A012C89

+:10D4400000D1E0E0514CA44500D161E19446B4E73D

+:10D450003A001F39CA401100202B03D04022D31AB2

+:10D460009F403C43631E9C41002700260C436307FA

+:10D4700000D053E7B446E4087B072343F808434A47

+:10D4800094451DD06246070352053F0B520D60E7DD

+:10D4900044460C43621E9441E4189C429B415F4207

+:10D4A0003F183B02E3D5394B01369E4200D0B5E030

+:10D4B0003200002700234CE74207DB081343C00873

+:10D4C0001A00024300D1E1E180273F0307433F03F5

+:10D4D0002E4A3F0B3DE72000FCF78AFE0100183181

+:10D4E0001F2900DCFCE60838844027000024B142F4

+:10D4F00000DBFFE6264A761A17400DE7002A2FD0F8

+:10D500004A46921B9446002E00D1ADE01F4A914539

+:10D5100000D10FE18022120410436246382A00DD58

+:10D520000FE11F2A00DD80E1644620221E00121B4D

+:10D530006746040093409440FE405A1E9341F840D1

+:10D5400034431C43804464188C42BF417F424E46A2

+:10D550004744A6E742460A4311004A1E9141ADE600

+:10D560000C4C721C224200D0A1E002001A43002E93

+:10D5700000D0FAE0002A00D145E13A000A4300D089

+:10D5800046E14207DB081343C0087BE7FF070000C2

+:10D59000FFFF7FFFFE07000047465C1AC21BA34245

+:10D5A000BF417F42B94617004A46BF1A3A0200D52A

+:10D5B0008DE023003B4300D08AE60020002561E790

+:10D5C000B44CA14500D1ADE080242404204364463E

+:10D5D000382C3DDC62461F2C00DDB7E020251E0004

+:10D5E0002D1B0400AB40AC40D640D04042465D1EEF

+:10D5F000AB413443121A904623432CE04207DB0828

+:10D600001343C0083BE75C189C429B4140445B428B

+:10D61000C71801263B0200D429E702269E4A630868

+:10D620001740012214401C43FB071C437F0873E68C

+:10D630004446203AD4406246202A05D0674640221C

+:10D64000D21B4746974039434A1E9141214335E654

+:10D650000343581E8341CC1AA142BF4143467F4237

+:10D6600055464E46DF1B2EE602001A4300D1BDE0B0

+:10D6700062466446013A012C00D1E5E0854CA445A0

+:10D6800058D0944649E764462022121B44469440F1

+:10D690000F00A14664469140E7404C464A1E914126

+:10D6A0003C4342460C436146CA408018F4E6794C3C

+:10D6B000A24200D1FDE6591899429B4140445F4285

+:10D6C000C719FC07490816000C437F08CFE6CC1A9F

+:10D6D000A142BF4143467F42181A5546C71BF7E592

+:10D6E000C9087B0755460B43F808C8E6002C00D054

+:10D6F00081E043460B4315D1802000250003E3E67B

+:10D700005C1AA3429B41C71B5B420126FF1ADAE564

+:10D710004207DB081343C008D2E64207DB08134385

+:10D72000C008ACE643464246C9085B0755460B4372

+:10D73000D008C5E6434642465B07C9080B43D008FC

+:10D74000BEE603431C00631E9C41FCE60200203C35

+:10D75000E24014006246202A03D04025AD1AA840BA

+:10D760000343581E8341234375E7002AE2D03A0061

+:10D770000A43CDD04207DB0813438022C0081203BE

+:10D78000104206D0FC08144203D12000CB087A07CF

+:10D7900013435A0FDB005207DB08134390E643465E

+:10D7A0000B4300D109E743464246C9085B0755468B

+:10D7B0000B43D00866E6CC1AA14289413F1A494280

+:10D7C000554601267F1A7EE542465C1A871AA34217

+:10D7D00092415242BF1A3A023DD5CC1AA142894128

+:10D7E000434649421F1A55467F1A95E57B07C908EB

+:10D7F0000B43F80843E64446DB080C4330D14207AC

+:10D800001343C0085CE67B07C9080B43F80839E6F8

+:10D810005C189C429B4140445B42C7183B0200D4C9

+:10D8200025E61D4B01261F4021E60400203AD44086

+:10D830006246202A04D040226646921B9040034351

+:10D840005A1E93411C437EE65C188C428941404439

+:10D8500049424718DDE623003B4300D1ADE606E62A

+:10D86000440723438024C0082403204208D04246B2

+:10D87000D608264204D155463000CB0851070B4349

+:10D880005A0FDB00DB085207134319E60023014A55

+:10D890001F005EE5FF070000FFFF7FFFF0B5574662

+:10D8A0004E464546DE46E0B598460C034B00060062

+:10D8B000924687B0240B5B0DCF0F002B00D15CE1AB

+:10D8C000D94A934200D175E1420FE400144380220B

+:10D8D00012041443D54AC5009446634400930023C0

+:10D8E00099469B46434642461E03D20F5B00504674

+:10D8F0009046360B5B0D00D120E1CB4A934200D11C

+:10D9000062E1CA49420F8C4600996344F6008C4696

+:10D91000164380229C44120463461643C200002032

+:10D9200000930099434601318C4649467B40019360

+:10D930000F2926D8BE4B890059588F46434601937C

+:10D940003400150083465B46022B16D0032B00D112

+:10D9500003E2012B00D0CDE0002200240025019B32

+:10D9600012052243DB071A432800110007B0F0BC60

+:10D97000BB46B246A946A046F0BD00240025AA4AEF

+:10D98000EDE7280C2D042D0C2B00110C1204120CA9

+:10D990005343984613002F00434399464F434F4447

+:10D9A000BB4647460B003F0CBA464343DA4402935A

+:10D9B000D14504D980277F02B9464B440293534690

+:10D9C0001B0C9B4653461F0443461B041B0C9846E6

+:10D9D0003B0043440493330C3604360C9846330022

+:10D9E00043439946434643432F009A464346774371

+:10D9F0005D43380C4D444519A94503D980235B028A

+:10DA00009946CA443F04280C3F0C2D04ED19270CFD

+:10DA10002404240C0300200050437A4391463A002A

+:10DA200053440593030C9A464A4361434944514485

+:10DA3000AB44894503D980235B0299464A440004DC

+:10DA40000B0C000C0904091820009946434670434A

+:10DA50005C437E435F43030C9846A41944444A4404

+:10DA60000397A64204D980235B0298464744039754

+:10DA70002304029E9A46059B5E449846AE42AD4101

+:10DA800076188E4289410004000C504440446D4297

+:10DA90004719B846934649428946C344D9449842F7

+:10DAA0008041A845AD4193459241894589416D42E8

+:10DAB00040422843240C524249420A43039B001926

+:10DAC0008018C7184B46DC0D049B75021D436A1E67

+:10DAD00095414B46F60D7F0235435A023C431543B0

+:10DAE000FB0100D41CE101216A080D401543E20747

+:10DAF000154364084F496144002900DCB0E06B071E

+:10DB000009D00F222A40042A05D02A1DAA42AD417D

+:10DB10006D4264191500E30104D58021464AC9000D

+:10DB200014406144454A914200DD26E76207ED0852

+:10DB3000640249051543240B4A0D10E7524632434F

+:10DB400000D17FE0002E00D1DCE03000FCF750FB7C

+:10DB500002000B3A1D2301009B1A52460839DA4095

+:10DB60008E40164352468A40009B3549181A0300DE

+:10DB70008C46634400200093D3E6250005434AD039

+:10DB8000002C00D1B0E02000FCF732FB01000200C5

+:10DB90000B391D2310005B1A310035000838844012

+:10DBA000D94085400C432648831A009300239946A8

+:10DBB0009B4697E60500254326D1082200930223C1

+:10DBC000002491469B468DE65246009B324310D17D

+:10DBD000154900268C4663444946009302231943A5

+:10DBE000894602209DE65B460197022B00D0ADE6F8

+:10DBF000C3E60D4A0320944663444A460093032338

+:10DC00001A43914652468CE60C22009303230500EA

+:10DC100091469B4666E60423994600230093013310

+:10DC200000249B465EE6C046FF07000001FCFFFFA4

+:10DC30009CF60010FF030000FFFFFFFEFE07000040

+:10DC40000DFCFFFF494601231943894600260120A8

+:10DC500067E6002380240025434A019324037EE6DF

+:10DC60000120401A382800DD76E61F285BDD1F22E0

+:10DC700023005242511ACB401900202803D03B4ABE

+:10DC80006244944025436A1E95412A000A430721B5

+:10DC90000D000024154011425BD00F2100241140DB

+:10DCA000042953D0111D914292415242A4180A00F6

+:10DCB00023024BD501220024002550E680231B03BC

+:10DCC0001C4209D01E4207D133431C0343461500B2

+:10DCD000240B254A019342E68022120314432403B5

+:10DCE000214A240B01973AE6FCF782FA0100020070

+:10DCF000153120321C2900DC4BE7340008380025A0

+:10DD0000844050E7FCF774FA03001A001532203003

+:10DD10001C2A00DC1EE75646083B00229E4023E7F3

+:10DD2000009B9C46E6E61249220061442E008D408D

+:10DD30008A40C640691E8D4132432A43C44053077E

+:10DD4000B6D00F2111400429ACD1B1E765076402B8

+:10DD5000240BD2081543002201E68022120314434B

+:10DD60002403014A240BFAE5FF0700003E040000EB

+:10DD70001E04000070B505000C481C0316005B0073

+:10DD80000A034900120B490D240B5B0D814208D098

+:10DD9000064A0020934203D120003043431E98419D

+:10DDA00070BD01202A43FBD1F2E7C046FF07000007

+:10DDB00010B5041E10D0FCF71BFA0F4B1B1A0A28D3

+:10DDC00011DC0B222100121AD14015300A035B0529

+:10DDD0008440120B5B0D01E0002300221B0513435E

+:10DDE0002000190010BD22000B3882405B05120391

+:10DDF0000024120B5B0DF1E71E04000058220120E5

+:10DE0000014B40421A60704774600108582201209B

+:10DE1000014B40421A60704774600108582201208B

+:10DE2000014B40421A607047746001085822024B4F

+:10DE300000201A607047C046746001085822012013

+:10DE4000014B40421A60704774600108582201205B

+:10DE5000014B40421A60704774600108044A030095

+:10DE60001068002802D0C318136070470148FAE711

+:10DE70007860010880600108FEE7C046F8B5C0463A

+:10DE8000F8BC08BC9E467047F8B5C046F8BC08BC54

+:10DE90009E4670470000000001B40248844601BC61

+:10DEA000604700BF0906000801B40248844601BC6F

+:10DEB000604700BFA5040008000000000800000043

+:10DEC0000800000000020000000000000000000048

+:10DED0000000000000000000000000000000000042

+:10DEE000000000000B0000003F00000000000000E8

+:10DEF0003F00000000000000010000000B000000D7

+:10DF00001D000000000000000000000000000000F4

+:10DF10000000000001000000000000000000000000

+:10DF200000000000000000000000000001000000F0

+:10DF30000A0000001D0000000000000000000000BA

+:10DF400000000000000000000100000000000000D0

+:10DF500000000000000000000000000000000000C1

+:10DF600001000000060000001D000000000000008D

+:10DF700000000000000000000000000001000000A0

+:10DF80000000000000000000000000000000000091

+:10DF90000000000001000000080000001200000066

+:10DFA0000000000000000000000000000000000071

+:10DFB0000100000000000000000000000000000060

+:10DFC000000000000000000001000000060000004A

+:10DFD000120000000000000000000000000000002F

+:10DFE0000000000001000000000000000000000030

+:10DFF0000000000000000000000000000100000020

+:10E000000000000000000000000000000000000010

+:10E0100000000000000000000100000000000000FF

+:10E0200000000000000000000000000000000000F0

+:10E0300001000000000000000000000000000000DF

+:10E0400000000000000000000000000001000000CF

+:10E0500000000000000000000000000000000000C0

+:10E0600000000000010000000300000000000000AC

+:10E0700000000018000000040000000058E100103B

+:10E080006000000000000000FFFFFFFF0000000034

+:10E090000000000000000000DC00000000000000A4

+:10E0A000FFFFFFFF00000000000000000000000074

+:10E0B0003400000000000000FFFFFFFF020000002E

+:10E0C0000000000002000000EC0000000002000060

+:10E0D0000100000002000000040000000200000037

+:10E0E0003500000000000000FFFFFFFF00000000FF

+:10E0F000000000000000000005000000000000001B

+:10E10000FFFFFFFF00000000000000000000000013

+:10E110000400000000000000FFFFFFFF00000000FF

+:10E1200000000000000000000600000000000000E9

+:10E13000FFFFFFFF000000000000000000000000E3

+:10E140000100000000000000FFFFFFFF00000000D2

+:10E1500000000000000000000400000000000004B7

+:10E16000C8E0001028E1001010E1001098E0001055

+:10E170000000040080E00010B0E000100002000089

+:10E18000F8E00010E0E0001040E1001000000000A6

+:10E190000100000002000000280A0000E00407005F

+:10E1A0001405000000000000000000000100000055

+:10E1B000BCE10010020000001400000064E0001048

+:10E1C000F4010000140004010A000905080003001E

+:10E1D0006301000024010200000000005B494E467C

+:10E1E0005D205374617274696E6720557365722087

+:10E1F0004170706C69636174696F6E206F6E20434B

+:10E200004D342E20506C6561736520776169742EE2

+:10E210002E2E0A0D000000005B494E465D201B5B60

+:10E22000324A1B5B3B480A0D000000005B494E462A

+:10E230005D204D4355626F6F7420426F6F746C6F39

+:10E240006164657220537461727465640A0D000024

+:10E250005B494E465D2045787465726E616C204D59

+:10E26000656D6F727920696E697469616C697A6530

+:10E2700064207573696E6720534644500A0D000090

+:10E280005B4552525D2045787465726E616C204D1D

+:10E29000656D6F727920696E697469616C697A6104

+:10E2A00074696F6E207573696E6720534644502001

+:10E2B0004641494C45443A203078253032780A0DA1

+:10E2C000000000005B494E465D2055736572204199

+:10E2D00070706C69636174696F6E2076616C6964DB

+:10E2E00061746564207375636365737366756C6CC4

+:10E2F000790A0D005B494E465D204D4355626F6FB4

+:10E300007420426F6F746C6F6164657220666F7504

+:10E310006E64206E6F20626F6F7461626C6520693D

+:10E320006D6167650A0D0000030000000100000038

+:10E330000100000000000000050360000400000070

+:10E340000100000000000000010000000604600061

+:10E3500008000000F0080008A905001028696D6198

+:10E3600067655F6E756D29203C203078460000009F

+:10E370002E2E2F6D74625F7368617265642F6D63FA

+:10E3800075626F6F742F76312E372E302D63797052

+:10E39000726573732F626F6F742F626F6F74757411

+:10E3A000696C2F7372632F626F6F747574696C5F21

+:10E3B0006D6973632E63000028737761705F7479F1

+:10E3C000706529203C2030784600000062616400BE

+:10E3D000676F6F6400000000756E73657400000065

+:10E3E00074657374000000007065726D00000000B9

+:10E3F0004255473B2063616E2774206861707065E9

+:10E400006E0000007265766572740000626F6F7452

+:10E410005F737761705F747970655F6D756C746937

+:10E420003A205072696D61727920696D616765008B

+:10E430005B494E465D2025733A206D616769633DF7

+:10E4400025732C20737761705F747970653D307827

+:10E4500025782C20636F70795F646F6E653D30782E

+:10E4600025782C20696D6167655F6F6B3D3078257D

+:10E47000780A0D00626F6F745F737761705F7479F3

+:10E4800070655F6D756C74693A205365636F6E6477

+:10E4900061727920696D6167650000005B494E46D5

+:10E4A0005D205377617020747970653A2025730A76

+:10E4B0000D0000005B494E465D205377617020746B

+:10E4C0007970653A206E6F6E650A0D00626F6F7429

+:10E4D0005F77726974655F737761705F696E666F8D

+:10E4E0000000000077C295F360D2EF7F3552500FE5

+:10E4F0002CB679800401040304020401040104031E

+:10E500000103030401040000000000006FC75E1057

+:10E51000DE8EBD20B149E330BC1D7B41D3DA2551ED

+:10E520006293C6610D549871783BF68217FCA892ED

+:10E53000A6B54BA2C97215B2C4268DC3ABE1D3D325

+:10E540001AA830E3756F6EF37365636F6E64617262

+:10E55000790000007072696D617279005B455252FA

+:10E560005D20496D61676520696E207468652025AE

+:10E570007320736C6F74206973206E6F74207661E2

+:10E580006C6964210A0D00007263203D3D2030005B

+:10E590002E2E2F6D74625F7368617265642F6D63D8

+:10E5A00075626F6F742F76312E372E302D63797030

+:10E5B000726573732F626F6F742F626F6F747574EF

+:10E5C000696C2F7372632F6C6F616465722E6300C8

+:10E5D0005B4552525D2070616E6963210A0D000037

+:10E5E000300000005B57524E5D204661696C6564E7

+:10E5F0002072656164696E6720736563746F7273FE

+:10E600003B20424F4F545F4D41585F494D475F5348

+:10E610004543544F52533D2564202D20746F6F2085

+:10E62000736D616C6C3F0A0D000000005B57524E29

+:10E630005D204661696C65642072656164696E671E

+:10E6400020696D61676520686561646572733B2050

+:10E65000496D6167653D25750A0D00005B57524E97

+:10E660005D204661696C65642072656164696E67EE

+:10E6700020626F6F74207374617475733B20496DF1

+:10E680006167653D25750A0D000000005B4552522B

+:10E690005D2062616420696D616765206D616769F5

+:10E6A00063203078256C783B20496D6167653D2596

+:10E6B000750A0D00626F6F745F706572666F726DC0

+:10E6C0005F75706461746500626F6F745F7377610A

+:10E6D000705F696D61676500626F6F745F636F6D16

+:10E6E000706C6574655F7061727469616C5F73777B

+:10E6F00061700000626F6F745F7072657061726547

+:10E700005F696D6167655F666F725F757064617484

+:10E7100065000000636F6E746578745F626F6F747C

+:10E720005F676F002E2E2F6D74625F736861726574

+:10E73000642F6D6375626F6F742F76312E372E30B4

+:10E740002D637970726573732F626F6F742F626FB0

+:10E750006F747574696C2F7372632F737761705F58

+:10E760007374617475732E63000000005B45525230

+:10E770005D20446574656374656420696E636F6EC3

+:10E7800073697374656E7420737461747573210A90

+:10E790000D0000005B57524E5D2043616E6E6F743A

+:10E7A00020757067726164653A206E6F7420612015

+:10E7B000636F6D70617469626C6520616D6F756EF9

+:10E7C00074206F6620736563746F72730A0D0000A6

+:10E7D0005B57524E5D2043616E6E6F74207570679B

+:10E7E000726164653A206D6F726520736563746F42

+:10E7F0007273207468616E20616C6C6F7765640A57

+:10E800000D0000005B57524E5D2043616E6E6F74C9

+:10E8100020757067726164653A206E6F7420736151

+:10E820006D6520736563746F72206C61796F7574A8

+:10E830000A0D0000737761705F7374617475735FA4

+:10E84000736F757263653A205072696D61727920D9

+:10E85000696D6167650000005B494E465D20426F4F

+:10E860006F7420736F757263653A207072696D61A1

+:10E87000727920736C6F740A0D0000005B494E467C

+:10E880005D20426F6F7420736F757263653A206EFE

+:10E890006F6E650A0D00000066697875705F7265BD

+:10E8A000766572743A205365636F6E646172792085

+:10E8B000696D616765000000626F6F745F737761F7

+:10E8C000705F736563746F7273000000626F6F74C2

+:10E8D0005F6D6F76655F736563746F725F757000EF

+:10E8E000737761705F72756E0000000066697875FD

+:10E8F000705F7265766572740000000073776170F6

+:10E900005F7374617475735F736F75726365000014

+:10E91000737761705F726561645F7374617475733E

+:10E920005F627974657300005B494E465D204572F5

+:10E930006173696E6720747261696C65723B2066F1

+:10E94000615F69643D25640A0D0000002E2E2F6D65

+:10E9500074625F7368617265642F6D6375626F6F57

+:10E96000742F76312E372E302D6379707265737364

+:10E970002F626F6F742F626F6F747574696C2F7371

+:10E9800072632F737761705F7374617475735F6DF9

+:10E990006973632E63000000737761705F72656155

+:10E9A000645F737461747573000000007377617045

+:10E9B0005F7374617475735F696E69740000000041

+:10E9C000737761705F65726173655F747261696CA2

+:10E9D00065725F736563746F727300002E2E2F6D06

+:10E9E00074625F7368617265642F6D6375626F6FC7

+:10E9F000742F76312E372E302D63797072657373D4

+:10EA00002F626F6F742F626F6F747574696C2F73E0

+:10EA100072632F737761705F7374617475735F7065

+:10EA20006172742E63000000286F666673202B20CD

+:10EA30006C656E29203C3D20424F4F545F53574137

+:10EA4000505F5354415455535F445F53495A455F97

+:10EA500052415700696E69745F6F666673203E3D70

+:10EA600020300000737761705F7374617475735F39

+:10EA70007265747269657665000000007377617075

+:10EA80005F7374617475735F77726974655F7265C3

+:10EA9000636F726400000000737761705F7374616C

+:10EAA0007475735F7570646174650000737761706D

+:10EAB0005F7374617475735F726561645F726563BF

+:10EAC0006F726400AFBEADDE6F6666203C2066618B

+:10EAD0002D3E66615F6F6666000000002E2E2F6D72

+:10EAE00074625F7368617265642F6D6375626F6FC6

+:10EAF000742F76312E372E302D63797072657373D3

+:10EB00002F626F6F742F637970726573732F6379DF

+:10EB10005F666C6173685F70616C2F63795F666CB0

+:10EB20006173685F6D61702E630000006F66662020

+:10EB30002B206C656E203C2066612D3E66615F6F08

+:10EB4000666600005B4552525D20466C617368202A

+:10EB5000617265612072656164206572726F722CEA

+:10EB6000207263203D2025640A0D000021286C6579

+:10EB70006E20252043595F464C4153485F53495A04

+:10EB8000454F465F524F57290000000021287772F9

+:10EB90006974655F73746172745F61646472202567

+:10EBA0002043595F464C4153485F53495A454F46AD

+:10EBB0005F524F57290000006C656E203C3D206677

+:10EBC000612D3E66615F73697A6500006F6666203D

+:10EBD0003C2066612D3E66615F73697A65000000C6

+:10EBE0006F6666202B206C656E203C2066612D3E92

+:10EBF00066615F6F6666202B2066612D3E66615FF1

+:10EC000073697A65000000007263203D3D2043591E

+:10EC10005F464C4153485F4452565F53554343450A

+:10EC20005353000066616C73650000007365637484

+:10EC30006F72735F6E203C3D202A636E740000008B

+:10EC4000666C6173685F617265615F6765745F734D

+:10EC50006563746F72730000666C6173685F6172E4

+:10EC600065615F6572617365645F76616C00000069

+:10EC7000666C6173685F617265615F65726173651F

+:10EC800000000000666C6173685F617265615F77A8

+:10EC90007269746500000000666C6173685F617280

+:10ECA00065615F7265616400010000000E00000094

+:10ECB0001100000000000000000000000000000043

+:10ECC0000000000001000000000000000000000043

+:10ECD0000000000000000000000000000100000033

+:10ECE0000E00000011000000000000000000000005

+:10ECF0000000000000000000010000000000000013

+:10ED00000000000000000000000000000000000003

+:10ED1000010000000E0000001100000000000000D3

+:10ED200000000000000000000000000001000000E2

+:10ED300000000000000000000000000000000000D3

+:10ED400000000000010000000E00000011000000A3

+:10ED500000000000000000000000000000000000B3

+:10ED600001000000000000000000000000000000A2

+:10ED7000000000000000000001000000060000008C

+:10ED80001100000000000000000000000000000072

+:10ED90000000000001000000000000000000000072

+:10EDA0000000000000000000000000000000000063

+:10EDB000010000000100000000000000010001004F

+:10EDC00000010001A10FB90BD107DC05E903EE0238

+:10EDD000F5017701FB00BC007E005E003F002F00C4

+:10EDE0002000180010000C000800060004000300BA

+:10EDF0000200020001000100000020400000244049

+:10EE000000000040000000000000234000003040EF

+:10EE10000000314000009F400000224000001040F0

+:10EE200000009D402020202020101010101D1D806B

+:10EE300017007500FF0306020600360410200000CC

+:10EE40007FC0000000040000000000000019324BE9

+:10EE5000647D0000000000804000080B10000000EE

+:10EE60000000FF012002001F00800004FF081018AE

+:10EE7000001000140018001C4044484C50000000D2

+:10EE8000081000000800000004000000041000004A

+:10EE90000012000004210000002100000016000004

+:10EEA00040114002C41300138013A01340138813B1

+:10EEB000A81320001C000000040000004000000017

+:10EEC0004400000048000000800000000001000035

+:10EED000100200008802000000040000100400007E

+:10EEE00020040000400400004804000080040000EA

+:10EEF0008404000090040000C0070000C407000064

+:10EF0000C8070000CC07000000400000041000000B

+:10EF1000401000004410000048100000C014000021

+:10EF20000011000018020000980200000014000008

+:10EF300010140000201400004014000048140000C9

+:10EF400080140000841400009014000000010000F0

+:10EF500004010000080100000C0100000080000016

+:10EF6000AA3D0010D43D0010FE3D0010263E0010CA

+:10EF7000523E0010A83E00107C3E00100123456761

+:10EF800089ABCDEFFEDCBA9876543210F0E1D2C3F3

+:10EF9000D89E05C107D57C3617DD703039590EF77C

+:10EFA000310BC0FF11155868A78FF964A44FFABE42

+:10EFB00067E6096A85AE67BB72F36E3C3AF54FA50A

+:10EFC0007F520E518C68059BABD9831F19CDE05B36

+:10EFD0005D9DBBCBD89E05C12A299A6207D57C3698

+:10EFE0005A01599117DD7030D8EC2F1539590EF7A9

+:10EFF00067263367310BC0FF874AB48E11155868F6

+:10F000000D2E0CDBA78FF9641D48B547A44FFABE3F

+:10F0100067E6096A08C9BCF385AE67BB3BA7CA842B

+:10F0200072F36E3C2BF894FE3AF54FA5F1361D5F56

+:10F030007F520E51D182E6AD8C68059B1F6C3E2B32

+:10F04000ABD9831F6BBD41FB19CDE05B79217E13EA

+:10F05000C8373D8CA24D54196699E173D6D4DC892A

+:10F06000AEB7FA1D829CFF3214D59D67CF9F2F58F3

+:10F07000692B6D0FA84DD47B736FE3774289C4046D

+:10F08000A8859D3FC8361D6AADE61211A192D691A2

+:10F09000942131222CF72BFCA35F559FC2644CC8EE

+:10F0A0006BB8932351B1536F19773896BDEA405925

+:10F0B000E23E2896E3FF8EA8251E5EBE9239865357

+:10F0C000FC99012BAAB8852CDC2DB70EA22CC5818A

+:10F0D000BE400010FA400010DC4000103841001023

+:10F0E0001A41001058410010784100106745230173

+:10F0F000EFCDAB8998BADCFE10325476C3D2E1F082

+:10F10000C1059ED8367CD5073070DD17F70E59390A

+:10F11000FFC00B316858151164F98FA7BEFA4FA4D0

+:10F120006A09E667BB67AE853C6EF372A54FF53A98

+:10F13000510E527F9B05688C1F83D9AB5BE0CD19C4

+:10F14000CBBB9D5DC1059ED8629A292A367CD50726

+:10F150009159015A3070DD17152FECD8F70E593937

+:10F1600067332667FFC00B318EB44A876858151184

+:10F17000DB0C2E0D64F98FA747B5481DBEFA4FA4CE

+:10F180006A09E667F3BCC908BB67AE8584CAA73BBA

+:10F190003C6EF372FE94F82BA54FF53A5F1D36F1E5

+:10F1A000510E527FADE682D19B05688C2B3E6C1FC1

+:10F1B0001F83D9ABFB41BD6B5BE0CD19137E217979

+:10F1C0008C3D37C819544DA273E1996689DCD4D6B9

+:10F1D0001DFAB7AE32FF9C82679DD514582F9FCF82

+:10F1E0000F6D2B697BD44DA877E36F7304C48942FC

+:10F1F0003F9D85A86A1D36C81112E6AD91D692A131

+:10F2000022312194FC2BF72C9F555FA3C84C64C27C

+:10F210002393B86B6F53B151963877195940EABDB3

+:10F2200096283EE2A88EFFE3BE5E1E2553863992E5

+:10F230002B0199FC2C85B8AA0EB72DDC81C52CA218

+:10F24000BE600010DE600010D4600010CA600010C4

+:10F25000C0600010B6600010186300102863001032

+:10F260003A6300104C6300102863001028630010FC

+:10F27000000000007494001062940010409400108C

+:10F280006A940010409400104297001040940010BF

+:10F290006A9400106294001062940010429700106B

+:10F2A0006A9400102C9400102C9400102C940010E0

+:10F2B000B89700102C2066756E6374696F6E3A20E3

+:10F2C00000617373657274696F6E2022257322204A

+:10F2D0006661696C65643A2066696C6520222573F5

+:10F2E000222C206C696E65202564257325730A0025

+:10F2F000F0010008232D302B2000686C4C0065665F

+:10F300006745464700494E4600696E66004E414ECD

+:10F31000006E616E003000303132333435363738AC

+:10F320003941424344454600303132333435363773

+:10F330003839616263646566000020202020202047

+:10F340002020202828282828202020202020202095

+:10F350002020202020202020202088101010101095

+:10F3600010101010101010101010040404040404E5

+:10F3700004040404101010101010104141414141C8

+:10F38000410101010101010101010101010101012D

+:10F3900001010101011010101010104242424242BE

+:10F3A00042020202020202020202020202020202FD

+:10F3B00002020202021010101020000000000000E3

+:10F3C000000000000000000000000000000000003D

+:10F3D000000000000000000000000000000000002D

+:10F3E000000000000000000000000000000000001D

+:10F3F000000000000000000000000000000000000D

+:10F4000000000000000000000000000000000000FC

+:10F4100000000000000000000000000000000000EC

+:10F4200000000000000000000000000000000000DC

+:10F4300000000000000000000000496E66696E696F

+:10F440007479004E614E005245454E54206D616CFA

+:10F450006C6F6320737563636565646564002F6812

+:10F460006F6D652F706172616C6C656C732F746F5A

+:10F470006F6C636861696E2F6763632D61726D2DB8

+:10F480006E6F6E652D656162692D31302E332D32C0

+:10F490003032312E30372F7372632F6E65776C697F

+:10F4A000622F6E65776C69622F6C6962632F73746B

+:10F4B000646C69622F64746F612E630042616C6CCE

+:10F4C0006F632073756363656564656400000000A5

+:10F4D000000000000000000000000000000000002C

+:10F4E000000000000000000000000000000000001C

+:10F4F000000000000000000000000000000000000C

+:10F5000000000000000000000000000000000000FB

+:10F5100000000000000000000000000000000000EB

+:10F5200000000000000000000000000000000000DB

+:10F530004300504F534958002E002F686F6D652FC0

+:10F54000706172616C6C656C732F746F6F6C636843

+:10F5500061696E2F6763632D61726D2D6E6F6E65CD

+:10F560002D656162692D31302E332D323032312ECE

+:10F5700030372F7372632F6E65776C69622F6E65FB

+:10F58000776C69622F6C6962632F7374646C696253

+:10F590002F6D707265632E63000000000000000094

+:10F5A0000080E03779C34143176E05B5B5B893467F

+:10F5B000F5F93FE9034F384D321D30F94877825A4B

+:10F5C0003CBF737FDD4F1575000000000000F03F69

+:10F5D000000000000000244000000000000059402E

+:10F5E0000000000000408F40000000000088C34081

+:10F5F00000000000006AF8400000000080842E41F6

+:10F6000000000000D01263410000000084D7974141

+:10F610000000000065CDCD41000000205FA0024247

+:10F62000000000E876483742000000A2941A6D42BC

+:10F63000000040E59C30A2420000901EC4BCD642AF

+:10F6400000003426F56B0C430080E03779C341435A

+:10F6500000A0D8855734764300C84E676DC1AB43D0

+:10F66000003D9160E458E143408CB5781DAF1544EE

+:10F6700050EFE2D6E41A4B4492D54D06CFF08044C9

+:10F68000F64AE1C7022DB544B49DD9794378EA44DE

+:10F6900005000000190000007D00000082D9001064

+:10F6A00040D9001040D900103CD9001046D90010B4

+:10F6B00046D9001052DC00103CD9001046D9001089

+:10F6C00052DC001046D900103CD90010E6DB0010D7

+:10F6D000E6DB0010E6DB0010BCDC001000000000E0

+:08F6E000209BFF7F01000000E8

+:10F6E80000000010000000088000000008F700106B

+:08F6F80080000008A0060000DC

+:08F7000074070008085901001C

+:10F7080000093D0000127A0000093D000000D00702

+:10F71800A00F000004000000FFFFFFFFFFFFFFFF36

+:10F72800B4000008C0000008CC000008D800000899

+:10F7380000000000007F00000000001000800100B1

+:10F74800017F00000080011000001C000280000002

+:10F758000000001800001C00077F000000801D103A

+:10F768000048000001000000060000001100000031

+:10F778000000000000000000000000000000000081

+:10F788000100000000000000000000000000000070

+:10F79800000000000000000004000000000000005D

+:10F7A800F05E0108545F01083C5F0108C05E010873

+:10F7B80000000000A85E0108D85E010800000000F3

+:10F7C800085F0108205F01086C5F0108BC010008A0

+:10F7D8000000000000000000000000000000000021

+:10F7E8000000000000000000000000000100000010

+:10F7F80004000000000000000000001800000000E5

+:10F8080000000000180100086C0100088005314064

+:10F8180002000000110000008005314001000000D6

+:10F8280011000000800531400000000011000000B8

+:10F838000006314004000000110000005A000000DA

+:10F8480000000000FFFFFFFF0000000008000000AC

+:10F85800000000000100000088010008000000000E

+:10F86800000000000700A00001000000F0010008EF

+:10F8780000000000F0F4001010F50010D0F40010A3

+:10F888000000000000000000000000000000000070

+:10F898000000000000000000000000000000000060

+:10F8A8000000000000000000000000000000000050

+:10F8B8000000000000000000000000000000000040

+:10F8C8000000000000000000000000000000000030

+:10F8D80043000000000000000000000000000000DD

+:10F8E8000000000000000000000000000000000010

+:10F8F80043000000000000000000000000000000BD

+:10F9080000000000000000000000000000000000EF

+:10F91800430000000000000000000000000000009C

+:10F9280000000000000000000000000000000000CF

+:10F93800430000000000000000000000000000007C

+:10F9480000000000000000000000000000000000AF

+:10F95800430000000000000000000000000000005C

+:10F96800000000000000000000000000000000008F

+:10F97800430000000000000000000000000000003C

+:10F98800000000000000000000000000000000006F

+:10F99800430000000000000000000000000000001C

+:10F9A800000000000000000000000000000000004F

+:10F9B80015D0001055C700100000000039F30010E2

+:10F9C80038F50010EFF20010EFF20010EFF200101F

+:10F9D800EFF20010EFF20010EFF20010EFF200105B

+:10F9E800EFF20010EFF20010FFFFFFFFFFFFFFFF35

+:10F9F800FFFFFFFFFFFF000001004153434949009B

+:10FA080000000000000000000000000000000000EE

+:10FA18000000000000000000000041534349490075

+:10FA280000000000000000000000000000000000CE

+:10FA3800000000000000000000000000A900001005

+:10FA48008100001010B50004440B002827D0144B87

+:10FA58001A68136ABA21515ACA00521A9B181B68AD

+:10FA6800002BF4DA0F4B3E221A600F4B0F4A1A6034

+:10FA78000F4BA322D200062199500E4A9C509B5846

+:10FA8800074B1A68136AB431515ACA00521A9B18A4

+:10FA980000225A60064A074BD358002BFADA10BDE9

+:10FAA800D45F010804012640080126401E1F0000FB

+:10FAB800000026401C05000010B54378FF2B00D03D

+:10FAC80010BD00F035F9124B1A683323D35C032BB1

+:10FAD80000D801BE0E4B1A68136ABA21515A4A005F

+:10FAE80052189B18DB680B4A13600B4A00211160FF

+:10FAF80001310A4A11605A68094B1A6013680B43AE

+:10FB080013601368DB07FCD400F03AF9D8E7C04665

+:10FB1800D45F010800600108F45F0108F85F01087C

+:10FB2800FC5F0108F0B583B0009001914D4B1A6855

+:10FB38003323D35C002B00D101BE4A4B1B681F6ADC

+:10FB4800BC229C58E4196C3A9B5C002B69D000F0ED

+:10FB5800E7F8060003280ED000F0EAF80500424A4C

+:10FB6800424BD358002B3DDB414C032E52D028008A

+:10FB780000F006F96DE03B4B1A683323D35C062B83

+:10FB880000D801BE374B1968BA23CA5A53009A18CD

+:10FB980052000B6A9C466244BC23CB589B181B68D6

+:10FBA800002B5BDB002000F0DBF8324B984257D08B

+:10FBB800314B1A6800230021012000F0D9F8051EF6

+:10FBC80002D02B4C45E00135002000F0C9F8294B44

+:10FBD800984202D0294B9D42F5D9284B9D42BBD96A

+:10FBE800234C36E0264A0121380000F0A9F8002805

+:10FBF80001D01F4CB9E70198FFF724FF009B002BA9

+:10FC080006D02368002BFCDB00F0C2F80400ACE748

+:10FC18001C4CAAE70121002000F09AF80028F9D12D

+:10FC2800A5E700F085F80600154A0121380000F024

+:10FC380087F8002809D1009B002B0DD02368002BE2

+:10FC4800FCDB00F0A5F8040000E0094C300000F0EF

+:10FC580097F8200003B0F0BD0A4CF7E7044CF8E72A

+:10FC6800034CF6E7D45F0108000026401C0500009D

+:10FC78000500520001018800F05F0108EF49020009

+:10FC8800E05F010801005000F0B5C64600B51C4B06

+:10FC98001B6859681B4A136904242343136101280C

+:10FCA8002CD030BF86235B00CB58002B23D1164CB9

+:10FCB8002768164BA320C0001E58154A90461568A1

+:10FCC800144A226006241C503E2042461060124A04

+:10FCD800063098500D4A104BD358002BFADA862379

+:10FCE8005B000E4ACA50084B1F60084AA323DB007A

+:10FCF800D650074B1D6080BCB846F0BD20BFD1E789

+:10FD0800D45F010800ED00E008012640000026400D

+:10FD1800040126401E1F00001C050000AAAAAAAA6A

+:10FD280001B40248844601BC604700BFE5060010E4

+:10FD380001B40248844601BC604700BF9B0500101F

+:10FD480001B40248844601BC604700BF514E001010

+:10FD580001B40248844601BC604700BF415200100C

+:10FD680001B40248844601BC604700BFC15200107C

+:10FD780001B40248844601BC604700BFF54F00103B

+:10FD880001B40248844601BC604700BFA3050010C7

+:10FD980001B40248844601BC604700BF55490010C1

+:10FDA800000000000000000000000000000000004B

+:08FDB800000000000000000043

+:020000041600E4

+:08080000ACE100100000000053

+:107C0000FC01000020122101000000000008001605

+:107C10000000001000000000000000000000000054

+:107C20000000000000000000000000000000000054

+:107C30000000000000000000000000000000000044

+:107C40000000000000000000000000000000000034

+:107C50000000000000000000000000000000000024

+:107C60000000000000000000000000000000000014

+:107C70000000000000000000000000000000000004

+:107C800000000000000000000000000000000000F4

+:107C900000000000000000000000000000000000E4

+:107CA00000000000000000000000000000000000D4

+:107CB00000000000000000000000000000000000C4

+:107CC00000000000000000000000000000000000B4

+:107CD00000000000000000000000000000000000A4

+:107CE0000000000000000000000000000000000094

+:107CF0000000000000000000000000000000000084

+:107D00000000000000000000000000000000000073

+:107D10000000000000000000000000000000000063

+:107D20000000000000000000000000000000000053

+:107D30000000000000000000000000000000000043

+:107D40000000000000000000000000000000000033

+:107D50000000000000000000000000000000000023

+:107D60000000000000000000000000000000000013

+:107D70000000000000000000000000000000000003

+:107D800000000000000000000000000000000000F3

+:107D900000000000000000000000000000000000E3

+:107DA00000000000000000000000000000000000D3

+:107DB00000000000000000000000000000000000C3

+:107DC00000000000000000000000000000000000B3

+:107DD00000000000000000000000000000000000A3

+:107DE0000000000000000000000000000000000093

+:107DF0000000000000000000C20200000000B33BD1

+:0400000510000507DB

+:00000001FF

diff --git a/examples/ota-requestor-app/p6/ota_base_build.sh b/examples/ota-requestor-app/p6/ota_base_build.sh
new file mode 100755
index 0000000..69ca770
--- /dev/null
+++ b/examples/ota-requestor-app/p6/ota_base_build.sh
@@ -0,0 +1,8 @@
+OUT_DIR=out/ota_requestor_debug/
+ANYCLOUD_DIR=third_party/p6/p6_sdk/libs/anycloud-ota/
+
+./scripts/examples/gn_p6_example.sh examples/ota-requestor-app/p6/ "$OUT_DIR"
+
+mv "$OUT_DIR"/chip-p6-ota-requestor-example.hex "$OUT_DIR"/chip-p6-ota-requestor-example.unsigned.hex
+
+./"$ANYCLOUD_DIR"/scripts/sign_script.bash "$OUT_DIR"/ chip-p6-ota-requestor-example python3 arm-none-eabi-objcopy "-O ihex" "" "$ANYCLOUD_DIR"/source/mcuboot/scripts/ imgtool_v1.7.0/imgtool.py create 0xFF 0x400 3584 1.0.0 0x00018000 0x001C0000 arm-none-eabi-objcopy ""
diff --git a/examples/ota-requestor-app/p6/ota_update_build.sh b/examples/ota-requestor-app/p6/ota_update_build.sh
new file mode 100755
index 0000000..8dbe338
--- /dev/null
+++ b/examples/ota-requestor-app/p6/ota_update_build.sh
@@ -0,0 +1,8 @@
+OUT_DIR=out/ota_requestor_update_debug/
+ANYCLOUD_DIR=third_party/p6/p6_sdk/libs/anycloud-ota/
+
+./scripts/examples/gn_p6_example.sh examples/ota-requestor-app/p6/ "$OUT_DIR" build_update_image=true
+
+mv "$OUT_DIR"/chip-p6-ota-requestor-example.hex "$OUT_DIR"/chip-p6-ota-requestor-example.unsigned.hex
+
+./"$ANYCLOUD_DIR"/scripts/sign_script.bash "$OUT_DIR" chip-p6-ota-requestor-example python3 arm-none-eabi-objcopy "-O ihex" "" "$ANYCLOUD_DIR"/source/mcuboot/scripts/ imgtool_v1.7.0/imgtool.py sign 0xFF 0x400 3584 1.0.0 0x00018000 0x001C0000 arm-none-eabi-objcopy "-k $ANYCLOUD_DIR/source/mcuboot/keys/cypress-test-ec-p256.pem"
diff --git a/examples/ota-requestor-app/p6/src/AppTask.cpp b/examples/ota-requestor-app/p6/src/AppTask.cpp
new file mode 100644
index 0000000..ef45532
--- /dev/null
+++ b/examples/ota-requestor-app/p6/src/AppTask.cpp
@@ -0,0 +1,465 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#include "AppTask.h"
+#include "AppConfig.h"
+#include "AppEvent.h"
+#include "ButtonHandler.h"
+#include "LEDWidget.h"
+#include "app/clusters/ota-requestor/BDXDownloader.h"
+#include "app/clusters/ota-requestor/OTARequestor.h"
+#include "platform/GenericOTARequestorDriver.h"
+#include "platform/P6/OTAImageProcessorImpl.h"
+#include "qrcodegen.h"
+#include <app-common/zap-generated/attribute-id.h>
+#include <app-common/zap-generated/attribute-type.h>
+#include <app-common/zap-generated/attributes/Accessors.h>
+#include <app-common/zap-generated/cluster-id.h>
+#include <app/server/Dnssd.h>
+#include <app/server/OnboardingCodesUtil.h>
+#include <app/server/Server.h>
+#include <app/util/attribute-storage.h>
+#include <assert.h>
+#include <credentials/DeviceAttestationCredsProvider.h>
+#include <credentials/examples/DeviceAttestationCredsExample.h>
+#include <cy_wcm.h>
+#include <platform/CHIPDeviceLayer.h>
+#include <setup_payload/QRCodeSetupPayloadGenerator.h>
+#include <setup_payload/SetupPayload.h>
+
+#include <app/clusters/network-commissioning/network-commissioning.h>
+#include <platform/P6/NetworkCommissioningDriver.h>
+
+extern "C" {
+#include "cy_smif_psoc6.h"
+}
+
+#define FACTORY_RESET_TRIGGER_TIMEOUT 3000
+#define FACTORY_RESET_CANCEL_WINDOW_TIMEOUT 3000
+#define APP_TASK_STACK_SIZE (4096)
+#define APP_TASK_PRIORITY 2
+#define APP_EVENT_QUEUE_SIZE 10
+
+using chip::BDXDownloader;
+using chip::CharSpan;
+using chip::FabricIndex;
+using chip::GetRequestorInstance;
+using chip::NodeId;
+using chip::OTADownloader;
+using chip::OTAImageProcessorImpl;
+using chip::OTAImageProcessorParams;
+using chip::OTARequestor;
+using chip::System::Layer;
+
+using namespace ::chip;
+using namespace chip::TLV;
+using namespace ::chip::Credentials;
+using namespace ::chip::DeviceLayer;
+using namespace ::chip::System;
+
+namespace {
+TimerHandle_t sFunctionTimer; // FreeRTOS app sw timer.
+
+TaskHandle_t sAppTaskHandle;
+QueueHandle_t sAppEventQueue;
+
+LEDWidget sStatusLED;
+
+bool sIsWiFiStationProvisioned = false;
+bool sIsWiFiStationEnabled     = false;
+bool sIsWiFiStationConnected   = false;
+bool sHaveBLEConnections       = false;
+
+uint8_t sAppEventQueueBuffer[APP_EVENT_QUEUE_SIZE * sizeof(AppEvent)];
+StaticQueue_t sAppEventQueueStruct;
+
+StackType_t appStack[APP_TASK_STACK_SIZE / sizeof(StackType_t)];
+StaticTask_t appTaskStruct;
+
+OTARequestor gRequestorCore;
+GenericOTARequestorDriver gRequestorUser;
+BDXDownloader gDownloader;
+OTAImageProcessorImpl gImageProcessor;
+
+app::Clusters::NetworkCommissioning::Instance
+    sWiFiNetworkCommissioningInstance(0 /* Endpoint Id */, &(NetworkCommissioning::P6WiFiDriver::GetInstance()));
+} // namespace
+
+void OnTriggerUpdateTimerHandler(Layer * systemLayer, void * appState);
+
+AppTask AppTask::sAppTask;
+
+void NetWorkCommissioningInstInit()
+{
+    sWiFiNetworkCommissioningInstance.Init();
+}
+
+CHIP_ERROR AppTask::StartAppTask()
+{
+    sAppEventQueue = xQueueCreateStatic(APP_EVENT_QUEUE_SIZE, sizeof(AppEvent), sAppEventQueueBuffer, &sAppEventQueueStruct);
+    if (sAppEventQueue == NULL)
+    {
+        P6_LOG("Failed to allocate app event queue");
+        appError(APP_ERROR_EVENT_QUEUE_FAILED);
+    }
+
+    // Start App task.
+    sAppTaskHandle = xTaskCreateStatic(AppTaskMain, APP_TASK_NAME, ArraySize(appStack), NULL, 1, appStack, &appTaskStruct);
+    return (sAppTaskHandle == nullptr) ? APP_ERROR_CREATE_TASK_FAILED : CHIP_NO_ERROR;
+}
+
+CHIP_ERROR AppTask::Init()
+{
+    CHIP_ERROR err = CHIP_NO_ERROR;
+
+    int rc = boot_set_confirmed();
+    if (rc != 0)
+    {
+        P6_LOG("boot_set_confirmed failed");
+        appError(CHIP_ERROR_WELL_UNINITIALIZED);
+    }
+
+    // Register the callback to init the MDNS server when connectivity is available
+    PlatformMgr().AddEventHandler(
+        [](const ChipDeviceEvent * event, intptr_t arg) {
+            // Restart the server whenever an ip address is renewed
+            if (event->Type == DeviceEventType::kInternetConnectivityChange)
+            {
+                if (event->InternetConnectivityChange.IPv4 == kConnectivity_Established ||
+                    event->InternetConnectivityChange.IPv6 == kConnectivity_Established)
+                {
+                    chip::app::DnssdServer::Instance().StartServer();
+                }
+            }
+        },
+        0);
+    // Init ZCL Data Model
+    chip::Server::GetInstance().Init();
+
+    // Initialize device attestation config
+    SetDeviceAttestationCredentialsProvider(Examples::GetExampleDACProvider());
+
+    // Initialise WSTK buttons PB0 and PB1 (including debounce).
+    ButtonHandler::Init();
+
+    // Create FreeRTOS sw timer for Function Selection.
+    sFunctionTimer = xTimerCreate("FnTmr",          // Just a text name, not used by the RTOS kernel
+                                  1,                // == default timer period (mS)
+                                  false,            // no timer reload (==one-shot)
+                                  (void *) this,    // init timer id = app task obj context
+                                  TimerEventHandler // timer callback handler
+    );
+    if (sFunctionTimer == NULL)
+    {
+        P6_LOG("funct timer create failed");
+        appError(APP_ERROR_CREATE_TIMER_FAILED);
+    }
+
+    NetWorkCommissioningInstInit();
+
+    // Initialize LEDs
+    sStatusLED.Init(SYSTEM_STATE_LED);
+
+    ConfigurationMgr().LogDeviceConfig();
+
+    SetRequestorInstance(&gRequestorCore);
+    gRequestorCore.Init(&(Server::GetInstance()), &gRequestorUser, &gDownloader);
+    gImageProcessor.SetOTADownloader(&gDownloader);
+    gDownloader.SetImageProcessorDelegate(&gImageProcessor);
+    gRequestorUser.Init(&gRequestorCore, &gImageProcessor);
+
+    uint32_t savedSoftwareVersion;
+    err = ConfigurationMgr().GetSoftwareVersion(savedSoftwareVersion);
+    if (err != CHIP_NO_ERROR)
+    {
+        P6_LOG("Can't get saved software version");
+        appError(err);
+    }
+
+    if (savedSoftwareVersion != CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION)
+    {
+        ConfigurationMgr().StoreSoftwareVersion(CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION);
+
+        P6_LOG("Confirming update to version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION);
+        chip::OTARequestorInterface * requestor = chip::GetRequestorInstance();
+        if (requestor != nullptr)
+        {
+            requestor->NotifyUpdateApplied(savedSoftwareVersion);
+        }
+    }
+
+    P6_LOG("Current Software Version: %u", CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION);
+    P6_LOG("Current Firmware Version: %s", CHIP_DEVICE_CONFIG_DEVICE_FIRMWARE_REVISION_STRING);
+
+    // Print setup info
+    PrintOnboardingCodes(chip::RendezvousInformationFlag(chip::RendezvousInformationFlag::kBLE));
+
+    return err;
+}
+
+void AppTask::AppTaskMain(void * pvParameter)
+{
+    AppEvent event;
+    CHIP_ERROR err = sAppTask.Init();
+    if (err != CHIP_NO_ERROR)
+    {
+        P6_LOG("AppTask.Init() failed");
+        appError(err);
+    }
+
+    P6_LOG("App Task started");
+
+    while (true)
+    {
+        BaseType_t eventReceived = xQueueReceive(sAppEventQueue, &event, pdMS_TO_TICKS(10));
+        while (eventReceived == pdTRUE)
+        {
+            sAppTask.DispatchEvent(&event);
+            eventReceived = xQueueReceive(sAppEventQueue, &event, 0);
+        }
+
+        // Update the status LED if factory reset has not been initiated.
+        //
+        // If system has "full connectivity", keep the LED On constantly.
+        //
+        // If thread and service provisioned, but not attached to the thread network
+        // yet OR no connectivity to the service OR subscriptions are not fully
+        // established THEN blink the LED Off for a short period of time.
+        //
+        // If the system has ble connection(s) uptill the stage above, THEN blink
+        // the LEDs at an even rate of 100ms.
+        //
+        // Otherwise, blink the LED ON for a very short time.
+        if (sAppTask.mFunction != Function::kFactoryReset)
+        {
+            if (sIsWiFiStationEnabled && sIsWiFiStationProvisioned && !sIsWiFiStationConnected)
+            {
+                sStatusLED.Blink(950, 50);
+            }
+            else if (sHaveBLEConnections)
+            {
+                sStatusLED.Blink(100, 100);
+            }
+            else
+            {
+                sStatusLED.Blink(50, 950);
+            }
+        }
+
+        sStatusLED.Animate();
+    }
+}
+
+void AppTask::ButtonEventHandler(uint8_t btnIdx, uint8_t btnAction)
+{
+    if (btnIdx != APP_FUNCTION_BUTTON_IDX && btnIdx != APP_UPDATE_BUTTON_IDX)
+    {
+        return;
+    }
+
+    AppEvent button_event              = {};
+    button_event.Type                  = AppEvent::kEventType_Button;
+    button_event.ButtonEvent.ButtonIdx = btnIdx;
+    button_event.ButtonEvent.Action    = btnAction;
+
+    if (btnIdx == APP_FUNCTION_BUTTON_IDX)
+    {
+        button_event.Handler = FunctionHandler;
+        sAppTask.PostEvent(&button_event);
+    }
+    if (btnIdx == APP_UPDATE_BUTTON_IDX)
+    {
+        button_event.Handler = UpdateButtonHandler;
+        sAppTask.PostEvent(&button_event);
+    }
+}
+
+void AppTask::TimerEventHandler(TimerHandle_t xTimer)
+{
+    AppEvent event;
+    event.Type               = AppEvent::kEventType_Timer;
+    event.TimerEvent.Context = (void *) xTimer;
+    event.Handler            = FunctionTimerEventHandler;
+    sAppTask.PostEvent(&event);
+}
+
+void AppTask::FunctionTimerEventHandler(AppEvent * aEvent)
+{
+    if (aEvent->Type != AppEvent::kEventType_Timer)
+    {
+        return;
+    }
+
+    // If we reached here, the button was held past FACTORY_RESET_TRIGGER_TIMEOUT,
+    // initiate factory reset
+    if (sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kStartBleAdv)
+    {
+        P6_LOG("Factory Reset Triggered. Release button within %ums to cancel.", FACTORY_RESET_CANCEL_WINDOW_TIMEOUT);
+
+        // Start timer for FACTORY_RESET_CANCEL_WINDOW_TIMEOUT to allow user to
+        // cancel, if required.
+        sAppTask.StartTimer(FACTORY_RESET_CANCEL_WINDOW_TIMEOUT);
+
+        sAppTask.mFunction = Function::kFactoryReset;
+
+        // Turn off all LEDs before starting blink to make sure blink is
+        // co-ordinated.
+        sStatusLED.Set(false);
+
+        sStatusLED.Blink(500);
+    }
+    else if (sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kFactoryReset)
+    {
+        // Actually trigger Factory Reset
+        sAppTask.mFunction = Function::kNoneSelected;
+        ConfigurationMgr().InitiateFactoryReset();
+    }
+}
+
+void AppTask::FunctionHandler(AppEvent * aEvent)
+{
+    // To trigger software update: press the APP_FUNCTION_BUTTON button briefly (<
+    // FACTORY_RESET_TRIGGER_TIMEOUT) To initiate factory reset: press the
+    // APP_FUNCTION_BUTTON for FACTORY_RESET_TRIGGER_TIMEOUT +
+    // FACTORY_RESET_CANCEL_WINDOW_TIMEOUT All LEDs start blinking after
+    // FACTORY_RESET_TRIGGER_TIMEOUT to signal factory reset has been initiated.
+    // To cancel factory reset: release the APP_FUNCTION_BUTTON once all LEDs
+    // start blinking within the FACTORY_RESET_CANCEL_WINDOW_TIMEOUT
+    if (aEvent->ButtonEvent.Action == APP_BUTTON_RELEASED)
+    {
+        if (!sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kNoneSelected)
+        {
+            sAppTask.StartTimer(FACTORY_RESET_TRIGGER_TIMEOUT);
+            sAppTask.mFunction = Function::kStartBleAdv;
+        }
+    }
+    else
+    {
+        // If the button was released before factory reset got initiated, start Thread Network
+        if (sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kStartBleAdv)
+        {
+            sAppTask.CancelTimer();
+            sAppTask.mFunction = Function::kNoneSelected;
+        }
+        else if (sAppTask.mFunctionTimerActive && sAppTask.mFunction == Function::kFactoryReset)
+        {
+
+            sAppTask.CancelTimer();
+
+            // Change the function to none selected since factory reset has been
+            // canceled.
+            sAppTask.mFunction = Function::kNoneSelected;
+
+            P6_LOG("Factory Reset has been Canceled");
+        }
+    }
+}
+
+void AppTask::UpdateButtonHandler(AppEvent * aEvent)
+{
+    if (aEvent->ButtonEvent.Action == APP_BUTTON_RELEASED)
+    {
+        chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Milliseconds32(2000), OnTriggerUpdateTimerHandler,
+                                                    nullptr);
+    }
+}
+
+void AppTask::CancelTimer()
+{
+    if (xTimerStop(sFunctionTimer, 0) == pdFAIL)
+    {
+        P6_LOG("app timer stop() failed");
+        appError(APP_ERROR_STOP_TIMER_FAILED);
+    }
+
+    mFunctionTimerActive = false;
+}
+
+void AppTask::StartTimer(uint32_t aTimeoutInMs)
+{
+    if (xTimerIsTimerActive(sFunctionTimer))
+    {
+        P6_LOG("app timer already started!");
+        CancelTimer();
+    }
+
+    // timer is not active, change its period to required value (== restart).
+    // FreeRTOS- Block for a maximum of 100 ticks if the change period command
+    // cannot immediately be sent to the timer command queue.
+    if (xTimerChangePeriod(sFunctionTimer, aTimeoutInMs / portTICK_PERIOD_MS, 100) != pdPASS)
+    {
+        P6_LOG("app timer start() failed");
+        appError(APP_ERROR_START_TIMER_FAILED);
+    }
+
+    mFunctionTimerActive = true;
+}
+
+void AppTask::PostEvent(const AppEvent * aEvent)
+{
+    if (sAppEventQueue != NULL)
+    {
+        BaseType_t status;
+        if (xPortIsInsideInterrupt())
+        {
+            BaseType_t higherPrioTaskWoken = pdFALSE;
+            status                         = xQueueSendFromISR(sAppEventQueue, aEvent, &higherPrioTaskWoken);
+
+#ifdef portYIELD_FROM_ISR
+            portYIELD_FROM_ISR(higherPrioTaskWoken);
+#elif portEND_SWITCHING_ISR // portYIELD_FROM_ISR or portEND_SWITCHING_ISR
+            portEND_SWITCHING_ISR(higherPrioTaskWoken);
+#else                       // portYIELD_FROM_ISR or portEND_SWITCHING_ISR
+#error "Must have portYIELD_FROM_ISR or portEND_SWITCHING_ISR"
+#endif // portYIELD_FROM_ISR or portEND_SWITCHING_ISR
+        }
+        else
+        {
+            status = xQueueSend(sAppEventQueue, aEvent, 1);
+        }
+
+        if (!status)
+            P6_LOG("Failed to post event to app task event queue");
+    }
+    else
+    {
+        P6_LOG("Event Queue is NULL should never happen");
+    }
+}
+
+void AppTask::DispatchEvent(AppEvent * aEvent)
+{
+    if (aEvent->Handler)
+    {
+        aEvent->Handler(aEvent);
+    }
+    else
+    {
+        P6_LOG("Event received with no handler. Dropping event.");
+    }
+}
+
+void OnTriggerUpdateTimerHandler(Layer * systemLayer, void * appState)
+{
+    P6_LOG("Triggering immediate OTA update query");
+
+    OTARequestor * req = static_cast<OTARequestor *>(GetRequestorInstance());
+    req->TriggerImmediateQuery();
+}
diff --git a/examples/ota-requestor-app/p6/src/ButtonHandler.cpp b/examples/ota-requestor-app/p6/src/ButtonHandler.cpp
new file mode 100644
index 0000000..9701eca
--- /dev/null
+++ b/examples/ota-requestor-app/p6/src/ButtonHandler.cpp
@@ -0,0 +1,98 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#include "ButtonHandler.h"
+#include "AppConfig.h"
+#include "AppTask.h"
+
+namespace {
+constexpr int kButtonCount = 2;
+
+TimerHandle_t buttonTimers[kButtonCount]; // FreeRTOS timers used for debouncing
+// buttons. Array to hold handles to
+// the created timers.
+
+} // namespace
+
+void ButtonHandler::Init(void)
+{
+    GpioInit();
+    // Create FreeRTOS sw timers for debouncing buttons.
+    for (uint8_t i = 0; i < kButtonCount; i++)
+    {
+        buttonTimers[i] = xTimerCreate("BtnTmr",                      // Just a text name, not used by the RTOS kernel
+                                       APP_BUTTON_DEBOUNCE_PERIOD_MS, // timer period
+                                       false,                         // no timer reload (==one-shot)
+                                       (void *) (int) i,              // init timer id = button index
+                                       TimerCallback                  // timer callback handler (all buttons use
+                                                                      // the same timer cn function)
+        );
+    }
+}
+
+void ButtonHandler::GpioInit(void)
+{
+    cy_rslt_t result = CY_RSLT_SUCCESS;
+    // Set up button GPIOs to input with pullups.
+    result = cyhal_gpio_init(APP_UPDATE_BUTTON, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_PULLUP, CYBSP_BTN_OFF);
+    if (result != CY_RSLT_SUCCESS)
+    {
+        printf(" cyhal_gpio_init failed for APP_LOCK_BUTTON\r\n");
+    }
+    result = cyhal_gpio_init(APP_FUNCTION_BUTTON, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_PULLUP, CYBSP_BTN_OFF);
+    if (result != CY_RSLT_SUCCESS)
+    {
+        printf(" cyhal_gpio_init failed for APP_FUNCTION_BUTTON\r\n");
+    }
+    /* Configure GPIO interrupt. */
+    cyhal_gpio_register_callback(APP_UPDATE_BUTTON, lockbuttonIsr, NULL);
+    cyhal_gpio_register_callback(APP_FUNCTION_BUTTON, functionbuttonIsr, NULL);
+    cyhal_gpio_enable_event(APP_UPDATE_BUTTON, CYHAL_GPIO_IRQ_FALL, GPIO_INTERRUPT_PRIORITY, true);
+    cyhal_gpio_enable_event(APP_FUNCTION_BUTTON, CYHAL_GPIO_IRQ_FALL, GPIO_INTERRUPT_PRIORITY, true);
+}
+
+void ButtonHandler::lockbuttonIsr(void * handler_arg, cyhal_gpio_event_t event)
+{
+    portBASE_TYPE taskWoken = pdFALSE;
+    xTimerStartFromISR(buttonTimers[APP_UPDATE_BUTTON_IDX], &taskWoken);
+}
+
+void ButtonHandler::functionbuttonIsr(void * handler_arg, cyhal_gpio_event_t event)
+{
+    portBASE_TYPE taskWoken = pdFALSE;
+    xTimerStartFromISR(buttonTimers[APP_FUNCTION_BUTTON_IDX], &taskWoken);
+}
+
+void ButtonHandler::TimerCallback(TimerHandle_t xTimer)
+{
+    // Get the button index of the expired timer and call button event helper.
+    uint32_t timerId;
+    uint8_t buttonevent = 0;
+    timerId             = (uint32_t) pvTimerGetTimerID(xTimer);
+    if (timerId)
+    {
+        buttonevent = cyhal_gpio_read(APP_FUNCTION_BUTTON);
+    }
+    else
+    {
+        buttonevent = cyhal_gpio_read(APP_UPDATE_BUTTON);
+    }
+    GetAppTask().ButtonEventHandler(timerId, (buttonevent) ? APP_BUTTON_PRESSED : APP_BUTTON_RELEASED);
+}
diff --git a/examples/ota-requestor-app/p6/src/ZclCallbacks.cpp b/examples/ota-requestor-app/p6/src/ZclCallbacks.cpp
new file mode 100644
index 0000000..f1f6f41
--- /dev/null
+++ b/examples/ota-requestor-app/p6/src/ZclCallbacks.cpp
@@ -0,0 +1,56 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+/**
+ * @file
+ *   This file implements the handler for data model messages.
+ */
+
+#include "AppConfig.h"
+#include <lib/support/logging/CHIPLogging.h>
+
+#include <app-common/zap-generated/attribute-id.h>
+#include <app-common/zap-generated/cluster-id.h>
+#include <app-common/zap-generated/ids/Attributes.h>
+#include <app-common/zap-generated/ids/Clusters.h>
+#include <app/util/af-types.h>
+
+using namespace ::chip;
+using namespace ::chip::app::Clusters;
+
+void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t mask, uint8_t type,
+                                       uint16_t size, uint8_t * value)
+{
+    EndpointId endpoint     = attributePath.mEndpointId;
+    ClusterId clusterId     = attributePath.mClusterId;
+    AttributeId attributeId = attributePath.mAttributeId;
+    P6_LOG("MatterPostAttributeChangeCallback - Cluster ID: " ChipLogFormatMEI
+           ", EndPoint ID: '0x%02x', Attribute ID: " ChipLogFormatMEI,
+           ChipLogValueMEI(clusterId), endpoint, ChipLogValueMEI(attributeId));
+
+    switch (clusterId)
+    {
+    case Identify::Id:
+        ChipLogProgress(Zcl, "Identify attribute ID: " ChipLogFormatMEI " Type: %u Value: %" PRIu16 ", length %" PRIu16,
+                        ChipLogValueMEI(attributeId), type, *value, size);
+        break;
+    default:
+        P6_LOG("Unhandled cluster ID: " ChipLogFormatMEI, ChipLogValueMEI(clusterId));
+        break;
+    }
+}
diff --git a/examples/ota-requestor-app/p6/src/cy8c6xxa_cm4_dual_ota_int.ld b/examples/ota-requestor-app/p6/src/cy8c6xxa_cm4_dual_ota_int.ld
new file mode 100644
index 0000000..d1717ff
--- /dev/null
+++ b/examples/ota-requestor-app/p6/src/cy8c6xxa_cm4_dual_ota_int.ld
@@ -0,0 +1,404 @@
+/***************************************************************************//**
+* \file cy8c6xxa_cm4_dual.ld
+* \version 2.60
+*
+* Linker file for the GNU C compiler.
+*
+* The main purpose of the linker script is to describe how the sections in the
+* input files should be mapped into the output file, and to control the memory
+* layout of the output file.
+*
+* \note The entry point location is fixed and starts at 0x10000000. The valid
+* application image should be placed there.
+*
+* \note The linker files included with the PDL template projects must be generic
+* and handle all common use cases. Your project may not use every section
+* defined in the linker files. In that case you may see warnings during the
+* build process. In your project, you can simply comment out or remove the
+* relevant code in the linker file.
+*
+********************************************************************************
+* \copyright
+* Copyright 2016-2019 Cypress Semiconductor Corporation
+* SPDX-License-Identifier: Apache-2.0
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*******************************************************************************/
+
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
+SEARCH_DIR(.)
+GROUP(-lgcc -lc -lnosys)
+ENTRY(Reset_Handler)
+
+/* Size of the stack section at the end of CM4 SRAM */
+STACK_SIZE = 0x1000;
+
+/* Size of the Cortex-M0+ application image at the start of FLASH - passed in as argument to ld.exe*/
+/* MCUBOOT_BOOTLOADER_SIZE  = 0x12000; */
+
+/* MCUBoot Header Size passed in as argument to ld.exe */
+/* MCUBOOT_HEADER_SIZE = 0x1000; */
+
+/* CY_BOOT_PRIMARY_1_SIZE Slot 1 size passed in as argument to ld.exe */
+/* CY_BOOT_PRIMARY_1_SIZE = 0x0EE000 (Internal FLASH) */
+/* CY_BOOT_PRIMARY_1_SIZE = 0x10C000 (External FLASH) */
+
+/* Force symbol to be entered in the output file as an undefined symbol. Doing
+* this may, for example, trigger linking of additional modules from standard
+* libraries. You may list several symbols for each EXTERN, and you may use
+* EXTERN multiple times. This command has the same effect as the -u command-line
+* option.
+*/
+EXTERN(Reset_Handler)
+
+/* The MEMORY section below describes the location and size of blocks of memory in the target.
+* Use this section to specify the memory regions available for allocation.
+*/
+MEMORY
+{
+    /* The ram and flash regions control RAM and flash memory allocation for the CM4 core.
+     * You can change the memory allocation by editing the 'ram' and 'flash' regions.
+     * Note that 2 KB of RAM (at the end of the SRAM) are reserved for system use.
+     * Using this memory region for other purposes will lead to unexpected behavior.
+     * Your changes must be aligned with the corresponding memory regions for CM0+ core in 'xx_cm0plus.ld',
+     * where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.ld'.
+     */
+    ram               (rwx)   : ORIGIN = 0x08020800, LENGTH = 0xDF000
+    flash             (rx)    : ORIGIN = 0x10000000 + MCUBOOT_BOOTLOADER_SIZE, LENGTH = CY_BOOT_PRIMARY_1_SIZE
+
+    /* This is a 32K flash region used for EEPROM emulation. This region can also be used as the general purpose flash.
+     * You can assign sections to this memory region for only one of the cores.
+     * Note some middleware (e.g. BLE, Emulated EEPROM) can place their data into this memory region.
+     * Therefore, repurposing this memory region will prevent such middleware from operation.
+     */
+    em_eeprom         (rx)    : ORIGIN = 0x14000000, LENGTH = 0x8000       /*  32 KB */
+
+    /* The following regions define device specific memory regions and must not be changed. */
+    sflash_user_data  (rx)    : ORIGIN = 0x16000800, LENGTH = 0x800        /* Supervisory flash: User data */
+    sflash_nar        (rx)    : ORIGIN = 0x16001A00, LENGTH = 0x200        /* Supervisory flash: Normal Access Restrictions (NAR) */
+    sflash_public_key (rx)    : ORIGIN = 0x16005A00, LENGTH = 0xC00        /* Supervisory flash: Public Key */
+    sflash_toc_2      (rx)    : ORIGIN = 0x16007C00, LENGTH = 0x200        /* Supervisory flash: Table of Content # 2 */
+    sflash_rtoc_2     (rx)    : ORIGIN = 0x16007E00, LENGTH = 0x200        /* Supervisory flash: Table of Content # 2 Copy */
+    xip               (rx)    : ORIGIN = 0x18000000, LENGTH = 0x8000000    /* 128 MB */
+    efuse             (r)     : ORIGIN = 0x90700000, LENGTH = 0x100000     /*   1 MB */
+}
+
+/* Library configurations */
+GROUP(libgcc.a libc.a libm.a libnosys.a)
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ *
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ *   __Vectors_End
+ *   __Vectors_Size
+ */
+
+
+SECTIONS
+{
+    /* Cortex-M4 application flash area */
+    .text ORIGIN(flash)  + MCUBOOT_HEADER_SIZE :
+    {
+        . = ALIGN(8);
+        __cy_app_load_addr = . ;
+        __Vectors = . ;
+        KEEP(*(.vectors))
+        . = ALIGN(8);
+        __Vectors_End = .;
+        __Vectors_Size = __Vectors_End - __Vectors;
+        __end__ = .;
+
+        . = ALIGN(8);
+        *(.text*)
+
+        KEEP(*(.init))
+        KEEP(*(.fini))
+
+        /* .ctors */
+        *crtbegin.o(.ctors)
+        *crtbegin?.o(.ctors)
+        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+        *(SORT(.ctors.*))
+        *(.ctors)
+
+        /* .dtors */
+        *crtbegin.o(.dtors)
+        *crtbegin?.o(.dtors)
+        *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+        *(SORT(.dtors.*))
+        *(.dtors)
+
+        /* Read-only code (constants). */
+        *(.rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
+
+        KEEP(*(.eh_frame*))
+    } > flash
+
+
+    .ARM.extab :
+    {
+        *(.ARM.extab* .gnu.linkonce.armextab.*)
+    } > flash
+
+    __exidx_start = .;
+
+    .ARM.exidx :
+    {
+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+    } > flash
+    __exidx_end = .;
+
+
+    /* To copy multiple ROM to RAM sections,
+     * uncomment .copy.table section and,
+     * define __STARTUP_COPY_MULTIPLE in startup_psoc6_02_cm4.S */
+    .copy.table :
+    {
+        . = ALIGN(8);
+        __copy_table_start__ = .;
+
+        /* Copy interrupt vectors from flash to RAM */
+        LONG (__Vectors)                                    /* From */
+        LONG (__ram_vectors_start__)                        /* To   */
+        LONG (__Vectors_End - __Vectors)                    /* Size */
+
+        /* Copy data section to RAM */
+        LONG (__etext)                                      /* From */
+        LONG (__data_start__)                               /* To   */
+        LONG (__data_end__ - __data_start__)                /* Size */
+
+        __copy_table_end__ = .;
+    } > flash
+
+
+    /* To clear multiple BSS sections,
+     * uncomment .zero.table section and,
+     * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_psoc6_02_cm4.S */
+    .zero.table :
+    {
+        . = ALIGN(8);
+        __zero_table_start__ = .;
+        LONG (__bss_start__)
+        LONG (__bss_end__ - __bss_start__)
+        __zero_table_end__ = .;
+    } > flash
+
+    __etext =  . ;
+
+
+    .ramVectors (NOLOAD) : ALIGN(8)
+    {
+        __ram_vectors_start__ = .;
+        KEEP(*(.ram_vectors))
+        __ram_vectors_end__   = .;
+    } > ram
+
+
+    .data __ram_vectors_end__ : AT (__etext)
+    {
+        __data_start__ = .;
+
+        *(vtable)
+        *(.data*)
+
+        . = ALIGN(8);
+        /* preinit data */
+        PROVIDE_HIDDEN (__preinit_array_start = .);
+        KEEP(*(.preinit_array))
+        PROVIDE_HIDDEN (__preinit_array_end = .);
+
+        . = ALIGN(8);
+        /* init data */
+        PROVIDE_HIDDEN (__init_array_start = .);
+        KEEP(*(SORT(.init_array.*)))
+        KEEP(*(.init_array))
+        PROVIDE_HIDDEN (__init_array_end = .);
+
+        . = ALIGN(8);
+        /* finit data */
+        PROVIDE_HIDDEN (__fini_array_start = .);
+        KEEP(*(SORT(.fini_array.*)))
+        KEEP(*(.fini_array))
+        PROVIDE_HIDDEN (__fini_array_end = .);
+
+        KEEP(*(.jcr*))
+        . = ALIGN(8);
+
+        KEEP(*(.cy_ramfunc*))
+        . = ALIGN(8);
+
+        __data_end__ = .;
+
+    } > ram
+
+
+    /* Place variables in the section that should not be initialized during the
+    *  device startup.
+    */
+    .noinit (NOLOAD) : ALIGN(8)
+    {
+      KEEP(*(.noinit))
+    } > ram
+
+
+    /* The uninitialized global or static variables are placed in this section.
+    *
+    * The NOLOAD attribute tells linker that .bss section does not consume
+    * any space in the image. The NOLOAD attribute changes the .bss type to
+    * NOBITS, and that  makes linker to A) not allocate section in memory, and
+    * A) put information to clear the section with all zeros during application
+    * loading.
+    *
+    * Without the NOLOAD attribute, the .bss section might get PROGBITS type.
+    * This  makes linker to A) allocate zeroed section in memory, and B) copy
+    * this section to RAM during application loading.
+    */
+    .bss (NOLOAD):
+    {
+        . = ALIGN(8);
+        __bss_start__ = .;
+        *(.bss*)
+        *(COMMON)
+        . = ALIGN(8);
+        __bss_end__ = .;
+    } > ram
+
+
+    .heap (NOLOAD):
+    {
+        __HeapBase = .;
+        __end__ = .;
+        end = __end__;
+        KEEP(*(.heap*))
+        . = ORIGIN(ram) + LENGTH(ram) - STACK_SIZE;
+        __HeapLimit = .;
+    } > ram
+
+
+    /* .stack_dummy section doesn't contains any symbols. It is only
+     * used for linker to calculate size of stack sections, and assign
+     * values to stack symbols later */
+    .stack_dummy (NOLOAD):
+    {
+        KEEP(*(.stack*))
+    } > ram
+
+
+    /* Set stack top to end of RAM, and stack limit move down by
+     * size of stack_dummy section */
+    __StackTop = ORIGIN(ram) + LENGTH(ram);
+    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
+    PROVIDE(__stack = __StackTop);
+
+    /* Check if data + heap + stack exceeds RAM limit */
+    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+
+
+    /* Used for the digital signature of the secure application and the Bootloader SDK application.
+    * The size of the section depends on the required data size. */
+    .cy_app_signature ORIGIN(flash) + LENGTH(flash) - 256 :
+    {
+        KEEP(*(.cy_app_signature))
+    } > flash
+
+
+    /* Emulated EEPROM Flash area */
+    .cy_em_eeprom (NOLOAD):
+    {
+        KEEP(*(.cy_em_eeprom))
+    } > em_eeprom
+
+
+    /* Supervisory Flash: Table of Content # 2 Copy */
+    .cy_rtoc_part2 :
+    {
+        KEEP(*(.cy_rtoc_part2))
+    } > sflash_rtoc_2
+
+
+    /* Places the code in the Execute in Place (XIP) section. See the smif driver
+    *  documentation for details.
+    */
+    .cy_xip :
+    {
+        KEEP(*(.cy_xip))
+    } > xip
+
+
+    /* eFuse */
+    .cy_efuse :
+    {
+        KEEP(*(.cy_efuse))
+    } > efuse
+
+
+    /* These sections are used for additional metadata (silicon revision,
+    *  Silicon/JTAG ID, etc.) storage.
+    */
+    .cymeta         0x90500000 : { KEEP(*(.cymeta)) } :NONE
+}
+
+
+/* The following symbols used by the cymcuelftool. */
+/* Flash */
+__cy_memory_0_start    = 0x10000000;
+__cy_memory_0_length   = 0x00200000;
+__cy_memory_0_row_size = 0x200;
+
+/* Emulated EEPROM Flash area */
+__cy_memory_1_start    = 0x14000000;
+__cy_memory_1_length   = 0x8000;
+__cy_memory_1_row_size = 0x200;
+
+/* Supervisory Flash */
+__cy_memory_2_start    = 0x16000000;
+__cy_memory_2_length   = 0x8000;
+__cy_memory_2_row_size = 0x200;
+
+/* XIP */
+__cy_memory_3_start    = 0x18000000;
+__cy_memory_3_length   = 0x08000000;
+__cy_memory_3_row_size = 0x200;
+
+/* eFuse */
+__cy_memory_4_start    = 0x90700000;
+__cy_memory_4_length   = 0x100000;
+__cy_memory_4_row_size = 1;
+
+/* EOF */
diff --git a/examples/ota-requestor-app/p6/src/main.cpp b/examples/ota-requestor-app/p6/src/main.cpp
new file mode 100644
index 0000000..f2bcc8b
--- /dev/null
+++ b/examples/ota-requestor-app/p6/src/main.cpp
@@ -0,0 +1,158 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    Copyright (c) 2019 Google LLC.
+ *    Copyright 2021, Cypress Semiconductor Corporation (an Infineon company)
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+#include <FreeRTOS.h>
+
+#include <lib/support/CHIPMem.h>
+#include <lib/support/CHIPPlatformMemory.h>
+#include <platform/CHIPDeviceLayer.h>
+#include <platform/KeyValueStoreManager.h>
+
+#include <AppTask.h>
+
+#include "AppConfig.h"
+#include "cyhal_wdt.h"
+#include "init_p6Platform.h"
+#include <app/server/Server.h>
+
+#ifdef HEAP_MONITORING
+#include "MemMonitoring.h"
+#endif
+#define MAIN_TASK_STACK_SIZE (4096)
+#define MAIN_TASK_PRIORITY 2
+
+using namespace ::chip;
+using namespace ::chip::Inet;
+using namespace ::chip::DeviceLayer;
+
+volatile int apperror_cnt;
+static void main_task(void * pvParameters);
+
+// ================================================================================
+// App Error
+//=================================================================================
+void appError(int err)
+{
+    P6_LOG("!! App Critical Error: %d !!", err);
+    portDISABLE_INTERRUPTS();
+    while (1)
+        ;
+}
+
+void appError(CHIP_ERROR error)
+{
+    appError(static_cast<int>(error.AsInteger()));
+}
+
+// ================================================================================
+// FreeRTOS Callbacks
+// ================================================================================
+extern "C" void vApplicationIdleHook(void)
+{
+    // FreeRTOS Idle callback
+}
+
+extern "C" void vApplicationDaemonTaskStartupHook()
+{
+    // Init Chip memory management before the stack
+    chip::Platform::MemoryInit();
+
+    /* Create the Main task. */
+    xTaskCreate(main_task, "Main task", MAIN_TASK_STACK_SIZE, NULL, MAIN_TASK_PRIORITY, NULL);
+}
+
+static void main_task(void * pvParameters)
+{
+    CHIP_ERROR ret = chip::DeviceLayer::PersistedStorage::KeyValueStoreMgrImpl().Init();
+    if (ret != CHIP_NO_ERROR)
+    {
+        P6_LOG("PersistedStorage::KeyValueStoreMgrImpl().Init() failed");
+        appError(ret);
+    }
+
+    ret = PlatformMgr().InitChipStack();
+    if (ret != CHIP_NO_ERROR)
+    {
+        P6_LOG("PlatformMgr().InitChipStack() failed");
+        appError(ret);
+    }
+
+    ret = chip::DeviceLayer::ConnectivityMgr().SetBLEDeviceName("P6_OTA_REQ");
+    if (ret != CHIP_NO_ERROR)
+    {
+        P6_LOG("ConnectivityMgr().SetBLEDeviceName() failed");
+        appError(ret);
+    }
+
+    P6_LOG("Starting Platform Manager Event Loop");
+    ret = PlatformMgr().StartEventLoopTask();
+    if (ret != CHIP_NO_ERROR)
+    {
+        P6_LOG("PlatformMgr().StartEventLoopTask() failed");
+        appError(ret);
+    }
+    ret = GetAppTask().StartAppTask();
+    if (ret != CHIP_NO_ERROR)
+    {
+        P6_LOG("GetAppTask().Init() failed");
+        appError(ret);
+    }
+
+    /* Delete task */
+    vTaskDelete(NULL);
+}
+
+// ================================================================================
+// Main Code
+// ================================================================================
+int main(void)
+{
+    init_p6Platform();
+
+    // Clear watchdog timer (started by bootloader) so that it doesn't trigger a reset
+    cyhal_wdt_t wdt_obj;
+    cyhal_wdt_init(&wdt_obj, cyhal_wdt_get_max_timeout_ms());
+    cyhal_wdt_free(&wdt_obj);
+
+#ifdef HEAP_MONITORING
+    MemMonitoring::startHeapMonitoring();
+#endif
+
+    P6_LOG("==================================================\r\n");
+    P6_LOG("chip-p6-ota-requestor-example starting\r\n");
+    P6_LOG("==================================================\r\n");
+
+    /* Start the FreeRTOS scheduler */
+    vTaskStartScheduler();
+
+    chip::Platform::MemoryShutdown();
+    PlatformMgr().StopEventLoopTask();
+    PlatformMgr().Shutdown();
+
+    // Should never get here.
+    P6_LOG("vTaskStartScheduler() failed");
+}
diff --git a/examples/ota-requestor-app/p6/third_party/connectedhomeip b/examples/ota-requestor-app/p6/third_party/connectedhomeip
new file mode 120000
index 0000000..11a54ed
--- /dev/null
+++ b/examples/ota-requestor-app/p6/third_party/connectedhomeip
@@ -0,0 +1 @@
+../../../../
\ No newline at end of file
diff --git a/scripts/examples/gn_p6_example.sh b/scripts/examples/gn_p6_example.sh
index 29871cc..6d718f0 100755
--- a/scripts/examples/gn_p6_example.sh
+++ b/scripts/examples/gn_p6_example.sh
@@ -41,14 +41,36 @@
 
 # Build steps
 EXAMPLE_DIR=$1
+shift
 OUTPUT_DIR=out/example_app
 P6_BOARD=CY8CKIT-062S2-43012
 
-if [[ ! -z "$2" ]]; then
-    OUTPUT_DIR=$2
+if [[ ! -z "$1" ]]; then
+    OUTPUT_DIR=$1
+    shift
 fi
 
-gn gen --check --fail-on-unused-args "$OUTPUT_DIR" --root="$EXAMPLE_DIR" --args="p6_board=\"$P6_BOARD\""
-ninja -C "$OUTPUT_DIR"
+GN_ARGS=()
+NINJA_ARGS=()
+for arg; do
+    case $arg in
+        -v)
+            NINJA_ARGS+=(-v)
+            ;;
+        *=*)
+            GN_ARGS+=("$arg")
+            ;;
+        *import*)
+            GN_ARGS+=("$arg")
+            ;;
+        *)
+            echo >&2 "invalid argument: $arg"
+            exit 2
+            ;;
+    esac
+done
+
+gn gen --check --fail-on-unused-args "$OUTPUT_DIR" --root="$EXAMPLE_DIR" --args="p6_board=\"$P6_BOARD\" ${GN_ARGS[*]}"
+ninja -C "$OUTPUT_DIR" "${NINJA_ARGS[@]}"
 #print stats
 arm-none-eabi-size -A "$OUTPUT_DIR"/*.out
diff --git a/src/include/platform/ConfigurationManager.h b/src/include/platform/ConfigurationManager.h
index a06e07d..d78d04a 100644
--- a/src/include/platform/ConfigurationManager.h
+++ b/src/include/platform/ConfigurationManager.h
@@ -118,6 +118,7 @@
     virtual CHIP_ERROR StorePrimaryWiFiMACAddress(const uint8_t * buf)                 = 0;
     virtual CHIP_ERROR StorePrimary802154MACAddress(const uint8_t * buf)               = 0;
     virtual CHIP_ERROR StoreManufacturingDate(const char * mfgDate, size_t mfgDateLen) = 0;
+    virtual CHIP_ERROR StoreSoftwareVersion(uint32_t softwareVer)                      = 0;
     virtual CHIP_ERROR StoreHardwareVersion(uint16_t hardwareVer)                      = 0;
     virtual CHIP_ERROR StoreSetupPinCode(uint32_t setupPinCode)                        = 0;
     virtual CHIP_ERROR StoreSetupDiscriminator(uint16_t setupDiscriminator)            = 0;
diff --git a/src/include/platform/internal/GenericConfigurationManagerImpl.cpp b/src/include/platform/internal/GenericConfigurationManagerImpl.cpp
index d5ec5cd..54ed92f 100644
--- a/src/include/platform/internal/GenericConfigurationManagerImpl.cpp
+++ b/src/include/platform/internal/GenericConfigurationManagerImpl.cpp
@@ -95,6 +95,12 @@
 }
 
 template <class ConfigClass>
+inline CHIP_ERROR GenericConfigurationManagerImpl<ConfigClass>::StoreSoftwareVersion(uint32_t softwareVer)
+{
+    return CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE;
+}
+
+template <class ConfigClass>
 CHIP_ERROR GenericConfigurationManagerImpl<ConfigClass>::GetDeviceTypeId(uint16_t & deviceType)
 {
     deviceType = static_cast<uint16_t>(CHIP_DEVICE_CONFIG_DEVICE_TYPE);
diff --git a/src/include/platform/internal/GenericConfigurationManagerImpl.h b/src/include/platform/internal/GenericConfigurationManagerImpl.h
index 8313704..0fe14ef 100644
--- a/src/include/platform/internal/GenericConfigurationManagerImpl.h
+++ b/src/include/platform/internal/GenericConfigurationManagerImpl.h
@@ -63,6 +63,7 @@
     CHIP_ERROR StoreHardwareVersion(uint16_t hardwareVer) override;
     CHIP_ERROR GetSoftwareVersionString(char * buf, size_t bufSize) override;
     CHIP_ERROR GetSoftwareVersion(uint32_t & softwareVer) override;
+    CHIP_ERROR StoreSoftwareVersion(uint32_t softwareVer) override;
     CHIP_ERROR GetSerialNumber(char * buf, size_t bufSize) override;
     CHIP_ERROR StoreSerialNumber(const char * serialNum, size_t serialNumLen) override;
     CHIP_ERROR GetPrimaryMACAddress(MutableByteSpan buf) override;
diff --git a/src/platform/P6/BUILD.gn b/src/platform/P6/BUILD.gn
index ed08a0b..d7af750 100644
--- a/src/platform/P6/BUILD.gn
+++ b/src/platform/P6/BUILD.gn
@@ -1,10 +1,10 @@
-# Copyright (c) 2021 Project CHIP Authors
+# Copyright(c) 2022 Project CHIP Authors
 #
-# Licensed under the Apache License, Version 2.0 (the "License");
+# Licensed under the Apache License, Version 2.0(the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+# http:// www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
@@ -16,7 +16,6 @@
 import("//build_overrides/pigweed.gni")
 
 import("${chip_root}/src/platform/device.gni")
-
 assert(chip_device_platform == "p6")
 
 if (chip_enable_openthread) {
@@ -50,6 +49,8 @@
     "MTBKeyValueStore.h",
     "NetworkCommissioningDriver.h",
     "NetworkCommissioningWiFiDriver.cpp",
+    "OTAImageProcessorImpl.cpp",
+    "OTAImageProcessorImpl.h",
     "P6Config.cpp",
     "P6Config.h",
     "P6Utils.cpp",
@@ -67,7 +68,11 @@
     "cycfg_gatt_db.c",
     "cycfg_gatt_db.h",
   ]
-  deps = [ "${chip_root}/src/lib/dnssd:platform_header" ]
+
+  deps = [
+    "${chip_root}/src/lib/dnssd:platform_header",
+    "${chip_root}/src/setup_payload",
+  ]
 
   public_deps = [
     "${chip_root}/src/crypto",
diff --git a/src/platform/P6/ConfigurationManagerImpl.cpp b/src/platform/P6/ConfigurationManagerImpl.cpp
index ef408fe..f078d0b 100644
--- a/src/platform/P6/ConfigurationManagerImpl.cpp
+++ b/src/platform/P6/ConfigurationManagerImpl.cpp
@@ -48,6 +48,13 @@
     bool failSafeArmed;
     uint32_t rebootCount;
 
+    // Save out software version on first boot
+    if (!P6Config::ConfigValueExists(P6Config::kConfigKey_SoftwareVersion))
+    {
+        err = StoreSoftwareVersion(CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION);
+        SuccessOrExit(err);
+    }
+
     if (P6Config::ConfigValueExists(P6Config::kCounterKey_RebootCount))
     {
         err = GetRebootCount(rebootCount);
@@ -94,6 +101,16 @@
     return WriteConfigValue(P6Config::kCounterKey_RebootCount, rebootCount);
 }
 
+CHIP_ERROR ConfigurationManagerImpl::GetSoftwareVersion(uint32_t & softwareVer)
+{
+    return ReadConfigValue(P6Config::kConfigKey_SoftwareVersion, softwareVer);
+}
+
+CHIP_ERROR ConfigurationManagerImpl::StoreSoftwareVersion(uint32_t softwareVer)
+{
+    return WriteConfigValue(P6Config::kConfigKey_SoftwareVersion, softwareVer);
+}
+
 CHIP_ERROR ConfigurationManagerImpl::GetTotalOperationalHours(uint32_t & totalOperationalHours)
 {
     return ReadConfigValue(P6Config::kCounterKey_TotalOperationalHours, totalOperationalHours);
diff --git a/src/platform/P6/ConfigurationManagerImpl.h b/src/platform/P6/ConfigurationManagerImpl.h
index 8da0df2..a9fd74f 100644
--- a/src/platform/P6/ConfigurationManagerImpl.h
+++ b/src/platform/P6/ConfigurationManagerImpl.h
@@ -40,6 +40,8 @@
 public:
     CHIP_ERROR GetRebootCount(uint32_t & rebootCount) override;
     CHIP_ERROR StoreRebootCount(uint32_t rebootCount) override;
+    CHIP_ERROR GetSoftwareVersion(uint32_t & softwareVer) override;
+    CHIP_ERROR StoreSoftwareVersion(uint32_t softwareVer);
     CHIP_ERROR GetTotalOperationalHours(uint32_t & totalOperationalHours) override;
     CHIP_ERROR StoreTotalOperationalHours(uint32_t totalOperationalHours) override;
     // This returns an instance of this class.
diff --git a/src/platform/P6/MTBKeyValueStore.cpp b/src/platform/P6/MTBKeyValueStore.cpp
index 839be54..fe05f60 100644
--- a/src/platform/P6/MTBKeyValueStore.cpp
+++ b/src/platform/P6/MTBKeyValueStore.cpp
@@ -46,9 +46,15 @@
     {
         return result;
     }
-    sectorSize          = cy_serial_flash_qspi_get_erase_size(ext_mem_address);
-    uint32_t length     = sectorSize * 2;
+    sectorSize      = cy_serial_flash_qspi_get_erase_size(ext_mem_address);
+    uint32_t length = sectorSize * 2;
+#ifdef P6_OTA
+    // If using OTA set the start address towards the end of the flash area so
+    // an update doesn't clobber the persistent storage.
+    uint32_t start_addr = 0x3000000U;
+#else
     uint32_t start_addr = 0;
+#endif
 
     block_device.read         = bd_read;
     block_device.program      = bd_program;
diff --git a/src/platform/P6/OTAImageProcessorImpl.cpp b/src/platform/P6/OTAImageProcessorImpl.cpp
new file mode 100644
index 0000000..e7625e5
--- /dev/null
+++ b/src/platform/P6/OTAImageProcessorImpl.cpp
@@ -0,0 +1,213 @@
+/*
+ *
+ *    Copyright (c) 2022 Project CHIP Authors
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#include <app/clusters/ota-requestor/OTADownloader.h>
+#include <platform/OTARequestorInterface.h>
+
+#include "OTAImageProcessorImpl.h"
+
+namespace chip {
+
+#ifdef P6_OTA
+CHIP_ERROR OTAImageProcessorImpl::PrepareDownload()
+{
+    DeviceLayer::PlatformMgr().ScheduleWork(HandlePrepareDownload, reinterpret_cast<intptr_t>(this));
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::Finalize()
+{
+    DeviceLayer::PlatformMgr().ScheduleWork(HandleFinalize, reinterpret_cast<intptr_t>(this));
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::Apply()
+{
+    DeviceLayer::PlatformMgr().ScheduleWork(HandleApply, reinterpret_cast<intptr_t>(this));
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::Abort()
+{
+    DeviceLayer::PlatformMgr().ScheduleWork(HandleAbort, reinterpret_cast<intptr_t>(this));
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::ProcessBlock(ByteSpan & block)
+{
+    if ((block.data() == nullptr) || block.empty())
+    {
+        return CHIP_ERROR_INVALID_ARGUMENT;
+    }
+
+    // Store block data for HandleProcessBlock to access
+    CHIP_ERROR err = SetBlock(block);
+    if (err != CHIP_NO_ERROR)
+    {
+        ChipLogError(SoftwareUpdate, "Cannot set block data: %" CHIP_ERROR_FORMAT, err.Format());
+    }
+
+    DeviceLayer::PlatformMgr().ScheduleWork(HandleProcessBlock, reinterpret_cast<intptr_t>(this));
+    return CHIP_NO_ERROR;
+}
+
+void OTAImageProcessorImpl::HandlePrepareDownload(intptr_t context)
+{
+    auto * imageProcessor = reinterpret_cast<OTAImageProcessorImpl *>(context);
+    if (imageProcessor == nullptr)
+    {
+        ChipLogError(SoftwareUpdate, "ImageProcessor context is null");
+        return;
+    }
+    else if (imageProcessor->mDownloader == nullptr)
+    {
+        ChipLogError(SoftwareUpdate, "mDownloader is null");
+        return;
+    }
+
+    // Open and erase secondary flash area to prepare
+    if (flash_area_open(FLASH_AREA_IMAGE_SECONDARY(0), &(imageProcessor->mFlashArea)) != 0)
+    {
+        imageProcessor->mDownloader->OnPreparedForDownload(CHIP_ERROR_OPEN_FAILED);
+        return;
+    }
+    // Note: This only erases up to the secondary slot size (which fa_size is
+    // set to). It will not erase the persistent storage as that only uses
+    // a small region towards the end of flash.
+    if (flash_area_erase(imageProcessor->mFlashArea, 0, imageProcessor->mFlashArea->fa_size) != 0)
+    {
+        imageProcessor->mDownloader->OnPreparedForDownload(CHIP_ERROR_OPEN_FAILED);
+        return;
+    }
+
+    imageProcessor->mDownloader->OnPreparedForDownload(CHIP_NO_ERROR);
+}
+
+void OTAImageProcessorImpl::HandleFinalize(intptr_t context)
+{
+    auto * imageProcessor = reinterpret_cast<OTAImageProcessorImpl *>(context);
+    if (imageProcessor == nullptr)
+    {
+        return;
+    }
+
+    flash_area_close(imageProcessor->mFlashArea);
+    ChipLogProgress(SoftwareUpdate, "Setting boot pending");
+    int ret = boot_set_pending(0, 1);
+
+    if (ret != 0)
+    {
+        ChipLogError(SoftwareUpdate, "Failed to set boot pending");
+        return;
+    }
+
+    imageProcessor->ReleaseBlock();
+}
+
+void OTAImageProcessorImpl::HandleAbort(intptr_t context)
+{
+    auto * imageProcessor = reinterpret_cast<OTAImageProcessorImpl *>(context);
+    if (imageProcessor == nullptr)
+    {
+        return;
+    }
+
+    flash_area_erase(imageProcessor->mFlashArea, 0, imageProcessor->mFlashArea->fa_size);
+
+    imageProcessor->ReleaseBlock();
+}
+
+void OTAImageProcessorImpl::HandleProcessBlock(intptr_t context)
+{
+    auto * imageProcessor = reinterpret_cast<OTAImageProcessorImpl *>(context);
+    if (imageProcessor == nullptr)
+    {
+        ChipLogError(SoftwareUpdate, "ImageProcessor context is null");
+        return;
+    }
+    else if (imageProcessor->mDownloader == nullptr)
+    {
+        ChipLogError(SoftwareUpdate, "mDownloader is null");
+        return;
+    }
+
+    int rc = flash_area_write(imageProcessor->mFlashArea, imageProcessor->mParams.downloadedBytes, imageProcessor->mBlock.data(),
+                              imageProcessor->mBlock.size());
+    if (rc != 0)
+    {
+        imageProcessor->mDownloader->EndDownload(CHIP_ERROR_WRITE_FAILED);
+        return;
+    }
+
+    imageProcessor->mParams.downloadedBytes += imageProcessor->mBlock.size();
+    imageProcessor->mDownloader->FetchNextData();
+}
+
+void OTAImageProcessorImpl::HandleApply(intptr_t context)
+{
+    ChipLogProgress(SoftwareUpdate, "Rebooting after 2 seconds...");
+
+    cy_rtos_delay_milliseconds(2000);
+
+    NVIC_SystemReset();
+
+    return;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::SetBlock(ByteSpan & block)
+{
+    if (!IsSpanUsable(block))
+    {
+        ReleaseBlock();
+        return CHIP_NO_ERROR;
+    }
+    if (mBlock.size() < block.size())
+    {
+        if (!mBlock.empty())
+        {
+            ReleaseBlock();
+        }
+        uint8_t * mBlock_ptr = static_cast<uint8_t *>(chip::Platform::MemoryAlloc(block.size()));
+        if (mBlock_ptr == nullptr)
+        {
+            return CHIP_ERROR_NO_MEMORY;
+        }
+        mBlock = MutableByteSpan(mBlock_ptr, block.size());
+    }
+    CHIP_ERROR err = CopySpanToMutableSpan(block, mBlock);
+    if (err != CHIP_NO_ERROR)
+    {
+        ChipLogError(SoftwareUpdate, "Cannot copy block data: %" CHIP_ERROR_FORMAT, err.Format());
+        return err;
+    }
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR OTAImageProcessorImpl::ReleaseBlock()
+{
+    if (mBlock.data() != nullptr)
+    {
+        chip::Platform::MemoryFree(mBlock.data());
+    }
+
+    mBlock = MutableByteSpan();
+    return CHIP_NO_ERROR;
+}
+#endif // P6_OTA
+
+} // namespace chip
diff --git a/src/platform/P6/OTAImageProcessorImpl.h b/src/platform/P6/OTAImageProcessorImpl.h
new file mode 100644
index 0000000..89a2e7c
--- /dev/null
+++ b/src/platform/P6/OTAImageProcessorImpl.h
@@ -0,0 +1,74 @@
+/*
+ *
+ *    Copyright (c) 2021 Project CHIP Authors
+ *    All rights reserved.
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+
+#pragma once
+
+#include <app/clusters/ota-requestor/OTADownloader.h>
+#include <platform/CHIPDeviceLayer.h>
+#include <platform/OTAImageProcessor.h>
+
+#include <fstream>
+
+#ifdef P6_OTA
+extern "C" {
+#include "bootutil/bootutil.h"
+#include "cy_flash_psoc6.h"
+#include "cy_smif_psoc6.h"
+#include "sysflash/sysflash.h"
+}
+
+namespace chip {
+
+class OTAImageProcessorImpl : public OTAImageProcessorInterface
+{
+public:
+    //////////// OTAImageProcessorInterface Implementation ///////////////
+    CHIP_ERROR PrepareDownload() override;
+    CHIP_ERROR Finalize() override;
+    CHIP_ERROR Apply() override;
+    CHIP_ERROR Abort() override;
+    CHIP_ERROR ProcessBlock(ByteSpan & block) override;
+
+    void SetOTADownloader(OTADownloader * downloader) { mDownloader = downloader; }
+
+private:
+    //////////// Actual handlers for the OTAImageProcessorInterface ///////////////
+    static void HandlePrepareDownload(intptr_t context);
+    static void HandleFinalize(intptr_t context);
+    static void HandleAbort(intptr_t context);
+    static void HandleProcessBlock(intptr_t context);
+    static void HandleApply(intptr_t context);
+
+    /**
+     * Called to allocate memory for mBlock if necessary and set it to block
+     */
+    CHIP_ERROR SetBlock(ByteSpan & block);
+
+    /**
+     * Called to release allocated memory for mBlock
+     */
+    CHIP_ERROR ReleaseBlock();
+
+    MutableByteSpan mBlock;
+    OTADownloader * mDownloader;
+
+    const struct flash_area * mFlashArea;
+};
+
+} // namespace chip
+#endif
diff --git a/src/platform/P6/P6Config.cpp b/src/platform/P6/P6Config.cpp
index 857e0db..f6a5dbb 100644
--- a/src/platform/P6/P6Config.cpp
+++ b/src/platform/P6/P6Config.cpp
@@ -53,6 +53,7 @@
 const P6Config::Key P6Config::kConfigKey_MfrDeviceCert         = { kConfigNamespace_ChipFactory, "device-cert" };
 const P6Config::Key P6Config::kConfigKey_MfrDeviceICACerts     = { kConfigNamespace_ChipFactory, "device-ca-certs" };
 const P6Config::Key P6Config::kConfigKey_MfrDevicePrivateKey   = { kConfigNamespace_ChipFactory, "device-key" };
+const P6Config::Key P6Config::kConfigKey_SoftwareVersion       = { kConfigNamespace_ChipFactory, "software-ver" };
 const P6Config::Key P6Config::kConfigKey_HardwareVersion       = { kConfigNamespace_ChipFactory, "hardware-ver" };
 const P6Config::Key P6Config::kConfigKey_ManufacturingDate     = { kConfigNamespace_ChipFactory, "mfg-date" };
 const P6Config::Key P6Config::kConfigKey_SetupPinCode          = { kConfigNamespace_ChipFactory, "pin-code" };
@@ -218,10 +219,11 @@
 CHIP_ERROR P6Config::FactoryResetConfig(void)
 {
     CHIP_ERROR err            = CHIP_NO_ERROR;
-    const Key * config_keys[] = { &kConfigKey_FabricId,      &kConfigKey_ServiceConfig,      &kConfigKey_PairedAccountId,
-                                  &kConfigKey_ServiceId,     &kConfigKey_GroupKeyIndex,      &kConfigKey_LastUsedEpochKeyId,
-                                  &kConfigKey_FailSafeArmed, &kConfigKey_WiFiStationSecType, &kConfigKey_WiFiSSID,
-                                  &kConfigKey_WiFiPassword,  &kConfigKey_WiFiSecurity,       &kConfigKey_WiFiMode };
+    const Key * config_keys[] = { &kConfigKey_FabricId,       &kConfigKey_ServiceConfig,      &kConfigKey_PairedAccountId,
+                                  &kConfigKey_ServiceId,      &kConfigKey_GroupKeyIndex,      &kConfigKey_LastUsedEpochKeyId,
+                                  &kConfigKey_FailSafeArmed,  &kConfigKey_WiFiStationSecType, &kConfigKey_WiFiSSID,
+                                  &kConfigKey_WiFiPassword,   &kConfigKey_WiFiSecurity,       &kConfigKey_WiFiMode,
+                                  &kConfigKey_SoftwareVersion };
 
     for (uint32_t i = 0; i < (sizeof(config_keys) / sizeof(config_keys[0])); i++)
     {
diff --git a/src/platform/P6/P6Config.h b/src/platform/P6/P6Config.h
index b576b47..ae44ced 100644
--- a/src/platform/P6/P6Config.h
+++ b/src/platform/P6/P6Config.h
@@ -60,6 +60,7 @@
     static const Key kConfigKey_MfrDeviceCert;
     static const Key kConfigKey_MfrDeviceICACerts;
     static const Key kConfigKey_MfrDevicePrivateKey;
+    static const Key kConfigKey_SoftwareVersion;
     static const Key kConfigKey_HardwareVersion;
     static const Key kConfigKey_ManufacturingDate;
     static const Key kConfigKey_SetupPinCode;
diff --git a/src/platform/P6/args.gni b/src/platform/P6/args.gni
index e16170a..b34b567 100644
--- a/src/platform/P6/args.gni
+++ b/src/platform/P6/args.gni
@@ -1,10 +1,10 @@
-# Copyright (c) 2021 Project CHIP Authors
+# Copyright(c) 2022 Project CHIP Authors
 #
-# Licensed under the Apache License, Version 2.0 (the "License");
+# Licensed under the Apache License, Version 2.0(the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-# http://www.apache.org/licenses/LICENSE-2.0
+# http: // www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
@@ -17,7 +17,7 @@
 
 import("${chip_root}/examples/platform/p6/args.gni")
 
-# ARM architecture flags will be set based on p6_family.
+#ARM architecture flags will be set based on p6_family.
 arm_platform_config = "${p6_sdk_build_root}/p6_arm.gni"
 
 mbedtls_target = "${p6_sdk_build_root}:p6_build"
diff --git a/src/platform/fake/ConfigurationManagerImpl.h b/src/platform/fake/ConfigurationManagerImpl.h
index fef8584..331c244 100644
--- a/src/platform/fake/ConfigurationManagerImpl.h
+++ b/src/platform/fake/ConfigurationManagerImpl.h
@@ -44,6 +44,7 @@
     CHIP_ERROR StoreHardwareVersion(uint16_t hardwareVer) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
     CHIP_ERROR GetSoftwareVersionString(char * buf, size_t bufSize) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
     CHIP_ERROR GetSoftwareVersion(uint32_t & softwareVer) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
+    CHIP_ERROR StoreSoftwareVersion(uint32_t softwareVer) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
     CHIP_ERROR GetSerialNumber(char * buf, size_t bufSize) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
     CHIP_ERROR StoreSerialNumber(const char * serialNum, size_t serialNumLen) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
     CHIP_ERROR GetPrimaryMACAddress(MutableByteSpan buf) override { return CHIP_ERROR_NOT_IMPLEMENTED; }
diff --git a/third_party/p6/BUILD.gn b/third_party/p6/BUILD.gn
index 6e19423..a4c3b8a 100644
--- a/third_party/p6/BUILD.gn
+++ b/third_party/p6/BUILD.gn
@@ -24,6 +24,9 @@
 
 # Add includes, cflags, asmflags, etc in config
 config("p6_sdk_config") {
+  # This is ugly but I'm unsure of any other way to forward (non-global) vars from the ota examples BUILD.gn file to this config object
+  ota_app = p6_target_project == "//:ota_requestor_app_sdk_sources"
+
   # Pull out includes from generated json
   # Treat these includes as system includes, so warnings in them are not fatal.
   _include_dirs = []
@@ -62,11 +65,14 @@
   ldflags = filter_exclude(mtb_json.ldflags, [ "-T*" ])
 
   # Pull out linker flags with paths (-T flags) and make paths absolute
-  linker_script_flags = filter_include(mtb_json.ldflags, [ "-T*" ])
-  foreach(flag, linker_script_flags) {
-    ldflags += [ "-T/" + rebase_path(string_replace(flag, "-T", "", 1),
-                                     "/",
-                                     "${p6_sdk_build_root}/p6_sdk/") ]
+  # OTA app provides it's own linker script
+  if (!ota_app) {
+    linker_script_flags = filter_include(mtb_json.ldflags, [ "-T*" ])
+    foreach(flag, linker_script_flags) {
+      ldflags += [ "-T/" + rebase_path(string_replace(flag, "-T", "", 1),
+                                       "/",
+                                       "${p6_sdk_build_root}/p6_sdk/") ]
+    }
   }
 
   # --specs=nano.specs is getting added twice and causing compile issues so remove from cxx flags here.
diff --git a/third_party/p6/p6_sdk.gni b/third_party/p6/p6_sdk.gni
index e376fe6..2f8b8dc 100644
--- a/third_party/p6/p6_sdk.gni
+++ b/third_party/p6/p6_sdk.gni
@@ -66,22 +66,33 @@
       sources += invoker.sources
     }
 
+    # This is ugly. See note in BUILD.gn for reasoning
+    mtb_json_local = mtb_json  # Can't modify without copying into current scope
+    if (target_name == "ota_requestor_app_sdk_sources") {
+      mtb_json_local.c_source -= [
+        "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_01_cm0p_sleep.c",
+        "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_02_cm0p_sleep.c",
+        "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_03_cm0p_sleep.c",
+        "./libs/psoc6cm0p/COMPONENT_CM0P_SLEEP/psoc6_04_cm0p_sleep.c",
+      ]
+    }
+
     # Pull out c sources from generated json
-    foreach(src, mtb_json.c_source) {
+    foreach(src, mtb_json_local.c_source) {
       sources += [ rebase_path(src,
                                "${p6_project_dir}",
                                "${p6_sdk_build_root}/p6_sdk/") ]
     }
 
     # Pull out cpp sources from generated json
-    foreach(src, mtb_json.cxx_source) {
+    foreach(src, mtb_json_local.cxx_source) {
       sources += [ rebase_path(src,
                                "${p6_project_dir}",
                                "${p6_sdk_build_root}/p6_sdk/") ]
     }
 
     # Pull out .S files from generated json
-    foreach(asm, mtb_json.asm_source) {
+    foreach(asm, mtb_json_local.asm_source) {
       sources += [ rebase_path(asm,
                                "${p6_project_dir}",
                                "${p6_sdk_build_root}/p6_sdk/") ]
diff --git a/third_party/p6/p6_sdk/libs/anycloud-ota b/third_party/p6/p6_sdk/libs/anycloud-ota
new file mode 160000
index 0000000..040f563
--- /dev/null
+++ b/third_party/p6/p6_sdk/libs/anycloud-ota
@@ -0,0 +1 @@
+Subproject commit 040f563c5fa34bf64a4ab487b7af35c6e6e9d7c5