enum display

This commit is contained in:
luc 2026-09-02 20:56:57 +02:00
parent 474c847553
commit 8b58693de8
10 changed files with 170 additions and 120 deletions

View file

@ -673,14 +673,15 @@ void WINAPI ReadStatusCompletion(CommsHandle hComms, CompletionToken token)
int Epd3Base::Epd3U::ReadStatusOnly()
{
EPDStep = EpdSteps::StepReadStatus;
int rv = 0;
int rv = 0, rv2;
ResetEvent(hCompletion);
SetFunctionReturnValue(eFunctions::ReadStatus, 0);
current->StatusDecoded = false;
if (!isConnected) rv = ReConnect();
token = BeginReadStatus(epdComsHandle, ReadStatusCompletion);
token = BeginReadStatus(epdComsHandle, nullptr);
rv = CommitAndSetRV();
rv = EndReadStatus(epdComsHandle, token, &epd3status);
rv2 = SetEndReturnValue(rv);
return rv;
}
/// <summary>
@ -748,12 +749,9 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
// opnieuw ?
if (rv==r_ErrorNotConnected) rv = ReConnect();
token = BeginReadStatus(epdComsHandle, nullptr);
rv = CommitAndSetRV();
if (!rv)
rv = EndReadStatus(epdComsHandle, token, &epd3status);
else
DebugWrite("Commit error {}\n", rv);
;
CommitAndSetRV();
rv = EndReadStatus(epdComsHandle, token, &epd3status);
rv2 = SetEndReturnValue(rv);
}
@ -833,12 +831,9 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
EPDStep = EpdSteps::StepReadRTC;
SetFunctionReturnValue(ReadRTC,0);
token = BeginReadRTC(epdComsHandle, nullptr);
rv = CommitAndSetRV();
if (!rv)
rv = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2
else
DebugWrite("Commit EndReadRTCerror {}\n", rv);
;
CommitAndSetRV();
rv = EndReadRTC(epdComsHandle, token, &utc); //EpdClock for MK2
rv2= SetEndReturnValue(rv);
if (rv) {
EPDStepResult = EpdStepResults::Error;
@ -862,6 +857,7 @@ int Epd3Base::Epd3U::ReadStatus(bool onlyStatus)
mk3WearerID.Length = 0;
//Mk2 EPDs only support Name and Primary ID
if (!isConnected) ReConnect();
EPDStep = EpdSteps::StepReadWearerId;
//batchstep = 0;
@ -1530,6 +1526,8 @@ error:
if (progressCallback) progressCallback(EPDStep, EPDStepResult);
return rv;
}
WORD Epd3Base::Epd3U::ReadAlarmConfig() {
//Alleen MK3 ? leeg bij MK2
@ -2088,7 +2086,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
if (r != 0)
Error = r;
}
if (!r) {
if (!r && isAdmin) {
//Unmanaged%20HtmlFiles/_display_ids.html
numItems = 9;
if (HardVersionMinor > 0) {
@ -2121,11 +2119,11 @@ int Epd3Base::Epd3U::WriteConfig(void)
// 0x1 Operation Menu Back /0x2 On / Off 0x4 Clear Dose 0x8 Toggle Telemtry 0x10 Responder Trigger
// 1 0 0 0 0
SetFunctionReturnValue(eFunctions::WriteDisplayEnables_R3,1);
/*SetFunctionReturnValue(eFunctions::WriteDisplayEnables_R3,1);
token = BeginWriteDisplayEnables_R3(epdComsHandle, enables, numItems, nullptr);
r = CommitAndEnd2RV(EndWriteDisplayEnables_R3, token);
if (r != 0)
Error = r;
Error = r;*/
}
if (!r) {
uint8_t numMenus = 9;

View file

@ -28,18 +28,56 @@
namespace Epd3Base {
enum eFunctions {
ReadSensitivities, ReadGains, ReadDetectorThresholds, fReadDoses, ReadTotalDoses, ReadQualityData, ReadPeakRates, ClearTotalDose, ClearDose, ClearPeakRates, ClearFaultStatus, ClearLatchedAlarms, EpdOnOff, ReadAlarmConfiguration, ReadAlarmThresholds, WriteAlarmThresholds, WriteRateOffPercentage, DeissueEPD, SetBaselineCounters, WriteWearerId, ReadBaselineCounts, MfrLogin_R2, WriteSensitivities_R2, WriteSensitivities_R3, WriteGains_R3
, WriteAccessLevelAdmin, WriteAccessLevelOpen
, WriteQuickAccessDisplays_R3, WriteDisplayEnables_R3, WriteDisplayEnablePermissions_R3, WriteAlarmConfiguration_R3, WriteOffModeDisplay_R3, WriteSwitchOnFromButton_R3
, WriteChirpSensitivity, WriteChirpEnable_R3
, WriteRTC_R3
, ReadStatus, ReadEpdIdentities, ReadCounts, ReadWearerId, ReadRTC
, fDestroyReaderInterface
, fDisconnect , fDisconnectAndNotify
, fStartDiscover
, IssueEPD, EnableProtectedSession
, fCreateReaderInterface,fOpenReader
, TestVibe
ReadSensitivities,
ReadGains,
ReadDetectorThresholds,
fReadDoses,
ReadTotalDoses,
ReadQualityData,
ReadPeakRates,
ClearTotalDose,
ClearDose,
ClearPeakRates,
ClearFaultStatus,
ClearLatchedAlarms,
EpdOnOff,
ReadAlarmConfiguration,
ReadAlarmThresholds,
WriteAlarmThresholds,
WriteRateOffPercentage,
DeissueEPD,
SetBaselineCounters,
WriteWearerId,
ReadBaselineCounts,
MfrLogin_R2,
WriteSensitivities_R2,
WriteSensitivities_R3,
WriteGains_R3,
WriteAccessLevelAdmin,
WriteAccessLevelOpen,
WriteQuickAccessDisplays_R3,
WriteDisplayEnables_R3,
WriteDisplayEnablePermissions_R3,
WriteAlarmConfiguration_R3,
WriteOffModeDisplay_R3,
WriteSwitchOnFromButton_R3,
WriteChirpSensitivity,
WriteChirpEnable_R3,
WriteRTC_R3,
ReadStatus,
ReadEpdIdentities,
ReadCounts,
ReadWearerId,
ReadRTC,
fDestroyReaderInterface,
fDisconnect,
fDisconnectAndNotify,
fStartDiscover,
IssueEPD,
EnableProtectedSession,
fCreateReaderInterface,
fOpenReader,
TestVibe
};

View file

@ -2,12 +2,12 @@
// C++ / Win32 resource editor vereist getallen met komma's
#define VERSION_MAJOR 3
#define VERSION_MINOR 4
#define VERSION_MINOR 5
#define VERSION_BUILD 0
#define VERSION_REVISION 0
// Strings voor de tekstuele weergave
#define VERSION_STRING "3.4.0.0"
#define VERSION_STRING "3.5.0.0"
#define COPYRIGHT_STRING "Copyright (c) 2019-2026 LSW-Tech Luc Vandenbroucke"
#define COMPANY_STRING "LSW-Tech"
#define PRODUCT_STRING "EpdBaseClr"

View file

@ -9,45 +9,59 @@ namespace eDosStation
{
static class DecodeResults
{
static readonly string[] names =
{
"ReadSensitivities",
"ReadDetectorThresholds",
"fReadDoses",
"ReadTotalDoses",
"ReadQualityData",
"ReadPeakRates",
"ClearTotalDose",
"ClearDose",
"ClearPeakRates",
"ClearFaultStatus",
"ClearLatchedAlarms",
"EpdOnOff",
"ReadAlarmConfiguration",
"ReadAlarmThresholds",
"WriteAlarmThresholds",
"WriteRateOffPercentage",
"DeissueEPD",
"SetBaselineCounters",
"WriteWearerId",
"ReadBaselineCounts",
"MfrLogin_R2",
"WriteSensitivities_R2",
"WriteAccessLevelAmin",
"WriteAccessLevelOpen",
"WriteQuickAccessDisplays_R3",
"WriteDisplayEnables_R3",
"WriteDisplayEnablePermissions_R3",
"WriteAlarmConfiguration_R3",
"WriteOffModeDisplay_R3",
"WriteSwitchOnFromButton_R3",
"WriteChirpSensitivity",
"WriteChirpEnable_R3","WriteRTC_R3","ReadStatus","ReadEpdIdentities","ReadCounts","ReadWearerId","ReadRTC"
,"DestroyReaderInterface" //0=ok
,"Disconnect" , "DisconnectAndNotify" //0=ok
,"StartDiscover","IssueEPD","EnableProtectedSession_R3"
,"CreateReaderInterface"
,"OpenReader","TestVibe"
"ReadSensitivities",
"ReadGains",
"ReadDetectorThresholds",
"fReadDoses",
"ReadTotalDoses",
"ReadQualityData",
"ReadPeakRates",
"ClearTotalDose",
"ClearDose",
"ClearPeakRates",
"ClearFaultStatus",
"ClearLatchedAlarms",
"EpdOnOff",
"ReadAlarmConfiguration",
"ReadAlarmThresholds",
"WriteAlarmThresholds",
"WriteRateOffPercentage",
"DeissueEPD",
"SetBaselineCounters",
"WriteWearerId",
"ReadBaselineCounts",
"MfrLogin_R2",
"WriteSensitivities_R2",
"WriteSensitivities_R3",
"WriteGains_R3",
"WriteAccessLevelAdmin",
"WriteAccessLevelOpen",
"WriteQuickAccessDisplays_R3",
"WriteDisplayEnables_R3",
"WriteDisplayEnablePermissions_R3",
"WriteAlarmConfiguration_R3",
"WriteOffModeDisplay_R3",
"WriteSwitchOnFromButton_R3",
"WriteChirpSensitivity",
"WriteChirpEnable_R3",
"WriteRTC_R3",
"ReadStatus",
"ReadEpdIdentities",
"ReadCounts",
"ReadWearerId",
"ReadRTC",
"fDestroyReaderInterface",
"fDisconnect",
"fDisconnectAndNotify",
"fStartDiscover",
"IssueEPD",
"EnableProtectedSession",
"fCreateReaderInterface",
"fOpenReader",
"TestVibe"
};
private static string GetName(int func)

View file

@ -74,5 +74,5 @@ using System.Windows;
//2026-08-07 3.00 optimized
//2026-08-17 3.01 telerik upgrade, cleanup old files
//2026-08-17 3.03 reconnect,issuewithalarms
[assembly: AssemblyVersion("3.3.7.0")]
[assembly: AssemblyFileVersion("3.3.7.0")]
[assembly: AssemblyVersion("3.3.8.0")]
[assembly: AssemblyFileVersion("3.3.8.0")]

View file

@ -1 +1 @@
02/09/2026 9:07:58,26
02/09/2026 20:48:01,64

View file

@ -208,17 +208,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAKgO8YS43xBYLRxHan
# lXRoMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwODMxMTgwMzI0WjAvBgkqhkiG9w0BCQQxIgQgwGts
# BgkqhkiG9w0BCQUxDxcNMjYwOTAyMTg0ODEzWjAvBgkqhkiG9w0BCQQxIgQgwGts
# hmgwg+1No3Bfq4IiEmxiCsjb9Jy7A/l9sT7ewm0wDQYJKoZIhvcNAQEBBQAEggIA
# f/N4enJSMgXCkOZcWVgSqGx6mabHRab92kAFxLK938zA4HoqBJ8J0wIu6VRoykK7
# RCIXVC+FwfeKFZAKlaRQGGaViyUw2D7Wn6+hVAQE5YSQgHy1KmTI36fthxQ7UVpZ
# KVOmXtM1D9Q8g+5fhYvkhM5E36unirDllY16eYgsnjfZrkELSUrrSwfU5NDXBw4t
# ovdCuO8ZEsEig0VQ+LIWzTv+v1tzT5sw0AK5nEFOvZGuFUSfx36FH4v01SFRocf2
# X3lr3FghD93nhxRmgMkc6VT3UzjY8AE3R4HnMrX/5dWEC8QbGrYgsC+fpl8QmUr4
# MiS3CsxrpKsfFqUL8qeK3MbEnKowecHqYgW6GNASr6duYYbXfcLj0n7pLUzVNl+p
# Ybxx71JqP2j+7MWO29hMmdNNkjwYCJhjkhkBTixD8eiCCZOP76xheJrYto+kSlEL
# 24IZol+q9WQQGrKkmwlIXYlNu6hjR3aMoK81pdtJCf88hObNldOk7M/3AnFF9PQQ
# dCnxAnCKYy1P4dedKAhJ6uXBjvCJRO2dbOMLPV7SCsgcqf9ffEed/ktgpbsUixuE
# dIKIQ9yZnvUcCyxLDkzP+sWiDnHZd4gbH5ah1WHxZT9mlzQZsvi/gToFd74C7loi
# J4YTuJYWfe+8J2PUrYf1e/rd361gIulbFQPwK+oZ7Ds=
# hYetPLEBYeaJFb/T/xp+jU00TsYm9va8RWXhcXFJSW/D07Nx8qZc0OHsW3Z/yJXV
# /NpYYvfkYkDqtl3TgxmRipM45pYITd48t3pFEJ3XC1RlJ+j663QI9Z07K0ckOsZg
# BvDi/i9GIwKh2qJRWvgsN/bTTVOhM/wSjBRcTd8AOo2Z+iUtvmWtWDRzdCf/+paJ
# dV2vpOutbDiQcHLXXrkSNFWa/4sQ0lWLEP5CGSm/FWgEYz+sFCtt7xPH9fBr/BXW
# AzI5Ar/sGUT3/tTobhiuDGKskj5n2wKe9HpGwtAgvlRiuEBk8RgFR475l7IGa+Cx
# iudDU/G+93QAodMEWuNX2ZNQ9IwIBGMNByFH5CMl0RhYtNC0eFObXiRqbozpOAmP
# LQby4qFTFlFApSESiPXbL7j2naw3uPoOa6QK/bqP7VHx0CkOaudlP7JNfgFPencY
# QEcnOhVXVrgHnUYFrzSzx+iCyjVb3kW/Q1ZoThL6IIhDFiHFCgQGd18ltYdG4D7P
# LokzMFNaAGpkriFyeSAI4sK3fB2QzzLk+CbKxpTCKOZc3KMZaBOlINaNT22dPDLy
# DguhJIzh9R+O4q+gglcMoA4JX18cKQ/G5UOf1QfciNDPXdAQjBxB+xrhYuN/rlGe
# apzAwbmawiyaovhN3Luex6+o2opNW55rbH6B0nWrWuk=
# SIG # End signature block

View file

@ -326,17 +326,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAKgO8YS43xBYLRxHan
# lXRoMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwODMxMTgwMzI0WjAvBgkqhkiG9w0BCQQxIgQgTGPs
# BgkqhkiG9w0BCQUxDxcNMjYwOTAyMTg0ODEzWjAvBgkqhkiG9w0BCQQxIgQgTGPs
# FQqQd9/aeqf+k/SnUJpze+872YJTIc/3H1ODCfAwDQYJKoZIhvcNAQEBBQAEggIA
# pNYDwux6k4e3t7aPn+0HdjI7XVdvGvapmBJGzh7puOl20Z1vk6uPIXraeV5Har3t
# dS/rD//umQdHDHbO83SMS6ftMONIi0FcN0MseHqVGT23zNA3Fvz/sRNHQFfANg9/
# yKSJGlkJ7nr5cbOBG9BNnTVZfjh4XArWt7kWhnkkunZNwetzQfCKBVfb4qu9i7vb
# dIVIKISmyZ9leObrwiU8zPbF9WzlxRZIm0Dy983EuS9ZcbLZriju+2UtKukgQVl/
# 9qq64rB04h7jsZz1ZIu2KhfrVSezhgp3ZgSVYaFrVJExhCaJ5naeQ4LnP0U0TbqU
# yKdvDo75S7EkJ7FiMu5POKyBF8xJfnjXmxlt3/6s7PZ2ZHJ0rMGwnzZrRObGYPWg
# YYUFjT/3KSecLZBB6mDjDdnQ8y5PakWoqA29Dmj/1LWhydmb3fO7rYByeX7Xcm9Z
# j24MdJpabAu/GxCUwVWwxQEmZ45IXO6uJumWAotyG6UU0SEFSGBjUFqkAIvtLY7D
# r1czlMi92NlInt7lrQ5vPrWa4ryQpA7B+wZBH3Ux4qon/TgvBd+zFOasd+Rnqm+7
# 9OsfAJAO/CUF0yEVIBVo5i1/7EVfdm4UKI8g0MPMHFsDEX7R9LydF1a/sGoWo8+F
# 0hti5HI73oTTyqNtrTTpP+qSYkOO+sQ3N1R9bs28uB0=
# yTpx3i4sPQ5A2FrxMCwxQgeUiWzUAeLlxfYs3ChYqN2WitQO0Bhuk+u+bg0n26UH
# 62EF4SqLNaUnjm4rDxmRIVAJeRPX5Af65TIlhFRn/5Gnqz9+kHXkY7gdbeslfM2Z
# uOaoA/AaZ3Q9vm0cJht4MOG9YpW/mlUrIfD8R0cMDe82FPJa46B4glfnVpGRuP0y
# wyynMTb2ciWF+BKW6Yx6pMjuBgG3jJ0M0NEmDiyAu5u9gvetqr6QbqTKr3PqMCPV
# 8yGZZpBtttRX2++UW0+k7p7JRfsfZ6HBoSE478g8rTNqM9LELgGmt6NLKgTMwl+1
# 5kTfYqxloQY7KYMT9mp6cdpqBWffanQebnEbBD12PqkMVvxbK6or4aTW8GgTJgUc
# M+P/Ay6PUMfqhDCRqg+wtV1wOlWffqvcwhGhOSwrMBXgnPdm4ZTcJ+O6QbmXPTkV
# KGs/1HcBBcEwSVGE3/IJE2NRlPioZzV5+xwuKmuG34WBiY+6ekLgWpMD+V3Rx8S1
# IDlzVTiCKxhgAM8uBkdHkfCXOA3jach9hYkkDOllyLahwQcOwRzJhtVVD3rN6rtQ
# 3wEY7Su+Utn285wYRVGrRRC9bZwfrEBVhrMLAuLMAyIXkkG+1N+f/2eEmHeWIQA9
# CJt6VWbLP8wxkxFDXWURsQui5asPy6Er7sh6hRhe6YE=
# SIG # End signature block

View file

@ -329,17 +329,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAKgO8YS43xBYLRxHan
# lXRoMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwODMxMTgwMzI0WjAvBgkqhkiG9w0BCQQxIgQgGtui
# BgkqhkiG9w0BCQUxDxcNMjYwOTAyMTg0ODEzWjAvBgkqhkiG9w0BCQQxIgQgGtui
# 82paX11KDIN86kiIL1XH+uGmvG+Fu6AqHv/faOkwDQYJKoZIhvcNAQEBBQAEggIA
# mSKQwFotEP7OeVL0b9Le6y4+mscfZf9WMBw0JAWpm0M1E7WU3PVp81pJWqbYBOvV
# SE6OQh0b/meTN96lm4dBOy+UeIspDkq0lQFVCSk5qeOBQSi+SWA1YNxTTSfejeHi
# CfP6VpztZcWQW40N+Hh36JSo/k7y75SFxRObNaodhVqUhVUYOidygEOSD91BfNZh
# rYSbWpn4sQPIiqu2YYk2MxbhJ3koh6Ar/pmNo2kp0VSBOck5BnMzPlIrWY9OHpN2
# sA+49u2aezhKiyZy4dCJHrNktZPv+7IXr7gqWI3k0rujDuz53mt46YQU9IUW9rGq
# v3iXGsxZrOzEaeJNtHB34rf43BcX8Q855WEUYEfCn7QPIfRSX0t1VW5YF1JQoG5x
# SQX1GamH08dojhiV0YnrlchwUEPinkt53re741fWZ5OxF0anbeDKyesuzfOJ6E0p
# 3vU0RFA8KyObYr+h6iW4ByRasB7W6jtMiSC5brWVRNGAS3sIUBxxh8kV8i/M4yLA
# tKhj2bXSrtXpFV4pltUtVm76rB8A8Z/N7w9o1JogJX7pF6O9RPtFqBRyGE84MHqb
# ZvJCMJ1Oe4973OgSTrcuz2dBPB8COjWEqHs6EX9BTOHoBF4keqDB0W5bUCOuFJYX
# 60TcepUA7JHpzpf5dWtn+cuJKfGs2G5SzRif0oQl52I=
# gZK8Kxr/mPqKaRxtTRr4pQ9paKyvzbkLvrttmgoZUL2F6ecMz3paNA+XNjtrFqlo
# JFPFgz5fOHUSqjrMtzDuW0uW+RQ+qhq3dcAwq+b7OQSyvQvHvKRiqngVO5iauIqc
# Lc66yE1wrEMDzNiGZ9NlS3BDsaYpkZcG1aVXf/0HkSnKV3eygR2CWFmpc9e0nnsz
# XDKBx49yIbnUZZz35+1K9YvHSNuU9YkfTb+ToLDhkS1c/5tSZX5/nwCx/dgomdrw
# KOJedJedPO8EWfySO1dQIp2cB6TbFCX/kcYi9UNRtQQivHQIK1jr8O0RrlJtCPIb
# XN56szrUAOpdCl/Nso7H3FXQX8JM67dFkEUex4/rp69u/bwcGJ2276YCnKub0GFP
# ZqSspdmes68jw4rp+KkX3Fy8hf68bSPu0IU1n508mqqlxmBNgfg8bAv0kaIlRQGK
# kOshJz7nVP2BEjzFFHdnoJyNZSnUA/esBrQ2KU1QFl8pJy34/SDcW+c5+K9xkhSz
# KIVXkrGx3T+NBWKvLSfjdI+XaDERZ7X5bbw7HfrfT9XfPULZuzrODviaOQJ/yK45
# kqko0KrCHO48Oh1ppqXG8JapezX0g1D3ER6w+ek4Ac2Pv5ipSrykBUXW9StTwt5d
# POZFDuSu/yMu7j/259ERgvpJnN1F4ayxSe3ASwSkTOM=
# SIG # End signature block

View file

@ -193,17 +193,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAKgO8YS43xBYLRxHan
# lXRoMA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwODMxMTgwMzI1WjAvBgkqhkiG9w0BCQQxIgQg6Tgk
# BgkqhkiG9w0BCQUxDxcNMjYwOTAyMTg0ODEzWjAvBgkqhkiG9w0BCQQxIgQg6Tgk
# d9vgRJTrKaa/aNqr0ugqtMxl17/Df7q35ywcJSEwDQYJKoZIhvcNAQEBBQAEggIA
# O//BwjoT1BxFy2FYZwjOKGvAPbOGC8WxmqRyEvbYYrghHDfP+p21TpKquWAXcCn1
# vvMg3bSB9p4jjvi/20R80kRp5FN4WjogFvSTPS9rzAwQi7RoziWgWKUhhDaLBNYL
# 5JhhVEm6n03WGrmes18VsAPdGgiE8bGuxMsUaVURnzZcaOdgqapQhT6083nsxEAf
# IjL/h34b7x8cW1mmh/U2r1rFVuEs+Es1A3CgWUnk/Vx8LACVfl6ZAtCkP8R3MkuU
# sKK3HWFkeIDoydp9c4zPPdBDT1pERhzOIWSicU/PjE+N6egy2x5JaMrYtzjW3kYz
# RCP3w8slIjgGeonmzGRvyD23u33nucV/hQxDqg2hilaElEobUl6iM5/wdlgNNQv/
# Pz7QyXtfzJNNgeOnl7IDcFAGZrfPXcE/vq0kgkl7C45qgKGAzZ1G7m2308rPt4T4
# 3aUks4YIgVm5JPxpEVsIl+zCY7k9IS91VaNs18y43FOe3Sbl8/DBUAar0DMq/SG7
# lm5WIkWEkwchjSo40jxBPE2NT+UQ8dQwMtNlaAzacIj9jKz6enrdZ8oUZQx555Bj
# pc8bLJg2hHo9V3g3uX8X6Cy7W4EVeYKvRwD8URHa68F6YzlsuJ+urbjKc+VVfGq5
# BrwE9r9ai/474Q0kNsqSeKqrtT5VI//riXdg5sF3tJc=
# CpS8eVFj0nqMd404Jx0rnDpS2ALR/LeNa3Qy6qgoDeAyjyeIiprcHONa4W3myGcZ
# 3Tr1gEeUxDkjBhU2amYeKFMUVkuSP2lUHdpBQlykwqtyVBt4TzxTZQ4gSsTNBVJT
# Zu7Ljgqu1zirAepEvqwLBOsQ3ugJBWnQHL3QfnZW8dtM6e9oC3jIhE2BY9Llabcs
# WnueqUIct5SSp8Xwf/bjjbzMDJ5WViIGfiHHgvc6k/hRJNXSTbN7e3KPIooLdVFD
# pqGDM2VSnHRitPvHSE/57VGDVya6GUewxlxALl3U3bQKLE2mIFm8r50Ro3DRaue4
# g2sdiNnstrmww5lxCEJymA6Ixg9piUMC4eg9UwfOUqsApC3uuIpMK82v/IJfsNBA
# kBpy29eMGP91rVMmDeRzW0kO/QFPHo5xMkH1mFNBkLENxybdVZ3bRYMyUIA4rAAt
# Y++IfS+MLfSonIs0Iqask/cvLYU+quTOKb+VKo078q8EGFdYsOAe0tLoABtdL/F5
# eLRF1xzJCEQ0nqUVkFYNdBY7pW9h/xwstz/OC8NpMRZY5sdwNB2L58t7t9cAbq+2
# 2v9ozP9odA5SfLpqFoq1JxdrHL7a4/TGFeB4H9529PPqSt6jjyr+ZJ0nrsKprD/n
# w3t4GIC8ghKh0kAMp4/jX+DWdTxnmQQ8nde+hpg0diU=
# SIG # End signature block