From 0a458ce9e29f4144aa728d15b1f93966b8ebdd90 Mon Sep 17 00:00:00 2001 From: John Wiseman Date: Sat, 26 Oct 2024 20:52:32 +0100 Subject: [PATCH] 6.0.24.48 --- 6pack.c | 2 +- AEAPactor.c | 12 +- ARDOP.c | 20 +- Bpq32.c | 5 +- CBPQ32.vcproj | 8 +- CHeaders.h | 3 + CommonCode.c | 11 +- Events.c | 35 +- FLDigi.c | 10 +- FreeDATA.c | 30 +- HALDriver.c | 16 +- HFCommon.c | 2 +- HSMODEM.c | 4 +- KAMPactor.c | 22 +- KISSHF.c | 2 +- LinBPQ.c | 4 + MQTTClient.h | 1980 +++++++++++++++++++++++++++ MULTIPSK.c | 8 +- MailNode.vcproj | 6 +- SCSPactor.c | 10 +- SCSTrackeMulti.c | 6 +- SCSTracker.c | 8 +- SerialPort.c | 4 +- TelnetV6.c | 24 +- UIARQ.c | 12 +- UZ7HODrv.c | 11 +- VARA.c | 49 +- Versions.h | 4 +- WINMOR.c | 10 +- mailapi.c | 17 +- paho-mqtt3a-static.lib | Bin 0 -> 751506 bytes tncinfo.h | 11 +- paho-mqtt3a.dll => xpaho-mqtt3a.dll | Bin 33 files changed, 2201 insertions(+), 145 deletions(-) create mode 100644 MQTTClient.h create mode 100644 paho-mqtt3a-static.lib rename paho-mqtt3a.dll => xpaho-mqtt3a.dll (100%) diff --git a/6pack.c b/6pack.c index ba7bd07..9e0eef0 100644 --- a/6pack.c +++ b/6pack.c @@ -970,7 +970,7 @@ ok: UCHAR * data = &buffptr->Data[0]; STREAM->FramesQueued--; txlen = (int)buffptr->Len; - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; bytes=SerialSendData(TNC, data, txlen); WritetoTrace(TNC, data, txlen); diff --git a/AEAPactor.c b/AEAPactor.c index 56686ee..98ca400 100644 --- a/AEAPactor.c +++ b/AEAPactor.c @@ -812,7 +812,7 @@ VOID AEAPoll(int Port) { // Limit amount in TX - if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked > 200) + if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked > 200) continue; // If in IRS state for too long, force turnround @@ -877,8 +877,8 @@ VOID AEAPoll(int Port) EncodeAndSend(TNC, TXMsg, datalen + 1); ReleaseBuffer(buffptr); - TNC->Streams[Stream].BytesTXed += datalen; - Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].BytesTXed); + TNC->Streams[Stream].bytesTXed += datalen; + Debugprintf("Stream %d Sending %d, BytesTXED now %d", Stream, datalen, TNC->Streams[Stream].bytesTXed); TNC->Timeout = 0; TNC->DataBusy = TRUE; @@ -1212,7 +1212,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len) // If nothing more to send, turn round link if ((TNC->Streams[0].BPQtoPACTOR_Q == 0) && TNC->NeedTurnRound && - (TNC->Streams[0].BytesAcked >= TNC->Streams[0].BytesTXed)) // Nothing following and all acked + (TNC->Streams[0].BytesAcked >= TNC->Streams[0].bytesTXed)) // Nothing following and all acked { Debugprintf("AEA Sent = Acked - sending Turnround"); @@ -1247,7 +1247,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len) Len--; // Remove Header buffptr->Len = Len; // Length - TNC->Streams[Stream].BytesRXed += (int)Len; + TNC->Streams[Stream].bytesRXed += (int)Len; memcpy(&buffptr->Data[0], Buffer, Len); C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr); @@ -1418,7 +1418,7 @@ static VOID ProcessAEAPacket(struct TNCINFO * TNC, UCHAR * Msg, size_t Len) Buffer[Len-2] = 0; } - TNC->Streams[Stream].BytesRXed = TNC->Streams[Stream].BytesTXed = TNC->Streams[Stream].BytesAcked = 0; + TNC->Streams[Stream].bytesRXed = TNC->Streams[Stream].bytesTXed = TNC->Streams[Stream].BytesAcked = 0; TNC->Streams[Stream].ConnectTime = time(NULL); if (Stream == 0) diff --git a/ARDOP.c b/ARDOP.c index 3c3e3a0..ff3ce4e 100644 --- a/ARDOP.c +++ b/ARDOP.c @@ -314,7 +314,7 @@ void SendARDOPorPacketData(struct TNCINFO * TNC, int Stream, UCHAR * Buff, int t if (Stream == 0) { ARDOPSendData(TNC, Buff, txlen); - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; WritetoTrace(TNC, Buff, txlen); } else @@ -1274,7 +1274,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) UCHAR * data = &buffptr->Data[0]; STREAM->FramesQueued--; txlen = (int)buffptr->Len; - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; if (Stream == 0) { @@ -1381,7 +1381,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) { bytes=ARDOPSendData(TNC, &buff->L2DATA[0], txlen); TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, &buff->L2DATA[0], txlen); } else @@ -1627,6 +1627,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) ARDOPChangeMYC(TNC, TNC->Streams[0].MyCall); + hookL4SessionAttempt(STREAM, &buff->L2DATA[2], TNC->Streams[0].MyCall); + // See if Busy if (InterlockedCheckBusy(TNC)) @@ -2263,7 +2265,7 @@ VOID TNCLost(struct TNCINFO * TNC) if (Stream == 0) { sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding); + STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } @@ -3063,7 +3065,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) } sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding); + STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); return; } @@ -3083,7 +3085,7 @@ VOID ARDOPProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) WritetoTrace(TNC, Buffer, MsgLen - 1); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; memcpy(Call, &Buffer[10], 10); @@ -3834,12 +3836,12 @@ VOID ARDOPProcessDataPacket(struct TNCINFO * TNC, UCHAR * Type, UCHAR * Data, in return; } - STREAM->BytesRXed += Length; + STREAM->bytesRXed += Length; Data[Length] = 0; sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - STREAM->BytesOutstanding, STREAM->BytesRXed, STREAM->BytesOutstanding); + STREAM->bytesTXed - STREAM->BytesOutstanding, STREAM->bytesRXed, STREAM->BytesOutstanding); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); @@ -4988,7 +4990,7 @@ tcpHostFrame: WritetoTrace(TNC, Buffer, len); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; memcpy(Call, &Buffer[19], 10); ptr = strchr(Call, ' '); diff --git a/Bpq32.c b/Bpq32.c index fce5a9a..aeb5e83 100644 --- a/Bpq32.c +++ b/Bpq32.c @@ -1230,8 +1230,9 @@ along with LinBPQ/BPQ32. If not, see http://www.gnu.org/licenses // NodeAPI improvements (46) // Add MQTT Interface (46) // Fix buffer leak in ARDOP codev(46) -// Fix possilbe crash if MQTT not in use (47) - +// Fix possible crash if MQTT not in use (47) +// Add optional ATTACH time limit for VARA (48) +// API foramt fixes (48) #define CKernel diff --git a/CBPQ32.vcproj b/CBPQ32.vcproj index d8b6051..b66278e 100644 --- a/CBPQ32.vcproj +++ b/CBPQ32.vcproj @@ -50,7 +50,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\CInclude;..\CommonSource;..\CKernel" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T;BPQ32" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;BPQ32_EXPORTS;MDIKERNEL;_USE_32BIT_TIME_T;BPQ32;NOMQTT" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -74,7 +74,7 @@ PortRecord; + struct STREAMINFO * STREAM = &TNC->Streams[Stream]; // Stop Scanner @@ -938,7 +939,11 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO memset(Session, 0, sizeof(TRANSPORTENTRY)); - memcpy(TNC->Streams[Stream].RemoteCall, Call, 9); // Save Text Callsign + memcpy(STREAM->RemoteCall, Call, 9); // Save Text Callsign + + // May be subsequently rejected but a good place to capture calls + + hookL4SessionAccepted(STREAM, Call, TNC->TargetCall); if (AllowTR) ConvToAX25Ex(Call, Session->L4USER); // Allow -T and -R SSID's for MPS @@ -951,7 +956,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO if (NEXTID == 0) NEXTID++; // Keep non-zero TNC->PortRecord->ATTACHEDSESSIONS[Stream] = Session; - TNC->Streams[Stream].Attached = TRUE; + STREAM->Attached = TRUE; Session->L4TARGET.EXTPORT = TNC->PortRecord; @@ -962,7 +967,7 @@ BOOL ProcessIncommingConnectEx(struct TNCINFO * TNC, char * Call, int Stream, BO Session->SESSPACLEN = TNC->PortRecord->PORTCONTROL.PORTPACLEN; Session->KAMSESSION = Stream; - TNC->Streams[Stream].Connected = TRUE; // Subsequent data to data channel + STREAM->Connected = TRUE; // Subsequent data to data channel if (LogAllConnects) { diff --git a/Events.c b/Events.c index 1d42872..e47e012 100644 --- a/Events.c +++ b/Events.c @@ -181,6 +181,29 @@ void hookL2SessionAttempt(int Port, char * ourcall, char * remotecall, struct _L strcpy(LINK->Direction, "Out"); } +void hookL4SessionAttempt(struct STREAMINFO * STREAM, char * remotecall, char * ourcall) +{ + // Outgoing Connect + + STREAM->ConnectTime = time(NULL); + STREAM->bytesTXed = STREAM->bytesRXed = 0; + + strcpy(STREAM->callingCall, ourcall); + strcpy(STREAM->receivingCall, remotecall); + strcpy(STREAM->Direction, "Out"); +} + +void hookL4SessionAccepted(struct STREAMINFO * STREAM, char * remotecall, char * ourcall) +{ + // Incoming Connect + + STREAM->ConnectTime = time(NULL); + STREAM->bytesTXed = STREAM->bytesRXed = 0; + + strcpy(STREAM->callingCall, remotecall); + strcpy(STREAM->receivingCall, ourcall); + strcpy(STREAM->Direction, "In"); +} void hookL4SessionDeleted(struct TNCINFO * TNC, struct STREAMINFO * STREAM) { @@ -191,8 +214,8 @@ void hookL4SessionDeleted(struct TNCINFO * TNC, struct STREAMINFO * STREAM) if (STREAM->ConnectTime) { time_t sessionTime = time(NULL) - STREAM->ConnectTime; - double avBytesRXed = STREAM->BytesRXed / (sessionTime / 60.0); - double avBytesSent = STREAM->BytesTXed / (sessionTime / 60.0); + double avBytesRXed = STREAM->bytesRXed / (sessionTime / 60.0); + double avBytesSent = STREAM->bytesTXed / (sessionTime / 60.0); time_t Now = time(NULL); struct tm * TM = localtime(&Now); sprintf(timestamp, "%02d:%02d:%02d", TM->tm_hour, TM->tm_min, TM->tm_sec); @@ -200,10 +223,10 @@ void hookL4SessionDeleted(struct TNCINFO * TNC, struct STREAMINFO * STREAM) if (sessionTime == 0) sessionTime = 1; // Or will get divide by zero error - sprintf(Msg, "{\"mode\": \"%s\", \"port\": %d, \"callfrom\": \"%s\", \"callto\": \"%s\", \"time\": %d, \"bytesSent\": %d," - "\"BPMSent\": %4.2f, \"BytesReceived\": %d, \"BPMRECEIVED\": %4.2f, \"timestamp\": \"%s\"}", - Modenames[TNC->Hardware - 1], TNC->Port, STREAM->MyCall, STREAM->RemoteCall, sessionTime, - STREAM->BytesTXed, avBytesSent, STREAM->BytesRXed, avBytesRXed, timestamp); + sprintf(Msg, "{\"mode\": \"%s\", \"direction\": \"%s\", \"port\": %d, \"callfrom\": \"%s\", \"callto\": \"%s\", \"time\": %d, \"bytesSent\": %d," + "\"BPMSent\": %4.2f, \"BytesReceived\": %d, \"BPMReceived\": %4.2f, \"timestamp\": \"%s\"}", + Modenames[TNC->Hardware - 1], STREAM->Direction, TNC->Port, STREAM->callingCall, STREAM->receivingCall, sessionTime, + STREAM->bytesTXed, avBytesSent, STREAM->bytesRXed, avBytesRXed, timestamp); if (MQTT) MQTTReportSession(Msg); diff --git a/FLDigi.c b/FLDigi.c index 5153697..95c8019 100644 --- a/FLDigi.c +++ b/FLDigi.c @@ -1637,7 +1637,7 @@ static VOID ConnecttoFLDigiThread(void * portptr) VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM) { sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d Resent %d Queued %d", - STREAM->BytesRXed, STREAM->BytesTXed, STREAM->BytesAcked, STREAM->BytesResent, STREAM->BytesOutstanding); + STREAM->bytesRXed, STREAM->bytesTXed, STREAM->BytesAcked, STREAM->BytesResent, STREAM->BytesOutstanding); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } @@ -2531,7 +2531,7 @@ VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, char Channe strcpy(STREAM->MyCall, call2); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; if (TNC->RIG && TNC->RIG != &TNC->DummyRig && strcmp(TNC->RIG->RigName, "PTT")) { @@ -2690,7 +2690,7 @@ AckConnectRequest: goto SendKReply; // Repeated ACK STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->Connected = TRUE; ARQ->ARQTimerState = 0; @@ -3014,7 +3014,7 @@ SendKReply: buffptr->Len = Len; memcpy(buffptr->Data, &Input[1], Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; UpdateStatsLine(TNC, STREAM); @@ -3131,7 +3131,7 @@ VOID SendARQData(struct TNCINFO * TNC, PMSGWITHLEN Buffer) ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer; - STREAM->BytesTXed += Origlen; + STREAM->bytesTXed += Origlen; UpdateStatsLine(TNC, STREAM); diff --git a/FreeDATA.c b/FreeDATA.c index eb12eec..2b95f66 100644 --- a/FreeDATA.c +++ b/FreeDATA.c @@ -971,7 +971,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) memset(STREAM->RemoteCall, 0, 10); strcpy(STREAM->RemoteCall, &buff->L2DATA[2]); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; sprintf(TNC->WEB_TNCSTATE, "%s Connecting to %s", STREAM->MyCall, STREAM->RemoteCall); MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); @@ -1950,7 +1950,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->Connected = TRUE; // Send Connect ACK @@ -2049,7 +2049,7 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char WritetoTrace(TNC, Msg, 256); Len -= 256; Msg += 256; - STREAM->BytesRXed += 256; + STREAM->bytesRXed += 256; } @@ -2058,9 +2058,9 @@ VOID FreeDataProcessTNCMessage(struct TNCINFO * TNC, char * Call, unsigned char memcpy(buffptr->Data, Msg, Len); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); WritetoTrace(TNC, Msg, Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount); + STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); return; @@ -2313,7 +2313,7 @@ VOID FreeDataProcessNewConnect(struct TNCINFO * TNC, char * fromCall, char * toC MySetWindowText(TNC->xIDC_TNCSTATE, TNC->WEB_TNCSTATE); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; STREAM->Connected = TRUE; return; @@ -2413,7 +2413,7 @@ void FlushData(struct TNCINFO * TNC) Info->toSendTimeout = 0; sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount); + STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } @@ -2436,10 +2436,10 @@ static int SendAsFile(struct TNCINFO * TNC, char * Call, char * Msg, int Len) Info->toSendCount += Len; Info->toSendTimeout = 10; // About a second - STREAM->BytesTXed += Len; + STREAM->bytesTXed += Len; sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount); + STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); return Len; @@ -2706,7 +2706,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This) WritetoTrace(TNC, Line, 256); Len -= 256; Line += 256; - STREAM->BytesRXed += 256; + STREAM->bytesRXed += 256; } buffptr = GetBuff(); @@ -2714,12 +2714,12 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This) memcpy(buffptr->Data, Line, Len); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); WritetoTrace(TNC, Line, Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; } sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount); + STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } return; @@ -2798,7 +2798,7 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This) WritetoTrace(TNC, Line, 256); Len -= 256; TEXT += 256; - STREAM->BytesRXed += 256; + STREAM->bytesRXed += 256; } buffptr = GetBuff(); @@ -2806,14 +2806,14 @@ void ProcessMessageObject(struct TNCINFO * TNC, char * This) memcpy(buffptr->Data, Line, Len); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); WritetoTrace(TNC, Line, Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; TEXT = rest; rest = strlop(TEXT, 10); // FreeData chat ues LF } sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->BytesRXed, TNC->FreeDataInfo->toSendCount); + STREAM->bytesTXed - TNC->FreeDataInfo->toSendCount, STREAM->bytesRXed, TNC->FreeDataInfo->toSendCount); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } } diff --git a/HALDriver.c b/HALDriver.c index 9b2d4f8..c8ba897 100644 --- a/HALDriver.c +++ b/HALDriver.c @@ -749,7 +749,7 @@ VOID HALPoll(int Port) STREAM->Attached = TRUE; - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, STREAM->MyCall); STREAM->MyCall[calllen] = 0; @@ -829,7 +829,7 @@ VOID HALPoll(int Port) //for (Stream = 0; Stream <= MaxStreams; Stream++) { - if (TNC->TNCOK && STREAM->BPQtoPACTOR_Q && (STREAM->BytesTXed - STREAM->BytesAcked < 600)) + if (TNC->TNCOK && STREAM->BPQtoPACTOR_Q && (STREAM->bytesTXed - STREAM->BytesAcked < 600)) { int datalen; PMSGWITHLEN buffptr; @@ -872,7 +872,7 @@ VOID HALPoll(int Port) ReleaseBuffer(buffptr); WriteLogLine(2, MsgPtr, datalen); - STREAM->BytesTXed += datalen; + STREAM->bytesTXed += datalen; STREAM->FramesQueued--; ShowTraffic(TNC); @@ -1090,10 +1090,10 @@ VOID ProcessHALData(struct TNCINFO * TNC) STREAM->BytesAcked += Len; // Debugprintf("Acked %d", Len); - if (STREAM->BytesAcked > STREAM->BytesTXed) + if (STREAM->BytesAcked > STREAM->bytesTXed) Debugprintf("Too Much Acked"); - if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->BytesTXed) + if ((STREAM->BPQtoPACTOR_Q == 0) && STREAM->BytesAcked >= STREAM->bytesTXed) { // All sent @@ -1121,7 +1121,7 @@ VOID ProcessHALData(struct TNCINFO * TNC) WriteLogLine(1, TNC->DataBuffer, Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; memcpy(buffptr->Data, TNC->DataBuffer, Len); @@ -1756,7 +1756,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call) strcpy(CallCopy, Call); strcat(CallCopy, " "); // Some routines expect 10 char calls - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; STREAM->ConnectTime = time(NULL); // Stop Scanner @@ -1804,7 +1804,7 @@ BOOL HALConnected(struct TNCINFO * TNC, char * Call) EncodeAndSend(TNC, CTEXTMSG, CTEXTLEN); WriteLogLine(2, CTEXTMSG, CTEXTLEN); - STREAM->BytesTXed += CTEXTLEN; + STREAM->bytesTXed += CTEXTLEN; } return TRUE; } diff --git a/HFCommon.c b/HFCommon.c index c5f639a..ba936dd 100644 --- a/HFCommon.c +++ b/HFCommon.c @@ -1602,7 +1602,7 @@ VOID ShowTraffic(struct TNCINFO * TNC) char Status[80]; sprintf(Status, "RX %d TX %d ACKED %d ", - TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked); + TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); #ifndef LINBPQ SetDlgItemText(TNC->hDlg, IDC_TRAFFIC, Status); #endif diff --git a/HSMODEM.c b/HSMODEM.c index de045c2..7675863 100644 --- a/HSMODEM.c +++ b/HSMODEM.c @@ -589,7 +589,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) UCHAR * data = &buffptr->Data[0]; STREAM->FramesQueued--; txlen = (int)buffptr->Len; - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; bytes=HSMODEMSendData(TNC, data, txlen); WritetoTrace(TNC, data, txlen); @@ -668,7 +668,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) bytes=HSMODEMSendData(TNC, TXMsg, txlen); TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; // WritetoTrace(TNC, &buff->L2DATA[0], txlen); return 1; diff --git a/KAMPactor.c b/KAMPactor.c index 0b1a125..890bcf8 100644 --- a/KAMPactor.c +++ b/KAMPactor.c @@ -1099,7 +1099,7 @@ VOID KAMPoll(int Port) // Limit amount in TX, so we keep some on the TX Q and don't send turnround too early - if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked > 200) + if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked > 200) continue; // Dont send if IRS State @@ -1132,7 +1132,7 @@ VOID KAMPoll(int Port) } Next = 0; - STREAM->BytesTXed += datalen; + STREAM->bytesTXed += datalen; if (Stream == 0) { @@ -1157,7 +1157,7 @@ VOID KAMPoll(int Port) if (Stream == 0) { sprintf(Status, "RX %d TX %d ACKED %d ", - TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked); + TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); SetWindowText(TNC->xIDC_TRAFFIC, Status); if ((TNC->HFPacket == 0) && (TNC->Streams[0].BPQtoPACTOR_Q == 0)) // Nothing following @@ -1532,14 +1532,14 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) { if (Msg[1] == '2') // HF Port { - if (TNC->Streams[0].BytesTXed) + if (TNC->Streams[0].bytesTXed) TNC->Streams[0].BytesAcked += Len - 3; // We get an ack before the first send sprintf(Status, "RX %d TX %d ACKED %d ", - TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked); + TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); SetWindowText(TNC->xIDC_TRAFFIC, Status); - if (TNC->Streams[0].BytesTXed - TNC->Streams[0].BytesAcked < 500) + if (TNC->Streams[0].bytesTXed - TNC->Streams[0].BytesAcked < 500) TNC->Streams[0].FramesOutstanding = 0; } return; @@ -1555,7 +1555,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) Len-=3; // Remove Header buffptr->Len = Len; // Length - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; memcpy(buffptr->Data, Buffer, Len); C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); @@ -1563,7 +1563,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) if (Stream == 0) { sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ", - TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked); + TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } @@ -1762,7 +1762,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) Buffer[Len-4] = 0; } - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = 0; STREAM->ConnectTime = time(NULL); if (Stream == 0) @@ -1776,7 +1776,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) Rig_Command( (TRANSPORTENTRY *) -1, Msg); sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %d ", - TNC->Streams[0].BytesRXed, TNC->Streams[0].BytesTXed, TNC->Streams[0].BytesAcked); + TNC->Streams[0].bytesRXed, TNC->Streams[0].bytesTXed, TNC->Streams[0].BytesAcked); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); } @@ -1874,7 +1874,7 @@ VOID ProcessKHOSTPacket(struct TNCINFO * TNC, UCHAR * Msg, int Len) memcpy(&CTBuff[3], &CTEXTMSG[Next], Len); EncodeAndSend(TNC, CTBuff, Len + 3); EncodeAndSend(TNC, "E", 1); // Changeover when all sent - TNC->Streams[0].BytesTXed += CTEXTLEN; + TNC->Streams[0].bytesTXed += CTEXTLEN; } return; diff --git a/KISSHF.c b/KISSHF.c index 93d0e43..4008235 100644 --- a/KISSHF.c +++ b/KISSHF.c @@ -358,7 +358,7 @@ ok: UCHAR * data = &buffptr->Data[0]; STREAM->FramesQueued--; txlen = (int)buffptr->Len; - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; bytes=SerialSendData(TNC, data, txlen); WritetoTrace(TNC, data, txlen); diff --git a/LinBPQ.c b/LinBPQ.c index 27dc550..f07dfe3 100644 --- a/LinBPQ.c +++ b/LinBPQ.c @@ -1288,6 +1288,10 @@ int main(int argc, char * argv[]) AGWActive = AGWAPIInit(); + if (Redirected == 0) + ConTerm.BPQStream = FindFreeStream(); + + #ifndef WIN32 for (i = 1; i < argc; i++) diff --git a/MQTTClient.h b/MQTTClient.h new file mode 100644 index 0000000..a5dc7f2 --- /dev/null +++ b/MQTTClient.h @@ -0,0 +1,1980 @@ +/******************************************************************************* + * Copyright (c) 2009, 2023 IBM Corp., Ian Craggs and others + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. + * + * The Eclipse Public License is available at + * https://www.eclipse.org/legal/epl-2.0/ + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. + * + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + * Ian Craggs, Allan Stockdill-Mander - SSL updates + * Ian Craggs - multiple server connection support + * Ian Craggs - MQTT 3.1.1 support + * Ian Craggs - remove const from eyecatchers #168 + *******************************************************************************/ + +/** + * @cond MQTTClient_internal + * @mainpage MQTT Client Library Internals + * In the beginning there was one MQTT C client library, MQTTClient, as implemented in MQTTClient.c + * This library was designed to be easy to use for applications which didn't mind if some of the calls + * blocked for a while. For instance, the MQTTClient_connect call will block until a successful + * connection has completed, or a connection has failed, which could be as long as the "connection + * timeout" interval, whose default is 30 seconds. + * + * However in mobile devices and other windowing environments, blocking on the GUI thread is a bad + * thing as it causes the user interface to freeze. Hence a new API, MQTTAsync, implemented + * in MQTTAsync.c, was devised. There are no blocking calls in this library, so it is well suited + * to GUI and mobile environments, at the expense of some extra complexity. + * + * Both libraries are designed to be sparing in the use of threads. So multiple client objects are + * handled by one or two threads, with a select call in Socket_getReadySocket(), used to determine + * when a socket has incoming data. This API is thread safe: functions may be called by multiple application + * threads, with the exception of ::MQTTClient_yield and ::MQTTClient_receive, which are intended + * for single threaded environments only. + * + * @endcond + * @cond MQTTClient_main + * @mainpage MQTT Client library for C (MQTTClient) + * © Copyright 2009, 2023 IBM Corp., Ian Craggs and others + * + * @brief An MQTT client library in C. + * + * These pages describe the original more synchronous API which might be + * considered easier to use. Some of the calls will block. For the new + * totally asynchronous API where no calls block, which is especially suitable + * for use in windowed environments, see the + * MQTT C Client Asynchronous API Documentation. + * The MQTTClient API is not thread safe, whereas the MQTTAsync API is. + * + * An MQTT client application connects to MQTT-capable servers. + * A typical client is responsible for collecting information from a telemetry + * device and publishing the information to the server. It can also subscribe + * to topics, receive messages, and use this information to control the + * telemetry device. + * + * MQTT clients implement the published MQTT v3 protocol. You can write your own + * API to the MQTT protocol using the programming language and platform of your + * choice. This can be time-consuming and error-prone. + * + * To simplify writing MQTT client applications, this library encapsulates + * the MQTT v3 protocol for you. Using this library enables a fully functional + * MQTT client application to be written in a few lines of code. + * The information presented here documents the API provided + * by the MQTT Client library for C. + * + * Using the client
+ * Applications that use the client library typically use a similar structure: + * + * Some simple examples are shown here: + * + * Additional information about important concepts is provided here: + * + * @endcond + */ + +/* +/// @cond EXCLUDE +*/ +#if !defined(MQTTCLIENT_H) +#define MQTTCLIENT_H + +#if defined(__cplusplus) + extern "C" { +#endif + +#include +/* +/// @endcond +*/ + +#include "MQTTExportDeclarations.h" + +#include "MQTTProperties.h" +#include "MQTTReasonCodes.h" +#include "MQTTSubscribeOpts.h" +#if !defined(NO_PERSISTENCE) +#include "MQTTClientPersistence.h" +#endif + +/** + * Return code: No error. Indicates successful completion of an MQTT client + * operation. + */ +#define MQTTCLIENT_SUCCESS 0 +/** + * Return code: A generic error code indicating the failure of an MQTT client + * operation. + */ +#define MQTTCLIENT_FAILURE -1 + +/* error code -2 is MQTTCLIENT_PERSISTENCE_ERROR */ + +/** + * Return code: The client is disconnected. + */ +#define MQTTCLIENT_DISCONNECTED -3 +/** + * Return code: The maximum number of messages allowed to be simultaneously + * in-flight has been reached. + */ +#define MQTTCLIENT_MAX_MESSAGES_INFLIGHT -4 +/** + * Return code: An invalid UTF-8 string has been detected. + */ +#define MQTTCLIENT_BAD_UTF8_STRING -5 +/** + * Return code: A NULL parameter has been supplied when this is invalid. + */ +#define MQTTCLIENT_NULL_PARAMETER -6 +/** + * Return code: The topic has been truncated (the topic string includes + * embedded NULL characters). String functions will not access the full topic. + * Use the topic length value to access the full topic. + */ +#define MQTTCLIENT_TOPICNAME_TRUNCATED -7 +/** + * Return code: A structure parameter does not have the correct eyecatcher + * and version number. + */ +#define MQTTCLIENT_BAD_STRUCTURE -8 +/** + * Return code: A QoS value that falls outside of the acceptable range (0,1,2) + */ +#define MQTTCLIENT_BAD_QOS -9 +/** + * Return code: Attempting SSL connection using non-SSL version of library + */ +#define MQTTCLIENT_SSL_NOT_SUPPORTED -10 + /** + * Return code: unrecognized MQTT version + */ + #define MQTTCLIENT_BAD_MQTT_VERSION -11 +/** + * Return code: protocol prefix in serverURI should be: + * @li @em tcp:// or @em mqtt:// - Insecure TCP + * @li @em ssl:// or @em mqtts:// - Encrypted SSL/TLS + * @li @em ws:// - Insecure websockets + * @li @em wss:// - Secure web sockets + * The TLS enabled prefixes (ssl, mqtts, wss) are only valid if a TLS + * version of the library is linked with. + */ +#define MQTTCLIENT_BAD_PROTOCOL -14 + /** + * Return code: option not applicable to the requested version of MQTT + */ + #define MQTTCLIENT_BAD_MQTT_OPTION -15 + /** + * Return code: call not applicable to the requested version of MQTT + */ + #define MQTTCLIENT_WRONG_MQTT_VERSION -16 + /** + * Return code: 0 length will topic on connect + */ + #define MQTTCLIENT_0_LEN_WILL_TOPIC -17 + + +/** + * Default MQTT version to connect with. Use 3.1.1 then fall back to 3.1 + */ +#define MQTTVERSION_DEFAULT 0 +/** + * MQTT version to connect with: 3.1 + */ +#define MQTTVERSION_3_1 3 +/** + * MQTT version to connect with: 3.1.1 + */ +#define MQTTVERSION_3_1_1 4 + /** + * MQTT version to connect with: 5 + */ + #define MQTTVERSION_5 5 +/** + * Bad return code from subscribe, as defined in the 3.1.1 specification + */ +#define MQTT_BAD_SUBSCRIBE 0x80 + +/** + * Initialization options + */ +typedef struct +{ + /** The eyecatcher for this structure. Must be MQTG. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 */ + int struct_version; + /** 1 = we do openssl init, 0 = leave it to the application */ + int do_openssl_init; +} MQTTClient_init_options; + +#define MQTTClient_init_options_initializer { {'M', 'Q', 'T', 'G'}, 0, 0 } + +/** + * Global init of mqtt library. Call once on program start to set global behaviour. + * do_openssl_init - if mqtt library should initialize OpenSSL (1) or rely on the caller to do it before using the library (0) + */ +LIBMQTT_API void MQTTClient_global_init(MQTTClient_init_options* inits); + +/** + * A handle representing an MQTT client. A valid client handle is available + * following a successful call to MQTTClient_create(). + */ +typedef void* MQTTClient; +/** + * A value representing an MQTT message. A delivery token is returned to the + * client application when a message is published. The token can then be used to + * check that the message was successfully delivered to its destination (see + * MQTTClient_publish(), + * MQTTClient_publishMessage(), + * MQTTClient_deliveryComplete(), + * MQTTClient_waitForCompletion() and + * MQTTClient_getPendingDeliveryTokens()). + */ +typedef int MQTTClient_deliveryToken; +typedef int MQTTClient_token; + +/** + * A structure representing the payload and attributes of an MQTT message. The + * message topic is not part of this structure (see MQTTClient_publishMessage(), + * MQTTClient_publish(), MQTTClient_receive(), MQTTClient_freeMessage() + * and MQTTClient_messageArrived()). + */ +typedef struct +{ + /** The eyecatcher for this structure. must be MQTM. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 or 1 + * 0 indicates no message properties */ + int struct_version; + /** The length of the MQTT message payload in bytes. */ + int payloadlen; + /** A pointer to the payload of the MQTT message. */ + void* payload; + /** + * The quality of service (QoS) assigned to the message. + * There are three levels of QoS: + *
+ *
QoS0
+ *
Fire and forget - the message may not be delivered
+ *
QoS1
+ *
At least once - the message will be delivered, but may be + * delivered more than once in some circumstances.
+ *
QoS2
+ *
Once and one only - the message will be delivered exactly once.
+ *
+ */ + int qos; + /** + * The retained flag serves two purposes depending on whether the message + * it is associated with is being published or received. + * + * retained = true
+ * For messages being published, a true setting indicates that the MQTT + * server should retain a copy of the message. The message will then be + * transmitted to new subscribers to a topic that matches the message topic. + * For subscribers registering a new subscription, the flag being true + * indicates that the received message is not a new one, but one that has + * been retained by the MQTT server. + * + * retained = false
+ * For publishers, this indicates that this message should not be retained + * by the MQTT server. For subscribers, a false setting indicates this is + * a normal message, received as a result of it being published to the + * server. + */ + int retained; + /** + * The dup flag indicates whether or not this message is a duplicate. + * It is only meaningful when receiving QoS1 messages. When true, the + * client application should take appropriate action to deal with the + * duplicate message. + */ + int dup; + /** The message identifier is normally reserved for internal use by the + * MQTT client and server. + */ + int msgid; + /** + * The MQTT V5 properties associated with the message. + */ + MQTTProperties properties; +} MQTTClient_message; + +#define MQTTClient_message_initializer { {'M', 'Q', 'T', 'M'}, 1, 0, NULL, 0, 0, 0, 0, MQTTProperties_initializer } + +/** + * This is a callback function. The client application + * must provide an implementation of this function to enable asynchronous + * receipt of messages. The function is registered with the client library by + * passing it as an argument to MQTTClient_setCallbacks(). It is + * called by the client library when a new message that matches a client + * subscription has been received from the server. This function is executed on + * a separate thread to the one on which the client application is running. + * @param context A pointer to the context value originally passed to + * MQTTClient_setCallbacks(), which contains any application-specific context. + * @param topicName The topic associated with the received message. + * @param topicLen The length of the topic if there are one + * more NULL characters embedded in topicName, otherwise topicLen + * is 0. If topicLen is 0, the value returned by strlen(topicName) + * can be trusted. If topicLen is greater than 0, the full topic name + * can be retrieved by accessing topicName as a byte array of length + * topicLen. + * @param message The MQTTClient_message structure for the received message. + * This structure contains the message payload and attributes. + * @return This function must return 0 or 1 indicating whether or not + * the message has been safely received by the client application.
+ * Returning 1 indicates that the message has been successfully handled. + * To free the message storage, ::MQTTClient_freeMessage must be called. + * To free the topic name storage, ::MQTTClient_free must be called.
+ * Returning 0 indicates that there was a problem. In this + * case, the client library will reinvoke MQTTClient_messageArrived() to + * attempt to deliver the message to the application again. + * Do not free the message and topic storage when returning 0, otherwise + * the redelivery will fail. + */ +typedef int MQTTClient_messageArrived(void* context, char* topicName, int topicLen, MQTTClient_message* message); + +/** + * This is a callback function. The client application + * must provide an implementation of this function to enable asynchronous + * notification of delivery of messages. The function is registered with the + * client library by passing it as an argument to MQTTClient_setCallbacks(). + * It is called by the client library after the client application has + * published a message to the server. It indicates that the necessary + * handshaking and acknowledgements for the requested quality of service (see + * MQTTClient_message.qos) have been completed. This function is executed on a + * separate thread to the one on which the client application is running. + * Note:MQTTClient_deliveryComplete() is not called when messages are + * published at QoS0. + * @param context A pointer to the context value originally passed to + * MQTTClient_setCallbacks(), which contains any application-specific context. + * @param dt The ::MQTTClient_deliveryToken associated with + * the published message. Applications can check that all messages have been + * correctly published by matching the delivery tokens returned from calls to + * MQTTClient_publish() and MQTTClient_publishMessage() with the tokens passed + * to this callback. + */ +typedef void MQTTClient_deliveryComplete(void* context, MQTTClient_deliveryToken dt); + +/** + * This is a callback function. The client application + * must provide an implementation of this function to enable asynchronous + * notification of the loss of connection to the server. The function is + * registered with the client library by passing it as an argument to + * MQTTClient_setCallbacks(). It is called by the client library if the client + * loses its connection to the server. The client application must take + * appropriate action, such as trying to reconnect or reporting the problem. + * This function is executed on a separate thread to the one on which the + * client application is running. + * @param context A pointer to the context value originally passed to + * MQTTClient_setCallbacks(), which contains any application-specific context. + * @param cause The reason for the disconnection. + * Currently, cause is always set to NULL. + */ +typedef void MQTTClient_connectionLost(void* context, char* cause); + +/** + * This function sets the callback functions for a specific client. + * If your client application doesn't use a particular callback, set the + * relevant parameter to NULL. Calling MQTTClient_setCallbacks() puts the + * client into multi-threaded mode. Any necessary message acknowledgements and + * status communications are handled in the background without any intervention + * from the client application. See @ref async for more information. + * + * Note: The MQTT client must be disconnected when this function is + * called. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param context A pointer to any application-specific context. The + * the context pointer is passed to each of the callback functions to + * provide access to the context information in the callback. + * @param cl A pointer to an MQTTClient_connectionLost() callback + * function. You can set this to NULL if your application doesn't handle + * disconnections. + * @param ma A pointer to an MQTTClient_messageArrived() callback + * function. This callback function must be set when you call + * MQTTClient_setCallbacks(), as otherwise there would be nowhere to deliver + * any incoming messages. + * @param dc A pointer to an MQTTClient_deliveryComplete() callback + * function. You can set this to NULL if your application publishes + * synchronously or if you do not want to check for successful delivery. + * @return ::MQTTCLIENT_SUCCESS if the callbacks were correctly set, + * ::MQTTCLIENT_FAILURE if an error occurred. + */ +LIBMQTT_API int MQTTClient_setCallbacks(MQTTClient handle, void* context, MQTTClient_connectionLost* cl, + MQTTClient_messageArrived* ma, MQTTClient_deliveryComplete* dc); + + +/** + * This is a callback function, which will be called when the a disconnect + * packet is received from the server. This applies to MQTT V5 and above only. + * @param context A pointer to the context value originally passed to + * ::MQTTClient_setDisconnected(), which contains any application-specific context. + * @param properties The MQTT V5 properties received with the disconnect, if any. + * @param reasonCode The MQTT V5 reason code received with the disconnect. + * Currently, cause is always set to NULL. + */ +typedef void MQTTClient_disconnected(void* context, MQTTProperties* properties, + enum MQTTReasonCodes reasonCode); + +/** + * Sets the MQTTClient_disconnected() callback function for a client. This will be called + * if a disconnect packet is received from the server. Only valid for MQTT V5 and above. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param context A pointer to any application-specific context. The + * the context pointer is passed to each of the callback functions to + * provide access to the context information in the callback. + * @param co A pointer to an MQTTClient_disconnected() callback + * function. NULL removes the callback setting. + * @return ::MQTTCLIENT_SUCCESS if the callbacks were correctly set, + * ::MQTTCLIENT_FAILURE if an error occurred. + */ +LIBMQTT_API int MQTTClient_setDisconnected(MQTTClient handle, void* context, MQTTClient_disconnected* co); + +/** + * This is a callback function, the MQTT V5 version of MQTTClient_deliveryComplete(). + * The client application + * must provide an implementation of this function to enable asynchronous + * notification of the completed delivery of messages. + * It is called by the client library after the client application has + * published a message to the server. It indicates that the necessary + * handshaking and acknowledgements for the requested quality of service (see + * MQTTClient_message.qos) have been completed. This function is executed on a + * separate thread to the one on which the client application is running. + * Note: It is not called when messages are published at QoS0. + * @param context A pointer to the context value originally passed to + * MQTTClient_setCallbacks(), which contains any application-specific context. + * @param dt The ::MQTTClient_deliveryToken associated with + * the published message. Applications can check that all messages have been + * correctly published by matching the delivery tokens returned from calls to + * MQTTClient_publish() and MQTTClient_publishMessage() with the tokens passed + * to this callback. + * @param packet_type the last received packet type for this completion. For QoS 1 + * always PUBACK. For QoS 2 could be PUBREC or PUBCOMP. + * @param properties the MQTT V5 properties returned with the last packet from the server + * @param reasonCode the reason code returned from the server + */ +typedef void MQTTClient_published(void* context, int dt, int packet_type, MQTTProperties* properties, + enum MQTTReasonCodes reasonCode); + +LIBMQTT_API int MQTTClient_setPublished(MQTTClient handle, void* context, MQTTClient_published* co); + +/** + * This function creates an MQTT client ready for connection to the + * specified server and using the specified persistent storage (see + * MQTTClient_persistence). See also MQTTClient_destroy(). + * @param handle A pointer to an ::MQTTClient handle. The handle is + * populated with a valid client reference following a successful return from + * this function. + * @param serverURI A null-terminated string specifying the server to + * which the client will connect. It takes the form protocol://host:port. + * Currently, protocol must be: + *
+ * @em tcp:// or @em mqtt:// - Insecure TCP + *
+ * @em ssl:// or @em mqtts:// - Encrypted SSL/TLS + *
+ * @em ws:// - Insecure websockets + *
+ * @em wss:// - Secure web sockets + *
+ * The TLS enabled prefixes (ssl, mqtts, wss) are only valid if a TLS + * version of the library is linked with. + * For host, you can specify either an IP address or a host name. For + * instance, to connect to a server running on the local machines with the + * default MQTT port, specify tcp://localhost:1883. + * @param clientId The client identifier passed to the server when the + * client connects to it. It is a null-terminated UTF-8 encoded string. + * @param persistence_type The type of persistence to be used by the client: + *
+ * ::MQTTCLIENT_PERSISTENCE_NONE: Use in-memory persistence. If the device or + * system on which the client is running fails or is switched off, the current + * state of any in-flight messages is lost and some messages may not be + * delivered even at QoS1 and QoS2. + *
+ * ::MQTTCLIENT_PERSISTENCE_DEFAULT: Use the default (file system-based) + * persistence mechanism. Status about in-flight messages is held in persistent + * storage and provides some protection against message loss in the case of + * unexpected failure. + *
+ * ::MQTTCLIENT_PERSISTENCE_USER: Use an application-specific persistence + * implementation. Using this type of persistence gives control of the + * persistence mechanism to the application. The application has to implement + * the MQTTClient_persistence interface. + * @param persistence_context If the application uses + * ::MQTTCLIENT_PERSISTENCE_NONE persistence, this argument is unused and should + * be set to NULL. For ::MQTTCLIENT_PERSISTENCE_DEFAULT persistence, it + * should be set to the location of the persistence directory (if set + * to NULL, the persistence directory used is the working directory). + * Applications that use ::MQTTCLIENT_PERSISTENCE_USER persistence set this + * argument to point to a valid MQTTClient_persistence structure. + * @return ::MQTTCLIENT_SUCCESS if the client is successfully created, otherwise + * an error code is returned. + */ +LIBMQTT_API int MQTTClient_create(MQTTClient* handle, const char* serverURI, const char* clientId, + int persistence_type, void* persistence_context); + +/** Options for the ::MQTTClient_createWithOptions call */ +typedef struct +{ + /** The eyecatcher for this structure. must be MQCO. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 */ + int struct_version; + /** Whether the MQTT version is 3.1, 3.1.1, or 5. To use V5, this must be set. + * MQTT V5 has to be chosen here, because during the create call the message persistence + * is initialized, and we want to know whether the format of any persisted messages + * is appropriate for the MQTT version we are going to connect with. Selecting 3.1 or + * 3.1.1 and attempting to read 5.0 persisted messages will result in an error on create. */ + int MQTTVersion; +} MQTTClient_createOptions; + +#define MQTTClient_createOptions_initializer { {'M', 'Q', 'C', 'O'}, 0, MQTTVERSION_DEFAULT } + +/** + * A version of :MQTTClient_create() with additional options. + * This function creates an MQTT client ready for connection to the + * specified server and using the specified persistent storage (see + * MQTTClient_persistence). See also MQTTClient_destroy(). + * @param handle A pointer to an ::MQTTClient handle. The handle is + * populated with a valid client reference following a successful return from + * this function. + * @param serverURI A null-terminated string specifying the server to + * which the client will connect. It takes the form protocol://host:port. + * Currently, protocol must be tcp or ssl. + * For host, you can + * specify either an IP address or a host name. For instance, to connect to + * a server running on the local machines with the default MQTT port, specify + * tcp://localhost:1883. + * @param clientId The client identifier passed to the server when the + * client connects to it. It is a null-terminated UTF-8 encoded string. + * @param persistence_type The type of persistence to be used by the client: + *
+ * ::MQTTCLIENT_PERSISTENCE_NONE: Use in-memory persistence. If the device or + * system on which the client is running fails or is switched off, the current + * state of any in-flight messages is lost and some messages may not be + * delivered even at QoS1 and QoS2. + *
+ * ::MQTTCLIENT_PERSISTENCE_DEFAULT: Use the default (file system-based) + * persistence mechanism. Status about in-flight messages is held in persistent + * storage and provides some protection against message loss in the case of + * unexpected failure. + *
+ * ::MQTTCLIENT_PERSISTENCE_USER: Use an application-specific persistence + * implementation. Using this type of persistence gives control of the + * persistence mechanism to the application. The application has to implement + * the MQTTClient_persistence interface. + * @param persistence_context If the application uses + * ::MQTTCLIENT_PERSISTENCE_NONE persistence, this argument is unused and should + * be set to NULL. For ::MQTTCLIENT_PERSISTENCE_DEFAULT persistence, it + * should be set to the location of the persistence directory (if set + * to NULL, the persistence directory used is the working directory). + * Applications that use ::MQTTCLIENT_PERSISTENCE_USER persistence set this + * argument to point to a valid MQTTClient_persistence structure. + * @param options additional options for the create. + * @return ::MQTTCLIENT_SUCCESS if the client is successfully created, otherwise + * an error code is returned. + */ +LIBMQTT_API int MQTTClient_createWithOptions(MQTTClient* handle, const char* serverURI, const char* clientId, + int persistence_type, void* persistence_context, MQTTClient_createOptions* options); + +/** + * MQTTClient_willOptions defines the MQTT "Last Will and Testament" (LWT) settings for + * the client. In the event that a client unexpectedly loses its connection to + * the server, the server publishes the LWT message to the LWT topic on + * behalf of the client. This allows other clients (subscribed to the LWT topic) + * to be made aware that the client has disconnected. To enable the LWT + * function for a specific client, a valid pointer to an MQTTClient_willOptions + * structure is passed in the MQTTClient_connectOptions structure used in the + * MQTTClient_connect() call that connects the client to the server. The pointer + * to MQTTClient_willOptions can be set to NULL if the LWT function is not + * required. + */ +typedef struct +{ + /** The eyecatcher for this structure. must be MQTW. */ + char struct_id[4]; + /** The version number of this structure. Must be 0 or 1 + 0 means there is no binary payload option + */ + int struct_version; + /** The LWT topic to which the LWT message will be published. */ + const char* topicName; + /** The LWT payload in string form. */ + const char* message; + /** + * The retained flag for the LWT message (see MQTTClient_message.retained). + */ + int retained; + /** + * The quality of service setting for the LWT message (see + * MQTTClient_message.qos and @ref qos). + */ + int qos; + /** The LWT payload in binary form. This is only checked and used if the message option is NULL */ + struct + { + int len; /**< binary payload length */ + const void* data; /**< binary payload data */ + } payload; +} MQTTClient_willOptions; + +#define MQTTClient_willOptions_initializer { {'M', 'Q', 'T', 'W'}, 1, NULL, NULL, 0, 0, {0, NULL} } + +#define MQTT_SSL_VERSION_DEFAULT 0 +#define MQTT_SSL_VERSION_TLS_1_0 1 +#define MQTT_SSL_VERSION_TLS_1_1 2 +#define MQTT_SSL_VERSION_TLS_1_2 3 + +/** +* MQTTClient_sslProperties defines the settings to establish an SSL/TLS connection using the +* OpenSSL library. It covers the following scenarios: +* - Server authentication: The client needs the digital certificate of the server. It is included +* in a store containting trusted material (also known as "trust store"). +* - Mutual authentication: Both client and server are authenticated during the SSL handshake. In +* addition to the digital certificate of the server in a trust store, the client will need its own +* digital certificate and the private key used to sign its digital certificate stored in a "key store". +* - Anonymous connection: Both client and server do not get authenticated and no credentials are needed +* to establish an SSL connection. Note that this scenario is not fully secure since it is subject to +* man-in-the-middle attacks. +*/ +typedef struct +{ + /** The eyecatcher for this structure. Must be MQTS */ + char struct_id[4]; + + /** The version number of this structure. Must be 0, 1, 2, 3, 4 or 5. + * 0 means no sslVersion + * 1 means no verify, CApath + * 2 means no ssl_error_context, ssl_error_cb + * 3 means no ssl_psk_cb, ssl_psk_context, disableDefaultTrustStore + * 4 means no protos, protos_len + */ + int struct_version; + + /** The file in PEM format containing the public digital certificates trusted by the client. */ + const char* trustStore; + + /** The file in PEM format containing the public certificate chain of the client. It may also include + * the client's private key. + */ + const char* keyStore; + + /** If not included in the sslKeyStore, this setting points to the file in PEM format containing + * the client's private key. + */ + const char* privateKey; + + /** The password to load the client's privateKey if encrypted. */ + const char* privateKeyPassword; + + /** + * The list of cipher suites that the client will present to the server during the SSL handshake. For a + * full explanation of the cipher list format, please see the OpenSSL on-line documentation: + * http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT + * If this setting is ommitted, its default value will be "ALL", that is, all the cipher suites -excluding + * those offering no encryption- will be considered. + * This setting can be used to set an SSL anonymous connection ("aNULL" string value, for instance). + */ + const char* enabledCipherSuites; + + /** True/False option to enable verification of the server certificate **/ + int enableServerCertAuth; + + /** The SSL/TLS version to use. Specify one of MQTT_SSL_VERSION_DEFAULT (0), + * MQTT_SSL_VERSION_TLS_1_0 (1), MQTT_SSL_VERSION_TLS_1_1 (2) or MQTT_SSL_VERSION_TLS_1_2 (3). + * Only used if struct_version is >= 1. + */ + int sslVersion; + + /** + * Whether to carry out post-connect checks, including that a certificate + * matches the given host name. + * Exists only if struct_version >= 2 + */ + int verify; + + /** + * From the OpenSSL documentation: + * If CApath is not NULL, it points to a directory containing CA certificates in PEM format. + * Exists only if struct_version >= 2 + */ + const char* CApath; + + /** + * Callback function for OpenSSL error handler ERR_print_errors_cb + * Exists only if struct_version >= 3 + */ + int (*ssl_error_cb) (const char *str, size_t len, void *u); + + /** + * Application-specific contex for OpenSSL error handler ERR_print_errors_cb + * Exists only if struct_version >= 3 + */ + void* ssl_error_context; + + /** + * Callback function for setting TLS-PSK options. Parameters correspond to that of + * SSL_CTX_set_psk_client_callback, except for u which is the pointer ssl_psk_context. + * Exists only if struct_version >= 4 + */ + unsigned int (*ssl_psk_cb) (const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len, void *u); + + /** + * Application-specific contex for ssl_psk_cb + * Exists only if struct_version >= 4 + */ + void* ssl_psk_context; + + /** + * Don't load default SSL CA. Should be used together with PSK to make sure + * regular servers with certificate in place is not accepted. + * Exists only if struct_version >= 4 + */ + int disableDefaultTrustStore; + + /** + * The protocol-lists must be in wire-format, which is defined as a vector of non-empty, 8-bit length-prefixed, byte strings. + * The length-prefix byte is not included in the length. Each string is limited to 255 bytes. A byte-string length of 0 is invalid. + * A truncated byte-string is invalid. + * Check documentation for SSL_CTX_set_alpn_protos + * Exists only if struct_version >= 5 + */ + const unsigned char *protos; + + /** + * The length of the vector protos vector + * Exists only if struct_version >= 5 + */ + unsigned int protos_len; +} MQTTClient_SSLOptions; + +#define MQTTClient_SSLOptions_initializer { {'M', 'Q', 'T', 'S'}, 5, NULL, NULL, NULL, NULL, NULL, 1, MQTT_SSL_VERSION_DEFAULT, 0, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0 } + +/** + * MQTTClient_libraryInfo is used to store details relating to the currently used + * library such as the version in use, the time it was built and relevant openSSL + * options. + * There is one static instance of this struct in MQTTClient.c + */ + +typedef struct +{ + const char* name; + const char* value; +} MQTTClient_nameValue; + +/** + * This function returns version information about the library. + * no trace information will be returned. + * @return an array of strings describing the library. The last entry is a NULL pointer. + */ +LIBMQTT_API MQTTClient_nameValue* MQTTClient_getVersionInfo(void); + +/** + * MQTTClient_connectOptions defines several settings that control the way the + * client connects to an MQTT server. + * + * Note: Default values are not defined for members of + * MQTTClient_connectOptions so it is good practice to specify all settings. + * If the MQTTClient_connectOptions structure is defined as an automatic + * variable, all members are set to random values and thus must be set by the + * client application. If the MQTTClient_connectOptions structure is defined + * as a static variable, initialization (in compliant compilers) sets all + * values to 0 (NULL for pointers). A #keepAliveInterval setting of 0 prevents + * correct operation of the client and so you must at least set a value + * for #keepAliveInterval. + * + * Suitable default values are set in the following initializers: + * - MQTTClient_connectOptions_initializer: for MQTT 3.1.1 non-WebSockets + * - MQTTClient_connectOptions_initializer5: for MQTT 5.0 non-WebSockets + * - MQTTClient_connectOptions_initializer_ws: for MQTT 3.1.1 WebSockets + * - MQTTClient_connectOptions_initializer5_ws: for MQTT 5.0 WebSockets + */ +typedef struct +{ + /** The eyecatcher for this structure. must be MQTC. */ + char struct_id[4]; + /** The version number of this structure. Must be 0, 1, 2, 3, 4, 5, 6, 7 or 8. + * 0 signifies no SSL options and no serverURIs + * 1 signifies no serverURIs + * 2 signifies no MQTTVersion + * 3 signifies no returned values + * 4 signifies no binary password option + * 5 signifies no maxInflightMessages and cleanstart + * 6 signifies no HTTP headers option + * 7 signifies no HTTP proxy and HTTPS proxy options + */ + int struct_version; + /** The "keep alive" interval, measured in seconds, defines the maximum time + * that should pass without communication between the client and the server + * The client will ensure that at least one message travels across the + * network within each keep alive period. In the absence of a data-related + * message during the time period, the client sends a very small MQTT + * "ping" message, which the server will acknowledge. The keep alive + * interval enables the client to detect when the server is no longer + * available without having to wait for the long TCP/IP timeout. + */ + int keepAliveInterval; + /** + * This is a boolean value. The cleansession setting controls the behaviour + * of both the client and the server at connection and disconnection time. + * The client and server both maintain session state information. This + * information is used to ensure "at least once" and "exactly once" + * delivery, and "exactly once" receipt of messages. Session state also + * includes subscriptions created by an MQTT client. You can choose to + * maintain or discard state information between sessions. + * + * When cleansession is true, the state information is discarded at + * connect and disconnect. Setting cleansession to false keeps the state + * information. When you connect an MQTT client application with + * MQTTClient_connect(), the client identifies the connection using the + * client identifier and the address of the server. The server checks + * whether session information for this client + * has been saved from a previous connection to the server. If a previous + * session still exists, and cleansession=true, then the previous session + * information at the client and server is cleared. If cleansession=false, + * the previous session is resumed. If no previous session exists, a new + * session is started. + */ + int cleansession; + /** + * This is a boolean value that controls how many messages can be in-flight + * simultaneously. Setting reliable to true means that a published + * message must be completed (acknowledgements received) before another + * can be sent. Attempts to publish additional messages receive an + * ::MQTTCLIENT_MAX_MESSAGES_INFLIGHT return code. Setting this flag to + * false allows up to 10 messages to be in-flight. This can increase + * overall throughput in some circumstances. + */ + int reliable; + /** + * This is a pointer to an MQTTClient_willOptions structure. If your + * application does not make use of the Last Will and Testament feature, + * set this pointer to NULL. + */ + MQTTClient_willOptions* will; + /** + * MQTT servers that support the MQTT v3.1.1 protocol provide authentication + * and authorisation by user name and password. This is the user name + * parameter. + */ + const char* username; + /** + * MQTT servers that support the MQTT v3.1.1 protocol provide authentication + * and authorisation by user name and password. This is the password + * parameter. + */ + const char* password; + /** + * The time interval in seconds to allow a connect to complete. + */ + int connectTimeout; + /** + * The time interval in seconds after which unacknowledged publish requests are + * retried during a TCP session. With MQTT 3.1.1 and later, retries are + * not required except on reconnect. 0 turns off in-session retries, and is the + * recommended setting. Adding retries to an already overloaded network only + * exacerbates the problem. + */ + int retryInterval; + /** + * This is a pointer to an MQTTClient_SSLOptions structure. If your + * application does not make use of SSL, set this pointer to NULL. + */ + MQTTClient_SSLOptions* ssl; + /** + * The number of entries in the optional serverURIs array. Defaults to 0. + */ + int serverURIcount; + /** + * An optional array of null-terminated strings specifying the servers to + * which the client will connect. Each string takes the form protocol://host:port. + * protocol must be tcp, ssl, ws or wss. + * The TLS enabled prefixes (ssl, wss) are only valid if a TLS version of the library + * is linked with. + * For host, you can + * specify either an IP address or a host name. For instance, to connect to + * a server running on the local machines with the default MQTT port, specify + * tcp://localhost:1883. + * If this list is empty (the default), the server URI specified on MQTTClient_create() + * is used. + */ + char* const* serverURIs; + /** + * Sets the version of MQTT to be used on the connect. + * MQTTVERSION_DEFAULT (0) = default: start with 3.1.1, and if that fails, fall back to 3.1 + * MQTTVERSION_3_1 (3) = only try version 3.1 + * MQTTVERSION_3_1_1 (4) = only try version 3.1.1 + * MQTTVERSION_5 (5) = only try version 5.0 + */ + int MQTTVersion; + /** + * Returned from the connect when the MQTT version used to connect is 3.1.1 + */ + struct + { + const char* serverURI; /**< the serverURI connected to */ + int MQTTVersion; /**< the MQTT version used to connect with */ + int sessionPresent; /**< if the MQTT version is 3.1.1, the value of sessionPresent returned in the connack */ + } returned; + /** + * Optional binary password. Only checked and used if the password option is NULL + */ + struct + { + int len; /**< binary password length */ + const void* data; /**< binary password data */ + } binarypwd; + /** + * The maximum number of messages in flight + */ + int maxInflightMessages; + /* + * MQTT V5 clean start flag. Only clears state at the beginning of the session. + */ + int cleanstart; + /** + * HTTP headers for websockets + */ + const MQTTClient_nameValue* httpHeaders; + /** + * HTTP proxy + */ + const char* httpProxy; + /** + * HTTPS proxy + */ + const char* httpsProxy; +} MQTTClient_connectOptions; + +/** Initializer for connect options for MQTT 3.1.1 non-WebSocket connections */ +#define MQTTClient_connectOptions_initializer { {'M', 'Q', 'T', 'C'}, 8, 60, 1, 1, NULL, NULL, NULL, 30, 0, NULL,\ +0, NULL, MQTTVERSION_DEFAULT, {NULL, 0, 0}, {0, NULL}, -1, 0, NULL, NULL, NULL} + +/** Initializer for connect options for MQTT 5.0 non-WebSocket connections */ +#define MQTTClient_connectOptions_initializer5 { {'M', 'Q', 'T', 'C'}, 8, 60, 0, 1, NULL, NULL, NULL, 30, 0, NULL,\ +0, NULL, MQTTVERSION_5, {NULL, 0, 0}, {0, NULL}, -1, 1, NULL, NULL, NULL} + +/** Initializer for connect options for MQTT 3.1.1 WebSockets connections. + * The keepalive interval is set to 45 seconds to avoid webserver 60 second inactivity timeouts. + */ +#define MQTTClient_connectOptions_initializer_ws { {'M', 'Q', 'T', 'C'}, 8, 45, 1, 1, NULL, NULL, NULL, 30, 0, NULL,\ +0, NULL, MQTTVERSION_DEFAULT, {NULL, 0, 0}, {0, NULL}, -1, 0, NULL, NULL, NULL} + +/** Initializer for connect options for MQTT 5.0 WebSockets connections. + * The keepalive interval is set to 45 seconds to avoid webserver 60 second inactivity timeouts. + */ +#define MQTTClient_connectOptions_initializer5_ws { {'M', 'Q', 'T', 'C'}, 8, 45, 0, 1, NULL, NULL, NULL, 30, 0, NULL,\ +0, NULL, MQTTVERSION_5, {NULL, 0, 0}, {0, NULL}, -1, 1, NULL, NULL, NULL} + +/** + * This function attempts to connect a previously-created client (see + * MQTTClient_create()) to an MQTT server using the specified options. If you + * want to enable asynchronous message and status notifications, you must call + * MQTTClient_setCallbacks() prior to MQTTClient_connect(). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param options A pointer to a valid MQTTClient_connectOptions + * structure. + * @return ::MQTTCLIENT_SUCCESS if the client successfully connects to the + * server. An error code is returned if the client was unable to connect to + * the server. + * Error codes greater than 0 are returned by the MQTT protocol:

+ * 1: Connection refused: Unacceptable protocol version
+ * 2: Connection refused: Identifier rejected
+ * 3: Connection refused: Server unavailable
+ * 4: Connection refused: Bad user name or password
+ * 5: Connection refused: Not authorized
+ * 6-255: Reserved for future use
+ */ +LIBMQTT_API int MQTTClient_connect(MQTTClient handle, MQTTClient_connectOptions* options); + +/** MQTT version 5.0 response information */ +typedef struct MQTTResponse +{ + int version; /* the version number of this structure */ + enum MQTTReasonCodes reasonCode; /* the MQTT 5.0 reason code returned */ + int reasonCodeCount; /* the number of reason codes. Used for subscribeMany5 and unsubscribeMany5 */ + enum MQTTReasonCodes* reasonCodes; /* a list of reason codes. Used for subscribeMany5 and unsubscribeMany5 */ + MQTTProperties* properties; /* optionally, the MQTT 5.0 properties returned */ +} MQTTResponse; + +#define MQTTResponse_initializer {1, MQTTREASONCODE_SUCCESS, 0, NULL, NULL} + +/** + * Frees the storage associated with the MQTT response. + * @param response the response structure to be freed + */ +LIBMQTT_API void MQTTResponse_free(MQTTResponse response); + +/** + * Attempts to connect a previously-created client (see + * MQTTClient_create()) to an MQTT server using MQTT version 5.0 and the specified options. If you + * want to enable asynchronous message and status notifications, you must call + * MQTTClient_setCallbacks() prior to MQTTClient_connect(). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param options A pointer to a valid MQTTClient_connectOptions + * structure. + * @param connectProperties the MQTT 5.0 connect properties to use + * @param willProperties the MQTT 5.0 properties to set on the will message + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_connect5(MQTTClient handle, MQTTClient_connectOptions* options, + MQTTProperties* connectProperties, MQTTProperties* willProperties); + +/** + * This function attempts to disconnect the client from the MQTT + * server. In order to allow the client time to complete handling of messages + * that are in-flight when this function is called, a timeout period is + * specified. When the timeout period has expired, the client disconnects even + * if there are still outstanding message acknowledgements. + * The next time the client connects to the same server, any QoS 1 or 2 + * messages which have not completed will be retried depending on the + * cleansession settings for both the previous and the new connection (see + * MQTTClient_connectOptions.cleansession and MQTTClient_connect()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param timeout The client delays disconnection for up to this time (in + * milliseconds) in order to allow in-flight message transfers to complete. + * @return ::MQTTCLIENT_SUCCESS if the client successfully disconnects from + * the server. An error code is returned if the client was unable to disconnect + * from the server + */ +LIBMQTT_API int MQTTClient_disconnect(MQTTClient handle, int timeout); + +LIBMQTT_API int MQTTClient_disconnect5(MQTTClient handle, int timeout, enum MQTTReasonCodes reason, MQTTProperties* props); + +/** + * This function allows the client application to test whether or not a + * client is currently connected to the MQTT server. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @return Boolean true if the client is connected, otherwise false. + */ +LIBMQTT_API int MQTTClient_isConnected(MQTTClient handle); + + +/* Subscribe is synchronous. QoS list parameter is changed on return to granted QoSs. + Returns return code, MQTTCLIENT_SUCCESS == success, non-zero some sort of error (TBD) */ + +/** + * This function attempts to subscribe a client to a single topic, which may + * contain wildcards (see @ref wildcard). This call also specifies the + * @ref qos requested for the subscription + * (see also MQTTClient_subscribeMany()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topic The subscription topic, which may include wildcards. + * @param qos The requested quality of service for the subscription. + * @return ::MQTTCLIENT_SUCCESS if the subscription request is successful. + * An error code is returned if there was a problem registering the + * subscription. + */ +LIBMQTT_API int MQTTClient_subscribe(MQTTClient handle, const char* topic, int qos); + +/** + * This function attempts to subscribe an MQTT version 5.0 client to a single topic, which may + * contain wildcards (see @ref wildcard). This call also specifies the + * @ref qos requested for the subscription + * (see also MQTTClient_subscribeMany()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topic The subscription topic, which may include wildcards. + * @param qos The requested quality of service for the subscription. + * @param opts the MQTT 5.0 subscribe options to be used + * @param props the MQTT 5.0 properties to be used + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_subscribe5(MQTTClient handle, const char* topic, int qos, + MQTTSubscribe_options* opts, MQTTProperties* props); + +/** + * This function attempts to subscribe a client to a list of topics, which may + * contain wildcards (see @ref wildcard). This call also specifies the + * @ref qos requested for each topic (see also MQTTClient_subscribe()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param count The number of topics for which the client is requesting + * subscriptions. + * @param topic An array (of length count) of pointers to + * topics, each of which may include wildcards. + * @param qos An array (of length count) of @ref qos + * values. qos[n] is the requested QoS for topic[n]. + * @return ::MQTTCLIENT_SUCCESS if the subscription request is successful. + * An error code is returned if there was a problem registering the + * subscriptions. + */ +LIBMQTT_API int MQTTClient_subscribeMany(MQTTClient handle, int count, char* const* topic, int* qos); + +/** + * This function attempts to subscribe an MQTT version 5.0 client to a list of topics, which may + * contain wildcards (see @ref wildcard). This call also specifies the + * @ref qos requested for each topic (see also MQTTClient_subscribe()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param count The number of topics for which the client is requesting + * subscriptions. + * @param topic An array (of length count) of pointers to + * topics, each of which may include wildcards. + * @param qos An array (of length count) of @ref qos + * values. qos[n] is the requested QoS for topic[n]. + * @param opts the MQTT 5.0 subscribe options to be used + * @param props the MQTT 5.0 properties to be used + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_subscribeMany5(MQTTClient handle, int count, char* const* topic, + int* qos, MQTTSubscribe_options* opts, MQTTProperties* props); + +/** + * This function attempts to remove an existing subscription made by the + * specified client. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topic The topic for the subscription to be removed, which may + * include wildcards (see @ref wildcard). + * @return ::MQTTCLIENT_SUCCESS if the subscription is removed. + * An error code is returned if there was a problem removing the + * subscription. + */ +LIBMQTT_API int MQTTClient_unsubscribe(MQTTClient handle, const char* topic); + +/** + * This function attempts to remove an existing subscription made by the + * specified client using MQTT 5.0. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topic The topic for the subscription to be removed, which may + * include wildcards (see @ref wildcard). + * @param props the MQTT 5.0 properties to be used + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_unsubscribe5(MQTTClient handle, const char* topic, MQTTProperties* props); + +/** + * This function attempts to remove existing subscriptions to a list of topics + * made by the specified client. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param count The number subscriptions to be removed. + * @param topic An array (of length count) of pointers to the topics of + * the subscriptions to be removed, each of which may include wildcards. + * @return ::MQTTCLIENT_SUCCESS if the subscriptions are removed. + * An error code is returned if there was a problem removing the subscriptions. + */ +LIBMQTT_API int MQTTClient_unsubscribeMany(MQTTClient handle, int count, char* const* topic); + +/** + * This function attempts to remove existing subscriptions to a list of topics + * made by the specified client using MQTT version 5.0. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param count The number subscriptions to be removed. + * @param topic An array (of length count) of pointers to the topics of + * the subscriptions to be removed, each of which may include wildcards. + * @param props the MQTT 5.0 properties to be used + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_unsubscribeMany5(MQTTClient handle, int count, char* const* topic, MQTTProperties* props); + +/** + * This function attempts to publish a message to a given topic (see also + * MQTTClient_publishMessage()). An ::MQTTClient_deliveryToken is issued when + * this function returns successfully. If the client application needs to + * test for succesful delivery of QoS1 and QoS2 messages, this can be done + * either asynchronously or synchronously (see @ref async, + * ::MQTTClient_waitForCompletion and MQTTClient_deliveryComplete()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topicName The topic associated with this message. + * @param payloadlen The length of the payload in bytes. + * @param payload A pointer to the byte array payload of the message. + * @param qos The @ref qos of the message. + * @param retained The retained flag for the message. + * @param dt A pointer to an ::MQTTClient_deliveryToken. This is populated + * with a token representing the message when the function returns + * successfully. If your application does not use delivery tokens, set this + * argument to NULL. + * @return ::MQTTCLIENT_SUCCESS if the message is accepted for publication. + * An error code is returned if there was a problem accepting the message. + */ +LIBMQTT_API int MQTTClient_publish(MQTTClient handle, const char* topicName, int payloadlen, const void* payload, int qos, int retained, + MQTTClient_deliveryToken* dt); + +/** + * Attempts to publish a message to a given topic using MQTT version 5.0 (see also + * MQTTClient_publishMessage5()). An ::MQTTClient_deliveryToken is issued when + * this function returns successfully. If the client application needs to + * test for succesful delivery of QoS1 and QoS2 messages, this can be done + * either asynchronously or synchronously (see @ref async, + * ::MQTTClient_waitForCompletion and MQTTClient_deliveryComplete()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topicName The topic associated with this message. + * @param payloadlen The length of the payload in bytes. + * @param payload A pointer to the byte array payload of the message. + * @param qos The @ref qos of the message. + * @param retained The retained flag for the message. + * @param properties the MQTT 5.0 properties to be used + * @param dt A pointer to an ::MQTTClient_deliveryToken. This is populated + * with a token representing the message when the function returns + * successfully. If your application does not use delivery tokens, set this + * argument to NULL. + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_publish5(MQTTClient handle, const char* topicName, int payloadlen, const void* payload, + int qos, int retained, MQTTProperties* properties, MQTTClient_deliveryToken* dt); +/** + * This function attempts to publish a message to a given topic (see also + * MQTTClient_publish()). An ::MQTTClient_deliveryToken is issued when + * this function returns successfully. If the client application needs to + * test for succesful delivery of QoS1 and QoS2 messages, this can be done + * either asynchronously or synchronously (see @ref async, + * ::MQTTClient_waitForCompletion and MQTTClient_deliveryComplete()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topicName The topic associated with this message. + * @param msg A pointer to a valid MQTTClient_message structure containing + * the payload and attributes of the message to be published. + * @param dt A pointer to an ::MQTTClient_deliveryToken. This is populated + * with a token representing the message when the function returns + * successfully. If your application does not use delivery tokens, set this + * argument to NULL. + * @return ::MQTTCLIENT_SUCCESS if the message is accepted for publication. + * An error code is returned if there was a problem accepting the message. + */ +LIBMQTT_API int MQTTClient_publishMessage(MQTTClient handle, const char* topicName, MQTTClient_message* msg, MQTTClient_deliveryToken* dt); + + +/** + * Attempts to publish a message to the given topic using MQTT version 5.0 + * (see also + * MQTTClient_publish5()). An ::MQTTClient_deliveryToken is issued when + * this function returns successfully. If the client application needs to + * test for succesful delivery of QoS1 and QoS2 messages, this can be done + * either asynchronously or synchronously (see @ref async, + * ::MQTTClient_waitForCompletion and MQTTClient_deliveryComplete()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topicName The topic associated with this message. + * @param msg A pointer to a valid MQTTClient_message structure containing + * the payload and attributes of the message to be published. + * @param dt A pointer to an ::MQTTClient_deliveryToken. This is populated + * with a token representing the message when the function returns + * successfully. If your application does not use delivery tokens, set this + * argument to NULL. + * @return the MQTT 5.0 response information: error codes and properties. + */ +LIBMQTT_API MQTTResponse MQTTClient_publishMessage5(MQTTClient handle, const char* topicName, MQTTClient_message* msg, + MQTTClient_deliveryToken* dt); + +/** + * This function is called by the client application to synchronize execution + * of the main thread with completed publication of a message. When called, + * MQTTClient_waitForCompletion() blocks execution until the message has been + * successful delivered or the specified timeout has expired. See @ref async. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param dt The ::MQTTClient_deliveryToken that represents the message being + * tested for successful delivery. Delivery tokens are issued by the + * publishing functions MQTTClient_publish() and MQTTClient_publishMessage(). + * @param timeout The maximum time to wait in milliseconds. + * @return ::MQTTCLIENT_SUCCESS if the message was successfully delivered. + * An error code is returned if the timeout expires or there was a problem + * checking the token. + */ +LIBMQTT_API int MQTTClient_waitForCompletion(MQTTClient handle, MQTTClient_deliveryToken dt, unsigned long timeout); + + +/** + * This function sets a pointer to an array of delivery tokens for + * messages that are currently in-flight (pending completion). + * + * Important note: The memory used to hold the array of tokens is + * malloc()'d in this function. The client application is responsible for + * freeing this memory when it is no longer required. + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param tokens The address of a pointer to an ::MQTTClient_deliveryToken. + * When the function returns successfully, the pointer is set to point to an + * array of tokens representing messages pending completion. The last member of + * the array is set to -1 to indicate there are no more tokens. If no tokens + * are pending, the pointer is set to NULL. + * @return ::MQTTCLIENT_SUCCESS if the function returns successfully. + * An error code is returned if there was a problem obtaining the list of + * pending tokens. + */ +LIBMQTT_API int MQTTClient_getPendingDeliveryTokens(MQTTClient handle, MQTTClient_deliveryToken **tokens); + +/** + * When implementing a single-threaded client, call this function periodically + * to allow processing of message retries and to send MQTT keepalive pings. + * If the application is calling MQTTClient_receive() regularly, then it is + * not necessary to call this function. + */ +LIBMQTT_API void MQTTClient_yield(void); + +/** + * This function performs a synchronous receive of incoming messages. It should + * be used only when the client application has not set callback methods to + * support asynchronous receipt of messages (see @ref async and + * MQTTClient_setCallbacks()). Using this function allows a single-threaded + * client subscriber application to be written. When called, this function + * blocks until the next message arrives or the specified timeout expires + *(see also MQTTClient_yield()). + * + * Important note: The application must free() the memory allocated + * to the topic and the message when processing is complete (see + * MQTTClient_freeMessage()). + * @param handle A valid client handle from a successful call to + * MQTTClient_create(). + * @param topicName The address of a pointer to a topic. This function + * allocates the memory for the topic and returns it to the application + * by setting topicName to point to the topic. + * @param topicLen The length of the topic. If the return code from this + * function is ::MQTTCLIENT_TOPICNAME_TRUNCATED, the topic contains embedded + * NULL characters and the full topic should be retrieved by using + * topicLen. + * @param message The address of a pointer to the received message. This + * function allocates the memory for the message and returns it to the + * application by setting message to point to the received message. + * The pointer is set to NULL if the timeout expires. + * @param timeout The length of time to wait for a message in milliseconds. + * @return ::MQTTCLIENT_SUCCESS or ::MQTTCLIENT_TOPICNAME_TRUNCATED if a + * message is received. ::MQTTCLIENT_SUCCESS can also indicate that the + * timeout expired, in which case message is NULL. An error code is + * returned if there was a problem trying to receive a message. + */ +LIBMQTT_API int MQTTClient_receive(MQTTClient handle, char** topicName, int* topicLen, MQTTClient_message** message, + unsigned long timeout); + +/** + * This function frees memory allocated to an MQTT message, including the + * additional memory allocated to the message payload. The client application + * calls this function when the message has been fully processed. Important + * note: This function does not free the memory allocated to a message + * topic string. It is the responsibility of the client application to free + * this memory using the MQTTClient_free() library function. + * @param msg The address of a pointer to the ::MQTTClient_message structure + * to be freed. + */ +LIBMQTT_API void MQTTClient_freeMessage(MQTTClient_message** msg); + +/** + * This function frees memory allocated by the MQTT C client library, especially the + * topic name. This is needed on Windows when the client libary and application + * program have been compiled with different versions of the C compiler. It is + * thus good policy to always use this function when freeing any MQTT C client- + * allocated memory. + * @param ptr The pointer to the client library storage to be freed. + */ +LIBMQTT_API void MQTTClient_free(void* ptr); + +/** + * This function is used to allocate memory to be used or freed by the MQTT C client library, + * especially the data in user persistence. This is needed on Windows when the client library + * and application program have been compiled with different versions of the C compiler. + * @param size The size of the memory to be allocated. + */ +LIBMQTT_API void* MQTTClient_malloc(size_t size); + +/** + * This function frees the memory allocated to an MQTT client (see + * MQTTClient_create()). It should be called when the client is no longer + * required. + * @param handle A pointer to the handle referring to the ::MQTTClient + * structure to be freed. + */ +LIBMQTT_API void MQTTClient_destroy(MQTTClient* handle); + + +enum MQTTCLIENT_TRACE_LEVELS +{ + MQTTCLIENT_TRACE_MAXIMUM = 1, + MQTTCLIENT_TRACE_MEDIUM, + MQTTCLIENT_TRACE_MINIMUM, + MQTTCLIENT_TRACE_PROTOCOL, + MQTTCLIENT_TRACE_ERROR, + MQTTCLIENT_TRACE_SEVERE, + MQTTCLIENT_TRACE_FATAL, +}; + + +/** + * This function sets the level of trace information which will be + * returned in the trace callback. + * @param level the trace level required + */ +LIBMQTT_API void MQTTClient_setTraceLevel(enum MQTTCLIENT_TRACE_LEVELS level); + + +/** + * This is a callback function prototype which must be implemented if you want + * to receive trace information. Do not invoke any other Paho API calls in this + * callback function - unpredictable behavior may result. + * @param level the trace level of the message returned + * @param message the trace message. This is a pointer to a static buffer which + * will be overwritten on each call. You must copy the data if you want to keep + * it for later. + */ +typedef void MQTTClient_traceCallback(enum MQTTCLIENT_TRACE_LEVELS level, char* message); + +/** + * This function sets the trace callback if needed. If set to NULL, + * no trace information will be returned. The default trace level is + * MQTTASYNC_TRACE_MINIMUM. + * @param callback a pointer to the function which will handle the trace information + */ +LIBMQTT_API void MQTTClient_setTraceCallback(MQTTClient_traceCallback* callback); + +/** + * Sets the timeout value for un/subscribe commands when waiting for the un/suback response from + * the server. Values less than 5000 are not allowed. + * @param handle A valid client handle from a successful call to MQTTClient_create(). + * @param milliSeconds the maximum number of milliseconds to wait + * @return MQTTCLIENT_SUCCESS or MQTTCLIENT_FAILURE + */ +LIBMQTT_API int MQTTClient_setCommandTimeout(MQTTClient handle, unsigned long milliSeconds); + +/** + * Returns a pointer to the string representation of the error or NULL. + * + * Do not free after use. Returns NULL if the error code is unknown. + */ +LIBMQTT_API const char* MQTTClient_strerror(int code); + +#if defined(__cplusplus) + } +#endif + +#endif + +/*! + * @cond MQTTClient_main + * @page async Asynchronous vs synchronous client applications + * This client library supports two modes of operation. These are referred to + * as synchronous and asynchronous modes. If your application + * calls MQTTClient_setCallbacks(), this puts the client into asynchronous + * mode, otherwise it operates in synchronous mode. + * + * In synchronous mode, the client application runs on a single thread. + * Messages are published using the MQTTClient_publish() and + * MQTTClient_publishMessage() functions. To determine that a QoS1 or QoS2 + * (see @ref qos) message has been successfully delivered, the application + * must call the MQTTClient_waitForCompletion() function. An example showing + * synchronous publication is shown in @ref pubsync. Receiving messages in + * synchronous mode uses the MQTTClient_receive() function. Client applications + * must call either MQTTClient_receive() or MQTTClient_yield() relatively + * frequently in order to allow processing of acknowledgements and the MQTT + * "pings" that keep the network connection to the server alive. + * + * In asynchronous mode, the client application runs on several threads. The + * main program calls functions in the client library to publish and subscribe, + * just as for the synchronous mode. Processing of handshaking and maintaining + * the network connection is performed in the background, however. + * Notifications of status and message reception are provided to the client + * application using callbacks registered with the library by the call to + * MQTTClient_setCallbacks() (see MQTTClient_messageArrived(), + * MQTTClient_connectionLost() and MQTTClient_deliveryComplete()). + * This API is not thread safe however - it is not possible to call it from multiple + * threads without synchronization. You can use the MQTTAsync API for that. + * + * @page callbacks Callbacks + * You must not call a function from this API from within a callback otherwise + * a deadlock might result. The only exception to this is the ability to call + * connect within the connection lost callback, to allow a reconnect. + * + * When using MQTT 5.0, you can also call connect from within the disconnected + * callback, which is invoked when the MQTT server sends a disconnect packet. + * This server behaviour is allowed in MQTT 5.0, but not in MQTT 3.1.1, so the + * disconnected callback will never be invoked if you use MQTT 3.1.1. + * + * In particular, you must make a publish call within the message arrived callback. + * These restrictions are all lifted in the + * MQTTAsync API. + * + * If no callbacks are assigned, this will include the message arrived callback. + * This could be done if the application is a pure publisher, and does + * not subscribe to any topics. If however messages are received, and no message + * arrived callback is set, or receive not called, then those messages will accumulate + * and take up memory, as there is no place for them to be delivered. + * It is up to the application to protect against this situation. + * + * @page wildcard Subscription wildcards + * Every MQTT message includes a topic that classifies it. MQTT servers use + * topics to determine which subscribers should receive messages published to + * the server. + * + * Consider the server receiving messages from several environmental sensors. + * Each sensor publishes its measurement data as a message with an associated + * topic. Subscribing applications need to know which sensor originally + * published each received message. A unique topic is thus used to identify + * each sensor and measurement type. Topics such as SENSOR1TEMP, + * SENSOR1HUMIDITY, SENSOR2TEMP and so on achieve this but are not very + * flexible. If additional sensors are added to the system at a later date, + * subscribing applications must be modified to receive them. + * + * To provide more flexibility, MQTT supports a hierarchical topic namespace. + * This allows application designers to organize topics to simplify their + * management. Levels in the hierarchy are delimited by the '/' character, + * such as SENSOR/1/HUMIDITY. Publishers and subscribers use these + * hierarchical topics as already described. + * + * For subscriptions, two wildcard characters are supported: + *
    + *
  • A '#' character represents a complete sub-tree of the hierarchy and + * thus must be the last character in a subscription topic string, such as + * SENSOR/#. This will match any topic starting with SENSOR/, such as + * SENSOR/1/TEMP and SENSOR/2/HUMIDITY.
  • + *
  • A '+' character represents a single level of the hierarchy and is + * used between delimiters. For example, SENSOR/+/TEMP will match + * SENSOR/1/TEMP and SENSOR/2/TEMP.
  • + *
+ * Publishers are not allowed to use the wildcard characters in their topic + * names. + * + * Deciding on your topic hierarchy is an important step in your system design. + * + * @page qos Quality of service + * The MQTT protocol provides three qualities of service for delivering + * messages between clients and servers: "at most once", "at least once" and + * "exactly once". + * + * Quality of service (QoS) is an attribute of an individual message being + * published. An application sets the QoS for a specific message by setting the + * MQTTClient_message.qos field to the required value. + * + * A subscribing client can set the maximum quality of service a server uses + * to send messages that match the client subscriptions. The + * MQTTClient_subscribe() and MQTTClient_subscribeMany() functions set this + * maximum. The QoS of a message forwarded to a subscriber thus might be + * different to the QoS given to the message by the original publisher. + * The lower of the two values is used to forward a message. + * + * The three levels are: + * + * QoS0, At most once: The message is delivered at most once, or it + * may not be delivered at all. Its delivery across the network is not + * acknowledged. The message is not stored. The message could be lost if the + * client is disconnected, or if the server fails. QoS0 is the fastest mode of + * transfer. It is sometimes called "fire and forget". + * + * The MQTT protocol does not require servers to forward publications at QoS0 + * to a client. If the client is disconnected at the time the server receives + * the publication, the publication might be discarded, depending on the + * server implementation. + * + * QoS1, At least once: The message is always delivered at least once. + * It might be delivered multiple times if there is a failure before an + * acknowledgment is received by the sender. The message must be stored + * locally at the sender, until the sender receives confirmation that the + * message has been published by the receiver. The message is stored in case + * the message must be sent again. + * + * QoS2, Exactly once: The message is always delivered exactly once. + * The message must be stored locally at the sender, until the sender receives + * confirmation that the message has been published by the receiver. The + * message is stored in case the message must be sent again. QoS2 is the + * safest, but slowest mode of transfer. A more sophisticated handshaking + * and acknowledgement sequence is used than for QoS1 to ensure no duplication + * of messages occurs. + * @page pubsync Synchronous publication example +@code +#include +#include +#include +#include "MQTTClient.h" + +#define ADDRESS "tcp://mqtt.eclipseprojects.io:1883" +#define CLIENTID "ExampleClientPub" +#define TOPIC "MQTT Examples" +#define PAYLOAD "Hello World!" +#define QOS 1 +#define TIMEOUT 10000L + +int main(int argc, char* argv[]) +{ + MQTTClient client; + MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; + MQTTClient_message pubmsg = MQTTClient_message_initializer; + MQTTClient_deliveryToken token; + int rc; + + if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID, + MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to create client, return code %d\n", rc); + exit(EXIT_FAILURE); + } + + conn_opts.keepAliveInterval = 20; + conn_opts.cleansession = 1; + if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to connect, return code %d\n", rc); + exit(EXIT_FAILURE); + } + + pubmsg.payload = PAYLOAD; + pubmsg.payloadlen = (int)strlen(PAYLOAD); + pubmsg.qos = QOS; + pubmsg.retained = 0; + if ((rc = MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to publish message, return code %d\n", rc); + exit(EXIT_FAILURE); + } + + printf("Waiting for up to %d seconds for publication of %s\n" + "on topic %s for client with ClientID: %s\n", + (int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID); + rc = MQTTClient_waitForCompletion(client, token, TIMEOUT); + printf("Message with delivery token %d delivered\n", token); + + if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS) + printf("Failed to disconnect, return code %d\n", rc); + MQTTClient_destroy(&client); + return rc; +} + + * @endcode + * + * @page pubasync Asynchronous publication example +@code{.c} +#include +#include +#include +#include "MQTTClient.h" + +#if !defined(_WIN32) +#include +#else +#include +#endif + +#define ADDRESS "tcp://mqtt.eclipseprojects.io:1883" +#define CLIENTID "ExampleClientPub" +#define TOPIC "MQTT Examples" +#define PAYLOAD "Hello World!" +#define QOS 1 +#define TIMEOUT 10000L + +MQTTClient_deliveryToken deliveredtoken; + +void delivered(void *context, MQTTClient_deliveryToken dt) +{ + printf("Message with token value %d delivery confirmed\n", dt); + deliveredtoken = dt; +} + +int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) +{ + printf("Message arrived\n"); + printf(" topic: %s\n", topicName); + printf(" message: %.*s\n", message->payloadlen, (char*)message->payload); + MQTTClient_freeMessage(&message); + MQTTClient_free(topicName); + return 1; +} + +void connlost(void *context, char *cause) +{ + printf("\nConnection lost\n"); + printf(" cause: %s\n", cause); +} + +int main(int argc, char* argv[]) +{ + MQTTClient client; + MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; + MQTTClient_message pubmsg = MQTTClient_message_initializer; + MQTTClient_deliveryToken token; + int rc; + + if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID, + MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to create client, return code %d\n", rc); + rc = EXIT_FAILURE; + goto exit; + } + + if ((rc = MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to set callbacks, return code %d\n", rc); + rc = EXIT_FAILURE; + goto destroy_exit; + } + + conn_opts.keepAliveInterval = 20; + conn_opts.cleansession = 1; + if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to connect, return code %d\n", rc); + rc = EXIT_FAILURE; + goto destroy_exit; + } + + pubmsg.payload = PAYLOAD; + pubmsg.payloadlen = (int)strlen(PAYLOAD); + pubmsg.qos = QOS; + pubmsg.retained = 0; + deliveredtoken = 0; + if ((rc = MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to publish message, return code %d\n", rc); + rc = EXIT_FAILURE; + } + else + { + printf("Waiting for publication of %s\n" + "on topic %s for client with ClientID: %s\n", + PAYLOAD, TOPIC, CLIENTID); + while (deliveredtoken != token) + { + #if defined(_WIN32) + Sleep(100); + #else + usleep(10000L); + #endif + } + } + + if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to disconnect, return code %d\n", rc); + rc = EXIT_FAILURE; + } + +destroy_exit: + MQTTClient_destroy(&client); + +exit: + return rc; +} + + * @endcode + * @page subasync Asynchronous subscription example +@code +#include +#include +#include +#include "MQTTClient.h" + +#define ADDRESS "tcp://mqtt.eclipseprojects.io:1883" +#define CLIENTID "ExampleClientSub" +#define TOPIC "MQTT Examples" +#define PAYLOAD "Hello World!" +#define QOS 1 +#define TIMEOUT 10000L + +volatile MQTTClient_deliveryToken deliveredtoken; + +void delivered(void *context, MQTTClient_deliveryToken dt) +{ + printf("Message with token value %d delivery confirmed\n", dt); + deliveredtoken = dt; +} + +int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) +{ + printf("Message arrived\n"); + printf(" topic: %s\n", topicName); + printf(" message: %.*s\n", message->payloadlen, (char*)message->payload); + MQTTClient_freeMessage(&message); + MQTTClient_free(topicName); + return 1; +} + +void connlost(void *context, char *cause) +{ + printf("\nConnection lost\n"); + printf(" cause: %s\n", cause); +} + +int main(int argc, char* argv[]) +{ + MQTTClient client; + MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; + int rc; + + if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID, + MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to create client, return code %d\n", rc); + rc = EXIT_FAILURE; + goto exit; + } + + if ((rc = MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to set callbacks, return code %d\n", rc); + rc = EXIT_FAILURE; + goto destroy_exit; + } + + conn_opts.keepAliveInterval = 20; + conn_opts.cleansession = 1; + if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to connect, return code %d\n", rc); + rc = EXIT_FAILURE; + goto destroy_exit; + } + + printf("Subscribing to topic %s\nfor client %s using QoS%d\n\n" + "Press Q to quit\n\n", TOPIC, CLIENTID, QOS); + if ((rc = MQTTClient_subscribe(client, TOPIC, QOS)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to subscribe, return code %d\n", rc); + rc = EXIT_FAILURE; + } + else + { + int ch; + do + { + ch = getchar(); + } while (ch!='Q' && ch != 'q'); + + if ((rc = MQTTClient_unsubscribe(client, TOPIC)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to unsubscribe, return code %d\n", rc); + rc = EXIT_FAILURE; + } + } + + if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS) + { + printf("Failed to disconnect, return code %d\n", rc); + rc = EXIT_FAILURE; + } +destroy_exit: + MQTTClient_destroy(&client); +exit: + return rc; +} + + * @endcode + * @page tracing Tracing + * + * Runtime tracing is controlled by environment variables. + * + * Tracing is switched on by setting MQTT_C_CLIENT_TRACE. A value of ON, or stdout, prints to + * stdout, any other value is interpreted as a file name to use. + * + * The amount of trace detail is controlled with the MQTT_C_CLIENT_TRACE_LEVEL environment + * variable - valid values are ERROR, PROTOCOL, MINIMUM, MEDIUM and MAXIMUM + * (from least to most verbose). + * + * The variable MQTT_C_CLIENT_TRACE_MAX_LINES limits the number of lines of trace that are output + * to a file. Two files are used at most, when they are full, the last one is overwritten with the + * new trace entries. The default size is 1000 lines. + * + * ### MQTT Packet Tracing + * + * A feature that can be very useful is printing the MQTT packets that are sent and received. To + * achieve this, use the following environment variable settings: + * @code + MQTT_C_CLIENT_TRACE=ON + MQTT_C_CLIENT_TRACE_LEVEL=PROTOCOL + * @endcode + * The output you should see looks like this: + * @code + 20130528 155936.813 3 stdout-subscriber -> CONNECT cleansession: 1 (0) + 20130528 155936.813 3 stdout-subscriber <- CONNACK rc: 0 + 20130528 155936.813 3 stdout-subscriber -> SUBSCRIBE msgid: 1 (0) + 20130528 155936.813 3 stdout-subscriber <- SUBACK msgid: 1 + 20130528 155941.818 3 stdout-subscriber -> DISCONNECT (0) + * @endcode + * where the fields are: + * 1. date + * 2. time + * 3. socket number + * 4. client id + * 5. direction (-> from client to server, <- from server to client) + * 6. packet details + * + * ### Default Level Tracing + * + * This is an extract of a default level trace of a call to connect: + * @code + 19700101 010000.000 (1152206656) (0)> MQTTClient_connect:893 + 19700101 010000.000 (1152206656) (1)> MQTTClient_connectURI:716 + 20130528 160447.479 Connecting to serverURI localhost:1883 + 20130528 160447.479 (1152206656) (2)> MQTTProtocol_connect:98 + 20130528 160447.479 (1152206656) (3)> MQTTProtocol_addressPort:48 + 20130528 160447.479 (1152206656) (3)< MQTTProtocol_addressPort:73 + 20130528 160447.479 (1152206656) (3)> Socket_new:599 + 20130528 160447.479 New socket 4 for localhost, port 1883 + 20130528 160447.479 (1152206656) (4)> Socket_addSocket:163 + 20130528 160447.479 (1152206656) (5)> Socket_setnonblocking:73 + 20130528 160447.479 (1152206656) (5)< Socket_setnonblocking:78 (0) + 20130528 160447.479 (1152206656) (4)< Socket_addSocket:176 (0) + 20130528 160447.479 (1152206656) (4)> Socket_error:95 + 20130528 160447.479 (1152206656) (4)< Socket_error:104 (115) + 20130528 160447.479 Connect pending + 20130528 160447.479 (1152206656) (3)< Socket_new:683 (115) + 20130528 160447.479 (1152206656) (2)< MQTTProtocol_connect:131 (115) + * @endcode + * where the fields are: + * 1. date + * 2. time + * 3. thread id + * 4. function nesting level + * 5. function entry (>) or exit (<) + * 6. function name : line of source code file + * 7. return value (if there is one) + * + * ### Memory Allocation Tracing + * + * Setting the trace level to maximum causes memory allocations and frees to be traced along with + * the default trace entries, with messages like the following: + * @code + 20130528 161819.657 Allocating 16 bytes in heap at file /home/icraggs/workspaces/mqrtc/mqttv3c/src/MQTTPacket.c line 177 ptr 0x179f930 + + 20130528 161819.657 Freeing 16 bytes in heap at file /home/icraggs/workspaces/mqrtc/mqttv3c/src/MQTTPacket.c line 201, heap use now 896 bytes + * @endcode + * When the last MQTT client object is destroyed, if the trace is being recorded + * and all memory allocated by the client library has not been freed, an error message will be + * written to the trace. This can help with fixing memory leaks. The message will look like this: + * @code + 20130528 163909.208 Some memory not freed at shutdown, possible memory leak + 20130528 163909.208 Heap scan start, total 880 bytes + 20130528 163909.208 Heap element size 32, line 354, file /home/icraggs/workspaces/mqrtc/mqttv3c/src/MQTTPacket.c, ptr 0x260cb00 + 20130528 163909.208 Content + 20130528 163909.209 Heap scan end + * @endcode + * @endcond + */ diff --git a/MULTIPSK.c b/MULTIPSK.c index a20b964..699db8f 100644 --- a/MULTIPSK.c +++ b/MULTIPSK.c @@ -1317,7 +1317,7 @@ VOID ProcessMSPKData(struct TNCINFO * TNC) C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); - STREAM->BytesRXed += TNC->DataLen; + STREAM->bytesRXed += TNC->DataLen; } TNC->DataLen = 0; @@ -1387,7 +1387,7 @@ DataLoop: STREAM->Connected = TRUE; STREAM->Connecting = FALSE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; buffptr = GetBuff(); if (buffptr) @@ -1402,7 +1402,7 @@ DataLoop: STREAM->Connected = TRUE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; UpdateMH(TNC, CallFrom, '+', 'I'); @@ -1483,7 +1483,7 @@ VOID SendData(struct TNCINFO * TNC, char * Msg, int MsgLen) char * inptr = Msg; SOCKET sock = TNCInfo[MasterPort[TNC->Port]]->TCPSock; - TNC->Streams[0].BytesTXed += MsgLen; + TNC->Streams[0].bytesTXed += MsgLen; for (n = 0; n < MsgLen; n++) { diff --git a/MailNode.vcproj b/MailNode.vcproj index a67f072..a77077c 100644 --- a/MailNode.vcproj +++ b/MailNode.vcproj @@ -41,7 +41,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\CKernel;..\CommonSource;..\CInclude" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T" + PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;LINBPQ;_USE_32BIT_TIME_T;NOMQTT" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="1" @@ -456,6 +456,10 @@ RelativePath="..\CommonSource\Moncode.c" > + + diff --git a/SCSPactor.c b/SCSPactor.c index 6edf0ed..3bd0ffe 100644 --- a/SCSPactor.c +++ b/SCSPactor.c @@ -1972,7 +1972,7 @@ VOID SCSPoll(int Port) } Poll[3] = 0; // Data? - TNC->Streams[Stream].BytesTXed += datalen; + TNC->Streams[Stream].bytesTXed += datalen; Poll[4] = datalen - 1; memcpy(&Poll[5], Buffer, datalen); @@ -2324,7 +2324,7 @@ void SCSTryToSendDATA(struct TNCINFO * TNC, int Stream) } Poll[3] = 0; // Data - STREAM->BytesTXed += datalen; + STREAM->bytesTXed += datalen; Poll[4] = datalen - 1; memcpy(&Poll[5], Buffer, datalen); @@ -3402,7 +3402,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen) { if (TNC->TXBuffer[6]== 'T') // TX count Status { - sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].BytesRXed, TNC->Streams[Stream].BytesTXed, Buffer); + sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].bytesRXed, TNC->Streams[Stream].bytesTXed, Buffer); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); return; } @@ -3501,7 +3501,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen) STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connecting = FALSE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; // Stop Scanner @@ -3897,7 +3897,7 @@ VOID ProcessDEDFrame(struct TNCINFO * TNC, UCHAR * Msg, int framelen) if (buffptr == NULL) return; // No buffers, so ignore buffptr->Len = Msg[4] + 1; // Length - TNC->Streams[Stream].BytesRXed += (int)buffptr->Len; + TNC->Streams[Stream].bytesRXed += (int)buffptr->Len; memcpy(buffptr->Data, &Msg[5], buffptr->Len); WritetoTrace(TNC, &Msg[5], (int)buffptr->Len); diff --git a/SCSTrackeMulti.c b/SCSTrackeMulti.c index f8459dd..ce5df93 100644 --- a/SCSTrackeMulti.c +++ b/SCSTrackeMulti.c @@ -825,7 +825,7 @@ static VOID DEDPoll(int Port) } Poll[1] = 0; // Data - TNC->Streams[Stream].BytesTXed += datalen; + TNC->Streams[Stream].bytesTXed += datalen; Poll[2] = datalen - 1; memcpy(&Poll[3], Buffer, datalen); @@ -1508,7 +1508,7 @@ static VOID ProcessDEDFrame(struct TNCINFO * TNC) STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connecting = FALSE; - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; memcpy(MHCall, Call, 9); MHCall[9] = 0; @@ -1677,7 +1677,7 @@ static VOID ProcessDEDFrame(struct TNCINFO * TNC) if (buffptr == NULL) return; // No buffers, so ignore buffptr->Len = framelen; // Length - TNC->Streams[Stream].BytesRXed += buffptr->Len; + TNC->Streams[Stream].bytesRXed += buffptr->Len; memcpy(buffptr->Data, Msg, buffptr->Len); C_Q_ADD(&TNC->Streams[Stream].PACTORtoBPQ_Q, buffptr); diff --git a/SCSTracker.c b/SCSTracker.c index 9965925..d7364f8 100644 --- a/SCSTracker.c +++ b/SCSTracker.c @@ -1267,7 +1267,7 @@ reinit: } Poll[1] = 0; // Data - TNC->Streams[Stream].BytesTXed += datalen; + TNC->Streams[Stream].bytesTXed += datalen; Poll[2] = datalen - 1; memcpy(&Poll[3], Buffer, datalen); @@ -1888,7 +1888,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC) { if (TNC->TXBuffer[4]== 'T') // TX count Status { - sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].BytesRXed, TNC->Streams[Stream].BytesTXed, Buffer); + sprintf(TNC->WEB_TRAFFIC, "RX %d TX %d ACKED %s", TNC->Streams[Stream].bytesRXed, TNC->Streams[Stream].bytesTXed, Buffer); SetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); TNC->WEB_CHANGED = TRUE; return; @@ -2027,7 +2027,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC) STREAM->Connected = TRUE; // Subsequent data to data channel STREAM->Connecting = FALSE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; if (TNC->SlowTimer) Debugprintf("RP Incoming call to APPLCALL completed"); @@ -2385,7 +2385,7 @@ VOID TrkProcessDEDFrame(struct TNCINFO * TNC) if (buffptr == NULL) return; // No buffers, so ignore buffptr->Len = framelen; // Length - TNC->Streams[Stream].BytesRXed += (int)buffptr->Len; + TNC->Streams[Stream].bytesRXed += (int)buffptr->Len; memcpy(buffptr->Data, Msg, buffptr->Len); WritetoTrace(TNC, Msg, (int)buffptr->Len); diff --git a/SerialPort.c b/SerialPort.c index 9886be7..15bbc95 100644 --- a/SerialPort.c +++ b/SerialPort.c @@ -402,7 +402,7 @@ ok: UCHAR * data = &buffptr->Data[0]; STREAM->FramesQueued--; txlen = (int)buffptr->Len; - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; bytes=SerialSendData(TNC, data, txlen); WritetoTrace(TNC, data, txlen); @@ -491,7 +491,7 @@ ok: bytes=SerialSendData(TNC, TXMsg, txlen); TNC->Streams[Stream].BytesOutstanding += bytes; // So flow control works - will be updated by BUFFER response - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; // WritetoTrace(TNC, &buff->L2DATA[0], txlen); return 1; diff --git a/TelnetV6.c b/TelnetV6.c index 50ef424..5832266 100644 --- a/TelnetV6.c +++ b/TelnetV6.c @@ -2382,7 +2382,7 @@ nosocks: { char logmsg[120]; sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d\n", - sockptr->Number, STREAM->BytesTXed, STREAM->BytesRXed); + sockptr->Number, STREAM->bytesTXed, STREAM->bytesRXed); WriteLog (logmsg); } @@ -2407,7 +2407,7 @@ nosocks: { char logmsg[120]; sprintf(logmsg,"%d Disconnected. Bytes Sent = %d Bytes Received %d Time %d Seconds\r\n", - sockptr->Number, STREAM->BytesTXed, STREAM->BytesRXed, (int)(time(NULL) - sockptr->ConnectTime)); + sockptr->Number, STREAM->bytesTXed, STREAM->bytesRXed, (int)(time(NULL) - sockptr->ConnectTime)); WriteCMSLog (logmsg); } @@ -2415,7 +2415,7 @@ nosocks: // Don't report if Internet down unless ReportRelayTraffic set) if (sockptr->RelaySession == FALSE || TCP->ReportRelayTraffic) - SendWL2KSessionRecord(sockptr->ADIF, STREAM->BytesTXed, STREAM->BytesRXed); + SendWL2KSessionRecord(sockptr->ADIF, STREAM->bytesTXed, STREAM->bytesRXed); WriteADIFRecord(sockptr->ADIF); @@ -3285,7 +3285,7 @@ int Socket_Accept(struct TNCINFO * TNC, SOCKET SocketId, int Port) sockptr->Keepalive = FALSE; sockptr->UTF8 = 0; - TNC->Streams[n].BytesRXed = TNC->Streams[n].BytesTXed = 0; + TNC->Streams[n].bytesRXed = TNC->Streams[n].bytesTXed = 0; TNC->Streams[n].FramesQueued = 0; sockptr->HTTPMode = FALSE; @@ -3834,7 +3834,7 @@ MsgLoop: // Normal Data State - STREAM->BytesRXed += MsgLen; + STREAM->bytesRXed += MsgLen; SendIndex = 0; // Line could be up to 500 chars if coming from a program rather than an interative user @@ -3986,7 +3986,7 @@ MsgLoop: if (ctlen > 0) send(sock, ct, ctlen, 0); - STREAM->BytesTXed = ctlen; + STREAM->bytesTXed = ctlen; if (LogEnabled) { @@ -4067,7 +4067,7 @@ int DataSocket_ReadRelay(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, MsgPtr = &sockptr->InputBuffer[0]; InputLen = sockptr->InputLen; - STREAM->BytesRXed += InputLen; + STREAM->bytesRXed += InputLen; if (sockptr->LoginState == 2) { @@ -4077,7 +4077,7 @@ int DataSocket_ReadRelay(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, // Queue to Node. Data may arrive it large quatities, possibly exceeding node buffer capacity - STREAM->BytesRXed += InputLen; + STREAM->bytesRXed += InputLen; if (sockptr->FromHostBuffPutptr + InputLen > sockptr->FromHostBufferSize) { @@ -4347,7 +4347,7 @@ int DataSocket_ReadSync(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, S InputLen = sockptr->InputLen; MsgPtr[InputLen] = 0; - STREAM->BytesRXed += InputLen; + STREAM->bytesRXed += InputLen; if (sockptr->LoginState == 0) // Initial connection { @@ -4495,7 +4495,7 @@ MsgLoop: // Queue to Node. Data may arrive it large quantities, possibly exceeding node buffer capacity - STREAM->BytesRXed += InputLen; + STREAM->bytesRXed += InputLen; BuffertoNode(sockptr, MsgPtr, InputLen); sockptr->InputLen = 0; @@ -5650,7 +5650,7 @@ int Telnet_Connected(struct TNCINFO * TNC, struct ConnectionInfo * sockptr, SOCK sockptr->FromHostBuffPutptr = sockptr->FromHostBuffGetptr = 0; - TNC->Streams[Stream].BytesRXed = TNC->Streams[Stream].BytesTXed = 0; + TNC->Streams[Stream].bytesRXed = TNC->Streams[Stream].bytesTXed = 0; return 0; } @@ -6508,7 +6508,7 @@ BOOL TelSendPacket(int Stream, struct STREAMINFO * STREAM, PMSGWITHLEN buffptr, datalen = (int)buffptr->Len; MsgPtr = &buffptr->Data[0]; - STREAM->BytesTXed += datalen; + STREAM->bytesTXed += datalen; sock = sockptr->socket; diff --git a/UIARQ.c b/UIARQ.c index 6f35353..fe880c3 100644 --- a/UIARQ.c +++ b/UIARQ.c @@ -367,10 +367,10 @@ static VOID UpdateStatsLine(struct TNCINFO * TNC, struct STREAMINFO * STREAM) { char Count[16]; - sprintf(Count, "%d", STREAM->BytesRXed); + sprintf(Count, "%d", STREAM->bytesRXed); SetWindowText(STREAM->xIDC_RXED, Count); - sprintf(Count, "%d", STREAM->BytesTXed); + sprintf(Count, "%d", STREAM->bytesTXed); SetWindowText(STREAM->xIDC_SEND, Count); sprintf(Count, "%d", STREAM->BytesResent); @@ -849,7 +849,7 @@ static VOID ProcessFLDigiData(struct TNCINFO * TNC, UCHAR * Input, int Len, int strcpy(STREAM->MyCall, call2); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; if (WL2K) strcpy(SESS->RMSCall, WL2K->RMSCall); @@ -1001,7 +1001,7 @@ AckConnectRequest: goto SendKReply; // Repeated ACK STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->BytesAcked = STREAM->BytesResent = 0; STREAM->Connected = TRUE; ARQ->ARQTimerState = 0; @@ -1300,7 +1300,7 @@ SendKReply: buffptr->Len = Len; memcpy(buffptr->Data, &Input[1], Len); - STREAM->BytesRXed += Len; + STREAM->bytesRXed += Len; UpdateStatsLine(TNC, STREAM); @@ -1388,7 +1388,7 @@ static VOID SendARQData(struct TNCINFO * TNC, PMSGWITHLEN Buffer, int Stream) ARQ->TXHOLDQ[ARQ->TXSeq] = Buffer; - STREAM->BytesTXed += Origlen; + STREAM->bytesTXed += Origlen; UpdateStatsLine(TNC, STREAM); diff --git a/UZ7HODrv.c b/UZ7HODrv.c index 1e85313..863cc9d 100644 --- a/UZ7HODrv.c +++ b/UZ7HODrv.c @@ -1230,6 +1230,9 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) ViaList[0] = Digis; } + hookL4SessionAttempt(STREAM,&STREAM->AGWKey[1], &STREAM->AGWKey[11]); + + sent = send(TNCInfo[MasterPort[port]]->TCPSock, (char *)&AGW->TXHeader, AGWHDDRLEN, 0); if (Digis) send(TNCInfo[MasterPort[port]]->TCPSock, ViaList, Digis * 10 + 1, 0); @@ -2231,7 +2234,7 @@ VOID ProcessAGWPacket(struct TNCINFO * TNC, UCHAR * Message) buffptr->Len = RXHeader->DataLength; memcpy(buffptr->Data, Message, RXHeader->DataLength); - STREAM->BytesRXed += RXHeader->DataLength; + STREAM->bytesRXed += RXHeader->DataLength; C_Q_ADD(&STREAM->PACTORtoBPQ_Q, buffptr); return; @@ -2373,7 +2376,7 @@ GotStream: memcpy(STREAM->AGWKey, Key, 21); STREAM->Connected = TRUE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; SuspendOtherPorts(TNC); @@ -2534,7 +2537,7 @@ GotStream: STREAM->Connected = TRUE; STREAM->Connecting = FALSE; STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = 0; + STREAM->bytesRXed = STREAM->bytesTXed = 0; buffptr = GetBuff(); if (buffptr == 0) return; // No buffers, so ignore @@ -2936,7 +2939,7 @@ VOID SendData(int Stream, struct TNCINFO * TNC, char * Key, char * Msg, int MsgL memcpy(AGW->TXHeader.callfrom, &Key[11], 10); memcpy(AGW->TXHeader.callto, &Key[1], 10); - TNC->Streams[Stream].BytesTXed += MsgLen; + TNC->Streams[Stream].bytesTXed += MsgLen; // If Length is greater than Paclen we should fragment diff --git a/VARA.c b/VARA.c index 5eea38b..58a2dbf 100644 --- a/VARA.c +++ b/VARA.c @@ -394,6 +394,18 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) } } + // Check ATTACH time limit + + if (STREAM->Attached) + { + if (STREAM->AttachTime && TNC->AttachTimeLimit && time(NULL) > (TNC->AttachTimeLimit + STREAM->AttachTime)) + { + STREAM->ReportDISC = 1; + STREAM->AttachTime = 0; + } + } + + while (TNC->PortRecord->UI_Q) { buffptr = Q_REM(&TNC->PortRecord->UI_Q); @@ -506,6 +518,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) int calllen; char Msg[80]; + memset(STREAM, 0, sizeof(struct STREAMINFO)); + TNC->Streams[0].Attached = TRUE; calllen = ConvFromAX25(TNC->PortRecord->ATTACHEDSESSIONS[0]->L4USER, TNC->Streams[0].MyCall); @@ -516,6 +530,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) VARASendCommand(TNC, "LISTEN OFF\r", TRUE); TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit + STREAM->AttachTime = time(NULL); // Stop other ports in same group @@ -568,7 +583,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) buffptr->Data[txlen] = 0; // Null terminate - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; WritetoTrace(TNC, buffptr->Data, txlen); // Always add to stored data and set timer. If it expires send message @@ -599,7 +614,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) memcpy(txbuff, buffptr->Data, txlen); bytes = VARASendData(TNC, &txbuff[0], txlen); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; ReleaseBuffer(buffptr); } @@ -647,7 +662,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) txlen = (int)buffptr->Len; memcpy(txbuff, buffptr->Data, txlen); bytes=send(TNC->TCPDataSock, buff->L2DATA, txlen, 0); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, txbuff, txlen); ReleaseBuffer(buffptr); } @@ -674,7 +689,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) memcpy(txbuff, buff->L2DATA, txlen); bytes=send(TNC->TCPDataSock, txbuff, txlen, 0); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, buff->L2DATA, txlen); return 0; } @@ -690,7 +705,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) buff->L2DATA[txlen] = 0; // Null terminate - STREAM->BytesTXed += txlen; + STREAM->bytesTXed += txlen; WritetoTrace(TNC, buff->L2DATA, txlen); // Always add to stored data and set timer. If it expires send message @@ -815,6 +830,8 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) // Need to set connecting here as if we delay for busy we may incorrectly process OK response TNC->Streams[0].Connecting = TRUE; + + hookL4SessionAttempt(STREAM, &buff->L2DATA[2], TNC->Streams[0].MyCall); // See if Busy @@ -2000,7 +2017,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) } sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %s", - STREAM->BytesTXed, STREAM->BytesRXed, &Buffer[7]); + STREAM->bytesTXed, STREAM->bytesRXed, &Buffer[7]); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); return; @@ -2020,8 +2037,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) Debugprintf(Buffer); WritetoTrace(TNC, Buffer, MsgLen - 1); - STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; if (TNC->VARACMsg) free(TNC->VARACMsg); @@ -2088,6 +2104,10 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) // Stop other ports in same group + memset(STREAM, 0, sizeof(struct STREAMINFO)); + + STREAM->ConnectTime = time(NULL); + SuspendOtherPorts(TNC); TNC->SessionTimeLimit = TNC->DefaultSessionTimeLimit; // Reset Limit @@ -2183,7 +2203,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) STREAM->PacketsSent++; bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); - STREAM->BytesTXed += TNC->NetRomTxLen; + STREAM->bytesTXed += TNC->NetRomTxLen; free(TNC->NetRomTxBuffer); TNC->NetRomTxBuffer = NULL; @@ -2275,6 +2295,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) char Reply[80]; int ReplyLen; + STREAM->ConnectTime = time(NULL); if (TNC->NetRomMode) { @@ -2287,7 +2308,7 @@ VOID VARAProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) STREAM->PacketsSent++; bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); - STREAM->BytesTXed += TNC->NetRomTxLen; + STREAM->bytesTXed += TNC->NetRomTxLen; free(TNC->NetRomTxBuffer); TNC->NetRomTxBuffer = NULL; TNC->NetRomTxLen = 0; @@ -2729,13 +2750,13 @@ VOID VARAProcessDataPacket(struct TNCINFO * TNC, UCHAR * Data, int Length) TNC->TimeSinceLast = 0; - STREAM->BytesRXed += Length; + STREAM->bytesRXed += Length; Data[Length] = 0; // Debugprintf("VARA: RXD %d bytes", Length); sprintf(TNC->WEB_TRAFFIC, "Sent %d RXed %d Queued %d", - STREAM->BytesTXed, STREAM->BytesRXed,STREAM->BytesOutstanding); + STREAM->bytesTXed, STREAM->bytesRXed,STREAM->BytesOutstanding); MySetWindowText(TNC->xIDC_TRAFFIC, TNC->WEB_TRAFFIC); // if VARAAC Mode, remove byte count from front and add cr @@ -2878,7 +2899,7 @@ int VARASendData(struct TNCINFO * TNC, UCHAR * Buff, int Len) struct STREAMINFO * STREAM = &TNC->Streams[0]; int bytes=send(TNC->TCPDataSock,(const char FAR *)Buff, Len, 0); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, Buff, Len); return bytes; } @@ -2977,7 +2998,7 @@ void SendVARANetrom(struct TNCINFO * TNC, unsigned char * Data, int Len) STREAM->PacketsSent++; bytes = send(TNC->TCPDataSock, TNC->NetRomTxBuffer, TNC->NetRomTxLen, 0); - STREAM->BytesTXed += TNC->NetRomTxLen; + STREAM->bytesTXed += TNC->NetRomTxLen; free(TNC->NetRomTxBuffer); TNC->NetRomTxBuffer = NULL; diff --git a/Versions.h b/Versions.h index 0dc95ae..5f51e71 100644 --- a/Versions.h +++ b/Versions.h @@ -10,8 +10,8 @@ #endif -#define KVers 6,0,24,47 -#define KVerstring "6.0.24.47\0" +#define KVers 6,0,24,48 +#define KVerstring "6.0.24.48\0" #ifdef CKernel diff --git a/WINMOR.c b/WINMOR.c index 796dc58..a920a4e 100644 --- a/WINMOR.c +++ b/WINMOR.c @@ -915,7 +915,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) txlen = buffptr->Len; memcpy(txbuff, buffptr->Data, txlen); bytes = send(TNC->TCPDataSock, txbuff, (int)txlen, 0); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, txbuff, (int)txlen); ReleaseBuffer(buffptr); } @@ -941,7 +941,7 @@ static size_t ExtProc(int fn, int port, PDATAMESSAGE buff) } bytes = send(TNC->TCPDataSock,buff->L2DATA, (int)txlen, 0); - STREAM->BytesTXed += bytes; + STREAM->bytesTXed += bytes; WritetoTrace(TNC, &buff->L2DATA[0], (int)txlen); } @@ -2106,7 +2106,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) FreeSemaphore(&Semaphore); STREAM->ConnectTime = time(NULL); - STREAM->BytesRXed = STREAM->BytesTXed = STREAM->PacketsSent = 0; + STREAM->bytesRXed = STREAM->bytesTXed = STREAM->PacketsSent = 0; if (TNC->StartInRobust) send(TNC->TCPSock, "ROBUST TRUE\r\n", 13, 0); @@ -2207,7 +2207,7 @@ VOID ProcessResponse(struct TNCINFO * TNC, UCHAR * Buffer, int MsgLen) PMSGWITHLEN buffptr = Q_REM(&STREAM->BPQtoPACTOR_Q); send(TNC->TCPDataSock, buffptr->Data, (int)buffptr->Len, 0); - STREAM->BytesTXed += (int)buffptr->Len; + STREAM->bytesTXed += (int)buffptr->Len; WritetoTrace(TNC, buffptr->Data, (int)buffptr->Len); ReleaseBuffer(buffptr); } @@ -2693,7 +2693,7 @@ loop: return; } - STREAM->BytesRXed += InputLen; + STREAM->bytesRXed += InputLen; msg = &buffptr->Data[0]; msg[InputLen] = 0; diff --git a/mailapi.c b/mailapi.c index b2de101..10f597c 100644 --- a/mailapi.c +++ b/mailapi.c @@ -247,7 +247,7 @@ int MailAPIProcessHTTPMessage(struct HTTPConnectionInfo * Session, char * respon // Return Token - sprintf(response, "{\"access_token\":\"%s\", \"expires_in\":%d, \"scope\":\"create\"}\r\n", + sprintf(response, "{\"access_token\":\"%s\", \"expires_at\":%d, \"scope\":\"create\"}\r\n", Token->token, Token->expiration_time); return strlen(response); @@ -514,7 +514,7 @@ char * APIConvTime(int ss) mm = (ss - (hh * 3600)) / 60; ss = ss % 60; - sprintf(timebuf, "%02d:%02d:%02d", hh, mm, ss); + sprintf(timebuf, "\"%02d:%02d:%02d\"", hh, mm, ss); return timebuf; } @@ -528,7 +528,9 @@ int sendFwdConfig(struct HTTPConnectionInfo * Session, char * response, char * R int i = 0; int Len = 0; - + n = sprintf(ptr,"{\"forwardconfig\":[\r\n"); + ptr += n; + for (USER = BBSChain; USER; USER = USER->BBSNext) { struct BBSForwardingInfo * FWDInfo = USER->ForwardingInfo; @@ -575,10 +577,15 @@ int sendFwdConfig(struct HTTPConnectionInfo * Session, char * response, char * R ptr += sprintf(ptr, " }\r\n},\r\n"); } - if (response[n]) // No entries + if (response[n] == 0) // No entries + { + response[strlen(response) - 2] = '\0'; // remove \r\n + strcat(response, "]}\r\n"); + } + else { response[strlen(response)-3 ] = '\0'; // remove ,\r\n - strcat(response, "\r\n"); + strcat(response, "\r\n]}\r\n"); } return strlen(response); diff --git a/paho-mqtt3a-static.lib b/paho-mqtt3a-static.lib new file mode 100644 index 0000000000000000000000000000000000000000..abba85429c631475624b4c205b777d4d562e1409 GIT binary patch literal 751506 zcmeFa31FQ?x&J?DOB#|?QVg;P7)n8wQqqOeQjnx=poOGOvy`oHNR!hxZ8maFx**k4 z0&0m>L{Lyr5V#_s;tv$ABDWxd3o0sCQ9)5rS*jK+TD4dHpYP1P?|ILAPD+8e-1~Rh zlkf9Bv(G%UzVpm`$cb(J?JM6_dTdp$nR5KpSu?7Sn>uY)F2CA8&YU@YrX$ZUHKwS? znA0cj{_lf*#=P3!qqiFq{QlNt%x?aQZf!K-@BX_?QS|qtN6aX*ff2&`h97F8U1R0+jf}IukttM(~V|#etYcui1~;7zF%SX_y_-r z4>`aTpFCmLzw4ee#s6Zzu}c=3@OQzBW~_dj?i;aRNlm}W`<=1Vl>D84rS)f;|AW88 z{A63-yn*gM6H?9T{?48i?m4l%v!`Q0I@#?XS0vMk&YtDH{;{*CGu_$N)p=pkGt$Za z?#`aJbnraT)79Ct+9XyIOQL%qom^)U-Rqb4CvnidzPqiftG8WLf6|dBCl>XkJ9~Rl z&FS9$wiU^mlc$_~aw37Nwys1f-O<^b=p%LM<%wSBuBK*I%`B5>PPetMZs~7pPbQK* z>HhV(oOPY)90s|_dA32?AWULckzt$aaq&a0S?-h4rH80RKqs*Aj!YtzO#3KON^DRX zjs3mr)+gF~dwP=Xq$==gq9LAM< z;*BtZz_YC7^4{2+iaHB;&B^5I7HT-_n(}I28Dn&`rQ4#czJat@IUz=*Asg60-->>c zZ4zB=sdU0dN@dKiosu{O$)Ut7y#UGbWNRM*<9<$CDmi0%q9fVfEAKgv^~s(UX_Dxf z$(|fH?lExFu(+kADcP3l?U_qJiF9uu@Uoyf`jY+W&SWal*3n@SFr=I&qFM zDYJzG-O2vW_9bmy1EhD?_O;|T--S<2ew2hB*cI@(vMm+Z=7rjo?8)QxxlFI0+dI&c zpAOn)enG75?^K;clDvK)B9+TYkj$3#eQ|DHfa?=JxE_LN3G1W2GnKCG>r3_!eU@I> z+u*wm@#ZCIOjLZ9R-=eMyWUIob=`ewic%z^<{gR3IyuGmOx6X|!rr;PJ!v`==Sead z^mcNxpeKc>IJwO*QJv(`}tSsnyB# zo&%NgWM3+6-I|1@Y)>sJ>&Mzqk{0FD65XpiI;jer(m&CHA?R@}_Ip|KZ86>3-rJ?l zt3R1aHTFtCb8Nz)CWpJSt*4_aIj=M2t%+E7jX1+WDJKhGTBT zrXxvf>Rn&Ric082Fr(ox5y_6+kx&@YRnSqVOnoAbTYNfJCJ7*=`BcDhDT}g#Bt?0B zy$qI71_hT;cNqq>wyo2a#g@JQ_ARypz=$rgghBr(~5m@`wfffw>@9St9L#5$0& zNE`z_yOH*_{cU{>sTB+6(VzD+apn)*b!4pInd-9B)47aYY9-E9z^zZNNouH&!*C|+ zo+BNYoiL?IWf$)JWV)w!Z9=THo%<4AnkLG#>+BM3%jf`ddO7tBjRpEq@tvp8v+bw~ zx@~t;OdpATO7!-0(SidO{aI(vKr%OK^>QIMn@GlhUZlo*rPVdjWY@6;*FXf?TyQzSn9R>xnt* z7xZ*!4d$OCPjhN(>A#)LoZ6-=-PYAcCsMl{K@5YM6JfgPiu35ERSI0xT&kP-P$UvN z*~+FMe4OIFFgw=j`;)@zW|yJ1f$21MRMRK)ovuIdifYBa*1bbbn45(F{2{ z;@B}xPa^6HF?`H(vXHe!l-ZlMix_!w>y4Z^n+Mw4>BrOzI#YAHYzLvrr0RVCmeOR} z_iwhNv};D|&~})PrwJX!-V^7iXz|%aX2gTF=(EH61v#Nxi^ymi_meZ!MlJ0ypA(dI z8m4G&S0_S|=yM5Hdqz+d0P8bXGLqq(08VLZr>76*2hQV?ISYc7U?g_9*#(Ys7)I>I zfN=d7@#O+y0-Y0Uu!xK}RPolT^N#Tv2bOhprs#@dd|FXFdIb?ohVtC|Qpw@7b;6+P zyVpqgt|yEz`U)gMwU`r{t=5iknwM`!DDfma85vmCPD?B3AusQNkNzaPJCP)2`HXfk zK2or3V0pV;anM!!qJYbM#4kidEzoMr6Vn~l+H#6)6QVN;9Vo!%(t(a9%!GqO(fxAm-$@U~ltUNA3g(T?Hz=8$Q#+u!S_=c!cZ ziXKfGg6auu+)ULsdS6I^T~Z5JZ>5!E%-S}7o0b9=!+Ud6e?*vi_f3)MxJzefr@9~3 zQuQCS;(V_N!LUC2lU;GU)yZTZ#jDkEPLcK7WsYrW?QPm4%(J)qemQ>ZwA^|L8)uL+ zH}6xEDHxiSk#Hn;QBnIHT3IU!=$>}%1<`$J`WdNxS+{g{Clei=%a^AioDa)NcD41T zY_A?TVgeVjPj!*|=(E-p2pHqN(4ZvHtnWD=|*!XfQEoArg_iCDv(}>iWcGXNrGF(5b?%qQIjq>AmX)}uD@mG{qbM6W^9zEO-qp#T91+8AiI#-DJqzrc zk8IvnboDOdy##Yk-xa$!U8k87M%;;>HGcTs-}&oI6{==&?aP6n+i;G9cPH7@Al$)5 zf0ilPjb>EO1@h0@#m?{>vuod`a2Dnw#L1lGau(bXH)mvbfkQ{Znk6UycrKWWET7`7 zXOAQBottL1c{L*RvqSCL!Enw(8OSXxqVbuo?e8a`j$!=Amgv!9bjx?YP|vY&?u%q3~djc(rZ^bYy{iBd>O-| z+MJuNBs5gP>F!G;*Jrtux--F>>eZUIdndS7q32mF*nc z{a0dk{jc2YOYZd7{VR{q`$7jc0p)P4b-kYn{_SnXMgHw?Mw>nCzfv>&zY6o}{*9up z^)DLJc=KBR?PK;aV+#BmMM(s)96(u@nK$uIHCP7!0OV^=;;Z0ShHuHuzC6j^NnQzl z_9Dk}AO9EBVN@PQQBDWoUSaQv&wY3f+zDUn%lw=-yWu-sw@7Enw%adyd8PIbINDHX zMx@2rzu#P@-J8q5>z;Ua^!&%JiTq2}Z1lM^?g;;%JO6#HtF-9+Ygenb0&~gNzL@*p zHw!Pk{46jxe=Q5r0@Hc_&WmYq-lBiEXZph|X8*kcDDaXl+m2a6*ww*nS^;Etb=*9C z1eOHZ_fgq27Fs71meBCMW*|w!Y(9+0IwPCFSF@M#&wfv!))(IiFYw0Ub-z2%!Z99? zy3pKhOI)zb5&vKGokC7$|LFV$4 zpZgLlvWN2T;~8uzS@HJrk==q~cVJ|XXQ(G)Gn9?jf1mJ-l!IQU`NGc@j_s>+xFd1G z)7OB13pVT_wY+x`;TCrOJUeR@-TusS?ap$}JT%%erP?mf z($V|VCWi6pUd0Y;Iij!QTw>jzQ#i)pZFbytL|^2+wqt^NdzL$n26gZXum9qsK;SKJ zJ`{?QZ7#7FhHRl1K4o6;O`@8{-{-xddqwF_kVMZY{?m^|hQ-%c;LQ}4QPqgu(GhU( z-2Z(P`tNcS+8;Li_nE@~U!5sz4iBWhUe&7L#PdJm47ASKg~t^k{(bT>P)~^*O8gf) z`IvLmYM7H(Sv|7$|3j*9ub_0u47Sh-jfk?~ZYm=NZ+ydpb~$=0yLF6h_g@yXBM{Sr z33VY0y+`JpW2hn;Rd&ib56ii5cgmUdN<^zBs!CYslsqrCV~4c-0qNa&dA%!rRjY!L z)mY0pw-_AF?_+y_xqe)OD0nAs^?=YGvbsEWb>paP>Dg!Y#x1@YjUcV-+>uC8!=0SW zeFZ-vFXeTFKkw)eJE(Rni7L6qUfn69&!(6MwD{h&Z9kC zYRT7nJoMPu;euDXCu7R2<7WhC3+A4%v=u#>)Y8*>SN1IJLw#tnS^n z8kw|4cc>N(j7*qr=KJ@^`G|zc8~PCm$5r!)1f}`=hy>&}{zkB+*}dwKk_;G@Krz;dENtF?l1WT-rCUt?AA#m#5ux zZ-YKIxb(^mT|Y1p6G9Pp=4Fy<26-E*kpd>E)P6?441mcU&a;$ue! zPY$iSWvNt@dqniX(-~8}WwP`dBX%=K8MF6M#+)|EF?l53nk|z#2A-bS&D~$lbd?)( z9&Wxd(>;G4s4|V`Pwr2*Ph8M&ws*$aGh?2hJf7kwqpa6dRM%K{ExGQV!_Dtv?kMhK z=hdB3+gjgJzhKS@6B?SA%x!9!HzAk1sD9qU+J?I32~~>k1%8|PEiy&pf!95S3g==c zm=nj7OEZ>ZjKHY2vqUTy|1$i%>>L#{J1zR zG#{XF_v4A8wC0T@{$P97&*he~0I%`nb7=l*}5x0#`Dp?{9cM&p#J) zvQW>n#(%-uX6@Z`)_$9}KhgT1HGZCi3loIrp0n;Zdi%irha=CU%%brx;&;C1DIAsc zE#Tq&PW1d6jLE3{KLH*F-U!kR%uV3iz?;E3@ROh#DgHC<;HSV0cpG>Hcsr;z{TUFq z<_?gb`5gE|@J{eK@Gek|hW3@&1H2pD7yM7K3j88C6?_<+4SpS54t^6{4?Y5Z0Q?sC zN$}g??ck%}gWz|;?}Fb0e*=CW97Dbz1CIdz8$1d80eBin+A?Q?kAofHkH9|gC*V85 zCqT*Oli*9FeXzh zY8mc1E6E=xaGAi~Jv)0zvN4k73hzoTRgRM7x9}U|`E!e$EYnV`EZ2dO9vZ-lz=h!Zz(x@HHjBY~z$Os6GtJGVJd=N~4cY)`FUk2O2?|{p|$H8{+=U@l;M{orwSzZZBemcRI zNJmsAH}EV|?!bJV&c~g%c75>W@F&G&QhtyQx58Jd59Pv9gjMxlx(_WN-dhQ=}m^dT)kWabOuk3eAbM zmFb#@t-@Bm_ux0(^RFS@iti)fKHx{e3E;J$(r_IZ&)2E&qb8m&mCy88zT`*osLy{Q zmanX8;45cK?Q}lBz$jehshHo1o_P~#R$MoO2Y~+p9tz$9D&L<1m5$rMc-~a^Q4`Ob z+V!+p-sDH|mGJ9PAzI_=jIBxPjY|PvIcv7QBx`|DxXPQtR$a*4Nt*RcyUr-S&lkwU zDB7~xr{r1YJct8%(zE35XZ+&xB>6cI{vY`D<>tZOfT-jLZ5}6K*pQJ{`r9}8d6DKh z>gdzhGtb%E&u5ONMYa$0_vg8^Irgmw`V4?*N|w z{}X%?d>Z^I_&oSCa2xm(sPd$b&66{YHI>+@4rM+?<-9pkN0Q5U8ho-Y@~yfni6S)f&9qLDt_I$b(Fm? zRE;U9c-%z|RiqXmTQ{T9lZsePC+T{2$#!GJlj2nQjO91a^HbzU>0n-9%V`aGB+qNX z8gL!B2wV>;trvpv{GSA0Ml~)I?+Y)5Hzn2=%8&Y|>HNB4`S%x|?z$%oWN!E+R_=fw zk(nCe42;sDGKr3L$C5{-jX6|CjbI9R7|43SjtkSkco`gvy-ZXF6hg%ZcjMBLpjOTqB{1SfA`j<=vdA}ICI+l0&k(=}Qb!PM4m%T@5_l3XBHU-75 zrm)PeiYs_hLGUt*i$k;dpARoEN`vwrofA-!wmqx?55jIOcqmBQv2*wfL8bZaV7wfD z3}5l;C!=<-FBp`A>}SNvK|HxpU$ZJ(4(&SMQMW$Hy&90*-KWwB!o_LS&=tJe#vu19 zeRAvMCK!hgC9SDG+h1!nrpDFo9<|U?K@6nGU-|eCF@ihOomvqo-}3`DsJy9s_vF{Y zPv+;8oAUb$Q04neP{IBNYy_VHDRc82m;o6lGdF=-L6y;O!FahJK)z8;WyQsydf40s1v41Nt93qB5(fSTj%3F60;g78c^s4^c1#_JI~TZcjUs{Lr} z*0b_aeV_bL!^ywjSGVqIDOz0I56ld+iWfL%*yG0lVxSf|`W} zLusK|sK)aS7mz9@yKSLaXk?sO7l};iRM{&nU7mk2WuUYVf)l_?!D{eb;A!ByLB+EP z>;^9bKMD?kKLp*v(YJw4Ib zv|v%wf|j!q3l}vt)YhBBysOcLT`gF+q_&=`84to)1Fd(InY*Ydv81l4dBLKEiH6$K z^fZ-zY}|PDz|KU@qA*t({~yY!HF~p<#Bup}37j+Bmf*WOG^@+UPh%3}j6z{IINITG z5rq1jH<1|C8#!yLom)pT&Ro#Y+7R-|i{md?X!(14_j{Q7MW-g}nwl0hq3b<%{F#Ko zy#u{#ll?kb(9pKd-hMX?t0h>CGV>NRH`dplHFwd%Qx=?>Xr5cUuztb9y2PTUd38+- z7M_||u&|}Bsh%XvqaQA@nHu2m4cBa^5x){!{E0%PPeUxR6=T&UqC50ww}@4(qyBQ+}AH6DUC1`sHCYi-5)+ zN<@8K?ZVc^#Hme-S{sqZlJV-}8|TiiZDOV6QlG61d-1dqa0mgeZRh9*2`KZ=XHWt* zb?;T!b6s){#!@AkXl<@*O4QD6S+GQM*4R|nT(@v;osDsC#i-O--->@tTY>}kF6b(v znsZi5osB2R8GDr_v=LbXaI#V&4Jmn23N zsHSG~Ib%9E4U~-ku1`zzf`-QWy0B-kK|dT%r!Qw)U~1rvOBT@^C|C_*w8tJU3AVNu z@O*|9CfTa?=2P>$WU^U&BhRXL((o2}Rw@(iT+Zc_s&{4y)YiC9?3Ep;zWzW6r!1(i zv!Yv|)YTrp=5y1yXi+^qm=mLD$;G5d8Ju6ca2}zmDXHLWQ?dek1e`~L;)ymTN|1`I z&laTWP~DR{oBFyXb@k1*2-K2&LssH~60w1+HR8iKAy5HoC*QUdN-Re{B{0f-qO+HC zh}NzTpSI*BYCW=x7HwZIU6Pwf?#k9^t~8UeivO&qXYcsVG2dMAn_t~meazVDSH7LZ zz0LB!a`Zv>egAXYc3idM@oSIz^xO|HIk5cSoxJvz6K;NN>O(bGHeB+7cQF{Zjf{^+)u$L{L$5%z2&Hy>Q>-AAjVL?~MD-gO@i_T$Vp^?oalA z;;WbbvgD8BKKuKF>g#zIYx$$kecy}kXgqxE8`d;F_r|rA*Bhh#=!&8broQ-vA6(Hn z`PhpdJZH(yCkL4mj1qsJ2@lR5^?@TVytrkrEgLU*YPvB?EPv*z3Ac4DyyohvhaWih z+vk2BDgLTNCec*ja%ww){c0H z?sF=f(p}!U!liV;o=#j9Kb@#^i5li7x4-Jjb&}DO9+8qr^C^ju2#9)S6LBO$3M!{N z+0A8;iPT7jNrn4lPHd^JnwVVHS9KE5*;l3K=~YKpoo5;F#c&TP_b?ONld8;X^;k7= z>NFqAF*e}WAJWvBRU;MDlo=xy6!(7lRJ}mAN0-SWsD6C^KK9)``<~iw+{Rx~Wp;cK zRjM~)<`m02+*76Ib|~lW4o{VudqW<3x7N1QJQDIA4SDRcd%sVGysaT`TgclP@|fHE z@X9?^W-3D7fg!Id&( zDm9OVyvIY{){wU?Plvo`Lf#|<<#_93ou|soMV=}(_k_HA zLtY8nNHeXE7EhI#Gd)#mt_*oshrCCiW?3Kml{%`-9O$W1b6LoHU&#Ap$h$4%-5v72 z6!IPpdEX3qPlddvLtY=RB2KU=xYtu8Vn4LC6~jc^gCCr6KRykavB^s~l&{Y{DCB&i7QA>F^Y7Fyw6s zd6m2(JJI>@6h1svY90-FkA=Mb_F~>-eRO!L%&hcOsrf7v6HIb+r>AJ=p}R*zca`jB zXckIJJw?2p!biw^G~^vfusZ%W)~xhYnd$OWsi|a@@8YAWbm zWm{${JymLEhP)F)-XxX*G$7@}Q>CU33UTANz*D8>EGVi8-npJCHT_VhTizN^m6}VT zs0iF`@>Hqao$E3C?9+VjdC#4(dd=w{J>+8zcXo7t_CVadUL}isO^&{fW#+{f-s25X zm$SVb7wXE#Ku4(sY#7Y4!SySfX6qs6~IWy8{#i(^mWOBTtFs&sFa zyM5cmKCD+Wmz-4fF0ay|mm_o`+mVXzu+*f(2n*hBW@eI$hv{e)N>pL?OLNlW3oZFd zX_~JBOR=9?Wpg%(+@#yO!a$9+=R~4D-BqRKEmo6)Vx1I}^CVxu##C{B(|*^Y>afX2 zrRd$l@Ks{esoR9hW?^kxDjORsW;qDb%B9-`{ywrxHj z5;)`IQmbuSkX#g-^Z842f@&SwI=FSeCHFjn*;Mz;rn;@0>b7mF+rFu8$ELcS57+I) zm3g>shx`rIl{7x1=fMZZ3~njH)x&k$^gKkj$U&{ZZm6}QDWEsiRSa!kRq-;7()ydd z-P#cL;D()MVBZ_WZ(KEQ)gInQ`Li4(Fsmw7nW2WAL6GG`tviS6DmKk2AKE_DuzhiU za9gd5t(!&-ZrExDCi@gc!^LOo&ZfA}XICq>F~nB4bEqT|-;U9(+c&lDP@YN1(D)!n zC34tMzG?m#vN`wwxyuWaae>)4U^0VDJDu_a7#s_ zEt#RkB|(bH;SV+J*xXW7VH3P_Xnu){aMSo3nEseewPTcp#U#DL70jmkijtvm)~>$7 z7VaEnvwZPTYe^HX8ds`XR=vEc$k)n&M1bYaCTkH?m94zdbrm31L5!H)l~1L>$x;|}L&e~;C5ucI^=%)r4zt>xsi#OE_BeU;B{L>?Zl+ivB(AruHF@7snDh&knyR0W0MLhwOT z1C@dFjM-FIDVKGXN6#rA&1BOa=-qV*RZ_D<+X;DxYBmsxlCZgK9je|(hiuVFV(+E1O%JaPRTG=IjD{=OZmyMDeG#eOv>Tfp+r)`P3x8)wTxY6EI z#h@mOrgF`jZBUU2%fqP0L_>0ohWPK1zn~%6_EWwDiIzPbxr3b^Bj;gFX((K&ME9w2or)*LCJ5AHjJpBu|A4tPaq!p8f2o}7fgPKV#}j481D)Vc7q$r zO}bLG?X&ON{?_M-XR8WI&5+cD+1ZTKUFPMyATO)NY;MgC7tuU~#WZzr!*;V~5QYt zR8pWj-5F~pc2FlXR-$OC>iNqzAu&|>gC&s^N&aMrKORqB-&*cR^PoPWQjdR1YTEby zbewW@>G#t6MILR)M?WySj*f=GuY^WXD8Jay6>e%^u%_eKlb+pnP4t5$vm46SgmuHH zQ8K%=TwRgNA2qN;1xxPKlkq=q0JHH`_~})4V#OG1`@Ra5P3z9V=SntdhQky@V`SqP z+j(xAZO4v*GNizbtLe7}!;TY-ZLZsNB^a4qRMALBH&oidcMOeUN;h=c7zu6bw%Jxp z2(xbc>^&q2=_9fOzXqUfZph3ZV5$ZmtjMcDo4?)aU&!*{Gk(O)b}VihcyN$}m8!)^ zMk=4x+#(R8?LJXKSIj`8;n;b~nXJ%RXn0n?;U+acM#fk&&Y%`F*fGAZA}A*( z#!WwM$lj}_o{`oYc+84G!G6b;&#t;(S9v~?F<#Vd#H(IbkLhhHD1>;gYzr^F&Q9*= zk=4o&WDTc7qsTe^^cV^OUb(B&oB$6bz`=DDr76VA_vq^4wrc_C0#cu@EC-39NAiiO ze71*vB;aSKNq*WFqKOQy z<`gIwUL%wXZzYsVK|hoWkFzU2yv?CIbOk)`#*iny5|>gfZnW1>taHzvdNHK5JL_!s zV>gxU72F*H-aw$Co%GLB7DD5RxnuSoVe%qm3npcKY zPe`Rh>Y|XkIHazII?TrQ38=X?oUE z4mH^Z?U0#5X!}IZD@NFRF$>;bZC1wRIQEUekd2-V^A)<{n;6JX*n3`XzOkvRJ9G| zOep7LL&$q~$opK#`%=jJaY!A+4!WzY1yC-$W+)flK*)P%$oo{tyEEiH0yW>J<-1UG zZ2Ep0+HQr?9(1wU0i_-4VsjwX;%a6B;OcS;l*{D|sH1EsbD;Q-kNJSB!9FNo;-T$j zP%e~@LDg8lpA2n34dwja4dwiP18Tet`9~r3(~$Z&d;LzbZw;yYp)}SPn}?v-T7`NP z%GK{5LU(@)seS1B+1SM0o1vVK!=RjxsZcI0{ZKCFYoU(9N2R$OiW5ipy#~tpxC5%p z^1ceSpQXMX+CB^AdWOG19cpdI;M~Pg4(0q-hSXc2PPgtRLLCWJX{JFrzb8RCzfB=E z2t^^0s!dR?#IJzjKfJ2}oy#jWH$u5Ie-`R=%exEeXsAl_ERy%#2 za=vgjxw={>9UUin4*)|4=StKja!vFO06J~l=oWwv=QxV$|BtqAw11m#=)UZZw`@k4 z$&uRtWHY+x2wCJ9dk0a{v8)^JB*@+kK$n3p-439XRet-9Rawv4fswIpOv0agR9QOC z#O70{&73+##qT+Ct$Lama-5r)vy?993&Os)IX~oBH`A(TcEmVSs;`f8rrr|cOq+6h zoHJERgGdUeO`rZmj5BlEiBwj^&GhP7eKF3IYAxBKZl+Ax66Z{PG|ri+Sw+;>)M^#2 z<3w*;khG01(tQh`hx*l;%jpFIb51~jsuy%#?O*rDaR%}@mxP=uddzsxF)A2kT7v~)GB~51nj#jr3j=muinjrR{gdF2j_-x1t-01wa zGXV#!S8IyHTpR}Hda~#^34h<)qX>M~O*L*BsfaA67EUIIvlz~!Ih^z1Je9*)1xN3m zv*DnXWILHGhcnYw@iEK!5S%SE9&yydIiCP$TMp+AIOih=SvL>BsiAkyavql(dciE` z7jT>j%ID8{oDx_4I1AkDo5Pu?dm|xnlvZDSbFz zqs7?;I%bK8)>R^2*7{s2vBz~{YzS7vq9)PQGB+_-3QNtp=5|S2f2w9CH4?Jx&?s_` zssvpG=O3H>+q#%-D4)(#;3~Y@=Gfz>RYlD!-X(P0j48)i54uaJ(%vQX<>{OSb%M%x zoPU?lbk{|A7eIl#gtjrE>%d)$hFpx!Pt*)^m(V9PEs7ZHE;4(N)uhMN(sE5kcLYV| z3$j)3`z9?{BBn-n4#n;gYNV5xQf17>!=1x(fhyf46mv)SW)3}ybsj$%^#oNFxQpGL zv>pEOxH{{(NwM&>qj3Rl?(^={AruO4J`sHnHwS2eiJ_A(7~YBS>v8iQ z?@ql{q416%ygP97xE4s5;nJt#IG73RJWX0L!=>*)!aEZ;X+NbLE`1t_{{uG%s4K<{ zm%gQhHwQN#QzwoYE`6tC_cU&foo1a4o4!eeHy1a($g)hBz5;he-GG~$y*s=OdsozF zadT(P9Zlyo-4*pg;%PNS_`c!YMb|`zId2U;N$^`B6Ph2WJ&7cU{1xVviIxfrjQa6}yx+l}v4*`TMvkc`Q^5 zm-v`gvn80-JC4?a@({0w4U~`a^$t*biSGoD05kkox3>{&051ktfP>)GAhBic2QLL5 z2Hy>S3naeGpTWyO&CNH1Dzo>2aru8Id}WTjS);wT{dm&z3;d44es)a$<>^(4hjcSn>T%*|g&j#|~>(dXW|W1Gfz++J9=rkMXYV_^5qy+q;>r93ycsMe{!fD3O=Ry&n*iR*^V#5Spz4se zoF^Ari>cZqmohEXn|8QVeUb}>7r%Q%e&j|nzO0~J=n`%<&!|A)Aut7+=NqZ366`1N zbG6C^+tDjVqyi_BxKxX9z zDdUuxjYTh&b44kl2Yiq7YX7QyBny@ND06G>pzKv(;TnXL}J_>#Xlq`^q%>Kmx5U8~{{Y7RL_;qkL_)V|| zr2ojM{=N;y`-%$qk_X9vjAViaXP+e#^h4}VpE@20jr_>XDDayaWUMI)?=qJ(1Tq%b zdPEvj;;MZWulv?cPQ7*_qOJlZ9#jdk5h?rYVFpI&P}wVSDj%7}pk5v*aF4Y*m8aCUpt!zk{px+ug!~XKOE=`V@tribVy#jxoky-t^&5G< z9EU4d68CZcP8Ta)tF9SSwEhTgnitJIy>{Nb*Qt4}6nq>(T(B@<1IyLKmWJ;8v28$e zcEQ}*=9WamqIu{wpVe4r(=MN#JqhK>J|99M2kP0C_&twwHU5-3Sa4fwsZ0xRcrJ$%r?R>iwv zxrX9+uU9=>@wTXXduBMPc$F&R5}M7b5_>N|0-b8^G_ayIfeyaD(W%I*nhr%^qKf2d zUtz5`w=8O^J+&@TKcD8GFA?JJO8Hzu8ZVh6;ax%;F(FFKT_nZz7F|HWRR%5G$iT2r zGQNuBwOTc36^YtwAT~BPvYvw?IF}$WB$bRGR@Ge!)@mEAP8nN4Ywo{0n(xZRCL&Hm zL|!GQkuT7O4|=9}$=Oav^F*&EuXr^qSq*e6^cn`01E$Tc%ELzV`c>-H($pnkgk-g6b z{`9eTbszq_gBHB`s~7LF<)V2^l)i4=ACsp`FAdC!qQQ#`F9gsV)^-Z3g{e9MN$5p1$&JaKmX2xM$6B?v)~HL|Iee(c=_5tj#+o=B~LxJ z@i*zQysxtS{JRFq5c7(n{JRGJK)LDs$ZlzZ?@~iP(4GEAD7L@iZ3eqcX{d<3JNF{& zGNd5SuToz;e%C^3YP!9zvu`)G&7;19%N9~oJNr74%Xc$`-O5u|U!7vw#Z3ZsHet8_ zUh{ndui~bOT_*k2T&Yl~6#v&?O zA-pkRD7a&GW7dc~y*D^YA;?ba|@Go)8eP)Z7fO-iG`sPnDX#h3-Z%Dmi!i zc?#|Kkar7Ioeg=rr%1D>N=+{#mu$;S%2TCACp;bRhLCq($a^5q4piZ$VEiVpkjHvKbshJ0*eep6g-&3XLlcBrYLU;ci@_rQZ zDjB;^v3~dS6gM6~ooZvNqKZY8nTejFjzZp*A@51fi4?KRj#My)w~}pXX=i&**4;_O+p+th5?VHtyl_!pSaO5n3r_xz2~|SJT)Jgo zk7vJz9cnW#r;n1xgwwUK9;_k)-2=)5qZ(JCv{w*KDlyI~Yvnhgi|T#O18Sb~&DW%?kgzd0AH=TJnp9HiqL>VgGDgc{?Ks4z7; zCt*=-uCJ&F)IP#IRt|2cd^vrd6rBbpQDa_-HB70i6ZB(Nm7)R~=y4qQ{G_NZO;Dab zd8%J@NJ91316`^E&tuSw2^1Cc^rM`5RG^L*(U01`swl3agTjzVpiSG^l?~>iWiYA4wMdF`c2X~+?l85L|x?QaJll&Q&01H z|A$PL-$C@UvF|pvSv&ww2MnHva~j&eokO^^Fh6 znO99ho33Q9OCN;cbdqhs2X_ca?{Tm9-i+nyhV2yg4qw=ojuv*s(GA-MpDmI$FIvWd zlvR$_wFTQy?sB27d)w;?=J~r(aSr67e00OMz3v-7_?OZF6dKX0-u4hV-{V`iE;u zM7#b%&CN#RqmZ)icFBp=BeU+PjvQrNWl}?av7HRmKvh~L1x+<7?IlW@BorIjIBFr( z$^0tqW$BKmCgi9TlrmIoKUXu~x*H5_-y2fbgp?%A`Ta~t-5F9UJ7-HBd+K{3^(53@ z{EE%5`TI70mF9Q+bvfD&Rcm=FU6&TUBzCrkLe*H?W1w7q^)lVX)(}#OkXix7h8wZ< zLAlsAhPGUT?EUI!uU?uLo9m%myq^he?+&T^p?FDwyKg|b@SY8ArG)0v!V5%S;%|a- zJWa(NrB6P&`ZylSYQf$5nr72>uc>zj$!^P$= zP{%`6nkuH^Z?wE4p&YLTs?ze#4SC&A64_$2Cgi;b%EhYlVLf&m5?*XXk*6$-B z?}s6EEF$kxD&co2)xoGYSsyn-&4#Kpk3q3zObT@QnByIZkh^%>q2^e3T~Mz4u7q+S z-w5SG{(MM%DRlSMkdk7R^YK(jJqP9dZVTPL6jCI|$EHPti&sinE|du&rR&d}t(Ffi z&GcBjVb=u$WXP!X6&q16@tepmFbXSb^eUX*W(BBn)T3-mCz>=dwWvN{zYeS46HhI;mTk?o|TRuKMQybt>@E0rL7*6 zWKZQcRxiITRc4lYs#G89vt?6e{=-wHI$+@4eJyln`~R4F{pPw#`g^7;3}F@M=elbp zp1}{3P^pFcS&sB`b9Cm9#>ENzD(xz9zNIMjysBw{r)($-GO8Li9l2H2e3@VTi+J)Q zH)`4+5n)YHBGu!+GOv12p!r7ipz|lPt)ej`<_s)fp6sVxxYK(_(2058T>Hj6IIOb2 z9G}wL&vJ?8?v63&J!qn~e}z6AZ9@%Cuq2w2DL&{y=cEtO*{?vU1OlVK29A(m6Wb7*Cbz=7c5ECa*-( zI(B8j(EKrrhq4p({rp-cyP{B+A>pdDBB(SKTfIi*$PI&zDpb2lxr~MenfQ54&dH$Z zmU{+8eiWACoESE|qQsizu67e$_D~YGp^R5PYATpAzfTO6IKRzn+f zV}~Z&&lfX;cGr=x5{lkOGKtt-ide1ok)c8y$V#Hjb?gAWzg#-WfruP6j4r6M3w5>DYo5lORc9$ z^*u??llFsiS9r)}T(v`PcF*G(LVbk+_efl*3#qhQ(@qqWnV0xY7T^!8WGkM`3~83$3bv`rNe05zfyPnDo0gSpmG@)rBM}F%umfi=H$_C zP@MxF!1G*i8aNM>K-7WC(p`u)cisE8iZ(C+}&KwVxHO$CttnTSF`}Fry zh?XjohWD)59fjz8_2)t=Oiuh2vLr{HyIb$*Da%o3sV5l}t0O8;^d%@81}dj*f9iSC zIx?s&Pp_U)ZQGl5<2h5OABck-&J5LQlr#N!b!a)9S+~SE$5r1I=S+Dp#yNhPCPvY4 zj-Re(>NruwC`r)hBB^AZ3uWGSajk&EvJvGewu^A1H3C7Hj;8A`P+8z6qKKs?F}i3w zf8|OcBH_PB?7|U|_6s0+zq-8mL@XB7Gp5=T5 zP7M{3<=g}(H}*U8I1l7-0#)nZ;!UkGt7?6mjXlemGPTOa<=oj1!P-$y@lj&_q_bM2 zzVxYW8SBPgfaFu)k71)l9GtP%ofF})>clR07rf?l zBGINVWbiqe#PWfjb~JLGa&>!GuT|HzPYJ^9=p-#kl~kuokDYSdRNkD1 z<`s3Pr_7jooOLbT>2X$fdJR3frYACmbfGhp@HDPewgR)i65I zhu~(P3D%h%bcWN3J_k3qcz2_Q32z<|-77Z}U3eON3We7Xe=2Tn^6u0D6-u85_(yP4 zsnHjsLD7a+Ku7p&+??m#DZe!p)it5gy*y(S&q~~M#oQqxuSrMveT3IILOQ~Y{k`kf zzkc=Lyv2<#Vw-oBfo>nu+E!(u)omZYqhjBslponkB$sNrXH8MM6Q$nxhOXQ>qm_-+ znKY#AgV#ih+-s$&>6%O>+(MhWim!x9i|!Ng@*<VFjS&{x-V;Vy7fTeP}9#;s>^QbX|gF@?UlW$wAI(vM#1H56x>O- z)-%v0MMR3WZ2VSu^4Ljk%f>(LpU@fxOPZs3`hc$p7_>|$r`1Y5v+!B+71;5ne=m_?V>e_ak9Nn9&H zoyS`VE(BMBt>9`-AMUPa4EPETnSzbUI-3?8^KG!LGaz+he4JMnQOuKgExYg zgQ})0!3V*sz=y!A!JmRGA2L4&KLV;8wjk2Mms3Z_zL2`FabHv&m^STg{Ua3AIuC+3g$^#bH{+|0T^u|xKj3(oDvUUe^EdH~Fn6GEZTo8V~o*{EA`1yK|-?#jHy+_@KUg#Uh zD=j}?pYT@8&(|k>-tzPH36Ei3R!FaMt>x$IRqDuCMbV#%$F14+hxc6lksHqH{n7)= znON!oSw+z;Yu8*j`l(OseduFfo;;~_!e5v(Grz7VT6Fg<3xD?Vrx*PG)(>4>dfQ>w zvHxND`TB}qwfua2#W&FX6#7>48J3@~4|$bypQq3H2g-S$V*c!o4q#kS>R(k~kNwcy zRQ=ke8eO2(7;KtmKPdc)dYAE%`uA6)V_%W}`+li-7iyYR9UD@+_r>R3N{0rvk(9Ev zuOh&F@ful;#og%)c3C*DRRi_aD{t;H89@uq>hQj9MaU`B0;NNABd6Q1Nl%$Ja$jzK z-5Q&(Uul##Y+gZ=VL|&7+HsR!<+=N~yVBmuv-^IuDEIwnQKhDuQPuILd#coEx7+dR zLtX}IiVfuvPnDTRJ;k?}89Ps~A+t+rDZWe%#Xb|U=>}v`rAA*K(TnghqnCuDN=*&a zNtQRyQ>A7Rln$1cnPyLwn)9GECn+<_JXLDCp=vDe0#B8ii=edERi+bt{w&WB6nkLs z-tVbW^C2kq$KZX$Q|N*+b}N@<=2M>HIBv-MTF84WguI<0&oG)R{;5^wz79}_XX+n5$ z{OV&^xJZXu9}6_wo*)&E2b!2wxVGO*J$`V*6XqRLhFYJn33+0u?uo`#D|7O(sqXQ? z4Ue0Fa!Tqtw!@#*p7pb}PzumGMVE5SGs^qmgFA;F8>+i})2N|_E2VW=cl9PdLD_Ka zrqjxY>aO23r(&q#3G(tdDJ;o;VX{h`RjHh4AFi`CvAOQ{Ad7r$@b$(;%W=-({zKbWvLrDs zFn>7p**d~_xK8~tDzv2Rpv?`JxTF{5CH?s)SB>7>`gGGu3175?_%7Jfd7uAFoX0uW zY2UJyvGKtSULqfEyL>FqGSP1VDxGw7*658)KQAS&_?QyZM9Z52rO=D*Wt@)J2~Vf7icJsHvDV#{P&$28Y_5Yk((=9sb+o0P zg4)a4{t8NcQ>EDfrD3+x9LoT7l%+HTR#_- zGL;{>kvP;dM|GwsJh}9*q$KnriBlB@MrqgHm9}6c>@ruP`J?=N7(4*H20RY@2q-rn z1(nxpL6wt4!Bw>=SJk3Q?e_#7PaAWN=c=`U9z#JLlcAEquaDx>pG~3C_Aay->UQcp zd) zen)H1)taL4j9cC@c17$=^cefds;dmAuAqKWCQw&^l#B#ySt&n~5hZhy7?_WunV>xK zMZAm#r0YTD_Xbchp|<8^LX?vUQKhzo9q-THT`4<>&PSQ4^i;Nsl;lY|o#8A1Pk+Bd z?>d8aL=c(9-8%FhIhw9g8eOEbXEHnAf7TXD*n{X(j+>!Hnk~uEo^yP)WXt*rI8)Ay zbEaPs=Nxx?oHJufj5D+PnK)<4jyPwUrU@?g=(#w=oLuN+oND~!J*K@Iz(n1sR$l37 zx@J|mN7IXq!j6Wc{`QrQrtfLp=p>wc%ar7WBbgapBxzNC_H4hmOJ_`oD{@p`6C!uS zT`7|(4MUVKne0Jg^%a3pNKT*Mp&(Ag&MQac;`v+?U6BG>`N198U19F2@YwdY;E>eoC{;muBzI1f20jan7VX zj_wuD^>tbf#~sF=I`fZ2qT1##cKyPsYB)6%l{mB=IO+@LM>$ipQ}R%h!-w9u>pX{} zeT#c?I8))=k;BnM@s=Ep#)|86IO>z2MGohi9_0!__OD!S?T1gCp6^UCCr$&2)}N za|d2Bo#6bl?H+^Yz5)B3G6@}4U=t(V+uqw{uP9EYQjI!@7Ck=AQ3ftZ&f(aD*V!*+ zIg*$+I~w$xlY&USl|o9Q$I{{?<14 zPsZeb32XadoZKU<6&dIDKM1gDm{Z@syxf@I@{>`#g-%s(hyN$sJpTc?((H%y4f7?e zDOYgXkDm-hSui|}bywi#2fm9}zgH-{e)uIuot_mY7_7!ZPde3_Drf4WG14#BOk zQS)hQio#?joUV;lkP135!6?J?KkMN1D;kIV6zS_M-NErNVLAi)B0v(mgj!4=S0e}$CZRmFnOT4o2x4_W0Q+Hcx zb;9-``@_8hu1Y$Rmc+88J@TyGyaB8@@?5Qh*1=ik$6X}mD|9JN+utsYwt2Qd^(JSe z(mX8&22HMvVk!l-ye&b(y}^sXO7MN4j^?Xv>PY@a!TrHcgKq{O0uKZq z0S^Md3s!;8f`@>A1t)?guBWeN) zJTU(Yq&=<(pl3wTDgrR)uwtgo_Mb0wdk;>{6iAZ6oqc3&;T^Af?Sd+7%}Jz{BtY{61ZDBauF+0JIH6Z@S=>c9Y+YifPZ;6x2061F|Izt!`JYuEY$aa91t zqFrz$*zQwDbpw75^K_&Iql{gjA9;e=mu*{7ZyRyH53^{Db|~J1w`eyIG{v7;7kp}m zh8Cy|XvaA)k}0)AZBI#NWi}LD?*{oq=ViF!t3@fF}*;0M7kgI9qMf*%6E4qgNP2t+S6vlaX(IGQxw08R&Q0#5*M z25Uj4@)?yJssx!PkT#iV2X6=83w|0T4)YoC!{BGZ>%q@~{{_-^GY^4xf!_qb06qqC z$64mb;D3TTZuTXRzQiyNW#}ukV94lYHeqBYfoQ~Lq}uZ!cq@qC%oo5X!2bfD1f@Rk zGw@g7Q=s%#vJSe6X5`^eo&h_DSc-jo?3Ew65tbF|k65_0 zue6(WRX8hP(9C*0sz|RigsKxz2dhThZk2>|U5i?uRT9d6!|sc)v0c(-*2+w~9wJVstYsli2kRAc?$&WHLm^+}qTsqc_e_j8|>eAGF!e^sVx zk92qT1~4&E?aZjW8$fNzE&|mK8$qSM32XxSJalF`*a|AMXMjrdS)j&ARAe$Yfaidp z1Q}~Gp8^x0+U5D+17HWJq%Q}53ZhDr`5V{??m_xigJVGsTVxId)1cbt0C+sO28_#@ z+QUS`2*y3h+2K3`R?g^a^2R;+ksIOIVdTtCQ#8v{;04UzS<)mm%94a(+4?lP0TK@l zU<2eVA|9HSY5ed)s7J}9B(#4`j^NPx?Okw$q0lw>6_&{paN&1L6`UkYvo}OME{pZJ zyo6vea;f1d;xZ6LJ4ajRoLRRjcgf-;eqEk_Ep@9pxeh!AydJCtZvYp9H-fF;&0qq& z1x$gcRb@7Uw}V%Lp8;XM_zCd8!8^bofLp*Hf{%hf z0`(sECm{X0c@osvK);^(E%-B#ayO`lSyi=PfI9m0OK=AGYmj-O*$UD=4gG#b$CkE% zec%gVyv=A#Mm|ELHluA=@wC3%#BXM7t|&ipGn3yN3bh&Aw>9#mMKzje=y(VWjV9Wa zFP$*d=zN*`)@_VbJvfs(Hc;B@dE;0$mh zs64Pv$Sapw@Rjl)_3?7~ICgJ~m5cl+-sAY~xvO$%P9|5k^u9vrs7Kd`sb;UQRz^!p zJ@>)-Vv8M0V~ow^{I z_;@}A`?$==kH#0_UWLjg+<27CR4Lee^SV3QTm@lGnahc#lj79!(oS-NepL*uH|0p_ z{mg#WQOd4jC7#NDb``5WFR}`VR@PPcKHX(T>uYtkS~#yw*>NQ%+m}0s_OHrH^`+As zmw5i|+)<@+{4}U>nyqm=PBS;N(-UHqbegkCgmU#-~$YJIe zAUDcp4kfDG4;+KBPU9?CM>uOu$HGp7PExZU-MXnZ@HOYe{#80urs{9*_5A0@ zxHhmAd<#52bdgc8+d#FM7r>LjKY*>^c5nsw64(j;5!4#wPvA!I&){X?U%?x}ouKv# zIB}Hu0$9Xr*zbU&z#oBofWHKb!QX;o!9Rg}f;+)+pvvtHV7xBgPGi0aH$j1Ykmu-H zpRq7+&Lcl>#gDLc9|&tAburMlqMv23?VuERVALIX^RK$I6>Eq3(y1={bY^WTu|f;* zXzSca$t`l$>T%UNXVE&_)9dVo0bM-X2^9MR+5oUyWY@yHeSbCK#OmaF>n;Q9BK+~K zsl>`Q4g@N&G|U0Q?r+bXelZYhp(Z1_U5PVo7xd*MtRLIUafne^9o|v0x66umG!Nql zOS(he>G=_-QD=kL-|d{~mc6AubxN+iO~AF9VBO%Z4A9zFCb%MCZS48s*z+AO#pdml zg{~Ml%f%NyUm1Ho&11b7lS1fC4u2G)T853B|62J1jo`vS0tyqpG(1y2Xd!G+))un}Y(Wfp^NU=zqX z$t(dGr_Gt5B;y?LA#f@99q?Rm2Y5cHlXo4U*7`|s61W1CnCK$QUT`&d5!emh3ig1K zk3Nv`z+3?8fO!i16PN~zsjmUB1Y8SNgX_Q(zze|>!Hd9Cz;}X+z>VNppsrS31rCDx zPVXgP3Vb(s3HTmx2pj^h1UG}92HywX4PF603Vs;WwI^4D^xftfFy1d-Lp`dy()cbj zA32I14bqx(cI*lm`B8VMzPqJRzsP-7?QN;#^3I+P+c!q~!>|L!FQZg2c~i4iuc2op zMbCs{pY2Qoo@N=c*YG9#e!IfUZXle68;LnayKq|4>3(X030tjgY0imlsoAk_o#zUa zKeZ(#q>G=-4;hn`)yKgD!5@K&>?fd3RXzb~^1=t9Y+L#nsI}Hp;6>oi!ArqkfbRyM z233B)0^@a3jtr^DlyMo&8#T28?7ZPOU`?z}^QsoxN?4lIvmDm8s%mBcmR+PL`jZz7Bva{Rhg}b= za_u;>#&&adUJ~6SRX$ZWC-MvSNNK|vMKKzrJ2iWNhk%@=wR7_la5m4SU_D3}nHF#y z*bcq{)F{GdGcy;072rF;@!&?V61)oB5BwNd1%3&f0Dc9W2tEQH27VXh%Lew7=tqM; z=XnzNJa`PKx;_^C8#o2jx_K(7`POvsFmMK_{*pc@GY^~%t^!X2F96>Lt^sR6_I1r1 zko{VFU+aw^CxSEVv)cPw^-kneo*x1ifWHDy1OEt~4ytSyfrlVBjiAPqCXjtC(+r*m zE&;p1Gr%5@vC6KK&jHu)d>+W!(VP!%2A6?Xf$iW;Urh4i1l%+ME$>ezZRKm&&4-@>>PX+`;arYyg$;cY^al1jNq6 zHiAod9t6(?F9EeSd>42t_#W^c@crO6@B?5m@$nTDyXVVX(O&s<6&PZT(U1`-8gJ6BxC)__GIUp17FC}Qg(30SaI+}mg0{YO^{`kbUj4vYj!vLk`&OeL86 zv~}gIQ+`NyFle1xw~ux2(0UQsOQxtoHhk%u! z_LTMkwST@psCTLdfjaPXFxUW209S&Cf*ZiY!9nmS@LKR_Q2XY`fVY5?LEgKXYEbil zso)pEY2bf>)4}_}<3O!Xj|aaE&IG>?&IW%EvR29P-qV}}{t2uFE0B#j;G4jC;DKNr zsCmSx;9J23Am=vBX&~n{%<159U_Ce+TnK6%$J!@zD%b=r1zSPM-kIRrLDod}%D8ht zt?QP8?6;cpz$?J>!E3-a@MB;*sCh>cybW9q-T|%zb=620$U6Yj4Q>T##hDjD8c^m> zU_bajAXC=N804BRBeN&C7GzFn)`QFi&4u7W;5$Ic|3;8GnzqpHsK@e_hc zoCHZUSWv7ZprR~hg#=tOBm<;o8L}WMI)o&Uup}{=Ahe=`ftDCkao?z7wf$&oD{ZMu zixw>kD%Pd6A8oOv7F%d&ixyjK>F57>-gEAqJ9j25F8%fU{yi{xpZngkpZ6^HEboCE z^%&@Xfo=fBJN0c)@YF`o=Rv;*iti!yI4Hh%6uv#fzX5#;^gYl`pb4nYPlIAELOlbD zxdrtsDCQ2-k3ca;pk4s21l^u4^1|zrXDMCo?^Od zE|qR*hka@J5d0D27%SD+EvoNagt=7d$)?Memg?ru>Ipq7B+H$lj*nLBTZsF$Xq(Mz zWTu-Pf;E=m47S~v^Am?w+o5|?29z92gz>Wsj^z6*8P9$GA>{r==a?ZeB8sQ*=V+D>W+w1Mw3VIG-L{KO_Ttz0YrSV!l zL~wSx=tL9;jWD#k6Lvd+ZAs&HL927e{HxwS73`pNvy61-n&Ym6cHI?~#Lm|+Cf znbLf2n4UZRoa^}^*E7F;o%XrbOJfZ~SpU3+M?PhDC#VmJ>Idbz50qn&KZ2eO z`e)EWP>jo^-l2b&vHV{^IrcaR+5mb8bP?$LpsPVKe;Qs3`cKgBf?_^E<`h(d9%Cec zattv5^li{YP{ctE1m#>SezNZ)1=Ne@6G6`b^?;56O$Fup;z^*@pqZe{KyivX{2(ai z9l~2cF<%@01L!bN_VH(c{vGs8Q1p{nX z-VZt+lzlGdfx}OMW`RBfia3QSHo2hed$CtV`qq5VPowZBfSwCF5%fIJNuZNJF&`rP zudvn@rYseKVxEF0z{8k7P$i%ppwmF{9YlpG;b%ZE1*K3`f?}MfW`MpAS_OJG%DDz~ z4k%x!qe=0d+RtD!#0^ShAoG}xx2B?zK>Oh(Aa;Qp~S~@LQUF@qU zE3NPcE2~QURizcvf~6HT{;D!xvA;x(f}@AfVkfAYK(N?XRyM^~d}%OHRa#k9T61}@ zqOz*oSEkN3wxBRLo~_b~nZB~p5_D*TGWdb0&7!)FP*ApR;F~Qi<6$-nVwzhty9237 z%fM*T7_rMmF7zXiMPKZ@qy<5rXWAyo}iTVp-4 z4c(8@_y+y^_= zmBp9(N=h{2WOzdTkD^|fzH%wDdb%%ITr&&vJRg?=;xzcg-N?adwUC0-@N^60u)Mac zrnJ~sT@x&?Eb#|xE)V$81*T*?h<6Zyx`qa>Tcl*1g-Bjo-&EI*lu}vg)ksCaN(N+g z0y_SbjO)N{ZVN8%Fv+KePrAGeQZ3%xjHQl1aU?TF;w5#ciayX!!#1l;u(sM?74#L? zl+L7h2dezl{)%Ehy84uilbM;KEtC1(3ENSTI2Ftlh(uZ7vT9%DOje*k05yo&cqOBJ zZ2F0*tdzx46(|l?*Z68`tEG4uTt{pDLgq>kI(D(SLEDoEG5SA2`hw2t=dYMqT2)yQ zoS7@KFan-dmtKL4#+tG&+3Ceqmj`N~#e1guS1K)L)SqNd@dDHM>SvFr0kgnSALuxsWk|4Gb9Nss!x3{#S*jQJu!SiLs(|uLaHgrSSf{rQ~U*_l!Yu*upeS|4)V$+Tv$}Ms8J^NgKeF27d6+bqgr4KwG8nLlm>$3)l*B$(4k8> zFC&H3#gzen5G^sY@h=Dm@BJ7}#nlULbt7!nOgF-=rxs%b=`~nMwizJ^Fg0|Lh^Dek zE2L%^Z2P6@KLZbJr{V|A12;(yG*)O<`Nw$=yyp>b*R0wUdtr>Lf^{Dz;rtGD>Eqi%lH_-Y2_5F!}&K< zuN+R$he6X5V$~T>K~mzW1MU%iteRuYoxpyqnr3`^fgh`;nRB@539;&lR|`K@J@M

j+Q_C13itB$!C-$&^QvFeYpP6httL$8i|dH(O;ekN;Na^4-EgLLpa3;7nK z7MW8N=?Sswr15R6)+XW4v1mwjYH7u$vG&G>*>kbCB-GLHap;ZxuqswfOt814Zc+36 zmSc>HGc8oo`ma{~><+)V<=;%>twYu9C$4__2#UI_P2?Zuvk(f@j zvgV`ba(0%L>WKGQA6ebA?U!AMvj2v2Z&cZQqT-BLstOw9QQX<}nDAN*@+i*Ka>gu`=YIux6h{f)5Z=uO zdDPuNUl-o}20=3+(AR|bRf9Y{b#LO#d2Xh|!&5zmx60MH zOMo~>p2`(hK_0HHs_zJ|+aM3uP1U!BhZR#n9`&6QbnH{r;|6)uKAZPPo0o?1h)!F& zLAZk6=8cZw3)JnEZ3n$=8|W$F?K8-u#$yVWF-TQ826@zFHt$NC*KPB9ZQe$k_oU6c8MCje;a{@a zX;7-#WspaGDpl4T5!&endDJ;T&q)l)X00s5ivrW*t`;y}*`ui7Aw zdJc#&NL4QwGOEWD(xhVQdPP^9#v!WX4$;3 z&0A^nb^_gmSS71b*wjUoszw{+Q8(JW&)d95ZQcf(cMzyYd?~_gG*PN5G01~$6tZ#) z-b#Z!>K33E#NO=&dDH_yTZH#zgCJ`_KN8-z4f3c9FdElkZ-LFb)#lx4^PaSMn{3`*o44QQ9kO|c zZC(oI2Xwe;26@y_n>XC%jkbAXZC-)RyU^xMw|QkYZ;s7tuzB|k#ZD6BL9*IoP^#K% zkVmy*E`o1URfj}bq1lG1bS6`-fR%AJvd#v zNL6J9fp-RWxQH)z7?i5+G03BK*}UC0FB1#44~UC72BoS7gFI?I&>Ir&qXv1@6F@%^ z-VY4&s26~C2=66>JnE-FKNa534f3cxKtB`SUV}X9FF>yg?{5Zq)POT_dQf;t2B94X zdO&zr8st&CZQdT6x74fDgRqyZwiuMEwi)D6DQ7|N1>UBrG=oqZfqp5x(+xsx1llFM z^9@361bS0=g$AKE0{u#O(+xsx1p2w~E;9(V5oo9I<{5)YR0`!*frW)i?Gk|_8yjp`iY7WpI;WZe9dIa>g z@H!0gsOy1#BfJ|8@~B>*-NL)oAdk8S=-0wqYmi4>b-oq9I)gCwv3ZZ%yfUW3hRvUwq!x76mXw0Wy--W@jY9-H^5&D&t}c8r74H>5XN zdB)QTN)sFWJ1!HgAi~d*uS|re_JhZjeX)4k%xEe=x|S{s(A+@CIaQe&jg#@%Z~m z*^L*kocsd6Z>leUoWC$TZ(QEQ65qJO{9@m@;(Xtftdin_{3+Sl5Fv+LTF0t!qN?NU zj;MED^Ue#cdkx-}){wWpb#dFG#!#d8>_wgScV4c<_z^%{wlJLn~x<0(Ts%wQyMBRt2JOoV?t{vMBAE>0mWt=>g- z?eiPG^IF@zcJ_Gn{*XxCV7H9DP1KnuLC5x}W8#|}`vlW<0k2FtPXEvDz=ck@uL;gn zQz+C%dOUeK&5w(sIz&j_cSPats6iehgOegTJjfG~(MewOevqfKy?K6f3nMe>f(yh#$`IT(d?N}{|7;w$FJ5knU zR>*e;Z&7PU<8hV4Cl$}*@z)*y$g@`ccEo3{A|I#heYm(GE+(v~_(UH`{0p5ch}iyC-tR*ls?(;NOGa+xYzszu)7SYg5_))OWty z%RgOPc#l=r($Q-0$_o?dd=uV-tjB{|u{@1R1+F_0fIC;O$K6zE`vAI@r>oG(jvL1Y zCi*vZ`#1H}ZmMcJ-5o-=e_Pk`ZO}!qk6TWA4i0|8pJr~pGM81&>-KM0Frc@51Fr4b zR%OLZLirRgBzuandHpwu<=d?5uu^()>sYUUQ=k{Tp4#M?%IQ0 z`!jpC<9f303|wN??ZXvXySit<-tKN+T2Jks?isk=ig%bDfDb7>11#5Ga+1-ln(|`am#1_s8>>Pi>DiRAfhH>Wiq7itl&!w8^Z^&Ssiq5E@6(TX(^l7( zSV!Q>X4mpPsBFK1i>>~3_zP*;(^a5C7xk3y>B70LP##1xB8&rj4&X)4 zjDePisA@ZVOR@&y#yPrpHU-(*_XFHECztE(b-*)9gTDO01*Ydq`zn;#4zrlvw z{+HE_(ENM5{p;vkp$e5C_%5t+geD_mJ<|swF^rBBOHcW_G39#^)|l6Ex!yV}?=lnp z>x>6FIvaax*S#VxCC5$j|DPEP18SWJ9Dc^6EQJ&mAxLb8jlDh|yrH;D?o8FAg z9^Q`V$R4((`=%lm63tT)%^6Lvs_=eMy@Z!RfcGbag`y2me&{VkGZ~Ze^t}F?l?fA!BTza8yRh4 z!Mdx^)+y5Hz%Eks0j~N(tJiecWsz;+5gVWtTUhPmwL$dOYF~I@$HJQ(n8$b1nIAB# zfvtARYG*{ZI+1ZGN!lIh|Gd(^Kz_RYdmzf){{3v={ReSPmE5k$;{!-n6IDh; zC*JDZxFojKe}JKPUBtgCG^}S3DP{ho9?W?|@CNiuM|C>Twfukz4eF^q(BnVQmap_r2F+TwK--Mlq$BZgUL zl@||$S=gbh)GCTdd5kjUvFiv$Lf=s&T*ZxFBs}wDE=FaGI(QXp%~1KX;GX-TJ(dnF|??g?pJirS!b*l5MV{$)uCFj5yWkz^UZ&^B| z@Q_KOXAA`-z1xGN^rTEKPwS{)_Yy6IxM+2k3Z1a;yYxrI+KS)NeC=Cr`MV@T=VPKj z4UQmueWeJfXTW5CTIVHJIwn}a)SeklZyifs_MOq|-;V}59SxgHkkLU}g3R53&SL3D zkViQLIj$U2U4kXY5MF51jSOMXp3K4vosY!?@m0*FycPav&(Mp{o%dbbb#&0hF}dtRM4+T!-! zgI&uH{vkBJYx!Xg_G>d?0TO6+u_<)Y^qf0}eZFH0GQB5*5r=;qyhX;|2o}v+`N0`Y zue!XB+d)M)YlF|k5iM<;eG*kuq!_-@MS9nkfsP7>{8_R85m@GUe>O7mDJ=NJ8}FO3MblX>|Fq1G#Ykxd683_Bty*vq zM&9LLvIHq@>#7j^WrR$=Sz{Tp7F^t0yVlCd%wGQ*^vz@WeDX+|}zV^q(b z1bXbbAi=(wIvr!IKj6ha9stEn&nZ$kJ>p-S%bq)D!A_#skx$%(ub-HBCxeQ2bM)9J z*(xmDc4A^Lt(aS}qr(ROgMGtv*ybAQ{`?!fin=X16zuI~THqhb$I*gBX9G{#TiGx} zXT!iH(-#ah38W7_5-;?@hplW+TeUefsz+zBSae+C&8(8>E`ZNHRum`%I>vih`k0^S zUeyF^T~G6`3bpIJ93xEaYRtBtgEJO*dhVo+n2hUQ)gaFKSB1{&kw@*^eAD#Ooh3;o zIDU>ufQ*9)`YdOen<9-H$-yfJp`>(fj1k|p%Q3I_9IQe_#pf7l=w3x-pj}V%FDlDs zgxu512jd0OIH}(>GOi|``irDTeADUd+MCe5idDBqA~X1zjIO^=!Z=3aG5DF3uJ^s2 zUhOr%AtfJs#DVRyZ%fa?o?iNaE5z4U^^*jYwj4q)v#q|-6l5(A5%J~6Ir)7< z8)(*^;14N?gvNfRRb`I)^aenp}RUeG2=k&I?h5_*~GVg%tZ9;K<$dok_^y?%Ko1 zUin&2f%C3?3Ek!CeUJC}54&yy=3od$#}D5rd@utm6Fr0^W4oqgS5KbC$S%1;cX(rD zxQcOYdp?Joa5F%^NR$`d7=uY?msp$Dt-sRznLXuc-6{Kc=)W&hza3*Xfss+Zav*O6Tr!^|jBga5fwmX3l z=lgK{AATN2mA(XsSy~7T_8KgEJn#>+QU-F`g64t^+O7MU#s>;#!rU> zX4GIcM3I2SQ}F>|_GIY1+xHD-3Wjl#w}~l}g?8lV7;rFSGFy)?EMFZiy2VA`Jh*s> z(Mud)MWLzE75{V{x@|EM83>^jb6v`I^BeKj*iJz@Es5?M(ASA?TNJPeP_s_O7>N-D zXf%^?bOGwil9)r+Ff*e(y*t5~XsG~p2I=I=K&jQ8JS3uPONygOF!do)2KZ!<`Z25j z>3eklRP5WtxJ0tsOv!V*6q-f8GZPT@1S&OWfcYp%FRDZNhF*Lm)^6k^7yO$r z)Os4fXYl(WY&?pFdoPAaobTSk?lS6AVS9J&YZ3*=SmsdAmY(uQyD`q+&>g_n^~Ub$ zz)yAuP`x&FPfzcueGTQf9sW7W$V*PstuZO$fF8;Mqthwb%FW%*)Z=^Rl|Zk^pXA4^ zD}s>A+*eHII48m5wZD5EZR;)v-VU6?jD&d<*lLT7&PGgg+d3Gd=E0@>=5YOG-BUy1 z*35L9%4ipk%yy$Jp$IN2HEE`)==4bZA7=0(eX&yshqwBvj>IZy&O8oYwF~~)Wxk!R zU+{0i?|J-Qz;7#xb|Z>*R~5egA`??+-Y_$<@qUC?_V3B~m^1@Ww5oVD(9^YhFebM{ zNtl`KE|&?^>)_vh&kd-a`v+W4oU)vLBfCG?M>S&N_p@(t%6srLY3VC|BYwZ1++F^f z>s8lpZs;!G)U|xm^_?xfwHqP0y8=j|bC7PQuy!NXdiLD_|Lqh?h>O8-rx1!`F)nBL zPgq@`nd~3@#B1HPoB9?a%o{ozd;J?RlfP>QmX#tE#gVK2jrdUAml_i$R~979lt`{p zv8XjQZ86#!uaWM z)kDl*ON5c;!(jF#jN#;KT6Y5Hi#kt`QsUI~!KxGp)69v{T4@0*E#vx0_><J}@8?+PgSd0) zEh2?jSi^X^Ymy3;_4tSOq(JD=_;b0c2@1oaqiC%u90z_FNeef7bKlDOE7&GBrZw(&& z%yXK9&+^pQuo9c-KeRf%r~Hr<5EcQ_yWUE8_N`>=P1o|B*LR$YLP8JOQ@b~@_R!#G z2Bbc#{aBrVFFaWXKD2KS!dkH$!s_h5bUtABSY3+86}69 zA!Y-xJh88fiK*S0ySck|eYgM7uH}z@aP1Y8{q-MoR3U=7Z&X|CAMJ60$3Jsqi05x<7h zmz2T1-H3}U0uAX}zGDE_6NmQG?ve@EwlzLu^24U8?KQNBUSdP7g`Mv2cx1c`-6 zM6bucVe-IRJFqnXl@r5*9X)9`O5C8w6e9gsiCaxNTGb60PbIKZ9o~b+7%m5{!MJ^O zT6*8QeVjz%w8x=9(-p272A6wfso6c`#>c*Mq&<%Z8^yTS3sVfA<7>8%G@F1eK3iVX z`eIxy3dY#-+D6(x_xuLhyLwkl?T!wc2@XqX;rl%e-OuEV!tabf;)mT|_**IH3jDnjzf83b zf0qb)0)GSeCCQ1;dxXbRH_L?g8~pu>@c04AP0X1p10i<`f>uQN5Xn@FfmRCddY~CV zNxaKf-6y;UfU1P|u+7^HR4u&cZ64dU8sWVSbeFj0ZiTN4kGm2c7TyUEl1Bt_0IB0Q z9EcMWNoq9Eqk_1->YIX!fW9TD4CpaIvw&EAl6Z5Z$t&tl_6d&~lyzPWMz=9Vc$q*t zhjM_5g*OrCUZ70g7a@vOGu1UfTwF_1OM!I!ZU*|I*!w=v?SftbDiM3o*=@=r6_rGn z%p@ScyuAcShs#sKQ-${cP@DMjXCNGOKxikOK<&XqBY{cmjiu9cvk~y|84=g zRCsp)>CzgIWR>M9KxOiFD3E@e4^%F^NjC3lpbFvD1L<<>0Q!#bmI6Htl&L-s^oXF_ zfxaSW9S~QXlhmU?Ym=n9}&!V3cF@@N9mzO(?{fVY`y z36OTX!hXwh)Y{%1HhK(5=f<-(??oH!u+bS9f@*ttK-!mX8{Gz^L%ZKbUj@2cV)_jr z9n+0K+U@s&bWEQE(r$kV)FrWh2j~iM`&S^H_erVx40e)A1=4xXGu=AxM*(dX7g<2h z3c3*JIYCze>2Mou)MleE+2|`a+F+vrY0&*6z9a+P36!aFfF2Um4zyCx?Lc1^^axM} zP?Gu@kWTqN+ujF2C(GM`m~qr;%LMw7@P+~Dw4Dv4)0PLcMcx(xJuj#X=mkL?K*Izr z1=8_b0i@H*iARlY0n$1CHK5bP#kYWT{GPDwJ#E{2$>zNV6o!jT^>dr|TOeI-`)%|$ zpwq?Y!$8{S6Hc=14F;MZZ-?4wB+zi-jRw*#vhBB%fhNjZKTv_7N}xhPJoUZ;C{xV? zIzxC1fpnfO1=9KV0MH-h?c+cr1pNR==hZHt_2SE)fxPneFwjUr$%C!7^Aw;pV((0# zC4#bmZWUAnbeo_Wpf3tq4766zgFvHzlGJ*jTZFe6=xpJ=0(7mQ{|3@=-UD=w@ZPuI zCPEDL+tY#0mA9jSZUM?v7XpnIUMZ0FuNp|Z2m$H1JOp%}*n0w~UEIC|biVL@0;K)> z6VMpp{T=9jv6lm}zD9T#0%@PG0vap4W*}|vcA#;>qbgC&`z6pd!h0J?yFC>ZLG!#o zn)d*Zj{SO@_Y0u$;`X;dI(`R%E)d>7ZQfa@KtHqa&H>WWR0^b1J{u@o-qrzWDY*t{ zoA8zZ>6*6^=n?QT)vZ7}R_lOX6nl>Xy(H*KpqB-00opEzS_57Yv9_Pz-eY+b-hw-3|z78~7;`bPk&RyyS(DvT6(E*^V#NK;A_ef~}wBIJ4 zYPlF;BcA;45PR7`I+d3I>DYe;NXKfH&Et80&1(mmAfYX_-(C--{kzHL-Dab;Hu?(C z1aZ3o=xRaV1G-n@^0fW-c_1AZ>N?cn?y}#$Wxw4Eq{F3BNA2S8Hag)`xB)|a{xpz& zI|@jrcOuXPiNQrSZ>o(dZ8Q@|yPa+G<^yTBi)|j2Pimi6*yt7@bf{>D?f|+=;_?WP zmc;Mb_Wm14x0ri@&=tbPAA#-^7gr6ndcTE0=+5vq1f=Wb*ML@vz3&4JlD9tu((>{e z5E@sw_^HkN9nfIm^#SQv9Rhkyc>e^__0luUs+XBSI?i68*Tvpgpf>~+0R2Qz3D6Ef z0id4>nho?bK^uWi5%d(0PTO-p`NDe%XgN@(de!Fbu+gt=ly#cbzMOozg{}trtoYIh zq+|Md`|TS*pA(_lS$n01XjdCD6UXTMVS*yu?N; zZ1fP2mdWRUw9kp3*4h~|6*WqnD*g=v(q&W#gu+I+7u&oUK&vFQYk_oVx7g@TpzG!B zcY(en=tn>(I{2~;NSEqPpq;{d6G)e8ACS(WLqI>5w*$}AdLNQhI?ykLHymh}pwU2Y z3d#fem7qahYN%&uCj;FHl&MAlg#>j2trN5XXfjZe`W}$Z(_aDU9C`=nLV5dF`|ZTD zaCAv{7X#^-US;zdY+jemyUFIQw|S4*yh;o}mWh8efwX_!Ksp9L1k$qcH=E}fi5rW= z#VJ6#mK6hO7u6V8Tr6*A0qJ~R2((*xZ9oqLWvc6ebZ9pN{YKv21N4@lM}U4SXamq5 zL7RZy7W7Y`O9Tx#+sfUa0~HDHS3o-4{XkyEpH{Mk=bVEB7 zma-xEBPOAvMHhz@1O1FOEQXVDg#+Ju(fS0Z=vxMOks@Qj3vdmuxV00CplKOA#ml~f zQ(M~?*HI0>z5}8SaSZy}=Zk)GTEr6B2W$$0RgE2;i}YM$iE|5 zU&x9{gD~28buVZ>=zXAUDDDSkTGxUymTmayq9)QsP2^FB&0BP)3EG}VAIfx3T5?%A zGk`_E$S!w1YubN;AmvIpRon6S-Aa2#DrnyDVmHn zkFxJ$v#D|v|53xWtNi>YU7U&8uemund!snnSvh$Wr-(n`Ow4q13W{8u-0VeePF~2( z$wvzt<#X-?tKZgf&d$o6_^8`X!EP5PFMFe#lY0j;&>82v37g%ViTmB0f}vPGaJrh9 zGuF+Sc%h3^ki{hlr>lZ&j5eYZMh*n&U~Zo-I4WVmPC1j^**Hi!(Qd(;maQE{22AkjtM3 zV>pk+a5fuGva&*d9UPt(jd1qR4vIR$d5?A=x)DwaTm&Fs5e^rt*FsgmOpQs>P8!Hv;+oL(Wb~u{zl^D(sV>myH;p~m! za4)N6G#rG!R2wTkpNirH7cb*3YL}f6w1ZBLY1h^ZLDofaYQf?CFA+Nn!Py+e!DaR; zj1D?t=XP)cXF7BB32>;cG-8Jf^}9zoIll!*8!HuD!jI+*VKX7dvco<(nv)yFVa<)M zr=uE|Hit%KPy89AiY-c#8dX-2JppJavXdP2df@Q8)EmXg0w)~B$p(kx!-y*m!aJfk zx!^2};^cudJHnCpOP_faitTeQLx04{$zco+MRAylzeI5+g7e2H4!^(l zMsW(k*&X5N{K;n@XU8X-ah_#3I)9k1IZ+(Oxhsmp+*lgnh|f8BZ=?ILea@jjUa6-h z=X2<4bQFhaFOK3ctRg2Tn|89Kb{l_~ELGs-Ff-I;PL6zx1|l3?7I}eF95Kvg4A&Zt zq&=50e8kDgq1T6^IQ05p6o(P|qmv_Lx+jXmbnT9CbdF`Mk{V~pDpNXKYMe8rqnsQT zmt2Eu%MXP`R5RNg3X59cbS3#S-^r2unG@kid?sX5A+lY96BwU^h9mitUkJ|OC=Mg^ z8EFAbobwr>sZkt8$QQ+7gf5EWFhT_pjxMi>)1)Oa`IAe3RvV5kFNU=yio<+gV%~3nl`BPVxUk+jM&kx zYP74t;P>Zhjd3M*#QlF64j%@n@8jtb99Ep)+1yZcN%kd|L^P@y?T$r7g++xb=(wm9 zS1($3lWJ;RM;i4c8w8^{`qI&89zTz@)gw+G2ZPOv+k!B9Y8f*wi(6ZQOFGP?CXhA1 z8H^z9h9k44cHAQ;K48Sv!hxFQA)lKajHVFgs*Cch_bs8;CjB^fS*Wq&+Pb!&zAw|V z&|cTlfIc6$IF`0FhnjJN6E4M;XJ1)W%eSQ_uF=Qc~bZ7@<^^`ddm$CWO+ zH#RP;X?4Dd7n6t{Sx3;8ve4iZT=|1L-Wpr#TN{|(>AvhB^UlE9Hi(49pNdRbq=Mx$ zYHBP!ka8z#V@F4Tm*biI&=b|r!>HA_f{pB6Skqot--vKR?aQJ$=*+F+tA*SbL;q{2 zk!8Mk+2XoIxN49HObsJB!_hh-KM!*3%mUqO92Q9Hm&; z!LP4dRNuJ>k(t)}Ms9vC3Rcw=2aB5;>laG4%&cqgC@N4z zs7sCYo$bw`Wx;yBME12VY?ge8xbSzds?Y-#5sS_|RyRQeTd!?Vm$=qyq!l?*T{aC$ zl&5whsKc^67dBftR(w0M5>0hMF7E1anCyu;h53brxp~Qj72Y)cmiZ*YrxO$nVg|3@uro!Ea!s8P>M2P1yOpN+z!bservJ*u=t&#IH!D zPjSxFk{`nF$#kNK5qpkrZN9k$evQq*HpY{+y&)i86_{gZk!H)+Z!hA{4Kg&0YEgPt zk)3D4)nCc?!_I>)d&r9mO8irOxaG5~bjqX=_3g{rLb*BP7d6iv5&fpTdS-D|O^J(J zSyocvEB9BA@UlaB2ftqYDpdmFek297BCoSM+UsYVM!a?I0<`LNq2~JW4bAPdOE?KW zo2|llyul&~_BnYubYT3yeszLP%bV-lTRU3kg}kGy&hv7?aB=fzseHT`%>a}gw=*8^ z;WvuFnB|6Ao#5}$y$+OrIt{nty?X_PZfL&)ze`vgViF<^*Kl=mRKZ%F!ycB@(y;i2 z@vNG7Iu~KM%3=920USP0(LSn+%=1;|xd_jWRghVRO~N>>$B!PD;YTx6sW5}a&?|fn zC|rln2gQtjxEd6LtMCF)428lipl5+HO(Q_v`4j-3esQ*i=1a(@G;qjcSwDdYxe?ud7=O%sz-)*bY`BvdBRPcqAmov_V0l0lADMQDa%PBPgv z#a7O}i-+mL(tj97<{Lg;WSarGnEnbg-f$eIkev(4QRHaQi$Tu=WtxzeG5PdE@DV?I zJV*TjLscZ74&YsuE1&2FWhK`c`CR#=J3M9+eYK1u%aBcjuvBin0X^EIS(h=TCZ(v zukC1TFRxqLyts2QoF!+>L}m?8C8gDYGT-IJl@(J&VM}pW#yu>Sl_B6?JL36%=we`i^_+9%9FJ_9r6`c<=5?`Pbp)sH1UMzon_sG*LFT9#^d5s@Sv;SKzbY}+L zbt>{cP|Pc#KkB{fyhfZd7f<5Qz@%g>Kv>o-*dY;&k;t?X765KWJ`FZrhYj9BUR_!q zDDy{deLmt1<-B#7wSRhX)#ZU2xssfMz`LvU)zuV14qf73EY7!-KaF86zHGdUqwaUbQn?T>PwwpB^`y9%2*$(A~D;q@uZSCcuE z^)|ef`bPO_VG%oTJ8x^n1}bRA7wPK%?Ll~Q0KWwM;$5B0HaFf?%eM+Y_6q6k!jHW| zdI$oDcLnoh!jHWI`yS!PUUmHo;TNC0LM?b_{jIMge*2}j7u<^u;RE5vUM*dUu}8eC zrT>C>a&7seU#n|fhWp`fkL3-_%`L}qn{Dhxy8rs?lbvxemry&dzpbA%yRE%-KE6D? z^Dvz5@Qz+uFyTBV6W@Iu-i6Jfj@fa1U>+R%h1zjEz*n~89_%CBtc)mUkNa{Wz|+)%O$USQqEYw?GQ2Ag{Kaj&pTX!C~KJOI_Ah776RboC!DTe#%X`_Foy{JRZ{AHzWW2-jU4 z+ZT82*LYjQT=nid*!ViL=U@{;H~^JW3cDhq+a^ja!>Y}l19LY+$1qQ752Ol5*lHRW zrcwbagmqg!9jY?1x01T1qF%v|6XX!~)kcMg=;=lHGoUn2^!$RL#Ho%Gv7j~!tqX3- zz?d+ovI90@joR*9YEZlOr_VHcuMaqMkBbB76Uj6|Xcb#2qK%ga$lZa27>JG!53obA ze^hdGEU6ban(aRvqZbQNOn0hHp{F$bHe;F7nC~-+mYa@P+aUmf|PGK{_nQ{h8BPzY*2XT^YfYiM4;Bkg4NwMl`9xJR4qs-=A z4#YSnDNNPKTur80Xun+w#EO%oRsyjy@k3l2ehEjOFc!kohud2D8RKJwI4A8;+p%22 zX}ggT3qZ~ZJJd|r2}Ql2_LUXnI{oQ=kqbBDX`mguvJCH{@~p zzX;m}oW7MbVw}^uOq^ilAu^e$VVqTve&+G@jJZtjAAPbudMe*8iGF6?Js0FoG;`*d zErvPT9Q%aqtO9K_GRMx{Azl<1&4-<1-+{`?Irb6k_F+chSJclO`%Ucp9Y*ZA=GgxZ zzy1gIxcW}RrqJ8Z9Q#Vde>HwIaMte}`)#mum&+dV;$xm;zXdUv@iEP@>xHE>3^p{%TH(hyEy}s%6olbL zD~0t}jK1`|XeW4hwx>dw22S%dw_u=|n!)m=6|8`B2AaO`Tnkz4*x5G(&(?fu!?j%4 zHP#9(9xC&dYvFy^aeZodL_IG$@j z(f5Qe1LYk5d!WwpxDU_l&Y51C2T>jzF(TGuGW=)`Agzq!JD?*#F&_{f z4|))ECMfbDJQwt@pf`d34V39Q1nSNs<~_@rKbqr}*}t2bk2b={tXbdw1Z0-8v`3R! z9#Q_tGJB!U3zdC*GJ6*Cmokeo5t$tcN|}XBhRZ>LWp4i*P?i(dTioRVITz!U*+g(G znY{tnEwgk(I}H1u{gj78W??IyamcJA6J0WE%V?Iv3x+=jKgI!R74r|IjnDYDkUaS( zDCAYWjD-AW-NIV8u%>Zq?Ujt7m=AsNR6U_xT;}&x)CPjnsw!&(Xvv)G6r6yDy!~4* zOpHVvxdc?z*tQ5eQaXxT+ow0QS9C6JY;UeF;dYY74oMapF`3cFQe=v(TODQ93TuD= zCsrXo#w7>Ns)vw|Qz|RVu+ohONKw?RI@gkeZJl!$HP;{A!eIFDuUbyvT8tM_pNrj5 z63LL1FT2WPTVbFFv`r6;3)YW*7agpsR2Hz7u=-zQIPwC8%<&yS&>SJBC&bR-b7CUi z9R7pCA9ve@Prr5Plka}&e@^_$-*$Fm!JYkoyfq6dyGu{l^O<)Jy}9<~VXytnKSK46 zT?jQ{!jE0cxK;SEYZ-bC;zwi7c;+YHK5*#H`8(I1|IOlCF`gPg|6|uOt`dIiS_ao3 zMzVoFmf7;`tl7;i^@}G ze4KuMd@CeJnAqnM!i2nIoZ5G;Am~+?|16|5)wMS^P@=4bln=WK@zEC@B1;AGt-J*9U_k^1>#^YRh1j$QO^Qt z|DHFjs+9(L)FGR9*yhbbUFTRZSv_JFM zGe(rE3JmfnoPamHbv6$U{$H#b9BG!FcYF8`a)z82h#iFfjFhSc3DmkkoeNR(<+zFn zx7k1^H??hlsF`!emw2?Y+M_EE$CY_$2}?#}$pd#O4t{3(|8%{7Q73ggK!oJNV0=q* znd2~29V3RKaGY+G!_5cAjlL5JYX%2xH#${m&+Z+taC73A7-i!9uTog~XXRZJ;#2g| zvv1xSri;e8^3YHIAr8;(9supi5N6y8(6u?SYxm)+esl?*IG>gzDpE1YhT3_R{3UNL z5WlfAMX!Q>dmWxxmy^_L{AEo~Qr9CQdbwd0khZrLh;=1NJp`nE`Ih~56A}P9{;Gr1Kh8WHdqd3+g!BTJ;_e6Vw(d(Haj`uimSldjy<6bmuUX_T_pH1y@nAx$Go)gwss_vlqlL{tg{Seelq&e zOf^_c>%2qM^pIsopG}b^ifS1L*0fH+(TDbBSfYqth0yGpR&7mIF#h!m0~h4w=U{Hz zHb+|*C@h@d*n6KWd+(n+3v1RUN8RfJS>TUFsYaPNd+!gRIhYN5WvuQnoH;G(XIiM^uD&SgKop_}Zppl%dD8rGKn)(^f4J6|{U5@4^t zJ^CAA=Si16WN_5_!LjbdzX#!5@iDCu@a#<$R>fLdig8}2<0CH@yob1r!p|~w02~#v z2Gd*)!0{ZP-@)$={4R3MPSXwTuwThz*C8e$I;z2tsU$K(%^>0!%=V>Y(w=X(qL)}w zx2Urb1FeXu4;1l$T+RXkK@kSh96K`chw9~&Qw={jsUFzodh}) zv=np}C@_^Zhk>brG<*dp{0TFS_{pr{&(I|f!|v}f^h`_(&IMVG0bcdH5&BHLVgjKy zoaO2FRaaINSC;sL)wRXN{_1L|QtHQo-tHX4OceG`SNMx-uzy)LKgacMT9pqQsY`-0 zDyxH8wzULzs7`CywzUCAvX+Cr-#Ur|-PR&;3tm=QGaY}*%7QqWQtg}O$If!?D&6g> zq7vJ%Yl^3H_jh&elBKh$j<*;P|oQR@%- zYHOzZfs1{Tcjp@ahq)b8MOpRZ+<}fr*ln@4qB`I&E}dG6jP_SmRaW7sg0{NCZ52D! zr((Z4ECzhVm-=fkv#4#}=(ZWCs;sFjt}HV?<{NumZhNx3xE$$`)C5gTij6a?j8?jx zAo6sJ{gSH)$e2njpTnSV%c6?Wg(1oh7PY!k!JyB$sOl>}?6 zX&2{{u)`loudbGz>Q>^v;C4b^SxngBe+5neoNv5d?Y0MB5$9lSg>R;>w9Gf9%#TeZ zIzzkru{))<`f@DGX-hY`Elu&EPL0%cB@gPDEKwLOZ^qWO5}tc@mt(> zYbpb!#lfkiWjI!W!xg&7tbAP)-?o&OWjD(t@>aK9EyzxpD6L?5+fsDf(Os~-b@jD^ zx!vuk%3thfu9W*`m6q3*2mP~({r(b^)ff}8JKQdGl989bYCFYN#k|vP*`%VTvNBla zt3o?vH9L2?ZJLHGSmmoh8NvSa(rMG}dVIIr`i$Dj8eb%~mbdq~?fFW|ODjq-@r!zl zWcqZ&KHenmUbppt@A9%rh!AotoO3t?39UDtZ9(22n z^ohEBY$>raW}VxGB~Qks)H-O7)p2{sZQB_shse9*ccF3rWw(2Dg(bzlsw1cFfB7k? zPhpMYE_?}e;5dCR+7kf+@&hMa=uHLy6py|uF~h)wM{Tp>#=*I=;e zI8${W>{M44U+OCWc&n!@TjwL{)(BURp^su=1NI&bX|=;JXnK{`4d}q z<*MMzh!=*$0YA^jebnP$^st8I)-pjC_i>&Fqcrp~uVszgbh{!mBaq)^0llis{2z%7 za-JGv#j%UCx~8%UW9DGlbWFp=7B%@tI%#$u+^mFuE=dR$SMo%fjG3{7k8zA2pIEx+ zYvuG4lg~tXYkC??9k55G=3O<1cB$qU4n|kM|?sz29yDS!_7U$Vjo(ti_R7IaNwV)EYQ< z9WW=$^bx_MoUpTOPxn=nAhdt&fjb@^#}Un$mF5tub1i%bl0ms)%Z!n2aH_AowCr-p z4yK>wiVr46pIH@bZpF2CQhsfCD{^Z!=O4oYx~!mw6RZ{V*p+F{m8B=du0XF6e(Z|% z3&OwR&f9nNUU^l^q=L_W<4fNwti-$u!bnfZOWwHnoIjmWdiwJ>p0N44lDQBC;m59^ zuMmFh3i?aJ|Li|L{Zz%bexCRF_NTx0x8z1lJaN_bEI>9rW0r&nUwr^qs;_yy}bZULQCo`J^R*Kb&%H<~nG-5`OGX z0$%kNZzlmy;>0`s_$%R0KJ@Cim*@Zf?Ps#aCFkAoIrL$tLx9s0o*Hx62W$U2aOt#_ zyLYVkeFzhXT+!z(!^gA^?_7NT*iO(n)@_evS3#UOZ~^_pox$S@dPh#EzOA|K7`F|? z2_8N)w>31*`w%{SLM!-3*le))notP3elWkuJ;oi!xa;63TR9qt1RLk+bS zb;9O(g`qbZ+GXfUL)lx>d|ngv1w&UG+HI({^4VjaxiU%9tBG7MN65YNG;1`GtLO-C zGtajh%2f=SJ2jDg^@MkuXLOum?lts2L+>|qt)X8s^Z`S;e~xCI{MDC25q{Y`Thsd$ zyq#l_x1qVCUTcNJl`OO}4f^XsjSb!zt<~Nv*K@Y(IS0=rwg=v8n?p_B%bFK0@|Hs# z8*gcWsc7}$7LfWT>S5~WoZC^~-aMBY48S*!aCLX$^U?Ow`<< zrqnffYoTn$TY*IwZ)-cE(a~{jYdh0b0b5K!Ydh4nfl=Mqz63TqTk4k7H7}~0y9l{u zcyl{Dmcg%<7KgnKXjenN%=e0lHTcJ{92tVxc^5ardxmvsV`H1wx2SnZqZc}`8hJDT zes?el-ca4b#ujfY!p5poYg=QbJkmNY?!^$I5Bc<>dpK4uibVZ3s zUX0(UdkytFl4Sc>nxIVl<;Jlj9v{NDHqj{j)f;Zc0T;WHFy5&p8d#tn7&%LY41Zu2@# z&`SK}YG#sb{$PA?Gamk)A&AW$&p9WFVgatoBguf#MZNcA>g0|!D zC_y{$_iRDC@E6BU;L9HT#laJx{rEdt&_Vpg-ed3%w1vH8SRKR~&H%7F3&)d1xS;%0^kf*OD(3W|60lsVmQ z?w2x8eUS^*yOtjw*Wu+|>6x#<6E(RurE@U$&-J7|KM;@I<%jwP^u3PDiF)3?>PJQ3 za7>US7nEy+M=_J}H?ni;LV5adhq9R^(I)m#HurOI4@blt)6OZ;4yWBPb%_bw$H4-6 zdGTZ>z!<)x5j(tDBM-VEv$=IHij&jk=Hx~WFB?~R_qgrkuXl4MIQA~-uqN(w+bQ5E zEGqOu>Zx~fva`HyPIi`?lT+g6Y5?n^Sne#mUJU zh_7y^KRMayZcffnHzzmC&B-fsbMoi7ITJ!|&O~1G9u<1QIya{<>V6qWLT=Vhmz~^f zYUptKlbe%*$0$xNwR1#q^77oA{1P{3!fZEZV#v)YxY^AqT<7BCWo>kGvbVT7(f7h2 zrFppnQ9odfd+|gv^YVtfIr$|v$GQ6nOw_MB{6&$gZw)-{w;;x_gP=Ji(@0A-r6K%FmOw1X2 zwyW%NqD-8GuiPwD;!N0KU493@Ui>B;VXqu7q1HzB%9*GxHlhPgaJ?~}u>Z`mhz1Lz36TLH=zqYIR60QQ2*KDp0>&cZYL zW!Wd!4T?Q->LyTko?QWc3VzHZns|9O$(3hx!+fQPt+tvq6_sZ}X#K8P*7i~Jjp|mp zxiEx~+Uu1=Gr$~hEW`LP&rZaz#xOslbe>%b%DPt$%Bo!nIt3KfEetGs4q5f!PEK9d zf-+tB#pG2n_{=9~Uh(6>k}pmf6u9z=ZfGYTKhci>irUN7w@6hGH3&QkZ}}{iB7Yp) zF#m)xU>oXChsg}ek8|wE@R%2g_>IDk2Kf_a93W3&#sjhtlQxd4((#V6Ktnk|P#x}hD?bB53rjXP~vpO@N0-{Tmh&84DuusR{bSk$-1xEOi(5{t5t>t^J*8QJ)Z zvz_pU3#3(VYmMZmrBHbQ#DzJGXhrt9LiqUJlEn~3dx%Q3;;E<;>Ny>0YQ5n35X$T# zXu%kOepw5ylocCpW0-F&tC9He1Bqrn%7%H0HX+PUy9J;uv&EqNzJQF0w&hk(mUSCw z8E88w<+cM9KYmPxJ3;Xa-w1jw=&hhjLB9w3IZ#Fz{Z05q&>KJ#5r-9^XMnB*Wt>)l zo(K8`&@9l^pj2^n6DU91dO#@~Xj{Vp&@X~kf!+psHR$c2H-g>)%I}1`K>2lWH|QqN z`$1m?T?_g;C}!@${0?{s^p~Jt27M3lvt$`ibmygkI%So093m_2{C7d!ZPo$sXy+~b z(lYT!j9XT(g}#5?X3_sR2GUA7V93oVrna_FJLEtsNBJ8WcK0URq%C=Ab_-LikW^+! zU$DUuDC11|I0e5)4F7fH2h;He=m^lCfM$XI40Hl0?1uxOKL@=G^cSG)N8SYe9O$n= zQHJW*p!D-MpwECJU&32Je+#+|^leat#mk?=2t)lI6n?6`pm3}H0Lr}V19g|rn<%&8 zcxUAy+Y&FHL8N>N@!qYSf^KMs^pt+f2P;v!F`@TyOl)J~YFm!{=x!ufvMg$=ktE_^O1PKk>47wDLj{x27lp`k8^F9)3ninc-(fL;%Z zG7>qN40oPP0&j~Uj_An{uQ(s^aD^oXcFRs_3|)NG#wOi;5pPV%l%SN z_^B|x6UIB9N)7X5Y6WODXeHUI!28GsEP7TP0&X`(N3tZfKmp&3OX3^Sr5v5 z{TisdtVV+Ggvc1Hicn*%V;vb_*am*{A)YVm%K*zZbVEB=<9GfLi|wvQO?4ds-9zdkvO=)z8;T-|tv*yR z#vI`{78^y>j_87*6RX43%Po%Yg(gQ3j4SikgWqh!-;8`<{GSD7|N0#02+%E{7lXb4 z%6@el=w+ZUg0kIw8T3lf?VwEiE1+&!KU#i%1Ma4{z8jqRIi}zIG{cQ$#aJ&49pg8u z)tPn3(XC_7(RvBO*6cI~akh+=pU&?ujO8Rh-vDKP{sffy`BPBl=YNATKQY#meEc~m z^YIs;%tws5#oFhd+!DWsh+hW%$Vhv=%IU4}=-T6G7i|yr;E+XcH)(EH4_S{WMT3?dXqj zqC7h7bR%{^#~y3ieOitfRvZ)Cc)GsDve9MPUt0Wp%X0RNU=$u()n;X85rpuAO7+I2 zuFCH0C()L2cxCmIxU~y+@X?909ma==EZ~69?E%vcqZP5bR2f%o!+Xmx|5#S1;4tW`fZzCINw=vt{WKfLn)0KGeSA4**T|ml&+&&KlaPk#_`&oi`Xc*lv>o}&^i%c+ zf_gz2)>)v;_Yt7)fsVq@GSvVqH~whY4yJ<=X0P# zL4O1~3UmwTIiN3q;#*v81?9$wZJ_f(w}UPQeFgMA_%jMW%TSNga6CBMKQEpw*(rj% ziLQ2^ZfJ*ebU(6l{IfC9l2Pa?`42BCwqRJ2VvA0^sTo>g73SDNKB`&AtuF`8wK&HO zH^b6gWDpGfvIZFxL+7*%%dkLO6T8ee${NeTT7UdA%EpUl$fV54px(-y%wIsKfPWB_ z?FPzE#teT0U4iGngWeAM577HS4}(4kihfJJ?I1T{$QKs{WiD?3=xcaP1pRN&fuOrU zlRy!MN(QBjrGSE`(m*L&gFvZQ3~foc3^X0I8Z-lR7U(IU%!(nP*MWWt^hVHOpxvOS zfqohEbkIjY&j9@<=%+z{4C)2N_+Om``X|uQpcw0_^FY~#jY4Nb{SD`yjt4PZknX5y z^Xg z5QnjG5*r(zw3|dZBo*z3Y72PgUQQuW1pz%ziDMCGW&)KJIE^dkp5<6Ht)3XiDz3h( z@|S6a0VTc~pB-r^ZR0voR7(3f@@l)$dKp}9%*k|jLaB~`kvcg}I8X{uIt_>KgV9O` z{Q6KkU7Zrgl{r!zIW~{QDILa;IJV;-#^)hx`hV)tT}WpQ zhMo?F$8lhCxXM4(U*)eT_KR{0T0S$5Wv$61h;wVujv$%~X!ESNHlxn-+nF;Wj$P+T zesf-14&2l4kw>;~+Zz?fo^|#c$KCDva&{bh=J0$($pqC1Fz|EYSQb?mR$pITh)a9&`XpC8Y8?3sLrOKP)uO#1Ao z=7UXEQ0|eWe9?ldB^3)bmsN@-X%45E>Q2k97E~-lNkmn&ZB}>McD0>id#10dluALO zT~O-?T?~v)r;crDg%2&WRCCrM+B+eRz1o_o!2+CkWnX~9{94?pV}K5l`gNc!LIFx? z6*`_l8RtZGJoZkgBPb5~x7Q7DDl(xcgXIBL7RAul0j(C$*MTNq^H0Dz+-XKT4HYE+ z8X2ayfw9v?3v{FlSgkX@*1_ces22FYsak+Xfw{cl_;SPsE)0|7vOjr61U%1w{ZJjB zvc{HbIbDbGNJ>VX;o7rN$Eqrxr?{iefd5Bl0h9<}zyH63&H^4J|0uc%cwGW}0*CxA z)87>Tm$Vizl^g{*Qz=RbG5PhsQlCNG3e8T69U8l>GXG3}Sv6*Zv`U6!y9R(o{?YXw z#BYNBHQEsP4Ijq$GydZnJys{dg~E^3Nw7-zvAPF1FBMPsfENLzC&cO=SStKj-2=}F z|0{RTtJ*m5k8eKx@HrpccgO07WgZy*#NJ}ijBo#Vw-|g?_&@Xg;vX+RKIXynK_fPg z{qCV&8jeymQ2yM-UC6M`ok(i38JLY#_;vUoZnFmI!7LK`qj`3qo>d5yIAMrH($9{*#>#k2Aj9h=IsT#NL=t# z7!hu3FbEnNfaVHssX-of1JHcobs41ZftV+}JHR9IsE2?Wh4&SMJnB0@4Z?feAdmVH zP`&WB8st$sfSQE2(;$z^J;93KM1wqPw#}Pk^X^E(9!a=OR=W*KReKEbsOysT+f)@c z$fNR5OqYm@utB(G!yw$%0klZs^1MMF^%~G(;q5R8cWVGG6y9$Q@~A%nEfC(j26@!` zK+VGYr$HXIWij7BXZI^l2F6QTbS6Z4sXf4f3dKfaoGs zbsFSR>uuhnHg6V|rhMY_BL?B#5Q9AGZJ=w!mwg6#)Ip#&;T@p}-?Ka4x3NS&z zx2ftvgOGnfv&F>@gOGm)c~mAQ3zmqBp$2)>nLyVGZ=^vUl?C)U;pG|RQAI$X6<&!! zC_y0ZXFv%Wk50gOH~{jA^QR%^;83GE8p^PFCrsX@p!e2qg%# zTwGKekaa#n}BW*-WLt>sQZAf7v2K~dDNiO zt+-?uguJ(T7uvl4kG*#R&!Z~W{-oAA)OzQymh9$k3XY@XYy0_T!gMWDTf5*QLLz`{A z`L7?t5ciec+Z95(Jnl!UHrz3qoQ0z?SU4JhU43DiwvQ27cudPSs?fqyfwrMM3x^^M z5B7KnsJx&I!^1od1hpORz&mAdE*X^HqrCiRkH>f%f6@%OTv`5C#tZlLTnno&PlOM!q`Tx(+3uda#$-YG2vbi`yF4W&{p7d<>{k3aI<(PPaX>MH)|GMKjA=aY$Bl=MWkw!G%UZnry|eyW{Y9#b+~YEmYDTP3rb z7S1n89xh?!YsulWP<#BAtjcTgs_Dqp-gAQ)FtvEx0>RYgaSH^~D3TjA!_@9^3k1_h zk{c|8G0?)UgQ*w5EfDM=V|TzlX6#;=`Uczr!Aguh22($g8$1O&)YvMR`ik7(Wte)4 z++Yn%<4tX6Ma0>)euaO&UfoUAVEf7p2QEnjrCdV4nHQ{l_iebka8vq+* zY#{6eW4q|a=fL;v#wYr=og>|!PcMPJ*R8*xojnohPbDFpOrO2eSMhjdoAr|Y`C4Ab z#Js5+*a_NJ4&=qtxai+G*3xbxT$-(L|Ib65}9TjUVp6bfAm{*3*WX*F2* zWxuk#xp~EwSV5m>J1Pn~irNc1rslL)=5$QWYp+yl?Ue-`lM34>7Ajcpww1ksIaR)VIjFC*Q97HL z)Anrd_KGbXH3e&MQwlRHTQ>>(W-*>37I@pn%gqWVioYk#T64Wy-A0Z+nz0m z*JekiZDX&wKPgrslZaVlr5KmjQL$x3buYf+s6uw~p~G!=Qa4uXg|S-i7mnp*yqhgF z3bThEztHH+c&p-jwd<>kEk`t>w7jgP*(G~PncV=75x?TIip}Ir>*qbm#yP~D_EM- z`4L6i(x+k@RnYm2gjZ%iX4$r?Af^^8?*MQA>)XpVw3ls4HUwYVO)7L_pN7F$MBF6F z6n0&BY~J!8^t+xnA5qMD1zl0IsVdQYP)dQ6QXq@N{x`LcqwY5a{jPa|;Hp)my+)7A zX_={=sX1-WWvo(j*loKkC)08$A*^jQXjM)!6Ru?)8HTVF3aT2$rUE7#kbP5A*3vn@ zqpXmML7|+Yw`{D>*n&{Ad^B`@+tT&HC-XaMHXU2DzP)A>e$4i^DyMFU(w^Bkm}FF( z7A$ZpXAQ9HUd{UwsBK9>(5$u}S#x8b6*XI{8m4#2T-nwxpBimjH6T`9H>eG2Q;(`P zs7>piL*7&$u7PIt4o1EG{*C&)F_nn|>sI&J_&Nz=kxD=2;Z1t2**3bU--=ca%q`ny z&2ef$M-Gj4E4CVyQEgb?PgTc~b7iHvmrwTYoEVETp?6+o18ZQDHQBawOK!^{b1O($ z9b-X9d0yevhP%?iHqN2Ygiz1hyuYeqV!_k~R>~$*Yb>N`@|9QLMhY7HGzJY1q(T+8 zt%~;)VOL;i`YZA6V;zRjT@x`atuC{ZtS+;bvbt=uROfpM^!#Y*r1UXel}iVRa+jXE zx@?_dJ7pEf6j#)22n#_&U)Q#DT_EFHS82_l@x8`9d=U#fAGSiWAT^;1S$;>&hV~-0 zys->3o7<<-3b!yIp}lU*t|Vr5*)OzeMJ~72Z1byfyXq^CCLk$A^q}xPx(y7CYUx2S z>!>IgUC=xG(c9jguX(?LiPJgz-i_yDFl>9SS9{IYp3kSwzCgWrXzO8rs;Pz9OR=|? zR8Q*7Wb0LPE@CpY#p$H05ri#Fqi#$gYGIo@DmIUwJbo zVTKrpH_;dMxwMQ9>%D=u=uFv^`aM3OHzBrm4$8K&e%~q2%aMP^1LoGy@~k;^R2St) z5$e#MeR}hIoqKGYu13c!XjO5{IBrn#@hx6M=wrwF>T&)RnamE9we;j{@vJKf6~&Mt zMYR<9<1{6eTmxjy7OUtjosY&1i~NT3OKBl*YU4O-VZL<{+Xh*>98IBQ1)2bLlx>R! z3;2%an>(6cpk>tD&D68sby~x&8B@Q{vN}LBihhq)9+F%Scsp^ zF}(GA+%lV;Gx#~j#+Mb62ppz$ad46T}lS_%a#sxug^P5M{%N=|jU*eRKg zw$Ns+{cd+Yq!lhSU%RAHN8n44)9>+@C~CXrELjE6&dgr=U8ixDnHUxKX{)$x(VY8I z?MHKNO+vyXN$=WmIh>0S!Nw^TE_*^0I-8!H!&XJ5mTW;dN@&*Pj#>@vZAbGo8&6mk zgNe;7sUe1M=4Kmp@{XE91(SKVJ)0BeM@76TalUi;VZUjo}CnVz@q^5;0v!=}Is+ zcp_qdf=%PcVpB3wYpe`5+SpaF0$6Tv4Q#r}o`>-O4cSYuvrIOM+P=_avtcg1Yha(S zqbnoUi+cd>9J*IfXEEdrb(S&RHK;cxf2gyK>Hfh*#!4clI|)v<5OxMfi-RvlY&~p- z$@*hu?rhUxnjz!{pMafXN0-5>jr{_qyR^B%I+!b^{DSI^ZEmn9%$4#~*m)M?de|6a zUxDpo;qHf>YqG~-jVAjZ?0l20hPk|~fz7p}>tOSYZGz1=b_CClON|{1b2)8-x%#*d zHrS4S6?QhPICvR0#AH8-WPgSYHQClkme&{0JQibr*f2Z#F__Equ`rjv>tVy~=uI$} zgI8dBVqYA*4I5!cJ7F~@`zP!~ll939(>orv&}2hkP6wyL+&Ri&i|pvxu#1hIzo&cV zSR6FKT)6*%xsvaJ;Wk;gPr%&KS+K<>Yk)Nyn+Iz#wkTrP!%jz59NY?XaVKzlUU%qo zgGqp^^SQ8z7VZj|3%3&Ha_|ROg&plnleom<_J=vyNZ4dMdKS#JIj*t1b$$gl)sDUx zv0p|^&$8Xw3SgI7%7w5c#)@H=8S4+b+}Hrv6~;;;HV}5D$?9O`u;Sn{n9KdwVS0j? z8$2EzT?0GQ!u=UmY3u-=dAn9|8m!7>b+AtuyE~G-2;-0Regrs6{4LCd+q+-rLVZ7& zJNj{$E9FF(o;32l3hYzHDq*e0s$o|dI~#Vju^AD&AYvS_?E?N|BSt1ALraG>q$MM6 zO-Y6fQx6_XXXuboZ>1zdOAF||<6(x5I60Civ&w#@m-KdCl!p!*d=$NKJl3!w6Vj5Q zdS56JX4t&6WcZb7$%q@$k`o_DOGd6tOGdqwk_<21oR$nud9)rnd`QZp_0Zu%^~O>> z&%=k6rzOMZr6nUY)+Az`cxzfR@`1Eu)DtPmh|-tSlEG`!k|FEUlA&AEl3{s_HwZ%; z8#-cm%Io#e5hG4chdJ?rlw{P<*0f~A&1uQVRY}RP($Xzy$>4#shFE@v4IVl&Eg4>( zmW)^wNxJ&wmak>?cZdIJ;x_=lm3Z7ED6wbuZsgQRl$B@%cr78(Y@&pAkqx65rPxna za*e`JgskLtB7Dmt5C*f?$woqf&C&K8E`W3f@VeaW7 z(c182m?yeO^iFv)%$r>#8@ovCQHw>hJeM!LC`^SK@wJS%62FC#0SQU%{LAc_p9>U* z!Ou)8mgc!`vvYZ`BBjg>q}n=WgHl^YqS@gogp-6%nIIVgo0O1fW>}Mu3`3$^W@Bjv*p!vXkM6+1qjXj0 z!#K&vTiDIU(k$>bFLC+NTybqeqI3N{AA^ohS_)?4_NHEdbg)ga!9#qC9 zI(aZ7E*Y$IX_iRhPCu5;o?hbgQ_8V}5)$cfa6%#-YHk*#qbvvc%-|%kbX3sb*to>< zb7ov(d2WnLEI&8KB{-PxkCTj!W$9e~e4)>;=rxqCDH#M?{jy zfj{S?rijg>jdM>0|zdd+)w4eKhTqZU@J4K-Eo% zP&wN>7R9vhgw@vDryc`)n`%5CaSEK1pcqyE?}V^nE~I0oLcIo&U6yH?igv5y!Pn)} zoo)KKN!j{wqFMF&*5o)oCrcm9ciHAGtP`Um9G%uoxay{vb@k-6x#_Z?HZGBO@31_X$FOGodW#=6e?tc|l|blOx0Nn- zo4Q#xvfAVKE^^UFMgtgI7!H-~()TWIB8{5e^u3GnISc02&no8|Y=ahF*vJBllZz-T zo!vg1v;Y8b%2 zHt9(lKGRc+9#SAmv=I9<%&VwHq~FeymulkO_f)16lM&+HBzK) zR^G9T7U6i@YOv?B%DG@zgELj@T&Fvqx_yYmclMg;PR;vTAt|@;(~4U2*C`c!!&Q8} zulcSzQvT99;@*$xXa*=9od-%s-2F4()3x9j_Ada_I%+_!O}WvQw(S=FeO$P^>(#r(i7^0^TxpVF1;a~3~sr=bJo z{d7=vF%kSII0-xiJOex$JQExWR)8M|(R(Xlb%)V>6IX&N|5Pxo)2ETkLgG4&+ug$) zOWU2|D2$Fhp0vA33wYh!d5rx~>`tnba-Ba{sk<9X{1buh;umhpuXJ0)?`AKYhb~lx z`Jn7@At*as1kxYrezWP6uC^7us{ZVI8kd0BsP4eFst>vhB&_ban(xXhz-!oF3SJL> z3cM3+1JiX;f?QjkgD&>1`?~46C_yG0K_|i5WL;F%>)V^V#jdmd6H7Ty zxRpSpSDk+#KW)8xIh&QQIps;d=F;Un)IuivI;A0td57Ok{L+29;wa4i{4SOi*k)Fhc7I!+2zD>%I?D1B&0c>#vvsTgY`d}xZy!zPlKzyxYntET zF`)YJv7q|!@u2iH0Zi+@1i7|QQRz9#j{5MACUx)H_HOCdvbLu77H%aF=`*x#$=?l} zt^E~LAHEe#ms2*Vt-wK-v1&(s_`%(k^WUToucTh3kEx*g@TzX=d5|x6PkqQNj;F7; z6i4Z5p7C6AtUj%&e&!*pK6_pz?54H|2T|xylqTSA0JB zIgXu>>N^xiVbuTrI9aZ;`HPy}r#-?12@~JC?H1!hPz|Adn(^sgY6voa<*l)Vl_%-p zBmA1ZoTr^O=bHm6$+@8Vi+SKcZ~=G)8YiH|0%w zRsUA*h3%AE`PKI%mE?7x^tu8(0_16s^}nA5Pi6lGP-VLjO!q4%B3F^({b$_%uHe}4 zl>I4=!VKm2Jzpm7{OF2ya{ZF#vU&CMbs@X6+L9M&b#Geuy=bBTz@pk)DZg;jxuuVI z|9J=HQhx3Pm8UO#2<1E^X&04E^_Tq1%lV)$=U06>zt&ATxvgkhygsEX)v@OKOZcVx zNySkZ74d*%IZxxlZ?}zx>AKW;({;HbaAN`2a;?hBXTiUK1Nnv90B$lCvJ;MldXmaPsPr~chu`sfo8;YBuU zGva;oeBv)~ISPHD>+*mPt~9B^=>lP|U{sO%P;I)R(*C1v*Y?9P>=7>$NGGZXspVb? z*yvwdrLQ|cU9W!$tOM@?m4$o27Vv(s9eeYdEVD|pqg?7=JwsDfrc$WPn1X}8M5PQQG-cz8qjZPxJ9JmQq%Ew&K+HWDpwQ1h2F-&DvKlK}arK#_TD2~E#JrEq2EuY4nng#Q?*>62n*eeh) zzI8kC>F)k(w~g|nRJ5$6nV+6LhBJcrRr=zYm(+`Y;r zYOem9qw8Y%R2ijD&4br?Iqk#7_aA|WBBPzO9t*w#O20n_&j4Qob)EG(sB3uQx6T9K z1Y5zi;C0~7K-zUc`?Bk*UxMFbpLW*zEVvFt7W^9g14vz%eXa+$vHx3;`vmrFQm+5) z+obw_!A9gKfW)zH(sqKXt4*Nlv=?07A6wu}-dUvf4`Kh(I-YdaHrsK1+U1g&wexg` zT&^>ppdYi_<%R4ta!0n7`^Piq)e}5%SZS$(>YJJtEac$c>_6h;hJ$q%SDea>&x;&* zro!XewxzC_zTY|Utevy)LLQ6CH|+xDqqeT8In2zWg>)kL{@B4$PPc_0{bhhU@N3xB zkK>sp@9HP=W|MdI@3_I_1IPbj|F>RP{+qmaKl1SZ98_Lz*WIMw)qmvYIB|FWAb)G} zf4=>~3%5<(Pf;)$Q-g&*Bbz9PWfCy&a@9YtBOFRgb6mAHeNm z=;hD7ja9pNcc%I8?}0HaJvq(R%y!%qs+X;wrIv~NnqBsfx2q9L1`ZioqR2x^OO7u& zzvPq>8!I#(%g^3nj0tL2>O1>dD-+At{S=eoH3|!NGVUdL*%H_R7GsrX`L>EevW&i+ zWk>O_z(Jj(zNJtGEc)lp)2MhsYqi{TkDJj(=`J>Aj#U@y<`t{2HhMzS@qLoAh&jAQx1K+o_F z7s-}Hvd3VDS`4ydEI-KcEE8N5$+TKP;qXZq$!?Bhr3KE*M&IB{&+r5285)md>m!-o z?jLC9o#k16(BK&{BH8*#)_*T|zo~C9%QIqlh7ZO__E;p_3_HTkadJP$@`Ev+Wr7uv z?8Zp;L?nAEl8s>^b)=;tFLz@3!400_!7q|+jAVsHVYp(?@QemK%2IjCv;1JCXPKa6 zZ+Dd1@+=da4LjOm-0K;h13k+Gd0bNHXns)O8Ep`DjK#RlGji%#CfF3oHb=67#m<{a z-(Znv_{sDv6MPjm%Fgi(&oaT2u#qNv+OtgX66{2iz3f>gIGP^gSd;17q+*$%Jd#yL zvKf)=f=JdJ$(BU22$hP>g4;j_~-nhD*TljV5!f5*ey_PzbY-pr}nkr%Z87uI=?`~Qs|v=qG9Jf(zd zX5$OzZRvct^qO!Z8fXEL=bUiaHNFa>mDa5I-QG%TEya)0D`=e2ZF+bOlHZSQtVK?& zDK6|LZPFvO7RgRzm386jaSY{Jxr<1P!11<&uaA*IiyZlIyuGMXo)uWttR1aSW^pXe zcjVy*zZTy64&E2ETiB;eo;2FW7H0huCG$VOyZpD{!C~9RtI0;&(&C`yfSyXzSxXry zqPcuvC3dl8gH_VS9a^zm!;1fH?f7Qd);0<+t~jCS&<=q*DT&UZgA@{PKF-mO+?jMt zE$maHLbq3Tr!MKgu~(PH|DmUi^PackF309~C0x0j4G}KNc1ZZPP2IbCkmgwd*zbC& zLRl-qae*m6Z*;}h7Sl27nHbfu4D zM(}>hyUdpt^NSZ4M>W*iRw~z(x3`LmPoQievZZyFnQ?~Mc6p8rz|1zQnyLm(uoDLO zK1!_mWo@osM;yOe*ZD>vBE2cow58FTSXqnAtdDAfW088?M=EKx1 zrsh>O@W?7%zHO_=+;j=;mL|CzMm8G~gMd0KGZ5zzV-q?aC zXqxyX3=Lc@Nj=6Oe#Pdca+tAF`>*>R!(ndk44Ce26r2A57p|3kE>8%zoc}J|{V?5S zDAre!dGkt49XA&xge!x&a6EVS;dE!vh2yTZU0)Oj8JLstop3KZE|UEirhGd;mV@ma ze~ymkaqpwVWFLib@l3b_VJ_T}FqiVPFfNZd`eJnSx6#o6YuB|7d4c)7M6%-|*+iJG zu#1CpU|i0U-uW@SeBFw9~C^3l#Cn|yp@!UD%H21Wv*e$qlW42xtL^V=@7lUnve|Dn;kL9;L;NV zbr0Ee1`iz^tWQdYooLU}T$uRkA54(dgIfPH2DaBt8n<2Izd+$4T+}=aB{qVirSYVem z7crZVy?kh)-0ONqlW&@tDE=~)3F2=Zxk!3FCt~glu~!*nPO(S-vDKW?n15#euU~|D z!iZ5LOJduO)?f}P9qJctY7J&yF#iktUG&BT=gUZ@(A^r$>d21GSQzpO30Hq%%S8jH zc}Z~g;X$yBaBm&qB$oqYdRT*bmj=(+=E5b{V7@}XQmos*v29Gybq(eqCPu$ziq-EF z7tnejt--u-@#0uin|sCg#aoqLQ*+(GNfqaY$2e{9oe8{)$4{GzKBlmAjD@RChI@f9 zKS+h6Dt2kD<}IA(te}@BRNMKI#f2?%=FPJ2U+@ab{Dli@S&NBb&TO7jH)z(JrWq4d zDKn-mteack%$nob^-UjqwPx4#n%^OhnvaH?ypQQA9bnH8?*vaty-%Y!3L|{YN(l*i z#j{#FC%MouehLNl+s?i|rgy;fett9Yc?ZnBN^bAogkyseR=!s9)68uaKW!IbBFb|E zcqrHiYNj(691YF`$ASyMYH%U=3GiZ&IP&M!s)+%H*xCw`gD&qTX?7DYXm`3iIi*X* zQNDyP^q@=Lo|r#p!OUj&4p#gOL<+Z^Ri)l44VOA_RUFr)${TLV*Ghhx8PDLS?HbCi zJbxOLF0TbOul@`;9_#?s2(JT|fGa@42G@hg?A^t?!5i5B3pkKpxc%G{*`GG)P~*1t z-{D7nux|DANK@qj@*l*7;pq#qSI)X!%4n3R4LM`11ixy|jjq<(PfFtw$=rGC}~_1)5v&eF|>o$VFu z5$a$5Pq=dIqBXt$r7TL37hcwEALVw-*;>fy%(~{5ne)v5g#zlW&OaVN-6{i#7dx*e z`pqsAI*II6FBr1So7YmPnp~?M-3!^^LfLRpUC!E?c%f~vo@VA>}1ZdoB|hczaf zko^JHX8sALZ9;JrM)(;i#>Lc4$E18>G4>spC#aqTi3d`>O_2 zd4o4|*`{{|li{|I770rlScU2rpqooJkDT?76Z`~|obga=$RwZ04f9Zc7);;A0v zb*nxntXujLzU!Fm4;4pYuPt-9`|ZM8}d`+;fQ(k4xhVcFGg;<{D*(J9?3j>4#)ZtFp}dZk$Jw(g2z z`-DBK-D@1pS=hREl96Fcx9XR|P5E2NPt`MzpSBXpt~?(C9t<7|D&>Ko?n4|7P62sW zwe@UJYdq(ITHDzM9s_C~cr5rWkn3(6r;Z2HI<25x$yVd`Dm6*R>i_QLm!1PDj>53c z(Z13MWlQ!&Ha0~4P?)+48U63xTBELnaCP>&vBnV%ILv!4j+84)l2p))RBzPF8b)6@ITGuI?JsGS6wXSnMsP&wxvoYW@a4dKu z$eoGSn?T+TZoLaE10MxX1D^mVg3p3yfUkpRfvZJOeSd!1K1)R%NNoXDUzCNfz$W__#Zh^M%M{tRWPQo)2bb7qHO=wuAPPrd zCGIz>Z2K!lQb%`U?x6~;TiC(^5OrZ1y6)W{j}7=Ds9S8ct}N+WzIt)pNu-4qNf$QH zoM&MMc!`_DgyWFD+PUab8kw8C=uC5Lkkas@z3AdZcBHxsH|cC8J39A6URY1PNT0L8 zL&1x{qe1RMwU&a7-~@0UI1^-kW7i}LLD|#ApmH5w2dFs;_pEGuS^|ER{ma1@z$?JD z;FaLd!KI+`sdbsMn^y26;8kF{eNQKxT3=X&>G|hX9833^ilg#QAHOqS$eLaI4asb{GQ#1f3_v-wq+5{C+l~ydc!LTO$3`4E}B!v zgC*CRC0R7{vUv;f+!i)WEh51PLYwgIGCp-x%?eBtI2M5o9cY)srrJI#tx-AVtE_({iJw5+e%(3)Z zCdJWMehfc-sn~73+{NmLw3bQdT*)tPPp1cNPC;Eq>GG-XN?*$> zj>`8fev9|!pKVEd;_`1o{p_hbm|lf8&`b(ZcWnJa+y->MmHgs1Q0dDy6;u|cfk%PW z;9!ux#MWn@1=g~EHmLd1xnLXk3GhLXd1~t;AYp9YbOD&w(FBgiH|a=vmfqgsr}WeP zsp2TiXnxH-=tyH)q$I+1x6!3U{l}PC0Hwc@-yZyi@zZt%dDl6)Z(;3%dts)FPlC$F zr@(aCc4XhA*`;i8``$Ne-+nq#`!Bci4%)5kktdF3=PN+f%O)D_{z2cOvx`(0l?yMe zZ_*czD`qa4Grwg%&9-mRbPn|nCQO=ESw8k0zCL@}q|?H79Y40beB9XaXVz9$O`1|QsrsDS$y2H-#+Ku? z!G-G6eW*#3r;jb4G=Y~E3W_wxb=$1^*|qNW%09^DRL*TCTg-F$0$WYygf=EEW|>9b zq6$Lx)~9i6rx%x^`z-CtV%u+TsC=pnQ5o4 zKar=69anQ2ePUkG-paqqZne=umsv4o6{JEyuVN;|65ISWQG3~+iv*x8l!Hz-QNQpzSzpHziSP9JJ{Ro2}?L{+nD zZQ7)B(Qt4WyRzh}`bG2b&boN~!lsF{nkKi*uWy=DM=v>N0rP*AR&gen>W*Mf4R{C5 z*DUBq!q)2hdYRa2z8m^N`r zRW(;MF06pxf4&}V%l}<0J z#=}A_jTmNDt>ze6#kA@vRbx*tt1X{MPr#bil*LG{mhcl_(rJ?_D$C2F-i}on+GEU(Ke* zsaLk38_ku|r=+Viy_i-(FDB+$mJ2n>cCud^YYU1YJDx~0qwQO>O)aP8wu0-`(rUDf zXcgO79z!WX#s!cJREmjiaK1?r|)oE$Z-wBp7pPa{gSVhN)^$%BNXg zlv}?JT6qoY!V>R!VYKRrwD{n-TB|JJXj)=<<#;nF?e8P=^0lfSLDr{HqiotV2FHp? z<>y4Fmr;~e+phHL7h9{NSwtkWyB_)!Wka2Ad8L&9L6&E4;Y{2YV6@l0*RE@@bsw>? zSJ$=HcbL5ET5F|O*lXWISB>s{g}p{L9{ROelW)7VWc70= zyn5cZv2pHUAn&>+{5g|%UHkpf-U@&G=T3h5?K7YF(|-Tl^S-~XZRe)S9FyNve9S-Y zTyWOqtIz%HJKw$Ne=p%)fXPR1{qgZXy6E@6eWvvIzQb<5f*O3o)&17Em$kCj(WxX`UR|2fBY$C~rqyi)w%VpaFZL4#+^Sx`5x zWmf%+miaR-owHy;^KMzX-hA1j`rVOGd_noY^$Pv>weHxo**% zMY|9?RKemQa~5%dND8~^fMAy+W<3`S3q2PEcHcwy#N@l6KlcD0g6kebU-MWXmLF{M zvW%Xp*f$UJ^&G_*Yn5TsEga86jAepPz-mlZ>siJ|G?$*~M-XF`yJxJHX4KQ&DCQlWWrBTR=bLOl&oaTGu=7l&xADa?!SS#eCL8QoCb$gd z&au?9jCombvIioWzP~tzxP60LJbs1%}@5F$q!bpSUT|>)`l+>e$afz z(n+MBd?9bA%kW|AdS}z$UfH@oW-oiV4=j|-SzNMU;iV;q&pNK80sr##O?;Y(J#_DO z6=3E(eLLy0l9|mVvs>oPD!ri@y|=j<>yI(F;GRbM++8zRVKLZ036b zi<(QC7nU^D<6x>}u{FyQce6gc_w9B|X3tqtKdaUkdG?(8d9$pjDr1!7NhS78itVT@ zsgEdPD({IGI6h$CkV-3|^Z3Kzw9ezlw!3TiVo7uJDPK{#T7t}a<#7Wl8}96qkQLkx=cTpa((AxWLte`er=ieyfR)F& z53p0L9>X0`&Sa^r9-F5fQ^$P}%b*oLyOuokCt~*3z4r{t{a7k?fh#M8Pga=9I>2Yw z*3`GluZY}#bWH5up6M)NCze}QzsqkyO~L4?#r>{%nv=*i#*+R)ziXChht>HF&!1;>k z{g$;8IH~r{9W|Rf$~NPtgmvnR&(z+y9614~+5DLay$h~o+4*LCF_^=a&Fz&OVmA*h zZpIDDRIA>`_ZoY7YbmBH;S@pVVV#GN0&YNZF6kcz>gxm1`qgsCyjpUDB3KZAxQAXQ zboika?>)3Z^)u)z^w!}W7oekDdZqX&wxgrwqNIMdb&hfZ^FV=BT2sfk;rC~Om zGlgxYURk2cJr0nPZPFLZ`y+C_gz7TtBwUZ-dJ^a0z)HjGu!%esTGWm)m~uCz+D`vr z@o2S_Q?FZgQ(@iqnf`p%XX3r4v&PbC!yUvCu7EgQXfHBhSR20AvjWk=okG-YHg{*N z+sF)k%vM}RbZ^ZTK(0Ajj^C zXe@8woyw#voG;K=H*0dRak-SB?5hFDNzj1yade$>)*CA zhi-eT>t?LfjKy>tHJhs%cuO;pW4evaU50L)p%lkjR;=I98>&6dPg3KX)y)b9F(Y9< z7?jK%3tl_q{70sznUs`_p3?nzI02%*x=+q$GaP4Q;d}B{X6#7ujwhmE)~# zOScBi!_5ZCv2$RQlhbn8lX+zOC%;y;lohm3$P}Ak?oawy)lf-=Zq(v^zQma{WcO55 zD?+S4HkT$l;avt(lI1m)G)_wtBR+X;{?u2b@YQ3Ab!X7G_o>BIjb|mIxC8BD{hXui z@&Q3}nUCo@XxAlBI#P*uaXygi`+UE_y%SDZw#@>o{N40(vHG(lG%;wrGMOnmPgUd6 zgmm>DN>*F97O`{sJd$L%^TsXY94+)*Q()ar7&C)MHd(hoMu!W{$SjvC?gh_u{f8ZBJ7F|ZR&#v%cIaFLX!!?>eH z4Bh&6dFGXJyDg0q7MRQPWiXfLYhk*PjjI%xZf@rWUxRU%4fY7k)V&fxL8L@hp zEGsu?gt_uI!(7?!fpIsEqYuDbIUa$z+O4sV3WNCb2-rCg!4@H z4$RrhKVU9b1vFXR{?85i!}M?E~isrE~jU~Tux_2vKE-r^EDB> zDPmuY!rcWM$~lUI2VkyE{{VJ~o%dCk%l$84E~kBRode|DAP?qpB{wB5R|mjcu1a7o zSI0-P(JOHY#GLMXV-bGhv5Yj7He$u;Soq z*bye{h-5#59ci++BiWx}N11FZ%$04Ays$(QVMp813fM$gaWDgRjLBxgT#I@a)?l*# zg}IuR>+EAqwhzpud>Cw|$&P|K>l_Yq`kMf|(2iEZ>WsC(bkjdK_$17oqYdV?_6?Ye zyDAFzN)+yO*l^+&2X95;4#>FWB)P%Cu!(l`NSHfEDa@T?ILw`68SHq=K|5@c#kdXT z&ihvwf8$$yX&)$dU zLQ4)#E|1P8vTH81p%bf!mA++HhYgp+B^8^&=pgGKvhLvtkO9tmL#>USzY{D**`jbdJoe?8S(~^P3~ep$(P*t@G& zT=EK%R_rGmW+RfM>$E+HQNk=D8|Gjnn-h`|NLJE$Wy4HHBL5j#$s8mXFluBat%{Y9 z+<|0sB&jW5m@Rq`mXu{@ehVcpb&>q6i{v*63GS}6Iw+OS9|`jaV@@`Q|3I=XA=w9Q zJwo4|4RZ_!Cm}NwJf}x^$u(g#3dSx<;Wu& z#$xGJo@6W*?_?zwOFf$pBNrwE2bZelN|GB4^pYRZ6uhK-vM$1cJa&Do^2xe<3ku^B zJNtmF#HZ8S>eN#9>5TCbE0?7+F)p!msv}9<{S{`0s{~yMblsMF9a@;cEtgqr{ehSG zg$5WVrIc3V4zrl9k+NDps_|P`DK~gxVO%WlK1*r!6ze~HEDIAn!=8C$dw&k;cIlyaa|n5MV~UPO+0&yIjKq>$UgK>%EO2CNon#?eGkX%adz@p{E>3Un%{Hbg0G`{IRx4MZ{Gqrq5vFWlPA(8i=nD@N- zm+=UG9v>kKQVaExCkWSXCZ*Ae#oBOTjC&L=UFiFRyTu=0b{$-8ZB_O7TKPmAr`JzI z*Ktlft)ZoP*1}5{M4sX@C!BcVsFK*WBj0>OhYTAs+``K@UqAEBck?{+-(!udJKucs z!uA%nzixc<<#6qA2jT8I!3Fv|Fs29Je6y_63KI*%C4KWfE zoX>XYO{AA7k#D|czHB>i{(|r~p-m0Hi~ zHFNAF!hFMrQwQ2z{$`Ngn}ivH4QPwX8ycPyTX(&LFjx9;(qB(L3$G!}XHwxXxn1&E zs0q`|-Q=^dVrq4DC13o*muCHfIxRz<*)p&BgL^Oh3wa#q^(1Iz$X-ST7I;|+quPc!PLn0F z41sd8h&SC^mT>i!@BQHb%QE+j^NVgK)Nk28ZO*)U z^DC#X?tanh>}?Kc|2KYrqu+nm@89Y74^k6g`-0!U((i}yC;Q6!hChCb-w)H%Wu&$+ zz1RJ|(#!g%TIo|&NZH5(pk|7XdHL6S2d%Q3Z-9fqhd~|Z7IN#!3J0DB^1Zv(bHOLU zPlDeAmxE7%p8;2bUk9HB9|xZYzYo3u{t$c-d;{bqkXH4PKLGQ{!w*4xTmnc!!jo_YQX{4Dripe{Uq4c-sF4eBEQ zH{jFYZ$Vw+{~p{M&20qt2mb)-7X2phB=En%S>PYR`QZP6n$&LwH8K4YsCVMGfV$cK z7jPB$SCBFWTS4*?{0$^8!T*9Az-=Js3f==rL$lV_zk@m8-qh0`;J#oknC>60CEOB) zC7QNN7!>0D!&8(i{T*b*Q9TQLXZr_D{F<^Igi;N+f13^>)wtD^)%?|RSsd;D>BLumSuP*a+(KelDm-Ys?{A{}-eU zw)RFJi@*cGi@}4yCNSMj)Pu^RLrYG#6ZHclQa->GM|u_ZinWu43z}!nS+JPFg0sYb)|?)P$Tdv-KA6S@3QU`)qv(q}`f-z}2AI$PYl>r2Zi& z+haVjG3^!b2=c_EV;jSM3=U!cHSjd>b+7__1FQ!B6I7pp{kL|2+~{ikGWc^)W7k`t z9#{VoBu~LQP&dPV4RS1a8`Sv+@(Z_q)NCm`g;TAS4_OISe-tNA{)mX#K1+(bYHP4bAe;!fYyg6K?fuu3E$ zUTH4DIZf3hUIuUi}C1Aa6XtZ#^D79~=gf zcIzl`CaAHf4r~Hvfy+TI%UiDlXM;C_3&1DAMWE(_7lZ!=(g(Eu4qOa&f>cARZV_J! z9sw=^8Gi%D)7EnEa&Q`W1$Z{N6l5F=TKW4Vcr~aoybXL1Tm~|44wyf;J_BA0z6G{} z%sb7$IP*mFFTP(N=U-f}W!%W|Vc_S$2_QOa)w=wf!G+*0;KkqJXVIqes?F@h?@BLircahGP(CYleRU;B`!OGt7lPNY zuj{H$gVcNQ8Sp<9OfCc*W~urxy_<+7w4^ zT(~BT7^v@G)Y5ESzfughypZgC&FzzQvaUO$wdQF(eV;&GsLm0q&hF+lGNxvJtkZW6 zQNxiy7yfSX{$d*mR1>|Mt&x%VY5%@ds zSdcKSdi{_2m0i#O0bIa-C#VNto4^i`G+Jp3=9Bzpa5MXNfPVrX0{;wt3;Zj{Jk5NO zGhZ@a9oWy!V%o5m=Y z*~Va2t&Y*R1=(eMf^YZey6H>RUJfNCb0A#B3Po#ZGIUAR9?EUflAUtV_-q0fwwY`% z++$lf42^3G+rkBY|4nRPZG&FbwzYm=SDMRD?g?uClL0lz6o40k9|0S{e&9l| z5LDMw4BiXw3qB2g6nq}+57It^{Xxx#4g}u?4+8%Iehk#5)WINO%@6tr5bd>=gY*Hd z>P3zK7lB8D?ch=1J>b#cb0F={+RAa@kJujs{t-L@d>5pTY5gZS7|caaT+_6E1RM$; z1`Y!c2Zw{lfy~8Px&L5(!%qiCv;PoOkDGujqTPqz8}XgXroz%O~J zKzfl4Gq~wHAGVE0_tMz}P_|nJ+T0zK?M?zU4>E&sDW*F3MQZt3f>Nufp>uFtL_5N2k!?j z0sjNM4154g*Nf_3^%6F(biJ(RSo#`4ag;CNn~8d{ThZ2Zm1Z~FhtPE2zt)*o*w-+_ zd@28FotK~^mF*BvZS7D{Iv)s1=k$%H^CLm&{3!5rkiN2YIyeMe01gE&28V%Zoqr9v z^pnR=TUzJLw^(S9oZBmo@+JInQs>#*n*U>vkvY5ZmzQi#Kx{w98253 z;tb#?v{fBKyUvwqoQ{NPLwDBxr9+vC-Lk5j+1$|GR8F&~Q*aDtW!7;E5o0(>fJ=9IOYw1I`1#3oZk{ z2Ywo4oN85HzF-fHTh0S>+SBsCwO{HTc$MD1M`*c8)dS_TCQTkX1Q)fFC)7^Bk@Q$5 zxwx7|ExdGad3|j&ll3lsp7-Xk{B7>ETj$V;rgP)0GaW)wp=)M2Khpj#Ib7bK$p1xo z@Q#`;kbvnM$2Nm^{1>%h2;%)?Xi?Ya?GrD;CneAg=3W|GCh;DUu1rH*R6 za;}1PRCN@(1(pi-Vc+|NRTV0-`S#tRXWktKP;!w|-Y!me|8-t=b!r)MWXHSUc2{~V zLN!_Ex^ZW^(qm6sI4IVXv;fZZ+-}_Uh_ec7w^g`j9<_ z6BPF9>MNFO0OVbL;C|cWU47v0$+cu*ug%*AjQiA|uN`>mX}_B}_ka2y7uYw&3ww3- zQG2z8@9Nw4M^4_wm#!8=cIU(Q9FuqT;mf_I;8VH$t2=4N?s0wkZ|ZV(7af|0{y0Cd zOVXWlC_1<_@|ZigbWrJ_!KFinfiqfg6F%d^c2|qbtER;>8W%P!n6YSP!@@!HFK%ug zRA-+>7G0EmjgVJ&?KQ%k_cH7Cx|5Dtcc7Nt?>sr{aCe7|Bksud!|-yvtA1c3cdmm+ zgzj8Fa8koU&#)vutVGET8@byOAF>;hD&1|l8a~7)6%~2-2iE5YchNgyXqbs8TO)?; zzCsTU3%wh18d*p-r;$$Gy)a$y$-nU4%tao9U&XJl4eet2x_51|jK0RGFE=AQ-7|d1 z!oFlO-7gl)1T$e@HW~NsjAa7dMZUvi&7NiKuH)?{YeOcM(Njx3edZk3dzR6gT9$+S zK<`mrW#KeJi{%H`M6%CCGQH*C!rdLoxIg7(-;89BN3!Q4*^80v^+@(+BzrrO{VtOI zDU!V#$qE?xUH%F^!&5Hv;j77WUt35ghKE_MUd1xOEZ99JYw#=+EQZ}{vP(V71XsiE zGnrfih-HEsVRxJC7SA%lU9hj1>|W0@!Pj7Sne1WDGQsK0LtI|Y^ehw1i)8YI?DBVI zBx{Xi*F~}$BAJ%*yY%jgWDiBMM zvrO<6*jG(ONOnLZD~)8sBH74(_FfC6T;^GRaII&V;JdJIS+1V( zEED_y_Dz$$;#nqG3wzXLZ+Vspegk{NWWV<;6CBH}(B&pO!Lv*-I+A@nlARgJrbMz? zk*pz-ZGl}wdVPa2T!@L~2NOKY1kJD~Ot!?cOwb17o)+Og?HQI0<9-*i&wG{$?u4m7 z&JVugStj@qmmPocWlF5Ix?youj(PGYj zv=|od3lj#<> zSSIKTd%+6?WyzsaMs*Q&b%z`U)VBd-YmP=WR>asg$rsIUf9S71!p$TsT;&oh8Yv;FKoGJM%QDDW?dNk z>7DR}-|hRt?qM}topT7Yt8sTV-r4RW4+6=5it9zpV9@-<7kv;L593>Vp}Aao;jY&c`LjHM zdf9Ea=WSPY+4KR*w5#U~bpZO8kp6x25ziCcy^Q?<`pI}2;<1+qWV4C=*p6E`#d)#4 zV|IrP?`mCjmnSO|Yax}dIFBum{J{CPHb?rqn(tkW7cT>4vlpO3)J|A2AGBU}HGg5B zl+6oHQLoyxtT(ThowefWD_KhRr0#u~)AT=oO*9z#0`7WOmu(SWUAD==27~2V*(Qb~ z-6u$+LEH}EY*>E#P0+AMFW#nKp{3p7R|g7Dk?cx+%mC?o8(Cu*bZl91id`a8WcIK9vjund1_Un>nye4ljugM!oXt|`79V--k zY9gWKD_cI+u_YmD+q!p4X0?@tOa+~HcWmjnMKP-q!8)Vd>J84er5l3gK^IrmMmgD^{w!z5;UER`#lF_Kt ze0#SWiK@QCsySKpJFc;fzek%?S~u0*xu-X=PQE07$K?&}z0E`aruHKF(BD$okkcnw zbp+bd#Tj<(`FN@x`ig1xs#R((G1u5Pkb-Sm{Hd!5ZK`0|xHcK%7|$a|26_dF)o#}Q zv~*VOPe%RZmx!^0_D6GL^>NbTcBZ+t%XZ#(bL+QEH>+jN{g(4$GL`4sT)$=O$SXeL zLz~Fy*t}x7EGGO+M9zxx+}`agRIZL&^uMZs<<7~Bx0h{DW6Cy_P7?LW;4QL$la18bv`iEorPF^!rHzO~8Yw71Q&ElRH8{B)eQrCYGo&~C;? zt+u;P0pmQdo9+Z}=9^UE8((ym*^ODtNSzrTf>i<*;k=-TxjNr^uWzM6F?_-&dGq<8QZ0cAegP{gxd} zcxQ;}3_DgR9-V)`We>|{Zh1<{SRak{DgRTwZ6^ks9of}i zyoO6RupwI>VEh40xSZ~w)7 zc42jy>27t|dZ)B?4m1Fv!nF=w6Yyn+ilmiQ6oyr172Y@{ak#x~ZQIhd*0Iq zU(GI%eAvS)Mt!Z1jCTQlf4QpQPeSGH{zLXHgqq9@h`)beW!{=bu zhDMOHVnS}8_OjPHDqfq~cy207Zf0<>f;XO*IEGg4)MP;q>6AlfT70oVW$!3^4Z)`H zg#AaCz1B3Oqh?c8V_hNh_z03xUX(ay zDPNorg*ko=bL*0FOCo4{*;{Q(-wImFI%?KcHC~!H#zdsDaY<4{bu?a<5QQhJ)5*wQ zN7-9pW#n~Kyw&fSqPD-E(43FB-!pk_f1A-VhEuWknY?Q=;cTVmEhdT4SdeYf8`MZU zD%LS42{oM8IVc-zJ5i$WD%b{96}=B10r8O=gD$foH{vx{>yr{KldX&$W$R*P*+7pH zrN!q?qGLNsxAT66Omx#;B;|DTF|CSqQyacW788n!ZJP?ikFLbOxUyB@nZ?i{FrF+)^TOE(8CjLK%o zowbbV6`P~>8jk6F8|#Gha6GbibC)4{~UAO+jRkeKyCVs)OoH@7O^rYxrq8-PqNO>yY||dT`(B+FWUADYDw3KOsHR+NLNs zdMFV#A6j=$ZQ#n)W!BI0)tid9bU{$@R!7ZSqiYJ6j>m#KD*Dq9`V?Q)PD8fo8lm`X zPDjpXDjWH}7Q9$IOuf+0?fR6hZ!cTl`H-w+Ll-OY`rfA$4u3jYD8-*%m+~_(+^v>1;bEbwl z>CB-1nypn0dZ#*WuidJj4xoRm1L%2-aO0zm3Oy_s%Mz3`3Fw4nNjY9TpFWr7*QNg3(d|>K~sr>efn}^G%R68UUt6SB+zkJ57Z<&AW zP`@l*OK2#S-+jWF`39Ae>jjr*O&M6umWcTQ^KAA|Fr5oZl>oDMu+8u3^q9kgK)gZ= zWafEMkF#AfFN)0ETgP`(iFI2747wm@&^^t0ct$VB6}%`png7#_>Hm%VitT$p)h1iS z|4U7F2mh}(***OKg2{f%|IeCCx1XI%9nlRY)2#p})9ry3CSw7xhVu+Ldu4uol9o*R_FZZX*)*yoLnhPm@jgh_L`K{f17V;8_Q zdCv{z!M<$lOR%3Bdm46zvFBi}KJ*2tGfnniuuEaAY-INCbfvXq?rf*SoUYD}*d?%X zi+cskY3&|Zg~`4JbLqVSlP%;1YhgFrIrNPvJrBwa-i5hy^yNj%DJIi5qFlIPFsI$o zFrOEg)9&O*rlpNeyZRoK3wJ%N($drSpqzH^fqlhf`U;fO?&C10-REI0?rX5SE!-D_+M>^@_IazpJ_z{Z)Z3g)zXK5V?n7Q!xt6$dxNoOW-AxwE|ibJ|@Gn_w|E z!kkWv`i7QxAgs)e9u9Mss4q0RRL+E5Vdq!?JI%r^hB-}M2XmUd3Fcya8Rj&3eN@obW87TnA7B+VEN4dchFsHv&FsB#2cA9TTe+qMY*#^53S#glNr&}zX8x+EvUJih{91MfGRK`WD zGGg_xk66l$FqiUGu)R!n4b189epo+~eG7J}o%cmpp~-#}h0}|wMJD@IBzqU;a*#t2 z_qL;Z!ra+PVEdTtaF{#WP*}0aMn3=eivS(pVlbx{r?WkU<{iLzpDBfvuUziJb2#hz}INPx>7jAeIt}F^S6?Prr zii7iEda)`um<@9=7QtM~%U}cS=nB~77URx{JqUBDJPtd^!aW0Xsk{VpspxA_AG4zy zU`_{rgB@(Le@3!?1wl|^vSOGEcO>i(lN|?hHhwbf>n0lub2dH&=FT<)_64k-3@bAyb{)GvLC`+T)jfP#ALsWWO{Mf$=-=%`IzRZ7OoKHa(Wo-<0d-_=5jg` z_Nd8Dfw`QX0dr?N8}>~*It%tKV~@fH8hae(a=HfQEbQ%wZGs(c;oga4d(t?LFxg%( zXMe}Sjx^aw*ipvHV3)#*g9~6so2(Hw-&ixuE&G5<0h+xIlat>x$|BL`;HyeYt&B|`yK2!W1TRkmpy6Z zPA~gK>=4-T7Vd~hb}DR;$;QK+UM_&0V6yqJQe&6HoL;^F8*H*WV6GfrgAFm+w_#3K z--o$8zXls>NBSL|Lt&JBuT?i?jBcMiRV{=CH)30q}s9&Dnqi(&2@ z*Zm*%-UYmh>fGa=aE*IMNi-@})TpRfZ(ITdFEt@VK@$ie!MmG~1QUcLCOZmN+Ks^$ zj2vm}?O3f?t)1L>n zh8l4&$AS%YG?a~_6sj8@mSmyI%+pJtY#diYJ!^RFP`4U)*Fo7hmP7r}JiP_#IYa#r z>KH@40A=I&9n>cc?{z5a_fJr^1a}3z;S7hz8h1xP*%X`t^}OMYg}N20&^sH-hEfUj zBlGk^s2>}O*D-Yr-epe@;{OYVC+bi9)PMRH!)4kfJ_EL#CMsFMJO>Dfqe<(*R*_veF3TP2tWUdeB$d1Dd97IVkrm<*I;6E{bK zM8!-^wC+@2M8&lEA;UuV$_hRS%G5jS7y3?@wj`Txwj%AsGfN8*>)9v4yqaI3nH1Y1 zl(?fsQw2}iP!@ElXsE?O(L4zqwfP}Ga-)IvP7&tHNp!Z_@-XF~Kr=6ugKvzZ=umWI zOzxUDugR(;RuV>0evVg;#&D}o8J>5T9G}zHv9LaA^eJnlPU<=mWgS;kVi?7Qx(j9! z$BCMzPAsIDGUfIiepC7Rm(u?dzajk8W$9Wo6dk|dL!c&a{{fB%zY5CD*Ffd>VNeOZ zhMz5NQMR~6QDt)MQ+wvo@+evsHLF=c4OXIZ{SREeUHQwNrd>(rFS0G-|Lum#R%V)B z=#pG?MVr%u@S=7Ya;@RVU}y36`BN`R%jtTqM>+|R+Ue<*)17t zn_UW29yq^f%0YG9mV+o;4x(bx*lAh-r*9nPH!;?a!V5=Q9U9K3j>60~)|21;Y)((< zpz2`Rdql8bW>@!;UEUI{rBdtO-!_CjQ7fu;@;Q*jpxn@6(8e0PZIb+98xFyOdxhu+*qGML84hh;k-sQ8g6%xH03kxSGb9q(#;+XYA-Ax}h*<+~|{|oUvy{IOE4w zMmfcEqMVZEC}+~@2xr3BHBrv^%@NMTaXX@%@pQszX`VDDFUlD=Jj$6^l+Gz0J^I2Z zXUv=^XY3tO&V&~toG~RYM>u0gZ;5cmkKG>S6z`01CXCfU9V(0B2@|!Ho5m?=k8mcA zT@-M_mKrH&v_8v5_y@(A;lz!b5utEm z8R6s^HyYt3yT1~GviPqv@0ydY)rrHhY5CMEVI+45{icBv_ybC!P#D*g6z zkRkYIIT!f10jDv8(~-eRWpHlJ;C$6_@`5x!;W)8?v(a&K1I|w~!g(c)!%K2U1Mf@r zk~9owVSAL5X0%*xWcQ`lm#8=0y}(N2?-`tUPA|*4L36md1_x;#2`9yP(aX_jpHF4B zoCF7iWc6nb)w0*kWZbk zUTI;NBfT?krE#u;v-;q$n~%fsFPl@HXz?%0c_4%HWCrJ_0Y{~y>%TKN(tvI+Q-WEI zjXTdc^TRpR1{dOJ`+&WCH##+u&Z$o0Si{|8C%y+)?H*I!mD9&gfSO`TkoImkl7DD(|T@j!OBaUXBfC+!Ksdy;7B%osMI}83RY(`J8-+Yc!0! zUXBfC>=~w=`Vy0`MUG>`k*`#kqjhcXre2N-XQKB;I2`w0wdIA6w% ziBWp6{A+;hpn8ejF6Jf@EeqQdiFx+euzzPP!udB?M{gt)>#nn@>B`_H*|cCmaAS^|XF;45s{r?vic2 zvDp*%zQ2xzIt7>LJ&l?O9iUBQ93Iwq=41oqXUi~kp4dDNosiajT6|a2^!siH?$WK?4`tjQbgJ*dVyTyD?2!&$SY$0&eum@c9Pob_iR_hQRMEJk zCh8j-JDNH>tJ^xP-6+N3Um6kI#fKZ&PSE%v#o{#4z=FDrIYqmVVs5yEf}Y;J6Y$p#xJ!Hx_dqE{R;7x;|e4@-D_jc7BRS(Vx%O`(?M;f;fqk}G_Vvr z51b5Yadis#aj*is9-Im;2XT}740t~HHLw!=IyeJd2Udd{!CLS~U>&##oDKd8yZ}_a zxDfmscrlnmIxhkD11|-2I^{BOI5-Ey>XNZYsrRfV?#n@>V=Tg60Y>YYEJ2PWY~@qe zC?;wrc)i~oR^k8jNIjFE6L2ehtB-od0M^>nVC$H|_pd=d!AG5bnseQsFS@#*M1?jD?E$x0qH(v_rm%Muq^}PCWW8&3RJXL(v(`%aMcD6NK$?K#nttvO-s?E%n z_T)BMq>UFyJZ}(!%T{#xL?F6TT{{UqX>JaK1 z?KCw4ltm~k*LW9#r-PS(mw=3WsV?wx@Y5jYB~$l+jo=r-CNSCteoB5+9n{c-ELS=JXx;(wguUGQgUT3p}oH0 z%Aj}df~op!Z1AZYRlT=1@JwCvjdXJ!(R75WOU7JGix zPgk^^s7#{sLHSW#5bg*>o!&=vwf-Nr6n_ROdE15|j#8?zcCXuk@)vCf|A7pZ_pgF# z2M>d42VVzgf!_c%?mYswf{%hxneV9`Y{y@8TnM*=KlLGV+Yag^`G1L)5UKW>r>J4P zNW(DILruf)fA-WCzKa~y7XAw?0@r~jfQ<2`Ej$gXEvyIC7QPRvEj$CNEugf-w1thJ z+QJXOXt^+#*=_%%x-ccuKgo~MCH(Vl%VkPSr<>*d-}h0GlF<}bB~wJnGzQ7cS~kk3 zf2z7zfIs$@LiC$Xy);RpBhDcp8`(-KMjrpmxIwVe+RxM zFMiS8kF<{Vdfy>G$Ma~J%g@pH5x(hr^wP(s&Zgwl+S+Q~s1_|Yo7fbIe-Vd&^|#EU zZ;t*J)$l8#Kd)0o=xpoiXlM%Nbux6_*wmRcuaQc+7^Yqru6(LQOcm;An%A<(R3p`h zF4&pXNLA3ch21{JR6)HaCUMLpP7?9k)|GU1(3*!YBAvZKoBGA;zq!6jeNuf} z?e2p`5Y26NI;KEnq535;Yi!f?8OmGbbSpRtqz0 zsJeSEcnA1J@Nw`ya6R}X@JHYp@E0I`y?L*E2>dJeYr*%yuYyBJ7js=>$^Gk~j=FvW z91lJM@(w5s_r`+ze}Y}ye+%UOLmJ~#p8=`ssV{^71wII_1K%e6r|2NZc|!|k7pT!q znKrAsvh1Sr8Pm_1c5Y%;dD-;JY11nbGis(()J((p;k4x1=Yo^VpnO1vIV)~4ls~GsbKBY$7>kEj6I)2#a`<}$uf4ei^CQpAhZ>neTo`#^zgZl@llI6HebX1e zGs3@urI9s=>Wwiu z$?9Wn!P^Ar7Tf*R!9Lh~GAbG)w4;$>88dHLIgK_)_x(?m?HE!pYud#W87C!j3x?v$ zR`OZuB|16xlUq) zq{Z<(Qs=mbuF+K5A0m!fTJYvTggD&w`VZ6KZ51s3TKbo&C~ z+hq%r&9nv-E-H0Udu@0%ni!e#R2k5@QBP-0n=#!)R!e%RZMFsW(=w}yU?u*m&#jqJ zS1s$e3|~eH$57KNt8H;BA; z3l9ht(`QesL3k=SbuD$)(CKa~k?OyeQmy4#bxJ|~FXHAaq(0hV*Uw`hsL_@L$xoBD z?1pMpCx#tn{ZohRqGad{+wPvK$6P_&iBQj_*wpLzhHvHOVM&+9TCt#MVH3xwG(u-9 zK_ioc@a(MQW^FruUr;AUrY}(Dj3Hf(9;%N)r@2SNxqEb=BrGP#>S@)9s#&gvDxS2y zB+dS=`qV6qTji~hSJljoyc);rn6sHdRDo`Em8F^rWQ3tYue7DU7gl^j{eWVV=c#4W zr&Ly$@kDLN2+as?6b_#A>!xZe4bV12W|id?mBF0R^g&m`imvSZm7k>LDw@Co-AEfb{Gc z^xcX|;VO0)w(4EjP_Rlt%}bMvidnM~=af}VtGp;kkvflxT65c%Ibl^ajkuN7zR~Jd zY9cj$s9ZpvKN{*jw35bl+g;!H!V>gvay+Pqi3cWYv{A-TA{X5=7d9c5;mcCU$Rb&q_iI;lUdbd=6NqA7xtXh%=Dh@ zFuUD1EZUsfe*?_@G*O%-vC3+)v+;xH7E#wPXt|>G1B9T|caBXqw70Z>0N=i}JIA)P zv!jR*KD0$-&QYCGba~NPMISz>aUa^~?uSo9uMJ_dS0R_KSC)DIQE07omT*7Rtn!J9 zd%O5AD(3x!k;(E{|98As1K#fgo>m2|yFUlK0gO79H^fmfPrEWKuPERZGI~rhDVXD^ zxYy_?R3$*oG^u*PQ8Dl9P&J14O-IGNbx_rYx86}P@5fLKL*(eEj=~Zml-9iC-fta+ zU&bk=Anxf@peXEq2E3O8-tZw-LCR3C(NS?vr{YdGKE4W7XF~agqhj8ZP_>5ll%rza zb5OGk?*&J3wwT$6LWz5$92N6!fjR@;P;axN;-1c-iH8pg@j~mvQ88~E)CGn&(NQsP zGSqCtJI7I2ID}Ftac`5OV&16ztmcEEn0ByK+*{hp-ADBC@hLX%`v=R zItojTPzl4^>Zq7k%_$0n68CiG!iKjI>TGyJy}|=5759caDrQtWH5wm{@I=MDHmC-} z>vUAi`vlZn!@J&5=r4d$$mlO{6xN;j&@&a@Q14+!VV&4fG4C%>R~R3Eb5zV5!W@2{ z;jt~)P%-adD18cudxtqH=E)YVLXLY292N6E9q@Vro|H0Kcb^Y zY%4mh6X)5U=`&v7ps#q+_|Z*%(X!gp^WN<@>1Es(--c&bBgsXUv}Au4-slre z`26n$Ms8W++|%>$riyH74nH@Vk+PUcFbb7-VFu-FHU3^(YdhwjF3t76s`6gd=sUm7 zgvGn^d+6cG9roSAobLB7=^BY{^UK2efqmzbDt30tE`oxVZHnZH=wUjkDtAQ{7L;~k zIHPArpccm0DU2rM6*=1u?Wx=4+X28v1^Q+3P%k5e=D92C-ZEifE@vkyt%>`zu;~Ur zZXQWrd-90xCHcnS3TlVnS~0+w$iOzhTYfTj4XoQS?7NfS@7{S?7yKRFuVXV{2NLn- zH-%+__Z{e^30r26&SZBP`Hu9}oWG2|cl5WT!9Kgbb2Kc!hDgG}W8WyRXKH@;56EKP zit~squlupJ5?t~CMAGva(O50m_7P_U!7mzLZqCq3a=r;w-q%e*B~M=WQ>AF-*=#gl zZB=;P>!lFOh;Z=hKcqAj{LIoC<8S`^^9MOsCJBqCc*)_$!IVB6lzPe1=2b^&lv#;d zb5h?kxzyLpgnq3pCJjYAkb#vgN|IvpBOxi#TB7D5d)LGg6w(j_~KPe5$@L5zdw`iO}#f9b1dv(Kmd*-~V)qB{Te7bFWR z<**x`fl?|Llb2IX2J(-S+x<(ebXJt1RX?{z3ja;SF6~l)Zc;u$O+~u>^SZxR9+kxSH zS)S9l-GC!goW7K^nOLDRj|?eUnzxEK40CB$g@$Tf+BfghX74<^CsgHaf09M*x!#2^ zva~}$HSdh1B+n#krL?dy?ISBQ2L%G_DMju1E|fs^6c|a+0uK&qBlZk-^~}uge)UZh zwUK+}6f0-iju6RdrnSBFR=Wx><_eqFbJ_Bnv&|p2M|P_voqfP*ksBLj(oiNnSR=@T zbYfY(`K};FP^zR{dfjh|c&52!n!!m|ioPc^ABC^~>xrdPNlcbh>rQ>I0-7a0t-sc4<^%Tj3jJAZtC zix~+uNWE1>p0N#9I&7JCRMD{y`|g15oyR4QW=!Dj#sSMQE0k*t5$WDol+AnnXKG>c zI+ZC1x3k=rO z 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