From da0d431a34b9c120e401d43865d14f9ec1eefb48 Mon Sep 17 00:00:00 2001
From: g8bpq <john.wiseman@cantab.net>
Date: Sun, 21 May 2023 18:13:55 +0100
Subject: [PATCH] Initial Commit

---
 ALSASound.c                        |  1900 ++++
 ARDOPC.c                           |  2069 ++++
 ARDOPC.h                           |   771 ++
 BusyDetect.c                       |   367 +
 Calibrate.c                        |   159 +
 Config.cpp                         |   439 +
 Config.cpp.bak                     |   426 +
 DialogButtonBottom.ui              |   100 +
 HEAD                               |     1 +
 ModemDialog.ui                     |  3041 +++++
 Modulate.c                         |  1066 ++
 QtSoundModem-HPLaptop.vcxproj      |   288 +
 QtSoundModem.aps                   |   Bin 0 -> 3972 bytes
 QtSoundModem.cpp                   |  2858 +++++
 QtSoundModem.h                     |   106 +
 QtSoundModem.ico                   |   Bin 0 -> 766 bytes
 QtSoundModem.ini                   |   195 +
 QtSoundModem.pri                   |    36 +
 QtSoundModem.pro                   |    63 +
 QtSoundModem.qrc                   |     5 +
 QtSoundModem.rc                    |   Bin 0 -> 5232 bytes
 QtSoundModem.ui                    |   516 +
 QtSoundModem.vcxproj               |   291 +
 QtSoundModem.vcxproj-HPLaptop.user |    34 +
 QtSoundModem.vcxproj.filters       |   190 +
 QtSoundModem.vcxproj.user          |    34 +
 QtSoundModemCopy.vcxproj           |   175 +
 QtSoundModem_resource.rc           |    37 +
 RSUnit.c                           |   768 ++
 Resource.aps                       |   Bin 0 -> 1368 bytes
 SMMain-HPLaptop.c                  |  1381 +++
 SMMain.c                           |  1383 +++
 ShowFilter.cpp                     |   234 +
 SoundInput.c                       |  5253 +++++++++
 UZ7HOStuff-HPLaptop.h              |  1023 ++
 UZ7HOStuff.h                       |  1044 ++
 UZ7HOUtils.c                       |   321 +
 Waveout.c                          |   992 ++
 ardopSampleArrays.c                | 16077 +++++++++++++++++++++++++++
 audio.c                            |   327 +
 ax25.c                             |  3261 ++++++
 ax25_agw.c                         |  1487 +++
 ax25_demod.c                       |  4313 +++++++
 ax25_fec.c                         |   417 +
 ax25_l2.c                          |  1624 +++
 ax25_mod.c                         |  1743 +++
 berlekamp.c                        |   329 +
 calibrateDialog.ui                 |   285 +
 config                             |     9 +
 description                        |     1 +
 devicesDialog.ui                   |   885 ++
 ecc.h                              |   102 +
 fftw3.f                            |    72 +
 fftw3.h                            |   415 +
 filterWindow.ui                    |   106 +
 galois.c                           |   113 +
 globals.h                          |   337 +
 hid.c                              |   910 ++
 hidapi.h                           |   386 +
 il2p.c                             |  4503 ++++++++
 kiss_mode.c                        |   490 +
 libfftw3f-3.def                    |  1017 ++
 libfftw3f-3.dll                    |   Bin 0 -> 2391615 bytes
 libfftw3f-3.exp                    |   Bin 0 -> 149709 bytes
 libfftw3f-3.lib                    |   Bin 0 -> 252722 bytes
 main.cpp                           |    88 +
 makeit                             |    11 +
 ofdm.c                             |  1555 +++
 pktARDOP.c                         |   198 +
 pulse.c                            |   518 +
 resource1.h                        |    14 +
 rs.c                               |   214 +
 rsid.c                             |   733 ++
 rsid.cxx                           |  1096 ++
 rsid.h                             |    78 +
 rsid_defs.cxx                      |    53 +
 sm_main.c                          |  2844 +++++
 soundmodem.ico                     |   Bin 0 -> 766 bytes
 tcpCode.cpp                        |   759 ++
 tcpCode.h                          |    76 +
 80 files changed, 75012 insertions(+)
 create mode 100644 ALSASound.c
 create mode 100644 ARDOPC.c
 create mode 100644 ARDOPC.h
 create mode 100644 BusyDetect.c
 create mode 100644 Calibrate.c
 create mode 100644 Config.cpp
 create mode 100644 Config.cpp.bak
 create mode 100644 DialogButtonBottom.ui
 create mode 100644 HEAD
 create mode 100644 ModemDialog.ui
 create mode 100644 Modulate.c
 create mode 100644 QtSoundModem-HPLaptop.vcxproj
 create mode 100644 QtSoundModem.aps
 create mode 100644 QtSoundModem.cpp
 create mode 100644 QtSoundModem.h
 create mode 100644 QtSoundModem.ico
 create mode 100644 QtSoundModem.ini
 create mode 100644 QtSoundModem.pri
 create mode 100644 QtSoundModem.pro
 create mode 100644 QtSoundModem.qrc
 create mode 100644 QtSoundModem.rc
 create mode 100644 QtSoundModem.ui
 create mode 100644 QtSoundModem.vcxproj
 create mode 100644 QtSoundModem.vcxproj-HPLaptop.user
 create mode 100644 QtSoundModem.vcxproj.filters
 create mode 100644 QtSoundModem.vcxproj.user
 create mode 100644 QtSoundModemCopy.vcxproj
 create mode 100644 QtSoundModem_resource.rc
 create mode 100644 RSUnit.c
 create mode 100644 Resource.aps
 create mode 100644 SMMain-HPLaptop.c
 create mode 100644 SMMain.c
 create mode 100644 ShowFilter.cpp
 create mode 100644 SoundInput.c
 create mode 100644 UZ7HOStuff-HPLaptop.h
 create mode 100644 UZ7HOStuff.h
 create mode 100644 UZ7HOUtils.c
 create mode 100644 Waveout.c
 create mode 100644 ardopSampleArrays.c
 create mode 100644 audio.c
 create mode 100644 ax25.c
 create mode 100644 ax25_agw.c
 create mode 100644 ax25_demod.c
 create mode 100644 ax25_fec.c
 create mode 100644 ax25_l2.c
 create mode 100644 ax25_mod.c
 create mode 100644 berlekamp.c
 create mode 100644 calibrateDialog.ui
 create mode 100644 config
 create mode 100644 description
 create mode 100644 devicesDialog.ui
 create mode 100644 ecc.h
 create mode 100644 fftw3.f
 create mode 100644 fftw3.h
 create mode 100644 filterWindow.ui
 create mode 100644 galois.c
 create mode 100644 globals.h
 create mode 100644 hid.c
 create mode 100644 hidapi.h
 create mode 100644 il2p.c
 create mode 100644 kiss_mode.c
 create mode 100644 libfftw3f-3.def
 create mode 100644 libfftw3f-3.dll
 create mode 100644 libfftw3f-3.exp
 create mode 100644 libfftw3f-3.lib
 create mode 100644 main.cpp
 create mode 100644 makeit
 create mode 100644 ofdm.c
 create mode 100644 pktARDOP.c
 create mode 100644 pulse.c
 create mode 100644 resource1.h
 create mode 100644 rs.c
 create mode 100644 rsid.c
 create mode 100644 rsid.cxx
 create mode 100644 rsid.h
 create mode 100644 rsid_defs.cxx
 create mode 100644 sm_main.c
 create mode 100644 soundmodem.ico
 create mode 100644 tcpCode.cpp
 create mode 100644 tcpCode.h

diff --git a/ALSASound.c b/ALSASound.c
new file mode 100644
index 0000000..cee100b
--- /dev/null
+++ b/ALSASound.c
@@ -0,0 +1,1900 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+//#define TXSILENCE
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+//
+//	Audio interface Routine
+
+//	Passes audio samples to/from the sound interface
+
+//	As this is platform specific it also has the main() routine, which does
+//	platform specific initialisation before calling ardopmain()
+
+//	This is ALSASound.c for Linux
+//	Windows Version is Waveout.c
+
+
+#include <alsa/asoundlib.h>
+#include <signal.h>
+#include <termios.h>
+#include <sys/ioctl.h>
+
+#include "UZ7HOStuff.h"
+
+#define VOID void
+
+extern int Closing;
+
+int SoundMode = 0;
+int stdinMode = 0;
+
+//#define SHARECAPTURE		// if defined capture device is opened and closed for each transission
+
+#define HANDLE int
+
+void gpioSetMode(unsigned gpio, unsigned mode);
+void gpioWrite(unsigned gpio, unsigned level);
+int WriteLog(char * msg, int Log);
+int _memicmp(unsigned char *a, unsigned char *b, int n);
+int stricmp(const unsigned char * pStr1, const unsigned char *pStr2);
+int gpioInitialise(void);
+HANDLE OpenCOMPort(char * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits);
+int CloseSoundCard();
+int PackSamplesAndSend(short * input, int nSamples);
+void displayLevel(int max);
+BOOL WriteCOMBlock(HANDLE fd, char * Block, int BytesToWrite);
+VOID processargs(int argc, char * argv[]);
+void PollReceivedSamples();
+
+
+HANDLE OpenCOMPort(char * Port, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits);
+VOID COMSetDTR(HANDLE fd);
+VOID COMClearDTR(HANDLE fd);
+VOID COMSetRTS(HANDLE fd);
+VOID COMClearRTS(HANDLE fd);
+
+int oss_read(short * samples, int nSamples);
+int oss_write(short * ptr, int len);
+int oss_flush();
+int oss_audio_open(char * adevice_in, char * adevice_out);
+void oss_audio_close();
+
+int listpulse();
+int pulse_read(short * ptr, int len);
+int pulse_write(short * ptr, int len);
+int pulse_flush();
+int pulse_audio_open(char * adevice_in, char * adevice_out);
+void pulse_audio_close();
+
+
+int initdisplay();
+
+extern BOOL blnDISCRepeating;
+extern BOOL UseKISS;			// Enable Packet (KISS) interface
+
+extern short * DMABuffer;
+
+
+BOOL UseLeft = TRUE;
+BOOL UseRight = TRUE;
+char LogDir[256] = "";
+
+void WriteDebugLog(char * Msg);
+
+VOID Debugprintf(const char * format, ...)
+{
+	char Mess[10000];
+	va_list(arglist);
+
+	va_start(arglist, format);
+	vsprintf(Mess, format, arglist);
+	WriteDebugLog(Mess);
+
+	return;
+}
+
+
+void Sleep(int mS)
+{
+	usleep(mS * 1000);
+	return;
+}
+
+
+// Windows and ALSA work with signed samples +- 32767
+// STM32 and Teensy DAC uses unsigned 0 - 4095
+
+short buffer[2][1200 * 2];			// Two Transfer/DMA buffers of 0.1 Sec
+short inbuffer[1200 * 2];		// Two Transfer/DMA buffers of 0.1 Sec
+
+BOOL Loopback = FALSE;
+//BOOL Loopback = TRUE;
+
+char CaptureDevice[80] = "plughw:0,0";
+char PlaybackDevice[80] = "plughw:0,0";
+
+char * CaptureDevices = CaptureDevice;
+char * PlaybackDevices = CaptureDevice;
+
+int CaptureIndex = 0;
+int PlayBackIndex = 0;
+
+int Ticks;
+
+int LastNow;
+
+extern int Number;				// Number waiting to be sent
+
+snd_pcm_sframes_t MaxAvail;
+
+#include <stdarg.h>
+
+FILE *logfile[3] = {NULL, NULL, NULL};
+char LogName[3][256] = {"ARDOPDebug", "ARDOPException", "ARDOPSession"};
+
+#define DEBUGLOG 0
+#define EXCEPTLOG 1
+#define SESSIONLOG 2
+
+FILE *statslogfile = NULL;
+
+void printtick(char * msg)
+{
+	Debugprintf("%s %i", msg, Now - LastNow);
+	LastNow = Now;
+}
+
+struct timespec time_start;
+
+unsigned int getTicks()
+{	
+	struct timespec tp;
+	
+	clock_gettime(CLOCK_MONOTONIC, &tp);
+	return (tp.tv_sec - time_start.tv_sec) * 1000 + (tp.tv_nsec - time_start.tv_nsec) / 1000000;
+}
+
+void PlatformSleep(int mS)
+{
+	Sleep(mS);
+}
+
+// PTT via GPIO code
+
+#ifdef __ARM_ARCH
+
+#define PI_INPUT  0
+#define PI_OUTPUT 1
+#define PI_ALT0   4
+#define PI_ALT1   5
+#define PI_ALT2   6
+#define PI_ALT3   7
+#define PI_ALT4   3
+#define PI_ALT5   2
+
+// Set GPIO pin as output and set low
+
+void SetupGPIOPTT()
+{
+	if (pttGPIOPin == -1)
+	{
+		Debugprintf("GPIO PTT disabled"); 
+		useGPIO = FALSE;
+	}
+	else
+	{
+		if (pttGPIOPin < 0) {
+			pttGPIOInvert = TRUE;
+			pttGPIOPin = -pttGPIOPin;
+		}
+
+		gpioSetMode(pttGPIOPin, PI_OUTPUT);
+		gpioWrite(pttGPIOPin, pttGPIOInvert ? 1 : 0);
+		Debugprintf("Using GPIO pin %d for Left/Mono PTT", pttGPIOPin); 
+
+		if (pttGPIOPinR != -1)
+		{
+			gpioSetMode(pttGPIOPinR, PI_OUTPUT);
+			gpioWrite(pttGPIOPinR, pttGPIOInvert ? 1 : 0);
+			Debugprintf("Using GPIO pin %d for Right PTT", pttGPIOPin);
+		}
+
+		useGPIO = TRUE;
+	}
+}
+#endif
+
+
+static void sigterm_handler(int n)
+{
+	UNUSED(n);
+
+	printf("terminating on SIGTERM\n");
+	Closing = TRUE;
+}
+
+static void sigint_handler(int n)
+{
+	UNUSED(n);
+
+	printf("terminating on SIGINT\n");
+	Closing = TRUE;
+}
+
+char * PortString = NULL;
+
+
+void platformInit()
+{
+	struct sigaction act;
+
+//	Sleep(1000);	// Give LinBPQ time to complete init if exec'ed by linbpq
+
+	// Get Time Reference
+		
+	clock_gettime(CLOCK_MONOTONIC, &time_start);
+	LastNow = getTicks();
+
+	// Trap signals
+
+	memset (&act, '\0', sizeof(act));
+ 
+	act.sa_handler = &sigint_handler; 
+	if (sigaction(SIGINT, &act, NULL) < 0) 
+		perror ("SIGINT");
+
+	act.sa_handler = &sigterm_handler; 
+	if (sigaction(SIGTERM, &act, NULL) < 0) 
+		perror ("SIGTERM");
+
+	act.sa_handler = SIG_IGN; 
+
+	if (sigaction(SIGHUP, &act, NULL) < 0) 
+		perror ("SIGHUP");
+
+	if (sigaction(SIGPIPE, &act, NULL) < 0) 
+		perror ("SIGPIPE");
+}
+
+void txSleep(int mS)
+{
+	// called while waiting for next TX buffer or to delay response.
+	// Run background processes
+
+	// called while waiting for next TX buffer. Run background processes
+
+	while (mS > 50)
+	{
+		PollReceivedSamples();			// discard any received samples
+
+		Sleep(50);
+		mS -= 50;
+	}
+
+	Sleep(mS);
+
+	PollReceivedSamples();			// discard any received samples
+}
+ 
+// ALSA Code 
+
+#define true 1
+#define false 0
+
+snd_pcm_t *	playhandle = NULL;
+snd_pcm_t *	rechandle = NULL;
+
+int m_playchannels = 2;
+int m_recchannels = 2;
+
+
+char SavedCaptureDevice[256];	// Saved so we can reopen
+char SavedPlaybackDevice[256];
+
+int Savedplaychannels = 2;
+
+int SavedCaptureRate;
+int SavedPlaybackRate;
+
+char CaptureNames[16][256] = { "" };
+char PlaybackNames[16][256] = { "" };
+
+int PlaybackCount = 0;
+int CaptureCount = 0;
+
+// Routine to check that library is available
+
+int CheckifLoaded()
+{
+	// Prevent CTRL/C from closing the TNC
+	// (This causes problems if the TNC is started by LinBPQ)
+
+	signal(SIGHUP, SIG_IGN);
+	signal(SIGINT, SIG_IGN);
+	signal(SIGPIPE, SIG_IGN);
+
+	return TRUE;
+}
+
+int GetOutputDeviceCollection()
+{
+	// Get all the suitable devices and put in a list for GetNext to return
+
+	snd_ctl_t *handle= NULL;
+	snd_pcm_t *pcm= NULL;
+	snd_ctl_card_info_t *info;
+	snd_pcm_info_t *pcminfo;
+	snd_pcm_hw_params_t *pars;
+	snd_pcm_format_mask_t *fmask;
+	char NameString[256];
+
+	Debugprintf("Playback Devices\n");
+
+	CloseSoundCard();
+
+	// free old struct if called again
+
+//	while (PlaybackCount)
+//	{
+//		PlaybackCount--;
+//		free(PlaybackNames[PlaybackCount]);
+//	}
+
+//	if (PlaybackNames)
+//		free(PlaybackNames);
+
+	PlaybackCount = 0;
+
+	//	Get Device List  from ALSA
+	
+	snd_ctl_card_info_alloca(&info);
+	snd_pcm_info_alloca(&pcminfo);
+	snd_pcm_hw_params_alloca(&pars);
+	snd_pcm_format_mask_alloca(&fmask);
+
+	char hwdev[80];
+	unsigned min, max, ratemin, ratemax;
+	int card, err, dev, nsubd;
+	snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
+	
+	card = -1;
+
+	if (snd_card_next(&card) < 0)
+	{
+		Debugprintf("No Devices");
+		return 0;
+	}
+
+	if (playhandle)
+		snd_pcm_close(playhandle);
+
+	playhandle = NULL;
+
+	while (card >= 0)
+	{
+		sprintf(hwdev, "hw:%d", card);
+		err = snd_ctl_open(&handle, hwdev, 0);
+		err = snd_ctl_card_info(handle, info);
+    
+		Debugprintf("Card %d, ID `%s', name `%s'", card, snd_ctl_card_info_get_id(info),
+                snd_ctl_card_info_get_name(info));
+
+
+		dev = -1;
+
+		if(snd_ctl_pcm_next_device(handle, &dev) < 0)
+		{
+			// Card has no devices
+
+			snd_ctl_close(handle);
+			goto nextcard;      
+		}
+
+		while (dev >= 0)
+		{
+			snd_pcm_info_set_device(pcminfo, dev);
+			snd_pcm_info_set_subdevice(pcminfo, 0);
+			snd_pcm_info_set_stream(pcminfo, stream);
+	
+			err = snd_ctl_pcm_info(handle, pcminfo);
+
+			
+			if (err == -ENOENT)
+				goto nextdevice;
+
+			nsubd = snd_pcm_info_get_subdevices_count(pcminfo);
+		
+			Debugprintf("  Device hw:%d,%d ID `%s', name `%s', %d subdevices (%d available)",
+				card, dev, snd_pcm_info_get_id(pcminfo), snd_pcm_info_get_name(pcminfo),
+				nsubd, snd_pcm_info_get_subdevices_avail(pcminfo));
+
+			sprintf(hwdev, "hw:%d,%d", card, dev);
+
+			err = snd_pcm_open(&pcm, hwdev, stream, SND_PCM_NONBLOCK);
+
+			if (err)
+			{
+				Debugprintf("Error %d opening output device", err);
+				goto nextdevice;
+			}
+
+			//	Get parameters for this device
+
+			err = snd_pcm_hw_params_any(pcm, pars);
+ 
+			snd_pcm_hw_params_get_channels_min(pars, &min);
+			snd_pcm_hw_params_get_channels_max(pars, &max);
+			
+			snd_pcm_hw_params_get_rate_min(pars, &ratemin, NULL);
+			snd_pcm_hw_params_get_rate_max(pars, &ratemax, NULL);
+
+			if( min == max )
+				if( min == 1 )
+					Debugprintf("    1 channel,  sampling rate %u..%u Hz", ratemin, ratemax);
+				else
+					Debugprintf("    %d channels,  sampling rate %u..%u Hz", min, ratemin, ratemax);
+			else
+				Debugprintf("    %u..%u channels, sampling rate %u..%u Hz", min, max, ratemin, ratemax);
+
+			// Add device to list
+
+			sprintf(NameString, "hw:%d,%d %s(%s)", card, dev,
+				snd_pcm_info_get_name(pcminfo), snd_ctl_card_info_get_name(info));
+
+			strcpy(PlaybackNames[PlaybackCount++], NameString);
+
+			snd_pcm_close(pcm);
+			pcm= NULL;
+
+nextdevice:
+			if (snd_ctl_pcm_next_device(handle, &dev) < 0)
+				break;
+	    }
+		snd_ctl_close(handle);
+
+nextcard:
+			
+		Debugprintf("");
+
+		if (snd_card_next(&card) < 0)		// No more cards
+			break;
+	}
+
+	return PlaybackCount;
+}
+
+
+int GetInputDeviceCollection()
+{
+	// Get all the suitable devices and put in a list for GetNext to return
+
+	snd_ctl_t *handle= NULL;
+	snd_pcm_t *pcm= NULL;
+	snd_ctl_card_info_t *info;
+	snd_pcm_info_t *pcminfo;
+	snd_pcm_hw_params_t *pars;
+	snd_pcm_format_mask_t *fmask;
+	char NameString[256];
+
+	Debugprintf("Capture Devices\n");
+
+	CaptureCount = 0;
+
+	//	Get Device List  from ALSA
+	
+	snd_ctl_card_info_alloca(&info);
+	snd_pcm_info_alloca(&pcminfo);
+	snd_pcm_hw_params_alloca(&pars);
+	snd_pcm_format_mask_alloca(&fmask);
+
+	char hwdev[80];
+	unsigned min, max, ratemin, ratemax;
+	int card, err, dev, nsubd;
+	snd_pcm_stream_t stream = SND_PCM_STREAM_CAPTURE;
+	
+	card = -1;
+
+	if(snd_card_next(&card) < 0)
+	{
+		Debugprintf("No Devices");
+		return 0;
+	}
+
+	if (rechandle)
+		snd_pcm_close(rechandle);
+
+	rechandle = NULL;
+
+	while(card >= 0)
+	{
+		sprintf(hwdev, "hw:%d", card);
+		err = snd_ctl_open(&handle, hwdev, 0);
+		err = snd_ctl_card_info(handle, info);
+    
+		Debugprintf("Card %d, ID `%s', name `%s'", card, snd_ctl_card_info_get_id(info),
+                snd_ctl_card_info_get_name(info));
+
+		dev = -1;
+			
+		if (snd_ctl_pcm_next_device(handle, &dev) < 0)		// No Devicdes
+		{
+			snd_ctl_close(handle);
+			goto nextcard;      
+		}
+
+		while(dev >= 0)
+		{
+			snd_pcm_info_set_device(pcminfo, dev);
+			snd_pcm_info_set_subdevice(pcminfo, 0);
+			snd_pcm_info_set_stream(pcminfo, stream);
+			err= snd_ctl_pcm_info(handle, pcminfo);
+	
+			if (err == -ENOENT)
+				goto nextdevice;
+	
+			nsubd= snd_pcm_info_get_subdevices_count(pcminfo);
+			Debugprintf("  Device hw:%d,%d ID `%s', name `%s', %d subdevices (%d available)",
+				card, dev, snd_pcm_info_get_id(pcminfo), snd_pcm_info_get_name(pcminfo),
+				nsubd, snd_pcm_info_get_subdevices_avail(pcminfo));
+
+			sprintf(hwdev, "hw:%d,%d", card, dev);
+
+			err = snd_pcm_open(&pcm, hwdev, stream, SND_PCM_NONBLOCK);
+	
+			if (err)
+			{	
+				Debugprintf("Error %d opening input device", err);
+				goto nextdevice;
+			}
+
+			err = snd_pcm_hw_params_any(pcm, pars);
+ 
+			snd_pcm_hw_params_get_channels_min(pars, &min);
+			snd_pcm_hw_params_get_channels_max(pars, &max);
+			snd_pcm_hw_params_get_rate_min(pars, &ratemin, NULL);
+			snd_pcm_hw_params_get_rate_max(pars, &ratemax, NULL);
+
+			if( min == max )
+				if( min == 1 )
+					Debugprintf("    1 channel,  sampling rate %u..%u Hz", ratemin, ratemax);
+				else
+					Debugprintf("    %d channels,  sampling rate %u..%u Hz", min, ratemin, ratemax);
+			else
+				Debugprintf("    %u..%u channels, sampling rate %u..%u Hz", min, max, ratemin, ratemax);
+
+			sprintf(NameString, "hw:%d,%d %s(%s)", card, dev,
+				snd_pcm_info_get_name(pcminfo), snd_ctl_card_info_get_name(info));
+
+//			Debugprintf("%s", NameString);
+
+			strcpy(CaptureNames[CaptureCount++], NameString);
+
+			snd_pcm_close(pcm);
+			pcm= NULL;
+
+nextdevice:
+			if (snd_ctl_pcm_next_device(handle, &dev) < 0)
+				break;
+	    }
+		snd_ctl_close(handle);
+nextcard:
+
+		Debugprintf("");
+		if (snd_card_next(&card) < 0 )
+			break;
+	}
+
+	strcpy(CaptureNames[CaptureCount++], "stdin");
+
+	return CaptureCount;
+}
+
+int OpenSoundPlayback(char * PlaybackDevice, int m_sampleRate, int channels, int Report)
+{
+	int err = 0;
+
+	char buf1[100];
+	char * ptr;
+
+	if (playhandle)
+	{
+		snd_pcm_close(playhandle);
+		playhandle = NULL;
+	}
+
+	strcpy(SavedPlaybackDevice, PlaybackDevice);	// Saved so we can reopen in error recovery
+	SavedPlaybackRate = m_sampleRate;
+
+	if (strstr(PlaybackDevice, "plug") == 0 && strchr(PlaybackDevice, ':'))
+		sprintf(buf1, "plug%s", PlaybackDevice);
+	else
+		strcpy(buf1, PlaybackDevice);
+	
+	if (Report)
+		Debugprintf("Real Device %s", buf1);
+
+
+	ptr = strchr(buf1, ' ');
+	if (ptr) *ptr = 0;				// Get Device part of name
+
+	snd_pcm_hw_params_t *hw_params;
+	
+	if ((err = snd_pcm_open(&playhandle, buf1, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK)) < 0)
+	{
+		Debugprintf("cannot open playback audio device %s (%s)",  buf1, snd_strerror(err));
+		return false;
+	}
+		   
+	if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0)
+	{
+		Debugprintf("cannot allocate hardware parameter structure (%s)", snd_strerror(err));
+		return false;
+	}
+				 
+	if ((err = snd_pcm_hw_params_any (playhandle, hw_params)) < 0) {
+		Debugprintf("cannot initialize hardware parameter structure (%s)", snd_strerror(err));
+		return false;
+	}
+	
+	if ((err = snd_pcm_hw_params_set_access (playhandle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
+		Debugprintf("cannot set playback access type (%s)", snd_strerror (err));
+		return false;
+	}
+	if ((err = snd_pcm_hw_params_set_format (playhandle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
+		Debugprintf("cannot setplayback  sample format (%s)", snd_strerror(err));
+		return false;
+	}
+
+	if ((err = snd_pcm_hw_params_set_rate (playhandle, hw_params, m_sampleRate, 0)) < 0) {
+		Debugprintf("cannot set playback sample rate (%s)", snd_strerror(err));
+		return false;
+	}
+
+	// Initial call has channels set to 1. Subequent ones set to what worked last time
+
+	channels = 2;
+
+	if ((err = snd_pcm_hw_params_set_channels (playhandle, hw_params, channels)) < 0)
+	{
+		Debugprintf("cannot set play channel count to %d (%s)", channels, snd_strerror(err));
+		
+		if (channels == 2)
+			return false;				// Shouldn't happen as should have worked before
+		
+		channels = 2;
+
+		if ((err = snd_pcm_hw_params_set_channels (playhandle, hw_params, 2)) < 0)
+		{
+			Debugprintf("cannot play set channel count to 2 (%s)", snd_strerror(err));
+			return false;
+		}
+	}
+	
+	if (Report)
+		Debugprintf("Play using %d channels", channels);
+
+	if ((err = snd_pcm_hw_params (playhandle, hw_params)) < 0) 
+	{
+		Debugprintf("cannot set parameters (%s)", snd_strerror(err));
+		return false;
+	}
+	
+	snd_pcm_hw_params_free(hw_params);
+	
+	if ((err = snd_pcm_prepare (playhandle)) < 0) 
+	{
+		Debugprintf("cannot prepare audio interface for use (%s)", snd_strerror(err));
+		return false;
+	}
+
+	Savedplaychannels = m_playchannels = channels;
+
+	MaxAvail = snd_pcm_avail_update(playhandle);
+
+	if (Report)
+		Debugprintf("Playback Buffer Size %d", (int)MaxAvail);
+
+	return true;
+}
+
+int OpenSoundCapture(char * CaptureDevice, int m_sampleRate, int Report)
+{
+	int err = 0;
+
+	char buf1[100];
+	char * ptr;
+	snd_pcm_hw_params_t *hw_params;
+
+	if (strcmp(CaptureDevice, "stdin") == 0)
+	{
+		stdinMode = 1;
+
+		Debugprintf("Input from stdin");
+		return TRUE;
+	}
+
+	if (rechandle)
+	{
+		snd_pcm_close(rechandle);
+		rechandle = NULL;
+	}
+
+	strcpy(SavedCaptureDevice, CaptureDevice);	// Saved so we can reopen in error recovery
+	SavedCaptureRate = m_sampleRate;
+
+	if (strstr(CaptureDevice, "plug") == 0 && strchr(CaptureDevice, ':'))
+		sprintf(buf1, "plug%s", CaptureDevice);
+	else
+		strcpy(buf1, CaptureDevice);
+
+	if (Report)
+		Debugprintf("Real Device %s", buf1);
+
+	ptr = strchr(buf1, ' ');
+	if (ptr) *ptr = 0;				// Get Device part of name
+	
+	if ((err = snd_pcm_open (&rechandle, buf1, SND_PCM_STREAM_CAPTURE, 0)) < 0) {
+		Debugprintf("cannot open capture audio device %s (%s)",  buf1, snd_strerror(err));
+		return false;
+	}
+	   
+	if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
+		Debugprintf("cannot allocate capture hardware parameter structure (%s)", snd_strerror(err));
+		return false;
+	}
+				 
+	if ((err = snd_pcm_hw_params_any (rechandle, hw_params)) < 0) {
+		Debugprintf("cannot initialize capture hardware parameter structure (%s)", snd_strerror(err));
+		return false;
+	}
+	
+	if ((err = snd_pcm_hw_params_set_access (rechandle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
+		Debugprintf("cannot set capture access type (%s)", snd_strerror (err));
+		return false;
+	}
+	if ((err = snd_pcm_hw_params_set_format (rechandle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
+		Debugprintf("cannot set capture sample format (%s)", snd_strerror(err));
+		return false;
+	}
+	
+	if ((err = snd_pcm_hw_params_set_rate (rechandle, hw_params, m_sampleRate, 0)) < 0) {
+		Debugprintf("cannot set capture sample rate (%s)", snd_strerror(err));
+		return false;
+	}
+
+	m_recchannels = 2;
+	
+	if ((err = snd_pcm_hw_params_set_channels(rechandle, hw_params, m_recchannels)) < 0)
+	{
+		Debugprintf("cannot set rec channel count to 2 (%s)", snd_strerror(err));
+
+		m_recchannels = 1;
+
+		if ((err = snd_pcm_hw_params_set_channels(rechandle, hw_params, 1)) < 0)
+		{
+			Debugprintf("cannot set rec channel count to 1 (%s)", snd_strerror(err));
+			return false;
+		}
+		if (Report)
+			Debugprintf("Record channel count set to 1");
+	}
+	else
+		if (Report)
+			Debugprintf("Record channel count set to 2");
+
+	/*
+	{
+	unsigned int val = 0;
+	unsigned int dir = 0, frames = 0;
+
+	
+	snd_pcm_hw_params_get_channels(rechandle, &val);
+	printf("channels = %d\n", val);
+
+	snd_pcm_hw_params_get_rate(rechandle, &val, &dir);
+	printf("rate = %d bps\n", val);
+
+	snd_pcm_hw_params_get_period_time(rechandle, &val, &dir);
+	printf("period time = %d us\n", val);
+
+	snd_pcm_hw_params_get_period_size(rechandle, &frames, &dir);
+	printf("period size = %d frames\n", (int)frames);
+
+	snd_pcm_hw_params_get_buffer_time(rechandle, &val, &dir);
+	printf("buffer time = %d us\n", val);
+
+	snd_pcm_hw_params_get_buffer_size(rechandle, (snd_pcm_uframes_t *)&val);
+	printf("buffer size = %d frames\n", val);
+
+	snd_pcm_hw_params_get_periods(rechandle, &val, &dir);
+	printf("periods per buffer = %d frames\n", val);
+	}
+	*/
+
+	if ((err = snd_pcm_hw_params (rechandle, hw_params)) < 0)
+	{
+		// Try setting some more params Have to reinit params
+
+		snd_pcm_hw_params_any(rechandle, hw_params);
+		snd_pcm_hw_params_set_access(rechandle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED);
+		snd_pcm_hw_params_set_format(rechandle, hw_params, SND_PCM_FORMAT_S16_LE);
+		snd_pcm_hw_params_set_rate(rechandle, hw_params, m_sampleRate, 0);
+		snd_pcm_hw_params_set_channels(rechandle, hw_params, m_recchannels);
+
+		err = snd_pcm_hw_params_set_buffer_size(rechandle, hw_params, 65536);
+
+		if (err)
+			Debugprintf("cannot set buffer size (%s)", snd_strerror(err));
+
+		err = snd_pcm_hw_params_set_period_size(rechandle, hw_params, (snd_pcm_uframes_t) { 1024 }, (int) { 0 });
+
+		if (err)
+			Debugprintf("cannot set period size (%s)", snd_strerror(err));
+
+		if ((err = snd_pcm_hw_params(rechandle, hw_params)) < 0)
+		{
+			Debugprintf("cannot set parameters (%s)", snd_strerror(err));
+			return false;
+		}
+	}
+	
+	snd_pcm_hw_params_free(hw_params);
+	
+	if ((err = snd_pcm_prepare (rechandle)) < 0) {
+		Debugprintf("cannot prepare audio interface for use (%s)", snd_strerror(err));
+		return FALSE;
+	}
+
+	if (Report)
+		Debugprintf("Capture using %d channels", m_recchannels);
+
+	int i;
+	short buf[256];
+
+	for (i = 0; i < 10; ++i)
+	{
+		if ((err = snd_pcm_readi (rechandle, buf, 128)) != 128)
+		{
+			Debugprintf("read from audio interface failed (%s)", snd_strerror (err));
+		}
+	}
+
+//	Debugprintf("Read got %d", err);
+
+ 	return TRUE;
+}
+
+int OpenSoundCard(char * CaptureDevice, char * PlaybackDevice, int c_sampleRate, int p_sampleRate, int Report)
+{
+	int Channels = 1;
+
+	if (Report)
+		Debugprintf("Opening Playback Device %s Rate %d", PlaybackDevice, p_sampleRate);
+
+//	if (UseLeft == 0 || UseRight == 0)
+	Channels = 2;						// L or R implies stereo
+
+	if (OpenSoundPlayback(PlaybackDevice, p_sampleRate, Channels, Report))
+	{
+#ifdef SHARECAPTURE
+
+		// Close playback device so it can be shared
+		
+		if (playhandle)
+		{
+			snd_pcm_close(playhandle);
+			playhandle = NULL;
+		}
+#endif
+		if (Report)
+			Debugprintf("Opening Capture Device %s Rate %d", CaptureDevice, c_sampleRate);
+		return OpenSoundCapture(CaptureDevice, c_sampleRate, Report);
+	}
+	else
+		return false;
+}
+
+
+
+int CloseSoundCard()
+{
+	if (rechandle)
+	{
+		snd_pcm_close(rechandle);
+		rechandle = NULL;
+	}
+
+	if (playhandle)
+	{
+		snd_pcm_close(playhandle);
+		playhandle = NULL;
+	}
+	return 0;
+}
+
+
+int SoundCardWrite(short * input, int nSamples)
+{
+	unsigned int ret;
+	snd_pcm_sframes_t avail; // , maxavail;
+
+	if (playhandle == NULL)
+		return 0;
+
+	//	Stop Capture
+
+	if (rechandle)
+	{
+		snd_pcm_close(rechandle);
+		rechandle = NULL;
+	}
+
+	avail = snd_pcm_avail_update(playhandle);
+//	Debugprintf("avail before play returned %d", (int)avail);
+
+	if (avail < 0)
+	{
+		if (avail != -32)
+			Debugprintf("Playback Avail Recovering from %d ..", (int)avail);
+		snd_pcm_recover(playhandle, avail, 1);
+
+		avail = snd_pcm_avail_update(playhandle);
+
+		if (avail < 0)
+			Debugprintf("avail play after recovery returned %d", (int)avail);
+	}
+	
+//	maxavail = avail;
+
+//	Debugprintf("Tosend %d Avail %d", nSamples, (int)avail);
+
+	while (avail < nSamples || (MaxAvail - avail) > 12000)				// Limit to 1 sec of audio
+	{
+		txSleep(10);
+		avail = snd_pcm_avail_update(playhandle);
+//		Debugprintf("After Sleep Tosend %d Avail %d", nSamples, (int)avail);
+	}
+
+	ret = PackSamplesAndSend(input, nSamples);
+
+	return ret;
+}
+
+int PackSamplesAndSend(short * input, int nSamples)
+{
+	unsigned short samples[256000];
+	int ret;
+
+	ret = snd_pcm_writei(playhandle, input, nSamples);
+
+	if (ret < 0)
+	{
+//		Debugprintf("Write Recovering from %d ..", ret);
+		snd_pcm_recover(playhandle, ret, 1);
+		ret = snd_pcm_writei(playhandle, samples, nSamples);
+//		Debugprintf("Write after recovery returned %d", ret);
+	}
+
+	snd_pcm_avail_update(playhandle);
+	return ret;
+
+}
+/*
+int xSoundCardClearInput()
+{
+	short samples[65536];
+	int n;
+	int ret;
+	int avail;
+
+	if (rechandle == NULL)
+		return 0;
+
+	// Clear queue 
+	
+	avail = snd_pcm_avail_update(rechandle);
+
+	if (avail < 0)
+	{
+		Debugprintf("Discard Recovering from %d ..", avail);
+		if (rechandle)
+		{
+			snd_pcm_close(rechandle);
+			rechandle = NULL;
+		}
+		OpenSoundCapture(SavedCaptureDevice, SavedCaptureRate, NULL);
+		avail = snd_pcm_avail_update(rechandle);
+	}
+
+	while (avail)
+	{
+		if (avail > 65536)
+			avail = 65536;
+
+			ret = snd_pcm_readi(rechandle, samples, avail);
+//			Debugprintf("Discarded %d samples from card", ret);
+			avail = snd_pcm_avail_update(rechandle);
+
+//			Debugprintf("Discarding %d samples from card", avail);
+	}
+	return 0;
+}
+*/
+
+int SoundCardRead(short * input, int nSamples)
+{
+	short samples[65536];
+	int n;
+	int ret;
+	int avail;
+
+	if (SoundMode == 1)		// OSS
+	{
+		ret = oss_read(samples, nSamples);
+	}
+	else if (SoundMode == 2)// Pulse
+	{
+		ret = pulse_read(samples, nSamples);
+	}
+	else
+	{
+		if (rechandle == NULL)
+			return 0;
+
+		avail = snd_pcm_avail_update(rechandle);
+
+		if (avail < 0)
+		{
+			Debugprintf("avail Recovering from %d ..", avail);
+			if (rechandle)
+			{
+				snd_pcm_close(rechandle);
+				rechandle = NULL;
+			}
+
+			OpenSoundCapture(SavedCaptureDevice, SavedCaptureRate, 0);
+			//		snd_pcm_recover(rechandle, avail, 0);
+			avail = snd_pcm_avail_update(rechandle);
+			Debugprintf("After avail recovery %d ..", avail);
+		}
+
+		if (avail < nSamples)
+			return 0;
+
+		//	Debugprintf("ALSARead available %d", avail);
+
+		ret = snd_pcm_readi(rechandle, samples, nSamples);
+
+		if (ret < 0)
+		{
+			Debugprintf("RX Error %d", ret);
+			//		snd_pcm_recover(rechandle, avail, 0);
+			if (rechandle)
+			{
+				snd_pcm_close(rechandle);
+				rechandle = NULL;
+			}
+
+			OpenSoundCapture(SavedCaptureDevice, SavedCaptureRate, 0);
+			//		snd_pcm_recover(rechandle, avail, 0);
+			avail = snd_pcm_avail_update(rechandle);
+			Debugprintf("After Read recovery Avail %d ..", avail);
+
+			return 0;
+		}
+	}
+
+
+	if (ret < nSamples)
+		return 0;
+
+	if (m_recchannels == 1)
+	{
+		for (n = 0; n < ret; n++)
+		{
+			*(input++) = samples[n];
+			*(input++) = samples[n];		// Duplicate
+		}
+	}
+	else
+	{
+		for (n = 0; n < ret * 2; n++)		// return all
+		{
+			*(input++) = samples[n];
+		}
+	}
+
+	return ret;
+}
+
+
+
+
+int PriorSize = 0;
+
+int Index = 0;				// DMA Buffer being used 0 or 1
+int inIndex = 0;				// DMA Buffer being used 0 or 1
+
+BOOL DMARunning = FALSE;		// Used to start DMA on first write
+
+void ProcessNewSamples(short * Samples, int nSamples);
+
+short * SendtoCard(short * buf, int n)
+{
+	if (Loopback)
+	{
+		// Loop back   to decode for testing
+
+		ProcessNewSamples(buf, 1200);		// signed
+	}
+
+	if (SoundMode == 1)			// OSS
+		oss_write(buf, n);
+	else if (SoundMode == 2)	// Pulse
+		pulse_write(buf, n);
+	else
+	{
+		if (playhandle)
+			SoundCardWrite(buf, n);
+
+		//	txSleep(10);				// Run buckground while waiting 
+	}
+
+	Index = !Index;
+	return &buffer[Index][0];
+}
+
+short loopbuff[1200];		// Temp for testing - loop sent samples to decoder
+
+
+//		// This generates a nice musical pattern for sound interface testing
+//    for (t = 0; t < sizeof(buffer); ++t)
+//        buffer[t] =((((t * (t >> 8 | t >> 9) & 46 & t >> 8)) ^ (t & t >> 13 | t >> 6)) & 0xFF);
+
+short * SoundInit();
+
+void GetSoundDevices()
+{
+	if (SoundMode == 0)
+	{
+		GetInputDeviceCollection();
+		GetOutputDeviceCollection();
+	}
+	else if (SoundMode == 1)
+	{
+		PlaybackCount = 3;
+
+		strcpy(&PlaybackNames[0][0], "/dev/dsp0");
+		strcpy(&PlaybackNames[1][0], "/dev/dsp1");
+		strcpy(&PlaybackNames[2][0], "/dev/dsp2");
+
+		CaptureCount = 3;
+
+		strcpy(&CaptureNames[0][0], "/dev/dsp0");
+		strcpy(&CaptureNames[1][0], "/dev/dsp1");
+		strcpy(&CaptureNames[2][0], "/dev/dsp2");
+	}
+	else if (SoundMode == 2)
+	{
+		// Pulse
+
+		listpulse();
+	}
+}
+
+int InitSound(BOOL Quiet)
+{
+	GetSoundDevices();
+
+	switch (SoundMode)
+	{
+	case 0:				// ALSA
+
+		if (!OpenSoundCard(CaptureDevice, PlaybackDevice, 12000, 12000, Quiet))
+			return FALSE;
+
+		break;
+
+	case 1:				// OSS
+
+		if (!oss_audio_open(CaptureDevice, PlaybackDevice))
+			return FALSE;
+
+		break;
+
+	case 2:				// PulseAudio
+
+		if (!pulse_audio_open(CaptureDevice, PlaybackDevice))
+			return FALSE;
+
+		break;
+
+	}
+
+	printf("InitSound %s %s\n", CaptureDevice, PlaybackDevice);
+
+	DMABuffer = SoundInit();
+	return TRUE;
+}
+
+int min = 0, max = 0, lastlevelreport = 0, lastlevelGUI = 0;
+UCHAR CurrentLevel = 0;		// Peak from current samples
+
+void PollReceivedSamples()
+{
+	// Process any captured samples
+	// Ideally call at least every 100 mS, more than 200 will loose data
+
+	int bytes;
+#ifdef TXSILENCE
+	SendSilence();			// send silence (attempt to fix CM delay issue)
+#endif
+
+	if (stdinMode)
+	{
+		// will block if no input. May get less, in which case wait a bit then try to read rest
+
+		// rtl_udp outputs mono samples
+
+		short input[1200];
+		short * ptr1, *ptr2;		
+		int n = 20; // Max Wait
+
+		bytes = read(STDIN_FILENO, input, ReceiveSize * 2);		// 4 = Stereo 2 bytes per sample
+
+		while (bytes < ReceiveSize * 2 && n--)
+		{
+			Sleep(50);	//mS
+			bytes += read(STDIN_FILENO, &input[bytes / 2], (ReceiveSize * 2) - bytes);
+		}
+			
+		// if still not enough, too bad!
+
+		if (bytes != ReceiveSize * 2)
+			Debugprintf("Short Read %d", bytes);
+
+		// convert to stereo
+
+		ptr1 = input;
+		ptr2 = inbuffer;
+		n = ReceiveSize;
+
+		while (n--)
+		{
+			*ptr2++ = *ptr1;
+			*ptr2++ = *ptr1++;
+		}
+	}
+	else
+		bytes = SoundCardRead(inbuffer, ReceiveSize);	 // returns ReceiveSize or none
+
+	if (bytes > 0)
+	{
+		short * ptr = inbuffer;
+		int i;
+
+		for (i = 0; i < ReceiveSize; i++)
+		{
+			if (*(ptr) < min)
+				min = *ptr;
+			else if (*(ptr) > max)
+				max = *ptr;
+			ptr++;
+		}
+
+
+		CurrentLevel = ((max - min) * 75) /32768;	// Scale to 150 max
+
+		if ((Now - lastlevelGUI) > 2000)	// 2 Secs
+		{
+				lastlevelGUI = Now;
+
+			if ((Now - lastlevelreport) > 10000)	// 10 Secs
+			{
+				char HostCmd[64];
+				lastlevelreport = Now;
+
+				sprintf(HostCmd, "INPUTPEAKS %d %d", min, max);
+
+				Debugprintf("Input peaks = %d, %d", min, max);
+			}
+			min = max = 0;							// Every 2 secs
+		}
+
+		ProcessNewSamples(inbuffer, ReceiveSize);
+	}
+} 
+
+void StopCapture()
+{
+	Capturing = FALSE;
+
+#ifdef SHARECAPTURE
+
+	// Stopcapture is only called when we are about to transmit, so use it to open plaback device. We don't keep
+	// it open all the time to facilitate sharing.
+
+	OpenSoundPlayback(SavedPlaybackDevice, SavedPlaybackRate, Savedplaychannels, NULL);
+#endif
+}
+
+void StartCapture()
+{
+	Capturing = TRUE;
+
+//	Debugprintf("Start Capture");
+}
+
+void CloseSound()
+{
+	switch (SoundMode)
+	{
+	case 0:				// ALSA
+
+		CloseSoundCard();
+		return;
+
+	case 1:				// OSS
+		
+		oss_audio_close();
+		return;
+
+	case 2:				// PulseAudio
+
+		pulse_audio_close();
+		return;
+	}
+}
+
+short * SoundInit()
+{
+	Index = 0;
+	return &buffer[0][0];
+}
+	
+//	Called at end of transmission
+
+void SoundFlush()
+{
+	// Append Trailer then send remaining samples
+
+	snd_pcm_status_t *status = NULL;
+	int err, res;
+	int lastavail = 0;
+
+	if (Loopback)
+		ProcessNewSamples(&buffer[Index][0], Number);
+
+	SendtoCard(&buffer[Index][0], Number);
+
+	// Wait for tx to complete
+
+	Debugprintf("Flush Soundmode = %d", SoundMode);
+
+	if (SoundMode == 0)		// ALSA
+	{
+		usleep(100000);
+
+		while (1 && playhandle)
+		{
+			snd_pcm_sframes_t avail = snd_pcm_avail_update(playhandle);
+
+			//		Debugprintf("Waiting for complete. Avail %d Max %d", avail, MaxAvail);
+
+			snd_pcm_status_alloca(&status);					// alloca allocates once per function, does not need a free
+
+//			Debugprintf("Waiting for complete. Avail %d Max %d last %d", avail, MaxAvail, lastavail);
+
+			if ((err = snd_pcm_status(playhandle, status)) != 0)
+			{
+				Debugprintf("snd_pcm_status() failed: %s", snd_strerror(err));
+				break;
+			}
+
+			res = snd_pcm_status_get_state(status);
+
+			//		Debugprintf("PCM Status = %d", res);
+
+			if (res != SND_PCM_STATE_RUNNING || lastavail == avail)			// If sound system is not running then it needs data
+//			if (res != SND_PCM_STATE_RUNNING)				// If sound system is not running then it needs data
+	//		if (MaxAvail - avail < 100)	
+			{
+				// Send complete - Restart Capture
+
+				OpenSoundCapture(SavedCaptureDevice, SavedCaptureRate, 0);
+				break;
+			}
+			lastavail = avail;
+			usleep(50000);
+		}
+		// I think we should turn round the link here. I dont see the point in
+		// waiting for MainPoll
+
+#ifdef SHARECAPTURE
+		if (playhandle)
+		{
+			snd_pcm_close(playhandle);
+			playhandle = NULL;
+		}
+#endif
+	}
+	else if (SoundMode == 1)
+	{
+		oss_flush();
+	}
+	else if (SoundMode == 2)
+	{
+		pulse_flush();
+	}
+
+	SoundIsPlaying = FALSE;
+
+	Number = 0;
+	
+	memset(buffer, 0, sizeof(buffer));
+	DMABuffer = &buffer[0][0];
+
+#ifdef TXSILENCE
+	SendtoCard(&buffer[0][0], 1200);			// Start sending silence (attempt to fix CM delay issue)
+#endif
+
+	StartCapture();
+	return;
+}
+
+#ifdef TXSILENCE
+		
+// send silence (attempt to fix CM delay issue)
+
+
+void SendSilence()
+{
+	short buffer[2400];
+
+	snd_pcm_sframes_t Avail = snd_pcm_avail_update(playhandle);
+
+	if ((MaxAvail - Avail) < 1200)
+	{
+		// Keep at least 100 ms of audio in buffer
+
+//		printtick("Silence");
+
+		memset(buffer, 0, sizeof(buffer));
+		SendtoCard(buffer, 1200);			// Start sending silence (attempt to fix CM delay issue)
+	}
+}
+
+#endif
+
+// GPIO access stuff for PTT on PI
+
+#ifdef __ARM_ARCH
+
+/*
+   tiny_gpio.c
+   2016-04-30
+   Public Domain
+*/
+#include <stdio.h>
+#include <unistd.h>
+#include <stdint.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#define GPSET0 7
+#define GPSET1 8
+
+#define GPCLR0 10
+#define GPCLR1 11
+
+#define GPLEV0 13
+#define GPLEV1 14
+
+#define GPPUD     37
+#define GPPUDCLK0 38
+#define GPPUDCLK1 39
+
+unsigned piModel;
+unsigned piRev;
+
+static volatile uint32_t  *gpioReg = MAP_FAILED;
+
+#define PI_BANK (gpio>>5)
+#define PI_BIT  (1<<(gpio&0x1F))
+
+/* gpio modes. */
+
+void gpioSetMode(unsigned gpio, unsigned mode)
+{
+   int reg, shift;
+
+   reg   =  gpio/10;
+   shift = (gpio%10) * 3;
+
+   gpioReg[reg] = (gpioReg[reg] & ~(7<<shift)) | (mode<<shift);
+}
+
+int gpioGetMode(unsigned gpio)
+{
+   int reg, shift;
+
+   reg   =  gpio/10;
+   shift = (gpio%10) * 3;
+
+   return (*(gpioReg + reg) >> shift) & 7;
+}
+
+/* Values for pull-ups/downs off, pull-down and pull-up. */
+
+#define PI_PUD_OFF  0
+#define PI_PUD_DOWN 1
+#define PI_PUD_UP   2
+
+void gpioSetPullUpDown(unsigned gpio, unsigned pud)
+{
+   *(gpioReg + GPPUD) = pud;
+
+   usleep(20);
+
+   *(gpioReg + GPPUDCLK0 + PI_BANK) = PI_BIT;
+
+   usleep(20);
+  
+   *(gpioReg + GPPUD) = 0;
+
+   *(gpioReg + GPPUDCLK0 + PI_BANK) = 0;
+}
+
+int gpioRead(unsigned gpio)
+{
+   if ((*(gpioReg + GPLEV0 + PI_BANK) & PI_BIT) != 0) return 1;
+   else                                         return 0;
+}
+void gpioWrite(unsigned gpio, unsigned level)
+{
+   if (level == 0)
+	   *(gpioReg + GPCLR0 + PI_BANK) = PI_BIT;
+   else
+	   *(gpioReg + GPSET0 + PI_BANK) = PI_BIT;
+}
+
+void gpioTrigger(unsigned gpio, unsigned pulseLen, unsigned level)
+{
+   if (level == 0) *(gpioReg + GPCLR0 + PI_BANK) = PI_BIT;
+   else            *(gpioReg + GPSET0 + PI_BANK) = PI_BIT;
+
+   usleep(pulseLen);
+
+   if (level != 0) *(gpioReg + GPCLR0 + PI_BANK) = PI_BIT;
+   else            *(gpioReg + GPSET0 + PI_BANK) = PI_BIT;
+}
+
+/* Bit (1<<x) will be set if gpio x is high. */
+
+uint32_t gpioReadBank1(void) { return (*(gpioReg + GPLEV0)); }
+uint32_t gpioReadBank2(void) { return (*(gpioReg + GPLEV1)); }
+
+/* To clear gpio x bit or in (1<<x). */
+
+void gpioClearBank1(uint32_t bits) { *(gpioReg + GPCLR0) = bits; }
+void gpioClearBank2(uint32_t bits) { *(gpioReg + GPCLR1) = bits; }
+
+/* To set gpio x bit or in (1<<x). */
+
+void gpioSetBank1(uint32_t bits) { *(gpioReg + GPSET0) = bits; }
+void gpioSetBank2(uint32_t bits) { *(gpioReg + GPSET1) = bits; }
+
+unsigned gpioHardwareRevision(void)
+{
+   static unsigned rev = 0;
+
+   FILE * filp;
+   char buf[512];
+   char term;
+   int chars=4; /* number of chars in revision string */
+
+   if (rev) return rev;
+
+   piModel = 0;
+
+   filp = fopen ("/proc/cpuinfo", "r");
+
+   if (filp != NULL)
+   {
+      while (fgets(buf, sizeof(buf), filp) != NULL)
+      {
+         if (piModel == 0)
+         {
+            if (!strncasecmp("model name", buf, 10))
+            {
+               if (strstr (buf, "ARMv6") != NULL)
+               {
+                  piModel = 1;
+                  chars = 4;
+               }
+               else if (strstr (buf, "ARMv7") != NULL)
+               {
+                  piModel = 2;
+                  chars = 6;
+               }
+               else if (strstr (buf, "ARMv8") != NULL)
+               {
+                  piModel = 2;
+                  chars = 6;
+               }
+            }
+         }
+
+         if (!strncasecmp("revision", buf, 8))
+         {
+            if (sscanf(buf+strlen(buf)-(chars+1),
+               "%x%c", &rev, &term) == 2)
+            {
+               if (term != '\n') rev = 0;
+            }
+         }
+      }
+
+      fclose(filp);
+   }
+   return rev;
+}
+
+int gpioInitialise(void)
+{
+   int fd;
+
+   piRev = gpioHardwareRevision(); /* sets piModel and piRev */
+
+   fd = open("/dev/gpiomem", O_RDWR | O_SYNC) ;
+
+   if (fd < 0)
+   {
+      fprintf(stderr, "failed to open /dev/gpiomem\n");
+      return -1;
+   }
+
+   gpioReg = (uint32_t *)mmap(NULL, 0xB4, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+
+   close(fd);
+
+   if (gpioReg == MAP_FAILED)
+   {
+      fprintf(stderr, "Bad, mmap failed\n");
+      return -1;
+   }
+   return 0;
+}
+
+
+	
+#endif
+
+
+
+int stricmp(const unsigned char * pStr1, const unsigned char *pStr2)
+{
+    unsigned char c1, c2;
+    int  v;
+
+	if (pStr1 == NULL)
+	{
+		if (pStr2)
+			Debugprintf("stricmp called with NULL 1st param - 2nd %s ", pStr2);
+		else
+			Debugprintf("stricmp called with two NULL params");
+
+		return 1;
+	}
+
+
+    do {
+        c1 = *pStr1++;
+        c2 = *pStr2++;
+        /* The casts are necessary when pStr1 is shorter & char is signed */
+        v = tolower(c1) - tolower(c2);
+    } while ((v == 0) && (c1 != '\0') && (c2 != '\0') );
+
+    return v;
+}
+
+char Leds[8]= {0};
+unsigned int PKTLEDTimer = 0;
+
+
+
+static struct speed_struct
+{
+	int	user_speed;
+	speed_t termios_speed;
+} speed_table[] = {
+	{300,         B300},
+	{600,         B600},
+	{1200,        B1200},
+	{2400,        B2400},
+	{4800,        B4800},
+	{9600,        B9600},
+	{19200,       B19200},
+	{38400,       B38400},
+	{57600,       B57600},
+	{115200,      B115200},
+	{-1,          B0}
+};
+
+
+VOID COMSetDTR(HANDLE fd)
+{
+	int status;
+
+	ioctl(fd, TIOCMGET, &status);
+	status |= TIOCM_DTR;
+	ioctl(fd, TIOCMSET, &status);
+}
+
+VOID COMClearDTR(HANDLE fd)
+{
+	int status;
+
+	ioctl(fd, TIOCMGET, &status);
+	status &= ~TIOCM_DTR;
+	ioctl(fd, TIOCMSET, &status);
+}
+
+VOID COMSetRTS(HANDLE fd)
+{
+	int status;
+
+	if (ioctl(fd, TIOCMGET, &status) == -1)
+		perror("COMSetRTS PTT TIOCMGET");
+	status |= TIOCM_RTS;
+	if (ioctl(fd, TIOCMSET, &status) == -1)
+		perror("COMSetRTS PTT TIOCMSET");
+}
+
+VOID COMClearRTS(HANDLE fd)
+{
+	int status;
+
+	if (ioctl(fd, TIOCMGET, &status) == -1)
+		perror("COMClearRTS PTT TIOCMGET");
+	status &= ~TIOCM_RTS;
+	if (ioctl(fd, TIOCMSET, &status) == -1)
+		perror("COMClearRTS PTT TIOCMSET");
+
+}
+
+
+
+HANDLE OpenCOMPort(char * Port, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits)
+{
+	char buf[100];
+
+	//	Linux Version.
+
+	int fd;
+	u_long param = 1;
+	struct termios term;
+	struct speed_struct *s;
+
+	char fulldev[80];
+
+	UNUSED(Stopbits);
+
+	sprintf(fulldev, "/dev/%s", Port);
+
+	printf("%s\n", fulldev);
+
+	if ((fd = open(fulldev, O_RDWR | O_NDELAY)) == -1)
+	{
+		if (Quiet == 0)
+		{
+			perror("Com Open Failed");
+			sprintf(buf, " %s could not be opened", (char *)fulldev);
+			Debugprintf(buf);
+		}
+		return 0;
+	}
+
+	// Validate Speed Param
+
+	for (s = speed_table; s->user_speed != -1; s++)
+		if (s->user_speed == speed)
+			break;
+
+	if (s->user_speed == -1)
+	{
+		fprintf(stderr, "tty_speed: invalid speed %d", speed);
+		return FALSE;
+	}
+
+	if (tcgetattr(fd, &term) == -1)
+	{
+		perror("tty_speed: tcgetattr");
+		return FALSE;
+	}
+
+	cfmakeraw(&term);
+	cfsetispeed(&term, s->termios_speed);
+	cfsetospeed(&term, s->termios_speed);
+
+	if (tcsetattr(fd, TCSANOW, &term) == -1)
+	{
+		perror("tty_speed: tcsetattr");
+		return FALSE;
+	}
+
+	ioctl(fd, FIONBIO, &param);
+
+	Debugprintf("Port %s fd %d", fulldev, fd);
+
+	if (SetDTR)
+		COMSetDTR(fd);
+	else
+		COMClearDTR(fd);
+
+	if (SetRTS)
+		COMSetRTS(fd);
+	else
+		COMClearRTS(fd);
+
+	return fd;
+}
+
+BOOL WriteCOMBlock(HANDLE fd, char * Block, int BytesToWrite)
+{
+	//	Some systems seem to have a very small max write size
+
+	int ToSend = BytesToWrite;
+	int Sent = 0, ret;
+
+	while (ToSend)
+	{
+		ret = write(fd, &Block[Sent], ToSend);
+
+		if (ret >= ToSend)
+			return TRUE;
+
+//		perror("WriteCOM");
+
+		if (ret == -1)
+		{
+			if (errno != 11 && errno != 35)					// Would Block
+				return FALSE;
+
+			usleep(10000);
+			ret = 0;
+		}
+
+		Sent += ret;
+		ToSend -= ret;
+	}
+	return TRUE;
+}
+
+VOID CloseCOMPort(HANDLE fd)
+{
+	close(fd);
+}
+
diff --git a/ARDOPC.c b/ARDOPC.c
new file mode 100644
index 0000000..a3412e6
--- /dev/null
+++ b/ARDOPC.c
@@ -0,0 +1,2069 @@
+#ifdef WIN32
+#define _CRT_SECURE_NO_DEPRECATE
+
+#include <windows.h>
+#include <mmsystem.h>
+#pragma comment(lib, "winmm.lib")
+#else
+#define SOCKET int
+#include <unistd.h>
+#define closesocket close
+#endif
+
+//#include "Version.h"
+
+#include "ARDOPC.h"
+//#include "getopt.h"
+
+void CompressCallsign(char * Callsign, UCHAR * Compressed);
+void CompressGridSquare(char * Square, UCHAR * Compressed);
+void  ASCIIto6Bit(char * Padded, UCHAR * Compressed);
+void GetTwoToneLeaderWithSync(int intSymLen);
+void SendID(BOOL blnEnableCWID);
+void PollReceivedSamples();
+void CheckTimers();
+BOOL GetNextARQFrame();
+BOOL TCPHostInit();
+BOOL SerialHostInit();
+BOOL KISSInit();
+void SerialHostPoll();
+void TCPHostPoll();
+BOOL MainPoll();
+VOID PacketStartTX();
+void PlatformSleep(int mS);
+BOOL BusyDetect2(float * dblMag, int intStart, int intStop);
+BOOL IsPingToMe(char * strCallsign);
+void LookforPacket(float * dblMag, float dblMagAvg, int count, float * real, float * imag);
+void PktARDOPStartTX();
+
+// Config parameters
+
+char GridSquare[9] = "No GS ";
+char Callsign[10] = "";
+BOOL wantCWID = FALSE;
+BOOL NeedID = FALSE;		// SENDID Command Flag
+BOOL NeedCWID = FALSE;
+BOOL NeedConReq = FALSE;	// ARQCALL Command Flag
+BOOL NeedPing = FALSE;		// PING Command Flag
+BOOL NeedCQ = FALSE;		// PING Command Flag
+BOOL NeedTwoToneTest = FALSE;
+BOOL UseKISS = TRUE;			// Enable Packet (KISS) interface
+int PingCount;
+int CQCount;
+
+
+BOOL blnPINGrepeating = False;
+BOOL blnFramePending = False;	//  Cancels last repeat
+int intPINGRepeats = 0;
+
+char ConnectToCall[16] = "";
+
+
+#ifdef TEENSY
+int LeaderLength = 500;
+#else
+int LeaderLength = 300;
+#endif
+int TrailerLength = 0;
+unsigned int ARQTimeout = 120;
+int TuningRange = 100;
+int TXLevel = 300;				// 300 mV p-p Used on Teensy
+//int RXLevel = 0;				// Configured Level - zero means auto tune
+int autoRXLevel = 1500;			// calculated level
+int ARQConReqRepeats = 5;
+BOOL DebugLog = TRUE;
+BOOL CommandTrace = TRUE;
+int DriveLevel = 100;
+char strFECMode[16] = "OFDM.500.55";
+int FECRepeats = 0;
+BOOL FECId = FALSE;
+int Squelch = 5;
+
+enum _ARQBandwidth ARQBandwidth = XB500;
+BOOL NegotiateBW = TRUE;
+char HostPort[80] = "";
+int port = 8515;
+int pktport = 0;
+BOOL RadioControl = FALSE;
+BOOL SlowCPU = FALSE;
+BOOL AccumulateStats = TRUE;
+BOOL Use600Modes = FALSE;
+BOOL EnableOFDM = TRUE;
+BOOL UseOFDM = TRUE;
+BOOL FSKOnly = FALSE;
+BOOL fastStart = TRUE;
+BOOL ConsoleLogLevel = LOGDEBUG;
+BOOL FileLogLevel = LOGDEBUG;
+BOOL EnablePingAck = TRUE;
+
+
+// Stats
+
+//    Public Structure QualityStats
+  
+int SessBytesSent;
+int SessBytesReceived;
+int int4FSKQuality;
+int int4FSKQualityCnts;
+int int8FSKQuality;
+int int8FSKQualityCnts;
+int int16FSKQuality;
+int int16FSKQualityCnts;
+int intFSKSymbolsDecoded;
+int intPSKQuality[2];
+int intPSKQualityCnts[2];
+int intOFDMQuality[8];
+int intOFDMQualityCnts[8];
+int intPSKSymbolsDecoded; 
+int intOFDMSymbolsDecoded; 
+
+int intQAMQuality;
+int intQAMQualityCnts;
+int intQAMSymbolsDecoded;
+int intGoodQAMSummationDecodes;
+
+
+int intLeaderDetects;
+int intLeaderSyncs;
+int intAccumLeaderTracking;
+float dblFSKTuningSNAvg;
+int intGoodFSKFrameTypes;
+int intFailedFSKFrameTypes;
+int intAccumFSKTracking;
+int intFSKSymbolCnt;
+int intGoodFSKFrameDataDecodes;
+int intFailedFSKFrameDataDecodes;
+int intAvgFSKQuality;
+int intFrameSyncs;
+int intGoodPSKSummationDecodes;
+int intGoodFSKSummationDecodes;
+int intGoodQAMSummationDecodes;
+int intGoodOFDMSummationDecodes;
+float dblLeaderSNAvg;
+int intAccumPSKLeaderTracking;
+float dblAvgPSKRefErr;
+int intPSKTrackAttempts;
+int intAccumPSKTracking;
+int intQAMTrackAttempts;
+int intOFDMTrackAttempts;
+int intAccumQAMTracking;
+int intAccumOFDMTracking;
+int intPSKSymbolCnt;
+int intQAMSymbolCnt;
+int intOFDMSymbolCnt;
+int intGoodPSKFrameDataDecodes;
+int intFailedPSKFrameDataDecodes;
+int intGoodQAMFrameDataDecodes;
+int intFailedQAMFrameDataDecodes;
+int intAvgPSKQuality;
+int intGoodOFDMFrameDataDecodes;
+int intFailedOFDMFrameDataDecodes;
+int intAvgOFDMQuality;
+float dblAvgDecodeDistance;
+int intDecodeDistanceCount;
+int	intShiftUPs;
+int intShiftDNs;
+unsigned int dttStartSession;
+int intLinkTurnovers;
+int intEnvelopeCors;
+float dblAvgCorMaxToMaxProduct;
+int intConReqSN;
+int intConReqQuality;
+int intTimeouts;
+
+
+
+char stcLastPingstrSender[10];
+char stcLastPingstrTarget[10];
+int stcLastPingintRcvdSN;
+int stcLastPingintQuality;
+time_t stcLastPingdttTimeReceived;
+
+BOOL blnInitializing = FALSE;
+
+BOOL blnLastPTT = FALSE;
+
+BOOL PlayComplete = FALSE;
+
+BOOL blnBusyStatus = 0;
+BOOL newStatus;
+
+unsigned int tmrSendTimeout;
+
+int intCalcLeader;        // the computed leader to use based on the reported Leader Length
+int intRmtLeaderMeasure = 0;
+
+int dttCodecStarted;
+
+enum _ReceiveState State;
+enum _ARDOPState ProtocolState;
+
+const char ARDOPStates[8][9] = {"OFFLINE", "DISC", "ISS", "IRS", "IDLE", "IRStoISS", "FECSEND", "FECRCV"};
+
+const char ARDOPModes[3][6] = {"Undef", "FEC", "ARQ"};
+
+struct SEM Semaphore = {0, 0, 0, 0};
+
+int DecodeCompleteTime;
+
+BOOL blnAbort = FALSE;
+int intRepeatCount;
+BOOL blnARQDisconnect = FALSE;
+
+int dttLastPINGSent;
+
+enum _ProtocolMode ProtocolMode = FEC;
+
+extern int intTimeouts;
+extern BOOL blnEnbARQRpt;
+extern BOOL blnDISCRepeating;
+extern char strRemoteCallsign[10];
+extern char strLocalCallsign[10];
+extern char strFinalIDCallsign[10];
+extern int dttTimeoutTrip;
+extern unsigned int dttLastFECIDSent;
+extern BOOL blnPending;
+extern unsigned int tmrIRSPendingTimeout;
+extern unsigned int tmrFinalID;
+extern unsigned int tmrPollOBQueue;
+VOID EncodeAndSend4FSKControl(UCHAR bytFrameType, UCHAR bytSessionID, int LeaderLength);
+void SendPING(char * strMycall, char * strTargetCall, int intRpt);
+void SendCQ(int intRpt);
+
+int intRepeatCnt;
+
+
+BOOL blnClosing = FALSE;
+BOOL blnCodecStarted = FALSE;
+
+unsigned int dttNextPlay = 0;
+
+
+const UCHAR bytValidFrameTypesALL[]=
+{
+	DataNAK,
+	DataNAKLoQ,
+	ConRejBusy,
+	ConRejBW,
+	ConAck,
+	DISCFRAME,
+	BREAK,
+	END,
+	IDLEFRAME,
+	ConReq200,
+	ConReq500,
+	ConReq2500,
+	OConReq500,
+	OConReq2500,
+	IDFRAME,
+	PINGACK,
+	PING,	
+	CQ_de,
+	D4PSK_200_50_E,
+	D4PSK_200_50_O,
+	D4PSK_200_100_E,
+	D4PSK_200_100_O,
+	D16QAM_200_100_E,
+	D16QAM_200_100_O,
+	D4FSK_500_50_E,
+	D4FSK_500_50_O,
+	D4PSK_500_50_E,
+	D4PSK_500_50_O,
+	D4PSK_500_100_E,
+	D4PSK_500_100_O,
+	D16QAMR_500_100_E,
+	D16QAMR_500_100_O,
+	D16QAM_500_100_E,
+	D16QAM_500_100_O,
+	DOFDM_200_55_E,
+	DOFDM_200_55_O,
+	DOFDM_500_55_E,
+	DOFDM_500_55_O,
+	D4FSK_1000_50_E,
+	D4FSK_1000_50_O,
+	D4PSKR_2500_50_E,
+	D4PSKR_2500_50_O,
+	D4PSK_2500_50_E,
+	D4PSK_2500_50_O,
+	D4PSK_2500_100_E,
+	D4PSK_2500_100_O,
+	D16QAMR_2500_100_E,
+	D16QAMR_2500_100_O,
+	D16QAM_2500_100_E,
+	D16QAM_2500_100_O,
+	DOFDM_2500_55_E,
+	DOFDM_2500_55_O,
+
+	PktFrameHeader,	// Variable length frame Header
+	PktFrameData,	// Variable length frame Data (Virtual Frsme Type)
+	OFDMACK,
+	DataACK, 	
+	DataACKHiQ};
+
+const UCHAR bytValidFrameTypesISS[]=		// ACKs, NAKs, END, DISC, BREAK
+{
+	DataNAK,
+	DataNAKLoQ,
+	ConRejBusy,
+	ConRejBW,
+	ConAck,
+	DISCFRAME,
+	END,
+	IDFRAME,
+	PktFrameHeader,	// Variable length frame Header
+	PktFrameData,	// Variable length frame Data (Virtual Frsme Type)
+	OFDMACK,
+	DataACK, 	
+	DataACKHiQ};
+
+const UCHAR * bytValidFrameTypes;
+
+int bytValidFrameTypesLengthISS = sizeof(bytValidFrameTypesISS);
+int bytValidFrameTypesLengthALL = sizeof(bytValidFrameTypesALL);
+int bytValidFrameTypesLength;
+
+
+BOOL blnTimeoutTriggered = FALSE;
+
+//	We can't keep the audio samples for retry, but we can keep the
+//	encoded data
+
+unsigned char bytEncodedBytes[4500] ="";		// OFDM is big (maybe not 4500)
+int EncLen;
+
+
+extern UCHAR bytSessionID;
+
+int intLastRcvdFrameQuality;
+
+int intAmp = 26000;	   // Selected to have some margin in calculations with 16 bit values (< 32767) this must apply to all filters as well. 
+
+const char strAllDataModes[18][16] =
+		{"4PSK.200.50", "4PSK.200.100",
+		"16QAM.200.100", "4FSK.500.50", 
+		"4PSK.500.50", "4PSK.500.100",
+		"OFDM.200.55", "OFDM.500.55", 
+		"16QAMR.500.100", "16QAM.500.100",
+		"4FSK.1000.50", 
+		"4PSKR.2500.50", "4PSK.2500.50", 
+		"4PSK.2500.100", 
+		"16QAMR.2500.100", "16QAM.2500.100", "OFDM.2500.55"};
+
+int strAllDataModesLen = 18;
+
+// Frame Speed By Type (from Rick's spreadsheet) Bytes per minute
+
+const short Rate[64] = 
+{
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	// 00 - 0F
+	402,402,826,826,1674,1674,0,0,0,0,402,402,857,857,1674,1674,	// 10 - 1F
+	1674,1674,3349,3359,0,0,0,0,857,857,2143,2143,4286,4286,8372,8372,	// 20 - 2F
+	8372,8372,16744,16744,0,0,0,0,0,0,0,0,0,0,0,0,	// 30 - 3F
+};
+
+const short FrameSize[64] =
+{
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,	// 00 - 0F
+	32,32,64,64,120,120,0,0,0,0,32,32,64,64,128,128,	// 10 - 1F
+	120,120,240,240,360,360,720,720,64,64,160,160,320,320,640,640,	// 20 - 2F
+	600,600,1200,1200,680,680,1360,1360,0,0,0,0,0,0,0,0,	// 30 - 3F
+};
+
+
+const char strFrameType[64][18] =
+{
+	//	Short Control Frames 1 Car, 500Hz,4FSK, 50 baud 
+        
+	"DataNAK",			// 0
+	"DataNAKLoQ",
+	"ConRejBusy",
+	"ConRejBW",
+	"ConAck",			// 4
+	"DISC",
+	"BREAK",
+	"END",
+	"IDLE",				// 8
+	"ConReq200",
+	"ConReq500",
+	"ConReq2500",
+	"IDFrame",			// C
+	"PingAck",
+	"Ping",				// E
+	"CQ_de",			// F
+	
+	//	200 Hz Bandwidth 
+	//	1 Car modes
+	
+	"4PSK.200.50.E",	// 0x10
+	"4PSK.200.50.O",
+	"4PSK.200.100.E",
+	"4PSK.200.100.O",
+	"16QAM.200.100.E",	// 0x14
+	"16QAM.200.100.O",
+	"", "",// 0x16 to 0x17
+	"OConReq500", "OConReq2500", 
+	//	500 Hz bandwidth Data 
+	//	1 Car 4FSK Data mode 500 Hz, 50 baud tones spaced @ 100 Hz 
+
+	"4FSK.500.50.E",	// 0x1A
+	"4FSK.500.50.O",
+	//	2 Car PSK Data Modes 
+	"4PSK.500.50.E",
+	"4PSK.500.50.O",
+	"4PSK.500.100.E",	// 0x1E
+	"4PSK.500.100.O",
+	//	2 Car 16QAM Data Modes 100 baud
+	"16QAMR.500.100.E",	// 0x20
+	"16QAMR.500.100.O",
+	//	2 Car 16QAM Data Modes 100 baud
+	"16QAM.500.100.E",	// 0x22
+	"16QAM.500.100.O",
+	"OFDM.500.55.E",
+	"OFDM.500.55.O",
+	"OFDM.200.55.E",
+	"OFDM.200.55.O",
+
+	//	1 Khz Bandwidth Data Modes 
+	//	4 Car 4FSK Data mode 1000 Hz, 50 baud tones spaced @ 100 Hz 
+	"4FSK.1000.50.E",	// 0x28
+	"4FSK.1000.50.O",
+
+	//	2500 dblOffsetHz bandwidth modes
+	//	10 Car PSK Data Modes 50 baud
+
+	"4PSKR.2500.50.E",	// 0x2A
+	"4PSKR.2500.50.O",
+	"4PSK.2500.50.E",
+	"4PSK.2500.50.O",
+
+	//	10 Car PSK Data Modes 100 baud
+
+	"4PSK.2500.100.E",	// 0x2E
+	"4PSK.2500.100.O",
+
+
+	//	10 Car 16QAM Data modes 100 baud  
+	"16QAMR.2500.100.E",	// 0x30
+	"16QAMR.2500.100.O",
+	"16QAM.2500.100.E",	// 0x32
+	"16QAM.2500.100.O",
+	"OFDM.2500.55.E",
+	"OFDM.2500.55.O",
+	"",
+	"",
+	"", "", // 0x38 to 0x39
+	"PktFrameHeader",	//3A	
+	"PktFrameData",
+	"",					// 0x3C 
+	"OFDMACK",
+	"DataACK",		 // note special coding to have large distance from NAKs
+	"DataACKHiQ"	 // note special coding to have large distance from NAKs
+};
+
+const char shortFrameType[64][12] =
+{
+	//	Short Control Frames 1 Car, 500Hz,4FSK, 50 baud 
+	//	Used on OLED display
+        
+	"DataNAK",			// 0
+	"DataNAKLoQ",
+	"ConRejBusy",
+	"ConRejBW",
+	"ConAck",			// 4
+	"DISC",
+	"BREAK",
+	"END",
+	"IDLE",				// 8
+	"ConReq200",
+	"ConReq500",
+	"ConReq2500",
+	"IDFrame",			// C
+	"PingAck",
+	"Ping",				// E
+	"CQ_de",			// F
+	
+	//	200 Hz Bandwidth 
+	//	1 Car modes
+	
+	"4P.200.50",	// 0x10
+	"4P.200.50",
+	"4P.200.100",
+	"4PS.200.100",
+	"16Q.200.100",	// 0x14
+	"16Q.200.100",
+	"", "",// 0x16 to 0x17
+	"OConReq500", "OConReq2500", 
+
+	//	500 Hz bandwidth Data 
+	//	1 Car 4FSK Data mode 500 Hz, 50 baud tones spaced @ 100 Hz 
+
+	"4F.500.50",	// 0x1A
+	"4F.500.50",
+	//	2 Car PSK Data Modes 
+	"4P.500.50",
+	"4P.500.50",
+	"4P.500.100",	// 0x1E
+	"4P.500.100",
+	//	2 Car 16QAM Data Modes 100 baud
+	"16QR.500.100",	// 0x20
+	"16QR.500.100",
+	//	2 Car 16QAM Data Modes 100 baud
+	"16Q.500.100",	// 0x22
+	"16Q.500.100",
+	"OFDM.500",
+	"OFDM.500",
+	"OFDM.200",
+	"OFDM.200",
+
+	//	1 Khz Bandwidth Data Modes 
+	//	4 Car 4FSK Data mode 1000 Hz, 50 baud tones spaced @ 100 Hz 
+	"4F.1K.50",	// 0x28
+	"4F.1K.50",
+
+	//	2500 dblOffsetHz bandwidth modes
+	//	10 Car PSK Data Modes 50 baud
+
+	"4PR.2500.50",	// 0x2A
+	"4PR.2500.50",
+	"4P.2500.50",
+	"4P.2500.50",
+
+	//	10 Car PSK Data Modes 100 baud
+
+	"4P.2500.100",	// 0x2E
+	"4P.2500.100",
+
+
+	//	10 Car 16QAM Data modes 100 baud  
+	"QR.2500.100",	// 0x30
+	"QR.2500.100",
+	"Q.2500.100",	// 0x32
+	"Q.2500.100",
+	"OFDM.2500",
+	"OFDM.2500",
+	"",
+	"",
+	"", "", // 0x38 to 0x39
+	"PktHeader",	//3A	
+	"PktData",
+	"",		// 0x3C
+	"OFDMACK",
+	"DataACK",		 // note special coding to have large distance from NAKs
+	"DataACKHiQ"	 // note special coding to have large distance from NAKs
+};
+
+
+
+void GetSemaphore()
+{
+}
+
+void FreeSemaphore()
+{
+}
+
+BOOL CheckValidCallsignSyntax(char * strCallsign)
+{
+	// Function for checking valid call sign syntax
+
+	char * Dash = strchr(strCallsign, '-');
+	int callLen = strlen(strCallsign);
+	char * ptr = strCallsign;
+	int SSID;
+
+	if (Dash)
+	{
+		callLen = Dash - strCallsign;
+
+		SSID = atoi(Dash + 1);
+		if (SSID > 15)
+			return FALSE;
+
+		if (strlen(Dash + 1) > 2)
+			return FALSE;
+
+		if (!isalnum(*(Dash + 1)))
+			return FALSE;
+	}
+		
+	if (callLen > 7 || callLen < 3)
+			return FALSE;
+
+	while (callLen--)
+	{
+		if (!isalnum(*(ptr++)))
+			return FALSE;
+	}
+	return TRUE;
+}
+
+//	 Function to check for proper syntax of a 4, 6 or 8 character GS
+
+BOOL CheckGSSyntax(char * GS)
+{
+	int Len = strlen(GS);
+
+	if (!(Len == 4 || Len == 6 || Len == 8))
+		return FALSE;
+
+	if (!isalpha(GS[0]) || !isalpha(GS[1]))
+		return FALSE;
+	
+	if (!isdigit(GS[2]) || !isdigit(GS[3]))
+		return FALSE;
+
+	if (Len == 4)
+		return TRUE;
+
+	if (!isalpha(GS[4]) || !isalpha(GS[5]))
+		return FALSE;
+
+	if (Len == 6)
+		return TRUE;
+
+	if (!isdigit(GS[6]) || !isdigit(GS[7]))
+		return FALSE;
+
+	return TRUE;
+}
+
+// Function polled by Main polling loop to see if time to play next wave stream
+   
+#ifdef WIN32
+
+extern LARGE_INTEGER Frequency;
+extern LARGE_INTEGER StartTicks;
+extern LARGE_INTEGER NewTicks;
+
+#endif
+
+extern int NErrors;
+
+void testRS()
+{
+	// feed random data into RS to check robustness
+
+	BOOL blnRSOK, FrameOK;
+	char bytRawData[256];
+	int DataLen = 128;
+	int intRSLen = 64;
+	int i;
+
+	for (i = 0; i < DataLen; i++)
+	{
+		bytRawData[i] = rand() % 256;
+	}
+
+	FrameOK = RSDecode(bytRawData, DataLen, intRSLen, &blnRSOK);
+}
+
+
+void SendCWID(char * Callsign, BOOL x)
+{
+}
+
+// Subroutine to generate 1 symbol of leader
+
+//	 returns pointer to Frame Type Name
+
+const char * Name(UCHAR bytID)
+{
+	return strFrameType[bytID];
+}
+
+//	 returns pointer to Frame Type Name
+
+const char * shortName(UCHAR bytID)
+{
+	return shortFrameType[bytID];
+}
+// Function to look up frame info from bytFrameType
+
+BOOL FrameInfo(UCHAR bytFrameType, int * blnOdd, int * intNumCar, char * strMod,
+			   int * intBaud, int * intDataLen, int * intRSLen, UCHAR * bytQualThres, char * strType)
+{
+	// Used to "lookup" all parameters by frame Type. 
+	// returns TRUE if all fields updated otherwise FALSE (improper bytFrameType)
+
+	// 1 Carrier 4FSK control frames 
+
+	switch(bytFrameType)
+	{
+	case DataNAK:
+	case DataNAKLoQ:
+	case DataACK:
+	case DataACKHiQ:
+	case ConAck:
+	case ConRejBW:
+	case ConRejBusy:
+	case IDLEFRAME:
+	case DISCFRAME:
+	case BREAK:
+	case END:
+
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 0;
+		*intRSLen = 0;
+		strcpy(strMod, "4FSK");
+		*intBaud = 50;
+		break;
+
+	case IDFRAME:
+	case PING:
+	case CQ_de:
+
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 12;
+		*intRSLen = 4;			// changed 0.8.0
+		strcpy(strMod, "4FSK");
+		*intBaud = 50;
+		break;
+
+	case PINGACK:
+	
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 3;
+		*intRSLen = 0;
+		strcpy(strMod, "4FSK");
+		*intBaud = 50;
+		break;
+
+
+	case ConReq200:
+	case ConReq500:
+	case ConReq2500:
+	case OConReq500:
+	case OConReq2500:
+
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 6;
+		*intRSLen = 2;
+		strcpy(strMod, "4FSK");
+		*intBaud = 50;
+		break;
+	
+	case OFDMACK:
+	
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 6;
+		*intRSLen = 4;
+		strcpy(strMod, "4FSK");
+		*intBaud = 100;
+		break;
+
+	case PktFrameHeader:
+
+		// Special Variable Length frame
+
+		// This defines the header, 4PSK.500.100. Length is 6 bytes
+		// Once we have that we receive the rest of the packet in the 
+		// mode defined in the header.
+		// Header is 4 bits Type 12 Bits Len 2 bytes CRC 2 bytes RS
+
+		*blnOdd = 0;
+		*intNumCar = 1;
+		*intDataLen = 2;
+		*intRSLen = 2;
+		strcpy(strMod, "4FSK");
+		*intBaud = 100;
+ 		break;
+
+	case PktFrameData:
+
+		// Special Variable Length frame
+
+		// This isn't ever transmitted but is used to define the
+		// current setting for the data frame. Mode and Length 
+		// are variable
+		
+
+		*blnOdd = 1;
+		*intNumCar = pktCarriers[pktMode];
+		*intDataLen = pktDataLen;
+		*intRSLen = pktRSLen;
+		strcpy(strMod, &pktMod[pktMode][0]);
+		strlop(strMod, '/');
+		*intBaud = 100;
+ 		break;
+
+	default:
+
+		// Others are Even/Odd Pairs
+
+		switch(bytFrameType & 0xFE)
+		{
+		case D4PSK_200_50_E:
+	
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 1;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4PSK");
+			*intBaud = 50;
+			break;
+
+		case D4PSK_200_100_E:
+	
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 1;
+			*intDataLen = 64;
+			*intRSLen = 16;
+			strcpy(strMod, "4PSK");
+			*intBaud = 100;
+			break;
+
+ 
+		case D16QAM_200_100_E:
+	
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 1;
+			*intDataLen = 120;
+			*intRSLen = 40;
+			strcpy(strMod, "16QAM");
+			*intBaud = 100;
+			break;
+
+
+		case D4FSK_500_50_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 1;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4FSK");
+			*intBaud = 50;
+			*bytQualThres = 30;	
+			break;
+
+		case D4PSK_500_50_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 2;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4PSK");
+			*intBaud = 50;
+			break;
+
+		case D4PSK_500_100_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 2;
+			*intDataLen = 64;
+			*intRSLen = 16;
+			strcpy(strMod, "4PSK");
+			*intBaud = 100;
+			break;
+
+ 		case D16QAMR_500_100_E:
+	
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 2;
+			*intDataLen = 120;
+			*intRSLen = 40;
+			strcpy(strMod, "16QAMR");
+			*intBaud = 100;
+			break;
+
+  		case D16QAM_500_100_E:
+	
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 2;
+			*intDataLen = 120;
+			*intRSLen = 40;
+			strcpy(strMod, "16QAM");
+			*intBaud = 100;
+			break;
+
+		case DOFDM_200_55_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 3;
+			*intDataLen = 40;
+			*intRSLen = 10;
+			strcpy(strMod, "OFDM");
+			*intBaud = 55;
+			break;
+
+		case DOFDM_500_55_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 9;
+			*intDataLen = 40;
+			*intRSLen = 10;
+			strcpy(strMod, "OFDM");
+			*intBaud = 55;
+			break;
+
+		case D4FSK_1000_50_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 2;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4FSK");
+			*intBaud = 50;
+			break;
+
+		case D4PSKR_2500_50_E:
+ 
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 10;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4PSKR");
+			*intBaud = 50;	
+			break;
+
+		case D4PSK_2500_50_E:
+ 
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 10;
+			*intDataLen = 32;
+			*intRSLen = 8;
+			strcpy(strMod, "4PSK");
+			*intBaud = 50;	
+			break;
+
+		case D4PSK_2500_100_E:
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 10;
+			*intDataLen = 64;
+			*intRSLen = 16;
+			strcpy(strMod, "4PSK");
+			*intBaud = 100;	
+			break;
+
+		case D16QAMR_2500_100_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 10;
+			*intDataLen = 120;
+			*intRSLen = 40;
+			strcpy(strMod, "16QAMR");
+			*intBaud = 100;	
+			break;
+
+		case D16QAM_2500_100_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 10;
+			*intDataLen = 120;
+			*intRSLen = 40;
+			strcpy(strMod, "16QAM");
+			*intBaud = 100;	
+			break;
+
+		case DOFDM_2500_55_E:
+
+			*blnOdd = (1 & bytFrameType) != 0;
+			*intNumCar = 43;
+			*intDataLen = 40;
+			*intRSLen = 10;
+			strcpy(strMod, "OFDM");
+			*intBaud = 55;
+			break;
+
+		default:
+			Debugprintf("No data for frame type= %X",  bytFrameType);
+			return FALSE;
+		}
+	}	
+	
+	strcpy(strType,strFrameType[bytFrameType]);
+
+	return TRUE;
+}
+
+int xNPAR = -1;	// Number of Parity Bytes - used in RS Code
+
+int MaxErrors = 0;
+
+int xRSEncode(UCHAR * bytToRS, UCHAR * RSBytes, int DataLen, int RSLen)
+{
+	// This just returns the Parity Bytes. I don't see the point
+	// in copying the message about
+
+	unsigned char Padded[256];		// The padded Data
+
+	int Length = DataLen + RSLen;	// Final Length of packet
+	int PadLength = 255 - Length;	// Padding bytes needed for shortened RS codes
+
+	//	subroutine to do the RS encode. For full length and shortend RS codes up to 8 bit symbols (mm = 8)
+
+	if (NPAR != RSLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = RSLen;
+		MaxErrors = NPAR / 2;
+		initialize_ecc();
+	}
+
+	// Copy the supplied data to end of data array.
+
+	memset(Padded, 0, PadLength);
+	memcpy(&Padded[PadLength], bytToRS, DataLen); 
+
+	encode_data(Padded, 255-RSLen, RSBytes);
+
+	return RSLen;
+}
+
+//	Main RS decode function
+
+extern int index_of[];
+extern int recd[];
+int Corrected[256];
+extern int tt;		//  number of errors that can be corrected 
+extern int kk;		// Info Symbols
+
+BOOL blnErrorsCorrected;
+
+#define NEWRS
+
+BOOL xRSDecode(UCHAR * bytRcv, int Length, int CheckLen, BOOL * blnRSOK)
+{	
+#ifdef NEWRS
+
+	// Using a modified version of Henry Minsky's code
+	
+	//Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+
+	// Rick's Implementation processes the byte array in reverse. and also 
+	//	has the check bytes in the opposite order. I've modified the encoder
+	//	to allow for this, but so far haven't found a way to mske the decoder
+	//	work, so I have to reverse the data and checksum to decode G8BPQ Nov 2015
+
+	//	returns TRUE if was ok or correction succeeded, FALSE if correction impossible
+
+	UCHAR intTemp[256];				// WOrk Area to pass to Decoder		
+	int i;
+	UCHAR * ptr2 = intTemp;
+	UCHAR * ptr1 = &bytRcv[Length - CheckLen -1]; // Last Byte of Data
+
+	int DataLen = Length - CheckLen;
+	int PadLength = 255 - Length;		// Padding bytes needed for shortened RS codes
+
+	*blnRSOK = FALSE;
+
+	if (Length > 255 || Length < (1 + CheckLen))		//Too long or too short 
+		return FALSE;
+
+	if (NPAR != CheckLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = CheckLen;
+		MaxErrors = NPAR /2;
+
+		initialize_ecc();
+	}
+
+
+	//	We reverse the data while zero padding it to speed things up
+
+	//	We Need (Data Reversed) (Zero Padding) (Checkbytes Reversed)
+
+	// Reverse Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+	  *(ptr2++) = *(ptr1--);
+	}
+
+	//	Clear padding
+
+	memset(ptr2, 0, PadLength);	
+
+	ptr2+= PadLength;
+	
+	// Error Bits
+
+	ptr1 = &bytRcv[Length - 1];			// End of check bytes
+
+	for (i = 0; i < CheckLen; i++)
+	{
+	  *(ptr2++) = *(ptr1--);
+	}
+	
+	decode_data(intTemp, 255);
+
+	// check if syndrome is all zeros 
+
+	if (check_syndrome() == 0)
+	{
+		// RS ok, so no need to correct
+
+		*blnRSOK = TRUE;
+		return TRUE;		// No Need to Correct
+	}
+
+    if (correct_errors_erasures (intTemp, 255, 0, 0) == 0) // Dont support erasures at the momnet
+
+		// Uncorrectable
+
+		return FALSE;
+
+	// Data has been corrected, so need to reverse again
+
+	ptr1 = &intTemp[DataLen - 1];
+	ptr2 = bytRcv; // Last Byte of Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+	  *(ptr2++) = *(ptr1--);
+	}
+
+	// ?? Do we need to return the check bytes ??
+
+	// Yes, so we can redo RS Check on supposedly connected frame
+
+	ptr1 = &intTemp[254];	// End of Check Bytes
+
+ 	for (i = 0; i < CheckLen; i++)
+	{
+	  *(ptr2++) = *(ptr1--);
+	}
+
+	return TRUE;
+}
+
+#else
+
+	// Old (Rick's) code
+
+	// Sets blnRSOK if OK without correction
+
+	// Returns TRUE if OK oe Corrected
+	// False if Can't correct
+
+
+	UCHAR intTemp[256];				// Work Area to pass to Decoder		
+	int i;
+	int intStartIndex;
+	UCHAR * ptr2 = intTemp;
+	UCHAR * ptr1 = bytRcv;
+	BOOL RSWasOK;
+
+	int DataLen = Length - CheckLen;
+	int PadLength = 255 - Length;		// Padding bytes needed for shortened RS codes
+
+	*blnRSOK = FALSE;
+
+	if (Length > 255 || Length < (1 + CheckLen))		//Too long or too short 
+		return FALSE;
+
+
+	if (NPAR != CheckLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = CheckLen;
+		tt = sqrt(NPAR);
+		kk = 255-CheckLen; 
+		generate_gf();
+		gen_poly();
+	}
+	
+	intStartIndex =  255 - Length; // set the start point for shortened RS codes
+
+	//	We always work on a 255 byte buffer, prepending zeros if neccessary
+
+ 	//	Clear padding
+
+	memset(ptr2, 0, PadLength);	
+	ptr2 += PadLength;
+
+	memcpy(ptr2, ptr1, Length);
+	
+	// convert to indexed form
+
+	for(i = 0; i < 256; i++)
+	{
+//		intIsave = i;
+//		intIndexSave = index_of[intTemp[i]];
+		recd[i] = index_of[intTemp[i]];
+	}
+
+//	printtick("entering decode_rs");
+
+	blnErrorsCorrected = FALSE;
+
+	RSWasOK = decode_rs();
+
+//	printtick("decode_rs Done");
+
+	*blnRSOK = RSWasOK;
+
+	if (RSWasOK)
+		return TRUE;
+
+	if(blnErrorsCorrected)
+	{
+		for (i = 0; i < DataLen; i++)
+		{
+			bytRcv[i] = recd[i + intStartIndex];
+		}
+		return TRUE;
+	}
+
+	return FALSE;
+}
+#endif
+
+
+
+	
+//  Function to encode ConnectRequest frame 
+
+//	' Function to encode an ACK control frame  (2 bytes total) ...with 5 bit Quality code 
+
+
+void SendID(BOOL blnEnableCWID)
+{
+
+}
+
+
+void  ASCIIto6Bit(char * Padded, UCHAR * Compressed)
+{
+	// Input must be 8 bytes which will convert to 6 bytes of packed 6 bit characters and
+	// inputs must be the ASCII character set values from 32 to 95....
+    
+	unsigned long long intSum = 0;
+
+	int i;
+
+	for (i=0; i<4; i++)
+	{
+		intSum = (64 * intSum) + Padded[i] - 32;
+	}
+
+	Compressed[0] = (UCHAR)(intSum >> 16) & 255;
+	Compressed[1] = (UCHAR)(intSum >> 8) &  255;
+	Compressed[2] = (UCHAR)intSum & 255;
+
+	intSum = 0;
+
+	for (i=4; i<8; i++)
+	{
+		intSum = (64 * intSum) + Padded[i] - 32;
+	}
+
+	Compressed[3] = (UCHAR)(intSum >> 16) & 255;
+	Compressed[4] = (UCHAR)(intSum >> 8) &  255;
+	Compressed[5] = (UCHAR)intSum & 255;
+}
+
+void Bit6ToASCII(UCHAR * Padded, UCHAR * UnCompressed)
+{
+	// uncompress 6 to 8
+
+	// Input must be 6 bytes which represent packed 6 bit characters that well 
+	// result will be 8 ASCII character set values from 32 to 95...
+
+	unsigned long long intSum = 0;
+
+	int i;
+
+	for (i=0; i<3; i++)
+	{
+		intSum = (intSum << 8) + Padded[i];
+	}
+
+	UnCompressed[0] = (UCHAR)((intSum >> 18) & 63) + 32;
+	UnCompressed[1] = (UCHAR)((intSum >> 12) & 63) + 32;
+	UnCompressed[2] = (UCHAR)((intSum >> 6) & 63) + 32;
+	UnCompressed[3] = (UCHAR)(intSum & 63) + 32;
+
+	intSum = 0;
+
+	for (i=3; i<6; i++)
+	{
+		intSum = (intSum << 8) + Padded[i] ;
+	}
+
+	UnCompressed[4] = (UCHAR)((intSum >> 18) & 63) + 32;
+	UnCompressed[5] = (UCHAR)((intSum >> 12) & 63) + 32;
+	UnCompressed[6] = (UCHAR)((intSum >> 6) & 63) + 32;
+	UnCompressed[7] = (UCHAR)(intSum & 63) + 32;
+}
+
+
+// Function to compress callsign (up to 7 characters + optional "-"SSID   (-0 to -15 or -A to -Z) 
+    
+void CompressCallsign(char * inCallsign, UCHAR * Compressed)
+{
+	char Callsign[10] = "";
+	char Padded[16];
+	int SSID;
+	char * Dash;
+
+	memcpy(Callsign, inCallsign, 10);
+	Dash = strchr(Callsign, '-');
+	
+	if (Dash == 0)		// if No SSID
+	{
+		strcpy(Padded, Callsign);
+		strcat(Padded, "    ");
+		Padded[7] = '0';			//  "0" indicates no SSID
+	}
+	else
+	{
+		*(Dash++) = 0;
+		SSID = atoi(Dash);
+
+		strcpy(Padded, Callsign);
+		strcat(Padded, "    ");
+
+		if (SSID >= 10)		// ' handles special case of -10 to -15 : ; < = > ? '
+			Padded[7] = ':' + SSID - 10;
+		else
+			Padded[7] = *(Dash);
+	}
+
+	ASCIIto6Bit(Padded, Compressed); //compress to 8 6 bit characters   6 bytes total
+}
+
+// Function to compress Gridsquare (up to 8 characters)
+
+void CompressGridSquare(char * Square, UCHAR * Compressed)
+{
+	char Padded[17];
+        
+	if (strlen(Square) > 8)
+		return;
+
+	strcpy(Padded, Square);
+	strcat(Padded, "        ");
+
+	ASCIIto6Bit(Padded, Compressed); //compress to 8 6 bit characters   6 bytes total
+}
+
+// Function to decompress 6 byte call sign to 7 characters plus optional -SSID of -0 to -15 or -A to -Z
+  
+void DeCompressCallsign(char * bytCallsign, char * returned)
+{
+	char bytTest[10] = "";
+	char SSID[8] = "";
+    
+	Bit6ToASCII(bytCallsign, bytTest);
+
+	memcpy(returned, bytTest, 7);
+	returned[7] = 0;
+	strlop(returned, ' ');		// remove trailing space
+
+	if (bytTest[7] == '0') // Value of "0" so No SSID
+		returned[6] = 0;
+	else if (bytTest[7] >= 58 && bytTest[7] <= 63) //' handles special case for -10 to -15
+		sprintf(SSID, "-%d", bytTest[7] - 48);
+	else
+		sprintf(SSID, "-%c", bytTest[7]);
+	
+	strcat(returned, SSID);
+}
+
+
+// Function to decompress 6 byte Grid square to 4, 6 or 8 characters
+
+void DeCompressGridSquare(char * bytGS, char * returned)
+{
+	char bytTest[10] = "";
+	Bit6ToASCII(bytGS, bytTest);
+
+	strlop(bytTest, ' ');
+	strcpy(returned, bytTest);
+}
+
+// A function to compute the parity symbol used in the frame type encoding
+
+UCHAR ComputeTypeParity(UCHAR bytFrameType)
+{
+	UCHAR bytMask = 0x30;		// only using 6 bits
+	UCHAR bytParitySum = 3;
+	UCHAR bytSym = 0;
+	int k;
+
+	for (k = 0; k < 3; k++)
+	{
+		bytSym = (bytMask & bytFrameType) >> (2 * (2 - k));
+		bytParitySum = bytParitySum ^ bytSym;
+		bytMask = bytMask >> 2;
+	}
+    
+	return bytParitySum & 0x3;
+}
+
+// Function to look up the byte value from the frame string name
+
+UCHAR FrameCode(char * strFrameName)
+{
+	int i;
+
+    for (i = 0; i < 64; i++)
+	{
+		if (strcmp(strFrameType[i], strFrameName) == 0)
+		{
+			return i;
+		}
+	}
+	return 0;
+}
+
+unsigned int GenCRC16(unsigned char * Data, unsigned short length)
+{
+	// For  CRC-16-CCITT =    x^16 + x^12 +x^5 + 1  intPoly = 1021 Init FFFF
+    // intSeed is the seed value for the shift register and must be in the range 0-0xFFFF
+
+	int intRegister = 0xffff; //intSeed
+	int i,j;
+	int Bit;
+	int intPoly = 0x8810;	//  This implements the CRC polynomial  x^16 + x^12 +x^5 + 1
+
+	for (j = 0; j < length; j++)	
+	{
+		int Mask = 0x80;			// Top bit first
+
+		for (i = 0; i < 8; i++)	// for each bit processing MS bit first
+		{
+			Bit = Data[j] & Mask;
+			Mask >>= 1;
+
+            if (intRegister & 0x8000)		//  Then ' the MSB of the register is set
+			{
+                // Shift left, place data bit as LSB, then divide
+                // Register := shiftRegister left shift 1
+                // Register := shiftRegister xor polynomial
+                 
+              if (Bit)
+                 intRegister = 0xFFFF & (1 + (intRegister << 1));
+			  else
+                  intRegister = 0xFFFF & (intRegister << 1);
+	
+				intRegister = intRegister ^ intPoly;
+			}
+			else  
+			{
+				// the MSB is not set
+                // Register is not divisible by polynomial yet.
+                // Just shift left and bring current data bit onto LSB of shiftRegister
+              if (Bit)
+                 intRegister = 0xFFFF & (1 + (intRegister << 1));
+			  else
+                  intRegister = 0xFFFF & (intRegister << 1);
+			}
+		}
+	}
+ 
+	return intRegister;
+}
+
+BOOL checkcrc16(unsigned char * Data, unsigned short length)
+{
+	int intRegister = 0xffff; //intSeed
+	int i,j;
+	int Bit;
+	int intPoly = 0x8810;	//  This implements the CRC polynomial  x^16 + x^12 +x^5 + 1
+
+	for (j = 0; j <  (length - 2); j++)		// ' 2 bytes short of data length
+	{
+		int Mask = 0x80;			// Top bit first
+
+		for (i = 0; i < 8; i++)	// for each bit processing MS bit first
+		{
+			Bit = Data[j] & Mask;
+			Mask >>= 1;
+
+            if (intRegister & 0x8000)		//  Then ' the MSB of the register is set
+			{
+                // Shift left, place data bit as LSB, then divide
+                // Register := shiftRegister left shift 1
+                // Register := shiftRegister xor polynomial
+                 
+              if (Bit)
+                 intRegister = 0xFFFF & (1 + (intRegister << 1));
+			  else
+                  intRegister = 0xFFFF & (intRegister << 1);
+	
+				intRegister = intRegister ^ intPoly;
+			}
+			else  
+			{
+				// the MSB is not set
+                // Register is not divisible by polynomial yet.
+                // Just shift left and bring current data bit onto LSB of shiftRegister
+              if (Bit)
+                 intRegister = 0xFFFF & (1 + (intRegister << 1));
+			  else
+                  intRegister = 0xFFFF & (intRegister << 1);
+			}
+		}
+	}
+
+    if (Data[length - 2] == intRegister >> 8)
+		if (Data[length - 1] == (intRegister & 0xFF))
+			return TRUE;
+   
+	return FALSE;
+}
+
+
+//	Subroutine to compute a 16 bit CRC value and append it to the Data... With LS byte XORed by bytFrameType
+    
+void GenCRC16FrameType(char * Data, int Length, UCHAR bytFrameType)
+{
+	unsigned int CRC = GenCRC16(Data, Length);
+
+	// Put the two CRC bytes after the stop index
+
+	Data[Length++] = (CRC >> 8);		 // MS 8 bits of Register
+	Data[Length] = (CRC & 0xFF) ^ bytFrameType;  // LS 8 bits of Register
+}
+
+// Function to compute a 16 bit CRC value and check it against the last 2 bytes of Data (the CRC) XORing LS byte with bytFrameType..
+ 
+unsigned short int compute_crc(unsigned char *buf,int len);
+
+BOOL  CheckCRC16FrameType(unsigned char * Data, int Length, UCHAR bytFrameType)
+{
+	// returns TRUE if CRC matches, else FALSE
+    // For  CRC-16-CCITT =    x^16 + x^12 +x^5 + 1  intPoly = 1021 Init FFFF
+    // intSeed is the seed value for the shift register and must be in the range 0-0xFFFF
+
+	unsigned int CRC = GenCRC16(Data, Length);
+	unsigned short CRC2 =  compute_crc(Data, Length);
+	CRC2 ^= 0xffff;
+  
+	// Compare the register with the last two bytes of Data (the CRC) 
+    
+	if ((CRC >> 8) == Data[Length])
+		if (((CRC & 0xFF) ^ bytFrameType) == Data[Length + 1])
+			return TRUE;
+
+	return FALSE;
+}
+
+
+void SaveQueueOnBreak()
+{
+	// Save data we are about to remove from TX buffer
+}
+
+
+extern UCHAR bytEchoData[];		// has to be at least max packet size (?1280)
+
+extern int bytesEchoed;
+
+extern UCHAR DelayedEcho;
+
+
+// Timer Rotines
+
+void CheckTimers()
+{
+
+}
+
+// Main polling Function returns True or FALSE if closing 
+
+int dttLastBusy;
+int dttLastClear;
+int dttStartRTMeasure;
+extern int intLastStart;
+extern int intLastStop;
+float dblAvgBaselineSlow;
+float dblAvgBaselineFast;
+float dblAvgPk2BaselineRatio;
+
+//  Functino to extract bandwidth from ARQBandwidth
+
+
+//	 Function to implement a busy detector based on 1024 point FFT
+ /*
+BOOL BusyDetect(float * dblMag, int intStart, int intStop)
+{
+	// this only called while searching for leader ...once leader detected, no longer called.
+	// First look at simple peak over the frequency band of  interest.
+	// Status:  May 28, 2014.  Some initial encouraging results. But more work needed.
+	//       1) Use of Start and Stop ranges good and appear to work well ...may need some tweaking +/_ a few bins.
+	//       2) Using a Fast attack and slow decay for the dblAvgPk2BaselineRation number e.g.
+	//       dblAvgPk2BaselineRatio = Max(dblPeakPwrAtFreq / dblAvgBaselineX, 0.9 * dblAvgPk2BaselineRatio)
+	// Seems to work well for the narrow detector. Tested on real CW, PSK, RTTY. 
+	// Still needs work on the wide band detector. (P3, P4 etc)  May be issues with AGC speed. (my initial on-air tests using AGC Fast).
+	// Ideally can find a set of parameters that won't require user "tweaking"  (Busy Squelch) but that is an alternative if needed. 
+	// use of technique of re initializing some parameters on a change in detection bandwidth looks good and appears to work well with 
+	// scanning.  Could be expanded with properties to "read back" these parameters so they could be saved and re initialize upon each new frequency. 
+
+	static int intBusyCountPkToBaseline = 0;
+	static int intBusyCountFastToSlow = 0;
+	static int intBusyCountSlowToFast = 0;
+	static BOOL blnLastBusy = FALSE;
+
+	float dblAvgBaseline = 0;
+	float dblPwrAtPeakFreq = 0;
+	float dblAvgBaselineX;
+	float dblAlphaBaselineSlow = 0.1f; // This factor affects the filtering of baseline slow. smaller = slower filtering
+	float dblAlphaBaselineFast = 0.5f; // This factor affects the filtering of baseline fast. smaller = slower filtering
+	int intPkIndx = 0;
+	float dblFSRatioNum, dblSFRatioNum;
+	BOOL  blnFS, blnSF, blnPkBaseline;
+	int i;
+
+	// This holds off any processing of data until 100 ms after PTT release to allow receiver recovery.
+      
+	if (Now - dttStartRTMeasure < 100)
+		return blnLastBusy;
+
+	for (i = intStart; i <= intStop; i++)	 // cover a range that matches the bandwidth expanded (+/-) by the tuning range
+	{
+		if (dblMag[i] > dblPwrAtPeakFreq)
+		{
+			dblPwrAtPeakFreq = dblMag[i];
+			intPkIndx = i;
+		}
+		dblAvgBaseline += dblMag[i];
+	}
+     
+	if (intPkIndx == 0)
+		return 0;
+	
+	// add in the 2 bins above and below the peak (about 59 Hz total bandwidth)
+	// This needs refinement for FSK mods like RTTY which have near equal peaks making the Peak and baseline on strong signals near equal
+	// Computer the power within a 59 Hz spectrum around the peak
+
+	dblPwrAtPeakFreq += (dblMag[intPkIndx - 2] + dblMag[intPkIndx - 1]) + (dblMag[intPkIndx + 2] + dblMag[intPkIndx + 1]);
+	dblAvgBaselineX = (dblAvgBaseline - dblPwrAtPeakFreq) / (intStop - intStart - 5);  // the avg Pwr per bin ignoring the 59 Hz area centered on the peak
+	dblPwrAtPeakFreq = dblPwrAtPeakFreq / 5;  //the the average Power (per bin) in the region of the peak (peak +/- 2bins...about 59 Hz)
+
+	if (intStart == intLastStart && intStop == intLastStop)
+	{
+		dblAvgPk2BaselineRatio = dblPwrAtPeakFreq / dblAvgBaselineX;
+		dblAvgBaselineSlow = (1 - dblAlphaBaselineSlow) * dblAvgBaselineSlow + dblAlphaBaselineSlow * dblAvgBaseline;
+		dblAvgBaselineFast = (1 - dblAlphaBaselineFast) * dblAvgBaselineFast + dblAlphaBaselineFast * dblAvgBaseline;
+	}
+	else
+	{
+		// This initializes the values after a bandwidth change
+
+		dblAvgPk2BaselineRatio = dblPwrAtPeakFreq / dblAvgBaselineX;
+		dblAvgBaselineSlow = dblAvgBaseline;
+		dblAvgBaselineFast = dblAvgBaseline;
+		intLastStart = intStart;
+		intLastStop = intStop;
+	}
+	
+	if (Now - dttLastBusy < 1000 ||  ProtocolState != DISC)	// Why??
+		return blnLastBusy;
+	
+	if (dblAvgPk2BaselineRatio > 1.118f * powf(Squelch, 1.5f))   // These values appear to work OK but may need optimization April 21, 2015
+	{
+		blnPkBaseline = TRUE;
+		dblAvgBaselineSlow = dblAvgBaseline;
+		dblAvgBaselineFast = dblAvgBaseline;
+	}
+	else
+	{
+       // 'If intBusyCountPkToBaseline > 0 Then
+
+		blnPkBaseline = FALSE;
+	}
+	
+	// This detects wide band "pulsy" modes like Pactor 3, MFSK etc
+
+	switch(Squelch)		 // this provides a modest adjustment to the ratio limit based on practical squelch values
+	{
+		//These values yield less sensiivity for F:S which minimizes trigger by static crashes but my need further optimization May 2, 2015
+
+	case 0:
+	case 1:
+	case 2:
+		dblFSRatioNum = 1.9f;
+		dblSFRatioNum = 1.2f;
+		break;
+		
+	case 3:
+		dblFSRatioNum = 2.1f;
+		dblSFRatioNum = 1.4f;
+		break;
+	case 4:
+		dblFSRatioNum = 2.3f;
+		dblSFRatioNum = 1.6f;
+		break;
+	case 5:
+		dblFSRatioNum = 2.5f;
+		dblSFRatioNum = 1.8f;
+		break;
+	case 6:
+		dblFSRatioNum = 2.7f;
+		dblSFRatioNum = 2.0f;
+	case 7:
+		dblFSRatioNum = 2.9f;
+		dblSFRatioNum = 2.2f;
+	case 8:
+	case 9:
+	case 10:
+        dblFSRatioNum = 3.1f;
+		dblSFRatioNum = 2.4f;
+	}
+	
+	// This covers going from Modulation to no modulation e.g. End of Pactor frame
+
+	if ((dblAvgBaselineSlow / dblAvgBaselineFast) > dblSFRatioNum)
+	
+		//Debug.WriteLine("     Slow to Fast")
+		blnSF = TRUE;
+	else
+		blnSF = FALSE;
+	
+	//  This covers going from no modulation to Modulation e.g. Start of Pactor Frame or Static crash
+	
+	if ((dblAvgBaselineFast / dblAvgBaselineSlow) > dblFSRatioNum)
+         //Debug.WriteLine("     Fast to Slow")
+		blnFS = TRUE;
+	else
+		blnFS = FALSE;
+
+	if (blnFS || blnSF || blnPkBaseline)
+	{
+		//'If blnFS Then Debug.WriteLine("Busy: Fast to Slow")
+		//'If blnSF Then Debug.WriteLine("Busy: Slow to Fast")
+		//'If blnPkBaseline Then Debug.WriteLine("Busy: Pk to Baseline")
+		blnLastBusy = TRUE;
+		dttLastBusy = Now;
+		return TRUE;
+	}
+	else
+	{
+		blnLastBusy = FALSE;
+		dttLastClear = Now;
+        return FALSE;
+	}
+	return blnLastBusy;
+}
+*/
+//	Subroutine to update the Busy detector when not displaying Spectrum or Waterfall (graphics disabled)
+ 		
+
+extern UCHAR CurrentLevel;
+
+#ifdef PLOTSPECTRUM		
+float dblMagSpectrum[206];
+float dblMaxScale = 0.0f;
+extern UCHAR Pixels[4096];
+extern UCHAR * pixelPointer;
+#endif
+
+
+/* Old Version pre gui
+
+void UpdateBusyDetector(short * bytNewSamples)
+{
+	float dblReF[1024];
+	float dblImF[1024];
+
+	float dblMag[206];
+	
+	static BOOL blnLastBusyStatus;
+	
+	float dblMagAvg = 0;
+	int intTuneLineLow, intTuneLineHi, intDelta;
+	int i;
+
+	if (ProtocolState != DISC)		// ' Only process busy when in DISC state
+		return;
+
+//	if (State != SearchingForLeader)
+//		return;						// only when looking for leader
+
+	if (Now - LastBusyCheck < 100)
+		return;
+
+	LastBusyCheck = Now;
+
+	FourierTransform(1024, bytNewSamples, &dblReF[0], &dblImF[0], FALSE);
+
+	for (i = 0; i <  206; i++)
+	{
+		//	starting at ~300 Hz to ~2700 Hz Which puts the center of the signal in the center of the window (~1500Hz)
+            
+		dblMag[i] = powf(dblReF[i + 25], 2) + powf(dblImF[i + 25], 2);	 // first pass 
+		dblMagAvg += dblMag[i];
+	}
+
+//	LookforPacket(dblMag, dblMagAvg, 206, &dblReF[25], &dblImF[25]);
+//	packet_process_samples(bytNewSamples, 1200);
+
+	intDelta = (ExtractARQBandwidth() / 2 + TuningRange) / 11.719f;
+
+	intTuneLineLow = max((103 - intDelta), 3);
+	intTuneLineHi = min((103 + intDelta), 203);
+    
+//	if (ProtocolState == DISC)		// ' Only process busy when in DISC state
+	{
+		blnBusyStatus = BusyDetect3(dblMag, intTuneLineLow, intTuneLineHi);
+		
+		if (blnBusyStatus && !blnLastBusyStatus)
+		{
+			QueueCommandToHost("BUSY TRUE");
+         	newStatus = TRUE;				// report to PTC
+		}
+		//    stcStatus.Text = "True"
+            //    queTNCStatus.Enqueue(stcStatus)
+            //    'Debug.WriteLine("BUSY TRUE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+			
+		else if (blnLastBusyStatus && !blnBusyStatus)
+		{
+			QueueCommandToHost("BUSY FALSE");
+			newStatus = TRUE;				// report to PTC
+		} 
+		//    stcStatus.Text = "False"
+        //    queTNCStatus.Enqueue(stcStatus)
+        //    'Debug.WriteLine("BUSY FALSE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+		blnLastBusyStatus = blnBusyStatus;
+	}
+}
+
+*/
+
+// Function to encode data for all PSK frame types
+
+int EncodePSKData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes)
+{
+	// Objective is to use this to use this to send all PSK data frames 
+	// 'Output is a byte array which includes:
+	//  1) A 2 byte Header which include the Frame ID.  This will be sent using 4FSK at 50 baud. It will include the Frame ID and ID Xored by the Session bytID.
+	//  2) n sections one for each carrier that will inlcude all data (with FEC appended) for the entire frame. Each block will be identical in length.
+	//  Ininitial implementation:
+	//    intNum Car may be 1, 2, 4 or 8
+	//    intBaud may be 100, 167
+	//    intPSKMode may be 4 (4PSK) or 8 (8PSK) 
+	//    bytDataToSend must be equal to or less than max data supported by the frame or a exception will be logged and an empty array returned
+
+	//  First determine if bytDataToSend is compatible with the requested modulation mode.
+
+	int intNumCar, intBaud, intDataLen, intRSLen, bytDataToSendLengthPtr, intEncodedDataPtr;
+
+	int intCarDataCnt, intStartIndex;
+	BOOL blnOdd;
+	char strType[18];
+	char strMod[16];
+	BOOL blnFrameTypeOK;
+	UCHAR bytQualThresh;
+	int i;
+	UCHAR * bytToRS = &bytEncodedBytes[2];
+
+	blnFrameTypeOK = FrameInfo(bytFrameType, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytQualThresh, strType);
+
+	if (intDataLen == 0 || Length == 0 || !blnFrameTypeOK)
+	{
+		//Logs.Exception("[EncodeFSKFrameType] Failure to update parameters for frame type H" & Format(bytFrameType, "X") & "  DataToSend Len=" & bytDataToSend.Length.ToString)
+		return 0;
+	}
+
+	//	Generate the 2 bytes for the frame type data:
+
+	bytEncodedBytes[0] = bytFrameType;
+	bytEncodedBytes[1] = bytFrameType ^ bytSessionID;
+
+	bytDataToSendLengthPtr = 0;
+	intEncodedDataPtr = 2;
+
+	// Now compute the RS frame for each carrier in sequence and move it to bytEncodedBytes 
+
+	if (strchr(strMod, 'R'))
+	{
+		// Robust Frame. We send data twice, so only encode half the carriers
+
+		intNumCar /= 2;
+	}
+
+	for (i = 0; i < intNumCar; i++)		//  across all carriers
+	{
+		intCarDataCnt = Length - bytDataToSendLengthPtr;
+
+		if (intCarDataCnt > intDataLen) // why not > ??
+		{
+			// Won't all fit 
+
+			bytToRS[0] = intDataLen;
+			intStartIndex = intEncodedDataPtr;
+			memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intDataLen);
+			bytDataToSendLengthPtr += intDataLen;
+		}
+		else
+		{
+			// Last bit
+
+			memset(&bytToRS[0], 0, intDataLen);
+
+			bytToRS[0] = intCarDataCnt;  // Could be 0 if insuffient data for # of carriers 
+
+			if (intCarDataCnt > 0)
+			{
+				memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intCarDataCnt);
+				bytDataToSendLengthPtr += intCarDataCnt;
+			}
+		}
+
+		GenCRC16FrameType(bytToRS, intDataLen + 1, bytFrameType); // calculate the CRC on the byte count + data bytes
+
+		RSEncode(bytToRS, bytToRS + intDataLen + 3, intDataLen + 3, intRSLen);  // Generate the RS encoding ...now 14 bytes total
+
+		//  Need: (2 bytes for Frame Type) +( Data + RS + 1 byte byteCount + 2 Byte CRC per carrier)
+
+		intEncodedDataPtr += intDataLen + 3 + intRSLen;
+
+		bytToRS += intDataLen + 3 + intRSLen;
+	}
+
+	if (strchr(strMod, 'R'))
+	{
+		// Robust Frame. We send data twice, so copy data
+
+		memcpy(&bytEncodedBytes[intEncodedDataPtr], &bytEncodedBytes[2], intEncodedDataPtr - 2);
+		intEncodedDataPtr += intEncodedDataPtr - 2;
+	}
+
+
+	return intEncodedDataPtr;
+}
+
+
+
+// Function to encode data for all FSK frame types
+
+int EncodeFSKData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes)
+{
+	// Objective is to use this to use this to send all 4FSK data frames 
+	// 'Output is a byte array which includes:
+	//  1) A 2 byte Header which include the Frame ID.  This will be sent using 4FSK at 50 baud. It will include the Frame ID and ID Xored by the Session bytID.
+	//  2) n sections one for each carrier that will inlcude all data (with FEC appended) for the entire frame. Each block will be identical in length.
+	//  Ininitial implementation:
+	//    intNum Car may be 1, 2, 4 or 8
+	//    intBaud may be 50, 100
+	//    strMod is 4FSK) 
+	//    bytDataToSend must be equal to or less than max data supported by the frame or a exception will be logged and an empty array returned
+
+	//  First determine if bytDataToSend is compatible with the requested modulation mode.
+
+	int intNumCar, intBaud, intDataLen, intRSLen, bytDataToSendLengthPtr, intEncodedDataPtr;
+
+	int intCarDataCnt, intStartIndex;
+	BOOL blnOdd;
+	char strType[18];
+	char strMod[16];
+	BOOL blnFrameTypeOK;
+	UCHAR bytQualThresh;
+	int i;
+	UCHAR * bytToRS = &bytEncodedBytes[2];
+
+	blnFrameTypeOK = FrameInfo(bytFrameType, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytQualThresh, strType);
+
+	if (intDataLen == 0 || Length == 0 || !blnFrameTypeOK)
+	{
+		//Logs.Exception("[EncodeFSKFrameType] Failure to update parameters for frame type H" & Format(bytFrameType, "X") & "  DataToSend Len=" & bytDataToSend.Length.ToString)
+		return 0;
+	}
+
+	//	Generate the 2 bytes for the frame type data:
+
+	bytEncodedBytes[0] = bytFrameType;
+	bytEncodedBytes[1] = bytFrameType ^ bytSessionID;
+
+	//   Dim bytToRS(intDataLen + 3 - 1) As Byte ' Data + Count + 2 byte CRC
+
+	bytDataToSendLengthPtr = 0;
+	intEncodedDataPtr = 2;
+
+	if (intBaud < 600 || intDataLen < 600)
+	{
+		// Now compute the RS frame for each carrier in sequence and move it to bytEncodedBytes 
+
+		for (i = 0; i < intNumCar; i++)		//  across all carriers
+		{
+			intCarDataCnt = Length - bytDataToSendLengthPtr;
+
+			if (intCarDataCnt >= intDataLen) // why not > ??
+			{
+				// Won't all fit 
+
+				bytToRS[0] = intDataLen;
+				intStartIndex = intEncodedDataPtr;
+				memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intDataLen);
+				bytDataToSendLengthPtr += intDataLen;
+			}
+			else
+			{
+				// Last bit
+
+				bytToRS[0] = intCarDataCnt;  // Could be 0 if insuffient data for # of carriers 
+
+				if (intCarDataCnt > 0)
+				{
+					memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intCarDataCnt);
+					bytDataToSendLengthPtr += intCarDataCnt;
+				}
+			}
+
+			GenCRC16FrameType(bytToRS, intDataLen + 1, bytFrameType); // calculate the CRC on the byte count + data bytes
+
+			RSEncode(bytToRS, bytToRS + intDataLen + 3, intDataLen + 3, intRSLen);  // Generate the RS encoding ...now 14 bytes total
+
+			//  Need: (2 bytes for Frame Type) +( Data + RS + 1 byte byteCount + 2 Byte CRC per carrier)
+
+			intEncodedDataPtr += intDataLen + 3 + intRSLen;
+
+			bytToRS += intDataLen + 3 + intRSLen;
+		}
+		return intEncodedDataPtr;
+	}
+
+	// special case for 600 baud 4FSK which has 600 byte data field sent as three sequencial (200 byte + 50 byte RS) groups
+
+	for (i = 0; i < 3; i++)		 // for three blocks of RS data
+	{
+		intCarDataCnt = Length - bytDataToSendLengthPtr;
+
+		if (intCarDataCnt >= intDataLen / 3) // why not > ??
+		{
+			// Won't all fit 
+
+			bytToRS[0] = intDataLen / 3;
+			intStartIndex = intEncodedDataPtr;
+			memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intDataLen / 3);
+			bytDataToSendLengthPtr += intDataLen / 3;
+		}
+		else
+		{
+			// Last bit
+
+			bytToRS[0] = intCarDataCnt;  // Could be 0 if insuffient data for # of carriers 
+
+			if (intCarDataCnt > 0)
+			{
+				memcpy(&bytToRS[1], &bytDataToSend[bytDataToSendLengthPtr], intCarDataCnt);
+				bytDataToSendLengthPtr += intCarDataCnt;
+			}
+		}
+		GenCRC16FrameType(bytToRS, intDataLen / 3 + 1, bytFrameType); // calculate the CRC on the byte count + data bytes
+
+		RSEncode(bytToRS, bytToRS + intDataLen / 3 + 3, intDataLen / 3 + 3, intRSLen / 3);  // Generate the RS encoding ...now 14 bytes total
+		intEncodedDataPtr += intDataLen / 3 + 3 + intRSLen / 3;
+		bytToRS += intDataLen / 3 + 3 + intRSLen / 3;
+	}
+	return intEncodedDataPtr;
+}
+
+
+void DrawRXFrame(int State, const char * Frame)
+{
+}
+void DrawTXFrame(const char * Frame)
+{
+}
+
+int SendtoGUI(char Type, unsigned char * Msg, int Len)
+{
+	return 0;
+}
\ No newline at end of file
diff --git a/ARDOPC.h b/ARDOPC.h
new file mode 100644
index 0000000..89c9d43
--- /dev/null
+++ b/ARDOPC.h
@@ -0,0 +1,771 @@
+
+
+#ifndef ARDOPCHEADERDEFINED
+#define ARDOPCHEADERDEFINED
+
+#ifdef CONST
+#undef CONST
+#endif
+#define CONST const	// for building sample arrays
+
+extern const char ProductName[];
+extern const char ProductVersion[];
+
+//#define USE_SOUNDMODEM
+
+#define UseGUI			// Enable GUI Front End Support
+
+#ifndef TEENSY
+#ifdef UseGUI
+
+// Constellation and Waterfall for GUI interface
+
+//#define PLOTCONSTELLATION
+//#define PLOTWATERFALL
+//#define PLOTSPECTRUM
+#define ConstellationHeight 90
+#define ConstellationWidth 90
+#define WaterfallWidth 205
+#define WaterfallHeight 64
+#define SpectrumWidth 205
+#define SpectrumHeight 64
+
+#define PLOTRADIUS 42
+#define WHITE 0
+#define Tomato 1
+#define Gold 2
+#define Lime 3	
+#define Yellow 4
+#define Orange 5
+#define Khaki 6
+#define Cyan 7
+#define DeepSkyBlue 8
+#define RoyalBlue 9
+#define Navy 10
+#define Black 11 
+#define Goldenrod 12
+#define Fuchsia 13
+
+#endif
+#endif
+
+
+
+//	Sound interface buffer size
+
+#define SendSize 1200		// 100 mS for now
+#define ReceiveSize 240	// try 100 mS for now
+#define NumberofinBuffers 4
+
+#define MAXCAR 43			// Max OFDM Carriers
+
+#define DATABUFFERSIZE 11000
+
+#ifndef _WIN32_WINNT		// Allow use of features specific to Windows XP or later.                   
+#define _WIN32_WINNT 0x0501	// Change this to the appropriate value to target other versions of Windows.
+#endif						
+
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#define _CRT_SECURE_NO_DEPRECATE
+
+#ifndef WIN32
+#define max(x, y) ((x) > (y) ? (x) : (y))
+#define min(x, y) ((x) < (y) ? (x) : (y))
+#endif
+
+#ifdef WIN32
+
+typedef void *HANDLE;
+#else
+#define HANDLE int
+#endif
+
+void txSleep(int mS);
+
+unsigned int getTicks();
+
+//#ifdef WIN32
+//#define round(x) floorf(x + 0.5f);
+//#endif
+
+
+#define Now getTicks()
+
+// DebugLog Severity Levels 
+
+#define LOGEMERGENCY 0 
+#define LOGALERT 1
+#define LOGCRIT 2 
+#define LOGERROR 3 
+#define LOGWARNING 4
+#define LOGNOTICE 5
+#define LOGINFO 6
+#define LOGDEBUG 7
+
+#include <time.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+//#include <math.h>
+
+#ifdef M_PI
+#undef M_PI
+#endif
+
+#define M_PI       3.1415926f
+
+#ifndef TEENSY
+#ifndef WIN32
+#define LINUX
+#endif
+#endif
+
+#ifdef __ARM_ARCH
+#ifndef TEENSY
+#define ARMLINUX
+#endif
+#endif
+
+#include "ecc.h"				// RS Constants
+
+typedef int BOOL;
+typedef unsigned char UCHAR;
+
+#define VOID void
+
+#define FALSE 0
+#define TRUE 1
+
+#define False 0
+#define True 1
+
+// TEENSY Interface board equates
+
+#ifdef TEENSY
+#ifdef PIBOARD
+#define ISSLED LED0
+#else
+#define ISSLED LED1
+#endif
+#define IRSLED LED1
+#define TRAFFICLED LED2
+#else
+#define ISSLED 1
+#define IRSLED 2
+#define TRAFFICLED 3
+#define PKTLED 4
+#endif
+
+BOOL KeyPTT(BOOL State);
+
+UCHAR FrameCode(char * strFrameName);
+BOOL FrameInfo(UCHAR bytFrameType, int * blnOdd, int * intNumCar, char * strMod,
+   int * intBaud, int * intDataLen, int * intRSLen, UCHAR * bytQualThres, char * strType);
+
+void ClearDataToSend();
+int EncodeFSKData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes);
+int EncodePSKData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes);
+int EncodeOFDMData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes);
+int Encode4FSKIDFrame(char * Callsign, char * Square, unsigned char * bytreturn, UCHAR SessionID);
+int EncodeDATAACK(int intQuality, UCHAR bytSessionID, UCHAR * bytreturn);
+int EncodeDATANAK(int intQuality , UCHAR bytSessionID, UCHAR * bytreturn);
+void Mod4FSKDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan);
+void ModPSKDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan);
+BOOL IsDataFrame(UCHAR intFrameType);
+BOOL CheckValidCallsignSyntax(char * strTargetCallsign);
+void StartCodec(char * strFault);
+void StopCodec(char * strFault);
+BOOL SendARQConnectRequest(char * strMycall, char * strTargetCall);
+void AddDataToDataToSend(UCHAR * bytNewData, int Len);
+BOOL StartFEC(UCHAR * bytData, int Len, char * strDataMode, int intRepeats, BOOL blnSendID);
+void SendID(BOOL blnEnableCWID);
+BOOL CheckGSSyntax(char * GS);
+//void SetARDOPProtocolState(int value);
+unsigned int GenCRC16(unsigned char * Data, unsigned short length);
+void SendCommandToHost(char * Cmd);
+void TCPSendCommandToHost(char * Cmd);
+void SCSSendCommandToHost(char * Cmd);
+void SendCommandToHostQuiet(char * Cmd);
+void TCPSendCommandToHostQuiet(char * Cmd);
+void SCSSendCommandToHostQuiet(char * Cmd);
+void UpdateBusyDetector(short * bytNewSamples);
+int UpdatePhaseConstellation(short * intPhases, short * intMags, int intPSKPhase, BOOL blnQAM, BOOL OFDM);
+void SetARDOPProtocolState(int value);
+BOOL BusyDetect3(float * dblMag, int intStart, int intStop);
+void SendLogToHost(char * Msg, int len);
+VOID Gearshift_2(int intAckNakValue, BOOL blnInit);
+
+void displayState(const char * State);
+void displayCall(int dirn, char * call);
+
+void SampleSink(int LR, short Sample);
+void SoundFlush();
+void StopCapture();
+void StartCapture();
+void DiscardOldSamples();
+void ClearAllMixedSamples();
+
+void SetFilter(void * Filter());
+
+void AddTrailer();
+void CWID(char * strID, short * intSamples, BOOL blnPlay);
+void sendCWID(char * Call, BOOL Play, int Chan);
+UCHAR ComputeTypeParity(UCHAR bytFrameType);
+void GenCRC16FrameType(char * Data, int Length, UCHAR bytFrameType);
+BOOL CheckCRC16FrameType(unsigned char * Data, int Length, UCHAR bytFrameType);
+char * strlop(char * buf, char delim);
+void QueueCommandToHost(char * Cmd);
+void SCSQueueCommandToHost(char * Cmd);
+void TCPQueueCommandToHost(char * Cmd);
+void SendReplyToHost(char * strText);
+void TCPSendReplyToHost(char * strText);
+void SCSSendReplyToHost(char * strText);
+void LogStats();
+int GetNextFrameData(int * intUpDn, UCHAR * bytFrameTypeToSend, UCHAR * strMod, BOOL blnInitialize);
+void SendData();
+int ComputeInterFrameInterval(int intRequestedIntervalMS);
+VOID EncodeAndSend4FSKControl(UCHAR bytFrameType, UCHAR bytSessionID, int LeaderLength);
+VOID WriteExceptionLog(const char * format, ...);
+void SaveQueueOnBreak();
+VOID Statsprintf(const char * format, ...);
+VOID CloseDebugLog();
+VOID CloseStatsLog();
+void Abort();
+void SetLED(int LED, int State);
+VOID ClearBusy();
+VOID CloseCOMPort(HANDLE fd);
+VOID COMClearRTS(HANDLE fd);
+VOID COMClearDTR(HANDLE fd);
+
+//#ifdef WIN32
+void ProcessNewSamples(short * Samples, int nSamples);
+VOID Debugprintf(const char * format, ...);
+VOID WriteDebugLog(const char * format, ...);
+void ardopmain();
+BOOL GetNextFECFrame();
+void GenerateFSKTemplates();
+void printtick(char * msg);
+void InitValidFrameTypes();
+//#endif
+
+extern void Generate50BaudTwoToneLeaderTemplate();
+extern BOOL blnDISCRepeating;
+
+BOOL DemodDecode4FSKID(UCHAR bytFrameType, char * strCallID, char * strGridSquare);
+void DeCompressCallsign(char * bytCallsign, char * returned);
+void DeCompressGridSquare(char * bytGS, char * returned);
+
+int RSEncode(UCHAR * bytToRS, UCHAR * RSBytes, int DataLen, int RSLen);
+BOOL RSDecode(UCHAR * bytRcv, int Length, int CheckLen, BOOL * blnRSOK);
+
+void ProcessRcvdFECDataFrame(int intFrameType, UCHAR * bytData, BOOL blnFrameDecodedOK);
+void ProcessUnconnectedConReqFrame(int intFrameType, UCHAR * bytData);
+void ProcessRcvdARQFrame(UCHAR intFrameType, UCHAR * bytData, int DataLen, BOOL blnFrameDecodedOK);
+void InitializeConnection();
+
+void AddTagToDataAndSendToHost(UCHAR * Msg, char * Type, int Len);
+void TCPAddTagToDataAndSendToHost(UCHAR * Msg, char * Type, int Len);
+void SCSAddTagToDataAndSendToHost(UCHAR * Msg, char * Type, int Len);
+
+void RemoveDataFromQueue(int Len);
+void RemodulateLastFrame();
+
+void GetSemaphore();
+void FreeSemaphore();
+const char * Name(UCHAR bytID);
+const char * shortName(UCHAR bytID);
+void InitSound();
+void initFilter(int Width, int centerFreq, int Chan);
+void FourierTransform(int NumSamples, short * RealIn, float * RealOut, float * ImagOut, int InverseTransform);
+VOID ClosePacketSessions();
+VOID LostHost();
+VOID ProcessPacketHostBytes(UCHAR * RXBuffer, int Len);
+int ReadCOMBlock(HANDLE fd, char * Block, int MaxLength);
+VOID ProcessDEDModeFrame(UCHAR * rxbuffer, unsigned int Length);
+BOOL CheckForPktMon();
+BOOL CheckForPktData();
+void ModOFDMDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan);
+void GetOFDMFrameInfo(int OFDMMode, int * intDataLen, int * intRSLen, int * Mode, int * Symbols);
+void ClearOFDMVariables();
+VOID EncodeAndSendOFDMACK(UCHAR bytSessionID, int LeaderLength, int Chan);
+int ProcessOFDMAck(int AckType);
+void ProcessOFDMNak(int AckType);
+
+int SendtoGUI(char Type, unsigned char * Msg, int Len);	
+void DrawRXFrame(int State, const char * Frame);
+void DrawTXFrame(const char * Frame);
+void mySetPixel(unsigned char x, unsigned char y, unsigned int Colour);
+void clearDisplay();
+void DrawDecode(char * Decode);
+
+
+extern int WaterfallActive;
+extern int SpectrumActive;
+extern unsigned int PKTLEDTimer;
+
+extern char stcLastPingstrSender[10];
+extern char stcLastPingstrTarget[10];
+extern int stcLastPingintRcvdSN;
+extern int stcLastPingintQuality;
+extern time_t stcLastPingdttTimeReceived;
+
+enum _ReceiveState		// used for initial receive testing...later put in correct protocol states
+{
+	SearchingForLeader,
+	AcquireSymbolSync,
+	AcquireFrameSync,
+	AcquireFrameType,
+	DecodeFrameType,
+	AcquireFrame,
+	DecodeFramestate
+};
+
+extern enum _ReceiveState State;
+
+enum _ARQBandwidth
+{
+	XB200,
+	XB500,
+	XB2500,
+	UNDEFINED
+};
+
+extern enum _ARQBandwidth ARQBandwidth;
+extern const char ARQBandwidths[9][12];
+
+enum _ARDOPState
+{
+	OFFLINE,
+	DISC,
+	ISS,
+	IRS,
+	IDLE,     // ISS in quiet state ...no transmissions)
+	IRStoISS, // IRS during transition to ISS waiting for ISS's ACK from IRS's BREAK
+ 	FECSend,
+	FECRcv
+};
+
+extern enum _ARDOPState ProtocolState;
+
+extern const char ARDOPStates[8][9];
+
+
+
+// Enum of ARQ Substates
+
+enum _ARQSubStates
+{
+	None,
+	ISSConReq,
+	ISSConAck,
+	ISSData,
+	ISSId,
+	IRSConAck,
+	IRSData,
+	IRSBreak,
+	IRSfromISS,
+	DISCArqEnd
+};
+
+extern enum _ARQSubStates ARQState;
+
+enum _ProtocolMode
+{
+	Undef,
+	FEC,
+	ARQ
+};
+
+extern enum _ProtocolMode ProtocolMode;
+
+extern const char ARDOPModes[3][6];
+
+extern enum _ARQSubStates ARQState;
+
+struct SEM
+{
+	unsigned int Flag;
+	int Clashes;
+	int	Gets;
+	int Rels;
+};
+
+extern struct SEM Semaphore;
+
+#define DataNAK		0x00
+#define DataNAKLoQ	0x01
+#define ConRejBusy	0x02
+#define ConRejBW	0x03
+#define ConAck		0x04
+#define DISCFRAME	0x05
+#define BREAK		0x06
+#define END			0x07
+#define IDLEFRAME	0x08
+#define ConReq200	0x09
+#define ConReq500	0x0A
+#define ConReq2500	0x0B
+#define IDFRAME		0x0C
+#define PINGACK		0x0D
+#define PING		0x0E
+#define CQ_de		0x0F
+	
+	//	200 Hz Bandwidth 
+	//	1 Car modes
+	
+#define D4PSK_200_50_E	0x10
+#define D4PSK_200_50_O	0x11
+#define D4PSK_200_100_E	0x12
+#define D4PSK_200_100_O	0x13
+#define D16QAM_200_100_E	0x14
+#define D16QAM_200_100_O	0x15
+
+	//	500 Hz bandwidth Data 
+	//	1 Car 4FSK Data mode 500 Hz, 50 baud tones spaced @ 100 Hz 
+
+#define D4FSK_500_50_E	0x1A
+#define D4FSK_500_50_O	0x1B
+#define D4PSK_500_50_E	0x1C
+#define D4PSK_500_50_O	0x1D
+#define D4PSK_500_100_E	0x1E
+#define D4PSK_500_100_O	0x1F
+	//	2 Car 16QAM Data Modes 100 baud
+#define D16QAMR_500_100_E	0x20
+#define D16QAMR_500_100_O	0x21
+#define D16QAM_500_100_E	0x22
+#define D16QAM_500_100_O	0x23
+
+// OFDM modes
+
+#define DOFDM_500_55_E		0x24
+#define DOFDM_500_55_O		0x25
+
+#define DOFDM_200_55_E		0x26
+#define DOFDM_200_55_O		0x27
+
+#define OConReq500	0x18
+#define OConReq2500	0x19
+
+
+	//	1 Khz Bandwidth Data Modes 
+	//	2 Car 4FSK Data mode 1000 Hz, 50 baud tones spaced @ 100 Hz 
+#define D4FSK_1000_50_E	0x28
+#define D4FSK_1000_50_O	0x29
+
+	//	2500 bandwidth modes
+	//	10 Car PSK Data Modes 50 baud
+
+#define D4PSKR_2500_50_E 0x2A
+#define D4PSKR_2500_50_O 0x2B
+#define D4PSK_2500_50_E	0x2C
+#define D4PSK_2500_50_O	0x2D
+
+	//	10 Car PSK Data Modes 100 baud
+
+#define D4PSK_2500_100_E	0x2E
+#define D4PSK_2500_100_O	0x2F
+
+	//	10 Car 10 Car 16QAMRobust (duplicated carriers) 
+
+#define D16QAMR_2500_100_E	0x30
+#define D16QAMR_2500_100_O	0x31
+
+	//	10 Car 16QAM Data modes 100 baud 
+
+#define D16QAM_2500_100_E	0x32
+#define D16QAM_2500_100_O	0x33
+
+	// OFDM modes
+
+#define DOFDM_2500_55_E	0x34
+#define DOFDM_2500_55_O	0x35
+
+#define PktFrameHeader 0x3A		// Variable length frame Header
+#define PktFrameData 0x3B		// Variable length frame Data (Virtual Frsme Type)
+
+#define OFDMACK	0x3D
+#define DataACK	0x3E
+#define DataACKHiQ 0x3F
+
+
+
+extern CONST short int50BaudTwoToneLeaderTemplate[240];  // holds just 1 symbol (20 ms) of the leader
+ 
+//The actual templates over 11 carriers for 16QAM in a 8-8 circular constellation.  First 4 symbols only 
+// (only positive Phase values are in the table, sign reversal is used to get the negative phase values) This reduces the template size to 5280 integers
+extern CONST short intQAM50bdCarTemplate[11][4][120]; 
+
+extern CONST short intFSK50bdCarTemplate[12][240];		// Template for 4FSK carriers spaced at 50 Hz, 50 baud
+extern CONST short intFSK100bdCarTemplate[4][120];
+
+extern CONST short intOFDMTemplate[MAXCAR][8][216];
+
+// Config Params
+extern char GridSquare[9];
+extern char Callsign[10];
+extern BOOL wantCWID;
+extern BOOL CWOnOff;
+extern int LeaderLength;
+extern int TrailerLength;
+extern unsigned int ARQTimeout;
+extern int TuningRange;
+extern int TXLevel;
+extern int RXLevel;
+extern int autoRXLevel;
+extern BOOL DebugLog;
+extern int ARQConReqRepeats;
+extern BOOL CommandTrace;
+extern char strFECMode[];
+extern char CaptureDevice[];
+extern char PlaybackDevice[];
+extern int port;
+extern char HostPort[80];
+extern int pktport;
+extern BOOL RadioControl;
+extern BOOL SlowCPU;
+extern BOOL AccumulateStats;
+extern BOOL Use600Modes;
+extern BOOL UseOFDM;
+extern BOOL EnableOFDM;
+extern BOOL FSKOnly;
+extern BOOL fastStart;
+extern BOOL ConsoleLogLevel;
+extern BOOL FileLogLevel;
+extern BOOL EnablePingAck;
+extern BOOL NegotiateBW;
+
+extern int dttLastPINGSent;
+
+extern BOOL blnPINGrepeating;
+extern BOOL blnFramePending;
+extern int intPINGRepeats;
+
+extern BOOL gotGPIO;
+extern BOOL useGPIO;
+
+extern int pttGPIOPin;
+
+extern HANDLE hCATDevice;		// port for Rig Control
+extern char CATPort[80];
+extern int CATBAUD;
+extern int EnableHostCATRX;
+
+extern HANDLE hPTTDevice;			// port for PTT
+extern char PTTPort[80];			// Port for Hardware PTT - may be same as control port.
+extern int PTTBAUD;
+
+#define PTTRTS		1
+#define PTTDTR		2
+#define PTTCI_V		4
+
+extern UCHAR PTTOnCmd[];
+extern UCHAR PTTOnCmdLen;
+
+extern UCHAR PTTOffCmd[];
+extern UCHAR PTTOffCmdLen;
+
+extern int PTTMode;				// PTT Control Flags.
+
+
+
+
+extern char * CaptureDevices;
+extern char * PlaybackDevices;
+
+extern int dttCodecStarted;
+extern int dttStartRTMeasure;
+
+extern int intCalcLeader;        // the computed leader to use based on the reported Leader Length
+
+extern const char strFrameType[64][18];
+extern const char shortFrameType[64][12];
+extern BOOL Capturing;
+extern int SoundIsPlaying;
+extern int blnLastPTT;
+extern BOOL blnAbort;
+extern BOOL blnClosing;
+extern BOOL blnCodecStarted;
+extern BOOL blnInitializing;
+extern BOOL blnARQDisconnect;
+extern int DriveLevel;
+extern int FECRepeats;
+extern BOOL FECId;
+extern int Squelch;
+extern int BusyDet;
+extern BOOL blnEnbARQRpt;
+extern unsigned int dttNextPlay;
+
+extern UCHAR bytDataToSend[];
+extern int bytDataToSendLength;
+
+extern BOOL blnListen;
+extern BOOL Monitor;
+extern BOOL AutoBreak;
+extern BOOL BusyBlock;
+
+extern int DecodeCompleteTime;
+
+extern BOOL AccumulateStats;
+
+extern unsigned char bytEncodedBytes[4500];
+extern int EncLen;
+
+extern char AuxCalls[10][10];
+extern int AuxCallsLength;
+
+extern int bytValidFrameTypesLength;
+extern int bytValidFrameTypesLengthALL;
+extern int bytValidFrameTypesLengthISS;
+
+extern BOOL blnTimeoutTriggered;
+extern int intFrameRepeatInterval;
+extern int extraDelay;
+extern BOOL PlayComplete;
+
+extern const UCHAR bytValidFrameTypesALL[];
+extern const UCHAR bytValidFrameTypesISS[];
+extern const UCHAR * bytValidFrameTypes;
+
+extern const char strAllDataModes[][16];
+extern int strAllDataModesLen;
+
+extern const short Rate[64];		// Data Rate (in bits/sec) by Frame Type
+
+
+extern BOOL newStatus;
+
+// RS Variables
+
+extern int MaxCorrections;
+
+// Stats counters
+
+extern int SessBytesSent;
+extern int SessBytesReceived;
+extern int intLeaderDetects;
+extern int intLeaderSyncs;
+extern int intAccumLeaderTracking;
+extern float dblFSKTuningSNAvg;
+extern int intGoodFSKFrameTypes;
+extern int intFailedFSKFrameTypes;
+extern int intAccumFSKTracking;
+extern int intFSKSymbolCnt;
+extern int intGoodFSKFrameDataDecodes;
+extern int intFailedFSKFrameDataDecodes;
+extern int intAvgFSKQuality;
+extern int intFrameSyncs;
+extern int intGoodPSKSummationDecodes;
+extern int intGoodFSKSummationDecodes;
+extern int intGoodOFDMSummationDecodes;
+extern float dblLeaderSNAvg;
+extern int intAccumPSKLeaderTracking;
+extern float dblAvgPSKRefErr;
+extern int intPSKTrackAttempts;
+extern int intAccumPSKTracking;
+extern int intQAMTrackAttempts;
+extern int intAccumQAMTracking;
+extern int intOFDMTrackAttempts;
+extern int intAccumOFDMTracking;
+extern int intPSKSymbolCnt;
+extern int intQAMSymbolCnt;
+extern int intOFDMSymbolCnt;
+extern int intGoodPSKFrameDataDecodes;
+extern int intFailedPSKFrameDataDecodes;
+extern int intAvgPSKQuality;
+extern int intGoodOFDMFrameDataDecodes;
+extern int intFailedOFDMFrameDataDecodes;
+extern int intAvgOFDMQuality;
+extern float dblAvgDecodeDistance;
+extern int intDecodeDistanceCount;
+extern int intShiftUPs;
+extern int intShiftDNs;
+extern unsigned int dttStartSession;
+extern int intLinkTurnovers;
+extern int intEnvelopeCors;
+extern float dblAvgCorMaxToMaxProduct;
+extern int intConReqSN;
+extern int intConReqQuality;
+
+
+
+extern int int4FSKQuality;
+extern int int4FSKQualityCnts;
+extern int int8FSKQuality;
+extern int int8FSKQualityCnts;
+extern int int16FSKQuality;
+extern int int16FSKQualityCnts;
+extern int intFSKSymbolsDecoded;
+extern int intPSKQuality[2];
+extern int intPSKQualityCnts[2];
+extern int intPSKSymbolsDecoded; 
+
+extern int intOFDMQuality[8];
+extern int intOFDMQualityCnts[8];
+extern int intOFDMSymbolsDecoded; 
+
+extern int intQAMQuality;
+extern int intQAMQualityCnts;
+extern int intQAMSymbolsDecoded;
+extern int intQAMSymbolCnt;
+extern int intOFDMSymbolCnt;
+extern int intGoodQAMFrameDataDecodes;
+extern int intFailedQAMFrameDataDecodes;
+extern int intGoodQAMSummationDecodes;
+
+extern int dttLastBusyOn;
+extern int dttLastBusyOff;
+extern int dttLastLeaderDetect;
+
+extern int LastBusyOn;
+extern int LastBusyOff;
+extern int dttLastLeaderDetect;
+
+extern int pktDataLen;
+extern int pktRSLen;
+extern const char pktMod[16][12];
+extern int pktMode;
+extern int pktModeLen;
+extern const int pktBW[16];
+extern const int pktCarriers[16];
+extern const int defaultPacLen[16];
+extern const BOOL pktFSK[16];
+
+extern int pktMaxFrame;
+extern int pktMaxBandwidth;
+extern int pktPacLen;
+extern int initMode;		 // 0 - 4PSK 1 - 8PSK 2 = 16QAM
+
+extern UCHAR UnackedOFDMBlocks[128];
+extern int NextOFDMBlock;
+
+
+
+extern BOOL SerialMode;			// Set if using SCS Mode, Unset ofr TCP Mode
+
+// Has to follow enum defs
+
+BOOL EncodeARQConRequest(char * strMyCallsign, char * strTargetCallsign, enum _ARQBandwidth ARQBandwidth, UCHAR * bytReturn);
+
+
+// OFDM Modes
+
+#define PSK2	0
+#define PSK4	1
+#define PSK8	2
+#define QAM16	3
+#define PSK16	4			// Experimental - is it better than 16QAM?
+#define QAM32	5
+#define PSK4S	6			// Special shorter frame for short messages
+
+extern int OFDMMode;			// OFDM can use various modulation modes and redundancy levels
+extern int LastSentOFDMMode;	// For retries
+extern int LastSentOFDMType;	// For retries
+
+extern int SavedOFDMMode;		// used if we switch to a more robust mode cos we don't have much to send
+extern int SavedFrameType;
+
+
+extern const char OFDMModes[8][6];
+
+#endif
\ No newline at end of file
diff --git a/BusyDetect.c b/BusyDetect.c
new file mode 100644
index 0000000..0e85758
--- /dev/null
+++ b/BusyDetect.c
@@ -0,0 +1,367 @@
+
+
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#define _CRT_SECURE_NO_DEPRECATE
+
+#include <windows.h>
+#endif
+
+#include "ARDOPC.h"
+
+VOID SortSignals2(float * dblMag, int intStartBin, int intStopBin, int intNumBins, float *  dblAVGSignalPerBin, float *  dblAVGBaselinePerBin);
+
+int LastBusyOn;
+int LastBusyOff;
+
+BOOL blnLastBusy = FALSE;
+
+float dblAvgStoNSlowNarrow;
+float dblAvgStoNFastNarrow;
+float dblAvgStoNSlowWide;
+float dblAvgStoNFastWide;
+int intLastStart = 0;
+int intLastStop  = 0;
+int intBusyOnCnt  = 0;  // used to filter Busy ON detections 
+int intBusyOffCnt  = 0; // used to filter Busy OFF detections 
+int dttLastBusyTrip = 0;
+int dttPriorLastBusyTrip = 0;
+int dttLastBusyClear = 0;
+int dttLastTrip;
+extern float dblAvgPk2BaselineRatio, dblAvgBaselineSlow, dblAvgBaselineFast;
+int intHoldMs = 5000;
+
+
+VOID ClearBusy()
+{
+	dttLastBusyTrip = Now;
+	dttPriorLastBusyTrip = dttLastBusyTrip;
+	dttLastBusyClear = dttLastBusyTrip + 610;	// This insures test in ARDOPprotocol ~ line 887 will work 
+	dttLastTrip = dttLastBusyTrip -intHoldMs;	// This clears the busy detect immediatly (required for scanning when re enabled by Listen=True
+	blnLastBusy = False;
+	intBusyOnCnt = 0;
+	intBusyOffCnt = 0;
+	intLastStart = 0;
+	intLastStop = 0;		// This will force the busy detector to ignore old averages and initialze the rolling average filters
+}
+
+/*
+// Function to implement a busy detector based on 1024 point FFT
+
+BOOL BusyDetect2(float * dblMag, int intStart, int intStop)        // this only called while searching for leader ...once leader detected, no longer called.
+{
+	// each bin is about 12000/1024 or 11.72 Hz
+	// this only called while searching for leader ...once leader detected, no longer called.
+	// First sort signals and look at highes signals:baseline ratio..
+
+	float dblAVGSignalPerBinNarrow, dblAVGSignalPerBinWide, dblAVGBaselineNarrow, dblAVGBaselineWide;
+	float dblFastAlpha = 0.4f;
+	float dblSlowAlpha = 0.2f;
+	float dblAvgStoNNarrow, dblAvgStoNWide;
+	int intNarrow = 8;  // 8 x 11.72 Hz about 94 z
+	int intWide = ((intStop - intStart) * 2) / 3; //* 0.66);
+	int blnBusy = FALSE;
+	float dblAvgStoNSlowNarrow = 0;
+	float dblAvgStoNFastNarrow = 0;
+	float dblAvgStoNSlowWide = 0;
+	float dblAvgStoNFastWide = 0;
+
+	// First narrow band (~94Hz)
+
+	SortSignals(dblMag, intStart, intStop, intNarrow, &dblAVGSignalPerBinNarrow, &dblAVGBaselineNarrow);
+
+	if (intLastStart == intStart && intLastStop == intStop)
+	{
+		dblAvgStoNSlowNarrow = (1 - dblSlowAlpha) * dblAvgStoNSlowNarrow + dblSlowAlpha * dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+		dblAvgStoNFastNarrow = (1 - dblFastAlpha) * dblAvgStoNFastNarrow + dblFastAlpha * dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+	}
+	else
+	{
+		dblAvgStoNSlowNarrow = dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+		dblAvgStoNFastNarrow = dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+		intLastStart = intStart;
+		intLastStop = intStop;
+	}
+	
+	dblAvgStoNNarrow = max(dblAvgStoNSlowNarrow, dblAvgStoNFastNarrow); // computes fast attack, slow release
+
+	// Wide band (66% ofr current bandwidth) 
+
+	SortSignals(dblMag, intStart, intStop, intWide, &dblAVGSignalPerBinWide, &dblAVGBaselineWide);
+
+	if (intLastStart == intStart && intLastStop == intStop)
+	{
+		dblAvgStoNSlowWide = (1 - dblSlowAlpha) * dblAvgStoNSlowWide + dblSlowAlpha * dblAVGSignalPerBinWide / dblAVGBaselineWide;
+		dblAvgStoNFastWide = (1 - dblFastAlpha) * dblAvgStoNFastWide + dblFastAlpha * dblAVGSignalPerBinWide / dblAVGBaselineWide;
+	}
+	else
+	{
+		dblAvgStoNSlowWide = dblAVGSignalPerBinWide / dblAVGBaselineWide;
+		dblAvgStoNFastWide = dblAVGSignalPerBinWide / dblAVGBaselineWide;
+		intLastStart = intStart;
+		intLastStop = intStop;
+	}
+
+	dblAvgStoNNarrow = max(dblAvgStoNSlowNarrow, dblAvgStoNFastNarrow); // computes fast attack, slow release
+	dblAvgStoNWide = max(dblAvgStoNSlowWide, dblAvgStoNFastWide); // computes fast attack, slow release
+
+	// Preliminary calibration...future a function of bandwidth and BusyDet.
+   
+	switch (ARQBandwidth)
+	{
+	case B200MAX:
+	case B200FORCED:
+		if (dblAvgStoNNarrow > 1.5 * BusyDet|| dblAvgStoNWide > 2.5 * BusyDet)
+			blnBusy = True;
+		break;
+
+	case B500MAX:
+	case B500FORCED:
+		if (dblAvgStoNNarrow > 1.5 * BusyDet || dblAvgStoNWide > 2.5 * BusyDet)
+			blnBusy = True;
+		break;
+
+	case B1000MAX:
+	case B1000FORCED:
+
+		if (dblAvgStoNNarrow > 1.4 * BusyDet || dblAvgStoNWide > 2 * BusyDet)
+			blnBusy = True;
+		break;
+
+	case B2000MAX:
+	case B2000FORCED:
+		if (dblAvgStoNNarrow > 1.4 * BusyDet || dblAvgStoNWide > 2 * BusyDet)
+			blnBusy = True;
+	}
+
+	if (blnBusy) // This used to skip over one call busy nuisance trips. Busy must be present at least 2 consecutive times to be reported
+	{
+		intBusyOnCnt += 1;
+		intBusyOffCnt = 0;
+        if (intBusyOnCnt > 1)
+			blnBusy = True;
+		else if (!blnBusy)
+		{
+			intBusyOffCnt += 1;
+			intBusyOnCnt = 0;
+			if (intBusyOffCnt > 3)
+				blnBusy = False;
+		}
+	}
+	if (blnLastBusy == False && blnBusy)
+	{
+		int x = round(dblAvgStoNNarrow);	// odd, but PI doesnt print floats properly 
+		int y = round(dblAvgStoNWide);
+		
+		blnLastBusy = True;
+		LastBusyOn = Now;
+#ifdef __ARM_ARCH
+		WriteDebugLog(LOGDEBUG, "[BusyDetect2: BUSY ON  StoN Narrow = %d StoN Wide %d", x, y);
+#else
+		WriteDebugLog(LOGDEBUG, "[BusyDetect2: BUSY ON  StoN Narrow = %f StoN Wide %f", dblAvgStoNNarrow, dblAvgStoNWide);
+#endif
+	}
+	else if (blnLastBusy == True && !blnBusy)
+	{
+		int x = round(dblAvgStoNNarrow);	// odd, but PI doesnt print floats properly 
+		int y = round(dblAvgStoNWide);
+
+		blnLastBusy = False;
+		LastBusyOff = Now;
+#ifdef __ARM_ARCH
+		WriteDebugLog(LOGDEBUG, "[BusyDetect2: BUSY OFF StoN Narrow = %d StoN Wide %d", x, y);
+#else
+		WriteDebugLog(LOGDEBUG, "[BusyDetect2: BUSY OFF StoN Narrow = %f StoN Wide %f", dblAvgStoNNarrow, dblAvgStoNWide);
+#endif
+	}
+
+	return blnLastBusy;
+}
+
+
+*/
+
+
+
+
+BOOL BusyDetect3(float * dblMag, int intStart, int intStop)        // this only called while searching for leader ...once leader detected, no longer called.
+{
+	// each bin is about 12000/1024 or 11.72 Hz
+	// this only called while searching for leader ...once leader detected, no longer called.
+	// First sort signals and look at highes signals:baseline ratio..
+
+	float dblAVGSignalPerBinNarrow, dblAVGSignalPerBinWide, dblAVGBaselineNarrow, dblAVGBaselineWide;
+	float dblSlowAlpha = 0.2f;
+	float dblAvgStoNNarrow = 0, dblAvgStoNWide = 0;
+	int intNarrow = 8;  // 8 x 11.72 Hz about 94 z
+	int intWide = ((intStop - intStart) * 2) / 3; //* 0.66);
+	int blnBusy = FALSE;
+	int  BusyDet4th = BusyDet * BusyDet * BusyDet * BusyDet;
+
+
+	// First sort signals and look at highest signals:baseline ratio..
+	// First narrow band (~94Hz)
+
+	SortSignals2(dblMag, intStart, intStop, intNarrow, &dblAVGSignalPerBinNarrow, &dblAVGBaselineNarrow);
+
+	if (intLastStart == intStart && intLastStop == intStop)
+		dblAvgStoNNarrow = (1 - dblSlowAlpha) * dblAvgStoNNarrow + dblSlowAlpha * dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+	else
+	{
+		// This initializes the Narrow average after a bandwidth change
+
+		dblAvgStoNNarrow = dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+ 		intLastStart = intStart;
+		intLastStop = intStop;
+	}
+	
+	// Wide band (66% of current bandwidth)
+	
+	SortSignals2(dblMag, intStart, intStop, intWide, &dblAVGSignalPerBinWide, &dblAVGBaselineWide);
+
+	if (intLastStart == intStart && intLastStop == intStop)
+		dblAvgStoNWide = (1 - dblSlowAlpha) * dblAvgStoNWide + dblSlowAlpha * dblAVGSignalPerBinWide / dblAVGBaselineWide;
+	else
+	{
+		// This initializes the Wide average after a bandwidth change
+		
+		dblAvgStoNWide = dblAVGSignalPerBinWide / dblAVGBaselineWide;
+		intLastStart = intStart;
+		intLastStop = intStop;
+	}
+
+	// Preliminary calibration...future a function of bandwidth and BusyDet.
+   
+	switch (ARQBandwidth)
+	{
+	case XB200:
+		blnBusy = (dblAvgStoNNarrow > (3 + 0.008 * BusyDet4th)) || (dblAvgStoNWide > (5 + 0.02 * BusyDet4th));
+		break;
+
+	case XB500:
+		blnBusy = (dblAvgStoNNarrow > (3 + 0.008 * BusyDet4th) )|| (dblAvgStoNWide > (5 + 0.02 * BusyDet4th));
+		break;
+
+	case XB2500:
+		blnBusy = (dblAvgStoNNarrow > (3 + 0.008 * BusyDet4th)) || (dblAvgStoNWide > (5 + 0.016 * BusyDet4th));
+ 	}
+
+	if (BusyDet == 0)
+		blnBusy = FALSE;		// 0 Disables check ?? Is this the best place to do this?
+
+//	WriteDebugLog(LOGDEBUG, "Busy %d Wide %f Narrow %f", blnBusy, dblAvgStoNWide, dblAvgStoNNarrow); 
+
+	if (blnBusy)
+	{
+		// This requires multiple adjacent busy conditions to skip over one nuisance Busy trips. 
+		// Busy must be present at least 3 consecutive times ( ~250 ms) to be reported
+
+		intBusyOnCnt += 1;
+		intBusyOffCnt = 0;
+        if (intBusyOnCnt > 3)
+			dttLastTrip = Now;
+	}
+	else
+	{
+		intBusyOffCnt += 1;
+		intBusyOnCnt = 0;
+	}
+
+	if (blnLastBusy == False && intBusyOnCnt >= 3)
+	{
+		dttPriorLastBusyTrip = dttLastBusyTrip;  // save old dttLastBusyTrip for use in BUSYBLOCKING function
+		dttLastBusyTrip = Now;
+		blnLastBusy = True;
+	}
+	else
+	{
+		if (blnLastBusy && (Now - dttLastTrip) > intHoldMs && intBusyOffCnt >= 3)
+		{
+			dttLastBusyClear = Now;
+			blnLastBusy = False;
+		}
+	}
+	return blnLastBusy;
+}
+
+VOID SortSignals(float * dblMag, int intStartBin, int intStopBin, int intNumBins, float *  dblAVGSignalPerBin, float *  dblAVGBaselinePerBin)
+{
+	// puts the top intNumber of bins between intStartBin and intStopBin into dblAVGSignalPerBin, the rest into dblAvgBaselinePerBin
+    // for decent accuracy intNumBins should be < 75% of intStopBin-intStartBin)
+
+	float dblAVGSignal[200] = {0};//intNumBins
+	float dblAVGBaseline[200] = {0};//intStopBin - intStartBin - intNumBins
+
+	float dblSigSum = 0;
+	float dblTotalSum = 0;
+	int intSigPtr = 0;
+	int intBasePtr = 0;
+	int i, j, k;
+
+	for (i = 0; i <  intNumBins; i++)
+	{
+		for (j = intStartBin; j <= intStopBin; j++)
+		{
+			if (i == 0)
+			{
+				dblTotalSum += dblMag[j];
+				if (dblMag[j] > dblAVGSignal[i])
+					dblAVGSignal[i] = dblMag[j];
+			}
+			else
+			{
+				if (dblMag[j] > dblAVGSignal[i] && dblMag[j] < dblAVGSignal[i - 1])
+					dblAVGSignal[i] = dblMag[j];
+			}
+		}
+	}
+	
+	for(k = 0; k < intNumBins; k++)
+	{
+		dblSigSum += dblAVGSignal[k];
+	}
+	*dblAVGSignalPerBin = dblSigSum / intNumBins;
+	*dblAVGBaselinePerBin = (dblTotalSum - dblSigSum) / (intStopBin - intStartBin - intNumBins + 1);
+}
+
+ BOOL compare(const void *p1, const void *p2)
+{
+    float x = *(const float *)p1;
+    float y = *(const float *)p2;
+
+    if (x < y)
+        return -1;  // Return -1 if you want ascending, 1 if you want descending order. 
+    else if (x > y)
+        return 1;   // Return 1 if you want ascending, -1 if you want descending order. 
+
+    return 0;
+}
+
+VOID SortSignals2(float * dblMag, int intStartBin, int intStopBin, int intNumBins, float *  dblAVGSignalPerBin, float *  dblAVGBaselinePerBin)
+{
+	// puts the top intNumber of bins between intStartBin and intStopBin into dblAVGSignalPerBin, the rest into dblAvgBaselinePerBin
+    // for decent accuracy intNumBins should be < 75% of intStopBin-intStartBin)
+
+	// This version uses a native sort function which is much faster and reduces CPU loading significantly on wide bandwidths. 
+  
+	float dblSort[202]; 
+	float dblSum1 = 0, dblSum2 = 0;
+	int numtoSort = (intStopBin - intStartBin) + 1, i;
+	
+	memcpy(dblSort, &dblMag[intStartBin], numtoSort * sizeof(float));
+
+	qsort((void *)dblSort, numtoSort, sizeof(float), compare);
+
+	for (i = numtoSort -1; i >= 0; i--)
+	{
+		if (i >= (numtoSort - intNumBins))
+			dblSum1 += dblSort[i];
+		else
+			dblSum2 += dblSort[i];
+	}
+
+	*dblAVGSignalPerBin = dblSum1 / intNumBins;
+	*dblAVGBaselinePerBin = dblSum2 / (intStopBin - intStartBin - intNumBins - 1);
+}
+
+ 
\ No newline at end of file
diff --git a/Calibrate.c b/Calibrate.c
new file mode 100644
index 0000000..8542911
--- /dev/null
+++ b/Calibrate.c
@@ -0,0 +1,159 @@
+
+#include "UZ7HOStuff.h"
+
+// if in Satellite Mode look for a Tuning signal
+
+// As a first try, use ardop leader pattern then single tone
+
+static short rawSamples[2400];	// Get Frame Type need 2400 and we may add 1200
+static int rawSamplesLength = 0;
+static int maxrawSamplesLength;
+static float dblOffsetHz = 0;;
+static int blnLeaderFound = 0;
+
+enum _ReceiveState		// used for initial receive testing...later put in correct protocol states
+{
+	SearchingForLeader,
+	AcquireSymbolSync,
+	AcquireFrameSync,
+	AcquireFrameType,
+	DecodeFrameType,
+	AcquireFrame,
+	DecodeFramestate
+};
+
+static enum _ReceiveState State;
+
+
+void LookForCalPattern(short * Samples, int nSamples);
+
+void doTuning(short * Samples, int nSamples)
+{
+	short ardopbuff[2][1200];
+	int i, i1 = 0;
+
+	if (UsingBothChannels)
+	{
+		for (i = 0; i < rx_bufsize; i++)
+		{
+			ardopbuff[0][i] = Samples[i1];
+			i1++;
+			ardopbuff[1][i] = Samples[i1];
+			i1++;
+		}
+	}
+	else if (UsingRight)
+	{
+		// Extract just right
+
+		i1 = 1;
+
+		for (i = 0; i < rx_bufsize; i++)
+		{
+			ardopbuff[1][i] = Samples[i1];
+			i1 += 2;
+		}
+	}
+	else
+	{
+		// Extract just left
+
+		for (i = 0; i < rx_bufsize; i++)
+		{
+			ardopbuff[0][i] = Samples[i1];
+			i1 += 2;
+		}
+	}
+
+	if (UsingLeft)
+	{
+		LookForCalPattern(&ardopbuff[0][0], 0);
+	}
+
+	if (UsingRight)
+	{
+		LookForCalPattern(&ardopbuff[0][0], 1);
+	}
+
+}
+
+
+
+
+void LookForCalPattern(short * Samples, int nSamples)
+{
+	BOOL blnFrameDecodedOK = FALSE;
+
+	//	LookforUZ7HOLeader(Samples, nSamples);
+
+	//	printtick("Start afsk");
+	//	DemodAFSK(Samples, nSamples);
+	//	printtick("End afsk");
+
+	//	return;
+
+	// Append new data to anything in rawSamples
+
+	memcpy(&rawSamples[rawSamplesLength], Samples, nSamples * 2);
+	rawSamplesLength += nSamples;
+
+	if (rawSamplesLength > maxrawSamplesLength)
+		maxrawSamplesLength = rawSamplesLength;
+
+	if (rawSamplesLength >= 2400)
+		Debugprintf("Corrupt rawSamplesLength %d", rawSamplesLength);
+
+
+	nSamples = rawSamplesLength;
+	Samples = rawSamples;
+
+	rawSamplesLength = 0;
+
+	//	printtick("Start Busy");
+	if (nSamples >= 1024)
+		UpdateBusyDetector(Samples);
+	//	printtick("Done Busy");
+
+		// it seems that searchforleader runs on unmixed and unfilered samples
+
+		// Searching for leader
+
+	if (State == SearchingForLeader)
+	{
+		// Search for leader as long as 960 samples (8  symbols) available
+
+//		printtick("Start Leader Search");
+
+		while (State == SearchingForLeader && nSamples >= 1200)
+		{
+			int intSN;
+
+			blnLeaderFound = SearchFor2ToneLeader4(Samples, nSamples, &dblOffsetHz, &intSN);
+			//			blnLeaderFound = SearchFor2ToneLeader2(Samples, nSamples, &dblOffsetHz, &intSN);
+
+			if (blnLeaderFound)
+			{
+				//				Debugprintf("Got Leader");
+
+				nSamples -= 480;
+				Samples += 480;		// !!!! needs attention !!!
+			}
+			else
+			{
+				nSamples -= 240;
+				Samples += 240;		// !!!! needs attention !!!
+			}
+		}
+		if (State == SearchingForLeader)
+		{
+			// Save unused samples
+
+			memmove(rawSamples, Samples, nSamples * 2);
+			rawSamplesLength = nSamples;
+
+			//			printtick("End Leader Search");
+
+			return;
+		}
+	}
+}
diff --git a/Config.cpp b/Config.cpp
new file mode 100644
index 0000000..2ee1ce6
--- /dev/null
+++ b/Config.cpp
@@ -0,0 +1,439 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include <QSettings>
+
+#include "UZ7HOStuff.h"
+
+extern "C" void get_exclude_list(char * line, TStringList * list);
+extern "C" void get_exclude_frm(char * line, TStringList * list);
+
+extern "C" int SoundMode; 
+extern "C" int RX_SR;
+extern "C" int TX_SR;
+extern "C" int multiCore;
+
+extern "C" word MEMRecovery[5];
+
+extern int MintoTray;
+extern "C" int UDPClientPort;
+extern "C" int UDPServerPort;
+extern "C" int TXPort;
+
+extern char UDPHost[64];
+
+extern char CWIDCall[128];
+extern int CWIDInterval;
+extern int CWIDLeft;
+extern int CWIDRight;
+extern int CWIDType;	
+
+extern "C" int RSID_SABM[4];
+extern "C" int RSID_UI[4];
+extern "C" int RSID_SetModem[4];
+
+
+QSettings* settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+
+// This makes geting settings for more channels easier
+
+char Prefix[16] = "AX25_A";
+
+void GetPortSettings(int Chan);
+
+QVariant getAX25Param(const char * key, QVariant Default)
+{
+	char fullKey[64];
+
+	sprintf(fullKey, "%s/%s", Prefix, key);
+	return settings->value(fullKey, Default);
+}
+
+void getAX25Params(int chan)
+{
+	Prefix[5] = chan + 'A';
+	GetPortSettings(chan);
+}
+
+
+void GetPortSettings(int Chan)
+{
+	tx_hitoneraisedb[Chan] = getAX25Param("HiToneRaise", 0).toInt();
+
+	maxframe[Chan] = getAX25Param("Maxframe", 3).toInt();
+	fracks[Chan] = getAX25Param("Retries", 15).toInt();
+	frack_time[Chan] = getAX25Param("FrackTime", 5).toInt();
+
+	idletime[Chan] = getAX25Param("IdleTime", 180).toInt();
+	slottime[Chan] = getAX25Param("SlotTime", 100).toInt();
+	persist[Chan] = getAX25Param("Persist", 128).toInt();
+	resptime[Chan] = getAX25Param("RespTime", 1500).toInt();
+	TXFrmMode[Chan] = getAX25Param("TXFrmMode", 1).toInt();
+	max_frame_collector[Chan] = getAX25Param("FrameCollector", 6).toInt();
+	//exclude_callsigns[Chan]= getAX25Param("ExcludeCallsigns/");
+	//exclude_APRS_frm[Chan]= getAX25Param("ExcludeAPRSFrmType/");
+	KISS_opt[Chan] = getAX25Param("KISSOptimization", false).toInt();;
+	dyn_frack[Chan] = getAX25Param("DynamicFrack", false).toInt();;
+	recovery[Chan] = getAX25Param("BitRecovery", 0).toInt();
+	NonAX25[Chan] = getAX25Param("NonAX25Frm", false).toInt();;
+	MEMRecovery[Chan]= getAX25Param("MEMRecovery", 200).toInt();
+	IPOLL[Chan] = getAX25Param("IPOLL", 80).toInt();
+
+	strcpy(MyDigiCall[Chan], getAX25Param("MyDigiCall", "").toString().toUtf8());
+	fx25_mode[Chan] = getAX25Param("FX25", FX25_MODE_RX).toInt();
+	il2p_mode[Chan] = getAX25Param("IL2P", IL2P_MODE_NONE).toInt();
+	RSID_UI[Chan] = getAX25Param("RSID_UI", 0).toInt();
+	RSID_SABM[Chan] = getAX25Param("RSID_SABM", 0).toInt();
+	RSID_SetModem[Chan] = getAX25Param("RSID_SetModem", 0).toInt();
+}
+
+void getSettings()
+{
+	int snd_ch;
+
+	QSettings* settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+	settings->sync();
+
+	SoundMode = settings->value("Init/SoundMode", 0).toInt();
+	UDPClientPort = settings->value("Init/UDPClientPort", 8888).toInt();
+	UDPServerPort = settings->value("Init/UDPServerPort", 8884).toInt();
+	TXPort = settings->value("Init/TXPort", UDPServerPort).toInt();
+
+	strcpy(UDPHost, settings->value("Init/UDPHost", "192.168.1.255").toString().toUtf8());
+	UDPServ = settings->value("Init/UDPServer", FALSE).toBool();
+
+	RX_SR = settings->value("Init/RXSampleRate", 12000).toInt();
+	TX_SR = settings->value("Init/TXSampleRate", 12000).toInt();
+
+	strcpy(CaptureDevice, settings->value("Init/SndRXDeviceName", "hw:1,0").toString().toUtf8());
+	strcpy(PlaybackDevice, settings->value("Init/SndTXDeviceName", "hw:1,0").toString().toUtf8());
+
+	raduga = settings->value("Init/DispMode", DISP_RGB).toInt();
+
+	strcpy(PTTPort, settings->value("Init/PTT", "").toString().toUtf8());
+	PTTMode = settings->value("Init/PTTMode", 19200).toInt();
+	PTTBAUD = settings->value("Init/PTTBAUD", 19200).toInt();
+
+	strcpy(PTTOnString, settings->value("Init/PTTOnString", "").toString().toUtf8());
+	strcpy(PTTOffString, settings->value("Init/PTTOffString", "").toString().toUtf8());
+
+	pttGPIOPin = settings->value("Init/pttGPIOPin", 17).toInt();
+	pttGPIOPinR = settings->value("Init/pttGPIOPinR", 17).toInt();
+
+#ifdef WIN32
+	strcpy(CM108Addr, settings->value("Init/CM108Addr", "0xD8C:0x08").toString().toUtf8());
+#else
+	strcpy(CM108Addr, settings->value("Init/CM108Addr", "/dev/hidraw0").toString().toUtf8());
+#endif
+
+	HamLibPort = settings->value("Init/HamLibPort", 4532).toInt();
+	strcpy(HamLibHost, settings->value("Init/HamLibHost", "127.0.0.1").toString().toUtf8());
+
+	DualPTT = settings->value("Init/DualPTT", 1).toInt();
+	TX_rotate = settings->value("Init/TXRotate", 0).toInt();
+
+	multiCore = settings->value("Init/multiCore", 0).toInt();
+	MintoTray = settings->value("Init/MinimizetoTray", 1).toInt();
+
+	rx_freq[0] = settings->value("Modem/RXFreq1", 1700).toInt();
+	rx_freq[1] = settings->value("Modem/RXFreq2", 1700).toInt();
+	rx_freq[2] = settings->value("Modem/RXFreq3", 1700).toInt();
+	rx_freq[3] = settings->value("Modem/RXFreq4", 1700).toInt();
+
+	rcvr_offset[0] = settings->value("Modem/RcvrShift1", 30).toInt();
+	rcvr_offset[1] = settings->value("Modem/RcvrShift2", 30).toInt();
+	rcvr_offset[2] = settings->value("Modem/RcvrShift3", 30).toInt();
+	rcvr_offset[3] = settings->value("Modem/RcvrShift4", 30).toInt();
+	speed[0] = settings->value("Modem/ModemType1", SPEED_1200).toInt();
+	speed[1] = settings->value("Modem/ModemType2", SPEED_1200).toInt();
+	speed[2] = settings->value("Modem/ModemType3", SPEED_1200).toInt();
+	speed[3] = settings->value("Modem/ModemType4", SPEED_1200).toInt();
+
+	RCVR[0] = settings->value("Modem/NRRcvrPairs1", 0).toInt();;
+	RCVR[1] = settings->value("Modem/NRRcvrPairs2", 0).toInt();;
+	RCVR[2] = settings->value("Modem/NRRcvrPairs3", 0).toInt();;
+	RCVR[3] = settings->value("Modem/NRRcvrPairs4", 0).toInt();;
+
+	soundChannel[0] = settings->value("Modem/soundChannel1", 1).toInt();
+	soundChannel[1] = settings->value("Modem/soundChannel2", 0).toInt();
+	soundChannel[2] = settings->value("Modem/soundChannel3", 0).toInt();
+	soundChannel[3] = settings->value("Modem/soundChannel4", 0).toInt();
+
+	SCO = settings->value("Init/SCO", 0).toInt();
+
+	dcd_threshold = settings->value("Modem/DCDThreshold", 40).toInt();
+	rxOffset = settings->value("Modem/rxOffset", 0).toInt();
+
+	AGWServ = settings->value("AGWHost/Server", TRUE).toBool();
+	AGWPort = settings->value("AGWHost/Port", 8000).toInt();
+	KISSServ = settings->value("KISS/Server", FALSE).toBool();
+	KISSPort = settings->value("KISS/Port", 8105).toInt();
+
+	RX_Samplerate = RX_SR + RX_SR * 0.000001*RX_PPM;
+	TX_Samplerate = TX_SR + TX_SR * 0.000001*TX_PPM;
+
+	emph_all[0] = settings->value("Modem/PreEmphasisAll1", FALSE).toBool();
+	emph_all[1] = settings->value("Modem/PreEmphasisAll2", FALSE).toBool();
+	emph_all[2] = settings->value("Modem/PreEmphasisAll3", FALSE).toBool();
+	emph_all[3] = settings->value("Modem/PreEmphasisAll4", FALSE).toBool();
+
+	emph_db[0] = settings->value("Modem/PreEmphasisDB1", 0).toInt();
+	emph_db[1] = settings->value("Modem/PreEmphasisDB2", 0).toInt();
+	emph_db[2] = settings->value("Modem/PreEmphasisDB3", 0).toInt();
+	emph_db[3] = settings->value("Modem/PreEmphasisDB4", 0).toInt();
+
+	Firstwaterfall = settings->value("Window/Waterfall1", TRUE).toInt();
+	Secondwaterfall = settings->value("Window/Waterfall2", TRUE).toInt();
+
+	txdelay[0] = settings->value("Modem/TxDelay1", 250).toInt();
+	txdelay[1] = settings->value("Modem/TxDelay2", 250).toInt();
+	txdelay[2] = settings->value("Modem/TxDelay3", 250).toInt();
+	txdelay[3] = settings->value("Modem/TxDelay4", 250).toInt();
+
+	strcpy(CWIDCall, settings->value("Modem/CWIDCall", "").toString().toUtf8().toUpper());
+	CWIDInterval = settings->value("Modem/CWIDInterval", 0).toInt();
+	CWIDLeft = settings->value("Modem/CWIDLeft", 0).toInt();
+	CWIDRight = settings->value("Modem/CWIDRight", 0).toInt();
+	CWIDType = settings->value("Modem/CWIDType", 1).toInt();			// on/off
+
+
+	getAX25Params(0);
+	getAX25Params(1);
+	getAX25Params(2);
+	getAX25Params(3);
+
+	// Validate and process settings
+
+	UsingLeft = 0;
+	UsingRight = 0;
+	UsingBothChannels = 0;
+
+	for (int i = 0; i < 4; i++)
+	{
+		if (soundChannel[i] == LEFT)
+		{
+			UsingLeft = 1;
+			modemtoSoundLR[i] = 0;
+		}
+		else if (soundChannel[i] == RIGHT)
+		{
+			UsingRight = 1;
+			modemtoSoundLR[i] = 1;
+		}
+	}
+
+	if (UsingLeft && UsingRight)
+		UsingBothChannels = 1;
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		tx_hitoneraise[snd_ch] = powf(10.0f, -abs(tx_hitoneraisedb[snd_ch]) / 20.0f);
+
+		if (IPOLL[snd_ch] < 0)
+			IPOLL[snd_ch] = 0;
+		else if (IPOLL[snd_ch] > 65535)
+			IPOLL[snd_ch] = 65535;
+
+		if (MEMRecovery[snd_ch] < 1)
+			MEMRecovery[snd_ch] = 1;
+
+		//			if (MEMRecovery[snd_ch]> 65535)
+		//				MEMRecovery[snd_ch]= 65535;
+
+				/*
+				if resptime[snd_ch] < 0 then resptime[snd_ch]= 0;
+					if resptime[snd_ch] > 65535 then resptime[snd_ch]= 65535;
+					if persist[snd_ch] > 255 then persist[snd_ch]= 255;
+					if persist[snd_ch] < 32 then persist[snd_ch]= 32;
+					if fracks[snd_ch] < 1 then fracks[snd_ch]= 1;
+					if frack_time[snd_ch] < 1 then frack_time[snd_ch]= 1;
+					if idletime[snd_ch] < frack_time[snd_ch] then idletime[snd_ch]= 180;
+				*/
+
+		if (emph_db[snd_ch] < 0 || emph_db[snd_ch] > nr_emph)
+			emph_db[snd_ch] = 0;
+
+		if (max_frame_collector[snd_ch] > 6) max_frame_collector[snd_ch] = 6;
+		if (maxframe[snd_ch] == 0 || maxframe[snd_ch] > 7) maxframe[snd_ch] = 3;
+		if (qpsk_set[snd_ch].mode > 1)  qpsk_set[snd_ch].mode = 0;
+
+	}
+
+	delete(settings);
+}
+
+void SavePortSettings(int Chan);
+
+void saveAX25Param(const char * key, QVariant Value)
+{
+	char fullKey[64];
+
+	sprintf(fullKey, "%s/%s", Prefix, key);
+
+	settings->setValue(fullKey, Value);
+}
+
+void saveAX25Params(int chan)
+{
+	Prefix[5] = chan + 'A';
+	SavePortSettings(chan);
+}
+
+void SavePortSettings(int Chan)
+{
+	saveAX25Param("Retries", fracks[Chan]);
+	saveAX25Param("HiToneRaise", tx_hitoneraisedb[Chan]);
+	saveAX25Param("Maxframe",maxframe[Chan]);
+	saveAX25Param("Retries", fracks[Chan]);
+	saveAX25Param("FrackTime", frack_time[Chan]);
+	saveAX25Param("IdleTime", idletime[Chan]);
+	saveAX25Param("SlotTime", slottime[Chan]);
+	saveAX25Param("Persist", persist[Chan]);
+	saveAX25Param("RespTime", resptime[Chan]);
+	saveAX25Param("TXFrmMode", TXFrmMode[Chan]);
+	saveAX25Param("FrameCollector", max_frame_collector[Chan]);
+	saveAX25Param("ExcludeCallsigns", exclude_callsigns[Chan]);
+	saveAX25Param("ExcludeAPRSFrmType", exclude_APRS_frm[Chan]);
+	saveAX25Param("KISSOptimization", KISS_opt[Chan]);
+	saveAX25Param("DynamicFrack", dyn_frack[Chan]);
+	saveAX25Param("BitRecovery", recovery[Chan]);
+	saveAX25Param("NonAX25Frm", NonAX25[Chan]);
+	saveAX25Param("MEMRecovery", MEMRecovery[Chan]);
+	saveAX25Param("IPOLL", IPOLL[Chan]);
+	saveAX25Param("MyDigiCall", MyDigiCall[Chan]);
+	saveAX25Param("FX25", fx25_mode[Chan]);
+	saveAX25Param("IL2P", il2p_mode[Chan]);
+	saveAX25Param("RSID_UI", RSID_UI[Chan]);
+	saveAX25Param("RSID_SABM", RSID_SABM[Chan]);
+	saveAX25Param("RSID_SetModem", RSID_SetModem[Chan]);
+}
+
+void saveSettings()
+{
+	QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+
+	settings->setValue("Init/SoundMode", SoundMode);
+	settings->setValue("Init/UDPClientPort", UDPClientPort);
+	settings->setValue("Init/UDPServerPort", UDPServerPort);
+	settings->setValue("Init/TXPort", TXPort);
+
+	settings->setValue("Init/UDPServer", UDPServ);
+	settings->setValue("Init/UDPHost", UDPHost);
+
+
+	settings->setValue("Init/TXSampleRate", TX_SR);
+	settings->setValue("Init/RXSampleRate", RX_SR);
+
+	settings->setValue("Init/SndRXDeviceName", CaptureDevice);
+	settings->setValue("Init/SndTXDeviceName", PlaybackDevice);
+
+	settings->setValue("Init/SCO", SCO);
+	settings->setValue("Init/DualPTT", DualPTT);
+	settings->setValue("Init/TXRotate", TX_rotate);
+
+	settings->setValue("Init/DispMode", raduga);
+
+	settings->setValue("Init/PTT", PTTPort);
+	settings->setValue("Init/PTTBAUD", PTTBAUD);
+	settings->setValue("Init/PTTMode", PTTMode);
+
+	settings->setValue("Init/PTTOffString", PTTOffString);
+	settings->setValue("Init/PTTOnString", PTTOnString);
+
+	settings->setValue("Init/pttGPIOPin", pttGPIOPin);
+	settings->setValue("Init/pttGPIOPinR", pttGPIOPinR);
+
+	settings->setValue("Init/CM108Addr", CM108Addr);
+	settings->setValue("Init/HamLibPort", HamLibPort);
+	settings->setValue("Init/HamLibHost", HamLibHost);
+	settings->setValue("Init/MinimizetoTray", MintoTray);
+
+	settings->setValue("Init/multiCore", multiCore);
+
+	// Don't save freq on close as it could be offset by multiple decoders
+
+	settings->setValue("Modem/NRRcvrPairs1", RCVR[0]);
+	settings->setValue("Modem/NRRcvrPairs2", RCVR[1]);
+	settings->setValue("Modem/NRRcvrPairs3", RCVR[2]);
+	settings->setValue("Modem/NRRcvrPairs4", RCVR[3]);
+
+	settings->setValue("Modem/RcvrShift1", rcvr_offset[0]);
+	settings->setValue("Modem/RcvrShift2", rcvr_offset[1]);
+	settings->setValue("Modem/RcvrShift3", rcvr_offset[2]);
+	settings->setValue("Modem/RcvrShift4", rcvr_offset[3]);
+
+	settings->setValue("Modem/ModemType1", speed[0]);
+	settings->setValue("Modem/ModemType2", speed[1]);
+	settings->setValue("Modem/ModemType3", speed[2]);
+	settings->setValue("Modem/ModemType4", speed[3]);
+
+	settings->setValue("Modem/soundChannel1", soundChannel[0]);
+	settings->setValue("Modem/soundChannel2", soundChannel[1]);
+	settings->setValue("Modem/soundChannel3", soundChannel[2]);
+	settings->setValue("Modem/soundChannel4", soundChannel[3]);
+
+	settings->setValue("Modem/DCDThreshold", dcd_threshold);
+	settings->setValue("Modem/rxOffset", rxOffset);
+
+	settings->setValue("AGWHost/Server", AGWServ);
+	settings->setValue("AGWHost/Port", AGWPort);
+	settings->setValue("KISS/Server", KISSServ);
+	settings->setValue("KISS/Port", KISSPort);
+
+	settings->setValue("Modem/PreEmphasisAll1", emph_all[0]);
+	settings->setValue("Modem/PreEmphasisAll2", emph_all[1]);
+	settings->setValue("Modem/PreEmphasisAll3", emph_all[2]);
+	settings->setValue("Modem/PreEmphasisAll4", emph_all[3]);
+
+	settings->setValue("Modem/PreEmphasisDB1", emph_db[0]);
+	settings->setValue("Modem/PreEmphasisDB2", emph_db[1]);
+	settings->setValue("Modem/PreEmphasisDB3", emph_db[2]);
+	settings->setValue("Modem/PreEmphasisDB4", emph_db[3]);
+
+	settings->setValue("Window/Waterfall1", Firstwaterfall);
+	settings->setValue("Window/Waterfall2", Secondwaterfall);
+
+	settings->setValue("Modem/TxDelay1", txdelay[0]);
+	settings->setValue("Modem/TxDelay2", txdelay[1]);
+	settings->setValue("Modem/TxDelay3", txdelay[2]);
+	settings->setValue("Modem/TxDelay4", txdelay[3]);
+
+	settings->setValue("Modem/TxTail1", txtail[0]);
+	settings->setValue("Modem/TxTail2", txtail[1]);
+	settings->setValue("Modem/TxTail3", txtail[2]);
+	settings->setValue("Modem/TxTail4", txtail[3]);
+
+	settings->setValue("Modem/CWIDCall", CWIDCall);
+	settings->setValue("Modem/CWIDInterval", CWIDInterval);
+	settings->setValue("Modem/CWIDLeft", CWIDLeft);
+	settings->setValue("Modem/CWIDRight", CWIDRight);
+	settings->setValue("Modem/CWIDType", CWIDType);			
+
+	saveAX25Params(0);
+	saveAX25Params(1);
+	saveAX25Params(2);
+	saveAX25Params(3);
+
+	settings->sync();
+
+	delete(settings);
+}
diff --git a/Config.cpp.bak b/Config.cpp.bak
new file mode 100644
index 0000000..94e77e7
--- /dev/null
+++ b/Config.cpp.bak
@@ -0,0 +1,426 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include <QSettings>
+
+#include "UZ7HOStuff.h"
+
+extern "C" void get_exclude_list(char * line, TStringList * list);
+extern "C" void get_exclude_frm(char * line, TStringList * list);
+
+extern "C" int SoundMode; 
+extern "C" int RX_SR;
+extern "C" int TX_SR;
+extern "C" int multiCore;
+
+extern "C" word MEMRecovery[5];
+
+extern int MintoTray;
+extern "C" int UDPClientPort;
+extern "C" int UDPServerPort;
+extern "C" int TXPort;
+
+extern char UDPHost[64];
+
+extern char CWIDCall[128];
+extern int CWIDInterval;
+extern int CWIDLeft;
+extern int CWIDRight;
+extern int CWIDType;	
+
+// This makes geting settings for more channels easier
+
+char Prefix[16] = "AX25_A";
+
+void GetPortSettings(int Chan);
+
+QVariant getAX25Param(const char * key, QVariant Default)
+{
+	char fullKey[64];
+
+	sprintf(fullKey, "%s/%s", Prefix, key);
+	return settings->value(fullKey, Default);
+}
+
+void getAX25Params(int chan)
+{
+	Prefix[5] = chan + 'A';
+	GetPortSettings(chan);
+}
+
+
+void GetPortSettings(int Chan)
+{
+	tx_hitoneraisedb[Chan] = getAX25Param("HiToneRaise", 0).toInt();
+
+	maxframe[Chan] = getAX25Param("Maxframe", 3).toInt();
+	fracks[Chan] = getAX25Param("Retries", 15).toInt();
+	frack_time[Chan] = getAX25Param("FrackTime", 5).toInt();
+
+	idletime[Chan] = getAX25Param("IdleTime", 180).toInt();
+	slottime[Chan] = getAX25Param("SlotTime", 100).toInt();
+	persist[Chan] = getAX25Param("Persist", 128).toInt();
+	resptime[Chan] = getAX25Param("RespTime", 1500).toInt();
+	TXFrmMode[Chan] = getAX25Param("TXFrmMode", 1).toInt();
+	max_frame_collector[Chan] = getAX25Param("FrameCollector", 6).toInt();
+	//exclude_callsigns[Chan]= getAX25Param("ExcludeCallsigns/");
+	//exclude_APRS_frm[Chan]= getAX25Param("ExcludeAPRSFrmType/");
+	KISS_opt[Chan] = getAX25Param("KISSOptimization", false).toInt();;
+	dyn_frack[Chan] = getAX25Param("DynamicFrack", false).toInt();;
+	recovery[Chan] = getAX25Param("BitRecovery", 0).toInt();
+	NonAX25[Chan] = getAX25Param("NonAX25Frm", false).toInt();;
+	MEMRecovery[Chan]= getAX25Param("MEMRecovery", 200).toInt();
+	IPOLL[Chan] = getAX25Param("IPOLL", 80).toInt();
+
+	strcpy(MyDigiCall[Chan], getAX25Param("MyDigiCall", "").toString().toUtf8());
+	fx25_mode[Chan] = getAX25Param("FX25", FX25_MODE_RX).toInt();
+}
+
+void getSettings()
+{
+	int snd_ch;
+
+	QSettings* settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+	settings->sync();
+
+	SoundMode = settings->value("Init/SoundMode", 0).toInt();
+	UDPClientPort = settings->value("Init/UDPClientPort", 8888).toInt();
+	UDPServerPort = settings->value("Init/UDPServerPort", 8884).toInt();
+	TXPort = settings->value("Init/TXPort", UDPServerPort).toInt();
+
+	strcpy(UDPHost, settings->value("Init/UDPHost", "192.168.1.255").toString().toUtf8());
+	UDPServ = settings->value("Init/UDPServer", FALSE).toBool();
+
+	RX_SR = settings->value("Init/RXSampleRate", 12000).toInt();
+	TX_SR = settings->value("Init/TXSampleRate", 12000).toInt();
+
+	strcpy(CaptureDevice, settings->value("Init/SndRXDeviceName", "hw:1,0").toString().toUtf8());
+	strcpy(PlaybackDevice, settings->value("Init/SndTXDeviceName", "hw:1,0").toString().toUtf8());
+
+	raduga = settings->value("Init/DispMode", DISP_RGB).toInt();
+
+	strcpy(PTTPort, settings->value("Init/PTT", "").toString().toUtf8());
+	PTTMode = settings->value("Init/PTTMode", 19200).toInt();
+	PTTBAUD = settings->value("Init/PTTBAUD", 19200).toInt();
+
+	strcpy(PTTOnString, settings->value("Init/PTTOnString", "").toString().toUtf8());
+	strcpy(PTTOffString, settings->value("Init/PTTOffString", "").toString().toUtf8());
+
+	pttGPIOPin = settings->value("Init/pttGPIOPin", 17).toInt();
+	pttGPIOPinR = settings->value("Init/pttGPIOPinR", 17).toInt();
+
+#ifdef WIN32
+	strcpy(CM108Addr, settings->value("Init/CM108Addr", "0xD8C:0x08").toString().toUtf8());
+#else
+	strcpy(CM108Addr, settings->value("Init/CM108Addr", "/dev/hidraw0").toString().toUtf8());
+#endif
+
+	HamLibPort = settings->value("Init/HamLibPort", 4532).toInt();
+	strcpy(HamLibHost, settings->value("Init/HamLibHost", "127.0.0.1").toString().toUtf8());
+
+	DualPTT = settings->value("Init/DualPTT", 1).toInt();
+	TX_rotate = settings->value("Init/TXRotate", 0).toInt();
+
+	multiCore = settings->value("Init/multiCore", 0).toInt();
+	MintoTray = settings->value("Init/MinimizetoTray", 1).toInt();
+
+	rx_freq[0] = settings->value("Modem/RXFreq1", 1700).toInt();
+	rx_freq[1] = settings->value("Modem/RXFreq2", 1700).toInt();
+	rx_freq[2] = settings->value("Modem/RXFreq3", 1700).toInt();
+	rx_freq[3] = settings->value("Modem/RXFreq4", 1700).toInt();
+
+	rcvr_offset[0] = settings->value("Modem/RcvrShift1", 30).toInt();
+	rcvr_offset[1] = settings->value("Modem/RcvrShift2", 30).toInt();
+	rcvr_offset[2] = settings->value("Modem/RcvrShift3", 30).toInt();
+	rcvr_offset[3] = settings->value("Modem/RcvrShift4", 30).toInt();
+	speed[0] = settings->value("Modem/ModemType1", SPEED_1200).toInt();
+	speed[1] = settings->value("Modem/ModemType2", SPEED_1200).toInt();
+	speed[2] = settings->value("Modem/ModemType3", SPEED_1200).toInt();
+	speed[3] = settings->value("Modem/ModemType4", SPEED_1200).toInt();
+
+	RCVR[0] = settings->value("Modem/NRRcvrPairs1", 0).toInt();;
+	RCVR[1] = settings->value("Modem/NRRcvrPairs2", 0).toInt();;
+	RCVR[2] = settings->value("Modem/NRRcvrPairs3", 0).toInt();;
+	RCVR[3] = settings->value("Modem/NRRcvrPairs4", 0).toInt();;
+
+	soundChannel[0] = settings->value("Modem/soundChannel1", 1).toInt();
+	soundChannel[1] = settings->value("Modem/soundChannel2", 0).toInt();
+	soundChannel[2] = settings->value("Modem/soundChannel3", 0).toInt();
+	soundChannel[3] = settings->value("Modem/soundChannel4", 0).toInt();
+
+	SCO = settings->value("Init/SCO", 0).toInt();
+
+	dcd_threshold = settings->value("Modem/DCDThreshold", 40).toInt();
+	rxOffset = settings->value("Modem/rxOffset", 0).toInt();
+
+	AGWServ = settings->value("AGWHost/Server", TRUE).toBool();
+	AGWPort = settings->value("AGWHost/Port", 8000).toInt();
+	KISSServ = settings->value("KISS/Server", FALSE).toBool();
+	KISSPort = settings->value("KISS/Port", 8105).toInt();
+
+	RX_Samplerate = RX_SR + RX_SR * 0.000001*RX_PPM;
+	TX_Samplerate = TX_SR + TX_SR * 0.000001*TX_PPM;
+
+	emph_all[0] = settings->value("Modem/PreEmphasisAll1", FALSE).toBool();
+	emph_all[1] = settings->value("Modem/PreEmphasisAll2", FALSE).toBool();
+	emph_all[2] = settings->value("Modem/PreEmphasisAll3", FALSE).toBool();
+	emph_all[3] = settings->value("Modem/PreEmphasisAll4", FALSE).toBool();
+
+	emph_db[0] = settings->value("Modem/PreEmphasisDB1", 0).toInt();
+	emph_db[1] = settings->value("Modem/PreEmphasisDB2", 0).toInt();
+	emph_db[2] = settings->value("Modem/PreEmphasisDB3", 0).toInt();
+	emph_db[3] = settings->value("Modem/PreEmphasisDB4", 0).toInt();
+
+	Firstwaterfall = settings->value("Window/Waterfall1", TRUE).toInt();
+	Secondwaterfall = settings->value("Window/Waterfall2", TRUE).toInt();
+
+	txdelay[0] = settings->value("Modem/TxDelay1", 250).toInt();
+	txdelay[1] = settings->value("Modem/TxDelay2", 250).toInt();
+	txdelay[2] = settings->value("Modem/TxDelay3", 250).toInt();
+	txdelay[3] = settings->value("Modem/TxDelay4", 250).toInt();
+
+	strcpy(CWIDCall, settings->value("Modem/CWIDCall", "").toString().toUtf8().toUpper());
+	CWIDInterval = settings->value("Modem/CWIDInterval", 0).toInt();
+	CWIDLeft = settings->value("Modem/CWIDLeft", 0).toInt();
+	CWIDRight = settings->value("Modem/CWIDRight", 0).toInt();
+	CWIDType = settings->value("Modem/CWIDType", 1).toInt();			// on/off
+
+
+	getAX25Params(0);
+	getAX25Params(1);
+	getAX25Params(2);
+	getAX25Params(3);
+
+	// Validate and process settings
+
+	UsingLeft = 0;
+	UsingRight = 0;
+	UsingBothChannels = 0;
+
+	for (int i = 0; i < 4; i++)
+	{
+		if (soundChannel[i] == LEFT)
+		{
+			UsingLeft = 1;
+			modemtoSoundLR[i] = 0;
+		}
+		else if (soundChannel[i] == RIGHT)
+		{
+			UsingRight = 1;
+			modemtoSoundLR[i] = 1;
+		}
+	}
+
+	if (UsingLeft && UsingRight)
+		UsingBothChannels = 1;
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		tx_hitoneraise[snd_ch] = powf(10.0f, -abs(tx_hitoneraisedb[snd_ch]) / 20.0f);
+
+		if (IPOLL[snd_ch] < 0)
+			IPOLL[snd_ch] = 0;
+		else if (IPOLL[snd_ch] > 65535)
+			IPOLL[snd_ch] = 65535;
+
+		if (MEMRecovery[snd_ch] < 1)
+			MEMRecovery[snd_ch] = 1;
+
+		//			if (MEMRecovery[snd_ch]> 65535)
+		//				MEMRecovery[snd_ch]= 65535;
+
+				/*
+				if resptime[snd_ch] < 0 then resptime[snd_ch]= 0;
+					if resptime[snd_ch] > 65535 then resptime[snd_ch]= 65535;
+					if persist[snd_ch] > 255 then persist[snd_ch]= 255;
+					if persist[snd_ch] < 32 then persist[snd_ch]= 32;
+					if fracks[snd_ch] < 1 then fracks[snd_ch]= 1;
+					if frack_time[snd_ch] < 1 then frack_time[snd_ch]= 1;
+					if idletime[snd_ch] < frack_time[snd_ch] then idletime[snd_ch]= 180;
+				*/
+
+		if (emph_db[snd_ch] < 0 || emph_db[snd_ch] > nr_emph)
+			emph_db[snd_ch] = 0;
+
+		if (max_frame_collector[snd_ch] > 6) max_frame_collector[snd_ch] = 6;
+		if (maxframe[snd_ch] == 0 || maxframe[snd_ch] > 7) maxframe[snd_ch] = 3;
+		if (qpsk_set[snd_ch].mode > 1)  qpsk_set[snd_ch].mode = 0;
+
+	}
+
+	delete(settings);
+}
+
+void SavePortSettings(int Chan);
+
+void saveAX25Param(const char * key, QVariant Value)
+{
+	char fullKey[64];
+
+	sprintf(fullKey, "%s/%s", Prefix, key);
+
+	settings->setValue(fullKey, Value);
+}
+
+void saveAX25Params(int chan)
+{
+	Prefix[5] = chan + 'A';
+	SavePortSettings(chan);
+}
+
+void SavePortSettings(int Chan)
+{
+	saveAX25Param("Retries", fracks[Chan]);
+	saveAX25Param("HiToneRaise", tx_hitoneraisedb[Chan]);
+	saveAX25Param("Maxframe",maxframe[Chan]);
+	saveAX25Param("Retries", fracks[Chan]);
+	saveAX25Param("FrackTime", frack_time[Chan]);
+	saveAX25Param("IdleTime", idletime[Chan]);
+	saveAX25Param("SlotTime", slottime[Chan]);
+	saveAX25Param("Persist", persist[Chan]);
+	saveAX25Param("RespTime", resptime[Chan]);
+	saveAX25Param("TXFrmMode", TXFrmMode[Chan]);
+	saveAX25Param("FrameCollector", max_frame_collector[Chan]);
+	saveAX25Param("ExcludeCallsigns", exclude_callsigns[Chan]);
+	saveAX25Param("ExcludeAPRSFrmType", exclude_APRS_frm[Chan]);
+	saveAX25Param("KISSOptimization", KISS_opt[Chan]);
+	saveAX25Param("DynamicFrack", dyn_frack[Chan]);
+	saveAX25Param("BitRecovery", recovery[Chan]);
+	saveAX25Param("NonAX25Frm", NonAX25[Chan]);
+	getAX25Param("MEMRecovery", MEMRecovery[Chan]);
+	saveAX25Param("IPOLL", IPOLL[Chan]);
+	saveAX25Param("MyDigiCall", MyDigiCall[Chan]);
+	saveAX25Param("FX25", fx25_mode[Chan]);
+}
+
+
+
+void saveSettings()
+{
+	QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+
+	settings->setValue("Init/SoundMode", SoundMode);
+	settings->setValue("Init/UDPClientPort", UDPClientPort);
+	settings->setValue("Init/UDPServerPort", UDPServerPort);
+	settings->setValue("Init/TXPort", TXPort);
+
+	settings->setValue("Init/UDPServer", UDPServ);
+	settings->setValue("Init/UDPHost", UDPHost);
+
+
+	settings->setValue("Init/TXSampleRate", TX_SR);
+	settings->setValue("Init/RXSampleRate", RX_SR);
+
+	settings->setValue("Init/SndRXDeviceName", CaptureDevice);
+	settings->setValue("Init/SndTXDeviceName", PlaybackDevice);
+
+	settings->setValue("Init/SCO", SCO);
+	settings->setValue("Init/DualPTT", DualPTT);
+	settings->setValue("Init/TXRotate", TX_rotate);
+
+	settings->setValue("Init/DispMode", raduga);
+
+	settings->setValue("Init/PTT", PTTPort);
+	settings->setValue("Init/PTTBAUD", PTTBAUD);
+	settings->setValue("Init/PTTMode", PTTMode);
+
+	settings->setValue("Init/PTTOffString", PTTOffString);
+	settings->setValue("Init/PTTOnString", PTTOnString);
+
+	settings->setValue("Init/pttGPIOPin", pttGPIOPin);
+	settings->setValue("Init/pttGPIOPinR", pttGPIOPinR);
+
+	settings->setValue("Init/CM108Addr", CM108Addr);
+	settings->setValue("Init/HamLibPort", HamLibPort);
+	settings->setValue("Init/HamLibHost", HamLibHost);
+	settings->setValue("Init/MinimizetoTray", MintoTray);
+
+	settings->setValue("Init/multiCore", multiCore);
+
+	// Don't save freq on close as it could be offset by multiple decoders
+
+	settings->setValue("Modem/NRRcvrPairs1", RCVR[0]);
+	settings->setValue("Modem/NRRcvrPairs2", RCVR[1]);
+	settings->setValue("Modem/NRRcvrPairs3", RCVR[2]);
+	settings->setValue("Modem/NRRcvrPairs4", RCVR[3]);
+
+	settings->setValue("Modem/RcvrShift1", rcvr_offset[0]);
+	settings->setValue("Modem/RcvrShift2", rcvr_offset[1]);
+	settings->setValue("Modem/RcvrShift3", rcvr_offset[2]);
+	settings->setValue("Modem/RcvrShift4", rcvr_offset[3]);
+
+	settings->setValue("Modem/ModemType1", speed[0]);
+	settings->setValue("Modem/ModemType2", speed[1]);
+	settings->setValue("Modem/ModemType3", speed[2]);
+	settings->setValue("Modem/ModemType4", speed[3]);
+
+	settings->setValue("Modem/soundChannel1", soundChannel[0]);
+	settings->setValue("Modem/soundChannel2", soundChannel[1]);
+	settings->setValue("Modem/soundChannel3", soundChannel[2]);
+	settings->setValue("Modem/soundChannel4", soundChannel[3]);
+
+	settings->setValue("Modem/DCDThreshold", dcd_threshold);
+	settings->setValue("Modem/rxOffset", rxOffset);
+
+	settings->setValue("AGWHost/Server", AGWServ);
+	settings->setValue("AGWHost/Port", AGWPort);
+	settings->setValue("KISS/Server", KISSServ);
+	settings->setValue("KISS/Port", KISSPort);
+
+	settings->setValue("Modem/PreEmphasisAll1", emph_all[0]);
+	settings->setValue("Modem/PreEmphasisAll2", emph_all[1]);
+	settings->setValue("Modem/PreEmphasisAll3", emph_all[2]);
+	settings->setValue("Modem/PreEmphasisAll4", emph_all[3]);
+
+	settings->setValue("Modem/PreEmphasisDB1", emph_db[0]);
+	settings->setValue("Modem/PreEmphasisDB2", emph_db[1]);
+	settings->setValue("Modem/PreEmphasisDB3", emph_db[2]);
+	settings->setValue("Modem/PreEmphasisDB4", emph_db[3]);
+
+	settings->setValue("Window/Waterfall1", Firstwaterfall);
+	settings->setValue("Window/Waterfall2", Secondwaterfall);
+
+	settings->setValue("Modem/TxDelay1", txdelay[0]);
+	settings->setValue("Modem/TxDelay2", txdelay[1]);
+	settings->setValue("Modem/TxDelay3", txdelay[2]);
+	settings->setValue("Modem/TxDelay4", txdelay[3]);
+
+	settings->setValue("Modem/TxTail1", txtail[0]);
+	settings->setValue("Modem/TxTail2", txtail[1]);
+	settings->setValue("Modem/TxTail3", txtail[2]);
+	settings->setValue("Modem/TxTail4", txtail[3]);
+
+	settings->setValue("Modem/CWIDCall", CWIDCall);
+	settings->setValue("Modem/CWIDInterval", CWIDInterval);
+	settings->setValue("Modem/CWIDLeft", CWIDLeft);
+	settings->setValue("Modem/CWIDRight", CWIDRight);
+	settings->setValue("Modem/CWIDType", CWIDType);			
+
+
+	saveAX25Params(1);
+	saveAX25Params(2);
+	saveAX25Params(3);
+
+	settings->sync();
+
+	delete(settings);
+}
diff --git a/DialogButtonBottom.ui b/DialogButtonBottom.ui
new file mode 100644
index 0000000..45832a0
--- /dev/null
+++ b/DialogButtonBottom.ui
@@ -0,0 +1,100 @@
+<ui version="4.0">
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QWidget" name="layoutWidget">
+   <property name="geometry">
+    <rect>
+     <x>20</x>
+     <y>250</y>
+     <width>351</width>
+     <height>33</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout">
+    <property name="margin">
+     <number>0</number>
+    </property>
+    <property name="spacing">
+     <number>6</number>
+    </property>
+    <item>
+     <spacer>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="sizeHint">
+       <size>
+        <width>131</width>
+        <height>31</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+    <item>
+     <widget class="QPushButton" name="okButton">
+      <property name="text">
+       <string>OK</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="cancelButton">
+      <property name="text">
+       <string>Cancel</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>278</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>96</x>
+     <y>254</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>369</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>179</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/HEAD b/HEAD
new file mode 100644
index 0000000..cb089cd
--- /dev/null
+++ b/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/ModemDialog.ui b/ModemDialog.ui
new file mode 100644
index 0000000..9b662c4
--- /dev/null
+++ b/ModemDialog.ui
@@ -0,0 +1,3041 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ModemDialog</class>
+ <widget class="QDialog" name="ModemDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>614</width>
+    <height>599</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Modem Settings</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <widget class="QTabWidget" name="tabWidget_0">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>24</y>
+     <width>591</width>
+     <height>471</height>
+    </rect>
+   </property>
+   <property name="currentIndex">
+    <number>0</number>
+   </property>
+   <widget class="QWidget" name="Modem1">
+    <attribute name="title">
+     <string>Modem 1</string>
+    </attribute>
+    <widget class="QScrollArea" name="scrollArea">
+     <property name="geometry">
+      <rect>
+       <x>-1</x>
+       <y>-1</y>
+       <width>583</width>
+       <height>441</height>
+      </rect>
+     </property>
+     <property name="widgetResizable">
+      <bool>false</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>577</width>
+        <height>439</height>
+       </rect>
+      </property>
+      <widget class="QGroupBox" name="filtersA">
+       <property name="geometry">
+        <rect>
+         <x>290</x>
+         <y>10</y>
+         <width>283</width>
+         <height>349</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem Filters</string>
+       </property>
+       <widget class="QPushButton" name="showBPF_A">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>30</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showTXBPF_A">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>60</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showLPF_A">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>90</y>
+          <width>60</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFWidthA">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>30</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_2">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>60</y>
+          <width>81</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TXBPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXBPFWidthA">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>60</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_3">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>90</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFWidthA">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>90</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFTapsA">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>120</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFTapsA">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>150</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="preEmphA">
+        <property name="geometry">
+         <rect>
+          <x>150</x>
+          <y>204</y>
+          <width>61</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>6 dB</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>12 dB</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QCheckBox" name="DefaultA">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>161</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Default Settings</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="KISSOptA">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>232</y>
+          <width>166</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>KISS Optimisations</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="nonAX25A">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>256</y>
+          <width>176</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>non-AX25 filter</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_4">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>120</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPFTaps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_5">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Taps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_6">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>203</y>
+          <width>141</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>PreEmphasis filter</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="preEmphAllA">
+        <property name="geometry">
+         <rect>
+          <x>230</x>
+          <y>207</y>
+          <width>51</width>
+          <height>16</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>All</string>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QGroupBox" name="groupBox">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>10</y>
+         <width>281</width>
+         <height>431</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem type</string>
+       </property>
+       <widget class="QLineEdit" name="RXShiftA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>181</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXDelayA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>21</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXTailA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>51</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="AddRXA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>151</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="recoverBitA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>221</y>
+          <width>69</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>NONE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>SINGLE</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_8">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>20</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Delay</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_9">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>50</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Tail</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_10">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_11">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX Shift</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_12">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>220</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Bits Recovery</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_13">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>21</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_14">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>51</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_15">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>151</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>pairs</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_16">
+        <property name="geometry">
+         <rect>
+          <x>175</x>
+          <y>181</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Hz</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="fx25ModeA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>251</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_17">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>250</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>FX25 Mode</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_69">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>80</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Frack</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_70">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>81</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>secs</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="FrackA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>81</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_71">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>109</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Retries</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="RetriesA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>110</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDUI_A">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>348</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before UI</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDSABM_A">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>374</y>
+          <width>251</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before SABM/UA</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSID_1_SETMODEM">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>400</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Set Modem from RSID</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="SendRSID_1">
+        <property name="geometry">
+         <rect>
+          <x>164</x>
+          <y>348</y>
+          <width>101</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="DigiCallsA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>310</y>
+          <width>181</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_67">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>310</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>DigiCalls</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_83">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>279</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>IL2P  Mode</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="IL2PModeA">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>280</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>il2p Only</string>
+         </property>
+        </item>
+       </widget>
+      </widget>
+     </widget>
+    </widget>
+   </widget>
+   <widget class="QWidget" name="Modem2">
+    <attribute name="title">
+     <string>Modem 2</string>
+    </attribute>
+    <widget class="QScrollArea" name="scrollAreB">
+     <property name="geometry">
+      <rect>
+       <x>0</x>
+       <y>0</y>
+       <width>581</width>
+       <height>601</height>
+      </rect>
+     </property>
+     <property name="widgetResizable">
+      <bool>false</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents_2">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>570</width>
+        <height>439</height>
+       </rect>
+      </property>
+      <widget class="QGroupBox" name="filtersB">
+       <property name="geometry">
+        <rect>
+         <x>290</x>
+         <y>10</y>
+         <width>281</width>
+         <height>287</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem Filters</string>
+       </property>
+       <widget class="QPushButton" name="showBPF_B">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>30</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showTXBPF_B">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>60</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showLPF_B">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>90</y>
+          <width>60</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFWidthB">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>30</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_18">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_19">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>60</y>
+          <width>81</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TXBPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXBPFWidthB">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>60</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_20">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>90</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFWidthB">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>90</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFTapsB">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>120</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFTapsB">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>150</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="preEmphB">
+        <property name="geometry">
+         <rect>
+          <x>150</x>
+          <y>204</y>
+          <width>61</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>6 dB</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>12 dB</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QCheckBox" name="DefaultB">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>171</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Default Settings</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="KISSOptB">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>232</y>
+          <width>166</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>KISS Optimisations</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="nonAX25B">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>256</y>
+          <width>176</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>non-AX25 filter</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_21">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>120</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPFTaps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_22">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Taps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_23">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>203</y>
+          <width>141</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>PreEmphasis filter</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="preEmphAllB">
+        <property name="geometry">
+         <rect>
+          <x>230</x>
+          <y>207</y>
+          <width>51</width>
+          <height>16</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>All</string>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QWidget" name="layoutWidget_2">
+       <property name="geometry">
+        <rect>
+         <x>175</x>
+         <y>545</y>
+         <width>209</width>
+         <height>33</height>
+        </rect>
+       </property>
+       <layout class="QHBoxLayout" name="_2">
+        <property name="spacing">
+         <number>6</number>
+        </property>
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QPushButton" name="okButton_2">
+          <property name="text">
+           <string>OK</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="cancelButton_2">
+          <property name="text">
+           <string>Cancel</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_2">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>10</y>
+         <width>281</width>
+         <height>431</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem type</string>
+       </property>
+       <widget class="QLineEdit" name="RXShiftB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>181</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXDelayB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>21</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXTailB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>51</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="AddRXB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>151</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="recoverBitB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>221</y>
+          <width>69</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>NONE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>SINGLE</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_24">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>20</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Delay</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_25">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>50</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Tail</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_26">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_27">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX Shift</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_28">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>220</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Bits Recovery</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_29">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>21</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_30">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>51</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_31">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>151</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>pairs</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_32">
+        <property name="geometry">
+         <rect>
+          <x>175</x>
+          <y>181</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Hz</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="fx25ModeB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>251</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_33">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>250</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>FX25 Mode</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_72">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>80</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Frack</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_73">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>81</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>secs</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="FrackB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>81</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_74">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>109</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Retries</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="RetriesB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>110</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="SendRSID_2">
+        <property name="geometry">
+         <rect>
+          <x>164</x>
+          <y>348</y>
+          <width>101</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDUI_B">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>348</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before UI</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSID_2_SETMODEM">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>400</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Set Modem from RSID</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDSABM_B">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>374</y>
+          <width>251</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before SABM/UA</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_68">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>310</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>DigiCalls</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="DigiCallsB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>310</y>
+          <width>181</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_84">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>280</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>IL2P  Mode</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="IL2PModeB">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>281</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>il2p Only</string>
+         </property>
+        </item>
+       </widget>
+      </widget>
+     </widget>
+    </widget>
+   </widget>
+   <widget class="QWidget" name="Modem3">
+    <attribute name="title">
+     <string>Modem 3 </string>
+    </attribute>
+    <widget class="QScrollArea" name="scrollAreC">
+     <property name="geometry">
+      <rect>
+       <x>0</x>
+       <y>0</y>
+       <width>583</width>
+       <height>601</height>
+      </rect>
+     </property>
+     <property name="widgetResizable">
+      <bool>false</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents_3">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>570</width>
+        <height>581</height>
+       </rect>
+      </property>
+      <widget class="QGroupBox" name="filtersC">
+       <property name="geometry">
+        <rect>
+         <x>290</x>
+         <y>10</y>
+         <width>281</width>
+         <height>287</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem Filters</string>
+       </property>
+       <widget class="QPushButton" name="showBPF_C">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>30</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showTXBPF_C">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>60</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showLPF_C">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>90</y>
+          <width>60</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFWidthC">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>30</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_35">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_36">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>60</y>
+          <width>81</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TXBPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXBPFWidthC">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>60</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_37">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>90</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFWidthC">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>90</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFTapsC">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>120</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFTapsC">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>150</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="preEmphC">
+        <property name="geometry">
+         <rect>
+          <x>150</x>
+          <y>204</y>
+          <width>61</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>6 dB</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>12 dB</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QCheckBox" name="DefaultC">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>171</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Default Settings</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="KISSOptC">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>232</y>
+          <width>166</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>KISS Optimisations</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="nonAX25C">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>256</y>
+          <width>176</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>non-AX25 filter</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_38">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>120</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPFTaps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_39">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Taps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_40">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>203</y>
+          <width>141</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>PreEmphasis filter</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="preEmphAllC">
+        <property name="geometry">
+         <rect>
+          <x>230</x>
+          <y>207</y>
+          <width>51</width>
+          <height>16</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>All</string>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QWidget" name="layoutWidget_3">
+       <property name="geometry">
+        <rect>
+         <x>175</x>
+         <y>545</y>
+         <width>209</width>
+         <height>33</height>
+        </rect>
+       </property>
+       <layout class="QHBoxLayout" name="_3">
+        <property name="spacing">
+         <number>6</number>
+        </property>
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QPushButton" name="okButton_3">
+          <property name="text">
+           <string>OK</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="cancelButton_3">
+          <property name="text">
+           <string>Cancel</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_3">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>10</y>
+         <width>281</width>
+         <height>441</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem type</string>
+       </property>
+       <widget class="QLineEdit" name="RXShiftC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>181</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXDelayC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>21</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXTailC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>51</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="AddRXC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>151</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="recoverBitC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>221</y>
+          <width>69</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>NONE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>SINGLE</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_34">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>20</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Delay</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_41">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>50</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Tail</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_42">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_43">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX Shift</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_44">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>220</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Bits Recovery</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_45">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>21</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_46">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>51</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_47">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>151</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>pairs</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_48">
+        <property name="geometry">
+         <rect>
+          <x>175</x>
+          <y>181</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Hz</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="fx25ModeC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>251</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_49">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>250</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>FX25 Mode</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_75">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>80</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Frack</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_76">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>81</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>secs</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="FrackC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>81</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_77">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>109</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Retries</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="RetriesC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>110</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDSABM_C">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>374</y>
+          <width>251</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before SABM/UA</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSID_3_SETMODEM">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>400</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Set Modem from RSID</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDUI_C">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>348</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before UI</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="SendRSID_3">
+        <property name="geometry">
+         <rect>
+          <x>164</x>
+          <y>348</y>
+          <width>101</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_81">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>310</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>DigiCalls</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="DigiCallsC">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>310</y>
+          <width>181</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QComboBox" name="IL2PModeC">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>291</y>
+         <width>81</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <item>
+        <property name="text">
+         <string>None</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>RX Only</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>RX+TX</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>il2p Only</string>
+        </property>
+       </item>
+      </widget>
+      <widget class="QLabel" name="label_85">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>290</y>
+         <width>86</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>IL2P  Mode</string>
+       </property>
+      </widget>
+     </widget>
+    </widget>
+   </widget>
+   <widget class="QWidget" name="Modem4">
+    <attribute name="title">
+     <string>Modem 4</string>
+    </attribute>
+    <widget class="QScrollArea" name="scrollAreD">
+     <property name="geometry">
+      <rect>
+       <x>0</x>
+       <y>0</y>
+       <width>583</width>
+       <height>601</height>
+      </rect>
+     </property>
+     <property name="widgetResizable">
+      <bool>false</bool>
+     </property>
+     <widget class="QWidget" name="scrollAreaWidgetContents_4">
+      <property name="geometry">
+       <rect>
+        <x>0</x>
+        <y>0</y>
+        <width>570</width>
+        <height>581</height>
+       </rect>
+      </property>
+      <widget class="QGroupBox" name="filtersD">
+       <property name="geometry">
+        <rect>
+         <x>290</x>
+         <y>10</y>
+         <width>281</width>
+         <height>287</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem Filters</string>
+       </property>
+       <widget class="QPushButton" name="showBPF_D">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>30</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showTXBPF_D">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>60</y>
+          <width>61</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="showLPF_D">
+        <property name="geometry">
+         <rect>
+          <x>172</x>
+          <y>90</y>
+          <width>60</width>
+          <height>25</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Show</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFWidthD">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>30</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_52">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>30</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_53">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>60</y>
+          <width>81</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TXBPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXBPFWidthD">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>60</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_54">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>90</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Width</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFWidthD">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>90</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="BPFTapsD">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>120</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="LPFTapsD">
+        <property name="geometry">
+         <rect>
+          <x>90</x>
+          <y>150</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="preEmphD">
+        <property name="geometry">
+         <rect>
+          <x>150</x>
+          <y>204</y>
+          <width>61</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>6 dB</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>12 dB</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QCheckBox" name="DefaultD">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>161</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Default Settings</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="KISSOptD">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>232</y>
+          <width>166</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>KISS Optimisations</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="nonAX25D">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>256</y>
+          <width>176</width>
+          <height>17</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>non-AX25 filter</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_55">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>120</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>BPFTaps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_56">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>LPF Taps</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_57">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>203</y>
+          <width>141</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>PreEmphasis filter</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="preEmphAllD">
+        <property name="geometry">
+         <rect>
+          <x>230</x>
+          <y>207</y>
+          <width>70</width>
+          <height>16</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>All</string>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QWidget" name="layoutWidget_4">
+       <property name="geometry">
+        <rect>
+         <x>175</x>
+         <y>545</y>
+         <width>209</width>
+         <height>33</height>
+        </rect>
+       </property>
+       <layout class="QHBoxLayout" name="_4">
+        <property name="spacing">
+         <number>6</number>
+        </property>
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QPushButton" name="okButton_4">
+          <property name="text">
+           <string>OK</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="cancelButton_4">
+          <property name="text">
+           <string>Cancel</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+      <widget class="QGroupBox" name="groupBox_4">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>10</y>
+         <width>281</width>
+         <height>431</height>
+        </rect>
+       </property>
+       <property name="title">
+        <string>Modem type</string>
+       </property>
+       <widget class="QLineEdit" name="RXShiftD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>181</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXDelayD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>21</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="TXTailD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>51</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="AddRXD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>151</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="recoverBitD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>221</y>
+          <width>69</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>NONE</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>SINGLE</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_50">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>20</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Delay</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_51">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>50</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>TX Tail</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_58">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>150</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_59">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>180</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Add RX Shift</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_60">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>220</y>
+          <width>91</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Bits Recovery</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_61">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>21</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_62">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>51</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>msec</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_63">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>151</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>pairs</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_64">
+        <property name="geometry">
+         <rect>
+          <x>175</x>
+          <y>181</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Hz</string>
+        </property>
+       </widget>
+       <widget class="QComboBox" name="fx25ModeD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>251</y>
+          <width>81</width>
+          <height>22</height>
+         </rect>
+        </property>
+        <item>
+         <property name="text">
+          <string>None</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX Only</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>RX+TX</string>
+         </property>
+        </item>
+       </widget>
+       <widget class="QLabel" name="label_65">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>250</y>
+          <width>86</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>FX25 Mode</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_78">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>80</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Frack</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_79">
+        <property name="geometry">
+         <rect>
+          <x>176</x>
+          <y>81</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>secs</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="FrackD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>81</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_80">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>109</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Retries</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="RetriesD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>110</y>
+          <width>61</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDSABM_D">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>374</y>
+          <width>251</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before SABM/UA</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSID_4_SETMODEM">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>400</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Set Modem from RSID</string>
+        </property>
+       </widget>
+       <widget class="QCheckBox" name="RSIDUI_D">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>348</y>
+          <width>171</width>
+          <height>20</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID before UI</string>
+        </property>
+       </widget>
+       <widget class="QPushButton" name="SendRSID_4">
+        <property name="geometry">
+         <rect>
+          <x>164</x>
+          <y>348</y>
+          <width>101</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>Send RSID</string>
+        </property>
+       </widget>
+       <widget class="QLabel" name="label_82">
+        <property name="geometry">
+         <rect>
+          <x>10</x>
+          <y>310</y>
+          <width>71</width>
+          <height>23</height>
+         </rect>
+        </property>
+        <property name="text">
+         <string>DigiCalls</string>
+        </property>
+       </widget>
+       <widget class="QLineEdit" name="DigiCallsD">
+        <property name="geometry">
+         <rect>
+          <x>100</x>
+          <y>310</y>
+          <width>181</width>
+          <height>23</height>
+         </rect>
+        </property>
+       </widget>
+      </widget>
+      <widget class="QComboBox" name="IL2PModeD">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>291</y>
+         <width>81</width>
+         <height>22</height>
+        </rect>
+       </property>
+       <item>
+        <property name="text">
+         <string>None</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>RX Only</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>RX+TX</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>il2p Only</string>
+        </property>
+       </item>
+      </widget>
+      <widget class="QLabel" name="label_86">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>290</y>
+         <width>86</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>IL2P  Mode</string>
+       </property>
+      </widget>
+     </widget>
+    </widget>
+   </widget>
+  </widget>
+  <widget class="QWidget" name="layoutWidget">
+   <property name="geometry">
+    <rect>
+     <x>127</x>
+     <y>550</y>
+     <width>276</width>
+     <height>33</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout">
+    <property name="spacing">
+     <number>6</number>
+    </property>
+    <property name="leftMargin">
+     <number>0</number>
+    </property>
+    <property name="topMargin">
+     <number>0</number>
+    </property>
+    <property name="rightMargin">
+     <number>0</number>
+    </property>
+    <property name="bottomMargin">
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QPushButton" name="okButton">
+      <property name="text">
+       <string>OK</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="modemSave">
+      <property name="text">
+       <string>Save</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="cancelButton">
+      <property name="text">
+       <string>Cancel</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="label_7">
+   <property name="geometry">
+    <rect>
+     <x>80</x>
+     <y>520</y>
+     <width>71</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>CWID Call</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="CWIDCall">
+   <property name="geometry">
+    <rect>
+     <x>150</x>
+     <y>520</y>
+     <width>51</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="maxLength">
+    <number>20</number>
+   </property>
+  </widget>
+  <widget class="QRadioButton" name="CWIDType">
+   <property name="geometry">
+    <rect>
+     <x>340</x>
+     <y>520</y>
+     <width>61</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>FSK</string>
+   </property>
+  </widget>
+  <widget class="QRadioButton" name="radioButton_2">
+   <property name="geometry">
+    <rect>
+     <x>390</x>
+     <y>520</y>
+     <width>101</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Tone On/Off</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_66">
+   <property name="geometry">
+    <rect>
+     <x>220</x>
+     <y>520</y>
+     <width>61</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>Interval</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="CWIDInterval">
+   <property name="geometry">
+    <rect>
+     <x>270</x>
+     <y>520</y>
+     <width>31</width>
+     <height>20</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Modulate.c b/Modulate.c
new file mode 100644
index 0000000..b280dca
--- /dev/null
+++ b/Modulate.c
@@ -0,0 +1,1066 @@
+//	Sample Creation routines (encode and filter) for ARDOP Modem
+
+#include "ARDOPC.h"
+#include <math.h>
+
+#define ARDOPBufferSize 12000 * 100
+
+extern short ARDOPTXBuffer[4][12000 * 100];	// Enough to hold whole frame of samples
+
+extern int ARDOPTXLen[4];				// Length of frame
+extern int ARDOPTXPtr[4];				// Tx Pointer
+
+extern int intSessionBW;	// Negotiated speed
+
+#pragma warning(disable : 4244)		// Code does lots of  float to int
+
+FILE * fp1;
+
+float dblQAMCarRatio = 1.0f / 1.765f;   //Optimum for 8,8 circular constellation with no phase offset: (Dmin inner to inner = Dmin inner to outer) 
+
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+
+// Function to generate the Two-tone leader and Frame Sync (used in all frame types) 
+
+extern short Dummy;
+
+int intSoftClipCnt = 0;
+BOOL SendingHeader200 = 0;		// Set when sending header in 200 Hz Modes
+
+void ARDOPFlush();
+
+int intBW;			// Requested connect speed
+int intSessionBW;	// Negotiated speed
+UCHAR bytLastReceivedDataFrameType;
+UCHAR bytLastARQSessionID;
+int blnPending = 0;
+int intSessionBW = 500;
+
+void ARDOPSampleSink(short Sample);
+extern CONST short int50BaudTwoToneLeaderTemplate[240];  // holds just 1 symbol (20 ms) of the leader
+
+
+extern int TrailerLength;
+
+void AddTrailer(int Chan)
+{
+	int intAddedSymbols = 1 + TrailerLength / 10; // add 1 symbol + 1 per each 10 ms of MCB.Trailer
+	int i, k;
+
+	for (i = 1; i <= intAddedSymbols; i++)
+	{
+		for (k = 0; k < 120; k++)
+		{
+			ARDOPSampleSink(intQAM50bdCarTemplate[5][0][k % 60]);
+		}
+	}
+}
+
+extern int Number;
+
+void ARDOPFlush(int Chan)
+{
+	AddTrailer(Chan);			// add the trailer.
+	ARDOPTXPtr[Chan] = 0;
+	ARDOPTXLen[Chan] = Number;
+}
+
+// Function to soft clip combined waveforms. 
+int SoftClip(int intInput)
+{
+	if (intInput > 30000) // soft clip above/below 30000
+	{
+		intInput = 30000; //min(32700, 30000 + 20 * sqrt(intInput - 30000));
+		intSoftClipCnt += 1;
+	}
+	else if(intInput < -30000)
+	{
+		intInput = -30000; //max(-32700, -30000 - 20 * sqrt(-(intInput + 30000)));
+		intSoftClipCnt += 1;
+	}
+
+	if (intInput == 0)
+		intInput = 0;
+
+
+	return intInput;
+}
+
+
+void GetTwoToneLeaderWithSync(int intSymLen)
+{
+	// Generate a 50 baud (20 ms symbol time) 2 tone leader 
+    // leader tones used are 1475 and 1525 Hz.  
+  
+	int intSign = 1;
+	int i, j;
+	short intSample;
+
+    if ((intSymLen & 1) == 1) 
+		intSign = -1;
+
+	for (i = 0; i < intSymLen; i++)   //for the number of symbols needed (two symbols less than total leader length) 
+	{
+		for (j = 0; j < 240; j++)	// for 240 samples per symbol (50 baud) 
+		{
+           if (i != (intSymLen - 1)) 
+			   intSample = intSign * int50BaudTwoToneLeaderTemplate[j];
+		   else
+			   intSample = -intSign * int50BaudTwoToneLeaderTemplate[j];
+   
+		   ARDOPSampleSink(intSample);
+		}
+		intSign = -intSign;
+	}
+}
+
+void SendLeaderAndSYNC(UCHAR * bytEncodedBytes, int intLeaderLen)
+{
+	int intLeaderLenMS;
+	int j, k, n;
+	UCHAR bytMask;
+	UCHAR bytSymToSend;
+	short intSample;
+	if (intLeaderLen == 0)
+		intLeaderLenMS = LeaderLength;
+	else
+		intLeaderLenMS = intLeaderLen;
+
+ 	// Create the leader
+
+	GetTwoToneLeaderWithSync(intLeaderLenMS / 20);
+		       
+	//Create the 8 symbols (16 bit) 50 baud 4FSK frame type with Implied SessionID
+
+	for(j = 0; j < 2; j++)		 // for the 2 bytes of the frame type
+	{              
+		bytMask = 0x30;
+		
+		for(k = 0; k < 4; k++)	 // for 4 symbols per byte (3 data + 1 parity)
+		{
+			if (k < 3)
+				bytSymToSend = (bytMask & bytEncodedBytes[j]) >> (2 * (2 - k));
+			else
+				bytSymToSend = ComputeTypeParity(bytEncodedBytes[j]);
+
+			for(n = 0; n < 240; n++)
+			{
+//				if ( ARQBandwidth == XB2500)		// 2500 Hz
+//				{
+//					if (bytSymToSend < 2)
+//						intSample = (0.62 * intFSK50bdCarTemplate[4 + bytSymToSend][n]) + (0.62 * intFSK50bdCarTemplate[bytSymToSend][n]); // 4 is offset to center tones 1350, 1450, 1550, 1650Hz
+//					else
+//						intSample = (0.62 * intFSK50bdCarTemplate[4 + bytSymToSend][n]) + (0.62 * intFSK50bdCarTemplate[8 + bytSymToSend][n]); // 4 is offset to center tones 1350, 1450, 1550, 1650Hz, 8 is offset to tones 1800 and 1900
+//				}
+//				else
+					intSample = intFSK50bdCarTemplate[bytSymToSend + 4][n];
+				
+				ARDOPSampleSink(intSample);	
+			}
+			bytMask = bytMask >> 2;
+		}
+	}
+}
+
+void Mod4FSKDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan)
+{
+	// Function to Modulate data encoded for 4FSK, create
+	// the 16 bit samples and send to sound interface
+
+	// Function works for 1, 2 or 4 simultaneous carriers 
+
+	int intNumCar, intBaud, intDataLen, intRSLen, intDataPtr, intSampPerSym, intDataBytesPerCar;
+	BOOL blnOdd;
+
+	int intSample;
+
+	char strType[18] = "";
+	char strMod[16] = "";
+
+	UCHAR bytSymToSend, bytMask, bytMinQualThresh;
+
+	float dblCarScalingFactor;
+	int intLeaderLenMS;
+	int k, m, n;
+	UCHAR Type = bytEncodedBytes[0];
+
+	if (!FrameInfo(Type, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytMinQualThresh, strType))
+		return;
+
+	if (strcmp(strMod, "4FSK") != 0)
+		return;
+
+	Debugprintf("Sending Frame Type %s", strType);
+	DrawTXFrame(strType);
+
+	if (bytEncodedBytes[0] == PktFrameHeader)
+	{
+		// Leader is 4FSK which needs 500 filter
+
+		if (pktBW[pktMode] < 1000)
+			initFilter(500, 1500, Chan);
+		else
+			initFilter(2500, 1500, Chan);
+	}
+	else
+	{
+		if (ARQBandwidth == XB200)
+			initFilter(200, 1500, Chan);
+		else if (intNumCar == 1)
+			initFilter(500, 1500, Chan);
+		else
+			initFilter(2500, 1500, Chan);
+	}
+
+	if (intLeaderLen == 0)
+		intLeaderLenMS = LeaderLength;
+	else
+		intLeaderLenMS = intLeaderLen;
+
+	switch (intBaud)
+	{
+	case 50:
+
+		intSampPerSym = 240;
+		break;
+
+	case 100:
+
+		intSampPerSym = 120;
+	}
+
+	intDataBytesPerCar = (Len - 2) / intNumCar;		// We queue the samples here, so dont copy below
+
+	SendLeaderAndSYNC(bytEncodedBytes, intLeaderLen);
+
+	intDataPtr = 2;
+
+Reenter:
+
+	switch (intNumCar)
+	{
+	case 1:			 // use carriers 0-3
+
+		dblCarScalingFactor = 1.0; //  (scaling factors determined emperically to minimize crest factor) 
+
+		for (m = 0; m < intDataBytesPerCar; m++)  // For each byte of input data
+		{
+			bytMask = 0xC0;		 // Initialize mask each new data byte
+
+			for (k = 0; k < 4; k++)		// for 4 symbol values per byte of data
+			{
+				bytSymToSend = (bytMask & bytEncodedBytes[intDataPtr]) >> (2 * (3 - k)); // Values 0-3
+
+				for (n = 0; n < intSampPerSym; n++)	 // Sum for all the samples of a symbols 
+				{
+					if (intBaud == 50)
+					{
+						if (intSessionBW == 200 && (bytSymToSend == 0 || bytSymToSend == 3))
+							// This scales down the two outer tones in 200 Hz mode to restrict bandwidth slightly
+							intSample = 0.7f * intFSK50bdCarTemplate[4 + bytSymToSend][n]; //4 is offset to center tones 1350, 1450, 1550, 1650Hz
+						else
+							intSample = intFSK50bdCarTemplate[4 + bytSymToSend][n]; //4 is offset to center tones 1350, 1450, 1550, 1650Hz
+					}
+					else if (intBaud == 100)		// Used for OFDMACK
+					{
+						intSample = intFSK100bdCarTemplate[bytSymToSend][n];
+					}
+					ARDOPSampleSink(intSample);
+				}
+
+				bytMask = bytMask >> 2;
+			}
+			intDataPtr += 1;
+		}
+
+		if (Type == PktFrameHeader)
+		{
+
+			// just sent packet header. Send rest in current mode
+			// Assumes we are using 4FSK for Packet Header
+
+			bytEncodedBytes[0] = Type = PktFrameData;	// Prevent reentry
+
+			strcpy(strMod, &pktMod[pktMode][0]);
+			intDataBytesPerCar = pktDataLen + pktRSLen + 3;
+			intDataPtr = 11;		// Over Header
+			intNumCar = pktCarriers[pktMode];
+
+			// This assumes Packet Data is sent as PSK/QAM
+
+			switch (intNumCar)
+			{
+			case 1:
+				//		intCarStartIndex = 4;
+				dblCarScalingFactor = 1.0f; // Starting at 1500 Hz  (scaling factors determined emperically to minimize crest factor)  TODO:  needs verification
+				break;
+			case 2:
+				//		intCarStartIndex = 3;
+				dblCarScalingFactor = 0.53f; // Starting at 1400 Hz
+				break;
+			case 4:
+				//		intCarStartIndex = 2;
+				dblCarScalingFactor = 0.29f; // Starting at 1200 Hz
+				break;
+			case 8:
+				//		intCarStartIndex = 0;
+				dblCarScalingFactor = 0.17f; // Starting at 800 Hz
+			}
+
+			// Reenter to send rest of variable length packet frame
+
+			if (pktFSK[pktMode])
+				goto Reenter;
+			else
+				ModPSKDataAndPlay(bytEncodedBytes, 0, 0, Chan);
+			return;
+		}
+
+		ARDOPFlush(Chan);
+
+		break;
+
+	case 2:			// use carriers 0-3 and 8-11 (50 baud only)
+
+		dblCarScalingFactor = 0.6f; //  (scaling factors determined emperically to minimize crest factor)
+
+		for (m = 0; m < intDataBytesPerCar; m++)	  // For each byte of input data 
+		{
+			bytMask = 0xC0;	// Initialize mask each new data byte
+
+			for (k = 0; k < 4; k++)		// for 4 symbol values per byte of data
+			{
+				for (n = 0; n < intSampPerSym; n++)	 // for all the samples of a symbol for 2 carriers
+				{
+					//' First carrier
+
+					bytSymToSend = (bytMask & bytEncodedBytes[intDataPtr]) >> (2 * (3 - k)); // Values 0-3
+					intSample = intFSK50bdCarTemplate[bytSymToSend][n];
+					// Second carrier
+
+					bytSymToSend = (bytMask & bytEncodedBytes[intDataPtr + intDataBytesPerCar]) >> (2 * (3 - k));	// Values 0-3
+					intSample = SoftClip(dblCarScalingFactor * (intSample + intFSK50bdCarTemplate[8 + bytSymToSend][n]));
+
+					ARDOPSampleSink(intSample);
+				}
+				bytMask = bytMask >> 2;
+			}
+			intDataPtr += 1;
+		}
+
+		ARDOPFlush(Chan);
+
+		break;
+	}
+}
+
+// Function to extract an 8PSK symbol from an encoded data array
+
+
+UCHAR GetSym8PSK(int intDataPtr, int k, int intCar, UCHAR * bytEncodedBytes, int intDataBytesPerCar)
+{
+	int int3Bytes = bytEncodedBytes[intDataPtr + intCar * intDataBytesPerCar];
+//	int intMask  = 7;
+	int intSym;
+	UCHAR bytSym;
+
+	int3Bytes = int3Bytes << 8;
+	int3Bytes += bytEncodedBytes[intDataPtr + intCar * intDataBytesPerCar + 1];
+	int3Bytes = int3Bytes << 8;
+	int3Bytes += bytEncodedBytes[intDataPtr + intCar * intDataBytesPerCar + 2];  // now have 3 bytes, 24 bits or 8 8PSK symbols 
+//	intMask = intMask << (3 * (7 - k));
+	intSym = int3Bytes >> (3 * (7 - k));
+	bytSym = intSym & 7;	//(intMask && int3Bytes) >> (3 * (7 - k));
+
+	return bytSym;
+}
+
+
+
+// Function to Modulate data encoded for PSK and 16QAM, create
+// the 16 bit samples and send to sound interface
+   
+
+void ModPSKDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan)
+{
+	int intNumCar, intBaud, intDataLen, intRSLen, intDataPtr, intSampPerSym, intDataBytesPerCar;
+	BOOL blnOdd;
+	int Type = bytEncodedBytes[0];
+
+	int intSample;
+	char strType[18] = "";
+	char strMod[16] = "";
+	UCHAR bytSym, bytSymToSend, bytMinQualThresh;
+	float dblCarScalingFactor;
+	int intLeaderLenMS;
+	int i, j, k, l = 4, n;
+	int intCarStartIndex;
+	int intPeakAmp;
+	int intCarIndex;
+	BOOL QAM = 0;
+
+	UCHAR bytLastSym[43]; // = {0}; // Holds the last symbol sent (per carrier). bytLastSym(4) is 1500 Hz carrier (only used on 1 carrier modes) 
+
+	if (!FrameInfo(Type, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytMinQualThresh, strType))
+		return;
+
+	intDataBytesPerCar = (Len - 2) / intNumCar;		// We queue the samples here, so dont copy below
+
+	// These new scaling factor combined with soft clipping to provide near optimum scaling Jan 6, 2018 
+	// The Test form was changed to calculate the Peak power to RMS power (PAPR) of the test waveform and count the number of "soft clips" out of ~ 50,000 samples. 
+	// These values arrived at emperically using the Test form (Quick brown fox message) to minimize PAPR at a minor decrease in maximum constellation quality
+
+	if (strstr(strMod, "16QAM"))
+	{
+		// QAM Modes
+
+		QAM = 1;
+		l = 2;				// 2 symbols per byte
+
+		switch (intNumCar)
+		{
+		case 1:
+			intCarStartIndex = 5;
+			dblCarScalingFactor = 2.0f; // Starting at 1500 Hz  Selected to give < 13% clipped values yielding a PAPR = 1.6 Constellation Quality >98
+			break;
+		case 2:
+			intCarStartIndex = 4;
+			dblCarScalingFactor = 1.0f;
+			break;
+		case 10:
+			intCarStartIndex = 0;
+			dblCarScalingFactor = 0.4f;
+		}
+	}
+	else  // 4PSK
+	{
+		switch (intNumCar)
+		{
+		case 1:
+			intCarStartIndex = 5;
+			dblCarScalingFactor = 2.0f; // Starting at 1500 Hz  Selected to give < 13% clipped values yielding a PAPR = 1.6 Constellation Quality >98
+			break;
+		case 2:
+			intCarStartIndex = 4;
+			dblCarScalingFactor = 1.2f;
+			break;
+		case 10:
+			intCarStartIndex = 0;
+			dblCarScalingFactor = 0.35f;
+		}
+	}
+
+	if (intBaud == 50)
+		intSampPerSym = 240;
+	else
+		intSampPerSym = 120;
+
+	if (Type == PktFrameData)
+	{
+		intDataBytesPerCar = pktDataLen + pktRSLen + 3;
+		intDataPtr = 11;		// Over Header
+		goto PktLoopBack;
+	}
+
+	Debugprintf("Sending Frame Type %s", strType);
+	DrawTXFrame(strType);
+
+	if (intNumCar == 1)
+		initFilter(200, 1500, Chan);
+	else if (intNumCar == 2 || intNumCar == 9)
+		initFilter(500, 1500, Chan);
+	else
+		initFilter(2500, 1500, Chan);
+
+	if (intLeaderLen == 0)
+		intLeaderLenMS = LeaderLength;
+	else
+		intLeaderLenMS = intLeaderLen;
+
+	intSoftClipCnt = 0;
+
+	// Create the leader
+
+	SendLeaderAndSYNC(bytEncodedBytes, intLeaderLen);
+	SendingHeader200 = FALSE;
+
+	intPeakAmp = 0;
+
+	intDataPtr = 2;  // initialize pointer to start of data.
+
+PktLoopBack:		// Reenter here to send rest of variable length packet frame
+
+
+	// Now create a reference symbol for each carrier
+
+	//	We have to do each carrier for each sample, as we write
+	//	the sample immediately 
+
+	for (n = 0; n < intSampPerSym; n++)  // Sum for all the samples of a symbols 
+	{
+		intSample = 0;
+		intCarIndex = intCarStartIndex;  // initialize to correct starting carrier
+
+		for (i = 0; i < intNumCar; i++)	// across all carriers
+		{
+			bytSymToSend = 0;  //  using non 0 causes error on first data byte 12/8/2014   ...Values 0-3  not important (carries no data).   (Possible chance for Crest Factor reduction?)       
+			bytLastSym[intCarIndex] = 0;
+
+
+			intSample += intQAM50bdCarTemplate[intCarIndex][0][n % 120];
+
+			intCarIndex++;
+			if (intCarIndex == 5)
+				intCarIndex = 6;	// skip over 1500 Hz for multi carrier modes (multi carrier modes all use even hundred Hz tones)
+		}
+		intSample = SoftClip(intSample * 0.5 * dblCarScalingFactor);
+		ARDOPSampleSink(intSample);
+	}
+
+	// End of reference phase generation 
+
+	// Unlike ARDOP_WIN we send samples as they are created,
+	// so we loop through carriers, then data bytes
+
+	for (j = 0; j < intDataBytesPerCar; j++)	//  for each referance and data symbol 
+	{
+		// Loop through each symbol of byte (4 for PSK 2 for QAM
+
+		for (k = 0; k < l; k++)
+		{
+			for (n = 0; n < intSampPerSym; n++)
+			{
+				intSample = 0;
+				intCarIndex = intCarStartIndex; // initialize the carrrier index
+
+				for (i = 0; i < intNumCar; i++) // across all active carriers
+				{
+					if (QAM == 0)
+					{
+						bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> (2 * (3 - k))) & 3;
+						bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 3);  // Values 0-3
+
+						if (bytSymToSend < 2) // This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							intSample += intQAM50bdCarTemplate[intCarIndex][2 * bytSymToSend][n % 120]; //  double the symbol value during template lookup for 4PSK. (skips over odd PSK 8 symbols)
+						else if (bytSymToSend < 4)
+							intSample -= intQAM50bdCarTemplate[intCarIndex][2 * (bytSymToSend - 2)][n % 120]; // subtract 2 from the symbol value before doubling and subtract value of table 
+
+					}
+					else
+					{
+						// For 16QAM the angle is sent differential but the amplitude is sent as is for the symbol...verified 4/20 2018
+
+						bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> (4 * (1 - k))) & 15;
+						bytSymToSend = ((bytLastSym[intCarIndex] & 7) + (bytSym & 7) & 7); // Compute the differential phase to send
+						bytSymToSend = bytSymToSend | (bytSym & 8); // add in the amplitude bit directly from symbol 
+
+						// 4bits/symbol (use table symbol values 0, 1, 2, 3, -0, -1, -2, -3) and modulate amplitude with MSB
+
+						if (bytSymToSend < 4)// This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							intSample += intQAM50bdCarTemplate[intCarIndex][bytSymToSend][n % 120]; // double the symbol value during template lookup for 4PSK. (skips over odd PSK 8 symbols)
+						else if (bytSymToSend < 8)
+							intSample -= intQAM50bdCarTemplate[intCarIndex][(bytSymToSend - 4)][n % 120]; // subtract 4 from the symbol value before doubling and subtract value of table 
+						else if (bytSymToSend < 12)
+							intSample += dblQAMCarRatio * intQAM50bdCarTemplate[intCarIndex][bytSymToSend - 8][n % 120]; // subtract 4 from the symbol value before doubling and subtract value of table         
+						else
+							intSample -= dblQAMCarRatio * intQAM50bdCarTemplate[intCarIndex][bytSymToSend - 12][n % 120]; //  subtract 4 from the symbol value before doubling and subtract value of table 
+					}
+
+					if (n == intSampPerSym - 1)		// Last sample?
+						bytLastSym[intCarIndex] = bytSymToSend;
+
+					intCarIndex += 1;
+					if (intCarIndex == 5)
+						intCarIndex = 6;  // skip over 1500 Hz carrier for multicarrier modes
+				}
+
+				// Done all carriers - send sample
+
+				intSample = SoftClip(intSample * 0.5 * dblCarScalingFactor);
+				ARDOPSampleSink(intSample);
+			}
+
+			// Done all samples for this symbol
+			// now next symbol of byte
+
+		}
+		intDataPtr++;
+	}
+
+	if (Type == PktFrameHeader)
+	{
+		// just sent packet header. Send rest in current mode
+
+		Type = 0;			// Prevent reentry
+
+		strcpy(strMod, &pktMod[pktMode][0]);
+		intDataBytesPerCar = pktDataLen + pktRSLen + 3;
+		intDataPtr = 11;		// Over Header
+		intNumCar = pktCarriers[pktMode];
+
+		switch (intNumCar)
+		{
+		case 1:
+			intCarStartIndex = 4;
+			//			dblCarScalingFactor = 1.0f; // Starting at 1500 Hz  (scaling factors determined emperically to minimize crest factor)  TODO:  needs verification
+			dblCarScalingFactor = 1.2f; // Starting at 1500 Hz  Selected to give < 13% clipped values yielding a PAPR = 1.6 Constellation Quality >98
+		case 2:
+			intCarStartIndex = 3;
+			//			dblCarScalingFactor = 0.53f;
+			if (strcmp(strMod, "16QAM") == 0)
+				dblCarScalingFactor = 0.67f; // Carriers at 1400 and 1600 Selected to give < 2.5% clipped values yielding a PAPR = 2.17, Constellation Quality >92
+			else
+				dblCarScalingFactor = 0.65f; // Carriers at 1400 and 1600 Selected to give < 4% clipped values yielding a PAPR = 2.0, Constellation Quality >95
+			break;
+		case 4:
+			intCarStartIndex = 2;
+			//			dblCarScalingFactor = 0.29f; // Starting at 1200 Hz
+			dblCarScalingFactor = 0.4f;  // Starting at 1200 Hz  Selected to give < 3% clipped values yielding a PAPR = 2.26, Constellation Quality >95
+			break;
+		case 8:
+			intCarStartIndex = 0;
+			//			dblCarScalingFactor = 0.17f; // Starting at 800 Hz
+			if (strcmp(strMod, "16QAM") == 0)
+				dblCarScalingFactor = 0.27f; // Starting at 800 Hz  Selected to give < 1% clipped values yielding a PAPR = 2.64, Constellation Quality >94
+			else
+				dblCarScalingFactor = 0.25f; // Starting at 800 Hz  Selected to give < 2% clipped values yielding a PAPR = 2.5, Constellation Quality >95
+		}
+		goto PktLoopBack;		// Reenter to send rest of variable length packet frame
+	}
+
+	ARDOPFlush(Chan);
+
+	if (intSoftClipCnt > 0)
+		Debugprintf("Soft Clips %d ", intSoftClipCnt);
+
+}
+
+
+
+//	Resends the last frame
+
+void RemodulateLastFrame(int Chan)
+{	
+	int intNumCar, intBaud, intDataLen, intRSLen;
+	UCHAR bytMinQualThresh;
+	BOOL blnOdd;
+
+	char strType[18] = "";
+    char strMod[16] = "";
+
+	if (!FrameInfo(bytEncodedBytes[0], &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytMinQualThresh, strType))
+		return;
+
+	if (strcmp(strMod, "4FSK") == 0)
+	{
+		Mod4FSKDataAndPlay(bytEncodedBytes, EncLen, intCalcLeader, Chan);  // Modulate Data frame 
+		return;
+	}
+
+	if (strcmp(strMod, "OFDM") == 0)
+	{
+		int save = OFDMMode;
+		OFDMMode = LastSentOFDMMode;
+
+		ModOFDMDataAndPlay(bytEncodedBytes, EncLen, intCalcLeader, Chan);  // Modulate Data frame 
+
+		OFDMMode = save;
+
+		return;
+	}
+
+	ModPSKDataAndPlay(bytEncodedBytes, EncLen, intCalcLeader, Chan);  // Modulate Data frame 
+}
+
+// Filter State Variables
+
+static float dblR = (float)0.9995f;	// insures stability (must be < 1.0) (Value .9995 7/8/2013 gives good results)
+static int intN = 120;				//Length of filter 12000/100
+static float dblRn;
+
+static float dblR2;
+static float dblCoef[34] = {0.0f};			// the coefficients
+float dblZin = 0, dblZin_1 = 0, dblZin_2 = 0, dblZComb= 0;  // Used in the comb generator
+
+// The resonators 
+      
+float dblZout_0[34] = {0.0f};	// resonator outputs
+float dblZout_1[34] = {0.0f};	// resonator outputs delayed one sample
+float dblZout_2[34] = {0.0f};	// resonator outputs delayed two samples
+
+int fWidth;				// Filter BandWidth
+int SampleNo;
+int outCount = 0;
+int first, last;		// Filter slots
+int centreSlot;
+
+float largest = 0;
+float smallest = 0;
+
+short Last120[256];		// Now need 240 for 200 Hz filter
+
+int Last120Get = 0;
+int Last120Put = 120;
+
+extern int Number;				// Number waiting to be sent
+
+UCHAR bytPendingSessionID;
+UCHAR bytSessionID = 0x3f;
+BOOL blnARQConnected;
+
+extern unsigned short buffer[2][1200];
+
+unsigned short * DMABuffer;
+
+unsigned short * SendtoCard(unsigned short * buf, int n);
+unsigned short * SoundInit();
+
+// initFilter is called to set up each packet. It selects filter width
+
+void initFilter(int Width, int Centre, int Chan)
+{
+	int i, j;
+	fWidth = Width;
+	centreSlot = Centre / 100;
+	largest = smallest = 0;
+	SampleNo = 0;
+	Number = 0;
+	outCount = 0;
+	memset(Last120, 0, 256);
+
+	DMABuffer = &ARDOPTXBuffer[Chan][0];
+
+//	KeyPTT(TRUE);
+	SoundIsPlaying = TRUE;
+//	StopCapture();
+
+	Last120Get = 0;
+	Last120Put = 120;
+
+	dblRn = powf(dblR, intN);
+	dblR2 = powf(dblR, 2);
+
+	dblZin_2 = dblZin_1 = 0;
+
+	switch (fWidth)
+	{
+	case 200:
+
+		// Used for PSK 200 Hz modulation XMIT filter  
+		// implements 5 50 Hz wide sections centered on 1500 Hz  (~200 Hz wide @ - 30dB centered on 1500 Hz)
+ 
+		SendingHeader200 = TRUE;
+		intN = 240;
+		Last120Put = 240;
+		centreSlot = Centre / 50;
+		first = centreSlot - 3;
+		last = centreSlot + 3;		// 7 filter sections
+		break;
+
+	case 500:
+
+		// implements 7 100 Hz wide sections centered on 1500 Hz  (~500 Hz wide @ - 30dB centered on 1500 Hz)
+
+		intN = 120;
+		first = centreSlot - 3;
+		last = centreSlot + 3;		// 7 filter sections
+		break;
+
+	case 2500:
+		
+		// implements 26 100 Hz wide sections centered on 1500 Hz  (~2000 Hz wide @ - 30dB centered on 1500 Hz)
+
+		intN = 120;
+		first = centreSlot - 13;
+		last = centreSlot + 13;		// 27 filter sections
+		break;
+	
+	default:
+
+		Debugprintf("Invalid Filter Width %d", fWidth);
+	}
+
+
+	for (j = first; j <= last; j++)
+	{
+		dblZout_0[j] = 0;
+		dblZout_1[j] = 0;
+		dblZout_2[j] = 0;
+	}
+
+	// Initialise the coefficients
+
+//	if (dblCoef[last] == 0.0)
+	{
+		for (i = first; i <= last; i++)
+		{
+			double x = 2 * M_PI * i / intN;
+			x = cosf(1);
+
+			dblCoef[i] = 2.0 * dblR * cosf(2 * M_PI * i / intN); // For Frequency = bin i
+		}
+	}
+ }
+
+
+void ARDOPSampleSink(short Sample)
+{
+	//	Filter and send to sound interface
+
+	// This version is passed samples one at a time, as we don't have
+	//	enough RAM in embedded systems to hold a full audio frame
+
+	int intFilLen = intN / 2;
+	int j;
+	float intFilteredSample = 0;			//  Filtered sample
+
+	//	We save the previous intN samples
+	//	The samples are held in a cyclic buffer
+
+	if (SampleNo < intN)
+		dblZin = Sample;
+	else
+		dblZin = Sample - dblRn * Last120[Last120Get];
+
+	if (++Last120Get == (intN + 1))
+		Last120Get = 0;
+
+	// Compute the Comb
+
+	dblZComb = dblZin - dblZin_2 * dblR2;
+	dblZin_2 = dblZin_1;
+	dblZin_1 = dblZin;
+
+	// Now the resonators
+
+	for (j = first; j <= last; j++)
+	{
+		dblZout_0[j] = dblZComb + dblCoef[j] * dblZout_1[j] - dblR2 * dblZout_2[j];
+	
+		if (dblZout_0[j] != dblZout_0[j])
+			j = j;
+		
+		dblZout_2[j] = dblZout_1[j];
+		dblZout_1[j] = dblZout_0[j];
+
+		switch (fWidth)
+		{
+		case 200:
+
+			// scale each by transition coeff and + (Even) or - (Odd) 
+
+			if (SampleNo >= intFilLen)
+			{
+				if (j == first || j == last)
+				{
+					if (SendingHeader200)
+						intFilteredSample -= dblZout_0[j];  // This provides no attenuation to the Frame Type tones at 1350 and 1650
+					else
+						intFilteredSample -= 0.1 * dblZout_0[j]; // This smaller value required to filter down to 200 Hz bandwidth
+				}
+				else if ((j & 1) == 0)
+					intFilteredSample += (int)dblZout_0[j];
+				else
+					intFilteredSample -= (int)dblZout_0[j];
+			}
+
+			break;
+
+		case 500:
+
+			// scale each by transition coeff and + (Even) or - (Odd) 
+			// Resonators 12 and 18 scaled to get best shape and side lobe supression to - 45 dB while keeping BW at 500 Hz @ -26 dB
+			// practical range of scaling .05 to .25
+			// Scaling also accomodates for the filter "gain" of approx 60. 
+
+			if (SampleNo >= intFilLen)
+			{
+				if (j == first || j == last)
+					intFilteredSample += 0.389f * dblZout_0[j];
+				else if ((j & 1) == 0)
+					intFilteredSample += (int)dblZout_0[j];
+				else
+					intFilteredSample -= (int)dblZout_0[j];
+			}
+
+			break;
+
+		case 2500:
+
+			// scale each by transition coeff and + (Even) or - (Odd) 
+			// Resonators 2 and 28 scaled to get best shape and side lobe supression to - 45 dB while keeping BW at 500 Hz @ -26 dB
+			// practical range of scaling .05 to .25
+			// Scaling also accomodates for the filter "gain" of approx 60. 
+
+			if (SampleNo >= intFilLen)
+			{
+				if (j == first || j == last)
+					intFilteredSample += 0.3891f * dblZout_0[j];
+				else if ((j & 1) == 0)	// Even
+					intFilteredSample += (int)dblZout_0[j];
+				else
+					intFilteredSample -= (int)dblZout_0[j];
+			}
+		}
+	}
+
+	if (SampleNo >= intFilLen)
+	{
+		intFilteredSample = intFilteredSample * 0.00833333333f; //  rescales for gain of filter
+		largest = max(largest, intFilteredSample);
+		smallest = min(smallest, intFilteredSample);
+
+		if (intFilteredSample > 32700)  // Hard clip above 32700
+			intFilteredSample = 32700;
+		else if (intFilteredSample < -32700)
+			intFilteredSample = -32700;
+
+#ifdef TEENSY	
+		int work = (short)(intFilteredSample);
+		DMABuffer[Number++] = (work + 32768) >> 4; // 12 bit left justify
+#else
+		DMABuffer[Number++] = (short)intFilteredSample;
+#endif
+		if (Number == ARDOPBufferSize)
+		{
+			// send this buffer to sound interface (shouldn't happen)
+
+			DMABuffer = SendtoCard(DMABuffer, SendSize);
+			Number = 0;
+		}
+	}
+
+	Last120[Last120Put++] = Sample;
+
+	if (Last120Put == (intN + 1))
+		Last120Put = 0;
+
+	SampleNo++;
+}
+
+
+
+extern int dttTimeoutTrip;
+
+extern UCHAR bytSessionID;
+
+
+// Subroutine to make a CW ID Wave File
+
+void sendCWID(char * strID, BOOL CWOnOff, int Chan)
+{
+	// This generates a phase synchronous FSK MORSE keying of strID
+	// FSK used to maintain VOX on some sound cards
+	// Sent at 90% of  max ampllitude
+
+	char strAlphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-/"; 
+
+	//Look up table for strAlphabet...each bit represents one dot time, 3 adjacent dots = 1 dash
+	// one dot spacing between dots or dashes
+
+	int intCW[] = {0x17, 0x1D5, 0x75D, 0x75, 0x1, 0x15D, 
+           0x1DD, 0x55, 0x5, 0x1777, 0x1D7, 0x175,
+           0x77, 0x1D, 0x777, 0x5DD, 0x1DD7, 0x5D, 
+           0x15, 0x7, 0x57, 0x157, 0x177, 0x757, 
+           0x1D77, 0x775, 0x77777, 0x17777, 0x5777, 0x1577,
+           0x557, 0x155, 0x755, 0x1DD5, 0x7775, 0x1DDDD, 0x1D57, 0x1D57};
+
+
+	float dblHiPhaseInc = 2 * M_PI * 1609.375f / 12000; // 1609.375 Hz High tone
+	float dblLoPhaseInc = 2 * M_PI * 1390.625f / 12000; // 1390.625  low tone
+	float dblHiPhase = 0;
+ 	float dblLoPhase = 0;
+ 	int  intDotSampCnt = 768;  // about 12 WPM or so (should be a multiple of 256
+	short intDot[768];
+	short intSpace[768];
+	int i, j, k;
+	int intAmp = 26000;	   // Selected to have some margin in calculations with 16 bit values (< 32767) this must apply to all filters as well. 
+	char * index;
+	int intMask;
+	int idoffset;
+
+    strlop(strID, '-');		// Remove any SSID    
+
+	// Generate the dot samples (high tone) and space samples (low tone) 
+
+	for (i = 0; i < intDotSampCnt; i++)
+	{
+		if (CWOnOff)
+			intSpace[i] = 0;
+		else
+			intSpace[i] = sin(dblLoPhase) * 0.9 * intAmp;
+
+		intDot[i] = sin(dblHiPhase) * 0.9 * intAmp;
+
+		dblHiPhase += dblHiPhaseInc;
+		if (dblHiPhase > 2 * M_PI)
+			dblHiPhase -= 2 * M_PI;
+		dblLoPhase += dblLoPhaseInc;
+		if (dblLoPhase > 2 * M_PI)
+			dblLoPhase -= 2 * M_PI;
+	}
+	
+	initFilter(500,1500, Chan);
+   
+	//Generate leader for VOX 6 dots long
+
+	for (k = 6; k >0; k--)
+		for (i = 0; i < intDotSampCnt; i++)
+			ARDOPSampleSink(intSpace[i]);
+
+	for (j = 0; j < strlen(strID); j++)
+	{
+		index = strchr(strAlphabet, strID[j]);
+		if (index)
+			idoffset = index - &strAlphabet[0];
+		else
+			idoffset = 0;
+
+		intMask = 0x40000000;
+
+		if (index == NULL)
+		{
+			// process this as a space adding 6 dots worth of space to the wave file
+
+			for (k = 6; k >0; k--)
+				for (i = 0; i < intDotSampCnt; i++)
+					ARDOPSampleSink(intSpace[i]);
+		}
+		else
+		{
+		while (intMask > 0) //  search for the first non 0 bit
+			if (intMask & intCW[idoffset])
+				break;	// intMask is pointing to the first non 0 entry
+			else
+				intMask >>= 1;	//  Right shift mask
+				
+		while (intMask > 0) //  search for the first non 0 bit
+		{
+			if (intMask & intCW[idoffset])
+				for (i = 0; i < intDotSampCnt; i++)
+					ARDOPSampleSink(intDot[i]);
+			else
+				for (i = 0; i < intDotSampCnt; i++)
+					ARDOPSampleSink(intSpace[i]);
+	
+			intMask >>= 1;	//  Right shift mask
+		}
+		}
+			// add 2 dot spaces for inter letter spacing
+			for (k = 4; k >0; k--)
+				for (i = 0; i < intDotSampCnt; i++)
+					ARDOPSampleSink(intSpace[i]);
+	}
+	
+	//add 3 spaces for the end tail
+	
+//	for (k = 6; k >0; k--)
+//		for (i = 0; i < intDotSampCnt; i++)
+//			ARDOPSampleSink(intSpace[i]);
+
+	ARDOPTXPtr[Chan] = 0;
+	ARDOPTXLen[Chan] = Number;
+	Number = 0;
+}
+
+
diff --git a/QtSoundModem-HPLaptop.vcxproj b/QtSoundModem-HPLaptop.vcxproj
new file mode 100644
index 0000000..f6aadc9
--- /dev/null
+++ b/QtSoundModem-HPLaptop.vcxproj
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4EDE958E-D0AC-37B4-81F7-78313A262DCD}</ProjectGuid>
+    <RootNamespace>QtSoundModem</RootNamespace>
+    <Keyword>QtVS_v304</Keyword>
+    <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion>
+    <QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <PlatformToolset>v141</PlatformToolset>
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>QtSoundModem</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <PlatformToolset>v141</PlatformToolset>
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>QtSoundModem</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
+    <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
+  </Target>
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+    <Import Project="$(QtMsBuild)\qt_defaults.props" />
+  </ImportGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Win32\Debug\</OutDir>
+    <IntDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Intermed\Win32\Debug\</IntDir>
+    <TargetName>QtSoundModem</TargetName>
+    <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Win32\Release\</OutDir>
+    <IntDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Intermed\Win32\Release\</IntDir>
+    <TargetName>QtSoundModem</TargetName>
+    <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <QtInstall>5.14.2_msvc2017</QtInstall>
+    <QtModules>core;network;gui;widgets;serialport</QtModules>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <QtInstall>5.14.2_msvc2017</QtInstall>
+    <QtModules>core;network;gui;widgets;serialport</QtModules>
+  </PropertyGroup>
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
+    <Import Project="$(QtMsBuild)\qt.props" />
+  </ImportGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>rsid;.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Windows</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <QtMoc>
+      <CompilerFlavor>msvc</CompilerFlavor>
+      <Include>./$(Configuration)/moc_predefs.h</Include>
+      <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
+      <DynamicSource>output</DynamicSource>
+      <QtMocDir>$(IntDir)</QtMocDir>
+      <QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
+    </QtMoc>
+    <QtRcc>
+      <InitFuncName>QtSoundModem</InitFuncName>
+      <Compression>default</Compression>
+      <ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
+      <QtRccDir>$(IntDir)</QtRccDir>
+      <QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
+    </QtRcc>
+    <QtUic>
+      <ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
+      <QtUicDir>$(IntDir)</QtUicDir>
+      <QtUicFileName>ui_%(Filename).h</QtUicFileName>
+    </QtUic>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;debug;/include;rsid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Windows</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <QtMoc>
+      <CompilerFlavor>msvc</CompilerFlavor>
+      <Include>./$(Configuration)/moc_predefs.h</Include>
+      <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
+      <DynamicSource>output</DynamicSource>
+      <QtMocDir>$(IntDir)</QtMocDir>
+      <QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
+    </QtMoc>
+    <QtRcc>
+      <InitFuncName>QtSoundModem</InitFuncName>
+      <Compression>default</Compression>
+      <ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
+      <QtRccDir>$(IntDir)</QtRccDir>
+      <QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
+    </QtRcc>
+    <QtUic>
+      <ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
+      <QtUicDir>$(IntDir)</QtUicDir>
+      <QtUicFileName>ui_%(Filename).h</QtUicFileName>
+    </QtUic>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ARDOPC.c" />
+    <ClCompile Include="BusyDetect.c" />
+    <ClCompile Include="Config.cpp" />
+    <ClCompile Include="hid.c" />
+    <ClCompile Include="Modulate.c" />
+    <ClCompile Include="QtSoundModem.cpp" />
+    <ClCompile Include="rsid.c" />
+    <ClCompile Include="RSUnit.c" />
+    <ClCompile Include="SMMain.c" />
+    <ClCompile Include="ShowFilter.cpp" />
+    <ClCompile Include="SoundInput.c" />
+    <ClCompile Include="UZ7HOUtils.c" />
+    <ClCompile Include="ardopSampleArrays.c" />
+    <ClCompile Include="ax25.c" />
+    <ClCompile Include="ax25_agw.c" />
+    <ClCompile Include="ax25_demod.c" />
+    <ClCompile Include="ax25_fec.c" />
+    <ClCompile Include="ax25_l2.c" />
+    <ClCompile Include="ax25_mod.c" />
+    <ClCompile Include="berlekamp.c" />
+    <ClCompile Include="galois.c" />
+    <ClCompile Include="kiss_mode.c" />
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="ofdm.c" />
+    <ClCompile Include="pktARDOP.c" />
+    <ClCompile Include="rs.c" />
+    <ClCompile Include="sm_main.c" />
+    <ClCompile Include="tcpCode.cpp" />
+    <ClCompile Include="Waveout.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <QtMoc Include="QtSoundModem.h">
+    </QtMoc>
+    <ClInclude Include="UZ7HOStuff.h" />
+    <QtMoc Include="tcpCode.h">
+    </QtMoc>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="debug\moc_predefs.h.cbt">
+      <FileType>Document</FileType>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;debug\moc_predefs.h</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generate moc_predefs.h</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\moc_predefs.h;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="release\moc_predefs.h.cbt">
+      <FileType>Document</FileType>
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;release\moc_predefs.h</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generate moc_predefs.h</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\moc_predefs.h;%(Outputs)</Outputs>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <QtUic Include="ModemDialog.ui">
+    </QtUic>
+    <QtUic Include="QtSoundModem.ui">
+    </QtUic>
+    <QtUic Include="calibrateDialog.ui">
+    </QtUic>
+    <QtUic Include="devicesDialog.ui">
+    </QtUic>
+    <QtUic Include="filterWindow.ui">
+    </QtUic>
+  </ItemGroup>
+  <ItemGroup>
+    <QtRcc Include="QtSoundModem.qrc">
+    </QtRcc>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include=".\QtSoundModem_resource.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="QtSoundModem.ico" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
+    <Import Project="$(QtMsBuild)\qt.targets" />
+  </ImportGroup>
+  <ImportGroup Label="ExtensionTargets" />
+</Project>
\ No newline at end of file
diff --git a/QtSoundModem.aps b/QtSoundModem.aps
new file mode 100644
index 0000000000000000000000000000000000000000..a6c5b06aa85b73233e80360de99d9950c01f23b7
GIT binary patch
literal 3972
zcmdT{&5sjh82=4hK34fC#285Y7?8xpxXW}|S0NhdPG@1H+gaM_0;aKGTXq+BThew}
z6o`o-#sddqxOnqVFoqLRPlTx9;L#(|i#Io(IBXby&pT~rro%3n;K8?fr|<LeKF{+$
zU-J$C=$xMCPc9?FCbXaPI8I@L|DLCH=!0823(Rc;%p;{@tJZ9lE;Q!q%cTidHy0X9
z)l$0Bp1)KpG?to`TIr-)I@#vBUY%-GYl{(Jq*)Ppe{)9l{iM_w2=wh$n7wG$T1xK7
z9B7oCvCFpU<Wfi(DQpDF>FGi_XPtJ-d8^<Q^QKjvNoR`|>7#fyOgEjWsdO&WA&(gb
z1#FEn<lMZI?d>-V@XUdN!kH<nyIr(z2f9Ws&(~?EGEti;lxM7b!FF<GJ2&Ydg<a6>
zj9D(YY1cL}G@LqsVQ6ZvJpW)+{4vD8s9%0ogs@*cZ#&~tqo-PEU<q|pvB*^wHU5ua
z9u-2s26`(h>z9};mwvNzX118IFsi8gDLafk^hj)~hfR(1eElbWDrquC>pd?urUD&=
z{i(?QK*<*Qz^<5|4iW<x$siX^96<?1wCLj|pCw$NkLT$7Wv(aSLWhY36^|-0X~v+<
zNL(U+L1CN3)JQo=UU{}Vc!}N=IsE9AD7{Ac5?6o62(_^8l>TYr8kptt93!n`k{T8i
zzm6eX##<Q20ZKnbyvS|Px)%9P5N<20Q!q%kNv&|_lG0jY01f7i%oN__ZybjdTq4IJ
z`InVE-!k7G@lSy>nqR{`ziki(j&LS1zrr9BD-1HD9+^t9_(QZr^^U~!CfO&P6Fd$n
z{mDtBMtp)SW;$nDS!O=j>`Z#X$-6wd0`iudKZ7wJu#e@OyoEP>=!{jMixgMRp}W+|
z%sK^&5m3N!D?5$D{yN;Qh|$=y*6t{DSwMV5Ka0@W1^e4oA3fgh$Pns8!^%O#J<mDD
z>B7QkK5gWfb6IA5h8TGt_z?~Fp;zYXm4&5hP2bmTe*3mPL*9YM$`TINSE$#^M)vB*
z*g)U*?F+pdFhsFB>7JM5jPni+$O&hdw`D#p<hiop@T6sR-bt=y{E+zTAtZJjuc;@n
zoB!{2)(NJLPwgQ1_XXXfQC^$1DYZA-t4*o3^Q=Ums(1|Mh{4=2c-9a31YXA`?lsA?
zh>NW3IzFaNQsFhF;23vIV46Jx-0>oLyLF#YwO>&>FRFgi;BFZvJuyv*O=5NapXalP
z_nEB6dCFH+SMd8%wExK7Q4EH3%ut7Pym?CTWp{gp{Ev0s8WY&bJ#yBz;;+;Gh0rP1
z>USgLzRW4(GaRIhETLJoTRd`+z7UVjvJ1A!6URyCGuicYT4J!^5A)3`E15d`u$)gi
z*F2#UN}_nULU~L0DB=~d;XQQ@r=wFMDd*_=TOdCwPja3kygX=(g7oYvwaFVH9M`pE
zh#li92GPC!kqF0OR8<aGt&)c`w6oc>I><ojn+bBbq>2|>Jli>16~uOM%eRR?nWs9r
zJa3>^N6FB;Q0^!~Kgua>w0|T!h{UF?xc>Qd+_<}n7bX{Q=k^`kyL%7S@2+C&_ziq7
z>rdKPeYlG2Kd$1|@2f~`$l~T#H<bkMKOZY0(?wYb#1793lf@k?#iHdFEi2<@G8uvI
z2OAOs<I5gmqrih-<LukbD_5FVuXX4HXWzLd!%*;1@!_u=z!qP=(x7w@?zhL&_U!D8
zJxQ^5<)tpXljd@0U09LHKtp9%J~@!6xc{e*2fz-7X7hc%YSx>=!?}a}FR!wFv#Ebd
zmp<{SpF_6}{QEY+$emEKUxThERTW6pXn3IY-%W__jP6RlwWLnh`__{0qgxT4`1g_2
z;XUdL<ix)f<Qrf&6$d==ZveUf9_70;;ECUV<*s*`r5^Ca?|On+iSWelWpdAOH~qVN
zhTImuS$9wTJ|TCB-`3qjV>!Zi5V=1jHm`kukO*gaPg$!kO1`-KUhICKDfywk`41!Z
B^o#%i

literal 0
HcmV?d00001

diff --git a/QtSoundModem.cpp b/QtSoundModem.cpp
new file mode 100644
index 0000000..0b563d7
--- /dev/null
+++ b/QtSoundModem.cpp
@@ -0,0 +1,2858 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+// UZ7HO Soundmodem Port
+
+// Not Working 4psk100 FEC 
+
+#include "QtSoundModem.h"
+#include <qheaderview.h>
+//#include <QDebug>
+#include <QHostAddress>
+#include <QAbstractSocket>
+#include <QSettings>
+#include <QPainter>
+#include <QtSerialPort/QSerialPort>
+#include <QtSerialPort/QSerialPortInfo>
+#include <QMessageBox>
+#include <QTimer>
+#include <qevent.h>
+#include <QStandardItemModel>
+#include <QScrollBar>
+
+#include "UZ7HOStuff.h"
+
+
+QImage *Constellation;
+QImage *Waterfall[4] = { 0,0,0,0 };
+QImage *Header[4];
+QLabel *DCDLabel[4];
+QLineEdit *chanOffsetLabel[4];
+QImage *DCDLed[4];
+
+QImage *RXLevel;
+
+QLabel *WaterfallCopy[2];
+QLabel *HeaderCopy[2];
+
+QTextEdit * monWindowCopy;
+
+extern workerThread *t;
+extern QtSoundModem * w;
+
+QList<QSerialPortInfo> Ports = QSerialPortInfo::availablePorts();
+
+void saveSettings();
+void getSettings();
+extern "C" void CloseSound();
+extern "C" void GetSoundDevices();
+extern "C" char modes_name[modes_count][20];
+extern "C" int speed[5];
+extern "C" int KISSPort;
+extern "C" short rx_freq[5];
+
+extern "C" int CaptureCount;
+extern "C" int PlaybackCount;
+
+extern "C" int CaptureIndex;		// Card number
+extern "C" int PlayBackIndex;
+
+extern "C" char CaptureNames[16][256];
+extern "C" char PlaybackNames[16][256];
+
+extern "C" int SoundMode;
+extern "C" int multiCore;
+
+extern "C" int refreshModems;
+
+extern "C" int pnt_change[5];
+extern "C" int needRSID[4];
+
+extern "C" int needSetOffset[4];
+
+extern "C" float MagOut[4096];
+extern "C" float MaxMagOut;
+extern "C" int MaxMagIndex;
+
+extern "C"
+{ 
+	int InitSound(BOOL Report);
+	void soundMain();
+	void MainLoop();
+	void modulator(UCHAR snd_ch, int buf_size);
+	void SampleSink(int LR, short Sample);
+	void doCalib(int Port, int Act);
+	int Freq_Change(int Chan, int Freq);
+	void set_speed(int snd_ch, int Modem);
+	void init_speed(int snd_ch);
+	void wf_pointer(int snd_ch);
+	void FourierTransform(int NumSamples, short * RealIn, float * RealOut, float * ImagOut, int InverseTransform);
+	void dofft(short * in, float * outr, float * outi);
+	void init_raduga();
+	void wf_Scale(int Chan);
+	void AGW_Report_Modem_Change(int port);
+	char * strlop(char * buf, char delim);
+	void sendRSID(int Chan, int dropTX);
+	void RSIDinitfft();
+	void il2p_init(int il2p_debug);
+}
+
+void make_graph_buf(float * buf, short tap, QPainter * bitmap);
+
+int ModemA = 2;
+int ModemB = 2;
+int ModemC = 2;
+int ModemD = 2;
+int FreqA = 1500;
+int FreqB = 1500;
+int FreqC = 1500;
+int FreqD = 1500;
+int DCD = 50;
+
+char CWIDCall[128] = "";
+int CWIDInterval = 0;
+int CWIDLeft = 0;
+int CWIDRight = 0;
+int CWIDType = 1;			// on/off
+
+extern "C" { int RSID_SABM[4]; }
+extern "C" { int RSID_UI[4]; }
+extern "C" { int RSID_SetModem[4]; }
+
+int Closing = FALSE;				// Set to stop background thread
+
+QRgb white = qRgb(255, 255, 255);
+QRgb black = qRgb(0, 0, 0);
+
+QRgb green = qRgb(0, 255, 0);
+QRgb red = qRgb(255, 0, 0);
+QRgb yellow = qRgb(255, 255, 0);
+QRgb cyan = qRgb(0, 255, 255);
+
+// Indexed colour list from ARDOPC
+
+#define WHITE 0
+#define Tomato 1
+#define Gold 2
+#define Lime 3
+#define Yellow 4
+#define Orange 5
+#define Khaki 6
+#define Cyan 7
+#define DeepSkyBlue 8
+#define RoyalBlue 9
+#define Navy 10
+#define Black 11
+#define Goldenrod 12
+#define Fuchsia 13
+
+QRgb vbColours[16] = { qRgb(255, 255, 255), qRgb(255, 99, 71), qRgb(255, 215, 0), qRgb(0, 255, 0),
+						qRgb(255, 255, 0), qRgb(255, 165, 0), qRgb(240, 240, 140), qRgb(0, 255, 255),
+						qRgb(0, 191, 255), qRgb(65, 105, 225), qRgb(0, 0, 128), qRgb(0, 0, 0),
+						qRgb(218, 165, 32), qRgb(255, 0, 255) };
+
+unsigned char  WaterfallLines[2][80][4096] = { 0 };
+int NextWaterfallLine[2] = { 0 };
+
+unsigned int LastLevel = 255;
+unsigned int LastBusy = 255;
+
+extern "C" int UDPClientPort;
+extern "C" int UDPServerPort;
+extern "C" int TXPort;
+extern char UDPHost[64];
+
+QTimer *cwidtimer;
+
+QSystemTrayIcon * trayIcon = nullptr;
+
+int MintoTray = 1;
+
+int RSID_WF = 0;				// Set to use RSID FFT for Waterfall. 
+
+extern "C" void WriteDebugLog(char * Mess)
+{
+	qDebug() << Mess;
+}
+
+void QtSoundModem::doupdateDCD(int Chan, int State)
+{
+	DCDLabel[Chan]->setVisible(State);
+}
+
+extern "C" char * frame_monitor(string * frame, char * code, bool tx_stat);
+extern "C" char * ShortDateTime();
+
+extern "C" void mon_rsid(int snd_ch, char * RSID)
+{
+	int Len;
+	char * Msg = (char *)malloc(1024);		// Cant pass local variable via signal/slot
+
+	sprintf(Msg, "%d:%s [%s%c]", snd_ch + 1, RSID, ShortDateTime(), 'R');
+
+	Len = strlen(Msg);
+
+	if (Msg[Len - 1] != '\r')
+	{
+		Msg[Len++] = '\r';
+		Msg[Len] = 0;
+	}
+
+	emit t->sendtoTrace(Msg, 0);
+}
+
+extern "C" void put_frame(int snd_ch, string * frame, char * code, int  tx, int excluded)
+{
+	UNUSED(excluded);
+
+	int Len;
+	char * Msg = (char *)malloc(1024);		// Cant pass local variable via signal/slot
+
+	if (strcmp(code, "NON-AX25") == 0)
+		sprintf(Msg, "%d: <NON-AX25 frame Len = %d [%s%c]\r", snd_ch, frame->Length, ShortDateTime(), 'R');
+	else
+		sprintf(Msg, "%d:%s", snd_ch + 1, frame_monitor(frame, code, tx));
+
+	Len = strlen(Msg);
+
+	if (Msg[Len - 1] != '\r')
+	{
+		Msg[Len++] = '\r';
+		Msg[Len] = 0;
+	}
+
+	emit t->sendtoTrace(Msg, tx);
+}
+
+extern "C" void updateDCD(int Chan, bool State)
+{
+	emit t->updateDCD(Chan, State);
+}
+
+bool QtSoundModem::eventFilter(QObject* obj, QEvent *evt)
+{
+	UNUSED(obj);
+
+	if (evt->type() == QEvent::Resize)
+	{
+		return QWidget::event(evt);
+	}
+
+	if (evt->type() == QEvent::WindowStateChange)
+	{
+		if (windowState().testFlag(Qt::WindowMinimized) == true)
+			w_state = WIN_MINIMIZED;
+		else
+			w_state = WIN_MAXIMIZED;
+	}
+//	if (evt->type() == QGuiApplication::applicationStateChanged) - this is a sigma;
+//	{
+//		qDebug() << "App State changed =" << evt->type() << endl;
+//	}
+
+	return QWidget::event(evt);
+}
+
+void QtSoundModem::resizeEvent(QResizeEvent* event)
+{
+	QMainWindow::resizeEvent(event);
+
+	QRect r = geometry();
+
+	int A, B, C, W;
+	int modemBoxHeight = 30;
+
+	ui.modeB->setVisible(soundChannel[1]);
+	ui.centerB->setVisible(soundChannel[1]);
+	ui.labelB->setVisible(soundChannel[1]);
+	DCDLabel[1]->setVisible(soundChannel[1]);
+	ui.RXOffsetB->setVisible(soundChannel[1]);
+
+	ui.modeC->setVisible(soundChannel[2]);
+	ui.centerC->setVisible(soundChannel[2]);
+	ui.labelC->setVisible(soundChannel[2]);
+	DCDLabel[2]->setVisible(soundChannel[2]);
+	ui.RXOffsetC->setVisible(soundChannel[2]);
+
+	ui.modeD->setVisible(soundChannel[3]);
+	ui.centerD->setVisible(soundChannel[3]);
+	ui.labelD->setVisible(soundChannel[3]);
+	DCDLabel[3]->setVisible(soundChannel[3]);
+	ui.RXOffsetD->setVisible(soundChannel[3]);
+
+	if (soundChannel[2] || soundChannel[3])
+		modemBoxHeight = 60;
+
+
+	A = r.height() - 25;   // No waterfalls
+
+	if (UsingBothChannels && Secondwaterfall)
+	{
+		// Two waterfalls
+
+		ui.WaterfallA->setVisible(1);
+		ui.HeaderA->setVisible(1);
+		ui.WaterfallB->setVisible(1);
+		ui.HeaderB->setVisible(1);
+
+		A = r.height() - 258;   // Top of Waterfall A
+		B = A + 115;			// Top of Waterfall B
+	}
+	else
+	{
+		// One waterfall
+
+		// Could be Left or Right
+
+		if (Firstwaterfall)
+		{
+			if (soundChannel[0] == RIGHT)
+			{
+				ui.WaterfallA->setVisible(0);
+				ui.HeaderA->setVisible(0);
+				ui.WaterfallB->setVisible(1);
+				ui.HeaderB->setVisible(1);
+			}
+			else
+			{
+				ui.WaterfallA->setVisible(1);
+				ui.HeaderA->setVisible(1);
+				ui.WaterfallB->setVisible(0);
+				ui.HeaderB->setVisible(0);
+			}
+
+			A = r.height() - 145;   // Top of Waterfall A
+		}
+		else
+			A = r.height() - 25;   // Top of Waterfall A
+	}
+
+	C = A - 150;			// Bottom of Monitor, Top of connection list
+	W = r.width();
+
+	// Calc Positions of Waterfalls
+
+	ui.monWindow->setGeometry(QRect(0, modemBoxHeight, W, C - (modemBoxHeight + 26)));
+	sessionTable->setGeometry(QRect(0, C, W, 175));
+
+	if (UsingBothChannels)
+	{
+		ui.HeaderA->setGeometry(QRect(0, A, W, 35));
+		ui.WaterfallA->setGeometry(QRect(0, A + 35, W, 80));
+		ui.HeaderB->setGeometry(QRect(0, B, W, 35));
+		ui.WaterfallB->setGeometry(QRect(0, B + 35, W, 80));
+	}
+	else
+	{
+		if (soundChannel[0] == RIGHT)
+		{
+			ui.HeaderB->setGeometry(QRect(0, A, W, 35));
+			ui.WaterfallB->setGeometry(QRect(0, A + 35, W, 80));
+		}
+		else
+		{
+			ui.HeaderA->setGeometry(QRect(0, A, W, 35));
+			ui.WaterfallA->setGeometry(QRect(0, A + 35, W, 80));
+		}
+	}
+}
+
+QAction * setupMenuLine(QMenu * Menu, char * Label, QObject * parent, int State)
+{
+	QAction * Act = new QAction(Label, parent);
+	Menu->addAction(Act);
+
+	Act->setCheckable(true);
+	if (State)
+		Act->setChecked(true);
+
+	parent->connect(Act, SIGNAL(triggered()), parent, SLOT(menuChecked()));
+
+	return Act;
+}
+
+void QtSoundModem::menuChecked()
+{
+	QAction * Act = static_cast<QAction*>(QObject::sender());
+
+	int state = Act->isChecked();
+
+	if (Act == actWaterfall1)
+	{
+		int oldstate = Firstwaterfall;
+		Firstwaterfall = state;
+
+		if (state != oldstate)
+			initWaterfall(0, state);
+
+	}
+	else if (Act == actWaterfall2)
+	{
+		int oldstate = Secondwaterfall;
+		Secondwaterfall = state;
+
+		if (state != oldstate)
+			initWaterfall(1, state);
+
+	}
+	saveSettings();
+}
+
+void QtSoundModem::initWaterfall(int chan, int state)
+{
+	if (state == 1)
+	{
+		if (chan == 0)
+		{
+			ui.WaterfallA = new QLabel(ui.centralWidget);
+			WaterfallCopy[0] = ui.WaterfallA;
+		}
+		else
+		{
+			ui.WaterfallB = new QLabel(ui.centralWidget);
+			WaterfallCopy[1] = ui.WaterfallB;
+		}
+		Waterfall[chan] = new QImage(1024, 80, QImage::Format_RGB32);
+		Waterfall[chan]->fill(black);
+
+	}
+	else
+	{
+		delete(Waterfall[chan]);
+		Waterfall[chan] = 0;
+	}
+
+	QSize Size(800, 602);						// Not actually used, but Event constructor needs it
+	QResizeEvent *event = new QResizeEvent(Size, Size);
+	QApplication::sendEvent(this, event);
+}
+
+// Local copies
+
+QLabel *RXOffsetLabel;
+QSlider *RXOffset;
+
+QtSoundModem::QtSoundModem(QWidget *parent) : QMainWindow(parent)
+{
+	ui.setupUi(this);
+
+	QSettings mysettings("QtSoundModem.ini", QSettings::IniFormat);
+
+	if (MintoTray)
+	{
+		char popUp[256];
+		sprintf(popUp, "QtSoundModem %d %d", AGWPort, KISSPort);
+		trayIcon = new QSystemTrayIcon(QIcon(":/QtSoundModem/soundmodem.ico"), this);
+		trayIcon->setToolTip(popUp);
+		trayIcon->show();
+
+		connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(TrayActivated(QSystemTrayIcon::ActivationReason)));
+	}
+
+
+	restoreGeometry(mysettings.value("geometry").toByteArray());
+	restoreState(mysettings.value("windowState").toByteArray());
+
+	sessionTable = new QTableWidget(this);
+
+	sessionTable->verticalHeader()->setVisible(FALSE);
+	sessionTable->verticalHeader()->setDefaultSectionSize(20);
+	sessionTable->horizontalHeader()->setDefaultSectionSize(68);
+	sessionTable->setRowCount(1);
+	sessionTable->setColumnCount(12);
+	m_TableHeader << "MyCall" << "DestCall" << "Status" << "Sent pkts" << "Sent Bytes" << "Rcvd pkts" << "Rcvd bytes" << "Rcvd FC" << "FEC corr" << "CPS TX" << "CPS RX" << "Direction";
+
+	sessionTable->setStyleSheet("QHeaderView::section { background-color:rgb(224, 224, 224) }");
+
+	sessionTable->setHorizontalHeaderLabels(m_TableHeader);
+	sessionTable->setColumnWidth(0, 80);
+	sessionTable->setColumnWidth(1, 80);
+	sessionTable->setColumnWidth(4, 76);
+	sessionTable->setColumnWidth(5, 76);
+	sessionTable->setColumnWidth(6, 80);
+	sessionTable->setColumnWidth(11, 72);
+
+	for (int i = 0; i < modes_count; i++)
+	{
+		ui.modeA->addItem(modes_name[i]);
+		ui.modeB->addItem(modes_name[i]);
+		ui.modeC->addItem(modes_name[i]);
+		ui.modeD->addItem(modes_name[i]);
+	}
+
+	// Set up Menus
+
+	setupMenu = ui.menuBar->addMenu(tr("Settings"));
+
+	actDevices = new QAction("Setup Devices", this);
+	setupMenu->addAction(actDevices);
+
+	connect(actDevices, SIGNAL(triggered()), this, SLOT(clickedSlot()));
+	actDevices->setObjectName("actDevices");
+	actModems = new QAction("Setup Modems", this);
+	actModems->setObjectName("actModems");
+	setupMenu->addAction(actModems);
+
+	connect(actModems, SIGNAL(triggered()), this, SLOT(clickedSlot()));
+
+	actMintoTray = setupMenu->addAction("Minimize to Tray", this, SLOT(MinimizetoTray()));
+	actMintoTray->setCheckable(1);
+	actMintoTray->setChecked(MintoTray);
+
+	viewMenu = ui.menuBar->addMenu(tr("&View"));
+
+	actWaterfall1 = setupMenuLine(viewMenu, (char *)"First waterfall", this, Firstwaterfall);
+	actWaterfall2 = setupMenuLine(viewMenu, (char *)"Second Waterfall", this, Secondwaterfall);
+
+	actCalib = ui.menuBar->addAction("&Calibration");
+	connect(actCalib, SIGNAL(triggered()), this, SLOT(doCalibrate()));
+
+	actRestartWF = ui.menuBar->addAction("Restart Waterfall");
+	connect(actRestartWF, SIGNAL(triggered()), this, SLOT(doRestartWF()));
+
+	actAbout = ui.menuBar->addAction("&About");
+	connect(actAbout, SIGNAL(triggered()), this, SLOT(doAbout()));
+
+	//	Constellation = new QImage(91, 91, QImage::Format_RGB32);
+
+	Header[0] = new QImage(1024, 35, QImage::Format_RGB32);
+	Header[1] = new QImage(1024, 35, QImage::Format_RGB32);
+	RXLevel = new QImage(150, 10, QImage::Format_RGB32);
+
+	DCDLabel[0] = new QLabel(this);
+	DCDLabel[0]->setObjectName(QString::fromUtf8("DCDLedA"));
+	DCDLabel[0]->setGeometry(QRect(280, 31, 12, 12));
+	DCDLabel[0]->setVisible(TRUE);
+
+	DCDLabel[1] = new QLabel(this);
+	DCDLabel[1]->setObjectName(QString::fromUtf8("DCDLedB"));
+	DCDLabel[1]->setGeometry(QRect(575, 31, 12, 12));
+	DCDLabel[1]->setVisible(TRUE);
+
+	DCDLabel[2] = new QLabel(this);
+	DCDLabel[2]->setObjectName(QString::fromUtf8("DCDLedC"));
+	DCDLabel[2]->setGeometry(QRect(280, 61, 12, 12));
+	DCDLabel[2]->setVisible(FALSE);
+
+	DCDLabel[3] = new QLabel(this);
+	DCDLabel[3]->setObjectName(QString::fromUtf8("DCDLedD"));
+	DCDLabel[3]->setGeometry(QRect(575, 61, 12, 12));
+	DCDLabel[3]->setVisible(FALSE);
+	
+	DCDLed[0] = new QImage(12, 12, QImage::Format_RGB32);
+	DCDLed[1] = new QImage(12, 12, QImage::Format_RGB32);
+	DCDLed[2] = new QImage(12, 12, QImage::Format_RGB32);
+	DCDLed[3] = new QImage(12, 12, QImage::Format_RGB32);
+
+	DCDLed[0]->fill(red);
+	DCDLed[1]->fill(red);
+	DCDLed[2]->fill(red);
+	DCDLed[3]->fill(red);
+
+	DCDLabel[0]->setPixmap(QPixmap::fromImage(*DCDLed[0]));
+	DCDLabel[1]->setPixmap(QPixmap::fromImage(*DCDLed[1]));
+	DCDLabel[2]->setPixmap(QPixmap::fromImage(*DCDLed[2]));
+	DCDLabel[3]->setPixmap(QPixmap::fromImage(*DCDLed[3]));
+
+	chanOffsetLabel[0] = ui.RXOffsetA;
+	chanOffsetLabel[1] = ui.RXOffsetB;
+	chanOffsetLabel[2] = ui.RXOffsetC;
+	chanOffsetLabel[3] = ui.RXOffsetD;
+
+
+	//	Waterfall[0]->setColorCount(16);
+	//	Waterfall[1]->setColorCount(16);
+
+
+	//	for (i = 0; i < 16; i++)
+	//	{
+	//	Waterfall[0]->setColor(i, vbColours[i]);
+	//		Waterfall[1]->setColor(i, vbColours[i]);
+	//	}
+
+	WaterfallCopy[0] = ui.WaterfallA;
+	WaterfallCopy[1] = ui.WaterfallB;
+
+	initWaterfall(0, 1);
+	initWaterfall(1, 1);
+
+	Header[0]->fill(black);
+	Header[1]->fill(black);
+
+	HeaderCopy[0] = ui.HeaderA;
+	HeaderCopy[1] = ui.HeaderB;
+	monWindowCopy = ui.monWindow;
+
+	ui.monWindow->document()->setMaximumBlockCount(10000);
+
+//	connect(ui.monWindow, SIGNAL(selectionChanged()), this, SLOT(onTEselectionChanged()));
+
+	ui.HeaderA->setPixmap(QPixmap::fromImage(*Header[0]));
+	ui.HeaderB->setPixmap(QPixmap::fromImage(*Header[1]));
+
+	wf_pointer(soundChannel[0]);
+	wf_pointer(soundChannel[1]);
+	wf_Scale(0);
+	wf_Scale(1);
+
+	//	RefreshLevel(0);
+	//	RXLevel->setPixmap(QPixmap::fromImage(*RXLevel));
+
+	connect(ui.modeA, SIGNAL(currentIndexChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.modeB, SIGNAL(currentIndexChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.modeC, SIGNAL(currentIndexChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.modeD, SIGNAL(currentIndexChanged(int)), this, SLOT(clickedSlotI(int)));
+
+	ui.modeA->setCurrentIndex(speed[0]);
+	ui.modeB->setCurrentIndex(speed[1]);
+	ui.modeC->setCurrentIndex(speed[2]);
+	ui.modeD->setCurrentIndex(speed[3]);
+
+	ModemA = ui.modeA->currentIndex();
+
+	ui.centerA->setValue(rx_freq[0]);
+	ui.centerB->setValue(rx_freq[1]);
+	ui.centerC->setValue(rx_freq[2]);
+	ui.centerD->setValue(rx_freq[3]);
+
+	connect(ui.centerA, SIGNAL(valueChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.centerB, SIGNAL(valueChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.centerC, SIGNAL(valueChanged(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.centerD, SIGNAL(valueChanged(int)), this, SLOT(clickedSlotI(int)));
+
+	ui.DCDSlider->setValue(dcd_threshold);
+
+
+	char valChar[32];
+	sprintf(valChar, "RX Offset %d", rxOffset);
+	ui.RXOffsetLabel->setText(valChar);
+	ui.RXOffset->setValue(rxOffset);
+
+	RXOffsetLabel = ui.RXOffsetLabel;
+	RXOffset = ui.RXOffset;
+
+	connect(ui.DCDSlider, SIGNAL(sliderMoved(int)), this, SLOT(clickedSlotI(int)));
+	connect(ui.RXOffset, SIGNAL(valueChanged(int)), this, SLOT(clickedSlotI(int)));
+
+
+	QObject::connect(t, SIGNAL(sendtoTrace(char *, int)), this, SLOT(sendtoTrace(char *, int)), Qt::QueuedConnection);
+	QObject::connect(t, SIGNAL(updateDCD(int, int)), this, SLOT(doupdateDCD(int, int)), Qt::QueuedConnection);
+
+	connect(ui.RXOffsetA, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+	connect(ui.RXOffsetB, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+	connect(ui.RXOffsetC, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+	connect(ui.RXOffsetD, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+
+	QTimer *timer = new QTimer(this);
+	connect(timer, SIGNAL(timeout()), this, SLOT(MyTimerSlot()));
+	timer->start(100);
+
+
+	cwidtimer = new QTimer(this);
+	connect(cwidtimer, SIGNAL(timeout()), this, SLOT(CWIDTimer()));
+
+	if (CWIDInterval)
+		cwidtimer->start(CWIDInterval * 60000);
+
+	if (RSID_SetModem[0])
+	{
+		RSID_WF = 1;
+		RSIDinitfft();
+	}
+	il2p_init(1);
+}
+
+void QtSoundModem::MinimizetoTray()
+{
+	MintoTray = actMintoTray->isChecked();
+	saveSettings();
+	QMessageBox::about(this, tr("QtSoundModem"),
+	tr("Program must be restarted to change Minimize mode"));
+}
+
+
+void QtSoundModem::TrayActivated(QSystemTrayIcon::ActivationReason reason)
+{
+	if (reason == 3)
+	{
+		showNormal();
+		w->setWindowState((w->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
+	} 
+}
+
+extern "C" void sendCWID(char * strID, BOOL blnPlay, int Chan);
+
+void QtSoundModem::CWIDTimer()
+{
+	sendCWID(CWIDCall, CWIDType, 0);
+	calib_mode[0] = 4;
+}
+
+void extSetOffset(int chan)
+{
+	char valChar[32];
+	sprintf(valChar, "%d", chanOffset[chan]);
+	chanOffsetLabel[chan]->setText(valChar);
+
+	wf_pointer(soundChannel[chan]);
+
+	pnt_change[0] = 1;
+	pnt_change[1] = 1;
+	pnt_change[2] = 1;
+	pnt_change[3] = 1;
+
+	return;
+}
+	
+void QtSoundModem::MyTimerSlot()
+{
+	// 100 mS Timer Event
+
+	for (int i = 0; i < 4; i++)
+	{
+
+		if (needSetOffset[i])
+		{
+			needSetOffset[i] = 0;
+			extSetOffset(i);						// Update GUI
+		}
+	}
+
+	if (refreshModems)
+	{
+		refreshModems = 0;
+
+		ui.modeA->setCurrentIndex(speed[0]);
+		ui.modeB->setCurrentIndex(speed[1]);
+		ui.modeC->setCurrentIndex(speed[2]);
+		ui.modeD->setCurrentIndex(speed[3]);
+		ui.centerA->setValue(rx_freq[0]);
+		ui.centerB->setValue(rx_freq[1]);
+		ui.centerC->setValue(rx_freq[2]);
+		ui.centerD->setValue(rx_freq[3]);
+	}
+
+	show_grid();
+}
+
+void QtSoundModem::returnPressed()
+{
+	char Name[32];
+	int Chan;
+	QString val;
+	
+	strcpy(Name, sender()->objectName().toUtf8());
+
+	Chan = Name[8] - 'A';
+
+	val = chanOffsetLabel[Chan]->text();
+
+	chanOffset[Chan] = val.toInt();
+	needSetOffset[Chan] = 1;				// Update GUI
+
+
+}
+
+
+void QtSoundModem::clickedSlotI(int i)
+{
+	char Name[32];
+
+	strcpy(Name, sender()->objectName().toUtf8());
+
+	if (strcmp(Name, "modeA") == 0)
+	{
+		ModemA = ui.modeA->currentIndex();
+		set_speed(0, ModemA);
+		saveSettings();
+		AGW_Report_Modem_Change(0);
+		return;
+	}
+
+	if (strcmp(Name, "modeB") == 0)
+	{
+		ModemB = ui.modeB->currentIndex();
+		set_speed(1, ModemB);
+		saveSettings();
+		AGW_Report_Modem_Change(1);
+		return;
+	}
+
+	if (strcmp(Name, "modeC") == 0)
+	{
+		ModemC = ui.modeC->currentIndex();
+		set_speed(2, ModemC);
+		saveSettings();
+		AGW_Report_Modem_Change(2);
+		return;
+	}
+
+	if (strcmp(Name, "modeD") == 0)
+	{
+		ModemD = ui.modeD->currentIndex();
+		set_speed(3, ModemD);
+		saveSettings();
+		AGW_Report_Modem_Change(3);
+		return;
+	}
+
+	if (strcmp(Name, "centerA") == 0)
+	{
+		if (i > 300)
+		{
+			QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+			ui.centerA->setValue(Freq_Change(0, i));
+			settings->setValue("Modem/RXFreq1", ui.centerA->value());
+			AGW_Report_Modem_Change(0);
+
+		}
+		return;
+	}
+
+	if (strcmp(Name, "centerB") == 0)
+	{
+		if (i > 300)
+		{
+			QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+			ui.centerB->setValue(Freq_Change(1, i));
+			settings->setValue("Modem/RXFreq2", ui.centerB->value());
+			AGW_Report_Modem_Change(1);
+		}
+		return;
+	}
+
+	if (strcmp(Name, "centerC") == 0)
+	{
+		if (i > 300)
+		{
+			QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+			ui.centerC->setValue(Freq_Change(2, i));
+			settings->setValue("Modem/RXFreq3", ui.centerC->value());
+			AGW_Report_Modem_Change(2);
+		}
+		return;
+	}
+
+	if (strcmp(Name, "centerD") == 0)
+	{
+		if (i > 300)
+		{
+			QSettings * settings = new QSettings("QtSoundModem.ini", QSettings::IniFormat);
+			ui.centerD->setValue(Freq_Change(3, i));
+			settings->setValue("Modem/RXFreq4", ui.centerD->value());
+			AGW_Report_Modem_Change(3);
+		}
+		return;
+	}
+
+	if (strcmp(Name, "DCDSlider") == 0)
+	{
+		dcd_threshold = i;
+		saveSettings();
+		return;
+	}
+	
+	if (strcmp(Name, "RXOffset") == 0)
+	{
+		char valChar[32];
+		rxOffset = i;
+		sprintf(valChar, "RX Offset %d",rxOffset);
+		ui.RXOffsetLabel->setText(valChar);
+
+		wf_pointer(soundChannel[0]);
+		wf_pointer(soundChannel[1]);
+
+		pnt_change[0] = 1;
+		pnt_change[1] = 1;
+		pnt_change[2] = 1;
+		pnt_change[3] = 1;
+
+		saveSettings();
+		return;
+	}
+
+
+	QMessageBox msgBox;
+	msgBox.setWindowTitle("MessageBox Title");
+	msgBox.setText("You Clicked " + ((QPushButton*)sender())->objectName());
+	msgBox.exec();
+}
+
+
+void QtSoundModem::clickedSlot()
+{
+	char Name[32];
+
+	strcpy(Name, sender()->objectName().toUtf8());
+
+	if (strcmp(Name, "actDevices") == 0)
+	{
+		doDevices();
+		return;
+	}
+
+	if (strcmp(Name, "actModems") == 0)
+	{
+		doModems();
+		return;
+	}
+
+	if (strcmp(Name, "showBPF_A") == 0)
+	{
+		doFilter(0, 0);
+		return;
+	}
+
+	if (strcmp(Name, "showTXBPF_A") == 0)
+	{
+		doFilter(0, 1);
+		return;
+	}
+
+	if (strcmp(Name, "showLPF_A") == 0)
+	{
+		doFilter(0, 2);
+		return;
+	}
+	
+
+	if (strcmp(Name, "showBPF_B") == 0)
+	{
+		doFilter(1, 0);
+		return;
+	}
+
+	if (strcmp(Name, "showTXBPF_B") == 0)
+	{
+		doFilter(1, 1);
+		return;
+	}
+
+	if (strcmp(Name, "showLPF_B") == 0)
+	{
+		doFilter(1, 2);
+		return;
+	}
+
+	if (strcmp(Name, "Low_A") == 0)
+	{
+		handleButton(0, 1);
+		return;
+	}
+
+	if (strcmp(Name, "High_A") == 0)
+	{
+		handleButton(0, 2);
+		return;
+	}
+
+	if (strcmp(Name, "Both_A") == 0)
+	{
+		handleButton(0, 3);
+		return;
+	}
+
+	if (strcmp(Name, "Stop_A") == 0)
+	{
+		handleButton(0, 0);
+		return;
+	}
+
+
+	if (strcmp(Name, "Low_B") == 0)
+	{
+		handleButton(1, 1);
+		return;
+	}
+
+	if (strcmp(Name, "High_B") == 0)
+	{
+		handleButton(1, 2);
+		return;
+	}
+
+	if (strcmp(Name, "Both_B") == 0)
+	{
+		handleButton(1, 3);
+		return;
+	}
+
+	if (strcmp(Name, "Stop_B") == 0)
+	{
+		handleButton(1, 0);
+		return;
+	}
+
+	if (strcmp(Name, "Low_C") == 0)
+	{
+		handleButton(2, 1);
+		return;
+	}
+
+	if (strcmp(Name, "High_C") == 0)
+	{
+		handleButton(2, 2);
+		return;
+	}
+
+	if (strcmp(Name, "Both_C") == 0)
+	{
+		handleButton(2, 3);
+		return;
+	}
+
+	if (strcmp(Name, "Stop_C") == 0)
+	{
+		handleButton(2, 0);
+		return;
+	}
+
+	if (strcmp(Name, "Low_D") == 0)
+	{
+		handleButton(3, 1);
+		return;
+	}
+
+	if (strcmp(Name, "High_D") == 0)
+	{
+		handleButton(3, 2);
+		return;
+	}
+
+	if (strcmp(Name, "Both_D") == 0)
+	{
+		handleButton(3, 3);
+		return;
+	}
+
+	if (strcmp(Name, "Stop_D") == 0)
+	{
+		handleButton(3, 0);
+		return;
+	}
+
+	QMessageBox msgBox;
+	msgBox.setWindowTitle("MessageBox Title");
+	msgBox.setText("You Clicked " + ((QPushButton*)sender())->objectName());
+	msgBox.exec();
+}
+
+Ui_ModemDialog * Dlg;
+
+QDialog * modemUI;
+QDialog * deviceUI;
+
+void QtSoundModem::doModems()
+{
+	Dlg = new(Ui_ModemDialog);
+
+	QDialog UI;
+	char valChar[10];
+
+	Dlg->setupUi(&UI);
+
+	modemUI = &UI;
+	deviceUI = 0;
+
+	myResize *resize = new myResize();
+
+	UI.installEventFilter(resize);
+
+	sprintf(valChar, "%d", bpf[0]);
+	Dlg->BPFWidthA->setText(valChar);
+	sprintf(valChar, "%d", bpf[1]);
+	Dlg->BPFWidthB->setText(valChar);
+	sprintf(valChar, "%d", bpf[2]);
+	Dlg->BPFWidthC->setText(valChar);
+	sprintf(valChar, "%d", bpf[3]);
+	Dlg->BPFWidthD->setText(valChar);
+
+	sprintf(valChar, "%d", txbpf[0]);
+	Dlg->TXBPFWidthA->setText(valChar);
+	sprintf(valChar, "%d", txbpf[1]);
+	Dlg->TXBPFWidthB->setText(valChar);
+	sprintf(valChar, "%d", txbpf[2]);
+	Dlg->TXBPFWidthC->setText(valChar);
+	sprintf(valChar, "%d", txbpf[3]);
+	Dlg->TXBPFWidthD->setText(valChar);
+
+	sprintf(valChar, "%d", lpf[0]);
+	Dlg->LPFWidthA->setText(valChar);
+	sprintf(valChar, "%d", lpf[1]);
+	Dlg->LPFWidthB->setText(valChar);
+	sprintf(valChar, "%d", lpf[2]);
+	Dlg->LPFWidthC->setText(valChar);
+	sprintf(valChar, "%d", lpf[4]);
+	Dlg->LPFWidthD->setText(valChar);
+
+	sprintf(valChar, "%d", BPF_tap[0]);
+	Dlg->BPFTapsA->setText(valChar);
+	sprintf(valChar, "%d", BPF_tap[1]);
+	Dlg->BPFTapsB->setText(valChar);
+	sprintf(valChar, "%d", BPF_tap[2]);
+	Dlg->BPFTapsC->setText(valChar);
+	sprintf(valChar, "%d", BPF_tap[3]);
+	Dlg->BPFTapsD->setText(valChar);
+
+	sprintf(valChar, "%d", LPF_tap[0]);
+	Dlg->LPFTapsA->setText(valChar);
+	sprintf(valChar, "%d", LPF_tap[1]);
+	Dlg->LPFTapsB->setText(valChar);
+	sprintf(valChar, "%d", LPF_tap[2]);
+	Dlg->LPFTapsC->setText(valChar);
+	sprintf(valChar, "%d", LPF_tap[3]);
+	Dlg->LPFTapsD->setText(valChar);
+
+	Dlg->preEmphAllA->setChecked(emph_all[0]);
+
+	if (emph_all[0])
+		Dlg->preEmphA->setDisabled(TRUE);
+	else
+		Dlg->preEmphA->setCurrentIndex(emph_db[0]);
+
+	Dlg->preEmphAllB->setChecked(emph_all[1]);
+
+	if (emph_all[1])
+		Dlg->preEmphB->setDisabled(TRUE);
+	else
+		Dlg->preEmphB->setCurrentIndex(emph_db[1]);
+
+	Dlg->preEmphAllC->setChecked(emph_all[2]);
+
+	if (emph_all[2])
+		Dlg->preEmphC->setDisabled(TRUE);
+	else
+		Dlg->preEmphC->setCurrentIndex(emph_db[2]);
+
+	Dlg->preEmphAllD->setChecked(emph_all[3]);
+
+	if (emph_all[3])
+		Dlg->preEmphD->setDisabled(TRUE);
+	else
+		Dlg->preEmphD->setCurrentIndex(emph_db[3]);
+
+
+	Dlg->nonAX25A->setChecked(NonAX25[0]);
+	Dlg->nonAX25B->setChecked(NonAX25[1]);
+	Dlg->nonAX25C->setChecked(NonAX25[2]);
+	Dlg->nonAX25D->setChecked(NonAX25[3]);
+
+	Dlg->KISSOptA->setChecked(KISS_opt[0]);
+	Dlg->KISSOptB->setChecked(KISS_opt[1]);
+	Dlg->KISSOptC->setChecked(KISS_opt[2]);
+	Dlg->KISSOptD->setChecked(KISS_opt[3]);
+
+	sprintf(valChar, "%d", txdelay[0]);
+	Dlg->TXDelayA->setText(valChar);
+	sprintf(valChar, "%d", txdelay[1]);
+	Dlg->TXDelayB->setText(valChar);
+	sprintf(valChar, "%d", txdelay[2]);
+	Dlg->TXDelayC->setText(valChar);
+	sprintf(valChar, "%d", txdelay[3]);
+	Dlg->TXDelayD->setText(valChar);
+
+	sprintf(valChar, "%d", txtail[0]);
+	Dlg->TXTailA->setText(valChar);
+	sprintf(valChar, "%d", txtail[1]);
+	Dlg->TXTailB->setText(valChar);
+	sprintf(valChar, "%d", txtail[2]);
+	Dlg->TXTailC->setText(valChar);
+	sprintf(valChar, "%d", txtail[3]);
+	Dlg->TXTailD->setText(valChar);
+
+	Dlg->FrackA->setText(QString::number(frack_time[0]));
+	Dlg->FrackB->setText(QString::number(frack_time[1]));
+	Dlg->FrackC->setText(QString::number(frack_time[2]));
+	Dlg->FrackD->setText(QString::number(frack_time[3]));
+
+	Dlg->RetriesA->setText(QString::number(fracks[0]));
+	Dlg->RetriesB->setText(QString::number(fracks[1]));
+	Dlg->RetriesC->setText(QString::number(fracks[2]));
+	Dlg->RetriesD->setText(QString::number(fracks[3]));
+
+	sprintf(valChar, "%d", RCVR[0]);
+	Dlg->AddRXA->setText(valChar);
+	sprintf(valChar, "%d", RCVR[1]);
+	Dlg->AddRXB->setText(valChar);
+	sprintf(valChar, "%d", RCVR[2]);
+	Dlg->AddRXC->setText(valChar);
+	sprintf(valChar, "%d", RCVR[3]);
+	Dlg->AddRXD->setText(valChar);
+
+	sprintf(valChar, "%d", rcvr_offset[0]);
+	Dlg->RXShiftA->setText(valChar);
+
+	sprintf(valChar, "%d", rcvr_offset[1]);
+	Dlg->RXShiftB->setText(valChar);
+
+	sprintf(valChar, "%d", rcvr_offset[2]);
+	Dlg->RXShiftC->setText(valChar);
+	sprintf(valChar, "%d", rcvr_offset[3]);
+	Dlg->RXShiftD->setText(valChar);
+
+	//	speed[1]
+	//	speed[2];
+
+	Dlg->recoverBitA->setCurrentIndex(recovery[0]);
+	Dlg->recoverBitB->setCurrentIndex(recovery[1]);
+	Dlg->recoverBitC->setCurrentIndex(recovery[2]);
+	Dlg->recoverBitD->setCurrentIndex(recovery[3]);
+
+	Dlg->fx25ModeA->setCurrentIndex(fx25_mode[0]);
+	Dlg->fx25ModeB->setCurrentIndex(fx25_mode[1]);
+	Dlg->fx25ModeC->setCurrentIndex(fx25_mode[2]);
+	Dlg->fx25ModeD->setCurrentIndex(fx25_mode[3]);
+
+	Dlg->IL2PModeA->setCurrentIndex(il2p_mode[0]);
+	Dlg->IL2PModeB->setCurrentIndex(il2p_mode[1]);
+	Dlg->IL2PModeC->setCurrentIndex(il2p_mode[2]);
+	Dlg->IL2PModeD->setCurrentIndex(il2p_mode[3]);
+
+	Dlg->CWIDCall->setText(CWIDCall);
+	Dlg->CWIDInterval->setText(QString::number(CWIDInterval));
+
+	if (CWIDType)
+		Dlg->radioButton_2->setChecked(1);
+	else
+		Dlg->CWIDType->setChecked(1);
+
+	Dlg->RSIDSABM_A->setChecked(RSID_SABM[0]);
+	Dlg->RSIDSABM_B->setChecked(RSID_SABM[1]);
+	Dlg->RSIDSABM_C->setChecked(RSID_SABM[2]);
+	Dlg->RSIDSABM_D->setChecked(RSID_SABM[3]);
+
+	Dlg->RSIDUI_A->setChecked(RSID_UI[0]);
+	Dlg->RSIDUI_B->setChecked(RSID_UI[1]);
+	Dlg->RSIDUI_C->setChecked(RSID_UI[2]);
+	Dlg->RSIDUI_D->setChecked(RSID_UI[3]);
+
+	Dlg->DigiCallsA->setText(MyDigiCall[0]);
+	Dlg->DigiCallsB->setText(MyDigiCall[1]);
+	Dlg->DigiCallsC->setText(MyDigiCall[2]);
+	Dlg->DigiCallsD->setText(MyDigiCall[3]);
+
+	Dlg->RSID_1_SETMODEM->setChecked(RSID_SetModem[0]);
+	Dlg->RSID_2_SETMODEM->setChecked(RSID_SetModem[1]);
+	Dlg->RSID_3_SETMODEM->setChecked(RSID_SetModem[2]);
+	Dlg->RSID_4_SETMODEM->setChecked(RSID_SetModem[3]);
+	
+	connect(Dlg->showBPF_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showTXBPF_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showLPF_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+
+	connect(Dlg->showBPF_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showTXBPF_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showLPF_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+
+	connect(Dlg->showBPF_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showTXBPF_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showLPF_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+
+	connect(Dlg->showBPF_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showTXBPF_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+	connect(Dlg->showLPF_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+
+	connect(Dlg->okButton, SIGNAL(clicked()), this, SLOT(modemaccept()));
+	connect(Dlg->modemSave, SIGNAL(clicked()), this, SLOT(modemSave()));
+	connect(Dlg->cancelButton, SIGNAL(clicked()), this, SLOT(modemreject()));
+
+	connect(Dlg->SendRSID_1, SIGNAL(clicked()), this, SLOT(doRSIDA()));
+	connect(Dlg->SendRSID_2, SIGNAL(clicked()), this, SLOT(doRSIDB()));
+	connect(Dlg->SendRSID_3, SIGNAL(clicked()), this, SLOT(doRSIDC()));
+	connect(Dlg->SendRSID_4, SIGNAL(clicked()), this, SLOT(doRSIDD()));
+
+	connect(Dlg->preEmphAllA, SIGNAL(stateChanged(int)), this, SLOT(preEmphAllAChanged(int)));
+	connect(Dlg->preEmphAllB, SIGNAL(stateChanged(int)), this, SLOT(preEmphAllBChanged(int)));
+	connect(Dlg->preEmphAllC, SIGNAL(stateChanged(int)), this, SLOT(preEmphAllCChanged(int)));
+	connect(Dlg->preEmphAllD, SIGNAL(stateChanged(int)), this, SLOT(preEmphAllDChanged(int)));
+
+	UI.exec();
+}
+
+void QtSoundModem::preEmphAllAChanged(int state)
+{
+	Dlg->preEmphA->setDisabled(state);
+}
+
+void QtSoundModem::preEmphAllBChanged(int state)
+{
+	Dlg->preEmphB->setDisabled(state);
+}
+
+void QtSoundModem::preEmphAllCChanged(int state)
+{
+	Dlg->preEmphC->setDisabled(state);
+}
+
+void QtSoundModem::preEmphAllDChanged(int state)
+{
+	Dlg->preEmphD->setDisabled(state);
+}
+
+extern "C" void get_exclude_list(char * line, TStringList * list);
+
+void QtSoundModem::modemaccept()
+{
+	modemSave();
+	delete(Dlg);
+	saveSettings();
+
+	modemUI->accept();
+
+}
+
+void QtSoundModem::modemSave()
+{
+	QVariant Q;
+	
+	emph_all[0] = Dlg->preEmphAllA->isChecked();
+	emph_db[0] = Dlg->preEmphA->currentIndex();
+
+	emph_all[1] = Dlg->preEmphAllB->isChecked();
+	emph_db[1] = Dlg->preEmphB->currentIndex();
+
+	emph_all[2] = Dlg->preEmphAllC->isChecked();
+	emph_db[2] = Dlg->preEmphC->currentIndex();
+
+	emph_all[3] = Dlg->preEmphAllD->isChecked();
+	emph_db[3] = Dlg->preEmphD->currentIndex();
+
+	NonAX25[0] = Dlg->nonAX25A->isChecked();
+	NonAX25[1] = Dlg->nonAX25B->isChecked();
+	NonAX25[2] = Dlg->nonAX25C->isChecked();
+	NonAX25[3] = Dlg->nonAX25D->isChecked();
+
+	KISS_opt[0] = Dlg->KISSOptA->isChecked();
+	KISS_opt[1] = Dlg->KISSOptB->isChecked();
+	KISS_opt[2] = Dlg->KISSOptC->isChecked();
+	KISS_opt[3] = Dlg->KISSOptD->isChecked();
+
+	if (emph_db[0] < 0 || emph_db[0] > nr_emph)
+		emph_db[0] = 0;
+
+	if (emph_db[1] < 0 || emph_db[1] > nr_emph)
+		emph_db[1] = 0;
+
+	if (emph_db[2] < 0 || emph_db[2] > nr_emph)
+		emph_db[2] = 0;
+
+	if (emph_db[3] < 0 || emph_db[3] > nr_emph)
+		emph_db[3] = 0;
+
+	Q = Dlg->TXDelayA->text();
+	txdelay[0] = Q.toInt();
+
+	Q = Dlg->TXDelayB->text();
+	txdelay[1] = Q.toInt();
+	
+	Q = Dlg->TXDelayC->text();
+	txdelay[2] = Q.toInt();
+
+	Q = Dlg->TXDelayD->text();
+	txdelay[3] = Q.toInt();
+
+	Q = Dlg->TXTailA->text();
+	txtail[0] = Q.toInt();
+
+	Q = Dlg->TXTailB->text();
+	txtail[1] = Q.toInt();
+
+	Q = Dlg->TXTailC->text();
+	txtail[2] = Q.toInt();
+
+	txtail[3] = Dlg->TXTailD->text().toInt();
+
+	frack_time[0] = Dlg->FrackA->text().toInt();
+	frack_time[1] = Dlg->FrackB->text().toInt();
+	frack_time[2] = Dlg->FrackC->text().toInt();
+	frack_time[3] = Dlg->FrackD->text().toInt();
+
+	fracks[0] = Dlg->RetriesA->text().toInt();
+	fracks[1] = Dlg->RetriesB->text().toInt();
+	fracks[2] = Dlg->RetriesC->text().toInt();
+	fracks[3] = Dlg->RetriesD->text().toInt();
+
+	Q = Dlg->AddRXA->text();
+	RCVR[0] = Q.toInt();
+
+	Q = Dlg->AddRXB->text();
+	RCVR[1] = Q.toInt();
+
+	Q = Dlg->AddRXC->text();
+	RCVR[2] = Q.toInt();
+
+	Q = Dlg->AddRXD->text();
+	RCVR[3] = Q.toInt();
+
+	Q = Dlg->RXShiftA->text();
+	rcvr_offset[0] = Q.toInt();
+
+	Q = Dlg->RXShiftB->text();
+	rcvr_offset[1] = Q.toInt();
+
+	Q = Dlg->RXShiftC->text();
+	rcvr_offset[2] = Q.toInt();
+
+	Q = Dlg->RXShiftD->text();
+	rcvr_offset[3] = Q.toInt();
+
+	fx25_mode[0] = Dlg->fx25ModeA->currentIndex();
+	fx25_mode[1] = Dlg->fx25ModeB->currentIndex();
+	fx25_mode[2] = Dlg->fx25ModeC->currentIndex();
+	fx25_mode[3] = Dlg->fx25ModeD->currentIndex();
+
+	il2p_mode[0] = Dlg->IL2PModeA->currentIndex();
+	il2p_mode[1] = Dlg->IL2PModeB->currentIndex();
+	il2p_mode[2] = Dlg->IL2PModeC->currentIndex();
+	il2p_mode[3] = Dlg->IL2PModeD->currentIndex();
+
+	recovery[0] = Dlg->recoverBitA->currentIndex();
+	recovery[1] = Dlg->recoverBitB->currentIndex();
+	recovery[2] = Dlg->recoverBitC->currentIndex();
+	recovery[3] = Dlg->recoverBitD->currentIndex();
+
+
+	strcpy(CWIDCall, Dlg->CWIDCall->text().toUtf8().toUpper());
+	CWIDInterval = Dlg->CWIDInterval->text().toInt();
+	CWIDType = Dlg->radioButton_2->isChecked();
+
+	if (CWIDInterval)
+		cwidtimer->start(CWIDInterval * 60000);
+	else
+		cwidtimer->stop();
+
+
+	RSID_SABM[0] = Dlg->RSIDSABM_A->isChecked();
+	RSID_SABM[1] = Dlg->RSIDSABM_B->isChecked();
+	RSID_SABM[2] = Dlg->RSIDSABM_C->isChecked();
+	RSID_SABM[3] = Dlg->RSIDSABM_D->isChecked();
+
+	RSID_UI[0] = Dlg->RSIDUI_A->isChecked();
+	RSID_UI[1] = Dlg->RSIDUI_B->isChecked();
+	RSID_UI[2] = Dlg->RSIDUI_C->isChecked();
+	RSID_UI[3] = Dlg->RSIDUI_D->isChecked();
+
+	RSID_SetModem[0] = Dlg->RSID_1_SETMODEM->isChecked();
+	RSID_SetModem[1] = Dlg->RSID_2_SETMODEM->isChecked();
+	RSID_SetModem[2] = Dlg->RSID_3_SETMODEM->isChecked();
+	RSID_SetModem[3] = Dlg->RSID_4_SETMODEM->isChecked();
+
+	Q = Dlg->DigiCallsA->text();
+	strcpy(MyDigiCall[0], Q.toString().toUtf8().toUpper());
+
+	Q = Dlg->DigiCallsB->text();
+	strcpy(MyDigiCall[1], Q.toString().toUtf8().toUpper());
+
+	Q = Dlg->DigiCallsC->text();
+	strcpy(MyDigiCall[2], Q.toString().toUtf8().toUpper());
+
+	Q = Dlg->DigiCallsD->text();
+	strcpy(MyDigiCall[3], Q.toString().toUtf8().toUpper());
+
+	int i;
+
+	for (i = 0; i < 4; i++)
+	{
+		initTStringList(&list_digi_callsigns[i]);
+
+		get_exclude_list(MyDigiCall[i], &list_digi_callsigns[i]);
+	}
+
+}
+
+void QtSoundModem::modemreject()
+{
+	delete(Dlg);
+	modemUI->reject();
+}
+
+void QtSoundModem::doRSIDA()
+{
+	needRSID[0] = 1;
+}
+
+void QtSoundModem::doRSIDB()
+{
+	needRSID[1] = 1;
+}
+
+void QtSoundModem::doRSIDC()
+{
+	needRSID[2] = 1;
+}
+
+void QtSoundModem::doRSIDD()
+{
+	needRSID[3] = 1;
+}
+
+
+
+
+void QtSoundModem::doFilter(int Chan, int Filter)
+{
+	Ui_Dialog Dev;
+	QImage * bitmap;
+
+	QDialog UI;
+
+	Dev.setupUi(&UI);
+
+	bitmap = new QImage(642, 312, QImage::Format_RGB32);
+
+	bitmap->fill(qRgb(255, 255, 255));
+
+	QPainter qPainter(bitmap);
+	qPainter.setBrush(Qt::NoBrush);
+	qPainter.setPen(Qt::black);
+
+	if (Filter == 0)
+		make_graph_buf(DET[0][0].BPF_core[Chan], BPF_tap[Chan], &qPainter);
+	else if (Filter == 1)
+		make_graph_buf(tx_BPF_core[Chan], tx_BPF_tap[Chan], &qPainter);
+	else
+		make_graph_buf(LPF_core[Chan], LPF_tap[Chan], &qPainter);
+
+	qPainter.end();
+	Dev.label->setPixmap(QPixmap::fromImage(*bitmap));
+
+	UI.exec();
+
+}
+
+Ui_devicesDialog * Dev;
+
+char NewPTTPort[80];
+
+int newSoundMode = 0;
+int oldSoundMode = 0;
+
+void QtSoundModem::SoundModeChanged(bool State)
+{
+	UNUSED(State);
+
+	// Mustn't change SoundMode until dialog is accepted
+
+	if (Dev->UDP->isChecked())
+		newSoundMode = 3;
+	else if (Dev->PULSE->isChecked())
+		newSoundMode = 2;
+	else
+		newSoundMode = Dev->OSS->isChecked();
+
+}
+
+void QtSoundModem::DualPTTChanged(bool State)
+{
+	UNUSED(State);
+
+	// Forse Evaluation of Cat Port setting
+
+	PTTPortChanged(0);
+}
+
+void QtSoundModem::CATChanged(bool State)
+{
+	UNUSED(State);
+	PTTPortChanged(0);
+}
+
+void QtSoundModem::PTTPortChanged(int Selected)
+{
+	UNUSED(Selected);
+
+	QVariant Q = Dev->PTTPort->currentText();
+	strcpy(NewPTTPort, Q.toString().toUtf8());
+
+	Dev->RTSDTR->setVisible(false);
+	Dev->CAT->setVisible(false);
+
+	Dev->PTTOnLab->setVisible(false);
+	Dev->PTTOn->setVisible(false);
+	Dev->PTTOff->setVisible(false);
+	Dev->PTTOffLab->setVisible(false);
+	Dev->CATLabel->setVisible(false);
+	Dev->CATSpeed->setVisible(false);
+
+	Dev->GPIOLab->setVisible(false);
+	Dev->GPIOLeft->setVisible(false);
+	Dev->GPIORight->setVisible(false);
+	Dev->GPIOLab2->setVisible(false);
+
+	Dev->CM108Label->setVisible(false);
+	Dev->VIDPID->setVisible(false);
+
+	if (strcmp(NewPTTPort, "None") == 0)
+	{
+	}
+	else if (strcmp(NewPTTPort, "GPIO") == 0)
+	{
+		Dev->GPIOLab->setVisible(true);
+		Dev->GPIOLeft->setVisible(true);
+		if (Dev->DualPTT->isChecked())
+		{
+			Dev->GPIORight->setVisible(true);
+			Dev->GPIOLab2->setVisible(true);
+		}
+	}
+
+	else if (strcmp(NewPTTPort, "CM108") == 0)
+	{
+		Dev->CM108Label->setVisible(true);
+//#ifdef __ARM_ARCHX
+		Dev->CM108Label->setText("CM108 Device");
+//#else
+//		Dev->CM108Label->setText("CM108 VID/PID");
+//#endif
+		Dev->VIDPID->setText(CM108Addr);
+		Dev->VIDPID->setVisible(true);
+	}
+	else if (strcmp(NewPTTPort, "HAMLIB") == 0)
+	{
+		Dev->CM108Label->setVisible(true);
+		Dev->CM108Label->setText("rigctrld Port");
+		Dev->VIDPID->setText(QString::number(HamLibPort));
+		Dev->VIDPID->setVisible(true);
+		Dev->PTTOnLab->setText("rigctrld Host");
+		Dev->PTTOnLab->setVisible(true);
+		Dev->PTTOn->setText(HamLibHost);
+		Dev->PTTOn->setVisible(true);
+	}
+	else
+	{
+		Dev->RTSDTR->setVisible(true);
+		Dev->CAT->setVisible(true);
+
+		if (Dev->CAT->isChecked())
+		{
+			Dev->PTTOnLab->setVisible(true);
+			Dev->PTTOnLab->setText("PTT On String");
+			Dev->PTTOn->setText(PTTOnString);
+			Dev->PTTOn->setVisible(true);
+			Dev->PTTOff->setVisible(true);
+			Dev->PTTOff->setText(PTTOffString);
+			Dev->PTTOffLab->setVisible(true);
+			Dev->CATLabel->setVisible(true);
+			Dev->CATSpeed->setVisible(true);
+		}
+	}
+}
+
+bool myResize::eventFilter(QObject *obj, QEvent *event)
+{
+	if (event->type() == QEvent::Resize)
+	{
+		QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
+		QSize size = resizeEvent->size();
+		int h = size.height();
+		int w = size.width();
+
+		if (obj == deviceUI)
+			Dev->scrollArea->setGeometry(QRect(5, 5, w - 10, h - 10));
+		else
+			Dlg->scrollArea->setGeometry(QRect(5, 5, w - 10, h - 10));
+
+		return true;
+	}
+	return QObject::eventFilter(obj, event);
+}
+
+void QtSoundModem::doDevices()
+{
+	char valChar[10];
+
+	Dev = new(Ui_devicesDialog);
+
+	QDialog UI;
+
+	int i;
+
+	Dev->setupUi(&UI);
+
+	deviceUI = &UI;
+	modemUI = 0;
+
+	myResize *resize = new myResize();
+
+	UI.installEventFilter(resize);
+
+	newSoundMode = SoundMode;
+	oldSoundMode = SoundMode;
+
+#ifdef WIN32
+	Dev->ALSA->setText("WaveOut");
+	Dev->OSS->setVisible(0);
+	Dev->PULSE->setVisible(0);
+#endif
+
+	if (SoundMode == 0)
+		Dev->ALSA->setChecked(1);
+	else if (SoundMode == 1)
+		Dev->OSS->setChecked(1);
+	else if (SoundMode == 2)
+		Dev->PULSE->setChecked(1);
+	else if (SoundMode == 2)
+		Dev->UDP->setChecked(1);
+
+	connect(Dev->ALSA, SIGNAL(toggled(bool)), this, SLOT(SoundModeChanged(bool)));
+	connect(Dev->OSS, SIGNAL(toggled(bool)), this, SLOT(SoundModeChanged(bool)));
+	connect(Dev->PULSE, SIGNAL(toggled(bool)), this, SLOT(SoundModeChanged(bool)));
+	connect(Dev->UDP, SIGNAL(toggled(bool)), this, SLOT(SoundModeChanged(bool)));
+
+	for (i = 0; i < PlaybackCount; i++)
+		Dev->outputDevice->addItem(&PlaybackNames[i][0]);
+
+	i = Dev->outputDevice->findText(PlaybackDevice, Qt::MatchContains);
+
+
+	if (i == -1)
+	{
+		// Add device to list
+
+		Dev->outputDevice->addItem(PlaybackDevice);
+		i = Dev->outputDevice->findText(PlaybackDevice, Qt::MatchContains);
+	}
+
+	Dev->outputDevice->setCurrentIndex(i);
+
+	for (i = 0; i < CaptureCount; i++)
+		Dev->inputDevice->addItem(&CaptureNames[i][0]);
+
+	i = Dev->inputDevice->findText(CaptureDevice, Qt::MatchContains);
+
+	if (i == -1)
+	{
+		// Add device to list
+
+		Dev->inputDevice->addItem(CaptureDevice);
+		i = Dev->inputDevice->findText(CaptureDevice, Qt::MatchContains);
+	}
+	Dev->inputDevice->setCurrentIndex(i);
+
+	Dev->Modem_1_Chan->setCurrentIndex(soundChannel[0]);
+	Dev->Modem_2_Chan->setCurrentIndex(soundChannel[1]);
+	Dev->Modem_3_Chan->setCurrentIndex(soundChannel[2]);
+	Dev->Modem_4_Chan->setCurrentIndex(soundChannel[3]);
+
+	// Disable "None" option in first modem
+
+	QStandardItemModel *model = dynamic_cast<QStandardItemModel *>(Dev->Modem_1_Chan->model());
+	QStandardItem * item = model->item(0, 0);
+	item->setEnabled(false);
+
+	Dev->singleChannelOutput->setChecked(SCO);
+	Dev->colourWaterfall->setChecked(raduga);
+
+	sprintf(valChar, "%d", KISSPort);
+	Dev->KISSPort->setText(valChar);
+	Dev->KISSEnabled->setChecked(KISSServ);
+
+	sprintf(valChar, "%d", AGWPort);
+	Dev->AGWPort->setText(valChar);
+	Dev->AGWEnabled->setChecked(AGWServ);
+
+	Dev->PTTOn->setText(PTTOnString);
+	Dev->PTTOff->setText(PTTOffString);
+
+	sprintf(valChar, "%d", PTTBAUD);
+	Dev->CATSpeed->setText(valChar);
+
+	sprintf(valChar, "%d", UDPClientPort);
+	Dev->UDPPort->setText(valChar);
+	Dev->UDPTXHost->setText(UDPHost);
+
+	if (UDPServerPort != TXPort)
+		sprintf(valChar, "%d/%d", UDPServerPort, TXPort);
+	else
+		sprintf(valChar, "%d", UDPServerPort);
+
+	Dev->UDPTXPort->setText(valChar);
+
+	Dev->UDPEnabled->setChecked(UDPServ);
+
+	sprintf(valChar, "%d", pttGPIOPin);
+	Dev->GPIOLeft->setText(valChar);
+	sprintf(valChar, "%d", pttGPIOPinR);
+	Dev->GPIORight->setText(valChar);
+
+	Dev->VIDPID->setText(CM108Addr);
+
+	QStringList items;
+
+	connect(Dev->CAT, SIGNAL(toggled(bool)), this, SLOT(CATChanged(bool)));
+	connect(Dev->DualPTT, SIGNAL(toggled(bool)), this, SLOT(DualPTTChanged(bool)));
+	connect(Dev->PTTPort, SIGNAL(currentIndexChanged(int)), this, SLOT(PTTPortChanged(int)));
+
+
+
+	if (PTTMode == PTTCAT)
+		Dev->CAT->setChecked(true);
+	else
+		Dev->RTSDTR->setChecked(true);
+
+	for (const QSerialPortInfo &info : Ports)
+	{
+		items.append(info.portName());
+	}
+
+	items.sort();
+
+	Dev->PTTPort->addItem("None");
+	Dev->PTTPort->addItem("CM108");
+
+	//#ifdef __ARM_ARCH
+
+	Dev->PTTPort->addItem("GPIO");
+
+	//#endif
+
+	Dev->PTTPort->addItem("HAMLIB");
+
+	for (const QString &info : items)
+	{
+		Dev->PTTPort->addItem(info);
+	}
+
+	Dev->PTTPort->setCurrentIndex(Dev->PTTPort->findText(PTTPort, Qt::MatchFixedString));
+
+	PTTPortChanged(0);				// Force reevaluation
+
+	Dev->txRotation->setChecked(TX_rotate);
+	Dev->DualPTT->setChecked(DualPTT);
+
+	Dev->multiCore->setChecked(multiCore);
+
+	QObject::connect(Dev->okButton, SIGNAL(clicked()), this, SLOT(deviceaccept()));
+	QObject::connect(Dev->cancelButton, SIGNAL(clicked()), this, SLOT(devicereject()));
+
+	UI.exec();
+
+}
+
+void QtSoundModem::deviceaccept()
+{
+	QVariant Q = Dev->inputDevice->currentText();
+	int cardChanged = 0;
+	char portString[32];
+
+	if (Dev->UDP->isChecked())
+	{
+		// cant have server and slave
+
+		if (Dev->UDPEnabled->isChecked())
+		{
+			QMessageBox::about(this, tr("QtSoundModem"),
+				tr("Can't have UDP sound source and UDP server at same time"));
+			return;
+		}
+	}
+
+	if (oldSoundMode != newSoundMode)
+	{
+		QMessageBox msgBox;
+
+		msgBox.setText("QtSoundModem must restart to change Sound Mode.\n"
+			"Program will close if you hit Ok\n"
+			"You will need to reselect audio devices after restarting");
+
+		msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+
+		int i = msgBox.exec();
+
+		if (i == QMessageBox::Ok)
+		{
+			SoundMode = newSoundMode;
+
+			saveSettings();
+
+			Closing = 1;
+			return;
+		}
+
+		if (oldSoundMode == 0)
+			Dev->ALSA->setChecked(1);
+		else if (oldSoundMode == 1)
+			Dev->OSS->setChecked(1);
+		else if (oldSoundMode == 2)
+			Dev->PULSE->setChecked(1);
+		else if (oldSoundMode == 3)
+			Dev->UDP->setChecked(1);
+
+		QMessageBox::about(this, tr("Info"),
+			tr("<p align = 'center'>Changes not saved</p>"));
+
+		return;
+
+	}
+
+	if (strcmp(CaptureDevice, Q.toString().toUtf8()) != 0)
+	{
+		strcpy(CaptureDevice, Q.toString().toUtf8());
+		cardChanged = 1;
+	}
+
+	CaptureIndex = Dev->inputDevice->currentIndex();
+
+	Q = Dev->outputDevice->currentText();
+
+	if (strcmp(PlaybackDevice, Q.toString().toUtf8()) != 0)
+	{
+		strcpy(PlaybackDevice, Q.toString().toUtf8());
+		cardChanged = 1;
+	}
+
+	PlayBackIndex = Dev->outputDevice->currentIndex();
+
+	soundChannel[0] = Dev->Modem_1_Chan->currentIndex();
+	soundChannel[1] = Dev->Modem_2_Chan->currentIndex();
+	soundChannel[2] = Dev->Modem_3_Chan->currentIndex();
+	soundChannel[3] = Dev->Modem_4_Chan->currentIndex();
+
+	UsingLeft = 0;
+	UsingRight = 0;
+	UsingBothChannels = 0;
+
+	for (int i = 0; i < 4; i++)
+	{
+		if (soundChannel[i] == LEFT)
+		{
+			UsingLeft = 1;
+			modemtoSoundLR[i] = 0;
+		}
+		else if (soundChannel[i] == RIGHT)
+		{
+			UsingRight = 1;
+			modemtoSoundLR[i] = 1;
+		}
+	}
+
+	if (UsingLeft && UsingRight)
+		UsingBothChannels = 1;
+
+
+	SCO = Dev->singleChannelOutput->isChecked();
+	raduga = Dev->colourWaterfall->isChecked();
+	AGWServ = Dev->AGWEnabled->isChecked();
+	KISSServ = Dev->KISSEnabled->isChecked();
+
+	Q = Dev->KISSPort->text();
+	KISSPort = Q.toInt();
+
+	Q = Dev->AGWPort->text();
+	AGWPort = Q.toInt();
+
+	Q = Dev->PTTPort->currentText();
+	strcpy(PTTPort, Q.toString().toUtf8());
+
+	DualPTT = Dev->DualPTT->isChecked();
+	TX_rotate = Dev->txRotation->isChecked();
+	multiCore = Dev->multiCore->isChecked();
+
+	if (Dev->CAT->isChecked())
+		PTTMode = PTTCAT;
+	else
+		PTTMode = PTTRTS;
+
+	Q = Dev->PTTOn->text();
+	strcpy(PTTOnString, Q.toString().toUtf8());
+	Q = Dev->PTTOff->text();
+	strcpy(PTTOffString, Q.toString().toUtf8());
+
+	Q = Dev->CATSpeed->text();
+	PTTBAUD = Q.toInt();
+
+	Q = Dev->UDPPort->text();
+	UDPClientPort = Q.toInt();
+
+
+	Q = Dev->UDPTXPort->text();
+	strcpy(portString, Q.toString().toUtf8());
+	UDPServerPort = atoi(portString);
+
+	if (strchr(portString, '/'))
+	{
+		char * ptr = strlop(portString, '/');
+		TXPort = atoi(ptr);
+	}
+	else
+		TXPort = UDPServerPort;
+
+	Q = Dev->UDPTXHost->text();
+	strcpy(UDPHost, Q.toString().toUtf8());
+
+	UDPServ = Dev->UDPEnabled->isChecked();
+
+	Q = Dev->GPIOLeft->text();
+	pttGPIOPin = Q.toInt();
+
+	Q = Dev->GPIORight->text();
+	pttGPIOPinR = Q.toInt();
+
+	Q = Dev->VIDPID->text();
+
+	if (strcmp(PTTPort, "CM108") == 0)
+		strcpy(CM108Addr, Q.toString().toUtf8());
+	else if (strcmp(PTTPort, "HAMLIB") == 0)
+	{
+		HamLibPort = Q.toInt();
+		Q = Dev->PTTOn->text();
+		strcpy(HamLibHost, Q.toString().toUtf8());
+	}
+
+	ClosePTTPort();
+	OpenPTTPort();
+
+	wf_pointer(soundChannel[0]);
+	wf_pointer(soundChannel[1]);
+
+	delete(Dev);
+	saveSettings();
+	deviceUI->accept();
+
+	if (cardChanged)
+	{
+		InitSound(1);
+	}
+
+	// Reset title and tooltip in case ports changed
+
+	char Title[128];
+	sprintf(Title, "QtSoundModem Version %s Ports %d/%d", VersionString, AGWPort, KISSPort);
+	w->setWindowTitle(Title);
+
+	sprintf(Title, "QtSoundModem %d %d", AGWPort, KISSPort);
+	if (trayIcon)
+		trayIcon->setToolTip(Title);
+
+	QSize newSize(this->size());
+	QSize oldSize(this->size());
+
+	QResizeEvent *myResizeEvent = new QResizeEvent(newSize, oldSize);
+
+	QCoreApplication::postEvent(this, myResizeEvent);  
+}
+
+void QtSoundModem::devicereject()
+{	
+	delete(Dev);
+	deviceUI->reject();
+}
+
+void QtSoundModem::handleButton(int Port, int Type)
+{
+	// interlock calib with CWID
+
+	if (calib_mode[0] == 4)		// CWID
+		return;
+	
+	doCalib(Port, Type);
+}
+
+void QtSoundModem::doRestartWF()
+{
+	if (Firstwaterfall)
+	{
+		initWaterfall(0, 0);
+		initWaterfall(0, 1);
+	}
+
+	if (Secondwaterfall)
+	{
+		initWaterfall(1, 0);
+		initWaterfall(1, 1);
+	}
+}
+
+
+void QtSoundModem::doAbout()
+{
+	QMessageBox::about(this, tr("About"),
+		tr("G8BPQ's port of UZ7HO's Soundmodem\n\nCopyright (C) 2019-2020 Andrei Kopanchuk UZ7HO"));
+}
+
+void QtSoundModem::doCalibrate()
+{
+	Ui_calDialog Calibrate;
+	{
+		QDialog UI;
+		Calibrate.setupUi(&UI);
+
+		connect(Calibrate.Low_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.High_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Both_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Stop_A, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Low_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.High_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Both_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Stop_B, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Low_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.High_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Both_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Stop_C, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Low_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.High_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Both_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+		connect(Calibrate.Stop_D, SIGNAL(released()), this, SLOT(clickedSlot()));
+
+		/*
+		
+		connect(Calibrate.Low_A, &QPushButton::released, this, [=] { handleButton(0, 1); });
+		connect(Calibrate.High_A, &QPushButton::released, this, [=] { handleButton(0, 2); });
+		connect(Calibrate.Both_A, &QPushButton::released, this, [=] { handleButton(0, 3); });
+		connect(Calibrate.Stop_A, &QPushButton::released, this, [=] { handleButton(0, 0); });
+		connect(Calibrate.Low_B, &QPushButton::released, this, [=] { handleButton(1, 1); });
+		connect(Calibrate.High_B, &QPushButton::released, this, [=] { handleButton(1, 2); });
+		connect(Calibrate.Both_B, &QPushButton::released, this, [=] { handleButton(1, 3); });
+		connect(Calibrate.Stop_B, &QPushButton::released, this, [=] { handleButton(1, 0); });
+
+//		connect(Calibrate.High_A, SIGNAL(released()), this, SLOT(handleButton(1, 2)));
+*/
+		UI.exec();
+	}
+}
+
+void QtSoundModem::RefreshSpectrum(unsigned char * Data)
+{
+	int i;
+
+	// Last 4 bytes are level busy and Tuning lines
+
+	Waterfall[0]->fill(Black);
+
+	if (Data[206] != LastLevel)
+	{
+		LastLevel = Data[206];
+//		RefreshLevel(LastLevel);
+	}
+
+	if (Data[207] != LastBusy)
+	{
+		LastBusy = Data[207];
+//		Busy->setVisible(LastBusy);
+	}
+
+	for (i = 0; i < 205; i++)
+	{
+		int val = Data[0];
+
+		if (val > 63)
+			val = 63;
+
+		Waterfall[0]->setPixel(i, val, Yellow);
+		if (val < 62)
+			Waterfall[0]->setPixel(i, val + 1, Gold);
+		Data++;
+	}
+
+	ui.WaterfallA->setPixmap(QPixmap::fromImage(*Waterfall[0]));
+
+}
+
+void QtSoundModem::RefreshWaterfall(int snd_ch, unsigned char * Data)
+{
+	int j;
+	unsigned char * Line;
+	int len = Waterfall[0]->bytesPerLine();
+	int TopLine = NextWaterfallLine[snd_ch];
+
+	// Write line to cyclic buffer then draw starting with the line just written
+
+	// Length is 208 bytes, including Level and Busy flags
+
+	memcpy(&WaterfallLines[snd_ch][NextWaterfallLine[snd_ch]++][0], Data, 206);
+	if (NextWaterfallLine[snd_ch] > 63)
+		NextWaterfallLine[snd_ch] = 0;
+
+	for (j = 63; j > 0; j--)
+	{
+		Line = Waterfall[0]->scanLine(j);
+		memcpy(Line, &WaterfallLines[snd_ch][TopLine++][0], len);
+		if (TopLine > 63)
+			TopLine = 0;
+	}
+
+	ui.WaterfallA->setPixmap(QPixmap::fromImage(*Waterfall[0]));
+}
+
+
+void QtSoundModem::sendtoTrace(char * Msg, int tx)
+{
+	const QTextCursor old_cursor = monWindowCopy->textCursor();
+	const int old_scrollbar_value = monWindowCopy->verticalScrollBar()->value();
+	const bool is_scrolled_down = old_scrollbar_value == monWindowCopy->verticalScrollBar()->maximum();
+
+	// Move the cursor to the end of the document.
+	monWindowCopy->moveCursor(QTextCursor::End);
+
+	// Insert the text at the position of the cursor (which is the end of the document).
+
+	if (tx)
+		monWindowCopy->setTextColor(qRgb(192, 0, 0));
+	else
+		monWindowCopy->setTextColor(qRgb(0, 0, 192));
+
+	monWindowCopy->textCursor().insertText(Msg);
+
+	if (old_cursor.hasSelection() || !is_scrolled_down)
+	{
+		// The user has selected text or scrolled away from the bottom: maintain position.
+		monWindowCopy->setTextCursor(old_cursor);
+		monWindowCopy->verticalScrollBar()->setValue(old_scrollbar_value);
+	}
+	else
+	{
+		// The user hasn't selected any text and the scrollbar is at the bottom: scroll to the bottom.
+		monWindowCopy->moveCursor(QTextCursor::End);
+		monWindowCopy->verticalScrollBar()->setValue(monWindowCopy->verticalScrollBar()->maximum());
+	}
+
+	free(Msg);
+}
+
+
+// I think this does the waterfall
+
+typedef struct TRGBQ_t
+{
+	Byte b, g, r, re;
+
+} TRGBWQ;
+
+typedef struct tagRECT
+{
+	int    left;
+	int    top;
+	int    right;
+	int    bottom;
+} RECT;
+
+unsigned int RGBWF[256] ;
+
+
+extern "C" void init_raduga()
+{
+	Byte offset[6] = {0, 51, 102, 153, 204};
+	Byte i, n;
+
+	for (n = 0; n < 52; n++)
+	{
+		i = n * 5;
+
+		RGBWF[n + offset[0]] = qRgb(0, 0, i);
+		RGBWF[n + offset[1]] = qRgb(0, i, 255);
+		RGBWF[n + offset[2]] = qRgb(0, 255, 255 - i);
+		RGBWF[n + offset[3]] = qRgb(1, 255, 0);
+		RGBWF[n + offset[4]] = qRgb(255, 255 - 1, 0);
+	}
+}
+
+extern "C" int nonGUIMode;
+
+
+// This draws the Frequency Scale on Waterfall
+
+extern "C" void wf_Scale(int Chan)
+{
+	if (nonGUIMode)
+		return;
+
+	float k;
+	int maxfreq, x, i;
+	char Textxx[20];
+	QImage * bm = Header[Chan];
+
+	QPainter qPainter(bm);
+	qPainter.setBrush(Qt::black);
+	qPainter.setPen(Qt::white);
+
+	maxfreq = roundf(RX_Samplerate*0.005);
+	k = 100 * fft_size / RX_Samplerate;
+
+	if (Chan == 0)
+		sprintf(Textxx, "Left");
+	else
+		sprintf(Textxx, "Right");
+
+	qPainter.drawText(2, 1,
+		100, 20, 0, Textxx);
+
+	for (i = 0; i < maxfreq; i++)
+	{
+		x = round(k*i);
+		if (x < 1025)
+		{
+			if ((i % 5) == 0)
+				qPainter.drawLine(x, 20, x, 13);
+			else
+				qPainter.drawLine(x, 20, x, 16);
+
+			if ((i % 10) == 0)
+			{
+				sprintf(Textxx, "%d", i * 100);
+
+				qPainter.drawText(x - 12, 1,
+					100, 20, 0, Textxx);
+			}
+		}
+	}
+	HeaderCopy[Chan]->setPixmap(QPixmap::fromImage(*bm));
+
+}
+
+// This draws the frequency Markers on the Waterfall
+
+
+void do_pointer(int waterfall)
+{
+	if (nonGUIMode)
+		return;
+
+	float x;
+
+	int x1, x2, k, pos1, pos2, pos3;
+	QImage * bm = Header[waterfall];
+
+	QPainter qPainter(bm);
+	qPainter.setBrush(Qt::NoBrush);
+	qPainter.setPen(Qt::white);
+
+	//	bm->fill(black);
+
+	qPainter.fillRect(0, 26, 1024, 9, Qt::black);
+
+	k = 29;
+	x = fft_size / RX_Samplerate;
+
+	// draw all enabled ports on the ports on this soundcard
+
+	// First Modem is always on the first waterfall
+	// If second is enabled it is on the first unless different
+	//		channel from first
+
+	for (int i = 0; i < 4; i++)
+	{
+		if (UsingBothChannels == 0)
+		{
+			// Only One Waterfall. If first chan is 
+
+			if ((waterfall == 0 && soundChannel[i] == RIGHT) || (waterfall == 1 && soundChannel[i] == LEFT))
+				return;
+		}
+
+		if (soundChannel[i] == 0)
+			continue;
+
+
+		if (UsingBothChannels == 1)
+			if ((waterfall == 0 && soundChannel[i] == RIGHT) || (waterfall == 1 && soundChannel[i] == LEFT))
+				continue;
+
+		pos1 = roundf(((rxOffset + chanOffset[i] + rx_freq[i]) - 0.5*rx_shift[i])*x) - 5;
+		pos2 = roundf(((rxOffset + chanOffset[i] + rx_freq[i]) + 0.5*rx_shift[i])*x) - 5;
+		pos3 = roundf((rxOffset + chanOffset[i] + rx_freq[i]) * x);
+		x1 = pos1 + 5;
+		x2 = pos2 + 5;
+
+		qPainter.setPen(Qt::white);
+		qPainter.drawLine(x1, k, x2, k);
+		qPainter.drawLine(x1, k - 3, x1, k + 3);
+		qPainter.drawLine(x2, k - 3, x2, k + 3);
+		qPainter.drawLine(pos3, k - 3, pos3, k + 3);
+
+		if (rxOffset || chanOffset[i])
+		{
+			// Draw TX posn if rxOffset used
+
+			pos3 = roundf(rx_freq[i] * x);
+			qPainter.setPen(Qt::magenta);
+			qPainter.drawLine(pos3, k - 3, pos3, k + 3);
+			qPainter.drawLine(pos3, k - 3, pos3, k + 3);
+			qPainter.drawLine(pos3 - 2, k - 3, pos3 + 2, k - 3);
+
+		}
+	}
+	HeaderCopy[waterfall]->setPixmap(QPixmap::fromImage(*bm));
+}
+
+void wf_pointer(int snd_ch)
+{
+	UNUSED(snd_ch);
+
+	do_pointer(0);
+	do_pointer(1);
+//	do_pointer(2);
+//	do_pointer(3);
+}
+
+
+void doWaterfallThread(void * param);
+
+/*
+#ifdef WIN32
+
+#define pthread_t uintptr_t
+
+extern "C" uintptr_t _beginthread(void(__cdecl *start_address)(void *), unsigned stack_size, void *arglist);
+
+#else
+
+#include <pthread.h>
+
+extern "C" pthread_t _beginthread(void(*start_address)(void *), unsigned stack_size, void * arglist)
+{
+	pthread_t thread;
+
+	if (pthread_create(&thread, NULL, (void * (*)(void *))start_address, (void*)arglist) != 0)
+		perror("New Thread");
+	else
+		pthread_detach(thread);
+
+	return thread;
+}
+
+#endif
+*/
+extern "C" void doWaterfall(int snd_ch)
+{
+	if (nonGUIMode)
+		return;
+
+	if (Closing)
+		return;
+
+//	if (multiCore)			// Run modems in separate threads
+//		_beginthread(doWaterfallThread, 0, xx);
+//	else
+		doWaterfallThread((void *)(size_t)snd_ch);
+
+}
+
+
+extern "C" float aFFTAmpl[1024];
+
+void doWaterfallThread(void * param)
+{
+	int snd_ch = (int)(size_t)param;
+
+	QImage * bm = Waterfall[snd_ch];
+	
+	word  i, wid;
+	single  mag;
+	UCHAR * p;
+	UCHAR Line[4096];
+
+	int lineLen;
+	word  hfft_size;
+	Byte  n;
+	float RealOut[4096] = { 0 };
+	float ImagOut[4096];
+
+	QRegion exposed;
+
+	hfft_size = fft_size / 2;
+
+	// I think an FFT should produce n/2 bins, each of Samp/n Hz
+	// Looks like my code only works with n a power of 2
+
+	// So can use 1024 or 4096. 1024 gives 512 bins of 11.71875 and a 512 pixel 
+	// display (is this enough?)
+
+	// This does 2048
+
+	if (0)	//RSID_WF
+	{
+		// Use the Magnitudes in float aFFTAmpl[RSID_FFT_SIZE];
+
+		for (i = 0; i < hfft_size; i++)
+		{
+			mag = aFFTAmpl[i];
+
+			mag *= 0.00000042f;
+
+			if (mag < 0.00001f)
+				mag = 0.00001f;
+
+			if (mag > 1.0f)
+				mag = 1.0f;
+
+			mag = 22 * log2f(mag) + 255;
+
+			if (mag < 0)
+				mag = 0;
+
+			fft_disp[snd_ch][i] = round(mag);
+		}
+	}
+	else
+	{
+		dofft(&fft_buf[snd_ch][0], RealOut, ImagOut);
+
+		//	FourierTransform(1024, &fft_buf[snd_ch][0], RealOut, ImagOut, 0);
+
+		for (i = 0; i < hfft_size; i++)
+		{
+			//mag: = ComplexMag(fft_d[i])*0.00000042;
+
+	//		mag = sqrtf(powf(RealOut[i], 2) + powf(ImagOut[i], 2)) * 0.00000042f;
+
+			mag = powf(RealOut[i], 2);
+			mag += powf(ImagOut[i], 2);
+			mag = sqrtf(mag);
+			mag *= 0.00000042f;
+
+
+			if (mag > MaxMagOut)
+			{
+				MaxMagOut = mag;
+				MaxMagIndex = i;
+			}
+
+			if (mag < 0.00001f)
+				mag = 0.00001f;
+
+			if (mag > 1.0f)
+				mag = 1.0f;
+
+			mag = 22 * log2f(mag) + 255;
+
+			if (mag < 0)
+				mag = 0;
+
+			MagOut[i] = mag;
+			fft_disp[snd_ch][i] = round(mag);
+		}
+	}
+
+
+
+	/*
+		for (i = 0; i < hfft_size; i++)
+			fft[i] = (powf(RealOut[i], 2) + powf(ImagOut[i], 2));
+
+		for (i = 0; i < hfft_size; i++)
+		{
+			if (fft[i] > max)
+			{
+				max = fft[i];
+				imax = i;
+			}
+		}
+
+		if (max > 0)
+		{
+			for (i = 0; i < hfft_size; i++)
+				fft[i] = fft[i] / max;
+		}
+
+
+		for (i = 0; i < hfft_size; i++)
+		{
+			mag = fft[i];
+
+			if (mag < 0.00001f)
+				mag = 0.00001f;
+
+			if (mag > 1.0f)
+				mag = 1.0f;
+
+			mag = 22 * log2f(mag) + 255;
+
+			if (mag < 0)
+				mag = 0;
+
+			fft_disp[snd_ch][i] = round(mag);
+		}
+
+		*/
+
+	//	bm[snd_ch].Canvas.CopyRect(d, bm[snd_ch].canvas, s)
+
+	//pm->scroll(0, 1, 0, 0, 1024, 80, &exposed);
+
+	// Each bin is 12000 /2048 = 5.859375
+	// I think we plot at 6 Hz per pixel.
+
+	wid = bm->width();
+	if (wid > hfft_size)
+		wid = hfft_size;
+
+	wid = wid - 1;
+
+	p = Line;
+	lineLen = bm->bytesPerLine();
+
+	if (wid > lineLen / 4)
+		wid = lineLen / 4;
+
+	if (raduga == DISP_MONO)
+	{
+		for (i = 0; i < wid; i++)
+		{
+			n = fft_disp[snd_ch][i];
+			*(p++) = n;					// all colours the same
+			*(p++) = n;
+			*(p++) = n;
+			p++;
+		}
+	}
+	else
+	{
+		for (i = 0; i < wid; i++)
+		{
+			n = fft_disp[snd_ch][i];
+
+		memcpy(p, &RGBWF[n], 4);
+			p += 4;
+		}
+	}
+
+	// Scroll
+
+	int TopLine = NextWaterfallLine[snd_ch];
+
+	// Write line to cyclic buffer then draw starting with the line just written
+
+	memcpy(&WaterfallLines[snd_ch][NextWaterfallLine[snd_ch]++][0], Line, 4096);
+	if (NextWaterfallLine[snd_ch] > 79)
+		NextWaterfallLine[snd_ch] = 0;
+
+	for (int j = 79; j > 0; j--)
+	{
+		p = bm->scanLine(j);
+		memcpy(p, &WaterfallLines[snd_ch][TopLine][0], lineLen);
+		TopLine++;
+		if (TopLine > 79)
+			TopLine = 0;
+	}
+
+	WaterfallCopy[snd_ch]->setPixmap(QPixmap::fromImage(*bm));
+	//	WaterfallCopy[snd_ch - 1]->setPixmap(*pm);
+		//	WaterfallCopy[1]->setPixmap(QPixmap::fromImage(*bm));
+
+}
+
+
+
+void QtSoundModem::changeEvent(QEvent* e)
+{
+	if (e->type() == QEvent::WindowStateChange)
+	{
+		QWindowStateChangeEvent* ev = static_cast<QWindowStateChangeEvent*>(e);
+
+		qDebug() << windowState();
+
+		if (!(ev->oldState() & Qt::WindowMinimized) && windowState() & Qt::WindowMinimized)
+		{
+			if (trayIcon)
+				setVisible(false);
+		}
+//		if (!(ev->oldState() != Qt::WindowNoState) && windowState() == Qt::WindowNoState)
+//		{
+//			QMessageBox::information(this, "", "Window has been restored");
+//		}
+
+	}
+	QWidget::changeEvent(e);
+}
+
+#include <QCloseEvent>
+
+void QtSoundModem::closeEvent(QCloseEvent *event)
+{
+	UNUSED(event);
+
+	QSettings mysettings("QtSoundModem.ini", QSettings::IniFormat);
+	mysettings.setValue("geometry", QWidget::saveGeometry());
+	mysettings.setValue("windowState", saveState());
+
+	Closing = TRUE;
+	qDebug() << "Closing";
+
+	QThread::msleep(100);
+}
+
+	
+QtSoundModem::~QtSoundModem()
+{
+	qDebug() << "Saving Settings";
+		
+	QSettings mysettings("QtSoundModem.ini", QSettings::IniFormat);
+	mysettings.setValue("geometry", saveGeometry());
+	mysettings.setValue("windowState", saveState());
+	
+	saveSettings();	
+	Closing = TRUE;
+	qDebug() << "Closing";
+
+	QThread::msleep(100);
+}
+
+extern "C" void QSleep(int ms)
+{
+	QThread::msleep(ms);
+}
+
+int upd_time = 30;
+
+void QtSoundModem::show_grid()
+{
+	// This refeshes the session list
+
+	int  snd_ch, i, num_rows, row_idx;
+	QTableWidgetItem *item;
+	const char * msg;
+
+	int  speed_tx, speed_rx;
+
+	if (grid_time < 10)
+	{
+		grid_time++;
+		return;
+	}
+
+	grid_time = 0;
+
+	//label7.Caption = inttostr(stat_r_mem); mem_arq
+
+	num_rows = 0;
+	row_idx = 0;
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		for (i = 0; i < port_num; i++)
+		{
+			if (AX25Port[snd_ch][i].status != STAT_NO_LINK)
+				num_rows++;
+		}
+	}
+
+	if (num_rows == 0)
+	{
+		sessionTable->clearContents();
+		sessionTable->setRowCount(0);
+		sessionTable->setRowCount(1);
+	}
+	else
+		sessionTable->setRowCount(num_rows);
+
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		for (i = 0; i < port_num; i++)
+		{
+			if (AX25Port[snd_ch][i].status != STAT_NO_LINK)
+			{
+				switch (AX25Port[snd_ch][i].status)
+				{
+				case STAT_NO_LINK:
+
+					msg = "No link";
+					break;
+
+				case STAT_LINK:
+
+					msg = "Link";
+					break;
+
+				case STAT_CHK_LINK:
+
+					msg = "Chk link";
+					break;
+
+				case STAT_WAIT_ANS:
+
+					msg = "Wait ack";
+					break;
+
+				case STAT_TRY_LINK:
+
+					msg = "Try link";
+					break;
+
+				case STAT_TRY_UNLINK:
+
+					msg = "Try unlink";
+				}
+
+
+				item = new QTableWidgetItem((char *)AX25Port[snd_ch][i].mycall);
+				sessionTable->setItem(row_idx, 0, item);
+
+				item = new QTableWidgetItem(AX25Port[snd_ch][i].kind);
+				sessionTable->setItem(row_idx, 11, item);
+
+				item = new QTableWidgetItem((char *)AX25Port[snd_ch][i].corrcall);
+				sessionTable->setItem(row_idx, 1, item);
+
+				item = new QTableWidgetItem(msg);
+				sessionTable->setItem(row_idx, 2, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_s_pkt));
+				sessionTable->setItem(row_idx, 3, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_s_byte));
+				sessionTable->setItem(row_idx, 4, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_r_pkt));
+				sessionTable->setItem(row_idx, 5, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_r_byte));
+				sessionTable->setItem(row_idx, 6, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_r_fc));
+				sessionTable->setItem(row_idx, 7, item);
+
+				item = new QTableWidgetItem(QString::number(AX25Port[snd_ch][i].info.stat_fec_count));
+				sessionTable->setItem(row_idx, 8, item);
+
+				if (grid_timer != upd_time)
+					grid_timer++;
+				else
+				{
+					grid_timer = 0;
+					speed_tx = round(abs(AX25Port[snd_ch][i].info.stat_s_byte - AX25Port[snd_ch][i].info.stat_l_s_byte) / upd_time);
+					speed_rx = round(abs(AX25Port[snd_ch][i].info.stat_r_byte - AX25Port[snd_ch][i].info.stat_l_r_byte) / upd_time);
+
+					item = new QTableWidgetItem(QString::number(speed_tx));
+					sessionTable->setItem(row_idx, 9, item);
+
+					item = new QTableWidgetItem(QString::number(speed_rx));
+					sessionTable->setItem(row_idx, 10, item);
+
+					AX25Port[snd_ch][i].info.stat_l_r_byte = AX25Port[snd_ch][i].info.stat_r_byte;
+					AX25Port[snd_ch][i].info.stat_l_s_byte = AX25Port[snd_ch][i].info.stat_s_byte;	
+				}
+
+				row_idx++;
+			}
+		}
+	}
+}
+
+// "Copy on Select" Code
+
+void QtSoundModem::onTEselectionChanged()
+{
+	QTextEdit * x = static_cast<QTextEdit*>(QObject::sender());
+	x->copy();
+}
+
diff --git a/QtSoundModem.h b/QtSoundModem.h
new file mode 100644
index 0000000..ec0e5ea
--- /dev/null
+++ b/QtSoundModem.h
@@ -0,0 +1,106 @@
+#pragma once
+
+#include <QtWidgets/QMainWindow>
+#include "ui_QtSoundModem.h"
+#include "ui_calibrateDialog.h"
+#include "ui_devicesDialog.h"
+#include "ui_filterWindow.h"
+#include "ui_ModemDialog.h"
+#include "QThread"
+#include <QLabel>
+#include <QTableWidget>
+#include <QTcpServer>
+#include <QTcpSocket>
+#include <QUdpSocket>
+#include <QSystemTrayIcon>
+
+#include "tcpCode.h"
+
+
+class QtSoundModem : public QMainWindow
+{
+	Q_OBJECT
+
+public:
+
+	QtSoundModem(QWidget *parent = Q_NULLPTR);
+	void changeEvent(QEvent * e);
+	void closeEvent(QCloseEvent * event);
+	~QtSoundModem();
+
+	void RefreshWaterfall(int snd_ch, unsigned char * Data);
+	void initWaterfall(int chan, int state);
+	void show_grid();
+
+private slots:
+
+	void doDevices();
+	void MinimizetoTray();
+	void TrayActivated(QSystemTrayIcon::ActivationReason reason);
+	void CWIDTimer();
+	void MyTimerSlot();
+	void returnPressed();
+	void clickedSlotI(int i);
+	void doModems();
+	void doFilter(int Chan, int Filter);
+	void SoundModeChanged(bool State);
+	void DualPTTChanged(bool State);
+	void CATChanged(bool State);
+	void PTTPortChanged(int);
+	void deviceaccept();
+	void devicereject();
+	void modemaccept();
+	void modemSave();
+	void modemreject();
+	void doRSIDA();
+	void doRSIDB();
+	void doRSIDC();
+	void doRSIDD();
+	void handleButton(int Port, int Act);
+	void doCalibrate();
+	void doAbout();
+	void doRestartWF();
+	void doupdateDCD(int, int);
+	void sendtoTrace(char * Msg, int tx);
+	void preEmphAllAChanged(int);
+	void preEmphAllBChanged(int);
+	void preEmphAllCChanged(int state);
+	void preEmphAllDChanged(int state);
+	void menuChecked();
+	void onTEselectionChanged();
+	void clickedSlot();
+
+protected:
+	 
+	bool eventFilter(QObject * obj, QEvent * evt);
+	void resizeEvent(QResizeEvent *event) override;
+
+private:
+	Ui::QtSoundModemClass ui;
+	QTableWidget* sessionTable;
+	QStringList m_TableHeader;
+
+	QMenu *setupMenu;
+	QMenu *viewMenu;
+
+	QAction *actDevices;
+	QAction *actModems;
+	QAction *actMintoTray;
+	QAction *actCalib;
+	QAction *actAbout;
+	QAction *actRestartWF;
+	QAction *actWaterfall1;
+	QAction *actWaterfall2;
+
+
+	void RefreshSpectrum(unsigned char * Data);
+};
+
+class myResize : public QObject
+{
+	Q_OBJECT
+
+protected:
+	bool eventFilter(QObject *obj, QEvent *event) override;
+};
+
diff --git a/QtSoundModem.ico b/QtSoundModem.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c8243311c2ccb529cb00645c570b6e6a4c56bf60
GIT binary patch
literal 766
zcmZQzU<5)11py$*!tjELfkBLcfk6X^6@b_Qh(Y4$KmaPh!p6hU($>PzbL<a;j9U)F
zkzGd^&Kx_#kg}<Ufyb<eVGoF1Rl@M+-yepSeSa9XJo>}H!sNp+WzrO|3IAyhJ|H<A
zWEm2df&c%1WN8KlAU`zJH6+y4)g{Em#RbHFfY87K;xkNu3$TLtoHH2`Y>KL@i)w12
z^2`agwIE;s<~xAG@B$DpFmOQ32ipL)1IR~r&woZqK`4+E0J-;r9E>jrbS@Au!uVim
zpaP&nLBJIvjW7|cdWaG~7#R40QN#X#fq@wx2B`sJexQ2!KMV}^{}>qRfk8^NuL1V1
B!^;2w

literal 0
HcmV?d00001

diff --git a/QtSoundModem.ini b/QtSoundModem.ini
new file mode 100644
index 0000000..74906e2
--- /dev/null
+++ b/QtSoundModem.ini
@@ -0,0 +1,195 @@
+[General]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\xb5\0\0\0\xa1\0\0\x4\xb2\0\0\x3v\0\0\0\xb6\0\0\0\xc0\0\0\x4\xb1\0\0\x3u\0\0\0\0\0\0\0\0\x5\0\0\0\0\xb6\0\0\0\xc0\0\0\x4\xb1\0\0\x3u)
+windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\xfc\0\0\x2\xa1\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)
+
+[Init]
+TXSampleRate=12000
+RXSampleRate=12000
+SndRXDeviceName="CABLE-A OUTPUT (VB-AUDIO CABLE "
+SndTXDeviceName=CABLE INPUT (VB-AUDIO VIRTUAL C
+DualChan=2
+SCO=0
+DualPTT=1
+PTT=HAMLIB
+TXRotate=1
+DispMode=1
+SoundMode=0
+UDPClientPort=8888
+UDPServerPort=8884
+UDPServer=0
+PTTBAUD=19200
+PTTMode=17
+PTTOffString=
+PTTOnString=127.0.0.1
+pttGPIOPin=17
+pttGPIOPinR=17
+CM108Addr=0xD8C:0x08
+HamLibPort=4532
+HamLibHost=127.0.0.1
+MinimizetoTray=0
+multiCore=0
+UDPHost=127.0.0.1
+TXPort=8888
+
+[Modem]
+RXFreq1=1100
+RXFreq2=2000
+ModemType1=0
+ModemType2=0
+DCDThreshold=36
+NRRcvrPairs1=2
+NRRcvrPairs2=2
+RcvrShift1=30
+RcvrShift2=30
+soundChannel1=1
+soundChannel2=1
+RawPktMinLen=17
+SwapPTTPins=0
+PreEmphasisDB1=0
+PreEmphasisDB2=0
+PreEmphasisAll1=1
+PreEmphasisAll2=0
+Default1=1
+Default2=1
+HoldPnt=0
+AFC=32
+TxDelay1=250
+TxDelay2=250
+TxTail1=50
+TxTail2=50
+Diddles=0
+InvPTTPins=0
+RXFreq3=2000
+NRRcvrPairs3=2
+NRRcvrPairs4=0
+RcvrShift3=30
+RcvrShift4=30
+ModemType3=0
+ModemType4=0
+soundChannel3=0
+soundChannel4=0
+PreEmphasisAll3=1
+PreEmphasisAll4=0
+PreEmphasisDB3=0
+PreEmphasisDB4=0
+TxDelay3=250
+TxDelay4=250
+TxTail3=50
+TxTail4=50
+RXFreq4=2700
+CWIDCall=
+CWIDInterval=0
+CWIDLeft=0
+CWIDRight=0
+CWIDType=1
+
+[AGWHost]
+Server=1
+Port=8009
+
+[KISS]
+Server=0
+Port=8100
+
+[AX25_A]
+Maxframe=2
+Retries=8
+FrackTime=5
+IdleTime=180
+SlotTime=100
+Persist=128
+RespTime=2000
+TXFrmMode=1
+FrameCollector=6
+ExcludeCallsigns=
+ExcludeAPRSFrmType=
+KISSOptimization=1
+DynamicFrack=0
+BitRecovery=0
+NonAX25Frm=1
+MEMRecovery=200
+IPOLL=80
+MyDigiCall=
+HiToneRaise=0
+soundChannel=1
+FX25=2
+
+[AX25_B]
+Maxframe=2
+Retries=5
+FrackTime=5
+IdleTime=180
+SlotTime=100
+Persist=128
+RespTime=2000
+TXFrmMode=1
+FrameCollector=6
+ExcludeCallsigns=
+ExcludeAPRSFrmType=
+KISSOptimization=1
+DynamicFrack=0
+BitRecovery=0
+NonAX25Frm=1
+MEMRecovery=200
+IPOLL=80
+MyDigiCall=
+HiToneRaise=0
+soundChannel=0
+FX25=2
+
+[Window]
+Top=281
+Left=73
+Height=735
+Width=810
+Waterfall1=1
+Waterfall2=1
+StatTable=1
+Monitor=1
+MinimizedOnStartup=0
+
+[Font]
+Size=8
+Name=MS Sans Serif
+
+[AX25_C]
+Retries=15
+HiToneRaise=0
+Maxframe=3
+FrackTime=5
+IdleTime=180
+SlotTime=100
+Persist=128
+RespTime=1500
+TXFrmMode=1
+FrameCollector=6
+ExcludeCallsigns=
+ExcludeAPRSFrmType=
+KISSOptimization=0
+DynamicFrack=0
+BitRecovery=0
+NonAX25Frm=0
+IPOLL=80
+MyDigiCall=
+FX25=1
+
+[AX25_D]
+Retries=15
+HiToneRaise=0
+Maxframe=3
+FrackTime=5
+IdleTime=180
+SlotTime=100
+Persist=128
+RespTime=1500
+TXFrmMode=1
+FrameCollector=6
+ExcludeCallsigns=
+ExcludeAPRSFrmType=
+KISSOptimization=0
+DynamicFrack=0
+BitRecovery=0
+NonAX25Frm=0
+IPOLL=80
+MyDigiCall=
+FX25=1
diff --git a/QtSoundModem.pri b/QtSoundModem.pri
new file mode 100644
index 0000000..fca9aab
--- /dev/null
+++ b/QtSoundModem.pri
@@ -0,0 +1,36 @@
+# ----------------------------------------------------
+# This file is generated by the Qt Visual Studio Tools.
+# ------------------------------------------------------
+
+# This is a reminder that you are using a generated .pro file.
+# Remove it when you are finished editing this file.
+message("You are running qmake on a generated .pro file. This may not work!")
+
+
+HEADERS += ./UZ7HOStuff.h \
+    ./QtSoundModem.h \
+    ./tcpCode.h
+SOURCES += ./ax25.c \
+    ./ax25_agw.c \
+    ./ax25_demod.c \
+    ./ax25_l2.c \
+    ./ax25_mod.c \
+    ./berlekamp.c \
+    ./Config.cpp \
+    ./galois.c \
+    ./kiss_mode.c \
+    ./main.cpp \
+    ./QtSoundModem.cpp \
+    ./rs.c \
+    ./ShowFilter.cpp \
+    ./SMMain.c \
+    ./sm_main.c \
+    ./UZ7HOUtils.c \
+    ./Waveout.c \
+    ./tcpCode.cpp
+FORMS += ./calibrateDialog.ui \
+    ./devicesDialog.ui \
+    ./filterWindow.ui \
+    ./ModemDialog.ui \
+    ./QtSoundModem.ui
+RESOURCES += QtSoundModem.qrc
diff --git a/QtSoundModem.pro b/QtSoundModem.pro
new file mode 100644
index 0000000..db1a6af
--- /dev/null
+++ b/QtSoundModem.pro
@@ -0,0 +1,63 @@
+
+QT += core gui
+QT += network
+QT += serialport
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = QtSoundModem
+TEMPLATE = app
+
+
+HEADERS += ./UZ7HOStuff.h \
+    ./QtSoundModem.h \
+    ./tcpCode.h
+
+SOURCES += ./audio.c \
+    ./pulse.c \
+    ./ax25.c \
+    ./ax25_demod.c \
+    ./ax25_l2.c \
+    ./ax25_mod.c \
+    ./Config.cpp \
+    ./kiss_mode.c \
+    ./main.cpp \
+    ./QtSoundModem.cpp \
+    ./ShowFilter.cpp \
+    ./SMMain.c \
+    ./sm_main.c \
+    ./UZ7HOUtils.c \
+    ./ALSASound.c \
+        ./ax25_agw.c \
+        ./berlekamp.c \
+        ./galois.c \
+        ./rs.c \
+       ./rsid.c \
+	./il2p.c \
+    ./tcpCode.cpp \
+    ./ax25_fec.c \
+    ./RSUnit.c \
+	./ARDOPC.c \
+    ./ardopSampleArrays.c \
+    ./SoundInput.c \
+    ./Modulate.c \
+    ./ofdm.c \
+    ./pktARDOP.c \
+     ./BusyDetect.c
+
+
+
+FORMS += ./calibrateDialog.ui \
+    ./devicesDialog.ui \
+    ./filterWindow.ui \
+    ./ModemDialog.ui \
+    ./QtSoundModem.ui
+
+RESOURCES += QtSoundModem.qrc
+RC_ICONS = QtSoundModem.ico
+
+QMAKE_CFLAGS += -g
+#QMAKE_LFLAGS += -lasound -lpulse-simple -lpulse -lfftw3f
+QMAKE_LIBS += -lasound -lfftw3f -ldl
+
+
diff --git a/QtSoundModem.qrc b/QtSoundModem.qrc
new file mode 100644
index 0000000..7500e30
--- /dev/null
+++ b/QtSoundModem.qrc
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/QtSoundModem">
+        <file>soundmodem.ico</file>
+    </qresource>
+</RCC>
diff --git a/QtSoundModem.rc b/QtSoundModem.rc
new file mode 100644
index 0000000000000000000000000000000000000000..616f0270db0cbec3cee908364b81dbfb28eedd20
GIT binary patch
literal 5232
zcmdUzU2hsk6o$`rrT&L0zG$PSHg+vFy^Jw-k+C7+Lv3XVxwavw1}r|>MCxx(`n)p?
zyUQ+aO>;rD8fJIqoHOV1of$rTJg@_Ec4<SqwW&>PM(f+0u`XjXTiA^~@Kv#Id7KUG
z-o~^k<8%5u#-{Y*Tkv+vyW>mJhV}@}zI|z5u*$)z-(zMB#RD97p1zcmv2X9J<T=E>
z=jr;MPx4<|(^}THj-6V~8rHM7R%P^*_baR0FO0PKy|fcX>byrCq{r?(QM=eXJI62U
ze(vL?iH)#-j(6mTHdg=4Zw;#}*eQQh89$<}M<pAFq8R+?{TukQ{@*>1MU6ssEbx^w
zsgK>;<wo>;l)GDf)XovzF*W!=q-NxRvu}v`n6Fri7e0mqyrE2aQIH3-R8<YV$G*x`
z*Bvrn+ZlNks;Wf=b*QfjYxl^nI*;W3#p5<|wvq9cEbhT|MgPLDT4z*W9r|;hsc|II
z)yd_S{bVnZ-Gc6f)dJ5tMUUBwHCs04fGVVmB^RuE`oBYi;yRC6p<Yc@Urg!z{0X+7
zd#n((TRtVwHIK(7%cDWbu0fS+@+}~9BH`M~%P~be_*ZLuzokacUFUGib@CYb4*QC2
z+4G2ehp&V(;Sov{Ax=KqVvKeRSJK)@Lw(0yCjjm9Gc2AE^Ee(Y=~ACPXsXnC%kRQh
ze9Q7P>P+0}nK&+P2Sts#uCCEIJpXdlj>+dh-DHIZS=9l9+E4Nv+3}Jmu5jk@;~Why
z!I2jAuT|cYnSEv?U)kSZ?H)q7DyY+;QnI=xl7fW875_bWJi}K{)0b29+O4!|mZO1w
zLH02^>N#HWBpz#Xs%fHOR)=IhU}lyou3TLILf8hLm1jz5Fem21g8@+*V%a^h8l&rE
zt?G-V#mdM^E!!)s`O#bS8^2lnNO+3yDbB{eOB{95kq=7ft$ps1)9Bbfkb5_L-7~KJ
zqeKi}5zD5%*|1`<%xL#1lF}#HPzO<Vg%z5tKE-2>UZ~KqU+o8WuZDdMr*<%%iWTik
z-n2W7w$db9iBW?xXY1HhEyZ3fwox(FnPEz=6aKpA-Y{FF{XRVJY0p`!4*kHdqG&x5
zCuP`x^UEALAyWAnooy=qq;Z6mhh)!p*jV;Wm@BUezlZqw!pl_-+#+>hzh`3c99<hr
z-BbbcOUwm*r8Dbu`lrd7%8muv&;NBKo?}&Zg@4W_;b^h^WPgu&l^@C0eizS8SAN_E
zOR^Q;Mw%i$BRaZ+rmIrO9*{;^b?9@YyhPccZ=!ATCKOgn?}oee9<__T1Cwvbnf$IS
zy^~qzPjR{}I=nUEONb`Cs<F>G`vVW^7OuPGqxYxo@4D0LuC2Xav~xHe<MO%g_@cgn
zUL5-0Ac=zW-)X(VJ#++(DoU6b^wz0D(j_(E=h#bqK&Jjb_^_NE(TAI>G_Ls*Mg@Gm
zBDygHi~AbrA-dw({Ah`lB3h4l3uwK+v?x@A{J;4e__^+8yOn!sZDfDCg|pLBckld3
vI4y6t-eYye{=fbUquWpZh7qNw{kU6xNNXc4H)s5qI#KoJ|8vR5U6TF=K2~yO

literal 0
HcmV?d00001

diff --git a/QtSoundModem.ui b/QtSoundModem.ui
new file mode 100644
index 0000000..d99c2c1
--- /dev/null
+++ b/QtSoundModem.ui
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>QtSoundModemClass</class>
+ <widget class="QMainWindow" name="QtSoundModemClass">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>962</width>
+    <height>721</height>
+   </rect>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>1024</width>
+    <height>16777215</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>QtSoundModem</string>
+  </property>
+  <property name="windowIcon">
+   <iconset resource="QtSoundModem.qrc">
+    <normaloff>:/QtSoundModem/soundmodem.ico</normaloff>:/QtSoundModem/soundmodem.ico</iconset>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <widget class="QSpinBox" name="centerA">
+    <property name="geometry">
+     <rect>
+      <x>174</x>
+      <y>6</y>
+      <width>56</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="maximum">
+     <number>3000</number>
+    </property>
+    <property name="value">
+     <number>1500</number>
+    </property>
+   </widget>
+   <widget class="QComboBox" name="modeB">
+    <property name="geometry">
+     <rect>
+      <x>316</x>
+      <y>6</y>
+      <width>145</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="WaterfallB">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>586</y>
+      <width>959</width>
+      <height>80</height>
+     </rect>
+    </property>
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>600</width>
+      <height>80</height>
+     </size>
+    </property>
+    <property name="maximumSize">
+     <size>
+      <width>5000</width>
+      <height>100</height>
+     </size>
+    </property>
+    <property name="font">
+     <font>
+      <pointsize>8</pointsize>
+     </font>
+    </property>
+    <property name="frameShape">
+     <enum>QFrame::Box</enum>
+    </property>
+    <property name="frameShadow">
+     <enum>QFrame::Plain</enum>
+    </property>
+    <property name="text">
+     <string>Waterfall</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label_2">
+    <property name="geometry">
+     <rect>
+      <x>6</x>
+      <y>7</y>
+      <width>16</width>
+      <height>18</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>A:</string>
+    </property>
+   </widget>
+   <widget class="QSpinBox" name="centerB">
+    <property name="geometry">
+     <rect>
+      <x>468</x>
+      <y>6</y>
+      <width>56</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="maximum">
+     <number>3000</number>
+    </property>
+    <property name="value">
+     <number>1500</number>
+    </property>
+   </widget>
+   <widget class="QLabel" name="WaterfallA">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>488</y>
+      <width>953</width>
+      <height>80</height>
+     </rect>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>600</width>
+      <height>80</height>
+     </size>
+    </property>
+    <property name="maximumSize">
+     <size>
+      <width>5000</width>
+      <height>100</height>
+     </size>
+    </property>
+    <property name="font">
+     <font>
+      <pointsize>8</pointsize>
+     </font>
+    </property>
+    <property name="frameShape">
+     <enum>QFrame::Box</enum>
+    </property>
+    <property name="frameShadow">
+     <enum>QFrame::Plain</enum>
+    </property>
+    <property name="text">
+     <string>Waterfall</string>
+    </property>
+   </widget>
+   <widget class="QComboBox" name="modeA">
+    <property name="geometry">
+     <rect>
+      <x>22</x>
+      <y>6</y>
+      <width>145</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label">
+    <property name="geometry">
+     <rect>
+      <x>690</x>
+      <y>0</y>
+      <width>73</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>DCD Level</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+   </widget>
+   <widget class="QLabel" name="labelB">
+    <property name="geometry">
+     <rect>
+      <x>300</x>
+      <y>9</y>
+      <width>16</width>
+      <height>14</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>B:</string>
+    </property>
+   </widget>
+   <widget class="QSlider" name="DCDSlider">
+    <property name="geometry">
+     <rect>
+      <x>690</x>
+      <y>18</y>
+      <width>73</width>
+      <height>14</height>
+     </rect>
+    </property>
+    <property name="orientation">
+     <enum>Qt::Horizontal</enum>
+    </property>
+    <property name="tickPosition">
+     <enum>QSlider::NoTicks</enum>
+    </property>
+    <property name="tickInterval">
+     <number>10</number>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="holdPointers">
+    <property name="geometry">
+     <rect>
+      <x>782</x>
+      <y>6</y>
+      <width>93</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Hold Pointers</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="HeaderA">
+    <property name="geometry">
+     <rect>
+      <x>25</x>
+      <y>460</y>
+      <width>1076</width>
+      <height>30</height>
+     </rect>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>600</width>
+      <height>10</height>
+     </size>
+    </property>
+    <property name="maximumSize">
+     <size>
+      <width>5000</width>
+      <height>100</height>
+     </size>
+    </property>
+    <property name="font">
+     <font>
+      <pointsize>8</pointsize>
+     </font>
+    </property>
+    <property name="frameShape">
+     <enum>QFrame::Box</enum>
+    </property>
+    <property name="frameShadow">
+     <enum>QFrame::Plain</enum>
+    </property>
+    <property name="text">
+     <string>Waterfall</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="HeaderB">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>560</y>
+      <width>1076</width>
+      <height>30</height>
+     </rect>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>600</width>
+      <height>10</height>
+     </size>
+    </property>
+    <property name="maximumSize">
+     <size>
+      <width>5000</width>
+      <height>100</height>
+     </size>
+    </property>
+    <property name="font">
+     <font>
+      <pointsize>8</pointsize>
+     </font>
+    </property>
+    <property name="frameShape">
+     <enum>QFrame::Box</enum>
+    </property>
+    <property name="frameShadow">
+     <enum>QFrame::Plain</enum>
+    </property>
+    <property name="text">
+     <string>Waterfall</string>
+    </property>
+   </widget>
+   <widget class="QTextEdit" name="monWindow">
+    <property name="geometry">
+     <rect>
+      <x>-6</x>
+      <y>60</y>
+      <width>971</width>
+      <height>201</height>
+     </rect>
+    </property>
+    <property name="readOnly">
+     <bool>true</bool>
+    </property>
+   </widget>
+   <widget class="QLabel" name="labelC">
+    <property name="geometry">
+     <rect>
+      <x>5</x>
+      <y>32</y>
+      <width>16</width>
+      <height>18</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>C:</string>
+    </property>
+   </widget>
+   <widget class="QComboBox" name="modeC">
+    <property name="geometry">
+     <rect>
+      <x>22</x>
+      <y>31</y>
+      <width>145</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QSpinBox" name="centerD">
+    <property name="geometry">
+     <rect>
+      <x>468</x>
+      <y>31</y>
+      <width>56</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="maximum">
+     <number>3000</number>
+    </property>
+    <property name="value">
+     <number>1500</number>
+    </property>
+   </widget>
+   <widget class="QComboBox" name="modeD">
+    <property name="geometry">
+     <rect>
+      <x>316</x>
+      <y>31</y>
+      <width>145</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="labelD">
+    <property name="geometry">
+     <rect>
+      <x>298</x>
+      <y>33</y>
+      <width>16</width>
+      <height>14</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>D:</string>
+    </property>
+   </widget>
+   <widget class="QSpinBox" name="centerC">
+    <property name="geometry">
+     <rect>
+      <x>174</x>
+      <y>31</y>
+      <width>56</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="maximum">
+     <number>3000</number>
+    </property>
+    <property name="value">
+     <number>1500</number>
+    </property>
+   </widget>
+   <widget class="QSlider" name="RXOffset">
+    <property name="geometry">
+     <rect>
+      <x>600</x>
+      <y>18</y>
+      <width>63</width>
+      <height>14</height>
+     </rect>
+    </property>
+    <property name="minimum">
+     <number>-200</number>
+    </property>
+    <property name="maximum">
+     <number>200</number>
+    </property>
+    <property name="value">
+     <number>0</number>
+    </property>
+    <property name="orientation">
+     <enum>Qt::Horizontal</enum>
+    </property>
+    <property name="tickPosition">
+     <enum>QSlider::NoTicks</enum>
+    </property>
+    <property name="tickInterval">
+     <number>10</number>
+    </property>
+   </widget>
+   <widget class="QLabel" name="RXOffsetLabel">
+    <property name="geometry">
+     <rect>
+      <x>600</x>
+      <y>2</y>
+      <width>87</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>RX Offset 0</string>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="RXOffsetA">
+    <property name="geometry">
+     <rect>
+      <x>238</x>
+      <y>6</y>
+      <width>37</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>0</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="RXOffsetB">
+    <property name="geometry">
+     <rect>
+      <x>532</x>
+      <y>6</y>
+      <width>37</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>0</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="RXOffsetC">
+    <property name="geometry">
+     <rect>
+      <x>238</x>
+      <y>31</y>
+      <width>37</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>0</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="RXOffsetD">
+    <property name="geometry">
+     <rect>
+      <x>532</x>
+      <y>31</y>
+      <width>37</width>
+      <height>20</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>0</string>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>962</width>
+     <height>21</height>
+    </rect>
+   </property>
+  </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+  <include location="QtSoundModem.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/QtSoundModem.vcxproj b/QtSoundModem.vcxproj
new file mode 100644
index 0000000..3c6f618
--- /dev/null
+++ b/QtSoundModem.vcxproj
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4EDE958E-D0AC-37B4-81F7-78313A262DCD}</ProjectGuid>
+    <RootNamespace>QtSoundModem</RootNamespace>
+    <Keyword>QtVS_v304</Keyword>
+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+    <WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion>
+    <QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <PlatformToolset>v141</PlatformToolset>
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>QtSoundModem</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <PlatformToolset>v141</PlatformToolset>
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>QtSoundModem</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
+    <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
+  </Target>
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+    <Import Project="$(QtMsBuild)\qt_defaults.props" />
+  </ImportGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\</IntDir>
+    <TargetName>QtSoundModem</TargetName>
+    <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\\</IntDir>
+    <TargetName>QtSoundModem</TargetName>
+    <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <QtInstall>5.14.2</QtInstall>
+    <QtModules>core;network;gui;widgets;serialport</QtModules>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <QtInstall>5.14.2</QtInstall>
+    <QtModules>core;network;gui;widgets;serialport</QtModules>
+  </PropertyGroup>
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
+    <Import Project="$(QtMsBuild)\qt.props" />
+  </ImportGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>rsid;.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <DebugInformationFormat>None</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(OutDir)QtSoundModem.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Windows</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <QtMoc>
+      <CompilerFlavor>msvc</CompilerFlavor>
+      <Include>./$(Configuration)/moc_predefs.h</Include>
+      <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
+      <DynamicSource>output</DynamicSource>
+      <QtMocDir>$(IntDir)</QtMocDir>
+      <QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
+    </QtMoc>
+    <QtRcc>
+      <InitFuncName>QtSoundModem</InitFuncName>
+      <Compression>default</Compression>
+      <ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
+      <QtRccDir>$(IntDir)</QtRccDir>
+      <QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
+    </QtRcc>
+    <QtUic>
+      <ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
+      <QtUicDir>$(IntDir)</QtUicDir>
+      <QtUicFileName>ui_%(Filename).h</QtUicFileName>
+    </QtUic>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;debug;/include;rsid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Windows</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+    <QtMoc>
+      <CompilerFlavor>msvc</CompilerFlavor>
+      <Include>./$(Configuration)/moc_predefs.h</Include>
+      <ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
+      <DynamicSource>output</DynamicSource>
+      <QtMocDir>$(IntDir)</QtMocDir>
+      <QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
+    </QtMoc>
+    <QtRcc>
+      <InitFuncName>QtSoundModem</InitFuncName>
+      <Compression>default</Compression>
+      <ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
+      <QtRccDir>$(IntDir)</QtRccDir>
+      <QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
+    </QtRcc>
+    <QtUic>
+      <ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
+      <QtUicDir>$(IntDir)</QtUicDir>
+      <QtUicFileName>ui_%(Filename).h</QtUicFileName>
+    </QtUic>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ARDOPC.c" />
+    <ClCompile Include="BusyDetect.c" />
+    <ClCompile Include="Config.cpp" />
+    <ClCompile Include="hid.c" />
+    <ClCompile Include="il2p.c">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsC</CompileAs>
+    </ClCompile>
+    <ClCompile Include="Modulate.c" />
+    <ClCompile Include="QtSoundModem.cpp" />
+    <ClCompile Include="rsid.c" />
+    <ClCompile Include="RSUnit.c" />
+    <ClCompile Include="SMMain.c" />
+    <ClCompile Include="ShowFilter.cpp" />
+    <ClCompile Include="SoundInput.c" />
+    <ClCompile Include="UZ7HOUtils.c" />
+    <ClCompile Include="ardopSampleArrays.c" />
+    <ClCompile Include="ax25.c" />
+    <ClCompile Include="ax25_agw.c" />
+    <ClCompile Include="ax25_demod.c" />
+    <ClCompile Include="ax25_fec.c" />
+    <ClCompile Include="ax25_l2.c" />
+    <ClCompile Include="ax25_mod.c" />
+    <ClCompile Include="berlekamp.c" />
+    <ClCompile Include="galois.c" />
+    <ClCompile Include="kiss_mode.c" />
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="ofdm.c" />
+    <ClCompile Include="pktARDOP.c" />
+    <ClCompile Include="rs.c" />
+    <ClCompile Include="sm_main.c" />
+    <ClCompile Include="tcpCode.cpp" />
+    <ClCompile Include="Waveout.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <QtMoc Include="QtSoundModem.h">
+    </QtMoc>
+    <ClInclude Include="UZ7HOStuff.h" />
+    <QtMoc Include="tcpCode.h">
+    </QtMoc>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="debug\moc_predefs.h.cbt">
+      <FileType>Document</FileType>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;debug\moc_predefs.h</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generate moc_predefs.h</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\moc_predefs.h;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="release\moc_predefs.h.cbt">
+      <FileType>Document</FileType>
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2&gt;NUL &gt;release\moc_predefs.h</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generate moc_predefs.h</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\moc_predefs.h;%(Outputs)</Outputs>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <QtUic Include="ModemDialog.ui">
+    </QtUic>
+    <QtUic Include="QtSoundModem.ui">
+    </QtUic>
+    <QtUic Include="calibrateDialog.ui">
+    </QtUic>
+    <QtUic Include="devicesDialog.ui">
+    </QtUic>
+    <QtUic Include="filterWindow.ui">
+    </QtUic>
+  </ItemGroup>
+  <ItemGroup>
+    <QtRcc Include="QtSoundModem.qrc">
+    </QtRcc>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include=".\QtSoundModem_resource.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="QtSoundModem.ico" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
+    <Import Project="$(QtMsBuild)\qt.targets" />
+  </ImportGroup>
+  <ImportGroup Label="ExtensionTargets" />
+</Project>
\ No newline at end of file
diff --git a/QtSoundModem.vcxproj-HPLaptop.user b/QtSoundModem.vcxproj-HPLaptop.user
new file mode 100644
index 0000000..e83b49a
--- /dev/null
+++ b/QtSoundModem.vcxproj-HPLaptop.user
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LocalDebuggerWorkingDirectory>C:\Devprogs\bpq32\SMSat2</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerCommandArguments>
+    </LocalDebuggerCommandArguments>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerCommandArguments>&lt; d:\samples.wav</LocalDebuggerCommandArguments>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <QtLastBackgroundBuild>2022-12-30T15:55:55.0433562Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
+    <QtLastBackgroundBuild>2022-03-11T19:38:31.5906689Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <QtLastBackgroundBuild>2022-12-30T15:55:55.2283725Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
+    <QtLastBackgroundBuild>2022-03-11T19:38:33.3845083Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/QtSoundModem.vcxproj.filters b/QtSoundModem.vcxproj.filters
new file mode 100644
index 0000000..52c7e84
--- /dev/null
+++ b/QtSoundModem.vcxproj.filters
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Form Files">
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
+      <Extensions>ui</Extensions>
+      <ParseFiles>false</ParseFiles>
+    </Filter>
+    <Filter Include="Form Files">
+      <UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
+      <Extensions>ui</Extensions>
+      <ParseFiles>false</ParseFiles>
+    </Filter>
+    <Filter Include="Generated Files">
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
+    </Filter>
+    <Filter Include="Generated Files">
+      <UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
+      <Extensions>qrc;*</Extensions>
+      <ParseFiles>false</ParseFiles>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
+      <Extensions>qrc;*</Extensions>
+      <ParseFiles>false</ParseFiles>
+    </Filter>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="ARDOPC.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="BusyDetect.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Config.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Modulate.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="QtSoundModem.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="RSUnit.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SMMain.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ShowFilter.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="SoundInput.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="UZ7HOUtils.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ardopSampleArrays.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25_agw.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25_demod.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25_fec.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25_l2.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ax25_mod.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="berlekamp.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="galois.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="kiss_mode.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="main.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="ofdm.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="pktARDOP.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="rs.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="sm_main.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="tcpCode.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Waveout.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="hid.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="rsid.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="il2p.c">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <QtMoc Include="QtSoundModem.h">
+      <Filter>Header Files</Filter>
+    </QtMoc>
+    <ClInclude Include="UZ7HOStuff.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <QtMoc Include="tcpCode.h">
+      <Filter>Header Files</Filter>
+    </QtMoc>
+  </ItemGroup>
+  <ItemGroup>
+    <CustomBuild Include="debug\moc_predefs.h.cbt">
+      <Filter>Generated Files</Filter>
+    </CustomBuild>
+    <CustomBuild Include="release\moc_predefs.h.cbt">
+      <Filter>Generated Files</Filter>
+    </CustomBuild>
+  </ItemGroup>
+  <ItemGroup>
+    <QtUic Include="ModemDialog.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
+    <QtUic Include="QtSoundModem.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
+    <QtUic Include="calibrateDialog.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
+    <QtUic Include="devicesDialog.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
+    <QtUic Include="filterWindow.ui">
+      <Filter>Form Files</Filter>
+    </QtUic>
+  </ItemGroup>
+  <ItemGroup>
+    <QtRcc Include="QtSoundModem.qrc">
+      <Filter>Resource Files</Filter>
+    </QtRcc>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include=".\QtSoundModem_resource.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="QtSoundModem.ico">
+      <Filter>Resource Files</Filter>
+    </Image>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/QtSoundModem.vcxproj.user b/QtSoundModem.vcxproj.user
new file mode 100644
index 0000000..7be613e
--- /dev/null
+++ b/QtSoundModem.vcxproj.user
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SM2</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerCommandArguments>
+    </LocalDebuggerCommandArguments>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerCommandArguments>&lt; d:\samples.wav</LocalDebuggerCommandArguments>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LocalDebuggerWorkingDirectory>.\debug</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <QtLastBackgroundBuild>2023-04-25T14:18:34.8597729Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
+    <QtLastBackgroundBuild>2022-03-11T19:38:31.5906689Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <QtLastBackgroundBuild>2023-04-25T14:18:38.8848952Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
+    <QtLastBackgroundBuild>2022-03-11T19:38:33.3845083Z</QtLastBackgroundBuild>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/QtSoundModemCopy.vcxproj b/QtSoundModemCopy.vcxproj
new file mode 100644
index 0000000..b455122
--- /dev/null
+++ b/QtSoundModemCopy.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B12702AD-ABFB-343A-A199-8E24837244A3}</ProjectGuid>
+    <Keyword>QtVS_v301</Keyword>
+    <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v141</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v141</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <PropertyGroup Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">
+    <QtMsBuild>$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\Copy\</OutDir>
+    <IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\Copy\</IntDir>
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <OutDir>$(SolutionDir)$(Platform)\$(Configuration)\Copy\</OutDir>
+    <LinkIncremental>true</LinkIncremental>
+    <IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\Copy\</IntDir>
+  </PropertyGroup>
+  <Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
+    <Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
+  </Target>
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Label="Shared" />
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
+    <Import Project="$(QtMsBuild)\qt_defaults.props" />
+  </ImportGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <QtInstall>msvc2017</QtInstall>
+    <QtModules>core;gui;network;widgets</QtModules>
+  </PropertyGroup>
+  <PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <QtInstall>msvc2017</QtInstall>
+    <QtModules>core;gui;network;widgets</QtModules>
+  </PropertyGroup>
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
+    <Import Project="$(QtMsBuild)\qt.props" />
+  </ImportGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <Optimization>Disabled</Optimization>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>libfftw3f-3.lib;setupapi.lib;WS2_32.Lib;$(QtDir)\lib\Qt5SerialPort.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+      <AdditionalDependencies>libfftw3f-3.lib;setupapi.lib;WS2_32.Lib;$(QtDir)\lib\Qt5SerialPort.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="ARDOPC.c" />
+    <ClCompile Include="ardopSampleArrays.c" />
+    <ClCompile Include="ax25.c">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsC</CompileAs>
+    </ClCompile>
+    <ClCompile Include="ax25_agw.c" />
+    <ClCompile Include="ax25_demod.c" />
+    <ClCompile Include="ax25_fec.c" />
+    <ClCompile Include="ax25_l2.c" />
+    <ClCompile Include="ax25_mod.c" />
+    <ClCompile Include="berlekamp.c" />
+    <ClCompile Include="BusyDetect.c" />
+    <ClCompile Include="Config.cpp">
+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Default</CompileAs>
+    </ClCompile>
+    <ClCompile Include="galois.c" />
+    <ClCompile Include="hid.c" />
+    <ClCompile Include="kiss_mode.c" />
+    <ClCompile Include="main.cpp" />
+    <ClCompile Include="Modulate.c" />
+    <ClCompile Include="ofdm.c" />
+    <ClCompile Include="pktARDOP.c" />
+    <ClCompile Include="QtSoundModem.cpp">
+      <DynamicSource Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">input</DynamicSource>
+      <QtMocFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(Filename).moc</QtMocFileName>
+      <DynamicSource Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">input</DynamicSource>
+      <QtMocFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(Filename).moc</QtMocFileName>
+    </ClCompile>
+    <ClCompile Include="rs.c" />
+    <ClCompile Include="RSUnit.c" />
+    <ClCompile Include="ShowFilter.cpp" />
+    <ClCompile Include="SMMain.c" />
+    <ClCompile Include="sm_main.c" />
+    <ClCompile Include="SoundInput.c" />
+    <ClCompile Include="tcpCode.cpp" />
+    <ClCompile Include="UZ7HOUtils.c" />
+    <ClCompile Include="Waveout.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <QtMoc Include="QtSoundModem.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <QtUic Include="calibrateDialog.ui" />
+    <QtUic Include="devicesDialog.ui">
+      <SubType>Designer</SubType>
+    </QtUic>
+    <QtUic Include="filterWindow.ui" />
+    <QtUic Include="ModemDialog.ui">
+      <SubType>Designer</SubType>
+    </QtUic>
+    <QtUic Include="QtSoundModem.ui">
+      <SubType>Designer</SubType>
+    </QtUic>
+  </ItemGroup>
+  <ItemGroup>
+    <QtRcc Include="QtSoundModem.qrc" />
+  </ItemGroup>
+  <ItemGroup>
+    <QtMoc Include="tcpCode.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="resource1.h" />
+    <ClInclude Include="UZ7HOStuff.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="QtSoundModem.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="icon1.ico" />
+    <Image Include="soundmodem.ico" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
+    <Import Project="$(QtMsBuild)\qt.targets" />
+  </ImportGroup>
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/QtSoundModem_resource.rc b/QtSoundModem_resource.rc
new file mode 100644
index 0000000..984c31a
--- /dev/null
+++ b/QtSoundModem_resource.rc
@@ -0,0 +1,37 @@
+#include <windows.h>
+
+IDI_ICON1	ICON	DISCARDABLE	"SoundModem.ico"
+
+VS_VERSION_INFO VERSIONINFO
+	FILEVERSION 0,0,0,0
+	PRODUCTVERSION 0,0,0,0
+	FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+	FILEFLAGS VS_FF_DEBUG
+#else
+	FILEFLAGS 0x0L
+#endif
+	FILEOS VOS__WINDOWS32
+	FILETYPE VFT_DLL
+	FILESUBTYPE 0x0L
+	BEGIN
+		BLOCK "StringFileInfo"
+		BEGIN
+			BLOCK "040904b0"
+			BEGIN
+				VALUE "CompanyName", "\0"
+				VALUE "FileDescription", "\0"
+				VALUE "FileVersion", "0.0.0.0\0"
+				VALUE "LegalCopyright", "\0"
+				VALUE "OriginalFilename", "QtSoundModem.exe\0"
+				VALUE "ProductName", "QtSoundModem\0"
+				VALUE "ProductVersion", "0.0.0.0\0"
+			END
+		END
+		BLOCK "VarFileInfo"
+		BEGIN
+			VALUE "Translation", 0x0409, 1200
+		END
+	END
+/* End of Version info */
+
diff --git a/RSUnit.c b/RSUnit.c
new file mode 100644
index 0000000..dea09b0
--- /dev/null
+++ b/RSUnit.c
@@ -0,0 +1,768 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+/*{***********************************************************************
+*                                                                      *
+*       RSUnit.pas                                                     *
+*                                                                      *
+*       (C) Copyright 1990-1999 Bruce K. Christensen                   *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************}
+
+{ This program is an encoder/decoder for Reed-Solomon codes. Encoding
+  is in systematic form, decoding via the Berlekamp iterative algorithm.
+  In the present form , the constants mm, nn, tt, and kk=nn-2tt must be
+  specified  (the double letters are used simply to avoid clashes with
+  other n,k,t used in other programs into which this was incorporated!)
+  Also, the irreducible polynomial used to generate GF(2**mm) must also
+  be entered -- these can be found in Lin and Costello, and also Clark
+  and Cain.
+
+  The representation of the elements of GF(2**m) is either in index
+  form, where the number is the power of the primitive element alpha,
+  which is convenient for multiplication (add the powers
+  modulo 2**m-1) or in polynomial form, where the bits represent the
+  coefficients of the polynomial representation of the number, which
+  is the most convenient form for addition.  The two forms are swapped
+  between via lookup tables.  This leads to fairly messy looking
+  expressions, but unfortunately, there is no easy alternative when
+  working with Galois arithmetic.
+
+  The code is not written in the most elegant way, but to the best of
+  my knowledge, (no absolute guarantees!), it works.  However, when
+  including it into a simulation program, you may want to do some
+  conversion of global variables (used here because I am lazy!) to
+  local variables where appropriate, and passing parameters (eg array
+  addresses) to the functions  may be a sensible move to reduce the
+  number of global variables and thus decrease the chance of a bug
+  being introduced.
+
+  This program does not handle erasures at present, but should not be
+  hard to adapt to do this, as it is just an adjustment to the
+  Berlekamp-Massey algorithm. It also does not attempt to decode past
+  the BCH bound.
+  -- see Blahut "Theory and practiceof error control codes"
+	 for how to do this.
+
+			  Simon Rockliff, University of Adelaide   21/9/89    }
+			  */
+
+
+#define mm 8				// { RS code over GF(2**mm) - change to suit }
+#define nn  (1 << mm) - 1	// { nn=2**mm -1   length of codeword       }
+#define MaxErrors 4        // { number of errors that can be corrected }
+#define np 2 * MaxErrors	// { number of parity symbols               }
+#define kk  nn - np         //{ data symbols, kk = nn-2*MaxErrors      }
+
+			  /*
+			  short = short ;
+
+				  TReedSolomon = Class(TComponent)
+								   Procedure generate_gf ;
+								   Procedure gen_poly    ;
+
+								   Procedure SetPrimitive(Var PP             ;
+															  nIdx : Integer  ) ;
+
+								 Public
+								   Procedure InitBuffers ;
+
+								   Procedure EncodeRS(Var xData    ;
+													  Var xEncoded  ) ;
+								   Function  DecodeRS(Var xData    ;
+													  Var xDecoded  ) : Integer ;
+
+								   Constructor Create(AOwner : TComponent) ; Reintroduce ;
+								   Destructor Destroy ; Reintroduce ;
+								 End ;
+			  */
+			  // specify irreducible polynomial coeffts }
+
+Byte PP[17];
+
+Byte CodeWord[256];
+short Original_Recd[256];
+
+short bb[np];
+short data[256]; // 
+short recd[nn];
+
+short alpha_to[nn + 1];
+short index_of[nn + 1];
+short gg[np + 1];
+
+string cDuring;
+string cName;
+
+
+//aPPType = Array[2..16] of Pointer;
+
+void *  pPP[17];
+
+Byte PP2[] = { 1 , 1 , 1 };
+
+//   { 1 + x + x^3 }
+
+Byte PP3[] = { 1 , 1 , 0 , 1 };
+
+//     { 1 + x + x^4 }
+Byte PP4[] = { 1 , 1 , 0 , 0 , 1 };
+
+//     { 1 + x^2 + x^5 }
+Byte PP5[] = { 1 , 0 , 1 , 0 , 0 , 1 };
+
+//     { 1 + x + x^6 }
+Byte PP6[] = { 1 , 1 , 0 , 0 , 0 , 0 , 1 };
+
+//     { 1 + x^3 + x^7 }
+Byte PP7[] = { 1, 0, 0, 1, 0, 0, 0, 1 };
+
+//     { 1+x^2+x^3+x^4+x^8 }
+Byte PP8[] = { 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 1 };
+
+//     { 1+x^4+x^9 }
+Byte PP9[] = { 1, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
+
+//    { 1+x^3+x^10 }
+Byte PP10[] = { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1 };
+
+//     { 1+x^2+x^11 }
+Byte PP11[] = { 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
+
+//     { 1+x+x^4+x^6+x^12 }
+Byte PP12[] = { 1, 1, 0, 0, 1, 0, 1, 0, 0,
+	0, 0, 0, 1 };
+
+//    { 1+x+x^3+x^4+x^13 }
+Byte PP13[] = { 1, 1, 0, 1, 1, 0, 0, 0, 0,
+	0, 0, 0, 0, 1 };
+
+//     { 1+x+x^6+x^10+x^14 }
+Byte PP14[] = { 1, 1, 0, 0, 0, 0, 1, 0, 0,
+	0, 1, 0, 0, 0, 1 };
+
+//     { 1+x+x^15 }
+Byte PP15[] = { 1, 1, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 1 };
+//     { 1+x+x^3+x^12+x^16 }
+Byte PP16[] = { 1, 1, 0, 1, 0, 0, 0, 0, 0,
+	0, 0, 0, 1, 0, 0, 0, 1 };
+
+
+void InitBuffers();
+
+/***********************************************************************
+*                                                                      *
+*       TReedSolomon.SetPrimitive                                      *
+*                                                                      *
+*         Primitive polynomials - see Lin & Costello, Appendix A,      *
+*       and  Lee & Messerschmitt, p. 453.                              *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void SetPrimitive(void* PP, int nIdx)
+{
+	move(pPP[nIdx], PP, (nIdx + 1));
+}
+
+/************************************************************************
+*                                                                      *
+*       Generate_GF                                                    *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void Generate_gf()
+{
+	/* generate GF(2**mm) from the irreducible polynomial p(X)
+	  in pp[0]..pp[mm]
+
+	  lookup tables:
+		  index->polynomial form   alpha_to[] contains j=alpha**i ;
+		  polynomial form -> index form  index_of[j=alpha**i] = i
+		  alpha = 2 is the primitive element of GF(2**mm)
+	*/
+
+	int i;
+	short mask;
+
+	SetPrimitive(PP, mm);
+
+	mask = 1;
+	alpha_to[mm] = 0;
+	for (i = 0; i < mm; i++)
+	{
+		alpha_to[i] = mask;
+		index_of[alpha_to[i]] = i;
+
+		if (PP[i] != 0)
+			alpha_to[mm]  = alpha_to[mm] ^ mask;
+		mask = mask << 1;
+	}
+
+
+	index_of[alpha_to[mm]] = mm;
+	mask = mask >> 1;
+
+	for (i = mm + 1; i < nn; i++)
+	{
+		if (alpha_to[i - 1] >= mask)
+			alpha_to[i] = alpha_to[mm] ^ ((alpha_to[i - 1] ^ mask) << 1);
+		else
+			alpha_to[i] = alpha_to[i - 1] << 1;
+
+		index_of[alpha_to[i]] = i;
+	}
+	index_of[0] = -1;
+}
+
+
+/***********************************************************************
+*                                                                      *
+*       Gen_Poly                                                       *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void gen_poly()
+{
+	/* Obtain the generator polynomial of the tt-error correcting, length
+  nn=(2**mm -1) Reed Solomon code  from the product of
+  (X+alpha**i), i=1..2*tt
+*/
+
+	short  i, j;
+
+	gg[0] = 2;  //{ primitive element alpha = 2  for GF(2**mm) }
+	gg[1] = 1;  //{ g(x) = (X+alpha) initially                 }
+
+	i = nn;
+	j = kk;
+
+	j = i - j;
+
+	for (i = 2; i <= 8; i++)
+	{
+		gg[i] = 1;
+
+		for (j = (i - 1); j > 0; j--)
+		{
+			if (gg[j] != 0)
+				gg[j] = gg[j - 1] ^ alpha_to[(index_of[gg[j]] + i) % nn];
+			else
+				gg[j] = gg[j - 1];
+		}
+
+		// { gg[0] can never be zero }
+
+		gg[0] = alpha_to[(index_of[gg[0]] + i) % nn];
+	}
+
+	// { Convert gg[] to index form for quicker encoding. }
+
+	for (i = 0; i <= np; i++)
+		gg[i] = index_of[gg[i]];
+
+}
+
+
+/***********************************************************************
+*                                                                      *
+*       TxBase.Create                                                  *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void RsCreate()
+{
+	InitBuffers();
+
+	//{ generate the Galois Field GF(2**mm) }
+	Generate_gf();
+	gen_poly();
+}
+
+/***********************************************************************
+*                                                                      *
+*       TReedSolomon.Destroy                                           *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+************************************************************************/
+
+/***********************************************************************
+*                                                                      *
+*       TReedSolomon.EncodeRS                                          *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void EncodeRS(Byte * xData, Byte * xEncoded)
+{
+
+	/* take the string of symbols in data[i], i=0..(k-1) and encode
+	  systematically to produce 2*tt parity symbols in bb[0]..bb[2*tt-1]
+
+	  data[] is input and bb[] is output in polynomial form.  Encoding is
+	  done by using a feedback shift register with appropriate connections
+	  specified by the elements of gg[], which was generated above.
+
+	  Codeword is   c(X) = data(X)*X**(np)+ b(X) }
+	  */
+
+	  //	Type
+	  //		bArrType = Array[0..16383] of Byte;
+
+	int nI, i, j;
+
+	short feedback;
+
+	// absolute means variables share the same data
+
+	//axData : bArrType absolute xData ;
+
+
+	memset(bb, 0, sizeof(bb));
+
+	for (nI = 0; nI < nn; nI++)
+		data[nI] = xData[nI];
+
+	for (i = (kk - 1); i >= 0; i--)
+	{
+		feedback = index_of[data[i] ^ bb[np - 1]];
+
+		if (feedback != -1)
+		{
+			for (j = (np - 1); j > 0; j--)
+			{
+				if (gg[j] != -1)
+					bb[j] = bb[j - 1] ^ alpha_to[(gg[j] + feedback) % nn];
+				else
+					bb[j] = bb[j - 1];
+			}
+			bb[0] = alpha_to[(gg[0] + feedback) % nn];
+		}
+		else
+		{
+			for (j = (np - 1); j > 0; j--)
+				bb[j] = bb[j - 1];
+			bb[0] = 0;
+		}
+	}
+
+	//{ put the transmitted codeword, made up of data }
+	//{ plus parity, in CodeWord                      }
+
+	for (nI = 0; nI < np; nI++)
+		recd[nI] = bb[nI];
+
+	for (nI = 0; nI < kk; nI++)
+		recd[nI + np] = data[nI];
+
+	for (nI = 0; nI < nn; nI++)
+		CodeWord[nI] = recd[nI];
+
+	move(CodeWord, xEncoded, nn);
+}
+
+
+
+/***********************************************************************
+*                                                                      *
+*       DecodeRS                                                       *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************}
+
+Function TReedSolomon.DecodeRS(Var xData    ;
+							   Var xDecoded  ) : Integer ;
+{ assume we have received bits grouped into mm-bit symbols in recd[i],
+  i=0..(nn-1),  and recd[i] is index form (ie as powers of alpha).
+  We first compute the 2*tt syndromes by substituting alpha**i into
+  rec(X) and evaluating, storing the syndromes in s[i], i=1..2tt
+  (leave s[0] zero).  Then we use the Berlekamp iteration to find the
+  error location polynomial elp[i].   If the degree of the elp is >tt,
+  we cannot correct all the errors and hence just put out the information
+  symbols uncorrected. If the degree of elp is <=tt, we substitute
+  alpha**i , i=1..n into the elp to get the roots, hence the inverse
+  roots, the error location numbers. If the number of errors located
+  does not equal the degree of the elp, we have more than tt errors and
+  cannot correct them.  Otherwise, we then solve for the error value at
+  the error location and correct the error.  The procedure is that found
+  in Lin and Costello. for the cases where the number of errors is known
+  to be too large to correct, the information symbols as received are
+  output (the advantage of systematic encoding is that hopefully some
+  of the information symbols will be okay and that if we are in luck, the
+  errors are in the parity part of the transmitted codeword).  Of course,
+  these insoluble cases can be returned as error flags to the calling
+  routine if desired. */
+
+
+int DecodeRS(Byte * xData, Byte * xDecoded)
+{
+	UNUSED(xDecoded);
+
+//	string	cStr;
+	int 	nI; // , nJ, nK;
+
+	int 	i, j;
+//	short 	u, q;
+
+//	short elp[np + 2][np];
+//	short d[np + 2];
+//	short l[np + 2];
+//	short u_lu[np + 2];
+	short s[np + 1];
+
+//	short	count;
+	short	syn_error;
+
+//	short root[MaxErrors];
+//	short loc[MaxErrors];
+//	short z[MaxErrors];
+//	short err[nn];
+//	short reg[MaxErrors + 1];
+
+	for (nI = 0; nI < nn; nI++)
+		recd[nI] = xData[nI];
+
+	for (i = 0; i < nn; i++)
+		recd[i] = index_of[recd[i]];  // { put recd[i] into index form }
+
+//	count = 0;
+	syn_error = 0;
+
+	//	{ first form the syndromes }
+
+	for (i = 0; i < np; i++)
+	{
+		s[i] = 0;
+
+		for (j = 0; j < nn; j++)
+		{
+			if (recd[j] != -1)
+				//	{ recd[j] in index form }
+			{
+				s[i] = s[i] ^ alpha_to[(recd[j] + i * j) % nn];
+			}
+		}
+
+		//{ convert syndrome from polynomial form to index form  }
+		if (s[i] != 0)
+		{
+			syn_error = 1; // { set flag if non-zero syndrome => error }
+		}
+		s[i] = index_of[s[i]];
+	}
+
+	if (syn_error != 0)  // { if errors, try and correct }
+	{
+		/*
+				{ Compute the error location polynomial via the Berlekamp      }
+				{ iterative algorithm, following the terminology of Lin and    }
+				{ Costello:   d[u] is the 'mu'th discrepancy, where u = 'mu' + 1  }
+				{ and 'mu' (the Greek letter!) is the step number ranging from }
+				{ -1 to 2 * tt(see L&C), l[u] is the degree of the elp at that }
+				{ step, and u_l[u] is the difference between the step number   }
+				{and the degree of the elp.                                    }
+
+				{ Initialize table entries }
+				d[0]      : = 0; { index form      }
+				d[1]      : = s[1]; { index form      }
+				elp[0][0] : = 0; { index form      }
+				elp[1][0] : = 1; { polynomial form }
+
+				for i : = 1 to(np - 1) do
+					Begin
+					elp[0][i] : = -1; { index form      }
+				elp[1][i] : = 0; { polynomial form }
+				End;
+
+				l[0]    : = 0;
+				l[1]    : = 0;
+				u_lu[0] : = -1;
+				u_lu[1] : = 0;
+			u: = 0;
+
+				While((u < np) and (l[u + 1] <= MaxErrors)) do
+					Begin
+					Inc(u);
+
+				If(d[u] = -1) then
+					Begin
+					l[u + 1] : = l[u];
+
+				for i : = 0 to l[u] do
+					Begin
+					elp[u + 1][i] : = elp[u][i];
+				elp[u][i]   : = index_of[elp[u][i]];
+				End;
+				End
+					Else
+				{ search for words with greatest u_lu[q] for which d[q] != 0 }
+					Begin
+					q : = u - 1;
+
+				While((d[q] = -1) and (q > 0)) do
+					Dec(q);
+
+				{ have found first non - zero d[q] }
+				If(q > 0) then
+					Begin
+					j : = q;
+
+				While j > 0 do
+					Begin
+					Dec(j);
+				If((d[j] != -1) and (u_lu[q] < u_lu[j])) then
+					q : = j;
+				End;
+				End;
+
+				{ have now found q such that d[u] != 0 and u_lu[q] is maximum }
+				{ store degree of new elp polynomial                        }
+				If(l[u] > l[q] + u - q) then
+					l[u + 1] : = l[u]
+					Else
+					l[u + 1] : = l[q] + u - q;
+
+				{ form new elp(x) }
+				for i : = 0 to(np - 1) do
+					elp[u + 1][i] : = 0;
+
+				for i : = 0 to l[q] do
+					If(elp[q][i] != -1) then
+					elp[u + 1][i + u - q] : = alpha_to[(d[u] + nn - d[q] + elp[q][i]) mod nn];
+
+				for i : = 0 to l[u] do
+					Begin
+					elp[u + 1][i] : = elp[u + 1][i] ^ elp[u][i];
+				{ convert old elp value to index }
+				elp[u][i]   : = index_of[elp[u][i]];
+				End;
+				End;
+
+				u_lu[u + 1] : = u - l[u + 1];
+
+				{ form(u + 1)th discrepancy }
+				If u < np then{ no discrepancy computed on last iteration }
+					Begin
+					If(s[u + 1] != -1) then
+					d[u + 1] : = alpha_to[s[u + 1]]
+					Else
+					d[u + 1] : = 0;
+
+				for i : = 1 to l[u + 1] do
+					If((s[u + 1 - i] != -1) and (elp[u + 1][i] != 0)) then
+					d[u + 1] : = d[u + 1] ^ alpha_to[(s[u + 1 - i] + index_of[elp[u + 1][i]]) mod nn];
+				{ put d[u + 1] into index form }
+				d[u + 1] : = index_of[d[u + 1]];
+				End;
+				End; { end While }
+
+				Inc(u);
+				If l[u] <= MaxErrors then{ can correct error }
+					Begin
+				{ put elp into index form }
+					for i : = 0 to l[u]do
+						elp[u][i] : = index_of[elp[u][i]];
+
+				{ find roots of the error location polynomial }
+				for i : = 1 to l[u] do
+					Begin
+					reg[i] : = elp[u][i];
+				End;
+
+				for i : = 1 to nn do
+					Begin
+					q : = 1;
+
+				for j : = 1 to l[u] do
+					If reg[j] != -1 then
+					Begin
+					reg[j] : = (reg[j] + j) mod nn;
+			q: = q ^ alpha_to[reg[j]];
+				End;
+
+				If q = 0 then{ store root and error location number indices }
+					Begin
+					root[count] : = i;
+				loc[count] : = nn - i;
+				Inc(count);
+				End;
+				End;
+
+				If count = l[u] then{ no.roots = degree of elp hence <= tt errors }
+					Begin
+					Result : = count;
+
+				{ form polynomial z(x) }
+				for i : = 1 to l[u] do { Z[0] = 1 always - do not need }
+				Begin
+					If((s[i] != -1) and (elp[u][i] != -1)) then
+					z[i] : = alpha_to[s[i]] ^ alpha_to[elp[u][i]]
+					Else
+					If((s[i] != -1) and (elp[u][i] = -1)) then
+					z[i] : = alpha_to[s[i]]
+					Else
+					If((s[i] = -1) and (elp[u][i] != -1)) then
+					z[i] : = alpha_to[elp[u][i]]
+					Else
+					z[i] : = 0;
+
+				for j : = 1 to(i - 1) do
+					if ((s[j] != -1) and (elp[u][i - j] != -1)) then
+						z[i] : = z[i] ^ alpha_to[(elp[u][i - j] + s[j]) mod nn];
+
+				{ put into index form }
+				z[i] : = index_of[z[i]];
+				End;
+
+				{ evaluate errors at locations given by }
+				{ error location numbers loc[i]         }
+				for i : = 0 to(nn - 1) do
+					Begin
+					err[i] : = 0;
+				If recd[i] != -1 then{ convert recd[] to polynomial form }
+					recd[i] : = alpha_to[recd[i]]
+					Else
+					recd[i] : = 0;
+				End;
+
+				for i : = 0 to(l[u] - 1) do { compute numerator of error term first }
+				Begin
+					err[loc[i]] : = 1; { accounts for z[0] }
+				for j : = 1 to l[u] do
+					If z[j] != -1 then
+					err[loc[i]] : = err[loc[i]] ^ alpha_to[(z[j] + j * root[i]) mod nn];
+
+				If err[loc[i]] != 0 then
+					Begin
+					err[loc[i]] : = index_of[err[loc[i]]];
+
+			q: = 0; { form denominator of error term }
+
+				for j : = 0 to(l[u] - 1) do
+					If j != i then
+					q : = q + index_of[1 ^ alpha_to[(loc[j] + root[i]) mod nn]];
+			q: = q mod nn;
+
+				err[loc[i]] : = alpha_to[(err[loc[i]] - q + nn) mod nn];
+				{ recd[i] must be in polynomial form }
+				recd[loc[i]] : = recd[loc[i]] ^ err[loc[i]];
+				End;
+				End;
+				End
+					Else{ no.roots != degree of elp = > > tt errors and cannot solve }
+					Begin
+					Result : = -1; { Signal an error. }
+
+				for i : = 0 to(nn - 1) do { could return error flag if desired }
+				If recd[i] != -1 then{ convert recd[] to polynomial form }
+					recd[i] : = alpha_to[recd[i]]
+					Else
+					recd[i] : = 0; { just output received codeword as is }
+				End;
+				End{ if l[u] <= tt then }
+					Else{ elp has degree has degree > tt hence cannot solve }
+					for i : = 0 to(nn - 1) do { could return error flag if desired }
+				If recd[i] != -1 then{ convert recd[] to polynomial form }
+					recd[i] : = alpha_to[recd[i]]
+					Else
+					recd[i] : = 0; { just output received codeword as is }
+				End{ If syn_error != 0 then }
+				{ no non - zero syndromes = > no errors : output received codeword }
+				Else
+					Begin
+					for i : = 0 to(nn - 1) do
+						If recd[i] != -1 then{ convert recd[] to polynomial form }
+						recd[i] : = alpha_to[recd[i]]
+						Else
+						recd[i] : = 0;
+
+			Result: = 0; { No errors ocurred. }
+				End;
+
+				for nI : = 0 to(NN - 1) do
+					axDecoded[nI] : = Recd[nI];
+				End; { TReedSolomon.DecodeRS }
+				*/
+
+		return syn_error;
+	}
+	return 0;
+}
+
+
+
+/***********************************************************************
+*                                                                      *
+*       TReedSolomon.InitBuffers                                       *
+*                                                                      *
+*       Modifications                                                  *
+*       =============                                                  *
+*                                                                      *
+***********************************************************************/
+
+void InitBuffers()
+{
+	memset(data, 0, sizeof(data));
+	memset(recd, 0, sizeof(recd));
+	memset(CodeWord, 0, sizeof(CodeWord));
+
+	//{ Initialize the Primitive Polynomial vector. }
+	pPP[2] = PP2;
+	pPP[3] = PP3;
+	pPP[4] = PP4;
+	pPP[5] = PP5;
+	pPP[6] = PP6;
+	pPP[7] = PP7;
+	pPP[8] = PP8;
+	pPP[9] = PP9;
+	pPP[10] = PP10;
+	pPP[11] = PP11;
+	pPP[12] = PP12;
+	pPP[13] = PP13;
+	pPP[14] = PP14;
+	pPP[15] = PP15;
+	pPP[16] = PP16;
+}
+
diff --git a/Resource.aps b/Resource.aps
new file mode 100644
index 0000000000000000000000000000000000000000..40f5ee3c038959122111f98a9174f2e17db7bf46
GIT binary patch
literal 1368
zcmb7EO>f#j5Ph^gKtC=$^z5V@5~)GBiP9=JV;hAO?0^kPB}-NXRzV_mWFX|n_0VJ6
zpOOBJO7!j8#zwSMT{P?U%$u3#*%<&pp{!Pk@VK!IzEvsbxI%-^)vA=*E9LZn@)JNm
z^ZK(Oo_QD1IP@B>qEDm6$kT@N$z9+?i+C7#UDxZ*c@9UNXcXLdy<jE{wRni<40b|s
zVd9#53l?;=(T71zp0|!XZ=Cw8wJ~1()Bh0>K+*s8Bpgl`qd?hTPC^E&jrU(XCFU_@
zHy44}j3pc&sN1a7w>2)w4(v(I9*W#qQD3`se9OFc{hsOA{hn_61FhXRq1IJYigw-Z
zbTrFI%_sFb0nD8T&~3}@+3mGI?azvK=VQmr+(mR&J|mTt0VR|Mjz2JaPRq9ZmesVO
z;w4HgL-!q5b6YwNj?_aOp(K69{*xV)tSUcfvku>-LDW90!zx{svW_!&yyqDL#N0hx
zAi@|SPYrg0!akT%v%rWN4MWT^!5z_#)W*~Vv~-CT`#jZ$#CM1o(RxEm%;&7&p`ykt
zqO+2fF}Wl%!e{QE=%=8`Y*Xp0-~jh{k5e2n-WByCM}#HgD)_+nx#X|1%RF{)NM=*X
zTksRwniLi9_&de1eD{bD{FX9a!ZKmjB)iQz{@ALc%bsajdb@A1SERMdFDh!^{!x3p
z)(SlEX6w%KdCBg~ppTGU{{>=>zfk^Xj>YW$+Ub*XAxthYf#>A>_dMG(`aqvs`sDoc
d`Anj+-n8E{U5?3nH^Yc~`O5G)Ccl>q^BWac_6h(1

literal 0
HcmV?d00001

diff --git a/SMMain-HPLaptop.c b/SMMain-HPLaptop.c
new file mode 100644
index 0000000..84c0c55
--- /dev/null
+++ b/SMMain-HPLaptop.c
@@ -0,0 +1,1381 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+#include "fftw3.h"
+#include <time.h>
+#include "ecc.h"				// RS Constants
+#include "hidapi.h"
+#include <fcntl.h>
+#include <errno.h>
+
+BOOL KISSServ;
+int KISSPort;
+
+BOOL AGWServ;
+int AGWPort;
+
+int Number = 0;				// Number waiting to be sent
+
+int SoundIsPlaying = 0;
+int UDPSoundIsPlaying = 0;
+int Capturing = 0;
+
+extern unsigned short buffer[2][1200];
+extern int SoundMode;
+extern int needRSID[4];
+
+extern short * DMABuffer;
+
+unsigned short * SendtoCard(unsigned short * buf, int n);
+short * SoundInit();
+void DoTX(int Chan);
+void UDPPollReceivedSamples();
+
+
+extern int SampleNo;
+
+extern int pnt_change[5];				// Freq Changed Flag
+
+// fftw library interface
+
+
+fftwf_complex *in, *out;
+fftwf_plan p;
+
+#define N 2048
+
+void initfft()
+{
+	in = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	out = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	p = fftwf_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
+}
+
+void dofft(short * inp, float * outr, float * outi)
+{
+	int i;
+	
+	fftwf_complex * fft = in;
+
+	for (i = 0; i < N; i++)
+	{
+		fft[0][0] = inp[0] * 1.0f;
+		fft[0][1] = 0;
+		fft++;
+		inp++;
+	}
+
+	fftwf_execute(p); 
+
+	fft = out;
+
+	for (i = 0; i < N; i++)
+	{
+		outr[0] = fft[0][0];
+		outi[0] = fft[0][1];
+		fft++;
+		outi++;
+		outr++;
+	}
+}
+
+void freefft()
+{
+	fftwf_destroy_plan(p);
+	fftwf_free(in);
+	fftwf_free(out);
+}
+
+int nonGUIMode = 0;
+
+void soundMain()
+{
+	// non platform specific initialisation
+
+	platformInit();
+
+	// initialise fft library
+
+	RsCreate();				// RS code for MPSK
+
+	detector_init();
+	KISS_init();
+	ax25_init();
+	init_raduga();			// Set up waterfall colour table
+
+	initfft();
+
+	if (nonGUIMode)
+	{
+		Firstwaterfall = 0;
+		Secondwaterfall = 0;
+	}
+
+	OpenPTTPort();
+}
+
+
+void SampleSink(int LR, short Sample)
+{
+	// This version is passed samples one at a time, as we don't have
+	//	enough RAM in embedded systems to hold a full audio frame
+
+	// LR - 1 == Right Chan
+
+#ifdef TEENSY	
+		int work = Sample;
+		DMABuffer[Number++] = (work + 32768) >> 4; // 12 bit left justify
+#else
+	if (SCO)			// Single Channel Output - same to both L and R
+	{
+		DMABuffer[2 * Number] = Sample;
+		DMABuffer[1 + 2 * Number] = Sample;
+
+	}
+	else
+	{
+		if (LR)				// Right
+		{
+			DMABuffer[1 + 2 * Number] = Sample;
+			DMABuffer[2 * Number] = 0;
+		}
+		else
+		{
+			DMABuffer[2 * Number] = Sample;
+			DMABuffer[1 + 2 * Number] = 0;
+		}
+	}
+	Number++;
+#endif
+		if (Number >= SendSize)
+		{
+			// send this buffer to sound interface
+
+			DMABuffer = SendtoCard(DMABuffer, SendSize);
+			Number = 0;
+		}
+	
+
+//	Last120[Last120Put++] = Sample;
+
+//	if (Last120Put == (intN + 1))
+//		Last120Put = 0;
+
+	SampleNo++;
+}
+
+
+void Flush()
+{
+	SoundFlush(Number);
+}
+
+int ipow(int base, int exp)
+{
+	int result = 1;
+	while (exp)
+	{
+		if (exp & 1)
+			result *= base;
+		exp >>= 1;
+		base *= base;
+	}
+
+	return result;
+}
+
+int NumberOfBitsNeeded(int PowerOfTwo)
+{
+	int i;
+
+	for (i = 0; i <= 16; i++)
+	{
+		if ((PowerOfTwo & ipow(2, i)) != 0)
+			return i;
+
+	}
+	return 0;
+}
+
+
+int ReverseBits(int Index, int NumBits)
+{
+	int i, Rev = 0;
+
+	for (i = 0; i < NumBits; i++)
+	{
+		Rev = (Rev * 2) | (Index & 1);
+		Index = Index / 2;
+	}
+
+	return Rev;
+}
+
+
+void FourierTransform(int NumSamples, short * RealIn, float * RealOut, float * ImagOut, int InverseTransform)
+{
+	float AngleNumerator;
+	unsigned char NumBits;
+
+	int i, j, K, n, BlockSize, BlockEnd;
+	float DeltaAngle, DeltaAr;
+	float Alpha, Beta;
+	float TR, TI, AR, AI;
+
+	if (InverseTransform)
+		AngleNumerator = -2.0f * M_PI;
+	else
+		AngleNumerator = 2.0f * M_PI;
+
+	NumBits = NumberOfBitsNeeded(NumSamples);
+
+	for (i = 0; i < NumSamples; i++)
+	{
+		j = ReverseBits(i, NumBits);
+		RealOut[j] = RealIn[i];
+		ImagOut[j] = 0.0f; // Not using i in ImageIn[i];
+	}
+
+	BlockEnd = 1;
+	BlockSize = 2;
+
+	while (BlockSize <= NumSamples)
+	{
+		DeltaAngle = AngleNumerator / BlockSize;
+		Alpha = sinf(0.5f * DeltaAngle);
+		Alpha = 2.0f * Alpha * Alpha;
+		Beta = sinf(DeltaAngle);
+
+		i = 0;
+
+		while (i < NumSamples)
+		{
+			AR = 1.0f;
+			AI = 0.0f;
+
+			j = i;
+
+			for (n = 0; n < BlockEnd; n++)
+			{
+				K = j + BlockEnd;
+				TR = AR * RealOut[K] - AI * ImagOut[K];
+				TI = AI * RealOut[K] + AR * ImagOut[K];
+				RealOut[K] = RealOut[j] - TR;
+				ImagOut[K] = ImagOut[j] - TI;
+				RealOut[j] = RealOut[j] + TR;
+				ImagOut[j] = ImagOut[j] + TI;
+				DeltaAr = Alpha * AR + Beta * AI;
+				AI = AI - (Alpha * AI - Beta * AR);
+				AR = AR - DeltaAr;
+				j = j + 1;
+			}
+			i = i + BlockSize;
+		}
+		BlockEnd = BlockSize;
+		BlockSize = BlockSize * 2;
+	}
+
+	if (InverseTransform)
+	{
+		//	Normalize the resulting time samples...
+
+		for (i = 0; i < NumSamples; i++)
+		{
+			RealOut[i] = RealOut[i] / NumSamples;
+			ImagOut[i] = ImagOut[i] / NumSamples;
+		}
+	}
+}
+
+
+
+int LastBusyCheck = 0;
+
+extern UCHAR CurrentLevel;
+
+#ifdef PLOTSPECTRUM		
+float dblMagSpectrum[206];
+float dblMaxScale = 0.0f;
+extern UCHAR Pixels[4096];
+extern UCHAR * pixelPointer;
+#endif
+
+extern int blnBusyStatus;
+BusyDet = 0;
+
+#define PLOTWATERFALL
+
+int WaterfallActive = 1;
+int SpectrumActive;
+
+/*
+
+void UpdateBusyDetector(short * bytNewSamples)
+{
+	float dblReF[1024];
+	float dblImF[1024];
+	float dblMag[206];
+#ifdef PLOTSPECTRUM
+	float dblMagMax = 0.0000000001f;
+	float dblMagMin = 10000000000.0f;
+#endif
+	UCHAR Waterfall[256];			// Colour index values to send to GUI
+	int clrTLC = Lime;				// Default Bandwidth lines on waterfall
+
+	static BOOL blnLastBusyStatus;
+
+	float dblMagAvg = 0;
+	int intTuneLineLow, intTuneLineHi, intDelta;
+	int i;
+
+	//	if (State != SearchingForLeader)
+	//		return;						// only when looking for leader
+
+	if (Now - LastBusyCheck < 100)
+		return;
+
+	LastBusyCheck = Now;
+
+	FourierTransform(1024, bytNewSamples, &dblReF[0], &dblImF[0], FALSE);
+
+	for (i = 0; i < 206; i++)
+	{
+		//	starting at ~300 Hz to ~2700 Hz Which puts the center of the signal in the center of the window (~1500Hz)
+
+		dblMag[i] = powf(dblReF[i + 25], 2) + powf(dblImF[i + 25], 2);	 // first pass 
+		dblMagAvg += dblMag[i];
+#ifdef PLOTSPECTRUM		
+		dblMagSpectrum[i] = 0.2f * dblMag[i] + 0.8f * dblMagSpectrum[i];
+		dblMagMax = max(dblMagMax, dblMagSpectrum[i]);
+		dblMagMin = min(dblMagMin, dblMagSpectrum[i]);
+#endif
+	}
+
+	//	LookforPacket(dblMag, dblMagAvg, 206, &dblReF[25], &dblImF[25]);
+	//	packet_process_samples(bytNewSamples, 1200);
+
+	intDelta = roundf(500 / 2) + 50 / 11.719f;
+
+	intTuneLineLow = max((103 - intDelta), 3);
+	intTuneLineHi = min((103 + intDelta), 203);
+
+//	if (ProtocolState == DISC)		// ' Only process busy when in DISC state
+	{
+	//	blnBusyStatus = BusyDetect3(dblMag, intTuneLineLow, intTuneLineHi);
+
+		if (blnBusyStatus && !blnLastBusyStatus)
+		{
+//			QueueCommandToHost("BUSY TRUE");
+//			newStatus = TRUE;				// report to PTC
+
+			if (!WaterfallActive && !SpectrumActive)
+			{
+				UCHAR Msg[2];
+
+//				Msg[0] = blnBusyStatus;
+//				SendtoGUI('B', Msg, 1);
+			}
+		}
+		//    stcStatus.Text = "TRUE"
+			//    queTNCStatus.Enqueue(stcStatus)
+			//    'Debug.WriteLine("BUSY TRUE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+		else if (blnLastBusyStatus && !blnBusyStatus)
+		{
+//			QueueCommandToHost("BUSY FALSE");
+//			newStatus = TRUE;				// report to PTC
+
+			if (!WaterfallActive && !SpectrumActive)
+			{
+				UCHAR Msg[2];
+
+				Msg[0] = blnBusyStatus;
+//				SendtoGUI('B', Msg, 1);
+			}
+		}
+		//    stcStatus.Text = "FALSE"
+		//    queTNCStatus.Enqueue(stcStatus)
+		//    'Debug.WriteLine("BUSY FALSE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+		blnLastBusyStatus = blnBusyStatus;
+	}
+
+	if (BusyDet == 0)
+		clrTLC = Goldenrod;
+	else if (blnBusyStatus)
+		clrTLC = Fuchsia;
+
+	// At the moment we only get here what seaching for leader,
+	// but if we want to plot spectrum we should call
+	// it always
+
+
+
+	if (WaterfallActive)
+	{
+#ifdef PLOTWATERFALL
+		dblMagAvg = log10f(dblMagAvg / 5000.0f);
+
+		for (i = 0; i < 206; i++)
+		{
+			// The following provides some AGC over the waterfall to compensate for avg input level.
+
+			float y1 = (0.25f + 2.5f / dblMagAvg) * log10f(0.01 + dblMag[i]);
+			int objColor;
+
+			// Set the pixel color based on the intensity (log) of the spectral line
+			if (y1 > 6.5)
+				objColor = Orange; // Strongest spectral line 
+			else if (y1 > 6)
+				objColor = Khaki;
+			else if (y1 > 5.5)
+				objColor = Cyan;
+			else if (y1 > 5)
+				objColor = DeepSkyBlue;
+			else if (y1 > 4.5)
+				objColor = RoyalBlue;
+			else if (y1 > 4)
+				objColor = Navy;
+			else
+				objColor = Black;
+
+			if (i == 102)
+				Waterfall[i] = Tomato;  // 1500 Hz line (center)
+			else if (i == intTuneLineLow || i == intTuneLineLow - 1 || i == intTuneLineHi || i == intTuneLineHi + 1)
+				Waterfall[i] = clrTLC;
+			else
+				Waterfall[i] = objColor; // ' Else plot the pixel as received
+		}
+
+		// Send Signal level and Busy indicator to save extra packets
+
+		Waterfall[206] = CurrentLevel;
+		Waterfall[207] = blnBusyStatus;
+
+		doWaterfall(Waterfall);
+#endif
+	}
+	else if (SpectrumActive)
+	{
+#ifdef PLOTSPECTRUM
+		// This performs an auto scaling mechansim with fast attack and slow release
+		if (dblMagMin / dblMagMax < 0.0001) // more than 10000:1 difference Max:Min
+			dblMaxScale = max(dblMagMax, dblMaxScale * 0.9f);
+		else
+			dblMaxScale = max(10000 * dblMagMin, dblMagMax);
+
+//		clearDisplay();
+
+		for (i = 0; i < 206; i++)
+		{
+			// The following provides some AGC over the spectrum to compensate for avg input level.
+
+			float y1 = -0.25f * (SpectrumHeight - 1) *  log10f((max(dblMagSpectrum[i], dblMaxScale / 10000)) / dblMaxScale); // ' range should be 0 to bmpSpectrumHeight -1
+			int objColor = Yellow;
+
+			Waterfall[i] = round(y1);
+		}
+
+		// Send Signal level and Busy indicator to save extra packets
+
+		Waterfall[206] = CurrentLevel;
+		Waterfall[207] = blnBusyStatus;
+		Waterfall[208] = intTuneLineLow;
+		Waterfall[209] = intTuneLineHi;
+
+//		SendtoGUI('X', Waterfall, 210);
+#endif
+	}
+}
+
+*/
+
+extern short rawSamples[2400];	// Get Frame Type need 2400 and we may add 1200
+int rawSamplesLength = 0;
+extern int maxrawSamplesLength;
+
+void ProcessNewSamples(short * Samples, int nSamples)
+{
+	if (SoundIsPlaying == FALSE && UDPSoundIsPlaying == FALSE)
+		BufferFull(Samples, nSamples);
+};
+
+void doCalib(int Chan, int Act)
+{
+	if (Chan == 0 && calib_mode[1])
+		return;						
+	
+	if (Chan == 1 && calib_mode[0])
+		return;
+
+	calib_mode[Chan] = Act;
+
+	if (Act == 0)
+	{
+		tx_status[Chan] = TX_SILENCE;		// Stop TX
+		Flush();
+		RadioPTT(Chan, 0);
+		Debugprintf("Stop Calib");
+	}
+}
+
+int Freq_Change(int Chan, int Freq)
+{
+	int low, high;
+
+	low = round(rx_shift[1] / 2 + RCVR[Chan] * rcvr_offset[Chan] + 1);
+	high = round(RX_Samplerate / 2 - (rx_shift[Chan] / 2 + RCVR[Chan] * rcvr_offset[Chan]));
+
+	if (Freq < low)
+		return rx_freq[Chan];				// Dont allow change
+
+	if (Freq > high)
+		return rx_freq[Chan];				// Dont allow change
+
+	rx_freq[Chan] = Freq;
+	tx_freq[Chan] = Freq;
+
+	pnt_change[Chan] = TRUE;
+	wf_pointer(soundChannel[Chan]);
+
+	return Freq;
+}
+
+void MainLoop()
+{
+	// Called by background thread every 10 ms (maybe)
+
+	// Actually we may have two cards
+	
+	// Original only allowed one channel per card.
+	// I think we should be able to run more, ie two or more
+	// modems on same soundcard channel
+	
+	// So All the soundcard stuff will need to be generalised
+
+	if (UDPServ)
+		UDPPollReceivedSamples();
+
+	if (SoundMode == 3)
+		UDPPollReceivedSamples();
+	else
+		PollReceivedSamples();
+
+
+	if (modem_mode[0] == MODE_ARDOP)
+	{
+		chk_dcd1(0, 512);
+	}
+
+	DoTX(0);
+	DoTX(1);
+	DoTX(2);
+	DoTX(3);
+
+}
+
+int ARDOPSendToCard(int Chan, int Len)
+{
+	// Send Next Block of samples to the soundcard
+
+	short * in = &ARDOPTXBuffer[Chan][ARDOPTXPtr[Chan]];		// Enough to hold whole frame of samples
+	short * out = DMABuffer;
+
+	int LR = modemtoSoundLR[Chan];
+
+	int i;
+
+	for (i = 0; i < Len; i++)
+	{
+		if (SCO)			// Single Channel Output - same to both L and R
+		{
+			*out++ = *in;
+			*out++ = *in++;
+		}
+		else
+		{
+			if (LR)				// Right
+			{
+				*out++ = 0;
+				*out++ = *in++;
+			}
+			else
+			{
+				*out++ = *in++;
+				*out++ = 0;
+			}
+		}
+	}
+	DMABuffer = SendtoCard(DMABuffer, Len);
+
+	ARDOPTXPtr[Chan] += Len;
+
+	// See if end of buffer
+
+	if (ARDOPTXPtr[Chan] > ARDOPTXLen[Chan])
+		return 1;
+
+	return 0;
+}
+void DoTX(int Chan)
+{
+	// This kicks off a send sequence or calibrate
+
+//	printtick("dotx");
+
+	if (calib_mode[Chan])
+	{
+		// Maybe new calib or continuation
+
+		if (pnt_change[Chan])
+		{
+			make_core_BPF(Chan, rx_freq[Chan], bpf[Chan]);
+			make_core_TXBPF(Chan, tx_freq[Chan], txbpf[Chan]);
+			pnt_change[Chan] = FALSE;
+		}
+		
+		// Note this may block in SendtoCard
+
+		modulator(Chan, tx_bufsize);
+		return;
+	}
+
+	// I think we have to detect NO_DATA here and drop PTT and return to SILENCE
+
+	if (tx_status[Chan] == TX_NO_DATA)
+	{
+		Flush();
+		Debugprintf("TX Complete");
+		RadioPTT(0, 0);
+		tx_status[Chan] = TX_SILENCE;
+
+		// We should now send any ackmode acks as the channel is now free for dest to reply
+
+		sendAckModeAcks(Chan);
+	}
+
+	if (tx_status[Chan] != TX_SILENCE)
+	{
+		// Continue the send
+
+		if (modem_mode[Chan] == MODE_ARDOP)
+		{
+//			if (SeeIfCardBusy())
+//				return 0;
+
+			if (ARDOPSendToCard(Chan, SendSize) == 1)
+			{
+				// End of TX
+
+				Number = 0;
+				Flush();
+
+				// See if more to send. If so, don't drop PTT
+
+				if (all_frame_buf[Chan].Count)
+				{
+					SoundIsPlaying = TRUE;
+					Number = 0;
+
+					Debugprintf("TX Continuing");
+
+					string * myTemp = Strings(&all_frame_buf[Chan], 0);			// get message
+					string * tx_data;
+
+					if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+					{
+						// Save copy then copy data up 3 bytes
+
+						Add(&KISS_acked[Chan], duplicateString(myTemp));
+
+						mydelete(myTemp, 0, 3);
+						myTemp->Length -= sizeof(void *);
+					}
+					else
+					{
+						// Just remove control 
+
+						mydelete(myTemp, 0, 1);
+					}
+
+					tx_data = duplicateString(myTemp);		// so can free original below
+
+					Delete(&all_frame_buf[Chan], 0);			// This will invalidate temp
+
+					AGW_AX25_frame_analiz(Chan, FALSE, tx_data);
+
+					put_frame(Chan, tx_data, "", TRUE, FALSE);
+
+					PktARDOPEncode(tx_data->Data, tx_data->Length - 2, Chan);
+
+					freeString(tx_data);
+
+					// Samples are now in DMABuffer = Send first block
+
+					ARDOPSendToCard(Chan, SendSize);
+					tx_status[Chan] = TX_FRAME;
+					return;
+				}
+
+				Debugprintf("TX Complete");
+				RadioPTT(0, 0);
+				tx_status[Chan] = TX_SILENCE;
+
+				// We should now send any ackmode acks as the channel is now free for dest to reply
+			}
+
+			return;
+		}
+
+		modulator(Chan, tx_bufsize); 
+		return;
+	}
+
+	if (SoundIsPlaying || UDPSoundIsPlaying)
+		return;
+
+	// Not doing anything so see if we have anything new to send
+
+	// See if frequency has changed
+
+	if (pnt_change[Chan])
+	{
+		make_core_BPF(Chan, rx_freq[Chan], bpf[Chan]);
+		make_core_TXBPF(Chan, tx_freq[Chan], txbpf[Chan]);
+		pnt_change[Chan] = FALSE;
+	}
+
+	// See if we need an RSID
+
+	if (needRSID[Chan])
+	{
+		needRSID[Chan] = 0;
+
+		// Note this may block in SampleSink
+
+		Debugprintf("Sending RSID");
+		sendRSID(Chan, all_frame_buf[Chan].Count == 0);
+		return;
+	}
+
+	if (all_frame_buf[Chan].Count == 0)
+		return;
+
+	// Start a new send. modulator should handle TXD etc
+
+	Debugprintf("TX Start");
+	SampleNo = 0;
+
+	SoundIsPlaying = TRUE;
+	RadioPTT(Chan, 1);
+	Number = 0;
+
+	if (modem_mode[Chan] == MODE_ARDOP)
+	{
+		// I think ARDOP will have to generate a whole frame of samples
+		// then send them out a bit at a time to avoid stopping here for
+		// possibly 10's of seconds
+
+		// Can do this here as unlike normal ardop we don't need to run on Teensy
+		// to 12000 sample rate we need either 24K or 48K per second, depending on
+		// where we do the stereo mux. 
+
+		// Slowest rate is 50 baud, so a 255 byte packet would take about a minute
+		// allowing for RS overhead. Not really realistic put perhaps should be possible.
+		// RAM isn't an issue so maybe allocate 2 MB. 
+
+		// ?? Should we allow two ARDOP modems - could make sense if we can run sound
+		// card channels independently
+
+		string * myTemp = Strings(&all_frame_buf[Chan], 0);			// get message
+		string * tx_data;
+
+		if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+		{
+			// Save copy then copy data up 3 bytes
+
+			Add(&KISS_acked[Chan], duplicateString(myTemp));
+
+			mydelete(myTemp, 0, 3);
+			myTemp->Length -= sizeof(void *);
+		}
+		else
+		{
+			// Just remove control 
+
+			mydelete(myTemp, 0, 1);
+		}
+
+		tx_data = duplicateString(myTemp);		// so can free original below
+
+		Delete(&all_frame_buf[Chan], 0);			// This will invalidate temp
+
+		AGW_AX25_frame_analiz(Chan, FALSE, tx_data);
+
+		put_frame(Chan, tx_data, "", TRUE, FALSE);
+
+		PktARDOPEncode(tx_data->Data, tx_data->Length - 2, Chan);
+
+		freeString(tx_data);
+
+		// Samples are now in DMABuffer = Send first block
+
+		ARDOPSendToCard(Chan, SendSize);
+		tx_status[Chan] = TX_FRAME;
+
+	}
+	else
+		modulator(Chan, tx_bufsize);
+
+	return;
+}
+
+void stoptx(int snd_ch)
+{
+	Flush();
+	Debugprintf("TX Complete");
+	RadioPTT(snd_ch, 0);
+	tx_status[snd_ch] = TX_SILENCE;
+
+	snd_status[snd_ch] = SND_IDLE;
+}
+
+void RX2TX(int snd_ch)
+{
+	if (snd_status[snd_ch] == SND_IDLE)
+	{
+		DoTX(snd_ch);
+	}
+}
+
+// PTT Stuff
+
+int hPTTDevice = 0;
+char PTTPort[80] = "";			// Port for Hardware PTT - may be same as control port.
+int PTTBAUD = 19200;
+int PTTMode = PTTRTS;			// PTT Control Flags.
+
+char PTTOnString[128] = "";
+char PTTOffString[128] = "";
+
+UCHAR PTTOnCmd[64];
+UCHAR PTTOnCmdLen = 0;
+
+UCHAR PTTOffCmd[64];
+UCHAR PTTOffCmdLen = 0;
+
+int pttGPIOPin = 17;			// Default
+int pttGPIOPinR = 17;
+BOOL pttGPIOInvert = FALSE;
+BOOL useGPIO = FALSE;
+BOOL gotGPIO = FALSE;
+
+int HamLibPort = 4532;
+char HamLibHost[32] = "192.168.1.14";
+
+char CM108Addr[80] = "";
+
+int VID = 0;
+int PID = 0;
+
+// CM108 Code
+
+char * CM108Device = NULL;
+
+void DecodeCM108(char * ptr)
+{
+	// Called if Device Name or PTT = Param is CM108
+
+#ifdef WIN32
+
+	// Next Param is VID and PID - 0xd8c:0x8 or Full device name
+	// On Windows device name is very long and difficult to find, so 
+	//	easier to use VID/PID, but allow device in case more than one needed
+
+	char * next;
+	long VID = 0, PID = 0;
+	char product[256] = "Unknown";
+
+	struct hid_device_info *devs, *cur_dev;
+	const char *path_to_open = NULL;
+	hid_device *handle = NULL;
+
+	if (strlen(ptr) > 16)
+		CM108Device = _strdup(ptr);
+	else
+	{
+		VID = strtol(ptr, &next, 0);
+		if (next)
+			PID = strtol(++next, &next, 0);
+
+		// Look for Device
+
+		devs = hid_enumerate((unsigned short)VID, (unsigned short)PID);
+		cur_dev = devs;
+
+		while (cur_dev)
+		{
+			if (cur_dev->product_string)
+				wcstombs(product, cur_dev->product_string, 255);
+			
+			Debugprintf("HID Device %s VID %X PID %X", product, cur_dev->vendor_id, cur_dev->product_id);
+			if (cur_dev->vendor_id == VID && cur_dev->product_id == PID)
+			{
+				path_to_open = cur_dev->path;
+				break;
+			}
+			cur_dev = cur_dev->next;
+		}
+
+		if (path_to_open)
+		{
+			handle = hid_open_path(path_to_open);
+
+			if (handle)
+			{
+				hid_close(handle);
+				CM108Device = _strdup(path_to_open);
+			}
+			else
+			{
+				Debugprintf("Unable to open CM108 device %x %x", VID, PID);
+			}
+		}
+		else
+			Debugprintf("Couldn't find CM108 device %x %x", VID, PID);
+
+		hid_free_enumeration(devs);
+	}
+#else
+
+	// Linux - Next Param HID Device, eg /dev/hidraw0
+
+	CM108Device = _strdup(ptr);
+#endif
+}
+
+char * strlop(char * buf, char delim)
+{
+	// Terminate buf at delim, and return rest of string
+
+	char * ptr = strchr(buf, delim);
+
+	if (ptr == NULL) return NULL;
+
+	*(ptr)++ = 0;
+	return ptr;
+}
+
+void OpenPTTPort()
+{
+	PTTMode &= ~PTTCM108;
+	PTTMode &= ~PTTHAMLIB;
+
+	if (PTTPort[0] && strcmp(PTTPort, "None") != 0)
+	{
+		if (PTTMode == PTTCAT)
+		{
+			// convert config strings from Hex
+
+			char * ptr1 = PTTOffString;
+			UCHAR * ptr2 = PTTOffCmd;
+			char c;
+			int val;
+
+			while (c = *(ptr1++))
+			{
+				val = c - 0x30;
+				if (val > 15) val -= 7;
+				val <<= 4;
+				c = *(ptr1++) - 0x30;
+				if (c > 15) c -= 7;
+				val |= c;
+				*(ptr2++) = val;
+			}
+
+			PTTOffCmdLen = ptr2 - PTTOffCmd;
+
+			ptr1 = PTTOnString;
+			ptr2 = PTTOnCmd;
+
+			while (c = *(ptr1++))
+			{
+				val = c - 0x30;
+				if (val > 15) val -= 7;
+				val <<= 4;
+				c = *(ptr1++) - 0x30;
+				if (c > 15) c -= 7;
+				val |= c;
+				*(ptr2++) = val;
+			}
+
+			PTTOnCmdLen = ptr2 - PTTOnCmd;
+		}
+
+		if (stricmp(PTTPort, "GPIO") == 0)
+		{
+			// Initialise GPIO for PTT if available
+
+#ifdef __ARM_ARCH
+
+			if (gpioInitialise() == 0)
+			{
+				printf("GPIO interface for PTT available\n");
+				gotGPIO = TRUE;
+
+				SetupGPIOPTT();
+			}
+			else
+				printf("Couldn't initialise GPIO interface for PTT\n");
+
+#else
+			printf("GPIO interface for PTT not available on this platform\n");
+#endif
+
+		}
+		else if (stricmp(PTTPort, "CM108") == 0)
+		{
+			DecodeCM108(CM108Addr);
+			PTTMode |= PTTCM108;
+		}
+
+		else if (stricmp(PTTPort, "HAMLIB") == 0)
+		{
+			PTTMode |= PTTHAMLIB;
+			HAMLIBSetPTT(0);			// to open port
+			return;
+		}
+
+		else		//  Not GPIO
+		{
+			hPTTDevice = OpenCOMPort(PTTPort, PTTBAUD, FALSE, FALSE, FALSE, 0);
+		}
+	}
+}
+
+void ClosePTTPort()
+{
+	CloseCOMPort(hPTTDevice);
+	hPTTDevice = 0;
+}
+void CM108_set_ptt(int PTTState)
+{
+	char io[5];
+	hid_device *handle;
+	int n;
+
+	io[0] = 0;
+	io[1] = 0;
+	io[2] = 1 << (3 - 1);
+	io[3] = PTTState << (3 - 1);
+	io[4] = 0;
+
+	if (CM108Device == NULL)
+		return;
+
+#ifdef WIN32
+	handle = hid_open_path(CM108Device);
+
+	if (!handle) {
+		printf("unable to open device\n");
+		return;
+	}
+
+	n = hid_write(handle, io, 5);
+	if (n < 0)
+	{
+		printf("Unable to write()\n");
+		printf("Error: %ls\n", hid_error(handle));
+	}
+
+	hid_close(handle);
+
+#else
+
+	int fd;
+
+	fd = open(CM108Device, O_WRONLY);
+
+	if (fd == -1)
+	{
+		printf("Could not open %s for write, errno=%d\n", CM108Device, errno);
+		return;
+	}
+
+	io[0] = 0;
+	io[1] = 0;
+	io[2] = 1 << (3 - 1);
+	io[3] = PTTState << (3 - 1);
+	io[4] = 0;
+
+	n = write(fd, io, 5);
+	if (n != 5)
+	{
+		printf("Write to %s failed, n=%d, errno=%d\n", CM108Device, n, errno);
+	}
+
+	close(fd);
+#endif
+	return;
+
+}
+
+
+
+void RadioPTT(int snd_ch, BOOL PTTState)
+{
+#ifdef __ARM_ARCH
+	if (useGPIO)
+	{
+		if (DualPTT && modemtoSoundLR[snd_ch] == 1)
+			gpioWrite(pttGPIOPinR, (pttGPIOInvert ? (1 - PTTState) : (PTTState)));
+		else
+			gpioWrite(pttGPIOPin, (pttGPIOInvert ? (1 - PTTState) : (PTTState)));
+
+		return;
+	}
+
+#endif
+
+	if ((PTTMode & PTTCM108))
+	{
+		CM108_set_ptt(PTTState);
+		return;
+	}
+	
+	if ((PTTMode & PTTHAMLIB))
+	{
+		HAMLIBSetPTT(PTTState);
+		return;
+	}
+	if (hPTTDevice == 0)
+		return;
+
+	if ((PTTMode & PTTCAT))
+	{
+		if (PTTState)
+			WriteCOMBlock(hPTTDevice, PTTOnCmd, PTTOnCmdLen);
+		else
+			WriteCOMBlock(hPTTDevice, PTTOffCmd, PTTOffCmdLen);
+
+		return;
+	}
+
+	if (DualPTT && modemtoSoundLR[snd_ch] == 1)		// use DTR
+	{
+		if (PTTState)
+			COMSetDTR(hPTTDevice);
+		else
+			COMClearDTR(hPTTDevice);
+	}
+	else
+	{
+		if ((PTTMode & PTTRTS))
+		{
+			if (PTTState)
+				COMSetRTS(hPTTDevice);
+			else
+				COMClearRTS(hPTTDevice);
+		}
+	}
+
+}
+
+char ShortDT[] = "HH:MM:SS";
+
+char * ShortDateTime()
+{
+	struct tm * tm;
+	time_t NOW = time(NULL);
+
+	tm = gmtime(&NOW);
+
+	sprintf(ShortDT, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
+	return ShortDT;
+}
+
+
+// Reed Solomon Stuff
+
+
+int NPAR = -1;	// Number of Parity Bytes - used in RS Code
+
+int xMaxErrors = 0;
+
+int RSEncode(UCHAR * bytToRS, UCHAR * RSBytes, int DataLen, int RSLen)
+{
+	// This just returns the Parity Bytes. I don't see the point
+	// in copying the message about
+
+	unsigned char Padded[256];		// The padded Data
+
+	int Length = DataLen + RSLen;	// Final Length of packet
+	int PadLength = 255 - Length;	// Padding bytes needed for shortened RS codes
+
+	//	subroutine to do the RS encode. For full length and shortend RS codes up to 8 bit symbols (mm = 8)
+
+	if (NPAR != RSLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = RSLen;
+		xMaxErrors = NPAR / 2;
+		initialize_ecc();
+	}
+
+	// Copy the supplied data to end of data array.
+
+	memset(Padded, 0, PadLength);
+	memcpy(&Padded[PadLength], bytToRS, DataLen);
+
+	encode_data(Padded, 255 - RSLen, RSBytes);
+
+	return RSLen;
+}
+
+//	Main RS decode function
+
+extern int index_of[];
+extern int recd[];
+extern int Corrected[256];
+extern int tt;		//  number of errors that can be corrected 
+extern int kk;		// Info Symbols
+
+extern BOOL blnErrorsCorrected;
+
+
+BOOL RSDecode(UCHAR * bytRcv, int Length, int CheckLen, BOOL * blnRSOK)
+{
+
+
+	// Using a modified version of Henry Minsky's code
+
+	//Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+
+	// Rick's Implementation processes the byte array in reverse. and also 
+	//	has the check bytes in the opposite order. I've modified the encoder
+	//	to allow for this, but so far haven't found a way to mske the decoder
+	//	work, so I have to reverse the data and checksum to decode G8BPQ Nov 2015
+
+	//	returns TRUE if was ok or correction succeeded, FALSE if correction impossible
+
+	UCHAR intTemp[256];				// WOrk Area to pass to Decoder		
+	int i;
+	UCHAR * ptr2 = intTemp;
+	UCHAR * ptr1 = &bytRcv[Length - CheckLen - 1]; // Last Byte of Data
+
+	int DataLen = Length - CheckLen;
+	int PadLength = 255 - Length;		// Padding bytes needed for shortened RS codes
+
+	*blnRSOK = FALSE;
+
+	if (Length > 255 || Length < (1 + CheckLen))		//Too long or too short 
+		return FALSE;
+
+	if (NPAR != CheckLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = CheckLen;
+		xMaxErrors = NPAR / 2;
+
+		initialize_ecc();
+	}
+
+
+	//	We reverse the data while zero padding it to speed things up
+
+	//	We Need (Data Reversed) (Zero Padding) (Checkbytes Reversed)
+
+	// Reverse Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	//	Clear padding
+
+	memset(ptr2, 0, PadLength);
+
+	ptr2 += PadLength;
+
+	// Error Bits
+
+	ptr1 = &bytRcv[Length - 1];			// End of check bytes
+
+	for (i = 0; i < CheckLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	decode_data(intTemp, 255);
+
+	// check if syndrome is all zeros 
+
+	if (check_syndrome() == 0)
+	{
+		// RS ok, so no need to correct
+
+		*blnRSOK = TRUE;
+		return TRUE;		// No Need to Correct
+	}
+
+	if (correct_errors_erasures(intTemp, 255, 0, 0) == 0) // Dont support erasures at the momnet
+
+		// Uncorrectable
+
+		return FALSE;
+
+	// Data has been corrected, so need to reverse again
+
+	ptr1 = &intTemp[DataLen - 1];
+	ptr2 = bytRcv; // Last Byte of Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	// ?? Do we need to return the check bytes ??
+
+	// Yes, so we can redo RS Check on supposedly connected frame
+
+	ptr1 = &intTemp[254];	// End of Check Bytes
+
+	for (i = 0; i < CheckLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	return TRUE;
+}
+
+extern TStringList detect_list[5];
+extern TStringList detect_list_c[5];
+
+void ProcessPktFrame(int snd_ch, UCHAR * Data, int frameLen)
+{
+	string * pkt = newString();
+
+	stringAdd(pkt, Data, frameLen + 2);			// 2 for crc (not actually there)
+
+	analiz_frame(snd_ch, pkt, "ARDOP", 1);
+
+}
diff --git a/SMMain.c b/SMMain.c
new file mode 100644
index 0000000..9464491
--- /dev/null
+++ b/SMMain.c
@@ -0,0 +1,1383 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+#include "fftw3.h"
+#include <time.h>
+#include "ecc.h"				// RS Constants
+#include "hidapi.h"
+#include <fcntl.h>
+#include <errno.h>
+
+BOOL KISSServ;
+int KISSPort;
+
+BOOL AGWServ;
+int AGWPort;
+
+int Number = 0;				// Number waiting to be sent
+
+int SoundIsPlaying = 0;
+int UDPSoundIsPlaying = 0;
+int Capturing = 0;
+
+extern unsigned short buffer[2][1200];
+extern int SoundMode;
+extern int needRSID[4];
+
+extern short * DMABuffer;
+
+unsigned short * SendtoCard(unsigned short * buf, int n);
+short * SoundInit();
+void DoTX(int Chan);
+void UDPPollReceivedSamples();
+
+
+extern int SampleNo;
+
+extern int pnt_change[5];				// Freq Changed Flag
+
+// fftw library interface
+
+
+fftwf_complex *in, *out;
+fftwf_plan p;
+
+#define N 2048
+
+void initfft()
+{
+	in = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	out = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	p = fftwf_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
+}
+
+void dofft(short * inp, float * outr, float * outi)
+{
+	int i;
+	
+	fftwf_complex * fft = in;
+
+	for (i = 0; i < N; i++)
+	{
+		fft[0][0] = inp[0] * 1.0f;
+		fft[0][1] = 0;
+		fft++;
+		inp++;
+	}
+
+	fftwf_execute(p); 
+
+	fft = out;
+
+	for (i = 0; i < N; i++)
+	{
+		outr[0] = fft[0][0];
+		outi[0] = fft[0][1];
+		fft++;
+		outi++;
+		outr++;
+	}
+}
+
+void freefft()
+{
+	fftwf_destroy_plan(p);
+	fftwf_free(in);
+	fftwf_free(out);
+}
+
+int nonGUIMode = 0;
+
+void soundMain()
+{
+	// non platform specific initialisation
+
+	platformInit();
+
+	// initialise fft library
+
+	RsCreate();				// RS code for MPSK
+
+	detector_init();
+	KISS_init();
+	ax25_init();
+	init_raduga();			// Set up waterfall colour table
+
+	initfft();
+
+	if (nonGUIMode)
+	{
+		Firstwaterfall = 0;
+		Secondwaterfall = 0;
+	}
+
+	OpenPTTPort();
+}
+
+
+void SampleSink(int LR, short Sample)
+{
+	// This version is passed samples one at a time, as we don't have
+	//	enough RAM in embedded systems to hold a full audio frame
+
+	// LR - 1 == Right Chan
+
+#ifdef TEENSY	
+		int work = Sample;
+		DMABuffer[Number++] = (work + 32768) >> 4; // 12 bit left justify
+#else
+	if (SCO)			// Single Channel Output - same to both L and R
+	{
+		DMABuffer[2 * Number] = Sample;
+		DMABuffer[1 + 2 * Number] = Sample;
+
+	}
+	else
+	{
+		if (LR)				// Right
+		{
+			DMABuffer[1 + 2 * Number] = Sample;
+			DMABuffer[2 * Number] = 0;
+		}
+		else
+		{
+			DMABuffer[2 * Number] = Sample;
+			DMABuffer[1 + 2 * Number] = 0;
+		}
+	}
+	Number++;
+#endif
+		if (Number >= SendSize)
+		{
+			// send this buffer to sound interface
+
+			DMABuffer = SendtoCard(DMABuffer, SendSize);
+			Number = 0;
+		}
+	
+
+//	Last120[Last120Put++] = Sample;
+
+//	if (Last120Put == (intN + 1))
+//		Last120Put = 0;
+
+	SampleNo++;
+}
+
+
+void Flush()
+{
+	SoundFlush(Number);
+}
+
+int ipow(int base, int exp)
+{
+	int result = 1;
+	while (exp)
+	{
+		if (exp & 1)
+			result *= base;
+		exp >>= 1;
+		base *= base;
+	}
+
+	return result;
+}
+
+int NumberOfBitsNeeded(int PowerOfTwo)
+{
+	int i;
+
+	for (i = 0; i <= 16; i++)
+	{
+		if ((PowerOfTwo & ipow(2, i)) != 0)
+			return i;
+
+	}
+	return 0;
+}
+
+
+int ReverseBits(int Index, int NumBits)
+{
+	int i, Rev = 0;
+
+	for (i = 0; i < NumBits; i++)
+	{
+		Rev = (Rev * 2) | (Index & 1);
+		Index = Index / 2;
+	}
+
+	return Rev;
+}
+
+
+void FourierTransform(int NumSamples, short * RealIn, float * RealOut, float * ImagOut, int InverseTransform)
+{
+	float AngleNumerator;
+	unsigned char NumBits;
+
+	int i, j, K, n, BlockSize, BlockEnd;
+	float DeltaAngle, DeltaAr;
+	float Alpha, Beta;
+	float TR, TI, AR, AI;
+
+	if (InverseTransform)
+		AngleNumerator = -2.0f * M_PI;
+	else
+		AngleNumerator = 2.0f * M_PI;
+
+	NumBits = NumberOfBitsNeeded(NumSamples);
+
+	for (i = 0; i < NumSamples; i++)
+	{
+		j = ReverseBits(i, NumBits);
+		RealOut[j] = RealIn[i];
+		ImagOut[j] = 0.0f; // Not using i in ImageIn[i];
+	}
+
+	BlockEnd = 1;
+	BlockSize = 2;
+
+	while (BlockSize <= NumSamples)
+	{
+		DeltaAngle = AngleNumerator / BlockSize;
+		Alpha = sinf(0.5f * DeltaAngle);
+		Alpha = 2.0f * Alpha * Alpha;
+		Beta = sinf(DeltaAngle);
+
+		i = 0;
+
+		while (i < NumSamples)
+		{
+			AR = 1.0f;
+			AI = 0.0f;
+
+			j = i;
+
+			for (n = 0; n < BlockEnd; n++)
+			{
+				K = j + BlockEnd;
+				TR = AR * RealOut[K] - AI * ImagOut[K];
+				TI = AI * RealOut[K] + AR * ImagOut[K];
+				RealOut[K] = RealOut[j] - TR;
+				ImagOut[K] = ImagOut[j] - TI;
+				RealOut[j] = RealOut[j] + TR;
+				ImagOut[j] = ImagOut[j] + TI;
+				DeltaAr = Alpha * AR + Beta * AI;
+				AI = AI - (Alpha * AI - Beta * AR);
+				AR = AR - DeltaAr;
+				j = j + 1;
+			}
+			i = i + BlockSize;
+		}
+		BlockEnd = BlockSize;
+		BlockSize = BlockSize * 2;
+	}
+
+	if (InverseTransform)
+	{
+		//	Normalize the resulting time samples...
+
+		for (i = 0; i < NumSamples; i++)
+		{
+			RealOut[i] = RealOut[i] / NumSamples;
+			ImagOut[i] = ImagOut[i] / NumSamples;
+		}
+	}
+}
+
+
+
+int LastBusyCheck = 0;
+
+extern UCHAR CurrentLevel;
+
+#ifdef PLOTSPECTRUM		
+float dblMagSpectrum[206];
+float dblMaxScale = 0.0f;
+extern UCHAR Pixels[4096];
+extern UCHAR * pixelPointer;
+#endif
+
+extern int blnBusyStatus;
+BusyDet = 0;
+
+#define PLOTWATERFALL
+
+int WaterfallActive = 1;
+int SpectrumActive;
+
+/*
+
+void UpdateBusyDetector(short * bytNewSamples)
+{
+	float dblReF[1024];
+	float dblImF[1024];
+	float dblMag[206];
+#ifdef PLOTSPECTRUM
+	float dblMagMax = 0.0000000001f;
+	float dblMagMin = 10000000000.0f;
+#endif
+	UCHAR Waterfall[256];			// Colour index values to send to GUI
+	int clrTLC = Lime;				// Default Bandwidth lines on waterfall
+
+	static BOOL blnLastBusyStatus;
+
+	float dblMagAvg = 0;
+	int intTuneLineLow, intTuneLineHi, intDelta;
+	int i;
+
+	//	if (State != SearchingForLeader)
+	//		return;						// only when looking for leader
+
+	if (Now - LastBusyCheck < 100)
+		return;
+
+	LastBusyCheck = Now;
+
+	FourierTransform(1024, bytNewSamples, &dblReF[0], &dblImF[0], FALSE);
+
+	for (i = 0; i < 206; i++)
+	{
+		//	starting at ~300 Hz to ~2700 Hz Which puts the center of the signal in the center of the window (~1500Hz)
+
+		dblMag[i] = powf(dblReF[i + 25], 2) + powf(dblImF[i + 25], 2);	 // first pass 
+		dblMagAvg += dblMag[i];
+#ifdef PLOTSPECTRUM		
+		dblMagSpectrum[i] = 0.2f * dblMag[i] + 0.8f * dblMagSpectrum[i];
+		dblMagMax = max(dblMagMax, dblMagSpectrum[i]);
+		dblMagMin = min(dblMagMin, dblMagSpectrum[i]);
+#endif
+	}
+
+	//	LookforPacket(dblMag, dblMagAvg, 206, &dblReF[25], &dblImF[25]);
+	//	packet_process_samples(bytNewSamples, 1200);
+
+	intDelta = roundf(500 / 2) + 50 / 11.719f;
+
+	intTuneLineLow = max((103 - intDelta), 3);
+	intTuneLineHi = min((103 + intDelta), 203);
+
+//	if (ProtocolState == DISC)		// ' Only process busy when in DISC state
+	{
+	//	blnBusyStatus = BusyDetect3(dblMag, intTuneLineLow, intTuneLineHi);
+
+		if (blnBusyStatus && !blnLastBusyStatus)
+		{
+//			QueueCommandToHost("BUSY TRUE");
+//			newStatus = TRUE;				// report to PTC
+
+			if (!WaterfallActive && !SpectrumActive)
+			{
+				UCHAR Msg[2];
+
+//				Msg[0] = blnBusyStatus;
+//				SendtoGUI('B', Msg, 1);
+			}
+		}
+		//    stcStatus.Text = "TRUE"
+			//    queTNCStatus.Enqueue(stcStatus)
+			//    'Debug.WriteLine("BUSY TRUE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+		else if (blnLastBusyStatus && !blnBusyStatus)
+		{
+//			QueueCommandToHost("BUSY FALSE");
+//			newStatus = TRUE;				// report to PTC
+
+			if (!WaterfallActive && !SpectrumActive)
+			{
+				UCHAR Msg[2];
+
+				Msg[0] = blnBusyStatus;
+//				SendtoGUI('B', Msg, 1);
+			}
+		}
+		//    stcStatus.Text = "FALSE"
+		//    queTNCStatus.Enqueue(stcStatus)
+		//    'Debug.WriteLine("BUSY FALSE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+		blnLastBusyStatus = blnBusyStatus;
+	}
+
+	if (BusyDet == 0)
+		clrTLC = Goldenrod;
+	else if (blnBusyStatus)
+		clrTLC = Fuchsia;
+
+	// At the moment we only get here what seaching for leader,
+	// but if we want to plot spectrum we should call
+	// it always
+
+
+
+	if (WaterfallActive)
+	{
+#ifdef PLOTWATERFALL
+		dblMagAvg = log10f(dblMagAvg / 5000.0f);
+
+		for (i = 0; i < 206; i++)
+		{
+			// The following provides some AGC over the waterfall to compensate for avg input level.
+
+			float y1 = (0.25f + 2.5f / dblMagAvg) * log10f(0.01 + dblMag[i]);
+			int objColor;
+
+			// Set the pixel color based on the intensity (log) of the spectral line
+			if (y1 > 6.5)
+				objColor = Orange; // Strongest spectral line 
+			else if (y1 > 6)
+				objColor = Khaki;
+			else if (y1 > 5.5)
+				objColor = Cyan;
+			else if (y1 > 5)
+				objColor = DeepSkyBlue;
+			else if (y1 > 4.5)
+				objColor = RoyalBlue;
+			else if (y1 > 4)
+				objColor = Navy;
+			else
+				objColor = Black;
+
+			if (i == 102)
+				Waterfall[i] = Tomato;  // 1500 Hz line (center)
+			else if (i == intTuneLineLow || i == intTuneLineLow - 1 || i == intTuneLineHi || i == intTuneLineHi + 1)
+				Waterfall[i] = clrTLC;
+			else
+				Waterfall[i] = objColor; // ' Else plot the pixel as received
+		}
+
+		// Send Signal level and Busy indicator to save extra packets
+
+		Waterfall[206] = CurrentLevel;
+		Waterfall[207] = blnBusyStatus;
+
+		doWaterfall(Waterfall);
+#endif
+	}
+	else if (SpectrumActive)
+	{
+#ifdef PLOTSPECTRUM
+		// This performs an auto scaling mechansim with fast attack and slow release
+		if (dblMagMin / dblMagMax < 0.0001) // more than 10000:1 difference Max:Min
+			dblMaxScale = max(dblMagMax, dblMaxScale * 0.9f);
+		else
+			dblMaxScale = max(10000 * dblMagMin, dblMagMax);
+
+//		clearDisplay();
+
+		for (i = 0; i < 206; i++)
+		{
+			// The following provides some AGC over the spectrum to compensate for avg input level.
+
+			float y1 = -0.25f * (SpectrumHeight - 1) *  log10f((max(dblMagSpectrum[i], dblMaxScale / 10000)) / dblMaxScale); // ' range should be 0 to bmpSpectrumHeight -1
+			int objColor = Yellow;
+
+			Waterfall[i] = round(y1);
+		}
+
+		// Send Signal level and Busy indicator to save extra packets
+
+		Waterfall[206] = CurrentLevel;
+		Waterfall[207] = blnBusyStatus;
+		Waterfall[208] = intTuneLineLow;
+		Waterfall[209] = intTuneLineHi;
+
+//		SendtoGUI('X', Waterfall, 210);
+#endif
+	}
+}
+
+*/
+
+extern short rawSamples[2400];	// Get Frame Type need 2400 and we may add 1200
+int rawSamplesLength = 0;
+extern int maxrawSamplesLength;
+
+void ProcessNewSamples(short * Samples, int nSamples)
+{
+	if (SoundIsPlaying == FALSE && UDPSoundIsPlaying == FALSE)
+		BufferFull(Samples, nSamples);
+};
+
+void doCalib(int Chan, int Act)
+{
+	if (Chan == 0 && calib_mode[1])
+		return;						
+	
+	if (Chan == 1 && calib_mode[0])
+		return;
+
+	calib_mode[Chan] = Act;
+
+	if (Act == 0)
+	{
+		tx_status[Chan] = TX_SILENCE;		// Stop TX
+		Flush();
+		RadioPTT(Chan, 0);
+		Debugprintf("Stop Calib");
+	}
+}
+
+int Freq_Change(int Chan, int Freq)
+{
+	int low, high;
+
+	low = round(rx_shift[1] / 2 + RCVR[Chan] * rcvr_offset[Chan] + 1);
+	high = round(RX_Samplerate / 2 - (rx_shift[Chan] / 2 + RCVR[Chan] * rcvr_offset[Chan]));
+
+	if (Freq < low)
+		return rx_freq[Chan];				// Dont allow change
+
+	if (Freq > high)
+		return rx_freq[Chan];				// Dont allow change
+
+	rx_freq[Chan] = Freq;
+	tx_freq[Chan] = Freq;
+
+	pnt_change[Chan] = TRUE;
+	wf_pointer(soundChannel[Chan]);
+
+	return Freq;
+}
+
+void MainLoop()
+{
+	// Called by background thread every 10 ms (maybe)
+
+	// Actually we may have two cards
+	
+	// Original only allowed one channel per card.
+	// I think we should be able to run more, ie two or more
+	// modems on same soundcard channel
+	
+	// So All the soundcard stuff will need to be generalised
+
+	if (UDPServ)
+		UDPPollReceivedSamples();
+
+	if (SoundMode == 3)
+		UDPPollReceivedSamples();
+	else
+		PollReceivedSamples();
+
+
+	for (int i = 0; i < 4; i++)
+	{
+		if (modem_mode[i] == MODE_ARDOP)
+		{
+			chk_dcd1(i, 512);
+		}
+	}
+	DoTX(0);
+	DoTX(1);
+	DoTX(2);
+	DoTX(3);
+
+}
+
+int ARDOPSendToCard(int Chan, int Len)
+{
+	// Send Next Block of samples to the soundcard
+
+	short * in = &ARDOPTXBuffer[Chan][ARDOPTXPtr[Chan]];		// Enough to hold whole frame of samples
+	short * out = DMABuffer;
+
+	int LR = modemtoSoundLR[Chan];
+
+	int i;
+
+	for (i = 0; i < Len; i++)
+	{
+		if (SCO)			// Single Channel Output - same to both L and R
+		{
+			*out++ = *in;
+			*out++ = *in++;
+		}
+		else
+		{
+			if (LR)				// Right
+			{
+				*out++ = 0;
+				*out++ = *in++;
+			}
+			else
+			{
+				*out++ = *in++;
+				*out++ = 0;
+			}
+		}
+	}
+	DMABuffer = SendtoCard(DMABuffer, Len);
+
+	ARDOPTXPtr[Chan] += Len;
+
+	// See if end of buffer
+
+	if (ARDOPTXPtr[Chan] > ARDOPTXLen[Chan])
+		return 1;
+
+	return 0;
+}
+void DoTX(int Chan)
+{
+	// This kicks off a send sequence or calibrate
+
+//	printtick("dotx");
+
+	if (calib_mode[Chan])
+	{
+		// Maybe new calib or continuation
+
+		if (pnt_change[Chan])
+		{
+			make_core_BPF(Chan, rx_freq[Chan], bpf[Chan]);
+			make_core_TXBPF(Chan, tx_freq[Chan], txbpf[Chan]);
+			pnt_change[Chan] = FALSE;
+		}
+		
+		// Note this may block in SendtoCard
+
+		modulator(Chan, tx_bufsize);
+		return;
+	}
+
+	// I think we have to detect NO_DATA here and drop PTT and return to SILENCE
+
+	if (tx_status[Chan] == TX_NO_DATA)
+	{
+		Flush();
+		Debugprintf("TX Complete");
+		RadioPTT(0, 0);
+		tx_status[Chan] = TX_SILENCE;
+
+		// We should now send any ackmode acks as the channel is now free for dest to reply
+
+		sendAckModeAcks(Chan);
+	}
+
+	if (tx_status[Chan] != TX_SILENCE)
+	{
+		// Continue the send
+
+		if (modem_mode[Chan] == MODE_ARDOP)
+		{
+//			if (SeeIfCardBusy())
+//				return 0;
+
+			if (ARDOPSendToCard(Chan, SendSize) == 1)
+			{
+				// End of TX
+
+				Number = 0;
+				Flush();
+
+				// See if more to send. If so, don't drop PTT
+
+				if (all_frame_buf[Chan].Count)
+				{
+					SoundIsPlaying = TRUE;
+					Number = 0;
+
+					Debugprintf("TX Continuing");
+
+					string * myTemp = Strings(&all_frame_buf[Chan], 0);			// get message
+					string * tx_data;
+
+					if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+					{
+						// Save copy then copy data up 3 bytes
+
+						Add(&KISS_acked[Chan], duplicateString(myTemp));
+
+						mydelete(myTemp, 0, 3);
+						myTemp->Length -= sizeof(void *);
+					}
+					else
+					{
+						// Just remove control 
+
+						mydelete(myTemp, 0, 1);
+					}
+
+					tx_data = duplicateString(myTemp);		// so can free original below
+
+					Delete(&all_frame_buf[Chan], 0);			// This will invalidate temp
+
+					AGW_AX25_frame_analiz(Chan, FALSE, tx_data);
+
+					put_frame(Chan, tx_data, "", TRUE, FALSE);
+
+					PktARDOPEncode(tx_data->Data, tx_data->Length - 2, Chan);
+
+					freeString(tx_data);
+
+					// Samples are now in DMABuffer = Send first block
+
+					ARDOPSendToCard(Chan, SendSize);
+					tx_status[Chan] = TX_FRAME;
+					return;
+				}
+
+				Debugprintf("TX Complete");
+				RadioPTT(0, 0);
+				tx_status[Chan] = TX_SILENCE;
+
+				// We should now send any ackmode acks as the channel is now free for dest to reply
+			}
+
+			return;
+		}
+
+		modulator(Chan, tx_bufsize); 
+		return;
+	}
+
+	if (SoundIsPlaying || UDPSoundIsPlaying)
+		return;
+
+	// Not doing anything so see if we have anything new to send
+
+	// See if frequency has changed
+
+	if (pnt_change[Chan])
+	{
+		make_core_BPF(Chan, rx_freq[Chan], bpf[Chan]);
+		make_core_TXBPF(Chan, tx_freq[Chan], txbpf[Chan]);
+		pnt_change[Chan] = FALSE;
+	}
+
+	// See if we need an RSID
+
+	if (needRSID[Chan])
+	{
+		needRSID[Chan] = 0;
+
+		// Note this may block in SampleSink
+
+		Debugprintf("Sending RSID");
+		sendRSID(Chan, all_frame_buf[Chan].Count == 0);
+		return;
+	}
+
+	if (all_frame_buf[Chan].Count == 0)
+		return;
+
+	// Start a new send. modulator should handle TXD etc
+
+	Debugprintf("TX Start");
+	SampleNo = 0;
+
+	SoundIsPlaying = TRUE;
+	RadioPTT(Chan, 1);
+	Number = 0;
+
+	if (modem_mode[Chan] == MODE_ARDOP)
+	{
+		// I think ARDOP will have to generate a whole frame of samples
+		// then send them out a bit at a time to avoid stopping here for
+		// possibly 10's of seconds
+
+		// Can do this here as unlike normal ardop we don't need to run on Teensy
+		// to 12000 sample rate we need either 24K or 48K per second, depending on
+		// where we do the stereo mux. 
+
+		// Slowest rate is 50 baud, so a 255 byte packet would take about a minute
+		// allowing for RS overhead. Not really realistic put perhaps should be possible.
+		// RAM isn't an issue so maybe allocate 2 MB. 
+
+		// ?? Should we allow two ARDOP modems - could make sense if we can run sound
+		// card channels independently
+
+		string * myTemp = Strings(&all_frame_buf[Chan], 0);			// get message
+		string * tx_data;
+
+		if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+		{
+			// Save copy then copy data up 3 bytes
+
+			Add(&KISS_acked[Chan], duplicateString(myTemp));
+
+			mydelete(myTemp, 0, 3);
+			myTemp->Length -= sizeof(void *);
+		}
+		else
+		{
+			// Just remove control 
+
+			mydelete(myTemp, 0, 1);
+		}
+
+		tx_data = duplicateString(myTemp);		// so can free original below
+
+		Delete(&all_frame_buf[Chan], 0);			// This will invalidate temp
+
+		AGW_AX25_frame_analiz(Chan, FALSE, tx_data);
+
+		put_frame(Chan, tx_data, "", TRUE, FALSE);
+
+		PktARDOPEncode(tx_data->Data, tx_data->Length - 2, Chan);
+
+		freeString(tx_data);
+
+		// Samples are now in DMABuffer = Send first block
+
+		ARDOPSendToCard(Chan, SendSize);
+		tx_status[Chan] = TX_FRAME;
+
+	}
+	else
+		modulator(Chan, tx_bufsize);
+
+	return;
+}
+
+void stoptx(int snd_ch)
+{
+	Flush();
+	Debugprintf("TX Complete");
+	RadioPTT(snd_ch, 0);
+	tx_status[snd_ch] = TX_SILENCE;
+
+	snd_status[snd_ch] = SND_IDLE;
+}
+
+void RX2TX(int snd_ch)
+{
+	if (snd_status[snd_ch] == SND_IDLE)
+	{
+		DoTX(snd_ch);
+	}
+}
+
+// PTT Stuff
+
+int hPTTDevice = 0;
+char PTTPort[80] = "";			// Port for Hardware PTT - may be same as control port.
+int PTTBAUD = 19200;
+int PTTMode = PTTRTS;			// PTT Control Flags.
+
+char PTTOnString[128] = "";
+char PTTOffString[128] = "";
+
+UCHAR PTTOnCmd[64];
+UCHAR PTTOnCmdLen = 0;
+
+UCHAR PTTOffCmd[64];
+UCHAR PTTOffCmdLen = 0;
+
+int pttGPIOPin = 17;			// Default
+int pttGPIOPinR = 17;
+BOOL pttGPIOInvert = FALSE;
+BOOL useGPIO = FALSE;
+BOOL gotGPIO = FALSE;
+
+int HamLibPort = 4532;
+char HamLibHost[32] = "192.168.1.14";
+
+char CM108Addr[80] = "";
+
+int VID = 0;
+int PID = 0;
+
+// CM108 Code
+
+char * CM108Device = NULL;
+
+void DecodeCM108(char * ptr)
+{
+	// Called if Device Name or PTT = Param is CM108
+
+#ifdef WIN32
+
+	// Next Param is VID and PID - 0xd8c:0x8 or Full device name
+	// On Windows device name is very long and difficult to find, so 
+	//	easier to use VID/PID, but allow device in case more than one needed
+
+	char * next;
+	long VID = 0, PID = 0;
+	char product[256] = "Unknown";
+
+	struct hid_device_info *devs, *cur_dev;
+	const char *path_to_open = NULL;
+	hid_device *handle = NULL;
+
+	if (strlen(ptr) > 16)
+		CM108Device = _strdup(ptr);
+	else
+	{
+		VID = strtol(ptr, &next, 0);
+		if (next)
+			PID = strtol(++next, &next, 0);
+
+		// Look for Device
+
+		devs = hid_enumerate((unsigned short)VID, (unsigned short)PID);
+		cur_dev = devs;
+
+		while (cur_dev)
+		{
+			if (cur_dev->product_string)
+				wcstombs(product, cur_dev->product_string, 255);
+			
+			Debugprintf("HID Device %s VID %X PID %X", product, cur_dev->vendor_id, cur_dev->product_id);
+			if (cur_dev->vendor_id == VID && cur_dev->product_id == PID)
+			{
+				path_to_open = cur_dev->path;
+				break;
+			}
+			cur_dev = cur_dev->next;
+		}
+
+		if (path_to_open)
+		{
+			handle = hid_open_path(path_to_open);
+
+			if (handle)
+			{
+				hid_close(handle);
+				CM108Device = _strdup(path_to_open);
+			}
+			else
+			{
+				Debugprintf("Unable to open CM108 device %x %x", VID, PID);
+			}
+		}
+		else
+			Debugprintf("Couldn't find CM108 device %x %x", VID, PID);
+
+		hid_free_enumeration(devs);
+	}
+#else
+
+	// Linux - Next Param HID Device, eg /dev/hidraw0
+
+	CM108Device = _strdup(ptr);
+#endif
+}
+
+char * strlop(char * buf, char delim)
+{
+	// Terminate buf at delim, and return rest of string
+
+	char * ptr = strchr(buf, delim);
+
+	if (ptr == NULL) return NULL;
+
+	*(ptr)++ = 0;
+	return ptr;
+}
+
+void OpenPTTPort()
+{
+	PTTMode &= ~PTTCM108;
+	PTTMode &= ~PTTHAMLIB;
+
+	if (PTTPort[0] && strcmp(PTTPort, "None") != 0)
+	{
+		if (PTTMode == PTTCAT)
+		{
+			// convert config strings from Hex
+
+			char * ptr1 = PTTOffString;
+			UCHAR * ptr2 = PTTOffCmd;
+			char c;
+			int val;
+
+			while (c = *(ptr1++))
+			{
+				val = c - 0x30;
+				if (val > 15) val -= 7;
+				val <<= 4;
+				c = *(ptr1++) - 0x30;
+				if (c > 15) c -= 7;
+				val |= c;
+				*(ptr2++) = val;
+			}
+
+			PTTOffCmdLen = ptr2 - PTTOffCmd;
+
+			ptr1 = PTTOnString;
+			ptr2 = PTTOnCmd;
+
+			while (c = *(ptr1++))
+			{
+				val = c - 0x30;
+				if (val > 15) val -= 7;
+				val <<= 4;
+				c = *(ptr1++) - 0x30;
+				if (c > 15) c -= 7;
+				val |= c;
+				*(ptr2++) = val;
+			}
+
+			PTTOnCmdLen = ptr2 - PTTOnCmd;
+		}
+
+		if (stricmp(PTTPort, "GPIO") == 0)
+		{
+			// Initialise GPIO for PTT if available
+
+#ifdef __ARM_ARCH
+
+			if (gpioInitialise() == 0)
+			{
+				printf("GPIO interface for PTT available\n");
+				gotGPIO = TRUE;
+
+				SetupGPIOPTT();
+			}
+			else
+				printf("Couldn't initialise GPIO interface for PTT\n");
+
+#else
+			printf("GPIO interface for PTT not available on this platform\n");
+#endif
+
+		}
+		else if (stricmp(PTTPort, "CM108") == 0)
+		{
+			DecodeCM108(CM108Addr);
+			PTTMode |= PTTCM108;
+		}
+
+		else if (stricmp(PTTPort, "HAMLIB") == 0)
+		{
+			PTTMode |= PTTHAMLIB;
+			HAMLIBSetPTT(0);			// to open port
+			return;
+		}
+
+		else		//  Not GPIO
+		{
+			hPTTDevice = OpenCOMPort(PTTPort, PTTBAUD, FALSE, FALSE, FALSE, 0);
+		}
+	}
+}
+
+void ClosePTTPort()
+{
+	CloseCOMPort(hPTTDevice);
+	hPTTDevice = 0;
+}
+void CM108_set_ptt(int PTTState)
+{
+	char io[5];
+	hid_device *handle;
+	int n;
+
+	io[0] = 0;
+	io[1] = 0;
+	io[2] = 1 << (3 - 1);
+	io[3] = PTTState << (3 - 1);
+	io[4] = 0;
+
+	if (CM108Device == NULL)
+		return;
+
+#ifdef WIN32
+	handle = hid_open_path(CM108Device);
+
+	if (!handle) {
+		printf("unable to open device\n");
+		return;
+	}
+
+	n = hid_write(handle, io, 5);
+	if (n < 0)
+	{
+		printf("Unable to write()\n");
+		printf("Error: %ls\n", hid_error(handle));
+	}
+
+	hid_close(handle);
+
+#else
+
+	int fd;
+
+	fd = open(CM108Device, O_WRONLY);
+
+	if (fd == -1)
+	{
+		printf("Could not open %s for write, errno=%d\n", CM108Device, errno);
+		return;
+	}
+
+	io[0] = 0;
+	io[1] = 0;
+	io[2] = 1 << (3 - 1);
+	io[3] = PTTState << (3 - 1);
+	io[4] = 0;
+
+	n = write(fd, io, 5);
+	if (n != 5)
+	{
+		printf("Write to %s failed, n=%d, errno=%d\n", CM108Device, n, errno);
+	}
+
+	close(fd);
+#endif
+	return;
+
+}
+
+
+
+void RadioPTT(int snd_ch, BOOL PTTState)
+{
+#ifdef __ARM_ARCH
+	if (useGPIO)
+	{
+		if (DualPTT && modemtoSoundLR[snd_ch] == 1)
+			gpioWrite(pttGPIOPinR, (pttGPIOInvert ? (1 - PTTState) : (PTTState)));
+		else
+			gpioWrite(pttGPIOPin, (pttGPIOInvert ? (1 - PTTState) : (PTTState)));
+
+		return;
+	}
+
+#endif
+
+	if ((PTTMode & PTTCM108))
+	{
+		CM108_set_ptt(PTTState);
+		return;
+	}
+	
+	if ((PTTMode & PTTHAMLIB))
+	{
+		HAMLIBSetPTT(PTTState);
+		return;
+	}
+	if (hPTTDevice == 0)
+		return;
+
+	if ((PTTMode & PTTCAT))
+	{
+		if (PTTState)
+			WriteCOMBlock(hPTTDevice, PTTOnCmd, PTTOnCmdLen);
+		else
+			WriteCOMBlock(hPTTDevice, PTTOffCmd, PTTOffCmdLen);
+
+		return;
+	}
+
+	if (DualPTT && modemtoSoundLR[snd_ch] == 1)		// use DTR
+	{
+		if (PTTState)
+			COMSetDTR(hPTTDevice);
+		else
+			COMClearDTR(hPTTDevice);
+	}
+	else
+	{
+		if ((PTTMode & PTTRTS))
+		{
+			if (PTTState)
+				COMSetRTS(hPTTDevice);
+			else
+				COMClearRTS(hPTTDevice);
+		}
+	}
+
+}
+
+char ShortDT[] = "HH:MM:SS";
+
+char * ShortDateTime()
+{
+	struct tm * tm;
+	time_t NOW = time(NULL);
+
+	tm = gmtime(&NOW);
+
+	sprintf(ShortDT, "%02d:%02d:%02d", tm->tm_hour, tm->tm_min, tm->tm_sec);
+	return ShortDT;
+}
+
+
+// Reed Solomon Stuff
+
+
+int NPAR = -1;	// Number of Parity Bytes - used in RS Code
+
+int xMaxErrors = 0;
+
+int RSEncode(UCHAR * bytToRS, UCHAR * RSBytes, int DataLen, int RSLen)
+{
+	// This just returns the Parity Bytes. I don't see the point
+	// in copying the message about
+
+	unsigned char Padded[256];		// The padded Data
+
+	int Length = DataLen + RSLen;	// Final Length of packet
+	int PadLength = 255 - Length;	// Padding bytes needed for shortened RS codes
+
+	//	subroutine to do the RS encode. For full length and shortend RS codes up to 8 bit symbols (mm = 8)
+
+	if (NPAR != RSLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = RSLen;
+		xMaxErrors = NPAR / 2;
+		initialize_ecc();
+	}
+
+	// Copy the supplied data to end of data array.
+
+	memset(Padded, 0, PadLength);
+	memcpy(&Padded[PadLength], bytToRS, DataLen);
+
+	encode_data(Padded, 255 - RSLen, RSBytes);
+
+	return RSLen;
+}
+
+//	Main RS decode function
+
+extern int index_of[];
+extern int recd[];
+extern int Corrected[256];
+extern int tt;		//  number of errors that can be corrected 
+extern int kk;		// Info Symbols
+
+extern BOOL blnErrorsCorrected;
+
+
+BOOL RSDecode(UCHAR * bytRcv, int Length, int CheckLen, BOOL * blnRSOK)
+{
+
+
+	// Using a modified version of Henry Minsky's code
+
+	//Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+
+	// Rick's Implementation processes the byte array in reverse. and also 
+	//	has the check bytes in the opposite order. I've modified the encoder
+	//	to allow for this, but so far haven't found a way to mske the decoder
+	//	work, so I have to reverse the data and checksum to decode G8BPQ Nov 2015
+
+	//	returns TRUE if was ok or correction succeeded, FALSE if correction impossible
+
+	UCHAR intTemp[256];				// WOrk Area to pass to Decoder		
+	int i;
+	UCHAR * ptr2 = intTemp;
+	UCHAR * ptr1 = &bytRcv[Length - CheckLen - 1]; // Last Byte of Data
+
+	int DataLen = Length - CheckLen;
+	int PadLength = 255 - Length;		// Padding bytes needed for shortened RS codes
+
+	*blnRSOK = FALSE;
+
+	if (Length > 255 || Length < (1 + CheckLen))		//Too long or too short 
+		return FALSE;
+
+	if (NPAR != CheckLen)		// Changed RS Len, so recalc constants;
+	{
+		NPAR = CheckLen;
+		xMaxErrors = NPAR / 2;
+
+		initialize_ecc();
+	}
+
+
+	//	We reverse the data while zero padding it to speed things up
+
+	//	We Need (Data Reversed) (Zero Padding) (Checkbytes Reversed)
+
+	// Reverse Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	//	Clear padding
+
+	memset(ptr2, 0, PadLength);
+
+	ptr2 += PadLength;
+
+	// Error Bits
+
+	ptr1 = &bytRcv[Length - 1];			// End of check bytes
+
+	for (i = 0; i < CheckLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	decode_data(intTemp, 255);
+
+	// check if syndrome is all zeros 
+
+	if (check_syndrome() == 0)
+	{
+		// RS ok, so no need to correct
+
+		*blnRSOK = TRUE;
+		return TRUE;		// No Need to Correct
+	}
+
+	if (correct_errors_erasures(intTemp, 255, 0, 0) == 0) // Dont support erasures at the momnet
+
+		// Uncorrectable
+
+		return FALSE;
+
+	// Data has been corrected, so need to reverse again
+
+	ptr1 = &intTemp[DataLen - 1];
+	ptr2 = bytRcv; // Last Byte of Data
+
+	for (i = 0; i < DataLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	// ?? Do we need to return the check bytes ??
+
+	// Yes, so we can redo RS Check on supposedly connected frame
+
+	ptr1 = &intTemp[254];	// End of Check Bytes
+
+	for (i = 0; i < CheckLen; i++)
+	{
+		*(ptr2++) = *(ptr1--);
+	}
+
+	return TRUE;
+}
+
+extern TStringList detect_list[5];
+extern TStringList detect_list_c[5];
+
+void ProcessPktFrame(int snd_ch, UCHAR * Data, int frameLen)
+{
+	string * pkt = newString();
+
+	stringAdd(pkt, Data, frameLen + 2);			// 2 for crc (not actually there)
+
+	analiz_frame(snd_ch, pkt, "ARDOP", 1);
+
+}
diff --git a/ShowFilter.cpp b/ShowFilter.cpp
new file mode 100644
index 0000000..1625bb5
--- /dev/null
+++ b/ShowFilter.cpp
@@ -0,0 +1,234 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+#include <QPainter>
+
+// This displays a graph of the filter characteristics
+
+#define c3 -1.5000000000000E+00f //  cos(2*pi / 3) - 1;
+#define c32 8.6602540378444E-01f //  sin(2*pi / 3);
+
+#define u5 1.2566370614359E+00f //  2*pi / 5;
+#define c51 -1.2500000000000E+00f // (cos(u5) + cos(2*u5))/2 - 1;
+#define c52 5.5901699437495E-01f // (cos(u5) - cos(2*u5))/2;
+#define c53 -9.5105651629515E-0f //- sin(u5);
+#define c54 -1.5388417685876E+00f //-(sin(u5) + sin(2*u5));
+#define c55 3.6327126400268E-01f // (sin(u5) - sin(2*u5));
+#define c8 = 7.0710678118655E-01f //  1 / sqrt(2);
+
+
+float pnt_graph_buf[4096];
+float graph_buf[4096];
+float prev_graph_buf[4096];
+float src_graph_buf[4096];
+float graph_f;
+float RealOut[4096];
+short RealIn[4096];
+float ImagOut[4096];
+
+#define Image1Width 642
+#define Image1Height 312
+
+void filter_grid(QPainter * Painter)
+{
+	int col = 20;
+	int row = 8;
+	int top_margin = 10;
+	int bottom_margin = 20;
+	int left_margin = 30;
+	int right_margin = 10;
+
+	int x, y;
+	float kx, ky;
+
+	QPen pen;  // creates a default pen
+
+	pen.setStyle(Qt::DotLine);
+	Painter->setPen(pen);
+
+
+	ky = 35;
+
+	kx = (Image1Width - left_margin - right_margin - 2) / col;
+
+	for (y = 0; y < row; y++)
+	{
+		Painter->drawLine(
+			left_margin + 1,
+			top_margin + round(ky*y) + 1,
+			Image1Width - right_margin - 1,
+			top_margin + round(ky*y) + 1);
+	}
+
+	for (x = 0; x < col; x++)
+	{
+		Painter->drawLine(
+			left_margin + round(kx*x) + 1,
+			top_margin + 1,
+			left_margin + round(kx*x) + 1,
+			Image1Height - bottom_margin - 1);
+	}
+
+	pen.setStyle(Qt::SolidLine);
+	Painter->setPen(pen);
+
+	for (y = 0; y < row / 2; y++)
+	{
+		char Textxx[20];
+
+		sprintf(Textxx, "%d", y * -20);
+
+		Painter->drawLine(
+	 		left_margin + 1,
+			top_margin + round(ky*y * 2) + 1,
+			Image1Width - right_margin - 1,
+			top_margin + round(ky*y * 2) + 1);
+		
+		Painter->drawText(
+			1,
+			top_margin + round(ky*y * 2) + 1,
+			100, 20, 0, Textxx);
+
+	}
+
+
+	for (x = 0; x <= col / 5; x++)
+	{
+		char Textxx[20];
+
+		sprintf(Textxx, "%d", x * 1000);
+
+		Painter->drawLine(
+			left_margin + round(kx*x * 5) + 1,
+			top_margin + 1,
+			left_margin + round(kx*x * 5) + 1,
+			Image1Height - bottom_margin - 1);
+
+		Painter->drawText(
+			top_margin + round(kx*x * 5) + 8,
+			Image1Height - 15,
+			100, 20, 0, Textxx);
+	}
+}
+
+extern  "C" void FourierTransform(int NumSamples, short * RealIn, float * RealOut, float * ImagOut, int InverseTransform);
+
+
+void make_graph(float * buf, int buflen, QPainter * Painter)
+{
+	int top_margin = 10;
+	int bottom_margin = 20;
+	int left_margin = 30;
+
+	int i, y1, y2;
+	float pixel;
+
+	if (buflen == 0)
+		return;
+
+	for (i = 0; i <= buflen - 2; i++)
+	{
+		y1 = 1 - round(buf[i]);
+	
+		if (y1 > Image1Height - top_margin - bottom_margin - 2)
+			y1 = Image1Height - top_margin - bottom_margin - 2;
+
+		y2 = 1 - round(buf[i + 1]);
+
+		if (y2 > Image1Height - top_margin - bottom_margin - 2)
+			y2 = Image1Height - top_margin - bottom_margin - 2;
+
+		// 150 pixels for 1000 Hz
+
+		// i is the bin number, but bin is not 10 Hz but 12000 /1024
+		// so freq = i * 12000 / 1024;
+		// and pixel is freq * 300 /1000
+
+		pixel = i * 12000.0f / 1024.0f;
+		pixel = pixel * 150.0f /1000.0f;
+
+		Painter->drawLine(
+			left_margin + pixel,
+			top_margin + y1,
+			left_margin + pixel + 1,
+			top_margin + y2);
+	}
+}
+
+void make_graph_buf(float * buf, short tap, QPainter * Painter)
+{
+	int fft_size;
+	float max;
+	int i, k;
+
+	fft_size = 1024; // 12000 / 10; // 10hz on sample;
+
+	for (i = 0; i < tap; i++)
+		prev_graph_buf[i]= 0;
+	
+	for (i = 0; i < fft_size; i++)
+		src_graph_buf[i] = 0;
+
+	src_graph_buf[0]= 1;
+
+	FIR_filter(src_graph_buf, fft_size, tap, buf, graph_buf, prev_graph_buf);
+
+
+	for (k = 0; k < fft_size; k++)
+		RealIn[k] = graph_buf[k] * 32768;
+	
+	FourierTransform(fft_size, RealIn, RealOut, ImagOut, 0);
+
+	for (k = 0; k < (fft_size / 2) - 1; k++)
+		pnt_graph_buf[k] = powf(RealOut[k], 2) + powf(ImagOut[k], 2);
+
+	max = 0;
+
+	for (i = 0; i < (fft_size / 2) - 1; i++)
+	{
+		if (pnt_graph_buf[i] > max)
+			max = pnt_graph_buf[i];
+	}
+
+	if (max > 0)
+	{
+		for (i = 0; i < (fft_size / 2) - 1; i++)
+			pnt_graph_buf[i] = pnt_graph_buf[i] / max;
+	}
+
+	for (i = 0; i < (fft_size / 2) - 1; i++)
+	{
+		if (pnt_graph_buf[i] > 0)
+			pnt_graph_buf[i] = 70 * log10(pnt_graph_buf[i]);
+
+		else
+
+			pnt_graph_buf[i] = 0;
+	}
+
+	filter_grid(Painter);
+
+	Painter->setPen(Qt::blue);
+
+	make_graph(pnt_graph_buf, 400, Painter);
+}
diff --git a/SoundInput.c b/SoundInput.c
new file mode 100644
index 0000000..3c1f844
--- /dev/null
+++ b/SoundInput.c
@@ -0,0 +1,5253 @@
+//	ARDOP Modem Decode Sound Samples
+
+#include <math.h>
+#include "ARDOPC.h"
+
+#pragma warning(disable : 4244)		// Code does lots of float to int
+
+#ifndef TEENSY
+#define MEMORYARQ
+#endif
+
+#undef PLOTWATERFALL
+
+#ifdef PLOTWATERFALL
+#define WHITE  0xffff
+#define Tomato 0xffff
+#define Orange 0xffff
+#define Khaki 0xffff
+#define Cyan 0xffff
+#define DeepSkyBlue 0
+#define RoyalBlue 0 
+#define Navy 0
+#define Black 0
+#endif
+
+#ifdef TEENSY
+#define PKTLED LED3		// flash when packet received
+extern unsigned int PKTLEDTimer;
+#endif
+
+//#define max(x, y) ((x) > (y) ? (x) : (y))
+//#define min(x, y) ((x) < (y) ? (x) : (y))
+
+void SendFrametoHost(unsigned char *data, unsigned dlen);
+
+void CheckandAdjustRXLevel(int maxlevel, int minlevel, BOOL Force);
+void mySetPixel(unsigned char x, unsigned char y, unsigned int Colour);
+void clearDisplay();
+void updateDisplay();
+VOID L2Routine(UCHAR * Packet, int Length, int FrameQuality, int totalRSErrors, int NumCar, int pktRXMode);
+void RemoveProcessedOFDMData();
+BOOL  CheckCRC16(unsigned char * Data, int Length);
+
+void DrawAxes(int Qual, const char * Frametype, char * Mode);
+
+extern int lastmax, lastmin;		// Sample Levels
+
+char strRcvFrameTag[32];
+
+BOOL blnLeaderFound = FALSE;
+
+int intLeaderRcvdMs = 1000;		// Leader length??
+
+extern int intLastRcvdFrameQuality;
+extern int intReceivedLeaderLen;
+extern UCHAR bytLastReceivedDataFrameType;
+extern int NErrors;
+extern BOOL blnBREAKCmd;
+extern UCHAR bytLastACKedDataFrameType;
+extern int intARQDefaultDlyMs;
+unsigned int tmrFinalID;
+extern BOOL PKTCONNECTED;
+extern int LastDemodType;
+
+extern int pktRXMode;
+extern int RXOFDMMode;
+
+extern BOOL blnBusyStatus;
+BOOL blnLastBusyStatus;
+int BusyCount;
+
+short intPriorMixedSamples[120];  // a buffer of 120 samples to hold the prior samples used in the filter
+int	intPriorMixedSamplesLength = 120;  // size of Prior sample buffer
+
+// While searching for leader we must save unprocessed samples
+// We may have up to 720 left, so need 1920 
+
+short rawSamples[2400];	// Get Frame Type need 2400 and we may add 1200
+extern int rawSamplesLength;
+int maxrawSamplesLength;
+
+short intFilteredMixedSamples[3500];	// Get Frame Type need 2400 and we may add 1200
+int intFilteredMixedSamplesLength = 0;
+int MaxFilteredMixedSamplesLength = 0;
+
+int intFrameType= 0;				// Type we are decoding
+int LastDataFrameType = 0;			// Last data frame processed (for Memory ARQ, etc)
+
+char strDecodeCapture[256];
+
+//	Frame type parameters
+
+int intCenterFreq = 1500;
+float floatCarFreq;			//(was int)	// Are these the same ??
+int intNumCar;
+int intSampPerSym;
+int intBaud;
+int intDataLen;
+int intRSLen;
+int intSampleLen;
+int DataRate = 0;				// For SCS Reporting
+int intDataPtr;
+int intDataBytesPerCar;
+BOOL blnOdd;
+char strType[18] = "";
+char strMod[16] = "";
+UCHAR bytMinQualThresh;
+int intPSKMode;
+int intSymbolsPerByte = 4;
+
+// ARDOP V2 has max 10 carriers and 160 (120 + 40RS) per carrier
+
+#define MAX_RAW_LENGTH	163     // Len Byte + Data + RS  + CRC I think!
+#define MAX_RAW_LENGTH_FSK	43	// MAX FSK 32 data + 8 RS
+// OFDM is MAXCAR * 100
+// 10 carrier 16QAM id 10 * 160
+
+#define MAX_DATA_LENGTH	MAXCAR * 100 // I think!  (OFDM 16QAM)
+
+// intToneMags should be an array with one row per carrier.
+// and 16 * max bytes data (2 bits per symbol, 4 samples per symbol in 4FSK.
+
+// but as 600 Baud frames are very long (750 bytes), but only one carrier
+// may be better to store as scalar and calculate offsets into it for each carrier
+// treat 600 as 3 * 200, but scalar still may be better
+
+// Needs 64K if ints + another 64 for MEM ARQ. (maybe able to store as shorts)
+// 48K would do if we use a scalar (600 baud, 750 bytes)
+// Max is 4 carrier, 83 bytes or 1 carrier 762 (or treat as 3 * 253)
+
+// Could just about do this on Teensy 3.6 or Nucleo F7
+
+// looks like we have 4 samples for each 2 bits, which means 16 samples per byte.
+
+// ARDOP 2 only has one and two carrier FSK modes
+
+// Teensy is rather short of RAM, but as we never receive FSK and PSK
+// at the same time we can use same data area (saves about 20K)
+
+int intToneMagsIndex[2];
+
+// Same here
+
+int intSumCounts[MAXCAR];			// number in above arrays
+
+int intToneMagsLength;
+
+unsigned char goodCarriers = 0;	// Carriers we have already decoded
+
+//	We always collect all phases for PSK and QAM so we can do phase correction
+
+// Max PSK frame is 83, 4 samples per byte  = 332
+// Max 16QAM frame is 163, 2 samples per byte = 326
+
+// OFDM frames are shorter, so carriers 11 - 17 could have smaller sample buffers
+
+// This is a bit complicated, but allows smaller buffers for the OFDM carriers (Needed for Teensy)
+
+//short intPhases[MAXCAR][332] = {0};	
+
+short QAMPhases[10][332];				// 6640 bytes
+short OFDMPhases[MAXCAR - 10][232];		// Need 232 = (PSK2 8 * 29); 15312		
+
+short * Phaseptrs[MAXCAR] = 
+	{&QAMPhases[0][0], &QAMPhases[1][0], &QAMPhases[2][0], &QAMPhases[3][0], &QAMPhases[4][0], 
+	&QAMPhases[5][0], &QAMPhases[6][0], &QAMPhases[7][0], &QAMPhases[8][0], &QAMPhases[9][0],
+	&OFDMPhases[0][0], &OFDMPhases[1][0], &OFDMPhases[2][0], &OFDMPhases[3][0], &OFDMPhases[4][0], 
+	&OFDMPhases[5][0], &OFDMPhases[6][0], &OFDMPhases[7][0], &OFDMPhases[8][0], &OFDMPhases[9][0],
+	&OFDMPhases[10][0], &OFDMPhases[11][0], &OFDMPhases[12][0], &OFDMPhases[13][0], &OFDMPhases[14][0], 
+	&OFDMPhases[15][0], &OFDMPhases[16][0], &OFDMPhases[17][0], &OFDMPhases[18][0], &OFDMPhases[19][0],
+	&OFDMPhases[20][0], &OFDMPhases[21][0], &OFDMPhases[22][0], &OFDMPhases[23][0], &OFDMPhases[24][0], 
+	&OFDMPhases[25][0], &OFDMPhases[26][0], &OFDMPhases[27][0], &OFDMPhases[28][0], &OFDMPhases[29][0],
+	&OFDMPhases[30][0], &OFDMPhases[31][0], &OFDMPhases[32][0]};
+
+short ** intPhases = &Phaseptrs[0];
+
+short QAMMags[10][332];
+short OFDMMags[MAXCAR - 10][232];
+
+short * Magptrs[MAXCAR] = 
+	{&QAMMags[0][0], &QAMMags[1][0], &QAMMags[2][0], &QAMMags[3][0], &QAMMags[4][0], 
+	&QAMMags[5][0], &QAMMags[6][0], &QAMMags[7][0], &QAMMags[8][0], &QAMMags[9][0],
+	&OFDMMags[0][0], &OFDMMags[1][0], &OFDMMags[2][0], &OFDMMags[3][0], &OFDMMags[4][0], 
+	&OFDMMags[5][0], &OFDMMags[6][0], &OFDMMags[7][0], &OFDMMags[8][0], &OFDMMags[9][0],
+	&OFDMMags[10][0], &OFDMMags[11][0], &OFDMMags[12][0], &OFDMMags[13][0], &OFDMMags[14][0], 
+	&OFDMMags[15][0], &OFDMMags[16][0], &OFDMMags[17][0], &OFDMMags[18][0], &OFDMMags[19][0],
+	&OFDMMags[20][0], &OFDMMags[21][0], &OFDMMags[22][0], &OFDMMags[23][0], &OFDMMags[24][0], 
+	&OFDMMags[25][0], &OFDMMags[26][0], &OFDMMags[27][0], &OFDMMags[28][0], &OFDMMags[29][0],
+	&OFDMMags[30][0], &OFDMMags[31][0], &OFDMMags[32][0]};
+
+short ** intMags = &Magptrs[0];
+
+
+
+//int Tones[2][16 * MAX_RAW_LENGTH_FSK];
+
+int intToneMags[4][16 * MAX_RAW_LENGTH_FSK] = {0};	// Need one per carrier
+
+// We need 5504 bytes for FSK but can overlay on PSK data areas
+
+//int * Toneptrs[2] = {(int *)&Tones[0][0], (int *)&Tones[1][0]};
+
+//int ** intToneMags = &Toneptrs[0];
+
+
+#ifdef MEMORYARQ
+
+// Enough RAM for memory ARQ so keep all samples for FSK and a copy of tones or phase/amplitude
+
+int  intToneMagsAvg[2][332];	//???? FSK Tone averages
+
+short intCarPhaseAvg[MAXCAR][332];	// array to accumulate phases for averaging (Memory ARQ)
+short intCarMagAvg[MAXCAR][332];		// array to accumulate mags for averaging (Memory ARQ) 
+ 
+#endif
+
+
+
+
+//219 /3 * 8= 73 * 8 =  584
+//163 * 4 = 652
+
+//	If we do Mem ARQ we will need a fair amount of RAM
+
+int intPhasesLen;
+
+// Received Frame
+
+UCHAR bytData[128 * 80];		// Max OFDM Window
+int frameLen;
+
+int totalRSErrors;
+
+// for comparing with CarrierOK
+const char Good[MAXCAR] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};		// All Good
+const char Bad[MAXCAR] = {0};	// All bad
+
+// We need one raw buffer per carrier
+
+// This can be optimized quite a bit to save space
+// We can probably overlay on bytData
+
+// If we still have 600 baud modes may need a lot more for first
+
+// Note OFDM doesn't need one per carrier so only need 10
+
+UCHAR bytFrameData[10][MAX_RAW_LENGTH + 10];		// Received chars
+
+char CarrierOk[MAXCAR];		// RS OK Flags per carrier
+int RepeatedFrame = 0;		// set if this dats frame is a repeat
+
+int charIndex = 0;			// Index into received chars
+
+int SymbolsLeft;			// number still to decode
+
+int DummyCarrier = 0;	// pseudo carrier used for long 600 baud frames
+UCHAR * Decode600Buffer;
+
+BOOL PSKInitDone = FALSE;
+
+BOOL blnSymbolSyncFound, blnFrameSyncFound;
+
+extern UCHAR bytLastARQSessionID;
+extern UCHAR bytCurrentFrameType;
+extern int intShiftUpDn;
+extern const char ARQSubStates[10][11];
+extern int intLastARQDataFrameToHost;
+
+// dont think I need it short intRcvdSamples[12000];		// 1 second. May need to optimise
+
+float dblOffsetLastGoodDecode = 0;
+int dttLastGoodFrameTypeDecode = -20000;
+
+float dblOffsetHz = 0;;
+int dttLastLeaderDetect;
+
+extern int intRmtLeaderMeasure;
+
+extern BOOL blnARQConnected;
+
+
+extern BOOL blnPending;
+extern UCHAR bytPendingSessionID;
+extern UCHAR bytSessionID;
+
+int dttLastGoodFrameTypeDecod;
+int dttStartRmtLeaderMeasure;
+
+char lastGoodID[11] = "";
+
+int GotBitSyncTicks;
+
+int intARQRTmeasuredMs;
+
+float dbl2Pi = 2 * M_PI; 
+
+float dblSNdBPwr;
+float dblNCOFreq = 3000;	 // nominal NC) frequency
+float dblNCOPhase = 0;
+float dblNCOPhaseInc = 2 * M_PI * 3000 / 12000;  // was dblNCOFreq
+float dblPwrSNPower_dBPrior = 0;
+float dblPhaseDiff1_2Avg;  // an initial value of -10 causes initialization in AcquireFrameSyncRSBAvg
+
+
+int	intMFSReadPtr = 0;				// reset the MFSReadPtr offset 30 to accomodate the filter delay
+
+int RcvdSamplesLen = 0;				// Samples in RX buffer
+
+float dblPhaseDiff1_2Avg;
+int intPhaseError = 0;
+
+
+BOOL Acquire2ToneLeaderSymbolFraming();
+BOOL SearchFor2ToneLeader4(short * intNewSamples, int Length, float * dblOffsetHz, int * intSN);
+BOOL AcquireFrameSyncRSB();
+BOOL AcquireFrameSyncRSBAvg();
+int Acquire4FSKFrameType();
+
+void DemodulateFrame(int intFrameType);
+void Demod1Car4FSKChar(int Start, UCHAR * Decoded, int Carrier);
+VOID Track1Car4FSK(short * intSamples, int * intPtr, int intSampPerSymbol, float intSearchFreq, int intBaud, UCHAR * bytSymHistory);
+VOID Decode1CarPSK(int Carrier, BOOL OFDM);
+int EnvelopeCorrelator();
+int EnvelopeCorrelatorNew();
+BOOL DecodeFrame(int intFrameType, UCHAR * bytData);
+
+void Update4FSKConstellation(int * intToneMags, int * intQuality);
+void Update16FSKConstellation(int * intToneMags, int * intQuality);
+void Update8FSKConstellation(int * intToneMags, int * intQuality);
+void ProcessPingFrame(char * bytData);
+int Compute4FSKSN();
+
+void DemodPSK();
+BOOL DemodQAM();
+BOOL DemodOFDM();
+BOOL Decode4FSKOFDMACK();
+
+
+void PrintCarrierFlags()
+{
+	char Msg[128];
+
+	if (intNumCar == 1)
+		Debugprintf("MEMARQ Flags %d", CarrierOk[0]);
+	else if (intNumCar == 2)
+		Debugprintf("MEMARQ Flags %d %d", CarrierOk[0], CarrierOk[1]);
+
+	else
+	{
+		sprintf(Msg, "MEMARQ Flags %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
+			CarrierOk[0], CarrierOk[1], CarrierOk[2], CarrierOk[3], CarrierOk[4], CarrierOk[5], CarrierOk[6], CarrierOk[7], CarrierOk[8], CarrierOk[9],
+			CarrierOk[10], CarrierOk[11], CarrierOk[12], CarrierOk[13], CarrierOk[14], CarrierOk[15], CarrierOk[16], CarrierOk[17], CarrierOk[18], CarrierOk[19],
+			CarrierOk[20], CarrierOk[21], CarrierOk[22], CarrierOk[23], CarrierOk[24], CarrierOk[25], CarrierOk[26], CarrierOk[27], CarrierOk[28], CarrierOk[29],
+			CarrierOk[30], CarrierOk[31], CarrierOk[32], CarrierOk[33], CarrierOk[34], CarrierOk[35], CarrierOk[36], CarrierOk[37], CarrierOk[38], CarrierOk[39],
+			CarrierOk[40], CarrierOk[41], CarrierOk[42]);
+	
+		Msg[12 + 2 * intNumCar] = 0; 
+		Debugprintf(Msg);
+	}
+
+}
+
+
+// Function to determine if frame type is short control frame
+  
+BOOL IsShortControlFrame(UCHAR bytType)
+{
+	switch (intFrameType)
+	{
+	case DataNAK:
+	case DataNAKLoQ:
+	case ConRejBusy:
+	case ConRejBW:
+	case ConAck:
+	case DISCFRAME:
+	case BREAK:
+	case END:
+	case IDLEFRAME:
+	case DataACK:
+	case DataACKHiQ:
+
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+BOOL IsConReqFrame(UCHAR bytType)
+{
+	switch (bytType)
+	{
+	case ConReq200:
+	case ConReq500:
+	case ConReq2500:
+	case OConReq500:
+	case OConReq2500:
+
+		return TRUE;
+	}
+	return FALSE;
+}
+ 
+
+
+//	 Function to determine if it is a data frame (Even OR Odd) 
+
+BOOL IsDataFrame(UCHAR intFrameType)
+{
+	const char * String = Name(intFrameType);
+
+	if (intFrameType == PktFrameHeader)
+		return TRUE;
+	
+	if (String == NULL || String[0] == 0)
+		return FALSE;
+
+	if (strstr(String, ".E") || strstr(String, ".O"))
+		return TRUE;
+
+	return FALSE;
+}
+
+//    Subroutine to clear all mixed samples 
+
+void ClearAllMixedSamples()
+{
+	intFilteredMixedSamplesLength = 0;
+	intMFSReadPtr = 0;
+	rawSamplesLength = 0;	// Clear saved
+}
+
+//  Subroutine to Initialize mixed samples
+
+void InitializeMixedSamples()
+{
+	// Measure the time from release of PTT to leader detection of reply.
+
+	intARQRTmeasuredMs = min(10000, Now - dttStartRTMeasure); //?????? needs work
+	intPriorMixedSamplesLength = 120;  // zero out prior samples in Prior sample buffer
+	intFilteredMixedSamplesLength = 0;	// zero out the FilteredMixedSamples array
+	intMFSReadPtr = 0;				// reset the MFSReadPtr offset 30 to accomodate the filter delay
+}
+
+//	Subroutine to discard all sampled prior to current intRcvdSamplesRPtr
+
+void DiscardOldSamples()
+{
+	// This restructures the intRcvdSamples array discarding all samples prior to intRcvdSamplesRPtr
+ 
+	//not sure why we need this !!
+/*
+	if (RcvdSamplesLen - intRcvdSamplesRPtr <= 0)
+		RcvdSamplesLen = intRcvdSamplesRPtr = 0;
+	else
+	{
+		// This is rather slow. I'd prefer a cyclic buffer. Lets see....
+		
+		memmove(intRcvdSamples, &intRcvdSamples[intRcvdSamplesRPtr], (RcvdSamplesLen - intRcvdSamplesRPtr)* 2);
+		RcvdSamplesLen -= intRcvdSamplesRPtr;
+		intRcvdSamplesRPtr = 0;
+	}
+*/
+}
+
+//	Subroutine to apply 2000 Hz filter to mixed samples 
+
+float xdblZin_1 = 0, xdblZin_2 = 0, xdblZComb= 0;  // Used in the comb generator
+
+	// The resonators 
+      
+float xdblZout_0[29] = {0.0f};	// resonator outputs
+float xdblZout_1[29] = {0.0f};	// resonator outputs delayed one sample
+float xdblZout_2[29] = {0.0f};	// resonator outputs delayed two samples
+float xdblCoef[29] = {0.0};		// the coefficients
+float xdblR = 0.9995f;			// insures stability (must be < 1.0) (Value .9995 7/8/2013 gives good results)
+int xintN = 120;				//Length of filter 12000/100
+
+
+void FSMixFilter2500Hz(short * intMixedSamples, int intMixedSamplesLength)
+{
+	// assumes sample rate of 12000
+	// implements  27 100 Hz wide sections   (~2500 Hz wide @ - 30dB centered on 1500 Hz)
+
+	// FSF (Frequency Selective Filter) variables
+
+	// This works on intMixedSamples, len intMixedSamplesLength;
+
+	// Filtered data is appended to intFilteredMixedSamples
+
+	float dblRn;
+	float dblR2;
+
+	float dblZin = 0;
+      
+	int i, j;
+
+	float intFilteredSample = 0;			//  Filtered sample
+
+	if (intFilteredMixedSamplesLength < 0)
+		Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+	dblRn = powf(xdblR, xintN);
+
+	dblR2 = powf(xdblR, 2);
+
+	// Initialize the coefficients
+    
+	if (xdblCoef[28] == 0)
+	{
+		for (i = 2; i <= 28; i++)
+		{
+			xdblCoef[i] = 2 * xdblR * cosf(2 * M_PI * i / xintN);  // For Frequency = bin i
+		}
+	}
+
+	for (i = 0; i < intMixedSamplesLength; i++)
+	{
+		intFilteredSample = 0;
+
+		if (i < xintN)
+			dblZin = intMixedSamples[i] - dblRn * intPriorMixedSamples[i];
+		else 
+			dblZin = intMixedSamples[i] - dblRn * intMixedSamples[i - xintN];
+ 
+		//Compute the Comb
+
+		xdblZComb = dblZin - xdblZin_2 * dblR2;
+		xdblZin_2 = xdblZin_1;
+		xdblZin_1 = dblZin;
+
+		// Now the resonators
+		for (j = 2; j <= 28; j++)	   // calculate output for 3 resonators 
+		{
+			xdblZout_0[j] = xdblZComb + xdblCoef[j] * xdblZout_1[j] - dblR2 * xdblZout_2[j];
+			xdblZout_2[j] = xdblZout_1[j];
+			xdblZout_1[j] = xdblZout_0[j];
+
+			//' scale each by transition coeff and + (Even) or - (Odd) 
+			//' Resonators 2 and 13 scaled by .389 get best shape and side lobe supression 
+			//' Scaling also accomodates for the filter "gain" of approx 60. 
+ 
+			if (j == 2 || j == 28)
+				intFilteredSample += 0.389f * xdblZout_0[j];
+			else if ((j & 1) == 0)
+				intFilteredSample += xdblZout_0[j];
+			else
+				intFilteredSample -= xdblZout_0[j];
+		}
+
+		intFilteredSample = intFilteredSample * 0.00833333333f;
+		intFilteredMixedSamples[intFilteredMixedSamplesLength++] = intFilteredSample;  // rescales for gain of filter
+	}
+	
+	// update the prior intPriorMixedSamples array for the next filter call 
+   
+	memmove(intPriorMixedSamples, &intMixedSamples[intMixedSamplesLength - xintN], intPriorMixedSamplesLength * 2);		 
+
+	if (intFilteredMixedSamplesLength > MaxFilteredMixedSamplesLength)
+		MaxFilteredMixedSamplesLength = intFilteredMixedSamplesLength;
+
+	if (intFilteredMixedSamplesLength > 3500)
+		Debugprintf("Corrupt intFilteredMixedSamplesLength %d", intFilteredMixedSamplesLength);
+
+}
+
+//	Function to apply 150Hz filter used in Envelope correlator
+
+void Filter150Hz(short * intFilterOut)
+{
+	// assumes sample rate of 12000
+	// implements  3 100 Hz wide sections   (~150 Hz wide @ - 30dB centered on 1500 Hz)
+
+	// FSF (Frequency Selective Filter) variables
+
+	static float dblR = 0.9995f;		// insures stability (must be < 1.0) (Value .9995 7/8/2013 gives good results)
+	static int intN = 120;				//Length of filter 12000/100
+	static float dblRn;
+	static float dblR2;
+	static float dblCoef[17] = {0.0};			// the coefficients
+	float dblZin = 0, dblZin_1 = 0, dblZin_2 = 0, dblZComb= 0;  // Used in the comb generator
+	// The resonators 
+      
+	float dblZout_0[17] = {0.0};	// resonator outputs
+	float dblZout_1[17] = {0.0};	// resonator outputs delayed one sample
+	float dblZout_2[17] = {0.0};	// resonator outputs delayed two samples
+
+	int i, j;
+
+	float FilterOut = 0;			//  Filtered sample
+	float largest = 0;
+
+	dblRn = powf(dblR, intN);
+
+	dblR2 = powf(dblR, 2);
+
+	// Initialize the coefficients
+    
+	if (dblCoef[17] == 0)
+	{
+		for (i = 14; i <= 16; i++)
+		{
+			dblCoef[i] = 2 * dblR * cosf(2 * M_PI * i / intN);  // For Frequency = bin i
+		}
+	}
+
+	for (i = 0; i < 480; i++)
+	{
+		if (i < intN)
+			dblZin = intFilteredMixedSamples[intMFSReadPtr + i] - dblRn * 0;	// no prior mixed samples
+		else
+			dblZin = intFilteredMixedSamples[intMFSReadPtr + i] - dblRn * intFilteredMixedSamples[intMFSReadPtr + i - intN];
+
+		// Compute the Comb
+		
+		dblZComb = dblZin - dblZin_2 * dblR2;
+		dblZin_2 = dblZin_1;
+		dblZin_1 = dblZin;
+
+		// Now the resonators
+
+		for (j = 14; j <= 16; j++)		   // calculate output for 3 resonators 
+		{
+			dblZout_0[j] = dblZComb + dblCoef[j] * dblZout_1[j] - dblR2 * dblZout_2[j];
+			dblZout_2[j] = dblZout_1[j];
+			dblZout_1[j] = dblZout_0[j];
+	
+			//	scale each by transition coeff and + (Even) or - (Odd) 
+
+			// Scaling also accomodates for the filter "gain" of approx 120. 
+			// These transition coefficients fairly close to optimum for WGN 0db PSK4, 100 baud (yield highest average quality) 5/24/2014
+ 
+			if (j == 14 || j == 16)
+				FilterOut = 0.2f * dblZout_0[j];	 // this transisiton minimizes ringing and peaks
+			else
+				FilterOut -= dblZout_0[j];
+		}
+		intFilterOut[i] = (int)ceil(FilterOut * 0.00833333333);	 // rescales for gain of filter
+	}
+
+}
+
+//	Function to apply 75Hz filter used in Envelope correlator
+
+void Filter75Hz(short * intFilterOut, BOOL blnInitialise, int intSamplesToFilter)
+{
+	// assumes sample rate of 12000
+	// implements  3 100 Hz wide sections   (~150 Hz wide @ - 30dB centered on 1500 Hz)
+
+	// FSF (Frequency Selective Filter) variables
+
+	static float dblR = 0.9995f;		// insures stability (must be < 1.0) (Value .9995 7/8/2013 gives good results)
+	static int intN = 240;				//Length of filter 12000/50 - delays output 120 samples from input
+	static float dblRn;
+	static float dblR2;
+	static float dblCoef[3] = {0.0};			// the coefficients
+	float dblZin = 0, dblZin_1 = 0, dblZin_2 = 0, dblZComb= 0;  // Used in the comb generator
+	// The resonators 
+      
+	float dblZout_0[3] = {0.0};	// resonator outputs
+	float dblZout_1[3] = {0.0};	// resonator outputs delayed one sample
+	float dblZout_2[3] = {0.0};	// resonator outputs delayed two samples
+
+	int i, j;
+
+	float FilterOut = 0;			//  Filtered sample
+	float largest = 0;
+
+	dblRn = powf(dblR, intN);
+
+	dblR2 = powf(dblR, 2);
+
+	// Initialize the coefficients
+    
+	if (dblCoef[2] == 0)
+	{
+		for (i = 0; i <= 3; i++)
+		{
+			dblCoef[i] = 2 * dblR * cosf(2 * M_PI * (29 + i)/ intN);  // For Frequency = bin 29, 30, 31
+		}
+	}
+
+	for (i = 0; i < intSamplesToFilter; i++)
+	{
+		if (i < intN)
+			dblZin = intFilteredMixedSamples[intMFSReadPtr + i] - dblRn * 0;	// no prior mixed samples
+		else
+			dblZin = intFilteredMixedSamples[intMFSReadPtr + i] - dblRn * intFilteredMixedSamples[intMFSReadPtr + i - intN];
+
+		// Compute the Comb
+		
+		dblZComb = dblZin - dblZin_2 * dblR2;
+		dblZin_2 = dblZin_1;
+		dblZin_1 = dblZin;
+
+		// Now the resonators
+
+		for (j = 0; j < 3; j++)		   // calculate output for 3 resonators 
+		{
+			dblZout_0[j] = dblZComb + dblCoef[j] * dblZout_1[j] - dblR2 * dblZout_2[j];
+			dblZout_2[j] = dblZout_1[j];
+			dblZout_1[j] = dblZout_0[j];
+	
+			//	scale each by transition coeff and + (Even) or - (Odd) 
+
+			// Scaling also accomodates for the filter "gain" of approx 120. 
+			// These transition coefficients fairly close to optimum for WGN 0db PSK4, 100 baud (yield highest average quality) 5/24/2014
+ 
+			if (j == 0 || j == 2)
+				FilterOut -= 0.39811f * dblZout_0[j];	 // this transisiton minimizes ringing and peaks
+			else
+				FilterOut += dblZout_0[j];
+		}
+		intFilterOut[i] = (int)ceil(FilterOut * 0.0041f);	 // rescales for gain of filter
+	}
+}
+
+// Subroutine to Mix new samples with NCO to tune to nominal 1500 Hz center with reversed sideband and filter. 
+
+void MixNCOFilter(short * intNewSamples, int Length, float dblOffsetHz)
+{
+	// Correct the dimension of intPriorMixedSamples if needed (should only happen after a bandwidth setting change). 
+
+	int i;
+	short intMixedSamples[2400];	// All we need at once ( I hope!)		// may need to be int
+	int	intMixedSamplesLength = 0;		//size of intMixedSamples
+
+	if (Length == 0)
+		return;
+
+	// Nominal NCO freq is 3000 Hz  to downmix intNewSamples  (NCO - Fnew) to center of 1500 Hz (invertes the sideband too) 
+
+	dblNCOFreq = 3000 + dblOffsetHz;
+	dblNCOPhaseInc = dblNCOFreq * dbl2Pi / 12000;
+
+	intMixedSamplesLength = Length;
+
+	for (i = 0; i < Length; i++)
+	{
+		intMixedSamples[i] = (int)ceilf(intNewSamples[i] * cosf(dblNCOPhase));  // later may want a lower "cost" implementation of "Cos"
+		dblNCOPhase += dblNCOPhaseInc;
+		if (dblNCOPhase > dbl2Pi)
+			dblNCOPhase -= dbl2Pi;
+	}
+
+	
+	
+	// showed no significant difference if the 2000 Hz filer used for all bandwidths.
+//	printtick("Start Filter");
+	FSMixFilter2500Hz(intMixedSamples, intMixedSamplesLength);   // filter through the FS filter (required to reject image from Local oscillator)
+//	printtick("Done Filter");
+
+	// save for analysys
+
+//	WriteSamples(&intFilteredMixedSamples[oldlen], Length);
+//	WriteSamples(intMixedSamples, Length);
+
+}
+
+//	Function to Correct Raw demodulated data with Reed Solomon FEC 
+
+int CorrectRawDataWithRS(UCHAR * bytRawData, UCHAR * bytCorrectedData, int intDataLen, int intRSLen, int bytFrameType, int Carrier)
+{
+	BOOL blnRSOK;
+	BOOL FrameOK;
+	BOOL OK;
+
+	//Dim bytNoRS(1 + intDataLen + 2 - 1) As Byte  ' 1 byte byte Count, Data, 2 byte CRC 
+	//Array.Copy(bytRawData, 0, bytNoRS, 0, bytNoRS.Length)
+
+	if (CarrierOk[Carrier])	// Already decoded this carrier?
+	{
+		// Athough we have already checked the data, it may be in the wrong place
+		// in the buffer if another carrier was decoded wrong.
+
+		memcpy(bytCorrectedData, &bytRawData[1], bytRawData[0] + 1);    // Extra char in case OFDM
+
+		if (strFrameType[LastDataFrameType][0] == 'O')
+			Debugprintf("[CorrectRawDataWithRS] Carrier %d already decoded Block %d, Len %d", Carrier, bytRawData[1], bytRawData[0]);
+		else
+			Debugprintf("[CorrectRawDataWithRS] Carrier %d already decoded Len %d", Carrier, bytRawData[0]);
+		return bytRawData[0];			// don't do it again
+	}
+
+	if (strFrameType[intFrameType][0] == 'O')
+		OK = CheckCRC16(bytRawData, intDataLen + 1);
+	else
+		OK = CheckCRC16FrameType(bytRawData, intDataLen + 1, bytFrameType);
+
+	// As crc can fail also check returned lenght is reasonable
+
+	if (OK && bytRawData[0] <= intDataLen) // No RS correction needed	// return the actual data
+	{
+		memcpy(bytCorrectedData, &bytRawData[1], bytRawData[0] + 1);    
+		if (strFrameType[intFrameType][0] == 'O')
+			Debugprintf("[CorrectRawDataWithRS] Carrier %d OK without RS, Block %d Len = %d", Carrier, bytRawData[1], bytRawData[0]);
+		else
+			Debugprintf("[CorrectRawDataWithRS] Carrier %d OK without RS, Len = %d", Carrier, bytRawData[0]);
+
+		CarrierOk[Carrier] = TRUE;
+		return bytRawData[0];
+	}
+	
+	// Try correcting with RS Parity
+
+	FrameOK = RSDecode(bytRawData, intDataLen + 3 + intRSLen, intRSLen, &blnRSOK);
+
+	if (blnRSOK)
+	{}
+//		Debugprintf("RS Says OK without correction");
+	else
+	if (FrameOK)
+	{}
+//		Debugprintf("RS Says OK after %d correction(s)", NErrors);
+	else
+	{
+		Debugprintf("[intFrameType] RS Says Can't Correct");
+		goto returnBad;
+	}
+
+    if (FrameOK)
+	{
+		if (strFrameType[intFrameType][0] == 'O')
+			OK = CheckCRC16(bytRawData, intDataLen + 1);
+		else
+			OK = CheckCRC16FrameType(bytRawData, intDataLen + 1, bytFrameType);
+
+		if (OK && bytRawData[0] <= intDataLen) // Now OK -  return the actual data
+		{
+			int intFailedByteCnt = 0;
+
+			if (strFrameType[intFrameType][0] == 'O')
+				Debugprintf("[CorrectRawDataWithRS] Carrier %d OK with RS %d corrections, Block %d, Len = %d", Carrier, NErrors, bytRawData[1], bytRawData[0]);
+			else
+				Debugprintf("[CorrectRawDataWithRS] Carrier %d OK with RS %d corrections, Len = %d", Carrier, NErrors, bytRawData[0]);
+			
+			totalRSErrors += NErrors;
+ 
+			memcpy(bytCorrectedData, &bytRawData[1], bytRawData[0] + 1);  
+			CarrierOk[Carrier] = TRUE;
+			return bytRawData[0];
+		}
+        Debugprintf("[CorrectRawDataWithRS] Carrier %d RS says ok but CRC still bad", Carrier);
+	}
+	// return uncorrected data without byte count or RS Parity
+
+returnBad:
+
+	memcpy(bytCorrectedData, &bytRawData[1], intDataLen + 1);    
+     
+	CarrierOk[Carrier] = FALSE;
+	return intDataLen;
+}
+
+
+
+// Subroutine to process new samples as received from the sound card via Main.ProcessCapturedData
+// Only called when not transmitting
+
+double dblPhaseInc;  // in milliradians
+short intNforGoertzel[MAXCAR];
+short intPSKPhase_1[MAXCAR], intPSKPhase_0[MAXCAR];
+short intCP[MAXCAR];	  // Cyclic prefix offset 
+float dblFreqBin[MAXCAR];
+
+BOOL CheckFrameTypeParity(int intTonePtr, int * intToneMags);
+
+void ARDOPProcessNewSamples(short * Samples, int nSamples)
+{
+	BOOL blnFrameDecodedOK = FALSE;
+
+//	LookforUZ7HOLeader(Samples, nSamples);
+
+//	printtick("Start afsk");
+//	DemodAFSK(Samples, nSamples);
+//	printtick("End afsk");
+
+//	return;
+
+
+	if (ProtocolState == FECSend)
+		return;
+
+	// Append new data to anything in rawSamples
+
+	memcpy(&rawSamples[rawSamplesLength], Samples, nSamples * 2);
+	rawSamplesLength += nSamples;
+
+	if (rawSamplesLength > maxrawSamplesLength)
+		maxrawSamplesLength = rawSamplesLength;
+
+	if (rawSamplesLength >= 2400)
+		Debugprintf("Corrupt rawSamplesLength %d", rawSamplesLength);
+
+
+	nSamples = rawSamplesLength;
+	Samples = rawSamples;
+	
+	rawSamplesLength = 0;
+
+//	printtick("Start Busy");
+	if (nSamples >= 1024)
+		UpdateBusyDetector(Samples);
+//	printtick("Done Busy");
+
+	// it seems that searchforleader runs on unmixed and unfilered samples
+
+	// Searching for leader
+
+	if (State == SearchingForLeader)
+	{
+		// Search for leader as long as 960 samples (8  symbols) available
+
+//		printtick("Start Leader Search");
+
+		if (nSamples >= 1200)
+		{		
+			if (ProtocolState == FECSend)
+					return;
+		}
+		while (State == SearchingForLeader && nSamples >= 1200)
+		{
+			int intSN;
+			
+			blnLeaderFound = SearchFor2ToneLeader4(Samples, nSamples, &dblOffsetHz, &intSN);
+//			blnLeaderFound = SearchFor2ToneLeader2(Samples, nSamples, &dblOffsetHz, &intSN);
+		
+			if (blnLeaderFound)
+			{
+//				Debugprintf("Got Leader");
+
+				dttLastLeaderDetect = Now;
+
+				nSamples -= 480;
+				Samples += 480;		// !!!! needs attention !!!
+
+				InitializeMixedSamples();
+				State = AcquireSymbolSync;
+			}
+			else
+			{
+				if (SlowCPU)
+				{
+					nSamples -= 480;
+					Samples += 480;		 // advance pointer 2 symbols (40 ms) ' reduce CPU loading
+				}
+				else
+				{
+					nSamples -= 240;
+					Samples += 240;		// !!!! needs attention !!!
+				}
+			}
+		}
+		if (State == SearchingForLeader)
+		{
+			// Save unused samples
+
+			memmove(rawSamples, Samples, nSamples * 2);
+			rawSamplesLength = nSamples;
+
+//			printtick("End Leader Search");
+
+			return;
+		}
+	}
+
+
+	// Got leader
+
+	//	At this point samples haven't been processed, and are in Samples, len nSamples
+
+	// I'm going to filter all samples into intFilteredMixedSamples.
+
+//	printtick("Start Mix");
+
+	MixNCOFilter(Samples, nSamples, dblOffsetHz); // Mix and filter new samples (Mixing consumes all intRcvdSamples)
+	nSamples = 0;	//	all used
+
+//	printtick("Done Mix Samples");
+
+	// Acquire Symbol Sync 
+
+    if (State == AcquireSymbolSync)
+	{
+		if ((intFilteredMixedSamplesLength - intMFSReadPtr) > 960)
+		{
+			blnSymbolSyncFound = Acquire2ToneLeaderSymbolFraming();  // adjust the pointer to the nominal symbol start based on phase
+			if (blnSymbolSyncFound)
+				State = AcquireFrameSync;
+			else
+			{
+				// Rick's Latest code (2.0.3) advances pointer instead of clearing samples
+//				DiscardOldSamples();
+//				ClearAllMixedSamples();
+				intMFSReadPtr += 240; //  advance the MFSReadPointer one symbol and try to search for leader again. 
+				State = SearchingForLeader;
+				return;
+			}
+//			printtick("Got Sym Sync");
+		}
+	}
+	
+	//	Acquire Frame Sync
+	
+	if (State == AcquireFrameSync)
+	{
+		blnFrameSyncFound = AcquireFrameSyncRSB();
+
+		// Remove used samples
+
+		intFilteredMixedSamplesLength -= intMFSReadPtr;
+
+		if (intFilteredMixedSamplesLength < 0)
+			Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+		memmove(intFilteredMixedSamples,
+			&intFilteredMixedSamples[intMFSReadPtr], intFilteredMixedSamplesLength * 2);
+
+		intMFSReadPtr = 0;
+
+	
+		if (blnFrameSyncFound)
+		{
+			State = AcquireFrameType;
+				
+			//	Have frame Sync. Remove used samples from buffer
+
+			printtick("Got Frame Sync");
+
+		}
+		else if ((Now - dttLastLeaderDetect) > 1000)		 // no Frame sync within 1000 ms (may want to make this limit a funciton of Mode and leaders)
+		{
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+			printtick("frame sync timeout");
+		}
+/*
+else if (intPhaseError > 2)
+		{
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+			printtick("frame sync timeout");
+		}
+//		else
+//			printtick("no frame sync");
+*/
+
+
+	}
+	
+	//	Acquire Frame Type
+
+	if (State == AcquireFrameType)
+	{
+//		printtick("getting frame type");
+
+		intFrameType = Acquire4FSKFrameType();
+		if (intFrameType == -2)
+		{
+//			sprintf(Msg, "not enough %d %d", intFilteredMixedSamplesLength, intMFSReadPtr);
+//			printtick(Msg);
+			return;		//  insufficient samples
+		}
+
+		if (intFrameType == -1)		  // poor decode quality (large decode distance)
+		{
+			State = SearchingForLeader;
+			ClearAllMixedSamples();
+			DiscardOldSamples();
+			Debugprintf("poor frame type decode");
+
+			// stcStatus.BackColor = SystemColors.Control
+			// stcStatus.Text = ""
+			// stcStatus.ControlName = "lblRcvFrame"
+			// queTNCStatus.Enqueue(stcStatus)
+		}
+		else
+		{
+			//	Get Frame info and Initialise Demodulate variables
+
+			// We've used intMFSReadPtr samples, so remove from Buffer
+
+//			sprintf(Msg, "Got Frame Type %x", intFrameType);
+//			printtick(Msg);
+
+			blnLastBusyStatus = 1;
+			blnBusyStatus = 1; 
+			BusyCount = 10;
+
+			intFilteredMixedSamplesLength -= intMFSReadPtr;
+	
+			if (intFilteredMixedSamplesLength < 0)
+				Debugprintf("Corrupt intFilteredMixedSamplesLength");
+	
+			memmove(intFilteredMixedSamples,
+				&intFilteredMixedSamples[intMFSReadPtr], intFilteredMixedSamplesLength * 2); 
+
+			intMFSReadPtr = 0;
+
+			if (!FrameInfo(intFrameType, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytMinQualThresh, strType))
+			{
+				printtick("bad frame type");
+				State = SearchingForLeader;
+				ClearAllMixedSamples();
+				DiscardOldSamples();
+				return;
+			}
+
+			if (IsShortControlFrame(intFrameType))
+			{
+				// Frame has no data so is now complete
+
+				DrawRXFrame(1, Name(intFrameType));
+
+				// See if IRStoISS shortcut can be invoked
+			// prepare for next
+
+				DiscardOldSamples();
+				ClearAllMixedSamples();
+				State = SearchingForLeader;
+				blnFrameDecodedOK = TRUE;
+				Debugprintf("[DecodeFrame] Frame: %s ", Name(intFrameType));
+
+				DecodeCompleteTime = Now;
+
+				goto ProcessFrame;
+			}
+
+			DrawRXFrame(0, Name(intFrameType));
+
+			if (intBaud == 25)
+				intSampPerSym = 480;
+			else if (intBaud == 50)
+				intSampPerSym = 240;
+			else if (intBaud == 55)
+				intSampPerSym = 216;
+			else if (intBaud == 100)
+				intSampPerSym = 120;
+			else if (intBaud == 167)
+				intSampPerSym = 72;
+			else if (intBaud == 600)
+				intSampPerSym = 20;
+
+			if (IsDataFrame(intFrameType))
+				SymbolsLeft = intDataLen + intRSLen + 3; // Data has crc + length byte
+			else if (intFrameType == OFDMACK)
+				SymbolsLeft = intDataLen + intRSLen + 2;	// CRC but no len
+			else
+				SymbolsLeft = intDataLen + intRSLen;	// No CRC
+
+			if (intDataLen == 600)
+				SymbolsLeft += 6;		// 600 baud has 3 * RS Blocks
+
+			// Save data rate for PTC reporting
+
+			if (Rate[intFrameType] > 0)
+				DataRate = Rate[intFrameType];
+
+			intToneMagsLength = 16 * SymbolsLeft;	// 4 tones, 2 bits per set
+			
+			memset(intToneMagsIndex, 0, sizeof(intToneMagsIndex));
+			
+			charIndex = 0;	
+			PSKInitDone = 0;
+			
+			frameLen = 0;
+			totalRSErrors = 0;
+
+			DummyCarrier = 0;	// pseudo carrier used for long 600 baud frames
+			Decode600Buffer = &bytFrameData[0][0];
+
+			State = AcquireFrame;
+			
+			// if a data frame, and not the same frame type as last, reinitialise 
+			// correctly received carriers byte and memory ARQ fields
+
+//			if (IsDataFrame(intFrameType) && LastDataFrameType != intFrameType)
+
+			if (intFrameType == PktFrameHeader || intFrameType == PktFrameData)
+			{
+				memset(CarrierOk, 0, sizeof(CarrierOk));
+				memset(intSumCounts, 0, sizeof(intSumCounts));
+#ifdef MEMORYARQ
+				memset(intToneMagsAvg, 0, sizeof(intToneMagsAvg));
+				memset(intCarPhaseAvg, 0, sizeof(intCarPhaseAvg));
+				memset(intCarMagAvg, 0, sizeof(intCarMagAvg));
+#endif
+				LastDataFrameType = intFrameType;
+			}
+			else if (LastDataFrameType != intFrameType)
+			{
+				if (strFrameType[LastDataFrameType][0] == 'O')
+				{
+					// OFDM Frame, We know the ISS received the last ack, so can remove any data passed to host.
+					// We need to do that, as new frame block numbers will start from first unacked block.
+
+					if (intFrameType == OFDMACK)
+						RepeatedFrame = FALSE;
+
+					RepeatedFrame = FALSE;
+					RemoveProcessedOFDMData();	
+				}
+
+				Debugprintf("New frame type - MEMARQ flags reset");
+				memset(CarrierOk, 0, sizeof(CarrierOk));
+	
+				if (IsDataFrame(intFrameType))
+					LastDataFrameType = intFrameType;
+
+				// note that although we only do mem arq if enough RAM we
+				// still skip decoding carriers that have been received;
+
+#ifdef MEMORYARQ
+				memset(intSumCounts, 0, sizeof(intSumCounts));
+				memset(intToneMagsAvg, 0, sizeof(intToneMagsAvg));
+				memset(intCarPhaseAvg, 0, sizeof(intCarPhaseAvg));
+				memset(intCarMagAvg, 0, sizeof(intCarMagAvg));
+#endif
+			}
+			else
+			{
+				// Repeated frame. OFDM needs to know, as we may have passed data to host.
+
+				if (IsDataFrame(intFrameType))
+					RepeatedFrame = TRUE;
+
+			}
+
+			PrintCarrierFlags();
+		}
+	}
+	// Acquire Frame
+
+	if (State == AcquireFrame)
+	{
+		// Call DemodulateFrame for each set of samples
+
+		DemodulateFrame(intFrameType);
+
+		if (State == AcquireFrame)
+
+			// We haven't got it all yet so wait for more samples	
+			return;	
+
+		//	We have the whole frame, so process it
+
+
+//		printtick("got whole frame");
+
+		LastDemodType = intFrameType;
+
+		if (strcmp (strMod, "4FSK") == 0)
+			Update4FSKConstellation(&intToneMags[0][0], &intLastRcvdFrameQuality);
+		else if (strcmp (strMod, "16FSK") == 0)
+			Update16FSKConstellation(&intToneMags[0][0], &intLastRcvdFrameQuality);
+		else if (strcmp (strMod, "8FSK") == 0)
+			Update8FSKConstellation(&intToneMags[0][0], &intLastRcvdFrameQuality);
+
+		// PSK and QAM quality done in Decode routines
+
+		Debugprintf("Qual = %d", intLastRcvdFrameQuality);
+
+		// This mechanism is to skip actual decoding and reply/change state...no need to decode 
+
+     
+		blnFrameDecodedOK = DecodeFrame(intFrameType, bytData);
+
+ProcessFrame:	
+
+		if (!blnFrameDecodedOK)
+			DrawRXFrame(2, Name(intFrameType));
+
+		if (intFrameType == PktFrameData)
+		{
+#ifdef TEENSY
+			SetLED(PKTLED, TRUE);		// Flash LED
+			PKTLEDTimer = Now + 200;	// for 200 mS
+#endif
+			return;
+		}
+
+		if (blnFrameDecodedOK)
+		{
+			// Set input level if supported
+			
+#ifdef HASPOTS
+			CheckandAdjustRXLevel(lastmax, lastmin, TRUE);
+#endif
+			if (AccumulateStats)
+				if (IsDataFrame(intFrameType))
+					if (strstr (strMod, "PSK"))
+						intGoodPSKFrameDataDecodes++;
+					else if (strstr (strMod, "QAM"))
+						intGoodQAMFrameDataDecodes++;
+					else if (strstr (strMod, "OFDM"))
+						intGoodOFDMFrameDataDecodes++;
+					else	
+						intGoodFSKFrameDataDecodes++;
+
+#ifdef TEENSY
+			if (IsDataFrame(intFrameType))
+			{
+				SetLED(PKTLED, TRUE);		// Flash LED
+				PKTLEDTimer = Now + 400;	// For 400 Ms
+			}
+#endif			
+		}
+		else
+		{
+			//	Bad decode
+
+			if (AccumulateStats)
+				if (IsDataFrame(intFrameType))
+					if (strstr(strMod, "PSK"))
+						intFailedPSKFrameDataDecodes++;
+					else if (strstr(strMod, "QAM"))
+						intFailedQAMFrameDataDecodes++;
+					else if (strstr(strMod, "OFDM"))
+						intFailedOFDMFrameDataDecodes++;
+					else
+						intFailedFSKFrameDataDecodes++;
+
+
+			// Debug.WriteLine("[DecodePSKData2] bytPass = " & Format(bytPass, "X"))
+
+		}
+skipDecode:			
+		State = SearchingForLeader;
+		ClearAllMixedSamples();
+		DiscardOldSamples();
+		return;
+
+	}
+}
+// Subroutine to compute Goertzel algorithm and return Real and Imag components for a single frequency bin
+
+void GoertzelRealImag(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag)
+{
+	// intRealIn is a buffer at least intPtr + N in length
+	// N need not be a power of 2
+	// m need not be an integer
+	// Computes the Real and Imaginary Freq values for bin m
+	// Verified to = FFT results for at least 10 significant digits
+	// Timings for 1024 Point on Laptop (64 bit Core Duo 2.2 Ghz)
+	//        GoertzelRealImag .015 ms   Normal FFT (.5 ms)
+	//  assuming Goertzel is proportional to N and FFT time proportional to Nlog2N
+	//  FFT:Goertzel time  ratio ~ 3.3 Log2(N)
+
+	//  Sanity check
+
+	//if (intPtr < 0 Or (intRealIn.Length - intPtr) < N Then
+    //        dblReal = 0 : dblImag = 0 : Exit Sub
+     //   End If
+
+	float dblZ_1 = 0.0f, dblZ_2 = 0.0f, dblW = 0.0f;
+	float dblCoeff = 2 * cosf(2 * M_PI * m / N);
+	int i;
+
+	for (i = 0; i <= N; i++)
+	{
+		if (i == N)
+			dblW = dblZ_1 * dblCoeff - dblZ_2;
+		else
+			dblW = intRealIn[intPtr] + dblZ_1 * dblCoeff - dblZ_2;
+
+		dblZ_2 = dblZ_1;
+		dblZ_1 = dblW;
+		intPtr++;
+	}
+	*dblReal = 2 * (dblW - cosf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2
+	*dblImag = 2 * (sinf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2   (this sign agrees with Scope DSP phase values) 
+}
+
+// Subroutine to compute Goertzel algorithm and return Real and Imag components for a single frequency bin with a Hanning Window function
+
+float dblHanWin[120];
+float dblHanAng;
+int HanWinLen = 0;
+
+float dblHannWin[480];
+float dblHannAng;
+
+// Subroutine to compute Goertzel algorithm and return Real and Imag components for a single frequency bin with a Hann Window function for N a multiple of 120
+
+void GoertzelRealImagHann120(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag)
+{
+    // This version precomputes the raised cosine (Hann or Hanning) window and uses it for any length that is a multiple of 120 samples
+	// intRealIn is a buffer at least intPtr + N in length
+    // N must be 960 to use this function
+    // Hann coefficients are approximated for N>120 but should be close
+	// m need not be an integer
+	// Computes the Real and Imaginary Freq values for bin m
+	// Verified to = FFT results for at least 10 significant digits
+	// Timings for 1024 Point on Laptop (64 bit Core Duo 2.2 Ghz)
+	//        GoertzelRealImag .015 ms   Normal FFT (.5 ms)
+	//  assuming Goertzel is proportional to N and FFT time proportional to Nlog2N
+	//  FFT:Goertzel time  ratio ~ 3.3 Log2(N)
+
+ 
+  	float dblZ_1 = 0.0f, dblZ_2 = 0.0f, dblW = 0.0f;
+	float dblCoeff = 2 * cosf(2 * M_PI * m / N);
+
+	int i;
+	int intM = N / 120;	// No if 120 sample blocks
+
+	if (HanWinLen != N)  //if there is any change in N this is then recalculate the Hanning Window...this mechanism reduces use of Cos
+	{
+		HanWinLen = N;
+
+		dblHanAng = 2 * M_PI / 120;
+
+		for (i = 0; i < 60; i++)
+		{
+			dblHanWin[i] = 0.5 - 0.5 * cosf(i * dblHanAng + dblHanAng);
+		}
+	}
+
+	for (i = 0; i <= N; i++)
+	{
+		if (i == N)
+			dblW = dblZ_1 * dblCoeff - dblZ_2;
+		
+		else if (i < (N / 2))	// ist half of 120 sample block
+				// looks like we use values 0 ti 59 then 59 down to 0
+			dblW = intRealIn[intPtr] * dblHanWin[(i /intM) % 60] + dblZ_1 * dblCoeff - dblZ_2;
+		else
+			dblW = intRealIn[intPtr]  * dblHanWin[59 - ((i /intM) % 60)] + dblZ_1 * dblCoeff - dblZ_2;
+
+		dblZ_2 = dblZ_1;
+		dblZ_1 = dblW;
+		intPtr++;
+	}
+	
+	*dblReal = 2 * (dblW - cosf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2
+	*dblImag = 2 * (sinf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2   (this sign agrees with Scope DSP phase values) 
+
+}
+
+
+
+
+void GoertzelRealImagHann960(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag)
+{
+    // This version precomputes the raised cosine (Hann or Hanning) window and uses it for any length that is a multiple of 120 samples
+	// intRealIn is a buffer at least intPtr + N in length
+    // N must be a multiple of 120 to use this function
+    // Hann coefficients are approximated for N>120 but should be close
+	// m need not be an integer
+	// Computes the Real and Imaginary Freq values for bin m
+	// Verified to = FFT results for at least 10 significant digits
+	// Timings for 1024 Point on Laptop (64 bit Core Duo 2.2 Ghz)
+	//        GoertzelRealImag .015 ms   Normal FFT (.5 ms)
+	//  assuming Goertzel is proportional to N and FFT time proportional to Nlog2N
+	//  FFT:Goertzel time  ratio ~ 3.3 Log2(N)
+
+ 
+  	float dblZ_1 = 0.0f, dblZ_2 = 0.0f, dblW = 0.0f;
+	float dblCoeff = 2 * cosf(2 * M_PI * m / N);
+
+	int i;
+	int intM = N / 120;	// No if 120 sample blocks
+
+	if (dblHannWin[479] < 0.5)  //if there is any change in N this is then recalculate the Hanning Window...this mechanism reduces use of Cos
+	{
+		dblHannAng = 2 * M_PI / 960;
+
+		for (i = 0; i < 480; i++)
+		{
+			dblHannWin[i] = 0.5 - 0.5 * cosf(i * dblHannAng + dblHannAng);
+		}
+	}
+
+	for (i = 0; i <= N; i++)
+	{
+		if (i == N)
+			dblW = dblZ_1 * dblCoeff - dblZ_2;
+		
+		else if (i < (N / 2))	// ist half of 120 sample block
+				// looks like we use values 0 ti 59 then 59 down to 0
+			dblW = intRealIn[intPtr] * dblHannWin[(i /intM) % 60] + dblZ_1 * dblCoeff - dblZ_2;
+		else
+			dblW = intRealIn[intPtr]  * dblHannWin[479 - ((i /intM) % 60)] + dblZ_1 * dblCoeff - dblZ_2;
+
+		dblZ_2 = dblZ_1;
+		dblZ_1 = dblW;
+		intPtr++;
+	}
+	
+	*dblReal = 2 * (dblW - cosf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2
+	*dblImag = 2 * (sinf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2   (this sign agrees with Scope DSP phase values) 
+
+}
+
+
+
+
+
+void GoertzelRealImagHanning(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag)
+{
+	// intRealIn is a buffer at least intPtr + N in length
+	// N need not be a power of 2
+	// m need not be an integer
+	// Computes the Real and Imaginary Freq values for bin m
+	// Verified to = FFT results for at least 10 significant digits
+	// Timings for 1024 Point on Laptop (64 bit Core Duo 2.2 Ghz)
+	//        GoertzelRealImag .015 ms   Normal FFT (.5 ms)
+	//  assuming Goertzel is proportional to N and FFT time proportional to Nlog2N
+	//  FFT:Goertzel time  ratio ~ 3.3 Log2(N)
+
+	//  Sanity check
+ 
+  	float dblZ_1 = 0.0f, dblZ_2 = 0.0f, dblW = 0.0f;
+	float dblCoeff = 2 * cosf(2 * M_PI * m / N);
+
+	int i;
+
+	if (HanWinLen != N)  //if there is any change in N this is then recalculate the Hanning Window...this mechanism reduces use of Cos
+	{
+		HanWinLen = N;
+
+		dblHanAng = 2 * M_PI / (N - 1);
+
+		for (i = 0; i < N; i++)
+		{
+			dblHanWin[i] = 0.5 - 0.5 * cosf(i * dblHanAng);
+		}
+	}
+
+	for (i = 0; i <= N; i++)
+	{
+		if (i == N)
+			dblW = dblZ_1 * dblCoeff - dblZ_2;
+		else
+			dblW = intRealIn[intPtr]  * dblHanWin[i] + dblZ_1 * dblCoeff - dblZ_2;
+
+		dblZ_2 = dblZ_1;
+		dblZ_1 = dblW;
+		intPtr++;
+	}
+	
+	*dblReal = 2 * (dblW - cosf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2
+	*dblImag = 2 * (sinf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2   (this sign agrees with Scope DSP phase values) 
+}
+
+float dblHamWin[1200];
+float dblHamAng;
+int HamWinLen = 0;
+
+void GoertzelRealImagHamming(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag)
+{
+	// intRealIn is a buffer at least intPtr + N in length
+	// N need not be a power of 2
+	// m need not be an integer
+	// Computes the Real and Imaginary Freq values for bin m
+	// Verified to = FFT results for at least 10 significant digits
+	// Timings for 1024 Point on Laptop (64 bit Core Duo 2.2 Ghz)
+	//        GoertzelRealImag .015 ms   Normal FFT (.5 ms)
+	//  assuming Goertzel is proportional to N and FFT time proportional to Nlog2N
+	//  FFT:Goertzel time  ratio ~ 3.3 Log2(N)
+
+	//  Sanity check
+ 
+  	float dblZ_1 = 0.0f, dblZ_2 = 0.0f, dblW = 0.0f;
+	float dblCoeff = 2 * cosf(2 * M_PI * m / N);
+
+	int i;
+
+	if (HamWinLen != N)  //if there is any cHamge in N this is then recalculate the Hanning Window...this mechanism reduces use of Cos
+	{
+		HamWinLen = N;
+
+		dblHamAng = 2 * M_PI / (N - 1);
+
+		for (i = 0; i < N; i++)
+		{
+			dblHamWin[i] = 0.54f - 0.46f * cosf(i * dblHamAng);
+		}
+	}
+
+	for (i = 0; i <= N; i++)
+	{
+		if (i == N)
+			dblW = dblZ_1 * dblCoeff - dblZ_2;
+		else
+			dblW = intRealIn[intPtr]  * dblHamWin[i] + dblZ_1 * dblCoeff - dblZ_2;
+
+		dblZ_2 = dblZ_1;
+		dblZ_1 = dblW;
+		intPtr++;
+	}
+	
+	*dblReal = 2 * (dblW - cosf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2
+	*dblImag = 2 * (sinf(2 * M_PI * m / N) * dblZ_2) / N;  // scale results by N/2   (this sign agrees with Scope DSP phase values) 
+}
+
+// Function to interpolate spectrum peak using Quinn algorithm
+
+float QuinnSpectralPeakLocator(float XkM1Re, float XkM1Im, float XkRe, float XkIm, float XkP1Re, float XkP1Im)
+{
+	// based on the Quinn algorithm in Streamlining Digital Processing page 139
+	// Alpha1 = Re(Xk-1/Xk)
+	// Alpha2 = Re(Xk+1/Xk)
+	//Delta1 = Alpha1/(1 - Alpha1)
+	//'Delta2 = Alpha2/(1 - Alpha2)
+	// if Delta1 > 0 and Delta2 > 0 then Delta = Delta2 else Delta = Delta1
+	// should be within .1 bin for S:N > 2 dB
+
+	float dblDenom = powf(XkRe, 2) + powf(XkIm, 2);
+	float dblAlpha1;
+	float dblAlpha2;
+	float dblDelta1;
+	float dblDelta2;
+
+	dblAlpha1 = ((XkM1Re * XkRe) + (XkM1Im * XkIm)) / dblDenom;
+	dblAlpha2 = ((XkP1Re * XkRe) + (XkP1Im * XkIm)) / dblDenom;
+	dblDelta1 = dblAlpha1 / (1 - dblAlpha1);
+	dblDelta2 = dblAlpha2 / (1 - dblAlpha2);
+
+	if (dblDelta1 > 0 &&  dblDelta2 > 0)
+		return dblDelta2;
+	else
+		return dblDelta1;
+}
+
+// Function to interpolate spectrum peak using simple interpolation 
+
+float SpectralPeakLocator(float XkM1Re, float XkM1Im, float XkRe, float XkIm, float XkP1Re, float XkP1Im, float * dblCentMag, char * Win)
+{
+	// Use this for Windowed samples instead of QuinnSpectralPeakLocator
+
+	float dblLeftMag, dblRightMag;
+	*dblCentMag = sqrtf(powf(XkRe, 2) + powf(XkIm, 2));
+
+	dblLeftMag  = sqrtf(powf(XkM1Re, 2) + powf(XkM1Im, 2));
+	dblRightMag  = sqrtf(powf(XkP1Re, 2) + powf(XkP1Im, 2));
+
+	//Factor 1.22 empirically determine optimum for Hamming window
+	// For Hanning Window use factor of 1.36
+	// For Blackman Window use factor of  1.75
+    
+	if (strcmp(Win, "Blackman"))
+		return 1.75 * (dblRightMag - dblLeftMag) / (dblLeftMag + *dblCentMag + dblRightMag);  // Optimized for Hamming Window
+	if (strcmp(Win, "Hann"))
+		return 1.36 * (dblRightMag - dblLeftMag) / (dblLeftMag + *dblCentMag + dblRightMag);  // Optimized for Hamming Window
+	if (strcmp(Win, "Hamming"))
+		return 1.22 * (dblRightMag - dblLeftMag) / (dblLeftMag + *dblCentMag + dblRightMag);  // Optimized for Hamming Window
+
+	return 0;
+}
+
+// Function to detect and tune the 50 baud 2 tone leader (for all bandwidths) Updated version of SearchFor2ToneLeader2 
+
+float dblPriorFineOffset = 1000.0f;
+
+
+BOOL SearchFor2ToneLeader3(short * intNewSamples, int Length, float * dblOffsetHz, int * intSN)
+{
+	// This version uses 10Hz bin spacing. Hamming window on Goertzel, and simple spectral peak interpolator
+	// It requires about 50% more CPU time when running but produces more sensive leader detection and more accurate tuning
+	// search through the samples looking for the telltail 50 baud 2 tone pattern (nominal tones 1475, 1525 Hz)
+	// Find the offset in Hz (due to missmatch in transmitter - receiver tuning
+	// Finds the S:N (power ratio of the tones 1475 and 1525 ratioed to "noise" averaged from bins at 1425, 1450, 1550, and 1575Hz)
+ 
+	float dblGoertzelReal[56];
+	float dblGoertzelImag[56];
+	float dblMag[56];
+	float dblPower, dblLeftMag, dblRightMag;
+	float dblMaxPeak = 0.0, dblMaxPeakSN = 0.0, dblBinAdj;
+	int intInterpCnt = 0;  // the count 0 to 3 of the interpolations that were < +/- .5 bin
+	int  intIatMaxPeak = 0;
+	float dblAlpha = 0.3f;  // Works well possibly some room for optimization Changed from .5 to .3 on Rev 0.1.5.3
+	float dblInterpretThreshold= 1.0f; // Good results June 6, 2014 (was .4)  ' Works well possibly some room for optimization
+	float dblFilteredMaxPeak = 0;
+	int intStartBin, intStopBin;
+	float dblLeftCar, dblRightCar, dblBinInterpLeft, dblBinInterpRight, dblCtrR, dblCtrI, dblLeftP, dblRightP;
+	float dblLeftR[3], dblLeftI[3], dblRightR[3], dblRightI[3];
+	int i;
+	int Ptr = 0;
+	float dblAvgNoisePerBin, dblCoarsePwrSN, dblBinAdj1475, dblBinAdj1525, dblCoarseOffset = 1000;
+	float dblTrialOffset, dblPowerEarly, dblSNdBPwrEarly;
+
+	if ((Length) < 1200)
+		return FALSE;		// ensure there are at least 1200 samples (5 symbols of 240 samples)
+
+//	if ((Now - dttLastGoodFrameTypeDecode > 20000) && TuningRange > 0)
+	{
+		// this is the full search over the full tuning range selected.  Uses more CPU time and with possibly larger deviation once connected. 
+		
+		intStartBin = ((200 - TuningRange) / 10);
+		intStopBin = 55 - intStartBin;
+
+		dblMaxPeak = 0;
+
+		// Generate the Power magnitudes for up to 56 10 Hz bins (a function of MCB.TuningRange) 
+  
+		for (i = intStartBin; i <= intStopBin; i++)
+		{
+            // note hamming window reduces end effect caused by 1200 samples (not an even multiple of 240)  but spreads response peaks
+		
+			GoertzelRealImagHamming(intNewSamples, Ptr, 1200, i + 122.5f, &dblGoertzelReal[i], &dblGoertzelImag[i]);
+			dblMag[i] = powf(dblGoertzelReal[i], 2) + powf(dblGoertzelImag[i], 2); // dblMag(i) in units of power (V^2)
+ 		}
+
+		// Search the bins to locate the max S:N in the two tone signal/avg noise.  
+
+ 		for (i = intStartBin + 5; i <= intStopBin - 10; i++)	// ' +/- MCB.TuningRange from nominal 
+		{
+			dblPower = sqrtf(dblMag[i] * dblMag[i + 5]); // using the product to minimize sensitivity to one strong carrier vs the two tone
+			// sqrt converts back to units of power from Power ^2
+			// don't use center noise bin as too easily corrupted by adjacent carriers
+
+			dblAvgNoisePerBin = (dblMag[i - 5] + dblMag[i - 3] + dblMag[i + 8] + dblMag[i + 10]) / 4;  // Simple average
+			dblMaxPeak = dblPower / dblAvgNoisePerBin;
+			if (dblMaxPeak > dblMaxPeakSN)
+			{
+				dblMaxPeakSN = dblMaxPeak;
+				dblCoarsePwrSN = 10 * log10f(dblMaxPeak);
+				intIatMaxPeak = i + 122;
+			}
+		}
+		// Do the interpolation based on the two carriers at nominal 1475 and 1525Hz
+
+		if (((intIatMaxPeak - 123) >= intStartBin) && ((intIatMaxPeak - 118) <= intStopBin)) // check to ensure no index errors
+		{
+			// Interpolate the adjacent bins using QuinnSpectralPeakLocator
+
+			dblBinAdj1475 = SpectralPeakLocator(
+				dblGoertzelReal[intIatMaxPeak - 123], dblGoertzelImag[intIatMaxPeak - 123],
+				dblGoertzelReal[intIatMaxPeak - 122], dblGoertzelImag[intIatMaxPeak - 122], 
+				dblGoertzelReal[intIatMaxPeak - 121], dblGoertzelImag[intIatMaxPeak - 121], &dblLeftMag, "Hamming");
+
+			if (dblBinAdj1475 < dblInterpretThreshold && dblBinAdj1475 > -dblInterpretThreshold)
+			{
+				dblBinAdj = dblBinAdj1475;
+				intInterpCnt += 1;
+			} 
+
+			dblBinAdj1525 = SpectralPeakLocator(
+				dblGoertzelReal[intIatMaxPeak - 118], dblGoertzelImag[intIatMaxPeak - 118], 
+				dblGoertzelReal[intIatMaxPeak - 117], dblGoertzelImag[intIatMaxPeak - 117], 
+				dblGoertzelReal[intIatMaxPeak - 116], dblGoertzelImag[intIatMaxPeak - 116], &dblRightMag, "Hamming");
+
+			if (dblBinAdj1525 < dblInterpretThreshold && dblBinAdj1525 > -dblInterpretThreshold)
+			{
+				dblBinAdj += dblBinAdj1525;
+        		intInterpCnt += 1;
+			}
+			if (intInterpCnt == 0)					
+			{
+				dblPriorFineOffset = 1000.0f;
+				return FALSE;
+			}
+			else
+			{	
+				dblBinAdj = dblBinAdj / intInterpCnt;	 // average the offsets that are within 1 bin
+				dblCoarseOffset = 10.0f * (intIatMaxPeak + dblBinAdj - 147); // compute the Coarse tuning offset in Hz
+			}
+		}
+		else
+		{
+			dblPriorFineOffset = 1000.0f;
+			return FALSE;
+		}
+	}
+	
+	// Drop into Narrow Search
+  
+           
+	if (dblCoarseOffset < 999)
+		dblTrialOffset = dblCoarseOffset;  // use the CoarseOffset calculation from above
+	else
+		dblTrialOffset = *dblOffsetHz; // use the prior offset value
+	
+    if (fabsf(dblTrialOffset) > TuningRange && TuningRange > 0)
+	{
+		dblPriorFineOffset = 1000.0f;	
+		return False;
+	}
+
+	dblLeftCar = 147.5f + dblTrialOffset / 10.0f;  // the nominal positions of the two tone carriers based on the last computerd dblOffsetHz
+	dblRightCar = 152.5f + dblTrialOffset / 10.0f;
+
+	// Calculate 4 bins total for Noise values in S/N computation (calculate average noise)  ' Simple average of noise bins      
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, 142.5f + dblTrialOffset / 10.0f, &dblCtrR, &dblCtrI);  // nominal center -75 Hz
+	dblAvgNoisePerBin = powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, 145.0f + dblTrialOffset / 10.0f, &dblCtrR, &dblCtrI); // center - 50 Hz
+	dblAvgNoisePerBin += powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, 155.0 + dblTrialOffset / 10.0f, &dblCtrR, &dblCtrI); // center + 50 Hz
+	dblAvgNoisePerBin += powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, 157.5 + dblTrialOffset / 10.0f, &dblCtrR, &dblCtrI);  // center + 75 Hz
+	dblAvgNoisePerBin += powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	dblAvgNoisePerBin = dblAvgNoisePerBin * 0.25f; // simple average,  now units of power
+  
+	// Calculate one bin above and below the two nominal 2 tone positions for Quinn Spectral Peak locator
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, dblLeftCar - 1, &dblLeftR[0], &dblLeftI[0]);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, dblLeftCar, &dblLeftR[1], &dblLeftI[1]);
+	dblLeftP = powf(dblLeftR[1], 2) + powf(dblLeftI[1],  2);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, dblLeftCar + 1, &dblLeftR[2], &dblLeftI[2]);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, dblRightCar - 1, &dblRightR[0], &dblRightI[0]);
+	GoertzelRealImagHamming(intNewSamples, Ptr, 1200, dblRightCar, &dblRightR[1], &dblRightI[1]);
+	dblRightP = powf(dblRightR[1], 2) + powf(dblRightI[1], 2);
+	GoertzelRealImag(intNewSamples, Ptr, 1200, dblRightCar + 1, &dblRightR[2], &dblRightI[2]);
+
+	// Calculate the total power in the two tones 
+	// This mechanism designed to reject single carrier but average both carriers if ratios is less than 4:1
+
+	if (dblLeftP > 4 * dblRightP)
+		dblPower = dblRightP;
+	else if (dblRightP > 4 * dblLeftP)
+		dblPower = dblLeftP;
+	else
+		dblPower = sqrtf(dblLeftP * dblRightP);
+ 
+	dblSNdBPwr = 10 * log10f(dblPower / dblAvgNoisePerBin);
+
+	// Early leader detect code to calculate S:N on the first 2 symbols)
+	//  concept is to allow more accurate framing and sync detection and reduce false leader detects
+
+	GoertzelRealImag(intNewSamples, Ptr, 480, 57.0f + dblTrialOffset / 25.0f, &dblCtrR, &dblCtrI); //  nominal center -75 Hz
+	dblAvgNoisePerBin = powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImag(intNewSamples, Ptr, 480, 58.0f + dblTrialOffset / 25.0f, &dblCtrR, &dblCtrI); //  nominal center -75 Hz
+	dblAvgNoisePerBin += powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImag(intNewSamples, Ptr, 480, 62.0f + dblTrialOffset / 25.0f, &dblCtrR, &dblCtrI); //  nominal center -75 Hz
+	dblAvgNoisePerBin += powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImag(intNewSamples, Ptr, 480, 63.0f + dblTrialOffset / 25.0f, &dblCtrR, &dblCtrI); //  nominal center -75 Hz 
+	dblAvgNoisePerBin = max(1000.0f, 0.25 * (dblAvgNoisePerBin + powf(dblCtrR, 2) + powf(dblCtrI, 2))); // average of 4 noise bins
+	dblLeftCar = 59 + dblTrialOffset / 25;  // the nominal positions of the two tone carriers based on the last computerd dblOffsetHz
+	dblRightCar = 61 + dblTrialOffset / 25;
+
+	GoertzelRealImag(intNewSamples, Ptr, 480, dblLeftCar, &dblCtrR, &dblCtrI); // LEFT carrier
+	dblLeftP = powf(dblCtrR, 2) + powf(dblCtrI, 2);
+	GoertzelRealImag(intNewSamples, Ptr, 480, dblRightCar, &dblCtrR, &dblCtrI); // Right carrier
+	dblRightP = powf(dblCtrR, 2) + powf(dblCtrI, 2);
+
+	// the following rejects a single tone carrier but averages the two tones if ratio is < 4:1
+
+	if (dblLeftP > 4 * dblRightP)
+		dblPowerEarly = dblRightP;
+	else if (dblRightP > 4 * dblLeftP)
+		dblPowerEarly = dblLeftP;
+	else
+		dblPowerEarly = sqrtf(dblLeftP * dblRightP);
+
+	dblSNdBPwrEarly = 10 * log10f(dblPowerEarly / dblAvgNoisePerBin);
+
+	// End of Early leader detect test code 
+  
+	if (dblSNdBPwr > (4 + Squelch) && dblSNdBPwrEarly > Squelch && (dblAvgNoisePerBin > 100.0f || dblPriorFineOffset != 1000.0f)) // making early threshold = lower (after 3 dB compensation for bandwidth)
+	{
+//		Debugprintf("Fine Search S:N= %f dB, Early S:N= %f dblAvgNoisePerBin %f ", dblSNdBPwr, dblSNdBPwrEarly, dblAvgNoisePerBin);
+
+		// Calculate the interpolation based on the left of the two tones
+
+		dblBinInterpLeft = SpectralPeakLocator(dblLeftR[0], dblLeftI[0], dblLeftR[1], dblLeftI[1], dblLeftR[2], dblLeftI[2], &dblLeftMag, "Hamming");
+		
+		// And the right of the two tones
+
+		dblBinInterpRight = SpectralPeakLocator(dblRightR[0], dblRightI[0], dblRightR[1], dblRightI[1], dblRightR[2], dblRightI[2], &dblRightMag, "Hamming");
+
+		// Weight the interpolated values in proportion to their magnitudes
+		
+		dblBinInterpLeft = dblBinInterpLeft * dblLeftMag / (dblLeftMag + dblRightMag);
+		dblBinInterpRight = dblBinInterpRight * dblRightMag / (dblLeftMag + dblRightMag);
+	
+#ifdef ARMLINUX
+		{
+			int x = round(dblBinInterpLeft);	// odd, but PI doesnt print floats properly 
+			int y = round(dblBinInterpRight);
+		
+//			Debugprintf(" SPL Left= %d  SPL Right= %d Offset %f, LeftMag %f RightMag %f", x, y, *dblOffsetHz, dblLeftMag, dblRightMag);
+		}
+#else
+//		Debugprintf(" SPL Left= %f  SPL Right= %f, Offset %f, LeftMag %f RightMag %f",
+//			dblBinInterpLeft, dblBinInterpRight, *dblOffsetHz, dblLeftMag, dblRightMag);
+#endif    
+		if (fabsf(dblBinInterpLeft + dblBinInterpRight) < 1.0) // sanity check for the interpolators 
+		{
+			if (dblBinInterpLeft + dblBinInterpRight > 0)  // consider different bounding below
+				*dblOffsetHz = dblTrialOffset + min((dblBinInterpLeft + dblBinInterpRight) * 10.0f, 3); // average left and right, adjustment bounded to +/- 3Hz max
+			else
+				*dblOffsetHz = dblTrialOffset + max((dblBinInterpLeft + dblBinInterpRight) * 10.0f, -3);
+
+			// Note the addition of requiring a second detect with small offset dramatically reduces false triggering even at Squelch values of 3
+			// The following demonstrated good detection down to -10 dB S:N with squelch = 3 and minimal false triggering. 
+			// Added rev 0.8.2.2 11/6/2016 RM
+
+			if (abs(dblPriorFineOffset - *dblOffsetHz) < 2.9f)
+			{
+				Debugprintf("Prior-Offset= %f", (dblPriorFineOffset - *dblOffsetHz));
+                   		
+				// Capture power for debugging ...note: convert to 3 KHz noise bandwidth from 25Hz or 12.Hz for reporting consistancy.
+	
+				Debugprintf("Ldr; S:N(3KHz) Early= %f dB, Full %f dB, Offset= %f Hz: ", dblSNdBPwrEarly - 20.8f, dblSNdBPwr  - 24.77f, *dblOffsetHz);
+				dttStartRmtLeaderMeasure = Now;
+
+
+				if (AccumulateStats)
+				{              
+					dblLeaderSNAvg = ((dblLeaderSNAvg * intLeaderDetects) + dblSNdBPwr) / (1 + intLeaderDetects); 
+					intLeaderDetects++;
+				}
+
+				dblNCOFreq = 3000 + *dblOffsetHz; // Set the NCO frequency and phase inc for mixing         
+				dblNCOPhaseInc = dbl2Pi * dblNCOFreq / 12000;
+				dttLastLeaderDetect = dttStartRmtLeaderMeasure = Now;
+    
+				State = AcquireSymbolSync;
+				*intSN = dblSNdBPwr - 24.77; // 23.8dB accomodates ratio of 3Kz BW:10 Hz BW (10Log 3000/10 = 24.77)
+
+				// don't advance the pointer here
+              
+				dblPriorFineOffset = 1000.0f;
+				return TRUE;
+			}
+			else
+				dblPriorFineOffset = *dblOffsetHz;
+
+			// always use 1 symbol inc when looking for next minimal offset
+		}
+	}
+	return FALSE;
+}	
+
+
+
+
+BOOL SearchFor2ToneLeader4(short * intNewSamples, int Length, float * dblOffsetHz, int * intSN)
+{
+    // This version uses 12.5 Hz bin spacing. Blackman window on Goertzel, and simple spectral peak interpolator optimized for Blackman
+    // Blackman selected for maximum rejection (about 60 dB) of the other two-tone bin 50 Hz (4 x 12.5 Hz bins) away. 
+	// search through the samples looking for the telltail 50 baud 2 tone pattern (nominal tones 1475, 1525 Hz)
+	// Find the offset in Hz (due to missmatch in transmitter - receiver tuning
+	// Finds the S:N (power ratio of the tones 1475 and 1525 ratioed to "noise" averaged from bins at 1425, 1450, 1550, and 1575Hz)
+ 
+	float dblGoertzelReal[45];
+	float dblGoertzelImag[45];
+	float dblMag[45];
+	float dblPower, dblPwrSNdB, dblLeftMag, dblRightMag, dblAvgNoisePerBinAtPeak;
+	float dblRealL, dblRealR, dblImagL, dblImagR;
+	float dblMaxPeak = 0.0, dblMaxPeakSN = 0.0, dblMagWindow;
+	int intInterpCnt = 0;  // the count 0 to 3 of the interpolations that were < +/- .5 bin
+	int  intIatMaxPeak = 0;
+	float dblAlpha = 0.3f;  // Works well possibly some room for optimization Changed from .5 to .3 on Rev 0.1.5.3
+	float dblInterpretThreshold= 1.0f; // Good results June 6, 2014 (was .4)  ' Works well possibly some room for optimization
+	float dblFilteredMaxPeak = 0;
+	int intStartBin, intStopBin;
+	int i;
+	int Ptr = 0;
+	float dblAvgNoisePerBin, dblBinAdj1475, dblBinAdj1525, dblCoarseOffset = 1000;
+	float dblOffset = 1000; //  initialize to impossible value
+
+	// This should allow tunning from nominal bins at 1425Hz to 1575Hz +/- 200 Hz tuning range
+
+	if ((Length) < 1200)
+		return FALSE;		// ensure there are at least 1200 samples (5 symbols of 240 samples)
+
+//	if ((Now - dttLastGoodFrameTypeDecode > 20000) && TuningRange > 0)
+//	{
+//		// this is the full search over the full tuning range selected.  Uses more CPU time and with possibly larger deviation once connected. 
+		
+	intStartBin = ((200 - TuningRange) / 12.5);
+	intStopBin = 44 - intStartBin;
+
+	dblMaxPeak = 0;
+	dblMagWindow = 0;
+	dblMaxPeakSN = -100;
+    
+	// Generate the Power magnitudes for up to 56 10 Hz bins (a function of MCB.TuningRange) 
+  
+	for (i = intStartBin; i <= intStopBin; i++)
+	{
+		// note Blackman window reduced end effect but looses sensitivity so sticking with Hann window
+		// Test of 4/22/2018 indicated accurate Hann window (960) gives about 1-2 dB more sensitivity than Blackman window
+		
+		GoertzelRealImagHann960(intNewSamples, Ptr, 960, i + 98, &dblGoertzelReal[i], &dblGoertzelImag[i]);
+		dblMag[i] = powf(dblGoertzelReal[i], 2) + powf(dblGoertzelImag[i], 2); // dblMag(i) in units of power (V^2)
+		dblMagWindow += dblMag[i];
+	}
+
+	// Search the bins to locate the max S:N in the two tone signal/avg noise.  
+
+ 	for (i = intStartBin + 4; i <= intStopBin - 8; i++)	// ' +/- MCB.TuningRange from nominal 
+	{
+		dblPower = sqrtf(dblMag[i] * dblMag[i + 4]); // using the product to minimize sensitivity to one strong carrier vs the two tone
+		// sqrt converts back to units of power from Power ^2
+		// don't use center 7 noise bins as too easily corrupted by adjacent two-tone carriers
+       
+		dblAvgNoisePerBin = (dblMagWindow - (dblMag[i - 1] + dblMag[i] + dblMag[i + 1] + dblMag[i + 2] + dblMag[i + 3] + dblMag[i + 4] + dblMag[i + 5])) / (intStopBin - (intStartBin + 7));
+		dblMaxPeak = dblPower / dblAvgNoisePerBin;
+
+		if (dblMaxPeak > dblMaxPeakSN)
+		{
+			dblMaxPeakSN = dblMaxPeak;
+			dblAvgNoisePerBinAtPeak = max(dblAvgNoisePerBin, 1000.0f);
+			intIatMaxPeak = i + 98;
+		}
+	}
+		
+	dblMaxPeakSN = (dblMag[intIatMaxPeak - 98] + dblMag[intIatMaxPeak - 94]) / dblAvgNoisePerBinAtPeak;
+	dblPwrSNdB = 10.0f * log10f(dblMaxPeakSN);
+ 
+	// Check aquelch
+
+	if ((dblPwrSNdB > (3 * Squelch)) && dblPwrSNPower_dBPrior > (3 * Squelch))
+	{
+
+		// Do the interpolation based on the two carriers at nominal 1475 and 1525Hz
+
+		if (((intIatMaxPeak - 99) >= intStartBin) && ((intIatMaxPeak - 103) <= intStopBin)) // check to ensure no index errors
+		{
+			// Interpolate the adjacent bins using QuinnSpectralPeakLocator
+
+			dblBinAdj1475 = SpectralPeakLocator(
+				dblGoertzelReal[intIatMaxPeak - 99], dblGoertzelImag[intIatMaxPeak - 99],
+				dblGoertzelReal[intIatMaxPeak - 98], dblGoertzelImag[intIatMaxPeak - 98], 
+				dblGoertzelReal[intIatMaxPeak - 97], dblGoertzelImag[intIatMaxPeak - 97], &dblLeftMag, "Hann");
+
+			dblBinAdj1525 = SpectralPeakLocator(
+				dblGoertzelReal[intIatMaxPeak - 95], dblGoertzelImag[intIatMaxPeak - 95], 
+				dblGoertzelReal[intIatMaxPeak - 94], dblGoertzelImag[intIatMaxPeak - 94], 
+				dblGoertzelReal[intIatMaxPeak - 93], dblGoertzelImag[intIatMaxPeak - 93], &dblRightMag, "Hann");
+
+			// Weight the offset calculation by the magnitude of the dblLeftMag and dblRightMag carriers 
+			
+			dblOffset = 12.5 * (intIatMaxPeak + dblBinAdj1475 * dblLeftMag / (dblLeftMag + dblRightMag) + dblBinAdj1525 * dblRightMag / (dblLeftMag + dblRightMag) - 118);  // compute the Coarse tuning offset in Hz
+				
+			if (fabsf(dblOffset) > (TuningRange + 7))		// Was 7 caused tuning problems
+			{
+				dblPwrSNPower_dBPrior = dblPwrSNdB;
+				return False;
+			}
+			
+			// recompute the S:N based on the interpolated bins and average with computation 1 and 2 symbols in the future 
+			//  Use of Hann window increases sensitivity slightly (1-2 dB)
+
+			GoertzelRealImagHann120(intNewSamples, 0, 960, intIatMaxPeak + dblOffset / 12.5, &dblRealL, &dblImagL);
+			GoertzelRealImagHann120(intNewSamples, 0, 960, intIatMaxPeak + 4 + dblOffset / 12.5, &dblRealR, &dblImagR);
+			dblMaxPeakSN = (powf(dblRealL, 2) + powf(dblImagL, 2) + powf(dblRealR, 2) + powf(dblImagR, 2)) / dblAvgNoisePerBinAtPeak;
+			// now compute for 120 samples later
+			GoertzelRealImagHann120(intNewSamples, 120, 960, intIatMaxPeak + dblOffset / 12.5, &dblRealL, &dblImagL);
+			GoertzelRealImagHann120(intNewSamples, 120, 960, intIatMaxPeak + 4 + dblOffset / 12.5, &dblRealR, &dblImagR);
+			dblMaxPeakSN += (powf(dblRealL, 2) + powf(dblImagL, 2) + powf(dblRealR, 2) + powf(dblImagR, 2)) / dblAvgNoisePerBinAtPeak;
+			//  and a third 240 samples later
+			GoertzelRealImagHann120(intNewSamples, 240, 960, intIatMaxPeak + dblOffset / 12.5, &dblRealL, &dblImagL);
+			GoertzelRealImagHann120(intNewSamples, 240, 960, intIatMaxPeak + 4 + dblOffset / 12.5, &dblRealR, &dblImagR);
+			dblMaxPeakSN += (powf(dblRealL, 2) + powf(dblImagL, 2) + powf(dblRealR, 2) + powf(dblImagR, 2)) / dblAvgNoisePerBinAtPeak;
+ 
+			dblMaxPeakSN = dblMaxPeakSN / 3;  // average the dblMaxPeakSN over the three calculations
+	// ???? Calc Twice ????
+ 			dblMaxPeakSN = (powf(dblRealL, 2) + powf(dblImagL, 2) + powf(dblRealR, 2) + powf(dblImagR, 2)) / dblAvgNoisePerBinAtPeak;
+      
+			
+			dblPwrSNdB = 10 * log10f(dblMaxPeakSN);
+			
+			if (dblPwrSNdB > 3 * Squelch)	// This average power now includes two samples from symbols +120 and + 240 samples 
+			{
+				//strDecodeCapture = "Ldr; S:N(3KHz) Prior=" & Format(dblPwrSNPower_dBPrior, "#.0") & "dB, Current=" & Format(dblPwrSNdB, "#.0") & "dB, Offset=" & Format(dblOffset, "##0.00") & "Hz "
+  				Debugprintf("Ldr; S:N(3KHz) Avg= %f dB, Offset== %f Hz", dblPwrSNdB, dblOffset);
+				dttStartRmtLeaderMeasure = Now;
+				if (AccumulateStats)
+				{
+					dblLeaderSNAvg = ((dblLeaderSNAvg * intLeaderDetects) + dblPwrSNdB) / (1 + intLeaderDetects);
+					intLeaderDetects += 1;
+				}
+				*dblOffsetHz = dblOffset;
+				dblNCOFreq = 3000 + *dblOffsetHz;	// Set the NCO frequency and phase inc for mixing 
+				dblNCOPhaseInc = dbl2Pi * dblNCOFreq / 12000;
+				// don't advance the pointer here
+				State = AcquireSymbolSync;
+				dttLastLeaderDetect = Now;
+				dblPhaseDiff1_2Avg = 10; //  initialize to 10 to cause initialization of exponential averager in AcquireFrameSyncRSBAvg 
+				*intSN = round(dblPwrSNdB - 20.8); // 20.8dB accomodates ratio of 3Kz BW: (effective Blackman Window bandwidth  of ~25 Hz) 
+				return True;
+			}
+			else
+			{
+				return False;
+			}
+		}
+	}
+	
+	dblPwrSNPower_dBPrior = dblPwrSNdB;
+
+	return FALSE;
+}	
+
+
+
+
+//	Function to look at the 2 tone leader and establishes the Symbol framing using envelope search and minimal phase error. 
+
+BOOL Acquire2ToneLeaderSymbolFraming()
+{
+	float dblCarPh;
+	float dblReal, dblImag;
+	int intLocalPtr = intMFSReadPtr;  // try advancing one symbol to minimize initial startup errors 
+	float dblAbsPhErr;
+	float dblMinAbsPhErr = 5000;	 // initialize to an excessive value
+	int intIatMinErr;
+	float dblPhaseAtMinErr;
+	int intAbsPeak = 0;
+	int intJatPeak = 0;
+	int i;
+
+	// Use Phase of 1500 Hz leader  to establish symbol framing. Nominal phase is 0 or 180 degrees
+
+	if ((intFilteredMixedSamplesLength - intLocalPtr) < 960)
+		return FALSE;			// not enough
+	
+	intLocalPtr = intMFSReadPtr + EnvelopeCorrelatorNew(); // should position the pointer at the symbol boundary
+
+	if (intLocalPtr < intMFSReadPtr)
+		return False; // use negative value of EnvelopeCorrelator to indicate insufficient correlation. 
+
+
+	// Check 2 samples either side of the intLocalPtr for minimum phase error.(closest to Pi or -Pi) 
+	// Could be as much as .4 Radians (~70 degrees) depending on sampling positions.
+   
+	for (i = -2; i <= 2; i++)	 // 0 To 0 '  -2 To 2 ' for just 5 samples
+	{
+		// using the full symbol seemed to work best on weak Signals (0 to -5 dB S/N) June 15, 2015
+	
+		GoertzelRealImagHann120(intFilteredMixedSamples, intLocalPtr + i, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning 
+		dblCarPh = atan2f(dblImag, dblReal);
+		dblAbsPhErr = fabsf(dblCarPh - (ceil(dblCarPh / M_PI) * M_PI));
+		if (dblAbsPhErr < dblMinAbsPhErr)
+		{
+			dblMinAbsPhErr = dblAbsPhErr;
+			intIatMinErr = i;
+			dblPhaseAtMinErr = dblCarPh;
+		}     
+	}
+
+	intMFSReadPtr = intLocalPtr + intIatMinErr;
+	Debugprintf("[Acquire2ToneLeaderSymbolFraming] intIatMinError= %d, Leader Length %d mS", intIatMinErr, Now - dttLastLeaderDetect);
+	State = AcquireFrameSync;
+
+	if (AccumulateStats)
+		intLeaderSyncs++;
+
+	//Debug.WriteLine("   [Acquire2ToneLeaderSymbolSync] iAtMinError = " & intIatMinErr.ToString & "   Ptr = " & intMFSReadPtr.ToString & "  MinAbsPhErr = " & Format(dblMinAbsPhErr, "#.00"))
+	//Debug.WriteLine("   [Acquire2ToneLeaderSymbolSync]      Ph1500 @ MinErr = " & Format(dblPhaseAtMinErr, "#.000"))
+        
+	//strDecodeCapture &= "Framing; iAtMinErr=" & intIatMinErr.ToString & ", Ptr=" & intMFSReadPtr.ToString & ", MinAbsPhErr=" & Format(dblMinAbsPhErr, "#.00") & ": "
+     intPhaseError = 0;
+	return TRUE;
+}
+
+// Function to establish symbol sync 
+int EnvelopeCorrelator()
+{
+	// Compute the two symbol correlation with the Two tone leader template.
+	// slide the correlation one sample and repeat up to 240 steps 
+	// keep the point of maximum or minimum correlation...and use this to identify the the symbol start. 
+
+	float dblCorMax  = -1000000.0f;		//  Preset to excessive values
+	float dblCorMin  = 1000000.0f;
+	int intJatMax = 0, intJatMin = 0;
+	float dblCorSum, dblCorProduct, dblCorMaxProduct = 0.0;
+	int i,j;
+	short int75HzFiltered[720];
+
+	if (intFilteredMixedSamplesLength < intMFSReadPtr + 720)
+		return -1;
+	
+	Filter75Hz(int75HzFiltered, TRUE, 720); // This filter appears to help reduce avg decode distance (10 frames) by about 14%-19% at WGN-5 May 3, 2015
+	
+	for (j = 0; j < 360; j++)		// Over 1.5 symbols
+	{
+		dblCorSum = 0;
+		for (i = 0; i < 240; i++)	 // over 1 50 baud symbol (may be able to reduce to 1 symbol)
+		{
+			dblCorProduct = int50BaudTwoToneLeaderTemplate[i] * int75HzFiltered[120 + i + j]; // note 120 accomdates filter delay of 120 samples
+			dblCorSum += dblCorProduct;
+            if (fabsf(dblCorProduct) > dblCorMaxProduct)
+				dblCorMaxProduct = fabsf(dblCorProduct);
+		}
+
+		if (fabsf(dblCorSum) > dblCorMax)
+		{
+			dblCorMax = fabsf(dblCorSum);
+			intJatMax = j;
+		}		
+	}
+	
+	if (AccumulateStats)
+	{
+		dblAvgCorMaxToMaxProduct = (dblAvgCorMaxToMaxProduct * intEnvelopeCors + (dblCorMax / dblCorMaxProduct)) / (intEnvelopeCors + 1);
+		intEnvelopeCors++;
+	}
+ 
+//	if (dblCorMax > 40 * dblCorMaxProduct)
+	{
+		Debugprintf("EnvelopeCorrelator CorMax:MaxProd= %f  J= %d", dblCorMax / dblCorMaxProduct, intJatMax);
+		return intJatMax;
+	}
+//	else
+//		return -1;
+}
+ 
+
+int EnvelopeCorrelatorNew()
+{
+	// Compute the two symbol correlation with the Two tone leader template.
+	// slide the correlation one sample and repeat up to 240 steps 
+	// keep the point of maximum or minimum correlation...and use this to identify the the symbol start. 
+
+	float dblCorMax  = -1000000.0f;		//  Preset to excessive values
+	float dblCorMin  = 1000000.0f;
+	int intJatMax = 0, intJatMin = 0;
+	float dblCorSum, dblCorProduct, dblCorMaxProduct = 0.0;
+	int i,j;
+	short int75HzFiltered[960];
+
+	if (intFilteredMixedSamplesLength < intMFSReadPtr + 960)
+		return -1;
+	
+	Filter75Hz(int75HzFiltered, TRUE, 960); // This filter appears to help reduce avg decode distance (10 frames) by about 14%-19% at WGN-5 May 3, 2015
+	
+	for (j = 360; j < 600; j++)		// Over 2 symbols
+	{
+		dblCorSum = 0;
+		for (i = 0; i < 240; i++)	 // over 1 50 baud symbol (may be able to reduce to 1 symbol)
+		{
+			dblCorProduct = int50BaudTwoToneLeaderTemplate[i] * int75HzFiltered[120 + i + j]; // note 120 accomdates filter delay of 120 samples
+			dblCorSum += dblCorProduct;
+            if (fabsf(dblCorProduct) > dblCorMaxProduct)
+				dblCorMaxProduct = fabsf(dblCorProduct);
+		}
+
+		if (fabsf(dblCorSum) > dblCorMax)
+		{
+			dblCorMax = fabsf(dblCorSum);
+			intJatMax = j;
+		}		
+	}
+	
+	if (AccumulateStats)
+	{
+		dblAvgCorMaxToMaxProduct = (dblAvgCorMaxToMaxProduct * intEnvelopeCors + (dblCorMax / dblCorMaxProduct)) / (intEnvelopeCors + 1);
+		intEnvelopeCors++;
+	}
+ 
+	if (dblCorMax > 40 * dblCorMaxProduct)
+	{
+		Debugprintf("EnvelopeCorrelator CorMax:MaxProd= %f  J= %d", dblCorMax / dblCorMaxProduct, intJatMax);
+		return intJatMax;
+	}
+		
+	Debugprintf("EnvelopeCorrelator failed %d",  dblCorMax / dblCorMaxProduct);
+	
+	return -1;
+}
+ 
+
+//	Function to acquire the Frame Sync for all Frames 
+
+BOOL AcquireFrameSyncRSB()
+{
+	// Two improvements could be incorporated into this function:
+	//    1) Provide symbol tracking until the frame sync is found (small corrections should be less than 1 sample per 4 symbols ~2000 ppm)
+	//    2) Ability to more accurately locate the symbol center (could be handled by symbol tracking 1) above. 
+
+	//  This is for acquiring FSKFrameSync After Mixing Tones Mirrored around 1500 Hz. e.g. Reversed Sideband
+	//  Frequency offset should be near 0 (normally within +/- 1 Hz)  
+	//  Locate the sync Symbol which has no phase change from the prior symbol (BPSK leader @ 1500 Hz)   
+
+	int intLocalPtr = intMFSReadPtr;
+	int intAvailableSymbols = (intFilteredMixedSamplesLength - intMFSReadPtr) / 240;
+	float dblPhaseSym1;	//' phase of the first symbol 
+	float dblPhaseSym2;	//' phase of the second symbol 
+	float dblPhaseSym3;	//' phase of the third symbol
+
+	float dblReal, dblImag;
+	float dblPhaseDiff12, dblPhaseDiff23;
+
+	int i;
+
+	if (intAvailableSymbols < 3)
+		return FALSE;				// must have at least 360 samples to search
+ 
+	// Calculate the Phase for the First symbol 
+	
+	GoertzelRealImag(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+	dblPhaseSym1 = atan2f(dblImag, dblReal);
+	intLocalPtr += 240;	// advance one symbol
+	GoertzelRealImag(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+	dblPhaseSym2 = atan2f(dblImag, dblReal);
+	intLocalPtr += 240;		// advance one symbol
+
+	for (i = 0; i <=  intAvailableSymbols - 3; i++)
+	{
+		// Compute the phase of the next symbol  
+	
+		GoertzelRealImag(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+		dblPhaseSym3 = atan2f(dblImag, dblReal);
+		// Compute the phase differences between sym1-sym2, sym2-sym3
+		dblPhaseDiff12 = dblPhaseSym1 - dblPhaseSym2;
+		if (dblPhaseDiff12 > M_PI)		// bound phase diff to +/- Pi
+			dblPhaseDiff12 -= dbl2Pi;
+		else if (dblPhaseDiff12 < -M_PI)
+			dblPhaseDiff12 += dbl2Pi;
+
+		dblPhaseDiff23 = dblPhaseSym2 - dblPhaseSym3;
+		if (dblPhaseDiff23 > M_PI)		//  bound phase diff to +/- Pi
+			dblPhaseDiff23 -= dbl2Pi;
+		else if (dblPhaseDiff23 < -M_PI)
+			dblPhaseDiff23 += dbl2Pi;
+
+		if (fabsf(dblPhaseDiff12) > 0.6667f * M_PI && fabsf(dblPhaseDiff23) < 0.3333f * M_PI)  // Tighten the margin to 60 degrees
+		{
+//			intPSKRefPhase = (short)dblPhaseSym3 * 1000;
+
+			intLeaderRcvdMs = (int)ceil((intLocalPtr - 30) / 12);	 // 30 is to accomodate offset of inital pointer for filter length. 
+			intMFSReadPtr = intLocalPtr + 240;		 // Position read pointer to start of the symbol following reference symbol 
+		
+			if (AccumulateStats)
+				intFrameSyncs += 1;		 // accumulate tuning stats
+	
+			//strDecodeCapture &= "Sync; Phase1>2=" & Format(dblPhaseDiff12, "0.00") & " Phase2>3=" & Format(dblPhaseDiff23, "0.00") & ": "
+	
+			return TRUE;	 // pointer is pointing to first 4FSK data symbol. (first symbol of frame type)
+		}
+		else
+		{
+			dblPhaseSym1 = dblPhaseSym2;           
+			dblPhaseSym2 = dblPhaseSym3;
+			intLocalPtr += 240;			// advance one symbol 
+		}
+	}
+
+	intMFSReadPtr = intLocalPtr - 480;		 // back up 2 symbols for next attempt (Current Sym2 will become new Sym1)
+	return FALSE;	
+}
+
+
+
+// Function to acquire the Frame Sync for all Frames using exponential averaging 
+int AcquireFrameSyncRSBAvg()
+{
+	//	This new routine uses exponential averaging on the ptr reference leader phases to minimize noise contribution
+	//	Needs optimization of filter values and decision thresholds with actual simulator at low S:N and multipath. 
+
+	//	This is for acquiring FSKFrameSync After Mixing Tones Mirrored around 1500 Hz. e.g. Reversed Sideband
+	//	Frequency offset should be near 0 (normally within +/- 1 Hz)  
+	//	Locate the sync Symbol which has no phase change from the prior symbol (50 baud BPSK leader @ 1500 Hz)   
+
+	int intLocalPtr = intMFSReadPtr;
+	int intAvailableSymbols = (intFilteredMixedSamplesLength - intMFSReadPtr) / 240;
+	float dblPhaseSym1;	//' phase of the first symbol 
+	float dblPhaseSym2;	//' phase of the second symbol 
+	float dblPhaseSym3;	//' phase of the third symbol
+
+	float dblReal, dblImag;
+	float dblPhaseDiff12, dblPhaseDiff23;
+
+	int i;
+
+	if (intAvailableSymbols < 3)
+		return FALSE;				// must have at least 360 samples to search
+
+	// Calculate the Phase for the First symbol 
+	
+	GoertzelRealImagHann120(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+	dblPhaseSym1 = atan2f(dblImag, dblReal);
+	intLocalPtr += 240;	// advance one symbol
+	GoertzelRealImagHann120(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+	dblPhaseSym2 = atan2f(dblImag, dblReal);
+	intLocalPtr += 240;		// advance one symbol
+
+ 	for (i = 0; i <=  intAvailableSymbols - 3; i++)
+	{
+ 		// Compute the phase of the next symbol  
+	
+		GoertzelRealImagHann120(intFilteredMixedSamples, intLocalPtr, 240, 30, &dblReal, &dblImag); // Carrier at 1500 Hz nominal Positioning with no cyclic prefix
+		dblPhaseSym3 = atan2f(dblImag, dblReal);
+		// Compute the phase differences between sym1-sym2, sym2-sym3
+		dblPhaseDiff12 = dblPhaseSym1 - dblPhaseSym2;
+		if (dblPhaseDiff12 > M_PI)		// bound phase diff to +/- Pi
+			dblPhaseDiff12 -= dbl2Pi;
+		else if (dblPhaseDiff12 < -M_PI)
+			dblPhaseDiff12 += dbl2Pi;
+
+		if (dblPhaseDiff1_2Avg > 9)
+			dblPhaseDiff1_2Avg = fabsf(dblPhaseDiff12); // initialize the difference average after a prior detect
+		else
+			dblPhaseDiff1_2Avg = 0.75 * dblPhaseDiff1_2Avg + 0.25 * fabsf(dblPhaseDiff12);  // exponential average 
+    
+ 		
+		dblPhaseDiff23 = dblPhaseSym2 - dblPhaseSym3;
+		if (dblPhaseDiff23 > M_PI)		//  bound phase diff to +/- Pi
+			dblPhaseDiff23 -= dbl2Pi;
+		else if (dblPhaseDiff23 < -M_PI)
+			dblPhaseDiff23 += dbl2Pi;
+			
+             
+
+		if (fabsf(dblPhaseDiff1_2Avg ) > (0.83333 * M_PI) && fabsf(dblPhaseDiff23) < (0.25f * M_PI))  // Margin ~30 deg and 45 degrees
+		{
+			intLeaderRcvdMs = (int)ceil((intLocalPtr - 30) / 12);	 // 30 is to accomodate offset of inital pointer for filter length. 
+			intMFSReadPtr = intLocalPtr + 240;		 // Position read pointer to start of the symbol following reference symbol 
+		
+			if (AccumulateStats)
+				intFrameSyncs += 1;		 // accumulate tuning stats
+	
+			//strDecodeCapture &= "Sync; Phase1>2=" & Format(dblPhaseDiff12, "0.00") & " Phase2>3=" & Format(dblPhaseDiff23, "0.00") & ": "
+//			dttLastLeaderSync = Now;
+			dblPwrSNPower_dBPrior = -1000;  // Reset the prior Leader power to small value to insure minimum of two symbol passes on next leader detect. 
+			return TRUE;	 // pointer is pointing to first 4FSK data symbol. (first symbol of frame type)
+		}
+		//	The following looks for phase errors (which should nomimally be Pi or 180 deg) and counts errors 
+		//	abandoning search on the second error, Then advancing the main intMFSReadPtr one symbol (240 samples) and returning to SearchingForLeader state.
+		    
+		if (fabsf(dblPhaseDiff1_2Avg) < (0.6667 * M_PI) || fabsf(dblPhaseDiff23) < (0.6667 * M_PI)) // Margin 60 deg 
+		{
+			intPhaseError += 1;
+			dblPhaseSym1 = dblPhaseSym2;           
+			dblPhaseSym2 = dblPhaseSym3;
+			intLocalPtr += 240;			// advance one symbol 
+	 
+//			if (intPhaseError > 1) // This bailout mechanism for sync failure is superior and doesn't make any assumptions about leader length
+//			{
+//				intMFSReadPtr += 240; // advance the MFSReadPointer one symbol and try to search for leader again. 
+//				State = SearchingForLeader;
+//				return False;
+//			}
+		}
+		else
+		{
+			//	keep searching available samples
+
+			dblPhaseSym1 = dblPhaseSym2;           
+			dblPhaseSym2 = dblPhaseSym3;
+			intLocalPtr += 240;			// advance one symbol 
+		}
+	}
+ 
+	intMFSReadPtr = intLocalPtr - 480;		 // back up 2 symbols for next attempt (Current Sym2 will become new Sym1)
+	return FALSE;
+
+}
+//	 Function to Demod FrameType4FSK
+
+BOOL DemodFrameType4FSK(int intPtr, short * intSamples, int * intToneMags)
+{
+	float dblReal, dblImag;
+	int i;
+
+	if ((intFilteredMixedSamplesLength - intPtr) < 1920) // 8 symbols
+		return FALSE;
+
+	intToneMagsLength = 8;
+
+	for (i = 0; i < 8; i++)
+	{
+		GoertzelRealImagHann120(intSamples, intPtr, 240, 1350 / 50.0f, &dblReal, &dblImag);
+		intToneMags[4 * i] = (int)powf(dblReal, 2) + powf(dblImag, 2);
+		GoertzelRealImagHann120(intSamples, intPtr, 240, 1450 / 50.0f, &dblReal, &dblImag);
+		intToneMags[1 + 4 * i] = (int)powf(dblReal, 2) + powf(dblImag, 2);
+		GoertzelRealImagHann120(intSamples, intPtr, 240, 1550 / 50.0f, &dblReal, &dblImag);
+		intToneMags[2 + 4 * i] = (int)powf(dblReal, 2) + powf(dblImag, 2);
+		GoertzelRealImagHann120(intSamples, intPtr, 240, 1650 / 50.0f, &dblReal, &dblImag);
+		intToneMags[3 + 4 * i] = (int)powf(dblReal, 2) + powf(dblImag, 2);
+		intPtr += 240;
+	}
+	
+	return TRUE;
+}
+
+// Function to compute the "distance" from a specific bytFrame Xored by bytID using 1 symbol parity 
+
+float ComputeDecodeDistance(int intTonePtr, int * intToneMags, UCHAR bytFrameType, UCHAR bytID)
+{
+	// intTonePtr is the offset into the Frame type symbols. 0 for first Frame byte 16 = (4 x 4) for second frame byte 
+
+	float dblDistance = 0;
+	int int4ToneSum;
+	int intToneIndex;
+	UCHAR bytMask = 0x30;
+	int j, k;
+
+	for (j = 0; j <= 3; j++)		//  over 4 symbols
+	{
+		int4ToneSum = 0;
+		for (k = 0; k <=3; k++)
+		{
+			int4ToneSum += intToneMags[intTonePtr + (4 * j) + k];
+		}
+		if (int4ToneSum == 0)
+			int4ToneSum = 1;		//  protects against possible overflow
+		if (j < 3)
+		    intToneIndex = ((bytFrameType ^ bytID) & bytMask) >> (4 - 2 * j);
+		else
+			intToneIndex = ComputeTypeParity(bytFrameType ^ bytID);
+
+		dblDistance += 1.0f - ((1.0f * intToneMags[intTonePtr + (4 * j) + (3 - intToneIndex)]) / (1.0f * int4ToneSum));
+		bytMask = bytMask >> 2;
+	}
+	
+	dblDistance = dblDistance / 4;		// normalize back to 0 to 1 range 
+	return dblDistance;
+}
+
+//	A function to check the parity symbol used in the frame type decoding
+
+BOOL CheckTypeParity(UCHAR bytFrameType)
+{
+	// Returns True if Parity OK
+
+	UCHAR bytMask = 0x30;	 // Look at only 6 bits of data (values only 0 to 63)
+	UCHAR bytParitySum = 3;
+	UCHAR bytSym = 0;
+	int k;
+
+	for (k = 0; k < 3; k++)
+	{
+		bytSym = (bytMask & bytFrameType) >> (2 * (2 - k));
+		bytParitySum = bytParitySum ^ bytSym;
+		bytMask = bytMask >> 2;
+	}
+
+	return bytParitySum == ((bytFrameType & 0x0C0) >> 6);
+ }
+
+
+// Function to check Parity of frame type bytes
+
+UCHAR GetFrameTypeByte(int intTonePtr, int * intToneMags)
+{
+	// Demodulate the byte pointed to postion of tone PTR and return it
+	 
+	UCHAR bytData = 0, bytParity, bytSym;
+    int intIndex = intTonePtr;
+	int j;
+
+	for (j = 0; j < 4; j++)
+	{
+		// for each 4FSK symbol (2 bits) in a byte
+
+		if (intToneMags[intIndex] > intToneMags[intIndex + 1] && intToneMags[intIndex] > intToneMags[intIndex + 2] && intToneMags[intIndex] > intToneMags[intIndex + 3])
+			bytSym = 3;
+		else if (intToneMags[intIndex + 1] > intToneMags[intIndex] && intToneMags[intIndex + 1] > intToneMags[intIndex + 2] && intToneMags[intIndex + 1] > intToneMags[intIndex + 3])
+			bytSym = 2;
+		else if (intToneMags[intIndex + 2] > intToneMags[intIndex] && intToneMags[intIndex + 2] > intToneMags[intIndex + 1] && intToneMags[intIndex + 2] > intToneMags[intIndex + 3])
+			bytSym = 1;
+		else
+			bytSym = 0;
+
+		if (j < 3)
+			bytData = (bytData << 2) + bytSym;
+		else
+			bytParity = bytSym << 6;
+		
+		intIndex += 4;
+	}
+	return bytData | bytParity;
+} 
+
+
+BOOL CheckFrameTypeParity(int intTonePtr, int * intToneMags)
+{
+	// Demodulate the byte pointed to postion of tone PTR and check Parity Return True if OK
+
+	UCHAR bytData = GetFrameTypeByte(intTonePtr, intToneMags);
+
+	return CheckTypeParity(bytData);
+} 
+//	Function to compute the frame type by selecting the minimal distance from all valid frame types.
+
+int MinimalDistanceFrameType(int * intToneMags, UCHAR bytSessionID)
+{
+	float dblMinDistance1 = 5; // minimal distance for the first byte initialize to large value
+	float dblMinDistance2 = 5; // minimal distance for the second byte initialize to large value
+	float dblMinDistance3 = 5; // minimal distance for the second byte under exceptional cases initialize to large value
+	int intIatMinDistance1, intIatMinDistance2, intIatMinDistance3;
+	float dblDistance1, dblDistance2, dblDistance3;
+	int i;
+
+	strDecodeCapture[0] = 0;
+
+	if (ProtocolState == ISS)
+	{
+		bytValidFrameTypes = bytValidFrameTypesISS;
+		bytValidFrameTypesLength = bytValidFrameTypesLengthISS;
+	}
+	else
+	{
+		bytValidFrameTypes = bytValidFrameTypesALL;
+		bytValidFrameTypesLength = bytValidFrameTypesLengthALL;
+	}
+
+	// Search through all the valid frame types finding the minimal distance 
+	// This looks like a lot of computation but measured < 1 ms for 135 iterations....RM 11/1/2016
+
+	for (i = 0; i < bytValidFrameTypesLength; i++)
+	{
+		dblDistance1 = ComputeDecodeDistance(0, intToneMags, bytValidFrameTypes[i], 0);
+		dblDistance2 = ComputeDecodeDistance(16, intToneMags, bytValidFrameTypes[i], bytSessionID);
+
+		if (blnPending)
+		    dblDistance3 = ComputeDecodeDistance(16, intToneMags, bytValidFrameTypes[i], 0x3F);
+		else
+			dblDistance3 = ComputeDecodeDistance(16, intToneMags, bytValidFrameTypes[i], bytLastARQSessionID);
+
+		if (dblDistance1 < dblMinDistance1)
+		{
+			dblMinDistance1 = dblDistance1;
+			intIatMinDistance1 = bytValidFrameTypes[i];
+		}
+		if (dblDistance2 < dblMinDistance2)
+		{
+			dblMinDistance2 = dblDistance2;
+			intIatMinDistance2 = bytValidFrameTypes[i];
+		}
+		if (dblDistance3 < dblMinDistance3)
+		{
+			dblMinDistance3 = dblDistance3;
+			intIatMinDistance3 = bytValidFrameTypes[i];
+		}
+	}
+
+	Debugprintf("Frame Decode type %x %x %x Dist %.2f %.2f %.2f Sess %x pend %d conn %d lastsess %d",
+		intIatMinDistance1, intIatMinDistance2, intIatMinDistance3, 
+		dblMinDistance1, dblMinDistance2, dblMinDistance3, 
+		bytSessionID, blnPending, blnARQConnected, bytLastARQSessionID); 
+	
+	if (bytSessionID == 0x3F)		// ' we are in a FEC QSO, monitoring an ARQ session or have not yet reached the ARQ Pending or Connected status 
+	{
+		if (intIatMinDistance1 == intIatMinDistance2 && ((dblMinDistance1 < 0.3) || (dblMinDistance2 < 0.3)))
+		{
+			sprintf(strDecodeCapture, "%s MD Decode;2 ID=H%X, Type=H%X:%s, D1= %.2f, D2= %.2f",
+				 strDecodeCapture, bytSessionID, intIatMinDistance1, Name(intIatMinDistance1), dblMinDistance1, dblMinDistance2);
+			Debugprintf("[Frame Type Decode OK  ] %s", strDecodeCapture);
+			dblOffsetLastGoodDecode = dblOffsetHz;
+
+			return intIatMinDistance1;
+		}
+  
+
+		if ((dblMinDistance1 < 0.3) && CheckFrameTypeParity(0, intToneMags)  && IsDataFrame(intIatMinDistance1) )	//  this would handle the case of monitoring an ARQ connection where the SessionID is not 0x3F
+		{
+			sprintf(strDecodeCapture, "%s MD Decode;3 ID=H%X, Type=H%X:%s, D1= %.2f, D2= %.2f",
+				 strDecodeCapture, bytSessionID, intIatMinDistance1, Name(intIatMinDistance1), dblMinDistance1, dblMinDistance2);
+			Debugprintf("[Frame Type Decode OK  ] %s", strDecodeCapture);
+			
+			return intIatMinDistance1;
+		}
+
+		if ((dblMinDistance2 < 0.3) &&  CheckFrameTypeParity(16, intToneMags) && IsDataFrame(intIatMinDistance2))  // this would handle the case of monitoring an FEC transmission that failed above when the session ID is = 03F
+ 		{
+			sprintf(strDecodeCapture, "%s MD Decode;4 ID=H%X, Type=H%X:%s, D1= %.2f, D2= %.2f",
+				 strDecodeCapture, bytSessionID, intIatMinDistance1, Name(intIatMinDistance2), dblMinDistance1, dblMinDistance2);
+			Debugprintf("[Frame Type Decode OK  ] %s", strDecodeCapture);
+
+			return intIatMinDistance2;
+		}
+		return -1;		// indicates poor quality decode so  don't use
+
+	}
+
+	sprintf(strDecodeCapture, "%s MD Decode;12  Type1=H%X: Type2=H%X: , D1= %.2f, D2= %.2f",
+		strDecodeCapture, intIatMinDistance1 , intIatMinDistance2, dblMinDistance1, dblMinDistance2);
+	Debugprintf("[Frame Type Decode Fail] %s", strDecodeCapture);
+	return -1; // indicates poor quality decode so  don't use
+}
+
+
+//	Function to acquire the 4FSK frame type
+
+int Acquire4FSKFrameType()
+{
+	// intMFSReadPtr is pointing to start of first symbol of Frame Type (total of 8 4FSK symbols in frame type (2 bytes) + 1 parity symbol per byte 
+	// returns -1 if minimal distance decoding is below threshold (low likelyhood of being correct)
+	// returns -2 if insufficient samples 
+	// Else returns frame type 0-255
+
+	int NewType = 0;
+	char Offset[32];
+
+	if ((intFilteredMixedSamplesLength - intMFSReadPtr) < (240 * 8))
+		return -2;		//  Check for 8 available 4FSK Symbols 
+	
+
+	if (!DemodFrameType4FSK(intMFSReadPtr, intFilteredMixedSamples, &intToneMags[0][0]))
+	{
+		Update4FSKConstellation(&intToneMags[0][0], &intLastRcvdFrameQuality);
+		intMFSReadPtr += (240 * 8);
+		return -1;
+	}
+	
+	intRmtLeaderMeasure = (Now - dttStartRmtLeaderMeasure);
+	dttLastGoodFrameTypeDecode = Now;
+
+	// Now do check received  Tone array for testing minimum distance decoder
+
+	if (blnPending)			// If we have a pending connection (btween the IRS first decode of ConReq until it receives a ConAck from the iSS)  
+		NewType = MinimalDistanceFrameType(&intToneMags[0][0], bytPendingSessionID);		 // The pending session ID will become the session ID once connected) 
+	else if (blnARQConnected)		// If we are connected then just use the stcConnection.bytSessionID
+		NewType = MinimalDistanceFrameType(&intToneMags[0][0], bytSessionID);
+	else					// not connected and not pending so use &FF (FEC or ARQ unconnected session ID
+		NewType = MinimalDistanceFrameType(&intToneMags[0][0], 0x3F);
+  
+
+	sprintf(Offset, "Offset %5.1f", dblOffsetHz);
+	SendtoGUI('O', Offset, strlen(Offset));
+
+	if (NewType >= 0 &&  IsShortControlFrame(NewType))		// update the constellation if a short frame (no data to follow)
+		Update4FSKConstellation(&intToneMags[0][0], &intLastRcvdFrameQuality);
+
+	if (AccumulateStats)
+		if (NewType >= 0)
+			intGoodFSKFrameTypes++;
+		else
+			intFailedFSKFrameTypes++;
+	
+	intMFSReadPtr += (240 * 8);			 // advance to read pointer to the next symbol (if there is one)
+	
+	return NewType;
+}
+
+
+//	Demodulate Functions. These are called repeatedly as samples arrive
+//	and buld a frame in static array  bytFrameData
+
+// Function to demodulate one carrier for all low baud rate 4FSK frame types
+ 
+//	Is called repeatedly to decode multitone modes
+int Corrections = 0;
+
+BOOL Demod1Car4FSK()
+{
+	int Start = 0;
+	
+	// We can't wait for the full frame as we don't have enough ram, so
+	// we do one character at a time, until we run out or end of frame
+
+	// Only continue if we have more than intSampPerSym * 4 chars
+
+	while (State == AcquireFrame)
+	{
+		if (intFilteredMixedSamplesLength < ((intSampPerSym * 4) + 20)) // allow for correcrions
+		{
+			// Move any unprocessessed data down buffer
+
+			//	(while checking process - will use cyclic buffer eventually
+
+//			Debugprintf("Corrections %d", Corrections);
+
+			// If corrections is non-zero, we have to adjust
+			//	number left
+
+			intFilteredMixedSamplesLength -= Corrections;
+	
+			if (intFilteredMixedSamplesLength < 0)
+				Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+			Corrections = 0;
+
+			if (intFilteredMixedSamplesLength > 0)
+				memmove(intFilteredMixedSamples,
+					&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+			return FALSE;
+		}
+
+		// If this is a multicarrier mode, we must call the
+		// decode char routing for each carrier
+	
+		switch (intNumCar)
+		{
+		case 1:
+
+			intCenterFreq = 1500;
+			if (CarrierOk[0] == FALSE)		// Don't redo if already decoded
+				Demod1Car4FSKChar(Start, bytFrameData[0], 0);
+			break;
+
+		case 2:
+
+			intCenterFreq = 1750;
+			if (CarrierOk[0] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData[0], 0);
+			intCenterFreq = 1250;
+			if (CarrierOk[1] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData[1], 1);
+			break;
+
+/*		case 4:
+
+			intCenterFreq = 2250;
+			if (CarrierOk[0] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData1, 0);
+			intCenterFreq = 1750;
+			if (CarrierOk[1] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData2, 1);
+			intCenterFreq = 1250;
+			if (CarrierOk[2] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData3, 2);
+			intCenterFreq = 750;
+			if (CarrierOk[3] == FALSE)
+				Demod1Car4FSKChar(Start, bytFrameData4, 3);
+			break;
+*/
+		}
+
+		charIndex++;			// Index into received chars
+		SymbolsLeft--;			// number still to decode
+		Start += intSampPerSym * 4;	// 4 FSK bit pairs per byte
+		intFilteredMixedSamplesLength -= intSampPerSym * 4;
+	
+		if (intFilteredMixedSamplesLength < 0)
+			Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+		if (SymbolsLeft == 0)	
+		{	
+			//- prepare for next
+
+			// If variable length packet frame header we only have header - leave rx running
+		
+			if (intFrameType == PktFrameHeader)
+			{
+				State = SearchingForLeader;
+			
+				// Save any unused samples
+			
+				if (intFilteredMixedSamplesLength > 0 && Start > 0)
+					memmove(intFilteredMixedSamples,
+						&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+				return TRUE;
+			}
+
+			DecodeCompleteTime = Now;
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+		}
+	}
+	return TRUE;
+}
+
+// Function to demodulate one carrier for all low baud rate 4FSK frame types
+ 
+void Demod1Car4FSKChar(int Start, UCHAR * Decoded, int Carrier)
+{
+	// Converts intSamples to an array of bytes demodulating the 4FSK symbols with center freq intCenterFreq
+	// intPtr should be pointing to the approximate start of the first data symbol  
+	// Updates bytData() with demodulated bytes
+	// Updates bytMinSymQuality with the minimum (range is 25 to 100) symbol making up each byte.
+
+	float dblReal, dblImag;
+	float dblSearchFreq;
+	float dblMagSum = 0;
+	float  dblMag[4];	// The magnitude for each of the 4FSK frequency bins
+	UCHAR bytSym;
+	static UCHAR bytSymHistory[3];
+	int j;
+	UCHAR bytData = 0;
+
+	int * intToneMagsptr = &intToneMags[Carrier][intToneMagsIndex[Carrier]];
+	   
+	intToneMagsIndex[Carrier] += 16;
+
+	//	ReDim intToneMags(4 * intNumOfSymbols - 1)
+    //    ReDim bytData(intNumOfSymbols \ 4 - 1)
+
+	if (intBaud == 100)
+		dblSearchFreq = intCenterFreq + (1.5f * intBaud);	// the highest freq (equiv to lowest sent freq because of sideband reversal)
+	else
+		dblSearchFreq = intCenterFreq + (3.0f * intBaud);	// the highest freq (equiv to lowest sent freq because of sideband reversal)
+
+
+	// Do one symbol
+
+	for (j = 0; j < 4; j++)		// for each 4FSK symbol (2 bits) in a byte
+	{
+		dblMagSum = 0;
+		if (intBaud == 100)
+		{
+		GoertzelRealImag(intFilteredMixedSamples, Start, intSampPerSym, dblSearchFreq / intBaud, &dblReal, &dblImag);
+		dblMag[0] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[0];
+
+        GoertzelRealImag(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - intBaud) / intBaud, &dblReal, &dblImag);
+		dblMag[1] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[1];
+
+		GoertzelRealImag(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - 2 * intBaud) / intBaud, &dblReal, &dblImag);
+		dblMag[2] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[2];
+			
+		GoertzelRealImag(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - 3 * intBaud) / intBaud, &dblReal,& dblImag);
+		dblMag[3] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[3];
+		}
+		else
+		{
+		dblMagSum = 0;
+		GoertzelRealImagHann120(intFilteredMixedSamples, Start, intSampPerSym, dblSearchFreq / intBaud, &dblReal, &dblImag);
+		dblMag[0] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[0];
+
+		GoertzelRealImagHann120(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - 2 * intBaud) / intBaud, &dblReal, &dblImag);
+		dblMag[1] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[1];
+
+		GoertzelRealImagHann120(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - 4 * intBaud) / intBaud, &dblReal, &dblImag);
+		dblMag[2] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[2];
+			
+		GoertzelRealImagHann120(intFilteredMixedSamples, Start, intSampPerSym, (dblSearchFreq - 6 * intBaud) / intBaud, &dblReal,& dblImag);
+		dblMag[3] = powf(dblReal,2) + powf(dblImag, 2);
+		dblMagSum += dblMag[3];
+		
+		}
+		
+		if (dblMag[0] > dblMag[1] && dblMag[0] > dblMag[2] && dblMag[0] > dblMag[3])
+			bytSym = 0;
+		else if (dblMag[1] > dblMag[0] && dblMag[1] > dblMag[2] && dblMag[1] > dblMag[3])
+			bytSym = 1;
+		else if (dblMag[2] > dblMag[0] && dblMag[2] > dblMag[1] && dblMag[2] > dblMag[3])
+			bytSym = 2;
+		else
+			bytSym = 3;
+
+		bytData = (bytData << 2) + bytSym;
+
+		// !!!!!!! this needs attention !!!!!!!!
+
+		*intToneMagsptr++ = dblMag[0];
+		*intToneMagsptr++ = dblMag[1];
+		*intToneMagsptr++ = dblMag[2];
+		*intToneMagsptr++ = dblMag[3];
+		bytSymHistory[0] = bytSymHistory[1];
+		bytSymHistory[1] = bytSymHistory[2];
+		bytSymHistory[2] = bytSym;
+
+//		if ((bytSymHistory[0] != bytSymHistory[1]) && (bytSymHistory[1] != bytSymHistory[2]))
+		{
+			// only track when adjacent symbols are different (statistically about 56% of the time) 
+			// this should allow tracking over 2000 ppm sampling rate error	
+//			if (Start > intSampPerSym + 2)
+//				Track1Car4FSK(intFilteredMixedSamples, &Start, intSampPerSym, dblSearchFreq, intBaud, bytSymHistory);
+		}
+		Start += intSampPerSym; // advance the pointer one symbol
+	}
+
+	if (AccumulateStats)
+		intFSKSymbolCnt += 4;
+ 
+	Decoded[charIndex] = bytData;	
+	return;
+}
+
+extern int intBW;
+ 
+//  Function to Demodulate Frame based on frame type
+//	Will be called repeatedly as new samples arrive
+
+void DemodulateFrame(int intFrameType)
+{
+ //       Dim stcStatus As Status = Nothing
+
+	int intConstellationQuality = 0;
+
+ //       ReDim bytData(-1)
+
+	strRcvFrameTag[0] = 0;
+
+
+	switch (intFrameType)
+	{
+	case ConReq200:
+	case ConReq500:
+	case ConReq2500:
+	case OConReq500:
+	case OConReq2500:
+	case PING:
+	case IDFRAME:
+	case PINGACK:
+	case CQ_de:
+	case PktFrameHeader:	// Experimental Variable Length Frame 
+	case OFDMACK:
+
+		Demod1Car4FSK();
+		return;
+
+	case PktFrameData:	// Experimantal Variable Length Frame 
+			
+		if (strcmp(strMod, "4FSK") == 0)
+			Demod1Car4FSK();
+		else if (strcmp(strMod, "16QAM") == 0)
+			DemodQAM();
+		else
+			DemodPSK();
+		return;
+	}
+
+	switch (intFrameType & 0xFE)		// Others are even/odd data frames
+	{
+		case D4FSK_500_50_E:
+		case D4FSK_1000_50_E:
+
+			Demod1Car4FSK();
+			break;
+
+		case D4PSK_200_50_E:
+		case D4PSK_200_100_E:
+		case D4PSK_500_50_E:
+		case D4PSK_500_100_E:
+		case D4PSKR_2500_50_E:
+		case D4PSK_2500_50_E:
+		case D4PSK_2500_100_E:
+
+			DemodPSK();
+			break;
+
+		case D16QAM_200_100_E:
+		case D16QAMR_500_100_E:
+		case D16QAM_500_100_E:
+		case D16QAMR_2500_100_E:
+		case D16QAM_2500_100_E:
+
+			DemodQAM();
+			break;
+
+		case DOFDM_200_55_E:
+		case DOFDM_500_55_E:
+		case DOFDM_2500_55_E:
+
+			DemodOFDM();
+			break;
+
+		default:
+
+			Debugprintf("Unsupported frame type %x", intFrameType);
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+
+			intFilteredMixedSamplesLength = 0;	// Testing
+	}
+}
+
+
+int intSNdB = 0, intQuality = 0;
+
+
+BOOL DecodeFrame(int xxx, UCHAR * bytData)
+{
+	BOOL blnDecodeOK = FALSE;
+	char strCallerCallsign[10] = "";
+	char strTargetCallsign[10] = "";
+	char strIDCallSign[11] = "";
+	char strGridSQ[20] = "";
+	char Reply[80];
+	
+	strRcvFrameTag[0] = 0;
+
+	//DataACK/NAK and short control frames 
+
+	if (IsShortControlFrame(intFrameType)) // Short Control Frames
+	{
+		blnDecodeOK = TRUE;
+		DrawRXFrame(1, Name(intFrameType));
+
+		goto returnframe;
+	}
+
+	totalRSErrors = 0;
+			
+	if (IsDataFrame(intFrameType))
+		PrintCarrierFlags();
+
+
+	switch (intFrameType)
+	{
+
+	case PktFrameHeader:
+	{
+		// Variable Length Packet Frame Header
+		// 6 bits Type 10 Bits Len
+
+		int Len;
+		int pktNumCar;
+		int pktDataLen;
+		int pktRSLen;
+
+		frameLen = CorrectRawDataWithRS(&bytFrameData[0][0], bytData, intDataLen, intRSLen, intFrameType, 0);
+
+		if (CarrierOk[0])
+		{
+			pktRXMode = bytFrameData[0][1] >> 2;
+			pktNumCar = pktCarriers[pktRXMode];
+
+			Len = ((bytFrameData[0][1] & 0x3) << 8) | bytFrameData[0][2];
+		}
+		//	Now only using one carrier
+
+		//				else if (CarrierOk[1])
+		//				{
+		//					pktRXMode = bytFrameData2[1] >> 5;
+		//					pktNumCar = ((bytFrameData2[1] & 0x1c) >> 2) + 1;
+		//					Len =  ((bytFrameData2[1] & 0x3) << 8) | bytFrameData2[2];
+		//				}
+		else
+		{
+			// Cant decode
+
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			break;
+		}
+
+		strcpy(strMod, &pktMod[pktRXMode][0]);
+
+		// Reset to receive rest of frame
+
+		pktDataLen = (Len + (pktNumCar - 1)) / pktNumCar; // Round up
+
+		// This must match the encode settings
+
+		pktRSLen = pktDataLen >> 2;			// Try 25% for now
+		if (pktRSLen & 1)
+			pktRSLen++;						// Odd RS bytes no use
+
+		if (pktRSLen < 4)
+			pktRSLen = 4;					// At least 4
+
+		SymbolsLeft = pktDataLen + pktRSLen + 3; // Data has crc + length byte
+		State = AcquireFrame;
+		intFrameType = PktFrameData;
+		CarrierOk[1] = CarrierOk[0] = 0;
+		charIndex = 0;
+		frameLen = 0;
+		intPhasesLen = 0;
+		memset(intToneMagsIndex, 0, sizeof(intToneMagsIndex));
+		intDataLen = pktDataLen;
+		intRSLen = pktRSLen;
+		intNumCar = pktNumCar;
+		PSKInitDone = 0;
+
+		Debugprintf("Pkt Frame Header Type %s Len %d", strMod, Len);
+		strlop(strMod, '/');
+		blnDecodeOK = TRUE;
+
+		return 0;
+	}
+
+
+	case PktFrameData:
+	{
+		if (pktFSK[pktRXMode])
+		{
+			// Need to Check RS
+
+			frameLen = CorrectRawDataWithRS(&bytFrameData[0][0], bytData, intDataLen, intRSLen, intFrameType, 0);
+			if (intNumCar > 1)
+				frameLen += CorrectRawDataWithRS(&bytFrameData[1][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 1);
+
+			if (intNumCar > 2)
+			{
+				frameLen += CorrectRawDataWithRS(&bytFrameData[2][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 2);
+				frameLen += CorrectRawDataWithRS(&bytFrameData[3][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 3);
+			}
+		}
+
+		if (memcmp(CarrierOk, Good, intNumCar) == 0)
+		{
+			blnDecodeOK = TRUE;
+
+			// Packet Data  - if KISS interface ias active
+			// Pass to Host as KISS frame, else pass to
+			// Session code
+
+			// Data in bytData  len in frameLen
+
+			ProcessPktFrame(0, bytData, frameLen);
+//				else
+//			L2Routine(bytData, frameLen, intLastRcvdFrameQuality, totalRSErrors, intNumCar, pktRXMode);
+
+		}
+		break;
+	}
+
+
+	default:
+
+		Debugprintf("Unrecognised frame type");
+
+	}
+
+	if (blnDecodeOK)
+	{
+		Debugprintf("[DecodeFrame] Frame: %s Decode PASS,   Constellation Quality= %d", Name(intFrameType),  intLastRcvdFrameQuality);
+#ifdef PLOTCONSTELLATION
+		if (intFrameType >= 0x30 && intFrameType <= 0x38)
+			DrawDecode(lastGoodID);		// ID or CONREQ
+		else
+			DrawDecode("PASS");
+		updateDisplay();
+#endif
+	}
+
+	else
+	{
+		Debugprintf("[DecodeFrame] Frame: %s Decode FAIL,   Constellation Quality= %d", Name(intFrameType),  intLastRcvdFrameQuality);
+#ifdef PLOTCONSTELLATION
+		DrawDecode("FAIL");
+		updateDisplay();
+#endif
+	}
+
+
+returnframe:
+
+	if (blnDecodeOK && IsDataFrame(intFrameType))
+		bytLastReceivedDataFrameType = intFrameType;
+	
+//	if (DebugLog)
+//		if (blnDecodeOK)
+//			Debugprintf("[DecodeFrame] Frame: %s Decode PASS, Constellation Quality= %d", Name(intFrameType), intLastRcvdFrameQuality);
+//		else
+//			Debugprintf("[DecodeFrame] Frame: %s Decode FAIL, Constellation Quality= %d", Name(intFrameType), intLastRcvdFrameQuality);
+
+	return blnDecodeOK;
+}
+
+// Subroutine to update the 4FSK Constellation
+
+void drawFastVLine(int x0, int y0, int length, int color);
+void drawFastHLine(int x0, int y0, int length, int color);
+
+void Update4FSKConstellation(int * intToneMags, int * intQuality)
+{
+	// Subroutine to update bmpConstellation plot for 4FSK modes...
+        
+	int intToneSum = 0;
+	int intMagMax = 0;
+	float dblPi4  = 0.25 * M_PI;
+	float dblDistanceSum = 0;
+	int intRad = 0;
+	int i, x, y;
+	int yCenter = 0;
+	int xCenter = 0;
+
+#ifdef PLOTCONSTELLATION
+
+	int clrPixel;
+	int yCenter = (ConstellationHeight)/ 2;
+	int xCenter = (ConstellationWidth) / 2;
+
+	clearDisplay();
+#endif
+
+	for (i = 0; i < intToneMagsLength; i += 4)  // for the number of symbols represented by intToneMags
+	{
+		intToneSum = intToneMags[i] + intToneMags[i + 1] + intToneMags[i + 2] + intToneMags[i + 3];
+        
+		if (intToneMags[i] > intToneMags[i + 1] && intToneMags[i] > intToneMags[i + 2] && intToneMags[i] > intToneMags[i + 3])
+		{
+			if (intToneSum > 0)
+				intRad = max(5, 42 - 80 * (intToneMags[i + 1] + intToneMags[i + 2] + intToneMags[i + 3]) / intToneSum);
+
+			dblDistanceSum += (42 - intRad);
+			intRad = (intRad * PLOTRADIUS) / 50; // rescale for OLED (50 instead of 42 as we rotate constellation 35 degrees 
+			x = xCenter + intRad;
+			y = yCenter + intRad;
+		}
+		else if (intToneMags[i + 1] > intToneMags[i] && intToneMags[i + 1] > intToneMags[i + 2] && intToneMags[i + 1] > intToneMags[i + 3])
+		{
+			if (intToneSum > 0)
+				intRad = max(5, 42 - 80 * (intToneMags[i] + intToneMags[i + 2] + intToneMags[i + 3]) / intToneSum);
+
+			dblDistanceSum += (42 - intRad);
+			intRad = (intRad * PLOTRADIUS) / 50; // rescale for OLED (50 instead of 42 as we rotate constellation 35 degrees 
+			x = xCenter + intRad;
+			y = yCenter - intRad;
+		}
+		else if (intToneMags[i + 2] > intToneMags[i] && intToneMags[i + 2] > intToneMags[i + 1] && intToneMags[i + 2] > intToneMags[i + 3]) 
+		{
+            if (intToneSum > 0)
+				intRad = max(5, 42 - 80 * (intToneMags[i + 1] + intToneMags[i] + intToneMags[i + 3]) / intToneSum);
+
+			dblDistanceSum += (42 - intRad);
+			intRad = (intRad * PLOTRADIUS) / 50; // rescale for OLED (50 instead of 42 as we rotate constellation 35 degrees 
+			x = xCenter - intRad;
+			y = yCenter - intRad;
+		}
+		else if (intToneSum > 0)
+		{
+			intRad = max(5, 42 - 80 * (intToneMags[i + 1] + intToneMags[i + 2] + intToneMags[i]) / intToneSum);	
+
+			dblDistanceSum += (42 - intRad);
+			intRad = (intRad * PLOTRADIUS) / 50; // rescale for OLED (50 instead of 42 as we rotate constellation 35 degrees 
+			x = xCenter - intRad;
+			y = yCenter + intRad;
+		}
+
+#ifdef PLOTCONSTELLATION
+		if (intRad < 15)
+			clrPixel = Tomato;
+		else if (intRad < 30)
+			clrPixel = Gold;
+		else
+			clrPixel = Lime;
+
+		mySetPixel(x, y, clrPixel);
+#endif
+
+	}
+
+	*intQuality = 100 - (2.7f * (dblDistanceSum / (intToneMagsLength / 4))); // ' factor 2.7 emperically chosen for calibration (Qual range 25 to 100)
+
+	if (*intQuality < 0)
+		*intQuality = 0;
+	else if (*intQuality > 100)
+		*intQuality = 100;
+
+	if (AccumulateStats)
+	{
+		int4FSKQualityCnts += 1;
+		int4FSKQuality += *intQuality;
+	}
+
+#ifdef PLOTCONSTELLATION
+	DrawAxes(*intQuality, shortName(intFrameType), strMod);
+#endif
+
+	return;
+}
+
+
+
+// Subroutine to update the 16FSK constallation
+
+void Update16FSKConstellation(int * intToneMags, int * intQuality)
+{
+	//	Subroutine to update bmpConstellation plot for 16FSK modes...
+
+
+	int	intToneSum = 0;
+	float intMagMax = 0;
+	float dblDistanceSum = 0;
+	float dblPlotRotation = 0;
+//            Dim stcStatus As Status
+	int	intRad;
+//            Dim clrPixel As System.Drawing.Color
+	int	intJatMaxMag;
+	int i, j;
+
+#ifdef PLOTCONSTELLATION
+
+	float dblRad;
+	float dblAng;
+	int x, y,clrPixel;
+	int yCenter = (ConstellationHeight - 2)/ 2;
+	int xCenter = (ConstellationWidth - 2) / 2;
+
+	clearDisplay();
+#endif
+
+
+	for (i = 0; i< intToneMagsLength; i += 16)  // for the number of symbols represented by intToneMags
+	{
+		intToneSum = 0;
+		intMagMax = 0;
+
+		for (j = 0; j < 16; j++)
+		{
+			if (intToneMags[i + j] > intMagMax)
+			{
+				intMagMax = intToneMags[i + j];
+				intJatMaxMag = j;
+			}
+			intToneSum += intToneMags[i + j];
+		}
+		intRad = max(5, 42 - 40 * (intToneSum - intMagMax) / intToneSum);
+		dblDistanceSum += (43 - intRad);
+
+#ifdef PLOTCONSTELLATION		
+		if (intRad < 15)
+			clrPixel = Tomato;
+		else if (intRad < 30)
+			clrPixel = Gold;
+		else
+			clrPixel = Lime;
+
+		// plot the symbols rotated to avoid the axis
+
+		intRad = (intRad * PLOTRADIUS) /42; // rescale for OLED
+		dblAng = M_PI / 16.0f + (intJatMaxMag * M_PI / 8);
+  
+		x = xCenter + intRad * cosf(dblAng);
+		y = yCenter + intRad * sinf(dblAng);
+		mySetPixel(x, y, clrPixel);    
+#endif
+
+	}
+		
+	*intQuality = max(0, (100 - 2.2 * (dblDistanceSum / (intToneMagsLength / 16))));	 // factor 2.2 emperically chosen for calibration (Qual range 25 to 100)
+//	*intQuality = max(0, (100 - 1.0 * (dblDistanceSum / (intToneMagsLength / 16))));	 // factor 2.2 emperically chosen for calibration (Qual range 25 to 100)
+
+	if(AccumulateStats)
+	{
+		int16FSKQualityCnts++;
+		int16FSKQuality += *intQuality;
+	}
+#ifdef PLOTCONSTELLATION
+	DrawAxes(*intQuality, shortName(intFrameType), strMod);
+#endif
+}
+
+//	Subroutine to udpate the 8FSK Constellation
+
+void Update8FSKConstellation(int * intToneMags, int * intQuality)
+{
+	//	Subroutine to update bmpConstellation plot for 8FSK modes...
+         
+	int intToneSum = 0;
+	int intMagMax = 0;
+	float dblPi4  = 0.25 * M_PI;
+	float dblDistanceSum = 0;
+	int intRad = 0;
+	int i, j, intJatMaxMag;
+
+#ifdef PLOTCONSTELLATION
+
+	float dblAng;
+	int yCenter = (ConstellationHeight - 2)/ 2;
+	int xCenter = (ConstellationWidth - 2) / 2;
+	unsigned short clrPixel = WHITE;
+	unsigned short x, y;
+
+	clearDisplay();
+#endif
+
+	for (i = 0; i < intToneMagsLength; i += 8)  // for the number of symbols represented by intToneMags
+	{
+		intToneSum = 0;
+		intMagMax = 0;
+
+ 		for (j = 0; j < 8; j++)
+		{
+			if (intToneMags[i + j] > intMagMax)
+			{
+				intMagMax = intToneMags[i + j];
+				intJatMaxMag = j;
+			}
+			intToneSum += intToneMags[i + j];
+		}
+
+		intRad = max(5, 42 - 40 * (intToneSum - intMagMax) / intToneSum);
+		dblDistanceSum += (43 - intRad);
+								
+#ifdef PLOTCONSTELLATION		
+		if (intRad < 15)
+			clrPixel = Tomato;
+		else if (intRad < 30)
+			clrPixel = Gold;
+		else
+			clrPixel = Lime;
+
+		// plot the symbols rotated to avoid the axis
+
+		intRad = (intRad * PLOTRADIUS) /42; // rescale for OLED
+
+		dblAng = M_PI / 9.0f + (intJatMaxMag * M_PI / 4);
+  
+		x = xCenter + intRad * cosf(dblAng);
+		y = yCenter + intRad * sinf(dblAng);
+		mySetPixel(x, y, clrPixel);    
+#endif
+	}
+		
+	*intQuality = max(0, (100 - 2.0 * (dblDistanceSum / (intToneMagsLength / 8))));	 // factor 2.0 emperically chosen for calibration (Qual range 25 to 100)
+
+	if(AccumulateStats)
+	{
+		int8FSKQualityCnts++;
+		int8FSKQuality += *intQuality;
+	}
+#ifdef PLOTCONSTELLATION
+	DrawAxes(*intQuality, shortName(intFrameType), strMod);
+#endif
+	return;
+}
+
+
+
+//	Subroutine to Update the PhaseConstellation
+
+int UpdatePhaseConstellation(short * intPhases, short * intMag, int intPSKPhase, BOOL blnQAM, BOOL OFDM)
+{
+	// Subroutine to update bmpConstellation plot for PSK modes...
+	// Skip plotting and calculations of intPSKPhase(0) as this is a reference phase (9/30/2014)
+
+	float dblPhaseError; 
+	float dblPhaseErrorSum = 0;
+	int intPSKIndex;
+	float intP = 0;
+	float dblRad = 0;
+	float dblAvgRad = 0;
+	float intMagMax = 0;
+	float dblPi4 = 0.25 * M_PI;
+	float dbPhaseStep;
+	float dblRadError = 0;
+	float dblPlotRotation = 0;
+	int intRadInner = 0, intRadOuter = 0;
+	float dblAvgRadOuter = 0, dblAvgRadInner = 0, dblRadErrorInner = 0, dblRadErrorOuter = 0;
+ 
+	int i,j, k, intQuality;
+
+#ifdef PLOTCONSTELLATION
+
+	int intX, intY;
+	int yCenter = (ConstellationHeight - 2)/ 2;
+	int xCenter = (ConstellationWidth - 2) / 2;
+
+	unsigned short clrPixel = WHITE;
+
+	clearDisplay();
+#endif
+
+	if (intPSKPhase == 4)
+		intPSKIndex = 0;
+	else
+		intPSKIndex = 1;
+
+	if (blnQAM)
+	{
+		intPSKPhase = 8;
+		intPSKIndex = 1;
+		dbPhaseStep  = 2 * M_PI / intPSKPhase;
+		for (j = 1; j < intPhasesLen; j++)   // skip the magnitude of the reference in calculation
+		{
+			intMagMax = max(intMagMax, intMag[j]); // find the max magnitude to auto scale
+		}
+
+		for (k = 1; k < intPhasesLen; k++)
+		{
+			if (intMag[k] < 0.75f * intMagMax)
+			{
+				dblAvgRadInner += intMag[k];
+				intRadInner++;
+			}
+			else
+			{
+				dblAvgRadOuter += intMag[k];
+				intRadOuter++;
+			}
+		}
+
+		dblAvgRadInner = dblAvgRadInner / intRadInner;
+		dblAvgRadOuter = dblAvgRadOuter / intRadOuter;
+	}
+	else
+	{
+		dbPhaseStep  = 2 * M_PI / intPSKPhase;
+		for (j = 1; j < intPhasesLen; j++)   // skip the magnitude of the reference in calculation
+		{
+			intMagMax = max(intMagMax, intMag[j]); // find the max magnitude to auto scale
+            dblAvgRad += intMag[j];	
+		}
+	}
+           
+	dblAvgRad = dblAvgRad / (intPhasesLen - 1); // the average radius
+
+	for (i = 1; i <  intPhasesLen; i++)  // Don't plot the first phase (reference)
+	{
+		intP = round((0.001f * intPhases[i]) / dbPhaseStep);
+
+		// compute the Phase and Radius errors
+ 
+		if (intMag[i] > (dblAvgRadInner + dblAvgRadOuter) / 2) 
+			dblRadErrorOuter += fabsf(dblAvgRadOuter - intMag[i]);
+		else
+			dblRadErrorInner += fabsf(dblAvgRadInner - intMag[i]);
+
+		dblPhaseError = fabsf(((0.001 * intPhases[i]) - intP * dbPhaseStep)); // always positive and < .5 *  dblPhaseStep
+		dblPhaseErrorSum += dblPhaseError;
+
+#ifdef PLOTCONSTELLATION
+		dblRad = PLOTRADIUS * intMag[i] / intMagMax; //  scale the radius dblRad based on intMagMax
+		intX = xCenter + dblRad * cosf(dblPlotRotation + intPhases[i] / 1000.0f);
+		intY = yCenter + dblRad * sinf(dblPlotRotation + intPhases[i] / 1000.0f);
+    
+		
+		if (intX > 0 && intY > 0)
+			if (intX != xCenter && intY != yCenter)
+				mySetPixel(intX, intY, Yellow); // don't plot on top of axis
+#endif
+	}
+
+	if (blnQAM) 
+	{
+//		intQuality = max(0, ((100 - 200 * (dblPhaseErrorSum / (intPhasesLen)) / dbPhaseStep))); // ignore radius error for (PSK) but include for QAM
+		intQuality = max(0, (1 - (dblRadErrorInner / (intRadInner * dblAvgRadInner) + dblRadErrorOuter / (intRadOuter * dblAvgRadOuter))) * (100 - 200 * (dblPhaseErrorSum / intPhasesLen) / dbPhaseStep));
+
+//		intQuality = max(0, ((100 - 200 * (dblPhaseErrorSum / (intPhasesLen)) / dbPhaseStep))); // ignore radius error for (PSK) but include for QAM
+		
+		if (AccumulateStats)
+		{
+			if (OFDM)
+			{
+				intOFDMQualityCnts[RXOFDMMode] ++;
+				intOFDMQuality[RXOFDMMode] += intQuality;
+				intOFDMSymbolsDecoded += intPhasesLen;
+			}
+			else
+			{
+				intQAMQualityCnts += 1;
+				intQAMQuality += intQuality;
+				intQAMSymbolsDecoded += intPhasesLen;
+			}
+		}
+	}
+	else
+	{
+		intQuality =  max(0, ((100 - 200 * (dblPhaseErrorSum / (intPhasesLen)) / dbPhaseStep))); // ignore radius error for (PSK) but include for QAM
+	
+		if (AccumulateStats)
+		{
+			if (OFDM)
+			{
+				intOFDMQualityCnts[RXOFDMMode] ++;
+				intOFDMQuality[RXOFDMMode] += intQuality;
+				intOFDMSymbolsDecoded += intPhasesLen;
+			}
+			else
+			{
+				intPSKQualityCnts[intPSKIndex]++;
+				intPSKQuality[intPSKIndex] += intQuality;
+				intPSKSymbolsDecoded += intPhasesLen;
+			}
+
+		}
+	}	
+#ifdef PLOTCONSTELLATION
+	DrawAxes(intQuality, shortName(intFrameType), strMod);
+#endif
+	return intQuality;
+
+}
+
+
+// Subroutine to track 1 carrier 4FSK. Used for both single and multiple simultaneous carrier 4FSK modes.
+
+
+VOID Track1Car4FSK(short * intSamples, int * intPtr, int intSampPerSymbol, float dblSearchFreq, int intBaud, UCHAR * bytSymHistory)
+{
+	// look at magnitude of the tone for bytHistory(1)  2 sample2 earlier and 2 samples later.  and pick the maximum adjusting intPtr + or - 1
+	// this seems to work fine on test Mar 16, 2015. This should handle sample rate offsets (sender to receiver) up to about 2000 ppm
+
+	float dblReal, dblImag, dblMagEarly, dblMag, dblMagLate;
+	float dblBinToSearch = (dblSearchFreq - (intBaud * bytSymHistory[1])) / intBaud; //  select the 2nd last symbol for magnitude comparison
+
+
+	GoertzelRealImag(intSamples, (*intPtr - intSampPerSymbol - 2), intSampPerSymbol, dblBinToSearch, &dblReal, &dblImag);
+	dblMagEarly = powf(dblReal, 2) + powf(dblImag, 2);
+	GoertzelRealImag(intSamples, (*intPtr - intSampPerSymbol), intSampPerSymbol, dblBinToSearch, &dblReal, &dblImag);
+	dblMag = powf(dblReal, 2) + powf(dblImag, 2);
+	GoertzelRealImag(intSamples, (*intPtr - intSampPerSymbol + 2), intSampPerSymbol, dblBinToSearch, &dblReal, &dblImag);
+	dblMagLate = powf(dblReal, 2) + powf(dblImag, 2);
+
+	if (dblMagEarly > dblMag && dblMagEarly > dblMagLate)
+	{
+		*intPtr --;
+		Corrections--;
+		if (AccumulateStats)
+			intAccumFSKTracking--;
+	}
+	else if (dblMagLate > dblMag && dblMagLate > dblMagEarly)
+	{
+		*intPtr ++;
+		Corrections++;
+		if (AccumulateStats)
+			intAccumFSKTracking++;
+	}
+}
+
+//	Function to Decode one Carrier of PSK modulation 
+
+//	Ideally want to be able to call on for each symbol, as I don't have the
+//	RAM to build whole frame
+
+//	Call for each set of 4 or 8 Phase Values
+
+int pskStart = 0;
+
+
+VOID Decode1CarPSK(int Carrier, BOOL OFDM)
+{
+	unsigned int int24Bits;
+	UCHAR bytRawData;
+	int k;
+	int Len = intPhasesLen;
+	UCHAR * Decoded;
+	
+	if (OFDM)
+		Decoded = &bytFrameData[0][0];		// Always uses same buffer
+	else
+	{
+		if (CarrierOk[Carrier])
+			return;							// don't do it again
+	
+		Decoded = &bytFrameData[Carrier][0];
+	}
+
+	pskStart = 0;
+	charIndex = 0;
+
+    	
+	while (Len >= 0)
+	{
+
+		// Phase Samples are in intPhases
+
+		switch (intPSKMode)
+		{
+			case 2:		// process 8 sequential phases per byte (1 bits per phase)
+
+			for (k = 0; k < 8; k++)
+			{
+				if (k == 0)
+					bytRawData = 0;
+				else
+					bytRawData <<= 1;
+				
+				if (intPhases[Carrier][pskStart] >= 1572 || intPhases[Carrier][pskStart]<= -1572)
+					bytRawData += 1;
+			
+				pskStart++;
+			}
+
+			Decoded[charIndex++] = bytRawData;
+			Len -= 8;
+			break;
+
+		case 4:		// process 4 sequential phases per byte (2 bits per phase)
+
+			for (k = 0; k < 4; k++)
+			{
+				if (k == 0)
+					bytRawData = 0;
+				else
+					bytRawData <<= 2;
+				
+				if (intPhases[Carrier][pskStart] < 786 && intPhases[Carrier][pskStart] > -786)
+				{
+				}		// Zero so no need to do anything
+				else if (intPhases[Carrier][pskStart] >= 786 && intPhases[Carrier][pskStart] < 2356)
+					bytRawData += 1;
+				else if (intPhases[Carrier][pskStart] >= 2356 || intPhases[Carrier][pskStart] <= -2356)
+					bytRawData += 2;
+				else
+					bytRawData += 3;
+
+				pskStart++;
+			}
+
+			Decoded[charIndex++] = bytRawData;
+			Len -= 4;
+			break;
+
+		case 8: // Process 8 sequential phases (3 bits per phase)  for 24 bits or 3 bytes  
+
+			//	Status verified on 1 Carrier 8PSK with no RS needed for High S/N
+
+			//	Assume we check for 8 available phase samples before being called
+
+			int24Bits = 0;
+
+			for (k = 0; k < 8; k++)
+			{
+				int24Bits <<= 3;
+
+				if (intPhases[Carrier][pskStart] < 393 && intPhases[Carrier][pskStart] > -393)
+				{
+				}		// Zero so no need to do anything
+				else if (intPhases[Carrier][pskStart] >= 393 && intPhases[Carrier][pskStart] < 1179)
+					int24Bits += 1;
+				else if (intPhases[Carrier][pskStart] >= 1179 && intPhases[Carrier][pskStart] < 1965)
+					int24Bits += 2;
+				else if (intPhases[Carrier][pskStart] >= 1965 && intPhases[Carrier][pskStart] < 2751)
+				int24Bits += 3;
+				else if (intPhases[Carrier][pskStart] >= 2751 || intPhases[Carrier][pskStart] < -2751)
+					int24Bits += 4;
+				else if (intPhases[Carrier][pskStart] >= -2751 && intPhases[Carrier][pskStart] < -1965)
+				int24Bits += 5;
+				else if (intPhases[Carrier][pskStart] >= -1965 && intPhases[Carrier][pskStart] <= -1179)
+					int24Bits += 6;
+				else 
+					int24Bits += 7;
+
+				pskStart ++;
+	
+			}
+			Decoded[charIndex++] = int24Bits >> 16;
+			Decoded[charIndex++] = int24Bits >> 8;
+			Decoded[charIndex++] = int24Bits;
+
+			Len -= 8;
+			break;
+	
+		case 16: // Process 2 sequential phases (4 bits per phase) for 1 bytes  
+
+
+			for (k = 0; k < 2; k++)
+			{
+				if (k == 0)
+					bytRawData = 0;
+				else
+					bytRawData <<= 4;
+				
+				if (intPhases[Carrier][pskStart] < 196 && intPhases[Carrier][pskStart] > -196)
+				{
+				}		// Zero so no need to do anything
+				else if (intPhases[Carrier][pskStart] >= 196 && intPhases[Carrier][pskStart] < 589)
+					bytRawData += 1;
+				else if (intPhases[Carrier][pskStart] >= 589 && intPhases[Carrier][pskStart] < 981)
+					bytRawData += 2;
+				else if (intPhases[Carrier][pskStart] >= 981 && intPhases[Carrier][pskStart] < 1374)
+					bytRawData += 3;
+				else if (intPhases[Carrier][pskStart] >= 1374 && intPhases[Carrier][pskStart] < 1766)
+					bytRawData += 4;
+				else if (intPhases[Carrier][pskStart] >= 1766 && intPhases[Carrier][pskStart] < 2159)
+					bytRawData += 5;
+				else if (intPhases[Carrier][pskStart] >= 2159 && intPhases[Carrier][pskStart] < 2551)
+					bytRawData += 6;
+				else if (intPhases[Carrier][pskStart] >= 2551 && intPhases[Carrier][pskStart] < 2944)
+					bytRawData += 7;
+
+				else if (intPhases[Carrier][pskStart] >= 2944 || intPhases[Carrier][pskStart] < -2944)
+					bytRawData += 8;
+				else if (intPhases[Carrier][pskStart] >= -2944 && intPhases[Carrier][pskStart] < -2551)
+					bytRawData += 9;
+				else if (intPhases[Carrier][pskStart] >= -2551 && intPhases[Carrier][pskStart] < -2159)
+					bytRawData += 10;
+				else if (intPhases[Carrier][pskStart] >= -2159 && intPhases[Carrier][pskStart] < -1766)
+					bytRawData += 11;
+				else if (intPhases[Carrier][pskStart] >= -1766 && intPhases[Carrier][pskStart] < -1374)
+					bytRawData += 12;
+				else if (intPhases[Carrier][pskStart] >= -1374 && intPhases[Carrier][pskStart] < -981)
+					bytRawData += 13;
+				else if (intPhases[Carrier][pskStart] >= -981 && intPhases[Carrier][pskStart] < -589)
+					bytRawData += 14;
+				else 
+					bytRawData += 15;
+
+				pskStart ++;
+	
+			}
+			Decoded[charIndex++] = bytRawData;
+
+			Len -= 2;
+			break;
+
+		default:
+			return; //????
+		}
+	}
+	return;
+}
+
+//	Function to compute PSK symbol tracking (all PSK modes, used for single or multiple carrier modes) 
+
+int Track1CarPSK(int floatCarFreq, int PSKMode, BOOL QAM, BOOL OFDM, float dblUnfilteredPhase, BOOL blnInit)
+{
+	// This routine initializes and tracks the phase offset per symbol and adjust intPtr +/-1 when the offset creeps to a threshold value.
+	// adjusts (by Ref) intPtr 0, -1 or +1 based on a filtering of phase offset. 
+	// this seems to work fine on test Mar 21, 2015. May need optimization after testing with higher sample rate errors. 
+	// This should handle sample rate offsets (sender to receiver) up to about 2000 ppm
+
+	float dblAlpha = 0.3f; // low pass filter constant  may want to optimize value after testing with large sample rate error. 
+		// (Affects how much averaging is done) lower values of dblAlpha will minimize adjustments but track more slugishly.
+
+	float dblPhaseOffset;
+
+	static float dblTrackingPhase = 0;
+	static float dblModFactor;
+	static float dblRadiansPerSample;  // range is .4188 @ car freq = 800 to 1.1195 @ car freq 2200
+	static float dblPhaseAtLastTrack;
+	static int intCountAtLastTrack;
+	static float dblFilteredPhaseOffset;
+
+	if (blnInit)
+	{
+		// dblFilterredPhase = dblUnfilteredPhase;
+		dblTrackingPhase = dblUnfilteredPhase;
+		
+		if (PSKMode == 16)
+			dblModFactor = M_PI / 8;
+		else if (PSKMode == 8)
+			dblModFactor = M_PI / 4;
+		else if (PSKMode == 4)
+			dblModFactor = M_PI / 2;
+		else
+			dblModFactor = M_PI;	// 2PSK
+
+		dblRadiansPerSample = (floatCarFreq * dbl2Pi) / 12000.0f;
+		dblPhaseOffset = dblUnfilteredPhase - dblModFactor * round(dblUnfilteredPhase / dblModFactor);
+		dblPhaseAtLastTrack = dblPhaseOffset;
+		dblFilteredPhaseOffset = dblPhaseOffset;
+		intCountAtLastTrack = 0;
+		return 0;
+	}
+
+	intCountAtLastTrack += 1;
+	dblPhaseOffset = dblUnfilteredPhase - dblModFactor * round(dblUnfilteredPhase / dblModFactor);
+	dblFilteredPhaseOffset = (1 - dblAlpha) * dblFilteredPhaseOffset + dblAlpha * dblPhaseOffset;
+
+	if ((dblFilteredPhaseOffset - dblPhaseAtLastTrack) > dblRadiansPerSample)
+	{
+		//Debug.WriteLine("Filtered>LastTrack: Cnt=" & intCountAtLastTrack.ToString & "  Filtered = " & Format(dblFilteredPhaseOffset, "00.000") & "  Offset = " & Format(dblPhaseOffset, "00.000") & "  Unfiltered = " & Format(dblUnfilteredPhase, "00.000"))
+		dblFilteredPhaseOffset = dblPhaseOffset - dblRadiansPerSample;
+		dblPhaseAtLastTrack = dblFilteredPhaseOffset;
+	
+		if (AccumulateStats)
+		{
+			if (OFDM)	
+			{ 
+				intOFDMTrackAttempts++;
+				intAccumOFDMTracking--;
+			}
+			else
+			if (QAM)
+			{ 
+				intQAMTrackAttempts++;
+				intAccumQAMTracking--;
+			}
+			else
+			{
+				intPSKTrackAttempts++;
+				intAccumPSKTracking--;
+			}
+		}
+		return -1;
+	}
+
+	if ((dblPhaseAtLastTrack - dblFilteredPhaseOffset) > dblRadiansPerSample)
+	{
+		//'Debug.WriteLine("Filtered<LastTrack: Cnt=" & intCountAtLastTrack.ToString & "  Filtered = " & Format(dblFilteredPhaseOffset, "00.000") & "  Offset = " & Format(dblPhaseOffset, "00.000") & "  Unfiltered = " & Format(dblUnfilteredPhase, "00.000"))
+		dblFilteredPhaseOffset = dblPhaseOffset + dblRadiansPerSample;
+		dblPhaseAtLastTrack = dblFilteredPhaseOffset;
+
+		if (AccumulateStats)
+		{
+			if (OFDM)	
+			{ 
+				intOFDMTrackAttempts++;
+				intAccumOFDMTracking++;
+			}
+			else
+			if (QAM)	// 16QAM" Then
+			{ 
+				intQAMTrackAttempts++;
+				intAccumQAMTracking++;
+			}
+			else
+			{
+				intPSKTrackAttempts++;
+				intAccumPSKTracking++;
+			}
+		}
+		return 1;
+	}
+	// 'Debug.WriteLine("Filtered Phase = " & Format(dblFilteredPhaseOffset, "00.000") & "  Offset = " & Format(dblPhaseOffset, "00.000") & "  Unfiltered = " & Format(dblUnfilteredPhase, "00.000"))
+
+	return 0;
+}
+ 
+// Function to compute the differenc of two angles 
+
+int ComputeAng1_Ang2(int intAng1, int intAng2)
+{
+	// do an angle subtraction intAng1 minus intAng2 (in milliradians) 
+	// Results always between -3142 and 3142 (+/- Pi)
+
+	int intDiff;
+
+	intDiff = intAng1 - intAng2;
+
+	if (intDiff < -3142)
+		intDiff += 6284;
+	else if (intDiff > 3142 )
+		intDiff -= 6284;
+
+	return intDiff;
+}
+
+// Subroutine to "rotate" the phases to try and set the average offset to 0. 
+
+void CorrectPhaseForTuningOffset(short * intPhase, int intPhaseLength, int intPSKMode)
+{
+	// A tunning error of -1 Hz will rotate the phase calculation Clockwise ~ 64 milliradians (~4 degrees)
+	//   This corrects for:
+	// 1) Small tuning errors which result in a phase bias (rotation) of then entire constellation
+	// 2) Small Transmitter/receiver drift during the frame by averaging and adjusting to constellation to the average. 
+	//   It only processes phase values close to the nominal to avoid generating too large of a correction from outliers: +/- 30 deg for 4PSK, +/- 15 deg for 8PSK
+	//  Is very affective in handling initial tuning error.  
+
+	short intPhaseMargin  = 2095 / intPSKMode; // Compute the acceptable phase correction range (+/-30 degrees for 4 PSK)
+	short intPhaseInc = 6284 / intPSKMode;
+	int intTest;
+	int i;
+	int intOffset, intAvgOffset, intAvgOffsetBeginning, intAvgOffsetEnd;
+	int intAccOffsetCnt = 0, intAccOffsetCntBeginning = 0, intAccOffsetCntEnd = 0;
+	int	intAccOffsetBeginning = 0, intAccOffsetEnd = 0, intAccOffset = 0;
+
+      
+	// Note Rev 0.6.2.4 The following phase margin value increased from 2095 (120 deg) to 2793 (160 deg) yielded an improvement in decode at low S:N
+
+	intPhaseMargin  = 2793 / intPSKMode; // Compute the acceptable phase correction range (+/-30 degrees for 4 PSK)
+	intPhaseInc = 6284 / intPSKMode;
+
+	// Compute the average offset (rotation) for all symbols within +/- intPhaseMargin of nominal
+            
+	for (i = 0; i <  intPhaseLength; i++)
+	{
+		intTest = (intPhase[i] / intPhaseInc);
+		intOffset = intPhase[i] - intTest * intPhaseInc;
+
+		if ((intOffset >= 0 && intOffset <= intPhaseMargin) || (intOffset < 0 && intOffset >= -intPhaseMargin))
+		{
+			intAccOffsetCnt += 1;
+			intAccOffset += intOffset;
+			
+			if (i <= intPhaseLength / 4)
+			{
+				intAccOffsetCntBeginning += 1;
+				intAccOffsetBeginning += intOffset;
+			}
+			else if (i >= (3 * intPhaseLength) / 4)
+			{
+				intAccOffsetCntEnd += 1;
+				intAccOffsetEnd += intOffset;
+			}
+		}
+	}
+	
+	if (intAccOffsetCnt > 0)
+		intAvgOffset = (intAccOffset / intAccOffsetCnt);
+	if (intAccOffsetCntBeginning > 0)
+		intAvgOffsetBeginning = (intAccOffsetBeginning / intAccOffsetCntBeginning);
+	if (intAccOffsetCntEnd > 0)
+		intAvgOffsetEnd = (intAccOffsetEnd / intAccOffsetCntEnd);
+     
+	//Debugprintf("[CorrectPhaseForOffset] Beginning: %d End: %d Total: %d",
+		//intAvgOffsetBeginning, intAvgOffsetEnd, intAvgOffset);
+
+	if ((intAccOffsetCntBeginning > intPhaseLength / 8) && (intAccOffsetCntEnd > intPhaseLength / 8))
+	{
+		for (i = 0; i < intPhaseLength; i++)
+		{
+			intPhase[i] = intPhase[i] - ((intAvgOffsetBeginning * (intPhaseLength - i) / intPhaseLength) + (intAvgOffsetEnd * i / intPhaseLength));
+			if (intPhase[i] > 3142)
+				intPhase[i] -= 6284;
+			else if (intPhase[i] < -3142)
+				intPhase[i] += 6284;
+		}
+		Debugprintf("[CorrectPhaseForTuningOffset] AvgOffsetBeginning=%d AvgOffsetEnd=%d AccOffsetCnt=%d/%d",
+				intAvgOffsetBeginning, intAvgOffsetEnd, intAccOffsetCnt, intPhaseLength);
+	}
+	else if (intAccOffsetCnt > intPhaseLength / 2)
+	{
+		for (i = 0; i < intPhaseLength; i++)
+		{
+			intPhase[i] -= intAvgOffset;
+			if (intPhase[i] > 3142)
+				intPhase[i] -= 6284;
+			else if (intPhase[i] < -3142)
+				intPhase[i] += 6284;
+		}
+		Debugprintf("[CorrectPhaseForTuningOffset] AvgOffset=%d AccOffsetCnt=%d/%d",
+				intAvgOffset, intAccOffsetCnt, intPhaseLength);
+
+	}
+}
+
+// Function to Decode one Carrier of 16QAM modulation 
+
+//	Call for each set of 4 or 8 Phase Values
+
+short intCarMagThreshold[MAXCAR] = {0};
+
+
+VOID Decode1CarQAM(int Carrier)
+{
+	unsigned int intData;
+	int k;
+	float dblAlpha = 0.1f; // this determins how quickly the rolling average dblTrackingThreshold responds.
+
+	// dblAlpha value of .1 seems to work well...needs to be tested on fading channel (e.g. Multipath)
+	
+	int Threshold = intCarMagThreshold[Carrier];
+	int Len = intPhasesLen;
+
+	UCHAR * Decoded = bytFrameData[Carrier];
+
+	if (CarrierOk[Carrier])
+		return;	// don't do it again
+	pskStart = 0;
+	charIndex = 0;
+
+	// We calculated initial mag from reference symbol
+
+	// use filtered tracking of refernce phase amplitude
+	// (should be full amplitude value)
+     
+	// On WGN this appears to improve decoding threshold about 1 dB 9/3/2016
+    	
+	while (Len >= 0)
+	{
+		// Phase Samples are in intPhases
+
+		intData = 0;
+
+		for (k = 0; k < 2; k++)
+		{
+			intData <<= 4;
+
+			if (intPhases[Carrier][pskStart] < 393 && intPhases[Carrier][pskStart] > -393)
+			{
+			}		// Zero so no need to do anything
+			else if (intPhases[Carrier][pskStart] >= 393 && intPhases[Carrier][pskStart] < 1179)
+				intData += 1;
+			else if (intPhases[Carrier][pskStart] >= 1179 && intPhases[Carrier][pskStart] < 1965)
+				intData += 2;
+			else if (intPhases[Carrier][pskStart] >= 1965 && intPhases[Carrier][pskStart] < 2751)
+				intData += 3;
+			else if (intPhases[Carrier][pskStart] >= 2751 || intPhases[Carrier][pskStart] < -2751)
+				intData += 4;
+			else if (intPhases[Carrier][pskStart] >= -2751 && intPhases[Carrier][pskStart] < -1965)
+				intData += 5;
+			else if (intPhases[Carrier][pskStart] >= -1965 && intPhases[Carrier][pskStart] <= -1179)
+				intData += 6;
+			else 
+				intData += 7;
+
+			if (intMags[Carrier][pskStart] < Threshold)
+			{
+				intData += 8;		//  add 8 to "inner circle" symbols. 
+				Threshold = (Threshold * 900 + intMags[Carrier][pskStart] * 150) / 1000;
+			}
+			else
+			{
+				Threshold = ( Threshold * 900 + intMags[Carrier][pskStart] * 75) / 1000;
+			}
+		
+			intCarMagThreshold[Carrier] = Threshold;
+			pskStart++;
+		}
+		Decoded[charIndex++] = intData;
+		Len -=2;
+	}
+}
+//	Functions to demod all PSKData frames single or multiple carriers 
+
+
+VOID InitDemodPSK()
+{
+	// Called at start of frame
+
+	int i;
+	float dblPhase, dblReal, dblImag;
+
+	intPSKMode = strMod[0] - '0';
+	PSKInitDone = TRUE;
+	intPhasesLen = 0;
+
+	if (intPSKMode == 8)
+		dblPhaseInc = 2 * M_PI * 1000 / 8;
+	else
+		dblPhaseInc = 2 * M_PI * 1000 / 4;
+
+	if (intBaud == 50)
+		intSampPerSym = 240;
+	else
+		intSampPerSym = 120;
+
+	if (intNumCar == 1)
+		floatCarFreq = 1500;
+	else
+		floatCarFreq = 1400 + (intNumCar / 2) * 200; // start at the highest carrier freq which is actually the lowest transmitted carrier due to Reverse sideband mixing
+  
+	for (i= 0; i < intNumCar; i++)
+	{
+		if (intBaud == 50)
+		{
+			intCP[i] = 0;
+			intNforGoertzel[i] = 240;
+            dblFreqBin[i] = floatCarFreq / 50;
+		}
+		else if (intBaud == 100)
+		{
+			//Experimental use of Hanning Windowing
+				
+            intNforGoertzel[i] = 120;
+            dblFreqBin[i] = floatCarFreq / 100;
+            intCP[i] = 0;
+		}
+ 
+/*		if (intBaud == 100 && floatCarFreq == 1500) 
+		{
+		intCP[i] = 20;  //  These values selected for best decode percentage (92%) and best average 4PSK Quality (82) on MPP0dB channel
+		dblFreqBin[i] = floatCarFreq / 150;
+		intNforGoertzel[i] = 80;
+		}
+		else if (intBaud == 100)
+		{
+			intCP[i] = 28; // This value selected for best decoding percentage (56%) and best Averag 4PSK Quality (77) on mpg +5 dB
+			intNforGoertzel[i] = 60;
+			dblFreqBin[i] = floatCarFreq / 200;
+		}
+		else if (intBaud == 167)
+		{
+			intCP[i] = 6;  // Need to optimize (little difference between 6 and 12 @ wgn5, 2 Car 500 Hz)
+			intNforGoertzel[i] = 60;
+			dblFreqBin[i] = floatCarFreq / 200;
+		}
+*/	
+		// Get initial Reference Phase		
+
+		GoertzelRealImagHann120(intFilteredMixedSamples, 0, intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+            
+		dblPhase = atan2f(dblImag, dblReal);
+		Track1CarPSK(floatCarFreq, strMod[0] - '0', FALSE, FALSE, dblPhase, TRUE);
+		intPSKPhase_1[i] = -1000 * dblPhase;  // negative sign compensates for phase reverse after mixing
+
+		// Set initial mag from Reference Phase (which should be full power)
+		// Done here as well as in initQAM for pkt where we may switch mode midpacket
+
+		intCarMagThreshold[i] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		intCarMagThreshold[i] *= 0.75;
+
+		floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+	}
+}
+
+int Demod1CarPSKChar(int Start, int Carrier);
+void SavePSKSamples(int i);
+
+
+short WeightedAngleAvg(short intAng1, short intAng2);
+
+int CheckCarrierPairPSK(int Base, int Dup, int frameLen)
+{
+	int i, Len;
+	
+	Debugprintf("DemodPSK Carriers %d and %d", Base, Dup);
+
+	Decode1CarPSK(Base, FALSE);
+	Len = CorrectRawDataWithRS(&bytFrameData[Base][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);
+
+	if (CarrierOk[Base])
+	{
+		// No need to decode 2nd
+
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+		return Len + frameLen;
+	}
+	
+	Debugprintf("DemodPSK Carrier %d bad, trying %d", Base, Dup);
+
+	Decode1CarPSK(Dup, FALSE);			// Decode Dup carrier
+	Len =  CorrectRawDataWithRS(&bytFrameData[Dup][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);	// Save as carrier 1
+	
+	if (CarrierOk[Base])
+	{
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+		bytFrameData[Base][0] = Len;
+		memcpy(&bytFrameData[Base][1], &bytData[frameLen], Len);		// Any retry will use first copy without new decode
+		return Len + frameLen;
+	}
+
+
+	// Try to average phases for the two carriers
+
+	Debugprintf("DemodPSK both bad, trying average");
+
+	for (i = 0; i <intPhasesLen; i++)
+	{
+		intPhases[Base][i] = WeightedAngleAvg(intPhases[Base][i], intPhases[Dup][i]);
+	}
+	
+	// Try decode again on averages
+
+	Decode1CarPSK(Base, FALSE);
+	Len = CorrectRawDataWithRS(&bytFrameData[Base][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);
+
+	if (CarrierOk[Base])
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+		
+	return Len + frameLen;
+}
+
+
+void DemodPSK()
+{
+	int Used[MAXCAR] = {0}, Carrier;
+	int Start = 0, i;
+	int MemARQRetries = 0;
+
+	// We can't wait for the full frame as we don't have enough RAM, so
+	// we do one DMA Buffer at a time, until we run out or end of frame
+
+	// Only continue if we have enough samples
+	
+	intPSKMode = strMod[0] - '0';
+
+	while (State == AcquireFrame)
+	{
+		if (intFilteredMixedSamplesLength < intPSKMode * intSampPerSym + 10) // allow for a few phase corrections
+		{
+			// Move any unprocessessed data down buffer
+
+			//	(while checking process - will use cyclic buffer eventually
+
+			if (intFilteredMixedSamplesLength > 0 && Start > 0)
+				memmove(intFilteredMixedSamples,
+					&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+			return;
+		}
+		
+
+		if (PSKInitDone == 0)		// First time through
+		{	
+			if (intFilteredMixedSamplesLength < 2 * intPSKMode * intSampPerSym + 10) 
+				return;				// Wait for at least 2 chars worth
+
+			InitDemodPSK();
+			intFilteredMixedSamplesLength -= intSampPerSym;
+			if (intFilteredMixedSamplesLength < 0)
+				Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+			Start += intSampPerSym;	
+		}
+
+		// If this is a multicarrier mode, we must call the
+		// decode char routing for each carrier
+
+		if (intNumCar == 1)
+			floatCarFreq = 1500;
+		else
+			floatCarFreq = 1400 + (intNumCar / 2) * 200; // start at the highest carrier freq which is actually the lowest transmitted carrier due to Reverse sideband mixing
+
+		Used[0] = Demod1CarPSKChar(Start, 0);
+
+		if (intNumCar > 1)
+		{
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[1] = Demod1CarPSKChar(Start, 1);
+		}
+
+		if (intNumCar > 2)
+		{
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Used[2] = Demod1CarPSKChar(Start, 2);
+			
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Used[3] = Demod1CarPSKChar(Start, 3);
+		}
+
+		if (intNumCar > 4)
+		{
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[4] = Demod1CarPSKChar(Start, 4);
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[5] = Demod1CarPSKChar(Start, 5);
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[6] = Demod1CarPSKChar(Start, 6);
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[7] = Demod1CarPSKChar(Start, 7);
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[8] = Demod1CarPSKChar(Start, 8);
+			intPhasesLen -= intPSKMode;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+
+			Used[9] = Demod1CarPSKChar(Start, 9);	
+		}
+
+		if (intPSKMode == 4)
+			SymbolsLeft--;		// number still to decode
+		else
+			SymbolsLeft -=3;
+
+		// If/when we reenable phase correstion we can take average of Used values.
+		// ?? Should be also keep start value per carrier ??
+
+		Start += Used[0];
+		intFilteredMixedSamplesLength -= Used[0];
+
+		if (intFilteredMixedSamplesLength < 0)
+			Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+		if (SymbolsLeft > 0)
+			continue;	
+
+		// Decode the phases
+
+		DecodeCompleteTime = Now;
+
+//		CorrectPhaseForTuningOffset(&intPhases[0][0], intPhasesLen, strMod);
+			
+//		if (intNumCar > 1)
+//			CorrectPhaseForTuningOffset(&intPhases[1][0], intPhasesLen, strMod);
+			
+		if (intNumCar > 2)
+		{
+//			CorrectPhaseForTuningOffset(&intPhases[2][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[3][0], intPhasesLen, strMod);
+		}
+		if (intNumCar > 4)
+		{
+//			CorrectPhaseForTuningOffset(&intPhases[4][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[5][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[6][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[7][0], intPhasesLen, strMod);
+		}
+
+		// Rick uses the last carier for Quality
+		intLastRcvdFrameQuality = UpdatePhaseConstellation(&intPhases[intNumCar - 1][0], &intMags[intNumCar - 1][0], strMod[0] - '0', FALSE, FALSE);
+
+		// prepare for next
+
+		State = SearchingForLeader;
+		DiscardOldSamples();
+		ClearAllMixedSamples();
+
+		if (strchr(strMod, 'R'))
+		{
+			// Robust Mode - data is repeated (1-2 or 1-6, 2-7, etc
+
+			if (intNumCar == 2)
+			{
+				frameLen = CheckCarrierPairPSK(0, 1, 0);
+				return;
+			}
+
+			//Only have 2 or 10 (500 or 2500 modes)
+
+
+			frameLen = CheckCarrierPairPSK(0, 5, 0);
+			frameLen = CheckCarrierPairPSK(1, 6, frameLen);
+			frameLen = CheckCarrierPairPSK(2, 7, frameLen);
+			frameLen = CheckCarrierPairPSK(3, 8, frameLen);
+			frameLen = CheckCarrierPairPSK(4, 9, frameLen);
+
+			return;
+		}
+
+		// Non -robust
+
+		frameLen = 0;
+
+		for (i = 0; i < intNumCar; i++)	
+		{
+			Decode1CarPSK(i, FALSE);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[i][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, i);
+		}
+
+		// If variable length packet frame header we only have header - leave rx running
+		
+		if (intFrameType == PktFrameHeader)
+		{
+			State = SearchingForLeader;
+			
+			// Save any unused samples
+			
+			if (intFilteredMixedSamplesLength > 0 && Start > 0)
+				memmove(intFilteredMixedSamples,
+					&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+			return;
+		}
+	
+#ifdef MEMORYARQ
+
+		for (Carrier = 0; Carrier < intNumCar; Carrier++)
+		{
+			if (!CarrierOk[Carrier])
+			{
+				// Decode error - save data for MEM ARQ
+
+				SavePSKSamples(Carrier);
+				
+				if (intSumCounts[Carrier] > 1)
+				{
+					Decode1CarQAM(Carrier); // try to decode based on the WeightedAveragePhases
+					MemARQRetries++;
+				}
+			}
+		}
+
+		if (MemARQRetries)
+		{
+			// We've retryed to decode - see if ok now
+
+			int OKNow = TRUE;
+
+			Debugprintf("DemodPSK retry RS on MEM ARQ Corrected frames");
+			frameLen = 0;
+	
+			for (Carrier = 0; Carrier < intNumCar; Carrier++)
+			{
+				frameLen += CorrectRawDataWithRS(bytFrameData[Carrier], bytData, intDataLen, intRSLen, intFrameType, Carrier);
+				if (CarrierOk[Carrier] == 0)
+					OKNow = FALSE;
+			}
+
+			if (OKNow && AccumulateStats) 
+				intGoodPSKSummationDecodes++;
+		}
+#endif
+	}
+	return;
+}
+
+// Function to demodulate one carrier for all PSK frame types
+int Demod1CarPSKChar(int Start, int Carrier)
+{
+	// Converts intSample to an array of differential phase and magnitude values for the Specific Carrier Freq
+	// intPtr should be pointing to the approximate start of the first reference/training symbol (1 of 3) 
+	// intPhase() is an array of phase values (in milliradians range of 0 to 6283) for each symbol 
+	// intMag() is an array of Magnitude values (not used in PSK decoding but for constellation plotting or QAM decoding)
+	// Objective is to use Minimum Phase Error Tracking to maintain optimum pointer position
+
+	//	This is called for one DMA buffer of samples (normally 1200)
+
+	float dblReal, dblImag;
+	int intMiliRadPerSample = floatCarFreq * M_PI / 6;
+	int i;
+	int intNumOfSymbols = intPSKMode;
+	int origStart = Start;;
+
+	if (CarrierOk[Carrier])		// Already decoded this carrier?
+	{
+		intPhasesLen += intNumOfSymbols;
+		return intSampPerSym * intNumOfSymbols;
+	}
+
+	for (i = 0; i <  intNumOfSymbols; i++)
+	{
+		GoertzelRealImag(intFilteredMixedSamples, Start, intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+//		GoertzelRealImagHann120(intFilteredMixedSamples, Start, intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+	
+		intMags[Carrier][intPhasesLen] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		intPSKPhase_0[Carrier] = -1000 * atan2f(dblImag, dblReal);
+		intPhases[Carrier][intPhasesLen] = (ComputeAng1_Ang2(intPSKPhase_0[Carrier], intPSKPhase_1[Carrier]));
+
+/*
+		if (Carrier == 0)
+		{
+			Corrections = Track1CarPSK(floatCarFreq, strMod, atan2f(dblImag, dblReal), FALSE);
+
+			if (Corrections != 0)
+			{
+				Start += Corrections;
+
+				if (intCP[i] == 0)
+					GoertzelRealImagHanning(intFilteredMixedSamples, Start, intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+				else
+					GoertzelRealImag(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+
+				intPSKPhase_0[Carrier] = 1000 * atan2f(dblImag, dblReal);
+			}
+		}
+*/
+		intPSKPhase_1[Carrier] = intPSKPhase_0[Carrier];
+		intPhasesLen++;
+		Start += intSampPerSym;
+	
+	}
+	if (AccumulateStats)
+		intPSKSymbolCnt += intNumOfSymbols;
+
+	return (Start - origStart);	// Symbols we've consumed
+}
+
+VOID InitDemodQAM()
+{
+	// Called at start of frame
+
+	int i;
+	float dblPhase, dblReal, dblImag;
+
+	intPSKMode = 8;				// 16QAM uses 8 PSK
+	dblPhaseInc = 2 * M_PI * 1000 / 8;
+	intPhasesLen = 0;
+
+	PSKInitDone = TRUE;
+
+	intSampPerSym = 120;
+
+	if (intNumCar == 1)
+		floatCarFreq = 1500;
+	else
+		floatCarFreq = 1400 + (intNumCar / 2) * 200; // start at the highest carrier freq which is actually the lowest transmitted carrier due to Reverse sideband mixing
+  
+	for (i= 0; i < intNumCar; i++)
+	{
+		// Only 100 Hz for QAM
+						
+		intCP[i] = 0;
+		intNforGoertzel[i] = 120;
+		dblFreqBin[i] = floatCarFreq / 100;
+	
+		// Get initial Reference Phase
+		
+		GoertzelRealImagHanning(intFilteredMixedSamples, intCP[i], intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+		dblPhase = atan2f(dblImag, dblReal);
+
+		// Set initial mag from Reference Phase (which should be full power)
+
+		intCarMagThreshold[i] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		intCarMagThreshold[i] *= 0.75;
+
+		Track1CarPSK(floatCarFreq, 8, TRUE, FALSE, dblPhase, TRUE);
+		intPSKPhase_1[i] = 1000 * dblPhase;
+		floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+	}
+}
+
+int Demod1CarQAMChar(int Start, int Carrier);
+
+
+//	Function to average two angles using magnitude weighting
+
+short WeightedAngleAvg(short intAng1, short intAng2)
+{
+	// Ang1 and Ang 2 are in the range of -3142 to + 3142 (miliradians)
+	// works but should come up with a routine that avoids Sin, Cos, Atan2
+    // Modified in Rev 0.3.5.1 to "weight" averaging by intMag1 and intMag2 (why!!!)
+
+	float dblSumX, dblSumY;
+
+	dblSumX = cosf(intAng1 / 1000.0) + cosf(intAng2 / 1000.0);
+	dblSumY = sinf(intAng1 / 1000.0) + sinf(intAng2 / 1000.0);
+        
+	return (1000 * atan2f(dblSumY, dblSumX));
+}
+
+#ifdef MEMORYARQ
+
+void SaveQAMSamples(int i)
+{
+	int m;
+
+	if (intSumCounts[i] == 0)
+	{
+		// First try - initialize Sum counts Phase average and Mag Average 
+
+		for (m = 0; m < intPhasesLen; m++)
+		{
+			intCarPhaseAvg[i][m] = intPhases[i][m];
+			intCarMagAvg[i][m] = intMags[i][m];
+		}
+	}
+	else
+	{
+		for (m = 0; m < intPhasesLen; m++)
+		{
+			intCarPhaseAvg[i][m] = WeightedAngleAvg(intCarPhaseAvg[i][m], intPhases[i][m]);
+			intPhases[i][m] = intCarPhaseAvg[i][m];
+			// Use simple weighted average for Mags 
+			intCarMagAvg[i][m] = (intCarMagAvg[i][m] * intSumCounts[i] + intMags[i][m]) / (intSumCounts[i] + 1);		
+			intMags[i][m] = intCarMagAvg[i][m];
+		}
+	}
+	intSumCounts[i]++;
+}
+
+void SavePSKSamples(int i)
+{
+	int m;
+
+	if (intSumCounts[i] == 0)
+	{
+		// First try - initialize Sum counts Phase average and Mag Average 
+
+		for (m = 0; m < intPhasesLen; m++)
+		{
+			intCarPhaseAvg[i][m] = intPhases[i][m];
+		}
+	}
+	else
+	{
+		for (m = 0; m < intPhasesLen; m++)
+		{
+			intCarPhaseAvg[i][m] = WeightedAngleAvg(intCarPhaseAvg[i][m], intPhases[i][m]);
+			intPhases[i][m] = intCarPhaseAvg[i][m];
+		}
+	}
+	intSumCounts[i]++;
+}			
+
+#endif
+
+int CheckCarrierPair(int Base, int Dup, int frameLen)
+{
+	int i, Len;
+	
+	Debugprintf("DemodQAMR Carriers %d and %d", Base, Dup);
+
+	Decode1CarQAM(Base);
+	Len = CorrectRawDataWithRS(&bytFrameData[Base][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);
+
+	if (CarrierOk[Base])
+	{
+		// No need to decode 2nd
+
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+		Debugprintf("DemodQAMR Returning Len %d", Len);
+		return Len + frameLen;
+	}
+	
+	Debugprintf("DemodQAMR Carrier %d bad, trying %d", Base, Dup);
+
+	Decode1CarQAM(Dup);			// Decode Dup carrier
+	Len =  CorrectRawDataWithRS(&bytFrameData[Dup][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);	// Save as carrier 1
+	
+	if (CarrierOk[Base])
+	{
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+		bytFrameData[Base][0] = Len;
+		memcpy(&bytFrameData[Base][1], &bytData[frameLen], Len);		// Any retry will use first copy without new decode
+		Debugprintf("DemodQAMR Returning Len %d", Len);
+		return Len + frameLen;
+	}
+	
+	// Try to average phases for the two carriers
+
+	Debugprintf("DemodQAMR both bad, trying average");
+
+	for (i = 0; i <intPhasesLen; i++)
+	{
+		intPhases[Base][i] = WeightedAngleAvg(intPhases[Base][i], intPhases[Dup][i]);
+		intMags[Base][i] = (intMags[Base][i] + intMags[Dup][i]) / 2;
+	}
+	
+	// Try decode again on averages
+
+	Decode1CarQAM(Base);
+	Len = CorrectRawDataWithRS(&bytFrameData[Base][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, Base);
+
+	if (CarrierOk[Base])
+		CarrierOk[Dup] = 1;		// So FrameOk test is passed
+
+	Debugprintf("DemodQAMR Returning Len %d", Len);
+		
+	return Len + frameLen;
+}
+
+BOOL DemodQAM()
+{
+	int Used = 0;
+	int Start = 0;
+	int i, MemARQOk = 0;
+
+	// We can't wait for the full frame as we don't have enough RAM, so
+	// we do one DMA Buffer at a time, until we run out or end of frame
+
+	// Only continue if we have enough samples
+
+	while (State == AcquireFrame)
+	{
+		if (intFilteredMixedSamplesLength < 8 * intSampPerSym + 10) // allow for a few phase corrections
+		{
+			// Move any unprocessessed data down buffer
+
+			//	(while checking process - will use cyclic buffer eventually
+
+			if (intFilteredMixedSamplesLength > 0)
+				memmove(intFilteredMixedSamples,
+					&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+			return FALSE;
+		}
+		
+		if (PSKInitDone == 0)		// First time through
+		{	
+			if (intFilteredMixedSamplesLength < 9 * intSampPerSym + 10) 
+				return FALSE;				// Wait for at least 2 chars worth
+
+			InitDemodQAM();
+			intFilteredMixedSamplesLength -= intSampPerSym;
+
+			Start += intSampPerSym;	
+		}
+
+		// If this is a multicarrier mode, we must call the
+		// decode char routine for each carrier
+
+		if (intNumCar == 1)
+			floatCarFreq = 1500;
+		else
+			floatCarFreq = 1400 + (intNumCar / 2) * 200; // start at the highest carrier freq which is actually the lowest transmitted carrier due to Reverse sideband mixing
+
+	
+		Used = Demod1CarQAMChar(Start, 0);		// demods 2 phase values - enough for one char
+	
+		if (intNumCar > 1)
+		{
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 1);
+		}
+
+		if (intNumCar > 2)
+		{
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 2);
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 3);
+		}
+
+		if (intNumCar > 4)
+		{
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 4);
+	
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 5);
+
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 6);
+
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 7);	
+
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 8);	
+
+			intPhasesLen -= 2;
+			floatCarFreq -= 200;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+			Demod1CarQAMChar(Start, 9);	
+		}
+
+		SymbolsLeft--;		// number still to decode - we've done one
+	
+		Start += Used;
+		intFilteredMixedSamplesLength -= Used;
+
+		if (SymbolsLeft <= 0)	
+		{
+			// Frame complete - decode it
+
+			DecodeCompleteTime = Now;
+
+//		CorrectPhaseForTuningOffset(&intPhases[0][0], intPhasesLen, strMod);
+			
+//		if (intNumCar > 1)
+//			CorrectPhaseForTuningOffset(&intPhases[1][0], intPhasesLen, strMod);
+			
+		if (intNumCar > 2)
+		{
+//			CorrectPhaseForTuningOffset(&intPhases[2][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[3][0], intPhasesLen, strMod);
+		}
+		if (intNumCar > 4)
+		{
+//			CorrectPhaseForTuningOffset(&intPhases[4][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[5][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[6][0], intPhasesLen, strMod);
+//			CorrectPhaseForTuningOffset(&intPhases[7][0], intPhasesLen, strMod);
+		}
+
+			intLastRcvdFrameQuality = UpdatePhaseConstellation(&intPhases[intNumCar - 1][0], &intMags[intNumCar - 1][0], 8, TRUE, FALSE);
+
+			// prepare for next so we can exit when we have finished decode
+
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+
+			if (strchr(strMod, 'R'))
+			{
+				// Robust Mode - data is repeated (1-2 or 1-6, 2-7, etc
+
+				if (intNumCar == 2)
+				{
+					frameLen = CheckCarrierPair(0, 1, 0);
+					return TRUE;
+				}
+
+				//Only have 2 or 10 (500 or 2500 modes)
+
+
+				frameLen = CheckCarrierPair(0, 5, 0);
+				frameLen = CheckCarrierPair(1, 6, frameLen);
+				frameLen = CheckCarrierPair(2, 7, frameLen);
+				frameLen = CheckCarrierPair(3, 8, frameLen);
+				frameLen = CheckCarrierPair(4, 9, frameLen);
+
+				return TRUE;
+			}
+
+			// Non -robust
+
+			Decode1CarQAM(0);
+			frameLen = CorrectRawDataWithRS(&bytFrameData[0][0], bytData, intDataLen, intRSLen, intFrameType, 0);
+
+
+			if (intNumCar > 1)
+			{
+				Decode1CarQAM(1);
+				frameLen +=  CorrectRawDataWithRS(&bytFrameData[1][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 1);
+
+			}
+
+
+		if (intNumCar > 2)
+		{
+			Decode1CarQAM(2);
+			Decode1CarQAM(3);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[2][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 2);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[3][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 3);
+
+		}
+
+
+		if (intNumCar > 4)
+		{
+			Decode1CarQAM(4);
+			Decode1CarQAM(5);
+			Decode1CarQAM(6);
+			Decode1CarQAM(7);
+			Decode1CarQAM(8);
+			Decode1CarQAM(9);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[4][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 4);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[5][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 5);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[6][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 6);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[7][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 7);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[8][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 8);
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[9][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, 9);
+
+		}
+
+		// Check Data
+
+		if (memcmp(CarrierOk, Good, intNumCar) == 0)
+			return TRUE;
+
+		// Bad decode if we have Memory ARQ try it
+
+#ifdef MEMORYARQ
+
+		for (i = 0; i < intNumCar; i++)
+		{
+			if (!CarrierOk[i] && intFrameType != PktFrameHeader)
+			{
+				// Decode error - save data for MEM ARQ
+					
+				SaveQAMSamples(i);
+
+				if (intSumCounts[0] > 1)
+				{
+					MemARQOk = 1;
+					Decode1CarQAM(i); // try to decode based on the WeightedAveragePhases
+				}
+			}
+		}
+
+		if (MemARQOk == 0)			// Havent averaged yet
+			return TRUE;
+
+		// We've tried to correct - see if it worked
+
+		Debugprintf("DemodQAM Trying MEM ARQ");
+
+		// Non -robust
+
+		frameLen = 0;
+		
+		for (i = 0; i < intNumCar; i++)
+		{
+			frameLen +=  CorrectRawDataWithRS(&bytFrameData[i][0], &bytData[frameLen], intDataLen, intRSLen, intFrameType, i);
+		}
+
+		// Check Data
+
+		if (memcmp(CarrierOk, Good, intNumCar) == 0)
+		{
+			Debugprintf("DemodQAM MEM ARQ Corrected frame");
+			intGoodQAMSummationDecodes++;
+		}
+#endif
+		}
+	}
+	return TRUE;
+}
+
+int Demod1CarQAMChar(int Start, int Carrier)
+{
+	// Converts intSample to an array of differential phase and magnitude values for the Specific Carrier Freq
+	// intPtr should be pointing to the approximate start of the first reference/training symbol (1 of 3) 
+	// intPhase() is an array of phase values (in milliradians range of 0 to 6283) for each symbol 
+	// intMag() is an array of Magnitude values (not used in PSK decoding but for constellation plotting or QAM decoding)
+	// Objective is to use Minimum Phase Error Tracking to maintain optimum pointer position
+
+	//	This is called for one DMA buffer of samples (normally 1200)
+
+	float dblReal, dblImag;
+	int intMiliRadPerSample = floatCarFreq * M_PI / 6;
+	int i;
+	int intNumOfSymbols = 2;
+	int origStart = Start;;
+
+	if (CarrierOk[Carrier])		// Already decoded this carrier?
+	{
+		intPhasesLen += intNumOfSymbols;
+		return intSampPerSym * intNumOfSymbols;
+	}
+
+	for (i = 0; i <  intNumOfSymbols; i++)
+	{
+	//	GoertzelRealImag(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+		GoertzelRealImagHanning(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+		intMags[Carrier][intPhasesLen] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		intPSKPhase_0[Carrier] = 1000 * atan2f(dblImag, dblReal);
+		intPhases[Carrier][intPhasesLen] = -(ComputeAng1_Ang2(intPSKPhase_0[Carrier], intPSKPhase_1[Carrier]));
+
+
+/*
+		if (Carrier == 0)
+		{
+			Corrections = Track1CarPSK(floatCarFreq, strMod, atan2f(dblImag, dblReal), FALSE);
+
+			if (Corrections != 0)
+			{
+				Start += Corrections;
+
+		//	GoertzelRealImag(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+				GoertzelRealImagHanning(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+				intPSKPhase_0[Carrier] = 1000 * atan2f(dblImag, dblReal);
+			}
+		}
+*/
+		intPSKPhase_1[Carrier] = intPSKPhase_0[Carrier];
+		intPhasesLen++;
+		Start += intSampPerSym;
+	}
+       
+	if (AccumulateStats)
+		intQAMSymbolCnt += intNumOfSymbols;
+
+	return (Start - origStart);	// Symbols we've consumed
+}
+
+
+extern int bytQDataInProcessLen;
+
+
+//	function to decode one carrier from tones (used to decode from Averaged intToneMags) 
+
+BOOL Decode1Car4FSKFromTones(UCHAR * bytData, int intToneMags)
+{
+	//	Decodes intToneMags() to an array of bytes   
+    //	Updates bytData() with decoded 
+
+/*
+	UCHAR bytSym;
+	int intIndex;
+
+        ReDim bytData(intToneMags.Length \ 16 - 1)
+
+        For i As Integer = 0 To bytData.Length - 1 ' For each data byte
+            intIndex = 16 * i
+            For j As Integer = 0 To 3 ' for each 4FSK symbol (2 bits) in a byte
+                If intToneMags(intIndex) > intToneMags(intIndex + 1) And intToneMags(intIndex) > intToneMags(intIndex + 2) And intToneMags(intIndex) > intToneMags(intIndex + 3) Then
+                    bytSym = 0
+                ElseIf intToneMags(intIndex + 1) > intToneMags(intIndex) And intToneMags(intIndex + 1) > intToneMags(intIndex + 2) And intToneMags(intIndex + 1) > intToneMags(intIndex + 3) Then
+                    bytSym = 1
+                ElseIf intToneMags(intIndex + 2) > intToneMags(intIndex) And intToneMags(intIndex + 2) > intToneMags(intIndex + 1) And intToneMags(intIndex + 2) > intToneMags(intIndex + 3) Then
+                    bytSym = 2
+                Else
+                    bytSym = 3
+                End If
+                bytData(i) = (bytData(i) << 2) + bytSym
+                intIndex += 4
+            Next j
+        Next i
+        Return True
+    End Function  '  Decode1Car4FSKFromTones
+*/
+	return TRUE;
+}
+
+/*    ' Function to decode one carrier from tones (used to decode from Averaged intToneMags) 
+    Private Function Decode1Car8FSKFromTones(ByRef bytData() As Byte, ByRef intToneMags() As Int32) As Boolean
+        ' Decodes intToneMags() to an array of bytes   
+        ' Updates bytData() with decoded 
+
+        Dim bytSym As Byte
+        Dim intThreeBytes As Int32
+        ReDim bytData(3 * intToneMags.Length \ 64 - 1)
+        Dim intMaxMag As Int32
+        For i As Integer = 0 To (bytData.Length \ 3) - 1   ' For each group of 3 bytes data byte
+            intThreeBytes = 0
+            For j As Integer = 0 To 7 ' for each group of 8 symbols (24 bits) 
+                intMaxMag = 0
+                For k As Integer = 0 To 7 ' for each of 8 possible tones per symbol
+                    If intToneMags((i * 64) + 8 * j + k) > intMaxMag Then
+                        intMaxMag = intToneMags((i * 64) + 8 * j + k)
+                        bytSym = k
+                    End If
+                Next k
+                intThreeBytes = (intThreeBytes << 3) + bytSym
+            Next j
+            bytData(3 * i) = (intThreeBytes And &HFF0000) >> 16
+            bytData(3 * i + 1) = (intThreeBytes And &HFF00) >> 8
+            bytData(3 * i + 2) = (intThreeBytes And &HFF)
+        Next i
+        Return True
+    End Function  '  Decode1Car8FSKFromTones
+
+    ' Function to decode one carrier from tones (used to decode from Averaged intToneMags) 
+    Private Function Decode1Car16FSKFromTones(ByRef bytData() As Byte, ByRef intToneMags() As Int32) As Boolean
+        ' Decodes intToneMags() to an array of bytes   
+        ' Updates bytData() with decoded tones 
+
+        Dim bytSym As Byte
+        Dim intMaxMag As Int32
+        ReDim bytData(intToneMags.Length \ 32 - 1)
+        For i As Integer = 0 To bytData.Length - 1 ' For each data byte
+            For j As Integer = 0 To 1 ' for each 16FSK symbol (4 bits) in a byte
+                intMaxMag = 0
+                For k As Integer = 0 To 15
+                    If intToneMags(i * 32 + 16 * j + k) > intMaxMag Then
+                        intMaxMag = intToneMags(i * 32 + 16 * j + k)
+                        bytSym = k
+                    End If
+                Next k
+                bytData(i) = (bytData(i) << 4) + bytSym
+            Next j
+        Next i
+        Return True
+    End Function  '  Decode1Car16FSKFromTones
+
+*/
+
+
+
+//	Subroutine to update the Busy detector when not displaying Spectrum or Waterfall (graphics disabled)
+ 		
+extern int LastBusyCheck;
+
+extern BOOL blnBusyStatus;
+
+int intWaterfallRow = 0;
+
+
+
+void UpdateBusyDetector(short * bytNewSamples)
+{
+	float dblReF[1024];
+	float dblImF[1024];
+	float dblMag[206];
+
+	float dblMagAvg = 0;
+	int intTuneLineLow, intTuneLineHi, intDelta;
+	int i;
+	int BusyFlag;
+
+
+	if (ProtocolState > DISC)		// ' Only process busy when in DISC state
+		return;
+
+	if (State != SearchingForLeader)
+		return;						// only when looking for leader
+
+	if (Now - LastBusyCheck < 100)
+		return;
+
+	LastBusyCheck = Now;
+
+	FourierTransform(1024, bytNewSamples, &dblReF[0], &dblImF[0], FALSE);
+
+	for (i = 0; i < 206; i++)
+	{
+		//	starting at ~300 Hz to ~2700 Hz Which puts the center of the signal in the center of the window (~1500Hz)
+
+		dblMag[i] = powf(dblReF[i + 25], 2) + powf(dblImF[i + 25], 2);	 // first pass 
+		dblMagAvg += dblMag[i];
+	}
+
+	// Not sure about this as we use variable bandwidth frames. For now use 500
+
+	intDelta = (500 / 2 + TuningRange) / 11.719f;
+
+	intTuneLineLow = max((103 - intDelta), 3);
+	intTuneLineHi = min((103 + intDelta), 203);
+
+	// At the moment we only get here what seaching for leader,
+	// but if we want to plot spectrum we should call
+	// it always
+
+	BusyFlag = BusyDetect3(dblMag, intTuneLineLow, intTuneLineHi);
+
+	if (BusyFlag == 0)
+	{
+		if (BusyCount == 0)
+			blnBusyStatus = 0;
+		else
+			BusyCount--;
+	}
+	else
+	{
+		blnBusyStatus = 1;
+		BusyCount = 10;			// Try delaying busy off a bit
+	}
+ 
+	if (blnBusyStatus && !blnLastBusyStatus)
+	{
+		Debugprintf("BUSY TRUE");
+	}
+	//    stcStatus.Text = "True"
+		//    queTNCStatus.Enqueue(stcStatus)
+		//    'Debug.WriteLine("BUSY TRUE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+	else if (blnLastBusyStatus && !blnBusyStatus)
+	{
+		Debugprintf("BUSY FALSE");
+	}
+
+	blnLastBusyStatus = blnBusyStatus;
+
+}
+
diff --git a/UZ7HOStuff-HPLaptop.h b/UZ7HOStuff-HPLaptop.h
new file mode 100644
index 0000000..ee79781
--- /dev/null
+++ b/UZ7HOStuff-HPLaptop.h
@@ -0,0 +1,1023 @@
+//
+//	 My port of UZ7HO's Soundmodem
+//
+
+#define VersionString "0.0.0.59"
+#define VersionBytes {0, 0, 0, 59}
+
+// Added FX25. 4x100 FEC and V27 not Working and disabled
+
+// 0.8 V27 now OK.
+
+// 0.9 Digipeating added
+
+// 0.10 Fix second channel tones and calibrate
+
+// 0.11 Fix allocation of sessions to correct modem
+//		Fix DCD
+//		Fix Monitoring of Multiline packets
+//		Fix possible saving of wrong center freq
+//		Limit TX sample Q in Linux
+//
+
+// 0.12	Add AGWPE monitoring of received frames
+//		Fix DCD Threshold
+//		Fix KISS transparency issue
+
+// 0.13 Fix sending last few bits in FX.25 Mode
+
+// 0.14 Add "Copy on Select" to Trace Window
+
+// 0.15 Limit Trace window to 10000 lines
+
+// 0.16 Fix overwriting monitor window after scrollback
+
+// 0.17	Add GPIO and CAT PTT
+
+// 0.18	Add CM108/119 PTT
+
+// 0.19 Fix scheduling KISS frames
+
+// 0.20 Debug code added to RR processing
+
+// 0.21	Fix AGW monitor of multiple line packets
+//		Close ax.25 sessions if AGW Host session closes
+
+// 0.22	Add FEC Count to Session Stats
+
+// 0.23 Retry DISC until UA received or retry count exceeded
+
+// 0.24	More fixes to DISC handling
+
+// 0.26 Add OSS PulseAudio and HAMLIB support
+
+// 0.27 Dynamically load PulseAudio modules
+
+// 0.28 Add ARDOPPacket Mode
+
+// 0.29 Fix saving settings and geometry on close
+// 0.30 Retructure code to build with Qt 5.3
+//      Fix crash in nogui mode if pulse requested but not available
+//		Try to fix memory leaks
+
+// 0.31 Add option to run modems in seprate threads
+
+// 0.32	Fix timing problem with AGW connect at startup
+//		Add Memory ARQ
+//		Add Single bit "Correction"
+//		Fix error in 31 when using multiple decoders
+
+// 0.33 Fix Single bit correction
+//		More memory leak fixes
+
+// 0.34 Add API to set Modem and Center Frequency
+//		Fix crash in delete_incoming_mycalls
+
+// 0.35 Return Version in AGW Extended g response
+
+// 0.36 Fix timing problem on startup
+
+// 0.37 Add scrollbars to Device and Modem dialogs
+
+// 0.38 Change default CM108 name to /dev/hidraw0 on Linux
+
+// 0.39	Dont try to display Message Boxes in nogui mode.
+//		Close Device and Modem dialogs on Accept or Reject
+//		Fix using HAMLIB in nogui mode
+
+// 0.40	Fix bug in frame optimize when using 6 char calls
+
+// 0.41	Fix "glitch" on waterfall markers when changing modem freqs 
+
+// 0.42	Add "Minimize to Tray" option
+
+// 0.43 Add Andy's on_SABM fix.
+//		Fix Crash if KISS Data sent to AGW port
+
+// 0.44 Add UDP bridge.
+
+// 0.45 Add two more modems.
+// 0.46 Fix two more modems.
+
+// 0.47 Fix suprious DM when host connection lost
+//		Add CWID
+
+// 0.48 Send FRMR for unrecognised frame types
+
+// 0.49 Add Andy's FEC Tag correlation coode
+
+// 0.50 Fix Waterfall display when only using right channel
+//		Allow 1200 baud fsk at other center freqs
+//		Add Port numbers to Window title and Try Icon tooltip
+//		Fix calculation of filters for multiple decoders
+//		Add RX Offset setting (for satellite operation
+
+// 0.51	Fix Multithreading with more that 2 modems
+
+// 0.52	Add Stdin as source on Linux
+
+// 0.53	Use Byte instead of byte as byte is defined in newer versions of gcc
+
+// 0.54 Fix for ALSA problem on new pi OS
+
+// 0.55 Fix for compiler error with newer compiler
+
+// 0.56	Fix errors in Config.cpp			June 22
+
+// 0.57	Add Restart Waterfall action		August 22
+
+// 0.58 Add RSID							Sept 2022
+
+// 0.59 Add config of Digi Calls			Dec 2022
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UNUSED(x) (void)(x)
+
+#ifdef M_PI
+#undef M_PI
+#endif
+
+#define M_PI       3.1415926f
+
+#define pi M_PI
+
+#ifndef WIN32
+#define _strdup strdup
+#endif
+
+	//#define NULL ((void *)0)
+
+	//Delphi Types remember case insensitive
+
+#define single float
+#define boolean int
+#define Byte unsigned char		//                  0 to 255
+#define Word unsigned short	//                        0 to 65,535
+#define SmallInt short 		//                  -32,768 to 32,767
+#define LongWord unsigned int	//                        0 to 4,294,967,295
+ //  Int6 : Cardinal; //                        0 to 4,294,967,295
+#define LongInt int			//           -2,147,483,648 to 2,147,483,647
+#define Integer int  //           -2,147,483,648 to 2,147,483,647
+//#define Int64 long long		 // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+
+//#define Byte unsigned char		//                  0 to 255
+#define word unsigned short	//                        0 to 65,535
+#define smallint short 		//                  -32,768 to 32,767
+#define longword unsigned int	//                        0 to 4,294,967,295
+ //  Int6 : Cardinal; //                        0 to 4,294,967,295
+#define longint int			//           -2,147,483,648 to 2,147,483,647
+#define integer int  //           -2,147,483,648 to 2,147,483,647
+
+typedef unsigned long ULONG;
+
+#define UCHAR unsigned char
+#define UINT unsigned int
+#define BOOL int
+#define TRUE 1
+#define FALSE 0
+
+// Soundcard Channels
+
+#define NONE 0
+#define LEFT 1
+#define RIGHT 2
+
+#define nr_emph 2
+
+#define decodedNormal 4 //'|'
+#define decodedFEC    3 //'F'
+#define decodedMEM	  2 //'#'
+#define decodedSingle 1 //'$'
+
+
+// Seems to use Delphi TStringList for a lot of queues. This seems to be a list of pointers and a count
+// Each pointer is to a Data/Length pair
+//Maybe something like
+
+typedef struct string_T
+{
+	unsigned char * Data;
+	int Length;
+	int AllocatedLength;				// A reasonable sized block is allocated at the start to speed up adding chars
+
+}string;
+
+typedef struct TStringList_T
+{
+	int Count;
+	string ** Items;
+
+} TStringList;
+
+// QPSK struct
+
+typedef struct TQPSK_t
+{
+	UCHAR tx[4];
+	int count[4];
+	UCHAR rx[4];
+	UCHAR mode;
+} TPQSK;
+
+
+typedef struct TKISSMode_t
+{
+	string * data_in;
+	void * Socket;				// Used as a key
+
+	// Not sure what rest are used for. Seems to be one per channel
+
+	TStringList buffer[4];			// Outgoing Frames
+
+} TKISSMode;
+
+typedef struct  TMChannel_t
+{
+
+	single prev_LPF1I_buf[4096];
+	single prev_LPF1Q_buf[4096];
+	single prev_dLPFI_buf[4096];
+	single prev_dLPFQ_buf[4096];
+	single prev_AFCI_buf[4096];
+	single prev_AFCQ_buf[4096];
+	single AngleCorr;
+	single MUX_osc;
+	single AFC_IZ1;
+	single AFC_IZ2;
+	single AFC_QZ1;
+	single AFC_QZ2;
+	single AFC_bit_buf1I[1024];
+	single AFC_bit_buf1Q[1024];
+	single AFC_bit_buf2[1024];
+	single AFC_IIZ1;
+	single AFC_QQZ1;
+
+} TMChannel;
+
+typedef struct TFX25_t
+{
+	string  data;
+	Byte  status;
+	Byte  bit_cnt;
+	Byte  byte_rx;
+	unsigned long long tag;
+	Byte  size;
+	Byte  rs_size;
+	Byte size_cnt;
+} TFX25;
+
+
+
+typedef struct TDetector_t
+{
+	struct TFX25_t fx25[4];
+	TStringList	mem_ARQ_F_buf[5];
+	TStringList mem_ARQ_buf[5];
+	float pll_loop[5];
+	float last_sample[5];
+	UCHAR ones[5];
+	UCHAR zeros[5];
+	float bit_buf[5][1024];
+	float bit_buf1[5][1024];
+	UCHAR sample_cnt[5];
+	UCHAR last_bit[5];
+	float PSK_IZ1[5];
+	float PSK_QZ1[5];
+	float PkAmpI[5];
+	float PkAmpQ[5];
+	float PkAmp[5];
+	float PkAmpMax[5];
+	int newpkpos[5];
+	float AverageAmp[5];
+	float AngleCorr[5];
+	float MinAmp[5];
+	float MaxAmp[5];
+	float MUX3_osc[5];
+	float MUX3_1_osc[5];
+	float MUX3_2_osc[5];
+	float Preemphasis6[5];
+	float Preemphasis12[5];
+	float PSK_AGC[5];
+	float AGC[5];
+	float AGC1[5];
+	float AGC2[5];
+	float AGC3[5];
+	float AGC_max[5];
+	float AGC_min[5];
+	float AFC_IZ1[5];
+	float AFC_IZ2[5];
+	float AFC_QZ1[5];
+	float AFC_QZ2[5];
+
+	UCHAR last_rx_bit[5];
+	UCHAR bit_stream[5];
+	UCHAR byte_rx[5];
+	UCHAR bit_stuff_cnt[5];
+	UCHAR bit_cnt[5];
+	float bit_osc[5];
+	UCHAR frame_status[5];
+	string rx_data[5];
+	string FEC_rx_data[5];
+	//
+	UCHAR FEC_pol[5];
+	unsigned short FEC_err[5];
+	unsigned long long FEC_header1[5][2];
+	unsigned short FEC_blk_int[5];
+	unsigned short FEC_len_int[5];
+	unsigned short FEC_len[5];
+
+	unsigned short FEC_len_cnt[5];
+	
+	UCHAR rx_intv_tbl[5][4];
+	UCHAR rx_intv_sym[5];
+	UCHAR rx_viterbi[5];
+	UCHAR viterbi_cnt[5];
+	//	  SurvivorStates [1..4,0..511] of TSurvivor;
+		  //
+	TMChannel MChannel[5][4];
+
+	float AFC_dF_avg[5];
+	float AFC_dF[5];
+	float AFC_bit_osc[5];
+	float AFC_bit_buf[5][1024];
+	unsigned short AFC_cnt[5];
+
+	string raw_bits1[5];
+	string raw_bits[5];
+	UCHAR last_nrzi_bit[5];
+
+	float BPF_core[5][2048];
+	float LPF_core[5][2048];
+
+	float src_INTR_buf[5][8192];
+	float src_INTRI_buf[5][8192];
+	float src_INTRQ_buf[5][8192];
+	float src_LPF1I_buf[5][8192];
+	float src_LPF1Q_buf[5][8192];
+
+	float src_BPF_buf[5][2048];
+	float src_Loop_buf[5][8192];
+	float prev_BPF_buf[5][4096];
+
+	float prev_LPF1I_buf[5][4096];
+	float prev_LPF1Q_buf[5][4096];
+	float prev_INTR_buf[5][16384];
+	float prev_INTRI_buf[5][16384];
+	float prev_INTRQ_buf[5][16384];
+
+	Byte emph_decoded;	
+	Byte rx_decoded;
+
+
+} TDetector;
+
+
+
+typedef struct AGWUser_t
+{
+	void *socket;
+	string * data_in;
+	TStringList AGW_frame_buf;
+	boolean	Monitor;
+	boolean	Monitor_raw;
+	boolean reportFreqAndModem;			// Can report modem and frequency to host
+
+} AGWUser;
+
+typedef struct  TAX25Info_t
+{
+	longint	stat_s_pkt;
+	longint stat_s_byte;
+	longint stat_r_pkt;
+	longint stat_r_byte;
+	longint stat_r_fc;
+	longint stat_fec_count;
+	time_t stat_begin_ses;
+	time_t stat_end_ses;
+	longint stat_l_r_byte;
+	longint stat_l_s_byte;
+
+} TAX25Info;
+
+typedef struct TAX25Port_t
+{
+	Byte hi_vs;
+	Byte vs;
+	Byte vr;
+	Byte PID;
+	TStringList in_data_buf;
+	TStringList frm_collector;
+	string frm_win[8];
+	string out_data_buf;
+	word t1;
+	word t2;
+	word t3;
+	Byte i_lo;
+	Byte i_hi;
+	word n1;
+	word n2;
+	word IPOLL_cnt;
+	TStringList frame_buf; //����� ������ �� ��������
+	TStringList I_frame_buf;
+	Byte status;
+	word clk_frack;
+	char corrcall[10];
+	char mycall[10];
+	UCHAR digi[56];
+	UCHAR Path[80];				// Path in ax25 format - added to save building it each time
+	UCHAR ReversePath[80];
+	int snd_ch;					// Simplifies parameter passing
+	int port;
+	int pathLen;
+	void * socket;
+	char kind[16];
+	TAX25Info info;
+} TAX25Port;
+
+
+#define LOGEMERGENCY 0 
+#define LOGALERT 1
+#define LOGCRIT 2 
+#define LOGERROR 3 
+#define LOGWARNING 4
+#define LOGNOTICE 5
+#define LOGINFO 6
+#define LOGDEBUG 7
+
+#define PTTRTS		1
+#define PTTDTR		2
+#define PTTCAT		4
+#define PTTCM108	8
+#define PTTHAMLIB	16
+
+// Status flags
+
+#define STAT_NO_LINK  0
+#define STAT_LINK 1
+#define STAT_CHK_LINK 2
+#define STAT_WAIT_ANS 3
+#define STAT_TRY_LINK 4
+#define STAT_TRY_UNLINK 5
+
+
+	// �md,Resp,Poll,Final,Digipeater flags
+#define 	SET_P 1
+#define 	SET_F 0
+#define 	SET_C 1
+#define 	SET_R 0
+#define 	SET_NO_RPT 0
+#define 	SET_RPT 1
+	// Frame ID flags
+#define 	I_FRM 0
+#define 	S_FRM 1
+#define 	U_FRM 2
+#define 	I_I 0
+#define 	S_RR 1
+#define 	S_RNR 5
+#define 	S_REJ 9
+#define		S_SREJ 0x0D
+#define 	U_SABM 47
+#define 	U_DISC 67
+#define 	U_DM 15
+#define 	U_UA 99
+#define 	U_FRMR 135
+#define 	U_UI 3
+	// PID flags
+#define 	PID_X25 0x01       // 00000001-CCIT X25 PLP
+#define 	PID_SEGMENT 0x08   // 00001000-Segmentation fragment
+#define 	PID_TEXNET 0xC3    // 11000011-TEXNET Datagram Protocol
+#define 	PID_LQ 0xC4        // 11001000-Link Quality Protocol
+#define 	PID_APPLETALK 0xCA // 11001010-Appletalk
+#define 	PID_APPLEARP 0xCB  // 11001011-Appletalk ARP
+#define 	PID_IP 0xCC        // 11001100-ARPA Internet Protocol
+#define 	PID_ARP 0xCD       // 11001101-ARPA Address Resolution Protocol
+#define 	PID_NET_ROM 0xCF   // 11001111-NET/ROM
+
+
+//	Sound interface buffer size
+
+#define SendSize 1024		// 100 mS for now
+#define ReceiveSize 512	// try 100 mS for now
+#define NumberofinBuffers 4
+
+#define Now getTicks()
+
+// #defines from all modules (?? is this a good idaa ??
+
+#define WIN_MAXIMIZED 0
+#define WIN_MINIMIZED 1
+#define MODEM_CAPTION 'SoundModem by UZ7HO'
+#define MODEM_VERSION '1.06'
+#define SND_IDLE 0
+#define SND_RX 1
+#define SND_TX 2
+#define BUF_EMPTY 0
+#define BUF_FULL 1
+#define DISP_MONO FALSE
+#define DISP_RGB TRUE
+#define MOD_IDLE 0
+#define MOD_RX 1
+#define MOD_TX 2
+#define MOD_WAIT 3
+#define TIMER_FREE 0
+#define TIMER_BUSY 1
+#define TIMER_OFF 2
+#define TIMER_EVENT_ON 3
+#define TIMER_EVENT_OFF 4
+#define DEBUG_TIMER 1
+#define DEBUG_WATERFALL 2
+#define DEBUG_DECODE 4
+#define DEBUG_SOUND 8
+#define IS_LAST TRUE
+#define IS_NOT_LAST FALSE
+#define modes_count 16
+#define SPEED_300 0
+#define SPEED_1200 1
+#define SPEED_600 2
+#define SPEED_2400 3
+#define SPEED_P1200 4
+#define SPEED_P600 5
+#define SPEED_P300 6
+#define SPEED_P2400 7
+#define SPEED_Q4800 8
+#define SPEED_Q3600 9
+#define SPEED_Q2400 10
+#define SPEED_MP400 11
+#define SPEED_DW2400 12
+#define SPEED_8P4800 13
+#define SPEED_AE2400 14
+#define SPEED_ARDOP 15
+
+#define MODE_FSK 0
+#define MODE_BPSK 1
+#define MODE_QPSK 2
+#define MODE_MPSK 3
+#define MODE_8PSK 4
+#define MODE_PI4QPSK 5
+#define MODE_ARDOP 6
+
+#define QPSK_SM 0
+#define QPSK_V26 1
+
+
+#define MODEM_8P4800_BPF 3200
+#define MODEM_8P4800_TXBPF 3400
+#define MODEM_8P4800_LPF 1000
+#define MODEM_8P4800_BPF_TAP 64
+#define MODEM_8P4800_LPF_TAP 8
+ //
+#define MODEM_MP400_BPF 775
+#define MODEM_MP400_TXBPF 850
+#define MODEM_MP400_LPF 70
+#define MODEM_MP400_BPF_TAP 256
+#define MODEM_MP400_LPF_TAP 128
+ //
+#define MODEM_DW2400_BPF 2400
+#define MODEM_DW2400_TXBPF 2500
+#define MODEM_DW2400_LPF 900
+#define MODEM_DW2400_BPF_TAP 256 //256
+#define MODEM_DW2400_LPF_TAP 32  //128
+ //
+#define MODEM_Q2400_BPF 2400
+#define MODEM_Q2400_TXBPF 2500
+#define MODEM_Q2400_LPF 900
+#define MODEM_Q2400_BPF_TAP 256 //256
+#define MODEM_Q2400_LPF_TAP 128  //128
+ //
+#define MODEM_Q3600_BPF 3600
+#define MODEM_Q3600_TXBPF 3750
+#define MODEM_Q3600_LPF 1350
+#define MODEM_Q3600_BPF_TAP 256
+#define MODEM_Q3600_LPF_TAP 128
+ //
+#define MODEM_Q4800_BPF 4800
+#define MODEM_Q4800_TXBPF 5000
+#define MODEM_Q4800_LPF 1800
+#define MODEM_Q4800_BPF_TAP 256
+#define MODEM_Q4800_LPF_TAP 128
+ //
+#define MODEM_P2400_BPF 4800
+#define MODEM_P2400_TXBPF 5000
+#define MODEM_P2400_LPF 1800
+#define MODEM_P2400_BPF_TAP 256
+#define MODEM_P2400_LPF_TAP 128
+ //
+#define MODEM_P1200_BPF 2400
+#define MODEM_P1200_TXBPF 2500
+#define MODEM_P1200_LPF 900
+#define MODEM_P1200_BPF_TAP 256
+#define MODEM_P1200_LPF_TAP 128
+ //
+#define MODEM_P600_BPF 1200
+#define MODEM_P600_TXBPF 1250
+#define MODEM_P600_LPF 400
+#define MODEM_P600_BPF_TAP 256
+#define MODEM_P600_LPF_TAP 128
+ //
+#define MODEM_P300_BPF 600
+#define MODEM_P300_TXBPF 625
+#define MODEM_P300_LPF 200
+#define MODEM_P300_BPF_TAP 256
+#define MODEM_P300_LPF_TAP 128
+ //
+#define MODEM_300_BPF 500
+#define MODEM_300_TXBPF 500
+#define MODEM_300_LPF 155
+#define MODEM_300_BPF_TAP 256
+#define MODEM_300_LPF_TAP 128
+ //
+#define MODEM_600_BPF 800
+#define MODEM_600_TXBPF 900
+#define MODEM_600_LPF 325
+#define MODEM_600_BPF_TAP 256
+#define MODEM_600_LPF_TAP 128
+ //
+#define MODEM_1200_BPF 1400
+#define MODEM_1200_TXBPF 1600
+#define MODEM_1200_LPF 650
+#define MODEM_1200_BPF_TAP 256
+#define MODEM_1200_LPF_TAP 128
+ //
+#define MODEM_2400_BPF 3200
+#define MODEM_2400_TXBPF 3200
+#define MODEM_2400_LPF 1400
+#define MODEM_2400_BPF_TAP 256
+#define MODEM_2400_LPF_TAP 128
+
+#define TX_SILENCE 0
+#define TX_DELAY 1
+#define TX_TAIL 2
+#define TX_NO_DATA 3
+#define TX_FRAME 4
+#define TX_WAIT_BPF 5
+
+
+#define FRAME_WAIT 0
+#define FRAME_LOAD 1
+#define RX_BIT0 0
+#define RX_BIT1 128
+#define DCD_WAIT_SLOT 0
+#define DCD_WAIT_PERSIST 1
+
+#define FX25_MODE_NONE  0
+#define FX25_MODE_RX  1
+#define FX25_MODE_TXRX 2
+#define FX25_TAG 0
+#define FX25_LOAD 1
+
+#define    MODE_OUR 0
+#define    MODE_OTHER 1
+#define    MODE_RETRY 2
+
+#define FRAME_FLAG 126		// 7e
+
+#define port_num 32		// ?? Max AGW sessions
+#define PKT_ERR 17		// Minimum packet size, bytes
+#define I_MAX 7			// Maximum number of packets
+
+
+	// externs for all modules
+
+#define ARDOPBufferSize 12000 * 100
+
+extern short ARDOPTXBuffer[4][12000 * 100];	// Enough to hold whole frame of samples
+
+extern int ARDOPTXLen[4];				// Length of frame
+extern int ARDOPTXPtr[4];				// Tx Pointer
+
+extern BOOL KISSServ;
+extern int KISSPort;
+
+extern BOOL AGWServ;
+extern int AGWPort;
+
+extern TStringList KISS_acked[];
+extern TStringList KISS_iacked[];
+
+extern TStringList all_frame_buf[5];
+
+extern unsigned short pkt_raw_min_len;
+extern int stat_r_mem;
+
+extern UCHAR diddles;
+
+extern int stdtones;
+extern int fullduplex;
+
+extern struct TQPSK_t qpsk_set[4];
+
+extern int NonAX25[5];
+
+extern short txtail[5];
+extern short txdelay[5];
+
+extern short modem_def[5];
+
+extern int emph_db[5];
+extern UCHAR emph_all[5];
+
+extern UCHAR modem_mode[5];
+
+extern UCHAR RCVR[5];
+extern int soundChannel[5];
+extern int modemtoSoundLR[4];
+
+extern short rx_freq[5];
+extern short rx_shift[5];
+extern short rx_baudrate[5];
+extern short rcvr_offset[5];
+
+extern int tx_hitoneraisedb[5];
+extern float tx_hitoneraise[5];
+
+
+extern UCHAR tx_status[5];
+extern float tx_freq[5];
+extern float tx_shift[5];
+extern unsigned short tx_baudrate[5];
+
+extern unsigned short bpf[5];
+extern unsigned short lpf[5];
+
+extern unsigned short txbpf[5];
+
+extern unsigned short  tx_BPF_tap[5];
+extern unsigned short  tx_BPF_timer[5];
+
+extern unsigned short  BPF_tap[5];
+extern unsigned short  LPF_tap[5];
+
+extern float tx_BPF_core[5][32768];
+extern float LPF_core[5][2048];
+
+extern UCHAR xData[256];
+extern UCHAR xEncoded[256];
+extern UCHAR xDecoded[256];
+
+extern float PI125;
+extern float PI375;
+extern float PI625;
+extern float PI875;
+extern 	float PI5;
+extern float PI25;
+extern float PI75;
+
+extern int max_frame_collector[4];
+extern boolean KISS_opt[4];
+
+#define MaxErrors 4
+
+extern BOOL MinOnStart;
+
+//RS TReedSolomon;
+//  Form1 TForm1;
+//  WaveFormat TWaveFormatEx;
+
+extern int UDPServ;
+extern long long udpServerSeqno;
+
+extern int Channels;
+extern int BitsPerSample;
+extern float TX_Samplerate;
+extern float RX_Samplerate;
+extern int RX_SR;
+extern int TX_SR;
+extern int RX_PPM;
+extern int TX_PPM;
+extern int tx_bufsize;
+extern int rx_bufsize;
+extern int tx_bufcount;
+extern int rx_bufcount;
+extern int fft_size;
+extern int  mouse_down[2];
+//UCHAR * RX_pBuf array[257];
+//  RX_header array[1..256] of TWaveHdr;
+//  TX_pBuf array[1..4,1..256] of pointer;
+//TX_header array[1..4,1..256] of TWaveHdr;
+extern UCHAR calib_mode[5];
+extern UCHAR snd_status[5];
+extern UCHAR buf_status[5];
+extern UCHAR tx_buf_num1[5];
+extern UCHAR tx_buf_num[5];
+extern int speed[5];
+extern int panels[6];
+
+extern float fft_window_arr[2048];
+//  fft_s,fft_d array[0..2047] of TComplex;
+extern short fft_buf[5][2048];
+extern UCHAR fft_disp[5][2048];
+//  bm array[1..4] of TBitMap;
+//  bm1,bm2,bm3 TBitMap;
+
+//  WaveInHandle hWaveIn;
+//  WaveOutHandle array[1..4] of hWaveOut;
+extern int RXBufferLength;
+
+// data1 PData16;
+
+extern int grid_time;
+extern int fft_mult;
+extern int fft_spd;
+extern int grid_timer;
+extern int stop_wf;
+extern int raduga;
+extern char snd_rx_device_name[32];
+extern char snd_tx_device_name[32];
+extern int snd_rx_device;
+extern int snd_tx_device;
+extern UCHAR mod_icon_status;
+extern UCHAR last_mod_icon_status;
+extern UCHAR icon_timer;
+//  TelIni TIniFile;
+extern char cur_dir[];
+//  TimerId1 cardinal;
+//  TimerId2 cardinal;
+extern UCHAR TimerStat1;
+extern UCHAR TimerStat2;
+extern int stat_log;
+
+extern char PTTPort[80];			// Port for Hardware PTT - may be same as control port.
+extern int PTTMode;
+extern int PTTBAUD ;
+
+extern char PTTOnString[128];
+extern char PTTOffString[128];
+
+extern UCHAR PTTOnCmd[64];
+extern UCHAR PTTOnCmdLen;
+
+extern UCHAR PTTOffCmd[64];
+extern UCHAR PTTOffCmdLen;
+
+extern int PTT_device;
+extern int RX_device;
+extern int TX_device;
+extern int TX_rotate;
+extern int UsingLeft;
+extern int UsingRight;
+extern int UsingBothChannels;
+extern int pttGPIOPin;
+extern int pttGPIOPinR;
+extern BOOL pttGPIOInvert;
+extern BOOL useGPIO;
+extern BOOL gotGPIO;
+extern int VID;
+extern int PID;
+extern char CM108Addr[80];
+extern int HamLibPort;
+extern char HamLibHost[];
+
+extern int SCO;
+extern int DualPTT;
+extern UCHAR  DebugMode;
+extern UCHAR TimerEvent;
+extern int nr_monitor_lines;
+extern int UTC_Tim;
+extern int MainPriority;
+//  MainThreadHandle THandle;
+extern UCHAR w_state;
+
+extern BOOL Firstwaterfall;
+extern BOOL Secondwaterfall;
+
+extern int dcd_threshold;
+extern int rxOffset;
+extern int chanOffset[4];
+
+extern boolean busy;
+extern boolean dcd[5];
+
+extern struct TKISSMode_t  KISS;
+
+extern boolean dyn_frack[4] ;
+extern Byte recovery[4];
+extern Byte users[4];
+
+extern int resptime[4];
+extern int slottime[4];
+extern int persist[4];
+extern int fracks[4];
+extern int frack_time[4];
+extern int idletime[4];
+extern int redtime[4];
+extern int IPOLL[4];
+extern int maxframe[4];
+extern int TXFrmMode[4];
+
+extern char MyDigiCall[4][512];
+extern char exclude_callsigns[4][512];
+extern char exclude_APRS_frm[4][512];
+
+extern TStringList  list_exclude_callsigns[4];
+extern TStringList list_exclude_APRS_frm[4];
+extern TStringList list_digi_callsigns[4];
+
+
+extern int SoundIsPlaying;
+extern int Capturing;
+
+extern struct TDetector_t  DET[nr_emph + 1][16];
+
+extern char CaptureDevice[80];
+extern char PlaybackDevice[80];
+
+extern TAX25Port AX25Port[4][port_num];
+
+extern int fx25_mode[4];
+
+extern int tx_fx25_size[4];
+extern int tx_fx25_size_cnt[4];
+extern int tx_fx25_mode[4];
+
+extern int SatelliteMode;
+
+// Function prototypes
+
+void KISS_send_ack(UCHAR port, string * data);
+void AGW_AX25_frame_analiz(int snd_ch, int RX, string * frame);
+void FIR_filter(float * src, unsigned short buf_size, unsigned short tap, float * core, float * dest, float * prev);
+void make_core_TXBPF(UCHAR snd_ch, float freq, float width);
+void OpenPTTPort();
+void ClosePTTPort();
+
+void RadioPTT(int snd_ch, BOOL PTTState);
+void put_frame(int snd_ch, string * frame, char * code, int  tx_stat, int excluded);
+void CloseCOMPort(int fd);
+void COMClearRTS(int fd);
+void COMClearDTR(int fd);
+unsigned int getTicks();
+char * ShortDateTime();
+void  write_ax25_info(TAX25Port * AX25Sess);
+void reverse_addr(Byte * path, Byte * revpath, int Len);
+string * get_mycall(string * path);
+TAX25Port * get_user_port_by_calls(int snd_ch, char *  CallFrom, char *  CallTo);
+TAX25Port * get_free_port(int snd_ch);
+void * in_list_incoming_mycall(Byte * path);
+boolean add_incoming_mycalls(void * socket, char * src_call);
+int get_addr(char * Calls, UCHAR * AXCalls);
+void reverse_addr(Byte * path, Byte * revpath, int Len);
+void set_link(TAX25Port * AX25Sess, UCHAR * axpath);
+void rst_timer(TAX25Port * AX25Sess);
+void set_unlink(TAX25Port * AX25Sess, Byte * path);
+unsigned short get_fcs(UCHAR * Data, unsigned short len);
+void KISSSendtoServer(void * sock, Byte * Msg, int Len);
+int ConvFromAX25(unsigned char * incall, char * outcall);
+BOOL ConvToAX25(char * callsign, unsigned char * ax25call);
+void Debugprintf(const char * format, ...);
+
+double pila(double x);
+
+void AGW_Raw_monitor(int snd_ch, string * data);
+
+// Dephi emulation functions
+
+string * Strings(TStringList * Q, int Index);
+void Clear(TStringList * Q);
+int Count(TStringList * List);
+
+string * newString();
+string * copy(string * Source, int StartChar, int Count);
+TStringList * newTStringList();
+
+void freeString(string * Msg);
+
+void initString(string * S);
+void initTStringList(TStringList* T);
+
+// Two delete() This is confusing!!
+// Not really - one acts on String, other TStringList
+
+void Delete(TStringList * Q, int Index);
+void mydelete(string * Source, int StartChar, int Count);
+
+void move(UCHAR * SourcePointer, UCHAR * DestinationPointer, int CopyCount);
+void fmove(float * SourcePointer, float * DestinationPointer, int CopyCount);
+
+void setlength(string * Msg, int Count);		// Set string length
+
+string * stringAdd(string * Msg, UCHAR * Chars, int Count);		// Extend string 
+
+void Assign(TStringList * to, TStringList * from);	// Duplicate from to to
+
+string * duplicateString(string * in);
+
+// This looks for a string in a stringlist. Returns inhex if found, otherwise -1
+
+int  my_indexof(TStringList * l, string * s);
+
+boolean compareStrings(string * a, string * b);
+
+int Add(TStringList * Q, string * Entry);
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/UZ7HOStuff.h b/UZ7HOStuff.h
new file mode 100644
index 0000000..09a168c
--- /dev/null
+++ b/UZ7HOStuff.h
@@ -0,0 +1,1044 @@
+//
+//	 My port of UZ7HO's Soundmodem
+//
+
+#define VersionString "0.0.0.64"
+#define VersionBytes {0, 0, 0, 64}
+
+// Added FX25. 4x100 FEC and V27 not Working and disabled
+
+// 0.8 V27 now OK.
+
+// 0.9 Digipeating added
+
+// 0.10 Fix second channel tones and calibrate
+
+// 0.11 Fix allocation of sessions to correct modem
+//		Fix DCD
+//		Fix Monitoring of Multiline packets
+//		Fix possible saving of wrong center freq
+//		Limit TX sample Q in Linux
+//
+
+// 0.12	Add AGWPE monitoring of received frames
+//		Fix DCD Threshold
+//		Fix KISS transparency issue
+
+// 0.13 Fix sending last few bits in FX.25 Mode
+
+// 0.14 Add "Copy on Select" to Trace Window
+
+// 0.15 Limit Trace window to 10000 lines
+
+// 0.16 Fix overwriting monitor window after scrollback
+
+// 0.17	Add GPIO and CAT PTT
+
+// 0.18	Add CM108/119 PTT
+
+// 0.19 Fix scheduling KISS frames
+
+// 0.20 Debug code added to RR processing
+
+// 0.21	Fix AGW monitor of multiple line packets
+//		Close ax.25 sessions if AGW Host session closes
+
+// 0.22	Add FEC Count to Session Stats
+
+// 0.23 Retry DISC until UA received or retry count exceeded
+
+// 0.24	More fixes to DISC handling
+
+// 0.26 Add OSS PulseAudio and HAMLIB support
+
+// 0.27 Dynamically load PulseAudio modules
+
+// 0.28 Add ARDOPPacket Mode
+
+// 0.29 Fix saving settings and geometry on close
+// 0.30 Retructure code to build with Qt 5.3
+//      Fix crash in nogui mode if pulse requested but not available
+//		Try to fix memory leaks
+
+// 0.31 Add option to run modems in seprate threads
+
+// 0.32	Fix timing problem with AGW connect at startup
+//		Add Memory ARQ
+//		Add Single bit "Correction"
+//		Fix error in 31 when using multiple decoders
+
+// 0.33 Fix Single bit correction
+//		More memory leak fixes
+
+// 0.34 Add API to set Modem and Center Frequency
+//		Fix crash in delete_incoming_mycalls
+
+// 0.35 Return Version in AGW Extended g response
+
+// 0.36 Fix timing problem on startup
+
+// 0.37 Add scrollbars to Device and Modem dialogs
+
+// 0.38 Change default CM108 name to /dev/hidraw0 on Linux
+
+// 0.39	Dont try to display Message Boxes in nogui mode.
+//		Close Device and Modem dialogs on Accept or Reject
+//		Fix using HAMLIB in nogui mode
+
+// 0.40	Fix bug in frame optimize when using 6 char calls
+
+// 0.41	Fix "glitch" on waterfall markers when changing modem freqs 
+
+// 0.42	Add "Minimize to Tray" option
+
+// 0.43 Add Andy's on_SABM fix.
+//		Fix Crash if KISS Data sent to AGW port
+
+// 0.44 Add UDP bridge.
+
+// 0.45 Add two more modems.
+// 0.46 Fix two more modems.
+
+// 0.47 Fix suprious DM when host connection lost
+//		Add CWID
+
+// 0.48 Send FRMR for unrecognised frame types
+
+// 0.49 Add Andy's FEC Tag correlation coode
+
+// 0.50 Fix Waterfall display when only using right channel
+//		Allow 1200 baud fsk at other center freqs
+//		Add Port numbers to Window title and Try Icon tooltip
+//		Fix calculation of filters for multiple decoders
+//		Add RX Offset setting (for satellite operation
+
+// 0.51	Fix Multithreading with more that 2 modems
+
+// 0.52	Add Stdin as source on Linux
+
+// 0.53	Use Byte instead of byte as byte is defined in newer versions of gcc
+
+// 0.54 Fix for ALSA problem on new pi OS
+
+// 0.55 Fix for compiler error with newer compiler
+
+// 0.56	Fix errors in Config.cpp			June 22
+
+// 0.57	Add Restart Waterfall action		August 22
+
+// 0.58 Add RSID							Sept 2022
+
+// 0.59 Add config of Digi Calls			Dec 2022
+
+// 0.60 Allow ARDOP Packet on modems 2 to 4 March 2023
+
+// 0.61 Add il2p support					April 2023
+
+// 0.62										April 2023
+//	Add option to specify sound devices that aren't in list
+//	Add Save button to Modem dialog to save current tab without closing dialog
+//	Don't add plug: to Linux device addresses unless addr contains : (allows use of eg ARDOP)
+
+// 0.64 Fix sending ax.25 (broken in .61)
+
+
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UNUSED(x) (void)(x)
+
+#ifdef M_PI
+#undef M_PI
+#endif
+
+#define M_PI       3.1415926f
+
+#define pi M_PI
+
+#ifndef WIN32
+#define _strdup strdup
+#endif
+
+	//#define NULL ((void *)0)
+
+	//Delphi Types remember case insensitive
+
+#define single float
+#define boolean int
+#define Byte unsigned char		//                  0 to 255
+#define Word unsigned short	//                        0 to 65,535
+#define SmallInt short 		//                  -32,768 to 32,767
+#define LongWord unsigned int	//                        0 to 4,294,967,295
+ //  Int6 : Cardinal; //                        0 to 4,294,967,295
+#define LongInt int			//           -2,147,483,648 to 2,147,483,647
+#define Integer int  //           -2,147,483,648 to 2,147,483,647
+//#define Int64 long long		 // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
+
+//#define Byte unsigned char		//                  0 to 255
+#define word unsigned short	//                        0 to 65,535
+#define smallint short 		//                  -32,768 to 32,767
+#define longword unsigned int	//                        0 to 4,294,967,295
+ //  Int6 : Cardinal; //                        0 to 4,294,967,295
+#define longint int			//           -2,147,483,648 to 2,147,483,647
+#define integer int  //           -2,147,483,648 to 2,147,483,647
+
+typedef unsigned long ULONG;
+
+#define UCHAR unsigned char
+#define UINT unsigned int
+#define BOOL int
+#define TRUE 1
+#define FALSE 0
+
+// Soundcard Channels
+
+#define NONE 0
+#define LEFT 1
+#define RIGHT 2
+
+#define nr_emph 2
+
+#define decodedNormal 4 //'-'
+#define decodedFEC    3 //'F'
+#define decodedMEM	  2 //'#'
+#define decodedSingle 1 //'$'
+
+
+// Seems to use Delphi TStringList for a lot of queues. This seems to be a list of pointers and a count
+// Each pointer is to a Data/Length pair
+//Maybe something like
+
+typedef struct string_T
+{
+	unsigned char * Data;
+	int Length;
+	int AllocatedLength;				// A reasonable sized block is allocated at the start to speed up adding chars
+
+}string;
+
+typedef struct TStringList_T
+{
+	int Count;
+	string ** Items;
+
+} TStringList;
+
+// QPSK struct
+
+typedef struct TQPSK_t
+{
+	UCHAR tx[4];
+	int count[4];
+	UCHAR rx[4];
+	UCHAR mode;
+} TPQSK;
+
+
+typedef struct TKISSMode_t
+{
+	string * data_in;
+	void * Socket;				// Used as a key
+
+	// Not sure what rest are used for. Seems to be one per channel
+
+	TStringList buffer[4];			// Outgoing Frames
+
+} TKISSMode;
+
+typedef struct  TMChannel_t
+{
+
+	single prev_LPF1I_buf[4096];
+	single prev_LPF1Q_buf[4096];
+	single prev_dLPFI_buf[4096];
+	single prev_dLPFQ_buf[4096];
+	single prev_AFCI_buf[4096];
+	single prev_AFCQ_buf[4096];
+	single AngleCorr;
+	single MUX_osc;
+	single AFC_IZ1;
+	single AFC_IZ2;
+	single AFC_QZ1;
+	single AFC_QZ2;
+	single AFC_bit_buf1I[1024];
+	single AFC_bit_buf1Q[1024];
+	single AFC_bit_buf2[1024];
+	single AFC_IIZ1;
+	single AFC_QQZ1;
+
+} TMChannel;
+
+typedef struct TFX25_t
+{
+	string  data;
+	Byte  status;
+	Byte  bit_cnt;
+	Byte  byte_rx;
+	unsigned long long tag;
+	Byte  size;
+	Byte  rs_size;
+	Byte size_cnt;
+} TFX25;
+
+
+
+typedef struct TDetector_t
+{
+	struct TFX25_t fx25[4];
+	TStringList	mem_ARQ_F_buf[5];
+	TStringList mem_ARQ_buf[5];
+	float pll_loop[5];
+	float last_sample[5];
+	UCHAR ones[5];
+	UCHAR zeros[5];
+	float bit_buf[5][1024];
+	float bit_buf1[5][1024];
+	UCHAR sample_cnt[5];
+	UCHAR last_bit[5];
+	float PSK_IZ1[5];
+	float PSK_QZ1[5];
+	float PkAmpI[5];
+	float PkAmpQ[5];
+	float PkAmp[5];
+	float PkAmpMax[5];
+	int newpkpos[5];
+	float AverageAmp[5];
+	float AngleCorr[5];
+	float MinAmp[5];
+	float MaxAmp[5];
+	float MUX3_osc[5];
+	float MUX3_1_osc[5];
+	float MUX3_2_osc[5];
+	float Preemphasis6[5];
+	float Preemphasis12[5];
+	float PSK_AGC[5];
+	float AGC[5];
+	float AGC1[5];
+	float AGC2[5];
+	float AGC3[5];
+	float AGC_max[5];
+	float AGC_min[5];
+	float AFC_IZ1[5];
+	float AFC_IZ2[5];
+	float AFC_QZ1[5];
+	float AFC_QZ2[5];
+
+	UCHAR last_rx_bit[5];
+	UCHAR bit_stream[5];
+	UCHAR byte_rx[5];
+	UCHAR bit_stuff_cnt[5];
+	UCHAR bit_cnt[5];
+	float bit_osc[5];
+	UCHAR frame_status[5];
+	string rx_data[5];
+	string FEC_rx_data[5];
+	//
+	UCHAR FEC_pol[5];
+	unsigned short FEC_err[5];
+	unsigned long long FEC_header1[5][2];
+	unsigned short FEC_blk_int[5];
+	unsigned short FEC_len_int[5];
+	unsigned short FEC_len[5];
+
+	unsigned short FEC_len_cnt[5];
+	
+	UCHAR rx_intv_tbl[5][4];
+	UCHAR rx_intv_sym[5];
+	UCHAR rx_viterbi[5];
+	UCHAR viterbi_cnt[5];
+	//	  SurvivorStates [1..4,0..511] of TSurvivor;
+		  //
+	TMChannel MChannel[5][4];
+
+	float AFC_dF_avg[5];
+	float AFC_dF[5];
+	float AFC_bit_osc[5];
+	float AFC_bit_buf[5][1024];
+	unsigned short AFC_cnt[5];
+
+	string raw_bits1[5];
+	string raw_bits[5];
+	UCHAR last_nrzi_bit[5];
+
+	float BPF_core[5][2048];
+	float LPF_core[5][2048];
+
+	float src_INTR_buf[5][8192];
+	float src_INTRI_buf[5][8192];
+	float src_INTRQ_buf[5][8192];
+	float src_LPF1I_buf[5][8192];
+	float src_LPF1Q_buf[5][8192];
+
+	float src_BPF_buf[5][2048];
+	float src_Loop_buf[5][8192];
+	float prev_BPF_buf[5][4096];
+
+	float prev_LPF1I_buf[5][4096];
+	float prev_LPF1Q_buf[5][4096];
+	float prev_INTR_buf[5][16384];
+	float prev_INTRI_buf[5][16384];
+	float prev_INTRQ_buf[5][16384];
+
+	Byte emph_decoded;	
+	Byte rx_decoded;
+	Byte errors;
+
+
+} TDetector;
+
+
+
+typedef struct AGWUser_t
+{
+	void *socket;
+	string * data_in;
+	TStringList AGW_frame_buf;
+	boolean	Monitor;
+	boolean	Monitor_raw;
+	boolean reportFreqAndModem;			// Can report modem and frequency to host
+
+} AGWUser;
+
+typedef struct  TAX25Info_t
+{
+	longint	stat_s_pkt;
+	longint stat_s_byte;
+	longint stat_r_pkt;
+	longint stat_r_byte;
+	longint stat_r_fc;
+	longint stat_fec_count;
+	time_t stat_begin_ses;
+	time_t stat_end_ses;
+	longint stat_l_r_byte;
+	longint stat_l_s_byte;
+
+} TAX25Info;
+
+typedef struct TAX25Port_t
+{
+	Byte hi_vs;
+	Byte vs;
+	Byte vr;
+	Byte PID;
+	TStringList in_data_buf;
+	TStringList frm_collector;
+	string frm_win[8];
+	string out_data_buf;
+	word t1;
+	word t2;
+	word t3;
+	Byte i_lo;
+	Byte i_hi;
+	word n1;
+	word n2;
+	word IPOLL_cnt;
+	TStringList frame_buf; //����� ������ �� ��������
+	TStringList I_frame_buf;
+	Byte status;
+	word clk_frack;
+	char corrcall[10];
+	char mycall[10];
+	UCHAR digi[56];
+	UCHAR Path[80];				// Path in ax25 format - added to save building it each time
+	UCHAR ReversePath[80];
+	int snd_ch;					// Simplifies parameter passing
+	int port;
+	int pathLen;
+	void * socket;
+	char kind[16];
+	TAX25Info info;
+} TAX25Port;
+
+
+#define LOGEMERGENCY 0 
+#define LOGALERT 1
+#define LOGCRIT 2 
+#define LOGERROR 3 
+#define LOGWARNING 4
+#define LOGNOTICE 5
+#define LOGINFO 6
+#define LOGDEBUG 7
+
+#define PTTRTS		1
+#define PTTDTR		2
+#define PTTCAT		4
+#define PTTCM108	8
+#define PTTHAMLIB	16
+
+// Status flags
+
+#define STAT_NO_LINK  0
+#define STAT_LINK 1
+#define STAT_CHK_LINK 2
+#define STAT_WAIT_ANS 3
+#define STAT_TRY_LINK 4
+#define STAT_TRY_UNLINK 5
+
+
+	// �md,Resp,Poll,Final,Digipeater flags
+#define 	SET_P 1
+#define 	SET_F 0
+#define 	SET_C 1
+#define 	SET_R 0
+#define 	SET_NO_RPT 0
+#define 	SET_RPT 1
+	// Frame ID flags
+#define 	I_FRM 0
+#define 	S_FRM 1
+#define 	U_FRM 2
+#define 	I_I 0
+#define 	S_RR 1
+#define 	S_RNR 5
+#define 	S_REJ 9
+#define		S_SREJ 0x0D
+#define 	U_SABM 47
+#define 	U_DISC 67
+#define 	U_DM 15
+#define 	U_UA 99
+#define 	U_FRMR 135
+#define 	U_UI 3
+	// PID flags
+#define 	PID_X25 0x01       // 00000001-CCIT X25 PLP
+#define 	PID_SEGMENT 0x08   // 00001000-Segmentation fragment
+#define 	PID_TEXNET 0xC3    // 11000011-TEXNET Datagram Protocol
+#define 	PID_LQ 0xC4        // 11001000-Link Quality Protocol
+#define 	PID_APPLETALK 0xCA // 11001010-Appletalk
+#define 	PID_APPLEARP 0xCB  // 11001011-Appletalk ARP
+#define 	PID_IP 0xCC        // 11001100-ARPA Internet Protocol
+#define 	PID_ARP 0xCD       // 11001101-ARPA Address Resolution Protocol
+#define 	PID_NET_ROM 0xCF   // 11001111-NET/ROM
+
+
+//	Sound interface buffer size
+
+#define SendSize 1024		// 100 mS for now
+#define ReceiveSize 512	// try 100 mS for now
+#define NumberofinBuffers 4
+
+#define Now getTicks()
+
+// #defines from all modules (?? is this a good idaa ??
+
+#define WIN_MAXIMIZED 0
+#define WIN_MINIMIZED 1
+#define MODEM_CAPTION 'SoundModem by UZ7HO'
+#define MODEM_VERSION '1.06'
+#define SND_IDLE 0
+#define SND_RX 1
+#define SND_TX 2
+#define BUF_EMPTY 0
+#define BUF_FULL 1
+#define DISP_MONO FALSE
+#define DISP_RGB TRUE
+#define MOD_IDLE 0
+#define MOD_RX 1
+#define MOD_TX 2
+#define MOD_WAIT 3
+#define TIMER_FREE 0
+#define TIMER_BUSY 1
+#define TIMER_OFF 2
+#define TIMER_EVENT_ON 3
+#define TIMER_EVENT_OFF 4
+#define DEBUG_TIMER 1
+#define DEBUG_WATERFALL 2
+#define DEBUG_DECODE 4
+#define DEBUG_SOUND 8
+#define IS_LAST TRUE
+#define IS_NOT_LAST FALSE
+#define modes_count 16
+#define SPEED_300 0
+#define SPEED_1200 1
+#define SPEED_600 2
+#define SPEED_2400 3
+#define SPEED_P1200 4
+#define SPEED_P600 5
+#define SPEED_P300 6
+#define SPEED_P2400 7
+#define SPEED_Q4800 8
+#define SPEED_Q3600 9
+#define SPEED_Q2400 10
+#define SPEED_MP400 11
+#define SPEED_DW2400 12
+#define SPEED_8P4800 13
+#define SPEED_AE2400 14
+#define SPEED_ARDOP 15
+
+#define MODE_FSK 0
+#define MODE_BPSK 1
+#define MODE_QPSK 2
+#define MODE_MPSK 3
+#define MODE_8PSK 4
+#define MODE_PI4QPSK 5
+#define MODE_ARDOP 6
+
+#define QPSK_SM 0
+#define QPSK_V26 1
+
+
+#define MODEM_8P4800_BPF 3200
+#define MODEM_8P4800_TXBPF 3400
+#define MODEM_8P4800_LPF 1000
+#define MODEM_8P4800_BPF_TAP 64
+#define MODEM_8P4800_LPF_TAP 8
+ //
+#define MODEM_MP400_BPF 775
+#define MODEM_MP400_TXBPF 850
+#define MODEM_MP400_LPF 70
+#define MODEM_MP400_BPF_TAP 256
+#define MODEM_MP400_LPF_TAP 128
+ //
+#define MODEM_DW2400_BPF 2400
+#define MODEM_DW2400_TXBPF 2500
+#define MODEM_DW2400_LPF 900
+#define MODEM_DW2400_BPF_TAP 256 //256
+#define MODEM_DW2400_LPF_TAP 32  //128
+ //
+#define MODEM_Q2400_BPF 2400
+#define MODEM_Q2400_TXBPF 2500
+#define MODEM_Q2400_LPF 900
+#define MODEM_Q2400_BPF_TAP 256 //256
+#define MODEM_Q2400_LPF_TAP 128  //128
+ //
+#define MODEM_Q3600_BPF 3600
+#define MODEM_Q3600_TXBPF 3750
+#define MODEM_Q3600_LPF 1350
+#define MODEM_Q3600_BPF_TAP 256
+#define MODEM_Q3600_LPF_TAP 128
+ //
+#define MODEM_Q4800_BPF 4800
+#define MODEM_Q4800_TXBPF 5000
+#define MODEM_Q4800_LPF 1800
+#define MODEM_Q4800_BPF_TAP 256
+#define MODEM_Q4800_LPF_TAP 128
+ //
+#define MODEM_P2400_BPF 4800
+#define MODEM_P2400_TXBPF 5000
+#define MODEM_P2400_LPF 1800
+#define MODEM_P2400_BPF_TAP 256
+#define MODEM_P2400_LPF_TAP 128
+ //
+#define MODEM_P1200_BPF 2400
+#define MODEM_P1200_TXBPF 2500
+#define MODEM_P1200_LPF 900
+#define MODEM_P1200_BPF_TAP 256
+#define MODEM_P1200_LPF_TAP 128
+ //
+#define MODEM_P600_BPF 1200
+#define MODEM_P600_TXBPF 1250
+#define MODEM_P600_LPF 400
+#define MODEM_P600_BPF_TAP 256
+#define MODEM_P600_LPF_TAP 128
+ //
+#define MODEM_P300_BPF 600
+#define MODEM_P300_TXBPF 625
+#define MODEM_P300_LPF 200
+#define MODEM_P300_BPF_TAP 256
+#define MODEM_P300_LPF_TAP 128
+ //
+#define MODEM_300_BPF 500
+#define MODEM_300_TXBPF 500
+#define MODEM_300_LPF 155
+#define MODEM_300_BPF_TAP 256
+#define MODEM_300_LPF_TAP 128
+ //
+#define MODEM_600_BPF 800
+#define MODEM_600_TXBPF 900
+#define MODEM_600_LPF 325
+#define MODEM_600_BPF_TAP 256
+#define MODEM_600_LPF_TAP 128
+ //
+#define MODEM_1200_BPF 1400
+#define MODEM_1200_TXBPF 1600
+#define MODEM_1200_LPF 650
+#define MODEM_1200_BPF_TAP 256
+#define MODEM_1200_LPF_TAP 128
+ //
+#define MODEM_2400_BPF 3200
+#define MODEM_2400_TXBPF 3200
+#define MODEM_2400_LPF 1400
+#define MODEM_2400_BPF_TAP 256
+#define MODEM_2400_LPF_TAP 128
+
+#define TX_SILENCE 0
+#define TX_DELAY 1
+#define TX_TAIL 2
+#define TX_NO_DATA 3
+#define TX_FRAME 4
+#define TX_WAIT_BPF 5
+
+
+#define FRAME_WAIT 0
+#define FRAME_LOAD 1
+#define RX_BIT0 0
+#define RX_BIT1 128
+#define DCD_WAIT_SLOT 0
+#define DCD_WAIT_PERSIST 1
+
+#define FX25_MODE_NONE  0
+#define FX25_MODE_RX  1
+#define FX25_MODE_TXRX 2
+#define FX25_TAG 0
+#define FX25_LOAD 1
+
+#define IL2P_MODE_NONE  0
+#define IL2P_MODE_RX  1				// RX il2p + HDLC
+#define IL2P_MODE_TXRX 2
+#define IL2P_MODE_ONLY 3			// RX only il2p, TX il2p
+
+
+#define    MODE_OUR 0
+#define    MODE_OTHER 1
+#define    MODE_RETRY 2
+
+#define FRAME_FLAG 126		// 7e
+
+#define port_num 32		// ?? Max AGW sessions
+#define PKT_ERR 17		// Minimum packet size, bytes
+#define I_MAX 7			// Maximum number of packets
+
+
+	// externs for all modules
+
+#define ARDOPBufferSize 12000 * 100
+
+extern short ARDOPTXBuffer[4][12000 * 100];	// Enough to hold whole frame of samples
+
+extern int ARDOPTXLen[4];				// Length of frame
+extern int ARDOPTXPtr[4];				// Tx Pointer
+
+extern BOOL KISSServ;
+extern int KISSPort;
+
+extern BOOL AGWServ;
+extern int AGWPort;
+
+extern TStringList KISS_acked[];
+extern TStringList KISS_iacked[];
+
+extern TStringList all_frame_buf[5];
+
+extern unsigned short pkt_raw_min_len;
+extern int stat_r_mem;
+
+extern UCHAR diddles;
+
+extern int stdtones;
+extern int fullduplex;
+
+extern struct TQPSK_t qpsk_set[4];
+
+extern int NonAX25[5];
+
+extern short txtail[5];
+extern short txdelay[5];
+
+extern short modem_def[5];
+
+extern int emph_db[5];
+extern UCHAR emph_all[5];
+
+extern UCHAR modem_mode[5];
+
+extern UCHAR RCVR[5];
+extern int soundChannel[5];
+extern int modemtoSoundLR[4];
+
+extern short rx_freq[5];
+extern short rx_shift[5];
+extern short rx_baudrate[5];
+extern short rcvr_offset[5];
+
+extern int tx_hitoneraisedb[5];
+extern float tx_hitoneraise[5];
+
+
+extern UCHAR tx_status[5];
+extern float tx_freq[5];
+extern float tx_shift[5];
+extern unsigned short tx_baudrate[5];
+
+extern unsigned short bpf[5];
+extern unsigned short lpf[5];
+
+extern unsigned short txbpf[5];
+
+extern unsigned short  tx_BPF_tap[5];
+extern unsigned short  tx_BPF_timer[5];
+
+extern unsigned short  BPF_tap[5];
+extern unsigned short  LPF_tap[5];
+
+extern float tx_BPF_core[5][32768];
+extern float LPF_core[5][2048];
+
+extern UCHAR xData[256];
+extern UCHAR xEncoded[256];
+extern UCHAR xDecoded[256];
+
+extern float PI125;
+extern float PI375;
+extern float PI625;
+extern float PI875;
+extern 	float PI5;
+extern float PI25;
+extern float PI75;
+
+extern int max_frame_collector[4];
+extern boolean KISS_opt[4];
+
+#define MaxErrors 4
+
+extern BOOL MinOnStart;
+
+//RS TReedSolomon;
+//  Form1 TForm1;
+//  WaveFormat TWaveFormatEx;
+
+extern int UDPServ;
+extern long long udpServerSeqno;
+
+extern int Channels;
+extern int BitsPerSample;
+extern float TX_Samplerate;
+extern float RX_Samplerate;
+extern int RX_SR;
+extern int TX_SR;
+extern int RX_PPM;
+extern int TX_PPM;
+extern int tx_bufsize;
+extern int rx_bufsize;
+extern int tx_bufcount;
+extern int rx_bufcount;
+extern int fft_size;
+extern int  mouse_down[2];
+//UCHAR * RX_pBuf array[257];
+//  RX_header array[1..256] of TWaveHdr;
+//  TX_pBuf array[1..4,1..256] of pointer;
+//TX_header array[1..4,1..256] of TWaveHdr;
+extern UCHAR calib_mode[5];
+extern UCHAR snd_status[5];
+extern UCHAR buf_status[5];
+extern UCHAR tx_buf_num1[5];
+extern UCHAR tx_buf_num[5];
+extern int speed[5];
+extern int panels[6];
+
+extern float fft_window_arr[2048];
+//  fft_s,fft_d array[0..2047] of TComplex;
+extern short fft_buf[5][2048];
+extern UCHAR fft_disp[5][2048];
+//  bm array[1..4] of TBitMap;
+//  bm1,bm2,bm3 TBitMap;
+
+//  WaveInHandle hWaveIn;
+//  WaveOutHandle array[1..4] of hWaveOut;
+extern int RXBufferLength;
+
+// data1 PData16;
+
+extern int grid_time;
+extern int fft_mult;
+extern int fft_spd;
+extern int grid_timer;
+extern int stop_wf;
+extern int raduga;
+extern char snd_rx_device_name[32];
+extern char snd_tx_device_name[32];
+extern int snd_rx_device;
+extern int snd_tx_device;
+extern UCHAR mod_icon_status;
+extern UCHAR last_mod_icon_status;
+extern UCHAR icon_timer;
+//  TelIni TIniFile;
+extern char cur_dir[];
+//  TimerId1 cardinal;
+//  TimerId2 cardinal;
+extern UCHAR TimerStat1;
+extern UCHAR TimerStat2;
+extern int stat_log;
+
+extern char PTTPort[80];			// Port for Hardware PTT - may be same as control port.
+extern int PTTMode;
+extern int PTTBAUD ;
+
+extern char PTTOnString[128];
+extern char PTTOffString[128];
+
+extern UCHAR PTTOnCmd[64];
+extern UCHAR PTTOnCmdLen;
+
+extern UCHAR PTTOffCmd[64];
+extern UCHAR PTTOffCmdLen;
+
+extern int PTT_device;
+extern int RX_device;
+extern int TX_device;
+extern int TX_rotate;
+extern int UsingLeft;
+extern int UsingRight;
+extern int UsingBothChannels;
+extern int pttGPIOPin;
+extern int pttGPIOPinR;
+extern BOOL pttGPIOInvert;
+extern BOOL useGPIO;
+extern BOOL gotGPIO;
+extern int VID;
+extern int PID;
+extern char CM108Addr[80];
+extern int HamLibPort;
+extern char HamLibHost[];
+
+extern int SCO;
+extern int DualPTT;
+extern UCHAR  DebugMode;
+extern UCHAR TimerEvent;
+extern int nr_monitor_lines;
+extern int UTC_Tim;
+extern int MainPriority;
+//  MainThreadHandle THandle;
+extern UCHAR w_state;
+
+extern BOOL Firstwaterfall;
+extern BOOL Secondwaterfall;
+
+extern int dcd_threshold;
+extern int rxOffset;
+extern int chanOffset[4];
+
+extern boolean busy;
+extern boolean dcd[5];
+
+extern struct TKISSMode_t  KISS;
+
+extern boolean dyn_frack[4] ;
+extern Byte recovery[4];
+extern Byte users[4];
+
+extern int resptime[4];
+extern int slottime[4];
+extern int persist[4];
+extern int fracks[4];
+extern int frack_time[4];
+extern int idletime[4];
+extern int redtime[4];
+extern int IPOLL[4];
+extern int maxframe[4];
+extern int TXFrmMode[4];
+
+extern char MyDigiCall[4][512];
+extern char exclude_callsigns[4][512];
+extern char exclude_APRS_frm[4][512];
+
+extern TStringList  list_exclude_callsigns[4];
+extern TStringList list_exclude_APRS_frm[4];
+extern TStringList list_digi_callsigns[4];
+
+
+extern int SoundIsPlaying;
+extern int Capturing;
+
+extern struct TDetector_t  DET[nr_emph + 1][16];
+
+extern char CaptureDevice[80];
+extern char PlaybackDevice[80];
+
+extern TAX25Port AX25Port[4][port_num];
+
+extern int fx25_mode[4];
+extern int il2p_mode[4];
+
+extern int tx_fx25_size[4];
+extern int tx_fx25_size_cnt[4];
+extern int tx_fx25_mode[4];
+
+extern int SatelliteMode;
+
+// Function prototypes
+
+void KISS_send_ack(UCHAR port, string * data);
+void AGW_AX25_frame_analiz(int snd_ch, int RX, string * frame);
+void FIR_filter(float * src, unsigned short buf_size, unsigned short tap, float * core, float * dest, float * prev);
+void make_core_TXBPF(UCHAR snd_ch, float freq, float width);
+void OpenPTTPort();
+void ClosePTTPort();
+
+void RadioPTT(int snd_ch, BOOL PTTState);
+void put_frame(int snd_ch, string * frame, char * code, int  tx_stat, int excluded);
+void CloseCOMPort(int fd);
+void COMClearRTS(int fd);
+void COMClearDTR(int fd);
+unsigned int getTicks();
+char * ShortDateTime();
+void  write_ax25_info(TAX25Port * AX25Sess);
+void reverse_addr(Byte * path, Byte * revpath, int Len);
+string * get_mycall(string * path);
+TAX25Port * get_user_port_by_calls(int snd_ch, char *  CallFrom, char *  CallTo);
+TAX25Port * get_free_port(int snd_ch);
+void * in_list_incoming_mycall(Byte * path);
+boolean add_incoming_mycalls(void * socket, char * src_call);
+int get_addr(char * Calls, UCHAR * AXCalls);
+void reverse_addr(Byte * path, Byte * revpath, int Len);
+void set_link(TAX25Port * AX25Sess, UCHAR * axpath);
+void rst_timer(TAX25Port * AX25Sess);
+void set_unlink(TAX25Port * AX25Sess, Byte * path);
+unsigned short get_fcs(UCHAR * Data, unsigned short len);
+void KISSSendtoServer(void * sock, Byte * Msg, int Len);
+int ConvFromAX25(unsigned char * incall, char * outcall);
+BOOL ConvToAX25(char * callsign, unsigned char * ax25call);
+void Debugprintf(const char * format, ...);
+
+double pila(double x);
+
+void AGW_Raw_monitor(int snd_ch, string * data);
+
+// Dephi emulation functions
+
+string * Strings(TStringList * Q, int Index);
+void Clear(TStringList * Q);
+int Count(TStringList * List);
+
+string * newString();
+string * copy(string * Source, int StartChar, int Count);
+TStringList * newTStringList();
+
+void freeString(string * Msg);
+
+void initString(string * S);
+void initTStringList(TStringList* T);
+
+// Two delete() This is confusing!!
+// Not really - one acts on String, other TStringList
+
+void Delete(TStringList * Q, int Index);
+void mydelete(string * Source, int StartChar, int Count);
+
+void move(UCHAR * SourcePointer, UCHAR * DestinationPointer, int CopyCount);
+void fmove(float * SourcePointer, float * DestinationPointer, int CopyCount);
+
+void setlength(string * Msg, int Count);		// Set string length
+
+string * stringAdd(string * Msg, UCHAR * Chars, int Count);		// Extend string 
+
+void Assign(TStringList * to, TStringList * from);	// Duplicate from to to
+
+string * duplicateString(string * in);
+
+// This looks for a string in a stringlist. Returns inhex if found, otherwise -1
+
+int  my_indexof(TStringList * l, string * s);
+
+boolean compareStrings(string * a, string * b);
+
+int Add(TStringList * Q, string * Entry);
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/UZ7HOUtils.c b/UZ7HOUtils.c
new file mode 100644
index 0000000..0a2807f
--- /dev/null
+++ b/UZ7HOUtils.c
@@ -0,0 +1,321 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+#include "UZ7HOStuff.h"
+
+// TStringlist And String emulation Functions
+
+// Dephi seems to mix starting counts at 0 or 1. I'll try making everything
+// base zero. 
+
+// Initialise a list
+
+void CreateStringList(TStringList * List)
+{
+	List->Count = 0;
+	List->Items = 0;
+}
+
+
+int Count(TStringList * List)
+{
+	return List->Count;
+}
+
+string * newString()
+{
+	// Creates and Initialises a string 
+
+	UCHAR * ptr = malloc(sizeof(string));			// Malloc Data separately so it can be ralloc'ed
+	string * New = (string *)ptr;
+	New->Length = 0;
+	New->AllocatedLength = 256;
+	New->Data = malloc(256);
+
+	return New;
+}
+
+void initString(string * S)
+{
+	S->Length = 0;
+	S->AllocatedLength = 256;
+	S->Data = malloc(256);
+}
+
+void initTStringList(TStringList* T)
+{
+	//string * New = newString();
+
+	T->Count = 0;
+	T->Items = NULL;
+
+	//Add(T, New);
+}
+
+
+
+TStringList * newTStringList()
+{
+	TStringList * T = (TStringList *) malloc(sizeof(TStringList));
+	string * New = newString();
+
+	T->Count = 0;
+	T->Items = NULL;
+
+	Add(T, New);
+
+	return T;
+}
+
+
+void freeString(string * Msg)
+{
+	if (Msg->Data)
+		free(Msg->Data);
+
+	free(Msg);
+}
+
+string * Strings(TStringList * Q, int Index)
+{
+	if (Index >= Q->Count)
+		return NULL;
+
+	return Q->Items[Index];
+}
+
+int Add(TStringList * Q, string * Entry)
+{
+	Q->Items = realloc(Q->Items,(Q->Count + 1) * sizeof(void *));
+	Q->Items[Q->Count++] = Entry;
+
+	return (Q->Count);
+}
+
+
+void mydelete(string * Source, int StartChar, int Count)
+{
+	 //Description
+	//The Delete procedure deletes up to Count characters from the passed parameter Source string starting
+	//from position StartChar.
+
+	if (StartChar > Source->Length)
+		return;
+
+	int left = Source->Length - StartChar;
+
+	if (Count > left)
+		Count = left;
+
+	memmove(&Source->Data[StartChar], &Source->Data[StartChar + Count], left - Count);
+
+	Source->Length -= Count;
+}
+ 
+
+void Delete(TStringList * Q, int Index)
+{
+	// Remove item at Index and move rest up list
+	// Index starts at zero
+	
+	if (Index >= Q->Count)
+		return;
+
+	// We should free it, so user must duplicate msg if needed after delete
+
+	freeString(Q->Items[Index]);
+//	free(Q->Items[Index]);
+
+	Q->Count--;
+
+	while (Index < Q->Count)
+	{
+		Q->Items[Index] = Q->Items[Index + 1];
+		Index++;
+	}
+}
+
+void setlength(string * Msg, int Count)
+{
+	// Set length, allocating more space if needed
+
+	if (Count > Msg->AllocatedLength)
+	{
+		Msg->AllocatedLength = Count + 256;
+		Msg->Data = realloc(Msg->Data, Msg->AllocatedLength);
+	}
+
+	Msg->Length = Count;
+}
+
+string * stringAdd(string * Msg, UCHAR * Chars, int Count)
+{
+	// Add Chars to string 
+
+	if (Msg->Length + Count > Msg->AllocatedLength)
+	{
+		Msg->AllocatedLength += Count + 256;
+		Msg->Data = realloc(Msg->Data, Msg->AllocatedLength);
+	}
+
+	memcpy(&Msg->Data[Msg->Length], Chars, Count);
+	Msg->Length += Count;
+	
+	return Msg;
+}
+
+void Clear(TStringList * Q)
+{
+	int i = 0;
+
+	if (Q->Items == NULL)
+		return;
+
+	while (Q->Count)
+	{
+		freeString(Q->Items[i++]);
+		Q->Count--;
+	}
+
+	free(Q->Items);
+
+	Q->Items = NULL;
+}
+
+// procedure move ( const SourcePointer; var DestinationPointer; CopyCount : Integer ) ;
+// Description
+// The move procedure is a badly named method of copying a section of memory from one place to another.
+ 
+// CopyCount bytes are copied from storage referenced by SourcePointer and written to DestinationPointer
+ 
+void move(UCHAR * SourcePointer, UCHAR * DestinationPointer, int CopyCount)
+{
+	memmove(DestinationPointer, SourcePointer, CopyCount);
+}
+
+void fmove(float * SourcePointer, float * DestinationPointer, int CopyCount)
+{
+	memmove(DestinationPointer, SourcePointer, CopyCount);
+}
+
+
+
+//Description
+//The copy function has 2 forms. In the first, it creates a new string from part of an existing string. In the second, it creates a new array from part of an existing array.
+ 
+//1.String copy
+ 
+//The first character of a string has index = 1.
+
+//Up to Count characters are copied from the StartChar of the Source string to the returned string.
+//Less than Count characters if the end of the Source string is encountered before Count characters have been copied.
+
+
+string * copy(string * Source, int StartChar, int Count)
+{
+	string * NewString = newString();
+	int end = StartChar + Count;
+
+	if (end > Source->Length)
+		Count = Source->Length - StartChar;
+
+	memcpy(NewString->Data, &Source->Data[StartChar], Count);
+
+	NewString->Length = Count;
+
+	return NewString;
+}
+
+// Duplicate from > to
+
+void Assign(TStringList * to, TStringList * from)
+{
+	int i;
+
+	Clear(to);
+
+	if (from->Count == 0)
+		return;
+
+	// Duplicate each item
+
+	for (i = 0; i < from->Count; i++)
+	{
+		string * new = newString();
+
+		stringAdd(new, from->Items[i]->Data, from->Items[i]->Length);
+		Add(to, new);
+	}
+}
+
+string * duplicateString(string * in)
+{
+	string * new = newString();
+
+	stringAdd(new, in->Data, in->Length);
+
+	return new;
+}
+
+
+double pila(double x)
+{
+	//x : = frac(x); The frac function returns the fractional part of a floating point number.
+
+	double whole;
+	double rem;
+
+	rem = modf(x, &whole);  // returns fraction, writes whole to whole
+
+	if (rem != rem)
+		rem = 0;
+
+	if (rem > 0.5)
+		rem = 1 - rem;
+
+	return 2 * rem;
+}
+
+boolean compareStrings(string * a, string * b)
+{
+	if (a->Length == b->Length && memcmp(a->Data, b->Data, a->Length) == 0)
+		return TRUE;
+
+	return FALSE;
+}
+
+// This looks for a string in a stringlist. Returns index if found, otherwise -1
+
+int  my_indexof(TStringList * l, string * s)
+{
+	int i;
+
+	for (i = 0; i < l->Count; i++)
+	{
+		// Need to compare count and data - C doesn't allow struct compare
+
+		if (l->Items[i]->Length == s->Length && memcmp(l->Items[i]->Data, s->Data, s->Length) == 0)
+			return i;
+	}
+	return -1;
+}
+
+ 
\ No newline at end of file
diff --git a/Waveout.c b/Waveout.c
new file mode 100644
index 0000000..172cda4
--- /dev/null
+++ b/Waveout.c
@@ -0,0 +1,992 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+//
+//	Passes audio samples to the sound interface
+
+//	Windows uses WaveOut
+
+//	Nucleo uses DMA
+
+//	Linux will use ALSA
+
+//	This is the Windows Version
+
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#define _CRT_SECURE_NO_DEPRECATE
+
+#include <windows.h>
+#include <fcntl.h>
+#include <mmsystem.h>
+
+#include "UZ7HOStuff.h"
+
+#pragma comment(lib, "winmm.lib")
+void printtick(char * msg);
+void PollReceivedSamples();
+short * SoundInit();
+void StdinPollReceivedSamples();
+
+#include <math.h>
+
+void GetSoundDevices();
+
+// Windows works with signed samples +- 32767
+// STM32 DAC uses unsigned 0 - 4095
+
+// Currently use 1200 samples for TX but 480 for RX to reduce latency
+
+short buffer[2][SendSize * 2];		// Two Transfer/DMA buffers of 0.1 Sec  (x2 for Stereo)
+short inbuffer[5][ReceiveSize * 2];	// Input Transfer/ buffers of 0.1 Sec (x2 for Stereo)
+
+extern short * DMABuffer;
+extern int Number;
+
+int SoundMode = 0;
+int stdinMode = 0;
+
+BOOL Loopback = FALSE;
+//BOOL Loopback = TRUE;
+
+char CaptureDevice[80] = "real"; //"2";
+char PlaybackDevice[80] = "real"; //"1";
+
+int CaptureIndex = -1;		// Card number
+PlayBackIndex = -1;
+
+BOOL UseLeft = 1;
+BOOL UseRight = 1;
+char LogDir[256] = "";
+
+FILE *logfile[3] = {NULL, NULL, NULL};
+char LogName[3][256] = {"ARDOPDebug", "ARDOPException", "ARDOPSession"};
+
+char * CaptureDevices = NULL;
+char * PlaybackDevices = NULL;
+
+int CaptureCount = 0;
+int PlaybackCount = 0;
+
+char CaptureNames[16][256]= {""};
+char PlaybackNames[16][256]= {""};
+
+WAVEFORMATEX wfx = { WAVE_FORMAT_PCM, 2, 12000, 48000, 4, 16, 0 };
+
+HWAVEOUT hWaveOut = 0;
+HWAVEIN hWaveIn = 0;
+
+WAVEHDR header[2] =
+{
+	{(char *)buffer[0], 0, 0, 0, 0, 0, 0, 0},
+	{(char *)buffer[1], 0, 0, 0, 0, 0, 0, 0}
+};
+
+WAVEHDR inheader[5] =
+{
+	{(char *)inbuffer[0], 0, 0, 0, 0, 0, 0, 0},
+	{(char *)inbuffer[1], 0, 0, 0, 0, 0, 0, 0},
+	{(char *)inbuffer[2], 0, 0, 0, 0, 0, 0, 0},
+	{(char *)inbuffer[3], 0, 0, 0, 0, 0, 0, 0},
+	{(char *)inbuffer[4], 0, 0, 0, 0, 0, 0, 0}
+};
+
+WAVEOUTCAPSA pwoc;
+WAVEINCAPSA pwic;
+
+unsigned int RTC = 0;
+
+int InitSound(BOOL Quiet);
+void HostPoll();
+
+BOOL WriteCOMBlock(HANDLE fd, char * Block, int BytesToWrite);
+
+int Ticks;
+
+LARGE_INTEGER Frequency;
+LARGE_INTEGER StartTicks;
+LARGE_INTEGER NewTicks;
+
+int LastNow;
+
+extern BOOL blnDISCRepeating;
+
+#define TARGET_RESOLUTION 1         // 1-millisecond target resolution
+
+	
+VOID __cdecl Debugprintf(const char * format, ...)
+{
+	char Mess[10000];
+	va_list(arglist);
+
+	va_start(arglist, format);
+	vsprintf(Mess, format, arglist);
+	WriteDebugLog(Mess);
+
+	return;
+}
+
+
+void platformInit()
+{
+	TIMECAPS tc;
+	unsigned int     wTimerRes;
+	DWORD	t, lastt = 0;
+	int i = 0;
+
+
+	_strupr(CaptureDevice);
+	_strupr(PlaybackDevice);
+
+	QueryPerformanceFrequency(&Frequency);
+	Frequency.QuadPart /= 1000;			// Microsecs
+	QueryPerformanceCounter(&StartTicks);
+
+	GetSoundDevices();
+
+	if (!SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS))
+		printf("Failed to set High Priority (%d)\n", GetLastError());
+}
+
+unsigned int getTicks()
+{
+	return timeGetTime();
+//		QueryPerformanceCounter(&NewTicks);
+//		return (int)(NewTicks.QuadPart - StartTicks.QuadPart) / Frequency.QuadPart;
+}
+
+void printtick(char * msg)
+{
+	QueryPerformanceCounter(&NewTicks);
+	Debugprintf("%s %i\r", msg, Now - LastNow);
+	LastNow = Now;
+}
+
+void txSleep(int mS)
+{
+	// called while waiting for next TX buffer. Run background processes
+
+	while (mS > 50)
+	{
+		if (SoundMode == 3)
+			UDPPollReceivedSamples();
+		else
+			PollReceivedSamples();			// discard any received samples
+
+		QSleep(50);
+		mS -= 50;
+	}
+
+	QSleep(mS);
+
+	if (SoundMode == 3)
+		UDPPollReceivedSamples();
+	else
+		PollReceivedSamples();			// discard any received samples
+}
+
+int PriorSize = 0;
+
+int Index = 0;				// DMA TX Buffer being used 0 or 1
+int inIndex = 0;			// DMA Buffer being used
+
+
+FILE * wavfp1;
+
+BOOL DMARunning = FALSE;		// Used to start DMA on first write
+
+BOOL SeeIfCardBusy()
+{
+	if ((header[!Index].dwFlags & WHDR_DONE))
+		return 0;
+
+	return 1;
+}
+
+extern void sendSamplestoUDP(short * Samples, int nSamples, int Port);
+
+extern int UDPClientPort;
+
+short * SendtoCard(unsigned short * buf, int n)
+{
+	if (SoundMode == 3)			// UDP
+	{
+		sendSamplestoUDP(buf, n, UDPClientPort);
+		return buf;
+	}
+
+	if (SoundMode == 4)			// STDOUT
+	{
+		sendSamplestoStdout(buf, n);
+		return buf;
+	}
+
+
+	header[Index].dwBufferLength = n * 4;
+
+	waveOutPrepareHeader(hWaveOut, &header[Index], sizeof(WAVEHDR));
+	waveOutWrite(hWaveOut, &header[Index], sizeof(WAVEHDR));
+
+	// wait till previous buffer is complete
+
+	while (!(header[!Index].dwFlags & WHDR_DONE))
+	{
+		txSleep(10);				// Run buckground while waiting 
+	}
+
+	waveOutUnprepareHeader(hWaveOut, &header[!Index], sizeof(WAVEHDR));
+	Index = !Index;
+
+	return &buffer[Index][0];
+}
+
+
+//		// This generates a nice musical pattern for sound interface testing
+//    for (t = 0; t < sizeof(buffer); ++t)
+//        buffer[t] =((((t * (t >> 8 | t >> 9) & 46 & t >> 8)) ^ (t & t >> 13 | t >> 6)) & 0xFF);
+
+void GetSoundDevices()
+{
+	int i;
+
+	if (SoundMode == 1)
+	{
+		PlaybackCount = 3;
+
+		strcpy(&PlaybackNames[0][0], "/dev/dsp0");
+		strcpy(&PlaybackNames[1][0], "/dev/dsp1");
+		strcpy(&PlaybackNames[2][0], "/dev/dsp2");
+
+		CaptureCount = 3;
+
+		strcpy(&CaptureNames[0][0], "/dev/dsp0");
+		strcpy(&CaptureNames[1][0], "/dev/dsp1");
+		strcpy(&CaptureNames[2][0], "/dev/dsp2");
+		return;
+	}
+
+	else if (SoundMode == 2)		// Pulse
+	{
+		PlaybackCount = 1;
+		strcpy(&PlaybackNames[0][0], "Pulse");
+
+		CaptureCount = 1;
+		strcpy(&CaptureNames[0][0], "Pulse");
+		return;
+	}
+	else if (SoundMode == 3)		// UDP
+	{
+		PlaybackCount = 1;
+		strcpy(&PlaybackNames[0][0], "UDP");
+
+		CaptureCount = 1;
+		strcpy(&CaptureNames[0][0], "UDP");
+		return;
+	}
+
+	Debugprintf("Capture Devices");
+
+	CaptureCount = waveInGetNumDevs();
+
+	CaptureDevices = malloc((MAXPNAMELEN + 2) * (CaptureCount + 2));
+	CaptureDevices[0] = 0;
+	
+	for (i = 0; i < CaptureCount; i++)
+	{
+		waveInOpen(&hWaveIn, i, &wfx, 0, 0, CALLBACK_NULL); //WAVE_MAPPER
+		waveInGetDevCapsA((UINT_PTR)hWaveIn, &pwic, sizeof(WAVEINCAPSA));
+
+		if (CaptureDevices)
+			strcat(CaptureDevices, ",");
+		strcat(CaptureDevices, pwic.szPname);
+		Debugprintf("%d %s", i, pwic.szPname);
+		memcpy(&CaptureNames[i][0], pwic.szPname, MAXPNAMELEN);
+		_strupr(&CaptureNames[i][0]);
+	}
+
+	CaptureCount++;
+	Debugprintf("%d %s", i, "STDIN");
+	strcpy(&CaptureNames[i][0], "STDIN"); 
+
+	Debugprintf("Playback Devices");
+
+	PlaybackCount = waveOutGetNumDevs();
+
+	PlaybackDevices = malloc((MAXPNAMELEN + 2) * PlaybackCount);
+	PlaybackDevices[0] = 0;
+
+	for (i = 0; i < PlaybackCount; i++)
+	{
+		waveOutOpen(&hWaveOut, i, &wfx, 0, 0, CALLBACK_NULL); //WAVE_MAPPER
+		waveOutGetDevCapsA((UINT_PTR)hWaveOut, &pwoc, sizeof(WAVEOUTCAPSA));
+
+		if (PlaybackDevices[0])
+			strcat(PlaybackDevices, ",");
+		strcat(PlaybackDevices, pwoc.szPname);
+		Debugprintf("%i %s", i, pwoc.szPname);
+		memcpy(&PlaybackNames[i][0], pwoc.szPname, MAXPNAMELEN);
+		_strupr(&PlaybackNames[i][0]);
+		waveOutClose(hWaveOut);
+	}
+}
+
+
+HANDLE hStdin;
+
+int InitSound(BOOL Report)
+{
+	int i, t, ret;
+
+	if (SoundMode == 4)
+	{
+		char fn[] = "D:samples.wav";
+
+		// create a separate new console window
+//		AllocConsole();
+
+		// attach the new console to this application's process
+//		AttachConsole(GetCurrentProcessId());
+
+		hStdin =  CreateFileA(fn,
+			GENERIC_READ,
+			1,                    // exclusive access
+			NULL,                 // no security attrs
+			OPEN_EXISTING,
+			FILE_ATTRIBUTE_NORMAL,
+			NULL);
+			
+		// reopen the std I/O streams to redirect I/O to the new console
+
+//		freopen("CON", "r", stdin);
+
+//		i = _setmode(_fileno(stdin), _O_BINARY);
+//		if (i == -1)
+//			i = errno;
+//		else
+//			printf("'stdin' successfully changed to binary mode\n");
+
+		return TRUE;
+	}
+
+	header[0].dwFlags = WHDR_DONE;
+	header[1].dwFlags = WHDR_DONE;
+
+	if (strlen(PlaybackDevice) <= 2)
+		PlayBackIndex = atoi(PlaybackDevice);
+	else
+	{
+		// Name instead of number. Look for a substring match
+
+		for (i = 0; i < PlaybackCount; i++)
+		{
+			if (strstr(&PlaybackNames[i][0], PlaybackDevice))
+			{
+				PlayBackIndex = i;
+				break;
+			}
+		}
+	}
+
+    ret = waveOutOpen(&hWaveOut, PlayBackIndex, &wfx, 0, 0, CALLBACK_NULL); //WAVE_MAPPER
+
+	if (ret)
+		Debugprintf("Failed to open WaveOut Device %s Error %d", PlaybackDevice, ret);
+	else
+	{
+		ret = waveOutGetDevCapsA((UINT_PTR)hWaveOut, &pwoc, sizeof(WAVEOUTCAPSA));
+		if (Report)
+			Debugprintf("Opened WaveOut Device %s", pwoc.szPname);
+	}
+
+	if (strlen(CaptureDevice) <= 2)
+		CaptureIndex = atoi(CaptureDevice);
+	else
+	{
+		// Name instead of number. Look for a substring match
+
+		for (i = 0; i < CaptureCount; i++)
+		{
+			if (strstr(&CaptureNames[i][0], CaptureDevice))
+			{
+				CaptureIndex = i;
+				break;
+			}
+		}
+	}
+
+	if (strcmp(CaptureNames[CaptureIndex], "STDIN") == 0)
+	{
+		stdinMode = 1;
+		char fn[] = "D:samples.wav";
+
+		hStdin = CreateFileA(fn,
+			GENERIC_READ,
+			1,                    // exclusive access
+			NULL,                 // no security attrs
+			OPEN_EXISTING,
+			FILE_ATTRIBUTE_NORMAL,
+			NULL);
+
+		DMABuffer = SoundInit();
+
+		return TRUE;
+	}
+
+    ret = waveInOpen(&hWaveIn, CaptureIndex, &wfx, 0, 0, CALLBACK_NULL); //WAVE_MAPPER
+	if (ret)
+		Debugprintf("Failed to open WaveIn Device %s Error %d", CaptureDevice, ret);
+	else
+	{
+		ret = waveInGetDevCapsA((UINT_PTR)hWaveIn, &pwic, sizeof(WAVEINCAPSA));
+		if (Report)
+			Debugprintf("Opened WaveIn Device %s", pwic.szPname);
+	}
+
+//	wavfp1 = fopen("s:\\textxxx.wav", "wb");
+
+	for (i = 0; i < NumberofinBuffers; i++)
+	{
+		inheader[i].dwBufferLength = ReceiveSize * 4;
+
+		ret = waveInPrepareHeader(hWaveIn, &inheader[i], sizeof(WAVEHDR));
+		ret = waveInAddBuffer(hWaveIn, &inheader[i], sizeof(WAVEHDR));
+	}
+
+	ret = waveInStart(hWaveIn);
+
+	DMABuffer = SoundInit();
+
+
+// This generates a nice musical pattern for sound interface testing
+
+/*
+for (i = 0; i < 100; i++)
+{
+	for (t = 0; t < SendSize ; ++t)
+		SampleSink(((((t * (t >> 8 | t >> 9) & 46 & t >> 8)) ^ (t & t >> 13 | t >> 6)) & 0xff) * 255);
+}
+*/
+
+	return TRUE;
+}
+
+static int min = 0, max = 0, lastlevelGUI = 0, lastlevelreport = 0;
+
+static UCHAR CurrentLevel = 0;		// Peak from current samples
+
+void PollReceivedSamples()
+{
+	// Process any captured samples
+	// Ideally call at least every 100 mS, more than 200 will loose data
+
+	// For level display we want a fairly rapid level average but only want to report 
+	// to log every 10 secs or so
+
+	// with Windows we get mono data
+
+	if (stdinMode)
+	{
+		StdinPollReceivedSamples();
+		return;
+	}
+
+	if (inheader[inIndex].dwFlags & WHDR_DONE)
+	{
+		short * ptr = &inbuffer[inIndex][0];
+		int i;
+
+		for (i = 0; i < ReceiveSize; i++)
+		{
+			if (*(ptr) < min)
+				min = *ptr;
+			else if (*(ptr) > max)
+				max = *ptr;
+			ptr++;
+		}
+
+		CurrentLevel = ((max - min) * 75) /32768;	// Scale to 150 max
+
+		if ((Now - lastlevelGUI) > 2000)	// 2 Secs
+		{
+//			if (WaterfallActive == 0 && SpectrumActive == 0)				// Don't need to send as included in Waterfall Line
+//				SendtoGUI('L', &CurrentLevel, 1);	// Signal Level
+			
+			lastlevelGUI = Now;
+
+			if ((Now - lastlevelreport) > 10000)	// 10 Secs
+			{
+				char HostCmd[64];
+				lastlevelreport = Now;
+
+				sprintf(HostCmd, "INPUTPEAKS %d %d", min, max);
+				Debugprintf("Input peaks = %d, %d", min, max);
+
+			}
+			min = max = 0;
+		}
+
+//		debugprintf(LOGDEBUG, "Process %d %d", inIndex, inheader[inIndex].dwBytesRecorded/2);
+//		if (Capturing && Loopback == FALSE)
+			ProcessNewSamples(&inbuffer[inIndex][0], inheader[inIndex].dwBytesRecorded/4);
+
+		waveInUnprepareHeader(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+		inheader[inIndex].dwFlags = 0;
+		waveInPrepareHeader(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+		waveInAddBuffer(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+
+		inIndex++;
+		
+		if (inIndex == NumberofinBuffers)
+			inIndex = 0;
+	}
+}
+
+
+
+/*
+
+// Pre GUI Version
+void PollReceivedSamples()
+{
+	// Process any captured samples
+	// Ideally call at least every 100 mS, more than 200 will loose data
+
+	if (inheader[inIndex].dwFlags & WHDR_DONE)
+	{
+		short * ptr = &inbuffer[inIndex][0];
+		int i;
+
+		for (i = 0; i < ReceiveSize; i++)
+		{
+			if (*(ptr) < min)
+				min = *ptr;
+			else if (*(ptr) > max)
+				max = *ptr;
+			ptr++;
+		}
+		leveltimer++;
+
+		if (leveltimer > 100)
+		{
+			char HostCmd[64];
+			leveltimer = 0;
+			sprintf(HostCmd, "INPUTPEAKS %d %d", min, max);
+			QueueCommandToHost(HostCmd);
+
+			debugprintf(LOGDEBUG, "Input peaks = %d, %d", min, max);
+			min = max = 0;
+		}
+
+//		debugprintf(LOGDEBUG, "Process %d %d", inIndex, inheader[inIndex].dwBytesRecorded/2);
+		if (Capturing && Loopback == FALSE)
+			ProcessNewSamples(&inbuffer[inIndex][0], inheader[inIndex].dwBytesRecorded/2);
+
+		waveInUnprepareHeader(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+		inheader[inIndex].dwFlags = 0;
+		waveInPrepareHeader(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+		waveInAddBuffer(hWaveIn, &inheader[inIndex], sizeof(WAVEHDR));
+
+		inIndex++;
+		
+		if (inIndex == NumberofinBuffers)
+			inIndex = 0;
+	}
+}
+*/
+
+void StopCapture()
+{
+	Capturing = FALSE;
+
+//	waveInStop(hWaveIn);
+//	debugprintf(LOGDEBUG, "Stop Capture");
+}
+
+void StartCapture()
+{
+	Capturing = TRUE;
+//	debugprintf(LOGDEBUG, "Start Capture");
+}
+void CloseSound()
+{ 
+	waveInClose(hWaveIn);
+	waveOutClose(hWaveOut);
+}
+
+#include <stdarg.h>
+
+VOID CloseDebugLog()
+{	
+	if(logfile[0])
+		fclose(logfile[0]);
+	logfile[0] = NULL;
+}
+
+
+FILE *statslogfile = NULL;
+
+VOID CloseStatsLog()
+{
+	fclose(statslogfile);
+	statslogfile = NULL;
+}
+
+VOID WriteSamples(short * buffer, int len)
+{
+	fwrite(buffer, 1, len * 2, wavfp1);
+}
+
+short * SoundInit()
+{
+	Index = 0;
+	return &buffer[0][0];
+
+
+}
+	
+//	Called at end of transmission
+
+extern int Number;				// Number of samples waiting to be sent
+
+// Subroutine to add trailer before filtering
+
+void SoundFlush()
+{
+	// Append Trailer then wait for TX to complete
+
+//	AddTrailer();			// add the trailer.
+
+//	if (Loopback)
+//		ProcessNewSamples(buffer[Index], Number);
+
+	SendtoCard(buffer[Index], Number);
+
+	//	Wait for all sound output to complete
+	
+	while (!(header[0].dwFlags & WHDR_DONE))
+		txSleep(10);
+	while (!(header[1].dwFlags & WHDR_DONE))
+		txSleep(10);
+
+	// I think we should turn round the link here. I dont see the point in
+	// waiting for MainPoll
+
+	SoundIsPlaying = FALSE;
+
+	// Clear buffers
+
+	Number = 0;
+	memset(buffer, 0, sizeof(buffer));
+	DMABuffer = &buffer[0][0];
+
+//	StartCapture();
+
+	return;
+}
+
+int CheckAllSent()
+{
+	if ((header[0].dwFlags & WHDR_DONE) && (header[1].dwFlags & WHDR_DONE))
+		return 1;
+
+	return 0;
+}
+
+
+void StartCodec(char * strFault)
+{
+	strFault[0] = 0;
+	InitSound(FALSE);
+
+}
+
+void StopCodec(char * strFault)
+{
+	CloseSound();
+	strFault[0] = 0;
+}
+
+// Serial Port Stuff
+
+HANDLE OpenCOMPort(char * pPort, int speed, BOOL SetDTR, BOOL SetRTS, BOOL Quiet, int Stopbits)
+{
+	char szPort[80];
+	BOOL fRetVal;
+	COMMTIMEOUTS  CommTimeOuts;
+	int	Err;
+	char buf[100];
+	HANDLE fd;
+	DCB dcb;
+
+	if (_memicmp(pPort, "COM", 3) == 0)
+	{
+		char * pp = (char *)pPort;
+		int p = atoi(&pp[3]);
+		sprintf(szPort, "\\\\.\\COM%d", p);
+	}
+	else	
+		strcpy(szPort, pPort);
+	
+	// open COMM device
+
+	fd = CreateFileA(szPort, GENERIC_READ | GENERIC_WRITE,
+		0,                    // exclusive access
+		NULL,                 // no security attrs
+		OPEN_EXISTING,
+		FILE_ATTRIBUTE_NORMAL,
+		NULL);
+
+	if (fd == (HANDLE)-1)
+	{
+		if (Quiet == 0)
+		{
+			sprintf(buf, " %s could not be opened \r\n ", pPort);
+			OutputDebugStringA(buf);
+		}
+		return (FALSE);
+	}
+
+	Err = GetFileType(fd);
+
+	// setup device buffers
+
+	SetupComm(fd, 4096, 4096);
+
+	// purge any information in the buffer
+
+	PurgeComm(fd, PURGE_TXABORT | PURGE_RXABORT |
+		PURGE_TXCLEAR | PURGE_RXCLEAR);
+
+	// set up for overlapped I/O
+
+	CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
+	CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
+	CommTimeOuts.ReadTotalTimeoutConstant = 0;
+	CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
+	//     CommTimeOuts.WriteTotalTimeoutConstant = 0 ;
+	CommTimeOuts.WriteTotalTimeoutConstant = 500;
+	SetCommTimeouts(fd, &CommTimeOuts);
+
+	dcb.DCBlength = sizeof(DCB);
+
+	GetCommState(fd, &dcb);
+
+	dcb.BaudRate = speed;
+	dcb.ByteSize = 8;
+	dcb.Parity = 0;
+	dcb.StopBits = TWOSTOPBITS;
+	dcb.StopBits = Stopbits;
+
+	// setup hardware flow control
+
+	dcb.fOutxDsrFlow = 0;
+	dcb.fDtrControl = DTR_CONTROL_DISABLE;
+
+	dcb.fOutxCtsFlow = 0;
+	dcb.fRtsControl = RTS_CONTROL_DISABLE;
+
+	// setup software flow control
+
+	dcb.fInX = dcb.fOutX = 0;
+	dcb.XonChar = 0;
+	dcb.XoffChar = 0;
+	dcb.XonLim = 100;
+	dcb.XoffLim = 100;
+
+	// other various settings
+
+	dcb.fBinary = TRUE;
+	dcb.fParity = FALSE;
+
+	fRetVal = SetCommState(fd, &dcb);
+
+	if (fRetVal)
+	{
+		if (SetDTR)
+			EscapeCommFunction(fd, SETDTR);
+		if (SetRTS)
+			EscapeCommFunction(fd, SETRTS);
+	}
+	else
+	{
+		sprintf(buf, "%s Setup Failed %d ", pPort, GetLastError());
+
+		printf(buf);
+		OutputDebugStringA(buf);
+		CloseHandle(fd);
+		return 0;
+	}
+
+	return fd;
+
+}
+
+int ReadCOMBlock(HANDLE fd, char * Block, int MaxLength)
+{
+	BOOL       fReadStat;
+	COMSTAT    ComStat;
+	DWORD      dwErrorFlags;
+	DWORD      dwLength;
+
+	// only try to read number of bytes in queue
+
+	ClearCommError(fd, &dwErrorFlags, &ComStat);
+
+	dwLength = min((DWORD)MaxLength, ComStat.cbInQue);
+
+	if (dwLength > 0)
+	{
+		fReadStat = ReadFile(fd, Block, dwLength, &dwLength, NULL);
+
+		if (!fReadStat)
+		{
+			dwLength = 0;
+			ClearCommError(fd, &dwErrorFlags, &ComStat);
+		}
+	}
+
+	return dwLength;
+}
+
+BOOL WriteCOMBlock(HANDLE fd, char * Block, int BytesToWrite)
+{
+	BOOL        fWriteStat;
+	DWORD       BytesWritten;
+	DWORD       ErrorFlags;
+	COMSTAT     ComStat;
+
+	fWriteStat = WriteFile(fd, Block, BytesToWrite,
+		&BytesWritten, NULL);
+
+	if ((!fWriteStat) || (BytesToWrite != BytesWritten))
+	{
+		int Err = GetLastError();
+		ClearCommError(fd, &ErrorFlags, &ComStat);
+		return FALSE;
+	}
+	return TRUE;
+}
+
+
+VOID CloseCOMPort(int fd)
+{
+	SetCommMask((HANDLE)fd, 0);
+
+	// drop DTR
+
+	COMClearDTR(fd);
+
+	// purge any outstanding reads/writes and close device handle
+
+	PurgeComm((HANDLE)fd, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
+
+	CloseHandle((HANDLE)fd);
+}
+
+
+VOID COMSetDTR(int fd)
+{
+	EscapeCommFunction((HANDLE)fd, SETDTR);
+}
+
+VOID COMClearDTR(int fd)
+{
+	EscapeCommFunction((HANDLE)fd, CLRDTR);
+}
+
+VOID COMSetRTS(int fd)
+{
+	EscapeCommFunction((HANDLE)fd, SETRTS);
+}
+
+VOID COMClearRTS(int fd)
+{
+	EscapeCommFunction((HANDLE)fd, CLRRTS);
+}
+
+/*
+
+void CatWrite(char * Buffer, int Len)
+{
+	if (hCATDevice)
+		WriteCOMBlock(hCATDevice, Buffer, Len);
+}
+
+*/
+
+void * initPulse()
+{
+	return NULL;
+}
+
+
+
+void StdinPollReceivedSamples()
+{
+	short buffer[2048];
+	DWORD out;
+	int res = ReadFile(hStdin, buffer, 2048, &out, NULL);
+	if (res <= 0)
+	{
+		res = GetLastError();
+		printf("\nEnd of file on stdin.  Exiting.\n");
+	}
+
+	short * ptr = buffer;
+	int i;
+
+	for (i = 0; i < ReceiveSize; i++)
+	{
+		if (*(ptr) < min)
+			min = *ptr;
+		else if (*(ptr) > max)
+			max = *ptr;
+		ptr++;
+	}
+
+	CurrentLevel = ((max - min) * 75) / 32768;	// Scale to 150 max
+
+	if ((Now - lastlevelGUI) > 2000)	// 2 Secs
+	{
+		//			if (WaterfallActive == 0 && SpectrumActive == 0)				// Don't need to send as included in Waterfall Line
+		//				SendtoGUI('L', &CurrentLevel, 1);	// Signal Level
+
+		lastlevelGUI = Now;
+
+		if ((Now - lastlevelreport) > 10000)	// 10 Secs
+		{
+			char HostCmd[64];
+			lastlevelreport = Now;
+
+			sprintf(HostCmd, "INPUTPEAKS %d %d", min, max);
+			Debugprintf("Input peaks = %d, %d", min, max);
+
+		}
+		min = max = 0;
+	}
+
+	//		debugprintf(LOGDEBUG, "Process %d %d", inIndex, inheader[inIndex].dwBytesRecorded/2);
+	//		if (Capturing && Loopback == FALSE)
+	ProcessNewSamples(buffer, 512);
+
+
+}
+
+
diff --git a/ardopSampleArrays.c b/ardopSampleArrays.c
new file mode 100644
index 0000000..7d1f3eb
--- /dev/null
+++ b/ardopSampleArrays.c
@@ -0,0 +1,16077 @@
+
+#include "ARDOPC.h"
+
+
+//	These Templates are used to save lots of calculations when
+//	generating samples. They are pre-calculated (by Calctemplates.c)
+//  so they can be stored in ROM on embedded platforms
+
+CONST short int50BaudTwoToneLeaderTemplate[240] = {	// holds just 1 symbol (20 ms) of the 50 Baud leader
+
+	0, -263, 0, 793, 1496, 1322, 0, -1849, -2988, -2375,
+	0, 2901, 4474, 3424, 0, -3944, -5945, -4462, 0, 4978,
+	7402, 5489, 0, -5996, -8836, -6499, 0, 6999, 10249, 7493,
+	0, -7981, -11631, -8465, 0, 8944, 12984, 9416, 0, -9880,
+	-14298, -10339, 0, 10791, 15576, 11235, 0, -11670, -16809, -12099,
+	0, 12519, 17998, 12931, 0, -13333, -19136, -13726, 0, 14111,
+	20223, 14486, 0, -14849, -21252, -15203, 0, 15548, 22226, 15881,
+	0, -16202, -23136, -16514, 0, 16814, 23985, 17103, 0, -17378,
+	-24767, -17643, 0, 17897, 25482, 18137, 0, -18364, -26126, -18580,
+	0, 18783, 26700, 18973, 0, -19148, -27199, -19312, 0, 19463,
+	27625, 19601, 0, -19723, -27974, -19833, 0, 19930, 28247, 20014,
+	0, -20081, -28442, -20137, 0, 20179, 28560, 20208, 0, -20220,
+	-28599, -20220, 0, 20207, 28560, 20180, 0, -20137, -28442, -20082,
+	0, 20013, 28247, 19931, 0, -19833, -27974, -19724, 0, 19600,
+	27625, 19464, 0, -19312, -27199, -19149, 0, 18972, 26700, 18783,
+	0, -18579, -26126, -18365, 0, 18137, 25482, 17897, 0, -17643,
+	-24767, -17379, 0, 17102, 23985, 16815, 0, -16513, -23136, -16203,
+	0, 15881, 22226, 15548, 0, -15203, -21252, -14849, 0, 14485,
+	20223, 14112, 0, -13726, -19136, -13333, 0, 12931, 17998, 12520,
+	0, -12098, -16809, -11671, 0, 11235, 15576, 10791, 0, -10338,
+	-14299, -9880, 0, 9415, 12984, 8944, 0, -8465, -11631, -7982,
+	0, 7493, 10249, 6999, 0, -6499, -8836, -5996, 0, 5489,
+	7402, 4978, 0, -4462, -5945, -3944, 0, 3424, 4474, 2902,
+	0, -2375, -2988, -1849, 0, 1322, 1496, 794, 0, -263};
+
+CONST short intFSK50bdCarTemplate[12][240] = {
+{
+	0, 15576, 26127, 28247, 21253, 7402, -8837, -22226, -28443, -25482,
+	-14299, 1496, 16810, 26700, 27975, 20223, 5946, -10249, -23137, -28560,
+	-24768, -12984, 2989, 17998, 27200, 27625, 19137, 4473, -11632, -23985,
+	-28599, -23985, -11632, 4474, 19137, 27625, 27200, 17998, 2989, -12984,
+	-24768, -28560, -23137, -10249, 5946, 20223, 27975, 26700, 16810, 1496,
+	-14300, -25482, -28443, -22226, -8837, 7402, 21254, 28247, 26127, 15576,
+	0, -15576, -26127, -28247, -21253, -7402, 8837, 22226, 28443, 25482,
+	14299, -1496, -16810, -26700, -27974, -20223, -5946, 10249, 23137, 28560,
+	24768, 12984, -2989, -17998, -27200, -27625, -19137, -4473, 11632, 23986,
+	28599, 23985, 11632, -4474, -19137, -27625, -27200, -17998, -2989, 12984,
+	24768, 28560, 23137, 10249, -5946, -20223, -27975, -26700, -16810, -1496,
+	14300, 25482, 28443, 22226, 8837, -7402, -21254, -28247, -26127, -15576,
+	0, 15576, 26127, 28247, 21253, 7402, -8838, -22226, -28443, -25482,
+	-14299, 1497, 16810, 26700, 27974, 20223, 5946, -10249, -23138, -28560,
+	-24768, -12983, 2989, 17998, 27200, 27625, 19136, 4473, -11632, -23986,
+	-28599, -23985, -11632, 4474, 19137, 27625, 27200, 17998, 2989, -12984,
+	-24768, -28560, -23137, -10249, 5946, 20223, 27975, 26700, 16810, 1496,
+	-14300, -25482, -28443, -22226, -8837, 7402, 21254, 28247, 26127, 15576,
+	0, -15576, -26127, -28247, -21253, -7401, 8838, 22226, 28443, 25482,
+	14299, -1497, -16810, -26700, -27974, -20223, -5945, 10249, 23138, 28560,
+	24768, 12983, -2989, -17998, -27200, -27625, -19136, -4473, 11632, 23986,
+	28599, 23985, 11632, -4474, -19137, -27625, -27200, -17998, -2989, 12984,
+	24768, 28560, 23137, 10248, -5946, -20223, -27975, -26700, -16810, -1496,
+	14300, 25482, 28443, 22226, 8837, -7402, -21254, -28247, -26127, -15576},
+
+	{	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810,
+	0, 16810, 27200, 27200, 16810, 0, -16810, -27200, -27200, -16810},
+
+	{	0, 17998, 27975, 25482, 11632, -7402, -23137, -28560, -21253, -4474,
+	14299, 26700, 27200, 15576, -2989, -20223, -28443, -23985, -8837, 10249,
+	24768, 28247, 19137, 1496, -16810, -27625, -26127, -12984, 5946, 22226,
+	28599, 22226, 5946, -12984, -26127, -27625, -16810, 1496, 19137, 28247,
+	24768, 10249, -8837, -23985, -28443, -20223, -2989, 15576, 27200, 26700,
+	14300, -4474, -21253, -28560, -23137, -7402, 11632, 25482, 27975, 17998,
+	0, -17998, -27975, -25482, -11632, 7402, 23137, 28560, 21253, 4474,
+	-14299, -26700, -27200, -15576, 2989, 20223, 28443, 23985, 8837, -10249,
+	-24768, -28247, -19137, -1496, 16810, 27625, 26127, 12984, -5946, -22226,
+	-28599, -22226, -5946, 12984, 26127, 27625, 16810, -1496, -19137, -28247,
+	-24768, -10249, 8837, 23985, 28443, 20223, 2989, -15576, -27200, -26700,
+	-14300, 4474, 21253, 28560, 23137, 7402, -11632, -25482, -27975, -17998,
+	0, 17998, 27975, 25482, 11632, -7402, -23137, -28560, -21253, -4474,
+	14299, 26700, 27200, 15576, -2989, -20223, -28443, -23985, -8837, 10249,
+	24768, 28247, 19137, 1496, -16810, -27625, -26127, -12984, 5946, 22226,
+	28599, 22226, 5946, -12984, -26127, -27625, -16810, 1496, 19137, 28247,
+	24768, 10249, -8837, -23985, -28443, -20223, -2989, 15576, 27200, 26700,
+	14300, -4473, -21253, -28560, -23137, -7402, 11632, 25482, 27975, 17998,
+	0, -17998, -27975, -25482, -11632, 7402, 23137, 28560, 21253, 4474,
+	-14299, -26700, -27200, -15576, 2989, 20223, 28443, 23986, 8837, -10249,
+	-24768, -28247, -19137, -1496, 16810, 27625, 26127, 12984, -5946, -22226,
+	-28599, -22226, -5946, 12984, 26127, 27625, 16810, -1496, -19137, -28247,
+	-24768, -10249, 8837, 23985, 28443, 20223, 2989, -15576, -27200, -26700,
+	-14300, 4473, 21253, 28560, 23137, 7402, -11632, -25482, -27975, -17998},
+
+	{	0, 19137, 28443, 23137, 5946, -14299, -27200, -26127, -11632, 8837,
+	24768, 27975, 16810, -2989, -21253, -28600, -21253, -2989, 16810, 27975,
+	24768, 8837, -11632, -26127, -27200, -14299, 5946, 23137, 28443, 19137,
+	0, -19137, -28443, -23137, -5946, 14300, 27200, 26127, 11632, -8837,
+	-24768, -27975, -16810, 2989, 21253, 28599, 21253, 2989, -16810, -27975,
+	-24768, -8837, 11632, 26127, 27200, 14299, -5946, -23137, -28443, -19137,
+	0, 19137, 28443, 23137, 5946, -14300, -27200, -26127, -11632, 8837,
+	24768, 27974, 16810, -2989, -21254, -28599, -21253, -2989, 16810, 27975,
+	24768, 8837, -11632, -26127, -27200, -14299, 5946, 23137, 28443, 19137,
+	0, -19137, -28443, -23137, -5946, 14300, 27200, 26127, 11632, -8838,
+	-24768, -27974, -16810, 2989, 21254, 28599, 21253, 2989, -16810, -27975,
+	-24768, -8837, 11632, 26127, 27200, 14299, -5946, -23137, -28443, -19137,
+	0, 19137, 28443, 23137, 5946, -14300, -27200, -26127, -11632, 8838,
+	24768, 27974, 16810, -2989, -21254, -28599, -21253, -2989, 16810, 27975,
+	24768, 8837, -11632, -26127, -27200, -14299, 5946, 23138, 28443, 19136,
+	0, -19137, -28443, -23137, -5946, 14300, 27200, 26127, 11632, -8838,
+	-24768, -27974, -16810, 2989, 21254, 28599, 21253, 2989, -16810, -27975,
+	-24768, -8837, 11632, 26127, 27200, 14299, -5946, -23138, -28443, -19136,
+	0, 19137, 28443, 23137, 5945, -14300, -27200, -26127, -11632, 8838,
+	24768, 27974, 16810, -2989, -21254, -28599, -21253, -2989, 16810, 27975,
+	24768, 8837, -11632, -26127, -27200, -14299, 5946, 23138, 28443, 19136,
+	0, -19137, -28443, -23137, -5945, 14300, 27200, 26127, 11632, -8838,
+	-24768, -27974, -16810, 2989, 21254, 28599, 21253, 2989, -16810, -27975,
+	-24768, -8837, 11633, 26127, 27200, 14299, -5946, -23138, -28443, -19136},
+
+	{	0, 18574, 28247, 24385, 8837, -10944, -25482, -27809, -16810, 2243,
+	20223, 28511, 23137, 6676, -12984, -26422, -27200, -14943, 4474, 21747,
+	28599, 21747, 4474, -14943, -27200, -26422, -12984, 6676, 23137, 28511,
+	20223, 2243, -16810, -27809, -25482, -10944, 8837, 24385, 28247, 18574,
+	0, -18574, -28247, -24385, -8837, 10944, 25482, 27809, 16810, -2243,
+	-20223, -28511, -23137, -6676, 12984, 26422, 27200, 14943, -4473, -21747,
+	-28599, -21747, -4474, 14943, 27200, 26422, 12984, -6676, -23137, -28511,
+	-20223, -2244, 16810, 27809, 25482, 10944, -8837, -24385, -28247, -18574,
+	0, 18574, 28247, 24385, 8837, -10944, -25482, -27809, -16810, 2243,
+	20223, 28511, 23137, 6676, -12984, -26422, -27200, -14943, 4473, 21747,
+	28599, 21747, 4474, -14943, -27200, -26422, -12984, 6676, 23137, 28511,
+	20223, 2244, -16810, -27809, -25482, -10944, 8837, 24385, 28247, 18574,
+	0, -18574, -28247, -24385, -8838, 10944, 25482, 27809, 16810, -2243,
+	-20223, -28511, -23137, -6676, 12984, 26422, 27200, 14943, -4473, -21747,
+	-28599, -21747, -4474, 14943, 27200, 26423, 12984, -6676, -23137, -28511,
+	-20223, -2244, 16810, 27809, 25482, 10944, -8837, -24385, -28247, -18574,
+	0, 18574, 28247, 24385, 8838, -10944, -25482, -27809, -16810, 2243,
+	20223, 28511, 23137, 6676, -12983, -26422, -27200, -14943, 4473, 21747,
+	28599, 21747, 4474, -14943, -27200, -26423, -12984, 6676, 23137, 28511,
+	20223, 2244, -16810, -27809, -25482, -10944, 8837, 24385, 28247, 18574,
+	0, -18574, -28247, -24385, -8838, 10944, 25482, 27809, 16810, -2243,
+	-20223, -28511, -23138, -6676, 12983, 26422, 27200, 14943, -4473, -21747,
+	-28599, -21747, -4474, 14943, 27200, 26423, 12984, -6676, -23137, -28511,
+	-20223, -2244, 16810, 27809, 25482, 10944, -8837, -24385, -28247, -18574},
+
+	{	0, 19686, 28560, 21747, 2989, -17410, -28247, -23570, -5946, 14943,
+	27625, 25134, 8837, -12312, -26700, -26422, -11632, 9546, 25482, 27422,
+	14299, -6676, -23985, -28121, -16810, 3733, 22226, 28511, 19137, -748,
+	-20223, -28590, -21253, -2243, 17998, 28355, 23137, 5211, -15576, -27809,
+	-24768, -8122, 12984, 26959, 26127, 10944, -10249, -25813, -27200, -13646,
+	7402, 24385, 27975, 16199, -4474, -22689, -28443, -18574, 1496, 20745,
+	28599, 20745, 1496, -18574, -28443, -22689, -4473, 16199, 27975, 24385,
+	7402, -13646, -27200, -25813, -10249, 10944, 26127, 26959, 12984, -8122,
+	-24768, -27809, -15576, 5212, 23137, 28355, 17998, -2243, -21253, -28590,
+	-20223, -748, 19137, 28511, 22226, 3732, -16810, -28121, -23985, -6676,
+	14300, 27422, 25482, 9546, -11632, -26422, -26700, -12312, 8837, 25134,
+	27625, 14943, -5946, -23570, -28247, -17410, 2989, 21747, 28560, 19686,
+	0, -19687, -28560, -21747, -2989, 17410, 28247, 23569, 5946, -14943,
+	-27625, -25134, -8837, 12312, 26700, 26422, 11632, -9546, -25482, -27422,
+	-14299, 6676, 23986, 28121, 16810, -3733, -22226, -28511, -19137, 748,
+	20223, 28590, 21253, 2243, -17998, -28355, -23137, -5211, 15576, 27809,
+	24768, 8122, -12984, -26959, -26127, -10944, 10249, 25813, 27200, 13646,
+	-7402, -24385, -27974, -16199, 4474, 22689, 28443, 18574, -1496, -20745,
+	-28599, -20745, -1496, 18574, 28443, 22689, 4473, -16199, -27975, -24385,
+	-7402, 13646, 27200, 25813, 10249, -10944, -26127, -26959, -12983, 8122,
+	24768, 27809, 15576, -5212, -23137, -28355, -17998, 2244, 21254, 28590,
+	20223, 748, -19137, -28511, -22226, -3732, 16810, 28121, 23985, 6676,
+	-14300, -27422, -25482, -9546, 11632, 26423, 26700, 12312, -8838, -25134,
+	-27625, -14943, 5946, 23570, 28247, 17410, -2989, -21747, -28560, -19686},
+
+	{	0, 20745, 28560, 18574, -2989, -22689, -28247, -16199, 5946, 24385,
+	27625, 13646, -8837, -25813, -26700, -10944, 11632, 26959, 25482, 8122,
+	-14299, -27809, -23986, -5212, 16810, 28355, 22226, 2244, -19137, -28590,
+	-20223, 748, 21253, 28511, 17998, -3732, -23137, -28121, -15576, 6676,
+	24768, 27422, 12984, -9546, -26127, -26423, -10249, 12312, 27200, 25134,
+	7402, -14943, -27974, -23570, -4474, 17410, 28443, 21747, 1497, -19686,
+	-28599, -19687, 1496, 21747, 28443, 17410, -4473, -23569, -27975, -14943,
+	7401, 25134, 27200, 12312, -10249, -26422, -26127, -9547, 12983, 27422,
+	24768, 6676, -15576, -28121, -23138, -3733, 17998, 28511, 21254, 749,
+	-20222, -28590, -19137, 2243, 22226, 28355, 16810, -5211, -23985, -27809,
+	-14300, 8122, 25482, 26959, 11633, -10944, -26700, -25814, -8838, 13646,
+	27625, 24385, 5946, -16198, -28247, -22690, -2989, 18573, 28560, 20746,
+	0, -20745, -28560, -18574, 2989, 22689, 28247, 16199, -5945, -24385,
+	-27625, -13647, 8837, 25813, 26700, 10945, -11632, -26959, -25483, -8123,
+	14299, 27809, 23986, 5212, -16810, -28355, -22226, -2244, 19136, 28590,
+	20223, -748, -21253, -28511, -17999, 3732, 23137, 28121, 15577, -6675,
+	-24768, -27422, -12984, 9546, 26127, 26423, 10249, -12312, -27200, -25134,
+	-7402, 14942, 27974, 23570, 4474, -17410, -28443, -21748, -1497, 19686,
+	28599, 19687, -1496, -21747, -28443, -17411, 4473, 23569, 27975, 14944,
+	-7401, -25133, -27200, -12313, 10248, 26422, 26127, 9547, -12983, -27422,
+	-24768, -6677, 15575, 28120, 23138, 3733, -17997, -28511, -21254, -749,
+	20222, 28590, 19137, -2243, -22225, -28355, -16811, 5211, 23985, 27809,
+	14300, -8121, -25482, -26959, -11633, 10943, 26700, 25814, 8838, -13645,
+	-27625, -24386, -5947, 16198, 28247, 22690, 2990, -18573, -28560, -20746},
+
+	{	0, 21747, 28247, 14943, -8837, -26422, -25482, -6676, 16810, 28511,
+	20223, -2243, -23137, -27809, -12984, 10944, 27200, 24385, 4474, -18574,
+	-28599, -18574, 4473, 24385, 27200, 10944, -12984, -27809, -23137, -2243,
+	20223, 28511, 16810, -6676, -25482, -26422, -8837, 14943, 28247, 21747,
+	0, -21747, -28247, -14943, 8837, 26422, 25482, 6676, -16810, -28511,
+	-20223, 2243, 23137, 27809, 12984, -10944, -27200, -24385, -4474, 18574,
+	28599, 18574, -4473, -24385, -27200, -10944, 12984, 27809, 23137, 2244,
+	-20223, -28511, -16810, 6676, 25482, 26423, 8838, -14943, -28247, -21747,
+	0, 21747, 28247, 14943, -8837, -26422, -25482, -6676, 16810, 28511,
+	20223, -2243, -23137, -27809, -12984, 10944, 27200, 24385, 4474, -18574,
+	-28599, -18574, 4473, 24385, 27200, 10944, -12983, -27809, -23138, -2244,
+	20223, 28511, 16810, -6676, -25482, -26423, -8838, 14943, 28247, 21747,
+	0, -21747, -28247, -14943, 8837, 26422, 25482, 6676, -16810, -28511,
+	-20223, 2243, 23137, 27809, 12984, -10944, -27200, -24385, -4474, 18573,
+	28599, 18574, -4473, -24385, -27200, -10945, 12983, 27809, 23138, 2244,
+	-20223, -28511, -16810, 6676, 25482, 26423, 8838, -14943, -28247, -21747,
+	0, 21747, 28247, 14943, -8837, -26422, -25482, -6676, 16810, 28511,
+	20223, -2243, -23137, -27809, -12984, 10944, 27200, 24385, 4474, -18573,
+	-28599, -18574, 4473, 24385, 27200, 10945, -12983, -27809, -23138, -2244,
+	20222, 28511, 16810, -6676, -25482, -26423, -8838, 14943, 28247, 21747,
+	0, -21747, -28247, -14943, 8837, 26422, 25482, 6676, -16810, -28511,
+	-20223, 2243, 23137, 27809, 12984, -10944, -27200, -24385, -4474, 18573,
+	28599, 18574, -4473, -24385, -27200, -10945, 12983, 27809, 23138, 2244,
+	-20222, -28511, -16811, 6676, 25482, 26423, 8838, -14943, -28247, -21747},
+
+	{	0, 21253, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21253, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21253, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21253, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21253, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21253, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21253, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21254, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21254, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21254, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21254, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21254, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21254, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21254, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253,
+	0, 21254, 28443, 16810, -5946, -24768, -27200, -11632, 11632, 27200,
+	24768, 5946, -16810, -28443, -21253, 0, 21254, 28443, 16810, -5946,
+	-24768, -27200, -11632, 11632, 27200, 24768, 5946, -16810, -28443, -21253},
+
+	{	0, 22226, 27975, 12984, -11632, -27625, -23137, -1496, 21253, 28247,
+	14300, -10249, -27200, -23985, -2989, 20223, 28443, 15576, -8837, -26700,
+	-24768, -4474, 19137, 28560, 16810, -7402, -26127, -25482, -5946, 17998,
+	28599, 17998, -5946, -25482, -26127, -7402, 16810, 28560, 19137, -4473,
+	-24768, -26700, -8838, 15576, 28443, 20223, -2989, -23985, -27200, -10249,
+	14299, 28247, 21254, -1496, -23137, -27625, -11632, 12983, 27974, 22226,
+	0, -22226, -27975, -12984, 11632, 27625, 23137, 1496, -21253, -28247,
+	-14300, 10249, 27200, 23986, 2989, -20223, -28443, -15576, 8837, 26700,
+	24768, 4474, -19136, -28560, -16810, 7401, 26127, 25482, 5946, -17998,
+	-28599, -17998, 5946, 25482, 26127, 7402, -16810, -28560, -19137, 4473,
+	24768, 26700, 8838, -15576, -28443, -20223, 2989, 23985, 27200, 10249,
+	-14299, -28247, -21254, 1496, 23137, 27625, 11632, -12983, -27974, -22226,
+	0, 22226, 27975, 12984, -11632, -27625, -23138, -1497, 21253, 28247,
+	14300, -10248, -27200, -23986, -2989, 20222, 28443, 15576, -8837, -26700,
+	-24768, -4474, 19136, 28560, 16810, -7401, -26127, -25482, -5946, 17998,
+	28599, 17998, -5945, -25482, -26127, -7402, 16810, 28560, 19137, -4473,
+	-24768, -26700, -8838, 15576, 28443, 20223, -2989, -23985, -27200, -10249,
+	14299, 28247, 21254, -1496, -23137, -27625, -11633, 12983, 27974, 22226,
+	0, -22226, -27975, -12984, 11632, 27625, 23138, 1497, -21253, -28247,
+	-14300, 10248, 27200, 23986, 2990, -20222, -28443, -15577, 8837, 26700,
+	24768, 4474, -19136, -28560, -16811, 7401, 26127, 25483, 5946, -17998,
+	-28599, -17999, 5945, 25482, 26127, 7402, -16810, -28560, -19137, 4473,
+	24768, 26700, 8838, -15576, -28443, -20223, 2988, 23985, 27200, 10249,
+	-14299, -28247, -21254, 1496, 23137, 27625, 11633, -12983, -27974, -22226},
+
+	{	0, 23137, 27200, 8837, -16810, -28600, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8837, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8837, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8837, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8837, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8837, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8837, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8837, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8837, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23137,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23137,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23138,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23138,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23138,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23138,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23138,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23138,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23138,
+	0, 23137, 27200, 8838, -16810, -28599, -16810, 8837, 27200, 23138,
+	0, -23137, -27200, -8838, 16810, 28599, 16810, -8837, -27200, -23138},
+
+	{	0, 23985, 26127, 4474, -21253, -27625, -8837, 17998, 28443, 12984,
+	-14300, -28560, -16810, 10249, 27975, 20223, -5946, -26700, -23137, 1496,
+	24768, 25482, 2989, -22226, -27200, -7402, 19137, 28247, 11632, -15576,
+	-28599, -15576, 11632, 28247, 19137, -7402, -27200, -22226, 2989, 25482,
+	24768, 1496, -23137, -26700, -5946, 20223, 27975, 10249, -16810, -28560,
+	-14299, 12984, 28443, 17998, -8837, -27625, -21253, 4474, 26127, 23985,
+	0, -23986, -26127, -4473, 21254, 27625, 8837, -17998, -28443, -12984,
+	14300, 28560, 16810, -10249, -27975, -20223, 5946, 26700, 23137, -1496,
+	-24768, -25482, -2989, 22226, 27200, 7402, -19137, -28247, -11632, 15576,
+	28599, 15576, -11632, -28247, -19137, 7402, 27200, 22226, -2989, -25482,
+	-24768, -1496, 23137, 26700, 5946, -20223, -27974, -10249, 16810, 28560,
+	14299, -12984, -28443, -17998, 8838, 27625, 21253, -4474, -26127, -23985,
+	0, 23986, 26127, 4473, -21254, -27625, -8837, 17998, 28443, 12983,
+	-14300, -28560, -16810, 10249, 27975, 20223, -5946, -26700, -23137, 1497,
+	24768, 25482, 2989, -22226, -27200, -7401, 19137, 28247, 11632, -15576,
+	-28599, -15576, 11632, 28247, 19136, -7402, -27200, -22226, 2989, 25482,
+	24768, 1496, -23138, -26700, -5946, 20223, 27974, 10249, -16810, -28560,
+	-14299, 12984, 28443, 17998, -8838, -27625, -21253, 4474, 26127, 23985,
+	0, -23986, -26127, -4473, 21254, 27625, 8837, -17998, -28443, -12983,
+	14300, 28560, 16810, -10249, -27975, -20223, 5946, 26700, 23137, -1497,
+	-24768, -25482, -2989, 22226, 27200, 7401, -19137, -28247, -11632, 15576,
+	28599, 15576, -11632, -28247, -19136, 7402, 27200, 22226, -2989, -25482,
+	-24768, -1496, 23138, 26700, 5945, -20223, -27974, -10248, 16810, 28560,
+	14299, -12984, -28443, -17998, 8838, 27625, 21253, -4474, -26127, -23985}};
+
+
+// 100 Baud FSK for one carrier. Used for OFDM ACK
+
+CONST short intFSK100bdCarTemplate[4][120] = {
+	{0, 18574, 28247, 24385, 8837, -10944, -25482, -27809, -16810, 2243,
+	20223, 28511, 23137, 6676, -12984, -26422, -27200, -14943, 4474, 21747,
+	28599, 21747, 4474, -14943, -27200, -26422, -12984, 6676, 23137, 28511,
+	20223, 2243, -16810, -27809, -25482, -10944, 8837, 24385, 28247, 18574,
+	0, -18574, -28247, -24385, -8837, 10944, 25482, 27809, 16810, -2243,
+	-20223, -28511, -23137, -6676, 12984, 26422, 27200, 14943, -4473, -21747,
+	-28599, -21747, -4474, 14943, 27200, 26422, 12984, -6676, -23137, -28511,
+	-20223, -2244, 16810, 27809, 25482, 10944, -8837, -24385, -28247, -18574,
+	0, 18574, 28247, 24385, 8837, -10944, -25482, -27809, -16810, 2243,
+	20223, 28511, 23137, 6676, -12984, -26422, -27200, -14943, 4473, 21747,
+	28599, 21747, 4474, -14943, -27200, -26422, -12984, 6676, 23137, 28511,
+	20223, 2244, -16810, -27809, -25482, -10944, 8837, 24385, 28247, 18574},
+
+	{	0, 19686, 28560, 21747, 2989, -17410, -28247, -23570, -5946, 14943,
+	27625, 25134, 8837, -12312, -26700, -26422, -11632, 9546, 25482, 27422,
+	14299, -6676, -23985, -28121, -16810, 3733, 22226, 28511, 19137, -748,
+	-20223, -28590, -21253, -2243, 17998, 28355, 23137, 5211, -15576, -27809,
+	-24768, -8122, 12984, 26959, 26127, 10944, -10249, -25813, -27200, -13646,
+	7402, 24385, 27974, 16199, -4474, -22689, -28443, -18574, 1496, 20745,
+	28599, 20745, 1496, -18574, -28443, -22689, -4473, 16199, 27975, 24385,
+	7402, -13646, -27200, -25813, -10249, 10944, 26127, 26959, 12983, -8122,
+	-24768, -27809, -15576, 5212, 23138, 28355, 17998, -2244, -21254, -28590,
+	-20223, -748, 19137, 28511, 22226, 3732, -16810, -28121, -23985, -6676,
+	14300, 27422, 25482, 9546, -11632, -26423, -26700, -12312, 8838, 25134,
+	27625, 14943, -5946, -23570, -28247, -17410, 2989, 21747, 28560, 19686},
+
+	{	0, 20745, 28560, 18574, -2989, -22689, -28247, -16199, 5946, 24385,
+	27625, 13646, -8837, -25813, -26700, -10944, 11632, 26959, 25482, 8122,
+	-14299, -27809, -23986, -5212, 16810, 28355, 22226, 2244, -19137, -28590,
+	-20223, 748, 21253, 28511, 17998, -3732, -23137, -28121, -15576, 6676,
+	24768, 27422, 12984, -9546, -26127, -26423, -10249, 12312, 27200, 25134,
+	7402, -14943, -27974, -23570, -4474, 17410, 28443, 21747, 1496, -19686,
+	-28599, -19687, 1496, 21747, 28443, 17410, -4473, -23569, -27975, -14943,
+	7402, 25134, 27200, 12312, -10249, -26422, -26127, -9547, 12983, 27422,
+	24768, 6676, -15576, -28121, -23138, -3733, 17998, 28511, 21254, 748,
+	-20223, -28590, -19137, 2243, 22226, 28355, 16810, -5211, -23985, -27809,
+	-14300, 8122, 25482, 26959, 11632, -10944, -26700, -25814, -8838, 13646,
+	27625, 24385, 5946, -16198, -28247, -22690, -2989, 18574, 28560, 20745},
+
+	{	0, 21747, 28247, 14943, -8837, -26422, -25482, -6676, 16810, 28511,
+	20223, -2243, -23137, -27809, -12984, 10944, 27200, 24385, 4474, -18574,
+	-28599, -18574, 4474, 24385, 27200, 10944, -12984, -27809, -23137, -2243,
+	20223, 28511, 16810, -6676, -25482, -26422, -8837, 14943, 28247, 21747,
+	0, -21747, -28247, -14943, 8837, 26422, 25482, 6676, -16810, -28511,
+	-20223, 2243, 23137, 27809, 12984, -10944, -27200, -24385, -4474, 18574,
+	28599, 18574, -4474, -24385, -27200, -10944, 12984, 27809, 23137, 2243,
+	-20223, -28511, -16810, 6676, 25482, 26422, 8837, -14943, -28247, -21747,
+	0, 21747, 28247, 14943, -8837, -26422, -25482, -6676, 16810, 28511,
+	20223, -2243, -23137, -27809, -12984, 10944, 27200, 24385, 4473, -18574,
+	-28599, -18574, 4474, 24385, 27200, 10944, -12984, -27809, -23137, -2243,
+	20223, 28511, 16810, -6676, -25482, -26422, -8837, 14943, 28247, 21747}};
+
+CONST short intQAM50bdCarTemplate[11][4][120] = 
+{
+	{
+		{// Carrier 0 Phase 0
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034,
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034,
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034,
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034,
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034,
+	0, 8034, 15282, 21034, 24727, 26000, 24727, 21034, 15282, 8034,
+	0, -8034, -15282, -21034, -24727, -26000, -24727, -21034, -15282, -8034},
+	{// Carrier 0 Phase 1
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803,
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803,
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803,
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803,
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803,
+	18384, 23166, 25679, 25679, 23166, 18384, 11803, 4067, -4067, -11803,
+	-18384, -23166, -25679, -25679, -23166, -18384, -11803, -4067, 4067, 11803},
+	{// Carrier 0 Phase 2
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727,
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727,
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727,
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727,
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727,
+	26000, 24727, 21034, 15282, 8034, 0, -8034, -15282, -21034, -24727,
+	-26000, -24727, -21034, -15282, -8034, 0, 8034, 15282, 21034, 24727},
+	{// Carrier 0 Phase 3
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166,
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166,
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166,
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166,
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166,
+	18384, 11803, 4067, -4067, -11803, -18384, -23166, -25679, -25679, -23166,
+	-18384, -11803, -4067, 4067, 11803, 18384, 23166, 25679, 25679, 23166},
+	},
+
+	{{// Carrier 1 Phase 0
+	0, 10575, 19321, 24727, 25857, 22516, 15282, 5405, -5405, -15282,
+	-22516, -25857, -24727, -19321, -10575, 0, 10575, 19321, 24727, 25857,
+	22516, 15282, 5405, -5405, -15282, -22516, -25857, -24727, -19321, -10575,
+	0, 10575, 19321, 24727, 25857, 22516, 15282, 5405, -5405, -15282,
+	-22516, -25857, -24727, -19321, -10575, 0, 10575, 19321, 24727, 25857,
+	22516, 15282, 5405, -5405, -15282, -22516, -25857, -24727, -19321, -10575,
+	0, 10575, 19321, 24727, 25857, 22516, 15282, 5405, -5405, -15282,
+	-22516, -25857, -24727, -19321, -10575, 0, 10575, 19321, 24727, 25857,
+	22516, 15282, 5405, -5405, -15282, -22516, -25857, -24727, -19321, -10575,
+	0, 10575, 19321, 24727, 25857, 22516, 15282, 5405, -5405, -15282,
+	-22516, -25857, -24727, -19321, -10575, 0, 10575, 19321, 24727, 25857,
+	22516, 15282, 5405, -5405, -15282, -22516, -25857, -24727, -19321, -10575},
+	{
+// Carrier 1 Phase 1
+	18384, 24273, 25964, 23166, 16362, 6729, -4067, -14160, -21805, -25679,
+	-25114, -20205, -11803, -1360, 9317, 18384, 24273, 25964, 23166, 16362,
+	6729, -4067, -14160, -21805, -25679, -25114, -20205, -11803, -1360, 9317,
+	18384, 24273, 25964, 23166, 16362, 6729, -4067, -14160, -21805, -25679,
+	-25114, -20205, -11803, -1360, 9317, 18384, 24273, 25964, 23166, 16362,
+	6729, -4067, -14160, -21805, -25679, -25114, -20205, -11803, -1360, 9317,
+	18384, 24273, 25964, 23166, 16362, 6729, -4067, -14160, -21805, -25679,
+	-25114, -20205, -11803, -1360, 9317, 18384, 24273, 25964, 23166, 16362,
+	6729, -4067, -14160, -21805, -25679, -25114, -20205, -11803, -1360, 9317,
+	18384, 24273, 25964, 23166, 16362, 6729, -4067, -14160, -21805, -25679,
+	-25114, -20205, -11803, -1360, 9317, 18384, 24273, 25964, 23166, 16362,
+	6729, -4067, -14160, -21805, -25679, -25114, -20205, -11803, -1360, 9317},
+	{
+// Carrier 1 Phase 2
+	26000, 23752, 17397, 8034, -2717, -12999, -21034, -25431, -25431, -21034,
+	-13000, -2717, 8034, 17397, 23752, 26000, 23752, 17397, 8034, -2717,
+	-13000, -21034, -25431, -25431, -21034, -12999, -2717, 8034, 17397, 23752,
+	26000, 23752, 17397, 8034, -2717, -13000, -21034, -25431, -25431, -21034,
+	-12999, -2717, 8034, 17397, 23752, 26000, 23752, 17397, 8034, -2717,
+	-13000, -21034, -25431, -25431, -21034, -12999, -2717, 8034, 17397, 23752,
+	26000, 23752, 17397, 8034, -2717, -13000, -21034, -25431, -25431, -21034,
+	-12999, -2717, 8034, 17397, 23752, 26000, 23752, 17397, 8034, -2717,
+	-13000, -21034, -25431, -25431, -21034, -12999, -2717, 8034, 17397, 23752,
+	26000, 23752, 17397, 8034, -2717, -13000, -21034, -25431, -25431, -21034,
+	-12999, -2717, 8034, 17397, 23752, 26000, 23752, 17397, 8034, -2717,
+	-13000, -21034, -25431, -25431, -21034, -12999, -2717, 8034, 17397, 23752},
+	{
+// Carrier 1 Phase 3
+	18384, 9317, -1360, -11803, -20205, -25114, -25679, -21805, -14160, -4067,
+	6729, 16362, 23166, 25964, 24273, 18384, 9317, -1360, -11803, -20205,
+	-25114, -25679, -21805, -14160, -4067, 6729, 16362, 23166, 25964, 24273,
+	18384, 9317, -1360, -11803, -20205, -25114, -25679, -21805, -14160, -4067,
+	6729, 16362, 23166, 25964, 24273, 18384, 9317, -1360, -11803, -20205,
+	-25114, -25679, -21805, -14160, -4067, 6729, 16362, 23166, 25964, 24273,
+	18384, 9317, -1360, -11803, -20205, -25114, -25679, -21805, -14160, -4067,
+	6729, 16362, 23166, 25964, 24273, 18384, 9317, -1360, -11803, -20205,
+	-25114, -25679, -21805, -14160, -4067, 6729, 16362, 23166, 25964, 24273,
+	18384, 9317, -1360, -11803, -20205, -25114, -25679, -21805, -14160, -4067,
+	6729, 16362, 23166, 25964, 24273, 18384, 9317, -1360, -11803, -20205,
+	-25114, -25679, -21805, -14160, -4067, 6729, 16362, 23166, 25964, 24273},
+	},
+
+	{{// Carrier 2 Phase 0
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999, -22516, -26000,
+	-22516, -13000, 0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000, 22516, 13000,
+	0, -12999, -22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000, 0, 12999,
+	22516, 26000, 22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999, -22516, -26000,
+	-22516, -13000, 0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000, 22516, 13000,
+	0, -12999, -22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000, 0, 12999,
+	22516, 26000, 22516, 13000, 0, -12999, -22516, -26000, -22516, -13000},
+	{
+// Carrier 2 Phase 1
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384,
+	-6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729,
+	-18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114,
+	25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384,
+	-6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729,
+	-18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114,
+	25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729},
+	{
+// Carrier 2 Phase 2
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516, -13000, 0,
+	12999, 22516, 26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0, -12999, -22516,
+	-26000, -22516, -13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516, 26000, 22516,
+	13000, 0, -12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516, -13000, 0,
+	12999, 22516, 26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0, -12999, -22516,
+	-26000, -22516, -13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516, 26000, 22516,
+	13000, 0, -12999, -22516, -26000, -22516, -13000, 0, 12999, 22516},
+	{
+// Carrier 2 Phase 3
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384,
+	25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114,
+	-18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729,
+	-6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384,
+	25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114, -25114,
+	-18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384, 6729,
+	-6729, -18384, -25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114},
+	},
+
+	{{// Carrier 3 Phase 0
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282,
+	0, 15282, 24727, 24727, 15282, 0, -15282, -24727, -24727, -15282},
+	{
+// Carrier 3 Phase 1
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067,
+	18384, 25679, 23166, 11803, -4067, -18384, -25679, -23166, -11803, 4067},
+	{
+// Carrier 3 Phase 2
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034,
+	26000, 21034, 8034, -8034, -21034, -26000, -21034, -8034, 8034, 21034},
+	{
+// Carrier 3 Phase 3
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679,
+	18384, 4067, -11803, -23166, -25679, -18384, -4067, 11803, 23166, 25679},
+	},
+
+	{{//Carrier 4 Phase 0
+	0, 17397, 25857, 21034, 5405, -12999, -24727, -23752, -10575, 8034,
+	22516, 25431, 15282, -2717, -19321, -26000, -19321, -2717, 15282, 25431,
+	22516, 8034, -10575, -23752, -24727, -12999, 5405, 21034, 25857, 17397,
+	0, -17397, -25857, -21034, -5405, 13000, 24727, 23752, 10575, -8034,
+	-22516, -25431, -15282, 2717, 19321, 26000, 19321, 2717, -15282, -25431,
+	-22516, -8034, 10575, 23752, 24727, 12999, -5405, -21034, -25857, -17397,
+	0, 17397, 25857, 21034, 5405, -13000, -24727, -23752, -10575, 8034,
+	22516, 25431, 15282, -2717, -19321, -26000, -19321, -2717, 15282, 25431,
+	22516, 8034, -10575, -23752, -24727, -12999, 5405, 21034, 25857, 17397,
+	0, -17397, -25857, -21034, -5405, 13000, 24727, 23752, 10575, -8034,
+	-22516, -25431, -15282, 2717, 19321, 26000, 19321, 2717, -15282, -25431,
+	-22516, -8034, 10575, 23752, 24727, 12999, -5405, -21034, -25857, -17397},
+	{
+// Carrier 4 Phase 1
+	18384, 25964, 20205, 4067, -14160, -25114, -23166, -9317, 9317, 23166,
+	25114, 14160, -4067, -20205, -25964, -18384, -1360, 16362, 25679, 21805,
+	6729, -11803, -24273, -24273, -11803, 6729, 21805, 25679, 16362, -1360,
+	-18384, -25964, -20205, -4067, 14160, 25114, 23166, 9317, -9317, -23166,
+	-25114, -14160, 4067, 20205, 25964, 18384, 1360, -16362, -25679, -21805,
+	-6729, 11803, 24273, 24273, 11803, -6729, -21805, -25679, -16362, 1360,
+	18384, 25964, 20205, 4067, -14160, -25114, -23166, -9317, 9317, 23166,
+	25114, 14160, -4067, -20205, -25964, -18384, -1360, 16362, 25679, 21805,
+	6729, -11803, -24273, -24273, -11803, 6729, 21805, 25679, 16362, -1360,
+	-18384, -25964, -20205, -4067, 14160, 25114, 23166, 9317, -9317, -23166,
+	-25114, -14160, 4067, 20205, 25964, 18384, 1360, -16362, -25679, -21805,
+	-6729, 11803, 24273, 24273, 11803, -6729, -21805, -25679, -16362, 1360},
+	{
+// Carrier 4 Phase 2
+	26000, 19321, 2717, -15282, -25431, -22516, -8034, 10575, 23752, 24727,
+	12999, -5405, -21034, -25857, -17397, 0, 17397, 25857, 21034, 5405,
+	-13000, -24727, -23752, -10575, 8034, 22516, 25431, 15282, -2717, -19321,
+	-26000, -19321, -2717, 15282, 25431, 22516, 8034, -10575, -23752, -24727,
+	-12999, 5405, 21034, 25857, 17397, 0, -17397, -25857, -21034, -5405,
+	13000, 24727, 23752, 10575, -8034, -22516, -25431, -15282, 2717, 19321,
+	26000, 19321, 2717, -15282, -25431, -22516, -8034, 10575, 23752, 24727,
+	12999, -5405, -21034, -25857, -17397, 0, 17397, 25857, 21034, 5405,
+	-13000, -24727, -23752, -10575, 8034, 22516, 25431, 15282, -2717, -19321,
+	-26000, -19321, -2717, 15282, 25431, 22516, 8034, -10575, -23752, -24727,
+	-12999, 5405, 21034, 25857, 17397, 0, -17397, -25857, -21034, -5405,
+	13000, 24727, 23752, 10575, -8034, -22516, -25431, -15282, 2717, 19321},
+	{
+// Carrier 4 Phase 3
+	18384, 1360, -16362, -25679, -21805, -6729, 11803, 24273, 24273, 11803,
+	-6729, -21805, -25679, -16362, 1360, 18384, 25964, 20205, 4067, -14160,
+	-25114, -23166, -9317, 9317, 23166, 25114, 14160, -4067, -20205, -25964,
+	-18384, -1360, 16362, 25679, 21805, 6729, -11803, -24273, -24273, -11803,
+	6729, 21805, 25679, 16362, -1360, -18384, -25964, -20205, -4067, 14160,
+	25114, 23166, 9317, -9317, -23166, -25114, -14160, 4067, 20205, 25964,
+	18384, 1360, -16362, -25679, -21805, -6729, 11803, 24273, 24273, 11803,
+	-6729, -21805, -25679, -16362, 1360, 18384, 25964, 20205, 4067, -14160,
+	-25114, -23166, -9317, 9317, 23166, 25114, 14160, -4067, -20205, -25964,
+	-18384, -1360, 16362, 25679, 21805, 6729, -11803, -24273, -24273, -11803,
+	6729, 21805, 25679, 16362, -1360, -18384, -25964, -20205, -4067, 14160,
+	25114, 23166, 9317, -9317, -23166, -25114, -14160, 4067, 20205, 25964},
+	},
+
+	{{// Carrier 5 Phase 0
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384},
+	{
+// Carrier 5 Phase 1
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0},
+	{
+// Carrier 5 Phase 2
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384,
+	0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384,
+	-26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384},
+	{
+// Carrier 5 Phase 3
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000, 18384, 0,
+	-18384, -26000, -18384, 0, 18384, 26000, 18384, 0, -18384, -26000,
+	-18384, 0, 18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0, 18384, 26000},
+	},
+
+	{{//Carrier 6 Phase 0
+	0, 19321, 25857, 15282, -5405, -22516, -24727, -10575, 10575, 24727,
+	22516, 5405, -15282, -25857, -19321, 0, 19321, 25857, 15282, -5405,
+	-22516, -24727, -10575, 10575, 24727, 22516, 5405, -15282, -25857, -19321,
+	0, 19321, 25857, 15282, -5405, -22516, -24727, -10575, 10575, 24727,
+	22516, 5405, -15282, -25857, -19321, 0, 19321, 25857, 15282, -5405,
+	-22516, -24727, -10575, 10575, 24727, 22516, 5405, -15282, -25857, -19321,
+	0, 19321, 25857, 15282, -5405, -22516, -24727, -10575, 10575, 24727,
+	22516, 5405, -15282, -25857, -19321, 0, 19321, 25857, 15282, -5405,
+	-22516, -24727, -10575, 10575, 24727, 22516, 5405, -15282, -25857, -19321,
+	0, 19321, 25857, 15282, -5405, -22516, -24727, -10575, 10575, 24727,
+	22516, 5405, -15282, -25857, -19321, 0, 19321, 25857, 15282, -5405,
+	-22516, -24727, -10575, 10575, 24727, 22516, 5405, -15282, -25857, -19321},
+	{
+// Carrier 6 Phase 1
+	18384, 25964, 16362, -4067, -21805, -25114, -11803, 9317, 24273, 23166,
+	6729, -14160, -25679, -20205, -1360, 18384, 25964, 16362, -4067, -21805,
+	-25114, -11803, 9317, 24273, 23166, 6729, -14160, -25679, -20205, -1360,
+	18384, 25964, 16362, -4067, -21805, -25114, -11803, 9317, 24273, 23166,
+	6729, -14160, -25679, -20205, -1360, 18384, 25964, 16362, -4067, -21805,
+	-25114, -11803, 9317, 24273, 23166, 6729, -14160, -25679, -20205, -1360,
+	18384, 25964, 16362, -4067, -21805, -25114, -11803, 9317, 24273, 23166,
+	6729, -14160, -25679, -20205, -1360, 18384, 25964, 16362, -4067, -21805,
+	-25114, -11803, 9317, 24273, 23166, 6729, -14160, -25679, -20205, -1360,
+	18384, 25964, 16362, -4067, -21805, -25114, -11803, 9317, 24273, 23166,
+	6729, -14160, -25679, -20205, -1360, 18384, 25964, 16362, -4067, -21805,
+	-25114, -11803, 9317, 24273, 23166, 6729, -14160, -25679, -20205, -1360},
+	{
+// Carrier 6 Phase 2
+	26000, 17397, -2717, -21034, -25431, -13000, 8034, 23752, 23752, 8034,
+	-13000, -25431, -21034, -2717, 17397, 26000, 17397, -2717, -21034, -25431,
+	-12999, 8034, 23752, 23752, 8034, -13000, -25431, -21034, -2717, 17397,
+	26000, 17397, -2717, -21034, -25431, -12999, 8034, 23752, 23752, 8034,
+	-13000, -25431, -21034, -2717, 17397, 26000, 17397, -2717, -21034, -25431,
+	-12999, 8034, 23752, 23752, 8034, -13000, -25431, -21034, -2717, 17397,
+	26000, 17397, -2717, -21034, -25431, -12999, 8034, 23752, 23752, 8034,
+	-13000, -25431, -21034, -2717, 17397, 26000, 17397, -2717, -21034, -25431,
+	-12999, 8034, 23752, 23752, 8034, -13000, -25431, -21034, -2717, 17397,
+	26000, 17397, -2717, -21034, -25431, -12999, 8034, 23752, 23752, 8034,
+	-13000, -25431, -21034, -2717, 17397, 26000, 17397, -2717, -21034, -25431,
+	-12999, 8034, 23752, 23752, 8034, -13000, -25431, -21034, -2717, 17397},
+	{
+// Carrier 6 Phase 3
+	18384, -1360, -20205, -25679, -14160, 6729, 23166, 24273, 9317, -11803,
+	-25114, -21805, -4067, 16362, 25964, 18384, -1360, -20205, -25679, -14160,
+	6729, 23166, 24273, 9317, -11803, -25114, -21805, -4067, 16362, 25964,
+	18384, -1360, -20205, -25679, -14160, 6729, 23166, 24273, 9317, -11803,
+	-25114, -21805, -4067, 16362, 25964, 18384, -1360, -20205, -25679, -14160,
+	6729, 23166, 24273, 9317, -11803, -25114, -21805, -4067, 16362, 25964,
+	18384, -1360, -20205, -25679, -14160, 6729, 23166, 24273, 9317, -11803,
+	-25114, -21805, -4067, 16362, 25964, 18384, -1360, -20205, -25679, -14160,
+	6729, 23166, 24273, 9317, -11803, -25114, -21805, -4067, 16362, 25964,
+	18384, -1360, -20205, -25679, -14160, 6729, 23166, 24273, 9317, -11803,
+	-25114, -21805, -4067, 16362, 25964, 18384, -1360, -20205, -25679, -14160,
+	6729, 23166, 24273, 9317, -11803, -25114, -21805, -4067, 16362, 25964},
+	},
+
+	{{// Carrier 7 Phase 0
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034,
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034,
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034,
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034,
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034,
+	0, 21034, 24727, 8034, -15282, -26000, -15282, 8034, 24727, 21034,
+	0, -21034, -24727, -8034, 15282, 26000, 15282, -8034, -24727, -21034},
+	{
+// Carrier 7 Phase 1
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067,
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067,
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067,
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067,
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067,
+	18384, 25679, 11803, -11803, -25679, -18384, 4067, 23166, 23166, 4067,
+	-18384, -25679, -11803, 11803, 25679, 18384, -4067, -23166, -23166, -4067},
+	{
+// Carrier 7 Phase 2
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282,
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282,
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282,
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282,
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282,
+	26000, 15282, -8034, -24727, -21034, 0, 21034, 24727, 8034, -15282,
+	-26000, -15282, 8034, 24727, 21034, 0, -21034, -24727, -8034, 15282},
+	{
+// Carrier 7 Phase 3
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679,
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679,
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679,
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679,
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679,
+	18384, -4067, -23166, -23166, -4067, 18384, 25679, 11803, -11803, -25679,
+	-18384, 4067, 23166, 23166, 4067, -18384, -25679, -11803, 11803, 25679},
+	},
+
+	{{// Carrier 8 Phase 0
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0, -22516, -22516},
+	{
+// Carrier 8 Phase 1
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729},
+	{
+// Carrier 8 Phase 2
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999},
+	{
+// Carrier 8 Phase 3
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114},
+	},
+
+	{{// Carrier 9 Phase 0
+	0, 23752, 19321, -8034, -25857, -13000, 15282, 25431, 5405, -21034,
+	-22516, 2717, 24727, 17397, -10575, -26000, -10575, 17397, 24727, 2717,
+	-22516, -21034, 5405, 25431, 15282, -13000, -25857, -8034, 19321, 23752,
+	0, -23752, -19321, 8034, 25857, 12999, -15282, -25431, -5405, 21034,
+	22516, -2717, -24727, -17397, 10575, 26000, 10575, -17397, -24727, -2717,
+	22516, 21034, -5405, -25431, -15282, 13000, 25857, 8034, -19321, -23752,
+	0, 23752, 19321, -8034, -25857, -12999, 15282, 25431, 5405, -21034,
+	-22516, 2717, 24727, 17397, -10575, -26000, -10575, 17397, 24727, 2717,
+	-22516, -21034, 5405, 25431, 15282, -13000, -25857, -8034, 19321, 23752,
+	0, -23752, -19321, 8034, 25857, 12999, -15282, -25431, -5405, 21034,
+	22516, -2717, -24727, -17397, 10575, 26000, 10575, -17397, -24727, -2717,
+	22516, 21034, -5405, -25431, -15282, 13000, 25857, 8034, -19321, -23752},
+	{
+// Carrier 9 Phase 1
+	18384, 24273, 1360, -23166, -20205, 6729, 25679, 14160, -14160, -25679,
+	-6729, 20205, 23166, -1360, -24273, -18384, 9317, 25964, 11803, -16362,
+	-25114, -4067, 21805, 21805, -4067, -25114, -16362, 11803, 25964, 9317,
+	-18384, -24273, -1360, 23166, 20205, -6729, -25679, -14160, 14160, 25679,
+	6729, -20205, -23166, 1360, 24273, 18384, -9317, -25964, -11803, 16362,
+	25114, 4067, -21805, -21805, 4067, 25114, 16362, -11803, -25964, -9317,
+	18384, 24273, 1360, -23166, -20205, 6729, 25679, 14160, -14160, -25679,
+	-6729, 20205, 23166, -1360, -24273, -18384, 9317, 25964, 11803, -16362,
+	-25114, -4067, 21805, 21805, -4067, -25114, -16362, 11803, 25964, 9317,
+	-18384, -24273, -1360, 23166, 20205, -6729, -25679, -14160, 14160, 25679,
+	6729, -20205, -23166, 1360, 24273, 18384, -9317, -25964, -11803, 16362,
+	25114, 4067, -21805, -21805, 4067, 25114, 16362, -11803, -25964, -9317},
+	{
+// Carrier 9 Phase 2
+	26000, 10575, -17397, -24727, -2717, 22516, 21034, -5405, -25431, -15282,
+	12999, 25857, 8034, -19321, -23752, 0, 23752, 19321, -8034, -25857,
+	-13000, 15282, 25431, 5405, -21034, -22516, 2717, 24727, 17397, -10575,
+	-26000, -10575, 17397, 24727, 2717, -22516, -21034, 5405, 25431, 15282,
+	-13000, -25857, -8034, 19321, 23752, 0, -23752, -19321, 8034, 25857,
+	12999, -15282, -25431, -5405, 21034, 22516, -2717, -24727, -17397, 10575,
+	26000, 10575, -17397, -24727, -2717, 22516, 21034, -5405, -25431, -15282,
+	13000, 25857, 8034, -19321, -23752, 0, 23752, 19321, -8034, -25857,
+	-12999, 15282, 25431, 5405, -21034, -22516, 2717, 24727, 17397, -10575,
+	-26000, -10575, 17397, 24727, 2717, -22516, -21034, 5405, 25431, 15282,
+	-13000, -25857, -8034, 19321, 23752, 0, -23752, -19321, 8034, 25857,
+	12999, -15282, -25431, -5405, 21034, 22516, -2717, -24727, -17397, 10575},
+	{
+// Carrier 9 Phase 3
+	18384, -9317, -25964, -11803, 16362, 25114, 4067, -21805, -21805, 4067,
+	25114, 16362, -11803, -25964, -9317, 18384, 24273, 1360, -23166, -20205,
+	6729, 25679, 14160, -14160, -25679, -6729, 20205, 23166, -1360, -24273,
+	-18384, 9317, 25964, 11803, -16362, -25114, -4067, 21805, 21805, -4067,
+	-25114, -16362, 11803, 25964, 9317, -18384, -24273, -1360, 23166, 20205,
+	-6729, -25679, -14160, 14160, 25679, 6729, -20205, -23166, 1360, 24273,
+	18384, -9317, -25964, -11803, 16362, 25114, 4067, -21805, -21805, 4067,
+	25114, 16362, -11803, -25964, -9317, 18384, 24273, 1360, -23166, -20205,
+	6729, 25679, 14160, -14160, -25679, -6729, 20205, 23166, -1360, -24273,
+	-18384, 9317, 25964, 11803, -16362, -25114, -4067, 21805, 21805, -4067,
+	-25114, -16362, 11803, 25964, 9317, -18384, -24273, -1360, 23166, 20205,
+	-6729, -25679, -14160, 14160, 25679, 6729, -20205, -23166, 1360, 24273},
+	},
+
+	{{// Carrier 10 Phase 0
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727,
+	0, 24727, 15282, -15282, -24727, 0, 24727, 15282, -15282, -24727},
+	{
+// Carrier 10 Phase 1
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803,
+	18384, 23166, -4067, -25679, -11803, 18384, 23166, -4067, -25679, -11803},
+	{
+// Carrier 10 Phase 2
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034,
+	26000, 8034, -21034, -21034, 8034, 26000, 8034, -21034, -21034, 8034},
+	{
+// Carrier 10 Phase 3
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11803, -25679, -4067, 23166,
+	18384, -11803, -25679, -4067, 23166, 18384, -11804, -25679, -4067, 23166}
+	}};
+
+
+CONST short intOFDMTemplate[MAXCAR][8][216] = 
+{{{
+
+// Carrier 0 Phase 0
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24432,
+	25605, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24432, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24432, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514,
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24431,
+	25604, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24431, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24431, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514,
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24431,
+	25604, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24431, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24431, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514},
+	{
+// Carrier 0 Phase 1
+	9949, 13969, 17565, 20627, 23062, 24796, 25777, 25975,
+	25383, 24020, 21928, 19169, 15827, 12005, 7818, 3393,
+	-1134, -5627, -9949, -13969, -17565, -20627, -23062, -24796,
+	-25777, -25975, -25383, -24020, -21928, -19169, -15827, -12005,
+	-7818, -3393, 1134, 5627, 9949, 13969, 17565, 20627,
+	23062, 24796, 25777, 25975, 25383, 24020, 21928, 19169,
+	15827, 12005, 7818, 3393, -1134, -5627, -9949, -13969,
+	-17565, -20627, -23062, -24796, -25777, -25975, -25383, -24020,
+	-21928, -19169, -15827, -12005, -7818, -3393, 1134, 5627,
+	9949, 13969, 17565, 20627, 23062, 24796, 25777, 25975,
+	25383, 24020, 21928, 19169, 15827, 12005, 7818, 3393,
+	-1134, -5627, -9949, -13969, -17565, -20627, -23062, -24796,
+	-25777, -25975, -25383, -24020, -21928, -19169, -15827, -12005,
+	-7818, -3393, 1134, 5627, 9949, 13969, 17565, 20627,
+	23062, 24796, 25777, 25975, 25383, 24020, 21928, 19169,
+	15827, 12005, 7818, 3393, -1134, -5627, -9949, -13969,
+	-17565, -20627, -23062, -24796, -25777, -25975, -25383, -24020,
+	-21928, -19169, -15827, -12005, -7818, -3393, 1134, 5627,
+	9949, 13969, 17565, 20627, 23062, 24796, 25777, 25975,
+	25383, 24020, 21928, 19169, 15827, 12005, 7818, 3393,
+	-1134, -5627, -9949, -13969, -17565, -20627, -23062, -24796,
+	-25777, -25975, -25383, -24020, -21928, -19169, -15827, -12005,
+	-7818, -3393, 1134, 5627, 9949, 13969, 17565, 20627,
+	23062, 24796, 25777, 25975, 25383, 24020, 21928, 19169,
+	15827, 12005, 7818, 3393, -1134, -5627, -9949, -13969,
+	-17565, -20627, -23062, -24796, -25777, -25975, -25383, -24020,
+	-21928, -19169, -15827, -12005, -7818, -3393, 1134, 5627},
+	{
+// Carrier 0 Phase 2
+	18384, 21297, 23564, 25114, 25901, 25901, 25114, 23564,
+	21297, 18384, 14912, 10988, 6729, 2266, -2266, -6729,
+	-10988, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21297, -18384, -14913, -10988, -6729, -2266,
+	2266, 6729, 10988, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21297, 18384, 14913, 10988,
+	6729, 2266, -2266, -6729, -10988, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21297, -18384,
+	-14913, -10988, -6729, -2266, 2266, 6729, 10988, 14912,
+	18384, 21297, 23563, 25114, 25901, 25901, 25114, 23564,
+	21297, 18384, 14913, 10988, 6729, 2266, -2265, -6729,
+	-10988, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21297, -18384, -14913, -10988, -6729, -2266,
+	2265, 6729, 10988, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21297, 18384, 14913, 10988,
+	6729, 2266, -2265, -6729, -10988, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21298, -18384,
+	-14913, -10988, -6729, -2266, 2265, 6729, 10987, 14912,
+	18384, 21297, 23563, 25114, 25901, 25901, 25114, 23564,
+	21298, 18384, 14913, 10988, 6729, 2266, -2265, -6729,
+	-10987, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21298, -18384, -14913, -10988, -6729, -2266,
+	2265, 6729, 10987, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21298, 18384, 14913, 10988,
+	6729, 2266, -2265, -6729, -10987, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21298, -18384,
+	-14913, -10988, -6729, -2266, 2265, 6729, 10987, 14912},
+	{
+// Carrier 0 Phase 3
+	24020, 25383, 25975, 25777, 24796, 23062, 20627, 17565,
+	13969, 9949, 5627, 1134, -3393, -7818, -12005, -15827,
+	-19169, -21928, -24020, -25383, -25975, -25777, -24796, -23062,
+	-20627, -17565, -13969, -9949, -5627, -1134, 3393, 7818,
+	12005, 15827, 19169, 21928, 24020, 25383, 25975, 25777,
+	24796, 23062, 20627, 17565, 13969, 9949, 5627, 1134,
+	-3393, -7818, -12005, -15827, -19169, -21928, -24020, -25383,
+	-25975, -25777, -24796, -23062, -20627, -17565, -13969, -9949,
+	-5627, -1134, 3393, 7818, 12005, 15827, 19169, 21928,
+	24020, 25383, 25975, 25777, 24796, 23062, 20627, 17565,
+	13969, 9949, 5627, 1134, -3393, -7818, -12005, -15827,
+	-19169, -21928, -24020, -25383, -25975, -25777, -24796, -23062,
+	-20627, -17565, -13969, -9949, -5627, -1134, 3393, 7818,
+	12005, 15827, 19169, 21928, 24020, 25383, 25975, 25777,
+	24796, 23062, 20627, 17565, 13969, 9949, 5627, 1134,
+	-3393, -7818, -12005, -15827, -19169, -21928, -24020, -25383,
+	-25975, -25777, -24796, -23062, -20627, -17565, -13969, -9949,
+	-5627, -1134, 3393, 7818, 12005, 15827, 19169, 21928,
+	24020, 25383, 25975, 25777, 24796, 23062, 20627, 17565,
+	13969, 9949, 5627, 1134, -3393, -7818, -12005, -15827,
+	-19169, -21928, -24020, -25383, -25975, -25777, -24796, -23062,
+	-20627, -17565, -13969, -9949, -5627, -1134, 3393, 7818,
+	12005, 15827, 19169, 21928, 24020, 25383, 25975, 25777,
+	24796, 23062, 20627, 17565, 13969, 9949, 5627, 1134,
+	-3393, -7818, -12005, -15827, -19169, -21928, -24020, -25383,
+	-25975, -25777, -24796, -23062, -20627, -17565, -13969, -9949,
+	-5627, -1134, 3393, 7818, 12005, 15827, 19169, 21928},
+	{
+// Carrier 0 Phase 4
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24432, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24432, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604,
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24431, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24431, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604,
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24431, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24431, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604},
+	{
+// Carrier 0 Phase 5
+	24020, 21928, 19169, 15827, 12005, 7818, 3393, -1134,
+	-5627, -9949, -13969, -17565, -20627, -23062, -24796, -25777,
+	-25975, -25383, -24020, -21928, -19169, -15827, -12005, -7818,
+	-3393, 1134, 5627, 9949, 13969, 17565, 20627, 23062,
+	24796, 25777, 25975, 25383, 24020, 21928, 19169, 15827,
+	12005, 7818, 3393, -1134, -5627, -9949, -13969, -17565,
+	-20627, -23062, -24796, -25777, -25975, -25383, -24020, -21928,
+	-19169, -15827, -12005, -7818, -3393, 1134, 5627, 9949,
+	13969, 17565, 20627, 23062, 24796, 25777, 25975, 25383,
+	24020, 21928, 19169, 15827, 12005, 7818, 3393, -1134,
+	-5627, -9949, -13969, -17565, -20627, -23062, -24796, -25777,
+	-25975, -25383, -24020, -21928, -19169, -15827, -12005, -7818,
+	-3393, 1134, 5627, 9949, 13969, 17565, 20627, 23062,
+	24796, 25777, 25975, 25383, 24020, 21928, 19169, 15827,
+	12005, 7818, 3393, -1134, -5627, -9949, -13969, -17565,
+	-20627, -23062, -24796, -25777, -25975, -25383, -24020, -21928,
+	-19169, -15827, -12005, -7818, -3393, 1134, 5627, 9949,
+	13969, 17565, 20627, 23062, 24796, 25777, 25975, 25383,
+	24020, 21928, 19169, 15827, 12005, 7818, 3393, -1134,
+	-5627, -9949, -13969, -17565, -20627, -23062, -24796, -25777,
+	-25975, -25383, -24020, -21928, -19169, -15827, -12005, -7818,
+	-3393, 1134, 5627, 9949, 13969, 17565, 20627, 23062,
+	24796, 25777, 25975, 25383, 24020, 21928, 19169, 15827,
+	12005, 7818, 3393, -1134, -5627, -9949, -13969, -17565,
+	-20627, -23062, -24796, -25777, -25975, -25383, -24020, -21928,
+	-19169, -15827, -12005, -7818, -3393, 1134, 5627, 9949,
+	13969, 17565, 20627, 23062, 24796, 25777, 25975, 25383},
+	{
+// Carrier 0 Phase 6
+	18384, 14912, 10988, 6729, 2266, -2266, -6729, -10988,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21297, -18384, -14913, -10988, -6729, -2266, 2266,
+	6729, 10988, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21297, 18384, 14913, 10988, 6729,
+	2266, -2266, -6729, -10988, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21297, -18384, -14913,
+	-10988, -6729, -2266, 2266, 6729, 10988, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21297,
+	18384, 14913, 10988, 6729, 2266, -2265, -6729, -10988,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21297, -18384, -14913, -10988, -6729, -2266, 2265,
+	6729, 10988, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21297, 18384, 14913, 10988, 6729,
+	2266, -2265, -6729, -10988, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21298, -18384, -14913,
+	-10988, -6729, -2266, 2265, 6729, 10987, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21298,
+	18384, 14913, 10988, 6729, 2266, -2265, -6729, -10987,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21298, -18384, -14913, -10988, -6729, -2266, 2265,
+	6729, 10987, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21298, 18384, 14913, 10988, 6729,
+	2266, -2265, -6729, -10987, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21298, -18384, -14913,
+	-10988, -6729, -2266, 2265, 6729, 10987, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21298},
+	{
+// Carrier 0 Phase 7
+	9949, 5627, 1134, -3393, -7818, -12005, -15827, -19169,
+	-21928, -24020, -25383, -25975, -25777, -24796, -23062, -20627,
+	-17565, -13969, -9949, -5627, -1134, 3393, 7818, 12005,
+	15827, 19169, 21928, 24020, 25383, 25975, 25777, 24796,
+	23062, 20627, 17565, 13969, 9949, 5627, 1134, -3393,
+	-7818, -12005, -15827, -19169, -21928, -24020, -25383, -25975,
+	-25777, -24796, -23062, -20627, -17565, -13969, -9949, -5627,
+	-1134, 3393, 7818, 12005, 15827, 19169, 21928, 24020,
+	25383, 25975, 25777, 24796, 23062, 20627, 17565, 13969,
+	9949, 5627, 1134, -3393, -7818, -12005, -15827, -19169,
+	-21928, -24020, -25383, -25975, -25777, -24796, -23062, -20627,
+	-17565, -13969, -9949, -5627, -1134, 3393, 7818, 12005,
+	15827, 19169, 21928, 24020, 25383, 25975, 25777, 24796,
+	23062, 20627, 17565, 13969, 9949, 5627, 1134, -3393,
+	-7818, -12005, -15827, -19169, -21928, -24020, -25383, -25975,
+	-25777, -24796, -23062, -20627, -17565, -13969, -9949, -5627,
+	-1134, 3393, 7818, 12005, 15827, 19169, 21928, 24020,
+	25383, 25975, 25777, 24796, 23062, 20627, 17565, 13969,
+	9949, 5627, 1134, -3393, -7818, -12005, -15827, -19169,
+	-21928, -24020, -25383, -25975, -25777, -24796, -23062, -20627,
+	-17565, -13969, -9949, -5627, -1134, 3393, 7818, 12005,
+	15827, 19169, 21928, 24020, 25383, 25975, 25777, 24796,
+	23062, 20627, 17565, 13969, 9949, 5627, 1134, -3393,
+	-7818, -12005, -15827, -19169, -21928, -24020, -25383, -25975,
+	-25777, -24796, -23062, -20627, -17565, -13969, -9949, -5627,
+	-1134, 3393, 7818, 12005, 15827, 19169, 21928, 24020,
+	25383, 25975, 25777, 24796, 23062, 20627, 17565, 13969},
+	},{{
+
+// Carrier 1 Phase 0
+	0, 5257, 10298, 14912, 18911, 22129, 24432, 25725,
+	25956, 25114, 23234, 20394, 16712, 12339, 7456, 2266,
+	-3018, -8178, -12999, -17284, -20855, -23563, -25299, -25989,
+	-25605, -24163, -21722, -18384, -14287, -9599, -4514, 756,
+	5996, 10988, 15526, 19422, 22516, 24680, 25824, 25901,
+	24907, 22885, 19917, 16126, 11668, 6729, 1511, -3768,
+	-8892, -13649, -17842, -21297, -23873, -25462, -26000, -25462,
+	-23873, -21297, -17842, -13649, -8892, -3768, 1511, 6729,
+	11668, 16126, 19917, 22885, 24907, 25901, 25824, 24680,
+	22516, 19422, 15526, 10988, 5996, 756, -4514, -9599,
+	-14287, -18384, -21722, -24163, -25604, -25989, -25299, -23564,
+	-20855, -17284, -13000, -8178, -3018, 2266, 7456, 12339,
+	16712, 20394, 23234, 25114, 25956, 25725, 24432, 22129,
+	18911, 14912, 10298, 5257, 0, -5257, -10298, -14912,
+	-18911, -22129, -24432, -25725, -25956, -25114, -23234, -20394,
+	-16712, -12339, -7456, -2266, 3018, 8178, 13000, 17284,
+	20855, 23564, 25299, 25989, 25604, 24163, 21722, 18384,
+	14287, 9599, 4514, -756, -5996, -10988, -15526, -19422,
+	-22516, -24680, -25824, -25901, -24907, -22885, -19917, -16126,
+	-11668, -6729, -1511, 3768, 8892, 13649, 17842, 21297,
+	23873, 25462, 26000, 25462, 23873, 21297, 17842, 13649,
+	8892, 3768, -1511, -6729, -11668, -16126, -19917, -22885,
+	-24907, -25901, -25824, -24680, -22516, -19422, -15526, -10988,
+	-5995, -756, 4514, 9599, 14287, 18384, 21722, 24163,
+	25605, 25989, 25299, 23563, 20855, 17284, 12999, 8178,
+	3018, -2266, -7456, -12339, -16712, -20394, -23234, -25114,
+	-25956, -25725, -24432, -22129, -18911, -14912, -10298, -5257},
+	{
+// Carrier 1 Phase 1
+	9949, 14601, 18650, 21928, 24300, 25667, 25975, 25209,
+	23401, 20627, 17000, 12671, 7818, 2642, -2642, -7818,
+	-12671, -17000, -20627, -23401, -25209, -25975, -25667, -24300,
+	-21928, -18650, -14601, -9949, -4886, 378, 5627, 10644,
+	15221, 19169, 22325, 24558, 25777, 25931, 25013, 23062,
+	20158, 16421, 12005, 7093, 1889, -3393, -8536, -13326,
+	-17565, -21078, -23721, -25383, -25997, -25536, -24020, -21512,
+	-18115, -13969, -9246, -4141, 1134, 6363, 11329, 15827,
+	19671, 22703, 24796, 25865, 25865, 24796, 22703, 19671,
+	15827, 11329, 6363, 1134, -4141, -9246, -13969, -18115,
+	-21512, -24020, -25536, -25997, -25383, -23721, -21078, -17565,
+	-13326, -8536, -3393, 1889, 7093, 12005, 16421, 20158,
+	23062, 25013, 25931, 25777, 24558, 22325, 19169, 15221,
+	10644, 5627, 378, -4886, -9949, -14601, -18650, -21928,
+	-24300, -25667, -25975, -25209, -23401, -20627, -17000, -12671,
+	-7818, -2642, 2642, 7818, 12671, 17000, 20627, 23401,
+	25209, 25975, 25667, 24300, 21928, 18650, 14601, 9949,
+	4886, -378, -5627, -10644, -15221, -19169, -22325, -24558,
+	-25777, -25931, -25013, -23062, -20158, -16421, -12005, -7093,
+	-1889, 3393, 8536, 13326, 17565, 21078, 23721, 25383,
+	25997, 25536, 24020, 21512, 18115, 13969, 9246, 4141,
+	-1134, -6363, -11329, -15827, -19671, -22703, -24796, -25865,
+	-25865, -24796, -22703, -19671, -15827, -11329, -6363, -1134,
+	4142, 9246, 13969, 18115, 21512, 24020, 25536, 25997,
+	25383, 23721, 21078, 17565, 13326, 8536, 3393, -1889,
+	-7093, -12005, -16421, -20158, -23062, -25013, -25931, -25777,
+	-24558, -22325, -19169, -15221, -10644, -5627, -378, 4886},
+	{
+// Carrier 1 Phase 2
+	18384, 21722, 24163, 25605, 25989, 25299, 23564, 20855,
+	17284, 13000, 8178, 3018, -2266, -7456, -12339, -16712,
+	-20394, -23234, -25114, -25956, -25725, -24432, -22129, -18911,
+	-14912, -10298, -5257, 0, 5257, 10298, 14912, 18911,
+	22129, 24432, 25725, 25956, 25114, 23234, 20394, 16712,
+	12339, 7456, 2266, -3018, -8178, -12999, -17284, -20855,
+	-23563, -25299, -25989, -25605, -24163, -21722, -18384, -14287,
+	-9599, -4514, 756, 5996, 10988, 15526, 19422, 22516,
+	24680, 25824, 25901, 24907, 22885, 19917, 16126, 11668,
+	6729, 1511, -3768, -8892, -13649, -17842, -21297, -23873,
+	-25462, -26000, -25462, -23873, -21297, -17842, -13649, -8892,
+	-3768, 1511, 6729, 11668, 16126, 19917, 22885, 24907,
+	25901, 25824, 24680, 22516, 19422, 15526, 10988, 5996,
+	756, -4514, -9599, -14287, -18384, -21722, -24163, -25604,
+	-25989, -25299, -23564, -20855, -17284, -12999, -8178, -3018,
+	2266, 7456, 12339, 16712, 20394, 23234, 25114, 25956,
+	25725, 24432, 22129, 18911, 14912, 10298, 5257, 0,
+	-5257, -10298, -14912, -18911, -22129, -24432, -25725, -25956,
+	-25114, -23234, -20394, -16712, -12339, -7456, -2266, 3018,
+	8178, 13000, 17284, 20855, 23564, 25299, 25989, 25604,
+	24163, 21722, 18384, 14287, 9599, 4514, -756, -5996,
+	-10988, -15526, -19422, -22516, -24680, -25824, -25901, -24907,
+	-22885, -19917, -16126, -11668, -6729, -1511, 3768, 8892,
+	13649, 17842, 21297, 23873, 25462, 26000, 25462, 23873,
+	21297, 17842, 13649, 8892, 3768, -1511, -6729, -11668,
+	-16126, -19917, -22885, -24907, -25901, -25824, -24680, -22516,
+	-19422, -15526, -10988, -5995, -756, 4514, 9599, 14287},
+	{
+// Carrier 1 Phase 3
+	24020, 25536, 25997, 25383, 23721, 21078, 17565, 13326,
+	8536, 3393, -1889, -7093, -12005, -16421, -20158, -23062,
+	-25013, -25931, -25777, -24558, -22325, -19169, -15221, -10644,
+	-5627, -378, 4886, 9949, 14601, 18650, 21928, 24300,
+	25667, 25975, 25209, 23401, 20627, 17000, 12671, 7818,
+	2642, -2642, -7818, -12671, -17000, -20627, -23401, -25209,
+	-25975, -25667, -24300, -21928, -18650, -14601, -9949, -4886,
+	378, 5627, 10644, 15221, 19169, 22325, 24558, 25777,
+	25931, 25013, 23062, 20158, 16421, 12005, 7093, 1889,
+	-3393, -8536, -13326, -17565, -21078, -23721, -25383, -25997,
+	-25536, -24020, -21512, -18115, -13969, -9246, -4141, 1134,
+	6363, 11329, 15827, 19672, 22703, 24796, 25865, 25865,
+	24796, 22703, 19671, 15827, 11329, 6363, 1134, -4141,
+	-9246, -13969, -18115, -21512, -24020, -25536, -25997, -25383,
+	-23721, -21078, -17565, -13326, -8536, -3393, 1889, 7093,
+	12005, 16421, 20158, 23062, 25013, 25931, 25777, 24558,
+	22325, 19169, 15221, 10644, 5627, 378, -4886, -9949,
+	-14601, -18650, -21928, -24300, -25667, -25975, -25209, -23401,
+	-20627, -17000, -12671, -7818, -2642, 2642, 7818, 12671,
+	17000, 20627, 23401, 25209, 25975, 25667, 24300, 21928,
+	18650, 14601, 9949, 4886, -378, -5627, -10644, -15221,
+	-19169, -22325, -24558, -25777, -25931, -25013, -23062, -20158,
+	-16421, -12005, -7093, -1889, 3393, 8536, 13326, 17565,
+	21078, 23721, 25383, 25997, 25536, 24020, 21512, 18115,
+	13969, 9246, 4141, -1134, -6363, -11329, -15827, -19671,
+	-22703, -24796, -25865, -25865, -24796, -22703, -19671, -15827,
+	-11329, -6363, -1134, 4142, 9246, 13969, 18115, 21512},
+	{
+// Carrier 1 Phase 4
+	26000, 25462, 23873, 21297, 17842, 13649, 8892, 3768,
+	-1511, -6729, -11668, -16126, -19917, -22885, -24907, -25901,
+	-25824, -24680, -22516, -19422, -15526, -10988, -5996, -756,
+	4514, 9599, 14287, 18384, 21722, 24163, 25605, 25989,
+	25299, 23563, 20855, 17284, 13000, 8178, 3018, -2266,
+	-7456, -12339, -16712, -20394, -23234, -25114, -25956, -25725,
+	-24432, -22129, -18911, -14912, -10298, -5257, 0, 5257,
+	10298, 14913, 18911, 22129, 24432, 25725, 25956, 25114,
+	23234, 20394, 16712, 12339, 7456, 2266, -3018, -8178,
+	-12999, -17284, -20855, -23563, -25299, -25989, -25605, -24163,
+	-21722, -18384, -14287, -9599, -4514, 756, 5996, 10988,
+	15526, 19422, 22516, 24680, 25824, 25901, 24907, 22885,
+	19917, 16126, 11668, 6729, 1511, -3768, -8892, -13649,
+	-17842, -21297, -23873, -25462, -26000, -25462, -23873, -21297,
+	-17842, -13649, -8892, -3768, 1511, 6729, 11668, 16126,
+	19917, 22885, 24907, 25901, 25824, 24680, 22516, 19422,
+	15526, 10988, 5995, 756, -4514, -9599, -14287, -18384,
+	-21722, -24163, -25605, -25989, -25299, -23563, -20855, -17284,
+	-12999, -8178, -3018, 2266, 7456, 12339, 16712, 20394,
+	23234, 25114, 25956, 25725, 24431, 22129, 18911, 14912,
+	10298, 5257, 0, -5257, -10298, -14912, -18911, -22129,
+	-24432, -25725, -25956, -25114, -23234, -20394, -16712, -12339,
+	-7456, -2266, 3018, 8178, 13000, 17284, 20855, 23564,
+	25299, 25989, 25604, 24163, 21722, 18384, 14287, 9599,
+	4514, -756, -5996, -10988, -15526, -19422, -22516, -24680,
+	-25824, -25901, -24907, -22885, -19917, -16126, -11668, -6729,
+	-1511, 3768, 8892, 13649, 17842, 21297, 23873, 25462},
+	{
+// Carrier 1 Phase 5
+	24020, 21512, 18115, 13969, 9246, 4141, -1134, -6363,
+	-11329, -15827, -19671, -22703, -24796, -25865, -25865, -24796,
+	-22703, -19671, -15827, -11329, -6363, -1134, 4141, 9246,
+	13969, 18115, 21512, 24020, 25536, 25997, 25383, 23721,
+	21078, 17565, 13326, 8536, 3393, -1889, -7093, -12005,
+	-16421, -20158, -23062, -25013, -25931, -25777, -24558, -22325,
+	-19169, -15221, -10644, -5627, -378, 4886, 9949, 14601,
+	18650, 21928, 24300, 25667, 25975, 25209, 23401, 20627,
+	17000, 12671, 7818, 2642, -2642, -7818, -12671, -17000,
+	-20627, -23401, -25209, -25975, -25667, -24300, -21928, -18650,
+	-14601, -9949, -4886, 378, 5627, 10644, 15221, 19169,
+	22325, 24558, 25777, 25931, 25013, 23062, 20158, 16421,
+	12005, 7093, 1889, -3393, -8536, -13326, -17565, -21078,
+	-23721, -25383, -25997, -25536, -24020, -21512, -18115, -13969,
+	-9246, -4141, 1134, 6363, 11329, 15827, 19672, 22703,
+	24796, 25865, 25865, 24796, 22703, 19671, 15827, 11329,
+	6363, 1134, -4141, -9246, -13969, -18115, -21512, -24020,
+	-25536, -25997, -25383, -23721, -21078, -17565, -13326, -8536,
+	-3393, 1889, 7093, 12005, 16421, 20158, 23062, 25013,
+	25931, 25777, 24558, 22325, 19169, 15221, 10644, 5627,
+	378, -4886, -9949, -14601, -18650, -21928, -24300, -25667,
+	-25975, -25209, -23401, -20627, -17000, -12671, -7818, -2642,
+	2642, 7818, 12671, 17000, 20627, 23401, 25209, 25975,
+	25667, 24300, 21928, 18650, 14601, 9949, 4886, -378,
+	-5627, -10644, -15221, -19169, -22325, -24558, -25777, -25931,
+	-25013, -23062, -20158, -16421, -12005, -7093, -1889, 3393,
+	8536, 13326, 17565, 21078, 23721, 25383, 25997, 25536},
+	{
+// Carrier 1 Phase 6
+	18384, 14287, 9599, 4514, -756, -5995, -10988, -15526,
+	-19422, -22516, -24680, -25824, -25901, -24907, -22885, -19917,
+	-16126, -11668, -6729, -1511, 3768, 8892, 13649, 17842,
+	21297, 23873, 25462, 26000, 25462, 23873, 21297, 17842,
+	13649, 8892, 3768, -1511, -6729, -11668, -16126, -19917,
+	-22885, -24907, -25901, -25824, -24680, -22516, -19422, -15526,
+	-10988, -5995, -756, 4514, 9599, 14287, 18384, 21722,
+	24163, 25605, 25989, 25299, 23563, 20855, 17284, 12999,
+	8178, 3018, -2266, -7456, -12339, -16712, -20394, -23234,
+	-25114, -25956, -25725, -24432, -22129, -18911, -14912, -10298,
+	-5257, 0, 5257, 10298, 14913, 18911, 22129, 24432,
+	25725, 25956, 25114, 23234, 20394, 16712, 12339, 7456,
+	2266, -3018, -8178, -13000, -17284, -20855, -23564, -25299,
+	-25989, -25604, -24163, -21722, -18384, -14287, -9599, -4514,
+	756, 5996, 10988, 15526, 19422, 22516, 24680, 25824,
+	25901, 24907, 22885, 19917, 16126, 11668, 6729, 1511,
+	-3768, -8892, -13649, -17842, -21297, -23873, -25462, -26000,
+	-25462, -23873, -21297, -17842, -13649, -8892, -3768, 1511,
+	6729, 11668, 16126, 19917, 22885, 24907, 25901, 25824,
+	24680, 22516, 19422, 15526, 10988, 5995, 756, -4514,
+	-9599, -14287, -18384, -21722, -24163, -25605, -25989, -25299,
+	-23563, -20855, -17284, -12999, -8178, -3018, 2266, 7456,
+	12339, 16712, 20394, 23234, 25114, 25956, 25725, 24431,
+	22129, 18911, 14912, 10298, 5257, 0, -5257, -10298,
+	-14913, -18911, -22129, -24432, -25725, -25956, -25114, -23234,
+	-20394, -16712, -12339, -7456, -2265, 3018, 8178, 13000,
+	17284, 20855, 23564, 25299, 25989, 25604, 24163, 21722},
+	{
+// Carrier 1 Phase 7
+	9949, 4886, -378, -5627, -10644, -15221, -19169, -22325,
+	-24558, -25777, -25931, -25013, -23062, -20158, -16421, -12005,
+	-7093, -1889, 3393, 8536, 13326, 17565, 21078, 23721,
+	25383, 25997, 25536, 24020, 21512, 18115, 13969, 9246,
+	4141, -1134, -6363, -11329, -15827, -19671, -22703, -24796,
+	-25865, -25865, -24796, -22703, -19671, -15827, -11329, -6363,
+	-1134, 4142, 9246, 13969, 18115, 21512, 24020, 25536,
+	25997, 25383, 23721, 21078, 17565, 13326, 8536, 3393,
+	-1889, -7093, -12005, -16421, -20158, -23062, -25013, -25931,
+	-25777, -24558, -22325, -19169, -15221, -10644, -5627, -378,
+	4886, 9949, 14601, 18650, 21928, 24300, 25667, 25975,
+	25209, 23401, 20627, 17000, 12671, 7818, 2642, -2642,
+	-7818, -12671, -17000, -20627, -23401, -25209, -25975, -25667,
+	-24300, -21928, -18650, -14601, -9949, -4886, 378, 5627,
+	10644, 15221, 19169, 22325, 24558, 25777, 25931, 25013,
+	23062, 20158, 16421, 12005, 7093, 1889, -3393, -8536,
+	-13326, -17565, -21078, -23721, -25383, -25997, -25536, -24020,
+	-21512, -18115, -13969, -9246, -4141, 1134, 6363, 11329,
+	15827, 19672, 22703, 24796, 25865, 25865, 24796, 22703,
+	19671, 15827, 11329, 6363, 1134, -4142, -9246, -13969,
+	-18115, -21512, -24020, -25536, -25997, -25383, -23721, -21078,
+	-17565, -13326, -8536, -3393, 1889, 7093, 12005, 16421,
+	20158, 23062, 25013, 25931, 25777, 24558, 22325, 19169,
+	15221, 10644, 5627, 378, -4886, -9949, -14601, -18650,
+	-21928, -24300, -25667, -25975, -25209, -23401, -20627, -17000,
+	-12671, -7818, -2642, 2642, 7818, 12671, 17000, 20627,
+	23401, 25209, 25975, 25667, 24300, 21928, 18650, 14601},
+	},{{
+
+// Carrier 2 Phase 0
+	0, 5996, 11668, 16712, 20855, 23873, 25605, 25956,
+	24907, 22516, 18911, 14287, 8892, 3018, -3018, -8892,
+	-14287, -18911, -22516, -24907, -25956, -25605, -23873, -20855,
+	-16712, -11668, -5996, 0, 5995, 11668, 16712, 20855,
+	23873, 25604, 25956, 24907, 22516, 18911, 14287, 8892,
+	3018, -3018, -8892, -14287, -18911, -22516, -24907, -25956,
+	-25605, -23873, -20855, -16712, -11668, -5996, 0, 5995,
+	11668, 16712, 20855, 23873, 25604, 25956, 24907, 22516,
+	18911, 14287, 8892, 3018, -3018, -8892, -14287, -18911,
+	-22516, -24907, -25956, -25605, -23873, -20855, -16712, -11668,
+	-5996, 0, 5995, 11668, 16712, 20855, 23873, 25604,
+	25956, 24907, 22516, 18911, 14287, 8892, 3018, -3018,
+	-8892, -14287, -18911, -22516, -24907, -25956, -25605, -23873,
+	-20855, -16712, -11668, -5996, 0, 5995, 11668, 16712,
+	20855, 23873, 25604, 25956, 24907, 22516, 18911, 14287,
+	8892, 3018, -3018, -8892, -14287, -18911, -22516, -24907,
+	-25955, -25605, -23873, -20855, -16712, -11668, -5996, 0,
+	5995, 11668, 16712, 20855, 23873, 25604, 25956, 24907,
+	22516, 18911, 14287, 8892, 3018, -3018, -8892, -14287,
+	-18911, -22516, -24907, -25955, -25605, -23873, -20855, -16712,
+	-11669, -5996, 0, 5995, 11668, 16712, 20855, 23873,
+	25604, 25956, 24907, 22516, 18911, 14287, 8892, 3018,
+	-3018, -8892, -14286, -18911, -22516, -24907, -25955, -25605,
+	-23873, -20855, -16712, -11669, -5996, 0, 5995, 11668,
+	16712, 20854, 23873, 25604, 25956, 24907, 22516, 18911,
+	14287, 8892, 3018, -3018, -8892, -14286, -18911, -22516,
+	-24907, -25955, -25605, -23873, -20855, -16712, -11669, -5996},
+	{
+// Carrier 2 Phase 1
+	9949, 15221, 19671, 23062, 25209, 25997, 25383, 23401,
+	20158, 15827, 10644, 4886, -1134, -7093, -12671, -17565,
+	-21512, -24300, -25777, -25865, -24558, -21928, -18115, -13326,
+	-7818, -1889, 4141, 9949, 15221, 19671, 23062, 25209,
+	25997, 25383, 23401, 20158, 15827, 10644, 4886, -1134,
+	-7093, -12671, -17565, -21512, -24300, -25777, -25865, -24558,
+	-21928, -18115, -13326, -7818, -1889, 4141, 9949, 15221,
+	19671, 23062, 25209, 25997, 25383, 23401, 20158, 15827,
+	10644, 4886, -1133, -7093, -12671, -17565, -21512, -24300,
+	-25777, -25865, -24558, -21928, -18115, -13326, -7818, -1889,
+	4141, 9949, 15221, 19671, 23062, 25209, 25997, 25383,
+	23401, 20158, 15827, 10644, 4886, -1133, -7093, -12671,
+	-17565, -21512, -24300, -25777, -25865, -24558, -21928, -18115,
+	-13326, -7818, -1889, 4141, 9949, 15221, 19671, 23062,
+	25209, 25997, 25383, 23401, 20158, 15827, 10644, 4886,
+	-1133, -7093, -12670, -17565, -21512, -24300, -25777, -25865,
+	-24558, -21928, -18115, -13326, -7818, -1889, 4141, 9949,
+	15220, 19671, 23062, 25209, 25997, 25383, 23401, 20158,
+	15828, 10644, 4887, -1133, -7093, -12670, -17565, -21512,
+	-24299, -25777, -25865, -24558, -21928, -18115, -13326, -7818,
+	-1889, 4141, 9949, 15220, 19671, 23062, 25209, 25997,
+	25383, 23401, 20158, 15828, 10644, 4887, -1133, -7093,
+	-12670, -17565, -21512, -24299, -25777, -25865, -24558, -21928,
+	-18115, -13326, -7818, -1889, 4141, 9949, 15220, 19671,
+	23062, 25209, 25997, 25383, 23401, 20158, 15828, 10644,
+	4887, -1133, -7093, -12670, -17565, -21512, -24299, -25777,
+	-25865, -24558, -21928, -18115, -13326, -7818, -1889, 4141},
+	{
+// Carrier 2 Phase 2
+	18384, 22129, 24680, 25901, 25725, 24163, 21297, 17284,
+	12339, 6729, 756, -5257, -10988, -16126, -20394, -23563,
+	-25462, -25989, -25114, -22885, -19422, -14913, -9599, -3768,
+	2265, 8178, 13649, 18384, 22129, 24680, 25901, 25725,
+	24163, 21297, 17284, 12339, 6729, 756, -5257, -10988,
+	-16126, -20394, -23563, -25462, -25989, -25114, -22885, -19422,
+	-14913, -9599, -3768, 2265, 8178, 13649, 18384, 22128,
+	24680, 25901, 25725, 24163, 21298, 17284, 12339, 6729,
+	756, -5257, -10987, -16126, -20394, -23563, -25462, -25989,
+	-25114, -22885, -19422, -14913, -9599, -3768, 2265, 8178,
+	13649, 18384, 22128, 24680, 25901, 25725, 24163, 21298,
+	17284, 12339, 6729, 756, -5257, -10987, -16126, -20394,
+	-23563, -25462, -25989, -25114, -22885, -19422, -14913, -9599,
+	-3768, 2265, 8177, 13649, 18384, 22128, 24680, 25901,
+	25725, 24163, 21298, 17284, 12339, 6729, 756, -5257,
+	-10987, -16125, -20394, -23563, -25462, -25989, -25114, -22885,
+	-19422, -14913, -9599, -3768, 2265, 8177, 13649, 18384,
+	22128, 24680, 25901, 25725, 24163, 21298, 17284, 12339,
+	6729, 756, -5257, -10987, -16125, -20394, -23563, -25462,
+	-25989, -25114, -22885, -19422, -14913, -9599, -3768, 2265,
+	8177, 13649, 18384, 22128, 24680, 25901, 25725, 24163,
+	21298, 17284, 12339, 6729, 756, -5257, -10987, -16125,
+	-20394, -23563, -25462, -25989, -25114, -22885, -19422, -14913,
+	-9599, -3768, 2265, 8177, 13649, 18384, 22128, 24680,
+	25901, 25725, 24163, 21298, 17284, 12339, 6729, 756,
+	-5257, -10987, -16125, -20394, -23563, -25462, -25989, -25114,
+	-22885, -19422, -14913, -9599, -3768, 2265, 8177, 13649},
+	{
+// Carrier 2 Phase 3
+	24020, 25667, 25931, 24796, 22325, 18650, 13969, 8536,
+	2642, -3393, -9246, -14601, -19169, -22703, -25013, -25975,
+	-25536, -23721, -20627, -16421, -11329, -5627, 378, 6363,
+	12005, 17000, 21078, 24020, 25667, 25931, 24796, 22325,
+	18650, 13969, 8536, 2642, -3393, -9246, -14601, -19169,
+	-22703, -25013, -25975, -25536, -23721, -20627, -16421, -11329,
+	-5627, 378, 6363, 12005, 17000, 21078, 24020, 25667,
+	25931, 24796, 22325, 18650, 13969, 8536, 2642, -3393,
+	-9246, -14601, -19169, -22703, -25013, -25975, -25536, -23721,
+	-20627, -16421, -11329, -5627, 377, 6363, 12005, 17000,
+	21078, 24020, 25667, 25931, 24796, 22325, 18650, 13969,
+	8536, 2642, -3393, -9246, -14601, -19169, -22703, -25013,
+	-25975, -25536, -23721, -20627, -16421, -11329, -5627, 377,
+	6363, 12005, 17000, 21078, 24020, 25667, 25931, 24796,
+	22325, 18650, 13969, 8536, 2642, -3393, -9246, -14601,
+	-19169, -22703, -25013, -25975, -25536, -23721, -20627, -16421,
+	-11329, -5627, 377, 6363, 12005, 17000, 21078, 24020,
+	25667, 25931, 24796, 22325, 18650, 13970, 8536, 2642,
+	-3393, -9246, -14601, -19169, -22703, -25013, -25975, -25536,
+	-23721, -20627, -16421, -11329, -5627, 377, 6363, 12005,
+	17000, 21078, 24020, 25667, 25931, 24796, 22325, 18650,
+	13970, 8536, 2642, -3393, -9246, -14601, -19169, -22703,
+	-25013, -25975, -25536, -23721, -20627, -16421, -11329, -5627,
+	377, 6362, 12005, 17000, 21078, 24020, 25667, 25931,
+	24796, 22325, 18650, 13970, 8536, 2642, -3393, -9246,
+	-14601, -19168, -22703, -25013, -25975, -25536, -23721, -20627,
+	-16421, -11329, -5627, 377, 6362, 12005, 17000, 21078},
+	{
+// Carrier 2 Phase 4
+	26000, 25299, 23234, 19917, 15526, 10298, 4514, -1511,
+	-7456, -12999, -17842, -21722, -24432, -25824, -25824, -24432,
+	-21722, -17842, -13000, -7456, -1511, 4514, 10298, 15526,
+	19917, 23234, 25299, 26000, 25299, 23234, 19917, 15526,
+	10298, 4514, -1511, -7456, -12999, -17842, -21722, -24431,
+	-25824, -25824, -24432, -21722, -17842, -13000, -7456, -1511,
+	4514, 10297, 15526, 19917, 23234, 25299, 26000, 25299,
+	23234, 19917, 15526, 10298, 4514, -1511, -7456, -12999,
+	-17842, -21722, -24431, -25824, -25824, -24432, -21722, -17842,
+	-13000, -7457, -1511, 4514, 10297, 15526, 19917, 23234,
+	25299, 26000, 25299, 23234, 19917, 15526, 10298, 4515,
+	-1511, -7456, -12999, -17842, -21722, -24431, -25824, -25824,
+	-24432, -21722, -17842, -13000, -7457, -1511, 4514, 10297,
+	15525, 19917, 23234, 25299, 26000, 25299, 23234, 19917,
+	15526, 10298, 4515, -1511, -7456, -12999, -17842, -21722,
+	-24431, -25824, -25824, -24432, -21722, -17842, -13000, -7457,
+	-1512, 4514, 10297, 15525, 19916, 23234, 25299, 26000,
+	25299, 23234, 19917, 15526, 10298, 4515, -1511, -7456,
+	-12999, -17842, -21722, -24431, -25824, -25824, -24432, -21722,
+	-17842, -13000, -7457, -1512, 4514, 10297, 15525, 19916,
+	23234, 25299, 26000, 25299, 23234, 19917, 15526, 10298,
+	4515, -1511, -7456, -12999, -17842, -21722, -24431, -25824,
+	-25824, -24432, -21722, -17842, -13000, -7457, -1512, 4514,
+	10297, 15525, 19916, 23234, 25299, 26000, 25299, 23234,
+	19917, 15526, 10298, 4515, -1511, -7456, -12999, -17842,
+	-21722, -24431, -25824, -25824, -24432, -21722, -17842, -13000,
+	-7457, -1512, 4514, 10297, 15525, 19916, 23234, 25299},
+	{
+// Carrier 2 Phase 5
+	24020, 21078, 17000, 12005, 6363, 378, -5627, -11329,
+	-16421, -20627, -23721, -25536, -25975, -25013, -22703, -19169,
+	-14601, -9246, -3393, 2642, 8536, 13969, 18650, 22325,
+	24796, 25931, 25667, 24020, 21078, 17000, 12005, 6363,
+	378, -5627, -11329, -16420, -20627, -23721, -25536, -25975,
+	-25013, -22703, -19169, -14601, -9247, -3393, 2642, 8536,
+	13969, 18650, 22325, 24796, 25931, 25667, 24020, 21078,
+	17000, 12005, 6363, 378, -5627, -11329, -16420, -20627,
+	-23721, -25536, -25975, -25013, -22703, -19169, -14601, -9247,
+	-3393, 2642, 8536, 13969, 18650, 22325, 24796, 25931,
+	25667, 24020, 21078, 17000, 12005, 6363, 378, -5627,
+	-11329, -16420, -20627, -23721, -25536, -25975, -25013, -22703,
+	-19169, -14601, -9247, -3393, 2642, 8536, 13969, 18650,
+	22325, 24796, 25931, 25667, 24020, 21078, 17000, 12005,
+	6363, 378, -5627, -11329, -16420, -20627, -23721, -25536,
+	-25975, -25013, -22703, -19169, -14601, -9247, -3393, 2642,
+	8536, 13969, 18650, 22325, 24796, 25931, 25667, 24020,
+	21078, 17000, 12005, 6363, 378, -5627, -11329, -16420,
+	-20627, -23721, -25536, -25975, -25013, -22703, -19169, -14601,
+	-9247, -3393, 2642, 8535, 13969, 18650, 22325, 24796,
+	25931, 25668, 24020, 21078, 17000, 12005, 6363, 378,
+	-5627, -11329, -16420, -20627, -23721, -25536, -25975, -25013,
+	-22703, -19169, -14601, -9247, -3394, 2642, 8535, 13969,
+	18649, 22325, 24796, 25931, 25668, 24021, 21079, 17000,
+	12005, 6363, 378, -5627, -11329, -16420, -20626, -23721,
+	-25536, -25975, -25013, -22703, -19169, -14601, -9247, -3394,
+	2642, 8535, 13969, 18649, 22325, 24796, 25931, 25668},
+	{
+// Carrier 2 Phase 6
+	18384, 13649, 8178, 2266, -3768, -9599, -14912, -19422,
+	-22885, -25114, -25989, -25462, -23564, -20394, -16126, -10988,
+	-5257, 756, 6729, 12339, 17284, 21297, 24163, 25725,
+	25901, 24680, 22129, 18384, 13649, 8178, 2266, -3768,
+	-9599, -14912, -19422, -22885, -25114, -25988, -25462, -23564,
+	-20394, -16126, -10988, -5257, 756, 6729, 12339, 17284,
+	21297, 24163, 25725, 25901, 24680, 22129, 18384, 13649,
+	8178, 2266, -3768, -9599, -14912, -19422, -22885, -25114,
+	-25988, -25462, -23564, -20394, -16126, -10988, -5257, 756,
+	6729, 12339, 17284, 21297, 24162, 25725, 25901, 24680,
+	22129, 18384, 13649, 8178, 2266, -3768, -9599, -14912,
+	-19422, -22885, -25114, -25988, -25462, -23564, -20394, -16126,
+	-10988, -5257, 756, 6729, 12339, 17284, 21297, 24162,
+	25725, 25901, 24680, 22129, 18384, 13649, 8178, 2266,
+	-3768, -9599, -14912, -19422, -22885, -25114, -25988, -25462,
+	-23564, -20394, -16126, -10988, -5257, 755, 6729, 12339,
+	17284, 21297, 24162, 25725, 25901, 24680, 22129, 18384,
+	13649, 8178, 2266, -3767, -9599, -14912, -19422, -22885,
+	-25114, -25988, -25462, -23564, -20394, -16126, -10988, -5257,
+	755, 6729, 12339, 17284, 21297, 24162, 25725, 25901,
+	24680, 22129, 18384, 13649, 8178, 2266, -3767, -9599,
+	-14912, -19422, -22885, -25113, -25988, -25462, -23564, -20395,
+	-16126, -10988, -5257, 755, 6728, 12339, 17284, 21297,
+	24162, 25725, 25901, 24680, 22129, 18385, 13649, 8178,
+	2266, -3767, -9599, -14912, -19422, -22885, -25113, -25988,
+	-25462, -23564, -20395, -16126, -10988, -5258, 755, 6728,
+	12339, 17284, 21297, 24162, 25725, 25901, 24680, 22129},
+	{
+// Carrier 2 Phase 7
+	9949, 4141, -1889, -7818, -13326, -18115, -21928, -24558,
+	-25865, -25777, -24300, -21512, -17565, -12671, -7093, -1134,
+	4886, 10644, 15827, 20158, 23401, 25383, 25997, 25209,
+	23062, 19672, 15221, 9949, 4142, -1889, -7818, -13326,
+	-18115, -21928, -24558, -25865, -25777, -24300, -21512, -17565,
+	-12671, -7093, -1134, 4886, 10644, 15827, 20158, 23401,
+	25383, 25997, 25209, 23062, 19672, 15221, 9949, 4142,
+	-1889, -7818, -13326, -18115, -21928, -24558, -25865, -25777,
+	-24300, -21512, -17565, -12671, -7093, -1134, 4886, 10644,
+	15827, 20158, 23401, 25383, 25997, 25209, 23062, 19672,
+	15221, 9949, 4142, -1888, -7818, -13325, -18115, -21928,
+	-24558, -25865, -25777, -24300, -21512, -17565, -12671, -7094,
+	-1134, 4886, 10644, 15827, 20157, 23401, 25383, 25997,
+	25209, 23062, 19672, 15221, 9949, 4142, -1888, -7818,
+	-13325, -18115, -21928, -24558, -25865, -25777, -24300, -21512,
+	-17565, -12671, -7094, -1134, 4886, 10643, 15827, 20157,
+	23401, 25383, 25997, 25209, 23062, 19672, 15221, 9950,
+	4142, -1888, -7818, -13325, -18115, -21928, -24558, -25865,
+	-25777, -24300, -21512, -17565, -12671, -7094, -1134, 4886,
+	10643, 15827, 20157, 23401, 25383, 25997, 25209, 23062,
+	19672, 15221, 9950, 4142, -1888, -7818, -13325, -18115,
+	-21928, -24558, -25865, -25777, -24300, -21512, -17565, -12671,
+	-7094, -1134, 4886, 10643, 15827, 20157, 23401, 25383,
+	25997, 25209, 23062, 19672, 15221, 9950, 4142, -1888,
+	-7818, -13325, -18115, -21927, -24558, -25865, -25777, -24300,
+	-21512, -17565, -12671, -7094, -1134, 4886, 10643, 15827,
+	20157, 23401, 25383, 25997, 25209, 23062, 19672, 15221},
+	},{{
+
+// Carrier 3 Phase 0
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729},
+	{
+// Carrier 3 Phase 1
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393,
+	9949, 15827, 20627, 24020, 25777, 25777, 24020, 20627,
+	15827, 9949, 3393, -3393, -9949, -15827, -20627, -24020,
+	-25777, -25777, -24020, -20627, -15827, -9949, -3393, 3393},
+	{
+// Carrier 3 Phase 2
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999},
+	{
+// Carrier 3 Phase 3
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627,
+	24020, 25777, 25777, 24020, 20627, 15827, 9949, 3393,
+	-3393, -9949, -15827, -20627, -24020, -25777, -25777, -24020,
+	-20627, -15827, -9949, -3393, 3393, 9949, 15827, 20627},
+	{
+// Carrier 3 Phase 4
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114},
+	{
+// Carrier 3 Phase 5
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777,
+	24020, 20627, 15827, 9949, 3393, -3393, -9949, -15827,
+	-20627, -24020, -25777, -25777, -24020, -20627, -15827, -9949,
+	-3393, 3393, 9949, 15827, 20627, 24020, 25777, 25777},
+	{
+// Carrier 3 Phase 6
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516},
+	{
+// Carrier 3 Phase 7
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827,
+	9949, 3393, -3393, -9949, -15827, -20627, -24020, -25777,
+	-25777, -24020, -20627, -15827, -9949, -3393, 3393, 9949,
+	15827, 20627, 24020, 25777, 25777, 24020, 20627, 15827},
+	},{{
+
+// Carrier 4 Phase 0
+	0, 7456, 14287, 19917, 23873, 25824, 25605, 23234,
+	18911, 13000, 5996, -1511, -8892, -15526, -20855, -24432,
+	-25956, -25299, -22516, -17842, -11668, -4514, 3018, 10298,
+	16712, 21722, 24907, 26000, 24907, 21722, 16712, 10298,
+	3018, -4514, -11668, -17842, -22516, -25299, -25956, -24431,
+	-20855, -15526, -8892, -1511, 5996, 13000, 18911, 23234,
+	25605, 25824, 23873, 19917, 14287, 7456, 0, -7456,
+	-14287, -19917, -23873, -25824, -25604, -23234, -18911, -12999,
+	-5995, 1511, 8892, 15526, 20855, 24432, 25956, 25299,
+	22516, 17842, 11668, 4514, -3018, -10298, -16712, -21722,
+	-24907, -26000, -24907, -21722, -16712, -10297, -3018, 4515,
+	11668, 17842, 22516, 25299, 25956, 24431, 20855, 15525,
+	8892, 1511, -5996, -13000, -18911, -23234, -25605, -25824,
+	-23873, -19917, -14287, -7456, 0, 7457, 14287, 19917,
+	23873, 25824, 25604, 23234, 18911, 12999, 5995, -1511,
+	-8892, -15526, -20855, -24432, -25956, -25299, -22516, -17842,
+	-11668, -4514, 3018, 10298, 16712, 21722, 24907, 26000,
+	24907, 21722, 16712, 10297, 3018, -4515, -11668, -17842,
+	-22516, -25299, -25955, -24431, -20855, -15525, -8892, -1511,
+	5996, 13000, 18911, 23234, 25605, 25824, 23873, 19916,
+	14287, 7456, 0, -7457, -14287, -19917, -23873, -25824,
+	-25604, -23234, -18911, -12999, -5995, 1512, 8892, 15526,
+	20855, 24432, 25956, 25299, 22516, 17842, 11668, 4514,
+	-3018, -10298, -16712, -21722, -24907, -26000, -24907, -21722,
+	-16712, -10297, -3018, 4515, 11669, 17842, 22516, 25299,
+	25955, 24431, 20854, 15525, 8892, 1511, -5996, -13000,
+	-18911, -23234, -25605, -25824, -23873, -19916, -14286, -7456},
+	{
+// Carrier 4 Phase 1
+	9949, 16421, 21512, 24796, 25997, 25013, 21928, 17000,
+	10644, 3393, -4141, -11329, -17565, -22325, -25209, -25975,
+	-24558, -21078, -15827, -9246, -1889, 5627, 12671, 18650,
+	23062, 25536, 25865, 24020, 20158, 14601, 7818, 378,
+	-7093, -13969, -19672, -23721, -25777, -25667, -23401, -19169,
+	-13326, -6363, 1134, 8536, 15221, 20627, 24300, 25931,
+	25383, 22703, 18115, 12005, 4886, -2642, -9949, -16421,
+	-21512, -24796, -25997, -25013, -21928, -17000, -10644, -3393,
+	4142, 11329, 17565, 22325, 25209, 25975, 24558, 21078,
+	15827, 9246, 1888, -5627, -12671, -18650, -23062, -25536,
+	-25865, -24020, -20158, -14601, -7818, -377, 7093, 13969,
+	19672, 23721, 25777, 25667, 23401, 19169, 13325, 6363,
+	-1134, -8536, -15221, -20627, -24300, -25931, -25383, -22703,
+	-18115, -12005, -4886, 2642, 9949, 16421, 21512, 24796,
+	25997, 25013, 21928, 17000, 10644, 3393, -4142, -11329,
+	-17565, -22325, -25209, -25975, -24558, -21078, -15827, -9246,
+	-1888, 5627, 12671, 18650, 23062, 25536, 25865, 24020,
+	20157, 14601, 7818, 377, -7094, -13969, -19672, -23721,
+	-25777, -25667, -23401, -19169, -13325, -6363, 1134, 8536,
+	15221, 20627, 24300, 25931, 25383, 22703, 18115, 12005,
+	4886, -2642, -9950, -16421, -21512, -24796, -25997, -25013,
+	-21928, -17000, -10643, -3393, 4142, 11329, 17565, 22325,
+	25209, 25975, 24558, 21078, 15827, 9246, 1888, -5627,
+	-12671, -18650, -23062, -25536, -25865, -24020, -20157, -14601,
+	-7818, -377, 7094, 13970, 19672, 23721, 25777, 25667,
+	23401, 19168, 13325, 6362, -1134, -8536, -15221, -20627,
+	-24300, -25931, -25383, -22703, -18115, -12005, -4886, 2642},
+	{
+// Carrier 4 Phase 2
+	18384, 22885, 25462, 25901, 24163, 20394, 14912, 8178,
+	756, -6729, -13649, -19422, -23564, -25725, -25725, -23563,
+	-19422, -13649, -6729, 756, 8178, 14913, 20394, 24163,
+	25901, 25462, 22885, 18384, 12339, 5257, -2266, -9599,
+	-16126, -21297, -24680, -25989, -25114, -22129, -17284, -10988,
+	-3768, 3768, 10988, 17284, 22129, 25114, 25988, 24680,
+	21297, 16126, 9599, 2265, -5257, -12339, -18384, -22885,
+	-25462, -25901, -24162, -20394, -14912, -8178, -756, 6729,
+	13649, 19422, 23564, 25725, 25725, 23563, 19422, 13649,
+	6729, -756, -8178, -14913, -20394, -24163, -25901, -25462,
+	-22885, -18384, -12339, -5257, 2266, 9599, 16126, 21298,
+	24680, 25989, 25114, 22128, 17284, 10987, 3768, -3768,
+	-10988, -17284, -22129, -25114, -25988, -24680, -21297, -16125,
+	-9599, -2265, 5257, 12339, 18384, 22885, 25462, 25901,
+	24162, 20394, 14912, 8177, 755, -6729, -13649, -19422,
+	-23564, -25725, -25725, -23563, -19422, -13649, -6729, 756,
+	8178, 14913, 20394, 24163, 25901, 25462, 22885, 18384,
+	12339, 5257, -2266, -9599, -16126, -21298, -24680, -25989,
+	-25114, -22128, -17284, -10987, -3767, 3768, 10988, 17284,
+	22129, 25114, 25988, 24680, 21297, 16125, 9599, 2265,
+	-5257, -12339, -18384, -22885, -25462, -25901, -24162, -20394,
+	-14912, -8177, -755, 6729, 13649, 19422, 23564, 25725,
+	25725, 23563, 19422, 13649, 6728, -756, -8178, -14913,
+	-20395, -24163, -25901, -25462, -22885, -18384, -12339, -5257,
+	2266, 9599, 16126, 21298, 24680, 25989, 25113, 22128,
+	17284, 10987, 3767, -3768, -10988, -17284, -22129, -25114,
+	-25988, -24680, -21297, -16125, -9599, -2265, 5258, 12339},
+	{
+// Carrier 4 Phase 3
+	24020, 25865, 25536, 23062, 18650, 12671, 5627, -1889,
+	-9246, -15827, -21078, -24558, -25975, -25209, -22325, -17565,
+	-11329, -4141, 3393, 10644, 17000, 21928, 25013, 25997,
+	24796, 21512, 16421, 9949, 2642, -4886, -12005, -18115,
+	-22703, -25383, -25931, -24300, -20627, -15221, -8536, -1134,
+	6363, 13326, 19169, 23401, 25667, 25777, 23721, 19671,
+	13969, 7093, -378, -7818, -14601, -20158, -24020, -25865,
+	-25536, -23062, -18650, -12671, -5627, 1889, 9247, 15827,
+	21078, 24558, 25975, 25209, 22325, 17565, 11329, 4141,
+	-3393, -10644, -17000, -21928, -25013, -25997, -24796, -21512,
+	-16420, -9949, -2642, 4886, 12005, 18115, 22703, 25383,
+	25931, 24300, 20627, 15221, 8536, 1133, -6363, -13326,
+	-19169, -23401, -25667, -25777, -23721, -19671, -13969, -7093,
+	378, 7818, 14601, 20158, 24020, 25865, 25536, 23062,
+	18650, 12670, 5627, -1889, -9247, -15827, -21078, -24558,
+	-25975, -25209, -22325, -17565, -11329, -4141, 3393, 10644,
+	17000, 21928, 25013, 25997, 24796, 21512, 16420, 9949,
+	2642, -4887, -12005, -18115, -22703, -25383, -25931, -24299,
+	-20627, -15220, -8535, -1133, 6363, 13326, 19169, 23401,
+	25668, 25777, 23721, 19671, 13969, 7093, -378, -7818,
+	-14601, -20158, -24020, -25865, -25536, -23062, -18650, -12670,
+	-5627, 1889, 9247, 15828, 21078, 24558, 25975, 25209,
+	22325, 17565, 11329, 4141, -3394, -10644, -17000, -21928,
+	-25013, -25997, -24796, -21512, -16420, -9949, -2642, 4887,
+	12005, 18115, 22703, 25383, 25931, 24299, 20626, 15220,
+	8535, 1133, -6363, -13326, -19169, -23401, -25668, -25777,
+	-23721, -19671, -13969, -7093, 378, 7818, 14601, 20158},
+	{
+// Carrier 4 Phase 4
+	26000, 24907, 21722, 16712, 10298, 3018, -4514, -11668,
+	-17842, -22516, -25299, -25956, -24432, -20855, -15526, -8892,
+	-1511, 5996, 13000, 18911, 23234, 25605, 25824, 23873,
+	19917, 14287, 7456, 0, -7456, -14287, -19917, -23873,
+	-25824, -25604, -23234, -18911, -12999, -5995, 1511, 8892,
+	15526, 20855, 24432, 25956, 25299, 22516, 17842, 11668,
+	4514, -3018, -10298, -16712, -21722, -24907, -26000, -24907,
+	-21722, -16712, -10297, -3018, 4514, 11668, 17842, 22516,
+	25299, 25956, 24431, 20855, 15526, 8892, 1511, -5996,
+	-13000, -18911, -23234, -25605, -25824, -23873, -19917, -14287,
+	-7456, 0, 7457, 14287, 19917, 23873, 25824, 25604,
+	23234, 18911, 12999, 5995, -1511, -8892, -15526, -20855,
+	-24432, -25956, -25299, -22516, -17842, -11668, -4514, 3018,
+	10298, 16712, 21722, 24907, 26000, 24907, 21722, 16712,
+	10297, 3018, -4515, -11668, -17842, -22516, -25299, -25955,
+	-24431, -20855, -15525, -8892, -1511, 5996, 13000, 18911,
+	23234, 25605, 25824, 23873, 19917, 14287, 7456, 0,
+	-7457, -14287, -19917, -23873, -25824, -25604, -23234, -18911,
+	-12999, -5995, 1512, 8892, 15526, 20855, 24432, 25956,
+	25299, 22516, 17842, 11668, 4514, -3018, -10298, -16712,
+	-21722, -24907, -26000, -24907, -21722, -16712, -10297, -3018,
+	4515, 11669, 17842, 22516, 25299, 25955, 24431, 20855,
+	15525, 8892, 1511, -5996, -13000, -18911, -23234, -25605,
+	-25824, -23873, -19916, -14286, -7456, 0, 7457, 14287,
+	19917, 23873, 25824, 25604, 23234, 18911, 12999, 5995,
+	-1512, -8892, -15526, -20855, -24432, -25956, -25299, -22516,
+	-17842, -11668, -4514, 3018, 10298, 16712, 21722, 24907},
+	{
+// Carrier 4 Phase 5
+	24020, 20158, 14601, 7818, 378, -7093, -13969, -19671,
+	-23721, -25777, -25667, -23401, -19169, -13326, -6363, 1134,
+	8536, 15221, 20627, 24300, 25931, 25383, 22703, 18115,
+	12005, 4886, -2642, -9949, -16421, -21512, -24796, -25997,
+	-25013, -21928, -17000, -10644, -3393, 4142, 11329, 17565,
+	22325, 25209, 25975, 24558, 21078, 15827, 9246, 1889,
+	-5627, -12671, -18650, -23062, -25536, -25865, -24020, -20158,
+	-14601, -7818, -378, 7093, 13969, 19672, 23721, 25777,
+	25667, 23401, 19169, 13326, 6363, -1134, -8536, -15221,
+	-20627, -24300, -25931, -25383, -22703, -18115, -12005, -4886,
+	2642, 9949, 16421, 21512, 24796, 25997, 25013, 21928,
+	17000, 10644, 3393, -4142, -11329, -17565, -22325, -25209,
+	-25975, -24558, -21078, -15827, -9246, -1888, 5627, 12671,
+	18650, 23062, 25536, 25865, 24020, 20157, 14601, 7818,
+	377, -7094, -13969, -19672, -23721, -25777, -25667, -23401,
+	-19169, -13325, -6363, 1134, 8536, 15221, 20627, 24300,
+	25931, 25383, 22703, 18115, 12005, 4886, -2642, -9949,
+	-16421, -21512, -24796, -25997, -25013, -21928, -17000, -10643,
+	-3393, 4142, 11329, 17565, 22325, 25209, 25975, 24558,
+	21078, 15827, 9246, 1888, -5627, -12671, -18650, -23062,
+	-25536, -25865, -24020, -20157, -14601, -7818, -377, 7094,
+	13970, 19672, 23721, 25777, 25667, 23401, 19168, 13325,
+	6363, -1134, -8536, -15221, -20627, -24300, -25931, -25383,
+	-22703, -18115, -12005, -4886, 2642, 9950, 16421, 21512,
+	24796, 25997, 25013, 21927, 17000, 10643, 3393, -4142,
+	-11329, -17565, -22325, -25209, -25975, -24558, -21078, -15827,
+	-9246, -1888, 5627, 12671, 18650, 23062, 25536, 25865},
+	{
+// Carrier 4 Phase 6
+	18384, 12339, 5257, -2266, -9599, -16126, -21297, -24680,
+	-25989, -25114, -22129, -17284, -10988, -3768, 3768, 10988,
+	17284, 22129, 25114, 25989, 24680, 21297, 16126, 9599,
+	2266, -5257, -12339, -18384, -22885, -25462, -25901, -24163,
+	-20394, -14912, -8178, -756, 6729, 13649, 19422, 23564,
+	25725, 25725, 23563, 19422, 13649, 6729, -756, -8178,
+	-14913, -20394, -24163, -25901, -25462, -22885, -18384, -12339,
+	-5257, 2266, 9599, 16126, 21298, 24680, 25989, 25114,
+	22128, 17284, 10987, 3768, -3768, -10988, -17284, -22129,
+	-25114, -25988, -24680, -21297, -16126, -9599, -2265, 5257,
+	12339, 18384, 22885, 25462, 25901, 24162, 20394, 14912,
+	8178, 756, -6729, -13649, -19422, -23564, -25725, -25725,
+	-23563, -19422, -13649, -6729, 756, 8178, 14913, 20394,
+	24163, 25901, 25462, 22885, 18384, 12339, 5257, -2266,
+	-9599, -16126, -21298, -24680, -25989, -25114, -22128, -17284,
+	-10987, -3767, 3768, 10988, 17284, 22129, 25114, 25988,
+	24680, 21297, 16125, 9599, 2265, -5257, -12339, -18384,
+	-22885, -25462, -25901, -24162, -20394, -14912, -8177, -755,
+	6729, 13649, 19422, 23564, 25725, 25725, 23563, 19422,
+	13649, 6729, -756, -8178, -14913, -20394, -24163, -25901,
+	-25462, -22885, -18384, -12339, -5257, 2266, 9599, 16126,
+	21298, 24680, 25989, 25113, 22128, 17284, 10987, 3767,
+	-3768, -10988, -17284, -22129, -25114, -25988, -24680, -21297,
+	-16125, -9599, -2265, 5258, 12339, 18385, 22885, 25462,
+	25901, 24162, 20394, 14912, 8177, 755, -6729, -13649,
+	-19422, -23564, -25725, -25725, -23563, -19422, -13649, -6728,
+	756, 8178, 14913, 20395, 24163, 25901, 25462, 22885},
+	{
+// Carrier 4 Phase 7
+	9949, 2642, -4886, -12005, -18115, -22703, -25383, -25931,
+	-24300, -20627, -15221, -8536, -1134, 6363, 13326, 19169,
+	23401, 25667, 25777, 23721, 19671, 13969, 7093, -378,
+	-7818, -14601, -20158, -24020, -25865, -25536, -23062, -18650,
+	-12671, -5627, 1889, 9246, 15827, 21078, 24558, 25975,
+	25209, 22325, 17565, 11329, 4141, -3393, -10644, -17000,
+	-21928, -25013, -25997, -24796, -21512, -16420, -9949, -2642,
+	4886, 12005, 18115, 22703, 25383, 25931, 24300, 20627,
+	15221, 8536, 1133, -6363, -13326, -19169, -23401, -25667,
+	-25777, -23721, -19671, -13969, -7093, 378, 7818, 14601,
+	20158, 24020, 25865, 25536, 23062, 18650, 12671, 5627,
+	-1889, -9247, -15827, -21078, -24558, -25975, -25209, -22325,
+	-17565, -11329, -4141, 3393, 10644, 17000, 21928, 25013,
+	25997, 24796, 21512, 16420, 9949, 2642, -4886, -12005,
+	-18115, -22703, -25383, -25931, -24300, -20627, -15220, -8536,
+	-1133, 6363, 13326, 19169, 23401, 25667, 25777, 23721,
+	19671, 13969, 7093, -378, -7818, -14601, -20158, -24020,
+	-25865, -25536, -23062, -18650, -12670, -5627, 1889, 9247,
+	15828, 21078, 24558, 25975, 25209, 22325, 17565, 11329,
+	4141, -3393, -10644, -17000, -21928, -25013, -25997, -24796,
+	-21512, -16420, -9949, -2642, 4887, 12005, 18115, 22703,
+	25383, 25931, 24299, 20627, 15220, 8535, 1133, -6363,
+	-13326, -19169, -23401, -25668, -25777, -23721, -19671, -13969,
+	-7093, 378, 7818, 14601, 20158, 24021, 25865, 25536,
+	23062, 18649, 12670, 5627, -1889, -9247, -15828, -21079,
+	-24558, -25975, -25209, -22325, -17565, -11329, -4141, 3394,
+	10644, 17000, 21928, 25013, 25997, 24796, 21512, 16420},
+	},{{
+
+// Carrier 5 Phase 0
+	0, 8178, 15526, 21297, 24907, 25989, 24432, 20394,
+	14287, 6729, -1511, -9599, -16712, -22129, -25299, -25901,
+	-23873, -19422, -13000, -5257, 3018, 10988, 17842, 22885,
+	25604, 25725, 23234, 18384, 11668, 3768, -4514, -12339,
+	-18911, -23563, -25824, -25462, -22516, -17284, -10298, -2266,
+	5995, 13649, 19917, 24163, 25956, 25114, 21722, 16126,
+	8892, 756, -7456, -14912, -20855, -24680, -26000, -24680,
+	-20855, -14913, -7456, 756, 8892, 16126, 21722, 25114,
+	25956, 24163, 19917, 13649, 5996, -2265, -10297, -17284,
+	-22516, -25462, -25824, -23564, -18911, -12339, -4514, 3768,
+	11668, 18384, 23234, 25725, 25605, 22885, 17842, 10988,
+	3018, -5257, -12999, -19422, -23873, -25901, -25299, -22129,
+	-16712, -9599, -1511, 6729, 14287, 20394, 24431, 25988,
+	24907, 21298, 15526, 8178, 0, -8177, -15525, -21297,
+	-24907, -25989, -24432, -20394, -14287, -6729, 1511, 9599,
+	16712, 22128, 25299, 25901, 23873, 19422, 13000, 5257,
+	-3018, -10987, -17842, -22885, -25604, -25725, -23234, -18384,
+	-11668, -3768, 4514, 12339, 18911, 23563, 25824, 25462,
+	22516, 17284, 10298, 2266, -5995, -13649, -19916, -24162,
+	-25955, -25114, -21722, -16126, -8892, -756, 7456, 14912,
+	20855, 24680, 26000, 24680, 20855, 14913, 7457, -755,
+	-8892, -16125, -21722, -25113, -25956, -24163, -19917, -13649,
+	-5996, 2265, 10297, 17284, 22516, 25462, 25824, 23564,
+	18911, 12339, 4515, -3767, -11668, -18384, -23234, -25725,
+	-25605, -22885, -17842, -10988, -3018, 5257, 12999, 19422,
+	23873, 25901, 25299, 22129, 16712, 9599, 1512, -6728,
+	-14286, -20394, -24431, -25988, -24907, -21298, -15526, -8178},
+	{
+// Carrier 5 Phase 1
+	9949, 17000, 22325, 25383, 25865, 23721, 19169, 12671,
+	4886, -3393, -11329, -18115, -23062, -25667, -25667, -23062,
+	-18115, -11329, -3393, 4886, 12671, 19169, 23721, 25865,
+	25383, 22325, 17000, 9949, 1889, -6363, -13969, -20158,
+	-24300, -25975, -25013, -21512, -15827, -8536, -378, 7818,
+	15221, 21078, 24796, 25997, 24558, 20627, 14601, 7093,
+	-1134, -9246, -16420, -21928, -25209, -25931, -24020, -19672,
+	-13326, -5627, 2642, 10644, 17565, 22703, 25536, 25777,
+	23401, 18650, 12005, 4142, -4141, -12005, -18650, -23401,
+	-25777, -25536, -22703, -17565, -10644, -2642, 5627, 13325,
+	19671, 24020, 25931, 25209, 21928, 16421, 9247, 1134,
+	-7093, -14601, -20627, -24558, -25997, -24796, -21078, -15221,
+	-7818, 377, 8536, 15827, 21512, 25013, 25975, 24300,
+	20158, 13969, 6363, -1888, -9949, -17000, -22325, -25383,
+	-25865, -23721, -19169, -12671, -4886, 3393, 11329, 18115,
+	23062, 25667, 25667, 23062, 18115, 11329, 3393, -4886,
+	-12670, -19169, -23721, -25865, -25383, -22325, -17000, -9950,
+	-1889, 6363, 13969, 20157, 24299, 25975, 25013, 21512,
+	15828, 8536, 378, -7818, -15220, -21078, -24796, -25997,
+	-24558, -20627, -14601, -7094, 1133, 9246, 16420, 21928,
+	25209, 25931, 24020, 19672, 13326, 5627, -2642, -10643,
+	-17565, -22703, -25536, -25777, -23401, -18650, -12005, -4142,
+	4141, 12005, 18649, 23401, 25777, 25536, 22703, 17565,
+	10644, 2642, -5627, -13325, -19671, -24020, -25931, -25209,
+	-21928, -16421, -9247, -1134, 7093, 14601, 20626, 24558,
+	25997, 24796, 21079, 15221, 7818, -377, -8535, -15827,
+	-21512, -25013, -25975, -24300, -20158, -13970, -6363, 1888},
+	{
+// Carrier 5 Phase 2
+	18384, 23234, 25725, 25605, 22885, 17842, 10988, 3018,
+	-5257, -12999, -19422, -23873, -25901, -25299, -22129, -16712,
+	-9599, -1511, 6729, 14287, 20394, 24431, 25989, 24907,
+	21297, 15526, 8178, 0, -8178, -15526, -21297, -24907,
+	-25989, -24432, -20394, -14287, -6729, 1511, 9599, 16712,
+	22128, 25299, 25901, 23873, 19422, 13000, 5257, -3018,
+	-10988, -17842, -22885, -25604, -25725, -23234, -18384, -11668,
+	-3768, 4514, 12339, 18911, 23563, 25824, 25462, 22516,
+	17284, 10298, 2266, -5995, -13649, -19917, -24162, -25956,
+	-25114, -21722, -16126, -8892, -756, 7456, 14912, 20855,
+	24680, 26000, 24680, 20855, 14913, 7457, -756, -8892,
+	-16125, -21722, -25114, -25956, -24163, -19917, -13649, -5996,
+	2265, 10297, 17284, 22516, 25462, 25824, 23564, 18911,
+	12339, 4515, -3768, -11668, -18384, -23234, -25725, -25605,
+	-22885, -17842, -10988, -3018, 5257, 12999, 19422, 23873,
+	25901, 25299, 22129, 16712, 9599, 1512, -6729, -14287,
+	-20394, -24431, -25988, -24907, -21298, -15526, -8178, 0,
+	8177, 15525, 21297, 24907, 25989, 24432, 20394, 14287,
+	6729, -1511, -9599, -16712, -22128, -25299, -25901, -23873,
+	-19422, -13000, -5257, 3018, 10987, 17842, 22885, 25604,
+	25725, 23234, 18385, 11669, 3768, -4514, -12339, -18911,
+	-23563, -25824, -25462, -22516, -17284, -10298, -2266, 5995,
+	13649, 19916, 24162, 25955, 25114, 21722, 16126, 8892,
+	756, -7456, -14912, -20854, -24680, -26000, -24680, -20855,
+	-14913, -7457, 755, 8892, 16125, 21722, 25113, 25956,
+	24163, 19917, 13649, 5996, -2265, -10297, -17284, -22516,
+	-25462, -25824, -23564, -18912, -12339, -4515, 3767, 11668},
+	{
+// Carrier 5 Phase 3
+	24020, 25931, 25209, 21928, 16421, 9246, 1134, -7093,
+	-14601, -20627, -24558, -25997, -24796, -21078, -15221, -7818,
+	378, 8536, 15827, 21512, 25013, 25975, 24300, 20158,
+	13969, 6363, -1889, -9949, -17000, -22325, -25383, -25865,
+	-23721, -19169, -12671, -4886, 3393, 11329, 18115, 23062,
+	25667, 25667, 23062, 18115, 11329, 3393, -4886, -12671,
+	-19169, -23721, -25865, -25383, -22325, -17000, -9949, -1889,
+	6363, 13969, 20158, 24300, 25975, 25013, 21512, 15827,
+	8536, 378, -7818, -15221, -21078, -24796, -25997, -24558,
+	-20627, -14601, -7093, 1133, 9246, 16420, 21928, 25209,
+	25931, 24020, 19672, 13326, 5627, -2642, -10644, -17565,
+	-22703, -25536, -25777, -23401, -18650, -12005, -4142, 4141,
+	12005, 18650, 23401, 25777, 25536, 22703, 17565, 10644,
+	2642, -5627, -13325, -19671, -24020, -25931, -25209, -21928,
+	-16421, -9247, -1134, 7093, 14601, 20627, 24558, 25997,
+	24796, 21078, 15221, 7818, -377, -8536, -15827, -21512,
+	-25013, -25975, -24300, -20158, -13969, -6363, 1888, 9949,
+	17000, 22325, 25383, 25865, 23721, 19169, 12671, 4887,
+	-3393, -11329, -18115, -23062, -25667, -25667, -23062, -18115,
+	-11329, -3393, 4886, 12670, 19169, 23721, 25865, 25383,
+	22325, 17000, 9950, 1889, -6363, -13969, -20157, -24299,
+	-25975, -25013, -21512, -15828, -8536, -378, 7818, 15220,
+	21078, 24796, 25997, 24558, 20627, 14601, 7094, -1133,
+	-9246, -16420, -21927, -25209, -25931, -24021, -19672, -13326,
+	-5627, 2642, 10643, 17565, 22703, 25536, 25777, 23401,
+	18650, 12005, 4142, -4141, -12005, -18649, -23401, -25777,
+	-25536, -22703, -17565, -10644, -2642, 5627, 13325, 19671},
+	{
+// Carrier 5 Phase 4
+	26000, 24680, 20855, 14912, 7456, -756, -8892, -16126,
+	-21722, -25114, -25956, -24163, -19917, -13649, -5996, 2266,
+	10298, 17284, 22516, 25462, 25824, 23564, 18911, 12339,
+	4514, -3768, -11668, -18384, -23234, -25725, -25605, -22885,
+	-17842, -10988, -3018, 5257, 12999, 19422, 23873, 25901,
+	25299, 22129, 16712, 9599, 1511, -6729, -14287, -20394,
+	-24431, -25988, -24907, -21298, -15526, -8178, 0, 8178,
+	15526, 21297, 24907, 25989, 24432, 20394, 14287, 6729,
+	-1511, -9599, -16712, -22128, -25299, -25901, -23873, -19422,
+	-13000, -5257, 3018, 10987, 17842, 22885, 25604, 25725,
+	23234, 18384, 11668, 3768, -4514, -12339, -18911, -23563,
+	-25824, -25462, -22516, -17284, -10298, -2266, 5995, 13649,
+	19917, 24162, 25956, 25114, 21722, 16126, 8892, 756,
+	-7456, -14912, -20855, -24680, -26000, -24680, -20855, -14913,
+	-7457, 755, 8892, 16125, 21722, 25114, 25956, 24163,
+	19917, 13649, 5996, -2265, -10297, -17284, -22516, -25462,
+	-25824, -23564, -18911, -12339, -4515, 3767, 11668, 18384,
+	23234, 25725, 25605, 22885, 17842, 10988, 3018, -5257,
+	-12999, -19422, -23873, -25901, -25299, -22129, -16712, -9599,
+	-1512, 6729, 14286, 20394, 24431, 25988, 24907, 21298,
+	15526, 8178, 0, -8177, -15525, -21297, -24907, -25989,
+	-24432, -20395, -14287, -6729, 1511, 9599, 16712, 22128,
+	25299, 25901, 23873, 19422, 13000, 5257, -3018, -10987,
+	-17842, -22885, -25604, -25725, -23234, -18385, -11669, -3768,
+	4514, 12339, 18911, 23563, 25824, 25462, 22516, 17284,
+	10298, 2266, -5995, -13649, -19916, -24162, -25955, -25114,
+	-21722, -16126, -8892, -756, 7456, 14912, 20854, 24680},
+	{
+// Carrier 5 Phase 5
+	24020, 19671, 13326, 5627, -2642, -10644, -17565, -22703,
+	-25536, -25777, -23401, -18650, -12005, -4142, 4141, 12005,
+	18650, 23401, 25777, 25536, 22703, 17565, 10644, 2642,
+	-5627, -13326, -19671, -24020, -25931, -25209, -21928, -16421,
+	-9246, -1134, 7093, 14601, 20627, 24558, 25997, 24796,
+	21078, 15221, 7818, -378, -8536, -15827, -21512, -25013,
+	-25975, -24300, -20158, -13969, -6363, 1888, 9949, 17000,
+	22325, 25383, 25865, 23721, 19169, 12671, 4886, -3393,
+	-11329, -18115, -23062, -25667, -25667, -23062, -18115, -11329,
+	-3393, 4886, 12671, 19169, 23721, 25865, 25383, 22325,
+	17000, 9949, 1889, -6363, -13969, -20158, -24300, -25975,
+	-25013, -21512, -15827, -8536, -378, 7818, 15221, 21078,
+	24796, 25997, 24558, 20627, 14601, 7094, -1133, -9246,
+	-16420, -21928, -25209, -25931, -24020, -19672, -13326, -5627,
+	2642, 10643, 17565, 22703, 25536, 25777, 23401, 18650,
+	12005, 4142, -4141, -12005, -18650, -23401, -25777, -25536,
+	-22703, -17565, -10644, -2642, 5627, 13325, 19671, 24020,
+	25931, 25209, 21928, 16421, 9247, 1134, -7093, -14601,
+	-20627, -24558, -25997, -24796, -21078, -15221, -7818, 377,
+	8535, 15827, 21512, 25013, 25975, 24300, 20158, 13970,
+	6363, -1888, -9949, -17000, -22325, -25383, -25865, -23721,
+	-19169, -12671, -4887, 3393, 11329, 18115, 23062, 25667,
+	25668, 23062, 18115, 11329, 3394, -4886, -12670, -19168,
+	-23721, -25865, -25383, -22325, -17000, -9950, -1889, 6362,
+	13969, 20157, 24299, 25975, 25013, 21512, 15828, 8536,
+	378, -7817, -15220, -21078, -24796, -25997, -24558, -20627,
+	-14601, -7094, 1133, 9246, 16420, 21927, 25209, 25931},
+	{
+// Carrier 5 Phase 6
+	18384, 11668, 3768, -4514, -12339, -18911, -23564, -25824,
+	-25462, -22516, -17284, -10298, -2266, 5995, 13649, 19917,
+	24163, 25956, 25114, 21722, 16126, 8892, 756, -7456,
+	-14912, -20855, -24680, -26000, -24680, -20855, -14913, -7456,
+	756, 8892, 16126, 21722, 25114, 25956, 24163, 19917,
+	13649, 5996, -2265, -10298, -17284, -22516, -25462, -25824,
+	-23564, -18911, -12339, -4514, 3768, 11668, 18384, 23234,
+	25725, 25605, 22885, 17842, 10988, 3018, -5257, -12999,
+	-19422, -23873, -25901, -25299, -22129, -16712, -9599, -1511,
+	6729, 14287, 20394, 24431, 25988, 24907, 21298, 15526,
+	8178, 0, -8178, -15526, -21297, -24907, -25989, -24432,
+	-20394, -14287, -6729, 1511, 9599, 16712, 22128, 25299,
+	25901, 23873, 19422, 13000, 5257, -3018, -10987, -17842,
+	-22885, -25604, -25725, -23234, -18384, -11668, -3768, 4514,
+	12339, 18911, 23563, 25824, 25462, 22516, 17284, 10298,
+	2266, -5995, -13649, -19917, -24162, -25955, -25114, -21722,
+	-16126, -8892, -756, 7456, 14912, 20855, 24680, 26000,
+	24680, 20855, 14913, 7457, -755, -8892, -16125, -21722,
+	-25114, -25956, -24163, -19917, -13649, -5996, 2265, 10297,
+	17284, 22516, 25462, 25824, 23564, 18911, 12339, 4515,
+	-3767, -11668, -18384, -23234, -25725, -25605, -22885, -17842,
+	-10988, -3018, 5257, 12999, 19422, 23873, 25901, 25299,
+	22129, 16712, 9599, 1512, -6728, -14286, -20394, -24431,
+	-25988, -24907, -21298, -15526, -8178, 0, 8177, 15525,
+	21297, 24907, 25989, 24432, 20395, 14287, 6729, -1511,
+	-9599, -16712, -22128, -25299, -25901, -23873, -19422, -13000,
+	-5258, 3018, 10987, 17841, 22885, 25604, 25725, 23234},
+	{
+// Carrier 5 Phase 7
+	9949, 1889, -6363, -13969, -20158, -24300, -25975, -25013,
+	-21512, -15827, -8536, -378, 7818, 15221, 21078, 24796,
+	25997, 24558, 20627, 14601, 7093, -1134, -9246, -16421,
+	-21928, -25209, -25931, -24020, -19672, -13326, -5627, 2642,
+	10644, 17565, 22703, 25536, 25777, 23401, 18650, 12005,
+	4142, -4141, -12005, -18650, -23401, -25777, -25536, -22703,
+	-17565, -10644, -2642, 5627, 13326, 19671, 24020, 25931,
+	25209, 21928, 16421, 9247, 1134, -7093, -14601, -20627,
+	-24558, -25997, -24796, -21078, -15221, -7818, 377, 8536,
+	15827, 21512, 25013, 25975, 24300, 20158, 13969, 6363,
+	-1888, -9949, -17000, -22325, -25383, -25865, -23721, -19169,
+	-12671, -4886, 3393, 11329, 18115, 23062, 25667, 25667,
+	23062, 18115, 11329, 3393, -4886, -12670, -19169, -23721,
+	-25865, -25383, -22325, -17000, -9949, -1889, 6363, 13969,
+	20157, 24300, 25975, 25013, 21512, 15827, 8536, 378,
+	-7818, -15220, -21078, -24796, -25997, -24558, -20627, -14601,
+	-7094, 1133, 9246, 16420, 21928, 25209, 25931, 24020,
+	19672, 13326, 5627, -2642, -10643, -17565, -22703, -25536,
+	-25777, -23401, -18650, -12005, -4142, 4141, 12005, 18650,
+	23401, 25777, 25536, 22703, 17565, 10644, 2642, -5627,
+	-13325, -19671, -24020, -25931, -25209, -21928, -16421, -9247,
+	-1134, 7093, 14601, 20626, 24558, 25997, 24796, 21079,
+	15221, 7818, -377, -8535, -15827, -21512, -25013, -25975,
+	-24300, -20158, -13970, -6363, 1888, 9949, 17000, 22325,
+	25383, 25865, 23721, 19169, 12671, 4887, -3393, -11329,
+	-18115, -23062, -25667, -25668, -23062, -18115, -11329, -3394,
+	4886, 12670, 19168, 23721, 25865, 25383, 22325, 17000},
+	},{{
+
+// Carrier 6 Phase 0
+	0, 8892, 16712, 22516, 25605, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892,
+	0, 8892, 16712, 22516, 25604, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892,
+	0, 8892, 16712, 22516, 25604, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892},
+	{
+// Carrier 6 Phase 1
+	9949, 17565, 23062, 25777, 25383, 21928, 15827, 7818,
+	-1134, -9949, -17565, -23062, -25777, -25383, -21928, -15827,
+	-7818, 1134, 9949, 17565, 23062, 25777, 25383, 21928,
+	15827, 7818, -1134, -9949, -17565, -23062, -25777, -25383,
+	-21928, -15827, -7818, 1134, 9949, 17565, 23062, 25777,
+	25383, 21928, 15827, 7818, -1134, -9949, -17565, -23062,
+	-25777, -25383, -21928, -15827, -7818, 1134, 9949, 17565,
+	23062, 25777, 25383, 21928, 15827, 7818, -1134, -9949,
+	-17565, -23062, -25777, -25383, -21928, -15827, -7818, 1134,
+	9949, 17565, 23062, 25777, 25383, 21928, 15827, 7818,
+	-1134, -9949, -17565, -23062, -25777, -25383, -21928, -15827,
+	-7818, 1134, 9949, 17565, 23062, 25777, 25383, 21928,
+	15827, 7818, -1134, -9949, -17565, -23062, -25777, -25383,
+	-21928, -15827, -7818, 1134, 9949, 17565, 23062, 25777,
+	25383, 21928, 15827, 7818, -1134, -9949, -17565, -23062,
+	-25777, -25383, -21928, -15827, -7818, 1134, 9949, 17565,
+	23062, 25777, 25383, 21928, 15827, 7818, -1134, -9949,
+	-17565, -23062, -25777, -25383, -21928, -15827, -7818, 1133,
+	9949, 17565, 23062, 25777, 25383, 21928, 15827, 7818,
+	-1133, -9949, -17565, -23062, -25777, -25383, -21928, -15827,
+	-7818, 1133, 9949, 17565, 23062, 25777, 25383, 21928,
+	15827, 7818, -1133, -9949, -17565, -23062, -25777, -25383,
+	-21928, -15827, -7818, 1133, 9949, 17565, 23062, 25777,
+	25383, 21928, 15827, 7818, -1133, -9949, -17565, -23062,
+	-25777, -25383, -21928, -15827, -7818, 1133, 9949, 17565,
+	23062, 25777, 25383, 21928, 15827, 7818, -1133, -9949,
+	-17565, -23062, -25777, -25383, -21928, -15827, -7818, 1133},
+	{
+// Carrier 6 Phase 2
+	18384, 23564, 25901, 25114, 21297, 14912, 6729, -2266,
+	-10988, -18384, -23563, -25901, -25114, -21297, -14913, -6729,
+	2266, 10988, 18384, 23563, 25901, 25114, 21297, 14913,
+	6729, -2266, -10988, -18384, -23563, -25901, -25114, -21297,
+	-14913, -6729, 2266, 10988, 18384, 23563, 25901, 25114,
+	21297, 14913, 6729, -2266, -10988, -18384, -23563, -25901,
+	-25114, -21297, -14913, -6729, 2266, 10988, 18384, 23563,
+	25901, 25114, 21297, 14913, 6729, -2266, -10988, -18384,
+	-23563, -25901, -25114, -21297, -14913, -6729, 2265, 10988,
+	18384, 23563, 25901, 25114, 21297, 14913, 6729, -2265,
+	-10988, -18384, -23563, -25901, -25114, -21297, -14913, -6729,
+	2265, 10988, 18384, 23563, 25901, 25114, 21297, 14913,
+	6729, -2265, -10988, -18384, -23563, -25901, -25114, -21297,
+	-14913, -6729, 2265, 10988, 18384, 23563, 25901, 25114,
+	21297, 14913, 6729, -2265, -10987, -18384, -23563, -25901,
+	-25114, -21298, -14913, -6729, 2265, 10987, 18384, 23563,
+	25901, 25114, 21298, 14913, 6729, -2265, -10987, -18384,
+	-23563, -25901, -25114, -21298, -14913, -6729, 2265, 10987,
+	18384, 23563, 25901, 25114, 21298, 14913, 6729, -2265,
+	-10987, -18384, -23563, -25901, -25114, -21298, -14913, -6729,
+	2265, 10987, 18384, 23563, 25901, 25114, 21298, 14913,
+	6729, -2265, -10987, -18384, -23563, -25901, -25114, -21298,
+	-14913, -6729, 2265, 10987, 18384, 23563, 25901, 25114,
+	21298, 14913, 6729, -2265, -10987, -18384, -23563, -25901,
+	-25114, -21298, -14913, -6729, 2265, 10987, 18384, 23563,
+	25901, 25114, 21298, 14913, 6729, -2265, -10987, -18384,
+	-23563, -25901, -25114, -21298, -14913, -6729, 2265, 10987},
+	{
+// Carrier 6 Phase 3
+	24020, 25975, 24796, 20627, 13969, 5627, -3393, -12005,
+	-19169, -24020, -25975, -24796, -20627, -13969, -5627, 3393,
+	12005, 19169, 24020, 25975, 24796, 20627, 13969, 5627,
+	-3393, -12005, -19169, -24020, -25975, -24796, -20627, -13969,
+	-5627, 3393, 12005, 19169, 24020, 25975, 24796, 20627,
+	13969, 5627, -3393, -12005, -19169, -24020, -25975, -24796,
+	-20627, -13969, -5627, 3393, 12005, 19169, 24020, 25975,
+	24796, 20627, 13969, 5627, -3393, -12005, -19169, -24020,
+	-25975, -24796, -20627, -13969, -5627, 3393, 12005, 19169,
+	24020, 25975, 24796, 20627, 13969, 5627, -3393, -12005,
+	-19169, -24020, -25975, -24796, -20627, -13969, -5627, 3393,
+	12005, 19169, 24020, 25975, 24796, 20627, 13969, 5627,
+	-3393, -12005, -19169, -24020, -25975, -24796, -20627, -13969,
+	-5627, 3393, 12005, 19169, 24020, 25975, 24796, 20627,
+	13969, 5627, -3393, -12005, -19169, -24020, -25975, -24796,
+	-20627, -13969, -5627, 3393, 12005, 19169, 24020, 25975,
+	24796, 20627, 13969, 5627, -3393, -12005, -19169, -24020,
+	-25975, -24796, -20627, -13969, -5627, 3393, 12005, 19169,
+	24020, 25975, 24796, 20627, 13969, 5627, -3393, -12005,
+	-19169, -24020, -25975, -24796, -20627, -13969, -5627, 3393,
+	12005, 19169, 24020, 25975, 24796, 20627, 13969, 5627,
+	-3393, -12005, -19169, -24020, -25975, -24796, -20627, -13969,
+	-5627, 3393, 12005, 19169, 24020, 25975, 24796, 20627,
+	13969, 5627, -3393, -12005, -19169, -24020, -25975, -24796,
+	-20627, -13969, -5627, 3393, 12005, 19169, 24020, 25975,
+	24796, 20627, 13969, 5627, -3393, -12005, -19169, -24020,
+	-25975, -24796, -20627, -13969, -5627, 3393, 12005, 19169},
+	{
+// Carrier 6 Phase 4
+	26000, 24432, 19917, 13000, 4514, -4514, -12999, -19917,
+	-24432, -26000, -24432, -19917, -13000, -4514, 4514, 12999,
+	19917, 24432, 26000, 24432, 19917, 13000, 4514, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4514,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4514, -4514, -12999, -19917, -24431, -26000, -24432, -19917,
+	-13000, -4514, 4514, 12999, 19917, 24431, 26000, 24432,
+	19917, 13000, 4514, -4514, -12999, -19917, -24431, -26000,
+	-24432, -19917, -13000, -4514, 4514, 12999, 19917, 24431,
+	26000, 24432, 19917, 13000, 4514, -4514, -12999, -19917,
+	-24431, -26000, -24432, -19917, -13000, -4514, 4514, 12999,
+	19917, 24431, 26000, 24432, 19917, 13000, 4514, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4514,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4515, -4514, -12999, -19917, -24431, -26000, -24432, -19917,
+	-13000, -4515, 4514, 12999, 19917, 24431, 26000, 24432,
+	19917, 13000, 4515, -4514, -12999, -19917, -24431, -26000,
+	-24432, -19917, -13000, -4515, 4514, 12999, 19917, 24431,
+	26000, 24432, 19917, 13000, 4515, -4514, -12999, -19917,
+	-24431, -26000, -24432, -19917, -13000, -4515, 4514, 12999,
+	19917, 24431, 26000, 24432, 19917, 13000, 4515, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4515,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4515, -4514, -12999, -19916, -24431, -26000, -24432, -19917,
+	-13000, -4515, 4514, 12999, 19916, 24431, 26000, 24432,
+	19917, 13000, 4515, -4514, -12999, -19916, -24431, -26000,
+	-24432, -19917, -13000, -4515, 4514, 12999, 19916, 24431},
+	{
+// Carrier 6 Phase 5
+	24020, 19169, 12005, 3393, -5627, -13969, -20627, -24796,
+	-25975, -24020, -19169, -12005, -3393, 5627, 13969, 20627,
+	24796, 25975, 24020, 19169, 12005, 3393, -5627, -13969,
+	-20627, -24796, -25975, -24020, -19169, -12005, -3393, 5627,
+	13969, 20627, 24796, 25975, 24020, 19169, 12005, 3393,
+	-5627, -13969, -20627, -24796, -25975, -24020, -19169, -12005,
+	-3393, 5627, 13969, 20627, 24796, 25975, 24020, 19169,
+	12005, 3393, -5627, -13969, -20627, -24796, -25975, -24020,
+	-19169, -12005, -3393, 5627, 13969, 20627, 24796, 25975,
+	24020, 19169, 12005, 3393, -5627, -13969, -20627, -24796,
+	-25975, -24020, -19169, -12005, -3393, 5627, 13969, 20627,
+	24796, 25975, 24020, 19169, 12005, 3393, -5627, -13969,
+	-20627, -24796, -25975, -24020, -19169, -12005, -3393, 5627,
+	13969, 20627, 24796, 25975, 24020, 19169, 12005, 3393,
+	-5627, -13969, -20627, -24796, -25975, -24020, -19169, -12005,
+	-3393, 5627, 13969, 20627, 24796, 25975, 24020, 19169,
+	12005, 3393, -5627, -13969, -20627, -24796, -25975, -24020,
+	-19169, -12005, -3393, 5627, 13969, 20627, 24796, 25975,
+	24020, 19169, 12005, 3393, -5627, -13969, -20627, -24796,
+	-25975, -24020, -19169, -12005, -3393, 5627, 13969, 20627,
+	24796, 25975, 24020, 19169, 12005, 3393, -5627, -13969,
+	-20627, -24796, -25975, -24020, -19169, -12005, -3393, 5627,
+	13969, 20627, 24796, 25975, 24020, 19169, 12005, 3393,
+	-5627, -13969, -20627, -24796, -25975, -24020, -19169, -12005,
+	-3393, 5627, 13969, 20627, 24796, 25975, 24020, 19169,
+	12005, 3393, -5627, -13969, -20627, -24796, -25975, -24020,
+	-19169, -12005, -3393, 5627, 13969, 20627, 24796, 25975},
+	{
+// Carrier 6 Phase 6
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25114, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25114, 25901, 23564,
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25114, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25114, 25901, 23564,
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25113, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25113, 25901, 23564},
+	{
+// Carrier 6 Phase 7
+	9949, 1134, -7818, -15827, -21928, -25383, -25777, -23062,
+	-17565, -9949, -1134, 7818, 15827, 21928, 25383, 25777,
+	23062, 17565, 9949, 1134, -7818, -15827, -21928, -25383,
+	-25777, -23062, -17565, -9949, -1134, 7818, 15827, 21928,
+	25383, 25777, 23062, 17565, 9949, 1134, -7818, -15827,
+	-21928, -25383, -25777, -23062, -17565, -9949, -1134, 7818,
+	15827, 21928, 25383, 25777, 23062, 17565, 9949, 1134,
+	-7818, -15827, -21928, -25383, -25777, -23062, -17565, -9949,
+	-1134, 7818, 15827, 21928, 25383, 25777, 23062, 17565,
+	9949, 1134, -7818, -15827, -21928, -25383, -25777, -23062,
+	-17565, -9949, -1134, 7818, 15827, 21928, 25383, 25777,
+	23062, 17565, 9949, 1134, -7818, -15827, -21928, -25383,
+	-25777, -23062, -17565, -9949, -1134, 7818, 15827, 21928,
+	25383, 25777, 23062, 17565, 9949, 1134, -7818, -15827,
+	-21928, -25383, -25777, -23062, -17565, -9949, -1134, 7818,
+	15827, 21928, 25383, 25777, 23062, 17565, 9949, 1134,
+	-7818, -15827, -21928, -25383, -25777, -23062, -17565, -9949,
+	-1134, 7818, 15827, 21928, 25383, 25777, 23062, 17565,
+	9949, 1134, -7818, -15827, -21928, -25383, -25777, -23062,
+	-17565, -9949, -1134, 7818, 15827, 21928, 25383, 25777,
+	23062, 17565, 9949, 1134, -7818, -15827, -21928, -25383,
+	-25777, -23062, -17565, -9949, -1134, 7818, 15827, 21928,
+	25383, 25777, 23062, 17565, 9949, 1134, -7818, -15827,
+	-21928, -25383, -25777, -23062, -17565, -9950, -1134, 7818,
+	15827, 21928, 25383, 25777, 23062, 17565, 9950, 1134,
+	-7818, -15827, -21928, -25383, -25777, -23062, -17565, -9950,
+	-1134, 7818, 15827, 21928, 25383, 25777, 23062, 17565},
+	},{{
+
+// Carrier 7 Phase 0
+	0, 9599, 17842, 23564, 25956, 24680, 19917, 12339,
+	3018, -6729, -15526, -22129, -25605, -25462, -21722, -14912,
+	-5996, 3768, 13000, 20394, 24907, 25901, 23234, 17284,
+	8892, -756, -10298, -18384, -23873, -25989, -24431, -19422,
+	-11668, -2266, 7456, 16126, 22516, 25725, 25299, 21297,
+	14287, 5257, -4514, -13649, -20855, -25114, -25824, -22885,
+	-16712, -8178, 1511, 10988, 18911, 24163, 26000, 24163,
+	18911, 10988, 1511, -8178, -16712, -22885, -25824, -25114,
+	-20855, -13649, -4514, 5257, 14287, 21298, 25299, 25725,
+	22516, 16126, 7456, -2266, -11668, -19422, -24432, -25988,
+	-23873, -18384, -10297, -756, 8892, 17284, 23234, 25901,
+	24907, 20394, 12999, 3768, -5996, -14913, -21722, -25462,
+	-25604, -22128, -15526, -6729, 3018, 12339, 19917, 24680,
+	25956, 23563, 17842, 9599, 0, -9599, -17842, -23564,
+	-25956, -24680, -19917, -12339, -3018, 6729, 15526, 22129,
+	25605, 25462, 21722, 14912, 5995, -3768, -13000, -20394,
+	-24907, -25901, -23234, -17284, -8892, 756, 10298, 18384,
+	23873, 25989, 24431, 19422, 11668, 2265, -7457, -16126,
+	-22516, -25725, -25299, -21297, -14287, -5257, 4515, 13649,
+	20855, 25114, 25824, 22885, 16712, 8177, -1512, -10988,
+	-18911, -24163, -26000, -24162, -18911, -10987, -1511, 8178,
+	16712, 22885, 25824, 25113, 20855, 13649, 4514, -5257,
+	-14287, -21298, -25299, -25725, -22516, -16125, -7456, 2266,
+	11669, 19422, 24432, 25988, 23873, 18384, 10297, 755,
+	-8892, -17284, -23234, -25901, -24907, -20394, -12999, -3767,
+	5996, 14913, 21722, 25462, 25604, 22128, 15525, 6728,
+	-3018, -12339, -19917, -24680, -25955, -23563, -17842, -9599},
+	{
+// Carrier 7 Phase 1
+	9949, 18115, 23721, 25975, 24558, 19671, 12005, 2642,
+	-7093, -15827, -22325, -25667, -25383, -21512, -14601, -5627,
+	4142, 13326, 20627, 25013, 25865, 23062, 17000, 8536,
+	-1134, -10644, -18650, -24020, -25997, -24300, -19169, -11329,
+	-1889, 7818, 16421, 22703, 25777, 25209, 21078, 13969,
+	4886, -4886, -13969, -21078, -25209, -25777, -22703, -16420,
+	-7818, 1889, 11329, 19169, 24300, 25997, 24020, 18650,
+	10644, 1134, -8536, -17000, -23062, -25865, -25013, -20627,
+	-13326, -4141, 5627, 14601, 21512, 25383, 25667, 22325,
+	15827, 7093, -2642, -12005, -19672, -24558, -25975, -23721,
+	-18115, -9949, -378, 9247, 17565, 23401, 25931, 24796,
+	20158, 12671, 3393, -6363, -15221, -21928, -25536, -25536,
+	-21928, -15221, -6363, 3393, 12671, 20158, 24796, 25931,
+	23401, 17565, 9246, -378, -9949, -18115, -23721, -25975,
+	-24558, -19671, -12005, -2642, 7094, 15827, 22325, 25667,
+	25383, 21512, 14601, 5627, -4142, -13326, -20627, -25013,
+	-25865, -23062, -17000, -8536, 1134, 10644, 18650, 24020,
+	25997, 24300, 19169, 11329, 1888, -7818, -16421, -22703,
+	-25777, -25209, -21078, -13969, -4886, 4887, 13969, 21078,
+	25209, 25777, 22703, 16420, 7818, -1889, -11329, -19169,
+	-24300, -25997, -24020, -18650, -10643, -1133, 8536, 17000,
+	23062, 25865, 25013, 20627, 13325, 4141, -5627, -14601,
+	-21512, -25383, -25667, -22325, -15827, -7093, 2642, 12005,
+	19672, 24558, 25975, 23721, 18115, 9949, 377, -9247,
+	-17565, -23401, -25931, -24796, -20157, -12670, -3393, 6363,
+	15221, 21928, 25536, 25536, 21928, 15220, 6363, -3394,
+	-12671, -20158, -24796, -25931, -23401, -17565, -9246, 378},
+	{
+// Carrier 7 Phase 2
+	18384, 23873, 25989, 24432, 19422, 11668, 2266, -7456,
+	-16126, -22516, -25725, -25299, -21297, -14287, -5257, 4514,
+	13649, 20855, 25114, 25824, 22885, 16712, 8178, -1511,
+	-10988, -18911, -24163, -26000, -24163, -18911, -10988, -1511,
+	8178, 16712, 22885, 25824, 25114, 20855, 13649, 4514,
+	-5257, -14287, -21297, -25299, -25725, -22516, -16126, -7456,
+	2266, 11668, 19422, 24432, 25988, 23873, 18384, 10298,
+	756, -8892, -17284, -23234, -25901, -24907, -20394, -12999,
+	-3768, 5996, 14913, 21722, 25462, 25604, 22128, 15526,
+	6729, -3018, -12339, -19917, -24680, -25956, -23563, -17842,
+	-9599, 0, 9599, 17842, 23564, 25956, 24680, 19917,
+	12339, 3018, -6729, -15526, -22129, -25605, -25462, -21722,
+	-14912, -5995, 3768, 13000, 20394, 24907, 25901, 23234,
+	17284, 8892, -756, -10298, -18384, -23873, -25989, -24431,
+	-19422, -11668, -2265, 7457, 16126, 22516, 25725, 25299,
+	21297, 14287, 5257, -4515, -13649, -20855, -25114, -25824,
+	-22885, -16712, -8177, 1511, 10988, 18911, 24163, 26000,
+	24162, 18911, 10987, 1511, -8178, -16712, -22885, -25824,
+	-25114, -20855, -13649, -4514, 5257, 14287, 21298, 25299,
+	25725, 22516, 16125, 7456, -2266, -11668, -19422, -24432,
+	-25988, -23873, -18384, -10297, -755, 8892, 17284, 23234,
+	25901, 24907, 20394, 12999, 3767, -5996, -14913, -21722,
+	-25462, -25604, -22128, -15525, -6729, 3018, 12339, 19917,
+	24680, 25955, 23563, 17842, 9599, 0, -9599, -17842,
+	-23564, -25956, -24680, -19916, -12339, -3018, 6729, 15526,
+	22129, 25605, 25462, 21722, 14912, 5995, -3768, -13000,
+	-20395, -24907, -25901, -23234, -17284, -8892, 756, 10298},
+	{
+// Carrier 7 Phase 3
+	24020, 25997, 24300, 19169, 11329, 1889, -7818, -16421,
+	-22703, -25777, -25209, -21078, -13969, -4886, 4886, 13969,
+	21078, 25209, 25777, 22703, 16421, 7818, -1889, -11329,
+	-19169, -24300, -25997, -24020, -18650, -10644, -1134, 8536,
+	17000, 23062, 25865, 25013, 20627, 13326, 4141, -5627,
+	-14601, -21512, -25383, -25667, -22325, -15827, -7093, 2642,
+	12005, 19672, 24558, 25975, 23721, 18115, 9949, 378,
+	-9246, -17565, -23401, -25931, -24796, -20158, -12671, -3393,
+	6363, 15221, 21928, 25536, 25536, 21928, 15221, 6363,
+	-3393, -12671, -20158, -24796, -25931, -23401, -17565, -9246,
+	378, 9949, 18115, 23721, 25975, 24558, 19671, 12005,
+	2642, -7093, -15827, -22325, -25667, -25383, -21512, -14601,
+	-5627, 4142, 13326, 20627, 25013, 25865, 23062, 17000,
+	8536, -1134, -10644, -18650, -24020, -25997, -24300, -19169,
+	-11329, -1888, 7818, 16421, 22703, 25777, 25209, 21078,
+	13969, 4886, -4886, -13969, -21078, -25209, -25777, -22703,
+	-16420, -7818, 1889, 11329, 19169, 24300, 25997, 24020,
+	18650, 10644, 1133, -8536, -17000, -23062, -25865, -25013,
+	-20627, -13325, -4141, 5627, 14601, 21512, 25383, 25667,
+	22325, 15827, 7093, -2642, -12005, -19672, -24558, -25975,
+	-23721, -18115, -9949, -377, 9247, 17565, 23401, 25931,
+	24796, 20157, 12670, 3393, -6363, -15221, -21928, -25536,
+	-25536, -21928, -15220, -6363, 3393, 12671, 20158, 24796,
+	25931, 23401, 17565, 9246, -378, -9950, -18115, -23721,
+	-25975, -24558, -19671, -12005, -2642, 7094, 15828, 22325,
+	25668, 25383, 21512, 14601, 5627, -4142, -13326, -20627,
+	-25013, -25865, -23062, -17000, -8535, 1134, 10644, 18650},
+	{
+// Carrier 7 Phase 4
+	26000, 24163, 18911, 10988, 1511, -8178, -16712, -22885,
+	-25824, -25114, -20855, -13649, -4514, 5257, 14287, 21297,
+	25299, 25725, 22516, 16126, 7456, -2266, -11668, -19422,
+	-24432, -25989, -23873, -18384, -10298, -756, 8892, 17284,
+	23234, 25901, 24907, 20394, 12999, 3768, -5996, -14913,
+	-21722, -25462, -25604, -22128, -15526, -6729, 3018, 12339,
+	19917, 24680, 25956, 23563, 17842, 9599, 0, -9599,
+	-17842, -23564, -25956, -24680, -19917, -12339, -3018, 6729,
+	15526, 22129, 25605, 25462, 21722, 14912, 5995, -3768,
+	-13000, -20394, -24907, -25901, -23234, -17284, -8892, 756,
+	10298, 18384, 23873, 25989, 24431, 19422, 11668, 2265,
+	-7457, -16126, -22516, -25725, -25299, -21297, -14287, -5257,
+	4515, 13649, 20855, 25114, 25824, 22885, 16712, 8177,
+	-1511, -10988, -18911, -24163, -26000, -24162, -18911, -10987,
+	-1511, 8178, 16712, 22885, 25824, 25114, 20855, 13649,
+	4514, -5257, -14287, -21298, -25299, -25725, -22516, -16125,
+	-7456, 2266, 11668, 19422, 24432, 25988, 23873, 18384,
+	10297, 755, -8892, -17284, -23234, -25901, -24907, -20394,
+	-12999, -3767, 5996, 14913, 21722, 25462, 25604, 22128,
+	15525, 6729, -3018, -12339, -19917, -24680, -25955, -23563,
+	-17842, -9599, 0, 9599, 17842, 23564, 25956, 24680,
+	19916, 12339, 3018, -6729, -15526, -22129, -25605, -25462,
+	-21722, -14912, -5995, 3768, 13000, 20394, 24907, 25901,
+	23234, 17284, 8892, -756, -10298, -18384, -23873, -25989,
+	-24431, -19422, -11668, -2265, 7457, 16126, 22516, 25725,
+	25299, 21297, 14286, 5257, -4515, -13649, -20855, -25114,
+	-25824, -22885, -16712, -8177, 1512, 10988, 18911, 24163},
+	{
+// Carrier 7 Phase 5
+	24020, 18650, 10644, 1134, -8536, -17000, -23062, -25865,
+	-25013, -20627, -13326, -4141, 5627, 14601, 21512, 25383,
+	25667, 22325, 15827, 7093, -2642, -12005, -19672, -24558,
+	-25975, -23721, -18115, -9949, -378, 9246, 17565, 23401,
+	25931, 24796, 20158, 12671, 3393, -6363, -15221, -21928,
+	-25536, -25536, -21928, -15221, -6363, 3393, 12671, 20158,
+	24796, 25931, 23401, 17565, 9246, -378, -9949, -18115,
+	-23721, -25975, -24558, -19671, -12005, -2642, 7093, 15827,
+	22325, 25667, 25383, 21512, 14601, 5627, -4142, -13326,
+	-20627, -25013, -25865, -23062, -17000, -8536, 1134, 10644,
+	18650, 24020, 25997, 24300, 19169, 11329, 1888, -7818,
+	-16421, -22703, -25777, -25209, -21078, -13969, -4886, 4886,
+	13969, 21078, 25209, 25777, 22703, 16420, 7818, -1889,
+	-11329, -19169, -24300, -25997, -24020, -18650, -10644, -1133,
+	8536, 17000, 23062, 25865, 25013, 20627, 13325, 4141,
+	-5627, -14601, -21512, -25383, -25667, -22325, -15827, -7093,
+	2642, 12005, 19672, 24558, 25975, 23721, 18115, 9949,
+	377, -9247, -17565, -23401, -25931, -24796, -20157, -12670,
+	-3393, 6363, 15221, 21928, 25536, 25536, 21928, 15220,
+	6363, -3393, -12671, -20158, -24796, -25931, -23401, -17565,
+	-9246, 378, 9950, 18115, 23721, 25975, 24558, 19671,
+	12005, 2642, -7094, -15828, -22325, -25668, -25383, -21512,
+	-14601, -5627, 4142, 13326, 20627, 25013, 25865, 23062,
+	17000, 8535, -1134, -10644, -18650, -24020, -25997, -24299,
+	-19168, -11329, -1888, 7818, 16421, 22703, 25777, 25209,
+	21078, 13969, 4886, -4887, -13970, -21079, -25209, -25777,
+	-22703, -16420, -7818, 1889, 11329, 19169, 24300, 25997},
+	{
+// Carrier 7 Phase 6
+	18384, 10298, 756, -8892, -17284, -23234, -25901, -24907,
+	-20394, -12999, -3768, 5996, 14913, 21722, 25462, 25604,
+	22129, 15526, 6729, -3018, -12339, -19917, -24680, -25956,
+	-23563, -17842, -9599, 0, 9599, 17842, 23564, 25956,
+	24680, 19917, 12339, 3018, -6729, -15526, -22129, -25605,
+	-25462, -21722, -14912, -5995, 3768, 13000, 20394, 24907,
+	25901, 23234, 17284, 8892, -756, -10298, -18384, -23873,
+	-25989, -24431, -19422, -11668, -2265, 7456, 16126, 22516,
+	25725, 25299, 21297, 14287, 5257, -4514, -13649, -20855,
+	-25114, -25824, -22885, -16712, -8178, 1511, 10988, 18911,
+	24163, 26000, 24162, 18911, 10987, 1511, -8178, -16712,
+	-22885, -25824, -25114, -20855, -13649, -4514, 5257, 14287,
+	21298, 25299, 25725, 22516, 16125, 7456, -2266, -11668,
+	-19422, -24432, -25988, -23873, -18384, -10297, -756, 8892,
+	17284, 23234, 25901, 24907, 20394, 12999, 3768, -5996,
+	-14913, -21722, -25462, -25604, -22128, -15525, -6729, 3018,
+	12339, 19917, 24680, 25955, 23563, 17842, 9599, 0,
+	-9599, -17842, -23564, -25956, -24680, -19916, -12339, -3018,
+	6729, 15526, 22129, 25605, 25462, 21722, 14912, 5995,
+	-3768, -13000, -20394, -24907, -25901, -23234, -17284, -8892,
+	756, 10298, 18384, 23873, 25989, 24431, 19422, 11668,
+	2265, -7457, -16126, -22516, -25725, -25299, -21297, -14286,
+	-5257, 4515, 13649, 20855, 25114, 25824, 22885, 16712,
+	8177, -1512, -10988, -18911, -24163, -26000, -24162, -18911,
+	-10987, -1511, 8178, 16712, 22885, 25824, 25113, 20854,
+	13649, 4514, -5257, -14287, -21298, -25299, -25725, -22516,
+	-16125, -7456, 2266, 11669, 19422, 24432, 25988, 23873},
+	{
+// Carrier 7 Phase 7
+	9949, 378, -9246, -17565, -23401, -25931, -24796, -20158,
+	-12671, -3393, 6363, 15221, 21928, 25536, 25536, 21928,
+	15221, 6363, -3393, -12671, -20158, -24796, -25931, -23401,
+	-17565, -9246, 378, 9949, 18115, 23721, 25975, 24558,
+	19671, 12005, 2642, -7093, -15827, -22325, -25667, -25383,
+	-21512, -14601, -5627, 4142, 13326, 20627, 25013, 25865,
+	23062, 17000, 8536, -1134, -10644, -18650, -24020, -25997,
+	-24300, -19169, -11329, -1889, 7818, 16421, 22703, 25777,
+	25209, 21078, 13969, 4886, -4886, -13969, -21078, -25209,
+	-25777, -22703, -16420, -7818, 1889, 11329, 19169, 24300,
+	25997, 24020, 18650, 10644, 1133, -8536, -17000, -23062,
+	-25865, -25013, -20627, -13325, -4141, 5627, 14601, 21512,
+	25383, 25667, 22325, 15827, 7093, -2642, -12005, -19672,
+	-24558, -25975, -23721, -18115, -9949, -377, 9247, 17565,
+	23401, 25931, 24796, 20157, 12670, 3393, -6363, -15221,
+	-21928, -25536, -25536, -21928, -15220, -6363, 3393, 12671,
+	20158, 24796, 25931, 23401, 17565, 9246, -378, -9949,
+	-18115, -23721, -25975, -24558, -19671, -12005, -2642, 7094,
+	15827, 22325, 25667, 25383, 21512, 14601, 5627, -4142,
+	-13326, -20627, -25013, -25865, -23062, -17000, -8535, 1134,
+	10644, 18650, 24020, 25997, 24299, 19169, 11329, 1888,
+	-7818, -16421, -22703, -25777, -25209, -21078, -13969, -4886,
+	4887, 13970, 21078, 25209, 25777, 22703, 16420, 7818,
+	-1889, -11329, -19169, -24300, -25997, -24020, -18649, -10643,
+	-1133, 8536, 17000, 23062, 25865, 25013, 20626, 13325,
+	4141, -5627, -14601, -21512, -25383, -25667, -22325, -15827,
+	-7093, 2642, 12005, 19672, 24558, 25975, 23721, 18115},
+	},{{
+
+// Carrier 8 Phase 0
+	0, 10298, 18911, 24432, 25956, 23234, 16712, 7456,
+	-3018, -12999, -20855, -25299, -25605, -21722, -14287, -4514,
+	5995, 15526, 22516, 25824, 24907, 19917, 11668, 1511,
+	-8892, -17842, -23873, -26000, -23873, -17842, -8892, 1511,
+	11668, 19917, 24907, 25824, 22516, 15526, 5996, -4514,
+	-14287, -21722, -25604, -25299, -20855, -13000, -3018, 7456,
+	16712, 23234, 25956, 24432, 18911, 10298, 0, -10297,
+	-18911, -24431, -25956, -23234, -16712, -7457, 3018, 12999,
+	20855, 25299, 25605, 21722, 14287, 4514, -5995, -15526,
+	-22516, -25824, -24907, -19917, -11668, -1511, 8892, 17842,
+	23873, 26000, 23873, 17842, 8892, -1511, -11668, -19917,
+	-24907, -25824, -22516, -15526, -5996, 4514, 14287, 21722,
+	25604, 25299, 20855, 13000, 3018, -7456, -16712, -23234,
+	-25956, -24432, -18911, -10298, 0, 10297, 18911, 24431,
+	25956, 23234, 16712, 7457, -3018, -12999, -20855, -25299,
+	-25605, -21722, -14287, -4515, 5995, 15525, 22516, 25824,
+	24907, 19917, 11669, 1512, -8892, -17842, -23873, -26000,
+	-23873, -17842, -8892, 1511, 11668, 19916, 24907, 25824,
+	22516, 15526, 5996, -4514, -14286, -21722, -25604, -25299,
+	-20855, -13000, -3018, 7456, 16712, 23234, 25955, 24432,
+	18911, 10298, 0, -10297, -18911, -24431, -25956, -23234,
+	-16712, -7457, 3018, 12999, 20854, 25299, 25605, 21722,
+	14287, 4515, -5995, -15525, -22516, -25824, -24907, -19917,
+	-11669, -1512, 8892, 17842, 23873, 26000, 23873, 17842,
+	8892, -1511, -11668, -19916, -24907, -25824, -22516, -15526,
+	-5996, 4514, 14286, 21722, 25604, 25299, 20855, 13000,
+	3018, -7456, -16712, -23234, -25955, -24432, -18912, -10298},
+	{
+// Carrier 8 Phase 1
+	9949, 18650, 24300, 25975, 23401, 17000, 7818, -2642,
+	-12671, -20627, -25209, -25667, -21928, -14601, -4886, 5627,
+	15221, 22325, 25777, 25013, 20158, 12005, 1889, -8536,
+	-17565, -23721, -25997, -24020, -18115, -9246, 1134, 11329,
+	19671, 24796, 25865, 22703, 15827, 6363, -4141, -13969,
+	-21512, -25536, -25383, -21078, -13326, -3393, 7093, 16420,
+	23062, 25931, 24558, 19169, 10644, 378, -9949, -18650,
+	-24300, -25975, -23401, -17000, -7818, 2642, 12671, 20627,
+	25209, 25667, 21928, 14601, 4886, -5627, -15221, -22325,
+	-25777, -25013, -20158, -12005, -1889, 8536, 17565, 23721,
+	25997, 24020, 18115, 9247, -1133, -11329, -19671, -24796,
+	-25865, -22703, -15827, -6363, 4141, 13969, 21512, 25536,
+	25383, 21078, 13326, 3393, -7093, -16420, -23062, -25931,
+	-24558, -19169, -10644, -378, 9949, 18650, 24300, 25975,
+	23401, 17000, 7818, -2642, -12670, -20627, -25209, -25667,
+	-21928, -14601, -4887, 5627, 15220, 22325, 25777, 25013,
+	20158, 12005, 1889, -8536, -17565, -23721, -25997, -24020,
+	-18115, -9247, 1133, 11329, 19671, 24796, 25865, 22703,
+	15828, 6363, -4141, -13969, -21512, -25536, -25383, -21078,
+	-13326, -3393, 7093, 16420, 23062, 25931, 24558, 19169,
+	10644, 378, -9949, -18650, -24299, -25975, -23401, -17000,
+	-7818, 2642, 12670, 20626, 25209, 25668, 21928, 14601,
+	4887, -5627, -15220, -22325, -25777, -25013, -20158, -12005,
+	-1889, 8535, 17565, 23721, 25997, 24021, 18115, 9247,
+	-1133, -11329, -19671, -24796, -25865, -22703, -15828, -6363,
+	4141, 13969, 21512, 25536, 25383, 21079, 13326, 3394,
+	-7093, -16420, -23062, -25931, -24558, -19169, -10644, -378},
+	{
+// Carrier 8 Phase 2
+	18384, 24163, 25989, 23564, 17284, 8178, -2266, -12339,
+	-20394, -25114, -25725, -22129, -14913, -5257, 5257, 14912,
+	22129, 25725, 25114, 20394, 12339, 2266, -8178, -17284,
+	-23563, -25989, -24163, -18384, -9599, 756, 10988, 19422,
+	24680, 25901, 22885, 16126, 6729, -3768, -13649, -21297,
+	-25462, -25462, -21298, -13649, -3768, 6729, 16126, 22885,
+	25901, 24680, 19422, 10988, 756, -9599, -18384, -24162,
+	-25989, -23564, -17284, -8178, 2265, 12339, 20394, 25114,
+	25725, 22129, 14913, 5257, -5257, -14912, -22128, -25725,
+	-25114, -20394, -12339, -2266, 8178, 17284, 23563, 25988,
+	24163, 18384, 9599, -756, -10987, -19422, -24680, -25901,
+	-22885, -16126, -6729, 3768, 13649, 21297, 25462, 25462,
+	21298, 13649, 3768, -6729, -16125, -22885, -25901, -24680,
+	-19422, -10988, -756, 9599, 18384, 24162, 25989, 23564,
+	17284, 8178, -2265, -12339, -20394, -25114, -25725, -22129,
+	-14913, -5257, 5257, 14912, 22128, 25725, 25114, 20394,
+	12339, 2266, -8177, -17284, -23563, -25988, -24163, -18384,
+	-9599, 755, 10987, 19422, 24680, 25901, 22885, 16126,
+	6729, -3767, -13649, -21297, -25462, -25462, -21298, -13649,
+	-3768, 6728, 16125, 22885, 25901, 24680, 19422, 10988,
+	756, -9599, -18384, -24162, -25989, -23564, -17284, -8178,
+	2265, 12339, 20394, 25113, 25725, 22129, 14913, 5258,
+	-5257, -14912, -22128, -25725, -25114, -20395, -12339, -2266,
+	8177, 17284, 23563, 25988, 24163, 18385, 9599, -755,
+	-10987, -19422, -24680, -25901, -22885, -16126, -6729, 3767,
+	13649, 21297, 25462, 25462, 21298, 13649, 3768, -6728,
+	-16125, -22885, -25901, -24680, -19422, -10988, -756, 9598},
+	{
+// Carrier 8 Phase 3
+	24020, 25997, 23721, 17565, 8536, -1889, -12005, -20158,
+	-25013, -25777, -22325, -15221, -5627, 4886, 14601, 21928,
+	25667, 25209, 20627, 12671, 2642, -7818, -17000, -23401,
+	-25975, -24300, -18650, -9949, 378, 10644, 19169, 24558,
+	25931, 23062, 16421, 7093, -3393, -13326, -21078, -25383,
+	-25536, -21512, -13969, -4142, 6363, 15827, 22703, 25865,
+	24796, 19672, 11329, 1134, -9246, -18115, -24020, -25997,
+	-23721, -17565, -8536, 1888, 12005, 20158, 25013, 25777,
+	22325, 15221, 5627, -4886, -14601, -21928, -25667, -25209,
+	-20627, -12671, -2642, 7818, 17000, 23401, 25975, 24300,
+	18650, 9949, -377, -10644, -19169, -24558, -25931, -23062,
+	-16421, -7094, 3393, 13325, 21078, 25383, 25536, 21512,
+	13969, 4142, -6363, -15827, -22703, -25865, -24796, -19672,
+	-11329, -1134, 9246, 18115, 24020, 25997, 23721, 17565,
+	8536, -1888, -12005, -20157, -25013, -25777, -22325, -15221,
+	-5627, 4886, 14601, 21928, 25667, 25209, 20627, 12671,
+	2642, -7818, -17000, -23401, -25975, -24300, -18650, -9950,
+	377, 10643, 19169, 24558, 25931, 23062, 16421, 7094,
+	-3393, -13325, -21078, -25383, -25536, -21512, -13970, -4142,
+	6363, 15827, 22703, 25865, 24796, 19672, 11329, 1134,
+	-9246, -18115, -24020, -25997, -23721, -17565, -8536, 1888,
+	12005, 20157, 25013, 25777, 22325, 15221, 5627, -4886,
+	-14601, -21927, -25667, -25209, -20627, -12671, -2642, 7817,
+	17000, 23401, 25975, 24300, 18650, 9950, -377, -10643,
+	-19168, -24558, -25931, -23062, -16421, -7094, 3393, 13325,
+	21078, 25383, 25536, 21512, 13970, 4142, -6362, -15827,
+	-22703, -25865, -24796, -19672, -11330, -1134, 9246, 18115},
+	{
+// Carrier 8 Phase 4
+	26000, 23873, 17842, 8892, -1511, -11668, -19917, -24907,
+	-25824, -22516, -15526, -5996, 4514, 14287, 21722, 25604,
+	25299, 20855, 13000, 3018, -7456, -16712, -23234, -25956,
+	-24432, -18911, -10298, 0, 10298, 18911, 24431, 25956,
+	23234, 16712, 7456, -3018, -12999, -20855, -25299, -25605,
+	-21722, -14287, -4514, 5995, 15526, 22516, 25824, 24907,
+	19917, 11668, 1511, -8892, -17842, -23873, -26000, -23873,
+	-17842, -8892, 1511, 11668, 19917, 24907, 25824, 22516,
+	15526, 5996, -4514, -14287, -21722, -25604, -25299, -20855,
+	-13000, -3018, 7456, 16712, 23234, 25956, 24432, 18911,
+	10298, 0, -10297, -18911, -24431, -25956, -23234, -16712,
+	-7457, 3018, 12999, 20855, 25299, 25605, 21722, 14287,
+	4515, -5995, -15525, -22516, -25824, -24907, -19917, -11668,
+	-1511, 8892, 17842, 23873, 26000, 23873, 17842, 8892,
+	-1511, -11668, -19917, -24907, -25824, -22516, -15526, -5996,
+	4514, 14287, 21722, 25604, 25299, 20855, 13000, 3018,
+	-7456, -16712, -23234, -25955, -24432, -18911, -10298, 0,
+	10297, 18911, 24431, 25956, 23234, 16712, 7457, -3018,
+	-12999, -20855, -25299, -25605, -21722, -14287, -4515, 5995,
+	15525, 22516, 25824, 24907, 19917, 11669, 1512, -8892,
+	-17842, -23873, -26000, -23873, -17842, -8892, 1511, 11668,
+	19916, 24907, 25824, 22516, 15526, 5996, -4514, -14286,
+	-21722, -25604, -25299, -20855, -13000, -3018, 7456, 16712,
+	23234, 25955, 24432, 18911, 10298, 0, -10297, -18911,
+	-24431, -25956, -23234, -16712, -7457, 3018, 12999, 20854,
+	25299, 25605, 21722, 14287, 4515, -5995, -15525, -22516,
+	-25824, -24907, -19917, -11669, -1512, 8892, 17841, 23873},
+	{
+// Carrier 8 Phase 5
+	24020, 18115, 9246, -1134, -11329, -19671, -24796, -25865,
+	-22703, -15827, -6363, 4141, 13969, 21512, 25536, 25383,
+	21078, 13326, 3393, -7093, -16421, -23062, -25931, -24558,
+	-19169, -10644, -378, 9949, 18650, 24300, 25975, 23401,
+	17000, 7818, -2642, -12671, -20627, -25209, -25667, -21928,
+	-14601, -4886, 5627, 15221, 22325, 25777, 25013, 20158,
+	12005, 1889, -8536, -17565, -23721, -25997, -24020, -18115,
+	-9247, 1133, 11329, 19671, 24796, 25865, 22703, 15827,
+	6363, -4141, -13969, -21512, -25536, -25383, -21078, -13326,
+	-3393, 7093, 16420, 23062, 25931, 24558, 19169, 10644,
+	378, -9949, -18650, -24300, -25975, -23401, -17000, -7818,
+	2642, 12670, 20627, 25209, 25667, 21928, 14601, 4886,
+	-5627, -15221, -22325, -25777, -25013, -20158, -12005, -1889,
+	8536, 17565, 23721, 25997, 24020, 18115, 9247, -1133,
+	-11329, -19671, -24796, -25865, -22703, -15827, -6363, 4141,
+	13969, 21512, 25536, 25383, 21078, 13326, 3393, -7093,
+	-16420, -23062, -25931, -24558, -19169, -10644, -378, 9949,
+	18650, 24299, 25975, 23401, 17000, 7818, -2642, -12670,
+	-20627, -25209, -25668, -21928, -14601, -4887, 5627, 15220,
+	22325, 25777, 25013, 20158, 12005, 1889, -8535, -17565,
+	-23721, -25997, -24020, -18115, -9247, 1133, 11329, 19671,
+	24796, 25865, 22703, 15828, 6363, -4141, -13969, -21512,
+	-25536, -25383, -21079, -13326, -3394, 7093, 16420, 23062,
+	25931, 24558, 19169, 10644, 378, -9949, -18649, -24299,
+	-25975, -23401, -17000, -7818, 2642, 12670, 20626, 25209,
+	25668, 21928, 14601, 4887, -5627, -15220, -22325, -25777,
+	-25013, -20158, -12005, -1889, 8535, 17565, 23721, 25997},
+	{
+// Carrier 8 Phase 6
+	18384, 9599, -756, -10988, -19422, -24680, -25901, -22885,
+	-16126, -6729, 3768, 13649, 21297, 25462, 25462, 21297,
+	13649, 3768, -6729, -16126, -22885, -25901, -24680, -19422,
+	-10988, -756, 9599, 18384, 24163, 25989, 23564, 17284,
+	8178, -2265, -12339, -20394, -25114, -25725, -22129, -14913,
+	-5257, 5257, 14912, 22128, 25725, 25114, 20394, 12339,
+	2266, -8178, -17284, -23563, -25988, -24163, -18384, -9599,
+	756, 10987, 19422, 24680, 25901, 22885, 16126, 6729,
+	-3768, -13649, -21297, -25462, -25462, -21298, -13649, -3768,
+	6729, 16125, 22885, 25901, 24680, 19422, 10988, 756,
+	-9599, -18384, -24162, -25989, -23564, -17284, -8178, 2265,
+	12339, 20394, 25114, 25725, 22129, 14913, 5257, -5257,
+	-14912, -22128, -25725, -25114, -20394, -12339, -2266, 8177,
+	17284, 23563, 25988, 24163, 18384, 9599, -755, -10987,
+	-19422, -24680, -25901, -22885, -16126, -6729, 3767, 13649,
+	21297, 25462, 25462, 21298, 13649, 3768, -6729, -16125,
+	-22885, -25901, -24680, -19422, -10988, -756, 9599, 18384,
+	24162, 25989, 23564, 17284, 8178, -2265, -12339, -20394,
+	-25113, -25725, -22129, -14913, -5257, 5257, 14912, 22128,
+	25725, 25114, 20395, 12339, 2266, -8177, -17284, -23563,
+	-25988, -24163, -18385, -9599, 755, 10987, 19422, 24680,
+	25901, 22885, 16126, 6729, -3767, -13649, -21297, -25462,
+	-25462, -21298, -13649, -3768, 6728, 16125, 22885, 25901,
+	24680, 19422, 10988, 756, -9599, -18384, -24162, -25989,
+	-23564, -17284, -8178, 2265, 12339, 20394, 25113, 25725,
+	22129, 14913, 5258, -5257, -14912, -22128, -25725, -25114,
+	-20395, -12340, -2266, 8177, 17284, 23563, 25988, 24163},
+	{
+// Carrier 8 Phase 7
+	9949, -378, -10644, -19169, -24558, -25931, -23062, -16421,
+	-7093, 3393, 13326, 21078, 25383, 25536, 21512, 13969,
+	4142, -6363, -15827, -22703, -25865, -24796, -19672, -11329,
+	-1134, 9246, 18115, 24020, 25997, 23721, 17565, 8536,
+	-1889, -12005, -20158, -25013, -25777, -22325, -15221, -5627,
+	4886, 14601, 21928, 25667, 25209, 20627, 12671, 2642,
+	-7818, -17000, -23401, -25975, -24300, -18650, -9949, 378,
+	10644, 19169, 24558, 25931, 23062, 16421, 7093, -3393,
+	-13325, -21078, -25383, -25536, -21512, -13969, -4142, 6363,
+	15827, 22703, 25865, 24796, 19672, 11329, 1134, -9246,
+	-18115, -24020, -25997, -23721, -17565, -8536, 1888, 12005,
+	20157, 25013, 25777, 22325, 15221, 5627, -4886, -14601,
+	-21928, -25667, -25209, -20627, -12671, -2642, 7818, 17000,
+	23401, 25975, 24300, 18650, 9949, -377, -10643, -19169,
+	-24558, -25931, -23062, -16421, -7094, 3393, 13325, 21078,
+	25383, 25536, 21512, 13970, 4142, -6363, -15827, -22703,
+	-25865, -24796, -19672, -11329, -1134, 9246, 18115, 24020,
+	25997, 23721, 17565, 8536, -1888, -12005, -20157, -25013,
+	-25777, -22325, -15221, -5627, 4886, 14601, 21928, 25667,
+	25209, 20627, 12671, 2642, -7818, -17000, -23401, -25975,
+	-24300, -18650, -9950, 377, 10643, 19168, 24558, 25931,
+	23062, 16421, 7094, -3393, -13325, -21078, -25383, -25536,
+	-21512, -13970, -4142, 6362, 15827, 22703, 25865, 24796,
+	19672, 11329, 1134, -9246, -18115, -24020, -25997, -23721,
+	-17565, -8536, 1888, 12005, 20157, 25013, 25777, 22325,
+	15221, 5627, -4886, -14601, -21927, -25667, -25209, -20627,
+	-12671, -2642, 7817, 17000, 23401, 25975, 24300, 18650},
+	},{{
+
+// Carrier 9 Phase 0
+	0, 10988, 19917, 25114, 25605, 21297, 13000, 2266,
+	-8892, -18384, -24432, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2266, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10988, -19917, -25114,
+	-25605, -21297, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4514, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988,
+	0, 10988, 19917, 25114, 25605, 21297, 13000, 2266,
+	-8892, -18384, -24431, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2265, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10987, -19917, -25114,
+	-25605, -21298, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4514, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988,
+	0, 10987, 19917, 25114, 25605, 21298, 13000, 2266,
+	-8892, -18384, -24431, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2265, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10987, -19917, -25114,
+	-25605, -21298, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4515, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988},
+	{
+// Carrier 9 Phase 1
+	9949, 19169, 24796, 25777, 21928, 13969, 3393, -7818,
+	-17565, -24020, -25975, -23062, -15827, -5627, 5627, 15827,
+	23062, 25975, 24020, 17565, 7818, -3393, -13969, -21928,
+	-25777, -24796, -19169, -9949, 1134, 12005, 20627, 25383,
+	25383, 20627, 12005, 1134, -9949, -19169, -24796, -25777,
+	-21928, -13969, -3393, 7818, 17565, 24020, 25975, 23062,
+	15827, 5627, -5627, -15827, -23062, -25975, -24020, -17565,
+	-7818, 3393, 13969, 21928, 25777, 24796, 19169, 9949,
+	-1134, -12005, -20627, -25383, -25383, -20627, -12005, -1134,
+	9949, 19169, 24796, 25777, 21928, 13969, 3393, -7818,
+	-17565, -24020, -25975, -23062, -15827, -5627, 5627, 15827,
+	23062, 25975, 24020, 17565, 7818, -3393, -13969, -21928,
+	-25777, -24796, -19169, -9949, 1134, 12005, 20627, 25383,
+	25383, 20627, 12005, 1134, -9949, -19169, -24796, -25777,
+	-21928, -13969, -3393, 7818, 17565, 24020, 25975, 23062,
+	15827, 5627, -5627, -15827, -23062, -25975, -24020, -17565,
+	-7818, 3393, 13969, 21928, 25777, 24796, 19169, 9949,
+	-1133, -12005, -20627, -25383, -25383, -20627, -12005, -1134,
+	9949, 19169, 24796, 25777, 21928, 13969, 3393, -7818,
+	-17565, -24020, -25975, -23062, -15827, -5627, 5627, 15827,
+	23062, 25975, 24020, 17565, 7818, -3393, -13969, -21928,
+	-25777, -24796, -19169, -9949, 1133, 12005, 20627, 25383,
+	25383, 20627, 12005, 1134, -9949, -19169, -24796, -25777,
+	-21928, -13969, -3393, 7818, 17565, 24020, 25975, 23062,
+	15827, 5627, -5627, -15827, -23062, -25975, -24020, -17565,
+	-7818, 3393, 13969, 21928, 25777, 24796, 19169, 9949,
+	-1133, -12005, -20627, -25383, -25383, -20627, -12005, -1134},
+	{
+// Carrier 9 Phase 2
+	18384, 24432, 25901, 22516, 14912, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2266, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10988, 19917, 25114, 25605,
+	21297, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4514, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10988, -19917, -25114, -25605, -21297, -13000, -2266, 8892,
+	18384, 24431, 25901, 22516, 14913, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2265, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10987, 19917, 25114, 25605,
+	21298, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4514, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10987, -19917, -25114, -25605, -21298, -13000, -2266, 8892,
+	18384, 24431, 25901, 22516, 14913, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2265, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10987, 19917, 25114, 25605,
+	21298, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4515, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10987, -19917, -25114, -25605, -21298, -13000, -2266, 8892},
+	{
+// Carrier 9 Phase 3
+	24020, 25975, 23062, 15827, 5627, -5627, -15827, -23062,
+	-25975, -24020, -17565, -7818, 3393, 13969, 21928, 25777,
+	24796, 19169, 9949, -1134, -12005, -20627, -25383, -25383,
+	-20627, -12005, -1134, 9949, 19169, 24796, 25777, 21928,
+	13969, 3393, -7818, -17565, -24020, -25975, -23062, -15827,
+	-5627, 5627, 15827, 23062, 25975, 24020, 17565, 7818,
+	-3393, -13969, -21928, -25777, -24796, -19169, -9949, 1134,
+	12005, 20627, 25383, 25383, 20627, 12005, 1134, -9949,
+	-19169, -24796, -25777, -21928, -13969, -3393, 7818, 17565,
+	24020, 25975, 23062, 15827, 5627, -5627, -15827, -23062,
+	-25975, -24020, -17565, -7818, 3393, 13969, 21928, 25777,
+	24796, 19169, 9949, -1134, -12005, -20627, -25383, -25383,
+	-20627, -12005, -1134, 9949, 19169, 24796, 25777, 21928,
+	13969, 3393, -7818, -17565, -24020, -25975, -23062, -15827,
+	-5627, 5627, 15827, 23062, 25975, 24020, 17565, 7818,
+	-3393, -13969, -21928, -25777, -24796, -19169, -9949, 1133,
+	12005, 20627, 25383, 25383, 20627, 12005, 1134, -9949,
+	-19169, -24796, -25777, -21928, -13969, -3393, 7818, 17565,
+	24020, 25975, 23062, 15827, 5627, -5627, -15827, -23062,
+	-25975, -24020, -17565, -7818, 3393, 13969, 21928, 25777,
+	24796, 19169, 9949, -1133, -12005, -20627, -25383, -25383,
+	-20627, -12005, -1134, 9949, 19169, 24796, 25777, 21928,
+	13969, 3393, -7818, -17565, -24020, -25975, -23062, -15827,
+	-5627, 5627, 15827, 23062, 25975, 24020, 17565, 7818,
+	-3393, -13969, -21928, -25777, -24796, -19169, -9949, 1133,
+	12005, 20627, 25383, 25383, 20627, 12005, 1134, -9949,
+	-19169, -24796, -25777, -21928, -13969, -3393, 7818, 17565},
+	{
+// Carrier 9 Phase 4
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2266, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10988, -19917, -25114, -25605, -21297,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4514, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2266,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10988,
+	19917, 25114, 25605, 21297, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4514, 6729, 16712, 23563,
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2265, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10987, -19917, -25114, -25605, -21298,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4514, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2265,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10987,
+	19917, 25114, 25605, 21298, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4514, 6729, 16712, 23563,
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2265, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10987, -19917, -25114, -25605, -21298,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4515, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2265,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10987,
+	19917, 25114, 25605, 21298, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4515, 6729, 16712, 23563},
+	{
+// Carrier 9 Phase 5
+	24020, 17565, 7818, -3393, -13969, -21928, -25777, -24796,
+	-19169, -9949, 1134, 12005, 20627, 25383, 25383, 20627,
+	12005, 1134, -9949, -19169, -24796, -25777, -21928, -13969,
+	-3393, 7818, 17565, 24020, 25975, 23062, 15827, 5627,
+	-5627, -15827, -23062, -25975, -24020, -17565, -7818, 3393,
+	13969, 21928, 25777, 24796, 19169, 9949, -1134, -12005,
+	-20627, -25383, -25383, -20627, -12005, -1134, 9949, 19169,
+	24796, 25777, 21928, 13969, 3393, -7818, -17565, -24020,
+	-25975, -23062, -15827, -5627, 5627, 15827, 23062, 25975,
+	24020, 17565, 7818, -3393, -13969, -21928, -25777, -24796,
+	-19169, -9949, 1134, 12005, 20627, 25383, 25383, 20627,
+	12005, 1134, -9949, -19169, -24796, -25777, -21928, -13969,
+	-3393, 7818, 17565, 24020, 25975, 23062, 15827, 5627,
+	-5627, -15827, -23062, -25975, -24020, -17565, -7818, 3393,
+	13969, 21928, 25777, 24796, 19169, 9949, -1133, -12005,
+	-20627, -25383, -25383, -20627, -12005, -1134, 9949, 19169,
+	24796, 25777, 21928, 13969, 3393, -7818, -17565, -24020,
+	-25975, -23062, -15827, -5627, 5627, 15827, 23062, 25975,
+	24020, 17565, 7818, -3393, -13969, -21928, -25777, -24796,
+	-19169, -9949, 1133, 12005, 20627, 25383, 25383, 20627,
+	12005, 1134, -9949, -19169, -24796, -25777, -21928, -13969,
+	-3393, 7818, 17565, 24020, 25975, 23062, 15827, 5627,
+	-5627, -15827, -23062, -25975, -24020, -17565, -7818, 3393,
+	13969, 21928, 25777, 24796, 19169, 9949, -1133, -12005,
+	-20627, -25383, -25383, -20627, -12005, -1134, 9949, 19169,
+	24796, 25777, 21928, 13969, 3393, -7818, -17565, -24020,
+	-25975, -23062, -15827, -5627, 5627, 15827, 23062, 25975},
+	{
+// Carrier 9 Phase 6
+	18384, 8892, -2266, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10988, 19917, 25114, 25605, 21297, 13000,
+	2266, -8892, -18384, -24432, -25901, -22516, -14913, -4514,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2266, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10988, -19917,
+	-25114, -25605, -21297, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4514, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432,
+	18384, 8892, -2265, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10988, 19917, 25114, 25605, 21297, 13000,
+	2266, -8892, -18384, -24431, -25901, -22516, -14913, -4514,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2265, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10987, -19917,
+	-25114, -25605, -21298, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4514, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432,
+	18384, 8892, -2265, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10987, 19917, 25114, 25605, 21298, 13000,
+	2266, -8892, -18384, -24431, -25901, -22516, -14913, -4515,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2265, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10987, -19917,
+	-25114, -25605, -21298, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4515, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432},
+	{
+// Carrier 9 Phase 7
+	9949, -1134, -12005, -20627, -25383, -25383, -20627, -12005,
+	-1134, 9949, 19169, 24796, 25777, 21928, 13969, 3393,
+	-7818, -17565, -24020, -25975, -23062, -15827, -5627, 5627,
+	15827, 23062, 25975, 24020, 17565, 7818, -3393, -13969,
+	-21928, -25777, -24796, -19169, -9949, 1134, 12005, 20627,
+	25383, 25383, 20627, 12005, 1134, -9949, -19169, -24796,
+	-25777, -21928, -13969, -3393, 7818, 17565, 24020, 25975,
+	23062, 15827, 5627, -5627, -15827, -23062, -25975, -24020,
+	-17565, -7818, 3393, 13969, 21928, 25777, 24796, 19169,
+	9949, -1134, -12005, -20627, -25383, -25383, -20627, -12005,
+	-1134, 9949, 19169, 24796, 25777, 21928, 13969, 3393,
+	-7818, -17565, -24020, -25975, -23062, -15827, -5627, 5627,
+	15827, 23062, 25975, 24020, 17565, 7818, -3393, -13969,
+	-21928, -25777, -24796, -19169, -9949, 1134, 12005, 20627,
+	25383, 25383, 20627, 12005, 1134, -9949, -19169, -24796,
+	-25777, -21928, -13969, -3393, 7818, 17565, 24020, 25975,
+	23062, 15827, 5627, -5627, -15827, -23062, -25975, -24020,
+	-17565, -7818, 3393, 13969, 21928, 25777, 24796, 19169,
+	9949, -1133, -12005, -20627, -25383, -25383, -20627, -12005,
+	-1134, 9949, 19169, 24796, 25777, 21928, 13969, 3393,
+	-7818, -17565, -24020, -25975, -23062, -15827, -5627, 5627,
+	15827, 23062, 25975, 24020, 17565, 7818, -3393, -13969,
+	-21928, -25777, -24796, -19169, -9949, 1133, 12005, 20627,
+	25383, 25383, 20627, 12005, 1134, -9949, -19169, -24796,
+	-25777, -21928, -13969, -3393, 7818, 17565, 24020, 25975,
+	23062, 15827, 5627, -5627, -15827, -23062, -25975, -24020,
+	-17565, -7818, 3393, 13969, 21928, 25777, 24796, 19169},
+	},{{
+
+// Carrier 10 Phase 0
+	0, 11668, 20855, 25605, 24907, 18911, 8892, -3018,
+	-14287, -22516, -25956, -23873, -16712, -5996, 5996, 16712,
+	23873, 25956, 22516, 14287, 3018, -8892, -18911, -24907,
+	-25604, -20855, -11668, 0, 11668, 20855, 25605, 24907,
+	18911, 8892, -3018, -14287, -22516, -25956, -23873, -16712,
+	-5995, 5996, 16712, 23873, 25956, 22516, 14287, 3018,
+	-8892, -18911, -24907, -25604, -20855, -11668, 0, 11668,
+	20855, 25605, 24907, 18911, 8892, -3018, -14287, -22516,
+	-25956, -23873, -16712, -5995, 5996, 16712, 23873, 25956,
+	22516, 14287, 3018, -8892, -18911, -24907, -25604, -20855,
+	-11668, 0, 11668, 20855, 25605, 24907, 18911, 8892,
+	-3018, -14287, -22516, -25956, -23873, -16712, -5995, 5996,
+	16712, 23873, 25956, 22516, 14287, 3018, -8892, -18911,
+	-24907, -25604, -20855, -11668, 0, 11668, 20855, 25605,
+	24907, 18911, 8892, -3018, -14287, -22516, -25956, -23873,
+	-16712, -5995, 5996, 16712, 23873, 25956, 22516, 14287,
+	3018, -8892, -18911, -24907, -25604, -20855, -11668, 0,
+	11668, 20855, 25605, 24907, 18911, 8892, -3018, -14287,
+	-22516, -25956, -23873, -16712, -5995, 5996, 16712, 23873,
+	25956, 22516, 14287, 3018, -8892, -18911, -24907, -25604,
+	-20855, -11668, 0, 11668, 20855, 25605, 24907, 18911,
+	8892, -3018, -14287, -22516, -25956, -23873, -16712, -5995,
+	5996, 16712, 23873, 25955, 22516, 14287, 3018, -8892,
+	-18911, -24907, -25604, -20855, -11668, 0, 11669, 20855,
+	25605, 24907, 18911, 8892, -3018, -14287, -22516, -25956,
+	-23873, -16712, -5995, 5996, 16712, 23873, 25955, 22516,
+	14287, 3018, -8892, -18911, -24907, -25604, -20855, -11668},
+	{
+// Carrier 10 Phase 1
+	9949, 19671, 25209, 25383, 20158, 10644, -1134, -12671,
+	-21512, -25777, -24558, -18115, -7818, 4141, 15221, 23062,
+	25997, 23401, 15827, 4886, -7093, -17565, -24300, -25865,
+	-21928, -13326, -1889, 9949, 19672, 25209, 25383, 20158,
+	10644, -1134, -12671, -21512, -25777, -24558, -18115, -7818,
+	4142, 15221, 23062, 25997, 23401, 15827, 4886, -7093,
+	-17565, -24300, -25865, -21928, -13326, -1889, 9949, 19672,
+	25209, 25383, 20158, 10644, -1134, -12671, -21512, -25777,
+	-24558, -18115, -7818, 4142, 15221, 23062, 25997, 23401,
+	15827, 4886, -7093, -17565, -24300, -25865, -21928, -13326,
+	-1889, 9949, 19672, 25209, 25383, 20158, 10644, -1134,
+	-12671, -21512, -25777, -24558, -18115, -7818, 4142, 15221,
+	23062, 25997, 23401, 15827, 4886, -7093, -17565, -24300,
+	-25865, -21928, -13325, -1888, 9949, 19672, 25209, 25383,
+	20158, 10644, -1134, -12671, -21512, -25777, -24558, -18115,
+	-7818, 4142, 15221, 23062, 25997, 23401, 15827, 4886,
+	-7093, -17565, -24300, -25865, -21928, -13325, -1888, 9949,
+	19672, 25209, 25383, 20158, 10644, -1134, -12671, -21512,
+	-25777, -24558, -18115, -7818, 4142, 15221, 23062, 25997,
+	23401, 15827, 4886, -7094, -17565, -24300, -25865, -21928,
+	-13325, -1888, 9949, 19672, 25209, 25383, 20157, 10644,
+	-1134, -12671, -21512, -25777, -24558, -18115, -7818, 4142,
+	15221, 23062, 25997, 23401, 15827, 4886, -7094, -17565,
+	-24300, -25865, -21928, -13325, -1888, 9950, 19672, 25209,
+	25383, 20157, 10643, -1134, -12671, -21512, -25777, -24558,
+	-18115, -7818, 4142, 15221, 23062, 25997, 23401, 15827,
+	4886, -7094, -17565, -24300, -25865, -21928, -13325, -1888},
+	{
+// Carrier 10 Phase 2
+	18384, 24680, 25725, 21297, 12339, 756, -10988, -20394,
+	-25462, -25114, -19422, -9599, 2266, 13649, 22129, 25901,
+	24163, 17284, 6729, -5257, -16126, -23564, -25989, -22885,
+	-14912, -3768, 8178, 18384, 24680, 25725, 21297, 12339,
+	756, -10988, -20394, -25462, -25114, -19422, -9599, 2266,
+	13649, 22129, 25901, 24163, 17284, 6729, -5257, -16126,
+	-23564, -25988, -22885, -14912, -3768, 8178, 18384, 24680,
+	25725, 21297, 12339, 756, -10988, -20394, -25462, -25114,
+	-19422, -9599, 2266, 13649, 22129, 25901, 24163, 17284,
+	6729, -5257, -16126, -23564, -25988, -22885, -14912, -3768,
+	8178, 18384, 24680, 25725, 21297, 12339, 756, -10988,
+	-20394, -25462, -25114, -19422, -9599, 2266, 13649, 22129,
+	25901, 24162, 17284, 6729, -5257, -16126, -23564, -25988,
+	-22885, -14912, -3768, 8178, 18384, 24680, 25725, 21297,
+	12339, 756, -10988, -20394, -25462, -25114, -19422, -9599,
+	2266, 13649, 22129, 25901, 24162, 17284, 6729, -5257,
+	-16126, -23564, -25988, -22885, -14912, -3768, 8178, 18384,
+	24680, 25725, 21297, 12339, 756, -10988, -20394, -25462,
+	-25114, -19422, -9599, 2266, 13649, 22129, 25901, 24162,
+	17284, 6729, -5257, -16126, -23564, -25988, -22885, -14912,
+	-3768, 8178, 18384, 24680, 25725, 21297, 12339, 755,
+	-10988, -20394, -25462, -25114, -19422, -9599, 2266, 13649,
+	22129, 25901, 24162, 17284, 6729, -5257, -16126, -23564,
+	-25988, -22885, -14912, -3767, 8178, 18384, 24680, 25725,
+	21297, 12339, 755, -10988, -20394, -25462, -25114, -19422,
+	-9599, 2266, 13649, 22129, 25901, 24162, 17284, 6729,
+	-5257, -16126, -23564, -25988, -22885, -14912, -3767, 8178},
+	{
+// Carrier 10 Phase 3
+	24020, 25931, 22325, 13969, 2642, -9246, -19169, -25013,
+	-25536, -20627, -11329, 378, 12005, 21078, 25667, 24796,
+	18650, 8536, -3393, -14601, -22703, -25975, -23721, -16421,
+	-5627, 6363, 17000, 24020, 25931, 22325, 13969, 2642,
+	-9246, -19169, -25013, -25536, -20627, -11329, 378, 12005,
+	21078, 25667, 24796, 18650, 8536, -3393, -14601, -22703,
+	-25975, -23721, -16420, -5627, 6363, 17000, 24020, 25931,
+	22325, 13969, 2642, -9246, -19169, -25013, -25536, -20627,
+	-11329, 378, 12005, 21078, 25667, 24796, 18650, 8536,
+	-3393, -14601, -22703, -25975, -23721, -16420, -5627, 6363,
+	17000, 24020, 25931, 22325, 13969, 2642, -9247, -19169,
+	-25013, -25536, -20627, -11329, 378, 12005, 21078, 25667,
+	24796, 18650, 8536, -3393, -14601, -22703, -25975, -23721,
+	-16420, -5627, 6363, 17000, 24020, 25931, 22325, 13969,
+	2642, -9247, -19169, -25013, -25536, -20627, -11329, 378,
+	12005, 21078, 25667, 24796, 18650, 8536, -3393, -14601,
+	-22703, -25975, -23721, -16420, -5627, 6363, 17000, 24020,
+	25931, 22325, 13969, 2642, -9247, -19169, -25013, -25536,
+	-20627, -11329, 378, 12005, 21078, 25667, 24796, 18650,
+	8536, -3393, -14601, -22703, -25975, -23721, -16420, -5627,
+	6363, 17000, 24020, 25931, 22325, 13969, 2642, -9247,
+	-19169, -25013, -25536, -20627, -11329, 378, 12005, 21078,
+	25667, 24796, 18650, 8536, -3393, -14601, -22703, -25975,
+	-23721, -16420, -5627, 6363, 17000, 24020, 25931, 22325,
+	13969, 2642, -9247, -19169, -25013, -25536, -20627, -11329,
+	378, 12005, 21078, 25668, 24796, 18650, 8535, -3393,
+	-14601, -22703, -25975, -23721, -16420, -5627, 6363, 17000},
+	{
+// Carrier 10 Phase 4
+	26000, 23234, 15526, 4514, -7456, -17842, -24432, -25824,
+	-21722, -12999, -1511, 10298, 19917, 25299, 25299, 19917,
+	10298, -1511, -13000, -21722, -25824, -24432, -17842, -7456,
+	4514, 15526, 23234, 26000, 23234, 15526, 4514, -7456,
+	-17842, -24432, -25824, -21722, -12999, -1511, 10298, 19917,
+	25299, 25299, 19917, 10298, -1511, -13000, -21722, -25824,
+	-24431, -17842, -7456, 4514, 15526, 23234, 26000, 23234,
+	15526, 4514, -7456, -17842, -24432, -25824, -21722, -12999,
+	-1511, 10298, 19917, 25299, 25299, 19917, 10297, -1511,
+	-13000, -21722, -25824, -24431, -17842, -7456, 4514, 15526,
+	23234, 26000, 23234, 15526, 4514, -7456, -17842, -24432,
+	-25824, -21722, -12999, -1511, 10298, 19917, 25299, 25299,
+	19917, 10297, -1511, -13000, -21722, -25824, -24431, -17842,
+	-7456, 4514, 15526, 23234, 26000, 23234, 15526, 4514,
+	-7457, -17842, -24432, -25824, -21722, -12999, -1511, 10298,
+	19917, 25299, 25299, 19917, 10297, -1511, -13000, -21722,
+	-25824, -24431, -17842, -7456, 4515, 15526, 23234, 26000,
+	23234, 15525, 4514, -7457, -17842, -24432, -25824, -21722,
+	-12999, -1511, 10298, 19917, 25299, 25299, 19917, 10297,
+	-1511, -13000, -21722, -25824, -24431, -17842, -7456, 4515,
+	15526, 23234, 26000, 23234, 15525, 4514, -7457, -17842,
+	-24432, -25824, -21722, -12999, -1511, 10298, 19917, 25299,
+	25299, 19917, 10297, -1512, -13000, -21722, -25824, -24431,
+	-17842, -7456, 4515, 15526, 23234, 26000, 23234, 15525,
+	4514, -7457, -17842, -24432, -25824, -21722, -12999, -1511,
+	10298, 19917, 25299, 25299, 19916, 10297, -1512, -13000,
+	-21722, -25824, -24431, -17842, -7456, 4515, 15526, 23234},
+	{
+// Carrier 10 Phase 5
+	24020, 17000, 6363, -5627, -16421, -23721, -25975, -22703,
+	-14601, -3393, 8536, 18650, 24796, 25667, 21078, 12005,
+	378, -11329, -20627, -25536, -25013, -19169, -9246, 2642,
+	13969, 22325, 25931, 24020, 17000, 6363, -5627, -16421,
+	-23721, -25975, -22703, -14601, -3393, 8536, 18650, 24796,
+	25667, 21078, 12005, 378, -11329, -20627, -25536, -25013,
+	-19169, -9246, 2642, 13969, 22325, 25931, 24020, 17000,
+	6363, -5627, -16421, -23721, -25975, -22703, -14601, -3393,
+	8536, 18650, 24796, 25667, 21078, 12005, 378, -11329,
+	-20627, -25536, -25013, -19169, -9246, 2642, 13969, 22325,
+	25931, 24020, 17000, 6363, -5627, -16421, -23721, -25975,
+	-22703, -14601, -3393, 8536, 18650, 24796, 25667, 21078,
+	12005, 378, -11329, -20627, -25536, -25013, -19169, -9246,
+	2642, 13969, 22325, 25931, 24020, 17000, 6363, -5627,
+	-16421, -23721, -25975, -22703, -14601, -3393, 8536, 18650,
+	24796, 25667, 21078, 12005, 377, -11329, -20627, -25536,
+	-25013, -19169, -9246, 2642, 13969, 22325, 25931, 24020,
+	17000, 6363, -5627, -16421, -23721, -25975, -22703, -14601,
+	-3393, 8536, 18650, 24796, 25667, 21078, 12005, 377,
+	-11329, -20627, -25536, -25013, -19169, -9246, 2642, 13969,
+	22325, 25931, 24020, 17000, 6363, -5627, -16421, -23721,
+	-25975, -22703, -14601, -3393, 8536, 18650, 24796, 25667,
+	21078, 12005, 377, -11329, -20627, -25536, -25013, -19169,
+	-9246, 2642, 13970, 22325, 25931, 24020, 17000, 6363,
+	-5627, -16421, -23721, -25975, -22703, -14601, -3393, 8536,
+	18650, 24796, 25667, 21078, 12005, 377, -11329, -20627,
+	-25536, -25013, -19169, -9246, 2642, 13970, 22325, 25931},
+	{
+// Carrier 10 Phase 6
+	18384, 8178, -3768, -14912, -22885, -25989, -23563, -16126,
+	-5257, 6729, 17284, 24163, 25901, 22129, 13649, 2266,
+	-9599, -19422, -25114, -25462, -20394, -10988, 756, 12339,
+	21297, 25725, 24680, 18384, 8178, -3768, -14913, -22885,
+	-25989, -23563, -16126, -5257, 6729, 17284, 24163, 25901,
+	22129, 13649, 2265, -9599, -19422, -25114, -25462, -20394,
+	-10988, 756, 12339, 21297, 25725, 24680, 18384, 8178,
+	-3768, -14913, -22885, -25989, -23563, -16126, -5257, 6729,
+	17284, 24163, 25901, 22128, 13649, 2265, -9599, -19422,
+	-25114, -25462, -20394, -10987, 756, 12339, 21298, 25725,
+	24680, 18384, 8178, -3768, -14913, -22885, -25989, -23563,
+	-16126, -5257, 6729, 17284, 24163, 25901, 22128, 13649,
+	2265, -9599, -19422, -25114, -25462, -20394, -10987, 756,
+	12339, 21298, 25725, 24680, 18384, 8178, -3768, -14913,
+	-22885, -25989, -23563, -16125, -5257, 6729, 17284, 24163,
+	25901, 22128, 13649, 2265, -9599, -19422, -25114, -25462,
+	-20394, -10987, 756, 12339, 21298, 25725, 24680, 18384,
+	8177, -3768, -14913, -22885, -25989, -23563, -16125, -5257,
+	6729, 17284, 24163, 25901, 22128, 13649, 2265, -9599,
+	-19422, -25114, -25462, -20394, -10987, 756, 12339, 21298,
+	25725, 24680, 18384, 8177, -3768, -14913, -22885, -25989,
+	-23563, -16125, -5257, 6729, 17284, 24163, 25901, 22128,
+	13649, 2265, -9599, -19422, -25114, -25462, -20394, -10987,
+	756, 12339, 21298, 25725, 24680, 18384, 8177, -3768,
+	-14913, -22885, -25989, -23563, -16125, -5257, 6729, 17284,
+	24163, 25901, 22128, 13649, 2265, -9599, -19422, -25114,
+	-25462, -20394, -10987, 756, 12339, 21298, 25725, 24680},
+	{
+// Carrier 10 Phase 7
+	9949, -1889, -13326, -21928, -25865, -24300, -17565, -7093,
+	4886, 15827, 23401, 25997, 23062, 15221, 4141, -7818,
+	-18115, -24558, -25777, -21512, -12671, -1134, 10644, 20158,
+	25383, 25209, 19671, 9949, -1889, -13326, -21928, -25865,
+	-24300, -17565, -7093, 4886, 15827, 23401, 25997, 23062,
+	15221, 4141, -7818, -18115, -24558, -25777, -21512, -12671,
+	-1134, 10644, 20158, 25383, 25209, 19671, 9949, -1889,
+	-13326, -21928, -25865, -24300, -17565, -7093, 4886, 15827,
+	23401, 25997, 23062, 15221, 4141, -7818, -18115, -24558,
+	-25777, -21512, -12671, -1134, 10644, 20158, 25383, 25209,
+	19671, 9949, -1889, -13326, -21928, -25865, -24300, -17565,
+	-7093, 4886, 15827, 23401, 25997, 23062, 15221, 4141,
+	-7818, -18115, -24558, -25777, -21512, -12671, -1133, 10644,
+	20158, 25383, 25209, 19671, 9949, -1889, -13326, -21928,
+	-25865, -24300, -17565, -7093, 4886, 15827, 23401, 25997,
+	23062, 15221, 4141, -7818, -18115, -24558, -25777, -21512,
+	-12670, -1133, 10644, 20158, 25383, 25209, 19671, 9949,
+	-1889, -13326, -21928, -25865, -24300, -17565, -7093, 4886,
+	15827, 23401, 25997, 23062, 15221, 4141, -7818, -18115,
+	-24558, -25777, -21512, -12670, -1133, 10644, 20158, 25383,
+	25209, 19671, 9949, -1889, -13326, -21928, -25865, -24300,
+	-17565, -7093, 4887, 15827, 23401, 25997, 23062, 15220,
+	4141, -7818, -18115, -24558, -25777, -21512, -12670, -1133,
+	10644, 20158, 25383, 25209, 19671, 9949, -1889, -13326,
+	-21928, -25865, -24299, -17565, -7093, 4887, 15828, 23401,
+	25997, 23062, 15220, 4141, -7818, -18115, -24558, -25777,
+	-21512, -12670, -1133, 10644, 20158, 25383, 25209, 19671},
+	},{{
+
+// Carrier 11 Phase 0
+	0, 12339, 21722, 25901, 23873, 16126, 4514, -8178,
+	-18911, -25114, -25299, -19422, -8892, 3768, 15526, 23563,
+	25956, 22129, 13000, 756, -11668, -21297, -25824, -24163,
+	-16712, -5257, 7456, 18384, 24907, 25462, 19917, 9599,
+	-3018, -14912, -23234, -25989, -22516, -13649, -1511, 10987,
+	20855, 25725, 24432, 17284, 5996, -6729, -17842, -24680,
+	-25605, -20394, -10298, 2265, 14287, 22885, 26000, 22885,
+	14287, 2266, -10297, -20394, -25604, -24680, -17842, -6729,
+	5995, 17284, 24431, 25725, 20855, 10988, -1511, -13649,
+	-22516, -25988, -23234, -14913, -3018, 9599, 19917, 25462,
+	24907, 18384, 7457, -5257, -16712, -24162, -25824, -21298,
+	-11668, 756, 12999, 22128, 25956, 23564, 15526, 3768,
+	-8892, -19422, -25299, -25114, -18911, -8178, 4514, 16125,
+	23873, 25901, 21722, 12339, 0, -12339, -21722, -25901,
+	-23873, -16126, -4515, 8177, 18911, 25114, 25299, 19422,
+	8892, -3767, -15525, -23563, -25956, -22129, -13000, -756,
+	11668, 21297, 25824, 24163, 16712, 5257, -7456, -18384,
+	-24907, -25462, -19917, -9599, 3018, 14912, 23234, 25989,
+	22516, 13649, 1512, -10987, -20855, -25725, -24432, -17284,
+	-5996, 6728, 17842, 24680, 25605, 20395, 10298, -2265,
+	-14286, -22885, -26000, -22885, -14287, -2266, 10297, 20394,
+	25604, 24680, 17842, 6729, -5995, -17284, -24431, -25725,
+	-20855, -10988, 1511, 13649, 22516, 25988, 23234, 14913,
+	3018, -9598, -19916, -25462, -24907, -18385, -7457, 5257,
+	16712, 24162, 25824, 21298, 11669, -755, -12999, -22128,
+	-25955, -23564, -15526, -3768, 8892, 19422, 25299, 25114,
+	18912, 8178, -4514, -16125, -23873, -25901, -21722, -12340},
+	{
+// Carrier 11 Phase 1
+	9949, 20158, 25536, 24796, 18115, 7093, -5627, -17000,
+	-24300, -25777, -21078, -11329, 1134, 13326, 22325, 25975,
+	23401, 15221, 3393, -9246, -19671, -25383, -25013, -18650,
+	-7818, 4886, 16420, 24020, 25865, 21512, 12005, -378,
+	-12671, -21928, -25931, -23721, -15827, -4142, 8536, 19169,
+	25209, 25209, 19169, 8536, -4141, -15827, -23721, -25931,
+	-21928, -12671, -378, 12005, 21512, 25865, 24020, 16421,
+	4886, -7818, -18650, -25013, -25383, -19672, -9247, 3393,
+	15221, 23401, 25975, 22325, 13326, 1134, -11329, -21078,
+	-25777, -24300, -17000, -5627, 7093, 18115, 24796, 25536,
+	20158, 9949, -2642, -14601, -23062, -25997, -22703, -13969,
+	-1889, 10644, 20627, 25667, 24558, 17565, 6363, -6363,
+	-17565, -24558, -25667, -20627, -10644, 1888, 13969, 22703,
+	25997, 23062, 14601, 2642, -9949, -20157, -25536, -24796,
+	-18115, -7094, 5627, 17000, 24300, 25777, 21078, 11329,
+	-1133, -13325, -22325, -25975, -23401, -15221, -3393, 9246,
+	19671, 25383, 25013, 18650, 7818, -4886, -16420, -24020,
+	-25865, -21512, -12005, 377, 12670, 21928, 25931, 23721,
+	15828, 4142, -8535, -19169, -25209, -25209, -19169, -8536,
+	4141, 15827, 23721, 25931, 21928, 12671, 378, -12005,
+	-21512, -25865, -24020, -16421, -4887, 7818, 18649, 25013,
+	25383, 19672, 9247, -3393, -15220, -23401, -25975, -22325,
+	-13326, -1134, 11329, 21078, 25777, 24300, 17000, 5627,
+	-7093, -18115, -24796, -25536, -20158, -9950, 2642, 14601,
+	23062, 25997, 22703, 13970, 1889, -10643, -20626, -25667,
+	-24558, -17565, -6363, 6362, 17565, 24558, 25668, 20627,
+	10644, -1888, -13969, -22703, -25997, -23062, -14602, -2642},
+	{
+// Carrier 11 Phase 2
+	18384, 24907, 25462, 19917, 9599, -3018, -14912, -23234,
+	-25989, -22516, -13649, -1511, 10988, 20855, 25725, 24432,
+	17284, 5996, -6729, -17842, -24680, -25605, -20394, -10298,
+	2266, 14287, 22885, 26000, 22885, 14287, 2266, -10298,
+	-20394, -25604, -24680, -17842, -6729, 5995, 17284, 24431,
+	25725, 20855, 10988, -1511, -13649, -22516, -25988, -23234,
+	-14913, -3018, 9599, 19917, 25462, 24907, 18384, 7456,
+	-5257, -16712, -24162, -25824, -21298, -11668, 756, 12999,
+	22128, 25956, 23564, 15526, 3768, -8892, -19422, -25299,
+	-25114, -18911, -8178, 4514, 16126, 23873, 25901, 21722,
+	12339, 0, -12339, -21722, -25901, -23873, -16126, -4515,
+	8177, 18911, 25114, 25299, 19422, 8892, -3768, -15525,
+	-23563, -25956, -22129, -13000, -756, 11668, 21297, 25824,
+	24163, 16712, 5257, -7456, -18384, -24907, -25462, -19917,
+	-9599, 3018, 14912, 23234, 25989, 22516, 13649, 1512,
+	-10987, -20855, -25725, -24432, -17284, -5996, 6729, 17842,
+	24680, 25605, 20394, 10298, -2265, -14287, -22885, -26000,
+	-22885, -14287, -2266, 10297, 20394, 25604, 24680, 17842,
+	6729, -5995, -17284, -24431, -25725, -20855, -10988, 1511,
+	13649, 22516, 25988, 23234, 14913, 3018, -9599, -19916,
+	-25462, -24907, -18385, -7457, 5257, 16712, 24162, 25824,
+	21298, 11669, -755, -12999, -22128, -25955, -23564, -15526,
+	-3768, 8892, 19422, 25299, 25114, 18911, 8178, -4514,
+	-16125, -23873, -25901, -21722, -12339, 0, 12339, 21722,
+	25901, 23873, 16126, 4515, -8177, -18911, -25113, -25299,
+	-19422, -8892, 3767, 15525, 23563, 25956, 22129, 13000,
+	756, -11668, -21297, -25824, -24163, -16712, -5258, 7456},
+	{
+// Carrier 11 Phase 3
+	24020, 25865, 21512, 12005, -378, -12671, -21928, -25931,
+	-23721, -15827, -4142, 8536, 19169, 25209, 25209, 19169,
+	8536, -4141, -15827, -23721, -25931, -21928, -12671, -378,
+	12005, 21512, 25865, 24020, 16421, 4886, -7818, -18650,
+	-25013, -25383, -19672, -9246, 3393, 15221, 23401, 25975,
+	22325, 13326, 1134, -11329, -21078, -25777, -24300, -17000,
+	-5627, 7093, 18115, 24796, 25536, 20158, 9949, -2642,
+	-14601, -23062, -25997, -22703, -13969, -1889, 10644, 20627,
+	25667, 24558, 17565, 6363, -6363, -17565, -24558, -25667,
+	-20627, -10644, 1888, 13969, 22703, 25997, 23062, 14601,
+	2642, -9949, -20158, -25536, -24796, -18115, -7094, 5627,
+	17000, 24300, 25777, 21078, 11329, -1133, -13325, -22325,
+	-25975, -23401, -15221, -3393, 9246, 19671, 25383, 25013,
+	18650, 7818, -4886, -16420, -24020, -25865, -21512, -12005,
+	377, 12670, 21928, 25931, 23721, 15827, 4142, -8536,
+	-19169, -25209, -25209, -19169, -8536, 4141, 15827, 23721,
+	25931, 21928, 12671, 378, -12005, -21512, -25865, -24020,
+	-16421, -4887, 7818, 18650, 25013, 25383, 19672, 9247,
+	-3393, -15220, -23401, -25975, -22325, -13326, -1134, 11329,
+	21078, 25777, 24300, 17000, 5627, -7093, -18115, -24796,
+	-25536, -20158, -9950, 2642, 14601, 23062, 25997, 22703,
+	13970, 1889, -10643, -20626, -25667, -24558, -17565, -6363,
+	6362, 17565, 24558, 25668, 20627, 10644, -1888, -13969,
+	-22703, -25997, -23062, -14601, -2642, 9949, 20157, 25536,
+	24796, 18115, 7094, -5627, -17000, -24299, -25777, -21079,
+	-11330, 1133, 13325, 22324, 25975, 23401, 15221, 3394,
+	-9246, -19671, -25383, -25013, -18650, -7818, 4886, 16420},
+	{
+// Carrier 11 Phase 4
+	26000, 22885, 14287, 2266, -10298, -20394, -25605, -24680,
+	-17842, -6729, 5995, 17284, 24432, 25725, 20855, 10988,
+	-1511, -13649, -22516, -25989, -23234, -14913, -3018, 9599,
+	19917, 25462, 24907, 18384, 7456, -5257, -16712, -24163,
+	-25824, -21297, -11668, 756, 12999, 22128, 25956, 23564,
+	15526, 3768, -8892, -19422, -25299, -25114, -18911, -8178,
+	4514, 16126, 23873, 25901, 21722, 12339, 0, -12339,
+	-21722, -25901, -23873, -16126, -4514, 8178, 18911, 25114,
+	25299, 19422, 8892, -3768, -15526, -23563, -25956, -22129,
+	-13000, -756, 11668, 21297, 25824, 24163, 16712, 5257,
+	-7456, -18384, -24907, -25462, -19917, -9599, 3018, 14912,
+	23234, 25989, 22516, 13649, 1511, -10987, -20855, -25725,
+	-24432, -17284, -5996, 6729, 17842, 24680, 25605, 20394,
+	10298, -2265, -14287, -22885, -26000, -22885, -14287, -2266,
+	10297, 20394, 25604, 24680, 17842, 6729, -5995, -17284,
+	-24431, -25725, -20855, -10988, 1511, 13649, 22516, 25988,
+	23234, 14913, 3018, -9599, -19916, -25462, -24907, -18384,
+	-7457, 5257, 16712, 24162, 25824, 21298, 11669, -755,
+	-12999, -22128, -25955, -23564, -15526, -3768, 8892, 19422,
+	25299, 25114, 18911, 8178, -4514, -16125, -23873, -25901,
+	-21722, -12339, 0, 12339, 21722, 25901, 23873, 16126,
+	4515, -8177, -18911, -25113, -25299, -19422, -8892, 3767,
+	15525, 23563, 25956, 22129, 13000, 756, -11668, -21297,
+	-25824, -24163, -16712, -5258, 7456, 18384, 24907, 25462,
+	19917, 9599, -3018, -14912, -23234, -25989, -22516, -13649,
+	-1512, 10987, 20854, 25725, 24432, 17285, 5996, -6728,
+	-17841, -24680, -25605, -20395, -10298, 2265, 14286, 22885},
+	{
+// Carrier 11 Phase 5
+	24020, 16421, 4886, -7818, -18650, -25013, -25383, -19672,
+	-9246, 3393, 15221, 23401, 25975, 22325, 13326, 1134,
+	-11329, -21078, -25777, -24300, -17000, -5627, 7093, 18115,
+	24796, 25536, 20158, 9949, -2642, -14601, -23062, -25997,
+	-22703, -13969, -1889, 10644, 20627, 25667, 24558, 17565,
+	6363, -6363, -17565, -24558, -25667, -20627, -10644, 1888,
+	13969, 22703, 25997, 23062, 14601, 2642, -9949, -20158,
+	-25536, -24796, -18115, -7093, 5627, 17000, 24300, 25777,
+	21078, 11329, -1133, -13325, -22325, -25975, -23401, -15221,
+	-3393, 9246, 19671, 25383, 25013, 18650, 7818, -4886,
+	-16420, -24020, -25865, -21512, -12005, 377, 12670, 21928,
+	25931, 23721, 15827, 4142, -8536, -19169, -25209, -25209,
+	-19169, -8536, 4141, 15827, 23721, 25931, 21928, 12671,
+	378, -12005, -21512, -25865, -24020, -16421, -4887, 7818,
+	18650, 25013, 25383, 19672, 9247, -3393, -15220, -23401,
+	-25975, -22325, -13326, -1134, 11329, 21078, 25777, 24300,
+	17000, 5627, -7093, -18115, -24796, -25536, -20158, -9950,
+	2642, 14601, 23062, 25997, 22703, 13970, 1889, -10643,
+	-20626, -25667, -24558, -17565, -6363, 6362, 17565, 24558,
+	25668, 20627, 10644, -1888, -13969, -22703, -25997, -23062,
+	-14601, -2642, 9949, 20157, 25536, 24796, 18115, 7094,
+	-5627, -17000, -24299, -25777, -21079, -11329, 1133, 13325,
+	22325, 25975, 23401, 15221, 3394, -9246, -19671, -25383,
+	-25013, -18650, -7818, 4886, 16420, 24020, 25865, 21512,
+	12005, -377, -12670, -21927, -25931, -23721, -15828, -4142,
+	8535, 19168, 25209, 25209, 19169, 8536, -4141, -15827,
+	-23721, -25931, -21928, -12671, -378, 12005, 21512, 25865},
+	{
+// Carrier 11 Phase 6
+	18384, 7456, -5257, -16712, -24163, -25824, -21297, -11668,
+	756, 12999, 22129, 25956, 23564, 15526, 3768, -8892,
+	-19422, -25299, -25114, -18911, -8178, 4514, 16126, 23873,
+	25901, 21722, 12339, 0, -12339, -21722, -25901, -23873,
+	-16126, -4514, 8178, 18911, 25114, 25299, 19422, 8892,
+	-3768, -15526, -23563, -25956, -22129, -13000, -756, 11668,
+	21297, 25824, 24163, 16712, 5257, -7456, -18384, -24907,
+	-25462, -19917, -9599, 3018, 14912, 23234, 25989, 22516,
+	13649, 1511, -10987, -20855, -25725, -24432, -17284, -5996,
+	6729, 17842, 24680, 25605, 20394, 10298, -2265, -14287,
+	-22885, -26000, -22885, -14287, -2266, 10297, 20394, 25604,
+	24680, 17842, 6729, -5995, -17284, -24431, -25725, -20855,
+	-10988, 1511, 13649, 22516, 25988, 23234, 14913, 3018,
+	-9599, -19917, -25462, -24907, -18384, -7457, 5257, 16712,
+	24162, 25824, 21298, 11668, -755, -12999, -22128, -25955,
+	-23564, -15526, -3768, 8892, 19422, 25299, 25114, 18911,
+	8178, -4514, -16125, -23873, -25901, -21722, -12339, 0,
+	12339, 21722, 25901, 23873, 16126, 4515, -8177, -18911,
+	-25113, -25299, -19422, -8892, 3767, 15525, 23563, 25956,
+	22129, 13000, 756, -11668, -21297, -25824, -24163, -16712,
+	-5258, 7456, 18384, 24907, 25462, 19917, 9599, -3018,
+	-14912, -23234, -25989, -22516, -13649, -1512, 10987, 20854,
+	25725, 24432, 17284, 5996, -6728, -17841, -24680, -25605,
+	-20395, -10298, 2265, 14286, 22885, 26000, 22885, 14287,
+	2266, -10297, -20394, -25604, -24680, -17842, -6729, 5995,
+	17284, 24431, 25725, 20855, 10988, -1511, -13649, -22516,
+	-25988, -23234, -14913, -3018, 9598, 19916, 25462, 24907},
+	{
+// Carrier 11 Phase 7
+	9949, -2642, -14601, -23062, -25997, -22703, -13969, -1889,
+	10644, 20627, 25667, 24558, 17565, 6363, -6363, -17565,
+	-24558, -25667, -20627, -10644, 1889, 13969, 22703, 25997,
+	23062, 14601, 2642, -9949, -20158, -25536, -24796, -18115,
+	-7093, 5627, 17000, 24300, 25777, 21078, 11329, -1134,
+	-13326, -22325, -25975, -23401, -15221, -3393, 9246, 19671,
+	25383, 25013, 18650, 7818, -4886, -16420, -24020, -25865,
+	-21512, -12005, 378, 12671, 21928, 25931, 23721, 15827,
+	4142, -8536, -19169, -25209, -25209, -19169, -8536, 4141,
+	15827, 23721, 25931, 21928, 12671, 378, -12005, -21512,
+	-25865, -24020, -16421, -4886, 7818, 18650, 25013, 25383,
+	19672, 9247, -3393, -15221, -23401, -25975, -22325, -13326,
+	-1134, 11329, 21078, 25777, 24300, 17000, 5627, -7093,
+	-18115, -24796, -25536, -20158, -9949, 2642, 14601, 23062,
+	25997, 22703, 13969, 1889, -10643, -20627, -25667, -24558,
+	-17565, -6363, 6363, 17565, 24558, 25667, 20627, 10644,
+	-1888, -13969, -22703, -25997, -23062, -14601, -2642, 9949,
+	20157, 25536, 24796, 18115, 7094, -5627, -17000, -24299,
+	-25777, -21078, -11329, 1133, 13325, 22325, 25975, 23401,
+	15221, 3393, -9246, -19671, -25383, -25013, -18650, -7818,
+	4886, 16420, 24020, 25865, 21512, 12005, -377, -12670,
+	-21927, -25931, -23721, -15828, -4142, 8535, 19168, 25209,
+	25209, 19169, 8536, -4141, -15827, -23721, -25931, -21928,
+	-12671, -378, 12005, 21512, 25865, 24021, 16421, 4887,
+	-7817, -18649, -25013, -25383, -19672, -9247, 3393, 15220,
+	23401, 25975, 22325, 13326, 1134, -11329, -21078, -25777,
+	-24300, -17000, -5627, 7093, 18115, 24796, 25536, 20158},
+	},{{
+
+// Carrier 12 Phase 0
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000},
+	{
+// Carrier 12 Phase 1
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393,
+	9949, 20627, 25777, 24020, 15827, 3393, -9949, -20627,
+	-25777, -24020, -15827, -3393, 9949, 20627, 25777, 24020,
+	15827, 3393, -9949, -20627, -25777, -24020, -15827, -3393},
+	{
+// Carrier 12 Phase 2
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729},
+	{
+// Carrier 12 Phase 3
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827,
+	24020, 25777, 20627, 9949, -3393, -15827, -24020, -25777,
+	-20627, -9949, 3393, 15827, 24020, 25777, 20627, 9949,
+	-3393, -15827, -24020, -25777, -20627, -9949, 3393, 15827},
+	{
+// Carrier 12 Phase 4
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516},
+	{
+// Carrier 12 Phase 5
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777,
+	24020, 15827, 3393, -9949, -20627, -25777, -24020, -15827,
+	-3393, 9949, 20627, 25777, 24020, 15827, 3393, -9949,
+	-20627, -25777, -24020, -15827, -3393, 9949, 20627, 25777},
+	{
+// Carrier 12 Phase 6
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114},
+	{
+// Carrier 12 Phase 7
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627,
+	9949, -3393, -15827, -24020, -25777, -20627, -9949, 3393,
+	15827, 24020, 25777, 20627, 9949, -3393, -15827, -24020,
+	-25777, -20627, -9949, 3393, 15827, 24020, 25777, 20627},
+	},{{
+
+// Carrier 13 Phase 0
+	0, 13649, 23234, 25901, 20855, 9599, -4514, -17284,
+	-24907, -25114, -17842, -5257, 8892, 20394, 25824, 23563,
+	14287, 756, -13000, -22885, -25956, -21297, -10298, 3768,
+	16712, 24680, 25299, 18384, 5995, -8178, -19917, -25725,
+	-23873, -14912, -1511, 12339, 22516, 25989, 21722, 10988,
+	-3018, -16126, -24432, -25462, -18911, -6729, 7456, 19422,
+	25605, 24163, 15526, 2265, -11668, -22129, -26000, -22129,
+	-11668, 2266, 15526, 24163, 25604, 19422, 7456, -6729,
+	-18911, -25462, -24431, -16126, -3018, 10988, 21722, 25989,
+	22516, 12339, -1511, -14913, -23873, -25725, -19917, -8178,
+	5996, 18384, 25299, 24680, 16712, 3768, -10298, -21297,
+	-25956, -22885, -12999, 756, 14287, 23564, 25824, 20394,
+	8892, -5257, -17842, -25114, -24907, -17284, -4514, 9599,
+	20855, 25901, 23234, 13649, 0, -13649, -23234, -25901,
+	-20855, -9599, 4514, 17284, 24907, 25114, 17842, 5257,
+	-8892, -20394, -25824, -23563, -14287, -756, 13000, 22885,
+	25956, 21297, 10297, -3768, -16712, -24680, -25299, -18384,
+	-5995, 8178, 19917, 25725, 23873, 14912, 1511, -12339,
+	-22516, -25988, -21722, -10987, 3018, 16126, 24432, 25462,
+	18911, 6729, -7457, -19422, -25605, -24162, -15526, -2265,
+	11668, 22129, 26000, 22128, 11668, -2266, -15526, -24163,
+	-25604, -19422, -7456, 6729, 18911, 25462, 24431, 16125,
+	3018, -10988, -21722, -25989, -22516, -12339, 1511, 14913,
+	23873, 25725, 19917, 8177, -5996, -18384, -25299, -24680,
+	-16712, -3768, 10298, 21298, 25956, 22885, 12999, -756,
+	-14287, -23564, -25824, -20394, -8892, 5257, 17842, 25114,
+	24907, 17284, 4514, -9599, -20855, -25901, -23234, -13649},
+	{
+// Carrier 13 Phase 1
+	9949, 21078, 25931, 23062, 13326, -378, -13969, -23401,
+	-25865, -20627, -9246, 4886, 17565, 25013, 25013, 17565,
+	4886, -9246, -20627, -25865, -23401, -13969, -378, 13326,
+	23062, 25931, 21078, 9949, -4142, -17000, -24796, -25209,
+	-18115, -5627, 8536, 20158, 25777, 23721, 14601, 1134,
+	-12671, -22703, -25975, -21512, -10644, 3393, 16421, 24558,
+	25383, 18650, 6363, -7818, -19672, -25667, -24020, -15221,
+	-1889, 12005, 22325, 25997, 21928, 11329, -2642, -15827,
+	-24300, -25536, -19169, -7093, 7093, 19169, 25536, 24300,
+	15827, 2642, -11329, -21928, -25997, -22325, -12005, 1889,
+	15221, 24020, 25667, 19671, 7818, -6363, -18650, -25383,
+	-24558, -16420, -3393, 10644, 21512, 25975, 22703, 12671,
+	-1134, -14601, -23721, -25777, -20158, -8536, 5627, 18115,
+	25209, 24796, 17000, 4141, -9949, -21078, -25931, -23062,
+	-13326, 378, 13969, 23401, 25865, 20627, 9246, -4886,
+	-17565, -25013, -25013, -17565, -4886, 9247, 20627, 25865,
+	23401, 13969, 378, -13326, -23062, -25931, -21078, -9949,
+	4142, 17000, 24796, 25209, 18115, 5627, -8536, -20158,
+	-25777, -23721, -14601, -1133, 12671, 22703, 25975, 21512,
+	10644, -3393, -16421, -24558, -25383, -18650, -6363, 7818,
+	19672, 25667, 24020, 15221, 1888, -12005, -22325, -25997,
+	-21928, -11329, 2642, 15827, 24300, 25536, 19169, 7093,
+	-7094, -19169, -25536, -24300, -15827, -2642, 11329, 21928,
+	25997, 22325, 12005, -1889, -15221, -24020, -25667, -19671,
+	-7818, 6363, 18650, 25383, 24558, 16420, 3393, -10644,
+	-21512, -25975, -22703, -12670, 1134, 14601, 23721, 25777,
+	20157, 8536, -5627, -18115, -25209, -24796, -17000, -4141},
+	{
+// Carrier 13 Phase 2
+	18384, 25299, 24680, 16712, 3768, -10298, -21297, -25956,
+	-22885, -12999, 756, 14287, 23564, 25824, 20394, 8892,
+	-5257, -17842, -25114, -24907, -17284, -4514, 9599, 20855,
+	25901, 23234, 13649, 0, -13649, -23234, -25901, -20855,
+	-9599, 4514, 17284, 24907, 25114, 17842, 5257, -8892,
+	-20394, -25824, -23563, -14287, -756, 13000, 22885, 25956,
+	21297, 10298, -3768, -16712, -24680, -25299, -18384, -5995,
+	8178, 19917, 25725, 23873, 14912, 1511, -12339, -22516,
+	-25988, -21722, -10988, 3018, 16126, 24432, 25462, 18911,
+	6729, -7456, -19422, -25605, -24163, -15526, -2265, 11668,
+	22129, 26000, 22128, 11668, -2266, -15526, -24163, -25604,
+	-19422, -7456, 6729, 18911, 25462, 24431, 16126, 3018,
+	-10988, -21722, -25989, -22516, -12339, 1511, 14913, 23873,
+	25725, 19917, 8178, -5996, -18384, -25299, -24680, -16712,
+	-3768, 10298, 21298, 25956, 22885, 12999, -756, -14287,
+	-23564, -25824, -20394, -8892, 5257, 17842, 25114, 24907,
+	17284, 4514, -9599, -20855, -25901, -23234, -13649, 0,
+	13649, 23234, 25901, 20855, 9599, -4515, -17284, -24907,
+	-25114, -17842, -5257, 8892, 20394, 25824, 23563, 14287,
+	756, -13000, -22885, -25956, -21297, -10297, 3768, 16712,
+	24680, 25299, 18384, 5995, -8178, -19917, -25725, -23873,
+	-14912, -1511, 12339, 22516, 25988, 21722, 10987, -3018,
+	-16126, -24432, -25462, -18911, -6729, 7457, 19422, 25605,
+	24162, 15525, 2265, -11668, -22129, -26000, -22128, -11668,
+	2266, 15526, 24163, 25604, 19422, 7456, -6729, -18911,
+	-25462, -24431, -16125, -3018, 10988, 21722, 25989, 22516,
+	12339, -1511, -14913, -23873, -25725, -19917, -8177, 5996},
+	{
+// Carrier 13 Phase 3
+	24020, 25667, 19671, 7818, -6363, -18650, -25383, -24558,
+	-16421, -3393, 10644, 21512, 25975, 22703, 12671, -1134,
+	-14601, -23721, -25777, -20158, -8536, 5627, 18115, 25209,
+	24796, 17000, 4141, -9949, -21078, -25931, -23062, -13326,
+	378, 13969, 23401, 25865, 20627, 9246, -4886, -17565,
+	-25013, -25013, -17565, -4886, 9246, 20627, 25865, 23401,
+	13969, 378, -13326, -23062, -25931, -21078, -9949, 4142,
+	17000, 24796, 25209, 18115, 5627, -8536, -20158, -25777,
+	-23721, -14601, -1134, 12671, 22703, 25975, 21512, 10644,
+	-3393, -16421, -24558, -25383, -18650, -6363, 7818, 19672,
+	25667, 24020, 15221, 1889, -12005, -22325, -25997, -21928,
+	-11329, 2642, 15827, 24300, 25536, 19169, 7093, -7093,
+	-19169, -25536, -24300, -15827, -2642, 11329, 21928, 25997,
+	22325, 12005, -1889, -15221, -24020, -25667, -19671, -7818,
+	6363, 18650, 25383, 24558, 16420, 3393, -10644, -21512,
+	-25975, -22703, -12671, 1134, 14601, 23721, 25777, 20158,
+	8536, -5627, -18115, -25209, -24796, -17000, -4141, 9949,
+	21078, 25931, 23062, 13325, -378, -13969, -23401, -25865,
+	-20627, -9246, 4886, 17565, 25013, 25013, 17565, 4886,
+	-9247, -20627, -25865, -23401, -13969, -377, 13326, 23062,
+	25931, 21078, 9949, -4142, -17000, -24796, -25209, -18115,
+	-5627, 8536, 20158, 25777, 23721, 14601, 1133, -12671,
+	-22703, -25975, -21512, -10644, 3393, 16421, 24558, 25383,
+	18650, 6363, -7818, -19672, -25667, -24020, -15220, -1888,
+	12005, 22325, 25997, 21928, 11329, -2642, -15827, -24300,
+	-25536, -19169, -7093, 7094, 19169, 25536, 24300, 15827,
+	2642, -11329, -21928, -25997, -22325, -12005, 1889, 15221},
+	{
+// Carrier 13 Phase 4
+	26000, 22129, 11668, -2266, -15526, -24163, -25605, -19422,
+	-7456, 6729, 18911, 25462, 24432, 16126, 3018, -10988,
+	-21722, -25989, -22516, -12339, 1511, 14913, 23873, 25725,
+	19917, 8178, -5996, -18384, -25299, -24680, -16712, -3768,
+	10298, 21297, 25956, 22885, 12999, -756, -14287, -23564,
+	-25824, -20394, -8892, 5257, 17842, 25114, 24907, 17284,
+	4514, -9599, -20855, -25901, -23234, -13649, 0, 13649,
+	23234, 25901, 20855, 9599, -4514, -17284, -24907, -25114,
+	-17842, -5257, 8892, 20394, 25824, 23563, 14287, 756,
+	-13000, -22885, -25956, -21297, -10298, 3768, 16712, 24680,
+	25299, 18384, 5995, -8178, -19917, -25725, -23873, -14912,
+	-1511, 12339, 22516, 25988, 21722, 10987, -3018, -16126,
+	-24432, -25462, -18911, -6729, 7456, 19422, 25605, 24162,
+	15526, 2265, -11668, -22129, -26000, -22128, -11668, 2266,
+	15526, 24163, 25604, 19422, 7456, -6729, -18911, -25462,
+	-24431, -16126, -3018, 10988, 21722, 25989, 22516, 12339,
+	-1511, -14913, -23873, -25725, -19917, -8178, 5996, 18384,
+	25299, 24680, 16712, 3768, -10298, -21298, -25956, -22885,
+	-12999, 756, 14287, 23564, 25824, 20394, 8892, -5257,
+	-17842, -25114, -24907, -17284, -4514, 9599, 20855, 25901,
+	23234, 13649, 0, -13649, -23234, -25901, -20855, -9599,
+	4515, 17284, 24907, 25114, 17842, 5257, -8892, -20394,
+	-25824, -23563, -14287, -756, 13000, 22885, 25956, 21297,
+	10297, -3768, -16712, -24680, -25299, -18384, -5995, 8178,
+	19917, 25725, 23873, 14912, 1511, -12339, -22516, -25988,
+	-21722, -10987, 3018, 16126, 24432, 25462, 18911, 6729,
+	-7457, -19422, -25605, -24162, -15525, -2265, 11668, 22129},
+	{
+// Carrier 13 Phase 5
+	24020, 15221, 1889, -12005, -22325, -25997, -21928, -11329,
+	2642, 15827, 24300, 25536, 19169, 7093, -7093, -19169,
+	-25536, -24300, -15827, -2642, 11329, 21928, 25997, 22325,
+	12005, -1889, -15221, -24020, -25667, -19671, -7818, 6363,
+	18650, 25383, 24558, 16421, 3393, -10644, -21512, -25975,
+	-22703, -12671, 1134, 14601, 23721, 25777, 20158, 8536,
+	-5627, -18115, -25209, -24796, -17000, -4141, 9949, 21078,
+	25931, 23062, 13326, -378, -13969, -23401, -25865, -20627,
+	-9246, 4886, 17565, 25013, 25013, 17565, 4886, -9246,
+	-20627, -25865, -23401, -13969, -378, 13326, 23062, 25931,
+	21078, 9949, -4142, -17000, -24796, -25209, -18115, -5627,
+	8536, 20158, 25777, 23721, 14601, 1133, -12671, -22703,
+	-25975, -21512, -10644, 3393, 16421, 24558, 25383, 18650,
+	6363, -7818, -19672, -25667, -24020, -15221, -1888, 12005,
+	22325, 25997, 21928, 11329, -2642, -15827, -24300, -25536,
+	-19169, -7093, 7093, 19169, 25536, 24300, 15827, 2642,
+	-11329, -21928, -25997, -22325, -12005, 1889, 15221, 24020,
+	25667, 19671, 7818, -6363, -18650, -25383, -24558, -16420,
+	-3393, 10644, 21512, 25975, 22703, 12670, -1134, -14601,
+	-23721, -25777, -20158, -8536, 5627, 18115, 25209, 24796,
+	17000, 4141, -9949, -21078, -25931, -23062, -13325, 378,
+	13969, 23401, 25865, 20627, 9246, -4886, -17565, -25013,
+	-25013, -17565, -4886, 9247, 20627, 25865, 23401, 13969,
+	377, -13326, -23062, -25931, -21078, -9949, 4142, 17000,
+	24796, 25209, 18115, 5627, -8536, -20158, -25777, -23721,
+	-14601, -1133, 12671, 22703, 25975, 21512, 10643, -3393,
+	-16421, -24558, -25383, -18650, -6363, 7818, 19672, 25667},
+	{
+// Carrier 13 Phase 6
+	18384, 5996, -8178, -19917, -25725, -23873, -14912, -1511,
+	12339, 22516, 25989, 21722, 10988, -3018, -16126, -24432,
+	-25462, -18911, -6729, 7456, 19422, 25605, 24163, 15526,
+	2266, -11668, -22129, -26000, -22129, -11668, 2266, 15526,
+	24163, 25604, 19422, 7456, -6729, -18911, -25462, -24431,
+	-16126, -3018, 10988, 21722, 25989, 22516, 12339, -1511,
+	-14913, -23873, -25725, -19917, -8178, 5996, 18384, 25299,
+	24680, 16712, 3768, -10298, -21297, -25956, -22885, -12999,
+	756, 14287, 23564, 25824, 20394, 8892, -5257, -17842,
+	-25114, -24907, -17284, -4514, 9599, 20855, 25901, 23234,
+	13649, 0, -13649, -23234, -25901, -20855, -9599, 4514,
+	17284, 24907, 25114, 17842, 5257, -8892, -20394, -25824,
+	-23563, -14287, -756, 13000, 22885, 25956, 21297, 10297,
+	-3768, -16712, -24680, -25299, -18384, -5995, 8178, 19917,
+	25725, 23873, 14912, 1511, -12339, -22516, -25988, -21722,
+	-10987, 3018, 16126, 24432, 25462, 18911, 6729, -7457,
+	-19422, -25605, -24162, -15526, -2265, 11668, 22129, 26000,
+	22128, 11668, -2266, -15526, -24163, -25604, -19422, -7456,
+	6729, 18911, 25462, 24431, 16125, 3018, -10988, -21722,
+	-25989, -22516, -12339, 1511, 14913, 23873, 25725, 19917,
+	8177, -5996, -18384, -25299, -24680, -16712, -3768, 10298,
+	21298, 25956, 22885, 12999, -756, -14287, -23564, -25824,
+	-20394, -8892, 5257, 17842, 25114, 24907, 17284, 4514,
+	-9599, -20855, -25901, -23234, -13649, 0, 13649, 23234,
+	25901, 20855, 9599, -4515, -17284, -24907, -25114, -17842,
+	-5257, 8892, 20394, 25824, 23563, 14287, 755, -13000,
+	-22885, -25955, -21297, -10297, 3768, 16712, 24680, 25299},
+	{
+// Carrier 13 Phase 7
+	9949, -4141, -17000, -24796, -25209, -18115, -5627, 8536,
+	20158, 25777, 23721, 14601, 1134, -12671, -22703, -25975,
+	-21512, -10644, 3393, 16421, 24558, 25383, 18650, 6363,
+	-7818, -19671, -25667, -24020, -15221, -1889, 12005, 22325,
+	25997, 21928, 11329, -2642, -15827, -24300, -25536, -19169,
+	-7093, 7093, 19169, 25536, 24300, 15827, 2642, -11329,
+	-21928, -25997, -22325, -12005, 1889, 15221, 24020, 25667,
+	19671, 7818, -6363, -18650, -25383, -24558, -16420, -3393,
+	10644, 21512, 25975, 22703, 12671, -1134, -14601, -23721,
+	-25777, -20158, -8536, 5627, 18115, 25209, 24796, 17000,
+	4141, -9949, -21078, -25931, -23062, -13326, 378, 13969,
+	23401, 25865, 20627, 9246, -4886, -17565, -25013, -25013,
+	-17565, -4886, 9247, 20627, 25865, 23401, 13969, 378,
+	-13326, -23062, -25931, -21078, -9949, 4142, 17000, 24796,
+	25209, 18115, 5627, -8536, -20158, -25777, -23721, -14601,
+	-1133, 12671, 22703, 25975, 21512, 10644, -3393, -16421,
+	-24558, -25383, -18650, -6363, 7818, 19672, 25667, 24020,
+	15221, 1888, -12005, -22325, -25997, -21928, -11329, 2642,
+	15827, 24300, 25536, 19169, 7093, -7093, -19169, -25536,
+	-24300, -15827, -2642, 11329, 21928, 25997, 22325, 12005,
+	-1889, -15221, -24020, -25667, -19671, -7818, 6363, 18650,
+	25383, 24558, 16420, 3393, -10644, -21512, -25975, -22703,
+	-12670, 1134, 14601, 23721, 25777, 20157, 8536, -5627,
+	-18115, -25209, -24796, -17000, -4141, 9949, 21078, 25931,
+	23062, 13325, -378, -13969, -23401, -25865, -20627, -9246,
+	4886, 17565, 25013, 25013, 17565, 4886, -9247, -20627,
+	-25865, -23401, -13969, -377, 13326, 23062, 25931, 21078},
+	},{{
+
+// Carrier 14 Phase 0
+	0, 14287, 23873, 25605, 18911, 5996, -8892, -20855,
+	-25956, -22516, -11668, 3018, 16712, 24907, 24907, 16712,
+	3018, -11668, -22516, -25956, -20855, -8892, 5996, 18911,
+	25605, 23873, 14287, 0, -14287, -23873, -25604, -18911,
+	-5995, 8892, 20855, 25956, 22516, 11668, -3018, -16712,
+	-24907, -24907, -16712, -3018, 11668, 22516, 25956, 20855,
+	8892, -5996, -18911, -25605, -23873, -14287, 0, 14287,
+	23873, 25604, 18911, 5995, -8892, -20855, -25956, -22516,
+	-11668, 3018, 16712, 24907, 24907, 16712, 3018, -11668,
+	-22516, -25956, -20855, -8892, 5996, 18911, 25605, 23873,
+	14287, 0, -14287, -23873, -25604, -18911, -5995, 8892,
+	20855, 25956, 22516, 11668, -3018, -16712, -24907, -24907,
+	-16712, -3018, 11668, 22516, 25956, 20855, 8892, -5996,
+	-18911, -25605, -23873, -14287, 0, 14287, 23873, 25604,
+	18911, 5995, -8892, -20855, -25956, -22516, -11668, 3018,
+	16712, 24907, 24907, 16712, 3018, -11668, -22516, -25956,
+	-20855, -8892, 5996, 18911, 25605, 23873, 14287, 0,
+	-14287, -23873, -25604, -18911, -5995, 8892, 20855, 25956,
+	22516, 11668, -3018, -16712, -24907, -24907, -16712, -3018,
+	11668, 22516, 25956, 20855, 8892, -5996, -18911, -25605,
+	-23873, -14287, 0, 14287, 23873, 25604, 18911, 5995,
+	-8892, -20855, -25956, -22516, -11668, 3018, 16712, 24907,
+	24907, 16712, 3018, -11668, -22516, -25955, -20855, -8892,
+	5996, 18911, 25605, 23873, 14287, 0, -14287, -23873,
+	-25604, -18911, -5995, 8892, 20855, 25956, 22516, 11668,
+	-3018, -16712, -24907, -24907, -16712, -3018, 11669, 22516,
+	25955, 20855, 8892, -5996, -18911, -25605, -23873, -14286},
+	{
+// Carrier 14 Phase 1
+	9949, 21512, 25997, 21928, 10644, -4141, -17565, -25209,
+	-24558, -15827, -1889, 12671, 23062, 25865, 20158, 7818,
+	-7093, -19671, -25777, -23401, -13326, 1134, 15221, 24300,
+	25383, 18115, 4886, -9949, -21512, -25997, -21928, -10644,
+	4142, 17565, 25209, 24558, 15827, 1889, -12671, -23062,
+	-25865, -20158, -7818, 7093, 19672, 25777, 23401, 13326,
+	-1134, -15221, -24300, -25383, -18115, -4886, 9949, 21512,
+	25997, 21928, 10644, -4142, -17565, -25209, -24558, -15827,
+	-1889, 12671, 23062, 25865, 20158, 7818, -7093, -19672,
+	-25777, -23401, -13326, 1134, 15221, 24300, 25383, 18115,
+	4886, -9949, -21512, -25997, -21928, -10644, 4142, 17565,
+	25209, 24558, 15827, 1888, -12671, -23062, -25865, -20158,
+	-7818, 7093, 19672, 25777, 23401, 13325, -1134, -15221,
+	-24300, -25383, -18115, -4886, 9949, 21512, 25997, 21928,
+	10644, -4142, -17565, -25209, -24558, -15827, -1888, 12671,
+	23062, 25865, 20158, 7818, -7093, -19672, -25777, -23401,
+	-13325, 1134, 15221, 24300, 25383, 18115, 4886, -9949,
+	-21512, -25997, -21928, -10644, 4142, 17565, 25209, 24558,
+	15827, 1888, -12671, -23062, -25865, -20157, -7818, 7094,
+	19672, 25777, 23401, 13325, -1134, -15221, -24300, -25383,
+	-18115, -4886, 9949, 21512, 25997, 21928, 10643, -4142,
+	-17565, -25209, -24558, -15827, -1888, 12671, 23062, 25865,
+	20157, 7818, -7094, -19672, -25777, -23401, -13325, 1134,
+	15221, 24300, 25383, 18115, 4886, -9949, -21512, -25997,
+	-21928, -10643, 4142, 17565, 25209, 24558, 15827, 1888,
+	-12671, -23062, -25865, -20157, -7818, 7094, 19672, 25777,
+	23401, 13325, -1134, -15221, -24300, -25383, -18115, -4886},
+	{
+// Carrier 14 Phase 2
+	18384, 25462, 24163, 14912, 756, -13649, -23563, -25725,
+	-19422, -6729, 8178, 20394, 25901, 22885, 12339, -2266,
+	-16126, -24680, -25114, -17284, -3768, 10988, 22129, 25989,
+	21297, 9599, -5257, -18384, -25462, -24163, -14912, -756,
+	13649, 23564, 25725, 19422, 6729, -8178, -20394, -25901,
+	-22885, -12339, 2266, 16126, 24680, 25114, 17284, 3768,
+	-10988, -22129, -25988, -21297, -9599, 5257, 18384, 25462,
+	24163, 14912, 756, -13649, -23564, -25725, -19422, -6729,
+	8178, 20394, 25901, 22885, 12339, -2266, -16126, -24680,
+	-25114, -17284, -3768, 10988, 22129, 25988, 21297, 9599,
+	-5257, -18384, -25462, -24162, -14912, -756, 13649, 23564,
+	25725, 19422, 6729, -8178, -20394, -25901, -22885, -12339,
+	2266, 16126, 24680, 25114, 17284, 3768, -10988, -22129,
+	-25988, -21297, -9599, 5257, 18384, 25462, 24162, 14912,
+	756, -13649, -23564, -25725, -19422, -6729, 8178, 20394,
+	25901, 22885, 12339, -2266, -16126, -24680, -25114, -17284,
+	-3768, 10988, 22129, 25988, 21297, 9599, -5257, -18384,
+	-25462, -24162, -14912, -756, 13649, 23564, 25725, 19422,
+	6729, -8178, -20394, -25901, -22885, -12339, 2266, 16126,
+	24680, 25114, 17284, 3768, -10988, -22129, -25988, -21297,
+	-9599, 5257, 18384, 25462, 24162, 14912, 755, -13649,
+	-23564, -25725, -19422, -6729, 8178, 20394, 25901, 22885,
+	12339, -2266, -16126, -24680, -25114, -17284, -3767, 10988,
+	22129, 25988, 21297, 9599, -5257, -18384, -25462, -24162,
+	-14912, -755, 13649, 23564, 25725, 19422, 6729, -8178,
+	-20394, -25901, -22885, -12339, 2266, 16126, 24680, 25113,
+	17284, 3767, -10988, -22129, -25988, -21297, -9599, 5257},
+	{
+// Carrier 14 Phase 3
+	24020, 25536, 18650, 5627, -9246, -21078, -25975, -22325,
+	-11329, 3393, 17000, 25013, 24796, 16421, 2642, -12005,
+	-22703, -25931, -20627, -8536, 6363, 19169, 25667, 23721,
+	13969, -378, -14601, -24020, -25536, -18650, -5627, 9246,
+	21078, 25975, 22325, 11329, -3393, -17000, -25013, -24796,
+	-16421, -2642, 12005, 22703, 25931, 20627, 8536, -6363,
+	-19169, -25667, -23721, -13969, 378, 14601, 24020, 25536,
+	18650, 5627, -9246, -21078, -25975, -22325, -11329, 3393,
+	17000, 25013, 24796, 16420, 2642, -12005, -22703, -25931,
+	-20627, -8536, 6363, 19169, 25667, 23721, 13969, -378,
+	-14601, -24020, -25536, -18650, -5627, 9247, 21078, 25975,
+	22325, 11329, -3393, -17000, -25013, -24796, -16420, -2642,
+	12005, 22703, 25931, 20627, 8536, -6363, -19169, -25667,
+	-23721, -13969, 378, 14601, 24020, 25536, 18650, 5627,
+	-9247, -21078, -25975, -22325, -11329, 3393, 17000, 25013,
+	24796, 16420, 2642, -12005, -22703, -25931, -20627, -8536,
+	6363, 19169, 25667, 23721, 13969, -378, -14601, -24020,
+	-25536, -18650, -5627, 9247, 21078, 25975, 22325, 11329,
+	-3393, -17000, -25013, -24796, -16420, -2642, 12005, 22703,
+	25931, 20627, 8536, -6363, -19169, -25667, -23721, -13969,
+	378, 14601, 24020, 25536, 18650, 5627, -9247, -21078,
+	-25975, -22325, -11329, 3393, 17000, 25013, 24796, 16420,
+	2642, -12005, -22703, -25931, -20627, -8536, 6363, 19169,
+	25667, 23721, 13969, -378, -14601, -24020, -25536, -18650,
+	-5627, 9247, 21078, 25975, 22325, 11329, -3393, -17000,
+	-25013, -24796, -16420, -2642, 12005, 22703, 25931, 20627,
+	8535, -6363, -19169, -25668, -23721, -13969, 378, 14601},
+	{
+// Carrier 14 Phase 4
+	26000, 21722, 10298, -4514, -17842, -25299, -24432, -15526,
+	-1511, 13000, 23234, 25824, 19917, 7456, -7456, -19917,
+	-25824, -23234, -12999, 1511, 15526, 24432, 25299, 17842,
+	4514, -10298, -21722, -26000, -21722, -10298, 4514, 17842,
+	25299, 24431, 15526, 1511, -13000, -23234, -25824, -19917,
+	-7456, 7456, 19917, 25824, 23234, 12999, -1511, -15526,
+	-24432, -25299, -17842, -4514, 10298, 21722, 26000, 21722,
+	10298, -4514, -17842, -25299, -24431, -15526, -1511, 13000,
+	23234, 25824, 19917, 7456, -7456, -19917, -25824, -23234,
+	-12999, 1511, 15526, 24432, 25299, 17842, 4514, -10298,
+	-21722, -26000, -21722, -10297, 4514, 17842, 25299, 24431,
+	15526, 1511, -13000, -23234, -25824, -19917, -7456, 7457,
+	19917, 25824, 23234, 12999, -1511, -15526, -24432, -25299,
+	-17842, -4514, 10298, 21722, 26000, 21722, 10297, -4515,
+	-17842, -25299, -24431, -15526, -1511, 13000, 23234, 25824,
+	19917, 7456, -7457, -19917, -25824, -23234, -12999, 1511,
+	15526, 24432, 25299, 17842, 4514, -10298, -21722, -26000,
+	-21722, -10297, 4515, 17842, 25299, 24431, 15525, 1511,
+	-13000, -23234, -25824, -19917, -7456, 7457, 19917, 25824,
+	23234, 12999, -1511, -15526, -24432, -25299, -17842, -4514,
+	10298, 21722, 26000, 21722, 10297, -4515, -17842, -25299,
+	-24431, -15525, -1511, 13000, 23234, 25824, 19917, 7456,
+	-7457, -19917, -25824, -23234, -12999, 1512, 15526, 24432,
+	25299, 17842, 4514, -10298, -21722, -26000, -21722, -10297,
+	4515, 17842, 25299, 24431, 15525, 1511, -13000, -23234,
+	-25824, -19916, -7456, 7457, 19917, 25824, 23234, 12999,
+	-1512, -15526, -24432, -25299, -17842, -4514, 10298, 21722},
+	{
+// Carrier 14 Phase 5
+	24020, 14601, 378, -13969, -23721, -25667, -19169, -6363,
+	8536, 20627, 25931, 22703, 12005, -2642, -16421, -24796,
+	-25013, -17000, -3393, 11329, 22325, 25975, 21078, 9246,
+	-5627, -18650, -25536, -24020, -14601, -378, 13969, 23721,
+	25667, 19169, 6363, -8536, -20627, -25931, -22703, -12005,
+	2642, 16421, 24796, 25013, 17000, 3393, -11329, -22325,
+	-25975, -21078, -9246, 5627, 18650, 25536, 24020, 14601,
+	378, -13969, -23721, -25667, -19169, -6363, 8536, 20627,
+	25931, 22703, 12005, -2642, -16421, -24796, -25013, -17000,
+	-3393, 11329, 22325, 25975, 21078, 9246, -5627, -18650,
+	-25536, -24020, -14601, -378, 13969, 23721, 25667, 19169,
+	6363, -8536, -20627, -25931, -22703, -12005, 2642, 16421,
+	24796, 25013, 17000, 3393, -11329, -22325, -25975, -21078,
+	-9246, 5627, 18650, 25536, 24020, 14601, 377, -13969,
+	-23721, -25667, -19169, -6363, 8536, 20627, 25931, 22703,
+	12005, -2642, -16421, -24796, -25013, -17000, -3393, 11329,
+	22325, 25975, 21078, 9246, -5627, -18650, -25536, -24020,
+	-14601, -377, 13969, 23721, 25667, 19169, 6363, -8536,
+	-20627, -25931, -22703, -12005, 2642, 16421, 24796, 25013,
+	17000, 3393, -11329, -22325, -25975, -21078, -9246, 5627,
+	18650, 25536, 24020, 14601, 377, -13969, -23721, -25667,
+	-19169, -6363, 8536, 20627, 25931, 22703, 12005, -2642,
+	-16421, -24796, -25013, -17000, -3393, 11329, 22325, 25975,
+	21078, 9246, -5627, -18650, -25536, -24020, -14601, -377,
+	13970, 23721, 25667, 19169, 6363, -8536, -20627, -25931,
+	-22703, -12005, 2642, 16421, 24796, 25013, 17000, 3393,
+	-11329, -22325, -25975, -21078, -9246, 5627, 18650, 25536},
+	{
+// Carrier 14 Phase 6
+	18384, 5257, -9599, -21297, -25989, -22129, -10988, 3768,
+	17284, 25114, 24680, 16126, 2266, -12339, -22885, -25901,
+	-20394, -8178, 6729, 19422, 25725, 23563, 13649, -756,
+	-14913, -24163, -25462, -18384, -5257, 9599, 21297, 25989,
+	22129, 10988, -3768, -17284, -25114, -24680, -16126, -2265,
+	12339, 22885, 25901, 20394, 8178, -6729, -19422, -25725,
+	-23563, -13649, 756, 14913, 24163, 25462, 18384, 5257,
+	-9599, -21297, -25989, -22128, -10988, 3768, 17284, 25114,
+	24680, 16126, 2265, -12339, -22885, -25901, -20394, -8178,
+	6729, 19422, 25725, 23563, 13649, -756, -14913, -24163,
+	-25462, -18384, -5257, 9599, 21298, 25989, 22128, 10987,
+	-3768, -17284, -25114, -24680, -16126, -2265, 12339, 22885,
+	25901, 20394, 8178, -6729, -19422, -25725, -23563, -13649,
+	756, 14913, 24163, 25462, 18384, 5257, -9599, -21298,
+	-25989, -22128, -10987, 3768, 17284, 25114, 24680, 16125,
+	2265, -12339, -22885, -25901, -20394, -8178, 6729, 19422,
+	25725, 23563, 13649, -756, -14913, -24163, -25462, -18384,
+	-5257, 9599, 21298, 25989, 22128, 10987, -3768, -17284,
+	-25114, -24680, -16125, -2265, 12339, 22885, 25901, 20394,
+	8177, -6729, -19422, -25725, -23563, -13649, 756, 14913,
+	24163, 25462, 18384, 5257, -9599, -21298, -25989, -22128,
+	-10987, 3768, 17284, 25114, 24680, 16125, 2265, -12339,
+	-22885, -25901, -20394, -8177, 6729, 19422, 25725, 23563,
+	13649, -756, -14913, -24163, -25462, -18384, -5257, 9599,
+	21298, 25989, 22128, 10987, -3768, -17284, -25114, -24680,
+	-16125, -2265, 12339, 22885, 25901, 20394, 8177, -6729,
+	-19422, -25725, -23563, -13649, 756, 14913, 24163, 25462},
+	{
+// Carrier 14 Phase 7
+	9949, -4886, -18115, -25383, -24300, -15221, -1134, 13326,
+	23401, 25777, 19671, 7093, -7818, -20158, -25865, -23062,
+	-12671, 1889, 15827, 24558, 25209, 17565, 4141, -10644,
+	-21928, -25997, -21512, -9949, 4886, 18115, 25383, 24300,
+	15221, 1134, -13326, -23401, -25777, -19671, -7093, 7818,
+	20158, 25865, 23062, 12671, -1889, -15827, -24558, -25209,
+	-17565, -4141, 10644, 21928, 25997, 21512, 9949, -4886,
+	-18115, -25383, -24300, -15221, -1134, 13326, 23401, 25777,
+	19671, 7093, -7818, -20158, -25865, -23062, -12671, 1889,
+	15827, 24558, 25209, 17565, 4141, -10644, -21928, -25997,
+	-21512, -9949, 4886, 18115, 25383, 24300, 15221, 1133,
+	-13326, -23401, -25777, -19671, -7093, 7818, 20158, 25865,
+	23062, 12671, -1889, -15827, -24558, -25209, -17565, -4141,
+	10644, 21928, 25997, 21512, 9949, -4886, -18115, -25383,
+	-24300, -15221, -1133, 13326, 23401, 25777, 19671, 7093,
+	-7818, -20158, -25865, -23062, -12670, 1889, 15827, 24558,
+	25209, 17565, 4141, -10644, -21928, -25997, -21512, -9949,
+	4886, 18115, 25383, 24300, 15221, 1133, -13326, -23401,
+	-25777, -19671, -7093, 7818, 20158, 25865, 23062, 12670,
+	-1889, -15827, -24558, -25209, -17565, -4141, 10644, 21928,
+	25997, 21512, 9949, -4886, -18115, -25383, -24300, -15220,
+	-1133, 13326, 23401, 25777, 19671, 7093, -7818, -20158,
+	-25865, -23062, -12670, 1889, 15828, 24558, 25209, 17565,
+	4141, -10644, -21928, -25997, -21512, -9949, 4887, 18115,
+	25383, 24299, 15220, 1133, -13326, -23401, -25777, -19671,
+	-7093, 7818, 20158, 25865, 23062, 12670, -1889, -15828,
+	-24558, -25209, -17565, -4141, 10644, 21928, 25997, 21512},
+	},{{
+
+// Carrier 15 Phase 0
+	0, 14912, 24432, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4514, 10988, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21297, -8892, 6729, 19917, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25114, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18384, 4514, -10988,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6729, -19917, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25114, -24432, -14913,
+	0, 14912, 24431, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4514, 10987, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21298, -8892, 6729, 19917, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25114, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18384, 4515, -10987,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6729, -19917, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25114, -24432, -14913,
+	0, 14912, 24431, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4515, 10987, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21298, -8892, 6729, 19916, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25113, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18385, 4515, -10987,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6728, -19916, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25113, -24432, -14913},
+	{
+// Carrier 15 Phase 1
+	9949, 21928, 25975, 20627, 7818, -7818, -20627, -25975,
+	-21928, -9949, 5627, 19169, 25777, 23062, 12005, -3393,
+	-17565, -25383, -24020, -13969, 1134, 15827, 24796, 24796,
+	15827, 1134, -13969, -24020, -25383, -17565, -3393, 12005,
+	23062, 25777, 19169, 5627, -9949, -21928, -25975, -20627,
+	-7818, 7818, 20627, 25975, 21928, 9949, -5627, -19169,
+	-25777, -23062, -12005, 3393, 17565, 25383, 24020, 13969,
+	-1134, -15827, -24796, -24796, -15827, -1134, 13969, 24020,
+	25383, 17565, 3393, -12005, -23062, -25777, -19169, -5627,
+	9949, 21928, 25975, 20627, 7818, -7818, -20627, -25975,
+	-21928, -9949, 5627, 19169, 25777, 23062, 12005, -3393,
+	-17565, -25383, -24020, -13969, 1133, 15827, 24796, 24796,
+	15827, 1134, -13969, -24020, -25383, -17565, -3393, 12005,
+	23062, 25777, 19169, 5627, -9949, -21928, -25975, -20627,
+	-7818, 7818, 20627, 25975, 21928, 9949, -5627, -19169,
+	-25777, -23062, -12005, 3393, 17565, 25383, 24020, 13969,
+	-1133, -15827, -24796, -24796, -15827, -1134, 13969, 24020,
+	25383, 17565, 3393, -12005, -23062, -25777, -19169, -5627,
+	9949, 21928, 25975, 20627, 7818, -7818, -20627, -25975,
+	-21928, -9950, 5627, 19169, 25777, 23062, 12005, -3393,
+	-17565, -25383, -24020, -13970, 1133, 15827, 24796, 24796,
+	15828, 1134, -13969, -24020, -25383, -17565, -3393, 12005,
+	23062, 25777, 19169, 5627, -9949, -21928, -25975, -20627,
+	-7818, 7818, 20626, 25975, 21928, 9950, -5627, -19168,
+	-25777, -23062, -12005, 3393, 17565, 25383, 24020, 13970,
+	-1133, -15827, -24796, -24796, -15828, -1134, 13969, 24020,
+	25383, 17565, 3394, -12005, -23062, -25777, -19169, -5627},
+	{
+// Carrier 15 Phase 2
+	18384, 25605, 23564, 13000, -2266, -16712, -25114, -24432,
+	-14913, 0, 14912, 24432, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4514, 10988, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21297, -8892, 6729, 19917,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25114, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18384, 4514,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6729, -19917, -25901, -22516, -10988, 4514,
+	18384, 25604, 23564, 13000, -2265, -16712, -25114, -24432,
+	-14913, 0, 14912, 24431, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4515, 10987, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21298, -8892, 6729, 19917,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25114, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18384, 4515,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6729, -19916, -25901, -22516, -10988, 4514,
+	18384, 25604, 23564, 13000, -2265, -16712, -25114, -24432,
+	-14913, 0, 14912, 24431, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4515, 10987, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21298, -8892, 6728, 19916,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25113, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18385, 4515,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6728, -19916, -25901, -22516, -10988, 4514},
+	{
+// Carrier 15 Phase 3
+	24020, 25383, 17565, 3393, -12005, -23062, -25777, -19169,
+	-5627, 9949, 21928, 25975, 20627, 7818, -7818, -20627,
+	-25975, -21928, -9949, 5627, 19169, 25777, 23062, 12005,
+	-3393, -17565, -25383, -24020, -13969, 1134, 15827, 24796,
+	24796, 15827, 1134, -13969, -24020, -25383, -17565, -3393,
+	12005, 23062, 25777, 19169, 5627, -9949, -21928, -25975,
+	-20627, -7818, 7818, 20627, 25975, 21928, 9949, -5627,
+	-19169, -25777, -23062, -12005, 3393, 17565, 25383, 24020,
+	13969, -1133, -15827, -24796, -24796, -15827, -1134, 13969,
+	24020, 25383, 17565, 3393, -12005, -23062, -25777, -19169,
+	-5627, 9949, 21928, 25975, 20627, 7818, -7818, -20627,
+	-25975, -21928, -9949, 5627, 19169, 25777, 23062, 12005,
+	-3393, -17565, -25383, -24020, -13969, 1133, 15827, 24796,
+	24796, 15827, 1134, -13969, -24020, -25383, -17565, -3393,
+	12005, 23062, 25777, 19169, 5627, -9949, -21928, -25975,
+	-20627, -7818, 7818, 20627, 25975, 21928, 9949, -5627,
+	-19169, -25777, -23062, -12005, 3393, 17565, 25383, 24020,
+	13969, -1133, -15827, -24796, -24796, -15827, -1134, 13969,
+	24020, 25383, 17565, 3393, -12005, -23062, -25777, -19169,
+	-5627, 9949, 21928, 25975, 20627, 7818, -7818, -20627,
+	-25975, -21928, -9950, 5627, 19169, 25777, 23062, 12005,
+	-3393, -17565, -25383, -24020, -13970, 1133, 15827, 24796,
+	24796, 15828, 1134, -13969, -24020, -25383, -17565, -3394,
+	12005, 23062, 25777, 19169, 5627, -9949, -21927, -25975,
+	-20627, -7818, 7818, 20626, 25975, 21928, 9950, -5627,
+	-19168, -25777, -23062, -12005, 3393, 17565, 25383, 24021,
+	13970, -1133, -15827, -24796, -24796, -15828, -1134, 13969},
+	{
+// Carrier 15 Phase 4
+	26000, 21297, 8892, -6729, -19917, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2266, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4514, 10988, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21297, -8892, 6729,
+	19917, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25114, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18384,
+	4514, -10987, -22516, -25901, -19917, -6729, 8892, 21297,
+	26000, 21298, 8892, -6729, -19917, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2265, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4515, 10987, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21298, -8892, 6729,
+	19917, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25114, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18384,
+	4515, -10987, -22516, -25901, -19917, -6729, 8892, 21297,
+	26000, 21298, 8892, -6729, -19916, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2265, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4515, 10987, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21298, -8892, 6728,
+	19916, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25113, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18385,
+	4515, -10987, -22516, -25901, -19917, -6729, 8892, 21297},
+	{
+// Carrier 15 Phase 5
+	24020, 13969, -1134, -15827, -24796, -24796, -15827, -1134,
+	13969, 24020, 25383, 17565, 3393, -12005, -23062, -25777,
+	-19169, -5627, 9949, 21928, 25975, 20627, 7818, -7818,
+	-20627, -25975, -21928, -9949, 5627, 19169, 25777, 23062,
+	12005, -3393, -17565, -25383, -24020, -13969, 1134, 15827,
+	24796, 24796, 15827, 1134, -13969, -24020, -25383, -17565,
+	-3393, 12005, 23062, 25777, 19169, 5627, -9949, -21928,
+	-25975, -20627, -7818, 7818, 20627, 25975, 21928, 9949,
+	-5627, -19169, -25777, -23062, -12005, 3393, 17565, 25383,
+	24020, 13969, -1133, -15827, -24796, -24796, -15827, -1134,
+	13969, 24020, 25383, 17565, 3393, -12005, -23062, -25777,
+	-19169, -5627, 9949, 21928, 25975, 20627, 7818, -7818,
+	-20627, -25975, -21928, -9949, 5627, 19169, 25777, 23062,
+	12005, -3393, -17565, -25383, -24020, -13969, 1133, 15827,
+	24796, 24796, 15827, 1134, -13969, -24020, -25383, -17565,
+	-3393, 12005, 23062, 25777, 19169, 5627, -9949, -21928,
+	-25975, -20627, -7818, 7818, 20627, 25975, 21928, 9949,
+	-5627, -19169, -25777, -23062, -12005, 3393, 17565, 25383,
+	24020, 13970, -1133, -15827, -24796, -24796, -15828, -1134,
+	13969, 24020, 25383, 17565, 3393, -12005, -23062, -25777,
+	-19169, -5627, 9949, 21928, 25975, 20627, 7818, -7818,
+	-20626, -25975, -21928, -9950, 5627, 19168, 25777, 23062,
+	12005, -3393, -17565, -25383, -24020, -13970, 1133, 15827,
+	24796, 24796, 15828, 1134, -13969, -24020, -25383, -17565,
+	-3394, 12005, 23062, 25777, 19169, 5627, -9949, -21927,
+	-25975, -20627, -7818, 7818, 20626, 25975, 21928, 9950,
+	-5627, -19168, -25777, -23062, -12005, 3393, 17565, 25383},
+	{
+// Carrier 15 Phase 6
+	18384, 4514, -10988, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21297, 8892, -6729, -19917, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2266, -16712,
+	-25114, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4514, 10988, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6729, 19917, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25114, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605,
+	18384, 4514, -10987, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21298, 8892, -6729, -19917, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2265, -16712,
+	-25114, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4515, 10987, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6729, 19917, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25114, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605,
+	18384, 4515, -10987, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21298, 8892, -6729, -19916, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2265, -16712,
+	-25113, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4515, 10987, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6728, 19916, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25113, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605},
+	{
+// Carrier 15 Phase 7
+	9949, -5627, -19169, -25777, -23062, -12005, 3393, 17565,
+	25383, 24020, 13969, -1134, -15827, -24796, -24796, -15827,
+	-1134, 13969, 24020, 25383, 17565, 3393, -12005, -23062,
+	-25777, -19169, -5627, 9949, 21928, 25975, 20627, 7818,
+	-7818, -20627, -25975, -21928, -9949, 5627, 19169, 25777,
+	23062, 12005, -3393, -17565, -25383, -24020, -13969, 1134,
+	15827, 24796, 24796, 15827, 1134, -13969, -24020, -25383,
+	-17565, -3393, 12005, 23062, 25777, 19169, 5627, -9949,
+	-21928, -25975, -20627, -7818, 7818, 20627, 25975, 21928,
+	9949, -5627, -19169, -25777, -23062, -12005, 3393, 17565,
+	25383, 24020, 13969, -1133, -15827, -24796, -24796, -15827,
+	-1134, 13969, 24020, 25383, 17565, 3393, -12005, -23062,
+	-25777, -19169, -5627, 9949, 21928, 25975, 20627, 7818,
+	-7818, -20627, -25975, -21928, -9949, 5627, 19169, 25777,
+	23062, 12005, -3393, -17565, -25383, -24020, -13969, 1133,
+	15827, 24796, 24796, 15827, 1134, -13969, -24020, -25383,
+	-17565, -3393, 12005, 23062, 25777, 19169, 5627, -9949,
+	-21928, -25975, -20627, -7818, 7818, 20627, 25975, 21928,
+	9949, -5627, -19169, -25777, -23062, -12005, 3393, 17565,
+	25383, 24020, 13970, -1133, -15827, -24796, -24796, -15828,
+	-1134, 13969, 24020, 25383, 17565, 3393, -12005, -23062,
+	-25777, -19169, -5627, 9949, 21928, 25975, 20627, 7818,
+	-7818, -20626, -25975, -21928, -9950, 5627, 19168, 25777,
+	23062, 12005, -3393, -17565, -25383, -24020, -13970, 1133,
+	15827, 24796, 24796, 15828, 1134, -13969, -24020, -25383,
+	-17565, -3394, 12005, 23062, 25777, 19169, 5627, -9949,
+	-21927, -25975, -20627, -7818, 7818, 20626, 25975, 21928},
+	},{{
+
+// Carrier 16 Phase 0
+	0, 15526, 24907, 24432, 14287, -1511, -16712, -25299,
+	-23873, -13000, 3018, 17842, 25605, 23234, 11668, -4514,
+	-18911, -25824, -22516, -10298, 5996, 19917, 25956, 21722,
+	8892, -7456, -20855, -26000, -20855, -7456, 8892, 21722,
+	25956, 19917, 5996, -10298, -22516, -25824, -18911, -4514,
+	11668, 23234, 25604, 17842, 3018, -13000, -23873, -25299,
+	-16712, -1511, 14287, 24432, 24907, 15526, 0, -15526,
+	-24907, -24432, -14287, 1511, 16712, 25299, 23873, 12999,
+	-3018, -17842, -25605, -23234, -11668, 4514, 18911, 25824,
+	22516, 10298, -5996, -19917, -25956, -21722, -8892, 7456,
+	20855, 26000, 20855, 7456, -8892, -21722, -25956, -19917,
+	-5995, 10298, 22516, 25824, 18911, 4514, -11668, -23234,
+	-25604, -17842, -3018, 13000, 23873, 25299, 16712, 1511,
+	-14287, -24432, -24907, -15526, 0, 15526, 24907, 24431,
+	14287, -1511, -16712, -25299, -23873, -12999, 3018, 17842,
+	25605, 23234, 11668, -4514, -18911, -25824, -22516, -10298,
+	5996, 19917, 25956, 21722, 8892, -7456, -20855, -26000,
+	-20855, -7456, 8892, 21722, 25956, 19917, 5995, -10298,
+	-22516, -25824, -18911, -4514, 11668, 23234, 25604, 17842,
+	3018, -13000, -23873, -25299, -16712, -1511, 14287, 24432,
+	24907, 15526, 0, -15526, -24907, -24431, -14287, 1511,
+	16712, 25299, 23873, 12999, -3018, -17842, -25605, -23234,
+	-11668, 4514, 18911, 25824, 22516, 10298, -5996, -19917,
+	-25956, -21722, -8892, 7456, 20855, 26000, 20855, 7456,
+	-8892, -21722, -25956, -19917, -5995, 10298, 22516, 25824,
+	18911, 4514, -11668, -23234, -25604, -17842, -3018, 13000,
+	23873, 25299, 16712, 1511, -14287, -24432, -24907, -15526},
+	{
+// Carrier 16 Phase 1
+	9949, 22325, 25865, 19169, 4886, -11329, -23062, -25667,
+	-18115, -3393, 12671, 23721, 25383, 17000, 1889, -13969,
+	-24300, -25013, -15827, -378, 15221, 24796, 24558, 14601,
+	-1134, -16421, -25209, -24020, -13326, 2642, 17565, 25536,
+	23401, 12005, -4141, -18650, -25777, -22703, -10644, 5627,
+	19671, 25931, 21928, 9246, -7093, -20627, -25997, -21078,
+	-7818, 8536, 21512, 25975, 20158, 6363, -9949, -22325,
+	-25865, -19169, -4886, 11329, 23062, 25667, 18115, 3393,
+	-12671, -23721, -25383, -17000, -1889, 13969, 24300, 25013,
+	15827, 378, -15221, -24796, -24558, -14601, 1134, 16421,
+	25209, 24020, 13326, -2642, -17565, -25536, -23401, -12005,
+	4142, 18650, 25777, 22703, 10644, -5627, -19672, -25931,
+	-21928, -9246, 7093, 20627, 25997, 21078, 7818, -8536,
+	-21512, -25975, -20158, -6363, 9949, 22325, 25865, 19169,
+	4886, -11329, -23062, -25667, -18115, -3393, 12671, 23721,
+	25383, 17000, 1889, -13969, -24300, -25013, -15827, -378,
+	15221, 24796, 24558, 14601, -1134, -16421, -25209, -24020,
+	-13326, 2642, 17565, 25536, 23401, 12005, -4142, -18650,
+	-25777, -22703, -10644, 5627, 19672, 25931, 21928, 9246,
+	-7093, -20627, -25997, -21078, -7818, 8536, 21512, 25975,
+	20158, 6363, -9949, -22325, -25865, -19169, -4886, 11329,
+	23062, 25667, 18115, 3393, -12671, -23721, -25383, -17000,
+	-1889, 13969, 24300, 25013, 15827, 378, -15221, -24796,
+	-24558, -14601, 1134, 16421, 25209, 24020, 13326, -2642,
+	-17565, -25536, -23401, -12005, 4142, 18650, 25777, 22703,
+	10644, -5627, -19672, -25931, -21928, -9246, 7093, 20627,
+	25997, 21078, 7818, -8536, -21512, -25975, -20158, -6363},
+	{
+// Carrier 16 Phase 2
+	18384, 25725, 22885, 10988, -5257, -19422, -25901, -22129,
+	-9599, 6729, 20394, 25989, 21297, 8178, -8178, -21297,
+	-25989, -20394, -6729, 9599, 22129, 25901, 19422, 5257,
+	-10988, -22885, -25725, -18384, -3768, 12339, 23564, 25462,
+	17284, 2266, -13649, -24163, -25114, -16126, -756, 14913,
+	24680, 24680, 14912, -756, -16126, -25114, -24163, -13649,
+	2266, 17284, 25462, 23563, 12339, -3768, -18384, -25725,
+	-22885, -10988, 5257, 19422, 25901, 22129, 9599, -6729,
+	-20394, -25989, -21297, -8178, 8178, 21297, 25989, 20394,
+	6729, -9599, -22129, -25901, -19422, -5257, 10988, 22885,
+	25725, 18384, 3768, -12339, -23564, -25462, -17284, -2266,
+	13649, 24163, 25114, 16126, 756, -14913, -24680, -24680,
+	-14912, 756, 16126, 25114, 24163, 13649, -2266, -17284,
+	-25462, -23563, -12339, 3768, 18384, 25725, 22885, 10988,
+	-5257, -19422, -25901, -22129, -9599, 6729, 20394, 25989,
+	21297, 8178, -8178, -21297, -25989, -20394, -6729, 9599,
+	22129, 25901, 19422, 5257, -10988, -22885, -25725, -18384,
+	-3768, 12339, 23564, 25462, 17284, 2266, -13649, -24163,
+	-25114, -16126, -756, 14913, 24680, 24680, 14912, -756,
+	-16126, -25114, -24163, -13649, 2266, 17284, 25462, 23563,
+	12339, -3768, -18384, -25725, -22885, -10988, 5257, 19422,
+	25901, 22129, 9599, -6729, -20394, -25989, -21297, -8178,
+	8178, 21297, 25988, 20394, 6729, -9599, -22129, -25901,
+	-19422, -5257, 10988, 22885, 25725, 18384, 3768, -12339,
+	-23564, -25462, -17284, -2265, 13649, 24163, 25114, 16126,
+	756, -14913, -24680, -24680, -14912, 756, 16126, 25114,
+	24163, 13649, -2266, -17284, -25462, -23563, -12339, 3768},
+	{
+// Carrier 16 Phase 3
+	24020, 25209, 16421, 1134, -14601, -24558, -24796, -15221,
+	378, 15827, 25013, 24300, 13969, -1889, -17000, -25383,
+	-23721, -12671, 3393, 18115, 25667, 23062, 11329, -4886,
+	-19169, -25865, -22325, -9949, 6363, 20158, 25975, 21512,
+	8536, -7818, -21078, -25997, -20627, -7093, 9246, 21928,
+	25931, 19671, 5627, -10644, -22703, -25777, -18650, -4141,
+	12005, 23401, 25536, 17565, 2642, -13326, -24020, -25209,
+	-16421, -1134, 14601, 24558, 24796, 15221, -378, -15827,
+	-25013, -24300, -13969, 1889, 17000, 25383, 23721, 12671,
+	-3393, -18115, -25667, -23062, -11329, 4886, 19169, 25865,
+	22325, 9949, -6363, -20158, -25975, -21512, -8536, 7818,
+	21078, 25997, 20627, 7093, -9246, -21928, -25931, -19671,
+	-5627, 10644, 22703, 25777, 18650, 4141, -12005, -23401,
+	-25536, -17565, -2642, 13326, 24020, 25209, 16421, 1134,
+	-14601, -24558, -24796, -15221, 378, 15827, 25013, 24300,
+	13969, -1889, -17000, -25383, -23721, -12671, 3393, 18115,
+	25667, 23062, 11329, -4886, -19169, -25865, -22325, -9949,
+	6363, 20158, 25975, 21512, 8536, -7818, -21078, -25997,
+	-20627, -7093, 9246, 21928, 25931, 19671, 5627, -10644,
+	-22703, -25777, -18650, -4141, 12005, 23401, 25536, 17565,
+	2642, -13326, -24020, -25209, -16421, -1134, 14601, 24558,
+	24796, 15221, -378, -15827, -25013, -24300, -13969, 1889,
+	17000, 25383, 23721, 12671, -3393, -18115, -25667, -23062,
+	-11329, 4886, 19169, 25865, 22325, 9949, -6363, -20158,
+	-25975, -21512, -8536, 7818, 21078, 25997, 20627, 7093,
+	-9246, -21928, -25931, -19671, -5627, 10644, 22703, 25777,
+	18650, 4141, -12005, -23401, -25536, -17565, -2642, 13326},
+	{
+// Carrier 16 Phase 4
+	26000, 20855, 7456, -8892, -21722, -25956, -19917, -5996,
+	10298, 22516, 25824, 18911, 4514, -11668, -23234, -25605,
+	-17842, -3018, 13000, 23873, 25299, 16712, 1511, -14287,
+	-24432, -24907, -15526, 0, 15526, 24907, 24432, 14287,
+	-1511, -16712, -25299, -23873, -12999, 3018, 17842, 25605,
+	23234, 11668, -4514, -18911, -25824, -22516, -10298, 5996,
+	19917, 25956, 21722, 8892, -7456, -20855, -26000, -20855,
+	-7456, 8892, 21722, 25956, 19917, 5995, -10298, -22516,
+	-25824, -18911, -4514, 11668, 23234, 25604, 17842, 3018,
+	-13000, -23873, -25299, -16712, -1511, 14287, 24432, 24907,
+	15526, 0, -15526, -24907, -24432, -14287, 1511, 16712,
+	25299, 23873, 12999, -3018, -17842, -25605, -23234, -11668,
+	4514, 18911, 25824, 22516, 10298, -5996, -19917, -25956,
+	-21722, -8892, 7456, 20855, 26000, 20855, 7456, -8892,
+	-21722, -25956, -19917, -5995, 10298, 22516, 25824, 18911,
+	4514, -11668, -23234, -25604, -17842, -3018, 13000, 23873,
+	25299, 16712, 1511, -14287, -24432, -24907, -15526, 0,
+	15526, 24907, 24431, 14287, -1511, -16712, -25299, -23873,
+	-12999, 3018, 17842, 25605, 23234, 11668, -4514, -18911,
+	-25824, -22516, -10298, 5996, 19917, 25956, 21722, 8892,
+	-7456, -20855, -26000, -20855, -7456, 8892, 21722, 25956,
+	19917, 5995, -10298, -22516, -25824, -18911, -4514, 11668,
+	23234, 25604, 17842, 3018, -13000, -23873, -25299, -16712,
+	-1511, 14287, 24432, 24907, 15526, 0, -15526, -24907,
+	-24431, -14287, 1511, 16712, 25299, 23873, 12999, -3018,
+	-17842, -25605, -23234, -11668, 4514, 18911, 25824, 22516,
+	10298, -5996, -19917, -25956, -21722, -8892, 7456, 20855},
+	{
+// Carrier 16 Phase 5
+	24020, 13326, -2642, -17565, -25536, -23401, -12005, 4141,
+	18650, 25777, 22703, 10644, -5627, -19671, -25931, -21928,
+	-9246, 7093, 20627, 25997, 21078, 7818, -8536, -21512,
+	-25975, -20158, -6363, 9949, 22325, 25865, 19169, 4886,
+	-11329, -23062, -25667, -18115, -3393, 12671, 23721, 25383,
+	17000, 1889, -13969, -24300, -25013, -15827, -378, 15221,
+	24796, 24558, 14601, -1134, -16421, -25209, -24020, -13326,
+	2642, 17565, 25536, 23401, 12005, -4141, -18650, -25777,
+	-22703, -10644, 5627, 19672, 25931, 21928, 9246, -7093,
+	-20627, -25997, -21078, -7818, 8536, 21512, 25975, 20158,
+	6363, -9949, -22325, -25865, -19169, -4886, 11329, 23062,
+	25667, 18115, 3393, -12671, -23721, -25383, -17000, -1889,
+	13969, 24300, 25013, 15827, 378, -15221, -24796, -24558,
+	-14601, 1134, 16421, 25209, 24020, 13326, -2642, -17565,
+	-25536, -23401, -12005, 4142, 18650, 25777, 22703, 10644,
+	-5627, -19672, -25931, -21928, -9246, 7093, 20627, 25997,
+	21078, 7818, -8536, -21512, -25975, -20158, -6363, 9949,
+	22325, 25865, 19169, 4886, -11329, -23062, -25667, -18115,
+	-3393, 12671, 23721, 25383, 17000, 1889, -13969, -24300,
+	-25013, -15827, -378, 15221, 24796, 24558, 14601, -1134,
+	-16421, -25209, -24020, -13326, 2642, 17565, 25536, 23401,
+	12005, -4142, -18650, -25777, -22703, -10644, 5627, 19672,
+	25931, 21928, 9246, -7093, -20627, -25997, -21078, -7818,
+	8536, 21512, 25975, 20158, 6363, -9949, -22325, -25865,
+	-19169, -4886, 11329, 23062, 25667, 18115, 3393, -12671,
+	-23721, -25383, -17000, -1889, 13969, 24300, 25013, 15827,
+	378, -15221, -24796, -24558, -14601, 1134, 16421, 25209},
+	{
+// Carrier 16 Phase 6
+	18384, 3768, -12339, -23564, -25462, -17284, -2266, 13649,
+	24163, 25114, 16126, 756, -14912, -24680, -24680, -14912,
+	756, 16126, 25114, 24163, 13649, -2266, -17284, -25462,
+	-23563, -12339, 3768, 18384, 25725, 22885, 10988, -5257,
+	-19422, -25901, -22129, -9599, 6729, 20394, 25989, 21297,
+	8178, -8178, -21297, -25989, -20394, -6729, 9599, 22129,
+	25901, 19422, 5257, -10988, -22885, -25725, -18384, -3768,
+	12339, 23564, 25462, 17284, 2266, -13649, -24163, -25114,
+	-16126, -756, 14913, 24680, 24680, 14912, -756, -16126,
+	-25114, -24163, -13649, 2266, 17284, 25462, 23563, 12339,
+	-3768, -18384, -25725, -22885, -10988, 5257, 19422, 25901,
+	22129, 9599, -6729, -20394, -25989, -21297, -8178, 8178,
+	21297, 25989, 20394, 6729, -9599, -22129, -25901, -19422,
+	-5257, 10988, 22885, 25725, 18384, 3768, -12339, -23564,
+	-25462, -17284, -2266, 13649, 24163, 25114, 16126, 756,
+	-14913, -24680, -24680, -14912, 756, 16126, 25114, 24163,
+	13649, -2266, -17284, -25462, -23563, -12339, 3768, 18384,
+	25725, 22885, 10988, -5257, -19422, -25901, -22129, -9599,
+	6729, 20394, 25989, 21297, 8178, -8178, -21297, -25988,
+	-20394, -6729, 9599, 22129, 25901, 19422, 5257, -10988,
+	-22885, -25725, -18384, -3768, 12339, 23564, 25462, 17284,
+	2265, -13649, -24163, -25114, -16126, -756, 14913, 24680,
+	24680, 14912, -756, -16126, -25114, -24163, -13649, 2266,
+	17284, 25462, 23563, 12339, -3768, -18384, -25725, -22885,
+	-10988, 5257, 19422, 25901, 22128, 9599, -6729, -20394,
+	-25989, -21297, -8178, 8178, 21297, 25988, 20394, 6729,
+	-9599, -22129, -25901, -19422, -5257, 10988, 22885, 25725},
+	{
+// Carrier 16 Phase 7
+	9949, -6363, -20158, -25975, -21512, -8536, 7818, 21078,
+	25997, 20627, 7093, -9246, -21928, -25931, -19671, -5627,
+	10644, 22703, 25777, 18650, 4141, -12005, -23401, -25536,
+	-17565, -2642, 13326, 24020, 25209, 16421, 1134, -14601,
+	-24558, -24796, -15221, 378, 15827, 25013, 24300, 13969,
+	-1889, -17000, -25383, -23721, -12671, 3393, 18115, 25667,
+	23062, 11329, -4886, -19169, -25865, -22325, -9949, 6363,
+	20158, 25975, 21512, 8536, -7818, -21078, -25997, -20627,
+	-7093, 9246, 21928, 25931, 19671, 5627, -10644, -22703,
+	-25777, -18650, -4141, 12005, 23401, 25536, 17565, 2642,
+	-13326, -24020, -25209, -16421, -1134, 14601, 24558, 24796,
+	15221, -378, -15827, -25013, -24300, -13969, 1889, 17000,
+	25383, 23721, 12671, -3393, -18115, -25667, -23062, -11329,
+	4886, 19169, 25865, 22325, 9949, -6363, -20158, -25975,
+	-21512, -8536, 7818, 21078, 25997, 20627, 7093, -9246,
+	-21928, -25931, -19671, -5627, 10644, 22703, 25777, 18650,
+	4141, -12005, -23401, -25536, -17565, -2642, 13326, 24020,
+	25209, 16421, 1134, -14601, -24558, -24796, -15221, 378,
+	15827, 25013, 24300, 13969, -1889, -17000, -25383, -23721,
+	-12671, 3393, 18115, 25667, 23062, 11329, -4886, -19169,
+	-25865, -22325, -9949, 6363, 20158, 25975, 21512, 8536,
+	-7818, -21078, -25997, -20627, -7093, 9246, 21928, 25931,
+	19671, 5627, -10644, -22703, -25777, -18650, -4141, 12005,
+	23401, 25536, 17565, 2642, -13326, -24020, -25209, -16420,
+	-1134, 14601, 24558, 24796, 15221, -378, -15827, -25013,
+	-24300, -13969, 1889, 17000, 25383, 23721, 12671, -3393,
+	-18115, -25667, -23062, -11329, 4886, 19169, 25865, 22325},
+	},{{
+
+// Carrier 17 Phase 0
+	0, 16126, 25299, 23564, 11668, -5257, -19917, -25989,
+	-20855, -6729, 10298, 22885, 25604, 17284, 1511, -14913,
+	-24907, -24163, -12999, 3768, 18911, 25901, 21722, 8178,
+	-8892, -22129, -25824, -18384, -3018, 13649, 24432, 24680,
+	14287, -2266, -17842, -25725, -22516, -9599, 7456, 21298,
+	25956, 19422, 4514, -12339, -23873, -25114, -15526, 756,
+	16712, 25462, 23234, 10987, -5996, -20394, -26000, -20394,
+	-5995, 10988, 23234, 25462, 16712, 756, -15526, -25114,
+	-23873, -12339, 4515, 19422, 25956, 21297, 7456, -9599,
+	-22516, -25725, -17842, -2265, 14287, 24680, 24431, 13649,
+	-3018, -18384, -25824, -22128, -8892, 8178, 21722, 25901,
+	18911, 3768, -13000, -24163, -24907, -14912, 1511, 17284,
+	25605, 22885, 10297, -6729, -20855, -25988, -19916, -5257,
+	11669, 23564, 25299, 16125, 0, -16126, -25299, -23563,
+	-11668, 5257, 19917, 25989, 20855, 6729, -10298, -22885,
+	-25604, -17284, -1511, 14913, 24907, 24162, 12999, -3768,
+	-18911, -25901, -21722, -8177, 8892, 22129, 25824, 18384,
+	3018, -13649, -24432, -24680, -14286, 2266, 17842, 25725,
+	22516, 9599, -7457, -21298, -25955, -19422, -4514, 12339,
+	23873, 25113, 15525, -756, -16712, -25462, -23234, -10987,
+	5996, 20395, 26000, 20394, 5995, -10988, -23234, -25462,
+	-16712, -755, 15526, 25114, 23873, 12339, -4515, -19422,
+	-25956, -21297, -7456, 9599, 22516, 25725, 17841, 2265,
+	-14287, -24680, -24431, -13649, 3018, 18385, 25824, 22128,
+	8892, -8178, -21722, -25901, -18911, -3767, 13000, 24163,
+	24907, 14912, -1512, -17285, -25605, -22885, -10297, 6729,
+	20855, 25988, 19916, 5257, -11669, -23564, -25299, -16125},
+	{
+// Carrier 17 Phase 1
+	9949, 22703, 25667, 17565, 1889, -14601, -24796, -24300,
+	-13326, 3393, 18650, 25865, 21928, 8536, -8536, -21928,
+	-25865, -18650, -3393, 13326, 24300, 24796, 14601, -1889,
+	-17565, -25667, -22703, -9949, 7093, 21078, 25975, 19671,
+	4886, -12005, -23721, -25209, -15827, 378, 16421, 25383,
+	23401, 11329, -5627, -20158, -25997, -20627, -6363, 10644,
+	23062, 25536, 17000, 1133, -15221, -25013, -24020, -12671,
+	4142, 19169, 25931, 21512, 7818, -9247, -22325, -25777,
+	-18115, -2642, 13969, 24558, 24558, 13969, -2642, -18115,
+	-25777, -22325, -9246, 7818, 21512, 25931, 19169, 4141,
+	-12671, -24020, -25013, -15221, 1134, 17000, 25536, 23062,
+	10644, -6363, -20627, -25997, -20157, -5627, 11329, 23401,
+	25383, 16420, 377, -15827, -25209, -23721, -12005, 4887,
+	19672, 25975, 21078, 7093, -9949, -22703, -25667, -17565,
+	-1888, 14601, 24796, 24299, 13325, -3393, -18650, -25865,
+	-21928, -8535, 8536, 21928, 25865, 18650, 3393, -13326,
+	-24300, -24796, -14601, 1889, 17565, 25668, 22703, 9949,
+	-7094, -21078, -25975, -19671, -4886, 12005, 23721, 25209,
+	15827, -378, -16421, -25383, -23401, -11329, 5627, 20158,
+	25997, 20626, 6362, -10644, -23062, -25536, -17000, -1133,
+	15221, 25013, 24020, 12670, -4142, -19169, -25931, -21512,
+	-7817, 9247, 22325, 25777, 18115, 2642, -13970, -24558,
+	-24558, -13969, 2642, 18115, 25777, 22324, 9246, -7818,
+	-21512, -25931, -19168, -4141, 12671, 24021, 25013, 15220,
+	-1134, -17000, -25536, -23062, -10643, 6363, 20627, 25997,
+	20157, 5626, -11330, -23401, -25383, -16420, -377, 15828,
+	25209, 23721, 12005, -4887, -19672, -25975, -21078, -7093},
+	{
+// Carrier 17 Phase 2
+	18384, 25824, 22129, 8892, -8178, -21722, -25901, -18911,
+	-3768, 13000, 24163, 24907, 14912, -1511, -17284, -25605,
+	-22885, -10298, 6729, 20855, 25989, 19917, 5257, -11668,
+	-23564, -25299, -16126, 0, 16126, 25299, 23563, 11668,
+	-5257, -19917, -25989, -20855, -6729, 10298, 22885, 25604,
+	17284, 1511, -14913, -24907, -24163, -12999, 3768, 18911,
+	25901, 21722, 8178, -8892, -22129, -25824, -18384, -3018,
+	13649, 24432, 24680, 14287, -2266, -17842, -25725, -22516,
+	-9599, 7457, 21298, 25956, 19422, 4514, -12339, -23873,
+	-25114, -15525, 756, 16712, 25462, 23234, 10987, -5996,
+	-20394, -26000, -20394, -5995, 10988, 23234, 25462, 16712,
+	755, -15526, -25114, -23873, -12339, 4515, 19422, 25956,
+	21297, 7456, -9599, -22516, -25725, -17842, -2265, 14287,
+	24680, 24431, 13649, -3018, -18384, -25824, -22128, -8892,
+	8178, 21722, 25901, 18911, 3767, -13000, -24163, -24907,
+	-14912, 1512, 17284, 25605, 22885, 10297, -6729, -20855,
+	-25988, -19916, -5257, 11669, 23564, 25299, 16125, 0,
+	-16126, -25299, -23563, -11668, 5257, 19917, 25989, 20854,
+	6728, -10298, -22885, -25604, -17284, -1511, 14913, 24907,
+	24162, 12999, -3768, -18911, -25901, -21722, -8177, 8892,
+	22129, 25824, 18384, 3018, -13649, -24432, -24680, -14286,
+	2266, 17842, 25725, 22516, 9598, -7457, -21298, -25955,
+	-19422, -4514, 12339, 23873, 25113, 15525, -756, -16712,
+	-25462, -23234, -10987, 5996, 20395, 26000, 20394, 5995,
+	-10988, -23234, -25462, -16712, -755, 15526, 25114, 23873,
+	12339, -4515, -19422, -25956, -21297, -7456, 9599, 22516,
+	25725, 17841, 2265, -14287, -24680, -24431, -13648, 3018},
+	{
+// Carrier 17 Phase 3
+	24020, 25013, 15221, -1134, -17000, -25536, -23062, -10644,
+	6363, 20627, 25997, 20158, 5627, -11329, -23401, -25383,
+	-16421, -378, 15827, 25209, 23721, 12005, -4886, -19672,
+	-25975, -21078, -7093, 9949, 22703, 25667, 17565, 1889,
+	-14601, -24796, -24300, -13326, 3393, 18650, 25865, 21928,
+	8536, -8536, -21928, -25865, -18650, -3393, 13326, 24300,
+	24796, 14601, -1889, -17565, -25667, -22703, -9949, 7093,
+	21078, 25975, 19671, 4886, -12005, -23721, -25209, -15827,
+	378, 16421, 25383, 23401, 11329, -5627, -20158, -25997,
+	-20627, -6363, 10644, 23062, 25536, 17000, 1133, -15221,
+	-25013, -24020, -12670, 4142, 19169, 25931, 21512, 7818,
+	-9247, -22325, -25777, -18115, -2642, 13969, 24558, 24558,
+	13969, -2642, -18115, -25777, -22325, -9246, 7818, 21512,
+	25931, 19169, 4141, -12671, -24020, -25013, -15220, 1134,
+	17000, 25536, 23062, 10643, -6363, -20627, -25997, -20157,
+	-5627, 11329, 23401, 25383, 16420, 377, -15828, -25209,
+	-23721, -12005, 4887, 19672, 25975, 21078, 7093, -9950,
+	-22703, -25667, -17565, -1888, 14601, 24796, 24299, 13325,
+	-3394, -18650, -25865, -21927, -8535, 8536, 21928, 25865,
+	18649, 3393, -13326, -24300, -24796, -14601, 1889, 17565,
+	25668, 22703, 9949, -7094, -21079, -25975, -19671, -4886,
+	12005, 23721, 25209, 15827, -378, -16421, -25383, -23401,
+	-11329, 5627, 20158, 25997, 20626, 6362, -10644, -23062,
+	-25536, -17000, -1133, 15221, 25013, 24020, 12670, -4142,
+	-19169, -25931, -21512, -7817, 9247, 22325, 25777, 18115,
+	2642, -13970, -24558, -24558, -13969, 2642, 18115, 25777,
+	22324, 9246, -7818, -21512, -25931, -19168, -4141, 12671},
+	{
+// Carrier 17 Phase 4
+	26000, 20394, 5996, -10988, -23234, -25462, -16712, -756,
+	15526, 25114, 23873, 12339, -4514, -19422, -25956, -21297,
+	-7456, 9599, 22516, 25725, 17842, 2266, -14287, -24680,
+	-24431, -13649, 3018, 18384, 25824, 22129, 8892, -8178,
+	-21722, -25901, -18911, -3768, 13000, 24163, 24907, 14912,
+	-1511, -17284, -25605, -22885, -10297, 6729, 20855, 25988,
+	19917, 5257, -11668, -23564, -25299, -16126, 0, 16126,
+	25299, 23563, 11668, -5257, -19917, -25989, -20855, -6729,
+	10298, 22885, 25604, 17284, 1511, -14913, -24907, -24162,
+	-12999, 3768, 18911, 25901, 21722, 8178, -8892, -22129,
+	-25824, -18384, -3018, 13649, 24432, 24680, 14287, -2266,
+	-17842, -25725, -22516, -9599, 7457, 21298, 25956, 19422,
+	4514, -12339, -23873, -25114, -15525, 756, 16712, 25462,
+	23234, 10987, -5996, -20394, -26000, -20394, -5995, 10988,
+	23234, 25462, 16712, 755, -15526, -25114, -23873, -12339,
+	4515, 19422, 25956, 21297, 7456, -9599, -22516, -25725,
+	-17842, -2265, 14287, 24680, 24431, 13649, -3018, -18384,
+	-25824, -22128, -8892, 8178, 21722, 25901, 18911, 3767,
+	-13000, -24163, -24907, -14912, 1512, 17284, 25605, 22885,
+	10297, -6729, -20855, -25988, -19916, -5257, 11669, 23564,
+	25299, 16125, 0, -16126, -25299, -23563, -11668, 5258,
+	19917, 25989, 20854, 6728, -10298, -22885, -25604, -17284,
+	-1511, 14913, 24907, 24162, 12999, -3768, -18912, -25901,
+	-21722, -8177, 8892, 22129, 25824, 18384, 3017, -13649,
+	-24432, -24680, -14286, 2266, 17842, 25725, 22516, 9598,
+	-7457, -21298, -25955, -19422, -4514, 12340, 23873, 25113,
+	15525, -756, -16712, -25462, -23234, -10987, 5996, 20395},
+	{
+// Carrier 17 Phase 5
+	24020, 12671, -4141, -19169, -25931, -21512, -7818, 9246,
+	22325, 25777, 18115, 2642, -13969, -24558, -24558, -13969,
+	2642, 18115, 25777, 22325, 9246, -7818, -21512, -25931,
+	-19169, -4141, 12671, 24020, 25013, 15221, -1134, -17000,
+	-25536, -23062, -10644, 6363, 20627, 25997, 20158, 5627,
+	-11329, -23401, -25383, -16420, -378, 15827, 25209, 23721,
+	12005, -4886, -19672, -25975, -21078, -7093, 9949, 22703,
+	25667, 17565, 1888, -14601, -24796, -24300, -13326, 3393,
+	18650, 25865, 21928, 8536, -8536, -21928, -25865, -18650,
+	-3393, 13326, 24300, 24796, 14601, -1889, -17565, -25667,
+	-22703, -9949, 7094, 21078, 25975, 19671, 4886, -12005,
+	-23721, -25209, -15827, 378, 16421, 25383, 23401, 11329,
+	-5627, -20158, -25997, -20627, -6363, 10644, 23062, 25536,
+	17000, 1133, -15221, -25013, -24020, -12670, 4142, 19169,
+	25931, 21512, 7818, -9247, -22325, -25777, -18115, -2642,
+	13970, 24558, 24558, 13969, -2642, -18115, -25777, -22325,
+	-9246, 7818, 21512, 25931, 19169, 4141, -12671, -24020,
+	-25013, -15220, 1134, 17000, 25536, 23062, 10643, -6363,
+	-20627, -25997, -20157, -5627, 11329, 23401, 25383, 16420,
+	377, -15828, -25209, -23721, -12005, 4887, 19672, 25975,
+	21078, 7093, -9950, -22703, -25667, -17565, -1888, 14601,
+	24796, 24299, 13325, -3394, -18650, -25865, -21927, -8535,
+	8536, 21928, 25865, 18649, 3393, -13326, -24300, -24796,
+	-14601, 1889, 17565, 25668, 22703, 9949, -7094, -21079,
+	-25975, -19671, -4886, 12005, 23721, 25209, 15827, -378,
+	-16421, -25383, -23401, -11329, 5627, 20158, 25997, 20626,
+	6362, -10644, -23062, -25536, -17000, -1133, 15221, 25013},
+	{
+// Carrier 17 Phase 6
+	18384, 3018, -13649, -24432, -24680, -14287, 2266, 17842,
+	25725, 22516, 9599, -7456, -21297, -25956, -19422, -4514,
+	12339, 23873, 25114, 15526, -756, -16712, -25462, -23234,
+	-10988, 5996, 20394, 26000, 20394, 5995, -10988, -23234,
+	-25462, -16712, -756, 15526, 25114, 23873, 12339, -4514,
+	-19422, -25956, -21297, -7456, 9599, 22516, 25725, 17842,
+	2265, -14287, -24680, -24431, -13649, 3018, 18384, 25824,
+	22128, 8892, -8178, -21722, -25901, -18911, -3768, 13000,
+	24163, 24907, 14912, -1511, -17284, -25605, -22885, -10297,
+	6729, 20855, 25988, 19917, 5257, -11668, -23564, -25299,
+	-16125, 0, 16126, 25299, 23563, 11668, -5257, -19917,
+	-25989, -20855, -6729, 10298, 22885, 25604, 17284, 1511,
+	-14913, -24907, -24162, -12999, 3768, 18911, 25901, 21722,
+	8177, -8892, -22129, -25824, -18384, -3018, 13649, 24432,
+	24680, 14287, -2266, -17842, -25725, -22516, -9599, 7457,
+	21298, 25955, 19422, 4514, -12339, -23873, -25113, -15525,
+	756, 16712, 25462, 23234, 10987, -5996, -20395, -26000,
+	-20394, -5995, 10988, 23234, 25462, 16712, 755, -15526,
+	-25114, -23873, -12339, 4515, 19422, 25956, 21297, 7456,
+	-9599, -22516, -25725, -17842, -2265, 14287, 24680, 24431,
+	13649, -3018, -18385, -25824, -22128, -8892, 8178, 21722,
+	25901, 18911, 3767, -13000, -24163, -24907, -14912, 1512,
+	17285, 25605, 22885, 10297, -6729, -20855, -25988, -19916,
+	-5257, 11669, 23564, 25299, 16125, 0, -16126, -25299,
+	-23563, -11668, 5258, 19917, 25989, 20854, 6728, -10298,
+	-22885, -25604, -17284, -1511, 14913, 24907, 24162, 12999,
+	-3768, -18912, -25901, -21722, -8177, 8893, 22129, 25824},
+	{
+// Carrier 17 Phase 7
+	9949, -7093, -21078, -25975, -19671, -4886, 12005, 23721,
+	25209, 15827, -378, -16421, -25383, -23401, -11329, 5627,
+	20158, 25997, 20627, 6363, -10644, -23062, -25536, -17000,
+	-1134, 15221, 25013, 24020, 12671, -4142, -19169, -25931,
+	-21512, -7818, 9247, 22325, 25777, 18115, 2642, -13969,
+	-24558, -24558, -13969, 2642, 18115, 25777, 22325, 9246,
+	-7818, -21512, -25931, -19169, -4141, 12671, 24020, 25013,
+	15221, -1134, -17000, -25536, -23062, -10644, 6363, 20627,
+	25997, 20158, 5627, -11329, -23401, -25383, -16420, -377,
+	15827, 25209, 23721, 12005, -4886, -19672, -25975, -21078,
+	-7093, 9949, 22703, 25667, 17565, 1888, -14601, -24796,
+	-24300, -13325, 3393, 18650, 25865, 21928, 8536, -8536,
+	-21928, -25865, -18650, -3393, 13326, 24300, 24796, 14601,
+	-1889, -17565, -25667, -22703, -9949, 7094, 21078, 25975,
+	19671, 4886, -12005, -23721, -25209, -15827, 378, 16421,
+	25383, 23401, 11329, -5627, -20158, -25997, -20627, -6363,
+	10644, 23062, 25536, 17000, 1133, -15221, -25013, -24020,
+	-12670, 4142, 19169, 25931, 21512, 7818, -9247, -22325,
+	-25777, -18115, -2642, 13970, 24558, 24558, 13969, -2642,
+	-18115, -25777, -22325, -9246, 7818, 21512, 25931, 19168,
+	4141, -12671, -24021, -25013, -15220, 1134, 17000, 25536,
+	23062, 10643, -6363, -20627, -25997, -20157, -5627, 11330,
+	23401, 25383, 16420, 377, -15828, -25209, -23721, -12005,
+	4887, 19672, 25975, 21078, 7093, -9950, -22703, -25667,
+	-17565, -1888, 14602, 24796, 24299, 13325, -3394, -18650,
+	-25865, -21927, -8535, 8536, 21928, 25865, 18649, 3393,
+	-13326, -24300, -24796, -14601, 1889, 17565, 25668, 22703},
+	},{{
+
+// Carrier 18 Phase 0
+	0, 16712, 25605, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712,
+	0, 16712, 25604, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712,
+	0, 16712, 25604, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712},
+	{
+// Carrier 18 Phase 1
+	9949, 23062, 25383, 15827, -1134, -17565, -25777, -21928,
+	-7818, 9949, 23062, 25383, 15827, -1134, -17565, -25777,
+	-21928, -7818, 9949, 23062, 25383, 15827, -1134, -17565,
+	-25777, -21928, -7818, 9949, 23062, 25383, 15827, -1134,
+	-17565, -25777, -21928, -7818, 9949, 23062, 25383, 15827,
+	-1134, -17565, -25777, -21928, -7818, 9949, 23062, 25383,
+	15827, -1134, -17565, -25777, -21928, -7818, 9949, 23062,
+	25383, 15827, -1134, -17565, -25777, -21928, -7818, 9949,
+	23062, 25383, 15827, -1134, -17565, -25777, -21928, -7818,
+	9949, 23062, 25383, 15827, -1134, -17565, -25777, -21928,
+	-7818, 9949, 23062, 25383, 15827, -1133, -17565, -25777,
+	-21928, -7818, 9949, 23062, 25383, 15827, -1133, -17565,
+	-25777, -21928, -7818, 9949, 23062, 25383, 15827, -1133,
+	-17565, -25777, -21928, -7818, 9949, 23062, 25383, 15827,
+	-1133, -17565, -25777, -21928, -7818, 9949, 23062, 25383,
+	15827, -1133, -17565, -25777, -21928, -7818, 9949, 23062,
+	25383, 15827, -1133, -17565, -25777, -21928, -7818, 9949,
+	23062, 25383, 15827, -1133, -17565, -25777, -21928, -7818,
+	9949, 23062, 25383, 15827, -1133, -17565, -25777, -21928,
+	-7818, 9949, 23062, 25383, 15827, -1133, -17565, -25777,
+	-21928, -7818, 9949, 23062, 25383, 15827, -1133, -17565,
+	-25777, -21928, -7818, 9949, 23062, 25383, 15827, -1133,
+	-17565, -25777, -21928, -7818, 9949, 23062, 25383, 15827,
+	-1133, -17565, -25777, -21928, -7818, 9949, 23062, 25383,
+	15827, -1133, -17565, -25777, -21928, -7818, 9949, 23062,
+	25383, 15828, -1133, -17565, -25777, -21928, -7818, 9949,
+	23062, 25383, 15828, -1133, -17565, -25777, -21928, -7818},
+	{
+// Carrier 18 Phase 2
+	18384, 25901, 21297, 6729, -10988, -23563, -25114, -14913,
+	2266, 18384, 25901, 21297, 6729, -10988, -23563, -25114,
+	-14913, 2266, 18384, 25901, 21297, 6729, -10988, -23563,
+	-25114, -14913, 2266, 18384, 25901, 21297, 6729, -10988,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21297, 6729,
+	-10988, -23563, -25114, -14913, 2265, 18384, 25901, 21297,
+	6729, -10988, -23563, -25114, -14913, 2265, 18384, 25901,
+	21297, 6729, -10988, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265,
+	18384, 25901, 21298, 6729, -10987, -23563, -25114, -14913,
+	2265, 18384, 25901, 21298, 6729, -10987, -23563, -25114,
+	-14913, 2265, 18384, 25901, 21298, 6729, -10987, -23563,
+	-25114, -14913, 2265, 18384, 25901, 21298, 6729, -10987,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21298, 6729,
+	-10987, -23563, -25114, -14913, 2265, 18384, 25901, 21298,
+	6729, -10987, -23563, -25114, -14913, 2265, 18384, 25901,
+	21298, 6729, -10987, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265,
+	18384, 25901, 21298, 6729, -10987, -23563, -25114, -14913,
+	2265, 18384, 25901, 21298, 6729, -10987, -23563, -25114,
+	-14913, 2265, 18384, 25901, 21298, 6729, -10987, -23563,
+	-25114, -14913, 2265, 18384, 25901, 21298, 6729, -10987,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21298, 6729,
+	-10987, -23563, -25114, -14913, 2265, 18384, 25901, 21298,
+	6729, -10987, -23563, -25114, -14913, 2265, 18384, 25901,
+	21298, 6729, -10987, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265},
+	{
+// Carrier 18 Phase 3
+	24020, 24796, 13969, -3393, -19169, -25975, -20627, -5627,
+	12005, 24020, 24796, 13969, -3393, -19169, -25975, -20627,
+	-5627, 12005, 24020, 24796, 13969, -3393, -19169, -25975,
+	-20627, -5627, 12005, 24020, 24796, 13969, -3393, -19169,
+	-25975, -20627, -5627, 12005, 24020, 24796, 13969, -3393,
+	-19169, -25975, -20627, -5627, 12005, 24020, 24796, 13969,
+	-3393, -19169, -25975, -20627, -5627, 12005, 24020, 24796,
+	13969, -3393, -19169, -25975, -20627, -5627, 12005, 24020,
+	24796, 13969, -3393, -19169, -25975, -20627, -5627, 12005,
+	24020, 24796, 13969, -3393, -19169, -25975, -20627, -5627,
+	12005, 24020, 24796, 13969, -3393, -19169, -25975, -20627,
+	-5627, 12005, 24020, 24796, 13969, -3393, -19169, -25975,
+	-20627, -5627, 12005, 24020, 24796, 13969, -3393, -19169,
+	-25975, -20627, -5627, 12005, 24020, 24796, 13969, -3393,
+	-19169, -25975, -20627, -5627, 12005, 24020, 24796, 13969,
+	-3393, -19169, -25975, -20627, -5627, 12005, 24020, 24796,
+	13969, -3393, -19169, -25975, -20627, -5627, 12005, 24020,
+	24796, 13969, -3393, -19169, -25975, -20627, -5627, 12005,
+	24020, 24796, 13969, -3393, -19169, -25975, -20627, -5627,
+	12005, 24020, 24796, 13969, -3393, -19169, -25975, -20627,
+	-5627, 12005, 24020, 24796, 13969, -3393, -19169, -25975,
+	-20627, -5627, 12005, 24020, 24796, 13969, -3393, -19169,
+	-25975, -20627, -5627, 12005, 24020, 24796, 13969, -3393,
+	-19169, -25975, -20627, -5627, 12005, 24020, 24796, 13970,
+	-3393, -19169, -25975, -20627, -5627, 12005, 24020, 24796,
+	13970, -3393, -19169, -25975, -20627, -5627, 12005, 24020,
+	24796, 13970, -3393, -19169, -25975, -20627, -5627, 12005},
+	{
+// Carrier 18 Phase 4
+	26000, 19917, 4514, -12999, -24432, -24432, -13000, 4514,
+	19917, 26000, 19917, 4514, -12999, -24432, -24432, -13000,
+	4514, 19917, 26000, 19917, 4514, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4514, -12999, -24431,
+	-24432, -13000, 4514, 19917, 26000, 19917, 4514, -12999,
+	-24431, -24432, -13000, 4514, 19917, 26000, 19917, 4514,
+	-12999, -24431, -24432, -13000, 4514, 19917, 26000, 19917,
+	4514, -12999, -24431, -24432, -13000, 4514, 19917, 26000,
+	19917, 4514, -12999, -24431, -24432, -13000, 4514, 19917,
+	26000, 19917, 4514, -12999, -24431, -24432, -13000, 4514,
+	19917, 26000, 19917, 4514, -12999, -24431, -24432, -13000,
+	4514, 19917, 26000, 19917, 4514, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4514, -12999, -24431,
+	-24432, -13000, 4514, 19917, 26000, 19917, 4515, -12999,
+	-24431, -24432, -13000, 4514, 19917, 26000, 19917, 4515,
+	-12999, -24431, -24432, -13000, 4514, 19917, 26000, 19917,
+	4515, -12999, -24431, -24432, -13000, 4514, 19917, 26000,
+	19917, 4515, -12999, -24431, -24432, -13000, 4514, 19917,
+	26000, 19917, 4515, -12999, -24431, -24432, -13000, 4514,
+	19917, 26000, 19917, 4515, -12999, -24431, -24432, -13000,
+	4514, 19917, 26000, 19917, 4515, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4515, -12999, -24431,
+	-24432, -13000, 4514, 19916, 26000, 19917, 4515, -12999,
+	-24431, -24432, -13000, 4514, 19916, 26000, 19917, 4515,
+	-12999, -24431, -24432, -13000, 4514, 19916, 26000, 19917,
+	4515, -12999, -24431, -24432, -13000, 4514, 19916, 26000,
+	19917, 4515, -12999, -24431, -24432, -13000, 4514, 19916},
+	{
+// Carrier 18 Phase 5
+	24020, 12005, -5627, -20627, -25975, -19169, -3393, 13969,
+	24796, 24020, 12005, -5627, -20627, -25975, -19169, -3393,
+	13969, 24796, 24020, 12005, -5627, -20627, -25975, -19169,
+	-3393, 13969, 24796, 24020, 12005, -5627, -20627, -25975,
+	-19169, -3393, 13969, 24796, 24020, 12005, -5627, -20627,
+	-25975, -19169, -3393, 13969, 24796, 24020, 12005, -5627,
+	-20627, -25975, -19169, -3393, 13969, 24796, 24020, 12005,
+	-5627, -20627, -25975, -19169, -3393, 13969, 24796, 24020,
+	12005, -5627, -20627, -25975, -19169, -3393, 13969, 24796,
+	24020, 12005, -5627, -20627, -25975, -19169, -3393, 13969,
+	24796, 24020, 12005, -5627, -20627, -25975, -19169, -3393,
+	13969, 24796, 24020, 12005, -5627, -20627, -25975, -19169,
+	-3393, 13969, 24796, 24020, 12005, -5627, -20627, -25975,
+	-19169, -3393, 13969, 24796, 24020, 12005, -5627, -20627,
+	-25975, -19169, -3393, 13969, 24796, 24020, 12005, -5627,
+	-20627, -25975, -19169, -3393, 13969, 24796, 24020, 12005,
+	-5627, -20627, -25975, -19169, -3393, 13969, 24796, 24020,
+	12005, -5627, -20627, -25975, -19169, -3393, 13969, 24796,
+	24020, 12005, -5627, -20627, -25975, -19169, -3393, 13969,
+	24796, 24020, 12005, -5627, -20627, -25975, -19169, -3393,
+	13969, 24796, 24020, 12005, -5627, -20627, -25975, -19169,
+	-3393, 13969, 24796, 24020, 12005, -5627, -20627, -25975,
+	-19169, -3393, 13969, 24796, 24020, 12005, -5627, -20627,
+	-25975, -19169, -3393, 13969, 24796, 24020, 12005, -5627,
+	-20627, -25975, -19169, -3393, 13969, 24796, 24020, 12005,
+	-5627, -20627, -25975, -19169, -3393, 13969, 24796, 24020,
+	12005, -5627, -20627, -25975, -19169, -3393, 13969, 24796},
+	{
+// Carrier 18 Phase 6
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25114, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25114, -23564, -10988, 6729, 21297, 25901,
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25114, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25114, -23564, -10988, 6729, 21297, 25901,
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25113, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25113, -23564, -10988, 6729, 21297, 25901},
+	{
+// Carrier 18 Phase 7
+	9949, -7818, -21928, -25777, -17565, -1134, 15827, 25383,
+	23062, 9949, -7818, -21928, -25777, -17565, -1134, 15827,
+	25383, 23062, 9949, -7818, -21928, -25777, -17565, -1134,
+	15827, 25383, 23062, 9949, -7818, -21928, -25777, -17565,
+	-1134, 15827, 25383, 23062, 9949, -7818, -21928, -25777,
+	-17565, -1134, 15827, 25383, 23062, 9949, -7818, -21928,
+	-25777, -17565, -1134, 15827, 25383, 23062, 9949, -7818,
+	-21928, -25777, -17565, -1134, 15827, 25383, 23062, 9949,
+	-7818, -21928, -25777, -17565, -1134, 15827, 25383, 23062,
+	9949, -7818, -21928, -25777, -17565, -1134, 15827, 25383,
+	23062, 9949, -7818, -21928, -25777, -17565, -1134, 15827,
+	25383, 23062, 9949, -7818, -21928, -25777, -17565, -1134,
+	15827, 25383, 23062, 9949, -7818, -21928, -25777, -17565,
+	-1134, 15827, 25383, 23062, 9949, -7818, -21928, -25777,
+	-17565, -1134, 15827, 25383, 23062, 9949, -7818, -21928,
+	-25777, -17565, -1134, 15827, 25383, 23062, 9949, -7818,
+	-21928, -25777, -17565, -1134, 15827, 25383, 23062, 9949,
+	-7818, -21928, -25777, -17565, -1134, 15827, 25383, 23062,
+	9949, -7818, -21928, -25777, -17565, -1134, 15827, 25383,
+	23062, 9949, -7818, -21928, -25777, -17565, -1134, 15827,
+	25383, 23062, 9949, -7818, -21928, -25777, -17565, -1134,
+	15827, 25383, 23062, 9949, -7818, -21928, -25777, -17565,
+	-1134, 15827, 25383, 23062, 9949, -7818, -21928, -25777,
+	-17565, -1134, 15827, 25383, 23062, 9950, -7818, -21928,
+	-25777, -17565, -1134, 15827, 25383, 23062, 9950, -7818,
+	-21928, -25777, -17565, -1134, 15827, 25383, 23062, 9950,
+	-7818, -21928, -25777, -17565, -1134, 15827, 25383, 23062},
+	},{{
+
+// Carrier 19 Phase 0
+	0, 17284, 25824, 21297, 5996, -12339, -24432, -24163,
+	-11668, 6729, 21722, 25725, 16712, -756, -17842, -25901,
+	-20855, -5257, 12999, 24680, 23873, 10988, -7456, -22129,
+	-25605, -16126, 1511, 18384, 25956, 20394, 4514, -13649,
+	-24907, -23564, -10298, 8178, 22516, 25462, 15526, -2266,
+	-18911, -25989, -19917, -3768, 14287, 25114, 23234, 9599,
+	-8892, -22885, -25299, -14912, 3018, 19422, 26000, 19422,
+	3018, -14913, -25299, -22885, -8892, 9599, 23234, 25114,
+	14287, -3768, -19917, -25989, -18911, -2266, 15526, 25462,
+	22516, 8178, -10298, -23564, -24907, -13649, 4514, 20394,
+	25956, 18384, 1511, -16126, -25605, -22129, -7456, 10988,
+	23873, 24680, 12999, -5257, -20855, -25901, -17842, -756,
+	16712, 25725, 21722, 6729, -11668, -24163, -24431, -12339,
+	5996, 21297, 25824, 17284, 0, -17284, -25824, -21297,
+	-5995, 12339, 24432, 24163, 11668, -6729, -21722, -25725,
+	-16712, 756, 17842, 25901, 20855, 5257, -13000, -24680,
+	-23873, -10988, 7456, 22129, 25604, 16126, -1511, -18384,
+	-25956, -20394, -4514, 13649, 24907, 23563, 10297, -8178,
+	-22516, -25462, -15526, 2266, 18911, 25989, 19917, 3768,
+	-14287, -25114, -23234, -9599, 8892, 22885, 25299, 14912,
+	-3018, -19422, -26000, -19422, -3018, 14913, 25299, 22885,
+	8892, -9599, -23234, -25114, -14287, 3768, 19917, 25988,
+	18911, 2265, -15526, -25462, -22516, -8178, 10298, 23564,
+	24907, 13649, -4514, -20394, -25956, -18384, -1511, 16126,
+	25605, 22128, 7456, -10988, -23873, -24680, -12999, 5257,
+	20855, 25901, 17842, 756, -16712, -25725, -21722, -6729,
+	11668, 24163, 24431, 12339, -5996, -21298, -25824, -17284},
+	{
+// Carrier 19 Phase 1
+	9949, 23401, 25013, 13969, -4141, -20158, -25975, -18650,
+	-1889, 15827, 25536, 22325, 7818, -10644, -23721, -24796,
+	-13326, 4886, 20627, 25931, 18115, 1134, -16421, -25667,
+	-21928, -7093, 11329, 24020, 24558, 12671, -5627, -21078,
+	-25865, -17565, -378, 17000, 25777, 21512, 6363, -12005,
+	-24300, -24300, -12005, 6363, 21512, 25777, 17000, -378,
+	-17565, -25865, -21078, -5627, 12671, 24558, 24020, 11329,
+	-7093, -21928, -25667, -16421, 1134, 18115, 25931, 20627,
+	4886, -13326, -24796, -23721, -10644, 7818, 22325, 25536,
+	15827, -1889, -18650, -25975, -20158, -4141, 13969, 25013,
+	23401, 9949, -8536, -22703, -25383, -15221, 2642, 19169,
+	25997, 19671, 3393, -14601, -25209, -23062, -9246, 9246,
+	23062, 25209, 14601, -3393, -19672, -25997, -19169, -2642,
+	15221, 25383, 22703, 8536, -9949, -23401, -25013, -13969,
+	4142, 20158, 25975, 18650, 1889, -15827, -25536, -22325,
+	-7818, 10644, 23721, 24796, 13326, -4886, -20627, -25931,
+	-18115, -1134, 16421, 25667, 21928, 7093, -11329, -24020,
+	-24558, -12671, 5627, 21078, 25865, 17565, 378, -17000,
+	-25777, -21512, -6363, 12005, 24300, 24300, 12005, -6363,
+	-21512, -25777, -17000, 378, 17565, 25865, 21078, 5627,
+	-12671, -24558, -24020, -11329, 7093, 21928, 25667, 16420,
+	-1134, -18115, -25931, -20627, -4886, 13326, 24796, 23721,
+	10644, -7818, -22325, -25536, -15827, 1889, 18650, 25975,
+	20158, 4141, -13969, -25013, -23401, -9949, 8536, 22703,
+	25383, 15221, -2642, -19169, -25997, -19671, -3393, 14601,
+	25209, 23062, 9246, -9247, -23062, -25209, -14601, 3393,
+	19672, 25997, 19169, 2642, -15221, -25383, -22703, -8536},
+	{
+// Carrier 19 Phase 2
+	18384, 25956, 20394, 4514, -13649, -24907, -23564, -10298,
+	8178, 22516, 25462, 15526, -2266, -18911, -25989, -19917,
+	-3768, 14287, 25114, 23234, 9599, -8892, -22885, -25299,
+	-14912, 3018, 19422, 26000, 19422, 3018, -14913, -25299,
+	-22885, -8892, 9599, 23234, 25114, 14287, -3768, -19917,
+	-25989, -18911, -2266, 15526, 25462, 22516, 8178, -10298,
+	-23564, -24907, -13649, 4514, 20394, 25956, 18384, 1511,
+	-16126, -25605, -22129, -7456, 10988, 23873, 24680, 12999,
+	-5257, -20855, -25901, -17842, -756, 16712, 25725, 21722,
+	6729, -11668, -24163, -24431, -12339, 5996, 21297, 25824,
+	17284, 0, -17284, -25824, -21297, -5995, 12339, 24432,
+	24163, 11668, -6729, -21722, -25725, -16712, 756, 17842,
+	25901, 20855, 5257, -13000, -24680, -23873, -10988, 7456,
+	22129, 25604, 16126, -1511, -18384, -25956, -20394, -4514,
+	13649, 24907, 23563, 10297, -8178, -22516, -25462, -15526,
+	2266, 18911, 25989, 19917, 3768, -14287, -25114, -23234,
+	-9599, 8892, 22885, 25299, 14912, -3018, -19422, -26000,
+	-19422, -3018, 14913, 25299, 22885, 8892, -9599, -23234,
+	-25114, -14287, 3768, 19917, 25988, 18911, 2265, -15526,
+	-25462, -22516, -8178, 10298, 23564, 24907, 13649, -4514,
+	-20394, -25956, -18384, -1511, 16126, 25605, 22128, 7456,
+	-10988, -23873, -24680, -12999, 5257, 20855, 25901, 17842,
+	756, -16712, -25725, -21722, -6729, 11668, 24163, 24431,
+	12339, -5996, -21298, -25824, -17284, 0, 17284, 25824,
+	21297, 5995, -12339, -24432, -24162, -11668, 6729, 21722,
+	25725, 16712, -756, -17842, -25901, -20855, -5257, 13000,
+	24680, 23873, 10987, -7457, -22129, -25604, -16126, 1511},
+	{
+// Carrier 19 Phase 3
+	24020, 24558, 12671, -5627, -21078, -25865, -17565, -378,
+	17000, 25777, 21512, 6363, -12005, -24300, -24300, -12005,
+	6363, 21512, 25777, 17000, -378, -17565, -25865, -21078,
+	-5627, 12671, 24558, 24020, 11329, -7093, -21928, -25667,
+	-16421, 1134, 18115, 25931, 20627, 4886, -13326, -24796,
+	-23721, -10644, 7818, 22325, 25536, 15827, -1889, -18650,
+	-25975, -20158, -4141, 13969, 25013, 23401, 9949, -8536,
+	-22703, -25383, -15221, 2642, 19169, 25997, 19671, 3393,
+	-14601, -25209, -23062, -9246, 9246, 23062, 25209, 14601,
+	-3393, -19672, -25997, -19169, -2642, 15221, 25383, 22703,
+	8536, -9949, -23401, -25013, -13969, 4142, 20158, 25975,
+	18650, 1889, -15827, -25536, -22325, -7818, 10644, 23721,
+	24796, 13326, -4886, -20627, -25931, -18115, -1134, 16421,
+	25667, 21928, 7093, -11329, -24020, -24558, -12671, 5627,
+	21078, 25865, 17565, 378, -17000, -25777, -21512, -6363,
+	12005, 24300, 24300, 12005, -6363, -21512, -25777, -17000,
+	378, 17565, 25865, 21078, 5627, -12671, -24558, -24020,
+	-11329, 7093, 21928, 25667, 16420, -1134, -18115, -25931,
+	-20627, -4886, 13326, 24796, 23721, 10644, -7818, -22325,
+	-25536, -15827, 1889, 18650, 25975, 20158, 4141, -13969,
+	-25013, -23401, -9949, 8536, 22703, 25383, 15221, -2642,
+	-19169, -25997, -19671, -3393, 14601, 25209, 23062, 9246,
+	-9247, -23062, -25209, -14601, 3393, 19672, 25997, 19169,
+	2642, -15221, -25383, -22703, -8536, 9949, 23401, 25013,
+	13969, -4142, -20158, -25975, -18650, -1888, 15827, 25536,
+	22325, 7818, -10644, -23721, -24796, -13325, 4886, 20627,
+	25931, 18115, 1133, -16421, -25667, -21928, -7093, 11329},
+	{
+// Carrier 19 Phase 4
+	26000, 19422, 3018, -14912, -25299, -22885, -8892, 9599,
+	23234, 25114, 14287, -3768, -19917, -25989, -18911, -2266,
+	15526, 25462, 22516, 8178, -10298, -23564, -24907, -13649,
+	4514, 20394, 25956, 18384, 1511, -16126, -25605, -22129,
+	-7456, 10988, 23873, 24680, 12999, -5257, -20855, -25901,
+	-17842, -756, 16712, 25725, 21722, 6729, -11668, -24163,
+	-24431, -12339, 5996, 21297, 25824, 17284, 0, -17284,
+	-25824, -21297, -5995, 12339, 24432, 24163, 11668, -6729,
+	-21722, -25725, -16712, 756, 17842, 25901, 20855, 5257,
+	-13000, -24680, -23873, -10988, 7456, 22129, 25604, 16126,
+	-1511, -18384, -25956, -20394, -4514, 13649, 24907, 23563,
+	10298, -8178, -22516, -25462, -15526, 2266, 18911, 25989,
+	19917, 3768, -14287, -25114, -23234, -9599, 8892, 22885,
+	25299, 14912, -3018, -19422, -26000, -19422, -3018, 14913,
+	25299, 22885, 8892, -9599, -23234, -25114, -14287, 3768,
+	19917, 25988, 18911, 2265, -15526, -25462, -22516, -8178,
+	10298, 23564, 24907, 13649, -4514, -20394, -25956, -18384,
+	-1511, 16126, 25605, 22128, 7456, -10988, -23873, -24680,
+	-12999, 5257, 20855, 25901, 17842, 756, -16712, -25725,
+	-21722, -6729, 11668, 24163, 24431, 12339, -5996, -21298,
+	-25824, -17284, 0, 17284, 25824, 21297, 5995, -12339,
+	-24432, -24162, -11668, 6729, 21722, 25725, 16712, -756,
+	-17842, -25901, -20855, -5257, 13000, 24680, 23873, 10987,
+	-7457, -22129, -25604, -16126, 1511, 18384, 25956, 20394,
+	4514, -13649, -24907, -23563, -10297, 8178, 22516, 25462,
+	15526, -2266, -18911, -25989, -19917, -3768, 14287, 25114,
+	23234, 9599, -8892, -22885, -25299, -14912, 3018, 19422},
+	{
+// Carrier 19 Phase 5
+	24020, 11329, -7093, -21928, -25667, -16421, 1134, 18115,
+	25931, 20627, 4886, -13326, -24796, -23721, -10644, 7818,
+	22325, 25536, 15827, -1889, -18650, -25975, -20158, -4141,
+	13969, 25013, 23401, 9949, -8536, -22703, -25383, -15221,
+	2642, 19169, 25997, 19671, 3393, -14601, -25209, -23062,
+	-9246, 9246, 23062, 25209, 14601, -3393, -19672, -25997,
+	-19169, -2642, 15221, 25383, 22703, 8536, -9949, -23401,
+	-25013, -13969, 4142, 20158, 25975, 18650, 1889, -15827,
+	-25536, -22325, -7818, 10644, 23721, 24796, 13326, -4886,
+	-20627, -25931, -18115, -1134, 16421, 25667, 21928, 7093,
+	-11329, -24020, -24558, -12671, 5627, 21078, 25865, 17565,
+	378, -17000, -25777, -21512, -6363, 12005, 24300, 24300,
+	12005, -6363, -21512, -25777, -17000, 378, 17565, 25865,
+	21078, 5627, -12671, -24558, -24020, -11329, 7093, 21928,
+	25667, 16420, -1134, -18115, -25931, -20627, -4886, 13326,
+	24796, 23721, 10644, -7818, -22325, -25536, -15827, 1889,
+	18650, 25975, 20158, 4141, -13969, -25013, -23401, -9949,
+	8536, 22703, 25383, 15221, -2642, -19169, -25997, -19671,
+	-3393, 14601, 25209, 23062, 9246, -9247, -23062, -25209,
+	-14601, 3393, 19672, 25997, 19169, 2642, -15221, -25383,
+	-22703, -8536, 9949, 23401, 25013, 13969, -4142, -20158,
+	-25975, -18650, -1888, 15827, 25536, 22325, 7818, -10644,
+	-23721, -24796, -13325, 4886, 20627, 25931, 18115, 1133,
+	-16421, -25667, -21928, -7093, 11329, 24020, 24558, 12671,
+	-5627, -21078, -25865, -17565, -378, 17000, 25777, 21512,
+	6363, -12005, -24300, -24300, -12005, 6363, 21512, 25777,
+	17000, -378, -17565, -25865, -21078, -5627, 12671, 24558},
+	{
+// Carrier 19 Phase 6
+	18384, 1511, -16126, -25605, -22129, -7456, 10988, 23873,
+	24680, 12999, -5257, -20855, -25901, -17842, -756, 16712,
+	25725, 21722, 6729, -11668, -24163, -24432, -12339, 5996,
+	21297, 25824, 17284, 0, -17284, -25824, -21297, -5995,
+	12339, 24432, 24163, 11668, -6729, -21722, -25725, -16712,
+	756, 17842, 25901, 20855, 5257, -13000, -24680, -23873,
+	-10988, 7456, 22129, 25604, 16126, -1511, -18384, -25956,
+	-20394, -4514, 13649, 24907, 23563, 10298, -8178, -22516,
+	-25462, -15526, 2266, 18911, 25989, 19917, 3768, -14287,
+	-25114, -23234, -9599, 8892, 22885, 25299, 14912, -3018,
+	-19422, -26000, -19422, -3018, 14913, 25299, 22885, 8892,
+	-9599, -23234, -25114, -14287, 3768, 19917, 25988, 18911,
+	2265, -15526, -25462, -22516, -8178, 10298, 23564, 24907,
+	13649, -4514, -20394, -25956, -18384, -1511, 16126, 25605,
+	22128, 7456, -10988, -23873, -24680, -12999, 5257, 20855,
+	25901, 17842, 756, -16712, -25725, -21722, -6729, 11668,
+	24163, 24431, 12339, -5996, -21298, -25824, -17284, 0,
+	17284, 25824, 21297, 5995, -12339, -24432, -24162, -11668,
+	6729, 21722, 25725, 16712, -756, -17842, -25901, -20855,
+	-5257, 13000, 24680, 23873, 10987, -7456, -22129, -25604,
+	-16126, 1511, 18384, 25956, 20394, 4514, -13649, -24907,
+	-23563, -10297, 8178, 22516, 25462, 15526, -2266, -18911,
+	-25989, -19917, -3768, 14287, 25114, 23234, 9599, -8892,
+	-22885, -25299, -14912, 3018, 19422, 26000, 19422, 3018,
+	-14913, -25299, -22885, -8892, 9599, 23234, 25114, 14287,
+	-3768, -19917, -25988, -18911, -2265, 15526, 25462, 22516,
+	8178, -10298, -23564, -24907, -13649, 4515, 20394, 25956},
+	{
+// Carrier 19 Phase 7
+	9949, -8536, -22703, -25383, -15221, 2642, 19169, 25997,
+	19671, 3393, -14601, -25209, -23062, -9246, 9246, 23062,
+	25209, 14601, -3393, -19671, -25997, -19169, -2642, 15221,
+	25383, 22703, 8536, -9949, -23401, -25013, -13969, 4142,
+	20158, 25975, 18650, 1889, -15827, -25536, -22325, -7818,
+	10644, 23721, 24796, 13326, -4886, -20627, -25931, -18115,
+	-1134, 16421, 25667, 21928, 7093, -11329, -24020, -24558,
+	-12671, 5627, 21078, 25865, 17565, 378, -17000, -25777,
+	-21512, -6363, 12005, 24300, 24300, 12005, -6363, -21512,
+	-25777, -17000, 378, 17565, 25865, 21078, 5627, -12671,
+	-24558, -24020, -11329, 7093, 21928, 25667, 16420, -1134,
+	-18115, -25931, -20627, -4886, 13326, 24796, 23721, 10644,
+	-7818, -22325, -25536, -15827, 1889, 18650, 25975, 20158,
+	4141, -13969, -25013, -23401, -9949, 8536, 22703, 25383,
+	15221, -2642, -19169, -25997, -19671, -3393, 14601, 25209,
+	23062, 9246, -9246, -23062, -25209, -14601, 3393, 19672,
+	25997, 19169, 2642, -15221, -25383, -22703, -8536, 9949,
+	23401, 25013, 13969, -4142, -20158, -25975, -18650, -1889,
+	15827, 25536, 22325, 7818, -10644, -23721, -24796, -13326,
+	4886, 20627, 25931, 18115, 1133, -16421, -25667, -21928,
+	-7093, 11329, 24020, 24558, 12671, -5627, -21078, -25865,
+	-17565, -378, 17000, 25777, 21512, 6363, -12005, -24300,
+	-24300, -12005, 6363, 21512, 25777, 17000, -378, -17565,
+	-25865, -21078, -5627, 12671, 24558, 24020, 11329, -7093,
+	-21928, -25667, -16420, 1134, 18115, 25931, 20627, 4886,
+	-13326, -24796, -23721, -10644, 7818, 22325, 25536, 15827,
+	-1889, -18650, -25975, -20158, -4141, 13969, 25013, 23401},
+	},{{
+
+// Carrier 20 Phase 0
+	0, 17842, 25956, 19917, 3018, -15526, -25605, -21722,
+	-5996, 13000, 24907, 23234, 8892, -10298, -23873, -24432,
+	-11668, 7456, 22516, 25299, 14287, -4514, -20855, -25824,
+	-16712, 1511, 18911, 26000, 18911, 1511, -16712, -25824,
+	-20855, -4514, 14287, 25299, 22516, 7456, -11668, -24432,
+	-23873, -10297, 8892, 23234, 24907, 12999, -5996, -21722,
+	-25604, -15526, 3018, 19917, 25956, 17842, 0, -17842,
+	-25956, -19917, -3018, 15526, 25605, 21722, 5995, -13000,
+	-24907, -23234, -8892, 10298, 23873, 24431, 11668, -7457,
+	-22516, -25299, -14287, 4515, 20855, 25824, 16712, -1511,
+	-18911, -26000, -18911, -1511, 16712, 25824, 20855, 4514,
+	-14287, -25299, -22516, -7456, 11668, 24432, 23873, 10297,
+	-8892, -23234, -24907, -12999, 5996, 21722, 25604, 15525,
+	-3018, -19917, -25955, -17842, 0, 17842, 25956, 19916,
+	3018, -15526, -25605, -21722, -5995, 13000, 24907, 23234,
+	8892, -10298, -23873, -24431, -11668, 7457, 22516, 25299,
+	14286, -4515, -20855, -25824, -16712, 1512, 18911, 26000,
+	18911, 1511, -16712, -25824, -20855, -4514, 14287, 25299,
+	22516, 7456, -11669, -24432, -23873, -10297, 8892, 23234,
+	24907, 12999, -5996, -21722, -25604, -15525, 3018, 19917,
+	25955, 17842, 0, -17842, -25956, -19916, -3018, 15526,
+	25605, 21722, 5995, -13000, -24907, -23234, -8892, 10298,
+	23873, 24431, 11668, -7457, -22516, -25299, -14286, 4515,
+	20855, 25824, 16712, -1512, -18912, -26000, -18911, -1511,
+	16712, 25824, 20854, 4514, -14287, -25299, -22516, -7456,
+	11669, 24432, 23873, 10297, -8892, -23234, -24907, -12999,
+	5996, 21722, 25604, 15525, -3018, -19917, -25955, -17841},
+	{
+// Carrier 20 Phase 1
+	9949, 23721, 24558, 12005, -7093, -22325, -25383, -14601,
+	4142, 20627, 25865, 17000, -1134, -18650, -25997, -19169,
+	-1889, 16421, 25777, 21078, 4886, -13969, -25209, -22703,
+	-7818, 11329, 24300, 24020, 10644, -8536, -23062, -25013,
+	-13326, 5627, 21512, 25667, 15827, -2642, -19672, -25975,
+	-18115, -378, 17565, 25931, 20158, 3393, -15221, -25536,
+	-21928, -6363, 12671, 24796, 23401, 9246, -9949, -23721,
+	-24558, -12005, 7093, 22325, 25383, 14601, -4142, -20627,
+	-25865, -17000, 1134, 18650, 25997, 19169, 1888, -16421,
+	-25777, -21078, -4886, 13969, 25209, 22703, 7818, -11329,
+	-24300, -24020, -10644, 8536, 23062, 25013, 13325, -5627,
+	-21512, -25667, -15827, 2642, 19672, 25975, 18115, 377,
+	-17565, -25931, -20157, -3393, 15221, 25536, 21928, 6363,
+	-12671, -24796, -23401, -9246, 9950, 23721, 24558, 12005,
+	-7094, -22325, -25383, -14601, 4142, 20627, 25865, 17000,
+	-1134, -18650, -25997, -19169, -1888, 16421, 25777, 21078,
+	4886, -13970, -25209, -22703, -7818, 11329, 24300, 24020,
+	10643, -8536, -23062, -25013, -13325, 5627, 21512, 25667,
+	15827, -2642, -19672, -25975, -18115, -377, 17565, 25931,
+	20157, 3393, -15221, -25536, -21927, -6362, 12671, 24796,
+	23401, 9246, -9950, -23721, -24558, -12005, 7094, 22325,
+	25383, 14601, -4142, -20627, -25865, -17000, 1134, 18650,
+	25997, 19168, 1888, -16421, -25777, -21078, -4886, 13970,
+	25209, 22703, 7817, -11330, -24300, -24020, -10643, 8536,
+	23062, 25013, 13325, -5627, -21512, -25667, -15827, 2642,
+	19672, 25975, 18115, 377, -17565, -25931, -20157, -3393,
+	15221, 25536, 21927, 6362, -12671, -24796, -23401, -9246},
+	{
+// Carrier 20 Phase 2
+	18384, 25989, 19422, 2266, -16126, -25725, -21297, -5257,
+	13649, 25114, 22885, 8178, -10988, -24163, -24163, -10988,
+	8178, 22885, 25114, 13649, -5257, -21297, -25725, -16126,
+	2266, 19422, 25988, 18384, 756, -17284, -25901, -20394,
+	-3768, 14913, 25462, 22128, 6729, -12339, -24680, -23563,
+	-9599, 9599, 23564, 24680, 12339, -6729, -22129, -25462,
+	-14912, 3768, 20394, 25901, 17284, -756, -18384, -25989,
+	-19422, -2265, 16126, 25725, 21297, 5257, -13649, -25114,
+	-22885, -8178, 10988, 24163, 24162, 10987, -8178, -22885,
+	-25114, -13649, 5257, 21298, 25725, 16125, -2266, -19422,
+	-25988, -18384, -756, 17284, 25901, 20394, 3768, -14913,
+	-25462, -22128, -6729, 12339, 24680, 23563, 9599, -9599,
+	-23564, -24680, -12339, 6729, 22129, 25462, 14912, -3768,
+	-20394, -25901, -17284, 756, 18384, 25989, 19422, 2265,
+	-16126, -25725, -21297, -5257, 13649, 25114, 22885, 8177,
+	-10988, -24163, -24162, -10987, 8178, 22885, 25113, 13649,
+	-5257, -21298, -25725, -16125, 2266, 19422, 25988, 18384,
+	755, -17284, -25901, -20394, -3767, 14913, 25462, 22128,
+	6728, -12339, -24680, -23563, -9599, 9599, 23564, 24680,
+	12339, -6729, -22129, -25462, -14912, 3768, 20395, 25901,
+	17284, -756, -18385, -25989, -19422, -2265, 16126, 25725,
+	21297, 5257, -13649, -25114, -22885, -8177, 10988, 24163,
+	24162, 10987, -8178, -22885, -25113, -13649, 5258, 21298,
+	25725, 16125, -2266, -19422, -25988, -18384, -755, 17285,
+	25901, 20394, 3767, -14913, -25462, -22128, -6728, 12340,
+	24680, 23563, 9598, -9599, -23564, -24680, -12339, 6729,
+	22129, 25462, 14912, -3768, -20395, -25901, -17284, 756},
+	{
+// Carrier 20 Phase 3
+	24020, 24300, 11329, -7818, -22703, -25209, -13969, 4886,
+	21078, 25777, 16421, -1889, -19169, -25997, -18650, -1134,
+	17000, 25865, 20627, 4141, -14601, -25383, -22325, -7093,
+	12005, 24558, 23721, 9949, -9246, -23401, -24796, -12671,
+	6363, 21928, 25536, 15221, -3393, -20158, -25931, -17565,
+	378, 18115, 25975, 19671, 2642, -15827, -25667, -21512,
+	-5627, 13326, 25013, 23062, 8536, -10644, -24020, -24300,
+	-11329, 7818, 22703, 25209, 13969, -4886, -21078, -25777,
+	-16420, 1889, 19169, 25997, 18650, 1133, -17000, -25865,
+	-20627, -4141, 14601, 25383, 22325, 7093, -12005, -24558,
+	-23721, -9949, 9247, 23401, 24796, 12670, -6363, -21928,
+	-25536, -15221, 3393, 20158, 25931, 17565, -378, -18115,
+	-25975, -19671, -2642, 15827, 25667, 21512, 5627, -13326,
+	-25013, -23062, -8536, 10644, 24020, 24300, 11329, -7818,
+	-22703, -25209, -13969, 4887, 21078, 25777, 16420, -1889,
+	-19169, -25997, -18650, -1133, 17000, 25865, 20627, 4141,
+	-14601, -25383, -22325, -7093, 12005, 24558, 23721, 9949,
+	-9247, -23401, -24796, -12670, 6363, 21928, 25536, 15220,
+	-3393, -20158, -25931, -17565, 378, 18115, 25975, 19671,
+	2642, -15828, -25668, -21512, -5627, 13326, 25013, 23062,
+	8535, -10644, -24021, -24299, -11329, 7818, 22703, 25209,
+	13969, -4887, -21079, -25777, -16420, 1889, 19169, 25997,
+	18649, 1133, -17000, -25865, -20626, -4141, 14601, 25383,
+	22324, 7093, -12005, -24558, -23721, -9949, 9247, 23401,
+	24796, 12670, -6363, -21928, -25536, -15220, 3394, 20158,
+	25931, 17565, -378, -18115, -25975, -19671, -2642, 15828,
+	25668, 21512, 5626, -13326, -25013, -23062, -8535, 10644},
+	{
+// Carrier 20 Phase 4
+	26000, 18911, 1511, -16712, -25824, -20855, -4514, 14287,
+	25299, 22516, 7456, -11668, -24432, -23873, -10298, 8892,
+	23234, 24907, 12999, -5996, -21722, -25604, -15526, 3018,
+	19917, 25956, 17842, 0, -17842, -25956, -19917, -3018,
+	15526, 25605, 21722, 5995, -13000, -24907, -23234, -8892,
+	10298, 23873, 24431, 11668, -7456, -22516, -25299, -14287,
+	4514, 20855, 25824, 16712, -1511, -18911, -26000, -18911,
+	-1511, 16712, 25824, 20855, 4514, -14287, -25299, -22516,
+	-7456, 11668, 24432, 23873, 10297, -8892, -23234, -24907,
+	-12999, 5996, 21722, 25604, 15525, -3018, -19917, -25956,
+	-17842, 0, 17842, 25956, 19917, 3018, -15526, -25605,
+	-21722, -5995, 13000, 24907, 23234, 8892, -10298, -23873,
+	-24431, -11668, 7457, 22516, 25299, 14287, -4515, -20855,
+	-25824, -16712, 1512, 18911, 26000, 18911, 1511, -16712,
+	-25824, -20855, -4514, 14287, 25299, 22516, 7456, -11669,
+	-24432, -23873, -10297, 8892, 23234, 24907, 12999, -5996,
+	-21722, -25604, -15525, 3018, 19917, 25955, 17842, 0,
+	-17842, -25956, -19916, -3018, 15526, 25605, 21722, 5995,
+	-13000, -24907, -23234, -8892, 10298, 23873, 24431, 11668,
+	-7457, -22516, -25299, -14286, 4515, 20855, 25824, 16712,
+	-1512, -18911, -26000, -18911, -1511, 16712, 25824, 20854,
+	4514, -14287, -25299, -22516, -7456, 11669, 24432, 23873,
+	10297, -8892, -23234, -24907, -12999, 5996, 21722, 25604,
+	15525, -3018, -19917, -25955, -17841, 0, 17842, 25956,
+	19916, 3017, -15526, -25605, -21722, -5995, 13000, 24907,
+	23234, 8892, -10298, -23873, -24431, -11668, 7457, 22516,
+	25299, 14286, -4515, -20855, -25824, -16712, 1512, 18912},
+	{
+// Carrier 20 Phase 5
+	24020, 10644, -8536, -23062, -25013, -13326, 5627, 21512,
+	25667, 15827, -2642, -19671, -25975, -18115, -378, 17565,
+	25931, 20158, 3393, -15221, -25536, -21928, -6363, 12671,
+	24796, 23401, 9246, -9949, -23721, -24558, -12005, 7093,
+	22325, 25383, 14601, -4142, -20627, -25865, -17000, 1134,
+	18650, 25997, 19169, 1889, -16421, -25777, -21078, -4886,
+	13969, 25209, 22703, 7818, -11329, -24300, -24020, -10644,
+	8536, 23062, 25013, 13325, -5627, -21512, -25667, -15827,
+	2642, 19672, 25975, 18115, 377, -17565, -25931, -20158,
+	-3393, 15221, 25536, 21928, 6363, -12671, -24796, -23401,
+	-9246, 9949, 23721, 24558, 12005, -7094, -22325, -25383,
+	-14601, 4142, 20627, 25865, 17000, -1134, -18650, -25997,
+	-19169, -1888, 16421, 25777, 21078, 4886, -13969, -25209,
+	-22703, -7818, 11329, 24300, 24020, 10643, -8536, -23062,
+	-25013, -13325, 5627, 21512, 25667, 15827, -2642, -19672,
+	-25975, -18115, -377, 17565, 25931, 20157, 3393, -15221,
+	-25536, -21928, -6363, 12671, 24796, 23401, 9246, -9950,
+	-23721, -24558, -12005, 7094, 22325, 25383, 14601, -4142,
+	-20627, -25865, -17000, 1134, 18650, 25997, 19168, 1888,
+	-16421, -25777, -21078, -4886, 13970, 25209, 22703, 7818,
+	-11329, -24300, -24020, -10643, 8536, 23062, 25013, 13325,
+	-5627, -21512, -25667, -15827, 2642, 19672, 25975, 18115,
+	377, -17565, -25931, -20157, -3393, 15221, 25536, 21927,
+	6362, -12671, -24796, -23401, -9246, 9950, 23721, 24558,
+	12005, -7094, -22325, -25383, -14601, 4142, 20627, 25865,
+	17000, -1134, -18650, -25997, -19168, -1888, 16421, 25777,
+	21078, 4886, -13970, -25209, -22703, -7817, 11330, 24300},
+	{
+// Carrier 20 Phase 6
+	18384, 756, -17284, -25901, -20394, -3768, 14913, 25462,
+	22129, 6729, -12339, -24680, -23563, -9599, 9599, 23564,
+	24680, 12339, -6729, -22129, -25462, -14912, 3768, 20394,
+	25901, 17284, -756, -18384, -25989, -19422, -2265, 16126,
+	25725, 21297, 5257, -13649, -25114, -22885, -8178, 10988,
+	24163, 24163, 10987, -8178, -22885, -25114, -13649, 5257,
+	21298, 25725, 16126, -2266, -19422, -25988, -18384, -756,
+	17284, 25901, 20394, 3768, -14913, -25462, -22128, -6729,
+	12339, 24680, 23563, 9599, -9599, -23564, -24680, -12339,
+	6729, 22129, 25462, 14912, -3768, -20394, -25901, -17284,
+	756, 18384, 25989, 19422, 2265, -16126, -25725, -21297,
+	-5257, 13649, 25114, 22885, 8177, -10988, -24163, -24162,
+	-10987, 8178, 22885, 25114, 13649, -5257, -21298, -25725,
+	-16125, 2266, 19422, 25988, 18384, 755, -17284, -25901,
+	-20394, -3767, 14913, 25462, 22128, 6729, -12339, -24680,
+	-23563, -9599, 9599, 23564, 24680, 12339, -6729, -22129,
+	-25462, -14912, 3768, 20394, 25901, 17284, -756, -18384,
+	-25989, -19422, -2265, 16126, 25725, 21297, 5257, -13649,
+	-25114, -22885, -8177, 10988, 24163, 24162, 10987, -8178,
+	-22885, -25113, -13649, 5258, 21298, 25725, 16125, -2266,
+	-19422, -25988, -18384, -755, 17284, 25901, 20394, 3767,
+	-14913, -25462, -22128, -6728, 12339, 24680, 23563, 9598,
+	-9599, -23564, -24680, -12339, 6729, 22129, 25462, 14912,
+	-3768, -20395, -25901, -17284, 756, 18385, 25989, 19422,
+	2265, -16126, -25725, -21297, -5257, 13649, 25114, 22885,
+	8177, -10988, -24163, -24162, -10987, 8178, 22885, 25113,
+	13648, -5258, -21298, -25725, -16125, 2266, 19422, 25988},
+	{
+// Carrier 20 Phase 7
+	9949, -9246, -23401, -24796, -12671, 6363, 21928, 25536,
+	15221, -3393, -20158, -25931, -17565, 378, 18115, 25975,
+	19671, 2642, -15827, -25667, -21512, -5627, 13326, 25013,
+	23062, 8536, -10644, -24020, -24300, -11329, 7818, 22703,
+	25209, 13969, -4886, -21078, -25777, -16420, 1889, 19169,
+	25997, 18650, 1134, -17000, -25865, -20627, -4141, 14601,
+	25383, 22325, 7093, -12005, -24558, -23721, -9949, 9247,
+	23401, 24796, 12671, -6363, -21928, -25536, -15221, 3393,
+	20158, 25931, 17565, -378, -18115, -25975, -19671, -2642,
+	15827, 25667, 21512, 5627, -13326, -25013, -23062, -8536,
+	10644, 24020, 24300, 11329, -7818, -22703, -25209, -13969,
+	4886, 21078, 25777, 16420, -1889, -19169, -25997, -18650,
+	-1133, 17000, 25865, 20627, 4141, -14601, -25383, -22325,
+	-7093, 12005, 24558, 23721, 9949, -9247, -23401, -24796,
+	-12670, 6363, 21928, 25536, 15220, -3393, -20158, -25931,
+	-17565, 378, 18115, 25975, 19671, 2642, -15828, -25668,
+	-21512, -5627, 13326, 25013, 23062, 8535, -10644, -24020,
+	-24299, -11329, 7818, 22703, 25209, 13969, -4887, -21078,
+	-25777, -16420, 1889, 19169, 25997, 18649, 1133, -17000,
+	-25865, -20626, -4141, 14601, 25383, 22325, 7093, -12005,
+	-24558, -23721, -9949, 9247, 23401, 24796, 12670, -6363,
+	-21928, -25536, -15220, 3394, 20158, 25931, 17565, -378,
+	-18115, -25975, -19671, -2642, 15828, 25668, 21512, 5627,
+	-13326, -25013, -23062, -8535, 10644, 24021, 24299, 11329,
+	-7818, -22703, -25209, -13969, 4887, 21079, 25777, 16420,
+	-1889, -19169, -25997, -18649, -1133, 17000, 25865, 20626,
+	4141, -14602, -25383, -22324, -7093, 12005, 24558, 23721},
+	},{{
+
+// Carrier 21 Phase 0
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18385,
+	0, 18384, 26000, 18385, 0, -18384, -26000, -18385},
+	{
+// Carrier 21 Phase 1
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9949,
+	9949, 24020, 24020, 9949, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950,
+	9949, 24020, 24020, 9950, -9949, -24020, -24020, -9950},
+	{
+// Carrier 21 Phase 2
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18385, 0,
+	18384, 26000, 18385, 0, -18384, -26000, -18385, 0},
+	{
+// Carrier 21 Phase 3
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9949, 9949,
+	24020, 24020, 9949, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949,
+	24020, 24020, 9950, -9949, -24020, -24020, -9950, 9949},
+	{
+// Carrier 21 Phase 4
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18385, 0, 18384,
+	26000, 18385, 0, -18384, -26000, -18385, 0, 18384},
+	{
+// Carrier 21 Phase 5
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9949, 9949, 24020,
+	24020, 9949, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020,
+	24020, 9950, -9949, -24020, -24020, -9950, 9949, 24020},
+	{
+// Carrier 21 Phase 6
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18385, 0, 18384, 26000,
+	18385, 0, -18384, -26000, -18385, 0, 18384, 26000},
+	{
+// Carrier 21 Phase 7
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9949, 9949, 24020, 24020,
+	9949, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020,
+	9950, -9949, -24020, -24020, -9950, 9949, 24020, 24020},
+	},{{
+
+// Carrier 22 Phase 0
+	0, 18911, 25956, 16712, -3018, -20855, -25605, -14287,
+	5996, 22516, 24907, 11668, -8892, -23873, -23873, -8892,
+	11668, 24907, 22516, 5996, -14287, -25605, -20855, -3018,
+	16712, 25956, 18911, 0, -18911, -25956, -16712, 3018,
+	20855, 25604, 14287, -5996, -22516, -24907, -11668, 8892,
+	23873, 23873, 8892, -11668, -24907, -22516, -5996, 14287,
+	25605, 20855, 3018, -16712, -25956, -18911, 0, 18911,
+	25956, 16712, -3018, -20855, -25604, -14287, 5996, 22516,
+	24907, 11668, -8892, -23873, -23873, -8892, 11668, 24907,
+	22516, 5995, -14287, -25605, -20855, -3018, 16712, 25956,
+	18911, 0, -18911, -25956, -16712, 3018, 20855, 25604,
+	14287, -5996, -22516, -24907, -11668, 8892, 23873, 23873,
+	8892, -11668, -24907, -22516, -5995, 14287, 25605, 20855,
+	3018, -16712, -25956, -18911, 0, 18911, 25956, 16712,
+	-3018, -20855, -25604, -14287, 5996, 22516, 24907, 11668,
+	-8892, -23873, -23873, -8892, 11668, 24907, 22516, 5995,
+	-14287, -25605, -20855, -3018, 16712, 25956, 18911, 0,
+	-18911, -25956, -16712, 3018, 20855, 25604, 14287, -5996,
+	-22516, -24907, -11668, 8892, 23873, 23873, 8892, -11668,
+	-24907, -22516, -5995, 14287, 25605, 20855, 3018, -16712,
+	-25956, -18911, 0, 18911, 25956, 16712, -3018, -20855,
+	-25604, -14287, 5996, 22516, 24907, 11668, -8892, -23873,
+	-23873, -8892, 11668, 24907, 22516, 5995, -14287, -25605,
+	-20855, -3018, 16712, 25956, 18911, 0, -18911, -25956,
+	-16712, 3018, 20855, 25604, 14287, -5996, -22516, -24907,
+	-11668, 8892, 23873, 23873, 8892, -11668, -24907, -22516,
+	-5995, 14287, 25605, 20855, 3018, -16712, -25956, -18911},
+	{
+// Carrier 22 Phase 1
+	9949, 24300, 23401, 7818, -12671, -25209, -21928, -4886,
+	15221, 25777, 20158, 1889, -17565, -25997, -18115, 1134,
+	19671, 25865, 15827, -4141, -21512, -25383, -13326, 7093,
+	23062, 24558, 10644, -9949, -24300, -23401, -7818, 12671,
+	25209, 21928, 4886, -15221, -25777, -20158, -1889, 17565,
+	25997, 18115, -1134, -19671, -25865, -15827, 4142, 21512,
+	25383, 13326, -7093, -23062, -24558, -10644, 9949, 24300,
+	23401, 7818, -12671, -25209, -21928, -4886, 15221, 25777,
+	20158, 1889, -17565, -25997, -18115, 1134, 19672, 25865,
+	15827, -4142, -21512, -25383, -13326, 7093, 23062, 24558,
+	10644, -9949, -24300, -23401, -7818, 12671, 25209, 21928,
+	4886, -15221, -25777, -20158, -1889, 17565, 25997, 18115,
+	-1134, -19672, -25865, -15827, 4142, 21512, 25383, 13326,
+	-7093, -23062, -24558, -10644, 9949, 24300, 23401, 7818,
+	-12671, -25209, -21928, -4886, 15221, 25777, 20158, 1889,
+	-17565, -25997, -18115, 1134, 19672, 25865, 15827, -4142,
+	-21512, -25383, -13326, 7093, 23062, 24558, 10644, -9949,
+	-24300, -23401, -7818, 12671, 25209, 21928, 4886, -15221,
+	-25777, -20158, -1889, 17565, 25997, 18115, -1134, -19672,
+	-25865, -15827, 4142, 21512, 25383, 13326, -7093, -23062,
+	-24558, -10644, 9949, 24300, 23401, 7818, -12671, -25209,
+	-21928, -4886, 15221, 25777, 20158, 1889, -17565, -25997,
+	-18115, 1134, 19672, 25865, 15827, -4142, -21512, -25383,
+	-13326, 7093, 23062, 24558, 10644, -9949, -24300, -23401,
+	-7818, 12671, 25209, 21928, 4886, -15221, -25777, -20158,
+	-1889, 17565, 25997, 18115, -1134, -19672, -25865, -15827,
+	4142, 21512, 25383, 13326, -7093, -23062, -24558, -10644},
+	{
+// Carrier 22 Phase 2
+	18384, 25989, 17284, -2266, -20394, -25725, -14912, 5257,
+	22129, 25114, 12339, -8178, -23564, -24163, -9599, 10988,
+	24680, 22885, 6729, -13649, -25462, -21297, -3768, 16126,
+	25901, 19422, 756, -18384, -25989, -17284, 2266, 20394,
+	25725, 14912, -5257, -22129, -25114, -12339, 8178, 23564,
+	24163, 9599, -10988, -24680, -22885, -6729, 13649, 25462,
+	21297, 3768, -16126, -25901, -19422, -756, 18384, 25989,
+	17284, -2266, -20394, -25725, -14912, 5257, 22129, 25114,
+	12339, -8178, -23564, -24163, -9599, 10988, 24680, 22885,
+	6729, -13649, -25462, -21297, -3768, 16126, 25901, 19422,
+	756, -18384, -25988, -17284, 2266, 20394, 25725, 14912,
+	-5257, -22129, -25114, -12339, 8178, 23564, 24163, 9599,
+	-10988, -24680, -22885, -6729, 13649, 25462, 21297, 3768,
+	-16126, -25901, -19422, -756, 18384, 25988, 17284, -2266,
+	-20394, -25725, -14912, 5257, 22129, 25114, 12339, -8178,
+	-23564, -24163, -9599, 10988, 24680, 22885, 6729, -13649,
+	-25462, -21297, -3768, 16126, 25901, 19422, 756, -18384,
+	-25988, -17284, 2266, 20394, 25725, 14912, -5257, -22129,
+	-25114, -12339, 8178, 23564, 24163, 9599, -10988, -24680,
+	-22885, -6729, 13649, 25462, 21297, 3768, -16126, -25901,
+	-19422, -756, 18384, 25988, 17284, -2266, -20394, -25725,
+	-14912, 5257, 22129, 25114, 12339, -8178, -23564, -24162,
+	-9599, 10988, 24680, 22885, 6729, -13649, -25462, -21297,
+	-3768, 16126, 25901, 19422, 756, -18384, -25988, -17284,
+	2266, 20394, 25725, 14912, -5257, -22129, -25114, -12339,
+	8178, 23564, 24162, 9599, -10988, -24680, -22885, -6729,
+	13649, 25462, 21297, 3768, -16126, -25901, -19422, -756},
+	{
+// Carrier 22 Phase 3
+	24020, 23721, 8536, -12005, -25013, -22325, -5627, 14601,
+	25667, 20627, 2642, -17000, -25975, -18650, 378, 19169,
+	25931, 16421, -3393, -21078, -25536, -13969, 6363, 22703,
+	24796, 11329, -9246, -24020, -23721, -8536, 12005, 25013,
+	22325, 5627, -14601, -25667, -20627, -2642, 17000, 25975,
+	18650, -378, -19169, -25931, -16421, 3393, 21078, 25536,
+	13969, -6363, -22703, -24796, -11329, 9246, 24020, 23721,
+	8536, -12005, -25013, -22325, -5627, 14601, 25667, 20627,
+	2642, -17000, -25975, -18650, 378, 19169, 25931, 16421,
+	-3393, -21078, -25536, -13969, 6363, 22703, 24796, 11329,
+	-9246, -24020, -23721, -8536, 12005, 25013, 22325, 5627,
+	-14601, -25667, -20627, -2642, 17000, 25975, 18650, -378,
+	-19169, -25931, -16421, 3393, 21078, 25536, 13969, -6363,
+	-22703, -24796, -11329, 9246, 24020, 23721, 8536, -12005,
+	-25013, -22325, -5627, 14601, 25667, 20627, 2642, -17000,
+	-25975, -18650, 378, 19169, 25931, 16420, -3393, -21078,
+	-25536, -13969, 6363, 22703, 24796, 11329, -9246, -24020,
+	-23721, -8536, 12005, 25013, 22325, 5627, -14601, -25667,
+	-20627, -2642, 17000, 25975, 18650, -378, -19169, -25931,
+	-16420, 3393, 21078, 25536, 13969, -6363, -22703, -24796,
+	-11329, 9246, 24020, 23721, 8536, -12005, -25013, -22325,
+	-5627, 14601, 25667, 20627, 2642, -17000, -25975, -18650,
+	378, 19169, 25931, 16420, -3393, -21078, -25536, -13969,
+	6363, 22703, 24796, 11329, -9246, -24020, -23721, -8536,
+	12005, 25013, 22325, 5627, -14601, -25667, -20627, -2642,
+	17000, 25975, 18650, -378, -19169, -25931, -16420, 3393,
+	21078, 25536, 13969, -6363, -22703, -24796, -11329, 9247},
+	{
+// Carrier 22 Phase 4
+	26000, 17842, -1511, -19917, -25824, -15526, 4514, 21722,
+	25299, 13000, -7456, -23234, -24432, -10298, 10298, 24432,
+	23234, 7456, -12999, -25299, -21722, -4514, 15526, 25824,
+	19917, 1511, -17842, -26000, -17842, 1511, 19917, 25824,
+	15526, -4514, -21722, -25299, -13000, 7456, 23234, 24432,
+	10298, -10298, -24432, -23234, -7456, 13000, 25299, 21722,
+	4514, -15526, -25824, -19917, -1511, 17842, 26000, 17842,
+	-1511, -19917, -25824, -15526, 4514, 21722, 25299, 12999,
+	-7456, -23234, -24432, -10298, 10298, 24432, 23234, 7456,
+	-13000, -25299, -21722, -4514, 15526, 25824, 19917, 1511,
+	-17842, -26000, -17842, 1511, 19917, 25824, 15526, -4514,
+	-21722, -25299, -12999, 7456, 23234, 24431, 10298, -10298,
+	-24432, -23234, -7456, 13000, 25299, 21722, 4514, -15526,
+	-25824, -19917, -1511, 17842, 26000, 17842, -1511, -19917,
+	-25824, -15526, 4514, 21722, 25299, 12999, -7456, -23234,
+	-24431, -10298, 10298, 24432, 23234, 7456, -13000, -25299,
+	-21722, -4514, 15526, 25824, 19917, 1511, -17842, -26000,
+	-17842, 1511, 19917, 25824, 15526, -4514, -21722, -25299,
+	-12999, 7456, 23234, 24431, 10298, -10298, -24432, -23234,
+	-7456, 13000, 25299, 21722, 4514, -15526, -25824, -19917,
+	-1511, 17842, 26000, 17842, -1511, -19917, -25824, -15526,
+	4514, 21722, 25299, 12999, -7456, -23234, -24431, -10298,
+	10298, 24432, 23234, 7456, -13000, -25299, -21722, -4514,
+	15526, 25824, 19917, 1511, -17842, -26000, -17842, 1511,
+	19917, 25824, 15526, -4514, -21722, -25299, -12999, 7456,
+	23234, 24431, 10298, -10298, -24432, -23234, -7456, 13000,
+	25299, 21722, 4514, -15526, -25824, -19917, -1511, 17842},
+	{
+// Carrier 22 Phase 5
+	24020, 9246, -11329, -24796, -22703, -6363, 13969, 25536,
+	21078, 3393, -16421, -25931, -19169, -378, 18650, 25975,
+	17000, -2642, -20627, -25667, -14601, 5627, 22325, 25013,
+	12005, -8536, -23721, -24020, -9246, 11329, 24796, 22703,
+	6363, -13969, -25536, -21078, -3393, 16421, 25931, 19169,
+	378, -18650, -25975, -17000, 2642, 20627, 25667, 14601,
+	-5627, -22325, -25013, -12005, 8536, 23721, 24020, 9246,
+	-11329, -24796, -22703, -6363, 13969, 25536, 21078, 3393,
+	-16421, -25931, -19169, -378, 18650, 25975, 17000, -2642,
+	-20627, -25667, -14601, 5627, 22325, 25013, 12005, -8536,
+	-23721, -24020, -9246, 11329, 24796, 22703, 6363, -13969,
+	-25536, -21078, -3393, 16421, 25931, 19169, 378, -18650,
+	-25975, -17000, 2642, 20627, 25667, 14601, -5627, -22325,
+	-25013, -12005, 8536, 23721, 24020, 9246, -11329, -24796,
+	-22703, -6363, 13969, 25536, 21078, 3393, -16421, -25931,
+	-19169, -378, 18650, 25975, 17000, -2642, -20627, -25667,
+	-14601, 5627, 22325, 25013, 12005, -8536, -23721, -24020,
+	-9246, 11329, 24796, 22703, 6363, -13969, -25536, -21078,
+	-3393, 16421, 25931, 19169, 378, -18650, -25975, -17000,
+	2642, 20627, 25667, 14601, -5627, -22325, -25013, -12005,
+	8536, 23721, 24020, 9246, -11329, -24796, -22703, -6363,
+	13969, 25536, 21078, 3393, -16421, -25931, -19169, -378,
+	18650, 25975, 17000, -2642, -20627, -25667, -14601, 5627,
+	22325, 25013, 12005, -8536, -23721, -24020, -9246, 11329,
+	24796, 22703, 6363, -13969, -25536, -21078, -3393, 16421,
+	25931, 19169, 377, -18650, -25975, -17000, 2642, 20627,
+	25667, 14601, -5627, -22325, -25013, -12005, 8536, 23721},
+	{
+// Carrier 22 Phase 6
+	18384, -756, -19422, -25901, -16126, 3768, 21297, 25462,
+	13649, -6729, -22885, -24680, -10988, 9599, 24163, 23564,
+	8178, -12339, -25114, -22129, -5257, 14912, 25725, 20394,
+	2266, -17284, -25989, -18384, 756, 19422, 25901, 16126,
+	-3768, -21297, -25462, -13649, 6729, 22885, 24680, 10988,
+	-9599, -24163, -23563, -8178, 12339, 25114, 22129, 5257,
+	-14913, -25725, -20394, -2266, 17284, 25989, 18384, -756,
+	-19422, -25901, -16126, 3768, 21297, 25462, 13649, -6729,
+	-22885, -24680, -10988, 9599, 24163, 23563, 8178, -12339,
+	-25114, -22129, -5257, 14913, 25725, 20394, 2266, -17284,
+	-25989, -18384, 756, 19422, 25901, 16126, -3768, -21297,
+	-25462, -13649, 6729, 22885, 24680, 10988, -9599, -24163,
+	-23563, -8178, 12339, 25114, 22129, 5257, -14913, -25725,
+	-20394, -2266, 17284, 25989, 18384, -756, -19422, -25901,
+	-16126, 3768, 21297, 25462, 13649, -6729, -22885, -24680,
+	-10988, 9599, 24163, 23563, 8178, -12339, -25114, -22129,
+	-5257, 14913, 25725, 20394, 2265, -17284, -25989, -18384,
+	756, 19422, 25901, 16126, -3768, -21297, -25462, -13649,
+	6729, 22885, 24680, 10988, -9599, -24163, -23563, -8178,
+	12339, 25114, 22128, 5257, -14913, -25725, -20394, -2265,
+	17284, 25989, 18384, -756, -19422, -25901, -16126, 3768,
+	21297, 25462, 13649, -6729, -22885, -24680, -10988, 9599,
+	24163, 23563, 8178, -12339, -25114, -22128, -5257, 14913,
+	25725, 20394, 2265, -17284, -25989, -18384, 756, 19422,
+	25901, 16126, -3768, -21297, -25462, -13649, 6729, 22885,
+	24680, 10987, -9599, -24163, -23563, -8178, 12339, 25114,
+	22128, 5257, -14913, -25725, -20394, -2265, 17284, 25989},
+	{
+// Carrier 22 Phase 7
+	9949, -10644, -24558, -23062, -7093, 13326, 25383, 21512,
+	4141, -15827, -25865, -19671, -1134, 18115, 25997, 17565,
+	-1889, -20158, -25777, -15221, 4886, 21928, 25209, 12671,
+	-7818, -23401, -24300, -9949, 10644, 24558, 23062, 7093,
+	-13326, -25383, -21512, -4141, 15827, 25865, 19671, 1134,
+	-18115, -25997, -17565, 1889, 20158, 25777, 15221, -4886,
+	-21928, -25209, -12671, 7818, 23401, 24300, 9949, -10644,
+	-24558, -23062, -7093, 13326, 25383, 21512, 4141, -15827,
+	-25865, -19671, -1134, 18115, 25997, 17565, -1889, -20158,
+	-25777, -15221, 4886, 21928, 25209, 12671, -7818, -23401,
+	-24300, -9949, 10644, 24558, 23062, 7093, -13326, -25383,
+	-21512, -4141, 15827, 25865, 19671, 1134, -18115, -25997,
+	-17565, 1889, 20158, 25777, 15221, -4886, -21928, -25209,
+	-12671, 7818, 23401, 24300, 9949, -10644, -24558, -23062,
+	-7093, 13326, 25383, 21512, 4141, -15827, -25865, -19671,
+	-1134, 18115, 25997, 17565, -1889, -20158, -25777, -15221,
+	4886, 21928, 25209, 12671, -7818, -23401, -24300, -9949,
+	10644, 24558, 23062, 7093, -13326, -25383, -21512, -4141,
+	15827, 25865, 19671, 1134, -18115, -25997, -17565, 1889,
+	20158, 25777, 15221, -4886, -21928, -25209, -12671, 7818,
+	23401, 24300, 9949, -10644, -24558, -23062, -7093, 13326,
+	25383, 21512, 4141, -15827, -25865, -19671, -1133, 18115,
+	25997, 17565, -1889, -20158, -25777, -15221, 4886, 21928,
+	25209, 12671, -7818, -23401, -24300, -9949, 10644, 24558,
+	23062, 7093, -13326, -25383, -21512, -4141, 15827, 25865,
+	19671, 1133, -18115, -25997, -17565, 1889, 20158, 25777,
+	15221, -4886, -21928, -25209, -12671, 7818, 23401, 24300},
+	},{{
+
+// Carrier 23 Phase 0
+	0, 19422, 25824, 14912, -5996, -22885, -24432, -9599,
+	11668, 25114, 21722, 3768, -16712, -25989, -17842, 2266,
+	20855, 25462, 12999, -8178, -23873, -23563, -7456, 13649,
+	25605, 20394, 1511, -18384, -25956, -16126, 4514, 22129,
+	24907, 10988, -10298, -24680, -22516, -5257, 15526, 25901,
+	18911, -756, -19917, -25725, -14287, 6729, 23234, 24163,
+	8892, -12339, -25299, -21297, -3018, 17284, 26000, 17284,
+	-3018, -21297, -25299, -12339, 8892, 24163, 23234, 6729,
+	-14287, -25725, -19917, -756, 18911, 25901, 15526, -5257,
+	-22516, -24680, -10297, 10988, 24907, 22128, 4514, -16126,
+	-25956, -18384, 1511, 20394, 25604, 13649, -7457, -23564,
+	-23873, -8178, 13000, 25462, 20855, 2265, -17842, -25988,
+	-16712, 3768, 21722, 25114, 11668, -9599, -24432, -22885,
+	-5995, 14913, 25824, 19422, 0, -19422, -25824, -14912,
+	5996, 22885, 24431, 9599, -11668, -25114, -21722, -3768,
+	16712, 25989, 17842, -2266, -20855, -25462, -12999, 8178,
+	23873, 23563, 7456, -13649, -25605, -20394, -1511, 18384,
+	25955, 16125, -4515, -22129, -24907, -10987, 10298, 24680,
+	22516, 5257, -15526, -25901, -18911, 756, 19917, 25725,
+	14287, -6729, -23234, -24162, -8892, 12339, 25299, 21297,
+	3018, -17284, -26000, -17284, 3018, 21298, 25299, 12339,
+	-8892, -24163, -23234, -6729, 14287, 25725, 19916, 755,
+	-18911, -25901, -15525, 5257, 22516, 24680, 10297, -10988,
+	-24907, -22128, -4514, 16126, 25956, 18384, -1512, -20394,
+	-25604, -13649, 7457, 23564, 23873, 8177, -13000, -25462,
+	-20855, -2265, 17842, 25988, 16712, -3768, -21722, -25113,
+	-11668, 9599, 24432, 22885, 5995, -14913, -25824, -19422},
+	{
+// Carrier 23 Phase 1
+	9949, 24558, 22703, 5627, -15221, -25865, -19169, 378,
+	19671, 25777, 14601, -6363, -23062, -24300, -9246, 12005,
+	25209, 21512, 3393, -17000, -25997, -17565, 2642, 21078,
+	25383, 12671, -8536, -24020, -23401, -7093, 13969, 25667,
+	20158, 1134, -18650, -25931, -15827, 4886, 22325, 24796,
+	10644, -10644, -24796, -22325, -4886, 15827, 25931, 18650,
+	-1134, -20158, -25667, -13969, 7093, 23401, 24020, 8536,
+	-12671, -25383, -21078, -2642, 17565, 25997, 17000, -3393,
+	-21512, -25209, -12005, 9247, 24300, 23062, 6363, -14601,
+	-25777, -19671, -378, 19169, 25865, 15221, -5627, -22703,
+	-24558, -9949, 11329, 25013, 21928, 4141, -16421, -25975,
+	-18115, 1889, 20627, 25536, 13325, -7818, -23721, -23721,
+	-7818, 13326, 25536, 20627, 1888, -18115, -25975, -16420,
+	4142, 21928, 25013, 11329, -9949, -24558, -22703, -5627,
+	15221, 25865, 19169, -378, -19672, -25777, -14601, 6363,
+	23062, 24300, 9246, -12005, -25209, -21512, -3393, 17000,
+	25997, 17565, -2642, -21078, -25383, -12670, 8536, 24020,
+	23401, 7093, -13969, -25667, -20157, -1133, 18650, 25931,
+	15827, -4886, -22325, -24796, -10643, 10644, 24796, 22325,
+	4886, -15827, -25931, -18650, 1134, 20158, 25667, 13969,
+	-7094, -23401, -24020, -8536, 12671, 25383, 21078, 2642,
+	-17565, -25997, -17000, 3393, 21512, 25209, 12005, -9247,
+	-24300, -23062, -6363, 14601, 25777, 19671, 377, -19169,
+	-25865, -15220, 5627, 22703, 24558, 9949, -11329, -25013,
+	-21928, -4141, 16421, 25975, 18115, -1889, -20627, -25536,
+	-13325, 7818, 23721, 23721, 7818, -13326, -25536, -20626,
+	-1888, 18115, 25975, 16420, -4142, -21928, -25013, -11329},
+	{
+// Carrier 23 Phase 2
+	18384, 25956, 16126, -4514, -22129, -24907, -10988, 10298,
+	24680, 22516, 5257, -15526, -25901, -18911, 756, 19917,
+	25725, 14287, -6729, -23234, -24163, -8892, 12339, 25299,
+	21297, 3018, -17284, -26000, -17284, 3018, 21297, 25299,
+	12339, -8892, -24163, -23234, -6729, 14287, 25725, 19917,
+	756, -18911, -25901, -15526, 5257, 22516, 24680, 10298,
+	-10988, -24907, -22128, -4514, 16126, 25956, 18384, -1511,
+	-20394, -25604, -13649, 7456, 23564, 23873, 8178, -13000,
+	-25462, -20855, -2265, 17842, 25988, 16712, -3768, -21722,
+	-25114, -11668, 9599, 24432, 22885, 5995, -14913, -25824,
+	-19422, 0, 19422, 25824, 14912, -5996, -22885, -24431,
+	-9599, 11668, 25114, 21722, 3768, -16712, -25989, -17842,
+	2266, 20855, 25462, 12999, -8178, -23873, -23563, -7456,
+	13649, 25605, 20394, 1511, -18384, -25956, -16125, 4515,
+	22129, 24907, 10987, -10298, -24680, -22516, -5257, 15526,
+	25901, 18911, -756, -19917, -25725, -14287, 6729, 23234,
+	24162, 8892, -12339, -25299, -21297, -3018, 17284, 26000,
+	17284, -3018, -21298, -25299, -12339, 8892, 24163, 23234,
+	6729, -14287, -25725, -19917, -755, 18911, 25901, 15525,
+	-5257, -22516, -24680, -10297, 10988, 24907, 22128, 4514,
+	-16126, -25956, -18384, 1512, 20394, 25604, 13649, -7457,
+	-23564, -23873, -8177, 13000, 25462, 20855, 2265, -17842,
+	-25988, -16712, 3768, 21722, 25113, 11668, -9599, -24432,
+	-22885, -5995, 14913, 25824, 19422, 0, -19422, -25824,
+	-14912, 5996, 22885, 24431, 9599, -11669, -25114, -21722,
+	-3767, 16712, 25989, 17842, -2266, -20855, -25462, -12999,
+	8178, 23873, 23563, 7456, -13649, -25605, -20394, -1511},
+	{
+// Carrier 23 Phase 3
+	24020, 23401, 7093, -13969, -25667, -20158, -1134, 18650,
+	25931, 15827, -4886, -22325, -24796, -10644, 10644, 24796,
+	22325, 4886, -15827, -25931, -18650, 1134, 20158, 25667,
+	13969, -7093, -23401, -24020, -8536, 12671, 25383, 21078,
+	2642, -17565, -25997, -17000, 3393, 21512, 25209, 12005,
+	-9246, -24300, -23062, -6363, 14601, 25777, 19671, 378,
+	-19169, -25865, -15221, 5627, 22703, 24558, 9949, -11329,
+	-25013, -21928, -4141, 16421, 25975, 18115, -1889, -20627,
+	-25536, -13326, 7818, 23721, 23721, 7818, -13326, -25536,
+	-20627, -1889, 18115, 25975, 16420, -4142, -21928, -25013,
+	-11329, 9949, 24558, 22703, 5627, -15221, -25865, -19169,
+	378, 19672, 25777, 14601, -6363, -23062, -24300, -9246,
+	12005, 25209, 21512, 3393, -17000, -25997, -17565, 2642,
+	21078, 25383, 12671, -8536, -24020, -23401, -7093, 13969,
+	25667, 20158, 1133, -18650, -25931, -15827, 4886, 22325,
+	24796, 10644, -10644, -24796, -22325, -4886, 15827, 25931,
+	18650, -1134, -20158, -25667, -13969, 7094, 23401, 24020,
+	8536, -12671, -25383, -21078, -2642, 17565, 25997, 17000,
+	-3393, -21512, -25209, -12005, 9247, 24300, 23062, 6363,
+	-14601, -25777, -19671, -377, 19169, 25865, 15220, -5627,
+	-22703, -24558, -9949, 11329, 25013, 21928, 4141, -16421,
+	-25975, -18115, 1889, 20627, 25536, 13325, -7818, -23721,
+	-23721, -7818, 13326, 25536, 20627, 1888, -18115, -25975,
+	-16420, 4142, 21928, 25013, 11329, -9950, -24558, -22703,
+	-5627, 15221, 25865, 19169, -378, -19672, -25777, -14601,
+	6363, 23062, 24299, 9246, -12005, -25209, -21512, -3393,
+	17000, 25997, 17565, -2642, -21078, -25383, -12670, 8536},
+	{
+// Carrier 23 Phase 4
+	26000, 17284, -3018, -21297, -25299, -12339, 8892, 24163,
+	23234, 6729, -14287, -25725, -19917, -756, 18911, 25901,
+	15526, -5257, -22516, -24680, -10298, 10988, 24907, 22129,
+	4514, -16126, -25956, -18384, 1511, 20394, 25604, 13649,
+	-7456, -23564, -23873, -8178, 13000, 25462, 20855, 2265,
+	-17842, -25988, -16712, 3768, 21722, 25114, 11668, -9599,
+	-24432, -22885, -5995, 14913, 25824, 19422, 0, -19422,
+	-25824, -14912, 5996, 22885, 24431, 9599, -11668, -25114,
+	-21722, -3768, 16712, 25989, 17842, -2266, -20855, -25462,
+	-12999, 8178, 23873, 23563, 7456, -13649, -25605, -20394,
+	-1511, 18384, 25956, 16126, -4514, -22129, -24907, -10987,
+	10298, 24680, 22516, 5257, -15526, -25901, -18911, 756,
+	19917, 25725, 14287, -6729, -23234, -24162, -8892, 12339,
+	25299, 21297, 3018, -17284, -26000, -17284, 3018, 21298,
+	25299, 12339, -8892, -24163, -23234, -6729, 14287, 25725,
+	19917, 756, -18911, -25901, -15525, 5257, 22516, 24680,
+	10297, -10988, -24907, -22128, -4514, 16126, 25956, 18384,
+	-1511, -20394, -25604, -13649, 7457, 23564, 23873, 8177,
+	-13000, -25462, -20855, -2265, 17842, 25988, 16712, -3768,
+	-21722, -25114, -11668, 9599, 24432, 22885, 5995, -14913,
+	-25824, -19422, 0, 19422, 25824, 14912, -5996, -22885,
+	-24431, -9599, 11669, 25114, 21722, 3767, -16712, -25989,
+	-17842, 2266, 20855, 25462, 12999, -8178, -23873, -23563,
+	-7456, 13649, 25605, 20394, 1511, -18384, -25955, -16125,
+	4515, 22129, 24907, 10987, -10298, -24680, -22516, -5257,
+	15526, 25901, 18911, -756, -19917, -25725, -14286, 6729,
+	23234, 24162, 8892, -12339, -25299, -21297, -3018, 17284},
+	{
+// Carrier 23 Phase 5
+	24020, 8536, -12671, -25383, -21078, -2642, 17565, 25997,
+	17000, -3393, -21512, -25209, -12005, 9246, 24300, 23062,
+	6363, -14601, -25777, -19671, -378, 19169, 25865, 15221,
+	-5627, -22703, -24558, -9949, 11329, 25013, 21928, 4141,
+	-16421, -25975, -18115, 1889, 20627, 25536, 13326, -7818,
+	-23721, -23721, -7818, 13326, 25536, 20627, 1889, -18115,
+	-25975, -16420, 4142, 21928, 25013, 11329, -9949, -24558,
+	-22703, -5627, 15221, 25865, 19169, -378, -19672, -25777,
+	-14601, 6363, 23062, 24300, 9246, -12005, -25209, -21512,
+	-3393, 17000, 25997, 17565, -2642, -21078, -25383, -12671,
+	8536, 24020, 23401, 7093, -13969, -25667, -20158, -1133,
+	18650, 25931, 15827, -4886, -22325, -24796, -10644, 10644,
+	24796, 22325, 4886, -15827, -25931, -18650, 1134, 20158,
+	25667, 13969, -7093, -23401, -24020, -8536, 12671, 25383,
+	21078, 2642, -17565, -25997, -17000, 3393, 21512, 25209,
+	12005, -9247, -24300, -23062, -6363, 14601, 25777, 19671,
+	377, -19169, -25865, -15220, 5627, 22703, 24558, 9949,
+	-11329, -25013, -21928, -4141, 16421, 25975, 18115, -1889,
+	-20627, -25536, -13325, 7818, 23721, 23721, 7818, -13326,
+	-25536, -20627, -1888, 18115, 25975, 16420, -4142, -21928,
+	-25013, -11329, 9950, 24558, 22703, 5627, -15221, -25865,
+	-19169, 378, 19672, 25777, 14601, -6363, -23062, -24299,
+	-9246, 12005, 25209, 21512, 3393, -17000, -25997, -17565,
+	2642, 21078, 25383, 12670, -8536, -24020, -23401, -7093,
+	13970, 25668, 20157, 1133, -18650, -25931, -15827, 4887,
+	22325, 24796, 10643, -10644, -24796, -22325, -4886, 15828,
+	25931, 18649, -1134, -20158, -25667, -13969, 7094, 23401},
+	{
+// Carrier 23 Phase 6
+	18384, -1511, -20394, -25605, -13649, 7456, 23564, 23873,
+	8178, -13000, -25462, -20855, -2266, 17842, 25989, 16712,
+	-3768, -21722, -25114, -11668, 9599, 24432, 22885, 5995,
+	-14913, -25824, -19422, 0, 19422, 25824, 14912, -5996,
+	-22885, -24431, -9599, 11668, 25114, 21722, 3768, -16712,
+	-25989, -17842, 2266, 20855, 25462, 12999, -8178, -23873,
+	-23563, -7456, 13649, 25605, 20394, 1511, -18384, -25956,
+	-16126, 4514, 22129, 24907, 10987, -10298, -24680, -22516,
+	-5257, 15526, 25901, 18911, -756, -19917, -25725, -14287,
+	6729, 23234, 24162, 8892, -12339, -25299, -21297, -3018,
+	17284, 26000, 17284, -3018, -21298, -25299, -12339, 8892,
+	24163, 23234, 6729, -14287, -25725, -19917, -756, 18911,
+	25901, 15525, -5257, -22516, -24680, -10297, 10988, 24907,
+	22128, 4514, -16126, -25956, -18384, 1511, 20394, 25604,
+	13649, -7457, -23564, -23873, -8177, 13000, 25462, 20855,
+	2265, -17842, -25988, -16712, 3768, 21722, 25114, 11668,
+	-9599, -24432, -22885, -5995, 14913, 25824, 19422, 0,
+	-19422, -25824, -14912, 5996, 22885, 24431, 9599, -11668,
+	-25114, -21722, -3767, 16712, 25989, 17842, -2266, -20855,
+	-25462, -12999, 8178, 23873, 23563, 7456, -13649, -25605,
+	-20394, -1511, 18384, 25955, 16125, -4515, -22129, -24907,
+	-10987, 10298, 24680, 22516, 5257, -15526, -25901, -18911,
+	756, 19917, 25725, 14286, -6729, -23234, -24162, -8892,
+	12339, 25299, 21297, 3018, -17284, -26000, -17284, 3018,
+	21298, 25299, 12339, -8892, -24163, -23234, -6728, 14287,
+	25725, 19916, 755, -18911, -25901, -15525, 5257, 22516,
+	24680, 10297, -10988, -24907, -22128, -4514, 16126, 25956},
+	{
+// Carrier 23 Phase 7
+	9949, -11329, -25013, -21928, -4141, 16421, 25975, 18115,
+	-1889, -20627, -25536, -13326, 7818, 23721, 23721, 7818,
+	-13326, -25536, -20627, -1889, 18115, 25975, 16421, -4142,
+	-21928, -25013, -11329, 9949, 24558, 22703, 5627, -15221,
+	-25865, -19169, 378, 19672, 25777, 14601, -6363, -23062,
+	-24300, -9246, 12005, 25209, 21512, 3393, -17000, -25997,
+	-17565, 2642, 21078, 25383, 12671, -8536, -24020, -23401,
+	-7093, 13969, 25667, 20158, 1134, -18650, -25931, -15827,
+	4886, 22325, 24796, 10644, -10644, -24796, -22325, -4886,
+	15827, 25931, 18650, -1134, -20158, -25667, -13969, 7093,
+	23401, 24020, 8536, -12671, -25383, -21078, -2642, 17565,
+	25997, 17000, -3393, -21512, -25209, -12005, 9247, 24300,
+	23062, 6363, -14601, -25777, -19671, -377, 19169, 25865,
+	15221, -5627, -22703, -24558, -9949, 11329, 25013, 21928,
+	4141, -16421, -25975, -18115, 1889, 20627, 25536, 13325,
+	-7818, -23721, -23721, -7818, 13326, 25536, 20627, 1888,
+	-18115, -25975, -16420, 4142, 21928, 25013, 11329, -9949,
+	-24558, -22703, -5627, 15221, 25865, 19169, -378, -19672,
+	-25777, -14601, 6363, 23062, 24300, 9246, -12005, -25209,
+	-21512, -3393, 17000, 25997, 17565, -2642, -21078, -25383,
+	-12670, 8536, 24020, 23401, 7093, -13970, -25667, -20157,
+	-1133, 18650, 25931, 15827, -4887, -22325, -24796, -10643,
+	10644, 24796, 22325, 4886, -15828, -25931, -18650, 1134,
+	20158, 25667, 13969, -7094, -23401, -24020, -8535, 12671,
+	25383, 21078, 2642, -17565, -25997, -17000, 3394, 21512,
+	25209, 12005, -9247, -24300, -23062, -6363, 14601, 25777,
+	19671, 377, -19169, -25865, -15220, 5627, 22703, 24558},
+	},{{
+
+// Carrier 24 Phase 0
+	0, 19917, 25605, 13000, -8892, -24432, -22516, -4514,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19917, -25605, -13000, 8892, 24431,
+	22516, 4514, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19917, 25605, 13000,
+	-8892, -24431, -22516, -4514, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19917,
+	-25605, -13000, 8892, 24431, 22516, 4514, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917,
+	0, 19917, 25605, 13000, -8892, -24431, -22516, -4514,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19917, -25605, -13000, 8892, 24431,
+	22516, 4515, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19917, 25605, 13000,
+	-8892, -24431, -22516, -4515, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19917,
+	-25605, -13000, 8892, 24431, 22516, 4515, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917,
+	0, 19916, 25605, 13000, -8892, -24431, -22516, -4515,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19916, -25605, -13000, 8892, 24431,
+	22516, 4515, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19916, 25605, 13000,
+	-8892, -24431, -22516, -4515, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19916,
+	-25605, -13000, 8892, 24431, 22516, 4515, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917},
+	{
+// Carrier 24 Phase 1
+	9949, 24796, 21928, 3393, -17565, -25975, -15827, 5627,
+	23062, 24020, 7818, -13969, -25777, -19169, 1134, 20627,
+	25383, 12005, -9949, -24796, -21928, -3393, 17565, 25975,
+	15827, -5627, -23062, -24020, -7818, 13969, 25777, 19169,
+	-1134, -20627, -25383, -12005, 9949, 24796, 21928, 3393,
+	-17565, -25975, -15827, 5627, 23062, 24020, 7818, -13969,
+	-25777, -19169, 1134, 20627, 25383, 12005, -9949, -24796,
+	-21928, -3393, 17565, 25975, 15827, -5627, -23062, -24020,
+	-7818, 13969, 25777, 19169, -1133, -20627, -25383, -12005,
+	9949, 24796, 21928, 3393, -17565, -25975, -15827, 5627,
+	23062, 24020, 7818, -13969, -25777, -19169, 1133, 20627,
+	25383, 12005, -9949, -24796, -21928, -3393, 17565, 25975,
+	15827, -5627, -23062, -24020, -7818, 13969, 25777, 19169,
+	-1133, -20627, -25383, -12005, 9949, 24796, 21928, 3393,
+	-17565, -25975, -15827, 5627, 23062, 24020, 7818, -13969,
+	-25777, -19169, 1133, 20627, 25383, 12005, -9949, -24796,
+	-21928, -3393, 17565, 25975, 15827, -5627, -23062, -24020,
+	-7818, 13969, 25777, 19169, -1133, -20627, -25383, -12005,
+	9949, 24796, 21928, 3393, -17565, -25975, -15828, 5627,
+	23062, 24020, 7818, -13969, -25777, -19169, 1133, 20627,
+	25383, 12005, -9949, -24796, -21928, -3393, 17565, 25975,
+	15828, -5627, -23062, -24020, -7818, 13969, 25777, 19169,
+	-1133, -20626, -25383, -12005, 9949, 24796, 21928, 3393,
+	-17565, -25975, -15828, 5627, 23062, 24020, 7818, -13969,
+	-25777, -19169, 1133, 20626, 25383, 12005, -9949, -24796,
+	-21928, -3394, 17565, 25975, 15828, -5627, -23062, -24021,
+	-7818, 13969, 25777, 19169, -1133, -20626, -25383, -12005},
+	{
+// Carrier 24 Phase 2
+	18384, 25901, 14912, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2266, -21297, -25114, -10988, 10988, 25114,
+	21297, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10988, -25114, -21297, -2266, 18384, 25901, 14913, -6729,
+	-23563, -23564, -6729, 14912, 25901, 18384, -2265, -21297,
+	-25114, -10988, 10987, 25114, 21298, 2266, -18384, -25901,
+	-14913, 6729, 23563, 23564, 6729, -14912, -25901, -18384,
+	2265, 21297, 25114, 10988, -10987, -25114, -21298, -2266,
+	18384, 25901, 14913, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2265, -21297, -25114, -10988, 10987, 25114,
+	21298, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10987, -25114, -21298, -2266, 18384, 25901, 14913, -6729,
+	-23563, -23564, -6729, 14912, 25901, 18384, -2265, -21297,
+	-25114, -10988, 10987, 25114, 21298, 2266, -18384, -25901,
+	-14913, 6729, 23563, 23564, 6729, -14912, -25901, -18384,
+	2265, 21297, 25114, 10988, -10987, -25114, -21298, -2266,
+	18384, 25901, 14913, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2265, -21297, -25114, -10988, 10987, 25113,
+	21298, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10987, -25113, -21298, -2266, 18384, 25901, 14913, -6728,
+	-23563, -23564, -6729, 14912, 25901, 18385, -2265, -21297,
+	-25114, -10988, 10987, 25113, 21298, 2266, -18384, -25901,
+	-14913, 6728, 23563, 23564, 6729, -14912, -25901, -18385,
+	2265, 21297, 25114, 10988, -10987, -25113, -21298, -2266},
+	{
+// Carrier 24 Phase 3
+	24020, 23062, 5627, -15827, -25975, -17565, 3393, 21928,
+	24796, 9949, -12005, -25383, -20627, -1134, 19169, 25777,
+	13969, -7818, -24020, -23062, -5627, 15827, 25975, 17565,
+	-3393, -21928, -24796, -9949, 12005, 25383, 20627, 1134,
+	-19169, -25777, -13969, 7818, 24020, 23062, 5627, -15827,
+	-25975, -17565, 3393, 21928, 24796, 9949, -12005, -25383,
+	-20627, -1134, 19169, 25777, 13969, -7818, -24020, -23062,
+	-5627, 15827, 25975, 17565, -3393, -21928, -24796, -9949,
+	12005, 25383, 20627, 1134, -19169, -25777, -13969, 7818,
+	24020, 23062, 5627, -15827, -25975, -17565, 3393, 21928,
+	24796, 9949, -12005, -25383, -20627, -1134, 19169, 25777,
+	13969, -7818, -24020, -23062, -5627, 15827, 25975, 17565,
+	-3393, -21928, -24796, -9949, 12005, 25383, 20627, 1134,
+	-19169, -25777, -13969, 7818, 24020, 23062, 5627, -15827,
+	-25975, -17565, 3393, 21928, 24796, 9949, -12005, -25383,
+	-20627, -1134, 19169, 25777, 13969, -7818, -24020, -23062,
+	-5627, 15827, 25975, 17565, -3393, -21928, -24796, -9949,
+	12005, 25383, 20627, 1134, -19169, -25777, -13970, 7818,
+	24020, 23062, 5627, -15827, -25975, -17565, 3393, 21928,
+	24796, 9950, -12005, -25383, -20627, -1134, 19169, 25777,
+	13970, -7818, -24020, -23062, -5627, 15827, 25975, 17565,
+	-3393, -21928, -24796, -9950, 12005, 25383, 20627, 1134,
+	-19168, -25777, -13970, 7818, 24020, 23062, 5627, -15827,
+	-25975, -17565, 3393, 21928, 24796, 9950, -12005, -25383,
+	-20627, -1134, 19168, 25777, 13970, -7818, -24020, -23062,
+	-5627, 15827, 25975, 17565, -3393, -21927, -24796, -9950,
+	12005, 25383, 20627, 1134, -19168, -25777, -13970, 7817},
+	{
+// Carrier 24 Phase 4
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19917, -25605, -13000, 8892, 24431, 22516,
+	4514, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19917, 25605, 13000, -8892,
+	-24431, -22516, -4514, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19917, -25605,
+	-13000, 8892, 24431, 22516, 4514, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19917, 25605, 13000, -8892, -24431, -22516, -4514, 16712,
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19917, -25605, -13000, 8892, 24431, 22516,
+	4515, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19917, 25605, 13000, -8892,
+	-24431, -22516, -4515, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19917, -25605,
+	-13000, 8892, 24431, 22516, 4515, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19917, 25605, 13000, -8892, -24431, -22516, -4515, 16712,
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19916, -25605, -13000, 8892, 24431, 22516,
+	4515, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19916, 25605, 13000, -8892,
+	-24431, -22516, -4515, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19916, -25605,
+	-13000, 8892, 24431, 22516, 4515, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19916, 25605, 13000, -8892, -24431, -22516, -4515, 16712},
+	{
+// Carrier 24 Phase 5
+	24020, 7818, -13969, -25777, -19169, 1134, 20627, 25383,
+	12005, -9949, -24796, -21928, -3393, 17565, 25975, 15827,
+	-5627, -23062, -24020, -7818, 13969, 25777, 19169, -1134,
+	-20627, -25383, -12005, 9949, 24796, 21928, 3393, -17565,
+	-25975, -15827, 5627, 23062, 24020, 7818, -13969, -25777,
+	-19169, 1134, 20627, 25383, 12005, -9949, -24796, -21928,
+	-3393, 17565, 25975, 15827, -5627, -23062, -24020, -7818,
+	13969, 25777, 19169, -1133, -20627, -25383, -12005, 9949,
+	24796, 21928, 3393, -17565, -25975, -15827, 5627, 23062,
+	24020, 7818, -13969, -25777, -19169, 1133, 20627, 25383,
+	12005, -9949, -24796, -21928, -3393, 17565, 25975, 15827,
+	-5627, -23062, -24020, -7818, 13969, 25777, 19169, -1133,
+	-20627, -25383, -12005, 9949, 24796, 21928, 3393, -17565,
+	-25975, -15827, 5627, 23062, 24020, 7818, -13969, -25777,
+	-19169, 1133, 20627, 25383, 12005, -9949, -24796, -21928,
+	-3393, 17565, 25975, 15827, -5627, -23062, -24020, -7818,
+	13969, 25777, 19169, -1133, -20627, -25383, -12005, 9949,
+	24796, 21928, 3393, -17565, -25975, -15828, 5627, 23062,
+	24020, 7818, -13969, -25777, -19169, 1133, 20627, 25383,
+	12005, -9949, -24796, -21928, -3393, 17565, 25975, 15828,
+	-5627, -23062, -24020, -7818, 13969, 25777, 19169, -1133,
+	-20627, -25383, -12005, 9949, 24796, 21928, 3393, -17565,
+	-25975, -15828, 5627, 23062, 24020, 7818, -13969, -25777,
+	-19169, 1133, 20626, 25383, 12005, -9949, -24796, -21928,
+	-3394, 17565, 25975, 15828, -5627, -23062, -24021, -7818,
+	13969, 25777, 19169, -1133, -20626, -25383, -12005, 9949,
+	24796, 21928, 3394, -17565, -25975, -15828, 5627, 23062},
+	{
+// Carrier 24 Phase 6
+	18384, -2266, -21297, -25114, -10988, 10988, 25114, 21297,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2266, 21297, 25114, 10988, -10988,
+	-25114, -21297, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10988, 25114, 21297, 2266, -18384, -25901, -14913,
+	6729, 23563, 23564, 6729, -14912, -25901, -18384, 2265,
+	21297, 25114, 10988, -10987, -25114, -21298, -2266, 18384,
+	25901, 14913, -6729, -23563, -23564, -6729, 14912, 25901,
+	18384, -2265, -21297, -25114, -10988, 10987, 25114, 21298,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2265, 21297, 25114, 10988, -10987,
+	-25114, -21298, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10987, 25114, 21298, 2266, -18384, -25901, -14913,
+	6729, 23563, 23564, 6729, -14912, -25901, -18384, 2265,
+	21297, 25114, 10988, -10987, -25114, -21298, -2266, 18384,
+	25901, 14913, -6729, -23563, -23564, -6729, 14912, 25901,
+	18384, -2265, -21297, -25114, -10988, 10987, 25114, 21298,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2265, 21297, 25114, 10988, -10987,
+	-25113, -21298, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10987, 25113, 21298, 2266, -18384, -25901, -14913,
+	6728, 23563, 23564, 6729, -14912, -25901, -18385, 2265,
+	21297, 25114, 10988, -10987, -25113, -21298, -2266, 18384,
+	25901, 14913, -6728, -23563, -23564, -6729, 14912, 25901},
+	{
+// Carrier 24 Phase 7
+	9949, -12005, -25383, -20627, -1134, 19169, 25777, 13969,
+	-7818, -24020, -23062, -5627, 15827, 25975, 17565, -3393,
+	-21928, -24796, -9949, 12005, 25383, 20627, 1134, -19169,
+	-25777, -13969, 7818, 24020, 23062, 5627, -15827, -25975,
+	-17565, 3393, 21928, 24796, 9949, -12005, -25383, -20627,
+	-1134, 19169, 25777, 13969, -7818, -24020, -23062, -5627,
+	15827, 25975, 17565, -3393, -21928, -24796, -9949, 12005,
+	25383, 20627, 1134, -19169, -25777, -13969, 7818, 24020,
+	23062, 5627, -15827, -25975, -17565, 3393, 21928, 24796,
+	9949, -12005, -25383, -20627, -1134, 19169, 25777, 13969,
+	-7818, -24020, -23062, -5627, 15827, 25975, 17565, -3393,
+	-21928, -24796, -9949, 12005, 25383, 20627, 1134, -19169,
+	-25777, -13969, 7818, 24020, 23062, 5627, -15827, -25975,
+	-17565, 3393, 21928, 24796, 9949, -12005, -25383, -20627,
+	-1134, 19169, 25777, 13969, -7818, -24020, -23062, -5627,
+	15827, 25975, 17565, -3393, -21928, -24796, -9949, 12005,
+	25383, 20627, 1134, -19169, -25777, -13969, 7818, 24020,
+	23062, 5627, -15827, -25975, -17565, 3393, 21928, 24796,
+	9949, -12005, -25383, -20627, -1134, 19169, 25777, 13970,
+	-7818, -24020, -23062, -5627, 15827, 25975, 17565, -3393,
+	-21928, -24796, -9950, 12005, 25383, 20627, 1134, -19169,
+	-25777, -13970, 7818, 24020, 23062, 5627, -15827, -25975,
+	-17565, 3393, 21928, 24796, 9950, -12005, -25383, -20627,
+	-1134, 19168, 25777, 13970, -7818, -24020, -23062, -5627,
+	15827, 25975, 17565, -3393, -21927, -24796, -9950, 12005,
+	25383, 20627, 1134, -19168, -25777, -13970, 7818, 24020,
+	23062, 5627, -15827, -25975, -17565, 3393, 21927, 24796},
+	},{{
+
+// Carrier 25 Phase 0
+	0, 20394, 25299, 10988, -11668, -25462, -19917, 756,
+	20855, 25114, 10298, -12339, -25604, -19422, 1511, 21297,
+	24907, 9599, -12999, -25725, -18911, 2266, 21722, 24680,
+	8892, -13649, -25824, -18384, 3018, 22129, 24432, 8178,
+	-14287, -25901, -17842, 3768, 22516, 24163, 7456, -14912,
+	-25956, -17284, 4514, 22885, 23873, 6729, -15526, -25989,
+	-16712, 5257, 23234, 23564, 5996, -16126, -26000, -16126,
+	5995, 23563, 23234, 5257, -16712, -25989, -15526, 6729,
+	23873, 22885, 4514, -17284, -25956, -14913, 7456, 24163,
+	22516, 3768, -17842, -25901, -14287, 8178, 24432, 22129,
+	3018, -18384, -25824, -13649, 8892, 24680, 21722, 2266,
+	-18911, -25725, -13000, 9599, 24907, 21297, 1511, -19422,
+	-25605, -12339, 10298, 25114, 20855, 756, -19917, -25462,
+	-11668, 10988, 25299, 20394, 0, -20394, -25299, -10988,
+	11668, 25462, 19917, -756, -20855, -25114, -10298, 12339,
+	25605, 19422, -1511, -21297, -24907, -9599, 13000, 25725,
+	18911, -2266, -21722, -24680, -8892, 13649, 25824, 18384,
+	-3018, -22129, -24432, -8178, 14287, 25901, 17842, -3768,
+	-22516, -24163, -7456, 14913, 25956, 17284, -4514, -22885,
+	-23873, -6729, 15526, 25989, 16712, -5257, -23234, -23563,
+	-5995, 16126, 26000, 16126, -5996, -23564, -23234, -5257,
+	16712, 25989, 15526, -6729, -23873, -22885, -4514, 17284,
+	25956, 14912, -7456, -24163, -22516, -3768, 17842, 25901,
+	14287, -8178, -24432, -22129, -3018, 18384, 25824, 13649,
+	-8892, -24680, -21722, -2265, 18911, 25725, 12999, -9599,
+	-24907, -21297, -1511, 19422, 25604, 12339, -10298, -25114,
+	-20855, -756, 19917, 25462, 11668, -10988, -25299, -20394},
+	{
+// Carrier 25 Phase 1
+	9949, 25013, 21078, 1134, -19671, -25536, -12005, 10644,
+	25209, 20627, 378, -20158, -25383, -11329, 11329, 25383,
+	20158, -378, -20627, -25209, -10644, 12005, 25536, 19671,
+	-1134, -21078, -25013, -9949, 12671, 25667, 19169, -1889,
+	-21512, -24796, -9246, 13326, 25777, 18650, -2642, -21928,
+	-24558, -8536, 13969, 25865, 18115, -3393, -22325, -24300,
+	-7818, 14601, 25931, 17565, -4141, -22703, -24020, -7093,
+	15221, 25975, 17000, -4886, -23062, -23721, -6363, 15827,
+	25997, 16421, -5627, -23401, -23401, -5627, 16421, 25997,
+	15827, -6363, -23721, -23062, -4886, 17000, 25975, 15221,
+	-7093, -24020, -22703, -4141, 17565, 25931, 14601, -7818,
+	-24300, -22325, -3393, 18115, 25865, 13969, -8536, -24558,
+	-21928, -2642, 18650, 25777, 13326, -9246, -24796, -21512,
+	-1889, 19169, 25667, 12671, -9949, -25013, -21078, -1134,
+	19672, 25536, 12005, -10644, -25209, -20627, -378, 20158,
+	25383, 11329, -11329, -25383, -20158, 378, 20627, 25209,
+	10644, -12005, -25536, -19671, 1134, 21078, 25013, 9949,
+	-12671, -25667, -19169, 1889, 21512, 24796, 9246, -13326,
+	-25777, -18650, 2642, 21928, 24558, 8536, -13969, -25865,
+	-18115, 3393, 22325, 24300, 7818, -14601, -25931, -17565,
+	4142, 22703, 24020, 7093, -15221, -25975, -17000, 4886,
+	23062, 23721, 6363, -15827, -25997, -16421, 5627, 23401,
+	23401, 5627, -16421, -25997, -15827, 6363, 23721, 23062,
+	4886, -17000, -25975, -15221, 7093, 24020, 22703, 4141,
+	-17565, -25931, -14601, 7818, 24300, 22325, 3393, -18115,
+	-25865, -13969, 8536, 24558, 21928, 2642, -18650, -25777,
+	-13326, 9246, 24796, 21512, 1889, -19169, -25667, -12671},
+	{
+// Carrier 25 Phase 2
+	18384, 25824, 13649, -8892, -24680, -21722, -2266, 18911,
+	25725, 13000, -9599, -24907, -21297, -1511, 19422, 25605,
+	12339, -10298, -25114, -20855, -756, 19917, 25462, 11668,
+	-10988, -25299, -20394, 0, 20394, 25299, 10988, -11668,
+	-25462, -19917, 756, 20855, 25114, 10298, -12339, -25604,
+	-19422, 1511, 21297, 24907, 9599, -12999, -25725, -18911,
+	2266, 21722, 24680, 8892, -13649, -25824, -18384, 3018,
+	22129, 24432, 8178, -14287, -25901, -17842, 3768, 22516,
+	24163, 7456, -14912, -25956, -17284, 4514, 22885, 23873,
+	6729, -15526, -25989, -16712, 5257, 23234, 23564, 5996,
+	-16126, -26000, -16126, 5996, 23564, 23234, 5257, -16712,
+	-25989, -15526, 6729, 23873, 22885, 4514, -17284, -25956,
+	-14912, 7456, 24163, 22516, 3768, -17842, -25901, -14287,
+	8178, 24432, 22129, 3018, -18384, -25824, -13649, 8892,
+	24680, 21722, 2266, -18911, -25725, -12999, 9599, 24907,
+	21297, 1511, -19422, -25604, -12339, 10298, 25114, 20855,
+	756, -19917, -25462, -11668, 10988, 25299, 20394, 0,
+	-20394, -25299, -10988, 11668, 25462, 19917, -756, -20855,
+	-25114, -10298, 12339, 25605, 19422, -1511, -21297, -24907,
+	-9599, 13000, 25725, 18911, -2266, -21722, -24680, -8892,
+	13649, 25824, 18384, -3018, -22129, -24431, -8178, 14287,
+	25901, 17842, -3768, -22516, -24163, -7456, 14913, 25956,
+	17284, -4514, -22885, -23873, -6729, 15526, 25989, 16712,
+	-5257, -23234, -23563, -5995, 16126, 26000, 16126, -5996,
+	-23564, -23234, -5257, 16712, 25988, 15526, -6729, -23873,
+	-22885, -4514, 17284, 25956, 14912, -7456, -24163, -22516,
+	-3768, 17842, 25901, 14287, -8178, -24432, -22129, -3018},
+	{
+// Carrier 25 Phase 3
+	24020, 22703, 4141, -17565, -25931, -14601, 7818, 24300,
+	22325, 3393, -18115, -25865, -13969, 8536, 24558, 21928,
+	2642, -18650, -25777, -13326, 9246, 24796, 21512, 1889,
+	-19169, -25667, -12671, 9949, 25013, 21078, 1134, -19671,
+	-25536, -12005, 10644, 25209, 20627, 378, -20158, -25383,
+	-11329, 11329, 25383, 20158, -378, -20627, -25209, -10644,
+	12005, 25536, 19671, -1134, -21078, -25013, -9949, 12671,
+	25667, 19169, -1889, -21512, -24796, -9246, 13326, 25777,
+	18650, -2642, -21928, -24558, -8536, 13969, 25865, 18115,
+	-3393, -22325, -24300, -7818, 14601, 25931, 17565, -4142,
+	-22703, -24020, -7093, 15221, 25975, 17000, -4886, -23062,
+	-23721, -6363, 15827, 25997, 16420, -5627, -23401, -23401,
+	-5627, 16421, 25997, 15827, -6363, -23721, -23062, -4886,
+	17000, 25975, 15221, -7093, -24020, -22703, -4141, 17565,
+	25931, 14601, -7818, -24300, -22325, -3393, 18115, 25865,
+	13969, -8536, -24558, -21928, -2642, 18650, 25777, 13326,
+	-9246, -24796, -21512, -1889, 19169, 25667, 12671, -9949,
+	-25013, -21078, -1134, 19672, 25536, 12005, -10644, -25209,
+	-20627, -378, 20158, 25383, 11329, -11329, -25383, -20158,
+	378, 20627, 25209, 10644, -12005, -25536, -19671, 1134,
+	21078, 25013, 9949, -12671, -25667, -19169, 1889, 21512,
+	24796, 9246, -13326, -25777, -18650, 2642, 21928, 24558,
+	8536, -13969, -25865, -18115, 3393, 22325, 24300, 7818,
+	-14601, -25931, -17565, 4142, 22703, 24020, 7093, -15221,
+	-25975, -17000, 4886, 23062, 23721, 6363, -15827, -25997,
+	-16420, 5627, 23401, 23401, 5627, -16421, -25997, -15827,
+	6363, 23721, 23062, 4886, -17000, -25975, -15221, 7093},
+	{
+// Carrier 25 Phase 4
+	26000, 16126, -5996, -23563, -23234, -5257, 16712, 25989,
+	15526, -6729, -23873, -22885, -4514, 17284, 25956, 14912,
+	-7456, -24163, -22516, -3768, 17842, 25901, 14287, -8178,
+	-24432, -22129, -3018, 18384, 25824, 13649, -8892, -24680,
+	-21722, -2266, 18911, 25725, 12999, -9599, -24907, -21297,
+	-1511, 19422, 25604, 12339, -10298, -25114, -20855, -756,
+	19917, 25462, 11668, -10988, -25299, -20394, 0, 20394,
+	25299, 10988, -11668, -25462, -19917, 756, 20855, 25114,
+	10298, -12339, -25605, -19422, 1511, 21297, 24907, 9599,
+	-12999, -25725, -18911, 2266, 21722, 24680, 8892, -13649,
+	-25824, -18384, 3018, 22129, 24432, 8178, -14287, -25901,
+	-17842, 3768, 22516, 24163, 7456, -14912, -25956, -17284,
+	4514, 22885, 23873, 6729, -15526, -25989, -16712, 5257,
+	23234, 23564, 5996, -16126, -26000, -16126, 5996, 23564,
+	23234, 5257, -16712, -25989, -15526, 6729, 23873, 22885,
+	4514, -17284, -25956, -14912, 7456, 24163, 22516, 3768,
+	-17842, -25901, -14287, 8178, 24432, 22129, 3018, -18384,
+	-25824, -13649, 8892, 24680, 21722, 2266, -18911, -25725,
+	-12999, 9599, 24907, 21297, 1511, -19422, -25604, -12339,
+	10298, 25114, 20855, 756, -19917, -25462, -11668, 10988,
+	25299, 20394, 0, -20394, -25299, -10988, 11668, 25462,
+	19917, -756, -20855, -25114, -10298, 12339, 25605, 19422,
+	-1511, -21297, -24907, -9599, 13000, 25725, 18911, -2266,
+	-21722, -24680, -8892, 13649, 25824, 18384, -3018, -22129,
+	-24431, -8178, 14287, 25901, 17842, -3768, -22516, -24163,
+	-7456, 14913, 25956, 17284, -4514, -22885, -23873, -6729,
+	15526, 25989, 16712, -5257, -23234, -23563, -5995, 16126},
+	{
+// Carrier 25 Phase 5
+	24020, 7093, -15221, -25975, -17000, 4886, 23062, 23721,
+	6363, -15827, -25997, -16421, 5627, 23401, 23401, 5627,
+	-16421, -25997, -15827, 6363, 23721, 23062, 4886, -17000,
+	-25975, -15221, 7093, 24020, 22703, 4141, -17565, -25931,
+	-14601, 7818, 24300, 22325, 3393, -18115, -25865, -13969,
+	8536, 24558, 21928, 2642, -18650, -25777, -13326, 9246,
+	24796, 21512, 1889, -19169, -25667, -12671, 9949, 25013,
+	21078, 1134, -19672, -25536, -12005, 10644, 25209, 20627,
+	378, -20158, -25383, -11329, 11329, 25383, 20158, -378,
+	-20627, -25209, -10644, 12005, 25536, 19671, -1134, -21078,
+	-25013, -9949, 12671, 25667, 19169, -1889, -21512, -24796,
+	-9246, 13326, 25777, 18650, -2642, -21928, -24558, -8536,
+	13969, 25865, 18115, -3393, -22325, -24300, -7818, 14601,
+	25931, 17565, -4142, -22703, -24020, -7093, 15221, 25975,
+	17000, -4886, -23062, -23721, -6363, 15827, 25997, 16420,
+	-5627, -23401, -23401, -5627, 16421, 25997, 15827, -6363,
+	-23721, -23062, -4886, 17000, 25975, 15221, -7093, -24020,
+	-22703, -4141, 17565, 25931, 14601, -7818, -24300, -22325,
+	-3393, 18115, 25865, 13969, -8536, -24558, -21928, -2642,
+	18650, 25777, 13326, -9246, -24796, -21512, -1889, 19169,
+	25667, 12671, -9949, -25013, -21078, -1134, 19672, 25536,
+	12005, -10644, -25209, -20627, -378, 20158, 25383, 11329,
+	-11329, -25383, -20158, 378, 20627, 25209, 10644, -12005,
+	-25536, -19671, 1134, 21078, 25013, 9949, -12671, -25667,
+	-19169, 1889, 21512, 24796, 9246, -13326, -25777, -18650,
+	2642, 21928, 24558, 8536, -13969, -25865, -18115, 3393,
+	22325, 24300, 7818, -14601, -25931, -17565, 4142, 22703},
+	{
+// Carrier 25 Phase 6
+	18384, -3018, -22129, -24432, -8178, 14287, 25901, 17842,
+	-3768, -22516, -24163, -7456, 14912, 25956, 17284, -4514,
+	-22885, -23873, -6729, 15526, 25989, 16712, -5257, -23234,
+	-23563, -5996, 16126, 26000, 16126, -5996, -23564, -23234,
+	-5257, 16712, 25989, 15526, -6729, -23873, -22885, -4514,
+	17284, 25956, 14912, -7456, -24163, -22516, -3768, 17842,
+	25901, 14287, -8178, -24432, -22129, -3018, 18384, 25824,
+	13649, -8892, -24680, -21722, -2266, 18911, 25725, 12999,
+	-9599, -24907, -21297, -1511, 19422, 25604, 12339, -10298,
+	-25114, -20855, -756, 19917, 25462, 11668, -10988, -25299,
+	-20394, 0, 20394, 25299, 10988, -11668, -25462, -19917,
+	756, 20855, 25114, 10298, -12339, -25605, -19422, 1511,
+	21297, 24907, 9599, -13000, -25725, -18911, 2266, 21722,
+	24680, 8892, -13649, -25824, -18384, 3018, 22129, 24432,
+	8178, -14287, -25901, -17842, 3768, 22516, 24163, 7456,
+	-14913, -25956, -17284, 4514, 22885, 23873, 6729, -15526,
+	-25989, -16712, 5257, 23234, 23563, 5995, -16126, -26000,
+	-16126, 5996, 23564, 23234, 5257, -16712, -25989, -15526,
+	6729, 23873, 22885, 4514, -17284, -25956, -14912, 7456,
+	24163, 22516, 3768, -17842, -25901, -14287, 8178, 24432,
+	22129, 3018, -18384, -25824, -13649, 8892, 24680, 21722,
+	2266, -18911, -25725, -12999, 9599, 24907, 21297, 1511,
+	-19422, -25604, -12339, 10298, 25114, 20855, 756, -19917,
+	-25462, -11668, 10988, 25299, 20394, 0, -20394, -25299,
+	-10988, 11668, 25462, 19917, -756, -20855, -25114, -10298,
+	12339, 25605, 19422, -1511, -21297, -24907, -9599, 13000,
+	25725, 18911, -2266, -21722, -24680, -8892, 13649, 25824},
+	{
+// Carrier 25 Phase 7
+	9949, -12671, -25667, -19169, 1889, 21512, 24796, 9246,
+	-13326, -25777, -18650, 2642, 21928, 24558, 8536, -13969,
+	-25865, -18115, 3393, 22325, 24300, 7818, -14601, -25931,
+	-17565, 4141, 22703, 24020, 7093, -15221, -25975, -17000,
+	4886, 23062, 23721, 6363, -15827, -25997, -16421, 5627,
+	23401, 23401, 5627, -16421, -25997, -15827, 6363, 23721,
+	23062, 4886, -17000, -25975, -15221, 7093, 24020, 22703,
+	4141, -17565, -25931, -14601, 7818, 24300, 22325, 3393,
+	-18115, -25865, -13969, 8536, 24558, 21928, 2642, -18650,
+	-25777, -13326, 9246, 24796, 21512, 1889, -19169, -25667,
+	-12671, 9949, 25013, 21078, 1134, -19672, -25536, -12005,
+	10644, 25209, 20627, 378, -20158, -25383, -11329, 11329,
+	25383, 20158, -378, -20627, -25209, -10644, 12005, 25536,
+	19671, -1134, -21078, -25013, -9949, 12671, 25667, 19169,
+	-1889, -21512, -24796, -9246, 13326, 25777, 18650, -2642,
+	-21928, -24558, -8536, 13969, 25865, 18115, -3393, -22325,
+	-24300, -7818, 14601, 25931, 17565, -4142, -22703, -24020,
+	-7093, 15221, 25975, 17000, -4886, -23062, -23721, -6363,
+	15827, 25997, 16420, -5627, -23401, -23401, -5627, 16421,
+	25997, 15827, -6363, -23721, -23062, -4886, 17000, 25975,
+	15221, -7093, -24020, -22703, -4141, 17565, 25931, 14601,
+	-7818, -24300, -22325, -3393, 18115, 25865, 13969, -8536,
+	-24558, -21928, -2642, 18650, 25777, 13326, -9246, -24796,
+	-21512, -1889, 19169, 25667, 12671, -9949, -25013, -21078,
+	-1134, 19672, 25536, 12005, -10644, -25209, -20627, -378,
+	20158, 25383, 11329, -11329, -25383, -20158, 378, 20627,
+	25209, 10644, -12005, -25536, -19671, 1134, 21078, 25013},
+	},{{
+
+// Carrier 26 Phase 0
+	0, 20855, 24907, 8892, -14287, -25956, -16712, 5996,
+	23873, 22516, 3018, -18911, -25604, -11668, 11668, 25605,
+	18911, -3018, -22516, -23873, -5995, 16712, 25956, 14287,
+	-8892, -24907, -20855, 0, 20855, 24907, 8892, -14287,
+	-25956, -16712, 5996, 23873, 22516, 3018, -18911, -25604,
+	-11668, 11668, 25605, 18911, -3018, -22516, -23873, -5995,
+	16712, 25956, 14287, -8892, -24907, -20855, 0, 20855,
+	24907, 8892, -14287, -25956, -16712, 5996, 23873, 22516,
+	3018, -18911, -25604, -11668, 11668, 25605, 18911, -3018,
+	-22516, -23873, -5995, 16712, 25956, 14287, -8892, -24907,
+	-20855, 0, 20855, 24907, 8892, -14287, -25956, -16712,
+	5996, 23873, 22516, 3018, -18911, -25604, -11668, 11669,
+	25605, 18911, -3018, -22516, -23873, -5995, 16712, 25955,
+	14286, -8892, -24907, -20855, 0, 20855, 24907, 8892,
+	-14287, -25956, -16712, 5996, 23873, 22516, 3018, -18911,
+	-25604, -11668, 11669, 25605, 18911, -3018, -22516, -23873,
+	-5995, 16712, 25955, 14286, -8892, -24907, -20854, 0,
+	20855, 24907, 8892, -14287, -25956, -16712, 5996, 23873,
+	22516, 3018, -18911, -25604, -11668, 11669, 25605, 18911,
+	-3018, -22516, -23873, -5995, 16712, 25955, 14286, -8892,
+	-24907, -20854, 0, 20855, 24907, 8892, -14287, -25956,
+	-16712, 5996, 23873, 22516, 3017, -18912, -25604, -11668,
+	11669, 25605, 18911, -3018, -22516, -23873, -5995, 16712,
+	25955, 14286, -8892, -24907, -20854, 0, 20855, 24907,
+	8892, -14287, -25956, -16712, 5996, 23873, 22516, 3017,
+	-18912, -25604, -11668, 11669, 25605, 18911, -3018, -22516,
+	-23873, -5995, 16712, 25955, 14286, -8893, -24907, -20854},
+	{
+// Carrier 26 Phase 1
+	9949, 25209, 20158, -1134, -21512, -24558, -7818, 15221,
+	25997, 15827, -7093, -24300, -21928, -1889, 19672, 25383,
+	10644, -12671, -25777, -18115, 4142, 23062, 23401, 4886,
+	-17565, -25865, -13326, 9949, 25209, 20158, -1134, -21512,
+	-24558, -7818, 15221, 25997, 15827, -7093, -24300, -21928,
+	-1889, 19672, 25383, 10644, -12671, -25777, -18115, 4142,
+	23062, 23401, 4886, -17565, -25865, -13325, 9949, 25209,
+	20158, -1134, -21512, -24558, -7818, 15221, 25997, 15827,
+	-7094, -24300, -21928, -1888, 19672, 25383, 10644, -12671,
+	-25777, -18115, 4142, 23062, 23401, 4886, -17565, -25865,
+	-13325, 9949, 25209, 20157, -1134, -21512, -24558, -7818,
+	15221, 25997, 15827, -7094, -24300, -21928, -1888, 19672,
+	25383, 10643, -12671, -25777, -18115, 4142, 23062, 23401,
+	4886, -17565, -25865, -13325, 9950, 25209, 20157, -1134,
+	-21512, -24558, -7818, 15221, 25997, 15827, -7094, -24300,
+	-21928, -1888, 19672, 25383, 10643, -12671, -25777, -18115,
+	4142, 23062, 23401, 4886, -17565, -25865, -13325, 9950,
+	25209, 20157, -1134, -21512, -24558, -7817, 15221, 25997,
+	15827, -7094, -24300, -21927, -1888, 19672, 25383, 10643,
+	-12671, -25777, -18115, 4142, 23062, 23401, 4886, -17565,
+	-25865, -13325, 9950, 25209, 20157, -1134, -21512, -24558,
+	-7817, 15221, 25997, 15827, -7094, -24300, -21927, -1888,
+	19672, 25383, 10643, -12671, -25777, -18115, 4142, 23062,
+	23401, 4886, -17565, -25865, -13325, 9950, 25209, 20157,
+	-1134, -21512, -24558, -7817, 15221, 25997, 15827, -7094,
+	-24300, -21927, -1888, 19672, 25383, 10643, -12671, -25777,
+	-18115, 4142, 23062, 23401, 4886, -17565, -25865, -13325},
+	{
+// Carrier 26 Phase 2
+	18384, 25725, 12339, -10988, -25462, -19422, 2266, 22129,
+	24163, 6729, -16126, -25989, -14912, 8178, 24680, 21297,
+	756, -20394, -25114, -9599, 13649, 25901, 17284, -5257,
+	-23564, -22885, -3768, 18384, 25725, 12339, -10988, -25462,
+	-19422, 2266, 22129, 24162, 6729, -16126, -25988, -14912,
+	8178, 24680, 21297, 756, -20394, -25114, -9599, 13649,
+	25901, 17284, -5257, -23564, -22885, -3768, 18384, 25725,
+	12339, -10988, -25462, -19422, 2266, 22129, 24162, 6729,
+	-16126, -25988, -14912, 8178, 24680, 21297, 756, -20394,
+	-25114, -9599, 13649, 25901, 17284, -5257, -23564, -22885,
+	-3768, 18384, 25725, 12339, -10988, -25462, -19422, 2266,
+	22129, 24162, 6729, -16126, -25988, -14912, 8178, 24680,
+	21297, 755, -20394, -25114, -9599, 13649, 25901, 17284,
+	-5257, -23564, -22885, -3767, 18384, 25725, 12339, -10988,
+	-25462, -19422, 2266, 22129, 24162, 6728, -16126, -25988,
+	-14912, 8178, 24680, 21297, 755, -20395, -25113, -9599,
+	13649, 25901, 17284, -5258, -23564, -22885, -3767, 18385,
+	25725, 12339, -10988, -25462, -19422, 2266, 22129, 24162,
+	6728, -16126, -25988, -14912, 8178, 24680, 21297, 755,
+	-20395, -25113, -9598, 13649, 25901, 17284, -5258, -23564,
+	-22885, -3767, 18385, 25725, 12339, -10988, -25462, -19422,
+	2266, 22129, 24162, 6728, -16126, -25988, -14912, 8178,
+	24680, 21297, 755, -20395, -25113, -9598, 13649, 25901,
+	17284, -5258, -23564, -22884, -3767, 18385, 25725, 12339,
+	-10988, -25462, -19422, 2266, 22129, 24162, 6728, -16126,
+	-25988, -14912, 8178, 24680, 21297, 755, -20395, -25113,
+	-9598, 13649, 25901, 17284, -5258, -23564, -22884, -3767},
+	{
+// Carrier 26 Phase 3
+	24020, 22325, 2642, -19169, -25536, -11329, 12005, 25667,
+	18650, -3393, -22703, -23721, -5627, 17000, 25931, 13969,
+	-9246, -25013, -20627, 378, 21078, 24796, 8536, -14601,
+	-25975, -16420, 6363, 24020, 22325, 2642, -19169, -25536,
+	-11329, 12005, 25667, 18650, -3393, -22703, -23721, -5627,
+	17000, 25931, 13969, -9247, -25013, -20627, 378, 21078,
+	24796, 8536, -14601, -25975, -16420, 6363, 24020, 22325,
+	2642, -19169, -25536, -11329, 12005, 25667, 18650, -3393,
+	-22703, -23721, -5627, 17000, 25931, 13969, -9247, -25013,
+	-20627, 378, 21078, 24796, 8536, -14601, -25975, -16420,
+	6363, 24020, 22325, 2642, -19169, -25536, -11329, 12005,
+	25667, 18650, -3393, -22703, -23721, -5627, 17000, 25931,
+	13969, -9247, -25013, -20627, 378, 21078, 24796, 8535,
+	-14601, -25975, -16420, 6363, 24020, 22325, 2642, -19169,
+	-25536, -11329, 12005, 25668, 18649, -3394, -22703, -23721,
+	-5627, 17000, 25931, 13969, -9247, -25013, -20626, 378,
+	21079, 24796, 8535, -14601, -25975, -16420, 6363, 24021,
+	22325, 2642, -19169, -25536, -11329, 12005, 25668, 18649,
+	-3394, -22703, -23721, -5627, 17000, 25931, 13969, -9247,
+	-25013, -20626, 378, 21079, 24796, 8535, -14602, -25975,
+	-16420, 6363, 24021, 22324, 2642, -19169, -25536, -11329,
+	12005, 25668, 18649, -3394, -22703, -23721, -5626, 17000,
+	25931, 13969, -9247, -25013, -20626, 378, 21079, 24796,
+	8535, -14602, -25975, -16420, 6363, 24021, 22324, 2641,
+	-19169, -25536, -11329, 12005, 25668, 18649, -3394, -22703,
+	-23721, -5626, 17000, 25931, 13969, -9247, -25013, -20626,
+	378, 21079, 24796, 8535, -14602, -25975, -16420, 6363},
+	{
+// Carrier 26 Phase 4
+	26000, 15526, -7456, -24432, -21722, -1511, 19917, 25299,
+	10298, -13000, -25824, -17842, 4514, 23234, 23234, 4514,
+	-17842, -25824, -12999, 10298, 25299, 19917, -1511, -21722,
+	-24431, -7456, 15526, 26000, 15526, -7456, -24432, -21722,
+	-1511, 19917, 25299, 10297, -13000, -25824, -17842, 4514,
+	23234, 23234, 4514, -17842, -25824, -12999, 10298, 25299,
+	19917, -1511, -21722, -24431, -7456, 15526, 26000, 15526,
+	-7457, -24432, -21722, -1511, 19917, 25299, 10297, -13000,
+	-25824, -17842, 4515, 23234, 23234, 4514, -17842, -25824,
+	-12999, 10298, 25299, 19917, -1511, -21722, -24431, -7456,
+	15526, 26000, 15525, -7457, -24432, -21722, -1511, 19917,
+	25299, 10297, -13000, -25824, -17842, 4515, 23234, 23234,
+	4514, -17842, -25824, -12999, 10298, 25299, 19916, -1512,
+	-21722, -24431, -7456, 15526, 26000, 15525, -7457, -24432,
+	-21722, -1511, 19917, 25299, 10297, -13000, -25824, -17842,
+	4515, 23234, 23234, 4514, -17842, -25824, -12999, 10298,
+	25299, 19916, -1512, -21722, -24431, -7456, 15526, 26000,
+	15525, -7457, -24432, -21722, -1511, 19917, 25299, 10297,
+	-13000, -25824, -17841, 4515, 23234, 23234, 4514, -17842,
+	-25824, -12999, 10298, 25299, 19916, -1512, -21722, -24431,
+	-7456, 15526, 26000, 15525, -7457, -24432, -21722, -1511,
+	19917, 25299, 10297, -13000, -25824, -17841, 4515, 23234,
+	23234, 4514, -17842, -25824, -12999, 10298, 25299, 19916,
+	-1512, -21722, -24431, -7456, 15526, 26000, 15525, -7457,
+	-24432, -21722, -1511, 19917, 25299, 10297, -13000, -25824,
+	-17841, 4515, 23234, 23234, 4514, -17842, -25824, -12999,
+	10298, 25299, 19916, -1512, -21723, -24431, -7456, 15526},
+	{
+// Carrier 26 Phase 5
+	24020, 6363, -16421, -25975, -14601, 8536, 24796, 21078,
+	378, -20627, -25013, -9246, 13969, 25931, 17000, -5627,
+	-23721, -22703, -3393, 18650, 25667, 12005, -11329, -25536,
+	-19169, 2642, 22325, 24020, 6363, -16421, -25975, -14601,
+	8536, 24796, 21078, 378, -20627, -25013, -9246, 13969,
+	25931, 17000, -5627, -23721, -22703, -3393, 18650, 25667,
+	12005, -11329, -25536, -19169, 2642, 22325, 24020, 6363,
+	-16421, -25975, -14601, 8536, 24796, 21078, 377, -20627,
+	-25013, -9246, 13969, 25931, 17000, -5627, -23721, -22703,
+	-3393, 18650, 25667, 12005, -11329, -25536, -19169, 2642,
+	22325, 24020, 6363, -16421, -25975, -14601, 8536, 24796,
+	21078, 377, -20627, -25013, -9246, 13970, 25931, 17000,
+	-5627, -23721, -22703, -3393, 18650, 25667, 12005, -11329,
+	-25536, -19169, 2642, 22325, 24020, 6363, -16421, -25975,
+	-14601, 8536, 24796, 21078, 377, -20627, -25013, -9246,
+	13970, 25931, 17000, -5627, -23721, -22703, -3393, 18650,
+	25667, 12005, -11329, -25536, -19168, 2642, 22325, 24020,
+	6362, -16421, -25975, -14601, 8536, 24796, 21078, 377,
+	-20627, -25013, -9246, 13970, 25931, 17000, -5627, -23721,
+	-22703, -3393, 18650, 25667, 12005, -11330, -25536, -19168,
+	2642, 22325, 24020, 6362, -16421, -25975, -14601, 8536,
+	24796, 21078, 377, -20627, -25013, -9246, 13970, 25931,
+	17000, -5627, -23721, -22703, -3393, 18650, 25667, 12005,
+	-11330, -25536, -19168, 2643, 22325, 24020, 6362, -16421,
+	-25975, -14601, 8536, 24796, 21078, 377, -20627, -25013,
+	-9246, 13970, 25931, 16999, -5627, -23721, -22703, -3393,
+	18650, 25667, 12004, -11330, -25536, -19168, 2643, 22325},
+	{
+// Carrier 26 Phase 6
+	18384, -3768, -22885, -23563, -5257, 17284, 25901, 13649,
+	-9599, -25114, -20394, 756, 21297, 24680, 8178, -14913,
+	-25989, -16126, 6729, 24163, 22129, 2265, -19422, -25462,
+	-10988, 12339, 25725, 18384, -3768, -22885, -23563, -5257,
+	17284, 25901, 13649, -9599, -25114, -20394, 756, 21298,
+	24680, 8178, -14913, -25989, -16126, 6729, 24163, 22128,
+	2265, -19422, -25462, -10987, 12339, 25725, 18384, -3768,
+	-22885, -23563, -5257, 17284, 25901, 13649, -9599, -25114,
+	-20394, 756, 21298, 24680, 8177, -14913, -25989, -16125,
+	6729, 24163, 22128, 2265, -19422, -25462, -10987, 12339,
+	25725, 18384, -3768, -22885, -23563, -5257, 17284, 25901,
+	13649, -9599, -25114, -20394, 756, 21298, 24680, 8177,
+	-14913, -25989, -16125, 6729, 24163, 22128, 2265, -19422,
+	-25462, -10987, 12339, 25725, 18384, -3768, -22885, -23563,
+	-5257, 17284, 25901, 13649, -9599, -25114, -20394, 756,
+	21298, 24680, 8177, -14913, -25989, -16125, 6729, 24163,
+	22128, 2265, -19422, -25462, -10987, 12339, 25725, 18384,
+	-3768, -22885, -23563, -5257, 17284, 25901, 13649, -9599,
+	-25114, -20394, 756, 21298, 24680, 8177, -14913, -25989,
+	-16125, 6729, 24163, 22128, 2265, -19422, -25462, -10987,
+	12340, 25725, 18384, -3768, -22885, -23563, -5257, 17285,
+	25901, 13648, -9599, -25114, -20394, 756, 21298, 24680,
+	8177, -14913, -25989, -16125, 6729, 24163, 22128, 2265,
+	-19422, -25462, -10987, 12340, 25725, 18384, -3768, -22885,
+	-23563, -5257, 17285, 25901, 13648, -9599, -25114, -20394,
+	756, 21298, 24680, 8177, -14913, -25989, -16125, 6729,
+	24163, 22128, 2265, -19423, -25462, -10987, 12340, 25725},
+	{
+// Carrier 26 Phase 7
+	9949, -13326, -25865, -17565, 4886, 23401, 23062, 4141,
+	-18115, -25777, -12671, 10644, 25383, 19671, -1889, -21928,
+	-24300, -7093, 15827, 25997, 15221, -7818, -24558, -21512,
+	-1134, 20158, 25209, 9949, -13326, -25865, -17565, 4886,
+	23401, 23062, 4141, -18115, -25777, -12671, 10644, 25383,
+	19671, -1889, -21928, -24300, -7093, 15827, 25997, 15221,
+	-7818, -24558, -21512, -1133, 20158, 25209, 9949, -13326,
+	-25865, -17565, 4886, 23401, 23062, 4141, -18115, -25777,
+	-12670, 10644, 25383, 19671, -1889, -21928, -24300, -7093,
+	15827, 25997, 15221, -7818, -24558, -21512, -1133, 20158,
+	25209, 9949, -13326, -25865, -17565, 4887, 23401, 23062,
+	4141, -18115, -25777, -12670, 10644, 25383, 19671, -1889,
+	-21928, -24299, -7093, 15828, 25997, 15220, -7818, -24558,
+	-21512, -1133, 20158, 25209, 9949, -13326, -25865, -17565,
+	4887, 23401, 23062, 4141, -18115, -25777, -12670, 10644,
+	25383, 19671, -1889, -21928, -24299, -7093, 15828, 25997,
+	15220, -7818, -24558, -21512, -1133, 20158, 25209, 9949,
+	-13326, -25865, -17565, 4887, 23401, 23062, 4141, -18115,
+	-25777, -12670, 10644, 25383, 19671, -1889, -21928, -24299,
+	-7093, 15828, 25997, 15220, -7818, -24558, -21512, -1133,
+	20158, 25209, 9949, -13326, -25865, -17565, 4887, 23401,
+	23062, 4141, -18115, -25777, -12670, 10644, 25383, 19671,
+	-1889, -21928, -24299, -7093, 15828, 25997, 15220, -7818,
+	-24558, -21512, -1133, 20158, 25209, 9949, -13326, -25865,
+	-17564, 4887, 23401, 23062, 4141, -18115, -25777, -12670,
+	10644, 25383, 19671, -1889, -21928, -24299, -7093, 15828,
+	25997, 15220, -7818, -24558, -21512, -1133, 20158, 25209},
+	},{{
+
+// Carrier 27 Phase 0
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297,
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297,
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297},
+	{
+// Carrier 27 Phase 1
+	9949, 25383, 19169, -3393, -23062, -23062, -3393, 19169,
+	25383, 9949, -13969, -25975, -15827, 7818, 24796, 20627,
+	-1134, -21928, -24020, -5627, 17565, 25777, 12005, -12005,
+	-25777, -17565, 5627, 24020, 21928, 1134, -20627, -24796,
+	-7818, 15827, 25975, 13969, -9949, -25383, -19169, 3393,
+	23062, 23062, 3393, -19169, -25383, -9949, 13969, 25975,
+	15827, -7818, -24796, -20627, 1134, 21928, 24020, 5627,
+	-17565, -25777, -12005, 12005, 25777, 17565, -5627, -24020,
+	-21928, -1134, 20627, 24796, 7818, -15827, -25975, -13969,
+	9949, 25383, 19169, -3393, -23062, -23062, -3393, 19169,
+	25383, 9949, -13969, -25975, -15827, 7818, 24796, 20627,
+	-1134, -21928, -24020, -5627, 17565, 25777, 12005, -12005,
+	-25777, -17565, 5627, 24020, 21928, 1134, -20627, -24796,
+	-7818, 15827, 25975, 13969, -9949, -25383, -19169, 3393,
+	23062, 23062, 3393, -19169, -25383, -9949, 13969, 25975,
+	15827, -7818, -24796, -20627, 1134, 21928, 24020, 5627,
+	-17565, -25777, -12005, 12005, 25777, 17565, -5627, -24020,
+	-21928, -1134, 20627, 24796, 7818, -15827, -25975, -13969,
+	9949, 25383, 19169, -3393, -23062, -23062, -3393, 19169,
+	25383, 9949, -13969, -25975, -15827, 7818, 24796, 20627,
+	-1134, -21928, -24020, -5627, 17565, 25777, 12005, -12005,
+	-25777, -17565, 5627, 24020, 21928, 1134, -20627, -24796,
+	-7818, 15827, 25975, 13969, -9949, -25383, -19169, 3393,
+	23062, 23062, 3393, -19169, -25383, -9949, 13969, 25975,
+	15827, -7818, -24796, -20627, 1134, 21928, 24020, 5627,
+	-17565, -25777, -12005, 12005, 25777, 17565, -5627, -24020,
+	-21928, -1134, 20627, 24796, 7818, -15827, -25975, -13969},
+	{
+// Carrier 27 Phase 2
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514,
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514,
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514},
+	{
+// Carrier 27 Phase 3
+	24020, 21928, 1134, -20627, -24796, -7818, 15827, 25975,
+	13969, -9949, -25383, -19169, 3393, 23062, 23062, 3393,
+	-19169, -25383, -9949, 13969, 25975, 15827, -7818, -24796,
+	-20627, 1134, 21928, 24020, 5627, -17565, -25777, -12005,
+	12005, 25777, 17565, -5627, -24020, -21928, -1134, 20627,
+	24796, 7818, -15827, -25975, -13969, 9949, 25383, 19169,
+	-3393, -23062, -23062, -3393, 19169, 25383, 9949, -13969,
+	-25975, -15827, 7818, 24796, 20627, -1134, -21928, -24020,
+	-5627, 17565, 25777, 12005, -12005, -25777, -17565, 5627,
+	24020, 21928, 1134, -20627, -24796, -7818, 15827, 25975,
+	13969, -9949, -25383, -19169, 3393, 23062, 23062, 3393,
+	-19169, -25383, -9949, 13969, 25975, 15827, -7818, -24796,
+	-20627, 1134, 21928, 24020, 5627, -17565, -25777, -12005,
+	12005, 25777, 17565, -5627, -24020, -21928, -1134, 20627,
+	24796, 7818, -15827, -25975, -13969, 9949, 25383, 19169,
+	-3393, -23062, -23062, -3393, 19169, 25383, 9949, -13969,
+	-25975, -15827, 7818, 24796, 20627, -1134, -21928, -24020,
+	-5627, 17565, 25777, 12005, -12005, -25777, -17565, 5627,
+	24020, 21928, 1134, -20627, -24796, -7818, 15827, 25975,
+	13969, -9949, -25383, -19169, 3393, 23062, 23062, 3393,
+	-19169, -25383, -9949, 13969, 25975, 15827, -7818, -24796,
+	-20627, 1134, 21928, 24020, 5627, -17565, -25777, -12005,
+	12005, 25777, 17565, -5627, -24020, -21928, -1134, 20627,
+	24796, 7818, -15827, -25975, -13969, 9949, 25383, 19169,
+	-3393, -23062, -23062, -3393, 19169, 25383, 9949, -13969,
+	-25975, -15827, 7818, 24796, 20627, -1134, -21928, -24020,
+	-5627, 17565, 25777, 12005, -12005, -25777, -17565, 5627},
+	{
+// Carrier 27 Phase 4
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912,
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912,
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912},
+	{
+// Carrier 27 Phase 5
+	24020, 5627, -17565, -25777, -12005, 12005, 25777, 17565,
+	-5627, -24020, -21928, -1134, 20627, 24796, 7818, -15827,
+	-25975, -13969, 9949, 25383, 19169, -3393, -23062, -23062,
+	-3393, 19169, 25383, 9949, -13969, -25975, -15827, 7818,
+	24796, 20627, -1134, -21928, -24020, -5627, 17565, 25777,
+	12005, -12005, -25777, -17565, 5627, 24020, 21928, 1134,
+	-20627, -24796, -7818, 15827, 25975, 13969, -9949, -25383,
+	-19169, 3393, 23062, 23062, 3393, -19169, -25383, -9949,
+	13969, 25975, 15827, -7818, -24796, -20627, 1134, 21928,
+	24020, 5627, -17565, -25777, -12005, 12005, 25777, 17565,
+	-5627, -24020, -21928, -1134, 20627, 24796, 7818, -15827,
+	-25975, -13969, 9949, 25383, 19169, -3393, -23062, -23062,
+	-3393, 19169, 25383, 9949, -13969, -25975, -15827, 7818,
+	24796, 20627, -1134, -21928, -24020, -5627, 17565, 25777,
+	12005, -12005, -25777, -17565, 5627, 24020, 21928, 1134,
+	-20627, -24796, -7818, 15827, 25975, 13969, -9949, -25383,
+	-19169, 3393, 23062, 23062, 3393, -19169, -25383, -9949,
+	13969, 25975, 15827, -7818, -24796, -20627, 1134, 21928,
+	24020, 5627, -17565, -25777, -12005, 12005, 25777, 17565,
+	-5627, -24020, -21928, -1134, 20627, 24796, 7818, -15827,
+	-25975, -13969, 9949, 25383, 19169, -3393, -23062, -23062,
+	-3393, 19169, 25383, 9949, -13969, -25975, -15827, 7818,
+	24796, 20627, -1134, -21928, -24020, -5627, 17565, 25777,
+	12005, -12005, -25777, -17565, 5627, 24020, 21928, 1134,
+	-20627, -24796, -7818, 15827, 25975, 13969, -9949, -25383,
+	-19169, 3393, 23062, 23062, 3393, -19169, -25383, -9949,
+	13969, 25975, 15827, -7818, -24796, -20627, 1134, 21928},
+	{
+// Carrier 27 Phase 6
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605,
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605,
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605},
+	{
+// Carrier 27 Phase 7
+	9949, -13969, -25975, -15827, 7818, 24796, 20627, -1134,
+	-21928, -24020, -5627, 17565, 25777, 12005, -12005, -25777,
+	-17565, 5627, 24020, 21928, 1134, -20627, -24796, -7818,
+	15827, 25975, 13969, -9949, -25383, -19169, 3393, 23062,
+	23062, 3393, -19169, -25383, -9949, 13969, 25975, 15827,
+	-7818, -24796, -20627, 1134, 21928, 24020, 5627, -17565,
+	-25777, -12005, 12005, 25777, 17565, -5627, -24020, -21928,
+	-1134, 20627, 24796, 7818, -15827, -25975, -13969, 9949,
+	25383, 19169, -3393, -23062, -23062, -3393, 19169, 25383,
+	9949, -13969, -25975, -15827, 7818, 24796, 20627, -1134,
+	-21928, -24020, -5627, 17565, 25777, 12005, -12005, -25777,
+	-17565, 5627, 24020, 21928, 1134, -20627, -24796, -7818,
+	15827, 25975, 13969, -9949, -25383, -19169, 3393, 23062,
+	23062, 3393, -19169, -25383, -9949, 13969, 25975, 15827,
+	-7818, -24796, -20627, 1134, 21928, 24020, 5627, -17565,
+	-25777, -12005, 12005, 25777, 17565, -5627, -24020, -21928,
+	-1134, 20627, 24796, 7818, -15827, -25975, -13969, 9949,
+	25383, 19169, -3393, -23062, -23062, -3393, 19169, 25383,
+	9949, -13969, -25975, -15827, 7818, 24796, 20627, -1134,
+	-21928, -24020, -5627, 17565, 25777, 12005, -12005, -25777,
+	-17565, 5627, 24020, 21928, 1134, -20627, -24796, -7818,
+	15827, 25975, 13969, -9949, -25383, -19169, 3393, 23062,
+	23062, 3393, -19169, -25383, -9949, 13969, 25975, 15827,
+	-7818, -24796, -20627, 1134, 21928, 24020, 5627, -17565,
+	-25777, -12005, 12005, 25777, 17565, -5627, -24020, -21928,
+	-1134, 20627, 24796, 7818, -15827, -25975, -13969, 9949,
+	25383, 19169, -3393, -23062, -23062, -3393, 19169, 25383},
+	},{{
+
+// Carrier 28 Phase 0
+	0, 21722, 23873, 4514, -18911, -25299, -8892, 15526,
+	25956, 13000, -11668, -25824, -16712, 7456, 24907, 19917,
+	-3018, -23234, -22516, -1511, 20855, 24432, 5996, -17842,
+	-25605, -10298, 14287, 26000, 14287, -10298, -25605, -17842,
+	5996, 24432, 20855, -1511, -22516, -23234, -3018, 19917,
+	24907, 7456, -16712, -25824, -11668, 13000, 25956, 15526,
+	-8892, -25299, -18911, 4514, 23873, 21722, 0, -21722,
+	-23873, -4514, 18911, 25299, 8892, -15526, -25956, -12999,
+	11668, 25824, 16712, -7456, -24907, -19917, 3018, 23234,
+	22516, 1511, -20855, -24432, -5996, 17842, 25604, 10298,
+	-14287, -26000, -14287, 10298, 25605, 17842, -5996, -24432,
+	-20855, 1511, 22516, 23234, 3018, -19917, -24907, -7456,
+	16712, 25824, 11668, -13000, -25956, -15526, 8892, 25299,
+	18911, -4514, -23873, -21722, 0, 21722, 23873, 4514,
+	-18911, -25299, -8892, 15526, 25956, 12999, -11668, -25824,
+	-16712, 7456, 24907, 19917, -3018, -23234, -22516, -1511,
+	20855, 24431, 5995, -17842, -25604, -10298, 14287, 26000,
+	14287, -10298, -25605, -17842, 5996, 24432, 20855, -1511,
+	-22516, -23234, -3018, 19917, 24907, 7456, -16712, -25824,
+	-11668, 13000, 25956, 15526, -8892, -25299, -18911, 4514,
+	23873, 21722, 0, -21722, -23873, -4514, 18911, 25299,
+	8892, -15526, -25956, -12999, 11668, 25824, 16712, -7456,
+	-24907, -19917, 3018, 23234, 22516, 1511, -20855, -24431,
+	-5995, 17842, 25604, 10298, -14287, -26000, -14287, 10298,
+	25605, 17842, -5996, -24432, -20855, 1511, 22516, 23234,
+	3018, -19917, -24907, -7456, 16712, 25824, 11668, -13000,
+	-25956, -15526, 8892, 25299, 18911, -4514, -23873, -21722},
+	{
+// Carrier 28 Phase 1
+	9949, 25536, 18115, -5627, -24300, -21078, 1134, 22325,
+	23401, 3393, -19671, -25013, -7818, 16421, 25865, 12005,
+	-12671, -25931, -15827, 8536, 25209, 19169, -4141, -23721,
+	-21928, -378, 21512, 24020, 4886, -18650, -25383, -9246,
+	15221, 25975, 13326, -11329, -25777, -17000, 7093, 24796,
+	20158, -2642, -23062, -22703, -1889, 20627, 24558, 6363,
+	-17565, -25667, -10644, 13969, 25997, 14601, -9949, -25536,
+	-18115, 5627, 24300, 21078, -1134, -22325, -23401, -3393,
+	19671, 25013, 7818, -16421, -25865, -12005, 12671, 25931,
+	15827, -8536, -25209, -19169, 4142, 23721, 21928, 378,
+	-21512, -24020, -4886, 18650, 25383, 9246, -15221, -25975,
+	-13326, 11329, 25777, 17000, -7093, -24796, -20158, 2642,
+	23062, 22703, 1889, -20627, -24558, -6363, 17565, 25667,
+	10644, -13969, -25997, -14601, 9949, 25536, 18115, -5627,
+	-24300, -21078, 1134, 22325, 23401, 3393, -19672, -25013,
+	-7818, 16421, 25865, 12005, -12671, -25931, -15827, 8536,
+	25209, 19169, -4142, -23721, -21928, -378, 21512, 24020,
+	4886, -18650, -25383, -9246, 15221, 25975, 13326, -11329,
+	-25777, -17000, 7093, 24796, 20158, -2642, -23062, -22703,
+	-1889, 20627, 24558, 6363, -17565, -25667, -10644, 13969,
+	25997, 14601, -9949, -25536, -18115, 5627, 24300, 21078,
+	-1134, -22325, -23401, -3393, 19672, 25013, 7818, -16421,
+	-25865, -12005, 12671, 25931, 15827, -8536, -25209, -19169,
+	4142, 23721, 21928, 378, -21512, -24020, -4886, 18650,
+	25383, 9246, -15221, -25975, -13326, 11329, 25777, 17000,
+	-7093, -24796, -20158, 2642, 23062, 22703, 1889, -20627,
+	-24558, -6363, 17565, 25667, 10644, -13969, -25997, -14601},
+	{
+// Carrier 28 Phase 2
+	18384, 25462, 9599, -14912, -25989, -13649, 10988, 25725,
+	17284, -6729, -24680, -20394, 2266, 22885, 22885, 2266,
+	-20394, -24680, -6729, 17284, 25725, 10988, -13649, -25989,
+	-14912, 9599, 25462, 18384, -5257, -24163, -21297, 756,
+	22129, 23564, 3768, -19422, -25114, -8178, 16126, 25901,
+	12339, -12339, -25901, -16126, 8178, 25114, 19422, -3768,
+	-23564, -22129, -756, 21297, 24163, 5257, -18384, -25462,
+	-9599, 14912, 25989, 13649, -10988, -25725, -17284, 6729,
+	24680, 20394, -2266, -22885, -22885, -2266, 20394, 24680,
+	6729, -17284, -25725, -10988, 13649, 25989, 14912, -9599,
+	-25462, -18384, 5257, 24163, 21297, -756, -22129, -23563,
+	-3768, 19422, 25114, 8178, -16126, -25901, -12339, 12339,
+	25901, 16126, -8178, -25114, -19422, 3768, 23564, 22129,
+	756, -21297, -24163, -5257, 18384, 25462, 9599, -14913,
+	-25989, -13649, 10988, 25725, 17284, -6729, -24680, -20394,
+	2266, 22885, 22885, 2266, -20394, -24680, -6729, 17284,
+	25725, 10988, -13649, -25989, -14912, 9599, 25462, 18384,
+	-5257, -24163, -21297, 756, 22129, 23563, 3768, -19422,
+	-25114, -8178, 16126, 25901, 12339, -12339, -25901, -16126,
+	8178, 25114, 19422, -3768, -23564, -22129, -756, 21297,
+	24163, 5257, -18384, -25462, -9599, 14913, 25989, 13649,
+	-10988, -25725, -17284, 6729, 24680, 20394, -2266, -22885,
+	-22885, -2266, 20394, 24680, 6729, -17284, -25725, -10988,
+	13649, 25989, 14912, -9599, -25462, -18384, 5257, 24163,
+	21297, -756, -22129, -23563, -3768, 19422, 25114, 8178,
+	-16126, -25901, -12339, 12339, 25901, 16126, -8178, -25114,
+	-19422, 3768, 23564, 22129, 756, -21297, -24163, -5257},
+	{
+// Carrier 28 Phase 3
+	24020, 21512, -378, -21928, -23721, -4141, 19169, 25209,
+	8536, -15827, -25931, -12671, 12005, 25865, 16421, -7818,
+	-25013, -19671, 3393, 23401, 22325, 1134, -21078, -24300,
+	-5627, 18115, 25536, 9949, -14601, -25997, -13969, 10644,
+	25667, 17565, -6363, -24558, -20627, 1889, 22703, 23062,
+	2642, -20158, -24796, -7093, 17000, 25777, 11329, -13326,
+	-25975, -15221, 9246, 25383, 18650, -4886, -24020, -21512,
+	378, 21928, 23721, 4141, -19169, -25209, -8536, 15827,
+	25931, 12671, -12005, -25865, -16421, 7818, 25013, 19671,
+	-3393, -23401, -22325, -1134, 21078, 24300, 5627, -18115,
+	-25536, -9949, 14601, 25997, 13969, -10644, -25667, -17565,
+	6363, 24558, 20627, -1889, -22703, -23062, -2642, 20158,
+	24796, 7093, -17000, -25777, -11329, 13326, 25975, 15221,
+	-9246, -25383, -18650, 4886, 24020, 21512, -378, -21928,
+	-23721, -4141, 19169, 25209, 8536, -15827, -25931, -12671,
+	12005, 25865, 16421, -7818, -25013, -19671, 3393, 23401,
+	22325, 1134, -21078, -24300, -5627, 18115, 25536, 9949,
+	-14601, -25997, -13969, 10644, 25667, 17565, -6363, -24558,
+	-20627, 1889, 22703, 23062, 2642, -20158, -24796, -7093,
+	17000, 25777, 11329, -13326, -25975, -15221, 9246, 25383,
+	18650, -4886, -24020, -21512, 378, 21928, 23721, 4141,
+	-19169, -25209, -8536, 15827, 25931, 12671, -12005, -25865,
+	-16421, 7818, 25013, 19671, -3393, -23401, -22325, -1134,
+	21078, 24300, 5627, -18115, -25536, -9949, 14601, 25997,
+	13969, -10644, -25667, -17565, 6363, 24558, 20627, -1889,
+	-22703, -23062, -2642, 20158, 24796, 7093, -17000, -25777,
+	-11329, 13326, 25975, 15221, -9246, -25383, -18650, 4886},
+	{
+// Carrier 28 Phase 4
+	26000, 14287, -10298, -25605, -17842, 5996, 24432, 20855,
+	-1511, -22516, -23234, -3018, 19917, 24907, 7456, -16712,
+	-25824, -11668, 13000, 25956, 15526, -8892, -25299, -18911,
+	4514, 23873, 21722, 0, -21722, -23873, -4514, 18911,
+	25299, 8892, -15526, -25956, -12999, 11668, 25824, 16712,
+	-7456, -24907, -19917, 3018, 23234, 22516, 1511, -20855,
+	-24432, -5996, 17842, 25604, 10298, -14287, -26000, -14287,
+	10298, 25605, 17842, -5996, -24432, -20855, 1511, 22516,
+	23234, 3018, -19917, -24907, -7456, 16712, 25824, 11668,
+	-13000, -25956, -15526, 8892, 25299, 18911, -4514, -23873,
+	-21722, 0, 21722, 23873, 4514, -18911, -25299, -8892,
+	15526, 25956, 12999, -11668, -25824, -16712, 7456, 24907,
+	19917, -3018, -23234, -22516, -1511, 20855, 24431, 5995,
+	-17842, -25604, -10298, 14287, 26000, 14287, -10298, -25605,
+	-17842, 5996, 24432, 20855, -1511, -22516, -23234, -3018,
+	19917, 24907, 7456, -16712, -25824, -11668, 13000, 25956,
+	15526, -8892, -25299, -18911, 4514, 23873, 21722, 0,
+	-21722, -23873, -4514, 18911, 25299, 8892, -15526, -25956,
+	-12999, 11668, 25824, 16712, -7456, -24907, -19917, 3018,
+	23234, 22516, 1511, -20855, -24431, -5995, 17842, 25604,
+	10298, -14287, -26000, -14287, 10298, 25605, 17842, -5996,
+	-24432, -20855, 1511, 22516, 23234, 3018, -19917, -24907,
+	-7456, 16712, 25824, 11668, -13000, -25956, -15526, 8892,
+	25299, 18911, -4514, -23873, -21722, 0, 21722, 23873,
+	4514, -18911, -25299, -8892, 15526, 25956, 12999, -11668,
+	-25824, -16712, 7456, 24907, 19917, -3018, -23234, -22516,
+	-1511, 20855, 24431, 5995, -17842, -25604, -10298, 14287},
+	{
+// Carrier 28 Phase 5
+	24020, 4886, -18650, -25383, -9246, 15221, 25975, 13326,
+	-11329, -25777, -17000, 7093, 24796, 20158, -2642, -23062,
+	-22703, -1889, 20627, 24558, 6363, -17565, -25667, -10644,
+	13969, 25997, 14601, -9949, -25536, -18115, 5627, 24300,
+	21078, -1134, -22325, -23401, -3393, 19671, 25013, 7818,
+	-16421, -25865, -12005, 12671, 25931, 15827, -8536, -25209,
+	-19169, 4141, 23721, 21928, 378, -21512, -24020, -4886,
+	18650, 25383, 9246, -15221, -25975, -13326, 11329, 25777,
+	17000, -7093, -24796, -20158, 2642, 23062, 22703, 1889,
+	-20627, -24558, -6363, 17565, 25667, 10644, -13969, -25997,
+	-14601, 9949, 25536, 18115, -5627, -24300, -21078, 1134,
+	22325, 23401, 3393, -19671, -25013, -7818, 16421, 25865,
+	12005, -12671, -25931, -15827, 8536, 25209, 19169, -4141,
+	-23721, -21928, -378, 21512, 24020, 4886, -18650, -25383,
+	-9246, 15221, 25975, 13326, -11329, -25777, -17000, 7093,
+	24796, 20158, -2642, -23062, -22703, -1889, 20627, 24558,
+	6363, -17565, -25667, -10644, 13969, 25997, 14601, -9949,
+	-25536, -18115, 5627, 24300, 21078, -1134, -22325, -23401,
+	-3393, 19672, 25013, 7818, -16421, -25865, -12005, 12671,
+	25931, 15827, -8536, -25209, -19169, 4142, 23721, 21928,
+	378, -21512, -24020, -4886, 18650, 25383, 9246, -15221,
+	-25975, -13326, 11329, 25777, 17000, -7093, -24796, -20158,
+	2642, 23062, 22703, 1889, -20627, -24558, -6363, 17565,
+	25667, 10644, -13969, -25997, -14601, 9949, 25536, 18115,
+	-5627, -24300, -21078, 1134, 22325, 23401, 3393, -19672,
+	-25013, -7818, 16421, 25865, 12005, -12671, -25931, -15827,
+	8536, 25209, 19169, -4142, -23721, -21928, -378, 21512},
+	{
+// Carrier 28 Phase 6
+	18384, -5257, -24163, -21297, 756, 22129, 23564, 3768,
+	-19422, -25114, -8178, 16126, 25901, 12339, -12339, -25901,
+	-16126, 8178, 25114, 19422, -3768, -23564, -22129, -756,
+	21297, 24163, 5257, -18384, -25462, -9599, 14912, 25989,
+	13649, -10988, -25725, -17284, 6729, 24680, 20394, -2266,
+	-22885, -22885, -2266, 20394, 24680, 6729, -17284, -25725,
+	-10988, 13649, 25989, 14912, -9599, -25462, -18384, 5257,
+	24163, 21297, -756, -22129, -23563, -3768, 19422, 25114,
+	8178, -16126, -25901, -12339, 12339, 25901, 16126, -8178,
+	-25114, -19422, 3768, 23564, 22129, 756, -21297, -24163,
+	-5257, 18384, 25462, 9599, -14913, -25989, -13649, 10988,
+	25725, 17284, -6729, -24680, -20394, 2266, 22885, 22885,
+	2266, -20394, -24680, -6729, 17284, 25725, 10988, -13649,
+	-25989, -14912, 9599, 25462, 18384, -5257, -24163, -21297,
+	756, 22129, 23563, 3768, -19422, -25114, -8178, 16126,
+	25901, 12339, -12339, -25901, -16126, 8178, 25114, 19422,
+	-3768, -23564, -22129, -756, 21297, 24163, 5257, -18384,
+	-25462, -9599, 14913, 25989, 13649, -10988, -25725, -17284,
+	6729, 24680, 20394, -2266, -22885, -22885, -2266, 20394,
+	24680, 6729, -17284, -25725, -10988, 13649, 25989, 14912,
+	-9599, -25462, -18384, 5257, 24163, 21297, -756, -22129,
+	-23563, -3768, 19422, 25114, 8178, -16126, -25901, -12339,
+	12339, 25901, 16126, -8178, -25114, -19422, 3768, 23564,
+	22129, 756, -21297, -24163, -5257, 18384, 25462, 9599,
+	-14913, -25989, -13649, 10988, 25725, 17284, -6729, -24680,
+	-20394, 2266, 22885, 22885, 2266, -20394, -24680, -6729,
+	17284, 25725, 10988, -13649, -25989, -14912, 9599, 25462},
+	{
+// Carrier 28 Phase 7
+	9949, -14601, -25997, -13969, 10644, 25667, 17565, -6363,
+	-24558, -20627, 1889, 22703, 23062, 2642, -20158, -24796,
+	-7093, 17000, 25777, 11329, -13326, -25975, -15221, 9246,
+	25383, 18650, -4886, -24020, -21512, 378, 21928, 23721,
+	4141, -19169, -25209, -8536, 15827, 25931, 12671, -12005,
+	-25865, -16421, 7818, 25013, 19671, -3393, -23401, -22325,
+	-1134, 21078, 24300, 5627, -18115, -25536, -9949, 14601,
+	25997, 13969, -10644, -25667, -17565, 6363, 24558, 20627,
+	-1889, -22703, -23062, -2642, 20158, 24796, 7093, -17000,
+	-25777, -11329, 13326, 25975, 15221, -9246, -25383, -18650,
+	4886, 24020, 21512, -378, -21928, -23721, -4141, 19169,
+	25209, 8536, -15827, -25931, -12671, 12005, 25865, 16421,
+	-7818, -25013, -19671, 3393, 23401, 22325, 1134, -21078,
+	-24300, -5627, 18115, 25536, 9949, -14601, -25997, -13969,
+	10644, 25667, 17565, -6363, -24558, -20627, 1889, 22703,
+	23062, 2642, -20158, -24796, -7093, 17000, 25777, 11329,
+	-13326, -25975, -15221, 9246, 25383, 18650, -4886, -24020,
+	-21512, 378, 21928, 23721, 4141, -19169, -25209, -8536,
+	15827, 25931, 12671, -12005, -25865, -16421, 7818, 25013,
+	19671, -3393, -23401, -22325, -1134, 21078, 24300, 5627,
+	-18115, -25536, -9949, 14601, 25997, 13969, -10644, -25667,
+	-17565, 6363, 24558, 20627, -1889, -22703, -23062, -2642,
+	20158, 24796, 7093, -17000, -25777, -11329, 13326, 25975,
+	15221, -9246, -25383, -18650, 4886, 24020, 21512, -378,
+	-21928, -23721, -4141, 19169, 25209, 8536, -15827, -25931,
+	-12671, 12005, 25865, 16420, -7818, -25013, -19671, 3393,
+	23401, 22325, 1134, -21078, -24300, -5627, 18115, 25536},
+	},{{
+
+// Carrier 29 Phase 0
+	0, 22129, 23234, 2266, -20855, -24163, -4514, 19422,
+	24907, 6729, -17842, -25462, -8892, 16126, 25824, 10988,
+	-14287, -25989, -12999, 12339, 25956, 14912, -10298, -25725,
+	-16712, 8178, 25299, 18384, -5996, -24680, -19917, 3768,
+	23873, 21297, -1511, -22885, -22516, -756, 21722, 23563,
+	3018, -20394, -24431, -5257, 18911, 25114, 7456, -17284,
+	-25604, -9599, 15526, 25901, 11668, -13649, -26000, -13649,
+	11668, 25901, 15526, -9599, -25605, -17284, 7457, 25114,
+	18911, -5257, -24432, -20394, 3018, 23564, 21722, -756,
+	-22516, -22885, -1511, 21298, 23873, 3768, -19917, -24680,
+	-5995, 18384, 25299, 8177, -16712, -25725, -10297, 14913,
+	25956, 12339, -13000, -25989, -14287, 10988, 25824, 16125,
+	-8892, -25462, -17842, 6729, 24907, 19422, -4515, -24163,
+	-20855, 2266, 23234, 22128, 0, -22129, -23234, -2265,
+	20855, 24162, 4514, -19422, -24907, -6729, 17842, 25462,
+	8892, -16126, -25824, -10987, 14287, 25988, 12999, -12339,
+	-25956, -14912, 10298, 25725, 16712, -8178, -25299, -18384,
+	5996, 24680, 19916, -3768, -23873, -21297, 1512, 22885,
+	22516, 755, -21722, -23563, -3018, 20395, 24431, 5257,
+	-18911, -25113, -7456, 17284, 25604, 9599, -15526, -25901,
+	-11668, 13649, 26000, 13649, -11669, -25901, -15525, 9599,
+	25605, 17284, -7457, -25114, -18911, 5258, 24432, 20394,
+	-3018, -23564, -21722, 756, 22516, 22885, 1511, -21298,
+	-23873, -3767, 19917, 24680, 5995, -18385, -25299, -8177,
+	16712, 25725, 10297, -14913, -25955, -12339, 13000, 25989,
+	14286, -10988, -25824, -16125, 8892, 25462, 17841, -6729,
+	-24907, -19422, 4515, 24163, 20854, -2266, -23234, -22128},
+	{
+// Carrier 29 Phase 1
+	9949, 25667, 17000, -7818, -25209, -18650, 5627, 24558,
+	20158, -3393, -23721, -21512, 1134, 22703, 22703, 1134,
+	-21512, -23721, -3393, 20158, 24558, 5627, -18650, -25209,
+	-7818, 17000, 25667, 9949, -15221, -25931, -12005, 13326,
+	25997, 13969, -11329, -25865, -15827, 9247, 25536, 17565,
+	-7093, -25013, -19169, 4886, 24300, 20627, -2642, -23401,
+	-21928, 378, 22325, 23062, 1888, -21078, -24020, -4141,
+	19672, 24796, 6363, -18115, -25383, -8536, 16421, 25777,
+	10644, -14601, -25975, -12671, 12671, 25975, 14601, -10644,
+	-25777, -16420, 8536, 25383, 18115, -6363, -24796, -19671,
+	4142, 24020, 21078, -1889, -23062, -22325, -377, 21928,
+	23401, 2642, -20627, -24300, -4886, 19169, 25013, 7093,
+	-17565, -25536, -9246, 15827, 25865, 11329, -13969, -25997,
+	-13325, 12005, 25931, 15220, -9949, -25667, -17000, 7818,
+	25209, 18650, -5627, -24558, -20157, 3393, 23721, 21512,
+	-1134, -22703, -22703, -1133, 21512, 23721, 3393, -20158,
+	-24558, -5627, 18650, 25209, 7818, -17000, -25667, -9949,
+	15221, 25931, 12005, -13326, -25997, -13969, 11329, 25865,
+	15827, -9247, -25536, -17565, 7094, 25013, 19168, -4887,
+	-24300, -20626, 2642, 23401, 21927, -378, -22325, -23062,
+	-1888, 21079, 24020, 4141, -19672, -24796, -6362, 18115,
+	25383, 8535, -16421, -25777, -10643, 14601, 25975, 12670,
+	-12671, -25975, -14601, 10644, 25777, 16420, -8536, -25383,
+	-18115, 6363, 24796, 19671, -4142, -24021, -21078, 1889,
+	23062, 22324, 377, -21928, -23401, -2642, 20627, 24299,
+	4886, -19169, -25013, -7093, 17565, 25536, 9246, -15828,
+	-25865, -11329, 13970, 25997, 13325, -12005, -25931, -15220},
+	{
+// Carrier 29 Phase 2
+	18384, 25299, 8178, -16712, -25725, -10298, 14913, 25956,
+	12339, -13000, -25989, -14287, 10988, 25824, 16126, -8892,
+	-25462, -17842, 6729, 24907, 19422, -4514, -24163, -20855,
+	2266, 23234, 22129, 0, -22129, -23234, -2265, 20855,
+	24163, 4514, -19422, -24907, -6729, 17842, 25462, 8892,
+	-16126, -25824, -10987, 14287, 25988, 12999, -12339, -25956,
+	-14912, 10298, 25725, 16712, -8178, -25299, -18384, 5996,
+	24680, 19917, -3768, -23873, -21297, 1511, 22885, 22516,
+	756, -21722, -23563, -3018, 20394, 24431, 5257, -18911,
+	-25114, -7456, 17284, 25604, 9599, -15526, -25901, -11668,
+	13649, 26000, 13649, -11668, -25901, -15525, 9599, 25605,
+	17284, -7457, -25114, -18911, 5257, 24432, 20394, -3018,
+	-23564, -21722, 756, 22516, 22885, 1511, -21298, -23873,
+	-3767, 19917, 24680, 5995, -18384, -25299, -8177, 16712,
+	25725, 10297, -14913, -25955, -12339, 13000, 25989, 14287,
+	-10988, -25824, -16125, 8892, 25462, 17842, -6729, -24907,
+	-19422, 4515, 24163, 20855, -2266, -23234, -22128, 0,
+	22129, 23234, 2265, -20855, -24162, -4514, 19422, 24907,
+	6728, -17842, -25462, -8892, 16126, 25824, 10987, -14287,
+	-25988, -12999, 12339, 25956, 14912, -10298, -25725, -16712,
+	8178, 25299, 18384, -5996, -24680, -19916, 3768, 23873,
+	21297, -1512, -22885, -22516, -755, 21722, 23563, 3018,
+	-20395, -24431, -5257, 18912, 25113, 7456, -17285, -25604,
+	-9598, 15526, 25901, 11668, -13649, -26000, -13649, 11669,
+	25901, 15525, -9599, -25605, -17284, 7457, 25114, 18911,
+	-5258, -24432, -20394, 3018, 23564, 21722, -756, -22516,
+	-22885, -1511, 21298, 23873, 3767, -19917, -24680, -5995},
+	{
+// Carrier 29 Phase 3
+	24020, 21078, -1889, -23062, -22325, -378, 21928, 23401,
+	2642, -20627, -24300, -4886, 19169, 25013, 7093, -17565,
+	-25536, -9246, 15827, 25865, 11329, -13969, -25997, -13326,
+	12005, 25931, 15221, -9949, -25667, -17000, 7818, 25209,
+	18650, -5627, -24558, -20158, 3393, 23721, 21512, -1134,
+	-22703, -22703, -1133, 21512, 23721, 3393, -20158, -24558,
+	-5627, 18650, 25209, 7818, -17000, -25667, -9949, 15221,
+	25931, 12005, -13326, -25997, -13969, 11329, 25865, 15827,
+	-9247, -25536, -17565, 7094, 25013, 19169, -4886, -24300,
+	-20627, 2642, 23401, 21928, -378, -22325, -23062, -1888,
+	21078, 24020, 4141, -19672, -24796, -6363, 18115, 25383,
+	8536, -16421, -25777, -10643, 14601, 25975, 12670, -12671,
+	-25975, -14601, 10644, 25777, 16420, -8536, -25383, -18115,
+	6363, 24796, 19671, -4142, -24020, -21078, 1889, 23062,
+	22325, 377, -21928, -23401, -2642, 20627, 24299, 4886,
+	-19169, -25013, -7093, 17565, 25536, 9246, -15828, -25865,
+	-11329, 13970, 25997, 13325, -12005, -25931, -15220, 9950,
+	25668, 17000, -7818, -25209, -18649, 5627, 24558, 20157,
+	-3394, -23721, -21512, 1134, 22703, 22703, 1133, -21512,
+	-23721, -3393, 20158, 24558, 5627, -18650, -25209, -7817,
+	17000, 25667, 9949, -15221, -25931, -12005, 13326, 25997,
+	13969, -11329, -25865, -15827, 9247, 25536, 17565, -7094,
+	-25013, -19168, 4887, 24300, 20626, -2642, -23401, -21927,
+	378, 22325, 23062, 1888, -21079, -24020, -4141, 19672,
+	24796, 6362, -18115, -25383, -8535, 16421, 25777, 10643,
+	-14602, -25975, -12670, 12671, 25975, 14601, -10644, -25777,
+	-16420, 8536, 25383, 18115, -6363, -24796, -19671, 4142},
+	{
+// Carrier 29 Phase 4
+	26000, 13649, -11668, -25901, -15526, 9599, 25605, 17284,
+	-7456, -25114, -18911, 5257, 24432, 20394, -3018, -23564,
+	-21722, 756, 22516, 22885, 1511, -21297, -23873, -3768,
+	19917, 24680, 5995, -18384, -25299, -8178, 16712, 25725,
+	10298, -14913, -25956, -12339, 13000, 25989, 14287, -10988,
+	-25824, -16126, 8892, 25462, 17842, -6729, -24907, -19422,
+	4514, 24163, 20855, -2266, -23234, -22128, 0, 22129,
+	23234, 2265, -20855, -24162, -4514, 19422, 24907, 6729,
+	-17842, -25462, -8892, 16126, 25824, 10987, -14287, -25988,
+	-12999, 12339, 25956, 14912, -10298, -25725, -16712, 8178,
+	25299, 18384, -5996, -24680, -19917, 3768, 23873, 21297,
+	-1511, -22885, -22516, -756, 21722, 23563, 3018, -20394,
+	-24431, -5257, 18911, 25114, 7456, -17284, -25604, -9599,
+	15526, 25901, 11668, -13649, -26000, -13649, 11669, 25901,
+	15525, -9599, -25605, -17284, 7457, 25114, 18911, -5257,
+	-24432, -20394, 3018, 23564, 21722, -756, -22516, -22885,
+	-1511, 21298, 23873, 3767, -19917, -24680, -5995, 18385,
+	25299, 8177, -16712, -25725, -10297, 14913, 25955, 12339,
+	-13000, -25989, -14286, 10988, 25824, 16125, -8892, -25462,
+	-17842, 6729, 24907, 19422, -4515, -24163, -20854, 2266,
+	23234, 22128, 0, -22129, -23234, -2265, 20855, 24162,
+	4514, -19422, -24907, -6728, 17842, 25462, 8892, -16126,
+	-25824, -10987, 14287, 25988, 12999, -12339, -25956, -14912,
+	10298, 25725, 16712, -8178, -25299, -18384, 5996, 24680,
+	19916, -3768, -23873, -21297, 1512, 22885, 22516, 755,
+	-21722, -23563, -3017, 20395, 24431, 5257, -18912, -25113,
+	-7456, 17285, 25604, 9598, -15526, -25901, -11668, 13649},
+	{
+// Carrier 29 Phase 5
+	24020, 4141, -19671, -24796, -6363, 18115, 25383, 8536,
+	-16421, -25777, -10644, 14601, 25975, 12671, -12671, -25975,
+	-14601, 10644, 25777, 16421, -8536, -25383, -18115, 6363,
+	24796, 19671, -4142, -24020, -21078, 1889, 23062, 22325,
+	378, -21928, -23401, -2642, 20627, 24300, 4886, -19169,
+	-25013, -7093, 17565, 25536, 9246, -15827, -25865, -11329,
+	13969, 25997, 13326, -12005, -25931, -15221, 9949, 25667,
+	17000, -7818, -25209, -18650, 5627, 24558, 20158, -3393,
+	-23721, -21512, 1134, 22703, 22703, 1133, -21512, -23721,
+	-3393, 20158, 24558, 5627, -18650, -25209, -7818, 17000,
+	25667, 9949, -15221, -25931, -12005, 13326, 25997, 13969,
+	-11329, -25865, -15827, 9247, 25536, 17565, -7094, -25013,
+	-19169, 4886, 24300, 20627, -2642, -23401, -21928, 378,
+	22325, 23062, 1888, -21078, -24020, -4141, 19672, 24796,
+	6363, -18115, -25383, -8536, 16421, 25777, 10643, -14601,
+	-25975, -12670, 12671, 25975, 14601, -10644, -25777, -16420,
+	8536, 25383, 18115, -6363, -24796, -19671, 4142, 24020,
+	21078, -1889, -23062, -22325, -377, 21928, 23401, 2642,
+	-20627, -24299, -4886, 19169, 25013, 7093, -17565, -25536,
+	-9246, 15828, 25865, 11329, -13970, -25997, -13325, 12005,
+	25931, 15220, -9950, -25668, -17000, 7818, 25209, 18649,
+	-5627, -24558, -20157, 3394, 23721, 21512, -1134, -22703,
+	-22703, -1133, 21512, 23721, 3393, -20158, -24558, -5627,
+	18650, 25209, 7817, -17000, -25667, -9949, 15221, 25931,
+	12005, -13326, -25997, -13969, 11330, 25865, 15827, -9247,
+	-25536, -17565, 7094, 25013, 19168, -4887, -24300, -20626,
+	2642, 23401, 21927, -378, -22325, -23062, -1888, 21079},
+	{
+// Carrier 29 Phase 6
+	18384, -5996, -24680, -19917, 3768, 23873, 21297, -1511,
+	-22885, -22516, -756, 21722, 23563, 3018, -20394, -24431,
+	-5257, 18911, 25114, 7456, -17284, -25604, -9599, 15526,
+	25901, 11668, -13649, -26000, -13649, 11668, 25901, 15526,
+	-9599, -25605, -17284, 7456, 25114, 18911, -5257, -24432,
+	-20394, 3018, 23564, 21722, -756, -22516, -22885, -1511,
+	21298, 23873, 3768, -19917, -24680, -5995, 18384, 25299,
+	8178, -16712, -25725, -10297, 14913, 25956, 12339, -13000,
+	-25989, -14287, 10988, 25824, 16125, -8892, -25462, -17842,
+	6729, 24907, 19422, -4515, -24163, -20855, 2266, 23234,
+	22128, 0, -22129, -23234, -2265, 20855, 24162, 4514,
+	-19422, -24907, -6729, 17842, 25462, 8892, -16126, -25824,
+	-10987, 14287, 25988, 12999, -12339, -25956, -14912, 10298,
+	25725, 16712, -8178, -25299, -18384, 5996, 24680, 19916,
+	-3768, -23873, -21297, 1512, 22885, 22516, 755, -21722,
+	-23563, -3018, 20394, 24431, 5257, -18911, -25113, -7456,
+	17284, 25604, 9599, -15526, -25901, -11668, 13649, 26000,
+	13649, -11669, -25901, -15525, 9599, 25605, 17284, -7457,
+	-25114, -18911, 5257, 24432, 20394, -3018, -23564, -21722,
+	756, 22516, 22885, 1511, -21298, -23873, -3767, 19917,
+	24680, 5995, -18385, -25299, -8177, 16712, 25725, 10297,
+	-14913, -25955, -12339, 13000, 25989, 14286, -10988, -25824,
+	-16125, 8892, 25462, 17841, -6729, -24907, -19422, 4515,
+	24163, 20854, -2266, -23234, -22128, 0, 22129, 23234,
+	2265, -20855, -24162, -4514, 19422, 24907, 6728, -17842,
+	-25462, -8892, 16126, 25824, 10987, -14287, -25988, -12999,
+	12340, 25956, 14912, -10298, -25725, -16712, 8178, 25299},
+	{
+// Carrier 29 Phase 7
+	9949, -15221, -25931, -12005, 13326, 25997, 13969, -11329,
+	-25865, -15827, 9246, 25536, 17565, -7093, -25013, -19169,
+	4886, 24300, 20627, -2642, -23401, -21928, 378, 22325,
+	23062, 1889, -21078, -24020, -4141, 19672, 24796, 6363,
+	-18115, -25383, -8536, 16421, 25777, 10644, -14601, -25975,
+	-12671, 12671, 25975, 14601, -10644, -25777, -16420, 8536,
+	25383, 18115, -6363, -24796, -19671, 4142, 24020, 21078,
+	-1889, -23062, -22325, -378, 21928, 23401, 2642, -20627,
+	-24300, -4886, 19169, 25013, 7093, -17565, -25536, -9246,
+	15827, 25865, 11329, -13969, -25997, -13325, 12005, 25931,
+	15221, -9949, -25667, -17000, 7818, 25209, 18650, -5627,
+	-24558, -20157, 3393, 23721, 21512, -1134, -22703, -22703,
+	-1133, 21512, 23721, 3393, -20158, -24558, -5627, 18650,
+	25209, 7818, -17000, -25667, -9949, 15221, 25931, 12005,
+	-13326, -25997, -13969, 11329, 25865, 15827, -9247, -25536,
+	-17565, 7094, 25013, 19169, -4887, -24300, -20627, 2642,
+	23401, 21928, -378, -22325, -23062, -1888, 21078, 24020,
+	4141, -19672, -24796, -6363, 18115, 25383, 8535, -16421,
+	-25777, -10643, 14601, 25975, 12670, -12671, -25975, -14601,
+	10644, 25777, 16420, -8536, -25383, -18115, 6363, 24796,
+	19671, -4142, -24021, -21078, 1889, 23062, 22325, 377,
+	-21928, -23401, -2642, 20627, 24299, 4886, -19169, -25013,
+	-7093, 17565, 25536, 9246, -15828, -25865, -11329, 13970,
+	25997, 13325, -12005, -25931, -15220, 9950, 25668, 17000,
+	-7818, -25209, -18649, 5627, 24558, 20157, -3394, -23721,
+	-21512, 1134, 22703, 22703, 1133, -21512, -23721, -3393,
+	20158, 24558, 5626, -18650, -25209, -7817, 17000, 25667},
+	},{{
+
+// Carrier 30 Phase 0
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22517,
+	0, 22516, 22517, 0, -22516, -22517, 0, 22516,
+	22517, 0, -22516, -22517, 0, 22516, 22517, 0,
+	-22516, -22517, 0, 22516, 22517, 0, -22516, -22517,
+	0, 22516, 22517, 0, -22516, -22517, 0, 22516,
+	22517, 0, -22516, -22517, 0, 22516, 22517, 0,
+	-22516, -22517, 0, 22516, 22517, 0, -22516, -22517},
+	{
+// Carrier 30 Phase 1
+	9949, 25777, 15827, -9949, -25777, -15827, 9949, 25777,
+	15827, -9949, -25777, -15827, 9949, 25777, 15827, -9949,
+	-25777, -15827, 9949, 25777, 15827, -9949, -25777, -15827,
+	9949, 25777, 15827, -9949, -25777, -15827, 9949, 25777,
+	15827, -9949, -25777, -15827, 9949, 25777, 15827, -9949,
+	-25777, -15827, 9949, 25777, 15827, -9949, -25777, -15827,
+	9949, 25777, 15827, -9949, -25777, -15827, 9949, 25777,
+	15827, -9949, -25777, -15827, 9949, 25777, 15827, -9949,
+	-25777, -15827, 9949, 25777, 15827, -9949, -25777, -15827,
+	9949, 25777, 15827, -9949, -25777, -15827, 9949, 25777,
+	15827, -9949, -25777, -15827, 9949, 25777, 15827, -9949,
+	-25777, -15827, 9949, 25777, 15827, -9949, -25777, -15827,
+	9949, 25777, 15827, -9949, -25777, -15827, 9949, 25777,
+	15827, -9949, -25777, -15827, 9949, 25777, 15827, -9949,
+	-25777, -15827, 9949, 25777, 15827, -9949, -25777, -15828,
+	9949, 25777, 15828, -9949, -25777, -15828, 9949, 25777,
+	15828, -9949, -25777, -15828, 9949, 25777, 15828, -9949,
+	-25777, -15828, 9949, 25777, 15828, -9949, -25777, -15828,
+	9949, 25777, 15828, -9949, -25777, -15828, 9949, 25777,
+	15828, -9949, -25777, -15828, 9949, 25777, 15828, -9949,
+	-25777, -15828, 9949, 25777, 15828, -9949, -25777, -15828,
+	9949, 25777, 15828, -9949, -25777, -15828, 9949, 25777,
+	15828, -9949, -25777, -15828, 9949, 25777, 15828, -9949,
+	-25777, -15828, 9949, 25777, 15828, -9949, -25777, -15828,
+	9949, 25777, 15828, -9949, -25777, -15828, 9949, 25777,
+	15828, -9949, -25777, -15828, 9949, 25777, 15828, -9949,
+	-25777, -15828, 9949, 25777, 15828, -9949, -25777, -15828},
+	{
+// Carrier 30 Phase 2
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729},
+	{
+// Carrier 30 Phase 3
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393,
+	24020, 20627, -3393, -24020, -20627, 3393, 24020, 20627,
+	-3393, -24020, -20627, 3393, 24020, 20627, -3393, -24020,
+	-20627, 3393, 24020, 20627, -3393, -24020, -20627, 3393},
+	{
+// Carrier 30 Phase 4
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999},
+	{
+// Carrier 30 Phase 5
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20627,
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20627,
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20627,
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20627,
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20627,
+	24020, 3393, -20627, -24020, -3393, 20627, 24020, 3393,
+	-20627, -24020, -3393, 20627, 24020, 3393, -20627, -24020,
+	-3393, 20627, 24020, 3393, -20627, -24020, -3393, 20626,
+	24020, 3393, -20626, -24020, -3394, 20626, 24020, 3394,
+	-20626, -24020, -3394, 20626, 24020, 3394, -20626, -24020,
+	-3394, 20626, 24021, 3394, -20626, -24021, -3394, 20626,
+	24021, 3394, -20626, -24021, -3394, 20626, 24021, 3394,
+	-20626, -24021, -3394, 20626, 24021, 3394, -20626, -24021,
+	-3394, 20626, 24021, 3394, -20626, -24021, -3394, 20626,
+	24021, 3394, -20626, -24021, -3394, 20626, 24021, 3394,
+	-20626, -24021, -3394, 20626, 24021, 3394, -20626, -24021,
+	-3394, 20626, 24021, 3394, -20626, -24021, -3394, 20626},
+	{
+// Carrier 30 Phase 6
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25113, 18384, -6729, -25113, -18384,
+	6729, 25113, 18384, -6729, -25113, -18384, 6729, 25113,
+	18384, -6729, -25113, -18384, 6728, 25113, 18384, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113,
+	18385, -6728, -25113, -18385, 6728, 25113, 18385, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113,
+	18385, -6728, -25113, -18385, 6728, 25113, 18385, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113},
+	{
+// Carrier 30 Phase 7
+	9949, -15827, -25777, -9949, 15827, 25777, 9949, -15827,
+	-25777, -9949, 15827, 25777, 9949, -15827, -25777, -9949,
+	15827, 25777, 9949, -15827, -25777, -9949, 15827, 25777,
+	9949, -15827, -25777, -9949, 15827, 25777, 9949, -15827,
+	-25777, -9949, 15827, 25777, 9949, -15827, -25777, -9949,
+	15827, 25777, 9949, -15827, -25777, -9949, 15827, 25777,
+	9949, -15827, -25777, -9949, 15827, 25777, 9949, -15827,
+	-25777, -9949, 15827, 25777, 9949, -15827, -25777, -9949,
+	15827, 25777, 9949, -15827, -25777, -9949, 15827, 25777,
+	9949, -15827, -25777, -9949, 15827, 25777, 9949, -15827,
+	-25777, -9949, 15827, 25777, 9949, -15827, -25777, -9949,
+	15827, 25777, 9949, -15827, -25777, -9949, 15827, 25777,
+	9949, -15827, -25777, -9949, 15827, 25777, 9949, -15827,
+	-25777, -9949, 15827, 25777, 9949, -15827, -25777, -9949,
+	15827, 25777, 9949, -15827, -25777, -9949, 15827, 25777,
+	9949, -15827, -25777, -9950, 15827, 25777, 9950, -15827,
+	-25777, -9950, 15827, 25777, 9950, -15827, -25777, -9950,
+	15827, 25777, 9950, -15827, -25777, -9950, 15827, 25777,
+	9950, -15827, -25777, -9950, 15827, 25777, 9950, -15827,
+	-25777, -9950, 15827, 25777, 9950, -15827, -25777, -9950,
+	15827, 25777, 9950, -15827, -25777, -9950, 15827, 25777,
+	9950, -15827, -25777, -9950, 15827, 25777, 9950, -15827,
+	-25777, -9950, 15827, 25777, 9950, -15827, -25777, -9950,
+	15827, 25777, 9950, -15827, -25777, -9950, 15827, 25777,
+	9950, -15827, -25777, -9950, 15827, 25777, 9950, -15827,
+	-25777, -9950, 15827, 25777, 9950, -15827, -25777, -9950,
+	15827, 25777, 9950, -15827, -25777, -9950, 15827, 25777},
+	},{{
+
+// Carrier 31 Phase 0
+	0, 22885, 21722, -2266, -23873, -20394, 4514, 24680,
+	18911, -6729, -25299, -17284, 8892, 25725, 15526, -10988,
+	-25956, -13649, 13000, 25989, 11668, -14913, -25824, -9599,
+	16712, 25462, 7456, -18384, -24907, -5257, 19917, 24163,
+	3018, -21297, -23234, -756, 22516, 22128, -1511, -23564,
+	-20855, 3768, 24432, 19422, -5996, -25114, -17842, 8178,
+	25605, 16126, -10298, -25901, -14287, 12339, 26000, 12339,
+	-14287, -25901, -10297, 16126, 25604, 8178, -17842, -25114,
+	-5995, 19422, 24431, 3768, -20855, -23563, -1511, 22129,
+	22516, -756, -23234, -21297, 3018, 24163, 19917, -5257,
+	-24907, -18384, 7457, 25462, 16712, -9599, -25824, -14912,
+	11668, 25989, 12999, -13649, -25956, -10987, 15526, 25725,
+	8892, -17284, -25299, -6729, 18911, 24680, 4514, -20394,
+	-23873, -2265, 21722, 22885, 0, -22885, -21722, 2266,
+	23873, 20394, -4515, -24680, -18911, 6729, 25299, 17284,
+	-8892, -25725, -15525, 10988, 25956, 13649, -13000, -25988,
+	-11668, 14913, 25824, 9599, -16712, -25462, -7456, 18384,
+	24907, 5257, -19917, -24162, -3018, 21298, 23234, 755,
+	-22516, -22128, 1512, 23564, 20855, -3768, -24432, -19422,
+	5996, 25114, 17842, -8178, -25605, -16125, 10298, 25901,
+	14287, -12339, -26000, -12339, 14287, 25901, 10297, -16126,
+	-25604, -8177, 17842, 25113, 5995, -19422, -24431, -3767,
+	20855, 23563, 1511, -22129, -22516, 756, 23234, 21297,
+	-3018, -24163, -19916, 5257, 24907, 18384, -7457, -25462,
+	-16712, 9599, 25824, 14912, -11669, -25989, -12999, 13649,
+	25955, 10987, -15526, -25725, -8892, 17284, 25299, 6728,
+	-18911, -24680, -4514, 20395, 23873, 2265, -21722, -22885},
+	{
+// Carrier 31 Phase 1
+	9949, 25865, 14601, -12005, -25997, -12671, 13969, 25931,
+	10644, -15827, -25667, -8536, 17565, 25209, 6363, -19169,
+	-24558, -4141, 20627, 23721, 1889, -21928, -22703, 378,
+	23062, 21512, -2642, -24020, -20158, 4886, 24796, 18650,
+	-7093, -25383, -17000, 9246, 25777, 15221, -11329, -25975,
+	-13326, 13326, 25975, 11329, -15221, -25777, -9246, 17000,
+	25383, 7093, -18650, -24796, -4886, 20158, 24020, 2642,
+	-21512, -23062, -378, 22703, 21928, -1889, -23721, -20627,
+	4142, 24558, 19169, -6363, -25209, -17565, 8536, 25667,
+	15827, -10644, -25931, -13969, 12671, 25997, 12005, -14601,
+	-25865, -9949, 16421, 25536, 7818, -18115, -25013, -5627,
+	19672, 24300, 3393, -21078, -23401, -1133, 22325, 22325,
+	-1134, -23401, -21078, 3393, 24300, 19671, -5627, -25013,
+	-18115, 7818, 25536, 16420, -9949, -25865, -14601, 12005,
+	25997, 12670, -13969, -25931, -10644, 15827, 25667, 8536,
+	-17565, -25209, -6363, 19169, 24558, 4141, -20627, -23721,
+	-1888, 21928, 22703, -378, -23062, -21512, 2642, 24020,
+	20157, -4887, -24796, -18650, 7094, 25383, 17000, -9247,
+	-25777, -15220, 11329, 25975, 13325, -13326, -25975, -11329,
+	15221, 25777, 9246, -17000, -25383, -7093, 18650, 24796,
+	4886, -20158, -24020, -2642, 21512, 23062, 377, -22703,
+	-21928, 1889, 23721, 20627, -4142, -24558, -19169, 6363,
+	25209, 17565, -8536, -25668, -15827, 10644, 25931, 13969,
+	-12671, -25997, -12005, 14601, 25865, 9949, -16421, -25536,
+	-7818, 18115, 25013, 5627, -19672, -24299, -3393, 21079,
+	23401, 1133, -22325, -22325, 1134, 23401, 21078, -3394,
+	-24300, -19671, 5627, 25013, 18115, -7818, -25536, -16420},
+	{
+// Carrier 31 Phase 2
+	18384, 24907, 5257, -19917, -24163, -3018, 21297, 23234,
+	756, -22516, -22129, 1511, 23564, 20855, -3768, -24432,
+	-19422, 5996, 25114, 17842, -8178, -25605, -16126, 10298,
+	25901, 14287, -12339, -26000, -12339, 14287, 25901, 10298,
+	-16126, -25604, -8178, 17842, 25114, 5995, -19422, -24431,
+	-3768, 20855, 23563, 1511, -22129, -22516, 756, 23234,
+	21297, -3018, -24163, -19917, 5257, 24907, 18384, -7456,
+	-25462, -16712, 9599, 25824, 14912, -11668, -25989, -12999,
+	13649, 25956, 10987, -15526, -25725, -8892, 17284, 25299,
+	6729, -18911, -24680, -4514, 20394, 23873, 2265, -21722,
+	-22885, 0, 22885, 21722, -2266, -23873, -20394, 4514,
+	24680, 18911, -6729, -25299, -17284, 8892, 25725, 15525,
+	-10988, -25956, -13649, 13000, 25988, 11668, -14913, -25824,
+	-9599, 16712, 25462, 7456, -18384, -24907, -5257, 19917,
+	24162, 3018, -21298, -23234, -756, 22516, 22128, -1511,
+	-23564, -20855, 3768, 24432, 19422, -5996, -25114, -17842,
+	8178, 25605, 16125, -10298, -25901, -14287, 12339, 26000,
+	12339, -14287, -25901, -10297, 16126, 25604, 8177, -17842,
+	-25114, -5995, 19422, 24431, 3767, -20855, -23563, -1511,
+	22129, 22516, -756, -23234, -21297, 3018, 24163, 19916,
+	-5257, -24907, -18384, 7457, 25462, 16712, -9599, -25824,
+	-14912, 11669, 25989, 12999, -13649, -25955, -10987, 15526,
+	25725, 8892, -17284, -25299, -6729, 18911, 24680, 4514,
+	-20395, -23873, -2265, 21722, 22885, 0, -22885, -21722,
+	2266, 23873, 20394, -4515, -24680, -18911, 6729, 25299,
+	17284, -8892, -25725, -15525, 10988, 25956, 13649, -13000,
+	-25988, -11668, 14913, 25824, 9599, -16712, -25462, -7456},
+	{
+// Carrier 31 Phase 3
+	24020, 20158, -4886, -24796, -18650, 7093, 25383, 17000,
+	-9246, -25777, -15221, 11329, 25975, 13326, -13326, -25975,
+	-11329, 15221, 25777, 9246, -17000, -25383, -7093, 18650,
+	24796, 4886, -20158, -24020, -2642, 21512, 23062, 378,
+	-22703, -21928, 1889, 23721, 20627, -4142, -24558, -19169,
+	6363, 25209, 17565, -8536, -25667, -15827, 10644, 25931,
+	13969, -12671, -25997, -12005, 14601, 25865, 9949, -16421,
+	-25536, -7818, 18115, 25013, 5627, -19672, -24300, -3393,
+	21078, 23401, 1134, -22325, -22325, 1134, 23401, 21078,
+	-3393, -24300, -19671, 5627, 25013, 18115, -7818, -25536,
+	-16420, 9949, 25865, 14601, -12005, -25997, -12671, 13969,
+	25931, 10644, -15827, -25667, -8536, 17565, 25209, 6363,
+	-19169, -24558, -4141, 20627, 23721, 1888, -21928, -22703,
+	378, 23062, 21512, -2642, -24020, -20157, 4886, 24796,
+	18650, -7094, -25383, -17000, 9247, 25777, 15221, -11329,
+	-25975, -13325, 13326, 25975, 11329, -15221, -25777, -9246,
+	17000, 25383, 7093, -18650, -24796, -4886, 20158, 24020,
+	2642, -21512, -23062, -377, 22703, 21928, -1889, -23721,
+	-20627, 4142, 24558, 19169, -6363, -25209, -17565, 8536,
+	25667, 15827, -10644, -25931, -13969, 12671, 25997, 12005,
+	-14601, -25865, -9949, 16421, 25536, 7818, -18115, -25013,
+	-5627, 19672, 24299, 3393, -21078, -23401, -1133, 22325,
+	22325, -1134, -23401, -21078, 3393, 24300, 19671, -5627,
+	-25013, -18115, 7818, 25536, 16420, -9950, -25865, -14601,
+	12005, 25997, 12670, -13970, -25931, -10643, 15828, 25667,
+	8535, -17565, -25209, -6362, 19169, 24558, 4141, -20627,
+	-23721, -1888, 21928, 22703, -378, -23062, -21512, 2642},
+	{
+// Carrier 31 Phase 4
+	26000, 12339, -14287, -25901, -10298, 16126, 25605, 8178,
+	-17842, -25114, -5996, 19422, 24432, 3768, -20855, -23563,
+	-1511, 22129, 22516, -756, -23234, -21297, 3018, 24163,
+	19917, -5257, -24907, -18384, 7456, 25462, 16712, -9599,
+	-25824, -14912, 11668, 25989, 12999, -13649, -25956, -10988,
+	15526, 25725, 8892, -17284, -25299, -6729, 18911, 24680,
+	4514, -20394, -23873, -2265, 21722, 22885, 0, -22885,
+	-21722, 2266, 23873, 20394, -4514, -24680, -18911, 6729,
+	25299, 17284, -8892, -25725, -15526, 10988, 25956, 13649,
+	-13000, -25988, -11668, 14913, 25824, 9599, -16712, -25462,
+	-7456, 18384, 24907, 5257, -19917, -24162, -3018, 21298,
+	23234, 756, -22516, -22128, 1511, 23564, 20855, -3768,
+	-24432, -19422, 5996, 25114, 17842, -8178, -25605, -16125,
+	10298, 25901, 14287, -12339, -26000, -12339, 14287, 25901,
+	10297, -16126, -25604, -8177, 17842, 25114, 5995, -19422,
+	-24431, -3768, 20855, 23563, 1511, -22129, -22516, 756,
+	23234, 21297, -3018, -24163, -19917, 5257, 24907, 18384,
+	-7457, -25462, -16712, 9599, 25824, 14912, -11668, -25989,
+	-12999, 13649, 25955, 10987, -15526, -25725, -8892, 17284,
+	25299, 6729, -18911, -24680, -4514, 20394, 23873, 2265,
+	-21722, -22885, 0, 22885, 21722, -2266, -23873, -20394,
+	4515, 24680, 18911, -6729, -25299, -17284, 8892, 25725,
+	15525, -10988, -25956, -13649, 13000, 25988, 11668, -14913,
+	-25824, -9599, 16712, 25462, 7456, -18385, -24907, -5257,
+	19917, 24162, 3018, -21298, -23234, -755, 22516, 22128,
+	-1512, -23564, -20855, 3768, 24432, 19422, -5996, -25114,
+	-17842, 8178, 25605, 16125, -10298, -25901, -14286, 12339},
+	{
+// Carrier 31 Phase 5
+	24020, 2642, -21512, -23062, -378, 22703, 21928, -1889,
+	-23721, -20627, 4141, 24558, 19169, -6363, -25209, -17565,
+	8536, 25667, 15827, -10644, -25931, -13969, 12671, 25997,
+	12005, -14601, -25865, -9949, 16421, 25536, 7818, -18115,
+	-25013, -5627, 19672, 24300, 3393, -21078, -23401, -1134,
+	22325, 22325, -1134, -23401, -21078, 3393, 24300, 19671,
+	-5627, -25013, -18115, 7818, 25536, 16420, -9949, -25865,
+	-14601, 12005, 25997, 12671, -13969, -25931, -10644, 15827,
+	25667, 8536, -17565, -25209, -6363, 19169, 24558, 4141,
+	-20627, -23721, -1889, 21928, 22703, -378, -23062, -21512,
+	2642, 24020, 20158, -4886, -24796, -18650, 7093, 25383,
+	17000, -9247, -25777, -15221, 11329, 25975, 13325, -13326,
+	-25975, -11329, 15221, 25777, 9246, -17000, -25383, -7093,
+	18650, 24796, 4886, -20158, -24020, -2642, 21512, 23062,
+	377, -22703, -21928, 1889, 23721, 20627, -4142, -24558,
+	-19169, 6363, 25209, 17565, -8536, -25667, -15827, 10644,
+	25931, 13969, -12671, -25997, -12005, 14601, 25865, 9949,
+	-16421, -25536, -7818, 18115, 25013, 5627, -19672, -24300,
+	-3393, 21078, 23401, 1133, -22325, -22325, 1134, 23401,
+	21078, -3393, -24300, -19671, 5627, 25013, 18115, -7818,
+	-25536, -16420, 9950, 25865, 14601, -12005, -25997, -12670,
+	13970, 25931, 10643, -15828, -25667, -8535, 17565, 25209,
+	6363, -19169, -24558, -4141, 20627, 23721, 1888, -21928,
+	-22703, 378, 23062, 21512, -2642, -24020, -20157, 4887,
+	24796, 18649, -7094, -25383, -17000, 9247, 25777, 15220,
+	-11329, -25975, -13325, 13326, 25975, 11329, -15221, -25777,
+	-9246, 17000, 25383, 7093, -18650, -24796, -4886, 20158},
+	{
+// Carrier 31 Phase 6
+	18384, -7456, -25462, -16712, 9599, 25824, 14912, -11668,
+	-25989, -12999, 13649, 25956, 10988, -15526, -25725, -8892,
+	17284, 25299, 6729, -18911, -24680, -4514, 20394, 23873,
+	2266, -21722, -22885, 0, 22885, 21722, -2266, -23873,
+	-20394, 4514, 24680, 18911, -6729, -25299, -17284, 8892,
+	25725, 15526, -10988, -25956, -13649, 13000, 25988, 11668,
+	-14913, -25824, -9599, 16712, 25462, 7456, -18384, -24907,
+	-5257, 19917, 24162, 3018, -21298, -23234, -756, 22516,
+	22128, -1511, -23564, -20855, 3768, 24432, 19422, -5996,
+	-25114, -17842, 8178, 25605, 16126, -10298, -25901, -14287,
+	12339, 26000, 12339, -14287, -25901, -10297, 16126, 25604,
+	8178, -17842, -25114, -5995, 19422, 24431, 3768, -20855,
+	-23563, -1511, 22129, 22516, -756, -23234, -21297, 3018,
+	24163, 19917, -5257, -24907, -18384, 7457, 25462, 16712,
+	-9599, -25824, -14912, 11668, 25989, 12999, -13649, -25956,
+	-10987, 15526, 25725, 8892, -17284, -25299, -6729, 18911,
+	24680, 4514, -20394, -23873, -2265, 21722, 22885, 0,
+	-22885, -21722, 2266, 23873, 20394, -4515, -24680, -18911,
+	6729, 25299, 17284, -8892, -25725, -15525, 10988, 25956,
+	13649, -13000, -25988, -11668, 14913, 25824, 9599, -16712,
+	-25462, -7456, 18384, 24907, 5257, -19917, -24162, -3018,
+	21298, 23234, 755, -22516, -22128, 1512, 23564, 20855,
+	-3768, -24432, -19422, 5996, 25114, 17842, -8178, -25605,
+	-16125, 10298, 25901, 14286, -12339, -26000, -12339, 14287,
+	25901, 10297, -16126, -25604, -8177, 17842, 25113, 5995,
+	-19422, -24431, -3767, 20855, 23563, 1511, -22129, -22516,
+	756, 23234, 21297, -3018, -24163, -19916, 5258, 24907},
+	{
+// Carrier 31 Phase 7
+	9949, -16421, -25536, -7818, 18115, 25013, 5627, -19671,
+	-24300, -3393, 21078, 23401, 1134, -22325, -22325, 1134,
+	23401, 21078, -3393, -24300, -19671, 5627, 25013, 18115,
+	-7818, -25536, -16421, 9949, 25865, 14601, -12005, -25997,
+	-12671, 13969, 25931, 10644, -15827, -25667, -8536, 17565,
+	25209, 6363, -19169, -24558, -4141, 20627, 23721, 1889,
+	-21928, -22703, 378, 23062, 21512, -2642, -24020, -20158,
+	4886, 24796, 18650, -7093, -25383, -17000, 9247, 25777,
+	15221, -11329, -25975, -13326, 13326, 25975, 11329, -15221,
+	-25777, -9246, 17000, 25383, 7093, -18650, -24796, -4886,
+	20158, 24020, 2642, -21512, -23062, -377, 22703, 21928,
+	-1889, -23721, -20627, 4142, 24558, 19169, -6363, -25209,
+	-17565, 8536, 25667, 15827, -10644, -25931, -13969, 12671,
+	25997, 12005, -14601, -25865, -9949, 16421, 25536, 7818,
+	-18115, -25013, -5627, 19672, 24300, 3393, -21078, -23401,
+	-1133, 22325, 22325, -1134, -23401, -21078, 3393, 24300,
+	19671, -5627, -25013, -18115, 7818, 25536, 16420, -9949,
+	-25865, -14601, 12005, 25997, 12670, -13969, -25931, -10643,
+	15827, 25667, 8536, -17565, -25209, -6363, 19169, 24558,
+	4141, -20627, -23721, -1888, 21928, 22703, -378, -23062,
+	-21512, 2642, 24020, 20157, -4887, -24796, -18650, 7094,
+	25383, 17000, -9247, -25777, -15220, 11329, 25975, 13325,
+	-13326, -25975, -11329, 15221, 25777, 9246, -17000, -25383,
+	-7093, 18650, 24796, 4886, -20158, -24020, -2642, 21512,
+	23062, 377, -22703, -21928, 1889, 23721, 20626, -4142,
+	-24558, -19168, 6363, 25209, 17565, -8536, -25668, -15827,
+	10644, 25931, 13969, -12671, -25997, -12005, 14601, 25865},
+	},{{
+
+// Carrier 32 Phase 0
+	0, 23234, 20855, -4514, -24907, -17842, 8892, 25824,
+	14287, -13000, -25956, -10298, 16712, 25299, 5995, -19917,
+	-23873, -1511, 22516, 21722, -3018, -24432, -18911, 7456,
+	25605, 15526, -11668, -26000, -11668, 15526, 25604, 7456,
+	-18911, -24431, -3018, 21722, 22516, -1511, -23873, -19917,
+	5996, 25299, 16712, -10298, -25956, -12999, 14287, 25824,
+	8892, -17842, -24907, -4514, 20855, 23234, 0, -23234,
+	-20855, 4514, 24907, 17842, -8892, -25824, -14287, 13000,
+	25956, 10297, -16712, -25299, -5995, 19917, 23873, 1511,
+	-22516, -21722, 3018, 24432, 18911, -7457, -25605, -15525,
+	11668, 26000, 11668, -15526, -25604, -7456, 18911, 24431,
+	3018, -21722, -22516, 1511, 23873, 19917, -5996, -25299,
+	-16712, 10298, 25956, 12999, -14287, -25824, -8892, 17842,
+	24907, 4514, -20855, -23234, 0, 23234, 20855, -4515,
+	-24907, -17842, 8892, 25824, 14287, -13000, -25955, -10297,
+	16712, 25299, 5995, -19917, -23873, -1511, 22516, 21722,
+	-3018, -24432, -18911, 7457, 25605, 15525, -11669, -26000,
+	-11668, 15526, 25604, 7456, -18911, -24431, -3018, 21722,
+	22516, -1512, -23873, -19916, 5996, 25299, 16712, -10298,
+	-25956, -12999, 14287, 25824, 8892, -17842, -24907, -4514,
+	20855, 23234, 0, -23234, -20854, 4515, 24907, 17842,
+	-8892, -25824, -14286, 13000, 25955, 10297, -16712, -25299,
+	-5995, 19917, 23873, 1511, -22516, -21722, 3018, 24432,
+	18911, -7457, -25605, -15525, 11669, 26000, 11668, -15526,
+	-25604, -7456, 18911, 24431, 3018, -21722, -22516, 1512,
+	23873, 19916, -5996, -25299, -16712, 10298, 25956, 12999,
+	-14287, -25824, -8892, 17842, 24907, 4514, -20855, -23234},
+	{
+// Carrier 32 Phase 1
+	9949, 25931, 13326, -13969, -25865, -9246, 17565, 25013,
+	4886, -20627, -23401, -378, 23062, 21078, -4142, -24796,
+	-18115, 8536, 25777, 14601, -12671, -25975, -10644, 16421,
+	25383, 6363, -19672, -24020, -1889, 22325, 21928, -2642,
+	-24300, -19169, 7093, 25536, 15827, -11329, -25997, -12005,
+	15221, 25667, 7818, -18650, -24558, -3393, 21512, 22703,
+	-1134, -23721, -20158, 5627, 25209, 17000, -9949, -25931,
+	-13325, 13969, 25865, 9246, -17565, -25013, -4886, 20627,
+	23401, 377, -23062, -21078, 4142, 24796, 18115, -8536,
+	-25777, -14601, 12671, 25975, 10644, -16421, -25383, -6363,
+	19672, 24020, 1888, -22325, -21928, 2642, 24300, 19169,
+	-7094, -25536, -15827, 11329, 25997, 12005, -15221, -25667,
+	-7818, 18650, 24558, 3393, -21512, -22703, 1134, 23721,
+	20157, -5627, -25209, -17000, 9949, 25931, 13325, -13969,
+	-25865, -9246, 17565, 25013, 4886, -20627, -23401, -377,
+	23062, 21078, -4142, -24796, -18115, 8536, 25777, 14601,
+	-12671, -25975, -10643, 16421, 25383, 6363, -19672, -24020,
+	-1888, 22325, 21928, -2642, -24300, -19168, 7094, 25536,
+	15827, -11329, -25997, -12005, 15221, 25667, 7818, -18650,
+	-24558, -3393, 21512, 22703, -1134, -23721, -20157, 5627,
+	25209, 17000, -9950, -25931, -13325, 13970, 25865, 9246,
+	-17565, -25013, -4886, 20627, 23401, 377, -23062, -21078,
+	4142, 24796, 18115, -8536, -25777, -14601, 12671, 25975,
+	10643, -16421, -25383, -6362, 19672, 24020, 1888, -22325,
+	-21927, 2642, 24300, 19168, -7094, -25536, -15827, 11330,
+	25997, 12005, -15221, -25667, -7817, 18650, 24558, 3393,
+	-21512, -22703, 1134, 23721, 20157, -5627, -25209, -17000},
+	{
+// Carrier 32 Phase 2
+	18384, 24680, 3768, -21297, -22885, 756, 23564, 20394,
+	-5257, -25114, -17284, 9599, 25901, 13649, -13649, -25901,
+	-9599, 17284, 25114, 5257, -20394, -23563, -756, 22885,
+	21297, -3768, -24680, -18384, 8178, 25725, 14912, -12339,
+	-25988, -10988, 16126, 25462, 6729, -19422, -24163, -2265,
+	22129, 22128, -2266, -24163, -19422, 6729, 25462, 16126,
+	-10988, -25989, -12339, 14913, 25725, 8178, -18384, -24680,
+	-3768, 21298, 22885, -756, -23564, -20394, 5257, 25114,
+	17284, -9599, -25901, -13649, 13649, 25901, 9599, -17284,
+	-25114, -5257, 20394, 23563, 756, -22885, -21297, 3768,
+	24680, 18384, -8178, -25725, -14912, 12339, 25988, 10987,
+	-16126, -25462, -6729, 19422, 24162, 2265, -22129, -22128,
+	2266, 24163, 19422, -6729, -25462, -16125, 10988, 25989,
+	12339, -14913, -25725, -8177, 18384, 24680, 3767, -21298,
+	-22885, 756, 23564, 20394, -5257, -25114, -17284, 9599,
+	25901, 13649, -13649, -25901, -9599, 17284, 25114, 5257,
+	-20394, -23563, -755, 22885, 21297, -3768, -24680, -18384,
+	8178, 25725, 14912, -12339, -25988, -10987, 16126, 25462,
+	6728, -19422, -24162, -2265, 22129, 22128, -2266, -24163,
+	-19422, 6729, 25462, 16125, -10988, -25989, -12339, 14913,
+	25725, 8177, -18385, -24680, -3767, 21298, 22885, -756,
+	-23564, -20394, 5258, 25114, 17284, -9599, -25901, -13649,
+	13649, 25901, 9598, -17284, -25113, -5257, 20395, 23563,
+	755, -22885, -21297, 3768, 24680, 18384, -8178, -25725,
+	-14912, 12339, 25988, 10987, -16126, -25462, -6728, 19422,
+	24162, 2265, -22129, -22128, 2266, 24163, 19422, -6729,
+	-25462, -16125, 10988, 25989, 12339, -14913, -25725, -8177},
+	{
+// Carrier 32 Phase 3
+	24020, 19671, -6363, -25383, -16421, 10644, 25975, 12671,
+	-14601, -25777, -8536, 18115, 24796, 4141, -21078, -23062,
+	378, 23401, 20627, -4886, -25013, -17565, 9246, 25865,
+	13969, -13326, -25931, -9949, 17000, 25209, 5627, -20158,
+	-23721, -1134, 22703, 21512, -3393, -24558, -18650, 7818,
+	25667, 15221, -12005, -25997, -11329, 15827, 25536, 7093,
+	-19169, -24300, -2642, 21928, 22325, -1889, -24020, -19671,
+	6363, 25383, 16420, -10644, -25975, -12671, 14601, 25777,
+	8536, -18115, -24796, -4141, 21078, 23062, -378, -23401,
+	-20627, 4886, 25013, 17565, -9247, -25865, -13969, 13326,
+	25931, 9949, -17000, -25209, -5627, 20158, 23721, 1133,
+	-22703, -21512, 3393, 24558, 18650, -7818, -25667, -15220,
+	12005, 25997, 11329, -15827, -25536, -7093, 19169, 24300,
+	2642, -21928, -22325, 1889, 24020, 19671, -6363, -25383,
+	-16420, 10644, 25975, 12670, -14601, -25777, -8536, 18115,
+	24796, 4141, -21078, -23062, 378, 23401, 20627, -4887,
+	-25013, -17565, 9247, 25865, 13969, -13326, -25931, -9949,
+	17000, 25209, 5627, -20158, -23721, -1133, 22703, 21512,
+	-3393, -24558, -18650, 7818, 25668, 15220, -12005, -25997,
+	-11329, 15828, 25536, 7093, -19169, -24299, -2642, 21928,
+	22325, -1889, -24020, -19671, 6363, 25383, 16420, -10644,
+	-25975, -12670, 14601, 25777, 8535, -18115, -24796, -4141,
+	21079, 23062, -378, -23401, -20626, 4887, 25013, 17565,
+	-9247, -25865, -13969, 13326, 25931, 9949, -17000, -25209,
+	-5627, 20158, 23721, 1133, -22703, -21512, 3394, 24558,
+	18649, -7818, -25668, -15220, 12005, 25997, 11329, -15828,
+	-25536, -7093, 19169, 24299, 2642, -21928, -22324, 1889},
+	{
+// Carrier 32 Phase 4
+	26000, 11668, -15526, -25605, -7456, 18911, 24432, 3018,
+	-21722, -22516, 1511, 23873, 19917, -5996, -25299, -16712,
+	10298, 25956, 12999, -14287, -25824, -8892, 17842, 24907,
+	4514, -20855, -23234, 0, 23234, 20855, -4514, -24907,
+	-17842, 8892, 25824, 14287, -13000, -25956, -10298, 16712,
+	25299, 5995, -19917, -23873, -1511, 22516, 21722, -3018,
+	-24432, -18911, 7456, 25605, 15526, -11668, -26000, -11668,
+	15526, 25604, 7456, -18911, -24431, -3018, 21722, 22516,
+	-1511, -23873, -19917, 5996, 25299, 16712, -10298, -25956,
+	-12999, 14287, 25824, 8892, -17842, -24907, -4514, 20855,
+	23234, 0, -23234, -20855, 4515, 24907, 17842, -8892,
+	-25824, -14287, 13000, 25956, 10297, -16712, -25299, -5995,
+	19917, 23873, 1511, -22516, -21722, 3018, 24432, 18911,
+	-7457, -25605, -15525, 11668, 26000, 11668, -15526, -25604,
+	-7456, 18911, 24431, 3018, -21722, -22516, 1512, 23873,
+	19917, -5996, -25299, -16712, 10298, 25956, 12999, -14287,
+	-25824, -8892, 17842, 24907, 4514, -20855, -23234, 0,
+	23234, 20855, -4515, -24907, -17842, 8892, 25824, 14286,
+	-13000, -25955, -10297, 16712, 25299, 5995, -19917, -23873,
+	-1511, 22516, 21722, -3018, -24432, -18911, 7457, 25605,
+	15525, -11669, -26000, -11668, 15526, 25604, 7456, -18911,
+	-24431, -3018, 21722, 22516, -1512, -23873, -19916, 5996,
+	25299, 16712, -10298, -25956, -12999, 14287, 25824, 8892,
+	-17842, -24907, -4514, 20855, 23234, 0, -23234, -20854,
+	4515, 24907, 17841, -8892, -25824, -14286, 13000, 25955,
+	10297, -16712, -25299, -5995, 19917, 23873, 1511, -22516,
+	-21722, 3018, 24432, 18911, -7457, -25605, -15525, 11669},
+	{
+// Carrier 32 Phase 5
+	24020, 1889, -22325, -21928, 2642, 24300, 19169, -7093,
+	-25536, -15827, 11329, 25997, 12005, -15221, -25667, -7818,
+	18650, 24558, 3393, -21512, -22703, 1134, 23721, 20158,
+	-5627, -25209, -17000, 9949, 25931, 13326, -13969, -25865,
+	-9246, 17565, 25013, 4886, -20627, -23401, -378, 23062,
+	21078, -4142, -24796, -18115, 8536, 25777, 14601, -12671,
+	-25975, -10644, 16421, 25383, 6363, -19672, -24020, -1889,
+	22325, 21928, -2642, -24300, -19169, 7093, 25536, 15827,
+	-11329, -25997, -12005, 15221, 25667, 7818, -18650, -24558,
+	-3393, 21512, 22703, -1134, -23721, -20158, 5627, 25209,
+	17000, -9949, -25931, -13325, 13969, 25865, 9246, -17565,
+	-25013, -4886, 20627, 23401, 377, -23062, -21078, 4142,
+	24796, 18115, -8536, -25777, -14601, 12671, 25975, 10643,
+	-16421, -25383, -6363, 19672, 24020, 1888, -22325, -21928,
+	2642, 24300, 19169, -7094, -25536, -15827, 11329, 25997,
+	12005, -15221, -25667, -7818, 18650, 24558, 3393, -21512,
+	-22703, 1134, 23721, 20157, -5627, -25209, -17000, 9950,
+	25931, 13325, -13970, -25865, -9246, 17565, 25013, 4886,
+	-20627, -23401, -377, 23062, 21078, -4142, -24796, -18115,
+	8536, 25777, 14601, -12671, -25975, -10643, 16421, 25383,
+	6362, -19672, -24020, -1888, 22325, 21927, -2642, -24300,
+	-19168, 7094, 25536, 15827, -11329, -25997, -12005, 15221,
+	25667, 7817, -18650, -24558, -3393, 21512, 22703, -1134,
+	-23721, -20157, 5627, 25209, 17000, -9950, -25931, -13325,
+	13970, 25865, 9246, -17565, -25013, -4886, 20627, 23401,
+	377, -23062, -21078, 4142, 24796, 18115, -8536, -25777,
+	-14601, 12671, 25975, 10643, -16421, -25383, -6362, 19672},
+	{
+// Carrier 32 Phase 6
+	18384, -8178, -25725, -14912, 12339, 25989, 10988, -16126,
+	-25462, -6729, 19422, 24163, 2266, -22129, -22129, 2266,
+	24163, 19422, -6729, -25462, -16126, 10988, 25989, 12339,
+	-14913, -25725, -8178, 18384, 24680, 3768, -21297, -22885,
+	756, 23564, 20394, -5257, -25114, -17284, 9599, 25901,
+	13649, -13649, -25901, -9599, 17284, 25114, 5257, -20394,
+	-23563, -756, 22885, 21297, -3768, -24680, -18384, 8178,
+	25725, 14912, -12339, -25988, -10987, 16126, 25462, 6729,
+	-19422, -24162, -2265, 22129, 22128, -2266, -24163, -19422,
+	6729, 25462, 16125, -10988, -25989, -12339, 14913, 25725,
+	8178, -18384, -24680, -3768, 21298, 22885, -756, -23564,
+	-20394, 5257, 25114, 17284, -9599, -25901, -13649, 13649,
+	25901, 9599, -17284, -25114, -5257, 20394, 23563, 755,
+	-22885, -21297, 3768, 24680, 18384, -8178, -25725, -14912,
+	12339, 25988, 10987, -16126, -25462, -6729, 19422, 24162,
+	2265, -22129, -22128, 2266, 24163, 19422, -6729, -25462,
+	-16125, 10988, 25989, 12339, -14913, -25725, -8177, 18384,
+	24680, 3767, -21298, -22885, 756, 23564, 20394, -5257,
+	-25114, -17284, 9599, 25901, 13649, -13649, -25901, -9599,
+	17284, 25113, 5257, -20395, -23563, -755, 22885, 21297,
+	-3768, -24680, -18384, 8178, 25725, 14912, -12339, -25988,
+	-10987, 16126, 25462, 6728, -19422, -24162, -2265, 22129,
+	22128, -2266, -24163, -19422, 6729, 25462, 16125, -10988,
+	-25989, -12339, 14913, 25725, 8177, -18385, -24680, -3767,
+	21298, 22885, -756, -23564, -20394, 5258, 25114, 17284,
+	-9599, -25901, -13649, 13649, 25901, 9598, -17285, -25113,
+	-5257, 20395, 23563, 755, -22885, -21297, 3768, 24680},
+	{
+// Carrier 32 Phase 7
+	9949, -17000, -25209, -5627, 20158, 23721, 1134, -22703,
+	-21512, 3393, 24558, 18650, -7818, -25667, -15221, 12005,
+	25997, 11329, -15827, -25536, -7093, 19169, 24300, 2642,
+	-21928, -22325, 1889, 24020, 19671, -6363, -25383, -16421,
+	10644, 25975, 12671, -14601, -25777, -8536, 18115, 24796,
+	4141, -21078, -23062, 378, 23401, 20627, -4886, -25013,
+	-17565, 9247, 25865, 13969, -13326, -25931, -9949, 17000,
+	25209, 5627, -20158, -23721, -1134, 22703, 21512, -3393,
+	-24558, -18650, 7818, 25667, 15221, -12005, -25997, -11329,
+	15827, 25536, 7093, -19169, -24300, -2642, 21928, 22325,
+	-1889, -24020, -19671, 6363, 25383, 16420, -10644, -25975,
+	-12670, 14601, 25777, 8536, -18115, -24796, -4141, 21078,
+	23062, -378, -23401, -20627, 4886, 25013, 17565, -9247,
+	-25865, -13969, 13326, 25931, 9949, -17000, -25209, -5627,
+	20158, 23721, 1133, -22703, -21512, 3393, 24558, 18650,
+	-7818, -25667, -15220, 12005, 25997, 11329, -15827, -25536,
+	-7093, 19169, 24299, 2642, -21928, -22325, 1889, 24020,
+	19671, -6363, -25383, -16420, 10644, 25975, 12670, -14601,
+	-25777, -8535, 18115, 24796, 4141, -21078, -23062, 378,
+	23401, 20627, -4887, -25013, -17565, 9247, 25865, 13969,
+	-13326, -25931, -9949, 17000, 25209, 5627, -20158, -23721,
+	-1133, 22703, 21512, -3394, -24558, -18649, 7818, 25668,
+	15220, -12005, -25997, -11329, 15828, 25536, 7093, -19169,
+	-24299, -2642, 21928, 22325, -1889, -24021, -19671, 6363,
+	25383, 16420, -10644, -25975, -12670, 14601, 25777, 8535,
+	-18115, -24796, -4141, 21079, 23062, -378, -23401, -20626,
+	4887, 25013, 17565, -9247, -25865, -13969, 13326, 25931},
+	},{{
+
+// Carrier 33 Phase 0
+	0, 23564, 19917, -6729, -25605, -14912, 13000, 25901,
+	8892, -18384, -24432, -2266, 22516, 21297, -4514, -25114,
+	-16712, 10988, 26000, 10988, -16712, -25114, -4514, 21297,
+	22516, -2266, -24432, -18384, 8892, 25901, 12999, -14913,
+	-25604, -6729, 19917, 23563, 0, -23564, -19917, 6729,
+	25605, 14912, -13000, -25901, -8892, 18384, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16712, -10988, -26000, -10987,
+	16712, 25114, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8892, -25901, -12999, 14913, 25604, 6729, -19917, -23563,
+	0, 23564, 19916, -6729, -25605, -14912, 13000, 25901,
+	8892, -18384, -24431, -2265, 22516, 21297, -4515, -25114,
+	-16712, 10988, 26000, 10987, -16712, -25113, -4514, 21298,
+	22516, -2266, -24432, -18384, 8892, 25901, 12999, -14913,
+	-25604, -6728, 19917, 23563, 0, -23564, -19916, 6729,
+	25605, 14912, -13000, -25901, -8892, 18385, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16712, -10988, -26000, -10987,
+	16712, 25113, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8892, -25901, -12999, 14913, 25604, 6728, -19917, -23563,
+	0, 23564, 19916, -6729, -25605, -14912, 13000, 25901,
+	8892, -18385, -24431, -2265, 22516, 21297, -4515, -25114,
+	-16712, 10988, 26000, 10987, -16712, -25113, -4514, 21298,
+	22516, -2266, -24432, -18384, 8893, 25901, 12999, -14913,
+	-25604, -6728, 19917, 23563, 0, -23564, -19916, 6729,
+	25605, 14912, -13000, -25901, -8891, 18385, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16711, -10988, -26000, -10987,
+	16713, 25113, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8893, -25901, -12999, 14913, 25604, 6728, -19917, -23563},
+	{
+// Carrier 33 Phase 1
+	9949, 25975, 12005, -15827, -25383, -5627, 20627, 23062,
+	-1134, -24020, -19169, 7818, 25777, 13969, -13969, -25777,
+	-7818, 19169, 24020, 1134, -23062, -20627, 5627, 25383,
+	15827, -12005, -25975, -9949, 17565, 24796, 3393, -21928,
+	-21928, 3393, 24796, 17565, -9949, -25975, -12005, 15827,
+	25383, 5627, -20627, -23062, 1134, 24020, 19169, -7818,
+	-25777, -13969, 13969, 25777, 7818, -19169, -24020, -1133,
+	23062, 20627, -5627, -25383, -15827, 12005, 25975, 9949,
+	-17565, -24796, -3393, 21928, 21928, -3393, -24796, -17565,
+	9950, 25975, 12005, -15827, -25383, -5627, 20627, 23062,
+	-1134, -24020, -19169, 7818, 25777, 13969, -13970, -25777,
+	-7818, 19169, 24020, 1133, -23062, -20626, 5627, 25383,
+	15827, -12005, -25975, -9949, 17565, 24796, 3393, -21928,
+	-21927, 3394, 24796, 17565, -9950, -25975, -12005, 15828,
+	25383, 5627, -20627, -23062, 1134, 24021, 19168, -7818,
+	-25777, -13969, 13970, 25777, 7817, -19169, -24020, -1133,
+	23062, 20626, -5627, -25383, -15827, 12005, 25975, 9949,
+	-17565, -24796, -3393, 21928, 21927, -3394, -24796, -17564,
+	9950, 25975, 12005, -15828, -25383, -5626, 20627, 23062,
+	-1134, -24021, -19168, 7818, 25777, 13969, -13970, -25777,
+	-7817, 19169, 24020, 1133, -23062, -20626, 5627, 25383,
+	15827, -12005, -25975, -9949, 17565, 24796, 3393, -21928,
+	-21927, 3394, 24796, 17564, -9950, -25975, -12004, 15828,
+	25383, 5626, -20627, -23061, 1134, 24021, 19168, -7818,
+	-25777, -13969, 13970, 25777, 7817, -19169, -24020, -1133,
+	23062, 20626, -5628, -25383, -15827, 12006, 25975, 9949,
+	-17565, -24796, -3392, 21928, 21927, -3394, -24796, -17564},
+	{
+// Carrier 33 Phase 2
+	18384, 24432, 2266, -22516, -21297, 4514, 25114, 16712,
+	-10988, -26000, -10988, 16712, 25114, 4514, -21297, -22516,
+	2266, 24432, 18384, -8892, -25901, -12999, 14913, 25604,
+	6729, -19917, -23563, 0, 23564, 19917, -6729, -25605,
+	-14912, 13000, 25901, 8892, -18384, -24431, -2265, 22516,
+	21297, -4514, -25114, -16712, 10988, 26000, 10987, -16712,
+	-25114, -4514, 21298, 22516, -2266, -24432, -18384, 8892,
+	25901, 12999, -14913, -25604, -6729, 19917, 23563, 0,
+	-23564, -19917, 6729, 25605, 14912, -13000, -25901, -8892,
+	18384, 24431, 2265, -22516, -21297, 4515, 25114, 16712,
+	-10988, -26000, -10987, 16712, 25113, 4514, -21298, -22516,
+	2266, 24432, 18384, -8892, -25901, -12999, 14913, 25604,
+	6728, -19917, -23563, 0, 23564, 19916, -6729, -25605,
+	-14912, 13000, 25901, 8892, -18385, -24431, -2265, 22516,
+	21297, -4515, -25114, -16712, 10988, 26000, 10987, -16712,
+	-25113, -4514, 21298, 22516, -2266, -24432, -18384, 8892,
+	25901, 12999, -14913, -25604, -6728, 19917, 23563, 0,
+	-23564, -19916, 6729, 25605, 14912, -13000, -25901, -8892,
+	18385, 24431, 2265, -22516, -21297, 4515, 25114, 16712,
+	-10988, -26000, -10987, 16712, 25113, 4514, -21298, -22516,
+	2266, 24432, 18384, -8893, -25901, -12999, 14913, 25604,
+	6728, -19917, -23563, 0, 23564, 19916, -6729, -25605,
+	-14912, 13000, 25901, 8891, -18385, -24431, -2265, 22516,
+	21297, -4515, -25114, -16711, 10988, 26000, 10987, -16712,
+	-25113, -4514, 21298, 22516, -2266, -24432, -18384, 8893,
+	25901, 12999, -14913, -25604, -6728, 19917, 23563, 0,
+	-23564, -19916, 6730, 25605, 14912, -13000, -25900, -8891},
+	{
+// Carrier 33 Phase 3
+	24020, 19169, -7818, -25777, -13969, 13969, 25777, 7818,
+	-19169, -24020, -1134, 23062, 20627, -5627, -25383, -15827,
+	12005, 25975, 9949, -17565, -24796, -3393, 21928, 21928,
+	-3393, -24796, -17565, 9949, 25975, 12005, -15827, -25383,
+	-5627, 20627, 23062, -1134, -24020, -19169, 7818, 25777,
+	13969, -13969, -25777, -7818, 19169, 24020, 1133, -23062,
+	-20627, 5627, 25383, 15827, -12005, -25975, -9949, 17565,
+	24796, 3393, -21928, -21928, 3393, 24796, 17565, -9949,
+	-25975, -12005, 15827, 25383, 5627, -20627, -23062, 1134,
+	24020, 19169, -7818, -25777, -13969, 13970, 25777, 7818,
+	-19169, -24020, -1133, 23062, 20627, -5627, -25383, -15827,
+	12005, 25975, 9949, -17565, -24796, -3393, 21928, 21927,
+	-3394, -24796, -17565, 9950, 25975, 12005, -15828, -25383,
+	-5627, 20627, 23062, -1134, -24021, -19168, 7818, 25777,
+	13969, -13970, -25777, -7817, 19169, 24020, 1133, -23062,
+	-20626, 5627, 25383, 15827, -12005, -25975, -9949, 17565,
+	24796, 3393, -21928, -21927, 3394, 24796, 17565, -9950,
+	-25975, -12005, 15828, 25383, 5626, -20627, -23062, 1134,
+	24021, 19168, -7818, -25777, -13969, 13970, 25777, 7817,
+	-19169, -24020, -1133, 23062, 20626, -5627, -25383, -15827,
+	12005, 25975, 9949, -17565, -24796, -3393, 21928, 21927,
+	-3394, -24796, -17564, 9950, 25975, 12004, -15828, -25383,
+	-5626, 20627, 23061, -1134, -24021, -19168, 7818, 25777,
+	13969, -13970, -25777, -7817, 19169, 24020, 1133, -23062,
+	-20626, 5628, 25383, 15827, -12006, -25975, -9949, 17565,
+	24796, 3392, -21928, -21927, 3394, 24796, 17564, -9950,
+	-25975, -12004, 15828, 25383, 5626, -20627, -23061, 1134},
+	{
+// Carrier 33 Phase 4
+	26000, 10988, -16712, -25114, -4514, 21297, 22516, -2266,
+	-24432, -18384, 8892, 25901, 12999, -14913, -25604, -6729,
+	19917, 23563, 0, -23564, -19917, 6729, 25605, 14912,
+	-13000, -25901, -8892, 18384, 24431, 2265, -22516, -21297,
+	4514, 25114, 16712, -10988, -26000, -10987, 16712, 25114,
+	4514, -21298, -22516, 2266, 24432, 18384, -8892, -25901,
+	-12999, 14913, 25604, 6729, -19917, -23563, 0, 23564,
+	19917, -6729, -25605, -14912, 13000, 25901, 8892, -18384,
+	-24431, -2265, 22516, 21297, -4515, -25114, -16712, 10988,
+	26000, 10987, -16712, -25114, -4514, 21298, 22516, -2266,
+	-24432, -18384, 8892, 25901, 12999, -14913, -25604, -6729,
+	19917, 23563, 0, -23564, -19916, 6729, 25605, 14912,
+	-13000, -25901, -8892, 18385, 24431, 2265, -22516, -21297,
+	4515, 25114, 16712, -10988, -26000, -10987, 16712, 25113,
+	4514, -21298, -22516, 2266, 24432, 18384, -8892, -25901,
+	-12999, 14913, 25604, 6728, -19917, -23563, 0, 23564,
+	19916, -6729, -25605, -14912, 13000, 25901, 8892, -18385,
+	-24431, -2265, 22516, 21297, -4515, -25114, -16712, 10988,
+	26000, 10987, -16712, -25113, -4514, 21298, 22516, -2266,
+	-24432, -18384, 8893, 25901, 12999, -14913, -25604, -6728,
+	19917, 23563, 0, -23564, -19916, 6729, 25605, 14912,
+	-13000, -25901, -8891, 18385, 24431, 2265, -22516, -21297,
+	4515, 25114, 16712, -10988, -26000, -10987, 16712, 25113,
+	4514, -21298, -22516, 2266, 24432, 18384, -8893, -25901,
+	-12999, 14913, 25604, 6728, -19917, -23563, 0, 23564,
+	19916, -6729, -25605, -14912, 13000, 25901, 8891, -18385,
+	-24431, -2265, 22517, 21297, -4515, -25114, -16711, 10988},
+	{
+// Carrier 33 Phase 5
+	24020, 1134, -23062, -20627, 5627, 25383, 15827, -12005,
+	-25975, -9949, 17565, 24796, 3393, -21928, -21928, 3393,
+	24796, 17565, -9949, -25975, -12005, 15827, 25383, 5627,
+	-20627, -23062, 1134, 24020, 19169, -7818, -25777, -13969,
+	13969, 25777, 7818, -19169, -24020, -1133, 23062, 20627,
+	-5627, -25383, -15827, 12005, 25975, 9949, -17565, -24796,
+	-3393, 21928, 21928, -3393, -24796, -17565, 9949, 25975,
+	12005, -15827, -25383, -5627, 20627, 23062, -1134, -24020,
+	-19169, 7818, 25777, 13969, -13969, -25777, -7818, 19169,
+	24020, 1133, -23062, -20627, 5627, 25383, 15827, -12005,
+	-25975, -9949, 17565, 24796, 3393, -21928, -21928, 3393,
+	24796, 17565, -9950, -25975, -12005, 15828, 25383, 5627,
+	-20627, -23062, 1134, 24020, 19168, -7818, -25777, -13969,
+	13970, 25777, 7818, -19169, -24020, -1133, 23062, 20626,
+	-5627, -25383, -15827, 12005, 25975, 9949, -17565, -24796,
+	-3393, 21928, 21927, -3394, -24796, -17565, 9950, 25975,
+	12005, -15828, -25383, -5627, 20627, 23062, -1134, -24021,
+	-19168, 7818, 25777, 13969, -13970, -25777, -7817, 19169,
+	24020, 1133, -23062, -20626, 5627, 25383, 15827, -12005,
+	-25975, -9949, 17565, 24796, 3393, -21928, -21927, 3394,
+	24796, 17564, -9950, -25975, -12004, 15828, 25383, 5626,
+	-20627, -23062, 1134, 24021, 19168, -7818, -25777, -13969,
+	13970, 25777, 7817, -19169, -24020, -1133, 23062, 20626,
+	-5628, -25383, -15827, 12006, 25975, 9949, -17565, -24796,
+	-3393, 21928, 21927, -3394, -24796, -17564, 9950, 25975,
+	12004, -15828, -25383, -5626, 20627, 23061, -1134, -24021,
+	-19168, 7819, 25777, 13969, -13970, -25777, -7817, 19169},
+	{
+// Carrier 33 Phase 6
+	18384, -8892, -25901, -13000, 14912, 25604, 6729, -19917,
+	-23563, 0, 23564, 19917, -6729, -25605, -14912, 13000,
+	25901, 8892, -18384, -24431, -2265, 22516, 21297, -4514,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25114, -4514,
+	21298, 22516, -2266, -24432, -18384, 8892, 25901, 12999,
+	-14913, -25604, -6729, 19917, 23563, 0, -23564, -19917,
+	6729, 25605, 14912, -13000, -25901, -8892, 18384, 24431,
+	2265, -22516, -21297, 4515, 25114, 16712, -10988, -26000,
+	-10987, 16712, 25114, 4514, -21298, -22516, 2266, 24432,
+	18384, -8892, -25901, -12999, 14913, 25604, 6729, -19917,
+	-23563, 0, 23564, 19916, -6729, -25605, -14912, 13000,
+	25901, 8892, -18384, -24431, -2265, 22516, 21297, -4515,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25113, -4514,
+	21298, 22516, -2266, -24432, -18384, 8892, 25901, 12999,
+	-14913, -25604, -6728, 19917, 23563, 0, -23564, -19916,
+	6729, 25605, 14912, -13000, -25901, -8892, 18385, 24431,
+	2265, -22516, -21297, 4515, 25114, 16712, -10988, -26000,
+	-10987, 16712, 25113, 4514, -21298, -22516, 2266, 24432,
+	18384, -8892, -25901, -12999, 14913, 25604, 6728, -19917,
+	-23563, 0, 23564, 19916, -6729, -25605, -14912, 13000,
+	25901, 8892, -18385, -24431, -2265, 22516, 21297, -4515,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25113, -4514,
+	21298, 22516, -2266, -24432, -18384, 8893, 25901, 12999,
+	-14913, -25604, -6728, 19917, 23563, 0, -23564, -19916,
+	6729, 25605, 14912, -13000, -25901, -8891, 18385, 24431,
+	2265, -22516, -21297, 4515, 25114, 16711, -10988, -26000,
+	-10987, 16713, 25113, 4514, -21298, -22516, 2266, 24432},
+	{
+// Carrier 33 Phase 7
+	9949, -17565, -24796, -3393, 21928, 21928, -3393, -24796,
+	-17565, 9949, 25975, 12005, -15827, -25383, -5627, 20627,
+	23062, -1134, -24020, -19169, 7818, 25777, 13969, -13969,
+	-25777, -7818, 19169, 24020, 1134, -23062, -20627, 5627,
+	25383, 15827, -12005, -25975, -9949, 17565, 24796, 3393,
+	-21928, -21928, 3393, 24796, 17565, -9949, -25975, -12005,
+	15827, 25383, 5627, -20627, -23062, 1134, 24020, 19169,
+	-7818, -25777, -13969, 13969, 25777, 7818, -19169, -24020,
+	-1133, 23062, 20627, -5627, -25383, -15827, 12005, 25975,
+	9949, -17565, -24796, -3393, 21928, 21928, -3393, -24796,
+	-17565, 9950, 25975, 12005, -15828, -25383, -5627, 20627,
+	23062, -1134, -24020, -19169, 7818, 25777, 13969, -13970,
+	-25777, -7818, 19169, 24020, 1133, -23062, -20626, 5627,
+	25383, 15827, -12005, -25975, -9949, 17565, 24796, 3393,
+	-21928, -21927, 3394, 24796, 17565, -9950, -25975, -12005,
+	15828, 25383, 5627, -20627, -23062, 1134, 24021, 19168,
+	-7818, -25777, -13969, 13970, 25777, 7817, -19169, -24020,
+	-1133, 23062, 20626, -5627, -25383, -15827, 12005, 25975,
+	9949, -17565, -24796, -3393, 21928, 21927, -3394, -24796,
+	-17564, 9950, 25975, 12004, -15828, -25383, -5626, 20627,
+	23062, -1134, -24021, -19168, 7818, 25777, 13969, -13970,
+	-25777, -7817, 19169, 24020, 1133, -23062, -20626, 5628,
+	25383, 15827, -12005, -25975, -9949, 17565, 24796, 3393,
+	-21928, -21927, 3394, 24796, 17564, -9950, -25975, -12004,
+	15828, 25383, 5626, -20627, -23061, 1134, 24021, 19168,
+	-7818, -25777, -13969, 13970, 25777, 7817, -19169, -24020,
+	-1133, 23062, 20626, -5628, -25383, -15827, 12006, 25975},
+	},{{
+
+// Carrier 34 Phase 0
+	0, 23873, 18911, -8892, -25956, -11668, 16712, 24907,
+	3018, -22516, -20855, 5996, 25605, 14287, -14287, -25605,
+	-5996, 20855, 22516, -3018, -24907, -16712, 11668, 25956,
+	8892, -18911, -23873, 0, 23873, 18911, -8892, -25956,
+	-11668, 16712, 24907, 3018, -22516, -20855, 5995, 25604,
+	14287, -14287, -25605, -5996, 20855, 22516, -3018, -24907,
+	-16712, 11668, 25956, 8892, -18911, -23873, 0, 23873,
+	18911, -8892, -25956, -11668, 16712, 24907, 3018, -22516,
+	-20855, 5995, 25604, 14287, -14287, -25605, -5996, 20855,
+	22516, -3018, -24907, -16712, 11668, 25956, 8892, -18911,
+	-23873, 0, 23873, 18911, -8892, -25956, -11668, 16712,
+	24907, 3018, -22516, -20855, 5995, 25604, 14287, -14287,
+	-25605, -5996, 20855, 22516, -3018, -24907, -16712, 11668,
+	25956, 8892, -18911, -23873, 0, 23873, 18911, -8892,
+	-25956, -11668, 16712, 24907, 3018, -22516, -20855, 5995,
+	25604, 14287, -14287, -25605, -5996, 20855, 22516, -3018,
+	-24907, -16712, 11668, 25956, 8892, -18911, -23873, 0,
+	23873, 18911, -8892, -25956, -11668, 16712, 24907, 3018,
+	-22516, -20855, 5995, 25604, 14287, -14287, -25605, -5996,
+	20855, 22516, -3018, -24907, -16712, 11668, 25956, 8892,
+	-18911, -23873, 0, 23873, 18911, -8892, -25956, -11668,
+	16712, 24907, 3018, -22516, -20855, 5995, 25604, 14287,
+	-14287, -25605, -5996, 20855, 22516, -3018, -24907, -16712,
+	11668, 25956, 8892, -18911, -23873, 0, 23873, 18911,
+	-8892, -25956, -11668, 16712, 24907, 3018, -22516, -20855,
+	5995, 25604, 14287, -14287, -25605, -5996, 20855, 22516,
+	-3018, -24907, -16712, 11668, 25956, 8892, -18911, -23873},
+	{
+// Carrier 34 Phase 1
+	9949, 25997, 10644, -17565, -24558, -1889, 23062, 20158,
+	-7093, -25777, -13326, 15221, 25383, 4886, -21512, -21928,
+	4141, 25209, 15827, -12671, -25865, -7818, 19671, 23401,
+	-1134, -24300, -18115, 9949, 25997, 10644, -17565, -24558,
+	-1889, 23062, 20158, -7093, -25777, -13326, 15221, 25383,
+	4886, -21512, -21928, 4141, 25209, 15827, -12671, -25865,
+	-7818, 19671, 23401, -1134, -24300, -18115, 9949, 25997,
+	10644, -17565, -24558, -1889, 23062, 20158, -7093, -25777,
+	-13326, 15221, 25383, 4886, -21512, -21928, 4141, 25209,
+	15827, -12671, -25865, -7818, 19671, 23401, -1134, -24300,
+	-18115, 9949, 25997, 10644, -17565, -24558, -1889, 23062,
+	20158, -7093, -25777, -13326, 15221, 25383, 4886, -21512,
+	-21928, 4141, 25209, 15827, -12671, -25865, -7818, 19671,
+	23401, -1134, -24300, -18115, 9949, 25997, 10644, -17565,
+	-24558, -1889, 23062, 20158, -7093, -25777, -13326, 15221,
+	25383, 4886, -21512, -21928, 4141, 25209, 15827, -12671,
+	-25865, -7818, 19671, 23401, -1134, -24300, -18115, 9949,
+	25997, 10644, -17565, -24558, -1889, 23062, 20158, -7093,
+	-25777, -13326, 15221, 25383, 4886, -21512, -21928, 4141,
+	25209, 15827, -12671, -25865, -7818, 19671, 23401, -1134,
+	-24300, -18115, 9949, 25997, 10644, -17565, -24558, -1889,
+	23062, 20158, -7093, -25777, -13326, 15221, 25383, 4886,
+	-21512, -21928, 4141, 25209, 15827, -12671, -25865, -7818,
+	19671, 23401, -1134, -24300, -18115, 9949, 25997, 10644,
+	-17565, -24558, -1889, 23062, 20158, -7093, -25777, -13326,
+	15221, 25383, 4886, -21512, -21928, 4141, 25209, 15827,
+	-12671, -25865, -7818, 19671, 23401, -1134, -24300, -18115},
+	{
+// Carrier 34 Phase 2
+	18384, 24163, 756, -23563, -19422, 8178, 25901, 12339,
+	-16126, -25114, -3768, 22129, 21297, -5257, -25462, -14913,
+	13649, 25725, 6729, -20394, -22885, 2266, 24680, 17284,
+	-10988, -25989, -9599, 18384, 24163, 756, -23563, -19422,
+	8178, 25901, 12339, -16126, -25114, -3768, 22129, 21297,
+	-5257, -25462, -14913, 13649, 25725, 6729, -20394, -22885,
+	2266, 24680, 17284, -10988, -25989, -9599, 18384, 24163,
+	756, -23563, -19422, 8178, 25901, 12339, -16126, -25114,
+	-3768, 22129, 21297, -5257, -25462, -14913, 13649, 25725,
+	6729, -20394, -22885, 2266, 24680, 17284, -10988, -25989,
+	-9599, 18384, 24163, 756, -23563, -19422, 8178, 25901,
+	12339, -16126, -25114, -3768, 22129, 21297, -5257, -25462,
+	-14913, 13649, 25725, 6729, -20394, -22885, 2265, 24680,
+	17284, -10988, -25989, -9599, 18384, 24163, 756, -23563,
+	-19422, 8178, 25901, 12339, -16126, -25114, -3768, 22129,
+	21297, -5257, -25462, -14913, 13649, 25725, 6729, -20394,
+	-22885, 2265, 24680, 17284, -10988, -25989, -9599, 18384,
+	24163, 756, -23563, -19422, 8178, 25901, 12339, -16126,
+	-25114, -3768, 22128, 21297, -5257, -25462, -14913, 13649,
+	25725, 6729, -20394, -22885, 2265, 24680, 17284, -10988,
+	-25989, -9599, 18384, 24163, 756, -23563, -19422, 8178,
+	25901, 12339, -16126, -25114, -3768, 22128, 21298, -5257,
+	-25462, -14913, 13649, 25725, 6729, -20394, -22885, 2265,
+	24680, 17284, -10987, -25989, -9599, 18384, 24163, 756,
+	-23563, -19422, 8178, 25901, 12339, -16126, -25114, -3768,
+	22128, 21298, -5257, -25462, -14913, 13649, 25725, 6729,
+	-20394, -22885, 2265, 24680, 17284, -10987, -25989, -9599},
+	{
+// Carrier 34 Phase 3
+	24020, 18650, -9246, -25975, -11329, 17000, 24796, 2642,
+	-22703, -20627, 6363, 25667, 13969, -14601, -25536, -5627,
+	21078, 22325, -3393, -25013, -16421, 12005, 25931, 8536,
+	-19169, -23721, 378, 24020, 18650, -9246, -25975, -11329,
+	17000, 24796, 2642, -22703, -20627, 6363, 25667, 13969,
+	-14601, -25536, -5627, 21078, 22325, -3393, -25013, -16421,
+	12005, 25931, 8536, -19169, -23721, 378, 24020, 18650,
+	-9246, -25975, -11329, 17000, 24796, 2642, -22703, -20627,
+	6363, 25667, 13969, -14601, -25536, -5627, 21078, 22325,
+	-3393, -25013, -16421, 12005, 25931, 8536, -19169, -23721,
+	378, 24020, 18650, -9246, -25975, -11329, 17000, 24796,
+	2642, -22703, -20627, 6363, 25667, 13969, -14601, -25536,
+	-5627, 21078, 22325, -3393, -25013, -16421, 12005, 25931,
+	8536, -19169, -23721, 378, 24020, 18650, -9246, -25975,
+	-11329, 17000, 24796, 2642, -22703, -20627, 6363, 25667,
+	13969, -14601, -25536, -5627, 21078, 22325, -3393, -25013,
+	-16421, 12005, 25931, 8536, -19169, -23721, 378, 24020,
+	18650, -9246, -25975, -11329, 17000, 24796, 2642, -22703,
+	-20627, 6363, 25667, 13969, -14601, -25536, -5627, 21078,
+	22325, -3393, -25013, -16421, 12005, 25931, 8536, -19169,
+	-23721, 378, 24020, 18650, -9246, -25975, -11329, 17000,
+	24796, 2642, -22703, -20627, 6363, 25667, 13969, -14601,
+	-25536, -5627, 21078, 22325, -3393, -25013, -16421, 12005,
+	25931, 8536, -19169, -23721, 378, 24020, 18650, -9246,
+	-25975, -11329, 17000, 24796, 2642, -22703, -20627, 6363,
+	25667, 13969, -14601, -25536, -5627, 21078, 22325, -3393,
+	-25013, -16421, 12005, 25931, 8536, -19169, -23721, 378},
+	{
+// Carrier 34 Phase 4
+	26000, 10298, -17842, -24432, -1511, 23234, 19917, -7456,
+	-25824, -13000, 15526, 25299, 4514, -21722, -21722, 4514,
+	25299, 15526, -12999, -25824, -7456, 19917, 23234, -1511,
+	-24432, -17842, 10298, 26000, 10298, -17842, -24432, -1511,
+	23234, 19917, -7456, -25824, -13000, 15526, 25299, 4514,
+	-21722, -21722, 4514, 25299, 15526, -12999, -25824, -7456,
+	19917, 23234, -1511, -24432, -17842, 10298, 26000, 10298,
+	-17842, -24432, -1511, 23234, 19917, -7456, -25824, -13000,
+	15526, 25299, 4514, -21722, -21722, 4514, 25299, 15526,
+	-12999, -25824, -7456, 19917, 23234, -1511, -24431, -17842,
+	10298, 26000, 10298, -17842, -24432, -1511, 23234, 19917,
+	-7456, -25824, -13000, 15526, 25299, 4514, -21722, -21722,
+	4514, 25299, 15526, -12999, -25824, -7456, 19917, 23234,
+	-1511, -24431, -17842, 10298, 26000, 10298, -17842, -24432,
+	-1511, 23234, 19917, -7456, -25824, -13000, 15526, 25299,
+	4514, -21722, -21722, 4514, 25299, 15526, -12999, -25824,
+	-7456, 19917, 23234, -1511, -24431, -17842, 10298, 26000,
+	10298, -17842, -24432, -1511, 23234, 19917, -7456, -25824,
+	-13000, 15526, 25299, 4514, -21722, -21722, 4514, 25299,
+	15526, -12999, -25824, -7456, 19917, 23234, -1511, -24431,
+	-17842, 10298, 26000, 10298, -17842, -24432, -1511, 23234,
+	19917, -7456, -25824, -13000, 15526, 25299, 4514, -21722,
+	-21722, 4514, 25299, 15526, -12999, -25824, -7456, 19917,
+	23234, -1511, -24431, -17842, 10297, 26000, 10298, -17842,
+	-24432, -1511, 23234, 19917, -7456, -25824, -13000, 15526,
+	25299, 4514, -21722, -21722, 4514, 25299, 15526, -12999,
+	-25824, -7456, 19917, 23234, -1511, -24431, -17842, 10297},
+	{
+// Carrier 34 Phase 5
+	24020, 378, -23721, -19169, 8536, 25931, 12005, -16421,
+	-25013, -3393, 22325, 21078, -5627, -25536, -14601, 13969,
+	25667, 6363, -20627, -22703, 2642, 24796, 17000, -11329,
+	-25975, -9246, 18650, 24020, 378, -23721, -19169, 8536,
+	25931, 12005, -16421, -25013, -3393, 22325, 21078, -5627,
+	-25536, -14601, 13969, 25667, 6363, -20627, -22703, 2642,
+	24796, 17000, -11329, -25975, -9246, 18650, 24020, 378,
+	-23721, -19169, 8536, 25931, 12005, -16421, -25013, -3393,
+	22325, 21078, -5627, -25536, -14601, 13969, 25667, 6363,
+	-20627, -22703, 2642, 24796, 17000, -11329, -25975, -9246,
+	18650, 24020, 378, -23721, -19169, 8536, 25931, 12005,
+	-16421, -25013, -3393, 22325, 21078, -5627, -25536, -14601,
+	13969, 25667, 6363, -20627, -22703, 2642, 24796, 17000,
+	-11329, -25975, -9246, 18650, 24020, 378, -23721, -19169,
+	8536, 25931, 12005, -16420, -25013, -3393, 22325, 21078,
+	-5627, -25536, -14601, 13969, 25667, 6363, -20627, -22703,
+	2642, 24796, 17000, -11329, -25975, -9246, 18650, 24020,
+	378, -23721, -19169, 8536, 25931, 12005, -16420, -25013,
+	-3393, 22325, 21078, -5627, -25536, -14601, 13969, 25667,
+	6363, -20627, -22703, 2642, 24796, 17000, -11329, -25975,
+	-9246, 18650, 24020, 378, -23721, -19169, 8536, 25931,
+	12005, -16420, -25013, -3393, 22325, 21078, -5627, -25536,
+	-14601, 13969, 25667, 6363, -20627, -22703, 2642, 24796,
+	17000, -11329, -25975, -9247, 18650, 24020, 378, -23721,
+	-19169, 8536, 25931, 12005, -16420, -25013, -3393, 22325,
+	21078, -5627, -25536, -14601, 13969, 25667, 6363, -20627,
+	-22703, 2642, 24796, 17000, -11329, -25975, -9247, 18650},
+	{
+// Carrier 34 Phase 6
+	18384, -9599, -25989, -10988, 17284, 24680, 2266, -22885,
+	-20394, 6729, 25725, 13649, -14912, -25462, -5257, 21297,
+	22129, -3768, -25114, -16126, 12339, 25901, 8178, -19422,
+	-23564, 756, 24163, 18384, -9599, -25989, -10988, 17284,
+	24680, 2266, -22885, -20394, 6729, 25725, 13649, -14912,
+	-25462, -5257, 21297, 22129, -3768, -25114, -16126, 12339,
+	25901, 8178, -19422, -23564, 756, 24163, 18384, -9599,
+	-25989, -10988, 17284, 24680, 2266, -22885, -20394, 6729,
+	25725, 13649, -14912, -25462, -5257, 21297, 22129, -3768,
+	-25114, -16126, 12339, 25901, 8178, -19422, -23564, 756,
+	24163, 18384, -9599, -25989, -10988, 17284, 24680, 2266,
+	-22885, -20394, 6729, 25725, 13649, -14912, -25462, -5257,
+	21297, 22129, -3768, -25114, -16126, 12339, 25901, 8178,
+	-19422, -23564, 756, 24163, 18384, -9599, -25988, -10988,
+	17284, 24680, 2266, -22885, -20394, 6729, 25725, 13649,
+	-14912, -25462, -5257, 21297, 22129, -3768, -25114, -16126,
+	12339, 25901, 8178, -19422, -23564, 756, 24163, 18384,
+	-9599, -25988, -10988, 17284, 24680, 2266, -22885, -20394,
+	6729, 25725, 13649, -14912, -25462, -5257, 21297, 22129,
+	-3768, -25114, -16126, 12339, 25901, 8178, -19422, -23564,
+	756, 24163, 18384, -9599, -25988, -10988, 17284, 24680,
+	2266, -22885, -20394, 6729, 25725, 13649, -14912, -25462,
+	-5257, 21297, 22129, -3768, -25114, -16126, 12339, 25901,
+	8178, -19422, -23564, 756, 24163, 18384, -9599, -25988,
+	-10988, 17284, 24680, 2266, -22885, -20394, 6729, 25725,
+	13649, -14912, -25462, -5257, 21297, 22129, -3768, -25114,
+	-16126, 12339, 25901, 8178, -19422, -23564, 756, 24162},
+	{
+// Carrier 34 Phase 7
+	9949, -18115, -24300, -1134, 23401, 19671, -7818, -25865,
+	-12671, 15827, 25209, 4141, -21928, -21512, 4886, 25383,
+	15221, -13326, -25777, -7093, 20158, 23062, -1889, -24558,
+	-17565, 10644, 25997, 9949, -18115, -24300, -1134, 23401,
+	19671, -7818, -25865, -12671, 15827, 25209, 4141, -21928,
+	-21512, 4886, 25383, 15221, -13326, -25777, -7093, 20158,
+	23062, -1889, -24558, -17565, 10644, 25997, 9949, -18115,
+	-24300, -1134, 23401, 19671, -7818, -25865, -12671, 15827,
+	25209, 4142, -21928, -21512, 4886, 25383, 15221, -13326,
+	-25777, -7093, 20158, 23062, -1889, -24558, -17565, 10644,
+	25997, 9949, -18115, -24300, -1134, 23401, 19672, -7818,
+	-25865, -12671, 15827, 25209, 4142, -21928, -21512, 4886,
+	25383, 15221, -13326, -25777, -7093, 20158, 23062, -1889,
+	-24558, -17565, 10644, 25997, 9949, -18115, -24300, -1134,
+	23401, 19672, -7818, -25865, -12671, 15827, 25209, 4142,
+	-21928, -21512, 4886, 25383, 15221, -13326, -25777, -7093,
+	20158, 23062, -1889, -24558, -17565, 10644, 25997, 9949,
+	-18115, -24300, -1134, 23401, 19672, -7818, -25865, -12671,
+	15827, 25209, 4142, -21928, -21512, 4886, 25383, 15221,
+	-13326, -25777, -7093, 20158, 23062, -1889, -24558, -17565,
+	10644, 25997, 9949, -18115, -24300, -1134, 23401, 19672,
+	-7818, -25865, -12671, 15827, 25209, 4142, -21928, -21512,
+	4886, 25383, 15221, -13326, -25777, -7093, 20158, 23062,
+	-1889, -24558, -17565, 10644, 25997, 9949, -18115, -24300,
+	-1134, 23401, 19672, -7818, -25865, -12671, 15827, 25209,
+	4142, -21928, -21512, 4886, 25383, 15221, -13326, -25777,
+	-7093, 20158, 23062, -1889, -24558, -17565, 10644, 25997},
+	},{{
+
+// Carrier 35 Phase 0
+	0, 24163, 17842, -10988, -25956, -8178, 19917, 22885,
+	-3018, -25114, -15526, 13649, 25604, 5257, -21722, -21297,
+	5996, 25725, 12999, -16126, -24907, -2266, 23234, 19422,
+	-8892, -25989, -10298, 18384, 23873, -756, -24432, -17284,
+	11668, 25901, 7456, -20394, -22516, 3768, 25299, 14912,
+	-14287, -25462, -4514, 22129, 20855, -6729, -25824, -12339,
+	16712, 24680, 1511, -23564, -18911, 9599, 26000, 9599,
+	-18911, -23563, 1511, 24680, 16712, -12339, -25824, -6729,
+	20855, 22128, -4514, -25462, -14287, 14913, 25299, 3768,
+	-22516, -20394, 7457, 25901, 11668, -17284, -24431, -756,
+	23873, 18384, -10298, -25988, -8892, 19422, 23234, -2266,
+	-24907, -16125, 13000, 25725, 5995, -21298, -21722, 5257,
+	25605, 13649, -15526, -25114, -3018, 22885, 19917, -8178,
+	-25956, -10987, 17842, 24162, 0, -24163, -17842, 10988,
+	25955, 8177, -19917, -22885, 3018, 25114, 15525, -13649,
+	-25604, -5257, 21722, 21297, -5996, -25725, -12999, 16126,
+	24907, 2265, -23234, -19422, 8892, 25989, 10297, -18384,
+	-23873, 756, 24432, 17284, -11669, -25901, -7456, 20394,
+	22516, -3768, -25299, -14912, 14287, 25462, 4514, -22129,
+	-20855, 6729, 25824, 12339, -16712, -24680, -1511, 23564,
+	18911, -9599, -26000, -9599, 18911, 23563, -1512, -24680,
+	-16712, 12339, 25824, 6728, -20855, -22128, 4515, 25462,
+	14286, -14913, -25299, -3767, 22516, 20394, -7457, -25901,
+	-11668, 17284, 24431, 755, -23873, -18384, 10298, 25988,
+	8892, -19422, -23234, 2266, 24907, 16125, -13000, -25725,
+	-5995, 21298, 21722, -5258, -25605, -13649, 15526, 25113,
+	3018, -22885, -19916, 8178, 25956, 10987, -17842, -24162},
+	{
+// Carrier 35 Phase 1
+	9949, 25997, 9246, -19169, -23401, 1889, 24796, 16421,
+	-12671, -25777, -6363, 21078, 21928, -4886, -25536, -13969,
+	15221, 25209, 3393, -22703, -20158, 7818, 25931, 11329,
+	-17565, -24300, -378, 24020, 18115, -10644, -25975, -8536,
+	19672, 23062, -2642, -25013, -15827, 13326, 25667, 5627,
+	-21512, -21512, 5627, 25667, 13326, -15827, -25013, -2642,
+	23062, 19671, -8536, -25975, -10644, 18115, 24020, -378,
+	-24300, -17565, 11329, 25931, 7818, -20158, -22703, 3393,
+	25209, 15221, -13969, -25536, -4886, 21928, 21078, -6363,
+	-25777, -12671, 16421, 24796, 1888, -23401, -19169, 9247,
+	25997, 9949, -18650, -23721, 1134, 24558, 17000, -12005,
+	-25865, -7093, 20627, 22325, -4142, -25383, -14601, 14601,
+	25383, 4141, -22325, -20627, 7094, 25865, 12005, -17000,
+	-24558, -1133, 23721, 18650, -9949, -25997, -9246, 19169,
+	23401, -1889, -24796, -16420, 12671, 25777, 6363, -21078,
+	-21928, 4887, 25536, 13969, -15221, -25209, -3393, 22703,
+	20157, -7818, -25931, -11329, 17565, 24299, 377, -24020,
+	-18115, 10644, 25975, 8535, -19672, -23062, 2642, 25013,
+	15827, -13326, -25667, -5627, 21512, 21512, -5627, -25668,
+	-13325, 15828, 25013, 2642, -23062, -19671, 8536, 25975,
+	10643, -18115, -24020, 378, 24300, 17565, -11329, -25931,
+	-7818, 20158, 22703, -3394, -25209, -15220, 13970, 25536,
+	4886, -21928, -21078, 6363, 25777, 12670, -16421, -24796,
+	-1888, 23401, 19168, -9247, -25997, -9949, 18650, 23721,
+	-1134, -24558, -17000, 12005, 25865, 7093, -20627, -22325,
+	4142, 25383, 14601, -14601, -25383, -4141, 22325, 20626,
+	-7094, -25865, -12005, 17000, 24558, 1133, -23721, -18649},
+	{
+// Carrier 35 Phase 2
+	18384, 23873, -756, -24432, -17284, 11668, 25901, 7456,
+	-20394, -22516, 3768, 25299, 14912, -14287, -25462, -4514,
+	22129, 20855, -6729, -25824, -12339, 16712, 24680, 1511,
+	-23564, -18911, 9599, 26000, 9599, -18911, -23563, 1511,
+	24680, 16712, -12339, -25824, -6729, 20855, 22128, -4514,
+	-25462, -14287, 14913, 25299, 3768, -22516, -20394, 7456,
+	25901, 11668, -17284, -24431, -756, 23873, 18384, -10298,
+	-25988, -8892, 19422, 23234, -2266, -24907, -16126, 13000,
+	25725, 5995, -21298, -21722, 5257, 25605, 13649, -15526,
+	-25114, -3018, 22885, 19917, -8178, -25956, -10987, 17842,
+	24162, 0, -24163, -17842, 10988, 25956, 8178, -19917,
+	-22885, 3018, 25114, 15525, -13649, -25604, -5257, 21722,
+	21297, -5996, -25725, -12999, 16126, 24907, 2265, -23234,
+	-19422, 8892, 25989, 10297, -18384, -23873, 756, 24432,
+	17284, -11668, -25901, -7456, 20394, 22516, -3768, -25299,
+	-14912, 14287, 25462, 4514, -22129, -20855, 6729, 25824,
+	12339, -16712, -24680, -1511, 23564, 18911, -9599, -26000,
+	-9599, 18911, 23563, -1512, -24680, -16712, 12339, 25824,
+	6729, -20855, -22128, 4515, 25462, 14286, -14913, -25299,
+	-3767, 22516, 20394, -7457, -25901, -11668, 17284, 24431,
+	755, -23873, -18384, 10298, 25988, 8892, -19422, -23234,
+	2266, 24907, 16125, -13000, -25725, -5995, 21298, 21722,
+	-5257, -25605, -13649, 15526, 25113, 3018, -22885, -19916,
+	8178, 25956, 10987, -17842, -24162, 0, 24163, 17842,
+	-10988, -25955, -8177, 19917, 22885, -3018, -25114, -15525,
+	13649, 25604, 5257, -21722, -21297, 5996, 25725, 12999,
+	-16126, -24907, -2265, 23234, 19422, -8892, -25989, -10297},
+	{
+// Carrier 35 Phase 3
+	24020, 18115, -10644, -25975, -8536, 19671, 23062, -2642,
+	-25013, -15827, 13326, 25667, 5627, -21512, -21512, 5627,
+	25667, 13326, -15827, -25013, -2642, 23062, 19671, -8536,
+	-25975, -10644, 18115, 24020, -378, -24300, -17565, 11329,
+	25931, 7818, -20158, -22703, 3393, 25209, 15221, -13969,
+	-25536, -4886, 21928, 21078, -6363, -25777, -12671, 16421,
+	24796, 1889, -23401, -19169, 9247, 25997, 9949, -18650,
+	-23721, 1134, 24558, 17000, -12005, -25865, -7093, 20627,
+	22325, -4142, -25383, -14601, 14601, 25383, 4141, -22325,
+	-20627, 7093, 25865, 12005, -17000, -24558, -1133, 23721,
+	18650, -9949, -25997, -9246, 19169, 23401, -1889, -24796,
+	-16420, 12671, 25777, 6363, -21078, -21928, 4886, 25536,
+	13969, -15221, -25209, -3393, 22703, 20157, -7818, -25931,
+	-11329, 17565, 24300, 377, -24020, -18115, 10644, 25975,
+	8536, -19672, -23062, 2642, 25013, 15827, -13326, -25667,
+	-5627, 21512, 21512, -5627, -25667, -13325, 15828, 25013,
+	2642, -23062, -19671, 8536, 25975, 10643, -18115, -24020,
+	378, 24300, 17565, -11329, -25931, -7818, 20158, 22703,
+	-3393, -25209, -15220, 13970, 25536, 4886, -21928, -21078,
+	6363, 25777, 12670, -16421, -24796, -1888, 23401, 19168,
+	-9247, -25997, -9949, 18650, 23721, -1134, -24558, -17000,
+	12005, 25865, 7093, -20627, -22325, 4142, 25383, 14601,
+	-14601, -25383, -4141, 22325, 20626, -7094, -25865, -12005,
+	17000, 24558, 1133, -23721, -18649, 9950, 25997, 9246,
+	-19169, -23401, 1889, 24796, 16420, -12671, -25777, -6362,
+	21079, 21927, -4887, -25536, -13969, 15221, 25209, 3393,
+	-22703, -20157, 7818, 25931, 11329, -17565, -24299, -377},
+	{
+// Carrier 35 Phase 4
+	26000, 9599, -18911, -23564, 1511, 24680, 16712, -12339,
+	-25824, -6729, 20855, 22129, -4514, -25462, -14287, 14913,
+	25299, 3768, -22516, -20394, 7456, 25901, 11668, -17284,
+	-24431, -756, 23873, 18384, -10298, -25988, -8892, 19422,
+	23234, -2266, -24907, -16126, 13000, 25725, 5995, -21297,
+	-21722, 5257, 25605, 13649, -15526, -25114, -3018, 22885,
+	19917, -8178, -25956, -10987, 17842, 24162, 0, -24163,
+	-17842, 10988, 25956, 8178, -19917, -22885, 3018, 25114,
+	15526, -13649, -25604, -5257, 21722, 21297, -5996, -25725,
+	-12999, 16126, 24907, 2265, -23234, -19422, 8892, 25989,
+	10297, -18384, -23873, 756, 24432, 17284, -11668, -25901,
+	-7456, 20394, 22516, -3768, -25299, -14912, 14287, 25462,
+	4514, -22129, -20855, 6729, 25824, 12339, -16712, -24680,
+	-1511, 23564, 18911, -9599, -26000, -9599, 18911, 23563,
+	-1511, -24680, -16712, 12339, 25824, 6729, -20855, -22128,
+	4515, 25462, 14287, -14913, -25299, -3767, 22516, 20394,
+	-7457, -25901, -11668, 17284, 24431, 755, -23873, -18384,
+	10298, 25988, 8892, -19422, -23234, 2266, 24907, 16125,
+	-13000, -25725, -5995, 21298, 21722, -5257, -25605, -13649,
+	15526, 25113, 3018, -22885, -19916, 8178, 25956, 10987,
+	-17842, -24162, 0, 24163, 17842, -10988, -25955, -8177,
+	19917, 22885, -3018, -25114, -15525, 13649, 25604, 5257,
+	-21722, -21297, 5996, 25725, 12999, -16126, -24907, -2265,
+	23234, 19422, -8892, -25989, -10297, 18385, 23873, -756,
+	-24432, -17284, 11669, 25901, 7456, -20395, -22516, 3768,
+	25299, 14912, -14287, -25462, -4514, 22129, 20854, -6729,
+	-25824, -12339, 16712, 24680, 1511, -23564, -18911, 9599},
+	{
+// Carrier 35 Phase 5
+	24020, -378, -24300, -17565, 11329, 25931, 7818, -20158,
+	-22703, 3393, 25209, 15221, -13969, -25536, -4886, 21928,
+	21078, -6363, -25777, -12671, 16421, 24796, 1889, -23401,
+	-19169, 9246, 25997, 9949, -18650, -23721, 1134, 24558,
+	17000, -12005, -25865, -7093, 20627, 22325, -4142, -25383,
+	-14601, 14601, 25383, 4141, -22325, -20627, 7093, 25865,
+	12005, -17000, -24558, -1134, 23721, 18650, -9949, -25997,
+	-9246, 19169, 23401, -1889, -24796, -16420, 12671, 25777,
+	6363, -21078, -21928, 4886, 25536, 13969, -15221, -25209,
+	-3393, 22703, 20158, -7818, -25931, -11329, 17565, 24300,
+	377, -24020, -18115, 10644, 25975, 8536, -19672, -23062,
+	2642, 25013, 15827, -13326, -25667, -5627, 21512, 21512,
+	-5627, -25667, -13325, 15827, 25013, 2642, -23062, -19671,
+	8536, 25975, 10644, -18115, -24020, 378, 24300, 17565,
+	-11329, -25931, -7818, 20158, 22703, -3393, -25209, -15220,
+	13969, 25536, 4886, -21928, -21078, 6363, 25777, 12670,
+	-16421, -24796, -1888, 23401, 19169, -9247, -25997, -9949,
+	18650, 23721, -1134, -24558, -17000, 12005, 25865, 7093,
+	-20627, -22325, 4142, 25383, 14601, -14601, -25383, -4141,
+	22325, 20627, -7094, -25865, -12005, 17000, 24558, 1133,
+	-23721, -18650, 9950, 25997, 9246, -19169, -23401, 1889,
+	24796, 16420, -12671, -25777, -6363, 21078, 21928, -4887,
+	-25536, -13969, 15221, 25209, 3393, -22703, -20157, 7818,
+	25931, 11329, -17565, -24299, -377, 24021, 18115, -10644,
+	-25975, -8535, 19672, 23062, -2642, -25013, -15827, 13326,
+	25667, 5627, -21512, -21512, 5627, 25668, 13325, -15828,
+	-25013, -2642, 23062, 19671, -8536, -25975, -10643, 18115},
+	{
+// Carrier 35 Phase 6
+	18384, -10298, -25989, -8892, 19422, 23234, -2266, -24907,
+	-16126, 13000, 25725, 5995, -21297, -21722, 5257, 25605,
+	13649, -15526, -25114, -3018, 22885, 19917, -8178, -25956,
+	-10988, 17842, 24163, 0, -24163, -17842, 10988, 25956,
+	8178, -19917, -22885, 3018, 25114, 15526, -13649, -25604,
+	-5257, 21722, 21297, -5996, -25725, -12999, 16126, 24907,
+	2265, -23234, -19422, 8892, 25989, 10297, -18384, -23873,
+	756, 24432, 17284, -11668, -25901, -7456, 20394, 22516,
+	-3768, -25299, -14912, 14287, 25462, 4514, -22129, -20855,
+	6729, 25824, 12339, -16712, -24680, -1511, 23564, 18911,
+	-9599, -26000, -9599, 18911, 23563, -1511, -24680, -16712,
+	12339, 25824, 6729, -20855, -22128, 4515, 25462, 14287,
+	-14913, -25299, -3768, 22516, 20394, -7457, -25901, -11668,
+	17284, 24431, 755, -23873, -18384, 10298, 25988, 8892,
+	-19422, -23234, 2266, 24907, 16125, -13000, -25725, -5995,
+	21298, 21722, -5257, -25605, -13649, 15526, 25114, 3018,
+	-22885, -19916, 8178, 25956, 10987, -17842, -24162, 0,
+	24163, 17842, -10988, -25955, -8177, 19917, 22885, -3018,
+	-25114, -15525, 13649, 25604, 5257, -21722, -21297, 5996,
+	25725, 12999, -16126, -24907, -2265, 23234, 19422, -8892,
+	-25989, -10297, 18385, 23873, -756, -24432, -17284, 11669,
+	25901, 7456, -20395, -22516, 3768, 25299, 14912, -14287,
+	-25462, -4514, 22129, 20854, -6729, -25824, -12339, 16712,
+	24680, 1511, -23564, -18911, 9599, 26000, 9599, -18911,
+	-23563, 1512, 24680, 16712, -12339, -25824, -6728, 20855,
+	22128, -4515, -25462, -14286, 14913, 25299, 3767, -22516,
+	-20394, 7457, 25901, 11668, -17284, -24431, -755, 23873},
+	{
+// Carrier 35 Phase 7
+	9949, -18650, -23721, 1134, 24558, 17000, -12005, -25865,
+	-7093, 20627, 22325, -4141, -25383, -14601, 14601, 25383,
+	4141, -22325, -20627, 7093, 25865, 12005, -17000, -24558,
+	-1134, 23721, 18650, -9949, -25997, -9246, 19169, 23401,
+	-1889, -24796, -16420, 12671, 25777, 6363, -21078, -21928,
+	4886, 25536, 13969, -15221, -25209, -3393, 22703, 20158,
+	-7818, -25931, -11329, 17565, 24300, 378, -24020, -18115,
+	10644, 25975, 8536, -19672, -23062, 2642, 25013, 15827,
+	-13326, -25667, -5627, 21512, 21512, -5627, -25667, -13325,
+	15827, 25013, 2642, -23062, -19671, 8536, 25975, 10644,
+	-18115, -24020, 378, 24300, 17565, -11329, -25931, -7818,
+	20158, 22703, -3393, -25209, -15221, 13969, 25536, 4886,
+	-21928, -21078, 6363, 25777, 12670, -16421, -24796, -1888,
+	23401, 19169, -9247, -25997, -9949, 18650, 23721, -1134,
+	-24558, -17000, 12005, 25865, 7093, -20627, -22325, 4142,
+	25383, 14601, -14601, -25383, -4141, 22325, 20627, -7094,
+	-25865, -12005, 17000, 24558, 1133, -23721, -18650, 9950,
+	25997, 9246, -19169, -23401, 1889, 24796, 16420, -12671,
+	-25777, -6363, 21078, 21928, -4887, -25536, -13969, 15221,
+	25209, 3393, -22703, -20157, 7818, 25931, 11329, -17565,
+	-24299, -377, 24020, 18115, -10644, -25975, -8535, 19672,
+	23062, -2642, -25013, -15827, 13326, 25667, 5627, -21512,
+	-21512, 5627, 25668, 13325, -15828, -25013, -2642, 23062,
+	19671, -8536, -25975, -10643, 18115, 24020, -378, -24300,
+	-17565, 11329, 25931, 7817, -20158, -22703, 3394, 25209,
+	15220, -13970, -25536, -4886, 21928, 21078, -6363, -25777,
+	-12670, 16421, 24796, 1888, -23401, -19168, 9247, 25997},
+	},{{
+
+// Carrier 36 Phase 0
+	0, 24432, 16712, -12999, -25605, -4514, 22516, 19917,
+	-8892, -26000, -8892, 19917, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4514,
+	-22516, -19917, 8892, 26000, 8892, -19917, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4514, 22516, 19917, -8892, -26000, -8892, 19917,
+	22516, -4514, -25604, -13000, 16712, 24432, 0, -24431,
+	-16712, 12999, 25605, 4515, -22516, -19917, 8892, 26000,
+	8892, -19917, -22516, 4514, 25604, 13000, -16712, -24432,
+	0, 24431, 16712, -12999, -25605, -4515, 22516, 19917,
+	-8892, -26000, -8892, 19916, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4515,
+	-22516, -19917, 8892, 26000, 8892, -19916, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4515, 22516, 19917, -8892, -26000, -8892, 19916,
+	22516, -4514, -25604, -13000, 16712, 24432, 0, -24431,
+	-16712, 12999, 25605, 4515, -22516, -19917, 8892, 26000,
+	8892, -19916, -22516, 4514, 25604, 13000, -16712, -24432,
+	0, 24431, 16712, -12999, -25605, -4515, 22516, 19917,
+	-8892, -26000, -8893, 19916, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4515,
+	-22516, -19917, 8891, 26000, 8893, -19916, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4515, 22516, 19917, -8891, -26000, -8893, 19916,
+	22516, -4514, -25604, -13000, 16711, 24432, 0, -24431,
+	-16713, 12999, 25605, 4515, -22516, -19917, 8891, 26000,
+	8893, -19916, -22517, 4514, 25604, 13000, -16711, -24432},
+	{
+// Carrier 36 Phase 1
+	9949, 25975, 7818, -20627, -21928, 5627, 25777, 12005,
+	-17565, -24020, 1134, 24796, 15827, -13969, -25383, -3393,
+	23062, 19169, -9949, -25975, -7818, 20627, 21928, -5627,
+	-25777, -12005, 17565, 24020, -1134, -24796, -15827, 13969,
+	25383, 3393, -23062, -19169, 9949, 25975, 7818, -20627,
+	-21928, 5627, 25777, 12005, -17565, -24020, 1133, 24796,
+	15827, -13969, -25383, -3393, 23062, 19169, -9949, -25975,
+	-7818, 20627, 21928, -5627, -25777, -12005, 17565, 24020,
+	-1133, -24796, -15827, 13969, 25383, 3393, -23062, -19169,
+	9949, 25975, 7818, -20627, -21928, 5627, 25777, 12005,
+	-17565, -24020, 1133, 24796, 15828, -13969, -25383, -3393,
+	23062, 19169, -9949, -25975, -7818, 20627, 21928, -5627,
+	-25777, -12005, 17565, 24020, -1133, -24796, -15828, 13969,
+	25383, 3394, -23062, -19169, 9949, 25975, 7818, -20626,
+	-21928, 5627, 25777, 12005, -17565, -24021, 1133, 24796,
+	15828, -13969, -25383, -3394, 23062, 19169, -9949, -25975,
+	-7818, 20626, 21928, -5627, -25777, -12005, 17565, 24021,
+	-1133, -24796, -15828, 13969, 25383, 3394, -23062, -19169,
+	9949, 25975, 7818, -20626, -21928, 5626, 25777, 12005,
+	-17564, -24021, 1133, 24796, 15828, -13969, -25383, -3394,
+	23062, 19169, -9949, -25975, -7818, 20626, 21928, -5626,
+	-25777, -12005, 17564, 24021, -1133, -24796, -15828, 13969,
+	25383, 3394, -23062, -19169, 9949, 25975, 7818, -20626,
+	-21928, 5626, 25777, 12005, -17564, -24021, 1133, 24796,
+	15828, -13969, -25383, -3394, 23062, 19169, -9949, -25975,
+	-7818, 20626, 21928, -5626, -25777, -12006, 17564, 24021,
+	-1133, -24796, -15828, 13969, 25383, 3394, -23061, -19169},
+	{
+// Carrier 36 Phase 2
+	18384, 23564, -2266, -25114, -14913, 14912, 25114, 2266,
+	-23563, -18384, 10988, 25901, 6729, -21297, -21297, 6729,
+	25901, 10988, -18384, -23564, 2265, 25114, 14913, -14912,
+	-25114, -2266, 23563, 18384, -10988, -25901, -6729, 21297,
+	21298, -6729, -25901, -10988, 18384, 23564, -2265, -25114,
+	-14913, 14912, 25114, 2266, -23563, -18384, 10987, 25901,
+	6729, -21297, -21298, 6729, 25901, 10988, -18384, -23564,
+	2265, 25114, 14913, -14912, -25114, -2266, 23563, 18384,
+	-10987, -25901, -6729, 21297, 21298, -6729, -25901, -10988,
+	18384, 23564, -2265, -25114, -14913, 14912, 25114, 2266,
+	-23563, -18384, 10987, 25901, 6729, -21297, -21298, 6729,
+	25901, 10988, -18384, -23564, 2265, 25113, 14913, -14912,
+	-25114, -2266, 23563, 18385, -10987, -25901, -6729, 21297,
+	21298, -6728, -25901, -10988, 18384, 23564, -2265, -25113,
+	-14913, 14912, 25114, 2266, -23563, -18385, 10987, 25901,
+	6729, -21297, -21298, 6728, 25901, 10988, -18384, -23564,
+	2265, 25113, 14913, -14912, -25114, -2266, 23563, 18385,
+	-10987, -25901, -6729, 21297, 21298, -6728, -25901, -10988,
+	18384, 23564, -2265, -25113, -14913, 14912, 25114, 2266,
+	-23563, -18385, 10987, 25901, 6729, -21297, -21298, 6728,
+	25901, 10988, -18384, -23564, 2265, 25113, 14913, -14912,
+	-25114, -2266, 23563, 18385, -10987, -25901, -6729, 21297,
+	21298, -6728, -25901, -10988, 18384, 23564, -2265, -25113,
+	-14913, 14912, 25114, 2266, -23563, -18385, 10987, 25901,
+	6729, -21297, -21298, 6728, 25901, 10988, -18384, -23564,
+	2265, 25113, 14913, -14912, -25114, -2266, 23563, 18385,
+	-10987, -25901, -6729, 21297, 21298, -6728, -25900, -10988},
+	{
+// Carrier 36 Phase 3
+	24020, 17565, -12005, -25777, -5627, 21928, 20627, -7818,
+	-25975, -9949, 19169, 23062, -3393, -25383, -13969, 15827,
+	24796, 1134, -24020, -17565, 12005, 25777, 5627, -21928,
+	-20627, 7818, 25975, 9949, -19169, -23062, 3393, 25383,
+	13969, -15827, -24796, -1134, 24020, 17565, -12005, -25777,
+	-5627, 21928, 20627, -7818, -25975, -9949, 19169, 23062,
+	-3393, -25383, -13969, 15827, 24796, 1134, -24020, -17565,
+	12005, 25777, 5627, -21928, -20627, 7818, 25975, 9949,
+	-19169, -23062, 3393, 25383, 13969, -15827, -24796, -1134,
+	24020, 17565, -12005, -25777, -5627, 21928, 20627, -7818,
+	-25975, -9950, 19169, 23062, -3393, -25383, -13970, 15827,
+	24796, 1134, -24020, -17565, 12005, 25777, 5627, -21927,
+	-20627, 7818, 25975, 9950, -19168, -23062, 3393, 25383,
+	13970, -15827, -24796, -1134, 24020, 17565, -12005, -25777,
+	-5627, 21927, 20627, -7817, -25975, -9950, 19168, 23062,
+	-3393, -25383, -13970, 15827, 24796, 1134, -24020, -17565,
+	12005, 25777, 5627, -21927, -20627, 7817, 25975, 9950,
+	-19168, -23062, 3393, 25383, 13970, -15827, -24796, -1134,
+	24020, 17565, -12005, -25777, -5627, 21927, 20627, -7817,
+	-25975, -9950, 19168, 23062, -3393, -25383, -13970, 15827,
+	24796, 1134, -24020, -17565, 12004, 25777, 5628, -21927,
+	-20627, 7817, 25975, 9950, -19168, -23062, 3393, 25383,
+	13970, -15827, -24796, -1134, 24020, 17565, -12004, -25777,
+	-5628, 21927, 20627, -7817, -25975, -9950, 19168, 23062,
+	-3393, -25383, -13970, 15827, 24796, 1134, -24020, -17565,
+	12004, 25777, 5628, -21927, -20627, 7817, 25975, 9950,
+	-19168, -23062, 3392, 25383, 13970, -15827, -24796, -1134},
+	{
+// Carrier 36 Phase 4
+	26000, 8892, -19917, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4514, 22516,
+	19917, -8892, -26000, -8892, 19917, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4514, -22516, -19917, 8892, 26000, 8892, -19917, -22516,
+	4514, 25604, 13000, -16712, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8892, -26000, -8892,
+	19917, 22516, -4514, -25604, -13000, 16712, 24432, 0,
+	-24431, -16712, 12999, 25605, 4515, -22516, -19917, 8892,
+	26000, 8892, -19916, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4515, 22516,
+	19917, -8892, -26000, -8892, 19916, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4515, -22516, -19917, 8892, 26000, 8892, -19916, -22516,
+	4514, 25604, 13000, -16712, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8892, -26000, -8892,
+	19916, 22516, -4514, -25604, -13000, 16712, 24432, 0,
+	-24431, -16712, 12999, 25605, 4515, -22516, -19917, 8892,
+	26000, 8892, -19916, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4515, 22516,
+	19917, -8891, -26000, -8893, 19916, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4515, -22516, -19917, 8891, 26000, 8893, -19916, -22516,
+	4514, 25604, 13000, -16711, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8891, -26000, -8893,
+	19916, 22517, -4514, -25604, -13000, 16711, 24432, 0,
+	-24431, -16713, 12999, 25605, 4515, -22516, -19917, 8891},
+	{
+// Carrier 36 Phase 5
+	24020, -1134, -24796, -15827, 13969, 25383, 3393, -23062,
+	-19169, 9949, 25975, 7818, -20627, -21928, 5627, 25777,
+	12005, -17565, -24020, 1134, 24796, 15827, -13969, -25383,
+	-3393, 23062, 19169, -9949, -25975, -7818, 20627, 21928,
+	-5627, -25777, -12005, 17565, 24020, -1133, -24796, -15827,
+	13969, 25383, 3393, -23062, -19169, 9949, 25975, 7818,
+	-20627, -21928, 5627, 25777, 12005, -17565, -24020, 1133,
+	24796, 15827, -13969, -25383, -3393, 23062, 19169, -9949,
+	-25975, -7818, 20627, 21928, -5627, -25777, -12005, 17565,
+	24020, -1133, -24796, -15827, 13969, 25383, 3393, -23062,
+	-19169, 9949, 25975, 7818, -20627, -21928, 5627, 25777,
+	12005, -17565, -24020, 1133, 24796, 15828, -13969, -25383,
+	-3393, 23062, 19169, -9949, -25975, -7818, 20626, 21928,
+	-5627, -25777, -12005, 17565, 24021, -1133, -24796, -15828,
+	13969, 25383, 3394, -23062, -19169, 9949, 25975, 7818,
+	-20626, -21928, 5627, 25777, 12005, -17565, -24021, 1133,
+	24796, 15828, -13969, -25383, -3394, 23062, 19169, -9949,
+	-25975, -7818, 20626, 21928, -5626, -25777, -12005, 17565,
+	24021, -1133, -24796, -15828, 13969, 25383, 3394, -23062,
+	-19169, 9949, 25975, 7818, -20626, -21928, 5626, 25777,
+	12005, -17564, -24021, 1133, 24796, 15828, -13969, -25383,
+	-3394, 23062, 19169, -9949, -25975, -7818, 20626, 21928,
+	-5626, -25777, -12005, 17564, 24021, -1133, -24796, -15828,
+	13969, 25383, 3394, -23062, -19169, 9949, 25975, 7818,
+	-20626, -21928, 5626, 25777, 12006, -17564, -24021, 1133,
+	24796, 15828, -13969, -25383, -3394, 23061, 19169, -9949,
+	-25975, -7818, 20626, 21928, -5626, -25777, -12006, 17564},
+	{
+// Carrier 36 Phase 6
+	18384, -10988, -25901, -6729, 21297, 21297, -6729, -25901,
+	-10988, 18384, 23564, -2265, -25114, -14913, 14912, 25114,
+	2266, -23563, -18384, 10988, 25901, 6729, -21297, -21298,
+	6729, 25901, 10988, -18384, -23564, 2265, 25114, 14913,
+	-14912, -25114, -2266, 23563, 18384, -10987, -25901, -6729,
+	21297, 21298, -6729, -25901, -10988, 18384, 23564, -2265,
+	-25114, -14913, 14912, 25114, 2266, -23563, -18384, 10987,
+	25901, 6729, -21297, -21298, 6729, 25901, 10988, -18384,
+	-23564, 2265, 25114, 14913, -14912, -25114, -2266, 23563,
+	18384, -10987, -25901, -6729, 21297, 21298, -6729, -25901,
+	-10988, 18384, 23564, -2265, -25113, -14913, 14912, 25114,
+	2266, -23563, -18385, 10987, 25901, 6729, -21297, -21298,
+	6728, 25901, 10988, -18384, -23564, 2265, 25113, 14913,
+	-14912, -25114, -2266, 23563, 18385, -10987, -25901, -6729,
+	21297, 21298, -6728, -25901, -10988, 18384, 23564, -2265,
+	-25113, -14913, 14912, 25114, 2266, -23563, -18385, 10987,
+	25901, 6729, -21297, -21298, 6728, 25901, 10988, -18384,
+	-23564, 2265, 25113, 14913, -14912, -25114, -2266, 23563,
+	18385, -10987, -25901, -6729, 21297, 21298, -6728, -25901,
+	-10988, 18384, 23564, -2265, -25113, -14913, 14912, 25114,
+	2266, -23563, -18385, 10987, 25901, 6729, -21297, -21298,
+	6728, 25901, 10988, -18384, -23564, 2265, 25113, 14913,
+	-14912, -25114, -2266, 23563, 18385, -10987, -25901, -6729,
+	21297, 21298, -6728, -25901, -10988, 18384, 23564, -2265,
+	-25113, -14913, 14912, 25114, 2266, -23563, -18385, 10987,
+	25901, 6729, -21297, -21298, 6728, 25901, 10988, -18384,
+	-23564, 2265, 25113, 14913, -14912, -25114, -2266, 23563},
+	{
+// Carrier 36 Phase 7
+	9949, -19169, -23062, 3393, 25383, 13969, -15827, -24796,
+	-1134, 24020, 17565, -12005, -25777, -5627, 21928, 20627,
+	-7818, -25975, -9949, 19169, 23062, -3393, -25383, -13969,
+	15827, 24796, 1134, -24020, -17565, 12005, 25777, 5627,
+	-21928, -20627, 7818, 25975, 9949, -19169, -23062, 3393,
+	25383, 13969, -15827, -24796, -1134, 24020, 17565, -12005,
+	-25777, -5627, 21928, 20627, -7818, -25975, -9949, 19169,
+	23062, -3393, -25383, -13969, 15827, 24796, 1134, -24020,
+	-17565, 12005, 25777, 5627, -21928, -20627, 7818, 25975,
+	9949, -19169, -23062, 3393, 25383, 13970, -15827, -24796,
+	-1134, 24020, 17565, -12005, -25777, -5627, 21928, 20627,
+	-7818, -25975, -9950, 19168, 23062, -3393, -25383, -13970,
+	15827, 24796, 1134, -24020, -17565, 12005, 25777, 5627,
+	-21927, -20627, 7818, 25975, 9950, -19168, -23062, 3393,
+	25383, 13970, -15827, -24796, -1134, 24020, 17565, -12005,
+	-25777, -5627, 21927, 20627, -7817, -25975, -9950, 19168,
+	23062, -3393, -25383, -13970, 15827, 24796, 1134, -24020,
+	-17565, 12005, 25777, 5627, -21927, -20627, 7817, 25975,
+	9950, -19168, -23062, 3393, 25383, 13970, -15827, -24796,
+	-1134, 24020, 17565, -12004, -25777, -5627, 21927, 20627,
+	-7817, -25975, -9950, 19168, 23062, -3393, -25383, -13970,
+	15827, 24796, 1134, -24020, -17565, 12004, 25777, 5628,
+	-21927, -20627, 7817, 25975, 9950, -19168, -23062, 3393,
+	25383, 13970, -15827, -24796, -1134, 24020, 17565, -12004,
+	-25777, -5628, 21927, 20627, -7817, -25975, -9950, 19168,
+	23062, -3392, -25383, -13970, 15827, 24796, 1134, -24020,
+	-17565, 12004, 25777, 5628, -21927, -20627, 7817, 25975},
+	},{{
+
+// Carrier 37 Phase 0
+	0, 24680, 15526, -14912, -24907, -756, 24432, 16126,
+	-14287, -25114, -1511, 24163, 16712, -13649, -25299, -2266,
+	23873, 17284, -12999, -25462, -3018, 23563, 17842, -12339,
+	-25605, -3768, 23234, 18384, -11668, -25725, -4514, 22885,
+	18911, -10988, -25824, -5257, 22516, 19422, -10298, -25901,
+	-5996, 22129, 19917, -9599, -25956, -6729, 21722, 20394,
+	-8892, -25989, -7456, 21297, 20855, -8178, -26000, -8178,
+	20855, 21297, -7456, -25988, -8892, 20394, 21722, -6729,
+	-25956, -9599, 19917, 22129, -5995, -25901, -10298, 19422,
+	22516, -5257, -25824, -10988, 18911, 22885, -4514, -25725,
+	-11668, 18384, 23234, -3768, -25604, -12339, 17842, 23564,
+	-3018, -25462, -13000, 17284, 23873, -2265, -25299, -13649,
+	16712, 24163, -1511, -25114, -14287, 16126, 24432, -756,
+	-24907, -14913, 15526, 24680, 0, -24680, -15526, 14912,
+	24907, 756, -24431, -16126, 14287, 25114, 1511, -24162,
+	-16712, 13649, 25299, 2266, -23873, -17284, 12999, 25462,
+	3018, -23563, -17842, 12339, 25605, 3768, -23234, -18384,
+	11668, 25725, 4514, -22885, -18911, 10987, 25824, 5257,
+	-22516, -19422, 10297, 25901, 5996, -22128, -19917, 9599,
+	25956, 6729, -21722, -20394, 8892, 25989, 7457, -21297,
+	-20855, 8178, 26000, 8178, -20855, -21298, 7456, 25988,
+	8892, -20394, -21722, 6729, 25956, 9599, -19917, -22129,
+	5995, 25901, 10298, -19422, -22516, 5257, 25824, 10988,
+	-18911, -22885, 4514, 25725, 11668, -18384, -23234, 3768,
+	25604, 12339, -17842, -23564, 3018, 25462, 13000, -17284,
+	-23873, 2265, 25299, 13649, -16712, -24163, 1511, 25114,
+	14287, -16125, -24432, 756, 24907, 14913, -15525, -24680},
+	{
+// Carrier 37 Phase 1
+	9949, 25931, 6363, -21928, -20158, 9246, 25975, 7093,
+	-21512, -20627, 8536, 25997, 7818, -21078, -21078, 7818,
+	25997, 8536, -20627, -21512, 7093, 25975, 9246, -20158,
+	-21928, 6363, 25931, 9949, -19671, -22325, 5627, 25865,
+	10644, -19169, -22703, 4886, 25777, 11329, -18650, -23062,
+	4141, 25667, 12005, -18115, -23401, 3393, 25536, 12671,
+	-17565, -23721, 2642, 25383, 13326, -17000, -24020, 1889,
+	25209, 13969, -16421, -24300, 1134, 25013, 14601, -15827,
+	-24558, 378, 24796, 15221, -15221, -24796, -378, 24558,
+	15827, -14601, -25013, -1134, 24300, 16421, -13969, -25209,
+	-1889, 24020, 17000, -13326, -25383, -2642, 23721, 17565,
+	-12671, -25536, -3393, 23401, 18115, -12005, -25667, -4142,
+	23062, 18650, -11329, -25777, -4886, 22703, 19169, -10644,
+	-25865, -5627, 22325, 19672, -9949, -25931, -6363, 21928,
+	20158, -9246, -25975, -7093, 21512, 20627, -8536, -25997,
+	-7818, 21078, 21078, -7818, -25997, -8536, 20627, 21512,
+	-7093, -25975, -9247, 20158, 21928, -6363, -25931, -9949,
+	19671, 22325, -5627, -25865, -10644, 19169, 22703, -4886,
+	-25777, -11329, 18650, 23062, -4141, -25667, -12005, 18115,
+	23401, -3393, -25536, -12671, 17565, 23721, -2642, -25383,
+	-13326, 17000, 24020, -1888, -25209, -13969, 16420, 24300,
+	-1133, -25013, -14601, 15827, 24558, -378, -24796, -15221,
+	15221, 24796, 378, -24558, -15827, 14601, 25013, 1134,
+	-24300, -16421, 13969, 25209, 1889, -24020, -17000, 13325,
+	25383, 2642, -23721, -17565, 12671, 25536, 3393, -23401,
+	-18115, 12005, 25667, 4142, -23062, -18650, 11329, 25777,
+	4886, -22703, -19169, 10644, 25865, 5627, -22325, -19672},
+	{
+// Carrier 37 Phase 2
+	18384, 23234, -3768, -25604, -12339, 17842, 23564, -3018,
+	-25462, -13000, 17284, 23873, -2266, -25299, -13649, 16712,
+	24163, -1511, -25114, -14287, 16126, 24432, -756, -24907,
+	-14913, 15526, 24680, 0, -24680, -15526, 14912, 24907,
+	756, -24431, -16126, 14287, 25114, 1511, -24163, -16712,
+	13649, 25299, 2266, -23873, -17284, 12999, 25462, 3018,
+	-23563, -17842, 12339, 25605, 3768, -23234, -18384, 11668,
+	25725, 4514, -22885, -18911, 10988, 25824, 5257, -22516,
+	-19422, 10298, 25901, 5996, -22129, -19917, 9599, 25956,
+	6729, -21722, -20394, 8892, 25989, 7456, -21297, -20855,
+	8178, 26000, 8178, -20855, -21297, 7456, 25988, 8892,
+	-20394, -21722, 6729, 25956, 9599, -19917, -22129, 5995,
+	25901, 10298, -19422, -22516, 5257, 25824, 10988, -18911,
+	-22885, 4514, 25725, 11668, -18384, -23234, 3768, 25604,
+	12339, -17842, -23564, 3018, 25462, 13000, -17284, -23873,
+	2265, 25299, 13649, -16712, -24163, 1511, 25114, 14287,
+	-16126, -24432, 756, 24907, 14913, -15526, -24680, 0,
+	24680, 15526, -14912, -24907, -756, 24431, 16126, -14287,
+	-25114, -1511, 24162, 16712, -13649, -25299, -2266, 23873,
+	17284, -12999, -25462, -3018, 23563, 17842, -12339, -25605,
+	-3768, 23234, 18384, -11668, -25725, -4514, 22885, 18911,
+	-10987, -25824, -5257, 22516, 19422, -10297, -25901, -5996,
+	22128, 19917, -9599, -25956, -6729, 21722, 20394, -8892,
+	-25989, -7457, 21297, 20855, -8178, -26000, -8178, 20855,
+	21298, -7456, -25988, -8892, 20394, 21722, -6729, -25956,
+	-9599, 19917, 22129, -5995, -25901, -10298, 19422, 22516,
+	-5257, -25824, -10988, 18911, 22885, -4514, -25725, -11668},
+	{
+// Carrier 37 Phase 3
+	24020, 17000, -13326, -25383, -2642, 23721, 17565, -12671,
+	-25536, -3393, 23401, 18115, -12005, -25667, -4141, 23062,
+	18650, -11329, -25777, -4886, 22703, 19169, -10644, -25865,
+	-5627, 22325, 19671, -9949, -25931, -6363, 21928, 20158,
+	-9246, -25975, -7093, 21512, 20627, -8536, -25997, -7818,
+	21078, 21078, -7818, -25997, -8536, 20627, 21512, -7093,
+	-25975, -9246, 20158, 21928, -6363, -25931, -9949, 19671,
+	22325, -5627, -25865, -10644, 19169, 22703, -4886, -25777,
+	-11329, 18650, 23062, -4141, -25667, -12005, 18115, 23401,
+	-3393, -25536, -12671, 17565, 23721, -2642, -25383, -13326,
+	17000, 24020, -1889, -25209, -13969, 16420, 24300, -1134,
+	-25013, -14601, 15827, 24558, -378, -24796, -15221, 15221,
+	24796, 378, -24558, -15827, 14601, 25013, 1134, -24300,
+	-16421, 13969, 25209, 1889, -24020, -17000, 13326, 25383,
+	2642, -23721, -17565, 12671, 25536, 3393, -23401, -18115,
+	12005, 25667, 4142, -23062, -18650, 11329, 25777, 4886,
+	-22703, -19169, 10644, 25865, 5627, -22325, -19672, 9949,
+	25931, 6363, -21928, -20158, 9246, 25975, 7093, -21512,
+	-20627, 8536, 25997, 7818, -21078, -21078, 7818, 25997,
+	8536, -20627, -21512, 7093, 25975, 9247, -20158, -21928,
+	6363, 25931, 9949, -19671, -22325, 5627, 25865, 10644,
+	-19169, -22703, 4886, 25777, 11329, -18650, -23062, 4141,
+	25667, 12005, -18115, -23401, 3393, 25536, 12671, -17565,
+	-23721, 2642, 25383, 13326, -17000, -24020, 1888, 25209,
+	13969, -16420, -24300, 1133, 25013, 14601, -15827, -24558,
+	377, 24796, 15221, -15221, -24796, -378, 24558, 15827,
+	-14601, -25013, -1134, 24300, 16421, -13969, -25209, -1889},
+	{
+// Carrier 37 Phase 4
+	26000, 8178, -20855, -21297, 7456, 25989, 8892, -20394,
+	-21722, 6729, 25956, 9599, -19917, -22129, 5995, 25901,
+	10298, -19422, -22516, 5257, 25824, 10988, -18911, -22885,
+	4514, 25725, 11668, -18384, -23234, 3768, 25604, 12339,
+	-17842, -23564, 3018, 25462, 13000, -17284, -23873, 2266,
+	25299, 13649, -16712, -24163, 1511, 25114, 14287, -16126,
+	-24432, 756, 24907, 14913, -15526, -24680, 0, 24680,
+	15526, -14912, -24907, -756, 24431, 16126, -14287, -25114,
+	-1511, 24163, 16712, -13649, -25299, -2266, 23873, 17284,
+	-12999, -25462, -3018, 23563, 17842, -12339, -25605, -3768,
+	23234, 18384, -11668, -25725, -4514, 22885, 18911, -10988,
+	-25824, -5257, 22516, 19422, -10297, -25901, -5996, 22128,
+	19917, -9599, -25956, -6729, 21722, 20394, -8892, -25989,
+	-7456, 21297, 20855, -8178, -26000, -8178, 20855, 21298,
+	-7456, -25988, -8892, 20394, 21722, -6729, -25956, -9599,
+	19917, 22129, -5995, -25901, -10298, 19422, 22516, -5257,
+	-25824, -10988, 18911, 22885, -4514, -25725, -11668, 18384,
+	23234, -3768, -25604, -12339, 17842, 23564, -3018, -25462,
+	-13000, 17284, 23873, -2265, -25299, -13649, 16712, 24163,
+	-1511, -25114, -14287, 16126, 24432, -756, -24907, -14913,
+	15526, 24680, 0, -24680, -15526, 14912, 24907, 756,
+	-24431, -16126, 14287, 25114, 1511, -24162, -16712, 13649,
+	25299, 2266, -23873, -17284, 12999, 25462, 3018, -23563,
+	-17842, 12339, 25605, 3768, -23234, -18384, 11668, 25725,
+	4515, -22885, -18911, 10987, 25824, 5257, -22516, -19422,
+	10297, 25901, 5996, -22128, -19917, 9599, 25956, 6729,
+	-21722, -20394, 8892, 25989, 7457, -21297, -20855, 8177},
+	{
+// Carrier 37 Phase 5
+	24020, -1889, -25209, -13969, 16421, 24300, -1134, -25013,
+	-14601, 15827, 24558, -378, -24796, -15221, 15221, 24796,
+	378, -24558, -15827, 14601, 25013, 1134, -24300, -16421,
+	13969, 25209, 1889, -24020, -17000, 13326, 25383, 2642,
+	-23721, -17565, 12671, 25536, 3393, -23401, -18115, 12005,
+	25667, 4142, -23062, -18650, 11329, 25777, 4886, -22703,
+	-19169, 10644, 25865, 5627, -22325, -19672, 9949, 25931,
+	6363, -21928, -20158, 9246, 25975, 7093, -21512, -20627,
+	8536, 25997, 7818, -21078, -21078, 7818, 25997, 8536,
+	-20627, -21512, 7093, 25975, 9246, -20158, -21928, 6363,
+	25931, 9949, -19671, -22325, 5627, 25865, 10644, -19169,
+	-22703, 4886, 25777, 11329, -18650, -23062, 4141, 25667,
+	12005, -18115, -23401, 3393, 25536, 12671, -17565, -23721,
+	2642, 25383, 13326, -17000, -24020, 1889, 25209, 13969,
+	-16420, -24300, 1134, 25013, 14601, -15827, -24558, 378,
+	24796, 15221, -15221, -24796, -378, 24558, 15827, -14601,
+	-25013, -1134, 24300, 16421, -13969, -25209, -1889, 24020,
+	17000, -13326, -25383, -2642, 23721, 17565, -12671, -25536,
+	-3393, 23401, 18115, -12005, -25667, -4142, 23062, 18650,
+	-11329, -25777, -4886, 22703, 19169, -10644, -25865, -5627,
+	22325, 19672, -9949, -25931, -6363, 21928, 20158, -9246,
+	-25975, -7093, 21512, 20627, -8536, -25997, -7818, 21078,
+	21078, -7818, -25997, -8536, 20627, 21512, -7093, -25975,
+	-9247, 20158, 21928, -6363, -25931, -9949, 19671, 22325,
+	-5627, -25865, -10644, 19169, 22703, -4886, -25777, -11329,
+	18650, 23062, -4141, -25667, -12005, 18115, 23401, -3393,
+	-25536, -12671, 17565, 23721, -2642, -25383, -13326, 17000},
+	{
+// Carrier 37 Phase 6
+	18384, -11668, -25725, -4514, 22885, 18911, -10988, -25824,
+	-5257, 22516, 19422, -10298, -25901, -5996, 22129, 19917,
+	-9599, -25956, -6729, 21722, 20394, -8892, -25989, -7456,
+	21297, 20855, -8178, -26000, -8178, 20855, 21297, -7456,
+	-25989, -8892, 20394, 21722, -6729, -25956, -9599, 19917,
+	22129, -5995, -25901, -10298, 19422, 22516, -5257, -25824,
+	-10988, 18911, 22885, -4514, -25725, -11668, 18384, 23234,
+	-3768, -25604, -12339, 17842, 23564, -3018, -25462, -13000,
+	17284, 23873, -2265, -25299, -13649, 16712, 24163, -1511,
+	-25114, -14287, 16126, 24432, -756, -24907, -14913, 15526,
+	24680, 0, -24680, -15526, 14912, 24907, 756, -24431,
+	-16126, 14287, 25114, 1511, -24163, -16712, 13649, 25299,
+	2266, -23873, -17284, 12999, 25462, 3018, -23563, -17842,
+	12339, 25605, 3768, -23234, -18384, 11668, 25725, 4514,
+	-22885, -18911, 10987, 25824, 5257, -22516, -19422, 10297,
+	25901, 5996, -22128, -19917, 9599, 25956, 6729, -21722,
+	-20394, 8892, 25989, 7456, -21297, -20855, 8178, 26000,
+	8178, -20855, -21298, 7456, 25988, 8892, -20394, -21722,
+	6729, 25956, 9599, -19917, -22129, 5995, 25901, 10298,
+	-19422, -22516, 5257, 25824, 10988, -18911, -22885, 4514,
+	25725, 11668, -18384, -23234, 3768, 25604, 12339, -17842,
+	-23564, 3018, 25462, 13000, -17284, -23873, 2265, 25299,
+	13649, -16712, -24163, 1511, 25114, 14287, -16126, -24432,
+	756, 24907, 14913, -15526, -24680, 0, 24680, 15526,
+	-14912, -24907, -756, 24431, 16126, -14287, -25114, -1511,
+	24162, 16712, -13649, -25299, -2266, 23873, 17284, -12999,
+	-25462, -3018, 23563, 17842, -12339, -25605, -3768, 23234},
+	{
+// Carrier 37 Phase 7
+	9949, -19671, -22325, 5627, 25865, 10644, -19169, -22703,
+	4886, 25777, 11329, -18650, -23062, 4141, 25667, 12005,
+	-18115, -23401, 3393, 25536, 12671, -17565, -23721, 2642,
+	25383, 13326, -17000, -24020, 1889, 25209, 13969, -16421,
+	-24300, 1134, 25013, 14601, -15827, -24558, 378, 24796,
+	15221, -15221, -24796, -378, 24558, 15827, -14601, -25013,
+	-1134, 24300, 16421, -13969, -25209, -1889, 24020, 17000,
+	-13326, -25383, -2642, 23721, 17565, -12671, -25536, -3393,
+	23401, 18115, -12005, -25667, -4142, 23062, 18650, -11329,
+	-25777, -4886, 22703, 19169, -10644, -25865, -5627, 22325,
+	19672, -9949, -25931, -6363, 21928, 20158, -9246, -25975,
+	-7093, 21512, 20627, -8536, -25997, -7818, 21078, 21078,
+	-7818, -25997, -8536, 20627, 21512, -7093, -25975, -9246,
+	20158, 21928, -6363, -25931, -9949, 19671, 22325, -5627,
+	-25865, -10644, 19169, 22703, -4886, -25777, -11329, 18650,
+	23062, -4141, -25667, -12005, 18115, 23401, -3393, -25536,
+	-12671, 17565, 23721, -2642, -25383, -13326, 17000, 24020,
+	-1889, -25209, -13969, 16420, 24300, -1133, -25013, -14601,
+	15827, 24558, -378, -24796, -15221, 15221, 24796, 378,
+	-24558, -15827, 14601, 25013, 1134, -24300, -16421, 13969,
+	25209, 1889, -24020, -17000, 13325, 25383, 2642, -23721,
+	-17565, 12671, 25536, 3393, -23401, -18115, 12005, 25667,
+	4142, -23062, -18650, 11329, 25777, 4886, -22703, -19169,
+	10644, 25865, 5627, -22325, -19672, 9949, 25931, 6363,
+	-21928, -20158, 9246, 25975, 7093, -21512, -20627, 8536,
+	25997, 7818, -21078, -21078, 7818, 25997, 8536, -20627,
+	-21512, 7093, 25975, 9247, -20158, -21928, 6363, 25931},
+	},{{
+
+// Carrier 38 Phase 0
+	0, 24907, 14287, -16712, -23873, 3018, 25605, 11668,
+	-18911, -22516, 5996, 25956, 8892, -20855, -20855, 8892,
+	25956, 5995, -22516, -18911, 11668, 25604, 3018, -23873,
+	-16712, 14287, 24907, 0, -24907, -14287, 16712, 23873,
+	-3018, -25605, -11668, 18911, 22516, -5996, -25956, -8892,
+	20855, 20855, -8892, -25956, -5995, 22516, 18911, -11668,
+	-25604, -3018, 23873, 16712, -14287, -24907, 0, 24907,
+	14287, -16712, -23873, 3018, 25605, 11668, -18911, -22516,
+	5996, 25956, 8892, -20855, -20855, 8892, 25955, 5995,
+	-22516, -18911, 11668, 25604, 3018, -23873, -16712, 14287,
+	24907, 0, -24907, -14287, 16712, 23873, -3018, -25605,
+	-11668, 18911, 22516, -5996, -25956, -8892, 20855, 20855,
+	-8892, -25955, -5995, 22516, 18911, -11669, -25604, -3018,
+	23873, 16712, -14287, -24907, 0, 24907, 14286, -16712,
+	-23873, 3018, 25605, 11668, -18911, -22516, 5996, 25956,
+	8892, -20855, -20854, 8892, 25955, 5995, -22516, -18911,
+	11669, 25604, 3018, -23873, -16712, 14287, 24907, 0,
+	-24907, -14286, 16712, 23873, -3018, -25605, -11668, 18912,
+	22516, -5996, -25956, -8892, 20855, 20854, -8892, -25955,
+	-5995, 22516, 18911, -11669, -25604, -3017, 23873, 16712,
+	-14287, -24907, 0, 24907, 14286, -16712, -23873, 3018,
+	25605, 11668, -18912, -22516, 5996, 25956, 8892, -20855,
+	-20854, 8893, 25955, 5995, -22516, -18911, 11669, 25604,
+	3017, -23873, -16712, 14287, 24907, 0, -24907, -14286,
+	16712, 23873, -3019, -25605, -11668, 18912, 22516, -5996,
+	-25956, -8891, 20855, 20854, -8893, -25955, -5995, 22516,
+	18911, -11669, -25604, -3017, 23873, 16711, -14287, -24907},
+	{
+// Carrier 38 Phase 1
+	9949, 25865, 4886, -23062, -18115, 12671, 25383, 1889,
+	-24300, -15827, 15221, 24558, -1134, -25209, -13326, 17565,
+	23401, -4142, -25777, -10644, 19672, 21928, -7093, -25997,
+	-7818, 21512, 20158, -9949, -25865, -4886, 23062, 18115,
+	-12671, -25383, -1889, 24300, 15827, -15221, -24558, 1134,
+	25209, 13325, -17565, -23401, 4142, 25777, 10644, -19672,
+	-21928, 7093, 25997, 7818, -21512, -20158, 9949, 25865,
+	4886, -23062, -18115, 12671, 25383, 1888, -24300, -15827,
+	15221, 24558, -1134, -25209, -13325, 17565, 23401, -4142,
+	-25777, -10643, 19672, 21928, -7094, -25997, -7818, 21512,
+	20157, -9950, -25865, -4886, 23062, 18115, -12671, -25383,
+	-1888, 24300, 15827, -15221, -24558, 1134, 25209, 13325,
+	-17565, -23401, 4142, 25777, 10643, -19672, -21928, 7094,
+	25997, 7818, -21512, -20157, 9950, 25865, 4886, -23062,
+	-18115, 12671, 25383, 1888, -24300, -15827, 15221, 24558,
+	-1134, -25209, -13325, 17565, 23401, -4142, -25777, -10643,
+	19672, 21927, -7094, -25997, -7817, 21512, 20157, -9950,
+	-25865, -4886, 23062, 18115, -12671, -25383, -1888, 24300,
+	15827, -15221, -24558, 1134, 25209, 13325, -17565, -23401,
+	4142, 25777, 10643, -19672, -21927, 7094, 25997, 7817,
+	-21512, -20157, 9950, 25865, 4886, -23062, -18115, 12671,
+	25383, 1888, -24300, -15827, 15221, 24558, -1134, -25209,
+	-13325, 17565, 23401, -4142, -25777, -10643, 19672, 21927,
+	-7094, -25997, -7817, 21512, 20157, -9950, -25865, -4886,
+	23062, 18114, -12671, -25383, -1888, 24300, 15827, -15221,
+	-24558, 1134, 25209, 13325, -17565, -23401, 4142, 25777,
+	10643, -19672, -21927, 7094, 25997, 7817, -21512, -20157},
+	{
+// Carrier 38 Phase 2
+	18384, 22885, -5257, -25901, -9599, 20394, 21297, -8178,
+	-25989, -6729, 22129, 19422, -10988, -25725, -3768, 23564,
+	17284, -13649, -25114, -756, 24680, 14912, -16126, -24163,
+	2266, 25462, 12339, -18384, -22885, 5257, 25901, 9599,
+	-20394, -21297, 8178, 25988, 6729, -22129, -19422, 10988,
+	25725, 3768, -23564, -17284, 13649, 25114, 756, -24680,
+	-14912, 16126, 24162, -2266, -25462, -12339, 18384, 22885,
+	-5257, -25901, -9599, 20394, 21297, -8178, -25988, -6729,
+	22129, 19422, -10988, -25725, -3768, 23564, 17284, -13649,
+	-25114, -755, 24680, 14912, -16126, -24162, 2266, 25462,
+	12339, -18384, -22885, 5257, 25901, 9599, -20394, -21297,
+	8178, 25988, 6729, -22129, -19422, 10988, 25725, 3767,
+	-23564, -17284, 13649, 25113, 755, -24680, -14912, 16126,
+	24162, -2266, -25462, -12339, 18385, 22885, -5257, -25901,
+	-9599, 20395, 21297, -8178, -25988, -6728, 22129, 19422,
+	-10988, -25725, -3767, 23564, 17284, -13649, -25113, -755,
+	24680, 14912, -16126, -24162, 2266, 25462, 12339, -18385,
+	-22885, 5258, 25901, 9598, -20395, -21297, 8178, 25988,
+	6728, -22129, -19422, 10988, 25725, 3767, -23564, -17284,
+	13649, 25113, 755, -24680, -14912, 16126, 24162, -2266,
+	-25462, -12339, 18385, 22884, -5258, -25901, -9598, 20395,
+	21297, -8178, -25988, -6728, 22129, 19422, -10988, -25725,
+	-3767, 23564, 17284, -13649, -25113, -755, 24680, 14912,
+	-16126, -24162, 2266, 25462, 12339, -18385, -22884, 5258,
+	25901, 9598, -20395, -21297, 8178, 25988, 6728, -22129,
+	-19422, 10988, 25725, 3767, -23564, -17284, 13649, 25113,
+	755, -24680, -14912, 16126, 24162, -2266, -25462, -12339},
+	{
+// Carrier 38 Phase 3
+	24020, 16421, -14601, -24796, 378, 25013, 13969, -17000,
+	-23721, 3393, 25667, 11329, -19169, -22325, 6363, 25975,
+	8536, -21078, -20627, 9246, 25931, 5627, -22703, -18650,
+	12005, 25536, 2642, -24020, -16420, 14601, 24796, -378,
+	-25013, -13969, 17000, 23721, -3393, -25667, -11329, 19169,
+	22325, -6363, -25975, -8536, 21078, 20627, -9247, -25931,
+	-5627, 22703, 18650, -12005, -25536, -2642, 24020, 16420,
+	-14601, -24796, 378, 25013, 13969, -17000, -23721, 3393,
+	25667, 11329, -19169, -22325, 6363, 25975, 8536, -21078,
+	-20627, 9247, 25931, 5627, -22703, -18650, 12005, 25536,
+	2642, -24020, -16420, 14601, 24796, -378, -25013, -13969,
+	17000, 23721, -3393, -25668, -11329, 19169, 22325, -6363,
+	-25975, -8535, 21078, 20626, -9247, -25931, -5627, 22703,
+	18649, -12005, -25536, -2642, 24021, 16420, -14601, -24796,
+	378, 25013, 13969, -17000, -23721, 3394, 25668, 11329,
+	-19169, -22325, 6363, 25975, 8535, -21079, -20626, 9247,
+	25931, 5627, -22703, -18649, 12005, 25536, 2642, -24021,
+	-16420, 14602, 24796, -378, -25013, -13969, 17000, 23721,
+	-3394, -25668, -11329, 19169, 22324, -6363, -25975, -8535,
+	21079, 20626, -9247, -25931, -5626, 22703, 18649, -12005,
+	-25536, -2642, 24021, 16420, -14602, -24796, 378, 25013,
+	13969, -17000, -23721, 3394, 25668, 11329, -19169, -22324,
+	6363, 25975, 8535, -21079, -20626, 9247, 25931, 5626,
+	-22703, -18649, 12005, 25536, 2641, -24021, -16420, 14602,
+	24796, -378, -25013, -13969, 17000, 23721, -3394, -25668,
+	-11329, 19169, 22324, -6363, -25975, -8535, 21079, 20626,
+	-9247, -25931, -5626, 22703, 18649, -12006, -25536, -2641},
+	{
+// Carrier 38 Phase 4
+	26000, 7456, -21722, -19917, 10298, 25824, 4514, -23234,
+	-17842, 13000, 25299, 1511, -24432, -15526, 15526, 24431,
+	-1511, -25299, -12999, 17842, 23234, -4514, -25824, -10298,
+	19917, 21722, -7456, -26000, -7456, 21722, 19917, -10298,
+	-25824, -4514, 23234, 17842, -13000, -25299, -1511, 24432,
+	15526, -15526, -24431, 1511, 25299, 12999, -17842, -23234,
+	4514, 25824, 10297, -19917, -21722, 7457, 26000, 7456,
+	-21722, -19917, 10298, 25824, 4514, -23234, -17842, 13000,
+	25299, 1511, -24432, -15525, 15526, 24431, -1511, -25299,
+	-12999, 17842, 23234, -4515, -25824, -10297, 19917, 21722,
+	-7457, -26000, -7456, 21722, 19916, -10298, -25824, -4514,
+	23234, 17842, -13000, -25299, -1511, 24432, 15525, -15526,
+	-24431, 1512, 25299, 12999, -17842, -23234, 4515, 25824,
+	10297, -19917, -21722, 7457, 26000, 7456, -21722, -19916,
+	10298, 25824, 4514, -23234, -17842, 13000, 25299, 1511,
+	-24432, -15525, 15526, 24431, -1512, -25299, -12999, 17842,
+	23234, -4515, -25824, -10297, 19917, 21722, -7457, -26000,
+	-7456, 21722, 19916, -10298, -25824, -4514, 23234, 17841,
+	-13000, -25299, -1511, 24432, 15525, -15526, -24431, 1512,
+	25299, 12999, -17842, -23234, 4515, 25824, 10297, -19917,
+	-21722, 7457, 26000, 7456, -21722, -19916, 10298, 25824,
+	4514, -23234, -17841, 13000, 25299, 1511, -24432, -15525,
+	15526, 24431, -1512, -25299, -12999, 17842, 23234, -4515,
+	-25824, -10297, 19917, 21722, -7457, -26000, -7456, 21723,
+	19916, -10298, -25824, -4514, 23234, 17841, -13000, -25299,
+	-1511, 24432, 15525, -15526, -24431, 1512, 25299, 12999,
+	-17842, -23234, 4515, 25824, 10297, -19917, -21722, 7457},
+	{
+// Carrier 38 Phase 5
+	24020, -2642, -25536, -12005, 18650, 22703, -5627, -25931,
+	-9246, 20627, 21078, -8536, -25975, -6363, 22325, 19169,
+	-11329, -25667, -3393, 23721, 17000, -13969, -25013, -378,
+	24796, 14601, -16421, -24020, 2642, 25536, 12005, -18650,
+	-22703, 5627, 25931, 9246, -20627, -21078, 8536, 25975,
+	6363, -22325, -19169, 11329, 25667, 3393, -23721, -17000,
+	13969, 25013, 377, -24796, -14601, 16421, 24020, -2642,
+	-25536, -12005, 18650, 22703, -5627, -25931, -9246, 20627,
+	21078, -8536, -25975, -6363, 22325, 19169, -11329, -25667,
+	-3393, 23721, 17000, -13969, -25013, -377, 24796, 14601,
+	-16421, -24020, 2642, 25536, 12005, -18650, -22703, 5627,
+	25931, 9246, -20627, -21078, 8536, 25975, 6363, -22325,
+	-19169, 11329, 25667, 3393, -23721, -17000, 13970, 25013,
+	377, -24796, -14601, 16421, 24020, -2642, -25536, -12005,
+	18650, 22703, -5627, -25931, -9246, 20627, 21078, -8536,
+	-25975, -6362, 22325, 19168, -11329, -25667, -3393, 23721,
+	17000, -13970, -25013, -377, 24796, 14601, -16421, -24020,
+	2642, 25536, 12005, -18650, -22703, 5627, 25931, 9246,
+	-20627, -21078, 8536, 25975, 6362, -22325, -19168, 11330,
+	25667, 3393, -23721, -17000, 13970, 25013, 377, -24796,
+	-14601, 16421, 24020, -2643, -25536, -12005, 18650, 22703,
+	-5627, -25931, -9246, 20627, 21078, -8536, -25975, -6362,
+	22325, 19168, -11330, -25667, -3393, 23721, 16999, -13970,
+	-25013, -377, 24796, 14601, -16421, -24020, 2643, 25536,
+	12004, -18650, -22703, 5628, 25931, 9246, -20627, -21078,
+	8536, 25975, 6362, -22325, -19168, 11330, 25667, 3393,
+	-23721, -16999, 13970, 25013, 377, -24796, -14601, 16421},
+	{
+// Carrier 38 Phase 6
+	18384, -12339, -25462, -2266, 24163, 16126, -14913, -24680,
+	756, 25114, 13649, -17284, -23563, 3768, 25725, 10988,
+	-19422, -22129, 6729, 25989, 8178, -21297, -20394, 9599,
+	25901, 5257, -22885, -18384, 12339, 25462, 2265, -24163,
+	-16126, 14913, 24680, -756, -25114, -13649, 17284, 23563,
+	-3768, -25725, -10987, 19422, 22128, -6729, -25989, -8178,
+	21298, 20394, -9599, -25901, -5257, 22885, 18384, -12339,
+	-25462, -2265, 24163, 16125, -14913, -24680, 756, 25114,
+	13649, -17284, -23563, 3768, 25725, 10987, -19422, -22128,
+	6729, 25989, 8177, -21298, -20394, 9599, 25901, 5257,
+	-22885, -18384, 12339, 25462, 2265, -24163, -16125, 14913,
+	24680, -756, -25114, -13649, 17284, 23563, -3768, -25725,
+	-10987, 19422, 22128, -6729, -25989, -8177, 21298, 20394,
+	-9599, -25901, -5257, 22885, 18384, -12339, -25462, -2265,
+	24163, 16125, -14913, -24680, 756, 25114, 13649, -17284,
+	-23563, 3768, 25725, 10987, -19422, -22128, 6729, 25989,
+	8177, -21298, -20394, 9599, 25901, 5257, -22885, -18384,
+	12339, 25462, 2265, -24163, -16125, 14913, 24680, -756,
+	-25114, -13648, 17285, 23563, -3768, -25725, -10987, 19422,
+	22128, -6729, -25989, -8177, 21298, 20394, -9599, -25901,
+	-5257, 22885, 18384, -12340, -25462, -2265, 24163, 16125,
+	-14913, -24680, 756, 25114, 13648, -17285, -23563, 3768,
+	25725, 10987, -19423, -22128, 6729, 25989, 8177, -21298,
+	-20394, 9599, 25901, 5257, -22885, -18384, 12340, 25462,
+	2265, -24163, -16125, 14913, 24680, -756, -25114, -13648,
+	17285, 23563, -3768, -25725, -10987, 19423, 22128, -6729,
+	-25989, -8177, 21298, 20394, -9599, -25901, -5256, 22885},
+	{
+// Carrier 38 Phase 7
+	9949, -20158, -21512, 7818, 25997, 7093, -21928, -19671,
+	10644, 25777, 4141, -23401, -17565, 13326, 25209, 1134,
+	-24558, -15221, 15827, 24300, -1889, -25383, -12671, 18115,
+	23062, -4886, -25865, -9949, 20158, 21512, -7818, -25997,
+	-7093, 21928, 19671, -10644, -25777, -4141, 23401, 17565,
+	-13326, -25209, -1133, 24558, 15221, -15827, -24300, 1889,
+	25383, 12671, -18115, -23062, 4886, 25865, 9949, -20158,
+	-21512, 7818, 25997, 7093, -21928, -19671, 10644, 25777,
+	4141, -23401, -17565, 13326, 25209, 1133, -24558, -15220,
+	15827, 24300, -1889, -25383, -12670, 18115, 23062, -4887,
+	-25865, -9949, 20158, 21512, -7818, -25997, -7093, 21928,
+	19671, -10644, -25777, -4141, 23401, 17565, -13326, -25209,
+	-1133, 24558, 15220, -15828, -24299, 1889, 25383, 12670,
+	-18115, -23062, 4887, 25865, 9949, -20158, -21512, 7818,
+	25997, 7093, -21928, -19671, 10644, 25777, 4141, -23401,
+	-17565, 13326, 25209, 1133, -24558, -15220, 15828, 24299,
+	-1889, -25383, -12670, 18115, 23062, -4887, -25865, -9949,
+	20158, 21512, -7818, -25997, -7093, 21928, 19671, -10644,
+	-25777, -4141, 23401, 17564, -13326, -25209, -1133, 24558,
+	15220, -15828, -24299, 1889, 25383, 12670, -18115, -23062,
+	4887, 25865, 9949, -20158, -21512, 7818, 25997, 7093,
+	-21928, -19671, 10644, 25777, 4141, -23401, -17564, 13326,
+	25209, 1133, -24558, -15220, 15828, 24299, -1889, -25383,
+	-12670, 18115, 23062, -4887, -25865, -9949, 20158, 21512,
+	-7818, -25997, -7093, 21928, 19671, -10644, -25777, -4141,
+	23401, 17564, -13326, -25209, -1133, 24558, 15220, -15828,
+	-24299, 1889, 25383, 12670, -18115, -23061, 4887, 25865},
+	},{{
+
+// Carrier 39 Phase 0
+	0, 25114, 13000, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18385, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18385, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113},
+	{
+// Carrier 39 Phase 1
+	9949, 25777, 3393, -24020, -15827, 15827, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9949, -25777, -3393, 24020,
+	15827, -15827, -24020, 3393, 25777, 9949, -20627, -20627,
+	9949, 25777, 3393, -24020, -15827, 15827, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9949, -25777, -3393, 24020,
+	15827, -15827, -24020, 3393, 25777, 9949, -20627, -20627,
+	9949, 25777, 3393, -24020, -15827, 15827, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9949, -25777, -3393, 24020,
+	15827, -15827, -24020, 3393, 25777, 9949, -20627, -20627,
+	9949, 25777, 3393, -24020, -15827, 15827, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9949, -25777, -3393, 24020,
+	15827, -15827, -24020, 3393, 25777, 9949, -20627, -20627,
+	9949, 25777, 3393, -24020, -15827, 15827, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9949, -25777, -3393, 24020,
+	15827, -15827, -24020, 3393, 25777, 9949, -20627, -20627,
+	9950, 25777, 3393, -24020, -15827, 15828, 24020, -3393,
+	-25777, -9949, 20627, 20627, -9950, -25777, -3393, 24020,
+	15827, -15828, -24020, 3393, 25777, 9949, -20627, -20627,
+	9950, 25777, 3393, -24020, -15827, 15828, 24020, -3393,
+	-25777, -9949, 20627, 20626, -9950, -25777, -3393, 24020,
+	15827, -15828, -24020, 3394, 25777, 9949, -20627, -20626,
+	9950, 25777, 3393, -24020, -15827, 15828, 24020, -3394,
+	-25777, -9949, 20627, 20626, -9950, -25777, -3393, 24021,
+	15827, -15828, -24020, 3394, 25777, 9949, -20627, -20626,
+	9950, 25777, 3393, -24021, -15827, 15828, 24020, -3394,
+	-25777, -9949, 20627, 20626, -9950, -25777, -3393, 24021,
+	15827, -15828, -24020, 3394, 25777, 9949, -20627, -20626},
+	{
+// Carrier 39 Phase 2
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18385, 22516, -6729, -26000, -6728, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18385, 22516, -6729, -26000, -6728, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999},
+	{
+// Carrier 39 Phase 3
+	24020, 15827, -15827, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9949, 25777, 3393, -24020, -15827, 15827, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9949, -25777, -3393,
+	24020, 15827, -15827, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9949, 25777, 3393, -24020, -15827, 15827, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9949, -25777, -3393,
+	24020, 15827, -15827, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9949, 25777, 3393, -24020, -15827, 15827, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9949, -25777, -3393,
+	24020, 15827, -15827, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9949, 25777, 3393, -24020, -15827, 15827, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9949, -25777, -3393,
+	24020, 15827, -15827, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9949, 25777, 3393, -24020, -15827, 15827, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9949, -25777, -3393,
+	24020, 15827, -15828, -24020, 3393, 25777, 9949, -20627,
+	-20627, 9950, 25777, 3393, -24020, -15827, 15828, 24020,
+	-3393, -25777, -9949, 20627, 20627, -9950, -25777, -3393,
+	24020, 15827, -15828, -24020, 3393, 25777, 9949, -20627,
+	-20626, 9950, 25777, 3393, -24020, -15827, 15828, 24020,
+	-3394, -25777, -9949, 20627, 20626, -9950, -25777, -3393,
+	24021, 15827, -15828, -24020, 3394, 25777, 9949, -20627,
+	-20626, 9950, 25777, 3393, -24021, -15827, 15828, 24020,
+	-3394, -25777, -9949, 20627, 20626, -9950, -25777, -3393,
+	24021, 15827, -15828, -24020, 3394, 25777, 9949, -20627,
+	-20626, 9950, 25777, 3393, -24021, -15827, 15828, 24020,
+	-3394, -25777, -9949, 20627, 20626, -9950, -25777, -3393},
+	{
+// Carrier 39 Phase 4
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729},
+	{
+// Carrier 39 Phase 5
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15827, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9949, 25777, 3393, -24020, -15827, 15827,
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15827, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9949, 25777, 3393, -24020, -15827, 15827,
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15827, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9949, 25777, 3393, -24020, -15827, 15827,
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15827, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9949, 25777, 3393, -24020, -15827, 15827,
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15827, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9949, 25777, 3393, -24020, -15827, 15827,
+	24020, -3393, -25777, -9949, 20627, 20627, -9949, -25777,
+	-3393, 24020, 15827, -15828, -24020, 3393, 25777, 9949,
+	-20627, -20627, 9950, 25777, 3393, -24020, -15827, 15828,
+	24020, -3393, -25777, -9949, 20627, 20627, -9950, -25777,
+	-3393, 24020, 15827, -15828, -24020, 3393, 25777, 9949,
+	-20627, -20626, 9950, 25777, 3393, -24020, -15827, 15828,
+	24020, -3394, -25777, -9949, 20627, 20626, -9950, -25777,
+	-3393, 24021, 15827, -15828, -24020, 3394, 25777, 9949,
+	-20627, -20626, 9950, 25777, 3393, -24021, -15827, 15828,
+	24020, -3394, -25777, -9949, 20627, 20626, -9950, -25777,
+	-3393, 24021, 15827, -15828, -24020, 3394, 25777, 9949,
+	-20627, -20626, 9950, 25777, 3393, -24021, -15827, 15828},
+	{
+// Carrier 39 Phase 6
+	18384, -12999, -25114, 0, 25114, 13000, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18385, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18385, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516},
+	{
+// Carrier 39 Phase 7
+	9949, -20627, -20627, 9949, 25777, 3393, -24020, -15827,
+	15827, 24020, -3393, -25777, -9949, 20627, 20627, -9949,
+	-25777, -3393, 24020, 15827, -15827, -24020, 3393, 25777,
+	9949, -20627, -20627, 9949, 25777, 3393, -24020, -15827,
+	15827, 24020, -3393, -25777, -9949, 20627, 20627, -9949,
+	-25777, -3393, 24020, 15827, -15827, -24020, 3393, 25777,
+	9949, -20627, -20627, 9949, 25777, 3393, -24020, -15827,
+	15827, 24020, -3393, -25777, -9949, 20627, 20627, -9949,
+	-25777, -3393, 24020, 15827, -15827, -24020, 3393, 25777,
+	9949, -20627, -20627, 9949, 25777, 3393, -24020, -15827,
+	15827, 24020, -3393, -25777, -9949, 20627, 20627, -9949,
+	-25777, -3393, 24020, 15827, -15827, -24020, 3393, 25777,
+	9949, -20627, -20627, 9949, 25777, 3393, -24020, -15827,
+	15827, 24020, -3393, -25777, -9949, 20627, 20627, -9949,
+	-25777, -3393, 24020, 15827, -15827, -24020, 3393, 25777,
+	9949, -20627, -20627, 9950, 25777, 3393, -24020, -15827,
+	15828, 24020, -3393, -25777, -9949, 20627, 20627, -9950,
+	-25777, -3393, 24020, 15827, -15828, -24020, 3393, 25777,
+	9949, -20627, -20627, 9950, 25777, 3393, -24020, -15827,
+	15828, 24020, -3393, -25777, -9949, 20627, 20626, -9950,
+	-25777, -3393, 24020, 15827, -15828, -24020, 3394, 25777,
+	9949, -20627, -20626, 9950, 25777, 3393, -24020, -15827,
+	15828, 24020, -3394, -25777, -9949, 20627, 20626, -9950,
+	-25777, -3393, 24021, 15827, -15828, -24020, 3394, 25777,
+	9949, -20627, -20626, 9950, 25777, 3393, -24021, -15827,
+	15828, 24020, -3394, -25777, -9949, 20627, 20626, -9950,
+	-25777, -3393, 24021, 15827, -15828, -24020, 3394, 25777},
+	},{{
+
+// Carrier 40 Phase 0
+	0, 25299, 11668, -19917, -20855, 10298, 25605, 1511,
+	-24907, -12999, 18911, 21722, -8892, -25824, -3018, 24432,
+	14287, -17842, -22516, 7456, 25956, 4514, -23873, -15526,
+	16712, 23234, -5996, -26000, -5996, 23234, 16712, -15526,
+	-23873, 4514, 25956, 7456, -22516, -17842, 14287, 24432,
+	-3018, -25824, -8892, 21722, 18911, -13000, -24907, 1511,
+	25605, 10298, -20855, -19917, 11668, 25299, 0, -25299,
+	-11668, 19917, 20855, -10298, -25604, -1511, 24907, 12999,
+	-18911, -21722, 8892, 25824, 3018, -24432, -14287, 17842,
+	22516, -7456, -25956, -4514, 23873, 15526, -16712, -23234,
+	5996, 26000, 5996, -23234, -16712, 15526, 23873, -4514,
+	-25956, -7456, 22516, 17842, -14287, -24432, 3018, 25824,
+	8892, -21722, -18911, 13000, 24907, -1511, -25605, -10298,
+	20855, 19917, -11668, -25299, 0, 25299, 11668, -19917,
+	-20855, 10298, 25604, 1511, -24907, -12999, 18911, 21722,
+	-8892, -25824, -3018, 24432, 14287, -17842, -22516, 7456,
+	25956, 4514, -23873, -15526, 16712, 23234, -5996, -26000,
+	-5995, 23234, 16712, -15526, -23873, 4514, 25956, 7456,
+	-22516, -17842, 14287, 24431, -3018, -25824, -8892, 21722,
+	18911, -13000, -24907, 1511, 25605, 10298, -20855, -19917,
+	11668, 25299, 0, -25299, -11668, 19917, 20855, -10298,
+	-25604, -1511, 24907, 12999, -18911, -21722, 8892, 25824,
+	3018, -24432, -14287, 17842, 22516, -7456, -25956, -4514,
+	23873, 15526, -16712, -23234, 5996, 26000, 5995, -23234,
+	-16712, 15526, 23873, -4514, -25956, -7456, 22516, 17842,
+	-14287, -24431, 3018, 25824, 8892, -21722, -18911, 13000,
+	24907, -1511, -25605, -10298, 20855, 19917, -11668, -25299},
+	{
+// Carrier 40 Phase 1
+	9949, 25667, 1889, -24796, -13326, 18650, 21928, -8536,
+	-25865, -3393, 24300, 14601, -17565, -22703, 7093, 25975,
+	4886, -23721, -15827, 16421, 23401, -5627, -25997, -6363,
+	23062, 17000, -15221, -24020, 4141, 25931, 7818, -22325,
+	-18115, 13969, 24558, -2642, -25777, -9246, 21512, 19169,
+	-12671, -25013, 1134, 25536, 10644, -20627, -20158, 11329,
+	25383, 378, -25209, -12005, 19671, 21078, -9949, -25667,
+	-1889, 24796, 13326, -18650, -21928, 8536, 25865, 3393,
+	-24300, -14601, 17565, 22703, -7093, -25975, -4886, 23721,
+	15827, -16421, -23401, 5627, 25997, 6363, -23062, -17000,
+	15221, 24020, -4141, -25931, -7818, 22325, 18115, -13969,
+	-24558, 2642, 25777, 9246, -21512, -19169, 12671, 25013,
+	-1134, -25536, -10644, 20627, 20158, -11329, -25383, -378,
+	25209, 12005, -19671, -21078, 9949, 25667, 1889, -24796,
+	-13326, 18650, 21928, -8536, -25865, -3393, 24300, 14601,
+	-17565, -22703, 7093, 25975, 4886, -23721, -15827, 16421,
+	23401, -5627, -25997, -6363, 23062, 17000, -15221, -24020,
+	4141, 25931, 7818, -22325, -18115, 13969, 24558, -2642,
+	-25777, -9246, 21512, 19169, -12671, -25013, 1134, 25536,
+	10644, -20627, -20158, 11329, 25383, 378, -25209, -12005,
+	19671, 21078, -9949, -25667, -1889, 24796, 13326, -18650,
+	-21928, 8536, 25865, 3393, -24300, -14601, 17565, 22703,
+	-7093, -25975, -4886, 23721, 15827, -16421, -23401, 5627,
+	25997, 6363, -23062, -17000, 15221, 24020, -4141, -25931,
+	-7818, 22325, 18115, -13969, -24558, 2642, 25777, 9246,
+	-21512, -19169, 12671, 25013, -1134, -25536, -10644, 20627,
+	20158, -11329, -25383, -378, 25209, 12005, -19671, -21078},
+	{
+// Carrier 40 Phase 2
+	18384, 22129, -8178, -25901, -3768, 24163, 14912, -17284,
+	-22885, 6729, 25989, 5257, -23564, -16126, 16126, 23564,
+	-5257, -25989, -6729, 22885, 17284, -14912, -24163, 3768,
+	25901, 8178, -22129, -18384, 13649, 24680, -2266, -25725,
+	-9599, 21297, 19422, -12339, -25114, 756, 25462, 10988,
+	-20394, -20394, 10988, 25462, 756, -25114, -12339, 19422,
+	21297, -9599, -25725, -2266, 24680, 13649, -18384, -22129,
+	8178, 25901, 3768, -24163, -14912, 17284, 22885, -6729,
+	-25989, -5257, 23564, 16126, -16126, -23564, 5257, 25989,
+	6729, -22885, -17284, 14912, 24163, -3768, -25901, -8178,
+	22129, 18384, -13649, -24680, 2266, 25725, 9599, -21297,
+	-19422, 12339, 25114, -756, -25462, -10988, 20394, 20394,
+	-10988, -25462, -756, 25114, 12339, -19422, -21297, 9599,
+	25725, 2266, -24680, -13649, 18384, 22129, -8178, -25901,
+	-3768, 24163, 14912, -17284, -22885, 6729, 25989, 5257,
+	-23564, -16126, 16126, 23563, -5257, -25989, -6729, 22885,
+	17284, -14912, -24163, 3768, 25901, 8178, -22129, -18384,
+	13649, 24680, -2266, -25725, -9599, 21297, 19422, -12339,
+	-25114, 756, 25462, 10988, -20394, -20394, 10988, 25462,
+	756, -25114, -12339, 19422, 21297, -9599, -25725, -2266,
+	24680, 13649, -18384, -22129, 8178, 25901, 3768, -24163,
+	-14912, 17284, 22885, -6729, -25989, -5257, 23564, 16126,
+	-16126, -23563, 5257, 25989, 6729, -22885, -17284, 14913,
+	24163, -3768, -25901, -8178, 22129, 18384, -13649, -24680,
+	2266, 25725, 9599, -21297, -19422, 12339, 25114, -756,
+	-25462, -10988, 20394, 20394, -10988, -25462, -756, 25114,
+	12339, -19422, -21297, 9599, 25725, 2266, -24680, -13649},
+	{
+// Carrier 40 Phase 3
+	24020, 15221, -17000, -23062, 6363, 25997, 5627, -23401,
+	-16421, 15827, 23721, -4886, -25975, -7093, 22703, 17565,
+	-14601, -24300, 3393, 25865, 8536, -21928, -18650, 13326,
+	24796, -1889, -25667, -9949, 21078, 19671, -12005, -25209,
+	378, 25383, 11329, -20158, -20627, 10644, 25536, 1134,
+	-25013, -12671, 19169, 21512, -9246, -25777, -2642, 24558,
+	13969, -18115, -22325, 7818, 25931, 4141, -24020, -15221,
+	17000, 23062, -6363, -25997, -5627, 23401, 16421, -15827,
+	-23721, 4886, 25975, 7093, -22703, -17565, 14601, 24300,
+	-3393, -25865, -8536, 21928, 18650, -13326, -24796, 1889,
+	25667, 9949, -21078, -19671, 12005, 25209, -378, -25383,
+	-11329, 20158, 20627, -10644, -25536, -1134, 25013, 12671,
+	-19169, -21512, 9246, 25777, 2642, -24558, -13969, 18115,
+	22325, -7818, -25931, -4141, 24020, 15221, -17000, -23062,
+	6363, 25997, 5627, -23401, -16421, 15827, 23721, -4886,
+	-25975, -7093, 22703, 17565, -14601, -24300, 3393, 25865,
+	8536, -21928, -18650, 13326, 24796, -1889, -25667, -9949,
+	21078, 19671, -12005, -25209, 378, 25383, 11329, -20158,
+	-20627, 10644, 25536, 1134, -25013, -12671, 19169, 21512,
+	-9246, -25777, -2642, 24558, 13969, -18115, -22325, 7818,
+	25931, 4141, -24020, -15221, 17000, 23062, -6363, -25997,
+	-5627, 23401, 16421, -15827, -23721, 4886, 25975, 7093,
+	-22703, -17565, 14601, 24300, -3393, -25865, -8536, 21928,
+	18650, -13326, -24796, 1889, 25667, 9949, -21078, -19671,
+	12005, 25209, -378, -25383, -11329, 20158, 20627, -10644,
+	-25536, -1134, 25013, 12671, -19169, -21512, 9246, 25777,
+	2642, -24558, -13969, 18115, 22325, -7818, -25931, -4141},
+	{
+// Carrier 40 Phase 4
+	26000, 5996, -23234, -16712, 15526, 23873, -4514, -25956,
+	-7456, 22516, 17842, -14287, -24432, 3018, 25824, 8892,
+	-21722, -18911, 13000, 24907, -1511, -25605, -10298, 20855,
+	19917, -11668, -25299, 0, 25299, 11668, -19917, -20855,
+	10298, 25604, 1511, -24907, -12999, 18911, 21722, -8892,
+	-25824, -3018, 24432, 14287, -17842, -22516, 7456, 25956,
+	4514, -23873, -15526, 16712, 23234, -5996, -26000, -5996,
+	23234, 16712, -15526, -23873, 4514, 25956, 7456, -22516,
+	-17842, 14287, 24432, -3018, -25824, -8892, 21722, 18911,
+	-13000, -24907, 1511, 25605, 10298, -20855, -19917, 11668,
+	25299, 0, -25299, -11668, 19917, 20855, -10298, -25604,
+	-1511, 24907, 12999, -18911, -21722, 8892, 25824, 3018,
+	-24432, -14287, 17842, 22516, -7456, -25956, -4514, 23873,
+	15526, -16712, -23234, 5996, 26000, 5995, -23234, -16712,
+	15526, 23873, -4514, -25956, -7456, 22516, 17842, -14287,
+	-24432, 3018, 25824, 8892, -21722, -18911, 13000, 24907,
+	-1511, -25605, -10298, 20855, 19917, -11668, -25299, 0,
+	25299, 11668, -19917, -20855, 10298, 25604, 1511, -24907,
+	-12999, 18911, 21722, -8892, -25824, -3018, 24432, 14287,
+	-17842, -22516, 7456, 25956, 4514, -23873, -15526, 16712,
+	23234, -5996, -26000, -5995, 23234, 16712, -15526, -23873,
+	4514, 25956, 7456, -22516, -17842, 14287, 24431, -3018,
+	-25824, -8892, 21722, 18911, -13000, -24907, 1511, 25605,
+	10298, -20855, -19917, 11668, 25299, 0, -25299, -11668,
+	19917, 20855, -10298, -25604, -1511, 24907, 12999, -18911,
+	-21722, 8892, 25824, 3018, -24432, -14287, 17842, 22516,
+	-7456, -25956, -4514, 23873, 15526, -16712, -23234, 5996},
+	{
+// Carrier 40 Phase 5
+	24020, -4141, -25931, -7818, 22325, 18115, -13969, -24558,
+	2642, 25777, 9246, -21512, -19169, 12671, 25013, -1134,
+	-25536, -10644, 20627, 20158, -11329, -25383, -378, 25209,
+	12005, -19671, -21078, 9949, 25667, 1889, -24796, -13326,
+	18650, 21928, -8536, -25865, -3393, 24300, 14601, -17565,
+	-22703, 7093, 25975, 4886, -23721, -15827, 16421, 23401,
+	-5627, -25997, -6363, 23062, 17000, -15221, -24020, 4141,
+	25931, 7818, -22325, -18115, 13969, 24558, -2642, -25777,
+	-9246, 21512, 19169, -12671, -25013, 1134, 25536, 10644,
+	-20627, -20158, 11329, 25383, 378, -25209, -12005, 19671,
+	21078, -9949, -25667, -1889, 24796, 13326, -18650, -21928,
+	8536, 25865, 3393, -24300, -14601, 17565, 22703, -7093,
+	-25975, -4886, 23721, 15827, -16421, -23401, 5627, 25997,
+	6363, -23062, -17000, 15221, 24020, -4141, -25931, -7818,
+	22325, 18115, -13969, -24558, 2642, 25777, 9246, -21512,
+	-19169, 12671, 25013, -1134, -25536, -10644, 20627, 20158,
+	-11329, -25383, -378, 25209, 12005, -19671, -21078, 9949,
+	25667, 1889, -24796, -13326, 18650, 21928, -8536, -25865,
+	-3393, 24300, 14601, -17565, -22703, 7093, 25975, 4886,
+	-23721, -15827, 16421, 23401, -5627, -25997, -6363, 23062,
+	17000, -15221, -24020, 4141, 25931, 7818, -22325, -18115,
+	13969, 24558, -2642, -25777, -9246, 21512, 19169, -12671,
+	-25013, 1134, 25536, 10644, -20627, -20158, 11329, 25383,
+	378, -25209, -12005, 19671, 21078, -9949, -25667, -1889,
+	24796, 13326, -18650, -21928, 8536, 25865, 3393, -24300,
+	-14601, 17565, 22703, -7093, -25975, -4886, 23721, 15827,
+	-16421, -23401, 5627, 25997, 6363, -23062, -17000, 15221},
+	{
+// Carrier 40 Phase 6
+	18384, -13649, -24680, 2266, 25725, 9599, -21297, -19422,
+	12339, 25114, -756, -25462, -10988, 20394, 20394, -10988,
+	-25462, -756, 25114, 12339, -19422, -21297, 9599, 25725,
+	2266, -24680, -13649, 18384, 22129, -8178, -25901, -3768,
+	24163, 14912, -17284, -22885, 6729, 25989, 5257, -23564,
+	-16126, 16126, 23564, -5257, -25989, -6729, 22885, 17284,
+	-14912, -24163, 3768, 25901, 8178, -22129, -18384, 13649,
+	24680, -2266, -25725, -9599, 21297, 19422, -12339, -25114,
+	756, 25462, 10988, -20394, -20394, 10988, 25462, 756,
+	-25114, -12339, 19422, 21297, -9599, -25725, -2266, 24680,
+	13649, -18384, -22129, 8178, 25901, 3768, -24163, -14912,
+	17284, 22885, -6729, -25989, -5257, 23564, 16126, -16126,
+	-23564, 5257, 25989, 6729, -22885, -17284, 14912, 24163,
+	-3768, -25901, -8178, 22129, 18384, -13649, -24680, 2266,
+	25725, 9599, -21297, -19422, 12339, 25114, -756, -25462,
+	-10988, 20394, 20394, -10988, -25462, -756, 25114, 12339,
+	-19422, -21297, 9599, 25725, 2266, -24680, -13649, 18384,
+	22129, -8178, -25901, -3768, 24163, 14912, -17284, -22885,
+	6729, 25989, 5257, -23564, -16126, 16126, 23563, -5257,
+	-25989, -6729, 22885, 17284, -14912, -24163, 3768, 25901,
+	8178, -22129, -18384, 13649, 24680, -2266, -25725, -9599,
+	21297, 19422, -12339, -25114, 756, 25462, 10988, -20394,
+	-20394, 10988, 25462, 756, -25114, -12339, 19422, 21297,
+	-9599, -25725, -2266, 24680, 13649, -18384, -22129, 8178,
+	25901, 3768, -24163, -14912, 17284, 22885, -6729, -25989,
+	-5257, 23564, 16126, -16126, -23563, 5257, 25989, 6729,
+	-22885, -17284, 14913, 24163, -3768, -25901, -8178, 22129},
+	{
+// Carrier 40 Phase 7
+	9949, -21078, -19671, 12005, 25209, -378, -25383, -11329,
+	20158, 20627, -10644, -25536, -1134, 25013, 12671, -19169,
+	-21512, 9246, 25777, 2642, -24558, -13969, 18115, 22325,
+	-7818, -25931, -4141, 24020, 15221, -17000, -23062, 6363,
+	25997, 5627, -23401, -16421, 15827, 23721, -4886, -25975,
+	-7093, 22703, 17565, -14601, -24300, 3393, 25865, 8536,
+	-21928, -18650, 13326, 24796, -1889, -25667, -9949, 21078,
+	19671, -12005, -25209, 378, 25383, 11329, -20158, -20627,
+	10644, 25536, 1134, -25013, -12671, 19169, 21512, -9246,
+	-25777, -2642, 24558, 13969, -18115, -22325, 7818, 25931,
+	4141, -24020, -15221, 17000, 23062, -6363, -25997, -5627,
+	23401, 16421, -15827, -23721, 4886, 25975, 7093, -22703,
+	-17565, 14601, 24300, -3393, -25865, -8536, 21928, 18650,
+	-13326, -24796, 1889, 25667, 9949, -21078, -19671, 12005,
+	25209, -378, -25383, -11329, 20158, 20627, -10644, -25536,
+	-1134, 25013, 12671, -19169, -21512, 9246, 25777, 2642,
+	-24558, -13969, 18115, 22325, -7818, -25931, -4141, 24020,
+	15221, -17000, -23062, 6363, 25997, 5627, -23401, -16421,
+	15827, 23721, -4886, -25975, -7093, 22703, 17565, -14601,
+	-24300, 3393, 25865, 8536, -21928, -18650, 13326, 24796,
+	-1889, -25667, -9949, 21078, 19671, -12005, -25209, 378,
+	25383, 11329, -20158, -20627, 10644, 25536, 1134, -25013,
+	-12671, 19169, 21512, -9246, -25777, -2642, 24558, 13969,
+	-18115, -22325, 7818, 25931, 4141, -24020, -15221, 17000,
+	23062, -6363, -25997, -5627, 23401, 16421, -15827, -23721,
+	4886, 25975, 7093, -22703, -17565, 14601, 24300, -3393,
+	-25865, -8536, 21928, 18650, -13326, -24796, 1889, 25667},
+	},{{
+
+// Carrier 41 Phase 0
+	0, 25462, 10298, -21297, -18911, 13649, 24432, -3768,
+	-25956, -6729, 23234, 16126, -16712, -22885, 7456, 25901,
+	3018, -24680, -12999, 19422, 20855, -10988, -25299, 756,
+	25605, 9599, -21722, -18384, 14287, 24163, -4514, -25989,
+	-5995, 23564, 15526, -17284, -22516, 8178, 25824, 2266,
+	-24907, -12339, 19917, 20394, -11668, -25114, 1511, 25725,
+	8892, -22129, -17842, 14913, 23873, -5257, -26000, -5257,
+	23873, 14912, -17842, -22129, 8892, 25725, 1511, -25114,
+	-11668, 20394, 19917, -12339, -24907, 2266, 25824, 8178,
+	-22516, -17284, 15526, 23563, -5996, -25988, -4514, 24163,
+	14287, -18384, -21722, 9599, 25604, 756, -25299, -10987,
+	20855, 19422, -13000, -24680, 3018, 25901, 7456, -22885,
+	-16712, 16126, 23234, -6729, -25956, -3768, 24432, 13649,
+	-18911, -21297, 10298, 25462, 0, -25462, -10297, 21298,
+	18911, -13649, -24431, 3768, 25956, 6729, -23234, -16125,
+	16712, 22885, -7457, -25901, -3018, 24680, 12999, -19422,
+	-20855, 10988, 25299, -756, -25605, -9599, 21722, 18384,
+	-14287, -24162, 4515, 25989, 5995, -23564, -15525, 17284,
+	22516, -8178, -25824, -2265, 24907, 12339, -19917, -20394,
+	11668, 25114, -1511, -25725, -8892, 22129, 17842, -14913,
+	-23873, 5257, 26000, 5257, -23873, -14912, 17842, 22128,
+	-8892, -25725, -1511, 25114, 11668, -20394, -19916, 12339,
+	24907, -2266, -25824, -8177, 22516, 17284, -15526, -23563,
+	5996, 25988, 4514, -24163, -14286, 18384, 21722, -9599,
+	-25604, -755, 25299, 10987, -20855, -19422, 13000, 24680,
+	-3018, -25901, -7456, 22885, 16712, -16126, -23234, 6729,
+	25955, 3767, -24432, -13649, 18911, 21297, -10298, -25462},
+	{
+// Carrier 41 Phase 1
+	9949, 25536, 378, -25383, -10644, 21078, 19169, -13326,
+	-24558, 3393, 25931, 7093, -23062, -16421, 16421, 23062,
+	-7093, -25931, -3393, 24558, 13326, -19169, -21078, 10644,
+	25383, -378, -25536, -9949, 21512, 18650, -13969, -24300,
+	4142, 25975, 6363, -23401, -15827, 17000, 22703, -7818,
+	-25865, -2642, 24796, 12671, -19672, -20627, 11329, 25209,
+	-1134, -25667, -9246, 21928, 18115, -14601, -24020, 4886,
+	25997, 5627, -23721, -15221, 17565, 22325, -8536, -25777,
+	-1889, 25013, 12005, -20158, -20158, 12005, 25013, -1889,
+	-25777, -8536, 22325, 17565, -15221, -23721, 5627, 25997,
+	4886, -24020, -14601, 18115, 21928, -9247, -25667, -1133,
+	25209, 11329, -20627, -19671, 12671, 24796, -2642, -25865,
+	-7818, 22703, 17000, -15827, -23401, 6363, 25975, 4141,
+	-24300, -13969, 18650, 21512, -9949, -25536, -377, 25383,
+	10644, -21078, -19169, 13326, 24558, -3393, -25931, -7093,
+	23062, 16420, -16421, -23062, 7094, 25931, 3393, -24558,
+	-13325, 19169, 21078, -10644, -25383, 378, 25536, 9949,
+	-21512, -18650, 13969, 24300, -4142, -25975, -6363, 23401,
+	15827, -17000, -22703, 7818, 25865, 2642, -24796, -12670,
+	19672, 20627, -11329, -25209, 1134, 25667, 9246, -21928,
+	-18115, 14601, 24020, -4887, -25997, -5627, 23721, 15220,
+	-17565, -22325, 8536, 25777, 1888, -25013, -12005, 20158,
+	20157, -12005, -25013, 1889, 25777, 8535, -22325, -17565,
+	15221, 23721, -5627, -25997, -4886, 24020, 14601, -18115,
+	-21928, 9247, 25667, 1133, -25209, -11329, 20627, 19671,
+	-12671, -24796, 2642, 25865, 7818, -22703, -17000, 15828,
+	23401, -6363, -25975, -4141, 24300, 13969, -18650, -21512},
+	{
+// Carrier 41 Phase 2
+	18384, 21722, -9599, -25605, -756, 25299, 10988, -20855,
+	-19422, 13000, 24680, -3018, -25901, -7456, 22885, 16712,
+	-16126, -23234, 6729, 25956, 3768, -24432, -13649, 18911,
+	21297, -10298, -25462, 0, 25462, 10298, -21297, -18911,
+	13649, 24431, -3768, -25956, -6729, 23234, 16126, -16712,
+	-22885, 7456, 25901, 3018, -24680, -12999, 19422, 20855,
+	-10988, -25299, 756, 25605, 9599, -21722, -18384, 14287,
+	24163, -4514, -25989, -5995, 23564, 15526, -17284, -22516,
+	8178, 25824, 2265, -24907, -12339, 19917, 20394, -11668,
+	-25114, 1511, 25725, 8892, -22129, -17842, 14913, 23873,
+	-5257, -26000, -5257, 23873, 14912, -17842, -22128, 8892,
+	25725, 1511, -25114, -11668, 20394, 19917, -12339, -24907,
+	2266, 25824, 8178, -22516, -17284, 15526, 23563, -5996,
+	-25988, -4514, 24163, 14287, -18384, -21722, 9599, 25604,
+	756, -25299, -10987, 20855, 19422, -13000, -24680, 3018,
+	25901, 7456, -22885, -16712, 16126, 23234, -6729, -25956,
+	-3768, 24432, 13649, -18911, -21297, 10298, 25462, 0,
+	-25462, -10297, 21298, 18911, -13649, -24431, 3768, 25956,
+	6729, -23234, -16125, 16712, 22885, -7457, -25901, -3018,
+	24680, 12999, -19422, -20855, 10988, 25299, -756, -25605,
+	-9599, 21722, 18384, -14287, -24162, 4515, 25989, 5995,
+	-23564, -15525, 17284, 22516, -8178, -25824, -2265, 24907,
+	12339, -19917, -20394, 11669, 25113, -1512, -25725, -8892,
+	22129, 17842, -14913, -23873, 5257, 26000, 5257, -23873,
+	-14912, 17842, 22128, -8892, -25725, -1511, 25114, 11668,
+	-20395, -19916, 12339, 24907, -2266, -25824, -8177, 22516,
+	17284, -15526, -23563, 5996, 25988, 4514, -24163, -14286},
+	{
+// Carrier 41 Phase 3
+	24020, 14601, -18115, -21928, 9246, 25667, 1134, -25209,
+	-11329, 20627, 19671, -12671, -24796, 2642, 25865, 7818,
+	-22703, -17000, 15827, 23401, -6363, -25975, -4141, 24300,
+	13969, -18650, -21512, 9949, 25536, 378, -25383, -10644,
+	21078, 19169, -13326, -24558, 3393, 25931, 7093, -23062,
+	-16420, 16421, 23062, -7093, -25931, -3393, 24558, 13326,
+	-19169, -21078, 10644, 25383, -378, -25536, -9949, 21512,
+	18650, -13969, -24300, 4142, 25975, 6363, -23401, -15827,
+	17000, 22703, -7818, -25865, -2642, 24796, 12671, -19672,
+	-20627, 11329, 25209, -1134, -25667, -9246, 21928, 18115,
+	-14601, -24020, 4886, 25997, 5627, -23721, -15221, 17565,
+	22325, -8536, -25777, -1888, 25013, 12005, -20158, -20158,
+	12005, 25013, -1889, -25777, -8536, 22325, 17565, -15221,
+	-23721, 5627, 25997, 4886, -24020, -14601, 18115, 21928,
+	-9247, -25667, -1133, 25209, 11329, -20627, -19671, 12671,
+	24796, -2642, -25865, -7818, 22703, 17000, -15827, -23401,
+	6363, 25975, 4141, -24300, -13969, 18650, 21512, -9949,
+	-25536, -377, 25383, 10643, -21078, -19169, 13326, 24558,
+	-3393, -25931, -7093, 23062, 16420, -16421, -23062, 7094,
+	25931, 3393, -24558, -13325, 19169, 21078, -10644, -25383,
+	378, 25536, 9949, -21512, -18650, 13970, 24299, -4142,
+	-25975, -6363, 23401, 15827, -17000, -22703, 7818, 25865,
+	2642, -24796, -12670, 19672, 20627, -11329, -25209, 1134,
+	25668, 9246, -21928, -18115, 14601, 24020, -4887, -25997,
+	-5627, 23721, 15220, -17565, -22325, 8536, 25777, 1888,
+	-25013, -12005, 20158, 20157, -12005, -25013, 1889, 25777,
+	8535, -22325, -17565, 15221, 23721, -5627, -25997, -4886},
+	{
+// Carrier 41 Phase 4
+	26000, 5257, -23873, -14912, 17842, 22129, -8892, -25725,
+	-1511, 25114, 11668, -20394, -19917, 12339, 24907, -2266,
+	-25824, -8178, 22516, 17284, -15526, -23563, 5996, 25989,
+	4514, -24163, -14287, 18384, 21722, -9599, -25604, -756,
+	25299, 10988, -20855, -19422, 13000, 24680, -3018, -25901,
+	-7456, 22885, 16712, -16126, -23234, 6729, 25956, 3768,
+	-24432, -13649, 18911, 21297, -10298, -25462, 0, 25462,
+	10297, -21298, -18911, 13649, 24431, -3768, -25956, -6729,
+	23234, 16126, -16712, -22885, 7456, 25901, 3018, -24680,
+	-12999, 19422, 20855, -10988, -25299, 756, 25605, 9599,
+	-21722, -18384, 14287, 24162, -4514, -25989, -5995, 23564,
+	15526, -17284, -22516, 8178, 25824, 2265, -24907, -12339,
+	19917, 20394, -11668, -25114, 1511, 25725, 8892, -22129,
+	-17842, 14913, 23873, -5257, -26000, -5257, 23873, 14912,
+	-17842, -22128, 8892, 25725, 1511, -25114, -11668, 20394,
+	19917, -12339, -24907, 2266, 25824, 8177, -22516, -17284,
+	15526, 23563, -5996, -25988, -4514, 24163, 14287, -18384,
+	-21722, 9599, 25604, 755, -25299, -10987, 20855, 19422,
+	-13000, -24680, 3018, 25901, 7456, -22885, -16712, 16126,
+	23234, -6729, -25955, -3767, 24432, 13649, -18911, -21297,
+	10298, 25462, 0, -25462, -10297, 21298, 18911, -13649,
+	-24431, 3768, 25956, 6729, -23234, -16125, 16712, 22885,
+	-7457, -25901, -3018, 24680, 12999, -19422, -20855, 10988,
+	25299, -756, -25605, -9599, 21722, 18384, -14287, -24162,
+	4515, 25989, 5995, -23564, -15525, 17284, 22516, -8178,
+	-25824, -2265, 24907, 12339, -19917, -20394, 11669, 25113,
+	-1512, -25725, -8892, 22129, 17842, -14913, -23873, 5257},
+	{
+// Carrier 41 Phase 5
+	24020, -4886, -25997, -5627, 23721, 15221, -17565, -22325,
+	8536, 25777, 1889, -25013, -12005, 20158, 20158, -12005,
+	-25013, 1889, 25777, 8536, -22325, -17565, 15221, 23721,
+	-5627, -25997, -4886, 24020, 14601, -18115, -21928, 9246,
+	25667, 1134, -25209, -11329, 20627, 19671, -12671, -24796,
+	2642, 25865, 7818, -22703, -17000, 15827, 23401, -6363,
+	-25975, -4141, 24300, 13969, -18650, -21512, 9949, 25536,
+	378, -25383, -10644, 21078, 19169, -13326, -24558, 3393,
+	25931, 7093, -23062, -16420, 16421, 23062, -7093, -25931,
+	-3393, 24558, 13326, -19169, -21078, 10644, 25383, -378,
+	-25536, -9949, 21512, 18650, -13969, -24300, 4142, 25975,
+	6363, -23401, -15827, 17000, 22703, -7818, -25865, -2642,
+	24796, 12671, -19672, -20627, 11329, 25209, -1134, -25667,
+	-9246, 21928, 18115, -14601, -24020, 4886, 25997, 5627,
+	-23721, -15221, 17565, 22325, -8536, -25777, -1888, 25013,
+	12005, -20158, -20157, 12005, 25013, -1889, -25777, -8536,
+	22325, 17565, -15221, -23721, 5627, 25997, 4886, -24020,
+	-14601, 18115, 21928, -9247, -25667, -1133, 25209, 11329,
+	-20627, -19671, 12671, 24796, -2642, -25865, -7818, 22703,
+	17000, -15828, -23401, 6363, 25975, 4141, -24300, -13969,
+	18650, 21512, -9950, -25536, -377, 25383, 10643, -21078,
+	-19169, 13326, 24558, -3393, -25931, -7093, 23062, 16420,
+	-16421, -23062, 7094, 25931, 3393, -24558, -13325, 19169,
+	21078, -10644, -25383, 378, 25536, 9949, -21512, -18649,
+	13970, 24299, -4142, -25975, -6363, 23401, 15827, -17000,
+	-22703, 7818, 25865, 2642, -24796, -12670, 19672, 20626,
+	-11329, -25209, 1134, 25668, 9246, -21928, -18115, 14601},
+	{
+// Carrier 41 Phase 6
+	18384, -14287, -24163, 4514, 25989, 5996, -23564, -15526,
+	17284, 22516, -8178, -25824, -2266, 24907, 12339, -19917,
+	-20394, 11668, 25114, -1511, -25725, -8892, 22129, 17842,
+	-14913, -23873, 5257, 26000, 5257, -23873, -14912, 17842,
+	22129, -8892, -25725, -1511, 25114, 11668, -20394, -19917,
+	12339, 24907, -2266, -25824, -8178, 22516, 17284, -15526,
+	-23563, 5996, 25988, 4514, -24163, -14287, 18384, 21722,
+	-9599, -25604, -756, 25299, 10987, -20855, -19422, 13000,
+	24680, -3018, -25901, -7456, 22885, 16712, -16126, -23234,
+	6729, 25956, 3768, -24432, -13649, 18911, 21297, -10298,
+	-25462, 0, 25462, 10297, -21298, -18911, 13649, 24431,
+	-3768, -25956, -6729, 23234, 16126, -16712, -22885, 7457,
+	25901, 3018, -24680, -12999, 19422, 20855, -10988, -25299,
+	756, 25605, 9599, -21722, -18384, 14287, 24162, -4515,
+	-25989, -5995, 23564, 15525, -17284, -22516, 8178, 25824,
+	2265, -24907, -12339, 19917, 20394, -11668, -25114, 1511,
+	25725, 8892, -22129, -17842, 14913, 23873, -5257, -26000,
+	-5257, 23873, 14912, -17842, -22128, 8892, 25725, 1511,
+	-25114, -11668, 20394, 19917, -12339, -24907, 2266, 25824,
+	8177, -22516, -17284, 15526, 23563, -5996, -25988, -4514,
+	24163, 14287, -18384, -21722, 9599, 25604, 755, -25299,
+	-10987, 20855, 19422, -13000, -24680, 3018, 25901, 7456,
+	-22885, -16712, 16126, 23234, -6729, -25955, -3767, 24432,
+	13649, -18911, -21297, 10298, 25462, 0, -25462, -10297,
+	21298, 18911, -13649, -24431, 3768, 25956, 6728, -23234,
+	-16125, 16712, 22885, -7457, -25901, -3018, 24680, 12999,
+	-19422, -20855, 10988, 25299, -756, -25605, -9599, 21722},
+	{
+// Carrier 41 Phase 7
+	9949, -21512, -18650, 13969, 24300, -4141, -25975, -6363,
+	23401, 15827, -17000, -22703, 7818, 25865, 2642, -24796,
+	-12671, 19671, 20627, -11329, -25209, 1134, 25667, 9246,
+	-21928, -18115, 14601, 24020, -4886, -25997, -5627, 23721,
+	15221, -17565, -22325, 8536, 25777, 1889, -25013, -12005,
+	20158, 20158, -12005, -25013, 1889, 25777, 8536, -22325,
+	-17565, 15221, 23721, -5627, -25997, -4886, 24020, 14601,
+	-18115, -21928, 9246, 25667, 1134, -25209, -11329, 20627,
+	19671, -12671, -24796, 2642, 25865, 7818, -22703, -17000,
+	15827, 23401, -6363, -25975, -4141, 24300, 13969, -18650,
+	-21512, 9949, 25536, 378, -25383, -10644, 21078, 19169,
+	-13326, -24558, 3393, 25931, 7093, -23062, -16420, 16421,
+	23062, -7093, -25931, -3393, 24558, 13325, -19169, -21078,
+	10644, 25383, -378, -25536, -9949, 21512, 18650, -13969,
+	-24300, 4142, 25975, 6363, -23401, -15827, 17000, 22703,
+	-7818, -25865, -2642, 24796, 12670, -19672, -20627, 11329,
+	25209, -1134, -25667, -9246, 21928, 18115, -14601, -24020,
+	4886, 25997, 5627, -23721, -15220, 17565, 22325, -8536,
+	-25777, -1888, 25013, 12005, -20158, -20157, 12005, 25013,
+	-1889, -25777, -8536, 22325, 17565, -15221, -23721, 5627,
+	25997, 4886, -24020, -14601, 18115, 21928, -9247, -25667,
+	-1133, 25209, 11329, -20627, -19671, 12671, 24796, -2642,
+	-25865, -7818, 22703, 17000, -15828, -23401, 6363, 25975,
+	4141, -24300, -13969, 18650, 21512, -9950, -25536, -377,
+	25383, 10643, -21078, -19168, 13326, 24558, -3393, -25931,
+	-7093, 23062, 16420, -16421, -23062, 7094, 25931, 3393,
+	-24558, -13325, 19169, 21078, -10644, -25383, 378, 25536},
+	},{{
+
+// Carrier 42 Phase 0
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605,
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605,
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605},
+	{
+// Carrier 42 Phase 1
+	9949, 25383, -1134, -25777, -7818, 23062, 15827, -17565,
+	-21928, 9949, 25383, -1134, -25777, -7818, 23062, 15827,
+	-17565, -21928, 9949, 25383, -1134, -25777, -7818, 23062,
+	15827, -17565, -21928, 9949, 25383, -1134, -25777, -7818,
+	23062, 15827, -17565, -21928, 9949, 25383, -1134, -25777,
+	-7818, 23062, 15827, -17565, -21928, 9949, 25383, -1134,
+	-25777, -7818, 23062, 15827, -17565, -21928, 9949, 25383,
+	-1134, -25777, -7818, 23062, 15827, -17565, -21928, 9949,
+	25383, -1134, -25777, -7818, 23062, 15827, -17565, -21928,
+	9949, 25383, -1134, -25777, -7818, 23062, 15827, -17565,
+	-21928, 9949, 25383, -1134, -25777, -7818, 23062, 15827,
+	-17565, -21928, 9949, 25383, -1134, -25777, -7818, 23062,
+	15827, -17565, -21928, 9949, 25383, -1134, -25777, -7818,
+	23062, 15827, -17565, -21928, 9949, 25383, -1134, -25777,
+	-7818, 23062, 15827, -17565, -21928, 9949, 25383, -1134,
+	-25777, -7818, 23062, 15827, -17565, -21928, 9949, 25383,
+	-1134, -25777, -7818, 23062, 15827, -17565, -21928, 9949,
+	25383, -1134, -25777, -7818, 23062, 15827, -17565, -21928,
+	9949, 25383, -1134, -25777, -7818, 23062, 15827, -17565,
+	-21928, 9949, 25383, -1134, -25777, -7818, 23062, 15827,
+	-17565, -21928, 9949, 25383, -1134, -25777, -7818, 23062,
+	15827, -17565, -21928, 9949, 25383, -1134, -25777, -7818,
+	23062, 15827, -17565, -21928, 9949, 25383, -1134, -25777,
+	-7818, 23062, 15827, -17565, -21928, 9949, 25383, -1134,
+	-25777, -7818, 23062, 15827, -17565, -21928, 9949, 25383,
+	-1134, -25777, -7818, 23062, 15827, -17565, -21928, 9949,
+	25383, -1134, -25777, -7818, 23062, 15827, -17565, -21928},
+	{
+// Carrier 42 Phase 2
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912,
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912,
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912},
+	{
+// Carrier 42 Phase 3
+	24020, 13969, -19169, -20627, 12005, 24796, -3393, -25975,
+	-5627, 24020, 13969, -19169, -20627, 12005, 24796, -3393,
+	-25975, -5627, 24020, 13969, -19169, -20627, 12005, 24796,
+	-3393, -25975, -5627, 24020, 13969, -19169, -20627, 12005,
+	24796, -3393, -25975, -5627, 24020, 13969, -19169, -20627,
+	12005, 24796, -3393, -25975, -5627, 24020, 13969, -19169,
+	-20627, 12005, 24796, -3393, -25975, -5627, 24020, 13969,
+	-19169, -20627, 12005, 24796, -3393, -25975, -5627, 24020,
+	13969, -19169, -20627, 12005, 24796, -3393, -25975, -5627,
+	24020, 13969, -19169, -20627, 12005, 24796, -3393, -25975,
+	-5627, 24020, 13969, -19169, -20627, 12005, 24796, -3393,
+	-25975, -5627, 24020, 13969, -19169, -20627, 12005, 24796,
+	-3393, -25975, -5627, 24020, 13969, -19169, -20627, 12005,
+	24796, -3393, -25975, -5627, 24020, 13969, -19169, -20627,
+	12005, 24796, -3393, -25975, -5627, 24020, 13969, -19169,
+	-20627, 12005, 24796, -3393, -25975, -5627, 24020, 13969,
+	-19169, -20627, 12005, 24796, -3393, -25975, -5627, 24020,
+	13969, -19169, -20627, 12005, 24796, -3393, -25975, -5627,
+	24020, 13969, -19169, -20627, 12005, 24796, -3393, -25975,
+	-5627, 24020, 13969, -19169, -20627, 12005, 24796, -3393,
+	-25975, -5627, 24020, 13969, -19169, -20627, 12005, 24796,
+	-3393, -25975, -5627, 24020, 13969, -19169, -20627, 12005,
+	24796, -3393, -25975, -5627, 24020, 13969, -19169, -20627,
+	12005, 24796, -3393, -25975, -5627, 24020, 13969, -19169,
+	-20627, 12005, 24796, -3393, -25975, -5627, 24020, 13969,
+	-19169, -20627, 12005, 24796, -3393, -25975, -5627, 24020,
+	13969, -19169, -20627, 12005, 24796, -3393, -25975, -5627},
+	{
+// Carrier 42 Phase 4
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514,
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514,
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514},
+	{
+// Carrier 42 Phase 5
+	24020, -5627, -25975, -3393, 24796, 12005, -20627, -19169,
+	13969, 24020, -5627, -25975, -3393, 24796, 12005, -20627,
+	-19169, 13969, 24020, -5627, -25975, -3393, 24796, 12005,
+	-20627, -19169, 13969, 24020, -5627, -25975, -3393, 24796,
+	12005, -20627, -19169, 13969, 24020, -5627, -25975, -3393,
+	24796, 12005, -20627, -19169, 13969, 24020, -5627, -25975,
+	-3393, 24796, 12005, -20627, -19169, 13969, 24020, -5627,
+	-25975, -3393, 24796, 12005, -20627, -19169, 13969, 24020,
+	-5627, -25975, -3393, 24796, 12005, -20627, -19169, 13969,
+	24020, -5627, -25975, -3393, 24796, 12005, -20627, -19169,
+	13969, 24020, -5627, -25975, -3393, 24796, 12005, -20627,
+	-19169, 13969, 24020, -5627, -25975, -3393, 24796, 12005,
+	-20627, -19169, 13969, 24020, -5627, -25975, -3393, 24796,
+	12005, -20627, -19169, 13969, 24020, -5627, -25975, -3393,
+	24796, 12005, -20627, -19169, 13969, 24020, -5627, -25975,
+	-3393, 24796, 12005, -20627, -19169, 13969, 24020, -5627,
+	-25975, -3393, 24796, 12005, -20627, -19169, 13969, 24020,
+	-5627, -25975, -3393, 24796, 12005, -20627, -19169, 13969,
+	24020, -5627, -25975, -3393, 24796, 12005, -20627, -19169,
+	13969, 24020, -5627, -25975, -3393, 24796, 12005, -20627,
+	-19169, 13969, 24020, -5627, -25975, -3393, 24796, 12005,
+	-20627, -19169, 13969, 24020, -5627, -25975, -3393, 24796,
+	12005, -20627, -19169, 13969, 24020, -5627, -25975, -3393,
+	24796, 12005, -20627, -19169, 13969, 24020, -5627, -25975,
+	-3393, 24796, 12005, -20627, -19169, 13969, 24020, -5627,
+	-25975, -3393, 24796, 12005, -20627, -19169, 13969, 24020,
+	-5627, -25975, -3393, 24796, 12005, -20627, -19169, 13969},
+	{
+// Carrier 42 Phase 6
+	18384, -14912, -23564, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297,
+	18384, -14912, -23563, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297,
+	18384, -14912, -23563, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297},
+	{
+// Carrier 42 Phase 7
+	9949, -21928, -17565, 15827, 23062, -7818, -25777, -1134,
+	25383, 9949, -21928, -17565, 15827, 23062, -7818, -25777,
+	-1134, 25383, 9949, -21928, -17565, 15827, 23062, -7818,
+	-25777, -1134, 25383, 9949, -21928, -17565, 15827, 23062,
+	-7818, -25777, -1134, 25383, 9949, -21928, -17565, 15827,
+	23062, -7818, -25777, -1134, 25383, 9949, -21928, -17565,
+	15827, 23062, -7818, -25777, -1134, 25383, 9949, -21928,
+	-17565, 15827, 23062, -7818, -25777, -1134, 25383, 9949,
+	-21928, -17565, 15827, 23062, -7818, -25777, -1134, 25383,
+	9949, -21928, -17565, 15827, 23062, -7818, -25777, -1134,
+	25383, 9949, -21928, -17565, 15827, 23062, -7818, -25777,
+	-1134, 25383, 9949, -21928, -17565, 15827, 23062, -7818,
+	-25777, -1134, 25383, 9949, -21928, -17565, 15827, 23062,
+	-7818, -25777, -1134, 25383, 9949, -21928, -17565, 15827,
+	23062, -7818, -25777, -1134, 25383, 9949, -21928, -17565,
+	15827, 23062, -7818, -25777, -1134, 25383, 9949, -21928,
+	-17565, 15827, 23062, -7818, -25777, -1134, 25383, 9949,
+	-21928, -17565, 15827, 23062, -7818, -25777, -1134, 25383,
+	9949, -21928, -17565, 15827, 23062, -7818, -25777, -1134,
+	25383, 9949, -21928, -17565, 15827, 23062, -7818, -25777,
+	-1134, 25383, 9949, -21928, -17565, 15827, 23062, -7818,
+	-25777, -1134, 25383, 9949, -21928, -17565, 15827, 23062,
+	-7818, -25777, -1134, 25383, 9949, -21928, -17565, 15827,
+	23062, -7818, -25777, -1134, 25383, 9949, -21928, -17565,
+	15827, 23062, -7818, -25777, -1134, 25383, 9949, -21928,
+	-17565, 15827, 23062, -7818, -25777, -1134, 25383, 9949,
+	-21928, -17565, 15827, 23062, -7818, -25777, -1134, 25383}}};
+
+
+/*
+
+8psk values
+
+// Carrier 0 Phase 0
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24432,
+	25605, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24432, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24432, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514,
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24431,
+	25604, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24431, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24431, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514,
+	0, 4514, 8892, 12999, 16712, 19917, 22516, 24431,
+	25604, 26000, 25605, 24432, 22516, 19917, 16712, 13000,
+	8892, 4514, 0, -4514, -8892, -12999, -16712, -19917,
+	-22516, -24431, -25604, -26000, -25605, -24432, -22516, -19917,
+	-16712, -13000, -8892, -4514, 0, 4514, 8892, 12999,
+	16712, 19917, 22516, 24431, 25604, 26000, 25605, 24432,
+	22516, 19917, 16712, 13000, 8892, 4514, 0, -4514,
+	-8892, -12999, -16712, -19917, -22516, -24431, -25604, -26000,
+	-25605, -24432, -22516, -19917, -16712, -13000, -8892, -4514},
+	{
+// Carrier 0 Phase 1
+	18384, 21297, 23564, 25114, 25901, 25901, 25114, 23564,
+	21297, 18384, 14912, 10988, 6729, 2266, -2266, -6729,
+	-10988, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21297, -18384, -14913, -10988, -6729, -2266,
+	2266, 6729, 10988, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21297, 18384, 14913, 10988,
+	6729, 2266, -2266, -6729, -10988, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21297, -18384,
+	-14913, -10988, -6729, -2266, 2266, 6729, 10988, 14912,
+	18384, 21297, 23563, 25114, 25901, 25901, 25114, 23564,
+	21297, 18384, 14913, 10988, 6729, 2266, -2265, -6729,
+	-10988, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21297, -18384, -14913, -10988, -6729, -2266,
+	2265, 6729, 10988, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21297, 18384, 14913, 10988,
+	6729, 2266, -2265, -6729, -10988, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21298, -18384,
+	-14913, -10988, -6729, -2266, 2265, 6729, 10987, 14912,
+	18384, 21297, 23563, 25114, 25901, 25901, 25114, 23564,
+	21298, 18384, 14913, 10988, 6729, 2266, -2265, -6729,
+	-10987, -14912, -18384, -21297, -23563, -25114, -25901, -25901,
+	-25114, -23564, -21298, -18384, -14913, -10988, -6729, -2266,
+	2265, 6729, 10987, 14912, 18384, 21297, 23563, 25114,
+	25901, 25901, 25114, 23564, 21298, 18384, 14913, 10988,
+	6729, 2266, -2265, -6729, -10987, -14912, -18384, -21297,
+	-23563, -25114, -25901, -25901, -25114, -23564, -21298, -18384,
+	-14913, -10988, -6729, -2266, 2265, 6729, 10987, 14912},
+	{
+// Carrier 0 Phase 2
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24432, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24432, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604,
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24431, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24431, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604,
+	26000, 25605, 24432, 22516, 19917, 16712, 13000, 8892,
+	4514, 0, -4514, -8892, -12999, -16712, -19917, -22516,
+	-24431, -25604, -26000, -25605, -24432, -22516, -19917, -16712,
+	-13000, -8892, -4514, 0, 4514, 8892, 12999, 16712,
+	19917, 22516, 24431, 25604, 26000, 25605, 24432, 22516,
+	19917, 16712, 13000, 8892, 4514, 0, -4514, -8892,
+	-12999, -16712, -19917, -22516, -24431, -25604, -26000, -25605,
+	-24432, -22516, -19917, -16712, -13000, -8892, -4514, 0,
+	4514, 8892, 12999, 16712, 19917, 22516, 24431, 25604},
+	{
+// Carrier 0 Phase 3
+	18384, 14912, 10988, 6729, 2266, -2266, -6729, -10988,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21297, -18384, -14913, -10988, -6729, -2266, 2266,
+	6729, 10988, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21297, 18384, 14913, 10988, 6729,
+	2266, -2266, -6729, -10988, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21297, -18384, -14913,
+	-10988, -6729, -2266, 2266, 6729, 10988, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21297,
+	18384, 14913, 10988, 6729, 2266, -2265, -6729, -10988,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21297, -18384, -14913, -10988, -6729, -2266, 2265,
+	6729, 10988, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21297, 18384, 14913, 10988, 6729,
+	2266, -2265, -6729, -10988, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21298, -18384, -14913,
+	-10988, -6729, -2266, 2265, 6729, 10987, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21298,
+	18384, 14913, 10988, 6729, 2266, -2265, -6729, -10987,
+	-14912, -18384, -21297, -23563, -25114, -25901, -25901, -25114,
+	-23564, -21298, -18384, -14913, -10988, -6729, -2266, 2265,
+	6729, 10987, 14912, 18384, 21297, 23563, 25114, 25901,
+	25901, 25114, 23564, 21298, 18384, 14913, 10988, 6729,
+	2266, -2265, -6729, -10987, -14912, -18384, -21297, -23563,
+	-25114, -25901, -25901, -25114, -23564, -21298, -18384, -14913,
+	-10988, -6729, -2266, 2265, 6729, 10987, 14912, 18384,
+	21297, 23563, 25114, 25901, 25901, 25114, 23564, 21298},
+	},{{
+
+// Carrier 1 Phase 0
+	0, 5257, 10298, 14912, 18911, 22129, 24432, 25725,
+	25956, 25114, 23234, 20394, 16712, 12339, 7456, 2266,
+	-3018, -8178, -12999, -17284, -20855, -23563, -25299, -25989,
+	-25605, -24163, -21722, -18384, -14287, -9599, -4514, 756,
+	5996, 10988, 15526, 19422, 22516, 24680, 25824, 25901,
+	24907, 22885, 19917, 16126, 11668, 6729, 1511, -3768,
+	-8892, -13649, -17842, -21297, -23873, -25462, -26000, -25462,
+	-23873, -21297, -17842, -13649, -8892, -3768, 1511, 6729,
+	11668, 16126, 19917, 22885, 24907, 25901, 25824, 24680,
+	22516, 19422, 15526, 10988, 5996, 756, -4514, -9599,
+	-14287, -18384, -21722, -24163, -25604, -25989, -25299, -23564,
+	-20855, -17284, -13000, -8178, -3018, 2266, 7456, 12339,
+	16712, 20394, 23234, 25114, 25956, 25725, 24432, 22129,
+	18911, 14912, 10298, 5257, 0, -5257, -10298, -14912,
+	-18911, -22129, -24432, -25725, -25956, -25114, -23234, -20394,
+	-16712, -12339, -7456, -2266, 3018, 8178, 13000, 17284,
+	20855, 23564, 25299, 25989, 25604, 24163, 21722, 18384,
+	14287, 9599, 4514, -756, -5996, -10988, -15526, -19422,
+	-22516, -24680, -25824, -25901, -24907, -22885, -19917, -16126,
+	-11668, -6729, -1511, 3768, 8892, 13649, 17842, 21297,
+	23873, 25462, 26000, 25462, 23873, 21297, 17842, 13649,
+	8892, 3768, -1511, -6729, -11668, -16126, -19917, -22885,
+	-24907, -25901, -25824, -24680, -22516, -19422, -15526, -10988,
+	-5995, -756, 4514, 9599, 14287, 18384, 21722, 24163,
+	25605, 25989, 25299, 23563, 20855, 17284, 12999, 8178,
+	3018, -2266, -7456, -12339, -16712, -20394, -23234, -25114,
+	-25956, -25725, -24432, -22129, -18911, -14912, -10298, -5257},
+	{
+// Carrier 1 Phase 1
+	18384, 21722, 24163, 25605, 25989, 25299, 23564, 20855,
+	17284, 13000, 8178, 3018, -2266, -7456, -12339, -16712,
+	-20394, -23234, -25114, -25956, -25725, -24432, -22129, -18911,
+	-14912, -10298, -5257, 0, 5257, 10298, 14912, 18911,
+	22129, 24432, 25725, 25956, 25114, 23234, 20394, 16712,
+	12339, 7456, 2266, -3018, -8178, -12999, -17284, -20855,
+	-23563, -25299, -25989, -25605, -24163, -21722, -18384, -14287,
+	-9599, -4514, 756, 5996, 10988, 15526, 19422, 22516,
+	24680, 25824, 25901, 24907, 22885, 19917, 16126, 11668,
+	6729, 1511, -3768, -8892, -13649, -17842, -21297, -23873,
+	-25462, -26000, -25462, -23873, -21297, -17842, -13649, -8892,
+	-3768, 1511, 6729, 11668, 16126, 19917, 22885, 24907,
+	25901, 25824, 24680, 22516, 19422, 15526, 10988, 5996,
+	756, -4514, -9599, -14287, -18384, -21722, -24163, -25604,
+	-25989, -25299, -23564, -20855, -17284, -12999, -8178, -3018,
+	2266, 7456, 12339, 16712, 20394, 23234, 25114, 25956,
+	25725, 24432, 22129, 18911, 14912, 10298, 5257, 0,
+	-5257, -10298, -14912, -18911, -22129, -24432, -25725, -25956,
+	-25114, -23234, -20394, -16712, -12339, -7456, -2266, 3018,
+	8178, 13000, 17284, 20855, 23564, 25299, 25989, 25604,
+	24163, 21722, 18384, 14287, 9599, 4514, -756, -5996,
+	-10988, -15526, -19422, -22516, -24680, -25824, -25901, -24907,
+	-22885, -19917, -16126, -11668, -6729, -1511, 3768, 8892,
+	13649, 17842, 21297, 23873, 25462, 26000, 25462, 23873,
+	21297, 17842, 13649, 8892, 3768, -1511, -6729, -11668,
+	-16126, -19917, -22885, -24907, -25901, -25824, -24680, -22516,
+	-19422, -15526, -10988, -5995, -756, 4514, 9599, 14287},
+	{
+// Carrier 1 Phase 2
+	26000, 25462, 23873, 21297, 17842, 13649, 8892, 3768,
+	-1511, -6729, -11668, -16126, -19917, -22885, -24907, -25901,
+	-25824, -24680, -22516, -19422, -15526, -10988, -5996, -756,
+	4514, 9599, 14287, 18384, 21722, 24163, 25605, 25989,
+	25299, 23563, 20855, 17284, 13000, 8178, 3018, -2266,
+	-7456, -12339, -16712, -20394, -23234, -25114, -25956, -25725,
+	-24432, -22129, -18911, -14912, -10298, -5257, 0, 5257,
+	10298, 14913, 18911, 22129, 24432, 25725, 25956, 25114,
+	23234, 20394, 16712, 12339, 7456, 2266, -3018, -8178,
+	-12999, -17284, -20855, -23563, -25299, -25989, -25605, -24163,
+	-21722, -18384, -14287, -9599, -4514, 756, 5996, 10988,
+	15526, 19422, 22516, 24680, 25824, 25901, 24907, 22885,
+	19917, 16126, 11668, 6729, 1511, -3768, -8892, -13649,
+	-17842, -21297, -23873, -25462, -26000, -25462, -23873, -21297,
+	-17842, -13649, -8892, -3768, 1511, 6729, 11668, 16126,
+	19917, 22885, 24907, 25901, 25824, 24680, 22516, 19422,
+	15526, 10988, 5995, 756, -4514, -9599, -14287, -18384,
+	-21722, -24163, -25605, -25989, -25299, -23563, -20855, -17284,
+	-12999, -8178, -3018, 2266, 7456, 12339, 16712, 20394,
+	23234, 25114, 25956, 25725, 24431, 22129, 18911, 14912,
+	10298, 5257, 0, -5257, -10298, -14912, -18911, -22129,
+	-24432, -25725, -25956, -25114, -23234, -20394, -16712, -12339,
+	-7456, -2266, 3018, 8178, 13000, 17284, 20855, 23564,
+	25299, 25989, 25604, 24163, 21722, 18384, 14287, 9599,
+	4514, -756, -5996, -10988, -15526, -19422, -22516, -24680,
+	-25824, -25901, -24907, -22885, -19917, -16126, -11668, -6729,
+	-1511, 3768, 8892, 13649, 17842, 21297, 23873, 25462},
+	{
+// Carrier 1 Phase 3
+	18384, 14287, 9599, 4514, -756, -5995, -10988, -15526,
+	-19422, -22516, -24680, -25824, -25901, -24907, -22885, -19917,
+	-16126, -11668, -6729, -1511, 3768, 8892, 13649, 17842,
+	21297, 23873, 25462, 26000, 25462, 23873, 21297, 17842,
+	13649, 8892, 3768, -1511, -6729, -11668, -16126, -19917,
+	-22885, -24907, -25901, -25824, -24680, -22516, -19422, -15526,
+	-10988, -5995, -756, 4514, 9599, 14287, 18384, 21722,
+	24163, 25605, 25989, 25299, 23563, 20855, 17284, 12999,
+	8178, 3018, -2266, -7456, -12339, -16712, -20394, -23234,
+	-25114, -25956, -25725, -24432, -22129, -18911, -14912, -10298,
+	-5257, 0, 5257, 10298, 14913, 18911, 22129, 24432,
+	25725, 25956, 25114, 23234, 20394, 16712, 12339, 7456,
+	2266, -3018, -8178, -13000, -17284, -20855, -23564, -25299,
+	-25989, -25604, -24163, -21722, -18384, -14287, -9599, -4514,
+	756, 5996, 10988, 15526, 19422, 22516, 24680, 25824,
+	25901, 24907, 22885, 19917, 16126, 11668, 6729, 1511,
+	-3768, -8892, -13649, -17842, -21297, -23873, -25462, -26000,
+	-25462, -23873, -21297, -17842, -13649, -8892, -3768, 1511,
+	6729, 11668, 16126, 19917, 22885, 24907, 25901, 25824,
+	24680, 22516, 19422, 15526, 10988, 5995, 756, -4514,
+	-9599, -14287, -18384, -21722, -24163, -25605, -25989, -25299,
+	-23563, -20855, -17284, -12999, -8178, -3018, 2266, 7456,
+	12339, 16712, 20394, 23234, 25114, 25956, 25725, 24431,
+	22129, 18911, 14912, 10298, 5257, 0, -5257, -10298,
+	-14913, -18911, -22129, -24432, -25725, -25956, -25114, -23234,
+	-20394, -16712, -12339, -7456, -2265, 3018, 8178, 13000,
+	17284, 20855, 23564, 25299, 25989, 25604, 24163, 21722},
+	},{{
+
+// Carrier 2 Phase 0
+	0, 5996, 11668, 16712, 20855, 23873, 25605, 25956,
+	24907, 22516, 18911, 14287, 8892, 3018, -3018, -8892,
+	-14287, -18911, -22516, -24907, -25956, -25605, -23873, -20855,
+	-16712, -11668, -5996, 0, 5995, 11668, 16712, 20855,
+	23873, 25604, 25956, 24907, 22516, 18911, 14287, 8892,
+	3018, -3018, -8892, -14287, -18911, -22516, -24907, -25956,
+	-25605, -23873, -20855, -16712, -11668, -5996, 0, 5995,
+	11668, 16712, 20855, 23873, 25604, 25956, 24907, 22516,
+	18911, 14287, 8892, 3018, -3018, -8892, -14287, -18911,
+	-22516, -24907, -25956, -25605, -23873, -20855, -16712, -11668,
+	-5996, 0, 5995, 11668, 16712, 20855, 23873, 25604,
+	25956, 24907, 22516, 18911, 14287, 8892, 3018, -3018,
+	-8892, -14287, -18911, -22516, -24907, -25956, -25605, -23873,
+	-20855, -16712, -11668, -5996, 0, 5995, 11668, 16712,
+	20855, 23873, 25604, 25956, 24907, 22516, 18911, 14287,
+	8892, 3018, -3018, -8892, -14287, -18911, -22516, -24907,
+	-25955, -25605, -23873, -20855, -16712, -11668, -5996, 0,
+	5995, 11668, 16712, 20855, 23873, 25604, 25956, 24907,
+	22516, 18911, 14287, 8892, 3018, -3018, -8892, -14287,
+	-18911, -22516, -24907, -25955, -25605, -23873, -20855, -16712,
+	-11669, -5996, 0, 5995, 11668, 16712, 20855, 23873,
+	25604, 25956, 24907, 22516, 18911, 14287, 8892, 3018,
+	-3018, -8892, -14286, -18911, -22516, -24907, -25955, -25605,
+	-23873, -20855, -16712, -11669, -5996, 0, 5995, 11668,
+	16712, 20854, 23873, 25604, 25956, 24907, 22516, 18911,
+	14287, 8892, 3018, -3018, -8892, -14286, -18911, -22516,
+	-24907, -25955, -25605, -23873, -20855, -16712, -11669, -5996},
+	{
+// Carrier 2 Phase 1
+	18384, 22129, 24680, 25901, 25725, 24163, 21297, 17284,
+	12339, 6729, 756, -5257, -10988, -16126, -20394, -23563,
+	-25462, -25989, -25114, -22885, -19422, -14913, -9599, -3768,
+	2265, 8178, 13649, 18384, 22129, 24680, 25901, 25725,
+	24163, 21297, 17284, 12339, 6729, 756, -5257, -10988,
+	-16126, -20394, -23563, -25462, -25989, -25114, -22885, -19422,
+	-14913, -9599, -3768, 2265, 8178, 13649, 18384, 22128,
+	24680, 25901, 25725, 24163, 21298, 17284, 12339, 6729,
+	756, -5257, -10987, -16126, -20394, -23563, -25462, -25989,
+	-25114, -22885, -19422, -14913, -9599, -3768, 2265, 8178,
+	13649, 18384, 22128, 24680, 25901, 25725, 24163, 21298,
+	17284, 12339, 6729, 756, -5257, -10987, -16126, -20394,
+	-23563, -25462, -25989, -25114, -22885, -19422, -14913, -9599,
+	-3768, 2265, 8177, 13649, 18384, 22128, 24680, 25901,
+	25725, 24163, 21298, 17284, 12339, 6729, 756, -5257,
+	-10987, -16125, -20394, -23563, -25462, -25989, -25114, -22885,
+	-19422, -14913, -9599, -3768, 2265, 8177, 13649, 18384,
+	22128, 24680, 25901, 25725, 24163, 21298, 17284, 12339,
+	6729, 756, -5257, -10987, -16125, -20394, -23563, -25462,
+	-25989, -25114, -22885, -19422, -14913, -9599, -3768, 2265,
+	8177, 13649, 18384, 22128, 24680, 25901, 25725, 24163,
+	21298, 17284, 12339, 6729, 756, -5257, -10987, -16125,
+	-20394, -23563, -25462, -25989, -25114, -22885, -19422, -14913,
+	-9599, -3768, 2265, 8177, 13649, 18384, 22128, 24680,
+	25901, 25725, 24163, 21298, 17284, 12339, 6729, 756,
+	-5257, -10987, -16125, -20394, -23563, -25462, -25989, -25114,
+	-22885, -19422, -14913, -9599, -3768, 2265, 8177, 13649},
+	{
+// Carrier 2 Phase 2
+	26000, 25299, 23234, 19917, 15526, 10298, 4514, -1511,
+	-7456, -12999, -17842, -21722, -24432, -25824, -25824, -24432,
+	-21722, -17842, -13000, -7456, -1511, 4514, 10298, 15526,
+	19917, 23234, 25299, 26000, 25299, 23234, 19917, 15526,
+	10298, 4514, -1511, -7456, -12999, -17842, -21722, -24431,
+	-25824, -25824, -24432, -21722, -17842, -13000, -7456, -1511,
+	4514, 10297, 15526, 19917, 23234, 25299, 26000, 25299,
+	23234, 19917, 15526, 10298, 4514, -1511, -7456, -12999,
+	-17842, -21722, -24431, -25824, -25824, -24432, -21722, -17842,
+	-13000, -7457, -1511, 4514, 10297, 15526, 19917, 23234,
+	25299, 26000, 25299, 23234, 19917, 15526, 10298, 4515,
+	-1511, -7456, -12999, -17842, -21722, -24431, -25824, -25824,
+	-24432, -21722, -17842, -13000, -7457, -1511, 4514, 10297,
+	15525, 19917, 23234, 25299, 26000, 25299, 23234, 19917,
+	15526, 10298, 4515, -1511, -7456, -12999, -17842, -21722,
+	-24431, -25824, -25824, -24432, -21722, -17842, -13000, -7457,
+	-1512, 4514, 10297, 15525, 19916, 23234, 25299, 26000,
+	25299, 23234, 19917, 15526, 10298, 4515, -1511, -7456,
+	-12999, -17842, -21722, -24431, -25824, -25824, -24432, -21722,
+	-17842, -13000, -7457, -1512, 4514, 10297, 15525, 19916,
+	23234, 25299, 26000, 25299, 23234, 19917, 15526, 10298,
+	4515, -1511, -7456, -12999, -17842, -21722, -24431, -25824,
+	-25824, -24432, -21722, -17842, -13000, -7457, -1512, 4514,
+	10297, 15525, 19916, 23234, 25299, 26000, 25299, 23234,
+	19917, 15526, 10298, 4515, -1511, -7456, -12999, -17842,
+	-21722, -24431, -25824, -25824, -24432, -21722, -17842, -13000,
+	-7457, -1512, 4514, 10297, 15525, 19916, 23234, 25299},
+	{
+// Carrier 2 Phase 3
+	18384, 13649, 8178, 2266, -3768, -9599, -14912, -19422,
+	-22885, -25114, -25989, -25462, -23564, -20394, -16126, -10988,
+	-5257, 756, 6729, 12339, 17284, 21297, 24163, 25725,
+	25901, 24680, 22129, 18384, 13649, 8178, 2266, -3768,
+	-9599, -14912, -19422, -22885, -25114, -25988, -25462, -23564,
+	-20394, -16126, -10988, -5257, 756, 6729, 12339, 17284,
+	21297, 24163, 25725, 25901, 24680, 22129, 18384, 13649,
+	8178, 2266, -3768, -9599, -14912, -19422, -22885, -25114,
+	-25988, -25462, -23564, -20394, -16126, -10988, -5257, 756,
+	6729, 12339, 17284, 21297, 24162, 25725, 25901, 24680,
+	22129, 18384, 13649, 8178, 2266, -3768, -9599, -14912,
+	-19422, -22885, -25114, -25988, -25462, -23564, -20394, -16126,
+	-10988, -5257, 756, 6729, 12339, 17284, 21297, 24162,
+	25725, 25901, 24680, 22129, 18384, 13649, 8178, 2266,
+	-3768, -9599, -14912, -19422, -22885, -25114, -25988, -25462,
+	-23564, -20394, -16126, -10988, -5257, 755, 6729, 12339,
+	17284, 21297, 24162, 25725, 25901, 24680, 22129, 18384,
+	13649, 8178, 2266, -3767, -9599, -14912, -19422, -22885,
+	-25114, -25988, -25462, -23564, -20394, -16126, -10988, -5257,
+	755, 6729, 12339, 17284, 21297, 24162, 25725, 25901,
+	24680, 22129, 18384, 13649, 8178, 2266, -3767, -9599,
+	-14912, -19422, -22885, -25113, -25988, -25462, -23564, -20395,
+	-16126, -10988, -5257, 755, 6728, 12339, 17284, 21297,
+	24162, 25725, 25901, 24680, 22129, 18385, 13649, 8178,
+	2266, -3767, -9599, -14912, -19422, -22885, -25113, -25988,
+	-25462, -23564, -20395, -16126, -10988, -5258, 755, 6728,
+	12339, 17284, 21297, 24162, 25725, 25901, 24680, 22129},
+	},{{
+
+// Carrier 3 Phase 0
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729,
+	0, 6729, 12999, 18384, 22516, 25114, 26000, 25114,
+	22516, 18384, 13000, 6729, 0, -6729, -12999, -18384,
+	-22516, -25114, -26000, -25114, -22516, -18384, -13000, -6729},
+	{
+// Carrier 3 Phase 1
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999,
+	18384, 22516, 25114, 26000, 25114, 22516, 18384, 13000,
+	6729, 0, -6729, -12999, -18384, -22516, -25114, -26000,
+	-25114, -22516, -18384, -13000, -6729, 0, 6729, 12999},
+	{
+// Carrier 3 Phase 2
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114,
+	26000, 25114, 22516, 18384, 13000, 6729, 0, -6729,
+	-12999, -18384, -22516, -25114, -26000, -25114, -22516, -18384,
+	-13000, -6729, 0, 6729, 12999, 18384, 22516, 25114},
+	{
+// Carrier 3 Phase 3
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516,
+	18384, 13000, 6729, 0, -6729, -12999, -18384, -22516,
+	-25114, -26000, -25114, -22516, -18384, -13000, -6729, 0,
+	6729, 12999, 18384, 22516, 25114, 26000, 25114, 22516},
+	},{{
+
+// Carrier 4 Phase 0
+	0, 7456, 14287, 19917, 23873, 25824, 25605, 23234,
+	18911, 13000, 5996, -1511, -8892, -15526, -20855, -24432,
+	-25956, -25299, -22516, -17842, -11668, -4514, 3018, 10298,
+	16712, 21722, 24907, 26000, 24907, 21722, 16712, 10298,
+	3018, -4514, -11668, -17842, -22516, -25299, -25956, -24431,
+	-20855, -15526, -8892, -1511, 5996, 13000, 18911, 23234,
+	25605, 25824, 23873, 19917, 14287, 7456, 0, -7456,
+	-14287, -19917, -23873, -25824, -25604, -23234, -18911, -12999,
+	-5995, 1511, 8892, 15526, 20855, 24432, 25956, 25299,
+	22516, 17842, 11668, 4514, -3018, -10298, -16712, -21722,
+	-24907, -26000, -24907, -21722, -16712, -10297, -3018, 4515,
+	11668, 17842, 22516, 25299, 25956, 24431, 20855, 15525,
+	8892, 1511, -5996, -13000, -18911, -23234, -25605, -25824,
+	-23873, -19917, -14287, -7456, 0, 7457, 14287, 19917,
+	23873, 25824, 25604, 23234, 18911, 12999, 5995, -1511,
+	-8892, -15526, -20855, -24432, -25956, -25299, -22516, -17842,
+	-11668, -4514, 3018, 10298, 16712, 21722, 24907, 26000,
+	24907, 21722, 16712, 10297, 3018, -4515, -11668, -17842,
+	-22516, -25299, -25955, -24431, -20855, -15525, -8892, -1511,
+	5996, 13000, 18911, 23234, 25605, 25824, 23873, 19916,
+	14287, 7456, 0, -7457, -14287, -19917, -23873, -25824,
+	-25604, -23234, -18911, -12999, -5995, 1512, 8892, 15526,
+	20855, 24432, 25956, 25299, 22516, 17842, 11668, 4514,
+	-3018, -10298, -16712, -21722, -24907, -26000, -24907, -21722,
+	-16712, -10297, -3018, 4515, 11669, 17842, 22516, 25299,
+	25955, 24431, 20854, 15525, 8892, 1511, -5996, -13000,
+	-18911, -23234, -25605, -25824, -23873, -19916, -14286, -7456},
+	{
+// Carrier 4 Phase 1
+	18384, 22885, 25462, 25901, 24163, 20394, 14912, 8178,
+	756, -6729, -13649, -19422, -23564, -25725, -25725, -23563,
+	-19422, -13649, -6729, 756, 8178, 14913, 20394, 24163,
+	25901, 25462, 22885, 18384, 12339, 5257, -2266, -9599,
+	-16126, -21297, -24680, -25989, -25114, -22129, -17284, -10988,
+	-3768, 3768, 10988, 17284, 22129, 25114, 25988, 24680,
+	21297, 16126, 9599, 2265, -5257, -12339, -18384, -22885,
+	-25462, -25901, -24162, -20394, -14912, -8178, -756, 6729,
+	13649, 19422, 23564, 25725, 25725, 23563, 19422, 13649,
+	6729, -756, -8178, -14913, -20394, -24163, -25901, -25462,
+	-22885, -18384, -12339, -5257, 2266, 9599, 16126, 21298,
+	24680, 25989, 25114, 22128, 17284, 10987, 3768, -3768,
+	-10988, -17284, -22129, -25114, -25988, -24680, -21297, -16125,
+	-9599, -2265, 5257, 12339, 18384, 22885, 25462, 25901,
+	24162, 20394, 14912, 8177, 755, -6729, -13649, -19422,
+	-23564, -25725, -25725, -23563, -19422, -13649, -6729, 756,
+	8178, 14913, 20394, 24163, 25901, 25462, 22885, 18384,
+	12339, 5257, -2266, -9599, -16126, -21298, -24680, -25989,
+	-25114, -22128, -17284, -10987, -3767, 3768, 10988, 17284,
+	22129, 25114, 25988, 24680, 21297, 16125, 9599, 2265,
+	-5257, -12339, -18384, -22885, -25462, -25901, -24162, -20394,
+	-14912, -8177, -755, 6729, 13649, 19422, 23564, 25725,
+	25725, 23563, 19422, 13649, 6728, -756, -8178, -14913,
+	-20395, -24163, -25901, -25462, -22885, -18384, -12339, -5257,
+	2266, 9599, 16126, 21298, 24680, 25989, 25113, 22128,
+	17284, 10987, 3767, -3768, -10988, -17284, -22129, -25114,
+	-25988, -24680, -21297, -16125, -9599, -2265, 5258, 12339},
+	{
+// Carrier 4 Phase 2
+	26000, 24907, 21722, 16712, 10298, 3018, -4514, -11668,
+	-17842, -22516, -25299, -25956, -24432, -20855, -15526, -8892,
+	-1511, 5996, 13000, 18911, 23234, 25605, 25824, 23873,
+	19917, 14287, 7456, 0, -7456, -14287, -19917, -23873,
+	-25824, -25604, -23234, -18911, -12999, -5995, 1511, 8892,
+	15526, 20855, 24432, 25956, 25299, 22516, 17842, 11668,
+	4514, -3018, -10298, -16712, -21722, -24907, -26000, -24907,
+	-21722, -16712, -10297, -3018, 4514, 11668, 17842, 22516,
+	25299, 25956, 24431, 20855, 15526, 8892, 1511, -5996,
+	-13000, -18911, -23234, -25605, -25824, -23873, -19917, -14287,
+	-7456, 0, 7457, 14287, 19917, 23873, 25824, 25604,
+	23234, 18911, 12999, 5995, -1511, -8892, -15526, -20855,
+	-24432, -25956, -25299, -22516, -17842, -11668, -4514, 3018,
+	10298, 16712, 21722, 24907, 26000, 24907, 21722, 16712,
+	10297, 3018, -4515, -11668, -17842, -22516, -25299, -25955,
+	-24431, -20855, -15525, -8892, -1511, 5996, 13000, 18911,
+	23234, 25605, 25824, 23873, 19917, 14287, 7456, 0,
+	-7457, -14287, -19917, -23873, -25824, -25604, -23234, -18911,
+	-12999, -5995, 1512, 8892, 15526, 20855, 24432, 25956,
+	25299, 22516, 17842, 11668, 4514, -3018, -10298, -16712,
+	-21722, -24907, -26000, -24907, -21722, -16712, -10297, -3018,
+	4515, 11669, 17842, 22516, 25299, 25955, 24431, 20855,
+	15525, 8892, 1511, -5996, -13000, -18911, -23234, -25605,
+	-25824, -23873, -19916, -14286, -7456, 0, 7457, 14287,
+	19917, 23873, 25824, 25604, 23234, 18911, 12999, 5995,
+	-1512, -8892, -15526, -20855, -24432, -25956, -25299, -22516,
+	-17842, -11668, -4514, 3018, 10298, 16712, 21722, 24907},
+	{
+// Carrier 4 Phase 3
+	18384, 12339, 5257, -2266, -9599, -16126, -21297, -24680,
+	-25989, -25114, -22129, -17284, -10988, -3768, 3768, 10988,
+	17284, 22129, 25114, 25989, 24680, 21297, 16126, 9599,
+	2266, -5257, -12339, -18384, -22885, -25462, -25901, -24163,
+	-20394, -14912, -8178, -756, 6729, 13649, 19422, 23564,
+	25725, 25725, 23563, 19422, 13649, 6729, -756, -8178,
+	-14913, -20394, -24163, -25901, -25462, -22885, -18384, -12339,
+	-5257, 2266, 9599, 16126, 21298, 24680, 25989, 25114,
+	22128, 17284, 10987, 3768, -3768, -10988, -17284, -22129,
+	-25114, -25988, -24680, -21297, -16126, -9599, -2265, 5257,
+	12339, 18384, 22885, 25462, 25901, 24162, 20394, 14912,
+	8178, 756, -6729, -13649, -19422, -23564, -25725, -25725,
+	-23563, -19422, -13649, -6729, 756, 8178, 14913, 20394,
+	24163, 25901, 25462, 22885, 18384, 12339, 5257, -2266,
+	-9599, -16126, -21298, -24680, -25989, -25114, -22128, -17284,
+	-10987, -3767, 3768, 10988, 17284, 22129, 25114, 25988,
+	24680, 21297, 16125, 9599, 2265, -5257, -12339, -18384,
+	-22885, -25462, -25901, -24162, -20394, -14912, -8177, -755,
+	6729, 13649, 19422, 23564, 25725, 25725, 23563, 19422,
+	13649, 6729, -756, -8178, -14913, -20394, -24163, -25901,
+	-25462, -22885, -18384, -12339, -5257, 2266, 9599, 16126,
+	21298, 24680, 25989, 25113, 22128, 17284, 10987, 3767,
+	-3768, -10988, -17284, -22129, -25114, -25988, -24680, -21297,
+	-16125, -9599, -2265, 5258, 12339, 18385, 22885, 25462,
+	25901, 24162, 20394, 14912, 8177, 755, -6729, -13649,
+	-19422, -23564, -25725, -25725, -23563, -19422, -13649, -6728,
+	756, 8178, 14913, 20395, 24163, 25901, 25462, 22885},
+	},{{
+
+// Carrier 5 Phase 0
+	0, 8178, 15526, 21297, 24907, 25989, 24432, 20394,
+	14287, 6729, -1511, -9599, -16712, -22129, -25299, -25901,
+	-23873, -19422, -13000, -5257, 3018, 10988, 17842, 22885,
+	25604, 25725, 23234, 18384, 11668, 3768, -4514, -12339,
+	-18911, -23563, -25824, -25462, -22516, -17284, -10298, -2266,
+	5995, 13649, 19917, 24163, 25956, 25114, 21722, 16126,
+	8892, 756, -7456, -14912, -20855, -24680, -26000, -24680,
+	-20855, -14913, -7456, 756, 8892, 16126, 21722, 25114,
+	25956, 24163, 19917, 13649, 5996, -2265, -10297, -17284,
+	-22516, -25462, -25824, -23564, -18911, -12339, -4514, 3768,
+	11668, 18384, 23234, 25725, 25605, 22885, 17842, 10988,
+	3018, -5257, -12999, -19422, -23873, -25901, -25299, -22129,
+	-16712, -9599, -1511, 6729, 14287, 20394, 24431, 25988,
+	24907, 21298, 15526, 8178, 0, -8177, -15525, -21297,
+	-24907, -25989, -24432, -20394, -14287, -6729, 1511, 9599,
+	16712, 22128, 25299, 25901, 23873, 19422, 13000, 5257,
+	-3018, -10987, -17842, -22885, -25604, -25725, -23234, -18384,
+	-11668, -3768, 4514, 12339, 18911, 23563, 25824, 25462,
+	22516, 17284, 10298, 2266, -5995, -13649, -19916, -24162,
+	-25955, -25114, -21722, -16126, -8892, -756, 7456, 14912,
+	20855, 24680, 26000, 24680, 20855, 14913, 7457, -755,
+	-8892, -16125, -21722, -25113, -25956, -24163, -19917, -13649,
+	-5996, 2265, 10297, 17284, 22516, 25462, 25824, 23564,
+	18911, 12339, 4515, -3767, -11668, -18384, -23234, -25725,
+	-25605, -22885, -17842, -10988, -3018, 5257, 12999, 19422,
+	23873, 25901, 25299, 22129, 16712, 9599, 1512, -6728,
+	-14286, -20394, -24431, -25988, -24907, -21298, -15526, -8178},
+	{
+// Carrier 5 Phase 1
+	18384, 23234, 25725, 25605, 22885, 17842, 10988, 3018,
+	-5257, -12999, -19422, -23873, -25901, -25299, -22129, -16712,
+	-9599, -1511, 6729, 14287, 20394, 24431, 25989, 24907,
+	21297, 15526, 8178, 0, -8178, -15526, -21297, -24907,
+	-25989, -24432, -20394, -14287, -6729, 1511, 9599, 16712,
+	22128, 25299, 25901, 23873, 19422, 13000, 5257, -3018,
+	-10988, -17842, -22885, -25604, -25725, -23234, -18384, -11668,
+	-3768, 4514, 12339, 18911, 23563, 25824, 25462, 22516,
+	17284, 10298, 2266, -5995, -13649, -19917, -24162, -25956,
+	-25114, -21722, -16126, -8892, -756, 7456, 14912, 20855,
+	24680, 26000, 24680, 20855, 14913, 7457, -756, -8892,
+	-16125, -21722, -25114, -25956, -24163, -19917, -13649, -5996,
+	2265, 10297, 17284, 22516, 25462, 25824, 23564, 18911,
+	12339, 4515, -3768, -11668, -18384, -23234, -25725, -25605,
+	-22885, -17842, -10988, -3018, 5257, 12999, 19422, 23873,
+	25901, 25299, 22129, 16712, 9599, 1512, -6729, -14287,
+	-20394, -24431, -25988, -24907, -21298, -15526, -8178, 0,
+	8177, 15525, 21297, 24907, 25989, 24432, 20394, 14287,
+	6729, -1511, -9599, -16712, -22128, -25299, -25901, -23873,
+	-19422, -13000, -5257, 3018, 10987, 17842, 22885, 25604,
+	25725, 23234, 18385, 11669, 3768, -4514, -12339, -18911,
+	-23563, -25824, -25462, -22516, -17284, -10298, -2266, 5995,
+	13649, 19916, 24162, 25955, 25114, 21722, 16126, 8892,
+	756, -7456, -14912, -20854, -24680, -26000, -24680, -20855,
+	-14913, -7457, 755, 8892, 16125, 21722, 25113, 25956,
+	24163, 19917, 13649, 5996, -2265, -10297, -17284, -22516,
+	-25462, -25824, -23564, -18912, -12339, -4515, 3767, 11668},
+	{
+// Carrier 5 Phase 2
+	26000, 24680, 20855, 14912, 7456, -756, -8892, -16126,
+	-21722, -25114, -25956, -24163, -19917, -13649, -5996, 2266,
+	10298, 17284, 22516, 25462, 25824, 23564, 18911, 12339,
+	4514, -3768, -11668, -18384, -23234, -25725, -25605, -22885,
+	-17842, -10988, -3018, 5257, 12999, 19422, 23873, 25901,
+	25299, 22129, 16712, 9599, 1511, -6729, -14287, -20394,
+	-24431, -25988, -24907, -21298, -15526, -8178, 0, 8178,
+	15526, 21297, 24907, 25989, 24432, 20394, 14287, 6729,
+	-1511, -9599, -16712, -22128, -25299, -25901, -23873, -19422,
+	-13000, -5257, 3018, 10987, 17842, 22885, 25604, 25725,
+	23234, 18384, 11668, 3768, -4514, -12339, -18911, -23563,
+	-25824, -25462, -22516, -17284, -10298, -2266, 5995, 13649,
+	19917, 24162, 25956, 25114, 21722, 16126, 8892, 756,
+	-7456, -14912, -20855, -24680, -26000, -24680, -20855, -14913,
+	-7457, 755, 8892, 16125, 21722, 25114, 25956, 24163,
+	19917, 13649, 5996, -2265, -10297, -17284, -22516, -25462,
+	-25824, -23564, -18911, -12339, -4515, 3767, 11668, 18384,
+	23234, 25725, 25605, 22885, 17842, 10988, 3018, -5257,
+	-12999, -19422, -23873, -25901, -25299, -22129, -16712, -9599,
+	-1512, 6729, 14286, 20394, 24431, 25988, 24907, 21298,
+	15526, 8178, 0, -8177, -15525, -21297, -24907, -25989,
+	-24432, -20395, -14287, -6729, 1511, 9599, 16712, 22128,
+	25299, 25901, 23873, 19422, 13000, 5257, -3018, -10987,
+	-17842, -22885, -25604, -25725, -23234, -18385, -11669, -3768,
+	4514, 12339, 18911, 23563, 25824, 25462, 22516, 17284,
+	10298, 2266, -5995, -13649, -19916, -24162, -25955, -25114,
+	-21722, -16126, -8892, -756, 7456, 14912, 20854, 24680},
+	{
+// Carrier 5 Phase 3
+	18384, 11668, 3768, -4514, -12339, -18911, -23564, -25824,
+	-25462, -22516, -17284, -10298, -2266, 5995, 13649, 19917,
+	24163, 25956, 25114, 21722, 16126, 8892, 756, -7456,
+	-14912, -20855, -24680, -26000, -24680, -20855, -14913, -7456,
+	756, 8892, 16126, 21722, 25114, 25956, 24163, 19917,
+	13649, 5996, -2265, -10298, -17284, -22516, -25462, -25824,
+	-23564, -18911, -12339, -4514, 3768, 11668, 18384, 23234,
+	25725, 25605, 22885, 17842, 10988, 3018, -5257, -12999,
+	-19422, -23873, -25901, -25299, -22129, -16712, -9599, -1511,
+	6729, 14287, 20394, 24431, 25988, 24907, 21298, 15526,
+	8178, 0, -8178, -15526, -21297, -24907, -25989, -24432,
+	-20394, -14287, -6729, 1511, 9599, 16712, 22128, 25299,
+	25901, 23873, 19422, 13000, 5257, -3018, -10987, -17842,
+	-22885, -25604, -25725, -23234, -18384, -11668, -3768, 4514,
+	12339, 18911, 23563, 25824, 25462, 22516, 17284, 10298,
+	2266, -5995, -13649, -19917, -24162, -25955, -25114, -21722,
+	-16126, -8892, -756, 7456, 14912, 20855, 24680, 26000,
+	24680, 20855, 14913, 7457, -755, -8892, -16125, -21722,
+	-25114, -25956, -24163, -19917, -13649, -5996, 2265, 10297,
+	17284, 22516, 25462, 25824, 23564, 18911, 12339, 4515,
+	-3767, -11668, -18384, -23234, -25725, -25605, -22885, -17842,
+	-10988, -3018, 5257, 12999, 19422, 23873, 25901, 25299,
+	22129, 16712, 9599, 1512, -6728, -14286, -20394, -24431,
+	-25988, -24907, -21298, -15526, -8178, 0, 8177, 15525,
+	21297, 24907, 25989, 24432, 20395, 14287, 6729, -1511,
+	-9599, -16712, -22128, -25299, -25901, -23873, -19422, -13000,
+	-5258, 3018, 10987, 17841, 22885, 25604, 25725, 23234},
+	},{{
+
+// Carrier 6 Phase 0
+	0, 8892, 16712, 22516, 25605, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892,
+	0, 8892, 16712, 22516, 25604, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892,
+	0, 8892, 16712, 22516, 25604, 25605, 22516, 16712,
+	8892, 0, -8892, -16712, -22516, -25604, -25605, -22516,
+	-16712, -8892, 0, 8892, 16712, 22516, 25604, 25605,
+	22516, 16712, 8892, 0, -8892, -16712, -22516, -25604,
+	-25605, -22516, -16712, -8892, 0, 8892, 16712, 22516,
+	25604, 25605, 22516, 16712, 8892, 0, -8892, -16712,
+	-22516, -25604, -25605, -22516, -16712, -8892, 0, 8892,
+	16712, 22516, 25604, 25605, 22516, 16712, 8892, 0,
+	-8892, -16712, -22516, -25604, -25605, -22516, -16712, -8892},
+	{
+// Carrier 6 Phase 1
+	18384, 23564, 25901, 25114, 21297, 14912, 6729, -2266,
+	-10988, -18384, -23563, -25901, -25114, -21297, -14913, -6729,
+	2266, 10988, 18384, 23563, 25901, 25114, 21297, 14913,
+	6729, -2266, -10988, -18384, -23563, -25901, -25114, -21297,
+	-14913, -6729, 2266, 10988, 18384, 23563, 25901, 25114,
+	21297, 14913, 6729, -2266, -10988, -18384, -23563, -25901,
+	-25114, -21297, -14913, -6729, 2266, 10988, 18384, 23563,
+	25901, 25114, 21297, 14913, 6729, -2266, -10988, -18384,
+	-23563, -25901, -25114, -21297, -14913, -6729, 2265, 10988,
+	18384, 23563, 25901, 25114, 21297, 14913, 6729, -2265,
+	-10988, -18384, -23563, -25901, -25114, -21297, -14913, -6729,
+	2265, 10988, 18384, 23563, 25901, 25114, 21297, 14913,
+	6729, -2265, -10988, -18384, -23563, -25901, -25114, -21297,
+	-14913, -6729, 2265, 10988, 18384, 23563, 25901, 25114,
+	21297, 14913, 6729, -2265, -10987, -18384, -23563, -25901,
+	-25114, -21298, -14913, -6729, 2265, 10987, 18384, 23563,
+	25901, 25114, 21298, 14913, 6729, -2265, -10987, -18384,
+	-23563, -25901, -25114, -21298, -14913, -6729, 2265, 10987,
+	18384, 23563, 25901, 25114, 21298, 14913, 6729, -2265,
+	-10987, -18384, -23563, -25901, -25114, -21298, -14913, -6729,
+	2265, 10987, 18384, 23563, 25901, 25114, 21298, 14913,
+	6729, -2265, -10987, -18384, -23563, -25901, -25114, -21298,
+	-14913, -6729, 2265, 10987, 18384, 23563, 25901, 25114,
+	21298, 14913, 6729, -2265, -10987, -18384, -23563, -25901,
+	-25114, -21298, -14913, -6729, 2265, 10987, 18384, 23563,
+	25901, 25114, 21298, 14913, 6729, -2265, -10987, -18384,
+	-23563, -25901, -25114, -21298, -14913, -6729, 2265, 10987},
+	{
+// Carrier 6 Phase 2
+	26000, 24432, 19917, 13000, 4514, -4514, -12999, -19917,
+	-24432, -26000, -24432, -19917, -13000, -4514, 4514, 12999,
+	19917, 24432, 26000, 24432, 19917, 13000, 4514, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4514,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4514, -4514, -12999, -19917, -24431, -26000, -24432, -19917,
+	-13000, -4514, 4514, 12999, 19917, 24431, 26000, 24432,
+	19917, 13000, 4514, -4514, -12999, -19917, -24431, -26000,
+	-24432, -19917, -13000, -4514, 4514, 12999, 19917, 24431,
+	26000, 24432, 19917, 13000, 4514, -4514, -12999, -19917,
+	-24431, -26000, -24432, -19917, -13000, -4514, 4514, 12999,
+	19917, 24431, 26000, 24432, 19917, 13000, 4514, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4514,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4515, -4514, -12999, -19917, -24431, -26000, -24432, -19917,
+	-13000, -4515, 4514, 12999, 19917, 24431, 26000, 24432,
+	19917, 13000, 4515, -4514, -12999, -19917, -24431, -26000,
+	-24432, -19917, -13000, -4515, 4514, 12999, 19917, 24431,
+	26000, 24432, 19917, 13000, 4515, -4514, -12999, -19917,
+	-24431, -26000, -24432, -19917, -13000, -4515, 4514, 12999,
+	19917, 24431, 26000, 24432, 19917, 13000, 4515, -4514,
+	-12999, -19917, -24431, -26000, -24432, -19917, -13000, -4515,
+	4514, 12999, 19917, 24431, 26000, 24432, 19917, 13000,
+	4515, -4514, -12999, -19916, -24431, -26000, -24432, -19917,
+	-13000, -4515, 4514, 12999, 19916, 24431, 26000, 24432,
+	19917, 13000, 4515, -4514, -12999, -19916, -24431, -26000,
+	-24432, -19917, -13000, -4515, 4514, 12999, 19916, 24431},
+	{
+// Carrier 6 Phase 3
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25114, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25114, 25901, 23564,
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25114, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25114, 25901, 23564,
+	18384, 10988, 2266, -6729, -14912, -21297, -25114, -25901,
+	-23564, -18384, -10988, -2266, 6729, 14912, 21297, 25114,
+	25901, 23564, 18384, 10988, 2266, -6729, -14912, -21297,
+	-25114, -25901, -23564, -18384, -10988, -2266, 6729, 14912,
+	21297, 25114, 25901, 23564, 18384, 10988, 2266, -6729,
+	-14912, -21297, -25114, -25901, -23564, -18384, -10988, -2266,
+	6729, 14912, 21297, 25114, 25901, 23564, 18384, 10988,
+	2266, -6729, -14912, -21297, -25113, -25901, -23564, -18384,
+	-10988, -2266, 6729, 14912, 21297, 25113, 25901, 23564},
+	},{{
+
+// Carrier 7 Phase 0
+	0, 9599, 17842, 23564, 25956, 24680, 19917, 12339,
+	3018, -6729, -15526, -22129, -25605, -25462, -21722, -14912,
+	-5996, 3768, 13000, 20394, 24907, 25901, 23234, 17284,
+	8892, -756, -10298, -18384, -23873, -25989, -24431, -19422,
+	-11668, -2266, 7456, 16126, 22516, 25725, 25299, 21297,
+	14287, 5257, -4514, -13649, -20855, -25114, -25824, -22885,
+	-16712, -8178, 1511, 10988, 18911, 24163, 26000, 24163,
+	18911, 10988, 1511, -8178, -16712, -22885, -25824, -25114,
+	-20855, -13649, -4514, 5257, 14287, 21298, 25299, 25725,
+	22516, 16126, 7456, -2266, -11668, -19422, -24432, -25988,
+	-23873, -18384, -10297, -756, 8892, 17284, 23234, 25901,
+	24907, 20394, 12999, 3768, -5996, -14913, -21722, -25462,
+	-25604, -22128, -15526, -6729, 3018, 12339, 19917, 24680,
+	25956, 23563, 17842, 9599, 0, -9599, -17842, -23564,
+	-25956, -24680, -19917, -12339, -3018, 6729, 15526, 22129,
+	25605, 25462, 21722, 14912, 5995, -3768, -13000, -20394,
+	-24907, -25901, -23234, -17284, -8892, 756, 10298, 18384,
+	23873, 25989, 24431, 19422, 11668, 2265, -7457, -16126,
+	-22516, -25725, -25299, -21297, -14287, -5257, 4515, 13649,
+	20855, 25114, 25824, 22885, 16712, 8177, -1512, -10988,
+	-18911, -24163, -26000, -24162, -18911, -10987, -1511, 8178,
+	16712, 22885, 25824, 25113, 20855, 13649, 4514, -5257,
+	-14287, -21298, -25299, -25725, -22516, -16125, -7456, 2266,
+	11669, 19422, 24432, 25988, 23873, 18384, 10297, 755,
+	-8892, -17284, -23234, -25901, -24907, -20394, -12999, -3767,
+	5996, 14913, 21722, 25462, 25604, 22128, 15525, 6728,
+	-3018, -12339, -19917, -24680, -25955, -23563, -17842, -9599},
+	{
+// Carrier 7 Phase 1
+	18384, 23873, 25989, 24432, 19422, 11668, 2266, -7456,
+	-16126, -22516, -25725, -25299, -21297, -14287, -5257, 4514,
+	13649, 20855, 25114, 25824, 22885, 16712, 8178, -1511,
+	-10988, -18911, -24163, -26000, -24163, -18911, -10988, -1511,
+	8178, 16712, 22885, 25824, 25114, 20855, 13649, 4514,
+	-5257, -14287, -21297, -25299, -25725, -22516, -16126, -7456,
+	2266, 11668, 19422, 24432, 25988, 23873, 18384, 10298,
+	756, -8892, -17284, -23234, -25901, -24907, -20394, -12999,
+	-3768, 5996, 14913, 21722, 25462, 25604, 22128, 15526,
+	6729, -3018, -12339, -19917, -24680, -25956, -23563, -17842,
+	-9599, 0, 9599, 17842, 23564, 25956, 24680, 19917,
+	12339, 3018, -6729, -15526, -22129, -25605, -25462, -21722,
+	-14912, -5995, 3768, 13000, 20394, 24907, 25901, 23234,
+	17284, 8892, -756, -10298, -18384, -23873, -25989, -24431,
+	-19422, -11668, -2265, 7457, 16126, 22516, 25725, 25299,
+	21297, 14287, 5257, -4515, -13649, -20855, -25114, -25824,
+	-22885, -16712, -8177, 1511, 10988, 18911, 24163, 26000,
+	24162, 18911, 10987, 1511, -8178, -16712, -22885, -25824,
+	-25114, -20855, -13649, -4514, 5257, 14287, 21298, 25299,
+	25725, 22516, 16125, 7456, -2266, -11668, -19422, -24432,
+	-25988, -23873, -18384, -10297, -755, 8892, 17284, 23234,
+	25901, 24907, 20394, 12999, 3767, -5996, -14913, -21722,
+	-25462, -25604, -22128, -15525, -6729, 3018, 12339, 19917,
+	24680, 25955, 23563, 17842, 9599, 0, -9599, -17842,
+	-23564, -25956, -24680, -19916, -12339, -3018, 6729, 15526,
+	22129, 25605, 25462, 21722, 14912, 5995, -3768, -13000,
+	-20395, -24907, -25901, -23234, -17284, -8892, 756, 10298},
+	{
+// Carrier 7 Phase 2
+	26000, 24163, 18911, 10988, 1511, -8178, -16712, -22885,
+	-25824, -25114, -20855, -13649, -4514, 5257, 14287, 21297,
+	25299, 25725, 22516, 16126, 7456, -2266, -11668, -19422,
+	-24432, -25989, -23873, -18384, -10298, -756, 8892, 17284,
+	23234, 25901, 24907, 20394, 12999, 3768, -5996, -14913,
+	-21722, -25462, -25604, -22128, -15526, -6729, 3018, 12339,
+	19917, 24680, 25956, 23563, 17842, 9599, 0, -9599,
+	-17842, -23564, -25956, -24680, -19917, -12339, -3018, 6729,
+	15526, 22129, 25605, 25462, 21722, 14912, 5995, -3768,
+	-13000, -20394, -24907, -25901, -23234, -17284, -8892, 756,
+	10298, 18384, 23873, 25989, 24431, 19422, 11668, 2265,
+	-7457, -16126, -22516, -25725, -25299, -21297, -14287, -5257,
+	4515, 13649, 20855, 25114, 25824, 22885, 16712, 8177,
+	-1511, -10988, -18911, -24163, -26000, -24162, -18911, -10987,
+	-1511, 8178, 16712, 22885, 25824, 25114, 20855, 13649,
+	4514, -5257, -14287, -21298, -25299, -25725, -22516, -16125,
+	-7456, 2266, 11668, 19422, 24432, 25988, 23873, 18384,
+	10297, 755, -8892, -17284, -23234, -25901, -24907, -20394,
+	-12999, -3767, 5996, 14913, 21722, 25462, 25604, 22128,
+	15525, 6729, -3018, -12339, -19917, -24680, -25955, -23563,
+	-17842, -9599, 0, 9599, 17842, 23564, 25956, 24680,
+	19916, 12339, 3018, -6729, -15526, -22129, -25605, -25462,
+	-21722, -14912, -5995, 3768, 13000, 20394, 24907, 25901,
+	23234, 17284, 8892, -756, -10298, -18384, -23873, -25989,
+	-24431, -19422, -11668, -2265, 7457, 16126, 22516, 25725,
+	25299, 21297, 14286, 5257, -4515, -13649, -20855, -25114,
+	-25824, -22885, -16712, -8177, 1512, 10988, 18911, 24163},
+	{
+// Carrier 7 Phase 3
+	18384, 10298, 756, -8892, -17284, -23234, -25901, -24907,
+	-20394, -12999, -3768, 5996, 14913, 21722, 25462, 25604,
+	22129, 15526, 6729, -3018, -12339, -19917, -24680, -25956,
+	-23563, -17842, -9599, 0, 9599, 17842, 23564, 25956,
+	24680, 19917, 12339, 3018, -6729, -15526, -22129, -25605,
+	-25462, -21722, -14912, -5995, 3768, 13000, 20394, 24907,
+	25901, 23234, 17284, 8892, -756, -10298, -18384, -23873,
+	-25989, -24431, -19422, -11668, -2265, 7456, 16126, 22516,
+	25725, 25299, 21297, 14287, 5257, -4514, -13649, -20855,
+	-25114, -25824, -22885, -16712, -8178, 1511, 10988, 18911,
+	24163, 26000, 24162, 18911, 10987, 1511, -8178, -16712,
+	-22885, -25824, -25114, -20855, -13649, -4514, 5257, 14287,
+	21298, 25299, 25725, 22516, 16125, 7456, -2266, -11668,
+	-19422, -24432, -25988, -23873, -18384, -10297, -756, 8892,
+	17284, 23234, 25901, 24907, 20394, 12999, 3768, -5996,
+	-14913, -21722, -25462, -25604, -22128, -15525, -6729, 3018,
+	12339, 19917, 24680, 25955, 23563, 17842, 9599, 0,
+	-9599, -17842, -23564, -25956, -24680, -19916, -12339, -3018,
+	6729, 15526, 22129, 25605, 25462, 21722, 14912, 5995,
+	-3768, -13000, -20394, -24907, -25901, -23234, -17284, -8892,
+	756, 10298, 18384, 23873, 25989, 24431, 19422, 11668,
+	2265, -7457, -16126, -22516, -25725, -25299, -21297, -14286,
+	-5257, 4515, 13649, 20855, 25114, 25824, 22885, 16712,
+	8177, -1512, -10988, -18911, -24163, -26000, -24162, -18911,
+	-10987, -1511, 8178, 16712, 22885, 25824, 25113, 20854,
+	13649, 4514, -5257, -14287, -21298, -25299, -25725, -22516,
+	-16125, -7456, 2266, 11669, 19422, 24432, 25988, 23873},
+	},{{
+
+// Carrier 8 Phase 0
+	0, 10298, 18911, 24432, 25956, 23234, 16712, 7456,
+	-3018, -12999, -20855, -25299, -25605, -21722, -14287, -4514,
+	5995, 15526, 22516, 25824, 24907, 19917, 11668, 1511,
+	-8892, -17842, -23873, -26000, -23873, -17842, -8892, 1511,
+	11668, 19917, 24907, 25824, 22516, 15526, 5996, -4514,
+	-14287, -21722, -25604, -25299, -20855, -13000, -3018, 7456,
+	16712, 23234, 25956, 24432, 18911, 10298, 0, -10297,
+	-18911, -24431, -25956, -23234, -16712, -7457, 3018, 12999,
+	20855, 25299, 25605, 21722, 14287, 4514, -5995, -15526,
+	-22516, -25824, -24907, -19917, -11668, -1511, 8892, 17842,
+	23873, 26000, 23873, 17842, 8892, -1511, -11668, -19917,
+	-24907, -25824, -22516, -15526, -5996, 4514, 14287, 21722,
+	25604, 25299, 20855, 13000, 3018, -7456, -16712, -23234,
+	-25956, -24432, -18911, -10298, 0, 10297, 18911, 24431,
+	25956, 23234, 16712, 7457, -3018, -12999, -20855, -25299,
+	-25605, -21722, -14287, -4515, 5995, 15525, 22516, 25824,
+	24907, 19917, 11669, 1512, -8892, -17842, -23873, -26000,
+	-23873, -17842, -8892, 1511, 11668, 19916, 24907, 25824,
+	22516, 15526, 5996, -4514, -14286, -21722, -25604, -25299,
+	-20855, -13000, -3018, 7456, 16712, 23234, 25955, 24432,
+	18911, 10298, 0, -10297, -18911, -24431, -25956, -23234,
+	-16712, -7457, 3018, 12999, 20854, 25299, 25605, 21722,
+	14287, 4515, -5995, -15525, -22516, -25824, -24907, -19917,
+	-11669, -1512, 8892, 17842, 23873, 26000, 23873, 17842,
+	8892, -1511, -11668, -19916, -24907, -25824, -22516, -15526,
+	-5996, 4514, 14286, 21722, 25604, 25299, 20855, 13000,
+	3018, -7456, -16712, -23234, -25955, -24432, -18912, -10298},
+	{
+// Carrier 8 Phase 1
+	18384, 24163, 25989, 23564, 17284, 8178, -2266, -12339,
+	-20394, -25114, -25725, -22129, -14913, -5257, 5257, 14912,
+	22129, 25725, 25114, 20394, 12339, 2266, -8178, -17284,
+	-23563, -25989, -24163, -18384, -9599, 756, 10988, 19422,
+	24680, 25901, 22885, 16126, 6729, -3768, -13649, -21297,
+	-25462, -25462, -21298, -13649, -3768, 6729, 16126, 22885,
+	25901, 24680, 19422, 10988, 756, -9599, -18384, -24162,
+	-25989, -23564, -17284, -8178, 2265, 12339, 20394, 25114,
+	25725, 22129, 14913, 5257, -5257, -14912, -22128, -25725,
+	-25114, -20394, -12339, -2266, 8178, 17284, 23563, 25988,
+	24163, 18384, 9599, -756, -10987, -19422, -24680, -25901,
+	-22885, -16126, -6729, 3768, 13649, 21297, 25462, 25462,
+	21298, 13649, 3768, -6729, -16125, -22885, -25901, -24680,
+	-19422, -10988, -756, 9599, 18384, 24162, 25989, 23564,
+	17284, 8178, -2265, -12339, -20394, -25114, -25725, -22129,
+	-14913, -5257, 5257, 14912, 22128, 25725, 25114, 20394,
+	12339, 2266, -8177, -17284, -23563, -25988, -24163, -18384,
+	-9599, 755, 10987, 19422, 24680, 25901, 22885, 16126,
+	6729, -3767, -13649, -21297, -25462, -25462, -21298, -13649,
+	-3768, 6728, 16125, 22885, 25901, 24680, 19422, 10988,
+	756, -9599, -18384, -24162, -25989, -23564, -17284, -8178,
+	2265, 12339, 20394, 25113, 25725, 22129, 14913, 5258,
+	-5257, -14912, -22128, -25725, -25114, -20395, -12339, -2266,
+	8177, 17284, 23563, 25988, 24163, 18385, 9599, -755,
+	-10987, -19422, -24680, -25901, -22885, -16126, -6729, 3767,
+	13649, 21297, 25462, 25462, 21298, 13649, 3768, -6728,
+	-16125, -22885, -25901, -24680, -19422, -10988, -756, 9598},
+	{
+// Carrier 8 Phase 2
+	26000, 23873, 17842, 8892, -1511, -11668, -19917, -24907,
+	-25824, -22516, -15526, -5996, 4514, 14287, 21722, 25604,
+	25299, 20855, 13000, 3018, -7456, -16712, -23234, -25956,
+	-24432, -18911, -10298, 0, 10298, 18911, 24431, 25956,
+	23234, 16712, 7456, -3018, -12999, -20855, -25299, -25605,
+	-21722, -14287, -4514, 5995, 15526, 22516, 25824, 24907,
+	19917, 11668, 1511, -8892, -17842, -23873, -26000, -23873,
+	-17842, -8892, 1511, 11668, 19917, 24907, 25824, 22516,
+	15526, 5996, -4514, -14287, -21722, -25604, -25299, -20855,
+	-13000, -3018, 7456, 16712, 23234, 25956, 24432, 18911,
+	10298, 0, -10297, -18911, -24431, -25956, -23234, -16712,
+	-7457, 3018, 12999, 20855, 25299, 25605, 21722, 14287,
+	4515, -5995, -15525, -22516, -25824, -24907, -19917, -11668,
+	-1511, 8892, 17842, 23873, 26000, 23873, 17842, 8892,
+	-1511, -11668, -19917, -24907, -25824, -22516, -15526, -5996,
+	4514, 14287, 21722, 25604, 25299, 20855, 13000, 3018,
+	-7456, -16712, -23234, -25955, -24432, -18911, -10298, 0,
+	10297, 18911, 24431, 25956, 23234, 16712, 7457, -3018,
+	-12999, -20855, -25299, -25605, -21722, -14287, -4515, 5995,
+	15525, 22516, 25824, 24907, 19917, 11669, 1512, -8892,
+	-17842, -23873, -26000, -23873, -17842, -8892, 1511, 11668,
+	19916, 24907, 25824, 22516, 15526, 5996, -4514, -14286,
+	-21722, -25604, -25299, -20855, -13000, -3018, 7456, 16712,
+	23234, 25955, 24432, 18911, 10298, 0, -10297, -18911,
+	-24431, -25956, -23234, -16712, -7457, 3018, 12999, 20854,
+	25299, 25605, 21722, 14287, 4515, -5995, -15525, -22516,
+	-25824, -24907, -19917, -11669, -1512, 8892, 17841, 23873},
+	{
+// Carrier 8 Phase 3
+	18384, 9599, -756, -10988, -19422, -24680, -25901, -22885,
+	-16126, -6729, 3768, 13649, 21297, 25462, 25462, 21297,
+	13649, 3768, -6729, -16126, -22885, -25901, -24680, -19422,
+	-10988, -756, 9599, 18384, 24163, 25989, 23564, 17284,
+	8178, -2265, -12339, -20394, -25114, -25725, -22129, -14913,
+	-5257, 5257, 14912, 22128, 25725, 25114, 20394, 12339,
+	2266, -8178, -17284, -23563, -25988, -24163, -18384, -9599,
+	756, 10987, 19422, 24680, 25901, 22885, 16126, 6729,
+	-3768, -13649, -21297, -25462, -25462, -21298, -13649, -3768,
+	6729, 16125, 22885, 25901, 24680, 19422, 10988, 756,
+	-9599, -18384, -24162, -25989, -23564, -17284, -8178, 2265,
+	12339, 20394, 25114, 25725, 22129, 14913, 5257, -5257,
+	-14912, -22128, -25725, -25114, -20394, -12339, -2266, 8177,
+	17284, 23563, 25988, 24163, 18384, 9599, -755, -10987,
+	-19422, -24680, -25901, -22885, -16126, -6729, 3767, 13649,
+	21297, 25462, 25462, 21298, 13649, 3768, -6729, -16125,
+	-22885, -25901, -24680, -19422, -10988, -756, 9599, 18384,
+	24162, 25989, 23564, 17284, 8178, -2265, -12339, -20394,
+	-25113, -25725, -22129, -14913, -5257, 5257, 14912, 22128,
+	25725, 25114, 20395, 12339, 2266, -8177, -17284, -23563,
+	-25988, -24163, -18385, -9599, 755, 10987, 19422, 24680,
+	25901, 22885, 16126, 6729, -3767, -13649, -21297, -25462,
+	-25462, -21298, -13649, -3768, 6728, 16125, 22885, 25901,
+	24680, 19422, 10988, 756, -9599, -18384, -24162, -25989,
+	-23564, -17284, -8178, 2265, 12339, 20394, 25113, 25725,
+	22129, 14913, 5258, -5257, -14912, -22128, -25725, -25114,
+	-20395, -12340, -2266, 8177, 17284, 23563, 25988, 24163},
+	},{{
+
+// Carrier 9 Phase 0
+	0, 10988, 19917, 25114, 25605, 21297, 13000, 2266,
+	-8892, -18384, -24432, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2266, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10988, -19917, -25114,
+	-25605, -21297, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4514, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988,
+	0, 10988, 19917, 25114, 25605, 21297, 13000, 2266,
+	-8892, -18384, -24431, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2265, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10987, -19917, -25114,
+	-25605, -21298, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4514, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988,
+	0, 10987, 19917, 25114, 25605, 21298, 13000, 2266,
+	-8892, -18384, -24431, -25901, -22516, -14913, -4514, 6729,
+	16712, 23563, 26000, 23564, 16712, 6729, -4514, -14912,
+	-22516, -25901, -24432, -18384, -8892, 2265, 12999, 21297,
+	25604, 25114, 19917, 10988, 0, -10987, -19917, -25114,
+	-25605, -21298, -13000, -2266, 8892, 18384, 24431, 25901,
+	22516, 14913, 4515, -6729, -16712, -23563, -26000, -23564,
+	-16712, -6729, 4514, 14912, 22516, 25901, 24432, 18384,
+	8892, -2265, -12999, -21297, -25604, -25114, -19917, -10988},
+	{
+// Carrier 9 Phase 1
+	18384, 24432, 25901, 22516, 14912, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2266, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10988, 19917, 25114, 25605,
+	21297, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4514, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10988, -19917, -25114, -25605, -21297, -13000, -2266, 8892,
+	18384, 24431, 25901, 22516, 14913, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2265, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10987, 19917, 25114, 25605,
+	21298, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4514, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10987, -19917, -25114, -25605, -21298, -13000, -2266, 8892,
+	18384, 24431, 25901, 22516, 14913, 4514, -6729, -16712,
+	-23563, -26000, -23564, -16712, -6729, 4514, 14912, 22516,
+	25901, 24432, 18384, 8892, -2265, -12999, -21297, -25604,
+	-25114, -19917, -10988, 0, 10987, 19917, 25114, 25605,
+	21298, 13000, 2266, -8892, -18384, -24431, -25901, -22516,
+	-14913, -4515, 6729, 16712, 23563, 26000, 23564, 16712,
+	6729, -4514, -14912, -22516, -25901, -24432, -18384, -8892,
+	2265, 12999, 21297, 25604, 25114, 19917, 10988, 0,
+	-10987, -19917, -25114, -25605, -21298, -13000, -2266, 8892},
+	{
+// Carrier 9 Phase 2
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2266, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10988, -19917, -25114, -25605, -21297,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4514, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2266,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10988,
+	19917, 25114, 25605, 21297, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4514, 6729, 16712, 23563,
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2265, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10987, -19917, -25114, -25605, -21298,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4514, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2265,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10987,
+	19917, 25114, 25605, 21298, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4514, 6729, 16712, 23563,
+	26000, 23564, 16712, 6729, -4514, -14912, -22516, -25901,
+	-24432, -18384, -8892, 2265, 12999, 21297, 25604, 25114,
+	19917, 10988, 0, -10987, -19917, -25114, -25605, -21298,
+	-13000, -2266, 8892, 18384, 24431, 25901, 22516, 14913,
+	4515, -6729, -16712, -23563, -26000, -23564, -16712, -6729,
+	4514, 14912, 22516, 25901, 24432, 18384, 8892, -2265,
+	-12999, -21297, -25604, -25114, -19917, -10988, 0, 10987,
+	19917, 25114, 25605, 21298, 13000, 2266, -8892, -18384,
+	-24431, -25901, -22516, -14913, -4515, 6729, 16712, 23563},
+	{
+// Carrier 9 Phase 3
+	18384, 8892, -2266, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10988, 19917, 25114, 25605, 21297, 13000,
+	2266, -8892, -18384, -24432, -25901, -22516, -14913, -4514,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2266, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10988, -19917,
+	-25114, -25605, -21297, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4514, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432,
+	18384, 8892, -2265, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10988, 19917, 25114, 25605, 21297, 13000,
+	2266, -8892, -18384, -24431, -25901, -22516, -14913, -4514,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2265, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10987, -19917,
+	-25114, -25605, -21298, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4514, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432,
+	18384, 8892, -2265, -12999, -21297, -25604, -25114, -19917,
+	-10988, 0, 10987, 19917, 25114, 25605, 21298, 13000,
+	2266, -8892, -18384, -24431, -25901, -22516, -14913, -4515,
+	6729, 16712, 23563, 26000, 23564, 16712, 6729, -4514,
+	-14912, -22516, -25901, -24432, -18384, -8892, 2265, 12999,
+	21297, 25604, 25114, 19917, 10988, 0, -10987, -19917,
+	-25114, -25605, -21298, -13000, -2266, 8892, 18384, 24431,
+	25901, 22516, 14913, 4515, -6729, -16712, -23563, -26000,
+	-23564, -16712, -6729, 4514, 14912, 22516, 25901, 24432},
+	},{{
+
+// Carrier 10 Phase 0
+	0, 11668, 20855, 25605, 24907, 18911, 8892, -3018,
+	-14287, -22516, -25956, -23873, -16712, -5996, 5996, 16712,
+	23873, 25956, 22516, 14287, 3018, -8892, -18911, -24907,
+	-25604, -20855, -11668, 0, 11668, 20855, 25605, 24907,
+	18911, 8892, -3018, -14287, -22516, -25956, -23873, -16712,
+	-5995, 5996, 16712, 23873, 25956, 22516, 14287, 3018,
+	-8892, -18911, -24907, -25604, -20855, -11668, 0, 11668,
+	20855, 25605, 24907, 18911, 8892, -3018, -14287, -22516,
+	-25956, -23873, -16712, -5995, 5996, 16712, 23873, 25956,
+	22516, 14287, 3018, -8892, -18911, -24907, -25604, -20855,
+	-11668, 0, 11668, 20855, 25605, 24907, 18911, 8892,
+	-3018, -14287, -22516, -25956, -23873, -16712, -5995, 5996,
+	16712, 23873, 25956, 22516, 14287, 3018, -8892, -18911,
+	-24907, -25604, -20855, -11668, 0, 11668, 20855, 25605,
+	24907, 18911, 8892, -3018, -14287, -22516, -25956, -23873,
+	-16712, -5995, 5996, 16712, 23873, 25956, 22516, 14287,
+	3018, -8892, -18911, -24907, -25604, -20855, -11668, 0,
+	11668, 20855, 25605, 24907, 18911, 8892, -3018, -14287,
+	-22516, -25956, -23873, -16712, -5995, 5996, 16712, 23873,
+	25956, 22516, 14287, 3018, -8892, -18911, -24907, -25604,
+	-20855, -11668, 0, 11668, 20855, 25605, 24907, 18911,
+	8892, -3018, -14287, -22516, -25956, -23873, -16712, -5995,
+	5996, 16712, 23873, 25955, 22516, 14287, 3018, -8892,
+	-18911, -24907, -25604, -20855, -11668, 0, 11669, 20855,
+	25605, 24907, 18911, 8892, -3018, -14287, -22516, -25956,
+	-23873, -16712, -5995, 5996, 16712, 23873, 25955, 22516,
+	14287, 3018, -8892, -18911, -24907, -25604, -20855, -11668},
+	{
+// Carrier 10 Phase 1
+	18384, 24680, 25725, 21297, 12339, 756, -10988, -20394,
+	-25462, -25114, -19422, -9599, 2266, 13649, 22129, 25901,
+	24163, 17284, 6729, -5257, -16126, -23564, -25989, -22885,
+	-14912, -3768, 8178, 18384, 24680, 25725, 21297, 12339,
+	756, -10988, -20394, -25462, -25114, -19422, -9599, 2266,
+	13649, 22129, 25901, 24163, 17284, 6729, -5257, -16126,
+	-23564, -25988, -22885, -14912, -3768, 8178, 18384, 24680,
+	25725, 21297, 12339, 756, -10988, -20394, -25462, -25114,
+	-19422, -9599, 2266, 13649, 22129, 25901, 24163, 17284,
+	6729, -5257, -16126, -23564, -25988, -22885, -14912, -3768,
+	8178, 18384, 24680, 25725, 21297, 12339, 756, -10988,
+	-20394, -25462, -25114, -19422, -9599, 2266, 13649, 22129,
+	25901, 24162, 17284, 6729, -5257, -16126, -23564, -25988,
+	-22885, -14912, -3768, 8178, 18384, 24680, 25725, 21297,
+	12339, 756, -10988, -20394, -25462, -25114, -19422, -9599,
+	2266, 13649, 22129, 25901, 24162, 17284, 6729, -5257,
+	-16126, -23564, -25988, -22885, -14912, -3768, 8178, 18384,
+	24680, 25725, 21297, 12339, 756, -10988, -20394, -25462,
+	-25114, -19422, -9599, 2266, 13649, 22129, 25901, 24162,
+	17284, 6729, -5257, -16126, -23564, -25988, -22885, -14912,
+	-3768, 8178, 18384, 24680, 25725, 21297, 12339, 755,
+	-10988, -20394, -25462, -25114, -19422, -9599, 2266, 13649,
+	22129, 25901, 24162, 17284, 6729, -5257, -16126, -23564,
+	-25988, -22885, -14912, -3767, 8178, 18384, 24680, 25725,
+	21297, 12339, 755, -10988, -20394, -25462, -25114, -19422,
+	-9599, 2266, 13649, 22129, 25901, 24162, 17284, 6729,
+	-5257, -16126, -23564, -25988, -22885, -14912, -3767, 8178},
+	{
+// Carrier 10 Phase 2
+	26000, 23234, 15526, 4514, -7456, -17842, -24432, -25824,
+	-21722, -12999, -1511, 10298, 19917, 25299, 25299, 19917,
+	10298, -1511, -13000, -21722, -25824, -24432, -17842, -7456,
+	4514, 15526, 23234, 26000, 23234, 15526, 4514, -7456,
+	-17842, -24432, -25824, -21722, -12999, -1511, 10298, 19917,
+	25299, 25299, 19917, 10298, -1511, -13000, -21722, -25824,
+	-24431, -17842, -7456, 4514, 15526, 23234, 26000, 23234,
+	15526, 4514, -7456, -17842, -24432, -25824, -21722, -12999,
+	-1511, 10298, 19917, 25299, 25299, 19917, 10297, -1511,
+	-13000, -21722, -25824, -24431, -17842, -7456, 4514, 15526,
+	23234, 26000, 23234, 15526, 4514, -7456, -17842, -24432,
+	-25824, -21722, -12999, -1511, 10298, 19917, 25299, 25299,
+	19917, 10297, -1511, -13000, -21722, -25824, -24431, -17842,
+	-7456, 4514, 15526, 23234, 26000, 23234, 15526, 4514,
+	-7457, -17842, -24432, -25824, -21722, -12999, -1511, 10298,
+	19917, 25299, 25299, 19917, 10297, -1511, -13000, -21722,
+	-25824, -24431, -17842, -7456, 4515, 15526, 23234, 26000,
+	23234, 15525, 4514, -7457, -17842, -24432, -25824, -21722,
+	-12999, -1511, 10298, 19917, 25299, 25299, 19917, 10297,
+	-1511, -13000, -21722, -25824, -24431, -17842, -7456, 4515,
+	15526, 23234, 26000, 23234, 15525, 4514, -7457, -17842,
+	-24432, -25824, -21722, -12999, -1511, 10298, 19917, 25299,
+	25299, 19917, 10297, -1512, -13000, -21722, -25824, -24431,
+	-17842, -7456, 4515, 15526, 23234, 26000, 23234, 15525,
+	4514, -7457, -17842, -24432, -25824, -21722, -12999, -1511,
+	10298, 19917, 25299, 25299, 19916, 10297, -1512, -13000,
+	-21722, -25824, -24431, -17842, -7456, 4515, 15526, 23234},
+	{
+// Carrier 10 Phase 3
+	18384, 8178, -3768, -14912, -22885, -25989, -23563, -16126,
+	-5257, 6729, 17284, 24163, 25901, 22129, 13649, 2266,
+	-9599, -19422, -25114, -25462, -20394, -10988, 756, 12339,
+	21297, 25725, 24680, 18384, 8178, -3768, -14913, -22885,
+	-25989, -23563, -16126, -5257, 6729, 17284, 24163, 25901,
+	22129, 13649, 2265, -9599, -19422, -25114, -25462, -20394,
+	-10988, 756, 12339, 21297, 25725, 24680, 18384, 8178,
+	-3768, -14913, -22885, -25989, -23563, -16126, -5257, 6729,
+	17284, 24163, 25901, 22128, 13649, 2265, -9599, -19422,
+	-25114, -25462, -20394, -10987, 756, 12339, 21298, 25725,
+	24680, 18384, 8178, -3768, -14913, -22885, -25989, -23563,
+	-16126, -5257, 6729, 17284, 24163, 25901, 22128, 13649,
+	2265, -9599, -19422, -25114, -25462, -20394, -10987, 756,
+	12339, 21298, 25725, 24680, 18384, 8178, -3768, -14913,
+	-22885, -25989, -23563, -16125, -5257, 6729, 17284, 24163,
+	25901, 22128, 13649, 2265, -9599, -19422, -25114, -25462,
+	-20394, -10987, 756, 12339, 21298, 25725, 24680, 18384,
+	8177, -3768, -14913, -22885, -25989, -23563, -16125, -5257,
+	6729, 17284, 24163, 25901, 22128, 13649, 2265, -9599,
+	-19422, -25114, -25462, -20394, -10987, 756, 12339, 21298,
+	25725, 24680, 18384, 8177, -3768, -14913, -22885, -25989,
+	-23563, -16125, -5257, 6729, 17284, 24163, 25901, 22128,
+	13649, 2265, -9599, -19422, -25114, -25462, -20394, -10987,
+	756, 12339, 21298, 25725, 24680, 18384, 8177, -3768,
+	-14913, -22885, -25989, -23563, -16125, -5257, 6729, 17284,
+	24163, 25901, 22128, 13649, 2265, -9599, -19422, -25114,
+	-25462, -20394, -10987, 756, 12339, 21298, 25725, 24680},
+	},{{
+
+// Carrier 11 Phase 0
+	0, 12339, 21722, 25901, 23873, 16126, 4514, -8178,
+	-18911, -25114, -25299, -19422, -8892, 3768, 15526, 23563,
+	25956, 22129, 13000, 756, -11668, -21297, -25824, -24163,
+	-16712, -5257, 7456, 18384, 24907, 25462, 19917, 9599,
+	-3018, -14912, -23234, -25989, -22516, -13649, -1511, 10987,
+	20855, 25725, 24432, 17284, 5996, -6729, -17842, -24680,
+	-25605, -20394, -10298, 2265, 14287, 22885, 26000, 22885,
+	14287, 2266, -10297, -20394, -25604, -24680, -17842, -6729,
+	5995, 17284, 24431, 25725, 20855, 10988, -1511, -13649,
+	-22516, -25988, -23234, -14913, -3018, 9599, 19917, 25462,
+	24907, 18384, 7457, -5257, -16712, -24162, -25824, -21298,
+	-11668, 756, 12999, 22128, 25956, 23564, 15526, 3768,
+	-8892, -19422, -25299, -25114, -18911, -8178, 4514, 16125,
+	23873, 25901, 21722, 12339, 0, -12339, -21722, -25901,
+	-23873, -16126, -4515, 8177, 18911, 25114, 25299, 19422,
+	8892, -3767, -15525, -23563, -25956, -22129, -13000, -756,
+	11668, 21297, 25824, 24163, 16712, 5257, -7456, -18384,
+	-24907, -25462, -19917, -9599, 3018, 14912, 23234, 25989,
+	22516, 13649, 1512, -10987, -20855, -25725, -24432, -17284,
+	-5996, 6728, 17842, 24680, 25605, 20395, 10298, -2265,
+	-14286, -22885, -26000, -22885, -14287, -2266, 10297, 20394,
+	25604, 24680, 17842, 6729, -5995, -17284, -24431, -25725,
+	-20855, -10988, 1511, 13649, 22516, 25988, 23234, 14913,
+	3018, -9598, -19916, -25462, -24907, -18385, -7457, 5257,
+	16712, 24162, 25824, 21298, 11669, -755, -12999, -22128,
+	-25955, -23564, -15526, -3768, 8892, 19422, 25299, 25114,
+	18912, 8178, -4514, -16125, -23873, -25901, -21722, -12340},
+	{
+// Carrier 11 Phase 1
+	18384, 24907, 25462, 19917, 9599, -3018, -14912, -23234,
+	-25989, -22516, -13649, -1511, 10988, 20855, 25725, 24432,
+	17284, 5996, -6729, -17842, -24680, -25605, -20394, -10298,
+	2266, 14287, 22885, 26000, 22885, 14287, 2266, -10298,
+	-20394, -25604, -24680, -17842, -6729, 5995, 17284, 24431,
+	25725, 20855, 10988, -1511, -13649, -22516, -25988, -23234,
+	-14913, -3018, 9599, 19917, 25462, 24907, 18384, 7456,
+	-5257, -16712, -24162, -25824, -21298, -11668, 756, 12999,
+	22128, 25956, 23564, 15526, 3768, -8892, -19422, -25299,
+	-25114, -18911, -8178, 4514, 16126, 23873, 25901, 21722,
+	12339, 0, -12339, -21722, -25901, -23873, -16126, -4515,
+	8177, 18911, 25114, 25299, 19422, 8892, -3768, -15525,
+	-23563, -25956, -22129, -13000, -756, 11668, 21297, 25824,
+	24163, 16712, 5257, -7456, -18384, -24907, -25462, -19917,
+	-9599, 3018, 14912, 23234, 25989, 22516, 13649, 1512,
+	-10987, -20855, -25725, -24432, -17284, -5996, 6729, 17842,
+	24680, 25605, 20394, 10298, -2265, -14287, -22885, -26000,
+	-22885, -14287, -2266, 10297, 20394, 25604, 24680, 17842,
+	6729, -5995, -17284, -24431, -25725, -20855, -10988, 1511,
+	13649, 22516, 25988, 23234, 14913, 3018, -9599, -19916,
+	-25462, -24907, -18385, -7457, 5257, 16712, 24162, 25824,
+	21298, 11669, -755, -12999, -22128, -25955, -23564, -15526,
+	-3768, 8892, 19422, 25299, 25114, 18911, 8178, -4514,
+	-16125, -23873, -25901, -21722, -12339, 0, 12339, 21722,
+	25901, 23873, 16126, 4515, -8177, -18911, -25113, -25299,
+	-19422, -8892, 3767, 15525, 23563, 25956, 22129, 13000,
+	756, -11668, -21297, -25824, -24163, -16712, -5258, 7456},
+	{
+// Carrier 11 Phase 2
+	26000, 22885, 14287, 2266, -10298, -20394, -25605, -24680,
+	-17842, -6729, 5995, 17284, 24432, 25725, 20855, 10988,
+	-1511, -13649, -22516, -25989, -23234, -14913, -3018, 9599,
+	19917, 25462, 24907, 18384, 7456, -5257, -16712, -24163,
+	-25824, -21297, -11668, 756, 12999, 22128, 25956, 23564,
+	15526, 3768, -8892, -19422, -25299, -25114, -18911, -8178,
+	4514, 16126, 23873, 25901, 21722, 12339, 0, -12339,
+	-21722, -25901, -23873, -16126, -4514, 8178, 18911, 25114,
+	25299, 19422, 8892, -3768, -15526, -23563, -25956, -22129,
+	-13000, -756, 11668, 21297, 25824, 24163, 16712, 5257,
+	-7456, -18384, -24907, -25462, -19917, -9599, 3018, 14912,
+	23234, 25989, 22516, 13649, 1511, -10987, -20855, -25725,
+	-24432, -17284, -5996, 6729, 17842, 24680, 25605, 20394,
+	10298, -2265, -14287, -22885, -26000, -22885, -14287, -2266,
+	10297, 20394, 25604, 24680, 17842, 6729, -5995, -17284,
+	-24431, -25725, -20855, -10988, 1511, 13649, 22516, 25988,
+	23234, 14913, 3018, -9599, -19916, -25462, -24907, -18384,
+	-7457, 5257, 16712, 24162, 25824, 21298, 11669, -755,
+	-12999, -22128, -25955, -23564, -15526, -3768, 8892, 19422,
+	25299, 25114, 18911, 8178, -4514, -16125, -23873, -25901,
+	-21722, -12339, 0, 12339, 21722, 25901, 23873, 16126,
+	4515, -8177, -18911, -25113, -25299, -19422, -8892, 3767,
+	15525, 23563, 25956, 22129, 13000, 756, -11668, -21297,
+	-25824, -24163, -16712, -5258, 7456, 18384, 24907, 25462,
+	19917, 9599, -3018, -14912, -23234, -25989, -22516, -13649,
+	-1512, 10987, 20854, 25725, 24432, 17285, 5996, -6728,
+	-17841, -24680, -25605, -20395, -10298, 2265, 14286, 22885},
+	{
+// Carrier 11 Phase 3
+	18384, 7456, -5257, -16712, -24163, -25824, -21297, -11668,
+	756, 12999, 22129, 25956, 23564, 15526, 3768, -8892,
+	-19422, -25299, -25114, -18911, -8178, 4514, 16126, 23873,
+	25901, 21722, 12339, 0, -12339, -21722, -25901, -23873,
+	-16126, -4514, 8178, 18911, 25114, 25299, 19422, 8892,
+	-3768, -15526, -23563, -25956, -22129, -13000, -756, 11668,
+	21297, 25824, 24163, 16712, 5257, -7456, -18384, -24907,
+	-25462, -19917, -9599, 3018, 14912, 23234, 25989, 22516,
+	13649, 1511, -10987, -20855, -25725, -24432, -17284, -5996,
+	6729, 17842, 24680, 25605, 20394, 10298, -2265, -14287,
+	-22885, -26000, -22885, -14287, -2266, 10297, 20394, 25604,
+	24680, 17842, 6729, -5995, -17284, -24431, -25725, -20855,
+	-10988, 1511, 13649, 22516, 25988, 23234, 14913, 3018,
+	-9599, -19917, -25462, -24907, -18384, -7457, 5257, 16712,
+	24162, 25824, 21298, 11668, -755, -12999, -22128, -25955,
+	-23564, -15526, -3768, 8892, 19422, 25299, 25114, 18911,
+	8178, -4514, -16125, -23873, -25901, -21722, -12339, 0,
+	12339, 21722, 25901, 23873, 16126, 4515, -8177, -18911,
+	-25113, -25299, -19422, -8892, 3767, 15525, 23563, 25956,
+	22129, 13000, 756, -11668, -21297, -25824, -24163, -16712,
+	-5258, 7456, 18384, 24907, 25462, 19917, 9599, -3018,
+	-14912, -23234, -25989, -22516, -13649, -1512, 10987, 20854,
+	25725, 24432, 17284, 5996, -6728, -17841, -24680, -25605,
+	-20395, -10298, 2265, 14286, 22885, 26000, 22885, 14287,
+	2266, -10297, -20394, -25604, -24680, -17842, -6729, 5995,
+	17284, 24431, 25725, 20855, 10988, -1511, -13649, -22516,
+	-25988, -23234, -14913, -3018, 9598, 19916, 25462, 24907},
+	},{{
+
+// Carrier 12 Phase 0
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000,
+	0, 12999, 22516, 26000, 22516, 13000, 0, -12999,
+	-22516, -26000, -22516, -13000, 0, 12999, 22516, 26000,
+	22516, 13000, 0, -12999, -22516, -26000, -22516, -13000},
+	{
+// Carrier 12 Phase 1
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729,
+	18384, 25114, 25114, 18384, 6729, -6729, -18384, -25114,
+	-25114, -18384, -6729, 6729, 18384, 25114, 25114, 18384,
+	6729, -6729, -18384, -25114, -25114, -18384, -6729, 6729},
+	{
+// Carrier 12 Phase 2
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516,
+	26000, 22516, 13000, 0, -12999, -22516, -26000, -22516,
+	-13000, 0, 12999, 22516, 26000, 22516, 13000, 0,
+	-12999, -22516, -26000, -22516, -13000, 0, 12999, 22516},
+	{
+// Carrier 12 Phase 3
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114,
+	18384, 6729, -6729, -18384, -25114, -25114, -18384, -6729,
+	6729, 18384, 25114, 25114, 18384, 6729, -6729, -18384,
+	-25114, -25114, -18384, -6729, 6729, 18384, 25114, 25114},
+	},{{
+
+// Carrier 13 Phase 0
+	0, 13649, 23234, 25901, 20855, 9599, -4514, -17284,
+	-24907, -25114, -17842, -5257, 8892, 20394, 25824, 23563,
+	14287, 756, -13000, -22885, -25956, -21297, -10298, 3768,
+	16712, 24680, 25299, 18384, 5995, -8178, -19917, -25725,
+	-23873, -14912, -1511, 12339, 22516, 25989, 21722, 10988,
+	-3018, -16126, -24432, -25462, -18911, -6729, 7456, 19422,
+	25605, 24163, 15526, 2265, -11668, -22129, -26000, -22129,
+	-11668, 2266, 15526, 24163, 25604, 19422, 7456, -6729,
+	-18911, -25462, -24431, -16126, -3018, 10988, 21722, 25989,
+	22516, 12339, -1511, -14913, -23873, -25725, -19917, -8178,
+	5996, 18384, 25299, 24680, 16712, 3768, -10298, -21297,
+	-25956, -22885, -12999, 756, 14287, 23564, 25824, 20394,
+	8892, -5257, -17842, -25114, -24907, -17284, -4514, 9599,
+	20855, 25901, 23234, 13649, 0, -13649, -23234, -25901,
+	-20855, -9599, 4514, 17284, 24907, 25114, 17842, 5257,
+	-8892, -20394, -25824, -23563, -14287, -756, 13000, 22885,
+	25956, 21297, 10297, -3768, -16712, -24680, -25299, -18384,
+	-5995, 8178, 19917, 25725, 23873, 14912, 1511, -12339,
+	-22516, -25988, -21722, -10987, 3018, 16126, 24432, 25462,
+	18911, 6729, -7457, -19422, -25605, -24162, -15526, -2265,
+	11668, 22129, 26000, 22128, 11668, -2266, -15526, -24163,
+	-25604, -19422, -7456, 6729, 18911, 25462, 24431, 16125,
+	3018, -10988, -21722, -25989, -22516, -12339, 1511, 14913,
+	23873, 25725, 19917, 8177, -5996, -18384, -25299, -24680,
+	-16712, -3768, 10298, 21298, 25956, 22885, 12999, -756,
+	-14287, -23564, -25824, -20394, -8892, 5257, 17842, 25114,
+	24907, 17284, 4514, -9599, -20855, -25901, -23234, -13649},
+	{
+// Carrier 13 Phase 1
+	18384, 25299, 24680, 16712, 3768, -10298, -21297, -25956,
+	-22885, -12999, 756, 14287, 23564, 25824, 20394, 8892,
+	-5257, -17842, -25114, -24907, -17284, -4514, 9599, 20855,
+	25901, 23234, 13649, 0, -13649, -23234, -25901, -20855,
+	-9599, 4514, 17284, 24907, 25114, 17842, 5257, -8892,
+	-20394, -25824, -23563, -14287, -756, 13000, 22885, 25956,
+	21297, 10298, -3768, -16712, -24680, -25299, -18384, -5995,
+	8178, 19917, 25725, 23873, 14912, 1511, -12339, -22516,
+	-25988, -21722, -10988, 3018, 16126, 24432, 25462, 18911,
+	6729, -7456, -19422, -25605, -24163, -15526, -2265, 11668,
+	22129, 26000, 22128, 11668, -2266, -15526, -24163, -25604,
+	-19422, -7456, 6729, 18911, 25462, 24431, 16126, 3018,
+	-10988, -21722, -25989, -22516, -12339, 1511, 14913, 23873,
+	25725, 19917, 8178, -5996, -18384, -25299, -24680, -16712,
+	-3768, 10298, 21298, 25956, 22885, 12999, -756, -14287,
+	-23564, -25824, -20394, -8892, 5257, 17842, 25114, 24907,
+	17284, 4514, -9599, -20855, -25901, -23234, -13649, 0,
+	13649, 23234, 25901, 20855, 9599, -4515, -17284, -24907,
+	-25114, -17842, -5257, 8892, 20394, 25824, 23563, 14287,
+	756, -13000, -22885, -25956, -21297, -10297, 3768, 16712,
+	24680, 25299, 18384, 5995, -8178, -19917, -25725, -23873,
+	-14912, -1511, 12339, 22516, 25988, 21722, 10987, -3018,
+	-16126, -24432, -25462, -18911, -6729, 7457, 19422, 25605,
+	24162, 15525, 2265, -11668, -22129, -26000, -22128, -11668,
+	2266, 15526, 24163, 25604, 19422, 7456, -6729, -18911,
+	-25462, -24431, -16125, -3018, 10988, 21722, 25989, 22516,
+	12339, -1511, -14913, -23873, -25725, -19917, -8177, 5996},
+	{
+// Carrier 13 Phase 2
+	26000, 22129, 11668, -2266, -15526, -24163, -25605, -19422,
+	-7456, 6729, 18911, 25462, 24432, 16126, 3018, -10988,
+	-21722, -25989, -22516, -12339, 1511, 14913, 23873, 25725,
+	19917, 8178, -5996, -18384, -25299, -24680, -16712, -3768,
+	10298, 21297, 25956, 22885, 12999, -756, -14287, -23564,
+	-25824, -20394, -8892, 5257, 17842, 25114, 24907, 17284,
+	4514, -9599, -20855, -25901, -23234, -13649, 0, 13649,
+	23234, 25901, 20855, 9599, -4514, -17284, -24907, -25114,
+	-17842, -5257, 8892, 20394, 25824, 23563, 14287, 756,
+	-13000, -22885, -25956, -21297, -10298, 3768, 16712, 24680,
+	25299, 18384, 5995, -8178, -19917, -25725, -23873, -14912,
+	-1511, 12339, 22516, 25988, 21722, 10987, -3018, -16126,
+	-24432, -25462, -18911, -6729, 7456, 19422, 25605, 24162,
+	15526, 2265, -11668, -22129, -26000, -22128, -11668, 2266,
+	15526, 24163, 25604, 19422, 7456, -6729, -18911, -25462,
+	-24431, -16126, -3018, 10988, 21722, 25989, 22516, 12339,
+	-1511, -14913, -23873, -25725, -19917, -8178, 5996, 18384,
+	25299, 24680, 16712, 3768, -10298, -21298, -25956, -22885,
+	-12999, 756, 14287, 23564, 25824, 20394, 8892, -5257,
+	-17842, -25114, -24907, -17284, -4514, 9599, 20855, 25901,
+	23234, 13649, 0, -13649, -23234, -25901, -20855, -9599,
+	4515, 17284, 24907, 25114, 17842, 5257, -8892, -20394,
+	-25824, -23563, -14287, -756, 13000, 22885, 25956, 21297,
+	10297, -3768, -16712, -24680, -25299, -18384, -5995, 8178,
+	19917, 25725, 23873, 14912, 1511, -12339, -22516, -25988,
+	-21722, -10987, 3018, 16126, 24432, 25462, 18911, 6729,
+	-7457, -19422, -25605, -24162, -15525, -2265, 11668, 22129},
+	{
+// Carrier 13 Phase 3
+	18384, 5996, -8178, -19917, -25725, -23873, -14912, -1511,
+	12339, 22516, 25989, 21722, 10988, -3018, -16126, -24432,
+	-25462, -18911, -6729, 7456, 19422, 25605, 24163, 15526,
+	2266, -11668, -22129, -26000, -22129, -11668, 2266, 15526,
+	24163, 25604, 19422, 7456, -6729, -18911, -25462, -24431,
+	-16126, -3018, 10988, 21722, 25989, 22516, 12339, -1511,
+	-14913, -23873, -25725, -19917, -8178, 5996, 18384, 25299,
+	24680, 16712, 3768, -10298, -21297, -25956, -22885, -12999,
+	756, 14287, 23564, 25824, 20394, 8892, -5257, -17842,
+	-25114, -24907, -17284, -4514, 9599, 20855, 25901, 23234,
+	13649, 0, -13649, -23234, -25901, -20855, -9599, 4514,
+	17284, 24907, 25114, 17842, 5257, -8892, -20394, -25824,
+	-23563, -14287, -756, 13000, 22885, 25956, 21297, 10297,
+	-3768, -16712, -24680, -25299, -18384, -5995, 8178, 19917,
+	25725, 23873, 14912, 1511, -12339, -22516, -25988, -21722,
+	-10987, 3018, 16126, 24432, 25462, 18911, 6729, -7457,
+	-19422, -25605, -24162, -15526, -2265, 11668, 22129, 26000,
+	22128, 11668, -2266, -15526, -24163, -25604, -19422, -7456,
+	6729, 18911, 25462, 24431, 16125, 3018, -10988, -21722,
+	-25989, -22516, -12339, 1511, 14913, 23873, 25725, 19917,
+	8177, -5996, -18384, -25299, -24680, -16712, -3768, 10298,
+	21298, 25956, 22885, 12999, -756, -14287, -23564, -25824,
+	-20394, -8892, 5257, 17842, 25114, 24907, 17284, 4514,
+	-9599, -20855, -25901, -23234, -13649, 0, 13649, 23234,
+	25901, 20855, 9599, -4515, -17284, -24907, -25114, -17842,
+	-5257, 8892, 20394, 25824, 23563, 14287, 755, -13000,
+	-22885, -25955, -21297, -10297, 3768, 16712, 24680, 25299},
+	},{{
+
+// Carrier 14 Phase 0
+	0, 14287, 23873, 25605, 18911, 5996, -8892, -20855,
+	-25956, -22516, -11668, 3018, 16712, 24907, 24907, 16712,
+	3018, -11668, -22516, -25956, -20855, -8892, 5996, 18911,
+	25605, 23873, 14287, 0, -14287, -23873, -25604, -18911,
+	-5995, 8892, 20855, 25956, 22516, 11668, -3018, -16712,
+	-24907, -24907, -16712, -3018, 11668, 22516, 25956, 20855,
+	8892, -5996, -18911, -25605, -23873, -14287, 0, 14287,
+	23873, 25604, 18911, 5995, -8892, -20855, -25956, -22516,
+	-11668, 3018, 16712, 24907, 24907, 16712, 3018, -11668,
+	-22516, -25956, -20855, -8892, 5996, 18911, 25605, 23873,
+	14287, 0, -14287, -23873, -25604, -18911, -5995, 8892,
+	20855, 25956, 22516, 11668, -3018, -16712, -24907, -24907,
+	-16712, -3018, 11668, 22516, 25956, 20855, 8892, -5996,
+	-18911, -25605, -23873, -14287, 0, 14287, 23873, 25604,
+	18911, 5995, -8892, -20855, -25956, -22516, -11668, 3018,
+	16712, 24907, 24907, 16712, 3018, -11668, -22516, -25956,
+	-20855, -8892, 5996, 18911, 25605, 23873, 14287, 0,
+	-14287, -23873, -25604, -18911, -5995, 8892, 20855, 25956,
+	22516, 11668, -3018, -16712, -24907, -24907, -16712, -3018,
+	11668, 22516, 25956, 20855, 8892, -5996, -18911, -25605,
+	-23873, -14287, 0, 14287, 23873, 25604, 18911, 5995,
+	-8892, -20855, -25956, -22516, -11668, 3018, 16712, 24907,
+	24907, 16712, 3018, -11668, -22516, -25955, -20855, -8892,
+	5996, 18911, 25605, 23873, 14287, 0, -14287, -23873,
+	-25604, -18911, -5995, 8892, 20855, 25956, 22516, 11668,
+	-3018, -16712, -24907, -24907, -16712, -3018, 11669, 22516,
+	25955, 20855, 8892, -5996, -18911, -25605, -23873, -14286},
+	{
+// Carrier 14 Phase 1
+	18384, 25462, 24163, 14912, 756, -13649, -23563, -25725,
+	-19422, -6729, 8178, 20394, 25901, 22885, 12339, -2266,
+	-16126, -24680, -25114, -17284, -3768, 10988, 22129, 25989,
+	21297, 9599, -5257, -18384, -25462, -24163, -14912, -756,
+	13649, 23564, 25725, 19422, 6729, -8178, -20394, -25901,
+	-22885, -12339, 2266, 16126, 24680, 25114, 17284, 3768,
+	-10988, -22129, -25988, -21297, -9599, 5257, 18384, 25462,
+	24163, 14912, 756, -13649, -23564, -25725, -19422, -6729,
+	8178, 20394, 25901, 22885, 12339, -2266, -16126, -24680,
+	-25114, -17284, -3768, 10988, 22129, 25988, 21297, 9599,
+	-5257, -18384, -25462, -24162, -14912, -756, 13649, 23564,
+	25725, 19422, 6729, -8178, -20394, -25901, -22885, -12339,
+	2266, 16126, 24680, 25114, 17284, 3768, -10988, -22129,
+	-25988, -21297, -9599, 5257, 18384, 25462, 24162, 14912,
+	756, -13649, -23564, -25725, -19422, -6729, 8178, 20394,
+	25901, 22885, 12339, -2266, -16126, -24680, -25114, -17284,
+	-3768, 10988, 22129, 25988, 21297, 9599, -5257, -18384,
+	-25462, -24162, -14912, -756, 13649, 23564, 25725, 19422,
+	6729, -8178, -20394, -25901, -22885, -12339, 2266, 16126,
+	24680, 25114, 17284, 3768, -10988, -22129, -25988, -21297,
+	-9599, 5257, 18384, 25462, 24162, 14912, 755, -13649,
+	-23564, -25725, -19422, -6729, 8178, 20394, 25901, 22885,
+	12339, -2266, -16126, -24680, -25114, -17284, -3767, 10988,
+	22129, 25988, 21297, 9599, -5257, -18384, -25462, -24162,
+	-14912, -755, 13649, 23564, 25725, 19422, 6729, -8178,
+	-20394, -25901, -22885, -12339, 2266, 16126, 24680, 25113,
+	17284, 3767, -10988, -22129, -25988, -21297, -9599, 5257},
+	{
+// Carrier 14 Phase 2
+	26000, 21722, 10298, -4514, -17842, -25299, -24432, -15526,
+	-1511, 13000, 23234, 25824, 19917, 7456, -7456, -19917,
+	-25824, -23234, -12999, 1511, 15526, 24432, 25299, 17842,
+	4514, -10298, -21722, -26000, -21722, -10298, 4514, 17842,
+	25299, 24431, 15526, 1511, -13000, -23234, -25824, -19917,
+	-7456, 7456, 19917, 25824, 23234, 12999, -1511, -15526,
+	-24432, -25299, -17842, -4514, 10298, 21722, 26000, 21722,
+	10298, -4514, -17842, -25299, -24431, -15526, -1511, 13000,
+	23234, 25824, 19917, 7456, -7456, -19917, -25824, -23234,
+	-12999, 1511, 15526, 24432, 25299, 17842, 4514, -10298,
+	-21722, -26000, -21722, -10297, 4514, 17842, 25299, 24431,
+	15526, 1511, -13000, -23234, -25824, -19917, -7456, 7457,
+	19917, 25824, 23234, 12999, -1511, -15526, -24432, -25299,
+	-17842, -4514, 10298, 21722, 26000, 21722, 10297, -4515,
+	-17842, -25299, -24431, -15526, -1511, 13000, 23234, 25824,
+	19917, 7456, -7457, -19917, -25824, -23234, -12999, 1511,
+	15526, 24432, 25299, 17842, 4514, -10298, -21722, -26000,
+	-21722, -10297, 4515, 17842, 25299, 24431, 15525, 1511,
+	-13000, -23234, -25824, -19917, -7456, 7457, 19917, 25824,
+	23234, 12999, -1511, -15526, -24432, -25299, -17842, -4514,
+	10298, 21722, 26000, 21722, 10297, -4515, -17842, -25299,
+	-24431, -15525, -1511, 13000, 23234, 25824, 19917, 7456,
+	-7457, -19917, -25824, -23234, -12999, 1512, 15526, 24432,
+	25299, 17842, 4514, -10298, -21722, -26000, -21722, -10297,
+	4515, 17842, 25299, 24431, 15525, 1511, -13000, -23234,
+	-25824, -19916, -7456, 7457, 19917, 25824, 23234, 12999,
+	-1512, -15526, -24432, -25299, -17842, -4514, 10298, 21722},
+	{
+// Carrier 14 Phase 3
+	18384, 5257, -9599, -21297, -25989, -22129, -10988, 3768,
+	17284, 25114, 24680, 16126, 2266, -12339, -22885, -25901,
+	-20394, -8178, 6729, 19422, 25725, 23563, 13649, -756,
+	-14913, -24163, -25462, -18384, -5257, 9599, 21297, 25989,
+	22129, 10988, -3768, -17284, -25114, -24680, -16126, -2265,
+	12339, 22885, 25901, 20394, 8178, -6729, -19422, -25725,
+	-23563, -13649, 756, 14913, 24163, 25462, 18384, 5257,
+	-9599, -21297, -25989, -22128, -10988, 3768, 17284, 25114,
+	24680, 16126, 2265, -12339, -22885, -25901, -20394, -8178,
+	6729, 19422, 25725, 23563, 13649, -756, -14913, -24163,
+	-25462, -18384, -5257, 9599, 21298, 25989, 22128, 10987,
+	-3768, -17284, -25114, -24680, -16126, -2265, 12339, 22885,
+	25901, 20394, 8178, -6729, -19422, -25725, -23563, -13649,
+	756, 14913, 24163, 25462, 18384, 5257, -9599, -21298,
+	-25989, -22128, -10987, 3768, 17284, 25114, 24680, 16125,
+	2265, -12339, -22885, -25901, -20394, -8178, 6729, 19422,
+	25725, 23563, 13649, -756, -14913, -24163, -25462, -18384,
+	-5257, 9599, 21298, 25989, 22128, 10987, -3768, -17284,
+	-25114, -24680, -16125, -2265, 12339, 22885, 25901, 20394,
+	8177, -6729, -19422, -25725, -23563, -13649, 756, 14913,
+	24163, 25462, 18384, 5257, -9599, -21298, -25989, -22128,
+	-10987, 3768, 17284, 25114, 24680, 16125, 2265, -12339,
+	-22885, -25901, -20394, -8177, 6729, 19422, 25725, 23563,
+	13649, -756, -14913, -24163, -25462, -18384, -5257, 9599,
+	21298, 25989, 22128, 10987, -3768, -17284, -25114, -24680,
+	-16125, -2265, 12339, 22885, 25901, 20394, 8177, -6729,
+	-19422, -25725, -23563, -13649, 756, 14913, 24163, 25462},
+	},{{
+
+// Carrier 15 Phase 0
+	0, 14912, 24432, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4514, 10988, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21297, -8892, 6729, 19917, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25114, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18384, 4514, -10988,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6729, -19917, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25114, -24432, -14913,
+	0, 14912, 24431, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4514, 10987, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21298, -8892, 6729, 19917, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25114, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18384, 4515, -10987,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6729, -19917, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25114, -24432, -14913,
+	0, 14912, 24431, 25114, 16712, 2266, -12999, -23563,
+	-25605, -18384, -4515, 10987, 22516, 25901, 19917, 6729,
+	-8892, -21297, -26000, -21298, -8892, 6729, 19916, 25901,
+	22516, 10988, -4514, -18384, -25604, -23564, -13000, 2265,
+	16712, 25113, 24432, 14913, 0, -14912, -24431, -25114,
+	-16712, -2266, 12999, 23563, 25605, 18385, 4515, -10987,
+	-22516, -25901, -19917, -6729, 8892, 21297, 26000, 21298,
+	8892, -6728, -19916, -25901, -22516, -10988, 4514, 18384,
+	25604, 23564, 13000, -2265, -16712, -25113, -24432, -14913},
+	{
+// Carrier 15 Phase 1
+	18384, 25605, 23564, 13000, -2266, -16712, -25114, -24432,
+	-14913, 0, 14912, 24432, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4514, 10988, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21297, -8892, 6729, 19917,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25114, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18384, 4514,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6729, -19917, -25901, -22516, -10988, 4514,
+	18384, 25604, 23564, 13000, -2265, -16712, -25114, -24432,
+	-14913, 0, 14912, 24431, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4515, 10987, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21298, -8892, 6729, 19917,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25114, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18384, 4515,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6729, -19916, -25901, -22516, -10988, 4514,
+	18384, 25604, 23564, 13000, -2265, -16712, -25114, -24432,
+	-14913, 0, 14912, 24431, 25114, 16712, 2266, -12999,
+	-23563, -25605, -18384, -4515, 10987, 22516, 25901, 19917,
+	6729, -8892, -21297, -26000, -21298, -8892, 6728, 19916,
+	25901, 22516, 10988, -4514, -18384, -25604, -23564, -13000,
+	2265, 16712, 25113, 24432, 14913, 0, -14912, -24431,
+	-25114, -16712, -2266, 12999, 23563, 25605, 18385, 4515,
+	-10987, -22516, -25901, -19917, -6729, 8892, 21297, 26000,
+	21298, 8892, -6728, -19916, -25901, -22516, -10988, 4514},
+	{
+// Carrier 15 Phase 2
+	26000, 21297, 8892, -6729, -19917, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2266, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4514, 10988, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21297, -8892, 6729,
+	19917, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25114, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18384,
+	4514, -10987, -22516, -25901, -19917, -6729, 8892, 21297,
+	26000, 21298, 8892, -6729, -19917, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2265, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4515, 10987, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21298, -8892, 6729,
+	19917, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25114, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18384,
+	4515, -10987, -22516, -25901, -19917, -6729, 8892, 21297,
+	26000, 21298, 8892, -6729, -19916, -25901, -22516, -10988,
+	4514, 18384, 25604, 23564, 13000, -2265, -16712, -25114,
+	-24432, -14913, 0, 14912, 24431, 25114, 16712, 2266,
+	-12999, -23563, -25605, -18384, -4515, 10987, 22516, 25901,
+	19917, 6729, -8892, -21297, -26000, -21298, -8892, 6728,
+	19916, 25901, 22516, 10988, -4514, -18384, -25604, -23564,
+	-13000, 2265, 16712, 25113, 24432, 14913, 0, -14912,
+	-24431, -25114, -16712, -2266, 12999, 23563, 25605, 18385,
+	4515, -10987, -22516, -25901, -19917, -6729, 8892, 21297},
+	{
+// Carrier 15 Phase 3
+	18384, 4514, -10988, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21297, 8892, -6729, -19917, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2266, -16712,
+	-25114, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4514, 10988, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6729, 19917, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25114, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605,
+	18384, 4514, -10987, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21298, 8892, -6729, -19917, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2265, -16712,
+	-25114, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4515, 10987, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6729, 19917, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25114, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605,
+	18384, 4515, -10987, -22516, -25901, -19917, -6729, 8892,
+	21297, 26000, 21298, 8892, -6729, -19916, -25901, -22516,
+	-10988, 4514, 18384, 25604, 23564, 13000, -2265, -16712,
+	-25113, -24432, -14913, 0, 14912, 24431, 25114, 16712,
+	2266, -12999, -23563, -25605, -18384, -4515, 10987, 22516,
+	25901, 19917, 6729, -8892, -21297, -26000, -21298, -8892,
+	6728, 19916, 25901, 22516, 10988, -4514, -18384, -25604,
+	-23564, -13000, 2265, 16712, 25113, 24432, 14913, 0,
+	-14912, -24431, -25114, -16712, -2266, 12999, 23563, 25605},
+	},{{
+
+// Carrier 16 Phase 0
+	0, 15526, 24907, 24432, 14287, -1511, -16712, -25299,
+	-23873, -13000, 3018, 17842, 25605, 23234, 11668, -4514,
+	-18911, -25824, -22516, -10298, 5996, 19917, 25956, 21722,
+	8892, -7456, -20855, -26000, -20855, -7456, 8892, 21722,
+	25956, 19917, 5996, -10298, -22516, -25824, -18911, -4514,
+	11668, 23234, 25604, 17842, 3018, -13000, -23873, -25299,
+	-16712, -1511, 14287, 24432, 24907, 15526, 0, -15526,
+	-24907, -24432, -14287, 1511, 16712, 25299, 23873, 12999,
+	-3018, -17842, -25605, -23234, -11668, 4514, 18911, 25824,
+	22516, 10298, -5996, -19917, -25956, -21722, -8892, 7456,
+	20855, 26000, 20855, 7456, -8892, -21722, -25956, -19917,
+	-5995, 10298, 22516, 25824, 18911, 4514, -11668, -23234,
+	-25604, -17842, -3018, 13000, 23873, 25299, 16712, 1511,
+	-14287, -24432, -24907, -15526, 0, 15526, 24907, 24431,
+	14287, -1511, -16712, -25299, -23873, -12999, 3018, 17842,
+	25605, 23234, 11668, -4514, -18911, -25824, -22516, -10298,
+	5996, 19917, 25956, 21722, 8892, -7456, -20855, -26000,
+	-20855, -7456, 8892, 21722, 25956, 19917, 5995, -10298,
+	-22516, -25824, -18911, -4514, 11668, 23234, 25604, 17842,
+	3018, -13000, -23873, -25299, -16712, -1511, 14287, 24432,
+	24907, 15526, 0, -15526, -24907, -24431, -14287, 1511,
+	16712, 25299, 23873, 12999, -3018, -17842, -25605, -23234,
+	-11668, 4514, 18911, 25824, 22516, 10298, -5996, -19917,
+	-25956, -21722, -8892, 7456, 20855, 26000, 20855, 7456,
+	-8892, -21722, -25956, -19917, -5995, 10298, 22516, 25824,
+	18911, 4514, -11668, -23234, -25604, -17842, -3018, 13000,
+	23873, 25299, 16712, 1511, -14287, -24432, -24907, -15526},
+	{
+// Carrier 16 Phase 1
+	18384, 25725, 22885, 10988, -5257, -19422, -25901, -22129,
+	-9599, 6729, 20394, 25989, 21297, 8178, -8178, -21297,
+	-25989, -20394, -6729, 9599, 22129, 25901, 19422, 5257,
+	-10988, -22885, -25725, -18384, -3768, 12339, 23564, 25462,
+	17284, 2266, -13649, -24163, -25114, -16126, -756, 14913,
+	24680, 24680, 14912, -756, -16126, -25114, -24163, -13649,
+	2266, 17284, 25462, 23563, 12339, -3768, -18384, -25725,
+	-22885, -10988, 5257, 19422, 25901, 22129, 9599, -6729,
+	-20394, -25989, -21297, -8178, 8178, 21297, 25989, 20394,
+	6729, -9599, -22129, -25901, -19422, -5257, 10988, 22885,
+	25725, 18384, 3768, -12339, -23564, -25462, -17284, -2266,
+	13649, 24163, 25114, 16126, 756, -14913, -24680, -24680,
+	-14912, 756, 16126, 25114, 24163, 13649, -2266, -17284,
+	-25462, -23563, -12339, 3768, 18384, 25725, 22885, 10988,
+	-5257, -19422, -25901, -22129, -9599, 6729, 20394, 25989,
+	21297, 8178, -8178, -21297, -25989, -20394, -6729, 9599,
+	22129, 25901, 19422, 5257, -10988, -22885, -25725, -18384,
+	-3768, 12339, 23564, 25462, 17284, 2266, -13649, -24163,
+	-25114, -16126, -756, 14913, 24680, 24680, 14912, -756,
+	-16126, -25114, -24163, -13649, 2266, 17284, 25462, 23563,
+	12339, -3768, -18384, -25725, -22885, -10988, 5257, 19422,
+	25901, 22129, 9599, -6729, -20394, -25989, -21297, -8178,
+	8178, 21297, 25988, 20394, 6729, -9599, -22129, -25901,
+	-19422, -5257, 10988, 22885, 25725, 18384, 3768, -12339,
+	-23564, -25462, -17284, -2265, 13649, 24163, 25114, 16126,
+	756, -14913, -24680, -24680, -14912, 756, 16126, 25114,
+	24163, 13649, -2266, -17284, -25462, -23563, -12339, 3768},
+	{
+// Carrier 16 Phase 2
+	26000, 20855, 7456, -8892, -21722, -25956, -19917, -5996,
+	10298, 22516, 25824, 18911, 4514, -11668, -23234, -25605,
+	-17842, -3018, 13000, 23873, 25299, 16712, 1511, -14287,
+	-24432, -24907, -15526, 0, 15526, 24907, 24432, 14287,
+	-1511, -16712, -25299, -23873, -12999, 3018, 17842, 25605,
+	23234, 11668, -4514, -18911, -25824, -22516, -10298, 5996,
+	19917, 25956, 21722, 8892, -7456, -20855, -26000, -20855,
+	-7456, 8892, 21722, 25956, 19917, 5995, -10298, -22516,
+	-25824, -18911, -4514, 11668, 23234, 25604, 17842, 3018,
+	-13000, -23873, -25299, -16712, -1511, 14287, 24432, 24907,
+	15526, 0, -15526, -24907, -24432, -14287, 1511, 16712,
+	25299, 23873, 12999, -3018, -17842, -25605, -23234, -11668,
+	4514, 18911, 25824, 22516, 10298, -5996, -19917, -25956,
+	-21722, -8892, 7456, 20855, 26000, 20855, 7456, -8892,
+	-21722, -25956, -19917, -5995, 10298, 22516, 25824, 18911,
+	4514, -11668, -23234, -25604, -17842, -3018, 13000, 23873,
+	25299, 16712, 1511, -14287, -24432, -24907, -15526, 0,
+	15526, 24907, 24431, 14287, -1511, -16712, -25299, -23873,
+	-12999, 3018, 17842, 25605, 23234, 11668, -4514, -18911,
+	-25824, -22516, -10298, 5996, 19917, 25956, 21722, 8892,
+	-7456, -20855, -26000, -20855, -7456, 8892, 21722, 25956,
+	19917, 5995, -10298, -22516, -25824, -18911, -4514, 11668,
+	23234, 25604, 17842, 3018, -13000, -23873, -25299, -16712,
+	-1511, 14287, 24432, 24907, 15526, 0, -15526, -24907,
+	-24431, -14287, 1511, 16712, 25299, 23873, 12999, -3018,
+	-17842, -25605, -23234, -11668, 4514, 18911, 25824, 22516,
+	10298, -5996, -19917, -25956, -21722, -8892, 7456, 20855},
+	{
+// Carrier 16 Phase 3
+	18384, 3768, -12339, -23564, -25462, -17284, -2266, 13649,
+	24163, 25114, 16126, 756, -14912, -24680, -24680, -14912,
+	756, 16126, 25114, 24163, 13649, -2266, -17284, -25462,
+	-23563, -12339, 3768, 18384, 25725, 22885, 10988, -5257,
+	-19422, -25901, -22129, -9599, 6729, 20394, 25989, 21297,
+	8178, -8178, -21297, -25989, -20394, -6729, 9599, 22129,
+	25901, 19422, 5257, -10988, -22885, -25725, -18384, -3768,
+	12339, 23564, 25462, 17284, 2266, -13649, -24163, -25114,
+	-16126, -756, 14913, 24680, 24680, 14912, -756, -16126,
+	-25114, -24163, -13649, 2266, 17284, 25462, 23563, 12339,
+	-3768, -18384, -25725, -22885, -10988, 5257, 19422, 25901,
+	22129, 9599, -6729, -20394, -25989, -21297, -8178, 8178,
+	21297, 25989, 20394, 6729, -9599, -22129, -25901, -19422,
+	-5257, 10988, 22885, 25725, 18384, 3768, -12339, -23564,
+	-25462, -17284, -2266, 13649, 24163, 25114, 16126, 756,
+	-14913, -24680, -24680, -14912, 756, 16126, 25114, 24163,
+	13649, -2266, -17284, -25462, -23563, -12339, 3768, 18384,
+	25725, 22885, 10988, -5257, -19422, -25901, -22129, -9599,
+	6729, 20394, 25989, 21297, 8178, -8178, -21297, -25988,
+	-20394, -6729, 9599, 22129, 25901, 19422, 5257, -10988,
+	-22885, -25725, -18384, -3768, 12339, 23564, 25462, 17284,
+	2265, -13649, -24163, -25114, -16126, -756, 14913, 24680,
+	24680, 14912, -756, -16126, -25114, -24163, -13649, 2266,
+	17284, 25462, 23563, 12339, -3768, -18384, -25725, -22885,
+	-10988, 5257, 19422, 25901, 22128, 9599, -6729, -20394,
+	-25989, -21297, -8178, 8178, 21297, 25988, 20394, 6729,
+	-9599, -22129, -25901, -19422, -5257, 10988, 22885, 25725},
+	},{{
+
+// Carrier 17 Phase 0
+	0, 16126, 25299, 23564, 11668, -5257, -19917, -25989,
+	-20855, -6729, 10298, 22885, 25604, 17284, 1511, -14913,
+	-24907, -24163, -12999, 3768, 18911, 25901, 21722, 8178,
+	-8892, -22129, -25824, -18384, -3018, 13649, 24432, 24680,
+	14287, -2266, -17842, -25725, -22516, -9599, 7456, 21298,
+	25956, 19422, 4514, -12339, -23873, -25114, -15526, 756,
+	16712, 25462, 23234, 10987, -5996, -20394, -26000, -20394,
+	-5995, 10988, 23234, 25462, 16712, 756, -15526, -25114,
+	-23873, -12339, 4515, 19422, 25956, 21297, 7456, -9599,
+	-22516, -25725, -17842, -2265, 14287, 24680, 24431, 13649,
+	-3018, -18384, -25824, -22128, -8892, 8178, 21722, 25901,
+	18911, 3768, -13000, -24163, -24907, -14912, 1511, 17284,
+	25605, 22885, 10297, -6729, -20855, -25988, -19916, -5257,
+	11669, 23564, 25299, 16125, 0, -16126, -25299, -23563,
+	-11668, 5257, 19917, 25989, 20855, 6729, -10298, -22885,
+	-25604, -17284, -1511, 14913, 24907, 24162, 12999, -3768,
+	-18911, -25901, -21722, -8177, 8892, 22129, 25824, 18384,
+	3018, -13649, -24432, -24680, -14286, 2266, 17842, 25725,
+	22516, 9599, -7457, -21298, -25955, -19422, -4514, 12339,
+	23873, 25113, 15525, -756, -16712, -25462, -23234, -10987,
+	5996, 20395, 26000, 20394, 5995, -10988, -23234, -25462,
+	-16712, -755, 15526, 25114, 23873, 12339, -4515, -19422,
+	-25956, -21297, -7456, 9599, 22516, 25725, 17841, 2265,
+	-14287, -24680, -24431, -13649, 3018, 18385, 25824, 22128,
+	8892, -8178, -21722, -25901, -18911, -3767, 13000, 24163,
+	24907, 14912, -1512, -17285, -25605, -22885, -10297, 6729,
+	20855, 25988, 19916, 5257, -11669, -23564, -25299, -16125},
+	{
+// Carrier 17 Phase 1
+	18384, 25824, 22129, 8892, -8178, -21722, -25901, -18911,
+	-3768, 13000, 24163, 24907, 14912, -1511, -17284, -25605,
+	-22885, -10298, 6729, 20855, 25989, 19917, 5257, -11668,
+	-23564, -25299, -16126, 0, 16126, 25299, 23563, 11668,
+	-5257, -19917, -25989, -20855, -6729, 10298, 22885, 25604,
+	17284, 1511, -14913, -24907, -24163, -12999, 3768, 18911,
+	25901, 21722, 8178, -8892, -22129, -25824, -18384, -3018,
+	13649, 24432, 24680, 14287, -2266, -17842, -25725, -22516,
+	-9599, 7457, 21298, 25956, 19422, 4514, -12339, -23873,
+	-25114, -15525, 756, 16712, 25462, 23234, 10987, -5996,
+	-20394, -26000, -20394, -5995, 10988, 23234, 25462, 16712,
+	755, -15526, -25114, -23873, -12339, 4515, 19422, 25956,
+	21297, 7456, -9599, -22516, -25725, -17842, -2265, 14287,
+	24680, 24431, 13649, -3018, -18384, -25824, -22128, -8892,
+	8178, 21722, 25901, 18911, 3767, -13000, -24163, -24907,
+	-14912, 1512, 17284, 25605, 22885, 10297, -6729, -20855,
+	-25988, -19916, -5257, 11669, 23564, 25299, 16125, 0,
+	-16126, -25299, -23563, -11668, 5257, 19917, 25989, 20854,
+	6728, -10298, -22885, -25604, -17284, -1511, 14913, 24907,
+	24162, 12999, -3768, -18911, -25901, -21722, -8177, 8892,
+	22129, 25824, 18384, 3018, -13649, -24432, -24680, -14286,
+	2266, 17842, 25725, 22516, 9598, -7457, -21298, -25955,
+	-19422, -4514, 12339, 23873, 25113, 15525, -756, -16712,
+	-25462, -23234, -10987, 5996, 20395, 26000, 20394, 5995,
+	-10988, -23234, -25462, -16712, -755, 15526, 25114, 23873,
+	12339, -4515, -19422, -25956, -21297, -7456, 9599, 22516,
+	25725, 17841, 2265, -14287, -24680, -24431, -13648, 3018},
+	{
+// Carrier 17 Phase 2
+	26000, 20394, 5996, -10988, -23234, -25462, -16712, -756,
+	15526, 25114, 23873, 12339, -4514, -19422, -25956, -21297,
+	-7456, 9599, 22516, 25725, 17842, 2266, -14287, -24680,
+	-24431, -13649, 3018, 18384, 25824, 22129, 8892, -8178,
+	-21722, -25901, -18911, -3768, 13000, 24163, 24907, 14912,
+	-1511, -17284, -25605, -22885, -10297, 6729, 20855, 25988,
+	19917, 5257, -11668, -23564, -25299, -16126, 0, 16126,
+	25299, 23563, 11668, -5257, -19917, -25989, -20855, -6729,
+	10298, 22885, 25604, 17284, 1511, -14913, -24907, -24162,
+	-12999, 3768, 18911, 25901, 21722, 8178, -8892, -22129,
+	-25824, -18384, -3018, 13649, 24432, 24680, 14287, -2266,
+	-17842, -25725, -22516, -9599, 7457, 21298, 25956, 19422,
+	4514, -12339, -23873, -25114, -15525, 756, 16712, 25462,
+	23234, 10987, -5996, -20394, -26000, -20394, -5995, 10988,
+	23234, 25462, 16712, 755, -15526, -25114, -23873, -12339,
+	4515, 19422, 25956, 21297, 7456, -9599, -22516, -25725,
+	-17842, -2265, 14287, 24680, 24431, 13649, -3018, -18384,
+	-25824, -22128, -8892, 8178, 21722, 25901, 18911, 3767,
+	-13000, -24163, -24907, -14912, 1512, 17284, 25605, 22885,
+	10297, -6729, -20855, -25988, -19916, -5257, 11669, 23564,
+	25299, 16125, 0, -16126, -25299, -23563, -11668, 5258,
+	19917, 25989, 20854, 6728, -10298, -22885, -25604, -17284,
+	-1511, 14913, 24907, 24162, 12999, -3768, -18912, -25901,
+	-21722, -8177, 8892, 22129, 25824, 18384, 3017, -13649,
+	-24432, -24680, -14286, 2266, 17842, 25725, 22516, 9598,
+	-7457, -21298, -25955, -19422, -4514, 12340, 23873, 25113,
+	15525, -756, -16712, -25462, -23234, -10987, 5996, 20395},
+	{
+// Carrier 17 Phase 3
+	18384, 3018, -13649, -24432, -24680, -14287, 2266, 17842,
+	25725, 22516, 9599, -7456, -21297, -25956, -19422, -4514,
+	12339, 23873, 25114, 15526, -756, -16712, -25462, -23234,
+	-10988, 5996, 20394, 26000, 20394, 5995, -10988, -23234,
+	-25462, -16712, -756, 15526, 25114, 23873, 12339, -4514,
+	-19422, -25956, -21297, -7456, 9599, 22516, 25725, 17842,
+	2265, -14287, -24680, -24431, -13649, 3018, 18384, 25824,
+	22128, 8892, -8178, -21722, -25901, -18911, -3768, 13000,
+	24163, 24907, 14912, -1511, -17284, -25605, -22885, -10297,
+	6729, 20855, 25988, 19917, 5257, -11668, -23564, -25299,
+	-16125, 0, 16126, 25299, 23563, 11668, -5257, -19917,
+	-25989, -20855, -6729, 10298, 22885, 25604, 17284, 1511,
+	-14913, -24907, -24162, -12999, 3768, 18911, 25901, 21722,
+	8177, -8892, -22129, -25824, -18384, -3018, 13649, 24432,
+	24680, 14287, -2266, -17842, -25725, -22516, -9599, 7457,
+	21298, 25955, 19422, 4514, -12339, -23873, -25113, -15525,
+	756, 16712, 25462, 23234, 10987, -5996, -20395, -26000,
+	-20394, -5995, 10988, 23234, 25462, 16712, 755, -15526,
+	-25114, -23873, -12339, 4515, 19422, 25956, 21297, 7456,
+	-9599, -22516, -25725, -17842, -2265, 14287, 24680, 24431,
+	13649, -3018, -18385, -25824, -22128, -8892, 8178, 21722,
+	25901, 18911, 3767, -13000, -24163, -24907, -14912, 1512,
+	17285, 25605, 22885, 10297, -6729, -20855, -25988, -19916,
+	-5257, 11669, 23564, 25299, 16125, 0, -16126, -25299,
+	-23563, -11668, 5258, 19917, 25989, 20854, 6728, -10298,
+	-22885, -25604, -17284, -1511, 14913, 24907, 24162, 12999,
+	-3768, -18912, -25901, -21722, -8177, 8893, 22129, 25824},
+	},{{
+
+// Carrier 18 Phase 0
+	0, 16712, 25605, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712,
+	0, 16712, 25604, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712,
+	0, 16712, 25604, 22516, 8892, -8892, -22516, -25605,
+	-16712, 0, 16712, 25604, 22516, 8892, -8892, -22516,
+	-25605, -16712, 0, 16712, 25604, 22516, 8892, -8892,
+	-22516, -25605, -16712, 0, 16712, 25604, 22516, 8892,
+	-8892, -22516, -25605, -16712, 0, 16712, 25604, 22516,
+	8892, -8892, -22516, -25605, -16712, 0, 16712, 25604,
+	22516, 8892, -8892, -22516, -25605, -16712, 0, 16712,
+	25604, 22516, 8892, -8892, -22516, -25605, -16712, 0,
+	16712, 25604, 22516, 8892, -8892, -22516, -25605, -16712},
+	{
+// Carrier 18 Phase 1
+	18384, 25901, 21297, 6729, -10988, -23563, -25114, -14913,
+	2266, 18384, 25901, 21297, 6729, -10988, -23563, -25114,
+	-14913, 2266, 18384, 25901, 21297, 6729, -10988, -23563,
+	-25114, -14913, 2266, 18384, 25901, 21297, 6729, -10988,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21297, 6729,
+	-10988, -23563, -25114, -14913, 2265, 18384, 25901, 21297,
+	6729, -10988, -23563, -25114, -14913, 2265, 18384, 25901,
+	21297, 6729, -10988, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265,
+	18384, 25901, 21298, 6729, -10987, -23563, -25114, -14913,
+	2265, 18384, 25901, 21298, 6729, -10987, -23563, -25114,
+	-14913, 2265, 18384, 25901, 21298, 6729, -10987, -23563,
+	-25114, -14913, 2265, 18384, 25901, 21298, 6729, -10987,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21298, 6729,
+	-10987, -23563, -25114, -14913, 2265, 18384, 25901, 21298,
+	6729, -10987, -23563, -25114, -14913, 2265, 18384, 25901,
+	21298, 6729, -10987, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265,
+	18384, 25901, 21298, 6729, -10987, -23563, -25114, -14913,
+	2265, 18384, 25901, 21298, 6729, -10987, -23563, -25114,
+	-14913, 2265, 18384, 25901, 21298, 6729, -10987, -23563,
+	-25114, -14913, 2265, 18384, 25901, 21298, 6729, -10987,
+	-23563, -25114, -14913, 2265, 18384, 25901, 21298, 6729,
+	-10987, -23563, -25114, -14913, 2265, 18384, 25901, 21298,
+	6729, -10987, -23563, -25114, -14913, 2265, 18384, 25901,
+	21298, 6729, -10987, -23563, -25114, -14913, 2265, 18384,
+	25901, 21298, 6729, -10987, -23563, -25114, -14913, 2265},
+	{
+// Carrier 18 Phase 2
+	26000, 19917, 4514, -12999, -24432, -24432, -13000, 4514,
+	19917, 26000, 19917, 4514, -12999, -24432, -24432, -13000,
+	4514, 19917, 26000, 19917, 4514, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4514, -12999, -24431,
+	-24432, -13000, 4514, 19917, 26000, 19917, 4514, -12999,
+	-24431, -24432, -13000, 4514, 19917, 26000, 19917, 4514,
+	-12999, -24431, -24432, -13000, 4514, 19917, 26000, 19917,
+	4514, -12999, -24431, -24432, -13000, 4514, 19917, 26000,
+	19917, 4514, -12999, -24431, -24432, -13000, 4514, 19917,
+	26000, 19917, 4514, -12999, -24431, -24432, -13000, 4514,
+	19917, 26000, 19917, 4514, -12999, -24431, -24432, -13000,
+	4514, 19917, 26000, 19917, 4514, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4514, -12999, -24431,
+	-24432, -13000, 4514, 19917, 26000, 19917, 4515, -12999,
+	-24431, -24432, -13000, 4514, 19917, 26000, 19917, 4515,
+	-12999, -24431, -24432, -13000, 4514, 19917, 26000, 19917,
+	4515, -12999, -24431, -24432, -13000, 4514, 19917, 26000,
+	19917, 4515, -12999, -24431, -24432, -13000, 4514, 19917,
+	26000, 19917, 4515, -12999, -24431, -24432, -13000, 4514,
+	19917, 26000, 19917, 4515, -12999, -24431, -24432, -13000,
+	4514, 19917, 26000, 19917, 4515, -12999, -24431, -24432,
+	-13000, 4514, 19917, 26000, 19917, 4515, -12999, -24431,
+	-24432, -13000, 4514, 19916, 26000, 19917, 4515, -12999,
+	-24431, -24432, -13000, 4514, 19916, 26000, 19917, 4515,
+	-12999, -24431, -24432, -13000, 4514, 19916, 26000, 19917,
+	4515, -12999, -24431, -24432, -13000, 4514, 19916, 26000,
+	19917, 4515, -12999, -24431, -24432, -13000, 4514, 19916},
+	{
+// Carrier 18 Phase 3
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25114, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25114, -23564, -10988, 6729, 21297, 25901,
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25114, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25114, -23564, -10988, 6729, 21297, 25901,
+	18384, 2266, -14912, -25114, -23564, -10988, 6729, 21297,
+	25901, 18384, 2266, -14912, -25114, -23564, -10988, 6729,
+	21297, 25901, 18384, 2266, -14912, -25114, -23564, -10988,
+	6729, 21297, 25901, 18384, 2266, -14912, -25114, -23564,
+	-10988, 6729, 21297, 25901, 18384, 2266, -14912, -25114,
+	-23564, -10988, 6729, 21297, 25901, 18384, 2266, -14912,
+	-25114, -23564, -10988, 6729, 21297, 25901, 18384, 2266,
+	-14912, -25113, -23564, -10988, 6729, 21297, 25901, 18384,
+	2266, -14912, -25113, -23564, -10988, 6729, 21297, 25901},
+	},{{
+
+// Carrier 19 Phase 0
+	0, 17284, 25824, 21297, 5996, -12339, -24432, -24163,
+	-11668, 6729, 21722, 25725, 16712, -756, -17842, -25901,
+	-20855, -5257, 12999, 24680, 23873, 10988, -7456, -22129,
+	-25605, -16126, 1511, 18384, 25956, 20394, 4514, -13649,
+	-24907, -23564, -10298, 8178, 22516, 25462, 15526, -2266,
+	-18911, -25989, -19917, -3768, 14287, 25114, 23234, 9599,
+	-8892, -22885, -25299, -14912, 3018, 19422, 26000, 19422,
+	3018, -14913, -25299, -22885, -8892, 9599, 23234, 25114,
+	14287, -3768, -19917, -25989, -18911, -2266, 15526, 25462,
+	22516, 8178, -10298, -23564, -24907, -13649, 4514, 20394,
+	25956, 18384, 1511, -16126, -25605, -22129, -7456, 10988,
+	23873, 24680, 12999, -5257, -20855, -25901, -17842, -756,
+	16712, 25725, 21722, 6729, -11668, -24163, -24431, -12339,
+	5996, 21297, 25824, 17284, 0, -17284, -25824, -21297,
+	-5995, 12339, 24432, 24163, 11668, -6729, -21722, -25725,
+	-16712, 756, 17842, 25901, 20855, 5257, -13000, -24680,
+	-23873, -10988, 7456, 22129, 25604, 16126, -1511, -18384,
+	-25956, -20394, -4514, 13649, 24907, 23563, 10297, -8178,
+	-22516, -25462, -15526, 2266, 18911, 25989, 19917, 3768,
+	-14287, -25114, -23234, -9599, 8892, 22885, 25299, 14912,
+	-3018, -19422, -26000, -19422, -3018, 14913, 25299, 22885,
+	8892, -9599, -23234, -25114, -14287, 3768, 19917, 25988,
+	18911, 2265, -15526, -25462, -22516, -8178, 10298, 23564,
+	24907, 13649, -4514, -20394, -25956, -18384, -1511, 16126,
+	25605, 22128, 7456, -10988, -23873, -24680, -12999, 5257,
+	20855, 25901, 17842, 756, -16712, -25725, -21722, -6729,
+	11668, 24163, 24431, 12339, -5996, -21298, -25824, -17284},
+	{
+// Carrier 19 Phase 1
+	18384, 25956, 20394, 4514, -13649, -24907, -23564, -10298,
+	8178, 22516, 25462, 15526, -2266, -18911, -25989, -19917,
+	-3768, 14287, 25114, 23234, 9599, -8892, -22885, -25299,
+	-14912, 3018, 19422, 26000, 19422, 3018, -14913, -25299,
+	-22885, -8892, 9599, 23234, 25114, 14287, -3768, -19917,
+	-25989, -18911, -2266, 15526, 25462, 22516, 8178, -10298,
+	-23564, -24907, -13649, 4514, 20394, 25956, 18384, 1511,
+	-16126, -25605, -22129, -7456, 10988, 23873, 24680, 12999,
+	-5257, -20855, -25901, -17842, -756, 16712, 25725, 21722,
+	6729, -11668, -24163, -24431, -12339, 5996, 21297, 25824,
+	17284, 0, -17284, -25824, -21297, -5995, 12339, 24432,
+	24163, 11668, -6729, -21722, -25725, -16712, 756, 17842,
+	25901, 20855, 5257, -13000, -24680, -23873, -10988, 7456,
+	22129, 25604, 16126, -1511, -18384, -25956, -20394, -4514,
+	13649, 24907, 23563, 10297, -8178, -22516, -25462, -15526,
+	2266, 18911, 25989, 19917, 3768, -14287, -25114, -23234,
+	-9599, 8892, 22885, 25299, 14912, -3018, -19422, -26000,
+	-19422, -3018, 14913, 25299, 22885, 8892, -9599, -23234,
+	-25114, -14287, 3768, 19917, 25988, 18911, 2265, -15526,
+	-25462, -22516, -8178, 10298, 23564, 24907, 13649, -4514,
+	-20394, -25956, -18384, -1511, 16126, 25605, 22128, 7456,
+	-10988, -23873, -24680, -12999, 5257, 20855, 25901, 17842,
+	756, -16712, -25725, -21722, -6729, 11668, 24163, 24431,
+	12339, -5996, -21298, -25824, -17284, 0, 17284, 25824,
+	21297, 5995, -12339, -24432, -24162, -11668, 6729, 21722,
+	25725, 16712, -756, -17842, -25901, -20855, -5257, 13000,
+	24680, 23873, 10987, -7457, -22129, -25604, -16126, 1511},
+	{
+// Carrier 19 Phase 2
+	26000, 19422, 3018, -14912, -25299, -22885, -8892, 9599,
+	23234, 25114, 14287, -3768, -19917, -25989, -18911, -2266,
+	15526, 25462, 22516, 8178, -10298, -23564, -24907, -13649,
+	4514, 20394, 25956, 18384, 1511, -16126, -25605, -22129,
+	-7456, 10988, 23873, 24680, 12999, -5257, -20855, -25901,
+	-17842, -756, 16712, 25725, 21722, 6729, -11668, -24163,
+	-24431, -12339, 5996, 21297, 25824, 17284, 0, -17284,
+	-25824, -21297, -5995, 12339, 24432, 24163, 11668, -6729,
+	-21722, -25725, -16712, 756, 17842, 25901, 20855, 5257,
+	-13000, -24680, -23873, -10988, 7456, 22129, 25604, 16126,
+	-1511, -18384, -25956, -20394, -4514, 13649, 24907, 23563,
+	10298, -8178, -22516, -25462, -15526, 2266, 18911, 25989,
+	19917, 3768, -14287, -25114, -23234, -9599, 8892, 22885,
+	25299, 14912, -3018, -19422, -26000, -19422, -3018, 14913,
+	25299, 22885, 8892, -9599, -23234, -25114, -14287, 3768,
+	19917, 25988, 18911, 2265, -15526, -25462, -22516, -8178,
+	10298, 23564, 24907, 13649, -4514, -20394, -25956, -18384,
+	-1511, 16126, 25605, 22128, 7456, -10988, -23873, -24680,
+	-12999, 5257, 20855, 25901, 17842, 756, -16712, -25725,
+	-21722, -6729, 11668, 24163, 24431, 12339, -5996, -21298,
+	-25824, -17284, 0, 17284, 25824, 21297, 5995, -12339,
+	-24432, -24162, -11668, 6729, 21722, 25725, 16712, -756,
+	-17842, -25901, -20855, -5257, 13000, 24680, 23873, 10987,
+	-7457, -22129, -25604, -16126, 1511, 18384, 25956, 20394,
+	4514, -13649, -24907, -23563, -10297, 8178, 22516, 25462,
+	15526, -2266, -18911, -25989, -19917, -3768, 14287, 25114,
+	23234, 9599, -8892, -22885, -25299, -14912, 3018, 19422},
+	{
+// Carrier 19 Phase 3
+	18384, 1511, -16126, -25605, -22129, -7456, 10988, 23873,
+	24680, 12999, -5257, -20855, -25901, -17842, -756, 16712,
+	25725, 21722, 6729, -11668, -24163, -24432, -12339, 5996,
+	21297, 25824, 17284, 0, -17284, -25824, -21297, -5995,
+	12339, 24432, 24163, 11668, -6729, -21722, -25725, -16712,
+	756, 17842, 25901, 20855, 5257, -13000, -24680, -23873,
+	-10988, 7456, 22129, 25604, 16126, -1511, -18384, -25956,
+	-20394, -4514, 13649, 24907, 23563, 10298, -8178, -22516,
+	-25462, -15526, 2266, 18911, 25989, 19917, 3768, -14287,
+	-25114, -23234, -9599, 8892, 22885, 25299, 14912, -3018,
+	-19422, -26000, -19422, -3018, 14913, 25299, 22885, 8892,
+	-9599, -23234, -25114, -14287, 3768, 19917, 25988, 18911,
+	2265, -15526, -25462, -22516, -8178, 10298, 23564, 24907,
+	13649, -4514, -20394, -25956, -18384, -1511, 16126, 25605,
+	22128, 7456, -10988, -23873, -24680, -12999, 5257, 20855,
+	25901, 17842, 756, -16712, -25725, -21722, -6729, 11668,
+	24163, 24431, 12339, -5996, -21298, -25824, -17284, 0,
+	17284, 25824, 21297, 5995, -12339, -24432, -24162, -11668,
+	6729, 21722, 25725, 16712, -756, -17842, -25901, -20855,
+	-5257, 13000, 24680, 23873, 10987, -7456, -22129, -25604,
+	-16126, 1511, 18384, 25956, 20394, 4514, -13649, -24907,
+	-23563, -10297, 8178, 22516, 25462, 15526, -2266, -18911,
+	-25989, -19917, -3768, 14287, 25114, 23234, 9599, -8892,
+	-22885, -25299, -14912, 3018, 19422, 26000, 19422, 3018,
+	-14913, -25299, -22885, -8892, 9599, 23234, 25114, 14287,
+	-3768, -19917, -25988, -18911, -2265, 15526, 25462, 22516,
+	8178, -10298, -23564, -24907, -13649, 4515, 20394, 25956},
+	},{{
+
+// Carrier 20 Phase 0
+	0, 17842, 25956, 19917, 3018, -15526, -25605, -21722,
+	-5996, 13000, 24907, 23234, 8892, -10298, -23873, -24432,
+	-11668, 7456, 22516, 25299, 14287, -4514, -20855, -25824,
+	-16712, 1511, 18911, 26000, 18911, 1511, -16712, -25824,
+	-20855, -4514, 14287, 25299, 22516, 7456, -11668, -24432,
+	-23873, -10297, 8892, 23234, 24907, 12999, -5996, -21722,
+	-25604, -15526, 3018, 19917, 25956, 17842, 0, -17842,
+	-25956, -19917, -3018, 15526, 25605, 21722, 5995, -13000,
+	-24907, -23234, -8892, 10298, 23873, 24431, 11668, -7457,
+	-22516, -25299, -14287, 4515, 20855, 25824, 16712, -1511,
+	-18911, -26000, -18911, -1511, 16712, 25824, 20855, 4514,
+	-14287, -25299, -22516, -7456, 11668, 24432, 23873, 10297,
+	-8892, -23234, -24907, -12999, 5996, 21722, 25604, 15525,
+	-3018, -19917, -25955, -17842, 0, 17842, 25956, 19916,
+	3018, -15526, -25605, -21722, -5995, 13000, 24907, 23234,
+	8892, -10298, -23873, -24431, -11668, 7457, 22516, 25299,
+	14286, -4515, -20855, -25824, -16712, 1512, 18911, 26000,
+	18911, 1511, -16712, -25824, -20855, -4514, 14287, 25299,
+	22516, 7456, -11669, -24432, -23873, -10297, 8892, 23234,
+	24907, 12999, -5996, -21722, -25604, -15525, 3018, 19917,
+	25955, 17842, 0, -17842, -25956, -19916, -3018, 15526,
+	25605, 21722, 5995, -13000, -24907, -23234, -8892, 10298,
+	23873, 24431, 11668, -7457, -22516, -25299, -14286, 4515,
+	20855, 25824, 16712, -1512, -18912, -26000, -18911, -1511,
+	16712, 25824, 20854, 4514, -14287, -25299, -22516, -7456,
+	11669, 24432, 23873, 10297, -8892, -23234, -24907, -12999,
+	5996, 21722, 25604, 15525, -3018, -19917, -25955, -17841},
+	{
+// Carrier 20 Phase 1
+	18384, 25989, 19422, 2266, -16126, -25725, -21297, -5257,
+	13649, 25114, 22885, 8178, -10988, -24163, -24163, -10988,
+	8178, 22885, 25114, 13649, -5257, -21297, -25725, -16126,
+	2266, 19422, 25988, 18384, 756, -17284, -25901, -20394,
+	-3768, 14913, 25462, 22128, 6729, -12339, -24680, -23563,
+	-9599, 9599, 23564, 24680, 12339, -6729, -22129, -25462,
+	-14912, 3768, 20394, 25901, 17284, -756, -18384, -25989,
+	-19422, -2265, 16126, 25725, 21297, 5257, -13649, -25114,
+	-22885, -8178, 10988, 24163, 24162, 10987, -8178, -22885,
+	-25114, -13649, 5257, 21298, 25725, 16125, -2266, -19422,
+	-25988, -18384, -756, 17284, 25901, 20394, 3768, -14913,
+	-25462, -22128, -6729, 12339, 24680, 23563, 9599, -9599,
+	-23564, -24680, -12339, 6729, 22129, 25462, 14912, -3768,
+	-20394, -25901, -17284, 756, 18384, 25989, 19422, 2265,
+	-16126, -25725, -21297, -5257, 13649, 25114, 22885, 8177,
+	-10988, -24163, -24162, -10987, 8178, 22885, 25113, 13649,
+	-5257, -21298, -25725, -16125, 2266, 19422, 25988, 18384,
+	755, -17284, -25901, -20394, -3767, 14913, 25462, 22128,
+	6728, -12339, -24680, -23563, -9599, 9599, 23564, 24680,
+	12339, -6729, -22129, -25462, -14912, 3768, 20395, 25901,
+	17284, -756, -18385, -25989, -19422, -2265, 16126, 25725,
+	21297, 5257, -13649, -25114, -22885, -8177, 10988, 24163,
+	24162, 10987, -8178, -22885, -25113, -13649, 5258, 21298,
+	25725, 16125, -2266, -19422, -25988, -18384, -755, 17285,
+	25901, 20394, 3767, -14913, -25462, -22128, -6728, 12340,
+	24680, 23563, 9598, -9599, -23564, -24680, -12339, 6729,
+	22129, 25462, 14912, -3768, -20395, -25901, -17284, 756},
+	{
+// Carrier 20 Phase 2
+	26000, 18911, 1511, -16712, -25824, -20855, -4514, 14287,
+	25299, 22516, 7456, -11668, -24432, -23873, -10298, 8892,
+	23234, 24907, 12999, -5996, -21722, -25604, -15526, 3018,
+	19917, 25956, 17842, 0, -17842, -25956, -19917, -3018,
+	15526, 25605, 21722, 5995, -13000, -24907, -23234, -8892,
+	10298, 23873, 24431, 11668, -7456, -22516, -25299, -14287,
+	4514, 20855, 25824, 16712, -1511, -18911, -26000, -18911,
+	-1511, 16712, 25824, 20855, 4514, -14287, -25299, -22516,
+	-7456, 11668, 24432, 23873, 10297, -8892, -23234, -24907,
+	-12999, 5996, 21722, 25604, 15525, -3018, -19917, -25956,
+	-17842, 0, 17842, 25956, 19917, 3018, -15526, -25605,
+	-21722, -5995, 13000, 24907, 23234, 8892, -10298, -23873,
+	-24431, -11668, 7457, 22516, 25299, 14287, -4515, -20855,
+	-25824, -16712, 1512, 18911, 26000, 18911, 1511, -16712,
+	-25824, -20855, -4514, 14287, 25299, 22516, 7456, -11669,
+	-24432, -23873, -10297, 8892, 23234, 24907, 12999, -5996,
+	-21722, -25604, -15525, 3018, 19917, 25955, 17842, 0,
+	-17842, -25956, -19916, -3018, 15526, 25605, 21722, 5995,
+	-13000, -24907, -23234, -8892, 10298, 23873, 24431, 11668,
+	-7457, -22516, -25299, -14286, 4515, 20855, 25824, 16712,
+	-1512, -18911, -26000, -18911, -1511, 16712, 25824, 20854,
+	4514, -14287, -25299, -22516, -7456, 11669, 24432, 23873,
+	10297, -8892, -23234, -24907, -12999, 5996, 21722, 25604,
+	15525, -3018, -19917, -25955, -17841, 0, 17842, 25956,
+	19916, 3017, -15526, -25605, -21722, -5995, 13000, 24907,
+	23234, 8892, -10298, -23873, -24431, -11668, 7457, 22516,
+	25299, 14286, -4515, -20855, -25824, -16712, 1512, 18912},
+	{
+// Carrier 20 Phase 3
+	18384, 756, -17284, -25901, -20394, -3768, 14913, 25462,
+	22129, 6729, -12339, -24680, -23563, -9599, 9599, 23564,
+	24680, 12339, -6729, -22129, -25462, -14912, 3768, 20394,
+	25901, 17284, -756, -18384, -25989, -19422, -2265, 16126,
+	25725, 21297, 5257, -13649, -25114, -22885, -8178, 10988,
+	24163, 24163, 10987, -8178, -22885, -25114, -13649, 5257,
+	21298, 25725, 16126, -2266, -19422, -25988, -18384, -756,
+	17284, 25901, 20394, 3768, -14913, -25462, -22128, -6729,
+	12339, 24680, 23563, 9599, -9599, -23564, -24680, -12339,
+	6729, 22129, 25462, 14912, -3768, -20394, -25901, -17284,
+	756, 18384, 25989, 19422, 2265, -16126, -25725, -21297,
+	-5257, 13649, 25114, 22885, 8177, -10988, -24163, -24162,
+	-10987, 8178, 22885, 25114, 13649, -5257, -21298, -25725,
+	-16125, 2266, 19422, 25988, 18384, 755, -17284, -25901,
+	-20394, -3767, 14913, 25462, 22128, 6729, -12339, -24680,
+	-23563, -9599, 9599, 23564, 24680, 12339, -6729, -22129,
+	-25462, -14912, 3768, 20394, 25901, 17284, -756, -18384,
+	-25989, -19422, -2265, 16126, 25725, 21297, 5257, -13649,
+	-25114, -22885, -8177, 10988, 24163, 24162, 10987, -8178,
+	-22885, -25113, -13649, 5258, 21298, 25725, 16125, -2266,
+	-19422, -25988, -18384, -755, 17284, 25901, 20394, 3767,
+	-14913, -25462, -22128, -6728, 12339, 24680, 23563, 9598,
+	-9599, -23564, -24680, -12339, 6729, 22129, 25462, 14912,
+	-3768, -20395, -25901, -17284, 756, 18385, 25989, 19422,
+	2265, -16126, -25725, -21297, -5257, 13649, 25114, 22885,
+	8177, -10988, -24163, -24162, -10987, 8178, 22885, 25113,
+	13648, -5258, -21298, -25725, -16125, 2266, 19422, 25988},
+	},{{
+
+// Carrier 21 Phase 0
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18384,
+	0, 18384, 26000, 18384, 0, -18384, -26000, -18385,
+	0, 18384, 26000, 18385, 0, -18384, -26000, -18385},
+	{
+// Carrier 21 Phase 1
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18384, 0,
+	18384, 26000, 18384, 0, -18384, -26000, -18385, 0,
+	18384, 26000, 18385, 0, -18384, -26000, -18385, 0},
+	{
+// Carrier 21 Phase 2
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18384, 0, 18384,
+	26000, 18384, 0, -18384, -26000, -18385, 0, 18384,
+	26000, 18385, 0, -18384, -26000, -18385, 0, 18384},
+	{
+// Carrier 21 Phase 3
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18384, 0, 18384, 26000,
+	18384, 0, -18384, -26000, -18385, 0, 18384, 26000,
+	18385, 0, -18384, -26000, -18385, 0, 18384, 26000},
+	},{{
+
+// Carrier 22 Phase 0
+	0, 18911, 25956, 16712, -3018, -20855, -25605, -14287,
+	5996, 22516, 24907, 11668, -8892, -23873, -23873, -8892,
+	11668, 24907, 22516, 5996, -14287, -25605, -20855, -3018,
+	16712, 25956, 18911, 0, -18911, -25956, -16712, 3018,
+	20855, 25604, 14287, -5996, -22516, -24907, -11668, 8892,
+	23873, 23873, 8892, -11668, -24907, -22516, -5996, 14287,
+	25605, 20855, 3018, -16712, -25956, -18911, 0, 18911,
+	25956, 16712, -3018, -20855, -25604, -14287, 5996, 22516,
+	24907, 11668, -8892, -23873, -23873, -8892, 11668, 24907,
+	22516, 5995, -14287, -25605, -20855, -3018, 16712, 25956,
+	18911, 0, -18911, -25956, -16712, 3018, 20855, 25604,
+	14287, -5996, -22516, -24907, -11668, 8892, 23873, 23873,
+	8892, -11668, -24907, -22516, -5995, 14287, 25605, 20855,
+	3018, -16712, -25956, -18911, 0, 18911, 25956, 16712,
+	-3018, -20855, -25604, -14287, 5996, 22516, 24907, 11668,
+	-8892, -23873, -23873, -8892, 11668, 24907, 22516, 5995,
+	-14287, -25605, -20855, -3018, 16712, 25956, 18911, 0,
+	-18911, -25956, -16712, 3018, 20855, 25604, 14287, -5996,
+	-22516, -24907, -11668, 8892, 23873, 23873, 8892, -11668,
+	-24907, -22516, -5995, 14287, 25605, 20855, 3018, -16712,
+	-25956, -18911, 0, 18911, 25956, 16712, -3018, -20855,
+	-25604, -14287, 5996, 22516, 24907, 11668, -8892, -23873,
+	-23873, -8892, 11668, 24907, 22516, 5995, -14287, -25605,
+	-20855, -3018, 16712, 25956, 18911, 0, -18911, -25956,
+	-16712, 3018, 20855, 25604, 14287, -5996, -22516, -24907,
+	-11668, 8892, 23873, 23873, 8892, -11668, -24907, -22516,
+	-5995, 14287, 25605, 20855, 3018, -16712, -25956, -18911},
+	{
+// Carrier 22 Phase 1
+	18384, 25989, 17284, -2266, -20394, -25725, -14912, 5257,
+	22129, 25114, 12339, -8178, -23564, -24163, -9599, 10988,
+	24680, 22885, 6729, -13649, -25462, -21297, -3768, 16126,
+	25901, 19422, 756, -18384, -25989, -17284, 2266, 20394,
+	25725, 14912, -5257, -22129, -25114, -12339, 8178, 23564,
+	24163, 9599, -10988, -24680, -22885, -6729, 13649, 25462,
+	21297, 3768, -16126, -25901, -19422, -756, 18384, 25989,
+	17284, -2266, -20394, -25725, -14912, 5257, 22129, 25114,
+	12339, -8178, -23564, -24163, -9599, 10988, 24680, 22885,
+	6729, -13649, -25462, -21297, -3768, 16126, 25901, 19422,
+	756, -18384, -25988, -17284, 2266, 20394, 25725, 14912,
+	-5257, -22129, -25114, -12339, 8178, 23564, 24163, 9599,
+	-10988, -24680, -22885, -6729, 13649, 25462, 21297, 3768,
+	-16126, -25901, -19422, -756, 18384, 25988, 17284, -2266,
+	-20394, -25725, -14912, 5257, 22129, 25114, 12339, -8178,
+	-23564, -24163, -9599, 10988, 24680, 22885, 6729, -13649,
+	-25462, -21297, -3768, 16126, 25901, 19422, 756, -18384,
+	-25988, -17284, 2266, 20394, 25725, 14912, -5257, -22129,
+	-25114, -12339, 8178, 23564, 24163, 9599, -10988, -24680,
+	-22885, -6729, 13649, 25462, 21297, 3768, -16126, -25901,
+	-19422, -756, 18384, 25988, 17284, -2266, -20394, -25725,
+	-14912, 5257, 22129, 25114, 12339, -8178, -23564, -24162,
+	-9599, 10988, 24680, 22885, 6729, -13649, -25462, -21297,
+	-3768, 16126, 25901, 19422, 756, -18384, -25988, -17284,
+	2266, 20394, 25725, 14912, -5257, -22129, -25114, -12339,
+	8178, 23564, 24162, 9599, -10988, -24680, -22885, -6729,
+	13649, 25462, 21297, 3768, -16126, -25901, -19422, -756},
+	{
+// Carrier 22 Phase 2
+	26000, 17842, -1511, -19917, -25824, -15526, 4514, 21722,
+	25299, 13000, -7456, -23234, -24432, -10298, 10298, 24432,
+	23234, 7456, -12999, -25299, -21722, -4514, 15526, 25824,
+	19917, 1511, -17842, -26000, -17842, 1511, 19917, 25824,
+	15526, -4514, -21722, -25299, -13000, 7456, 23234, 24432,
+	10298, -10298, -24432, -23234, -7456, 13000, 25299, 21722,
+	4514, -15526, -25824, -19917, -1511, 17842, 26000, 17842,
+	-1511, -19917, -25824, -15526, 4514, 21722, 25299, 12999,
+	-7456, -23234, -24432, -10298, 10298, 24432, 23234, 7456,
+	-13000, -25299, -21722, -4514, 15526, 25824, 19917, 1511,
+	-17842, -26000, -17842, 1511, 19917, 25824, 15526, -4514,
+	-21722, -25299, -12999, 7456, 23234, 24431, 10298, -10298,
+	-24432, -23234, -7456, 13000, 25299, 21722, 4514, -15526,
+	-25824, -19917, -1511, 17842, 26000, 17842, -1511, -19917,
+	-25824, -15526, 4514, 21722, 25299, 12999, -7456, -23234,
+	-24431, -10298, 10298, 24432, 23234, 7456, -13000, -25299,
+	-21722, -4514, 15526, 25824, 19917, 1511, -17842, -26000,
+	-17842, 1511, 19917, 25824, 15526, -4514, -21722, -25299,
+	-12999, 7456, 23234, 24431, 10298, -10298, -24432, -23234,
+	-7456, 13000, 25299, 21722, 4514, -15526, -25824, -19917,
+	-1511, 17842, 26000, 17842, -1511, -19917, -25824, -15526,
+	4514, 21722, 25299, 12999, -7456, -23234, -24431, -10298,
+	10298, 24432, 23234, 7456, -13000, -25299, -21722, -4514,
+	15526, 25824, 19917, 1511, -17842, -26000, -17842, 1511,
+	19917, 25824, 15526, -4514, -21722, -25299, -12999, 7456,
+	23234, 24431, 10298, -10298, -24432, -23234, -7456, 13000,
+	25299, 21722, 4514, -15526, -25824, -19917, -1511, 17842},
+	{
+// Carrier 22 Phase 3
+	18384, -756, -19422, -25901, -16126, 3768, 21297, 25462,
+	13649, -6729, -22885, -24680, -10988, 9599, 24163, 23564,
+	8178, -12339, -25114, -22129, -5257, 14912, 25725, 20394,
+	2266, -17284, -25989, -18384, 756, 19422, 25901, 16126,
+	-3768, -21297, -25462, -13649, 6729, 22885, 24680, 10988,
+	-9599, -24163, -23563, -8178, 12339, 25114, 22129, 5257,
+	-14913, -25725, -20394, -2266, 17284, 25989, 18384, -756,
+	-19422, -25901, -16126, 3768, 21297, 25462, 13649, -6729,
+	-22885, -24680, -10988, 9599, 24163, 23563, 8178, -12339,
+	-25114, -22129, -5257, 14913, 25725, 20394, 2266, -17284,
+	-25989, -18384, 756, 19422, 25901, 16126, -3768, -21297,
+	-25462, -13649, 6729, 22885, 24680, 10988, -9599, -24163,
+	-23563, -8178, 12339, 25114, 22129, 5257, -14913, -25725,
+	-20394, -2266, 17284, 25989, 18384, -756, -19422, -25901,
+	-16126, 3768, 21297, 25462, 13649, -6729, -22885, -24680,
+	-10988, 9599, 24163, 23563, 8178, -12339, -25114, -22129,
+	-5257, 14913, 25725, 20394, 2265, -17284, -25989, -18384,
+	756, 19422, 25901, 16126, -3768, -21297, -25462, -13649,
+	6729, 22885, 24680, 10988, -9599, -24163, -23563, -8178,
+	12339, 25114, 22128, 5257, -14913, -25725, -20394, -2265,
+	17284, 25989, 18384, -756, -19422, -25901, -16126, 3768,
+	21297, 25462, 13649, -6729, -22885, -24680, -10988, 9599,
+	24163, 23563, 8178, -12339, -25114, -22128, -5257, 14913,
+	25725, 20394, 2265, -17284, -25989, -18384, 756, 19422,
+	25901, 16126, -3768, -21297, -25462, -13649, 6729, 22885,
+	24680, 10987, -9599, -24163, -23563, -8178, 12339, 25114,
+	22128, 5257, -14913, -25725, -20394, -2265, 17284, 25989},
+	},{{
+
+// Carrier 23 Phase 0
+	0, 19422, 25824, 14912, -5996, -22885, -24432, -9599,
+	11668, 25114, 21722, 3768, -16712, -25989, -17842, 2266,
+	20855, 25462, 12999, -8178, -23873, -23563, -7456, 13649,
+	25605, 20394, 1511, -18384, -25956, -16126, 4514, 22129,
+	24907, 10988, -10298, -24680, -22516, -5257, 15526, 25901,
+	18911, -756, -19917, -25725, -14287, 6729, 23234, 24163,
+	8892, -12339, -25299, -21297, -3018, 17284, 26000, 17284,
+	-3018, -21297, -25299, -12339, 8892, 24163, 23234, 6729,
+	-14287, -25725, -19917, -756, 18911, 25901, 15526, -5257,
+	-22516, -24680, -10297, 10988, 24907, 22128, 4514, -16126,
+	-25956, -18384, 1511, 20394, 25604, 13649, -7457, -23564,
+	-23873, -8178, 13000, 25462, 20855, 2265, -17842, -25988,
+	-16712, 3768, 21722, 25114, 11668, -9599, -24432, -22885,
+	-5995, 14913, 25824, 19422, 0, -19422, -25824, -14912,
+	5996, 22885, 24431, 9599, -11668, -25114, -21722, -3768,
+	16712, 25989, 17842, -2266, -20855, -25462, -12999, 8178,
+	23873, 23563, 7456, -13649, -25605, -20394, -1511, 18384,
+	25955, 16125, -4515, -22129, -24907, -10987, 10298, 24680,
+	22516, 5257, -15526, -25901, -18911, 756, 19917, 25725,
+	14287, -6729, -23234, -24162, -8892, 12339, 25299, 21297,
+	3018, -17284, -26000, -17284, 3018, 21298, 25299, 12339,
+	-8892, -24163, -23234, -6729, 14287, 25725, 19916, 755,
+	-18911, -25901, -15525, 5257, 22516, 24680, 10297, -10988,
+	-24907, -22128, -4514, 16126, 25956, 18384, -1512, -20394,
+	-25604, -13649, 7457, 23564, 23873, 8177, -13000, -25462,
+	-20855, -2265, 17842, 25988, 16712, -3768, -21722, -25113,
+	-11668, 9599, 24432, 22885, 5995, -14913, -25824, -19422},
+	{
+// Carrier 23 Phase 1
+	18384, 25956, 16126, -4514, -22129, -24907, -10988, 10298,
+	24680, 22516, 5257, -15526, -25901, -18911, 756, 19917,
+	25725, 14287, -6729, -23234, -24163, -8892, 12339, 25299,
+	21297, 3018, -17284, -26000, -17284, 3018, 21297, 25299,
+	12339, -8892, -24163, -23234, -6729, 14287, 25725, 19917,
+	756, -18911, -25901, -15526, 5257, 22516, 24680, 10298,
+	-10988, -24907, -22128, -4514, 16126, 25956, 18384, -1511,
+	-20394, -25604, -13649, 7456, 23564, 23873, 8178, -13000,
+	-25462, -20855, -2265, 17842, 25988, 16712, -3768, -21722,
+	-25114, -11668, 9599, 24432, 22885, 5995, -14913, -25824,
+	-19422, 0, 19422, 25824, 14912, -5996, -22885, -24431,
+	-9599, 11668, 25114, 21722, 3768, -16712, -25989, -17842,
+	2266, 20855, 25462, 12999, -8178, -23873, -23563, -7456,
+	13649, 25605, 20394, 1511, -18384, -25956, -16125, 4515,
+	22129, 24907, 10987, -10298, -24680, -22516, -5257, 15526,
+	25901, 18911, -756, -19917, -25725, -14287, 6729, 23234,
+	24162, 8892, -12339, -25299, -21297, -3018, 17284, 26000,
+	17284, -3018, -21298, -25299, -12339, 8892, 24163, 23234,
+	6729, -14287, -25725, -19917, -755, 18911, 25901, 15525,
+	-5257, -22516, -24680, -10297, 10988, 24907, 22128, 4514,
+	-16126, -25956, -18384, 1512, 20394, 25604, 13649, -7457,
+	-23564, -23873, -8177, 13000, 25462, 20855, 2265, -17842,
+	-25988, -16712, 3768, 21722, 25113, 11668, -9599, -24432,
+	-22885, -5995, 14913, 25824, 19422, 0, -19422, -25824,
+	-14912, 5996, 22885, 24431, 9599, -11669, -25114, -21722,
+	-3767, 16712, 25989, 17842, -2266, -20855, -25462, -12999,
+	8178, 23873, 23563, 7456, -13649, -25605, -20394, -1511},
+	{
+// Carrier 23 Phase 2
+	26000, 17284, -3018, -21297, -25299, -12339, 8892, 24163,
+	23234, 6729, -14287, -25725, -19917, -756, 18911, 25901,
+	15526, -5257, -22516, -24680, -10298, 10988, 24907, 22129,
+	4514, -16126, -25956, -18384, 1511, 20394, 25604, 13649,
+	-7456, -23564, -23873, -8178, 13000, 25462, 20855, 2265,
+	-17842, -25988, -16712, 3768, 21722, 25114, 11668, -9599,
+	-24432, -22885, -5995, 14913, 25824, 19422, 0, -19422,
+	-25824, -14912, 5996, 22885, 24431, 9599, -11668, -25114,
+	-21722, -3768, 16712, 25989, 17842, -2266, -20855, -25462,
+	-12999, 8178, 23873, 23563, 7456, -13649, -25605, -20394,
+	-1511, 18384, 25956, 16126, -4514, -22129, -24907, -10987,
+	10298, 24680, 22516, 5257, -15526, -25901, -18911, 756,
+	19917, 25725, 14287, -6729, -23234, -24162, -8892, 12339,
+	25299, 21297, 3018, -17284, -26000, -17284, 3018, 21298,
+	25299, 12339, -8892, -24163, -23234, -6729, 14287, 25725,
+	19917, 756, -18911, -25901, -15525, 5257, 22516, 24680,
+	10297, -10988, -24907, -22128, -4514, 16126, 25956, 18384,
+	-1511, -20394, -25604, -13649, 7457, 23564, 23873, 8177,
+	-13000, -25462, -20855, -2265, 17842, 25988, 16712, -3768,
+	-21722, -25114, -11668, 9599, 24432, 22885, 5995, -14913,
+	-25824, -19422, 0, 19422, 25824, 14912, -5996, -22885,
+	-24431, -9599, 11669, 25114, 21722, 3767, -16712, -25989,
+	-17842, 2266, 20855, 25462, 12999, -8178, -23873, -23563,
+	-7456, 13649, 25605, 20394, 1511, -18384, -25955, -16125,
+	4515, 22129, 24907, 10987, -10298, -24680, -22516, -5257,
+	15526, 25901, 18911, -756, -19917, -25725, -14286, 6729,
+	23234, 24162, 8892, -12339, -25299, -21297, -3018, 17284},
+	{
+// Carrier 23 Phase 3
+	18384, -1511, -20394, -25605, -13649, 7456, 23564, 23873,
+	8178, -13000, -25462, -20855, -2266, 17842, 25989, 16712,
+	-3768, -21722, -25114, -11668, 9599, 24432, 22885, 5995,
+	-14913, -25824, -19422, 0, 19422, 25824, 14912, -5996,
+	-22885, -24431, -9599, 11668, 25114, 21722, 3768, -16712,
+	-25989, -17842, 2266, 20855, 25462, 12999, -8178, -23873,
+	-23563, -7456, 13649, 25605, 20394, 1511, -18384, -25956,
+	-16126, 4514, 22129, 24907, 10987, -10298, -24680, -22516,
+	-5257, 15526, 25901, 18911, -756, -19917, -25725, -14287,
+	6729, 23234, 24162, 8892, -12339, -25299, -21297, -3018,
+	17284, 26000, 17284, -3018, -21298, -25299, -12339, 8892,
+	24163, 23234, 6729, -14287, -25725, -19917, -756, 18911,
+	25901, 15525, -5257, -22516, -24680, -10297, 10988, 24907,
+	22128, 4514, -16126, -25956, -18384, 1511, 20394, 25604,
+	13649, -7457, -23564, -23873, -8177, 13000, 25462, 20855,
+	2265, -17842, -25988, -16712, 3768, 21722, 25114, 11668,
+	-9599, -24432, -22885, -5995, 14913, 25824, 19422, 0,
+	-19422, -25824, -14912, 5996, 22885, 24431, 9599, -11668,
+	-25114, -21722, -3767, 16712, 25989, 17842, -2266, -20855,
+	-25462, -12999, 8178, 23873, 23563, 7456, -13649, -25605,
+	-20394, -1511, 18384, 25955, 16125, -4515, -22129, -24907,
+	-10987, 10298, 24680, 22516, 5257, -15526, -25901, -18911,
+	756, 19917, 25725, 14286, -6729, -23234, -24162, -8892,
+	12339, 25299, 21297, 3018, -17284, -26000, -17284, 3018,
+	21298, 25299, 12339, -8892, -24163, -23234, -6728, 14287,
+	25725, 19916, 755, -18911, -25901, -15525, 5257, 22516,
+	24680, 10297, -10988, -24907, -22128, -4514, 16126, 25956},
+	},{{
+
+// Carrier 24 Phase 0
+	0, 19917, 25605, 13000, -8892, -24432, -22516, -4514,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19917, -25605, -13000, 8892, 24431,
+	22516, 4514, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19917, 25605, 13000,
+	-8892, -24431, -22516, -4514, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19917,
+	-25605, -13000, 8892, 24431, 22516, 4514, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917,
+	0, 19917, 25605, 13000, -8892, -24431, -22516, -4514,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19917, -25605, -13000, 8892, 24431,
+	22516, 4515, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19917, 25605, 13000,
+	-8892, -24431, -22516, -4515, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19917,
+	-25605, -13000, 8892, 24431, 22516, 4515, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917,
+	0, 19916, 25605, 13000, -8892, -24431, -22516, -4515,
+	16712, 26000, 16712, -4514, -22516, -24432, -8892, 12999,
+	25604, 19917, 0, -19916, -25605, -13000, 8892, 24431,
+	22516, 4515, -16712, -26000, -16712, 4514, 22516, 24432,
+	8892, -12999, -25604, -19917, 0, 19916, 25605, 13000,
+	-8892, -24431, -22516, -4515, 16712, 26000, 16712, -4514,
+	-22516, -24432, -8892, 12999, 25604, 19917, 0, -19916,
+	-25605, -13000, 8892, 24431, 22516, 4515, -16712, -26000,
+	-16712, 4514, 22516, 24432, 8892, -12999, -25604, -19917},
+	{
+// Carrier 24 Phase 1
+	18384, 25901, 14912, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2266, -21297, -25114, -10988, 10988, 25114,
+	21297, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10988, -25114, -21297, -2266, 18384, 25901, 14913, -6729,
+	-23563, -23564, -6729, 14912, 25901, 18384, -2265, -21297,
+	-25114, -10988, 10987, 25114, 21298, 2266, -18384, -25901,
+	-14913, 6729, 23563, 23564, 6729, -14912, -25901, -18384,
+	2265, 21297, 25114, 10988, -10987, -25114, -21298, -2266,
+	18384, 25901, 14913, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2265, -21297, -25114, -10988, 10987, 25114,
+	21298, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10987, -25114, -21298, -2266, 18384, 25901, 14913, -6729,
+	-23563, -23564, -6729, 14912, 25901, 18384, -2265, -21297,
+	-25114, -10988, 10987, 25114, 21298, 2266, -18384, -25901,
+	-14913, 6729, 23563, 23564, 6729, -14912, -25901, -18384,
+	2265, 21297, 25114, 10988, -10987, -25114, -21298, -2266,
+	18384, 25901, 14913, -6729, -23563, -23564, -6729, 14912,
+	25901, 18384, -2265, -21297, -25114, -10988, 10987, 25113,
+	21298, 2266, -18384, -25901, -14913, 6729, 23563, 23564,
+	6729, -14912, -25901, -18384, 2265, 21297, 25114, 10988,
+	-10987, -25113, -21298, -2266, 18384, 25901, 14913, -6728,
+	-23563, -23564, -6729, 14912, 25901, 18385, -2265, -21297,
+	-25114, -10988, 10987, 25113, 21298, 2266, -18384, -25901,
+	-14913, 6728, 23563, 23564, 6729, -14912, -25901, -18385,
+	2265, 21297, 25114, 10988, -10987, -25113, -21298, -2266},
+	{
+// Carrier 24 Phase 2
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19917, -25605, -13000, 8892, 24431, 22516,
+	4514, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19917, 25605, 13000, -8892,
+	-24431, -22516, -4514, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19917, -25605,
+	-13000, 8892, 24431, 22516, 4514, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19917, 25605, 13000, -8892, -24431, -22516, -4514, 16712,
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19917, -25605, -13000, 8892, 24431, 22516,
+	4515, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19917, 25605, 13000, -8892,
+	-24431, -22516, -4515, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19917, -25605,
+	-13000, 8892, 24431, 22516, 4515, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19917, 25605, 13000, -8892, -24431, -22516, -4515, 16712,
+	26000, 16712, -4514, -22516, -24432, -8892, 12999, 25604,
+	19917, 0, -19916, -25605, -13000, 8892, 24431, 22516,
+	4515, -16712, -26000, -16712, 4514, 22516, 24432, 8892,
+	-12999, -25604, -19917, 0, 19916, 25605, 13000, -8892,
+	-24431, -22516, -4515, 16712, 26000, 16712, -4514, -22516,
+	-24432, -8892, 12999, 25604, 19917, 0, -19916, -25605,
+	-13000, 8892, 24431, 22516, 4515, -16712, -26000, -16712,
+	4514, 22516, 24432, 8892, -12999, -25604, -19917, 0,
+	19916, 25605, 13000, -8892, -24431, -22516, -4515, 16712},
+	{
+// Carrier 24 Phase 3
+	18384, -2266, -21297, -25114, -10988, 10988, 25114, 21297,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2266, 21297, 25114, 10988, -10988,
+	-25114, -21297, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10988, 25114, 21297, 2266, -18384, -25901, -14913,
+	6729, 23563, 23564, 6729, -14912, -25901, -18384, 2265,
+	21297, 25114, 10988, -10987, -25114, -21298, -2266, 18384,
+	25901, 14913, -6729, -23563, -23564, -6729, 14912, 25901,
+	18384, -2265, -21297, -25114, -10988, 10987, 25114, 21298,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2265, 21297, 25114, 10988, -10987,
+	-25114, -21298, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10987, 25114, 21298, 2266, -18384, -25901, -14913,
+	6729, 23563, 23564, 6729, -14912, -25901, -18384, 2265,
+	21297, 25114, 10988, -10987, -25114, -21298, -2266, 18384,
+	25901, 14913, -6729, -23563, -23564, -6729, 14912, 25901,
+	18384, -2265, -21297, -25114, -10988, 10987, 25114, 21298,
+	2266, -18384, -25901, -14913, 6729, 23563, 23564, 6729,
+	-14912, -25901, -18384, 2265, 21297, 25114, 10988, -10987,
+	-25113, -21298, -2266, 18384, 25901, 14913, -6729, -23563,
+	-23564, -6729, 14912, 25901, 18384, -2265, -21297, -25114,
+	-10988, 10987, 25113, 21298, 2266, -18384, -25901, -14913,
+	6728, 23563, 23564, 6729, -14912, -25901, -18385, 2265,
+	21297, 25114, 10988, -10987, -25113, -21298, -2266, 18384,
+	25901, 14913, -6728, -23563, -23564, -6729, 14912, 25901},
+	},{{
+
+// Carrier 25 Phase 0
+	0, 20394, 25299, 10988, -11668, -25462, -19917, 756,
+	20855, 25114, 10298, -12339, -25604, -19422, 1511, 21297,
+	24907, 9599, -12999, -25725, -18911, 2266, 21722, 24680,
+	8892, -13649, -25824, -18384, 3018, 22129, 24432, 8178,
+	-14287, -25901, -17842, 3768, 22516, 24163, 7456, -14912,
+	-25956, -17284, 4514, 22885, 23873, 6729, -15526, -25989,
+	-16712, 5257, 23234, 23564, 5996, -16126, -26000, -16126,
+	5995, 23563, 23234, 5257, -16712, -25989, -15526, 6729,
+	23873, 22885, 4514, -17284, -25956, -14913, 7456, 24163,
+	22516, 3768, -17842, -25901, -14287, 8178, 24432, 22129,
+	3018, -18384, -25824, -13649, 8892, 24680, 21722, 2266,
+	-18911, -25725, -13000, 9599, 24907, 21297, 1511, -19422,
+	-25605, -12339, 10298, 25114, 20855, 756, -19917, -25462,
+	-11668, 10988, 25299, 20394, 0, -20394, -25299, -10988,
+	11668, 25462, 19917, -756, -20855, -25114, -10298, 12339,
+	25605, 19422, -1511, -21297, -24907, -9599, 13000, 25725,
+	18911, -2266, -21722, -24680, -8892, 13649, 25824, 18384,
+	-3018, -22129, -24432, -8178, 14287, 25901, 17842, -3768,
+	-22516, -24163, -7456, 14913, 25956, 17284, -4514, -22885,
+	-23873, -6729, 15526, 25989, 16712, -5257, -23234, -23563,
+	-5995, 16126, 26000, 16126, -5996, -23564, -23234, -5257,
+	16712, 25989, 15526, -6729, -23873, -22885, -4514, 17284,
+	25956, 14912, -7456, -24163, -22516, -3768, 17842, 25901,
+	14287, -8178, -24432, -22129, -3018, 18384, 25824, 13649,
+	-8892, -24680, -21722, -2265, 18911, 25725, 12999, -9599,
+	-24907, -21297, -1511, 19422, 25604, 12339, -10298, -25114,
+	-20855, -756, 19917, 25462, 11668, -10988, -25299, -20394},
+	{
+// Carrier 25 Phase 1
+	18384, 25824, 13649, -8892, -24680, -21722, -2266, 18911,
+	25725, 13000, -9599, -24907, -21297, -1511, 19422, 25605,
+	12339, -10298, -25114, -20855, -756, 19917, 25462, 11668,
+	-10988, -25299, -20394, 0, 20394, 25299, 10988, -11668,
+	-25462, -19917, 756, 20855, 25114, 10298, -12339, -25604,
+	-19422, 1511, 21297, 24907, 9599, -12999, -25725, -18911,
+	2266, 21722, 24680, 8892, -13649, -25824, -18384, 3018,
+	22129, 24432, 8178, -14287, -25901, -17842, 3768, 22516,
+	24163, 7456, -14912, -25956, -17284, 4514, 22885, 23873,
+	6729, -15526, -25989, -16712, 5257, 23234, 23564, 5996,
+	-16126, -26000, -16126, 5996, 23564, 23234, 5257, -16712,
+	-25989, -15526, 6729, 23873, 22885, 4514, -17284, -25956,
+	-14912, 7456, 24163, 22516, 3768, -17842, -25901, -14287,
+	8178, 24432, 22129, 3018, -18384, -25824, -13649, 8892,
+	24680, 21722, 2266, -18911, -25725, -12999, 9599, 24907,
+	21297, 1511, -19422, -25604, -12339, 10298, 25114, 20855,
+	756, -19917, -25462, -11668, 10988, 25299, 20394, 0,
+	-20394, -25299, -10988, 11668, 25462, 19917, -756, -20855,
+	-25114, -10298, 12339, 25605, 19422, -1511, -21297, -24907,
+	-9599, 13000, 25725, 18911, -2266, -21722, -24680, -8892,
+	13649, 25824, 18384, -3018, -22129, -24431, -8178, 14287,
+	25901, 17842, -3768, -22516, -24163, -7456, 14913, 25956,
+	17284, -4514, -22885, -23873, -6729, 15526, 25989, 16712,
+	-5257, -23234, -23563, -5995, 16126, 26000, 16126, -5996,
+	-23564, -23234, -5257, 16712, 25988, 15526, -6729, -23873,
+	-22885, -4514, 17284, 25956, 14912, -7456, -24163, -22516,
+	-3768, 17842, 25901, 14287, -8178, -24432, -22129, -3018},
+	{
+// Carrier 25 Phase 2
+	26000, 16126, -5996, -23563, -23234, -5257, 16712, 25989,
+	15526, -6729, -23873, -22885, -4514, 17284, 25956, 14912,
+	-7456, -24163, -22516, -3768, 17842, 25901, 14287, -8178,
+	-24432, -22129, -3018, 18384, 25824, 13649, -8892, -24680,
+	-21722, -2266, 18911, 25725, 12999, -9599, -24907, -21297,
+	-1511, 19422, 25604, 12339, -10298, -25114, -20855, -756,
+	19917, 25462, 11668, -10988, -25299, -20394, 0, 20394,
+	25299, 10988, -11668, -25462, -19917, 756, 20855, 25114,
+	10298, -12339, -25605, -19422, 1511, 21297, 24907, 9599,
+	-12999, -25725, -18911, 2266, 21722, 24680, 8892, -13649,
+	-25824, -18384, 3018, 22129, 24432, 8178, -14287, -25901,
+	-17842, 3768, 22516, 24163, 7456, -14912, -25956, -17284,
+	4514, 22885, 23873, 6729, -15526, -25989, -16712, 5257,
+	23234, 23564, 5996, -16126, -26000, -16126, 5996, 23564,
+	23234, 5257, -16712, -25989, -15526, 6729, 23873, 22885,
+	4514, -17284, -25956, -14912, 7456, 24163, 22516, 3768,
+	-17842, -25901, -14287, 8178, 24432, 22129, 3018, -18384,
+	-25824, -13649, 8892, 24680, 21722, 2266, -18911, -25725,
+	-12999, 9599, 24907, 21297, 1511, -19422, -25604, -12339,
+	10298, 25114, 20855, 756, -19917, -25462, -11668, 10988,
+	25299, 20394, 0, -20394, -25299, -10988, 11668, 25462,
+	19917, -756, -20855, -25114, -10298, 12339, 25605, 19422,
+	-1511, -21297, -24907, -9599, 13000, 25725, 18911, -2266,
+	-21722, -24680, -8892, 13649, 25824, 18384, -3018, -22129,
+	-24431, -8178, 14287, 25901, 17842, -3768, -22516, -24163,
+	-7456, 14913, 25956, 17284, -4514, -22885, -23873, -6729,
+	15526, 25989, 16712, -5257, -23234, -23563, -5995, 16126},
+	{
+// Carrier 25 Phase 3
+	18384, -3018, -22129, -24432, -8178, 14287, 25901, 17842,
+	-3768, -22516, -24163, -7456, 14912, 25956, 17284, -4514,
+	-22885, -23873, -6729, 15526, 25989, 16712, -5257, -23234,
+	-23563, -5996, 16126, 26000, 16126, -5996, -23564, -23234,
+	-5257, 16712, 25989, 15526, -6729, -23873, -22885, -4514,
+	17284, 25956, 14912, -7456, -24163, -22516, -3768, 17842,
+	25901, 14287, -8178, -24432, -22129, -3018, 18384, 25824,
+	13649, -8892, -24680, -21722, -2266, 18911, 25725, 12999,
+	-9599, -24907, -21297, -1511, 19422, 25604, 12339, -10298,
+	-25114, -20855, -756, 19917, 25462, 11668, -10988, -25299,
+	-20394, 0, 20394, 25299, 10988, -11668, -25462, -19917,
+	756, 20855, 25114, 10298, -12339, -25605, -19422, 1511,
+	21297, 24907, 9599, -13000, -25725, -18911, 2266, 21722,
+	24680, 8892, -13649, -25824, -18384, 3018, 22129, 24432,
+	8178, -14287, -25901, -17842, 3768, 22516, 24163, 7456,
+	-14913, -25956, -17284, 4514, 22885, 23873, 6729, -15526,
+	-25989, -16712, 5257, 23234, 23563, 5995, -16126, -26000,
+	-16126, 5996, 23564, 23234, 5257, -16712, -25989, -15526,
+	6729, 23873, 22885, 4514, -17284, -25956, -14912, 7456,
+	24163, 22516, 3768, -17842, -25901, -14287, 8178, 24432,
+	22129, 3018, -18384, -25824, -13649, 8892, 24680, 21722,
+	2266, -18911, -25725, -12999, 9599, 24907, 21297, 1511,
+	-19422, -25604, -12339, 10298, 25114, 20855, 756, -19917,
+	-25462, -11668, 10988, 25299, 20394, 0, -20394, -25299,
+	-10988, 11668, 25462, 19917, -756, -20855, -25114, -10298,
+	12339, 25605, 19422, -1511, -21297, -24907, -9599, 13000,
+	25725, 18911, -2266, -21722, -24680, -8892, 13649, 25824},
+	},{{
+
+// Carrier 26 Phase 0
+	0, 20855, 24907, 8892, -14287, -25956, -16712, 5996,
+	23873, 22516, 3018, -18911, -25604, -11668, 11668, 25605,
+	18911, -3018, -22516, -23873, -5995, 16712, 25956, 14287,
+	-8892, -24907, -20855, 0, 20855, 24907, 8892, -14287,
+	-25956, -16712, 5996, 23873, 22516, 3018, -18911, -25604,
+	-11668, 11668, 25605, 18911, -3018, -22516, -23873, -5995,
+	16712, 25956, 14287, -8892, -24907, -20855, 0, 20855,
+	24907, 8892, -14287, -25956, -16712, 5996, 23873, 22516,
+	3018, -18911, -25604, -11668, 11668, 25605, 18911, -3018,
+	-22516, -23873, -5995, 16712, 25956, 14287, -8892, -24907,
+	-20855, 0, 20855, 24907, 8892, -14287, -25956, -16712,
+	5996, 23873, 22516, 3018, -18911, -25604, -11668, 11669,
+	25605, 18911, -3018, -22516, -23873, -5995, 16712, 25955,
+	14286, -8892, -24907, -20855, 0, 20855, 24907, 8892,
+	-14287, -25956, -16712, 5996, 23873, 22516, 3018, -18911,
+	-25604, -11668, 11669, 25605, 18911, -3018, -22516, -23873,
+	-5995, 16712, 25955, 14286, -8892, -24907, -20854, 0,
+	20855, 24907, 8892, -14287, -25956, -16712, 5996, 23873,
+	22516, 3018, -18911, -25604, -11668, 11669, 25605, 18911,
+	-3018, -22516, -23873, -5995, 16712, 25955, 14286, -8892,
+	-24907, -20854, 0, 20855, 24907, 8892, -14287, -25956,
+	-16712, 5996, 23873, 22516, 3017, -18912, -25604, -11668,
+	11669, 25605, 18911, -3018, -22516, -23873, -5995, 16712,
+	25955, 14286, -8892, -24907, -20854, 0, 20855, 24907,
+	8892, -14287, -25956, -16712, 5996, 23873, 22516, 3017,
+	-18912, -25604, -11668, 11669, 25605, 18911, -3018, -22516,
+	-23873, -5995, 16712, 25955, 14286, -8893, -24907, -20854},
+	{
+// Carrier 26 Phase 1
+	18384, 25725, 12339, -10988, -25462, -19422, 2266, 22129,
+	24163, 6729, -16126, -25989, -14912, 8178, 24680, 21297,
+	756, -20394, -25114, -9599, 13649, 25901, 17284, -5257,
+	-23564, -22885, -3768, 18384, 25725, 12339, -10988, -25462,
+	-19422, 2266, 22129, 24162, 6729, -16126, -25988, -14912,
+	8178, 24680, 21297, 756, -20394, -25114, -9599, 13649,
+	25901, 17284, -5257, -23564, -22885, -3768, 18384, 25725,
+	12339, -10988, -25462, -19422, 2266, 22129, 24162, 6729,
+	-16126, -25988, -14912, 8178, 24680, 21297, 756, -20394,
+	-25114, -9599, 13649, 25901, 17284, -5257, -23564, -22885,
+	-3768, 18384, 25725, 12339, -10988, -25462, -19422, 2266,
+	22129, 24162, 6729, -16126, -25988, -14912, 8178, 24680,
+	21297, 755, -20394, -25114, -9599, 13649, 25901, 17284,
+	-5257, -23564, -22885, -3767, 18384, 25725, 12339, -10988,
+	-25462, -19422, 2266, 22129, 24162, 6728, -16126, -25988,
+	-14912, 8178, 24680, 21297, 755, -20395, -25113, -9599,
+	13649, 25901, 17284, -5258, -23564, -22885, -3767, 18385,
+	25725, 12339, -10988, -25462, -19422, 2266, 22129, 24162,
+	6728, -16126, -25988, -14912, 8178, 24680, 21297, 755,
+	-20395, -25113, -9598, 13649, 25901, 17284, -5258, -23564,
+	-22885, -3767, 18385, 25725, 12339, -10988, -25462, -19422,
+	2266, 22129, 24162, 6728, -16126, -25988, -14912, 8178,
+	24680, 21297, 755, -20395, -25113, -9598, 13649, 25901,
+	17284, -5258, -23564, -22884, -3767, 18385, 25725, 12339,
+	-10988, -25462, -19422, 2266, 22129, 24162, 6728, -16126,
+	-25988, -14912, 8178, 24680, 21297, 755, -20395, -25113,
+	-9598, 13649, 25901, 17284, -5258, -23564, -22884, -3767},
+	{
+// Carrier 26 Phase 2
+	26000, 15526, -7456, -24432, -21722, -1511, 19917, 25299,
+	10298, -13000, -25824, -17842, 4514, 23234, 23234, 4514,
+	-17842, -25824, -12999, 10298, 25299, 19917, -1511, -21722,
+	-24431, -7456, 15526, 26000, 15526, -7456, -24432, -21722,
+	-1511, 19917, 25299, 10297, -13000, -25824, -17842, 4514,
+	23234, 23234, 4514, -17842, -25824, -12999, 10298, 25299,
+	19917, -1511, -21722, -24431, -7456, 15526, 26000, 15526,
+	-7457, -24432, -21722, -1511, 19917, 25299, 10297, -13000,
+	-25824, -17842, 4515, 23234, 23234, 4514, -17842, -25824,
+	-12999, 10298, 25299, 19917, -1511, -21722, -24431, -7456,
+	15526, 26000, 15525, -7457, -24432, -21722, -1511, 19917,
+	25299, 10297, -13000, -25824, -17842, 4515, 23234, 23234,
+	4514, -17842, -25824, -12999, 10298, 25299, 19916, -1512,
+	-21722, -24431, -7456, 15526, 26000, 15525, -7457, -24432,
+	-21722, -1511, 19917, 25299, 10297, -13000, -25824, -17842,
+	4515, 23234, 23234, 4514, -17842, -25824, -12999, 10298,
+	25299, 19916, -1512, -21722, -24431, -7456, 15526, 26000,
+	15525, -7457, -24432, -21722, -1511, 19917, 25299, 10297,
+	-13000, -25824, -17841, 4515, 23234, 23234, 4514, -17842,
+	-25824, -12999, 10298, 25299, 19916, -1512, -21722, -24431,
+	-7456, 15526, 26000, 15525, -7457, -24432, -21722, -1511,
+	19917, 25299, 10297, -13000, -25824, -17841, 4515, 23234,
+	23234, 4514, -17842, -25824, -12999, 10298, 25299, 19916,
+	-1512, -21722, -24431, -7456, 15526, 26000, 15525, -7457,
+	-24432, -21722, -1511, 19917, 25299, 10297, -13000, -25824,
+	-17841, 4515, 23234, 23234, 4514, -17842, -25824, -12999,
+	10298, 25299, 19916, -1512, -21723, -24431, -7456, 15526},
+	{
+// Carrier 26 Phase 3
+	18384, -3768, -22885, -23563, -5257, 17284, 25901, 13649,
+	-9599, -25114, -20394, 756, 21297, 24680, 8178, -14913,
+	-25989, -16126, 6729, 24163, 22129, 2265, -19422, -25462,
+	-10988, 12339, 25725, 18384, -3768, -22885, -23563, -5257,
+	17284, 25901, 13649, -9599, -25114, -20394, 756, 21298,
+	24680, 8178, -14913, -25989, -16126, 6729, 24163, 22128,
+	2265, -19422, -25462, -10987, 12339, 25725, 18384, -3768,
+	-22885, -23563, -5257, 17284, 25901, 13649, -9599, -25114,
+	-20394, 756, 21298, 24680, 8177, -14913, -25989, -16125,
+	6729, 24163, 22128, 2265, -19422, -25462, -10987, 12339,
+	25725, 18384, -3768, -22885, -23563, -5257, 17284, 25901,
+	13649, -9599, -25114, -20394, 756, 21298, 24680, 8177,
+	-14913, -25989, -16125, 6729, 24163, 22128, 2265, -19422,
+	-25462, -10987, 12339, 25725, 18384, -3768, -22885, -23563,
+	-5257, 17284, 25901, 13649, -9599, -25114, -20394, 756,
+	21298, 24680, 8177, -14913, -25989, -16125, 6729, 24163,
+	22128, 2265, -19422, -25462, -10987, 12339, 25725, 18384,
+	-3768, -22885, -23563, -5257, 17284, 25901, 13649, -9599,
+	-25114, -20394, 756, 21298, 24680, 8177, -14913, -25989,
+	-16125, 6729, 24163, 22128, 2265, -19422, -25462, -10987,
+	12340, 25725, 18384, -3768, -22885, -23563, -5257, 17285,
+	25901, 13648, -9599, -25114, -20394, 756, 21298, 24680,
+	8177, -14913, -25989, -16125, 6729, 24163, 22128, 2265,
+	-19422, -25462, -10987, 12340, 25725, 18384, -3768, -22885,
+	-23563, -5257, 17285, 25901, 13648, -9599, -25114, -20394,
+	756, 21298, 24680, 8177, -14913, -25989, -16125, 6729,
+	24163, 22128, 2265, -19423, -25462, -10987, 12340, 25725},
+	},{{
+
+// Carrier 27 Phase 0
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297,
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297,
+	0, 21297, 24432, 6729, -16712, -25901, -13000, 10988,
+	25605, 18384, -4514, -23564, -22516, -2266, 19917, 25114,
+	8892, -14912, -26000, -14912, 8892, 25114, 19917, -2266,
+	-22516, -23564, -4514, 18384, 25605, 10988, -12999, -25901,
+	-16712, 6729, 24432, 21297, 0, -21297, -24432, -6729,
+	16712, 25901, 13000, -10988, -25605, -18384, 4514, 23564,
+	22516, 2266, -19917, -25114, -8892, 14912, 26000, 14912,
+	-8892, -25114, -19917, 2266, 22516, 23564, 4514, -18384,
+	-25605, -10988, 12999, 25901, 16712, -6729, -24432, -21297},
+	{
+// Carrier 27 Phase 1
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514,
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514,
+	18384, 25605, 10988, -12999, -25901, -16712, 6729, 24432,
+	21297, 0, -21297, -24432, -6729, 16712, 25901, 13000,
+	-10988, -25605, -18384, 4514, 23564, 22516, 2266, -19917,
+	-25114, -8892, 14912, 26000, 14912, -8892, -25114, -19917,
+	2266, 22516, 23564, 4514, -18384, -25605, -10988, 12999,
+	25901, 16712, -6729, -24432, -21297, 0, 21297, 24432,
+	6729, -16712, -25901, -13000, 10988, 25605, 18384, -4514,
+	-23564, -22516, -2266, 19917, 25114, 8892, -14912, -26000,
+	-14912, 8892, 25114, 19917, -2266, -22516, -23564, -4514},
+	{
+// Carrier 27 Phase 2
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912,
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912,
+	26000, 14912, -8892, -25114, -19917, 2266, 22516, 23564,
+	4514, -18384, -25605, -10988, 12999, 25901, 16712, -6729,
+	-24432, -21297, 0, 21297, 24432, 6729, -16712, -25901,
+	-13000, 10988, 25605, 18384, -4514, -23564, -22516, -2266,
+	19917, 25114, 8892, -14912, -26000, -14912, 8892, 25114,
+	19917, -2266, -22516, -23564, -4514, 18384, 25605, 10988,
+	-12999, -25901, -16712, 6729, 24432, 21297, 0, -21297,
+	-24432, -6729, 16712, 25901, 13000, -10988, -25605, -18384,
+	4514, 23564, 22516, 2266, -19917, -25114, -8892, 14912},
+	{
+// Carrier 27 Phase 3
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605,
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605,
+	18384, -4514, -23564, -22516, -2266, 19917, 25114, 8892,
+	-14912, -26000, -14912, 8892, 25114, 19917, -2266, -22516,
+	-23564, -4514, 18384, 25605, 10988, -12999, -25901, -16712,
+	6729, 24432, 21297, 0, -21297, -24432, -6729, 16712,
+	25901, 13000, -10988, -25605, -18384, 4514, 23564, 22516,
+	2266, -19917, -25114, -8892, 14912, 26000, 14912, -8892,
+	-25114, -19917, 2266, 22516, 23564, 4514, -18384, -25605,
+	-10988, 12999, 25901, 16712, -6729, -24432, -21297, 0,
+	21297, 24432, 6729, -16712, -25901, -13000, 10988, 25605},
+	},{{
+
+// Carrier 28 Phase 0
+	0, 21722, 23873, 4514, -18911, -25299, -8892, 15526,
+	25956, 13000, -11668, -25824, -16712, 7456, 24907, 19917,
+	-3018, -23234, -22516, -1511, 20855, 24432, 5996, -17842,
+	-25605, -10298, 14287, 26000, 14287, -10298, -25605, -17842,
+	5996, 24432, 20855, -1511, -22516, -23234, -3018, 19917,
+	24907, 7456, -16712, -25824, -11668, 13000, 25956, 15526,
+	-8892, -25299, -18911, 4514, 23873, 21722, 0, -21722,
+	-23873, -4514, 18911, 25299, 8892, -15526, -25956, -12999,
+	11668, 25824, 16712, -7456, -24907, -19917, 3018, 23234,
+	22516, 1511, -20855, -24432, -5996, 17842, 25604, 10298,
+	-14287, -26000, -14287, 10298, 25605, 17842, -5996, -24432,
+	-20855, 1511, 22516, 23234, 3018, -19917, -24907, -7456,
+	16712, 25824, 11668, -13000, -25956, -15526, 8892, 25299,
+	18911, -4514, -23873, -21722, 0, 21722, 23873, 4514,
+	-18911, -25299, -8892, 15526, 25956, 12999, -11668, -25824,
+	-16712, 7456, 24907, 19917, -3018, -23234, -22516, -1511,
+	20855, 24431, 5995, -17842, -25604, -10298, 14287, 26000,
+	14287, -10298, -25605, -17842, 5996, 24432, 20855, -1511,
+	-22516, -23234, -3018, 19917, 24907, 7456, -16712, -25824,
+	-11668, 13000, 25956, 15526, -8892, -25299, -18911, 4514,
+	23873, 21722, 0, -21722, -23873, -4514, 18911, 25299,
+	8892, -15526, -25956, -12999, 11668, 25824, 16712, -7456,
+	-24907, -19917, 3018, 23234, 22516, 1511, -20855, -24431,
+	-5995, 17842, 25604, 10298, -14287, -26000, -14287, 10298,
+	25605, 17842, -5996, -24432, -20855, 1511, 22516, 23234,
+	3018, -19917, -24907, -7456, 16712, 25824, 11668, -13000,
+	-25956, -15526, 8892, 25299, 18911, -4514, -23873, -21722},
+	{
+// Carrier 28 Phase 1
+	18384, 25462, 9599, -14912, -25989, -13649, 10988, 25725,
+	17284, -6729, -24680, -20394, 2266, 22885, 22885, 2266,
+	-20394, -24680, -6729, 17284, 25725, 10988, -13649, -25989,
+	-14912, 9599, 25462, 18384, -5257, -24163, -21297, 756,
+	22129, 23564, 3768, -19422, -25114, -8178, 16126, 25901,
+	12339, -12339, -25901, -16126, 8178, 25114, 19422, -3768,
+	-23564, -22129, -756, 21297, 24163, 5257, -18384, -25462,
+	-9599, 14912, 25989, 13649, -10988, -25725, -17284, 6729,
+	24680, 20394, -2266, -22885, -22885, -2266, 20394, 24680,
+	6729, -17284, -25725, -10988, 13649, 25989, 14912, -9599,
+	-25462, -18384, 5257, 24163, 21297, -756, -22129, -23563,
+	-3768, 19422, 25114, 8178, -16126, -25901, -12339, 12339,
+	25901, 16126, -8178, -25114, -19422, 3768, 23564, 22129,
+	756, -21297, -24163, -5257, 18384, 25462, 9599, -14913,
+	-25989, -13649, 10988, 25725, 17284, -6729, -24680, -20394,
+	2266, 22885, 22885, 2266, -20394, -24680, -6729, 17284,
+	25725, 10988, -13649, -25989, -14912, 9599, 25462, 18384,
+	-5257, -24163, -21297, 756, 22129, 23563, 3768, -19422,
+	-25114, -8178, 16126, 25901, 12339, -12339, -25901, -16126,
+	8178, 25114, 19422, -3768, -23564, -22129, -756, 21297,
+	24163, 5257, -18384, -25462, -9599, 14913, 25989, 13649,
+	-10988, -25725, -17284, 6729, 24680, 20394, -2266, -22885,
+	-22885, -2266, 20394, 24680, 6729, -17284, -25725, -10988,
+	13649, 25989, 14912, -9599, -25462, -18384, 5257, 24163,
+	21297, -756, -22129, -23563, -3768, 19422, 25114, 8178,
+	-16126, -25901, -12339, 12339, 25901, 16126, -8178, -25114,
+	-19422, 3768, 23564, 22129, 756, -21297, -24163, -5257},
+	{
+// Carrier 28 Phase 2
+	26000, 14287, -10298, -25605, -17842, 5996, 24432, 20855,
+	-1511, -22516, -23234, -3018, 19917, 24907, 7456, -16712,
+	-25824, -11668, 13000, 25956, 15526, -8892, -25299, -18911,
+	4514, 23873, 21722, 0, -21722, -23873, -4514, 18911,
+	25299, 8892, -15526, -25956, -12999, 11668, 25824, 16712,
+	-7456, -24907, -19917, 3018, 23234, 22516, 1511, -20855,
+	-24432, -5996, 17842, 25604, 10298, -14287, -26000, -14287,
+	10298, 25605, 17842, -5996, -24432, -20855, 1511, 22516,
+	23234, 3018, -19917, -24907, -7456, 16712, 25824, 11668,
+	-13000, -25956, -15526, 8892, 25299, 18911, -4514, -23873,
+	-21722, 0, 21722, 23873, 4514, -18911, -25299, -8892,
+	15526, 25956, 12999, -11668, -25824, -16712, 7456, 24907,
+	19917, -3018, -23234, -22516, -1511, 20855, 24431, 5995,
+	-17842, -25604, -10298, 14287, 26000, 14287, -10298, -25605,
+	-17842, 5996, 24432, 20855, -1511, -22516, -23234, -3018,
+	19917, 24907, 7456, -16712, -25824, -11668, 13000, 25956,
+	15526, -8892, -25299, -18911, 4514, 23873, 21722, 0,
+	-21722, -23873, -4514, 18911, 25299, 8892, -15526, -25956,
+	-12999, 11668, 25824, 16712, -7456, -24907, -19917, 3018,
+	23234, 22516, 1511, -20855, -24431, -5995, 17842, 25604,
+	10298, -14287, -26000, -14287, 10298, 25605, 17842, -5996,
+	-24432, -20855, 1511, 22516, 23234, 3018, -19917, -24907,
+	-7456, 16712, 25824, 11668, -13000, -25956, -15526, 8892,
+	25299, 18911, -4514, -23873, -21722, 0, 21722, 23873,
+	4514, -18911, -25299, -8892, 15526, 25956, 12999, -11668,
+	-25824, -16712, 7456, 24907, 19917, -3018, -23234, -22516,
+	-1511, 20855, 24431, 5995, -17842, -25604, -10298, 14287},
+	{
+// Carrier 28 Phase 3
+	18384, -5257, -24163, -21297, 756, 22129, 23564, 3768,
+	-19422, -25114, -8178, 16126, 25901, 12339, -12339, -25901,
+	-16126, 8178, 25114, 19422, -3768, -23564, -22129, -756,
+	21297, 24163, 5257, -18384, -25462, -9599, 14912, 25989,
+	13649, -10988, -25725, -17284, 6729, 24680, 20394, -2266,
+	-22885, -22885, -2266, 20394, 24680, 6729, -17284, -25725,
+	-10988, 13649, 25989, 14912, -9599, -25462, -18384, 5257,
+	24163, 21297, -756, -22129, -23563, -3768, 19422, 25114,
+	8178, -16126, -25901, -12339, 12339, 25901, 16126, -8178,
+	-25114, -19422, 3768, 23564, 22129, 756, -21297, -24163,
+	-5257, 18384, 25462, 9599, -14913, -25989, -13649, 10988,
+	25725, 17284, -6729, -24680, -20394, 2266, 22885, 22885,
+	2266, -20394, -24680, -6729, 17284, 25725, 10988, -13649,
+	-25989, -14912, 9599, 25462, 18384, -5257, -24163, -21297,
+	756, 22129, 23563, 3768, -19422, -25114, -8178, 16126,
+	25901, 12339, -12339, -25901, -16126, 8178, 25114, 19422,
+	-3768, -23564, -22129, -756, 21297, 24163, 5257, -18384,
+	-25462, -9599, 14913, 25989, 13649, -10988, -25725, -17284,
+	6729, 24680, 20394, -2266, -22885, -22885, -2266, 20394,
+	24680, 6729, -17284, -25725, -10988, 13649, 25989, 14912,
+	-9599, -25462, -18384, 5257, 24163, 21297, -756, -22129,
+	-23563, -3768, 19422, 25114, 8178, -16126, -25901, -12339,
+	12339, 25901, 16126, -8178, -25114, -19422, 3768, 23564,
+	22129, 756, -21297, -24163, -5257, 18384, 25462, 9599,
+	-14913, -25989, -13649, 10988, 25725, 17284, -6729, -24680,
+	-20394, 2266, 22885, 22885, 2266, -20394, -24680, -6729,
+	17284, 25725, 10988, -13649, -25989, -14912, 9599, 25462},
+	},{{
+
+// Carrier 29 Phase 0
+	0, 22129, 23234, 2266, -20855, -24163, -4514, 19422,
+	24907, 6729, -17842, -25462, -8892, 16126, 25824, 10988,
+	-14287, -25989, -12999, 12339, 25956, 14912, -10298, -25725,
+	-16712, 8178, 25299, 18384, -5996, -24680, -19917, 3768,
+	23873, 21297, -1511, -22885, -22516, -756, 21722, 23563,
+	3018, -20394, -24431, -5257, 18911, 25114, 7456, -17284,
+	-25604, -9599, 15526, 25901, 11668, -13649, -26000, -13649,
+	11668, 25901, 15526, -9599, -25605, -17284, 7457, 25114,
+	18911, -5257, -24432, -20394, 3018, 23564, 21722, -756,
+	-22516, -22885, -1511, 21298, 23873, 3768, -19917, -24680,
+	-5995, 18384, 25299, 8177, -16712, -25725, -10297, 14913,
+	25956, 12339, -13000, -25989, -14287, 10988, 25824, 16125,
+	-8892, -25462, -17842, 6729, 24907, 19422, -4515, -24163,
+	-20855, 2266, 23234, 22128, 0, -22129, -23234, -2265,
+	20855, 24162, 4514, -19422, -24907, -6729, 17842, 25462,
+	8892, -16126, -25824, -10987, 14287, 25988, 12999, -12339,
+	-25956, -14912, 10298, 25725, 16712, -8178, -25299, -18384,
+	5996, 24680, 19916, -3768, -23873, -21297, 1512, 22885,
+	22516, 755, -21722, -23563, -3018, 20395, 24431, 5257,
+	-18911, -25113, -7456, 17284, 25604, 9599, -15526, -25901,
+	-11668, 13649, 26000, 13649, -11669, -25901, -15525, 9599,
+	25605, 17284, -7457, -25114, -18911, 5258, 24432, 20394,
+	-3018, -23564, -21722, 756, 22516, 22885, 1511, -21298,
+	-23873, -3767, 19917, 24680, 5995, -18385, -25299, -8177,
+	16712, 25725, 10297, -14913, -25955, -12339, 13000, 25989,
+	14286, -10988, -25824, -16125, 8892, 25462, 17841, -6729,
+	-24907, -19422, 4515, 24163, 20854, -2266, -23234, -22128},
+	{
+// Carrier 29 Phase 1
+	18384, 25299, 8178, -16712, -25725, -10298, 14913, 25956,
+	12339, -13000, -25989, -14287, 10988, 25824, 16126, -8892,
+	-25462, -17842, 6729, 24907, 19422, -4514, -24163, -20855,
+	2266, 23234, 22129, 0, -22129, -23234, -2265, 20855,
+	24163, 4514, -19422, -24907, -6729, 17842, 25462, 8892,
+	-16126, -25824, -10987, 14287, 25988, 12999, -12339, -25956,
+	-14912, 10298, 25725, 16712, -8178, -25299, -18384, 5996,
+	24680, 19917, -3768, -23873, -21297, 1511, 22885, 22516,
+	756, -21722, -23563, -3018, 20394, 24431, 5257, -18911,
+	-25114, -7456, 17284, 25604, 9599, -15526, -25901, -11668,
+	13649, 26000, 13649, -11668, -25901, -15525, 9599, 25605,
+	17284, -7457, -25114, -18911, 5257, 24432, 20394, -3018,
+	-23564, -21722, 756, 22516, 22885, 1511, -21298, -23873,
+	-3767, 19917, 24680, 5995, -18384, -25299, -8177, 16712,
+	25725, 10297, -14913, -25955, -12339, 13000, 25989, 14287,
+	-10988, -25824, -16125, 8892, 25462, 17842, -6729, -24907,
+	-19422, 4515, 24163, 20855, -2266, -23234, -22128, 0,
+	22129, 23234, 2265, -20855, -24162, -4514, 19422, 24907,
+	6728, -17842, -25462, -8892, 16126, 25824, 10987, -14287,
+	-25988, -12999, 12339, 25956, 14912, -10298, -25725, -16712,
+	8178, 25299, 18384, -5996, -24680, -19916, 3768, 23873,
+	21297, -1512, -22885, -22516, -755, 21722, 23563, 3018,
+	-20395, -24431, -5257, 18912, 25113, 7456, -17285, -25604,
+	-9598, 15526, 25901, 11668, -13649, -26000, -13649, 11669,
+	25901, 15525, -9599, -25605, -17284, 7457, 25114, 18911,
+	-5258, -24432, -20394, 3018, 23564, 21722, -756, -22516,
+	-22885, -1511, 21298, 23873, 3767, -19917, -24680, -5995},
+	{
+// Carrier 29 Phase 2
+	26000, 13649, -11668, -25901, -15526, 9599, 25605, 17284,
+	-7456, -25114, -18911, 5257, 24432, 20394, -3018, -23564,
+	-21722, 756, 22516, 22885, 1511, -21297, -23873, -3768,
+	19917, 24680, 5995, -18384, -25299, -8178, 16712, 25725,
+	10298, -14913, -25956, -12339, 13000, 25989, 14287, -10988,
+	-25824, -16126, 8892, 25462, 17842, -6729, -24907, -19422,
+	4514, 24163, 20855, -2266, -23234, -22128, 0, 22129,
+	23234, 2265, -20855, -24162, -4514, 19422, 24907, 6729,
+	-17842, -25462, -8892, 16126, 25824, 10987, -14287, -25988,
+	-12999, 12339, 25956, 14912, -10298, -25725, -16712, 8178,
+	25299, 18384, -5996, -24680, -19917, 3768, 23873, 21297,
+	-1511, -22885, -22516, -756, 21722, 23563, 3018, -20394,
+	-24431, -5257, 18911, 25114, 7456, -17284, -25604, -9599,
+	15526, 25901, 11668, -13649, -26000, -13649, 11669, 25901,
+	15525, -9599, -25605, -17284, 7457, 25114, 18911, -5257,
+	-24432, -20394, 3018, 23564, 21722, -756, -22516, -22885,
+	-1511, 21298, 23873, 3767, -19917, -24680, -5995, 18385,
+	25299, 8177, -16712, -25725, -10297, 14913, 25955, 12339,
+	-13000, -25989, -14286, 10988, 25824, 16125, -8892, -25462,
+	-17842, 6729, 24907, 19422, -4515, -24163, -20854, 2266,
+	23234, 22128, 0, -22129, -23234, -2265, 20855, 24162,
+	4514, -19422, -24907, -6728, 17842, 25462, 8892, -16126,
+	-25824, -10987, 14287, 25988, 12999, -12339, -25956, -14912,
+	10298, 25725, 16712, -8178, -25299, -18384, 5996, 24680,
+	19916, -3768, -23873, -21297, 1512, 22885, 22516, 755,
+	-21722, -23563, -3017, 20395, 24431, 5257, -18912, -25113,
+	-7456, 17285, 25604, 9598, -15526, -25901, -11668, 13649},
+	{
+// Carrier 29 Phase 3
+	18384, -5996, -24680, -19917, 3768, 23873, 21297, -1511,
+	-22885, -22516, -756, 21722, 23563, 3018, -20394, -24431,
+	-5257, 18911, 25114, 7456, -17284, -25604, -9599, 15526,
+	25901, 11668, -13649, -26000, -13649, 11668, 25901, 15526,
+	-9599, -25605, -17284, 7456, 25114, 18911, -5257, -24432,
+	-20394, 3018, 23564, 21722, -756, -22516, -22885, -1511,
+	21298, 23873, 3768, -19917, -24680, -5995, 18384, 25299,
+	8178, -16712, -25725, -10297, 14913, 25956, 12339, -13000,
+	-25989, -14287, 10988, 25824, 16125, -8892, -25462, -17842,
+	6729, 24907, 19422, -4515, -24163, -20855, 2266, 23234,
+	22128, 0, -22129, -23234, -2265, 20855, 24162, 4514,
+	-19422, -24907, -6729, 17842, 25462, 8892, -16126, -25824,
+	-10987, 14287, 25988, 12999, -12339, -25956, -14912, 10298,
+	25725, 16712, -8178, -25299, -18384, 5996, 24680, 19916,
+	-3768, -23873, -21297, 1512, 22885, 22516, 755, -21722,
+	-23563, -3018, 20394, 24431, 5257, -18911, -25113, -7456,
+	17284, 25604, 9599, -15526, -25901, -11668, 13649, 26000,
+	13649, -11669, -25901, -15525, 9599, 25605, 17284, -7457,
+	-25114, -18911, 5257, 24432, 20394, -3018, -23564, -21722,
+	756, 22516, 22885, 1511, -21298, -23873, -3767, 19917,
+	24680, 5995, -18385, -25299, -8177, 16712, 25725, 10297,
+	-14913, -25955, -12339, 13000, 25989, 14286, -10988, -25824,
+	-16125, 8892, 25462, 17841, -6729, -24907, -19422, 4515,
+	24163, 20854, -2266, -23234, -22128, 0, 22129, 23234,
+	2265, -20855, -24162, -4514, 19422, 24907, 6728, -17842,
+	-25462, -8892, 16126, 25824, 10987, -14287, -25988, -12999,
+	12340, 25956, 14912, -10298, -25725, -16712, 8178, 25299},
+	},{{
+
+// Carrier 30 Phase 0
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22516,
+	0, 22516, 22516, 0, -22516, -22516, 0, 22516,
+	22516, 0, -22516, -22516, 0, 22516, 22516, 0,
+	-22516, -22516, 0, 22516, 22516, 0, -22516, -22517,
+	0, 22516, 22517, 0, -22516, -22517, 0, 22516,
+	22517, 0, -22516, -22517, 0, 22516, 22517, 0,
+	-22516, -22517, 0, 22516, 22517, 0, -22516, -22517,
+	0, 22516, 22517, 0, -22516, -22517, 0, 22516,
+	22517, 0, -22516, -22517, 0, 22516, 22517, 0,
+	-22516, -22517, 0, 22516, 22517, 0, -22516, -22517},
+	{
+// Carrier 30 Phase 1
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729,
+	18384, 25114, 6729, -18384, -25114, -6729, 18384, 25114,
+	6729, -18384, -25114, -6729, 18384, 25114, 6729, -18384,
+	-25114, -6729, 18384, 25114, 6729, -18384, -25114, -6729},
+	{
+// Carrier 30 Phase 2
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999,
+	26000, 13000, -12999, -26000, -13000, 12999, 26000, 13000,
+	-12999, -26000, -13000, 12999, 26000, 13000, -12999, -26000,
+	-13000, 12999, 26000, 13000, -12999, -26000, -13000, 12999},
+	{
+// Carrier 30 Phase 3
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25114, 18384, -6729, -25114, -18384,
+	6729, 25114, 18384, -6729, -25114, -18384, 6729, 25114,
+	18384, -6729, -25114, -18384, 6729, 25114, 18384, -6729,
+	-25114, -18384, 6729, 25113, 18384, -6729, -25113, -18384,
+	6729, 25113, 18384, -6729, -25113, -18384, 6729, 25113,
+	18384, -6729, -25113, -18384, 6728, 25113, 18384, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113,
+	18385, -6728, -25113, -18385, 6728, 25113, 18385, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113,
+	18385, -6728, -25113, -18385, 6728, 25113, 18385, -6728,
+	-25113, -18385, 6728, 25113, 18385, -6728, -25113, -18385,
+	6728, 25113, 18385, -6728, -25113, -18385, 6728, 25113},
+	},{{
+
+// Carrier 31 Phase 0
+	0, 22885, 21722, -2266, -23873, -20394, 4514, 24680,
+	18911, -6729, -25299, -17284, 8892, 25725, 15526, -10988,
+	-25956, -13649, 13000, 25989, 11668, -14913, -25824, -9599,
+	16712, 25462, 7456, -18384, -24907, -5257, 19917, 24163,
+	3018, -21297, -23234, -756, 22516, 22128, -1511, -23564,
+	-20855, 3768, 24432, 19422, -5996, -25114, -17842, 8178,
+	25605, 16126, -10298, -25901, -14287, 12339, 26000, 12339,
+	-14287, -25901, -10297, 16126, 25604, 8178, -17842, -25114,
+	-5995, 19422, 24431, 3768, -20855, -23563, -1511, 22129,
+	22516, -756, -23234, -21297, 3018, 24163, 19917, -5257,
+	-24907, -18384, 7457, 25462, 16712, -9599, -25824, -14912,
+	11668, 25989, 12999, -13649, -25956, -10987, 15526, 25725,
+	8892, -17284, -25299, -6729, 18911, 24680, 4514, -20394,
+	-23873, -2265, 21722, 22885, 0, -22885, -21722, 2266,
+	23873, 20394, -4515, -24680, -18911, 6729, 25299, 17284,
+	-8892, -25725, -15525, 10988, 25956, 13649, -13000, -25988,
+	-11668, 14913, 25824, 9599, -16712, -25462, -7456, 18384,
+	24907, 5257, -19917, -24162, -3018, 21298, 23234, 755,
+	-22516, -22128, 1512, 23564, 20855, -3768, -24432, -19422,
+	5996, 25114, 17842, -8178, -25605, -16125, 10298, 25901,
+	14287, -12339, -26000, -12339, 14287, 25901, 10297, -16126,
+	-25604, -8177, 17842, 25113, 5995, -19422, -24431, -3767,
+	20855, 23563, 1511, -22129, -22516, 756, 23234, 21297,
+	-3018, -24163, -19916, 5257, 24907, 18384, -7457, -25462,
+	-16712, 9599, 25824, 14912, -11669, -25989, -12999, 13649,
+	25955, 10987, -15526, -25725, -8892, 17284, 25299, 6728,
+	-18911, -24680, -4514, 20395, 23873, 2265, -21722, -22885},
+	{
+// Carrier 31 Phase 1
+	18384, 24907, 5257, -19917, -24163, -3018, 21297, 23234,
+	756, -22516, -22129, 1511, 23564, 20855, -3768, -24432,
+	-19422, 5996, 25114, 17842, -8178, -25605, -16126, 10298,
+	25901, 14287, -12339, -26000, -12339, 14287, 25901, 10298,
+	-16126, -25604, -8178, 17842, 25114, 5995, -19422, -24431,
+	-3768, 20855, 23563, 1511, -22129, -22516, 756, 23234,
+	21297, -3018, -24163, -19917, 5257, 24907, 18384, -7456,
+	-25462, -16712, 9599, 25824, 14912, -11668, -25989, -12999,
+	13649, 25956, 10987, -15526, -25725, -8892, 17284, 25299,
+	6729, -18911, -24680, -4514, 20394, 23873, 2265, -21722,
+	-22885, 0, 22885, 21722, -2266, -23873, -20394, 4514,
+	24680, 18911, -6729, -25299, -17284, 8892, 25725, 15525,
+	-10988, -25956, -13649, 13000, 25988, 11668, -14913, -25824,
+	-9599, 16712, 25462, 7456, -18384, -24907, -5257, 19917,
+	24162, 3018, -21298, -23234, -756, 22516, 22128, -1511,
+	-23564, -20855, 3768, 24432, 19422, -5996, -25114, -17842,
+	8178, 25605, 16125, -10298, -25901, -14287, 12339, 26000,
+	12339, -14287, -25901, -10297, 16126, 25604, 8177, -17842,
+	-25114, -5995, 19422, 24431, 3767, -20855, -23563, -1511,
+	22129, 22516, -756, -23234, -21297, 3018, 24163, 19916,
+	-5257, -24907, -18384, 7457, 25462, 16712, -9599, -25824,
+	-14912, 11669, 25989, 12999, -13649, -25955, -10987, 15526,
+	25725, 8892, -17284, -25299, -6729, 18911, 24680, 4514,
+	-20395, -23873, -2265, 21722, 22885, 0, -22885, -21722,
+	2266, 23873, 20394, -4515, -24680, -18911, 6729, 25299,
+	17284, -8892, -25725, -15525, 10988, 25956, 13649, -13000,
+	-25988, -11668, 14913, 25824, 9599, -16712, -25462, -7456},
+	{
+// Carrier 31 Phase 2
+	26000, 12339, -14287, -25901, -10298, 16126, 25605, 8178,
+	-17842, -25114, -5996, 19422, 24432, 3768, -20855, -23563,
+	-1511, 22129, 22516, -756, -23234, -21297, 3018, 24163,
+	19917, -5257, -24907, -18384, 7456, 25462, 16712, -9599,
+	-25824, -14912, 11668, 25989, 12999, -13649, -25956, -10988,
+	15526, 25725, 8892, -17284, -25299, -6729, 18911, 24680,
+	4514, -20394, -23873, -2265, 21722, 22885, 0, -22885,
+	-21722, 2266, 23873, 20394, -4514, -24680, -18911, 6729,
+	25299, 17284, -8892, -25725, -15526, 10988, 25956, 13649,
+	-13000, -25988, -11668, 14913, 25824, 9599, -16712, -25462,
+	-7456, 18384, 24907, 5257, -19917, -24162, -3018, 21298,
+	23234, 756, -22516, -22128, 1511, 23564, 20855, -3768,
+	-24432, -19422, 5996, 25114, 17842, -8178, -25605, -16125,
+	10298, 25901, 14287, -12339, -26000, -12339, 14287, 25901,
+	10297, -16126, -25604, -8177, 17842, 25114, 5995, -19422,
+	-24431, -3768, 20855, 23563, 1511, -22129, -22516, 756,
+	23234, 21297, -3018, -24163, -19917, 5257, 24907, 18384,
+	-7457, -25462, -16712, 9599, 25824, 14912, -11668, -25989,
+	-12999, 13649, 25955, 10987, -15526, -25725, -8892, 17284,
+	25299, 6729, -18911, -24680, -4514, 20394, 23873, 2265,
+	-21722, -22885, 0, 22885, 21722, -2266, -23873, -20394,
+	4515, 24680, 18911, -6729, -25299, -17284, 8892, 25725,
+	15525, -10988, -25956, -13649, 13000, 25988, 11668, -14913,
+	-25824, -9599, 16712, 25462, 7456, -18385, -24907, -5257,
+	19917, 24162, 3018, -21298, -23234, -755, 22516, 22128,
+	-1512, -23564, -20855, 3768, 24432, 19422, -5996, -25114,
+	-17842, 8178, 25605, 16125, -10298, -25901, -14286, 12339},
+	{
+// Carrier 31 Phase 3
+	18384, -7456, -25462, -16712, 9599, 25824, 14912, -11668,
+	-25989, -12999, 13649, 25956, 10988, -15526, -25725, -8892,
+	17284, 25299, 6729, -18911, -24680, -4514, 20394, 23873,
+	2266, -21722, -22885, 0, 22885, 21722, -2266, -23873,
+	-20394, 4514, 24680, 18911, -6729, -25299, -17284, 8892,
+	25725, 15526, -10988, -25956, -13649, 13000, 25988, 11668,
+	-14913, -25824, -9599, 16712, 25462, 7456, -18384, -24907,
+	-5257, 19917, 24162, 3018, -21298, -23234, -756, 22516,
+	22128, -1511, -23564, -20855, 3768, 24432, 19422, -5996,
+	-25114, -17842, 8178, 25605, 16126, -10298, -25901, -14287,
+	12339, 26000, 12339, -14287, -25901, -10297, 16126, 25604,
+	8178, -17842, -25114, -5995, 19422, 24431, 3768, -20855,
+	-23563, -1511, 22129, 22516, -756, -23234, -21297, 3018,
+	24163, 19917, -5257, -24907, -18384, 7457, 25462, 16712,
+	-9599, -25824, -14912, 11668, 25989, 12999, -13649, -25956,
+	-10987, 15526, 25725, 8892, -17284, -25299, -6729, 18911,
+	24680, 4514, -20394, -23873, -2265, 21722, 22885, 0,
+	-22885, -21722, 2266, 23873, 20394, -4515, -24680, -18911,
+	6729, 25299, 17284, -8892, -25725, -15525, 10988, 25956,
+	13649, -13000, -25988, -11668, 14913, 25824, 9599, -16712,
+	-25462, -7456, 18384, 24907, 5257, -19917, -24162, -3018,
+	21298, 23234, 755, -22516, -22128, 1512, 23564, 20855,
+	-3768, -24432, -19422, 5996, 25114, 17842, -8178, -25605,
+	-16125, 10298, 25901, 14286, -12339, -26000, -12339, 14287,
+	25901, 10297, -16126, -25604, -8177, 17842, 25113, 5995,
+	-19422, -24431, -3767, 20855, 23563, 1511, -22129, -22516,
+	756, 23234, 21297, -3018, -24163, -19916, 5258, 24907},
+	},{{
+
+// Carrier 32 Phase 0
+	0, 23234, 20855, -4514, -24907, -17842, 8892, 25824,
+	14287, -13000, -25956, -10298, 16712, 25299, 5995, -19917,
+	-23873, -1511, 22516, 21722, -3018, -24432, -18911, 7456,
+	25605, 15526, -11668, -26000, -11668, 15526, 25604, 7456,
+	-18911, -24431, -3018, 21722, 22516, -1511, -23873, -19917,
+	5996, 25299, 16712, -10298, -25956, -12999, 14287, 25824,
+	8892, -17842, -24907, -4514, 20855, 23234, 0, -23234,
+	-20855, 4514, 24907, 17842, -8892, -25824, -14287, 13000,
+	25956, 10297, -16712, -25299, -5995, 19917, 23873, 1511,
+	-22516, -21722, 3018, 24432, 18911, -7457, -25605, -15525,
+	11668, 26000, 11668, -15526, -25604, -7456, 18911, 24431,
+	3018, -21722, -22516, 1511, 23873, 19917, -5996, -25299,
+	-16712, 10298, 25956, 12999, -14287, -25824, -8892, 17842,
+	24907, 4514, -20855, -23234, 0, 23234, 20855, -4515,
+	-24907, -17842, 8892, 25824, 14287, -13000, -25955, -10297,
+	16712, 25299, 5995, -19917, -23873, -1511, 22516, 21722,
+	-3018, -24432, -18911, 7457, 25605, 15525, -11669, -26000,
+	-11668, 15526, 25604, 7456, -18911, -24431, -3018, 21722,
+	22516, -1512, -23873, -19916, 5996, 25299, 16712, -10298,
+	-25956, -12999, 14287, 25824, 8892, -17842, -24907, -4514,
+	20855, 23234, 0, -23234, -20854, 4515, 24907, 17842,
+	-8892, -25824, -14286, 13000, 25955, 10297, -16712, -25299,
+	-5995, 19917, 23873, 1511, -22516, -21722, 3018, 24432,
+	18911, -7457, -25605, -15525, 11669, 26000, 11668, -15526,
+	-25604, -7456, 18911, 24431, 3018, -21722, -22516, 1512,
+	23873, 19916, -5996, -25299, -16712, 10298, 25956, 12999,
+	-14287, -25824, -8892, 17842, 24907, 4514, -20855, -23234},
+	{
+// Carrier 32 Phase 1
+	18384, 24680, 3768, -21297, -22885, 756, 23564, 20394,
+	-5257, -25114, -17284, 9599, 25901, 13649, -13649, -25901,
+	-9599, 17284, 25114, 5257, -20394, -23563, -756, 22885,
+	21297, -3768, -24680, -18384, 8178, 25725, 14912, -12339,
+	-25988, -10988, 16126, 25462, 6729, -19422, -24163, -2265,
+	22129, 22128, -2266, -24163, -19422, 6729, 25462, 16126,
+	-10988, -25989, -12339, 14913, 25725, 8178, -18384, -24680,
+	-3768, 21298, 22885, -756, -23564, -20394, 5257, 25114,
+	17284, -9599, -25901, -13649, 13649, 25901, 9599, -17284,
+	-25114, -5257, 20394, 23563, 756, -22885, -21297, 3768,
+	24680, 18384, -8178, -25725, -14912, 12339, 25988, 10987,
+	-16126, -25462, -6729, 19422, 24162, 2265, -22129, -22128,
+	2266, 24163, 19422, -6729, -25462, -16125, 10988, 25989,
+	12339, -14913, -25725, -8177, 18384, 24680, 3767, -21298,
+	-22885, 756, 23564, 20394, -5257, -25114, -17284, 9599,
+	25901, 13649, -13649, -25901, -9599, 17284, 25114, 5257,
+	-20394, -23563, -755, 22885, 21297, -3768, -24680, -18384,
+	8178, 25725, 14912, -12339, -25988, -10987, 16126, 25462,
+	6728, -19422, -24162, -2265, 22129, 22128, -2266, -24163,
+	-19422, 6729, 25462, 16125, -10988, -25989, -12339, 14913,
+	25725, 8177, -18385, -24680, -3767, 21298, 22885, -756,
+	-23564, -20394, 5258, 25114, 17284, -9599, -25901, -13649,
+	13649, 25901, 9598, -17284, -25113, -5257, 20395, 23563,
+	755, -22885, -21297, 3768, 24680, 18384, -8178, -25725,
+	-14912, 12339, 25988, 10987, -16126, -25462, -6728, 19422,
+	24162, 2265, -22129, -22128, 2266, 24163, 19422, -6729,
+	-25462, -16125, 10988, 25989, 12339, -14913, -25725, -8177},
+	{
+// Carrier 32 Phase 2
+	26000, 11668, -15526, -25605, -7456, 18911, 24432, 3018,
+	-21722, -22516, 1511, 23873, 19917, -5996, -25299, -16712,
+	10298, 25956, 12999, -14287, -25824, -8892, 17842, 24907,
+	4514, -20855, -23234, 0, 23234, 20855, -4514, -24907,
+	-17842, 8892, 25824, 14287, -13000, -25956, -10298, 16712,
+	25299, 5995, -19917, -23873, -1511, 22516, 21722, -3018,
+	-24432, -18911, 7456, 25605, 15526, -11668, -26000, -11668,
+	15526, 25604, 7456, -18911, -24431, -3018, 21722, 22516,
+	-1511, -23873, -19917, 5996, 25299, 16712, -10298, -25956,
+	-12999, 14287, 25824, 8892, -17842, -24907, -4514, 20855,
+	23234, 0, -23234, -20855, 4515, 24907, 17842, -8892,
+	-25824, -14287, 13000, 25956, 10297, -16712, -25299, -5995,
+	19917, 23873, 1511, -22516, -21722, 3018, 24432, 18911,
+	-7457, -25605, -15525, 11668, 26000, 11668, -15526, -25604,
+	-7456, 18911, 24431, 3018, -21722, -22516, 1512, 23873,
+	19917, -5996, -25299, -16712, 10298, 25956, 12999, -14287,
+	-25824, -8892, 17842, 24907, 4514, -20855, -23234, 0,
+	23234, 20855, -4515, -24907, -17842, 8892, 25824, 14286,
+	-13000, -25955, -10297, 16712, 25299, 5995, -19917, -23873,
+	-1511, 22516, 21722, -3018, -24432, -18911, 7457, 25605,
+	15525, -11669, -26000, -11668, 15526, 25604, 7456, -18911,
+	-24431, -3018, 21722, 22516, -1512, -23873, -19916, 5996,
+	25299, 16712, -10298, -25956, -12999, 14287, 25824, 8892,
+	-17842, -24907, -4514, 20855, 23234, 0, -23234, -20854,
+	4515, 24907, 17841, -8892, -25824, -14286, 13000, 25955,
+	10297, -16712, -25299, -5995, 19917, 23873, 1511, -22516,
+	-21722, 3018, 24432, 18911, -7457, -25605, -15525, 11669},
+	{
+// Carrier 32 Phase 3
+	18384, -8178, -25725, -14912, 12339, 25989, 10988, -16126,
+	-25462, -6729, 19422, 24163, 2266, -22129, -22129, 2266,
+	24163, 19422, -6729, -25462, -16126, 10988, 25989, 12339,
+	-14913, -25725, -8178, 18384, 24680, 3768, -21297, -22885,
+	756, 23564, 20394, -5257, -25114, -17284, 9599, 25901,
+	13649, -13649, -25901, -9599, 17284, 25114, 5257, -20394,
+	-23563, -756, 22885, 21297, -3768, -24680, -18384, 8178,
+	25725, 14912, -12339, -25988, -10987, 16126, 25462, 6729,
+	-19422, -24162, -2265, 22129, 22128, -2266, -24163, -19422,
+	6729, 25462, 16125, -10988, -25989, -12339, 14913, 25725,
+	8178, -18384, -24680, -3768, 21298, 22885, -756, -23564,
+	-20394, 5257, 25114, 17284, -9599, -25901, -13649, 13649,
+	25901, 9599, -17284, -25114, -5257, 20394, 23563, 755,
+	-22885, -21297, 3768, 24680, 18384, -8178, -25725, -14912,
+	12339, 25988, 10987, -16126, -25462, -6729, 19422, 24162,
+	2265, -22129, -22128, 2266, 24163, 19422, -6729, -25462,
+	-16125, 10988, 25989, 12339, -14913, -25725, -8177, 18384,
+	24680, 3767, -21298, -22885, 756, 23564, 20394, -5257,
+	-25114, -17284, 9599, 25901, 13649, -13649, -25901, -9599,
+	17284, 25113, 5257, -20395, -23563, -755, 22885, 21297,
+	-3768, -24680, -18384, 8178, 25725, 14912, -12339, -25988,
+	-10987, 16126, 25462, 6728, -19422, -24162, -2265, 22129,
+	22128, -2266, -24163, -19422, 6729, 25462, 16125, -10988,
+	-25989, -12339, 14913, 25725, 8177, -18385, -24680, -3767,
+	21298, 22885, -756, -23564, -20394, 5258, 25114, 17284,
+	-9599, -25901, -13649, 13649, 25901, 9598, -17285, -25113,
+	-5257, 20395, 23563, 755, -22885, -21297, 3768, 24680},
+	},{{
+
+// Carrier 33 Phase 0
+	0, 23564, 19917, -6729, -25605, -14912, 13000, 25901,
+	8892, -18384, -24432, -2266, 22516, 21297, -4514, -25114,
+	-16712, 10988, 26000, 10988, -16712, -25114, -4514, 21297,
+	22516, -2266, -24432, -18384, 8892, 25901, 12999, -14913,
+	-25604, -6729, 19917, 23563, 0, -23564, -19917, 6729,
+	25605, 14912, -13000, -25901, -8892, 18384, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16712, -10988, -26000, -10987,
+	16712, 25114, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8892, -25901, -12999, 14913, 25604, 6729, -19917, -23563,
+	0, 23564, 19916, -6729, -25605, -14912, 13000, 25901,
+	8892, -18384, -24431, -2265, 22516, 21297, -4515, -25114,
+	-16712, 10988, 26000, 10987, -16712, -25113, -4514, 21298,
+	22516, -2266, -24432, -18384, 8892, 25901, 12999, -14913,
+	-25604, -6728, 19917, 23563, 0, -23564, -19916, 6729,
+	25605, 14912, -13000, -25901, -8892, 18385, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16712, -10988, -26000, -10987,
+	16712, 25113, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8892, -25901, -12999, 14913, 25604, 6728, -19917, -23563,
+	0, 23564, 19916, -6729, -25605, -14912, 13000, 25901,
+	8892, -18385, -24431, -2265, 22516, 21297, -4515, -25114,
+	-16712, 10988, 26000, 10987, -16712, -25113, -4514, 21298,
+	22516, -2266, -24432, -18384, 8893, 25901, 12999, -14913,
+	-25604, -6728, 19917, 23563, 0, -23564, -19916, 6729,
+	25605, 14912, -13000, -25901, -8891, 18385, 24431, 2265,
+	-22516, -21297, 4515, 25114, 16711, -10988, -26000, -10987,
+	16713, 25113, 4514, -21298, -22516, 2266, 24432, 18384,
+	-8893, -25901, -12999, 14913, 25604, 6728, -19917, -23563},
+	{
+// Carrier 33 Phase 1
+	18384, 24432, 2266, -22516, -21297, 4514, 25114, 16712,
+	-10988, -26000, -10988, 16712, 25114, 4514, -21297, -22516,
+	2266, 24432, 18384, -8892, -25901, -12999, 14913, 25604,
+	6729, -19917, -23563, 0, 23564, 19917, -6729, -25605,
+	-14912, 13000, 25901, 8892, -18384, -24431, -2265, 22516,
+	21297, -4514, -25114, -16712, 10988, 26000, 10987, -16712,
+	-25114, -4514, 21298, 22516, -2266, -24432, -18384, 8892,
+	25901, 12999, -14913, -25604, -6729, 19917, 23563, 0,
+	-23564, -19917, 6729, 25605, 14912, -13000, -25901, -8892,
+	18384, 24431, 2265, -22516, -21297, 4515, 25114, 16712,
+	-10988, -26000, -10987, 16712, 25113, 4514, -21298, -22516,
+	2266, 24432, 18384, -8892, -25901, -12999, 14913, 25604,
+	6728, -19917, -23563, 0, 23564, 19916, -6729, -25605,
+	-14912, 13000, 25901, 8892, -18385, -24431, -2265, 22516,
+	21297, -4515, -25114, -16712, 10988, 26000, 10987, -16712,
+	-25113, -4514, 21298, 22516, -2266, -24432, -18384, 8892,
+	25901, 12999, -14913, -25604, -6728, 19917, 23563, 0,
+	-23564, -19916, 6729, 25605, 14912, -13000, -25901, -8892,
+	18385, 24431, 2265, -22516, -21297, 4515, 25114, 16712,
+	-10988, -26000, -10987, 16712, 25113, 4514, -21298, -22516,
+	2266, 24432, 18384, -8893, -25901, -12999, 14913, 25604,
+	6728, -19917, -23563, 0, 23564, 19916, -6729, -25605,
+	-14912, 13000, 25901, 8891, -18385, -24431, -2265, 22516,
+	21297, -4515, -25114, -16711, 10988, 26000, 10987, -16712,
+	-25113, -4514, 21298, 22516, -2266, -24432, -18384, 8893,
+	25901, 12999, -14913, -25604, -6728, 19917, 23563, 0,
+	-23564, -19916, 6730, 25605, 14912, -13000, -25900, -8891},
+	{
+// Carrier 33 Phase 2
+	26000, 10988, -16712, -25114, -4514, 21297, 22516, -2266,
+	-24432, -18384, 8892, 25901, 12999, -14913, -25604, -6729,
+	19917, 23563, 0, -23564, -19917, 6729, 25605, 14912,
+	-13000, -25901, -8892, 18384, 24431, 2265, -22516, -21297,
+	4514, 25114, 16712, -10988, -26000, -10987, 16712, 25114,
+	4514, -21298, -22516, 2266, 24432, 18384, -8892, -25901,
+	-12999, 14913, 25604, 6729, -19917, -23563, 0, 23564,
+	19917, -6729, -25605, -14912, 13000, 25901, 8892, -18384,
+	-24431, -2265, 22516, 21297, -4515, -25114, -16712, 10988,
+	26000, 10987, -16712, -25114, -4514, 21298, 22516, -2266,
+	-24432, -18384, 8892, 25901, 12999, -14913, -25604, -6729,
+	19917, 23563, 0, -23564, -19916, 6729, 25605, 14912,
+	-13000, -25901, -8892, 18385, 24431, 2265, -22516, -21297,
+	4515, 25114, 16712, -10988, -26000, -10987, 16712, 25113,
+	4514, -21298, -22516, 2266, 24432, 18384, -8892, -25901,
+	-12999, 14913, 25604, 6728, -19917, -23563, 0, 23564,
+	19916, -6729, -25605, -14912, 13000, 25901, 8892, -18385,
+	-24431, -2265, 22516, 21297, -4515, -25114, -16712, 10988,
+	26000, 10987, -16712, -25113, -4514, 21298, 22516, -2266,
+	-24432, -18384, 8893, 25901, 12999, -14913, -25604, -6728,
+	19917, 23563, 0, -23564, -19916, 6729, 25605, 14912,
+	-13000, -25901, -8891, 18385, 24431, 2265, -22516, -21297,
+	4515, 25114, 16712, -10988, -26000, -10987, 16712, 25113,
+	4514, -21298, -22516, 2266, 24432, 18384, -8893, -25901,
+	-12999, 14913, 25604, 6728, -19917, -23563, 0, 23564,
+	19916, -6729, -25605, -14912, 13000, 25901, 8891, -18385,
+	-24431, -2265, 22517, 21297, -4515, -25114, -16711, 10988},
+	{
+// Carrier 33 Phase 3
+	18384, -8892, -25901, -13000, 14912, 25604, 6729, -19917,
+	-23563, 0, 23564, 19917, -6729, -25605, -14912, 13000,
+	25901, 8892, -18384, -24431, -2265, 22516, 21297, -4514,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25114, -4514,
+	21298, 22516, -2266, -24432, -18384, 8892, 25901, 12999,
+	-14913, -25604, -6729, 19917, 23563, 0, -23564, -19917,
+	6729, 25605, 14912, -13000, -25901, -8892, 18384, 24431,
+	2265, -22516, -21297, 4515, 25114, 16712, -10988, -26000,
+	-10987, 16712, 25114, 4514, -21298, -22516, 2266, 24432,
+	18384, -8892, -25901, -12999, 14913, 25604, 6729, -19917,
+	-23563, 0, 23564, 19916, -6729, -25605, -14912, 13000,
+	25901, 8892, -18384, -24431, -2265, 22516, 21297, -4515,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25113, -4514,
+	21298, 22516, -2266, -24432, -18384, 8892, 25901, 12999,
+	-14913, -25604, -6728, 19917, 23563, 0, -23564, -19916,
+	6729, 25605, 14912, -13000, -25901, -8892, 18385, 24431,
+	2265, -22516, -21297, 4515, 25114, 16712, -10988, -26000,
+	-10987, 16712, 25113, 4514, -21298, -22516, 2266, 24432,
+	18384, -8892, -25901, -12999, 14913, 25604, 6728, -19917,
+	-23563, 0, 23564, 19916, -6729, -25605, -14912, 13000,
+	25901, 8892, -18385, -24431, -2265, 22516, 21297, -4515,
+	-25114, -16712, 10988, 26000, 10987, -16712, -25113, -4514,
+	21298, 22516, -2266, -24432, -18384, 8893, 25901, 12999,
+	-14913, -25604, -6728, 19917, 23563, 0, -23564, -19916,
+	6729, 25605, 14912, -13000, -25901, -8891, 18385, 24431,
+	2265, -22516, -21297, 4515, 25114, 16711, -10988, -26000,
+	-10987, 16713, 25113, 4514, -21298, -22516, 2266, 24432},
+	},{{
+
+// Carrier 34 Phase 0
+	0, 23873, 18911, -8892, -25956, -11668, 16712, 24907,
+	3018, -22516, -20855, 5996, 25605, 14287, -14287, -25605,
+	-5996, 20855, 22516, -3018, -24907, -16712, 11668, 25956,
+	8892, -18911, -23873, 0, 23873, 18911, -8892, -25956,
+	-11668, 16712, 24907, 3018, -22516, -20855, 5995, 25604,
+	14287, -14287, -25605, -5996, 20855, 22516, -3018, -24907,
+	-16712, 11668, 25956, 8892, -18911, -23873, 0, 23873,
+	18911, -8892, -25956, -11668, 16712, 24907, 3018, -22516,
+	-20855, 5995, 25604, 14287, -14287, -25605, -5996, 20855,
+	22516, -3018, -24907, -16712, 11668, 25956, 8892, -18911,
+	-23873, 0, 23873, 18911, -8892, -25956, -11668, 16712,
+	24907, 3018, -22516, -20855, 5995, 25604, 14287, -14287,
+	-25605, -5996, 20855, 22516, -3018, -24907, -16712, 11668,
+	25956, 8892, -18911, -23873, 0, 23873, 18911, -8892,
+	-25956, -11668, 16712, 24907, 3018, -22516, -20855, 5995,
+	25604, 14287, -14287, -25605, -5996, 20855, 22516, -3018,
+	-24907, -16712, 11668, 25956, 8892, -18911, -23873, 0,
+	23873, 18911, -8892, -25956, -11668, 16712, 24907, 3018,
+	-22516, -20855, 5995, 25604, 14287, -14287, -25605, -5996,
+	20855, 22516, -3018, -24907, -16712, 11668, 25956, 8892,
+	-18911, -23873, 0, 23873, 18911, -8892, -25956, -11668,
+	16712, 24907, 3018, -22516, -20855, 5995, 25604, 14287,
+	-14287, -25605, -5996, 20855, 22516, -3018, -24907, -16712,
+	11668, 25956, 8892, -18911, -23873, 0, 23873, 18911,
+	-8892, -25956, -11668, 16712, 24907, 3018, -22516, -20855,
+	5995, 25604, 14287, -14287, -25605, -5996, 20855, 22516,
+	-3018, -24907, -16712, 11668, 25956, 8892, -18911, -23873},
+	{
+// Carrier 34 Phase 1
+	18384, 24163, 756, -23563, -19422, 8178, 25901, 12339,
+	-16126, -25114, -3768, 22129, 21297, -5257, -25462, -14913,
+	13649, 25725, 6729, -20394, -22885, 2266, 24680, 17284,
+	-10988, -25989, -9599, 18384, 24163, 756, -23563, -19422,
+	8178, 25901, 12339, -16126, -25114, -3768, 22129, 21297,
+	-5257, -25462, -14913, 13649, 25725, 6729, -20394, -22885,
+	2266, 24680, 17284, -10988, -25989, -9599, 18384, 24163,
+	756, -23563, -19422, 8178, 25901, 12339, -16126, -25114,
+	-3768, 22129, 21297, -5257, -25462, -14913, 13649, 25725,
+	6729, -20394, -22885, 2266, 24680, 17284, -10988, -25989,
+	-9599, 18384, 24163, 756, -23563, -19422, 8178, 25901,
+	12339, -16126, -25114, -3768, 22129, 21297, -5257, -25462,
+	-14913, 13649, 25725, 6729, -20394, -22885, 2265, 24680,
+	17284, -10988, -25989, -9599, 18384, 24163, 756, -23563,
+	-19422, 8178, 25901, 12339, -16126, -25114, -3768, 22129,
+	21297, -5257, -25462, -14913, 13649, 25725, 6729, -20394,
+	-22885, 2265, 24680, 17284, -10988, -25989, -9599, 18384,
+	24163, 756, -23563, -19422, 8178, 25901, 12339, -16126,
+	-25114, -3768, 22128, 21297, -5257, -25462, -14913, 13649,
+	25725, 6729, -20394, -22885, 2265, 24680, 17284, -10988,
+	-25989, -9599, 18384, 24163, 756, -23563, -19422, 8178,
+	25901, 12339, -16126, -25114, -3768, 22128, 21298, -5257,
+	-25462, -14913, 13649, 25725, 6729, -20394, -22885, 2265,
+	24680, 17284, -10987, -25989, -9599, 18384, 24163, 756,
+	-23563, -19422, 8178, 25901, 12339, -16126, -25114, -3768,
+	22128, 21298, -5257, -25462, -14913, 13649, 25725, 6729,
+	-20394, -22885, 2265, 24680, 17284, -10987, -25989, -9599},
+	{
+// Carrier 34 Phase 2
+	26000, 10298, -17842, -24432, -1511, 23234, 19917, -7456,
+	-25824, -13000, 15526, 25299, 4514, -21722, -21722, 4514,
+	25299, 15526, -12999, -25824, -7456, 19917, 23234, -1511,
+	-24432, -17842, 10298, 26000, 10298, -17842, -24432, -1511,
+	23234, 19917, -7456, -25824, -13000, 15526, 25299, 4514,
+	-21722, -21722, 4514, 25299, 15526, -12999, -25824, -7456,
+	19917, 23234, -1511, -24432, -17842, 10298, 26000, 10298,
+	-17842, -24432, -1511, 23234, 19917, -7456, -25824, -13000,
+	15526, 25299, 4514, -21722, -21722, 4514, 25299, 15526,
+	-12999, -25824, -7456, 19917, 23234, -1511, -24431, -17842,
+	10298, 26000, 10298, -17842, -24432, -1511, 23234, 19917,
+	-7456, -25824, -13000, 15526, 25299, 4514, -21722, -21722,
+	4514, 25299, 15526, -12999, -25824, -7456, 19917, 23234,
+	-1511, -24431, -17842, 10298, 26000, 10298, -17842, -24432,
+	-1511, 23234, 19917, -7456, -25824, -13000, 15526, 25299,
+	4514, -21722, -21722, 4514, 25299, 15526, -12999, -25824,
+	-7456, 19917, 23234, -1511, -24431, -17842, 10298, 26000,
+	10298, -17842, -24432, -1511, 23234, 19917, -7456, -25824,
+	-13000, 15526, 25299, 4514, -21722, -21722, 4514, 25299,
+	15526, -12999, -25824, -7456, 19917, 23234, -1511, -24431,
+	-17842, 10298, 26000, 10298, -17842, -24432, -1511, 23234,
+	19917, -7456, -25824, -13000, 15526, 25299, 4514, -21722,
+	-21722, 4514, 25299, 15526, -12999, -25824, -7456, 19917,
+	23234, -1511, -24431, -17842, 10297, 26000, 10298, -17842,
+	-24432, -1511, 23234, 19917, -7456, -25824, -13000, 15526,
+	25299, 4514, -21722, -21722, 4514, 25299, 15526, -12999,
+	-25824, -7456, 19917, 23234, -1511, -24431, -17842, 10297},
+	{
+// Carrier 34 Phase 3
+	18384, -9599, -25989, -10988, 17284, 24680, 2266, -22885,
+	-20394, 6729, 25725, 13649, -14912, -25462, -5257, 21297,
+	22129, -3768, -25114, -16126, 12339, 25901, 8178, -19422,
+	-23564, 756, 24163, 18384, -9599, -25989, -10988, 17284,
+	24680, 2266, -22885, -20394, 6729, 25725, 13649, -14912,
+	-25462, -5257, 21297, 22129, -3768, -25114, -16126, 12339,
+	25901, 8178, -19422, -23564, 756, 24163, 18384, -9599,
+	-25989, -10988, 17284, 24680, 2266, -22885, -20394, 6729,
+	25725, 13649, -14912, -25462, -5257, 21297, 22129, -3768,
+	-25114, -16126, 12339, 25901, 8178, -19422, -23564, 756,
+	24163, 18384, -9599, -25989, -10988, 17284, 24680, 2266,
+	-22885, -20394, 6729, 25725, 13649, -14912, -25462, -5257,
+	21297, 22129, -3768, -25114, -16126, 12339, 25901, 8178,
+	-19422, -23564, 756, 24163, 18384, -9599, -25988, -10988,
+	17284, 24680, 2266, -22885, -20394, 6729, 25725, 13649,
+	-14912, -25462, -5257, 21297, 22129, -3768, -25114, -16126,
+	12339, 25901, 8178, -19422, -23564, 756, 24163, 18384,
+	-9599, -25988, -10988, 17284, 24680, 2266, -22885, -20394,
+	6729, 25725, 13649, -14912, -25462, -5257, 21297, 22129,
+	-3768, -25114, -16126, 12339, 25901, 8178, -19422, -23564,
+	756, 24163, 18384, -9599, -25988, -10988, 17284, 24680,
+	2266, -22885, -20394, 6729, 25725, 13649, -14912, -25462,
+	-5257, 21297, 22129, -3768, -25114, -16126, 12339, 25901,
+	8178, -19422, -23564, 756, 24163, 18384, -9599, -25988,
+	-10988, 17284, 24680, 2266, -22885, -20394, 6729, 25725,
+	13649, -14912, -25462, -5257, 21297, 22129, -3768, -25114,
+	-16126, 12339, 25901, 8178, -19422, -23564, 756, 24162},
+	},{{
+
+// Carrier 35 Phase 0
+	0, 24163, 17842, -10988, -25956, -8178, 19917, 22885,
+	-3018, -25114, -15526, 13649, 25604, 5257, -21722, -21297,
+	5996, 25725, 12999, -16126, -24907, -2266, 23234, 19422,
+	-8892, -25989, -10298, 18384, 23873, -756, -24432, -17284,
+	11668, 25901, 7456, -20394, -22516, 3768, 25299, 14912,
+	-14287, -25462, -4514, 22129, 20855, -6729, -25824, -12339,
+	16712, 24680, 1511, -23564, -18911, 9599, 26000, 9599,
+	-18911, -23563, 1511, 24680, 16712, -12339, -25824, -6729,
+	20855, 22128, -4514, -25462, -14287, 14913, 25299, 3768,
+	-22516, -20394, 7457, 25901, 11668, -17284, -24431, -756,
+	23873, 18384, -10298, -25988, -8892, 19422, 23234, -2266,
+	-24907, -16125, 13000, 25725, 5995, -21298, -21722, 5257,
+	25605, 13649, -15526, -25114, -3018, 22885, 19917, -8178,
+	-25956, -10987, 17842, 24162, 0, -24163, -17842, 10988,
+	25955, 8177, -19917, -22885, 3018, 25114, 15525, -13649,
+	-25604, -5257, 21722, 21297, -5996, -25725, -12999, 16126,
+	24907, 2265, -23234, -19422, 8892, 25989, 10297, -18384,
+	-23873, 756, 24432, 17284, -11669, -25901, -7456, 20394,
+	22516, -3768, -25299, -14912, 14287, 25462, 4514, -22129,
+	-20855, 6729, 25824, 12339, -16712, -24680, -1511, 23564,
+	18911, -9599, -26000, -9599, 18911, 23563, -1512, -24680,
+	-16712, 12339, 25824, 6728, -20855, -22128, 4515, 25462,
+	14286, -14913, -25299, -3767, 22516, 20394, -7457, -25901,
+	-11668, 17284, 24431, 755, -23873, -18384, 10298, 25988,
+	8892, -19422, -23234, 2266, 24907, 16125, -13000, -25725,
+	-5995, 21298, 21722, -5258, -25605, -13649, 15526, 25113,
+	3018, -22885, -19916, 8178, 25956, 10987, -17842, -24162},
+	{
+// Carrier 35 Phase 1
+	18384, 23873, -756, -24432, -17284, 11668, 25901, 7456,
+	-20394, -22516, 3768, 25299, 14912, -14287, -25462, -4514,
+	22129, 20855, -6729, -25824, -12339, 16712, 24680, 1511,
+	-23564, -18911, 9599, 26000, 9599, -18911, -23563, 1511,
+	24680, 16712, -12339, -25824, -6729, 20855, 22128, -4514,
+	-25462, -14287, 14913, 25299, 3768, -22516, -20394, 7456,
+	25901, 11668, -17284, -24431, -756, 23873, 18384, -10298,
+	-25988, -8892, 19422, 23234, -2266, -24907, -16126, 13000,
+	25725, 5995, -21298, -21722, 5257, 25605, 13649, -15526,
+	-25114, -3018, 22885, 19917, -8178, -25956, -10987, 17842,
+	24162, 0, -24163, -17842, 10988, 25956, 8178, -19917,
+	-22885, 3018, 25114, 15525, -13649, -25604, -5257, 21722,
+	21297, -5996, -25725, -12999, 16126, 24907, 2265, -23234,
+	-19422, 8892, 25989, 10297, -18384, -23873, 756, 24432,
+	17284, -11668, -25901, -7456, 20394, 22516, -3768, -25299,
+	-14912, 14287, 25462, 4514, -22129, -20855, 6729, 25824,
+	12339, -16712, -24680, -1511, 23564, 18911, -9599, -26000,
+	-9599, 18911, 23563, -1512, -24680, -16712, 12339, 25824,
+	6729, -20855, -22128, 4515, 25462, 14286, -14913, -25299,
+	-3767, 22516, 20394, -7457, -25901, -11668, 17284, 24431,
+	755, -23873, -18384, 10298, 25988, 8892, -19422, -23234,
+	2266, 24907, 16125, -13000, -25725, -5995, 21298, 21722,
+	-5257, -25605, -13649, 15526, 25113, 3018, -22885, -19916,
+	8178, 25956, 10987, -17842, -24162, 0, 24163, 17842,
+	-10988, -25955, -8177, 19917, 22885, -3018, -25114, -15525,
+	13649, 25604, 5257, -21722, -21297, 5996, 25725, 12999,
+	-16126, -24907, -2265, 23234, 19422, -8892, -25989, -10297},
+	{
+// Carrier 35 Phase 2
+	26000, 9599, -18911, -23564, 1511, 24680, 16712, -12339,
+	-25824, -6729, 20855, 22129, -4514, -25462, -14287, 14913,
+	25299, 3768, -22516, -20394, 7456, 25901, 11668, -17284,
+	-24431, -756, 23873, 18384, -10298, -25988, -8892, 19422,
+	23234, -2266, -24907, -16126, 13000, 25725, 5995, -21297,
+	-21722, 5257, 25605, 13649, -15526, -25114, -3018, 22885,
+	19917, -8178, -25956, -10987, 17842, 24162, 0, -24163,
+	-17842, 10988, 25956, 8178, -19917, -22885, 3018, 25114,
+	15526, -13649, -25604, -5257, 21722, 21297, -5996, -25725,
+	-12999, 16126, 24907, 2265, -23234, -19422, 8892, 25989,
+	10297, -18384, -23873, 756, 24432, 17284, -11668, -25901,
+	-7456, 20394, 22516, -3768, -25299, -14912, 14287, 25462,
+	4514, -22129, -20855, 6729, 25824, 12339, -16712, -24680,
+	-1511, 23564, 18911, -9599, -26000, -9599, 18911, 23563,
+	-1511, -24680, -16712, 12339, 25824, 6729, -20855, -22128,
+	4515, 25462, 14287, -14913, -25299, -3767, 22516, 20394,
+	-7457, -25901, -11668, 17284, 24431, 755, -23873, -18384,
+	10298, 25988, 8892, -19422, -23234, 2266, 24907, 16125,
+	-13000, -25725, -5995, 21298, 21722, -5257, -25605, -13649,
+	15526, 25113, 3018, -22885, -19916, 8178, 25956, 10987,
+	-17842, -24162, 0, 24163, 17842, -10988, -25955, -8177,
+	19917, 22885, -3018, -25114, -15525, 13649, 25604, 5257,
+	-21722, -21297, 5996, 25725, 12999, -16126, -24907, -2265,
+	23234, 19422, -8892, -25989, -10297, 18385, 23873, -756,
+	-24432, -17284, 11669, 25901, 7456, -20395, -22516, 3768,
+	25299, 14912, -14287, -25462, -4514, 22129, 20854, -6729,
+	-25824, -12339, 16712, 24680, 1511, -23564, -18911, 9599},
+	{
+// Carrier 35 Phase 3
+	18384, -10298, -25989, -8892, 19422, 23234, -2266, -24907,
+	-16126, 13000, 25725, 5995, -21297, -21722, 5257, 25605,
+	13649, -15526, -25114, -3018, 22885, 19917, -8178, -25956,
+	-10988, 17842, 24163, 0, -24163, -17842, 10988, 25956,
+	8178, -19917, -22885, 3018, 25114, 15526, -13649, -25604,
+	-5257, 21722, 21297, -5996, -25725, -12999, 16126, 24907,
+	2265, -23234, -19422, 8892, 25989, 10297, -18384, -23873,
+	756, 24432, 17284, -11668, -25901, -7456, 20394, 22516,
+	-3768, -25299, -14912, 14287, 25462, 4514, -22129, -20855,
+	6729, 25824, 12339, -16712, -24680, -1511, 23564, 18911,
+	-9599, -26000, -9599, 18911, 23563, -1511, -24680, -16712,
+	12339, 25824, 6729, -20855, -22128, 4515, 25462, 14287,
+	-14913, -25299, -3768, 22516, 20394, -7457, -25901, -11668,
+	17284, 24431, 755, -23873, -18384, 10298, 25988, 8892,
+	-19422, -23234, 2266, 24907, 16125, -13000, -25725, -5995,
+	21298, 21722, -5257, -25605, -13649, 15526, 25114, 3018,
+	-22885, -19916, 8178, 25956, 10987, -17842, -24162, 0,
+	24163, 17842, -10988, -25955, -8177, 19917, 22885, -3018,
+	-25114, -15525, 13649, 25604, 5257, -21722, -21297, 5996,
+	25725, 12999, -16126, -24907, -2265, 23234, 19422, -8892,
+	-25989, -10297, 18385, 23873, -756, -24432, -17284, 11669,
+	25901, 7456, -20395, -22516, 3768, 25299, 14912, -14287,
+	-25462, -4514, 22129, 20854, -6729, -25824, -12339, 16712,
+	24680, 1511, -23564, -18911, 9599, 26000, 9599, -18911,
+	-23563, 1512, 24680, 16712, -12339, -25824, -6728, 20855,
+	22128, -4515, -25462, -14286, 14913, 25299, 3767, -22516,
+	-20394, 7457, 25901, 11668, -17284, -24431, -755, 23873},
+	},{{
+
+// Carrier 36 Phase 0
+	0, 24432, 16712, -12999, -25605, -4514, 22516, 19917,
+	-8892, -26000, -8892, 19917, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4514,
+	-22516, -19917, 8892, 26000, 8892, -19917, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4514, 22516, 19917, -8892, -26000, -8892, 19917,
+	22516, -4514, -25604, -13000, 16712, 24432, 0, -24431,
+	-16712, 12999, 25605, 4515, -22516, -19917, 8892, 26000,
+	8892, -19917, -22516, 4514, 25604, 13000, -16712, -24432,
+	0, 24431, 16712, -12999, -25605, -4515, 22516, 19917,
+	-8892, -26000, -8892, 19916, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4515,
+	-22516, -19917, 8892, 26000, 8892, -19916, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4515, 22516, 19917, -8892, -26000, -8892, 19916,
+	22516, -4514, -25604, -13000, 16712, 24432, 0, -24431,
+	-16712, 12999, 25605, 4515, -22516, -19917, 8892, 26000,
+	8892, -19916, -22516, 4514, 25604, 13000, -16712, -24432,
+	0, 24431, 16712, -12999, -25605, -4515, 22516, 19917,
+	-8892, -26000, -8893, 19916, 22516, -4514, -25604, -13000,
+	16712, 24432, 0, -24431, -16712, 12999, 25605, 4515,
+	-22516, -19917, 8891, 26000, 8893, -19916, -22516, 4514,
+	25604, 13000, -16712, -24432, 0, 24431, 16712, -12999,
+	-25605, -4515, 22516, 19917, -8891, -26000, -8893, 19916,
+	22516, -4514, -25604, -13000, 16711, 24432, 0, -24431,
+	-16713, 12999, 25605, 4515, -22516, -19917, 8891, 26000,
+	8893, -19916, -22517, 4514, 25604, 13000, -16711, -24432},
+	{
+// Carrier 36 Phase 1
+	18384, 23564, -2266, -25114, -14913, 14912, 25114, 2266,
+	-23563, -18384, 10988, 25901, 6729, -21297, -21297, 6729,
+	25901, 10988, -18384, -23564, 2265, 25114, 14913, -14912,
+	-25114, -2266, 23563, 18384, -10988, -25901, -6729, 21297,
+	21298, -6729, -25901, -10988, 18384, 23564, -2265, -25114,
+	-14913, 14912, 25114, 2266, -23563, -18384, 10987, 25901,
+	6729, -21297, -21298, 6729, 25901, 10988, -18384, -23564,
+	2265, 25114, 14913, -14912, -25114, -2266, 23563, 18384,
+	-10987, -25901, -6729, 21297, 21298, -6729, -25901, -10988,
+	18384, 23564, -2265, -25114, -14913, 14912, 25114, 2266,
+	-23563, -18384, 10987, 25901, 6729, -21297, -21298, 6729,
+	25901, 10988, -18384, -23564, 2265, 25113, 14913, -14912,
+	-25114, -2266, 23563, 18385, -10987, -25901, -6729, 21297,
+	21298, -6728, -25901, -10988, 18384, 23564, -2265, -25113,
+	-14913, 14912, 25114, 2266, -23563, -18385, 10987, 25901,
+	6729, -21297, -21298, 6728, 25901, 10988, -18384, -23564,
+	2265, 25113, 14913, -14912, -25114, -2266, 23563, 18385,
+	-10987, -25901, -6729, 21297, 21298, -6728, -25901, -10988,
+	18384, 23564, -2265, -25113, -14913, 14912, 25114, 2266,
+	-23563, -18385, 10987, 25901, 6729, -21297, -21298, 6728,
+	25901, 10988, -18384, -23564, 2265, 25113, 14913, -14912,
+	-25114, -2266, 23563, 18385, -10987, -25901, -6729, 21297,
+	21298, -6728, -25901, -10988, 18384, 23564, -2265, -25113,
+	-14913, 14912, 25114, 2266, -23563, -18385, 10987, 25901,
+	6729, -21297, -21298, 6728, 25901, 10988, -18384, -23564,
+	2265, 25113, 14913, -14912, -25114, -2266, 23563, 18385,
+	-10987, -25901, -6729, 21297, 21298, -6728, -25900, -10988},
+	{
+// Carrier 36 Phase 2
+	26000, 8892, -19917, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4514, 22516,
+	19917, -8892, -26000, -8892, 19917, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4514, -22516, -19917, 8892, 26000, 8892, -19917, -22516,
+	4514, 25604, 13000, -16712, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8892, -26000, -8892,
+	19917, 22516, -4514, -25604, -13000, 16712, 24432, 0,
+	-24431, -16712, 12999, 25605, 4515, -22516, -19917, 8892,
+	26000, 8892, -19916, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4515, 22516,
+	19917, -8892, -26000, -8892, 19916, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4515, -22516, -19917, 8892, 26000, 8892, -19916, -22516,
+	4514, 25604, 13000, -16712, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8892, -26000, -8892,
+	19916, 22516, -4514, -25604, -13000, 16712, 24432, 0,
+	-24431, -16712, 12999, 25605, 4515, -22516, -19917, 8892,
+	26000, 8892, -19916, -22516, 4514, 25604, 13000, -16712,
+	-24432, 0, 24431, 16712, -12999, -25605, -4515, 22516,
+	19917, -8891, -26000, -8893, 19916, 22516, -4514, -25604,
+	-13000, 16712, 24432, 0, -24431, -16712, 12999, 25605,
+	4515, -22516, -19917, 8891, 26000, 8893, -19916, -22516,
+	4514, 25604, 13000, -16711, -24432, 0, 24431, 16712,
+	-12999, -25605, -4515, 22516, 19917, -8891, -26000, -8893,
+	19916, 22517, -4514, -25604, -13000, 16711, 24432, 0,
+	-24431, -16713, 12999, 25605, 4515, -22516, -19917, 8891},
+	{
+// Carrier 36 Phase 3
+	18384, -10988, -25901, -6729, 21297, 21297, -6729, -25901,
+	-10988, 18384, 23564, -2265, -25114, -14913, 14912, 25114,
+	2266, -23563, -18384, 10988, 25901, 6729, -21297, -21298,
+	6729, 25901, 10988, -18384, -23564, 2265, 25114, 14913,
+	-14912, -25114, -2266, 23563, 18384, -10987, -25901, -6729,
+	21297, 21298, -6729, -25901, -10988, 18384, 23564, -2265,
+	-25114, -14913, 14912, 25114, 2266, -23563, -18384, 10987,
+	25901, 6729, -21297, -21298, 6729, 25901, 10988, -18384,
+	-23564, 2265, 25114, 14913, -14912, -25114, -2266, 23563,
+	18384, -10987, -25901, -6729, 21297, 21298, -6729, -25901,
+	-10988, 18384, 23564, -2265, -25113, -14913, 14912, 25114,
+	2266, -23563, -18385, 10987, 25901, 6729, -21297, -21298,
+	6728, 25901, 10988, -18384, -23564, 2265, 25113, 14913,
+	-14912, -25114, -2266, 23563, 18385, -10987, -25901, -6729,
+	21297, 21298, -6728, -25901, -10988, 18384, 23564, -2265,
+	-25113, -14913, 14912, 25114, 2266, -23563, -18385, 10987,
+	25901, 6729, -21297, -21298, 6728, 25901, 10988, -18384,
+	-23564, 2265, 25113, 14913, -14912, -25114, -2266, 23563,
+	18385, -10987, -25901, -6729, 21297, 21298, -6728, -25901,
+	-10988, 18384, 23564, -2265, -25113, -14913, 14912, 25114,
+	2266, -23563, -18385, 10987, 25901, 6729, -21297, -21298,
+	6728, 25901, 10988, -18384, -23564, 2265, 25113, 14913,
+	-14912, -25114, -2266, 23563, 18385, -10987, -25901, -6729,
+	21297, 21298, -6728, -25901, -10988, 18384, 23564, -2265,
+	-25113, -14913, 14912, 25114, 2266, -23563, -18385, 10987,
+	25901, 6729, -21297, -21298, 6728, 25901, 10988, -18384,
+	-23564, 2265, 25113, 14913, -14912, -25114, -2266, 23563},
+	},{{
+
+// Carrier 37 Phase 0
+	0, 24680, 15526, -14912, -24907, -756, 24432, 16126,
+	-14287, -25114, -1511, 24163, 16712, -13649, -25299, -2266,
+	23873, 17284, -12999, -25462, -3018, 23563, 17842, -12339,
+	-25605, -3768, 23234, 18384, -11668, -25725, -4514, 22885,
+	18911, -10988, -25824, -5257, 22516, 19422, -10298, -25901,
+	-5996, 22129, 19917, -9599, -25956, -6729, 21722, 20394,
+	-8892, -25989, -7456, 21297, 20855, -8178, -26000, -8178,
+	20855, 21297, -7456, -25988, -8892, 20394, 21722, -6729,
+	-25956, -9599, 19917, 22129, -5995, -25901, -10298, 19422,
+	22516, -5257, -25824, -10988, 18911, 22885, -4514, -25725,
+	-11668, 18384, 23234, -3768, -25604, -12339, 17842, 23564,
+	-3018, -25462, -13000, 17284, 23873, -2265, -25299, -13649,
+	16712, 24163, -1511, -25114, -14287, 16126, 24432, -756,
+	-24907, -14913, 15526, 24680, 0, -24680, -15526, 14912,
+	24907, 756, -24431, -16126, 14287, 25114, 1511, -24162,
+	-16712, 13649, 25299, 2266, -23873, -17284, 12999, 25462,
+	3018, -23563, -17842, 12339, 25605, 3768, -23234, -18384,
+	11668, 25725, 4514, -22885, -18911, 10987, 25824, 5257,
+	-22516, -19422, 10297, 25901, 5996, -22128, -19917, 9599,
+	25956, 6729, -21722, -20394, 8892, 25989, 7457, -21297,
+	-20855, 8178, 26000, 8178, -20855, -21298, 7456, 25988,
+	8892, -20394, -21722, 6729, 25956, 9599, -19917, -22129,
+	5995, 25901, 10298, -19422, -22516, 5257, 25824, 10988,
+	-18911, -22885, 4514, 25725, 11668, -18384, -23234, 3768,
+	25604, 12339, -17842, -23564, 3018, 25462, 13000, -17284,
+	-23873, 2265, 25299, 13649, -16712, -24163, 1511, 25114,
+	14287, -16125, -24432, 756, 24907, 14913, -15525, -24680},
+	{
+// Carrier 37 Phase 1
+	18384, 23234, -3768, -25604, -12339, 17842, 23564, -3018,
+	-25462, -13000, 17284, 23873, -2266, -25299, -13649, 16712,
+	24163, -1511, -25114, -14287, 16126, 24432, -756, -24907,
+	-14913, 15526, 24680, 0, -24680, -15526, 14912, 24907,
+	756, -24431, -16126, 14287, 25114, 1511, -24163, -16712,
+	13649, 25299, 2266, -23873, -17284, 12999, 25462, 3018,
+	-23563, -17842, 12339, 25605, 3768, -23234, -18384, 11668,
+	25725, 4514, -22885, -18911, 10988, 25824, 5257, -22516,
+	-19422, 10298, 25901, 5996, -22129, -19917, 9599, 25956,
+	6729, -21722, -20394, 8892, 25989, 7456, -21297, -20855,
+	8178, 26000, 8178, -20855, -21297, 7456, 25988, 8892,
+	-20394, -21722, 6729, 25956, 9599, -19917, -22129, 5995,
+	25901, 10298, -19422, -22516, 5257, 25824, 10988, -18911,
+	-22885, 4514, 25725, 11668, -18384, -23234, 3768, 25604,
+	12339, -17842, -23564, 3018, 25462, 13000, -17284, -23873,
+	2265, 25299, 13649, -16712, -24163, 1511, 25114, 14287,
+	-16126, -24432, 756, 24907, 14913, -15526, -24680, 0,
+	24680, 15526, -14912, -24907, -756, 24431, 16126, -14287,
+	-25114, -1511, 24162, 16712, -13649, -25299, -2266, 23873,
+	17284, -12999, -25462, -3018, 23563, 17842, -12339, -25605,
+	-3768, 23234, 18384, -11668, -25725, -4514, 22885, 18911,
+	-10987, -25824, -5257, 22516, 19422, -10297, -25901, -5996,
+	22128, 19917, -9599, -25956, -6729, 21722, 20394, -8892,
+	-25989, -7457, 21297, 20855, -8178, -26000, -8178, 20855,
+	21298, -7456, -25988, -8892, 20394, 21722, -6729, -25956,
+	-9599, 19917, 22129, -5995, -25901, -10298, 19422, 22516,
+	-5257, -25824, -10988, 18911, 22885, -4514, -25725, -11668},
+	{
+// Carrier 37 Phase 2
+	26000, 8178, -20855, -21297, 7456, 25989, 8892, -20394,
+	-21722, 6729, 25956, 9599, -19917, -22129, 5995, 25901,
+	10298, -19422, -22516, 5257, 25824, 10988, -18911, -22885,
+	4514, 25725, 11668, -18384, -23234, 3768, 25604, 12339,
+	-17842, -23564, 3018, 25462, 13000, -17284, -23873, 2266,
+	25299, 13649, -16712, -24163, 1511, 25114, 14287, -16126,
+	-24432, 756, 24907, 14913, -15526, -24680, 0, 24680,
+	15526, -14912, -24907, -756, 24431, 16126, -14287, -25114,
+	-1511, 24163, 16712, -13649, -25299, -2266, 23873, 17284,
+	-12999, -25462, -3018, 23563, 17842, -12339, -25605, -3768,
+	23234, 18384, -11668, -25725, -4514, 22885, 18911, -10988,
+	-25824, -5257, 22516, 19422, -10297, -25901, -5996, 22128,
+	19917, -9599, -25956, -6729, 21722, 20394, -8892, -25989,
+	-7456, 21297, 20855, -8178, -26000, -8178, 20855, 21298,
+	-7456, -25988, -8892, 20394, 21722, -6729, -25956, -9599,
+	19917, 22129, -5995, -25901, -10298, 19422, 22516, -5257,
+	-25824, -10988, 18911, 22885, -4514, -25725, -11668, 18384,
+	23234, -3768, -25604, -12339, 17842, 23564, -3018, -25462,
+	-13000, 17284, 23873, -2265, -25299, -13649, 16712, 24163,
+	-1511, -25114, -14287, 16126, 24432, -756, -24907, -14913,
+	15526, 24680, 0, -24680, -15526, 14912, 24907, 756,
+	-24431, -16126, 14287, 25114, 1511, -24162, -16712, 13649,
+	25299, 2266, -23873, -17284, 12999, 25462, 3018, -23563,
+	-17842, 12339, 25605, 3768, -23234, -18384, 11668, 25725,
+	4515, -22885, -18911, 10987, 25824, 5257, -22516, -19422,
+	10297, 25901, 5996, -22128, -19917, 9599, 25956, 6729,
+	-21722, -20394, 8892, 25989, 7457, -21297, -20855, 8177},
+	{
+// Carrier 37 Phase 3
+	18384, -11668, -25725, -4514, 22885, 18911, -10988, -25824,
+	-5257, 22516, 19422, -10298, -25901, -5996, 22129, 19917,
+	-9599, -25956, -6729, 21722, 20394, -8892, -25989, -7456,
+	21297, 20855, -8178, -26000, -8178, 20855, 21297, -7456,
+	-25989, -8892, 20394, 21722, -6729, -25956, -9599, 19917,
+	22129, -5995, -25901, -10298, 19422, 22516, -5257, -25824,
+	-10988, 18911, 22885, -4514, -25725, -11668, 18384, 23234,
+	-3768, -25604, -12339, 17842, 23564, -3018, -25462, -13000,
+	17284, 23873, -2265, -25299, -13649, 16712, 24163, -1511,
+	-25114, -14287, 16126, 24432, -756, -24907, -14913, 15526,
+	24680, 0, -24680, -15526, 14912, 24907, 756, -24431,
+	-16126, 14287, 25114, 1511, -24163, -16712, 13649, 25299,
+	2266, -23873, -17284, 12999, 25462, 3018, -23563, -17842,
+	12339, 25605, 3768, -23234, -18384, 11668, 25725, 4514,
+	-22885, -18911, 10987, 25824, 5257, -22516, -19422, 10297,
+	25901, 5996, -22128, -19917, 9599, 25956, 6729, -21722,
+	-20394, 8892, 25989, 7456, -21297, -20855, 8178, 26000,
+	8178, -20855, -21298, 7456, 25988, 8892, -20394, -21722,
+	6729, 25956, 9599, -19917, -22129, 5995, 25901, 10298,
+	-19422, -22516, 5257, 25824, 10988, -18911, -22885, 4514,
+	25725, 11668, -18384, -23234, 3768, 25604, 12339, -17842,
+	-23564, 3018, 25462, 13000, -17284, -23873, 2265, 25299,
+	13649, -16712, -24163, 1511, 25114, 14287, -16126, -24432,
+	756, 24907, 14913, -15526, -24680, 0, 24680, 15526,
+	-14912, -24907, -756, 24431, 16126, -14287, -25114, -1511,
+	24162, 16712, -13649, -25299, -2266, 23873, 17284, -12999,
+	-25462, -3018, 23563, 17842, -12339, -25605, -3768, 23234},
+	},{{
+
+// Carrier 38 Phase 0
+	0, 24907, 14287, -16712, -23873, 3018, 25605, 11668,
+	-18911, -22516, 5996, 25956, 8892, -20855, -20855, 8892,
+	25956, 5995, -22516, -18911, 11668, 25604, 3018, -23873,
+	-16712, 14287, 24907, 0, -24907, -14287, 16712, 23873,
+	-3018, -25605, -11668, 18911, 22516, -5996, -25956, -8892,
+	20855, 20855, -8892, -25956, -5995, 22516, 18911, -11668,
+	-25604, -3018, 23873, 16712, -14287, -24907, 0, 24907,
+	14287, -16712, -23873, 3018, 25605, 11668, -18911, -22516,
+	5996, 25956, 8892, -20855, -20855, 8892, 25955, 5995,
+	-22516, -18911, 11668, 25604, 3018, -23873, -16712, 14287,
+	24907, 0, -24907, -14287, 16712, 23873, -3018, -25605,
+	-11668, 18911, 22516, -5996, -25956, -8892, 20855, 20855,
+	-8892, -25955, -5995, 22516, 18911, -11669, -25604, -3018,
+	23873, 16712, -14287, -24907, 0, 24907, 14286, -16712,
+	-23873, 3018, 25605, 11668, -18911, -22516, 5996, 25956,
+	8892, -20855, -20854, 8892, 25955, 5995, -22516, -18911,
+	11669, 25604, 3018, -23873, -16712, 14287, 24907, 0,
+	-24907, -14286, 16712, 23873, -3018, -25605, -11668, 18912,
+	22516, -5996, -25956, -8892, 20855, 20854, -8892, -25955,
+	-5995, 22516, 18911, -11669, -25604, -3017, 23873, 16712,
+	-14287, -24907, 0, 24907, 14286, -16712, -23873, 3018,
+	25605, 11668, -18912, -22516, 5996, 25956, 8892, -20855,
+	-20854, 8893, 25955, 5995, -22516, -18911, 11669, 25604,
+	3017, -23873, -16712, 14287, 24907, 0, -24907, -14286,
+	16712, 23873, -3019, -25605, -11668, 18912, 22516, -5996,
+	-25956, -8891, 20855, 20854, -8893, -25955, -5995, 22516,
+	18911, -11669, -25604, -3017, 23873, 16711, -14287, -24907},
+	{
+// Carrier 38 Phase 1
+	18384, 22885, -5257, -25901, -9599, 20394, 21297, -8178,
+	-25989, -6729, 22129, 19422, -10988, -25725, -3768, 23564,
+	17284, -13649, -25114, -756, 24680, 14912, -16126, -24163,
+	2266, 25462, 12339, -18384, -22885, 5257, 25901, 9599,
+	-20394, -21297, 8178, 25988, 6729, -22129, -19422, 10988,
+	25725, 3768, -23564, -17284, 13649, 25114, 756, -24680,
+	-14912, 16126, 24162, -2266, -25462, -12339, 18384, 22885,
+	-5257, -25901, -9599, 20394, 21297, -8178, -25988, -6729,
+	22129, 19422, -10988, -25725, -3768, 23564, 17284, -13649,
+	-25114, -755, 24680, 14912, -16126, -24162, 2266, 25462,
+	12339, -18384, -22885, 5257, 25901, 9599, -20394, -21297,
+	8178, 25988, 6729, -22129, -19422, 10988, 25725, 3767,
+	-23564, -17284, 13649, 25113, 755, -24680, -14912, 16126,
+	24162, -2266, -25462, -12339, 18385, 22885, -5257, -25901,
+	-9599, 20395, 21297, -8178, -25988, -6728, 22129, 19422,
+	-10988, -25725, -3767, 23564, 17284, -13649, -25113, -755,
+	24680, 14912, -16126, -24162, 2266, 25462, 12339, -18385,
+	-22885, 5258, 25901, 9598, -20395, -21297, 8178, 25988,
+	6728, -22129, -19422, 10988, 25725, 3767, -23564, -17284,
+	13649, 25113, 755, -24680, -14912, 16126, 24162, -2266,
+	-25462, -12339, 18385, 22884, -5258, -25901, -9598, 20395,
+	21297, -8178, -25988, -6728, 22129, 19422, -10988, -25725,
+	-3767, 23564, 17284, -13649, -25113, -755, 24680, 14912,
+	-16126, -24162, 2266, 25462, 12339, -18385, -22884, 5258,
+	25901, 9598, -20395, -21297, 8178, 25988, 6728, -22129,
+	-19422, 10988, 25725, 3767, -23564, -17284, 13649, 25113,
+	755, -24680, -14912, 16126, 24162, -2266, -25462, -12339},
+	{
+// Carrier 38 Phase 2
+	26000, 7456, -21722, -19917, 10298, 25824, 4514, -23234,
+	-17842, 13000, 25299, 1511, -24432, -15526, 15526, 24431,
+	-1511, -25299, -12999, 17842, 23234, -4514, -25824, -10298,
+	19917, 21722, -7456, -26000, -7456, 21722, 19917, -10298,
+	-25824, -4514, 23234, 17842, -13000, -25299, -1511, 24432,
+	15526, -15526, -24431, 1511, 25299, 12999, -17842, -23234,
+	4514, 25824, 10297, -19917, -21722, 7457, 26000, 7456,
+	-21722, -19917, 10298, 25824, 4514, -23234, -17842, 13000,
+	25299, 1511, -24432, -15525, 15526, 24431, -1511, -25299,
+	-12999, 17842, 23234, -4515, -25824, -10297, 19917, 21722,
+	-7457, -26000, -7456, 21722, 19916, -10298, -25824, -4514,
+	23234, 17842, -13000, -25299, -1511, 24432, 15525, -15526,
+	-24431, 1512, 25299, 12999, -17842, -23234, 4515, 25824,
+	10297, -19917, -21722, 7457, 26000, 7456, -21722, -19916,
+	10298, 25824, 4514, -23234, -17842, 13000, 25299, 1511,
+	-24432, -15525, 15526, 24431, -1512, -25299, -12999, 17842,
+	23234, -4515, -25824, -10297, 19917, 21722, -7457, -26000,
+	-7456, 21722, 19916, -10298, -25824, -4514, 23234, 17841,
+	-13000, -25299, -1511, 24432, 15525, -15526, -24431, 1512,
+	25299, 12999, -17842, -23234, 4515, 25824, 10297, -19917,
+	-21722, 7457, 26000, 7456, -21722, -19916, 10298, 25824,
+	4514, -23234, -17841, 13000, 25299, 1511, -24432, -15525,
+	15526, 24431, -1512, -25299, -12999, 17842, 23234, -4515,
+	-25824, -10297, 19917, 21722, -7457, -26000, -7456, 21723,
+	19916, -10298, -25824, -4514, 23234, 17841, -13000, -25299,
+	-1511, 24432, 15525, -15526, -24431, 1512, 25299, 12999,
+	-17842, -23234, 4515, 25824, 10297, -19917, -21722, 7457},
+	{
+// Carrier 38 Phase 3
+	18384, -12339, -25462, -2266, 24163, 16126, -14913, -24680,
+	756, 25114, 13649, -17284, -23563, 3768, 25725, 10988,
+	-19422, -22129, 6729, 25989, 8178, -21297, -20394, 9599,
+	25901, 5257, -22885, -18384, 12339, 25462, 2265, -24163,
+	-16126, 14913, 24680, -756, -25114, -13649, 17284, 23563,
+	-3768, -25725, -10987, 19422, 22128, -6729, -25989, -8178,
+	21298, 20394, -9599, -25901, -5257, 22885, 18384, -12339,
+	-25462, -2265, 24163, 16125, -14913, -24680, 756, 25114,
+	13649, -17284, -23563, 3768, 25725, 10987, -19422, -22128,
+	6729, 25989, 8177, -21298, -20394, 9599, 25901, 5257,
+	-22885, -18384, 12339, 25462, 2265, -24163, -16125, 14913,
+	24680, -756, -25114, -13649, 17284, 23563, -3768, -25725,
+	-10987, 19422, 22128, -6729, -25989, -8177, 21298, 20394,
+	-9599, -25901, -5257, 22885, 18384, -12339, -25462, -2265,
+	24163, 16125, -14913, -24680, 756, 25114, 13649, -17284,
+	-23563, 3768, 25725, 10987, -19422, -22128, 6729, 25989,
+	8177, -21298, -20394, 9599, 25901, 5257, -22885, -18384,
+	12339, 25462, 2265, -24163, -16125, 14913, 24680, -756,
+	-25114, -13648, 17285, 23563, -3768, -25725, -10987, 19422,
+	22128, -6729, -25989, -8177, 21298, 20394, -9599, -25901,
+	-5257, 22885, 18384, -12340, -25462, -2265, 24163, 16125,
+	-14913, -24680, 756, 25114, 13648, -17285, -23563, 3768,
+	25725, 10987, -19423, -22128, 6729, 25989, 8177, -21298,
+	-20394, 9599, 25901, 5257, -22885, -18384, 12340, 25462,
+	2265, -24163, -16125, 14913, 24680, -756, -25114, -13648,
+	17285, 23563, -3768, -25725, -10987, 19423, 22128, -6729,
+	-25989, -8177, 21298, 20394, -9599, -25901, -5256, 22885},
+	},{{
+
+// Carrier 39 Phase 0
+	0, 25114, 13000, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25114,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6729,
+	-22516, -18384, 13000, 25114, 0, -25114, -12999, 18384,
+	22516, -6729, -26000, -6729, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18384, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18385, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113,
+	0, 25114, 12999, -18385, -22516, 6729, 26000, 6728,
+	-22516, -18384, 13000, 25113, 0, -25114, -12999, 18385,
+	22516, -6729, -26000, -6728, 22516, 18384, -13000, -25113},
+	{
+// Carrier 39 Phase 1
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25114, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25114, 0, 25114, 12999, -18384, -22516, 6729, 26000,
+	6729, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18384, 22516, -6729, -26000, -6729, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18385, 22516, -6729, -26000, -6728, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999,
+	18385, 22516, -6729, -26000, -6728, 22516, 18384, -13000,
+	-25113, 0, 25114, 12999, -18385, -22516, 6729, 26000,
+	6728, -22516, -18384, 13000, 25113, 0, -25114, -12999},
+	{
+// Carrier 39 Phase 2
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25114, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6729, -22516, -18384, 13000, 25114, 0, -25114,
+	-12999, 18384, 22516, -6729, -26000, -6729, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18384, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729,
+	26000, 6728, -22516, -18384, 13000, 25113, 0, -25114,
+	-12999, 18385, 22516, -6729, -26000, -6728, 22516, 18384,
+	-13000, -25113, 0, 25114, 12999, -18385, -22516, 6729},
+	{
+// Carrier 39 Phase 3
+	18384, -12999, -25114, 0, 25114, 13000, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25114, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6729, -22516, -18384, 13000, 25114, 0,
+	-25114, -12999, 18384, 22516, -6729, -26000, -6729, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18384, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18385, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516,
+	18384, -13000, -25113, 0, 25114, 12999, -18385, -22516,
+	6729, 26000, 6728, -22516, -18384, 13000, 25113, 0,
+	-25114, -12999, 18385, 22516, -6729, -26000, -6728, 22516},
+	},{{
+
+// Carrier 40 Phase 0
+	0, 25299, 11668, -19917, -20855, 10298, 25605, 1511,
+	-24907, -12999, 18911, 21722, -8892, -25824, -3018, 24432,
+	14287, -17842, -22516, 7456, 25956, 4514, -23873, -15526,
+	16712, 23234, -5996, -26000, -5996, 23234, 16712, -15526,
+	-23873, 4514, 25956, 7456, -22516, -17842, 14287, 24432,
+	-3018, -25824, -8892, 21722, 18911, -13000, -24907, 1511,
+	25605, 10298, -20855, -19917, 11668, 25299, 0, -25299,
+	-11668, 19917, 20855, -10298, -25604, -1511, 24907, 12999,
+	-18911, -21722, 8892, 25824, 3018, -24432, -14287, 17842,
+	22516, -7456, -25956, -4514, 23873, 15526, -16712, -23234,
+	5996, 26000, 5996, -23234, -16712, 15526, 23873, -4514,
+	-25956, -7456, 22516, 17842, -14287, -24432, 3018, 25824,
+	8892, -21722, -18911, 13000, 24907, -1511, -25605, -10298,
+	20855, 19917, -11668, -25299, 0, 25299, 11668, -19917,
+	-20855, 10298, 25604, 1511, -24907, -12999, 18911, 21722,
+	-8892, -25824, -3018, 24432, 14287, -17842, -22516, 7456,
+	25956, 4514, -23873, -15526, 16712, 23234, -5996, -26000,
+	-5995, 23234, 16712, -15526, -23873, 4514, 25956, 7456,
+	-22516, -17842, 14287, 24431, -3018, -25824, -8892, 21722,
+	18911, -13000, -24907, 1511, 25605, 10298, -20855, -19917,
+	11668, 25299, 0, -25299, -11668, 19917, 20855, -10298,
+	-25604, -1511, 24907, 12999, -18911, -21722, 8892, 25824,
+	3018, -24432, -14287, 17842, 22516, -7456, -25956, -4514,
+	23873, 15526, -16712, -23234, 5996, 26000, 5995, -23234,
+	-16712, 15526, 23873, -4514, -25956, -7456, 22516, 17842,
+	-14287, -24431, 3018, 25824, 8892, -21722, -18911, 13000,
+	24907, -1511, -25605, -10298, 20855, 19917, -11668, -25299},
+	{
+// Carrier 40 Phase 1
+	18384, 22129, -8178, -25901, -3768, 24163, 14912, -17284,
+	-22885, 6729, 25989, 5257, -23564, -16126, 16126, 23564,
+	-5257, -25989, -6729, 22885, 17284, -14912, -24163, 3768,
+	25901, 8178, -22129, -18384, 13649, 24680, -2266, -25725,
+	-9599, 21297, 19422, -12339, -25114, 756, 25462, 10988,
+	-20394, -20394, 10988, 25462, 756, -25114, -12339, 19422,
+	21297, -9599, -25725, -2266, 24680, 13649, -18384, -22129,
+	8178, 25901, 3768, -24163, -14912, 17284, 22885, -6729,
+	-25989, -5257, 23564, 16126, -16126, -23564, 5257, 25989,
+	6729, -22885, -17284, 14912, 24163, -3768, -25901, -8178,
+	22129, 18384, -13649, -24680, 2266, 25725, 9599, -21297,
+	-19422, 12339, 25114, -756, -25462, -10988, 20394, 20394,
+	-10988, -25462, -756, 25114, 12339, -19422, -21297, 9599,
+	25725, 2266, -24680, -13649, 18384, 22129, -8178, -25901,
+	-3768, 24163, 14912, -17284, -22885, 6729, 25989, 5257,
+	-23564, -16126, 16126, 23563, -5257, -25989, -6729, 22885,
+	17284, -14912, -24163, 3768, 25901, 8178, -22129, -18384,
+	13649, 24680, -2266, -25725, -9599, 21297, 19422, -12339,
+	-25114, 756, 25462, 10988, -20394, -20394, 10988, 25462,
+	756, -25114, -12339, 19422, 21297, -9599, -25725, -2266,
+	24680, 13649, -18384, -22129, 8178, 25901, 3768, -24163,
+	-14912, 17284, 22885, -6729, -25989, -5257, 23564, 16126,
+	-16126, -23563, 5257, 25989, 6729, -22885, -17284, 14913,
+	24163, -3768, -25901, -8178, 22129, 18384, -13649, -24680,
+	2266, 25725, 9599, -21297, -19422, 12339, 25114, -756,
+	-25462, -10988, 20394, 20394, -10988, -25462, -756, 25114,
+	12339, -19422, -21297, 9599, 25725, 2266, -24680, -13649},
+	{
+// Carrier 40 Phase 2
+	26000, 5996, -23234, -16712, 15526, 23873, -4514, -25956,
+	-7456, 22516, 17842, -14287, -24432, 3018, 25824, 8892,
+	-21722, -18911, 13000, 24907, -1511, -25605, -10298, 20855,
+	19917, -11668, -25299, 0, 25299, 11668, -19917, -20855,
+	10298, 25604, 1511, -24907, -12999, 18911, 21722, -8892,
+	-25824, -3018, 24432, 14287, -17842, -22516, 7456, 25956,
+	4514, -23873, -15526, 16712, 23234, -5996, -26000, -5996,
+	23234, 16712, -15526, -23873, 4514, 25956, 7456, -22516,
+	-17842, 14287, 24432, -3018, -25824, -8892, 21722, 18911,
+	-13000, -24907, 1511, 25605, 10298, -20855, -19917, 11668,
+	25299, 0, -25299, -11668, 19917, 20855, -10298, -25604,
+	-1511, 24907, 12999, -18911, -21722, 8892, 25824, 3018,
+	-24432, -14287, 17842, 22516, -7456, -25956, -4514, 23873,
+	15526, -16712, -23234, 5996, 26000, 5995, -23234, -16712,
+	15526, 23873, -4514, -25956, -7456, 22516, 17842, -14287,
+	-24432, 3018, 25824, 8892, -21722, -18911, 13000, 24907,
+	-1511, -25605, -10298, 20855, 19917, -11668, -25299, 0,
+	25299, 11668, -19917, -20855, 10298, 25604, 1511, -24907,
+	-12999, 18911, 21722, -8892, -25824, -3018, 24432, 14287,
+	-17842, -22516, 7456, 25956, 4514, -23873, -15526, 16712,
+	23234, -5996, -26000, -5995, 23234, 16712, -15526, -23873,
+	4514, 25956, 7456, -22516, -17842, 14287, 24431, -3018,
+	-25824, -8892, 21722, 18911, -13000, -24907, 1511, 25605,
+	10298, -20855, -19917, 11668, 25299, 0, -25299, -11668,
+	19917, 20855, -10298, -25604, -1511, 24907, 12999, -18911,
+	-21722, 8892, 25824, 3018, -24432, -14287, 17842, 22516,
+	-7456, -25956, -4514, 23873, 15526, -16712, -23234, 5996},
+	{
+// Carrier 40 Phase 3
+	18384, -13649, -24680, 2266, 25725, 9599, -21297, -19422,
+	12339, 25114, -756, -25462, -10988, 20394, 20394, -10988,
+	-25462, -756, 25114, 12339, -19422, -21297, 9599, 25725,
+	2266, -24680, -13649, 18384, 22129, -8178, -25901, -3768,
+	24163, 14912, -17284, -22885, 6729, 25989, 5257, -23564,
+	-16126, 16126, 23564, -5257, -25989, -6729, 22885, 17284,
+	-14912, -24163, 3768, 25901, 8178, -22129, -18384, 13649,
+	24680, -2266, -25725, -9599, 21297, 19422, -12339, -25114,
+	756, 25462, 10988, -20394, -20394, 10988, 25462, 756,
+	-25114, -12339, 19422, 21297, -9599, -25725, -2266, 24680,
+	13649, -18384, -22129, 8178, 25901, 3768, -24163, -14912,
+	17284, 22885, -6729, -25989, -5257, 23564, 16126, -16126,
+	-23564, 5257, 25989, 6729, -22885, -17284, 14912, 24163,
+	-3768, -25901, -8178, 22129, 18384, -13649, -24680, 2266,
+	25725, 9599, -21297, -19422, 12339, 25114, -756, -25462,
+	-10988, 20394, 20394, -10988, -25462, -756, 25114, 12339,
+	-19422, -21297, 9599, 25725, 2266, -24680, -13649, 18384,
+	22129, -8178, -25901, -3768, 24163, 14912, -17284, -22885,
+	6729, 25989, 5257, -23564, -16126, 16126, 23563, -5257,
+	-25989, -6729, 22885, 17284, -14912, -24163, 3768, 25901,
+	8178, -22129, -18384, 13649, 24680, -2266, -25725, -9599,
+	21297, 19422, -12339, -25114, 756, 25462, 10988, -20394,
+	-20394, 10988, 25462, 756, -25114, -12339, 19422, 21297,
+	-9599, -25725, -2266, 24680, 13649, -18384, -22129, 8178,
+	25901, 3768, -24163, -14912, 17284, 22885, -6729, -25989,
+	-5257, 23564, 16126, -16126, -23563, 5257, 25989, 6729,
+	-22885, -17284, 14913, 24163, -3768, -25901, -8178, 22129},
+	},{{
+
+// Carrier 41 Phase 0
+	0, 25462, 10298, -21297, -18911, 13649, 24432, -3768,
+	-25956, -6729, 23234, 16126, -16712, -22885, 7456, 25901,
+	3018, -24680, -12999, 19422, 20855, -10988, -25299, 756,
+	25605, 9599, -21722, -18384, 14287, 24163, -4514, -25989,
+	-5995, 23564, 15526, -17284, -22516, 8178, 25824, 2266,
+	-24907, -12339, 19917, 20394, -11668, -25114, 1511, 25725,
+	8892, -22129, -17842, 14913, 23873, -5257, -26000, -5257,
+	23873, 14912, -17842, -22129, 8892, 25725, 1511, -25114,
+	-11668, 20394, 19917, -12339, -24907, 2266, 25824, 8178,
+	-22516, -17284, 15526, 23563, -5996, -25988, -4514, 24163,
+	14287, -18384, -21722, 9599, 25604, 756, -25299, -10987,
+	20855, 19422, -13000, -24680, 3018, 25901, 7456, -22885,
+	-16712, 16126, 23234, -6729, -25956, -3768, 24432, 13649,
+	-18911, -21297, 10298, 25462, 0, -25462, -10297, 21298,
+	18911, -13649, -24431, 3768, 25956, 6729, -23234, -16125,
+	16712, 22885, -7457, -25901, -3018, 24680, 12999, -19422,
+	-20855, 10988, 25299, -756, -25605, -9599, 21722, 18384,
+	-14287, -24162, 4515, 25989, 5995, -23564, -15525, 17284,
+	22516, -8178, -25824, -2265, 24907, 12339, -19917, -20394,
+	11668, 25114, -1511, -25725, -8892, 22129, 17842, -14913,
+	-23873, 5257, 26000, 5257, -23873, -14912, 17842, 22128,
+	-8892, -25725, -1511, 25114, 11668, -20394, -19916, 12339,
+	24907, -2266, -25824, -8177, 22516, 17284, -15526, -23563,
+	5996, 25988, 4514, -24163, -14286, 18384, 21722, -9599,
+	-25604, -755, 25299, 10987, -20855, -19422, 13000, 24680,
+	-3018, -25901, -7456, 22885, 16712, -16126, -23234, 6729,
+	25955, 3767, -24432, -13649, 18911, 21297, -10298, -25462},
+	{
+// Carrier 41 Phase 1
+	18384, 21722, -9599, -25605, -756, 25299, 10988, -20855,
+	-19422, 13000, 24680, -3018, -25901, -7456, 22885, 16712,
+	-16126, -23234, 6729, 25956, 3768, -24432, -13649, 18911,
+	21297, -10298, -25462, 0, 25462, 10298, -21297, -18911,
+	13649, 24431, -3768, -25956, -6729, 23234, 16126, -16712,
+	-22885, 7456, 25901, 3018, -24680, -12999, 19422, 20855,
+	-10988, -25299, 756, 25605, 9599, -21722, -18384, 14287,
+	24163, -4514, -25989, -5995, 23564, 15526, -17284, -22516,
+	8178, 25824, 2265, -24907, -12339, 19917, 20394, -11668,
+	-25114, 1511, 25725, 8892, -22129, -17842, 14913, 23873,
+	-5257, -26000, -5257, 23873, 14912, -17842, -22128, 8892,
+	25725, 1511, -25114, -11668, 20394, 19917, -12339, -24907,
+	2266, 25824, 8178, -22516, -17284, 15526, 23563, -5996,
+	-25988, -4514, 24163, 14287, -18384, -21722, 9599, 25604,
+	756, -25299, -10987, 20855, 19422, -13000, -24680, 3018,
+	25901, 7456, -22885, -16712, 16126, 23234, -6729, -25956,
+	-3768, 24432, 13649, -18911, -21297, 10298, 25462, 0,
+	-25462, -10297, 21298, 18911, -13649, -24431, 3768, 25956,
+	6729, -23234, -16125, 16712, 22885, -7457, -25901, -3018,
+	24680, 12999, -19422, -20855, 10988, 25299, -756, -25605,
+	-9599, 21722, 18384, -14287, -24162, 4515, 25989, 5995,
+	-23564, -15525, 17284, 22516, -8178, -25824, -2265, 24907,
+	12339, -19917, -20394, 11669, 25113, -1512, -25725, -8892,
+	22129, 17842, -14913, -23873, 5257, 26000, 5257, -23873,
+	-14912, 17842, 22128, -8892, -25725, -1511, 25114, 11668,
+	-20395, -19916, 12339, 24907, -2266, -25824, -8177, 22516,
+	17284, -15526, -23563, 5996, 25988, 4514, -24163, -14286},
+	{
+// Carrier 41 Phase 2
+	26000, 5257, -23873, -14912, 17842, 22129, -8892, -25725,
+	-1511, 25114, 11668, -20394, -19917, 12339, 24907, -2266,
+	-25824, -8178, 22516, 17284, -15526, -23563, 5996, 25989,
+	4514, -24163, -14287, 18384, 21722, -9599, -25604, -756,
+	25299, 10988, -20855, -19422, 13000, 24680, -3018, -25901,
+	-7456, 22885, 16712, -16126, -23234, 6729, 25956, 3768,
+	-24432, -13649, 18911, 21297, -10298, -25462, 0, 25462,
+	10297, -21298, -18911, 13649, 24431, -3768, -25956, -6729,
+	23234, 16126, -16712, -22885, 7456, 25901, 3018, -24680,
+	-12999, 19422, 20855, -10988, -25299, 756, 25605, 9599,
+	-21722, -18384, 14287, 24162, -4514, -25989, -5995, 23564,
+	15526, -17284, -22516, 8178, 25824, 2265, -24907, -12339,
+	19917, 20394, -11668, -25114, 1511, 25725, 8892, -22129,
+	-17842, 14913, 23873, -5257, -26000, -5257, 23873, 14912,
+	-17842, -22128, 8892, 25725, 1511, -25114, -11668, 20394,
+	19917, -12339, -24907, 2266, 25824, 8177, -22516, -17284,
+	15526, 23563, -5996, -25988, -4514, 24163, 14287, -18384,
+	-21722, 9599, 25604, 755, -25299, -10987, 20855, 19422,
+	-13000, -24680, 3018, 25901, 7456, -22885, -16712, 16126,
+	23234, -6729, -25955, -3767, 24432, 13649, -18911, -21297,
+	10298, 25462, 0, -25462, -10297, 21298, 18911, -13649,
+	-24431, 3768, 25956, 6729, -23234, -16125, 16712, 22885,
+	-7457, -25901, -3018, 24680, 12999, -19422, -20855, 10988,
+	25299, -756, -25605, -9599, 21722, 18384, -14287, -24162,
+	4515, 25989, 5995, -23564, -15525, 17284, 22516, -8178,
+	-25824, -2265, 24907, 12339, -19917, -20394, 11669, 25113,
+	-1512, -25725, -8892, 22129, 17842, -14913, -23873, 5257},
+	{
+// Carrier 41 Phase 3
+	18384, -14287, -24163, 4514, 25989, 5996, -23564, -15526,
+	17284, 22516, -8178, -25824, -2266, 24907, 12339, -19917,
+	-20394, 11668, 25114, -1511, -25725, -8892, 22129, 17842,
+	-14913, -23873, 5257, 26000, 5257, -23873, -14912, 17842,
+	22129, -8892, -25725, -1511, 25114, 11668, -20394, -19917,
+	12339, 24907, -2266, -25824, -8178, 22516, 17284, -15526,
+	-23563, 5996, 25988, 4514, -24163, -14287, 18384, 21722,
+	-9599, -25604, -756, 25299, 10987, -20855, -19422, 13000,
+	24680, -3018, -25901, -7456, 22885, 16712, -16126, -23234,
+	6729, 25956, 3768, -24432, -13649, 18911, 21297, -10298,
+	-25462, 0, 25462, 10297, -21298, -18911, 13649, 24431,
+	-3768, -25956, -6729, 23234, 16126, -16712, -22885, 7457,
+	25901, 3018, -24680, -12999, 19422, 20855, -10988, -25299,
+	756, 25605, 9599, -21722, -18384, 14287, 24162, -4515,
+	-25989, -5995, 23564, 15525, -17284, -22516, 8178, 25824,
+	2265, -24907, -12339, 19917, 20394, -11668, -25114, 1511,
+	25725, 8892, -22129, -17842, 14913, 23873, -5257, -26000,
+	-5257, 23873, 14912, -17842, -22128, 8892, 25725, 1511,
+	-25114, -11668, 20394, 19917, -12339, -24907, 2266, 25824,
+	8177, -22516, -17284, 15526, 23563, -5996, -25988, -4514,
+	24163, 14287, -18384, -21722, 9599, 25604, 755, -25299,
+	-10987, 20855, 19422, -13000, -24680, 3018, 25901, 7456,
+	-22885, -16712, 16126, 23234, -6729, -25955, -3767, 24432,
+	13649, -18911, -21297, 10298, 25462, 0, -25462, -10297,
+	21298, 18911, -13649, -24431, 3768, 25956, 6728, -23234,
+	-16125, 16712, 22885, -7457, -25901, -3018, 24680, 12999,
+	-19422, -20855, 10988, 25299, -756, -25605, -9599, 21722},
+	},{{
+
+// Carrier 42 Phase 0
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605,
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605,
+	0, 25605, 8892, -22516, -16712, 16712, 22516, -8892,
+	-25605, 0, 25605, 8892, -22516, -16712, 16712, 22516,
+	-8892, -25605, 0, 25605, 8892, -22516, -16712, 16712,
+	22516, -8892, -25605, 0, 25605, 8892, -22516, -16712,
+	16712, 22516, -8892, -25605, 0, 25605, 8892, -22516,
+	-16712, 16712, 22516, -8892, -25605, 0, 25605, 8892,
+	-22516, -16712, 16712, 22516, -8892, -25605, 0, 25605,
+	8892, -22516, -16712, 16712, 22516, -8892, -25605, 0,
+	25605, 8892, -22516, -16712, 16712, 22516, -8892, -25605},
+	{
+// Carrier 42 Phase 1
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912,
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912,
+	18384, 21297, -10988, -25114, 2266, 25901, 6729, -23564,
+	-14912, 18384, 21297, -10988, -25114, 2266, 25901, 6729,
+	-23564, -14912, 18384, 21297, -10988, -25114, 2266, 25901,
+	6729, -23564, -14912, 18384, 21297, -10988, -25114, 2266,
+	25901, 6729, -23564, -14912, 18384, 21297, -10988, -25114,
+	2266, 25901, 6729, -23564, -14912, 18384, 21297, -10988,
+	-25114, 2266, 25901, 6729, -23564, -14912, 18384, 21297,
+	-10988, -25114, 2266, 25901, 6729, -23564, -14912, 18384,
+	21297, -10988, -25114, 2266, 25901, 6729, -23564, -14912},
+	{
+// Carrier 42 Phase 2
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514,
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514,
+	26000, 4514, -24432, -13000, 19917, 19917, -12999, -24432,
+	4514, 26000, 4514, -24432, -13000, 19917, 19917, -12999,
+	-24432, 4514, 26000, 4514, -24432, -13000, 19917, 19917,
+	-12999, -24432, 4514, 26000, 4514, -24432, -13000, 19917,
+	19917, -12999, -24432, 4514, 26000, 4514, -24432, -13000,
+	19917, 19917, -12999, -24432, 4514, 26000, 4514, -24432,
+	-13000, 19917, 19917, -12999, -24432, 4514, 26000, 4514,
+	-24432, -13000, 19917, 19917, -12999, -24432, 4514, 26000,
+	4514, -24432, -13000, 19917, 19917, -12999, -24432, 4514},
+	{
+// Carrier 42 Phase 3
+	18384, -14912, -23564, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297,
+	18384, -14912, -23563, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297,
+	18384, -14912, -23563, 6729, 25901, 2266, -25114, -10988,
+	21297, 18384, -14912, -23563, 6729, 25901, 2266, -25114,
+	-10988, 21297, 18384, -14912, -23563, 6729, 25901, 2266,
+	-25114, -10988, 21297, 18384, -14912, -23563, 6729, 25901,
+	2266, -25114, -10988, 21297, 18384, -14912, -23563, 6729,
+	25901, 2266, -25114, -10988, 21297, 18384, -14912, -23563,
+	6729, 25901, 2266, -25114, -10988, 21297, 18384, -14912,
+	-23563, 6729, 25901, 2266, -25114, -10988, 21297, 18384,
+	-14912, -23563, 6729, 25901, 2266, -25114, -10988, 21297}}};
+*/
diff --git a/audio.c b/audio.c
new file mode 100644
index 0000000..991036c
--- /dev/null
+++ b/audio.c
@@ -0,0 +1,327 @@
+
+
+// 
+//    This file is part of Dire Wolf, an amateur radio packet TNC.
+//
+//    Copyright (C) 2011, 2012, 2013, 2014, 2015  John Langner, WB2OSZ
+//
+//    This program is free software: you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation, either version 2 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful,
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//    GNU General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+
+// I've extracted the OSS bits from Direwolf's audio.c for use in QtSoundModem
+
+
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <assert.h>
+
+#include <errno.h>
+#ifdef __OpenBSD__
+#include <soundcard.h>
+#else
+#include <sys/soundcard.h>
+#endif
+
+void Debugprintf(const char * format, ...);
+
+extern int Closing;
+
+int oss_fd = -1;	/* Single device, both directions. */
+
+int insize = 0;
+short rxbuffer[2400];		// 1200 stereo samples
+
+int num_channels = 2;		/* Should be 1 for mono or 2 for stereo. */
+int samples_per_sec = 12000;	/* Audio sampling rate.  Typically 11025, 22050, or 44100. */
+int bits_per_sample = 16;	/* 8 (unsigned char) or 16 (signed short). */
+
+// Originally 40.  Version 1.2, try 10 for lower latency.
+
+#define ONE_BUF_TIME 10
+
+static int set_oss_params(int fd);
+
+#define roundup1k(n) (((n) + 0x3ff) & ~0x3ff)
+
+static int calcbufsize(int rate, int chans, int bits)
+{
+	int size1 = (rate * chans * bits / 8 * ONE_BUF_TIME) / 1000;
+	int size2 = roundup1k(size1);
+#if DEBUG
+	text_color_set(DW_COLOR_DEBUG);
+	printf("audio_open: calcbufsize (rate=%d, chans=%d, bits=%d) calc size=%d, round up to %d\n",
+		rate, chans, bits, size1, size2);
+#endif
+	return (size2);
+}
+
+
+int oss_audio_open(char * adevice_in, char * adevice_out)
+{
+	char audio_in_name[30];
+	char audio_out_name[30];
+
+	strcpy(audio_in_name, adevice_in);
+	strcpy(audio_out_name, adevice_out);
+
+	if (strcmp(audio_in_name, audio_out_name) == 0)
+	{
+		printf("Audio device for both receive and transmit: %s \n", audio_in_name);
+	}
+	else
+	{
+		printf("Audio input device for receive: %s\n", audio_in_name);
+		printf("Audio out device for transmit: %s\n", audio_out_name);
+	}
+
+	oss_fd = open(audio_in_name, O_RDWR);
+
+	if (oss_fd < 0)
+	{
+		printf("Could not open audio device %s\n", audio_in_name);
+		return 0;
+	}
+	else
+		printf("OSS fd = %d\n", oss_fd);
+
+	return set_oss_params(oss_fd);
+}
+
+
+static int set_oss_params(int fd)
+{
+	int err;
+	int devcaps;
+	int asked_for;
+	int ossbuf_size_in_bytes;
+	int frag = (5 << 16) | (11);
+
+	err = ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag);
+
+	if (err == -1)
+	{
+		perror("Not able to set fragment size");
+		//		ossbuf_size_in_bytes = 2048;	/* pick something reasonable */
+	}
+
+	err = ioctl(fd, SNDCTL_DSP_CHANNELS, &num_channels);
+	if (err == -1)
+	{
+		perror("Not able to set audio device number of channels");
+		return (0);
+	}
+
+	asked_for = samples_per_sec;
+
+	err = ioctl(fd, SNDCTL_DSP_SPEED, &samples_per_sec);
+	if (err == -1)
+	{
+
+		perror("Not able to set audio device sample rate");
+		return (0);
+	}
+
+	printf("Asked for %d samples/sec but actually using %d.\n", asked_for, samples_per_sec);
+
+
+	/* This is actually a bit mask but it happens that */
+	/* 0x8 is unsigned 8 bit samples and */
+	/* 0x10 is signed 16 bit little endian. */
+
+	err = ioctl(fd, SNDCTL_DSP_SETFMT, &bits_per_sample);
+
+	if (err == -1)
+	{
+		perror("Not able to set audio device sample size");
+		return (0);
+	}
+
+	/*
+	 * Determine capabilities.
+	 */
+	err = ioctl(fd, SNDCTL_DSP_GETCAPS, &devcaps);
+	if (err == -1)
+	{
+		perror("Not able to get audio device capabilities");
+		// Is this fatal? //	return (-1);
+	}
+
+
+
+	printf("audio_open(): devcaps = %08x\n", devcaps);
+	if (devcaps & DSP_CAP_DUPLEX) printf("Full duplex record/playback.\n");
+	if (devcaps & DSP_CAP_BATCH) printf("Device has some kind of internal buffers which may cause delays.\n");
+	if (devcaps & ~(DSP_CAP_DUPLEX | DSP_CAP_BATCH)) printf("Others...\n");
+
+	if (!(devcaps & DSP_CAP_DUPLEX))
+	{
+		printf("Audio device does not support full duplex\n");
+		// Do we care? //	return (-1);
+	}
+
+	err = ioctl(fd, SNDCTL_DSP_SETDUPLEX, NULL);
+	if (err == -1)
+	{
+		perror("Not able to set audio full duplex mode");
+		// Unfortunate but not a disaster.
+	}
+
+	/*
+	 * Get preferred block size.
+	 * Presumably this will provide the most efficient transfer.
+	 *
+	 * In my particular situation, this turned out to be
+	 *  	2816 for 11025 Hz 16 bit mono
+	 *	5568 for 11025 Hz 16 bit stereo
+	 *     11072 for 44100 Hz 16 bit mono
+	 *
+	 * This was long ago under different conditions.
+	 * Should study this again some day.
+	 *
+	 * Your milage may vary.
+	 */
+
+
+	err = ioctl(fd, SNDCTL_DSP_GETBLKSIZE, &ossbuf_size_in_bytes);
+	if (err == -1)
+	{
+		perror("Not able to get audio block size");
+		ossbuf_size_in_bytes = 2048;	/* pick something reasonable */
+	}
+
+	printf("audio_open(): suggestd block size is %d\n", ossbuf_size_in_bytes);
+
+	/*
+	 * That's 1/8 of a second which seems rather long if we want to
+	 * respond quickly.
+	 */
+
+	ossbuf_size_in_bytes = calcbufsize(samples_per_sec, num_channels, bits_per_sample);
+
+	printf("audio_open(): using block size of %d\n", ossbuf_size_in_bytes);
+
+	/* Version 1.3 - after a report of this situation for Mac OSX version. */
+	if (ossbuf_size_in_bytes < 256 || ossbuf_size_in_bytes > 32768)
+	{
+		printf("Audio buffer has unexpected extreme size of %d bytes.\n", ossbuf_size_in_bytes);
+		printf("Detected at %s, line %d.\n", __FILE__, __LINE__);
+		printf("This might be caused by unusual audio device configuration values.\n");
+		ossbuf_size_in_bytes = 2048;
+		printf("Using %d to attempt recovery.\n", ossbuf_size_in_bytes);
+	}
+	return (ossbuf_size_in_bytes);
+}
+
+
+
+
+
+int oss_read(short * samples, int nSamples)
+{
+	int n;
+	int nBytes = nSamples * 4;
+
+	if (oss_fd < 0)
+		return 0;
+
+	//	printf("audio_get(): read %d\n", nBytes - insize);
+
+	n = read(oss_fd, &rxbuffer[insize], nBytes - insize);
+
+	if (n < 0)
+	{
+		perror("Can't read from audio device");
+		insize = 0;
+
+		return (0);
+	}
+
+	insize += n;
+
+	if (n == nSamples * 4)
+	{
+		memcpy(samples, rxbuffer, insize);
+		insize = 0;
+		return nSamples;
+	}
+
+	return 0;
+}
+
+
+int oss_write(short * ptr, int len)
+{
+	int k;
+
+//	int delay;
+//	ioctl(oss_fd, SNDCTL_DSP_GETODELAY, &delay);
+//	Debugprintf("Delay %d", delay);
+
+	k = write(oss_fd, ptr, len * 4);
+
+//
+	if (k < 0)
+	{
+		perror("Can't write to audio device");
+		return (-1);
+	}
+	if (k < len * 4)
+	{
+		printf("oss_write(): write %d returns %d\n", len * 4, k);
+		/* presumably full but didn't block. */
+		usleep(10000);
+	}
+	ptr += k;
+	len -= k;
+
+	return 0;
+} 
+
+void oss_flush()
+{
+	int delay;
+
+	if (oss_fd < 0)
+	{
+		Debugprintf("OSS Flush Called when OSS closed");
+			return;
+	}
+
+	ioctl(oss_fd, SNDCTL_DSP_GETODELAY, &delay);
+	Debugprintf("OSS Flush Delay %d", delay);
+	
+	while (delay)
+	{
+		Sleep(10);
+		ioctl(oss_fd, SNDCTL_DSP_GETODELAY, &delay);
+//		Debugprintf("Flush Delay %d", delay);
+	}
+}
+
+void oss_audio_close(void)
+{
+	if (oss_fd > 0)
+	{
+		close(oss_fd);
+		oss_fd = -1;
+	}
+	return;
+}
+
diff --git a/ax25.c b/ax25.c
new file mode 100644
index 0000000..148a2dc
--- /dev/null
+++ b/ax25.c
@@ -0,0 +1,3261 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+#ifdef WIN32
+
+__declspec(dllimport) unsigned short __stdcall htons(__in unsigned short hostshort);
+__declspec(dllimport) unsigned short __stdcall ntohs(__in unsigned short hostshort);
+
+#else
+
+#define strtok_s strtok_r
+#include <stddef.h>
+#endif 
+
+void decode_frame(Byte * frame, int len, Byte * path, string * data,
+	Byte * pid, Byte * nr, Byte * ns, Byte * f_type, Byte * f_id,
+	Byte *  rpt, Byte * pf, Byte * cr);
+
+/*
+
+unit ax25;
+
+interface
+
+uses classes,sysutils,windows;
+
+  procedure get_exclude_list(line: string; var list: TStringList);
+  procedure get_exclude_frm(line: string; var list: TStringList);
+  procedure get_monitor_path(path: string; var mycall,corrcall,digi: string);
+  procedure get_call(src_call: string; var call: string);
+  procedure get_call_fm_path(path: string; var callto,callfrom: string);
+  procedure set_corrcall(snd_ch,port: byte; path: string);
+  procedure set_mycall(snd_ch,port: byte; path: string);
+  procedure set_digi(snd_ch,port: byte; path: string);
+  procedure decode_frame(frame: string; var path,data: string; var pid,nr,ns,f_type,f_id: byte; var rpt,pf,cr: boolean);
+  procedure del_incoming_mycalls(src_call: string);
+  procedure del_incoming_mycalls_by_sock(socket: integer);
+  procedure ax25_info_init(snd_ch,port: byte);
+  procedure write_ax25_info(snd_ch,port: byte);
+  procedure clr_frm_win(snd_ch,port: byte);
+  procedure ax25_init;
+  procedure ax25_free;
+  function dec2hex(value: byte): string;
+  function get_corrcall(path: string): string;
+  function get_mycall(path: string): string;
+  function get_digi(path: string): string;
+  function is_excluded_call(snd_ch: byte; path: string): boolean;
+  function is_excluded_frm(snd_ch,f_id: byte; data: string): boolean;
+  function is_last_digi(path: string): boolean;
+  function is_digi(snd_ch,port: byte; path: string): boolean;
+  function is_corrcall(snd_ch,port: byte; path: string): boolean;
+  function is_mycall(snd_ch,port: byte; path: string): boolean;
+  function is_correct_path(path: string; pid: byte): boolean;
+  function direct_addr(path: string): string;
+  function reverse_addr(path: string): string;
+  function reverse_digi(path: string): string;
+  function number_digi(path: string): byte;
+  function info_pid(pid: byte): string;
+  function get_fcs(var data: string; len: word): word;
+  function set_addr(path: string; rpt,cr: boolean): string;
+  function set_ctrl(nr,ns,f_type,f_id: byte; pf: boolean): byte;
+  function make_frame(data,path: string; pid,nr,ns,f_type,f_id: byte; rpt,pf,cr: boolean): string;
+  function get_incoming_socket_by_call(src_call: string): integer;
+  function add_incoming_mycalls(socket: integer; src_call: string): boolean;
+  function in_list_incoming_mycall(path: string): boolean;
+  function get_UTC_time: string;
+  function parse_NETROM(data: string; f_id: byte): string;
+  function parse_IP(data: string): string;
+  function parse_ARP(data: string): string;
+  function add_raw_frames(snd_ch: byte; frame: string; var buf: TStringList): boolean;
+  function scrambler(in_buf: string): string;
+  function my_indexof(var l: TStringList; s: string): integer;
+
+
+const
+  port_num=32;
+  PKT_ERR=17; //Minimum packet size, bytes
+  I_MAX=7; //Maximum number of packets
+  B_IDX_MAX=256;
+  ADDR_MAX_LEN=10;
+  FRAME_FLAG=126;
+  // Status flags
+  STAT_NO_LINK=0;
+  STAT_LINK=1;
+  STAT_CHK_LINK=2;
+  STAT_WAIT_ANS=3;
+  STAT_TRY_LINK=4;
+  STAT_TRY_UNLINK=5;
+  // �md,Resp,Poll,Final,Digipeater flags
+  SET_P=TRUE;
+  SET_F=FALSE;
+  SET_C=TRUE;
+  SET_R=FALSE;
+  SET_NO_RPT=FALSE;
+  SET_RPT=TRUE;
+  // Frame ID flags
+  I_FRM=0;
+  S_FRM=1;
+  U_FRM=2;
+  I_I=0;
+  S_RR=1;
+  S_RNR=5;
+  S_REJ=9;
+  U_SABM=47;
+  U_DISC=67;
+  U_DM=15;
+  U_UA=99;
+  U_FRMR=135;
+  U_UI=3;
+  // PID flags
+  PID_X25=$01;       // 00000001-CCIT X25 PLP
+  PID_SEGMENT=$08;   // 00001000-Segmentation fragment
+  PID_TEXNET=$C3;    // 11000011-TEXNET Datagram Protocol
+  PID_LQ=$C4;        // 11001000-Link Quality Protocol
+  PID_APPLETALK=$CA; // 11001010-Appletalk
+  PID_APPLEARP=$CB;  // 11001011-Appletalk ARP
+  PID_IP=$CC;        // 11001100-ARPA Internet Protocol
+  PID_ARP=$CD;       // 11001101-ARPA Address Resolution Protocol
+  PID_NET_ROM=$CF;   // 11001111-NET/ROM
+*/
+
+#define ADDR_MAX_LEN 10
+#define PID_NO_L3 0xF0;     // 11110000-No Level 3 Protocol
+
+
+unsigned short CRCTable[256] = {
+	  0,  4489,  8978, 12955, 17956, 22445, 25910, 29887,
+  35912, 40385, 44890, 48851, 51820, 56293, 59774, 63735,
+   4225,   264, 13203,  8730, 22181, 18220, 30135, 25662,
+  40137, 36160, 49115, 44626, 56045, 52068, 63999, 59510,
+   8450, 12427,   528,  5017, 26406, 30383, 17460, 21949,
+  44362, 48323, 36440, 40913, 60270, 64231, 51324, 55797,
+  12675,  8202,  4753,   792, 30631, 26158, 21685, 17724,
+  48587, 44098, 40665, 36688, 64495, 60006, 55549, 51572,
+  16900, 21389, 24854, 28831,  1056,  5545, 10034, 14011,
+  52812, 57285, 60766, 64727, 34920, 39393, 43898, 47859,
+  21125, 17164, 29079, 24606,  5281,  1320, 14259,  9786,
+  57037, 53060, 64991, 60502, 39145, 35168, 48123, 43634,
+  25350, 29327, 16404, 20893,  9506, 13483,  1584,  6073,
+  61262, 65223, 52316, 56789, 43370, 47331, 35448, 39921,
+  29575, 25102, 20629, 16668, 13731,  9258,  5809,  1848,
+  65487, 60998, 56541, 52564, 47595, 43106, 39673, 35696,
+  33800, 38273, 42778, 46739, 49708, 54181, 57662, 61623,
+   2112,  6601, 11090, 15067, 20068, 24557, 28022, 31999,
+  38025, 34048, 47003, 42514, 53933, 49956, 61887, 57398,
+   6337,  2376, 15315, 10842, 24293, 20332, 32247, 27774,
+  42250, 46211, 34328, 38801, 58158, 62119, 49212, 53685,
+  10562, 14539,  2640,  7129, 28518, 32495, 19572, 24061,
+  46475, 41986, 38553, 34576, 62383, 57894, 53437, 49460,
+  14787, 10314,  6865,  2904, 32743, 28270, 23797, 19836,
+  50700, 55173, 58654, 62615, 32808, 37281, 41786, 45747,
+  19012, 23501, 26966, 30943,  3168,  7657, 12146, 16123,
+  54925, 50948, 62879, 58390, 37033, 33056, 46011, 41522,
+  23237, 19276, 31191, 26718,  7393,  3432, 16371, 11898,
+  59150, 63111, 50204, 54677, 41258, 45219, 33336, 37809,
+  27462, 31439, 18516, 23005, 11618, 15595,  3696,  8185,
+  63375, 58886, 54429, 50452, 45483, 40994, 37561, 33584,
+  31687, 27214, 22741, 18780, 15843, 11370,  7921,  3960 };
+
+
+unsigned short pkt_raw_min_len = 8;
+int stat_r_mem = 0;
+
+extern struct TKISSMode_t  KISS;
+
+TAX25Port AX25Port[4][port_num];
+
+TStringList KISS_acked[4];
+TStringList KISS_iacked[4];
+
+// I think this is the queue for a soundcard channel, so can only be
+// two of them (L and R)
+
+TStringList all_frame_buf[5];
+
+typedef struct registeredCalls_t
+{
+	UCHAR myCall[7];		// call in ax.25
+	void * socket;
+
+} registeredCalls;
+
+
+TStringList list_incoming_mycalls;	// list strings containing a registered call
+
+
+boolean busy = 0;
+boolean dcd[5] = { 0 ,0 ,0, 0 };
+
+boolean  tx = 0;
+
+int stdtones = 0;
+int fullduplex = 0;
+
+UCHAR diddles = 0;
+struct TQPSK_t qpsk_set[4];
+
+word MEMRecovery[5] = { 200,200,200,200 };
+int NonAX25[5] = { 0 };
+
+boolean dyn_frack[4] = { FALSE,FALSE,FALSE,FALSE };
+Byte recovery[4] = { 0,0,0,0 };
+Byte users[4] = { 0,0,0,0 };
+
+short txtail[5] = { 50, 50, 50, 50, 50 };
+short txdelay[5] = { 400, 400, 400, 400, 400 };
+
+short modem_def[5] = { 1, 1, 1, 1, 1 };
+
+int emph_db[5] = { 0, 0, 0, 0, 0 };
+UCHAR emph_all[5] = { 0, 0, 0, 0, 0 };
+
+boolean  KISS_opt[4] = { FALSE, FALSE, FALSE, FALSE };
+int resptime[4] = { 0,0,0,0 };
+int slottime[4] = { 0,0,0,0 };
+int persist[4] = { 100,100,100,100 };
+int fracks[4] = { 0,0,0,0 };
+int frack_time[4] = { 0,0,0,0 };
+int idletime[4] = { 0,0,0,0 };
+int redtime[4] = { 0,0,0,0 };
+int IPOLL[4] = { 30,30,30,30 };
+int maxframe[4] = { 0,0,0,0 };
+int TXFrmMode[4] = { 0,0,0,0 };
+int max_frame_collector[4] = { 0,0,0,0 };
+
+char MyDigiCall[4][512] = { "","","","" };
+char exclude_callsigns[4][512] = { "","","","" };
+char exclude_APRS_frm[4][512] = { "","","","" };
+
+TStringList  list_exclude_callsigns[4];
+TStringList list_exclude_APRS_frm[4];
+TStringList list_digi_callsigns[4];
+
+Byte xData[256];
+Byte xEncoded[256];
+Byte xDecoded[256];
+
+int frame_count = 0;
+int single_frame_count = 0;
+
+/*
+  mydigi: string;
+  //// end of user params
+  addr: string[70];
+  ctrl: byte;
+  pid: byte=PID_NO_L3;
+  fcs: word;
+  data: string;
+  frame: string;
+
+implementation
+
+uses ax25_l2,sm_main;
+
+*/
+
+void scrambler(UCHAR * in_buf, int Len)
+{
+	integer i;
+	word  sreg;
+	Byte  a = 0, k;
+
+	sreg = 0x1ff;
+
+	for (i = 0; i < Len; i++)
+	{
+		for (k = 0; k < 8; k++)
+		{
+
+			//	a: = (a shr 1) or (sreg and 1 shl 7);
+
+			a = (a >> 1) | ((sreg & 1) << 7);
+
+			//	sreg: = (sreg shl 4 and $200) xor (sreg shl 8 and $200) or (sreg shr 1);
+
+
+			sreg = (((sreg << 4) & 0x200) ^ ((sreg << 8) & 0x200)) | (sreg >> 1);
+		}
+		in_buf[i] = in_buf[i] ^ a;
+	}
+}
+
+
+/*
+function parse_ARP(data: string): string;
+
+function get_callsign(data: string): string;
+var
+  i: integer;
+  s: string;
+  a: byte;
+begin
+  s:='';
+  if length(data)=7 then
+  begin
+	for i:=1 to 6 do
+	begin
+	  a:=ord(data[i]) shr 1;
+	  if (a in [$30..$39,$41..$5A]) then s:=s+chr(a);
+	end;
+	a:=ord(data[7]) shr 1 and 15;
+	if a>0 then s:=s+'-'+inttostr(a);
+  end
+  else
+  begin
+	if length(data)>0 then
+	begin
+	  for i:=1 to length(data) do
+		if i=1 then s:=dec2hex(ord(data[i])) else s:=s+':'+dec2hex(ord(data[i]));
+	end;
+  end;
+  if s<>'' then s:=s+' ';
+  result:=s;
+end;
+
+function get_IP(data: string): string;
+var
+  i: integer;
+  s: string;
+begin
+  s:='';
+  if length(data)>0 then
+  begin
+	for i:=1 to length(data) do
+	  if i=1 then s:=inttostr(ord(data[i])) else s:=s+'.'+inttostr(ord(data[i]));
+  end;
+  if s<>'' then s:=s+' ';
+  result:=s;
+end;
+
+const
+  opcode: array [0..3] of string = ('ARP Request','ARP Response','RARP Request','RARP Response');
+var
+  oper: word;
+  hlen,plen: byte;
+  sha,spa,tha,tpa: string;
+  s: string;
+  i: word;
+begin
+  s:=data;
+  if length(data)>7 then
+  begin
+	hlen:=ord(data[5]);
+	plen:=ord(data[6]);
+	oper:=(ord(data[7]) shl 8 or ord(data[8])) and 2;
+	i:=9;      sha:=get_callsign(copy(data,i,hlen));
+	i:=i+hlen; spa:=get_ip(copy(data,i,plen));
+	i:=i+plen; tha:=get_callsign(copy(data,i,hlen));
+	i:=i+hlen; tpa:=get_ip(copy(data,i,plen));
+	s:='  [ARP] '+opcode[oper]+' from '+sha+spa+'to '+tha+tpa;
+  end;
+  result:=s;
+end;
+
+function parse_NETROM(data: string; f_id: byte): string;
+
+  function deshift_AX25(data: string): string;
+  var
+	i: byte;
+	call: string[6];
+	ssid: string[2];
+  begin
+	result:='';
+	if length(data)<7 then exit;
+	for i:=1 to 7 do data[i]:=chr(ord(data[i]) shr 1);
+	call:=trim(copy(data,1,6));
+	ssid:=trim(inttostr(ord(data[7]) and 15));
+	if ssid='0' then result:=call else result:=call+'-'+ssid;
+  end;
+
+  function con_req_info(data: string): string;
+  var
+	s_call: string;
+	d_call: string;
+	w: byte;
+	t_o: byte;
+  begin
+	result:='';
+	if length(data)>14 then
+	begin
+	  w:=ord(data[1]);
+	  s_call:=deshift_AX25(copy(data,2,7));
+	  d_call:=deshift_AX25(copy(data,9,7));
+	  result:=' w='+inttostr(w)+' '+s_call+' at '+d_call;
+	end;
+	if length(data)>15 then
+	begin
+	  t_o:=ord(data[16]);
+	  result:=result+' t/o '+inttostr(t_o);
+	end;
+  end;
+
+  function con_ack_info(data: string): string;
+  var
+	w: byte;
+  begin
+	result:='';
+	if length(data)>0 then
+	begin
+	  w:=ord(data[1]);
+	  result:=' w='+inttostr(w);
+	end;
+  end;
+
+const
+  opcode_arr: array[0..7] of string = ('PE','CON REQ','CON ACK','DISC REQ','DISQ ACK','INFO','INFO ACK','RST');
+var
+  s: string;
+  netrom_header: string;
+  c_idx:  byte;
+  c_ID:   byte;
+  TX_nr:  byte;
+  RX_nr:  byte;
+  opcode: byte;
+  s_call: string;
+  s_node: string;
+  d_call: string;
+  d_node: string;
+  b_call: string;
+  r_s_nr: string;
+  opc_flags: string;
+  quality: byte;
+  ttl: byte;
+  hops: byte;
+  rtt: word;
+  inp3_nr_field: byte;
+  inp3_field_len: byte;
+  inp3_ext_fields: boolean;
+begin
+  s:=data;
+  if length(data)>0 then
+  begin
+	if data[1]=#$FF then
+	begin
+	  delete(data,1,1);
+	  //Nodes broadcasting
+	  if (f_id=U_UI) and (length(data)>5) then
+	  begin
+		s_node:=copy(data,1,6);
+		delete(data,1,6);
+		s:='NODES broadcast from '+s_node+#13#10;
+		while length(data)>20 do
+		begin
+		  d_call:=deshift_AX25(copy(data,1,7));
+		  d_node:=copy(data,8,6);
+		  b_call:=deshift_AX25(copy(data,14,7));
+		  quality:=ord(data[21]);
+		  delete(data,1,21);
+		  s:=s+'  '+d_node+':'+d_call+' via '+b_call+' Q='+inttostr(quality)+#13#10;
+		end;
+	  end;
+	  // INP3 RIF
+	  if (f_id=I_I) and (length(data)>10) then
+	  begin
+		s:='[INP3 RIF]'+#13#10;
+		while length(data)>10 do
+		begin
+		  d_call:=deshift_AX25(copy(data,1,7));
+		  hops:=ord(data[8]);
+		  rtt:=(ord(data[9]) shl 8) or ord(data[10]);
+		  delete(data,1,10);
+		  inp3_ext_fields:=TRUE;
+		  inp3_nr_field:=0;
+		  while (length(data)>0) and inp3_ext_fields do
+		  begin
+			inp3_field_len:=ord(data[1]);
+			if inp3_field_len>0 then
+			begin
+			  if (inp3_nr_field=0) and (length(data)>1) then
+			  begin
+				if data[2]=#0 then d_call:=copy(data,3,inp3_field_len-2)+':'+d_call; // Copy alias
+			  end;
+			  delete(data,1,inp3_field_len);
+			  inc(inp3_nr_field);
+			end
+			else inp3_ext_fields:=FALSE;
+		  end;
+		  delete(data,1,1);
+		  s:=s+d_call+' hops='+inttostr(hops)+' rtt='+inttostr(rtt)+#13#10;
+		end;
+	  end;
+	end
+	else
+	begin
+	  // NETROM frames
+	  if length(data)>19 then
+	  begin
+		s_call:=deshift_AX25(copy(data,1,7));
+		d_call:=deshift_AX25(copy(data,8,7));
+		ttl:=ord(data[15]);
+		netrom_header:=copy(data,16,5);
+		delete(data,1,20);
+		c_idx:=ord(netrom_header[1]);
+		c_ID:=ord(netrom_header[2]);
+		TX_nr:=ord(netrom_header[3]);
+		RX_nr:=ord(netrom_header[4]);
+		opcode:=ord(netrom_header[5]);
+		// Opcode flags
+		opc_flags:='';
+		if opcode and 128 = 128 then opc_flags:=opc_flags+' C';
+		if opcode and 64  = 64  then opc_flags:=opc_flags+' N';
+		//
+		s:='  [NETROM] '+s_call+' to '+d_call+' ttl='+inttostr(ttl)+' cct='+dec2hex(c_idx)+dec2hex(c_ID);
+		r_s_nr:=' S'+inttostr(TX_nr)+' R'+inttostr(RX_nr);
+		case (opcode and 7) of
+		  0 : s:=s+' <'+opcode_arr[opcode and 7]+r_s_nr+'>'+#13#10+data;
+		  1 : s:=s+' <'+opcode_arr[opcode and 7]+'>'+con_req_info(data);
+		  2 : s:=s+' <'+opcode_arr[opcode and 7]+'>'+con_ack_info(data)+' my cct='+dec2hex(TX_nr)+dec2hex(RX_nr);
+		  3 : s:=s+' <'+opcode_arr[opcode and 7]+'>';
+		  4 : s:=s+' <'+opcode_arr[opcode and 7]+'>';
+		  5 : s:=s+' <'+opcode_arr[opcode and 7]+r_s_nr+'>:'+#13#10+data;
+		  6 : s:=s+' <'+opcode_arr[opcode and 7]+' R'+inttostr(RX_nr)+'>'+opc_flags;
+		  7 : s:=s+' <'+opcode_arr[opcode and 7]+r_s_nr+'>'+#13#10+data;
+		end;
+	  end;
+	end;
+  end;
+  result:=s;
+end;
+
+function parse_IP(data: string): string;
+
+  function parse_ICMP(var data: string): string;
+  var
+	ICMP_type: byte;
+	ICMP_code: byte;
+	s: string;
+  begin
+	result:='';
+	if length(data)>3 then
+	begin
+	  ICMP_type:=ord(data[1]);
+	  ICMP_code:=ord(data[2]);
+	  delete(data,1,4);
+	  s:='  [ICMP] Type='+inttostr(ICMP_type)+' Code='+inttostr(ICMP_code)+#13#10;
+	  result:=s;
+	end;
+  end;
+
+  function parse_TCP(var data: string): string;
+  var
+	s: string;
+	src_port: string;
+	dest_port: string;
+	wnd: string;
+	ihl: word;
+	idl: word;
+	flags: byte;
+	seq: string;
+	ack: string;
+	s_flags: string;
+	s_idl: string;
+  begin
+	result:='';
+	if length(data)>19 then
+	begin
+	  src_port:=' src_port:'+inttostr((ord(data[1]) shl 8)+ord(data[2]));
+	  dest_port:=' dest_port:'+inttostr((ord(data[3]) shl 8)+ord(data[4]));
+	  seq:=' seq='+dec2hex(ord(data[5]))+dec2hex(ord(data[6]))+dec2hex(ord(data[7]))+dec2hex(ord(data[8]));
+	  ack:=' ack='+dec2hex(ord(data[9]))+dec2hex(ord(data[10]))+dec2hex(ord(data[11]))+dec2hex(ord(data[12]));
+	  ihl:=(ord(data[13]) shr 4)*4;
+	  idl:=length(data)-ihl;
+	  flags:=ord(data[14]);
+	  wnd:=' wnd='+inttostr((ord(data[15]) shl 8)+ord(data[16]));
+	  delete(data,1,ihl);
+	  //
+	  s_flags:=' ';
+	  if (flags and 32)=32 then s_flags:=s_flags+'URG ';
+	  if (flags and 16)=16 then s_flags:=s_flags+'ACK ';
+	  if (flags and 8)=8   then s_flags:=s_flags+'PSH ';
+	  if (flags and 4)=4   then s_flags:=s_flags+'RST ';
+	  if (flags and 2)=2   then s_flags:=s_flags+'SYN ';
+	  if (flags and 1)=1   then s_flags:=s_flags+'FIN ';
+	  //
+	  if idl>0 then s_idl:=' data='+inttostr(idl) else s_idl:='';
+	  if (flags and 16)<>16 then ack:='';
+	  //
+	  s:='  [TCP]'+src_port+dest_port+seq+ack+wnd+s_idl+s_flags+#13#10;
+	  result:=s;
+	end;
+  end;
+
+  function parse_UDP(var data: string): string;
+  var
+	s: string;
+	src_port: string;
+	dest_port: string;
+	idl: word;
+	len: word;
+	s_idl: string;
+  begin
+	result:='';
+	if length(data)>7 then
+	begin
+	  src_port:=' src_port:'+inttostr((ord(data[1]) shl 8)+ord(data[2]));
+	  dest_port:=' dest_port:'+inttostr((ord(data[3]) shl 8)+ord(data[4]));
+	  len:=(ord(data[5]) shl 8)+ord(data[6]);
+	  idl:=len-8;
+	  delete(data,1,8);
+	  //
+	  if idl>0 then s_idl:=' data='+inttostr(idl) else s_idl:='';
+	  //
+	  s:='  [UDP]'+src_port+dest_port+' len='+inttostr(len)+s_idl+#13#10;
+	  result:=s;
+	end;
+  end;
+
+const
+  prot_idx=#1#6#17;
+  prot_name: array [1..3] of string = ('ICMP','TCP','UDP');
+var
+  s: string;
+  src_ip: string;
+  dest_ip: string;
+  s_prot: string;
+  len: string;
+  c_prot: char;
+  ttl: string;
+  offset: string;
+  ihl: byte;
+  p: byte;
+  fragment_offset: word;
+begin
+  s:=data;
+  if length(data)>19 then
+  begin
+	ihl:=(ord(data[1]) and 15)*4;
+	len:=' len='+inttostr((ord(data[3]) shl 8)+ord(data[4]));
+	fragment_offset:=((ord(data[7]) shl 8)+ord(data[8])) shl 3;
+	ttl:=' ttl='+inttostr(ord(data[9]));
+	c_prot:=data[10];
+	src_ip:=' Fm '+inttostr(ord(data[13]))+'.'+inttostr(ord(data[14]))+'.'+inttostr(ord(data[15]))+'.'+inttostr(ord(data[16]));
+	dest_ip:=' To '+inttostr(ord(data[17]))+'.'+inttostr(ord(data[18]))+'.'+inttostr(ord(data[19]))+'.'+inttostr(ord(data[20]));
+	delete(data,1,ihl);
+	//
+	p:=pos(c_prot,prot_idx);
+	if p>0 then s_prot:=' prot='+prot_name[p] else s_prot:=' prot=Type'+inttostr(ord(c_prot));
+	if fragment_offset>0 then offset:=' offset='+inttostr(fragment_offset) else offset:='';
+	s:='  [IP]'+src_ip+dest_ip+s_prot+ttl+len+offset+#13#10;
+	if fragment_offset=0 then
+	case p of
+	  1 : s:=s+parse_ICMP(data);
+	  2 : s:=s+parse_TCP(data);
+	  3 : s:=s+parse_UDP(data);
+	end;
+	s:=s+data;
+  end;
+  result:=s;
+end;
+
+function get_UTC_time: string;
+var
+  st: TSYSTEMTIME;
+  sec,hour,minute: string;
+begin
+  GetSystemTime(st);
+  if st.wSecond<10 then sec:='0'+inttostr(st.wSecond) else sec:=inttostr(st.wSecond);
+  if st.wMinute<10 then minute:='0'+inttostr(st.wMinute) else minute:=inttostr(st.wMinute);
+  if st.wHour<10 then Hour:='0'+inttostr(st.wHour) else Hour:=inttostr(st.wHour);
+  result:=hour+':'+minute+':'+sec;
+end;
+
+function dec2hex(value: byte): string;
+const
+  hex='0123456789ABCDEF';
+var
+  lo,hi: byte;
+begin
+  lo:=value and 15;
+  hi:=value shr 4;
+  result:=hex[hi+1]+hex[lo+1];
+end;
+
+*/
+
+unsigned short get_fcs(UCHAR * Data, unsigned short len)
+{
+	unsigned short i;
+	unsigned short result;
+
+	result = 0xFFFF;
+
+	if (len == 0)
+		return result;
+
+	for (i = 0; i < len; i++)
+		result = (result >> 8) ^ CRCTable[(result ^ Data[i]) & 0xff];
+
+
+	result ^= 0xffff;
+
+	return result;
+}
+
+
+unsigned short CRCTAB[256] = {
+	0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf,
+	0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7,
+	0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e,
+	0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876,
+	0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd,
+	0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5,
+0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c,
+0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974,
+0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
+0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3,
+0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a,
+0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72,
+0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9,
+0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1,
+0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738,
+0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70,
+0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7,
+0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
+0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036,
+0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e,
+0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5,
+0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd,
+0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134,
+0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c,
+0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3,
+0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb,
+0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
+0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a,
+0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1,
+0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9,
+0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330,
+0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78
+};
+
+unsigned short int compute_crc(unsigned char *buf, int len)
+{
+	unsigned short fcs = 0xffff;
+	int i;
+
+	for (i = 0; i < len; i++)
+		fcs = (fcs >> 8) ^ CRCTAB[(fcs ^ buf[i]) & 0xff];
+
+	fcs ^= 0xffff;
+
+	return fcs;
+}
+
+/*
+
+function info_pid(pid: byte): string;
+begin
+  if ((pid and 48=1) or (pid and 48=2)) then result:='0';
+  if pid=204 then result:='1';
+  if pid=221 then result:='2';
+  if pid=240 then result:='3';
+  if pid=255 then result:='4';
+end;
+
+procedure explode(var a: array of string; border, s: string; p1: word);
+var
+  s2: string;
+  i: integer;
+begin
+  i:=0;
+  s2:=s+border;
+  repeat
+	a[i]:=copy(s2,0,pos(border,s2)-1);
+	delete(s2,1,length(a[i]+border));
+	inc(i);
+  until (s2='') or (i=p1);
+end;
+
+function set_addr(path: string; rpt,cr: boolean): string;
+const
+  A_RX=0;
+  A_TX=1;
+  C_BIT=64;
+  H_BIT=64;
+  RR_BIT=48;
+var
+  cnt,i: byte;
+  a_call: array [0..1] of string;
+  a_path: array [0..ADDR_MAX_LEN-1] of string;
+  calls: array [0..ADDR_MAX_LEN-1] of string;
+  ssids: array [0..ADDR_MAX_LEN-1] of byte;
+  addr: string;
+  n: word;
+begin
+  for i:=0 to ADDR_MAX_LEN-1 do
+  begin
+	a_path[i]:='';
+	calls[i]:='';
+	ssids[i]:=0;
+  end;
+  //��������� ��������
+  try explode(a_path,',',path,ADDR_MAX_LEN); except end;
+  //��������� �������� � ssid
+  cnt:=0;
+  repeat
+	a_call[0]:=''; a_call[1]:='';
+	try explode(a_call,'-',a_path[cnt],2); except end;
+	if a_call[0]<>'' then
+	begin
+	  calls[cnt]:=copy(a_call[0]+'      ',1,6);
+	  if a_call[1]='' then a_call[1]:='0';
+	  try ssids[cnt]:=strtoint(a_call[1]); except ssids[cnt]:=0; end;
+	  inc(cnt);
+	end;
+  until (a_call[0]='') or (cnt=ADDR_MAX_LEN);
+  //��������� �������� ������
+  addr:='';
+  if cnt>1 then
+  begin
+	for i:=0 to cnt-1 do
+	begin
+	  if (cr=SET_C) and (i=A_RX) then ssids[i]:=ssids[i]+C_BIT; //��������� C � CRRSSID1
+	  if (cr=SET_R) and (i=A_TX) then ssids[i]:=ssids[i]+C_BIT; //��������� C � CRRSSID1
+	  if rpt and (i>A_TX) then
+		if calls[i]=mydigi then ssids[i]:=ssids[i]+H_BIT; //��������� H � HRRSSID1
+	  ssids[i]:=ssids[i]+RR_BIT; //��������� RR � xRRSSID1
+	  addr:=addr+calls[i]+chr(ssids[i]);
+	end;
+	for n:=1 to length(addr) do addr[n]:=chr(ord(addr[n]) shl 1); //�������� �� 1 ��� ������
+	addr[length(addr)]:=chr(ord(addr[length(addr)]) xor 1); //������������� ����� ������
+  end;
+  result:=addr;
+end;
+*/
+
+int get_addr(char * Calls, UCHAR * AXCalls)
+{
+	//	CONVERT CALL + OPTIONAL DIGI STRING TO AX25, RETURN 
+	//	CONVERTED STRING IN AXCALLS. Return FALSE if invalied
+
+	Byte * axptr = AXCalls;
+	char * ptr, *Context;
+	int n = 8;						// Max digis
+
+	memset(AXCalls, 0, 70);
+
+	ptr = strtok_s(Calls, " ,", &Context);
+
+	if (ptr == NULL)
+		return FALSE;
+
+	// First field is Call
+
+	if (ConvToAX25(ptr, axptr) == 0)
+		return FALSE;
+
+	axptr += 7;
+
+	ptr = strtok_s(NULL, " ,", &Context);
+
+	if (ConvToAX25(ptr, axptr) == 0)
+		return FALSE;
+
+	axptr += 7;
+
+	ptr = strtok_s(NULL, " ,", &Context);
+
+	while (ptr && n--)
+	{
+		// NEXT FIELD = COULD BE CALLSIGN, VIA, 
+
+		if (memcmp(ptr, "VIA", (int)strlen(ptr)) == 0)
+		{
+		}	//skip via
+		else
+		{
+			// Convert next digi
+
+			if (ConvToAX25(ptr, axptr) == 0)
+				return FALSE;
+
+			axptr += 7;
+		}
+
+		ptr = strtok_s(NULL, " ,", &Context);
+	}
+
+	axptr[-1] |= 1;			// Set end of address
+
+	return axptr - AXCalls;
+}
+
+Byte set_ctrl(Byte nr, Byte ns, Byte f_type, Byte f_id, boolean pf)
+{
+	Byte  pf_bit, ctrl;
+
+	ctrl = 0;
+	pf_bit = 0;
+
+	if (pf)
+		pf_bit = 16;
+
+	switch (f_type)
+	{
+	case I_FRM:
+
+		ctrl = (nr << 5) + pf_bit + (ns << 1);
+		break;
+
+	case S_FRM:
+
+		ctrl = (nr << 5) + pf_bit + f_id;
+		break;
+
+	case U_FRM:
+
+		ctrl = f_id + pf_bit;
+	}
+
+	return ctrl;
+}
+
+string * make_frame(string * data, Byte * axaddr,  Byte pid, Byte nr, Byte ns, Byte f_type, Byte f_id, boolean rpr, boolean pf, boolean cr)
+{
+	UNUSED(rpr);
+
+	Byte ctrl;
+
+	string * frame = newString();
+	int addrlen;
+	Byte addr[80];
+
+	unsigned short CRC;
+	UCHAR CRCString[2];
+
+	frame->Data[0] = 0;					// Lower software expects a kiss control byte here
+	frame->Length = 1;
+
+	ctrl = set_ctrl(nr, ns, f_type, f_id, pf);
+
+	addrlen = strlen((char *)axaddr);
+
+	memcpy(addr, axaddr, addrlen);
+
+	if (cr)
+		addr[6] |= 0x80;		// Set Command Bit
+	else
+		addr[13] |= 0x80;	// Set Response Bit
+
+
+	switch (f_type)
+	{
+	case I_FRM:
+
+		stringAdd(frame, addr, addrlen);
+		stringAdd(frame, (Byte *)&ctrl, 1);
+		stringAdd(frame, (Byte *)&pid, 1);
+		stringAdd(frame, data->Data, data->Length);
+
+		break;
+
+
+	case S_FRM:
+
+		stringAdd(frame, addr, addrlen);
+		stringAdd(frame, (Byte *)&ctrl, 1);
+
+		break;
+
+	case U_FRM:
+
+		if (f_id == U_UI)
+		{
+			stringAdd(frame, addr, addrlen);
+			stringAdd(frame, (Byte *)&ctrl, 1);
+			stringAdd(frame, (Byte *)&pid, 1);
+			stringAdd(frame, data->Data, data->Length);
+		}
+		else if (f_id == U_FRMR)
+		{
+			stringAdd(frame, addr, addrlen);
+			stringAdd(frame, (Byte *)&ctrl, 1);
+			stringAdd(frame, data->Data, data->Length);
+		}
+		else
+		{
+			stringAdd(frame, addr, addrlen);
+			stringAdd(frame, (Byte *)&ctrl, 1);
+		}
+	}
+
+	CRC = get_fcs(&frame->Data[1], frame->Length - 1);
+
+	CRCString[0] = CRC & 0xff;
+	CRCString[1] = CRC >> 8;
+	stringAdd(frame, CRCString, 2);
+
+	return frame;
+}
+
+
+int add_raw_frames(int snd_ch, string * frame, TStringList * buf)
+{
+	string  *s_data = newString();
+	Byte  s_pid, s_nr, s_ns, s_f_type, s_f_id;
+	Byte  s_rpt, s_cr, s_pf;
+	string  *d_data = newString();
+	Byte  d_pid, d_nr, d_ns, d_f_type, d_f_id;
+	Byte  d_rpt, d_cr, d_pf;
+
+	Byte d_path[80];
+	Byte s_path[80];
+
+	boolean  found_I;
+	int  i;
+
+	unsigned char * framecontents;
+	int Length;
+
+	boolean result = TRUE;
+
+	// Have to be careful as at this point frames have KISS Header and maybe trailer
+
+	if (buf->Count > 0)
+	{
+		// Check for duplicate. Ok to just compare as copy will have same header
+
+		if (my_indexof(buf, frame) >= 0)
+		{
+			Debugprintf("KISSOptimise discarding duplicate frame");
+			return FALSE;
+		}
+
+		// Need to adjust for KISS bytes
+
+		// Normally one, but ackmode has 3 on front and sizeof(void *) on end
+
+		framecontents = frame->Data;
+		Length = frame->Length;
+
+		if ((framecontents[0] & 15) == 12)		// Ackmode
+		{
+			framecontents += 3;
+			Length -= (3 + sizeof(void *));
+		}
+		else
+		{
+			framecontents++;
+			Length--;
+		}
+
+		decode_frame(framecontents, Length, s_path, s_data, &s_pid, &s_nr, &s_ns, &s_f_type, &s_f_id, &s_rpt, &s_pf, &s_cr);
+
+		found_I = FALSE;
+
+		// check for multiple RR (r)
+
+		if (s_f_id == S_FRM && s_cr == SET_R)
+		{
+			for (i = 0; i < buf->Count; i++)
+			{
+				framecontents = buf->Items[i]->Data;
+				Length = buf->Items[i]->Length;
+
+				if ((framecontents[0] & 15) == 12)		// Ackmode
+				{
+					framecontents += 3;
+					Length -= (3 + sizeof(void *));
+				}
+				else
+				{
+					framecontents++;
+					Length--;
+				}
+
+				decode_frame(framecontents, Length, d_path, d_data, &d_pid, &d_nr, &d_ns, &d_f_type, &d_f_id, &d_rpt, &d_pf, &d_cr);
+
+				if (d_f_id == S_FRM && d_cr == SET_R && strcmp((char *)s_path, (char *)d_path) == 0)
+				{
+					Delete(buf, i);
+					Debugprintf("KISSOptimise discarding unneeded RR(R%d)", d_nr);
+
+					break;
+				}
+			}
+		}
+
+	
+		// check for RR after I Frame
+	
+		if (s_f_id == S_FRM && s_cr == SET_C)
+		{
+			for (i = 0; i < buf->Count; i++)
+			{
+				framecontents = buf->Items[i]->Data;
+				Length = buf->Items[i]->Length;
+
+				if ((framecontents[0] & 15) == 12)		// Ackmode
+				{
+					framecontents += 3;
+					Length -= (3 + sizeof(void *));
+				}
+				else
+				{
+					framecontents++;
+					Length--;
+				}
+
+				decode_frame(framecontents, Length, d_path, d_data, &d_pid, &d_nr, &d_ns, &d_f_type, &d_f_id, &d_rpt, &d_pf, &d_cr);
+
+				if (d_f_id == I_FRM && strcmp((char *)s_path, (char *)d_path) == 0)
+				{
+					found_I = TRUE;
+					break;
+				}
+			}
+
+			if (found_I)
+			{
+				Debugprintf("KISSOptimise discarding unneeded RR(C %d) after I frame", s_nr);
+				result = FALSE;
+			}
+		}
+			
+		// check on I
+
+		if (s_f_id == I_FRM)
+		{
+			for (i = 0; i < buf->Count; i++)
+			{
+				framecontents = buf->Items[i]->Data;
+				Length = buf->Items[i]->Length;
+
+				if ((framecontents[0] & 15) == 12)		// Ackmode
+				{
+					framecontents += 3;
+					Length -= (3 + sizeof(void *));
+				}
+				else
+				{
+					framecontents++;
+					Length--;
+				}
+
+				decode_frame(framecontents, Length, d_path, d_data, &d_pid, &d_nr, &d_ns, &d_f_type, &d_f_id, &d_rpt, &d_pf, &d_cr);
+
+				if (strcmp((char *)s_path, (char *)d_path) == 0 && d_f_id == S_FRM && d_cr == SET_C)
+				{
+					Delete(buf, i);
+					Debugprintf("KISSOptimise discarding unneeded RR(C %d)", d_nr);
+					i--;				// i was removed
+				}
+			}
+		}
+	}
+
+	freeString(d_data);
+	freeString(s_data);
+
+	return result;
+}
+
+//////////////////////// Register incoming callsign ////////////////////////////
+
+// I think a call should only be registered on one socket (or we won't know where to send
+// incoming calls
+
+boolean add_incoming_mycalls(void * socket, char * src_call)
+{
+	registeredCalls * reg = malloc(sizeof(struct registeredCalls_t));
+	int i = 0;
+
+	// Build a string containing Call and Socket
+
+	ConvToAX25(src_call, reg->myCall);
+	reg->socket = socket;
+
+	if (list_incoming_mycalls.Count > 0)
+	{
+		for (i = 0; i < list_incoming_mycalls.Count; i++)
+		{
+			registeredCalls * check = (registeredCalls *)list_incoming_mycalls.Items[i];
+
+			if (memcmp(check->myCall, reg->myCall, 7) == 0)
+			{
+				// Update socket
+
+				check->socket = socket;
+				return FALSE;
+			}
+		}
+	}
+
+	Add(&list_incoming_mycalls, (string *)reg);
+	return TRUE;
+}
+
+
+
+void del_incoming_mycalls(char * src_call)
+{
+	int i = 0;
+	Byte axcall[7];
+	registeredCalls * reg;
+
+	ConvToAX25(src_call, axcall);
+
+	while (i < list_incoming_mycalls.Count)
+	{
+		reg = (registeredCalls *)list_incoming_mycalls.Items[i];
+		{
+			if (memcmp(reg->myCall, axcall, 7) == 0)
+			{
+				// cant use Delete as stringlist doesn't contain strings
+
+				TStringList * Q = &list_incoming_mycalls;
+				int Index = i;
+
+				free(Q->Items[Index]);
+
+				Q->Count--;
+
+				while (Index < Q->Count)
+				{
+					Q->Items[Index] = Q->Items[Index + 1];
+					Index++;
+				}
+
+				return;
+			}
+		}
+		i++;
+	}
+}
+
+
+void del_incoming_mycalls_by_sock(void * socket)
+{
+	int i = 0, snd_ch, port;
+	registeredCalls * reg;
+
+	while (i < list_incoming_mycalls.Count)
+	{
+		reg = (registeredCalls *)list_incoming_mycalls.Items[i];
+		{
+			if (reg->socket == socket)
+			{
+				// cant use Delete as stringlist doesn't contain strings
+
+				TStringList * Q = &list_incoming_mycalls;
+				int Index = i; 
+		
+				free(Q->Items[Index]);
+
+				Q->Count--;
+
+				while (Index < Q->Count)
+				{
+					Q->Items[Index] = Q->Items[Index + 1];
+					Index++;
+				}
+				
+				//Delete(&list_incoming_mycalls, i);
+			}
+			else
+				i++;
+		}
+	}
+
+	// Should clear all connections on socket
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		for (port = 0; port < port_num; port++)
+		{
+			TAX25Port * AX25Sess = &AX25Port[snd_ch][port];
+
+			if (AX25Sess->socket == socket)
+			{
+				if (AX25Sess->status != STAT_NO_LINK)
+				{
+					// Shouldn't we send DM? -0 try it
+
+					set_DM(snd_ch, AX25Sess->ReversePath);
+
+					rst_timer(AX25Sess);
+					rst_values(AX25Sess);
+
+					AX25Sess->status = STAT_NO_LINK;
+				}
+				AX25Sess->socket = 0;
+			}
+		}
+	}
+}
+
+
+/*
+function get_incoming_socket_by_call(src_call: string): integer;
+var
+  i: integer;
+  found: boolean;
+  socket: integer;
+  call,ssid: string;
+  a_call: array[0..1] of string;
+begin
+  socket:=-1;
+  i:=0;
+  found:=FALSE;
+  try explode(a_call,'-',src_call,2); except end;
+  call:=trim(a_call[0]);
+  if a_call[1]<>'' then ssid:=a_call[1] else ssid:='0';
+  if list_incoming_mycalls.Count>0 then
+  repeat
+	if (call+'-'+ssid)=list_incoming_mycalls.Strings[i] then
+	begin socket:=strtoint(list_incoming_mycalls_sock.Strings[i]); found:=TRUE; end;
+	inc(i);
+  until found or (i=list_incoming_mycalls.Count);
+  result:=socket;
+end;
+*/
+
+
+
+void * in_list_incoming_mycall(Byte * path)
+{
+	// See if to call is in registered calls list
+
+	int i = 0;
+	registeredCalls * check;		// list_incoming_mycalls contains registeredCalls, not Strings
+	
+	while (i < list_incoming_mycalls.Count)
+	{
+		check = (registeredCalls *)list_incoming_mycalls.Items[i];
+
+		if (memcmp(check->myCall, path, 7) == 0)
+			return check->socket;
+
+		i++;
+	}
+
+	return NULL;
+}
+
+/*
+////////////////////////////////////////////////////////////////////////////////
+
+function is_corrcall(snd_ch,port: byte; path: string): boolean;
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,8,6));
+  ssid:=copy(path,14,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15)) else ssid:='0';
+  call:=call+'-'+ssid;
+  if call=AX25Sess->corrcall then result:=TRUE else result:=FALSE;
+end;
+
+function is_mycall(snd_ch,port: byte; path: string): boolean;
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,1,6));
+  ssid:=copy(path,7,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15)) else ssid:='0';
+  call:=call+'-'+ssid;
+  if call=AX25Sess->mycall then result:=TRUE else result:=FALSE;
+end;
+
+function is_digi(snd_ch,port: byte; path: string): boolean;
+var
+  digi,call,ssid: string;
+begin
+  digi:='';
+  if length(path)>14 then
+  begin
+	delete(path,1,14);
+	repeat
+	  call:=trim(copy(path,1,6));
+	  ssid:=copy(path,7,1);
+	  delete(path,1,7);
+	  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15))
+	  else ssid:='0';
+	  if path<>'' then digi:=digi+call+'-'+ssid+','
+	  else digi:=digi+call+'-'+ssid;
+	until path='';
+  end;
+  if digi=AX25Sess->digi then result:=TRUE else result:=FALSE;
+end;
+*/
+
+// Check if laast digi used
+
+boolean is_last_digi(Byte *path)
+{
+	int len = strlen(path);
+
+	if (len == 14)
+		return TRUE;
+
+	if ((path[len - 1] & 128) == 128)
+		return TRUE;
+
+	return FALSE;
+}
+
+
+
+/*
+function get_corrcall(path: string): string;
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,8,6));
+  ssid:=copy(path,14,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15)) else ssid:='0';
+  call:=call+'-'+ssid;
+  result:=call;
+end;
+
+function get_mycall(path: string): string;
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,1,6));
+  ssid:=copy(path,7,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15)) else ssid:='0';
+  call:=call+'-'+ssid;
+  result:=call;
+end;
+
+function get_digi(path: string): string;
+var
+  digi,call,ssid: string;
+begin
+  digi:='';
+  if length(path)>14 then
+  begin
+	delete(path,1,14);
+	repeat
+	  call:=trim(copy(path,1,6));
+	  ssid:=copy(path,7,1);
+	  delete(path,1,7);
+	  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15))
+	  else ssid:='0';
+	  if path<>'' then digi:=digi+call+'-'+ssid+','
+	  else digi:=digi+call+'-'+ssid;
+	until path='';
+  end;
+  result:=digi;
+end;
+*/
+
+boolean is_correct_path(Byte * path, Byte pid)
+{
+	Byte networks[] = { 6, 7, 8, 0xc4, 0xcc, 0xcd, 0xce, 0xcf, 0xf0 , 0 };
+	Byte call[10];
+	int i;
+
+
+	if (pid == 0 || strchr(networks, pid))
+	{
+		// Validate calls
+
+		// I think checking bottom  bit of first 13 bytes is enough
+
+		for (i = 0; i < 13; i++)
+		{
+			if ((*(path) & 1))
+				return FALSE;
+
+			path++;
+		}
+		return TRUE;
+	}
+	return FALSE;
+}
+
+
+void get_exclude_list(char * line, TStringList * list)
+{
+	// Convert comma separated list of calls to ax25 format in list
+
+	string axcall;
+
+	char copy[512];
+
+	char * ptr, *Context;
+
+	if (line[0] == 0)
+		return;
+
+	strcpy(copy, line);						// copy as strtok messes with it
+	strcat(copy, ",");
+
+	axcall.Length = 8;
+	axcall.AllocatedLength = 8;
+	axcall.Data = malloc(8);
+
+	memset(axcall.Data, 0, 8);
+
+	ptr = strtok_s(copy, " ,", &Context);
+
+	while (ptr)
+	{
+		if (ConvToAX25(ptr, axcall.Data) == 0)
+			return;
+
+		Add(list, duplicateString(&axcall));
+
+		ptr = strtok_s(NULL, " ,", &Context);
+	}
+}
+
+
+
+void get_exclude_frm(char * line, TStringList * list)
+{
+	/*
+
+  s: string;
+  p: integer;
+  n: integer;
+begin
+  list.Clear;
+  if line='' then exit;
+  repeat
+	p:=pos(',',line);
+	if p>0 then
+	  begin
+		s:=trim(copy(line,1,p-1));
+		if s<>'' then
+		begin
+		  try n:=strtoint(s); except n:=-1; end;
+		  if n in [0..255] then list.Add(chr(n));
+		end;
+		delete(line,1,p);
+	  end
+	else
+	  begin
+		s:=trim(line);
+		if s<>'' then
+		begin
+		  try n:=strtoint(s); except n:=-1; end;
+		  if n in [0..255] then list.Add(chr(n));
+		end;
+	  end;
+  until p=0;
+end;
+*/
+}
+
+/*
+
+function is_excluded_call(snd_ch: byte; path: string): boolean;
+var
+  excluded: boolean;
+  call: string;
+  ssid: string;
+begin
+  excluded:=FALSE;
+  if (list_exclude_callsigns[snd_ch].Count>0) and (length(path)>13) then
+  begin
+	// Copy sender
+	call:=trim(copy(path,8,6));
+	ssid:=copy(path,14,1);
+	if ssid<>'' then call:=call+'-'+inttostr((ord(ssid[1]) and 15));
+	if list_exclude_callsigns[snd_ch].IndexOf(call)>-1 then excluded:=TRUE;
+  end;
+  result:=excluded;
+end;
+
+function is_excluded_frm(snd_ch,f_id: byte; data: string): boolean;
+var
+  excluded: boolean;
+begin
+  excluded:=FALSE;
+  if list_exclude_APRS_frm[snd_ch].Count>0 then
+	if f_id=U_UI then
+	  if length(data)>0 then
+		if list_exclude_APRS_frm[snd_ch].IndexOf(data[1])>=0 then excluded:=TRUE;
+  result:=excluded;
+end;
+
+procedure set_corrcall(snd_ch,port: byte; path: string);
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,8,6));
+  ssid:=copy(path,14,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15))
+  else ssid:='0';
+  AX25Sess->corrcall:=call+'-'+ssid;
+end;
+
+procedure set_mycall(snd_ch,port: byte; path: string);
+var
+  call,ssid: string;
+begin
+  call:=trim(copy(path,1,6));
+  ssid:=copy(path,7,1);
+  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15))
+  else ssid:='0';
+  AX25Sess->mycall:=call+'-'+ssid;
+end;
+
+procedure set_digi(snd_ch,port: byte; path: string);
+var
+  digi,call,ssid: string;
+begin
+  digi:='';
+  if length(path)>14 then
+  begin
+	delete(path,1,14);
+	repeat
+	  call:=trim(copy(path,1,6));
+	  ssid:=copy(path,7,1);
+	  delete(path,1,7);
+	  if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15))
+	  else ssid:='0';
+	  if path<>'' then digi:=digi+call+'-'+ssid+','
+	  else digi:=digi+call+'-'+ssid;
+	until path='';
+  end;
+  AX25Sess->digi:=digi;
+end;
+
+procedure get_call_fm_path(path: string; var callto,callfrom: string);
+var
+  a_path: array [0..ADDR_MAX_LEN-1] of string;
+  i: byte;
+begin
+  for i:=0 to ADDR_MAX_LEN-1 do a_path[i]:='';
+  try explode(a_path,',',path,ADDR_MAX_LEN); except end;
+  callto:=a_path[0];
+  callfrom:=a_path[1];
+end;
+
+procedure get_call(src_call: string; var call: string);
+var
+  a_call: array[0..1] of string;
+  ssid: string;
+begin
+  try explode(a_call,'-',src_call,2); except end;
+  call:=trim(a_call[0]);
+  if a_call[1]<>'' then ssid:=trim(a_call[1]) else ssid:='0';
+  call:=call+'-'+ssid;
+end;
+*/
+
+int number_digi(string path)
+{
+	int n = 0;
+
+	//  a_path: array [0..ADDR_MAX_LEN-3] of string;
+	int i;
+
+	// for i:=0 to ADDR_MAX_LEN-3 do a_path[i]:='';
+	// try explode(a_path,',',path,ADDR_MAX_LEN-2); except end;
+	// for i:=0 to ADDR_MAX_LEN-3 do if a_path[i]<>'' then inc(n);
+
+	return n;
+}
+
+
+
+get_monitor_path(Byte * path, char * mycall, char * corrcall, char * digi)
+{
+	Byte * digiptr = digi;
+
+	digi[0] = 0;
+
+	mycall[ConvFromAX25(path, mycall)] = 0;
+	path += 7;
+	corrcall[ConvFromAX25(path, corrcall)] = 0;
+
+	while ((path[6] & 1) == 0)				// End of call bit
+	{
+		if (digi != digiptr)
+			*(digi++) = ',';
+
+			path += 7;
+			digi += ConvFromAX25(path, digi);
+
+			if (((path[6] & 128) == 128))		// Digi'd
+				*(digi++) = '*';
+	}
+	*digi = 0;
+}
+
+
+/*
+
+function reverse_digi(path: string): string;
+var
+  digi: string;
+  a_path: array [0..ADDR_MAX_LEN-3] of string;
+  i: word;
+begin
+  digi:='';
+  for i:=0 to ADDR_MAX_LEN-3 do a_path[i]:='';
+  try explode(a_path,',',path,ADDR_MAX_LEN-2); except end;
+  for i:=0 to ADDR_MAX_LEN-3 do
+  if a_path[i]<>'' then
+  begin
+	if digi='' then digi:=a_path[i]+digi
+	else digi:=a_path[i]+','+digi;
+  end;
+  result:=digi;
+end;
+
+function direct_addr(path: string): string;
+var
+  s,call,ssid: string;
+begin
+  s:='';
+  repeat
+	call:=copy(path,1,6);
+	delete(path,1,6);
+	ssid:=copy(path,1,1);
+	delete(path,1,1);
+	if ssid<>'' then ssid:=inttostr((ord(ssid[1]) and 15));
+	if s='' then s:=call+'-'+ssid else s:=s+','+call+'-'+ssid;
+  until path='';
+  result:=s;
+end;
+*/
+
+void reverse_addr(Byte * path, Byte * revpath, int Len)
+{
+	Byte * ptr = path;
+	Byte * copy = revpath;
+	int endbit = Len - 1;
+	int numdigis = (Len - 14) / 7;
+	int i;
+
+	if (Len < 14)
+		return;
+
+	Byte digis[57];						// 8 * 7 + null terminator
+	memset(digis, 0, 57);
+	Byte * digiptr = digis + 49;			// Last Digi
+
+	// remove end of address bit
+
+	path[endbit] &= 0xFE;
+
+	// first reverse dest and origin
+
+	memcpy(copy + 7, ptr, 7);
+	memcpy(copy, ptr + 7, 7);
+
+	Len -= 14;
+	ptr += 14;
+
+	for (i = 0; i < numdigis; i++)
+	{
+		memcpy(digiptr, ptr, 7);
+		ptr += 7;
+		digiptr -= 7;
+	}
+
+	// Digiptr now points to new first digi 
+
+	memcpy(&copy[14], &digiptr[7], 7 * numdigis);
+
+	path[endbit] |= 1;			// restore original end bit
+
+	copy[endbit++] |= 1;
+	copy[endbit] = 0;			//  Null terminate
+
+	return;
+}
+
+
+
+void decode_frame(Byte * frame, int len, Byte * path, string * data,
+	Byte * pid, Byte * nr, Byte * ns, Byte * f_type, Byte * f_id,
+	Byte *  rpt, Byte * pf, Byte * cr)
+{
+	int i;
+	int addr_end;
+	Byte ctrl;
+	Byte * savepath = path;
+
+	i = 0;
+	addr_end = FALSE;
+
+	*cr = SET_R;
+	*pf = SET_F;
+	data->Length = 0;
+	ctrl = 0;
+	*pid = 0;
+	*nr = 0;
+	*ns = 0;
+	*f_type = 0;
+	*f_id = 0;
+	*rpt = FALSE;
+
+	if (len < PKT_ERR)
+		return;
+
+	if ((frame[6] & 128) == 128 && (frame[13] & 128) == 0)
+		*cr = SET_C;
+
+	while (len > i && i < ADDR_MAX_LEN * 7)
+	{
+		*path++ = frame[i];
+		if ((frame[i] & 1) == 1)
+		{
+			addr_end = TRUE;
+			break;
+		}
+		i++;
+	}
+
+	if (addr_end == 0)
+		return;
+
+	// clear the c and r bits from address
+
+	savepath[6] &= 0x7f;		// Mask 
+	savepath[13] &= 0x7f;		// Mask 
+
+	*path = 0;		// add null terminate		
+
+	i++;			// Points to ctrl byte
+
+	ctrl = frame[i];
+
+	if ((ctrl & 16) == 16)
+		*pf = SET_P;
+
+	if ((ctrl & 1) == 0)		// I frame
+	{
+		*f_type = I_FRM;
+		*f_id = I_I;
+		*nr = (ctrl >> 5);
+		*ns = (ctrl >> 1) & 7;
+	}
+	else
+	{
+		// Not I
+
+		*f_type = U_FRM;
+
+		*f_id = ctrl & 239;
+
+		switch (ctrl & 15)
+		{
+		case  S_RR:
+		case  S_RNR:
+		case  S_REJ:
+		case  S_SREJ:
+
+			*f_type = S_FRM;
+		}
+
+		if (*f_type == S_FRM)
+		{
+			*f_id = ctrl & 15;
+			*nr = ctrl >> 5;
+		}
+	}
+
+
+	if (*f_id == I_I || *f_id == U_UI)
+	{
+		i++;
+		*pid = frame[i];
+		i++;
+		if (len > i)
+			stringAdd(data, &frame[i], len - i - 2);		// Exclude FCS
+	}
+	else if (*f_id == U_FRMR)
+	{
+		*pid = 0;
+		i++;
+		if (len > i)
+			stringAdd(data, &frame[i], len - i - 2);		// Exclude FCS
+	}
+}
+void ax25_info_init(TAX25Port * AX25Sess)
+{
+	AX25Sess->info.stat_s_pkt = 0;
+	AX25Sess->info.stat_s_byte = 0;
+	AX25Sess->info.stat_r_pkt = 0;
+	AX25Sess->info.stat_r_byte = 0;
+	AX25Sess->info.stat_r_fc = 0;
+	AX25Sess->info.stat_fec_count = 0;
+	AX25Sess->info.stat_l_r_byte = 0;
+	AX25Sess->info.stat_l_s_byte = 0;
+	AX25Sess->info.stat_begin_ses = 0;
+	AX25Sess->info.stat_end_ses = 0;
+}
+
+
+void  clr_frm_win(TAX25Port * AX25Sess)
+{
+	int  i;
+
+	for (i = 0; i < 8; i++)
+		initString(&AX25Sess->frm_win[i]);
+}
+
+void ax25_init()
+{
+	int snd_ch, port, i;
+
+	for (i = 0; i < 4; i++)
+	{
+		initTStringList(&all_frame_buf[i]);
+		initTStringList(&list_exclude_callsigns[i]);
+		initTStringList(&list_exclude_APRS_frm[i]);
+		initTStringList(&list_digi_callsigns[i]);
+		initTStringList(&KISS_acked[i]);
+
+		get_exclude_list(MyDigiCall[i], &list_digi_callsigns[i]);
+		get_exclude_list(exclude_callsigns[i], &list_exclude_callsigns[i]);
+		get_exclude_frm(exclude_APRS_frm[i], &list_exclude_APRS_frm[i]);
+
+	}
+
+	initTStringList(&list_incoming_mycalls);
+//	initTStringList(&list_incoming_mycalls_sock);
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		for (port = 0; port < port_num; port++)
+		{
+			TAX25Port * AX25Sess = &AX25Port[snd_ch][port];
+
+			AX25Sess->hi_vs = 0;
+			AX25Sess->vs = 0;
+			AX25Sess->vr = 0;
+			AX25Sess->PID = PID_NO_L3;
+			initTStringList(&AX25Sess->in_data_buf);
+			initString(&AX25Sess->out_data_buf);
+			AX25Sess->t1 = 0;
+			AX25Sess->t2 = 0;
+			AX25Sess->t3 = 0;
+			AX25Sess->i_lo = 0;
+			AX25Sess->i_hi = 0;
+			AX25Sess->n1 = 0;
+			AX25Sess->n2 = 0;
+			AX25Sess->status = 0;
+			AX25Sess->clk_frack = 0;
+			initTStringList(&AX25Sess->frame_buf);
+			initTStringList(&AX25Sess->I_frame_buf);
+			initTStringList(&AX25Sess->frm_collector);
+			AX25Sess->corrcall[0] = 0;
+			AX25Sess->mycall[0] = 0;
+			AX25Sess->digi[0] = 0;
+			AX25Sess->Path[0] = 0;
+			AX25Sess->kind[0] = 0;
+			AX25Sess->socket = NULL;
+			ax25_info_init(AX25Sess);
+			clr_frm_win(AX25Sess);
+		}
+	}
+}
+/*
+
+procedure ax25_free;
+var
+  snd_ch,port,i: byte;
+begin
+  for snd_ch:=1 to 4 do
+  for port:=0 to port_num-1 do
+  begin
+	AX25Sess->in_data_buf.Free;
+	AX25Sess->frame_buf.Free;
+	AX25Sess->I_frame_buf.Free;
+	AX25Sess->frm_collector.Free;
+  end;
+  for i:=1 to 4 do
+  begin
+	all_frame_buf[i].Free;
+	list_exclude_callsigns[i].Free;
+	list_exclude_APRS_frm[i].Free;
+	list_digi_callsigns[i].Free;
+  end;
+  list_incoming_mycalls.Free;
+  list_incoming_mycalls_sock.Free;
+end;
+*/
+void  write_ax25_info(TAX25Port * AX25Sess)
+{}
+
+/*var
+  new: boolean;
+  t: text;
+  s: string;
+  time_ses: tdatetime;
+  time_ses_sec: extended;
+  call,mycall,spkt,sbyte,rpkt,rbyte,rfc,tcps,rcps,acps,startses,timeses: string;
+begin
+  if stat_log then
+  begin
+	time_ses:=AX25Sess->info.stat_end_ses-AX25Sess->info.stat_begin_ses;
+	time_ses_sec:=time_ses*86400; //����� ������ � ��������
+	if time_ses_sec<1 then exit;
+	mycall:=copy(AX25Sess->mycall+'         ',1,9);
+	call:=copy(AX25Sess->corrcall+'         ',1,9);
+	spkt:=copy(inttostr(AX25Sess->info.stat_s_pkt)+'         ',1,6);
+	sbyte:=copy(inttostr(AX25Sess->info.stat_s_byte)+'         ',1,9);
+	rpkt:=copy(inttostr(AX25Sess->info.stat_r_pkt)+'         ',1,6);
+	rbyte:=copy(inttostr(AX25Sess->info.stat_r_byte)+'         ',1,9);
+	rfc:=copy(inttostr(AX25Sess->info.stat_r_fc)+'         ',1,6);
+	tcps:=copy(inttostr(round(AX25Sess->info.stat_s_byte/time_ses_sec))+'         ',1,5);
+	rcps:=copy(inttostr(round(AX25Sess->info.stat_r_byte/time_ses_sec))+'         ',1,5);
+	acps:=copy(inttostr(round(AX25Sess->info.stat_s_byte/time_ses_sec+AX25Sess->info.stat_r_byte/time_ses_sec))+'         ',1,5);
+	timeses:=FormatDateTime('hh:mm:ss',time_ses);
+	startses:=FormatDateTime('dd-mm-yy hh:mm:ss',AX25Sess->info.stat_begin_ses);
+	s:=mycall+' '+call+' '+spkt+' '+sbyte+' '+rpkt+' '+rbyte+' '+rfc+' '+tcps+' '+rcps+' '+acps+' '+startses+' '+timeses;
+	assignfile(t,'log.txt');
+	if FileSearch('log.txt','')='' then new:=TRUE else new:=FALSE;
+	if new then
+	begin
+	  rewrite(t);
+	  writeln(t,'Mycall    CorrCall  TXPkt  TXByte    RXPkt  RXByte    FCPkt  TXCPS RXCPS T.CPS Begin session     SesTime');
+	  writeln(t,'--------  --------- ------ --------- ------ --------- ------ ----- ----- ----- ----------------- --------');
+	end
+	else append(t);
+	if (AX25Sess->info.stat_s_byte>0) or (AX25Sess->info.stat_r_byte>0) then writeln(t,s);
+	closefile(t);
+  end;
+end;
+
+end.
+*/
+
+
+/*
+Copyright 2001-2018 John Wiseman G8BPQ
+
+This file is part of LinBPQ/BPQ32.
+
+LinBPQ/BPQ32 is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+LinBPQ/BPQ32 is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with LinBPQ/BPQ32.  If not, see http://www.gnu.org/licenses
+*/
+
+
+
+// Monitor Code - from moncode.asm
+
+
+#define	CMDBIT	4		// CURRENT MESSAGE IS A COMMAND
+#define	RESP 2		// CURRENT MSG IS RESPONSE
+#define	VER1 1 		// CURRENT MSG IS VERSION 1
+
+
+#define	UI	3
+#define	SABM 0x2F
+#define	DISC 0x43
+#define	DM	0x0F
+#define	UA	0x63
+#define	FRMR 0x87
+#define	RR	1
+#define	RNR	5
+#define	REJ	9
+
+#define	PFBIT 0x10		// POLL/FINAL BIT IN CONTROL BYTE
+
+#define	NETROM_PID 0xCF
+#define	IP_PID 0xCC
+#define	ARP_PID 0xCD
+
+#define	NODES_SIG	0xFF
+
+/*
+
+DllExport int APIENTRY SetTraceOptions(int mask, int mtxparam, int mcomparam)
+{
+
+	//	Sets the tracing options for DecodeFrame. Mask is a bit
+	//	mask of ports to monitor (ie 101 binary will monitor ports
+	//	1 and 3). MTX enables monitoring on transmitted frames. MCOM
+	//	enables monitoring of protocol control frames (eg SABM, UA, RR),
+	//	as well as info frames.
+
+	MMASK = mask;
+	MTX = mtxparam;
+	MCOM = mcomparam;
+
+	return (0);
+}
+
+DllExport int APIENTRY SetTraceOptionsEx(int mask, int mtxparam, int mcomparam, int monUIOnly)
+{
+
+	//	Sets the tracing options for DecodeFrame. Mask is a bit
+	//	mask of ports to monitor (ie 101 binary will monitor ports
+	//	1 and 3). MTX enables monitoring on transmitted frames. MCOM
+	//	enables monitoring of protocol control frames (eg SABM, UA, RR),
+	//	as well as info frames.
+
+
+	MMASK = mask;
+	MTX = mtxparam;
+	MCOM = mcomparam;
+	MUIONLY = monUIOnly;
+
+	return 0;
+}
+
+*/
+
+#define USHORT unsigned short
+
+UCHAR	MCOM = 1;
+UCHAR	MTX = 1;
+ULONG	MMASK = 0xF;
+UCHAR	MUIONLY = 0;
+
+#define	SREJ 0x0D
+#define SABME 0x6F
+#define XID 0xAF
+#define TEST 0xE3
+
+#define L4BUSY	0x80		// BNA - DONT SEND ANY MORE
+#define L4NAK	0x40		// NEGATIVE RESPONSE FLAG
+#define L4MORE	0x20		// MORE DATA FOLLOWS - FRAGMENTATION FLAG
+
+#define L4CREQ	1		// CONNECT REQUEST
+#define L4CACK	2		// CONNECT ACK
+#define L4DREQ	3		// DISCONNECT REQUEST
+#define L4DACK	4		// DISCONNECT ACK
+#define L4INFO	5		// INFORMATION
+#define L4IACK	6		// INFORMATION ACK
+
+#pragma pack(1)
+
+struct myin_addr {
+	union {
+		struct { unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b;
+		struct { unsigned short s_w1, s_w2; } S_un_w;
+		unsigned long addr;
+	};
+};
+
+
+typedef struct _IPMSG
+{
+	//       FORMAT OF IP HEADER
+	//
+	//       NOTE THESE FIELDS ARE STORED HI ORDER BYTE FIRST (NOT NORMAL 8086 FORMAT)
+
+	UCHAR	VERLEN;          // 4 BITS VERSION, 4 BITS LENGTH
+	UCHAR	TOS;             // TYPE OF SERVICE
+	USHORT	IPLENGTH;        // DATAGRAM LENGTH
+	USHORT	IPID;            // IDENTIFICATION
+	USHORT	FRAGWORD;        // 3 BITS FLAGS, 13 BITS OFFSET
+	UCHAR	IPTTL;
+	UCHAR	IPPROTOCOL;      // HIGHER LEVEL PROTOCOL
+	USHORT	IPCHECKSUM;      // HEADER CHECKSUM
+	struct myin_addr IPSOURCE;
+	struct myin_addr IPDEST;
+
+	UCHAR	Data;
+
+} IPMSG, *PIPMSG;
+
+
+typedef struct _TCPMSG
+{
+
+	//	FORMAT OF TCP HEADER WITHIN AN IP DATAGRAM
+
+	//	NOTE THESE FIELDS ARE STORED HI ORDER BYTE FIRST (NOT NORMAL 8086 FORMAT)
+
+	USHORT	SOURCEPORT;
+	USHORT	DESTPORT;
+
+	ULONG	SEQNUM;
+	ULONG	ACKNUM;
+
+	UCHAR	TCPCONTROL;			// 4 BITS DATA OFFSET 4 RESERVED
+	UCHAR	TCPFLAGS;			// (2 RESERVED) URG ACK PSH RST SYN FIN
+
+	USHORT	WINDOW;
+	USHORT	CHECKSUM;
+	USHORT	URGPTR;
+
+
+} TCPMSG, *PTCPMSG;
+
+typedef struct _UDPMSG
+{
+
+	//	FORMAT OF UDP HEADER WITHIN AN IP DATAGRAM
+
+	//	NOTE THESE FIELDS ARE STORED HI ORDER BYTE FIRST (NOT NORMAL 8086 FORMAT)
+
+	USHORT	SOURCEPORT;
+	USHORT	DESTPORT;
+	USHORT	LENGTH;
+	USHORT	CHECKSUM;
+	UCHAR	UDPData[0];
+
+} UDPMSG, *PUDPMSG;
+
+//		ICMP MESSAGE STRUCTURE
+
+typedef struct _ICMPMSG
+{
+	//	FORMAT OF ICMP HEADER WITHIN AN IP DATAGRAM
+
+	//	NOTE THESE FIELDS ARE STORED HI ORDER BYTE FIRST (NOT NORMAL 8086 FORMAT)
+
+	UCHAR	ICMPTYPE;
+	UCHAR	ICMPCODE;
+	USHORT	ICMPCHECKSUM;
+
+	USHORT	ICMPID;
+	USHORT	ICMPSEQUENCE;
+	UCHAR	ICMPData[0];
+
+} ICMPMSG, *PICMPMSG;
+
+
+typedef struct _L3MESSAGE
+{
+	//
+	//	NETROM LEVEL 3 MESSAGE - WITHOUT L2 INFO 
+	//
+	UCHAR	L3SRCE[7];			// ORIGIN NODE
+	UCHAR	L3DEST[7];			// DEST NODE
+	UCHAR	L3TTL;				// TX MONITOR FIELD - TO PREVENT MESSAGE GOING								// ROUND THE NETWORK FOR EVER DUE TO ROUTING LOOP
+//
+//	NETROM LEVEL 4 DATA
+//
+	UCHAR	L4INDEX;			// TRANSPORT SESSION INDEX
+	UCHAR	L4ID;				// TRANSPORT SESSION ID
+	UCHAR	L4TXNO;				// TRANSMIT SEQUENCE NUMBER
+	UCHAR	L4RXNO;				// RECEIVE (ACK) SEQ NUMBER
+	UCHAR	L4FLAGS;			// FRAGMENTATION, ACK/NAK, FLOW CONTROL AND MSG TYPE BITS
+
+	UCHAR	L4DATA[236];		//DATA
+
+} L3MESSAGE, *PL3MESSAGE;
+
+
+typedef struct _MESSAGE
+{
+	//	BASIC LINK LEVEL MESSAGE BUFFER LAYOUT
+
+	struct _MESSAGE * CHAIN;
+
+	UCHAR	PORT;
+	USHORT	LENGTH;
+
+	UCHAR	DEST[7];
+	UCHAR	ORIGIN[7];
+
+	//	 MAY BE UP TO 56 BYTES OF DIGIS
+
+	UCHAR	CTL;
+	UCHAR	PID;
+
+	union
+	{                   /*  array named screen */
+		UCHAR L2DATA[256];
+		struct _L3MESSAGE L3MSG;
+	};
+
+
+}MESSAGE, *PMESSAGE;
+
+#pragma pack()
+
+char * strlop(char * buf, char delim);
+UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen);
+char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen);
+UCHAR * DISPLAYIPDATAGRAM(IPMSG * IP, UCHAR * Output, int MsgLen);
+char * DISPLAYARPDATAGRAM(UCHAR * Datagram, UCHAR * Output);
+
+int CountBits(unsigned long in)
+{
+	int n = 0;
+	while (in)
+	{
+		if (in & 1) n++;
+		in >>= 1;
+	}
+	return n;
+}
+
+BOOL ConvToAX25(char * callsign, unsigned char * ax25call)
+{
+	int i;
+
+	memset(ax25call, 0x40, 6);		// in case short
+	ax25call[6] = 0x60;				// default SSID
+
+	for (i = 0; i < 7; i++)
+	{
+		if (callsign[i] == '-')
+		{
+			//
+			//	process ssid and return
+			//
+			i = atoi(&callsign[i + 1]);
+
+			if (i < 16)
+			{
+				ax25call[6] |= i << 1;
+				return (TRUE);
+			}
+			return (FALSE);
+		}
+
+		if (callsign[i] == 0 || callsign[i] == 13 || callsign[i] == ' ' || callsign[i] == ',')
+		{
+			//
+			//	End of call - no ssid
+			//
+			return (TRUE);
+		}
+
+		ax25call[i] = callsign[i] << 1;
+	}
+
+	//
+	//	Too many chars
+	//
+
+	return (FALSE);
+}
+
+
+int ConvFromAX25(unsigned char * incall, char * outcall)
+{
+	int in, out = 0;
+	unsigned char chr;
+
+	memset(outcall, 0x20, 10);
+
+	for (in = 0; in < 6; in++)
+	{
+		chr = incall[in];
+		if (chr == 0x40)
+			break;
+		chr >>= 1;
+		outcall[out++] = chr;
+	}
+
+	chr = incall[6];				// ssid
+
+	if (chr == 0x42)
+	{
+		outcall[out++] = '-';
+		outcall[out++] = 'T';
+		return out;
+	}
+
+	if (chr == 0x44)
+	{
+		outcall[out++] = '-';
+		outcall[out++] = 'R';
+		return out;
+	}
+
+	chr >>= 1;
+	chr &= 15;
+
+	if (chr > 0)
+	{
+		outcall[out++] = '-';
+		if (chr > 9)
+		{
+			chr -= 10;
+			outcall[out++] = '1';
+		}
+		chr += 48;
+		outcall[out++] = chr;
+	}
+	return (out);
+}
+
+
+int IntDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, UINT Mask, BOOL APRS, BOOL MCTL);
+
+int APRSDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, UINT Mask)
+{
+	return IntDecodeFrame(msg, buffer, Stamp, Mask, TRUE, FALSE);
+}
+
+int myDecodeFrame(MESSAGE * msg, char * buffer, int Stamp)
+{
+	return IntDecodeFrame(msg, buffer, Stamp, MMASK, FALSE, FALSE);
+}
+
+int IntDecodeFrame(MESSAGE * msg, char * buffer, time_t Stamp, UINT Mask, BOOL APRS, BOOL MINI)
+{
+	UCHAR * ptr;
+	int n;
+	MESSAGE * ADJBUFFER;
+	ptrdiff_t Work;
+	UCHAR CTL;
+	BOOL PF = 0;
+	char CRCHAR[3] = "  ";
+	char PFCHAR[3] = "  ";
+	int Port;
+	int MSGFLAG = 0;		//CR and V1 flags
+	char * Output = buffer;
+	int HH, MM, SS;
+	char TR = 'R';
+	char From[10], To[10];
+	BOOL Info = 0;
+	BOOL FRMRFLAG = 0;
+	BOOL XIDFLAG = 0;
+	BOOL TESTFLAG = 0;
+
+	size_t MsgLen = msg->LENGTH;
+
+	// MINI mode is for Node Listen (remote monitor) Mode. Keep info to minimum
+/*
+KO6IZ*>K7TMG-1:
+/ex
+KO6IZ*>K7TMG-1:
+b
+KO6IZ*>K7TMG-1 (UA)
+W0TX*>KC6OAR>KB9KC>ID:
+W0TX/R DRC/D W0TX-2/G W0TX-1/B W0TX-7/N
+KC6OAR*>ID:
+*/
+
+//	GET THE CONTROL BYTE, TO SEE IF THIS FRAME IS TO BE DISPLAYED
+
+	n = 8;						// MAX DIGIS
+	ptr = &msg->ORIGIN[6];	// End of Address bit
+
+	while ((*ptr & 1) == 0)
+	{
+		//	MORE TO COME
+
+		ptr += 7;
+		n--;
+
+		if (n == 0)
+		{
+			return 0;						// Corrupt - no end of address bit
+		}
+	}
+
+	// Reached End of digis
+
+	Work = ptr - &msg->ORIGIN[6];			// Work is length of digis
+
+	MsgLen -= Work;
+
+	ADJBUFFER = (MESSAGE *)((UCHAR *)msg + Work);			// ADJBUFFER points to CTL, etc. allowing for digis
+
+	CTL = ADJBUFFER->CTL;
+
+	if (CTL & PFBIT)
+		PF = TRUE;
+
+	CTL &= ~PFBIT;
+
+	if (MUIONLY)
+		if (CTL != 3)
+			return 0;
+
+	if ((CTL & 1) == 0 || CTL == FRMR || CTL == 3)
+	{
+	}
+	else
+	{
+		if (((CTL & 2) && MINI) == 0)		// Want Control (but not super unless MCOM
+			if (MCOM == 0)
+				return 0;						// Dont do control
+	}
+
+
+	Port = msg->PORT;
+
+	if (Port & 0x80)
+	{
+		if (MTX == 0)
+			return 0;							//	TRANSMITTED FRAME - SEE IF MTX ON
+
+		TR = 'T';
+	}
+
+	Port &= 0x7F;
+
+	if (((1 << (Port - 1)) & Mask) == 0)		// Check MMASK
+		return 0;
+
+
+	Stamp = Stamp % 86400;		// Secs
+	HH = (int)(Stamp / 3600);
+
+	Stamp -= HH * 3600;
+	MM = (int)(Stamp / 60);
+
+	SS = (int)(Stamp - MM * 60);
+
+	// Add Port: if MINI mode and monitoring more than one port
+
+	if (MINI == 0)
+		Output += sprintf((char *)Output, "%02d:%02d:%02d%c ", HH, MM, SS, TR);
+	else
+		if (CountBits(Mask) > 1)
+			Output += sprintf((char *)Output, "%d:", Port);
+
+	From[ConvFromAX25(msg->ORIGIN, From)] = 0;
+	To[ConvFromAX25(msg->DEST, To)] = 0;
+
+	Output += sprintf((char *)Output, "%s>%s", From, To);
+
+	//	Display any Digi-Peaters   
+
+	n = 8;					// Max number of digi-peaters
+	ptr = &msg->ORIGIN[6];	// End of Address bit
+
+	while ((*ptr & 1) == 0)
+	{
+		//	MORE TO COME
+
+		From[ConvFromAX25(ptr + 1, From)] = 0;
+		Output += sprintf((char *)Output, ",%s", From);
+
+		ptr += 7;
+		n--;
+
+		if (n == 0)
+			break;
+
+		// See if digi actioned - put a * on last actioned
+
+		if (*ptr & 0x80)
+		{
+			if (*ptr & 1)						// if last address, must need *
+				*(Output++) = '*';
+			else
+				if ((ptr[7] & 0x80) == 0)		// Repeased by next?
+					*(Output++) = '*';			// No, so need *
+		}
+	}
+
+	if (MINI == 0)
+		Output += sprintf((char *)Output, " Port=%d ", Port);
+
+	// Set up CR and PF
+
+	CRCHAR[0] = 0;
+	PFCHAR[0] = 0;
+
+	if (msg->DEST[6] & 0x80)
+	{
+		if (msg->ORIGIN[6] & 0x80)			//	Both set, assume V1
+			MSGFLAG |= VER1;
+		else
+		{
+			MSGFLAG |= CMDBIT;
+			CRCHAR[0] = ' ';
+			CRCHAR[1] = 'C';
+			if (PF)							// If FP set
+			{
+				PFCHAR[0] = ' ';
+				PFCHAR[1] = 'P';
+			}
+		}
+	}
+	else
+	{
+		if (msg->ORIGIN[6] & 0x80)			//	Only Origin Set
+		{
+			MSGFLAG |= RESP;
+			CRCHAR[0] = ' ';
+			CRCHAR[1] = 'R';
+			if (PF)							// If FP set
+			{
+				PFCHAR[0] = ' ';
+				PFCHAR[1] = 'F';
+			}
+		}
+		else
+			MSGFLAG |= VER1;				// Neither, assume V1
+	}
+
+	if ((CTL & 1) == 0)						// I frame
+	{
+		int NS = (CTL >> 1) & 7;			// ISOLATE RECEIVED N(S)
+		int NR = (CTL >> 5) & 7;
+
+		Info = 1;
+
+		if (MINI == 0)
+			Output += sprintf((char *)Output, "<I%s%s S%d R%d>", CRCHAR, PFCHAR, NS, NR);
+	}
+	else if (CTL == 3)
+	{
+		//	Un-numbered Information Frame 
+
+		Output += sprintf((char *)Output, "<UI%s>", CRCHAR);
+		Info = 1;
+	}
+	else if (CTL & 2)
+	{
+		// UN Numbered
+
+		char SUP[6] = "??";
+
+		switch (CTL)
+		{
+		case SABM:
+
+			strcpy(SUP, "C");
+			break;
+
+		case SABME:
+
+			strcpy(SUP, "SABME");
+			break;
+
+		case XID:
+
+			strcpy(SUP, "XID");
+			XIDFLAG = 1;
+			break;
+
+		case TEST:
+
+			strcpy(SUP, "TEST");
+			TESTFLAG = 1;
+			break;
+
+		case DISC:
+
+			strcpy(SUP, "D");
+			break;
+
+		case DM:
+
+			strcpy(SUP, "DM");
+			break;
+
+		case UA:
+
+			strcpy(SUP, "UA");
+			break;
+
+
+		case FRMR:
+
+			strcpy(SUP, "FRMR");
+			FRMRFLAG = 1;
+			break;
+		}
+
+		if (MINI)
+			Output += sprintf((char *)Output, "<%s>", SUP);
+		else
+			Output += sprintf((char *)Output, "<%s%s%s>", SUP, CRCHAR, PFCHAR);
+	}
+	else
+	{
+		// Super
+
+		int NR = (CTL >> 5) & 7;
+		char SUP[5] = "??";
+
+		switch (CTL & 0x0F)
+		{
+		case RR:
+
+			strcpy(SUP, "RR");
+			break;
+
+		case RNR:
+
+			strcpy(SUP, "RNR");
+			break;
+
+		case REJ:
+
+			strcpy(SUP, "REJ");
+			break;
+		case SREJ:
+
+			strcpy(SUP, "SREJ");
+			break;
+		}
+
+		Output += sprintf((char *)Output, "<%s%s%s R%d>", SUP, CRCHAR, PFCHAR, NR);
+
+	}
+
+	if (FRMRFLAG)
+		Output += sprintf((char *)Output, " %02X %02X %02X", ADJBUFFER->PID, ADJBUFFER->L2DATA[0], ADJBUFFER->L2DATA[1]);
+
+	if (XIDFLAG)
+	{
+		// Decode and display XID
+
+		UCHAR * ptr = &ADJBUFFER->PID;
+
+		if (*ptr++ == 0x82 && *ptr++ == 0x80)
+		{
+			int Type;
+			int Len;
+			unsigned int value;
+			int xidlen = *(ptr++) << 8;
+			xidlen += *ptr++;
+
+			// XID is set of Type, Len, Value n-tuples
+
+// G8BPQ-2>G8BPQ:(XID cmd, p=1) Half-Duplex SREJ modulo-128 I-Field-Length-Rx=256 Window-Size-Rx=32 Ack-Timer=3000 Retries=10
+
+
+			while (xidlen > 0)
+			{
+				Type = *ptr++;
+				Len = *ptr++;
+
+				value = 0;
+				xidlen -= (Len + 2);
+
+				while (Len--)
+				{
+					value <<= 8;
+					value += *ptr++;
+				}
+				switch (Type)
+				{
+				case 2:				//Bin fields
+				case 3:
+
+					Output += sprintf((char *)Output, " %d=%x", Type, value);
+					break;
+
+				case 6:				//RX Size
+
+					Output += sprintf((char *)Output, " RX Paclen=%d", value / 8);
+					break;
+
+				case 8:				//RX Window
+
+					Output += sprintf((char *)Output, " RX Window=%d", value);
+					break;
+				}
+			}
+		}
+	}
+	if (Info)
+	{
+		// We have an info frame
+
+		switch (ADJBUFFER->PID)
+		{
+		case 0xF0:		// Normal Data
+		{
+			char Infofield[257];
+			char * ptr1 = Infofield;
+			char * ptr2 = ADJBUFFER->L2DATA;
+			UCHAR C;
+			size_t len;
+
+			MsgLen = MsgLen - (19 + sizeof(void *));
+
+			if (MsgLen < 0 || MsgLen > 257)
+				return 0;				// Duff
+
+			while (MsgLen--)
+			{
+				C = *(ptr2++);
+
+				if (APRS)
+					*(ptr1++) = C;		// MIC-E needs all chars
+				else
+				{
+					// Convert to printable
+
+					C &= 0x7F;
+
+					if (C == 13 || C == 10 || C > 31)
+						*(ptr1++) = C;
+				}
+			}
+
+			len = ptr1 - Infofield;
+
+			Output[0] = ':';
+			Output[1] = 13;
+			memcpy(&Output[2], Infofield, len);
+			Output += (len + 2);
+
+			break;
+		}
+		case NETROM_PID:
+
+			Output = DISPLAY_NETROM(ADJBUFFER, Output, (int)MsgLen);
+			break;
+
+		case IP_PID:
+
+			Output += sprintf((char *)Output, " <IP>\r");
+			Output = DISPLAYIPDATAGRAM((IPMSG *)&ADJBUFFER->L2DATA[0], Output, (int)MsgLen);
+			break;
+
+		case ARP_PID:
+
+			Output = DISPLAYARPDATAGRAM(&ADJBUFFER->L2DATA[0], Output);
+			break;
+
+		case 8:					// Fragmented IP
+
+			n = ADJBUFFER->L2DATA[0];	// Frag Count
+
+			Output += sprintf((char *)Output, "<Fragmented IP %02x>\r", n);
+
+			if (ADJBUFFER->L2DATA[0] & 0x80)	// First Frag - Display Header
+			{
+				Output = DISPLAYIPDATAGRAM((IPMSG *)&ADJBUFFER->L2DATA[2], Output, (int)MsgLen - 1);
+			}
+
+			break;
+		}
+	}
+
+	if (Output[-1] != 13)
+		Output += sprintf((char *)Output, "\r");
+
+	return (int)(Output - buffer);
+
+}
+//      Display NET/ROM data                                                 
+
+char * DISPLAY_NETROM(MESSAGE * ADJBUFFER, UCHAR * Output, int MsgLen)
+{
+	char Alias[7] = "";
+	char Dest[10];
+	char Node[10];
+	UCHAR TTL, Index, ID, TXNO, RXNO, OpCode, Flags, Window;
+	UCHAR * ptr = &ADJBUFFER->L2DATA[0];
+
+	if (ADJBUFFER->L2DATA[0] == NODES_SIG)
+	{
+		// Display NODES
+
+
+		// If an INP3 RIF (type <> UI) decode as such
+
+		if (ADJBUFFER->CTL != 3)		// UI
+			return DisplayINP3RIF(&ADJBUFFER->L2DATA[1], Output, MsgLen - 24);
+
+		memcpy(Alias, ++ptr, 6);
+
+		ptr += 6;
+
+		Output += sprintf((char *)Output, " NODES broadcast from %s\r", Alias);
+
+		MsgLen -= 30;					//Header, mnemonic and signature length
+
+		while (MsgLen > 20)				// Entries are 21 bytes
+		{
+			Dest[ConvFromAX25(ptr, Dest)] = 0;
+			ptr += 7;
+			memcpy(Alias, ptr, 6);
+			ptr += 6;
+			strlop(Alias, ' ');
+			Node[ConvFromAX25(ptr, Node)] = 0;
+			ptr += 7;
+
+			Output += sprintf((char *)Output, "  %s:%s via %s qlty=%d\r", Alias, Dest, Node, ptr[0]);
+			ptr++;
+			MsgLen -= 21;
+		}
+		return Output;
+	}
+
+	//	Display normal NET/ROM transmissions 
+
+	Output += sprintf((char *)Output, " NET/ROM\r  ");
+
+	Dest[ConvFromAX25(ptr, Dest)] = 0;
+	ptr += 7;
+	Node[ConvFromAX25(ptr, Node)] = 0;
+	ptr += 7;
+
+	TTL = *(ptr++);
+	Index = *(ptr++);
+	ID = *(ptr++);
+	TXNO = *(ptr++);
+	RXNO = *(ptr++);
+	OpCode = Flags = *(ptr++);
+
+	OpCode &= 15;				// Remove Flags
+
+	Output += sprintf((char *)Output, "%s to %s ttl %d cct=%02X%02X ", Dest, Node, TTL, Index, ID);
+	MsgLen -= 20;
+
+	switch (OpCode)
+	{
+	case L4CREQ:
+
+		Window = *(ptr++);
+		Dest[ConvFromAX25(ptr, Dest)] = 0;
+		ptr += 7;
+		Node[ConvFromAX25(ptr, Node)] = 0;
+		ptr += 7;
+
+		Output += sprintf((char *)Output, "<CON REQ> w=%d %s at %s", Window, Dest, Node);
+
+		if (MsgLen > 38)				// BPQ Extended Params
+		{
+			short Timeout = (short)*ptr;
+			Output += sprintf((char *)Output, " t/o %d", Timeout);
+		}
+
+		return Output;
+
+	case L4CACK:
+
+		if (Flags & L4BUSY)				// BUSY RETURNED
+			return Output + sprintf((char *)Output, " <CON NAK> - BUSY");
+
+		return Output + sprintf((char *)Output, " <CON ACK> w=%d my cct=%02X%02X", ptr[1], TXNO, RXNO);
+
+	case L4DREQ:
+
+		return Output + sprintf((char *)Output, " <DISC REQ>");
+
+	case L4DACK:
+
+		return Output + sprintf((char *)Output, " <DISC ACK>");
+
+	case L4INFO:
+	{
+		char Infofield[257];
+		char * ptr1 = Infofield;
+		UCHAR C;
+		size_t len;
+
+		Output += sprintf((char *)Output, " <INFO S%d R%d>", TXNO, RXNO);
+
+		if (Flags & L4BUSY)
+			*(Output++) = 'B';
+
+		if (Flags & L4NAK)
+			*(Output++) = 'N';
+
+		if (Flags & L4MORE)
+			*(Output++) = 'M';
+
+		MsgLen = MsgLen - (19 + sizeof(void *));
+
+		if (MsgLen < 0 || MsgLen > 257)
+			return Output;				// Duff
+
+		while (MsgLen--)
+		{
+			C = *(ptr++);
+
+			// Convert to printable
+
+			C &= 0x7F;
+
+			if (C == 13 || C == 10 || C > 31)
+				*(ptr1++) = C;
+		}
+
+		len = ptr1 - Infofield;
+
+		Output[0] = ':';
+		Output[1] = 13;
+		memcpy(&Output[2], Infofield, len);
+		Output += (len + 2);
+	}
+
+	return Output;
+
+	case L4IACK:
+
+		Output += sprintf((char *)Output, " <INFO ACK R%d> ", RXNO);
+
+		if (Flags & L4BUSY)
+			*(Output++) = 'B';
+
+		if (Flags & L4NAK)
+			*(Output++) = 'N';
+
+		if (Flags & L4MORE)
+			*(Output++) = 'M';
+
+		return Output;
+
+
+	case 0:
+
+		//	OPcode zero is used for several things
+
+		if (Index == 0x0c && ID == 0x0c)	// IP	
+		{
+			*(Output++) = 13;
+			*(Output++) = ' ';
+			Output = DISPLAYIPDATAGRAM((IPMSG *)ptr, Output, MsgLen);
+			return Output;
+		}
+
+		if (Index == 0 && ID == 1)			// NRR	
+		{
+			Output += sprintf((char *)Output, " <Record Route>\r");
+
+			MsgLen -= 23;
+
+			while (MsgLen > 6)
+			{
+				Dest[ConvFromAX25(ptr, Dest)] = 0;
+
+				if (ptr[7] & 0x80)
+					Output += sprintf((char *)Output, "%s* ", Dest);
+				else
+					Output += sprintf((char *)Output, "%s ", Dest);
+
+				ptr += 8;
+				MsgLen -= 8;
+			}
+
+			return Output;
+		}
+	}
+
+	Output += sprintf((char *)Output, " <???\?>");
+	return Output;
+}
+
+/*
+
+	PUBLIC	L3IP
+L3IP:
+;
+;	TCP/IP DATAGRAM
+;
+	mov	EBX,OFFSET IP_MSG
+	call	NORMSTR
+;
+	INC	ESI			; NOW POINTING TO IP HEADER
+
+*/
+UCHAR * DISPLAYIPDATAGRAM(IPMSG * IP, UCHAR * Output, int MsgLen)
+{
+	UCHAR * ptr;
+	USHORT FRAGWORD;
+
+	ptr = (UCHAR *)&IP->IPSOURCE;
+	Output += sprintf((char *)Output, "%d.%d.%d.%d>", ptr[0], ptr[1], ptr[2], ptr[3]);
+
+	ptr = (UCHAR *)&IP->IPDEST;
+	Output += sprintf((char *)Output, "%d.%d.%d.%d LEN:%d ", ptr[0], ptr[1], ptr[2], ptr[3], htons(IP->IPLENGTH));
+
+	FRAGWORD = ntohs(IP->FRAGWORD);
+
+	if (FRAGWORD)
+	{
+		// If nonzero, check which bits are set 
+
+		//Bit 0: reserved, must be zero
+		//Bit 1: (DF) 0 = May Fragment,  1 = Don't Fragment.
+		//Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments.
+		//Fragment Offset:  13 bits
+
+		if (FRAGWORD & (1 << 14))
+			Output += sprintf((char *)Output, "DF ");
+
+		if (FRAGWORD & (1 << 13))
+			Output += sprintf((char *)Output, "MF ");
+
+		FRAGWORD &= 0xfff;
+
+		if (FRAGWORD)
+		{
+			Output += sprintf((char *)Output, "Offset %d ", FRAGWORD * 8);
+			return Output;			// Cant display proto fields
+		}
+	}
+
+	if (IP->IPPROTOCOL == 6)
+	{
+		PTCPMSG TCP = (PTCPMSG)&IP->Data;
+
+		Output += sprintf((char *)Output, "TCP Src %d Dest %d ", ntohs(TCP->SOURCEPORT), ntohs(TCP->DESTPORT));
+		return Output;
+	}
+
+	if (IP->IPPROTOCOL == 1)
+	{
+		PICMPMSG ICMPptr = (PICMPMSG)&IP->Data;
+
+		Output += sprintf((char *)Output, "ICMP ");
+
+		if (ICMPptr->ICMPTYPE == 8)
+			Output += sprintf((char *)Output, "Echo Request ");
+		else
+			if (ICMPptr->ICMPTYPE == 0)
+				Output += sprintf((char *)Output, "Echo Reply ");
+			else
+				Output += sprintf((char *)Output, "Code %d", ICMPptr->ICMPTYPE);
+
+		return Output;
+	}
+
+	/*
+		MOV	AL,IPPROTOCOL[ESI]
+		CMP AL,6
+		JNE @F
+
+		MOV EBX, OFFSET TCP
+		CALL NORMSTR
+		JMP ADD_CR
+	@@:
+
+		CMP AL,1
+		JNE @F
+
+		MOV EBX, OFFSET ICMP
+		CALL NORMSTR
+		JMP ADD_CR
+	@@:
+
+		CALL	DISPLAY_BYTE_1		; DISPLAY PROTOCOL TYPE
+
+	;	mov	AL,CR
+	;	call	PUTCHAR
+	;
+	;	MOV	ECX,39			; TESTING
+	;IPLOOP:
+	;	lodsb
+	;	CALL	BYTE_TO_HEX
+	;
+	;	LOOP	IPLOOP
+
+		JMP	ADD_CR
+
+
+	*/
+	return Output;
+}
+
+char * DISPLAYARPDATAGRAM(UCHAR * Datagram, UCHAR * Output)
+{
+	UCHAR * ptr = Datagram;
+	char Dest[10];
+
+	if (ptr[7] == 1)		// Request
+		return Output + sprintf((char *)Output, " ARP Request who has %d.%d.%d.%d? Tell %d.%d.%d.%d",
+			ptr[26], ptr[27], ptr[28], ptr[29], ptr[15], ptr[16], ptr[17], ptr[18]);
+
+	// Response
+
+	Dest[ConvFromAX25(&ptr[8], Dest)] = 0;
+
+	return Output + sprintf((char *)Output, " ARP Reply %d.%d.%d.%d is at %s Tell %d.%d.%d.%d",
+		ptr[15], ptr[16], ptr[17], ptr[18], Dest, ptr[26], ptr[27], ptr[28], ptr[29]);
+
+}
+
+
+UCHAR * DisplayINP3RIF(UCHAR * ptr1, UCHAR * ptr2, unsigned int msglen)
+{
+	char call[10];
+	int calllen;
+	int hops;
+	unsigned short rtt;
+	unsigned int len;
+	unsigned int opcode;
+	char alias[10] = "";
+	UCHAR IP[6];
+	int i;
+
+	ptr2 += sprintf(ptr2, " INP3 RIF:\r Alias  Call  Hops  RTT\r");
+
+	while (msglen > 0)
+	{
+		calllen = ConvFromAX25(ptr1, call);
+		call[calllen] = 0;
+
+		// Validate the call
+
+		for (i = 0; i < calllen; i++)
+		{
+			if (!isupper(call[i]) && !isdigit(call[i]) && call[i] != '-')
+			{
+				ptr2 += sprintf(ptr2, " Corrupt RIF\r");
+				return ptr2;
+			}
+		}
+
+		ptr1 += 7;
+
+		hops = *ptr1++;
+		rtt = (*ptr1++ << 8);
+		rtt += *ptr1++;
+
+		IP[0] = 0;
+		strcpy(alias, "      ");
+
+		msglen -= 10;
+
+		while (*ptr1 && msglen > 0)
+		{
+			len = *ptr1;
+			opcode = *(ptr1 + 1);
+
+			if (len < 2 || len > msglen)
+			{
+				ptr2 += sprintf(ptr2, " Corrupt RIF\r");
+				return ptr2;
+			}
+			if (opcode == 0 && len < 9)
+			{
+				memcpy(&alias[6 - (len - 2)], ptr1 + 2, len - 2);		// Right Justiify
+			}
+			else
+				if (opcode == 1 && len < 8)
+				{
+					memcpy(IP, ptr1 + 2, len - 2);
+				}
+
+			ptr1 += len;
+			msglen -= len;
+		}
+
+		if (IP[0])
+			ptr2 += sprintf(ptr2, " %s:%s %d %4.2d %d.%d.%d.%d\r", alias, call, hops, rtt, IP[0], IP[1], IP[2], IP[3]);
+		else
+			ptr2 += sprintf(ptr2, " %s:%s %d %4.2d\r", alias, call, hops, rtt);
+
+		ptr1++;
+		msglen--;		// EOP
+	}
+
+	return ptr2;
+}
+
+
diff --git a/ax25_agw.c b/ax25_agw.c
new file mode 100644
index 0000000..e190541
--- /dev/null
+++ b/ax25_agw.c
@@ -0,0 +1,1487 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+extern char modes_name[modes_count][20];
+extern int RSID_SABM[4];
+extern int RSID_UI[4];
+extern int RSID_SetModem[4];
+extern int needRSID[4];
+
+/*
+
+
+unit ax25_agw;
+
+interface
+
+uses sysutils,classes;
+
+  void AGW_init;
+  void AGW_free;
+  void AGW_add_socket(socket integer);
+  void AGW_del_socket(socket integer);
+  void AGW_send_to_app(socket integer; data string);
+  void AGW_AX25_frame_analiz(snd_ch byte; RX boolean; frame string);
+  void AGW_frame_analiz(Socket Integer; frame string);
+  void AGW_explode_frame(Socket Integer; data string);
+  void AGW_AX25_conn(socket integer; snd_ch, mode byte; path string);
+  void AGW_AX25_disc(socket integer; snd_ch, mode byte; path string);
+  void AGW_AX25_data_in(socket integer; snd_ch,PID byte; path,data string);
+  void AGW_Raw_monitor(snd_ch byte; data string);
+  void AGW_frame_header(AGWPort,DataKind,PID,CallFrom,CallTo string; Len word) string;
+  void AGW_C_Frame(port char; CallFrom,CallTo,Conn_MSG string) string;
+  void erase_zero_ssid(call string) string;
+  void AGW_get_socket(socket integer) integer;
+  void clr_zero(data string) string;
+
+type TAGWUser = record
+  socket TStringList;
+  AGW_frame_buf TStringList;
+  Monitor TStringList;
+  Monitor_raw TStringList;
+};
+*/
+
+void AGW_AX25_frame_analiz(int snd_ch, int RX, string * frame);
+
+void AGW_frame_analiz(AGWUser *  AGW);
+void AGW_send_to_app(void * socket, string * data);
+string * make_frame(string * data, Byte * path, Byte  pid, Byte nr, Byte ns, Byte f_type, Byte f_id, boolean rpt, boolean pf, boolean cr);
+void del_incoming_mycalls_by_sock(void * socket);
+void del_incoming_mycalls(char * src_call);
+void send_data_buf(TAX25Port * AX25Sess, int  nr);
+void get_monitor_path(Byte * path, char * mycall, char * corrcall, char * digi);
+void decode_frame(Byte * frame, int len, Byte * path, string * data,
+	Byte * pid, Byte * nr, Byte * ns, Byte * f_type, Byte * f_id,
+	Byte *  rpt, Byte * pf, Byte * cr);
+
+
+int AGWVersion[2] = {2019, 'B'};		// QTSM Signature
+
+  //ports_info1='1;Port1 with LoopBack Port;
+
+#define    LSB 29
+#define    MSB 30
+#define    MON_ON '1'
+#define    MON_OFF '0'
+#define    MODE_OUR 0
+#define    MODE_OTHER 1
+#define    MODE_RETRY 2
+
+
+AGWUser ** AGWUsers = NULL;				// List of currently connected clients
+int AGWConCount = 0;
+
+
+struct AGWHeader
+{
+	int Port;
+	unsigned char DataKind;
+	unsigned char filler2;
+	unsigned char PID;
+	unsigned char filler3;
+	char callfrom[10];
+	char callto[10];
+	int DataLength;
+	int reserved;
+};
+
+#define AGWHDDRRLEN sizeof(struct AGWHeader)
+
+
+struct AGWSocketConnectionInfo
+{
+	int Number;					// Number of record - for AGWConnections display
+	void *socket;
+//	SOCKADDR_IN sin;
+	BOOL SocketActive;
+	BOOL RawFlag;
+	BOOL MonFlag;
+	unsigned char CallSign1[10];
+	unsigned char CallSign2[10];
+	BOOL GotHeader;
+	int MsgDataLength;
+	struct AGWHeader AGWRXHeader;
+};
+
+
+AGWUser * AGW_get_socket(void * socket)
+{
+	int i;
+	AGWUser * AGW = NULL;
+
+	if (AGWConCount == 0)
+		return NULL;
+
+	for (i = 0; i < AGWConCount; i++)
+	{
+		if (AGWUsers[i]->socket == socket)
+		{
+			AGW = AGWUsers[i];
+			break;
+		}
+	}
+	return AGW;
+}
+
+
+void AGW_del_socket(void * socket)
+{
+	AGWUser * AGW = AGW_get_socket(socket);
+	TAX25Port * AX25Sess = NULL;
+
+	int i = 0;
+	int port = 0;
+
+	// Close any connections
+
+	for (port = 0; port < 4; port++)
+	{
+		for (i = 0; i < port_num; i++)
+		{
+			AX25Sess = &AX25Port[port][i];
+
+			if (AX25Sess->status != STAT_NO_LINK && AX25Sess->socket == socket)
+			{
+				rst_timer(AX25Sess);
+				set_unlink(AX25Sess, AX25Sess->Path);
+			}
+		}
+	}
+
+	// Clear registrations
+
+	del_incoming_mycalls_by_sock(socket);
+
+	if (AGW == NULL)
+		return;
+
+	Clear(&AGW->AGW_frame_buf);
+	freeString(AGW->data_in);
+	AGW->Monitor = 0;
+	AGW->Monitor_raw = 0;
+	AGW->reportFreqAndModem = 0;
+}
+
+
+
+void AGW_add_socket(void * socket)
+{
+	AGWUser * User = (struct AGWUser_t *)malloc(sizeof(struct AGWUser_t));			// One Client
+	memset(User, 0, sizeof(struct AGWUser_t));
+
+	AGWUsers = realloc(AGWUsers, (AGWConCount + 1) * sizeof(void *));
+	
+	AGWUsers[AGWConCount++] = User;
+
+	User->data_in = newString();
+	User->socket = socket;
+
+	User->Monitor = 0;
+	User->Monitor_raw = 0;
+	User->reportFreqAndModem = 0;
+};
+
+
+
+
+void agw_free()
+{
+ // AGWUser.AGW_frame_buf.Free;
+ // AGWUser.Monitor.Free;
+ // AGWUser.Monitor_raw.Free;
+ // AGWUser.socket.Free;
+};
+
+/*
+void erase_zero_ssid(call string) string;
+var
+  p byte;
+{
+  p = pos('-0',call);
+  if (p>0 ) delete(call,p,2);
+  result = call;
+};
+*/
+
+string * AGW_frame_header(char AGWPort, char DataKind, UCHAR PID, char * CallFrom, char * CallTo, int Len )
+{
+	string * Msg = newString();
+
+	struct AGWHeader * Hddr = (struct AGWHeader *)Msg->Data;
+	memset(Hddr, 0, sizeof(struct AGWHeader));
+
+	Hddr->Port = AGWPort;
+	Hddr->DataLength = Len;
+	Hddr->DataKind = DataKind;
+	Hddr->PID = PID;
+	strcpy(Hddr->callfrom, CallFrom);
+	strcpy(Hddr->callto, CallTo);
+
+	Msg->Length = sizeof(struct AGWHeader);
+	return Msg;
+};
+
+
+
+// AGW to APP frames
+
+string * AGW_R_Frame()
+{
+	string * Msg = AGW_frame_header(0, 'R', 0, "", "", 8);
+	
+	stringAdd(Msg, (UCHAR *)AGWVersion, 8);
+
+	return Msg;
+};
+
+
+string * AGW_X_Frame(char * CallFrom,  UCHAR reg_call)
+{
+	string * Msg = AGW_frame_header(0, 'x', 0, CallFrom, "", 1);
+
+	stringAdd(Msg, (UCHAR *)&reg_call, 1);
+
+	return Msg;
+
+};
+
+string * AGW_G_Frame()
+{
+	char Ports[256] = "0;";
+	char portMsg[64];
+
+	string * Msg;
+	
+	for (int i = 0; i < 4; i++)
+	{
+		Ports[0]++;
+		if (soundChannel[i])
+			sprintf(portMsg, "Port%c with SoundCard Ch %c;", Ports[0], 'A' + i);
+		else
+			sprintf(portMsg, "Port%c Disabled;", Ports[0]);
+
+		strcat(Ports, portMsg);
+	}
+
+
+	Msg = AGW_frame_header(0, 'G', 0, "", "", strlen(Ports) + 1);
+
+	stringAdd(Msg, (UCHAR *)Ports, strlen(Ports) + 1);
+
+	return Msg;
+};
+
+
+
+string * AGW_Gs_Frame(int port, Byte * port_info, int Len)
+{
+	string * Msg;
+
+	Msg = AGW_frame_header(port, 'g', 0, "", "", Len);
+	stringAdd(Msg, port_info, Len);
+	return Msg;
+};
+
+
+/*
+void AGW_Ys_Frame(port char; frame_outstanding string) string;
+var
+  DataLen word;
+{
+  DataLen = 4;
+  result = AGW_frame_header(port,'y','','','',DataLen)+frame_outstanding;
+};
+
+/
+void AGW_Y_Frame(port char; CallFrom,CallTo,frame_outstanding string) string;
+var
+  DataLen word;
+{
+  DataLen = 4;
+  result = AGW_frame_header(port,'Y','',CallFrom,CallTo,DataLen)+frame_outstanding;
+};
+
+*/
+
+
+string * AGW_Y_Frame(int port, char * CallFrom, char *CallTo, int frame_outstanding)
+{
+	string * Msg;
+	
+	Msg = AGW_frame_header(port, 'Y', 0, CallFrom, CallTo, 4);
+
+	stringAdd(Msg, (UCHAR *)&frame_outstanding, 4);
+	return Msg;
+}
+
+/*
+
+void AGW_H_Frame(port char; heard string) string;
+var
+  DataLen word;
+{
+  DataLen = length(heard);
+  result = AGW_frame_header(port,'H','','','',DataLen)+heard;
+};
+*/
+
+
+string *  AGW_C_Frame(int port, char * CallFrom, char * CallTo, string * Conn_MSG)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = Conn_MSG->Length;
+
+	Msg = AGW_frame_header(port, 'C', 240, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, Conn_MSG->Data, Conn_MSG->Length);
+
+	freeString(Conn_MSG);
+
+	return Msg;
+}
+
+string * AGW_Ds_Frame(int port, char * CallFrom, char * CallTo, string * Disc_MSG)
+{
+	string * Msg;
+	int DataLen;
+	
+	DataLen = Disc_MSG->Length;
+
+	Msg = AGW_frame_header(port, 'd', 240, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, Disc_MSG->Data, Disc_MSG->Length);
+
+	freeString(Disc_MSG);
+
+	return Msg;
+};
+
+
+string * AGW_D_Frame(int port, int PID, char * CallFrom, char * CallTo, string * Data)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = Data->Length;
+
+	Msg = AGW_frame_header(port, 'D', PID, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, Data->Data, Data->Length);
+
+	freeString(Data);
+
+	return Msg;
+}
+
+
+
+string *  AGW_I_Frame(int port, char * CallFrom, char * CallTo, char * Monitor)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = strlen(Monitor);
+	Msg = AGW_frame_header(port, 'I', 0, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, (Byte *)Monitor, DataLen);
+	return Msg;
+}
+
+string *  AGW_S_Frame(int port, char * CallFrom, char * CallTo, char * Monitor)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = strlen(Monitor);
+	Msg = AGW_frame_header(port, 'S', 0, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, (Byte *)Monitor, DataLen);
+	return Msg;
+};
+
+string *  AGW_U_Frame(int port, char * CallFrom, char * CallTo, char * Monitor)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = strlen(Monitor);
+	Msg = AGW_frame_header(port, 'U', 0, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, (Byte *)Monitor, DataLen);
+	return Msg;
+}
+
+
+string * AGW_T_Frame(int port, char * CallFrom, char * CallTo, char * Data)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = strlen(Data);
+	Msg = AGW_frame_header(port, 'T', 0, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, (Byte *)Data, DataLen);
+
+	return Msg;
+}
+
+// Raw Monitor 
+string * AGW_K_Frame(int port, int PID, char * CallFrom, char * CallTo, string * Data)
+{
+	string * Msg;
+	int DataLen;
+
+	DataLen = Data->Length;
+
+	Msg = AGW_frame_header(port, 'K', PID, CallFrom, CallTo, DataLen);
+
+	stringAdd(Msg, Data->Data, Data->Length);
+
+	freeString(Data);
+
+	return Msg;
+}
+
+// APP to AGW frames
+
+void on_AGW_P_frame(AGWUser * AGW)
+{
+	UNUSED(AGW);
+}
+
+void on_AGW_X_frame(AGWUser * AGW, char * CallFrom)
+{
+	Byte reg_call;
+
+	if (add_incoming_mycalls(AGW->socket, CallFrom))
+		reg_call = 1;
+	else
+		reg_call = 0;
+ 
+	AGW_send_to_app(AGW->socket, AGW_X_Frame(CallFrom, reg_call));
+}
+
+
+void on_AGW_Xs_frame(char * CallFrom)
+{
+	del_incoming_mycalls(CallFrom);
+};
+
+void on_AGW_G_frame(AGWUser * AGW)
+{
+  AGW_send_to_app(AGW->socket, AGW_G_Frame());
+};
+
+
+void on_AGW_Ms_frame(AGWUser * AGW)
+{
+	AGW->Monitor ^= 1;				// Flip State
+}
+
+
+void on_AGW_R_frame(AGWUser * AGW)
+{
+  AGW_send_to_app(AGW->socket, AGW_R_Frame());
+}
+
+int refreshModems = 0;
+
+
+void on_AGW_Gs_frame(AGWUser * AGW, struct AGWHeader * Frame, Byte * Data)
+{
+	// QTSM with a data field is used by QtSM to set/read Modem Params
+
+	Byte info[44] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
+	int Len = 12;
+
+	if (Frame->DataLength == 32)
+	{
+		// BPQ to QTSM private Format. 
+
+		int Freq;
+		Byte versionBytes[4] = VersionBytes;
+
+		AGW->reportFreqAndModem = 1;			// Can report frequency and Modem
+
+		memcpy(&Freq, Data, 4);
+
+		if (Freq)
+		{
+			// Set Frequency
+
+			memcpy(&rx_freq[Frame->Port], Data, 2);
+			refreshModems = 1;
+		}
+
+		if (Data[4])
+		{
+			// New Modem Name. Need to convert to index
+
+			int n;
+
+			for (n = 0; n < modes_count; n++)
+			{
+				if (strcmp(modes_name[n], &Data[4]) == 0)
+				{
+					// Found it
+
+					speed[Frame->Port] = n;
+					refreshModems = 1;
+					break;
+				}
+			}
+		}
+
+		// Return Freq and Modem
+
+		memcpy(&info[12], &rx_freq[Frame->Port], 2);
+		memcpy(&info[16], modes_name[speed[Frame->Port]], 20);
+		info[37] = speed[Frame->Port];			// Index
+		memcpy(&info[38], versionBytes, 4);
+
+		Len = 44;
+		AGW_send_to_app(AGW->socket, AGW_Gs_Frame(Frame->Port, info, Len));
+		return;
+	}
+	AGW_send_to_app(AGW->socket, AGW_Gs_Frame(Frame->Port, info, Len));
+};
+/*
+void on_AGW_H_Frame(socket integer; port char);
+{
+};
+
+void on_AGW_Ys_Frame(socket integer; port char);
+var
+  snd_ch,i byte;
+  info string;
+  frames word;
+{
+  frames = 0;
+  //for i = 0 to port_num-1 do frames = frames+AX25port[i].frame_buf.Count;
+  snd_ch = ord(Port)+1;
+  for i = 0 to port_num-1 do frames = frames+AX25port[snd_ch][i].in_data_buf.Count+AX25port[snd_ch][i].I_frame_buf.Count;
+  info = chr(lo(frames))+chr(hi(frames))+#0#0;
+  AGW_send_to_app(socket,AGW_Ys_Frame(port,info));
+};
+
+*/
+
+void on_AGW_Y_frame(void * socket, int snd_ch, char * CallFrom, char * CallTo)
+{
+	int  frames;
+	TAX25Port * AX25Sess;
+
+	AX25Sess = get_user_port_by_calls(snd_ch, CallFrom, CallTo);
+
+	if (AX25Sess)
+	{
+		//frames = AX25port[snd_ch][user_port].in_data_buf.Count;
+		frames = AX25Sess->in_data_buf.Count + AX25Sess->I_frame_buf.Count;
+;
+		AGW_send_to_app(socket, AGW_Y_Frame(snd_ch, CallFrom, CallTo, frames));
+	}
+}
+
+// UI Transmit
+
+void on_AGW_M_frame(int port, Byte PID, char * CallFrom, char *CallTo, Byte *  Msg, int MsgLen)
+{
+	Byte path[80];
+	char Calls[80];
+	string * Data = newString();
+
+	stringAdd(Data, Msg, MsgLen);
+
+	sprintf(Calls, "%s,%s", CallTo, CallFrom);
+
+	get_addr(Calls, path);
+
+	Add(&all_frame_buf[port],
+		make_frame(Data, path, PID, 0, 0, U_FRM, U_UI, FALSE, SET_F, SET_C));
+
+}
+
+
+void on_AGW_C_frame(AGWUser * AGW, struct AGWHeader * Frame)
+{
+	int snd_ch = Frame->Port;
+	char * CallFrom = Frame->callfrom;
+	char * CallTo = Frame->callto;
+
+	char path[128];
+	Byte axpath[80];
+
+	TAX25Port * AX25Sess;
+
+	// Also used for 'v' - connect via digis
+
+	AX25Sess = get_free_port(snd_ch);
+
+	if (AX25Sess)
+	{
+		AX25Sess->snd_ch = snd_ch;
+
+		strcpy(AX25Sess->mycall, CallFrom);
+		strcpy(AX25Sess->corrcall, CallTo);
+
+		sprintf(path, "%s,%s", CallTo, CallFrom);
+
+
+		if (Frame->DataLength)
+		{
+			// Have digis
+
+			char * Digis = (char *)Frame + 36;
+			int nDigis = Digis[0];
+
+			Digis++;
+
+			while(nDigis--)
+			{
+				sprintf(path, "%s,%s", path, Digis);
+				Digis += 10;
+			}
+		}
+
+		AX25Sess->digi[0] = 0;
+
+//		rst_timer(snd_ch, free_port);
+
+		strcpy(AX25Sess->kind, "Outgoing");
+		AX25Sess->socket = AGW->socket;
+
+		AX25Sess->pathLen = get_addr(path, axpath);
+
+		if (AX25Sess->pathLen == 0)
+			return;						// Invalid Path
+
+		strcpy((char *)AX25Sess->Path, (char *)axpath);
+		reverse_addr(axpath, AX25Sess->ReversePath, AX25Sess->pathLen);
+
+		if (RSID_SABM[snd_ch])			// Send RSID before SABM/UA
+			needRSID[snd_ch] = 1;
+
+		set_link(AX25Sess, AX25Sess->Path);
+	};
+};
+
+
+
+
+
+void on_AGW_D_frame(int snd_ch, char * CallFrom, char * CallTo, Byte * Msg, int Len)
+{
+	TAX25Port * AX25Sess;
+
+	AX25Sess = get_user_port_by_calls(snd_ch, CallFrom, CallTo);
+
+	if (AX25Sess)
+	{
+		string * data = newString();
+
+		stringAdd(data, Msg, Len);
+
+		Add(&AX25Sess->in_data_buf, data);
+
+		send_data_buf(AX25Sess, AX25Sess->vs);
+	}
+}
+
+void on_AGW_Ds_frame(void * socket, int snd_ch, char * CallFrom, char * CallTo)
+{
+	TAX25Port * AX25Sess;
+
+	AX25Sess = get_user_port_by_calls(snd_ch, CallFrom, CallTo);
+
+	if (AX25Sess)
+	{
+		rst_timer(AX25Sess);
+
+		set_unlink(AX25Sess, AX25Sess->Path);
+	}
+	else
+	{
+		string * Msg = newString();
+
+		Msg->Length = sprintf((char *)Msg->Data, "*** DISCONNECTED From Station %s\r", CallTo);
+		Msg->Length++;					// Include the terminating NULL
+
+		//del_outgoing_mycalls(CallTo);
+
+		AGW_send_to_app(socket, AGW_Ds_Frame(snd_ch, CallTo, CallFrom, Msg));
+	}
+}
+
+
+/*
+
+void on_AGW_Vs_Frame(socket integer; port char; CallFrom,CallTo,Data string);
+var
+  snd_ch,num_digi,free_port byte;
+  need_free_port boolean;
+  digi,call,call1 string;
+{
+  snd_ch = ord(Port)+1;
+  num_digi = 0;
+  need_free_port = get_free_port(snd_ch,free_port);
+  if (need_free_port )
+  {
+    digi = '';
+    get_call(CallFrom,AX25Port[snd_ch][free_port].mycall);
+    get_call(CallTo,AX25Port[snd_ch][free_port].corrcall);
+    if (length(data)>0 ) { num_digi = ord(data[1]); delete(data,1,1); };
+    if ((num_digi in [1..7]) and (length(data)>=num_digi*10) )
+    {
+      repeat
+        call = clr_zero(copy(data,1,10)); delete(data,1,10);
+        if (call<>'' )
+        {
+          get_call(call,call1);
+          if (digi='' ) digi = call1
+          else digi = digi+','+call1;
+        };
+      until data='';
+      AX25Port[snd_ch][free_port].digi = reverse_digi(digi);
+      rst_timer(snd_ch,free_port);
+      AX25Port[snd_ch][free_port].kind = 'Outgoing';
+      AX25Port[snd_ch][free_port].socket = socket;
+      set_link(snd_ch,free_port,CallTo+','+CallFrom);
+    };
+  };
+};
+
+void on_AGW_V_Frame(socket integer; port char; PID,CallFrom,CallTo,Data string);
+var
+  call,call1,digi,path string;
+  snd_ch byte;
+  num_digi byte;
+  i byte;
+{
+  digi = '';
+  snd_ch = ord(port)+1;
+  num_digi = 0;
+  if (length(data)>0 ) { num_digi = ord(data[1]); delete(data,1,1); };
+  if ((num_digi in [1..7]) and (length(data)>=num_digi*10) )
+  {
+    for i = 1 to num_digi do
+    {
+      call = clr_zero(copy(data,1,10)); delete(data,1,10);
+      if (call<>'' )
+      {
+        get_call(call,call1);
+        if (digi='' ) digi = call1
+        else digi = digi+','+call1;
+      };
+    };
+  };
+  path = CallTo+','+CallFrom+','+digi;
+  all_frame_buf[snd_ch].Add(make_frame(Data,path,ord(PID[1]),0,0,U_FRM,U_UI,FALSE,SET_F,SET_C));
+};
+
+void on_AGW_Cs_Frame(socket integer; port char; PID,CallFrom,CallTo string);
+{
+};
+*/
+
+void on_AGW_K_frame(struct AGWHeader * Frame)
+{
+	// KISS frame
+
+	unsigned short CRC;
+	UCHAR CRCString[2];
+	string * TXMSG;
+
+	UCHAR * Data = (UCHAR * )Frame;
+	int Len = Frame->DataLength;
+
+	Data = &Data[AGWHDDRRLEN];
+
+	TXMSG = newString();
+
+	stringAdd(TXMSG, Data, Len);		// include Control
+
+	CRC = get_fcs(&Data[1], Len - 1);
+
+	CRCString[0] = CRC & 0xff;
+	CRCString[1] = CRC >> 8;
+
+	stringAdd(TXMSG, CRCString, 2);
+
+	Add(&all_frame_buf[Frame->Port], TXMSG);
+
+	// for now assume only used for sending UI
+
+	if (RSID_UI[Frame->Port])			// Send RSID before UI
+		needRSID[Frame->Port] = 1;
+
+}
+
+void on_AGW_Ks_frame(AGWUser * AGW)
+{
+	AGW->Monitor_raw ^= 1;			// Flip State
+}
+
+// Analiz incoming frames
+
+void AGW_explode_frame(void * socket, UCHAR * data, int length)
+{
+	int AGWHeaderLen = sizeof(struct AGWHeader);
+	int i;
+
+	AGWUser *  AGW = NULL;
+
+	if (AGWConCount == 0)
+		return;
+
+	for (i = 0; i < AGWConCount; i++)
+	{
+		if (AGWUsers[i]->socket == socket)
+		{
+			AGW = AGWUsers[i];
+			break;
+		}
+	}
+
+	if (AGW == NULL)
+		return;
+
+	stringAdd(AGW->data_in, data, length);
+
+	while (AGW->data_in->Length >= AGWHeaderLen)		// Make sure have at least header
+	{
+		struct AGWHeader * Hddr = (struct AGWHeader *)AGW->data_in->Data;
+
+		int AgwLen = Hddr->DataLength + AGWHeaderLen;
+
+		if (AgwLen < AGWHeaderLen)						// Corrupt
+		{
+			AGW->data_in->Length = 0;
+			return;
+		}
+
+		if (AGW->data_in->Length >= AgwLen)
+		{
+			// Have frame as well
+
+			if (AGW->data_in->Data[0] == 0xC0)			// Getting KISS Data on AGW Port
+			{
+				AGW->data_in->Length = 0;				// Delete data
+				return;
+			}
+		
+			AGW_frame_analiz(AGW);
+			mydelete(AGW->data_in, 0, AgwLen);
+		}
+		else
+			return;					// Wait for the data
+	}
+
+
+
+
+	/*
+	idx = AGW_get_socket(socket);
+	 if (idx>=0 )
+	 {
+	   AGWUser.AGW_frame_buf.Strings[idx] = AGWUser.AGW_frame_buf.Strings[idx]+data;
+	   str_buf = AGWUser.AGW_frame_buf.Strings[idx];
+	   repeat
+		 done = FALSE;
+		 BufLen = length(str_buf);
+		 if (BufLen>=HEADER_SIZE )
+		 {
+		   DataLen = ord(str_buf[LSB])+ord(str_buf[MSB])*256;
+		   FrameLen = HEADER_SIZE+DataLen;
+		   if (length(str_buf)>=FrameLen )
+		   {
+			 frame = copy(str_buf,1,FrameLen);
+			 delete(str_buf,1,FrameLen);
+			 done = TRUE;
+			 AGW_frame_analiz(socket,frame);
+		   };
+		 };
+	   until not done;
+	   // Check if (socket is still present and has same index
+	   if ((AGWUser.socket.Count>idx) and (AGWUser.socket.Strings[idx]=inttostr(socket)) )
+		 AGWUser.AGW_frame_buf.Strings[idx] = str_buf;
+	 };
+	 */
+};
+
+/*
+void clr_zero(data string) string;
+var
+  p,i word;
+  s string;
+{
+  s = '';
+  p = pos(#0,data);
+  if (p>1 ) data = copy(data,1,p-1);
+  if (length(data)>0 ) for i = 1 to length(data) do if (data[i]>#31 ) s = s+data[i];
+  result = s;
+};
+
+void AGW_parse_frame(frame string; var DataKind,PID,AGWPort char; var Pass,CallFrom,CallTo,DataLen,Data string);
+{
+  DataKind = frame[5];
+  PID = frame[7];
+  AGWPort = frame[1];
+  Pass = '';
+  CallFrom = clr_zero(copy(frame,9,10));
+  CallTo = clr_zero(copy(frame,19,10));
+  get_call(CallFrom,CallFrom);
+  get_call(CallTo,CallTo);
+  DataLen = inttostr(ord(frame[LSB])+ord(frame[MSB])*256);
+  if (length(frame)>HEADER_SIZE ) Data = copy(frame,37,strtoint(DataLen)) else Data = '';
+};
+
+*/
+
+void AGW_send_to_app(void * socket, string * data)
+{
+	char * Msg = malloc(data->Length);
+	memcpy(Msg, data->Data, data->Length);
+	// can use KISS proc as it just sends to the supplied socket but need copy of message
+	KISSSendtoServer(socket, (Byte *)Msg, data->Length);
+	freeString(data);
+};
+
+
+void AGW_AX25_data_in(void  * socket, int snd_ch, int PID, Byte * path, string * data)
+{
+	int len = 250, sendlen;
+
+	char CallFrom[10];
+	char CallTo[10];
+
+	string * pkt;
+
+	CallTo[ConvFromAX25(&path[7], CallTo)] = 0;
+	CallFrom[ConvFromAX25(path, CallFrom)] = 0;
+
+	while (data->Length)
+	{
+		if (data->Length > len)
+			sendlen = len;
+		else
+			sendlen = data->Length;
+
+		pkt = copy(data, 0, sendlen);
+		mydelete(data, 0, sendlen);
+
+		AGW_send_to_app(socket, AGW_D_Frame(snd_ch, PID, CallFrom, CallTo, pkt));
+	}
+
+}
+
+void AGW_AX25_conn(TAX25Port * AX25Sess, int snd_ch, Byte mode)
+{
+	string * Msg = newString();
+
+	switch (mode)
+	{
+	case MODE_OTHER:
+
+		Msg->Length = sprintf((char *)Msg->Data, "*** CONNECTED To Station  %s\r", AX25Sess->corrcall);
+		break;
+
+	case MODE_OUR:
+
+		Msg->Length = sprintf((char *)Msg->Data, "*** CONNECTED With Station %s\r", AX25Sess->corrcall);
+		break;
+
+	};
+
+	Msg->Length++;					// Include the terminating NULL
+
+	AGW_send_to_app(AX25Sess->socket, AGW_C_Frame(snd_ch, AX25Sess->corrcall, AX25Sess->mycall, Msg));
+};
+
+
+
+void AGW_AX25_disc(TAX25Port * AX25Sess, Byte mode)
+{
+	string * Msg = newString();
+
+	switch (mode)
+	{
+
+	case MODE_OTHER:
+	case MODE_OUR:
+
+		Msg->Length = sprintf((char *)Msg->Data, "*** DISCONNECTED From Station %s\r", AX25Sess->corrcall);
+		break;
+
+	case MODE_RETRY:
+
+		Msg->Length = sprintf((char *)Msg->Data, "*** DISCONNECTED RETRYOUT With Station %s\r", AX25Sess->corrcall);
+		break;
+
+	};
+
+	Msg->Length++;					// Include the terminating NULL
+
+	//del_outgoing_mycalls(CallTo);
+
+	AGW_send_to_app(AX25Sess->socket, AGW_Ds_Frame(AX25Sess->snd_ch, AX25Sess->corrcall, AX25Sess->mycall, Msg));
+};
+
+
+void AGW_frame_monitor(Byte snd_ch, Byte * path, string * data, Byte pid, Byte nr, Byte ns, Byte f_type, Byte f_id, Byte  rpt, Byte pf, Byte cr, Byte RX)
+{
+	char mon_frm[512];
+	char AGW_path[256];
+	string * AGW_data = NULL;
+
+	const char * frm;
+	Byte * datap = data->Data;
+	Byte _data[512];
+	Byte * p_data = _data;
+	int _datalen;
+
+	char  agw_port;
+	char  CallFrom[10], CallTo[10], Digi[80];
+
+	integer i;
+	const char * ctrl;
+	int len;
+
+	AGWUser * AGW;
+
+	UNUSED(rpt);
+
+	len = data->Length;
+
+	//	if (pid == 0xCF)
+	//		data = parse_NETROM(data, f_id);
+		// IP parsing
+	//	else if (pid == 0xCC)
+	//		data = parse_IP(data);
+		// ARP parsing
+	//	else if (pid == 0xCD)
+	//		data = parse_ARP(data);
+		//
+
+	if (len > 0)
+	{
+		for (i = 0; i < len; i++)
+		{
+			if (datap[i] > 31 || datap[i] == 13 || datap[i] == 9)
+				*(p_data++) = datap[i];
+		}
+	}
+
+	_datalen = p_data - _data;
+
+	if (_datalen)
+	{
+		Byte * ptr = _data;
+		i = 0;
+
+		// remove successive cr or cr on end		while (i < _datalen)
+
+		while (i < _datalen)
+		{
+			if ((_data[i] == 13) && (_data[i + 1] == 13))
+				i++;
+			else
+				*(ptr++) = _data[i++];
+		}
+
+		if (*(ptr - 1) == 13)
+			ptr--;
+
+		*ptr = 0;
+
+		_datalen = ptr - _data;
+	}
+
+	agw_port = snd_ch;
+
+	get_monitor_path(path, CallTo, CallFrom, Digi);
+
+	ctrl = "";
+	frm = "";
+
+	switch (f_id)
+	{
+	case I_I:
+
+		frm = "I";
+		if (cr == SET_C && pf == SET_P)
+			ctrl = " P";
+
+		break;
+
+	case S_RR:
+
+		frm = "RR";
+		if (pf == SET_P)
+			ctrl = " P/F";
+
+		break;
+
+	case S_RNR:
+
+		frm = "RNR";
+		if (pf == SET_P)
+			ctrl = " P/F";
+
+		break;
+
+	case S_REJ:
+
+		frm = "REJ";
+		if (pf == SET_P)
+			ctrl = " P/F";
+
+		break;
+
+
+	case S_SREJ:
+
+		frm = "SREJ";
+		if (pf == SET_P)
+			ctrl = " P/F";
+
+		break;
+
+	case U_SABM:
+
+		frm = "SABM";
+		if (cr == SET_C && pf == SET_P)
+			ctrl = " P";
+
+		break;
+
+	case U_DISC:
+
+		frm = "DISC";
+		if (cr == SET_C && pf == SET_P)
+			ctrl = " P";
+		break;
+
+	case U_DM:
+
+		frm = "DM";
+		if ((cr == SET_R) && (pf == SET_P))
+			ctrl = " F ";
+		break;
+
+	case U_UA:
+
+		frm = "UA";
+		if ((cr == SET_R) && (pf == SET_P))
+			ctrl = " F ";
+
+		break;
+
+	case U_FRMR:
+
+		frm = "FRMR";
+		if ((cr == SET_R) && (pf == SET_P))
+			ctrl = " F ";
+		break;
+
+	case U_UI:
+
+		frm = "UI";
+		if ((pf == SET_P))
+			ctrl = " P/F";
+	}
+	
+	if (Digi[0])
+		sprintf(AGW_path, " %d:Fm %s To %s Via %s <%s", snd_ch + 1, CallFrom, CallTo, Digi, frm);
+	else
+		sprintf(AGW_path, " %d:Fm %s To %s <%s", snd_ch + 1, CallFrom, CallTo, frm);
+	
+
+	switch (f_type)
+	{
+	case I_FRM:
+
+		//mon_frm = AGW_path + ctrl + ' R' + inttostr(nr) + ' S' + inttostr(ns) + ' pid=' + dec2hex(pid) + ' Len=' + inttostr(len) + ' >' + time_now + #13 + _data + #13#13;
+		sprintf(mon_frm, "%s%s R%d S%d pid=%X Len=%d >[%s]\r%s\r", AGW_path, ctrl, nr, ns, pid, len, ShortDateTime(), _data);
+
+		break;
+
+	case U_FRM:
+
+		if (f_id == U_UI)
+		{
+			sprintf(mon_frm, "%s pid=%X Len=%d >[%s]\r%s\r", AGW_path, pid, len, ShortDateTime(), _data); // "= AGW_path + ctrl + '>' + time_now + #13;
+		}
+		else if (f_id == U_FRMR)
+		{
+			sprintf(mon_frm, "%s%s>%02x %02x %02x[%s]\r", AGW_path, ctrl, datap[0], datap[1], datap[2], ShortDateTime()); // "= AGW_path + ctrl + '>' + time_now + #13;
+		}
+		else
+			sprintf(mon_frm, "%s%s>[%s]\r", AGW_path, ctrl, ShortDateTime()); // "= AGW_path + ctrl + '>' + time_now + #13;
+
+		break;
+
+	case S_FRM:
+
+		//		mon_frm = AGW_path + ctrl + ' R' + inttostr(nr) + ' >' + time_now + #13;
+		sprintf(mon_frm, "%s%s R%d>[%s]\r", AGW_path, ctrl, nr, ShortDateTime()); // "= AGW_path + ctrl + '>' + time_now + #13;
+
+		break;
+
+	}
+
+//	stringAdd(mon_frm, "", 1); //  Add 0 at the end of each frame
+
+	// I think we send to all AGW sockets
+
+	for (i = 0; i < AGWConCount; i++)
+	{
+		AGW = AGWUsers[i];
+
+		if (AGW->Monitor)
+		{
+			if (RX)
+			{
+				switch (f_id)
+				{
+
+				case I_I:
+					AGW_data = AGW_I_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case S_RR:
+				case S_RNR:
+				case S_REJ:
+				case S_SREJ:
+
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_SABM:
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_DISC:
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_DM:
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_UA:
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_FRMR:
+					AGW_data = AGW_S_Frame(agw_port, CallFrom, CallTo, mon_frm);
+					break;
+
+				case U_UI:
+					AGW_data = AGW_U_Frame(agw_port, CallFrom, CallTo, mon_frm);
+				}
+				if (AGW_data)
+					AGW_send_to_app(AGW->socket, AGW_data);
+			}
+
+			else
+			{
+				AGW_data = AGW_T_Frame(agw_port, CallFrom, CallTo, mon_frm);
+				AGW_send_to_app(AGW->socket, AGW_data);
+			}
+		}
+	}
+}
+
+void AGW_Report_Modem_Change(int port)
+{
+	// Send modem change report to all sockets that support it
+
+	int i;
+	AGWUser * AGW;
+	string * pkt;
+
+	// I think we send to all AGW sockets
+
+	for (i = 0; i < AGWConCount; i++)
+	{
+		AGW = AGWUsers[i];
+
+		if (AGW->reportFreqAndModem)
+		{
+			// QTSM 's' Message with a data field is used by QtSM to set/read Modem Params
+
+			Byte info[44] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
+
+			// Return Freq and Modem
+
+			memcpy(&info[12], &rx_freq[port], 2);
+			memcpy(&info[16], modes_name[speed[port]], 20);
+			info[37] = speed[port];			// Index
+			AGW_send_to_app(AGW->socket, AGW_Gs_Frame(port, info, 44));
+		}
+	}
+}
+
+
+void AGW_Raw_monitor(int snd_ch, string * data)
+{
+	int i;
+	AGWUser * AGW;
+	string * pkt;
+
+	// I think we send to all AGW sockets
+
+	for (i = 0; i < AGWConCount; i++)
+	{
+		AGW = AGWUsers[i];
+
+		if (AGW->Monitor_raw)
+		{
+			pkt = newString();
+
+			pkt->Data[0] = snd_ch << 4;		// KISS Address
+			pkt->Length++;
+
+			stringAdd(pkt, data->Data, data->Length - 2);		// Exclude CRC
+
+			AGW_send_to_app(AGW->socket, AGW_K_Frame(snd_ch, 0, "", "", pkt));
+		}
+	}
+}
+
+void AGW_AX25_frame_analiz(int snd_ch, int RX, string * frame)
+{
+	//  path,data string;
+	Byte pid, nr, ns, f_type, f_id;
+	Byte  rpt, cr, pf;
+	Byte path[80];
+	string * data = newString();
+
+	decode_frame(frame->Data, frame->Length, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+	AGW_frame_monitor(snd_ch, path, data, pid, nr, ns, f_type, f_id, rpt, pf, cr, RX);
+	
+//	if (RX)
+//		AGW_Raw_monitor(snd_ch, frame);
+};
+
+
+void AGW_frame_analiz(AGWUser *  AGW)
+{
+	struct AGWHeader * Frame = (struct AGWHeader *)AGW->data_in->Data;
+	Byte * Data = &AGW->data_in->Data[36];
+
+	if (Frame->Port < 0 || Frame->Port > 3)
+		return;
+
+	if (soundChannel[Frame->Port] == 0)
+		return;
+
+	if (Frame->Port > 3)
+		return;
+
+	switch (Frame->DataKind)
+	{
+	case 'P':
+		
+		on_AGW_P_frame(AGW);
+		return;
+
+	case 'X':
+
+		on_AGW_X_frame(AGW, Frame->callfrom);
+		return;
+		
+
+	case 'x':
+		
+		on_AGW_Xs_frame(Frame->callfrom);
+		return;
+
+	case 'G':
+		
+		on_AGW_G_frame(AGW);
+		return;
+		
+	case 'm':
+		
+		on_AGW_Ms_frame(AGW);
+		return;
+
+	case 'R':
+		
+		on_AGW_R_frame(AGW);
+		return;
+	
+	case 'g':
+	
+		on_AGW_Gs_frame(AGW, Frame, Data);
+		return;
+//	'H': on_AGW_H_frame(AGW,Frame->Port);
+//	'y': on_AGW_Ys_frame(AGW,Frame->Port);
+
+	case 'Y':
+		on_AGW_Y_frame(AGW->socket, Frame->Port, Frame->callfrom, Frame->callto);
+		break;
+
+	case 'M':
+		
+		on_AGW_M_frame(Frame->Port,Frame->PID, Frame->callfrom, Frame->callto, Data, Frame->DataLength);
+		break;
+
+	case 'C':
+	case 'v':				// Call with digis
+
+		on_AGW_C_frame(AGW, Frame);
+		return;
+
+	case 'D':
+		
+		on_AGW_D_frame(Frame->Port, Frame->callfrom, Frame->callto, Data, Frame->DataLength);
+		return;
+	
+	case 'd':
+		on_AGW_Ds_frame(AGW->socket, Frame->Port, Frame->callfrom, Frame->callto);
+		return;
+
+//	'V': on_AGW_V_frame(AGW,Frame->Port,PID,CallFrom,CallTo,Data);
+//	'c': on_AGW_Cs_frame(sAGWocket,Frame->Port,PID,CallFrom,CallTo);
+
+
+	case 'K':
+		
+		on_AGW_K_frame(Frame);
+		return;
+
+	case 'k':
+		on_AGW_Ks_frame(AGW);
+		return;
+
+	default:
+		Debugprintf("AGW %c", Frame->DataKind);
+	}
+}
diff --git a/ax25_demod.c b/ax25_demod.c
new file mode 100644
index 0000000..2d849f0
--- /dev/null
+++ b/ax25_demod.c
@@ -0,0 +1,4313 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+extern int blnBusyStatus;
+extern word MEMRecovery[5];
+
+void  make_rx_frame_FX25(int snd_ch, int rcvr_nr, int emph, string * data);
+string * memory_ARQ(TStringList * buf, string * data);
+
+float GuessCentreFreq(int i);
+
+/*
+
+unit ax25_demod;
+
+interface
+
+uses math,sysutils,Graphics,classes;
+
+  procedure detector_init;
+  procedure detector_free;
+  procedure Mux3(snd_ch,rcvr_nr,emph: byte; src1,core: array of single; var dest,prevI,prevQ: array of single; tap,buf_size: word);
+  procedure Mux3_PSK(snd_ch,rcvr_nr,emph: byte; src1,core: array of single; var destI,destQ,prevI,prevQ: array of single; tap,buf_size: word);
+  procedure make_core_intr(snd_ch: byte);
+  procedure make_core_LPF(snd_ch: byte; width: single);
+  procedure make_core_BPF(snd_ch: byte; freq,width: single);
+  procedure make_core_TXBPF(snd_ch: byte; freq,width: single);
+  procedure init_BPF(freq1,freq2: single; tap: word; samplerate: single; var buf: array of single);
+  procedure FIR_filter(src: array of single; buf_size,tap: word; core: array of single; var dest,prev: array of single);
+  procedure Demodulator(snd_ch,rcvr_nr: byte; src_buf: array of single; last: boolean);
+  function memory_ARQ(buf: TStringList; data: string): string;
+
+type TSurvivor = record
+    BitEstimates: int64;
+    Pathdistance: integer;
+}
+
+type TMChannel = record
+  prev_LPF1I_buf : array [0..4095] of single;
+  prev_LPF1Q_buf : array [0..4095] of single;
+  prev_dLPFI_buf : array [0..4095] of single;
+  prev_dLPFQ_buf : array [0..4095] of single;
+  prev_AFCI_buf  : array [0..4095] of single;
+  prev_AFCQ_buf  : array [0..4095] of single;
+  AngleCorr      : single;
+  MUX_osc        : single;
+  AFC_IZ1        : single;
+  AFC_IZ2        : single;
+  AFC_QZ1        : single;
+  AFC_QZ2        : single;
+  AFC_bit_buf1I  : array [0..1023] of single;
+  AFC_bit_buf1Q  : array [0..1023] of single;
+  AFC_bit_buf2   : array [0..1023] of single;
+  AFC_IIZ1       : single;
+  AFC_QQZ1       : single;
+}
+*/
+ 
+ 
+#define sbc 175
+  
+single  ch_offset[4] = { -sbc * 1.5,-sbc * 0.5,sbc*0.5,sbc*1.5 };
+
+
+
+float PI125 = 0.125f * M_PI;
+float PI375 = 0.375f * M_PI;
+float PI625 = 0.625f * M_PI;
+float PI875 = 0.875f * M_PI;
+float PI5 = 0.5f * M_PI;
+float PI25 = 0.25f * M_PI;
+float PI75 = 0.75f * M_PI;
+
+unsigned char  modem_mode[5] ={0,0,0,0};
+
+unsigned short bpf[5] = { 500, 500, 500, 500,500 };
+unsigned short lpf[5] = { 150, 150, 150, 150, 150 };
+
+float BIT_AFC = 32;
+float slottime_tick[5] = { 0 };
+float resptime_tick[5] = { 0 };
+int dcd_threshold = 128;
+int rxOffset = 0;
+int chanOffset[4] = { 0,0,0,0 };
+
+float DCD_LastPkPos[5] = { 0 };
+float DCD_LastPerc[5] = { 0 };
+int dcd_bit_cnt[5] = { 0 };
+Byte DCD_status[5] = { 0 };
+float DCD_persist[5] = { 0 };
+int dcd_bit_sync[5] = { 0 };
+Byte dcd_hdr_cnt[5] = { 0 };
+longword DCD_header[5] = { 0 };
+int dcd_on_hdr[5] = { 0 };
+
+extern int centreFreq[4];
+ 
+
+unsigned short n_INTR[5] = { 1,1,1,1,1 };
+unsigned short INTR_tap[5] = { 16, 16,16,16,16 };
+unsigned short BPF_tap[5] = { 256, 256,256,256,256 };   // 256 default
+unsigned short LPF_tap[5] = { 128, 128,128,128,128 };   // 128
+  
+
+
+short rx_freq[5] = { 1700, 1700,1700,1700,1700 };
+short rx_shift[5] = { 200, 200, 200, 200, 200 };  
+short rx_baudrate[5] = { 300, 300, 300, 300, 300 };
+short rcvr_offset[5] = { 30, 30, 30, 30,30 }; 
+
+// rx_freq is configured freq. We shouldn't change it so need a sparate variable
+// for the actual demod freq when using multiple decoders
+
+short active_rx_freq[5] = { 1700, 1700,1700,1700,1700 };
+ 
+int fx25_mode[4] = { 0, 0, 0, 0 };
+int il2p_mode[4] = { 0, 0, 0, 0 };
+
+int pnt_change[5] = { 0 };
+float src_buf[5][2048];
+
+float INTR_core[5][2048];
+float AFC_core[5][2048];
+float LPF_core[5][2048];
+
+int new_tx_port[4] = { 0,0,0,0 };
+UCHAR RCVR[5] = { 0 };
+
+// We allow two (or more!) ports to be assigned to the same soundcard channel
+
+int soundChannel[5] = { 0 };		// 0 = Unused 1 = Left 2 = Right 3 = Mono
+int modemtoSoundLR[4] = { 0 };
+
+struct TDetector_t  DET[nr_emph + 1][16];
+
+TStringList detect_list_l[5];
+TStringList detect_list[5];
+TStringList detect_list_c[5];
+
+int lastDCDState[4] = { 0,0,0,0 };
+/*
+
+implementation
+
+uses sm_main,ax25,ax25_l2,ax25_mod,ax25_agw,rsunit,kiss_mode;
+*/
+
+void detector_init()
+{
+	int i, k, j;
+
+	for (k = 0; k < 16; k++)
+	{
+		for (i = 1; i <= 4; i++)
+		{
+			for (j = 0; j <= nr_emph; j++)
+			{
+				struct TDetector_t * pDET = &DET[j][k];
+
+				pDET->fx25[i].status = FX25_TAG;
+				pDET->AngleCorr[i] = 0;
+				pDET->last_sample[i] = 0;
+				pDET->sample_cnt[i] = 0;
+				pDET->last_bit[i] = 0;
+				pDET->PkAmp[i] = 0;
+				pDET->PkAmpMax[i] = 0;
+				pDET->newpkpos[i] = 0;
+				pDET->ones[i] = 0;
+				pDET->zeros[i] = 0;
+				pDET->MinAmp[i] = 0;
+				pDET->MaxAmp[i] = 0;
+				pDET->MUX3_osc[i] = 0;
+				pDET->Preemphasis6[i] = 0;
+				pDET->Preemphasis12[i] = 0;
+				pDET->PSK_AGC[i] = 0;
+				pDET->AGC[i] = 0;
+				pDET->AGC1[i] = 0;
+				pDET->AGC2[i] = 0;
+				pDET->AGC3[i] = 0;
+				pDET->AGC_max[i] = 0;
+				pDET->AGC_min[i] = 0;
+				pDET->AFC_IZ1[i] = 0;
+				pDET->AFC_IZ2[i] = 0;
+				pDET->AFC_QZ1[i] = 0;
+				pDET->AFC_QZ2[i] = 0;
+				pDET->AFC_dF[i] = 0;
+				pDET->AFC_cnt[i] = 0;
+				pDET->PSK_IZ1[i] = 0;
+				pDET->PSK_QZ1[i] = 0;
+				pDET->PkAmpI[i] = 0;
+				pDET->PkAmpQ[i] = 0;
+				pDET->last_rx_bit[i] = 0;
+				pDET->bit_stream[i] = 0;
+				pDET->byte_rx[i] = 0;
+				pDET->bit_stuff_cnt[i] = 0;
+				pDET->bit_cnt[i] = 0;
+				pDET->bit_osc[i] = 0;
+				pDET->frame_status[i] = 0;
+				initString(&pDET->FEC_rx_data[i]);
+				initString(&pDET->rx_data[i]);
+				initString(&pDET->raw_bits[i]);
+				initTStringList(&pDET->mem_ARQ_buf[i]);
+				initTStringList(&pDET->mem_ARQ_F_buf[i]);
+				pDET->rx_decoded = 0;
+				pDET->emph_decoded = 0;
+			}
+		}
+	}
+	
+	for (i = 1; i <= 4; i++)
+	{
+		initTStringList(&detect_list[i]);
+		initTStringList(&detect_list_l[i]);
+		initTStringList(&detect_list_c[i]);
+  }
+}
+
+
+/*
+procedure detector_free;
+var
+  i,k,j: word;
+{
+  for i = 1 to 4 do
+  {
+    detect_list[i].Free;
+    detect_list_l[i].Free;
+    detect_list_c[i].Free;
+  }
+  for k = 0 to 16 do
+    for i = 1 to 4 do
+      for j = 0 to nr_emph do
+      {
+        DET[j,k].mem_ARQ_buf[i].Free;
+        DET[j,k].mem_ARQ_F_buf[i].Free;
+      }
+}
+*/
+
+void FIR_filter(float * src, unsigned short buf_size, unsigned short tap, float * core, float * dest, float * prev)
+{
+	float accum = 0.0f;
+	float fp1;
+
+	int eax, ebx;
+	float * edi;
+
+	fmove(&prev[buf_size], &prev[0], tap * 4);
+	fmove(&src[0], &prev[tap], buf_size * 4);
+
+	eax = 0;
+
+	//  ; shl ecx, 2;
+	//  ; shl edx, 2;
+
+cfir_i:
+	edi = prev;
+
+	edi += eax;
+
+	ebx = 0;
+	accum = 0.0f;
+
+cfir_k:
+
+	// FLD pushes operand onto stack, so old value goes to fp1
+
+	fp1 = accum;
+	accum = edi[ebx];
+	accum *= core[ebx];
+	accum += fp1;
+
+	ebx++;
+	if (ebx != tap)
+		goto cfir_k;
+
+	dest[eax] = accum;
+
+	eax++;
+
+	if (eax != buf_size)
+		goto cfir_i;
+
+}
+
+
+float get_persist(int snd_ch, int persist)
+{
+	single x, x1 ;
+
+	x = 256 / persist;
+
+	x1 = round(x*x) * rand() / RAND_MAX;
+
+	return x1 * 0.5 * slottime[snd_ch];
+}
+
+void chk_dcd1(int snd_ch, int buf_size)
+{
+	// This seems to schedule all TX, but is only called when a frame has been processed
+	//  ? does this work as Andy passes aborted frames to decoder
+
+	Byte port;
+	word  i;
+	single  tick;
+	word  active;
+	boolean  ind_dcd;
+	boolean  dcd_sync;
+	longint  n;
+
+	TAX25Port * AX25Sess;
+
+	dcd[snd_ch] = 1;
+
+	ind_dcd = 0;
+
+	tick = 1000 / RX_Samplerate;
+
+	if (modem_mode[snd_ch] == MODE_ARDOP)
+	{
+		dcd_bit_sync[snd_ch] = blnBusyStatus;
+	}
+	else
+	{
+		if (dcd_bit_cnt[snd_ch] > 0)
+			dcd_bit_sync[snd_ch] = 0;
+		else
+			dcd_bit_sync[snd_ch] = 1;
+
+		if (dcd_on_hdr[snd_ch])
+			dcd_bit_sync[snd_ch] = 1;
+
+		if (modem_mode[snd_ch] == MODE_MPSK && DET[0][0].frame_status[snd_ch] == FRAME_LOAD)
+			dcd_bit_sync[snd_ch] = 1;
+	}
+
+	if (lastDCDState[snd_ch] != dcd_bit_sync[snd_ch])
+	{
+		updateDCD(snd_ch, dcd_bit_sync[snd_ch]);
+		lastDCDState[snd_ch] = dcd_bit_sync[snd_ch];
+	}
+
+	if (resptime_tick[snd_ch] < resptime[snd_ch])
+		resptime_tick[snd_ch] = resptime_tick[snd_ch] + tick * buf_size;
+
+	slottime_tick[snd_ch] = slottime_tick[snd_ch] + tick * buf_size;
+
+	if (dcd_bit_sync[snd_ch]) // reset the slottime timer
+	{
+		slottime_tick[snd_ch] = 0;
+		DCD_status[snd_ch] = DCD_WAIT_SLOT;
+	}
+
+	switch (DCD_status[snd_ch])
+	{
+	case DCD_WAIT_SLOT:
+
+		if (slottime_tick[snd_ch] >= slottime[snd_ch])
+		{
+			DCD_status[snd_ch] = DCD_WAIT_PERSIST;
+			DCD_persist[snd_ch] = get_persist(snd_ch, persist[snd_ch]);
+		}
+		break;
+
+	case DCD_WAIT_PERSIST:
+
+		if (slottime_tick[snd_ch] >= slottime[snd_ch] + DCD_persist[snd_ch])
+		{
+			dcd[snd_ch] = FALSE;
+			slottime_tick[snd_ch] = 0;
+			DCD_status[snd_ch] = DCD_WAIT_SLOT;
+		}
+		break;
+	}
+
+	active = 0;
+
+	for (i = 0; i < port_num; i++)
+	{
+		if (AX25Port[snd_ch][i].status != STAT_NO_LINK)
+			active++;
+
+		if (active < 2)
+			resptime_tick[snd_ch] = resptime[snd_ch];
+
+		if (TX_rotate)
+		{
+			for (int i = 0; i < 4; i++)
+			{
+				if (snd_status[i] == SND_TX)
+					dcd[snd_ch] = TRUE;
+			}
+		}
+
+		if (snd_ch == 1)
+			snd_ch = 1;
+
+		if (!dcd[snd_ch] && resptime_tick[snd_ch] >= resptime[snd_ch])
+		{
+			i = 0;
+
+			port = new_tx_port[snd_ch];
+			do
+			{
+				AX25Sess = &AX25Port[snd_ch][port];
+
+				if (AX25Sess->frame_buf.Count > 0)
+					Frame_Optimize(AX25Sess, &AX25Sess->frame_buf);
+
+				if (AX25Sess->frame_buf.Count > 0)
+				{
+					for (n = 0; n < AX25Sess->frame_buf.Count; n++)
+					{
+						Add(&all_frame_buf[snd_ch], duplicateString(Strings(&AX25Sess->frame_buf, n)));
+					}
+
+					Clear(&AX25Sess->frame_buf);
+				}
+
+				port++;
+
+				if (port >= port_num)
+					port = 0;
+
+				if (all_frame_buf[snd_ch].Count > 0)
+					new_tx_port[snd_ch] = port;
+
+				i++;
+
+			} while (all_frame_buf[snd_ch].Count == 0 && i < port_num);
+
+			// Add KISS frames
+
+			if (KISSServ)
+			{
+				// KISS monitor outgoing AGW frames
+
+				if (all_frame_buf[snd_ch].Count > 0)
+				{
+					for (n = 0; n < all_frame_buf[snd_ch].Count; n++)
+					{
+						KISS_on_data_out(snd_ch, Strings(&all_frame_buf[snd_ch], n), 1);	// Mon TX
+					}
+				}
+
+				// Add outgoing KISS frames to TX Q
+
+				if (KISS.buffer[snd_ch].Count > 0)
+				{
+					for (n = 0; n < KISS.buffer[snd_ch].Count; n++)
+					{
+						if (AGWServ)
+							AGW_Raw_monitor(snd_ch, Strings(&KISS.buffer[snd_ch], n));
+
+						// Need to add copy as clear will free original
+
+						Add(&all_frame_buf[snd_ch], duplicateString(Strings(&KISS.buffer[snd_ch], n)));
+					}
+					Clear(&KISS.buffer[snd_ch]);
+				}
+			}
+
+			if (all_frame_buf[snd_ch].Count > 0 && snd_status[snd_ch] == SND_IDLE)
+			{
+				resptime_tick[snd_ch] = 0;
+				RX2TX(snd_ch);					// Do TX
+				return;
+			}
+		}
+	}
+}
+
+
+string * get_pkt_data(string * stream)
+{
+	Byte  bitstuff_cnt;
+	Byte  bits_cnt;
+	word  i;
+	string * s = newString();
+
+	Byte  bit;
+	Byte  raw_bit;
+	Byte  sym;
+
+	bits_cnt = 0;
+	bitstuff_cnt = 0;
+	sym = 0;
+
+	if (stream->Length > 0)
+	{
+		for (i = 0; i < stream->Length; i++)
+		{
+			if (stream->Data[i] == '1')
+				bit = RX_BIT1;
+			else
+				bit = RX_BIT0;
+
+			if (bitstuff_cnt < 5)
+			{
+				sym = (sym >> 1) | bit;
+				bits_cnt++;
+			}
+
+			if (bitstuff_cnt == 5 || bit == RX_BIT0)
+				bitstuff_cnt = 0;
+
+			if (bit == RX_BIT1)
+				bitstuff_cnt++;
+
+			if (bits_cnt == 8)
+			{
+				stringAdd(s, &sym, 1);
+				sym = 0;
+				bits_cnt = 0;
+			}
+		}
+	}
+
+	return s;
+}
+
+string * get_pkt_data2(string * stream, Byte last_nrzi_bit)
+{
+	Byte  bitstuff_cnt;
+	Byte  bits_cnt;
+	word  i;
+	string * s = newString();
+
+	Byte pkt[350];
+
+	Byte bit;
+	Byte raw_bit;
+	Byte sym;
+	int  n = 0;
+
+	bits_cnt = 0;
+	bitstuff_cnt = 0;
+	sym = 0;
+
+	if (stream->Length > 0)
+	{
+		for (i = 0; i < stream->Length; i++)
+		{
+			if (stream->Data[i] == '1') raw_bit = RX_BIT1; else raw_bit = RX_BIT0;
+			if (raw_bit == last_nrzi_bit) bit = RX_BIT1; else bit = RX_BIT0;
+
+			last_nrzi_bit = raw_bit;
+
+			if (bitstuff_cnt < 5)
+			{
+				sym = (sym >> 1) | bit;
+				bits_cnt++;
+			}
+
+			if (bitstuff_cnt == 5 || bit == RX_BIT0)
+				bitstuff_cnt = 0;
+
+			if (bit == RX_BIT1)
+				bitstuff_cnt++;
+
+			if (bits_cnt == 8)
+			{
+				if (n < 330) 
+					pkt[n++] = sym;
+			
+				sym = 0;
+				bits_cnt = 0;
+			}
+		}
+	}
+
+	stringAdd(s, pkt, n);
+	return s;
+}
+
+string * get_NRZI_data(string * stream, UCHAR last_nrzi_bit)
+{
+	longword len;
+	word i;
+	string * s = NULL;
+	Byte raw_bit;
+
+	len = stream->Length;
+
+	if (len > 65535)
+		len = 65535;
+
+	if (len > 0)
+	{
+		s = newString();
+
+		setlength(s, len);
+
+		for (i = 0; i < len; i++)
+		{
+			if (stream->Data[i] == '1')
+				raw_bit = RX_BIT1;
+			else
+				raw_bit = RX_BIT0;
+
+			if (raw_bit == last_nrzi_bit)
+				s->Data[i] = '1';
+			else
+				s->Data[i] = '0';
+
+			last_nrzi_bit = raw_bit;
+		}
+	}
+	return s;
+}
+/*
+
+function invert_NRZI_data(stream: string; last_nrzi_bit: byte): string;
+var
+  len: longword;
+  i: word;
+  s: string;
+{
+  s = '';
+  len = length(stream);
+  if len>65535 then len = 65535;
+  if len>0 then
+  {
+    setlength(s,len);
+    for i = 1 to len do
+      if last_nrzi_bit=RX_BIT0 then
+      {
+        if stream[i]='1' then s[i] = '0' else s[i] = '1';
+      end
+      else s[i] = stream[i];
+  }
+  result = s;
+}
+*/
+
+void make_rx_frame(int snd_ch, int rcvr_nr, int emph, Byte last_nrzi_bit, string * raw_data, string * raw_data1)
+{
+	int swap_i, swap_k;
+	string * data;
+	string * nrzi_data;
+	longword raw_len;
+	word len, crc1, crc2;
+	int arq_mem = 0;
+	string s;
+	int i, k, n;
+	unsigned char * raw;
+	unsigned char * raw1;
+	char Mode[16] = "";
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	// Decode RAW-stream
+
+	raw_len = raw_data->Length;
+
+	if (raw_len < 80)
+		return;
+
+	mydelete(raw_data, raw_len - 6, 7);  // Does this remove trailing flag
+	raw_len = raw_data->Length;
+
+	nrzi_data = get_NRZI_data(raw_data, last_nrzi_bit);
+
+	if (nrzi_data == NULL)
+		return;
+
+//	data = newString();
+	data = get_pkt_data(nrzi_data);
+
+	len = data->Length;
+
+	if (len < pkt_raw_min_len)
+	{
+		freeString(nrzi_data);
+		freeString(data);
+		return;
+	}
+
+	crc1 = get_fcs(data->Data, len - 2);
+	crc2 = (data->Data[len - 1] << 8) | data->Data[len - 2];
+
+	// MEM recovery
+
+	arq_mem = FALSE;
+
+	if (raw_len > 2970)
+		freeString(nrzi_data);
+	else
+	{
+		Add(&pDET->mem_ARQ_buf[snd_ch], nrzi_data);
+
+		if (pDET->mem_ARQ_buf[snd_ch].Count > MEMRecovery[snd_ch])
+			Delete(&pDET->mem_ARQ_buf[snd_ch], 0);
+
+		if (crc1 != crc2)
+		{
+			freeString(data);
+			data = get_pkt_data(memory_ARQ(&pDET->mem_ARQ_buf[snd_ch], nrzi_data));
+			crc1 = get_fcs(data->Data, len - 2);
+			arq_mem = TRUE;
+		}
+	}
+
+	if (crc1 == crc2)
+	{
+		if (arq_mem)
+		{
+			Debugprintf("Good CRC after Memory ARQ correction %x Len %d chan %d rcvr %d emph %d", crc1, len, snd_ch, rcvr_nr, emph);
+			stat_r_mem++;
+
+			pDET->emph_decoded = 2; //MEM
+			pDET->rx_decoded = decodedMEM;
+		}
+		else
+		{
+			Debugprintf("Good CRC %x Len %d chan %d rcvr %d emph %d", crc1, len, snd_ch, rcvr_nr, emph);
+
+			pDET->rx_decoded = decodedNormal;
+			pDET->emph_decoded = 4; //Normal
+		}
+
+
+		if (detect_list[snd_ch].Count > 0 &&
+			my_indexof(&detect_list[snd_ch], data) >= 0)
+		{
+			// Already have a copy of this frame
+
+			freeString(data);
+			Debugprintf("Discarding copy rcvr %d emph %d", rcvr_nr, emph);
+			return;
+		}
+
+		string * xx = newString();
+		memset(xx->Data, 0, 16);
+
+		sprintf(Mode, "AX25 %d", centreFreq[snd_ch]);
+
+
+		Add(&detect_list_c[snd_ch], xx);
+		Add(&detect_list[snd_ch], data);
+
+		if (arq_mem)
+			stringAdd(xx, "MEM", 3);
+		else
+			stringAdd(xx, "", 0);
+
+		sprintf(Mode, "AX25 %d", centreFreq[snd_ch]);
+
+		stringAdd(xx, Mode, strlen(Mode));
+
+
+		return;
+
+	}
+
+	// Single bit recovery
+
+	freeString(data);			// finished with original
+
+	if (recovery[snd_ch] == 0 || raw_len > 2970)
+		return;
+
+	raw = raw_data->Data;
+	raw1 = raw_data1->Data;
+
+	for (i = 0; i < raw_len; i++)
+	{
+		if (raw[i] != raw1[i])
+		{
+			//change bit
+			raw[i] ^= 1;
+
+			// get new data
+
+			data = get_pkt_data2(raw_data, last_nrzi_bit);
+
+			//restore bit
+
+			raw[i] ^= 1;
+
+			len = data->Length;
+
+			if (len > pkt_raw_min_len)
+			{
+				crc1 = get_fcs(data->Data, len - 2);
+				crc2 = (data->Data[len - 1] << 8) | data->Data[len - 2];
+
+				if (crc1 == crc2)
+				{
+					Debugprintf("Good CRC after single bit correction %x Len %d chan %d rcvr %d emph %d", crc1, len, snd_ch, rcvr_nr, emph);
+
+					if (detect_list[snd_ch].Count > 0 &&
+						my_indexof(&detect_list[snd_ch], data) >=- 0)
+					{
+						// Already have a copy of this frame
+
+						Debugprintf("Discarding copy rcvr %d, emph %d", rcvr_nr, emph);
+						freeString(data);
+						return;
+					}
+					string * xx = newString();
+					memset(xx->Data, 0, 16);
+
+					Add(&detect_list_c[snd_ch], xx);
+					Add(&detect_list[snd_ch], data);
+					stringAdd(xx, "SINGLE", 3);
+
+					pDET->rx_decoded = decodedSingle;
+					pDET->emph_decoded = 1; //SINGLE
+
+					return;
+				}
+			}
+			freeString(data);			// finished with original
+		}
+	}
+}
+
+
+
+int lastcrc = 0;
+
+
+void make_rx_frame_PSK(int snd_ch, int rcvr_nr, int emph, string * data)
+{
+	word len, crc1, crc2;
+
+	len = data->Length;
+
+	if (len < pkt_raw_min_len)
+		return;
+
+	crc1 = get_fcs(data->Data, len - 2);
+	crc2 = (data->Data[len - 1] << 8) | data->Data[len - 2];
+
+	if (crc1 == crc2)
+	{
+		struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+		Debugprintf("Good CRC %x Len %d chan %d rcvr %d emph %d", crc1, len, snd_ch, rcvr_nr, emph);
+
+		pDET->rx_decoded = decodedNormal;
+		pDET->emph_decoded = 4; //Normal
+
+		if (detect_list[snd_ch].Count > 0 &&
+			my_indexof(&detect_list[snd_ch], data) >= 0)
+		{
+			// Already have a copy of this frame
+
+			Debugprintf("Discarding copy rcvr %d emph %d", rcvr_nr, emph);
+			return;
+		}
+
+		string * xx = newString();
+
+		memset(xx->Data, 0, 16);
+		Add(&detect_list_c[snd_ch], xx);
+		xx = duplicateString(data);
+		Add(&detect_list[snd_ch], xx);
+	}
+}
+
+
+  /*
+
+function memory_ARQ_FEC(buf: TStringList; data: string): string;
+var
+  len,i,k: integer;
+  s,temp: string;
+  new_blk,temp_blk: TStringList;
+  n,err: byte;
+  done: boolean;
+{
+  s = '';
+  if data='' then { result = s; exit; }
+  new_blk = TStringList.Create;
+  temp_blk = TStringList.Create;
+  temp = data;
+  len = length(data);
+  // Split new data;
+  repeat
+    n = ord(temp[1]) and $7F;
+    err = ord(temp[1]) and $80;
+    if err=0 then new_blk.Add(copy(temp,2,n)) else new_blk.Add('');
+    delete(temp,1,n+1);
+  until temp='';
+  // Search blocks
+  if (buf.Count>0) and (new_blk.Count>0) then
+  {
+    i = 0;
+    repeat
+      // If length is the same
+      if length(buf.Strings[i])=len then
+      {
+        temp = buf.Strings[i];
+        // If last 4 bytes is the same
+        if copy(temp,len-3,4)=copy(data,len-3,4) then
+        {
+          temp_blk.Clear;
+          repeat
+            n = ord(temp[1]) and $7F;
+            err = ord(temp[1]) and $80;
+            if err=0 then temp_blk.Add(copy(temp,2,n)) else temp_blk.Add('');
+            delete(temp,1,n+1);
+          until temp='';
+          // Add new parts
+          if new_blk.Count=temp_blk.Count then
+          {
+            done = TRUE;
+            for k = 0 to new_blk.Count-1 do
+            {
+              if (new_blk.Strings[k]='') and (temp_blk.Strings[k]<>'') then
+                new_blk.Strings[k] = temp_blk.Strings[k];
+              // Check if no empty data
+              if new_blk.Strings[k]='' then done = FALSE;
+            }
+          }
+        }
+      }
+      inc(i);
+    until (i=buf.Count) or done;
+    if done then for k = 0 to new_blk.Count-1 do s = s+new_blk.Strings[k];
+  }
+  result = s;
+  new_blk.Free;
+  temp_blk.Free
+}
+
+procedure add_to_ARQ_FEC(buf: TStringList; data: string);
+{
+  if buf.Count=50 then buf.Delete(0);
+  buf.Add(data);
+}
+*/
+
+void make_rx_frame_FEC(int snd_ch, int rcvr_nr, string * data, string * fec_data, word nErr)
+{
+}
+
+/*var
+  len,crc1,crc2: word;
+  s: string;
+  i,k,n: word;
+{
+  len = length(data);
+  if len<17 then exit;
+  crc1 = get_fcs(data,len-2);
+  crc2 = (ord(data[len]) shl 8) or ord(data[len-1]);
+  if crc1=crc2 then
+  {
+    if detect_list[snd_ch].Count>0 then
+      {
+        //if detect_list[snd_ch].IndexOf(data)<0 then
+        if my_indexof(detect_list[snd_ch],data)<0 then
+        {
+          detect_list[snd_ch].Add(data);
+          detect_list_c[snd_ch].Add('Err: '+inttostr(nErr));
+        }
+      end
+    else
+    {
+      detect_list[snd_ch].Add(data);
+      detect_list_c[snd_ch].Add('Err: '+inttostr(nErr));
+    }
+    add_to_ARQ_FEC(DET[0,rcvr_nr].mem_ARQ_F_buf[snd_ch],fec_data);
+  }
+  if crc1<>crc2 then
+  {
+    data = memory_ARQ_FEC(DET[0,rcvr_nr].mem_ARQ_F_buf[snd_ch],fec_data);
+    add_to_ARQ_FEC(DET[0,rcvr_nr].mem_ARQ_F_buf[snd_ch],fec_data);
+    if data<>'' then
+    {
+      len = length(data);
+      crc1 = get_fcs(data,len-2);
+      crc2 = (ord(data[len]) shl 8) or ord(data[len-1]);
+      if crc1=crc2 then
+      {
+        if detect_list[snd_ch].Count>0 then
+        {
+          //if detect_list[snd_ch].IndexOf(data)<0 then
+          if my_indexof(detect_list[snd_ch],data)<0 then
+          {
+            detect_list[snd_ch].Add(data);
+            detect_list_c[snd_ch].Add('MEM Err: '+inttostr(nErr));
+          }
+        end
+        else
+        {
+          detect_list[snd_ch].Add(data);
+          detect_list_c[snd_ch].Add('MEM Err: '+inttostr(nErr));
+        }
+      }
+    }
+  }
+}
+
+*/
+////////////////////////////  PLL-Peak-detector  ////////////////////////////
+
+void  Mux3(int snd_ch, int rcvr_nr, int emph, float * src1, float * core, float *dest, float * prevI, float * prevQ, int tap, int buf_size)
+{
+	float pi2 = 2 * pi;
+
+	int i;
+	float x;
+	float acc1, acc2, acc3, mag;
+	int tap4;
+	int tap_cnt;
+	unsigned int ii, kk;
+
+	float Preemphasis6, Preemphasis12, MUX3_osc, AGC;
+	float AFC_IZ1, AFC_QZ1, AFC_IZ2, AFC_QZ2;
+
+	// looks like this is an LPF
+
+	// Get local copy of this detectors variables
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	Preemphasis6 = pDET->Preemphasis6[snd_ch];
+	Preemphasis12 = pDET->Preemphasis12[snd_ch];
+	MUX3_osc = pDET->MUX3_osc[snd_ch];
+	AGC = pDET->AGC[snd_ch];
+	AFC_IZ2 = pDET->AFC_IZ2[snd_ch];
+	AFC_QZ2 = pDET->AFC_QZ2[snd_ch];
+	AFC_QZ1 = pDET->AFC_QZ1[snd_ch];
+	AFC_IZ1 = pDET->AFC_IZ1[snd_ch];
+	//
+	tap4 = tap * 4;
+	x = active_rx_freq[snd_ch] * pi2 / RX_Samplerate;
+
+	fmove(&prevI[buf_size], &prevI[0], tap4);
+	fmove(&prevQ[buf_size], &prevQ[0], tap4);
+	tap_cnt = tap;
+
+	if (prevI[128] != prevI[128])
+		prevI[128] = 0;
+
+	for (i = 0; i < buf_size; i++)
+	{
+		// Pre-emphasis 6dB
+		if (emph > 0)
+		{
+			acc1 = Preemphasis6 - src1[i];
+			Preemphasis6 = src1[i];
+			src1[i] = acc1;
+		}
+		// Pre-emphasis 12dB
+		if (emph > 1)
+		{
+			acc1 = Preemphasis12 - src1[i];
+			Preemphasis12 = src1[i];
+			src1[i] = acc1;
+		}
+		//
+		MUX3_osc = MUX3_osc + x;
+
+		if (MUX3_osc > pi2)
+			MUX3_osc = MUX3_osc - pi2;
+
+		if (src1[i] != src1[i])
+			src1[i] = 0;
+
+		if (prevI[128] != prevI[128])
+			prevI[128] = 0;
+
+
+		prevI[tap_cnt] = src1[i] * sinf(MUX3_osc);
+		prevQ[tap_cnt] = src1[i] * cosf(MUX3_osc);
+
+		if (prevI[128] != prevI[128])
+			prevI[tap_cnt] = src1[i] * sinf(MUX3_osc);
+
+		if (prevI[128] != prevI[128])
+			prevI[128] = 0;
+		/*
+
+			mag = sqrtf(prevI[tap_cnt] * prevI[tap_cnt] + prevQ[tap_cnt] * prevQ[tap_cnt]);
+			DET[emph][rcvr_nr].AGC1[snd_ch] = 0.5*DET[emph][rcvr_nr].AGC1[snd_ch] + 0.5*mag;
+			AGC = 0.5*AGC + 0.5*DET[emph][rcvr_nr].AGC1[snd_ch];
+			if (AGC > 1)
+			begin
+				prevI[tap_cnt] = prevI[tap_cnt] / AGC;
+				prevQ[tap_cnt] = prevQ[tap_cnt] / AGC;
+			end
+	*/
+
+
+	// Fast AGC
+
+		mag = sqrtf(prevI[tap_cnt] * prevI[tap_cnt] + prevQ[tap_cnt] * prevQ[tap_cnt]);
+
+		AGC = 0.5 * AGC + 0.5  *mag;
+
+		if (AGC > 1)
+		{
+			prevI[tap_cnt] = prevI[tap_cnt] / AGC;
+			prevQ[tap_cnt] = prevQ[tap_cnt] / AGC;
+		}
+
+		ii = i << 2;
+		kk = tap << 2;
+
+		// C version of delphi asm code below
+		{
+			float accum = 0.0f;
+			float fp1;
+
+			int ebx;
+			float * edi;
+
+			edi = &prevI[i];
+			ebx = 0;
+			accum = 0.0f;
+
+		fsk_k1:
+
+			// FLD pushes operand onto stack, so old value goes to fp1
+
+			fp1 = accum;
+			accum = edi[ebx];
+			if (accum != accum)
+				accum = 0;
+
+			accum *= core[ebx];
+			if (accum != accum)
+				accum = 0;
+			accum += fp1;
+			if (accum != accum)
+				accum = 0;
+
+			ebx++;
+			if (ebx != tap)
+				goto fsk_k1;
+
+			acc1 = accum;
+
+			if (acc1 != acc1)
+				acc1 = 0;
+
+			edi = &prevQ[i];
+
+			ebx = 0;
+			accum = 0.0f;
+
+		fsk_k2:
+
+			fp1 = accum;
+			accum = edi[ebx];
+			accum *= core[ebx];
+			accum += fp1;
+
+			ebx++;
+			if (ebx != tap)
+				goto fsk_k2;
+
+			acc2 = accum;
+		}
+
+		if (acc1 != acc1)
+			acc1 = 0;
+
+
+		tap_cnt++;
+
+		/// PLL-Detector ///
+
+
+		dest[i] = (acc1 - AFC_IZ2)*AFC_QZ1 - (acc2 - AFC_QZ2)*AFC_IZ1;
+
+		// Check for NAN
+
+		if (dest[i] != dest[i])
+			dest[i] = 0.0f;
+
+		AFC_IZ2 = AFC_IZ1;
+		AFC_QZ2 = AFC_QZ1;
+		AFC_IZ1 = acc1;
+		AFC_QZ1 = acc2;
+	}
+
+	pDET->Preemphasis6[snd_ch] = Preemphasis6;
+	pDET->Preemphasis12[snd_ch] = Preemphasis12;
+	pDET->MUX3_osc[snd_ch] = MUX3_osc;
+	pDET->AGC[snd_ch] = AGC;
+	pDET->AFC_IZ2[snd_ch] = AFC_IZ2;
+	pDET->AFC_QZ2[snd_ch] = AFC_QZ2;
+	pDET->AFC_QZ1[snd_ch] = AFC_QZ1;
+	pDET->AFC_IZ1[snd_ch] = AFC_IZ1;
+}
+
+
+
+void Mux3_PSK(int snd_ch, int rcvr_nr, int emph, float * src1, float * core, float *destI, float *destQ, float * prevI, float * prevQ, int tap, int buf_size)
+{
+	float pi2 = 2 * pi;
+
+	int i;
+	float x;
+	float acc1, acc2, mag;
+	int tap4;
+	int prev_cnt, tap_cnt;
+
+	float Preemphasis6, Preemphasis12, MUX3_osc;
+
+	// looks like this is an LPF
+
+	// Get local copy of this detectors variables
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	Preemphasis6 = pDET->Preemphasis6[snd_ch];
+	Preemphasis12 = pDET->Preemphasis12[snd_ch];
+	MUX3_osc = pDET->MUX3_osc[snd_ch];
+
+	tap4 = tap * 4;
+
+	x = active_rx_freq[snd_ch] * pi2 / RX_Samplerate;
+
+	fmove(&prevI[buf_size], &prevI[0], tap4);
+	fmove(&prevQ[buf_size], &prevQ[0], tap4);
+
+	tap_cnt = tap;
+
+	if (prevI[128] != prevI[128])
+		prevI[128] = 0;
+
+	for (i = 0; i < buf_size; i++)
+	{
+		// Pre-emphasis 6dB
+		if (emph > 0)
+		{
+			acc1 = Preemphasis6 - src1[i];
+			Preemphasis6 = src1[i];
+			src1[i] = acc1;
+		}
+		// Pre-emphasis 12dB
+		if (emph > 1)
+		{
+			acc1 = Preemphasis12 - src1[i];
+			Preemphasis12 = src1[i];
+			src1[i] = acc1;
+		}
+
+		MUX3_osc = MUX3_osc + x;
+
+		if (MUX3_osc > pi2)
+			MUX3_osc = MUX3_osc - pi2;
+
+		prevI[tap_cnt] = src1[i] * sinf(MUX3_osc);
+		prevQ[tap_cnt] = src1[i] * cosf(MUX3_osc);
+
+
+		// C version of delphi asm code 
+		{
+			float accum = 0.0f;
+			float fp1;
+
+			int ebx;
+			float * edi;
+
+			edi = &prevI[i];
+			ebx = 0;
+			accum = 0.0f;
+
+		fsk_k1:
+
+			// FLD pushes operand onto stack, so old value goes to fp1
+
+			fp1 = accum;
+			accum = edi[ebx];
+			accum *= core[ebx];
+			accum += fp1;
+
+			ebx++;
+
+			if (ebx != tap)
+				goto fsk_k1;
+
+			acc1 = accum;
+
+			edi = &prevQ[i];
+
+			ebx = 0;
+			accum = 0.0f;
+
+		fsk_k2:
+
+			fp1 = accum;
+			accum = edi[ebx];
+			accum *= core[ebx];
+			accum += fp1;
+
+			ebx++;
+			if (ebx != tap)
+				goto fsk_k2;
+
+			acc2 = accum;
+		}
+
+		if (acc1 != acc1)
+			acc1 = 0;
+
+		tap_cnt++;
+
+		destI[i] = acc1;
+		destQ[i] = acc2;
+	}
+
+	pDET->Preemphasis6[snd_ch] = Preemphasis6;
+	pDET->Preemphasis12[snd_ch] = Preemphasis12;
+	pDET->MUX3_osc[snd_ch] = MUX3_osc;
+
+}
+
+int stats[2] = { 0 };
+
+#define dcd_corr 0.11111f
+
+void decode_stream_MPSK(int snd_ch, int rcvr_nr, float *  src, int buf_size, int  last)
+{
+
+#ifndef WIN32
+
+	// Until ASM is converted
+
+	return;
+}
+#else
+
+	float  pi2 = 2 * pi;
+
+#define NR_FEC_CH 3
+
+	float agc_fast = 0.01f;
+	float agc_fast1 = 1 - agc_fast;
+	float agc_slow = agc_fast / 4;
+	float agc_slow1 = 1 - agc_slow;
+
+	word  dcnt, dsize;
+	word  i, k, j, j1, j2, j3;
+	single  x, x1;
+	single  amp, acc1, acc2;
+	single  sumI, sumQ, sumIQ, muxI, muxQ;
+	word  tap_cnt, tap_cnt1;
+	single  afc_lim;
+	word  i_tap, tap;
+	single  AFC, k1, k2, freq;
+	single  maxval, div_bit_afc, baudrate;
+	word  max_cnt;
+	single  AmpI, AmpQ, angle, muxI1, muxQ1, muxI2, muxQ2, sumIQ1, sumIQ2;
+	single  AFC_acc1, AFC_acc2;
+	single  BIT_acc1, BIT_acc2;
+	integer  AFC_newpkpos;
+	//
+	single  threshol;
+	single  tr;
+	Byte fec_ch, bit;
+	longword ii, kk;
+	single * core, *prevI, *prevQ;
+	//
+	unsigned long long bit64 = 0;
+	boolean  hdr_ok;
+	Byte  fec_code;
+	string  fec_data_blk;
+	string  line1;
+
+	Byte line[512];
+	int linelen = 0;
+
+	integer nErr;
+	word  crc1, crc2, size;
+
+	Byte  hdr_byte[15] = "";
+
+	tr = dcd_threshold * dcd_corr;
+
+	if (last)
+	{
+		if (dcd_hdr_cnt[snd_ch] == 0)
+			dcd_on_hdr[snd_ch] = 0;
+
+		dcd_bit_cnt[snd_ch] = 0;
+	}
+
+	baudrate = 400;
+	div_bit_afc = 1.0f / roundf(BIT_AFC*(RX_Samplerate / 11025));
+	x1 = baudrate / RX_Samplerate;
+	max_cnt = roundf(RX_Samplerate / baudrate);
+	//
+
+	afc_lim = rx_baudrate[snd_ch] * 0.1f;
+	dsize = buf_size / n_INTR[snd_ch];
+	tap = LPF_tap[snd_ch];
+	i_tap = INTR_tap[snd_ch];
+	freq = active_rx_freq[snd_ch];
+
+
+	for (fec_ch = 0; fec_ch <= NR_FEC_CH; fec_ch++)
+	{
+		struct TMChannel_t * pMChan = &DET[0][rcvr_nr].MChannel[snd_ch][fec_ch];
+
+		fmove(&pMChan->prev_dLPFI_buf[buf_size], &pMChan->prev_dLPFI_buf[0], i_tap * 4);
+		fmove(&pMChan->prev_dLPFQ_buf[buf_size], &pMChan->prev_dLPFQ_buf[0], i_tap * 4);
+		fmove(&pMChan->prev_LPF1I_buf[dsize], &pMChan->prev_LPF1I_buf[0], tap * 4);
+		fmove(&pMChan->prev_LPF1Q_buf[dsize], &pMChan->prev_LPF1Q_buf[0], tap * 4);
+		fmove(&pMChan->prev_AFCI_buf[dsize], &pMChan->prev_AFCI_buf[0], tap * 4);
+		fmove(&pMChan->prev_AFCQ_buf[dsize], &pMChan->prev_AFCQ_buf[0], tap * 4);
+	}
+
+	tap_cnt = i_tap;
+	tap_cnt1 = tap;
+	dcnt = 0;
+	k = 0;
+
+	for (i = 0; i < buf_size; i++)
+	{
+		for (fec_ch = 0; fec_ch <= NR_FEC_CH; fec_ch++)
+		{
+			struct TDetector_t * pDET = &DET[0][rcvr_nr];
+
+			x = (freq + pDET->AFC_dF[snd_ch] + ch_offset[fec_ch])*pi2 / RX_Samplerate;
+
+			struct TMChannel_t * pMChan = &pDET->MChannel[snd_ch][fec_ch];
+			{
+				pMChan->MUX_osc = pMChan->MUX_osc + x;
+
+				if (pMChan->MUX_osc > pi2)
+					pMChan->MUX_osc = pMChan->MUX_osc - pi2;
+
+				pMChan->prev_dLPFI_buf[tap_cnt] = src[i] * sinf(pMChan->MUX_osc);
+				pMChan->prev_dLPFQ_buf[tap_cnt] = src[i] * cosf(pMChan->MUX_osc);
+				prevI = pMChan->prev_dLPFI_buf;
+				prevQ = pMChan->prev_dLPFQ_buf;
+				core = INTR_core[snd_ch];
+				// Decimation filter
+				ii = i << 2;
+				kk = i_tap << 2;
+	
+				_asm
+				{
+					push eax;
+					push ebx;
+					push edi;
+					push esi;
+					mov edi, prevI;
+					mov esi, core;
+					add edi, ii;
+					mov eax, kk;
+					xor ebx, ebx;
+					fldz;
+				lk1:
+					fld dword ptr[edi + ebx];
+					fmul dword ptr[esi + ebx];
+					fadd;
+					add ebx, 4;
+					cmp ebx, eax;
+					jne lk1;
+					fstp dword ptr acc1;
+					wait;
+					mov edi, prevQ;
+					add edi, ii;
+					xor ebx, ebx;
+					fldz;
+				lk2:
+					fld dword ptr[edi + ebx];
+					fmul dword ptr[esi + ebx];
+					fadd;
+					add ebx, 4;
+					cmp ebx, eax;
+					jne lk2;
+					fstp dword ptr acc2;
+					wait;
+					pop esi;
+					pop edi;
+					pop ebx;
+					pop eax;
+				}
+			}
+
+			if (fec_ch == NR_FEC_CH)
+				tap_cnt++;
+
+			// Decimation
+
+			if (dcnt == 0)
+			{
+				{
+					pMChan->prev_LPF1I_buf[tap_cnt1] = acc1;
+					pMChan->prev_LPF1Q_buf[tap_cnt1] = acc2;
+					pMChan->prev_AFCI_buf[tap_cnt1] = acc1;
+					pMChan->prev_AFCQ_buf[tap_cnt1] = acc2;
+					// Bit-filter
+					prevI = pMChan->prev_LPF1I_buf;
+					prevQ = pMChan->prev_LPF1Q_buf;
+					core = LPF_core[snd_ch];
+					ii = k << 2;
+					kk = tap << 2;
+					
+					__asm
+					{
+						push eax;
+						push ebx;
+						push edi;
+						push esi;
+						mov edi, prevI;
+						mov esi, core;
+						add edi, ii;
+						mov eax, kk;
+						xor ebx, ebx;
+						fldz;
+					xk1:
+						fld dword ptr[edi + ebx];
+						fmul dword ptr[esi + ebx];
+						fadd;
+						add ebx, 4;
+						cmp ebx, eax;
+						jne xk1;
+						fstp dword ptr BIT_acc1;
+						wait;
+						mov edi, prevQ;
+						add edi, ii;
+						xor ebx, ebx;
+						fldz;
+					xk2:
+						fld dword ptr[edi + ebx];
+						fmul dword ptr[esi + ebx];
+						fadd;
+						add ebx, 4;
+						cmp ebx, eax;
+						jne xk2;
+						fstp dword ptr BIT_acc2;
+						wait;
+						pop esi;
+						pop edi;
+						pop ebx;
+						pop eax;
+					}
+					
+					// AFC-filter
+					prevI = pMChan->prev_AFCI_buf;
+					prevQ = pMChan->prev_AFCQ_buf;
+					core = AFC_core[snd_ch];
+					ii = k << 2;
+					kk = tap << 2;
+					_asm
+					{
+						push eax;
+						push ebx;
+						push edi;
+						push esi;
+						mov edi, prevI;
+						mov esi, core;
+						add edi, ii;
+						mov eax, kk;
+						xor ebx, ebx;
+						fldz;
+					xxk1:
+						fld dword ptr[edi + ebx];
+						fmul dword ptr[esi + ebx];
+						fadd;
+						add ebx, 4;
+						cmp ebx, eax;
+						jne xxk1;
+						fstp dword ptr AFC_acc1;
+						wait;
+						mov edi, prevQ;
+						add edi, ii;
+						xor ebx, ebx;
+						fldz;
+					xxk2:
+						fld dword ptr[edi + ebx];
+						fmul dword ptr[esi + ebx];
+						fadd;
+						add ebx, 4;
+						cmp ebx, eax;
+						jne xxk2;
+						fstp dword ptr AFC_acc2;
+						wait;
+						pop esi;
+						pop edi;
+						pop ebx;
+						pop eax;
+					}
+				}
+
+				// AGC
+
+				amp = sqrtf(BIT_acc1*BIT_acc1 + BIT_acc2 * BIT_acc2);
+				if (amp > pDET->PSK_AGC[snd_ch])
+					pDET->PSK_AGC[snd_ch] = pDET->PSK_AGC[snd_ch] * agc_fast1 + amp*agc_fast;
+				else
+					pDET->PSK_AGC[snd_ch] = pDET->PSK_AGC[snd_ch] * agc_slow1 + amp*agc_slow;
+
+				if (pDET->PSK_AGC[snd_ch] > 1)
+				{
+					BIT_acc1 = BIT_acc1 / pDET->PSK_AGC[snd_ch];
+					BIT_acc2 = BIT_acc2 / pDET->PSK_AGC[snd_ch];
+					AFC_acc1 = AFC_acc1 / pDET->PSK_AGC[snd_ch];
+					AFC_acc2 = AFC_acc2 / pDET->PSK_AGC[snd_ch];
+					amp = amp / pDET->PSK_AGC[snd_ch];
+				}
+
+				// AFC Correction
+
+
+				sumIQ = (AFC_acc1 - pMChan->AFC_IZ2)*pMChan->AFC_QZ1 - (AFC_acc2 - pMChan->AFC_QZ2)*pMChan->AFC_IZ1;
+				pMChan->AFC_IZ2 = pMChan->AFC_IZ1;
+				pMChan->AFC_QZ2 = pMChan->AFC_QZ1;
+				pMChan->AFC_IZ1 = AFC_acc1;
+				pMChan->AFC_QZ1 = AFC_acc2;
+
+				pDET->AFC_dF[snd_ch] = pDET->AFC_dF[snd_ch] - sumIQ * 0.07f; // AFC_LPF=1
+
+				if (pDET->AFC_dF[snd_ch] > afc_lim)
+					pDET->AFC_dF[snd_ch] = afc_lim;
+
+				if (pDET->AFC_dF[snd_ch] < -afc_lim)
+					pDET->AFC_dF[snd_ch] = -afc_lim;
+
+
+				pMChan->AFC_bit_buf1I[pDET->AFC_cnt[snd_ch]] = BIT_acc1;
+				pMChan->AFC_bit_buf1Q[pDET->AFC_cnt[snd_ch]] = BIT_acc2;
+				pMChan->AFC_bit_buf2[pDET->AFC_cnt[snd_ch]] = amp;
+
+				if (fec_ch == NR_FEC_CH)
+				{
+					pDET->AFC_cnt[snd_ch]++;
+					pDET->AFC_bit_osc[snd_ch] = pDET->AFC_bit_osc[snd_ch] + x1;
+
+					if (pDET->AFC_bit_osc[snd_ch] >= 1)
+					{
+						// Find the maximum in the synchronization buffer
+
+						for (j = 0; j <= NR_FEC_CH; j++)
+						{
+							struct TMChannel_t * pMChan = &pDET->MChannel[snd_ch][j];
+
+							maxval = 0;
+
+							for (j1 = 0; j1 < pDET->AFC_cnt[snd_ch]; j1++)
+							{
+								amp = pMChan->AFC_bit_buf2[j1];
+
+								pDET->AFC_bit_buf[snd_ch][j1] = pDET->AFC_bit_buf[snd_ch][j1] * 0.95 + amp*0.05;
+
+								if (pDET->AFC_bit_buf[snd_ch][j1] > maxval)
+								{
+									{
+										AFC_newpkpos = j1;
+										maxval = pDET->AFC_bit_buf[snd_ch][j1];
+									}
+								}
+
+								k1 = 1.0f *AFC_newpkpos / (pDET->AFC_cnt[snd_ch] - 1);
+								k2 = pila(k1) - 1;
+
+
+
+								//AFC = div_bit_afc*k2;
+								AFC = div_bit_afc * k2*0.25; //for 4 carriers
+								if (k1 > 0.5)
+									pDET->AFC_bit_osc[snd_ch] = pDET->AFC_bit_osc[snd_ch] + AFC;
+								else
+									pDET->AFC_bit_osc[snd_ch] = pDET->AFC_bit_osc[snd_ch] - AFC;
+
+								//DCD feature
+
+								if (last)
+								{
+									DCD_LastPkPos[snd_ch] = DCD_LastPkPos[snd_ch] * 0.96f + AFC_newpkpos * 0.04f;
+									DCD_LastPerc[snd_ch] = DCD_LastPerc[snd_ch] * 0.96f + abs(AFC_newpkpos - DCD_LastPkPos[snd_ch])*0.04f;
+									if (DCD_LastPerc[snd_ch] >= tr || DCD_LastPerc[snd_ch] < 0.00001f)
+										dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] + 1;
+									else
+										dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] - 1;
+								}
+
+							}
+							// Bit-detector
+
+							AmpI = pMChan->AFC_bit_buf1I[AFC_newpkpos];
+							AmpQ = pMChan->AFC_bit_buf1Q[AFC_newpkpos];
+							muxI1 = AmpI * pMChan->AFC_IIZ1;
+							muxI2 = AmpQ * pMChan->AFC_IIZ1;
+							muxQ1 = AmpQ * pMChan->AFC_QQZ1;
+							muxQ2 = AmpI * pMChan->AFC_QQZ1;
+							sumIQ1 = muxI1 + muxQ1;
+							sumIQ2 = muxI2 - muxQ2;
+							angle = atan2f(sumIQ2, sumIQ1);
+							pMChan->AFC_IIZ1 = AmpI;
+							pMChan->AFC_QQZ1 = AmpQ;
+
+							// Phase corrector
+
+							if (fabsf(angle) < PI5)
+								pMChan->AngleCorr = pMChan->AngleCorr * 0.9f - angle * 0.1f;
+							else
+							{
+								if (angle > 0)
+									pMChan->AngleCorr = pMChan->AngleCorr * 0.9f + (pi - angle)*0.1f;
+								else
+									pMChan->AngleCorr = pMChan->AngleCorr * 0.9f + (-pi - angle)*0.1f;
+							}
+							angle = angle + pMChan->AngleCorr;
+
+
+							if (fabsf(angle) < PI5)
+								bit = RX_BIT1;
+							else
+								bit = RX_BIT0;
+
+							// DCD on flag
+
+							if (last)
+							{
+								if (dcd_hdr_cnt[snd_ch] > 0)
+									dcd_hdr_cnt[snd_ch]--;
+
+								DCD_header[snd_ch] = (DCD_header[snd_ch] >> 1) | (bit << 24);
+
+								if ((DCD_header[snd_ch] & 0xFFFF0000) == 0x7E7E0000 ||
+									(DCD_header[snd_ch] & 0xFFFFFF00) == 0x7E000000 ||
+									(DCD_header[snd_ch] & 0xFFFFFF00) == 0x00000000)
+								{
+									dcd_hdr_cnt[snd_ch] = 48;
+									dcd_on_hdr[snd_ch] = TRUE;
+								}
+							}
+
+							// header stream
+							bit64 = bit;
+							bit64 <<= 56;
+
+							pDET->FEC_header1[snd_ch][1] = (pDET->FEC_header1[snd_ch][1] >> 1) | (pDET->FEC_header1[snd_ch][0] << 63);
+							pDET->FEC_header1[snd_ch][0] = (pDET->FEC_header1[snd_ch][0] >> 1) | bit64;
+	
+							// copy body
+							if (pDET->frame_status[snd_ch] == FRAME_LOAD)
+							{
+								pDET->bit_stream[snd_ch] = (pDET->bit_stream[snd_ch] >> 1) + bit;
+								pDET->bit_cnt[snd_ch]++;
+								if (pDET->bit_cnt[snd_ch] == 8)
+								{
+									pDET->bit_cnt[snd_ch] = 0;
+									pDET->FEC_len_cnt[snd_ch]++;
+
+									stringAdd(&pDET->FEC_rx_data[snd_ch], &pDET->bit_stream[snd_ch], 1);
+
+									if (pDET->FEC_len_cnt[snd_ch] == pDET->FEC_len[snd_ch])
+									{
+										// descrambler
+										scrambler(pDET->FEC_rx_data[snd_ch].Data, pDET->FEC_rx_data[snd_ch].Length);
+										// deinterleave
+										pDET->FEC_blk_int[snd_ch] = ((pDET->FEC_len[snd_ch] - 1) / 16) + 1;
+
+										linelen = pDET->FEC_rx_data[snd_ch].Length;
+
+										memcpy(line, pDET->FEC_rx_data[snd_ch].Data, linelen);
+
+										j3 = 1;
+
+										for (j1 = 0; j1 < 16; j1++)
+										{
+											for (j2 = 0; j2 < pDET->FEC_blk_int[snd_ch]; j2++)
+											{
+												if ((j2 * 16 + j1) <= pDET->FEC_len[snd_ch] && j3 <= pDET->FEC_len[snd_ch])
+												{
+													pDET->FEC_rx_data[snd_ch].Data[j2 * 16 + j1] = line[j3];
+													j3++;
+												}
+											}
+										}
+
+										// RS-decode
+
+										/*
+
+										line = pDET->FEC_rx_data[snd_ch];
+										pDET->FEC_rx_data[snd_ch].Length = 0;
+										do
+										{
+											line1 = copy(line, 1, 16);
+											size = length(line1);
+											FillChar(xEncoded, SizeOf(xEncoded), 0);
+											FillChar(xDecoded, SizeOf(xDecoded), 0);
+											move(line1[1], xEncoded[0], size);
+											RS.InitBuffers;
+											nErr = RS.DecodeRS(xEncoded, xDecoded);
+											line1 = '';
+											for j1 = MaxErrors * 2 to size - 1 do line1 = line1 + chr(xDecoded[j1]);
+											pDET->FEC_rx_data[snd_ch] = FEC_rx_data[snd_ch] + line1;
+											if nErr >= 0 then FEC_err[snd_ch] = FEC_err[snd_ch] + nErr;
+											// For MEM-ARQ
+											fec_code = length(line1) and $7F;
+											if nErr < 0 then fec_code = fec_code or $80;
+											fec_data_blk = fec_data_blk + chr(fec_code) + line1;
+											delete(line, 1, 16);
+										} while(line.Count);
+										*/
+
+
+										make_rx_frame_FEC(snd_ch, rcvr_nr, &pDET->FEC_rx_data[snd_ch], &fec_data_blk, pDET->FEC_err[snd_ch]);
+										pDET->FEC_rx_data[snd_ch].Length = 0;
+										pDET->frame_status[snd_ch] = FRAME_WAIT;
+										pDET->FEC_header1[snd_ch][0] = 0;
+										pDET->FEC_header1[snd_ch][1] = 0;
+									}
+								}
+							}
+
+							hdr_ok = FALSE;
+
+							// I think FEC_header1[0] and FEC_header1[1] form the 128 bit header
+							// We look for a pair of flags, but allow a few bits to be wrong
+							// as FEC may fix them
+
+							if (pDET->frame_status[snd_ch] == FRAME_WAIT)
+							{
+								j1 = (pDET->FEC_header1[snd_ch][1] >> 16) ^ 0x7E7E;
+								/*_asm
+								{
+									push ax;
+									push bx;
+									push cx;
+									mov ax, 15;
+									mov bx, j1;
+								zloop:
+									mov cx, bx;
+									and cx, 1;
+									cmp cx, 1;
+									jne is_zero;
+									inc ah; // count damaged bits
+								is_zero:
+									shr bx, 1;
+									dec al;
+									jnz zloop;
+									cmp ah, 5; // greater than 4 bits
+									jnb greater;
+									mov hdr_ok, TRUE;
+								greater:
+									pop cx;
+									pop bx;
+									pop ax;
+								}
+								*/
+							}
+							//if (FEC_header1[snd_ch][1] shr 24 and $FF=$7E) and (frame_status[snd_ch]=FRAME_WAIT) then
+
+							if (hdr_ok)
+							{
+								// Have up to 4 bits wrong in 7E7E pattern
+
+								// Extract header, check crc then try RS
+
+								hdr_ok = FALSE;
+
+//								if ((pDET->FEC_header1[snd_ch][1] & 0xffff0000) == 0x7E7E0000)
+//								{
+
+								hdr_byte[13] = (pDET->FEC_header1[snd_ch][1] >> 24) & 0xFF;
+								hdr_byte[14] = (pDET->FEC_header1[snd_ch][1] >> 16) & 0xFF;
+
+								if (hdr_byte[13] == 0x7E && hdr_byte[14] == 0x7E)
+								{
+									hdr_byte[1] = (pDET->FEC_header1[snd_ch][0] >> 56) & 0xFF;
+									hdr_byte[2] = (pDET->FEC_header1[snd_ch][0] >> 48) & 0xFF;
+									hdr_byte[3] = (pDET->FEC_header1[snd_ch][0] >> 40) & 0xFF;
+									hdr_byte[4] = (pDET->FEC_header1[snd_ch][0] >> 32) & 0xFF;
+									hdr_byte[5] = (pDET->FEC_header1[snd_ch][0] >> 24) & 0xFF;
+									hdr_byte[6] = (pDET->FEC_header1[snd_ch][0] >> 16) & 0xFF;
+									hdr_byte[7] = (pDET->FEC_header1[snd_ch][0] >> 8) & 0xFF;
+									hdr_byte[8] = pDET->FEC_header1[snd_ch][0] & 0xFF;
+									hdr_byte[9] = (pDET->FEC_header1[snd_ch][1] >> 56) & 0xFF;
+									hdr_byte[10] = (pDET->FEC_header1[snd_ch][1] >> 48) & 0xFF;
+									hdr_byte[11] = (pDET->FEC_header1[snd_ch][1] >> 40) & 0xFF;
+									hdr_byte[12] = (pDET->FEC_header1[snd_ch][1] >> 32) & 0xFF;
+
+									pDET->FEC_len[snd_ch] = hdr_byte[12] << 8 + hdr_byte[11];
+									line[0] = 0x7E;
+									line[1] = 0x7E;
+									line[2] = hdr_byte[12];
+									line[3] = hdr_byte[11];
+
+									crc1 = (hdr_byte[10] << 8) + hdr_byte[9];
+									crc2 = get_fcs(line, 4);
+
+									if (crc1 == crc2)
+										hdr_ok = TRUE;
+
+									Debugprintf("Len %d CRC %x %x", pDET->FEC_len[snd_ch], crc1, crc2);
+								}
+								/*									if (!hdr_ok)
+																	{
+																		linelen = 0;
+																		for (j1 = 14; j1 > 0; j1-)
+																			line[linelen++] = hdr_byte[j1);
+
+
+
+																		FillChar(xEncoded, SizeOf(xEncoded), 0);
+																		FillChar(xDecoded, SizeOf(xDecoded), 0);
+																		line = copy(&line, 7, 8) + copy(&line, 1, 6);
+																		move(&line[1], xEncoded[0], 14);
+																		RS.InitBuffers;
+																		nErr = RS.DecodeRS(xEncoded, xDecoded);
+																		if (nErr > -1)
+																		{
+																			line.Length = 0;
+
+																			for (j1 = 8; j1 < 13; j1++)
+																				stringAdd(&line, &xDecoded[j1], 1);
+
+																			if (line[1] == 0x7E && line[2] == 0x7E)
+																			{
+																				FEC_len[snd_ch] = ord(line[3]) shl 8 + ord(line[4]);
+																				crc1 = (line[5] << 8) + line[6]);
+																				line = copy(line, 1, 4);
+																				crc2 = get_fcs(line, 4);
+																				if (crc1 == crc2)
+																					hdr_ok = TRUE;
+																			}
+																		}
+																	}
+								*/
+								if (hdr_ok)
+								{
+									pDET->FEC_len[snd_ch] = pDET->FEC_len[snd_ch] & 1023; //limit of length
+									if (pDET->FEC_len[snd_ch] > 0)
+									{
+										pDET->frame_status[snd_ch] = FRAME_LOAD;
+										pDET->FEC_len_cnt[snd_ch] = 0;
+										pDET->bit_cnt[snd_ch] = 0;
+										pDET->FEC_err[snd_ch] = 0;
+										pDET->FEC_rx_data[snd_ch].Length = 0;
+										fec_data_blk.Length = 0;
+									}
+								}
+							}
+						}
+						// Finalize
+						if (pDET->AFC_cnt[snd_ch] <= max_cnt)
+							for (j = pDET->AFC_cnt[snd_ch]; j <= max_cnt + 5; j++)
+								pDET->AFC_bit_buf[snd_ch][j] = 0.95f*pDET->AFC_bit_buf[snd_ch][j];
+
+						pDET->AFC_cnt[snd_ch] = 0;
+						pDET->AFC_bit_osc[snd_ch] = pDET->AFC_bit_osc[snd_ch] - 1;
+					}
+				}
+				if (fec_ch == NR_FEC_CH)
+				{
+					tap_cnt1++;
+					k++;
+				}
+			}
+		}
+		dcnt = (dcnt + 1) % n_INTR[snd_ch];
+	}
+}
+
+#endif
+
+void  make_rx_frame_FX25(int snd_ch, int rcvr_nr, int emph, string * data)
+{
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	word len, crc1, crc2;
+
+	len = data->Length;
+	
+	if (len < pkt_raw_min_len)
+	{
+		free(data);
+		return;
+	}
+
+	crc1 = get_fcs(data->Data, len - 2);
+	crc2 = (data->Data[len - 1] << 8) | data->Data[len - 2];
+
+	if (crc1 != crc2)
+	{
+		freeString(data);
+		return;
+	}
+	Debugprintf("FEC Good CRC %x Len %d chan %d rcvr %d emph %d", crc1, len, snd_ch, rcvr_nr, emph);
+
+	pDET->rx_decoded = decodedFEC;
+
+	if (detect_list[snd_ch].Count > 0)
+	{
+		//if detect_list[snd_ch].IndexOf(data)<0 then
+
+		if (my_indexof(&detect_list[snd_ch], data) < 0)
+		{
+			string * xx = newString();
+			xx->Length = sprintf(xx->Data, "FX25 %d", centreFreq[snd_ch]);
+
+
+			Add(&detect_list_c[snd_ch], xx);
+			Add(&detect_list[snd_ch], data);
+
+			stringAdd(xx, "", 0);
+		}
+		else
+		{
+			// Should check if previous decode was Single or MEM and if so replace
+
+			Debugprintf("Discarding copy rcvr %d", rcvr_nr);
+			freeString(data);
+		}
+	}
+	else
+	{
+		string * xx = newString();
+		xx->Length = sprintf(xx->Data, "FX25 %d", centreFreq[snd_ch]);
+
+		Add(&detect_list_c[snd_ch], xx);
+		Add(&detect_list[snd_ch], data);
+
+		if (rcvr_nr == 0)
+			pDET->emph_decoded = 3; //FX.25
+	}
+
+}
+
+	
+string * decode_FX25_data(TFX25 fx25)
+{
+	integer eras_pos = 0, i, j, len, rs_res;
+	Byte a, k;
+	Byte bit, byte_rx, bit_stuff_cnt, bit_cnt = 0, frame_status, bit_stream;
+
+	string * data = newString();
+
+	int done;
+	Byte rs_block[256];
+	int RSOK;
+
+	bit_stream = 0;
+	len = fx25.size - fx25.rs_size;
+	frame_status = FRAME_WAIT;
+
+	done = 0;
+
+	// RS FEC
+
+	memset(rs_block, 0, 255);
+	memcpy(rs_block, fx25.data.Data, len);
+	memcpy(&rs_block[255 - fx25.rs_size], &fx25.data.Data[len], fx25.rs_size);
+
+	rs_res = fx25_decode_rs(rs_block, &eras_pos, 0, 0, fx25.rs_size);
+
+	if (rs_res == -1)
+	{
+		Debugprintf("RS Correction Failed");
+		return data;
+	}
+
+	if (rs_res == 0)
+		Debugprintf("RS No Errors");
+	else
+		Debugprintf("RS %d Errors Corrected", rs_res);
+
+	// need to do ax.25 decode of bit stream
+
+	i = 0;
+	
+	while (i < len)
+	{
+		a = rs_block[i];
+		i++;
+		for (k = 0; k < 8; k++)
+		{
+			bit = a << 7;
+			a = a >> 1;
+
+			bit_stream = (bit_stream >> 1) | bit;
+
+			if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_LOAD)
+			{
+				frame_status = FRAME_WAIT;
+
+				if (bit_cnt == 6 && data->Length)
+					return data;
+			}
+
+			if (frame_status == FRAME_LOAD)
+			{
+				if (bit_stuff_cnt == 5)
+					bit_stuff_cnt = 0;
+				else
+				{
+					if (bit == RX_BIT1)
+						bit_stuff_cnt++;
+					else 
+						bit_stuff_cnt = 0;
+
+					byte_rx = (byte_rx >> 1) | bit;
+					bit_cnt++;
+				}
+
+				if (bit_cnt == 8)
+				{
+					stringAdd(data, &byte_rx, 1);
+					bit_cnt = 0;
+				}
+			}
+
+			if ((bit_stream && FRAME_FLAG == FRAME_FLAG) && frame_status == FRAME_WAIT)
+			{
+				frame_status = FRAME_LOAD;
+				bit_cnt = 0;
+				bit_stuff_cnt = 0;
+				data->Length = 0;
+			}
+		}
+	}
+	return data;
+}
+
+int FX25_corr[4] = {1, 1, 1, 1};
+
+#define tags_nr 11
+#define tt 8
+
+unsigned long long tags[tags_nr] =
+{
+	0xB74DB7DF8A532F3E, 0x26FF60A600CC8FDE, 0xC7DC0508F3D9B09E, 0x8F056EB4369660EE,
+	0x6E260B1AC5835FAE, 0xFF94DC634F1CFF4E, 0x1EB7B9CDBC09C00E, 0xDBF869BD2DBB1776,
+	0x3ADB0C13DEAE2836, 0xAB69DB6A543188D6, 0x4A4ABEC4A724B796
+};
+
+int sizes[tags_nr] = { 255, 144, 80, 48, 255, 160, 96, 64, 255, 192, 128 };
+int rs_sizes[tags_nr] = { 16, 16, 16, 16, 32, 32, 32, 32, 64, 64, 64 };
+
+/*
+unsigned char get_corr_arm(unsigned long long n)
+{
+	unsigned char  max_corr;
+	unsigned char result = 255;
+	int i = 0;
+
+	while (i < tags_nr)
+	{
+		if (__builtin_popcountll(n ^ tags[i] <= tt))
+			return i;
+	}
+
+	return 255;
+}
+*/
+
+char errors;
+
+
+unsigned char get_corr(unsigned long long val)
+{
+	unsigned long v;
+	unsigned long long n;
+	int i = 0;
+
+	while (i < tags_nr)
+	{
+		n = val ^ tags[i];
+
+		v = n;
+
+		v = v - ((v >> 1) & 0x55555555);                    // reuse input as temporary
+		v = (v & 0x33333333) + ((v >> 2) & 0x33333333);     // temp
+		errors = ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
+
+		if (errors > tt)
+		{
+			i++;
+			continue;
+		}
+
+		v = n >> 32;
+
+		v = v - ((v >> 1) & 0x55555555);                    // reuse input as temporary
+		v = (v & 0x33333333) + ((v >> 2) & 0x33333333);     // temp
+		errors += ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
+
+		if (errors <= tt)
+			return i;
+
+		i++;
+	}
+	return 255;
+}
+
+
+
+void decode_stream_FSK(int last, int snd_ch, int rcvr_nr, int emph, float * src_buf, float * bit_buf, int  buf_size, string * data)
+{
+	int i, k, j, n;
+	UCHAR bit;
+	UCHAR raw_bit;
+	UCHAR raw_bit1;
+	UCHAR raw_bit2;
+	float AFC, x, amp, k1, k2;
+	float baudrate;
+	float div_bit_afc;
+	word max_cnt;
+	float threshold;
+	float tr;
+	float Freq;
+
+	Byte sample_cnt;
+	float PkAmp, PkAmpMax = 0, MaxAmp, MinAmp, AverageAmp;
+	int newpkpos;
+	float bit_osc;
+	Byte last_rx_bit, bit_stream, frame_status;
+
+	TFX25 fx25;
+	unsigned long long tag64;
+	boolean rx_fx25_mode;
+
+	// get saved values to local variables to speed up access
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	last_rx_bit = pDET->last_rx_bit[snd_ch];
+	sample_cnt = pDET->sample_cnt[snd_ch];
+	PkAmp = pDET->PkAmp[snd_ch];
+	PkAmpMax = pDET->PkAmpMax[snd_ch];
+	newpkpos = pDET->newpkpos[snd_ch];
+	bit_osc = pDET->bit_osc[snd_ch];
+	MaxAmp = pDET->MaxAmp[snd_ch];
+	MinAmp = pDET->MinAmp[snd_ch];
+	AverageAmp = pDET->AverageAmp[snd_ch];
+	bit_stream = pDET->bit_stream[snd_ch];
+	frame_status = pDET->frame_status[snd_ch];
+
+	fx25 = pDET->fx25[snd_ch];
+
+	if (fx25_mode[snd_ch] == FX25_MODE_NONE)
+	{
+		rx_fx25_mode = FALSE;
+		fx25.status = FX25_TAG;
+	}
+	else
+		rx_fx25_mode = TRUE;
+
+
+	tr = dcd_threshold * dcd_corr;
+
+	if (last)
+	{
+		// Update DCD status
+
+		if (dcd_hdr_cnt[snd_ch] == 0)
+			dcd_on_hdr[snd_ch] = 0;
+
+		dcd_bit_cnt[snd_ch] = 0;
+	}
+
+	// src_buf is input samples processed in some way.
+	// not sure what bit_buf is, but guess bits extracted from samples
+	// but then why floats ??
+
+	baudrate = 300;
+
+	div_bit_afc = 1.0f / roundf(BIT_AFC*(RX_Samplerate / 11025.0f));
+
+	x = baudrate / RX_Samplerate;
+
+	// I guess max_cnt is samples per bit
+
+	//was - why + 1 then round??
+	max_cnt = roundf(RX_Samplerate / baudrate) + 1;
+
+	max_cnt = (RX_Samplerate / baudrate);
+
+	for (i = 0; i < buf_size; i++)
+	{
+		// Seems to be accumulating squares of all samples in the input for one bit period
+
+		bit_buf[sample_cnt] = 0.95*bit_buf[sample_cnt] + 0.05*src_buf[i] * src_buf[i];
+
+		// Check for NAN
+
+		if (bit_buf[sample_cnt] != bit_buf[sample_cnt])
+			bit_buf[sample_cnt] = 0.0f;
+
+		// ������� �������� � ������ �������������
+		// Find the maximum in the synchronization buffer
+
+		if (bit_buf[sample_cnt] > PkAmpMax)
+		{
+			PkAmp = src_buf[i];
+			PkAmpMax = bit_buf[sample_cnt];
+			newpkpos = sample_cnt;
+		}
+		sample_cnt++;
+
+		bit_osc = bit_osc + x;
+
+		// This seems to be how it does samples to bits
+
+
+		if (bit_osc >= 0.99f)					// Allow for rounding errors
+		{
+			if (sample_cnt <= max_cnt)
+				for (k = sample_cnt; k <= max_cnt; k++)
+					bit_buf[k] = 0.95f*bit_buf[k];
+
+			k1 = (1.0f * newpkpos) / (sample_cnt - 1);
+			k2 = pila(k1) - 1;
+			AFC = div_bit_afc * k2;
+
+			if (k1 > 0.5f)
+				bit_osc = bit_osc + AFC;
+			else
+				bit_osc = bit_osc - AFC;
+
+			PkAmpMax = 0;
+			sample_cnt = 0;
+
+			// Not sure about this, but if bit_buf gets to NaN it stays there
+
+			bit_osc = bit_osc - 1;
+			//DCD feature
+			if (last)
+			{
+				DCD_LastPkPos[snd_ch] = DCD_LastPkPos[snd_ch] * 0.96f + newpkpos * 0.04f;
+				DCD_LastPerc[snd_ch] = DCD_LastPerc[snd_ch] * 0.96f + fabsf(newpkpos - DCD_LastPkPos[snd_ch])*0.04f;
+
+				if (DCD_LastPerc[snd_ch] >= tr || DCD_LastPerc[snd_ch] < 0.00001f)
+					dcd_bit_cnt[snd_ch]++;
+				else
+					dcd_bit_cnt[snd_ch]--;
+			}
+
+			amp = PkAmp;
+
+			if (amp > 0)
+				raw_bit1 = RX_BIT1;
+			else
+				raw_bit1 = RX_BIT0;
+			//
+			if (amp > 0)
+				MaxAmp = MaxAmp * 0.9f + amp*0.1f; //0.9  
+			else
+				MinAmp = MinAmp * 0.9f + amp*0.1f;
+
+			amp = amp - (MaxAmp + MinAmp)*0.5f;
+
+			//  Bit-detector
+
+			AverageAmp = AverageAmp * 0.5f + amp*0.5f;
+			threshold = 0.5f * AverageAmp;
+
+			if (amp > threshold)
+				raw_bit = RX_BIT1;
+			else
+				raw_bit = RX_BIT0;
+
+			// 0.75
+
+			if (amp > 0.75*AverageAmp)
+				raw_bit2 = RX_BIT1;
+			else
+				raw_bit2 = RX_BIT0;
+
+			if (raw_bit != raw_bit2)
+				raw_bit1 = raw_bit2;
+
+			// look for il2p before nrzi 
+
+			if (il2p_mode[snd_ch])
+			{
+				il2p_rec_bit(snd_ch, rcvr_nr, emph, raw_bit);
+				if (il2p_mode[snd_ch] == IL2P_MODE_ONLY)		// Dont try HDLC decode
+					continue;
+			}
+			//NRZI
+
+			if (raw_bit == last_rx_bit)
+				bit = RX_BIT1;
+			else
+				bit = RX_BIT0;
+
+			last_rx_bit = raw_bit;
+			//
+			bit_stream = (bit_stream >> 1) | bit;
+
+			// DCD on flag
+
+			if (last)
+			{
+				if (dcd_hdr_cnt[snd_ch] > 0)
+					dcd_hdr_cnt[snd_ch]--;
+
+				DCD_header[snd_ch] = (DCD_header[snd_ch] >> 1) | (bit << 24);
+
+				if (((DCD_header[snd_ch] & 0xFFFF0000) == 0x7E7E0000) ||
+					((DCD_header[snd_ch] & 0xFFFFFF00) == 0x7E000000) ||
+					((DCD_header[snd_ch] & 0xFFFFFF00) == 0x00000000))
+				{
+					dcd_hdr_cnt[snd_ch] = 48;
+					dcd_on_hdr[snd_ch] = 1;
+				}
+			}
+
+			// FX25 process
+
+			if (rx_fx25_mode)
+			{
+				if (fx25.status == FX25_LOAD)
+				{
+					//if last then DCD_on_hdr[snd_ch]:=true;
+
+					fx25.byte_rx = (fx25.byte_rx >> 1) | bit;
+					fx25.bit_cnt++;
+
+					if (fx25.bit_cnt == 8)
+					{
+						fx25.bit_cnt = 0;
+						stringAdd(&fx25.data, &fx25.byte_rx, 1);
+						fx25.size_cnt++;
+						if (fx25.size == fx25.size_cnt)
+						{
+							fx25.status = FX25_TAG;
+							make_rx_frame_FX25(snd_ch, rcvr_nr, emph, decode_FX25_data(fx25));
+							//if last and (DCD_hdr_cnt[snd_ch]=0) then DCD_on_hdr[snd_ch]:=false;
+						}
+					}
+				}
+				else
+				{
+					fx25.size = 0;
+
+					fx25.tag = (fx25.tag >> 1);
+					if (bit)
+						fx25.tag |= 0x8000000000000000;
+
+					tag64 = fx25.tag & 0XFFFFFFFFFFFFFFFE;
+
+					// FX25 tag correlation
+
+					if (FX25_corr[snd_ch])
+					{
+						unsigned char res;
+
+						res = get_corr(tag64);
+
+						if (res < tags_nr)
+						{
+							Debugprintf("Got FEC Tag %d Errors %d", res, errors);
+							fx25.size = sizes[res];
+							fx25.rs_size = rs_sizes[res];
+						}
+					}
+					else
+					{
+						if (tag64 == 0xB74DB7DF8A532F3E)
+						{
+							fx25.size = 255;
+							fx25.rs_size = 16;
+						}
+						if (tag64 == 0x26FF60A600CC8FDE)
+						{
+							fx25.size = 144;
+							fx25.rs_size = 16;
+						}
+						if (tag64 == 0xC7DC0508F3D9B09E)
+						{
+							fx25.size = 80;
+							fx25.rs_size = 16;
+						}
+						if (tag64 == 0x8F056EB4369660EE)
+						{
+							fx25.size = 48;
+							fx25.rs_size = 16;
+						}
+						if (tag64 == 0x6E260B1AC5835FAE)
+						{
+							fx25.size = 255;
+							fx25.rs_size = 32;
+						}
+						if (tag64 == 0xFF94DC634F1CFF4E)
+						{
+							fx25.size = 160;
+							fx25.rs_size = 32;
+						}
+						if (tag64 == 0x1EB7B9CDBC09C00E)
+						{
+							fx25.size = 96;
+							fx25.rs_size = 32;
+						}
+						if (tag64 == 0xDBF869BD2DBB1776)
+						{
+							fx25.size = 64;
+							fx25.rs_size = 32;
+						}
+						if (tag64 == 0x3ADB0C13DEAE2836)
+						{
+							fx25.size = 255;
+							fx25.rs_size = 64;
+						}
+						if (tag64 == 0xAB69DB6A543188D6)
+						{
+							fx25.size = 192;
+							fx25.rs_size = 64;
+						}
+						if (tag64 == 0x4A4ABEC4A724B796)
+						{
+							fx25.size = 128;
+							fx25.rs_size = 64;
+						}
+					}
+					if (fx25.size != 0)
+					{
+						fx25.status = FX25_LOAD;
+						fx25.data.Length = 0;
+						fx25.bit_cnt = 0;
+						fx25.size_cnt = 0;
+						centreFreq[snd_ch] = GuessCentreFreq(snd_ch);
+					}
+				}
+			}
+			//
+
+
+			if (bit_stream == 0xFF || bit_stream == 0x7F || bit_stream == 0xFE)
+			{
+				// All have 7 or more 1 bits
+
+				if (frame_status == FRAME_LOAD)
+				{
+					// Have started receiving frame 
+
+//					Debugprintf("Frame Abort len= %d bits", pDET->raw_bits[snd_ch].Length);
+
+					frame_status = FRAME_WAIT;
+
+					// Raw stream init
+
+					pDET->raw_bits[snd_ch].Length = 0;
+					pDET->raw_bits1[snd_ch].Length = 0;
+					pDET->last_nrzi_bit[snd_ch] = raw_bit;
+
+//					dcd_hdr_cnt[snd_ch] = 48;
+//					dcd_on_hdr[snd_ch] = 1;
+
+
+					if (last)
+						chk_dcd1(snd_ch, buf_size);
+				}
+				continue;
+			}
+
+			if (((bit_stream & FRAME_FLAG) == FRAME_FLAG) && (frame_status == FRAME_LOAD))
+			{
+				frame_status = FRAME_WAIT;
+
+				if (pDET->raw_bits[snd_ch].Length == 7)		// Another flag
+				{
+					// Raw stream init
+
+					pDET->raw_bits[snd_ch].Length = 0;
+					pDET->raw_bits1[snd_ch].Length = 0;
+					pDET->last_nrzi_bit[snd_ch] = raw_bit;
+				}
+
+				if (pDET->raw_bits[snd_ch].Length > 7)
+				{
+//b					Debugprintf("Got Frame len = %d AFC %f", pDET->raw_bits[snd_ch].Length, AFC);
+					centreFreq[snd_ch] = GuessCentreFreq(snd_ch);
+					make_rx_frame(snd_ch, rcvr_nr, emph, pDET->last_nrzi_bit[snd_ch], &pDET->raw_bits[snd_ch], &pDET->raw_bits1[snd_ch]);
+				}
+			}
+
+
+			if (frame_status == FRAME_LOAD)
+			{
+				//Raw stream
+
+				if (pDET->raw_bits[snd_ch].Length < 36873)
+				{
+					if (raw_bit == RX_BIT1)
+						stringAdd(&pDET->raw_bits[snd_ch], "1", 1);
+					else
+						stringAdd(&pDET->raw_bits[snd_ch], "0", 1);
+				}
+
+				if (pDET->raw_bits1[snd_ch].Length < 36873)
+				{
+					if (raw_bit1 == RX_BIT1)
+						stringAdd(&pDET->raw_bits1[snd_ch], "1", 1);
+					else
+						stringAdd(&pDET->raw_bits1[snd_ch], "0", 1);
+				}
+				//
+			}
+
+			if (((bit_stream & FRAME_FLAG) == FRAME_FLAG) && (frame_status == FRAME_WAIT))
+			{
+				frame_status = FRAME_LOAD;
+
+				// Raw stream init
+
+				pDET->raw_bits[snd_ch].Length = 0;
+				pDET->raw_bits1[snd_ch].Length = 0;
+				pDET->last_nrzi_bit[snd_ch] = raw_bit;
+
+				//				Debugprintf("New Frame");
+			}
+
+		}
+	}
+
+	pDET->sample_cnt[snd_ch] = sample_cnt;
+	pDET->PkAmp[snd_ch] = PkAmp;
+	pDET->PkAmpMax[snd_ch] = PkAmpMax;
+	pDET->newpkpos[snd_ch] = newpkpos;
+	pDET->bit_osc[snd_ch] = bit_osc;
+	pDET->MaxAmp[snd_ch] = MaxAmp;
+	pDET->MinAmp[snd_ch] = MinAmp;
+	pDET->AverageAmp[snd_ch] = AverageAmp;
+	pDET->bit_stream[snd_ch] = bit_stream;
+	pDET->frame_status[snd_ch] = frame_status;
+	pDET->last_rx_bit[snd_ch] = last_rx_bit;
+	pDET->fx25[snd_ch] = fx25;
+}
+
+
+void decode_stream_BPSK(int last, int snd_ch, int rcvr_nr, int emph, float * srcI, float * srcQ, float * bit_buf, int  buf_size, string * data)
+{
+	float agc_fast = 0.01f;
+	float agc_fast1 = 1 - agc_fast;
+	float agc_slow = agc_fast / 4;
+	float agc_slow1 = 1 - agc_slow;
+
+	int i, k, j, n;
+	Byte dibit, bit;
+	single afc, x, amp, k1, k2;
+	single baudrate;
+	single div_bit_afc;
+	word max_cnt;
+	single threshold;
+	single tr;
+	single KCorr, AngleCorr, angle, muxI1, muxQ1, muxI2, muxQ2, sumIQ1, sumIQ2;
+	Byte newpkpos, sample_cnt;
+	single PkAmpI, PkAmpQ, PkAmpMax, PSK_AGC;
+	single PSK_IZ1, PSK_QZ1;
+	single bit_osc;
+	Byte bit_stuff_cnt, last_rx_bit, frame_status, bit_cnt, bit_stream, byte_rx;
+
+	// get saved values to local variables to speed up access
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	// global -> local
+
+	AngleCorr = pDET->AngleCorr[snd_ch];
+	bit_stuff_cnt = pDET->bit_stuff_cnt[snd_ch];
+	sample_cnt = pDET->sample_cnt[snd_ch];
+	PSK_AGC = pDET->PSK_AGC[snd_ch];
+	PkAmpI = pDET->PkAmpI[snd_ch];
+	PkAmpQ = pDET->PkAmpQ[snd_ch];
+	PkAmpMax = pDET->PkAmpMax[snd_ch];
+	newpkpos = pDET->newpkpos[snd_ch];
+	PSK_IZ1 = pDET->PSK_IZ1[snd_ch];
+	PSK_QZ1 = pDET->PSK_QZ1[snd_ch];
+	bit_osc = pDET->bit_osc[snd_ch];
+	frame_status = pDET->frame_status[snd_ch];
+	bit_cnt = pDET->bit_cnt[snd_ch];
+	bit_stream = pDET->bit_stream[snd_ch];
+	byte_rx = pDET->byte_rx[snd_ch];
+
+	//
+	tr = dcd_threshold * dcd_corr;
+
+	if (last)
+	{
+		// Update DCD status
+
+		if (dcd_hdr_cnt[snd_ch] == 0)
+			dcd_on_hdr[snd_ch] = 0;
+
+		dcd_bit_cnt[snd_ch] = 0;
+	}
+
+	baudrate = 300;
+	div_bit_afc = 1.0f / round(BIT_AFC*(RX_Samplerate / 11025));
+	x = baudrate / RX_Samplerate;
+
+//	max_cnt = round(RX_Samplerate / baudrate) + 1;
+	max_cnt = round(RX_Samplerate / baudrate) + 1;
+
+	for (i = 0; i < buf_size - 1; i++)
+	{
+		// AGC
+		amp = sqrt(srcI[i] * srcI[i] + srcQ[i] * srcQ[i]);
+
+		if (amp > PSK_AGC)
+
+			PSK_AGC = PSK_AGC * agc_fast1 + amp*agc_fast;
+		else
+			PSK_AGC = PSK_AGC * agc_slow1 + amp*agc_slow;
+
+		if (PSK_AGC > 1)
+
+		{
+			srcI[i] = srcI[i] / PSK_AGC;
+			srcQ[i] = srcQ[i] / PSK_AGC;
+			amp = amp / PSK_AGC; // ������ SQRT
+		}
+		//
+		bit_buf[sample_cnt] = 0.95*bit_buf[sample_cnt] + 0.05*amp;
+		// ������� �������� � ������ �������������
+		if (bit_buf[sample_cnt] > PkAmpMax)
+		{
+			PkAmpI = srcI[i];
+			PkAmpQ = srcQ[i];
+			PkAmpMax = bit_buf[sample_cnt];
+			newpkpos = sample_cnt;
+		}
+	
+		sample_cnt++;
+
+		bit_osc = bit_osc + x;
+
+		if (bit_osc >= 1)
+		{
+			if (sample_cnt <= max_cnt)
+				for (k = sample_cnt; k <= max_cnt; k++)
+					bit_buf[k] = 0.95*bit_buf[k];
+
+			k1 = (1.0f * newpkpos) / (sample_cnt - 1);
+			k2 = pila(k1) - 1;
+
+			afc = div_bit_afc * k2;
+
+			if (k1 > 0.5f)
+				bit_osc = bit_osc + afc;
+			else
+				bit_osc = bit_osc - afc;
+
+			PkAmpMax = 0;
+			sample_cnt = 0;
+			bit_osc = bit_osc - 1;
+
+			//DCD feature
+			if (last)
+			{
+				DCD_LastPkPos[snd_ch] = DCD_LastPkPos[snd_ch] * 0.96f + newpkpos * 0.04f;
+				DCD_LastPerc[snd_ch] = DCD_LastPerc[snd_ch] * 0.96f + fabsf(newpkpos - DCD_LastPkPos[snd_ch])*0.04f;
+
+				if (DCD_LastPerc[snd_ch] >= tr || DCD_LastPerc[snd_ch] < 0.00001f)
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] + 1;
+				else
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] - 1;
+			}
+
+			// Bit-detector
+
+			muxI1 = PkAmpI * PSK_IZ1;
+			muxI2 = PkAmpQ * PSK_IZ1;
+			muxQ1 = PkAmpQ * PSK_QZ1;
+			muxQ2 = PkAmpI * PSK_QZ1;
+			sumIQ1 = muxI1 + muxQ1;
+			sumIQ2 = muxI2 - muxQ2;
+			angle = atan2f(sumIQ2, sumIQ1);
+			PSK_IZ1 = PkAmpI;
+			PSK_QZ1 = PkAmpQ;
+			// Phase corrector
+
+			if (fabsf(angle) < PI5)
+				AngleCorr = AngleCorr * 0.95f - angle * 0.05f;
+			else
+			{
+				if (angle > 0)
+					AngleCorr = AngleCorr * 0.95f + (pi - angle)*0.05f;
+				else
+					AngleCorr = AngleCorr * 0.95f - (pi + angle)*0.05f;
+			}
+
+			angle = angle + AngleCorr;
+			//
+
+			if (fabsf(angle) < PI5)
+				bit = RX_BIT1;
+			else
+				bit = RX_BIT0;
+			//
+
+			if (il2p_mode[snd_ch])
+				il2p_rec_bit(snd_ch, rcvr_nr, emph, bit);
+				if (il2p_mode[snd_ch] == IL2P_MODE_ONLY)		// Dont try HDLC decode
+					continue;
+
+			if (bit)
+				stats[1]++;
+			else
+				stats[0]++;
+
+			bit_stream = (bit_stream >> 1) | bit;
+
+			// DCD on flag
+
+			if (last)
+			{
+				if (dcd_hdr_cnt[snd_ch] > 0)
+					dcd_hdr_cnt[snd_ch]--;
+
+				DCD_header[snd_ch] = (DCD_header[snd_ch] >> 1) | (bit << 24);
+
+				if (((DCD_header[snd_ch] & 0xFFFF0000) == 0x7E7E0000) ||
+					((DCD_header[snd_ch] & 0xFFFFFF00) == 0x7E000000) ||
+					((DCD_header[snd_ch] & 0xFFFFFF00) == 0x00000000))
+				{
+					dcd_hdr_cnt[snd_ch] = 48;
+					dcd_on_hdr[snd_ch] = 1;
+				}
+			}
+
+
+			// I think Andy looks for both flag and abort here. I think it would be
+			// clearer to detect abort separately
+
+			// This may not be optimun but should work
+
+			if (bit_stream == 0xFF || bit_stream == 0x7F || bit_stream == 0xFE)
+			{
+				// All have 7 or more 1 bits
+
+				if (frame_status == FRAME_LOAD)
+				{
+					// Have started receiving frame
+
+//	  				Debugprintf("Frame Abort len= %d bytes", data->Length);
+
+					frame_status = FRAME_WAIT;
+
+					// Raw stream init
+
+					bit_cnt = 0;
+					bit_stuff_cnt = 0;
+					data->Length = 0;
+				}
+				continue;
+			}
+
+
+			if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_LOAD)
+			{
+				frame_status = FRAME_WAIT;
+				//				if (bit_cnt == 6)
+				make_rx_frame_PSK(snd_ch, rcvr_nr, emph, data);
+			}
+
+			if (frame_status == FRAME_LOAD)
+			{
+				if (bit_stuff_cnt == 5)
+					bit_stuff_cnt = 0;
+				else
+				{
+					if (bit == RX_BIT1)
+						bit_stuff_cnt++;
+					else
+						bit_stuff_cnt = 0;
+
+					byte_rx = (byte_rx >> 1) + bit;
+					bit_cnt++;
+				}
+
+				if (bit_cnt == 8)
+				{
+					if (data->Length < 4097)
+						stringAdd(data, &byte_rx, 1);
+					bit_cnt = 0;
+				}
+			}
+			if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_WAIT)
+			{
+				frame_status = FRAME_LOAD;
+				bit_cnt = 0;
+				bit_stuff_cnt = 0;
+				data->Length = 0;
+			}
+		}
+	}
+
+	pDET->sample_cnt[snd_ch] = sample_cnt;
+	pDET->PSK_AGC[snd_ch] = PSK_AGC;
+	pDET->PkAmpI[snd_ch] = PkAmpI;
+	pDET->PkAmpQ[snd_ch] = PkAmpQ;
+	pDET->PkAmpMax[snd_ch] = PkAmpMax;
+	pDET->newpkpos[snd_ch] = newpkpos;
+	pDET->PSK_IZ1[snd_ch] = PSK_IZ1;
+	pDET->PSK_QZ1[snd_ch] = PSK_QZ1;
+	pDET->bit_osc[snd_ch] = bit_osc;
+	pDET->frame_status[snd_ch] = frame_status;
+	pDET->bit_cnt[snd_ch] = bit_cnt;
+	pDET->bit_stream[snd_ch] = bit_stream;
+	pDET->byte_rx[snd_ch] = byte_rx;
+	pDET->bit_stuff_cnt[snd_ch] = bit_stuff_cnt;
+	pDET->AngleCorr[snd_ch] = AngleCorr;
+}
+
+
+void decode_stream_QPSK(int last, int snd_ch, int rcvr_nr, int emph, float * srcI, float * srcQ, float * bit_buf, int  buf_size, string * data)
+{
+	float agc_fast = 0.01f;
+	float agc_fast1 = 1 - agc_fast;
+	float agc_slow = agc_fast / 4;
+	float agc_slow1 = 1 - agc_slow;
+
+	int i, k, j, n;
+	Byte dibit = 0, bit;
+	single afc, x, amp, k1, k2;
+	single baudrate;
+	single div_bit_afc;
+	word max_cnt;
+	single threshold;
+	single tr;
+	single KCorr = 0, AngleCorr, angle, muxI1, muxQ1, muxI2, muxQ2, sumIQ1, sumIQ2;
+	Byte newpkpos, sample_cnt;
+	single PkAmpI, PkAmpQ, PkAmpMax, PSK_AGC;
+	single PSK_IZ1, PSK_QZ1;
+	single bit_osc;
+	Byte bit_stuff_cnt, last_rx_bit, frame_status, bit_cnt, bit_stream, byte_rx;
+
+	// get saved values to local variables to speed up access
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+
+	bit_stuff_cnt = pDET->bit_stuff_cnt[snd_ch];
+	last_rx_bit = pDET->last_rx_bit[snd_ch];
+	sample_cnt = pDET->sample_cnt[snd_ch];
+	PSK_AGC = pDET->PSK_AGC[snd_ch];
+	PkAmpI = pDET->PkAmpI[snd_ch];
+	PkAmpQ = pDET->PkAmpQ[snd_ch];
+	PkAmpMax = pDET->PkAmpMax[snd_ch];
+	newpkpos = pDET->newpkpos[snd_ch];
+	PSK_IZ1 = pDET->PSK_IZ1[snd_ch];
+	PSK_QZ1 = pDET->PSK_QZ1[snd_ch];
+	bit_osc = pDET->bit_osc[snd_ch];
+	frame_status = pDET->frame_status[snd_ch];
+	bit_cnt = pDET->bit_cnt[snd_ch];
+	bit_stream = pDET->bit_stream[snd_ch];
+	byte_rx = pDET->byte_rx[snd_ch];
+	AngleCorr = pDET->AngleCorr[snd_ch];
+
+	tr = dcd_threshold * dcd_corr;
+
+	if (last)
+	{
+		// Update DCD status
+
+		if (dcd_hdr_cnt[snd_ch] == 0)
+			dcd_on_hdr[snd_ch] = 0;
+
+		dcd_bit_cnt[snd_ch] = 0;
+	}
+
+	// I think this works because of upsampling - 1200 = 4x 300 and we upsampled by 4
+
+	baudrate = 300;
+
+	div_bit_afc = 1.0f / roundf(BIT_AFC*(RX_Samplerate / 11025.0f));
+
+	x = baudrate / RX_Samplerate;
+
+	max_cnt = roundf(RX_Samplerate / baudrate) + 1;
+
+	for (i = 0; i < buf_size; i++)
+	{
+		// AGC
+		amp = sqrt(srcI[i] * srcI[i] + srcQ[i] * srcQ[i]);
+
+		if (amp > PSK_AGC)
+			PSK_AGC = PSK_AGC * agc_fast1 + amp * agc_fast;
+		else
+			PSK_AGC = PSK_AGC * agc_slow1 + amp * agc_slow;
+
+		if (PSK_AGC > 1)
+		{
+			srcI[i] = srcI[i] / PSK_AGC;
+			srcQ[i] = srcQ[i] / PSK_AGC;
+
+			amp = amp / PSK_AGC; // ������ SQRT
+		}
+
+		bit_buf[sample_cnt] = 0.95 *  bit_buf[sample_cnt] + 0.05 * amp;
+
+		// Check for NAN
+
+		if (bit_buf[sample_cnt] != bit_buf[sample_cnt])
+			bit_buf[sample_cnt] = 0.0f;
+
+		// Find the maximum in the synchronization buffer
+
+		if (bit_buf[sample_cnt] > PkAmpMax)
+		{
+			PkAmpI = srcI[i];
+			PkAmpQ = srcQ[i];
+			PkAmpMax = bit_buf[sample_cnt];
+			newpkpos = sample_cnt;
+		}
+
+		sample_cnt++;
+
+		bit_osc = bit_osc + x;
+
+		// This seems to be how it does samples to bits
+
+		if (bit_osc >= 1)
+		{
+			if (sample_cnt <= max_cnt)
+				for (k = sample_cnt; k <= max_cnt; k++)
+					bit_buf[k] = 0.95*bit_buf[k];
+
+			k1 = (1.0f * newpkpos) / (sample_cnt - 1);
+			k2 = pila(k1) - 1;
+			afc = div_bit_afc * k2;
+
+			if (k1 > 0.5)
+				bit_osc = bit_osc + afc;
+			else
+				bit_osc = bit_osc - afc;
+
+			PkAmpMax = 0;
+			sample_cnt = 0;
+			bit_osc = bit_osc - 1;
+			//DCD feature
+
+			if (last)
+			{
+				DCD_LastPkPos[snd_ch] = DCD_LastPkPos[snd_ch] * 0.96 + newpkpos * 0.04;
+				DCD_LastPerc[snd_ch] = DCD_LastPerc[snd_ch] * 0.96 + fabsf(newpkpos - DCD_LastPkPos[snd_ch])*0.04;
+
+				if (DCD_LastPerc[snd_ch] >= tr || DCD_LastPerc[snd_ch] < 0.00001f)
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] + 1;
+				else
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] - 1;
+			}
+
+			// Bit-detector
+
+			muxI1 = PkAmpI * PSK_IZ1;
+			muxI2 = PkAmpQ * PSK_IZ1;
+			muxQ1 = PkAmpQ * PSK_QZ1;
+			muxQ2 = PkAmpI * PSK_QZ1;
+			sumIQ1 = muxI1 + muxQ1;
+			sumIQ2 = muxI2 - muxQ2;
+			angle = atan2f(sumIQ2, sumIQ1);
+			PSK_IZ1 = PkAmpI;
+			PSK_QZ1 = PkAmpQ;
+
+			if (angle > pi || angle < -pi)
+				angle = angle;
+
+			if (modem_mode[snd_ch] == MODE_PI4QPSK)
+			{
+				// Phase corrector
+
+				// I'm pretty sure we send 4 phases starting 45 degrees from 0 so .25, .75 - .25 - .75
+
+				if (angle >= 0 && angle <= PI5)
+					KCorr = angle - PI25;
+
+				if (angle > PI5)
+					KCorr = angle - PI75;
+
+				if (angle < -PI5)
+					KCorr = angle + PI75;
+
+				if (angle < 0 && angle >= -PI5)
+					KCorr = angle + PI25;
+
+				AngleCorr = AngleCorr * 0.95f - KCorr * 0.05f;
+				angle = angle + AngleCorr;
+
+				if (angle >= 0 && angle <= PI5)
+				{
+					dibit = qpsk_set[snd_ch].rx[0];		// 00 - 0
+					qpsk_set[snd_ch].count[0]++;
+				}
+				else if (angle > PI5)
+				{
+					dibit = qpsk_set[snd_ch].rx[1];		// 01 - PI/2
+					qpsk_set[snd_ch].count[1]++;
+				}
+				else if (angle < -PI5)
+				{
+					dibit = qpsk_set[snd_ch].rx[2];		// 10 - PI
+					qpsk_set[snd_ch].count[2]++;
+				}
+				else if (angle < 0 && angle >= -PI5)
+				{
+					dibit = qpsk_set[snd_ch].rx[3];		// 11 - -PI/2
+					qpsk_set[snd_ch].count[3]++;
+				}
+			}
+			else
+			{
+				// Phase corrector
+
+				// I think this sends 0 90 180 270
+
+				if (fabsf(angle) < PI25)
+					KCorr = angle;
+
+				if (angle >= PI25 && angle <= PI75)
+					KCorr = angle - PI5;
+
+				if (angle <= -PI25 && angle >= -PI75)
+					KCorr = angle + PI5;
+
+				if (fabsf(angle) > PI75)
+				{
+					if (angle > 0)
+						KCorr = -M_PI + angle;
+					else
+						KCorr = M_PI + angle;
+				}
+
+				AngleCorr = AngleCorr * 0.95 - KCorr * 0.05;
+				angle = angle + AngleCorr;
+
+				if (fabsf(angle) < PI25)
+					dibit = qpsk_set[snd_ch].rx[0];							// 00 - 0
+				else if (angle >= PI25 && angle <= PI75)
+					dibit = qpsk_set[snd_ch].rx[1];				// 01 - PI/2
+				else if (fabsf(angle) > PI75)
+					dibit = qpsk_set[snd_ch].rx[2];					// 10 - PI
+				else if (angle <= -PI25 && angle >= -PI75)
+					dibit = qpsk_set[snd_ch].rx[3];					// 11 - -PI/2
+			}
+
+			for (j = 0; j < 2; j++)
+			{
+				dibit = dibit << 1;
+
+				// NRZI
+
+				if (last_rx_bit == (dibit & RX_BIT1))
+					bit = RX_BIT1;
+				else
+					bit = RX_BIT0;
+
+				last_rx_bit = dibit & RX_BIT1;
+			
+				bit_stream = (bit_stream >> 1) | bit;
+
+				// DCD on flag
+
+				if (last)
+				{
+					if (dcd_hdr_cnt[snd_ch] > 0)
+						dcd_hdr_cnt[snd_ch]--;
+
+					DCD_header[snd_ch] = (DCD_header[snd_ch] >> 1) | (bit << 24);
+
+					if (((DCD_header[snd_ch] & 0xFFFF0000) == 0x7E7E0000) ||
+						((DCD_header[snd_ch] & 0xFFFFFF00) == 0x7E000000) ||
+						((DCD_header[snd_ch] & 0xFFFFFF00) == 0x00000000))
+					{
+						dcd_hdr_cnt[snd_ch] = 48;
+						dcd_on_hdr[snd_ch] = 1;
+					}
+				}
+
+
+				// I think Andy looks for both flag and abort here. I think it would be
+				// clearer to detect abort separately
+
+				// This may not be optimun but should work
+
+				if (bit_stream == 0xFF || bit_stream == 0x7F || bit_stream == 0xFE)
+				{
+					// All have 7 or more 1 bits
+
+					if (frame_status == FRAME_LOAD)
+					{
+						// Have started receiving frame
+
+	//					Debugprintf("Frame Abort len= %d bytes", data->Length);
+
+						frame_status = FRAME_WAIT;
+
+						// Raw stream init
+
+						bit_cnt = 0;
+						bit_stuff_cnt = 0;
+						data->Length = 0;
+					}
+					continue;
+				}
+
+				if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_LOAD)
+				{
+					frame_status = FRAME_WAIT;
+					//				if (bit_cnt == 6)
+					make_rx_frame_PSK(snd_ch, rcvr_nr, emph, data);
+				}
+
+				if (frame_status == FRAME_LOAD)
+				{
+					if (bit_stuff_cnt == 5)
+						bit_stuff_cnt = 0;
+					else
+					{
+						if (bit == RX_BIT1)
+							bit_stuff_cnt++;
+						else
+							bit_stuff_cnt = 0;
+
+						byte_rx = (byte_rx >> 1) + bit;
+						bit_cnt++;
+
+					}
+
+					if (bit_cnt == 8)
+					{
+						if (data->Length < 4097)
+							stringAdd(data, &byte_rx, 1);
+						bit_cnt = 0;
+					}
+				}
+				if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_WAIT)
+				{
+					frame_status = FRAME_LOAD;
+					bit_cnt = 0;
+					bit_stuff_cnt = 0;
+					data->Length = 0;
+				}
+			}
+		}
+	}
+
+	pDET->sample_cnt[snd_ch] = sample_cnt;
+	pDET->PSK_AGC[snd_ch] = PSK_AGC;
+	pDET->PkAmpI[snd_ch] = PkAmpI;
+	pDET->PkAmpQ[snd_ch] = PkAmpQ;
+	pDET->PkAmpMax[snd_ch] = PkAmpMax;
+	pDET->newpkpos[snd_ch] = newpkpos;
+	pDET->PSK_IZ1[snd_ch] = PSK_IZ1;
+	pDET->PSK_QZ1[snd_ch] = PSK_QZ1;
+	pDET->bit_osc[snd_ch] = bit_osc;
+	pDET->frame_status[snd_ch] = frame_status;
+	pDET->bit_cnt[snd_ch] = bit_cnt;
+	pDET->bit_stream[snd_ch] = bit_stream;
+	pDET->byte_rx[snd_ch] = byte_rx;
+	pDET->last_rx_bit[snd_ch] = last_rx_bit;
+	pDET->bit_stuff_cnt[snd_ch] = bit_stuff_cnt;
+	pDET->AngleCorr[snd_ch] = AngleCorr;
+}
+
+void decode_stream_8PSK(int last, int snd_ch, int rcvr_nr, int emph, float * srcI, float * srcQ, float * bit_buf, int  buf_size, string * data)
+{
+	float agc_fast = 0.01f;
+	float agc_fast1 = 1 - agc_fast;
+	float agc_slow = agc_fast / 4;
+	float agc_slow1 = 1 - agc_slow;
+
+	int i, k, j, n;
+	Byte tribit = 0, bit;
+	single afc, x, amp, k1, k2;
+	single baudrate;
+	single div_bit_afc;
+	word max_cnt;
+	single threshold;
+	single tr;
+	single KCorr = 0, AngleCorr, angle, muxI1, muxQ1, muxI2, muxQ2, sumIQ1, sumIQ2;
+	Byte newpkpos, sample_cnt;
+	single PkAmpI, PkAmpQ, PkAmpMax, PSK_AGC;
+	single PSK_IZ1, PSK_QZ1;
+	single bit_osc;
+	Byte bit_stuff_cnt, last_rx_bit, frame_status, bit_cnt, bit_stream, byte_rx;
+
+	// get saved values to local variables to speed up access
+
+	struct TDetector_t * pDET = &DET[emph][rcvr_nr];
+
+	bit_stuff_cnt = pDET->bit_stuff_cnt[snd_ch];
+	last_rx_bit = pDET->last_rx_bit[snd_ch];
+	sample_cnt = pDET->sample_cnt[snd_ch];
+	PSK_AGC = pDET->PSK_AGC[snd_ch];
+	PkAmpI = pDET->PkAmpI[snd_ch];
+	PkAmpQ = pDET->PkAmpQ[snd_ch];
+	PkAmpMax = pDET->PkAmpMax[snd_ch];
+	newpkpos = pDET->newpkpos[snd_ch];
+	PSK_IZ1 = pDET->PSK_IZ1[snd_ch];
+	PSK_QZ1 = pDET->PSK_QZ1[snd_ch];
+	bit_osc = pDET->bit_osc[snd_ch];
+	frame_status = pDET->frame_status[snd_ch];
+	bit_cnt = pDET->bit_cnt[snd_ch];
+	bit_stream = pDET->bit_stream[snd_ch];
+	byte_rx = pDET->byte_rx[snd_ch];
+	AngleCorr = pDET->AngleCorr[snd_ch];
+
+	tr = dcd_threshold * dcd_corr;
+
+	if (last)
+	{
+		// Update DCD status
+
+		if (dcd_hdr_cnt[snd_ch] == 0)
+			dcd_on_hdr[snd_ch] = 0;
+
+		dcd_bit_cnt[snd_ch] = 0;
+	}
+
+	baudrate = 1600 / 6;
+	div_bit_afc = 1.0 / round(BIT_AFC*(RX_Samplerate / 11025));
+	x = baudrate / RX_Samplerate;
+	max_cnt = round(RX_Samplerate / baudrate) + 1;
+	for (i = 0; i < buf_size; i++)
+	{
+		// AGC
+		amp = sqrt(srcI[i] * srcI[i] + srcQ[i] * srcQ[i]);
+		if (amp > PSK_AGC)
+			PSK_AGC = PSK_AGC * agc_fast1 + amp*agc_fast;
+		else
+			PSK_AGC = PSK_AGC * agc_slow1 + amp*agc_slow;
+
+		if (PSK_AGC > 1)
+		{
+			srcI[i] = srcI[i] / PSK_AGC;
+			srcQ[i] = srcQ[i] / PSK_AGC;
+			amp = amp / PSK_AGC; // ������ SQRT
+		}
+
+		bit_buf[sample_cnt] = 0.95*bit_buf[sample_cnt] + 0.05*amp;
+
+		// ������� �������� � ������ �������������
+		if (bit_buf[sample_cnt] > PkAmpMax)
+		{
+			PkAmpI = srcI[i];
+			PkAmpQ = srcQ[i];
+			PkAmpMax = bit_buf[sample_cnt];
+			newpkpos = sample_cnt;
+		}
+		//
+
+		sample_cnt++;
+
+		bit_osc = bit_osc + x;
+
+		if (bit_osc >= 1)
+		{
+			if (sample_cnt <= max_cnt)
+				for (k = sample_cnt; k <= max_cnt; k++)
+					bit_buf[k] = 0.95*bit_buf[k];
+
+			k1 = (1.0f * newpkpos) / (sample_cnt - 1);
+			k2 = pila(k1) - 1;
+
+			afc = div_bit_afc * k2;
+			if (k1 > 0.5)
+				 bit_osc = bit_osc + afc;
+			else
+				bit_osc = bit_osc - afc;
+
+			PkAmpMax = 0;
+			sample_cnt = 0;
+			bit_osc = bit_osc - 1;
+			//DCD feature
+			if (last)
+			{
+				DCD_LastPkPos[snd_ch] = DCD_LastPkPos[snd_ch] * 0.96 + newpkpos * 0.04;
+				DCD_LastPerc[snd_ch] = DCD_LastPerc[snd_ch] * 0.96 + abs(newpkpos - DCD_LastPkPos[snd_ch])*0.04;
+				if (DCD_LastPerc[snd_ch] >= tr || DCD_LastPerc[snd_ch] < 0.00001)
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] + 1;
+				else
+					dcd_bit_cnt[snd_ch] = dcd_bit_cnt[snd_ch] - 1;
+			}
+			// Bit-detector
+			muxI1 = PkAmpI * PSK_IZ1;
+			muxI2 = PkAmpQ * PSK_IZ1;
+			muxQ1 = PkAmpQ * PSK_QZ1;
+			muxQ2 = PkAmpI * PSK_QZ1;
+			sumIQ1 = muxI1 + muxQ1;
+			sumIQ2 = muxI2 - muxQ2;
+			angle = atan2f(sumIQ2, sumIQ1);
+			PSK_IZ1 = PkAmpI;
+			PSK_QZ1 = PkAmpQ;
+
+			// Phase corrector
+
+			if (fabsf(angle) < PI125)
+				KCorr = angle;
+
+			if (angle >= PI125 && angle <= PI375)
+				KCorr = angle - PI25;
+			if (angle >= PI375 && angle < PI625)
+				KCorr = angle - PI5;
+			if (angle >= PI625 && angle <= PI875)
+				KCorr = angle - PI75;
+			if (angle <= -PI125 && angle > -PI375)
+				KCorr = angle + PI25;
+			if (angle <= -PI375 && angle > -PI625)
+				KCorr = angle + PI5;
+			if (angle <= -PI625 && angle >= -PI875)
+				KCorr = angle + PI75;
+
+			if (fabsf(angle) > PI875)
+			{
+				if (angle > 0)
+					KCorr = angle - pi;
+				else
+					KCorr = angle + pi;
+			}
+
+			AngleCorr = AngleCorr * 0.95 - KCorr * 0.05;
+			angle = angle + AngleCorr;
+			//
+
+			if (fabsf(angle) < PI125)
+				tribit = 1;
+			if (angle >= PI125 && angle < PI375)
+				tribit = 0;
+			if (angle >= PI375 && angle < PI625)
+				tribit = 2;
+			if (angle >= PI625 && angle <= PI875)
+				tribit = 3;
+			if (fabsf(angle) > PI875)
+				tribit = 7;
+			if (angle <= -PI625 && angle >= -PI875)
+				tribit = 6;
+			if (angle <= -PI375 && angle > -PI625)
+				tribit = 4;
+			if (angle <= -PI125 && angle > -PI375)
+				tribit = 5;
+
+			tribit = tribit << 4;
+
+			for (j = 0; j < 3; j++)
+			{
+				tribit = tribit << 1;
+				//NRZI
+
+				if (last_rx_bit == (tribit & RX_BIT1))
+					bit = RX_BIT1;
+				else
+					bit = RX_BIT0;
+
+				last_rx_bit = tribit & RX_BIT1;
+				//
+				bit_stream = (bit_stream >> 1) | bit;
+
+				// DCD on flag
+
+				if (last)
+				{
+					if (dcd_hdr_cnt[snd_ch] > 0)
+						dcd_hdr_cnt[snd_ch]--;
+
+					DCD_header[snd_ch] = (DCD_header[snd_ch] >> 1) | (bit << 24);
+
+					if (((DCD_header[snd_ch] & 0xFFFF0000) == 0x7E7E0000) ||
+						((DCD_header[snd_ch] & 0xFFFFFF00) == 0x7E000000) ||
+						((DCD_header[snd_ch] & 0xFFFFFF00) == 0x00000000))
+					{
+						dcd_hdr_cnt[snd_ch] = 48;
+						dcd_on_hdr[snd_ch] = 1;
+					}
+				}
+
+
+				// I think Andy looks for both flag and abort here. I think it would be
+				// clearer to detect abort separately
+
+				// This may not be optimun but should work
+
+				if (bit_stream == 0xFF || bit_stream == 0x7F || bit_stream == 0xFE)
+				{
+					// All have 7 or more 1 bits
+
+					if (frame_status == FRAME_LOAD)
+					{
+						// Have started receiving frame
+
+	   //					Debugprintf("Frame Abort len= %d bytes", data->Length);
+
+						frame_status = FRAME_WAIT;
+
+						// Raw stream init
+
+						bit_cnt = 0;
+						bit_stuff_cnt = 0;
+						data->Length = 0;
+					}
+					continue;
+				}
+
+
+				if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_LOAD)
+				{
+					frame_status = FRAME_WAIT;
+					if (bit_cnt == 6)
+						make_rx_frame_PSK(snd_ch, rcvr_nr, emph, data);
+				}
+				if (frame_status == FRAME_LOAD)
+				{
+					if (bit_stuff_cnt == 5)
+						bit_stuff_cnt = 0;
+					else
+					{
+						if (bit == RX_BIT1)
+							bit_stuff_cnt++;
+						else
+							bit_stuff_cnt = 0;
+
+						byte_rx = (byte_rx >> 1) + bit;
+						bit_cnt++;
+					}
+					if (bit_cnt == 8)
+					{
+						if (data->Length < 4097)
+							stringAdd(data, &byte_rx, 1);
+						bit_cnt = 0;
+					}
+				}
+
+				if ((bit_stream & FRAME_FLAG) == FRAME_FLAG && frame_status == FRAME_WAIT)
+				{
+					frame_status = FRAME_LOAD;
+					bit_cnt = 0;
+					bit_stuff_cnt = 0;
+					data->Length = 0;
+				}
+			}
+		}
+	}
+
+	pDET->sample_cnt[snd_ch] = sample_cnt;
+	pDET->PSK_AGC[snd_ch] = PSK_AGC;
+	pDET->PkAmpI[snd_ch] = PkAmpI;
+	pDET->PkAmpQ[snd_ch] = PkAmpQ;
+	pDET->PkAmpMax[snd_ch] = PkAmpMax;
+	pDET->newpkpos[snd_ch] = newpkpos;
+	pDET->PSK_IZ1[snd_ch] = PSK_IZ1;
+	pDET->PSK_QZ1[snd_ch] = PSK_QZ1;
+	pDET->bit_osc[snd_ch] = bit_osc;
+	pDET->frame_status[snd_ch] = frame_status;
+	pDET->bit_cnt[snd_ch] = bit_cnt;
+	pDET->bit_stream[snd_ch] = bit_stream;
+	pDET->byte_rx[snd_ch] = byte_rx;
+	pDET->last_rx_bit[snd_ch] = last_rx_bit;
+	pDET->bit_stuff_cnt[snd_ch] = bit_stuff_cnt;
+	pDET->AngleCorr[snd_ch] = AngleCorr;
+
+}
+
+/*
+
+////////////////////////////////////////////////////////
+
+function blackman(i,tap: word): single;
+var
+  a0,a1,a2,a: single;
+{
+  a = 0.16;
+  a0 = (1-a)/2;
+  a1 = 1/2;
+  a2 = a/2;
+  result = a0-a1*cos(2*pi*i/(tap-1))+a2*cos(4*pi*i/(tap-1));
+}
+
+function nuttal(i,tap: word): single;
+var
+  a0,a1,a2,a3: single;
+{
+  a0 = 0.355768;
+  a1 = 0.487396;
+  a2 = 0.144232;
+  a3 = 0.012604;
+  result = a0-a1*cos(2*pi*i/(tap-1))+a2*cos(4*pi*i/(tap-1))-a3*cos(6*pi*i/(tap-1));
+}
+
+function flattop(i,tap: word): single;
+var
+  a0,a1,a2,a3,a4: single;
+{
+  a0 = 1;
+  a1 = 1.93;
+  a2 = 1.29;
+  a3 = 0.388;
+  a4 = 0.032;
+  result = a0-a1*cos(2*pi*i/(tap-1))+a2*cos(4*pi*i/(tap-1))-a3*cos(6*pi*i/(tap-1))+a4*cos(8*pi*i/(tap-1));
+}
+*/
+
+
+void init_BPF(float freq1, float freq2, unsigned short tap, float samplerate, float * buf)
+{
+	unsigned short tap1, i;
+	float tap12, ham, acc1, acc2;
+	float bpf_l[2048];
+	float bpf_h[2048];
+	float itap12, pi2, x1, x2;
+
+	acc1 = 0;
+	acc2 = 0;
+	tap1 = tap - 1;
+	tap12 = tap1 / 2;
+	pi2 = 2 * pi;
+	x1 = pi2 * freq1 / samplerate;
+	x2 = pi2 * freq2 / samplerate;
+	for (i = 0; i <= tap1; i++)
+	{
+//		float x = (pi2 * i) / tap1;
+//		x = cosf(x);
+//		ham = 0.5 - 0.5 * x;
+
+		ham = 0.5 - 0.5 * cosf((pi2 * i) / tap1); //old
+
+		if (ham != ham)			// check for NaN
+			ham = 0.0f;
+
+		itap12 = i - tap12;
+
+		if (itap12 == 0)
+		{
+			bpf_l[i] = x1;
+			bpf_h[i] = x2;
+		}
+		else
+		{
+			bpf_l[i] = sinf(x1*itap12) / itap12;
+			bpf_h[i] = sinf(x2*itap12) / itap12;
+		}
+
+		bpf_l[i] = bpf_l[i] * ham;
+		bpf_h[i] = bpf_h[i] * ham;
+		acc1 = acc1 + bpf_l[i];
+		acc2 = acc2 + bpf_h[i];
+	}
+
+	for (i = 0; i <= tap1; i++)
+	{
+		bpf_l[i] = bpf_l[i] / acc1;
+		bpf_h[i] = -(bpf_h[i] / acc2);
+	};
+
+	bpf_h[tap / 2] = bpf_h[tap / 2] + 1;
+
+	for (i = 0; i <= tap; i++)
+	{
+		buf[i] = -(bpf_l[i] + bpf_h[i]);
+	}
+	buf[tap / 2] = buf[tap / 2] + 1;
+}
+
+
+
+void  init_LPF(float width, unsigned short tap, float samplerate, float * buf)
+{
+	float acc1, ham;
+	unsigned short tap1, i;
+	float itap12, tap12, x1, pi2;
+
+	acc1 = 0;
+	tap1 = tap - 1;
+	tap12 = tap1 / 2;
+	pi2 = 2 * pi;
+	x1 = pi2 * width / samplerate;
+
+	for (i = 0; i <= tap1; i++)
+	{
+		ham = 0.53836f - 0.46164f * cosf(pi2 * i / tap1); //old
+
+		if (ham != ham)			// check for NaN
+			ham = 0.0f;
+
+	   //ham = 0.5-0.5*cos(pi2*i/tap1);
+		//ham = 0.5*(1-cos(pi2*i/tap1)); //hann
+
+		//ham = blackman(i,tap); //blackman
+		//ham = nuttal(i,tap);
+
+		itap12 = i - tap12;
+
+		if (itap12 == 0)
+			buf[i] = x1;
+		else
+			buf[i] = sinf(x1*itap12) / itap12;
+
+		buf[i] = buf[i] * ham;
+		acc1 = acc1 + buf[i];
+	}
+	for (i = 0; i <= tap1; i++)
+		buf[i] = buf[i] / acc1;
+}
+
+void make_core_INTR(UCHAR snd_ch)
+{
+	float width;
+
+	width = roundf(RX_Samplerate / 2);
+
+	n_INTR[snd_ch] = 1;
+
+	switch (speed[snd_ch])
+	{
+	case SPEED_300:
+
+		width = roundf(RX_Samplerate / 2);
+		n_INTR[snd_ch] = 1;
+		break;
+
+	case SPEED_P300:
+
+		width = roundf(RX_Samplerate / 2);
+		n_INTR[snd_ch] = 1;
+		break;
+
+	case SPEED_600:
+
+		width = roundf(RX_Samplerate / 4);
+		n_INTR[snd_ch] = 2;
+		break;
+
+	case SPEED_P600:
+
+		width = roundf(RX_Samplerate / 4);
+		n_INTR[snd_ch] = 2;
+		break;
+
+	case SPEED_1200:
+		width = roundf(RX_Samplerate / 8);
+		n_INTR[snd_ch] = 4;
+		break;
+
+	case SPEED_P1200:
+		width = roundf(RX_Samplerate / 8);
+		n_INTR[snd_ch] = 4;
+		break;
+
+	case SPEED_Q2400:
+		width = 300;
+		n_INTR[snd_ch] = 4;
+		break; //8
+
+	case SPEED_DW2400:
+
+		width = 300;
+		n_INTR[snd_ch] = 4;
+		break;
+
+	case SPEED_AE2400:
+
+		width = 300;
+		n_INTR[snd_ch] = 4;
+		break;
+
+	case SPEED_MP400:
+
+		width = round(RX_Samplerate / 8);
+		n_INTR[snd_ch] = 4;
+		break;
+
+	case SPEED_Q3600:
+		width = 300;
+		n_INTR[snd_ch] = 6;//12
+		break;
+
+	case SPEED_8P4800:
+		width = 100;
+		n_INTR[snd_ch] = 6;
+		break;
+
+	case SPEED_2400:
+
+		width = round(RX_Samplerate / 16);
+		n_INTR[snd_ch] = 8;
+		break;
+
+	case SPEED_P2400:
+		width = round(RX_Samplerate / 16);
+		n_INTR[snd_ch] = 8;
+		break;
+
+	case SPEED_Q4800:
+		width = 300;
+		n_INTR[snd_ch] = 8;//16
+		break;
+	}
+
+
+	init_LPF(width, INTR_tap[snd_ch], RX_Samplerate, INTR_core[snd_ch]);
+}
+
+void  make_core_LPF(UCHAR snd_ch, short width)
+{
+	if (modem_mode[snd_ch] == MODE_MPSK)
+	{
+		init_LPF(width, LPF_tap[snd_ch], RX_Samplerate / n_INTR[snd_ch], LPF_core[snd_ch]);
+		init_LPF(rx_baudrate[snd_ch], LPF_tap[snd_ch], RX_Samplerate / n_INTR[snd_ch], AFC_core[snd_ch]);
+	}
+	else
+		init_LPF(width, LPF_tap[snd_ch], RX_Samplerate, LPF_core[snd_ch]);
+}
+
+
+void  make_core_BPF(UCHAR snd_ch, short freq, short width)
+{
+	float old_freq, width2, rx_samplerate2, freq1, freq2;
+
+	UCHAR i;
+
+	freq = freq + rxOffset + chanOffset[snd_ch];
+
+	// I want to run decoders lowest to highest to simplify my display,
+	// so filters must be calculated in same order
+
+	int offset = -(RCVR[snd_ch] * rcvr_offset[snd_ch]); // lowest
+
+	rx_samplerate2 = 0.5 * RX_Samplerate;
+	width2 = 0.5 * width;
+	old_freq = freq;
+
+	for (i = 0; i <= RCVR[snd_ch] << 1; i++)
+	{
+		freq = old_freq + offset;
+	
+		freq1 = freq - width2;
+		freq2 = freq + width2;
+		if (freq1 < 1)
+			freq1 = 1;
+
+		if (freq2 < 1)
+			freq2 = 1;
+
+		if (freq1 > rx_samplerate2)
+			freq1 = rx_samplerate2;
+
+		if (freq2 > rx_samplerate2)
+			freq2 = rx_samplerate2;
+
+		init_BPF(freq1, freq2, BPF_tap[snd_ch], RX_Samplerate, &DET[0][i].BPF_core[snd_ch][0]);
+
+		offset += rcvr_offset[snd_ch];
+	}
+}
+
+
+
+void make_core_TXBPF(UCHAR snd_ch, float freq, float width)
+{
+	float freq1, freq2;
+
+	freq1 = freq - width / 2;
+	freq2 = freq + width / 2;
+
+	if (freq1 < 1)
+		freq1 = 1;
+
+	if (freq2 < 1)
+		freq2 = 1;
+
+	if (freq1 > TX_Samplerate / 2)
+		freq1 = TX_Samplerate / 2;
+
+	if (freq2 > TX_Samplerate / 2)
+		freq2 = TX_Samplerate / 2;
+
+	init_BPF(freq1, freq2, tx_BPF_tap[snd_ch], TX_Samplerate, tx_BPF_core[snd_ch]);
+}
+
+
+
+
+void interpolation(int snd_ch, int rcvr_nr, int emph, float * dest_buf, float * src_buf, int buf_size)
+{
+	int n_intr1, buf_size1, k, i, j;
+	float buf[8192];
+
+	buf_size1 = buf_size - 1;
+	n_intr1 = n_INTR[snd_ch] - 1;
+	k = 0;
+
+	for (i = 0; i <= buf_size1; i++)
+	{
+		for (j = 0; j <= n_intr1; j++)
+		{
+			buf[k] = src_buf[i];
+			k++;
+	   }
+	}
+	FIR_filter(buf, buf_size *n_INTR[snd_ch], INTR_tap[snd_ch], INTR_core[snd_ch], dest_buf, DET[emph][rcvr_nr].prev_INTR_buf[snd_ch]);
+}
+
+void interpolation_PSK(int snd_ch, int rcvr_nr, int emph, float * destI, float * destQ, float * srcI, float * srcQ, int buf_size)
+{
+	word n_intr1, buf_size1, k, i, j;
+	single bufI[8192], bufQ[8192];
+
+	buf_size1 = buf_size - 1;
+	n_intr1 = n_INTR[snd_ch] - 1;
+
+	k = 0;
+
+	for (i = 0; i <= buf_size1; i++)
+	{
+		for (j = 0; j <= n_intr1; j++)
+		{
+			bufI[k] = srcI[i];
+			bufQ[k] = srcQ[i];
+			k++;
+		}
+	}
+
+	FIR_filter(bufI, buf_size*n_INTR[snd_ch], INTR_tap[snd_ch], INTR_core[snd_ch], destI, DET[emph][rcvr_nr].prev_INTRI_buf[snd_ch]);
+	FIR_filter(bufQ, buf_size*n_INTR[snd_ch], INTR_tap[snd_ch], INTR_core[snd_ch], destQ, DET[emph][rcvr_nr].prev_INTRQ_buf[snd_ch]);
+}
+
+
+void FSK_Demodulator(int snd_ch, int rcvr_nr, int emph, int last)
+{
+	// filtered samples in src_BPF_buf, output in src_Loop_buf
+
+	Mux3(snd_ch,rcvr_nr,emph, &DET[0][rcvr_nr].src_BPF_buf[snd_ch][0], &LPF_core[snd_ch][0], &DET[emph][rcvr_nr].src_Loop_buf[snd_ch][0],
+		&DET[emph][rcvr_nr].prev_LPF1I_buf[snd_ch][0], &DET[emph][rcvr_nr].prev_LPF1Q_buf[snd_ch][0], LPF_tap[snd_ch], rx_bufsize);
+  
+  if (n_INTR[snd_ch] > 1)
+  {
+	  interpolation(snd_ch, rcvr_nr, emph, DET[emph][rcvr_nr].src_INTR_buf[snd_ch], DET[emph][rcvr_nr].src_Loop_buf[snd_ch], rx_bufsize);
+	  decode_stream_FSK(last, snd_ch, rcvr_nr, emph, &DET[emph][rcvr_nr].src_INTR_buf[snd_ch][0], &DET[emph][rcvr_nr].bit_buf[snd_ch][0], rx_bufsize*n_INTR[snd_ch], &DET[emph][rcvr_nr].rx_data[snd_ch]);
+  }
+  else 
+	  decode_stream_FSK(last,snd_ch,rcvr_nr,emph,DET[emph][rcvr_nr].src_Loop_buf[snd_ch], &DET[emph][rcvr_nr].bit_buf[snd_ch][0], rx_bufsize, &DET[emph][rcvr_nr].rx_data[snd_ch]);
+}
+
+void  BPSK_Demodulator(int snd_ch, int rcvr_nr, int emph, int last)
+{
+	Mux3_PSK(snd_ch, rcvr_nr, emph,
+		DET[0][rcvr_nr].src_BPF_buf[snd_ch],
+		LPF_core[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1Q_buf[snd_ch],
+		LPF_tap[snd_ch], rx_bufsize);
+
+	if (n_INTR[snd_ch] > 1)
+	{
+		interpolation_PSK(snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch], rx_bufsize);
+
+		decode_stream_BPSK(last, snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].bit_buf[snd_ch],
+			rx_bufsize*n_INTR[snd_ch],
+			&DET[emph][rcvr_nr].rx_data[snd_ch]);
+
+	}
+	else
+		decode_stream_BPSK(last, snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+			DET[emph][rcvr_nr].bit_buf[snd_ch],
+			rx_bufsize,
+			&DET[emph][rcvr_nr].rx_data[snd_ch]);
+}
+
+void  QPSK_Demodulator(int snd_ch, int rcvr_nr, int emph, int last)
+{
+	Mux3_PSK(snd_ch, rcvr_nr, emph,
+		DET[0][rcvr_nr].src_BPF_buf[snd_ch],
+		LPF_core[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1Q_buf[snd_ch],
+		LPF_tap[snd_ch], rx_bufsize);
+
+	if (n_INTR[snd_ch] > 1)
+	{
+		interpolation_PSK(snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch], rx_bufsize);
+
+		decode_stream_QPSK(last, snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].bit_buf[snd_ch],
+			rx_bufsize*n_INTR[snd_ch],
+			&DET[emph][rcvr_nr].rx_data[snd_ch]);
+
+	}
+	else decode_stream_QPSK(last, snd_ch, rcvr_nr, emph, 
+		DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+		DET[emph][rcvr_nr].bit_buf[snd_ch],
+		rx_bufsize,
+		&DET[emph][rcvr_nr].rx_data[snd_ch]);
+
+}
+
+
+
+
+void PSK8_Demodulator(int snd_ch, int rcvr_nr, int emph, boolean last)
+{
+	Mux3_PSK(snd_ch, rcvr_nr, emph,
+		DET[0][rcvr_nr].src_BPF_buf[snd_ch],
+		LPF_core[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1I_buf[snd_ch],
+		DET[emph][rcvr_nr].prev_LPF1Q_buf[snd_ch],
+		LPF_tap[snd_ch], rx_bufsize);
+
+	if (n_INTR[snd_ch] > 1)
+	{
+		interpolation_PSK(snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch], rx_bufsize);
+
+		decode_stream_8PSK(last, snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_INTRI_buf[snd_ch],
+			DET[emph][rcvr_nr].src_INTRQ_buf[snd_ch],
+			DET[emph][rcvr_nr].bit_buf[snd_ch],
+			rx_bufsize*n_INTR[snd_ch],
+			&DET[emph][rcvr_nr].rx_data[snd_ch]);
+
+	}
+	else
+		decode_stream_8PSK(last, snd_ch, rcvr_nr, emph,
+			DET[emph][rcvr_nr].src_LPF1I_buf[snd_ch],
+			DET[emph][rcvr_nr].src_LPF1Q_buf[snd_ch],
+			DET[emph][rcvr_nr].bit_buf[snd_ch],
+			rx_bufsize,
+			&DET[emph][rcvr_nr].rx_data[snd_ch]);
+}
+
+
+void Demodulator(int snd_ch, int rcvr_nr, float * src_buf, int last, int xcenter)
+{
+	// called once per decoder (current one in rcvr_nr)
+
+	int i, k;
+	string rec_code;
+	UCHAR emph;
+	int found;
+	string * s_emph;
+	struct TDetector_t * pDET = &DET[0][rcvr_nr];
+
+	// looks like this filters to src_BPF_buf
+
+	FIR_filter(src_buf, rx_bufsize, BPF_tap[snd_ch], pDET->BPF_core[snd_ch], pDET->src_BPF_buf[snd_ch], pDET->prev_BPF_buf[snd_ch]);
+
+	// AFSK demodulator
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+	{
+		if (emph_all[snd_ch])
+		{
+			for (emph = 1; emph <= nr_emph; emph++)
+				FSK_Demodulator(snd_ch, rcvr_nr, emph, FALSE);
+
+			FSK_Demodulator(snd_ch, rcvr_nr, 0, last);
+		}
+		else
+			FSK_Demodulator(snd_ch, rcvr_nr, emph_db[snd_ch], last);
+	}
+
+	// BPSK demodulator
+	if (modem_mode[snd_ch] == MODE_BPSK)
+	{
+		if (emph_all[snd_ch])
+		{
+			for (emph = 1; emph <= nr_emph; emph++)
+				BPSK_Demodulator(snd_ch, rcvr_nr, emph, FALSE);
+
+			BPSK_Demodulator(snd_ch, rcvr_nr, 0, last);
+		}
+		else
+			BPSK_Demodulator(snd_ch, rcvr_nr, emph_db[snd_ch], last);
+
+	}
+
+	// QPSK demodulator
+	if (modem_mode[snd_ch] == MODE_QPSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+	{
+		if (emph_all[snd_ch])
+		{
+			for (emph = 1; emph <= nr_emph; emph++)
+				QPSK_Demodulator(snd_ch, rcvr_nr, emph, FALSE);
+
+			QPSK_Demodulator(snd_ch, rcvr_nr, 0, last);
+		}
+		else
+			QPSK_Demodulator(snd_ch, rcvr_nr, emph_db[snd_ch], last);
+	}
+
+	// QPSK demodulator
+
+	if (modem_mode[snd_ch]==MODE_8PSK)
+	{
+		if (emph_all[snd_ch])
+		{
+			for (emph = 1; emph <= nr_emph; emph++)
+				PSK8_Demodulator(snd_ch, rcvr_nr, emph, FALSE);
+
+			PSK8_Demodulator(snd_ch, rcvr_nr, 0, last);
+		}
+	  else
+			PSK8_Demodulator(snd_ch,rcvr_nr,emph_db[snd_ch],last);
+	}
+	
+	// MPSK demodulator
+
+	if (modem_mode[snd_ch] == MODE_MPSK)
+	{
+		decode_stream_MPSK(snd_ch, rcvr_nr, DET[0][rcvr_nr].src_BPF_buf[snd_ch], rx_bufsize, last);
+	}
+
+
+// I think this handles multiple decoders and passes packet on to next level
+
+// Packet manager
+
+	if (last)
+	{
+		boolean fecflag = 0;
+		char indicators[5] = "-$#F+"; // None, Single, MEM, FEC, Normal
+
+		// Work out which decoder and which emph settings worked. 
+
+		if (detect_list[snd_ch].Count > 0)		// no point if nothing decoded
+		{
+			char decoded[32] = "";
+			char indicators[5] = "-$#F+"; // None, Single, MEM, FEC, Normal
+			char s_emph[4] = "";
+			int emph[4] = { 0 };
+			char report[32] = "";
+			int il2perrors = 255;
+
+			// The is one DET for each Decoder for each Emph setting
+
+			struct TDetector_t * pDET;
+			int i = 0, j;
+			int maxemph = nr_emph;
+
+			for (i = 0; i <= nr_emph; i++)
+			{
+				for (j = 0; j <= RCVR[snd_ch] * 2; j++)
+				{
+					pDET = &DET[i][j];
+
+					if (pDET->rx_decoded > decoded[j])		// Better than other one (| is higher than F)
+						decoded[j] = pDET->rx_decoded;
+
+					if (pDET->emph_decoded > emph[i])
+						emph[i] = pDET->emph_decoded;
+
+					if (il2perrors > pDET->errors)
+						il2perrors = pDET->errors;
+
+					pDET->rx_decoded = 0;
+					pDET->emph_decoded = 0;					// Ready for next time
+					pDET->errors = 255;
+				}
+				if (emph_all[snd_ch] == 0)
+					break;
+			}
+
+			decoded[j] = 0;
+
+			for (j--; j >= 0; j--)
+				decoded[j] = indicators[decoded[j]];
+
+			if (emph_all[snd_ch])
+			{
+				for (i = 0; i <= nr_emph; i++)
+				{
+					s_emph[i] = indicators[emph[i]];
+				}
+				sprintf(report, "%s][%s", s_emph, decoded);
+			}
+
+			else
+				strcpy(report, decoded);
+
+			if (detect_list_c[snd_ch].Items[0]->Length)
+			{
+				if (il2perrors < 255 && il2perrors > 0)
+					sprintf(detect_list_c[snd_ch].Items[0]->Data, "%s-%d", detect_list_c[snd_ch].Items[0]->Data, il2perrors);
+
+				strcat(report, "][");
+				strcat(report, detect_list_c[snd_ch].Items[0]->Data);
+			}
+
+			if (detect_list[snd_ch].Count > 0)
+			{
+				for (i = 0; i < detect_list[snd_ch].Count; i++)
+				{
+					found = 0;
+
+					//					if (detect_list_l[snd_ch].Count > 0)
+					//						if (my_indexof(&detect_list_l[snd_ch], detect_list[snd_ch].Items[i]) > -1)
+					//							found = 1;
+
+					if (found == 0)
+					{
+						if (modem_mode[snd_ch] == MODE_MPSK)
+						{
+							//					analiz_frame(snd_ch, detect_list[snd_ch].Items[i]->Data, [snd_ch].Items[i]->Data + ' dF: ' + FloatToStrF(DET[0, 0].AFC_dF[snd_ch], ffFixed, 0, 1));
+						}
+						else
+						{
+							analiz_frame(snd_ch, detect_list[snd_ch].Items[i], report, fecflag);
+						}
+					}
+				}
+
+				// Cancel FX25 decode
+
+				if (fx25_mode[snd_ch] != FX25_MODE_NONE)
+				{
+					int e;
+
+					for (i = 0; i < 16; i++)
+						for (e = 0; e <= nr_emph; e++)
+							DET[e][i].fx25[snd_ch].status = FX25_TAG;
+				}
+			}
+
+			//			Assign(&detect_list_l[snd_ch], &detect_list[snd_ch]);	// Duplicate detect_list to detect_list_l
+
+			Clear(&detect_list[snd_ch]);
+			Clear(&detect_list_c[snd_ch]);
+		}
+		chk_dcd1(snd_ch, rx_bufsize);
+	}
+}
+
+string * memory_ARQ(TStringList * buf, string * data)
+{
+	unsigned char crc[32];
+	string * s;
+	string * frame;
+	word k, len, i;
+
+	Byte zeros, ones;
+	TStringList need_frames;
+
+	s = data;
+
+	CreateStringList(&need_frames);
+	len = data->Length;
+
+	memcpy(crc, &data->Data[data->Length - 18], 18);
+
+	if (buf->Count > 0)
+	{
+		for (i = 0; i < buf->Count; i++)
+		{
+			if (buf->Items[i]->Length == len)
+				if (memcmp(&buf->Items[i]->Data[len - 18], crc, 18) == 0)
+					Add(&need_frames, buf->Items[i]);
+		}
+	}
+
+	if (need_frames.Count > 2)
+	{
+		for (i = 0; i < len - 18; i++)
+		{
+			zeros = 0;
+			ones = 0;
+
+			for (k = 0; k < need_frames.Count; k++)
+			{
+				frame = need_frames.Items[k];
+				if (frame->Data[i] == '1') ones++;  else zeros++;
+			}
+			if (ones > zeros) s->Data[i] = '1'; else s->Data[i] = '0';
+		}
+	}
+
+//	Clear(&need_frames);
+	return s;
+}
+
+	
diff --git a/ax25_fec.c b/ax25_fec.c
new file mode 100644
index 0000000..e76310f
--- /dev/null
+++ b/ax25_fec.c
@@ -0,0 +1,417 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+//void fx25_encode_rs(byte * data, byte * parity, int pad, int rs_size);
+
+//int fx25_decode_rs(byte * data, int * eras_pos, int no_eras, int pad, int rs_size);
+
+#define  FX25_FCR 1
+#define  FX25_PRIM 1
+#define  FX25_IPRIM 1
+#define  FX25_MM 8
+#define  FX25_NN 255
+#define  FX25_A0 FX25_NN
+
+Byte FX25_ALPHA_TO[256] = {
+
+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26,
+ 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0,
+ 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23,
+ 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1,
+ 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0,
+ 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2,
+ 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce,
+ 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc,
+ 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54,
+ 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73,
+ 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff,
+ 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41,
+ 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6,
+ 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09,
+ 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16,
+ 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00
+};
+
+Byte FX25_INDEX_OF[256] = {
+
+255,  0,  1, 25,  2, 50, 26,198,  3,223, 51,238, 27,104,199, 75,
+  4,100,224, 14, 52,141,239,129, 28,193,105,248,200,  8, 76,113,
+  5,138,101, 47,225, 36, 15, 33, 53,147,142,218,240, 18,130, 69,
+ 29,181,194,125,106, 39,249,185,201,154,  9,120, 77,228,114,166,
+  6,191,139, 98,102,221, 48,253,226,152, 37,179, 16,145, 34,136,
+ 54,208,148,206,143,150,219,189,241,210, 19, 92,131, 56, 70, 64,
+ 30, 66,182,163,195, 72,126,110,107, 58, 40, 84,250,133,186, 61,
+202, 94,155,159, 10, 21,121, 43, 78,212,229,172,115,243,167, 87,
+  7,112,192,247,140,128, 99, 13,103, 74,222,237, 49,197,254, 24,
+227,165,153,119, 38,184,180,124, 17, 68,146,217, 35, 32,137, 46,
+ 55, 63,209, 91,149,188,207,205,144,135,151,178,220,252,190, 97,
+242, 86,211,171, 20, 42, 93,158,132, 60, 57, 83, 71,109, 65,162,
+ 31, 45, 67,216,183,123,164,118,196, 23, 73,236,127, 12,111,246,
+108,161, 59, 82, 41,157, 85,170,251, 96,134,177,187,204, 62, 90,
+203, 89, 95,176,156,169,160, 81, 11,245, 22,235,122,117, 44,215,
+ 79,174,213,233,230,231,173,232,116,214,244,234,168, 80, 88,175
+};
+
+
+Byte FX25_CCSDS_poly_8[9] =
+{ 29, 188, 142, 221, 118, 206, 52, 168, 0 };
+
+Byte FX25_CCSDS_poly_16[17] =
+	{136,240,208,195,181,158,201,100, 11, 83,167,107,113,110,106,121, 0 };
+
+
+Byte FX25_CCSDS_poly_32[33] = {
+ 18,251,215, 28, 80,107,248, 53, 84,194, 91, 59,176, 99,203,137,
+ 43,104,137,  0, 44,149,148,218, 75, 11,173,254,194,109,  8, 11,
+0 };
+
+Byte FX25_CCSDS_poly_64[65] = {
+ 40, 21,218, 23, 48,237, 69,  6, 87, 42, 29,193,160,150,113, 32,
+ 35,172,241,240,184, 90,188,225, 87,130,254, 41,245,253,184,241,
+188,176, 54, 58,240,226,119,185, 77,150, 48,140,169,160, 96,217,
+ 15,202,218,190,135,103,129, 77, 57,166,164, 12, 13,178, 53, 46,
+0 };
+
+
+
+integer  FX25_NROOTS ;
+Byte FX25_GENPOLY[256];
+
+Byte  MODNN(int x)
+{
+	return x % 255;
+}
+
+
+void encode_rs(Byte * data, Byte * parity, int pad)
+{
+	int  i, j;
+	Byte feedback;
+
+	memset(parity, 0, FX25_NROOTS);
+
+	i = 0;
+
+	while (i < FX25_NN - FX25_NROOTS - pad)
+	{
+		feedback = FX25_INDEX_OF[data[i] ^ parity[0]];
+	
+		if (feedback != FX25_A0)
+		{
+			j = 1;
+			while (j < FX25_NROOTS)
+			{
+				parity[j] = parity[j] ^ FX25_ALPHA_TO[MODNN(feedback + FX25_GENPOLY[FX25_NROOTS - j])];
+				j++;
+			}
+		}
+		move(&parity[1], &parity[0], FX25_NROOTS - 1);
+	
+		if (feedback != FX25_A0)
+			parity[FX25_NROOTS - 1] = FX25_ALPHA_TO[MODNN(feedback + FX25_GENPOLY[0])];
+		else
+			parity[FX25_NROOTS - 1] = 0;
+		i++;
+	}
+}
+
+
+int FX25_MIN(int a, int b)
+{
+	if (a > b)
+		return b;
+	else
+		return a;
+}
+
+
+int decode_rs(Byte * data, int * eras_pos, int no_eras, int pad)
+{
+	int  deg_lambda, el, deg_omega;
+	int   i, j, r, k;
+	Byte  q, tmp, num1, num2, den, discr_r;
+	Byte s[256];
+	Byte lambda[256];
+	Byte b[256];
+	Byte t[256];
+	Byte omega[256];
+	Byte root[256];
+	Byte reg[256];
+	Byte loc[256];
+	int syn_error, count = 0;
+
+	if (pad < 0 || pad>238)
+		return -1;
+
+	i = 0;
+	while (i < FX25_NROOTS)
+	{
+		s[i] = data[0];
+		i++;
+
+	}
+	j = 1;
+	while (j < FX25_NN - pad)
+	{
+		i = 0;
+		while (i < FX25_NROOTS)
+		{
+			if (s[i] == 0)
+				s[i] = data[j];
+			else
+				s[i] = data[j] ^ FX25_ALPHA_TO[MODNN(FX25_INDEX_OF[s[i]] + (FX25_FCR + i)*FX25_PRIM)];
+			i++;
+		}
+		j++;
+
+	}
+	syn_error = 0;
+	i = 0;
+	while (i < FX25_NROOTS)
+	{
+		syn_error = syn_error | s[i];
+		s[i] = FX25_INDEX_OF[s[i]];
+		i++;
+	}
+	if (syn_error == 0)
+		return count;
+
+	memset(&lambda[1], 0, FX25_NROOTS);
+	lambda[0] = 1;
+	i = 0;
+	while (i < FX25_NROOTS + 1)
+	{
+		b[i] = FX25_INDEX_OF[lambda[i]];
+		i++;
+	}
+
+	r = no_eras;
+	el = no_eras;
+	r++;
+	while (r <= FX25_NROOTS)
+	{
+		discr_r = 0;
+		i = 0;
+		while (i < r)
+		{
+			if (lambda[i] != 0 && s[r - i - 1] != FX25_A0)
+				discr_r = discr_r ^ FX25_ALPHA_TO[MODNN(FX25_INDEX_OF[lambda[i]] + s[r - i - 1])];
+			i++;
+		}
+		discr_r = FX25_INDEX_OF[discr_r];
+		if (discr_r == FX25_A0)
+		{
+			move(&b[0], &b[1], FX25_NROOTS);
+			b[0] = FX25_A0;
+		}
+		else
+		{
+			t[0] = lambda[0];
+			i = 0;
+			while (i < FX25_NROOTS)
+			{
+				if (b[i] != FX25_A0)
+					t[i + 1] = lambda[i + 1] ^ FX25_ALPHA_TO[MODNN(discr_r + b[i])];
+				else
+					t[i + 1] = lambda[i + 1];
+				i++;
+			}
+
+			if (2 * el <= r + no_eras - 1)
+			{
+				el = r + no_eras - el;
+				i = 0;
+				while (i <= FX25_NROOTS)
+				{
+					if (lambda[i] == 0)
+						b[i] = FX25_A0;
+					else
+						b[i] = MODNN(FX25_INDEX_OF[lambda[i]] - discr_r + FX25_NN);
+					i++;
+				}
+			}
+			else
+			{
+				move(&b[0], &b[1], FX25_NROOTS);
+				b[0] = FX25_A0;
+			}
+			move(t, lambda, FX25_NROOTS + 1);
+		}
+		r++;
+	}
+	deg_lambda = 0;
+	i = 0;
+	while (i < FX25_NROOTS + 1)
+	{
+		lambda[i] = FX25_INDEX_OF[lambda[i]];
+		if (lambda[i] != FX25_A0)
+			deg_lambda = i;
+		i++;
+	}
+	move(&lambda[1], &reg[1], FX25_NROOTS);
+	count = 0;
+	i = 1;
+	k = FX25_IPRIM - 1;
+	while (i <= FX25_NN)
+	{
+		q = 1;
+		j = deg_lambda;
+		while (j > 0)
+		{
+			if (reg[j] != FX25_A0)
+			{
+				reg[j] = MODNN(reg[j] + j);
+				q = q ^ FX25_ALPHA_TO[reg[j]];
+			}
+			j--;
+		}
+		if (q == 0)
+		{
+			root[count] = i;
+			loc[count] = k;
+			count++;
+			if (count == deg_lambda)
+				break;
+		}
+		i++;
+		k = MODNN(k + FX25_IPRIM);
+	}
+	if (deg_lambda != count)
+		return -1;
+
+	deg_omega = deg_lambda - 1;
+	i = 0;
+	while (i <= deg_omega)
+	{
+		tmp = 0;
+		j = i;
+		while (j >= 0)
+		{
+			if (s[i - j] != FX25_A0 && lambda[j] != FX25_A0)
+				tmp = tmp ^ FX25_ALPHA_TO[MODNN(s[i - j] + lambda[j])];
+			j--;
+		}
+		omega[i] = FX25_INDEX_OF[tmp];
+		i++;
+	}
+	j = count - 1;
+	while (j >= 0)
+	{
+		num1 = 0;
+		i = deg_omega;
+		while (i >= 0)
+		{
+			if (omega[i] != FX25_A0)
+				num1 = num1 ^ FX25_ALPHA_TO[MODNN(omega[i] + i * root[j])];
+			i--;
+		}
+
+		num2 = FX25_ALPHA_TO[MODNN(root[j] * (FX25_FCR - 1) + FX25_NN)];
+		den = 0;
+		i = FX25_MIN(deg_lambda, FX25_NROOTS - 1) & 0xFE;
+		while (i >= 0)
+		{
+			if (lambda[i + 1] != FX25_A0)
+				den = den ^ FX25_ALPHA_TO[MODNN(lambda[i + 1] + i * root[j])];
+			i = i - 2;
+		}
+		if (num1 != 0 && loc[j] >= pad)
+			data[loc[j] - pad] = data[loc[j] - pad] ^ FX25_ALPHA_TO[MODNN(FX25_INDEX_OF[num1] + FX25_INDEX_OF[num2] + FX25_NN - FX25_INDEX_OF[den])];
+		j--;
+	}
+
+	return count;
+}
+
+
+void fx25_encode_rs(Byte * data, Byte *parity, int pad, int rs_size)
+{
+	switch (rs_size)
+	{
+	case 8:
+		move(&FX25_CCSDS_poly_8[0], &FX25_GENPOLY[0], 9);
+		FX25_NROOTS = rs_size;
+		encode_rs(data, parity, 0);
+		return;
+
+	case 16:
+		move(&FX25_CCSDS_poly_16[0], &FX25_GENPOLY[0], 17);
+		FX25_NROOTS = rs_size;
+		encode_rs(data, parity, 0);
+		return;
+
+
+
+	case 32:
+
+		move(&FX25_CCSDS_poly_32[0], &FX25_GENPOLY[0], 33);
+		FX25_NROOTS = rs_size;
+		encode_rs(data, parity, 0);
+		return;
+
+	case 64: 
+		
+		move(&FX25_CCSDS_poly_64[0], &FX25_GENPOLY[0], 65);
+		FX25_NROOTS = rs_size;
+		encode_rs(data, parity, 0);
+		return;
+
+	}
+}
+
+int fx25_decode_rs(Byte * data, int * eras_pos, int no_eras, int pad, int rs_size)
+{
+	switch (rs_size)
+	{
+	case 8:
+
+		move(&FX25_CCSDS_poly_8[0], &FX25_GENPOLY[0], 9);
+		FX25_NROOTS = rs_size;
+		return decode_rs(data, eras_pos, no_eras, pad);
+
+	case 16:
+		
+		move(&FX25_CCSDS_poly_16[0], &FX25_GENPOLY[0], 17);
+		FX25_NROOTS = rs_size;
+		return decode_rs(data, eras_pos, no_eras, pad);
+		
+	case 32:
+		
+		move(&FX25_CCSDS_poly_32[0], &FX25_GENPOLY[0], 33);
+		FX25_NROOTS = rs_size;
+		return decode_rs(data, eras_pos, no_eras, pad);
+
+	case 64:
+		
+		move(&FX25_CCSDS_poly_64[0], &FX25_GENPOLY[0], 65); 
+		FX25_NROOTS = rs_size;
+		return decode_rs(data, eras_pos, no_eras, pad);
+
+	default:
+
+		return -1;
+	}
+}
+
+
diff --git a/ax25_l2.c b/ax25_l2.c
new file mode 100644
index 0000000..30d3659
--- /dev/null
+++ b/ax25_l2.c
@@ -0,0 +1,1624 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+extern int RSID_SABM[4];
+extern int RSID_UI[4];
+extern int RSID_SetModem[4];
+extern int needRSID[4];
+extern int needRSID[4];
+
+
+/*
+
+unit ax25_l2;
+
+interface
+
+uses sysutils,classes;
+
+  procedure frame_optimize(snd_ch,port: byte; var buf: TStringList);
+  procedure analiz_frame(snd_ch: byte; frame,code: string);
+  procedure send_data_buf(snd_ch,port: byte; path: string; nr: byte);
+  procedure add_pkt_buf(snd_ch,port: byte; data: string);
+  procedure set_link(snd_ch,port: byte; path: string);
+  procedure set_unlink(socket: integer; snd_ch,port: byte; path: string);
+  procedure set_chk_link(snd_ch,port: byte; path: string);
+  procedure UpdateActiveConnects(snd_ch: byte);
+  procedure timer_event;
+  procedure rst_values(snd_ch,port: byte);
+  procedure rst_timer(snd_ch,port: byte);
+  function get_free_port(snd_ch: byte; var port: byte): boolean;
+  function get_user_port_by_calls(snd_ch: byte; var port: byte; CallFrom,CallTo: string): boolean;
+
+implementation
+
+uses ax25,ax25_agw,sm_main,kiss_mode;
+*/
+
+string * make_frame(string * data, Byte * path, Byte  pid, Byte nr, Byte ns, Byte f_type, Byte f_id, boolean rpt, boolean pf, boolean cr);
+void rst_t3(TAX25Port * AX25Sess);
+
+TAX25Port * get_user_port(int snd_ch, Byte * path);
+
+void  inc_frack(TAX25Port * AX25Sess)
+{
+	AX25Sess->clk_frack++;
+}
+
+
+void  rst_frack(TAX25Port * AX25Sess)
+{
+	AX25Sess->clk_frack = 0;
+}
+
+void inc_t1(TAX25Port * AX25Sess)
+{
+	AX25Sess->t1++;
+}
+
+void rst_t1(TAX25Port * AX25Sess)
+{
+	AX25Sess->t1 = 0;
+}
+
+void inc_t3(TAX25Port * AX25Sess)
+{
+	AX25Sess->t3++;
+}
+
+void rst_t3(TAX25Port * AX25Sess)
+{
+	AX25Sess->t3 = 0;
+}
+
+
+void  rst_values(TAX25Port * AX25Sess)
+{
+	AX25Sess->IPOLL_cnt = 0;
+	AX25Sess->hi_vs = 0;
+	AX25Sess->vs = 0;
+	AX25Sess->vr = 0;
+	Clear(&AX25Sess->I_frame_buf);
+	Clear(&AX25Sess->in_data_buf);
+	Clear(&AX25Sess->frm_collector);
+
+	ax25_info_init(AX25Sess);
+	clr_frm_win(AX25Sess);
+}
+
+
+void rst_timer(TAX25Port * AX25Sess)
+{
+	rst_frack(AX25Sess);
+	rst_t1(AX25Sess);
+	rst_t3(AX25Sess);
+}
+
+void upd_i_lo(TAX25Port * AX25Sess, int n) //Update the counter of the first frame in the I-frame buffer
+{
+	AX25Sess->i_lo = n;
+}
+
+void upd_i_hi(TAX25Port * AX25Sess, int n) //Update last frame counter in I-frame buffer
+{
+	AX25Sess->i_hi = n;
+}
+
+void upd_vs(TAX25Port * AX25Sess, int n) //Update the counter of the next frame to transmit
+{
+	AX25Sess->vs = ++n & 7;
+}
+
+void upd_vr(TAX25Port * AX25Sess, int n) //Refresh the counter of the next frame at the reception
+{
+	AX25Sess->vr = ++n & 7;
+}
+
+
+void Frame_Optimize(TAX25Port * AX25Sess, TStringList * buf)
+{
+	// I think this removes redundant frames from the TX Queue (eg repeated RR frames)
+
+	string * frame;
+	Byte path[80];
+	string * data = newString();
+
+	Byte  pid, nr, ns, f_type, f_id, rpt, cr, pf;
+	boolean  curr_req, optimize;
+	int i, k;
+	char need_frm[8] = "";
+	int index = 0;
+	boolean  PollRR;
+	boolean PollREJ;
+
+	PollRR = FALSE;
+	PollREJ = FALSE;
+	curr_req = FALSE;
+
+	// Check Poll RR and REJ frame
+
+	i = 0;
+
+	while (i < buf->Count && !PollREJ)
+	{
+		frame = Strings(buf, i);
+		// TX frame has kiss control on front
+
+		decode_frame(frame->Data + 1, frame->Length - 1, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+		if (cr == SET_R && pf == SET_P)
+		{
+			if (f_id == S_REJ)
+				PollREJ = TRUE;
+			else if (f_id == S_RR && nr == AX25Sess->vr)
+				PollRR = TRUE;
+		}
+		i++;
+	}
+
+	// Performance of the REJ Cards: Optional Rej Cards
+
+	i = 0;
+
+	while (i < buf->Count)
+	{
+		optimize = TRUE;
+		frame = Strings(buf, i);
+		decode_frame(frame->Data + 1, frame->Length - 1, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+		if (f_id == S_REJ && cr == SET_R)
+		{
+			if ((pf == SET_F && PollREJ) || nr != AX25Sess->vr)
+			{
+				Debugprintf("Optimizer dropping REJ nr %d vr %d pf %d PollREJ %d", nr, AX25Sess->vr, pf, PollREJ);
+				Delete(buf, i);
+				optimize = FALSE;
+			}
+			if (nr == AX25Sess->vr)
+				curr_req = TRUE;
+		}
+		if (optimize)
+			i++;
+	}
+
+	// Performance Options
+
+	i = 0;
+
+	while (i <buf->Count)
+	{
+		need_frm[0] = 0;
+		index = 0;
+		k = AX25Sess->i_lo;
+
+		while (k != AX25Sess->vs)
+		{
+			need_frm[index++] = k + 'A';
+			k = (++k) & 7;
+		}
+
+		optimize = TRUE;
+
+		frame = Strings(buf, i);
+
+		decode_frame(frame->Data +1 , frame->Length - 1, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+		if (f_id == S_RR)
+		{
+			// RR Cards Methods: Optional RR, F Cards
+			if (cr == SET_R)
+			{
+				if (nr != AX25Sess->vr || ((pf == SET_F) && PollRR) || curr_req)
+				{
+					Debugprintf("Optimizer dropping RR nr %d vr %d pf %d PollRR %d", nr, AX25Sess->vr, pf, PollRR);
+
+					Delete(buf, i);
+					optimize = FALSE;
+				}
+			}
+
+
+			// RR Cards Methods : Optional RR, P Cards
+			if (cr == SET_C)
+			{
+				if (AX25Sess->status == STAT_LINK || AX25Sess->status == STAT_WAIT_ANS)
+				{
+					Debugprintf("Optimizer dropping RR nr %d vr %d pf %d PollRR %d", nr, AX25Sess->vr, pf, PollRR);
+					Delete(buf, i);
+					optimize = FALSE;
+				}
+			}
+		}
+		// 	  I - Cards Methods : Options for I - Cards
+		else if (f_id == I_I)
+		{
+			if (strchr(need_frm, ns + 'A') == 0)
+			{
+				Delete(buf, i);
+				optimize = FALSE;
+			}
+			else
+			{
+				if (nr != AX25Sess->vr)
+					buf->Items[i] = make_frame(data, path, pid, AX25Sess->vr, ns, f_type, f_id, rpt, pf, cr);
+			}
+		}
+
+		// SABM Applications
+		
+		if (f_id == U_SABM)
+		{
+			if (AX25Sess->status != STAT_TRY_LINK)
+			{
+				Delete(buf, i);
+				optimize = FALSE;
+			}
+		}
+				
+		if (optimize)
+			i++;
+	}
+}
+
+void  add_pkt_buf(TAX25Port * AX25Sess, string * data)
+{
+	boolean found = 0;
+	string * frm;
+	int i = 0;
+
+	while (i < AX25Sess->frame_buf.Count && !found)
+	{
+		found = compareStrings(Strings(&AX25Sess->frame_buf, i++), data);
+	}
+	
+	if (found)
+		freeString(data);
+	else
+		Add(&AX25Sess->frame_buf, data);
+}
+
+void add_I_FRM(TAX25Port * AX25Sess, Byte * path)
+{
+	string * data;
+	int  i;
+
+	upd_i_lo(AX25Sess, AX25Sess->vs);
+
+	while (AX25Sess->in_data_buf.Count > 0 && AX25Sess->I_frame_buf.Count != maxframe[AX25Sess->snd_ch])
+	{
+		data = duplicateString(Strings(&AX25Sess->in_data_buf, 0));
+		Delete(&AX25Sess->in_data_buf, 0);
+		Add(&AX25Sess->I_frame_buf, data);
+	}
+	if (AX25Sess->I_frame_buf.Count > 0)
+	{
+		for (i = 0; i < AX25Sess->I_frame_buf.Count; i++)
+		{
+			upd_i_hi(AX25Sess, AX25Sess->vs);
+			upd_vs(AX25Sess, AX25Sess->vs);
+			AX25Sess->hi_vs = AX25Sess->vs; // Last transmitted frame
+		}
+	}
+}
+
+
+void  delete_I_FRM(TAX25Port * AX25Sess, int  nr)
+{
+	int i;
+
+	i = AX25Sess->i_lo;
+
+	while (i != nr)
+	{
+		if (AX25Sess->I_frame_buf.Count > 0)
+		{
+			AX25Sess->info.stat_s_pkt++;
+			AX25Sess->info.stat_s_byte += Strings(&AX25Sess->I_frame_buf, 0)->Length;
+			Delete(&AX25Sess->I_frame_buf, 0);
+		}
+
+		i++;
+		i &= 7;
+	}
+	upd_i_lo(AX25Sess, nr);
+}
+
+void delete_I_FRM_port(TAX25Port * AX25Sess)
+{
+	string * frame;
+	string path = { 0 }; 
+	string data= { 0 };
+
+	Byte pid, nr, ns, f_type, f_id, rpt, cr, pf;
+	boolean  optimize;
+	int  i = 0;
+
+	while (i < AX25Sess->frame_buf.Count)
+	{
+		optimize = TRUE;
+		frame = Strings(&AX25Sess->frame_buf, i);
+
+		decode_frame(frame->Data, frame->Length, &path, &data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+		if (f_id == I_I)
+		{
+			Delete(&AX25Sess->frame_buf, i);
+			optimize = FALSE;
+		}
+		if (optimize)
+			i++;
+	}
+}
+ 
+void send_data_buf(TAX25Port * AX25Sess, int  nr)
+{
+	int i;
+	boolean new_frames;
+	boolean PF_bit;
+
+	if (AX25Sess->status != STAT_LINK)
+		return;
+
+	AX25Sess->IPOLL_cnt = 0;
+	AX25Sess->vs = nr;
+	delete_I_FRM(AX25Sess, nr);		// ?? free acked frames
+//	delete_I_FRM_port(AX25Sess);
+
+	if (TXFrmMode[AX25Sess->snd_ch] == 1)
+	{
+		new_frames = FALSE;
+	
+		if (AX25Sess->I_frame_buf.Count < 2)
+		{
+			add_I_FRM(AX25Sess, AX25Sess->Path);
+			AX25Sess->status = STAT_LINK;
+			new_frames = TRUE;
+		}
+
+		if (AX25Sess->I_frame_buf.Count > 0)
+		{
+			if (new_frames)
+			{
+				for (i = 0; i < AX25Sess->I_frame_buf.Count; i++)
+				{
+					if (i == AX25Sess->I_frame_buf.Count - 1)
+						PF_bit = SET_P;
+					else
+						PF_bit = SET_F;
+
+					add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, i), AX25Sess->Path, AX25Sess->PID, AX25Sess->vr, ((AX25Sess->i_lo + i) & 7), I_FRM, I_I, FALSE, PF_bit, SET_C));
+				}
+			}
+			if (!new_frames)
+			{
+				add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, 0), AX25Sess->Path, AX25Sess->PID, AX25Sess->vr, AX25Sess->i_lo, I_FRM, I_I, FALSE, SET_P, SET_C)); //SET_P
+				upd_vs(AX25Sess, AX25Sess->vs);
+			}
+			AX25Sess->status = STAT_WAIT_ANS;
+			rst_timer(AX25Sess);
+		}
+	}
+
+	if (TXFrmMode[AX25Sess->snd_ch] == 0)
+	{
+		add_I_FRM(AX25Sess, AX25Sess->Path);
+		AX25Sess->status = STAT_LINK;
+		
+		if (AX25Sess->I_frame_buf.Count > 0)
+		{
+			for (i = 0; i < AX25Sess->I_frame_buf.Count; i++)
+			{
+				if (i == AX25Sess->I_frame_buf.Count - 1)
+					PF_bit = SET_P;
+				else
+					PF_bit = SET_F;
+				add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, i), AX25Sess->Path, AX25Sess->PID, AX25Sess->vr, ((AX25Sess->i_lo + i) & 7), I_FRM, I_I, FALSE, PF_bit, SET_C));
+			}
+			AX25Sess->status = STAT_WAIT_ANS;
+			rst_timer(AX25Sess);
+		}
+	}
+}
+
+
+void send_data_buf_srej(TAX25Port * AX25Sess, int  nr)
+{
+	// Similar to send_data_buf but only sends the requested I frame with P set
+
+	int i = 0;
+	boolean new_frames;
+	boolean PF_bit;
+
+	if (AX25Sess->status != STAT_LINK)
+		return;
+
+	AX25Sess->IPOLL_cnt = 0;
+	AX25Sess->vs = nr;
+	delete_I_FRM(AX25Sess, nr);		// ?? free acked frames
+
+	new_frames = FALSE;
+
+	add_I_FRM(AX25Sess, AX25Sess->Path);
+	AX25Sess->status = STAT_LINK;
+	new_frames = TRUE;
+
+	if (AX25Sess->I_frame_buf.Count > 0)
+	{
+		if (new_frames)
+		{
+			PF_bit = SET_P;
+
+			add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, i), AX25Sess->Path, AX25Sess->PID, AX25Sess->vr, ((AX25Sess->i_lo + i) & 7), I_FRM, I_I, FALSE, PF_bit, SET_C));
+		}
+		else
+		{
+
+			add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, 0), AX25Sess->Path, AX25Sess->PID, AX25Sess->vr, AX25Sess->i_lo, I_FRM, I_I, FALSE, SET_P, SET_C)); //SET_P
+			upd_vs(AX25Sess, AX25Sess->vs);
+		}
+	}
+	AX25Sess->status = STAT_WAIT_ANS;
+	rst_timer(AX25Sess);
+}
+
+void  write_frame_collector(TAX25Port * AX25Sess, int ns, string * data)
+{
+	Byte  i;
+	char  frm_ns;
+	string  * frm;
+	boolean  found ;
+	boolean need_frm;
+
+	if (max_frame_collector[AX25Sess->snd_ch] < 1)
+		return;
+
+	need_frm = FALSE;
+	i = 1;
+	do
+	{
+		if (ns == (AX25Sess->vr + i) & 7)
+			need_frm = TRUE;
+
+		i++;
+
+	} while (i <= max_frame_collector[AX25Sess->snd_ch] && !need_frm);
+
+	if (need_frm)
+	{
+		frm_ns = ns;
+		found = FALSE;
+		i = 0;
+
+		if (AX25Sess->frm_collector.Count > 0)
+		{
+			do
+			{
+				frm = Strings(&AX25Sess->frm_collector, i);
+
+				if (frm_ns == frm->Data[0])
+					found = TRUE;
+
+				i++;
+			}
+			while (!found &&  i != AX25Sess->frm_collector.Count);
+
+		}
+
+		if (!found)
+		{
+			string * frm = newString();
+
+			stringAdd(frm, (char *)&frm_ns, 1);
+			stringAdd(frm, data->Data, data->Length);
+			Add(&AX25Sess->frm_collector, frm);
+		}
+	}
+}
+
+string * read_frame_collector(TAX25Port * AX25Sess, boolean fecflag)
+{
+	// Look for required frame no in saved frames
+
+	string * frm;
+	string * data = newString();
+
+	int i = 0;
+	boolean found = FALSE;
+	Byte frm_ns;
+
+	while (i < AX25Sess->frm_collector.Count)
+	{
+		frm = duplicateString(Strings(&AX25Sess->frm_collector, i));
+
+		frm_ns = frm->Data[0];
+
+		if (frm_ns == AX25Sess->vr)
+		{
+			Delete(&AX25Sess->frm_collector, i);
+
+			upd_vr(AX25Sess, AX25Sess->vr);
+
+			mydelete(frm, 0, 1);				// Remove vr from front
+
+			stringAdd(data, frm->Data, frm->Length);
+
+			found = TRUE;
+
+			AX25Sess->info.stat_r_pkt++;
+			AX25Sess->info.stat_r_fc++;
+		
+			if (fecflag)
+				AX25Sess->info.stat_fec_count++;
+
+			AX25Sess->info.stat_r_byte += frm->Length;
+			AX25Sess->frm_win[frm_ns].Length = frm->Length; //Save the frame to the window buffer
+			AX25Sess->frm_win[frm_ns].Data = frm->Data; //Save the frame to the window buffer
+		}
+
+		i++;
+	}
+	return data;
+}
+
+
+/////////////////////////// SET-FRAMES //////////////////////////////////
+
+void set_chk_link(TAX25Port * AX25Sess, Byte * path)
+{
+	boolean  b_IPOLL;
+	int   len;
+
+	AX25Sess->status = STAT_CHK_LINK;
+
+	//  if AX25Sess->digi<>'' then path:=path+','+reverse_digi(AX25Sess->digi);
+
+	b_IPOLL = FALSE;
+
+	if (AX25Sess->I_frame_buf.Count > 0 && AX25Sess->IPOLL_cnt < 2)
+	{
+		len = Strings(&AX25Sess->I_frame_buf, 0)->Length;
+
+		if (len > 0 && len <= IPOLL[AX25Sess->snd_ch])
+		{
+
+			b_IPOLL = TRUE;
+			AX25Sess->IPOLL_cnt++;
+		}
+	}
+	if (b_IPOLL)
+		add_pkt_buf(AX25Sess, make_frame(Strings(&AX25Sess->I_frame_buf, 0), path, AX25Sess->PID, AX25Sess->vr, AX25Sess->i_lo, I_FRM, I_I, FALSE, SET_P, SET_C));
+	else
+		add_pkt_buf(AX25Sess, make_frame(NULL, path, 0xF0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, SET_P, SET_C));
+
+	inc_frack(AX25Sess);
+}
+
+
+
+// This seems to start a connection
+
+void set_link(TAX25Port * AX25Sess, UCHAR * axpath)
+{
+	if (AX25Sess->status != STAT_LINK)
+	{
+		string nullstring;
+		nullstring.Length = 0;
+
+		rst_values(AX25Sess);
+
+		AX25Sess->status = STAT_TRY_LINK;
+
+		//		if (AX25Sess->digi[0] != 0)
+		//			path: = path + ',' + reverse_digi(AX25Sess->digi);
+
+		add_pkt_buf(AX25Sess, make_frame(&nullstring, axpath, 0, 0, 0, U_FRM, U_SABM, SET_NO_RPT, SET_P, SET_C));
+
+		inc_frack(AX25Sess);
+	}
+}
+
+#define    MODE_OUR 0
+
+void set_try_unlink(TAX25Port * AX25Sess, Byte * path)
+{
+	string nullstring;
+	nullstring.Length = 0;
+	
+	AX25Sess->status = STAT_TRY_UNLINK;
+	add_pkt_buf(AX25Sess, make_frame(&nullstring, path, 0, 0, 0, U_FRM, U_DISC, SET_NO_RPT, SET_P, SET_C));
+	inc_frack(AX25Sess);
+}
+
+
+void set_unlink(TAX25Port * AX25Sess, Byte * path)
+{
+	if (AX25Sess->status == STAT_TRY_UNLINK 
+		|| AX25Sess->status == STAT_TRY_LINK
+		|| AX25Sess->status == STAT_NO_LINK)
+	{
+		string nullstring;
+		nullstring.Length = 0;
+
+		//		if (AX25Sess->digi[0] != 0)
+		//			path: = path + ',' + reverse_digi(AX25Sess->digi);
+
+		AGW_AX25_disc(AX25Sess, MODE_OUR);
+
+		if (AX25Sess->status != STAT_TRY_UNLINK)
+			add_pkt_buf(AX25Sess, make_frame(&nullstring, path, 0, 0, 0, U_FRM, U_DISC, SET_NO_RPT, SET_P, SET_C));
+
+		AX25Sess->info.stat_end_ses = time(NULL);
+
+		write_ax25_info(AX25Sess);
+		rst_values(AX25Sess);
+
+		memset(AX25Sess->corrcall, 0, 10);
+		memset(AX25Sess->mycall, 0, 10);
+		AX25Sess->digi[0] = 0;
+		AX25Sess->status = STAT_NO_LINK;
+
+	}
+	else
+		set_try_unlink(AX25Sess, AX25Sess->Path);
+}
+
+void set_FRMR(int snd_ch, Byte * path, unsigned char frameType)
+{
+	//We may not have a session when sending FRMR so reverse path and send
+
+	Byte revpath[80];
+	string * Data = newString();
+
+	Data->Data[0] = frameType;
+	Data->Data[1] = 0;
+	Data->Data[2] = 1;			// Invalid CTL Byte
+	Data->Length = 3;
+
+	reverse_addr(path, revpath, strlen(path));
+
+	add_pkt_buf(&AX25Port[snd_ch][0], make_frame(Data, revpath, 0, 0, 0, U_FRM, U_FRMR, FALSE, SET_P, SET_R));
+
+	freeString(Data);
+}
+
+void set_DM(int snd_ch, Byte * path)
+{
+	//We may not have a session when sending DM so reverse path and send
+	
+	Byte revpath[80];
+
+	reverse_addr(path, revpath, strlen(path));
+
+	add_pkt_buf(&AX25Port[snd_ch][0], make_frame(NULL, revpath, 0, 0, 0, U_FRM,U_DM,FALSE,SET_P,SET_R));
+}
+
+/////////////////////////// S-FRAMES ////////////////////////////////////
+
+
+void on_RR(TAX25Port * AX25Sess, Byte * path, int  nr, int  pf, int cr)
+{
+	char need_frame[16] = "";
+	int index = 0;
+
+	int i;
+
+	if (AX25Sess->status == STAT_TRY_LINK)
+		return;
+	
+	if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_UNLINK)
+	{
+		if (cr == SET_C)
+			set_DM(AX25Sess->snd_ch, path);
+
+		return;
+	}
+
+	if (cr == SET_R)
+	{
+		// Determine which frames could get into the user�s frame buffer.
+		i = AX25Sess->vs;
+
+		need_frame[index++] = i + '0';
+
+//		Debugprintf("RR Rxed vs = %d hi_vs = %d", AX25Sess->vs, AX25Sess->hi_vs);
+		while (i != AX25Sess->hi_vs)
+		{
+			i = (i++) & 7;
+			need_frame[index++] = i + '0';
+			if (index > 10)
+			{
+				Debugprintf("Index corrupt %d need_frame = %s", index, need_frame);
+				break;
+			}
+		}
+
+		//Clear the received frames from the transmission buffer.
+
+		if (AX25Sess->status == STAT_WAIT_ANS)
+			delete_I_FRM(AX25Sess, nr);
+
+		// We restore the link if the number is valid
+
+		if (AX25Sess->status == STAT_CHK_LINK || strchr(need_frame, nr + '0') > 0)
+		{
+			rst_timer(AX25Sess);
+			AX25Sess->status = STAT_LINK;
+			send_data_buf(AX25Sess, nr);
+		}
+	}
+
+	if (cr == SET_C)
+		add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, pf, SET_R));
+
+	rst_t3(AX25Sess);
+}
+
+
+void on_RNR(TAX25Port * AX25Sess, Byte * path, int  nr, int  pf, int cr)
+{
+	if (AX25Sess->status == STAT_TRY_LINK)
+		return;
+
+	if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_UNLINK)
+	{
+		if (cr == SET_C)
+			set_DM(AX25Sess->snd_ch, path);
+
+		return;
+	}
+
+	if (cr == SET_R)
+	{
+		rst_timer(AX25Sess);
+
+		if (AX25Sess->status == STAT_WAIT_ANS)
+			delete_I_FRM(AX25Sess, nr);
+
+		AX25Sess->status = STAT_CHK_LINK;
+	}
+
+	if (cr == SET_C)
+		add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, SET_P, SET_R));
+
+	rst_t3(AX25Sess);
+}
+
+
+void on_REJ(TAX25Port * AX25Sess, Byte * path, int  nr, int  pf, int cr)
+{
+	if (AX25Sess->status == STAT_TRY_LINK)
+		return;
+
+	if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_UNLINK)
+	{
+		if (cr == SET_C)
+			set_DM(AX25Sess->snd_ch, path);
+
+		return;
+	}
+
+	if (cr == SET_R)
+	{
+		rst_timer(AX25Sess);
+		AX25Sess->status = STAT_LINK;
+
+		send_data_buf(AX25Sess, nr);
+	}
+
+	if (cr == SET_C)
+		add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, SET_P, SET_R));
+}
+
+
+void on_SREJ(TAX25Port * AX25Sess, Byte * path, int  nr, int  pf, int cr)
+{
+	if (AX25Sess->status == STAT_TRY_LINK)
+		return;
+
+	if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_UNLINK)
+	{
+		if (cr == SET_C)
+			set_DM(AX25Sess->snd_ch, path);
+
+		return;
+	}
+
+	if (cr == SET_R)
+	{
+		rst_timer(AX25Sess);
+		AX25Sess->status = STAT_LINK;
+
+		send_data_buf_srej(AX25Sess, nr);
+	}
+
+	if (cr == SET_C)
+		add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, SET_P, SET_R));
+}
+/////////////////////////// I-FRAMES ////////////////////////////////////
+
+void  on_I(void * socket, TAX25Port * AX25Sess, int PID, Byte * path, string * data, int nr, int ns, int pf, int cr, boolean fecflag)
+{
+	string * collector_data;
+	int i;
+	Byte need_frame[16] = "";
+	int index = 0;
+	{
+		if (AX25Sess->status == STAT_TRY_LINK)
+			return;
+
+		if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_UNLINK)
+		{
+			set_DM(0, path);
+			return;
+		}
+
+		if (busy)
+		{
+			add_pkt_buf(AX25Sess, make_frame(NULL, path, PID, AX25Sess->vr, 0, S_FRM, S_RNR, FALSE, pf, SET_R));
+			return;
+		}
+
+		// Determine which frames could get into the user�s frame buffer.
+
+		i = AX25Sess->vs;
+
+		need_frame[index++] = i + '0';
+
+//		Debugprintf("I Rxed vs = %d hi_vs = %d", AX25Sess->vs, AX25Sess->hi_vs);
+	
+		while (i != AX25Sess->hi_vs)
+		{
+			i = (i++) & 7;
+			need_frame[index++] = i + '0';
+			if (index > 10)
+			{
+				Debugprintf("Index corrupt %d need_frame = %s", index, need_frame);
+				break;
+			}
+		}
+
+		//Clear received frames from the transmission buffer.
+
+		if (AX25Sess->status == STAT_WAIT_ANS)
+			delete_I_FRM(AX25Sess, nr);
+
+		//We restore the link if the number is valid
+
+		if (AX25Sess->status == STAT_CHK_LINK || strchr(need_frame, nr + '0') > 0)
+		{
+			//We restore the link if the number is valid
+
+			rst_timer(AX25Sess);
+			AX25Sess->status = STAT_LINK;
+			send_data_buf(AX25Sess, nr);
+		}
+
+		if (ns == AX25Sess->vr)
+		{
+			//If the expected frame, send RR, F
+
+			AX25Sess->info.stat_r_pkt++;
+			AX25Sess->info.stat_r_byte += data->Length;
+
+			if (fecflag)
+				AX25Sess->info.stat_fec_count++;
+
+			upd_vr(AX25Sess, AX25Sess->vr);
+
+			AX25Sess->frm_win[ns].Length = data->Length; //Save the frame to the window buffer
+			AX25Sess->frm_win[ns].Data = data->Data; //Save the frame to the window buffer
+
+			collector_data = read_frame_collector(AX25Sess, fecflag);
+
+			AGW_AX25_data_in(socket, AX25Sess->snd_ch, PID, path, stringAdd(data, collector_data->Data, collector_data->Length));
+
+			add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_RR, FALSE, pf, SET_R));
+		}
+		else
+		{
+			// If the frame is not expected, send REJ, F
+
+			if ((AX25Sess->frm_win[ns].Length != data->Length) &&
+				memcmp(&AX25Sess->frm_win[ns].Data, data->Data, data->Length) != 0)
+
+				write_frame_collector(AX25Sess, ns, data);
+
+			add_pkt_buf(AX25Sess, make_frame(NULL, path, 0, AX25Sess->vr, 0, S_FRM, S_REJ, FALSE, pf, SET_R));
+		}
+		rst_t3(AX25Sess);
+	}
+}
+/////////////////////////// U-FRAMES ////////////////////////////////////
+
+
+void  on_SABM(void * socket, TAX25Port * AX25Sess)
+{
+	if (AX25Sess->status == STAT_TRY_UNLINK)
+	{
+		AX25Sess->info.stat_end_ses = time(NULL);
+
+		write_ax25_info(AX25Sess);
+		rst_values(AX25Sess);
+
+		memset(AX25Sess->corrcall, 0, 10);
+		memset(AX25Sess->mycall, 0, 10);
+		AX25Sess->digi[0] = 0;
+
+		AGW_AX25_disc(AX25Sess, MODE_OTHER);
+		Clear(&AX25Sess->frame_buf);
+
+		AX25Sess->status = STAT_NO_LINK;
+	}
+
+	if (AX25Sess->status == STAT_TRY_LINK)
+	{
+		AGW_AX25_disc(AX25Sess, MODE_OTHER);
+
+		rst_timer(AX25Sess);
+		rst_values(AX25Sess);
+		Clear(&AX25Sess->frame_buf);
+		AX25Sess->status = STAT_NO_LINK;
+	}
+
+	if (AX25Sess->status != STAT_NO_LINK)
+	{
+		if ((strcmp(AX25Sess->kind, "Outgoing") == 0) ||
+			AX25Sess->status == STAT_TRY_UNLINK || AX25Sess->info.stat_s_byte > 0 || 
+			AX25Sess->info.stat_r_byte > 0 || AX25Sess->frm_collector.Count > 0)
+		{
+			AX25Sess->info.stat_end_ses = time(NULL);
+			AGW_AX25_disc(AX25Sess, MODE_OTHER);
+			write_ax25_info(AX25Sess);
+			rst_timer(AX25Sess);
+			rst_values(AX25Sess);
+			Clear(&AX25Sess->frame_buf);
+			AX25Sess->status = STAT_NO_LINK;
+		}
+	}
+
+	if (AX25Sess->status == STAT_NO_LINK)
+	{
+		AGW_AX25_conn(AX25Sess, AX25Sess->snd_ch, MODE_OTHER);
+		AX25Sess->vr = 0;
+		AX25Sess->vs = 0;
+		AX25Sess->hi_vs = 0;
+		Clear(&AX25Sess->frm_collector);
+		clr_frm_win(AX25Sess);
+		AX25Sess->status = STAT_LINK;
+		AX25Sess->info.stat_begin_ses = time(NULL);
+		strcpy(AX25Sess->kind, "Incoming");
+		AX25Sess->socket = socket;
+
+		if (RSID_SABM[AX25Sess->snd_ch])			// Send RSID before SABM/UA
+			needRSID[AX25Sess->snd_ch] = 1;
+
+	}
+
+	add_pkt_buf(AX25Sess, make_frame(NULL, AX25Sess->Path, 0, 0, 0, U_FRM, U_UA, FALSE, SET_P, SET_R));
+}
+
+void on_DISC(void * socket, TAX25Port * AX25Sess)
+{
+	if (AX25Sess->status != STAT_NO_LINK)
+	{
+		AX25Sess->info.stat_end_ses = time(NULL);
+		AGW_AX25_disc(AX25Sess, MODE_OTHER);
+		write_ax25_info(AX25Sess);
+	}
+
+	if (AX25Sess->status == STAT_NO_LINK || AX25Sess->status == STAT_TRY_LINK)
+		set_DM(AX25Sess->snd_ch, AX25Sess->Path);
+	else
+	{
+		add_pkt_buf(AX25Sess, make_frame(NULL, AX25Sess->Path, 0, 0, 0, U_FRM, U_UA, FALSE, SET_P, SET_R));
+
+		if (RSID_SABM[AX25Sess->snd_ch])			// Send RSID before SABM/UA
+			needRSID[AX25Sess->snd_ch] = 1;
+	}
+
+	rst_values(AX25Sess);
+	memset(AX25Sess->corrcall, 0, 10);
+	memset(AX25Sess->mycall, 0, 10);
+	AX25Sess->digi[0] = 0;
+	AX25Sess->status = STAT_NO_LINK;
+}
+
+void on_DM(void * socket, TAX25Port * AX25Sess)
+{
+	if (AX25Sess->status != STAT_NO_LINK)
+	{
+		AX25Sess->info.stat_end_ses = time(NULL);
+		AGW_AX25_disc(AX25Sess, MODE_OTHER);
+		write_ax25_info(AX25Sess);
+	}
+
+	rst_timer(AX25Sess);
+	rst_values(AX25Sess);
+	memset(AX25Sess->corrcall, 0, 10);
+	memset(AX25Sess->mycall, 0, 10);
+	AX25Sess->digi[0] = 0;
+	AX25Sess->status = STAT_NO_LINK;
+}
+
+
+void on_UA(void *socket, TAX25Port * AX25Sess)
+{
+	switch (AX25Sess->status)
+	{
+	case STAT_TRY_LINK:
+
+		AX25Sess->info.stat_begin_ses = time(NULL);
+		AX25Sess->status = STAT_LINK;
+		AGW_AX25_conn(AX25Sess, AX25Sess->snd_ch, MODE_OUR);
+		break;
+
+	case STAT_TRY_UNLINK:
+
+		AX25Sess->info.stat_end_ses = time(NULL);
+		AGW_AX25_disc(AX25Sess, MODE_OUR);
+		write_ax25_info(AX25Sess);
+
+		rst_values(AX25Sess);
+		AX25Sess->status = STAT_NO_LINK;
+		memset(AX25Sess->corrcall, 0, 10);
+		memset(AX25Sess->mycall, 0, 10);
+		AX25Sess->digi[0] = 0;
+		break;
+	}
+
+	rst_timer(AX25Sess);
+}
+
+void on_UI(TAX25Port * AX25Sess, int pf, int cr)
+{
+}
+
+void on_FRMR(void * socket, TAX25Port * AX25Sess, Byte * path)
+{
+	if (AX25Sess->status != STAT_NO_LINK)
+	{
+		AX25Sess->info.stat_end_ses = time(NULL);
+
+		AGW_AX25_disc(socket, AX25Sess->snd_ch, MODE_OTHER, path);
+		write_ax25_info(AX25Sess);
+	}
+
+	set_DM(AX25Sess->snd_ch, path);
+
+	rst_values(AX25Sess);
+	memset(AX25Sess->corrcall, 0, 10);
+	memset(AX25Sess->mycall, 0, 10);
+	AX25Sess->digi[0] = 0;
+	AX25Sess->status = STAT_NO_LINK;
+}
+
+
+
+void UpdateActiveConnects(int snd_ch)
+{
+	int port;
+
+	users[snd_ch] = 0;
+
+	for (port = 0; port < port_num; port++)
+		if (AX25Port[snd_ch][port].status != STAT_NO_LINK)
+			users[snd_ch]++;
+}
+
+
+void timer_event()
+{
+	int  snd_ch, port;
+	void * socket;
+	single  frack;
+	Byte  active;
+	TAX25Port * AX25Sess;
+
+	TimerEvent = TIMER_EVENT_OFF;
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		//reset the slottime timer
+		if (dyn_frack[snd_ch])
+		{
+			UpdateActiveConnects(snd_ch);
+			if (users[snd_ch] > 0)
+				active = users[snd_ch] - 1;
+			else
+				active = 0;
+
+			frack = frack_time[snd_ch] + frack_time[snd_ch] * active * 0.5;
+		}
+		else
+			frack = frack_time[snd_ch];
+
+		//
+		for (port = 0; port < port_num; port++)
+		{
+			AX25Sess = &AX25Port[snd_ch][port];
+
+			if (AX25Sess->status == STAT_NO_LINK)
+				continue;
+
+			if (snd_status[snd_ch] != SND_TX)  //when at the reception
+				if (AX25Sess->frame_buf.Count == 0)  //when the transfer buffer is empty
+					inc_t1(AX25Sess); // we consider time of the timer of repeated requests
+
+			// Wouldn't it make more sense to keep path in ax.25 struct?
+
+			if (AX25Sess->t1 >= frack * 10 + (number_digi(AX25Sess->digi) * frack * 20))
+			{
+				if (AX25Sess->clk_frack >= fracks[snd_ch])
+				{
+					// This disconnects after retries expires
+
+					rst_frack(AX25Sess);
+
+					//socket:=get_incoming_socket_by_call(AX25Sess->mycall);
+
+					set_unlink(AX25Sess, AX25Sess->Path);
+				}
+
+				switch (AX25Sess->status)
+				{
+				case STAT_TRY_LINK:
+
+					set_link(AX25Sess, AX25Sess->Path);
+					break;
+
+				case STAT_TRY_UNLINK:
+					
+					set_try_unlink(AX25Sess, AX25Sess->Path);
+					break;
+				
+				case STAT_WAIT_ANS:
+
+					set_chk_link(AX25Sess, AX25Sess->Path);
+					break;
+
+				case STAT_CHK_LINK:
+
+					set_chk_link(AX25Sess, AX25Sess->Path);
+					break;
+				}
+
+				rst_t1(AX25Sess);
+			}
+
+
+			if (AX25Sess->t3 >= idletime[snd_ch] * 10)
+			{
+				set_chk_link(AX25Sess, AX25Sess->Path);
+				rst_t1(AX25Sess);
+				rst_t3(AX25Sess);
+			}
+
+			if (AX25Sess->status == STAT_LINK)
+				inc_t3(AX25Sess);
+
+		}
+	}
+	// KISS ACKMODE
+	//if (snd_status[snd_ch]<>SND_TX) and KISSServ then KISS_send_ack1(snd_ch);
+}
+
+TAX25Port * get_free_port(int snd_ch)
+{
+	int i;
+	int need_free_port;
+
+	i = 0;
+	
+	need_free_port = FALSE;
+	
+	while (i < port_num)
+	{
+		if (AX25Port[snd_ch][i].status == STAT_NO_LINK)
+			return &AX25Port[snd_ch][i];
+
+		i++;
+	} 
+	return FALSE;
+}
+
+
+
+TAX25Port * get_user_port(int snd_ch, Byte * path)
+                                                                                                                                                                                                                                                                                                                                                                       {
+	TAX25Port * AX25Sess = NULL;
+
+	int i = 0;
+	int port = 0;
+
+
+	while (i < port_num)
+	{
+		AX25Sess = &AX25Port[snd_ch][i];
+
+		if (AX25Sess->status != STAT_NO_LINK && memcmp(AX25Sess->ReversePath, path, AX25Sess->pathLen) == 0)
+			return AX25Sess;
+
+		i++;
+	}
+
+	return FALSE;
+}
+
+boolean get_user_dupe(int snd_ch, Byte * path)
+{
+	int i = 0;
+	TAX25Port * AX25Sess;
+
+	while (i < port_num)
+	{
+		AX25Sess = &AX25Port[snd_ch][i];
+
+		if (AX25Sess->status != STAT_NO_LINK && memcmp(AX25Sess->ReversePath, path, AX25Sess->pathLen) == 0)
+			return TRUE;
+
+		i++;
+	}
+
+	return FALSE;
+}
+
+TAX25Port * get_user_port_by_calls(int snd_ch, char *  CallFrom, char *  CallTo)
+{
+	int  i = 0;
+	TAX25Port * AX25Sess = NULL;
+
+	while (i < port_num)
+	{
+		AX25Sess = &AX25Port[snd_ch][i];
+
+		if (AX25Sess->status != STAT_NO_LINK &&
+			strcmp(CallFrom, AX25Sess->mycall) == 0 && strcmp(CallTo, AX25Sess->corrcall) == 0)
+
+			return AX25Sess;
+
+		i++;
+	}
+
+	return NULL;
+}
+
+void * get_sock_by_port(TAX25Port * AX25Sess)
+{
+	void * socket = (void *)-1;
+
+	if (AX25Sess)
+		socket = AX25Sess->socket;
+
+	return socket;
+}
+
+void Digipeater(int snd_ch, string * frame)
+{
+	boolean addr_end, flag_replaced, digi_stop;
+	word crc;
+	char call[16];
+	Byte * addr = &frame->Data[7];					// Origon
+	int len = frame->Length - 2;					// not FCS
+	string * frameCopy;
+
+	int n = 8;										// Max digis
+
+	if (list_digi_callsigns[snd_ch].Count == 0)
+		return;
+
+	// Look for first unused digi
+
+	while ((addr[6] & 1) == 0 && n--)					// until end of address
+	{
+		addr += 7;
+
+		if ((addr[6] & 128) == 0)
+		{
+			// unused digi - is it addressed to us?
+
+			UCHAR CRCString[2];
+
+			memcpy(call, addr, 7);
+			call[6] &= 0x7E;				// Mask end of call 
+
+			// See if in digi list
+
+			int i;
+
+			for (i = 0; i < list_digi_callsigns->Count; i++)
+			{
+				if (memcmp(list_digi_callsigns->Items[i]->Data, call, 7) == 0)
+				{
+					// for us
+
+					addr[6] |= 128;				// set digi'ed
+
+					// TX Frames need a KISS control on front
+
+					frameCopy = newString();
+
+					frameCopy->Data[0] = 0;
+					frameCopy->Length = 1;
+
+					stringAdd(frameCopy, frame->Data, frame->Length - 2);		// Exclude CRC
+
+					addr[6] &= 0x7f;				// clear digi'ed from original;
+
+					// Need to redo crc
+
+					crc = get_fcs(frameCopy->Data, len);
+
+					CRCString[0] = crc & 0xff;
+					CRCString[1] = crc >> 8;
+
+					stringAdd(frameCopy, CRCString, 2);
+
+					Add(&all_frame_buf[snd_ch], frameCopy);
+
+					return;
+				}
+			}
+		}
+	}
+}
+
+void analiz_frame(int snd_ch, string * frame, char * code, boolean fecflag)
+{
+	int  port, free_port;
+	Byte path[80];
+	string  *data = newString();
+	Byte  pid, nr, ns, f_type, f_id, rpt, cr, pf;
+	boolean	need_free_port;
+	void * socket = NULL;
+	boolean	incoming_conn = 0;
+	Byte revpath[80];
+	int pathlen;
+	Byte * ptr;
+
+	int excluded = 0;
+	int len;
+
+	TAX25Port * AX25Sess;
+
+	//	mod_icon_status = mod_rx;
+
+	len = frame->Length;
+
+	if (len < PKT_ERR)
+		return;
+
+	decode_frame(frame->Data, frame->Length, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+	//  if is_excluded_call(snd_ch,path) then excluded:=TRUE;
+	 // if is_excluded_frm(snd_ch,f_id,data) then excluded:=TRUE;
+	
+
+	if (excluded)
+		return;
+
+	if (NonAX25[snd_ch])
+	{
+		if (AGWServ)
+			AGW_Raw_monitor(snd_ch, frame);
+		if (KISSServ)
+			KISS_on_data_out(snd_ch, frame, 0);
+	}
+	
+	// CRC Collision Check
+
+	if (!is_correct_path(path, pid))
+	{
+		// Duff path - if Non-AX25 filter active log and discard
+
+		if (NonAX25[snd_ch])
+		{
+			put_frame(snd_ch, frame, "NON-AX25", FALSE, excluded);
+			return;
+		}
+	}
+
+	put_frame(snd_ch, frame, code, 0, excluded);				// Monitor
+
+	if (!NonAX25[snd_ch])
+	{
+		if (AGWServ)
+			AGW_Raw_monitor(snd_ch, frame);
+
+		if (KISSServ)
+			KISS_on_data_out(snd_ch, frame, 0);
+	}
+
+	// Digipeat frame
+
+	Digipeater(snd_ch, frame);
+
+	if (!is_last_digi(path))
+		return;							// Don't process if still unused digis
+
+	// Clear reapeated bits from digi path
+
+	ptr = &path[13];
+
+	while ((*ptr & 1) == 0)				// end of address
+	{
+		ptr += 7;
+		*(ptr) &= 0x7f;					// Clear digi'd bit
+	}
+
+	// search for port of correspondent
+
+	AX25Sess = get_user_port(snd_ch, path);
+
+	// if not an active session, AX25Sess will be NULL
+
+	if (AX25Sess == NULL)
+		socket = in_list_incoming_mycall(path);
+	else
+		socket = get_sock_by_port(AX25Sess);
+
+	// link analysis
+
+	if (AX25Sess == NULL)
+	{
+		// No Session. If socket is set (so call is in incoming calls list) and SABM set up session
+
+		if (socket == NULL)
+			return;						// not for us
+
+		if (f_id != U_SABM)				// Not SABM
+		{
+			// 			// send DM if P set
+
+			if (cr == SET_C)
+			{
+				switch (f_id)
+				{
+				case U_DISC:
+				case S_RR:
+				case S_REJ:
+				case S_RNR:
+				case I_I:
+
+					set_DM(snd_ch, path);
+					break;
+
+				case U_UI:
+					break;
+
+				default:
+					set_FRMR(snd_ch, path, f_id);
+				}
+
+
+			}
+			return;
+		}
+
+		// Must be SABM. See if it would duplicate an existing session (but could it - wouldn't that be found earlier ??
+
+		if (get_user_dupe(snd_ch, path))		// Not SABM or a duplicate call pair
+			return;
+
+		AX25Sess = get_free_port(snd_ch);
+
+		if (AX25Sess == NULL)
+		{
+			// if there are no free ports for connection - beat off
+
+			Byte Rev[80];
+
+			reverse_addr(path, Rev, strlen(path));
+			set_DM(snd_ch, Rev);
+			return;
+		}
+
+		// initialise new session
+
+		AX25Sess->snd_ch = snd_ch;
+
+		AX25Sess->corrcall[ConvFromAX25(&path[7], AX25Sess->corrcall)] = 0;
+		AX25Sess->mycall[ConvFromAX25(path, AX25Sess->mycall)] = 0;
+		AX25Sess->digi[0] = 0;
+
+		//		rst_timer(snd_ch, free_port);
+
+		strcpy(AX25Sess->kind, "Incoming");
+		AX25Sess->socket = socket;
+
+		Debugprintf("incoming call socket = %x", socket);
+
+		// I think we need to reverse the path
+
+		AX25Sess->pathLen = strlen(path);
+		strcpy(AX25Sess->ReversePath, path);
+		reverse_addr(path, AX25Sess->Path, strlen(path));
+	}
+
+	// we process a packet on the necessary port
+
+	memcpy(path, AX25Sess->Path, AX25Sess->pathLen);
+
+	switch (f_id)
+	{
+	case I_I:
+
+		on_I(socket, AX25Sess, pid, path, data, nr, ns, pf, cr, fecflag);
+		break;
+
+	case S_RR:
+
+		on_RR(AX25Sess, path, nr, pf, cr);
+		break;
+
+	case S_RNR:
+
+		on_RNR(AX25Sess, path, nr, pf, cr);
+		break;
+
+	case S_REJ:
+
+		on_REJ(AX25Sess, path, nr, pf, cr);
+		break;
+
+	case S_SREJ:
+
+		on_SREJ(AX25Sess, path, nr, pf, cr);
+		break;
+
+	case U_SABM:
+
+		on_SABM(socket, AX25Sess);
+		break;
+
+	case U_DISC:
+
+		on_DISC(socket, AX25Sess);
+		break;
+
+	case U_UA:
+
+		on_UA(socket, AX25Sess);
+		break;
+
+	case U_DM:
+
+		on_DM(socket, AX25Sess);
+		break;
+
+	case U_UI:
+
+		on_UI(AX25Sess, pf, cr);
+		break;
+
+	case U_FRMR:
+
+		on_FRMR(socket, AX25Sess, path);
+		break;
+	}
+	
+	if (AGWServ)
+		AGW_AX25_frame_analiz(snd_ch, TRUE, frame);
+}
+
+
diff --git a/ax25_mod.c b/ax25_mod.c
new file mode 100644
index 0000000..3c54a72
--- /dev/null
+++ b/ax25_mod.c
@@ -0,0 +1,1743 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+
+#include "UZ7HOStuff.h"
+
+// I assume this modulates (and sends?} frames
+
+int RSEncode(UCHAR * bytToRS, UCHAR * RSBytes, int DataLen, int RSLen);
+
+//unit ax25_mod;
+
+//interface
+
+//uses sysutils,classes,math
+
+extern int SampleNo;
+
+extern BOOL KISSServ;
+
+extern TStringList KISS_acked[];
+extern TStringList KISS_iacked[];
+
+extern UCHAR modem_mode[];
+
+#define sbc 175
+
+extern single  ch_offset[4];
+
+#define COS45 0.70710676908493f
+
+#define TX_SILENCE 0
+#define TX_DELAY 1
+#define TX_TAIL 2
+#define TX_NO_DATA 3
+#define TX_FRAME 4
+#define TX_WAIT_BPF 5
+
+
+#define TX_BIT0 0
+#define TX_BIT1 1
+#define FRAME_EMPTY 0
+#define FRAME_FULL 1
+#define FRAME_NO_FRAME 2
+#define FRAME_NEW_FRAME 3
+#define BYTE_EMPTY 0
+#define BYTE_FULL 1
+
+
+UCHAR gray_8PSK[8] = {7,0,6,5,2,1,3,4};		// ?? was 1::8
+
+UCHAR gray_PI4QPSK[4] = {3,1,5,7};
+
+
+float audio_buf[5][32768];  // [1..4,0..32767]
+float tx_src_BPF_buf[5][32768];
+float tx_BPF_buf[5][32768];
+float tx_prev_BPF_buf[5][32768];
+float tx_BPF_core[5][32768];
+
+long tx_delay_cnt[5] = {0};		//			 : array[1..4] of longword=(0,0,0,0};
+long tx_tail_cnt[5] = {0};
+
+int tx_hitoneraisedb[5] = {0};		//   : array[1..4] of integer=(0,0,0,0};
+float tx_hitoneraise[5] = {0};		//     : array[1..4] of single=(0,0,0,0};
+float tx_freq[5] = { 1000, 1000, 1000, 1000, 1000};			//			     : array[1..4] of single=(1000,1000,1000,1000};
+float tx_shift[5] = { 200, 200, 200, 200, 200};				  //   : array[1..4] of single=(200,200,200,200};
+float tx_bit_mod[5] = {1, 1, 1, 1, 1};		//			   : array[1..4] of single=(1,1,1,1};
+float tx_osc[5] = {0};		//						 : array[1..4] of single=(0,0,0,0};
+float tx_bit_osc[5] = {0};		//			   : array[1..4] of single=(0,0,0,0};
+unsigned short txbpf[5] = { 400, 400, 400, 400, 400};		//						  : array[1..4] of word=(400,400,400,400};
+unsigned short  tx_BPF_tap[5] = { 256, 256, 256, 256, 256};		//			   : array[1..4] of word=(256,256,256,256};
+unsigned short  tx_baudrate[5] = { 300, 300, 300, 300, 300};		//			  : array[1..4] of word=(300,300,300,300};
+unsigned short  tx_BPF_timer[5] = {0};		//			 : array[1..4] of word=(0,0,0,0};
+UCHAR tx_pol[5] = {0};		//						 : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_last_pol[5] = {0};		//			  : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_last_diddle[5] = {0};		//     : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_flag_cnt[5] = {0};		//			  : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_frame_status[5] = {0};		//    : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_byte_status[5] = {0};		//     : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_status[5] = {0};		//			     : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_bit_stuff_cnt[5] = {0};		//    : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_bit_cnt[5] = {0};		//			    : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_last_bit[5] = {0};		//			   : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_bit_stream[5] = {0};		//			 : array[1..4] of byte=(0,0,0,0};
+
+UCHAR tx_8PSK[5] = {0};		//						 : array[1..4] of byte=(0,0,0,0};
+UCHAR tx_QPSK[5] = {0};		//						 : array[1..4] of byte=(0,0,0,0};
+
+float tx_I_mod[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of single=(1,1,1,1};
+float tx_Q_mod[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of single=(1,1,1,1};
+float tx_QPSK_avg_I[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_avg_Q[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_df_I[5] = {0};		//			  : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_df_Q [5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_I[5] = {0};		//			     : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_Q[5] = {0};		//			     : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_old_I[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_QPSK_old_Q[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_avg_I[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_avg_Q[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_df_I[5] = {0};		//			  : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_df_Q[5] = {0};		//			  : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_I[5] = {0};		//			     : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_Q[5] = {0};		//			     : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_old_I[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+float tx_8PSK_old_Q[5] = {0};		//			 : array[1..4] of single=(0,0,0,0};
+
+float tx_osc1[5] = {0};		//						 : array[1..4] of single=(0,0,0,0};
+float tx_osc2[5] = {0};		//						 : array[1..4] of single=(0,0,0,0};
+float tx_osc3[5] = {0};		//						 : array[1..4] of single=(0,0,0,0};
+float tx_osc4[5] = {0};		//						 : array[1..4] of single=(0,0,0,0};
+short tx_inv1[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of shortint=(1,1,1,1};
+short tx_inv2[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of shortint=(1,1,1,1};
+short tx_inv3[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of shortint=(1,1,1,1};
+short tx_inv4[5] = {1, 1, 1, 1, 1};		//						: array[1..4] of shortint=(1,1,1,1};
+short tx_old_inv1[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of shortint=(1,1,1,1};
+short tx_old_inv2[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of shortint=(1,1,1,1};
+short tx_old_inv3[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of shortint=(1,1,1,1};
+short tx_old_inv4[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of shortint=(1,1,1,1};
+float tx_bit1_mod[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of single=(1,1,1,1};
+float tx_bit2_mod[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of single=(1,1,1,1};
+float tx_bit3_mod[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of single=(1,1,1,1};
+float tx_bit4_mod[5] = {1, 1, 1, 1, 1};		//			  : array[1..4] of single=(1,1,1,1};
+UINT tx_viterbi[5] = {0};		//			     : array[1..4] of word=(0,0,0,0};
+UCHAR tx_intv_tbl[5][4];		//			  : array[1..4,0..3] of byte;
+
+short tx_inv[5] = {1, 1, 1, 1, 1};		//						    : array[1..4] of shortint=(1,1,1,1};
+BOOL tx_change_phase[5] = {0};		//    : array[1..4] of boolean=(FALSE,FALSE,FALSE,FALSE};
+BOOL tx_bs_bit[5] = {0};		//			    : array[1..4] of boolean=(FALSE,FALSE,FALSE,FALSE};
+
+string * tx_data[5] = {0};		//						: array[1..4] of string=('','','',''};
+int tx_data_len[5] = {0};
+
+int tx_fx25_size[4] = { 0, 0, 0, 0 };
+int tx_fx25_size_cnt[4] = { 0, 0, 0, 0 };
+int tx_fx25_mode[4] = { 0, 0, 0, 0 };
+
+
+//  uses sm_main,ax25,ax25_agw,ax25_demod,rsunit;
+
+UCHAR tx_nrzi(UCHAR snd_ch, UCHAR bit)
+{
+//	Debugprintf("Before NRZI %d", bit);
+
+	if (bit == TX_BIT0)
+	{
+		// Zero so switch bit
+
+		tx_last_bit[snd_ch] ^= 1;
+	}
+	return tx_last_bit[snd_ch];	
+}
+
+BOOL tx_bit_stuffing(UCHAR snd_ch, UCHAR bit)
+{					 
+ // result = FALSE;
+ // if bit=TX_BIT1 then inc(tx_bit_stuff_cnt[snd_ch]};
+ // if bit=TX_BIT0 then tx_bit_stuff_cnt[snd_ch] = 0;
+ // if tx_bit_stuff_cnt[snd_ch]=5 then begin tx_bit_stuff_cnt[snd_ch] = 0; result = TRUE; end;
+//end;
+
+	if (bit == TX_BIT1)
+		tx_bit_stuff_cnt[snd_ch]++;
+
+	if (bit == TX_BIT0)
+		tx_bit_stuff_cnt[snd_ch] = 0;
+
+	if (tx_bit_stuff_cnt[snd_ch] == 5)
+	{
+		tx_bit_stuff_cnt[snd_ch] = 0;
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+
+
+
+void interleave(char *s, int len)
+{
+//	var
+ // data: string;
+ // i,k,len: word;
+ // nr_blocks: word;
+//begin{
+//  data = '';
+ // len = length(s};
+ // if len>0 then nr_blocks = ((len-1} div 16}+1 else nr_blocks = 1;
+ // for i = 1 to 16 do
+ //   for k = 0 to nr_blocks-1 do
+  //   if (i+k*16}<=len then data = data+s[i+k*16];
+ // result = data;
+//end;
+
+	char data[1024];
+
+	UINT i,k;
+	UINT nr_blocks;
+	int n = 0;
+
+	if (len > 0)
+		nr_blocks = ((len - 1) / 16) + 1;
+	else
+		nr_blocks = 1;
+
+	for (i = 0; i < 16; i++)
+	{
+		for (k = 0; k < nr_blocks; k++)
+		{
+			if ((i + k * 16) <= len)
+				data[n++] = s[i + k * 16];
+		}
+	}
+
+	memcpy(s, data, len);
+}
+
+//procedure get_new_frame(snd_ch: byte; var frame_stream: TStringList};
+//var
+//  header,line,temp: string;
+//  len,i,size: word;
+ // crc: word;
+//begin
+
+void get_new_frame(UCHAR snd_ch, TStringList * frame_stream)
+{
+	UCHAR header[256];
+	UCHAR line[1024];
+
+	int LineLen;
+
+	string ** Items;
+
+	string * myTemp;
+
+	UCHAR temp[1024];
+
+	UINT len, i, size;
+	UINT crc;
+
+	tx_bs_bit[snd_ch] = FALSE;
+	tx_bit_cnt[snd_ch] = 0;
+	tx_flag_cnt[snd_ch] = 0;
+	tx_bit_stuff_cnt[snd_ch] = 0;
+	tx_bit_stream[snd_ch] = FRAME_FLAG;
+	tx_frame_status[snd_ch] = FRAME_NEW_FRAME;
+	tx_byte_status[snd_ch] = BYTE_EMPTY;
+
+	if (frame_stream->Count == 0)
+	{
+		tx_frame_status[snd_ch] = FRAME_NO_FRAME;
+		return;
+	}
+
+	// We now pass control byte and ack bytes on front and pointer to socket on end if ackmode
+
+	myTemp = Strings(frame_stream, 0);			// get message
+
+	if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+	{
+		// Save copy then copy data up 3 bytes
+
+		Add(&KISS_acked[snd_ch], duplicateString(myTemp));
+
+		mydelete(myTemp, 0, 3);
+		myTemp->Length -= sizeof(void *);
+	}
+	else
+	{
+		// Just remove control 
+
+		mydelete(myTemp, 0, 1);
+	}
+
+	tx_data[snd_ch] = duplicateString(myTemp);		// so can free original below
+
+	Delete(frame_stream, 0);			// This will invalidate temp
+
+	AGW_AX25_frame_analiz(snd_ch, FALSE, tx_data[snd_ch]);
+
+	put_frame(snd_ch, tx_data[snd_ch], "", TRUE, FALSE);
+
+	if (tx_data[snd_ch]->Length == 0 || modem_mode[snd_ch] != MODE_MPSK)
+		return;
+
+	// Reformat MPSK Data
+
+	//Take data 8 bytes at a time and add 8 bytes of RS data
+
+	LineLen = 0;
+
+	while (tx_data[snd_ch]->Length > 0)
+	{
+		size = tx_data[snd_ch]->Length;
+
+		if (size > 8)
+			size = 8;
+
+		memcpy(temp, tx_data[snd_ch]->Data, size);
+
+		// Delete the chars from tx_data
+
+		mydelete(tx_data[snd_ch], 0, 8);
+
+		memset(xData, 0, sizeof(xData));
+		memset(xEncoded, 0, sizeof(xEncoded));
+
+		memcpy(xData, temp, size);
+
+		InitBuffers();
+		EncodeRS(xData, xEncoded);			// This puts the 8 RS bytes in xEncoded
+
+		memcpy(&line[LineLen], xData, size);
+		memcpy(&line[LineLen + size], xEncoded, MaxErrors * 2);
+
+		LineLen += size + (MaxErrors * 2);
+	}
+
+
+
+
+	len = LineLen;
+
+	interleave(line, LineLen);
+	scrambler(line, LineLen);
+
+	header[0] = 0x7e;
+	header[1] = 0x7e;
+	header[2] = len >> 8;
+	header[3] = len;
+
+	crc = get_fcs(header, 4);
+
+	header[4] = crc >> 8;
+	header[5] = crc;
+
+	memset(xData, 0, sizeof(xData));
+	memset(xEncoded, 0, sizeof(xEncoded));
+	memmove(xData, header, 6);
+
+
+	//		RSEncode(xData, xEncoded, 6 + (MaxErrors * 2), MaxErrors * 2);
+
+	InitBuffers();
+	EncodeRS(xData, xEncoded);
+
+	fx25_encode_rs(xData, xEncoded, 0, 8);
+
+
+	// We should now have RS Encoded Header in xEncoded;
+
+	// I think we send encoded header then line
+
+	tx_data[snd_ch]->Length = 0;
+
+	stringAdd(tx_data[snd_ch], xData, 6);
+	stringAdd(tx_data[snd_ch], xEncoded, MaxErrors * 2);
+	stringAdd(tx_data[snd_ch], line, LineLen);
+
+	// For testing, descramble and de-interleve
+
+	scrambler(line, LineLen); // should look like interleaved
+	{
+		Byte unscrambled[1024];
+		int count, len;
+		int origlen;
+
+		len = LineLen;
+		count = (len + 15) / 16;
+
+		int j1, j2, j3, i, j;
+
+		j3 = 0;
+
+		for (j1 = 0; j1 < 16; j1++)
+		{
+			// Each char in block
+
+			for (j2 = 0; j2 < count; j2++)
+			{
+				// Blocks
+
+				unscrambled[j2 * 16 + j1] = line[j3];
+				j3++;
+			}
+		}
+
+		// Now remove RS (will check later)
+
+		i = 0;
+		j = 0;
+
+		while (j < len)
+		{
+			Byte line1[256];
+			int nErr, eras_pos = 0;
+			Byte rs_block[256];
+
+			memcpy(line1, &unscrambled[j], 16);
+
+			memset(xEncoded, 0, sizeof(xEncoded));
+			memset(xDecoded, 0, sizeof(xDecoded));
+
+			memcpy(xEncoded, &unscrambled[j], 16);
+
+//			nErr = DecodeRS(xEncoded, xDecoded);
+
+			memset(rs_block, 0, 255);
+			memcpy(rs_block, &unscrambled[j], 8);
+			memcpy(&rs_block[255 - 8], &unscrambled[j+8], 8);
+
+			nErr = fx25_decode_rs(rs_block, &eras_pos, 0, 0, 8);
+
+
+//			line1 = '';
+//			for j1 = MaxErrors * 2 to size - 1 do line1 = line1 + chr(xDecoded[j1]);
+
+
+			memcpy(&unscrambled[i], &unscrambled[j], 8);
+			i += 8;
+			j += 16;
+		}
+
+		j3 = j3;
+
+	}
+
+}
+  
+
+
+int get_new_bit(Byte snd_ch, Byte bit)
+{
+	unsigned short len;
+	string * s;
+
+	if (tx_frame_status[snd_ch] == FRAME_FULL)
+	{
+		if (tx_byte_status[snd_ch] == BYTE_EMPTY)
+		{
+			len = tx_data[snd_ch]->Length;
+
+			if (len > 0)
+			{
+				s = tx_data[snd_ch];
+				tx_bit_stream[snd_ch] = (s->Data[0]);
+				tx_frame_status[snd_ch] = FRAME_FULL;
+				tx_byte_status[snd_ch] = BYTE_FULL;
+				tx_bit_cnt[snd_ch] = 0;
+				mydelete(tx_data[snd_ch], 0, 1);
+			}
+
+			else tx_frame_status[snd_ch] = FRAME_EMPTY;
+		}
+
+		if (tx_byte_status[snd_ch] == BYTE_FULL)
+			bit = tx_bit_stream[snd_ch] & TX_BIT1;
+
+		if (modem_mode[snd_ch] == MODE_MPSK)
+		{
+			tx_bit_cnt[snd_ch]++;
+			tx_bit_stream[snd_ch] = tx_bit_stream[snd_ch] >> 1;
+			if (tx_bit_cnt[snd_ch] >= 8)
+				tx_byte_status[snd_ch] = BYTE_EMPTY;
+
+		}
+		else
+		{
+			if (tx_bs_bit[snd_ch])
+				bit = TX_BIT0;
+
+			tx_bs_bit[snd_ch] = tx_bit_stuffing(snd_ch, bit);
+
+			if (!tx_bs_bit[snd_ch])
+			{
+				tx_bit_cnt[snd_ch]++;
+				tx_bit_stream[snd_ch] >>= 1;
+				if (tx_bit_cnt[snd_ch] >= 8 && !tx_bs_bit[snd_ch])
+					tx_byte_status[snd_ch] = BYTE_EMPTY;
+			}
+		}
+	}
+
+	if (tx_frame_status[snd_ch] == FRAME_EMPTY)
+		get_new_frame(snd_ch, &all_frame_buf[snd_ch]);
+
+	if ((tx_frame_status[snd_ch] == FRAME_NEW_FRAME) || (tx_frame_status[snd_ch] == FRAME_NO_FRAME))
+	{
+		bit = tx_bit_stream[snd_ch] & TX_BIT1;
+		tx_flag_cnt[snd_ch]++;
+		tx_bit_stream[snd_ch] >>= 1;
+
+		if (tx_flag_cnt[snd_ch] == 8)
+		{
+			switch (tx_frame_status[snd_ch])
+			{
+			case FRAME_NEW_FRAME:
+
+				tx_frame_status[snd_ch] = FRAME_FULL;
+				break;
+
+			case FRAME_NO_FRAME:
+
+				tx_tail_cnt[snd_ch] = 0;
+				tx_frame_status[snd_ch] = FRAME_EMPTY;
+				tx_status[snd_ch] = TX_TAIL;
+
+				break;
+			}
+		}
+	}
+	return bit;
+}
+
+////// FX.25 //////
+
+
+void bit_to_fx25(Byte * tx_byte,  Byte * bit_cnt, Byte bit, string * data, int * data_cnt)
+{
+	*tx_byte = (*tx_byte >> 1) | (bit << 7);
+	(*bit_cnt)++;
+
+	if (*bit_cnt == 8)
+	{
+		stringAdd(data, tx_byte, 1);
+		*bit_cnt = 0;
+	}
+	(*data_cnt)++;
+}
+
+string * fill_fx25_data(int snd_ch, string * data)
+{
+#define nr_tags 5
+
+	string * result;
+
+	Byte rs_roots[nr_tags + 1] = { 16, 32, 64, 32, 16, 16 };
+	word rs_payload[nr_tags + 1] = { 1912, 1784, 1528, 1024, 512, 256 }; // 239, 233, 191, 128, 64, 32
+
+	unsigned long long rs_tag[nr_tags + 1] =
+	{
+		0xB74DB7DF8A532F3E,			// 255 / 16 (239)
+		0x6E260B1AC5835FAE,			// 255 / 32 (223)
+		0x3ADB0C13DEAE2836,			// 255 / 64 (191)
+		0xFF94DC634F1CFF4E,			// 160 / 32 (128)
+		0xC7DC0508F3D9B09E,			// 80 / 16	(64)	
+		0x8F056EB4369660EE 		// 48 / 16	(32)
+	};
+
+//	0x26FF60A600CC8FDE) 144; = 16;
+//	0x1EB7B9CDBC09C00E) 96; 32;
+//  0xDBF869BD2DBB1776) 64;= 32;
+//	0xAB69DB6A543188D6) 192; = 64;
+//	0x4A4ABEC4A724B796) 128; = 64;
+
+	string * ax25_data = newString();
+
+	int i, ax25_size;
+	Byte a, bit, bit_cnt, bit_cnt1, bs, tx_byte;
+	Byte rs_id;
+	Byte rs_block[256], parity[256];
+
+	ax25_size = 0;
+	bs = 0;
+	tx_byte = 0;
+	bit_cnt = 0;
+
+	// Load start flag
+	a = FRAME_FLAG;
+
+	for (i = 0; i < 8; i++)
+	{
+		bit = a & 1;
+		a = a >> 1;
+		bit_to_fx25(&tx_byte, &bit_cnt, bit, ax25_data, &ax25_size);
+	}
+
+	// Load body
+	for (i = 0; i < data->Length; i++)
+	{
+		bit_cnt1 = 0;
+		a = data->Data[i];
+		do
+		{
+			if (bs == 5)
+			{
+				bit = TX_BIT0;
+				bs = 0;
+			}
+			else
+			{
+				bit = a & 1;
+				a = a >> 1;
+				bit_cnt1++;
+
+				if (bit == TX_BIT1)
+					bs++;
+				else
+					bs = 0;
+			}
+
+			bit_to_fx25(&tx_byte, &bit_cnt, bit, ax25_data, &ax25_size);
+
+		} while (bit_cnt1 != 8 || bs == 5);
+	}
+
+	// Load close flag
+
+	a = FRAME_FLAG;
+
+	for (i = 0; i < 8; i++)
+	{
+		bit = a & 1;
+		a = a >> 1;
+		bit_to_fx25(&tx_byte, &bit_cnt, bit, ax25_data, &ax25_size);
+	}
+
+	a = FRAME_FLAG;
+
+	// if too short or too long 
+
+	if (ax25_size < 168 || ax25_size > 1912)	// < 21 or > 239
+	{
+		// Send as normal ax25 packet
+
+		if (bit_cnt > 0)
+		{
+			do
+			{
+				tx_byte = tx_byte >> 1;
+				bit_cnt++;
+				if (bit_cnt == 8)
+					stringAdd(ax25_data, &tx_byte, 1);
+			} while (bit_cnt < 8);
+		}
+		tx_fx25_size[snd_ch] = ax25_size;
+		return ax25_data;
+	}
+
+	// Send as FX25 Message
+
+	// find RS block size
+
+	rs_id = 0;
+
+	for (i = 0; i <= nr_tags; i++)
+		if (ax25_size <= rs_payload[i])
+			rs_id = i;
+
+	// Padding to block size
+
+	while (ax25_size != rs_payload[rs_id])
+	{
+		bit = a & 1;
+		a = (a >> 1) | (bit << 7);
+		bit_to_fx25(&tx_byte, &bit_cnt, bit, ax25_data, &ax25_size);
+	}
+
+	memset(rs_block, 0, 255);
+	move(&ax25_data->Data[0], &rs_block[0], ax25_data->Length);
+
+	fx25_encode_rs(rs_block, parity, 0, rs_roots[rs_id]);
+
+	result = newString();
+
+	stringAdd(result, (Byte *)&rs_tag[rs_id], 8);
+	stringAdd(result, ax25_data->Data, ax25_data->Length);
+	stringAdd(result, parity, rs_roots[rs_id]);
+
+	tx_fx25_size[snd_ch] = result->Length << 3;
+
+	freeString(ax25_data);
+	return result;
+}
+
+void fx25_get_new_frame(int snd_ch, TStringList * frame_stream)
+{
+	string * myTemp;
+
+	tx_bs_bit[snd_ch] = 0;
+	tx_bit_cnt[snd_ch] = 0;
+	tx_flag_cnt[snd_ch] = 0;
+	tx_bit_stuff_cnt[snd_ch] = 0;
+	tx_fx25_size_cnt[snd_ch] = 0;
+	tx_fx25_size[snd_ch] = 1;
+	tx_frame_status[snd_ch] = FRAME_NEW_FRAME;
+	tx_byte_status[snd_ch] = BYTE_EMPTY;
+	if (frame_stream->Count == 0)
+		tx_frame_status[snd_ch] = FRAME_NO_FRAME;
+	else
+	{
+		// We now pass control byte and ack bytes on front and pointer to socket on end if ackmode
+
+		myTemp = Strings(frame_stream, 0);			// get message
+
+		if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+		{
+			// Save copy then copy data up 3 bytes
+
+			Add(&KISS_acked[snd_ch], duplicateString(myTemp));
+
+			mydelete(myTemp, 0, 3);
+			myTemp->Length -= sizeof(void *);
+		}
+		else
+		{
+			// Just remove control 
+
+			mydelete(myTemp, 0, 1);
+		}
+
+		AGW_AX25_frame_analiz(snd_ch, FALSE, myTemp);
+		put_frame(snd_ch, myTemp, "", TRUE, FALSE);
+
+		tx_data[snd_ch] = fill_fx25_data(snd_ch, myTemp);
+
+		Delete(frame_stream, 0);			// This will invalidate temp
+	}
+}
+
+int fx25_get_new_bit(int snd_ch, Byte bit)
+{
+	string *s;
+
+	if (tx_frame_status[snd_ch] == FRAME_EMPTY)
+	{
+		fx25_get_new_frame(snd_ch, &all_frame_buf[snd_ch]);
+		if (tx_frame_status[snd_ch] == FRAME_NEW_FRAME)
+			tx_frame_status[snd_ch] = FRAME_FULL;
+	}
+
+	if (tx_frame_status[snd_ch] == FRAME_FULL)
+	{
+		if (tx_byte_status[snd_ch] == BYTE_EMPTY)
+		{
+			if (tx_data[snd_ch]->Length)
+			{
+				s = tx_data[snd_ch];
+
+				tx_bit_stream[snd_ch] = s->Data[0];
+				tx_frame_status[snd_ch] = FRAME_FULL;
+				tx_byte_status[snd_ch] = BYTE_FULL;
+				tx_bit_cnt[snd_ch] = 0;
+				mydelete(tx_data[snd_ch], 0, 1);
+			}
+			else
+				tx_frame_status[snd_ch] = FRAME_EMPTY;
+		}
+		if (tx_byte_status[snd_ch] == BYTE_FULL)
+		{
+			bit = tx_bit_stream[snd_ch] & TX_BIT1;
+			tx_bit_stream[snd_ch] = tx_bit_stream[snd_ch] >> 1;
+			tx_bit_cnt[snd_ch]++;
+			tx_fx25_size_cnt[snd_ch]++;
+			if (tx_bit_cnt[snd_ch] >= 8)
+				tx_byte_status[snd_ch] = BYTE_EMPTY;
+			if (tx_fx25_size_cnt[snd_ch] == tx_fx25_size[snd_ch])
+				tx_frame_status[snd_ch] = FRAME_EMPTY;
+		}
+	}
+
+	if (tx_frame_status[snd_ch] == FRAME_EMPTY)
+	{
+		fx25_get_new_frame(snd_ch, &all_frame_buf[snd_ch]);
+
+		switch (tx_frame_status[snd_ch])
+		{
+		case FRAME_NEW_FRAME:
+			tx_frame_status[snd_ch] = FRAME_FULL;
+			break;
+
+		case FRAME_NO_FRAME:
+			tx_tail_cnt[snd_ch] = 0;
+			tx_frame_status[snd_ch] = FRAME_EMPTY;
+			tx_status[snd_ch] = TX_TAIL;
+			break;
+		}
+	}
+	return bit;
+}
+
+
+//////////////////
+
+
+int get_new_bit_tail(UCHAR snd_ch, UCHAR bit)
+{
+	long _txtail = 0;
+	UCHAR _diddles;
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+		_diddles = diddles;
+	else
+		_diddles = 0;
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+		_txtail = txtail[snd_ch];
+
+	else if (modem_mode[snd_ch] == MODE_BPSK)
+		_txtail = txtail[snd_ch];
+
+	else if (modem_mode[snd_ch] == MODE_8PSK)
+		_txtail = txtail[snd_ch] * 3;
+
+	else if (modem_mode[snd_ch] == MODE_QPSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+	  _txtail = txtail[snd_ch] << 1;
+  
+	else if (modem_mode[snd_ch] == MODE_MPSK)
+		_txtail = txtail[snd_ch] << 2;
+
+	_txtail = (_txtail * tx_baudrate[snd_ch]) / 1000;
+
+	if (qpsk_set[snd_ch].mode == QPSK_V26 || modem_mode[snd_ch] == MODE_8PSK)
+		_diddles = 2;
+
+	switch (_diddles)
+	{
+	case 0:
+    
+		if (tx_tail_cnt[snd_ch] < _txtail)
+		{
+			bit = TX_BIT0;
+			tx_tail_cnt[snd_ch]++;
+		}
+		else
+		{
+			tx_status[snd_ch] = TX_WAIT_BPF;
+		}
+
+		break;
+
+	case 1:
+
+		if (tx_tail_cnt[snd_ch] < _txtail)
+		{
+			if (tx_last_diddle[snd_ch] == TX_BIT0)
+				bit = TX_BIT1;
+			else
+				bit = TX_BIT0;
+
+			tx_tail_cnt[snd_ch]++;
+			tx_last_diddle[snd_ch] = bit;
+		}
+		else
+		{
+			Debugprintf("End TXTAIL %d", SampleNo);
+			tx_status[snd_ch] = TX_WAIT_BPF;
+		}
+		
+		break;
+	
+	case 2:
+    
+		if (tx_tail_cnt[snd_ch] < _txtail)
+		{
+			bit = FRAME_FLAG >> (tx_tail_cnt[snd_ch] % 8) & 1;
+			tx_tail_cnt[snd_ch]++;
+		}
+		else
+		{
+			Debugprintf("End TXTAIL %d", SampleNo);
+			tx_status[snd_ch] = TX_WAIT_BPF;
+		}
+		break;
+	}
+	return bit;
+}
+
+int get_new_bit_delay(UCHAR snd_ch, UCHAR bit)
+{
+	ULONG _txdelay = 0;
+	UCHAR _diddles;
+
+	_diddles = 0;
+
+	switch (modem_mode[snd_ch])
+	{
+	case MODE_FSK:
+	
+		_diddles = diddles;
+		break;
+
+	case MODE_PI4QPSK:
+	case MODE_8PSK:
+
+		_diddles = 2;
+		break;
+
+    case MODE_QPSK:
+		
+		if (qpsk_set[snd_ch].mode == QPSK_V26)
+			_diddles = 2;
+		break;
+	}
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+		_txdelay = txdelay[snd_ch];
+
+	else if (modem_mode[snd_ch] == MODE_BPSK)
+		_txdelay = txdelay[snd_ch];
+
+	else if (modem_mode[snd_ch] == MODE_8PSK)
+		_txdelay = txdelay[snd_ch] * 3;
+
+	else if (modem_mode[snd_ch] == MODE_QPSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+		_txdelay = txdelay[snd_ch] << 1;
+
+	else if (modem_mode[snd_ch] == MODE_MPSK)
+	{
+		if (txdelay[snd_ch] < 400)
+			_txdelay = 400 << 2;		 //AFC delay
+		else
+			_txdelay = txdelay[snd_ch] << 2;
+	}
+	
+	_txdelay = (_txdelay * tx_baudrate[snd_ch]) / 1000;
+
+	switch (_diddles)
+	{
+	case 0:
+   
+		if (tx_delay_cnt[snd_ch] < _txdelay)
+		{
+			bit = TX_BIT0;
+			tx_delay_cnt[snd_ch]++;
+		}
+		else
+		{
+			tx_status[snd_ch] = TX_FRAME;
+		}
+
+		break;	
+	
+	case 1:
+    
+		if (tx_delay_cnt[snd_ch] < _txdelay)
+		{
+			if (tx_last_diddle[snd_ch] == TX_BIT0)
+				bit = TX_BIT1;
+			else
+				bit = TX_BIT0;
+		
+			tx_delay_cnt[snd_ch]++;
+			tx_last_diddle[snd_ch] = bit;
+		}
+		else
+		{
+			tx_status[snd_ch] = TX_FRAME;
+			Debugprintf("End TXD %d", SampleNo);
+		}
+		break;
+
+	case 2:
+
+		// Send Flags
+
+		if (tx_delay_cnt[snd_ch] < _txdelay)
+		{
+			bit = FRAME_FLAG >> ((8 - (_txdelay % 8) + tx_delay_cnt[snd_ch]) % 8) & 1;
+			tx_delay_cnt[snd_ch]++;
+		}
+		else
+		{
+			tx_status[snd_ch] = TX_FRAME;
+			Debugprintf("End TXD %d", SampleNo);
+		}
+		break;
+	}
+	return bit;
+}
+
+// is this waiting for the filter to fill?
+// No, flushing BPF
+
+void get_wait_bpf(UCHAR snd_ch)
+{
+	tx_BPF_timer[snd_ch]++;
+
+	if (tx_BPF_timer[snd_ch] == tx_BPF_tap[snd_ch] )
+	{
+		tx_status[snd_ch] = TX_NO_DATA;
+		tx_BPF_timer[snd_ch] = 0;
+	}
+}
+
+
+//procedure modulator(snd_ch: byte; var buf: array of single; buf_size: word};
+//{
+/*
+function filter(x,k: single}: single;
+begin
+  result = k*cos(x};
+  if result>1 then result = 1;
+  if result<-1 then result = -1;
+end;
+}
+*/
+
+single filter(single x)
+{
+	if (x <= PI25)
+		return 1.0f;
+
+	if (x >= PI75)
+		return  -1.0f;
+
+     return cosf(2.0f * x -PI5);
+}
+
+
+// make_samples return one sample of the waveform
+
+// But seems to be called only once per bit ??
+
+// No, but needs to preserve bit between calls 
+
+float make_samples(unsigned char  snd_ch, unsigned char * bitptr)
+{
+	float pi2, x1, x;
+	Byte i,qbit,tribit,dibit;
+	float z1,z2,z3,z4;
+	unsigned short b, msb, lsb;
+	unsigned char bit = *bitptr;
+
+	float amp = 0;
+
+	pi2 = 2 * pi / TX_Samplerate;
+	x1 = pi * tx_baudrate[snd_ch] / TX_Samplerate;
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+	{
+		if (bit == TX_BIT0)
+			x = pi2*(tx_freq[snd_ch] + 0.5f * tx_shift[snd_ch]);
+		else
+			x = pi2*(tx_freq[snd_ch] - 0.5f * tx_shift[snd_ch]);
+
+	   amp = 1.0f;
+
+	    if (tx_baudrate[snd_ch] > 600)
+		{
+			if (tx_hitoneraisedb[snd_ch] < 0 && bit == TX_BIT0)
+				amp = tx_hitoneraise[snd_ch];
+
+			if (tx_hitoneraisedb[snd_ch] > 0 && bit == TX_BIT1)
+				amp = tx_hitoneraise[snd_ch];
+		}
+
+		tx_osc[snd_ch] = tx_osc[snd_ch] + x;
+
+		if (tx_osc[snd_ch] > 2*pi)
+			tx_osc[snd_ch] = tx_osc[snd_ch] - 2*pi;
+	}
+
+	else if (modem_mode[snd_ch] == MODE_BPSK)
+	{
+		if (tx_change_phase[snd_ch])
+			tx_bit_mod[snd_ch] = tx_inv[snd_ch] * cos(tx_bit_osc[snd_ch]);
+
+		x = pi2 * (tx_freq[snd_ch]);
+
+		tx_osc[snd_ch] = tx_osc[snd_ch] + x;
+
+		if (tx_osc[snd_ch] > 2 * pi)
+			tx_osc[snd_ch] = tx_osc[snd_ch] - 2 * pi;
+	}
+
+	else if (modem_mode[snd_ch] == MODE_QPSK)
+	{
+		if (tx_QPSK_old_I[snd_ch] != tx_QPSK_I[snd_ch])
+
+			tx_I_mod[snd_ch] = tx_QPSK_avg_I[snd_ch] + tx_QPSK_df_I[snd_ch] * filter(tx_bit_osc[snd_ch]);
+		else
+			tx_I_mod[snd_ch] = tx_QPSK_I[snd_ch];
+
+		if (tx_QPSK_old_Q[snd_ch] != tx_QPSK_Q[snd_ch])
+			tx_Q_mod[snd_ch] = tx_QPSK_avg_Q[snd_ch] + tx_QPSK_df_Q[snd_ch] * filter(tx_bit_osc[snd_ch]);
+		else
+			tx_Q_mod[snd_ch] = tx_QPSK_Q[snd_ch];
+
+		x = pi2 * (tx_freq[snd_ch]);
+		tx_osc[snd_ch] = tx_osc[snd_ch] + x;
+		if (tx_osc[snd_ch] > 2 * pi)
+			tx_osc[snd_ch] = tx_osc[snd_ch] - 2 * pi;
+	}
+  
+	else if (modem_mode[snd_ch] == MODE_8PSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+	{
+		if (tx_8PSK_old_I[snd_ch] != tx_8PSK_I[snd_ch])
+			tx_I_mod[snd_ch] = tx_8PSK_avg_I[snd_ch] + tx_8PSK_df_I[snd_ch] * filter(tx_bit_osc[snd_ch]);
+		else
+			tx_I_mod[snd_ch] = tx_8PSK_I[snd_ch];
+
+		if (tx_8PSK_old_Q[snd_ch] != tx_8PSK_Q[snd_ch])
+			tx_Q_mod[snd_ch] = tx_8PSK_avg_Q[snd_ch] + tx_8PSK_df_Q[snd_ch] * filter(tx_bit_osc[snd_ch]);
+		else
+			tx_Q_mod[snd_ch] = tx_8PSK_Q[snd_ch];
+
+		x = pi2 * (tx_freq[snd_ch]);
+		tx_osc[snd_ch] = tx_osc[snd_ch] + x;
+
+		if (tx_osc[snd_ch] > 2 * pi)
+			tx_osc[snd_ch] = tx_osc[snd_ch] - 2 * pi;
+
+	}
+
+	else if (modem_mode[snd_ch] == MODE_MPSK)
+	{
+		z1 = pi2 * (tx_freq[snd_ch] + ch_offset[0]);
+		z2 = pi2 * (tx_freq[snd_ch] + ch_offset[1]);
+		z3 = pi2 * (tx_freq[snd_ch] + ch_offset[2]);
+		z4 = pi2 * (tx_freq[snd_ch] + ch_offset[3]);
+
+		tx_osc1[snd_ch] = tx_osc1[snd_ch] + z1;
+		tx_osc2[snd_ch] = tx_osc2[snd_ch] + z2;
+		tx_osc3[snd_ch] = tx_osc3[snd_ch] + z3;
+		tx_osc4[snd_ch] = tx_osc4[snd_ch] + z4;
+
+		if (tx_osc1[snd_ch] > 2 * pi)
+			tx_osc1[snd_ch] = tx_osc1[snd_ch] - 2 * pi;
+
+		if (tx_osc2[snd_ch] > 2 * pi)
+			tx_osc2[snd_ch] = tx_osc2[snd_ch] - 2 * pi;
+
+		if (tx_osc3[snd_ch] > 2 * pi)
+			tx_osc3[snd_ch] = tx_osc3[snd_ch] - 2 * pi;
+
+		if (tx_osc4[snd_ch] > 2 * pi)
+			tx_osc4[snd_ch] = tx_osc4[snd_ch] - 2 * pi;
+
+		if (tx_old_inv1[snd_ch] != tx_inv1[snd_ch])
+			tx_bit1_mod[snd_ch] = tx_inv1[snd_ch] * cos(tx_bit_osc[snd_ch]);
+		else
+			tx_bit1_mod[snd_ch] = -tx_inv1[snd_ch];
+
+		if (tx_old_inv2[snd_ch] != tx_inv2[snd_ch])
+			tx_bit2_mod[snd_ch] = tx_inv2[snd_ch] * cos(tx_bit_osc[snd_ch]);
+		else 
+			tx_bit2_mod[snd_ch] = -tx_inv2[snd_ch];
+
+		if (tx_old_inv3[snd_ch] != tx_inv3[snd_ch])
+			tx_bit3_mod[snd_ch] = tx_inv3[snd_ch] * cos(tx_bit_osc[snd_ch]);
+		else 
+			tx_bit3_mod[snd_ch] = -tx_inv3[snd_ch];
+
+		if (tx_old_inv4[snd_ch] != tx_inv4[snd_ch]) 
+			tx_bit4_mod[snd_ch] = tx_inv4[snd_ch] * cos(tx_bit_osc[snd_ch]);
+		else
+			tx_bit4_mod[snd_ch] = -tx_inv4[snd_ch];
+	}
+
+	tx_bit_osc[snd_ch] = tx_bit_osc[snd_ch] + x1;
+
+	if (tx_bit_osc[snd_ch] > pi)
+	{
+		// This seems to get the next bit,
+		// but why?? - end of samples for last bit
+
+		tx_bit_osc[snd_ch] = tx_bit_osc[snd_ch] - pi;
+
+		// FSK Mode
+		if (modem_mode[snd_ch] == MODE_FSK)
+		{
+			bit = 0;
+
+			if (tx_status[snd_ch] == TX_SILENCE)
+			{
+				tx_delay_cnt[snd_ch] = 0;
+				tx_status[snd_ch] = TX_DELAY;
+			}
+	
+			if (il2p_mode[snd_ch] >= IL2P_MODE_TXRX)
+			{
+				if (tx_status[snd_ch] == TX_DELAY)
+					tx_status[snd_ch] = TX_FRAME;			// il2p generates TXDELAY as part of the frame, so go straight to TX_FRAME
+
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_FRAME)
+					bit = il2p_get_new_bit(snd_ch, bit);
+
+
+				// No nrzi for il2p
+
+				*bitptr = bit;
+			}
+			else
+			{
+				// ax25/fx25
+
+				if (tx_status[snd_ch] == TX_DELAY)
+					bit = get_new_bit_delay(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_FRAME)
+				{
+					if (tx_fx25_mode[snd_ch])
+						bit = fx25_get_new_bit(snd_ch, bit);
+					else
+						bit = get_new_bit(snd_ch, bit);
+				}
+				
+				*bitptr = tx_nrzi(snd_ch, bit);
+
+			}
+		}
+
+		// BPSK Mode
+		if (modem_mode[snd_ch] == MODE_BPSK)
+		{
+			bit = 0;
+
+			if (tx_status[snd_ch] == TX_SILENCE)
+			{
+				tx_delay_cnt[snd_ch] = 0;
+				Debugprintf("Start TXD");
+				tx_status[snd_ch] = TX_DELAY;
+			}
+
+			// il2p generates TXDELAY as part of the frame, so go straight too TX_FRAME
+
+			if (tx_status[snd_ch] == TX_DELAY)
+				if (il2p_mode[snd_ch] >= IL2P_MODE_TXRX)
+					tx_status[snd_ch] = TX_FRAME;
+				else
+					bit = get_new_bit_delay(snd_ch, bit);
+
+			if (tx_status[snd_ch] == TX_TAIL)
+				bit = get_new_bit_tail(snd_ch, bit);
+
+			if (tx_status[snd_ch] == TX_FRAME)
+			{
+				if (il2p_mode[snd_ch] >= IL2P_MODE_TXRX)
+					bit = il2p_get_new_bit(snd_ch, bit);
+				else if (tx_fx25_mode[snd_ch])
+					bit = fx25_get_new_bit(snd_ch, bit);
+				else
+					bit = get_new_bit(snd_ch, bit);
+			}
+			// ??			*bitptr = tx_nrzi(snd_ch, bit);
+
+			if (bit == 0)
+			{
+				tx_inv[snd_ch] = -tx_inv[snd_ch];
+				tx_change_phase[snd_ch] = TRUE;
+			}
+			else
+				tx_change_phase[snd_ch] = FALSE;
+		}
+
+		// QPSK Mode
+
+		if (modem_mode[snd_ch] == MODE_QPSK)
+		{
+			dibit = 0;
+			for (i = 0; i < 2; i++)
+			{
+				bit = 0;
+				if (tx_status[snd_ch] == TX_SILENCE)
+				{
+					tx_delay_cnt[snd_ch] = 0;
+					tx_status[snd_ch] = TX_DELAY;
+				}
+				if (tx_status[snd_ch] == TX_DELAY)
+					bit = get_new_bit_delay(snd_ch, bit);
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+				if (tx_status[snd_ch] == TX_FRAME)
+					bit = get_new_bit(snd_ch, bit);
+				dibit = (dibit << 1) | tx_nrzi(snd_ch, bit);
+			}
+
+
+			dibit = qpsk_set[snd_ch].tx[dibit & 3];
+			tx_QPSK[snd_ch] = (tx_QPSK[snd_ch] + dibit) & 3;
+			tx_QPSK_old_I[snd_ch] = tx_QPSK_I[snd_ch];
+			tx_QPSK_old_Q[snd_ch] = tx_QPSK_Q[snd_ch];
+
+			switch (tx_QPSK[snd_ch])
+			{
+			case 0:
+
+				tx_QPSK_I[snd_ch] = COS45;
+				tx_QPSK_Q[snd_ch] = COS45;
+				break;
+
+			case 1:
+
+				tx_QPSK_I[snd_ch] = -COS45;
+				tx_QPSK_Q[snd_ch] = COS45;
+				break;
+
+			case 2:
+
+				tx_QPSK_I[snd_ch] = -COS45;
+				tx_QPSK_Q[snd_ch] = -COS45;
+				break;
+
+			case 3:
+
+				tx_QPSK_I[snd_ch] = COS45;
+				tx_QPSK_Q[snd_ch] = -COS45;
+				break;
+			}
+
+			tx_QPSK_avg_I[snd_ch] = 0.5f*(tx_QPSK_old_I[snd_ch] + tx_QPSK_I[snd_ch]);
+			tx_QPSK_df_I[snd_ch] = 0.5f*(tx_QPSK_old_I[snd_ch] - tx_QPSK_I[snd_ch]);
+			tx_QPSK_avg_Q[snd_ch] = 0.5f*(tx_QPSK_old_Q[snd_ch] + tx_QPSK_Q[snd_ch]);
+			tx_QPSK_df_Q[snd_ch] = 0.5f*(tx_QPSK_old_Q[snd_ch] - tx_QPSK_Q[snd_ch]);
+		}
+
+		// PI/4 QPSK Mode
+
+		if (modem_mode[snd_ch] == MODE_PI4QPSK)
+		{
+			dibit = 0;
+
+			for (i = 0; i < 2; i++)
+			{
+				bit = 0;
+				if (tx_status[snd_ch] == TX_SILENCE)
+				{
+					tx_delay_cnt[snd_ch] = 0;
+					Debugprintf("Start TXD");
+					tx_status[snd_ch] = TX_DELAY;
+				}
+
+				if (tx_status[snd_ch] == TX_DELAY)
+					bit = get_new_bit_delay(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_FRAME)
+					bit = get_new_bit(snd_ch, bit);
+
+				*bitptr = tx_nrzi(snd_ch, bit);
+
+				dibit = (dibit << 1) | *bitptr;
+
+			}
+
+			// This returns 3,1,5 or 7 so we use the odd enties in the 8PSK table
+
+			dibit = gray_PI4QPSK[dibit & 3];
+
+			tx_8PSK[snd_ch] = (tx_8PSK[snd_ch] + dibit) & 7;
+			tx_8PSK_old_I[snd_ch] = tx_8PSK_I[snd_ch];
+			tx_8PSK_old_Q[snd_ch] = tx_8PSK_Q[snd_ch];
+
+			switch (tx_8PSK[snd_ch])
+			{
+			case 0:
+				tx_8PSK_I[snd_ch] = 0;
+				tx_8PSK_Q[snd_ch] = 1;
+				break;
+
+			case 1:
+				tx_8PSK_I[snd_ch] = COS45;
+				tx_8PSK_Q[snd_ch] = COS45;
+				break;
+
+			case 2:
+				tx_8PSK_I[snd_ch] = 1;
+				tx_8PSK_Q[snd_ch] = 0;
+				break;
+
+			case 3:
+				tx_8PSK_I[snd_ch] = COS45;
+				tx_8PSK_Q[snd_ch] = -COS45;
+				break;
+
+			case 4:
+				tx_8PSK_I[snd_ch] = 0;
+				tx_8PSK_Q[snd_ch] = -1;
+				break;
+
+			case 5:
+				tx_8PSK_I[snd_ch] = -COS45;
+				tx_8PSK_Q[snd_ch] = -COS45;
+				break;
+
+			case 6:
+				tx_8PSK_I[snd_ch] = -1;
+				tx_8PSK_Q[snd_ch] = 0;
+				break;
+
+			case 7:
+				tx_8PSK_I[snd_ch] = -COS45;
+				tx_8PSK_Q[snd_ch] = COS45;
+				break;
+
+			}
+
+			tx_8PSK_avg_I[snd_ch] = 0.5*(tx_8PSK_old_I[snd_ch] + tx_8PSK_I[snd_ch]);
+			tx_8PSK_df_I[snd_ch] = 0.5*(tx_8PSK_old_I[snd_ch] - tx_8PSK_I[snd_ch]);
+			tx_8PSK_avg_Q[snd_ch] = 0.5*(tx_8PSK_old_Q[snd_ch] + tx_8PSK_Q[snd_ch]);
+			tx_8PSK_df_Q[snd_ch] = 0.5*(tx_8PSK_old_Q[snd_ch] - tx_8PSK_Q[snd_ch]);
+
+		}
+		
+		// 8PSK Mode
+
+		if (modem_mode[snd_ch] == MODE_8PSK)
+		{
+			tribit = 0;
+			for (i = 0; i < 3; i++)
+			{
+				bit = 0;
+
+				if (tx_status[snd_ch] == TX_SILENCE)
+				{
+					tx_delay_cnt[snd_ch] = 0;
+					tx_status[snd_ch] = TX_DELAY;
+				}
+				if (tx_status[snd_ch] == TX_DELAY)
+					bit = get_new_bit_delay(snd_ch, bit);
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+				if (tx_status[snd_ch] == TX_FRAME)
+					bit = get_new_bit(snd_ch, bit);
+
+				tribit = (tribit << 1) | tx_nrzi(snd_ch, bit);
+			}
+
+			tribit = gray_8PSK[tribit & 7];
+
+			tx_8PSK[snd_ch] = (tx_8PSK[snd_ch] + tribit) & 7;
+			tx_8PSK_old_I[snd_ch] = tx_8PSK_I[snd_ch];
+			tx_8PSK_old_Q[snd_ch] = tx_8PSK_Q[snd_ch];
+
+			switch (tx_8PSK[snd_ch])
+			{
+			case 0:
+
+				tx_8PSK_I[snd_ch] = 0;
+				tx_8PSK_Q[snd_ch] = 1;
+				break;
+
+			case 1:
+
+				tx_8PSK_I[snd_ch] = COS45;
+				tx_8PSK_Q[snd_ch] = COS45;
+				break;
+
+			case 2:
+
+				tx_8PSK_I[snd_ch] = 1;
+				tx_8PSK_Q[snd_ch] = 0;
+				break;
+
+			case 3:
+
+				tx_8PSK_I[snd_ch] = COS45;
+				tx_8PSK_Q[snd_ch] = -COS45;
+				break;
+
+			case 4:
+
+				tx_8PSK_I[snd_ch] = 0;
+				tx_8PSK_Q[snd_ch] = -1;
+				break;
+
+			case 5:
+
+				tx_8PSK_I[snd_ch] = -COS45;
+				tx_8PSK_Q[snd_ch] = -COS45;
+				break;
+
+			case 6:
+
+				tx_8PSK_I[snd_ch] = -1;
+				tx_8PSK_Q[snd_ch] = 0;
+				break;
+
+			case 7:
+
+				tx_8PSK_I[snd_ch] = -COS45;
+				tx_8PSK_Q[snd_ch] = COS45;
+				break;
+
+			}
+
+			tx_8PSK_avg_I[snd_ch] = 0.5f*(tx_8PSK_old_I[snd_ch] + tx_8PSK_I[snd_ch]);
+			tx_8PSK_df_I[snd_ch] = 0.5f*(tx_8PSK_old_I[snd_ch] - tx_8PSK_I[snd_ch]);
+			tx_8PSK_avg_Q[snd_ch] = 0.5f*(tx_8PSK_old_Q[snd_ch] + tx_8PSK_Q[snd_ch]);
+			tx_8PSK_df_Q[snd_ch] = 0.5f*(tx_8PSK_old_Q[snd_ch] - tx_8PSK_Q[snd_ch]);
+		}
+					
+		if (modem_mode[snd_ch] == MODE_MPSK)
+		{
+			qbit = 0;
+
+			// get the bits for each of 4 carriers
+
+			for (i = 1; i <= 4; i++)
+			{
+				bit = 0;
+
+				if (tx_status[snd_ch] == TX_SILENCE)
+				{
+					tx_delay_cnt[snd_ch] = 0;
+					Debugprintf("Start TXD");
+					tx_status[snd_ch] = TX_DELAY;
+				}
+
+				if (tx_status[snd_ch] == TX_DELAY)
+					bit = get_new_bit_delay(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_TAIL)
+					bit = get_new_bit_tail(snd_ch, bit);
+
+				if (tx_status[snd_ch] == TX_FRAME)
+					bit = get_new_bit(snd_ch, bit);
+
+				qbit = (qbit << 1) | bit;
+			}
+
+			tx_old_inv1[snd_ch] = tx_inv1[snd_ch];
+			tx_old_inv2[snd_ch] = tx_inv2[snd_ch];
+			tx_old_inv3[snd_ch] = tx_inv3[snd_ch];
+			tx_old_inv4[snd_ch] = tx_inv4[snd_ch];
+
+			if ((qbit & 8) == 0)
+				tx_inv1[snd_ch] = -tx_inv1[snd_ch];
+			if ((qbit & 4) == 0)
+				tx_inv2[snd_ch] = -tx_inv2[snd_ch];
+			if ((qbit & 2) == 0)
+				tx_inv3[snd_ch] = -tx_inv3[snd_ch];
+			if ((qbit & 1) == 0)
+				tx_inv4[snd_ch] = -tx_inv4[snd_ch];
+
+		}
+	}
+
+	if (tx_status[snd_ch] == TX_WAIT_BPF)
+		get_wait_bpf(snd_ch);
+
+	if (modem_mode[snd_ch] == MODE_FSK)
+		return amp * sinf(tx_osc[snd_ch]);
+
+	if (modem_mode[snd_ch] == MODE_BPSK)
+		return sinf(tx_osc[snd_ch]) * tx_bit_mod[snd_ch];
+
+	if (modem_mode[snd_ch] == MODE_QPSK || modem_mode[snd_ch] == MODE_8PSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+		return sin(tx_osc[snd_ch]) * tx_I_mod[snd_ch] + cos(tx_osc[snd_ch]) * tx_Q_mod[snd_ch];
+
+	if (modem_mode[snd_ch] == MODE_MPSK)
+		return 0.35*(sinf(tx_osc1[snd_ch])*tx_bit1_mod[snd_ch] +
+			sinf(tx_osc2[snd_ch])*tx_bit2_mod[snd_ch] +
+			sinf(tx_osc3[snd_ch])*tx_bit3_mod[snd_ch] +
+			sinf(tx_osc4[snd_ch])*tx_bit4_mod[snd_ch]);
+
+	return 0.0f;
+}
+
+float make_samples_calib(UCHAR snd_ch, UCHAR tones)
+{
+	float amp, pi2, x, x1;
+
+	x1 = pi * tx_baudrate[snd_ch] / TX_Samplerate;
+	pi2 = 2 * pi / TX_Samplerate;
+
+	switch (tones)
+	{
+	case 1:
+
+		tx_last_bit[snd_ch] = 1;
+		break;
+
+	case 2:
+
+		tx_last_bit[snd_ch] = 0;
+		break;
+
+	case 3:
+
+		tx_bit_osc[snd_ch] = tx_bit_osc[snd_ch] + x1;
+
+		if (tx_bit_osc[snd_ch] > pi)
+		{
+			tx_bit_osc[snd_ch] = tx_bit_osc[snd_ch] - pi;
+			tx_last_bit[snd_ch] = tx_last_bit[snd_ch] ^ 1;
+		}
+		break;
+	}
+
+	amp = 1;
+
+	if (tx_baudrate[snd_ch] > 600)
+	{
+		if (tx_hitoneraisedb[snd_ch] < 0 && tx_last_bit[snd_ch] == 0)
+			amp = tx_hitoneraise[snd_ch];
+
+		if (tx_hitoneraisedb[snd_ch] > 0 && tx_last_bit[snd_ch] == 1)
+			amp = tx_hitoneraise[snd_ch];
+	}
+	
+	if (tx_last_bit[snd_ch] == 0)
+		x = pi2*(tx_freq[snd_ch] + 0.5f * tx_shift[snd_ch]);
+	else
+		x = pi2*(tx_freq[snd_ch] - 0.5f * tx_shift[snd_ch]);
+
+	tx_osc[snd_ch] = tx_osc[snd_ch] + x;
+	
+	if (tx_osc[snd_ch] > 2*pi)
+		tx_osc[snd_ch] = tx_osc[snd_ch] - 2 * pi;
+
+	return amp * sinf(tx_osc[snd_ch]);
+}
+
+int amplitude = 22000;
+
+void modulator(UCHAR snd_ch, int buf_size)
+{
+	// We feed samples to samplesink instead of buffering them
+
+	// I think this is the top of the TX hierarchy
+
+	int i;
+	short Sample;
+
+	if (calib_mode[snd_ch] > 0)
+	{
+		if (calib_mode[snd_ch] == 4)		// CWID
+		{
+			if (tx_status[snd_ch] == TX_SILENCE)
+			{
+				SoundIsPlaying = TRUE;
+				Debugprintf("Start CWID Chan %d", snd_ch);
+				RadioPTT(snd_ch, 1);
+
+				tx_status[snd_ch] = 6;
+			}
+
+			if (ARDOPSendToCard(snd_ch, SendSize) == 1)
+			{
+				// End of TX
+
+				tx_status[snd_ch] = TX_SILENCE;		// Stop TX
+				Flush();
+				RadioPTT(snd_ch, 0);
+				Debugprintf("End CWID");
+				calib_mode[snd_ch] = 0;
+			}
+			return;
+		}
+
+
+		if (tx_status[snd_ch] == TX_SILENCE)
+		{
+			SoundIsPlaying = TRUE;
+			Debugprintf("Start Calib Chan %d", snd_ch);
+			RadioPTT(snd_ch, 1);
+
+			tx_bit_osc[snd_ch] = 0;
+			tx_last_bit[snd_ch] = 0;
+	
+			// fill filter 
+
+			for (i = 0; i < tx_BPF_tap[snd_ch]; i++)
+				tx_prev_BPF_buf[snd_ch][buf_size + i] = make_samples_calib(snd_ch,calib_mode[snd_ch]);
+		}
+		tx_status[snd_ch] = TX_WAIT_BPF;
+	
+		for (i = 0; i < buf_size; i++)
+			tx_src_BPF_buf[snd_ch][i] = make_samples_calib(snd_ch, calib_mode[snd_ch]);
+
+		FIR_filter(tx_src_BPF_buf[snd_ch],buf_size,tx_BPF_tap[snd_ch],tx_BPF_core[snd_ch],tx_BPF_buf[snd_ch],tx_prev_BPF_buf[snd_ch]);
+    
+		for (i = 0; i < buf_size; i++)
+		{
+			Sample = tx_BPF_buf[snd_ch][i] * amplitude;
+			SampleSink(modemtoSoundLR[snd_ch], Sample);
+		}
+	}
+	else
+	{
+		if (tx_status[snd_ch] == TX_SILENCE)
+		{
+			if (fx25_mode[snd_ch] == FX25_MODE_TXRX)
+				tx_fx25_mode[snd_ch] = 1;
+			else
+				tx_fx25_mode[snd_ch] = 0;
+
+			tx_bit_osc[snd_ch] = 0;
+			tx_8PSK[snd_ch] = 0;
+			tx_QPSK[snd_ch] = 0;
+			tx_last_bit[snd_ch] = 0;
+			tx_inv1[snd_ch] = 1;
+			tx_inv2[snd_ch] = 1;
+			tx_inv3[snd_ch] = 1;
+			tx_inv4[snd_ch] = 1;
+			tx_8PSK_I[snd_ch] =  0;
+			tx_8PSK_Q[snd_ch] =  1;
+			tx_8PSK_old_I[snd_ch] =  0;
+			tx_8PSK_old_Q[snd_ch] =  1;
+			tx_QPSK_I[snd_ch] =  COS45;
+			tx_QPSK_Q[snd_ch] =  COS45;
+			tx_QPSK_old_I[snd_ch] =  COS45;
+			tx_QPSK_old_Q[snd_ch] =  COS45;
+
+			for (i = 0; i < tx_BPF_tap[snd_ch]; i++)
+				tx_prev_BPF_buf[snd_ch][buf_size+i] = make_samples(snd_ch, &tx_pol[snd_ch]);
+		}
+		
+		for (i = 0; i < buf_size; i++)
+			tx_src_BPF_buf[snd_ch][i] = make_samples(snd_ch, &tx_pol[snd_ch]);
+		
+		FIR_filter(tx_src_BPF_buf[snd_ch], buf_size, tx_BPF_tap[snd_ch], tx_BPF_core[snd_ch], tx_BPF_buf[snd_ch], tx_prev_BPF_buf[snd_ch]);
+
+		for (i = 0; i < buf_size; i++)
+		{
+			Sample = tx_BPF_buf[snd_ch][i] * 20000.0f;
+			SampleSink(modemtoSoundLR[snd_ch], Sample);
+		}
+	}
+}
+
+
diff --git a/berlekamp.c b/berlekamp.c
new file mode 100644
index 0000000..d115dd7
--- /dev/null
+++ b/berlekamp.c
@@ -0,0 +1,329 @@
+/***********************************************************************
+ * Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+ *
+ * This software library is licensed under terms of the GNU GENERAL
+ * PUBLIC LICENSE
+ * 
+ *
+ * RSCODE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RSCODE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Rscode.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Commercial licensing is available under a separate license, please
+ * contact author for details.
+ *
+ * Source code is available at http://rscode.sourceforge.net
+ * Berlekamp-Peterson and Berlekamp-Massey Algorithms for error-location
+ *
+ * From Cain, Clark, "Error-Correction Coding For Digital Communications", pp. 205.
+ *
+ * This finds the coefficients of the error locator polynomial.
+ *
+ * The roots are then found by looking for the values of a^n
+ * where evaluating the polynomial yields zero.
+ *
+ * Error correction is done using the error-evaluator equation  on pp 207.
+ *
+ */
+
+#include <stdio.h>
+#include "ecc.h"
+
+/* The Error Locator Polynomial, also known as Lambda or Sigma. Lambda[0] == 1 */
+static int Lambda[MAXDEG];
+
+/* The Error Evaluator Polynomial */
+static int Omega[MAXDEG];
+
+/* local ANSI declarations */
+static int compute_discrepancy(int lambda[], int S[], int L, int n);
+static void init_gamma(int gamma[]);
+static void compute_modified_omega (void);
+static void mul_z_poly (int src[]);
+
+/* error locations found using Chien's search*/
+static int ErrorLocs[256];
+int NErrors;
+
+extern int xMaxErrors;
+
+/* erasure flags */
+static int ErasureLocs[256];
+static int NErasures;
+
+/* From  Cain, Clark, "Error-Correction Coding For Digital Communications", pp. 216. */
+void
+Modified_Berlekamp_Massey (void)
+{	
+  int n, L, L2, k, d, i;
+  int psi[MAXDEG], psi2[MAXDEG], D[MAXDEG];
+  int gamma[MAXDEG];
+	
+  /* initialize Gamma, the erasure locator polynomial */
+  init_gamma(gamma);
+
+  /* initialize to z */
+  copy_poly(D, gamma);
+  mul_z_poly(D);
+	
+  copy_poly(psi, gamma);	
+  k = -1; L = NErasures;
+	
+  for (n = NErasures; n < NPAR; n++) {
+	
+    d = compute_discrepancy(psi, synBytes, L, n);
+		
+    if (d != 0) {
+		
+      /* psi2 = psi - d*D */
+      for (i = 0; i < NPAR*2; i++) psi2[i] = psi[i] ^ gmult(d, D[i]);
+		
+		
+      if (L < (n-k)) {
+	L2 = n-k;
+	k = n-L;
+	/* D = scale_poly(ginv(d), psi); */
+	for (i = 0; i < NPAR*2; i++) D[i] = gmult(psi[i], ginv(d));
+	L = L2;
+      }
+			
+      /* psi = psi2 */
+      for (i = 0; i < NPAR*2; i++) psi[i] = psi2[i];
+    }
+		
+    mul_z_poly(D);
+  }
+	
+  for(i = 0; i < NPAR*2; i++) Lambda[i] = psi[i];
+  compute_modified_omega();
+
+	
+}
+
+/* given Psi (called Lambda in Modified_Berlekamp_Massey) and synBytes,
+   compute the combined erasure/error evaluator polynomial as 
+   Psi*S mod z^4
+  */
+void
+compute_modified_omega ()
+{
+  int i;
+  int product[MAXDEG*2];
+	
+  mult_polys(product, Lambda, synBytes);	
+  zero_poly(Omega);
+  for(i = 0; i < NPAR; i++) Omega[i] = product[i];
+
+}
+
+/* polynomial multiplication */
+void
+mult_polys (int dst[], int p1[], int p2[])
+{
+  int i, j;
+  int tmp1[MAXDEG*2];
+	
+  for (i=0; i < (NPAR*2*2); i++) dst[i] = 0;
+	
+  for (i = 0; i < NPAR*2; i++) {
+    for(j=NPAR*2; j<(NPAR*2*2); j++) tmp1[j]=0;
+		
+    /* scale tmp1 by p1[i] */
+    for(j=0; j<NPAR*2; j++) tmp1[j]=gmult(p2[j], p1[i]);
+    /* and mult (shift) tmp1 right by i */
+    for (j = (NPAR*2*2)-1; j >= i; j--) tmp1[j] = tmp1[j-i];
+    for (j = 0; j < i; j++) tmp1[j] = 0;
+		
+    /* add into partial product */
+    for(j=0; j < (NPAR*2*2); j++) dst[j] ^= tmp1[j];
+  }
+}
+
+
+	
+/* gamma = product (1-z*a^Ij) for erasure locs Ij */
+void
+init_gamma (int gamma[])
+{
+  int e, tmp[MAXDEG];
+	
+  zero_poly(gamma);
+  zero_poly(tmp);
+  gamma[0] = 1;
+	
+  for (e = 0; e < NErasures; e++) {
+    copy_poly(tmp, gamma);
+    scale_poly(gexp[ErasureLocs[e]], tmp);
+    mul_z_poly(tmp);
+    add_polys(gamma, tmp);
+  }
+}
+	
+	
+	
+void 
+compute_next_omega (int d, int A[], int dst[], int src[])
+{
+  int i;
+  for ( i = 0; i < NPAR*2;  i++) {
+    dst[i] = src[i] ^ gmult(d, A[i]);
+  }
+}
+	
+
+
+int
+compute_discrepancy (int lambda[], int S[], int L, int n)
+{
+  int i, sum=0;
+	
+  for (i = 0; i <= L; i++) 
+    sum ^= gmult(lambda[i], S[n-i]);
+  return (sum);
+}
+
+/********** polynomial arithmetic *******************/
+
+void add_polys (int dst[], int src[]) 
+{
+  int i;
+  for (i = 0; i < NPAR*2; i++) dst[i] ^= src[i];
+}
+
+void copy_poly (int dst[], int src[]) 
+{
+  int i;
+  for (i = 0; i < NPAR*2; i++) dst[i] = src[i];
+}
+
+void scale_poly (int k, int poly[]) 
+{	
+  int i;
+  for (i = 0; i < NPAR*2; i++) poly[i] = gmult(k, poly[i]);
+}
+
+
+void zero_poly (int poly[]) 
+{
+  int i;
+  for (i = 0; i < NPAR*2; i++) poly[i] = 0;
+}
+
+
+/* multiply by z, i.e., shift right by 1 */
+static void mul_z_poly (int src[])
+{
+  int i;
+  for (i = NPAR*2-1; i > 0; i--) src[i] = src[i-1];
+  src[0] = 0;
+}
+
+
+/* Finds all the roots of an error-locator polynomial with coefficients
+ * Lambda[j] by evaluating Lambda at successive values of alpha. 
+ * 
+ * This can be tested with the decoder's equations case.
+ */
+
+
+void 
+Find_Roots (void)
+{
+  int sum, r, k;	
+  NErrors = 0;
+  
+  for (r = 1; r < 256; r++) {
+    sum = 0;
+    /* evaluate lambda at r */
+    for (k = 0; k < NPAR+1; k++) {
+      sum ^= gmult(gexp[(k*r)%255], Lambda[k]);
+    }
+    if (sum == 0) 
+      { 
+	ErrorLocs[NErrors] = (255-r); NErrors++; 
+	if (DEBUG) fprintf(stderr, "Root found at r = %d, (255-r) = %d\n", r, (255-r));
+      }
+  }
+}
+
+/* Combined Erasure And Error Magnitude Computation 
+ * 
+ * Pass in the codeword, its size in bytes, as well as
+ * an array of any known erasure locations, along the number
+ * of these erasures.
+ * 
+ * Evaluate Omega(actually Psi)/Lambda' at the roots
+ * alpha^(-i) for error locs i. 
+ *
+ * returns 1 if everything ok, or 0 if an out-of-bounds error is found
+ *
+ */
+
+int
+correct_errors_erasures (unsigned char codeword[], 
+			 int csize,
+			 int nerasures,
+			 int erasures[])
+{
+  int r, i, j, err;
+
+  /* If you want to take advantage of erasure correction, be sure to
+     set NErasures and ErasureLocs[] with the locations of erasures. 
+     */
+  NErasures = nerasures;
+  for (i = 0; i < NErasures; i++) ErasureLocs[i] = erasures[i];
+
+  Modified_Berlekamp_Massey();
+  Find_Roots();
+
+
+  if (DEBUG) fprintf(stderr, "RS found %d errors\n", NErrors);
+
+
+  if ((NErrors <= xMaxErrors) && NErrors > 0) { 
+
+    /* first check for illegal error locs */
+    for (r = 0; r < NErrors; r++) {
+      if (ErrorLocs[r] >= csize) {
+	if (DEBUG) fprintf(stderr, "Error loc i=%d outside of codeword length %d\n", i, csize);
+	return(0);
+      }
+    }
+
+    for (r = 0; r < NErrors; r++) {
+      int num, denom;
+      i = ErrorLocs[r];
+      /* evaluate Omega at alpha^(-i) */
+
+      num = 0;
+      for (j = 0; j < NPAR*2; j++) 
+	num ^= gmult(Omega[j], gexp[((255-i)*j)%255]);
+      
+      /* evaluate Lambda' (derivative) at alpha^(-i) ; all odd powers disappear */
+      denom = 0;
+      for (j = 1; j < NPAR*2; j += 2) {
+	denom ^= gmult(Lambda[j], gexp[((255-i)*(j-1)) % 255]);
+      }
+      
+      err = gmult(num, ginv(denom));
+      if (DEBUG) fprintf(stderr, "Error magnitude %#x at loc %d\n", err, csize-i);
+      
+      codeword[csize-i-1] ^= err;
+    }
+    return(1);
+  }
+  else {
+    if (DEBUG && NErrors) fprintf(stderr, "Uncorrectable codeword\n");
+    return(0);
+  }
+}
+
diff --git a/calibrateDialog.ui b/calibrateDialog.ui
new file mode 100644
index 0000000..d13ee5d
--- /dev/null
+++ b/calibrateDialog.ui
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>calDialog</class>
+ <widget class="QDialog" name="calDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>270</width>
+    <height>411</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QGroupBox" name="groupBoxA">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>120</width>
+     <height>195</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Channel A</string>
+   </property>
+   <widget class="QPushButton" name="Low_A">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>26</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Low Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="High_A">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>66</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>High Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Both_A">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>106</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Both Tones</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Stop_A">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>146</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Stop TX</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBoxB">
+   <property name="geometry">
+    <rect>
+     <x>140</x>
+     <y>10</y>
+     <width>120</width>
+     <height>195</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Channel B</string>
+   </property>
+   <property name="flat">
+    <bool>false</bool>
+   </property>
+   <widget class="QPushButton" name="Low_B">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>26</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Low Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="High_B">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>66</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>High Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Both_B">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>106</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Both Tones</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Stop_B">
+    <property name="geometry">
+     <rect>
+      <x>28</x>
+      <y>146</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Stop TX</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox">
+   <property name="geometry">
+    <rect>
+     <x>10</x>
+     <y>210</y>
+     <width>120</width>
+     <height>195</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Channel C</string>
+   </property>
+   <widget class="QPushButton" name="High_C">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>70</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>High Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Both_C">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>110</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Both Tones</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Low_C">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>30</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Low Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Stop_C">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>150</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Stop TX</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_2">
+   <property name="geometry">
+    <rect>
+     <x>140</x>
+     <y>210</y>
+     <width>120</width>
+     <height>195</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string>Channel D</string>
+   </property>
+   <widget class="QPushButton" name="High_D">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>70</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>High Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Both_D">
+    <property name="geometry">
+     <rect>
+      <x>25</x>
+      <y>110</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Both Tones</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Low_D">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>30</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Low Tone</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="Stop_D">
+    <property name="geometry">
+     <rect>
+      <x>26</x>
+      <y>150</y>
+      <width>75</width>
+      <height>23</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Stop TX</string>
+    </property>
+   </widget>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+ <slots>
+  <slot>buttonClick()</slot>
+ </slots>
+</ui>
diff --git a/config b/config
new file mode 100644
index 0000000..1c75084
--- /dev/null
+++ b/config
@@ -0,0 +1,9 @@
+[core]
+	repositoryformatversion = 0
+	filemode = false
+	bare = true
+	symlinks = false
+	ignorecase = true
+[remote "origin"]
+	url = ssh://git@vps1.g8bpq.net:7322/home/git/QtSM
+	fetch = +refs/heads/*:refs/remotes/origin/*
diff --git a/description b/description
new file mode 100644
index 0000000..498b267
--- /dev/null
+++ b/description
@@ -0,0 +1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/devicesDialog.ui b/devicesDialog.ui
new file mode 100644
index 0000000..8fcef31
--- /dev/null
+++ b/devicesDialog.ui
@@ -0,0 +1,885 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>devicesDialog</class>
+ <widget class="QDialog" name="devicesDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>535</width>
+    <height>698</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <widget class="QScrollArea" name="scrollArea">
+   <property name="geometry">
+    <rect>
+     <x>5</x>
+     <y>10</y>
+     <width>512</width>
+     <height>671</height>
+    </rect>
+   </property>
+   <property name="verticalScrollBarPolicy">
+    <enum>Qt::ScrollBarAsNeeded</enum>
+   </property>
+   <property name="horizontalScrollBarPolicy">
+    <enum>Qt::ScrollBarAsNeeded</enum>
+   </property>
+   <property name="widgetResizable">
+    <bool>false</bool>
+   </property>
+   <widget class="QWidget" name="scrollAreaWidgetContents">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>0</y>
+      <width>508</width>
+      <height>668</height>
+     </rect>
+    </property>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="geometry">
+      <rect>
+       <x>5</x>
+       <y>10</y>
+       <width>541</width>
+       <height>331</height>
+      </rect>
+     </property>
+     <property name="title">
+      <string>Sound Card</string>
+     </property>
+     <widget class="QComboBox" name="outputDevice">
+      <property name="geometry">
+       <rect>
+        <x>108</x>
+        <y>25</y>
+        <width>261</width>
+        <height>22</height>
+       </rect>
+      </property>
+      <property name="editable">
+       <bool>true</bool>
+      </property>
+     </widget>
+     <widget class="QComboBox" name="inputDevice">
+      <property name="geometry">
+       <rect>
+        <x>108</x>
+        <y>55</y>
+        <width>261</width>
+        <height>22</height>
+       </rect>
+      </property>
+      <property name="editable">
+       <bool>true</bool>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label">
+      <property name="geometry">
+       <rect>
+        <x>13</x>
+        <y>25</y>
+        <width>91</width>
+        <height>19</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>OutputDevice</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_2">
+      <property name="geometry">
+       <rect>
+        <x>13</x>
+        <y>55</y>
+        <width>71</width>
+        <height>19</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Input Device</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="txRotation">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>204</y>
+        <width>101</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>TX Rotation</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="colourWaterfall">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>254</y>
+        <width>231</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Colour Waterfall</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="stopWFonMinimize">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>279</y>
+        <width>251</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Stop Waterfall on Minimize</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="minimizeonStart">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>304</y>
+        <width>251</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Minimize window on startup</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="txSamplerate">
+      <property name="geometry">
+       <rect>
+        <x>108</x>
+        <y>124</y>
+        <width>63</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>12000</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="rxSamplerate">
+      <property name="geometry">
+       <rect>
+        <x>304</x>
+        <y>124</y>
+        <width>63</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>12000</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_6">
+      <property name="geometry">
+       <rect>
+        <x>13</x>
+        <y>125</y>
+        <width>91</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>TX SampleRate</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_7">
+      <property name="geometry">
+       <rect>
+        <x>190</x>
+        <y>125</y>
+        <width>91</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>RX SampleRate</string>
+      </property>
+     </widget>
+     <widget class="QComboBox" name="Modem_1_Chan">
+      <property name="geometry">
+       <rect>
+        <x>70</x>
+        <y>164</y>
+        <width>86</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <item>
+       <property name="text">
+        <string>None</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Left/Mono</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Right</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string/>
+       </property>
+      </item>
+     </widget>
+     <widget class="QLabel" name="label_12">
+      <property name="geometry">
+       <rect>
+        <x>12</x>
+        <y>166</y>
+        <width>61</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Modem 1</string>
+      </property>
+     </widget>
+     <widget class="QComboBox" name="Modem_2_Chan">
+      <property name="geometry">
+       <rect>
+        <x>180</x>
+        <y>164</y>
+        <width>86</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <item>
+       <property name="text">
+        <string>None</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Left/Mono</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Right</string>
+       </property>
+      </item>
+     </widget>
+     <widget class="QLabel" name="label_13">
+      <property name="geometry">
+       <rect>
+        <x>165</x>
+        <y>166</y>
+        <width>21</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>2</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="singleChannelOutput">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>229</y>
+        <width>221</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Single Channel Output</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="DualPTT">
+      <property name="geometry">
+       <rect>
+        <x>140</x>
+        <y>201</y>
+        <width>91</width>
+        <height>21</height>
+       </rect>
+      </property>
+      <property name="toolTip">
+       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use separate PTT signals for the two Modems. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+      </property>
+      <property name="text">
+       <string>Dual PTT</string>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="ALSA">
+      <property name="geometry">
+       <rect>
+        <x>30</x>
+        <y>90</y>
+        <width>71</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>ALSA</string>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="OSS">
+      <property name="geometry">
+       <rect>
+        <x>100</x>
+        <y>90</y>
+        <width>61</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>OSS</string>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="PULSE">
+      <property name="geometry">
+       <rect>
+        <x>168</x>
+        <y>90</y>
+        <width>91</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Pulse Audio</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="multiCore">
+      <property name="geometry">
+       <rect>
+        <x>260</x>
+        <y>205</y>
+        <width>191</width>
+        <height>17</height>
+       </rect>
+      </property>
+      <property name="toolTip">
+       <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to run each modem in a separate thread. This may improve performace on multicore processors like the Pi3 and 4 but will reduce performance on a single core procssor&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+      </property>
+      <property name="text">
+       <string>use multiple threads</string>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="UDP">
+      <property name="geometry">
+       <rect>
+        <x>334</x>
+        <y>90</y>
+        <width>51</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>UDP   </string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="UDPPort">
+      <property name="geometry">
+       <rect>
+        <x>434</x>
+        <y>90</y>
+        <width>41</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>8888</string>
+      </property>
+     </widget>
+     <widget class="QComboBox" name="Modem_3_Chan">
+      <property name="geometry">
+       <rect>
+        <x>290</x>
+        <y>164</y>
+        <width>86</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <item>
+       <property name="text">
+        <string>None</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Left/Mono</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Right</string>
+       </property>
+      </item>
+     </widget>
+     <widget class="QLabel" name="label_14">
+      <property name="geometry">
+       <rect>
+        <x>272</x>
+        <y>166</y>
+        <width>21</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>3</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_15">
+      <property name="geometry">
+       <rect>
+        <x>385</x>
+        <y>166</y>
+        <width>21</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>4</string>
+      </property>
+     </widget>
+     <widget class="QComboBox" name="Modem_4_Chan">
+      <property name="geometry">
+       <rect>
+        <x>400</x>
+        <y>164</y>
+        <width>86</width>
+        <height>20</height>
+       </rect>
+      </property>
+      <item>
+       <property name="text">
+        <string>None</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Left/Mono</string>
+       </property>
+      </item>
+      <item>
+       <property name="text">
+        <string>Right</string>
+       </property>
+      </item>
+     </widget>
+     <widget class="QLabel" name="label_8">
+      <property name="geometry">
+       <rect>
+        <x>384</x>
+        <y>92</y>
+        <width>51</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Port</string>
+      </property>
+     </widget>
+    </widget>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="geometry">
+      <rect>
+       <x>10</x>
+       <y>360</y>
+       <width>481</width>
+       <height>101</height>
+      </rect>
+     </property>
+     <property name="title">
+      <string>Server Setup</string>
+     </property>
+     <widget class="QLabel" name="label_3">
+      <property name="geometry">
+       <rect>
+        <x>22</x>
+        <y>24</y>
+        <width>121</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>AGWPE Server Port</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="AGWPort">
+      <property name="geometry">
+       <rect>
+        <x>160</x>
+        <y>24</y>
+        <width>47</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="KISSPort">
+      <property name="geometry">
+       <rect>
+        <x>160</x>
+        <y>48</y>
+        <width>47</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_4">
+      <property name="geometry">
+       <rect>
+        <x>22</x>
+        <y>48</y>
+        <width>111</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>KISS Server Port</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="AGWEnabled">
+      <property name="geometry">
+       <rect>
+        <x>230</x>
+        <y>22</y>
+        <width>70</width>
+        <height>25</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Enabled</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="KISSEnabled">
+      <property name="geometry">
+       <rect>
+        <x>230</x>
+        <y>46</y>
+        <width>70</width>
+        <height>23</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Enabled</string>
+      </property>
+     </widget>
+     <widget class="QCheckBox" name="UDPEnabled">
+      <property name="geometry">
+       <rect>
+        <x>380</x>
+        <y>74</y>
+        <width>70</width>
+        <height>23</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Enabled</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="UDPTXHost">
+      <property name="geometry">
+       <rect>
+        <x>160</x>
+        <y>73</y>
+        <width>111</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_9">
+      <property name="geometry">
+       <rect>
+        <x>280</x>
+        <y>74</y>
+        <width>31</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Port</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="UDPTXPort">
+      <property name="geometry">
+       <rect>
+        <x>320</x>
+        <y>74</y>
+        <width>47</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_10">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>74</y>
+        <width>111</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>UDP Sound Server Host</string>
+      </property>
+     </widget>
+    </widget>
+    <widget class="QGroupBox" name="groupBox_3">
+     <property name="geometry">
+      <rect>
+       <x>10</x>
+       <y>470</y>
+       <width>481</width>
+       <height>151</height>
+      </rect>
+     </property>
+     <property name="title">
+      <string>PTT Port</string>
+     </property>
+     <widget class="QComboBox" name="PTTPort">
+      <property name="geometry">
+       <rect>
+        <x>122</x>
+        <y>20</y>
+        <width>81</width>
+        <height>22</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="label_5">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>22</y>
+        <width>101</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>Select PTT Port</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="PTTOnLab">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>82</y>
+        <width>83</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>PTT On String</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="PTTOn">
+      <property name="geometry">
+       <rect>
+        <x>122</x>
+        <y>80</y>
+        <width>247</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="PTTOff">
+      <property name="geometry">
+       <rect>
+        <x>122</x>
+        <y>112</y>
+        <width>247</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="PTTOffLab">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>112</y>
+        <width>83</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>PTT Off String</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="GPIOLab">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>53</y>
+        <width>83</width>
+        <height>16</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>GPIO Pin Left</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="GPIOLeft">
+      <property name="geometry">
+       <rect>
+        <x>122</x>
+        <y>50</y>
+        <width>25</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="GPIORight">
+      <property name="geometry">
+       <rect>
+        <x>262</x>
+        <y>50</y>
+        <width>25</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="GPIOLab2">
+      <property name="geometry">
+       <rect>
+        <x>165</x>
+        <y>50</y>
+        <width>83</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>GPIO Pin Right</string>
+      </property>
+     </widget>
+     <widget class="QLabel" name="CATLabel">
+      <property name="geometry">
+       <rect>
+        <x>18</x>
+        <y>50</y>
+        <width>83</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>CAT Port Speed</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="CATSpeed">
+      <property name="geometry">
+       <rect>
+        <x>122</x>
+        <y>50</y>
+        <width>47</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="RTSDTR">
+      <property name="geometry">
+       <rect>
+        <x>220</x>
+        <y>22</y>
+        <width>86</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>RTS/DTR</string>
+      </property>
+     </widget>
+     <widget class="QRadioButton" name="CAT">
+      <property name="geometry">
+       <rect>
+        <x>315</x>
+        <y>22</y>
+        <width>53</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>CAT</string>
+      </property>
+     </widget>
+     <widget class="QLineEdit" name="VIDPID">
+      <property name="geometry">
+       <rect>
+        <x>120</x>
+        <y>50</y>
+        <width>96</width>
+        <height>20</height>
+       </rect>
+      </property>
+     </widget>
+     <widget class="QLabel" name="CM108Label">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>50</y>
+        <width>95</width>
+        <height>18</height>
+       </rect>
+      </property>
+      <property name="text">
+       <string>CM108 VID/PID</string>
+      </property>
+     </widget>
+    </widget>
+    <widget class="QWidget" name="layoutWidget">
+     <property name="geometry">
+      <rect>
+       <x>140</x>
+       <y>626</y>
+       <width>215</width>
+       <height>33</height>
+      </rect>
+     </property>
+     <layout class="QHBoxLayout">
+      <property name="spacing">
+       <number>6</number>
+      </property>
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QPushButton" name="okButton">
+        <property name="text">
+         <string>OK</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="cancelButton">
+        <property name="text">
+         <string>Cancel</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </widget>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/ecc.h b/ecc.h
new file mode 100644
index 0000000..6a7a393
--- /dev/null
+++ b/ecc.h
@@ -0,0 +1,102 @@
+/* Reed Solomon Coding for glyphs
+ * Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+ *
+ * This software library is licensed under terms of the GNU GENERAL
+ * PUBLIC LICENSE
+ *
+ * RSCODE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RSCODE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Rscode.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Source code is available at http://rscode.sourceforge.net
+ *
+ * Commercial licensing is available under a separate license, please
+ * contact author for details.
+ *
+ */
+
+/****************************************************************
+  
+  Below is NPAR, the only compile-time parameter you should have to
+  modify.
+  
+  It is the number of parity bytes which will be appended to
+  your data to create a codeword.
+
+  Note that the maximum codeword size is 255, so the
+  sum of your message length plus parity should be less than
+  or equal to this maximum limit.
+
+  In practice, you will get slooow error correction and decoding
+  if you use more than a reasonably small number of parity bytes.
+  (say, 10 or 20)
+
+  ****************************************************************/
+
+#define MAXNPAR 64		//	Sets size of static tables
+
+extern int NPAR;		// Currently used number
+
+/****************************************************************/
+
+
+
+
+#define TRUE 1
+#define FALSE 0
+
+typedef unsigned long BIT32;
+typedef unsigned short BIT16;
+
+/* **************************************************************** */
+
+/* Maximum degree of various polynomials. */
+#define MAXDEG (MAXNPAR*2)
+
+/*************************************/
+/* Encoder parity bytes */
+extern int pBytes[MAXDEG];
+
+/* Decoder syndrome bytes */
+extern int synBytes[MAXDEG];
+
+/* print debugging info */
+extern int DEBUG;
+
+/* Reed Solomon encode/decode routines */
+void initialize_ecc (void);
+int check_syndrome (void);
+void decode_data (unsigned char data[], int nbytes);
+void encode_data (unsigned char msg[], int nbytes, unsigned char dst[]);
+
+/* CRC-CCITT checksum generator */
+BIT16 crc_ccitt(unsigned char *msg, int len);
+
+/* galois arithmetic tables */
+extern int gexp[];
+extern int glog[];
+
+void init_galois_tables (void);
+int ginv(int elt); 
+int gmult(int a, int b);
+
+
+/* Error location routines */
+int correct_errors_erasures (unsigned char codeword[], int csize,int nerasures, int erasures[]);
+
+/* polynomial arithmetic */
+void add_polys(int dst[], int src[]) ;
+void scale_poly(int k, int poly[]);
+void mult_polys(int dst[], int p1[], int p2[]);
+
+void copy_poly(int dst[], int src[]);
+void zero_poly(int poly[]);
diff --git a/fftw3.f b/fftw3.f
new file mode 100644
index 0000000..72d1aaf
--- /dev/null
+++ b/fftw3.f
@@ -0,0 +1,72 @@
+      INTEGER FFTW_R2HC
+      PARAMETER (FFTW_R2HC=0)
+      INTEGER FFTW_HC2R
+      PARAMETER (FFTW_HC2R=1)
+      INTEGER FFTW_DHT
+      PARAMETER (FFTW_DHT=2)
+      INTEGER FFTW_REDFT00
+      PARAMETER (FFTW_REDFT00=3)
+      INTEGER FFTW_REDFT01
+      PARAMETER (FFTW_REDFT01=4)
+      INTEGER FFTW_REDFT10
+      PARAMETER (FFTW_REDFT10=5)
+      INTEGER FFTW_REDFT11
+      PARAMETER (FFTW_REDFT11=6)
+      INTEGER FFTW_RODFT00
+      PARAMETER (FFTW_RODFT00=7)
+      INTEGER FFTW_RODFT01
+      PARAMETER (FFTW_RODFT01=8)
+      INTEGER FFTW_RODFT10
+      PARAMETER (FFTW_RODFT10=9)
+      INTEGER FFTW_RODFT11
+      PARAMETER (FFTW_RODFT11=10)
+      INTEGER FFTW_FORWARD
+      PARAMETER (FFTW_FORWARD=-1)
+      INTEGER FFTW_BACKWARD
+      PARAMETER (FFTW_BACKWARD=+1)
+      INTEGER FFTW_MEASURE
+      PARAMETER (FFTW_MEASURE=0)
+      INTEGER FFTW_DESTROY_INPUT
+      PARAMETER (FFTW_DESTROY_INPUT=1)
+      INTEGER FFTW_UNALIGNED
+      PARAMETER (FFTW_UNALIGNED=2)
+      INTEGER FFTW_CONSERVE_MEMORY
+      PARAMETER (FFTW_CONSERVE_MEMORY=4)
+      INTEGER FFTW_EXHAUSTIVE
+      PARAMETER (FFTW_EXHAUSTIVE=8)
+      INTEGER FFTW_PRESERVE_INPUT
+      PARAMETER (FFTW_PRESERVE_INPUT=16)
+      INTEGER FFTW_PATIENT
+      PARAMETER (FFTW_PATIENT=32)
+      INTEGER FFTW_ESTIMATE
+      PARAMETER (FFTW_ESTIMATE=64)
+      INTEGER FFTW_WISDOM_ONLY
+      PARAMETER (FFTW_WISDOM_ONLY=2097152)
+      INTEGER FFTW_ESTIMATE_PATIENT
+      PARAMETER (FFTW_ESTIMATE_PATIENT=128)
+      INTEGER FFTW_BELIEVE_PCOST
+      PARAMETER (FFTW_BELIEVE_PCOST=256)
+      INTEGER FFTW_NO_DFT_R2HC
+      PARAMETER (FFTW_NO_DFT_R2HC=512)
+      INTEGER FFTW_NO_NONTHREADED
+      PARAMETER (FFTW_NO_NONTHREADED=1024)
+      INTEGER FFTW_NO_BUFFERING
+      PARAMETER (FFTW_NO_BUFFERING=2048)
+      INTEGER FFTW_NO_INDIRECT_OP
+      PARAMETER (FFTW_NO_INDIRECT_OP=4096)
+      INTEGER FFTW_ALLOW_LARGE_GENERIC
+      PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192)
+      INTEGER FFTW_NO_RANK_SPLITS
+      PARAMETER (FFTW_NO_RANK_SPLITS=16384)
+      INTEGER FFTW_NO_VRANK_SPLITS
+      PARAMETER (FFTW_NO_VRANK_SPLITS=32768)
+      INTEGER FFTW_NO_VRECURSE
+      PARAMETER (FFTW_NO_VRECURSE=65536)
+      INTEGER FFTW_NO_SIMD
+      PARAMETER (FFTW_NO_SIMD=131072)
+      INTEGER FFTW_NO_SLOW
+      PARAMETER (FFTW_NO_SLOW=262144)
+      INTEGER FFTW_NO_FIXED_RADIX_LARGE_N
+      PARAMETER (FFTW_NO_FIXED_RADIX_LARGE_N=524288)
+      INTEGER FFTW_ALLOW_PRUNING
+      PARAMETER (FFTW_ALLOW_PRUNING=1048576)
diff --git a/fftw3.h b/fftw3.h
new file mode 100644
index 0000000..11d0cba
--- /dev/null
+++ b/fftw3.h
@@ -0,0 +1,415 @@
+/*
+ * Copyright (c) 2003, 2007-14 Matteo Frigo
+ * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
+ *
+ * The following statement of license applies *only* to this header file,
+ * and *not* to the other files distributed with FFTW or derived therefrom:
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/***************************** NOTE TO USERS *********************************
+ *
+ *                 THIS IS A HEADER FILE, NOT A MANUAL
+ *
+ *    If you want to know how to use FFTW, please read the manual,
+ *    online at http://www.fftw.org/doc/ and also included with FFTW.
+ *    For a quick start, see the manual's tutorial section.
+ *
+ *   (Reading header files to learn how to use a library is a habit
+ *    stemming from code lacking a proper manual.  Arguably, it's a
+ *    *bad* habit in most cases, because header files can contain
+ *    interfaces that are not part of the public, stable API.)
+ *
+ ****************************************************************************/
+
+#ifndef FFTW3_H
+#define FFTW3_H
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/* If <complex.h> is included, use the C99 complex type.  Otherwise
+   define a type bit-compatible with C99 complex */
+#if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
+#  define FFTW_DEFINE_COMPLEX(R, C) typedef R _Complex C
+#else
+#  define FFTW_DEFINE_COMPLEX(R, C) typedef R C[2]
+#endif
+
+#define FFTW_CONCAT(prefix, name) prefix ## name
+#define FFTW_MANGLE_DOUBLE(name) FFTW_CONCAT(fftw_, name)
+#define FFTW_MANGLE_FLOAT(name) FFTW_CONCAT(fftwf_, name)
+#define FFTW_MANGLE_LONG_DOUBLE(name) FFTW_CONCAT(fftwl_, name)
+#define FFTW_MANGLE_QUAD(name) FFTW_CONCAT(fftwq_, name)
+
+/* IMPORTANT: for Windows compilers, you should add a line
+*/
+//#define FFTW_DLL
+/*
+   here and in kernel/ifftw.h if you are compiling/using FFTW as a
+   DLL, in order to do the proper importing/exporting, or
+   alternatively compile with -DFFTW_DLL or the equivalent
+   command-line flag.  This is not necessary under MinGW/Cygwin, where
+   libtool does the imports/exports automatically. */
+#if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__))
+   /* annoying Windows syntax for shared-library declarations */
+#  if defined(COMPILING_FFTW) /* defined in api.h when compiling FFTW */
+#    define FFTW_EXTERN extern __declspec(dllexport) 
+#  else /* user is calling FFTW; import symbol */
+#    define FFTW_EXTERN extern __declspec(dllimport) 
+#  endif
+#else
+#  define FFTW_EXTERN extern
+#endif
+
+enum fftw_r2r_kind_do_not_use_me {
+     FFTW_R2HC=0, FFTW_HC2R=1, FFTW_DHT=2,
+     FFTW_REDFT00=3, FFTW_REDFT01=4, FFTW_REDFT10=5, FFTW_REDFT11=6,
+     FFTW_RODFT00=7, FFTW_RODFT01=8, FFTW_RODFT10=9, FFTW_RODFT11=10
+};
+
+struct fftw_iodim_do_not_use_me {
+     int n;                     /* dimension size */
+     int is;			/* input stride */
+     int os;			/* output stride */
+};
+
+#include <stddef.h> /* for ptrdiff_t */
+struct fftw_iodim64_do_not_use_me {
+     ptrdiff_t n;                     /* dimension size */
+     ptrdiff_t is;			/* input stride */
+     ptrdiff_t os;			/* output stride */
+};
+
+typedef void (*fftw_write_char_func_do_not_use_me)(char c, void *);
+typedef int (*fftw_read_char_func_do_not_use_me)(void *);
+
+/*
+  huge second-order macro that defines prototypes for all API
+  functions.  We expand this macro for each supported precision
+ 
+  X: name-mangling macro
+  R: real data type
+  C: complex data type
+*/
+
+#define FFTW_DEFINE_API(X, R, C)					   \
+									   \
+FFTW_DEFINE_COMPLEX(R, C);						   \
+									   \
+typedef struct X(plan_s) *X(plan);					   \
+									   \
+typedef struct fftw_iodim_do_not_use_me X(iodim);			   \
+typedef struct fftw_iodim64_do_not_use_me X(iodim64);			   \
+									   \
+typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind);			   \
+									   \
+typedef fftw_write_char_func_do_not_use_me X(write_char_func);		   \
+typedef fftw_read_char_func_do_not_use_me X(read_char_func);		   \
+                                                                           \
+FFTW_EXTERN void X(execute)(const X(plan) p);                              \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft)(int rank, const int *n,			   \
+		    C *in, C *out, int sign, unsigned flags);		   \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft_1d)(int n, C *in, C *out, int sign,	   \
+		       unsigned flags);					   \
+FFTW_EXTERN X(plan) X(plan_dft_2d)(int n0, int n1,			   \
+		       C *in, C *out, int sign, unsigned flags);	   \
+FFTW_EXTERN X(plan) X(plan_dft_3d)(int n0, int n1, int n2,		   \
+		       C *in, C *out, int sign, unsigned flags);	   \
+									   \
+FFTW_EXTERN X(plan) X(plan_many_dft)(int rank, const int *n,		   \
+                         int howmany,					   \
+                         C *in, const int *inembed,			   \
+                         int istride, int idist,			   \
+                         C *out, const int *onembed,			   \
+                         int ostride, int odist,			   \
+                         int sign, unsigned flags);			   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru_dft)(int rank, const X(iodim) *dims,	   \
+			 int howmany_rank,				   \
+			 const X(iodim) *howmany_dims,			   \
+			 C *in, C *out,					   \
+			 int sign, unsigned flags);			   \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \
+			 int howmany_rank,				   \
+			 const X(iodim) *howmany_dims,			   \
+			 R *ri, R *ii, R *ro, R *io,			   \
+			 unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru64_dft)(int rank,			   \
+                         const X(iodim64) *dims,			   \
+			 int howmany_rank,				   \
+			 const X(iodim64) *howmany_dims,		   \
+			 C *in, C *out,					   \
+			 int sign, unsigned flags);			   \
+FFTW_EXTERN X(plan) X(plan_guru64_split_dft)(int rank,			   \
+                         const X(iodim64) *dims,			   \
+			 int howmany_rank,				   \
+			 const X(iodim64) *howmany_dims,		   \
+			 R *ri, R *ii, R *ro, R *io,			   \
+			 unsigned flags);				   \
+									   \
+FFTW_EXTERN void X(execute_dft)(const X(plan) p, C *in, C *out);	   \
+FFTW_EXTERN void X(execute_split_dft)(const X(plan) p, R *ri, R *ii,	   \
+                                      R *ro, R *io);			   \
+									   \
+FFTW_EXTERN X(plan) X(plan_many_dft_r2c)(int rank, const int *n,	   \
+                             int howmany,				   \
+                             R *in, const int *inembed,			   \
+                             int istride, int idist,			   \
+                             C *out, const int *onembed,		   \
+                             int ostride, int odist,			   \
+                             unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft_r2c)(int rank, const int *n,		   \
+                        R *in, C *out, unsigned flags);			   \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_2d)(int n0, int n1,			   \
+			   R *in, C *out, unsigned flags);		   \
+FFTW_EXTERN X(plan) X(plan_dft_r2c_3d)(int n0, int n1,			   \
+			   int n2,					   \
+			   R *in, C *out, unsigned flags);		   \
+									   \
+									   \
+FFTW_EXTERN X(plan) X(plan_many_dft_c2r)(int rank, const int *n,	   \
+			     int howmany,				   \
+			     C *in, const int *inembed,			   \
+			     int istride, int idist,			   \
+			     R *out, const int *onembed,		   \
+			     int ostride, int odist,			   \
+			     unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft_c2r)(int rank, const int *n,		   \
+                        C *in, R *out, unsigned flags);			   \
+									   \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_2d)(int n0, int n1,			   \
+			   C *in, R *out, unsigned flags);		   \
+FFTW_EXTERN X(plan) X(plan_dft_c2r_3d)(int n0, int n1,			   \
+			   int n2,					   \
+			   C *in, R *out, unsigned flags);		   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims,   \
+			     int howmany_rank,				   \
+			     const X(iodim) *howmany_dims,		   \
+			     R *in, C *out,				   \
+			     unsigned flags);				   \
+FFTW_EXTERN X(plan) X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims,   \
+			     int howmany_rank,				   \
+			     const X(iodim) *howmany_dims,		   \
+			     C *in, R *out,				   \
+			     unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft_r2c)(				   \
+                             int rank, const X(iodim) *dims,		   \
+			     int howmany_rank,				   \
+			     const X(iodim) *howmany_dims,		   \
+			     R *in, R *ro, R *io,			   \
+			     unsigned flags);				   \
+FFTW_EXTERN X(plan) X(plan_guru_split_dft_c2r)(				   \
+                             int rank, const X(iodim) *dims,		   \
+			     int howmany_rank,				   \
+			     const X(iodim) *howmany_dims,		   \
+			     R *ri, R *ii, R *out,			   \
+			     unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru64_dft_r2c)(int rank,			   \
+                             const X(iodim64) *dims,			   \
+			     int howmany_rank,				   \
+			     const X(iodim64) *howmany_dims,		   \
+			     R *in, C *out,				   \
+			     unsigned flags);				   \
+FFTW_EXTERN X(plan) X(plan_guru64_dft_c2r)(int rank,			   \
+                             const X(iodim64) *dims,			   \
+			     int howmany_rank,				   \
+			     const X(iodim64) *howmany_dims,		   \
+			     C *in, R *out,				   \
+			     unsigned flags);				   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru64_split_dft_r2c)(			   \
+                             int rank, const X(iodim64) *dims,		   \
+			     int howmany_rank,				   \
+			     const X(iodim64) *howmany_dims,		   \
+			     R *in, R *ro, R *io,			   \
+			     unsigned flags);				   \
+FFTW_EXTERN X(plan) X(plan_guru64_split_dft_c2r)(			   \
+                             int rank, const X(iodim64) *dims,		   \
+			     int howmany_rank,				   \
+			     const X(iodim64) *howmany_dims,		   \
+			     R *ri, R *ii, R *out,			   \
+			     unsigned flags);				   \
+									   \
+FFTW_EXTERN void X(execute_dft_r2c)(const X(plan) p, R *in, C *out);	   \
+FFTW_EXTERN void X(execute_dft_c2r)(const X(plan) p, C *in, R *out);	   \
+									   \
+FFTW_EXTERN void X(execute_split_dft_r2c)(const X(plan) p,		   \
+                                          R *in, R *ro, R *io);		   \
+FFTW_EXTERN void X(execute_split_dft_c2r)(const X(plan) p,		   \
+                                          R *ri, R *ii, R *out);	   \
+									   \
+FFTW_EXTERN X(plan) X(plan_many_r2r)(int rank, const int *n,		   \
+                         int howmany,					   \
+                         R *in, const int *inembed,			   \
+                         int istride, int idist,			   \
+                         R *out, const int *onembed,			   \
+                         int ostride, int odist,			   \
+                         const X(r2r_kind) *kind, unsigned flags);	   \
+									   \
+FFTW_EXTERN X(plan) X(plan_r2r)(int rank, const int *n, R *in, R *out,	   \
+                    const X(r2r_kind) *kind, unsigned flags);		   \
+									   \
+FFTW_EXTERN X(plan) X(plan_r2r_1d)(int n, R *in, R *out,		   \
+                       X(r2r_kind) kind, unsigned flags);		   \
+FFTW_EXTERN X(plan) X(plan_r2r_2d)(int n0, int n1, R *in, R *out,	   \
+                       X(r2r_kind) kind0, X(r2r_kind) kind1,		   \
+                       unsigned flags);					   \
+FFTW_EXTERN X(plan) X(plan_r2r_3d)(int n0, int n1, int n2,		   \
+                       R *in, R *out, X(r2r_kind) kind0,		   \
+                       X(r2r_kind) kind1, X(r2r_kind) kind2,		   \
+                       unsigned flags);					   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru_r2r)(int rank, const X(iodim) *dims,	   \
+                         int howmany_rank,				   \
+                         const X(iodim) *howmany_dims,			   \
+                         R *in, R *out,					   \
+                         const X(r2r_kind) *kind, unsigned flags);	   \
+									   \
+FFTW_EXTERN X(plan) X(plan_guru64_r2r)(int rank, const X(iodim64) *dims,   \
+                         int howmany_rank,				   \
+                         const X(iodim64) *howmany_dims,		   \
+                         R *in, R *out,					   \
+                         const X(r2r_kind) *kind, unsigned flags);	   \
+									   \
+FFTW_EXTERN void X(execute_r2r)(const X(plan) p, R *in, R *out);	   \
+									   \
+FFTW_EXTERN void X(destroy_plan)(X(plan) p);				   \
+FFTW_EXTERN void X(forget_wisdom)(void);				   \
+FFTW_EXTERN void X(cleanup)(void);					   \
+									   \
+FFTW_EXTERN void X(set_timelimit)(double t);				   \
+									   \
+FFTW_EXTERN void X(plan_with_nthreads)(int nthreads);			   \
+FFTW_EXTERN int X(init_threads)(void);					   \
+FFTW_EXTERN void X(cleanup_threads)(void);				   \
+FFTW_EXTERN void X(make_planner_thread_safe)(void);                        \
+									   \
+FFTW_EXTERN int X(export_wisdom_to_filename)(const char *filename);	   \
+FFTW_EXTERN void X(export_wisdom_to_file)(FILE *output_file);		   \
+FFTW_EXTERN char *X(export_wisdom_to_string)(void);			   \
+FFTW_EXTERN void X(export_wisdom)(X(write_char_func) write_char,   	   \
+                                  void *data);				   \
+FFTW_EXTERN int X(import_system_wisdom)(void);				   \
+FFTW_EXTERN int X(import_wisdom_from_filename)(const char *filename);	   \
+FFTW_EXTERN int X(import_wisdom_from_file)(FILE *input_file);		   \
+FFTW_EXTERN int X(import_wisdom_from_string)(const char *input_string);	   \
+FFTW_EXTERN int X(import_wisdom)(X(read_char_func) read_char, void *data); \
+									   \
+FFTW_EXTERN void X(fprint_plan)(const X(plan) p, FILE *output_file);	   \
+FFTW_EXTERN void X(print_plan)(const X(plan) p);			   \
+FFTW_EXTERN char *X(sprint_plan)(const X(plan) p);			   \
+									   \
+FFTW_EXTERN void *X(malloc)(size_t n);					   \
+FFTW_EXTERN R *X(alloc_real)(size_t n);					   \
+FFTW_EXTERN C *X(alloc_complex)(size_t n);				   \
+FFTW_EXTERN void X(free)(void *p);					   \
+									   \
+FFTW_EXTERN void X(flops)(const X(plan) p,				   \
+                          double *add, double *mul, double *fmas);	   \
+FFTW_EXTERN double X(estimate_cost)(const X(plan) p);			   \
+FFTW_EXTERN double X(cost)(const X(plan) p);				   \
+									   \
+FFTW_EXTERN int X(alignment_of)(R *p);                                     \
+FFTW_EXTERN const char X(version)[];                                       \
+FFTW_EXTERN const char X(cc)[];						   \
+FFTW_EXTERN const char X(codelet_optim)[];
+
+
+/* end of FFTW_DEFINE_API macro */
+
+FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex)
+FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex)
+FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex)
+
+/* __float128 (quad precision) is a gcc extension on i386, x86_64, and ia64
+   for gcc >= 4.6 (compiled in FFTW with --enable-quad-precision) */
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) \
+ && !(defined(__ICC) || defined(__INTEL_COMPILER) || defined(__CUDACC__) || defined(__PGI)) \
+ && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__))
+#  if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
+/* note: __float128 is a typedef, which is not supported with the _Complex
+         keyword in gcc, so instead we use this ugly __attribute__ version.
+         However, we can't simply pass the __attribute__ version to
+         FFTW_DEFINE_API because the __attribute__ confuses gcc in pointer
+         types.  Hence redefining FFTW_DEFINE_COMPLEX.  Ugh. */
+#    undef FFTW_DEFINE_COMPLEX
+#    define FFTW_DEFINE_COMPLEX(R, C) typedef _Complex float __attribute__((mode(TC))) C
+#  endif
+FFTW_DEFINE_API(FFTW_MANGLE_QUAD, __float128, fftwq_complex)
+#endif
+
+#define FFTW_FORWARD (-1)
+#define FFTW_BACKWARD (+1)
+
+#define FFTW_NO_TIMELIMIT (-1.0)
+
+/* documented flags */
+#define FFTW_MEASURE (0U)
+#define FFTW_DESTROY_INPUT (1U << 0)
+#define FFTW_UNALIGNED (1U << 1)
+#define FFTW_CONSERVE_MEMORY (1U << 2)
+#define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */
+#define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */
+#define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */
+#define FFTW_ESTIMATE (1U << 6)
+#define FFTW_WISDOM_ONLY (1U << 21)
+
+/* undocumented beyond-guru flags */
+#define FFTW_ESTIMATE_PATIENT (1U << 7)
+#define FFTW_BELIEVE_PCOST (1U << 8)
+#define FFTW_NO_DFT_R2HC (1U << 9)
+#define FFTW_NO_NONTHREADED (1U << 10)
+#define FFTW_NO_BUFFERING (1U << 11)
+#define FFTW_NO_INDIRECT_OP (1U << 12)
+#define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */
+#define FFTW_NO_RANK_SPLITS (1U << 14)
+#define FFTW_NO_VRANK_SPLITS (1U << 15)
+#define FFTW_NO_VRECURSE (1U << 16)
+#define FFTW_NO_SIMD (1U << 17)
+#define FFTW_NO_SLOW (1U << 18)
+#define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19)
+#define FFTW_ALLOW_PRUNING (1U << 20)
+
+#ifdef __cplusplus
+}  /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* FFTW3_H */
diff --git a/filterWindow.ui b/filterWindow.ui
new file mode 100644
index 0000000..8ae441f
--- /dev/null
+++ b/filterWindow.ui
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>673</width>
+    <height>391</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <widget class="QWidget" name="layoutWidget">
+   <property name="geometry">
+    <rect>
+     <x>160</x>
+     <y>345</y>
+     <width>351</width>
+     <height>33</height>
+    </rect>
+   </property>
+   <layout class="QHBoxLayout">
+    <property name="spacing">
+     <number>6</number>
+    </property>
+    <property name="leftMargin">
+     <number>0</number>
+    </property>
+    <property name="topMargin">
+     <number>0</number>
+    </property>
+    <property name="rightMargin">
+     <number>0</number>
+    </property>
+    <property name="bottomMargin">
+     <number>0</number>
+    </property>
+    <item>
+     <widget class="QPushButton" name="okButton">
+      <property name="text">
+       <string>OK</string>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="cancelButton">
+      <property name="text">
+       <string>Cancel</string>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>15</x>
+     <y>15</y>
+     <width>642</width>
+     <height>312</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>TextLabel</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>278</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>96</x>
+     <y>254</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>cancelButton</sender>
+   <signal>clicked()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>369</x>
+     <y>253</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>179</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/galois.c b/galois.c
new file mode 100644
index 0000000..9b8c88a
--- /dev/null
+++ b/galois.c
@@ -0,0 +1,113 @@
+/*****************************
+ * Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+ *
+ * This software library is licensed under terms of the GNU GENERAL
+ * PUBLIC LICENSE
+ *
+ * RSCODE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * RSCODE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Rscode.  If not, see <http://www.gnu.org/licenses/>.
+
+ * Commercial licensing is available under a separate license, please
+ * contact author for details.
+ *
+ * Source code is available at http://rscode.sourceforge.net
+ * 
+ *
+ * Multiplication and Arithmetic on Galois Field GF(256)
+ *
+ * From Mee, Daniel, "Magnetic Recording, Volume III", Ch. 5 by Patel.
+ * 
+ *
+ ******************************/
+ 
+ 
+#include <stdio.h>
+#include <stdlib.h>
+#include "ecc.h"
+
+/* This is one of 14 irreducible polynomials
+ * of degree 8 and cycle length 255. (Ch 5, pp. 275, Magnetic Recording)
+ * The high order 1 bit is implicit */
+/* x^8 + x^4 + x^3 + x^2 + 1 */
+#define PPOLY 0x1D 
+
+
+int gexp[512];
+int glog[256];
+
+
+static void init_exp_table (void);
+
+
+void
+init_galois_tables (void)
+{	
+  /* initialize the table of powers of alpha */
+  init_exp_table();
+}
+
+
+static void
+init_exp_table (void)
+{
+  int i, z;
+  int pinit,p1,p2,p3,p4,p5,p6,p7,p8;
+
+  pinit = p2 = p3 = p4 = p5 = p6 = p7 = p8 = 0;
+  p1 = 1;
+	
+  gexp[0] = 1;
+  gexp[255] = gexp[0];
+  glog[0] = 0;			/* shouldn't log[0] be an error? */
+	
+// Private pp8() As Integer = {1, 0, 1, 1, 1, 0, 0, 0, 1} 'specify irreducible polynomial coeffts */
+
+  for (i = 1; i < 256; i++) {
+    pinit = p8;
+    p8 = p7;
+    p7 = p6;
+    p6 = p5;
+    p5 = p4 ^ pinit;
+    p4 = p3 ^ pinit;
+    p3 = p2 ^ pinit;
+    p2 = p1;
+    p1 = pinit;
+    gexp[i] = p1 + p2*2 + p3*4 + p4*8 + p5*16 + p6*32 + p7*64 + p8*128;
+    gexp[i+255] = gexp[i];
+  }
+	
+  for (i = 1; i < 256; i++) {
+    for (z = 0; z < 256; z++) {
+      if (gexp[z] == i) {
+	glog[i] = z;
+	break;
+      }
+    }
+  }
+}
+
+/* multiplication using logarithms */
+int gmult(int a, int b)
+{
+  int i,j;
+  if (a==0 || b == 0) return (0);
+  i = glog[a];
+  j = glog[b];
+  return (gexp[i+j]);
+}
+		
+
+int ginv (int elt) 
+{ 
+  return (gexp[255-glog[elt]]);
+}
+
diff --git a/globals.h b/globals.h
new file mode 100644
index 0000000..97d93a8
--- /dev/null
+++ b/globals.h
@@ -0,0 +1,337 @@
+// ----------------------------------------------------------------------------
+// globals.h  --  constants, variables, arrays & functions that need to be
+//                  outside of any thread
+//
+// Copyright (C) 2006-2007
+//		Dave Freese, W1HKJ
+// Copyright (C) 2007-2010
+//		Stelios Bounanos, M0GLD
+//
+// This file is part of fldigi.  Adapted in part from code contained in gmfsk
+// source code distribution.
+//
+// Fldigi is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Fldigi is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with fldigi.  If not, see <http://www.gnu.org/licenses/>.
+// ----------------------------------------------------------------------------
+
+#ifndef _GLOBALS_H
+#define _GLOBALS_H
+
+#include <stdint.h>
+//#include <string>
+
+enum state_t {
+	STATE_PAUSE = 0,
+	STATE_RX,
+	STATE_TX,
+	STATE_RESTART,
+	STATE_TUNE,
+	STATE_ABORT,
+	STATE_FLUSH,
+	STATE_NOOP,
+	STATE_EXIT,
+	STATE_ENDED,
+	STATE_IDLE,
+	STATE_NEW_MODEM
+};
+
+enum {
+	MODE_PREV = -2,
+	MODE_NEXT,
+
+	MODE_NULL,
+
+	MODE_CW,
+
+	MODE_CONTESTIA,
+	MODE_CONTESTIA_4_125,   MODE_CONTESTIA_4_250,
+	MODE_CONTESTIA_4_500,   MODE_CONTESTIA_4_1000,   MODE_CONTESTIA_4_2000,
+	MODE_CONTESTIA_8_125,   MODE_CONTESTIA_8_250,
+	MODE_CONTESTIA_8_500,   MODE_CONTESTIA_8_1000,   MODE_CONTESTIA_8_2000,
+	MODE_CONTESTIA_16_250,  MODE_CONTESTIA_16_500,
+	MODE_CONTESTIA_16_1000, MODE_CONTESTIA_16_2000,
+	MODE_CONTESTIA_32_1000, MODE_CONTESTIA_32_2000,
+	MODE_CONTESTIA_64_500,  MODE_CONTESTIA_64_1000,  MODE_CONTESTIA_64_2000,
+	MODE_CONTESTIA_FIRST =  MODE_CONTESTIA_4_125,
+	MODE_CONTESTIA_LAST  =  MODE_CONTESTIA_64_2000,
+
+	MODE_DOMINOEXMICRO,
+	MODE_DOMINOEX4,
+	MODE_DOMINOEX5,
+	MODE_DOMINOEX8,
+	MODE_DOMINOEX11,
+	MODE_DOMINOEX16,
+	MODE_DOMINOEX22,
+	MODE_DOMINOEX44,
+	MODE_DOMINOEX88,
+	MODE_DOMINOEX_FIRST = MODE_DOMINOEXMICRO,
+	MODE_DOMINOEX_LAST = MODE_DOMINOEX88,
+
+	MODE_FELDHELL,
+	MODE_SLOWHELL,
+	MODE_HELLX5,
+	MODE_HELLX9,
+	MODE_FSKH245,
+	MODE_FSKH105,
+	MODE_HELL80,
+	MODE_HELL_FIRST = MODE_FELDHELL,
+	MODE_HELL_LAST = MODE_HELL80,
+
+	MODE_MFSK8,
+	MODE_MFSK16,
+	MODE_MFSK32,
+	MODE_MFSK4,
+	MODE_MFSK11,
+	MODE_MFSK22,
+	MODE_MFSK31,
+	MODE_MFSK64,
+	MODE_MFSK128,
+	MODE_MFSK64L,
+	MODE_MFSK128L,
+	MODE_MFSK_FIRST = MODE_MFSK8,
+	MODE_MFSK_LAST = MODE_MFSK128L,
+
+	MODE_WEFAX_576,
+	MODE_WEFAX_288,
+	MODE_WEFAX_FIRST = MODE_WEFAX_576,
+	MODE_WEFAX_LAST = MODE_WEFAX_288,
+
+	MODE_NAVTEX,
+	MODE_SITORB,
+	MODE_NAVTEX_FIRST = MODE_NAVTEX,
+	MODE_NAVTEX_LAST = MODE_SITORB,
+
+	MODE_MT63_500S,
+	MODE_MT63_500L,
+	MODE_MT63_1000S,
+	MODE_MT63_1000L,
+	MODE_MT63_2000S,
+	MODE_MT63_2000L,
+	MODE_MT63_FIRST = MODE_MT63_500S,
+	MODE_MT63_LAST = MODE_MT63_2000L,
+
+	MODE_PSK31,
+	MODE_PSK63,
+	MODE_PSK63F,
+	MODE_PSK125,
+	MODE_PSK250,
+	MODE_PSK500,
+	MODE_PSK1000,
+
+	MODE_12X_PSK125,
+	MODE_6X_PSK250,
+	MODE_2X_PSK500,
+	MODE_4X_PSK500,
+	MODE_2X_PSK800,
+	MODE_2X_PSK1000,
+
+	MODE_PSK_FIRST = MODE_PSK31,
+	MODE_PSK_LAST = MODE_2X_PSK1000,
+
+	MODE_QPSK31,
+	MODE_QPSK63,
+	MODE_QPSK125,
+	MODE_QPSK250,
+	MODE_QPSK500,
+
+	MODE_QPSK_FIRST = MODE_QPSK31,
+	MODE_QPSK_LAST = MODE_QPSK500,
+
+	MODE_8PSK125,
+	MODE_8PSK125FL,
+	MODE_8PSK125F,
+	MODE_8PSK250,
+	MODE_8PSK250FL,
+	MODE_8PSK250F,
+	MODE_8PSK500,
+	MODE_8PSK500F,
+	MODE_8PSK1000,
+	MODE_8PSK1000F,
+	MODE_8PSK1200F,
+	MODE_8PSK_FIRST = MODE_8PSK125,
+	MODE_8PSK_LAST = MODE_8PSK1200F,
+	
+	MODE_OFDM_500F,
+	MODE_OFDM_750F,
+	MODE_OFDM_2000F,
+	MODE_OFDM_2000,
+	MODE_OFDM_3500,
+	
+	MODE_OLIVIA,
+	MODE_OLIVIA_4_125,
+	MODE_OLIVIA_4_250,
+	MODE_OLIVIA_4_500,
+	MODE_OLIVIA_4_1000,
+	MODE_OLIVIA_4_2000,
+	MODE_OLIVIA_8_125,
+	MODE_OLIVIA_8_250,
+	MODE_OLIVIA_8_500,
+	MODE_OLIVIA_8_1000,
+	MODE_OLIVIA_8_2000,
+	MODE_OLIVIA_16_500,
+	MODE_OLIVIA_16_1000,
+	MODE_OLIVIA_16_2000,
+	MODE_OLIVIA_32_1000,
+	MODE_OLIVIA_32_2000,
+	MODE_OLIVIA_64_500,
+	MODE_OLIVIA_64_1000,
+	MODE_OLIVIA_64_2000,
+	MODE_OLIVIA_FIRST = MODE_OLIVIA,
+	MODE_OLIVIA_LAST = MODE_OLIVIA_64_2000,
+
+	MODE_RTTY,
+
+	MODE_THORMICRO,
+	MODE_THOR4,
+	MODE_THOR5,
+	MODE_THOR8,
+	MODE_THOR11,
+	MODE_THOR16,
+	MODE_THOR22,
+	MODE_THOR25x4,
+	MODE_THOR50x1,
+	MODE_THOR50x2,
+	MODE_THOR100,
+	MODE_THOR_FIRST = MODE_THORMICRO,
+	MODE_THOR_LAST = MODE_THOR100,
+
+	MODE_THROB1,
+	MODE_THROB2,
+	MODE_THROB4,
+	MODE_THROBX1,
+	MODE_THROBX2,
+	MODE_THROBX4,
+	MODE_THROB_FIRST = MODE_THROB1,
+	MODE_THROB_LAST = MODE_THROBX4,
+
+//	MODE_PACKET,
+// high speed && multiple carrier modes
+
+	MODE_PSK125R,
+	MODE_PSK250R,
+	MODE_PSK500R,
+	MODE_PSK1000R,
+
+	MODE_4X_PSK63R,
+	MODE_5X_PSK63R,
+	MODE_10X_PSK63R,
+	MODE_20X_PSK63R,
+	MODE_32X_PSK63R,
+
+	MODE_4X_PSK125R,
+	MODE_5X_PSK125R,
+	MODE_10X_PSK125R,
+	MODE_12X_PSK125R,
+	MODE_16X_PSK125R,
+
+	MODE_2X_PSK250R,
+	MODE_3X_PSK250R,
+	MODE_5X_PSK250R,
+	MODE_6X_PSK250R,
+	MODE_7X_PSK250R,
+
+	MODE_2X_PSK500R,
+	MODE_3X_PSK500R,
+	MODE_4X_PSK500R,
+
+	MODE_2X_PSK800R,
+	MODE_2X_PSK1000R,
+
+	MODE_PSKR_FIRST = MODE_PSK125R,
+	MODE_PSKR_LAST = MODE_2X_PSK1000R,
+
+	MODE_FSQ,
+	MODE_IFKP,
+
+	MODE_SSB,
+	MODE_WWV,
+	MODE_ANALYSIS,
+	MODE_FMT,
+
+	MODE_EOT,  // a dummy mode used to invoke transmission of RsID-EOT code
+	NUM_MODES,
+	NUM_RXTX_MODES = MODE_SSB
+};
+
+typedef intptr_t trx_mode;
+
+struct mode_info_t {
+	trx_mode mode;
+	const char *sname;
+	const char *name;
+	const char *pskmail_name;
+	const char *adif_name;
+	const char *export_mode;
+	const char *export_submode;
+	const char *vid_name;
+	const unsigned int iface_io; // Some modes are not usable for a given interface.
+};
+extern const struct mode_info_t mode_info[NUM_MODES];
+
+/*
+
+class qrg_mode_t
+{
+public:
+	long long rfcarrier;
+	std::string rmode;
+	int carrier;
+	trx_mode mode;
+	std::string usage;
+
+	qrg_mode_t() :
+		rfcarrier(0),
+		rmode("NONE"),
+		carrier(0),
+		mode(NUM_MODES),
+		usage("") { }
+	qrg_mode_t(long long rfc_, std::string rm_, int c_, trx_mode m_, std::string use_ = "")
+                : rfcarrier(rfc_), rmode(rm_), carrier(c_), mode(m_), usage(use_) { }
+	bool operator<(const qrg_mode_t& rhs) const
+        {
+		return rfcarrier < rhs.rfcarrier;
+	}
+	bool operator==(const qrg_mode_t& rhs) const
+	{
+		return rfcarrier == rhs.rfcarrier && rmode == rhs.rmode &&
+		       carrier == rhs.carrier && mode == rhs.mode;
+	}
+	std::string str(void);
+};
+std::ostream& operator<<(std::ostream& s, const qrg_mode_t& m);
+std::istream& operator>>(std::istream& s, qrg_mode_t& m);
+
+#include <bitset>
+class mode_set_t : public std::bitset<NUM_MODES> {};
+*/
+
+enum band_t {
+	BAND_160M, BAND_80M, BAND_75M, BAND_60M, BAND_40M, BAND_30M, BAND_20M,
+	BAND_17M, BAND_15M, BAND_12M, BAND_10M, BAND_6M, BAND_4M, BAND_2M, BAND_125CM,
+	BAND_70CM, BAND_33CM, BAND_23CM, BAND_13CM, BAND_9CM, BAND_6CM, BAND_3CM, BAND_125MM,
+	BAND_6MM, BAND_4MM, BAND_2P5MM, BAND_2MM, BAND_1MM, BAND_OTHER, NUM_BANDS
+};
+/*
+
+band_t band(long long freq_hz);
+band_t band(const char* freq_mhz);
+const char* band_name(band_t b);
+const char* band_name(const char* freq_mhz);
+const char* band_freq(band_t b);
+const char* band_freq(const char* band_name);
+*/
+// psk_browser enums
+enum { VIEWER_LABEL_OFF, VIEWER_LABEL_AF, VIEWER_LABEL_RF, VIEWER_LABEL_CH, VIEWER_LABEL_NTYPES };
+
+
+#endif
diff --git a/hid.c b/hid.c
new file mode 100644
index 0000000..b3e6f4a
--- /dev/null
+++ b/hid.c
@@ -0,0 +1,910 @@
+/*******************************************************
+ HIDAPI - Multi-Platform library for
+ communication with HID devices.
+
+ Alan Ott
+ Signal 11 Software
+
+ 8/22/2009
+
+ Copyright 2009, All Rights Reserved.
+ 
+ At the discretion of the user of this library,
+ this software may be licensed under the terms of the
+ GNU Public License v3, a BSD-Style license, or the
+ original HIDAPI license as outlined in the LICENSE.txt,
+ LICENSE-gpl3.txt, LICENSE-bsd.txt, and LICENSE-orig.txt
+ files located at the root of the source distribution.
+ These files may also be found in the public source
+ code repository located at:
+        http://github.com/signal11/hidapi .
+********************************************************/
+
+// Hacked about a bit for BPQ32. John Wiseman G8BPQ April 2018
+
+
+
+#include <windows.h>
+
+#ifndef _NTDEF_
+typedef LONG NTSTATUS;
+#endif
+
+#ifdef __MINGW32__
+#include <ntdef.h>
+#include <winbase.h>
+#endif
+
+#ifdef __CYGWIN__
+#include <ntdef.h>
+#define _wcsdup wcsdup
+#endif
+
+//#define HIDAPI_USE_DDK
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+	#include <setupapi.h>
+	#include <winioctl.h>
+	#ifdef HIDAPI_USE_DDK
+		#include <hidsdi.h>
+	#endif
+
+	// Copied from inc/ddk/hidclass.h, part of the Windows DDK.
+	#define HID_OUT_CTL_CODE(id)  \
+		CTL_CODE(FILE_DEVICE_KEYBOARD, (id), METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+	#define IOCTL_HID_GET_FEATURE                   HID_OUT_CTL_CODE(100)
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+#include "hidapi.h"
+
+#ifdef _MSC_VER
+	// Thanks Microsoft, but I know how to use strncpy().
+	#pragma warning(disable:4996)
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef HIDAPI_USE_DDK
+	// Since we're not building with the DDK, and the HID header
+	// files aren't part of the SDK, we have to define all this
+	// stuff here. In lookup_functions(), the function pointers
+	// defined below are set.
+	typedef struct _HIDD_ATTRIBUTES{
+		ULONG Size;
+		USHORT VendorID;
+		USHORT ProductID;
+		USHORT VersionNumber;
+	} HIDD_ATTRIBUTES, *PHIDD_ATTRIBUTES;
+
+	typedef USHORT USAGE;
+	typedef struct _HIDP_CAPS {
+		USAGE Usage;
+		USAGE UsagePage;
+		USHORT InputReportByteLength;
+		USHORT OutputReportByteLength;
+		USHORT FeatureReportByteLength;
+		USHORT Reserved[17];
+		USHORT fields_not_used_by_hidapi[10];
+	} HIDP_CAPS, *PHIDP_CAPS;
+	typedef char* HIDP_PREPARSED_DATA;
+	#define HIDP_STATUS_SUCCESS 0x0
+
+	typedef BOOLEAN (__stdcall *HidD_GetAttributes_)(HANDLE device, PHIDD_ATTRIBUTES attrib);
+	typedef BOOLEAN (__stdcall *HidD_GetSerialNumberString_)(HANDLE device, PVOID buffer, ULONG buffer_len);
+	typedef BOOLEAN (__stdcall *HidD_GetManufacturerString_)(HANDLE handle, PVOID buffer, ULONG buffer_len);
+	typedef BOOLEAN (__stdcall *HidD_GetProductString_)(HANDLE handle, PVOID buffer, ULONG buffer_len);
+	typedef BOOLEAN (__stdcall *HidD_SetFeature_)(HANDLE handle, PVOID data, ULONG length);
+	typedef BOOLEAN (__stdcall *HidD_GetFeature_)(HANDLE handle, PVOID data, ULONG length);
+	typedef BOOLEAN (__stdcall *HidD_GetIndexedString_)(HANDLE handle, ULONG string_index, PVOID buffer, ULONG buffer_len);
+	typedef BOOLEAN (__stdcall *HidD_GetPreparsedData_)(HANDLE handle, HIDP_PREPARSED_DATA **preparsed_data);
+	typedef BOOLEAN (__stdcall *HidD_FreePreparsedData_)(HIDP_PREPARSED_DATA *preparsed_data);
+	typedef BOOLEAN (__stdcall *HidP_GetCaps_)(HIDP_PREPARSED_DATA *preparsed_data, HIDP_CAPS *caps);
+
+	static HidD_GetAttributes_ HidD_GetAttributes;
+	static HidD_GetSerialNumberString_ HidD_GetSerialNumberString;
+	static HidD_GetManufacturerString_ HidD_GetManufacturerString;
+	static HidD_GetProductString_ HidD_GetProductString;
+	static HidD_SetFeature_ HidD_SetFeature;
+	static HidD_GetFeature_ HidD_GetFeature;
+	static HidD_GetIndexedString_ HidD_GetIndexedString;
+	static HidD_GetPreparsedData_ HidD_GetPreparsedData;
+	static HidD_FreePreparsedData_ HidD_FreePreparsedData;
+	static HidP_GetCaps_ HidP_GetCaps;
+
+	static HMODULE lib_handle = NULL;
+	static BOOLEAN initialized = FALSE;
+#endif // HIDAPI_USE_DDK
+
+struct hid_device_ {
+		HANDLE device_handle;
+		BOOL blocking;
+		int input_report_length;
+		void *last_error_str;
+		DWORD last_error_num;
+		BOOL read_pending;
+		char *read_buf;
+		OVERLAPPED ol;
+};
+
+static hid_device *new_hid_device()
+{
+	hid_device *dev = (hid_device*) calloc(1, sizeof(hid_device));
+	dev->device_handle = INVALID_HANDLE_VALUE;
+	dev->blocking = TRUE;
+	dev->input_report_length = 0;
+	dev->last_error_str = NULL;
+	dev->last_error_num = 0;
+	dev->read_pending = FALSE;
+	dev->read_buf = NULL;
+	memset(&dev->ol, 0, sizeof(dev->ol));
+	dev->ol.hEvent = CreateEvent(NULL, FALSE, FALSE /*inital state f=nonsignaled*/, NULL);
+
+	return dev;
+}
+
+
+static void register_error(hid_device *device, const char *op)
+{
+	WCHAR *ptr, *msg;
+
+	FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+		FORMAT_MESSAGE_FROM_SYSTEM |
+		FORMAT_MESSAGE_IGNORE_INSERTS,
+		NULL,
+		GetLastError(),
+		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+		(LPWSTR)&msg, 0/*sz*/,
+		NULL);
+	
+	// Get rid of the CR and LF that FormatMessage() sticks at the
+	// end of the message. Thanks Microsoft!
+	ptr = msg;
+	while (*ptr) {
+		if (*ptr == '\r') {
+			*ptr = 0x0000;
+			break;
+		}
+		ptr++;
+	}
+
+	// Store the message off in the Device entry so that 
+	// the hid_error() function can pick it up.
+	LocalFree(device->last_error_str);
+	device->last_error_str = msg;
+}
+
+#ifndef HIDAPI_USE_DDK
+static int lookup_functions()
+{
+	lib_handle = LoadLibraryA("hid.dll");
+	if (lib_handle) {
+#define RESOLVE(x) x = (x##_)GetProcAddress(lib_handle, #x); if (!x) return -1;
+		RESOLVE(HidD_GetAttributes);
+		RESOLVE(HidD_GetSerialNumberString);
+		RESOLVE(HidD_GetManufacturerString);
+		RESOLVE(HidD_GetProductString);
+		RESOLVE(HidD_SetFeature);
+		RESOLVE(HidD_GetFeature);
+		RESOLVE(HidD_GetIndexedString);
+		RESOLVE(HidD_GetPreparsedData);
+		RESOLVE(HidD_FreePreparsedData);
+		RESOLVE(HidP_GetCaps);
+#undef RESOLVE
+	}
+	else
+		return -1;
+
+	return 0;
+}
+#endif
+
+static HANDLE open_device(const char *path)
+{
+	HANDLE handle;
+
+	/* First, try to open with sharing mode turned off. This will make it so
+	   that a HID device can only be opened once. This is to be consistent
+	   with the behavior on the other platforms. */
+	handle = CreateFileA(path,
+		GENERIC_WRITE |GENERIC_READ,
+		0, /*share mode*/
+		NULL,
+		OPEN_EXISTING,
+		FILE_FLAG_OVERLAPPED,//FILE_ATTRIBUTE_NORMAL,
+		0);
+
+	if (handle == INVALID_HANDLE_VALUE) {
+		/* Couldn't open the device. Some devices must be opened
+		   with sharing enabled (even though they are only opened once),
+		   so try it here. */
+		handle = CreateFileA(path,
+			GENERIC_WRITE |GENERIC_READ,
+			FILE_SHARE_READ|FILE_SHARE_WRITE, /*share mode*/
+			NULL,
+			OPEN_EXISTING,
+			FILE_FLAG_OVERLAPPED,//FILE_ATTRIBUTE_NORMAL,
+			0);
+	}
+
+	return handle;
+}
+
+int HID_API_EXPORT hid_init(void)
+{
+#ifndef HIDAPI_USE_DDK
+	if (!initialized) {
+		if (lookup_functions() < 0) {
+			hid_exit();
+			return -1;
+		}
+		initialized = TRUE;
+	}
+#endif
+	return 0;
+}
+
+int HID_API_EXPORT hid_exit(void)
+{
+#ifndef HIDAPI_USE_DDK
+	if (lib_handle)
+		FreeLibrary(lib_handle);
+	lib_handle = NULL;
+	initialized = FALSE;
+#endif
+	return 0;
+}
+
+struct hid_device_info HID_API_EXPORT * HID_API_CALL hid_enumerate(unsigned short vendor_id, unsigned short product_id)
+{
+	BOOL res;
+	struct hid_device_info *root = NULL; // return object
+	struct hid_device_info *cur_dev = NULL;
+
+	// Windows objects for interacting with the driver.
+	GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, {0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30} };
+	SP_DEVINFO_DATA devinfo_data;
+	SP_DEVICE_INTERFACE_DATA device_interface_data;
+	SP_DEVICE_INTERFACE_DETAIL_DATA_A *device_interface_detail_data = NULL;
+	HDEVINFO device_info_set = INVALID_HANDLE_VALUE;
+	int device_index = 0;
+
+	if (hid_init() < 0)
+		return NULL;
+
+	// Initialize the Windows objects.
+	devinfo_data.cbSize = sizeof(SP_DEVINFO_DATA);
+	device_interface_data.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
+
+	// Get information for all the devices belonging to the HID class.
+	device_info_set = SetupDiGetClassDevsA(&InterfaceClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
+	
+	// Iterate over each device in the HID class, looking for the right one.
+	
+	for (;;) {
+		HANDLE write_handle = INVALID_HANDLE_VALUE;
+		DWORD required_size = 0;
+		HIDD_ATTRIBUTES attrib;
+
+		res = SetupDiEnumDeviceInterfaces(device_info_set,
+			NULL,
+			&InterfaceClassGuid,
+			device_index,
+			&device_interface_data);
+		
+		if (!res) {
+			// A return of FALSE from this function means that
+			// there are no more devices.
+			break;
+		}
+
+		// Call with 0-sized detail size, and let the function
+		// tell us how long the detail struct needs to be. The
+		// size is put in &required_size.
+		res = SetupDiGetDeviceInterfaceDetailA(device_info_set,
+			&device_interface_data,
+			NULL,
+			0,
+			&required_size,
+			NULL);
+
+		// Allocate a long enough structure for device_interface_detail_data.
+		device_interface_detail_data = (SP_DEVICE_INTERFACE_DETAIL_DATA_A*) malloc(required_size);
+		device_interface_detail_data->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A);
+
+		// Get the detailed data for this device. The detail data gives us
+		// the device path for this device, which is then passed into
+		// CreateFile() to get a handle to the device.
+		res = SetupDiGetDeviceInterfaceDetailA(device_info_set,
+			&device_interface_data,
+			device_interface_detail_data,
+			required_size,
+			NULL,
+			NULL);
+
+		if (!res) {
+			//register_error(dev, "Unable to call SetupDiGetDeviceInterfaceDetail");
+			// Continue to the next device.
+			goto cont;
+		}
+
+		//wprintf(L"HandleName: %s\n", device_interface_detail_data->DevicePath);
+
+		// Open a handle to the device
+		write_handle = open_device(device_interface_detail_data->DevicePath);
+
+		// Check validity of write_handle.
+		if (write_handle == INVALID_HANDLE_VALUE) {
+			// Unable to open the device.
+			//register_error(dev, "CreateFile");
+			goto cont_close;
+		}		
+
+
+		// Get the Vendor ID and Product ID for this device.
+		attrib.Size = sizeof(HIDD_ATTRIBUTES);
+		HidD_GetAttributes(write_handle, &attrib);
+		//wprintf(L"Product/Vendor: %x %x\n", attrib.ProductID, attrib.VendorID);
+
+		// Check the VID/PID to see if we should add this
+		// device to the enumeration list.
+		if ((vendor_id == 0x0 && product_id == 0x0) || 
+			(attrib.VendorID == vendor_id && attrib.ProductID == product_id))
+		{
+			#define WSTR_LEN 512
+			const char *str;
+			struct hid_device_info *tmp;
+			HIDP_PREPARSED_DATA *pp_data = NULL;
+			HIDP_CAPS caps;
+			BOOLEAN res;
+			NTSTATUS nt_res;
+			wchar_t wstr[WSTR_LEN]; // TODO: Determine Size
+			int len;
+
+			/* VID/PID match. Create the record. */
+			tmp = (struct hid_device_info*) calloc(1, sizeof(struct hid_device_info));
+			if (cur_dev) {
+				cur_dev->next = tmp;
+			}
+			else {
+				root = tmp;
+			}
+			cur_dev = tmp;
+
+			// Get the Usage Page and Usage for this device.
+			res = HidD_GetPreparsedData(write_handle, &pp_data);
+			if (res) {
+				nt_res = HidP_GetCaps(pp_data, &caps);
+				if (nt_res == HIDP_STATUS_SUCCESS) {
+					cur_dev->usage_page = caps.UsagePage;
+					cur_dev->usage = caps.Usage;
+				}
+
+				HidD_FreePreparsedData(pp_data);
+			}
+			
+			/* Fill out the record */
+			cur_dev->next = NULL;
+			str = device_interface_detail_data->DevicePath;
+			if (str) {
+				len = (int)strlen(str);
+				cur_dev->path = (char*) calloc(len+1, sizeof(char));
+				strncpy(cur_dev->path, str, len+1);
+				cur_dev->path[len] = '\0';
+			}
+			else
+				cur_dev->path = NULL;
+
+			/* Serial Number */
+			res = HidD_GetSerialNumberString(write_handle, wstr, sizeof(wstr));
+			wstr[WSTR_LEN-1] = 0x0000;
+			if (res) {
+				cur_dev->serial_number = _wcsdup(wstr);
+			}
+
+			/* Manufacturer String */
+			res = HidD_GetManufacturerString(write_handle, wstr, sizeof(wstr));
+			wstr[WSTR_LEN-1] = 0x0000;
+			if (res) {
+				cur_dev->manufacturer_string = _wcsdup(wstr);
+			}
+
+			/* Product String */
+			res = HidD_GetProductString(write_handle, wstr, sizeof(wstr));
+			wstr[WSTR_LEN-1] = 0x0000;
+			if (res) {
+				cur_dev->product_string = _wcsdup(wstr);
+			}
+
+			/* VID/PID */
+			cur_dev->vendor_id = attrib.VendorID;
+			cur_dev->product_id = attrib.ProductID;
+
+			/* Release Number */
+			cur_dev->release_number = attrib.VersionNumber;
+
+			/* Interface Number. It can sometimes be parsed out of the path
+			   on Windows if a device has multiple interfaces. See
+			   http://msdn.microsoft.com/en-us/windows/hardware/gg487473 or
+			   search for "Hardware IDs for HID Devices" at MSDN. If it's not
+			   in the path, it's set to -1. */
+			cur_dev->interface_number = -1;
+			if (cur_dev->path) {
+				char *interface_component = strstr(cur_dev->path, "&mi_");
+				if (interface_component) {
+					char *hex_str = interface_component + 4;
+					char *endptr = NULL;
+					cur_dev->interface_number = strtol(hex_str, &endptr, 16);
+					if (endptr == hex_str) {
+						/* The parsing failed. Set interface_number to -1. */
+						cur_dev->interface_number = -1;
+					}
+				}
+			}
+		}
+
+cont_close:
+		CloseHandle(write_handle);
+cont:
+		// We no longer need the detail data. It can be freed
+		free(device_interface_detail_data);
+
+		device_index++;
+
+	}
+
+	// Close the device information handle.
+	SetupDiDestroyDeviceInfoList(device_info_set);
+
+	return root;
+
+}
+
+void  HID_API_EXPORT HID_API_CALL hid_free_enumeration(struct hid_device_info *devs)
+{
+	// TODO: Merge this with the Linux version. This function is platform-independent.
+	struct hid_device_info *d = devs;
+	while (d) {
+		struct hid_device_info *next = d->next;
+		free(d->path);
+		free(d->serial_number);
+		free(d->manufacturer_string);
+		free(d->product_string);
+		free(d);
+		d = next;
+	}
+}
+
+
+HID_API_EXPORT hid_device * HID_API_CALL hid_open(unsigned short vendor_id, unsigned short product_id, wchar_t *serial_number)
+{
+	// TODO: Merge this functions with the Linux version. This function should be platform independent.
+	struct hid_device_info *devs, *cur_dev;
+	const char *path_to_open = NULL;
+	hid_device *handle = NULL;
+	
+	devs = hid_enumerate(vendor_id, product_id);
+	cur_dev = devs;
+	while (cur_dev) {
+		if (cur_dev->vendor_id == vendor_id &&
+		    cur_dev->product_id == product_id) {
+			if (serial_number) {
+				if (wcscmp(serial_number, cur_dev->serial_number) == 0) {
+					path_to_open = cur_dev->path;
+					break;
+				}
+			}
+			else {
+				path_to_open = cur_dev->path;
+				break;
+			}
+		}
+		cur_dev = cur_dev->next;
+	}
+
+	if (path_to_open) {
+		/* Open the device */
+		handle = hid_open_path(path_to_open);
+	}
+
+	hid_free_enumeration(devs);
+	
+	return handle;
+}
+
+HID_API_EXPORT hid_device * HID_API_CALL hid_open_path(const char *path)
+{
+	hid_device *dev;
+	HIDP_CAPS caps;
+	HIDP_PREPARSED_DATA *pp_data = NULL;
+	BOOLEAN res;
+	NTSTATUS nt_res;
+
+	if (hid_init() < 0) {
+		return NULL;
+	}
+
+	dev = new_hid_device();
+
+	// Open a handle to the device
+	dev->device_handle = open_device(path);
+
+	// Check validity of write_handle.
+	if (dev->device_handle == INVALID_HANDLE_VALUE) {
+		// Unable to open the device.
+		register_error(dev, "CreateFile");
+		goto err;
+	}
+
+	// Get the Input Report length for the device.
+	res = HidD_GetPreparsedData(dev->device_handle, &pp_data);
+	if (!res) {
+		register_error(dev, "HidD_GetPreparsedData");
+		goto err;
+	}
+	nt_res = HidP_GetCaps(pp_data, &caps);
+	if (nt_res != HIDP_STATUS_SUCCESS) {
+		register_error(dev, "HidP_GetCaps");	
+		goto err_pp_data;
+	}
+	dev->input_report_length = caps.InputReportByteLength;
+	HidD_FreePreparsedData(pp_data);
+
+	dev->read_buf = (char*) malloc(dev->input_report_length);
+
+	return dev;
+
+err_pp_data:
+		HidD_FreePreparsedData(pp_data);
+err:	
+		CloseHandle(dev->device_handle);
+		free(dev);
+		return NULL;
+}
+
+int HID_API_EXPORT HID_API_CALL hid_write(hid_device *dev, const unsigned char *data, size_t length)
+{
+	DWORD bytes_written;
+	BOOL res;
+
+	OVERLAPPED ol;
+	memset(&ol, 0, sizeof(ol));
+
+	res = WriteFile(dev->device_handle, data, length, NULL, &ol);
+	
+	if (!res) {
+		if (GetLastError() != ERROR_IO_PENDING) {
+			// WriteFile() failed. Return error.
+			register_error(dev, "WriteFile");
+			return -1;
+		}
+	}
+
+	// Wait here until the write is done. This makes
+	// hid_write() synchronous.
+	res = GetOverlappedResult(dev->device_handle, &ol, &bytes_written, TRUE/*wait*/);
+	if (!res) {
+		// The Write operation failed.
+		register_error(dev, "WriteFile");
+		return -1;
+	}
+
+	return bytes_written;
+}
+
+int HID_API_EXPORT HID_API_CALL hid_set_ptt(int state)
+{
+	int res;
+	hid_device *handle;
+	unsigned char buf[16];
+
+	handle = hid_open(0xd8c, 0x8, NULL);
+	if (!handle) {
+		printf("unable to open device\n");
+ 		return 1;
+	}
+
+
+	// Toggle PTT
+
+	buf[0] = 0;
+	buf[1] = 0;
+	buf[2]= 1 << (3 - 1);
+	buf[3] = state << (3 - 1);
+	buf[4] = 0;
+
+
+	res = hid_write(handle, buf, 5);
+	if (res < 0)
+	{
+		printf("Unable to write()\n");
+		printf("Error: %ls\n", hid_error(handle));
+	}
+	
+	hid_close(handle);
+	return res;
+}
+
+
+int HID_API_EXPORT HID_API_CALL hid_read_timeout(hid_device *dev, unsigned char *data, size_t length, int milliseconds)
+{
+	DWORD bytes_read = 0;
+	BOOL res;
+
+	// Copy the handle for convenience.
+	HANDLE ev = dev->ol.hEvent;
+
+	if (!dev->read_pending) {
+		// Start an Overlapped I/O read.
+		dev->read_pending = TRUE;
+		ResetEvent(ev);
+		res = ReadFile(dev->device_handle, dev->read_buf, dev->input_report_length, &bytes_read, &dev->ol);
+		
+		if (!res) {
+			if (GetLastError() != ERROR_IO_PENDING) {
+				// ReadFile() has failed.
+				// Clean up and return error.
+				CancelIo(dev->device_handle);
+				dev->read_pending = FALSE;
+				goto end_of_function;
+			}
+		}
+	}
+
+	if (milliseconds >= 0) {
+		// See if there is any data yet.
+		res = WaitForSingleObject(ev, milliseconds);
+		if (res != WAIT_OBJECT_0) {
+			// There was no data this time. Return zero bytes available,
+			// but leave the Overlapped I/O running.
+			return 0;
+		}
+	}
+
+	// Either WaitForSingleObject() told us that ReadFile has completed, or
+	// we are in non-blocking mode. Get the number of bytes read. The actual
+	// data has been copied to the data[] array which was passed to ReadFile().
+	res = GetOverlappedResult(dev->device_handle, &dev->ol, &bytes_read, TRUE/*wait*/);
+	
+	// Set pending back to false, even if GetOverlappedResult() returned error.
+	dev->read_pending = FALSE;
+
+	if (res && bytes_read > 0) {
+		if (dev->read_buf[0] == 0x0) {
+			/* If report numbers aren't being used, but Windows sticks a report
+			   number (0x0) on the beginning of the report anyway. To make this
+			   work like the other platforms, and to make it work more like the
+			   HID spec, we'll skip over this byte. */
+			bytes_read--;
+			memcpy(data, dev->read_buf+1, length);
+		}
+		else {
+			/* Copy the whole buffer, report number and all. */
+			memcpy(data, dev->read_buf, length);
+		}
+	}
+	
+end_of_function:
+	if (!res) {
+		register_error(dev, "GetOverlappedResult");
+		return -1;
+	}
+	
+	return bytes_read;
+}
+
+int HID_API_EXPORT HID_API_CALL hid_read(hid_device *dev, unsigned char *data, size_t length)
+{
+	return hid_read_timeout(dev, data, length, (dev->blocking)? -1: 0);
+}
+
+int HID_API_EXPORT HID_API_CALL hid_set_nonblocking(hid_device *dev, int nonblock)
+{
+	dev->blocking = !nonblock;
+	return 0; /* Success */
+}
+
+int HID_API_EXPORT HID_API_CALL hid_send_feature_report(hid_device *dev, const unsigned char *data, size_t length)
+{
+	BOOL res = HidD_SetFeature(dev->device_handle, (PVOID)data, length);
+	if (!res) {
+		register_error(dev, "HidD_SetFeature");
+		return -1;
+	}
+
+	return length;
+}
+
+
+int HID_API_EXPORT HID_API_CALL hid_get_feature_report(hid_device *dev, unsigned char *data, size_t length)
+{
+	BOOL res;
+#if 0
+	res = HidD_GetFeature(dev->device_handle, data, length);
+	if (!res) {
+		register_error(dev, "HidD_GetFeature");
+		return -1;
+	}
+	return 0; /* HidD_GetFeature() doesn't give us an actual length, unfortunately */
+#else
+	DWORD bytes_returned;
+
+	OVERLAPPED ol;
+	memset(&ol, 0, sizeof(ol));
+
+	res = DeviceIoControl(dev->device_handle,
+		IOCTL_HID_GET_FEATURE,
+		data, length,
+		data, length,
+		&bytes_returned, &ol);
+
+	if (!res) {
+		if (GetLastError() != ERROR_IO_PENDING) {
+			// DeviceIoControl() failed. Return error.
+			register_error(dev, "Send Feature Report DeviceIoControl");
+			return -1;
+		}
+	}
+
+	// Wait here until the write is done. This makes
+	// hid_get_feature_report() synchronous.
+	res = GetOverlappedResult(dev->device_handle, &ol, &bytes_returned, TRUE/*wait*/);
+	if (!res) {
+		// The operation failed.
+		register_error(dev, "Send Feature Report GetOverLappedResult");
+		return -1;
+	}
+	return bytes_returned;
+#endif
+}
+
+void HID_API_EXPORT HID_API_CALL hid_close(hid_device *dev)
+{
+	if (!dev)
+		return;
+	CancelIo(dev->device_handle);
+	CloseHandle(dev->ol.hEvent);
+	CloseHandle(dev->device_handle);
+	LocalFree(dev->last_error_str);
+	free(dev->read_buf);
+	free(dev);
+}
+
+int HID_API_EXPORT_CALL HID_API_CALL hid_get_manufacturer_string(hid_device *dev, wchar_t *string, size_t maxlen)
+{
+	BOOL res;
+
+	res = HidD_GetManufacturerString(dev->device_handle, string, 2 * maxlen);
+	if (!res) {
+		register_error(dev, "HidD_GetManufacturerString");
+		return -1;
+	}
+
+	return 0;
+}
+
+int HID_API_EXPORT_CALL HID_API_CALL hid_get_product_string(hid_device *dev, wchar_t *string, size_t maxlen)
+{
+	BOOL res;
+
+	res = HidD_GetProductString(dev->device_handle, string, 2 * maxlen);
+	if (!res) {
+		register_error(dev, "HidD_GetProductString");
+		return -1;
+	}
+
+	return 0;
+}
+
+int HID_API_EXPORT_CALL HID_API_CALL hid_get_serial_number_string(hid_device *dev, wchar_t *string, size_t maxlen)
+{
+	BOOL res;
+
+	res = HidD_GetSerialNumberString(dev->device_handle, string, 2 * maxlen);
+	if (!res) {
+		register_error(dev, "HidD_GetSerialNumberString");
+		return -1;
+	}
+
+	return 0;
+}
+
+int HID_API_EXPORT_CALL HID_API_CALL hid_get_indexed_string(hid_device *dev, int string_index, wchar_t *string, size_t maxlen)
+{
+	BOOL res;
+
+	res = HidD_GetIndexedString(dev->device_handle, string_index, string, 2 * maxlen);
+	if (!res) {
+		register_error(dev, "HidD_GetIndexedString");
+		return -1;
+	}
+
+	return 0;
+}
+
+
+HID_API_EXPORT const wchar_t * HID_API_CALL  hid_error(hid_device *dev)
+{
+	return (wchar_t*)dev->last_error_str;
+}
+
+
+//#define PICPGM
+//#define S11
+#define P32
+#ifdef S11 
+  unsigned short VendorID = 0xa0a0;
+	unsigned short ProductID = 0x0001;
+#endif
+
+#ifdef P32
+  unsigned short VendorID = 0x04d8;
+	unsigned short ProductID = 0x3f;
+#endif
+
+
+#ifdef PICPGM
+  unsigned short VendorID = 0x04d8;
+  unsigned short ProductID = 0x0033;
+#endif
+
+
+#if 0
+int __cdecl main(int argc, char* argv[])
+{
+	int res;
+	unsigned char buf[65];
+
+	UNREFERENCED_PARAMETER(argc);
+	UNREFERENCED_PARAMETER(argv);
+
+	// Set up the command buffer.
+	memset(buf,0x00,sizeof(buf));
+	buf[0] = 0;
+	buf[1] = 0x81;
+	
+
+	// Open the device.
+	int handle = open(VendorID, ProductID, L"12345");
+	if (handle < 0)
+		printf("unable to open device\n");
+
+
+	// Toggle LED (cmd 0x80)
+	buf[1] = 0x80;
+	res = write(handle, buf, 65);
+	if (res < 0)
+		printf("Unable to write()\n");
+
+	// Request state (cmd 0x81)
+	buf[1] = 0x81;
+	write(handle, buf, 65);
+	if (res < 0)
+		printf("Unable to write() (2)\n");
+
+	// Read requested state
+	read(handle, buf, 65);
+	if (res < 0)
+		printf("Unable to read()\n");
+
+	// Print out the returned buffer.
+	for (int i = 0; i < 4; i++)
+		printf("buf[%d]: %d\n", i, buf[i]);
+
+	return 0;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/hidapi.h b/hidapi.h
new file mode 100644
index 0000000..e8ad2ca
--- /dev/null
+++ b/hidapi.h
@@ -0,0 +1,386 @@
+/*******************************************************
+ HIDAPI - Multi-Platform library for
+ communication with HID devices.
+
+ Alan Ott
+ Signal 11 Software
+
+ 8/22/2009
+
+ Copyright 2009, All Rights Reserved.
+
+ At the discretion of the user of this library,
+ this software may be licensed under the terms of the
+ GNU Public License v3, a BSD-Style license, or the
+ original HIDAPI license as outlined in the LICENSE.txt,
+ LICENSE-gpl3.txt, LICENSE-bsd.txt, and LICENSE-orig.txt
+ files located at the root of the source distribution.
+ These files may also be found in the public source
+ code repository located at:
+        http://github.com/signal11/hidapi .
+********************************************************/
+
+/** @file
+ * @defgroup API hidapi API
+ */
+
+#ifndef HIDAPI_H__
+#define HIDAPI_H__
+
+#include <wchar.h>
+
+#ifdef _WIN32
+//      #define HID_API_EXPORT __declspec(dllexport)		// BPQ
+      #define HID_API_EXPORT
+	  #define HID_API_CALL
+#else
+      #define HID_API_EXPORT /**< API export macro */
+      #define HID_API_CALL /**< API call macro */
+#endif
+
+#define HID_API_EXPORT_CALL HID_API_EXPORT HID_API_CALL /**< API export and call macro*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+		struct hid_device_;
+		typedef struct hid_device_ hid_device; /**< opaque hidapi structure */
+
+		/** hidapi info structure */
+		struct hid_device_info {
+			/** Platform-specific device path */
+			char *path;
+			/** Device Vendor ID */
+			unsigned short vendor_id;
+			/** Device Product ID */
+			unsigned short product_id;
+			/** Serial Number */
+			wchar_t *serial_number;
+			/** Device Release Number in binary-coded decimal,
+			    also known as Device Version Number */
+			unsigned short release_number;
+			/** Manufacturer String */
+			wchar_t *manufacturer_string;
+			/** Product string */
+			wchar_t *product_string;
+			/** Usage Page for this Device/Interface
+			    (Windows/Mac only). */
+			unsigned short usage_page;
+			/** Usage for this Device/Interface
+			    (Windows/Mac only).*/
+			unsigned short usage;
+			/** The USB interface which this logical device
+			    represents. Valid on both Linux implementations
+			    in all cases, and valid on the Windows implementation
+			    only if the device contains more than one interface. */
+			int interface_number;
+
+			/** Pointer to the next device */
+			struct hid_device_info *next;
+		};
+
+
+		/** @brief Initialize the HIDAPI library.
+
+			This function initializes the HIDAPI library. Calling it is not
+			strictly necessary, as it will be called automatically by
+			hid_enumerate() and any of the hid_open_*() functions if it is
+			needed.  This function should be called at the beginning of
+			execution however, if there is a chance of HIDAPI handles
+			being opened by different threads simultaneously.
+			
+			@ingroup API
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT HID_API_CALL hid_init(void);
+
+		/** @brief Finalize the HIDAPI library.
+
+			This function frees all of the static data associated with
+			HIDAPI. It should be called at the end of execution to avoid
+			memory leaks.
+
+			@ingroup API
+
+		    @returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT HID_API_CALL hid_exit(void);
+
+		/** @brief Enumerate the HID Devices.
+
+			This function returns a linked list of all the HID devices
+			attached to the system which match vendor_id and product_id.
+			If @p vendor_id and @p product_id are both set to 0, then
+			all HID devices will be returned.
+
+			@ingroup API
+			@param vendor_id The Vendor ID (VID) of the types of device
+				to open.
+			@param product_id The Product ID (PID) of the types of
+				device to open.
+
+		    @returns
+		    	This function returns a pointer to a linked list of type
+		    	struct #hid_device, containing information about the HID devices
+		    	attached to the system, or NULL in the case of failure. Free
+		    	this linked list by calling hid_free_enumeration().
+		*/
+		struct hid_device_info HID_API_EXPORT * HID_API_CALL hid_enumerate(unsigned short vendor_id, unsigned short product_id);
+
+		/** @brief Free an enumeration Linked List
+
+		    This function frees a linked list created by hid_enumerate().
+
+			@ingroup API
+		    @param devs Pointer to a list of struct_device returned from
+		    	      hid_enumerate().
+		*/
+		void  HID_API_EXPORT HID_API_CALL hid_free_enumeration(struct hid_device_info *devs);
+
+		/** @brief Open a HID device using a Vendor ID (VID), Product ID
+			(PID) and optionally a serial number.
+
+			If @p serial_number is NULL, the first device with the
+			specified VID and PID is opened.
+
+			@ingroup API
+			@param vendor_id The Vendor ID (VID) of the device to open.
+			@param product_id The Product ID (PID) of the device to open.
+			@param serial_number The Serial Number of the device to open
+				               (Optionally NULL).
+
+			@returns
+				This function returns a pointer to a #hid_device object on
+				success or NULL on failure.
+		*/
+		HID_API_EXPORT hid_device * HID_API_CALL hid_open(unsigned short vendor_id, unsigned short product_id, wchar_t *serial_number);
+
+		/** @brief Open a HID device by its path name.
+
+			The path name be determined by calling hid_enumerate(), or a
+			platform-specific path name can be used (eg: /dev/hidraw0 on
+			Linux).
+
+			@ingroup API
+		    @param path The path name of the device to open
+
+			@returns
+				This function returns a pointer to a #hid_device object on
+				success or NULL on failure.
+		*/
+		HID_API_EXPORT hid_device * HID_API_CALL hid_open_path(const char *path);
+
+		/** @brief Write an Output report to a HID device.
+
+			The first byte of @p data[] must contain the Report ID. For
+			devices which only support a single report, this must be set
+			to 0x0. The remaining bytes contain the report data. Since
+			the Report ID is mandatory, calls to hid_write() will always
+			contain one more byte than the report contains. For example,
+			if a hid report is 16 bytes long, 17 bytes must be passed to
+			hid_write(), the Report ID (or 0x0, for devices with a
+			single report), followed by the report data (16 bytes). In
+			this example, the length passed in would be 17.
+
+			hid_write() will send the data on the first OUT endpoint, if
+			one exists. If it does not, it will send the data through
+			the Control Endpoint (Endpoint 0).
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param data The data to send, including the report number as
+				the first byte.
+			@param length The length in bytes of the data to send.
+
+			@returns
+				This function returns the actual number of bytes written and
+				-1 on error.
+		*/
+		int  HID_API_EXPORT HID_API_CALL hid_write(hid_device *device, const unsigned char *data, size_t length);
+
+		/** @brief Read an Input report from a HID device with timeout.
+
+			Input reports are returned
+			to the host through the INTERRUPT IN endpoint. The first byte will
+			contain the Report number if the device uses numbered reports.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param data A buffer to put the read data into.
+			@param length The number of bytes to read. For devices with
+				multiple reports, make sure to read an extra byte for
+				the report number.
+			@param milliseconds timeout in milliseconds or -1 for blocking wait.
+
+			@returns
+				This function returns the actual number of bytes read and
+				-1 on error.
+		*/
+		int HID_API_EXPORT HID_API_CALL hid_read_timeout(hid_device *dev, unsigned char *data, size_t length, int milliseconds);
+
+		/** @brief Read an Input report from a HID device.
+
+			Input reports are returned
+		    to the host through the INTERRUPT IN endpoint. The first byte will
+			contain the Report number if the device uses numbered reports.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param data A buffer to put the read data into.
+			@param length The number of bytes to read. For devices with
+				multiple reports, make sure to read an extra byte for
+				the report number.
+
+			@returns
+				This function returns the actual number of bytes read and
+				-1 on error.
+		*/
+		int  HID_API_EXPORT HID_API_CALL hid_read(hid_device *device, unsigned char *data, size_t length);
+
+		/** @brief Set the device handle to be non-blocking.
+
+			In non-blocking mode calls to hid_read() will return
+			immediately with a value of 0 if there is no data to be
+			read. In blocking mode, hid_read() will wait (block) until
+			there is data to read before returning.
+
+			Nonblocking can be turned on and off at any time.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param nonblock enable or not the nonblocking reads
+			 - 1 to enable nonblocking
+			 - 0 to disable nonblocking.
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int  HID_API_EXPORT HID_API_CALL hid_set_nonblocking(hid_device *device, int nonblock);
+
+		/** @brief Send a Feature report to the device.
+
+			Feature reports are sent over the Control endpoint as a
+			Set_Report transfer.  The first byte of @p data[] must
+			contain the Report ID. For devices which only support a
+			single report, this must be set to 0x0. The remaining bytes
+			contain the report data. Since the Report ID is mandatory,
+			calls to hid_send_feature_report() will always contain one
+			more byte than the report contains. For example, if a hid
+			report is 16 bytes long, 17 bytes must be passed to
+			hid_send_feature_report(): the Report ID (or 0x0, for
+			devices which do not use numbered reports), followed by the
+			report data (16 bytes). In this example, the length passed
+			in would be 17.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param data The data to send, including the report number as
+				the first byte.
+			@param length The length in bytes of the data to send, including
+				the report number.
+
+			@returns
+				This function returns the actual number of bytes written and
+				-1 on error.
+		*/
+		int HID_API_EXPORT HID_API_CALL hid_send_feature_report(hid_device *device, const unsigned char *data, size_t length);
+
+		/** @brief Get a feature report from a HID device.
+
+			Make sure to set the first byte of @p data[] to the Report
+			ID of the report to be read.  Make sure to allow space for
+			this extra byte in @p data[].
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param data A buffer to put the read data into, including
+				the Report ID. Set the first byte of @p data[] to the
+				Report ID of the report to be read.
+			@param length The number of bytes to read, including an
+				extra byte for the report ID. The buffer can be longer
+				than the actual report.
+
+			@returns
+				This function returns the number of bytes read and
+				-1 on error.
+		*/
+		int HID_API_EXPORT HID_API_CALL hid_get_feature_report(hid_device *device, unsigned char *data, size_t length);
+
+		/** @brief Close a HID device.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+		*/
+		void HID_API_EXPORT HID_API_CALL hid_close(hid_device *device);
+
+		/** @brief Get The Manufacturer String from a HID device.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param string A wide string buffer to put the data into.
+			@param maxlen The length of the buffer in multiples of wchar_t.
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT_CALL hid_get_manufacturer_string(hid_device *device, wchar_t *string, size_t maxlen);
+
+		/** @brief Get The Product String from a HID device.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param string A wide string buffer to put the data into.
+			@param maxlen The length of the buffer in multiples of wchar_t.
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT_CALL hid_get_product_string(hid_device *device, wchar_t *string, size_t maxlen);
+
+		/** @brief Get The Serial Number String from a HID device.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param string A wide string buffer to put the data into.
+			@param maxlen The length of the buffer in multiples of wchar_t.
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT_CALL hid_get_serial_number_string(hid_device *device, wchar_t *string, size_t maxlen);
+
+		/** @brief Get a string from a HID device, based on its string index.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+			@param string_index The index of the string to get.
+			@param string A wide string buffer to put the data into.
+			@param maxlen The length of the buffer in multiples of wchar_t.
+
+			@returns
+				This function returns 0 on success and -1 on error.
+		*/
+		int HID_API_EXPORT_CALL hid_get_indexed_string(hid_device *device, int string_index, wchar_t *string, size_t maxlen);
+
+		/** @brief Get a string describing the last error which occurred.
+
+			@ingroup API
+			@param device A device handle returned from hid_open().
+
+			@returns
+				This function returns a string containing the last error
+				which occurred or NULL if none has occurred.
+		*/
+		HID_API_EXPORT const wchar_t* HID_API_CALL hid_error(hid_device *device);
+
+		int HID_API_EXPORT HID_API_CALL hid_set_ptt(int state);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/il2p.c b/il2p.c
new file mode 100644
index 0000000..c0cab3f
--- /dev/null
+++ b/il2p.c
@@ -0,0 +1,4503 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+// IL2P code. Based on Direwolf code, under the following copyright
+
+//
+//    Copyright (C) 2021  John Langner, WB2OSZ
+//
+//    This program is free software: you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation, either version 2 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful,
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//    GNU General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//
+
+
+// IP2P receive code (il2p_rec_bit) is called from the bit receiving code in ax25_demod.c, so includes parallel decoders
+
+
+
+
+#include "UZ7HOStuff.h"
+
+void Debugprintf(const char * format, ...);
+
+#define MAX_ADEVS 3			
+
+#define MAX_RADIO_CHANS ((MAX_ADEVS) * 2)
+
+#define MAX_CHANS MAX_RADIO_CHANS	// TODO: Replace all former  with latter to avoid confusion with following.
+
+#define MAX_TOTAL_CHANS 16		// v1.7 allows additional virtual channels which are connected
+ // to something other than radio modems.
+ // Total maximum channels is based on the 4 bit KISS field.
+ // Someone with very unusual requirements could increase this and
+ // use only the AGW network protocol.
+
+
+#define MAX_SUBCHANS 9
+
+#define MAX_SLICERS 9
+
+#define max(x, y) ((x) > (y) ? (x) : (y))
+#define min(x, y) ((x) < (y) ? (x) : (y))
+
+/* For option to try fixing frames with bad CRC. */
+
+typedef enum retry_e {
+	RETRY_NONE = 0,
+	RETRY_INVERT_SINGLE = 1,
+	RETRY_INVERT_DOUBLE = 2,
+	RETRY_INVERT_TRIPLE = 3,
+	RETRY_INVERT_TWO_SEP = 4,
+	RETRY_MAX = 5
+}  retry_t;
+
+typedef struct alevel_s {
+	int rec;
+	int mark;
+	int space;
+	//float ms_ratio;	// TODO: take out after temporary investigation.
+} alevel_t;
+
+
+alevel_t demod_get_audio_level(int chan, int subchan);
+void tone_gen_put_bit(int chan, int dat);
+
+int ax25memdebug = 1;
+
+// Code to try to determine centre freq
+
+float MagOut[4096];
+float MaxMagOut = 0;
+int MaxMagIndex = 0;
+
+// FFT Bin Size is 12000 / 2048
+
+#define BinSize 5.859375f
+#ifndef FX25_H
+#define FX25_H
+
+#include <stdint.h>	// for uint64_t
+
+
+/* Reed-Solomon codec control block */
+struct rs {
+	unsigned int mm;              /* Bits per symbol */
+	unsigned int nn;              /* Symbols per block (= (1<<mm)-1) */
+	unsigned char *alpha_to;      /* log lookup table */
+	unsigned char *index_of;      /* Antilog lookup table */
+	unsigned char *genpoly;       /* Generator polynomial */
+	unsigned int nroots;     /* Number of generator roots = number of parity symbols */
+	unsigned char fcr;        /* First consecutive root, index form */
+	unsigned char prim;       /* Primitive element, index form */
+	unsigned char iprim;      /* prim-th root of 1, index form */
+};
+
+#define MM (rs->mm)
+#define NN (rs->nn)
+#define ALPHA_TO (rs->alpha_to) 
+#define INDEX_OF (rs->index_of)
+#define GENPOLY (rs->genpoly)
+#define NROOTS (rs->nroots)
+#define FCR (rs->fcr)
+#define PRIM (rs->prim)
+#define IPRIM (rs->iprim)
+#define A0 (NN)
+
+int __builtin_popcountll(unsigned long long int i)
+{
+	return 0;
+}
+
+int __builtin_popcount(unsigned int n)
+{
+	unsigned int count = 0;
+	while (n)
+	{
+		count += n & 1;
+		n >>= 1;
+	}
+	return count;
+}
+
+static inline int modnn(struct rs *rs, int x) {
+	while (x >= rs->nn) {
+		x -= rs->nn;
+		x = (x >> rs->mm) + (x & rs->nn);
+	}
+	return x;
+}
+
+#define MODNN(x) modnn(rs,x)
+
+
+#define ENCODE_RS encode_rs_char
+#define DECODE_RS decode_rs_char
+#define INIT_RS init_rs_char
+#define FREE_RS free_rs_char
+
+#define DTYPE unsigned char
+
+void ENCODE_RS(struct rs *rs, DTYPE *data, DTYPE *bb);
+
+int DECODE_RS(struct rs *rs, DTYPE *data, int *eras_pos, int no_eras);
+
+struct rs *INIT_RS(unsigned int symsize, unsigned int gfpoly,
+	unsigned int fcr, unsigned int prim, unsigned int nroots);
+
+void FREE_RS(struct rs *rs);
+
+
+
+// These 3 are the external interface.
+// Maybe these should be in a different file, separated from the internal stuff.
+
+void fx25_init(int debug_level);
+int fx25_send_frame(int chan, unsigned char *fbuf, int flen, int fx_mode);
+void fx25_rec_bit(int chan, int subchan, int slice, int dbit);
+int fx25_rec_busy(int chan);
+
+
+// Other functions in fx25_init.c.
+
+struct rs *fx25_get_rs(int ctag_num);
+uint64_t fx25_get_ctag_value(int ctag_num);
+int fx25_get_k_data_radio(int ctag_num);
+int fx25_get_k_data_rs(int ctag_num);
+int fx25_get_nroots(int ctag_num);
+int fx25_get_debug(void);
+int fx25_tag_find_match(uint64_t t);
+int fx25_pick_mode(int fx_mode, int dlen);
+
+void fx_hex_dump(unsigned char *x, int len);
+
+/*-------------------------------------------------------------------
+ *
+ * Name:	ax25_pad.h
+ *
+ * Purpose:	Header file for using ax25_pad.c
+ *
+ *------------------------------------------------------------------*/
+
+#ifndef AX25_PAD_H
+#define AX25_PAD_H 1
+
+
+#define AX25_MAX_REPEATERS 8
+#define AX25_MIN_ADDRS 2	/* Destination & Source. */
+#define AX25_MAX_ADDRS 10	/* Destination, Source, 8 digipeaters. */	
+
+#define AX25_DESTINATION  0	/* Address positions in frame. */
+#define AX25_SOURCE       1	
+#define AX25_REPEATER_1   2
+#define AX25_REPEATER_2   3
+#define AX25_REPEATER_3   4
+#define AX25_REPEATER_4   5
+#define AX25_REPEATER_5   6
+#define AX25_REPEATER_6   7
+#define AX25_REPEATER_7   8
+#define AX25_REPEATER_8   9
+
+#define AX25_MAX_ADDR_LEN 12	/* In theory, you would expect the maximum length */
+ /* to be 6 letters, dash, 2 digits, and nul for a */
+ /* total of 10.  However, object labels can be 10 */
+ /* characters so throw in a couple extra bytes */
+ /* to be safe. */
+
+#define AX25_MIN_INFO_LEN 0	/* Previously 1 when considering only APRS. */
+
+#define AX25_MAX_INFO_LEN 2048	/* Maximum size for APRS. */
+				/* AX.25 starts out with 256 as the default max */
+				/* length but the end stations can negotiate */
+				/* something different. */
+				/* version 0.8:  Change from 256 to 2028 to */
+				/* handle the larger paclen for Linux AX25. */
+
+				/* These don't include the 2 bytes for the */
+				/* HDLC frame FCS. */
+
+/*
+ * Previously, for APRS only.
+ * #define AX25_MIN_PACKET_LEN ( 2 * 7 + 2 + AX25_MIN_INFO_LEN)
+ * #define AX25_MAX_PACKET_LEN ( AX25_MAX_ADDRS * 7 + 2 + AX25_MAX_INFO_LEN)
+ */
+
+ /* The more general case. */
+ /* An AX.25 frame can have a control byte and no protocol. */
+
+#define AX25_MIN_PACKET_LEN ( 2 * 7 + 1 )
+
+#define AX25_MAX_PACKET_LEN ( AX25_MAX_ADDRS * 7 + 2 + 3 + AX25_MAX_INFO_LEN)
+
+
+/*
+ * packet_t is a pointer to a packet object.
+ *
+ * The actual implementation is not visible outside ax25_pad.c.
+ */
+
+#define AX25_UI_FRAME 3		/* Control field value. */
+
+#define AX25_PID_NO_LAYER_3 0xf0		/* protocol ID used for APRS */
+#define AX25_PID_SEGMENTATION_FRAGMENT 0x08
+#define AX25_PID_ESCAPE_CHARACTER 0xff
+
+struct packet_s {
+
+	int magic1;		/* for error checking. */
+
+	int seq;		/* unique sequence number for debugging. */
+
+	double release_time;	/* Time stamp in format returned by dtime_now(). */
+				/* When to release from the SATgate mode delay queue. */
+
+#define MAGIC 0x41583235
+
+	struct packet_s *nextp;	/* Pointer to next in queue. */
+
+	int num_addr;		/* Number of addresses in frame. */
+				/* Range of AX25_MIN_ADDRS .. AX25_MAX_ADDRS for AX.25. */
+				/* It will be 0 if it doesn't look like AX.25. */
+				/* -1 is used temporarily at allocation to mean */
+				/* not determined yet. */
+
+
+
+				/*
+				 * The 7th octet of each address contains:
+					 *
+				 * Bits:   H  R  R  SSID  0
+				 *
+				 *   H 		for digipeaters set to 0 initially.
+				 *		Changed to 1 when position has been used.
+				 *
+				 *		for source & destination it is called
+				 *		command/response.  Normally both 1 for APRS.
+				 *		They should be opposites for connected mode.
+				 *
+				 *   R	R	Reserved.  Normally set to 1 1.
+				 *
+				 *   SSID	Substation ID.  Range of 0 - 15.
+				 *
+				 *   0		Usually 0 but 1 for last address.
+				 */
+
+
+#define SSID_H_MASK	0x80
+#define SSID_H_SHIFT	7
+
+#define SSID_RR_MASK	0x60
+#define SSID_RR_SHIFT	5
+
+#define SSID_SSID_MASK	0x1e
+#define SSID_SSID_SHIFT	1
+
+#define SSID_LAST_MASK	0x01
+
+
+	int frame_len;		/* Frame length without CRC. */
+
+	int modulo;		/* I & S frames have sequence numbers of either 3 bits (modulo 8) */
+				/* or 7 bits (modulo 128).  This is conveyed by either 1 or 2 */
+				/* control bytes.  Unfortunately, we can't determine this by looking */
+				/* at an isolated frame.  We need to know about the context.  If we */
+				/* are part of the conversation, we would know.  But if we are */
+				/* just listening to others, this would be more difficult to determine. */
+
+				/* For U frames:   	set to 0 - not applicable */
+				/* For I & S frames:	8 or 128 if known.  0 if unknown. */
+
+	unsigned char frame_data[AX25_MAX_PACKET_LEN + 1];
+	/* Raw frame contents, without the CRC. */
+
+
+	int magic2;		/* Will get stomped on if above overflows. */
+};
+
+
+
+typedef struct packet_s *packet_t;
+
+typedef enum cmdres_e { cr_00 = 2, cr_cmd = 1, cr_res = 0, cr_11 = 3 } cmdres_t;
+
+
+extern packet_t ax25_new(void);
+
+
+#ifdef AX25_PAD_C	/* Keep this hidden - implementation could change. */
+
+
+/*
+ * APRS always has one control octet of 0x03 but the more
+ * general AX.25 case is one or two control bytes depending on
+ * whether "modulo 128 operation" is in effect.
+ */
+
+ //#define DEBUGX 1
+
+static inline int ax25_get_control_offset(packet_t this_p)
+{
+	return (this_p->num_addr * 7);
+}
+
+static inline int ax25_get_num_control(packet_t this_p)
+{
+	int c;
+
+	c = this_p->frame_data[ax25_get_control_offset(this_p)];
+
+	if ((c & 0x01) == 0) {			/* I   xxxx xxx0 */
+#if DEBUGX
+		Debugprintf("ax25_get_num_control, %02x is I frame, returns %d\n", c, (this_p->modulo == 128) ? 2 : 1);
+#endif
+		return ((this_p->modulo == 128) ? 2 : 1);
+	}
+
+	if ((c & 0x03) == 1) {			/* S   xxxx xx01 */
+#if DEBUGX
+		Debugprintf("ax25_get_num_control, %02x is S frame, returns %d\n", c, (this_p->modulo == 128) ? 2 : 1);
+#endif
+		return ((this_p->modulo == 128) ? 2 : 1);
+	}
+
+#if DEBUGX
+	Debugprintf("ax25_get_num_control, %02x is U frame, always returns 1.\n", c);
+#endif
+
+	return (1);					/* U   xxxx xx11 */
+}
+
+
+
+/*
+ * APRS always has one protocol octet of 0xF0 meaning no level 3
+ * protocol but the more general case is 0, 1 or 2 protocol ID octets.
+ */
+
+static inline int ax25_get_pid_offset(packet_t this_p)
+{
+	return (ax25_get_control_offset(this_p) + ax25_get_num_control(this_p));
+}
+
+static int ax25_get_num_pid(packet_t this_p)
+{
+	int c;
+	int pid;
+
+	c = this_p->frame_data[ax25_get_control_offset(this_p)];
+
+	if ((c & 0x01) == 0 ||				/* I   xxxx xxx0 */
+		c == 0x03 || c == 0x13) {			/* UI  000x 0011 */
+
+		pid = this_p->frame_data[ax25_get_pid_offset(this_p)];
+#if DEBUGX
+		Debugprintf("ax25_get_num_pid, %02x is I or UI frame, pid = %02x, returns %d\n", c, pid, (pid == AX25_PID_ESCAPE_CHARACTER) ? 2 : 1);
+#endif
+		if (pid == AX25_PID_ESCAPE_CHARACTER) {
+			return (2);			/* pid 1111 1111 means another follows. */
+		}
+		return (1);
+	}
+#if DEBUGX
+	Debugprintf("ax25_get_num_pid, %02x is neither I nor UI frame, returns 0\n", c);
+#endif
+	return (0);
+}
+
+
+/*
+ * AX.25 has info field for 5 frame types depending on the control field.
+ *
+ *	xxxx xxx0	I
+ *	000x 0011	UI		(which includes APRS)
+ *	101x 1111	XID
+ *	111x 0011	TEST
+ *	100x 0111	FRMR
+ *
+ * APRS always has an Information field with at least one octet for the Data Type Indicator.
+ */
+
+static inline int ax25_get_info_offset(packet_t this_p)
+{
+	int offset = ax25_get_control_offset(this_p) + ax25_get_num_control(this_p) + ax25_get_num_pid(this_p);
+#if DEBUGX
+	Debugprintf("ax25_get_info_offset, returns %d\n", offset);
+#endif
+	return (offset);
+}
+
+static inline int ax25_get_num_info(packet_t this_p)
+{
+	int len;
+
+	/* assuming AX.25 frame. */
+
+	len = this_p->frame_len - this_p->num_addr * 7 - ax25_get_num_control(this_p) - ax25_get_num_pid(this_p);
+	if (len < 0) {
+		len = 0;		/* print error? */
+	}
+
+	return (len);
+}
+
+#endif
+
+
+typedef enum ax25_modulo_e { modulo_unknown = 0, modulo_8 = 8, modulo_128 = 128 } ax25_modulo_t;
+
+typedef enum ax25_frame_type_e {
+
+	frame_type_I = 0,	// Information
+
+	frame_type_S_RR,	// Receive Ready - System Ready To Receive
+	frame_type_S_RNR,	// Receive Not Ready - TNC Buffer Full
+	frame_type_S_REJ,	// Reject Frame - Out of Sequence or Duplicate
+	frame_type_S_SREJ,	// Selective Reject - Request single frame repeat
+
+	frame_type_U_SABME,	// Set Async Balanced Mode, Extended
+	frame_type_U_SABM,	// Set Async Balanced Mode
+	frame_type_U_DISC,	// Disconnect
+	frame_type_U_DM,	// Disconnect Mode
+	frame_type_U_UA,	// Unnumbered Acknowledge
+	frame_type_U_FRMR,	// Frame Reject
+	frame_type_U_UI,	// Unnumbered Information
+	frame_type_U_XID,	// Exchange Identification
+	frame_type_U_TEST,	// Test
+	frame_type_U,		// other Unnumbered, not used by AX.25.
+
+	frame_not_AX25		// Could not get control byte from frame.
+				// This must be last because value plus 1 is
+				// for the size of an array.
+
+} ax25_frame_type_t;
+
+
+/*
+ * Originally this was a single number.
+ * Let's try something new in version 1.2.
+ * Also collect AGC values from the mark and space filters.
+ */
+
+#ifndef AXTEST
+// TODO: remove this?
+#define AX25MEMDEBUG 1
+#endif
+
+
+
+extern packet_t ax25_from_text(char *monitor, int strict);
+
+extern packet_t ax25_from_frame(unsigned char *data, int len, alevel_t alevel);
+
+extern packet_t ax25_dup(packet_t copy_from);
+
+extern void ax25_delete(packet_t pp);
+
+
+
+extern int ax25_parse_addr(int position, char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard);
+extern int ax25_check_addresses(packet_t pp);
+
+extern packet_t ax25_unwrap_third_party(packet_t from_pp);
+
+extern void ax25_set_addr(packet_t pp, int, char *);
+extern void ax25_insert_addr(packet_t this_p, int n, char *ad);
+extern void ax25_remove_addr(packet_t this_p, int n);
+
+extern int ax25_get_num_addr(packet_t pp);
+extern int ax25_get_num_repeaters(packet_t this_p);
+
+extern void ax25_get_addr_with_ssid(packet_t pp, int n, char *station);
+extern void ax25_get_addr_no_ssid(packet_t pp, int n, char *station);
+
+extern int ax25_get_ssid(packet_t pp, int n);
+extern void ax25_set_ssid(packet_t this_p, int n, int ssid);
+
+extern int ax25_get_h(packet_t pp, int n);
+
+extern void ax25_set_h(packet_t pp, int n);
+
+extern int ax25_get_heard(packet_t this_p);
+
+extern int ax25_get_first_not_repeated(packet_t pp);
+
+extern int ax25_get_rr(packet_t this_p, int n);
+
+extern int ax25_get_info(packet_t pp, unsigned char **paddr);
+extern void ax25_set_info(packet_t pp, unsigned char *info_ptr, int info_len);
+extern int ax25_cut_at_crlf(packet_t this_p);
+
+extern void ax25_set_nextp(packet_t this_p, packet_t next_p);
+
+extern int ax25_get_dti(packet_t this_p);
+
+extern packet_t ax25_get_nextp(packet_t this_p);
+
+extern void ax25_set_release_time(packet_t this_p, double release_time);
+extern double ax25_get_release_time(packet_t this_p);
+
+extern void ax25_set_modulo(packet_t this_p, int modulo);
+extern int ax25_get_modulo(packet_t this_p);
+
+extern void ax25_format_addrs(packet_t pp, char *);
+extern void ax25_format_via_path(packet_t this_p, char *result, size_t result_size);
+
+extern int ax25_pack(packet_t pp, unsigned char result[AX25_MAX_PACKET_LEN]);
+
+extern ax25_frame_type_t ax25_frame_type(packet_t this_p, cmdres_t *cr, char *desc, int *pf, int *nr, int *ns);
+
+extern void ax25_hex_dump(packet_t this_p);
+
+extern int ax25_is_aprs(packet_t pp);
+extern int ax25_is_null_frame(packet_t this_p);
+
+extern int ax25_get_control(packet_t this_p);
+extern int ax25_get_c2(packet_t this_p);
+
+extern int ax25_get_pid(packet_t this_p);
+
+extern int ax25_get_frame_len(packet_t this_p);
+extern unsigned char *ax25_get_frame_data_ptr(packet_t this_p);
+
+extern unsigned short ax25_dedupe_crc(packet_t pp);
+
+extern unsigned short ax25_m_m_crc(packet_t pp);
+
+extern void ax25_safe_print(char *, int, int ascii_only);
+
+#define AX25_ALEVEL_TO_TEXT_SIZE 40	// overkill but safe.
+extern int ax25_alevel_to_text(alevel_t alevel, char text[AX25_ALEVEL_TO_TEXT_SIZE]);
+
+
+#endif /* AX25_PAD_H */
+
+/* end ax25_pad.h */
+
+
+
+
+#define CTAG_MIN 0x01
+#define CTAG_MAX 0x0B
+
+// Maximum sizes of "data" and "check" parts.
+
+#define FX25_MAX_DATA 239	// i.e. RS(255,239)
+#define FX25_MAX_CHECK 64	// e.g. RS(255, 191)
+#define FX25_BLOCK_SIZE 255	// Block size always 255 for 8 bit symbols.
+
+#endif // FX25_H
+
+#ifndef IL2P_H
+#define IL2P_H 1
+
+
+#define IL2P_PREAMBLE 0x55
+
+#define IL2P_SYNC_WORD 0xF15E48
+
+#define IL2P_SYNC_WORD_SIZE 3
+#define IL2P_HEADER_SIZE 13	// Does not include 2 parity.
+#define IL2P_HEADER_PARITY 2
+
+#define IL2P_MAX_PAYLOAD_SIZE 1023
+#define IL2P_MAX_PAYLOAD_BLOCKS 5
+#define IL2P_MAX_PARITY_SYMBOLS 16		// For payload only.
+#define IL2P_MAX_ENCODED_PAYLOAD_SIZE (IL2P_MAX_PAYLOAD_SIZE + IL2P_MAX_PAYLOAD_BLOCKS * IL2P_MAX_PARITY_SYMBOLS)
+
+#define IL2P_MAX_PACKET_SIZE (IL2P_SYNC_WORD_SIZE + IL2P_HEADER_SIZE + IL2P_HEADER_PARITY + IL2P_MAX_ENCODED_PAYLOAD_SIZE)
+
+
+float GuessCentreFreq(int i)
+{
+	float Freq = 0;
+	float Start;
+	float End;
+	int n;
+	float Max = 0;
+	int Index = 0;
+
+	Start = (rx_freq[i] - RCVR[i] * rcvr_offset[i]) / BinSize;
+	End = (rx_freq[i] + RCVR[i] * rcvr_offset[i]) / BinSize;
+
+	for (n = Start; n <= End; n++)
+	{
+		if (MagOut[n] > Max)
+		{
+			Max = MagOut[n];
+			Index = n;
+		}
+	}
+
+	Freq = Index * BinSize;
+
+	return Freq;
+}
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_new
+ *
+ * Purpose:	Allocate memory for a new packet object.
+ *
+ * Returns:	Identifier for a new packet object.
+ *		In the current implementation this happens to be a pointer.
+ *
+ *------------------------------------------------------------------------------*/
+
+int last_seq_num = 0;
+int new_count = 0;
+int delete_count = 0;
+
+packet_t ax25_new(void)
+{
+	struct packet_s *this_p;
+
+
+#if DEBUG 
+	text_color_set(DW_COLOR_DEBUG);
+	Debugprintf("ax25_new(): before alloc, new=%d, delete=%d\n", new_count, delete_count);
+#endif
+
+	last_seq_num++;
+	new_count++;
+
+	/*
+	 * check for memory leak.
+	 */
+
+	 // version 1.4 push up the threshold.   We could have considerably more with connected mode.
+
+		 //if (new_count > delete_count + 100) {
+	if (new_count > delete_count + 256) {
+
+		Debugprintf("Report to WB2OSZ - Memory leak for packet objects.  new=%d, delete=%d\n", new_count, delete_count);
+#if AX25MEMDEBUG
+#endif
+	}
+
+	this_p = calloc(sizeof(struct packet_s), (size_t)1);
+
+	if (this_p == NULL) {
+		Debugprintf("ERROR - can't allocate memory in ax25_new.\n");
+	}
+
+//	assert(this_p != NULL);
+
+	this_p->magic1 = MAGIC;
+	this_p->seq = last_seq_num;
+	this_p->magic2 = MAGIC;
+	this_p->num_addr = (-1);
+
+	return (this_p);
+}
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_delete
+ *
+ * Purpose:	Destroy a packet object, freeing up memory it was using.
+ *
+ *------------------------------------------------------------------------------*/
+
+void ax25_delete(packet_t this_p)
+{
+	if (this_p == NULL) {
+		Debugprintf("ERROR - NULL pointer passed to ax25_delete.\n");
+		return;
+	}
+
+	delete_count++;
+
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	this_p->magic1 = 0;
+	this_p->magic1 = 0;
+
+	free(this_p);
+}
+
+
+
+
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_s_frame
+ *
+ * Purpose:	Construct an S frame.
+ *
+ * Input:	addrs		- Array of addresses.
+ *
+ *		num_addr	- Number of addresses, range 2 .. 10.
+ *
+ *		cr		- cr_cmd command frame, cr_res for a response frame.
+ *
+ *		ftype		- One of:
+ *				        frame_type_S_RR,        // Receive Ready - System Ready To Receive
+ *				        frame_type_S_RNR,       // Receive Not Ready - TNC Buffer Full
+ *				        frame_type_S_REJ,       // Reject Frame - Out of Sequence or Duplicate
+ *				        frame_type_S_SREJ,      // Selective Reject - Request single frame repeat
+ *
+ *		modulo		- 8 or 128.  Determines if we have 1 or 2 control bytes.
+ *
+ *		nr		- N(R) field --- describe.
+ *
+ *		pf		- Poll/Final flag.
+ *
+ *		pinfo		- Pointer to data for Info field.  Allowed only for SREJ.
+ *
+ *		info_len	- Length for Info field.
+ *
+ *
+ * Returns:	Pointer to new packet object.
+ *
+ *------------------------------------------------------------------------------*/
+
+
+packet_t ax25_s_frame(char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int modulo, int nr, int pf, unsigned char *pinfo, int info_len)
+{
+	packet_t this_p;
+	unsigned char *p;
+	int ctrl = 0;
+
+	this_p = ax25_new();
+
+	if (this_p == NULL) return (NULL);
+
+	if (!set_addrs(this_p, addrs, num_addr, cr)) {
+		Debugprintf("Internal error in %s: Could not set addresses for S frame.\n", __func__);
+		ax25_delete(this_p);
+		return (NULL);
+	}
+
+	if (modulo != 8 && modulo != 128) {
+		Debugprintf("Internal error in %s: Invalid modulo %d for S frame.\n", __func__, modulo);
+		modulo = 8;
+	}
+	this_p->modulo = modulo;
+
+	if (nr < 0 || nr >= modulo) {
+		Debugprintf("Internal error in %s: Invalid N(R) %d for S frame.\n", __func__, nr);
+		nr &= (modulo - 1);
+	}
+
+	// Erratum: The AX.25 spec is not clear about whether SREJ should be command, response, or both.
+	// The underlying X.25 spec clearly says it is response only.  Let's go with that.
+
+	if (ftype == frame_type_S_SREJ && cr != cr_res) {
+		Debugprintf("Internal error in %s: SREJ must be response.\n", __func__);
+	}
+
+	switch (ftype) {
+
+	case frame_type_S_RR:		ctrl = 0x01;	break;
+	case frame_type_S_RNR:	ctrl = 0x05;	break;
+	case frame_type_S_REJ:	ctrl = 0x09;	break;
+	case frame_type_S_SREJ:	ctrl = 0x0d;	break;
+
+	default:
+		Debugprintf("Internal error in %s: Invalid ftype %d for S frame.\n", __func__, ftype);
+		ax25_delete(this_p);
+		return (NULL);
+		break;
+	}
+
+	p = this_p->frame_data + this_p->frame_len;
+
+	if (modulo == 8) {
+		if (pf) ctrl |= 0x10;
+		ctrl |= nr << 5;
+		*p++ = ctrl;
+		this_p->frame_len++;
+	}
+	else {
+		*p++ = ctrl;
+		this_p->frame_len++;
+
+		ctrl = pf & 1;
+		ctrl |= nr << 1;
+		*p++ = ctrl;
+		this_p->frame_len++;
+	}
+
+	if (ftype == frame_type_S_SREJ) {
+		if (pinfo != NULL && info_len > 0) {
+			if (info_len > AX25_MAX_INFO_LEN) {
+				Debugprintf("Internal error in %s: SREJ frame, Invalid information field length %d.\n", __func__, info_len);
+				info_len = AX25_MAX_INFO_LEN;
+			}
+			memcpy(p, pinfo, info_len);
+			p += info_len;
+			this_p->frame_len += info_len;
+		}
+	}
+	else {
+		if (pinfo != NULL || info_len != 0) {
+			Debugprintf("Internal error in %s: Info part not allowed for RR, RNR, REJ frame.\n", __func__);
+		}
+	}
+	*p = '\0';
+
+
+	return (this_p);
+
+} /* end ax25_s_frame */
+
+
+
+
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_i_frame
+ *
+ * Purpose:	Construct an I frame.
+ *
+ * Input:	addrs		- Array of addresses.
+ *
+ *		num_addr	- Number of addresses, range 2 .. 10.
+ *
+ *		cr		- cr_cmd command frame, cr_res for a response frame.
+ *
+ *		modulo		- 8 or 128.
+ *
+ *		nr		- N(R) field --- describe.
+ *
+ *		ns		- N(S) field --- describe.
+ *
+ *		pf		- Poll/Final flag.
+ *
+ *		pid		- Protocol ID.
+ *				  Normally 0xf0 meaning no level 3.
+ *				  Could be other values for NET/ROM, etc.
+ *
+ *		pinfo		- Pointer to data for Info field.
+ *
+ *		info_len	- Length for Info field.
+ *
+ *
+ * Returns:	Pointer to new packet object.
+ *
+ *------------------------------------------------------------------------------*/
+
+packet_t ax25_i_frame(char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, int modulo, int nr, int ns, int pf, int pid, unsigned char *pinfo, int info_len)
+{
+	packet_t this_p;
+	unsigned char *p;
+	int ctrl = 0;
+
+	this_p = ax25_new();
+
+	if (this_p == NULL) return (NULL);
+
+	if (!set_addrs(this_p, addrs, num_addr, cr)) {
+		Debugprintf("Internal error in %s: Could not set addresses for I frame.\n", __func__);
+		ax25_delete(this_p);
+		return (NULL);
+	}
+
+	if (modulo != 8 && modulo != 128) {
+		Debugprintf("Internal error in %s: Invalid modulo %d for I frame.\n", __func__, modulo);
+		modulo = 8;
+	}
+	this_p->modulo = modulo;
+
+	if (nr < 0 || nr >= modulo) {
+		Debugprintf("Internal error in %s: Invalid N(R) %d for I frame.\n", __func__, nr);
+		nr &= (modulo - 1);
+	}
+
+	if (ns < 0 || ns >= modulo) {
+		Debugprintf("Internal error in %s: Invalid N(S) %d for I frame.\n", __func__, ns);
+		ns &= (modulo - 1);
+	}
+
+	p = this_p->frame_data + this_p->frame_len;
+
+	if (modulo == 8) {
+		ctrl = (nr << 5) | (ns << 1);
+		if (pf) ctrl |= 0x10;
+		*p++ = ctrl;
+		this_p->frame_len++;
+	}
+	else {
+		ctrl = ns << 1;
+		*p++ = ctrl;
+		this_p->frame_len++;
+
+		ctrl = nr << 1;
+		if (pf) ctrl |= 0x01;
+		*p++ = ctrl;
+		this_p->frame_len++;
+	}
+
+	// Definitely don't want pid value of 0 (not in valid list)
+	// or 0xff (which means more bytes follow).
+
+	if (pid < 0 || pid == 0 || pid == 0xff) {
+		Debugprintf("Warning: Client application provided invalid PID value, 0x%02x, for I frame.\n", pid);
+		pid = AX25_PID_NO_LAYER_3;
+	}
+	*p++ = pid;
+	this_p->frame_len++;
+
+	if (pinfo != NULL && info_len > 0) {
+		if (info_len > AX25_MAX_INFO_LEN) {
+			Debugprintf("Internal error in %s: I frame, Invalid information field length %d.\n", __func__, info_len);
+			info_len = AX25_MAX_INFO_LEN;
+		}
+		memcpy(p, pinfo, info_len);
+		p += info_len;
+		this_p->frame_len += info_len;
+	}
+
+	*p = '\0';
+
+
+	return (this_p);
+
+} /* end ax25_i_frame */
+
+
+
+
+
+extern TStringList detect_list[5];
+extern TStringList detect_list_c[5];
+
+void multi_modem_process_rec_packet(int snd_ch, int subchan, int slice, packet_t pp, alevel_t alevel, retry_t retries, int is_fx25, int emph, int centreFreq)
+{
+	// Convert to QtSM internal format
+
+	struct TDetector_t * pDET = &DET[emph][subchan];
+	string *  data = newString();
+	char Mode[16] = "IL2P";
+
+	sprintf(Mode, "IL2P %d", centreFreq);
+
+	stringAdd(data, pp->frame_data, pp->frame_len + 2);  // QTSM assumes a CRC
+
+	ax25_delete(pp);
+
+	if (retries)
+	{
+		pDET->rx_decoded = decodedFEC;
+		pDET->emph_decoded = decodedFEC;
+		pDET->errors = retries;
+	}
+	else
+	{
+		pDET->rx_decoded = decodedNormal;
+		pDET->emph_decoded = decodedNormal;
+		pDET->errors = 0;
+	}
+
+	if (detect_list[snd_ch].Count > 0 &&
+		my_indexof(&detect_list[snd_ch], data) >= 0)
+	{
+		// Already have a copy of this frame
+
+		freeString(data);
+		Debugprintf("Discarding copy rcvr %d emph %d", subchan, 0);
+		return;
+	}
+
+	string * xx = newString();
+	memset(xx->Data, 0, 16);
+
+	Add(&detect_list_c[snd_ch], xx);
+	Add(&detect_list[snd_ch], data);
+
+//	if (retries)
+//		sprintf(Mode, "IP2P-%d", retries);
+
+	stringAdd(xx, Mode, strlen(Mode));
+	return;
+
+}
+
+
+
+
+alevel_t demod_get_audio_level(int chan, int subchan)
+{
+	alevel_t alevel;
+	alevel.rec = 0;
+	alevel.mark = 0;
+	alevel.space = 0;
+	return (alevel);
+}
+
+void ax25_hex_dump(packet_t this_p)
+{}
+
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_from_frame
+ *
+ * Purpose:	Split apart an HDLC frame to components.
+ *
+ * Inputs:	fbuf	- Pointer to beginning of frame.
+ *
+ *		flen	- Length excluding the two FCS bytes.
+ *
+ *		alevel	- Audio level of received signal.
+ *			  Maximum range 0 - 100.
+ *			  -1 might be used when not applicable.
+ *
+ * Returns:	Pointer to new packet object or NULL if error.
+ *
+ * Outputs:	Use the "get" functions to retrieve information in different ways.
+ *
+ *------------------------------------------------------------------------------*/
+
+
+packet_t ax25_from_frame(unsigned char *fbuf, int flen, alevel_t alevel)
+{
+	packet_t this_p;
+
+
+	/*
+	 * First make sure we have an acceptable length:
+	 *
+	 *	We are not concerned with the FCS (CRC) because someone else checked it.
+	 *
+	 * Is is possible to have zero length for info?
+	 *
+	 * In the original version, assuming APRS, the answer was no.
+	 * We always had at least 3 octets after the address part:
+	 * control, protocol, and first byte of info part for data type.
+	 *
+	 * In later versions, this restriction was relaxed so other
+	 * variations of AX.25 could be used.  Now the minimum length
+	 * is 7+7 for addresses plus 1 for control.
+	 *
+	 */
+
+
+	if (flen < AX25_MIN_PACKET_LEN || flen > AX25_MAX_PACKET_LEN)
+	{
+		Debugprintf("Frame length %d not in allowable range of %d to %d.", flen, AX25_MIN_PACKET_LEN, AX25_MAX_PACKET_LEN);
+		return (NULL);
+	}
+
+	this_p = ax25_new();
+
+	/* Copy the whole thing intact. */
+
+	memcpy(this_p->frame_data, fbuf, flen);
+	this_p->frame_data[flen] = 0;
+	this_p->frame_len = flen;
+
+	/* Find number of addresses. */
+
+	this_p->num_addr = (-1);
+	(void)ax25_get_num_addr(this_p);
+
+	return (this_p);
+}
+
+
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_get_num_addr
+ *
+ * Purpose:	Return number of addresses in current packet.
+ *
+ * Assumption:	ax25_from_text or ax25_from_frame was called first.
+ *
+ * Returns:	Number of addresses in the current packet.
+ *		Should be in the range of 2 .. AX25_MAX_ADDRS.
+ *
+ * Version 0.9:	Could be zero for a non AX.25 frame in KISS mode.
+ *
+ *------------------------------------------------------------------------------*/
+
+int ax25_get_num_addr(packet_t this_p)
+{
+	//unsigned char *pf;
+	int a;
+	int addr_bytes;
+
+
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	/* Use cached value if already set. */
+
+	if (this_p->num_addr >= 0) {
+		return (this_p->num_addr);
+	}
+
+	/* Otherwise, determine the number ofaddresses. */
+
+	this_p->num_addr = 0;		/* Number of addresses extracted. */
+
+	addr_bytes = 0;
+	for (a = 0; a < this_p->frame_len && addr_bytes == 0; a++) {
+		if (this_p->frame_data[a] & SSID_LAST_MASK) {
+			addr_bytes = a + 1;
+		}
+	}
+
+	if (addr_bytes % 7 == 0) {
+		int addrs = addr_bytes / 7;
+		if (addrs >= AX25_MIN_ADDRS && addrs <= AX25_MAX_ADDRS) {
+			this_p->num_addr = addrs;
+		}
+	}
+
+	return (this_p->num_addr);
+}
+
+
+
+void ax25_get_addr_with_ssid(packet_t pp, int n, char *station)
+{}
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_get_addr_no_ssid
+ *
+ * Purpose:	Return specified address WITHOUT any SSID.
+ *
+ * Inputs:	n	- Index of address.   Use the symbols
+ *			  AX25_DESTINATION, AX25_SOURCE, AX25_REPEATER1, etc.
+ *
+ * Outputs:	station - String representation of the station, WITHOUT the SSID.
+ *			e.g.  "WB2OSZ"
+ *			  Usually variables will be AX25_MAX_ADDR_LEN bytes
+ *			  but 7 would be adequate.
+ *
+ * Bugs:	No bounds checking is performed.  Be careful.
+ *
+ * Assumption:	ax25_from_text or ax25_from_frame was called first.
+ *
+ * Returns:	Character string in usual human readable format,
+ *
+ *
+ *------------------------------------------------------------------------------*/
+
+void ax25_get_addr_no_ssid(packet_t this_p, int n, char *station)
+{
+	int i;
+
+	//assert(this_p->magic1 == MAGIC);
+	//assert(this_p->magic2 == MAGIC);
+
+
+	if (n < 0) {
+		Debugprintf("Internal error detected in ax25_get_addr_no_ssid, %s, line %d.\n", __FILE__, __LINE__);
+		Debugprintf("Address index, %d, is less than zero.\n", n);
+		strcpy(station, "??????");
+		return;
+	}
+
+	if (n >= this_p->num_addr) {
+		Debugprintf("Internal error detected in ax25_get_no_with_ssid, %s, line %d.\n", __FILE__, __LINE__);
+		Debugprintf("Address index, %d, is too large for number of addresses, %d.\n", n, this_p->num_addr);
+		strcpy(station, "??????");
+		return;
+	}
+
+	// At one time this would stop at the first space, on the assumption we would have only trailing spaces.
+	// Then there was a forum discussion where someone encountered the address " WIDE2" with a leading space.
+	// In that case, we would have returned a zero length string here.
+	// Now we return exactly what is in the address field and trim trailing spaces.
+	// This will provide better information for troubleshooting.
+
+	for (i = 0; i < 6; i++) {
+		station[i] = (this_p->frame_data[n * 7 + i] >> 1) & 0x7f;
+	}
+	station[6] = '\0';
+
+	for (i = 5; i >= 0; i--) {
+		if (station[i] == ' ')
+			station[i] = '\0';
+		else
+			break;
+	}
+
+	if (strlen(station) == 0) {
+		Debugprintf("Station address, in position %d, is empty!  This is not a valid AX.25 frame.\n", n);
+	}
+
+} /* end ax25_get_addr_no_ssid */
+
+
+/*------------------------------------------------------------------------------
+ *
+ * Name:	ax25_get_ssid
+ *
+ * Purpose:	Return SSID of specified address in current packet.
+ *
+ * Inputs:	n	- Index of address.   Use the symbols
+ *			  AX25_DESTINATION, AX25_SOURCE, AX25_REPEATER1, etc.
+ *
+ * Assumption:	ax25_from_text or ax25_from_frame was called first.
+ *
+ * Returns:	Substation id, as integer 0 .. 15.
+ *
+ *------------------------------------------------------------------------------*/
+
+int ax25_get_ssid(packet_t this_p, int n)
+{
+
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	if (n >= 0 && n < this_p->num_addr) {
+		return ((this_p->frame_data[n * 7 + 6] & SSID_SSID_MASK) >> SSID_SSID_SHIFT);
+	}
+	else {
+		Debugprintf("Internal error: ax25_get_ssid(%d), num_addr=%d\n", n, this_p->num_addr);
+		return (0);
+	}
+}
+
+
+
+static inline int ax25_get_pid_offset(packet_t this_p)
+{
+	return (ax25_get_control_offset(this_p) + ax25_get_num_control(this_p));
+}
+
+static int ax25_get_num_pid(packet_t this_p)
+{
+	int c;
+	int pid;
+
+	c = this_p->frame_data[ax25_get_control_offset(this_p)];
+
+	if ((c & 0x01) == 0 ||				/* I   xxxx xxx0 */
+		c == 0x03 || c == 0x13) {			/* UI  000x 0011 */
+
+		pid = this_p->frame_data[ax25_get_pid_offset(this_p)];
+		if (pid == AX25_PID_ESCAPE_CHARACTER) {
+			return (2);			/* pid 1111 1111 means another follows. */
+		}
+		return (1);
+	}
+	return (0);
+}
+
+
+inline int ax25_get_control_offset(packet_t this_p)
+{
+	return (this_p->num_addr * 7);
+}
+
+inline int ax25_get_num_control(packet_t this_p)
+{
+	int c;
+
+	c = this_p->frame_data[ax25_get_control_offset(this_p)];
+
+	if ((c & 0x01) == 0) {			/* I   xxxx xxx0 */
+		return ((this_p->modulo == 128) ? 2 : 1);
+	}
+
+	if ((c & 0x03) == 1) {			/* S   xxxx xx01 */
+		return ((this_p->modulo == 128) ? 2 : 1);
+	}
+
+	return (1);					/* U   xxxx xx11 */
+}
+
+
+
+
+int ax25_get_info_offset(packet_t this_p)
+{
+	int offset = ax25_get_control_offset(this_p) + ax25_get_num_control(this_p) + ax25_get_num_pid(this_p);
+	return (offset);
+}
+
+int ax25_get_num_info(packet_t this_p)
+{
+	int len;
+
+	/* assuming AX.25 frame. */
+
+	len = this_p->frame_len - this_p->num_addr * 7 - ax25_get_num_control(this_p) - ax25_get_num_pid(this_p);
+	if (len < 0) {
+		len = 0;		/* print error? */
+	}
+
+	return (len);
+}
+
+
+
+
+
+	/*------------------------------------------------------------------------------
+	 *
+	 * Name:	ax25_get_info
+	 *
+	 * Purpose:	Obtain Information part of current packet.
+	 *
+	 * Inputs:	this_p	- Packet object pointer.
+	 *
+	 * Outputs:	paddr	- Starting address of information part is returned here.
+	 *
+	 * Assumption:	ax25_from_text or ax25_from_frame was called first.
+	 *
+	 * Returns:	Number of octets in the Information part.
+	 *		Should be in the range of AX25_MIN_INFO_LEN .. AX25_MAX_INFO_LEN.
+	 *
+	 *------------------------------------------------------------------------------*/
+
+int ax25_get_info(packet_t this_p, unsigned char **paddr)
+{
+	unsigned char *info_ptr;
+	int info_len;
+
+
+	//assert(this_p->magic1 == MAGIC);
+	//assert(this_p->magic2 == MAGIC);
+
+	if (this_p->num_addr >= 2) {
+
+		/* AX.25 */
+
+		info_ptr = this_p->frame_data + ax25_get_info_offset(this_p);
+		info_len = ax25_get_num_info(this_p);
+	}
+	else {
+
+		/* Not AX.25.  Treat Whole packet as info. */
+
+		info_ptr = this_p->frame_data;
+		info_len = this_p->frame_len;
+	}
+
+	/* Add nul character in case caller treats as printable string. */
+
+//		assert(info_len >= 0);
+
+	info_ptr[info_len] = '\0';
+
+	*paddr = info_ptr;
+	return (info_len);
+
+} /* end ax25_get_info */
+
+
+
+
+void ax25_set_info(packet_t this_p, unsigned char *new_info_ptr, int new_info_len)
+{
+	unsigned char *old_info_ptr;
+	int old_info_len = ax25_get_info(this_p, &old_info_ptr);
+	this_p->frame_len -= old_info_len;
+
+	if (new_info_len < 0) new_info_len = 0;
+	if (new_info_len > AX25_MAX_INFO_LEN) new_info_len = AX25_MAX_INFO_LEN;
+	memcpy(old_info_ptr, new_info_ptr, new_info_len);
+	this_p->frame_len += new_info_len;
+}
+
+int ax25_get_pid(packet_t this_p)
+{
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	// TODO: handle 2 control byte case.
+	// TODO: sanity check: is it I or UI frame?
+
+	if (this_p->frame_len == 0) return(-1);
+
+	if (this_p->num_addr >= 2) {
+		return (this_p->frame_data[ax25_get_pid_offset(this_p)]);
+	}
+	return (-1);
+}
+
+
+int ax25_get_frame_len(packet_t this_p)
+{
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+//	assert(this_p->frame_len >= 0 && this_p->frame_len <= AX25_MAX_PACKET_LEN);
+
+	return (this_p->frame_len);
+
+} /* end ax25_get_frame_len */
+
+
+unsigned char *ax25_get_frame_data_ptr(packet_t this_p)
+{
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	return (this_p->frame_data);
+
+} /* end ax25_get_frame_data_ptr */
+
+
+int ax25_get_modulo(packet_t this_p)
+{
+	return 7;
+}
+
+
+/*------------------------------------------------------------------
+ *
+ * Function:	ax25_get_control
+		ax25_get_c2
+ *
+ * Purpose:	Get Control field from packet.
+ *
+ * Inputs:	this_p	- pointer to packet object.
+ *
+ * Returns:	APRS uses AX25_UI_FRAME.
+ *		This could also be used in other situations.
+ *
+ *------------------------------------------------------------------*/
+
+
+int ax25_get_control(packet_t this_p)
+{
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+	if (this_p->frame_len == 0) return(-1);
+
+	if (this_p->num_addr >= 2) {
+		return (this_p->frame_data[ax25_get_control_offset(this_p)]);
+	}
+	return (-1);
+}
+
+
+/*------------------------------------------------------------------
+*
+* Function:	ax25_frame_type
+*
+* Purpose : Extract the type of frame.
+*		This is derived from the control byte(s) but
+*		is an enumerated type for easier handling.
+*
+* Inputs : this_p - pointer to packet object.
+*
+* Outputs : desc - Text description such as "I frame" or
+*"U frame SABME".
+*			  Supply 56 bytes to be safe.
+*
+*		cr - Command or response ?
+*
+*		pf - P / F - Poll / Final or -1 if not applicable
+*
+*		nr - N(R) - receive sequence or -1 if not applicable.
+*
+*		ns - N(S) - send sequence or -1 if not applicable.
+*
+* Returns:	Frame type from  enum ax25_frame_type_e.
+*
+*------------------------------------------------------------------*/
+
+// TODO: need someway to ensure caller allocated enough space.
+// Should pass in as parameter.
+
+#define DESC_SIZ 56
+
+
+ax25_frame_type_t ax25_frame_type(packet_t this_p, cmdres_t *cr, char *desc, int *pf, int *nr, int *ns)
+{
+	int c;		// U frames are always one control byte.
+	int c2 = 0;	// I & S frames can have second Control byte.
+
+//	assert(this_p->magic1 == MAGIC);
+//	assert(this_p->magic2 == MAGIC);
+
+
+	strcpy(desc, "????");
+	*cr = cr_11;
+	*pf = -1;
+	*nr = -1;
+	*ns = -1;
+
+	c = ax25_get_control(this_p);
+	if (c < 0) {
+		strcpy(desc, "Not AX.25");
+		return (frame_not_AX25);
+	}
+
+	/*
+	 * TERRIBLE HACK :-(  for display purposes.
+	 *
+	 * I and S frames can have 1 or 2 control bytes but there is
+	 * no good way to determine this without dipping into the data
+	 * link state machine.  Can we guess?
+	 *
+	 * S frames have no protocol id or information so if there is one
+	 * more byte beyond the control field, we could assume there are
+	 * two control bytes.
+	 *
+	 * For I frames, the protocol id will usually be 0xf0.  If we find
+	 * that as the first byte of the information field, it is probably
+	 * the pid and not part of the information.  Ditto for segments 0x08.
+	 * Not fool proof but good enough for troubleshooting text out.
+	 *
+	 * If we have a link to the peer station, this will be set properly
+	 * before it needs to be used for other reasons.
+	 *
+	 * Setting one of the RR bits (find reference!) is sounding better and better.
+	 * It's in common usage so I should lobby to get that in the official protocol spec.
+	 */
+
+	// Dont support mod 128
+/*
+	if (this_p->modulo == 0 && (c & 3) == 1 && ax25_get_c2(this_p) != -1) {
+		this_p->modulo = modulo_128;
+	}
+	else if (this_p->modulo == 0 && (c & 1) == 0 && this_p->frame_data[ax25_get_info_offset(this_p)] == 0xF0) {
+		this_p->modulo = modulo_128;
+	}
+	else if (this_p->modulo == 0 && (c & 1) == 0 && this_p->frame_data[ax25_get_info_offset(this_p)] == 0x08) {	// same for segments
+		this_p->modulo = modulo_128;
+	}
+
+
+	if (this_p->modulo == modulo_128) {
+		c2 = ax25_get_c2(this_p);
+	}
+*/
+
+		int dst_c = this_p->frame_data[AX25_DESTINATION * 7 + 6] & SSID_H_MASK;
+		int src_c = this_p->frame_data[AX25_SOURCE * 7 + 6] & SSID_H_MASK;
+
+		char cr_text[8];
+		char pf_text[8];
+
+		if (dst_c) {
+			if (src_c) { *cr = cr_11;  strcpy(cr_text, "cc=11"); strcpy(pf_text, "p/f"); }
+			else { *cr = cr_cmd; strcpy(cr_text, "cmd");   strcpy(pf_text, "p"); }
+		}
+		else {
+			if (src_c) { *cr = cr_res; strcpy(cr_text, "res");   strcpy(pf_text, "f"); }
+			else { *cr = cr_00;  strcpy(cr_text, "cc=00"); strcpy(pf_text, "p/f"); }
+		}
+
+		if ((c & 1) == 0) {
+
+			// Information 			rrr p sss 0		or	sssssss 0  rrrrrrr p
+
+			if (this_p->modulo == modulo_128) {
+				*ns = (c >> 1) & 0x7f;
+				*pf = c2 & 1;
+				*nr = (c2 >> 1) & 0x7f;
+			}
+			else {
+				*ns = (c >> 1) & 7;
+				*pf = (c >> 4) & 1;
+				*nr = (c >> 5) & 7;
+			}
+
+			//snprintf (desc, DESC_SIZ, "I %s, n(s)=%d, n(r)=%d, %s=%d", cr_text, *ns, *nr, pf_text, *pf);
+			sprintf(desc, "I %s, n(s)=%d, n(r)=%d, %s=%d, pid=0x%02x", cr_text, *ns, *nr, pf_text, *pf, ax25_get_pid(this_p));
+			return (frame_type_I);
+		}
+		else if ((c & 2) == 0) {
+
+			// Supervisory			rrr p/f ss 0 1		or	0000 ss 0 1  rrrrrrr p/f
+
+			if (this_p->modulo == modulo_128) {
+				*pf = c2 & 1;
+				*nr = (c2 >> 1) & 0x7f;
+			}
+			else {
+				*pf = (c >> 4) & 1;
+				*nr = (c >> 5) & 7;
+			}
+
+
+			switch ((c >> 2) & 3) {
+			case 0: sprintf(desc, "RR %s, n(r)=%d, %s=%d", cr_text, *nr, pf_text, *pf);   return (frame_type_S_RR);   break;
+			case 1: sprintf(desc, "RNR %s, n(r)=%d, %s=%d", cr_text, *nr, pf_text, *pf);  return (frame_type_S_RNR);  break;
+			case 2: sprintf(desc, "REJ %s, n(r)=%d, %s=%d", cr_text, *nr, pf_text, *pf);  return (frame_type_S_REJ);  break;
+			case 3: sprintf(desc, "SREJ %s, n(r)=%d, %s=%d", cr_text, *nr, pf_text, *pf); return (frame_type_S_SREJ); break;
+			}
+		}
+		else {
+
+			// Unnumbered			mmm p/f mm 1 1
+
+			*pf = (c >> 4) & 1;
+
+			switch (c & 0xef) {
+
+			case 0x6f: sprintf(desc, "SABME %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_SABME); break;
+			case 0x2f: sprintf(desc, "SABM %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_SABM);  break;
+			case 0x43: sprintf(desc, "DISC %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_DISC);  break;
+			case 0x0f: sprintf(desc, "DM %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_DM);    break;
+			case 0x63: sprintf(desc, "UA %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_UA);    break;
+			case 0x87: sprintf(desc, "FRMR %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_FRMR);  break;
+			case 0x03: sprintf(desc, "UI %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_UI);    break;
+			case 0xaf: sprintf(desc, "XID %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_XID);   break;
+			case 0xe3: sprintf(desc, "TEST %s, %s=%d", cr_text, pf_text, *pf);  return (frame_type_U_TEST);  break;
+			default:   sprintf(desc, "U other???");        				 return (frame_type_U);       break;
+			}
+		}
+
+		// Should be unreachable but compiler doesn't realize that.
+		// Here only to suppress "warning: control reaches end of non-void function"
+
+	return (frame_not_AX25);
+
+} /* end ax25_frame_type */
+
+
+
+packet_t ax25_u_frame(char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int pf, int pid, unsigned char *pinfo, int info_len)
+{
+	packet_t this_p;
+	unsigned char *p;
+	int ctrl = 0;
+	unsigned int t = 999;	// 1 = must be cmd, 0 = must be response, 2 = can be either.
+	int i = 0;		// Is Info part allowed?
+
+	this_p = ax25_new();
+
+	if (this_p == NULL) return (NULL);
+
+	this_p->modulo = 0;
+
+	if (!set_addrs(this_p, addrs, num_addr, cr)) {
+		Debugprintf("Internal error in %s: Could not set addresses for U frame.\n", __func__);
+		ax25_delete(this_p);
+		return (NULL);
+	}
+
+	switch (ftype) {
+		// 1 = cmd only, 0 = res only, 2 = either
+	case frame_type_U_SABME:	ctrl = 0x6f;	t = 1;		break;
+	case frame_type_U_SABM:	ctrl = 0x2f;	t = 1;		break;
+	case frame_type_U_DISC:	ctrl = 0x43;	t = 1;		break;
+	case frame_type_U_DM:		ctrl = 0x0f;	t = 0;		break;
+	case frame_type_U_UA:		ctrl = 0x63;	t = 0;		break;
+	case frame_type_U_FRMR:	ctrl = 0x87;	t = 0;	i = 1;	break;
+	case frame_type_U_UI:		ctrl = 0x03;	t = 2;	i = 1;	break;
+	case frame_type_U_XID:	ctrl = 0xaf;	t = 2;	i = 1;	break;
+	case frame_type_U_TEST:	ctrl = 0xe3;	t = 2;	i = 1;	break;
+
+	default:
+		Debugprintf("Internal error in %s: Invalid ftype %d for U frame.\n", __func__, ftype);
+		ax25_delete(this_p);
+		return (NULL);
+		break;
+	}
+	if (pf) ctrl |= 0x10;
+
+	if (t != 2) {
+		if (cr != t) {
+			Debugprintf("Internal error in %s: U frame, cr is %d but must be %d. ftype=%d\n", __func__, cr, t, ftype);
+		}
+	}
+
+	p = this_p->frame_data + this_p->frame_len;
+	*p++ = ctrl;
+	this_p->frame_len++;
+
+	if (ftype == frame_type_U_UI) {
+
+		// Definitely don't want pid value of 0 (not in valid list)
+		// or 0xff (which means more bytes follow).
+
+		if (pid < 0 || pid == 0 || pid == 0xff) {
+			Debugprintf("Internal error in %s: U frame, Invalid pid value 0x%02x.\n", __func__, pid);
+			pid = AX25_PID_NO_LAYER_3;
+		}
+		*p++ = pid;
+		this_p->frame_len++;
+	}
+
+	if (i) {
+		if (pinfo != NULL && info_len > 0) {
+			if (info_len > AX25_MAX_INFO_LEN) {
+
+				Debugprintf("Internal error in %s: U frame, Invalid information field length %d.\n", __func__, info_len);
+				info_len = AX25_MAX_INFO_LEN;
+			}
+			memcpy(p, pinfo, info_len);
+			p += info_len;
+			this_p->frame_len += info_len;
+		}
+	}
+	else {
+		if (pinfo != NULL && info_len > 0) {
+			Debugprintf("Internal error in %s: Info part not allowed for U frame type.\n", __func__);
+		}
+	}
+	*p = '\0';
+
+	//assert(p == this_p->frame_data + this_p->frame_len);
+	//assert(this_p->magic1 == MAGIC);
+	//assert(this_p->magic2 == MAGIC);
+
+#if PAD2TEST
+	ax25_frame_type_t check_ftype;
+	cmdres_t check_cr;
+	char check_desc[80];
+	int check_pf;
+	int check_nr;
+	int check_ns;
+
+	check_ftype = ax25_frame_type(this_p, &check_cr, check_desc, &check_pf, &check_nr, &check_ns);
+
+	text_color_set(DW_COLOR_DEBUG);
+	Debugprintf("check: ftype=%d, desc=\"%s\", pf=%d\n", check_ftype, check_desc, check_pf);
+
+	assert(check_cr == cr);
+	assert(check_ftype == ftype);
+	assert(check_pf == pf);
+	assert(check_nr == -1);
+	assert(check_ns == -1);
+
+#endif
+
+	return (this_p);
+
+} /* end ax25_u_frame */
+
+
+
+
+
+
+static const char *position_name[1 + AX25_MAX_ADDRS] = {
+	"", "Destination ", "Source ",
+	"Digi1 ", "Digi2 ", "Digi3 ", "Digi4 ",
+	"Digi5 ", "Digi6 ", "Digi7 ", "Digi8 " };
+
+int ax25_parse_addr(int position, char *in_addr, int strict, char *out_addr, int *out_ssid, int *out_heard)
+{
+	char *p;
+	char sstr[8];		/* Should be 1 or 2 digits for SSID. */
+	int i, j, k;
+	int maxlen;
+
+	*out_addr = '\0';
+	*out_ssid = 0;
+	*out_heard = 0;
+
+	// Debugprintf ("ax25_parse_addr in: position=%d, '%s', strict=%d\n", position, in_addr, strict);
+
+	if (position < -1) position = -1;
+	if (position > AX25_REPEATER_8) position = AX25_REPEATER_8;
+	position++;	/* Adjust for position_name above. */
+
+	if (strlen(in_addr) == 0) {
+		Debugprintf("%sAddress \"%s\" is empty.\n", position_name[position], in_addr);
+		return 0;
+	}
+
+	if (strict && strlen(in_addr) >= 2 && strncmp(in_addr, "qA", 2) == 0) {
+
+		Debugprintf("%sAddress \"%s\" is a \"q-construct\" used for communicating with\n", position_name[position], in_addr);
+		Debugprintf("APRS Internet Servers.  It should never appear when going over the radio.\n");
+	}
+
+	// Debugprintf ("ax25_parse_addr in: %s\n", in_addr);
+
+	maxlen = strict ? 6 : (AX25_MAX_ADDR_LEN - 1);
+	p = in_addr;
+	i = 0;
+	for (p = in_addr; *p != '\0' && *p != '-' && *p != '*'; p++) {
+		if (i >= maxlen) {
+			Debugprintf("%sAddress is too long. \"%s\" has more than %d characters.\n", position_name[position], in_addr, maxlen);
+			return 0;
+		}
+		if (!isalnum(*p)) {
+			Debugprintf("%sAddress, \"%s\" contains character other than letter or digit in character position %d.\n", position_name[position], in_addr, (int)(long)(p - in_addr) + 1);
+			return 0;
+		}
+
+		out_addr[i++] = *p;
+		out_addr[i] = '\0';
+
+#if DECAMAIN	// Hack when running in decode_aprs utility.
+		// Exempt the "qA..." case because it was already mentioned.
+
+		if (strict && islower(*p) && strncmp(in_addr, "qA", 2) != 0) {
+			text_color_set(DW_COLOR_ERROR);
+			Debugprintf("%sAddress has lower case letters. \"%s\" must be all upper case.\n", position_name[position], in_addr);
+		}
+#else
+		if (strict && islower(*p)) {
+			Debugprintf("%sAddress has lower case letters. \"%s\" must be all upper case.\n", position_name[position], in_addr);
+			return 0;
+		}
+#endif
+	}
+
+	j = 0;
+	sstr[j] = '\0';
+	if (*p == '-') {
+		for (p++; isalnum(*p); p++) {
+			if (j >= 2) {
+				Debugprintf("%sSSID is too long. SSID part of \"%s\" has more than 2 characters.\n", position_name[position], in_addr);
+				return 0;
+			}
+			sstr[j++] = *p;
+			sstr[j] = '\0';
+			if (strict && !isdigit(*p)) {
+				Debugprintf("%sSSID must be digits. \"%s\" has letters in SSID.\n", position_name[position], in_addr);
+				return 0;
+			}
+		}
+		k = atoi(sstr);
+		if (k < 0 || k > 15) {
+			Debugprintf("%sSSID out of range. SSID of \"%s\" not in range of 0 to 15.\n", position_name[position], in_addr);
+			return 0;
+		}
+		*out_ssid = k;
+	}
+
+	if (*p == '*') {
+		*out_heard = 1;
+		p++;
+		if (strict == 2) {
+			Debugprintf("\"*\" is not allowed at end of address \"%s\" here.\n", in_addr);
+			return 0;
+		}
+	}
+
+	if (*p != '\0') {
+		Debugprintf("Invalid character \"%c\" found in %saddress \"%s\".\n", *p, position_name[position], in_addr);
+		return 0;
+	}
+
+	// Debugprintf ("ax25_parse_addr out: '%s' %d %d\n", out_addr, *out_ssid, *out_heard);
+
+	return (1);
+
+} /* end ax25_parse_addr */
+
+
+
+int set_addrs(packet_t pp, char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr)
+{
+	int n;
+
+	//assert(pp->frame_len == 0);
+	//assert(cr == cr_cmd || cr == cr_res);
+
+	if (num_addr < AX25_MIN_ADDRS || num_addr > AX25_MAX_ADDRS) {
+		Debugprintf("INTERNAL ERROR: %s %s %d, num_addr = %d\n", __FILE__, __func__, __LINE__, num_addr);
+		return (0);
+	}
+
+	for (n = 0; n < num_addr; n++) {
+
+		unsigned char *pa = pp->frame_data + n * 7;
+		int ok;
+		int strict = 1;
+		char oaddr[AX25_MAX_ADDR_LEN];
+		int ssid;
+		int heard;
+		int j;
+
+		ok = ax25_parse_addr(n, addrs[n], strict, oaddr, &ssid, &heard);
+
+		if (!ok) return (0);
+
+		// Fill in address.
+
+		memset(pa, ' ' << 1, 6);
+		for (j = 0; oaddr[j]; j++) {
+			pa[j] = oaddr[j] << 1;
+		}
+		pa += 6;
+
+		// Fill in SSID.
+
+		*pa = 0x60 | ((ssid & 0xf) << 1);
+
+		// Command / response flag.
+
+		switch (n) {
+		case AX25_DESTINATION:
+			if (cr == cr_cmd) *pa |= 0x80;
+			break;
+		case AX25_SOURCE:
+			if (cr == cr_res) *pa |= 0x80;
+			break;
+		default:
+			break;
+		}
+
+		// Is this the end of address field?
+
+		if (n == num_addr - 1) {
+			*pa |= 1;
+		}
+
+		pp->frame_len += 7;
+	}
+
+	pp->num_addr = num_addr;
+	return (1);
+
+} /* end set_addrs */
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_init.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+// Init must be called at start of application.
+
+extern void il2p_init(int debug);
+
+extern struct rs *il2p_find_rs(int nparity);	// Internal later?
+
+extern void il2p_encode_rs(unsigned char *tx_data, int data_size, int num_parity, unsigned char *parity_out);
+
+extern int il2p_decode_rs(unsigned char *rec_block, int data_size, int num_parity, unsigned char *out);
+
+extern int il2p_get_debug(void);
+extern void il2p_set_debug(int debug);
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_rec.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+// Receives a bit stream from demodulator.
+
+extern void il2p_rec_bit(int chan, int subchan, int slice, int dbit);
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_send.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+// Send bit stream to modulator.
+
+string * il2p_send_frame(int chan, packet_t pp, int max_fec, int polarity);
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_codec.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+extern int il2p_encode_frame(packet_t pp, int max_fec, unsigned char *iout);
+
+packet_t il2p_decode_frame(unsigned char *irec);
+
+packet_t il2p_decode_header_payload(unsigned char* uhdr, unsigned char *epayload, int *symbols_corrected);
+
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_header.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+extern int il2p_type_1_header(packet_t pp, int max_fec, unsigned char *hdr);
+
+extern packet_t il2p_decode_header_type_1(unsigned char *hdr, int num_sym_changed);
+
+
+extern int il2p_type_0_header(packet_t pp, int max_fec, unsigned char *hdr);
+
+extern int il2p_clarify_header(unsigned char *rec_hdr, unsigned char *corrected_descrambled_hdr);
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_scramble.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+extern void il2p_scramble_block(unsigned char *in, unsigned char *out, int len);
+
+extern void il2p_descramble_block(unsigned char *in, unsigned char *out, int len);
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// 	il2p_payload.c
+//
+///////////////////////////////////////////////////////////////////////////////
+
+
+typedef struct {
+	int payload_byte_count;		// Total size, 0 thru 1023
+	int payload_block_count;
+	int small_block_size;
+	int large_block_size;
+	int large_block_count;
+	int small_block_count;
+	int parity_symbols_per_block;	// 2, 4, 6, 8, 16
+} il2p_payload_properties_t;
+
+extern int il2p_payload_compute(il2p_payload_properties_t *p, int payload_size, int max_fec);
+
+extern int il2p_encode_payload(unsigned char *payload, int payload_size, int max_fec, unsigned char *enc);
+
+extern int il2p_decode_payload(unsigned char *received, int payload_size, int max_fec, unsigned char *payload_out, int *symbols_corrected);
+
+extern int il2p_get_header_attributes(unsigned char *hdr, int *hdr_type, int *max_fec);
+
+#endif
+
+
+
+// Interesting related stuff:
+// https://www.kernel.org/doc/html/v4.15/core-api/librs.html
+// https://berthub.eu/articles/posts/reed-solomon-for-programmers/ 
+
+
+#define MAX_NROOTS 16
+
+#define NTAB 5
+
+static struct {
+	int symsize;          // Symbol size, bits (1-8).  Always 8 for this application.
+	int genpoly;          // Field generator polynomial coefficients.
+	int fcs;              // First root of RS code generator polynomial, index form.
+			  // FX.25 uses 1 but IL2P uses 0.
+	int prim;             // Primitive element to generate polynomial roots.
+	int nroots;           // RS code generator polynomial degree (number of roots).
+						  // Same as number of check bytes added.
+	struct rs *rs;        // Pointer to RS codec control block.  Filled in at init time.
+} Tab[NTAB] = {
+  {8, 0x11d,   0,   1, 2, NULL },  // 2 parity
+  {8, 0x11d,   0,   1, 4, NULL },  // 4 parity
+  {8, 0x11d,   0,   1, 6, NULL },  // 6 parity
+  {8, 0x11d,   0,   1, 8, NULL },  // 8 parity
+  {8, 0x11d,   0,   1, 16, NULL },  // 16 parity
+};
+
+
+
+static int g_il2p_debug = 0;
+
+
+/*-------------------------------------------------------------
+ *
+ * Name:	il2p_init
+ *
+ * Purpose:	This must be called at application start up time.
+ *		It sets up tables for the Reed-Solomon functions.
+ *
+ * Inputs:	debug	- Enable debug output.
+ *
+ *--------------------------------------------------------------*/
+
+void il2p_init(int il2p_debug)
+{
+	g_il2p_debug = il2p_debug;
+
+	for (int i = 0; i < NTAB; i++) {
+		//assert(Tab[i].nroots <= MAX_NROOTS);
+		Tab[i].rs = INIT_RS(Tab[i].symsize, Tab[i].genpoly, Tab[i].fcs, Tab[i].prim, Tab[i].nroots);
+		if (Tab[i].rs == NULL) {
+			Debugprintf("IL2P internal error: init_rs_char failed!\n");
+			exit(0);
+		}
+	}
+
+} // end il2p_init
+
+
+int il2p_get_debug(void)
+{
+	return (g_il2p_debug);
+}
+void il2p_set_debug(int debug)
+{
+	g_il2p_debug = debug;
+}
+
+
+// Find RS codec control block for specified number of parity symbols.
+
+struct rs *il2p_find_rs(int nparity)
+{
+	for (int n = 0; n < NTAB; n++) {
+		if (Tab[n].nroots == nparity) {
+			return (Tab[n].rs);
+		}
+	}
+	Debugprintf("IL2P INTERNAL ERROR: il2p_find_rs: control block not found for nparity = %d.\n", nparity);
+	return (Tab[0].rs);
+}
+
+
+/*-------------------------------------------------------------
+ *
+ * Name:	void il2p_encode_rs
+ *
+ * Purpose:	Add parity symbols to a block of data.
+ *
+ * Inputs:	tx_data		Header or other data to transmit.
+ *		data_size	Number of data bytes in above.
+ *		num_parity	Number of parity symbols to add.
+ *				Maximum of IL2P_MAX_PARITY_SYMBOLS.
+ *
+ * Outputs:	parity_out	Specified number of parity symbols
+ *
+ * Restriction:	data_size + num_parity <= 255 which is the RS block size.
+ *		The caller must ensure this.
+ *
+ *--------------------------------------------------------------*/
+
+void il2p_encode_rs(unsigned char *tx_data, int data_size, int num_parity, unsigned char *parity_out)
+{
+	//assert(data_size >= 1);
+	//assert(num_parity == 2 || num_parity == 4 || num_parity == 6 || num_parity == 8 || num_parity == 16);
+	//assert(data_size + num_parity <= 255);
+
+	unsigned char rs_block[FX25_BLOCK_SIZE];
+	memset(rs_block, 0, sizeof(rs_block));
+	memcpy(rs_block + sizeof(rs_block) - data_size - num_parity, tx_data, data_size);
+	ENCODE_RS(il2p_find_rs(num_parity), rs_block, parity_out);
+}
+
+/*-------------------------------------------------------------
+ *
+ * Name:	void il2p_decode_rs
+ *
+ * Purpose:	Check and attempt to fix block with FEC.
+ *
+ * Inputs:	rec_block	Received block composed of data and parity.
+ *				Total size is sum of following two parameters.
+ *		data_size	Number of data bytes in above.
+ *		num_parity	Number of parity symbols (bytes) in above.
+ *
+ * Outputs:	out		Original with possible corrections applied.
+ *				data_size bytes.
+ *
+ * Returns:	-1 for unrecoverable.
+ *		>= 0 for success.  Number of symbols corrected.
+ *
+ *--------------------------------------------------------------*/
+
+int il2p_decode_rs(unsigned char *rec_block, int data_size, int num_parity, unsigned char *out)
+{
+
+	//  Use zero padding in front if data size is too small.
+
+	int n = data_size + num_parity;		// total size in.
+
+	unsigned char rs_block[FX25_BLOCK_SIZE];
+
+	// We could probably do this more efficiently by skipping the
+	// processing of the bytes known to be zero.  Good enough for now.
+
+	memset(rs_block, 0, sizeof(rs_block) - n);
+	memcpy(rs_block + sizeof(rs_block) - n, rec_block, n);
+
+	if (il2p_get_debug() >= 3) {
+		Debugprintf("==============================  il2p_decode_rs  ==============================\n");
+		Debugprintf("%d filler zeros, %d data, %d parity\n", (int)(sizeof(rs_block) - n), data_size, num_parity);
+		fx_hex_dump(rs_block, sizeof(rs_block));
+	}
+
+	int derrlocs[FX25_MAX_CHECK];	// Half would probably be OK.
+
+	int derrors = DECODE_RS(il2p_find_rs(num_parity), rs_block, derrlocs, 0);
+	memcpy(out, rs_block + sizeof(rs_block) - n, data_size);
+
+	if (il2p_get_debug() >= 3) {
+		if (derrors == 0) {
+			Debugprintf("No errors reported for RS block.\n");
+		}
+		else if (derrors > 0) {
+			Debugprintf("%d errors fixed in positions:\n", derrors);
+			for (int j = 0; j < derrors; j++) {
+				Debugprintf("        %3d  (0x%02x)\n", derrlocs[j], derrlocs[j]);
+			}
+			fx_hex_dump(rs_block, sizeof(rs_block));
+		}
+	}
+
+	// It is possible to have a situation where too many errors are
+	// present but the algorithm could get a good code block by "fixing"
+	// one of the padding bytes that should be 0.
+
+	for (int i = 0; i < derrors; i++) {
+		if (derrlocs[i] < sizeof(rs_block) - n) {
+			if (il2p_get_debug() >= 3) {
+				Debugprintf("RS DECODE ERROR!  Padding position %d should be 0 but it was set to %02x.\n", derrlocs[i], rs_block[derrlocs[i]]);
+			}
+			derrors = -1;
+			break;
+		}
+	}
+
+	if (il2p_get_debug() >= 3) {
+		Debugprintf("==============================  il2p_decode_rs  returns %d  ==============================\n", derrors);
+	}
+	return (derrors);
+}
+
+// end il2p_init.c
+
+
+
+
+
+
+
+
+
+
+
+
+
+void ENCODE_RS(struct rs * rs, DTYPE * data, DTYPE * bb)
+{
+
+	int i, j;
+	DTYPE feedback;
+
+	memset(bb, 0, NROOTS * sizeof(DTYPE)); // clear out the FEC data area
+
+	for (i = 0; i < NN - NROOTS; i++) {
+		feedback = INDEX_OF[data[i] ^ bb[0]];
+		if (feedback != A0) {      /* feedback term is non-zero */
+			for (j = 1; j < NROOTS; j++)
+				bb[j] ^= ALPHA_TO[MODNN(feedback + GENPOLY[NROOTS - j])];
+		}
+		/* Shift */
+		memmove(&bb[0], &bb[1], sizeof(DTYPE)*(NROOTS - 1));
+		if (feedback != A0)
+			bb[NROOTS - 1] = ALPHA_TO[MODNN(feedback + GENPOLY[0])];
+		else
+			bb[NROOTS - 1] = 0;
+	}
+}
+
+
+
+
+int DECODE_RS(struct rs * rs, DTYPE * data, int *eras_pos, int no_eras) {
+
+	int deg_lambda, el, deg_omega;
+	int i, j, r, k;
+	DTYPE u, q, tmp, num1, num2, den, discr_r;
+	//  DTYPE lambda[NROOTS+1], s[NROOTS];	/* Err+Eras Locator poly and syndrome poly */
+	//  DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1];
+	//  DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS];
+	DTYPE lambda[FX25_MAX_CHECK + 1], s[FX25_MAX_CHECK];	/* Err+Eras Locator poly and syndrome poly */
+	DTYPE b[FX25_MAX_CHECK + 1], t[FX25_MAX_CHECK + 1], omega[FX25_MAX_CHECK + 1];
+	DTYPE root[FX25_MAX_CHECK], reg[FX25_MAX_CHECK + 1], loc[FX25_MAX_CHECK];
+	int syn_error, count;
+
+	/* form the syndromes; i.e., evaluate data(x) at roots of g(x) */
+	for (i = 0; i < NROOTS; i++)
+		s[i] = data[0];
+
+	for (j = 1; j < NN; j++) {
+		for (i = 0; i < NROOTS; i++) {
+			if (s[i] == 0) {
+				s[i] = data[j];
+			}
+			else {
+				s[i] = data[j] ^ ALPHA_TO[MODNN(INDEX_OF[s[i]] + (FCR + i)*PRIM)];
+			}
+		}
+	}
+
+	/* Convert syndromes to index form, checking for nonzero condition */
+	syn_error = 0;
+	for (i = 0; i < NROOTS; i++) {
+		syn_error |= s[i];
+		s[i] = INDEX_OF[s[i]];
+	}
+
+	// fprintf(stderr,"syn_error = %4x\n",syn_error);
+	if (!syn_error) {
+		/* if syndrome is zero, data[] is a codeword and there are no
+		 * errors to correct. So return data[] unmodified
+		 */
+		count = 0;
+		goto finish;
+	}
+	memset(&lambda[1], 0, NROOTS * sizeof(lambda[0]));
+	lambda[0] = 1;
+
+	if (no_eras > 0) {
+		/* Init lambda to be the erasure locator polynomial */
+		lambda[1] = ALPHA_TO[MODNN(PRIM*(NN - 1 - eras_pos[0]))];
+		for (i = 1; i < no_eras; i++) {
+			u = MODNN(PRIM*(NN - 1 - eras_pos[i]));
+			for (j = i + 1; j > 0; j--) {
+				tmp = INDEX_OF[lambda[j - 1]];
+				if (tmp != A0)
+					lambda[j] ^= ALPHA_TO[MODNN(u + tmp)];
+			}
+		}
+
+#if DEBUG >= 1
+		/* Test code that verifies the erasure locator polynomial just constructed
+		   Needed only for decoder debugging. */
+
+		   /* find roots of the erasure location polynomial */
+		for (i = 1; i <= no_eras; i++)
+			reg[i] = INDEX_OF[lambda[i]];
+
+		count = 0;
+		for (i = 1, k = IPRIM - 1; i <= NN; i++, k = MODNN(k + IPRIM)) {
+			q = 1;
+			for (j = 1; j <= no_eras; j++)
+				if (reg[j] != A0) {
+					reg[j] = MODNN(reg[j] + j);
+					q ^= ALPHA_TO[reg[j]];
+				}
+			if (q != 0)
+				continue;
+			/* store root and error location number indices */
+			root[count] = i;
+			loc[count] = k;
+			count++;
+		}
+		if (count != no_eras) {
+			fprintf(stderr, "count = %d no_eras = %d\n lambda(x) is WRONG\n", count, no_eras);
+			count = -1;
+			goto finish;
+		}
+#if DEBUG >= 2
+		fprintf(stderr, "\n Erasure positions as determined by roots of Eras Loc Poly:\n");
+		for (i = 0; i < count; i++)
+			fprintf(stderr, "%d ", loc[i]);
+		fprintf(stderr, "\n");
+#endif
+#endif
+	}
+	for (i = 0; i < NROOTS + 1; i++)
+		b[i] = INDEX_OF[lambda[i]];
+
+	/*
+	 * Begin Berlekamp-Massey algorithm to determine error+erasure
+	 * locator polynomial
+	 */
+	r = no_eras;
+	el = no_eras;
+	while (++r <= NROOTS) {	/* r is the step number */
+	  /* Compute discrepancy at the r-th step in poly-form */
+		discr_r = 0;
+		for (i = 0; i < r; i++) {
+			if ((lambda[i] != 0) && (s[r - i - 1] != A0)) {
+				discr_r ^= ALPHA_TO[MODNN(INDEX_OF[lambda[i]] + s[r - i - 1])];
+			}
+		}
+		discr_r = INDEX_OF[discr_r];	/* Index form */
+		if (discr_r == A0) {
+			/* 2 lines below: B(x) <-- x*B(x) */
+			memmove(&b[1], b, NROOTS * sizeof(b[0]));
+			b[0] = A0;
+		}
+		else {
+			/* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */
+			t[0] = lambda[0];
+			for (i = 0; i < NROOTS; i++) {
+				if (b[i] != A0)
+					t[i + 1] = lambda[i + 1] ^ ALPHA_TO[MODNN(discr_r + b[i])];
+				else
+					t[i + 1] = lambda[i + 1];
+			}
+			if (2 * el <= r + no_eras - 1) {
+				el = r + no_eras - el;
+				/*
+				 * 2 lines below: B(x) <-- inv(discr_r) *
+				 * lambda(x)
+				 */
+				for (i = 0; i <= NROOTS; i++)
+					b[i] = (lambda[i] == 0) ? A0 : MODNN(INDEX_OF[lambda[i]] - discr_r + NN);
+			}
+			else {
+				/* 2 lines below: B(x) <-- x*B(x) */
+				memmove(&b[1], b, NROOTS * sizeof(b[0]));
+				b[0] = A0;
+			}
+			memcpy(lambda, t, (NROOTS + 1) * sizeof(t[0]));
+		}
+	}
+
+	/* Convert lambda to index form and compute deg(lambda(x)) */
+	deg_lambda = 0;
+	for (i = 0; i < NROOTS + 1; i++) {
+		lambda[i] = INDEX_OF[lambda[i]];
+		if (lambda[i] != A0)
+			deg_lambda = i;
+	}
+	/* Find roots of the error+erasure locator polynomial by Chien search */
+	memcpy(&reg[1], &lambda[1], NROOTS * sizeof(reg[0]));
+	count = 0;		/* Number of roots of lambda(x) */
+	for (i = 1, k = IPRIM - 1; i <= NN; i++, k = MODNN(k + IPRIM)) {
+		q = 1; /* lambda[0] is always 0 */
+		for (j = deg_lambda; j > 0; j--) {
+			if (reg[j] != A0) {
+				reg[j] = MODNN(reg[j] + j);
+				q ^= ALPHA_TO[reg[j]];
+			}
+		}
+		if (q != 0)
+			continue; /* Not a root */
+		  /* store root (index-form) and error location number */
+#if DEBUG>=2
+		fprintf(stderr, "count %d root %d loc %d\n", count, i, k);
+#endif
+		root[count] = i;
+		loc[count] = k;
+		/* If we've already found max possible roots,
+		 * abort the search to save time
+		 */
+		if (++count == deg_lambda)
+			break;
+	}
+	if (deg_lambda != count) {
+		/*
+		 * deg(lambda) unequal to number of roots => uncorrectable
+		 * error detected
+		 */
+		count = -1;
+		goto finish;
+	}
+	/*
+	 * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo
+	 * x**NROOTS). in index form. Also find deg(omega).
+	 */
+	deg_omega = 0;
+	for (i = 0; i < NROOTS; i++) {
+		tmp = 0;
+		j = (deg_lambda < i) ? deg_lambda : i;
+		for (; j >= 0; j--) {
+			if ((s[i - j] != A0) && (lambda[j] != A0))
+				tmp ^= ALPHA_TO[MODNN(s[i - j] + lambda[j])];
+		}
+		if (tmp != 0)
+			deg_omega = i;
+		omega[i] = INDEX_OF[tmp];
+	}
+	omega[NROOTS] = A0;
+
+	/*
+	 * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 =
+	 * inv(X(l))**(FCR-1) and den = lambda_pr(inv(X(l))) all in poly-form
+	 */
+	for (j = count - 1; j >= 0; j--) {
+		num1 = 0;
+		for (i = deg_omega; i >= 0; i--) {
+			if (omega[i] != A0)
+				num1 ^= ALPHA_TO[MODNN(omega[i] + i * root[j])];
+		}
+		num2 = ALPHA_TO[MODNN(root[j] * (FCR - 1) + NN)];
+		den = 0;
+
+		/* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */
+		for (i = min(deg_lambda, NROOTS - 1) & ~1; i >= 0; i -= 2) {
+			if (lambda[i + 1] != A0)
+				den ^= ALPHA_TO[MODNN(lambda[i + 1] + i * root[j])];
+		}
+		if (den == 0) {
+#if DEBUG >= 1
+			fprintf(stderr, "\n ERROR: denominator = 0\n");
+#endif
+			count = -1;
+			goto finish;
+		}
+		/* Apply error to data */
+		if (num1 != 0) {
+			data[loc[j]] ^= ALPHA_TO[MODNN(INDEX_OF[num1] + INDEX_OF[num2] + NN - INDEX_OF[den])];
+		}
+	}
+finish:
+	if (eras_pos != NULL) {
+		for (i = 0; i < count; i++)
+			eras_pos[i] = loc[i];
+	}
+	return count;
+}
+
+
+
+
+struct rs *INIT_RS(unsigned int symsize, unsigned int gfpoly, unsigned fcr, unsigned prim,
+	unsigned int nroots) {
+	struct rs *rs;
+	int i, j, sr, root, iprim;
+
+	if (symsize > 8 * sizeof(DTYPE))
+		return NULL; /* Need version with ints rather than chars */
+
+	if (fcr >= (1 << symsize))
+		return NULL;
+	if (prim == 0 || prim >= (1 << symsize))
+		return NULL;
+	if (nroots >= (1 << symsize))
+		return NULL; /* Can't have more roots than symbol values! */
+
+	rs = (struct rs *)calloc(1, sizeof(struct rs));
+	if (rs == NULL) {
+		Debugprintf("FATAL ERROR: Out of memory.\n");
+		exit(0);
+	}
+	rs->mm = symsize;
+	rs->nn = (1 << symsize) - 1;
+
+	rs->alpha_to = (DTYPE *)calloc((rs->nn + 1), sizeof(DTYPE));
+	if (rs->alpha_to == NULL) {
+		Debugprintf("FATAL ERROR: Out of memory.\n");
+		exit(0);
+	}
+	rs->index_of = (DTYPE *)calloc((rs->nn + 1), sizeof(DTYPE));
+	if (rs->index_of == NULL) {
+		Debugprintf("FATAL ERROR: Out of memory.\n");
+		exit(0);
+	}
+
+	/* Generate Galois field lookup tables */
+	rs->index_of[0] = A0; /* log(zero) = -inf */
+	rs->alpha_to[A0] = 0; /* alpha**-inf = 0 */
+	sr = 1;
+	for (i = 0; i < rs->nn; i++) {
+		rs->index_of[sr] = i;
+		rs->alpha_to[i] = sr;
+		sr <<= 1;
+		if (sr & (1 << symsize))
+			sr ^= gfpoly;
+		sr &= rs->nn;
+	}
+	if (sr != 1) {
+		/* field generator polynomial is not primitive! */
+		free(rs->alpha_to);
+		free(rs->index_of);
+		free(rs);
+		return NULL;
+	}
+
+	/* Form RS code generator polynomial from its roots */
+	rs->genpoly = (DTYPE *)calloc((nroots + 1), sizeof(DTYPE));
+	if (rs->genpoly == NULL) {
+		Debugprintf("FATAL ERROR: Out of memory.\n");
+		exit(0);
+	}
+	rs->fcr = fcr;
+	rs->prim = prim;
+	rs->nroots = nroots;
+
+	/* Find prim-th root of 1, used in decoding */
+	for (iprim = 1; (iprim % prim) != 0; iprim += rs->nn)
+		;
+	rs->iprim = iprim / prim;
+
+	rs->genpoly[0] = 1;
+	for (i = 0, root = fcr * prim; i < nroots; i++, root += prim) {
+		rs->genpoly[i + 1] = 1;
+
+		/* Multiply rs->genpoly[] by  @**(root + x) */
+		for (j = i; j > 0; j--) {
+			if (rs->genpoly[j] != 0)
+				rs->genpoly[j] = rs->genpoly[j - 1] ^ rs->alpha_to[modnn(rs, rs->index_of[rs->genpoly[j]] + root)];
+			else
+				rs->genpoly[j] = rs->genpoly[j - 1];
+		}
+		/* rs->genpoly[0] can never be zero */
+		rs->genpoly[0] = rs->alpha_to[modnn(rs, rs->index_of[rs->genpoly[0]] + root)];
+	}
+	/* convert rs->genpoly[] to index form for quicker encoding */
+	for (i = 0; i <= nroots; i++) {
+		rs->genpoly[i] = rs->index_of[rs->genpoly[i]];
+	}
+
+	// diagnostic prints
+#if 0
+	printf("Alpha To:\n\r");
+	for (i = 0; i < sizeof(DTYPE)*(rs->nn + 1); i++)
+		printf("0x%2x,", rs->alpha_to[i]);
+	printf("\n\r");
+
+	printf("Index Of:\n\r");
+	for (i = 0; i < sizeof(DTYPE)*(rs->nn + 1); i++)
+		printf("0x%2x,", rs->index_of[i]);
+	printf("\n\r");
+
+	printf("GenPoly:\n\r");
+	for (i = 0; i <= nroots; i++)
+		printf("0x%2x,", rs->genpoly[i]);
+	printf("\n\r");
+#endif
+	return rs;
+}
+
+
+// TEMPORARY!!!
+// FIXME: We already have multiple copies of this.
+// Consolidate them into one somewhere.
+
+void fx_hex_dump(unsigned char *p, int len)
+{
+	int n, i, offset;
+
+	offset = 0;
+	while (len > 0) {
+		n = len < 16 ? len : 16;
+		Debugprintf("  %03x: ", offset);
+		for (i = 0; i < n; i++) {
+			Debugprintf(" %02x", p[i]);
+		}
+		for (i = n; i < 16; i++) {
+			Debugprintf("   ");
+		}
+		Debugprintf("  ");
+		for (i = 0; i < n; i++) {
+			Debugprintf("%c", isprint(p[i]) ? p[i] : '.');
+		}
+		Debugprintf("\n");
+		p += 16;
+		offset += 16;
+		len -= 16;
+	}
+}
+
+
+/*-------------------------------------------------------------
+ *
+ * File:	il2p_codec.c
+ *
+ * Purpose:	Convert IL2P encoded format from and to direwolf internal packet format.
+ *
+ *--------------------------------------------------------------*/
+
+
+ /*-------------------------------------------------------------
+  *
+  * Name:	il2p_encode_frame
+  *
+  * Purpose:	Convert AX.25 frame to IL2P encoding.
+  *
+  * Inputs:	chan	- Audio channel number, 0 = first.
+  *
+  *		pp	- Packet object pointer.
+  *
+  *		max_fec	- 1 to send maximum FEC size rather than automatic.
+  *
+  * Outputs:	iout	- Encoded result, excluding the 3 byte sync word.
+  *			  Caller should provide  IL2P_MAX_PACKET_SIZE  bytes.
+  *
+  * Returns:	Number of bytes for transmission.
+  *		-1 is returned for failure.
+  *
+  * Description:	Encode into IL2P format.
+  *
+  * Errors:	If something goes wrong, return -1.
+  *
+  *		Most likely reason is that the frame is too large.
+  *		IL2P has a max payload size of 1023 bytes.
+  *		For a type 1 header, this is the maximum AX.25 Information part size.
+  *		For a type 0 header, this is the entire AX.25 frame.
+  *
+  *--------------------------------------------------------------*/
+
+int il2p_encode_frame(packet_t pp, int max_fec, unsigned char *iout)
+{
+
+	// Can a type 1 header be used?
+
+	unsigned char hdr[IL2P_HEADER_SIZE + IL2P_HEADER_PARITY];
+	int e;
+	int out_len = 0;
+
+	e = il2p_type_1_header(pp, max_fec, hdr);
+	if (e >= 0) {
+		il2p_scramble_block(hdr, iout, IL2P_HEADER_SIZE);
+		il2p_encode_rs(iout, IL2P_HEADER_SIZE, IL2P_HEADER_PARITY, iout + IL2P_HEADER_SIZE);
+		out_len = IL2P_HEADER_SIZE + IL2P_HEADER_PARITY;
+
+		if (e == 0) {
+			// Success. No info part.
+			return (out_len);
+		}
+
+		// Payload is AX.25 info part.
+		unsigned char *pinfo;
+		int info_len;
+		info_len = ax25_get_info(pp, &pinfo);
+
+		int k = il2p_encode_payload(pinfo, info_len, max_fec, iout + out_len);
+		if (k > 0) {
+			out_len += k;
+			// Success. Info part was <= 1023 bytes.
+			return (out_len);
+		}
+
+		// Something went wrong with the payload encoding.
+		return (-1);
+	}
+	else if (e == -1) {
+
+		// Could not use type 1 header for some reason.
+		// e.g. More than 2 addresses, extended (mod 128) sequence numbers, etc.
+
+		e = il2p_type_0_header(pp, max_fec, hdr);
+		if (e > 0) {
+
+			il2p_scramble_block(hdr, iout, IL2P_HEADER_SIZE);
+			il2p_encode_rs(iout, IL2P_HEADER_SIZE, IL2P_HEADER_PARITY, iout + IL2P_HEADER_SIZE);
+			out_len = IL2P_HEADER_SIZE + IL2P_HEADER_PARITY;
+
+			// Payload is entire AX.25 frame.
+
+			unsigned char *frame_data_ptr = ax25_get_frame_data_ptr(pp);
+			int frame_len = ax25_get_frame_len(pp);
+			int k = il2p_encode_payload(frame_data_ptr, frame_len, max_fec, iout + out_len);
+			if (k > 0) {
+				out_len += k;
+				// Success. Entire AX.25 frame <= 1023 bytes.
+				return (out_len);
+			}
+			// Something went wrong with the payload encoding.
+			return (-1);
+		}
+		else if (e == 0) {
+			// Impossible condition.  Type 0 header must have payload.
+			return (-1);
+		}
+		else {
+			// AX.25 frame is too large.
+			return (-1);
+		}
+	}
+
+	// AX.25 Information part is too large.
+	return (-1);
+}
+
+
+
+/*-------------------------------------------------------------
+ *
+ * Name:	il2p_decode_frame
+ *
+ * Purpose:	Convert IL2P encoding to AX.25 frame.
+ *		This is only used during testing, with a whole encoded frame.
+ *		During reception, the header would have FEC and descrambling
+ *		applied first so we would know how much to collect for the payload.
+ *
+ * Inputs:	irec	- Received IL2P frame excluding the 3 byte sync word.
+ *
+ * Future Out:	Number of symbols corrected.
+ *
+ * Returns:	Packet pointer or NULL for error.
+ *
+ *--------------------------------------------------------------*/
+
+packet_t il2p_decode_frame(unsigned char *irec)
+{
+	unsigned char uhdr[IL2P_HEADER_SIZE];		// After FEC and descrambling.
+	int e = il2p_clarify_header(irec, uhdr);
+
+	// TODO?: for symmetry we might want to clarify the payload before combining.
+
+	return (il2p_decode_header_payload(uhdr, irec + IL2P_HEADER_SIZE + IL2P_HEADER_PARITY, &e));
+}
+
+
+/*-------------------------------------------------------------
+ *
+ * Name:	il2p_decode_header_payload
+ *
+ * Purpose:	Convert IL2P encoding to AX.25 frame
+ *
+ * Inputs:	uhdr 		- Received header after FEC and descrambling.
+ *		epayload	- Encoded payload.
+ *
+ * In/Out:	symbols_corrected - Symbols (bytes) corrected in the header.
+ *				  Should be 0 or 1 because it has 2 parity symbols.
+ *				  Here we add number of corrections for the payload.
+ *
+ * Returns:	Packet pointer or NULL for error.
+ *
+ *--------------------------------------------------------------*/
+
+packet_t il2p_decode_header_payload(unsigned char* uhdr, unsigned char *epayload, int *symbols_corrected)
+{
+	int hdr_type;
+	int max_fec;
+	int payload_len = il2p_get_header_attributes(uhdr, &hdr_type, &max_fec);
+
+	packet_t pp = NULL;
+
+	if (hdr_type == 1) {
+
+		// Header type 1.  Any payload is the AX.25 Information part.
+
+		pp = il2p_decode_header_type_1(uhdr, *symbols_corrected);
+		if (pp == NULL) {
+			// Failed for some reason.
+			return (NULL);
+		}
+
+		if (payload_len > 0) {
+			// This is the AX.25 Information part.
+
+			unsigned char extracted[IL2P_MAX_PAYLOAD_SIZE];
+			int e = il2p_decode_payload(epayload, payload_len, max_fec, extracted, symbols_corrected);
+
+			// It would be possible to have a good header but too many errors in the payload.
+
+			if (e <= 0) {
+				ax25_delete(pp);
+				pp = NULL;
+				return (pp);
+			}
+
+			if (e != payload_len) {
+				Debugprintf("IL2P Internal Error: %s(): hdr_type=%d, max_fec=%d, payload_len=%d, e=%d.\n", __func__, hdr_type, max_fec, payload_len, e);
+			}
+
+			ax25_set_info(pp, extracted, payload_len);
+		}
+		return (pp);
+	}
+	else {
+
+		// Header type 0.  The payload is the entire AX.25 frame.
+
+		unsigned char extracted[IL2P_MAX_PAYLOAD_SIZE];
+		int e = il2p_decode_payload(epayload, payload_len, max_fec, extracted, symbols_corrected);
+
+		if (e <= 0) {	// Payload was not received correctly.
+			return (NULL);
+		}
+
+		if (e != payload_len) {
+			Debugprintf("IL2P Internal Error: %s(): hdr_type=%d, e=%d, payload_len=%d\n", __func__, hdr_type, e, payload_len);
+			return (NULL);
+		}
+
+		alevel_t alevel;
+		memset(&alevel, 0, sizeof(alevel));
+		//alevel = demod_get_audio_level (chan, subchan); 	// What TODO? We don't know channel here.
+						// I think alevel gets filled in somewhere later making
+						// this redundant.
+
+		pp = ax25_from_frame(extracted, payload_len, alevel);
+		return (pp);
+	}
+
+} // end il2p_decode_header_payload
+
+// end il2p_codec.c
+
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * File:	il2p_header.c
+ *
+ * Purpose:	Functions to deal with the IL2P header.
+ *
+ * Reference:	http://tarpn.net/t/il2p/il2p-specification0-4.pdf
+ *
+ *--------------------------------------------------------------------------------*/
+
+
+
+ // Convert ASCII to/from DEC SIXBIT as defined here:
+ // https://en.wikipedia.org/wiki/Six-bit_character_code#DEC_six-bit_code
+
+static inline int ascii_to_sixbit(int a)
+{
+	if (a >= ' ' && a <= '_') return (a - ' ');
+	return (31);	// '?' for any invalid.
+}
+
+static inline int sixbit_to_ascii(int s)
+{
+	return (s + ' ');
+}
+
+// Functions for setting the various header fields.
+// It is assumed that it was zeroed first so only the '1' bits are set.
+
+static void set_field(unsigned char *hdr, int bit_num, int lsb_index, int width, int value)
+{
+	while (width > 0 && value != 0) {
+		//assert(lsb_index >= 0 && lsb_index <= 11);
+		if (value & 1) {
+			hdr[lsb_index] |= 1 << bit_num;
+		}
+		value >>= 1;
+		lsb_index--;
+		width--;
+	}
+	//assert(value == 0);
+}
+
+#define SET_UI(hdr,val) set_field(hdr, 6, 0, 1, val)
+
+#define SET_PID(hdr,val) set_field(hdr, 6, 4, 4, val)
+
+#define SET_CONTROL(hdr,val) set_field(hdr, 6, 11, 7, val)
+
+
+#define SET_FEC_LEVEL(hdr,val) set_field(hdr, 7, 0, 1, val)
+
+#define SET_HDR_TYPE(hdr,val) set_field(hdr, 7, 1, 1, val)
+
+#define SET_PAYLOAD_BYTE_COUNT(hdr,val) set_field(hdr, 7, 11, 10, val)
+
+
+// Extracting the fields.
+
+static int get_field(unsigned char *hdr, int bit_num, int lsb_index, int width)
+{
+	int result = 0;
+	lsb_index -= width - 1;
+	while (width > 0) {
+		result <<= 1;
+		//assert(lsb_index >= 0 && lsb_index <= 11);
+		if (hdr[lsb_index] & (1 << bit_num)) {
+			result |= 1;
+		}
+		lsb_index++;
+		width--;
+	}
+	return (result);
+}
+
+#define GET_UI(hdr) get_field(hdr, 6, 0, 1)
+
+#define GET_PID(hdr) get_field(hdr, 6, 4, 4)
+
+#define GET_CONTROL(hdr) get_field(hdr, 6, 11, 7)
+
+
+#define GET_FEC_LEVEL(hdr) get_field(hdr, 7, 0, 1)
+
+#define GET_HDR_TYPE(hdr) get_field(hdr, 7, 1, 1)
+
+#define GET_PAYLOAD_BYTE_COUNT(hdr) get_field(hdr, 7, 11, 10)
+
+
+
+// AX.25 'I' and 'UI' frames have a protocol ID which determines how the
+// information part should be interpreted.
+// Here we squeeze the most common cases down to 4 bits.
+// Return -1 if translation is not possible.  Fall back to type 0 header in this case.
+
+static int encode_pid(packet_t pp)
+{
+	int pid = ax25_get_pid(pp);
+
+	if ((pid & 0x30) == 0x20) return (0x2);		// AX.25 Layer 3
+	if ((pid & 0x30) == 0x10) return (0x2);		// AX.25 Layer 3
+	if (pid == 0x01) return (0x3);			// ISO 8208 / CCIT X.25 PLP
+	if (pid == 0x06) return (0x4);			// Compressed TCP/IP
+	if (pid == 0x07) return (0x5);			// Uncompressed TCP/IP
+	if (pid == 0x08) return (0x6);			// Segmentation fragmen
+	if (pid == 0xcc) return (0xb);			// ARPA Internet Protocol
+	if (pid == 0xcd) return (0xc);			// ARPA Address Resolution
+	if (pid == 0xce) return (0xd);			// FlexNet
+	if (pid == 0xcf) return (0xe);			// TheNET
+	if (pid == 0xf0) return (0xf);			// No L3
+	return (-1);
+}
+
+// Convert IL2P 4 bit PID to AX.25 8 bit PID.
+
+
+static int decode_pid(int pid)
+{
+	static const unsigned char axpid[16] = {
+	0xf0,			// Should not happen. 0 is for 'S' frames.
+	0xf0,			// Should not happen. 1 is for 'U' frames (but not UI).
+	0x20,			// AX.25 Layer 3
+	0x01,			// ISO 8208 / CCIT X.25 PLP
+	0x06,			// Compressed TCP/IP
+	0x07,			// Uncompressed TCP/IP
+	0x08,			// Segmentation fragment
+	0xf0,			// Future
+	0xf0,			// Future
+	0xf0,			// Future
+	0xf0,			// Future
+	0xcc,			// ARPA Internet Protocol
+	0xcd,			// ARPA Address Resolution
+	0xce,			// FlexNet
+	0xcf,			// TheNET
+	0xf0 };			// No L3
+
+	//assert(pid >= 0 && pid <= 15);
+	return (axpid[pid]);
+}
+
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_type_1_header
+ *
+ * Purpose:	Attempt to create type 1 header from packet object.
+ *
+ * Inputs:	pp	- Packet object.
+ *
+ *		max_fec	- 1 to use maximum FEC symbols , 0 for automatic.
+ *
+ * Outputs:	hdr	- IL2P header with no scrambling or parity symbols.
+ *			  Must be large enough to hold IL2P_HEADER_SIZE unsigned bytes.
+ *
+ * Returns:	Number of bytes for information part or -1 for failure.
+ *		In case of failure, fall back to type 0 transparent encapsulation.
+ *
+ * Description:	Type 1 Headers do not support AX.25 repeater callsign addressing,
+ *		Modulo-128 extended mode window sequence numbers, nor any callsign
+ *		characters that cannot translate to DEC SIXBIT.
+ *		If these cases are encountered during IL2P packet encoding,
+ *		the encoder switches to Type 0 Transparent Encapsulation.
+ *		SABME can't be handled by type 1.
+ *
+ *--------------------------------------------------------------------------------*/
+
+int il2p_type_1_header(packet_t pp, int max_fec, unsigned char *hdr)
+{
+	memset(hdr, 0, IL2P_HEADER_SIZE);
+
+	if (ax25_get_num_addr(pp) != 2) {
+		// Only two addresses are allowed for type 1 header.
+		return (-1);
+	}
+
+	// Check does not apply for 'U' frames but put in one place rather than two.
+
+	if (ax25_get_modulo(pp) == 128) return(-1);
+
+	// Destination and source addresses go into low bits 0-5 for bytes 0-11.
+
+	char dst_addr[AX25_MAX_ADDR_LEN];
+	char src_addr[AX25_MAX_ADDR_LEN];
+
+	ax25_get_addr_no_ssid(pp, AX25_DESTINATION, dst_addr);
+	int dst_ssid = ax25_get_ssid(pp, AX25_DESTINATION);
+
+	ax25_get_addr_no_ssid(pp, AX25_SOURCE, src_addr);
+	int src_ssid = ax25_get_ssid(pp, AX25_SOURCE);
+
+	unsigned char *a = (unsigned char *)dst_addr;
+	for (int i = 0; *a != '\0'; i++, a++) {
+		if (*a < ' ' || *a > '_') {
+			// Shouldn't happen but follow the rule.
+			return (-1);
+		}
+		hdr[i] = ascii_to_sixbit(*a);
+	}
+
+	a = (unsigned char *)src_addr;
+	for (int i = 6; *a != '\0'; i++, a++) {
+		if (*a < ' ' || *a > '_') {
+			// Shouldn't happen but follow the rule.
+			return (-1);
+		}
+		hdr[i] = ascii_to_sixbit(*a);
+	}
+
+	// Byte 12 has DEST SSID in upper nybble and SRC SSID in lower nybble and 
+	hdr[12] = (dst_ssid << 4) | src_ssid;
+
+	ax25_frame_type_t frame_type;
+	cmdres_t cr;			// command or response.
+	char description[64];
+	int pf;				// Poll/Final.
+	int nr, ns;			// Sequence numbers.
+
+	frame_type = ax25_frame_type(pp, &cr, description, &pf, &nr, &ns);
+
+	//Debugprintf ("%s(): %s-%d>%s-%d: %s\n", __func__, src_addr, src_ssid, dst_addr, dst_ssid, description);
+
+	switch (frame_type) {
+
+	case frame_type_S_RR:		// Receive Ready - System Ready To Receive
+	case frame_type_S_RNR:		// Receive Not Ready - TNC Buffer Full
+	case frame_type_S_REJ:		// Reject Frame - Out of Sequence or Duplicate
+	case frame_type_S_SREJ:		// Selective Reject - Request single frame repeat
+
+		// S frames (RR, RNR, REJ, SREJ), mod 8, have control N(R) P/F S S 0 1
+		// These are mapped into    P/F N(R) C S S
+		// Bit 6 is not mentioned in documentation but it is used for P/F for the other frame types.
+		// C is copied from the C bit in the destination addr.
+		// C from source is not used here.  Reception assumes it is the opposite.
+		// PID is set to 0, meaning none, for S frames.
+
+		SET_UI(hdr, 0);
+		SET_PID(hdr, 0);
+		SET_CONTROL(hdr, (pf << 6) | (nr << 3) | (((cr == cr_cmd) | (cr == cr_11)) << 2));
+
+		// This gets OR'ed into the above.
+		switch (frame_type) {
+		case frame_type_S_RR:	SET_CONTROL(hdr, 0);	break;
+		case frame_type_S_RNR:	SET_CONTROL(hdr, 1);	break;
+		case frame_type_S_REJ:	SET_CONTROL(hdr, 2);	break;
+		case frame_type_S_SREJ:	SET_CONTROL(hdr, 3);	break;
+		default:	break;
+		}
+
+		break;
+
+	case frame_type_U_SABM:		// Set Async Balanced Mode
+	case frame_type_U_DISC:		// Disconnect
+	case frame_type_U_DM:		// Disconnect Mode
+	case frame_type_U_UA:		// Unnumbered Acknowledge
+	case frame_type_U_FRMR:		// Frame Reject
+	case frame_type_U_UI:		// Unnumbered Information
+	case frame_type_U_XID:		// Exchange Identification
+	case frame_type_U_TEST:		// Test
+
+		// The encoding allows only 3 bits for frame type and SABME got left out.
+		// Control format:  P/F opcode[3] C n/a n/a
+		// The grayed out n/a bits are observed as 00 in the example.
+		// The header UI field must also be set for UI frames.
+		// PID is set to 1 for all U frames other than UI.
+
+		if (frame_type == frame_type_U_UI) {
+			SET_UI(hdr, 1);	// I guess this is how we distinguish 'I' and 'UI'
+				// on the receiving end.
+			int pid = encode_pid(pp);
+			if (pid < 0) return (-1);
+			SET_PID(hdr, pid);
+		}
+		else {
+			SET_PID(hdr, 1);	// 1 for 'U' other than 'UI'.
+		}
+
+		// Each of the destination and source addresses has a "C" bit.
+		// They should normally have the opposite setting.
+		// IL2P has only a single bit to represent 4 possbilities.
+		//
+		//	dst	src	il2p	meaning
+		//	---	---	----	-------
+		//	0	0	0	Not valid (earlier protocol version)
+		//	1	0	1	Command (v2)
+		//	0	1	0	Response (v2)
+		//	1	1	1	Not valid (earlier protocol version)
+		//
+		// APRS does not mention how to set these bits and all 4 combinations
+		// are seen in the wild.  Apparently these are ignored on receive and no
+		// one cares.  Here we copy from the C bit in the destination address.
+		// It should be noted that the case of both C bits being the same can't
+		// be represented so the il2p encode/decode bit not produce exactly the
+		// same bits.  We see this in the second example in the protocol spec.
+		// The original UI frame has both C bits of 0 so it is received as a response.
+
+		SET_CONTROL(hdr, (pf << 6) | (((cr == cr_cmd) | (cr == cr_11)) << 2));
+
+		// This gets OR'ed into the above.
+		switch (frame_type) {
+		case frame_type_U_SABM:	SET_CONTROL(hdr, 0 << 3);	break;
+		case frame_type_U_DISC:	SET_CONTROL(hdr, 1 << 3);	break;
+		case frame_type_U_DM:	SET_CONTROL(hdr, 2 << 3);	break;
+		case frame_type_U_UA:	SET_CONTROL(hdr, 3 << 3);	break;
+		case frame_type_U_FRMR:	SET_CONTROL(hdr, 4 << 3);	break;
+		case frame_type_U_UI:	SET_CONTROL(hdr, 5 << 3);	break;
+		case frame_type_U_XID:	SET_CONTROL(hdr, 6 << 3);	break;
+		case frame_type_U_TEST:	SET_CONTROL(hdr, 7 << 3);	break;
+		default:	break;
+		}
+		break;
+
+	case frame_type_I:		// Information
+
+		// I frames (mod 8 only)
+		// encoded control: P/F N(R) N(S)
+
+		SET_UI(hdr, 0);
+
+		int pid2 = encode_pid(pp);
+		if (pid2 < 0) return (-1);
+		SET_PID(hdr, pid2);
+
+		SET_CONTROL(hdr, (pf << 6) | (nr << 3) | ns);
+		break;
+
+	case frame_type_U_SABME:		// Set Async Balanced Mode, Extended
+	case frame_type_U:			// other Unnumbered, not used by AX.25.
+	case frame_not_AX25:		// Could not get control byte from frame.
+	default:
+
+		// Fall back to the header type 0 for these.
+		return (-1);
+	}
+
+	// Common for all header type 1.
+
+		// Bit 7 has [FEC Level:1], [HDR Type:1], [Payload byte Count:10]
+
+	SET_FEC_LEVEL(hdr, max_fec);
+	SET_HDR_TYPE(hdr, 1);
+
+	unsigned char *pinfo;
+	int info_len;
+
+	info_len = ax25_get_info(pp, &pinfo);
+	if (info_len < 0 || info_len > IL2P_MAX_PAYLOAD_SIZE) {
+		return (-2);
+	}
+
+	SET_PAYLOAD_BYTE_COUNT(hdr, info_len);
+	return (info_len);
+}
+
+
+// This should create a packet from the IL2P header.
+// The information part will not be filled in.
+
+static void trim(char *stuff)
+{
+	char *p = stuff + strlen(stuff) - 1;
+	while (strlen(stuff) > 0 && (*p == ' ')) {
+		*p = '\0';
+		p--;
+	}
+}
+
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_decode_header_type_1
+ *
+ * Purpose:	Attempt to convert type 1 header to a packet object.
+ *
+ * Inputs:	hdr - IL2P header with no scrambling or parity symbols.
+ *
+ *		num_sym_changed - Number of symbols changed by FEC in the header.
+ *				Should be 0 or 1.
+ *
+ * Returns:	Packet Object or NULL for failure.
+ *
+ * Description:	A later step will process the payload for the information part.
+ *
+ *--------------------------------------------------------------------------------*/
+
+packet_t il2p_decode_header_type_1(unsigned char *hdr, int num_sym_changed)
+{
+
+	if (GET_HDR_TYPE(hdr) != 1) {
+		Debugprintf("IL2P Internal error.  Should not be here: %s, when header type is 0.\n", __func__);
+		return (NULL);
+	}
+
+	// First get the addresses including SSID.
+
+	char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN];
+	int num_addr = 2;
+	memset(addrs, 0, 2 * AX25_MAX_ADDR_LEN);
+
+	// The IL2P header uses 2 parity symbols which means a single corrupted symbol (byte)
+	// can always be corrected.
+	// However, I have seen cases, where the error rate is very high, where the RS decoder
+	// thinks it found a valid code block by changing one symbol but it was the wrong one.
+	// The result is trash.  This shows up as address fields like 'R&G4"A' and 'TEW\ !'.
+	// I added a sanity check here to catch characters other than upper case letters and digits.
+	// The frame should be rejected in this case.  The question is whether to discard it
+	// silently or print a message so the user can see that something strange is happening?
+	// My current thinking is that it should be silently ignored if the header has been
+	// modified (correctee or more likely, made worse in this cases).
+	// If no changes were made, something weird is happening.  We should mention it for
+	// troubleshooting rather than sweeping it under the rug.
+
+	// The same thing has been observed with the payload, under very high error conditions,
+	// and max_fec==0.  Here I don't see a good solution.  AX.25 information can contain
+	// "binary" data so I'm not sure what sort of sanity check could be added.
+	// This was not observed with max_fec==1.  If we make that the default, same as Nino TNC,
+	// it would be extremely extremely unlikely unless someone explicitly selects weaker FEC.
+
+	// TODO: We could do something similar for header type 0.
+	// The address fields should be all binary zero values.
+	// Someone overly ambitious might check the addresses found in the first payload block.
+
+	for (int i = 0; i <= 5; i++) {
+		addrs[AX25_DESTINATION][i] = sixbit_to_ascii(hdr[i] & 0x3f);
+	}
+	trim(addrs[AX25_DESTINATION]);
+	for (int i = 0; i < strlen(addrs[AX25_DESTINATION]); i++) {
+		if (!isupper(addrs[AX25_DESTINATION][i]) && !isdigit(addrs[AX25_DESTINATION][i])) {
+			if (num_sym_changed == 0) {
+				// This can pop up sporadically when receiving random noise.
+				// Would be better to show only when debug is enabled but variable not available here.
+				// TODO: For now we will just suppress it.
+					//text_color_set(DW_COLOR_ERROR);
+					//Debugprintf ("IL2P: Invalid character '%c' in destination address '%s'\n", addrs[AX25_DESTINATION][i], addrs[AX25_DESTINATION]);
+			}
+			return (NULL);
+		}
+	}
+	sprintf(addrs[AX25_DESTINATION] + strlen(addrs[AX25_DESTINATION]), "-%d", (hdr[12] >> 4) & 0xf);
+
+	for (int i = 0; i <= 5; i++) {
+		addrs[AX25_SOURCE][i] = sixbit_to_ascii(hdr[i + 6] & 0x3f);
+	}
+	trim(addrs[AX25_SOURCE]);
+	for (int i = 0; i < strlen(addrs[AX25_SOURCE]); i++) {
+		if (!isupper(addrs[AX25_SOURCE][i]) && !isdigit(addrs[AX25_SOURCE][i])) {
+			if (num_sym_changed == 0) {
+				// This can pop up sporadically when receiving random noise.
+				// Would be better to show only when debug is enabled but variable not available here.
+				// TODO: For now we will just suppress it.
+					//text_color_set(DW_COLOR_ERROR);
+					//Debugprintf ("IL2P: Invalid character '%c' in source address '%s'\n", addrs[AX25_SOURCE][i], addrs[AX25_SOURCE]);
+			}
+			return (NULL);
+		}
+	}
+	sprintf(addrs[AX25_SOURCE] + strlen(addrs[AX25_SOURCE]), "-%d", hdr[12] & 0xf);
+
+	// The PID field gives us the general type.
+	// 0 = 'S' frame.
+	// 1 = 'U' frame other than UI.
+	// others are either 'UI' or 'I' depending on the UI field.
+
+	int pid = GET_PID(hdr);
+	int ui = GET_UI(hdr);
+
+	if (pid == 0) {
+
+		// 'S' frame.
+		// The control field contains: P/F N(R) C S S
+
+		int control = GET_CONTROL(hdr);
+		cmdres_t cr = (control & 0x04) ? cr_cmd : cr_res;
+		ax25_frame_type_t ftype;
+		switch (control & 0x03) {
+		case 0: ftype = frame_type_S_RR; break;
+		case 1: ftype = frame_type_S_RNR; break;
+		case 2: ftype = frame_type_S_REJ; break;
+		default: ftype = frame_type_S_SREJ; break;
+		}
+		int modulo = 8;
+		int nr = (control >> 3) & 0x07;
+		int pf = (control >> 6) & 0x01;
+		unsigned char *pinfo = NULL;	// Any info for SREJ will be added later.
+		int info_len = 0;
+		return (ax25_s_frame(addrs, num_addr, cr, ftype, modulo, nr, pf, pinfo, info_len));
+	}
+	else if (pid == 1) {
+
+		// 'U' frame other than 'UI'.
+		// The control field contains: P/F OPCODE{3) C x x
+
+		int control = GET_CONTROL(hdr);
+		cmdres_t cr = (control & 0x04) ? cr_cmd : cr_res;
+		int axpid = 0;	// unused for U other than UI.
+		ax25_frame_type_t ftype;
+		switch ((control >> 3) & 0x7) {
+		case 0: ftype = frame_type_U_SABM; break;
+		case 1: ftype = frame_type_U_DISC; break;
+		case 2: ftype = frame_type_U_DM; break;
+		case 3: ftype = frame_type_U_UA; break;
+		case 4: ftype = frame_type_U_FRMR; break;
+		case 5: ftype = frame_type_U_UI; axpid = 0xf0; break;		// Should not happen with IL2P pid == 1.
+		case 6: ftype = frame_type_U_XID; break;
+		default: ftype = frame_type_U_TEST; break;
+		}
+		int pf = (control >> 6) & 0x01;
+		unsigned char *pinfo = NULL;	// Any info for UI, XID, TEST will be added later.
+		int info_len = 0;
+		return (ax25_u_frame(addrs, num_addr, cr, ftype, pf, axpid, pinfo, info_len));
+	}
+	else if (ui) {
+
+		// 'UI' frame.
+		// The control field contains: P/F OPCODE{3) C x x
+
+		int control = GET_CONTROL(hdr);
+		cmdres_t cr = (control & 0x04) ? cr_cmd : cr_res;
+		ax25_frame_type_t ftype = frame_type_U_UI;
+		int pf = (control >> 6) & 0x01;
+		int axpid = decode_pid(GET_PID(hdr));
+		unsigned char *pinfo = NULL;	// Any info for UI, XID, TEST will be added later.
+		int info_len = 0;
+		return (ax25_u_frame(addrs, num_addr, cr, ftype, pf, axpid, pinfo, info_len));
+	}
+	else {
+
+		// 'I' frame.
+		// The control field contains: P/F N(R) N(S)
+
+		int control = GET_CONTROL(hdr);
+		cmdres_t cr = cr_cmd;		// Always command.
+		int pf = (control >> 6) & 0x01;
+		int nr = (control >> 3) & 0x7;
+		int ns = control & 0x7;
+		int modulo = 8;
+		int axpid = decode_pid(GET_PID(hdr));
+		unsigned char *pinfo = NULL;	// Any info for UI, XID, TEST will be added later.
+		int info_len = 0;
+		return (ax25_i_frame(addrs, num_addr, cr, modulo, nr, ns, pf, axpid, pinfo, info_len));
+	}
+	return (NULL);	// unreachable but avoid warning.
+
+} // end
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_type_0_header
+ *
+ * Purpose:	Attempt to create type 0 header from packet object.
+ *
+ * Inputs:	pp	- Packet object.
+ *
+ *		max_fec	- 1 to use maximum FEC symbols, 0 for automatic.
+ *
+ * Outputs:	hdr	- IL2P header with no scrambling or parity symbols.
+ *			  Must be large enough to hold IL2P_HEADER_SIZE unsigned bytes.
+ *
+ * Returns:	Number of bytes for information part or -1 for failure.
+ *		In case of failure, fall back to type 0 transparent encapsulation.
+ *
+ * Description:	The type 0 header is used when it is not one of the restricted cases
+ *		covered by the type 1 header.
+ *		The AX.25 frame is put in the payload.
+ *		This will cover: more than one address, mod 128 sequences, etc.
+ *
+ *--------------------------------------------------------------------------------*/
+
+int il2p_type_0_header(packet_t pp, int max_fec, unsigned char *hdr)
+{
+	memset(hdr, 0, IL2P_HEADER_SIZE);
+
+	// Bit 7 has [FEC Level:1], [HDR Type:1], [Payload byte Count:10]
+
+	SET_FEC_LEVEL(hdr, max_fec);
+	SET_HDR_TYPE(hdr, 0);
+
+	int frame_len = ax25_get_frame_len(pp);
+
+	if (frame_len < 14 || frame_len > IL2P_MAX_PAYLOAD_SIZE) {
+		return (-2);
+	}
+
+	SET_PAYLOAD_BYTE_COUNT(hdr, frame_len);
+	return (frame_len);
+}
+
+
+/***********************************************************************************
+ *
+ * Name:        il2p_get_header_attributes
+ *
+ * Purpose:     Extract a few attributes from an IL2p header.
+ *
+ * Inputs:      hdr	- IL2P header structure.
+ *
+ * Outputs:     hdr_type - 0 or 1.
+ *
+ *		max_fec	- 0 for automatic or 1 for fixed maximum size.
+ *
+ * Returns:	Payload byte count.   (actual payload size, not the larger encoded format)
+ *
+ ***********************************************************************************/
+
+
+int il2p_get_header_attributes(unsigned char *hdr, int *hdr_type, int *max_fec)
+{
+	*hdr_type = GET_HDR_TYPE(hdr);
+	*max_fec = GET_FEC_LEVEL(hdr);
+	return(GET_PAYLOAD_BYTE_COUNT(hdr));
+}
+
+
+/***********************************************************************************
+ *
+ * Name:        il2p_clarify_header
+ *
+ * Purpose:     Convert received header to usable form.
+ *		This involves RS FEC then descrambling.
+ *
+ * Inputs:      rec_hdr	- Header as received over the radio.
+ *
+ * Outputs:     corrected_descrambled_hdr - After RS FEC and unscrambling.
+ *
+ * Returns:	Number of symbols that were corrected:
+ *		 0 = No errors
+ *		 1 = Single symbol corrected.
+ *		 <0 = Unable to obtain good header.
+ *
+ ***********************************************************************************/
+
+int il2p_clarify_header(unsigned char *rec_hdr, unsigned char *corrected_descrambled_hdr)
+{
+	unsigned char corrected[IL2P_HEADER_SIZE + IL2P_HEADER_PARITY];
+
+	int e = il2p_decode_rs(rec_hdr, IL2P_HEADER_SIZE, IL2P_HEADER_PARITY, corrected);
+
+	il2p_descramble_block(corrected, corrected_descrambled_hdr, IL2P_HEADER_SIZE);
+
+	return (e);
+}
+
+// end il2p_header.c 
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * File:	il2p_payload.c
+ *
+ * Purpose:	Functions dealing with the payload.
+ *
+ *--------------------------------------------------------------------------------*/
+
+
+ /*--------------------------------------------------------------------------------
+  *
+  * Function:	il2p_payload_compute
+  *
+  * Purpose:	Compute number and sizes of data blocks based on total size.
+  *
+  * Inputs:	payload_size	0 to 1023.  (IL2P_MAX_PAYLOAD_SIZE)
+  *		max_fec		true for 16 parity symbols, false for automatic.
+  *
+  * Outputs:	*p		Payload block sizes and counts.
+  *				Number of parity symbols per block.
+  *
+  * Returns:	Number of bytes in the encoded format.
+  *		Could be 0 for no payload blocks.
+  *		-1 for error (i.e. invalid unencoded size: <0 or >1023)
+  *
+  *--------------------------------------------------------------------------------*/
+
+int il2p_payload_compute(il2p_payload_properties_t *p, int payload_size, int max_fec)
+{
+	memset(p, 0, sizeof(il2p_payload_properties_t));
+
+	if (payload_size < 0 || payload_size > IL2P_MAX_PAYLOAD_SIZE) {
+		return (-1);
+	}
+	if (payload_size == 0) {
+		return (0);
+	}
+
+	if (max_fec) {
+		p->payload_byte_count = payload_size;
+		p->payload_block_count = (p->payload_byte_count + 238) / 239;
+		p->small_block_size = p->payload_byte_count / p->payload_block_count;
+		p->large_block_size = p->small_block_size + 1;
+		p->large_block_count = p->payload_byte_count - (p->payload_block_count * p->small_block_size);
+		p->small_block_count = p->payload_block_count - p->large_block_count;
+		p->parity_symbols_per_block = 16;
+	}
+	else {
+		p->payload_byte_count = payload_size;
+		p->payload_block_count = (p->payload_byte_count + 246) / 247;
+		p->small_block_size = p->payload_byte_count / p->payload_block_count;
+		p->large_block_size = p->small_block_size + 1;
+		p->large_block_count = p->payload_byte_count - (p->payload_block_count * p->small_block_size);
+		p->small_block_count = p->payload_block_count - p->large_block_count;
+		//p->parity_symbols_per_block = (p->small_block_size / 32) + 2;  // Looks like error in documentation
+
+		// It would work if the number of parity symbols was based on large block size.
+
+		if (p->small_block_size <= 61) p->parity_symbols_per_block = 2;
+		else if (p->small_block_size <= 123) p->parity_symbols_per_block = 4;
+		else if (p->small_block_size <= 185) p->parity_symbols_per_block = 6;
+		else if (p->small_block_size <= 247) p->parity_symbols_per_block = 8;
+		else {
+			// Should not happen.  But just in case...
+			Debugprintf("IL2P parity symbol per payload block error.  small_block_size = %d\n", p->small_block_size);
+			return (-1);
+		}
+	}
+
+	// Return the total size for the encoded format.
+
+	return (p->small_block_count * (p->small_block_size + p->parity_symbols_per_block) +
+		p->large_block_count * (p->large_block_size + p->parity_symbols_per_block));
+
+} // end il2p_payload_compute
+
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_encode_payload
+ *
+ * Purpose:	Split payload into multiple blocks such that each set
+ *		of data and parity symbols fit into a 255 byte RS block.
+ *
+ * Inputs:	*payload	Array of bytes.
+ *		payload_size	0 to 1023.  (IL2P_MAX_PAYLOAD_SIZE)
+ *		max_fec		true for 16 parity symbols, false for automatic.
+ *
+ * Outputs:	*enc		Encoded payload for transmission.
+ *				Up to IL2P_MAX_ENCODED_SIZE bytes.
+ *
+ * Returns:	-1 for error (i.e. invalid size)
+ *		0 for no blocks.  (i.e. size zero)
+ *		Number of bytes generated.  Maximum IL2P_MAX_ENCODED_SIZE.
+ *
+ * Note:	I interpreted the protocol spec as saying the LFSR state is retained
+ *		between data blocks.  During interoperability testing, I found that
+ *		was not the case.  It is reset for each data block.
+ *
+ *--------------------------------------------------------------------------------*/
+
+
+int il2p_encode_payload(unsigned char *payload, int payload_size, int max_fec, unsigned char *enc)
+{
+	if (payload_size > IL2P_MAX_PAYLOAD_SIZE) return (-1);
+	if (payload_size == 0) return (0);
+
+	// Determine number of blocks and sizes.
+
+	il2p_payload_properties_t ipp;
+	int e;
+	e = il2p_payload_compute(&ipp, payload_size, max_fec);
+	if (e <= 0) {
+		return (e);
+	}
+
+	unsigned char *pin = payload;
+	unsigned char *pout = enc;
+	int encoded_length = 0;
+	unsigned char scram[256];
+	unsigned char parity[IL2P_MAX_PARITY_SYMBOLS];
+
+	// First the large blocks.
+
+	for (int b = 0; b < ipp.large_block_count; b++) {
+
+		il2p_scramble_block(pin, scram, ipp.large_block_size);
+		memcpy(pout, scram, ipp.large_block_size);
+		pin += ipp.large_block_size;
+		pout += ipp.large_block_size;
+		encoded_length += ipp.large_block_size;
+		il2p_encode_rs(scram, ipp.large_block_size, ipp.parity_symbols_per_block, parity);
+		memcpy(pout, parity, ipp.parity_symbols_per_block);
+		pout += ipp.parity_symbols_per_block;
+		encoded_length += ipp.parity_symbols_per_block;
+	}
+
+	// Then the small blocks.
+
+	for (int b = 0; b < ipp.small_block_count; b++) {
+
+		il2p_scramble_block(pin, scram, ipp.small_block_size);
+		memcpy(pout, scram, ipp.small_block_size);
+		pin += ipp.small_block_size;
+		pout += ipp.small_block_size;
+		encoded_length += ipp.small_block_size;
+		il2p_encode_rs(scram, ipp.small_block_size, ipp.parity_symbols_per_block, parity);
+		memcpy(pout, parity, ipp.parity_symbols_per_block);
+		pout += ipp.parity_symbols_per_block;
+		encoded_length += ipp.parity_symbols_per_block;
+	}
+
+	return (encoded_length);
+
+} // end il2p_encode_payload
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_decode_payload
+ *
+ * Purpose:	Extract original data from encoded payload.
+ *
+ * Inputs:	received	Array of bytes.  Size is unknown but in practice it
+ *				must not exceed IL2P_MAX_ENCODED_SIZE.
+ *		payload_size	0 to 1023.  (IL2P_MAX_PAYLOAD_SIZE)
+ *				Expected result size based on header.
+ *		max_fec		true for 16 parity symbols, false for automatic.
+ *
+ * Outputs:	payload_out	Recovered payload.
+ *
+ * In/Out:	symbols_corrected	Number of symbols corrected.
+ *
+ *
+ * Returns:	Number of bytes extracted.  Should be same as payload_size going in.
+ *		-3 for unexpected internal inconsistency.
+ *		-2 for unable to recover from signal corruption.
+ *		-1 for invalid size.
+ *		0 for no blocks.  (i.e. size zero)
+ *
+ * Description:	Each block is scrambled separately but the LSFR state is carried
+ *		from the first payload block to the next.
+ *
+ *--------------------------------------------------------------------------------*/
+
+int il2p_decode_payload(unsigned char *received, int payload_size, int max_fec, unsigned char *payload_out, int *symbols_corrected)
+{
+	// Determine number of blocks and sizes.
+
+	il2p_payload_properties_t ipp;
+	int e;
+	e = il2p_payload_compute(&ipp, payload_size, max_fec);
+	if (e <= 0) {
+		return (e);
+	}
+
+	unsigned char *pin = received;
+	unsigned char *pout = payload_out;
+	int decoded_length = 0;
+	int failed = 0;
+
+	// First the large blocks.
+
+	for (int b = 0; b < ipp.large_block_count; b++) {
+		unsigned char corrected_block[255];
+		int e = il2p_decode_rs(pin, ipp.large_block_size, ipp.parity_symbols_per_block, corrected_block);
+
+		// Debugprintf ("%s:%d: large block decode_rs returned status = %d\n", __FILE__, __LINE__, e);
+
+		if (e < 0) failed = 1;
+		*symbols_corrected += e;
+
+		il2p_descramble_block(corrected_block, pout, ipp.large_block_size);
+
+		if (il2p_get_debug() >= 2) {
+	
+			Debugprintf("Descrambled large payload block, %d bytes:\n", ipp.large_block_size);
+			fx_hex_dump(pout, ipp.large_block_size);
+		}
+
+		pin += ipp.large_block_size + ipp.parity_symbols_per_block;
+		pout += ipp.large_block_size;
+		decoded_length += ipp.large_block_size;
+	}
+
+	// Then the small blocks.
+
+	for (int b = 0; b < ipp.small_block_count; b++) {
+		unsigned char corrected_block[255];
+		int e = il2p_decode_rs(pin, ipp.small_block_size, ipp.parity_symbols_per_block, corrected_block);
+
+		// Debugprintf ("%s:%d: small block decode_rs returned status = %d\n", __FILE__, __LINE__, e);
+
+		if (e < 0) failed = 1;
+		*symbols_corrected += e;
+
+		il2p_descramble_block(corrected_block, pout, ipp.small_block_size);
+
+		if (il2p_get_debug() >= 2) {
+	
+			Debugprintf("Descrambled small payload block, %d bytes:\n", ipp.small_block_size);
+			fx_hex_dump(pout, ipp.small_block_size);
+		}
+
+		pin += ipp.small_block_size + ipp.parity_symbols_per_block;
+		pout += ipp.small_block_size;
+		decoded_length += ipp.small_block_size;
+	}
+
+	if (failed) {
+		//Debugprintf ("%s:%d: failed = %0x\n", __FILE__, __LINE__, failed);
+		return (-2);
+	}
+
+	if (decoded_length != payload_size) {
+		Debugprintf("IL2P Internal error: decoded_length = %d, payload_size = %d\n", decoded_length, payload_size);
+		return (-3);
+	}
+
+	return (decoded_length);
+
+} // end il2p_decode_payload
+
+// end il2p_payload.c
+
+
+
+struct il2p_context_s {
+
+	enum { IL2P_SEARCHING = 0, IL2P_HEADER, IL2P_PAYLOAD, IL2P_DECODE } state;
+
+	unsigned int acc;	// Accumulate most recent 24 bits for sync word matching.
+				// Lower 8 bits are also used for accumulating bytes for
+				// the header and payload.
+
+	int bc;			// Bit counter so we know when a complete byte has been accumulated.
+
+	int polarity;		// 1 if opposite of expected polarity.
+
+	unsigned char shdr[IL2P_HEADER_SIZE + IL2P_HEADER_PARITY];
+	// Scrambled header as received over the radio.  Includes parity.
+	int hc;			// Number if bytes placed in above.
+
+	unsigned char uhdr[IL2P_HEADER_SIZE];  // Header after FEC and unscrambling.
+
+	int eplen;		// Encoded payload length.  This is not the nuumber from
+				// from the header but rather the number of encoded bytes to gather.
+
+	unsigned char spayload[IL2P_MAX_ENCODED_PAYLOAD_SIZE];
+	// Scrambled and encoded payload as received over the radio.
+	int pc;			// Number of bytes placed in above.
+
+	int corrected;		// Number of symbols corrected by RS FEC.
+};
+
+static struct il2p_context_s *il2p_context[MAX_CHANS][MAX_SUBCHANS][MAX_SLICERS];
+
+
+
+/***********************************************************************************
+ *
+ * Name:        il2p_rec_bit
+ *
+ * Purpose:     Extract FX.25 packets from a stream of bits.
+ *
+ * Inputs:      chan    - Channel number.
+ *
+ *              subchan - This allows multiple demodulators per channel.
+ *
+ *              slice   - Allows multiple slicers per demodulator (subchannel).
+ *
+ *              dbit	- One bit from the received data stream.
+ *
+ * Description: This is called once for each received bit.
+ *              For each valid packet, process_rec_frame() is called for further processing.
+ *		It can gather multiple candidates from different parallel demodulators
+ *		("subchannels") and slicers, then decide which one is the best.
+ *
+ ***********************************************************************************/
+
+int centreFreq[4] = { 0, 0, 0, 0 };
+
+void il2p_rec_bit(int chan, int subchan, int slice, int dbit)
+{
+	// Allocate context blocks only as needed.
+
+	if (dbit)
+		dbit = 1;
+
+	struct il2p_context_s *F = il2p_context[chan][subchan][slice];
+	if (F == NULL) {
+		//assert(chan >= 0 && chan < MAX_CHANS);
+		//assert(subchan >= 0 && subchan < MAX_SUBCHANS);
+		//assert(slice >= 0 && slice < MAX_SLICERS);
+		F = il2p_context[chan][subchan][slice] = (struct il2p_context_s *)malloc(sizeof(struct il2p_context_s));
+		//assert(F != NULL);
+		memset(F, 0, sizeof(struct il2p_context_s));
+	}
+
+	// Accumulate most recent 24 bits received.  Most recent is LSB.
+
+	F->acc = ((F->acc << 1) | (dbit & 1)) & 0x00ffffff;
+
+	// State machine to look for sync word then gather appropriate number of header and payload bytes.
+
+	switch (F->state) {
+
+	case IL2P_SEARCHING:		// Searching for the sync word.
+
+		if (__builtin_popcount(F->acc ^ IL2P_SYNC_WORD) <= 1) {	// allow single bit mismatch
+		  //text_color_set (DW_COLOR_INFO);
+		  //Debugprintf ("IL2P header has normal polarity\n");
+			F->polarity = 0;
+			F->state = IL2P_HEADER;
+			F->bc = 0;
+			F->hc = 0;
+		
+			// Determine Centre Freq
+			
+			centreFreq[chan] = GuessCentreFreq(chan);
+		}
+		else if (__builtin_popcount((~F->acc & 0x00ffffff) ^ IL2P_SYNC_WORD) <= 1) {
+			// FIXME - this pops up occasionally with random noise.  Find better way to convey information.
+			// This also happens for each slicer - to noisy.
+			//Debugprintf ("IL2P header has reverse polarity\n");
+			F->polarity = 1;
+			F->state = IL2P_HEADER;
+			F->bc = 0;
+			F->hc = 0;
+			centreFreq[chan] = GuessCentreFreq(chan);
+		}
+			
+		break;
+
+	case IL2P_HEADER:		// Gathering the header.
+
+		F->bc++;
+		if (F->bc == 8) {	// full byte has been collected.
+			F->bc = 0;
+			if (!F->polarity) {
+				F->shdr[F->hc++] = F->acc & 0xff;
+			}
+			else {
+				F->shdr[F->hc++] = (~F->acc) & 0xff;
+			}
+			if (F->hc == IL2P_HEADER_SIZE + IL2P_HEADER_PARITY) {		// Have all of header
+
+				//if (il2p_get_debug() >= 1)
+				//{
+				//	Debugprintf("IL2P header as received [%d.%d.%d]:\n", chan, subchan, slice);
+				//	fx_hex_dump(F->shdr, IL2P_HEADER_SIZE + IL2P_HEADER_PARITY);
+				//}
+
+				// Fix any errors and descramble.
+				F->corrected = il2p_clarify_header(F->shdr, F->uhdr);
+
+				if (F->corrected >= 0) {	// Good header.
+							// How much payload is expected?
+					il2p_payload_properties_t plprop;
+					int hdr_type, max_fec;
+					int len = il2p_get_header_attributes(F->uhdr, &hdr_type, &max_fec);
+
+					F->eplen = il2p_payload_compute(&plprop, len, max_fec);
+
+					if (il2p_get_debug() >= 1)
+					{	
+						Debugprintf("Header type %d, max fec = %d", hdr_type, max_fec);
+						Debugprintf("Need to collect %d encoded bytes for %d byte payload.", F->eplen, len);
+						Debugprintf("%d small blocks of %d and %d large blocks of %d.  %d parity symbols per block",
+							plprop.small_block_count, plprop.small_block_size,
+							plprop.large_block_count, plprop.large_block_size, plprop.parity_symbols_per_block);
+					}
+
+					if (F->eplen >= 1) {		// Need to gather payload.
+						F->pc = 0;
+						F->state = IL2P_PAYLOAD;
+					}
+					else if (F->eplen == 0) {	// No payload.
+						F->pc = 0;
+						F->state = IL2P_DECODE;
+					}
+					else {			// Error.
+
+						if (il2p_get_debug() >= 1) {
+							Debugprintf("IL2P header INVALID.\n");
+						}
+
+						F->state = IL2P_SEARCHING;
+					}
+				}  // good header after FEC.
+				else {
+					F->state = IL2P_SEARCHING;	// Header failed FEC check.
+				}
+			}  // entire header has been collected.    
+		}  // full byte collected.
+		break;
+
+	case IL2P_PAYLOAD:		// Gathering the payload, if any.
+
+		F->bc++;
+		if (F->bc == 8) {	// full byte has been collected.
+			F->bc = 0;
+			if (!F->polarity) {
+				F->spayload[F->pc++] = F->acc & 0xff;
+			}
+			else {
+				F->spayload[F->pc++] = (~F->acc) & 0xff;
+			}
+			if (F->pc == F->eplen) {
+
+				// TODO?: for symmetry it seems like we should clarify the payload before combining.
+
+				F->state = IL2P_DECODE;
+			}
+		}
+		break;
+
+	case IL2P_DECODE:
+		// We get here after a good header and any payload has been collected.
+		// Processing is delayed by one bit but I think it makes the logic cleaner.
+		// During unit testing be sure to send an extra bit to flush it out at the end.
+
+		// in uhdr[IL2P_HEADER_SIZE];  // Header after FEC and descrambling.
+
+		// TODO?:  for symmetry, we might decode the payload here and later build the frame.
+
+	{
+		packet_t pp = il2p_decode_header_payload(F->uhdr, F->spayload, &(F->corrected));
+
+		if (il2p_get_debug() >= 1)
+		{
+			if (pp == NULL)
+			{
+				// Most likely too many FEC errors.
+				Debugprintf("FAILED to construct frame in %s.\n", __func__);
+			}
+		}
+
+		if (pp != NULL) {
+			alevel_t alevel = demod_get_audio_level(chan, subchan);
+			retry_t retries = F->corrected;
+			int is_fx25 = 1;		// FIXME: distinguish fx.25 and IL2P.
+					  // Currently this just means that a FEC mode was used.
+
+			// TODO: Could we put last 3 arguments in packet object rather than passing around separately?
+
+			multi_modem_process_rec_packet(chan, subchan, slice, pp, alevel, retries, is_fx25, slice, centreFreq[chan]);
+		}
+	}   // end block for local variables.
+
+	if (il2p_get_debug() >= 1) {
+
+		Debugprintf("-----");
+	}
+
+	F->state = IL2P_SEARCHING;
+	break;
+
+	} // end of switch
+
+} // end il2p_rec_bit
+
+
+
+
+
+
+
+// Scramble bits for il2p transmit.
+
+// Note that there is a delay of 5 until the first bit comes out.
+// So we need to need to ignore the first 5 out and stick in
+// an extra 5 filler bits to flush at the end.
+
+#define INIT_TX_LSFR 0x00f
+
+static inline int scramble_bit(int in, int *state)
+{
+	int out = ((*state >> 4) ^ *state) & 1;
+	*state = ((((in ^ *state) & 1) << 9) | (*state ^ ((*state & 1) << 4))) >> 1;
+	return (out);
+}
+
+
+// Undo data scrambling for il2p receive.
+
+#define INIT_RX_LSFR 0x1f0
+
+static inline int descramble_bit(int in, int *state)
+{
+	int out = (in ^ *state) & 1;
+	*state = ((*state >> 1) | ((in & 1) << 8)) ^ ((in & 1) << 3);
+	return (out);
+}
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_scramble_block
+ *
+ * Purpose:	Scramble a block before adding RS parity.
+ *
+ * Inputs:	in		Array of bytes.
+ *		len		Number of bytes both in and out.
+ *
+ * Outputs:	out		Array of bytes.
+ *
+ *--------------------------------------------------------------------------------*/
+
+void il2p_scramble_block(unsigned char *in, unsigned char *out, int len)
+{
+	int tx_lfsr_state = INIT_TX_LSFR;
+
+	memset(out, 0, len);
+
+	int skipping = 1;	// Discard the first 5 out.
+	int ob = 0;		// Index to output byte.
+	int om = 0x80;		// Output bit mask;
+	for (int ib = 0; ib < len; ib++) {
+		for (int im = 0x80; im != 0; im >>= 1) {
+			int s = scramble_bit((in[ib] & im) != 0, &tx_lfsr_state);
+			if (ib == 0 && im == 0x04) skipping = 0;
+			if (!skipping) {
+				if (s) {
+					out[ob] |= om;
+				}
+				om >>= 1;
+				if (om == 0) {
+					om = 0x80;
+					ob++;
+				}
+			}
+		}
+	}
+	// Flush it.
+
+	// This is a relic from when I thought the state would need to
+	// be passed along for the next block.
+	// Preserve the LSFR state from before flushing.
+	// This might be needed as the initial state for later payload blocks.
+	int x = tx_lfsr_state;
+	for (int n = 0; n < 5; n++) {
+		int s = scramble_bit(0, &x);
+		if (s) {
+			out[ob] |= om;
+		}
+		om >>= 1;
+		if (om == 0) {
+			om = 0x80;
+			ob++;
+		}
+	}
+
+}  // end il2p_scramble_block
+
+
+
+/*--------------------------------------------------------------------------------
+ *
+ * Function:	il2p_descramble_block
+ *
+ * Purpose:	Descramble a block after removing RS parity.
+ *
+ * Inputs:	in		Array of bytes.
+ *		len		Number of bytes both in and out.
+ *
+ * Outputs:	out		Array of bytes.
+ *
+ *--------------------------------------------------------------------------------*/
+
+void il2p_descramble_block(unsigned char *in, unsigned char *out, int len)
+{
+	int rx_lfsr_state = INIT_RX_LSFR;
+
+	memset(out, 0, len);
+
+	for (int b = 0; b < len; b++) {
+		for (int m = 0x80; m != 0; m >>= 1) {
+			int d = descramble_bit((in[b] & m) != 0, &rx_lfsr_state);
+			if (d) {
+				out[b] |= m;
+			}
+		}
+	}
+}
+
+// end il2p_scramble.c
+
+
+
+
+static int number_of_bits_sent[MAX_CHANS];		// Count number of bits sent by "il2p_send_frame"
+
+static void send_bytes(int chan, unsigned char *b, int count, int polarity);
+static void send_bit(int chan, int b, int polarity);
+
+
+
+/*-------------------------------------------------------------
+ *
+ * Name:	il2p_send_frame
+ *
+ * Purpose:	Convert frames to a stream of bits in IL2P format.
+ *
+ * Inputs:	chan	- Audio channel number, 0 = first.
+ *
+ *		pp	- Pointer to packet object.
+ *
+ *		max_fec	- 1 to force 16 parity symbols for each payload block.
+ *			  0 for automatic depending on block size.
+ *
+ *		polarity - 0 for normal.  1 to invert signal.
+ *			   2 special case for testing - introduce some errors to test FEC.
+ *
+ * Outputs:	Bits are shipped out by calling tone_gen_put_bit().
+ *
+ * Returns:	Number of bits sent including
+ *		- Preamble   (01010101...)
+ *		- 3 byte Sync Word.
+ *		- 15 bytes for Header.
+ *		- Optional payload.
+ *		The required time can be calculated by dividing this
+ *		number by the transmit rate of bits/sec.
+ *		-1 is returned for failure.
+ *
+ * Description:	Generate an IL2P encoded frame.
+ *
+ * Assumptions:	It is assumed that the tone_gen module has been
+ *		properly initialized so that bits sent with
+ *		tone_gen_put_bit() are processed correctly.
+ *
+ * Errors:	Return -1 for error.  Probably frame too large.
+ *
+ * Note:	Inconsistency here. ax25 version has just a byte array
+ *		and length going in.  Here we need the full packet object.
+ *
+ *--------------------------------------------------------------*/
+
+string * il2p_send_frame(int chan, packet_t pp, int max_fec, int polarity)
+{
+	unsigned char encoded[IL2P_MAX_PACKET_SIZE];
+	string * packet = newString();
+	int preamblecount;
+	unsigned char preamble[1024];
+
+
+	encoded[0] = (IL2P_SYNC_WORD >> 16) & 0xff;
+	encoded[1] = (IL2P_SYNC_WORD >> 8) & 0xff;
+	encoded[2] = (IL2P_SYNC_WORD) & 0xff;
+
+	int elen = il2p_encode_frame(pp, max_fec, encoded + IL2P_SYNC_WORD_SIZE);
+	if (elen <= 0) {
+		Debugprintf("IL2P: Unable to encode frame into IL2P.\n");
+		return (packet);
+	}
+
+	elen += IL2P_SYNC_WORD_SIZE;
+
+	number_of_bits_sent[chan] = 0;
+
+	if (il2p_get_debug() >= 1) {
+		Debugprintf("IL2P frame, max_fec = %d, %d encoded bytes total", max_fec, elen);
+//		fx_hex_dump(encoded, elen);
+	}
+
+	// Send bits to modulator.
+
+	// Try using preaamble for txdelay
+
+	preamblecount = (txdelay[chan] * tx_baudrate[chan]) / 8000;		// 8 for bits, 1000 for mS
+
+	if (preamblecount > 1024)
+		preamblecount = 1024;
+
+ 	memset(preamble, IL2P_PREAMBLE, preamblecount);
+
+	stringAdd(packet, preamble, preamblecount);
+	stringAdd(packet, encoded, elen);
+
+	tx_fx25_size[chan] = packet->Length * 8;
+
+	return packet;
+}
+
+
+
+// TX Code. Builds whole packet then sends a bit at a time
+
+#define TX_SILENCE 0
+#define TX_DELAY 1
+#define TX_TAIL 2
+#define TX_NO_DATA 3
+#define TX_FRAME 4
+#define TX_WAIT_BPF 5
+
+
+#define TX_BIT0 0
+#define TX_BIT1 1
+#define FRAME_EMPTY 0
+#define FRAME_FULL 1
+#define FRAME_NO_FRAME 2
+#define FRAME_NEW_FRAME 3
+#define BYTE_EMPTY 0
+#define BYTE_FULL 1
+
+extern UCHAR tx_frame_status[5];
+extern UCHAR tx_byte_status[5];
+extern string * tx_data[5];
+extern int tx_data_len[5];
+extern UCHAR tx_bit_stream[5];
+extern UCHAR tx_bit_cnt[5];
+extern long tx_tail_cnt[5];
+extern BOOL tx_bs_bit[5];
+
+string * fill_il2p_data(int snd_ch, string * data)
+{
+	string * result;
+	packet_t pp = ax25_new();
+	
+
+	// Call il2p_send_frame to build the bit stream
+
+	pp->frame_len = data->Length - 2;					// Included CRC
+	memcpy(pp->frame_data, data->Data, data->Length);
+
+	result = il2p_send_frame(snd_ch, pp, 1, 0);
+
+	return result;
+}
+
+
+
+void il2p_get_new_frame(int snd_ch, TStringList * frame_stream)
+{
+	string * myTemp;
+
+	tx_bs_bit[snd_ch] = 0;
+	tx_bit_cnt[snd_ch] = 0;
+	tx_fx25_size_cnt[snd_ch] = 0;
+	tx_fx25_size[snd_ch] = 1;
+	tx_frame_status[snd_ch] = FRAME_NEW_FRAME;
+	tx_byte_status[snd_ch] = BYTE_EMPTY;
+
+	if (frame_stream->Count == 0)
+		tx_frame_status[snd_ch] = FRAME_NO_FRAME;
+	else
+	{
+		// We now pass control byte and ack bytes on front and pointer to socket on end if ackmode
+
+		myTemp = Strings(frame_stream, 0);			// get message
+
+		if ((myTemp->Data[0] & 0x0f) == 12)			// ACKMODE
+		{
+			// Save copy then copy data up 3 bytes
+
+			Add(&KISS_acked[snd_ch], duplicateString(myTemp));
+
+			mydelete(myTemp, 0, 3);
+			myTemp->Length -= sizeof(void *);
+		}
+		else
+		{
+			// Just remove control 
+
+			mydelete(myTemp, 0, 1);
+		}
+
+		AGW_AX25_frame_analiz(snd_ch, FALSE, myTemp);
+		put_frame(snd_ch, myTemp, "", TRUE, FALSE);
+
+		tx_data[snd_ch] = fill_il2p_data(snd_ch, myTemp);
+
+		Delete(frame_stream, 0);			// This will invalidate temp
+	}
+}
+
+
+
+// Original code
+
+/*
+static void send_bytes(int chan, unsigned char *b, int count, int polarity)
+{
+	for (int j = 0; j < count; j++) {
+		unsigned int x = b[j];
+		for (int k = 0; k < 8; k++) {
+			send_bit(chan, (x & 0x80) != 0, polarity);
+			x <<= 1;
+		}
+	}
+}
+
+// NRZI would be applied for AX.25 but IL2P does not use it.
+// However we do have an option to invert the signal.
+// The direwolf receive implementation will automatically compensate
+// for either polarity but other implementations might not.
+
+static void send_bit(int chan, int b, int polarity)
+{
+	tone_gen_put_bit(chan, (b ^ polarity) & 1);
+	number_of_bits_sent[chan]++;
+}
+*/
+
+
+
+
+int il2p_get_new_bit(int snd_ch, Byte bit)
+{
+	string *s;
+
+	if (tx_frame_status[snd_ch] == FRAME_EMPTY)
+	{
+		il2p_get_new_frame(snd_ch, &all_frame_buf[snd_ch]);
+		if (tx_frame_status[snd_ch] == FRAME_NEW_FRAME)
+			tx_frame_status[snd_ch] = FRAME_FULL;
+	}
+
+	if (tx_frame_status[snd_ch] == FRAME_FULL)
+	{
+		if (tx_byte_status[snd_ch] == BYTE_EMPTY)
+		{
+			if (tx_data[snd_ch]->Length)
+			{
+				s = tx_data[snd_ch];
+
+				tx_bit_stream[snd_ch] = s->Data[0];
+				tx_frame_status[snd_ch] = FRAME_FULL;
+				tx_byte_status[snd_ch] = BYTE_FULL;
+				tx_bit_cnt[snd_ch] = 0;
+				mydelete(tx_data[snd_ch], 0, 1);
+			}
+			else
+				tx_frame_status[snd_ch] = FRAME_EMPTY;
+		}
+		if (tx_byte_status[snd_ch] == BYTE_FULL)
+		{
+			// il2p sends high order bit first
+
+			bit = tx_bit_stream[snd_ch] >> 7;			// top bit to bottom
+
+			tx_bit_stream[snd_ch] = tx_bit_stream[snd_ch] << 1;
+			tx_bit_cnt[snd_ch]++;
+			tx_fx25_size_cnt[snd_ch]++;
+			if (tx_bit_cnt[snd_ch] >= 8)
+				tx_byte_status[snd_ch] = BYTE_EMPTY;
+			if (tx_fx25_size_cnt[snd_ch] == tx_fx25_size[snd_ch])
+				tx_frame_status[snd_ch] = FRAME_EMPTY;
+		}
+	}
+
+	if (tx_frame_status[snd_ch] == FRAME_EMPTY)
+	{
+		il2p_get_new_frame(snd_ch, &all_frame_buf[snd_ch]);
+
+		switch (tx_frame_status[snd_ch])
+		{
+		case FRAME_NEW_FRAME:
+			tx_frame_status[snd_ch] = FRAME_FULL;
+			break;
+
+		case FRAME_NO_FRAME:
+			tx_tail_cnt[snd_ch] = 0;
+			tx_frame_status[snd_ch] = FRAME_EMPTY;
+			tx_status[snd_ch] = TX_TAIL;
+			break;
+		}
+	}
+	return bit;
+}
+
+
+
diff --git a/kiss_mode.c b/kiss_mode.c
new file mode 100644
index 0000000..9994703
--- /dev/null
+++ b/kiss_mode.c
@@ -0,0 +1,490 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+/*
+uses sysutils,classes;
+
+  procedure KISS_init;
+  procedure KISS_free;
+  procedure KISS_add_stream(socket: integer);
+  procedure KISS_del_stream(socket: integer);
+  procedure KISS_on_data_in(socket: integer; data: string);
+  procedure KISS_on_data_out(port: byte; frame: string);
+  procedure KISS_send_ack(port: byte; data: string);
+  procedure KISS_send_ack1(port: byte);
+*/
+// I don't like this. maybe fine for Dephi but overcomlicated for C
+
+// I think I need a struct for each connection, but a simple array of entries should be fine
+// My normal ** and count system
+// Each needs an input buffer of max size kiss frame and length (or maybe string is a good idea)
+
+TKISSMode ** KissConnections = NULL;
+int KISSConCount = 0;
+
+#define FEND 0xc0
+#define FESC 0xDB
+#define TFEND 0xDC
+#define TFESC 0xDD
+#define KISS_ACKMODE 0x0C
+#define KISS_DATA 0
+
+struct TKISSMode_t  KISS;
+
+int KISS_encode(UCHAR * KISSBuffer, int port, string * frame, int TXMON);
+
+void KISS_init()
+{
+	int i;
+
+	KISS.data_in = newString();
+
+//	initTStringList(KISS.socket);
+
+	for (i = 0; i < 4; i++)
+	{
+		initTStringList(&KISS.buffer[i]);
+	}
+}
+
+
+/*
+procedure KISS_free;
+var
+  i: byte;
+begin
+  KISS.data_in.Free;
+  KISS.socket.Free;
+  for i:=1 to 4 do
+  begin
+    KISS.buffer[i].Free;
+    KISS.request[i].Free;
+    KISS.acked[i].Free;
+    KISS.irequest[i].Free;
+    KISS.iacked[i].Free;
+  end;
+end;
+*/
+
+void KISS_add_stream(void * Socket)
+{
+	// Add a new connection. Called when QT accepts an incoming call}
+
+	TKISSMode * KISS;
+
+	KissConnections = realloc(KissConnections, (KISSConCount + 1) * sizeof(void *));
+
+	KISS = KissConnections[KISSConCount++] = malloc(sizeof(KISS));
+
+	KISS->Socket = Socket;
+	KISS->data_in = newString();
+
+}
+
+void KISS_del_socket(void * socket)
+{
+	int i;
+	
+	TKISSMode * KISS = NULL;
+
+	if (KISSConCount == 0)
+		return;
+
+	for (i = 0; i < KISSConCount; i++)
+	{
+		if (KissConnections[i]->Socket == socket)
+		{
+			KISS = KissConnections[i];
+			break;
+		}
+	}
+
+	if (KISS == NULL)
+		return;
+
+	// Need to remove entry and move others down
+
+	KISSConCount--;
+
+	while (i < KISSConCount)
+	{
+		KissConnections[i] = KissConnections[i + 1];
+		i++;
+	}
+}
+
+
+void KISS_on_data_out(int port, string * frame, int TX)
+{
+	int Len;
+	UCHAR * KISSFrame = (UCHAR *)malloc(512);			// cant pass local data via signal/slot
+
+	Len = KISS_encode(KISSFrame, port, frame, TX);
+
+	KISSSendtoServer(NULL, KISSFrame, Len);				// Send to all open sockets
+}
+
+void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len)
+{
+	int n = Len;
+	UCHAR c;
+	int ESCFLAG = 0;
+	UCHAR * ptr1, *ptr2;
+	int Chan;
+	int Opcode;
+	string * TXMSG;
+	unsigned short CRC;
+	UCHAR CRCString[2];
+
+	ptr1 = ptr2 = Msg;
+
+	while (n--)
+	{
+		c = *(ptr1++);
+
+		if (ESCFLAG)
+		{
+			//
+			//	FESC received - next should be TFESC or TFEND
+
+			ESCFLAG = 0;
+
+			if (c == TFESC)
+				c = FESC;
+
+			if (c == TFEND)
+				c = FEND;
+
+		}
+		else
+		{
+			switch (c)
+			{
+			case FEND:
+
+				//
+				//	Either start of message or message complete
+				//
+
+				//	npKISSINFO->MSGREADY = TRUE;
+				return;
+
+			case FESC:
+
+				ESCFLAG = 1;
+				continue;
+
+			}
+		}
+			
+		//
+		//	Ok, a normal char
+		//
+
+		*(ptr2++) = c;
+		
+	}
+	Len = ptr2 - Msg;
+
+	Chan = (Msg[0] >> 4);
+	Opcode = Msg[0] & 0x0f;
+
+	if (Chan > 3)
+		return;
+
+	switch (Opcode)
+	{
+	case KISS_ACKMODE:
+
+		// How best to do ACKMODE?? I think pass whole frame including CMD and ack bytes to all_frame_buf
+
+		// But ack should only be sent to client that sent the message - needs more thought!
+
+		TXMSG = newString();
+		stringAdd(TXMSG, &Msg[0], Len);		// include  Control
+
+		CRC = get_fcs(&Msg[3], Len - 3);	// exclude control and ack bytes
+
+		CRCString[0] = CRC & 0xff;
+		CRCString[1] = CRC >> 8;
+
+		stringAdd(TXMSG, CRCString, 2);
+
+		// Ackmode needs to know where to send ack back to, so save socket on end of data
+
+		stringAdd(TXMSG, (unsigned char * )&socket, sizeof(socket));
+
+		// if KISS Optimise see if frame is really needed
+
+		if (!KISS_opt[Chan])
+			Add(&KISS.buffer[Chan], TXMSG);
+		else
+		{
+			if (add_raw_frames(Chan, TXMSG, &KISS.buffer[Chan]))
+				Add(&KISS.buffer[Chan], TXMSG);
+		}
+
+		
+		return;
+
+	case KISS_DATA:
+
+		TXMSG = newString();
+		stringAdd(TXMSG, &Msg[0], Len);		// include Control
+
+		CRC = get_fcs(&Msg[1], Len - 1);
+
+		CRCString[0] = CRC & 0xff;
+		CRCString[1] = CRC >> 8;
+
+		stringAdd(TXMSG, CRCString, 2);
+
+		// if KISS Optimise see if frame is really needed
+
+		if (!KISS_opt[Chan])
+			Add(&KISS.buffer[Chan], TXMSG);
+		else
+		{
+			if (add_raw_frames(Chan, TXMSG, &KISS.buffer[Chan]))
+				Add(&KISS.buffer[Chan], TXMSG);
+		}
+
+
+		return;
+	}
+
+	// Still need to process kiss control frames
+}
+
+
+
+
+void KISSDataReceived(void * socket, UCHAR * data, int length)
+{
+	int i;
+	UCHAR * ptr1, * ptr2;
+	int Length;
+
+	TKISSMode * KISS = NULL;
+
+	if (KISSConCount == 0)
+		return;
+
+	for (i = 0; i < KISSConCount; i++)
+	{
+		if (KissConnections[i]->Socket == socket)
+		{
+			KISS = KissConnections[i];
+			break;
+		}
+	}
+
+	if (KISS == NULL)
+		return;
+
+	stringAdd(KISS->data_in, data, length);
+
+	if (KISS->data_in->Length > 10000)				// Probably AGW Data on KISS Port
+	{
+		KISS->data_in->Length = 0;
+		return;
+	}
+
+	ptr1 = KISS->data_in->Data;
+	Length = KISS->data_in->Length;
+
+
+	while ((ptr2 = memchr(ptr1, FEND, Length)))
+	{
+		int Len = (ptr2 - ptr1);
+
+		if (Len == 0)
+		{
+			// Start of frame
+
+			mydelete(KISS->data_in, 0, 1);
+
+			ptr1 = KISS->data_in->Data;
+			Length = KISS->data_in->Length;
+
+			continue;
+		}
+
+		// Process Frame
+
+		if (Len < 350)								// Drop obviously corrupt frames
+			ProcessKISSFrame(socket, ptr1, Len);		
+
+		mydelete(KISS->data_in, 0, Len + 1);
+
+		ptr1 = KISS->data_in->Data;
+		Length = KISS->data_in->Length;
+
+	}
+
+	/*			if (length(KISS.data_in.Strings[idx]) > 65535)
+					if Form1.ServerSocket2.Socket.ActiveConnections > 0)
+
+				  for i:=0 to Form1.ServerSocket2.Socket.ActiveConnections-1 do
+					if Form1.ServerSocket2.Socket.Connections[i].SocketHandle=socket then
+					   try Form1.ServerSocket2.Socket.Connections[i].Close; except end;
+		*/
+
+
+}
+
+
+
+int KISS_encode(UCHAR * KISSBuffer, int port, string * frame, int TXMON)
+{
+
+	//	Encode frame
+
+	UCHAR * ptr1 = frame->Data;
+	UCHAR TXCCC = 0;
+	int Len = frame->Length - 2;		// frame includes CRC
+	UCHAR * ptr2 = &KISSBuffer[2];
+	UCHAR c;
+
+	if (TXMON)
+	{
+		// TX Frame has control byte on front
+
+		ptr1++;
+		Len--;
+	}
+
+	KISSBuffer[0] = FEND;
+	KISSBuffer[1] = port << 4;
+
+	TXCCC ^= KISSBuffer[1];
+
+	while (Len--)
+	{
+		c = *(ptr1++);
+		TXCCC ^= c;
+
+		switch (c)
+		{
+		case FEND:
+			(*ptr2++) = FESC;
+			(*ptr2++) = TFEND;
+			break;
+
+		case FESC:
+
+			(*ptr2++) = FESC;
+			(*ptr2++) = TFESC;
+			break;
+
+			// Drop through
+
+		default:
+
+			(*ptr2++) = c;
+		}
+	}
+
+	// If using checksum, send it
+/*
+
+	if (KISSFLAGS & CHECKSUM)
+	{
+		c = (UCHAR)KISS->TXCCC;
+
+		// On TNC-X based boards, it is difficult to cope with an encoded CRC, so if
+		// CRC is FEND, send it as 0xc1. This means we have to accept 00 or 01 as valid.
+		// which is a slight loss in robustness
+
+		if (c == FEND && (PORT->KISSFLAGS & TNCX))
+		{
+			(*ptr2++) = FEND + 1;
+		}
+		else
+		{
+			switch (c)
+			{
+			case FEND:
+				(*ptr2++) = FESC;
+				(*ptr2++) = TFEND;
+				break;
+
+			case FESC:
+				(*ptr2++) = FESC;
+				(*ptr2++) = TFESC;
+				break;
+
+			default:
+				(*ptr2++) = c;
+			}
+		}
+	}
+	*/
+
+	(*ptr2++) = FEND;
+
+	return (int)(ptr2 - KISSBuffer);
+}
+
+
+void sendAckModeAcks(int snd_ch)
+{
+	// format and send any outstanding acks
+
+	string * temp;
+	UCHAR * Msg;
+	void * socket;
+
+	while (KISS_acked[snd_ch].Count)
+	{
+		UCHAR * ACK = (UCHAR *)malloc(15);
+		UCHAR * ackptr = ACK;
+
+		temp = Strings(&KISS_acked[snd_ch], 0);	// get first
+		Msg = temp->Data;
+
+		*ackptr++ = FEND;
+		*ackptr++ = Msg[0];			// opcode and channel
+
+		*ackptr++ = Msg[1];
+		*ackptr++ = Msg[2];			// ACK Bytes
+		*ackptr++ = FEND;
+
+		// Socket to reply to is on end
+
+		Msg += (temp->Length - 4);
+
+		memcpy(&socket, Msg, sizeof(void *));
+
+		KISSSendtoServer(socket, ACK, 5);
+		Delete(&KISS_acked[snd_ch], 0);			// This will invalidate temp
+	}
+}
+
+
+
+
+
+
+
diff --git a/libfftw3f-3.def b/libfftw3f-3.def
new file mode 100644
index 0000000..d61a2c3
--- /dev/null
+++ b/libfftw3f-3.def
@@ -0,0 +1,1017 @@
+LIBRARY libfftw3f-3.dll
+EXPORTS
+fftwf_alignment_of
+fftwf_alloc_complex
+fftwf_alloc_real
+fftwf_assertion_failed
+fftwf_bufdist
+fftwf_check_alignment_of_sse2_pm
+fftwf_choose_radix
+fftwf_cleanup
+fftwf_cleanup_threads
+fftwf_codelet_e01_8
+fftwf_codelet_e10_8
+fftwf_codelet_hb_10
+fftwf_codelet_hb_12
+fftwf_codelet_hb_15
+fftwf_codelet_hb_16
+fftwf_codelet_hb_2
+fftwf_codelet_hb_20
+fftwf_codelet_hb2_16
+fftwf_codelet_hb2_20
+fftwf_codelet_hb2_25
+fftwf_codelet_hb2_32
+fftwf_codelet_hb2_4
+fftwf_codelet_hb_25
+fftwf_codelet_hb2_5
+fftwf_codelet_hb2_8
+fftwf_codelet_hb_3
+fftwf_codelet_hb_32
+fftwf_codelet_hb_4
+fftwf_codelet_hb_5
+fftwf_codelet_hb_6
+fftwf_codelet_hb_64
+fftwf_codelet_hb_7
+fftwf_codelet_hb_8
+fftwf_codelet_hb_9
+fftwf_codelet_hc2cb_10
+fftwf_codelet_hc2cb_12
+fftwf_codelet_hc2cb_16
+fftwf_codelet_hc2cb_2
+fftwf_codelet_hc2cb_20
+fftwf_codelet_hc2cb2_16
+fftwf_codelet_hc2cb2_20
+fftwf_codelet_hc2cb2_32
+fftwf_codelet_hc2cb2_4
+fftwf_codelet_hc2cb2_8
+fftwf_codelet_hc2cb_32
+fftwf_codelet_hc2cb_4
+fftwf_codelet_hc2cb_6
+fftwf_codelet_hc2cb_8
+fftwf_codelet_hc2cbdft_10
+fftwf_codelet_hc2cbdft_12
+fftwf_codelet_hc2cbdft_16
+fftwf_codelet_hc2cbdft_2
+fftwf_codelet_hc2cbdft_20
+fftwf_codelet_hc2cbdft2_16
+fftwf_codelet_hc2cbdft2_20
+fftwf_codelet_hc2cbdft2_32
+fftwf_codelet_hc2cbdft2_4
+fftwf_codelet_hc2cbdft2_8
+fftwf_codelet_hc2cbdft_32
+fftwf_codelet_hc2cbdft_4
+fftwf_codelet_hc2cbdft_6
+fftwf_codelet_hc2cbdft_8
+fftwf_codelet_hc2cbdftv_10_avx
+fftwf_codelet_hc2cbdftv_10_sse2
+fftwf_codelet_hc2cbdftv_12_avx
+fftwf_codelet_hc2cbdftv_12_sse2
+fftwf_codelet_hc2cbdftv_16_avx
+fftwf_codelet_hc2cbdftv_16_sse2
+fftwf_codelet_hc2cbdftv_20_avx
+fftwf_codelet_hc2cbdftv_20_sse2
+fftwf_codelet_hc2cbdftv_2_avx
+fftwf_codelet_hc2cbdftv_2_sse2
+fftwf_codelet_hc2cbdftv_32_avx
+fftwf_codelet_hc2cbdftv_32_sse2
+fftwf_codelet_hc2cbdftv_4_avx
+fftwf_codelet_hc2cbdftv_4_sse2
+fftwf_codelet_hc2cbdftv_6_avx
+fftwf_codelet_hc2cbdftv_6_sse2
+fftwf_codelet_hc2cbdftv_8_avx
+fftwf_codelet_hc2cbdftv_8_sse2
+fftwf_codelet_hc2cf_10
+fftwf_codelet_hc2cf_12
+fftwf_codelet_hc2cf_16
+fftwf_codelet_hc2cf_2
+fftwf_codelet_hc2cf_20
+fftwf_codelet_hc2cf2_16
+fftwf_codelet_hc2cf2_20
+fftwf_codelet_hc2cf2_32
+fftwf_codelet_hc2cf2_4
+fftwf_codelet_hc2cf2_8
+fftwf_codelet_hc2cf_32
+fftwf_codelet_hc2cf_4
+fftwf_codelet_hc2cf_6
+fftwf_codelet_hc2cf_8
+fftwf_codelet_hc2cfdft_10
+fftwf_codelet_hc2cfdft_12
+fftwf_codelet_hc2cfdft_16
+fftwf_codelet_hc2cfdft_2
+fftwf_codelet_hc2cfdft_20
+fftwf_codelet_hc2cfdft2_16
+fftwf_codelet_hc2cfdft2_20
+fftwf_codelet_hc2cfdft2_32
+fftwf_codelet_hc2cfdft2_4
+fftwf_codelet_hc2cfdft2_8
+fftwf_codelet_hc2cfdft_32
+fftwf_codelet_hc2cfdft_4
+fftwf_codelet_hc2cfdft_6
+fftwf_codelet_hc2cfdft_8
+fftwf_codelet_hc2cfdftv_10_avx
+fftwf_codelet_hc2cfdftv_10_sse2
+fftwf_codelet_hc2cfdftv_12_avx
+fftwf_codelet_hc2cfdftv_12_sse2
+fftwf_codelet_hc2cfdftv_16_avx
+fftwf_codelet_hc2cfdftv_16_sse2
+fftwf_codelet_hc2cfdftv_20_avx
+fftwf_codelet_hc2cfdftv_20_sse2
+fftwf_codelet_hc2cfdftv_2_avx
+fftwf_codelet_hc2cfdftv_2_sse2
+fftwf_codelet_hc2cfdftv_32_avx
+fftwf_codelet_hc2cfdftv_32_sse2
+fftwf_codelet_hc2cfdftv_4_avx
+fftwf_codelet_hc2cfdftv_4_sse2
+fftwf_codelet_hc2cfdftv_6_avx
+fftwf_codelet_hc2cfdftv_6_sse2
+fftwf_codelet_hc2cfdftv_8_avx
+fftwf_codelet_hc2cfdftv_8_sse2
+fftwf_codelet_hf_10
+fftwf_codelet_hf_12
+fftwf_codelet_hf_15
+fftwf_codelet_hf_16
+fftwf_codelet_hf_2
+fftwf_codelet_hf_20
+fftwf_codelet_hf2_16
+fftwf_codelet_hf2_20
+fftwf_codelet_hf2_25
+fftwf_codelet_hf2_32
+fftwf_codelet_hf2_4
+fftwf_codelet_hf_25
+fftwf_codelet_hf2_5
+fftwf_codelet_hf2_8
+fftwf_codelet_hf_3
+fftwf_codelet_hf_32
+fftwf_codelet_hf_4
+fftwf_codelet_hf_5
+fftwf_codelet_hf_6
+fftwf_codelet_hf_64
+fftwf_codelet_hf_7
+fftwf_codelet_hf_8
+fftwf_codelet_hf_9
+fftwf_codelet_n1_10
+fftwf_codelet_n1_11
+fftwf_codelet_n1_12
+fftwf_codelet_n1_13
+fftwf_codelet_n1_14
+fftwf_codelet_n1_15
+fftwf_codelet_n1_16
+fftwf_codelet_n1_2
+fftwf_codelet_n1_20
+fftwf_codelet_n1_25
+fftwf_codelet_n1_3
+fftwf_codelet_n1_32
+fftwf_codelet_n1_4
+fftwf_codelet_n1_5
+fftwf_codelet_n1_6
+fftwf_codelet_n1_64
+fftwf_codelet_n1_7
+fftwf_codelet_n1_8
+fftwf_codelet_n1_9
+fftwf_codelet_n1bv_10_avx
+fftwf_codelet_n1bv_10_sse2
+fftwf_codelet_n1bv_11_avx
+fftwf_codelet_n1bv_11_sse2
+fftwf_codelet_n1bv_128_avx
+fftwf_codelet_n1bv_128_sse2
+fftwf_codelet_n1bv_12_avx
+fftwf_codelet_n1bv_12_sse2
+fftwf_codelet_n1bv_13_avx
+fftwf_codelet_n1bv_13_sse2
+fftwf_codelet_n1bv_14_avx
+fftwf_codelet_n1bv_14_sse2
+fftwf_codelet_n1bv_15_avx
+fftwf_codelet_n1bv_15_sse2
+fftwf_codelet_n1bv_16_avx
+fftwf_codelet_n1bv_16_sse2
+fftwf_codelet_n1bv_20_avx
+fftwf_codelet_n1bv_20_sse2
+fftwf_codelet_n1bv_25_avx
+fftwf_codelet_n1bv_25_sse2
+fftwf_codelet_n1bv_2_avx
+fftwf_codelet_n1bv_2_sse2
+fftwf_codelet_n1bv_32_avx
+fftwf_codelet_n1bv_32_sse2
+fftwf_codelet_n1bv_3_avx
+fftwf_codelet_n1bv_3_sse2
+fftwf_codelet_n1bv_4_avx
+fftwf_codelet_n1bv_4_sse2
+fftwf_codelet_n1bv_5_avx
+fftwf_codelet_n1bv_5_sse2
+fftwf_codelet_n1bv_64_avx
+fftwf_codelet_n1bv_64_sse2
+fftwf_codelet_n1bv_6_avx
+fftwf_codelet_n1bv_6_sse2
+fftwf_codelet_n1bv_7_avx
+fftwf_codelet_n1bv_7_sse2
+fftwf_codelet_n1bv_8_avx
+fftwf_codelet_n1bv_8_sse2
+fftwf_codelet_n1bv_9_avx
+fftwf_codelet_n1bv_9_sse2
+fftwf_codelet_n1fv_10_avx
+fftwf_codelet_n1fv_10_sse2
+fftwf_codelet_n1fv_11_avx
+fftwf_codelet_n1fv_11_sse2
+fftwf_codelet_n1fv_128_avx
+fftwf_codelet_n1fv_128_sse2
+fftwf_codelet_n1fv_12_avx
+fftwf_codelet_n1fv_12_sse2
+fftwf_codelet_n1fv_13_avx
+fftwf_codelet_n1fv_13_sse2
+fftwf_codelet_n1fv_14_avx
+fftwf_codelet_n1fv_14_sse2
+fftwf_codelet_n1fv_15_avx
+fftwf_codelet_n1fv_15_sse2
+fftwf_codelet_n1fv_16_avx
+fftwf_codelet_n1fv_16_sse2
+fftwf_codelet_n1fv_20_avx
+fftwf_codelet_n1fv_20_sse2
+fftwf_codelet_n1fv_25_avx
+fftwf_codelet_n1fv_25_sse2
+fftwf_codelet_n1fv_2_avx
+fftwf_codelet_n1fv_2_sse2
+fftwf_codelet_n1fv_32_avx
+fftwf_codelet_n1fv_32_sse2
+fftwf_codelet_n1fv_3_avx
+fftwf_codelet_n1fv_3_sse2
+fftwf_codelet_n1fv_4_avx
+fftwf_codelet_n1fv_4_sse2
+fftwf_codelet_n1fv_5_avx
+fftwf_codelet_n1fv_5_sse2
+fftwf_codelet_n1fv_64_avx
+fftwf_codelet_n1fv_64_sse2
+fftwf_codelet_n1fv_6_avx
+fftwf_codelet_n1fv_6_sse2
+fftwf_codelet_n1fv_7_avx
+fftwf_codelet_n1fv_7_sse2
+fftwf_codelet_n1fv_8_avx
+fftwf_codelet_n1fv_8_sse2
+fftwf_codelet_n1fv_9_avx
+fftwf_codelet_n1fv_9_sse2
+fftwf_codelet_n2bv_10_avx
+fftwf_codelet_n2bv_10_sse2
+fftwf_codelet_n2bv_12_avx
+fftwf_codelet_n2bv_12_sse2
+fftwf_codelet_n2bv_14_avx
+fftwf_codelet_n2bv_14_sse2
+fftwf_codelet_n2bv_16_avx
+fftwf_codelet_n2bv_16_sse2
+fftwf_codelet_n2bv_20_avx
+fftwf_codelet_n2bv_20_sse2
+fftwf_codelet_n2bv_2_avx
+fftwf_codelet_n2bv_2_sse2
+fftwf_codelet_n2bv_32_avx
+fftwf_codelet_n2bv_32_sse2
+fftwf_codelet_n2bv_4_avx
+fftwf_codelet_n2bv_4_sse2
+fftwf_codelet_n2bv_64_avx
+fftwf_codelet_n2bv_64_sse2
+fftwf_codelet_n2bv_6_avx
+fftwf_codelet_n2bv_6_sse2
+fftwf_codelet_n2bv_8_avx
+fftwf_codelet_n2bv_8_sse2
+fftwf_codelet_n2fv_10_avx
+fftwf_codelet_n2fv_10_sse2
+fftwf_codelet_n2fv_12_avx
+fftwf_codelet_n2fv_12_sse2
+fftwf_codelet_n2fv_14_avx
+fftwf_codelet_n2fv_14_sse2
+fftwf_codelet_n2fv_16_avx
+fftwf_codelet_n2fv_16_sse2
+fftwf_codelet_n2fv_20_avx
+fftwf_codelet_n2fv_20_sse2
+fftwf_codelet_n2fv_2_avx
+fftwf_codelet_n2fv_2_sse2
+fftwf_codelet_n2fv_32_avx
+fftwf_codelet_n2fv_32_sse2
+fftwf_codelet_n2fv_4_avx
+fftwf_codelet_n2fv_4_sse2
+fftwf_codelet_n2fv_64_avx
+fftwf_codelet_n2fv_64_sse2
+fftwf_codelet_n2fv_6_avx
+fftwf_codelet_n2fv_6_sse2
+fftwf_codelet_n2fv_8_avx
+fftwf_codelet_n2fv_8_sse2
+fftwf_codelet_n2sv_16_avx
+fftwf_codelet_n2sv_16_sse2
+fftwf_codelet_n2sv_32_avx
+fftwf_codelet_n2sv_32_sse2
+fftwf_codelet_n2sv_4_avx
+fftwf_codelet_n2sv_4_sse2
+fftwf_codelet_n2sv_64_avx
+fftwf_codelet_n2sv_64_sse2
+fftwf_codelet_n2sv_8_avx
+fftwf_codelet_n2sv_8_sse2
+fftwf_codelet_q1_2
+fftwf_codelet_q1_3
+fftwf_codelet_q1_4
+fftwf_codelet_q1_5
+fftwf_codelet_q1_6
+fftwf_codelet_q1_8
+fftwf_codelet_q1bv_2_avx
+fftwf_codelet_q1bv_2_sse2
+fftwf_codelet_q1bv_4_avx
+fftwf_codelet_q1bv_4_sse2
+fftwf_codelet_q1bv_5_avx
+fftwf_codelet_q1bv_5_sse2
+fftwf_codelet_q1bv_8_avx
+fftwf_codelet_q1bv_8_sse2
+fftwf_codelet_q1fv_2_avx
+fftwf_codelet_q1fv_2_sse2
+fftwf_codelet_q1fv_4_avx
+fftwf_codelet_q1fv_4_sse2
+fftwf_codelet_q1fv_5_avx
+fftwf_codelet_q1fv_5_sse2
+fftwf_codelet_q1fv_8_avx
+fftwf_codelet_q1fv_8_sse2
+fftwf_codelet_r2cb_10
+fftwf_codelet_r2cb_11
+fftwf_codelet_r2cb_12
+fftwf_codelet_r2cb_128
+fftwf_codelet_r2cb_13
+fftwf_codelet_r2cb_14
+fftwf_codelet_r2cb_15
+fftwf_codelet_r2cb_16
+fftwf_codelet_r2cb_2
+fftwf_codelet_r2cb_20
+fftwf_codelet_r2cb_25
+fftwf_codelet_r2cb_3
+fftwf_codelet_r2cb_32
+fftwf_codelet_r2cb_4
+fftwf_codelet_r2cb_5
+fftwf_codelet_r2cb_6
+fftwf_codelet_r2cb_64
+fftwf_codelet_r2cb_7
+fftwf_codelet_r2cb_8
+fftwf_codelet_r2cb_9
+fftwf_codelet_r2cbIII_10
+fftwf_codelet_r2cbIII_12
+fftwf_codelet_r2cbIII_15
+fftwf_codelet_r2cbIII_16
+fftwf_codelet_r2cbIII_2
+fftwf_codelet_r2cbIII_20
+fftwf_codelet_r2cbIII_25
+fftwf_codelet_r2cbIII_3
+fftwf_codelet_r2cbIII_32
+fftwf_codelet_r2cbIII_4
+fftwf_codelet_r2cbIII_5
+fftwf_codelet_r2cbIII_6
+fftwf_codelet_r2cbIII_64
+fftwf_codelet_r2cbIII_7
+fftwf_codelet_r2cbIII_8
+fftwf_codelet_r2cbIII_9
+fftwf_codelet_r2cf_10
+fftwf_codelet_r2cf_11
+fftwf_codelet_r2cf_12
+fftwf_codelet_r2cf_128
+fftwf_codelet_r2cf_13
+fftwf_codelet_r2cf_14
+fftwf_codelet_r2cf_15
+fftwf_codelet_r2cf_16
+fftwf_codelet_r2cf_2
+fftwf_codelet_r2cf_20
+fftwf_codelet_r2cf_25
+fftwf_codelet_r2cf_3
+fftwf_codelet_r2cf_32
+fftwf_codelet_r2cf_4
+fftwf_codelet_r2cf_5
+fftwf_codelet_r2cf_6
+fftwf_codelet_r2cf_64
+fftwf_codelet_r2cf_7
+fftwf_codelet_r2cf_8
+fftwf_codelet_r2cf_9
+fftwf_codelet_r2cfII_10
+fftwf_codelet_r2cfII_12
+fftwf_codelet_r2cfII_15
+fftwf_codelet_r2cfII_16
+fftwf_codelet_r2cfII_2
+fftwf_codelet_r2cfII_20
+fftwf_codelet_r2cfII_25
+fftwf_codelet_r2cfII_3
+fftwf_codelet_r2cfII_32
+fftwf_codelet_r2cfII_4
+fftwf_codelet_r2cfII_5
+fftwf_codelet_r2cfII_6
+fftwf_codelet_r2cfII_64
+fftwf_codelet_r2cfII_7
+fftwf_codelet_r2cfII_8
+fftwf_codelet_r2cfII_9
+fftwf_codelet_t1_10
+fftwf_codelet_t1_12
+fftwf_codelet_t1_15
+fftwf_codelet_t1_16
+fftwf_codelet_t1_2
+fftwf_codelet_t1_20
+fftwf_codelet_t1_25
+fftwf_codelet_t1_3
+fftwf_codelet_t1_32
+fftwf_codelet_t1_4
+fftwf_codelet_t1_5
+fftwf_codelet_t1_6
+fftwf_codelet_t1_64
+fftwf_codelet_t1_7
+fftwf_codelet_t1_8
+fftwf_codelet_t1_9
+fftwf_codelet_t1buv_10_avx
+fftwf_codelet_t1buv_10_sse2
+fftwf_codelet_t1buv_2_avx
+fftwf_codelet_t1buv_2_sse2
+fftwf_codelet_t1buv_3_avx
+fftwf_codelet_t1buv_3_sse2
+fftwf_codelet_t1buv_4_avx
+fftwf_codelet_t1buv_4_sse2
+fftwf_codelet_t1buv_5_avx
+fftwf_codelet_t1buv_5_sse2
+fftwf_codelet_t1buv_6_avx
+fftwf_codelet_t1buv_6_sse2
+fftwf_codelet_t1buv_7_avx
+fftwf_codelet_t1buv_7_sse2
+fftwf_codelet_t1buv_8_avx
+fftwf_codelet_t1buv_8_sse2
+fftwf_codelet_t1buv_9_avx
+fftwf_codelet_t1buv_9_sse2
+fftwf_codelet_t1bv_10_avx
+fftwf_codelet_t1bv_10_sse2
+fftwf_codelet_t1bv_12_avx
+fftwf_codelet_t1bv_12_sse2
+fftwf_codelet_t1bv_15_avx
+fftwf_codelet_t1bv_15_sse2
+fftwf_codelet_t1bv_16_avx
+fftwf_codelet_t1bv_16_sse2
+fftwf_codelet_t1bv_20_avx
+fftwf_codelet_t1bv_20_sse2
+fftwf_codelet_t1bv_25_avx
+fftwf_codelet_t1bv_25_sse2
+fftwf_codelet_t1bv_2_avx
+fftwf_codelet_t1bv_2_sse2
+fftwf_codelet_t1bv_32_avx
+fftwf_codelet_t1bv_32_sse2
+fftwf_codelet_t1bv_3_avx
+fftwf_codelet_t1bv_3_sse2
+fftwf_codelet_t1bv_4_avx
+fftwf_codelet_t1bv_4_sse2
+fftwf_codelet_t1bv_5_avx
+fftwf_codelet_t1bv_5_sse2
+fftwf_codelet_t1bv_64_avx
+fftwf_codelet_t1bv_64_sse2
+fftwf_codelet_t1bv_6_avx
+fftwf_codelet_t1bv_6_sse2
+fftwf_codelet_t1bv_7_avx
+fftwf_codelet_t1bv_7_sse2
+fftwf_codelet_t1bv_8_avx
+fftwf_codelet_t1bv_8_sse2
+fftwf_codelet_t1bv_9_avx
+fftwf_codelet_t1bv_9_sse2
+fftwf_codelet_t1fuv_10_avx
+fftwf_codelet_t1fuv_10_sse2
+fftwf_codelet_t1fuv_2_avx
+fftwf_codelet_t1fuv_2_sse2
+fftwf_codelet_t1fuv_3_avx
+fftwf_codelet_t1fuv_3_sse2
+fftwf_codelet_t1fuv_4_avx
+fftwf_codelet_t1fuv_4_sse2
+fftwf_codelet_t1fuv_5_avx
+fftwf_codelet_t1fuv_5_sse2
+fftwf_codelet_t1fuv_6_avx
+fftwf_codelet_t1fuv_6_sse2
+fftwf_codelet_t1fuv_7_avx
+fftwf_codelet_t1fuv_7_sse2
+fftwf_codelet_t1fuv_8_avx
+fftwf_codelet_t1fuv_8_sse2
+fftwf_codelet_t1fuv_9_avx
+fftwf_codelet_t1fuv_9_sse2
+fftwf_codelet_t1fv_10_avx
+fftwf_codelet_t1fv_10_sse2
+fftwf_codelet_t1fv_12_avx
+fftwf_codelet_t1fv_12_sse2
+fftwf_codelet_t1fv_15_avx
+fftwf_codelet_t1fv_15_sse2
+fftwf_codelet_t1fv_16_avx
+fftwf_codelet_t1fv_16_sse2
+fftwf_codelet_t1fv_20_avx
+fftwf_codelet_t1fv_20_sse2
+fftwf_codelet_t1fv_25_avx
+fftwf_codelet_t1fv_25_sse2
+fftwf_codelet_t1fv_2_avx
+fftwf_codelet_t1fv_2_sse2
+fftwf_codelet_t1fv_32_avx
+fftwf_codelet_t1fv_32_sse2
+fftwf_codelet_t1fv_3_avx
+fftwf_codelet_t1fv_3_sse2
+fftwf_codelet_t1fv_4_avx
+fftwf_codelet_t1fv_4_sse2
+fftwf_codelet_t1fv_5_avx
+fftwf_codelet_t1fv_5_sse2
+fftwf_codelet_t1fv_64_avx
+fftwf_codelet_t1fv_64_sse2
+fftwf_codelet_t1fv_6_avx
+fftwf_codelet_t1fv_6_sse2
+fftwf_codelet_t1fv_7_avx
+fftwf_codelet_t1fv_7_sse2
+fftwf_codelet_t1fv_8_avx
+fftwf_codelet_t1fv_8_sse2
+fftwf_codelet_t1fv_9_avx
+fftwf_codelet_t1fv_9_sse2
+fftwf_codelet_t1sv_16_avx
+fftwf_codelet_t1sv_16_sse2
+fftwf_codelet_t1sv_2_avx
+fftwf_codelet_t1sv_2_sse2
+fftwf_codelet_t1sv_32_avx
+fftwf_codelet_t1sv_32_sse2
+fftwf_codelet_t1sv_4_avx
+fftwf_codelet_t1sv_4_sse2
+fftwf_codelet_t1sv_8_avx
+fftwf_codelet_t1sv_8_sse2
+fftwf_codelet_t2_10
+fftwf_codelet_t2_16
+fftwf_codelet_t2_20
+fftwf_codelet_t2_25
+fftwf_codelet_t2_32
+fftwf_codelet_t2_4
+fftwf_codelet_t2_5
+fftwf_codelet_t2_64
+fftwf_codelet_t2_8
+fftwf_codelet_t2bv_10_avx
+fftwf_codelet_t2bv_10_sse2
+fftwf_codelet_t2bv_16_avx
+fftwf_codelet_t2bv_16_sse2
+fftwf_codelet_t2bv_20_avx
+fftwf_codelet_t2bv_20_sse2
+fftwf_codelet_t2bv_25_avx
+fftwf_codelet_t2bv_25_sse2
+fftwf_codelet_t2bv_2_avx
+fftwf_codelet_t2bv_2_sse2
+fftwf_codelet_t2bv_32_avx
+fftwf_codelet_t2bv_32_sse2
+fftwf_codelet_t2bv_4_avx
+fftwf_codelet_t2bv_4_sse2
+fftwf_codelet_t2bv_5_avx
+fftwf_codelet_t2bv_5_sse2
+fftwf_codelet_t2bv_64_avx
+fftwf_codelet_t2bv_64_sse2
+fftwf_codelet_t2bv_8_avx
+fftwf_codelet_t2bv_8_sse2
+fftwf_codelet_t2fv_10_avx
+fftwf_codelet_t2fv_10_sse2
+fftwf_codelet_t2fv_16_avx
+fftwf_codelet_t2fv_16_sse2
+fftwf_codelet_t2fv_20_avx
+fftwf_codelet_t2fv_20_sse2
+fftwf_codelet_t2fv_25_avx
+fftwf_codelet_t2fv_25_sse2
+fftwf_codelet_t2fv_2_avx
+fftwf_codelet_t2fv_2_sse2
+fftwf_codelet_t2fv_32_avx
+fftwf_codelet_t2fv_32_sse2
+fftwf_codelet_t2fv_4_avx
+fftwf_codelet_t2fv_4_sse2
+fftwf_codelet_t2fv_5_avx
+fftwf_codelet_t2fv_5_sse2
+fftwf_codelet_t2fv_64_avx
+fftwf_codelet_t2fv_64_sse2
+fftwf_codelet_t2fv_8_avx
+fftwf_codelet_t2fv_8_sse2
+fftwf_codelet_t2sv_16_avx
+fftwf_codelet_t2sv_16_sse2
+fftwf_codelet_t2sv_32_avx
+fftwf_codelet_t2sv_32_sse2
+fftwf_codelet_t2sv_4_avx
+fftwf_codelet_t2sv_4_sse2
+fftwf_codelet_t2sv_8_avx
+fftwf_codelet_t2sv_8_sse2
+fftwf_codelet_t3bv_10_avx
+fftwf_codelet_t3bv_10_sse2
+fftwf_codelet_t3bv_16_avx
+fftwf_codelet_t3bv_16_sse2
+fftwf_codelet_t3bv_20_avx
+fftwf_codelet_t3bv_20_sse2
+fftwf_codelet_t3bv_25_avx
+fftwf_codelet_t3bv_25_sse2
+fftwf_codelet_t3bv_32_avx
+fftwf_codelet_t3bv_32_sse2
+fftwf_codelet_t3bv_4_avx
+fftwf_codelet_t3bv_4_sse2
+fftwf_codelet_t3bv_5_avx
+fftwf_codelet_t3bv_5_sse2
+fftwf_codelet_t3bv_8_avx
+fftwf_codelet_t3bv_8_sse2
+fftwf_codelet_t3fv_10_avx
+fftwf_codelet_t3fv_10_sse2
+fftwf_codelet_t3fv_16_avx
+fftwf_codelet_t3fv_16_sse2
+fftwf_codelet_t3fv_20_avx
+fftwf_codelet_t3fv_20_sse2
+fftwf_codelet_t3fv_25_avx
+fftwf_codelet_t3fv_25_sse2
+fftwf_codelet_t3fv_32_avx
+fftwf_codelet_t3fv_32_sse2
+fftwf_codelet_t3fv_4_avx
+fftwf_codelet_t3fv_4_sse2
+fftwf_codelet_t3fv_5_avx
+fftwf_codelet_t3fv_5_sse2
+fftwf_codelet_t3fv_8_avx
+fftwf_codelet_t3fv_8_sse2
+fftwf_compute_tilesz
+fftwf_configure_planner
+fftwf_cost
+fftwf_cpy1d
+fftwf_cpy2d
+fftwf_cpy2d_ci
+fftwf_cpy2d_co
+fftwf_cpy2d_pair
+fftwf_cpy2d_pair_ci
+fftwf_cpy2d_pair_co
+fftwf_cpy2d_tiled
+fftwf_cpy2d_tiledbuf
+fftwf_ct_applicable
+fftwf_ct_genericbuf_register
+fftwf_ct_generic_register
+fftwf_ct_uglyp
+fftwf_destroy_plan
+fftwf_dft_bluestein_register
+fftwf_dft_buffered_register
+fftwf_dft_conf_standard
+fftwf_dft_generic_register
+fftwf_dft_indirect_register
+fftwf_dft_indirect_transpose_register
+fftwf_dft_nop_register
+fftwf_dft_r2hc_register
+fftwf_dft_rader_register
+fftwf_dft_rank_geq2_register
+fftwf_dft_solve
+fftwf_dft_thr_vrank_geq1_register
+fftwf_dft_vrank_geq1_register
+fftwf_dft_zerotens
+fftwf_dht_r2hc_register
+fftwf_dht_rader_register
+fftwf_dimcmp
+fftwf_elapsed_since
+fftwf_estimate_cost
+fftwf_execute
+fftwf_execute_dft
+fftwf_execute_dft_c2r
+fftwf_execute_dft_r2c
+fftwf_execute_r2r
+fftwf_execute_split_dft
+fftwf_execute_split_dft_c2r
+fftwf_execute_split_dft_r2c
+fftwf_export_wisdom
+fftwf_export_wisdom_to_file
+fftwf_export_wisdom_to_filename
+fftwf_export_wisdom_to_string
+fftwf_extract_reim
+fftwf_factors_into
+fftwf_factors_into_small_primes
+fftwf_find_generator
+fftwf_first_divisor
+fftwf_flops
+fftwf_forget_wisdom
+fftwf_fprint_plan
+fftwf_free
+fftwf_get_crude_time
+fftwf_guru64_kosherp
+fftwf_guru_kosherp
+fftwf_hash
+fftwf_have_simd_avx
+fftwf_have_simd_sse2
+fftwf_hc2hc_applicable
+fftwf_hc2hc_generic_register
+fftwf_iabs
+fftwf_ialignment_of
+fftwf_iestimate_cost
+fftwf_ifree
+fftwf_ifree0
+fftwf_imax
+fftwf_imin
+fftwf_import_system_wisdom
+fftwf_import_wisdom
+fftwf_import_wisdom_from_file
+fftwf_import_wisdom_from_filename
+fftwf_import_wisdom_from_string
+fftwf_init_threads
+fftwf_is_prime
+fftwf_isqrt
+fftwf_ithreads_init
+fftwf_join_taint
+fftwf_kdft_dif_register
+fftwf_kdft_difsq_register
+fftwf_kdft_dit_register
+fftwf_kdft_register
+fftwf_kernel_free
+fftwf_kernel_malloc
+fftwf_khc2c_register
+fftwf_khc2hc_register
+fftwf_kr2c_register
+fftwf_kr2r_register
+fftwf_make_planner_thread_safe
+fftwf_malloc
+fftwf_malloc_plain
+fftwf_many_kosherp
+fftwf_mapflags
+fftwf_map_r2r_kind
+fftwf_md5begin
+fftwf_md5end
+fftwf_md5int
+fftwf_md5INT
+fftwf_md5putb
+fftwf_md5putc
+fftwf_md5puts
+fftwf_md5unsigned
+fftwf_measure_execution_time
+fftwf_mkapiplan
+fftwf_mkplan
+fftwf_mkplan_d
+fftwf_mkplan_dft
+fftwf_mkplan_dftw
+fftwf_mkplan_f_d
+fftwf_mkplan_hc2c
+fftwf_mkplan_hc2hc
+fftwf_mkplanner
+fftwf_mkplan_rdft
+fftwf_mkplan_rdft2
+fftwf_mkprinter
+fftwf_mkprinter_cnt
+fftwf_mkprinter_file
+fftwf_mkprinter_str
+fftwf_mkproblem
+fftwf_mkproblem_dft
+fftwf_mkproblem_dft_d
+fftwf_mkproblem_rdft
+fftwf_mkproblem_rdft_0_d
+fftwf_mkproblem_rdft_1
+fftwf_mkproblem_rdft_1_d
+fftwf_mkproblem_rdft2
+fftwf_mkproblem_rdft2_d
+fftwf_mkproblem_rdft2_d_3pointers
+fftwf_mkproblem_rdft_d
+fftwf_mkproblem_unsolvable
+fftwf_mkscanner
+fftwf_mksolver
+fftwf_mksolver_ct
+fftwf_mksolver_ct_threads
+fftwf_mksolver_dft_direct
+fftwf_mksolver_dft_directbuf
+fftwf_mksolver_hc2c
+fftwf_mksolver_hc2hc
+fftwf_mksolver_hc2hc_threads
+fftwf_mksolver_rdft2_direct
+fftwf_mksolver_rdft_r2c_direct
+fftwf_mksolver_rdft_r2c_directbuf
+fftwf_mksolver_rdft_r2r_direct
+fftwf_mkstride
+fftwf_mktensor
+fftwf_mktensor_0d
+fftwf_mktensor_1d
+fftwf_mktensor_2d
+fftwf_mktensor_3d
+fftwf_mktensor_4d
+fftwf_mktensor_5d
+fftwf_mktensor_iodims
+fftwf_mktensor_iodims64
+fftwf_mktensor_rowmajor
+fftwf_mktriggen
+fftwf_modulo
+fftwf_nbuf
+fftwf_nbuf_redundant
+fftwf_next_prime
+fftwf_null_awake
+fftwf_ops_add
+fftwf_ops_add2
+fftwf_ops_cpy
+fftwf_ops_madd
+fftwf_ops_madd2
+fftwf_ops_other
+fftwf_ops_zero
+fftwf_pickdim
+fftwf_plan_awake
+fftwf_plan_destroy_internal
+fftwf_plan_dft
+fftwf_plan_dft_1d
+fftwf_plan_dft_2d
+fftwf_plan_dft_3d
+fftwf_plan_dft_c2r
+fftwf_plan_dft_c2r_1d
+fftwf_plan_dft_c2r_2d
+fftwf_plan_dft_c2r_3d
+fftwf_plan_dft_r2c
+fftwf_plan_dft_r2c_1d
+fftwf_plan_dft_r2c_2d
+fftwf_plan_dft_r2c_3d
+fftwf_plan_guru64_dft
+fftwf_plan_guru64_dft_c2r
+fftwf_plan_guru64_dft_r2c
+fftwf_plan_guru64_r2r
+fftwf_plan_guru64_split_dft
+fftwf_plan_guru64_split_dft_c2r
+fftwf_plan_guru64_split_dft_r2c
+fftwf_plan_guru_dft
+fftwf_plan_guru_dft_c2r
+fftwf_plan_guru_dft_r2c
+fftwf_plan_guru_r2r
+fftwf_plan_guru_split_dft
+fftwf_plan_guru_split_dft_c2r
+fftwf_plan_guru_split_dft_r2c
+fftwf_plan_many_dft
+fftwf_plan_many_dft_c2r
+fftwf_plan_many_dft_r2c
+fftwf_plan_many_r2r
+fftwf_planner_destroy
+fftwf_plan_null_destroy
+fftwf_plan_r2r
+fftwf_plan_r2r_1d
+fftwf_plan_r2r_2d
+fftwf_plan_r2r_3d
+fftwf_plan_with_nthreads
+fftwf_power_mod
+fftwf_printer_destroy
+fftwf_print_plan
+fftwf_problem_destroy
+fftwf_rader_tl_delete
+fftwf_rader_tl_find
+fftwf_rader_tl_insert
+fftwf_rdft2_buffered_register
+fftwf_rdft2_complex_n
+fftwf_rdft2_inplace_strides
+fftwf_rdft2_nop_register
+fftwf_rdft2_pad
+fftwf_rdft2_rank0_register
+fftwf_rdft2_rank_geq2_register
+fftwf_rdft2_rdft_register
+fftwf_rdft2_solve
+fftwf_rdft2_strides
+fftwf_rdft2_tensor_max_index
+fftwf_rdft2_thr_vrank_geq1_register
+fftwf_rdft2_vrank_geq1_register
+fftwf_rdft_buffered_register
+fftwf_rdft_conf_standard
+fftwf_rdft_dht_register
+fftwf_rdft_generic_register
+fftwf_rdft_indirect_register
+fftwf_rdft_kind_str
+fftwf_rdft_nop_register
+fftwf_rdft_rank0_register
+fftwf_rdft_rank_geq2_register
+fftwf_rdft_solve
+fftwf_rdft_thr_vrank_geq1_register
+fftwf_rdft_vrank3_transpose_register
+fftwf_rdft_vrank_geq1_register
+fftwf_rdft_zerotens
+fftwf_redft00e_r2hc_pad_register
+fftwf_regsolver_ct_directw
+fftwf_regsolver_ct_directwsq
+fftwf_regsolver_hc2c_direct
+fftwf_regsolver_hc2hc_direct
+fftwf_reodft00e_splitradix_register
+fftwf_reodft010e_r2hc_register
+fftwf_reodft11e_r2hc_odd_register
+fftwf_reodft11e_radix2_r2hc_register
+fftwf_reodft_conf_standard
+fftwf_rodft00e_r2hc_pad_register
+fftwf_safe_mulmod
+fftwf_scanner_destroy
+fftwf_set_planner_hooks
+fftwf_set_timelimit
+fftwf_solver_destroy
+fftwf_solver_register
+fftwf_solver_use
+fftwf_solvtab_exec
+fftwf_spawn_loop
+fftwf_sprint_plan
+fftwf_stride_destroy
+fftwf_taint
+fftwf_tensor_append
+fftwf_tensor_compress
+fftwf_tensor_compress_contiguous
+fftwf_tensor_copy
+fftwf_tensor_copy_except
+fftwf_tensor_copy_inplace
+fftwf_tensor_copy_sub
+fftwf_tensor_destroy
+fftwf_tensor_destroy2
+fftwf_tensor_destroy4
+fftwf_tensor_equal
+fftwf_tensor_inplace_locations
+fftwf_tensor_inplace_strides
+fftwf_tensor_inplace_strides2
+fftwf_tensor_kosherp
+fftwf_tensor_max_index
+fftwf_tensor_md5
+fftwf_tensor_min_istride
+fftwf_tensor_min_ostride
+fftwf_tensor_min_stride
+fftwf_tensor_print
+fftwf_tensor_split
+fftwf_tensor_strides_decrease
+fftwf_tensor_sz
+fftwf_tensor_tornk1
+fftwf_the_planner
+fftwf_threads_cleanup
+fftwf_threads_conf_standard
+fftwf_threads_register_planner_hooks
+fftwf_tile2d
+fftwf_toobig
+fftwf_transpose
+fftwf_transpose_tiled
+fftwf_transpose_tiledbuf
+fftwf_triggen_destroy
+fftwf_twiddle_awake
+fftwf_twiddle_length
+fftwf_zero1d_pair
+sfftw_cleanup_
+sfftw_cleanup__
+sfftw_cleanup_threads_
+sfftw_cleanup_threads__
+sfftw_cost_
+sfftw_cost__
+sfftw_destroy_plan_
+sfftw_destroy_plan__
+sfftw_estimate_cost_
+sfftw_estimate_cost__
+sfftw_execute_
+sfftw_execute__
+sfftw_execute_dft_
+sfftw_execute_dft__
+sfftw_execute_dft_c2r_
+sfftw_execute_dft_c2r__
+sfftw_execute_dft_r2c_
+sfftw_execute_dft_r2c__
+sfftw_execute_r2r_
+sfftw_execute_r2r__
+sfftw_execute_split_dft_
+sfftw_execute_split_dft__
+sfftw_execute_split_dft_c2r_
+sfftw_execute_split_dft_c2r__
+sfftw_execute_split_dft_r2c_
+sfftw_execute_split_dft_r2c__
+sfftw_export_wisdom_
+sfftw_export_wisdom__
+sfftw_flops_
+sfftw_flops__
+sfftw_forget_wisdom_
+sfftw_forget_wisdom__
+sfftw_import_system_wisdom_
+sfftw_import_system_wisdom__
+sfftw_import_wisdom_
+sfftw_import_wisdom__
+sfftw_init_threads_
+sfftw_init_threads__
+sfftw_plan_dft_
+sfftw_plan_dft__
+sfftw_plan_dft_1d_
+sfftw_plan_dft_1d__
+sfftw_plan_dft_2d_
+sfftw_plan_dft_2d__
+sfftw_plan_dft_3d_
+sfftw_plan_dft_3d__
+sfftw_plan_dft_c2r_
+sfftw_plan_dft_c2r__
+sfftw_plan_dft_c2r_1d_
+sfftw_plan_dft_c2r_1d__
+sfftw_plan_dft_c2r_2d_
+sfftw_plan_dft_c2r_2d__
+sfftw_plan_dft_c2r_3d_
+sfftw_plan_dft_c2r_3d__
+sfftw_plan_dft_r2c_
+sfftw_plan_dft_r2c__
+sfftw_plan_dft_r2c_1d_
+sfftw_plan_dft_r2c_1d__
+sfftw_plan_dft_r2c_2d_
+sfftw_plan_dft_r2c_2d__
+sfftw_plan_dft_r2c_3d_
+sfftw_plan_dft_r2c_3d__
+sfftw_plan_guru_dft_
+sfftw_plan_guru_dft__
+sfftw_plan_guru_dft_c2r_
+sfftw_plan_guru_dft_c2r__
+sfftw_plan_guru_dft_r2c_
+sfftw_plan_guru_dft_r2c__
+sfftw_plan_guru_r2r_
+sfftw_plan_guru_r2r__
+sfftw_plan_guru_split_dft_
+sfftw_plan_guru_split_dft__
+sfftw_plan_guru_split_dft_c2r_
+sfftw_plan_guru_split_dft_c2r__
+sfftw_plan_guru_split_dft_r2c_
+sfftw_plan_guru_split_dft_r2c__
+sfftw_plan_many_dft_
+sfftw_plan_many_dft__
+sfftw_plan_many_dft_c2r_
+sfftw_plan_many_dft_c2r__
+sfftw_plan_many_dft_r2c_
+sfftw_plan_many_dft_r2c__
+sfftw_plan_many_r2r_
+sfftw_plan_many_r2r__
+sfftw_plan_r2r_
+sfftw_plan_r2r__
+sfftw_plan_r2r_1d_
+sfftw_plan_r2r_1d__
+sfftw_plan_r2r_2d_
+sfftw_plan_r2r_2d__
+sfftw_plan_r2r_3d_
+sfftw_plan_r2r_3d__
+sfftw_plan_with_nthreads_
+sfftw_plan_with_nthreads__
+sfftw_print_plan_
+sfftw_print_plan__
+sfftw_set_timelimit_
+sfftw_set_timelimit__
diff --git a/libfftw3f-3.dll b/libfftw3f-3.dll
new file mode 100644
index 0000000000000000000000000000000000000000..b0a053a8289504cb3aa33ff7ca377628226e16ce
GIT binary patch
literal 2391615
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%0AW&U#%#GL~_?Te%RalAK<_Qlcu
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
MOe%IFr<@=BKeHjHUH||9

literal 0
HcmV?d00001

diff --git a/libfftw3f-3.exp b/libfftw3f-3.exp
new file mode 100644
index 0000000000000000000000000000000000000000..7d91877c80889bfa7b5422d11e572c583a550fa5
GIT binary patch
literal 149709
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
Zw6j`EIb(&|vFr)9i!!tBYdl(${|CIWbE*IU

literal 0
HcmV?d00001

diff --git a/libfftw3f-3.lib b/libfftw3f-3.lib
new file mode 100644
index 0000000000000000000000000000000000000000..e60053265e58e087a0504008b49f5c0cf8ea3e5a
GIT binary patch
literal 252722
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
S2Pzmr#(P5khNu#|^8Wzt7r^TP

literal 0
HcmV?d00001

diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..3f51e4b
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,88 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+
+
+#include "QtSoundModem.h"
+#include <QtWidgets/QApplication>
+#include "UZ7HOStuff.h"
+
+extern "C" int nonGUIMode;
+
+extern void getSettings();
+extern void saveSettings();
+extern int Closing;
+
+workerThread *t;
+mynet m1;
+
+QCoreApplication * a;		
+
+QtSoundModem * w;
+
+int main(int argc, char *argv[])
+{
+	char Title[128];
+
+	if (argc > 1 && strcmp(argv[1], "nogui") == 0)
+		nonGUIMode = 1;
+
+	if (nonGUIMode)
+		sprintf(Title, "QtSoundModem Version %s Running in non-GUI Mode", VersionString);
+	else
+		sprintf(Title, "QtSoundModem Version %s Running in GUI Mode", VersionString);
+
+	qDebug() << Title;
+
+	if (nonGUIMode)
+		a = new QCoreApplication(argc, argv);
+	else
+		a = new QApplication(argc, argv);			// GUI version
+
+	getSettings();
+
+	t = new workerThread;
+
+	if (nonGUIMode == 0)
+	{
+		w = new QtSoundModem();
+
+		char Title[128];
+		sprintf(Title, "QtSoundModem Version %s Ports %d/%d", VersionString, AGWPort, KISSPort);
+		w->setWindowTitle(Title);
+
+		w->show();
+	}
+
+	QObject::connect(&m1, SIGNAL(HLSetPTT(int)), &m1, SLOT(doHLSetPTT(int)), Qt::QueuedConnection);
+	QObject::connect(&m1, SIGNAL(startTimer(int)), &m1, SLOT(dostartTimer(int)), Qt::QueuedConnection);
+	QObject::connect(&m1, SIGNAL(stopTimer()), &m1, SLOT(dostopTimer()), Qt::QueuedConnection);
+
+	t->start();				// This runs init
+
+	m1.start();				// Start TCP 
+
+	return a->exec();
+
+}
+
+
diff --git a/makeit b/makeit
new file mode 100644
index 0000000..7563469
--- /dev/null
+++ b/makeit
@@ -0,0 +1,11 @@
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.cpp ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.c ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.h ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.ui ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.cxx ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.pro ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.qrc ./
+cp --preserve  /mnt/Source/QT/QtSoundModem/*.ico ./
+qmake
+make -j4
+cp QtSoundModem /mnt/Source
diff --git a/ofdm.c b/ofdm.c
new file mode 100644
index 0000000..dcc2994
--- /dev/null
+++ b/ofdm.c
@@ -0,0 +1,1555 @@
+//
+//	OFDM Module for ARDOP
+//
+/*
+
+Thoughts on OFDM
+
+We have lots (?43) carriers, so requiring all to be good is unlikely to succeed
+
+If we ack each carrier separately we need some form of block number, so we can infill bits of data that were missed.
+
+Always sending first block on first carrier seems a bad idea (but look at redundancy ideas below)
+
+We could send the same data (with same block number) on multiple carriers for resilience
+
+We need a ack frame with one bit per carrier (? 6 bytes) which is about 1 sec with 50 baud (do we need fec or just crc??).
+Could send ACK at 100 baud, shortening it a bit, but is overall throughput increace worth it?
+
+Using one byte block number but limit to 0 - 127. Window is 10160 in 16QAM or 12700 for 32QAM
+unless we use a different block length for each mode. Takes 10% of 2FSK throughput.
+
+Receiver must be able to hold  window of frames (may be a problem with Teensy)
+
+Must handle missed ack. ? base next ack on combination of repeats ?
+
+Should we wait to pass to host till next seq frame received or all received ok?
+
+Should we have multiple frame types for each mod mode, or add a frame type to carrier? 
+
+Ideally would like 2, 4, 8 PSK, 16, 32QAM. Too many if we stick with ARDOP2 frame structure, so need frame type
+
+Frame type has to be sent in fixed mode (not same as data) we need 2 or 3 bits. With 2FSK that is about 60 mS.
+Need to validate. If we use same type for all carriers (any good reason not to?) we can decode type byte on all 
+frames and compare. Very unlikely to choose wrong one, even if some are different. Could even try more than one (
+may be a problem with Teensy). 
+
+Could use combination of redundancy and mode to give very wide speed (and hopefully resilience) ratio, but gear 
+shifting may be a nightmare. 
+
+Is reducing carriers and therefore increasing power per carrier better than massive redundacy with lots of carriers?
+
+Would dividing single carrier into multiple RS blocks be beneficial? Adds 3 byte overhead per block (Len and CRC)
+if done with slow carriers would limit window size, so may need different block size per mode, which makes reassembly tricky
+
+For a block of 4-5 secs we get
+
+16OFDM 80 bytes/carrier, 3440 bytes per frame, approx 4600 BPS Net
+ 8OFDM 60 bytes/carrier, 2580 bytes per frame, approx 3440 BPS Net
+ 4OFDM 40 bytes/carrier, 1720 bytes per frame, approx 2300 BPS Net
+ 2OFDM 20 bytes/carrier,  860 bytes per frame, approx 1150 BPS Net
+
+For Comparison 16QAM.2500.100
+
+120 bytes/carrier, 1200 bytes per frame, approx 2225 BPS Net
+
+
+*/
+
+
+
+#ifdef WIN32
+#define _CRT_SECURE_NO_DEPRECATE
+
+#include <windows.h>
+#else
+#define SOCKET int
+#include <unistd.h>
+#define closesocket close
+#endif
+
+#include <math.h>
+
+#include "ARDOPC.h"
+
+#pragma warning(disable : 4244)		// Code does lots of float to int
+
+int OFDMMode;				// OFDM can use various modulation modes and redundancy levels
+int LastSentOFDMMode;		// For retries
+int LastSentOFDMType;		// For retries
+
+int SavedOFDMMode = -1;		// used if we switch to a more robust mode cos we don't have much to send
+int SavedFrameType;
+
+
+extern UCHAR bytCurrentFrameType;
+
+int RXOFDMMode = 0;
+
+const char OFDMModes[8][6] = {"PSK2", "PSK4", "PSK8", "QAM16", "PSK16", "QAM32", "PSK4S", "Undef"};  
+
+int OFDMFrameLen[8] = {19, 40, 57, 80, 80};		// Bytes per carrier for each submode
+
+int OFDMCarriersReceived[8] = {0};
+int OFDMCarriersDecoded[8] = {0};
+
+int OFDMCarriersNaked[8] = {0};
+int OFDMCarriersAcked[8] = {0};
+
+// Functions to encode data for all OFDM frame types
+
+// For the moment will will send all carriers with the same mode (I don't think there is an advantage being different),
+// So we can use a different block length in each mode. We need to keep record of which blocks within bytDataToSend have
+// been acked. Note that the first block is always unacked - acked data at the front of buffer is removed.
+
+// Although we have an 8 bit sequence, I don't see the need for more than 128 outstanding blocks (carriers). If we miss
+// just the first block of a 43 frame transmission, next time we send block 1 and 44 - 86. If 1 is still the only one 
+// unacked I will repeat it several times in the next transmission, which will be the repeats plus 87 - 127.
+
+// Unfortunately this means bytDataToSend must be at least 128 * max block size (80) = 10240, which is a lot on a Teensy.
+// Maybe can come upwith better design!
+
+
+UCHAR UnackedOFDMBlocks[128] = {0};			// This is bit list of outstanding blocks.
+UCHAR UnackedOFDMBlockLen[128] = {0};		// Length of each block. do we need both (ie can we send a block of zero length ??)
+
+int NextOFDMBlock = 0;
+int UnAckedBlockPtr = 0;
+
+int CarriersSent;
+int BytesSent = 0;							// Sent but not acked
+
+int CarriersACKed;
+int CarriersNAKed;
+
+int lastOFDMRXMode;
+int LastDemodType = 0;
+
+int OFDMLevel; 		// % "compression" 
+
+
+// This is used if we send a partial block. Will normally only happen
+// at end of transmission, but could due to flow control
+//
+// Also used if we want to change mode
+
+int DontSendNewData = 0;	// Dont send new till all acked
+int LimitNewData = 0;		// Repeat unacked several times till all acked
+int NeedShiftDown = 0;		// Shift down once all sent
+int Duplicate = 0;			// Send data twice
+int firstNewCarrier = 0;
+
+UCHAR SentOFDMBlocks[MAXCAR];
+UCHAR SentOFDMBlockLen[MAXCAR];	// Must match actual carrier number
+
+UCHAR OFDMBlocks[MAXCAR];		// Build the carrier set in here
+UCHAR OFDMBlockLen[MAXCAR];
+
+
+UCHAR goodReceivedBlocks[128];
+UCHAR goodReceivedBlockLen[128];
+
+
+#define MAX_RAW_LENGTH_FSK 43	// 1 + 32 + 8 + 2
+#define MAX_RAW_LENGTH	163     // Len Byte + Data + RS  + CRC I think!
+
+int BytesSenttoHost = 0;
+
+
+extern UCHAR bytData[128 * 80];
+extern int bytQDataInProcessLen;
+
+extern UCHAR bytSessionID;
+extern UCHAR bytFrameData[10][MAX_RAW_LENGTH + 10];		// Received chars
+
+extern char CarrierOk[MAXCAR];		// RS OK Flags per carrier
+
+extern double dblPhaseInc;  // in milliradians
+extern short intNforGoertzel[MAXCAR];
+extern short intPSKPhase_1[MAXCAR], intPSKPhase_0[MAXCAR];
+extern short intCP[MAXCAR];	  // Cyclic prefix offset 
+extern float dblFreqBin[MAXCAR];
+extern short intFilteredMixedSamples[];	// Get Frame Type need 2400 and we may add 1200
+extern int intFilteredMixedSamplesLength;
+extern int MaxFilteredMixedSamplesLength;
+extern short intCarMagThreshold[MAXCAR];
+extern short ** intMags;
+extern short ** intPhases;
+extern float floatCarFreq;			//(was int)	// Are these the same ??
+extern int intNumCar;
+extern int intSampPerSym;
+extern int intDataLen;
+extern int intRSLen;
+extern int SymbolsLeft;
+extern int intPhasesLen;
+extern int intPhasesLen;
+extern int intPSKMode;
+extern int intSymbolsPerByte;
+extern int PSKInitDone;
+extern int intLastRcvdFrameQuality;
+extern int frameLen;
+extern int intFrameType;
+extern const char Good[MAXCAR];
+extern const char Bad[MAXCAR];
+extern int pskStart;
+extern int charIndex;			// Index into received chars
+extern int RepeatedFrame;		// set if this data frame is a repeat
+extern int	intShiftUpDn;
+extern int dttTimeoutTrip;
+extern int LastDataFrameType;			// Last data frame processed (for Memory ARQ, etc)
+extern int intNAKctr;
+extern int intACKctr;
+extern int intTimeouts;
+
+extern UCHAR goodReceivedBlocks[128];
+extern UCHAR goodReceivedBlockLen[128];
+
+void GoertzelRealImag(short intRealIn[], int intPtr, int N, float m, float * dblReal, float * dblImag);
+int ComputeAng1_Ang2(int intAng1, int intAng2);
+int Demod1CarOFDMChar(int Start, int Carrier, int intNumOfSymbols);
+VOID Decode1CarPSK(int Carrier, BOOL OFDM);
+int CorrectRawDataWithRS(UCHAR * bytRawData, UCHAR * bytCorrectedData, int intDataLen, int intRSLen, int bytFrameType, int Carrier);
+UCHAR GetSym8PSK(int intDataPtr, int k, int intCar, UCHAR * bytEncodedBytes, int intDataBytesPerCar);
+int Track1CarPSK(int floatCarFreq, int PSKMode, BOOL QAM, BOOL OFDM, float dblUnfilteredPhase, BOOL blnInit);
+void SendLeaderAndSYNC(UCHAR * bytEncodedBytes, int intLeaderLen);
+void ARDOPFlush();
+BOOL  CheckCRC16(unsigned char * Data, int Length);
+void CorrectPhaseForTuningOffset(short * intPhase, int intPhaseLength, int intPSKMode);
+BOOL DemodOFDM();
+
+void GenCRC16Normal(char * Data, int Length)
+{
+	unsigned int CRC = GenCRC16(Data, Length);
+
+	// Put the two CRC bytes after the stop index
+
+	Data[Length++] = (CRC >> 8);	 // MS 8 bits of Register
+	Data[Length] = (CRC & 0xFF);	 // LS 8 bits of Register
+}
+
+
+void ClearOFDMVariables()
+{
+	OFDMMode = PSK4;
+	memset(UnackedOFDMBlocks, 0, sizeof(UnackedOFDMBlocks));
+	memset(UnackedOFDMBlockLen, 0, sizeof(UnackedOFDMBlockLen));
+	NextOFDMBlock = 0;
+	BytesSent = 0;
+	SavedOFDMMode = -1;
+
+	DontSendNewData = LimitNewData = Duplicate = 0;
+	
+	memset(SentOFDMBlocks, 0, sizeof(SentOFDMBlocks));
+	memset(SentOFDMBlockLen, 0, sizeof(SentOFDMBlockLen));
+
+	CarriersACKed = CarriersNAKed = NeedShiftDown = 0;
+	lastOFDMRXMode = LastDemodType = 0;
+}
+
+int  GetNextOFDMBlockNumber(int * Len)
+{
+	BOOL Looping = 0;
+resend:
+	while (UnAckedBlockPtr >= 0)
+	{
+		if (UnackedOFDMBlocks[UnAckedBlockPtr])
+		{
+			*Len = UnackedOFDMBlockLen[UnAckedBlockPtr--];
+			return UnAckedBlockPtr + 1;	// We send unacked blocks backwards
+		}
+		UnAckedBlockPtr--;
+	}
+
+	if (LimitNewData)
+	{
+		Debugprintf("LimitNewData Set - repeating unacked blocks");
+		UnAckedBlockPtr = 127;		// Send unacked again
+		LimitNewData--;
+		goto resend;
+	}
+
+	if (DontSendNewData && Looping == 0)
+	{
+		Debugprintf("DontSendNewData Set - repeating unacked blocks");
+		UnAckedBlockPtr = 127;		// Send unacked again
+		Looping = 1;				// Protect against loop
+		goto resend;
+	}
+
+	// No unacked blocks, send new
+
+	NextOFDMBlock++; 
+	*Len = -1;
+	return NextOFDMBlock - 1;
+}
+
+UCHAR * GetNextOFDMBlock(int Block, int intDataLen)
+{
+	return  0;  &bytDataToSend[Block * intDataLen];
+}
+
+void GetOFDMFrameInfo(int OFDMMode, int * intDataLen, int * intRSLen, int * Mode, int * Symbols)
+{
+	switch (OFDMMode)
+	{
+	case PSK2:
+
+		*intDataLen = 19;
+		*intRSLen = 6;				// Must be even
+		*Symbols = 8;
+		*Mode = 2;
+
+		break;
+
+	case PSK4:
+
+		*intDataLen = 40;
+		*intRSLen = 10;
+		*Symbols = 4;
+		*Mode = 4;
+		break;
+
+	case PSK8:
+
+		*intDataLen = 57;			// Must be multiple of 3
+		*intRSLen = 18;				// Must be multiple of 3 and even (so multiple of 6)
+		*Symbols = 8;				// Actually 8 symbols for 3 bytes
+		*Mode = 8;
+		break;
+
+	case PSK16:
+
+		*intDataLen = 80;
+		*intRSLen = 20;
+		*Symbols = 2;
+		*Mode = 16;
+
+		break;
+
+	case QAM16:
+
+		*intDataLen = 80;
+		*intRSLen = 20;
+		*Symbols = 2;
+		*Mode = 8;
+		break;
+
+	case QAM32:
+
+		*intDataLen = 100;
+		*intRSLen = 25;
+		*Symbols = 8;				// Actually 8 symbols for 3 bytes
+		*Mode = 16;
+		break;
+
+	case PSK4S:
+
+		*intDataLen = 12;
+		*intRSLen = 4;
+		*Symbols = 4;
+		*Mode = 4;
+		break;
+
+
+	default:
+				
+		*intDataLen = *intRSLen = 0;
+	}
+}
+
+int EncodeOFDMData(UCHAR bytFrameType, UCHAR * bytDataToSend, int Length, unsigned char * bytEncodedBytes)
+{
+	//  Output is a byte array which includes:
+	//  1) A 2 byte Header which include the Frame ID.  This will be sent using 4FSK at 50 baud. It will include the Frame ID and ID Xored by the Session bytID.
+	//  2) n sections one for each carrier that will include all data (with FEC appended) for the entire frame. Each block will be identical in length.
+
+	//  Each carrier starts with an 8 bit block number, which may not be sequential (each carrier is ack'ed separately)
+	//  and may be repeated (for redundancy)
+
+	// OFDM Has several modes, selected by OFDMMode not Frame Type (all are OFDM.500 or OFDM.2500
+
+	// For the moment will will send all carriers wirh the same mode (I don't think there is an advantage being different),
+	// So we can use a different block length in each mode. We need to keep record of which blocks within bytDataToSend have
+	// been acked. Note that the first block is always unacked - acked data at the front of buffer is removed.
+
+
+	int intNumCar, intBaud, intDataLen, intRSLen, bytDataToSendLengthPtr, intEncodedDataPtr;
+
+	int intCarDataCnt;
+	BOOL blnOdd;
+	char strType[18];
+	char strMod[16];
+	BOOL blnFrameTypeOK;
+	UCHAR bytQualThresh;
+	int i, j, Dummy;
+	UCHAR * bytToRS = &bytEncodedBytes[2]; 
+	int RepeatIndex = 0;			// used to duplicate data if too short to fill frame
+
+	blnFrameTypeOK = FrameInfo(bytFrameType, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytQualThresh, strType);
+
+	if (intDataLen == 0 || Length == 0 || !blnFrameTypeOK)
+		return 0;
+
+	GetOFDMFrameInfo(OFDMMode, &intDataLen, &intRSLen, &Dummy, &Dummy);
+
+	//	Generate the 2 bytes for the frame type data:
+
+	CarriersSent = intNumCar;
+	
+	bytEncodedBytes[0] = bytFrameType;
+	bytEncodedBytes[1] = bytFrameType ^ bytSessionID;
+
+	bytDataToSendLengthPtr = 0;
+	firstNewCarrier = -1;
+
+	intEncodedDataPtr = 2;
+
+	UnAckedBlockPtr = 127;		// We send unacked blocks backwards
+
+	// Length is data still queued. BytesSent is unacked data
+
+	Length -= BytesSent;		// New data to send
+
+	if (Length == 0)
+		DontSendNewData = 1;
+
+	Debugprintf("OFDM Bytes to Send %d DontSendNewData %d", Length, DontSendNewData);
+
+	// Often the first carrier is the only one missed, and if we repeat it first it will always
+	// fail. So it would be good if logical block number 0 isn't always sent on carrier 0
+	
+	// The carrier number must match the block number so we can ack it. 
+
+
+
+	for (i = 0; i < intNumCar; i++)		//  across all carriers
+	{
+		int blkLen;
+		int blkNum;
+
+		intCarDataCnt = Length - bytDataToSendLengthPtr;
+
+		// If we have no new data to send we would repeat the last sent blocks from
+		// SentOFDMBlocks which is wrong if there is no new data. So in that case just
+		// send outstanding data. 
+
+		if (DontSendNewData && BytesSent)			// Just send outstanding data repeatedly if necessary
+		{	
+			OFDMBlocks[i] = blkNum = GetNextOFDMBlockNumber(&blkLen);
+			OFDMBlockLen[i] = UnackedOFDMBlockLen[blkNum] = blkLen;
+			UnackedOFDMBlocks[blkNum] = 1;
+
+		}
+		else if (Duplicate & (i >= ((intNumCar - firstNewCarrier) /2)))
+			goto repeatblocks;
+
+		else if (intCarDataCnt > intDataLen) // why not > ??
+		{
+			// Won't all fit 
+tryagain:
+			OFDMBlocks[i] = blkNum = GetNextOFDMBlockNumber(&blkLen);
+	
+			if (blkLen == -1)
+			{
+				// New Block. Make sure it will fit in window
+
+				int limit;
+
+				if (intNumCar == 9)
+					limit = 24;			// Don't want too many outstanding or shift up will be slow
+				else
+					limit = 125;
+
+				if (firstNewCarrier == -1)
+					firstNewCarrier = i;
+
+				if ((NextOFDMBlock + (intNumCar - i)) > limit)
+				{
+					// no room
+
+					NextOFDMBlock--	;	// we aren't going to send it
+					UnAckedBlockPtr = 127;	// send unacked again
+					goto tryagain;
+				}
+
+				blkLen = intDataLen;
+				bytDataToSendLengthPtr += intDataLen;	// Don't reduce bytes to send if repeating
+				BytesSent += intDataLen;
+			}
+
+			OFDMBlockLen[i] = UnackedOFDMBlockLen[blkNum] = blkLen;
+			UnackedOFDMBlocks[blkNum] = 1;
+		}
+		else
+		{
+			// Last bit
+
+			memset(&bytToRS[0], 0, intDataLen);
+
+			bytToRS[0] = intCarDataCnt;  // Could be 0 if insuffient data for # of carriers 
+
+			if (intCarDataCnt > 0)
+			{
+				OFDMBlocks[i] = blkNum = GetNextOFDMBlockNumber(&blkLen);
+				if (blkLen == -1)
+				{
+					if (firstNewCarrier == -1)
+						firstNewCarrier = i;
+
+					blkLen = intCarDataCnt;  // Could be 0 if insuffient data for # of carriers 
+					bytDataToSendLengthPtr += intCarDataCnt;	// Don't reduce bytes to send if repeating
+					BytesSent += intCarDataCnt;
+					if (intCarDataCnt < intDataLen)
+						DontSendNewData = TRUE;			// sending a part block so mustnt send more till all acked
+				}
+				
+				UnackedOFDMBlockLen[blkNum] = OFDMBlockLen[i] = blkLen;
+				UnackedOFDMBlocks[blkNum] = 1;
+			}
+			else
+			{
+				// No more data to send - duplicate sent carriers. Gives extra redundancy
+repeatblocks:
+				blkNum = OFDMBlocks[RepeatIndex];
+				blkLen = OFDMBlockLen[RepeatIndex++];
+				OFDMBlocks[i] = blkNum;
+				OFDMBlockLen[i] = blkLen;
+				UnackedOFDMBlockLen[blkNum] = blkLen;
+				UnackedOFDMBlocks[blkNum] = 1;
+			}
+		}
+	}
+
+	// We now have pointers to the logical blocks in OFDMBlocks/Len. We don't
+	// have to modulate in that order, but must update SentOFDMBlocks with the real
+	// Carrier number
+
+	j = rand() % intNumCar;
+
+	for (i = 0; i < intNumCar; i++)
+	{
+		if (j >= intNumCar)
+			j = 0;
+
+		SentOFDMBlockLen[i] = bytToRS[0] = OFDMBlockLen[j];
+		SentOFDMBlocks[i] = bytToRS[1] = OFDMBlocks[j++]; 
+
+		Debugprintf("Sending OFDM Carrier %d Block %d Len %d", i,bytToRS[1], bytToRS[0]);
+		memcpy(&bytToRS[2], GetNextOFDMBlock(bytToRS[1], intDataLen), bytToRS[0]);
+	
+		GenCRC16Normal(bytToRS, intDataLen + 2); // calculate the CRC on the byte count + data bytes
+
+		// Data + RS + 1 byte byteCount + 1 byte blockno + 2 Byte CRC
+		
+		RSEncode(bytToRS, bytToRS+intDataLen+4, intDataLen + 4, intRSLen);  // Generate the RS encoding
+
+ 		intEncodedDataPtr += intDataLen + 4 + intRSLen;
+
+		bytToRS += intDataLen + 4 + intRSLen;
+	}
+
+	return intEncodedDataPtr;
+}
+
+
+// OFDM RX Routines
+
+extern int NErrors;
+
+BOOL Decode4FSKOFDMACK()
+{
+	BOOL FrameOK;
+	BOOL blnRSOK;
+
+	// 6 Byte payload, 2 CRC 4 RS
+ 
+	if (CheckCRC16(&bytFrameData[0][0], 6)) 
+	{
+		Debugprintf("OFDMACK Decode OK");
+		return  TRUE;
+	}
+
+	// Try RS Correction
+
+
+	FrameOK = RSDecode(&bytFrameData[0][0], 12, 4, &blnRSOK);
+
+	if (FrameOK && blnRSOK == FALSE)
+	{
+		// RS Claims to have corrected it, but check
+
+		Debugprintf("OFDMACK %d Errors Corrected by RS", NErrors);
+
+		if (CheckCRC16(&bytFrameData[0][0], 6)) 
+		{
+			Debugprintf("OFDMACK Corrected by RS OK");
+			return  TRUE;
+		}
+	}
+	Debugprintf("OFDMACK Decode Failed after RS");
+
+	return FALSE;
+}
+
+
+
+void RemoveProcessedOFDMData()
+{
+	// ISS has changed toggle, so last ack was processed.
+	
+	// if the last frame wasn't completely decoded then we need to remove any data sent to host and corresponding
+	// entries in goodReceivedBlocks and goodReceivedBlockLen
+
+	// This allows us to accumulate carriers from repeated frames. This could be good for FEC, but I think it is
+	// of limited value for ARQ. Is it worth it ???
+
+
+	int i, n, Len = 0;
+	
+	for (i = 0; i < 128; i++)
+	{
+		n = goodReceivedBlockLen[i];
+
+		if (n)
+			Len += n;
+		else
+			break;					// exit loop on first missed block.
+	}
+
+	// i is number of blocks to remove
+
+	if (i == 0)
+		return;
+
+	Debugprintf("Removing %d received OFDM blocks Length %d", i, Len);
+
+	memmove(goodReceivedBlocks, &goodReceivedBlocks[i], 128 - i);
+	memmove(goodReceivedBlockLen, &goodReceivedBlockLen[i], 128 - i);
+	memset(&goodReceivedBlocks[128 - i], 0, i);
+	memset(&goodReceivedBlockLen[128 - i], 0, i);
+	memmove(bytData, &bytData[Len], sizeof(bytData) - Len);
+}
+
+
+VOID InitDemodOFDM()
+{
+	// Called at start of frame
+
+	int i;
+	float dblPhase, dblReal, dblImag;
+	short modePhase[MAXCAR][3];
+	int OFDMType[MAXCAR] = {0};
+	int ModeCount[8] = {0};
+	int MaxModeCount = 0;
+	char Msg[64];
+
+	intSampPerSym = 240;
+
+	floatCarFreq = 1500.0f + ((intNumCar /2) * 10000.0f) / 180.0f;		// Top freq (spacing is 10000/180)
+
+	for (i= 0; i < intNumCar; i++)
+	{
+		// OFDM uses 55.5555 Hz carrier interval
+						
+		intCP[i] = 24;					//CP length
+		intNforGoertzel[i] = 216;
+		dblFreqBin[i] = floatCarFreq / 55.5555f;
+	
+		// Get initial Reference Phase
+		
+		GoertzelRealImag(intFilteredMixedSamples, intCP[i], intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+		dblPhase = atan2f(dblImag, dblReal);
+
+		// Set initial mag from Reference Phase and Mode Bits (which should be full power)
+
+		intCarMagThreshold[i] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+
+		intPSKPhase_1[i] = 1000 * dblPhase;
+
+		// Get the 3 OFDM mode bits
+
+		GoertzelRealImag(intFilteredMixedSamples + 240, intCP[i], intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+		dblPhase = atan2f(dblImag, dblReal);
+
+		intPSKPhase_0[i] = 1000 * atan2f(dblImag, dblReal);
+		modePhase[i][0] = -(ComputeAng1_Ang2(intPSKPhase_0[i], intPSKPhase_1[i]));
+		intPSKPhase_1[i] = intPSKPhase_0[i];
+				
+		intCarMagThreshold[i] += sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+
+
+		GoertzelRealImag(intFilteredMixedSamples + 480, intCP[i], intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+		dblPhase = atan2f(dblImag, dblReal);
+
+		intPSKPhase_0[i] = 1000 * atan2f(dblImag, dblReal);
+		modePhase[i][1] = -(ComputeAng1_Ang2(intPSKPhase_0[i], intPSKPhase_1[i]));
+		intPSKPhase_1[i] = intPSKPhase_0[i];
+				
+		intCarMagThreshold[i] += sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+
+		GoertzelRealImag(intFilteredMixedSamples + 720, intCP[i], intNforGoertzel[i], dblFreqBin[i], &dblReal, &dblImag);
+		dblPhase = atan2f(dblImag, dblReal);
+	
+		intPSKPhase_0[i] = 1000 * atan2f(dblImag, dblReal);
+		modePhase[i][2] = -(ComputeAng1_Ang2(intPSKPhase_0[i], intPSKPhase_1[i]));
+		intPSKPhase_1[i] = intPSKPhase_0[i];
+				
+		intCarMagThreshold[i] += sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		intCarMagThreshold[i] *= 0.75f;
+
+		// We have accumulated 4 values so divide by 4
+
+		intCarMagThreshold[i] /= 4.0f;
+
+		if (modePhase[i][0] >= 1572 || modePhase[i][0] <= -1572)
+			 OFDMType[i] |= 1;
+
+		if (modePhase[i][1] >= 1572 || modePhase[i][1] <= -1572)
+			 OFDMType[i] |= 2;
+
+		if (modePhase[i][2] >= 1572 || modePhase[i][2] <= -1572)
+			 OFDMType[i] |= 4;
+
+		floatCarFreq -= 55.555664f;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+	}
+
+	// Get RX Mode. May be corrupt on some carriers, so go with majority
+	// But incorrectly seeing a change will cause corruption, so perhaps
+	// need more than simple majority
+
+	// Or maybe don't actually clear old data until we decode at least
+	// one frame. That way an incorrect frame type won't cause a problem
+	// (as frame won't decode). But what if type is correct and frame still
+	// won't decode ?? 
+
+	// So if almost all types aren't the same, and type is new, discard.
+
+
+	
+	for (i = 0; i < intNumCar; i++)
+		ModeCount[OFDMType[i]]++;
+
+	for (i = 0; i < 8; i++)
+	{
+		if (ModeCount[i] > MaxModeCount)
+		{
+			MaxModeCount = ModeCount[i];
+			RXOFDMMode = i;
+		}
+	}
+
+	if (MaxModeCount != intNumCar)
+		Debugprintf("Not all OFDM Types the same (%d)", intNumCar - MaxModeCount);
+
+
+	if (RXOFDMMode != lastOFDMRXMode)
+	{
+		// has changed. Only accept if all ok 
+		// ?? is this a bit extreme ??. Try 1 error 
+
+		if (MaxModeCount < (intNumCar - 1))
+		{
+			// Not sure. Safer to assume wrong
+			// if it really has changed decode will fail
+			// and frame repeat
+			
+			RXOFDMMode = lastOFDMRXMode;
+
+			Debugprintf("New OFDM Mode but more than 1 carrier different (%d) - assume corrupt and don't change", intNumCar - MaxModeCount);
+		}
+	}
+
+	GetOFDMFrameInfo(RXOFDMMode, &intDataLen, &intRSLen, &intPSKMode, &intSymbolsPerByte);
+
+	// if OFDM mode (or frame type) has changed clear any received but unprocessed data
+
+	// If we aren't going to decode because it is a repeat we don't need to 
+	// check, as type can't have changed, and new type might be corrupt
+
+	if (!RepeatedFrame || (memcmp(CarrierOk, Bad, intNumCar) == 0))
+	{
+		// We are going to decode it, so check
+
+		if (RXOFDMMode != lastOFDMRXMode || (intFrameType & 0xFE) != (LastDemodType & 0xFE))
+		{
+			memset(goodReceivedBlocks, 0, sizeof(goodReceivedBlocks)); 
+			memset(goodReceivedBlockLen, 0, sizeof(goodReceivedBlockLen));
+			BytesSenttoHost = 0;
+
+			lastOFDMRXMode = RXOFDMMode;
+
+			if ((intFrameType & 0xFE) != (LastDemodType & 0xFE))
+				Debugprintf("New OFDM Mode - clear any received data");
+			else
+				Debugprintf("New Frame Type - clear any received data");
+		}
+	}
+
+	Track1CarPSK(floatCarFreq, intPSKMode, FALSE, TRUE, dblPhase, TRUE);
+
+	SymbolsLeft = intDataLen + intRSLen + 4; // Data has length Blockno and CRC
+
+	dblPhaseInc = 2 * M_PI * 1000 / intPSKMode;
+	intPhasesLen = 0;
+
+	PSKInitDone = TRUE;
+
+	Debugprintf("OFDM Mode %s", OFDMModes[RXOFDMMode]);
+
+	sprintf(Msg, "%s/%s", Name(intFrameType), OFDMModes[RXOFDMMode]);
+	DrawRXFrame(0, Msg);
+}
+
+VOID Decode1CarOFDM(int Carrier)
+{
+	unsigned int intData;
+	int k;
+	float dblAlpha = 0.1f; // this determins how quickly the rolling average dblTrackingThreshold responds.
+
+	// dblAlpha value of .1 seems to work well...needs to be tested on fading channel (e.g. Multipath)
+	
+	int Threshold = intCarMagThreshold[Carrier];
+	int Len = intPhasesLen;
+
+	UCHAR * Decoded = bytFrameData[0];			// Always use first buffer
+
+	pskStart = 0;
+	charIndex = 0;
+
+	// We calculated initial mag from reference symbol
+
+	// use filtered tracking of refernce phase amplitude
+	// (should be full amplitude value)
+     
+	// On WGN this appears to improve decoding threshold about 1 dB 9/3/2016
+    	
+	while (Len >= 0)
+	{
+		// Phase Samples are in intPhases
+
+		intData = 0;
+
+		for (k = 0; k < 2; k++)
+		{
+			intData <<= 4;
+
+			if (intPhases[Carrier][pskStart] < 393 && intPhases[Carrier][pskStart] > -393)
+			{
+			}		// Zero so no need to do anything
+			else if (intPhases[Carrier][pskStart] >= 393 && intPhases[Carrier][pskStart] < 1179)
+				intData += 1;
+			else if (intPhases[Carrier][pskStart] >= 1179 && intPhases[Carrier][pskStart] < 1965)
+				intData += 2;
+			else if (intPhases[Carrier][pskStart] >= 1965 && intPhases[Carrier][pskStart] < 2751)
+				intData += 3;
+			else if (intPhases[Carrier][pskStart] >= 2751 || intPhases[Carrier][pskStart] < -2751)
+				intData += 4;
+			else if (intPhases[Carrier][pskStart] >= -2751 && intPhases[Carrier][pskStart] < -1965)
+				intData += 5;
+			else if (intPhases[Carrier][pskStart] >= -1965 && intPhases[Carrier][pskStart] <= -1179)
+				intData += 6;
+			else 
+				intData += 7;
+
+			if (intMags[Carrier][pskStart] < Threshold)
+			{
+				intData += 8;		//  add 8 to "inner circle" symbols. 
+				Threshold = (Threshold * 900 + intMags[Carrier][pskStart] * 150) / 1000;
+			}
+			else
+			{
+				Threshold = ( Threshold * 900 + intMags[Carrier][pskStart] * 75) / 1000;
+			}
+		
+			intCarMagThreshold[Carrier] = Threshold;
+			pskStart++;
+		}
+		Decoded[charIndex++] = intData;
+		Len -=2;
+	}
+}
+
+BOOL DemodOFDM()
+{
+	int Used = 0;
+	int Start = 0;
+	int i, n, MemARQOk = 0;
+	int skip = rand() % intNumCar;
+
+	// We can't wait for the full frame as we don't have enough RAM, so
+	// we do one DMA Buffer at a time, until we run out or end of frame
+
+	// Only continue if we have enough samples
+
+	while (State == AcquireFrame)
+	{	
+		if (PSKInitDone == 0)		// First time through
+		{
+			if (intFilteredMixedSamplesLength < (240 * 4))		// Reference and 3 Mode bits
+				return FALSE;
+
+			InitDemodOFDM();
+			intFilteredMixedSamplesLength -= 4 * intSampPerSym;
+
+			if (intFilteredMixedSamplesLength < 0)
+				Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+			Start += 4 * intSampPerSym;	
+
+			// We normally don't decode Repeated frames. But if all carriers failed to
+			// decode we should
+
+			if (RepeatedFrame)
+			{
+				if (memcmp(CarrierOk, Bad, intNumCar) == 0)
+					RepeatedFrame = FALSE;
+			}
+		}
+
+		if (intFilteredMixedSamplesLength < intSymbolsPerByte * intSampPerSym + 10) 
+		{
+			// Move any unprocessessed data down buffer
+
+			//	(while checking process - will use cyclic buffer eventually
+
+			if (intFilteredMixedSamplesLength > 0)
+				memmove(intFilteredMixedSamples,
+					&intFilteredMixedSamples[Start], intFilteredMixedSamplesLength * 2); 
+
+			return FALSE;
+		}
+
+
+		// call the decode char routine for each carrier
+
+		// start at the highest carrier freq which is actually the lowest transmitted carrier due to Reverse sideband mixing
+	
+		floatCarFreq = 1500.0f + ((intNumCar / 2) * 10000.0f) / 180.0f;	// spacing is 10000/180 = 55.5555555
+	
+		for (i = 0; i < intNumCar; i++)
+		{
+			Used = Demod1CarOFDMChar(Start, i, intSymbolsPerByte);		// demods 2 phase values - enough for one char
+			intPhasesLen -= intSymbolsPerByte;
+			floatCarFreq -= 55.555664f;  // Step through each carrier Highest to lowest which is equivalent to lowest to highest before RSB mixing. 
+		}
+
+		intPhasesLen += intSymbolsPerByte;
+		
+		if (RXOFDMMode == PSK8)
+			SymbolsLeft -=3;
+		else
+			SymbolsLeft--;		// number still to decode
+
+	
+		Start += Used;
+		intFilteredMixedSamplesLength -= Used;
+
+		if (intFilteredMixedSamplesLength < 0)
+			Debugprintf("Corrupt intFilteredMixedSamplesLength");
+
+
+		if (SymbolsLeft <= 0)	
+		{
+			// Frame complete - decode it
+
+			DecodeCompleteTime = Now;
+
+			// prepare for next so we can exit when we have finished decode
+
+			DiscardOldSamples();
+			ClearAllMixedSamples();
+			State = SearchingForLeader;
+
+			// Rick uses the last carrier for Quality
+			// Get quality from middle carrier (?? is this best ??
+	
+			intLastRcvdFrameQuality = UpdatePhaseConstellation(&intPhases[intNumCar/2][0], &intMags[intNumCar/2][0], intPSKMode, FALSE, TRUE);
+
+			// Decode the phases. Mode was determined from header
+
+			frameLen = 0;
+
+			if (RepeatedFrame)
+			{
+				Debugprintf("Repeated frame - discard");
+	
+				frameLen = BytesSenttoHost;
+				return TRUE;
+			}
+
+			for (i = 0; i < intNumCar; i++)	
+			{
+				UCHAR decodeBuff[256];				// 82 doesnt seem to be enough ??Max length of OFDM block
+				int decodeLen, ofdmBlock;;
+
+				CarrierOk[i] = 0;					// Always reprocess carriers
+		
+				if (RXOFDMMode == QAM16)
+					Decode1CarOFDM(i);
+				else
+					Decode1CarPSK(i, TRUE);
+
+				// with OFDM each carrier has a sequence number, as we can do selective repeats if a carrier is missed.
+				// so decode into a separate buffer, and copy good data into the correct place in the received data buffer. 
+
+			decodeLen = CorrectRawDataWithRS(&bytFrameData[0][0], decodeBuff , intDataLen + 1, intRSLen, intFrameType, i);
+
+				// if decode fails try with a tuning offset correction 
+
+				if (CarrierOk[i] == 0)
+				{
+					CorrectPhaseForTuningOffset(&intPhases[i][0], intPhasesLen, intPSKMode);
+	
+					if (RXOFDMMode == QAM16)
+						Decode1CarOFDM(i);
+					else
+						Decode1CarPSK(i, TRUE);
+	
+					decodeLen = CorrectRawDataWithRS(&bytFrameData[0][0], decodeBuff , intDataLen + 1, intRSLen, intFrameType, i);
+				}
+				
+				OFDMCarriersReceived[RXOFDMMode]++;
+
+				if (CarrierOk[i])
+				{
+					ofdmBlock = decodeBuff[0];
+
+					// CRC check isn't perfect. At least we can check that Block and Length
+					// are reasonable
+
+					if (ofdmBlock < 128 && decodeLen <=  intDataLen)
+					{
+						// copy data to correct place in bytData
+
+						OFDMCarriersDecoded[RXOFDMMode]++;
+
+						if (goodReceivedBlocks[ofdmBlock] == 0)
+						{
+							memcpy(&bytData[intDataLen * ofdmBlock], &decodeBuff[1], decodeLen);
+							goodReceivedBlocks[ofdmBlock] = 1;
+							goodReceivedBlockLen[ofdmBlock] = decodeLen;
+						}
+					}
+				}
+			}
+
+			// Pass any contiguous blocks starting from 0 to host (may need to reconsider!)
+
+			for (i = 0; i < 128; i++)
+			{
+				n = goodReceivedBlockLen[i];
+
+				if (n)
+					frameLen += n;
+				else
+					break;					// exit loop on first missed block.
+			}
+
+			// If this is a repeated frame, we should only send any data that is beyond what we sent at last try
+		
+			BytesSenttoHost = frameLen;
+		}
+
+		// if all carriers have been decoded we must have passed all data to the host, so clear partial receive info
+
+		if (memcmp(CarrierOk, Good, intNumCar) == 0)
+		{
+			 memset(goodReceivedBlocks, 0, sizeof(goodReceivedBlocks));
+			 memset(goodReceivedBlockLen, 0, sizeof(goodReceivedBlockLen));
+			 BytesSenttoHost = 0;
+		}
+	}
+	return TRUE;
+}
+
+int Demod1CarOFDMChar(int Start, int Carrier, int intNumOfSymbols)
+{
+	// Converts intSample to an array of differential phase and magnitude values for the Specific Carrier Freq
+	// intPtr should be pointing to the approximate start of the first reference/training symbol (1 of 3) 
+	// intPhase() is an array of phase values (in milliradians range of 0 to 6283) for each symbol 
+	// intMag() is an array of Magnitude values (not used in PSK decoding but for constellation plotting or QAM decoding)
+	// Objective is to use Minimum Phase Error Tracking to maintain optimum pointer position
+
+	//	It demodulates one byte's worth of samples (2 or 4)
+
+	float dblReal, dblImag, dblPhase;
+	int intMiliRadPerSample = floatCarFreq * M_PI / 6;
+	int i;
+	int origStart = Start;
+//	int Corrections;
+
+	// With OFDM we save received data in Receive buffer, so don't keep
+	// the raw frames. So we must always decode
+	
+	if (RepeatedFrame)		// We just repeat previous ack/nak, so don't bother to decode
+	{
+		intPhasesLen += intNumOfSymbols;
+		return intSampPerSym * intNumOfSymbols;
+	}
+
+	for (i = 0; i <  intNumOfSymbols; i++)
+	{
+		GoertzelRealImag(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+		intMags[Carrier][intPhasesLen] = sqrtf(powf(dblReal, 2) + powf(dblImag, 2));
+		dblPhase =  atan2f(dblImag, dblReal);
+		intPSKPhase_0[Carrier] = 1000 * dblPhase;
+		intPhases[Carrier][intPhasesLen] = -(ComputeAng1_Ang2(intPSKPhase_0[Carrier], intPSKPhase_1[Carrier]));
+
+
+		// Should we track each carrier ??
+/*		
+		if (Carrier == 0)
+		{
+			Corrections = Track1CarPSK(floatCarFreq, intPSKMode, FALSE, TRUE, dblPhase, FALSE);
+
+			if (Corrections != 0)
+			{
+				Start += Corrections;
+
+				GoertzelRealImag(intFilteredMixedSamples, Start + intCP[Carrier], intNforGoertzel[Carrier], dblFreqBin[Carrier], &dblReal, &dblImag);
+				intPSKPhase_0[Carrier] = 1000 * atan2f(dblImag, dblReal);
+			}
+		}
+*/
+		intPSKPhase_1[Carrier] = intPSKPhase_0[Carrier];
+		intPhasesLen++;
+		Start += intSampPerSym;
+	}
+       
+	if (AccumulateStats)
+		intOFDMSymbolCnt += intNumOfSymbols;
+
+	return (Start - origStart);	// Symbols we've consumed
+}
+
+
+VOID EncodeAndSendOFDMACK(UCHAR bytSessionID, int LeaderLength, int Chan)
+{
+	// OFDMACK has one bit per carrier. As this needs 43 bits meassage is 6 bytes. The spare 5 bits are 
+	// used to send quality
+
+	unsigned long long val = intLastRcvdFrameQuality >> 2;
+	int i;
+
+	// Not sure if best to use CRC or FEC. Could use both, but message gets a bit long.
+	// Lets go with crc for now
+	// Now try CRC and 4 RS. OTT but see if it reduces number
+	// of failed OFDMACKs
+
+	bytEncodedBytes[0] = OFDMACK;
+	bytEncodedBytes[1] = OFDMACK ^ bytSessionID;
+
+	for (i = MAXCAR - 1; i >= 0; i--)
+	{
+		val <<= 1;
+
+		if (CarrierOk[i])
+			val |= 1;
+	}
+
+	for (i = 2; i < 8; i++)
+	{
+		bytEncodedBytes[i] = val & 0xff;
+		val >>= 8;
+	}
+
+	GenCRC16Normal(&bytEncodedBytes[2], 6);	// calculate the CRC
+
+	RSEncode(&bytEncodedBytes[2], &bytEncodedBytes[10], 8, 4);  // Generate the RS encoding ...now 14 bytes total
+
+	Mod4FSKDataAndPlay(&bytEncodedBytes[0], 14, LeaderLength, Chan);
+
+}
+
+UCHAR bytLastSym[43];
+
+float dblOFDMCarRatio = 0.5f; 
+
+
+void SendOFDM2PSK(int symbol, int intNumCar)
+{
+	int intCarIndex = (MAXCAR - intNumCar) / 2;
+	int intSample;
+	int OFDMFrame[240] = {0};	// accumulated samples for each carrier
+	short OFDMSamples[240];		// 216 data, 24 CP
+	int i, n, p, q;					// start at 24, copy CP later
+
+	for (i = 0; i < intNumCar; i++) // across all active carriers
+	{					
+		p = 24;
+		memset(OFDMSamples, 0, sizeof(OFDMSamples));
+
+		for (n = 0; n < 216; n++)
+		{
+			if (symbol)
+				OFDMSamples[p++] -= intOFDMTemplate[intCarIndex][0][n]; 
+			else
+				OFDMSamples[p++] += intOFDMTemplate[intCarIndex][0][n]; 
+		}
+
+		// we now have the 216 samples. Copy last 24 to front as CP
+
+		memcpy(OFDMSamples, &OFDMSamples[216], 24 * 2);
+
+		// and add into the multicarrier value
+
+		for (q = 0; q < 240; q++)
+			OFDMFrame[q] += OFDMSamples[q];
+			
+		// now do the next carrier
+				
+		bytLastSym[intCarIndex] = symbol;	
+		intCarIndex++;
+	}
+		
+	// Done all carriers - send sample
+
+	for (q = 0; q < 240; q++)
+	{
+		intSample = OFDMFrame[q] / intNumCar;
+ 		ARDOPSampleSink((intSample * OFDMLevel)/100);		
+	}
+}
+
+
+
+void ModOFDMDataAndPlay(unsigned char * bytEncodedBytes, int Len, int intLeaderLen, int Chan)
+{
+	int intNumCar, intBaud, intDataLen, intRSLen, intDataPtr, intSampPerSym, intDataBytesPerCar;
+	BOOL blnOdd;
+	int Type = bytEncodedBytes[0];
+
+	int intSample;
+	char strType[18] = "";
+	char strMod[16] = "";
+	UCHAR bytSym, bytSymToSend, bytMinQualThresh;
+	float dblCarScalingFactor;
+	int intMask = 0;
+	int intLeaderLenMS;
+	int i, j, k, s, n;
+	int intCarStartIndex;
+	int intPeakAmp;
+	int intCarIndex;
+	BOOL QAM = 0;
+	int OFDMFrame[240] = { 0 };	// accumulated samples for each carrier
+	short OFDMSamples[240];		// 216 data, 24 CP
+	int p, q;					// start at 24, copy CP later
+	char fType[64];
+
+	if (!FrameInfo(Type, &blnOdd, &intNumCar, strMod, &intBaud, &intDataLen, &intRSLen, &bytMinQualThresh, strType))
+		return;
+
+	intDataBytesPerCar = (Len - 2) / intNumCar;		// We queue the samples here, so dont copy below
+
+	intCarIndex = intCarStartIndex = (MAXCAR - intNumCar) / 2;
+
+	switch (OFDMMode)
+	{
+	case PSK2:
+
+		s = 8;				// 8 symbols per byte
+		break;
+
+	case PSK4:
+	case PSK4S:
+
+		s = 4;				// 4 symbols per byte
+		break;
+
+	case PSK8:
+
+		s = 8;				// 8 symbols for 3 bytes
+		break;
+
+	case PSK16:
+
+		s = 2;				// 2 symbols per byte
+		break;
+
+	case QAM16:
+
+		s = 2;				// 2 symbols per byte
+		QAM = 1;
+		break;
+
+	default:
+
+		Debugprintf("Undefined OFDM Mode %d", OFDMMode);
+		return;
+	}
+
+	intSampPerSym = 216;			// 55 baud
+
+	if (Type == PktFrameData)
+	{
+		intDataBytesPerCar = pktDataLen + pktRSLen + 3;
+		intDataPtr = 11;		// Over Header
+		goto PktLoopBack;
+	}
+
+	Debugprintf("Sending Frame Type %s Mode %s", strType, OFDMModes[OFDMMode]);
+	sprintf(fType, "%s/%s", strType, OFDMModes[OFDMMode]);
+	DrawTXFrame(fType);
+
+	if (intNumCar == 3)
+	{
+		initFilter(500, 1500, Chan);
+		OFDMLevel = 80;
+	}
+	else if (intNumCar == 9)
+	{
+		initFilter(500, 1500, Chan);
+		OFDMLevel = 100;
+	}
+	else
+	{
+		initFilter(2500, 1500, Chan);
+		OFDMLevel = 125;
+	}
+
+	if (intLeaderLen == 0)
+		intLeaderLenMS = LeaderLength;
+	else
+		intLeaderLenMS = intLeaderLen;
+
+	// Create the leader
+
+	SendLeaderAndSYNC(bytEncodedBytes, intLeaderLen);
+
+	intPeakAmp = 0;
+
+	intDataPtr = 2;  // initialize pointer to start of data.
+
+PktLoopBack:		// Reenter here to send rest of variable length packet frame
+
+
+	//	Now create a reference symbol for each carrier
+
+	//	We have to do each carrier for each sample, as we write
+	//	the sample immediately
+
+	SendOFDM2PSK(0, intNumCar);				// Reference symbol is always zero, so same in any mode
+
+	// Now send OFDM Type as 3 x 2PSK symbols. Same value sent on all carriers. The Type is send as 2PSK
+	// bytLastSym ends up correct
+
+
+	bytSym = (OFDMMode) & 1;
+	bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 1);  // Values 0=1
+	SendOFDM2PSK(bytSymToSend, intNumCar);
+
+	bytSym = (OFDMMode >> 1) & 1;
+	bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 1);  // Values 0-1
+	SendOFDM2PSK(bytSymToSend, intNumCar);
+
+	bytSym = (OFDMMode >> 2) & 1;
+	bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 1);  // Values 0-1
+	SendOFDM2PSK(bytSymToSend, intNumCar);
+
+	// Correct bytLastSYM to match PSK level of actual mode
+
+	for (i = intCarStartIndex; i < intCarStartIndex + intNumCar; i++)
+	{
+		if (OFDMMode == PSK4 || OFDMMode == PSK4S)
+			bytLastSym[i] <<= 1;
+		else if (OFDMMode == PSK8 || OFDMMode == QAM16)
+			bytLastSym[i] <<= 2;
+		if (OFDMMode == PSK16)
+			bytLastSym[i] <<= 3;
+	}
+
+	// Unlike ARDOP_WIN we send samples as they are created,
+	// so we loop through carriers, then data bytes
+
+	for (j = 0; j < intDataBytesPerCar; j++)	//  for each referance and data symbol 
+	{
+		// Loop through each symbol of byte (4 for PSK 2 for QAM
+
+		for (k = 0; k < s; k++)
+		{
+			// with OFDM we must create separate samples for  each
+			// carrier, so we can add the cyclic prefix
+
+			intCarIndex = intCarStartIndex; // initialize the carrrier index
+
+			for (i = 0; i < intNumCar; i++) // across all active carriers
+			{
+				if (OFDMMode == PSK2)
+				{
+					bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> ((7 - k))) & 1;
+					bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 1);  // Values 0-1
+				}
+				else if (OFDMMode == PSK4 || OFDMMode == PSK4S)
+				{
+					bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> (2 * (3 - k))) & 3;
+					bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 3);  // Values 0-3
+				}
+				else if (OFDMMode == PSK8)
+				{
+					// More complex ...must go through data in 3 byte chunks creating 8 Three bit symbols for each 3 bytes of data. 
+
+					bytSym = GetSym8PSK(intDataPtr, k, i, bytEncodedBytes, intDataBytesPerCar);
+					bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 7);	// mod 8
+				}
+				else if (OFDMMode == PSK16)
+				{
+					bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> (4 * (1 - k))) & 15;
+					bytSymToSend = ((bytLastSym[intCarIndex] + bytSym) & 15);  // Values 0-3
+				}
+				else
+				{
+					// 16QAM
+
+					bytSym = (bytEncodedBytes[intDataPtr + i * intDataBytesPerCar] >> (4 * (1 - k))) & 15;
+					bytSymToSend = ((bytLastSym[intCarIndex] & 7) + (bytSym & 7) & 7); // Compute the differential phase to send
+					bytSymToSend = bytSymToSend | (bytSym & 8); // add in the amplitude bit directly from symbol 
+				}
+				p = 24;
+				memset(OFDMSamples, 0, sizeof(OFDMSamples));
+
+				for (n = 0; n < intSampPerSym; n++)
+				{
+					if (OFDMMode == PSK2)
+					{
+						if (bytSymToSend) // This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							OFDMSamples[p++] -= intOFDMTemplate[intCarIndex][0][n];
+						else
+							OFDMSamples[p++] += intOFDMTemplate[intCarIndex][0][n];
+					}
+					else if (OFDMMode == PSK4 || OFDMMode == PSK4S)
+					{
+						if (bytSymToSend < 2) // This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							OFDMSamples[p++] += intOFDMTemplate[intCarIndex][4 * bytSymToSend][n]; //  double the symbol value during template lookup for 4PSK. (skips over odd PSK 8 symbols)
+						else
+							OFDMSamples[p++] -= intOFDMTemplate[intCarIndex][4 * (bytSymToSend - 2)][n]; // subtract 2 from the symbol value before doubling and subtract value of table 
+					}
+					else if (OFDMMode == PSK16)
+					{
+						if (bytSymToSend < 8) // This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							OFDMSamples[p++] += intOFDMTemplate[intCarIndex][bytSymToSend][n]; //  double the symbol value during template lookup for 4PSK. (skips over odd PSK 8 symbols)
+						else
+							OFDMSamples[p++] -= intOFDMTemplate[intCarIndex][(bytSymToSend - 8)][n]; // subtract 2 from the symbol value before doubling and subtract value of table 
+					}
+					else
+					{
+						// This works for both 8PSK and 16QAM as 8PSK does'nt have the ampiltude bit
+						// 4bits/symbol (use table symbol values 0, 1, 2, 3, -0, -1, -2, -3) and modulate amplitude with MSB
+
+						if (bytSymToSend < 4)// This uses the symmetry of the symbols to reduce the table size by a factor of 2
+							OFDMSamples[p++] = intOFDMTemplate[intCarIndex][2 * bytSymToSend][n]; // double the symbol value during template lookup for 4PSK. (skips over odd PSK 8 symbols)
+						else if (bytSymToSend < 8)
+							OFDMSamples[p++] = -intOFDMTemplate[intCarIndex][2 * (bytSymToSend - 4)][n]; // subtract 4 from the symbol value before doubling and subtract value of table 
+						else if (bytSymToSend < 12)
+							OFDMSamples[p++] = dblOFDMCarRatio * intOFDMTemplate[intCarIndex][2 * (bytSymToSend - 8)][n]; // subtract 4 from the symbol value before doubling and subtract value of table         
+						else
+							OFDMSamples[p++] = -dblOFDMCarRatio * intOFDMTemplate[intCarIndex][2 * (bytSymToSend - 12)][n]; //  subtract 4 from the symbol value before doubling and subtract value of table 
+					}
+				}
+
+				// we now have the 216 samples. Copy last 24 to front as CP
+
+				memcpy(OFDMSamples, &OFDMSamples[216], 24 * 2);
+
+				// and add into the multicarrier value
+
+				for (q = 0; q < 240; q++)
+					OFDMFrame[q] += OFDMSamples[q];
+
+				// now do the next carrier
+
+				bytLastSym[intCarIndex] = bytSymToSend;
+				intCarIndex++;
+			}
+
+
+			// Done all carriers - send sample
+
+			for (q = 0; q < 240; q++)
+			{
+				intSample = OFDMFrame[q] / intNumCar;
+				ARDOPSampleSink((intSample * OFDMLevel) / 100);
+				OFDMFrame[q] = 0;
+			}
+
+		}
+		if (OFDMMode == PSK8)
+		{
+			intDataPtr += 3;
+			j += 2;				// We've used 3 bytes
+		}
+		else
+			intDataPtr++;
+	}
+
+	if (Type == PktFrameHeader)
+	{
+		// just sent packet header. Send rest in current mode
+
+		Type = 0;			// Prevent reentry
+
+		strcpy(strMod, &pktMod[pktMode][0]);
+		intDataBytesPerCar = pktDataLen + pktRSLen + 3;
+		intDataPtr = 11;		// Over Header
+		intNumCar = pktCarriers[pktMode];
+
+		switch (intNumCar)
+		{
+		case 1:
+			intCarStartIndex = 4;
+			//			dblCarScalingFactor = 1.0f; // Starting at 1500 Hz  (scaling factors determined emperically to minimize crest factor)  TODO:  needs verification
+			dblCarScalingFactor = 1.2f; // Starting at 1500 Hz  Selected to give < 13% clipped values yielding a PAPR = 1.6 Constellation Quality >98
+		case 2:
+			intCarStartIndex = 3;
+			//			dblCarScalingFactor = 0.53f;
+			if (strcmp(strMod, "16QAM") == 0)
+				dblCarScalingFactor = 0.67f; // Carriers at 1400 and 1600 Selected to give < 2.5% clipped values yielding a PAPR = 2.17, Constellation Quality >92
+			else
+				dblCarScalingFactor = 0.65f; // Carriers at 1400 and 1600 Selected to give < 4% clipped values yielding a PAPR = 2.0, Constellation Quality >95
+			break;
+		case 4:
+			intCarStartIndex = 2;
+			//			dblCarScalingFactor = 0.29f; // Starting at 1200 Hz
+			dblCarScalingFactor = 0.4f;  // Starting at 1200 Hz  Selected to give < 3% clipped values yielding a PAPR = 2.26, Constellation Quality >95
+			break;
+		case 8:
+			intCarStartIndex = 0;
+			//			dblCarScalingFactor = 0.17f; // Starting at 800 Hz
+			if (strcmp(strMod, "16QAM") == 0)
+				dblCarScalingFactor = 0.27f; // Starting at 800 Hz  Selected to give < 1% clipped values yielding a PAPR = 2.64, Constellation Quality >94
+			else
+				dblCarScalingFactor = 0.25f; // Starting at 800 Hz  Selected to give < 2% clipped values yielding a PAPR = 2.5, Constellation Quality >95
+		}
+		goto PktLoopBack;		// Reenter to send rest of variable length packet frame
+	}
+	ARDOPFlush();
+}
+
+
+
+// Function to compute a 16 bit CRC value and check it against the last 2 bytes of Data (the CRC)
+ 
+unsigned short int compute_crc(unsigned char *buf,int len);
+
+BOOL  CheckCRC16(unsigned char * Data, int Length)
+{
+	// returns TRUE if CRC matches, else FALSE
+    // For  CRC-16-CCITT =    x^16 + x^12 +x^5 + 1  intPoly = 1021 Init FFFF
+    // intSeed is the seed value for the shift register and must be in the range 0-0xFFFF
+
+	unsigned int CRC = GenCRC16(Data, Length);
+	unsigned short CRC2 =  compute_crc(Data, Length);
+	CRC2 ^= 0xffff;
+  
+	// Compare the register with the last two bytes of Data (the CRC) 
+    
+	if ((CRC >> 8) == Data[Length])
+		if ((CRC & 0xFF) == Data[Length + 1])
+			return TRUE;
+
+	return FALSE;
+}
+
+// Subroutine to get intDataLen bytes from outbound queue (bytDataToSend)
+
+
+
diff --git a/pktARDOP.c b/pktARDOP.c
new file mode 100644
index 0000000..4ad5559
--- /dev/null
+++ b/pktARDOP.c
@@ -0,0 +1,198 @@
+//
+//  Code for Packet using ARDOP like frames.
+//	
+//	This Module handles frame level stuff, and can be used
+//	with a KISS interface. Module pktSession inplements an
+//	ax.25 like Level 2, with dynamic parameter updating
+//
+// This uses Special Variable Length frames
+
+// Packet has header of 6 bytes  sent in 4FSK.500.100. 
+// Header is 6 bits Type 10 Bits Len 2 bytes CRC 2 bytes RS
+// Once we have that we receive the rest of the packet in the 
+// mode defined in the header.
+// Uses Frame Type 0xC0, symbolic name PktFrameHeader
+
+
+#ifdef WIN32
+#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
+#define _CRT_SECURE_NO_DEPRECATE
+
+#include <windows.h>
+#include <winioctl.h>
+#else
+#define HANDLE int
+#endif
+
+#include "ARDOPC.h"
+
+
+extern UCHAR KISSBUFFER[500]; // Long enough for stuffed KISS frame
+extern int KISSLength;
+
+
+VOID EncodePacket(UCHAR * Data, int Len);
+VOID AddTxByteDirect(UCHAR Byte);
+VOID AddTxByteStuffed(UCHAR Byte);
+unsigned short int compute_crc(unsigned char *buf,int len);
+void PacketStartTX();
+BOOL GetNextKISSFrame();
+VOID SendAckModeAck();
+
+extern unsigned char bytEncodedBytes[4500];		// I think the biggest is 600 bd 768 + overhead
+extern int EncLen;
+
+extern UCHAR PacketMon[360];
+extern int PacketMonMore;
+extern int PacketMonLength;
+
+#define ARDOPBufferSize 12000 * 100
+
+short ARDOPTXBuffer[4][12000 * 100];		// Enough to hold whole frame of samples
+
+int ARDOPTXLen[4] = { 0,0,0,0 };			// Length of frame
+int ARDOPTXPtr[4] = { 0,0,0,0 };			// Tx Pointer
+
+int pktBandwidth = 4;
+int pktMaxBandwidth = 8;
+int pktMaxFrame = 4;
+int pktPacLen = 80;
+
+int pktMode = 0;
+int pktRXMode;		// Currently receiving mode
+
+int pktDataLen;
+int pktRSLen;
+
+// Now use Mode number to encode type and bandwidth
+
+const char pktMod[16][12] = {
+	"4PSK/200",
+	"4FSK/500", "4PSK/500", "8PSK/500", "16QAM/500",
+	"4FSK/1000", "4PSK/1000", "8PSK/1000", "16QAM/1000",
+	"4FSK/2000", "4PSK/2000", "8PSK/2000", "16QAM/2000",
+};
+
+// Note FSK modes, though identified as 200 500 or 1000 actually
+// occupy 500, 1000 or 2000 BW
+
+const int pktBW[16] = {200,
+					500, 500, 500, 500,
+					1000, 1000, 1000, 1000,
+					2000, 2500, 2500, 2500};
+
+const int pktCarriers[16] = {
+					1,
+					1, 2, 2, 2,
+					2, 4, 4, 4,
+					4, 10, 10, 10};
+
+const BOOL pktFSK[16] = {0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0};
+
+int pktModeLen = 13;
+
+VOID PktARDOPEncode(UCHAR * Data, int Len, int Chan)
+{
+	unsigned char DataToSend[4];
+	int pktNumCar = pktCarriers[pktMode];
+
+	// Header now sent as 4FSK.500.100
+	// 6 Bits Mode, 10 Bits Length
+
+	// 2 Bytes Header 2 Bytes CRC 2 Bytes RS
+
+	if (Len > 1023)
+		return;
+
+	DataToSend[0] = (pktMode << 2)|(Len >> 8);
+	DataToSend[1] = Len & 0xff;
+	
+	// Calc Data and RS Length
+
+	pktDataLen = (Len + (pktNumCar - 1))/pktNumCar; // Round up
+
+	pktRSLen = pktDataLen >> 2;			// Try 25% for now
+
+	if (pktRSLen & 1)
+		pktRSLen++;						// Odd RS bytes no use
+
+	if (pktRSLen < 4)
+		pktRSLen = 4;					// At least 4
+
+	// Encode Header
+	
+	EncLen = EncodeFSKData(PktFrameHeader, DataToSend, 2, bytEncodedBytes);
+	
+	// Encode Data
+
+	if (pktFSK[pktMode])
+		EncodeFSKData(PktFrameData, Data, Len, &bytEncodedBytes[EncLen]);
+	else
+		EncodePSKData(PktFrameData, Data, Len, &bytEncodedBytes[EncLen]);
+
+	// Header is FSK
+	
+	Mod4FSKDataAndPlay(bytEncodedBytes, EncLen, intCalcLeader, Chan);  // Modulate Data frame 
+}
+
+// Called when link idle to see if any packet frames to send
+
+void PktARDOPStartTX()
+{
+/*
+if (GetNextKISSFrame() == FALSE)
+		return;			// nothing to send
+	
+	while (TRUE)				// loop till we run out of packets
+	{
+		switch(KISSBUFFER[0])
+		{
+		case 0:			// Normal Data
+
+			WriteDebugLog(LOGALERT, "Sending Packet Frame Len %d", KISSLength - 1); 
+
+			PktARDOPEncode(KISSBUFFER + 1, KISSLength - 1);
+
+			// Trace it
+
+			if (PacketMonLength == 0)	// Ingore if one queued
+			{
+				PacketMon[0] = 0x80;		// TX Flag
+				memcpy(&PacketMon[1], &KISSBUFFER[1], KISSLength);
+	
+				PacketMonLength = KISSLength;
+			}
+
+			break;
+
+		case 6:			// HW Paramters. Set Mode and Bandwidth
+
+			pktMode = KISSBUFFER[1]; 
+			break;
+		
+		case 12:
+		
+		// Ackmode frame. Return ACK Bytes (first 2) to host when TX complete
+		
+			WriteDebugLog(LOGALERT, "Sending Packet Frame Len %d", KISSLength - 3); 
+			PktARDOPEncode(KISSBUFFER + 3, KISSLength - 3);
+
+			// Returns when Complete so can send ACK
+
+			SendAckModeAck();
+			break;
+		}
+
+		// See if any more
+
+		if (GetNextKISSFrame() == FALSE)
+			break;			// no more to send
+	}
+*/
+}
+
+VOID SendAckModeAck()
+{
+
+}
+
diff --git a/pulse.c b/pulse.c
new file mode 100644
index 0000000..cd273c5
--- /dev/null
+++ b/pulse.c
@@ -0,0 +1,518 @@
+// Pulse Audio bits for QtSoundmodem
+
+
+#include <stdio.h>
+#include <string.h>
+#include <pulse/pulseaudio.h>
+#include <pulse/simple.h>
+#include <pulse/error.h>
+
+#define UNUSED(x) (void)(x)
+
+extern char CaptureNames[16][256];
+extern char PlaybackNames[16][256];
+
+extern int PlaybackCount;
+extern int CaptureCount;
+
+#include <dlfcn.h>
+
+void *handle = NULL;
+void *shandle = NULL;
+
+pa_mainloop * (*ppa_mainloop_new)(void);
+pa_mainloop_api * (*ppa_mainloop_get_api)(pa_mainloop * m);
+pa_context * (*ppa_context_new)(pa_mainloop_api *mainloop, const char *name);
+int (*ppa_context_connect)(pa_context * c, const char * server, pa_context_flags_t flags, const pa_spawn_api * 	api);
+void (*ppa_context_set_state_callback)(pa_context * c, pa_context_notify_cb_t cb, void * userdata);
+int (*ppa_mainloop_iterate)(pa_mainloop * m, int block, int * retval);
+void (*ppa_mainloop_free)(pa_mainloop * m);
+void (*ppa_context_disconnect)(pa_context * c);
+void (*ppa_context_unref)(pa_context * c);
+const char * (*ppa_strerror)(int error);
+pa_context_state_t(*ppa_context_get_state)(const pa_context *c);
+pa_operation * (*ppa_context_get_sink_info_list)(pa_context * c, pa_sink_info_cb_t cb, void * userdata);
+pa_operation * (*ppa_context_get_source_info_list)(pa_context * c, pa_source_info_cb_t cb, void * userdata);	
+void (*ppa_operation_unref)(pa_operation * o);
+pa_operation_state_t(*ppa_operation_get_state)(const pa_operation * o);
+
+
+pa_simple * (*ppa_simple_new)(const char * 	server,
+	const char * 	name,
+	pa_stream_direction_t 	dir,
+	const char * 	dev,
+	const char * 	stream_name,
+	const pa_sample_spec * 	ss,
+	const pa_channel_map * 	map,
+	const pa_buffer_attr * 	attr,
+	int * 	error) = NULL;
+
+pa_usec_t(*ppa_simple_get_latency)(pa_simple * s, int * error);
+int(*ppa_simple_read)(pa_simple * s, void * data, size_t bytes, int * error);
+int(*ppa_simple_write)(pa_simple * s, void * data, size_t bytes, int * error);
+
+int(*ppa_simple_flush)(pa_simple * s, int * error);
+void(*ppa_simple_free)(pa_simple * s);
+int(*ppa_simple_drain)(pa_simple * s, int * error);
+
+void * getModule(void *handle, char * sym)
+{
+	return dlsym(handle, sym);
+}
+
+void * initPulse()
+{
+	// Load the pulse libraries
+
+	if (handle)
+		return handle;			// already done
+
+	handle = dlopen("libpulse.so", RTLD_LAZY);
+
+	if (!handle)
+	{
+		fputs(dlerror(), stderr);
+		return NULL;
+	}
+
+	if ((ppa_mainloop_new = getModule(handle, "pa_mainloop_new")) == NULL) return NULL;
+	if ((ppa_mainloop_get_api = getModule(handle, "pa_mainloop_get_api")) == NULL) return NULL;
+	if ((ppa_context_new = getModule(handle, "pa_context_new")) == NULL) return NULL;
+	if ((ppa_context_connect = getModule(handle, "pa_context_connect")) == NULL) return NULL;
+	if ((ppa_context_set_state_callback = getModule(handle, "pa_context_set_state_callback")) == NULL) return NULL;
+	if ((ppa_mainloop_iterate = getModule(handle, "pa_mainloop_iterate")) == NULL) return NULL;
+	if ((ppa_mainloop_free = getModule(handle, "pa_mainloop_free")) == NULL) return NULL;
+	if ((ppa_context_disconnect = getModule(handle, "pa_context_disconnect")) == NULL) return NULL;
+	if ((ppa_context_unref = getModule(handle, "pa_context_unref")) == NULL) return NULL;
+	if ((ppa_strerror = getModule(handle, "pa_strerror")) == NULL) return NULL;
+	if ((ppa_context_get_state = getModule(handle, "pa_context_get_state")) == NULL) return NULL;
+	if ((ppa_context_get_sink_info_list = getModule(handle, "pa_context_get_sink_info_list")) == NULL) return NULL;
+	if ((ppa_context_get_source_info_list = getModule(handle, "pa_context_get_source_info_list")) == NULL) return NULL;
+	if ((ppa_operation_unref = getModule(handle, "pa_operation_unref")) == NULL) return NULL;
+	if ((ppa_operation_get_state = getModule(handle, "pa_operation_get_state")) == NULL) return NULL;
+
+	shandle = dlopen("libpulse-simple.so", RTLD_LAZY);
+
+	if (!shandle)
+	{
+		fputs(dlerror(), stderr);
+		return NULL;
+	}
+
+	if ((ppa_simple_new = getModule(shandle, "pa_simple_new")) == NULL) return NULL;
+	if ((ppa_simple_get_latency = getModule(shandle, "pa_simple_get_latency")) == NULL) return NULL;
+	if ((ppa_simple_read = dlsym(shandle, "pa_simple_read")) == NULL) return NULL;
+	if ((ppa_simple_write = dlsym(shandle, "pa_simple_write")) == NULL) return NULL;
+	if ((ppa_simple_flush = dlsym(shandle, "pa_simple_flush")) == NULL) return NULL;
+	if ((ppa_simple_drain = dlsym(shandle, "pa_simple_drain")) == NULL) return NULL;
+	if ((ppa_simple_free = dlsym(shandle, "pa_simple_free")) == NULL) return NULL;
+
+	return shandle;
+}
+
+
+
+
+
+// Field list is here: http://0pointer.de/lennart/projects/pulseaudio/doxygen/structpa__sink__info.html
+typedef struct pa_devicelist {
+	uint8_t initialized;
+	char name[512];
+	uint32_t index;
+	char description[256];
+} pa_devicelist_t;
+
+void pa_state_cb(pa_context *c, void *userdata);
+void pa_sinklist_cb(pa_context *c, const pa_sink_info *l, int eol, void *userdata);
+void pa_sourcelist_cb(pa_context *c, const pa_source_info *l, int eol, void *userdata);
+int pa_get_devicelist(pa_devicelist_t *input, pa_devicelist_t *output);
+
+// This callback gets called when our context changes state.  We really only
+// care about when it's ready or if it has failed
+void pa_state_cb(pa_context *c, void *userdata) {
+	pa_context_state_t state;
+	int *pa_ready = userdata;
+
+	state = ppa_context_get_state(c);
+	switch (state) {
+		// There are just here for reference
+	case PA_CONTEXT_UNCONNECTED:
+	case PA_CONTEXT_CONNECTING:
+	case PA_CONTEXT_AUTHORIZING:
+	case PA_CONTEXT_SETTING_NAME:
+	default:
+		break;
+	case PA_CONTEXT_FAILED:
+	case PA_CONTEXT_TERMINATED:
+		*pa_ready = 2;
+		break;
+	case PA_CONTEXT_READY:
+		*pa_ready = 1;
+		break;
+	}
+}
+
+// pa_mainloop will call this function when it's ready to tell us about a sink.
+// Since we're not threading, there's no need for mutexes on the devicelist
+// structure
+void pa_sinklist_cb(pa_context *c, const pa_sink_info *l, int eol, void *userdata)
+{
+	UNUSED(c);
+
+	pa_devicelist_t *pa_devicelist = userdata;
+	int ctr = 0;
+
+	// If eol is set to a positive number, you're at the end of the list
+	if (eol > 0) {
+		return;
+	}
+
+	// We know we've allocated 16 slots to hold devices.  Loop through our
+	// structure and find the first one that's "uninitialized."  Copy the
+	// contents into it and we're done.  If we receive more than 16 devices,
+	// they're going to get dropped.  You could make this dynamically allocate
+	// space for the device list, but this is a simple example.
+	for (ctr = 0; ctr < 16; ctr++) {
+		if (!pa_devicelist[ctr].initialized) {
+			strncpy(pa_devicelist[ctr].name, l->name, 511);
+			strncpy(pa_devicelist[ctr].description, l->description, 255);
+			pa_devicelist[ctr].index = l->index;
+			pa_devicelist[ctr].initialized = 1;
+			break;
+		}
+	}
+}
+
+// See above.  This callback is pretty much identical to the previous
+void pa_sourcelist_cb(pa_context *c, const pa_source_info *l, int eol, void *userdata) 
+{
+	UNUSED(c);
+
+	pa_devicelist_t *pa_devicelist = userdata;
+	int ctr = 0;
+
+	if (eol > 0) {
+		return;
+	}
+
+	for (ctr = 0; ctr < 16; ctr++) {
+		if (!pa_devicelist[ctr].initialized) {
+			strncpy(pa_devicelist[ctr].name, l->name, 511);
+			strncpy(pa_devicelist[ctr].description, l->description, 255);
+			pa_devicelist[ctr].index = l->index;
+			pa_devicelist[ctr].initialized = 1;
+			break;
+		}
+	}
+}
+
+int pa_get_devicelist(pa_devicelist_t *input, pa_devicelist_t *output) {
+	// Define our pulse audio loop and connection variables
+	pa_mainloop *pa_ml;
+	pa_mainloop_api *pa_mlapi;
+	pa_operation *pa_op;
+	pa_context *pa_ctx;
+
+
+	// We'll need these state variables to keep track of our requests
+	int state = 0;
+	int pa_ready = 0;
+
+	// Initialize our device lists
+	memset(input, 0, sizeof(pa_devicelist_t) * 16);
+	memset(output, 0, sizeof(pa_devicelist_t) * 16);
+
+	// Create a mainloop API and connection to the default server
+	pa_ml = ppa_mainloop_new();
+	pa_mlapi = ppa_mainloop_get_api(pa_ml);
+	pa_ctx = ppa_context_new(pa_mlapi, "test");
+
+	// This function connects to the pulse server
+	ppa_context_connect(pa_ctx, NULL, 0, NULL);
+
+
+	// This function defines a callback so the server will tell us it's state.
+	// Our callback will wait for the state to be ready.  The callback will
+	// modify the variable to 1 so we know when we have a connection and it's
+	// ready.
+	// If there's an error, the callback will set pa_ready to 2
+	ppa_context_set_state_callback(pa_ctx, pa_state_cb, &pa_ready);
+
+	// Now we'll enter into an infinite loop until we get the data we receive
+	// or if there's an error
+	for (;;) {
+		// We can't do anything until PA is ready, so just iterate the mainloop
+		// and continue
+		if (pa_ready == 0) {
+			ppa_mainloop_iterate(pa_ml, 1, NULL);
+			continue;
+		}
+		// We couldn't get a connection to the server, so exit out
+		if (pa_ready == 2) {
+			ppa_context_disconnect(pa_ctx);
+			ppa_context_unref(pa_ctx);
+			ppa_mainloop_free(pa_ml);
+			return -1;
+		}
+		// At this point, we're connected to the server and ready to make
+		// requests
+		switch (state) {
+			// State 0: we haven't done anything yet
+		case 0:
+			// This sends an operation to the server.  pa_sinklist_info is
+			// our callback function and a pointer to our devicelist will
+			// be passed to the callback The operation ID is stored in the
+			// pa_op variable
+			pa_op = ppa_context_get_sink_info_list(pa_ctx,
+				pa_sinklist_cb,
+				output
+			);
+
+			// Update state for next iteration through the loop
+			state++;
+			break;
+		case 1:
+			// Now we wait for our operation to complete.  When it's
+			// complete our pa_output_devicelist is filled out, and we move
+			// along to the next state
+			if (ppa_operation_get_state(pa_op) == PA_OPERATION_DONE) {
+				ppa_operation_unref(pa_op);
+
+				// Now we perform another operation to get the source
+				// (input device) list just like before.  This time we pass
+				// a pointer to our input structure
+				pa_op = ppa_context_get_source_info_list(pa_ctx,
+					pa_sourcelist_cb,
+					input
+				);
+				// Update the state so we know what to do next
+				state++;
+			}
+			break;
+		case 2:
+			if (ppa_operation_get_state(pa_op) == PA_OPERATION_DONE) {
+				// Now we're done, clean up and disconnect and return
+				ppa_operation_unref(pa_op);
+				ppa_context_disconnect(pa_ctx);
+				ppa_context_unref(pa_ctx);
+				ppa_mainloop_free(pa_ml);
+				return 0;
+			}
+			break;
+		default:
+			// We should never see this state
+			fprintf(stderr, "in state %d\n", state);
+			return -1;
+		}
+		// Iterate the main loop and go again.  The second argument is whether
+		// or not the iteration should block until something is ready to be
+		// done.  Set it to zero for non-blocking.
+		ppa_mainloop_iterate(pa_ml, 1, NULL);
+	}
+}
+
+int listpulse()
+{
+	int ctr;
+	
+	PlaybackCount = 0;
+	CaptureCount = 0;
+
+
+	// This is where we'll store the input device list
+	pa_devicelist_t pa_input_devicelist[16];
+
+	// This is where we'll store the output device list
+	pa_devicelist_t pa_output_devicelist[16];
+
+	if (pa_get_devicelist(pa_input_devicelist, pa_output_devicelist) < 0) {
+		fprintf(stderr, "failed to get device list\n");
+		return 1;
+	}
+
+	printf("Pulse Playback Devices\n\n");
+
+	for (ctr = 0; ctr < 16; ctr++)
+	{
+		if (!pa_output_devicelist[ctr].initialized)
+			break;
+
+		printf("Name: %s\n", pa_output_devicelist[ctr].name);
+		strcpy(&PlaybackNames[PlaybackCount++][0], pa_output_devicelist[ctr].name);
+
+	}
+
+	printf("Pulse Capture Devices\n\n");
+
+	for (ctr = 0; ctr < 16; ctr++)
+	{
+		if (!pa_input_devicelist[ctr].initialized)
+			break;
+
+		printf("Name: %s\n", pa_input_devicelist[ctr].name);
+		strcpy(&CaptureNames[CaptureCount++][0], pa_input_devicelist[ctr].name);
+	}
+	return 0;
+}
+
+
+pa_simple * OpenPulsePlayback(char * Server)
+{
+	pa_simple * s;
+	pa_sample_spec ss;
+	ss.format = PA_SAMPLE_S16NE;
+	ss.channels = 2;
+	ss.rate = 12000;
+	int error;
+
+
+	s = (*ppa_simple_new)(NULL,               // Use the default server.
+		"QtSM",           // Our application's name.
+		PA_STREAM_PLAYBACK,
+		Server,
+
+		"Playback",         // Description of our stream.
+		&ss,                // Our sample format.
+		NULL,               // Use default channel map
+		NULL,               // Use default buffering attributes.
+		&error
+	);
+
+	if (s == 0)
+		printf("Playback pa_simple_new() failed: %s\n", ppa_strerror(error));
+	else
+		printf("Playback Handle %x\n", (unsigned int)s);
+
+	return s;
+}
+
+pa_simple * OpenPulseCapture(char * Server)
+{
+	pa_simple * s;
+	pa_sample_spec ss;
+	ss.format = PA_SAMPLE_S16NE;
+	ss.channels = 2;
+	ss.rate = 12000;
+	int error;
+
+	pa_buffer_attr attr;
+
+	attr.maxlength = -1;
+	attr.tlength = -1;
+	attr.prebuf = -1;
+	attr.minreq = -1;
+	attr.fragsize = 512;
+
+
+	s = (*ppa_simple_new)(NULL,               // Use the default server.
+		"QtSM",           // Our application's name.
+		PA_STREAM_RECORD,
+		Server,
+		"Capture",            // Description of our stream.
+		&ss,                // Our sample format.
+		NULL,               // Use default channel map
+		&attr, 
+		&error
+	);
+
+	if (s == 0)
+		printf("Capture pa_simple_new() failed: %s\n", ppa_strerror(error));
+	else
+		printf("Capture Handle %x\n", (unsigned int)s);
+
+	return s;
+}
+
+pa_simple * spc = 0;			// Capure Handle
+pa_simple * spp = 0;			// Playback Handle
+
+int pulse_audio_open(char * CaptureDevice, char * PlaybackDevice)
+{
+	pa_usec_t latency;
+	int error;
+		
+	spc = OpenPulseCapture(CaptureDevice);
+	spp = OpenPulsePlayback(PlaybackDevice);
+
+	if (spc && spp)
+	{
+		if ((latency = ppa_simple_get_latency(spc, &error)) == (pa_usec_t)-1) {
+			printf("cap simple_get_latency() failed: %s\n", ppa_strerror(error));
+		}
+		else
+			printf("cap %0.0f usec    \n", (float)latency);
+
+		if ((latency = ppa_simple_get_latency(spp, &error)) == (pa_usec_t)-1) {
+			printf("play simple_get_latency() failed: %s\n", ppa_strerror(error));
+		}
+		else
+			printf("play %0.0f usec    \n", (float)latency);
+
+		return 1;
+	}
+	else
+		return 0;
+
+}
+
+void pulse_audio_close()
+{
+	int error;
+
+	ppa_simple_flush(spc, &error);
+	ppa_simple_free(spc);
+	spc = 0;
+
+	ppa_simple_drain(spp, &error);
+	ppa_simple_free(spp);
+	spp = 0;
+}
+
+
+int pulse_read(short * samples, int nSamples)
+{
+	int error;
+	int nBytes = nSamples * 4;
+
+	if (spc == 0)
+		return 0;
+
+	if (ppa_simple_read(spc, samples, nBytes, &error) < 0)
+	{
+		printf("Pulse pa_simple_read() failed: %s\n", ppa_strerror(error));
+		return 0;
+	}
+
+	return nSamples;
+}
+
+
+int pulse_write(short * ptr, int len)
+{
+	int k;
+	int error;
+
+	if (spp == 0)
+		return 0;
+
+	k = ppa_simple_write(spp, ptr, len * 4, &error);
+
+	if (k < 0)
+	{
+		printf("Pulse pa_simple_write() failed: %s\n", ppa_strerror(error));
+		return -1;
+	}
+
+	return 0;
+}
+
+void pulse_flush()
+{
+	int error;
+
+	if (spp == 0)
+		return;
+
+	if (ppa_simple_flush(spp, &error) < 0)
+		printf("Pulse pa_simple_flush() failed: %s\n", ppa_strerror(error));
+}
diff --git a/resource1.h b/resource1.h
new file mode 100644
index 0000000..7ca31da
--- /dev/null
+++ b/resource1.h
@@ -0,0 +1,14 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by Resource.rc
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif
diff --git a/rs.c b/rs.c
new file mode 100644
index 0000000..e1b5c40
--- /dev/null
+++ b/rs.c
@@ -0,0 +1,214 @@
+/* 
+ * Reed Solomon Encoder/Decoder 
+ *
+ * Copyright Henry Minsky (hqm@alum.mit.edu) 1991-2009
+ *
+ * This software library is licensed under terms of the GNU GENERAL
+ * PUBLIC LICENSE
+ *
+ * RSCODE is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RSCODE is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Rscode.  If not, see <http://www.gnu.org/licenses/>.
+
+ * Commercial licensing is available under a separate license, please
+ * contact author for details.
+ *
+ * Source code is available at http://rscode.sourceforge.net
+ */
+
+#define LOGEMERGENCY 0 
+#define LOGALERT 1
+#define LOGCRIT 2 
+#define LOGERROR 3 
+#define LOGWARNING 4
+#define LOGNOTICE 5
+#define LOGINFO 6
+#define LOGDEBUG 7
+
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include "ecc.h"
+
+void Debugprintf(const char * format, ...);
+
+/* Encoder parity bytes */
+int pBytes[MAXDEG];
+
+/* Decoder syndrome bytes */
+int synBytes[MAXDEG];
+
+/* generator polynomial */
+int genPoly[MAXDEG*2];
+
+int DEBUG = FALSE; //RUE;
+
+static void
+compute_genpoly (int nbytes, int genpoly[]);
+
+/* Initialize lookup tables, polynomials, etc. */
+void
+initialize_ecc ()
+{
+  /* Initialize the galois field arithmetic tables */
+    init_galois_tables();
+
+    /* Compute the encoder generator polynomial */
+    compute_genpoly(NPAR, genPoly);
+}
+
+void
+zero_fill_from (unsigned char buf[], int from, int to)
+{
+  int i;
+  for (i = from; i < to; i++) buf[i] = 0;
+}
+
+/* debugging routines */
+void
+print_parity (void)
+{ 
+  int i;
+  Debugprintf("Parity Bytes: ");
+  for (i = 0; i < NPAR; i++) 
+	  Debugprintf("[%d]:%x, ",i,pBytes[i]);
+  Debugprintf("\n");
+}
+
+
+void
+print_syndrome (void)
+{ 
+  int i;
+  Debugprintf("Syndrome Bytes: ");
+  for (i = 0; i < NPAR; i++) 
+	  Debugprintf("[%d]:%x, ",i,synBytes[i]);
+  Debugprintf("\n");
+}
+
+
+/**********************************************************
+ * Reed Solomon Decoder 
+ *
+ * Computes the syndrome of a codeword. Puts the results
+ * into the synBytes[] array.
+ */
+ 
+void
+decode_data(unsigned char data[], int nbytes)
+{
+	int i, j, sum;
+	for (j = 0; j < NPAR;  j++)
+	{
+		sum	= 0;
+		for (i = 0; i < nbytes; i++)
+		{
+			sum = data[i] ^ gmult(gexp[j+1], sum);
+		}
+		
+		synBytes[j]  = sum;
+
+//	Debugprintf("%d %d %d\r\n", i, synBytes[i], index_of[s[i]]);
+
+	}
+}
+
+
+/* Check if the syndrome is zero */
+int
+check_syndrome (void)
+{
+ int i, nz = 0;
+ for (i =0 ; i < NPAR; i++) {
+  if (synBytes[i] != 0) {
+      nz = 1;
+      break;
+  }
+ }
+ return nz;
+}
+
+
+void
+debug_check_syndrome (void)
+{	
+  int i;
+	
+  for (i = 0; i < 3; i++) {
+    Debugprintf(" inv log S[%d]/S[%d] = %d\n", i, i+1, 
+	   glog[gmult(synBytes[i], ginv(synBytes[i+1]))]);
+  }
+}
+
+
+/* Create a generator polynomial for an n byte RS code. 
+ * The coefficients are returned in the genPoly arg.
+ * Make sure that the genPoly array which is passed in is 
+ * at least n+1 bytes long.
+ */
+
+static void
+compute_genpoly (int nbytes, int genpoly[])
+{
+  int i, tp[256], tp1[256];
+	
+  /* multiply (x + a^n) for n = 1 to nbytes */
+
+  zero_poly(tp1);
+  tp1[0] = 1;
+
+  for (i = 1; i <= nbytes; i++) {
+    zero_poly(tp);
+    tp[0] = gexp[i];		/* set up x+a^n */
+    tp[1] = 1;
+	  
+    mult_polys(genpoly, tp, tp1);
+    copy_poly(tp1, genpoly);
+  }
+}
+
+/* Simulate a LFSR with generator polynomial for n byte RS code. 
+ * Pass in a pointer to the data array, and amount of data. 
+ *
+ * The parity bytes are deposited into pBytes[], and the whole message
+ * and parity are copied to dest to make a codeword.
+ * 
+ */
+
+void
+encode_data (unsigned char msg[], int nbytes, unsigned char dst[])
+{
+	int i ,dbyte, j;
+	unsigned char LFSR[MAXNPAR+1];
+
+	for(i=0; i < NPAR+1; i++)
+		LFSR[i]=0;
+
+ // for (i = 0; i < nbytes; i++)
+	for (i = nbytes-1; i >= 0; i--)		// Order reversed for compatibility wiyh Rick' Code
+	{
+		dbyte = msg[i] ^ LFSR[NPAR-1];
+		for (j = NPAR-1; j > 0; j--)
+		{
+			LFSR[j] = LFSR[j-1] ^ gmult(genPoly[j], dbyte);
+		}
+		LFSR[0] = gmult(genPoly[0], dbyte);
+	}
+
+	// return the parity bytes
+  
+	memcpy(dst, LFSR, NPAR);
+}
+	
+
+
diff --git a/rsid.c b/rsid.c
new file mode 100644
index 0000000..8af1171
--- /dev/null
+++ b/rsid.c
@@ -0,0 +1,733 @@
+//
+// Derived from fldigi rdid.cxx by John G8BPQ September 22
+//
+// ----------------------------------------------------------------------------
+//
+//	rsid.cxx
+//
+// Copyright (C) 2008-2012
+//		Dave Freese, W1HKJ
+// Copyright (C) 2009-2012
+//		Stelios Bounanos, M0GLD
+// Copyright (C) 2012
+//		John Douyere, VK2ETA
+//
+// This file is part of fldigi.
+//
+// Fldigi is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Fldigi is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS for (A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with fldigi.  If not, see <http://www.gnu.org/licenses/>.
+// ----------------------------------------------------------------------------
+
+
+#include <malloc.h>
+
+#include "rsid.h"
+#include <math.h>
+#include "fftw3.h"
+
+#include "UZ7HOStuff.h"
+
+#define M_PI       3.1415926f
+
+#define true 1
+#define false 0
+
+#define TRUE 1
+#define FALSE 0
+
+#define WORD unsigned int
+#define BYTE unsigned char
+#define byte unsigned char
+
+void SampleSink(int LR, short Sample);
+void Flush();
+void extSetOffset(int rxOffset);
+void mon_rsid(int snd_ch, char * RSID);
+
+extern int RSID_SABM[4];
+extern int RSID_UI[4];
+extern int RSID_SetModem[4];
+
+struct RSIDs {
+	unsigned short rs;
+	trx_mode mode;
+	const char* name;
+};
+
+extern int SampleNo;
+extern int Number;
+
+int len;
+int symlen;
+
+#include "rsid_defs.cxx"
+
+#define RSWINDOW 1
+
+
+const int Squares[] = {
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
+	0, 2, 4, 6, 8,10,12,14, 9,11,13,15, 1, 3, 5, 7,
+	0, 3, 6, 5,12,15,10, 9, 1, 2, 7, 4,13,14,11, 8,
+	0, 4, 8,12, 9,13, 1, 5,11,15, 3, 7, 2, 6,10,14,
+	0, 5,10,15,13, 8, 7, 2, 3, 6, 9,12,14,11, 4, 1,
+	0, 6,12,10, 1, 7,13,11, 2, 4,14, 8, 3, 5,15, 9,
+	0, 7,14, 9, 5, 2,11,12,10,13, 4, 3,15, 8, 1, 6,
+	0, 8, 9, 1,11, 3, 2,10,15, 7, 6,14, 4,12,13, 5,
+	0, 9,11, 2,15, 6, 4,13, 7,14,12, 5, 8, 1, 3,10,
+	0,10,13, 7, 3, 9,14, 4, 6,12,11, 1, 5,15, 8, 2,
+	0,11,15, 4, 7,12, 8, 3,14, 5, 1,10, 9, 2, 6,13,
+	0,12, 1,13, 2,14, 3,15, 4, 8, 5, 9, 6,10, 7,11,
+	0,13, 3,14, 6,11, 5, 8,12, 1,15, 2,10, 7, 9, 4,
+	0,14, 5,11,10, 4,15, 1,13, 3, 8, 6, 7, 9, 2,12,
+	0,15, 7, 8,14, 1, 9, 6, 5,10, 2,13,11, 4,12, 3
+};
+
+const int indices[] = {
+	2, 4, 8, 9, 11, 15, 7, 14, 5, 10, 13, 3
+};
+
+int rmode, rmode2;
+
+void Encode(int code, unsigned char *rsid)
+{
+	rsid[0] = code >> 8;
+	rsid[1] = (code >> 4) & 0x0f;
+	rsid[2] = code & 0x0f;
+	for (int i = 3; i < RSID_NSYMBOLS; i++)
+		rsid[i] = 0;
+	for (int i = 0; i < 12; i++) {
+		for (int j = RSID_NSYMBOLS - 1; j > 0; j--)
+			rsid[j] = rsid[j - 1] ^ Squares[(rsid[j] << 4) + indices[i]];
+		rsid[0] = Squares[(rsid[0] << 4) + indices[i]];
+	}
+}
+
+//=============================================================================
+// transmit rsid code for current mode
+//=============================================================================
+
+float sampd;
+short samps;
+
+// Each symbol is transmitted using MFSK modulation.There are 16 possibilities of frequencies separated by
+// 11025 / 1024 = 10.766 Hz. Each symbol transmission being done on only one frequency for a duration equal
+// to 1024 / 11025 x 1000 = 92.88 ms.The entire RSID sequence of 15 symbols is transmitted in 15 x 1024 / 11025 = 1393 ms.
+
+// The analysis is based on a Fast Fourier transform of 2048 points at 11025 samples / sec, regularly done at each
+// semi - step of time(46.44 ms).
+
+// For each semi - step of time(46.44 ms) and for each semi - step of frequency(5.38 Hz),the program attempts to detect 
+// an RSID extending for the last 1.393 seconds.So each second, about 8500 possible RSID
+// (depending on the selected bandwidth) are tested
+
+// But we are working at 12000 samples/sec so 92.88 mS = 1114.56 samples, so I think we run fft every 557.28 samples (46.44 ms)
+
+// How do we get 5.28 Hz buckets at 12000? Can we run fft of length 2,272.727 (say 2273) length?
+
+// Actually not sure we need to. We can interpolate freq and so long as we can get within a few Hz should be ok
+
+
+// Spec says tone spacing ia 10.766 (11025 / 1024)
+
+double toneinterval = RSID_SAMPLE_RATE / 1024;
+
+// fftw library interface
+
+static fftwf_complex * in = 0, *out;
+static fftwf_plan p;
+
+#define N 4096
+
+short savedSamples[N + 1000];			// At least N + max input length (currently uses 512);
+int savedSampLen = 0;
+
+int firstBin = (300 * 2048) / 12000;	// Search Lowest (300 Hz)
+int lastBin = (3000 * 2048) / 12000;;	// Seach Highest (3000 Hz)
+
+double avmag;			// Average magnitude over spectrum
+
+int	fft_buckets[RSID_NTIMES][RSID_FFT_SIZE];			// This seems to have last 30 sets of values
+
+float aFFTAmpl[RSID_FFT_SIZE];							// Amplitude samples from fft
+
+// Table of precalculated Reed Solomon symbols
+unsigned char pCodes1[256][16];
+unsigned char pCodes2[256][16];
+
+int found1;
+int found2;
+
+double rsid_secondary_time_out;
+
+
+int bPrevTimeSliceValid;
+int	iPrevDistance;
+int	iPrevBin;
+int	iPrevSymbol;
+
+int	fft_buckets[RSID_NTIMES][RSID_FFT_SIZE];
+
+int	bPrevTimeSliceValid2;
+int	iPrevDistance2;
+int	iPrevBin2;
+int	iPrevSymbol2;
+
+int hamming_resolution = 2;
+
+int needRSID[4] = { 0,0,0,0 };				// Request TX scheduler to send RSID
+
+int needSetOffset[4] = { 0,0,0,0 };
+
+void CalculateBuckets(const float *pSpectrum, int iBegin, int iEnd);
+void Search();
+
+void RSIDinitfft()
+{
+	unsigned char * c;
+
+	in = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	out = (fftwf_complex*)fftwf_malloc(sizeof(fftwf_complex) * N);
+	p = fftwf_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_MEASURE);
+
+	// Initialization  of assigned mode/submode IDs.
+
+	for (int i = 0; i < rsid_ids_size1; i++)
+	{
+		c = &pCodes1[i][0];
+		Encode(rsid_ids_1[i].rs, c);
+	}
+}
+
+void reset()
+{
+	iPrevDistance = iPrevDistance2 = 99;
+	bPrevTimeSliceValid = bPrevTimeSliceValid2 = false;
+	found1 = found2 = false;
+	rsid_secondary_time_out = 0;
+}
+
+// Compute fft of last  557 * 2 values and return bucket number of peak
+
+static int dofft(short * inp, float * mags)
+{
+	int i;
+	float mag;
+	float max = 0;
+	int maxindex = 0;
+
+	memset(in, 0, sizeof(fftwf_complex) * N);
+	avmag = 0;
+
+
+	for (i = 0; i < 512 * 2; i++)
+	{
+		//		in[i][0] = inp[i] * 1.0f;
+
+		// Hamming Window
+
+		in[i][0] = inp[i];
+		in[i][0] = (float)((0.53836f - (0.46164f * cos(2 * M_PI * i / (float)(557.0 * 2.0 - 1)))) * inp[i]);
+		in[i][1] = 0;
+	}
+
+	fftwf_execute(p);
+
+	for (i = firstBin; i < lastBin; i++)						// only need buckets up to 3000
+	{
+		// Convert Real/Imag to amplitude
+
+		mag = powf(out[i][0], 2);
+		mag += powf(out[i][1], 2);
+		mag = sqrtf(mag);
+		mags[i] = mag;
+		avmag += mag;
+
+		if (mag > max)
+		{
+			max = mag;
+			maxindex = i;
+		}
+	}
+	avmag /= (lastBin - firstBin);
+	return maxindex;
+}
+
+void RSIDProcessSamples(short * Samples, int nSamples)
+{
+	// Add to saved samples, and if we have more than 557 run FFT and save remaining
+
+	// We process last 557 + new 557 + zero padding
+
+	// Trying with 512 @ 12000
+
+	// savedSampLen is number of shorts not bytes
+
+	if (in == 0)			// Not initialised
+		return;
+
+	memcpy(&savedSamples[savedSampLen], Samples, nSamples * sizeof(short));
+	savedSampLen += nSamples;
+
+	if (savedSampLen >= 512 * 2)				// Old + New
+	{
+		int peakBucket;
+
+		peakBucket = dofft(savedSamples, aFFTAmpl);
+
+		if (peakBucket > firstBin && peakBucket < lastBin)
+		{
+//			float freq;
+//			freq = peakBucket * 12000.0f / 2048;
+//			Debugprintf("%d %f %f %f", peakBucket, freq, aFFTAmpl[peakBucket], avmag);
+		}
+
+		savedSampLen -= 512;
+		memmove(savedSamples, &savedSamples[512 * sizeof(short)], savedSampLen * sizeof(short));
+
+		Search();
+	}
+}
+
+
+int HammingDistance(int iBucket, unsigned char *p2)
+{
+	int dist = 0;
+
+	for (int i = 0, j = 0; i < RSID_NSYMBOLS; i++, j += 2)
+	{
+		if (fft_buckets[j][iBucket] != p2[i])
+		{
+			++dist;
+			if (dist > hamming_resolution)
+				break;
+		}
+	}
+	return dist;
+}
+
+int iDistanceMin = 1000;  // infinity
+
+int search_amp(int *bin_out, int *symbol_out)
+{
+	int i, j;
+	int iDistance = 1000;
+	int iBin = -1;
+	int iSymbol = -1;
+
+	int tblsize;
+
+	iDistanceMin = 1000;  // infinity
+
+	tblsize = rsid_ids_size1;
+
+	unsigned char *pc = 0;
+
+	for (i = 0; i < tblsize; i++)
+	{
+		pc = &pCodes1[i][0];
+
+		for (j = firstBin; j < lastBin - RSID_NTIMES; j++)
+		{
+			iDistance = HammingDistance(j, pc);
+
+			if (iDistance < iDistanceMin)
+			{
+				iDistanceMin = iDistance;
+				iSymbol = i;
+				iBin = j;
+				if (iDistanceMin == 0) break;
+			}
+		}
+	}
+
+	if (iDistanceMin <= hamming_resolution)
+	{
+		*symbol_out = iSymbol;
+		*bin_out = iBin;
+		return true;
+	}
+
+	return false;
+}
+
+void apply(int iBin, int iSymbol)
+{
+	// Does something with the found id
+
+	const struct RSIDs *prsid = &rsid_ids_1[iSymbol];
+	int Freq = (int)(iBin + 15) * 12000.0f / 2048;
+	char Msg[128];
+	int Offset = Freq - rx_freq[0];
+	int i;
+	int nearest = -1, minOffset = 9999, absOffset;
+
+	// If there is more than one decoder with update from rsid set update the nearest
+
+	for (i = 0; i < 4; i++)
+	{
+		if (RSID_SetModem[i])
+		{
+			absOffset = abs(Freq - rx_freq[i]);
+
+			if (absOffset < minOffset)
+			{
+				// Nearer
+
+				nearest = i;
+				minOffset = absOffset;
+			}	
+		}
+	}
+
+	// We don't run this unless at least one modem has RSID_SetModem set.
+
+	Offset = Freq - rx_freq[nearest];
+
+	sprintf(Msg, "RSID %s %d %d Nearest Modem %c Offset %d", prsid->name, iDistanceMin, Freq, nearest + 'A', Offset);
+	
+	mon_rsid(0, Msg);
+
+		// Set Modem RX Offset to match received freq
+
+	chanOffset[nearest] = Offset;
+	needSetOffset[nearest] = 1;				// Update GUI
+
+}
+
+
+void Search()
+{
+	int symbol = -1;
+	int bin = -1;
+	
+	// We have just calculated a new set of fft amplitude bins in aFFTAmpl 
+
+	// we find peak bin, and store in fft_buckets array. This has 30 sets of 1024 buckets (though we only use first 512, as we limit search to 3 KHz)
+
+	// We move previous 29 entries to start of array and add new values on end so samples corresponding to first bit of rsid msg are at start
+
+	memmove(fft_buckets, &(fft_buckets[1][0]), (RSID_NTIMES - 1) * RSID_FFT_SIZE * sizeof(int));
+	memset(&(fft_buckets[RSID_NTIMES - 1][0]), 0, RSID_FFT_SIZE * sizeof(int));
+
+	// We process even then odd bins, using alternate bins to get resolution to 1/2 bin
+
+	CalculateBuckets(aFFTAmpl, firstBin, lastBin - RSID_NTIMES);
+	CalculateBuckets(aFFTAmpl, firstBin + 1, lastBin - RSID_NTIMES);
+
+	// Now have 30 sets of 512 bit valies (0-15). We look for a set of 15 that match an ID
+
+	found1 = search_amp(&bin, &symbol);
+
+	if (found1)
+	{
+		apply(bin, symbol);
+		reset();
+	}
+}
+
+
+
+void CalculateBuckets(const float *pSpectrum, int iBegin, int iEnd)
+{
+	float Amp = 0.0f, AmpMax = 0.0f;
+
+	int iBucketMax = iBegin - 2;
+	int j;
+
+	// This searches odd and even pairs of amps, hence the += 2
+
+	for (int i = iBegin; i < iEnd; i += 2)
+	{
+		if (iBucketMax == i - 2)
+		{
+			// if max was first in grooup of 15 redo full search
+
+			AmpMax = pSpectrum[i];
+			iBucketMax = i;
+			for (j = i + 2; j < i + RSID_NTIMES + 2; j += 2)
+			{
+				Amp = pSpectrum[j];
+				if (Amp > AmpMax)
+				{
+					AmpMax = Amp;
+					iBucketMax = j;
+				}
+			}
+		}
+		else
+		{
+			// Max wasn't first, so must be in next 14, so we can just check if new last is > max
+
+			j = i + RSID_NTIMES;
+			Amp = pSpectrum[j];
+			if (Amp > AmpMax)
+			{
+				AmpMax = Amp;
+				iBucketMax = j;
+			}
+		}
+		fft_buckets[RSID_NTIMES - 1][i] = (iBucketMax - i) >> 1;
+	}
+}
+
+
+
+
+
+
+
+
+void sendRSID(int Chan, int dropTX)
+{
+	unsigned char rsid[RSID_NSYMBOLS];
+	float sr;
+	int iTone;
+	float freq, phaseincr;
+	float fr;
+	float phase;
+
+	int Mode = speed[Chan];
+	int Freq = rx_freq[Chan];
+
+	rmode2 = 687;
+	rmode = 35 + Mode;				// Packet 300 or 1200
+
+	Encode(rmode, rsid);
+
+	sr = 12000;
+	symlen = (size_t)floor(RSID_SYMLEN * sr);
+
+	SampleNo = 0;
+
+	SoundIsPlaying = TRUE;
+	RadioPTT(Chan, 1);
+	Number = 0;
+
+	// transmit 5 symbol periods of silence at beginning of rsid
+
+	for (int i = 0; i < 5 * symlen; i++)
+		SampleSink(0, 0);
+
+	// transmit sequence of 15 symbols (tones)
+
+	fr = 1.0f * Freq - (RSID_SAMPLE_RATE * 7 / 1024);
+	phase = 0.0f;
+
+	for (int i = 0; i < 15; i++)
+	{
+		iTone = rsid[i];
+		freq = fr + iTone * RSID_SAMPLE_RATE / 1024;
+		phaseincr = 2.0f * M_PI * freq / sr;
+
+		for (int j = 0; j < symlen; j++)
+		{
+			phase += phaseincr;
+			if (phase > 2.0 * M_PI) phase -= 2.0 * M_PI;
+
+			sampd = sinf(phase);
+			sampd = sampd * 32767.0f;
+			samps = (short)sampd;
+			SampleSink(0, samps);
+		}
+	}
+
+	// 5 symbol periods of silence at end of transmission
+	// and between RsID and the data signal
+	int nperiods = 5;
+
+	for (int i = 0; i < nperiods * symlen; i++)
+		SampleSink(modemtoSoundLR[Chan], 0);
+
+	tx_status[Chan] = TX_SILENCE;		// Stop TX
+	Flush();
+	if (dropTX)
+		RadioPTT(Chan, 0);
+}
+
+// Experimental Busy Detect, based on ARDOP code
+
+
+static int LastBusyCheck = 0;
+static int BusyCount = 0;
+static int BusyStatus = 0;
+static int LastBusyStatus = 0;
+
+static int BusyDet = 5;				// DCD Threshold
+int LastStart = 0;
+int LastStop = 0;
+extern int LastBusyOn;
+extern int LastBusyOff;
+
+static int LastBusy = FALSE;
+
+extern float dblAvgStoNSlowNarrow;
+extern float dblAvgStoNFastNarrow;
+extern float dblAvgStoNSlowWide;
+extern float dblAvgStoNFastWide;
+int BusyOnCnt = 0;  // used to filter Busy ON detections 
+int BusyOffCnt = 0; // used to filter Busy OFF detections 
+unsigned int LastBusyTrip = 0;
+unsigned int PriorLastBusyTrip = 0;
+unsigned int LastBusyClear = 0;
+unsigned int LastTrip;
+
+void SortSignals(float * dblMag, int intStartBin, int intStopBin, int intNumBins, float *  dblAVGSignalPerBin, float *  dblAVGBaselinePerBin);
+void SortSignals2(float * dblMag, int intStartBin, int intStopBin, int intNumBins, float *  dblAVGSignalPerBin, float *  dblAVGBaselinePerBin);
+
+static BOOL BusyDetect3(float * dblMag, int intStart, int intStop)        // this only called while searching for leader ...once leader detected, no longer called.
+{
+	// each bin is about 12000/2048 or 5.86 Hz
+	// First sort signals and look at highes signals:baseline ratio..
+
+	float dblAVGSignalPerBinNarrow, dblAVGSignalPerBinWide, dblAVGBaselineNarrow, dblAVGBaselineWide;
+	float dblSlowAlpha = 0.2f;
+	float dblAvgStoNNarrow = 0, dblAvgStoNWide = 0;
+	int intNarrow = 16;  // 16 x  5.86 about 94 z
+	int intWide = ((intStop - intStart) * 2) / 3; //* 0.66);
+	int blnBusy = FALSE;
+	int  BusyDet4th = BusyDet * BusyDet * BusyDet * BusyDet;
+	int BusyDet = 5;
+	unsigned int HoldMs = 5000;
+
+	// First sort signals and look at highest signals:baseline ratio..
+	// First narrow band (~94Hz)
+
+	SortSignals2(dblMag, intStart, intStop, intNarrow, &dblAVGSignalPerBinNarrow, &dblAVGBaselineNarrow);
+
+	if (LastStart == intStart && LastStop == intStop)
+		dblAvgStoNNarrow = (1 - dblSlowAlpha) * dblAvgStoNNarrow + dblSlowAlpha * dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+	else
+	{
+		// This initializes the Narrow average after a bandwidth change
+
+		dblAvgStoNNarrow = dblAVGSignalPerBinNarrow / dblAVGBaselineNarrow;
+		LastStart = intStart;
+		LastStop = intStop;
+	}
+
+	// Wide band (66% of current bandwidth)
+
+	SortSignals2(dblMag, intStart, intStop, intWide, &dblAVGSignalPerBinWide, &dblAVGBaselineWide);
+
+	if (LastStart == intStart && LastStop == intStop)
+		dblAvgStoNWide = (1 - dblSlowAlpha) * dblAvgStoNWide + dblSlowAlpha * dblAVGSignalPerBinWide / dblAVGBaselineWide;
+	else
+	{
+		// This initializes the Wide average after a bandwidth change
+
+		dblAvgStoNWide = dblAVGSignalPerBinWide / dblAVGBaselineWide;
+		LastStart = intStart;
+		LastStop = intStop;
+	}
+
+	// Preliminary calibration...future a function of bandwidth and BusyDet.
+
+	blnBusy = (dblAvgStoNNarrow > (3 + 0.008 * BusyDet4th)) || (dblAvgStoNWide > (5 + 0.016 * BusyDet4th));
+
+	if (BusyDet == 0)
+		blnBusy = FALSE;		// 0 Disables check ?? Is this the best place to do this?
+
+//	WriteDebugLog(LOGDEBUG, "Busy %d Wide %f Narrow %f", blnBusy, dblAvgStoNWide, dblAvgStoNNarrow); 
+
+	if (blnBusy)
+	{
+		// This requires multiple adjacent busy conditions to skip over one nuisance Busy trips. 
+		// Busy must be present at least 3 consecutive times ( ~250 ms) to be reported
+
+		BusyOnCnt += 1;
+		BusyOffCnt = 0;
+		if (BusyOnCnt > 3)
+			LastTrip = Now;
+	}
+	else
+	{
+		BusyOffCnt += 1;
+		BusyOnCnt = 0;
+	}
+
+	if (LastBusy == 0 && BusyOnCnt >= 3)
+	{
+		PriorLastBusyTrip = LastBusyTrip;  // save old dttLastBusyTrip for use in BUSYBLOCKING function
+		LastBusyTrip = Now;
+		LastBusy = TRUE;
+	}
+	else
+	{
+		if (LastBusy && (Now - LastTrip) > HoldMs && BusyOffCnt >= 3)
+		{
+			LastBusyClear = Now;
+			LastBusy = FALSE;
+		}
+	}
+	return LastBusy;
+}
+
+
+static void UpdateBusyDetector()
+{
+	// Use applitude bins in aFFTAmpl
+
+	float dblMagAvg = 0;
+	int intTuneLineLow, intTuneLineHi;
+	int i;
+	int BusyFlag;
+
+	if (Now - LastBusyCheck < 100)
+		return;
+
+	LastBusyCheck = Now;
+
+	for (i = 52; i < 512; i++)
+	{
+		//	starting at ~300 Hz to ~3000 Hz Which puts the center of the signal in the center of the window (~1500Hz)
+
+		dblMagAvg += aFFTAmpl[i];
+	}
+
+	intTuneLineLow = 52;
+	intTuneLineHi = 512;
+
+	BusyFlag = BusyDetect3(aFFTAmpl, intTuneLineLow, intTuneLineHi);
+
+	if (BusyFlag == 0)
+	{
+		if (BusyCount == 0)
+			BusyStatus = 0;
+		else
+			BusyCount--;
+	}
+	else
+	{
+		BusyStatus = 1;
+		BusyCount = 10;			// Try delaying busy off a bit
+	}
+
+	if (BusyStatus && !LastBusyStatus)
+	{
+		Debugprintf("BUSY TRUE");
+	}
+	//    stcStatus.Text = "True"
+		//    queTNCStatus.Enqueue(stcStatus)
+		//    'Debug.WriteLine("BUSY TRUE @ " & Format(DateTime.UtcNow, "HH:mm:ss"))
+
+	else if (LastBusyStatus && !BusyStatus)
+	{
+		Debugprintf("BUSY FALSE");
+	}
+
+	LastBusyStatus = BusyStatus;
+
+}
+
diff --git a/rsid.cxx b/rsid.cxx
new file mode 100644
index 0000000..1346893
--- /dev/null
+++ b/rsid.cxx
@@ -0,0 +1,1096 @@
+// ----------------------------------------------------------------------------
+//
+//	rsid.cxx
+//
+// Copyright (C) 2008-2012
+//		Dave Freese, W1HKJ
+// Copyright (C) 2009-2012
+//		Stelios Bounanos, M0GLD
+// Copyright (C) 2012
+//		John Douyere, VK2ETA
+//
+// This file is part of fldigi.
+//
+// Fldigi is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Fldigi is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with fldigi.  If not, see <http://www.gnu.org/licenses/>.
+// ----------------------------------------------------------------------------
+
+#include <config.h>
+
+#include <string>
+#include <cmath>
+#include <cstring>
+#include <float.h>
+#include <samplerate.h>
+
+#include "rsid.h"
+#include "filters.h"
+/*
+#include "misc.h"
+#include "trx.h"
+#include "fl_digi.h"
+#include "configuration.h"
+#include "confdialog.h"
+#include "qrunner.h"
+#include "notify.h"
+#include "debug.h"
+
+#include "main.h"
+#include "arq_io.h"
+#include "data_io.h"
+#include "audio_alert.h"
+*/
+
+
+struct RSIDs { unsigned short rs; trx_mode mode; const char* name; };
+
+#include "rsid_defs.cxx"
+
+#define RSWINDOW 1
+
+const int cRsId::Squares[] = {
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,
+	0, 2, 4, 6, 8,10,12,14, 9,11,13,15, 1, 3, 5, 7,
+	0, 3, 6, 5,12,15,10, 9, 1, 2, 7, 4,13,14,11, 8,
+	0, 4, 8,12, 9,13, 1, 5,11,15, 3, 7, 2, 6,10,14,
+	0, 5,10,15,13, 8, 7, 2, 3, 6, 9,12,14,11, 4, 1,
+	0, 6,12,10, 1, 7,13,11, 2, 4,14, 8, 3, 5,15, 9,
+	0, 7,14, 9, 5, 2,11,12,10,13, 4, 3,15, 8, 1, 6,
+	0, 8, 9, 1,11, 3, 2,10,15, 7, 6,14, 4,12,13, 5,
+	0, 9,11, 2,15, 6, 4,13, 7,14,12, 5, 8, 1, 3,10,
+	0,10,13, 7, 3, 9,14, 4, 6,12,11, 1, 5,15, 8, 2,
+	0,11,15, 4, 7,12, 8, 3,14, 5, 1,10, 9, 2, 6,13,
+	0,12, 1,13, 2,14, 3,15, 4, 8, 5, 9, 6,10, 7,11,
+	0,13, 3,14, 6,11, 5, 8,12, 1,15, 2,10, 7, 9, 4,
+	0,14, 5,11,10, 4,15, 1,13, 3, 8, 6, 7, 9, 2,12,
+	0,15, 7, 8,14, 1, 9, 6, 5,10, 2,13,11, 4,12, 3
+};
+
+const int cRsId::indices[] = {
+	2, 4, 8, 9, 11, 15, 7, 14, 5, 10, 13, 3
+};
+
+cRsId::cRsId()
+{
+	int error;
+	src_state = src_new(progdefaults.sample_converter, 1, &error);
+	if (error) {
+		LOG_ERROR("src_new error %d: %s", error, src_strerror(error));
+		abort();
+	}
+	src_data.end_of_input = 0;
+
+	reset();
+
+	rsfft = new g_fft<rs_fft_type>(RSID_ARRAY_SIZE);
+
+	memset(fftwindow, 0, sizeof(fftwindow));
+
+	if (RSWINDOW) {
+		for (int i = 0; i < RSID_ARRAY_SIZE; i++)
+//		fftwindow[i] = blackman ( 1.0 * i / RSID_ARRAY_SIZE );
+		fftwindow[i] = hamming ( 1.0 * i / RSID_ARRAY_SIZE );
+//		fftwindow[i] = hanning ( 1.0 * i / RSID_ARRAY_SIZE );
+//		fftwindow[i] = 1.0;
+	}
+
+	pCodes1 = new unsigned char[rsid_ids_size1 * RSID_NSYMBOLS];
+	memset(pCodes1, 0, sizeof(pCodes1) * sizeof(unsigned char));
+
+	pCodes2 = new unsigned char[rsid_ids_size2 * RSID_NSYMBOLS];
+	memset(pCodes2, 0, sizeof(pCodes2) * sizeof(unsigned char));
+
+	// Initialization  of assigned mode/submode IDs.
+	unsigned char* c;
+	for (int i = 0; i < rsid_ids_size1; i++) {
+		c = pCodes1 + i * RSID_NSYMBOLS;
+		Encode(rsid_ids_1[i].rs, c);
+	}
+
+	for (int i = 0; i < rsid_ids_size2; i++) {
+		c = pCodes2 + i * RSID_NSYMBOLS;
+		Encode(rsid_ids_2[i].rs, c);
+	}
+
+#if 0
+	printf("pcode 1\n");
+	printf(",rs, name, mode,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14\n");
+	for (int i = 0; i < rsid_ids_size1; i++) {
+		printf("%d,%d,%s,%d", i, rsid_ids_1[i].rs, rsid_ids_1[i].name, rsid_ids_1[i].mode);
+		for (int j = 0; j < RSID_NSYMBOLS + 1; j++)
+			printf(",%d", pCodes1[i*(RSID_NSYMBOLS + 1) + j]);
+		printf("\n");
+	}
+	printf("\npcode 2\n");
+	printf(", rs, name, mode,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14\n");
+	for (int i = 0; i < rsid_ids_size2; i++) {
+		printf("%d,%d,%s,%d", i, rsid_ids_2[i].rs, rsid_ids_2[i].name, rsid_ids_2[i].mode);
+		for (int j = 0; j < RSID_NSYMBOLS + 1; j++)
+			printf(",%d", pCodes2[i*(RSID_NSYMBOLS+ 1) + j]);
+		printf("\n");
+	}
+#endif
+
+	nBinLow = 3;
+	nBinHigh = RSID_FFT_SIZE - 32; // - RSID_NTIMES - 2
+
+	outbuf = 0;
+	symlen = 0;
+
+	reset();
+
+}
+
+cRsId::~cRsId()
+{
+	delete [] pCodes1;
+	delete [] pCodes2;
+
+	delete [] outbuf;
+	delete rsfft;
+	src_delete(src_state);
+}
+
+void cRsId::reset()
+{
+	iPrevDistance = iPrevDistance2 = 99;
+	bPrevTimeSliceValid = bPrevTimeSliceValid2 = false;
+	found1 = found2 = false;
+	rsid_secondary_time_out = 0;
+
+	memset(aInputSamples, 0, (RSID_ARRAY_SIZE * 2) * sizeof(float));
+	memset(aFFTAmpl, 0, RSID_FFT_SIZE * sizeof(rs_fft_type));
+	memset(fft_buckets, 0, RSID_NTIMES * RSID_FFT_SIZE * sizeof(int));
+
+	for (int n = 0; n < RSID_ARRAY_SIZE; n++)
+		aFFTcmplx[n] = cmplx(0,0);
+
+	int error = src_reset(src_state);
+	if (error)
+		LOG_ERROR("src_reset error %d: %s", error, src_strerror(error));
+	src_data.src_ratio = 0.0;
+	inptr = RSID_FFT_SIZE;
+	hamming_resolution = progdefaults.RsID_label_type;
+}
+
+void cRsId::Encode(int code, unsigned char *rsid)
+{
+	rsid[0] = code >> 8;
+	rsid[1] = (code >> 4) & 0x0f;
+	rsid[2] = code & 0x0f;
+	for (int i = 3; i < RSID_NSYMBOLS; i++)
+		rsid[i] = 0;
+	for (int i = 0; i < 12; i++) {
+		for (int j = RSID_NSYMBOLS - 1; j > 0; j--)
+			rsid[j] = rsid[j - 1] ^ Squares[(rsid[j] << 4) + indices[i]];
+		rsid[0] = Squares[(rsid[0] << 4) + indices[i]];
+	}
+}
+
+void cRsId::CalculateBuckets(const rs_fft_type *pSpectrum, int iBegin, int iEnd)
+{
+	rs_fft_type Amp = 0.0, AmpMax = 0.0;
+	int iBucketMax = iBegin - 2;
+	int j;
+
+	for (int i = iBegin; i < iEnd; i += 2) {
+		if (iBucketMax == i - 2) {
+			AmpMax = pSpectrum[i];
+			iBucketMax = i;
+			for (j = i + 2; j < i + RSID_NTIMES + 2; j += 2) {
+				Amp = pSpectrum[j];
+				if (Amp > AmpMax) {
+					AmpMax = Amp;
+					iBucketMax = j;
+				}
+			}
+		}
+		else {
+			j = i + RSID_NTIMES;
+			Amp = pSpectrum[j];
+			if (Amp > AmpMax) {
+				AmpMax    = Amp;
+				iBucketMax = j;
+			}
+		}
+		fft_buckets[RSID_NTIMES - 1][i] = (iBucketMax - i) >> 1;
+	}
+}
+
+void cRsId::receive(const float* buf, size_t len)
+{
+
+	if (len == 0) return;
+
+	int srclen = static_cast<int>(len);
+	double src_ratio = RSID_SAMPLE_RATE / active_modem->get_samplerate();
+
+	if (rsid_secondary_time_out > 0) {
+		rsid_secondary_time_out -= 1.0 * len / active_modem->get_samplerate();
+		if (rsid_secondary_time_out <= 0) {
+			LOG_INFO("%s", "Secondary RsID timed out");
+			reset();
+		}
+	}
+
+	if (src_data.src_ratio != src_ratio) {
+		src_data.src_ratio = src_ratio;
+		src_set_ratio(src_state, src_data.src_ratio);
+	}
+
+	while (srclen > 0) {
+		src_data.data_in = const_cast<float*>(buf);
+		src_data.input_frames = srclen;
+		src_data.data_out = &aInputSamples[inptr];
+		src_data.output_frames = RSID_ARRAY_SIZE * 2 - inptr;
+		src_data.input_frames_used = 0;
+		int error = src_process(src_state, &src_data);
+		if (unlikely(error)) {
+			LOG_ERROR("src_process error %d: %s", error, src_strerror(error));
+			return;
+		}
+		size_t gend = src_data.output_frames_gen;
+		size_t used = src_data.input_frames_used;
+		inptr += gend;
+		buf += used;
+		srclen -= used;
+
+		while (inptr >= RSID_ARRAY_SIZE) {
+			search();
+			memmove(&aInputSamples[0], &aInputSamples[RSID_FFT_SAMPLES],
+					(RSID_BUFFER_SIZE - RSID_FFT_SAMPLES)*sizeof(float));
+			inptr -= RSID_FFT_SAMPLES;
+		}
+	}
+}
+
+void cRsId::search(void)
+{
+	if (progdefaults.rsidWideSearch) {
+		nBinLow = 3;
+		nBinHigh = RSID_FFT_SIZE - 32;
+	}
+	else {
+		float centerfreq = active_modem->get_freq();
+		float bpf = 1.0 * RSID_ARRAY_SIZE / RSID_SAMPLE_RATE;
+		nBinLow = (int)((centerfreq  - 100.0 * 2) * bpf);
+		nBinHigh = (int)((centerfreq  + 100.0 * 2) * bpf);
+	}
+	if (nBinLow < 3) nBinLow = 3;
+	if (nBinHigh > RSID_FFT_SIZE - 32) nBinHigh = RSID_FFT_SIZE - 32;
+
+	bool bReverse = !(wf->Reverse() ^ wf->USB());
+	if (bReverse) {
+		nBinLow  = RSID_FFT_SIZE - nBinHigh;
+		nBinHigh = RSID_FFT_SIZE - nBinLow;
+	}
+
+	if (RSWINDOW) {
+		for (int i = 0; i < RSID_ARRAY_SIZE; i++)
+			aFFTcmplx[i] = cmplx(aInputSamples[i] * fftwindow[i], 0);
+	} else {
+		for (int i = 0; i < RSID_ARRAY_SIZE; i++)
+			aFFTcmplx[i] = cmplx(aInputSamples[i], 0);
+	}
+
+	rsfft->ComplexFFT(aFFTcmplx);
+
+	memset(aFFTAmpl, 0, sizeof(aFFTAmpl));
+
+	static const double pscale = 4.0 / (RSID_FFT_SIZE * RSID_FFT_SIZE);
+
+	if (unlikely(bReverse)) {
+		for (int i = 0; i < RSID_FFT_SIZE; i++)
+			aFFTAmpl[RSID_FFT_SIZE - 1 - i] = norm(aFFTcmplx[i]) * pscale;
+	} else {
+		for (int i = 0; i < RSID_FFT_SIZE; i++)
+			aFFTAmpl[i] = norm(aFFTcmplx[i]) * pscale;
+	}
+
+	int bucket_low = 3;
+	int bucket_high = RSID_FFT_SIZE - 32;
+	if (bReverse) {
+		bucket_low  = RSID_FFT_SIZE - bucket_high;
+		bucket_high = RSID_FFT_SIZE - bucket_low;
+	}
+
+	memmove(fft_buckets,
+			&(fft_buckets[1][0]),
+			(RSID_NTIMES - 1) * RSID_FFT_SIZE * sizeof(int));
+	memset(&(fft_buckets[RSID_NTIMES - 1][0]), 0, RSID_FFT_SIZE * sizeof(int));
+
+	CalculateBuckets ( aFFTAmpl, bucket_low,  bucket_high - RSID_NTIMES);
+	CalculateBuckets ( aFFTAmpl, bucket_low + 1, bucket_high - RSID_NTIMES);
+
+	int symbol_out_1 = -1;
+	int bin_out_1    = -1;
+	int symbol_out_2 = -1;
+	int bin_out_2    = -1;
+
+	if (rsid_secondary_time_out <= 0) {
+		found1 = search_amp(bin_out_1, symbol_out_1, pCodes1);
+		if (found1) {
+			if (symbol_out_1 != RSID_ESCAPE) {
+				if (bReverse)
+					bin_out_1 = 1024 - bin_out_1 - 31;
+				apply(bin_out_1, symbol_out_1, 0);
+				reset();
+				return;
+			} else {
+				// 10 rsid_gap + 15 symbols + 2 for timing errors
+				rsid_secondary_time_out = 27 * RSID_SYMLEN;
+				return;
+			}
+		} else
+			return;
+	}
+
+	found2 = search_amp(bin_out_2, symbol_out_2, pCodes2);
+	if (found2) {
+		if (symbol_out_2 != RSID_NONE2) {
+			if (bReverse)
+				bin_out_2 = 1024 - bin_out_2 - 31;
+			apply(bin_out_2, symbol_out_2, 1);
+		}
+		reset();
+	}
+
+}
+
+void cRsId::setup_mode(int iSymbol)
+{
+	switch (iSymbol) {
+	case RSID_RTTY_ASCII_7:
+		progdefaults.rtty_baud = 5;
+		progdefaults.rtty_bits = 1;
+		progdefaults.rtty_shift = 9;
+		REQ(&set_rtty_tab_widgets);
+		break;
+	case RSID_RTTY_ASCII_8:
+		progdefaults.rtty_baud = 5;
+		progdefaults.rtty_bits = 2;
+		progdefaults.rtty_shift = 9;
+		REQ(&set_rtty_tab_widgets);
+		break;
+	case RSID_RTTY_45:
+		progdefaults.rtty_baud = 1;
+		progdefaults.rtty_bits = 0;
+		progdefaults.rtty_shift = 3;
+		REQ(&set_rtty_tab_widgets);
+		break;
+	case RSID_RTTY_50:
+		progdefaults.rtty_baud = 2;
+		progdefaults.rtty_bits = 0;
+		progdefaults.rtty_shift = 3;
+		REQ(&set_rtty_tab_widgets);
+		break;
+	case RSID_RTTY_75:
+		progdefaults.rtty_baud = 4;
+		progdefaults.rtty_bits = 0;
+		progdefaults.rtty_shift = 9;
+		REQ(&set_rtty_tab_widgets);
+		break;
+// DominoEX / FEC
+	case RSID_DOMINOEX_4: case RSID_DOMINOEX_5: case RSID_DOMINOEX_8:
+	case RSID_DOMINOEX_11: case RSID_DOMINOEX_16: case RSID_DOMINOEX_22:
+		progdefaults.DOMINOEX_FEC = false;
+		REQ(&set_dominoex_tab_widgets);
+		break;
+	case RSID_DOMINOEX_4_FEC: case RSID_DOMINOEX_5_FEC: case RSID_DOMINOEX_8_FEC:
+	case RSID_DOMINOEX_11_FEC: case RSID_DOMINOEX_16_FEC: case RSID_DOMINOEX_22_FEC:
+		progdefaults.DOMINOEX_FEC = true;
+		REQ(&set_dominoex_tab_widgets);
+		break;
+// olivia parameters
+	case RSID_OLIVIA_4_125:
+		progdefaults.oliviatones = 1;
+		progdefaults.oliviabw = 0;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_4_250:
+		progdefaults.oliviatones = 1;
+		progdefaults.oliviabw = 1;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_4_500:
+		progdefaults.oliviatones = 1;
+		progdefaults.oliviabw = 2;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_4_1000:
+		progdefaults.oliviatones = 1;
+		progdefaults.oliviabw = 3;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_4_2000:
+		progdefaults.oliviatones = 1;
+		progdefaults.oliviabw = 4;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_8_125:
+		progdefaults.oliviatones = 2;
+		progdefaults.oliviabw = 0;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_8_250:
+		progdefaults.oliviatones = 2;
+		progdefaults.oliviabw = 1;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_8_500:
+		progdefaults.oliviatones = 2;
+		progdefaults.oliviabw = 2;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_8_1000:
+		progdefaults.oliviatones = 2;
+		progdefaults.oliviabw = 3;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_8_2000:
+		progdefaults.oliviatones = 2;
+		progdefaults.oliviabw = 4;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_16_500:
+		progdefaults.oliviatones = 3;
+		progdefaults.oliviabw = 2;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_16_1000:
+		progdefaults.oliviatones = 3;
+		progdefaults.oliviabw = 3;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_16_2000:
+		progdefaults.oliviatones = 3;
+		progdefaults.oliviabw = 4;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_32_1000:
+		progdefaults.oliviatones = 4;
+		progdefaults.oliviabw = 3;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_32_2000:
+		progdefaults.oliviatones = 4;
+		progdefaults.oliviabw = 4;
+		REQ(&set_olivia_tab_widgets);
+		break;
+	case RSID_OLIVIA_64_2000:
+		progdefaults.oliviatones = 5;
+		progdefaults.oliviabw = 4;
+		REQ(&set_olivia_tab_widgets);
+		break;
+// contestia parameters
+	case RSID_CONTESTIA_4_125:
+		progdefaults.contestiatones = 1;
+		progdefaults.contestiabw = 0;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_4_250:
+		progdefaults.contestiatones = 1;
+		progdefaults.contestiabw = 1;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_4_500:
+		progdefaults.contestiatones = 1;
+		progdefaults.contestiabw = 2;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_4_1000:
+		progdefaults.contestiatones = 1;
+		progdefaults.contestiabw = 3;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_4_2000:
+		progdefaults.contestiatones = 1;
+		progdefaults.contestiabw = 4;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_8_125:
+		progdefaults.contestiatones = 2;
+		progdefaults.contestiabw = 0;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_8_250:
+		progdefaults.contestiatones = 2;
+		progdefaults.contestiabw = 1;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_8_500:
+		progdefaults.contestiatones = 2;
+		progdefaults.contestiabw = 2;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_8_1000:
+		progdefaults.contestiatones = 2;
+		progdefaults.contestiabw = 3;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_8_2000:
+		progdefaults.contestiatones = 2;
+		progdefaults.contestiabw = 4;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_16_500:
+		progdefaults.contestiatones = 3;
+		progdefaults.contestiabw = 2;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_16_1000:
+		progdefaults.contestiatones = 3;
+		progdefaults.contestiabw = 3;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_16_2000:
+		progdefaults.contestiatones = 3;
+		progdefaults.contestiabw = 4;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_32_1000:
+		progdefaults.contestiatones = 4;
+		progdefaults.contestiabw = 3;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_32_2000:
+		progdefaults.contestiatones = 4;
+		progdefaults.contestiabw = 4;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_64_500:
+		progdefaults.contestiatones = 5;
+		progdefaults.contestiabw = 2;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_64_1000:
+		progdefaults.contestiatones = 5;
+		progdefaults.contestiabw = 3;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	case RSID_CONTESTIA_64_2000:
+		progdefaults.contestiatones = 5;
+		progdefaults.contestiabw = 4;
+		REQ(&set_contestia_tab_widgets);
+		break;
+	default:
+		break;
+	} // switch (iSymbol)
+}
+
+void cRsId::apply(int iBin, int iSymbol, int extended)
+{
+	ENSURE_THREAD(TRX_TID);
+
+	double rsidfreq = 0, currfreq = 0;
+	int n, mbin = NUM_MODES;
+
+	int tblsize;
+	const RSIDs *p_rsid;
+
+	if (extended) {
+		tblsize = rsid_ids_size2;
+		p_rsid = rsid_ids_2;
+	}
+	else {
+		tblsize = rsid_ids_size1;
+		p_rsid = rsid_ids_1;
+	}
+
+	currfreq = active_modem->get_freq();
+	rsidfreq = (iBin + RSID_NSYMBOLS - 0.5) * RSID_SAMPLE_RATE / 2048.0;
+
+	for (n = 0; n < tblsize; n++) {
+		if (p_rsid[n].rs == iSymbol) {
+			mbin = p_rsid[n].mode;
+			break;
+		}
+	}
+
+	if (mbin == NUM_MODES) {
+		char msg[50];
+		if (n < tblsize) // RSID known but unimplemented
+			snprintf(msg, sizeof(msg), "RSID: %s unimplemented",
+				p_rsid[n].name);
+		else // RSID unknown; shouldn't  happen
+			snprintf(msg, sizeof(msg), "RSID: code %d unknown", iSymbol);
+		put_status(msg, 4.0);
+		LOG_VERBOSE("%s", msg);
+		return;
+	}
+
+	if (progdefaults.rsid_rx_modes.test(mbin)) {
+		char msg[50];
+		snprintf(msg, sizeof(msg), "RSID: %s @ %0.1f Hz", p_rsid[n].name, rsidfreq);
+		LOG_VERBOSE("%s", msg);
+	}
+	else {
+		char msg[50];
+		snprintf(msg, sizeof(msg), "Ignoring RSID: %s @ %0.1f Hz", p_rsid[n].name, rsidfreq);
+		LOG_DEBUG("%s", msg);
+		return;
+	}
+
+	if (progdefaults.ENABLE_RSID_MATCH)
+		audio_alert->alert(progdefaults.RSID_MATCH);
+
+	if (mailclient || mailserver)
+		REQ(pskmail_notify_rsid, mbin);
+
+	if (progdefaults.rsid_auto_disable)
+		REQ(toggleRSID);
+
+	if (iSymbol == RSID_EOT) {
+		if (progdefaults.rsid_eot_squelch) {
+			REQ(rsid_eot_squelch);
+			if (!progdefaults.disable_rsid_warning_dialog_box)
+				REQ(notify_rsid_eot, mbin, rsidfreq);
+		}
+		return;
+	}
+
+	if (!progdefaults.disable_rsid_warning_dialog_box)
+		REQ(notify_rsid, mbin, rsidfreq);
+
+	if (progdefaults.rsid_notify_only) {
+		if (data_io_enabled == KISS_IO) {
+			bcast_rsid_kiss_frame(rsidfreq, mbin, (int) active_modem->get_txfreq_woffset(),
+								  active_modem->get_mode(), RSID_KISS_NOTIFY);
+		}
+		return;
+	}
+
+	if (progdefaults.rsid_mark) // mark current modem & freq
+		REQ(note_qrg, false, "\nBefore RSID: ", "\n\n",
+			active_modem->get_mode(), 0LL, currfreq);
+
+	if(active_modem) // Currently only effects Olivia, Contestia and MT63.
+		active_modem->rx_flush();
+
+	setup_mode(iSymbol);
+
+	if (progdefaults.rsid_squelch)
+		REQ(init_modem_squelch, mbin, progdefaults.disable_rsid_freq_change ? currfreq : rsidfreq);
+	else
+		REQ(init_modem, mbin, progdefaults.disable_rsid_freq_change ? currfreq : rsidfreq);
+
+}
+
+inline int cRsId::HammingDistance(int iBucket, unsigned char *p2)
+{
+	int dist = 0;
+	for (int i = 0, j = 1; i < RSID_NSYMBOLS; i++, j += 2) {
+		if (fft_buckets[j][iBucket] != p2[i]) {
+			++dist;
+			if (dist > hamming_resolution)
+				break;
+		}
+	}
+	return dist;
+}
+
+bool cRsId::search_amp( int &bin_out, int &symbol_out, unsigned char *pcode)
+{
+	int i, j;
+	int iDistanceMin = 1000;  // infinity
+	int iDistance    = 1000;
+	int iBin         = -1;
+	int iSymbol      = -1;
+
+	int tblsize;
+	const RSIDs *prsid;
+
+	if (pcode == pCodes1) {
+		tblsize = rsid_ids_size1;
+		prsid = rsid_ids_1;
+	} else {
+		tblsize = rsid_ids_size2;
+		prsid = rsid_ids_2;
+	}
+
+	unsigned char *pc = 0;
+	for (i = 0; i < tblsize; i++) {
+		pc = pcode + i * RSID_NSYMBOLS;
+		for (j = nBinLow; j < nBinHigh - RSID_NTIMES; j++) {
+			iDistance = HammingDistance(j, pc);
+			if (iDistance < iDistanceMin) {
+				iDistanceMin = iDistance;
+				iSymbol  	 = prsid[i].rs;
+				iBin		 = j;
+				if (iDistanceMin == 0) break;
+			}
+		}
+	}
+
+	if (iDistanceMin <= hamming_resolution) {
+		symbol_out	= iSymbol;
+		bin_out		= iBin;
+		return true;
+	}
+
+	return false;
+}
+
+//=============================================================================
+// transmit rsid code for current mode
+//=============================================================================
+
+bool cRsId::assigned(trx_mode mode) {
+
+	rmode = RSID_NONE;
+	rmode2 = RSID_NONE2;
+
+	switch (mode) {
+	case MODE_EOT : 
+		rmode = RSID_EOT;
+std::cout << "send RSID_EOT" << std::endl;
+		return true;
+	case MODE_RTTY :
+		if (progdefaults.rtty_baud == 5 && progdefaults.rtty_bits == 1 && progdefaults.rtty_shift == 9)
+			rmode = RSID_RTTY_ASCII_7;
+		else if (progdefaults.rtty_baud == 5 && progdefaults.rtty_bits == 1 && progdefaults.rtty_shift == 9)
+			rmode = RSID_RTTY_ASCII_8;
+		else if (progdefaults.rtty_baud == 1 && progdefaults.rtty_bits == 0 && progdefaults.rtty_shift == 3)
+			rmode = RSID_RTTY_45;
+		else if (progdefaults.rtty_baud == 2 && progdefaults.rtty_bits == 0 && progdefaults.rtty_shift == 3)
+			rmode = RSID_RTTY_50;
+		else if (progdefaults.rtty_baud == 4 && progdefaults.rtty_bits == 0 && progdefaults.rtty_shift == 9)
+			rmode = RSID_RTTY_75;
+		else
+			return false;
+		return true;
+		break;
+
+	case MODE_OLIVIA:
+	case MODE_OLIVIA_4_250:
+	case MODE_OLIVIA_8_250:
+	case MODE_OLIVIA_4_500:
+	case MODE_OLIVIA_8_500:
+	case MODE_OLIVIA_16_500:
+	case MODE_OLIVIA_8_1000:
+	case MODE_OLIVIA_16_1000:
+	case MODE_OLIVIA_32_1000:
+	case MODE_OLIVIA_64_2000:
+		if (progdefaults.oliviatones == 1 && progdefaults.oliviabw == 0)
+			rmode = RSID_OLIVIA_4_125;
+		else if (progdefaults.oliviatones == 1 && progdefaults.oliviabw == 1)
+			rmode = RSID_OLIVIA_4_250;
+		else if (progdefaults.oliviatones == 1 && progdefaults.oliviabw == 2)
+			rmode = RSID_OLIVIA_4_500;
+		else if (progdefaults.oliviatones == 1 && progdefaults.oliviabw == 3)
+			rmode = RSID_OLIVIA_4_1000;
+		else if (progdefaults.oliviatones == 1 && progdefaults.oliviabw == 4)
+			rmode = RSID_OLIVIA_4_2000;
+
+		else if (progdefaults.oliviatones == 2 && progdefaults.oliviabw == 0)
+			rmode = RSID_OLIVIA_8_125;
+		else if (progdefaults.oliviatones == 2 && progdefaults.oliviabw == 1)
+			rmode = RSID_OLIVIA_8_250;
+		else if (progdefaults.oliviatones == 2 && progdefaults.oliviabw == 2)
+			rmode = RSID_OLIVIA_8_500;
+		else if (progdefaults.oliviatones == 2 && progdefaults.oliviabw == 3)
+			rmode = RSID_OLIVIA_8_1000;
+		else if (progdefaults.oliviatones == 2 && progdefaults.oliviabw == 4)
+			rmode = RSID_OLIVIA_8_2000;
+
+		else if (progdefaults.oliviatones == 3 && progdefaults.oliviabw == 2)
+			rmode = RSID_OLIVIA_16_500;
+		else if (progdefaults.oliviatones == 3 && progdefaults.oliviabw == 3)
+			rmode = RSID_OLIVIA_16_1000;
+		else if (progdefaults.oliviatones == 3 && progdefaults.oliviabw == 4)
+			rmode = RSID_OLIVIA_16_2000;
+
+		else if (progdefaults.oliviatones == 4 && progdefaults.oliviabw == 3)
+			rmode = RSID_OLIVIA_32_1000;
+		else if (progdefaults.oliviatones == 4 && progdefaults.oliviabw == 4)
+			rmode = RSID_OLIVIA_32_2000;
+
+		else if (progdefaults.oliviatones == 5 && progdefaults.oliviabw == 4)
+			rmode = RSID_OLIVIA_64_2000;
+
+		else
+			return false;
+		return true;
+		break;
+
+	case MODE_CONTESTIA:
+	case MODE_CONTESTIA_4_125:
+	case MODE_CONTESTIA_4_250:
+	case MODE_CONTESTIA_8_250:
+	case MODE_CONTESTIA_4_500:
+	case MODE_CONTESTIA_8_500:
+	case MODE_CONTESTIA_16_500:
+	case MODE_CONTESTIA_8_1000:
+	case MODE_CONTESTIA_16_1000:
+	case MODE_CONTESTIA_32_1000:
+	case MODE_CONTESTIA_64_2000:
+		if (progdefaults.contestiatones == 1 && progdefaults.contestiabw == 0)
+			rmode = RSID_CONTESTIA_4_125;
+		else if (progdefaults.contestiatones == 1 && progdefaults.contestiabw == 1)
+			rmode = RSID_CONTESTIA_4_250;
+		else if (progdefaults.contestiatones == 1 && progdefaults.contestiabw == 2)
+			rmode = RSID_CONTESTIA_4_500;
+		else if (progdefaults.contestiatones == 1 && progdefaults.contestiabw == 3)
+			rmode = RSID_CONTESTIA_4_1000;
+		else if (progdefaults.contestiatones == 1 && progdefaults.contestiabw == 4)
+			rmode = RSID_CONTESTIA_4_2000;
+
+		else if (progdefaults.contestiatones == 2 && progdefaults.contestiabw == 0)
+			rmode = RSID_CONTESTIA_8_125;
+		else if (progdefaults.contestiatones == 2 && progdefaults.contestiabw == 1)
+			rmode = RSID_CONTESTIA_8_250;
+		else if (progdefaults.contestiatones == 2 && progdefaults.contestiabw == 2)
+			rmode = RSID_CONTESTIA_8_500;
+		else if (progdefaults.contestiatones == 2 && progdefaults.contestiabw == 3)
+			rmode = RSID_CONTESTIA_8_1000;
+		else if (progdefaults.contestiatones == 2 && progdefaults.contestiabw == 4)
+			rmode = RSID_CONTESTIA_8_2000;
+
+		else if (progdefaults.contestiatones == 3 && progdefaults.contestiabw == 2)
+			rmode = RSID_CONTESTIA_16_500;
+		else if (progdefaults.contestiatones == 3 && progdefaults.contestiabw == 3)
+			rmode = RSID_CONTESTIA_16_1000;
+		else if (progdefaults.contestiatones == 3 && progdefaults.contestiabw == 4)
+			rmode = RSID_CONTESTIA_16_2000;
+
+		else if (progdefaults.contestiatones == 4 && progdefaults.contestiabw == 3)
+			rmode = RSID_CONTESTIA_32_1000;
+		else if (progdefaults.contestiatones == 4 && progdefaults.contestiabw == 4)
+			rmode = RSID_CONTESTIA_32_2000;
+
+		else if (progdefaults.contestiatones == 5 && progdefaults.contestiabw == 2)
+			rmode = RSID_CONTESTIA_64_500;
+		else if (progdefaults.contestiatones == 5 && progdefaults.contestiabw == 3)
+			rmode = RSID_CONTESTIA_64_1000;
+		else if (progdefaults.contestiatones == 5 && progdefaults.contestiabw == 4)
+			rmode = RSID_CONTESTIA_64_2000;
+
+		else
+			return false;
+		return true;
+		break;
+
+	case MODE_DOMINOEX4:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_4_FEC;
+		break;
+	case MODE_DOMINOEX5:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_5_FEC;
+		break;
+	case MODE_DOMINOEX8:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_8_FEC;
+		break;
+	case MODE_DOMINOEX11:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_11_FEC;
+		break;
+	case MODE_DOMINOEX16:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_16_FEC;
+		break;
+	case MODE_DOMINOEX22:
+		if (progdefaults.DOMINOEX_FEC)
+			rmode = RSID_DOMINOEX_22_FEC;
+		break;
+
+	case MODE_MT63_500S:
+		rmode = RSID_MT63_500_ST;
+		break;
+	case MODE_MT63_500L:
+		rmode = RSID_MT63_500_LG;
+		break;
+	case MODE_MT63_1000S:
+		rmode = RSID_MT63_1000_ST;
+		break;
+	case MODE_MT63_1000L:
+		rmode = RSID_MT63_1000_LG;
+		break;
+	case MODE_MT63_2000S:
+		rmode = RSID_MT63_2000_ST;
+		break;
+	case MODE_MT63_2000L:
+		rmode = RSID_MT63_2000_LG;
+		break;
+	}
+
+// if rmode is still unset, look it up
+// Try secondary table first
+	if (rmode == RSID_NONE) {
+		for (size_t i = 0; i < sizeof(rsid_ids_2)/sizeof(*rsid_ids_2); i++) {
+			if (mode == rsid_ids_2[i].mode) {
+				rmode = RSID_ESCAPE;
+				rmode2 = rsid_ids_2[i].rs;
+				break;
+			}
+		}
+		if (rmode2 == RSID_NONE2) {
+			for (size_t i = 0; i < sizeof(rsid_ids_1)/sizeof(*rsid_ids_1); i++) {
+				if (mode == rsid_ids_1[i].mode) {
+					rmode = rsid_ids_1[i].rs;
+					break;
+				}
+			}
+		}
+	}
+	if (rmode == RSID_NONE) {
+		LOG_DEBUG("%s mode is not assigned an RSID", mode_info[mode].sname);
+		return false;
+	}
+	return true;
+}
+
+void cRsId::send_eot()
+{
+	unsigned char rsid[RSID_NSYMBOLS];
+	double sr;
+	size_t len;
+	int iTone;
+	double freq, phaseincr;
+	double fr;
+	double phase;
+
+	Encode(RSID_EOT, rsid);
+	sr = active_modem->get_samplerate();
+	len = (size_t)floor(RSID_SYMLEN * sr);
+	if (unlikely(len != symlen)) {
+		symlen = len;
+		delete [] outbuf;
+		outbuf = new double[symlen];
+	}
+
+// transmit 5 symbol periods of silence at beginning of rsid
+	memset(outbuf, 0, symlen * sizeof(*outbuf));
+	for (int i = 0; i < 5; i++)
+		active_modem->ModulateXmtr(outbuf, symlen);
+
+// transmit sequence of 15 symbols (tones)
+	fr = 1.0 * active_modem->get_txfreq_woffset() - (RSID_SAMPLE_RATE * 7 / 1024);
+	phase = 0.0;
+
+	for (int i = 0; i < 15; i++) {
+		iTone = rsid[i];
+		if (active_modem->get_reverse())
+		iTone = 15 - iTone;
+		freq = fr + iTone * RSID_SAMPLE_RATE / 1024;
+		phaseincr = 2.0 * M_PI * freq / sr;
+
+		for (size_t j = 0; j < symlen; j++) {
+			phase += phaseincr;
+			if (phase > 2.0 * M_PI) phase -= 2.0 * M_PI;
+			outbuf[j] = sin(phase);
+		}
+		active_modem->ModulateXmtr(outbuf, symlen);
+	}
+}
+
+void cRsId::send(bool preRSID)
+{
+	trx_mode mode = active_modem->get_mode();
+
+	if (!progdefaults.rsid_tx_modes.test(mode)) {
+		LOG_DEBUG("Mode %s excluded, not sending RSID", mode_info[mode].sname);
+		return;
+	}
+
+	if (!progdefaults.rsid_post && !preRSID)
+		return;
+
+	if (!assigned(mode)) return;
+
+	unsigned char rsid[RSID_NSYMBOLS];
+	double sr;
+	size_t len;
+	int iTone;
+	double freq, phaseincr;
+	double fr;
+	double phase;
+
+	Encode(rmode, rsid);
+	sr = active_modem->get_samplerate();
+	len = (size_t)floor(RSID_SYMLEN * sr);
+	if (unlikely(len != symlen)) {
+		symlen = len;
+		delete [] outbuf;
+		outbuf = new double[symlen];
+	}
+
+// transmit 5 symbol periods of silence at beginning of rsid
+	memset(outbuf, 0, symlen * sizeof(*outbuf));
+	for (int i = 0; i < 5; i++)
+		active_modem->ModulateXmtr(outbuf, symlen);
+
+// transmit sequence of 15 symbols (tones)
+	fr = 1.0 * active_modem->get_txfreq_woffset() - (RSID_SAMPLE_RATE * 7 / 1024);
+	phase = 0.0;
+
+	for (int i = 0; i < 15; i++) {
+		iTone = rsid[i];
+		if (active_modem->get_reverse())
+		iTone = 15 - iTone;
+		freq = fr + iTone * RSID_SAMPLE_RATE / 1024;
+		phaseincr = 2.0 * M_PI * freq / sr;
+
+		for (size_t j = 0; j < symlen; j++) {
+			phase += phaseincr;
+			if (phase > 2.0 * M_PI) phase -= 2.0 * M_PI;
+			outbuf[j] = sin(phase);
+		}
+		active_modem->ModulateXmtr(outbuf, symlen);
+	}
+
+	if (rmode == RSID_ESCAPE && rmode2 != RSID_NONE2) {
+// transmit 10 symbol periods of silence between rsid sequences
+		memset(outbuf, 0, symlen * sizeof(*outbuf));
+		for (int i = 0; i < 10; i++)
+			active_modem->ModulateXmtr(outbuf, symlen);
+
+		Encode(rmode2, rsid);
+		sr = active_modem->get_samplerate();
+		len = (size_t)floor(RSID_SYMLEN * sr);
+		if (unlikely(len != symlen)) {
+			symlen = len;
+			delete [] outbuf;
+			outbuf = new double[symlen];
+		}
+// transmit sequence of 15 symbols (tones)
+		fr = 1.0 * active_modem->get_txfreq_woffset() - (RSID_SAMPLE_RATE * 7 / 1024);
+		phase = 0.0;
+
+		for (int i = 0; i < 15; i++) {
+			iTone = rsid[i];
+			if (active_modem->get_reverse())
+			iTone = 15 - iTone;
+			freq = fr + iTone * RSID_SAMPLE_RATE / 1024;
+			phaseincr = 2.0 * M_PI * freq / sr;
+
+			for (size_t j = 0; j < symlen; j++) {
+				phase += phaseincr;
+				if (phase > 2.0 * M_PI) phase -= 2.0 * M_PI;
+				outbuf[j] = sin(phase);
+			}
+			active_modem->ModulateXmtr(outbuf, symlen);
+		}
+	}
+
+	// 5 symbol periods of silence at end of transmission
+	// and between RsID and the data signal
+	int nperiods = 5;
+	memset(outbuf, 0, symlen * sizeof(*outbuf));
+	for (int i = 0; i < nperiods; i++)
+		active_modem->ModulateXmtr(outbuf, symlen);
+
+}
+
diff --git a/rsid.h b/rsid.h
new file mode 100644
index 0000000..867b784
--- /dev/null
+++ b/rsid.h
@@ -0,0 +1,78 @@
+// ----------------------------------------------------------------------------
+//
+//	rsid.h
+//
+// Copyright (C) 2008, 2009
+//		Dave Freese, W1HKJ
+// Copyright (C) 2009
+//		Stelios Bounanos, M0GLD
+//
+// This file is part of fldigi.
+//
+// Fldigi is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Fldigi is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with fldigi.  If not, see <http://www.gnu.org/licenses/>.
+// ----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Tone separation: 10.766Hz
+// Integer tone separator (x 16): 172
+// Error on 16 tones: 0.25Hz
+
+// Tone duration: 0.093 sec
+// Tone duration, #samples at 8ksps: 743
+// Error on 15 tones: negligible
+
+// 1024 samples -> 512 tones
+// 2048 samples, second half zeros
+
+// each 512 samples new FFT
+// ----------------------------------------------------------------------------
+
+// This code has been modified to work with QtSOundModem by John Wiseman G8BPQ
+
+// Main change is to run at 12000 samples/sec and only support QtSM Modes. This
+// makes it incompatble with MultiPSK and fldigi
+
+// Needed code has been extracted and converted to C
+
+#ifndef RSID_H
+#define RSID_H
+
+#include "globals.h"
+//#include "gfft.h"
+
+//#define RSID_SAMPLE_RATE 11025.0f
+#define RSID_SAMPLE_RATE 12000.0f
+
+#define RSID_FFT_SAMPLES 	512
+#define RSID_FFT_SIZE		1024
+#define RSID_ARRAY_SIZE	 	(RSID_FFT_SIZE * 2)
+#define RSID_BUFFER_SIZE	(RSID_ARRAY_SIZE * 2)
+
+#define RSID_NSYMBOLS    15
+#define RSID_NTIMES      (RSID_NSYMBOLS * 2)
+#define RSID_PRECISION   2.7 // detected frequency precision in Hz
+
+// each rsid symbol has a duration equal to 1024 samples at 11025 Hz smpl rate
+#define RSID_SYMLEN		(1024.0 / RSID_SAMPLE_RATE) // 0.09288 // duration of each rsid symbol
+
+enum {
+	RSID_BANDWIDTH_500 = 0,
+	RSID_BANDWIDTH_1K,
+	RSID_BANDWIDTH_WIDE,
+};
+
+typedef double rs_fft_type;
+
+
+#endif
diff --git a/rsid_defs.cxx b/rsid_defs.cxx
new file mode 100644
index 0000000..3bbe71a
--- /dev/null
+++ b/rsid_defs.cxx
@@ -0,0 +1,53 @@
+// ----------------------------------------------------------------------------
+// Copyright (C) 2014
+//              David Freese, W1HKJ
+//
+// This file is part of fldigi
+//
+// fldigi is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// fldigi is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// ----------------------------------------------------------------------------
+
+// Syntax: ELEM_(rsid_code, rsid_tag, fldigi_mode)
+// fldigi_mode is NUM_MODES if mode is not available in fldigi,
+// otherwise one of the tags defined in globals.h.
+// rsid_tag is stringified and may be shown to the user.
+
+
+/*
+        ELEM_(263, ESCAPE, NUM_MODES)                   \
+*/
+#undef ELEM_
+#define RSID_LIST                                       \
+                                                        \
+/* ESCAPE used to transition to 2nd RSID set */         \
+                                                        \
+        ELEM_(263, EOT, MODE_EOT)                       \
+        ELEM_(35, PACKET_300, NUM_MODES)                \
+        ELEM_(36, PACKET_1200, NUM_MODES)               \
+        ELEM_(155, PACKET_PSK1200, NUM_MODES)           \
+                                                        \
+        /* NONE must be the last element */             \
+        ELEM_(0, NONE, NUM_MODES)
+
+#define ELEM_(code_, tag_, mode_) RSID_ ## tag_ = code_,
+enum { RSID_LIST };
+#undef ELEM_
+
+#define ELEM_(code_, tag_, mode_) { RSID_ ## tag_, mode_, #tag_ },
+
+const struct RSIDs rsid_ids_1[] = { RSID_LIST };
+
+#undef ELEM_
+
+const int rsid_ids_size1 = sizeof(rsid_ids_1)/sizeof(*rsid_ids_1) - 1;
diff --git a/sm_main.c b/sm_main.c
new file mode 100644
index 0000000..ec4ba3b
--- /dev/null
+++ b/sm_main.c
@@ -0,0 +1,2844 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+newsamp
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include "UZ7HOStuff.h"
+
+void make_core_BPF(UCHAR snd_ch, short freq, short width);
+void make_core_TXBPF(UCHAR snd_ch, float freq, float width);
+void make_core_INTR(UCHAR snd_ch);
+void make_core_LPF(UCHAR snd_ch, short width);
+void wf_pointer(int snd_ch);
+
+char modes_name[modes_count][20] = 
+{
+	"AFSK AX.25 300bd","AFSK AX.25 1200bd","AFSK AX.25 600bd","AFSK AX.25 2400bd",
+	"BPSK AX.25 1200bd","BPSK AX.25 600bd","BPSK AX.25 300bd","BPSK AX.25 2400bd",
+	"QPSK AX.25 4800bd","QPSK AX.25 3600bd","QPSK AX.25 2400bd","BPSK FEC 4x100bd",
+	"DW QPSK V26A 2400bd","DW 8PSK V27 4800bd","DW QPSK V26B 2400bd", "ARDOP Packet"
+};
+
+typedef struct wavehdr_tag {
+	unsigned short *  lpData;   /* pointer to locked data buffer */
+	int dwBufferLength;         /* length of data buffer */
+	int dwBytesRecorded;        /* used for input only */
+	int * dwUser;               /* for client's use */
+	int dwFlags;                /* assorted flags (see defines) */
+	int dwLoops;                /* loop control counter */
+	struct wavehdr_tag *lpNext; /* reserved for driver */
+	int *   reserved;           /* reserved for driver */
+} WAVEHDR, *PWAVEHDR,  * NPWAVEHDR,  * LPWAVEHDR;
+
+extern int pnt_change[5];
+int debugmode = 0;
+extern float src_buf[5][2048];
+extern Byte RCVR[5];
+
+int SatelliteMode = 0;
+
+int UDPServerPort = 8884;
+int UDPClientPort = 8888;
+int TXPort = 8884;
+
+BOOL Firstwaterfall = 1;
+BOOL Secondwaterfall = 1;
+
+BOOL multiCore = FALSE;
+
+/*
+type
+  TComboBox  =  class(StdCtrls.TComboBox)
+  private
+    procedure CMMouseWheel(var msg TCMMouseWheel); message CM_MOUSEWHEEL;
+  end;
+  TData16  =  array [0..4095] of smallint;
+  PData16  =  ^TData16;
+  TWaveHeader  =  record
+    RIFF        dword;
+    ChunkLen    integer;
+    WAVE        dword;
+    fmt         dword;
+    FormatLen   integer;
+    Format      word;
+    Channels    word;
+    Frequency   integer;
+    BytesPS     integer;
+    BlockAlign  word;
+    BitsPS      word;
+    data        dword;
+    DataLen     integer
+  end;
+  TForm1  =  class(TForm)
+    Panel5 TPanel;
+    ServerSocket1 TServerSocket;
+    MainMenu1 TMainMenu;
+    Settings1 TMenuItem;
+    OutputVolume1 TMenuItem;
+    InputVolume1 TMenuItem;
+    CoolTrayIcon1 TCoolTrayIcon;
+    ImageList1 TImageList;
+    ABout1 TMenuItem;
+    Panel1 TPanel;
+    Panel2 TPanel;
+    View1 TMenuItem;
+    Firstwaterfall1 TMenuItem;
+    Secondwaterfall1 TMenuItem;
+    Panel3 TPanel;
+    StringGrid1 TStringGrid;
+    Devices1 TMenuItem;
+    Statustable1 TMenuItem;
+    Monitor1 TMenuItem;
+    Panel4 TPanel;
+    PaintBox2 TPaintBox;
+    Filters1 TMenuItem;
+    Clearmonitor1 TMenuItem;
+    RxRichEdit1 TRxRichEdit;
+    MemoPopupMenu1 TPopupMenu;
+    Copytext1 TMenuItem;
+    Label1 TLabel;
+    Label5 TLabel;
+    ApplicationEvents1 TApplicationEvents;
+    PaintBox1 TPaintBox;
+    PaintBox3 TPaintBox;
+    ServerSocket2 TServerSocket;
+    Font1 TMenuItem;
+    FontDialog1 TFontDialog;
+    N1 TMenuItem;
+    Calibration1 TMenuItem;
+    Panel9 TPanel;
+    Panel6 TPanel;
+    Label4 TLabel;
+    Shape2 TShape;
+    ComboBox2 TComboBox;
+    SpinEdit2 TSpinEdit;
+    Panel7 TPanel;
+    Label3 TLabel;
+    Shape1 TShape;
+    ComboBox1 TComboBox;
+    SpinEdit1 TSpinEdit;
+    Panel8 TPanel;
+    Label2 TLabel;
+    TrackBar1 TTrackBar;
+    CheckBox1 TCheckBox;
+    OpenDialog1 TOpenDialog;
+    procedure FormCreate(Sender TObject);
+    procedure TrackBar1Change(Sender TObject);
+    procedure PaintBox1MouseMove(Sender TObject; Shift TShiftState; X,
+      Y Integer);
+    procedure PaintBox1MouseDown(Sender TObject; Button TMouseButton;
+      Shift TShiftState; X, Y Integer);
+    procedure ServerSocket1ClientRead(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure ServerSocket1ClientError(Sender TObject;
+      Socket TCustomWinSocket; ErrorEvent TErrorEvent;
+      var ErrorCode Integer);
+    procedure OutputVolume1Click(Sender TObject);
+    procedure InputVolume1Click(Sender TObject);
+    procedure ServerSocket1ClientConnect(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure ServerSocket1ClientDisconnect(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure CoolTrayIcon1Click(Sender TObject);
+    procedure CoolTrayIcon1Cycle(Sender TObject; NextIndex Integer);
+    procedure ABout1Click(Sender TObject);
+    procedure PaintBox3MouseDown(Sender TObject; Button TMouseButton;
+      Shift TShiftState; X, Y Integer);
+    procedure PaintBox3MouseMove(Sender TObject; Shift TShiftState; X,
+      Y Integer);
+    procedure Firstwaterfall1Click(Sender TObject);
+    procedure Secondwaterfall1Click(Sender TObject);
+    procedure Devices1Click(Sender TObject);
+    procedure Statustable1Click(Sender TObject);
+    procedure Monitor1Click(Sender TObject);
+    procedure FormPaint(Sender TObject);
+    procedure Filters1Click(Sender TObject);
+    procedure SpinEdit1Change(Sender TObject);
+    procedure SpinEdit2Change(Sender TObject);
+    procedure Clearmonitor1Click(Sender TObject);
+    procedure Copytext1Click(Sender TObject);
+    procedure PaintBox3MouseUp(Sender TObject; Button TMouseButton;
+      Shift TShiftState; X, Y Integer);
+    procedure PaintBox1MouseUp(Sender TObject; Button TMouseButton;
+      Shift TShiftState; X, Y Integer);
+    procedure ApplicationEvents1Minimize(Sender TObject);
+    procedure ApplicationEvents1Restore(Sender TObject);
+    procedure ServerSocket2ClientConnect(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure ServerSocket2ClientDisconnect(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure ServerSocket2ClientError(Sender TObject;
+      Socket TCustomWinSocket; ErrorEvent TErrorEvent;
+      var ErrorCode Integer);
+    procedure ServerSocket2ClientRead(Sender TObject;
+      Socket TCustomWinSocket);
+    procedure Font1Click(Sender TObject);
+    procedure Calibration1Click(Sender TObject);
+    procedure ComboBox1Change(Sender TObject);
+    procedure ComboBox1KeyDown(Sender TObject; var Key Word;
+      Shift TShiftState);
+    procedure ComboBox1KeyPress(Sender TObject; var Key Char);
+    procedure ComboBox2Change(Sender TObject);
+    procedure FormDestroy(Sender TObject);
+  private
+    { Private declarations }
+    procedure BufferFull(var Msg TMessage); Message MM_WIM_DATA;
+    procedure BufferFull1(var Msg TMessage); Message MM_WOM_DONE;
+    procedure make_wave_buf(snd_ch byte; buf PChar);
+    procedure disp2(snd_ch byte);
+    procedure create_timer1;
+    procedure free_timer1;
+    procedure show_panels;
+    procedure show_combobox;
+    procedure Timer_Event2;
+    procedure waterfall_init;
+    procedure waterfall_free;
+  public
+    { Public declarations }
+    function get_idx_by_name(name string) word;
+    function frame_monitor(s,code string; tx_stat boolean) string;
+    procedure ChangePriority;
+    procedure put_frame(snd_ch byte; frame,code string; tx_stat,excluded boolean);
+    procedure show_grid;
+    procedure RX2TX(snd_ch byte);
+    procedure TX2RX(snd_ch byte);
+    procedure WriteIni;
+    procedure ReadIni;
+    procedure init_8P4800(snd_ch byte);
+    procedure init_DW2400(snd_ch byte);
+    procedure init_AE2400(snd_ch byte);
+    procedure init_MP400(snd_ch byte);
+    procedure init_Q4800(snd_ch byte);
+    procedure init_Q3600(snd_ch byte);
+    procedure init_Q2400(snd_ch byte);
+    procedure init_P2400(snd_ch byte);
+    procedure init_P1200(snd_ch byte);
+    procedure init_P600(snd_ch byte);
+    procedure init_P300(snd_ch byte);
+    procedure init_300(snd_ch byte);
+    procedure init_600(snd_ch byte);
+    procedure init_1200(snd_ch byte);
+    procedure init_2400(snd_ch byte);
+    procedure init_speed(snd_ch byte);
+    procedure get_filter_values(idx byte; var dbpf,dtxbpf,dbpftap,dlpf,dlpftap word);
+    procedure show_mode_panels;
+    procedure show_modes;
+    procedure show_freq_a;
+    procedure show_freq_b;
+    procedure ChkSndDevName;
+    procedure StartRx;
+    procedure StartTx(snd_ch byte);
+    procedure StopRx;
+    procedure StopTx(snd_ch byte);
+    procedure StartAGW;
+    procedure StartKISS;
+    procedure wf_scale;
+    procedure wf_pointer(snd_ch byte);
+  end;
+
+var
+/*/
+
+BOOL MinOnStart  =  0;
+//RS TReedSolomon;
+//  Form1 TForm1;
+//  WaveFormat TWaveFormatEx;
+int Channels = 2;
+int BitsPerSample = 16;
+float TX_Samplerate = 12000;
+float RX_Samplerate = 12000;
+int RX_SR = 11025;
+int TX_SR = 11025;
+int RX_PPM = 0;
+int TX_PPM = 0;
+int tx_bufsize = 512;
+int rx_bufsize = 512;
+int tx_bufcount = 16;
+int rx_bufcount = 16;
+int fft_size = 2048;
+int  mouse_down[2] = {0, 0};
+//UCHAR * RX_pBuf array[257];
+//  RX_header array[1..256] of TWaveHdr;
+//  TX_pBuf array[1..4,1..256] of pointer;
+//TX_header array[1..4,1..256] of TWaveHdr;
+UCHAR calib_mode[5] = {0,0,0,0};
+UCHAR snd_status [5] = {0,0,0,0};
+UCHAR buf_status [5]  = {0,0,0,0};
+UCHAR tx_buf_num1 [5] = {0,0,0,0};
+UCHAR tx_buf_num [5] = {0,0,0,0};
+
+extern short active_rx_freq[5];
+
+
+
+int speed[5] = {0,0,0,0};
+int panels[6] = {1,1,1,1,1};
+
+float fft_window_arr[2048];
+float  fft_s[2048], fft_d[2048];
+
+short fft_buf[5][2048];
+UCHAR fft_disp[5][2048];
+//  bm array[1..4] of TBitMap;
+//  bm1,bm2,bm3 TBitMap;
+
+//  WaveInHandle hWaveIn;
+//  WaveOutHandle array[1..4] of hWaveOut;
+int RXBufferLength;
+
+short * data1;
+
+int grid_time = 0;
+int fft_mult = 0;
+int fft_spd = 3;
+int grid_timer = 0;
+int stop_wf  = 0;
+int raduga = DISP_RGB;
+char snd_rx_device_name[32] = "";
+char snd_tx_device_name[32] = "";
+int snd_rx_device = 0;
+int snd_tx_device = 0;
+UCHAR mod_icon_status = MOD_IDLE;
+UCHAR last_mod_icon_status = MOD_IDLE;
+UCHAR icon_timer = 0;
+//  TelIni TIniFile;
+char cur_dir[] = "";
+//  TimerId1 cardinal;
+//  TimerId2 cardinal;
+UCHAR TimerStat1 = TIMER_FREE;
+UCHAR TimerStat2 = TIMER_FREE;
+int stat_log = FALSE;
+
+int PTT_device = FALSE;
+int RX_device = FALSE;
+int TX_device = FALSE;
+int TX_rotate = FALSE;
+int UsingBothChannels = FALSE;
+int UsingLeft = FALSE;
+int UsingRight = FALSE;
+
+int SCO = FALSE;
+int DualPTT = TRUE;
+UCHAR  DebugMode = 0;
+UCHAR TimerEvent = TIMER_EVENT_OFF;
+int nr_monitor_lines = 50;
+int UTC_Time = FALSE;
+int MainPriority = 0;
+//  MainThreadHandle THandle;
+UCHAR w_state = WIN_MAXIMIZED;
+ 
+  /*
+implementation
+
+{$R *.DFM}
+
+uses ax25_mod, ax25_demod, ax25, ax25_l2, ax25_ptt, ax25_agw, ax25_about, rgb_rad,
+  AX25_set, ax25_filter, AX25_modem_set, kiss_mode, ax25_calibration;
+
+procedure TComboBox.CMMouseWheel(var msg TCMMouseWheel);
+begin
+  if SendMessage(GetFocus, CB_GETDROPPEDSTATE, 0, 0)  =  0 then msg.Result  =  1;
+end;
+
+procedure TForm1.ChangePriority;
+begin
+  case MainPriority of
+    0  SetThreadPriority(MainThreadHandle,THREAD_PRIORITY_NORMAL);
+    1  SetThreadPriority(MainThreadHandle,THREAD_PRIORITY_ABOVE_NORMAL);
+    2  SetThreadPriority(MainThreadHandle,THREAD_PRIORITY_HIGHEST);
+    3  SetThreadPriority(MainThreadHandle,THREAD_PRIORITY_TIME_CRITICAL);
+  end;
+end;
+
+procedure TForm1.show_modes;
+var
+  s string;
+begin
+  s = MODEM_CAPTION+" - Ver "+MODEM_VERSION+" - ["+modes_name[Speed[1]];
+  if dualchan then s = s+" - "+modes_name[Speed[2]];
+  form1.Caption = s+"]";
+end;
+
+procedure TForm1.show_freq_a;
+begin
+  SpinEdit1.Value = round(rx_freq[1]);
+  SpinEdit1.Refresh;
+end;
+
+procedure TForm1.show_freq_b;
+begin
+  SpinEdit2.Value = round(rx_freq[2]);
+  SpinEdit2.Refresh;
+end;
+*/
+void get_filter_values(UCHAR snd_ch)
+{
+	//, unsigned short dbpf,
+//unsigned short dtxbpf,
+//unsigned short dbpftap,
+//unsigned short dlpf, 
+//unsigned short dlpftap)
+//	speed[snd_ch], bpf[snd_ch], txbpf[snd_ch], bpf_tap[snd_ch], lpf[snd_ch], lpf_tap[snd_ch]);
+
+	switch (speed[snd_ch])
+	{
+	case SPEED_8P4800:
+
+		lpf[snd_ch] = MODEM_8P4800_LPF;
+		bpf[snd_ch] = MODEM_8P4800_BPF;
+		txbpf[snd_ch] = MODEM_8P4800_TXBPF;
+		BPF_tap[snd_ch] = MODEM_8P4800_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_8P4800_LPF_TAP;
+		break;
+
+	case SPEED_MP400:
+
+		lpf[snd_ch] = MODEM_MP400_LPF;
+		bpf[snd_ch] = MODEM_MP400_BPF;
+		txbpf[snd_ch] = MODEM_MP400_TXBPF;
+		BPF_tap[snd_ch] = MODEM_MP400_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_MP400_LPF_TAP;
+
+		break;
+
+
+	case SPEED_Q4800:
+
+		lpf[snd_ch] = MODEM_Q4800_LPF;
+		bpf[snd_ch] = MODEM_Q4800_BPF;
+		txbpf[snd_ch] = MODEM_Q4800_TXBPF;
+		BPF_tap[snd_ch] = MODEM_Q4800_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_Q4800_LPF_TAP;
+
+		break;
+
+	case SPEED_Q3600:
+
+		lpf[snd_ch] = MODEM_Q3600_LPF;
+		bpf[snd_ch] = MODEM_Q3600_BPF;
+		txbpf[snd_ch] = MODEM_Q3600_TXBPF;
+		BPF_tap[snd_ch] = MODEM_Q3600_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_Q3600_LPF_TAP;
+		break;
+
+	case SPEED_Q2400:
+
+		lpf[snd_ch] = MODEM_Q2400_LPF;
+		bpf[snd_ch] = MODEM_Q2400_BPF;
+		txbpf[snd_ch] = MODEM_Q2400_TXBPF;
+		BPF_tap[snd_ch] = MODEM_Q2400_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_Q2400_LPF_TAP;
+
+		break;
+
+	case SPEED_DW2400:
+	case SPEED_AE2400:
+
+
+		lpf[snd_ch] = MODEM_DW2400_LPF;
+		bpf[snd_ch] = MODEM_DW2400_BPF;
+		txbpf[snd_ch] = MODEM_DW2400_TXBPF;
+		BPF_tap[snd_ch] = MODEM_DW2400_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_DW2400_LPF_TAP;
+		break;
+
+	case SPEED_P2400:
+
+		lpf[snd_ch] = MODEM_P2400_LPF;
+		bpf[snd_ch] = MODEM_P2400_BPF;
+		txbpf[snd_ch] = MODEM_P2400_TXBPF;
+		BPF_tap[snd_ch] = MODEM_P2400_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_P2400_LPF_TAP;
+		break;
+
+	case SPEED_P1200:
+
+		lpf[snd_ch] = MODEM_P1200_LPF;
+		bpf[snd_ch] = MODEM_P1200_BPF;
+		txbpf[snd_ch] = MODEM_P1200_TXBPF;
+		BPF_tap[snd_ch] = MODEM_P1200_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_P1200_LPF_TAP;
+		break;
+
+	case SPEED_P600:
+
+		lpf[snd_ch] = MODEM_P600_LPF;
+		bpf[snd_ch] = MODEM_P600_BPF;
+		txbpf[snd_ch] = MODEM_P600_TXBPF;
+		BPF_tap[snd_ch] = MODEM_P600_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_P600_LPF_TAP;
+		break;
+
+	case SPEED_P300:
+
+		lpf[snd_ch] = MODEM_P300_LPF;
+		bpf[snd_ch] = MODEM_P300_BPF;
+		txbpf[snd_ch] = MODEM_P300_TXBPF;
+		BPF_tap[snd_ch] = MODEM_P300_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_P300_LPF_TAP;
+		break;
+
+	case SPEED_300:
+
+		lpf[snd_ch] = MODEM_300_LPF;
+		bpf[snd_ch] = MODEM_300_BPF;
+		txbpf[snd_ch] = MODEM_300_TXBPF;
+		BPF_tap[snd_ch] = MODEM_300_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_300_LPF_TAP;
+
+		break;
+
+	case SPEED_600:
+
+		lpf[snd_ch] = MODEM_600_LPF;
+		bpf[snd_ch] = MODEM_600_BPF;
+		txbpf[snd_ch] = MODEM_600_TXBPF;
+		BPF_tap[snd_ch] = MODEM_600_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_600_LPF_TAP;
+
+		break;
+
+	case SPEED_1200:
+
+		lpf[snd_ch] = MODEM_1200_LPF;
+		bpf[snd_ch] = MODEM_1200_BPF;
+		txbpf[snd_ch] = MODEM_1200_TXBPF;
+		BPF_tap[snd_ch] = MODEM_1200_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_1200_LPF_TAP;
+		break;
+
+	case SPEED_2400:
+
+		lpf[snd_ch] = MODEM_2400_LPF;
+		bpf[snd_ch] = MODEM_2400_BPF;
+		txbpf[snd_ch] = MODEM_2400_TXBPF;
+		BPF_tap[snd_ch] = MODEM_2400_BPF_TAP;
+		LPF_tap[snd_ch] = MODEM_2400_LPF_TAP;
+		break;
+	}
+
+}
+
+
+void init_2400(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_FSK;
+	rx_shift[snd_ch] = 1805;
+	rx_baudrate[snd_ch] = 2400;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_1200(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_FSK;
+	rx_shift[snd_ch] = 1000;
+
+	if (stdtones)
+		rx_freq[snd_ch] = 1700;
+
+	rx_baudrate[snd_ch] = 1200;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_600(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_FSK;
+	rx_shift[snd_ch] = 450;
+
+	rx_baudrate[snd_ch] = 600;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_300(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_FSK;
+	rx_shift[snd_ch] = 200;
+	rx_baudrate[snd_ch] = 300;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_MP400(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_MPSK;
+	rx_shift[snd_ch] = 175 /*sbc*/ * 3;
+	rx_baudrate[snd_ch] = 100;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+
+void init_8P4800(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_8PSK;
+	if (stdtones)
+		rx_freq[snd_ch] = 1800;
+
+	rx_shift[snd_ch] = 1600;
+	rx_baudrate[snd_ch] = 1600;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_AE2400(int snd_ch)
+{
+	qpsk_set[snd_ch].mode = QPSK_V26;
+	modem_mode[snd_ch] = MODE_PI4QPSK;
+
+	if (stdtones)
+		rx_freq[snd_ch] = 1800;
+
+	rx_shift[snd_ch] = 1200;
+	rx_baudrate[snd_ch] = 1200;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_DW2400(int snd_ch)
+{
+	qpsk_set[snd_ch].mode = QPSK_V26;
+	modem_mode[snd_ch] = MODE_QPSK;
+
+	if (stdtones)
+		rx_freq[snd_ch] = 1800;
+
+	rx_shift[snd_ch] = 1200;
+	rx_baudrate[snd_ch] = 1200;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_Q4800(int snd_ch)
+{
+	qpsk_set[snd_ch].mode = QPSK_SM;
+	modem_mode[snd_ch] = MODE_QPSK;
+	rx_shift[snd_ch] = 2400;
+	rx_baudrate[snd_ch] = 2400;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_Q3600(int snd_ch)
+{
+	qpsk_set[snd_ch].mode = QPSK_SM;
+	modem_mode[snd_ch] = MODE_QPSK;
+	rx_shift[snd_ch] = 1800;
+	rx_baudrate[snd_ch] = 1800;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_Q2400(int snd_ch)
+{
+  qpsk_set[snd_ch].mode = QPSK_SM;
+  modem_mode[snd_ch] = MODE_QPSK;
+  rx_shift[snd_ch] = 1200;
+  rx_baudrate[snd_ch] = 1200;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_P2400(int snd_ch)
+{
+  modem_mode[snd_ch] = MODE_BPSK;
+  rx_shift[snd_ch] = 2400;
+  rx_baudrate[snd_ch] = 2400;
+ 	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_P1200(int snd_ch)
+{
+  modem_mode[snd_ch] = MODE_BPSK;
+  rx_shift[snd_ch] = 1200;
+  rx_baudrate[snd_ch] = 1200;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_P600(int snd_ch)
+{
+  modem_mode[snd_ch] = MODE_BPSK;
+  rx_shift[snd_ch] = 600;
+  rx_baudrate[snd_ch] = 600;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_P300(int snd_ch)
+{
+  modem_mode[snd_ch] = MODE_BPSK;
+  rx_shift[snd_ch] = 300;
+  rx_baudrate[snd_ch] = 300;
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+void init_ARDOP(int snd_ch)
+{
+	modem_mode[snd_ch] = MODE_ARDOP;
+	rx_shift[snd_ch] = 500;
+	rx_freq[snd_ch] = 1500;
+	rx_baudrate[snd_ch] = 500;
+
+	if (modem_def[snd_ch])
+		get_filter_values(snd_ch);
+}
+
+
+void init_speed(int snd_ch);
+
+void set_speed(int snd_ch, int Modem)
+{
+	speed[snd_ch] = Modem;
+
+	init_speed(snd_ch);
+
+}
+
+void init_speed(int snd_ch)
+{
+	int low, high;
+
+	/*
+
+  if (BPF[snd_ch]>round(rx_samplerate/2) then BPF[snd_ch] = round(rx_samplerate/2);
+  if TXBPF[snd_ch]>round(rx_samplerate/2) then TXBPF[snd_ch] = round(rx_samplerate/2);
+  if LPF[snd_ch]>round(rx_samplerate/2) then LPF[snd_ch] = round(rx_samplerate/2);
+  if BPF[snd_ch]<1 then BPF[snd_ch] = 1;
+  if TXBPF[snd_ch]<1 then TXBPF[snd_ch] = 1;
+  if LPF[snd_ch]<1 then LPF[snd_ch] = 1;
+  if TXDelay[snd_ch]<1 then TXDelay[snd_ch] = 1;
+  if TXTail[snd_ch]<1 then TXTail[snd_ch] = 1;
+  if BPF_tap[snd_ch]>1024 then BPF_tap[snd_ch] = 1024;
+  if LPF_tap[snd_ch]>512 then LPF_tap[snd_ch] = 512;
+  if BPF_tap[snd_ch]<8 then BPF_tap[snd_ch] = 8;
+  if LPF_tap[snd_ch]<8 then LPF_tap[snd_ch] = 8;
+  if not (RCVR[snd_ch] in [0..8]) then RCVR[snd_ch] = 0;
+  if not (rcvr_offset[snd_ch] in [0..100]) then rcvr_offset[snd_ch] = 30;
+  if not (speed[snd_ch] in [0..modes_count]) then speed[snd_ch] = SPEED_300;
+*/
+	switch (speed[snd_ch])
+	{
+	case SPEED_8P4800:
+		init_8P4800(snd_ch);
+		break;
+
+	case SPEED_AE2400:
+		init_AE2400(snd_ch);
+		break;
+
+	case SPEED_DW2400:
+		init_DW2400(snd_ch);
+		break;
+
+	case SPEED_MP400:
+		init_MP400(snd_ch);
+		break;
+	case SPEED_Q4800:
+		init_Q4800(snd_ch);
+		break;
+
+	case SPEED_Q3600:
+		init_Q3600(snd_ch);
+		break;
+
+	case SPEED_Q2400:
+		init_Q2400(snd_ch);
+		break;
+
+	case SPEED_P2400:
+		init_P2400(snd_ch);
+		break;
+
+	case SPEED_P1200:
+		init_P1200(snd_ch);
+		break;
+
+	case SPEED_P600:
+		init_P600(snd_ch);
+		break;
+
+	case SPEED_P300:
+		init_P300(snd_ch);
+		break;
+
+	case SPEED_300:
+
+		init_300(snd_ch);
+		break;
+
+	case SPEED_600:
+
+		init_600(snd_ch);
+		break;
+
+	case SPEED_1200:
+
+		init_1200(snd_ch);
+		break;
+
+	case SPEED_2400:
+
+		init_2400(snd_ch);
+		break;
+
+	case SPEED_ARDOP:
+
+		init_ARDOP(snd_ch);
+		break;
+	}
+
+	//QPSK_SM: begin move(#0#1#2#3, tx[0], 4); move(#0#32#64#96, rx[0], 4); end;
+	//QPSK_V26: begin move(#2#3#1#0, tx[0], 4); move(#96#64#0#32, rx[0], 4); end;
+
+
+	if (modem_mode[snd_ch] == MODE_QPSK || modem_mode[snd_ch] == MODE_PI4QPSK)
+	{
+		switch (qpsk_set[snd_ch].mode)
+		{
+		case QPSK_SM:
+
+			memcpy(&qpsk_set[snd_ch].tx[0], "\0\1\2\3", 4);
+			memcpy(&qpsk_set[snd_ch].rx[0], "\x0\x20\x40\x60", 4);
+			break;
+
+		case QPSK_V26:
+
+			memcpy(&qpsk_set[snd_ch].tx[0], "\2\3\1\0", 4);
+			memcpy(&qpsk_set[snd_ch].rx[0], "\x60\x40\0\x20", 4);
+			break;
+		}
+	}
+
+	tx_shift[snd_ch] = rx_shift[snd_ch];
+	tx_baudrate[snd_ch] = rx_baudrate[snd_ch];
+	low = roundf(rx_shift[snd_ch] / 2 + RCVR[snd_ch] * rcvr_offset[snd_ch] + 1);
+	high = roundf(RX_Samplerate / 2 - (rx_shift[snd_ch] / 2 + RCVR[snd_ch] * rcvr_offset[snd_ch]));
+
+	if (rx_freq[snd_ch] - low < 0)  rx_freq[snd_ch] = low;
+	if (high - rx_freq[snd_ch] < 0) rx_freq[snd_ch] = high;
+
+	tx_freq[snd_ch] = rx_freq[snd_ch];
+
+	make_core_BPF(snd_ch, rx_freq[snd_ch], bpf[snd_ch]);
+	make_core_TXBPF(snd_ch, tx_freq[snd_ch], txbpf[snd_ch]);
+	make_core_INTR(snd_ch);
+	make_core_LPF(snd_ch, lpf[snd_ch]);
+
+	/*
+	  for i = 0 to 16 do
+		for j = 0 to nr_emph do with DET[j,i] do
+		begin
+		  minamp[snd_ch] = 0;
+		  maxamp[snd_ch] = 0;
+		  ones[snd_ch] = 0;
+		  zeros[snd_ch] = 0;
+		  sample_cnt[snd_ch] = 0;
+		  bit_cnt[snd_ch] = 0;
+		  bit_osc[snd_ch] = 0;
+		  frame_status[snd_ch] = FRAME_WAIT;
+		end;
+	  form1.show_modes;
+	  form1.show_freq_a;
+	  form1.show_freq_b;
+	  */
+	wf_pointer(soundChannel[snd_ch]);
+
+
+}
+
+/*
+procedure TForm1.show_combobox;
+var
+  i word;
+begin
+  for i = 0 to length(modes_name)-1 do
+  begin
+    ComboBox1.Items.Add(modes_name[i]);
+    ComboBox2.Items.Add(modes_name[i]);
+  end;
+  ComboBox1.ItemIndex = ComboBox1.Items.IndexOf(modes_name[Speed[1]]);
+  ComboBox2.ItemIndex = ComboBox2.Items.IndexOf(modes_name[Speed[2]]);
+end;
+
+function TForm1.get_idx_by_name(name string) word;
+var
+  i word;
+  found boolean;
+begin
+  i = 0;
+  found = FALSE;
+  result = 0;
+  repeat
+    if name = modes_name[i] then
+    begin
+      found = TRUE;
+      result = i;
+    end
+    else inc(i);
+  until found or (i = length(modes_name));
+end;
+
+procedure TForm1.ReadIni;
+var
+  snd_ch byte;
+begin
+  TelIni = TIniFile.Create(cur_dir+"soundmodem.ini");
+  with TelIni do
+  begin
+    UTC_Time = ReadBool("Init","UTCTime",FALSE);
+    MainPriority = ReadInteger("Init","Priority",2);
+    nr_monitor_lines = ReadInteger("Init","NRMonitorLines",500);
+    ptt = ReadString("Init","PTT","NONE");
+    stop_wf = ReadBool("Init","StopWF",FALSE);
+    raduga = ReadBool("Init","DispMode",DISP_MONO);
+    stat_log = ReadBool("Init","StatLog",FALSE);
+    SND_RX_DEVICE = ReadInteger("Init","SndRXDevice",0);
+    SND_TX_DEVICE = ReadInteger("Init","SndTXDevice",0);
+    snd_rx_device_name = ReadString("Init","SndRXDeviceName","");
+    snd_tx_device_name = ReadString("Init","SndTXDeviceName","");
+    RX_SR = ReadInteger("Init","RXSampleRate",11025);
+    TX_SR = ReadInteger("Init","TXSampleRate",11025);
+    RX_PPM = ReadInteger("Init","RX_corr_PPM",0);
+    TX_PPM = ReadInteger("Init","TX_corr_PPM",0);
+    tx_bufcount = ReadInteger("Init","TXBufNumber",32);
+    rx_bufcount = ReadInteger("Init","RXBufNumber",32);
+    DebugMode = ReadInteger("Init","DisableUnit",0);
+    TX_rotate = ReadBool("Init","TXRotate",FALSE);
+    DualChan = ReadBool("Init","DualChan",FALSE);
+    DualPTT = ReadBool("Init","DualPTT",TRUE);
+    SCO = ReadBool("Init","SCO",FALSE);
+    stdtones = ReadBool("Init","UseStandardTones",TRUE);
+    // Channel A settings
+    maxframe[1] = ReadInteger("AX25_A","Maxframe",3);
+    fracks[1] = ReadInteger("AX25_A","Retries",15);
+    frack_time[1] = ReadInteger("AX25_A","FrackTime",5);
+    idletime[1] = ReadInteger("AX25_A","IdleTime",180);
+    slottime[1] = ReadInteger("AX25_A","SlotTime",100);
+    persist[1] = ReadInteger("AX25_A","Persist",128);
+    resptime[1] = ReadInteger("AX25_A","RespTime",1500);
+    TXFrmMode[1] = ReadInteger("AX25_A","TXFrmMode",1);
+    max_frame_collector[1] = ReadInteger("AX25_A","FrameCollector",6);
+    exclude_callsigns[1] = ReadString("AX25_A","ExcludeCallsigns","");
+    exclude_APRS_frm[1] = ReadString("AX25_A","ExcludeAPRSFrmType","");
+    KISS_opt[1] = ReadBool("AX25_A","KISSOptimization",FALSE);
+    dyn_frack[1] = ReadBool("AX25_A","DynamicFrack",FALSE);
+    recovery[1] = ReadInteger("AX25_A","BitRecovery",0);
+    NonAX25[1] = ReadBool("AX25_A","NonAX25Frm",FALSE);
+    MEMRecovery[1] = ReadInteger("AX25_A","MEMRecovery",200);
+    IPOLL[1] = ReadInteger("AX25_A","IPOLL",80);
+    MyDigiCall[1] = ReadString("AX25_A","MyDigiCall","");
+    tx_hitoneraisedb[1] = ReadInteger("AX25_A","HiToneRaise",0);
+    // Channel B settings
+    maxframe[2] = ReadInteger("AX25_B","Maxframe",3);
+    fracks[2] = ReadInteger("AX25_B","Retries",15);
+    frack_time[2] = ReadInteger("AX25_B","FrackTime",5);
+    idletime[2] = ReadInteger("AX25_B","IdleTime",180);
+    slottime[2] = ReadInteger("AX25_B","SlotTime",100);
+    persist[2] = ReadInteger("AX25_B","Persist",128);
+    resptime[2] = ReadInteger("AX25_B","RespTime",1500);
+    TXFrmMode[2] = ReadInteger("AX25_B","TXFrmMode",1);
+    max_frame_collector[2] = ReadInteger("AX25_B","FrameCollector",6);
+    exclude_callsigns[2] = ReadString("AX25_B","ExcludeCallsigns","");
+    exclude_APRS_frm[2] = ReadString("AX25_B","ExcludeAPRSFrmType","");
+    KISS_opt[2] = ReadBool("AX25_B","KISSOptimization",FALSE);
+    dyn_frack[2] = ReadBool("AX25_B","DynamicFrack",FALSE);
+    recovery[2] = ReadInteger("AX25_B","BitRecovery",0);
+    NonAX25[2] = ReadBool("AX25_B","NonAX25Frm",FALSE);
+    MEMRecovery[2] = ReadInteger("AX25_B","MEMRecovery",200);
+    IPOLL[2] = ReadInteger("AX25_B","IPOLL",80);
+    MyDigiCall[2] = ReadString("AX25_B","MyDigiCall","");
+    tx_hitoneraisedb[2] = ReadInteger("AX25_B","HiToneRaise",0);
+    // Modem settings
+    pkt_raw_min_len = ReadInteger("Modem","RawPktMinLen",17);
+    swap_ptt = ReadBool("Modem","SwapPTTPins",FALSE);
+    inv_ptt = ReadBool("Modem","InvPTTPins",FALSE);
+    Emph_all[1] = ReadBool("Modem","PreEmphasisAll1",TRUE);
+    Emph_all[2] = ReadBool("Modem","PreEmphasisAll2",TRUE);
+    emph_db[1] = ReadInteger("Modem","PreEmphasisDB1",0);
+    emph_db[2] = ReadInteger("Modem","PreEmphasisDB2",0);
+    txbpf[1] = ReadInteger("Modem","TXBPF1",500);
+    txbpf[2] = ReadInteger("Modem","TXBPF2",500);
+    bpf[1] = ReadInteger("Modem","BPF1",500);
+    bpf[2] = ReadInteger("Modem","BPF2",500);
+    lpf[1] = ReadInteger("Modem","LPF1",150);
+    lpf[2] = ReadInteger("Modem","LPF2",150);
+    BPF_tap[1] = ReadInteger("Modem","BPFTap1",256);
+    BPF_tap[2] = ReadInteger("Modem","BPFTap2",256);
+    LPF_tap[1] = ReadInteger("Modem","LPFTap1",128);
+    LPF_tap[2] = ReadInteger("Modem","LPFTap2",128);
+    DCD_threshold = ReadInteger("Modem","DCDThreshold",32);
+    rx_freq[1] = ReadFloat("Modem","RXFreq1",1700);
+    rx_freq[2] = ReadFloat("Modem","RXFreq2",1700);
+    CheckBox1.Checked = ReadBool("Modem","HoldPnt",FALSE);
+    BIT_AFC = ReadInteger("Modem","AFC",32);
+    txdelay[1] = ReadInteger("Modem","TxDelay1",250);
+    txdelay[2] = ReadInteger("Modem","TxDelay2",250);
+    txtail[1] = ReadInteger("Modem","TxTail1",50);
+    txtail[2] = ReadInteger("Modem","TxTail2",50);
+    diddles = ReadInteger("Modem","Diddles",0);
+    RCVR[1] = ReadInteger("Modem","NRRcvrPairs1",0);
+    RCVR[2] = ReadInteger("Modem","NRRcvrPairs2",0);
+    rcvr_offset[1] = ReadInteger("Modem","RcvrShift1",30);
+    rcvr_offset[2] = ReadInteger("Modem","RcvrShift2",30);
+    speed[1] = ReadInteger("Modem","ModemType1",SPEED_1200);
+    speed[2] = ReadInteger("Modem","ModemType2",SPEED_1200);
+    modem_def[1] = ReadBool("Modem","Default1",TRUE);
+    modem_def[2] = ReadBool("Modem","Default2",TRUE);
+    AGWServ = ReadBool("AGWHost","Server",TRUE);
+    AGWPort = ReadInteger("AGWHost","Port",8000);
+    KISSServ = ReadBool("KISS","Server",FALSE);
+    KISSPort = ReadInteger("KISS","Port",8100);
+    Form1.Top = ReadInteger("Window","Top",0);
+    Form1.Left = ReadInteger("Window","Left",0);
+    Form1.Height = ReadInteger("Window","Height",656);
+    Form1.Width = ReadInteger("Window","Width",764);
+    MinOnStart = ReadBool("Window","MinimizedOnStartup",FALSE);
+    Firstwaterfall1.checked = ReadBool("Window","Waterfall1",TRUE);
+    Secondwaterfall1.checked = ReadBool("Window","Waterfall2",FALSE);
+    Statustable1.checked = ReadBool("Window","StatTable",TRUE);
+    Monitor1.checked = ReadBool("Window","Monitor",TRUE);
+    RXRichEdit1.Font.Size = ReadInteger("Font","Size",RXRichEdit1.Font.Size);
+    RXRichEdit1.Font.Name = ReadString("Font","Name",RXRichEdit1.Font.Name);
+  end;
+  TelIni.Free;
+  newAGWPort = AGWPort;
+  newAGWServ = AGWServ;
+  newKISSPort = KISSPort;
+  newKISSServ = KISSServ;
+
+  RX_SampleRate = RX_SR+RX_SR*0.000001*RX_PPM;
+  TX_SampleRate = TX_SR+TX_SR*0.000001*TX_PPM;
+
+  panels[4] = Monitor1.Checked;
+  panels[3] = Statustable1.Checked;
+  panels[2] = Firstwaterfall1.Checked;
+  panels[1] = Secondwaterfall1.Checked;
+
+  if tx_bufcount>255 then tx_bufcount = 255;
+  if tx_bufcount<2 then tx_bufcount = 2;
+  if rx_bufcount>255 then rx_bufcount = 255;
+  if rx_bufcount<2 then rx_bufcount = 2;
+
+  if not (diddles in [0..2]) then diddles = 0;
+
+  if nr_monitor_lines>65535 then nr_monitor_lines = 65535;
+  if nr_monitor_lines<10    then nr_monitor_lines = 10;
+
+  if not (MainPriority in [0..3]) then MainPriority = 2;
+
+  for snd_ch = 1 to 2 do
+  begin
+
+    tx_hitoneraise[snd_ch] = power(10,-abs(tx_hitoneraisedb[snd_ch])/20);
+
+    if IPOLL[snd_ch]<0 then IPOLL[snd_ch] = 0;
+    if IPOLL[snd_ch]>65535 then IPOLL[snd_ch] = 65535;
+
+    if MEMRecovery[snd_ch]<1 then MEMRecovery[snd_ch] = 1;
+    if MEMRecovery[snd_ch]>65535 then MEMRecovery[snd_ch] = 65535;
+
+    get_exclude_list(AnsiUpperCase(MyDigiCall[snd_ch]),list_digi_callsigns[snd_ch]);
+    get_exclude_list(AnsiUpperCase(exclude_callsigns[snd_ch]),list_exclude_callsigns[snd_ch]);
+    get_exclude_frm(exclude_APRS_frm[snd_ch],list_exclude_APRS_frm[snd_ch]);
+
+    if resptime[snd_ch]<0 then resptime[snd_ch] = 0;
+    if resptime[snd_ch]>65535 then resptime[snd_ch] = 65535;
+    if persist[snd_ch]>255 then persist[snd_ch] = 255;
+    if persist[snd_ch]<32 then persist[snd_ch] = 32;
+    if fracks[snd_ch]<1 then fracks[snd_ch] = 1;
+    if frack_time[snd_ch]<1 then frack_time[snd_ch] = 1;
+    if idletime[snd_ch]<frack_time[snd_ch] then idletime[snd_ch] = 180;
+
+    if not (Emph_db[snd_ch] in [0..nr_emph]) then Emph_db[snd_ch] = 0;
+    if not (Recovery[snd_ch] in [0..1]) then Recovery[snd_ch] = 0;
+    if not (TXFrmMode[snd_ch] in [0..1]) then TXFrmMode[snd_ch] = 0;
+    if not (max_frame_collector[snd_ch] in [0..6]) then max_frame_collector[snd_ch] = 6;
+    if not (maxframe[snd_ch] in [1..7]) then maxframe[snd_ch] = 3;
+
+    if not (qpsk_set[snd_ch].mode in [0..1]) then qpsk_set[snd_ch].mode = 0;
+    init_speed(snd_ch);
+  end;
+  TrackBar1.Position = DCD_threshold;
+
+  // Check device ID
+  ChkSndDevName;
+end;
+
+procedure TForm1.WriteIni;
+begin
+  TelIni = TIniFile.Create(cur_dir+"soundmodem.ini");
+  with TelIni do
+  begin
+    WriteInteger("Init","Priority",MainPriority);
+    WriteBool("Init","UTCTime",UTC_Time);
+    WriteInteger("Init","NRMonitorLines",nr_monitor_lines);
+    WriteString("Init","PTT",ptt);
+    WriteBool("Init","DispMode",raduga);
+    WriteBool("Init","StopWF",stop_wf);
+    WriteBool("Init","StatLog",stat_log);
+    WriteInteger("Init","SndRXDevice",SND_RX_DEVICE);
+    WriteInteger("Init","SndTXDevice",SND_TX_DEVICE);
+    WriteString("Init","SndRXDeviceName",snd_rx_device_name);
+    WriteString("Init","SndTXDeviceName",snd_tx_device_name);
+    WriteInteger("Init","RXSampleRate",RX_SR);
+    WriteInteger("Init","TXSampleRate",TX_SR);
+    WriteInteger("Init","RX_corr_PPM",RX_PPM);
+    WriteInteger("Init","TX_corr_PPM",TX_PPM);
+    WriteInteger("Init","DisableUnit",DebugMode);
+    WriteBool("Init","TXRotate",TX_rotate);
+    WriteBool("Init","DualChan",DualChan);
+    WriteBool("Init","DualPTT",DualPTT);
+    WriteBool("Init","SCO",SCO);
+    WriteInteger("Init","TXBufNumber",tx_bufcount);
+    WriteInteger("Init","RXBufNumber",rx_bufcount);
+    WriteBool("Init","UseStandardTones",stdtones);
+    // Channel A settings
+    WriteInteger("AX25_A","Maxframe",maxframe[1]);
+    WriteInteger("AX25_A","Retries",fracks[1]);
+    WriteInteger("AX25_A","FrackTime",frack_time[1]);
+    WriteInteger("AX25_A","IdleTime",idletime[1]);
+    WriteInteger("AX25_A","SlotTime",slottime[1]);
+    WriteInteger("AX25_A","Persist",persist[1]);
+    WriteInteger("AX25_A","RespTime",resptime[1]);
+    WriteInteger("AX25_A","TXFrmMode",TXFrmMode[1]);
+    WriteInteger("AX25_A","FrameCollector",max_frame_collector[1]);
+    WriteString("AX25_A","ExcludeCallsigns",exclude_callsigns[1]);
+    WriteString("AX25_A","ExcludeAPRSFrmType",exclude_APRS_frm[1]);
+    WriteBool("AX25_A","KISSOptimization",KISS_opt[1]);
+    WriteBool("AX25_A","DynamicFrack",dyn_frack[1]);
+    WriteInteger("AX25_A","BitRecovery",recovery[1]);
+    WriteBool("AX25_A","NonAX25Frm",NonAX25[1]);
+    WriteInteger("AX25_A","MEMRecovery",MEMRecovery[1]);
+    WriteInteger("AX25_A","IPOLL",IPOLL[1]);
+    WriteString("AX25_A","MyDigiCall",MyDigiCall[1]);
+    WriteInteger("AX25_A","HiToneRaise",tx_hitoneraisedb[1]);
+    // Channel B settings
+    WriteInteger("AX25_B","Maxframe",maxframe[2]);
+    WriteInteger("AX25_B","Retries",fracks[2]);
+    WriteInteger("AX25_B","FrackTime",frack_time[2]);
+    WriteInteger("AX25_B","IdleTime",idletime[2]);
+    WriteInteger("AX25_B","SlotTime",slottime[2]);
+    WriteInteger("AX25_B","Persist",persist[2]);
+    WriteInteger("AX25_B","RespTime",resptime[2]);
+    WriteInteger("AX25_B","TXFrmMode",TXFrmMode[2]);
+    WriteInteger("AX25_B","FrameCollector",max_frame_collector[2]);
+    WriteString("AX25_B","ExcludeCallsigns",exclude_callsigns[2]);
+    WriteString("AX25_B","ExcludeAPRSFrmType",exclude_APRS_frm[2]);
+    WriteBool("AX25_B","KISSOptimization",KISS_opt[2]);
+    WriteBool("AX25_B","DynamicFrack",dyn_frack[2]);
+    WriteInteger("AX25_B","BitRecovery",recovery[2]);
+    WriteBool("AX25_B","NonAX25Frm",NonAX25[2]);
+    WriteInteger("AX25_B","MEMRecovery",MEMRecovery[2]);
+    WriteInteger("AX25_B","IPOLL",IPOLL[2]);
+    WriteString("AX25_B","MyDigiCall",MyDigiCall[2]);
+    WriteInteger("AX25_B","HiToneRaise",tx_hitoneraisedb[2]);
+    // Modem settings
+    if not modem_def[1] then
+    begin
+      WriteInteger("Modem","BPF1",bpf[1]);
+      WriteInteger("Modem","TXBPF1",txbpf[1]);
+      WriteInteger("Modem","LPF1",lpf[1]);
+      WriteInteger("Modem","BPFTap1",BPF_tap[1]);
+      WriteInteger("Modem","LPFTap1",LPF_tap[1]);
+    end;
+    if not modem_def[2] then
+    begin
+      WriteInteger("Modem","BPF2",bpf[2]);
+      WriteInteger("Modem","TXBPF2",txbpf[2]);
+      WriteInteger("Modem","LPF2",lpf[2]);
+      WriteInteger("Modem","BPFTap2",BPF_tap[2]);
+      WriteInteger("Modem","LPFTap2",LPF_tap[2]);
+    end;
+    WriteInteger("Modem","RawPktMinLen",pkt_raw_min_len);
+    WriteBool("Modem","SwapPTTPins",swap_ptt);
+    WriteBool("Modem","InvPTTPins",inv_ptt);
+    WriteInteger("Modem","PreEmphasisDB1",emph_db[1]);
+    WriteInteger("Modem","PreEmphasisDB2",emph_db[2]);
+    WriteBool("Modem","PreEmphasisAll1",emph_all[1]);
+    WriteBool("Modem","PreEmphasisAll2",emph_all[2]);
+    WriteBool("Modem","Default1",modem_def[1]);
+    WriteBool("Modem","Default2",modem_def[2]);
+    WriteInteger("Modem","DCDThreshold",DCD_threshold);
+    WriteBool("Modem","HoldPnt",CheckBox1.Checked);
+    WriteFloat("Modem","RXFreq1",rx_freq[1]);
+    WriteFloat("Modem","RXFreq2",rx_freq[2]);
+    WriteFloat("Modem","AFC",BIT_AFC);
+    WriteInteger("Modem","TxDelay1",txdelay[1]);
+    WriteInteger("Modem","TxDelay2",txdelay[2]);
+    WriteInteger("Modem","TxTail1",txtail[1]);
+    WriteInteger("Modem","TxTail2",txtail[2]);
+    WriteInteger("Modem","Diddles",diddles);
+    WriteInteger("Modem","NRRcvrPairs1",RCVR[1]);
+    WriteInteger("Modem","NRRcvrPairs2",RCVR[2]);
+    WriteInteger("Modem","RcvrShift1",rcvr_offset[1]);
+    WriteInteger("Modem","RcvrShift2",rcvr_offset[2]);
+    WriteInteger("Modem","ModemType1",speed[1]);
+    WriteInteger("Modem","ModemType2",speed[2]);
+    WriteBool("AGWHost","Server",newAGWServ);
+    WriteInteger("AGWHost","Port",newAGWPort);
+    WriteBool("KISS","Server",newKISSServ);
+    WriteInteger("KISS","Port",newKISSPort);
+    WriteInteger("Window","Top",Form1.Top);
+    WriteInteger("Window","Left",Form1.Left);
+    WriteInteger("Window","Height",Form1.Height);
+    WriteInteger("Window","Width",Form1.Width);
+    WriteBool("Window","Waterfall1",Firstwaterfall1.checked);
+    WriteBool("Window","Waterfall2",Secondwaterfall1.checked);
+    WriteBool("Window","StatTable",Statustable1.checked);
+    WriteBool("Window","Monitor",Monitor1.checked);
+    WriteBool("Window","MinimizedOnStartup",MinOnStart);
+    WriteInteger("Font","Size",RXRichEdit1.Font.Size);
+    WriteString("Font","Name",RXRichEdit1.Font.Name);
+  end;
+  TelIni.Free;
+end;
+
+procedure TForm1.ChkSndDevName;
+var
+  DevInCaps TWaveInCapsA;
+  DevOutCaps TWaveOutCapsA;
+  i,k,numdevs integer;
+  RXDevList,TXDevList TStringList;
+begin
+  RXDevList = TStringList.Create;
+  TXDevList = TStringList.Create;
+  numdevs = WaveOutGetNumDevs;
+  if numdevs>0 then
+    for k = 0 to numdevs-1 do
+    begin
+      waveOutGetDevCaps(k,@DevOutCaps,sizeof(DevOutCaps));
+      TXDevList.Add(DevOutCaps.szpname);
+    end;
+  numdevs = WaveInGetNumDevs;
+  if numdevs>0 then
+    for k = 0 to numdevs-1 do
+    begin
+      waveInGetDevCaps(k,@DevInCaps,sizeof(DevInCaps));
+      RXDevList.Add(DevInCaps.szpname);
+    end;
+  // TX Dev
+  if (snd_tx_device<0) or (snd_tx_device> = TXDevList.Count) then snd_tx_device = 0;
+  if TXDevList.Count>0 then
+    if TXDevList.Strings[snd_tx_device]<>snd_tx_device_name then
+    begin
+      i = TXDevList.IndexOf(snd_tx_device_name);
+      if i> = 0 then snd_tx_device = i else snd_tx_device_name = TXDevList.Strings[snd_tx_device];
+    end;
+  // RX Dev
+  if (snd_rx_device<0) or (snd_rx_device> = RXDevList.Count) then snd_rx_device = 0;
+  if RXDevList.Count>0 then
+    if RXDevList.Strings[snd_rx_device]<>snd_rx_device_name then
+    begin
+      i = RXDevList.IndexOf(snd_rx_device_name);
+      if i> = 0 then snd_rx_device = i else snd_rx_device_name = RXDevList.Strings[snd_rx_device];
+    end;
+  RXDevList.Free;
+  TXDevList.Free;
+end;
+
+procedure TForm1.startrx;
+var
+  OpenResult MMRESULT;
+  Loop       integer;
+  ErrorText  string;
+Begin
+  RX_device = TRUE;
+  RXBufferLength  =  rx_bufsize * Channels * (BitsPerSample div 8);
+  with WaveFormat do
+  begin
+    wFormatTag       =  WAVE_FORMAT_PCM;
+    nChannels        =  Channels;
+    nSamplesPerSec   =  RX_SR;
+    nAvgBytesPerSec  =  RX_SR * Channels * (BitsPerSample div 8);
+    nBlockAlign      =  Channels * (BitsPerSample div 8);
+    wBitsPerSample   =  BitsPerSample;
+    cbSize           =  0;
+  end;
+  OpenResult  =  waveInOpen (@WaveInHandle,SND_RX_DEVICE,@WaveFormat,integer(Self.Handle),0,CALLBACK_WINDOW);
+  if OpenResult = MMSYSERR_NOERROR then
+  begin
+    for Loop  =  1 to rx_bufcount do
+    begin
+      GetMem(RX_pbuf[Loop], RXBufferLength);
+      RX_header[Loop].lpData          =  RX_pbuf[Loop];
+      RX_header[Loop].dwBufferLength  =  RXBufferLength;
+      RX_header[Loop].dwUser          =  Loop;
+      RX_header[Loop].dwFlags         =  0;
+      RX_header[Loop].dwLoops         =  0;
+      OpenResult  =  WaveInPrepareHeader(WaveInhandle, @RX_header[Loop], sizeof(TWaveHdr));
+      if OpenResult = MMSYSERR_NOERROR then WaveInAddBuffer(WaveInHandle, @RX_header[Loop], sizeof(TWaveHdr))
+      else
+        begin
+          case OpenResult of
+            MMSYSERR_INVALHANDLE   ErrorText  =  "device handle is invalid";
+            MMSYSERR_NODRIVER      ErrorText  =  "no device driver present";
+            MMSYSERR_NOMEM         ErrorText  =  "memory allocation error, could be incorrect samplerate";
+            else                    ErrorText  =  "unknown error";
+          end;
+          MessageDlg(format("Error adding buffer %d device (%s)",[Loop, ErrorText]), mtError, [mbOk], 0);
+        end;
+    end;
+    WaveInStart(WaveInHandle);
+  end
+  else
+  begin
+    case OpenResult of
+      MMSYSERR_ERROR         ErrorText  =  "unspecified error";
+      MMSYSERR_BADDEVICEID   ErrorText  =  "device ID out of range";
+      MMSYSERR_NOTENABLED    ErrorText  =  "driver failed enable";
+      MMSYSERR_ALLOCATED     ErrorText  =  "device already allocated";
+      MMSYSERR_INVALHANDLE   ErrorText  =  "device handle is invalid";
+      MMSYSERR_NODRIVER      ErrorText  =  "no device driver present";
+      MMSYSERR_NOMEM         ErrorText  =  "memory allocation error, could be incorrect samplerate";
+      MMSYSERR_NOTSUPPORTED  ErrorText  =  "function isn""t supported";
+      MMSYSERR_BADERRNUM     ErrorText  =  "error value out of range";
+      MMSYSERR_INVALFLAG     ErrorText  =  "invalid flag passed";
+      MMSYSERR_INVALPARAM    ErrorText  =  "invalid parameter passed";
+      MMSYSERR_HANDLEBUSY    ErrorText  =  "handle being used simultaneously on another thread (eg callback)";
+      MMSYSERR_INVALIDALIAS  ErrorText  =  "specified alias not found";
+      MMSYSERR_BADDB         ErrorText  =  "bad registry database";
+      MMSYSERR_KEYNOTFOUND   ErrorText  =  "registry key not found";
+      MMSYSERR_READERROR     ErrorText  =  "registry read error";
+      MMSYSERR_WRITEERROR    ErrorText  =  "registry write error";
+      MMSYSERR_DELETEERROR   ErrorText  =  "registry delete error";
+      MMSYSERR_VALNOTFOUND   ErrorText  =  "registry value not found";
+      MMSYSERR_NODRIVERCB    ErrorText  =  "driver does not call DriverCallback";
+      else                    ErrorText  =  "unknown error";
+    end;
+    MessageDlg(format("Error opening wave input device (%s)",[ErrorText]), mtError, [mbOk], 0);
+    RX_device = FALSE;
+  end;
+end;
+
+procedure TForm1.stoprx;
+var
+  Loop integer;
+begin
+  if not RX_device then exit;
+  WaveInStop(WaveInHandle);
+  WaveInReset(WaveInHandle);
+  for Loop  =  1 to rx_bufcount do
+    WaveInUnPrepareHeader(WaveInHandle, @RX_header[Loop], sizeof(TWaveHdr));
+  WaveInClose(WaveInHandle);
+  for Loop  =  1 to rx_bufcount do
+  begin
+    if RX_pbuf[Loop]<>nil then
+    begin
+      FreeMem(RX_pbuf[Loop]);
+      RX_pbuf[Loop]  =  nil;
+    end;
+  end;
+  RX_device = FALSE;
+end;
+
+procedure TForm1.make_wave_buf(snd_ch byte; buf PChar);
+const
+  amplitude = 22000;
+var
+  i word;
+begin
+  modulator(snd_ch,audio_buf[snd_ch],tx_bufsize);
+  if tx_status[snd_ch] = TX_NO_DATA then buf_status[snd_ch] = BUF_EMPTY;
+  for i = 0 to tx_bufsize-1 do
+  begin
+    case snd_ch of
+    1
+      begin
+        // left channel
+        PSmallInt(buf)^ = round(amplitude*audio_buf[snd_ch][i]);
+        Inc(PSmallInt(Buf));
+        // right channel
+        if SCO then PSmallInt(buf)^ = round(amplitude*audio_buf[snd_ch][i]) else PSmallInt(buf)^ = 0;
+        Inc(PSmallInt(Buf));
+      end;
+    2
+      begin
+        // left channel
+        if SCO then PSmallInt(buf)^ = round(amplitude*audio_buf[snd_ch][i]) else PSmallInt(buf)^ = 0;
+        Inc(PSmallInt(Buf));
+        // right channel
+        PSmallInt(buf)^ = round(amplitude*audio_buf[snd_ch][i]);
+        Inc(PSmallInt(Buf));
+      end;
+    end;
+  end;
+end;
+
+procedure TForm1.starttx(snd_ch byte);
+var
+  OpenResult MMRESULT;
+  Loop       integer;
+  ErrorText  string;
+  BufferLength longint;
+Begin
+  if snd_status[snd_ch]<>SND_IDLE then exit;
+  BufferLength  =  tx_bufsize * Channels * (BitsPerSample div 8);
+  with WaveFormat do
+  begin
+    wFormatTag       =  WAVE_FORMAT_PCM;
+    nChannels        =  Channels;
+    nSamplesPerSec   =  TX_SR;
+    nAvgBytesPerSec  =  TX_SR * Channels * (BitsPerSample div 8);
+    nBlockAlign      =  Channels * (BitsPerSample div 8);
+    wBitsPerSample   =  BitsPerSample;
+    cbSize           =  0;
+  end;
+  OpenResult  =  WaveOutOpen (@WaveOutHandle[snd_ch],SND_TX_DEVICE,@WaveFormat,integer(Self.Handle),0,CALLBACK_WINDOW);
+  if OpenResult = MMSYSERR_NOERROR then
+  begin
+    snd_status[snd_ch] = SND_TX;
+    buf_status[snd_ch] = BUF_FULL;
+    tx_status[snd_ch] = TX_SILENCE;
+    tx_buf_num[snd_ch] = 0;
+    tx_buf_num1[snd_ch] = 0;
+    for Loop  =  1 to tx_bufcount do
+    begin
+      GetMem(TX_pbuf[snd_ch][Loop], BufferLength);
+      TX_header[snd_ch][Loop].lpData          =  TX_pbuf[snd_ch][Loop];
+      TX_header[snd_ch][Loop].dwBufferLength  =  BufferLength;
+      TX_header[snd_ch][Loop].dwUser          =  0;
+      TX_header[snd_ch][Loop].dwFlags         =  0;
+      TX_header[snd_ch][Loop].dwLoops         =  0;
+      OpenResult  =  WaveOutPrepareHeader(WaveOuthandle[snd_ch], @TX_header[snd_ch][Loop], sizeof(TWaveHdr));
+      if OpenResult = MMSYSERR_NOERROR then
+      begin
+        // ��������� ����� �� ��������
+        if buf_status[snd_ch] = BUF_FULL then
+        begin
+          make_wave_buf(snd_ch,TX_pbuf[snd_ch][Loop]);
+          WaveOutWrite(WaveOutHandle[snd_ch],@TX_header[snd_ch][Loop],sizeof(TWaveHdr));
+          inc(tx_buf_num1[snd_ch]);
+        end;
+      end
+      else
+      begin
+        case OpenResult of
+          MMSYSERR_INVALHANDLE   ErrorText  =  "device handle is invalid";
+          MMSYSERR_NODRIVER      ErrorText  =  "no device driver present";
+          MMSYSERR_NOMEM         ErrorText  =  "memory allocation error, could be incorrect samplerate";
+          else                    ErrorText  =  "unknown error";
+        end;
+        MessageDlg(format("Error adding buffer %d device (%s)",[Loop, ErrorText]), mtError, [mbOk], 0);
+      end;
+    end;
+  end
+  else
+  begin
+    case OpenResult of
+      MMSYSERR_ERROR         ErrorText  =  "unspecified error";
+      MMSYSERR_BADDEVICEID   ErrorText  =  "device ID out of range";
+      MMSYSERR_NOTENABLED    ErrorText  =  "driver failed enable";
+      MMSYSERR_ALLOCATED     ErrorText  =  "device already allocated";
+      MMSYSERR_INVALHANDLE   ErrorText  =  "device handle is invalid";
+      MMSYSERR_NODRIVER      ErrorText  =  "no device driver present";
+      MMSYSERR_NOMEM         ErrorText  =  "memory allocation error, could be incorrect samplerate";
+      MMSYSERR_NOTSUPPORTED  ErrorText  =  "function isn""t supported";
+      MMSYSERR_BADERRNUM     ErrorText  =  "error value out of range";
+      MMSYSERR_INVALFLAG     ErrorText  =  "invalid flag passed";
+      MMSYSERR_INVALPARAM    ErrorText  =  "invalid parameter passed";
+      MMSYSERR_HANDLEBUSY    ErrorText  =  "handle being used simultaneously on another thread (eg callback)";
+      MMSYSERR_INVALIDALIAS  ErrorText  =  "specified alias not found";
+      MMSYSERR_BADDB         ErrorText  =  "bad registry database";
+      MMSYSERR_KEYNOTFOUND   ErrorText  =  "registry key not found";
+      MMSYSERR_READERROR     ErrorText  =  "registry read error";
+      MMSYSERR_WRITEERROR    ErrorText  =  "registry write error";
+      MMSYSERR_DELETEERROR   ErrorText  =  "registry delete error";
+      MMSYSERR_VALNOTFOUND   ErrorText  =  "registry value not found";
+      MMSYSERR_NODRIVERCB    ErrorText  =  "driver does not call DriverCallback";
+      else                    ErrorText  =  "unknown error";
+    end;
+    MessageDlg(format("Error opening wave output device (%s)",[ErrorText]), mtError, [mbOk], 0);
+  end;
+end;
+
+procedure TForm1.stoptx(snd_ch byte);
+var
+  Loop integer;
+begin
+  if snd_status[snd_ch]<>SND_TX then exit;
+  WaveOutReset(WaveOutHandle[snd_ch]);
+  for Loop  =  1 to tx_bufcount do
+    WaveOutUnPrepareHeader(WaveOutHandle[snd_ch], @TX_header[snd_ch][Loop], sizeof(TWaveHdr));
+  WaveOutClose(WaveOutHandle[snd_ch]);
+  for Loop  =  1 to tx_bufcount do
+  begin
+    if TX_pbuf[snd_ch][Loop]<>nil then
+    begin
+      FreeMem(TX_pbuf[snd_ch][Loop]);
+      TX_pbuf[snd_ch][Loop]  =  nil;
+    end;
+  end;
+  WaveOutHandle[snd_ch] = 0;
+  snd_status[snd_ch] = SND_IDLE;
+end;
+
+procedure show_grid_title;
+const
+  title array [0..10] of string  =  ("MyCall","DestCall","Status","Sent pkts","Sent bytes","Rcvd pkts","Rcvd bytes","Rcvd FC","CPS TX","CPS RX","Direction");
+var
+  i byte;
+begin
+  for i = 0 to 10 do Form1.StringGrid1.Cells[i,0] = title[i];
+end;
+*/
+/*
+
+procedure disp1(src1,src2 array of single);
+var
+  i,n word;
+  k,k1,amp1,amp2,amp3,amp4 single;
+  bm TBitMap;
+begin
+  bm = TBitMap.Create;
+  bm.pixelformat = pf32bit;
+  //bm.pixelformat = pf24bit;
+  bm.Width = Form1.PaintBox2.Width;
+  bm.Height = Form1.PaintBox2.Height;
+  amp1 = 0;
+  amp3 = 0;
+  //k = 0.20;
+  k = 50000;
+  k1 = 0;
+  //k = 1000;
+  //k = 0.00001;
+  bm.Canvas.MoveTo(0,50);
+  bm.Canvas.LineTo(512,50);
+  n = 0;
+  for i = 0 to RX_Bufsize-1 do
+  begin
+    begin
+      amp2 = src1[i];
+      amp4 = src2[i];
+      bm.Canvas.Pen.Color = clRed;
+      bm.Canvas.MoveTo(n,50-round(amp1*k1));
+      bm.Canvas.LineTo(n+1,50-round(amp2*k1));
+      bm.Canvas.Pen.Color = clBlue;
+      bm.Canvas.MoveTo(n,50-round(amp3*k));
+      bm.Canvas.LineTo(n+1,50-round(amp4*k));
+      bm.Canvas.Pen.Color = clBlack;
+      inc(n);
+      amp1 = amp2;
+      amp3 = amp4;
+    end;
+  end;
+  Form1.PaintBox2.Canvas.Draw(0,0,bm);
+  bm.Free;
+end;
+*/
+
+/*
+
+procedure TForm1.wf_pointer(snd_ch byte);
+var
+  x single;
+  x1,x2,y,k,pos1,pos2,pos3 word;
+begin
+  k = 24;
+  x = fft_size/RX_SampleRate;
+  pos1 = round((rx_freq[snd_ch]-0.5*rx_shift[snd_ch])*x)-5;
+  pos2 = round((rx_freq[snd_ch]+0.5*rx_shift[snd_ch])*x)-5;
+  pos3 = round(rx_freq[snd_ch]*x);
+  x1 = pos1+5;
+  x2 = pos2+5;
+  y = k+5;
+  with bm3.Canvas do
+  begin
+    Draw(0,20,bm[snd_ch]);
+    Pen.Color = clWhite;
+    Brush.Color = clRed;
+    Polygon([Point(x1+3,y),Point(x1,y-7),Point(x1-3,y),Point(x2+3,y),Point(x2,y-7),Point(x2-3,y)]);
+    Brush.Color = clBlue;
+    Polygon([Point(x1+3,y),Point(x1,y+7),Point(x1-3,y),Point(x2+3,y),Point(x2,y+7),Point(x2-3,y)]);
+    Polyline([Point(pos3,k+1),Point(pos3,k+9)]);
+    Pen.Color = clBlack;
+  end;
+  case snd_ch of
+    1  PaintBox1.Canvas.Draw(0,0,bm3);
+    2  PaintBox3.Canvas.Draw(0,0,bm3);
+  end;
+end;
+
+procedure TForm1.wf_Scale;
+var
+  k single;
+  max_freq,x,i word;
+begin
+  max_freq = round(RX_SampleRate*0.005);
+  k = 100*fft_size/RX_SampleRate;
+  with bm1.Canvas do
+  begin
+    Brush.Color = clBlack;
+    FillRect(ClipRect);
+    Pen.Color = clWhite;
+    Font.Color = clWhite;
+    Font.Size = 8;
+    for i = 0 to max_freq do
+    begin
+      x = round(k*i);
+      if x<1025 then
+      begin
+        if (i mod 5) = 0 then
+          PolyLine([Point(x,20),Point(x,13)])
+        else
+          PolyLine([Point(x,20),Point(x,16)]);
+        if (i mod 10) = 0 then TextOut(x-12,1,inttostr(i*100));
+      end;
+    end;
+    Pen.Color = clBlack;
+  end;
+  bm3.Canvas.Draw(0,0,bm1);
+end;
+*/
+
+void  chk_snd_buf(float * buf, int len)
+{
+	word i;
+	boolean  good;
+	single prev_amp;
+
+	if (len < 2)
+		return;
+
+	good = FALSE;
+	i = 1;
+	prev_amp = buf[0];
+	do
+	{
+		if (buf[i++] != prev_amp)
+			good = TRUE;
+
+	} while (good == FALSE && i < len);
+
+	// Make noise
+	if (!good)
+		for (i = 0; i < len; i++)
+			buf[i] = rand();
+}
+
+#ifdef WIN32
+
+typedef void *HANDLE;
+typedef unsigned long DWORD;
+
+#define WINAPI __stdcall
+__declspec(dllimport)
+DWORD
+WINAPI
+WaitForSingleObject(
+	__in HANDLE hHandle,
+	__in DWORD dwMilliseconds
+);
+
+
+
+
+#define pthread_t uintptr_t
+
+uintptr_t _beginthread(void(__cdecl *start_address)(void *), unsigned stack_size, void *arglist);
+#else
+
+#include <pthread.h>
+
+pthread_t _beginthread(void(*start_address)(void *), unsigned stack_size, void * arglist)
+{
+	pthread_t thread;
+
+	if (pthread_create(&thread, NULL, (void * (*)(void *))start_address, (void*)arglist) != 0)
+		perror("New Thread");
+
+	return thread;
+}
+
+#endif
+
+void runModemthread(void * param);
+
+void runModems()
+{
+	int snd_ch, res;
+	pthread_t thread[4] = { 0,0,0,0 };
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		if (soundChannel[snd_ch] == 0)				// Unused channed
+			continue;	
+	
+		if (modem_mode[snd_ch] == MODE_ARDOP)
+			continue;			// Processed above
+
+	// do we need to do this again ??
+//			make_core_BPF(snd_ch, rx_freq[snd_ch], bpf[snd_ch]);
+
+		if (multiCore)			// Run modems in separate threads
+			thread[snd_ch] = _beginthread(runModemthread, 0, (void *)(size_t)snd_ch);
+		else
+			runModemthread((void *)(size_t)snd_ch);
+	}
+
+	if (multiCore)
+	{
+#ifdef WIN32
+		if (thread[0]) WaitForSingleObject(&thread[0], 2000);
+		if (thread[1]) WaitForSingleObject(&thread[1], 2000);
+		if (thread[2]) WaitForSingleObject(&thread[2], 2000);
+		if (thread[3]) WaitForSingleObject(&thread[3], 2000);
+#else
+		if (thread[0]) pthread_join(thread[0], &res);
+		if (thread[1]) pthread_join(thread[1], &res);
+		if (thread[2]) pthread_join(thread[2], &res);
+		if (thread[3]) pthread_join(thread[3], &res);
+#endif
+	}
+}
+
+Byte rcvr_idx;
+
+void runModemthread(void * param)
+{
+	int snd_ch = (int)(size_t)param;
+
+	// I want to run lowest to highest to simplify my display 
+
+	int offset = -(RCVR[snd_ch] * rcvr_offset[snd_ch]); // lowest
+	int lastrx = RCVR[snd_ch] * 2;
+
+	if (soundChannel[snd_ch] == 0)				// Unused channed
+		return;
+
+	for (rcvr_idx = 0; rcvr_idx <= lastrx; rcvr_idx++)
+	{
+		active_rx_freq[snd_ch] = rxOffset + chanOffset[snd_ch] + rx_freq[snd_ch] + offset;
+		offset += rcvr_offset[snd_ch];
+
+		Demodulator(snd_ch, rcvr_idx, src_buf[modemtoSoundLR[snd_ch]], rcvr_idx == lastrx, offset == 0);
+	}
+}
+
+// I think this processes a buffer of samples
+
+void BufferFull(short * Samples, int nSamples)			// These are Stereo Samples
+{
+	word i, i1;
+	Byte snd_ch, rcvr_idx;
+	boolean add_fft_line;
+	int buf_offset;
+
+	// if UDP server active send as UDP Datagram
+
+	if (UDPServ)	// Extract just left
+	{
+		short Buff[1024];
+
+		i1 = 0;
+
+		for (i = 0; i < rx_bufsize; i++)
+		{
+			Buff[i] = Samples[i1];
+			i1 += 2;
+		}
+
+		sendSamplestoUDP(Buff, 512, TXPort);
+	}
+
+	// Do RSID processing (can we also use this for waterfall??
+
+	RSIDProcessSamples(Samples, nSamples);
+
+	// Do FFT on every 4th buffer (2048 samples)
+
+	add_fft_line = FALSE;
+	fft_mult++;
+
+	if (fft_mult == fft_spd)
+	{
+		add_fft_line = TRUE;
+		fft_mult = 0;
+	}
+
+	// if in Satellite Mode look for a Tuning signal
+
+//	if (SatelliteMode)
+//	{
+//		doTuning(Samples, nSamples);
+//	}
+
+	for (snd_ch = 0; snd_ch < 4; snd_ch++)
+	{
+		if (soundChannel[snd_ch] == 0)				// Unused channed
+			continue;
+
+		if (pnt_change[snd_ch])
+		{
+			make_core_BPF(snd_ch, rx_freq[snd_ch], bpf[snd_ch]);
+			make_core_TXBPF(snd_ch, tx_freq[snd_ch], txbpf[snd_ch]);
+			pnt_change[snd_ch] = FALSE;
+		}
+
+	}
+
+	// I don't think we should process RX if either is sending
+
+	if (snd_status[0] != SND_TX && snd_status[1] != SND_TX && snd_status[2] != SND_TX && snd_status[3] != SND_TX)
+	{
+		for (snd_ch = 0; snd_ch < 4; snd_ch++)
+		{
+			if (soundChannel[snd_ch] == 0)				// Unused channed
+				continue;
+
+			if (modem_mode[snd_ch] == MODE_ARDOP)
+			{
+				short ardopbuff[1200];
+				i1 = 0;
+
+				for (i = 0; i < rx_bufsize; i++)
+				{
+					ardopbuff[i] = Samples[i1];
+					i1++;
+					i1++;
+				}
+
+				ARDOPProcessNewSamples(ardopbuff, nSamples);
+			}
+		}
+
+		// extract mono samples from data. 
+
+		data1 = Samples;
+
+		i1 = 0;
+
+		// src_buf[0] is left data,. src_buf[1] right
+
+		// We could skip extracting other channel if only one in use - is it worth it??
+
+		if (UsingBothChannels)
+		{
+			for (i = 0; i < rx_bufsize; i++)
+			{
+				src_buf[0][i] = data1[i1];
+				i1++;
+				src_buf[1][i] = data1[i1];
+				i1++;
+			}
+		}
+		else if (UsingRight)
+		{
+			// Extract just right
+
+			i1 = 1;
+
+			for (i = 0; i < rx_bufsize; i++)
+			{
+				src_buf[1][i] = data1[i1];
+				i1 += 2;
+			}
+		}
+		else
+		{
+			// Extract just left
+
+			for (i = 0; i < rx_bufsize; i++)
+			{
+				src_buf[0][i] = data1[i1];
+				i1 += 2;
+			}
+		}
+
+		// Run modems before waterfall so fft buffer has values from before sync was detected
+
+		runModems();
+
+		// Do whichever waterfall is needed
+
+		int FirstWaterfallChan = 0;
+
+		// not sure why this is needed
+
+//	if (UsingLeft)
+//		chk_snd_buf(src_buf[0], rx_bufsize);
+//	if (UsingRight)
+//		chk_snd_buf(src_buf[1], rx_bufsize);
+
+
+		if (Firstwaterfall)
+		{
+			if (UsingLeft == 0)
+			{
+				FirstWaterfallChan = 1;
+				data1++;					// to Right Samples
+			}
+
+			buf_offset = fft_size - rx_bufsize;
+			move((UCHAR *)&fft_buf[FirstWaterfallChan][rx_bufsize], (UCHAR *)&fft_buf[FirstWaterfallChan][0], buf_offset * 2);
+
+			for (i = 0; i < rx_bufsize; i++)
+			{
+				fft_buf[FirstWaterfallChan][i + buf_offset] = *data1;
+				data1 += 2;
+			}
+
+			if (add_fft_line)
+				if (Firstwaterfall)
+					doWaterfall(FirstWaterfallChan);
+		}
+
+		if (UsingBothChannels && Secondwaterfall)
+		{
+			// Second is always Right
+
+			data1 = &Samples[1];			// to Right Samples
+
+			buf_offset = fft_size - rx_bufsize;
+			move((UCHAR *)&fft_buf[1][rx_bufsize], (UCHAR *)&fft_buf[1][0], buf_offset * 2);
+
+			for (i = 0; i < rx_bufsize; i++)
+			{
+				fft_buf[1][i + buf_offset] = *data1;
+				data1 += 2;
+			}
+
+			if (add_fft_line)
+				if (Secondwaterfall)
+					doWaterfall(1);
+		}
+
+	}
+
+	if (TimerEvent == TIMER_EVENT_ON)
+	{
+		timer_event();
+//		timer_event2();
+	}
+}
+
+		/*
+
+procedure TForm1.BufferFull1(var Msg TMessage);
+var
+  i,snd_ch byte;
+begin
+  for snd_ch = 1 to 2 do
+    if pnt_change[snd_ch] then
+    begin
+      make_core_BPF(snd_ch,rx_freq[snd_ch],bpf[snd_ch]);
+      make_core_TXBPF(snd_ch,tx_freq[snd_ch],txbpf[snd_ch]);
+      pnt_change[snd_ch] = FALSE;
+    end;
+  snd_ch = 0;
+  for i = 1 to 2 do if msg.WParam = WaveOutHandle[i] then snd_ch = i;
+  if (snd_ch = 0) then exit;
+  if (snd_status[snd_ch]<>SND_TX) then exit;
+  inc(tx_buf_num[snd_ch]); if tx_buf_num[snd_ch]>tx_bufcount then tx_buf_num[snd_ch] = 1;
+  if (buf_status[snd_ch] = BUF_EMPTY) and (tx_buf_num[snd_ch] = tx_buf_num1[snd_ch]) then TX2RX(snd_ch);
+  if buf_status[snd_ch] = BUF_FULL then
+  beginf
+    make_wave_buf(snd_ch,TX_pbuf[snd_ch][tx_buf_num[snd_ch]]);
+    WaveOutWrite(WaveOutHandle[snd_ch],@TX_header[snd_ch][tx_buf_num[snd_ch]],sizeof(TWaveHdr));
+    inc(tx_buf_num1[snd_ch]); if tx_buf_num1[snd_ch]>tx_bufcount then tx_buf_num1[snd_ch] = 1;
+  end;
+end;
+
+procedure TForm1.TX2RX(snd_ch byte);
+begin
+  if snd_status[snd_ch] = SND_TX then stoptx(snd_ch);
+  if snd_status[snd_ch] = SND_IDLE then begin pttoff(snd_ch); end;
+end;
+*/
+
+
+// Monitor Code - from moncode.asm
+
+
+#define	CMDBIT	4		// CURRENT MESSAGE IS A COMMAND
+#define	RESP 2		// CURRENT MSG IS RESPONSE
+#define	VER1 1 		// CURRENT MSG IS VERSION 1
+
+
+#define	UI	3
+#define	SABM 0x2F
+#define	DISC 0x43
+#define	DM	0x0F
+#define	UA	0x63
+#define	FRMR 0x87
+#define	RR	1
+#define	RNR	5
+#define	REJ	9
+
+#define	SREJ 0x0D
+#define SABME 0x6F
+#define XID 0xAF
+#define TEST 0xE3
+
+
+#define	PFBIT 0x10		// POLL/FINAL BIT IN CONTROL BYTE
+
+#define	NETROM_PID 0xCF
+#define	IP_PID 0xCC
+#define	ARP_PID 0xCD
+
+#define	NODES_SIG	0xFF
+
+char FrameData[1024] = "";
+
+char * frame_monitor(string * frame, char * code, int tx_stat)
+{
+	char mon_frm[512];
+	char AGW_path[256];
+	string * AGW_data;
+
+	const Byte * frm = "???";
+	Byte * datap;
+	Byte _data[512] = "";
+	Byte * p_data = _data;
+	int _datalen;
+
+	char  agw_port;
+	char  CallFrom[10], CallTo[10], Digi[80];
+
+	char TR = 'R';
+	char codestr[64] = "";
+
+	integer i;
+	char  time_now[32];
+	int len;
+
+	AGWUser * AGW;
+
+	Byte pid, nr, ns, f_type, f_id;
+	Byte  rpt, cr, pf;
+	Byte path[80];
+	char c;
+	const char * p;
+
+	string * data = newString();
+
+	if (code[0] && strlen(code) < 60)
+		sprintf(codestr, "[%s]", code);
+
+	if (tx_stat)
+		TR = 'T';
+
+	decode_frame(frame->Data, frame->Length, path, data, &pid, &nr, &ns, &f_type, &f_id, &rpt, &pf, &cr);
+
+	datap = data->Data;
+
+	len = data->Length;
+
+	//	if (pid == 0xCF)
+	//		data = parse_NETROM(data, f_id);
+		// IP parsing
+	//	else if (pid == 0xCC)
+	//		data = parse_IP(data);
+		// ARP parsing
+	//	else if (pid == 0xCD)
+	//		data = parse_ARP(data);
+		//
+
+	if (len > 0)
+	{
+		for (i = 0; i < len; i++)
+		{
+			if (datap[i] > 31 || datap[i] == 13 || datap[i] == 9)
+				*(p_data++) = datap[i];
+		}
+	}
+
+	_datalen = p_data - _data;
+
+	if (_datalen)
+	{
+		Byte * ptr = _data;
+		i = 0;
+
+		// remove successive cr or cr on end		while (i < _datalen)
+
+		while (i < _datalen)
+		{
+			if ((_data[i] == 13) && (_data[i + 1] == 13))
+				i++;
+			else
+				*(ptr++) = _data[i++];
+		}
+
+		if (*(ptr - 1) == 13)
+			ptr--;
+
+		*ptr = 0;
+
+		_datalen = ptr - _data;
+	}
+
+	get_monitor_path(path, CallTo, CallFrom, Digi);
+
+	if (cr)
+	{
+		c = 'C';
+		if (pf)
+			p = " P";
+		else p = "";
+	}
+	else
+	{
+		c = 'R';
+		if (pf)
+			p = " F";
+		else
+			p = "";
+	}
+
+	switch (f_id)
+	{
+	case I_I:
+
+		frm = "I";
+		break;
+
+	case S_RR:
+
+		frm = "RR";
+		break;
+
+	case S_RNR:
+
+		frm = "RNR";
+		break;
+
+	case S_REJ:
+
+		frm = "REJ";
+		break;
+
+	case S_SREJ:
+
+		frm = "SREJ";
+		break;
+
+	case U_SABM:
+
+		frm = "SABM";
+		break;
+
+	case SABME:
+
+		frm = "SABME";
+		break;
+
+	case U_DISC:
+
+		frm = "DISC";
+		break;
+
+	case U_DM:
+
+		frm = "DM";
+		break;
+
+	case U_UA:
+
+		frm = "UA";
+		break;
+
+	case U_FRMR:
+
+		frm = "FRMR";
+		break;
+
+	case U_UI:
+
+		frm = "UI";
+	}
+	
+	if (Digi[0])
+		sprintf(AGW_path, "Fm %s To %s Via %s <%s %c%s",CallFrom, CallTo, Digi, frm, c, p);
+	else
+		sprintf(AGW_path, "Fm %s To %s <%s %c %s", CallFrom, CallTo, frm, c, p);
+
+
+	switch (f_type)
+	{
+	case I_FRM:
+
+		//mon_frm = AGW_path + ctrl + ' R' + inttostr(nr) + ' S' + inttostr(ns) + ' pid=' + dec2hex(pid) + ' Len=' + inttostr(len) + ' >' + time_now + #13 + _data + #13#13;
+		sprintf(mon_frm, "%s R%d S%d pid=%X Len=%d>[%s%c]%s\r%s\r", AGW_path, nr, ns, pid, len, ShortDateTime(), TR, codestr, _data);
+
+		break;
+
+	case U_FRM:
+
+		if (f_id == U_UI)
+		{
+			sprintf(mon_frm, "%s pid=%X Len=%d>[%s%c]%s\r%s\r", AGW_path, pid, len, ShortDateTime(), TR, codestr, _data); // "= AGW_path + ctrl + '>' + time_now + #13;
+		}
+		else if (f_id == U_FRMR)
+		{
+			sprintf(mon_frm, "%s>%02x %02x %02x[%s]\r", AGW_path, datap[0], datap[1], datap[2], ShortDateTime()); // "= AGW_path + ctrl + '>' + time_now + #13;
+		}
+		else
+			sprintf(mon_frm, "%s>[%s%c]%s\r", AGW_path, ShortDateTime(), TR, codestr); // "= AGW_path + ctrl + '>' + time_now + #13;
+
+		break;
+
+	case S_FRM:
+
+		//		mon_frm = AGW_path + ctrl + ' R' + inttostr(nr) + ' >' + time_now + #13;
+		sprintf(mon_frm, "%s R%d>[%s%c]%s\r", AGW_path, nr, ShortDateTime(), TR, codestr); // "= AGW_path + ctrl + '>' + time_now + #13;
+
+		break;
+
+	}
+	sprintf(FrameData, "%s", mon_frm);
+	return FrameData;
+}
+
+
+/*
+procedure TForm1.RX2TX(snd_ch byte);
+begin
+  if snd_status[snd_ch] = SND_IDLE then begin ptton(snd_ch); starttx(snd_ch); end;
+end;
+
+function TForm1.frame_monitor(s,code string; tx_stat boolean) string;
+var
+  len word;
+  s_tx_stat string;
+  time_now,s1,c,p string;
+  callfrom,callto,digi,path,data,frm string;
+  frm_body string;
+  pid,nr,ns,f_type,f_id byte;
+  rpt,cr,pf boolean;
+  i word;
+begin
+  decode_frame(s,path,data,pid,nr,ns,f_type,f_id,rpt,pf,cr);
+  len = length(data);
+  // NETROM parsing
+  if pid = $CF then data = parse_NETROM(data,f_id);
+  // IP parsing
+  if pid = $CC then data = parse_IP(data);
+  // ARP parsing
+  if pid = $CD then data = parse_ARP(data);
+  //
+  get_monitor_path(path,CallTo,CallFrom,Digi);
+  if cr then
+  begin
+    c = "C";
+    if pf then p = " P" else p = "";
+  end
+  else
+  begin
+    c = "R";
+    if pf then p = " F" else p = "";
+  end;
+  frm = "UNKN";
+  case f_id of
+    I_I     frm = "I";
+    S_RR    frm = "RR";
+    S_RNR   frm = "RNR";
+    S_REJ   frm = "REJ";
+    U_SABM  frm = "SABM";
+    U_DISC  frm = "DISC";
+    U_DM    frm = "DM";
+    U_UA    frm = "UA";
+    U_FRMR  frm = "FRMR";
+    U_UI    frm = "UI";
+  end;
+  case tx_stat of
+    TRUE    s_tx_stat = "T";
+    FALSE   s_tx_stat = "R";
+  end;
+  s1 = "";
+
+  if code<>"" then code = " ["+code+"]";
+  if UTC_Time then time_now = " [UTC"+get_UTC_time+s_tx_stat+"]"
+  else time_now = " ["+FormatDateTime("hhmmss",now)+s_tx_stat+"]";
+
+  if digi = "" then frm_body = "Fm "+CallFrom+" To "+CallTo+" <"+frm+" "+c+p
+  else frm_body = "Fm "+CallFrom+" To "+CallTo+" Via "+Digi+" <"+frm+" "+c+p;
+  case f_type of
+    I_FRM   frm_body = frm_body+" R"+inttostr(nr)+" S"+inttostr(ns)+" Pid = "+dec2hex(pid)+" Len = "+inttostr(len)+">"+time_now+code+#13+data;
+    U_FRM   if f_id = U_UI then frm_body = frm_body+" Pid = "+dec2hex(pid)+" Len = "+inttostr(len)+">"+time_now+code+#13+data
+               else if f_id = U_FRMR then begin data = copy(data+#0#0#0,1,3); frm_body = frm_body+">"+time_now+code+#13+inttohex((byte(data[1]) shl 16) or (byte(data[2]) shl 8) or byte(data[3]),6) end
+                 else frm_body = frm_body+">"+time_now+code;
+    S_FRM   frm_body = frm_body+" R"+inttostr(nr)+">"+time_now+code;
+  end;
+  for i = 1 to length(frm_body) do
+  begin
+    if frm_body[i]>#31 then s1 = s1+frm_body[i];
+    if frm_body[i] = #13 then s1 = s1+#13#10;
+    if frm_body[i] = #10 then s1 = s1+"";
+    if frm_body[i] = #9 then s1 = s1+#9;
+  end;
+  result = s1;
+end;
+
+procedure TForm1.waterfall_init;
+begin
+  bm[1] = TBitMap.Create;
+  bm[2] = TBitMap.Create;
+  bm1 = TBitMap.Create;
+  bm2 = TBitMap.Create;
+  bm3 = TBitMap.Create;
+  bm[1].pixelformat = pf32bit;
+  bm[2].pixelformat = pf32bit;
+  bm1.pixelformat = pf32bit;
+  bm2.pixelformat = pf32bit;
+  bm3.pixelformat = pf32bit;
+  bm[1].Height = PaintBox1.Height-20;
+  bm[1].Width = PaintBox1.width;
+  bm[2].Height = PaintBox1.Height-20;
+  bm[2].Width = PaintBox1.width;
+  bm1.Height = 20;
+  bm1.Width = PaintBox1.width;
+  bm3.Height = PaintBox1.Height;
+  bm3.Width = PaintBox1.width;
+end;
+
+procedure TForm1.waterfall_free;
+begin
+  bm[1].Free;
+  bm[2].Free;
+  bm1.Free;
+  bm2.Free;
+  bm3.Free;
+end;
+
+procedure TForm1.StartAGW;
+begin
+  try
+    ServerSocket1.Port = AGWPort;
+    ServerSocket1.Active = AGWServ;
+  except
+    ServerSocket1.Active = FALSE;
+    MessageDlg("AGW host port is busy!", mtWarning,[mbOk],0);
+  end;
+end;
+
+procedure TForm1.StartKISS;
+begin
+  try
+    ServerSocket2.Port = KISSPort;
+    ServerSocket2.Active = KISSServ;
+  except
+    ServerSocket2.Active = FALSE;
+    MessageDlg("KISS port is busy!", mtWarning,[mbOk],0);
+  end;
+end;
+
+procedure fft_window_init;
+var
+  mag single;
+  i word;
+begin
+  mag = 2*pi/(fft_size-1);
+  for i = 0 to fft_size-1 do fft_window_arr[i] = 0.5-0.5*cos(i*mag); //hann
+end;
+
+procedure TForm1.FormCreate(Sender TObject);
+begin
+  if hPrevInst <> 0 then begin
+    MessageDlg("��������� ��� ��������!", mtError, [mbOk], 0);
+    Application.Terminate;
+  end;
+  RS = TReedSolomon.Create(Self);
+  MainThreadHandle = GetCurrentThread;
+  form1.Caption = MODEM_CAPTION+" - Ver "+MODEM_VERSION;
+  cur_dir = ExtractFilePath(Application.ExeName);
+  fft_window_init;
+  detector_init;
+  kiss_init;
+  agw_init;
+  ax25_init;
+  init_raduga;
+  waterfall_init;
+  ReadIni;
+  show_combobox;
+  show_grid_title;
+  show_mode_panels;
+  show_panels;
+  wf_pointer(1);
+  wf_pointer(2);
+  wf_Scale;
+  ChangePriority;
+  Visible = TRUE;
+  StartAGW;
+  StartKISS;
+  PTTOpen;
+  startrx;
+  TimerEvent = TIMER_EVENT_OFF;
+  if (debugmode and DEBUG_TIMER) = 0 then create_timer1;
+  if MinOnStart then WindowState = wsMinimized;
+end;
+
+procedure TForm1.TrackBar1Change(Sender TObject);
+begin
+  dcd_threshold = TrackBar1.position;
+end;
+*/
+
+void Timer_Event2()
+{
+	if (TimerStat2 == TIMER_BUSY || TimerStat2 == TIMER_OFF)
+		return;
+
+	TimerStat2 = TIMER_BUSY;
+
+//	show_grid();
+
+	/*
+
+	if (mod_icon_status = MOD_WAIT) then inc(icon_timer);
+	if icon_timer = 10 then mod_icon_status = MOD_IDLE;
+	if (mod_icon_status<>MOD_WAIT) and (mod_icon_status<>last_mod_icon_status) then
+	begin
+	  icon_timer = 0;
+	  case mod_icon_status of
+		MOD_IDLE form1.CoolTrayIcon1.IconIndex = 0;
+		MOD_RX begin form1.CoolTrayIcon1.IconIndex = 1; mod_icon_status = MOD_WAIT; end;
+		MOD_TX form1.CoolTrayIcon1.IconIndex = 2;
+	  end;
+	  last_mod_icon_status = mod_icon_status;
+	end;
+	//*/
+
+	TimerStat2 = TIMER_FREE;
+}
+
+/*
+
+procedure TimeProc1(uTimerId, uMesssage UINT; dwUser, dw1, dw2 DWORD); stdcall;
+begin
+  TimerEvent = TIMER_EVENT_ON;
+end;
+
+procedure TForm1.create_timer1;
+var
+  TimeEpk cardinal;
+begin
+  TimeEpk = 100;
+  TimerId1 = TimeSetEvent(TimeEpk,0,@TimeProc1,0,TIME_PERIODIC);
+end;
+
+procedure TForm1.free_timer1;
+begin
+  TimerStat1 = TIMER_OFF;
+  timeKillEvent(TimerId1);
+end;
+
+*/
+
+/*
+
+
+procedure TForm1.PaintBox1MouseMove(Sender TObject; Shift TShiftState; X,
+  Y Integer);
+var
+  low,high word;
+begin
+  if CheckBox1.Checked then exit;
+  if not mouse_down[1] then Exit;
+  rx_freq[1] = round(x*RX_SampleRate/fft_size);
+  low = round(rx_shift[1]/2+Rcvr[1]*rcvr_offset[1]+1);
+  high = round(rx_samplerate/2-(rx_shift[1]/2+Rcvr[1]*rcvr_offset[1]));
+  if (rx_freq[1]-low)<0 then rx_freq[1] = low;
+  if (high-rx_freq[1])<0 then rx_freq[1] = high;
+  tx_freq[1] = rx_freq[1];
+  show_freq_a;
+end;
+
+procedure TForm1.PaintBox3MouseMove(Sender TObject; Shift TShiftState; X,
+  Y Integer);
+var
+  low,high word;
+begin
+  if CheckBox1.Checked then exit;
+  if not mouse_down[2] then Exit;
+  rx_freq[2] = round(x*RX_SampleRate/fft_size);
+  low = round(rx_shift[2]/2+Rcvr[2]*rcvr_offset[2]+1);
+  high = round(rx_samplerate/2-(rx_shift[2]/2+Rcvr[2]*rcvr_offset[2]));
+  if (rx_freq[2]-low)<0 then rx_freq[2] = low;
+  if (high-rx_freq[2])<0 then rx_freq[2] = high;
+  tx_freq[2] = rx_freq[2];
+  show_freq_b;
+end;
+
+procedure TForm1.PaintBox1MouseUp(Sender TObject; Button TMouseButton;
+  Shift TShiftState; X, Y Integer);
+begin
+  mouse_down[1] = FALSE;
+end;
+
+procedure TForm1.PaintBox3MouseUp(Sender TObject; Button TMouseButton;
+  Shift TShiftState; X, Y Integer);
+begin
+  mouse_down[2] = FALSE;
+end;
+
+procedure TForm1.PaintBox1MouseDown(Sender TObject; Button TMouseButton;
+  Shift TShiftState; X, Y Integer);
+var
+  low,high word;
+begin
+  if CheckBox1.Checked then exit;
+  if not (ssLeft in shift) then Exit;
+  mouse_down[1] = TRUE;
+  rx_freq[1] = round(x*RX_SampleRate/fft_size);
+  low = round(rx_shift[1]/2+Rcvr[1]*rcvr_offset[1]+1);
+  high = round(rx_samplerate/2-(rx_shift[1]/2+Rcvr[1]*rcvr_offset[1]));
+  if (rx_freq[1]-low)<0 then rx_freq[1] = low;
+  if (high-rx_freq[1])<0 then rx_freq[1] = high;
+  tx_freq[1] = rx_freq[1];
+  show_freq_a;
+end;
+
+procedure TForm1.PaintBox3MouseDown(Sender TObject; Button TMouseButton;
+  Shift TShiftState; X, Y Integer);
+var
+  low,high word;
+begin
+  if CheckBox1.Checked then exit;
+  if not (ssLeft in shift) then Exit;
+  mouse_down[2] = TRUE;
+  rx_freq[2] = round(x*RX_SampleRate/fft_size);
+  low = round(rx_shift[2]/2+Rcvr[2]*rcvr_offset[2]+1);
+  high = round(rx_samplerate/2-(rx_shift[2]/2+Rcvr[2]*rcvr_offset[2]));
+  if (rx_freq[2]-low)<0 then rx_freq[2] = low;
+  if (high-rx_freq[2])<0 then rx_freq[2] = high;
+  tx_freq[2] = rx_freq[2];
+  show_freq_b;
+end;
+
+procedure TForm1.ServerSocket1ClientRead(Sender TObject;
+  Socket TCustomWinSocket);
+var
+  s string;
+begin
+  s = Socket.ReceiveText;
+  AGW_explode_frame(Socket.sockethandle,s);
+end;
+
+procedure TForm1.ServerSocket1ClientDisconnect(Sender TObject;
+  Socket TCustomWinSocket);
+begin
+  del_incoming_mycalls_by_sock(socket.SocketHandle);
+  AGW_del_socket(socket.SocketHandle);
+end;
+
+procedure TForm1.ServerSocket1ClientError(Sender TObject;
+  Socket TCustomWinSocket; ErrorEvent TErrorEvent;
+  var ErrorCode Integer);
+begin
+  del_incoming_mycalls_by_sock(socket.SocketHandle);
+  AGW_del_socket(socket.SocketHandle);
+  ErrorCode = 0;
+end;
+
+procedure TForm1.ServerSocket1ClientConnect(Sender TObject;
+  Socket TCustomWinSocket);
+begin
+  agw_add_socket(Socket.sockethandle);
+end;
+
+procedure TForm1.OutputVolume1Click(Sender TObject);
+var
+  s string;
+begin
+  s = "SndVol32.exe -D"+inttostr(SND_TX_DEVICE);
+  WinExec(pchar(s),SW_SHOWNORMAL);
+end;
+
+procedure TForm1.InputVolume1Click(Sender TObject);
+var
+  s string;
+begin
+  s = "SndVol32.exe -R -D"+inttostr(SND_RX_DEVICE);
+  WinExec(pchar(s),SW_SHOWNORMAL);
+end;
+
+procedure TForm1.CoolTrayIcon1Click(Sender TObject);
+begin
+  CoolTrayIcon1.ShowMainForm;
+end;
+
+procedure TForm1.CoolTrayIcon1Cycle(Sender TObject; NextIndex Integer);
+begin
+  CoolTrayIcon1.IconIndex = 2;
+  CoolTrayIcon1.CycleIcons = FALSE;
+end;
+
+procedure TForm1.ABout1Click(Sender TObject);
+begin
+  Form2.ShowModal;
+end;
+
+procedure TForm1.put_frame(snd_ch byte; frame,code string; tx_stat,excluded boolean);
+var
+  s string;
+begin
+  if RxRichedit1.Focused then Windows.SetFocus(0);
+  if code = "NON-AX25" then
+    s = inttostr(snd_ch)+" <NON-AX25 frame Len = "+inttostr(length(frame)-2)+"> ["+FormatDateTime("hhmmss",now)+"R]"
+  else
+    s = inttostr(snd_ch)+""+frame_monitor(frame,code,tx_stat);
+  //RxRichedit1.Lines.BeginUpdate;
+  RxRichedit1.SelStart = length(RxRichedit1.text);
+  RxRichEdit1.SelLength = length(s);
+  case tx_stat of
+    TRUE   RxRichEdit1.SelAttributes.Color = clMaroon;
+    FALSE  RxRichEdit1.SelAttributes.Color = clBlack;
+  end;
+  if excluded then RxRichEdit1.SelAttributes.Color = clGreen;
+  RxRichedit1.SelText = s+#10;
+  if RxRichedit1.Lines.Count>nr_monitor_lines then
+  repeat
+    RxRichedit1.Lines.Delete(0);
+  until RxRichedit1.Lines.Count = nr_monitor_lines;
+  RxRichedit1.HideSelection = FALSE;
+  RxRichedit1.SelStart = length(RxRichedit1.text);
+  RxRichedit1.SelLength = 0;
+  RxRichedit1.HideSelection = TRUE;
+  //RxRichedit1.Lines.EndUpdate;
+end;
+
+procedure TForm1.show_mode_panels;
+begin
+  panel8.Align = alNone;
+  panel6.Align = alNone;
+  if dualchan then panel6.Visible = TRUE else panel6.Visible = FALSE;
+  panel8.Align = alLeft;
+  panel6.Align = alLeft;
+end;
+
+procedure TForm1.show_panels;
+var
+  i byte;
+begin
+  panel1.Align = alNone;
+  panel2.Align = alNone;
+  panel3.Align = alNone;
+  panel4.Align = alNone;
+  panel5.Align = alNone;
+  for i = 1 to 5 do
+  case i of
+    1  panel1.Visible = panels[i];
+    2  panel5.Visible = panels[i];
+    3  panel3.Visible = panels[i];
+    4  panel4.Visible = panels[i];
+    5  panel2.Visible = panels[i];
+  end;
+  panel1.Align = alBottom;
+  panel5.Align = alBottom;
+  panel3.Align = alBottom;
+  panel2.Align = alTop;
+  panel4.Align = alClient;
+end;
+
+procedure TForm1.Secondwaterfall1Click(Sender TObject);
+begin
+  case Secondwaterfall1.Checked of
+    TRUE   Secondwaterfall1.Checked = FALSE;
+    FALSE  Secondwaterfall1.Checked = TRUE;
+  end;
+  panels[1] = Secondwaterfall1.Checked;
+  show_panels;
+end;
+
+
+
+procedure TForm1.Firstwaterfall1Click(Sender TObject);
+begin
+  case Firstwaterfall1.Checked of
+    TRUE   Firstwaterfall1.Checked = FALSE;
+    FALSE  Firstwaterfall1.Checked = TRUE;
+  end;
+  panels[2] = Firstwaterfall1.Checked;
+  show_panels;
+end;
+
+procedure TForm1.Statustable1Click(Sender TObject);
+begin
+  case Statustable1.Checked of
+    TRUE   Statustable1.Checked = FALSE;
+    FALSE  Statustable1.Checked = TRUE;
+  end;
+  panels[3] = Statustable1.Checked;
+  show_panels;
+end;
+
+procedure TForm1.Monitor1Click(Sender TObject);
+begin
+  case Monitor1.Checked of
+    TRUE   Monitor1.Checked = FALSE;
+    FALSE  Monitor1.Checked = TRUE;
+  end;
+  panels[4] = Monitor1.Checked;
+  show_panels;
+end;
+
+procedure TForm1.Devices1Click(Sender TObject);
+begin
+  if (ptt = "EXT") or (ptt = "CAT") then Form3.Button3.Enabled = TRUE else Form3.Button3.Enabled = FALSE;
+  Form3.GetDeviceInfo;
+  form3.ShowModal;
+end;
+
+procedure TForm1.FormPaint(Sender TObject);
+begin
+  RxRichedit1.HideSelection = FALSE;
+  RxRichedit1.SelStart = length(RxRichedit1.text);
+  RxRichedit1.SelLength = 0;
+  RxRichedit1.HideSelection = TRUE;
+end;
+
+procedure TForm1.Filters1Click(Sender TObject);
+begin
+  Form5.Show_modem_settings;
+end;
+
+procedure TForm1.Clearmonitor1Click(Sender TObject);
+begin
+  RxRichEdit1.Clear;
+  frame_count = 0;
+  single_frame_count = 0;
+end;
+
+procedure TForm1.Copytext1Click(Sender TObject);
+begin
+  RxRichEdit1.CopyToClipboard;
+end;
+
+procedure TForm1.ApplicationEvents1Minimize(Sender TObject);
+begin
+  if stop_wf then w_state = WIN_MINIMIZED;
+end;
+
+procedure TForm1.ApplicationEvents1Restore(Sender TObject);
+begin
+  w_state = WIN_MAXIMIZED;
+end;
+
+procedure TForm1.ServerSocket2ClientConnect(Sender TObject;
+  Socket TCustomWinSocket);
+begin
+  KISS_add_stream(socket.sockethandle);
+end;
+
+procedure TForm1.ServerSocket2ClientDisconnect(Sender TObject;
+  Socket TCustomWinSocket);
+begin
+  KISS_del_stream(socket.sockethandle);
+end;
+
+procedure TForm1.ServerSocket2ClientError(Sender TObject;
+  Socket TCustomWinSocket; ErrorEvent TErrorEvent;
+  var ErrorCode Integer);
+begin
+  KISS_del_stream(socket.sockethandle);
+  ErrorCode = 0;
+end;
+
+procedure TForm1.ServerSocket2ClientRead(Sender TObject;
+  Socket TCustomWinSocket);
+var
+  data string;
+begin
+  data = socket.ReceiveText;
+  KISS_on_data_in(socket.sockethandle,data);
+end;
+
+procedure TForm1.Font1Click(Sender TObject);
+begin
+  FontDialog1.Font = RXRichEdit1.Font;
+  if FontDialog1.Execute then
+  begin
+    RXRichEdit1.SelStart = 0;
+    RXRichEdit1.SelLength = Length(RXRichEdit1.Text);
+    RXRichEdit1.SelAttributes.Size = FontDialog1.Font.Size;
+    RXRichEdit1.SelAttributes.Name = FontDialog1.Font.Name;
+    RXRichEdit1.Font.Size = FontDialog1.Font.Size;
+    RXRichEdit1.Font.Name = FontDialog1.Font.Name;
+    WriteIni;
+  end;
+end;
+
+procedure TForm1.Calibration1Click(Sender TObject);
+begin
+  Form6.ShowModal;
+end;
+
+procedure TForm1.ComboBox1Change(Sender TObject);
+begin
+  Speed[1] = get_idx_by_name(ComboBox1.Text);
+  init_speed(1);
+  windows.setfocus(0);
+end;
+
+procedure TForm1.ComboBox1KeyDown(Sender TObject; var Key Word;
+  Shift TShiftState);
+begin
+  key = 0;
+  windows.SetFocus(0);
+end;
+
+procedure TForm1.ComboBox1KeyPress(Sender TObject; var Key Char);
+begin
+  key = #0;
+  windows.SetFocus(0);
+end;
+
+procedure TForm1.ComboBox2Change(Sender TObject);
+begin
+  Speed[2] = get_idx_by_name(ComboBox2.Text);
+  init_speed(2);
+  windows.setfocus(0);
+end;
+
+procedure TForm1.FormDestroy(Sender TObject);
+var
+  snd_ch byte;
+begin
+  stoprx;
+  for snd_ch = 1 to 2 do if snd_status[snd_ch] = SND_TX then stoptx(snd_ch);
+  if (debugmode and DEBUG_TIMER) = 0 then free_timer1;
+  TimerStat2 = TIMER_OFF;
+  PTTClose;
+  ax25_free;
+  agw_free;
+  kiss_free;
+  detector_free;
+  RS.Free;
+  waterfall_free;
+  WriteIni;
+end;
+
+end.
+*/
\ No newline at end of file
diff --git a/soundmodem.ico b/soundmodem.ico
new file mode 100644
index 0000000000000000000000000000000000000000..c8243311c2ccb529cb00645c570b6e6a4c56bf60
GIT binary patch
literal 766
zcmZQzU<5)11py$*!tjELfkBLcfk6X^6@b_Qh(Y4$KmaPh!p6hU($>PzbL<a;j9U)F
zkzGd^&Kx_#kg}<Ufyb<eVGoF1Rl@M+-yepSeSa9XJo>}H!sNp+WzrO|3IAyhJ|H<A
zWEm2df&c%1WN8KlAU`zJH6+y4)g{Em#RbHFfY87K;xkNu3$TLtoHH2`Y>KL@i)w12
z^2`agwIE;s<~xAG@B$DpFmOQ32ipL)1IR~r&woZqK`4+E0J-;r9E>jrbS@Au!uVim
zpaP&nLBJIvjW7|cdWaG~7#R40QN#X#fq@wx2B`sJexQ2!KMV}^{}>qRfk8^NuL1V1
B!^;2w

literal 0
HcmV?d00001

diff --git a/tcpCode.cpp b/tcpCode.cpp
new file mode 100644
index 0000000..6bebaf9
--- /dev/null
+++ b/tcpCode.cpp
@@ -0,0 +1,759 @@
+/*
+Copyright (C) 2019-2020 Andrei Kopanchuk UZ7HO
+
+This file is part of QtSoundModem
+
+QtSoundModem is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+QtSoundModem is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with QtSoundModem.  If not, see http://www.gnu.org/licenses
+
+*/
+
+// UZ7HO Soundmodem Port by John Wiseman G8BPQ
+
+#include <QMessageBox>
+#include "QtSoundModem.h"
+#include "UZ7HOStuff.h"
+#include <QTimer>
+
+#define CONNECT(sndr, sig, rcvr, slt) connect(sndr, SIGNAL(sig), rcvr, SLOT(slt))
+
+QList<QTcpSocket*>  _KISSSockets;
+QList<QTcpSocket*>  _AGWSockets;
+
+QTcpServer * _KISSserver;
+QTcpServer * _AGWserver;
+
+extern workerThread *t;
+extern mynet m1;
+
+extern "C" int KISSPort;
+extern "C" void * initPulse();
+extern "C" int SoundMode;
+
+extern "C" int UDPClientPort;
+extern "C" int UDPServerPort;
+extern "C" int TXPort;
+
+char UDPHost[64] = "";
+
+int UDPServ = 0;				// UDP Server Active (ie broadcast sound frams as UDP packets)
+
+QMutex mutex;
+
+extern void saveSettings();
+
+extern int Closing;				// Set to stop background thread
+
+extern "C"
+{
+	void KISSDataReceived(void * sender, char * data, int length);
+	void AGW_explode_frame(void * soket, char * data, int len);
+	void KISS_add_stream(void * Socket);
+	void KISS_del_socket(void * Socket);
+	void AGW_add_socket(void * Socket);
+	void AGW_del_socket(void * socket);
+	void Debugprintf(const char * format, ...);
+	int InitSound(BOOL Report);
+	void soundMain();
+	void MainLoop();
+	void set_speed(int snd_ch, int Modem);
+	void init_speed(int snd_ch);
+
+}
+
+extern "C" int nonGUIMode;
+
+QTimer *timer;
+QTimer *timercopy;
+
+void mynet::start()
+{
+	if (SoundMode == 3)
+		OpenUDP();
+
+	if (UDPServ)
+		OpenUDP();
+
+	if (KISSServ)
+	{
+		_KISSserver = new(QTcpServer);
+
+		if (_KISSserver->listen(QHostAddress::Any, KISSPort))
+			connect(_KISSserver, SIGNAL(newConnection()), this, SLOT(onKISSConnection()));
+		else
+		{
+			if (nonGUIMode)
+				Debugprintf("Listen failed for KISS Port");
+			else
+			{
+				QMessageBox msgBox;
+				msgBox.setText("Listen failed for KISS Port.");
+				msgBox.exec();
+			}
+		}
+	}
+
+	if (AGWServ)
+	{
+		_AGWserver = new(QTcpServer);
+		if (_AGWserver->listen(QHostAddress::Any, AGWPort))
+			connect(_AGWserver, SIGNAL(newConnection()), this, SLOT(onAGWConnection()));
+		else
+		{
+			if (nonGUIMode)
+				Debugprintf("Listen failed for AGW Port");
+			else
+			{
+				QMessageBox msgBox;
+				msgBox.setText("Listen failed for AGW Port.");
+				msgBox.exec();
+			}
+		}
+	}
+
+	QObject::connect(t, SIGNAL(sendtoKISS(void *, unsigned char *, int)), this, SLOT(sendtoKISS(void *, unsigned char *, int)), Qt::QueuedConnection);
+
+
+	QTimer *timer = new QTimer(this);
+	connect(timer, SIGNAL(timeout()), this, SLOT(MyTimerSlot()));
+	timer->start(100);
+}
+
+void mynet::MyTimerSlot()
+{
+	// 100 mS Timer Event
+
+	TimerEvent = TIMER_EVENT_ON;
+}
+
+
+void mynet::onAGWConnection()
+{
+	QTcpSocket *clientSocket = _AGWserver->nextPendingConnection();
+	connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onAGWReadyRead()));
+	connect(clientSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onAGWSocketStateChanged(QAbstractSocket::SocketState)));
+
+	_AGWSockets.push_back(clientSocket);
+
+	AGW_add_socket(clientSocket);
+
+	Debugprintf("AGW Connect Sock %x", clientSocket);
+}
+
+
+
+void mynet::onAGWSocketStateChanged(QAbstractSocket::SocketState socketState)
+{
+	if (socketState == QAbstractSocket::UnconnectedState)
+	{
+		QTcpSocket* sender = static_cast<QTcpSocket*>(QObject::sender());
+
+		AGW_del_socket(sender);
+
+		_AGWSockets.removeOne(sender);
+	}
+}
+
+void mynet::onAGWReadyRead()
+{
+	QTcpSocket* sender = static_cast<QTcpSocket*>(QObject::sender());
+	QByteArray datas = sender->readAll();
+
+	AGW_explode_frame(sender, datas.data(), datas.length());
+}
+
+
+void mynet::onKISSConnection()
+{
+	QTcpSocket *clientSocket = _KISSserver->nextPendingConnection();
+	connect(clientSocket, SIGNAL(readyRead()), this, SLOT(onKISSReadyRead()));
+	connect(clientSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onKISSSocketStateChanged(QAbstractSocket::SocketState)));
+
+	_KISSSockets.push_back(clientSocket);
+
+	KISS_add_stream(clientSocket);
+
+	Debugprintf("KISS Connect Sock %x", clientSocket);
+}
+
+void mynet::onKISSSocketStateChanged(QAbstractSocket::SocketState socketState)
+{
+	if (socketState == QAbstractSocket::UnconnectedState)
+	{
+		QTcpSocket* sender = static_cast<QTcpSocket*>(QObject::sender());
+
+		KISS_del_socket(sender);
+
+		_KISSSockets.removeOne(sender);
+	}
+}
+
+void mynet::onKISSReadyRead()
+{
+	QTcpSocket* sender = static_cast<QTcpSocket*>(QObject::sender());
+	QByteArray datas = sender->readAll();
+
+	KISSDataReceived(sender, datas.data(), datas.length());
+}
+
+
+
+void mynet::displayError(QAbstractSocket::SocketError socketError)
+{
+	if (socketError == QTcpSocket::RemoteHostClosedError)
+		return;
+
+	qDebug() << tcpClient->errorString();
+
+	tcpClient->close();
+	tcpServer->close();
+}
+
+
+
+void mynet::sendtoKISS(void * sock, unsigned char * Msg, int Len)
+{
+	if (sock == NULL)
+	{
+		for (QTcpSocket* socket : _KISSSockets)
+		{
+			socket->write((char *)Msg, Len);
+		}
+	}
+	else
+	{
+		QTcpSocket* socket = (QTcpSocket*)sock;
+		socket->write((char *)Msg, Len);
+	}
+//	free(Msg);
+}
+
+
+
+QTcpSocket * HAMLIBsock;
+int HAMLIBConnected = 0;
+int HAMLIBConnecting = 0;
+
+void mynet::HAMLIBdisplayError(QAbstractSocket::SocketError socketError)
+{
+	switch (socketError)
+	{
+	case QAbstractSocket::RemoteHostClosedError:
+		break;
+
+	case QAbstractSocket::HostNotFoundError:
+		if (nonGUIMode)
+			qDebug() << "HAMLIB host was not found. Please check the host name and port settings.";
+		else
+		{
+			QMessageBox::information(nullptr, tr("QtSM"),
+				tr("HAMLIB host was not found. Please check the "
+					"host name and port settings."));
+		}
+
+		break;
+
+	case QAbstractSocket::ConnectionRefusedError:
+
+		qDebug() << "HAMLIB Connection Refused";
+		break;
+
+	default:
+
+		qDebug() << "HAMLIB Connection Failed";
+		break;
+
+	}
+
+	HAMLIBConnecting = 0;
+	HAMLIBConnected = 0;
+}
+
+void mynet::HAMLIBreadyRead()
+{
+	unsigned char Buffer[4096];
+	QTcpSocket* Socket = static_cast<QTcpSocket*>(QObject::sender());
+
+	// read the data from the socket. Don't do anyhing with it at the moment
+
+	Socket->read((char *)Buffer, 4095);
+}
+
+void mynet::onHAMLIBSocketStateChanged(QAbstractSocket::SocketState socketState)
+{
+	if (socketState == QAbstractSocket::UnconnectedState)
+	{
+		// Close any connections
+
+		HAMLIBConnected = 0;
+		qDebug() << "HAMLIB Connection Closed";
+	}
+	else if (socketState == QAbstractSocket::ConnectedState)
+	{
+		HAMLIBConnected = 1;
+		HAMLIBConnecting = 0;
+		qDebug() << "HAMLIB Connected";
+	}
+}
+
+
+void mynet::ConnecttoHAMLIB()
+{
+	delete(HAMLIBsock);
+
+	HAMLIBConnected = 0;
+	HAMLIBConnecting = 1;
+
+	HAMLIBsock = new QTcpSocket();
+
+	connect(HAMLIBsock, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(HAMLIBdisplayError(QAbstractSocket::SocketError)));
+	connect(HAMLIBsock, SIGNAL(readyRead()), this, SLOT(HAMLIBreadyRead()));
+	connect(HAMLIBsock, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onHAMLIBSocketStateChanged(QAbstractSocket::SocketState)));
+
+	HAMLIBsock->connectToHost(HamLibHost, HamLibPort);
+
+	return;
+}
+
+extern "C" void HAMLIBSetPTT(int PTTState)
+{
+	// Won't work in non=gui mode
+
+	emit m1.HLSetPTT(PTTState);
+}
+
+extern "C" void startTimer(int Time)
+{
+	// Won't work in non=gui mode
+
+	emit m1.startTimer(Time);
+}
+
+void mynet::dostartTimer(int Time)
+{
+	timercopy->start(Time);
+}
+
+extern "C" void stopTimer()
+{
+	// Won't work in non=gui mode
+
+	emit m1.stopTimer();
+}
+
+void mynet::dostopTimer()
+{
+	timercopy->stop();
+}
+
+void mynet::doHLSetPTT(int c)
+{
+	char Msg[16];
+
+	if (HAMLIBsock == nullptr || HAMLIBsock->state() != QAbstractSocket::ConnectedState)
+		ConnecttoHAMLIB();
+
+	sprintf(Msg, "T %d\r\n", c);
+	HAMLIBsock->write(Msg);
+
+	HAMLIBsock->waitForBytesWritten(30000);
+
+	QByteArray datas = HAMLIBsock->readAll();
+
+	qDebug(datas.data());
+
+}
+
+
+
+
+
+extern "C" void KISSSendtoServer(void * sock, Byte * Msg, int Len)
+{
+	emit t->sendtoKISS(sock, Msg, Len);
+}
+
+
+void workerThread::run()
+{
+	if (SoundMode == 2)			// Pulse
+	{
+		if (initPulse() == nullptr)
+		{
+			if (nonGUIMode)
+			{
+				qDebug() << "PulseAudio requested but pulseaudio libraries not found\nMode set to ALSA\n";
+			}
+			else
+			{
+				QMessageBox msgBox;
+				msgBox.setText("PulseAudio requested but pulseaudio libraries not found\nMode set to ALSA");
+				msgBox.exec();
+			}
+			SoundMode = 0;
+			saveSettings();
+		}
+	}
+
+	soundMain();
+
+	if (SoundMode != 3)
+	{
+		if (!InitSound(1))
+		{
+			//		QMessageBox msgBox;
+			//		msgBox.setText("Open Sound Card Failed");
+			//		msgBox.exec();
+		}
+	}
+
+	// Initialise Modems
+
+	init_speed(0);
+	init_speed(1);
+	init_speed(2);
+	init_speed(3);
+
+	//	emit t->openSockets();
+
+	while (Closing == 0)
+	{
+		// Run scheduling loop
+
+		MainLoop();
+
+		this->msleep(10);
+	}
+
+	qDebug() << "Saving Settings";
+
+	saveSettings();
+
+	qDebug() << "Main Loop exited";
+
+	qApp->exit();
+
+};
+
+// Audio over UDP Code.
+
+// Code can either send audio blocks from the sound card as UDP packets or use UDP packets from 
+// a suitable source (maybe another copy of QtSM) and process them instead of input frm a sound card/
+
+// ie act as a server or client for UDP audio.
+
+// of course we need bidirectional audio, so even when we are a client we send modem generated samples
+// to the server and as a server pass received smaples to modem
+
+// It isn't logical to run as both client and server, so probably can use just one socket
+
+
+QUdpSocket * udpSocket;
+
+qint64 udpServerSeqno= 0;
+qint64 udpClientLastSeq = 0;
+qint64 udpServerLastSeq = 0;
+int droppedPackets = 0;
+extern "C" int UDPSoundIsPlaying;
+
+QQueue <unsigned char *> queue;
+
+
+void mynet::OpenUDP()
+{
+	udpSocket = new QUdpSocket();
+
+	if (UDPServ)
+	{
+		udpSocket->bind(QHostAddress("0.0.0.0"), UDPServerPort);
+		QTimer *timer = new QTimer(this);
+		timercopy = timer;
+		connect(timer, SIGNAL(timeout()), this, SLOT(dropPTT()));
+	}
+	else
+		udpSocket->bind(QHostAddress("0.0.0.0"), UDPClientPort);
+
+	connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));	
+}
+
+extern "C" void Flush();
+
+void mynet::dropPTT()
+{
+	timercopy->stop();
+	
+	if (UDPSoundIsPlaying)
+	{
+		// Drop PTT when all sent
+
+		Flush();
+		UDPSoundIsPlaying = 0;
+		Debugprintf("PTT Off");
+		RadioPTT(0, 0);
+	}
+}
+
+void mynet::readPendingDatagrams()
+{
+	while (udpSocket->hasPendingDatagrams())
+	{
+		QHostAddress Addr;
+		quint16 rxPort;
+		char copy[1501];
+
+		// We expect datagrams of 1040 bytes containing a 16 byte header and 512 16 bit samples
+		// We should get a datagram every 43 mS. We need to use a timeout to drop PTT if running as server
+
+		if (UDPServ)
+			timercopy->start(200);
+
+		int Len = udpSocket->readDatagram(copy, 1500, &Addr, &rxPort);
+
+		if (Len == 1040)
+		{
+			qint64 Seq;
+
+			memcpy(&Seq, copy, sizeof(udpServerSeqno));
+
+			if (Seq < udpClientLastSeq || udpClientLastSeq == 0)
+
+				// Client or Server Restarted
+
+				udpClientLastSeq = Seq;
+
+			else
+			{
+				int Missed = Seq - udpClientLastSeq;
+
+				if (Missed > 100)			// probably stopped in debug
+					Missed = 1;
+
+				while (--Missed)
+				{
+					droppedPackets++;
+
+					// insert silence to maintain timing
+
+					unsigned char * pkt = (unsigned char *)malloc(1024);
+
+					memset(pkt, 0, 1024);
+
+					mutex.lock();
+					queue.append(pkt);
+					mutex.unlock();
+
+				}
+			}
+
+			udpClientLastSeq = Seq;
+
+			unsigned char * pkt = (unsigned char *)malloc(1024);
+
+			memcpy(pkt, &copy[16], 1024);
+
+			mutex.lock();
+			queue.append(pkt);
+			mutex.unlock();
+		}
+	}
+}
+
+void  mynet::socketError()
+{
+	char errMsg[80];
+	sprintf(errMsg, "%d %s", udpSocket->state(), udpSocket->errorString().toLocal8Bit().constData());
+	//	qDebug() << errMsg;
+	//	QMessageBox::question(NULL, "ARDOP GUI", errMsg, QMessageBox::Yes | QMessageBox::No);
+}
+
+extern "C" void sendSamplestoStdout(short * Samples, int nSamples)
+{
+
+}
+
+
+extern "C" void sendSamplestoUDP(short * Samples, int nSamples, int Port)
+{
+	if (udpSocket == nullptr)
+		return;
+	
+	unsigned char txBuff[1048];
+
+	memcpy(txBuff, &udpServerSeqno, sizeof(udpServerSeqno));
+	udpServerSeqno++;
+
+	if (nSamples > 512)
+		nSamples = 512;
+
+	nSamples <<= 1;				// short to byte
+
+	memcpy(&txBuff[16], Samples, nSamples);
+
+	udpSocket->writeDatagram((char *)txBuff, nSamples + 16, QHostAddress(UDPHost), Port);
+}
+
+static int min = 0, max = 0, lastlevelGUI = 0, lastlevelreport = 0;
+
+static UCHAR CurrentLevel = 0;		// Peak from current samples
+
+extern "C" int SoundIsPlaying;
+extern "C" short * SendtoCard(short * buf, int n);
+extern "C" short * DMABuffer;
+
+
+extern "C" void ProcessNewSamples(short * Samples, int nSamples);
+
+
+extern "C" void UDPPollReceivedSamples()
+{
+	if (queue.isEmpty())
+		return;
+
+	short * ptr;
+	short * save;
+
+	// If we are using UDP for output (sound server) send samples to sound card.
+	// If for input (virtual sound card) then pass to modem
+
+	if (UDPServ)
+	{
+		// We only get packets if TX active (sound VOX) so raise PTT and start sending
+		// ?? do we ignore if local modem is already sending ??
+
+		if (SoundIsPlaying)
+		{
+			mutex.lock();
+			save = ptr = (short *)queue.dequeue();
+			mutex.unlock();
+			free(save);
+		}
+		
+		if (UDPSoundIsPlaying == 0)
+		{
+			// Wait for a couple of packets to reduce risk of underrun (but not too many or delay will be excessive
+
+			if (queue.count() < 3)
+				return;
+
+			UDPSoundIsPlaying = 1;
+			Debugprintf("PTT On");
+			RadioPTT(0, 1);				// UDP only use one channel
+
+			/// !! how do we drop ptt ??
+		}
+
+		while (queue.count() > 1)
+		{
+			short * outptr = DMABuffer;
+			boolean dropPTT1 = 1;
+			boolean dropPTT2 = 1;
+
+			// We get mono samples but soundcard expects stereo
+			// Sound card needs 1024 samples so send two packets
+
+			mutex.lock();
+			save = ptr = (short *)queue.dequeue();
+			mutex.unlock();
+
+			for (int n = 0; n < 512; n++)
+			{
+				*(outptr++) = *ptr;
+				*(outptr++) = *ptr++;	// Duplicate
+				if (*ptr)
+					dropPTT1 = 0;		// Drop PTT if all samples zero
+			}
+
+			free(save);
+
+			mutex.lock();
+			save = ptr = (short *)queue.dequeue();
+			mutex.unlock();
+
+			for (int n = 0; n < 512; n++)
+			{
+				*(outptr++) = *ptr;
+				*(outptr++) = *ptr++;	// Duplicate
+				if (*ptr)
+					dropPTT2 = 0;		// Drop PTT if all samples zero
+			}
+
+			free(save);
+
+			if (dropPTT1 && dropPTT2)
+			{
+				startTimer(1);			// All zeros so no need to send
+				return;
+			}
+
+			DMABuffer = SendtoCard(DMABuffer, 1024);
+
+			if (dropPTT2)				// 2nd all zeros
+				startTimer(1);	
+		}
+		return;
+	}
+
+	mutex.lock();
+	save = ptr = (short *)queue.dequeue();
+	mutex.unlock();
+
+	// We get mono samples but modem expects stereo
+
+	short Buff[2048];
+	short * inptr = (short *)ptr;
+	short * outptr = Buff;
+
+	int i;
+
+	for (i = 0; i < ReceiveSize; i++)
+	{
+		if (*(ptr) < min)
+			min = *ptr;
+		else if (*(ptr) > max)
+			max = *ptr;
+		ptr++;
+	}
+
+	CurrentLevel = ((max - min) * 75) / 32768;	// Scale to 150 max
+
+	if ((Now - lastlevelGUI) > 2000)	// 2 Secs
+	{
+		lastlevelGUI = Now;
+
+		if ((Now - lastlevelreport) > 10000)	// 10 Secs
+		{
+			char HostCmd[64];
+			lastlevelreport = Now;
+
+			sprintf(HostCmd, "INPUTPEAKS %d %d", min, max);
+			Debugprintf("Input peaks = %d, %d", min, max);
+		}
+		
+		min = max = 0;
+	}
+
+	for (int n = 0; n < 512; n++)
+	{
+		*(outptr++) = *inptr;
+		*(outptr++) = *inptr++;	// Duplicate
+	}
+
+	ProcessNewSamples(Buff, 512);
+	free(save);
+}
+
+
+
+
+
+
diff --git a/tcpCode.h b/tcpCode.h
new file mode 100644
index 0000000..dcc19bd
--- /dev/null
+++ b/tcpCode.h
@@ -0,0 +1,76 @@
+#include <QtCore/QCoreApplication>
+#include <QtNetwork>
+//#include <QDebug>
+
+#define CONNECT(sndr, sig, rcvr, slt) connect(sndr, SIGNAL(sig), rcvr, SLOT(slt))
+
+class mynet : public QObject
+{
+	Q_OBJECT
+
+signals:
+
+	void HLSetPTT(int c);
+	void startTimer(int Time);
+	void stopTimer();
+
+public:
+	void start();
+	void OpenUDP();
+
+
+public slots:
+	void onAGWReadyRead();
+	void onKISSSocketStateChanged(QAbstractSocket::SocketState socketState);
+	void onKISSReadyRead();
+	void onAGWSocketStateChanged(QAbstractSocket::SocketState socketState);
+	void onKISSConnection();
+	void MyTimerSlot();
+	void onAGWConnection();
+	void dropPTT();
+
+	void displayError(QAbstractSocket::SocketError socketError);
+
+	void sendtoKISS(void * sock, unsigned char * Msg, int Len);
+
+	void HAMLIBdisplayError(QAbstractSocket::SocketError socketError);
+	void HAMLIBreadyRead();
+	void onHAMLIBSocketStateChanged(QAbstractSocket::SocketState socketState);
+	void ConnecttoHAMLIB();
+	void dostartTimer(int Time);
+	void dostopTimer();
+	void doHLSetPTT(int c);
+
+	void readPendingDatagrams();
+	void socketError();
+
+private:
+	QTcpServer* tcpServer;
+	QTcpSocket* tcpClient;
+	QTcpSocket* tcpServerConnection;
+	int bytesToWrite;
+	int bytesWritten;
+	int bytesReceived;
+	int TotalBytes;
+	int PayloadSize;
+};
+
+
+class workerThread : public QThread
+{
+	Q_OBJECT
+signals:
+	void updateDCD(int, int);
+	void sendtoTrace(char *, int);
+	void sendtoKISS(void *, unsigned char *, int);
+	void openSockets();
+
+private:
+	void run();
+public:
+
+};
+
+
+
+