diff --git a/Software/.gitignore b/Software/.gitignore
index 7f1045d..d321a78 100644
--- a/Software/.gitignore
+++ b/Software/.gitignore
@@ -15,3 +15,9 @@ docs/api/
.vscode/
.idea/
.DS_Store
+__pycache__/
+*.pyc
+
+# Proprietary Si4684 firmware blobs (Skyworks / uGreen — local only, not in git)
+Firmware/Si4684-Firmware/*.bin
+Firmware/Si4684-Firmware/.ugreen-extract-*/
diff --git a/Software/CMakeLists.txt b/Software/CMakeLists.txt
index 529794c..ec1a1a4 100644
--- a/Software/CMakeLists.txt
+++ b/Software/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
-# Nested driver components live under components/drivers/
-set(EXTRA_COMPONENT_DIRS "components/drivers")
+# Nested driver/service components live under components/
+set(EXTRA_COMPONENT_DIRS "components/drivers" "components/services")
project(digiradio)
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio.hex b/Software/Firmware/ADAU1701-Firmware/DigiRadio.hex
new file mode 100644
index 0000000..fe22d45
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio.hex
@@ -0,0 +1,1025 @@
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x7F , 0xC3 , 0x65 ,
+0x0F , 0x00 , 0x79 , 0x35 ,
+0x00 , 0x7F , 0xC3 , 0x65 ,
+0x00 , 0xFF , 0x86 , 0xAE ,
+0x0F , 0x80 , 0x79 , 0x19 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x0F , 0xFE , 0x2B , 0xE3 ,
+0x00 , 0x22 , 0xBE , 0x2C ,
+0x0F , 0xEA , 0xAA , 0xAB ,
+0x00 , 0x6A , 0xAA , 0xAB ,
+0x0F , 0x9A , 0x69 , 0xA7 ,
+0x00 , 0xFD , 0xF7 , 0xDF ,
+0x08 , 0x3C , 0x6C , 0x20 ,
+0x03 , 0xF5 , 0xAA , 0x23 ,
+0x01 , 0x80 , 0x00 , 0x00 ,
+0x01 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x33 , 0x33 , 0x33 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x07 , 0xDC ,
+0x00 , 0x00 , 0x08 , 0x00 ,
+0x00 , 0x7F , 0xF0 , 0x00 ,
+0x0F , 0xFE , 0x2B , 0xE3 ,
+0x00 , 0x22 , 0xBE , 0x2C ,
+0x0F , 0xEA , 0xAA , 0xAB ,
+0x00 , 0x6A , 0xAA , 0xAB ,
+0x0F , 0x9A , 0x69 , 0xA7 ,
+0x00 , 0xFD , 0xF7 , 0xDF ,
+0x08 , 0x3C , 0x6C , 0x20 ,
+0x03 , 0xF5 , 0xAA , 0x23 ,
+0x01 , 0x80 , 0x00 , 0x00 ,
+0x01 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x33 , 0x33 , 0x33 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x07 , 0xDC ,
+0x00 , 0x00 , 0x08 , 0x00 ,
+0x00 , 0x7F , 0xF0 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio.params b/Software/Firmware/ADAU1701-Firmware/DigiRadio.params
new file mode 100644
index 0000000..ea5382b
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio.params
@@ -0,0 +1,2935 @@
+Cell Name = Si4674
+Parameter Name = Gain1940AlgNS1
+Parameter Address = 0
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Si4674
+Parameter Name = Gain1940AlgNS2
+Parameter Address = 1
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = ESP32
+Parameter Name = Gain1940AlgNS3
+Parameter Address = 2
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = ESP32
+Parameter Name = Gain1940AlgNS4
+Parameter Address = 3
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = St Mixer1
+Parameter Name = StereoMixerAlg12
+Parameter Address = 4
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = St Mixer1
+Parameter Name = StereoMixerAlg14
+Parameter Address = 5
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B1
+Parameter Address = 6
+Parameter Value = 0.99815046787262
+Parameter Data :
+0x00 , 0x7F , 0xC3 , 0x65 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B1
+Parameter Address = 7
+Parameter Value = -1.99630105495453
+Parameter Data :
+0x0F , 0x00 , 0x79 , 0x35 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B1
+Parameter Address = 8
+Parameter Value = 0.99815046787262
+Parameter Data :
+0x00 , 0x7F , 0xC3 , 0x65 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A1
+Parameter Address = 9
+Parameter Value = 1.99629759788513
+Parameter Data :
+0x00 , 0xFF , 0x86 , 0xAE ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A1
+Parameter Address = 10
+Parameter Value = -0.996304392814636
+Parameter Data :
+0x0F , 0x80 , 0x79 , 0x19 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B2
+Parameter Address = 11
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B2
+Parameter Address = 12
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B2
+Parameter Address = 13
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A2
+Parameter Address = 14
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A2
+Parameter Address = 15
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B3
+Parameter Address = 16
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B3
+Parameter Address = 17
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B3
+Parameter Address = 18
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A3
+Parameter Address = 19
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A3
+Parameter Address = 20
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B4
+Parameter Address = 21
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B4
+Parameter Address = 22
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B4
+Parameter Address = 23
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A4
+Parameter Address = 24
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A4
+Parameter Address = 25
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B5
+Parameter Address = 26
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B5
+Parameter Address = 27
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B5
+Parameter Address = 28
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A5
+Parameter Address = 29
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A5
+Parameter Address = 30
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B6
+Parameter Address = 31
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B6
+Parameter Address = 32
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B6
+Parameter Address = 33
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A6
+Parameter Address = 34
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A6
+Parameter Address = 35
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B1
+Parameter Address = 6
+Parameter Value = 0.99815046787262
+Parameter Data :
+0x00 , 0x7F , 0xC3 , 0x65 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B1
+Parameter Address = 7
+Parameter Value = -1.99630105495453
+Parameter Data :
+0x0F , 0x00 , 0x79 , 0x35 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B1
+Parameter Address = 8
+Parameter Value = 0.99815046787262
+Parameter Data :
+0x00 , 0x7F , 0xC3 , 0x65 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A1
+Parameter Address = 9
+Parameter Value = 1.99629759788513
+Parameter Data :
+0x00 , 0xFF , 0x86 , 0xAE ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A1
+Parameter Address = 10
+Parameter Value = -0.996304392814636
+Parameter Data :
+0x0F , 0x80 , 0x79 , 0x19 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B2
+Parameter Address = 11
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B2
+Parameter Address = 12
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B2
+Parameter Address = 13
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A2
+Parameter Address = 14
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A2
+Parameter Address = 15
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B3
+Parameter Address = 16
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B3
+Parameter Address = 17
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B3
+Parameter Address = 18
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A3
+Parameter Address = 19
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A3
+Parameter Address = 20
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B4
+Parameter Address = 21
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B4
+Parameter Address = 22
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B4
+Parameter Address = 23
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A4
+Parameter Address = 24
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A4
+Parameter Address = 25
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B5
+Parameter Address = 26
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B5
+Parameter Address = 27
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B5
+Parameter Address = 28
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A5
+Parameter Address = 29
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A5
+Parameter Address = 30
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan10B6
+Parameter Address = 31
+Parameter Value = 1
+Parameter Data :
+0x00 , 0x80 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11B6
+Parameter Address = 32
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12B6
+Parameter Address = 33
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan11A6
+Parameter Address = 34
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Param EQ1
+Parameter Name = PEQ1Chan12A6
+Parameter Address = 35
+Parameter Value = 0
+Parameter Data :
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+
+
+Cell Name = Multiple 1
+Parameter Name = Gain1940AlgNS5
+Parameter Address = 36
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Multiple 1
+Parameter Name = Gain1940AlgNS6
+Parameter Address = 37
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1slope_1
+Parameter Address = 38
+Parameter Value = -0.014285683631897
+Parameter Data :
+0x0F, 0xFE, 0x2B, 0xE3,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1inter_1
+Parameter Address = 39
+Parameter Value = 0.27142858505249
+Parameter Data :
+0x00, 0x22, 0xBE, 0x2C,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1slope_2
+Parameter Address = 40
+Parameter Value = -0.166666626930237
+Parameter Data :
+0x0F, 0xEA, 0xAA, 0xAB,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1inter_2
+Parameter Address = 41
+Parameter Value = 0.833333373069763
+Parameter Data :
+0x00, 0x6A, 0xAA, 0xAB,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1slope_3
+Parameter Address = 42
+Parameter Value = -0.79365074634552
+Parameter Data :
+0x0F, 0x9A, 0x69, 0xA7,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1inter_3
+Parameter Address = 43
+Parameter Value = 1.98412692546844
+Parameter Data :
+0x00, 0xFD, 0xF7, 0xDF,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1slope_4
+Parameter Address = 44
+Parameter Value = -15.5279502868652
+Parameter Data :
+0x08, 0x3C, 0x6C, 0x20,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1inter_4
+Parameter Address = 45
+Parameter Value = 7.91925466060638
+Parameter Data :
+0x03, 0xF5, 0xAA, 0x23,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1comp1
+Parameter Address = 46
+Parameter Value = 3
+Parameter Data :
+0x01, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1comp2
+Parameter Address = 47
+Parameter Value = 2
+Parameter Data :
+0x01, 0x00, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1comp3
+Parameter Address = 48
+Parameter Value = 0.399999976158142
+Parameter Data :
+0x00, 0x33, 0x33, 0x33,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1RMS_MONO_TCONST
+Parameter Address = 50
+Parameter Value = 0.000239849090576172
+Parameter Data :
+0x00, 0x00, 0x07, 0xDC,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1threshold
+Parameter Address = 49
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1decay
+Parameter Address = 51
+Parameter Value = 0.000244140625
+Parameter Data :
+0x00, 0x00, 0x08, 0x00,
+
+
+
+Cell Name = Limiter 1
+Parameter Name = limiterAlg1decaycomplement
+Parameter Address = 52
+Parameter Value = 0.99951171875
+Parameter Data :
+0x00, 0x7F, 0xF0, 0x00,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2slope_1
+Parameter Address = 53
+Parameter Value = -0.014285683631897
+Parameter Data :
+0x0F, 0xFE, 0x2B, 0xE3,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2inter_1
+Parameter Address = 54
+Parameter Value = 0.27142858505249
+Parameter Data :
+0x00, 0x22, 0xBE, 0x2C,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2slope_2
+Parameter Address = 55
+Parameter Value = -0.166666626930237
+Parameter Data :
+0x0F, 0xEA, 0xAA, 0xAB,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2inter_2
+Parameter Address = 56
+Parameter Value = 0.833333373069763
+Parameter Data :
+0x00, 0x6A, 0xAA, 0xAB,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2slope_3
+Parameter Address = 57
+Parameter Value = -0.79365074634552
+Parameter Data :
+0x0F, 0x9A, 0x69, 0xA7,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2inter_3
+Parameter Address = 58
+Parameter Value = 1.98412692546844
+Parameter Data :
+0x00, 0xFD, 0xF7, 0xDF,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2slope_4
+Parameter Address = 59
+Parameter Value = -15.5279502868652
+Parameter Data :
+0x08, 0x3C, 0x6C, 0x20,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2inter_4
+Parameter Address = 60
+Parameter Value = 7.91925466060638
+Parameter Data :
+0x03, 0xF5, 0xAA, 0x23,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2comp1
+Parameter Address = 61
+Parameter Value = 3
+Parameter Data :
+0x01, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2comp2
+Parameter Address = 62
+Parameter Value = 2
+Parameter Data :
+0x01, 0x00, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2comp3
+Parameter Address = 63
+Parameter Value = 0.399999976158142
+Parameter Data :
+0x00, 0x33, 0x33, 0x33,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2RMS_MONO_TCONST
+Parameter Address = 65
+Parameter Value = 0.000239849090576172
+Parameter Data :
+0x00, 0x00, 0x07, 0xDC,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2threshold
+Parameter Address = 64
+Parameter Value = 1
+Parameter Data :
+0x00, 0x80, 0x00, 0x00,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2decay
+Parameter Address = 66
+Parameter Value = 0.000244140625
+Parameter Data :
+0x00, 0x00, 0x08, 0x00,
+
+
+
+Cell Name = Limiter 2
+Parameter Name = limiterAlg2decaycomplement
+Parameter Address = 67
+Parameter Value = 0.99951171875
+Parameter Data :
+0x00, 0x7F, 0xF0, 0x00,
+
+
+
+Parameter data for: IC 1 (Hexadecimal format starting at parameter address 0)
+See also DigiRadio.hex file
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x7F , 0xC3 , 0x65 ,
+0x0F , 0x00 , 0x79 , 0x35 ,
+0x00 , 0x7F , 0xC3 , 0x65 ,
+0x00 , 0xFF , 0x86 , 0xAE ,
+0x0F , 0x80 , 0x79 , 0x19 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x0F , 0xFE , 0x2B , 0xE3 ,
+0x00 , 0x22 , 0xBE , 0x2C ,
+0x0F , 0xEA , 0xAA , 0xAB ,
+0x00 , 0x6A , 0xAA , 0xAB ,
+0x0F , 0x9A , 0x69 , 0xA7 ,
+0x00 , 0xFD , 0xF7 , 0xDF ,
+0x08 , 0x3C , 0x6C , 0x20 ,
+0x03 , 0xF5 , 0xAA , 0x23 ,
+0x01 , 0x80 , 0x00 , 0x00 ,
+0x01 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x33 , 0x33 , 0x33 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x07 , 0xDC ,
+0x00 , 0x00 , 0x08 , 0x00 ,
+0x00 , 0x7F , 0xF0 , 0x00 ,
+0x0F , 0xFE , 0x2B , 0xE3 ,
+0x00 , 0x22 , 0xBE , 0x2C ,
+0x0F , 0xEA , 0xAA , 0xAB ,
+0x00 , 0x6A , 0xAA , 0xAB ,
+0x0F , 0x9A , 0x69 , 0xA7 ,
+0x00 , 0xFD , 0xF7 , 0xDF ,
+0x08 , 0x3C , 0x6C , 0x20 ,
+0x03 , 0xF5 , 0xAA , 0x23 ,
+0x01 , 0x80 , 0x00 , 0x00 ,
+0x01 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x33 , 0x33 , 0x33 ,
+0x00 , 0x80 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x07 , 0xDC ,
+0x00 , 0x00 , 0x08 , 0x00 ,
+0x00 , 0x7F , 0xF0 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+0x00 , 0x00 , 0x00 , 0x00 ,
+
+Parameter data for: IC 1 (Binary format starting at parameter address 0)
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 01111111 11000011 01100101
+00001111 00000000 01111001 00110101
+00000000 01111111 11000011 01100101
+00000000 11111111 10000110 10101110
+00001111 10000000 01111001 00011001
+00000000 10000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00000000 10000000 00000000 00000000
+00001111 11111110 00101011 11100011
+00000000 00100010 10111110 00101100
+00001111 11101010 10101010 10101011
+00000000 01101010 10101010 10101011
+00001111 10011010 01101001 10100111
+00000000 11111101 11110111 11011111
+00001000 00111100 01101100 00100000
+00000011 11110101 10101010 00100011
+00000001 10000000 00000000 00000000
+00000001 00000000 00000000 00000000
+00000000 00110011 00110011 00110011
+00000000 10000000 00000000 00000000
+00000000 00000000 00000111 11011100
+00000000 00000000 00001000 00000000
+00000000 01111111 11110000 00000000
+00001111 11111110 00101011 11100011
+00000000 00100010 10111110 00101100
+00001111 11101010 10101010 10101011
+00000000 01101010 10101010 10101011
+00001111 10011010 01101001 10100111
+00000000 11111101 11110111 11011111
+00001000 00111100 01101100 00100000
+00000011 11110101 10101010 00100011
+00000001 10000000 00000000 00000000
+00000001 00000000 00000000 00000000
+00000000 00110011 00110011 00110011
+00000000 10000000 00000000 00000000
+00000000 00000000 00000111 11011100
+00000000 00000000 00001000 00000000
+00000000 01111111 11110000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+00000000 00000000 00000000 00000000
+
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio.xml b/Software/Firmware/ADAU1701-Firmware/DigiRadio.xml
new file mode 100644
index 0000000..0c7fd16
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio.xml
@@ -0,0 +1,912 @@
+
+
+
+
+
+ IC 1
+ Sigma100
+
+ IC 1.CoreRegister
+ 2076
+ 0
+ 2
+ 0x00, 0x18,
+
+
+ Program Data
+ 1024
+ 5
+ 5120
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x00, 0xE8, 0x01, 0x00, 0x12, 0x00, 0x20, 0x01, 0x00, 0x30, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1A, 0x01, 0x20, 0x01, 0x00, 0x38, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x02, 0x20, 0x01, 0x00, 0x40, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2A, 0x03, 0x20, 0x01, 0x00, 0x48, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x32, 0x04, 0x20, 0x01, 0x00, 0x3A, 0x04, 0x40, 0x01, 0x00, 0x42, 0x05, 0x22, 0x01, 0x00, 0x4A, 0x05, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x60, 0x00, 0xE2, 0x01, 0x01, 0x98, 0x00, 0xE4, 0x01, 0x00, 0x8A, 0x09, 0x20, 0x01, 0x00, 0x82, 0x0A, 0x22, 0x01, 0x00, 0x72, 0x09, 0x34, 0x01, 0x00, 0x6A, 0x0A, 0x22, 0x01, 0x00, 0x62, 0x06, 0x22, 0x01, 0x00, 0x5A, 0x07, 0x22, 0x01, 0x00, 0x52, 0x08, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x78, 0x00, 0xE2, 0x01, 0x00, 0x90, 0x00, 0xF2, 0x01, 0x00, 0xBA, 0x0E, 0x20, 0x01, 0x00, 0xB2, 0x0F, 0x22, 0x01, 0x00, 0xA2, 0x0E, 0x34, 0x01, 0x00, 0x9A, 0x0F, 0x22, 0x01, 0x00, 0x7A, 0x0B, 0x22, 0x01, 0x00, 0x72, 0x0C, 0x22, 0x01, 0x00, 0x6A, 0x0D, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xA8, 0x00, 0xE2, 0x01, 0x00, 0xC0, 0x00, 0xF2, 0x01, 0x00, 0xEA, 0x13, 0x20, 0x01, 0x00, 0xE2, 0x14, 0x22, 0x01, 0x00, 0xD2, 0x13, 0x34, 0x01, 0x00, 0xCA, 0x14, 0x22, 0x01, 0x00, 0xAA, 0x10, 0x22, 0x01, 0x00, 0xA2, 0x11, 0x22, 0x01, 0x00, 0x9A, 0x12, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xD8, 0x00, 0xE2, 0x01, 0x00, 0xF0, 0x00, 0xF2, 0x01, 0x01, 0x1A, 0x18, 0x20, 0x01, 0x01, 0x12, 0x19, 0x22, 0x01, 0x01, 0x02, 0x18, 0x34, 0x01, 0x00, 0xFA, 0x19, 0x22, 0x01, 0x00, 0xDA, 0x15, 0x22, 0x01, 0x00, 0xD2, 0x16, 0x22, 0x01, 0x00, 0xCA, 0x17, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x08, 0x00, 0xE2, 0x01, 0x01, 0x20, 0x00, 0xF2, 0x01, 0x01, 0x4A, 0x1D, 0x20, 0x01, 0x01, 0x42, 0x1E, 0x22, 0x01, 0x01, 0x32, 0x1D, 0x34, 0x01, 0x01, 0x2A, 0x1E, 0x22, 0x01, 0x01, 0x0A, 0x1A, 0x22, 0x01, 0x01, 0x02, 0x1B, 0x22, 0x01, 0x00, 0xFA, 0x1C, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x38, 0x00, 0xE2, 0x01, 0x01, 0x50, 0x00, 0xF2, 0x01, 0x01, 0x7A, 0x22, 0x20, 0x01, 0x01, 0x72, 0x23, 0x22, 0x01, 0x01, 0x62, 0x22, 0x34, 0x01, 0x01, 0x5A, 0x23, 0x22, 0x01, 0x01, 0x3A, 0x1F, 0x22, 0x01, 0x01, 0x32, 0x20, 0x22, 0x01, 0x01, 0x2A, 0x21, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x68, 0x00, 0xE2, 0x01, 0x01, 0x80, 0x00, 0xF2, 0x01, 0x01, 0xC2, 0x09, 0x20, 0x01, 0x01, 0xBA, 0x0A, 0x22, 0x01, 0x01, 0xAA, 0x09, 0x34, 0x01, 0x01, 0xA2, 0x0A, 0x22, 0x01, 0x01, 0x9A, 0x06, 0x22, 0x01, 0x01, 0x92, 0x07, 0x22, 0x01, 0x01, 0x8A, 0x08, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xB0, 0x00, 0xE2, 0x01, 0x01, 0xC8, 0x00, 0xF2, 0x01, 0x01, 0xF2, 0x0E, 0x20, 0x01, 0x01, 0xEA, 0x0F, 0x22, 0x01, 0x01, 0xDA, 0x0E, 0x34, 0x01, 0x01, 0xD2, 0x0F, 0x22, 0x01, 0x01, 0xB2, 0x0B, 0x22, 0x01, 0x01, 0xAA, 0x0C, 0x22, 0x01, 0x01, 0xA2, 0x0D, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xE0, 0x00, 0xE2, 0x01, 0x01, 0xF8, 0x00, 0xF2, 0x01, 0x02, 0x22, 0x13, 0x20, 0x01, 0x02, 0x1A, 0x14, 0x22, 0x01, 0x02, 0x0A, 0x13, 0x34, 0x01, 0x02, 0x02, 0x14, 0x22, 0x01, 0x01, 0xE2, 0x10, 0x22, 0x01, 0x01, 0xDA, 0x11, 0x22, 0x01, 0x01, 0xD2, 0x12, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x10, 0x00, 0xE2, 0x01, 0x02, 0x28, 0x00, 0xF2, 0x01, 0x02, 0x52, 0x18, 0x20, 0x01, 0x02, 0x4A, 0x19, 0x22, 0x01, 0x02, 0x3A, 0x18, 0x34, 0x01, 0x02, 0x32, 0x19, 0x22, 0x01, 0x02, 0x12, 0x15, 0x22, 0x01, 0x02, 0x0A, 0x16, 0x22, 0x01, 0x02, 0x02, 0x17, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x40, 0x00, 0xE2, 0x01, 0x02, 0x58, 0x00, 0xF2, 0x01, 0x02, 0x82, 0x1D, 0x20, 0x01, 0x02, 0x7A, 0x1E, 0x22, 0x01, 0x02, 0x6A, 0x1D, 0x34, 0x01, 0x02, 0x62, 0x1E, 0x22, 0x01, 0x02, 0x42, 0x1A, 0x22, 0x01, 0x02, 0x3A, 0x1B, 0x22, 0x01, 0x02, 0x32, 0x1C, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x70, 0x00, 0xE2, 0x01, 0x02, 0x88, 0x00, 0xF2, 0x01, 0x02, 0xB2, 0x22, 0x20, 0x01, 0x02, 0xAA, 0x23, 0x22, 0x01, 0x02, 0x9A, 0x22, 0x34, 0x01, 0x02, 0x92, 0x23, 0x22, 0x01, 0x02, 0x72, 0x1F, 0x22, 0x01, 0x02, 0x6A, 0x20, 0x22, 0x01, 0x02, 0x62, 0x21, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xA0, 0x00, 0xE2, 0x01, 0x02, 0xB8, 0x00, 0xF2, 0x01, 0x01, 0x6A, 0x24, 0x20, 0x01, 0x02, 0xC0, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xA2, 0x25, 0x20, 0x01, 0x02, 0xC8, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xC1, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x28, 0x00, 0xF0, 0x01, 0xFF, 0xE9, 0x08, 0x22, 0x01, 0x03, 0x20, 0x00, 0xF2, 0x01, 0x03, 0x11, 0x08, 0x20, 0x01, 0x03, 0x12, 0x32, 0x22, 0x41, 0x03, 0x22, 0x32, 0x22, 0x01, 0x03, 0x01, 0x08, 0x34, 0x01, 0x03, 0x02, 0x32, 0x22, 0x41, 0x03, 0x2A, 0x32, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x08, 0x00, 0xE2, 0x01, 0x03, 0x18, 0x00, 0xF2, 0x01, 0x03, 0x30, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x2E, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x26, 0x20, 0x01, 0xFF, 0xF2, 0x27, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x03, 0x32, 0x28, 0x20, 0x01, 0xFF, 0xF2, 0x29, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x2F, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x2A, 0x20, 0x01, 0xFF, 0xF2, 0x2B, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x30, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x2C, 0x20, 0x01, 0xFF, 0xF2, 0x2D, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x31, 0xA0, 0x01, 0xFF, 0xE7, 0xFF, 0x20, 0x01, 0x02, 0xF8, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xF9, 0x08, 0x40, 0x01, 0xFF, 0xF1, 0x08, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xF8, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xF9, 0x08, 0x40, 0x01, 0x02, 0xF1, 0x08, 0x20, 0x09, 0x02, 0xFA, 0x33, 0x20, 0x01, 0x02, 0xF2, 0x33, 0x22, 0x41, 0x02, 0xF1, 0x08, 0x22, 0x01, 0x02, 0xF8, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xF9, 0x08, 0x20, 0x01, 0x02, 0xE8, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x34, 0x22, 0x49, 0xFF, 0xF1, 0x08, 0x20, 0x01, 0xFF, 0xE9, 0x08, 0x20, 0x25, 0x02, 0xE0, 0x00, 0xE2, 0x01, 0x02, 0xF8, 0x00, 0xC0, 0x01, 0x02, 0xC7, 0xFF, 0x20, 0x01, 0x02, 0xD8, 0x00, 0xE2, 0x01, 0x02, 0xC9, 0x08, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x28, 0x00, 0xF0, 0x01, 0xFF, 0xE9, 0x08, 0x22, 0x01, 0x03, 0x20, 0x00, 0xF2, 0x01, 0x03, 0x71, 0x08, 0x20, 0x01, 0x03, 0x72, 0x41, 0x22, 0x41, 0x03, 0x22, 0x41, 0x22, 0x01, 0x03, 0x61, 0x08, 0x34, 0x01, 0x03, 0x62, 0x41, 0x22, 0x41, 0x03, 0x2A, 0x41, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x68, 0x00, 0xE2, 0x01, 0x03, 0x78, 0x00, 0xF2, 0x01, 0x03, 0x30, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x3D, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x35, 0x20, 0x01, 0xFF, 0xF2, 0x36, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x03, 0x32, 0x37, 0x20, 0x01, 0xFF, 0xF2, 0x38, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x3E, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x39, 0x20, 0x01, 0xFF, 0xF2, 0x3A, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0xFF, 0xF2, 0x3F, 0x40, 0x01, 0x03, 0x31, 0x08, 0x20, 0x09, 0x03, 0x32, 0x3B, 0x20, 0x01, 0xFF, 0xF2, 0x3C, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x03, 0x37, 0xFF, 0x20, 0x41, 0xFF, 0xF1, 0x07, 0x22, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD7, 0xFF, 0x20, 0x01, 0x02, 0xD0, 0x00, 0xE2, 0x01, 0x02, 0xD0, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x40, 0xA0, 0x01, 0xFF, 0xE7, 0xFF, 0x20, 0x01, 0x03, 0x58, 0x00, 0xE2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x59, 0x08, 0x40, 0x01, 0xFF, 0xF1, 0x08, 0x20, 0x09, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x58, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x59, 0x08, 0x40, 0x01, 0x03, 0x51, 0x08, 0x20, 0x09, 0x03, 0x5A, 0x42, 0x20, 0x01, 0x03, 0x52, 0x42, 0x22, 0x41, 0x03, 0x51, 0x08, 0x22, 0x01, 0x03, 0x58, 0x00, 0xE2, 0x23, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x59, 0x08, 0x20, 0x01, 0x03, 0x48, 0x00, 0xE2, 0x01, 0xFF, 0xF2, 0x43, 0x22, 0x49, 0xFF, 0xF1, 0x08, 0x20, 0x01, 0xFF, 0xE9, 0x08, 0x20, 0x25, 0x03, 0x40, 0x00, 0xE2, 0x01, 0x03, 0x58, 0x00, 0xC0, 0x01, 0x02, 0xCF, 0xFF, 0x20, 0x01, 0x03, 0x38, 0x00, 0xE2, 0x01, 0x03, 0x39, 0x08, 0x20, 0x01, 0xFF, 0x30, 0x00, 0x02, 0x01, 0x02, 0xD9, 0x08, 0x20, 0x01, 0xFF, 0x28, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+
+
+ Param
+ 0
+ 4
+ 4096
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0x65, 0x0F, 0x00, 0x79, 0x35, 0x00, 0x7F, 0xC3, 0x65, 0x00, 0xFF, 0x86, 0xAE, 0x0F, 0x80, 0x79, 0x19, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0F, 0xFE, 0x2B, 0xE3, 0x00, 0x22, 0xBE, 0x2C, 0x0F, 0xEA, 0xAA, 0xAB, 0x00, 0x6A, 0xAA, 0xAB, 0x0F, 0x9A, 0x69, 0xA7, 0x00, 0xFD, 0xF7, 0xDF, 0x08, 0x3C, 0x6C, 0x20, 0x03, 0xF5, 0xAA, 0x23, 0x01, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFE, 0x2B, 0xE3, 0x00, 0x22, 0xBE, 0x2C, 0x0F, 0xEA, 0xAA, 0xAB, 0x00, 0x6A, 0xAA, 0xAB, 0x0F, 0x9A, 0x69, 0xA7, 0x00, 0xFD, 0xF7, 0xDF, 0x08, 0x3C, 0x6C, 0x20, 0x03, 0xF5, 0xAA, 0x23, 0x01, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+
+
+ IC 1.HWConFiguration
+ 2076
+ 0
+ 24
+ 0x00, 0x18, 0x08, 0x08, 0x00, 0x00, 0x44, 0x00, 0x44, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+
+
+ IC 1.CoreRegister
+ 2076
+ 0
+ 2
+ 0x00, 0x1C,
+
+
+ Si4674
+
+ ALG0
+ Gain1940AlgNS1
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS1
+ FixedPoint
+ 0
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+ ALG1
+ Gain1940AlgNS2
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS2
+ FixedPoint
+ 1
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+
+ ESP32
+
+ ALG0
+ Gain1940AlgNS3
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS3
+ FixedPoint
+ 2
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+ ALG1
+ Gain1940AlgNS4
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS4
+ FixedPoint
+ 3
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+
+ St Mixer1
+
+ ALG0
+ StereoMixerAlg1
+ Stereo Mixer( 2 ) : Gain`max[ 6 ],Gain`min[ -30 ],Gain`res[ 36 ],Gain[ 0 ];Gain`max[ 6 ],Gain`min[ -30 ],Gain`res[ 36 ],Gain[ 0 ];
+
+ StereoMixerAlg12
+ FixedPoint
+ 4
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ StereoMixerAlg14
+ FixedPoint
+ 5
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+
+ Param EQ1
+
+ ALG0
+ PEQ1Chan1
+ PEQ1Chan - Double Precision( 1 ) : Gain10[ 0 ],Gain20[ 0 ],Q0[ 1.41 ],Boost0[ 0 ],Frequency10[ 20 ],Frequency20[ 1000 ],Ripple0[ 0.1 ],Active10[ True ],Active20[ True ],LowPass10[ True ],LowPass20[ True ],Bypass0[ False ],View0[ False ],Type0[ 6 ],SubType0[ 0 ],Gain11[ 0 ],Gain21[ 0 ],Q1[ 1 ],Boost1[ 0 ],Frequency11[ 100 ],Frequency21[ 1000 ],Ripple1[ 0.1 ],Active11[ True ],Active21[ True ],LowPass11[ True ],LowPass21[ True ],Bypass1[ False ],View1[ False ],Type1[ 0 ],SubType1[ 0 ],Gain12[ 0 ],Gain22[ 0 ],Q2[ 1 ],Boost2[ 0 ],Frequency12[ 400 ],Frequency22[ 1000 ],Ripple2[ 0.1 ],Active12[ True ],Active22[ True ],LowPass12[ True ],LowPass22[ True ],Bypass2[ False ],View2[ False ],Type2[ 0 ],SubType2[ 0 ],Gain13[ 0 ],Gain23[ 0 ],Q3[ 1 ],Boost3[ 0 ],Frequency13[ 1000 ],Frequency23[ 1000 ],Ripple3[ 0.1 ],Active13[ True ],Active23[ True ],LowPass13[ True ],LowPass23[ True ],Bypass3[ False ],View3[ False ],Type3[ 0 ],SubType3[ 0 ],Gain14[ 0 ],Gain24[ 0 ],Q4[ 1 ],Boost4[ 0 ],Frequency14[ 3000 ],Frequency24[ 1000 ],Ripple4[ 0.1 ],Active14[ True ],Active24[ True ],LowPass14[ True ],LowPass24[ True ],Bypass4[ False ],View4[ False ],Type4[ 0 ],SubType4[ 0 ],Gain15[ 0 ],Gain25[ 0 ],Q5[ 1 ],Boost5[ 0 ],Frequency15[ 8000 ],Frequency25[ 1000 ],Ripple5[ 0.1 ],Active15[ True ],Active25[ True ],LowPass15[ True ],LowPass25[ True ],Bypass5[ False ],View5[ False ],Type5[ 0 ],SubType5[ 0 ],Gain16[ 0 ],Gain26[ 0 ],Q6[ 1.41 ],Boost6[ 5 ],Frequency16[ 4000 ],Frequency26[ 1000 ],Ripple6[ 0.1 ],Active16[ True ],Active26[ True ],LowPass16[ True ],LowPass26[ True ],Bypass6[ False ],View6[ False ],Type6[ 0 ],SubType6[ 0 ],Gain17[ 0 ],Gain27[ 0 ],Q7[ 1.41 ],Boost7[ 5 ],Frequency17[ 8000 ],Frequency27[ 1000 ],Ripple7[ 0.1 ],Active17[ True ],Active27[ True ],LowPass17[ True ],LowPass27[ True ],Bypass7[ False ],View7[ False ],Type7[ 0 ],SubType7[ 0 ],Gain18[ 0 ],Gain28[ 0 ],Q8[ 1.41 ],Boost8[ 5 ],Frequency18[ 16000 ],Frequency28[ 1000 ],Ripple8[ 0.1 ],Active18[ True ],Active28[ True ],LowPass18[ True ],LowPass28[ True ],Bypass8[ False ],View8[ False ],Type8[ 0 ],SubType8[ 0 ],Gain19[ 0 ],Gain29[ 0 ],Q9[ 1.41 ],Boost9[ 5 ],Frequency19[ 32000 ],Frequency29[ 1000 ],Ripple9[ 0.1 ],Active19[ True ],Active29[ True ],LowPass19[ True ],LowPass29[ True ],Bypass9[ False ],View9[ False ],Type9[ 0 ],SubType9[ 0 ],Gain110[ 0 ],Gain210[ 0 ],Q10[ 1.41 ],Boost10[ 5 ],Frequency110[ 64000 ],Frequency210[ 1000 ],Ripple10[ 0.1 ],Active110[ True ],Active210[ True ],LowPass110[ True ],LowPass210[ True ],Bypass10[ False ],View10[ False ],Type10[ 0 ],SubType10[ 0 ],Gain111[ 0 ],Gain211[ 0 ],Q11[ 1.41 ],Boost11[ 5 ],Frequency111[ 128000 ],Frequency211[ 1000 ],Ripple11[ 0.1 ],Active111[ True ],Active211[ True ],LowPass111[ True ],LowPass211[ True ],Bypass11[ False ],View11[ False ],Type11[ 0 ],SubType11[ 0 ],Gain112[ 0 ],Gain212[ 0 ],Q12[ 1.41 ],Boost12[ 5 ],Frequency112[ 256000 ],Frequency212[ 1000 ],Ripple12[ 0.1 ],Active112[ True ],Active212[ True ],LowPass112[ True ],LowPass212[ True ],Bypass12[ False ],View12[ False ],Type12[ 0 ],SubType12[ 0 ],Gain113[ 0 ],Gain213[ 0 ],Q13[ 1.41 ],Boost13[ 5 ],Frequency113[ 512000 ],Frequency213[ 1000 ],Ripple13[ 0.1 ],Active113[ True ],Active213[ True ],LowPass113[ True ],LowPass213[ True ],Bypass13[ False ],View13[ False ],Type13[ 0 ],SubType13[ 0 ],Gain114[ 0 ],Gain214[ 0 ],Q14[ 1.41 ],Boost14[ 5 ],Frequency114[ 1024000 ],Frequency214[ 1000 ],Ripple14[ 0.1 ],Active114[ True ],Active214[ True ],LowPass114[ True ],LowPass214[ True ],Bypass14[ False ],View14[ False ],Type14[ 0 ],SubType14[ 0 ],Index[ 5 ];
+
+ PEQ1Chan10B1
+ FixedPoint
+ 6
+ 0.99815046787262
+ 4
+ 0x00, 0x7F, 0xC3, 0x65,
+
+
+ PEQ1Chan10B1
+ FixedPoint
+ 6
+ 0.99815046787262
+ 4
+ 0x00, 0x7F, 0xC3, 0x65,
+
+
+ PEQ1Chan11B1
+ FixedPoint
+ 7
+ -1.99630105495453
+ 4
+ 0x0F, 0x00, 0x79, 0x35,
+
+
+ PEQ1Chan11B1
+ FixedPoint
+ 7
+ -1.99630105495453
+ 4
+ 0x0F, 0x00, 0x79, 0x35,
+
+
+ PEQ1Chan12B1
+ FixedPoint
+ 8
+ 0.99815046787262
+ 4
+ 0x00, 0x7F, 0xC3, 0x65,
+
+
+ PEQ1Chan12B1
+ FixedPoint
+ 8
+ 0.99815046787262
+ 4
+ 0x00, 0x7F, 0xC3, 0x65,
+
+
+ PEQ1Chan11A1
+ FixedPoint
+ 9
+ 1.99629759788513
+ 4
+ 0x00, 0xFF, 0x86, 0xAE,
+
+
+ PEQ1Chan11A1
+ FixedPoint
+ 9
+ 1.99629759788513
+ 4
+ 0x00, 0xFF, 0x86, 0xAE,
+
+
+ PEQ1Chan12A1
+ FixedPoint
+ 10
+ -0.996304392814636
+ 4
+ 0x0F, 0x80, 0x79, 0x19,
+
+
+ PEQ1Chan12A1
+ FixedPoint
+ 10
+ -0.996304392814636
+ 4
+ 0x0F, 0x80, 0x79, 0x19,
+
+
+ PEQ1Chan10B2
+ FixedPoint
+ 11
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan10B2
+ FixedPoint
+ 11
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan11B2
+ FixedPoint
+ 12
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11B2
+ FixedPoint
+ 12
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B2
+ FixedPoint
+ 13
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B2
+ FixedPoint
+ 13
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A2
+ FixedPoint
+ 14
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A2
+ FixedPoint
+ 14
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A2
+ FixedPoint
+ 15
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A2
+ FixedPoint
+ 15
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan10B3
+ FixedPoint
+ 16
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan10B3
+ FixedPoint
+ 16
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan11B3
+ FixedPoint
+ 17
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11B3
+ FixedPoint
+ 17
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B3
+ FixedPoint
+ 18
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B3
+ FixedPoint
+ 18
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A3
+ FixedPoint
+ 19
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A3
+ FixedPoint
+ 19
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A3
+ FixedPoint
+ 20
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A3
+ FixedPoint
+ 20
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan10B4
+ FixedPoint
+ 21
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan10B4
+ FixedPoint
+ 21
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan11B4
+ FixedPoint
+ 22
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11B4
+ FixedPoint
+ 22
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B4
+ FixedPoint
+ 23
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B4
+ FixedPoint
+ 23
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A4
+ FixedPoint
+ 24
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A4
+ FixedPoint
+ 24
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A4
+ FixedPoint
+ 25
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A4
+ FixedPoint
+ 25
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan10B5
+ FixedPoint
+ 26
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan10B5
+ FixedPoint
+ 26
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan11B5
+ FixedPoint
+ 27
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11B5
+ FixedPoint
+ 27
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B5
+ FixedPoint
+ 28
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B5
+ FixedPoint
+ 28
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A5
+ FixedPoint
+ 29
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A5
+ FixedPoint
+ 29
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A5
+ FixedPoint
+ 30
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A5
+ FixedPoint
+ 30
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan10B6
+ FixedPoint
+ 31
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan10B6
+ FixedPoint
+ 31
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ PEQ1Chan11B6
+ FixedPoint
+ 32
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11B6
+ FixedPoint
+ 32
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B6
+ FixedPoint
+ 33
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12B6
+ FixedPoint
+ 33
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A6
+ FixedPoint
+ 34
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan11A6
+ FixedPoint
+ 34
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A6
+ FixedPoint
+ 35
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+ PEQ1Chan12A6
+ FixedPoint
+ 35
+ 0
+ 4
+ 0x00, 0x00, 0x00, 0x00,
+
+
+
+
+ Multiple 1
+
+ ALG0
+ Gain1940AlgNS5
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS5
+ FixedPoint
+ 36
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+ ALG1
+ Gain1940AlgNS6
+ Gain (no slew)( 1 ) : Gain`max[ 0 ],Gain`min[ -80 ],Gain`res[ 40 ],Gain[ 0 ];
+
+ Gain1940AlgNS6
+ FixedPoint
+ 37
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+
+
+ Limiter 1
+
+ ALG0
+ limiterAlg1
+ Limiter with Indicator( 1 ) : RMSvalue[ 50 ],Threshold[ 0 ],DecayTime[ 12 ];
+
+ limiterAlg1slope_1
+ FixedPoint
+ 38
+ -0.014285683631897
+ 4
+ 0x0F, 0xFE, 0x2B, 0xE3,
+
+
+ limiterAlg1inter_1
+ FixedPoint
+ 39
+ 0.27142858505249
+ 4
+ 0x00, 0x22, 0xBE, 0x2C,
+
+
+ limiterAlg1slope_2
+ FixedPoint
+ 40
+ -0.166666626930237
+ 4
+ 0x0F, 0xEA, 0xAA, 0xAB,
+
+
+ limiterAlg1inter_2
+ FixedPoint
+ 41
+ 0.833333373069763
+ 4
+ 0x00, 0x6A, 0xAA, 0xAB,
+
+
+ limiterAlg1slope_3
+ FixedPoint
+ 42
+ -0.79365074634552
+ 4
+ 0x0F, 0x9A, 0x69, 0xA7,
+
+
+ limiterAlg1inter_3
+ FixedPoint
+ 43
+ 1.98412692546844
+ 4
+ 0x00, 0xFD, 0xF7, 0xDF,
+
+
+ limiterAlg1slope_4
+ FixedPoint
+ 44
+ -15.5279502868652
+ 4
+ 0x08, 0x3C, 0x6C, 0x20,
+
+
+ limiterAlg1inter_4
+ FixedPoint
+ 45
+ 7.91925466060638
+ 4
+ 0x03, 0xF5, 0xAA, 0x23,
+
+
+ limiterAlg1comp1
+ FixedPoint
+ 46
+ 3
+ 4
+ 0x01, 0x80, 0x00, 0x00,
+
+
+ limiterAlg1comp2
+ FixedPoint
+ 47
+ 2
+ 4
+ 0x01, 0x00, 0x00, 0x00,
+
+
+ limiterAlg1comp3
+ FixedPoint
+ 48
+ 0.399999976158142
+ 4
+ 0x00, 0x33, 0x33, 0x33,
+
+
+ limiterAlg1threshold
+ FixedPoint
+ 49
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ limiterAlg1RMS_MONO_TCONST
+ FixedPoint
+ 50
+ 0.000239849090576172
+ 4
+ 0x00, 0x00, 0x07, 0xDC,
+
+
+ limiterAlg1decay
+ FixedPoint
+ 51
+ 0.000244140625
+ 4
+ 0x00, 0x00, 0x08, 0x00,
+
+
+ limiterAlg1decaycomplement
+ FixedPoint
+ 52
+ 0.99951171875
+ 4
+ 0x00, 0x7F, 0xF0, 0x00,
+
+
+
+
+ Limiter 2
+
+ ALG0
+ limiterAlg2
+ Limiter with Indicator( 1 ) : RMSvalue[ 50 ],Threshold[ 0 ],DecayTime[ 12 ];
+
+ limiterAlg2slope_1
+ FixedPoint
+ 53
+ -0.014285683631897
+ 4
+ 0x0F, 0xFE, 0x2B, 0xE3,
+
+
+ limiterAlg2inter_1
+ FixedPoint
+ 54
+ 0.27142858505249
+ 4
+ 0x00, 0x22, 0xBE, 0x2C,
+
+
+ limiterAlg2slope_2
+ FixedPoint
+ 55
+ -0.166666626930237
+ 4
+ 0x0F, 0xEA, 0xAA, 0xAB,
+
+
+ limiterAlg2inter_2
+ FixedPoint
+ 56
+ 0.833333373069763
+ 4
+ 0x00, 0x6A, 0xAA, 0xAB,
+
+
+ limiterAlg2slope_3
+ FixedPoint
+ 57
+ -0.79365074634552
+ 4
+ 0x0F, 0x9A, 0x69, 0xA7,
+
+
+ limiterAlg2inter_3
+ FixedPoint
+ 58
+ 1.98412692546844
+ 4
+ 0x00, 0xFD, 0xF7, 0xDF,
+
+
+ limiterAlg2slope_4
+ FixedPoint
+ 59
+ -15.5279502868652
+ 4
+ 0x08, 0x3C, 0x6C, 0x20,
+
+
+ limiterAlg2inter_4
+ FixedPoint
+ 60
+ 7.91925466060638
+ 4
+ 0x03, 0xF5, 0xAA, 0x23,
+
+
+ limiterAlg2comp1
+ FixedPoint
+ 61
+ 3
+ 4
+ 0x01, 0x80, 0x00, 0x00,
+
+
+ limiterAlg2comp2
+ FixedPoint
+ 62
+ 2
+ 4
+ 0x01, 0x00, 0x00, 0x00,
+
+
+ limiterAlg2comp3
+ FixedPoint
+ 63
+ 0.399999976158142
+ 4
+ 0x00, 0x33, 0x33, 0x33,
+
+
+ limiterAlg2threshold
+ FixedPoint
+ 64
+ 1
+ 4
+ 0x00, 0x80, 0x00, 0x00,
+
+
+ limiterAlg2RMS_MONO_TCONST
+ FixedPoint
+ 65
+ 0.000239849090576172
+ 4
+ 0x00, 0x00, 0x07, 0xDC,
+
+
+ limiterAlg2decay
+ FixedPoint
+ 66
+ 0.000244140625
+ 4
+ 0x00, 0x00, 0x08, 0x00,
+
+
+ limiterAlg2decaycomplement
+ FixedPoint
+ 67
+ 0.99951171875
+ 4
+ 0x00, 0x7F, 0xF0, 0x00,
+
+
+
+
+
\ No newline at end of file
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1.h b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1.h
new file mode 100644
index 0000000..9db41dc
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1.h
@@ -0,0 +1,2119 @@
+/*
+ * File: C:\Users\mikbi\Documents\Allegati\Desktop\DigiRadio\DigiRadio_IC_1.h
+ *
+ * Created: Monday, July 6, 2026 2:41:28 PM
+ * Description: DigiRadio:IC 1 program data.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This software may only be used to program products purchased from
+ * Analog Devices for incorporation by you into audio products that
+ * are intended for resale to audio product end users. This software
+ * may not be distributed whole or in any part to third parties.
+ *
+ * Copyright ©2026 Analog Devices, Inc. All rights reserved.
+ */
+#ifndef __DIGIRADIO_IC_1_H__
+#define __DIGIRADIO_IC_1_H__
+
+#include "SigmaStudioFW.h"
+#include "DigiRadio_IC_1_REG.h"
+
+#define DEVICE_ARCHITECTURE_IC_1 "ADAU1701"
+#define DEVICE_ADDR_IC_1 0x68
+
+/* DSP Program Data */
+#define PROGRAM_SIZE_IC_1 5120
+#define PROGRAM_ADDR_IC_1 1024
+ADI_REG_TYPE Program_Data_IC_1[PROGRAM_SIZE_IC_1] = {
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x08, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x10, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x18, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x20, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x28, 0x00, 0xE8, 0x01,
+0x00, 0x12, 0x00, 0x20, 0x01,
+0x00, 0x30, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x1A, 0x01, 0x20, 0x01,
+0x00, 0x38, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x22, 0x02, 0x20, 0x01,
+0x00, 0x40, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x2A, 0x03, 0x20, 0x01,
+0x00, 0x48, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x32, 0x04, 0x20, 0x01,
+0x00, 0x3A, 0x04, 0x40, 0x01,
+0x00, 0x42, 0x05, 0x22, 0x01,
+0x00, 0x4A, 0x05, 0x44, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x60, 0x00, 0xE2, 0x01,
+0x01, 0x98, 0x00, 0xE4, 0x01,
+0x00, 0x8A, 0x09, 0x20, 0x01,
+0x00, 0x82, 0x0A, 0x22, 0x01,
+0x00, 0x72, 0x09, 0x34, 0x01,
+0x00, 0x6A, 0x0A, 0x22, 0x01,
+0x00, 0x62, 0x06, 0x22, 0x01,
+0x00, 0x5A, 0x07, 0x22, 0x01,
+0x00, 0x52, 0x08, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x78, 0x00, 0xE2, 0x01,
+0x00, 0x90, 0x00, 0xF2, 0x01,
+0x00, 0xBA, 0x0E, 0x20, 0x01,
+0x00, 0xB2, 0x0F, 0x22, 0x01,
+0x00, 0xA2, 0x0E, 0x34, 0x01,
+0x00, 0x9A, 0x0F, 0x22, 0x01,
+0x00, 0x7A, 0x0B, 0x22, 0x01,
+0x00, 0x72, 0x0C, 0x22, 0x01,
+0x00, 0x6A, 0x0D, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0xA8, 0x00, 0xE2, 0x01,
+0x00, 0xC0, 0x00, 0xF2, 0x01,
+0x00, 0xEA, 0x13, 0x20, 0x01,
+0x00, 0xE2, 0x14, 0x22, 0x01,
+0x00, 0xD2, 0x13, 0x34, 0x01,
+0x00, 0xCA, 0x14, 0x22, 0x01,
+0x00, 0xAA, 0x10, 0x22, 0x01,
+0x00, 0xA2, 0x11, 0x22, 0x01,
+0x00, 0x9A, 0x12, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0xD8, 0x00, 0xE2, 0x01,
+0x00, 0xF0, 0x00, 0xF2, 0x01,
+0x01, 0x1A, 0x18, 0x20, 0x01,
+0x01, 0x12, 0x19, 0x22, 0x01,
+0x01, 0x02, 0x18, 0x34, 0x01,
+0x00, 0xFA, 0x19, 0x22, 0x01,
+0x00, 0xDA, 0x15, 0x22, 0x01,
+0x00, 0xD2, 0x16, 0x22, 0x01,
+0x00, 0xCA, 0x17, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x08, 0x00, 0xE2, 0x01,
+0x01, 0x20, 0x00, 0xF2, 0x01,
+0x01, 0x4A, 0x1D, 0x20, 0x01,
+0x01, 0x42, 0x1E, 0x22, 0x01,
+0x01, 0x32, 0x1D, 0x34, 0x01,
+0x01, 0x2A, 0x1E, 0x22, 0x01,
+0x01, 0x0A, 0x1A, 0x22, 0x01,
+0x01, 0x02, 0x1B, 0x22, 0x01,
+0x00, 0xFA, 0x1C, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x38, 0x00, 0xE2, 0x01,
+0x01, 0x50, 0x00, 0xF2, 0x01,
+0x01, 0x7A, 0x22, 0x20, 0x01,
+0x01, 0x72, 0x23, 0x22, 0x01,
+0x01, 0x62, 0x22, 0x34, 0x01,
+0x01, 0x5A, 0x23, 0x22, 0x01,
+0x01, 0x3A, 0x1F, 0x22, 0x01,
+0x01, 0x32, 0x20, 0x22, 0x01,
+0x01, 0x2A, 0x21, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x68, 0x00, 0xE2, 0x01,
+0x01, 0x80, 0x00, 0xF2, 0x01,
+0x01, 0xC2, 0x09, 0x20, 0x01,
+0x01, 0xBA, 0x0A, 0x22, 0x01,
+0x01, 0xAA, 0x09, 0x34, 0x01,
+0x01, 0xA2, 0x0A, 0x22, 0x01,
+0x01, 0x9A, 0x06, 0x22, 0x01,
+0x01, 0x92, 0x07, 0x22, 0x01,
+0x01, 0x8A, 0x08, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0xB0, 0x00, 0xE2, 0x01,
+0x01, 0xC8, 0x00, 0xF2, 0x01,
+0x01, 0xF2, 0x0E, 0x20, 0x01,
+0x01, 0xEA, 0x0F, 0x22, 0x01,
+0x01, 0xDA, 0x0E, 0x34, 0x01,
+0x01, 0xD2, 0x0F, 0x22, 0x01,
+0x01, 0xB2, 0x0B, 0x22, 0x01,
+0x01, 0xAA, 0x0C, 0x22, 0x01,
+0x01, 0xA2, 0x0D, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0xE0, 0x00, 0xE2, 0x01,
+0x01, 0xF8, 0x00, 0xF2, 0x01,
+0x02, 0x22, 0x13, 0x20, 0x01,
+0x02, 0x1A, 0x14, 0x22, 0x01,
+0x02, 0x0A, 0x13, 0x34, 0x01,
+0x02, 0x02, 0x14, 0x22, 0x01,
+0x01, 0xE2, 0x10, 0x22, 0x01,
+0x01, 0xDA, 0x11, 0x22, 0x01,
+0x01, 0xD2, 0x12, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x10, 0x00, 0xE2, 0x01,
+0x02, 0x28, 0x00, 0xF2, 0x01,
+0x02, 0x52, 0x18, 0x20, 0x01,
+0x02, 0x4A, 0x19, 0x22, 0x01,
+0x02, 0x3A, 0x18, 0x34, 0x01,
+0x02, 0x32, 0x19, 0x22, 0x01,
+0x02, 0x12, 0x15, 0x22, 0x01,
+0x02, 0x0A, 0x16, 0x22, 0x01,
+0x02, 0x02, 0x17, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x40, 0x00, 0xE2, 0x01,
+0x02, 0x58, 0x00, 0xF2, 0x01,
+0x02, 0x82, 0x1D, 0x20, 0x01,
+0x02, 0x7A, 0x1E, 0x22, 0x01,
+0x02, 0x6A, 0x1D, 0x34, 0x01,
+0x02, 0x62, 0x1E, 0x22, 0x01,
+0x02, 0x42, 0x1A, 0x22, 0x01,
+0x02, 0x3A, 0x1B, 0x22, 0x01,
+0x02, 0x32, 0x1C, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x70, 0x00, 0xE2, 0x01,
+0x02, 0x88, 0x00, 0xF2, 0x01,
+0x02, 0xB2, 0x22, 0x20, 0x01,
+0x02, 0xAA, 0x23, 0x22, 0x01,
+0x02, 0x9A, 0x22, 0x34, 0x01,
+0x02, 0x92, 0x23, 0x22, 0x01,
+0x02, 0x72, 0x1F, 0x22, 0x01,
+0x02, 0x6A, 0x20, 0x22, 0x01,
+0x02, 0x62, 0x21, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xA0, 0x00, 0xE2, 0x01,
+0x02, 0xB8, 0x00, 0xF2, 0x01,
+0x01, 0x6A, 0x24, 0x20, 0x01,
+0x02, 0xC0, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xA2, 0x25, 0x20, 0x01,
+0x02, 0xC8, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xC1, 0x08, 0x20, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x28, 0x00, 0xF0, 0x01,
+0xFF, 0xE9, 0x08, 0x22, 0x01,
+0x03, 0x20, 0x00, 0xF2, 0x01,
+0x03, 0x11, 0x08, 0x20, 0x01,
+0x03, 0x12, 0x32, 0x22, 0x41,
+0x03, 0x22, 0x32, 0x22, 0x01,
+0x03, 0x01, 0x08, 0x34, 0x01,
+0x03, 0x02, 0x32, 0x22, 0x41,
+0x03, 0x2A, 0x32, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x08, 0x00, 0xE2, 0x01,
+0x03, 0x18, 0x00, 0xF2, 0x01,
+0x03, 0x30, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x2E, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x26, 0x20, 0x01,
+0xFF, 0xF2, 0x27, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x03, 0x32, 0x28, 0x20, 0x01,
+0xFF, 0xF2, 0x29, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x2F, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x2A, 0x20, 0x01,
+0xFF, 0xF2, 0x2B, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x30, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x2C, 0x20, 0x01,
+0xFF, 0xF2, 0x2D, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x00, 0x02, 0x31, 0xA0, 0x01,
+0xFF, 0xE7, 0xFF, 0x20, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x40, 0x01,
+0xFF, 0xF1, 0x08, 0x20, 0x09,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x40, 0x01,
+0x02, 0xF1, 0x08, 0x20, 0x09,
+0x02, 0xFA, 0x33, 0x20, 0x01,
+0x02, 0xF2, 0x33, 0x22, 0x41,
+0x02, 0xF1, 0x08, 0x22, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x20, 0x01,
+0x02, 0xE8, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x34, 0x22, 0x49,
+0xFF, 0xF1, 0x08, 0x20, 0x01,
+0xFF, 0xE9, 0x08, 0x20, 0x25,
+0x02, 0xE0, 0x00, 0xE2, 0x01,
+0x02, 0xF8, 0x00, 0xC0, 0x01,
+0x02, 0xC7, 0xFF, 0x20, 0x01,
+0x02, 0xD8, 0x00, 0xE2, 0x01,
+0x02, 0xC9, 0x08, 0x20, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x28, 0x00, 0xF0, 0x01,
+0xFF, 0xE9, 0x08, 0x22, 0x01,
+0x03, 0x20, 0x00, 0xF2, 0x01,
+0x03, 0x71, 0x08, 0x20, 0x01,
+0x03, 0x72, 0x41, 0x22, 0x41,
+0x03, 0x22, 0x41, 0x22, 0x01,
+0x03, 0x61, 0x08, 0x34, 0x01,
+0x03, 0x62, 0x41, 0x22, 0x41,
+0x03, 0x2A, 0x41, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x68, 0x00, 0xE2, 0x01,
+0x03, 0x78, 0x00, 0xF2, 0x01,
+0x03, 0x30, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x3D, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x35, 0x20, 0x01,
+0xFF, 0xF2, 0x36, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x03, 0x32, 0x37, 0x20, 0x01,
+0xFF, 0xF2, 0x38, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x3E, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x39, 0x20, 0x01,
+0xFF, 0xF2, 0x3A, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x3F, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x3B, 0x20, 0x01,
+0xFF, 0xF2, 0x3C, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x00, 0x02, 0x40, 0xA0, 0x01,
+0xFF, 0xE7, 0xFF, 0x20, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x40, 0x01,
+0xFF, 0xF1, 0x08, 0x20, 0x09,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x40, 0x01,
+0x03, 0x51, 0x08, 0x20, 0x09,
+0x03, 0x5A, 0x42, 0x20, 0x01,
+0x03, 0x52, 0x42, 0x22, 0x41,
+0x03, 0x51, 0x08, 0x22, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x20, 0x01,
+0x03, 0x48, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x43, 0x22, 0x49,
+0xFF, 0xF1, 0x08, 0x20, 0x01,
+0xFF, 0xE9, 0x08, 0x20, 0x25,
+0x03, 0x40, 0x00, 0xE2, 0x01,
+0x03, 0x58, 0x00, 0xC0, 0x01,
+0x02, 0xCF, 0xFF, 0x20, 0x01,
+0x03, 0x38, 0x00, 0xE2, 0x01,
+0x03, 0x39, 0x08, 0x20, 0x01,
+0xFF, 0x30, 0x00, 0x02, 0x01,
+0x02, 0xD9, 0x08, 0x20, 0x01,
+0xFF, 0x28, 0x00, 0x02, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+};
+
+/* DSP Parameter (Coefficient) Data */
+#define PARAM_SIZE_IC_1 4096
+#define PARAM_ADDR_IC_1 0
+ADI_REG_TYPE Param_Data_IC_1[PARAM_SIZE_IC_1] = {
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x7F, 0xC3, 0x65,
+0x0F, 0x00, 0x79, 0x35,
+0x00, 0x7F, 0xC3, 0x65,
+0x00, 0xFF, 0x86, 0xAE,
+0x0F, 0x80, 0x79, 0x19,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x0F, 0xFE, 0x2B, 0xE3,
+0x00, 0x22, 0xBE, 0x2C,
+0x0F, 0xEA, 0xAA, 0xAB,
+0x00, 0x6A, 0xAA, 0xAB,
+0x0F, 0x9A, 0x69, 0xA7,
+0x00, 0xFD, 0xF7, 0xDF,
+0x08, 0x3C, 0x6C, 0x20,
+0x03, 0xF5, 0xAA, 0x23,
+0x01, 0x80, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00,
+0x00, 0x33, 0x33, 0x33,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x07, 0xDC,
+0x00, 0x00, 0x08, 0x00,
+0x00, 0x7F, 0xF0, 0x00,
+0x0F, 0xFE, 0x2B, 0xE3,
+0x00, 0x22, 0xBE, 0x2C,
+0x0F, 0xEA, 0xAA, 0xAB,
+0x00, 0x6A, 0xAA, 0xAB,
+0x0F, 0x9A, 0x69, 0xA7,
+0x00, 0xFD, 0xF7, 0xDF,
+0x08, 0x3C, 0x6C, 0x20,
+0x03, 0xF5, 0xAA, 0x23,
+0x01, 0x80, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00,
+0x00, 0x33, 0x33, 0x33,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x07, 0xDC,
+0x00, 0x00, 0x08, 0x00,
+0x00, 0x7F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+};
+
+
+/* Register Default - IC 1.CoreRegister */
+ADI_REG_TYPE R0_COREREGISTER_IC_1_Default[REG_COREREGISTER_IC_1_BYTE] = {
+0x00, 0x18
+};
+
+/* Register Default - IC 1.HWConFiguration */
+#define R3_HWCONFIGURATION_IC_1_SIZE 24
+ADI_REG_TYPE R3_HWCONFIGURATION_IC_1_Default[R3_HWCONFIGURATION_IC_1_SIZE] = {
+0x00, 0x18, 0x08, 0x08, 0x00, 0x00, 0x44, 0x00, 0x44, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
+};
+
+/* Register Default - IC 1.CoreRegister */
+ADI_REG_TYPE R4_COREREGISTER_IC_1_Default[REG_COREREGISTER_IC_1_BYTE] = {
+0x00, 0x1C
+};
+
+
+/*
+ * Default Download
+ */
+#define DEFAULT_DOWNLOAD_SIZE_IC_1 5
+
+void default_download_IC_1() {
+ SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_COREREGISTER_IC_1_ADDR, REG_COREREGISTER_IC_1_BYTE, R0_COREREGISTER_IC_1_Default );
+ SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );
+ SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PARAM_ADDR_IC_1, PARAM_SIZE_IC_1, Param_Data_IC_1 );
+ SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_COREREGISTER_IC_1_ADDR , R3_HWCONFIGURATION_IC_1_SIZE, R3_HWCONFIGURATION_IC_1_Default );
+ SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, REG_COREREGISTER_IC_1_ADDR, REG_COREREGISTER_IC_1_BYTE, R4_COREREGISTER_IC_1_Default );
+}
+
+#endif
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_PARAM.h b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_PARAM.h
new file mode 100644
index 0000000..84cad57
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_PARAM.h
@@ -0,0 +1,443 @@
+/*
+ * File: C:\Users\mikbi\Documents\Allegati\Desktop\DigiRadio\DigiRadio_IC_1_PARAM.h
+ *
+ * Created: Monday, July 6, 2026 2:41:28 PM
+ * Description: DigiRadio:IC 1 parameter RAM definitions.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This software may only be used to program products purchased from
+ * Analog Devices for incorporation by you into audio products that
+ * are intended for resale to audio product end users. This software
+ * may not be distributed whole or in any part to third parties.
+ *
+ * Copyright ©2026 Analog Devices, Inc. All rights reserved.
+ */
+#ifndef __DIGIRADIO_IC_1_PARAM_H__
+#define __DIGIRADIO_IC_1_PARAM_H__
+
+
+/* Module Si4674 - Multiple Volume Control*/
+#define COUNT_SI4674 2
+#define DEVICE_SI4674 "IC1"
+#define ADDR_SI4674 0
+#define FIXPT_SI4674 0x00800000
+#define VALUE_SI4674 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_SI4674 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_SI4674_1 1
+#define FIXPT_SI4674_1 0x00800000
+#define VALUE_SI4674_1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_SI4674_1 SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module ESP32 - Multiple Volume Control*/
+#define COUNT_ESP32 2
+#define DEVICE_ESP32 "IC1"
+#define ADDR_ESP32 2
+#define FIXPT_ESP32 0x00800000
+#define VALUE_ESP32 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_ESP32 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_ESP32_1 3
+#define FIXPT_ESP32_1 0x00800000
+#define VALUE_ESP32_1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_ESP32_1 SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module St Mixer1 - Stereo Mixer*/
+#define COUNT_STMIXER1 2
+#define DEVICE_STMIXER1 "IC1"
+#define ADDR_STMIXER1_ST0_VOLUME 4
+#define FIXPT_STMIXER1_ST0_VOLUME 0x00800000
+#define VALUE_STMIXER1_ST0_VOLUME SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_STMIXER1_ST0_VOLUME SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_STMIXER1_ST1_VOLUME 5
+#define FIXPT_STMIXER1_ST1_VOLUME 0x00800000
+#define VALUE_STMIXER1_ST1_VOLUME SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_STMIXER1_ST1_VOLUME SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module Param EQ1 - Parametric EQ*/
+#define COUNT_PARAMEQ1 60
+#define DEVICE_PARAMEQ1 "IC1"
+#define ADDR_PARAMEQ1_ST0_B0 6
+#define FIXPT_PARAMEQ1_ST0_B0 0x007FC365
+#define VALUE_PARAMEQ1_ST0_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.998150511190452)
+#define TYPE_PARAMEQ1_ST0_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_B0 6
+#define FIXPT_PARAMEQ1_ST0_B0 0x007FC365
+#define VALUE_PARAMEQ1_ST0_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.998150511190452)
+#define TYPE_PARAMEQ1_ST0_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_B1 7
+#define FIXPT_PARAMEQ1_ST0_B1 0xFF007936
+#define VALUE_PARAMEQ1_ST0_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-1.9963010223809)
+#define TYPE_PARAMEQ1_ST0_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_B1 7
+#define FIXPT_PARAMEQ1_ST0_B1 0xFF007936
+#define VALUE_PARAMEQ1_ST0_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-1.9963010223809)
+#define TYPE_PARAMEQ1_ST0_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_B2 8
+#define FIXPT_PARAMEQ1_ST0_B2 0x007FC365
+#define VALUE_PARAMEQ1_ST0_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.998150511190452)
+#define TYPE_PARAMEQ1_ST0_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_B2 8
+#define FIXPT_PARAMEQ1_ST0_B2 0x007FC365
+#define VALUE_PARAMEQ1_ST0_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.998150511190452)
+#define TYPE_PARAMEQ1_ST0_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_A0 9
+#define FIXPT_PARAMEQ1_ST0_A0 0x00FF86AE
+#define VALUE_PARAMEQ1_ST0_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.99629760176912)
+#define TYPE_PARAMEQ1_ST0_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_A0 9
+#define FIXPT_PARAMEQ1_ST0_A0 0x00FF86AE
+#define VALUE_PARAMEQ1_ST0_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.99629760176912)
+#define TYPE_PARAMEQ1_ST0_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_A1 10
+#define FIXPT_PARAMEQ1_ST0_A1 0xFF807919
+#define VALUE_PARAMEQ1_ST0_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.996304442992686)
+#define TYPE_PARAMEQ1_ST0_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST0_A1 10
+#define FIXPT_PARAMEQ1_ST0_A1 0xFF807919
+#define VALUE_PARAMEQ1_ST0_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.996304442992686)
+#define TYPE_PARAMEQ1_ST0_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B0 11
+#define FIXPT_PARAMEQ1_ST1_B0 0x00800000
+#define VALUE_PARAMEQ1_ST1_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST1_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B0 11
+#define FIXPT_PARAMEQ1_ST1_B0 0x00800000
+#define VALUE_PARAMEQ1_ST1_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST1_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B1 12
+#define FIXPT_PARAMEQ1_ST1_B1 0x00000000
+#define VALUE_PARAMEQ1_ST1_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B1 12
+#define FIXPT_PARAMEQ1_ST1_B1 0x00000000
+#define VALUE_PARAMEQ1_ST1_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B2 13
+#define FIXPT_PARAMEQ1_ST1_B2 0x00000000
+#define VALUE_PARAMEQ1_ST1_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_B2 13
+#define FIXPT_PARAMEQ1_ST1_B2 0x00000000
+#define VALUE_PARAMEQ1_ST1_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_A0 14
+#define FIXPT_PARAMEQ1_ST1_A0 0x00000000
+#define VALUE_PARAMEQ1_ST1_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_A0 14
+#define FIXPT_PARAMEQ1_ST1_A0 0x00000000
+#define VALUE_PARAMEQ1_ST1_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_A1 15
+#define FIXPT_PARAMEQ1_ST1_A1 0x00000000
+#define VALUE_PARAMEQ1_ST1_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST1_A1 15
+#define FIXPT_PARAMEQ1_ST1_A1 0x00000000
+#define VALUE_PARAMEQ1_ST1_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST1_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B0 16
+#define FIXPT_PARAMEQ1_ST2_B0 0x00800000
+#define VALUE_PARAMEQ1_ST2_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST2_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B0 16
+#define FIXPT_PARAMEQ1_ST2_B0 0x00800000
+#define VALUE_PARAMEQ1_ST2_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST2_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B1 17
+#define FIXPT_PARAMEQ1_ST2_B1 0x00000000
+#define VALUE_PARAMEQ1_ST2_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B1 17
+#define FIXPT_PARAMEQ1_ST2_B1 0x00000000
+#define VALUE_PARAMEQ1_ST2_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B2 18
+#define FIXPT_PARAMEQ1_ST2_B2 0x00000000
+#define VALUE_PARAMEQ1_ST2_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_B2 18
+#define FIXPT_PARAMEQ1_ST2_B2 0x00000000
+#define VALUE_PARAMEQ1_ST2_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_A0 19
+#define FIXPT_PARAMEQ1_ST2_A0 0x00000000
+#define VALUE_PARAMEQ1_ST2_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_A0 19
+#define FIXPT_PARAMEQ1_ST2_A0 0x00000000
+#define VALUE_PARAMEQ1_ST2_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_A1 20
+#define FIXPT_PARAMEQ1_ST2_A1 0x00000000
+#define VALUE_PARAMEQ1_ST2_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST2_A1 20
+#define FIXPT_PARAMEQ1_ST2_A1 0x00000000
+#define VALUE_PARAMEQ1_ST2_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST2_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B0 21
+#define FIXPT_PARAMEQ1_ST3_B0 0x00800000
+#define VALUE_PARAMEQ1_ST3_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST3_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B0 21
+#define FIXPT_PARAMEQ1_ST3_B0 0x00800000
+#define VALUE_PARAMEQ1_ST3_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST3_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B1 22
+#define FIXPT_PARAMEQ1_ST3_B1 0x00000000
+#define VALUE_PARAMEQ1_ST3_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B1 22
+#define FIXPT_PARAMEQ1_ST3_B1 0x00000000
+#define VALUE_PARAMEQ1_ST3_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B2 23
+#define FIXPT_PARAMEQ1_ST3_B2 0x00000000
+#define VALUE_PARAMEQ1_ST3_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_B2 23
+#define FIXPT_PARAMEQ1_ST3_B2 0x00000000
+#define VALUE_PARAMEQ1_ST3_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_A0 24
+#define FIXPT_PARAMEQ1_ST3_A0 0x00000000
+#define VALUE_PARAMEQ1_ST3_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_A0 24
+#define FIXPT_PARAMEQ1_ST3_A0 0x00000000
+#define VALUE_PARAMEQ1_ST3_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_A1 25
+#define FIXPT_PARAMEQ1_ST3_A1 0x00000000
+#define VALUE_PARAMEQ1_ST3_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST3_A1 25
+#define FIXPT_PARAMEQ1_ST3_A1 0x00000000
+#define VALUE_PARAMEQ1_ST3_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST3_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B0 26
+#define FIXPT_PARAMEQ1_ST4_B0 0x00800000
+#define VALUE_PARAMEQ1_ST4_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST4_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B0 26
+#define FIXPT_PARAMEQ1_ST4_B0 0x00800000
+#define VALUE_PARAMEQ1_ST4_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST4_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B1 27
+#define FIXPT_PARAMEQ1_ST4_B1 0x00000000
+#define VALUE_PARAMEQ1_ST4_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B1 27
+#define FIXPT_PARAMEQ1_ST4_B1 0x00000000
+#define VALUE_PARAMEQ1_ST4_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B2 28
+#define FIXPT_PARAMEQ1_ST4_B2 0x00000000
+#define VALUE_PARAMEQ1_ST4_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_B2 28
+#define FIXPT_PARAMEQ1_ST4_B2 0x00000000
+#define VALUE_PARAMEQ1_ST4_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_A0 29
+#define FIXPT_PARAMEQ1_ST4_A0 0x00000000
+#define VALUE_PARAMEQ1_ST4_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_A0 29
+#define FIXPT_PARAMEQ1_ST4_A0 0x00000000
+#define VALUE_PARAMEQ1_ST4_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_A1 30
+#define FIXPT_PARAMEQ1_ST4_A1 0x00000000
+#define VALUE_PARAMEQ1_ST4_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST4_A1 30
+#define FIXPT_PARAMEQ1_ST4_A1 0x00000000
+#define VALUE_PARAMEQ1_ST4_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST4_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B0 31
+#define FIXPT_PARAMEQ1_ST5_B0 0x00800000
+#define VALUE_PARAMEQ1_ST5_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST5_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B0 31
+#define FIXPT_PARAMEQ1_ST5_B0 0x00800000
+#define VALUE_PARAMEQ1_ST5_B0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_PARAMEQ1_ST5_B0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B1 32
+#define FIXPT_PARAMEQ1_ST5_B1 0x00000000
+#define VALUE_PARAMEQ1_ST5_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B1 32
+#define FIXPT_PARAMEQ1_ST5_B1 0x00000000
+#define VALUE_PARAMEQ1_ST5_B1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_B1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B2 33
+#define FIXPT_PARAMEQ1_ST5_B2 0x00000000
+#define VALUE_PARAMEQ1_ST5_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_B2 33
+#define FIXPT_PARAMEQ1_ST5_B2 0x00000000
+#define VALUE_PARAMEQ1_ST5_B2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_B2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_A0 34
+#define FIXPT_PARAMEQ1_ST5_A0 0x00000000
+#define VALUE_PARAMEQ1_ST5_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_A0 34
+#define FIXPT_PARAMEQ1_ST5_A0 0x00000000
+#define VALUE_PARAMEQ1_ST5_A0 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_A0 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_A1 35
+#define FIXPT_PARAMEQ1_ST5_A1 0x00000000
+#define VALUE_PARAMEQ1_ST5_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_A1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_PARAMEQ1_ST5_A1 35
+#define FIXPT_PARAMEQ1_ST5_A1 0x00000000
+#define VALUE_PARAMEQ1_ST5_A1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0)
+#define TYPE_PARAMEQ1_ST5_A1 SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module Multiple 1 - Multiple Volume Control*/
+#define COUNT_MULTIPLE1 2
+#define DEVICE_MULTIPLE1 "IC1"
+#define ADDR_MULTIPLE1 36
+#define FIXPT_MULTIPLE1 0x00800000
+#define VALUE_MULTIPLE1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_MULTIPLE1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_MULTIPLE1_1 37
+#define FIXPT_MULTIPLE1_1 0x00800000
+#define VALUE_MULTIPLE1_1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_MULTIPLE1_1 SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module Limiter 1 - Limiter*/
+#define COUNT_LIMITER1 15
+#define DEVICE_LIMITER1 "IC1"
+#define ADDR_LIMITER1_S1 38
+#define FIXPT_LIMITER1_S1 0xFFFE2BE3
+#define VALUE_LIMITER1_S1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.01428571428571)
+#define TYPE_LIMITER1_S1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_INT1 39
+#define FIXPT_LIMITER1_INT1 0x0022BE2B
+#define VALUE_LIMITER1_INT1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.27142857142857)
+#define TYPE_LIMITER1_INT1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_S2 40
+#define FIXPT_LIMITER1_S2 0xFFEAAAAB
+#define VALUE_LIMITER1_S2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.16666666666667)
+#define TYPE_LIMITER1_S2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_INT2 41
+#define FIXPT_LIMITER1_INT2 0x006AAAAA
+#define VALUE_LIMITER1_INT2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.8333333333333)
+#define TYPE_LIMITER1_INT2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_S3 42
+#define FIXPT_LIMITER1_S3 0xFF9A69A7
+#define VALUE_LIMITER1_S3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.79365079365079)
+#define TYPE_LIMITER1_S3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_INT3 43
+#define FIXPT_LIMITER1_INT3 0x00FDF7DF
+#define VALUE_LIMITER1_INT3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.98412698412698)
+#define TYPE_LIMITER1_INT3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_S4 44
+#define FIXPT_LIMITER1_S4 0xF83C6C20
+#define VALUE_LIMITER1_S4 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-15.527950310559)
+#define TYPE_LIMITER1_S4 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_INT4 45
+#define FIXPT_LIMITER1_INT4 0x03F5AA22
+#define VALUE_LIMITER1_INT4 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(7.91925465838509)
+#define TYPE_LIMITER1_INT4 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_C1 46
+#define FIXPT_LIMITER1_C1 0x01800000
+#define VALUE_LIMITER1_C1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(3)
+#define TYPE_LIMITER1_C1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_C2 47
+#define FIXPT_LIMITER1_C2 0x01000000
+#define VALUE_LIMITER1_C2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(2)
+#define TYPE_LIMITER1_C2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_C3 48
+#define FIXPT_LIMITER1_C3 0x00333333
+#define VALUE_LIMITER1_C3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.4)
+#define TYPE_LIMITER1_C3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_THRESHOLD 49
+#define FIXPT_LIMITER1_THRESHOLD 0x00800000
+#define VALUE_LIMITER1_THRESHOLD SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_LIMITER1_THRESHOLD SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_RMS 50
+#define FIXPT_LIMITER1_RMS 0x000007DC
+#define VALUE_LIMITER1_RMS SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.000239881380791562)
+#define TYPE_LIMITER1_RMS SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_DECAY 51
+#define FIXPT_LIMITER1_DECAY 0x00000800
+#define VALUE_LIMITER1_DECAY SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.000244140625)
+#define TYPE_LIMITER1_DECAY SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER1_DECAYCOMPLEMENT 52
+#define FIXPT_LIMITER1_DECAYCOMPLEMENT 0x007FF000
+#define VALUE_LIMITER1_DECAYCOMPLEMENT SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.99951171875)
+#define TYPE_LIMITER1_DECAYCOMPLEMENT SIGMASTUDIOTYPE_FIXPOINT
+
+/* Module Limiter 2 - Limiter*/
+#define COUNT_LIMITER2 15
+#define DEVICE_LIMITER2 "IC1"
+#define ADDR_LIMITER2_S1 53
+#define FIXPT_LIMITER2_S1 0xFFFE2BE3
+#define VALUE_LIMITER2_S1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.01428571428571)
+#define TYPE_LIMITER2_S1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_INT1 54
+#define FIXPT_LIMITER2_INT1 0x0022BE2B
+#define VALUE_LIMITER2_INT1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.27142857142857)
+#define TYPE_LIMITER2_INT1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_S2 55
+#define FIXPT_LIMITER2_S2 0xFFEAAAAB
+#define VALUE_LIMITER2_S2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.16666666666667)
+#define TYPE_LIMITER2_S2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_INT2 56
+#define FIXPT_LIMITER2_INT2 0x006AAAAA
+#define VALUE_LIMITER2_INT2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.8333333333333)
+#define TYPE_LIMITER2_INT2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_S3 57
+#define FIXPT_LIMITER2_S3 0xFF9A69A7
+#define VALUE_LIMITER2_S3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-0.79365079365079)
+#define TYPE_LIMITER2_S3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_INT3 58
+#define FIXPT_LIMITER2_INT3 0x00FDF7DF
+#define VALUE_LIMITER2_INT3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1.98412698412698)
+#define TYPE_LIMITER2_INT3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_S4 59
+#define FIXPT_LIMITER2_S4 0xF83C6C20
+#define VALUE_LIMITER2_S4 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(-15.527950310559)
+#define TYPE_LIMITER2_S4 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_INT4 60
+#define FIXPT_LIMITER2_INT4 0x03F5AA22
+#define VALUE_LIMITER2_INT4 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(7.91925465838509)
+#define TYPE_LIMITER2_INT4 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_C1 61
+#define FIXPT_LIMITER2_C1 0x01800000
+#define VALUE_LIMITER2_C1 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(3)
+#define TYPE_LIMITER2_C1 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_C2 62
+#define FIXPT_LIMITER2_C2 0x01000000
+#define VALUE_LIMITER2_C2 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(2)
+#define TYPE_LIMITER2_C2 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_C3 63
+#define FIXPT_LIMITER2_C3 0x00333333
+#define VALUE_LIMITER2_C3 SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.4)
+#define TYPE_LIMITER2_C3 SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_THRESHOLD 64
+#define FIXPT_LIMITER2_THRESHOLD 0x00800000
+#define VALUE_LIMITER2_THRESHOLD SIGMASTUDIOTYPE_FIXPOINT_CONVERT(1)
+#define TYPE_LIMITER2_THRESHOLD SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_RMS 65
+#define FIXPT_LIMITER2_RMS 0x000007DC
+#define VALUE_LIMITER2_RMS SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.000239881380791562)
+#define TYPE_LIMITER2_RMS SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_DECAY 66
+#define FIXPT_LIMITER2_DECAY 0x00000800
+#define VALUE_LIMITER2_DECAY SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.000244140625)
+#define TYPE_LIMITER2_DECAY SIGMASTUDIOTYPE_FIXPOINT
+#define ADDR_LIMITER2_DECAYCOMPLEMENT 67
+#define FIXPT_LIMITER2_DECAYCOMPLEMENT 0x007FF000
+#define VALUE_LIMITER2_DECAYCOMPLEMENT SIGMASTUDIOTYPE_FIXPOINT_CONVERT(0.99951171875)
+#define TYPE_LIMITER2_DECAYCOMPLEMENT SIGMASTUDIOTYPE_FIXPOINT
+
+#endif
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_REG.h b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_REG.h
new file mode 100644
index 0000000..0d0016b
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio_IC_1_REG.h
@@ -0,0 +1,565 @@
+/*
+ * File: C:\Users\mikbi\Documents\Allegati\Desktop\DigiRadio\DigiRadio_IC_1_REG.h
+ *
+ * Created: Monday, July 6, 2026 2:41:28 PM
+ * Description: DigiRadio:IC 1 control register definitions.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This software may only be used to program products purchased from
+ * Analog Devices for incorporation by you into audio products that
+ * are intended for resale to audio product end users. This software
+ * may not be distributed whole or in any part to third parties.
+ *
+ * Copyright ©2026 Analog Devices, Inc. All rights reserved.
+ */
+#ifndef __DIGIRADIO_IC_1_REG_H__
+#define __DIGIRADIO_IC_1_REG_H__
+
+
+/* InterfaceRegister0 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER0_IC_1_ADDR 0x800
+#define REG_INTERFACEREGISTER0_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER0_IC_1_VALUE 0x0
+
+/* InterfaceRegister1 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER1_IC_1_ADDR 0x801
+#define REG_INTERFACEREGISTER1_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER1_IC_1_VALUE 0x0
+
+/* InterfaceRegister2 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER2_IC_1_ADDR 0x802
+#define REG_INTERFACEREGISTER2_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER2_IC_1_VALUE 0x0
+
+/* InterfaceRegister3 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER3_IC_1_ADDR 0x803
+#define REG_INTERFACEREGISTER3_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER3_IC_1_VALUE 0x0
+
+/* InterfaceRegister4 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER4_IC_1_ADDR 0x804
+#define REG_INTERFACEREGISTER4_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER4_IC_1_VALUE 0x0
+
+/* InterfaceRegister5 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER5_IC_1_ADDR 0x805
+#define REG_INTERFACEREGISTER5_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER5_IC_1_VALUE 0x0
+
+/* InterfaceRegister6 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER6_IC_1_ADDR 0x806
+#define REG_INTERFACEREGISTER6_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER6_IC_1_VALUE 0x0
+
+/* InterfaceRegister7 - Registers (IC 1) */
+#define REG_INTERFACEREGISTER7_IC_1_ADDR 0x807
+#define REG_INTERFACEREGISTER7_IC_1_BYTE 4
+#define REG_INTERFACEREGISTER7_IC_1_VALUE 0x0
+
+/* GpioAllRegister - Registers (IC 1) */
+#define REG_GPIOALLREGISTER_IC_1_ADDR 0x808
+#define REG_GPIOALLREGISTER_IC_1_BYTE 2
+#define REG_GPIOALLREGISTER_IC_1_VALUE 0x0
+
+/* Adc0 - Registers (IC 1) */
+#define REG_ADC0_IC_1_ADDR 0x809
+#define REG_ADC0_IC_1_BYTE 1
+#define REG_ADC0_IC_1_VALUE 0x0
+
+/* Adc1 - Registers (IC 1) */
+#define REG_ADC1_IC_1_ADDR 0x80A
+#define REG_ADC1_IC_1_BYTE 1
+#define REG_ADC1_IC_1_VALUE 0x0
+
+/* Adc2 - Registers (IC 1) */
+#define REG_ADC2_IC_1_ADDR 0x80B
+#define REG_ADC2_IC_1_BYTE 1
+#define REG_ADC2_IC_1_VALUE 0x0
+
+/* Adc3 - Registers (IC 1) */
+#define REG_ADC3_IC_1_ADDR 0x80C
+#define REG_ADC3_IC_1_BYTE 1
+#define REG_ADC3_IC_1_VALUE 0x0
+
+/* CoreRegister - Registers (IC 1) */
+#define REG_COREREGISTER_IC_1_ADDR 0x81C
+#define REG_COREREGISTER_IC_1_BYTE 2
+#define REG_COREREGISTER_IC_1_VALUE 0x1C
+
+/* RAMRegister - Registers (IC 1) */
+#define REG_RAMREGISTER_IC_1_ADDR 0x81D
+#define REG_RAMREGISTER_IC_1_BYTE 1
+#define REG_RAMREGISTER_IC_1_VALUE 0x8
+
+/* SerialOutRegister1 - Registers (IC 1) */
+#define REG_SERIALOUTREGISTER1_IC_1_ADDR 0x81E
+#define REG_SERIALOUTREGISTER1_IC_1_BYTE 2
+#define REG_SERIALOUTREGISTER1_IC_1_VALUE 0x800
+
+/* SerialInputRegister - Registers (IC 1) */
+#define REG_SERIALINPUTREGISTER_IC_1_ADDR 0x81F
+#define REG_SERIALINPUTREGISTER_IC_1_BYTE 1
+#define REG_SERIALINPUTREGISTER_IC_1_VALUE 0x0
+
+/* MpCfg0 - Registers (IC 1) */
+#define REG_MPCFG0_IC_1_ADDR 0x820
+#define REG_MPCFG0_IC_1_BYTE 3
+#define REG_MPCFG0_IC_1_VALUE 0x440044
+
+/* MpCfg1 - Registers (IC 1) */
+#define REG_MPCFG1_IC_1_ADDR 0x821
+#define REG_MPCFG1_IC_1_BYTE 3
+#define REG_MPCFG1_IC_1_VALUE 0x440004
+
+/* AnalogPowerDownRegister - Registers (IC 1) */
+#define REG_ANALOGPOWERDOWNREGISTER_IC_1_ADDR 0x822
+#define REG_ANALOGPOWERDOWNREGISTER_IC_1_BYTE 2
+#define REG_ANALOGPOWERDOWNREGISTER_IC_1_VALUE 0x0
+
+/* TestRegister - Registers (IC 1) */
+#define REG_TESTREGISTER_IC_1_ADDR 0x823
+#define REG_TESTREGISTER_IC_1_BYTE 2
+#define REG_TESTREGISTER_IC_1_VALUE 0x0
+
+/* AnalogInterfaceRegister0 - Registers (IC 1) */
+#define REG_ANALOGINTERFACEREGISTER0_IC_1_ADDR 0x824
+#define REG_ANALOGINTERFACEREGISTER0_IC_1_BYTE 2
+#define REG_ANALOGINTERFACEREGISTER0_IC_1_VALUE 0x8000
+
+/* AnalogInterfaceRegister1 - Registers (IC 1) */
+#define REG_ANALOGINTERFACEREGISTER1_IC_1_ADDR 0x825
+#define REG_ANALOGINTERFACEREGISTER1_IC_1_BYTE 2
+#define REG_ANALOGINTERFACEREGISTER1_IC_1_VALUE 0x0
+
+/* AnalogInterfaceRegister2 - Registers (IC 1) */
+#define REG_ANALOGINTERFACEREGISTER2_IC_1_ADDR 0x826
+#define REG_ANALOGINTERFACEREGISTER2_IC_1_BYTE 2
+#define REG_ANALOGINTERFACEREGISTER2_IC_1_VALUE 0x0
+
+/* AnalogInterfaceRegister3 - Registers (IC 1) */
+#define REG_ANALOGINTERFACEREGISTER3_IC_1_ADDR 0x827
+#define REG_ANALOGINTERFACEREGISTER3_IC_1_BYTE 2
+#define REG_ANALOGINTERFACEREGISTER3_IC_1_VALUE 0x1
+
+
+/*
+ *
+ * Control register's field descriptions
+ *
+ */
+
+/* InterfaceRegister0 (IC 1) */
+#define R0_INTERFACEREGISTER0_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R0_INTERFACEREGISTER0_IC_1_MASK 0xFFFFFFFF
+#define R0_INTERFACEREGISTER0_IC_1_SHIFT 0
+
+/* InterfaceRegister1 (IC 1) */
+#define R1_INTERFACEREGISTER1_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R1_INTERFACEREGISTER1_IC_1_MASK 0xFFFFFFFF
+#define R1_INTERFACEREGISTER1_IC_1_SHIFT 0
+
+/* InterfaceRegister2 (IC 1) */
+#define R2_INTERFACEREGISTER2_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R2_INTERFACEREGISTER2_IC_1_MASK 0xFFFFFFFF
+#define R2_INTERFACEREGISTER2_IC_1_SHIFT 0
+
+/* InterfaceRegister3 (IC 1) */
+#define R3_INTERFACEREGISTER3_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R3_INTERFACEREGISTER3_IC_1_MASK 0xFFFFFFFF
+#define R3_INTERFACEREGISTER3_IC_1_SHIFT 0
+
+/* InterfaceRegister4 (IC 1) */
+#define R4_INTERFACEREGISTER4_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R4_INTERFACEREGISTER4_IC_1_MASK 0xFFFFFFFF
+#define R4_INTERFACEREGISTER4_IC_1_SHIFT 0
+
+/* InterfaceRegister5 (IC 1) */
+#define R5_INTERFACEREGISTER5_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R5_INTERFACEREGISTER5_IC_1_MASK 0xFFFFFFFF
+#define R5_INTERFACEREGISTER5_IC_1_SHIFT 0
+
+/* InterfaceRegister6 (IC 1) */
+#define R6_INTERFACEREGISTER6_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R6_INTERFACEREGISTER6_IC_1_MASK 0xFFFFFFFF
+#define R6_INTERFACEREGISTER6_IC_1_SHIFT 0
+
+/* InterfaceRegister7 (IC 1) */
+#define R7_INTERFACEREGISTER7_IC_1 0x00000000 /* 00000000000000000000000000000000b [31:0] */
+#define R7_INTERFACEREGISTER7_IC_1_MASK 0xFFFFFFFF
+#define R7_INTERFACEREGISTER7_IC_1_SHIFT 0
+
+/* GpioAllRegister (IC 1) */
+#define R8_PIN0_IC_1 0x0 /* 0b [0] */
+#define R8_PIN1_IC_1 0x0 /* 0b [1] */
+#define R8_PIN2_IC_1 0x0 /* 0b [2] */
+#define R8_PIN3_IC_1 0x0 /* 0b [3] */
+#define R8_PIN4_IC_1 0x0 /* 0b [4] */
+#define R8_PIN5_IC_1 0x0 /* 0b [5] */
+#define R8_PIN6_IC_1 0x0 /* 0b [6] */
+#define R8_PIN7_IC_1 0x0 /* 0b [7] */
+#define R8_PIN8_IC_1 0x0 /* 0b [8] */
+#define R8_PIN9_IC_1 0x0 /* 0b [9] */
+#define R8_PIN10_IC_1 0x0 /* 0b [10] */
+#define R8_PIN11_IC_1 0x0 /* 0b [11] */
+#define R8_PIN0_IC_1_MASK 0x1
+#define R8_PIN0_IC_1_SHIFT 0
+#define R8_PIN1_IC_1_MASK 0x2
+#define R8_PIN1_IC_1_SHIFT 1
+#define R8_PIN2_IC_1_MASK 0x4
+#define R8_PIN2_IC_1_SHIFT 2
+#define R8_PIN3_IC_1_MASK 0x8
+#define R8_PIN3_IC_1_SHIFT 3
+#define R8_PIN4_IC_1_MASK 0x10
+#define R8_PIN4_IC_1_SHIFT 4
+#define R8_PIN5_IC_1_MASK 0x20
+#define R8_PIN5_IC_1_SHIFT 5
+#define R8_PIN6_IC_1_MASK 0x40
+#define R8_PIN6_IC_1_SHIFT 6
+#define R8_PIN7_IC_1_MASK 0x80
+#define R8_PIN7_IC_1_SHIFT 7
+#define R8_PIN8_IC_1_MASK 0x100
+#define R8_PIN8_IC_1_SHIFT 8
+#define R8_PIN9_IC_1_MASK 0x200
+#define R8_PIN9_IC_1_SHIFT 9
+#define R8_PIN10_IC_1_MASK 0x400
+#define R8_PIN10_IC_1_SHIFT 10
+#define R8_PIN11_IC_1_MASK 0x800
+#define R8_PIN11_IC_1_SHIFT 11
+
+/* Adc0 (IC 1) */
+#define R9_ADC0_IC_1 0x00 /* 00000000b [7:0] */
+#define R9_ADC0_IC_1_MASK 0xFF
+#define R9_ADC0_IC_1_SHIFT 0
+
+/* Adc1 (IC 1) */
+#define R10_ADC1_IC_1 0x00 /* 00000000b [7:0] */
+#define R10_ADC1_IC_1_MASK 0xFF
+#define R10_ADC1_IC_1_SHIFT 0
+
+/* Adc2 (IC 1) */
+#define R11_ADC2_IC_1 0x00 /* 00000000b [7:0] */
+#define R11_ADC2_IC_1_MASK 0xFF
+#define R11_ADC2_IC_1_SHIFT 0
+
+/* Adc3 (IC 1) */
+#define R12_ADC3_IC_1 0x00 /* 00000000b [7:0] */
+#define R12_ADC3_IC_1_MASK 0xFF
+#define R12_ADC3_IC_1_SHIFT 0
+
+/* CoreRegister (IC 1) */
+#define R13_PROGRAM_LENGTH_IC_1 0x0 /* 00b [1:0] */
+#define R13_REGISTER_ZERO_IC_1 0x1 /* 1b [2] */
+#define R13_MUTE_DAC_IC_1 0x1 /* 1b [3] */
+#define R13_MUTE_ADC_IC_1 0x1 /* 1b [4] */
+#define R13_SAFELOAD_IC_1 0x0 /* 0b [5] */
+#define R13_WRITESPI_INTERFACEREG_IC_1 0x0 /* 0b [6] */
+#define R13_WRITESPI_GPIO_IC_1 0x0 /* 0b [7] */
+#define R13_WRITESPI_ADC_IC_1 0x0 /* 0b [8] */
+#define R13_MUTE_SERIALIN_IC_1 0x0 /* 0b [9] */
+#define R13_GPIO_DEBOUNCE_IC_1 0x0 /* 00b [11:10] */
+#define R13_EXTMEM_SPEED_IC_1 0x0 /* 00b [13:12] */
+#define R13_PROGRAM_LENGTH_IC_1_MASK 0x3
+#define R13_PROGRAM_LENGTH_IC_1_SHIFT 0
+#define R13_REGISTER_ZERO_IC_1_MASK 0x4
+#define R13_REGISTER_ZERO_IC_1_SHIFT 2
+#define R13_MUTE_DAC_IC_1_MASK 0x8
+#define R13_MUTE_DAC_IC_1_SHIFT 3
+#define R13_MUTE_ADC_IC_1_MASK 0x10
+#define R13_MUTE_ADC_IC_1_SHIFT 4
+#define R13_SAFELOAD_IC_1_MASK 0x20
+#define R13_SAFELOAD_IC_1_SHIFT 5
+#define R13_WRITESPI_INTERFACEREG_IC_1_MASK 0x40
+#define R13_WRITESPI_INTERFACEREG_IC_1_SHIFT 6
+#define R13_WRITESPI_GPIO_IC_1_MASK 0x80
+#define R13_WRITESPI_GPIO_IC_1_SHIFT 7
+#define R13_WRITESPI_ADC_IC_1_MASK 0x100
+#define R13_WRITESPI_ADC_IC_1_SHIFT 8
+#define R13_MUTE_SERIALIN_IC_1_MASK 0x200
+#define R13_MUTE_SERIALIN_IC_1_SHIFT 9
+#define R13_GPIO_DEBOUNCE_IC_1_MASK 0xC00
+#define R13_GPIO_DEBOUNCE_IC_1_SHIFT 10
+#define R13_EXTMEM_SPEED_IC_1_MASK 0x3000
+#define R13_EXTMEM_SPEED_IC_1_SHIFT 12
+
+/* RAMRegister (IC 1) */
+#define R14_RAM_MODULO_IC_1 0x8 /* 1000b [3:0] */
+#define R14_RAM_MODULO_IC_1_MASK 0xF
+#define R14_RAM_MODULO_IC_1_SHIFT 0
+
+/* SerialOutRegister1 (IC 1) */
+#define R15_WORDLENGTH_IC_1 0x0 /* 00b [1:0] */
+#define R15_MSB_POS_IC_1 0x0 /* 000b [4:2] */
+#define R15_TDM_IC_1 0x0 /* 0b [5] */
+#define R15_FRAMESYNC_TYPE_IC_1 0x0 /* 0b [6] */
+#define R15_LRCLK_FREQ_IC_1 0x0 /* 00b [8:7] */
+#define R15_BCLK_FREQ_IC_1 0x0 /* 00b [10:9] */
+#define R15_MASTER_SLAVE_IC_1 0x1 /* 1b [11] */
+#define R15_BCLK_POLARITY_IC_1 0x0 /* 0b [12] */
+#define R15_LRCLK_POLARITY_IC_1 0x0 /* 0b [13] */
+#define R15_WORDLENGTH_IC_1_MASK 0x3
+#define R15_WORDLENGTH_IC_1_SHIFT 0
+#define R15_MSB_POS_IC_1_MASK 0x1C
+#define R15_MSB_POS_IC_1_SHIFT 2
+#define R15_TDM_IC_1_MASK 0x20
+#define R15_TDM_IC_1_SHIFT 5
+#define R15_FRAMESYNC_TYPE_IC_1_MASK 0x40
+#define R15_FRAMESYNC_TYPE_IC_1_SHIFT 6
+#define R15_LRCLK_FREQ_IC_1_MASK 0x180
+#define R15_LRCLK_FREQ_IC_1_SHIFT 7
+#define R15_BCLK_FREQ_IC_1_MASK 0x600
+#define R15_BCLK_FREQ_IC_1_SHIFT 9
+#define R15_MASTER_SLAVE_IC_1_MASK 0x800
+#define R15_MASTER_SLAVE_IC_1_SHIFT 11
+#define R15_BCLK_POLARITY_IC_1_MASK 0x1000
+#define R15_BCLK_POLARITY_IC_1_SHIFT 12
+#define R15_LRCLK_POLARITY_IC_1_MASK 0x2000
+#define R15_LRCLK_POLARITY_IC_1_SHIFT 13
+
+/* SerialInputRegister (IC 1) */
+#define R16_INPUT_MODE_IC_1 0x0 /* 000b [2:0] */
+#define R16_BCLK_POLARITY_IC_1 0x0 /* 0b [3] */
+#define R16_LRCLK_POLARITY_IC_1 0x0 /* 0b [4] */
+#define R16_INPUT_MODE_IC_1_MASK 0x7
+#define R16_INPUT_MODE_IC_1_SHIFT 0
+#define R16_BCLK_POLARITY_IC_1_MASK 0x8
+#define R16_BCLK_POLARITY_IC_1_SHIFT 3
+#define R16_LRCLK_POLARITY_IC_1_MASK 0x10
+#define R16_LRCLK_POLARITY_IC_1_SHIFT 4
+
+/* MpCfg0 (IC 1) */
+#define R17_MFSELECT0_IC_1 0x4 /* 100b [2:0] */
+#define R17_MFINVERT0_IC_1 0x0 /* 0b [3] */
+#define R17_MFSELECT1_IC_1 0x4 /* 100b [6:4] */
+#define R17_MFINVERT1_IC_1 0x0 /* 0b [7] */
+#define R17_MFSELECT2_IC_1 0x0 /* 000b [10:8] */
+#define R17_MFINVERT2_IC_1 0x0 /* 0b [11] */
+#define R17_MFSELECT3_IC_1 0x0 /* 000b [14:12] */
+#define R17_MFINVERT3_IC_1 0x0 /* 0b [15] */
+#define R17_MFSELECT4_IC_1 0x4 /* 100b [18:16] */
+#define R17_MFINVERT4_IC_1 0x0 /* 0b [19] */
+#define R17_MFSELECT5_IC_1 0x4 /* 100b [22:20] */
+#define R17_MFINVERT5_IC_1 0x0 /* 0b [23] */
+#define R17_MFSELECT0_IC_1_MASK 0x7
+#define R17_MFSELECT0_IC_1_SHIFT 0
+#define R17_MFINVERT0_IC_1_MASK 0x8
+#define R17_MFINVERT0_IC_1_SHIFT 3
+#define R17_MFSELECT1_IC_1_MASK 0x70
+#define R17_MFSELECT1_IC_1_SHIFT 4
+#define R17_MFINVERT1_IC_1_MASK 0x80
+#define R17_MFINVERT1_IC_1_SHIFT 7
+#define R17_MFSELECT2_IC_1_MASK 0x700
+#define R17_MFSELECT2_IC_1_SHIFT 8
+#define R17_MFINVERT2_IC_1_MASK 0x800
+#define R17_MFINVERT2_IC_1_SHIFT 11
+#define R17_MFSELECT3_IC_1_MASK 0x7000
+#define R17_MFSELECT3_IC_1_SHIFT 12
+#define R17_MFINVERT3_IC_1_MASK 0x8000
+#define R17_MFINVERT3_IC_1_SHIFT 15
+#define R17_MFSELECT4_IC_1_MASK 0x70000
+#define R17_MFSELECT4_IC_1_SHIFT 16
+#define R17_MFINVERT4_IC_1_MASK 0x80000
+#define R17_MFINVERT4_IC_1_SHIFT 19
+#define R17_MFSELECT5_IC_1_MASK 0x700000
+#define R17_MFSELECT5_IC_1_SHIFT 20
+#define R17_MFINVERT5_IC_1_MASK 0x800000
+#define R17_MFINVERT5_IC_1_SHIFT 23
+
+/* MpCfg1 (IC 1) */
+#define R18_MFSELECT6_IC_1 0x4 /* 100b [2:0] */
+#define R18_MFINVERT6_IC_1 0x0 /* 0b [3] */
+#define R18_MFSELECT7_IC_1 0x0 /* 000b [6:4] */
+#define R18_MFINVERT7_IC_1 0x0 /* 0b [7] */
+#define R18_MFSELECT8_IC_1 0x0 /* 000b [10:8] */
+#define R18_MFINVERT8_IC_1 0x0 /* 0b [11] */
+#define R18_MFSELECT9_IC_1 0x0 /* 000b [14:12] */
+#define R18_MFINVERT9_IC_1 0x0 /* 0b [15] */
+#define R18_MFSELECT10_IC_1 0x4 /* 100b [18:16] */
+#define R18_MFINVERT10_IC_1 0x0 /* 0b [19] */
+#define R18_MFSELECT11_IC_1 0x4 /* 100b [22:20] */
+#define R18_MFINVERT11_IC_1 0x0 /* 0b [23] */
+#define R18_MFSELECT6_IC_1_MASK 0x7
+#define R18_MFSELECT6_IC_1_SHIFT 0
+#define R18_MFINVERT6_IC_1_MASK 0x8
+#define R18_MFINVERT6_IC_1_SHIFT 3
+#define R18_MFSELECT7_IC_1_MASK 0x70
+#define R18_MFSELECT7_IC_1_SHIFT 4
+#define R18_MFINVERT7_IC_1_MASK 0x80
+#define R18_MFINVERT7_IC_1_SHIFT 7
+#define R18_MFSELECT8_IC_1_MASK 0x700
+#define R18_MFSELECT8_IC_1_SHIFT 8
+#define R18_MFINVERT8_IC_1_MASK 0x800
+#define R18_MFINVERT8_IC_1_SHIFT 11
+#define R18_MFSELECT9_IC_1_MASK 0x7000
+#define R18_MFSELECT9_IC_1_SHIFT 12
+#define R18_MFINVERT9_IC_1_MASK 0x8000
+#define R18_MFINVERT9_IC_1_SHIFT 15
+#define R18_MFSELECT10_IC_1_MASK 0x70000
+#define R18_MFSELECT10_IC_1_SHIFT 16
+#define R18_MFINVERT10_IC_1_MASK 0x80000
+#define R18_MFINVERT10_IC_1_SHIFT 19
+#define R18_MFSELECT11_IC_1_MASK 0x700000
+#define R18_MFSELECT11_IC_1_SHIFT 20
+#define R18_MFINVERT11_IC_1_MASK 0x800000
+#define R18_MFINVERT11_IC_1_SHIFT 23
+
+/* AnalogPowerDownRegister (IC 1) */
+#define R19_DAC3_POWERDOWN_IC_1 0x0 /* 0b [0] */
+#define R19_DAC2_POWERDOWN_IC_1 0x0 /* 0b [1] */
+#define R19_DAC1_POWERDOWN_IC_1 0x0 /* 0b [2] */
+#define R19_DAC0_POWERDOWN_IC_1 0x0 /* 0b [3] */
+#define R19_DACS_RESET_IC_1 0x0 /* 0b [4] */
+#define R19_REF_CORE_POWERDOWN_IC_1 0x0 /* 0b [5] */
+#define R19_REF_BUF_POWERDOWN_IC_1 0x0 /* 0b [6] */
+#define R19_ADCS_POWERDOWN_IC_1 0x0 /* 0b [7] */
+#define R19_AUX_ADC_FILTER_IC_1 0x0 /* 000b [10:8] */
+#define R19_DAC3_POWERDOWN_IC_1_MASK 0x1
+#define R19_DAC3_POWERDOWN_IC_1_SHIFT 0
+#define R19_DAC2_POWERDOWN_IC_1_MASK 0x2
+#define R19_DAC2_POWERDOWN_IC_1_SHIFT 1
+#define R19_DAC1_POWERDOWN_IC_1_MASK 0x4
+#define R19_DAC1_POWERDOWN_IC_1_SHIFT 2
+#define R19_DAC0_POWERDOWN_IC_1_MASK 0x8
+#define R19_DAC0_POWERDOWN_IC_1_SHIFT 3
+#define R19_DACS_RESET_IC_1_MASK 0x10
+#define R19_DACS_RESET_IC_1_SHIFT 4
+#define R19_REF_CORE_POWERDOWN_IC_1_MASK 0x20
+#define R19_REF_CORE_POWERDOWN_IC_1_SHIFT 5
+#define R19_REF_BUF_POWERDOWN_IC_1_MASK 0x40
+#define R19_REF_BUF_POWERDOWN_IC_1_SHIFT 6
+#define R19_ADCS_POWERDOWN_IC_1_MASK 0x80
+#define R19_ADCS_POWERDOWN_IC_1_SHIFT 7
+#define R19_AUX_ADC_FILTER_IC_1_MASK 0x700
+#define R19_AUX_ADC_FILTER_IC_1_SHIFT 8
+
+/* TestRegister (IC 1) */
+#define R20_ADCCLOCKDELAY_IC_1 0x0 /* 000b [2:0] */
+#define R20_ADCSYNCFILTL_SDATAA_D_IC_1 0x0 /* 0b [3] */
+#define R20_ADCSYNCFILTR_SDATAA_D_IC_1 0x0 /* 0b [4] */
+#define R20_SPIKEFILT_SEROUT0_1_IC_1 0x0 /* 0b [5] */
+#define R20_UNUSED_IC_1 0x00 /* 0000000000b [15:6] */
+#define R20_ADCCLOCKDELAY_IC_1_MASK 0x7
+#define R20_ADCCLOCKDELAY_IC_1_SHIFT 0
+#define R20_ADCSYNCFILTL_SDATAA_D_IC_1_MASK 0x8
+#define R20_ADCSYNCFILTL_SDATAA_D_IC_1_SHIFT 3
+#define R20_ADCSYNCFILTR_SDATAA_D_IC_1_MASK 0x10
+#define R20_ADCSYNCFILTR_SDATAA_D_IC_1_SHIFT 4
+#define R20_SPIKEFILT_SEROUT0_1_IC_1_MASK 0x20
+#define R20_SPIKEFILT_SEROUT0_1_IC_1_SHIFT 5
+#define R20_UNUSED_IC_1_MASK 0xFFC0
+#define R20_UNUSED_IC_1_SHIFT 6
+
+/* AnalogInterfaceRegister0 (IC 1) */
+#define R21_CHOP_ENB_INT_AMP_IC_1 0x0 /* 0b [0] */
+#define R21_PD_INT_AMP_IC_1 0x0 /* 0b [1] */
+#define R21_ADC_NON_OVERLAP_ADJ_IC_1 0x0 /* 0b [2] */
+#define R21_ADC_I_SEL_IC_1 0x0 /* 00000b [7:3] */
+#define R21_ADC_CLK_ADJ_IC_1 0x0 /* 000b [10:8] */
+#define R21_LCHOP_PMOS_CTRL_IC_1 0x0 /* 00b [12:11] */
+#define R21_LCHOP_AMP_ENB_IC_1 0x0 /* 0b [13] */
+#define R21_LSCRAM_ENB_IC_1 0x0 /* 0b [14] */
+#define R21_AUX_ADC_EN_IC_1 0x1 /* 1b [15] */
+#define R21_CHOP_ENB_INT_AMP_IC_1_MASK 0x1
+#define R21_CHOP_ENB_INT_AMP_IC_1_SHIFT 0
+#define R21_PD_INT_AMP_IC_1_MASK 0x2
+#define R21_PD_INT_AMP_IC_1_SHIFT 1
+#define R21_ADC_NON_OVERLAP_ADJ_IC_1_MASK 0x4
+#define R21_ADC_NON_OVERLAP_ADJ_IC_1_SHIFT 2
+#define R21_ADC_I_SEL_IC_1_MASK 0xF8
+#define R21_ADC_I_SEL_IC_1_SHIFT 3
+#define R21_ADC_CLK_ADJ_IC_1_MASK 0x700
+#define R21_ADC_CLK_ADJ_IC_1_SHIFT 8
+#define R21_LCHOP_PMOS_CTRL_IC_1_MASK 0x1800
+#define R21_LCHOP_PMOS_CTRL_IC_1_SHIFT 11
+#define R21_LCHOP_AMP_ENB_IC_1_MASK 0x2000
+#define R21_LCHOP_AMP_ENB_IC_1_SHIFT 13
+#define R21_LSCRAM_ENB_IC_1_MASK 0x4000
+#define R21_LSCRAM_ENB_IC_1_SHIFT 14
+#define R21_AUX_ADC_EN_IC_1_MASK 0x8000
+#define R21_AUX_ADC_EN_IC_1_SHIFT 15
+
+/* AnalogInterfaceRegister1 (IC 1) */
+#define R22_RSWC_DAC_CTRL_IC_1 0x0 /* 00b [1:0] */
+#define R22_RCLK_SEL_PMOS_IC_1 0x0 /* 00b [3:2] */
+#define R22_RCLK_SEL_AMP_IC_1 0x0 /* 00b [5:4] */
+#define R22_RCHOP_PMOS_CTRL_IC_1 0x0 /* 00b [7:6] */
+#define R22_LCLK_SEL_PMOS_IC_1 0x0 /* 00b [9:8] */
+#define R22_LSWC_DAC_CTRL_IC_1 0x0 /* 00b [11:10] */
+#define R22_CLK_SEL_INT_AMP_IC_1 0x0 /* 00b [13:12] */
+#define R22_RSWC_DAC_CTRL_IC_1_MASK 0x3
+#define R22_RSWC_DAC_CTRL_IC_1_SHIFT 0
+#define R22_RCLK_SEL_PMOS_IC_1_MASK 0xC
+#define R22_RCLK_SEL_PMOS_IC_1_SHIFT 2
+#define R22_RCLK_SEL_AMP_IC_1_MASK 0x30
+#define R22_RCLK_SEL_AMP_IC_1_SHIFT 4
+#define R22_RCHOP_PMOS_CTRL_IC_1_MASK 0xC0
+#define R22_RCHOP_PMOS_CTRL_IC_1_SHIFT 6
+#define R22_LCLK_SEL_PMOS_IC_1_MASK 0x300
+#define R22_LCLK_SEL_PMOS_IC_1_SHIFT 8
+#define R22_LSWC_DAC_CTRL_IC_1_MASK 0xC00
+#define R22_LSWC_DAC_CTRL_IC_1_SHIFT 10
+#define R22_CLK_SEL_INT_AMP_IC_1_MASK 0x3000
+#define R22_CLK_SEL_INT_AMP_IC_1_SHIFT 12
+
+/* AnalogInterfaceRegister2 (IC 1) */
+#define R23_UNUSED_IC_1 0x0 /* 0b [0] */
+#define R23_ADC_DITHER_EN_IC_1 0x0 /* 0b [1] */
+#define R23_XTAL_ENB_IC_1 0x0 /* 0b [2] */
+#define R23_PLL_PD_IC_1 0x0 /* 0b [3] */
+#define R23_IBIAS_TO_PIN_IC_1 0x0 /* 0b [4] */
+#define R23_IBIAS_ADJ_IC_1 0x0 /* 0000b [8:5] */
+#define R23_VREF_TRIM_IC_1 0x0 /* 0000b [12:9] */
+#define R23_REF_I_SEL_IC_1 0x0 /* 0b [13] */
+#define R23_RSCRAM_ENB_IC_1 0x0 /* 0b [14] */
+#define R23_LCHOP_AMP_ENB_IC_1 0x0 /* 0b [15] */
+#define R23_UNUSED_IC_1_MASK 0x1
+#define R23_UNUSED_IC_1_SHIFT 0
+#define R23_ADC_DITHER_EN_IC_1_MASK 0x2
+#define R23_ADC_DITHER_EN_IC_1_SHIFT 1
+#define R23_XTAL_ENB_IC_1_MASK 0x4
+#define R23_XTAL_ENB_IC_1_SHIFT 2
+#define R23_PLL_PD_IC_1_MASK 0x8
+#define R23_PLL_PD_IC_1_SHIFT 3
+#define R23_IBIAS_TO_PIN_IC_1_MASK 0x10
+#define R23_IBIAS_TO_PIN_IC_1_SHIFT 4
+#define R23_IBIAS_ADJ_IC_1_MASK 0x1E0
+#define R23_IBIAS_ADJ_IC_1_SHIFT 5
+#define R23_VREF_TRIM_IC_1_MASK 0x1E00
+#define R23_VREF_TRIM_IC_1_SHIFT 9
+#define R23_REF_I_SEL_IC_1_MASK 0x2000
+#define R23_REF_I_SEL_IC_1_SHIFT 13
+#define R23_RSCRAM_ENB_IC_1_MASK 0x4000
+#define R23_RSCRAM_ENB_IC_1_SHIFT 14
+#define R23_LCHOP_AMP_ENB_IC_1_MASK 0x8000
+#define R23_LCHOP_AMP_ENB_IC_1_SHIFT 15
+
+/* AnalogInterfaceRegister3 (IC 1) */
+#define R24_DAC_OFFSET_IC_1 0x1 /* 01b [1:0] */
+#define R24_DAC_DITHER_ENABLE_IC_1 0x0 /* 0b [2] */
+#define R24_PCTRL_IC_1 0x0 /* 00b [4:3] */
+#define R24_DAC_PCLK_SEL_IC_1 0x0 /* 00b [6:5] */
+#define R24_DAC_I_SEL_IC_1 0x0 /* 0000b [10:7] */
+#define R24_DAC_CLK_SEL_IC_1 0x0 /* 00b [12:11] */
+#define R24_DAC_CHOP_ENB_IC_1 0x0 /* 0b [13] */
+#define R24_DAC_DRTZ_IC_1 0x0 /* 00b [15:14] */
+#define R24_DAC_OFFSET_IC_1_MASK 0x3
+#define R24_DAC_OFFSET_IC_1_SHIFT 0
+#define R24_DAC_DITHER_ENABLE_IC_1_MASK 0x4
+#define R24_DAC_DITHER_ENABLE_IC_1_SHIFT 2
+#define R24_PCTRL_IC_1_MASK 0x18
+#define R24_PCTRL_IC_1_SHIFT 3
+#define R24_DAC_PCLK_SEL_IC_1_MASK 0x60
+#define R24_DAC_PCLK_SEL_IC_1_SHIFT 5
+#define R24_DAC_I_SEL_IC_1_MASK 0x780
+#define R24_DAC_I_SEL_IC_1_SHIFT 7
+#define R24_DAC_CLK_SEL_IC_1_MASK 0x1800
+#define R24_DAC_CLK_SEL_IC_1_SHIFT 11
+#define R24_DAC_CHOP_ENB_IC_1_MASK 0x2000
+#define R24_DAC_CHOP_ENB_IC_1_SHIFT 13
+#define R24_DAC_DRTZ_IC_1_MASK 0xC000
+#define R24_DAC_DRTZ_IC_1_SHIFT 14
+
+#endif
diff --git a/Software/Firmware/ADAU1701-Firmware/DigiRadio_NetList.xml b/Software/Firmware/ADAU1701-Firmware/DigiRadio_NetList.xml
new file mode 100644
index 0000000..715ce51
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/DigiRadio_NetList.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Software/Firmware/ADAU1701-Firmware/NumBytes_IC_1.dat b/Software/Firmware/ADAU1701-Firmware/NumBytes_IC_1.dat
new file mode 100644
index 0000000..8ced699
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/NumBytes_IC_1.dat
@@ -0,0 +1,5 @@
+4,
+5122,
+4098,
+26,
+4,
diff --git a/Software/Firmware/ADAU1701-Firmware/README.md b/Software/Firmware/ADAU1701-Firmware/README.md
new file mode 100644
index 0000000..e811d4e
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/README.md
@@ -0,0 +1,13 @@
+# ADAU1701 SigmaStudio export
+
+SigmaStudio project **DigiRadio**, IC1 = ADAU1701.
+
+Key files:
+- `DigiRadio_IC_1.h` — program/param RAM data + `default_download_IC_1()`
+- `DigiRadio_IC_1_REG.h` — register map
+- `DigiRadio_IC_1_PARAM.h` — parameter handles (safeload, Slice 5+)
+
+The ESP32 replays `default_download_IC_1()` over I2C on every boot via
+`adau1701::Adau1701Driver` (see `components/drivers/adau1701/`).
+
+I2C address: 7-bit `0x34` (ADDR0=ADDR1=GND), matching `board_pins.hpp`.
diff --git a/Software/Firmware/ADAU1701-Firmware/SigmaStudioFW.h b/Software/Firmware/ADAU1701-Firmware/SigmaStudioFW.h
new file mode 100644
index 0000000..decace9
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/SigmaStudioFW.h
@@ -0,0 +1,54 @@
+/**
+ * @file SigmaStudioFW.h
+ * @brief Minimal SigmaStudio download helpers for ADAU1701 RAM boot.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Subset of the Analog Devices SigmaStudio export support library.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned char ADI_REG_TYPE;
+
+/**
+ * @brief Bind the I2C port used by SIGMA_WRITE_REGISTER_BLOCK.
+ *
+ * @param port ESP-IDF I2C master port number.
+ * @param addr7 ADAU1701 7-bit I2C address (0x34 on DigiRadio).
+ */
+void sigma_studio_bind_i2c(int port, unsigned char addr7);
+
+/** @brief Attach the I2C device handle created by Adau1701Driver. */
+void sigma_studio_set_device(void* i2cDevHandle);
+
+/**
+ * @brief Write a contiguous register/data block to the ADAU1701.
+ *
+ * @param devAddress SigmaStudio device address (0x68 write addr).
+ * @param address 16-bit target address in DSP memory map.
+ * @param length Payload length in bytes.
+ * @param pData Payload bytes.
+ */
+void SIGMA_WRITE_REGISTER_BLOCK(unsigned char devAddress,
+ unsigned int address,
+ unsigned char length,
+ ADI_REG_TYPE* pData);
+
+/**
+ * @brief Run the DigiRadio SigmaStudio default download sequence.
+ */
+void adau1701_run_default_download(void);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/Software/Firmware/ADAU1701-Firmware/TxBuffer_IC_1.dat b/Software/Firmware/ADAU1701-Firmware/TxBuffer_IC_1.dat
new file mode 100644
index 0000000..9b0190d
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/TxBuffer_IC_1.dat
@@ -0,0 +1,2060 @@
+0x08, 0x1C, /* (0) IC 1.CoreRegister */
+0x00, 0x18,
+0x04, 0x00, /* (1) Program Data */
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x08, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x10, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x18, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x20, 0x00, 0xE8, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x28, 0x00, 0xE8, 0x01,
+0x00, 0x12, 0x00, 0x20, 0x01,
+0x00, 0x30, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x1A, 0x01, 0x20, 0x01,
+0x00, 0x38, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x22, 0x02, 0x20, 0x01,
+0x00, 0x40, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x2A, 0x03, 0x20, 0x01,
+0x00, 0x48, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x32, 0x04, 0x20, 0x01,
+0x00, 0x3A, 0x04, 0x40, 0x01,
+0x00, 0x42, 0x05, 0x22, 0x01,
+0x00, 0x4A, 0x05, 0x44, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x60, 0x00, 0xE2, 0x01,
+0x01, 0x98, 0x00, 0xE4, 0x01,
+0x00, 0x8A, 0x09, 0x20, 0x01,
+0x00, 0x82, 0x0A, 0x22, 0x01,
+0x00, 0x72, 0x09, 0x34, 0x01,
+0x00, 0x6A, 0x0A, 0x22, 0x01,
+0x00, 0x62, 0x06, 0x22, 0x01,
+0x00, 0x5A, 0x07, 0x22, 0x01,
+0x00, 0x52, 0x08, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x78, 0x00, 0xE2, 0x01,
+0x00, 0x90, 0x00, 0xF2, 0x01,
+0x00, 0xBA, 0x0E, 0x20, 0x01,
+0x00, 0xB2, 0x0F, 0x22, 0x01,
+0x00, 0xA2, 0x0E, 0x34, 0x01,
+0x00, 0x9A, 0x0F, 0x22, 0x01,
+0x00, 0x7A, 0x0B, 0x22, 0x01,
+0x00, 0x72, 0x0C, 0x22, 0x01,
+0x00, 0x6A, 0x0D, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0xA8, 0x00, 0xE2, 0x01,
+0x00, 0xC0, 0x00, 0xF2, 0x01,
+0x00, 0xEA, 0x13, 0x20, 0x01,
+0x00, 0xE2, 0x14, 0x22, 0x01,
+0x00, 0xD2, 0x13, 0x34, 0x01,
+0x00, 0xCA, 0x14, 0x22, 0x01,
+0x00, 0xAA, 0x10, 0x22, 0x01,
+0x00, 0xA2, 0x11, 0x22, 0x01,
+0x00, 0x9A, 0x12, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0xD8, 0x00, 0xE2, 0x01,
+0x00, 0xF0, 0x00, 0xF2, 0x01,
+0x01, 0x1A, 0x18, 0x20, 0x01,
+0x01, 0x12, 0x19, 0x22, 0x01,
+0x01, 0x02, 0x18, 0x34, 0x01,
+0x00, 0xFA, 0x19, 0x22, 0x01,
+0x00, 0xDA, 0x15, 0x22, 0x01,
+0x00, 0xD2, 0x16, 0x22, 0x01,
+0x00, 0xCA, 0x17, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x08, 0x00, 0xE2, 0x01,
+0x01, 0x20, 0x00, 0xF2, 0x01,
+0x01, 0x4A, 0x1D, 0x20, 0x01,
+0x01, 0x42, 0x1E, 0x22, 0x01,
+0x01, 0x32, 0x1D, 0x34, 0x01,
+0x01, 0x2A, 0x1E, 0x22, 0x01,
+0x01, 0x0A, 0x1A, 0x22, 0x01,
+0x01, 0x02, 0x1B, 0x22, 0x01,
+0x00, 0xFA, 0x1C, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x38, 0x00, 0xE2, 0x01,
+0x01, 0x50, 0x00, 0xF2, 0x01,
+0x01, 0x7A, 0x22, 0x20, 0x01,
+0x01, 0x72, 0x23, 0x22, 0x01,
+0x01, 0x62, 0x22, 0x34, 0x01,
+0x01, 0x5A, 0x23, 0x22, 0x01,
+0x01, 0x3A, 0x1F, 0x22, 0x01,
+0x01, 0x32, 0x20, 0x22, 0x01,
+0x01, 0x2A, 0x21, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0x68, 0x00, 0xE2, 0x01,
+0x01, 0x80, 0x00, 0xF2, 0x01,
+0x01, 0xC2, 0x09, 0x20, 0x01,
+0x01, 0xBA, 0x0A, 0x22, 0x01,
+0x01, 0xAA, 0x09, 0x34, 0x01,
+0x01, 0xA2, 0x0A, 0x22, 0x01,
+0x01, 0x9A, 0x06, 0x22, 0x01,
+0x01, 0x92, 0x07, 0x22, 0x01,
+0x01, 0x8A, 0x08, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0xB0, 0x00, 0xE2, 0x01,
+0x01, 0xC8, 0x00, 0xF2, 0x01,
+0x01, 0xF2, 0x0E, 0x20, 0x01,
+0x01, 0xEA, 0x0F, 0x22, 0x01,
+0x01, 0xDA, 0x0E, 0x34, 0x01,
+0x01, 0xD2, 0x0F, 0x22, 0x01,
+0x01, 0xB2, 0x0B, 0x22, 0x01,
+0x01, 0xAA, 0x0C, 0x22, 0x01,
+0x01, 0xA2, 0x0D, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x01, 0xE0, 0x00, 0xE2, 0x01,
+0x01, 0xF8, 0x00, 0xF2, 0x01,
+0x02, 0x22, 0x13, 0x20, 0x01,
+0x02, 0x1A, 0x14, 0x22, 0x01,
+0x02, 0x0A, 0x13, 0x34, 0x01,
+0x02, 0x02, 0x14, 0x22, 0x01,
+0x01, 0xE2, 0x10, 0x22, 0x01,
+0x01, 0xDA, 0x11, 0x22, 0x01,
+0x01, 0xD2, 0x12, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x10, 0x00, 0xE2, 0x01,
+0x02, 0x28, 0x00, 0xF2, 0x01,
+0x02, 0x52, 0x18, 0x20, 0x01,
+0x02, 0x4A, 0x19, 0x22, 0x01,
+0x02, 0x3A, 0x18, 0x34, 0x01,
+0x02, 0x32, 0x19, 0x22, 0x01,
+0x02, 0x12, 0x15, 0x22, 0x01,
+0x02, 0x0A, 0x16, 0x22, 0x01,
+0x02, 0x02, 0x17, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x40, 0x00, 0xE2, 0x01,
+0x02, 0x58, 0x00, 0xF2, 0x01,
+0x02, 0x82, 0x1D, 0x20, 0x01,
+0x02, 0x7A, 0x1E, 0x22, 0x01,
+0x02, 0x6A, 0x1D, 0x34, 0x01,
+0x02, 0x62, 0x1E, 0x22, 0x01,
+0x02, 0x42, 0x1A, 0x22, 0x01,
+0x02, 0x3A, 0x1B, 0x22, 0x01,
+0x02, 0x32, 0x1C, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0x70, 0x00, 0xE2, 0x01,
+0x02, 0x88, 0x00, 0xF2, 0x01,
+0x02, 0xB2, 0x22, 0x20, 0x01,
+0x02, 0xAA, 0x23, 0x22, 0x01,
+0x02, 0x9A, 0x22, 0x34, 0x01,
+0x02, 0x92, 0x23, 0x22, 0x01,
+0x02, 0x72, 0x1F, 0x22, 0x01,
+0x02, 0x6A, 0x20, 0x22, 0x01,
+0x02, 0x62, 0x21, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xA0, 0x00, 0xE2, 0x01,
+0x02, 0xB8, 0x00, 0xF2, 0x01,
+0x01, 0x6A, 0x24, 0x20, 0x01,
+0x02, 0xC0, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xA2, 0x25, 0x20, 0x01,
+0x02, 0xC8, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xC1, 0x08, 0x20, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x28, 0x00, 0xF0, 0x01,
+0xFF, 0xE9, 0x08, 0x22, 0x01,
+0x03, 0x20, 0x00, 0xF2, 0x01,
+0x03, 0x11, 0x08, 0x20, 0x01,
+0x03, 0x12, 0x32, 0x22, 0x41,
+0x03, 0x22, 0x32, 0x22, 0x01,
+0x03, 0x01, 0x08, 0x34, 0x01,
+0x03, 0x02, 0x32, 0x22, 0x41,
+0x03, 0x2A, 0x32, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x08, 0x00, 0xE2, 0x01,
+0x03, 0x18, 0x00, 0xF2, 0x01,
+0x03, 0x30, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x2E, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x26, 0x20, 0x01,
+0xFF, 0xF2, 0x27, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x03, 0x32, 0x28, 0x20, 0x01,
+0xFF, 0xF2, 0x29, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x2F, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x2A, 0x20, 0x01,
+0xFF, 0xF2, 0x2B, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x30, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x2C, 0x20, 0x01,
+0xFF, 0xF2, 0x2D, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x00, 0x02, 0x31, 0xA0, 0x01,
+0xFF, 0xE7, 0xFF, 0x20, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x40, 0x01,
+0xFF, 0xF1, 0x08, 0x20, 0x09,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x40, 0x01,
+0x02, 0xF1, 0x08, 0x20, 0x09,
+0x02, 0xFA, 0x33, 0x20, 0x01,
+0x02, 0xF2, 0x33, 0x22, 0x41,
+0x02, 0xF1, 0x08, 0x22, 0x01,
+0x02, 0xF8, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xF9, 0x08, 0x20, 0x01,
+0x02, 0xE8, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x34, 0x22, 0x49,
+0xFF, 0xF1, 0x08, 0x20, 0x01,
+0xFF, 0xE9, 0x08, 0x20, 0x25,
+0x02, 0xE0, 0x00, 0xE2, 0x01,
+0x02, 0xF8, 0x00, 0xC0, 0x01,
+0x02, 0xC7, 0xFF, 0x20, 0x01,
+0x02, 0xD8, 0x00, 0xE2, 0x01,
+0x02, 0xC9, 0x08, 0x20, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x28, 0x00, 0xF0, 0x01,
+0xFF, 0xE9, 0x08, 0x22, 0x01,
+0x03, 0x20, 0x00, 0xF2, 0x01,
+0x03, 0x71, 0x08, 0x20, 0x01,
+0x03, 0x72, 0x41, 0x22, 0x41,
+0x03, 0x22, 0x41, 0x22, 0x01,
+0x03, 0x61, 0x08, 0x34, 0x01,
+0x03, 0x62, 0x41, 0x22, 0x41,
+0x03, 0x2A, 0x41, 0x22, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x68, 0x00, 0xE2, 0x01,
+0x03, 0x78, 0x00, 0xF2, 0x01,
+0x03, 0x30, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x3D, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x35, 0x20, 0x01,
+0xFF, 0xF2, 0x36, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x03, 0x32, 0x37, 0x20, 0x01,
+0xFF, 0xF2, 0x38, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x3E, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x39, 0x20, 0x01,
+0xFF, 0xF2, 0x3A, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0xFF, 0xF2, 0x3F, 0x40, 0x01,
+0x03, 0x31, 0x08, 0x20, 0x09,
+0x03, 0x32, 0x3B, 0x20, 0x01,
+0xFF, 0xF2, 0x3C, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x03, 0x37, 0xFF, 0x20, 0x41,
+0xFF, 0xF1, 0x07, 0x22, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD7, 0xFF, 0x20, 0x01,
+0x02, 0xD0, 0x00, 0xE2, 0x01,
+0x02, 0xD0, 0x00, 0xC0, 0x01,
+0x00, 0x02, 0x40, 0xA0, 0x01,
+0xFF, 0xE7, 0xFF, 0x20, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x40, 0x01,
+0xFF, 0xF1, 0x08, 0x20, 0x09,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x40, 0x01,
+0x03, 0x51, 0x08, 0x20, 0x09,
+0x03, 0x5A, 0x42, 0x20, 0x01,
+0x03, 0x52, 0x42, 0x22, 0x41,
+0x03, 0x51, 0x08, 0x22, 0x01,
+0x03, 0x58, 0x00, 0xE2, 0x23,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x03, 0x59, 0x08, 0x20, 0x01,
+0x03, 0x48, 0x00, 0xE2, 0x01,
+0xFF, 0xF2, 0x43, 0x22, 0x49,
+0xFF, 0xF1, 0x08, 0x20, 0x01,
+0xFF, 0xE9, 0x08, 0x20, 0x25,
+0x03, 0x40, 0x00, 0xE2, 0x01,
+0x03, 0x58, 0x00, 0xC0, 0x01,
+0x02, 0xCF, 0xFF, 0x20, 0x01,
+0x03, 0x38, 0x00, 0xE2, 0x01,
+0x03, 0x39, 0x08, 0x20, 0x01,
+0xFF, 0x30, 0x00, 0x02, 0x01,
+0x02, 0xD9, 0x08, 0x20, 0x01,
+0xFF, 0x28, 0x00, 0x02, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x01,
+0x00, 0x00, /* (2) Param */
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x7F, 0xC3, 0x65,
+0x0F, 0x00, 0x79, 0x35,
+0x00, 0x7F, 0xC3, 0x65,
+0x00, 0xFF, 0x86, 0xAE,
+0x0F, 0x80, 0x79, 0x19,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00,
+0x0F, 0xFE, 0x2B, 0xE3,
+0x00, 0x22, 0xBE, 0x2C,
+0x0F, 0xEA, 0xAA, 0xAB,
+0x00, 0x6A, 0xAA, 0xAB,
+0x0F, 0x9A, 0x69, 0xA7,
+0x00, 0xFD, 0xF7, 0xDF,
+0x08, 0x3C, 0x6C, 0x20,
+0x03, 0xF5, 0xAA, 0x23,
+0x01, 0x80, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00,
+0x00, 0x33, 0x33, 0x33,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x07, 0xDC,
+0x00, 0x00, 0x08, 0x00,
+0x00, 0x7F, 0xF0, 0x00,
+0x0F, 0xFE, 0x2B, 0xE3,
+0x00, 0x22, 0xBE, 0x2C,
+0x0F, 0xEA, 0xAA, 0xAB,
+0x00, 0x6A, 0xAA, 0xAB,
+0x0F, 0x9A, 0x69, 0xA7,
+0x00, 0xFD, 0xF7, 0xDF,
+0x08, 0x3C, 0x6C, 0x20,
+0x03, 0xF5, 0xAA, 0x23,
+0x01, 0x80, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00,
+0x00, 0x33, 0x33, 0x33,
+0x00, 0x80, 0x00, 0x00,
+0x00, 0x00, 0x07, 0xDC,
+0x00, 0x00, 0x08, 0x00,
+0x00, 0x7F, 0xF0, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+0x08, 0x1C, /* (3) IC 1.HWConFiguration */
+0x00, 0x18, 0x08, 0x08, 0x00,
+0x00, 0x44, 0x00, 0x44, 0x44,
+0x00, 0x04, 0x00, 0x00, 0x00,
+0x00, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01,
+0x08, 0x1C, /* (4) IC 1.CoreRegister */
+0x00, 0x1C,
diff --git a/Software/Firmware/ADAU1701-Firmware/defines.h b/Software/Firmware/ADAU1701-Firmware/defines.h
new file mode 100644
index 0000000..006afb8
--- /dev/null
+++ b/Software/Firmware/ADAU1701-Firmware/defines.h
@@ -0,0 +1,26 @@
+/*
+ * File: defines.h
+ *
+ * Created: Monday, July 6, 2026 2:41:28 PM
+ * Description: DigiRadio IC default download data definitions.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This software may only be used to program products purchased from
+ * Analog Devices for incorporation by you into audio products that
+ * are intended for resale to audio product end users. This software
+ * may not be distributed whole or in any part to third parties.
+ *
+ * Copyright ©2026 Analog Devices, Inc. All rights reserved.
+ */
+#ifndef __DEFINES_H__
+#define __DEFINES_H__
+
+#define BufferSize_IC_1 9254
+#define NumTransactions_IC_1 5
+
+
+#endif
diff --git a/Software/Firmware/README.md b/Software/Firmware/README.md
new file mode 100644
index 0000000..74f6dab
--- /dev/null
+++ b/Software/Firmware/README.md
@@ -0,0 +1,20 @@
+# DigiRadio — companion-chip firmware assets
+
+Binary and SigmaStudio exports loaded by the ESP32 at every boot.
+
+| Directory | Chip | Contents |
+|-----------|------|----------|
+| `ADAU1701-Firmware/` | ADAU1701 SigmaDSP | SigmaStudio export (`DigiRadio_IC_1.h`, …) — RAM program |
+| `Si4684-Firmware/` | Si4684 DAB+/FM tuner | ROM patch + DAB + FM application images (`.bin`) |
+
+## Si4684 blobs
+
+`rom_patch_016.bin` and `dab_firmware.bin` are extracted from the
+[PE5PVB SI4684-DAB-Receiver](https://github.com/PE5PVB/SI4684-DAB-Receiver)
+project. `fm_firmware.bin` comes from the Skyworks Si4684 eval firmware pack
+(see `tools/fetch_si4684_firmware.py --si46xx-dir`).
+
+## ADAU1701 export
+
+Generated by Analog Devices SigmaStudio for the DigiRadio DSP schematic.
+Loaded on every boot (no self-boot EEPROM on this board).
diff --git a/Software/Firmware/Si4684-Firmware/README.md b/Software/Firmware/Si4684-Firmware/README.md
new file mode 100644
index 0000000..ac983a1
--- /dev/null
+++ b/Software/Firmware/Si4684-Firmware/README.md
@@ -0,0 +1,43 @@
+# Si4684 firmware images
+
+| File | Size (typ.) | Role |
+|------|-------------|------|
+| `rom_patch_016.bin` | 5796 | ROM patch / bootloader helper (HOST_LOAD before main image) |
+| `dab_firmware.bin` | ~517 KB | DAB+ application image (PE5PVB / Skyworks BIF) |
+| `fm_firmware.bin` | ~530 KB | FM application image (Skyworks `fm_radio_5_1_0.bin`, AN649 A10) |
+
+Boot sequence: AN649 — POWER_UP → LOAD_INIT → HOST_LOAD(patch) → LOAD_INIT →
+HOST_LOAD(image) → BOOT. DAB and FM use the same patch; only the application
+image differs.
+
+## Refresh blobs
+
+```bash
+# DAB + patch from PE5PVB GitHub (always safe to re-run):
+python3 tools/fetch_si4684_firmware.py --dab-only
+
+# FM from Skyworks eval / dabpi si46xx_firmware folder:
+python3 tools/fetch_si4684_firmware.py --si46xx-dir /path/to/si46xx_firmware
+
+# FM extracted from uGreen DABBoard radio_cli (Files_v16.zip from ugreen.eu/downloads):
+python3 tools/fetch_si4684_firmware.py --from-ugreen-radio-cli ~/Downloads/Files_v16.zip
+
+# Patch + DAB + FM entirely from uGreen radio_cli (overrides PE5PVB DAB):
+python3 tools/fetch_si4684_firmware.py --from-ugreen-radio-cli ~/Downloads/Files_v16.zip --ugreen-all
+
+# FM extracted from a full SPI flash dump (TechniSat layout, dirb.me tech wiki):
+python3 tools/fetch_si4684_firmware.py --flash-dump technisat_spi.bin
+```
+
+FM images are **not** redistributed with PE5PVB (DAB-only project). Obtain
+`fm_radio_5_1_0.bin` from the Si4684 evaluation package (AN649 table 1),
+community `si46xx_firmware/` folders used by [teknoid/dabpi](https://github.com/teknoid/dabpi),
+or extract from a uGreen [DABBoard](https://ugreen.eu/downloads/) `radio_cli`
+binary (proprietary — keep local, do not commit to public git).
+
+Low-level conversion helper:
+
+```bash
+python3 tools/extract_si4684_blob.py --copy /path/to/fm_radio_5_1_0.bin \\
+ --out Firmware/Si4684-Firmware/fm_firmware.bin
+```
diff --git a/Software/README.md b/Software/README.md
index 3fb5bdb..8630f65 100644
--- a/Software/README.md
+++ b/Software/README.md
@@ -2,7 +2,7 @@
Open-source Hi-Fi DAB+/FM receiver firmware for the ESP32-S3.
-**Status:** Slice 2 — secure store and Wi-Fi STA provisioning.
+**Status:** Slice 3 — Si4684 + ADAU1701 boot at power-up (network from Slice 2).
## Quick start
@@ -37,11 +37,11 @@ Manual PDF (design + HTTP API + class reference):
cd docs/manual && latexmk -lualatex manual.tex
```
-## HTTP API (fw 0.2.0)
+## HTTP API (fw 0.3.0)
| Method | Path | Purpose |
|--------|------|---------|
-| GET | `/api/health` | `{"status":"ok","fw":"0.2.0"}` |
+| GET | `/api/health` | `{"status":"ok","fw":"0.3.0"}` |
| POST | `/api/wifi` | Provision STA credentials; reboot on success |
Full schemas, error tokens, and boot flow: [`docs/manual/ch-api.tex`](docs/manual/ch-api.tex).
@@ -49,6 +49,12 @@ C++ signatures: generate with `doxygen Doxyfile` → `docs/api/html/index.html`.
## Layout
+| Path | Role |
+|------|------|
+| `Firmware/` | Si4684 `.bin` blobs (DAB+FM) + ADAU1701 SigmaStudio export |
+| `components/drivers/si4684/` | AN649 SPI boot driver |
+| `components/drivers/adau1701/` | I2C SigmaStudio RAM download |
+
See [`AGENTS.md`](AGENTS.md) §12 and [`instructions.md`](instructions.md) for
the authoritative repo layout, coding rules, and development roadmap.
diff --git a/Software/components/core/CMakeLists.txt b/Software/components/core/CMakeLists.txt
index a6419f5..0b7299a 100644
--- a/Software/components/core/CMakeLists.txt
+++ b/Software/components/core/CMakeLists.txt
@@ -7,6 +7,9 @@ idf_component_register(
"src/WifiSsid.cpp"
"src/WifiCredentials.cpp"
"src/WifiProvisionJson.cpp"
+ "src/EmbeddedBlobReader.cpp"
+ "src/TunerJson.cpp"
+ "src/FrequencyKHz.cpp"
INCLUDE_DIRS "include"
)
diff --git a/Software/components/core/include/core/EmbeddedBlobReader.hpp b/Software/components/core/include/core/EmbeddedBlobReader.hpp
new file mode 100644
index 0000000..93ed6a5
--- /dev/null
+++ b/Software/components/core/include/core/EmbeddedBlobReader.hpp
@@ -0,0 +1,57 @@
+/**
+ * @file EmbeddedBlobReader.hpp
+ * @brief IFirmwareBlobReader over a contiguous embedded flash region.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/IFirmwareBlobReader.hpp"
+
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief EmbeddedBlobReader — non-owning view of an embedded binary.
+ *
+ * @dname EmbeddedBlobReader
+ * @return n/a (type)
+ * @pubstate Borrows [data_, data_ + size_) for the reader lifetime.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class EmbeddedBlobReader final : public IFirmwareBlobReader {
+public:
+ /**
+ * @brief EmbeddedBlobReader — construct over a flash-backed range.
+ *
+ * @dname EmbeddedBlobReader
+ * @param data Start of embedded blob (e.g. linker symbol).
+ * @param size Length in bytes.
+ * @pubstate stores data_ and size_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ EmbeddedBlobReader(const std::byte* data, std::size_t size);
+
+ [[nodiscard]] std::size_t size() const override;
+
+ [[nodiscard]] std::size_t read(std::size_t offset,
+ std::span dest) const override;
+
+private:
+ const std::byte* data_;
+ std::size_t size_;
+};
+
+} // namespace core
diff --git a/Software/components/core/include/core/FrequencyKHz.hpp b/Software/components/core/include/core/FrequencyKHz.hpp
new file mode 100644
index 0000000..f69a09d
--- /dev/null
+++ b/Software/components/core/include/core/FrequencyKHz.hpp
@@ -0,0 +1,73 @@
+/**
+ * @file FrequencyKHz.hpp
+ * @brief Strong type for FM centre frequency in kilohertz.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/ParseError.hpp"
+
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief FrequencyKHz — validated FM centre frequency (European band).
+ *
+ * @dname FrequencyKHz
+ * @return n/a (type)
+ * @pubstate Owns khz_ within 64\,000–108\,000 kHz. Immutable after construction.
+ *
+ * Parsed once at the HTTP boundary; trusted downstream by ITuner and drivers.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class FrequencyKHz {
+public:
+ /** Minimum valid FM frequency for DigiRadio (64.0 MHz). */
+ static constexpr std::uint32_t kMinKhz = 64000U;
+ /** Maximum valid FM frequency for DigiRadio (108.0 MHz). */
+ static constexpr std::uint32_t kMaxKhz = 108000U;
+
+ /**
+ * @brief tryFromKhz — validate an FM frequency at the boundary.
+ *
+ * @dname tryFromKhz
+ * @param khz Untrusted frequency in kilohertz from JSON input.
+ * @return FrequencyKHz on success, or ParseError::MissingField.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] static std::expected tryFromKhz(
+ std::uint32_t khz) noexcept;
+
+ /**
+ * @brief value — read the stored frequency in kilohertz.
+ *
+ * @dname value
+ * @return Validated centre frequency in kHz.
+ * @pubstate reads khz_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::uint32_t value() const noexcept;
+
+private:
+ explicit FrequencyKHz(std::uint32_t khz) noexcept;
+
+ std::uint32_t khz_;
+};
+
+} // namespace core
diff --git a/Software/components/core/include/core/IFirmwareBlobReader.hpp b/Software/components/core/include/core/IFirmwareBlobReader.hpp
new file mode 100644
index 0000000..1ddc874
--- /dev/null
+++ b/Software/components/core/include/core/IFirmwareBlobReader.hpp
@@ -0,0 +1,72 @@
+/**
+ * @file IFirmwareBlobReader.hpp
+ * @brief Read-only streaming access to a firmware blob in flash.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief IFirmwareBlobReader — streaming firmware image access.
+ *
+ * @dname IFirmwareBlobReader
+ * @return n/a (type)
+ * @pubstate Implementations wrap embedded flash or test buffers. Used by
+ * Si4684Driver to HOST_LOAD in bounded chunks (AGENTS.md §7.1).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class IFirmwareBlobReader {
+public:
+ /**
+ * @brief ~IFirmwareBlobReader — virtual destructor.
+ *
+ * @dname ~IFirmwareBlobReader
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ virtual ~IFirmwareBlobReader() = default;
+
+ /**
+ * @brief size — total blob length in bytes.
+ *
+ * @dname size
+ * @return Blob size.
+ * @pubstate reads backing storage.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::size_t size() const = 0;
+
+ /**
+ * @brief read — copy bytes from the blob at an offset.
+ *
+ * @dname read
+ * @param offset Byte offset from the start of the blob.
+ * @param dest Destination buffer; truncated at end of blob.
+ * @return Number of bytes copied into dest.
+ * @pubstate reads backing storage.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::size_t read(std::size_t offset,
+ std::span dest) const = 0;
+};
+
+} // namespace core
diff --git a/Software/components/core/include/core/ITuner.hpp b/Software/components/core/include/core/ITuner.hpp
new file mode 100644
index 0000000..d093323
--- /dev/null
+++ b/Software/components/core/include/core/ITuner.hpp
@@ -0,0 +1,170 @@
+/**
+ * @file ITuner.hpp
+ * @brief Abstract tuner driver boundary (host-testable).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/SeekDirection.hpp"
+#include "core/TunerBand.hpp"
+#include "core/TunerError.hpp"
+#include "core/TunerStatus.hpp"
+
+#include
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief ITuner — hardware abstraction for DAB/FM tuning.
+ *
+ * @dname ITuner
+ * @return n/a (type)
+ * @pubstate Implemented by si4684::Si4684Tuner on device; fakes in host tests.
+ * No public data members.
+ *
+ * Services depend on this interface, not on SPI details. All methods return
+ * std::expected with TunerError on failure.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class ITuner {
+public:
+ virtual ~ITuner() = default;
+
+ /**
+ * @brief boot — load the requested band application image.
+ *
+ * @dname boot
+ * @param band DAB or FM image to load.
+ * @return Ok on success, or TunerError::HardwareFailed / NotBooted.
+ * @pubstate none (implementation-defined driver state).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected boot(
+ TunerBand band) = 0;
+
+ /**
+ * @brief currentBand — read the loaded application band.
+ *
+ * @dname currentBand
+ * @return Active TunerBand, or TunerError::NotBooted.
+ * @pubstate reads driver boot state.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected currentBand()
+ const = 0;
+
+ /**
+ * @brief readStatus — snapshot lock, metrics, and tune target.
+ *
+ * @dname readStatus
+ * @return TunerStatus on success, or a TunerError.
+ * @pubstate reads driver metrics; may refresh RSQ/DIGRAD.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected readStatus() = 0;
+
+ /**
+ * @brief tuneDab — select a Band III ensemble by index.
+ *
+ * @dname tuneDab
+ * @param freqIndex Ensemble index 0–37.
+ * @return Ok on success, or WrongBand / TuneFailed / NotBooted.
+ * @pubstate writes last tune target in the adapter.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected tuneDab(
+ std::uint8_t freqIndex) = 0;
+
+ /**
+ * @brief tuneFm — tune to an FM centre frequency.
+ *
+ * @dname tuneFm
+ * @param frequency Validated FM centre frequency.
+ * @return Ok on success, or WrongBand / TuneFailed / NotBooted.
+ * @pubstate writes last tune target in the adapter.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected tuneFm(
+ FrequencyKHz frequency) = 0;
+
+ /**
+ * @brief seekFm — seek to the next valid FM station.
+ *
+ * @dname seekFm
+ * @param direction Up or Down scan direction.
+ * @return New centre frequency, or a TunerError.
+ * @pubstate updates last tune target on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected seekFm(
+ SeekDirection direction) = 0;
+
+ /**
+ * @brief listDabServices — fetch programmes for the current ensemble.
+ *
+ * @dname listDabServices
+ * @return Service entries, ServiceListEmpty, WrongBand, or NotBooted.
+ * @pubstate reads DAB service list from the driver.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected,
+ TunerError>
+ listDabServices() = 0;
+
+ /**
+ * @brief playDabService — start DAB audio for a programme.
+ *
+ * @dname playDabService
+ * @param serviceId Selected service identifier.
+ * @param componentId Audio component within the service.
+ * @return Ok on success, or WrongBand / HardwareFailed / NotBooted.
+ * @pubstate starts digital audio output on the tuner I2S port.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected playDabService(
+ std::uint32_t serviceId, std::uint32_t componentId) = 0;
+
+ /**
+ * @brief setVolume — set tuner output attenuation.
+ *
+ * @dname setVolume
+ * @param level Attenuator 0–63.
+ * @return Ok on success, or HardwareFailed / NotBooted.
+ * @pubstate writes volume property on the driver.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] virtual std::expected setVolume(
+ std::uint8_t level) = 0;
+};
+
+} // namespace core
diff --git a/Software/components/core/include/core/SeekDirection.hpp b/Software/components/core/include/core/SeekDirection.hpp
new file mode 100644
index 0000000..5aa0003
--- /dev/null
+++ b/Software/components/core/include/core/SeekDirection.hpp
@@ -0,0 +1,31 @@
+/**
+ * @file SeekDirection.hpp
+ * @brief FM seek direction selector (core domain).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace core {
+
+/**
+ * @brief SeekDirection — FM seek scan direction.
+ *
+ * @dname SeekDirection
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * Replaces bare bool parameters in public tuner APIs (AGENTS.md §2.1).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class SeekDirection { Up, Down };
+
+} // namespace core
diff --git a/Software/components/core/include/core/TunerBand.hpp b/Software/components/core/include/core/TunerBand.hpp
new file mode 100644
index 0000000..c6163bf
--- /dev/null
+++ b/Software/components/core/include/core/TunerBand.hpp
@@ -0,0 +1,29 @@
+/**
+ * @file TunerBand.hpp
+ * @brief Strong band selector for tuner operations (core domain).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace core {
+
+/**
+ * @brief TunerBand — active RF application (DAB or FM image).
+ *
+ * @dname TunerBand
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class TunerBand { Dab, Fm };
+
+} // namespace core
diff --git a/Software/components/core/include/core/TunerError.hpp b/Software/components/core/include/core/TunerError.hpp
new file mode 100644
index 0000000..50f5528
--- /dev/null
+++ b/Software/components/core/include/core/TunerError.hpp
@@ -0,0 +1,36 @@
+/**
+ * @file TunerError.hpp
+ * @brief Typed errors for tuner service and ITuner adapters.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace core {
+
+/**
+ * @brief TunerError — failure causes for tuner operations.
+ *
+ * @dname TunerError
+ * @return n/a (type)
+ * @pubstate Stable error set mapped from driver failures at the service boundary.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class TunerError {
+ NotBooted,
+ WrongBand,
+ HardwareFailed,
+ TuneFailed,
+ ServiceListEmpty,
+ InvalidInput,
+};
+
+} // namespace core
diff --git a/Software/components/core/include/core/TunerJson.hpp b/Software/components/core/include/core/TunerJson.hpp
new file mode 100644
index 0000000..4d11ccb
--- /dev/null
+++ b/Software/components/core/include/core/TunerJson.hpp
@@ -0,0 +1,131 @@
+/**
+ * @file TunerJson.hpp
+ * @brief JSON parse/serialise for tuner API (pure core).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/ParseError.hpp"
+#include "core/TunerBand.hpp"
+#include "core/TunerStatus.hpp"
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief TunerTuneRequest — parsed POST /api/tuner/tune body.
+ *
+ * @dname TunerTuneRequest
+ * @return n/a (type)
+ * @pubstate Plain DTO filled by parseTunerTuneJson at the HTTP boundary.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct TunerTuneRequest {
+ TunerBand band; ///< Target band (Dab or Fm).
+ std::uint8_t dabFreqIndex; ///< Band III ensemble index (0–37) when band is Dab.
+ std::optional fmFrequency; ///< FM centre frequency when band is Fm.
+};
+
+/**
+ * @brief TunerPlayRequest — parsed POST /api/tuner/play body.
+ *
+ * @dname TunerPlayRequest
+ * @return n/a (type)
+ * @pubstate Plain DTO filled by parseTunerPlayJson at the HTTP boundary.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct TunerPlayRequest {
+ std::uint32_t serviceId; ///< DAB service identifier from the ensemble list.
+ std::uint32_t componentId; ///< Audio component within the service.
+};
+
+/**
+ * @brief serializeTunerStatusJson — serialise a tuner snapshot for GET status.
+ *
+ * @dname serializeTunerStatusJson
+ * @param status Domain snapshot from TunerService::refreshStatus().
+ * @return JSON object string for the HTTP response body.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] std::string serializeTunerStatusJson(const TunerStatus& status);
+
+/**
+ * @brief serializeTunerServicesJson — serialise the DAB service list.
+ *
+ * @dname serializeTunerServicesJson
+ * @param services Programme entries for the current ensemble.
+ * @return JSON object string with a services array.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] std::string serializeTunerServicesJson(
+ const std::vector& services);
+
+/**
+ * @brief serializeTunerErrorJson — serialise a tuner API error response.
+ *
+ * @dname serializeTunerErrorJson
+ * @param reason Short machine-readable cause (never a secret).
+ * @return JSON object string with status error and reason fields.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] std::string serializeTunerErrorJson(const char* reason);
+
+/**
+ * @brief parseTunerTuneJson — validate POST /api/tuner/tune body.
+ *
+ * @dname parseTunerTuneJson
+ * @param json Untrusted request body from the HTTP handler.
+ * @return TunerTuneRequest on success, or a ParseError.
+ * @pubstate none
+ *
+ * Rejects malformed JSON, missing fields, and out-of-range frequencies
+ * before any driver call.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] std::expected parseTunerTuneJson(
+ std::string_view json);
+
+/**
+ * @brief parseTunerPlayJson — validate POST /api/tuner/play body.
+ *
+ * @dname parseTunerPlayJson
+ * @param json Untrusted request body from the HTTP handler.
+ * @return TunerPlayRequest on success, or a ParseError.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] std::expected parseTunerPlayJson(
+ std::string_view json);
+
+} // namespace core
diff --git a/Software/components/core/include/core/TunerStatus.hpp b/Software/components/core/include/core/TunerStatus.hpp
new file mode 100644
index 0000000..1a09365
--- /dev/null
+++ b/Software/components/core/include/core/TunerStatus.hpp
@@ -0,0 +1,65 @@
+/**
+ * @file TunerStatus.hpp
+ * @brief Tuner status DTO for API and UI (pure core).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/TunerBand.hpp"
+
+#include
+#include
+#include
+
+namespace core {
+
+/**
+ * @brief TunerServiceEntry — one DAB programme in the current ensemble.
+ *
+ * @dname TunerServiceEntry
+ * @return n/a (type)
+ * @pubstate Plain DTO returned by ITuner::listDabServices().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct TunerServiceEntry {
+ std::uint32_t serviceId; ///< DAB service identifier.
+ std::uint32_t componentId; ///< Audio component within the service.
+ std::array label; ///< UTF-8 programme label, NUL-terminated.
+};
+
+/**
+ * @brief TunerStatus — snapshot for GET /api/tuner/status.
+ *
+ * @dname TunerStatus
+ * @return n/a (type)
+ * @pubstate Plain DTO built by ITuner::readStatus(); serialised by
+ * serializeTunerStatusJson(). Band-specific fields are optional.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct TunerStatus {
+ bool booted; ///< Companion tuner boot completed.
+ TunerBand band; ///< Active loaded application band.
+ bool locked; ///< RF lock / valid signal.
+ std::uint8_t volume; ///< Attenuator level 0–63.
+ std::optional dabFreqIndex; ///< Current Band III ensemble index.
+ std::optional dabFicQuality; ///< FIC quality 0–100 when DAB.
+ std::optional dabCnrDb; ///< CNR in dB when DAB.
+ std::optional fmFrequency; ///< Tuned FM centre frequency.
+ std::optional fmRssiDbuV; ///< FM RSSI in dBµV.
+ std::optional fmSnrDb; ///< FM SNR in dB.
+ std::optional fmStereo; ///< FM stereo pilot detected.
+};
+
+} // namespace core
diff --git a/Software/components/core/src/EmbeddedBlobReader.cpp b/Software/components/core/src/EmbeddedBlobReader.cpp
new file mode 100644
index 0000000..9b93838
--- /dev/null
+++ b/Software/components/core/src/EmbeddedBlobReader.cpp
@@ -0,0 +1,44 @@
+/**
+ * @file EmbeddedBlobReader.cpp
+ * @brief EmbeddedBlobReader implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/EmbeddedBlobReader.hpp"
+
+#include
+#include
+
+namespace core {
+
+EmbeddedBlobReader::EmbeddedBlobReader(const std::byte* data, std::size_t size)
+ : data_(data)
+ , size_(size)
+{
+}
+
+std::size_t EmbeddedBlobReader::size() const
+{
+ return size_;
+}
+
+std::size_t EmbeddedBlobReader::read(std::size_t offset,
+ std::span dest) const
+{
+ if (offset >= size_ || dest.empty()) {
+ return 0;
+ }
+ const std::size_t available = size_ - offset;
+ const std::size_t toCopy = std::min(available, dest.size());
+ std::memcpy(dest.data(), data_ + offset, toCopy);
+ return toCopy;
+}
+
+} // namespace core
diff --git a/Software/components/core/src/FrequencyKHz.cpp b/Software/components/core/src/FrequencyKHz.cpp
new file mode 100644
index 0000000..71368d8
--- /dev/null
+++ b/Software/components/core/src/FrequencyKHz.cpp
@@ -0,0 +1,37 @@
+/**
+ * @file FrequencyKHz.cpp
+ * @brief FrequencyKHz implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/FrequencyKHz.hpp"
+
+namespace core {
+
+FrequencyKHz::FrequencyKHz(std::uint32_t khz) noexcept
+ : khz_(khz)
+{
+}
+
+std::expected FrequencyKHz::tryFromKhz(
+ std::uint32_t khz) noexcept
+{
+ if (khz < kMinKhz || khz > kMaxKhz) {
+ return std::unexpected(ParseError::MissingField);
+ }
+ return FrequencyKHz(khz);
+}
+
+std::uint32_t FrequencyKHz::value() const noexcept
+{
+ return khz_;
+}
+
+} // namespace core
diff --git a/Software/components/core/src/TunerJson.cpp b/Software/components/core/src/TunerJson.cpp
new file mode 100644
index 0000000..3328c97
--- /dev/null
+++ b/Software/components/core/src/TunerJson.cpp
@@ -0,0 +1,198 @@
+/**
+ * @file TunerJson.cpp
+ * @brief TunerJson implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/TunerJson.hpp"
+
+#include
+#include
+
+namespace core {
+
+namespace {
+
+[[nodiscard]] std::string_view extractJsonString(std::string_view json,
+ std::string_view key)
+{
+ const std::string needle =
+ std::string("\"") + std::string(key) + "\":\"";
+ const std::size_t start = json.find(needle);
+ if (start == std::string_view::npos) {
+ return {};
+ }
+ const std::size_t valueStart = start + needle.size();
+ const std::size_t valueEnd = json.find('"', valueStart);
+ if (valueEnd == std::string_view::npos) {
+ return {};
+ }
+ return json.substr(valueStart, valueEnd - valueStart);
+}
+
+[[nodiscard]] bool extractJsonUint(std::string_view json,
+ std::string_view key,
+ unsigned long& out)
+{
+ const std::string needle =
+ std::string("\"") + std::string(key) + "\":";
+ const std::size_t start = json.find(needle);
+ if (start == std::string_view::npos) {
+ return false;
+ }
+ const std::size_t valueStart = start + needle.size();
+ char* end = nullptr;
+ out = std::strtoul(json.data() + valueStart, &end, 10);
+ return end != json.data() + valueStart;
+}
+
+[[nodiscard]] const char* bandToken(TunerBand band) noexcept
+{
+ return band == TunerBand::Fm ? "fm" : "dab";
+}
+
+} // namespace
+
+std::string serializeTunerStatusJson(const TunerStatus& status)
+{
+ std::ostringstream out;
+ out << "{\"booted\":" << (status.booted ? "true" : "false")
+ << ",\"band\":\"" << bandToken(status.band) << "\""
+ << ",\"locked\":" << (status.locked ? "true" : "false")
+ << ",\"volume\":" << static_cast(status.volume);
+
+ if (status.band == TunerBand::Dab) {
+ out << ",\"dab\":{";
+ if (status.dabFreqIndex) {
+ out << "\"freq_index\":" << static_cast(*status.dabFreqIndex);
+ }
+ if (status.dabFicQuality) {
+ if (status.dabFreqIndex) {
+ out << ',';
+ }
+ out << "\"fic_quality\":" << static_cast(*status.dabFicQuality);
+ }
+ if (status.dabCnrDb) {
+ out << ",\"cnr_db\":" << static_cast(*status.dabCnrDb);
+ }
+ out << "},\"fm\":null";
+ } else {
+ out << ",\"fm\":{";
+ if (status.fmFrequency) {
+ out << "\"frequency_khz\":" << status.fmFrequency->value();
+ }
+ if (status.fmRssiDbuV) {
+ if (status.fmFrequency) {
+ out << ',';
+ }
+ out << "\"rssi_dbuv\":" << static_cast(*status.fmRssiDbuV);
+ }
+ if (status.fmSnrDb) {
+ out << ",\"snr_db\":" << static_cast(*status.fmSnrDb);
+ }
+ if (status.fmStereo) {
+ out << ",\"stereo\":" << (*status.fmStereo ? "true" : "false");
+ }
+ out << "},\"dab\":null";
+ }
+ out << '}';
+ return out.str();
+}
+
+std::string serializeTunerServicesJson(
+ const std::vector& services)
+{
+ std::ostringstream out;
+ out << "{\"services\":[";
+ for (std::size_t i = 0; i < services.size(); ++i) {
+ if (i > 0U) {
+ out << ',';
+ }
+ const auto& s = services[i];
+ out << "{\"service_id\":" << s.serviceId
+ << ",\"component_id\":" << s.componentId << ",\"label\":\"";
+ for (char c : s.label) {
+ if (c == '\0') {
+ break;
+ }
+ if (c == '"' || c == '\\') {
+ out << '\\';
+ }
+ out << c;
+ }
+ out << "\"}";
+ }
+ out << "]}";
+ return out.str();
+}
+
+std::string serializeTunerErrorJson(const char* reason)
+{
+ return std::string("{\"status\":\"error\",\"reason\":\"") + reason + "\"}";
+}
+
+std::expected parseTunerTuneJson(
+ std::string_view json)
+{
+ if (json.find('{') == std::string_view::npos) {
+ return std::unexpected(ParseError::InvalidJson);
+ }
+
+ const std::string_view band = extractJsonString(json, "band");
+ if (band.empty()) {
+ return std::unexpected(ParseError::MissingField);
+ }
+
+ TunerTuneRequest req = {};
+ if (band == "dab") {
+ req.band = TunerBand::Dab;
+ unsigned long idx = 0U;
+ if (!extractJsonUint(json, "freq_index", idx) || idx > 37U) {
+ return std::unexpected(ParseError::MissingField);
+ }
+ req.dabFreqIndex = static_cast(idx);
+ } else if (band == "fm") {
+ req.band = TunerBand::Fm;
+ unsigned long khz = 0U;
+ if (!extractJsonUint(json, "frequency_khz", khz)) {
+ return std::unexpected(ParseError::MissingField);
+ }
+ auto freq = FrequencyKHz::tryFromKhz(static_cast(khz));
+ if (!freq) {
+ return std::unexpected(freq.error());
+ }
+ req.fmFrequency = *freq;
+ } else {
+ return std::unexpected(ParseError::InvalidJson);
+ }
+ return req;
+}
+
+std::expected parseTunerPlayJson(
+ std::string_view json)
+{
+ if (json.find('{') == std::string_view::npos) {
+ return std::unexpected(ParseError::InvalidJson);
+ }
+
+ unsigned long sid = 0U;
+ unsigned long cid = 0U;
+ if (!extractJsonUint(json, "service_id", sid)
+ || !extractJsonUint(json, "component_id", cid)) {
+ return std::unexpected(ParseError::MissingField);
+ }
+
+ TunerPlayRequest req = {};
+ req.serviceId = static_cast(sid);
+ req.componentId = static_cast(cid);
+ return req;
+}
+
+} // namespace core
diff --git a/Software/components/core/test/CMakeLists.txt b/Software/components/core/test/CMakeLists.txt
index 74b6a6c..0f725a7 100644
--- a/Software/components/core/test/CMakeLists.txt
+++ b/Software/components/core/test/CMakeLists.txt
@@ -19,6 +19,9 @@ add_library(digiradio_core STATIC
"${CORE_SRC_DIR}/WifiSsid.cpp"
"${CORE_SRC_DIR}/WifiCredentials.cpp"
"${CORE_SRC_DIR}/WifiProvisionJson.cpp"
+ "${CORE_SRC_DIR}/EmbeddedBlobReader.cpp"
+ "${CORE_SRC_DIR}/TunerJson.cpp"
+ "${CORE_SRC_DIR}/FrequencyKHz.cpp"
)
target_include_directories(digiradio_core PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/../include"
@@ -31,3 +34,15 @@ add_test(NAME health_status_test COMMAND health_status_test)
add_executable(wifi_provision_test wifi_provision_test.cpp)
target_link_libraries(wifi_provision_test PRIVATE digiradio_core)
add_test(NAME wifi_provision_test COMMAND wifi_provision_test)
+
+add_executable(embedded_blob_reader_test embedded_blob_reader_test.cpp)
+target_link_libraries(embedded_blob_reader_test PRIVATE digiradio_core)
+add_test(NAME embedded_blob_reader_test COMMAND embedded_blob_reader_test)
+
+add_executable(tuner_json_test tuner_json_test.cpp)
+target_link_libraries(tuner_json_test PRIVATE digiradio_core)
+add_test(NAME tuner_json_test COMMAND tuner_json_test)
+
+add_executable(frequency_khz_test frequency_khz_test.cpp)
+target_link_libraries(frequency_khz_test PRIVATE digiradio_core)
+add_test(NAME frequency_khz_test COMMAND frequency_khz_test)
diff --git a/Software/components/core/test/embedded_blob_reader_test.cpp b/Software/components/core/test/embedded_blob_reader_test.cpp
new file mode 100644
index 0000000..f64276f
--- /dev/null
+++ b/Software/components/core/test/embedded_blob_reader_test.cpp
@@ -0,0 +1,79 @@
+/**
+ * @file embedded_blob_reader_test.cpp
+ * @brief Host tests for EmbeddedBlobReader streaming reads.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/EmbeddedBlobReader.hpp"
+
+#include
+#include
+#include
+
+namespace {
+
+bool expectEqual(std::size_t actual, std::size_t expected, const char* label)
+{
+ if (actual == expected) {
+ return true;
+ }
+ std::cerr << label << ": expected " << expected << ", got " << actual
+ << '\n';
+ return false;
+}
+
+} // namespace
+
+/**
+ * @brief main — run EmbeddedBlobReader host tests.
+ *
+ * @dname main
+ * @return 0 on success, 1 on failure.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+int main()
+{
+ const std::array source = {
+ std::byte{0x01}, std::byte{0x02}, std::byte{0x03}, std::byte{0x04},
+ std::byte{0x05}, std::byte{0x06}, std::byte{0x07}, std::byte{0x08},
+ };
+ core::EmbeddedBlobReader reader(source.data(), source.size());
+
+ if (!expectEqual(reader.size(), source.size(), "size")) {
+ return EXIT_FAILURE;
+ }
+
+ std::array chunk = {};
+ if (!expectEqual(reader.read(0U, chunk), 3U, "first read length")) {
+ return EXIT_FAILURE;
+ }
+ if (chunk[0] != std::byte{0x01} || chunk[2] != std::byte{0x03}) {
+ std::cerr << "first read content mismatch\n";
+ return EXIT_FAILURE;
+ }
+
+ if (!expectEqual(reader.read(6U, chunk), 2U, "tail read length")) {
+ return EXIT_FAILURE;
+ }
+ if (chunk[0] != std::byte{0x07} || chunk[1] != std::byte{0x08}) {
+ std::cerr << "tail read content mismatch\n";
+ return EXIT_FAILURE;
+ }
+
+ if (!expectEqual(reader.read(source.size(), chunk), 0U, "past end")) {
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "embedded_blob_reader_test: ok\n";
+ return EXIT_SUCCESS;
+}
diff --git a/Software/components/core/test/frequency_khz_test.cpp b/Software/components/core/test/frequency_khz_test.cpp
new file mode 100644
index 0000000..dfa8987
--- /dev/null
+++ b/Software/components/core/test/frequency_khz_test.cpp
@@ -0,0 +1,53 @@
+/**
+ * @file frequency_khz_test.cpp
+ * @brief Host tests for FrequencyKHz validation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/FrequencyKHz.hpp"
+#include "core/ParseError.hpp"
+
+#include
+#include
+
+namespace {
+
+[[nodiscard]] int runFrequencyAcceptTest()
+{
+ const auto parsed = core::FrequencyKHz::tryFromKhz(101500U);
+ if (!parsed || parsed->value() != 101500U) {
+ std::cerr << "expected 101500 kHz accepted\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runFrequencyRejectTest()
+{
+ const auto parsed = core::FrequencyKHz::tryFromKhz(50000U);
+ if (parsed || parsed.error() != core::ParseError::MissingField) {
+ std::cerr << "expected out-of-band frequency rejection\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+} // namespace
+
+int main()
+{
+ if (runFrequencyAcceptTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runFrequencyRejectTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/Software/components/core/test/tuner_json_test.cpp b/Software/components/core/test/tuner_json_test.cpp
new file mode 100644
index 0000000..598dfd8
--- /dev/null
+++ b/Software/components/core/test/tuner_json_test.cpp
@@ -0,0 +1,156 @@
+/**
+ * @file tuner_json_test.cpp
+ * @brief Host tests for tuner JSON parse/serialise.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "core/FrequencyKHz.hpp"
+#include "core/ParseError.hpp"
+#include "core/TunerBand.hpp"
+#include "core/TunerJson.hpp"
+#include "core/TunerStatus.hpp"
+
+#include
+#include
+#include
+
+namespace {
+
+[[nodiscard]] bool expectEqual(const std::string& actual,
+ const std::string& expected)
+{
+ if (actual == expected) {
+ return true;
+ }
+ std::cerr << "expected: " << expected << "\nactual: " << actual << '\n';
+ return false;
+}
+
+[[nodiscard]] int runTunerTuneParseDabTest()
+{
+ const auto parsed =
+ core::parseTunerTuneJson(R"({"band":"dab","freq_index":12})");
+ if (!parsed || parsed->band != core::TunerBand::Dab
+ || parsed->dabFreqIndex != 12U) {
+ std::cerr << "DAB tune parse failed\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerTuneParseFmTest()
+{
+ const auto parsed =
+ core::parseTunerTuneJson(R"({"band":"fm","frequency_khz":101500})");
+ if (!parsed || parsed->band != core::TunerBand::Fm
+ || !parsed->fmFrequency
+ || parsed->fmFrequency->value() != 101500U) {
+ std::cerr << "FM tune parse failed\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerTuneRejectTest()
+{
+ const auto parsed =
+ core::parseTunerTuneJson(R"({"band":"fm","frequency_khz":50000})");
+ if (parsed) {
+ std::cerr << "expected FM frequency rejection\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerPlayParseTest()
+{
+ const auto parsed =
+ core::parseTunerPlayJson(R"({"service_id":42,"component_id":7})");
+ if (!parsed || parsed->serviceId != 42U || parsed->componentId != 7U) {
+ std::cerr << "play parse failed\n";
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerStatusSerialiseTest()
+{
+ core::TunerStatus status = {};
+ status.booted = true;
+ status.band = core::TunerBand::Fm;
+ status.locked = true;
+ status.volume = 40;
+ status.fmFrequency = *core::FrequencyKHz::tryFromKhz(101500U);
+ status.fmRssiDbuV = -20;
+ status.fmSnrDb = 25;
+ status.fmStereo = true;
+
+ const std::string json = core::serializeTunerStatusJson(status);
+ if (json.find("\"booted\":true") == std::string::npos
+ || json.find("\"band\":\"fm\"") == std::string::npos
+ || json.find("\"frequency_khz\":101500") == std::string::npos) {
+ std::cerr << "status serialise missing fields: " << json << '\n';
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerServicesSerialiseTest()
+{
+ core::TunerServiceEntry entry = {};
+ entry.serviceId = 1U;
+ entry.componentId = 2U;
+ entry.label = {'R', 'A', 'I', '\0'};
+
+ const std::string json =
+ core::serializeTunerServicesJson({entry});
+ if (!expectEqual(json,
+ R"({"services":[{"service_id":1,"component_id":2,"label":"RAI"}]})")) {
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+[[nodiscard]] int runTunerErrorSerialiseTest()
+{
+ if (!expectEqual(core::serializeTunerErrorJson("not_booted"),
+ R"({"status":"error","reason":"not_booted"})")) {
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
+
+} // namespace
+
+int main()
+{
+ if (runTunerTuneParseDabTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerTuneParseFmTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerTuneRejectTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerPlayParseTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerStatusSerialiseTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerServicesSerialiseTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ if (runTunerErrorSerialiseTest() != EXIT_SUCCESS) {
+ return EXIT_FAILURE;
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/Software/components/drivers/adau1701/CMakeLists.txt b/Software/components/drivers/adau1701/CMakeLists.txt
index 6bf8c99..aa1d7fb 100644
--- a/Software/components/drivers/adau1701/CMakeLists.txt
+++ b/Software/components/drivers/adau1701/CMakeLists.txt
@@ -1,6 +1,14 @@
+set(ADAU_FW_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../Firmware/ADAU1701-Firmware")
+
idf_component_register(
- SRCS "src/component_stub.cpp"
- INCLUDE_DIRS "include"
+ SRCS
+ "src/Adau1701Driver.cpp"
+ "src/SigmaStudioFW.c"
+ "src/adau1701_program.c"
+ INCLUDE_DIRS
+ "include"
+ "${ADAU_FW_DIR}"
+ REQUIRES driver esp_driver_gpio esp_driver_i2c
)
target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_23)
diff --git a/Software/components/drivers/adau1701/include/adau1701/Adau1701Driver.hpp b/Software/components/drivers/adau1701/include/adau1701/Adau1701Driver.hpp
new file mode 100644
index 0000000..38b3201
--- /dev/null
+++ b/Software/components/drivers/adau1701/include/adau1701/Adau1701Driver.hpp
@@ -0,0 +1,112 @@
+/**
+ * @file Adau1701Driver.hpp
+ * @brief ADAU1701 SigmaDSP driver — RAM boot on every power-up.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "adau1701/Adau1701Error.hpp"
+
+#include
+
+namespace adau1701 {
+
+/**
+ * @brief Adau1701Pins — board GPIO/I2C identifiers for the DSP.
+ *
+ * @dname Adau1701Pins
+ * @return n/a (type)
+ * @pubstate Immutable wiring snapshot from board_pins.hpp.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Adau1701Pins {
+ int i2cSda; ///< I2C SDA GPIO.
+ int i2cScl; ///< I2C SCL GPIO.
+ int resetGpio; ///< DSP RESET# GPIO (active low).
+ int i2cAddr7; ///< 7-bit I2C address of the ADAU1701.
+};
+
+/**
+ * @brief Adau1701Driver — owns I2C + reset and loads SigmaStudio RAM.
+ *
+ * @dname Adau1701Driver
+ * @param pins Board wiring for I2C and RESET#.
+ * @return n/a (type)
+ * @pubstate Owns I2C bus/device handles (RAII). booted_ true after a
+ * successful default_download replay.
+ *
+ * Writes the SigmaStudio export from Firmware/ADAU1701-Firmware on every
+ * boot (no EEPROM self-boot on DigiRadio).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class Adau1701Driver {
+public:
+ /**
+ * @brief Adau1701Driver — construct with board pin map.
+ *
+ * @dname Adau1701Driver
+ * @param pins SDA/SCL/reset/address configuration.
+ * @pubstate stores pins_; not booted until boot().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ explicit Adau1701Driver(Adau1701Pins pins);
+
+ /**
+ * @brief ~Adau1701Driver — release I2C resources.
+ *
+ * @dname ~Adau1701Driver
+ * @pubstate deletes bus/device handles when created.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ ~Adau1701Driver();
+
+ Adau1701Driver(const Adau1701Driver&) = delete;
+ Adau1701Driver& operator=(const Adau1701Driver&) = delete;
+
+ /**
+ * @brief boot — reset the DSP and replay the SigmaStudio download.
+ *
+ * @dname boot
+ * @return Ok on success, or Adau1701Error.
+ * @pubstate writes booted_ on success; uses embedded program data.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected boot();
+
+ /**
+ * @brief isBooted — query whether RAM download succeeded.
+ *
+ * @dname isBooted
+ * @return true after a successful boot().
+ * @pubstate reads booted_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] bool isBooted() const noexcept;
+
+private:
+ Adau1701Pins pins_;
+ bool booted_;
+ void* i2cBus_;
+ void* i2cDev_;
+};
+
+} // namespace adau1701
diff --git a/Software/components/drivers/adau1701/include/adau1701/Adau1701Error.hpp b/Software/components/drivers/adau1701/include/adau1701/Adau1701Error.hpp
new file mode 100644
index 0000000..6632c31
--- /dev/null
+++ b/Software/components/drivers/adau1701/include/adau1701/Adau1701Error.hpp
@@ -0,0 +1,33 @@
+/**
+ * @file Adau1701Error.hpp
+ * @brief Typed errors for ADAU1701 driver operations.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace adau1701 {
+
+/**
+ * @brief Adau1701Error — failure causes for ADAU1701 bring-up.
+ *
+ * @dname Adau1701Error
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class Adau1701Error {
+ I2cInitFailed,
+ ResetFailed,
+ DownloadFailed,
+};
+
+} // namespace adau1701
diff --git a/Software/components/drivers/adau1701/src/Adau1701Driver.cpp b/Software/components/drivers/adau1701/src/Adau1701Driver.cpp
new file mode 100644
index 0000000..d238c32
--- /dev/null
+++ b/Software/components/drivers/adau1701/src/Adau1701Driver.cpp
@@ -0,0 +1,118 @@
+/**
+ * @file Adau1701Driver.cpp
+ * @brief Adau1701Driver implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "adau1701/Adau1701Driver.hpp"
+
+#include "SigmaStudioFW.h"
+
+#include "driver/gpio.h"
+#include "driver/i2c_master.h"
+#include "esp_log.h"
+#include "freertos/FreeRTOS.h"
+#include "freertos/task.h"
+
+extern "C" {
+
+/** @brief SigmaStudio default program download (generated C, not part of the C++ API). */
+void adau1701_run_default_download(void);
+
+} // extern "C"
+
+namespace adau1701 {
+
+namespace {
+constexpr char kTag[] = "Adau1701";
+constexpr int kI2cPort = 0;
+} // namespace
+
+Adau1701Driver::Adau1701Driver(Adau1701Pins pins)
+ : pins_(pins)
+ , booted_(false)
+ , i2cBus_(nullptr)
+ , i2cDev_(nullptr)
+{
+}
+
+Adau1701Driver::~Adau1701Driver()
+{
+ auto* dev = static_cast(i2cDev_);
+ auto* bus = static_cast(i2cBus_);
+ if (dev != nullptr) {
+ i2c_master_bus_rm_device(dev);
+ }
+ if (bus != nullptr) {
+ i2c_del_master_bus(bus);
+ }
+}
+
+std::expected Adau1701Driver::boot()
+{
+ if (booted_) {
+ return {};
+ }
+
+ gpio_config_t resetCfg = {};
+ resetCfg.pin_bit_mask = 1ULL << pins_.resetGpio;
+ resetCfg.mode = GPIO_MODE_OUTPUT;
+ if (gpio_config(&resetCfg) != ESP_OK) {
+ return std::unexpected(Adau1701Error::ResetFailed);
+ }
+
+ gpio_set_level(static_cast(pins_.resetGpio), 0);
+ vTaskDelay(pdMS_TO_TICKS(10));
+ gpio_set_level(static_cast(pins_.resetGpio), 1);
+ vTaskDelay(pdMS_TO_TICKS(10));
+
+ i2c_master_bus_config_t busCfg = {};
+ busCfg.i2c_port = static_cast(kI2cPort);
+ busCfg.sda_io_num = static_cast(pins_.i2cSda);
+ busCfg.scl_io_num = static_cast(pins_.i2cScl);
+ busCfg.clk_source = I2C_CLK_SRC_DEFAULT;
+ busCfg.glitch_ignore_cnt = 7;
+ busCfg.flags.enable_internal_pullup = true;
+
+ i2c_master_bus_handle_t bus = nullptr;
+ if (i2c_new_master_bus(&busCfg, &bus) != ESP_OK) {
+ ESP_LOGE(kTag, "i2c_new_master_bus failed");
+ return std::unexpected(Adau1701Error::I2cInitFailed);
+ }
+ i2cBus_ = bus;
+
+ i2c_device_config_t devCfg = {};
+ devCfg.dev_addr_length = I2C_ADDR_BIT_LEN_7;
+ devCfg.device_address = static_cast(pins_.i2cAddr7);
+ devCfg.scl_speed_hz = 100000;
+
+ i2c_master_dev_handle_t dev = nullptr;
+ if (i2c_master_bus_add_device(bus, &devCfg, &dev) != ESP_OK) {
+ ESP_LOGE(kTag, "i2c_master_bus_add_device failed");
+ return std::unexpected(Adau1701Error::I2cInitFailed);
+ }
+ i2cDev_ = dev;
+
+ sigma_studio_bind_i2c(kI2cPort, static_cast(pins_.i2cAddr7));
+ sigma_studio_set_device(dev);
+
+ adau1701_run_default_download();
+
+ booted_ = true;
+ ESP_LOGI(kTag, "SigmaStudio program loaded");
+ return {};
+}
+
+bool Adau1701Driver::isBooted() const noexcept
+{
+ return booted_;
+}
+
+} // namespace adau1701
diff --git a/Software/components/drivers/adau1701/src/SigmaStudioFW.c b/Software/components/drivers/adau1701/src/SigmaStudioFW.c
new file mode 100644
index 0000000..0a88dff
--- /dev/null
+++ b/Software/components/drivers/adau1701/src/SigmaStudioFW.c
@@ -0,0 +1,60 @@
+/**
+ * @file SigmaStudioFW.c
+ * @brief SigmaStudio SIGMA_WRITE_REGISTER_BLOCK for ESP-IDF I2C.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "SigmaStudioFW.h"
+
+#include "driver/i2c_master.h"
+
+#include
+
+static i2c_master_dev_handle_t s_dev = NULL;
+
+void sigma_studio_bind_i2c(int port, unsigned char addr7)
+{
+ (void)port;
+ (void)addr7;
+}
+
+void sigma_studio_set_device(void* i2cDevHandle)
+{
+ s_dev = (i2c_master_dev_handle_t)i2cDevHandle;
+}
+
+void SIGMA_WRITE_REGISTER_BLOCK(unsigned char devAddress,
+ unsigned int address,
+ unsigned char length,
+ ADI_REG_TYPE* pData)
+{
+ (void)devAddress;
+ if (s_dev == NULL || pData == NULL || length == 0U) {
+ return;
+ }
+
+ enum { kChunk = 64U };
+ unsigned int addr = address;
+ unsigned char remaining = length;
+ ADI_REG_TYPE* cursor = pData;
+
+ while (remaining > 0U) {
+ const unsigned char chunk =
+ remaining > kChunk ? kChunk : remaining;
+ unsigned char buf[2U + 64U];
+ buf[0] = (unsigned char)((addr >> 8) & 0xFFU);
+ buf[1] = (unsigned char)(addr & 0xFFU);
+ memcpy(buf + 2U, cursor, chunk);
+ i2c_master_transmit(s_dev, buf, (size_t)(2U + chunk), 1000);
+ addr += chunk;
+ cursor += chunk;
+ remaining = (unsigned char)(remaining - chunk);
+ }
+}
diff --git a/Software/components/drivers/adau1701/src/adau1701_program.c b/Software/components/drivers/adau1701/src/adau1701_program.c
new file mode 100644
index 0000000..f7fab9f
--- /dev/null
+++ b/Software/components/drivers/adau1701/src/adau1701_program.c
@@ -0,0 +1,20 @@
+/**
+ * @file adau1701_program.c
+ * @brief SigmaStudio default download for DigiRadio ADAU1701.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "SigmaStudioFW.h"
+#include "DigiRadio_IC_1.h"
+
+void adau1701_run_default_download(void)
+{
+ default_download_IC_1();
+}
diff --git a/Software/components/drivers/adau1701/src/component_stub.cpp b/Software/components/drivers/adau1701/src/component_stub.cpp
deleted file mode 100644
index fd373ef..0000000
--- a/Software/components/drivers/adau1701/src/component_stub.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file component_stub.cpp
- * @brief ADAU1701 driver component placeholder (Slice 5).
- *
- * DigiRadio firmware — https://github.com/manvalan/DigiRadio
- *
- * Copyright 2026 Michele Bigi
- * 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
- *
- * @author Michele Bigi
- * @date 2026-07-06
- */
-
-namespace adau1701::detail {
-
-/**
- * @brief adau1701ComponentLinked — ensures the driver component links.
- *
- * @dname adau1701ComponentLinked
- * @return n/a (type)
- * @pubstate n/a
- *
- * @author Michele Bigi
- * @date 2026-07-06
- */
-void adau1701ComponentLinked() noexcept {}
-
-} // namespace adau1701::detail
diff --git a/Software/components/drivers/si4684/CMakeLists.txt b/Software/components/drivers/si4684/CMakeLists.txt
index 6bf8c99..1b29674 100644
--- a/Software/components/drivers/si4684/CMakeLists.txt
+++ b/Software/components/drivers/si4684/CMakeLists.txt
@@ -1,6 +1,23 @@
+set(SI4684_FW_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../Firmware/Si4684-Firmware")
+
+if(NOT EXISTS "${SI4684_FW_DIR}/fm_firmware.bin")
+ message(FATAL_ERROR
+ "Missing ${SI4684_FW_DIR}/fm_firmware.bin — run:\n"
+ " python3 tools/fetch_si4684_firmware.py --from-ugreen-radio-cli \n"
+ " python3 tools/fetch_si4684_firmware.py --si46xx-dir ")
+endif()
+
idf_component_register(
- SRCS "src/component_stub.cpp"
+ SRCS
+ "src/Si4684Driver.cpp"
+ "src/Si4684EmbeddedImages.cpp"
+ "src/Si4684Tuner.cpp"
INCLUDE_DIRS "include"
+ REQUIRES core driver esp_driver_gpio esp_driver_spi
+ EMBED_FILES
+ "${SI4684_FW_DIR}/rom_patch_016.bin"
+ "${SI4684_FW_DIR}/dab_firmware.bin"
+ "${SI4684_FW_DIR}/fm_firmware.bin"
)
target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_23)
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684Band.hpp b/Software/components/drivers/si4684/include/si4684/Si4684Band.hpp
new file mode 100644
index 0000000..ab55366
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684Band.hpp
@@ -0,0 +1,32 @@
+/**
+ * @file Si4684Band.hpp
+ * @brief Tuner band selection for Si4684 firmware images.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace si4684 {
+
+/**
+ * @brief Si4684Band — application image loaded after ROM patch.
+ *
+ * @dname Si4684Band
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class Si4684Band {
+ Dab,
+ Fm,
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684Driver.hpp b/Software/components/drivers/si4684/include/si4684/Si4684Driver.hpp
new file mode 100644
index 0000000..c51ed63
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684Driver.hpp
@@ -0,0 +1,370 @@
+/**
+ * @file Si4684Driver.hpp
+ * @brief Si4684 DAB+/FM tuner — boot, tuning, status, and service control.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/IFirmwareBlobReader.hpp"
+#include "core/SeekDirection.hpp"
+#include "si4684/Si4684Band.hpp"
+#include "si4684/Si4684Error.hpp"
+#include "si4684/Si4684Types.hpp"
+
+#include
+#include
+#include
+#include
+
+namespace si4684 {
+
+/**
+ * @brief Si4684Pins — board GPIO/SPI identifiers for the tuner.
+ *
+ * @dname Si4684Pins
+ * @return n/a (type)
+ * @pubstate Immutable wiring snapshot from board_pins.hpp.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684Pins {
+ int spiHost; ///< ESP32 SPI host peripheral index.
+ int csGpio; ///< Chip-select GPIO.
+ int misoGpio; ///< MISO GPIO.
+ int mosiGpio; ///< MOSI GPIO.
+ int sclkGpio; ///< SCLK GPIO.
+ int rstbGpio; ///< RESET# GPIO (active low).
+ int intbGpio; ///< INTB GPIO (optional status interrupt).
+};
+
+/**
+ * @brief Si4684Driver — full Si4684 control over SPI (AN649 / PE5PVB).
+ *
+ * @dname Si4684Driver
+ * @return n/a (type)
+ * @pubstate Owns the SPI link and boot state. Register-level command bytes
+ * stay private; callers use intent-level methods only.
+ *
+ * Implements the documented boot sequence plus band-specific tuning, property
+ * access, RSQ/DIGRAD reads, and DAB service selection.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class Si4684Driver {
+public:
+ /**
+ * @brief Si4684Driver — construct with board pins and firmware blobs.
+ *
+ * @dname Si4684Driver
+ * @param pins Board SPI and GPIO wiring.
+ * @param patch ROM patch blob reader for HOST_LOAD.
+ * @param dabImage DAB application image reader.
+ * @param fmImage FM application image reader.
+ * @pubstate stores pin map and blob references; not booted until boot().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ Si4684Driver(Si4684Pins pins,
+ const core::IFirmwareBlobReader& patch,
+ const core::IFirmwareBlobReader& dabImage,
+ const core::IFirmwareBlobReader& fmImage);
+
+ /**
+ * @brief ~Si4684Driver — release SPI resources.
+ *
+ * @dname ~Si4684Driver
+ * @pubstate removes SPI device and bus when active.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ ~Si4684Driver();
+
+ Si4684Driver(const Si4684Driver&) = delete;
+ Si4684Driver& operator=(const Si4684Driver&) = delete;
+
+ /**
+ * @brief boot — cold-start: load patch, image, and configure I/O.
+ *
+ * @dname boot
+ * @param band DAB or FM application to load.
+ * @return Ok on success, or Si4684Error.
+ * @pubstate writes booted_ and loadedBand_ on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected boot(Si4684Band band);
+
+ /**
+ * @brief isBooted — query whether boot completed successfully.
+ *
+ * @dname isBooted
+ * @return true after a successful boot().
+ * @pubstate reads booted_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] bool isBooted() const noexcept;
+
+ /**
+ * @brief loadedBand — read the active application band.
+ *
+ * @dname loadedBand
+ * @return Si4684Band loaded by the last successful boot().
+ * @pubstate reads loadedBand_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] Si4684Band loadedBand() const noexcept;
+
+ /**
+ * @brief getPartInfo — read chip identity and firmware revision.
+ *
+ * @dname getPartInfo
+ * @return Si4684PartInfo on success, or Si4684Error.
+ * @pubstate reads chip via GET_PART_INFO (AN649).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected getPartInfo();
+
+ /**
+ * @brief getSysState — read the running application state.
+ *
+ * @dname getSysState
+ * @return Si4684SysState on success, or Si4684Error.
+ * @pubstate reads chip via GET_SYS_STATE.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected getSysState();
+
+ /**
+ * @brief setProperty — write a Skyworks property (SET_PROPERTY 0x13).
+ *
+ * @dname setProperty
+ * @param propertyId 16-bit property address.
+ * @param value 16-bit property value.
+ * @return Ok on success, or Si4684Error.
+ * @pubstate writes property via SPI command.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected setProperty(
+ std::uint16_t propertyId, std::uint16_t value);
+
+ /**
+ * @brief setVolume — set audio attenuator 0–63 (property 0x0300).
+ *
+ * @dname setVolume
+ * @param level Attenuator level 0–63.
+ * @return Ok on success, or Si4684Error.
+ * @pubstate writes AUDIO_VOLUME property.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected setVolume(std::uint8_t level);
+
+ /**
+ * @brief tuneFm — tune FM to a validated centre frequency.
+ *
+ * @dname tuneFm
+ * @param frequency FM centre frequency in kHz.
+ * @return Ok on success, or Si4684Error::WrongBand / TuneFailed.
+ * @pubstate sends FM_TUNE_FREQ and waits for STC (AN649).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected tuneFm(
+ core::FrequencyKHz frequency);
+
+ /**
+ * @brief seekFm — seek FM in the given direction.
+ *
+ * @dname seekFm
+ * @param direction Up or Down scan direction.
+ * @param wrap Band wrap behaviour for FM_SEEK_START.
+ * @return New centre frequency on success, or Si4684Error.
+ * @pubstate sends FM_SEEK_START and waits for STC.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected seekFm(
+ core::SeekDirection direction, SeekBandWrap wrap);
+
+ /**
+ * @brief readFmRsq — read FM signal quality metrics.
+ *
+ * @dname readFmRsq
+ * @return Si4684FmRsq on success, or Si4684Error.
+ * @pubstate reads FM_RSQ_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected readFmRsq();
+
+ /**
+ * @brief readFmRds — read a raw RDS group snapshot.
+ *
+ * @dname readFmRds
+ * @return Si4684FmRdsStatus on success, or Si4684Error.
+ * @pubstate reads FM_RDS_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected readFmRds();
+
+ /**
+ * @brief installDefaultDabFrequencyPlan — load Band III frequency list.
+ *
+ * @dname installDefaultDabFrequencyPlan
+ * @return Ok on success, or Si4684Error.
+ * @pubstate sends DAB_SET_FREQ_LIST with kDefaultDabFrequencyKhz.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected installDefaultDabFrequencyPlan();
+
+ /**
+ * @brief tuneDab — tune to a Band III ensemble index.
+ *
+ * @dname tuneDab
+ * @param freqIndex Ensemble index 0–37.
+ * @return Ok on success, or Si4684Error.
+ * @pubstate sends DAB_TUNE_FREQ and waits for STC.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected tuneDab(std::uint8_t freqIndex);
+
+ /**
+ * @brief readDabDigRadStatus — read ensemble lock metrics.
+ *
+ * @dname readDabDigRadStatus
+ * @return Si4684DabDigRadStatus on success, or Si4684Error.
+ * @pubstate reads DAB_DIGRAD_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected
+ readDabDigRadStatus();
+
+ /**
+ * @brief readDabEventStatus — read DAB event flags.
+ *
+ * @dname readDabEventStatus
+ * @return Si4684DabEventStatus on success, or Si4684Error.
+ * @pubstate reads DAB_GET_EVENT_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected
+ readDabEventStatus();
+
+ /**
+ * @brief fetchDabServiceList — retrieve programmes for the ensemble.
+ *
+ * @dname fetchDabServiceList
+ * @return Service rows on success, or Si4684Error.
+ * @pubstate reads GET_DIGITAL_SERVICE_LIST chunks from the chip.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected, Si4684Error>
+ fetchDabServiceList();
+
+ /**
+ * @brief startDabService — start DAB audio for a programme.
+ *
+ * @dname startDabService
+ * @param serviceId Selected service identifier.
+ * @param componentId Audio component within the service.
+ * @param type Digital service type (audio by default).
+ * @return Ok on success, or Si4684Error.
+ * @pubstate sends START_DIGITAL_SERVICE.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected startDabService(
+ std::uint32_t serviceId,
+ std::uint32_t componentId,
+ Si4684DigitalServiceType type = Si4684DigitalServiceType::Audio);
+
+private:
+ enum class Command : std::uint8_t {
+ PowerUp = 0x01,
+ HostLoad = 0x04,
+ LoadInit = 0x06,
+ BootCmd = 0x07,
+ GetPartInfo = 0x08,
+ GetSysState = 0x09,
+ GetFuncInfo = 0x12,
+ SetProperty = 0x13,
+ FmTuneFreq = 0x30,
+ FmSeekStart = 0x31,
+ FmRsqStatus = 0x32,
+ FmRdsStatus = 0x34,
+ GetDigitalServiceList = 0x80,
+ StartDigitalService = 0x81,
+ GetDigitalServiceData = 0x84,
+ DabTuneFreq = 0xB0,
+ DabDigRadStatus = 0xB2,
+ DabGetEventStatus = 0xB3,
+ DabSetFreqList = 0xB8,
+ };
+
+ [[nodiscard]] std::expected ensureBooted() const;
+ [[nodiscard]] std::expected ensureBand(
+ Si4684Band band) const;
+ [[nodiscard]] std::expected waitCts();
+ [[nodiscard]] std::expected waitStc();
+ [[nodiscard]] std::expected sendCommand(
+ std::span bytes);
+ [[nodiscard]] std::expected readRaw(
+ std::span buffer);
+ [[nodiscard]] std::expected writeCommand(
+ Command cmd, const std::uint8_t* payload, std::size_t length);
+ [[nodiscard]] std::expected hostLoadBlob(
+ const core::IFirmwareBlobReader& blob, std::size_t chunkPayload);
+ [[nodiscard]] std::expected configureAfterBoot(
+ Si4684Band band);
+
+ Si4684Pins pins_;
+ const core::IFirmwareBlobReader& patch_;
+ const core::IFirmwareBlobReader& dabImage_;
+ const core::IFirmwareBlobReader& fmImage_;
+ bool booted_;
+ Si4684Band loadedBand_;
+ bool spiBusActive_;
+ void* spiDevice_;
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684EmbeddedImages.hpp b/Software/components/drivers/si4684/include/si4684/Si4684EmbeddedImages.hpp
new file mode 100644
index 0000000..d567c97
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684EmbeddedImages.hpp
@@ -0,0 +1,100 @@
+/**
+ * @file Si4684EmbeddedImages.hpp
+ * @brief Embedded Si4684 ROM patch, DAB and FM firmware blob accessors.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/EmbeddedBlobReader.hpp"
+#include "si4684/Si4684Band.hpp"
+
+namespace si4684 {
+
+/**
+ * @brief Si4684EmbeddedImages — flash-backed Si4684 firmware blobs.
+ *
+ * @dname Si4684EmbeddedImages
+ * @return n/a (type)
+ * @pubstate Owns EmbeddedBlobReader views over EMBED_FILES symbols from
+ * Firmware/Si4684-Firmware/.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class Si4684EmbeddedImages {
+public:
+ /**
+ * @brief Si4684EmbeddedImages — bind linker-embedded binaries.
+ *
+ * @dname Si4684EmbeddedImages
+ * @pubstate constructs patch_, dab_, and fm_ readers from flash symbols.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ Si4684EmbeddedImages();
+
+ /**
+ * @brief romPatch — ROM patch blob for HOST_LOAD before main image.
+ *
+ * @dname romPatch
+ * @return Reader over rom_patch_016.bin.
+ * @pubstate reads patch_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] const core::IFirmwareBlobReader& romPatch() const noexcept;
+
+ /**
+ * @brief dabFirmware — DAB application image blob.
+ *
+ * @dname dabFirmware
+ * @return Reader over dab_firmware.bin.
+ * @pubstate reads dab_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] const core::IFirmwareBlobReader& dabFirmware() const noexcept;
+
+ /**
+ * @brief fmFirmware — FM application image blob.
+ *
+ * @dname fmFirmware
+ * @return Reader over fm_firmware.bin.
+ * @pubstate reads fm_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] const core::IFirmwareBlobReader& fmFirmware() const noexcept;
+
+ /**
+ * @brief applicationImage — map band to embedded application blob.
+ *
+ * @dname applicationImage
+ * @param band DAB or FM image selector.
+ * @return Reader for the selected application firmware.
+ * @pubstate reads dab_ or fm_.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] const core::IFirmwareBlobReader& applicationImage(
+ Si4684Band band) const noexcept;
+
+private:
+ core::EmbeddedBlobReader patch_;
+ core::EmbeddedBlobReader dab_;
+ core::EmbeddedBlobReader fm_;
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684Error.hpp b/Software/components/drivers/si4684/include/si4684/Si4684Error.hpp
new file mode 100644
index 0000000..c85cb73
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684Error.hpp
@@ -0,0 +1,44 @@
+/**
+ * @file Si4684Error.hpp
+ * @brief Typed errors for Si4684 driver operations.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+namespace si4684 {
+
+/**
+ * @brief Si4684Error — failure causes for Si4684 bring-up and tuning.
+ *
+ * @dname Si4684Error
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class Si4684Error {
+ SpiInitFailed,
+ ResetFailed,
+ CtsTimeout,
+ PowerUpFailed,
+ PatchLoadFailed,
+ ImageLoadFailed,
+ BootFailed,
+ NotBooted,
+ WrongBand,
+ CommandFailed,
+ StcTimeout,
+ TuneFailed,
+ ReplyTooShort,
+ BufferTooSmall,
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684Tuner.hpp b/Software/components/drivers/si4684/include/si4684/Si4684Tuner.hpp
new file mode 100644
index 0000000..d5d800b
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684Tuner.hpp
@@ -0,0 +1,195 @@
+/**
+ * @file Si4684Tuner.hpp
+ * @brief core::ITuner adapter over Si4684Driver.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/ITuner.hpp"
+#include "si4684/Si4684Driver.hpp"
+
+namespace si4684 {
+
+/**
+ * @brief Si4684Tuner — maps Si4684Driver to core::ITuner.
+ *
+ * @dname Si4684Tuner
+ * @param driver Borrowed Si4684Driver (must outlive this adapter).
+ * @return n/a (type)
+ * @pubstate Borrows driver_. Caches last DAB index, FM frequency, and volume
+ * for status reporting. No public data members.
+ *
+ * Translates domain calls into SPI commands and maps Si4684Error to
+ * core::TunerError at this boundary.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+class Si4684Tuner : public core::ITuner {
+public:
+ /**
+ * @brief Si4684Tuner — bind to a booted or bootable driver instance.
+ *
+ * @dname Si4684Tuner
+ * @param driver Si4684 driver constructed by HardwareBootstrap.
+ * @pubstate stores driver reference; sets default tune targets.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ explicit Si4684Tuner(Si4684Driver& driver);
+
+ /**
+ * @brief boot — load the requested Si4684 application image.
+ *
+ * @dname boot
+ * @param band DAB or FM image to load.
+ * @return Ok on success, or a mapped TunerError.
+ * @pubstate delegates to driver_.boot().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected boot(
+ core::TunerBand band) override;
+
+ /**
+ * @brief currentBand — read the loaded application band.
+ *
+ * @dname currentBand
+ * @return Active TunerBand, or TunerError::NotBooted.
+ * @pubstate reads driver_.loadedBand().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected currentBand()
+ const override;
+
+ /**
+ * @brief readStatus — build a core TunerStatus from driver metrics.
+ *
+ * @dname readStatus
+ * @return TunerStatus on success, or a mapped TunerError.
+ * @pubstate reads driver_; refreshes cached tune targets from RSQ/DIGRAD.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected readStatus()
+ override;
+
+ /**
+ * @brief tuneDab — tune to a Band III ensemble index.
+ *
+ * @dname tuneDab
+ * @param freqIndex Ensemble index 0–37.
+ * @return Ok on success, or a mapped TunerError.
+ * @pubstate writes dabIndex_ on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected tuneDab(
+ std::uint8_t freqIndex) override;
+
+ /**
+ * @brief tuneFm — tune to an FM centre frequency in kHz.
+ *
+ * @dname tuneFm
+ * @param frequency Validated FM centre frequency.
+ * @return Ok on success, or a mapped TunerError.
+ * @pubstate writes fmFrequency_ on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected tuneFm(
+ core::FrequencyKHz frequency) override;
+
+ /**
+ * @brief seekFm — seek FM with band wrap.
+ *
+ * @dname seekFm
+ * @param direction Up or Down scan direction.
+ * @return New centre frequency, or a mapped TunerError.
+ * @pubstate writes fmFrequency_ on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected seekFm(
+ core::SeekDirection direction) override;
+
+ /**
+ * @brief listDabServices — fetch programmes for the current ensemble.
+ *
+ * @dname listDabServices
+ * @return Service entries, ServiceListEmpty, or a mapped TunerError.
+ * @pubstate reads driver_ service list when ready.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected,
+ core::TunerError>
+ listDabServices() override;
+
+ /**
+ * @brief playDabService — start DAB audio output.
+ *
+ * @dname playDabService
+ * @param serviceId Selected service identifier.
+ * @param componentId Audio component within the service.
+ * @return Ok on success, or a mapped TunerError.
+ * @pubstate delegates to driver_.startDabService().
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected playDabService(
+ std::uint32_t serviceId, std::uint32_t componentId) override;
+
+ /**
+ * @brief setVolume — set Si4684 output attenuation.
+ *
+ * @dname setVolume
+ * @param level Attenuator 0–63.
+ * @return Ok on success, or a mapped TunerError.
+ * @pubstate writes volume_ on success.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] std::expected setVolume(
+ std::uint8_t level) override;
+
+private:
+ /**
+ * @brief mapError — translate Si4684Error to core::TunerError.
+ *
+ * @dname mapError
+ * @param error Driver-level failure cause.
+ * @return Equivalent TunerError for services and HTTP layer.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+ [[nodiscard]] static core::TunerError mapError(Si4684Error error) noexcept;
+
+ Si4684Driver& driver_;
+ std::uint8_t dabIndex_;
+ core::FrequencyKHz fmFrequency_;
+ std::uint8_t volume_;
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/include/si4684/Si4684Types.hpp b/Software/components/drivers/si4684/include/si4684/Si4684Types.hpp
new file mode 100644
index 0000000..19becd4
--- /dev/null
+++ b/Software/components/drivers/si4684/include/si4684/Si4684Types.hpp
@@ -0,0 +1,176 @@
+/**
+ * @file Si4684Types.hpp
+ * @brief Domain types for Si4684 tuner operations (DAB/FM status, services).
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+#pragma once
+
+#include "core/FrequencyKHz.hpp"
+#include "core/SeekDirection.hpp"
+
+#include
+#include
+#include
+
+namespace si4684 {
+
+/**
+ * @brief Si4684DigitalServiceType — START_DIGITAL_SERVICE mode byte.
+ *
+ * @dname Si4684DigitalServiceType
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class Si4684DigitalServiceType : std::uint8_t {
+ Audio = 0x00,
+ Packet = 0x01,
+};
+
+/**
+ * @brief SeekBandWrap — FM seek band-wrap behaviour (FM_SEEK_START).
+ *
+ * @dname SeekBandWrap
+ * @return n/a (type)
+ * @pubstate n/a
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+enum class SeekBandWrap { Wrap, NoWrap };
+
+/**
+ * @brief Si4684PartInfo — chip identity from GET_PART_INFO (AN649).
+ *
+ * @dname Si4684PartInfo
+ * @return n/a (type)
+ * @pubstate Plain DTO from GET_PART_INFO response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684PartInfo {
+ std::uint16_t chipId; ///< Part identifier from the chip.
+ std::uint8_t firmwareMajor; ///< Loaded firmware major version.
+ std::uint8_t firmwareMinor; ///< Loaded firmware minor version.
+ std::uint8_t firmwareBuild; ///< Loaded firmware build number.
+};
+
+/**
+ * @brief Si4684SysState — running application after boot.
+ *
+ * @dname Si4684SysState
+ * @return n/a (type)
+ * @pubstate Plain DTO from GET_SYS_STATE.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684SysState {
+ std::uint8_t imageType; ///< Loaded image type byte from the chip.
+};
+
+/**
+ * @brief Si4684FmRsq — FM received-signal quality (FM_RSQ_STATUS).
+ *
+ * @dname Si4684FmRsq
+ * @return n/a (type)
+ * @pubstate Plain DTO from FM_RSQ_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684FmRsq {
+ core::FrequencyKHz frequency; ///< Tuned centre frequency in kHz.
+ std::int8_t rssiDbuV; ///< RSSI in dBµV.
+ std::int8_t snrDb; ///< SNR in dB.
+ bool valid; ///< RSQ valid flag from the chip.
+ bool stereo; ///< Stereo pilot detected.
+};
+
+/**
+ * @brief Si4684FmRdsStatus — raw RDS group snapshot (FM_RDS_STATUS).
+ *
+ * @dname Si4684FmRdsStatus
+ * @return n/a (type)
+ * @pubstate Plain DTO from FM_RDS_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684FmRdsStatus {
+ std::uint16_t blockA; ///< RDS block A.
+ std::uint16_t blockB; ///< RDS block B.
+ std::uint16_t blockC; ///< RDS block C.
+ std::uint16_t blockD; ///< RDS block D.
+ bool received; ///< Group received flag.
+};
+
+/**
+ * @brief Si4684DabDigRadStatus — ensemble lock metrics (DAB_DIGRAD_STATUS).
+ *
+ * @dname Si4684DabDigRadStatus
+ * @return n/a (type)
+ * @pubstate Plain DTO from DAB_DIGRAD_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684DabDigRadStatus {
+ std::uint8_t ficQuality; ///< FIC quality 0–100.
+ std::uint8_t cnrDb; ///< CNR in dB.
+ bool acquired; ///< Ensemble acquired flag.
+ bool valid; ///< DIGRAD valid flag.
+};
+
+/**
+ * @brief Si4684DabEventStatus — DAB event flags (DAB_GET_EVENT_STATUS).
+ *
+ * @dname Si4684DabEventStatus
+ * @return n/a (type)
+ * @pubstate Plain DTO from DAB_GET_EVENT_STATUS response bytes.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684DabEventStatus {
+ bool serviceListReady; ///< Service list available for fetch.
+ bool reconfig; ///< Ensemble reconfiguration event.
+};
+
+/**
+ * @brief Si4684DabService — one row from GET_DIGITAL_SERVICE_LIST.
+ *
+ * @dname Si4684DabService
+ * @return n/a (type)
+ * @pubstate Plain DTO parsed from a service-list chunk.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct Si4684DabService {
+ std::uint32_t serviceId; ///< DAB service identifier.
+ std::uint32_t componentId; ///< Audio component identifier.
+ std::array label; ///< Programme label, NUL-terminated.
+ std::uint8_t serviceType; ///< Service type byte from the list.
+};
+
+/** Band III DAB channel plan (kHz), PE5PVB / ETSI EN 300 401 Table 14. */
+inline constexpr std::array kDefaultDabFrequencyKhz = {
+ 174928, 176640, 178352, 180064, 181936, 183648, 185360, 187072, 188928,
+ 190640, 192352, 194064, 195936, 197648, 199360, 201072, 202928, 204640,
+ 206352, 208064, 209936, 211648, 213360, 215072, 216928, 218640, 220352,
+ 222064, 223936, 225648, 227360, 229072, 230784, 232496, 234208, 235776,
+ 237488, 239200,
+};
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/src/Si4684Driver.cpp b/Software/components/drivers/si4684/src/Si4684Driver.cpp
new file mode 100644
index 0000000..40b8970
--- /dev/null
+++ b/Software/components/drivers/si4684/src/Si4684Driver.cpp
@@ -0,0 +1,776 @@
+/**
+ * @file Si4684Driver.cpp
+ * @brief Si4684Driver implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "si4684/Si4684Driver.hpp"
+
+#include "driver/gpio.h"
+#include "driver/spi_master.h"
+#include "esp_log.h"
+#include "freertos/FreeRTOS.h"
+#include "freertos/task.h"
+
+#include
+#include
+#include
+#include
+
+namespace si4684 {
+
+namespace {
+
+constexpr char kTag[] = "Si4684";
+constexpr std::size_t kSpiBufferSize = 4096U;
+constexpr int kCtsPollMs = 2;
+constexpr int kCtsRetries = 200;
+constexpr int kStcRetries = 250;
+constexpr int kStcPollMs = 20;
+
+constexpr std::uint16_t kPropDigitalIoOutputSelect = 0x0200U;
+constexpr std::uint16_t kPropDigitalIoSampleRate = 0x0201U;
+constexpr std::uint16_t kPropPinConfigEnable = 0x0800U;
+constexpr std::uint16_t kPropAudioVolume = 0x0300U;
+constexpr std::uint16_t kPropFmRdsConfig = 0x3C02U;
+constexpr std::uint16_t kPropDabTuneFeCfg = 0x1712U;
+constexpr std::uint16_t kPropDabXpadEnable = 0xB400U;
+constexpr std::uint16_t kPropDigitalServiceIntSource = 0x8100U;
+
+std::uint16_t readLe16(const std::uint8_t* p)
+{
+ return static_cast(p[0] | (static_cast(p[1]) << 8));
+}
+
+std::uint32_t readLe32(const std::uint8_t* p)
+{
+ return static_cast(p[0])
+ | (static_cast(p[1]) << 8)
+ | (static_cast(p[2]) << 16)
+ | (static_cast(p[3]) << 24);
+}
+
+/** FM_TUNE_FREQ uses 10 kHz units (AN649); API uses kHz. */
+[[nodiscard]] std::uint16_t kHzToChipFmFreq(std::uint32_t frequencyKhz)
+{
+ return static_cast(frequencyKhz / 10U);
+}
+
+[[nodiscard]] std::uint32_t chipFmFreqToKHz(std::uint16_t chipFreq)
+{
+ return static_cast(chipFreq) * 10U;
+}
+
+} // namespace
+
+Si4684Driver::Si4684Driver(Si4684Pins pins,
+ const core::IFirmwareBlobReader& patch,
+ const core::IFirmwareBlobReader& dabImage,
+ const core::IFirmwareBlobReader& fmImage)
+ : pins_(pins)
+ , patch_(patch)
+ , dabImage_(dabImage)
+ , fmImage_(fmImage)
+ , booted_(false)
+ , loadedBand_(Si4684Band::Dab)
+ , spiBusActive_(false)
+ , spiDevice_(nullptr)
+{
+}
+
+Si4684Driver::~Si4684Driver()
+{
+ if (spiDevice_ != nullptr) {
+ spi_bus_remove_device(static_cast(spiDevice_));
+ spiDevice_ = nullptr;
+ }
+ if (spiBusActive_) {
+ spi_bus_free(static_cast(pins_.spiHost));
+ spiBusActive_ = false;
+ }
+}
+
+std::expected Si4684Driver::ensureBooted() const
+{
+ if (!booted_) {
+ return std::unexpected(Si4684Error::NotBooted);
+ }
+ return {};
+}
+
+std::expected Si4684Driver::ensureBand(
+ Si4684Band band) const
+{
+ if (auto ready = ensureBooted(); !ready) {
+ return ready;
+ }
+ if (loadedBand_ != band) {
+ return std::unexpected(Si4684Error::WrongBand);
+ }
+ return {};
+}
+
+std::expected Si4684Driver::waitCts()
+{
+ std::array pollTx = {};
+ std::array pollRx = {};
+
+ for (int attempt = 0; attempt < kCtsRetries; ++attempt) {
+ vTaskDelay(pdMS_TO_TICKS(kCtsPollMs));
+ spi_transaction_t txn = {};
+ txn.length = pollTx.size() * 8U;
+ txn.tx_buffer = pollTx.data();
+ txn.rx_buffer = pollRx.data();
+ if (spi_device_transmit(static_cast(spiDevice_),
+ &txn) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ if ((pollRx[1] & 0x80U) != 0U) {
+ return {};
+ }
+ }
+ return std::unexpected(Si4684Error::CtsTimeout);
+}
+
+std::expected Si4684Driver::waitStc()
+{
+ std::array pollTx = {};
+ std::array pollRx = {};
+
+ for (int attempt = 0; attempt < kStcRetries; ++attempt) {
+ vTaskDelay(pdMS_TO_TICKS(kStcPollMs));
+ spi_transaction_t txn = {};
+ txn.length = pollTx.size() * 8U;
+ txn.tx_buffer = pollTx.data();
+ txn.rx_buffer = pollRx.data();
+ if (spi_device_transmit(static_cast(spiDevice_),
+ &txn) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ if ((pollRx[1] & 0x01U) != 0U) {
+ return {};
+ }
+ }
+ return std::unexpected(Si4684Error::StcTimeout);
+}
+
+std::expected Si4684Driver::sendCommand(
+ std::span bytes)
+{
+ if (bytes.empty() || bytes.size() > kSpiBufferSize) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ spi_transaction_t txn = {};
+ txn.length = bytes.size() * 8U;
+ txn.tx_buffer = bytes.data();
+ if (spi_device_transmit(static_cast(spiDevice_),
+ &txn) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ return waitCts();
+}
+
+std::expected Si4684Driver::readRaw(
+ std::span buffer)
+{
+ if (buffer.empty() || buffer.size() > kSpiBufferSize) {
+ return std::unexpected(Si4684Error::ReplyTooShort);
+ }
+ std::fill(buffer.begin(), buffer.end(), 0U);
+ spi_transaction_t txn = {};
+ txn.length = buffer.size() * 8U;
+ txn.tx_buffer = buffer.data();
+ txn.rx_buffer = buffer.data();
+ if (spi_device_transmit(static_cast(spiDevice_),
+ &txn) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ return {};
+}
+
+std::expected Si4684Driver::writeCommand(
+ Command cmd, const std::uint8_t* payload, std::size_t length)
+{
+ if (length + 2U > kSpiBufferSize) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array buffer = {};
+ buffer[0] = static_cast(cmd);
+ buffer[1] = 0x00U;
+ if (payload != nullptr && length > 0U) {
+ std::memcpy(buffer.data() + 2U, payload, length);
+ }
+ return sendCommand({buffer.data(), 2U + length});
+}
+
+std::expected Si4684Driver::hostLoadBlob(
+ const core::IFirmwareBlobReader& blob, std::size_t chunkPayload)
+{
+ std::array payload = {};
+ std::size_t offset = 0U;
+
+ while (offset < blob.size()) {
+ const std::size_t maxChunk = std::min(chunkPayload, payload.size());
+ const std::size_t copied =
+ blob.read(offset, std::span(payload.data(), maxChunk));
+ if (copied == 0U) {
+ return std::unexpected(Si4684Error::ImageLoadFailed);
+ }
+
+ std::array tx = {};
+ tx[0] = static_cast(Command::HostLoad);
+ tx[1] = 0x00U;
+ tx[2] = 0x00U;
+ tx[3] = 0x00U;
+ std::memcpy(tx.data() + 4U, payload.data(), copied);
+
+ spi_transaction_t txn = {};
+ txn.length = (4U + copied) * 8U;
+ txn.tx_buffer = tx.data();
+ if (spi_device_transmit(static_cast(spiDevice_),
+ &txn) != ESP_OK) {
+ return std::unexpected(Si4684Error::ImageLoadFailed);
+ }
+ if (auto cts = waitCts(); !cts) {
+ return cts;
+ }
+ offset += copied;
+ }
+ return {};
+}
+
+std::expected Si4684Driver::setProperty(
+ std::uint16_t propertyId, std::uint16_t value)
+{
+ if (auto ready = ensureBooted(); !ready) {
+ return ready;
+ }
+ const std::uint8_t args[] = {
+ static_cast(propertyId & 0xFFU),
+ static_cast(propertyId >> 8),
+ static_cast(value & 0xFFU),
+ static_cast(value >> 8),
+ };
+ if (auto cmd = writeCommand(Command::SetProperty, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ return {};
+}
+
+std::expected Si4684Driver::setVolume(std::uint8_t level)
+{
+ return setProperty(kPropAudioVolume,
+ static_cast(level & 0x3FU));
+}
+
+std::expected Si4684Driver::getPartInfo()
+{
+ if (auto ready = ensureBooted(); !ready) {
+ return std::unexpected(ready.error());
+ }
+ if (auto cmd = writeCommand(Command::GetPartInfo, nullptr, 0U); !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+ if (auto fn = writeCommand(Command::GetFuncInfo, nullptr, 0U); !fn) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array fnRaw = {};
+ if (auto rd = readRaw(fnRaw); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ Si4684PartInfo info = {};
+ info.chipId = readLe16(raw.data() + 9);
+ info.firmwareMajor = fnRaw[5];
+ info.firmwareMinor = fnRaw[6];
+ info.firmwareBuild = fnRaw[7];
+ return info;
+}
+
+std::expected Si4684Driver::getSysState()
+{
+ if (auto ready = ensureBooted(); !ready) {
+ return std::unexpected(ready.error());
+ }
+ if (auto cmd = writeCommand(Command::GetSysState, nullptr, 0U); !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+ Si4684SysState state = {};
+ state.imageType = raw[5];
+ return state;
+}
+
+std::expected Si4684Driver::configureAfterBoot(
+ Si4684Band band)
+{
+ if (band == Si4684Band::Dab) {
+ if (auto plan = installDefaultDabFrequencyPlan(); !plan) {
+ return plan;
+ }
+ static constexpr std::uint16_t kDabProps[][2] = {
+ {0x0202U, 0x1600U},
+ {0x1710U, 0xFC4AU},
+ {0x1711U, 0x00F8U},
+ {0x8101U, 0x0064U},
+ {0xB200U, 0x0000U},
+ {0xB201U, 0x0080U},
+ {0xB301U, 0x0000U},
+ {0xB302U, 0x0000U},
+ {0xB303U, 0x0000U},
+ {0xB401U, 0x0002U},
+ {0xB500U, 0x0000U},
+ };
+ for (const auto& prop : kDabProps) {
+ if (auto set = setProperty(prop[0], prop[1]); !set) {
+ return set;
+ }
+ }
+ if (auto xpad = setProperty(kPropDabXpadEnable, 0x0097U); !xpad) {
+ return xpad;
+ }
+ } else {
+ if (auto rds = setProperty(kPropFmRdsConfig, 0x0001U); !rds) {
+ return rds;
+ }
+ }
+
+ if (auto i2s = setProperty(kPropDigitalIoOutputSelect, 0x8000U); !i2s) {
+ return i2s;
+ }
+ if (auto rate = setProperty(kPropDigitalIoSampleRate, 0xAC44U); !rate) {
+ return rate;
+ }
+ if (auto pins = setProperty(kPropPinConfigEnable, 0x0003U); !pins) {
+ return pins;
+ }
+ if (auto dabFe = setProperty(kPropDabTuneFeCfg, 0x0001U); !dabFe) {
+ return dabFe;
+ }
+ if (auto dsrv = setProperty(kPropDigitalServiceIntSource, 0x0001U);
+ !dsrv) {
+ return dsrv;
+ }
+ return {};
+}
+
+std::expected Si4684Driver::boot(Si4684Band band)
+{
+ if (booted_ && loadedBand_ == band) {
+ return {};
+ }
+
+ if (booted_) {
+ booted_ = false;
+ if (spiDevice_ != nullptr) {
+ spi_bus_remove_device(static_cast(spiDevice_));
+ spiDevice_ = nullptr;
+ }
+ }
+
+ const core::IFirmwareBlobReader& image =
+ (band == Si4684Band::Fm) ? fmImage_ : dabImage_;
+
+ gpio_config_t rstCfg = {};
+ rstCfg.pin_bit_mask = 1ULL << pins_.rstbGpio;
+ rstCfg.mode = GPIO_MODE_OUTPUT;
+ if (gpio_config(&rstCfg) != ESP_OK) {
+ return std::unexpected(Si4684Error::ResetFailed);
+ }
+ gpio_set_level(static_cast(pins_.rstbGpio), 0);
+ vTaskDelay(pdMS_TO_TICKS(5));
+ gpio_set_level(static_cast(pins_.rstbGpio), 1);
+ vTaskDelay(pdMS_TO_TICKS(3));
+
+ if (!spiBusActive_) {
+ spi_bus_config_t busCfg = {};
+ busCfg.miso_io_num = pins_.misoGpio;
+ busCfg.mosi_io_num = pins_.mosiGpio;
+ busCfg.sclk_io_num = pins_.sclkGpio;
+ busCfg.quadwp_io_num = -1;
+ busCfg.quadhd_io_num = -1;
+ busCfg.max_transfer_sz = static_cast(kSpiBufferSize);
+
+ if (spi_bus_initialize(static_cast(pins_.spiHost),
+ &busCfg, SPI_DMA_CH_AUTO) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ spiBusActive_ = true;
+ }
+
+ if (spiDevice_ == nullptr) {
+ spi_device_interface_config_t devCfg = {};
+ devCfg.clock_speed_hz = 10 * 1000 * 1000;
+ devCfg.mode = 0;
+ devCfg.spics_io_num = pins_.csGpio;
+ devCfg.queue_size = 1;
+
+ spi_device_handle_t dev = nullptr;
+ if (spi_bus_add_device(static_cast(pins_.spiHost),
+ &devCfg, &dev) != ESP_OK) {
+ return std::unexpected(Si4684Error::SpiInitFailed);
+ }
+ spiDevice_ = dev;
+ }
+
+ if (auto st = writeCommand(Command::GetSysState, nullptr, 0U); !st) {
+ return st;
+ }
+
+ const std::uint8_t powerUp[] = {
+ 0x17, 0x48, 0x00, 0xf8, 0x24, 0x01, 0x1F, 0x10,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+ };
+ if (auto pu = writeCommand(Command::PowerUp, powerUp, sizeof(powerUp));
+ !pu) {
+ return std::unexpected(Si4684Error::PowerUpFailed);
+ }
+
+ vTaskDelay(pdMS_TO_TICKS(1));
+
+ if (auto li = writeCommand(Command::LoadInit, nullptr, 0U); !li) {
+ return std::unexpected(Si4684Error::PatchLoadFailed);
+ }
+
+ if (auto patch = hostLoadBlob(patch_, 124U); !patch) {
+ return std::unexpected(Si4684Error::PatchLoadFailed);
+ }
+
+ vTaskDelay(pdMS_TO_TICKS(4));
+
+ if (auto li2 = writeCommand(Command::LoadInit, nullptr, 0U); !li2) {
+ return std::unexpected(Si4684Error::ImageLoadFailed);
+ }
+
+ if (auto fw = hostLoadBlob(image, 2044U); !fw) {
+ return std::unexpected(Si4684Error::ImageLoadFailed);
+ }
+
+ if (auto bootCmd = writeCommand(Command::BootCmd, nullptr, 0U); !bootCmd) {
+ return std::unexpected(Si4684Error::BootFailed);
+ }
+
+ booted_ = true;
+ loadedBand_ = band;
+
+ if (auto cfg = configureAfterBoot(band); !cfg) {
+ booted_ = false;
+ return cfg;
+ }
+
+ ESP_LOGI(kTag, "%s firmware booted",
+ band == Si4684Band::Fm ? "FM" : "DAB");
+ return {};
+}
+
+bool Si4684Driver::isBooted() const noexcept
+{
+ return booted_;
+}
+
+Si4684Band Si4684Driver::loadedBand() const noexcept
+{
+ return loadedBand_;
+}
+
+std::expected Si4684Driver::tuneFm(
+ core::FrequencyKHz frequency)
+{
+ if (auto band = ensureBand(Si4684Band::Fm); !band) {
+ return band;
+ }
+ const std::uint16_t chipFreq = kHzToChipFmFreq(frequency.value());
+ const std::uint8_t args[] = {
+ 0x00U,
+ static_cast(chipFreq & 0xFFU),
+ static_cast(chipFreq >> 8),
+ 0x00U,
+ 0x00U,
+ };
+ if (auto cmd = writeCommand(Command::FmTuneFreq, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::TuneFailed);
+ }
+ if (auto stc = waitStc(); !stc) {
+ return stc;
+ }
+ return {};
+}
+
+std::expected Si4684Driver::seekFm(
+ core::SeekDirection direction, SeekBandWrap wrap)
+{
+ if (auto band = ensureBand(Si4684Band::Fm); !band) {
+ return std::unexpected(band.error());
+ }
+ const bool seekUp = direction == core::SeekDirection::Up;
+ const bool wrapBand = wrap == SeekBandWrap::Wrap;
+ const std::uint8_t args[] = {
+ 0x10U,
+ static_cast(((seekUp ? 1U : 0U) << 1U) | (wrapBand ? 1U : 0U)),
+ 0x00U,
+ 0x00U,
+ 0x00U,
+ };
+ if (auto cmd = writeCommand(Command::FmSeekStart, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::TuneFailed);
+ }
+ if (auto stc = waitStc(); !stc) {
+ return std::unexpected(stc.error());
+ }
+ auto rsq = readFmRsq();
+ if (!rsq) {
+ return std::unexpected(rsq.error());
+ }
+ return rsq->frequency;
+}
+
+std::expected Si4684Driver::readFmRsq()
+{
+ if (auto band = ensureBand(Si4684Band::Fm); !band) {
+ return std::unexpected(band.error());
+ }
+ const std::uint8_t args[] = {0x00U};
+ if (auto cmd = writeCommand(Command::FmRsqStatus, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ Si4684FmRsq rsq = {};
+ const auto khz = chipFmFreqToKHz(readLe16(raw.data() + 6));
+ if (auto freq = core::FrequencyKHz::tryFromKhz(khz); freq) {
+ rsq.frequency = *freq;
+ } else {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ rsq.valid = (raw[4] & 0x01U) != 0U;
+ rsq.stereo = (raw[4] & 0x02U) != 0U;
+ rsq.rssiDbuV = static_cast(raw[8]);
+ rsq.snrDb = static_cast(raw[9]);
+ return rsq;
+}
+
+std::expected Si4684Driver::readFmRds()
+{
+ if (auto band = ensureBand(Si4684Band::Fm); !band) {
+ return std::unexpected(band.error());
+ }
+ const std::uint8_t args[] = {0x01U};
+ if (auto cmd = writeCommand(Command::FmRdsStatus, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ Si4684FmRdsStatus rds = {};
+ rds.received = (raw[4] & 0x01U) != 0U;
+ rds.blockA = readLe16(raw.data() + 12);
+ rds.blockB = readLe16(raw.data() + 14);
+ rds.blockC = readLe16(raw.data() + 16);
+ rds.blockD = readLe16(raw.data() + 18);
+ return rds;
+}
+
+std::expected Si4684Driver::installDefaultDabFrequencyPlan()
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return band;
+ }
+
+ std::array cmd =
+ {};
+ cmd[0] = static_cast(Command::DabSetFreqList);
+ cmd[1] = static_cast(kDefaultDabFrequencyKhz.size());
+ cmd[2] = 0x00U;
+ cmd[3] = 0x00U;
+ for (std::size_t i = 0; i < kDefaultDabFrequencyKhz.size(); ++i) {
+ const std::uint32_t hz = kDefaultDabFrequencyKhz[i];
+ const std::size_t off = 4U + i * 4U;
+ cmd[off] = static_cast(hz & 0xFFU);
+ cmd[off + 1] = static_cast((hz >> 8) & 0xFFU);
+ cmd[off + 2] = static_cast((hz >> 16) & 0xFFU);
+ cmd[off + 3] = static_cast(hz >> 24);
+ }
+ return sendCommand(cmd);
+}
+
+std::expected Si4684Driver::tuneDab(std::uint8_t freqIndex)
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return band;
+ }
+ if (freqIndex >= kDefaultDabFrequencyKhz.size()) {
+ return std::unexpected(Si4684Error::TuneFailed);
+ }
+ const std::uint8_t args[] = {0x00U, freqIndex, 0x00U, 0x00U, 0x00U};
+ if (auto cmd = writeCommand(Command::DabTuneFreq, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::TuneFailed);
+ }
+ if (auto stc = waitStc(); !stc) {
+ return stc;
+ }
+ return {};
+}
+
+std::expected
+Si4684Driver::readDabDigRadStatus()
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return std::unexpected(band.error());
+ }
+ const std::uint8_t args[] = {0x01U};
+ if (auto cmd =
+ writeCommand(Command::DabDigRadStatus, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ Si4684DabDigRadStatus status = {};
+ status.ficQuality = raw[9];
+ status.cnrDb = raw[10];
+ status.acquired = (raw[4] & 0x08U) != 0U;
+ status.valid = status.ficQuality > 0U;
+ return status;
+}
+
+std::expected
+Si4684Driver::readDabEventStatus()
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return std::unexpected(band.error());
+ }
+ const std::uint8_t args[] = {0x00U};
+ if (auto cmd =
+ writeCommand(Command::DabGetEventStatus, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ std::array raw = {};
+ if (auto rd = readRaw(raw); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ Si4684DabEventStatus events = {};
+ events.serviceListReady = (raw[4] & 0x01U) != 0U;
+ events.reconfig = (raw[4] & 0x02U) != 0U;
+ return events;
+}
+
+std::expected, Si4684Error>
+Si4684Driver::fetchDabServiceList()
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return std::unexpected(band.error());
+ }
+
+ const std::uint8_t args[] = {0x00U};
+ if (auto cmd = writeCommand(Command::GetDigitalServiceList, args,
+ sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+
+ std::array header = {};
+ if (auto rd = readRaw(header); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ const std::uint16_t payloadSize = readLe16(header.data() + 5);
+ if (payloadSize == 0U || payloadSize + 6U > kSpiBufferSize) {
+ return std::unexpected(Si4684Error::ReplyTooShort);
+ }
+
+ std::vector body(payloadSize + 6U, 0U);
+ if (auto rd = readRaw(body); !rd) {
+ return std::unexpected(rd.error());
+ }
+
+ const std::uint8_t serviceCount = body[9];
+ std::vector services;
+ services.reserve(serviceCount);
+
+ std::size_t offset = 13U;
+ for (std::uint8_t i = 0; i < serviceCount; ++i) {
+ if (offset + 24U > body.size()) {
+ break;
+ }
+ Si4684DabService entry = {};
+ entry.serviceId = readLe32(body.data() + offset);
+ offset += 4U;
+ entry.serviceType = body[offset] & 0x3FU;
+ const std::uint8_t componentCount = body[offset + 1] & 0x0FU;
+ offset += 4U;
+ std::memcpy(entry.label.data(), body.data() + offset, 16U);
+ entry.label[16] = '\0';
+ offset += 16U;
+
+ if (componentCount > 0U && offset + 4U <= body.size()) {
+ entry.componentId = readLe32(body.data() + offset);
+ offset += 4U;
+ if (offset < body.size()) {
+ ++offset;
+ }
+ }
+ services.push_back(entry);
+ }
+ return services;
+}
+
+std::expected Si4684Driver::startDabService(
+ std::uint32_t serviceId,
+ std::uint32_t componentId,
+ Si4684DigitalServiceType type)
+{
+ if (auto band = ensureBand(Si4684Band::Dab); !band) {
+ return band;
+ }
+ const std::uint8_t args[] = {
+ static_cast(type),
+ 0x00U,
+ 0x00U,
+ static_cast(serviceId & 0xFFU),
+ static_cast((serviceId >> 8) & 0xFFU),
+ static_cast((serviceId >> 16) & 0xFFU),
+ static_cast(serviceId >> 24),
+ static_cast(componentId & 0xFFU),
+ static_cast((componentId >> 8) & 0xFFU),
+ static_cast((componentId >> 16) & 0xFFU),
+ static_cast(componentId >> 24),
+ };
+ if (auto cmd =
+ writeCommand(Command::StartDigitalService, args, sizeof(args));
+ !cmd) {
+ return std::unexpected(Si4684Error::CommandFailed);
+ }
+ return {};
+}
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/src/Si4684EmbeddedImages.cpp b/Software/components/drivers/si4684/src/Si4684EmbeddedImages.cpp
new file mode 100644
index 0000000..9514f87
--- /dev/null
+++ b/Software/components/drivers/si4684/src/Si4684EmbeddedImages.cpp
@@ -0,0 +1,89 @@
+/**
+ * @file Si4684EmbeddedImages.cpp
+ * @brief Si4684EmbeddedImages implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "si4684/Si4684EmbeddedImages.hpp"
+
+#include
+#include
+
+/** @cond linker_symbols */
+extern "C" {
+extern const std::uint8_t rom_patch_016_bin_start[]
+ asm("_binary_rom_patch_016_bin_start");
+extern const std::uint8_t rom_patch_016_bin_end[]
+ asm("_binary_rom_patch_016_bin_end");
+extern const std::uint8_t dab_firmware_bin_start[]
+ asm("_binary_dab_firmware_bin_start");
+extern const std::uint8_t dab_firmware_bin_end[]
+ asm("_binary_dab_firmware_bin_end");
+extern const std::uint8_t fm_firmware_bin_start[]
+ asm("_binary_fm_firmware_bin_start");
+extern const std::uint8_t fm_firmware_bin_end[]
+ asm("_binary_fm_firmware_bin_end");
+}
+/** @endcond */
+
+namespace si4684 {
+
+namespace {
+
+const std::byte* asBytes(const std::uint8_t* ptr)
+{
+ return reinterpret_cast(ptr);
+}
+
+std::size_t embeddedSize(const std::uint8_t* start, const std::uint8_t* end)
+{
+ return static_cast(end - start);
+}
+
+} // namespace
+
+Si4684EmbeddedImages::Si4684EmbeddedImages()
+ : patch_(asBytes(rom_patch_016_bin_start),
+ embeddedSize(rom_patch_016_bin_start, rom_patch_016_bin_end))
+ , dab_(asBytes(dab_firmware_bin_start),
+ embeddedSize(dab_firmware_bin_start, dab_firmware_bin_end))
+ , fm_(asBytes(fm_firmware_bin_start),
+ embeddedSize(fm_firmware_bin_start, fm_firmware_bin_end))
+{
+}
+
+const core::IFirmwareBlobReader& Si4684EmbeddedImages::romPatch() const noexcept
+{
+ return patch_;
+}
+
+const core::IFirmwareBlobReader& Si4684EmbeddedImages::dabFirmware() const noexcept
+{
+ return dab_;
+}
+
+const core::IFirmwareBlobReader& Si4684EmbeddedImages::fmFirmware() const noexcept
+{
+ return fm_;
+}
+
+const core::IFirmwareBlobReader& Si4684EmbeddedImages::applicationImage(
+ Si4684Band band) const noexcept
+{
+ switch (band) {
+ case Si4684Band::Dab:
+ return dab_;
+ case Si4684Band::Fm:
+ return fm_;
+ }
+ return dab_;
+}
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/src/Si4684Tuner.cpp b/Software/components/drivers/si4684/src/Si4684Tuner.cpp
new file mode 100644
index 0000000..4e0cc51
--- /dev/null
+++ b/Software/components/drivers/si4684/src/Si4684Tuner.cpp
@@ -0,0 +1,186 @@
+/**
+ * @file Si4684Tuner.cpp
+ * @brief Si4684Tuner implementation.
+ *
+ * DigiRadio firmware — https://github.com/manvalan/DigiRadio
+ *
+ * Copyright 2026 Michele Bigi
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+
+#include "si4684/Si4684Tuner.hpp"
+
+#include "si4684/Si4684Band.hpp"
+
+namespace si4684 {
+
+namespace {
+
+[[nodiscard]] core::FrequencyKHz defaultFmFrequency()
+{
+ return *core::FrequencyKHz::tryFromKhz(101500U);
+}
+
+} // namespace
+
+Si4684Tuner::Si4684Tuner(Si4684Driver& driver)
+ : driver_(driver)
+ , dabIndex_(0U)
+ , fmFrequency_(defaultFmFrequency())
+ , volume_(40U)
+{
+}
+
+core::TunerError Si4684Tuner::mapError(Si4684Error error) noexcept
+{
+ switch (error) {
+ case Si4684Error::NotBooted:
+ return core::TunerError::NotBooted;
+ case Si4684Error::WrongBand:
+ return core::TunerError::WrongBand;
+ case Si4684Error::TuneFailed:
+ case Si4684Error::StcTimeout:
+ return core::TunerError::TuneFailed;
+ default:
+ return core::TunerError::HardwareFailed;
+ }
+}
+
+std::expected Si4684Tuner::boot(core::TunerBand band)
+{
+ const Si4684Band hwBand =
+ (band == core::TunerBand::Fm) ? Si4684Band::Fm : Si4684Band::Dab;
+ if (auto result = driver_.boot(hwBand); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ return {};
+}
+
+std::expected Si4684Tuner::currentBand() const
+{
+ if (!driver_.isBooted()) {
+ return std::unexpected(core::TunerError::NotBooted);
+ }
+ return driver_.loadedBand() == Si4684Band::Fm ? core::TunerBand::Fm
+ : core::TunerBand::Dab;
+}
+
+std::expected Si4684Tuner::readStatus()
+{
+ if (!driver_.isBooted()) {
+ return std::unexpected(core::TunerError::NotBooted);
+ }
+
+ core::TunerStatus status = {};
+ status.booted = true;
+ status.volume = volume_;
+ status.band = driver_.loadedBand() == Si4684Band::Fm ? core::TunerBand::Fm
+ : core::TunerBand::Dab;
+
+ if (status.band == core::TunerBand::Dab) {
+ status.dabFreqIndex = dabIndex_;
+ if (auto dig = driver_.readDabDigRadStatus(); dig) {
+ status.locked = dig->valid;
+ status.dabFicQuality = dig->ficQuality;
+ status.dabCnrDb = dig->cnrDb;
+ } else {
+ return std::unexpected(mapError(dig.error()));
+ }
+ } else {
+ status.fmFrequency = fmFrequency_;
+ if (auto rsq = driver_.readFmRsq(); rsq) {
+ status.locked = rsq->valid;
+ status.fmFrequency = rsq->frequency;
+ status.fmRssiDbuV = rsq->rssiDbuV;
+ status.fmSnrDb = rsq->snrDb;
+ status.fmStereo = rsq->stereo;
+ fmFrequency_ = rsq->frequency;
+ } else {
+ return std::unexpected(mapError(rsq.error()));
+ }
+ }
+ return status;
+}
+
+std::expected Si4684Tuner::tuneDab(
+ std::uint8_t freqIndex)
+{
+ if (auto result = driver_.tuneDab(freqIndex); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ dabIndex_ = freqIndex;
+ return {};
+}
+
+std::expected Si4684Tuner::tuneFm(
+ core::FrequencyKHz frequency)
+{
+ if (auto result = driver_.tuneFm(frequency); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ fmFrequency_ = frequency;
+ return {};
+}
+
+std::expected Si4684Tuner::seekFm(
+ core::SeekDirection direction)
+{
+ if (auto result = driver_.seekFm(direction, SeekBandWrap::Wrap); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ fmFrequency_ = *result;
+ return *result;
+}
+
+std::expected, core::TunerError>
+Si4684Tuner::listDabServices()
+{
+ if (auto events = driver_.readDabEventStatus(); events) {
+ if (!events->serviceListReady) {
+ return std::unexpected(core::TunerError::ServiceListEmpty);
+ }
+ } else {
+ return std::unexpected(mapError(events.error()));
+ }
+
+ if (auto list = driver_.fetchDabServiceList(); list) {
+ std::vector out;
+ out.reserve(list->size());
+ for (const auto& item : *list) {
+ core::TunerServiceEntry entry = {};
+ entry.serviceId = item.serviceId;
+ entry.componentId = item.componentId;
+ entry.label = item.label;
+ out.push_back(entry);
+ }
+ if (out.empty()) {
+ return std::unexpected(core::TunerError::ServiceListEmpty);
+ }
+ return out;
+ }
+ return std::unexpected(mapError(list.error()));
+}
+
+std::expected Si4684Tuner::playDabService(
+ std::uint32_t serviceId,
+ std::uint32_t componentId)
+{
+ if (auto result = driver_.startDabService(serviceId, componentId); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ return {};
+}
+
+std::expected Si4684Tuner::setVolume(std::uint8_t level)
+{
+ if (auto result = driver_.setVolume(level); !result) {
+ return std::unexpected(mapError(result.error()));
+ }
+ volume_ = level & 0x3FU;
+ return {};
+}
+
+} // namespace si4684
diff --git a/Software/components/drivers/si4684/src/component_stub.cpp b/Software/components/drivers/si4684/src/component_stub.cpp
deleted file mode 100644
index 11d71f5..0000000
--- a/Software/components/drivers/si4684/src/component_stub.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file component_stub.cpp
- * @brief Si4684 driver component placeholder (Slice 4).
- *
- * DigiRadio firmware — https://github.com/manvalan/DigiRadio
- *
- * Copyright 2026 Michele Bigi
- * 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
- *
- * @author Michele Bigi
- * @date 2026-07-06
- */
-
-namespace si4684::detail {
-
-/**
- * @brief si4684ComponentLinked — ensures the driver component links.
- *
- * @dname si4684ComponentLinked
- * @return n/a (type)
- * @pubstate n/a
- *
- * @author Michele Bigi
- * @date 2026-07-06
- */
-void si4684ComponentLinked() noexcept {}
-
-} // namespace si4684::detail
diff --git a/Software/components/net/CMakeLists.txt b/Software/components/net/CMakeLists.txt
index 445d250..9c4a292 100644
--- a/Software/components/net/CMakeLists.txt
+++ b/Software/components/net/CMakeLists.txt
@@ -7,7 +7,7 @@ idf_component_register(
"src/NetBootstrap.cpp"
INCLUDE_DIRS "include"
EMBED_FILES "www/index.html.gz"
- REQUIRES core esp_wifi esp_netif esp_event nvs_flash esp_http_server
+ REQUIRES core esp_wifi esp_netif esp_event nvs_flash esp_http_server tuner
)
target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_23)
diff --git a/Software/components/net/include/net/NetBootstrap.hpp b/Software/components/net/include/net/NetBootstrap.hpp
index f732139..b05f72b 100644
--- a/Software/components/net/include/net/NetBootstrap.hpp
+++ b/Software/components/net/include/net/NetBootstrap.hpp
@@ -27,6 +27,10 @@
#include
#include
+namespace tuner {
+class TunerService;
+} // namespace tuner
+
namespace net {
/**
@@ -47,6 +51,7 @@ public:
*
* @dname start
* @param store Secure store consulted for saved STA credentials.
+ * @param tuner Tuner service exposed by the HTTP API.
* @return NetBootstrap on success, or a NetError.
* @pubstate none
*
@@ -54,7 +59,7 @@ public:
* @date 2026-07-06
*/
[[nodiscard]] static std::expected
- start(core::ISecureStore& store);
+ start(core::ISecureStore& store, tuner::TunerService& tuner);
NetBootstrap(const NetBootstrap&) = delete;
NetBootstrap& operator=(const NetBootstrap&) = delete;
diff --git a/Software/components/net/include/net/SetupWebServer.hpp b/Software/components/net/include/net/SetupWebServer.hpp
index 99d2922..0cfe632 100644
--- a/Software/components/net/include/net/SetupWebServer.hpp
+++ b/Software/components/net/include/net/SetupWebServer.hpp
@@ -23,10 +23,32 @@
#include
+struct httpd_req;
+
+namespace tuner {
+class TunerService;
+} // namespace tuner
+
struct httpd_handle;
namespace net {
+/**
+ * @brief HttpRouteContext — dependencies injected into HTTP handlers.
+ *
+ * @dname HttpRouteContext
+ * @return n/a (type)
+ * @pubstate Borrows store and tuner for the lifetime of SetupWebServer.
+ * Passed as esp_http_server user_ctx (no file-scope globals).
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+struct HttpRouteContext {
+ core::ISecureStore* store; ///< Secure store for Wi-Fi provisioning.
+ tuner::TunerService* tuner; ///< Tuner service for tuner REST routes.
+};
+
/**
* @brief SetupWebServer — setup UI, health, and Wi-Fi provisioning API.
*
@@ -96,19 +118,23 @@ public:
* @dname start
* @param store Secure store for POST /api/wifi persistence.
* @param netState Active network phase exposed to handlers.
+ * @param tuner Tuner service for the tuner REST routes.
* @return Ok on success, or NetError::HttpServerStartFailed.
- * @pubstate writes server_, store_, and netState_ on success.
+ * @pubstate writes server_, store_, netState_, and tuner_ on success.
*
* @author Michele Bigi
* @date 2026-07-06
*/
[[nodiscard]] std::expected start(core::ISecureStore& store,
- NetState netState);
+ NetState netState,
+ tuner::TunerService& tuner);
private:
httpd_handle* server_;
core::ISecureStore* store_;
NetState netState_;
+ tuner::TunerService* tuner_;
+ HttpRouteContext routeContext_;
};
} // namespace net
diff --git a/Software/components/net/src/NetBootstrap.cpp b/Software/components/net/src/NetBootstrap.cpp
index 79dab95..03b5029 100644
--- a/Software/components/net/src/NetBootstrap.cpp
+++ b/Software/components/net/src/NetBootstrap.cpp
@@ -23,6 +23,7 @@
#include "esp_netif.h"
#include "esp_wifi.h"
#include "nvs_flash.h"
+#include "tuner/TunerService.hpp"
namespace net {
@@ -97,7 +98,7 @@ constexpr char kTag[] = "NetBootstrap";
* @date 2026-07-06
*/
[[nodiscard]] std::expected
-startSetupMode(core::ISecureStore& store)
+startSetupMode(core::ISecureStore& store, tuner::TunerService& tuner)
{
esp_netif_create_default_wifi_ap();
@@ -107,7 +108,7 @@ startSetupMode(core::ISecureStore& store)
}
SetupWebServer webServer;
- if (auto webResult = webServer.start(store, NetState::SoftApSetup);
+ if (auto webResult = webServer.start(store, NetState::SoftApSetup, tuner);
!webResult) {
return std::unexpected(webResult.error());
}
@@ -129,7 +130,7 @@ startSetupMode(core::ISecureStore& store)
* @date 2026-07-06
*/
[[nodiscard]] std::expected
-startStaMode(core::ISecureStore& store)
+startStaMode(core::ISecureStore& store, tuner::TunerService& tuner)
{
auto credsResult = store.loadWifiCredentials();
if (!credsResult) {
@@ -145,7 +146,7 @@ startStaMode(core::ISecureStore& store)
}
SetupWebServer webServer;
- if (auto webResult = webServer.start(store, NetState::StaConnected);
+ if (auto webResult = webServer.start(store, NetState::StaConnected, tuner);
!webResult) {
return std::unexpected(webResult.error());
}
@@ -158,7 +159,7 @@ startStaMode(core::ISecureStore& store)
} // namespace
std::expected
-NetBootstrap::start(core::ISecureStore& store)
+NetBootstrap::start(core::ISecureStore& store, tuner::TunerService& tuner)
{
if (auto platform = initPlatform(); !platform) {
return std::unexpected(platform.error());
@@ -169,14 +170,14 @@ NetBootstrap::start(core::ISecureStore& store)
}
if (store.hasWifiCredentials()) {
- auto staResult = startStaMode(store);
+ auto staResult = startStaMode(store, tuner);
if (staResult) {
return staResult;
}
ESP_LOGW(kTag, "STA join failed — falling back to setup SoftAP");
}
- return startSetupMode(store);
+ return startSetupMode(store, tuner);
}
NetBootstrap::NetBootstrap(std::optional softAp,
diff --git a/Software/components/net/src/SetupWebServer.cpp b/Software/components/net/src/SetupWebServer.cpp
index 6354e75..2806520 100644
--- a/Software/components/net/src/SetupWebServer.cpp
+++ b/Software/components/net/src/SetupWebServer.cpp
@@ -22,7 +22,10 @@
#include "core/HealthStatus.hpp"
#include "core/HealthStatusJson.hpp"
#include "core/ParseError.hpp"
+#include "core/SeekDirection.hpp"
+#include "core/TunerJson.hpp"
#include "core/WifiProvisionJson.hpp"
+#include "tuner/TunerService.hpp"
#include "esp_http_server.h"
#include "esp_log.h"
@@ -37,17 +40,30 @@ namespace net {
namespace {
constexpr char kTag[] = "SetupWebServer";
-constexpr char kFirmwareVersion[] = "0.2.0";
+constexpr char kFirmwareVersion[] = "0.4.0";
constexpr unsigned kRebootDelaySec = 3;
-SetupWebServer* gActiveServer = nullptr;
-core::ISecureStore* gStore = nullptr;
-
extern const uint8_t www_index_html_gz_start[] asm(
"_binary_www_index_html_gz_start");
extern const uint8_t www_index_html_gz_end[] asm(
"_binary_www_index_html_gz_end");
+/**
+ * @brief routeContextFrom — read handler dependencies from user_ctx.
+ *
+ * @dname routeContextFrom
+ * @param req HTTP request handle from esp_http_server.
+ * @return Route context pointer, or nullptr when unset.
+ * @pubstate none
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+[[nodiscard]] HttpRouteContext* routeContextFrom(httpd_req_t* req) noexcept
+{
+ return static_cast(httpd_req_get_user_ctx(req));
+}
+
/**
* @brief rebootTask — restart after provisioning so STA mode can run.
*
@@ -91,6 +107,40 @@ void rebootTask(void* arg)
return "parse_error";
}
+[[nodiscard]] const char* tunerErrorToken(core::TunerError error) noexcept
+{
+ switch (error) {
+ case core::TunerError::NotBooted:
+ return "not_booted";
+ case core::TunerError::WrongBand:
+ return "wrong_band";
+ case core::TunerError::TuneFailed:
+ return "tune_failed";
+ case core::TunerError::ServiceListEmpty:
+ return "service_list_empty";
+ case core::TunerError::InvalidInput:
+ return "invalid_input";
+ case core::TunerError::HardwareFailed:
+ return "hardware_failed";
+ }
+ return "tuner_error";
+}
+
+[[nodiscard]] bool readRequestBody(httpd_req_t* req, std::array& body)
+{
+ int received = 0;
+ while (received < static_cast(body.size()) - 1) {
+ const int chunk = httpd_req_recv(req, body.data() + received,
+ body.size() - 1 - received);
+ if (chunk <= 0) {
+ break;
+ }
+ received += chunk;
+ }
+ body[static_cast(received)] = '\0';
+ return received > 0;
+}
+
/**
* @brief healthGetHandler — serve GET /api/health as JSON.
*
@@ -111,6 +161,208 @@ esp_err_t healthGetHandler(httpd_req_t* req)
return httpd_resp_send(req, json.c_str(), json.size());
}
+/**
+ * @brief tunerStatusGetHandler — serve GET /api/tuner/status as JSON.
+ *
+ * @dname tunerStatusGetHandler
+ * @param req HTTP request handle from esp_http_server.
+ * @return ESP_OK on success, or an esp_err_t error code.
+ * @pubstate uses route context tuner service.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+esp_err_t tunerStatusGetHandler(httpd_req_t* req)
+{
+ auto* ctx = routeContextFrom(req);
+ if (ctx == nullptr || ctx->tuner == nullptr) {
+ httpd_resp_set_status(req, "503 Service Unavailable");
+ return httpd_resp_send(req, nullptr, 0);
+ }
+ auto status = ctx->tuner->refreshStatus();
+ if (!status) {
+ const std::string json =
+ core::serializeTunerErrorJson(tunerErrorToken(status.error()));
+ httpd_resp_set_status(req, "500 Internal Server Error");
+ httpd_resp_set_type(req, "application/json");
+ return httpd_resp_send(req, json.c_str(), json.size());
+ }
+ const std::string json = core::serializeTunerStatusJson(*status);
+ httpd_resp_set_type(req, "application/json");
+ return httpd_resp_send(req, json.c_str(), json.size());
+}
+
+/**
+ * @brief tunerServicesGetHandler — serve GET /api/tuner/services as JSON.
+ *
+ * @dname tunerServicesGetHandler
+ * @param req HTTP request handle from esp_http_server.
+ * @return ESP_OK on success, or an esp_err_t error code.
+ * @pubstate uses route context tuner service.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+esp_err_t tunerServicesGetHandler(httpd_req_t* req)
+{
+ auto* ctx = routeContextFrom(req);
+ if (ctx == nullptr || ctx->tuner == nullptr) {
+ httpd_resp_set_status(req, "503 Service Unavailable");
+ return httpd_resp_send(req, nullptr, 0);
+ }
+ auto services = ctx->tuner->listDabServices();
+ if (!services) {
+ const std::string json =
+ core::serializeTunerErrorJson(tunerErrorToken(services.error()));
+ httpd_resp_set_status(req, "409 Conflict");
+ httpd_resp_set_type(req, "application/json");
+ return httpd_resp_send(req, json.c_str(), json.size());
+ }
+ const std::string json = core::serializeTunerServicesJson(*services);
+ httpd_resp_set_type(req, "application/json");
+ return httpd_resp_send(req, json.c_str(), json.size());
+}
+
+/**
+ * @brief tunerTunePostHandler — accept POST /api/tuner/tune JSON.
+ *
+ * @dname tunerTunePostHandler
+ * @param req HTTP request handle from esp_http_server.
+ * @return ESP_OK on success, or an esp_err_t error code.
+ * @pubstate uses route context tuner service.
+ *
+ * @author Michele Bigi
+ * @date 2026-07-06
+ */
+esp_err_t tunerTunePostHandler(httpd_req_t* req)
+{
+ auto* ctx = routeContextFrom(req);
+ if (ctx == nullptr || ctx->tuner == nullptr) {
+ httpd_resp_set_status(req, "503 Service Unavailable");
+ return httpd_resp_send(req, nullptr, 0);
+ }
+
+ std::array