shithub: ft2-clone

Download patch

ref: e5d197d470859f5f951fcbae17da7d6e99a53163
parent: 0fe93d0068b6303b3367a825fe9012bc7dad0387
author: Olav Sørensen <olav.sorensen@live.no>
date: Sun Sep 27 14:48:08 EDT 2020

Pushed v1.35 code

- Added an option to change interpolation mode to 2-tap linear, just to match
  real FT2. This interpolation method is of worse quality than the current one
  (4-tap cubic spline).
- Fixed some sample tap bugs with the cubic spline resampling interpolation
- Fixed an issue where unwanted sample data could be shown at the loop end
  point of a looped sample in the sample editor.
- Updated some parts of the help text
- Small code cleanup

--- a/src/ft2_about.c
+++ b/src/ft2_about.c
@@ -37,6 +37,7 @@
 static int16_t hastighet;
 static int32_t lastStarScreenPos[NUM_STARS];
 static uint32_t randSeed;
+static double pi;
 static vector_t starcrd[NUM_STARS];
 static rotate_t star_a;
 static matrix_t starmat;
@@ -62,12 +63,12 @@
 	int32_t sa, sb, sc, ca, cb, cc;
 
 	// original code used a cos/sin table, but this only runs once per frame, no need...
-	sa = (int32_t)round(32767.0 * sin(a.x * (2.0 * M_PI / 65536.0)));
-	ca = (int32_t)round(32767.0 * cos(a.x * (2.0 * M_PI / 65536.0)));
-	sb = (int32_t)round(32767.0 * sin(a.y * (2.0 * M_PI / 65536.0)));
-	cb = (int32_t)round(32767.0 * cos(a.y * (2.0 * M_PI / 65536.0)));
-	sc = (int32_t)round(32767.0 * sin(a.z * (2.0 * M_PI / 65536.0)));
-	cc = (int32_t)round(32767.0 * cos(a.z * (2.0 * M_PI / 65536.0)));
+	sa = (int32_t)round(32767.0 * sin(a.x * (2.0 * pi / 65536.0)));
+	ca = (int32_t)round(32767.0 * cos(a.x * (2.0 * pi / 65536.0)));
+	sb = (int32_t)round(32767.0 * sin(a.y * (2.0 * pi / 65536.0)));
+	cb = (int32_t)round(32767.0 * cos(a.y * (2.0 * pi / 65536.0)));
+	sc = (int32_t)round(32767.0 * sin(a.z * (2.0 * pi / 65536.0)));
+	cc = (int32_t)round(32767.0 * cos(a.z * (2.0 * pi / 65536.0)));
 
 	mat->x.x = (int16_t)(((ca * cc) >> 16) + ((sc * ((sa * sb) >> 16)) >> (16-1)));
 	mat->y.x = (int16_t)((sa * cb) >> 16);
@@ -94,6 +95,8 @@
 	int32_t r, n, w, h;
 	double ww;
 
+	pi = 4.0 * atan(1.0); // M_PI can not be trusted
+
 	type = (uint8_t)random32(4);
 	switch (type)
 	{
@@ -125,7 +128,7 @@
 					r = random32(30000);
 					n = random32(5);
 					w = ((2 * random32(2)) - 1) * sqr(random32(1000));
-					ww = (((M_PI * 2.0) / 5.0) * n) + (r / 12000.0) + (w / 3000000.0);
+					ww = (((pi * 2.0) / 5.0) * n) + (r / 12000.0) + (w / 3000000.0);
 					h = ((sqr(r) / 30000) * (random32(10000) - 5000)) / 12000;
 
 					starcrd[i].x = (int16_t)(r * cos(ww));
@@ -146,9 +149,9 @@
 				w = random32(3000);
 				ww = ((w * 8) + r) / 16.0;
 
-				const int32_t z = (int32_t)round(32767.0 * cos(w * (2.0 * M_PI / 1024.0)));
-				const int32_t y = (int32_t)round(32767.0 * sin(w * (2.0 * M_PI / 1024.0)));
-				const int32_t x = (int32_t)round(32767.0 * cos(ww * (2.0 * M_PI / 1024.0))) / 4;
+				const int32_t z = (int32_t)round(32767.0 * cos(w * (2.0 * pi / 1024.0)));
+				const int32_t y = (int32_t)round(32767.0 * sin(w * (2.0 * pi / 1024.0)));
+				const int32_t x = (int32_t)round(32767.0 * cos(ww * (2.0 * pi / 1024.0))) / 4;
 
 				starcrd[i].z = (int16_t)((z * (w + r)) / 3500);
 				starcrd[i].y = (int16_t)((y * (w + r)) / 3500);
@@ -233,8 +236,6 @@
 	fixaMatris(star_a, &starmat);
 	realStars();
 }
-
-extern uint32_t *unpackedData;
 
 void showAboutScreen(void) // called once when About screen is opened
 {
--- a/src/ft2_audio.c
+++ b/src/ft2_audio.c
@@ -186,10 +186,10 @@
 	unlockMixerCallback();
 }
 
-void audioSetInterpolation(bool interpolation)
+void audioSetInterpolationType(uint8_t interpolationType)
 {
 	lockMixerCallback();
-	audio.interpolationFlag = interpolation;
+	audio.interpolationType = interpolationType;
 	unlockMixerCallback();
 }
 
@@ -321,13 +321,27 @@
 	{
 		v->base16 = (const int16_t *)s->pek;
 		v->revBase16 = &v->base16[loopStart + loopEnd]; // for pingpong loops
+
+		// first tap [-1] sample for special case: if (hasLooped && pos == loopStart)
+		if (loopType == 1)
+			v->fTapFixSample = v->base16[loopEnd-1];
+		else if (loopType == 2)
+			v->fTapFixSample = v->base16[loopStart];
 	}
 	else
 	{
 		v->base8 = s->pek;
 		v->revBase8 = &v->base8[loopStart + loopEnd]; // for pingpong loops
+
+		// first tap [-1] sample for special case: if (hasLooped && pos == loopStart)
+		if (loopType == 1)
+			v->fTapFixSample = v->base8[loopEnd-1];
+		else if (loopType == 2)
+			v->fTapFixSample = v->base8[loopStart];
 	}
 
+	v->hasLooped = false; // for cubic interpolation special case (read fTapFixSample comment above)
+
 	v->backwards = false;
 	v->loopType = loopType;
 	v->end = (loopType > 0) ? loopEnd : length;
@@ -343,7 +357,7 @@
 		return;
 	}
 
-	v->mixFuncOffset = (sampleIs16Bit * 6) + (audio.interpolationFlag * 3) + loopType;
+	v->mixFuncOffset = (sampleIs16Bit * 9) + (audio.interpolationType * 3) + loopType;
 	v->active = true;
 }
 
@@ -548,13 +562,13 @@
 				centerMixFlag = v->fVolL == v->fVolR;
 			}
 
-			mixFuncTab[(centerMixFlag * 24) + (volRampFlag * 12) + v->mixFuncOffset](v, samplesToMix);
+			mixFuncTab[(centerMixFlag * 36) + (volRampFlag * 18) + v->mixFuncOffset](v, samplesToMix);
 		}
 
 		if (r->active) // volume ramp fadeout-voice
 		{
 			const bool centerMixFlag = (r->fDestVolL == r->fDestVolR) && (r->fVolDeltaL == r->fVolDeltaR);
-			mixFuncTab[(centerMixFlag * 24) + 12 + r->mixFuncOffset](r, samplesToMix);
+			mixFuncTab[(centerMixFlag * 36) + 18 + r->mixFuncOffset](r, samplesToMix);
 		}
 	}
 }
--- a/src/ft2_audio.h
+++ b/src/ft2_audio.h
@@ -11,6 +11,8 @@
 	FREQ_TABLE_AMIGA = 1,
 };
 
+#define NUM_FIXED_TAP_SAMPLES 2
+
 #define MIN_AUDIO_FREQ 44100
 #define MAX_AUDIO_FREQ 192000
 
@@ -27,8 +29,9 @@
 {
 	char *currInputDevice, *currOutputDevice, *lastWorkingAudioDeviceName;
 	char *inputDeviceNames[MAX_AUDIO_DEVICES], *outputDeviceNames[MAX_AUDIO_DEVICES];
-	volatile bool locked, resetSyncTickTimeFlag, volumeRampingFlag, interpolationFlag;
+	volatile bool locked, resetSyncTickTimeFlag, volumeRampingFlag;
 	bool linearFreqTable, rescanAudioDevicesSupported;
+	volatile uint8_t interpolationType;
 	int32_t quickVolRampSamples, inputDeviceNum, outputDeviceNum, lastWorkingAudioFreq, lastWorkingAudioBits;
 	uint32_t freq, audLatencyPerfValInt, audLatencyPerfValFrac, samplesPerTick, musicTimeSpeedVal;
 	uint64_t tickTime64, tickTime64Frac, tickTimeLengthTab[MAX_BPM+1];
@@ -44,11 +47,12 @@
 {
 	const int8_t *base8, *revBase8;
 	const int16_t *base16, *revBase16;
-	bool active, backwards, isFadeOutVoice;
+	bool active, backwards, isFadeOutVoice, hasLooped;
 	uint8_t mixFuncOffset, pan, loopType;
 	int32_t pos, end, loopStart, loopLength;
 	uint32_t volRampSamples, revDelta;
 	uint64_t posFrac, delta;
+	float fTapFixSample; // if (loopStart > 0 && pos == loopStart) useThisForFirstTap();
 	float fVol, fDestVolL, fDestVolR, fVolL, fVolR, fVolDeltaL, fVolDeltaR;
 } voice_t;
 
@@ -98,7 +102,7 @@
 void setBackOldAudioFreq(void);
 void setSpeed(uint16_t bpm);
 void audioSetVolRamp(bool volRamp);
-void audioSetInterpolation(bool interpolation);
+void audioSetInterpolationType(uint8_t interpolationType);
 void stopVoice(int32_t i);
 bool setupAudio(bool showErrorMsg);
 void closeAudio(void);
--- a/src/ft2_checkboxes.c
+++ b/src/ft2_checkboxes.c
@@ -81,8 +81,7 @@
 	// ------ CONFIG CHECKBOXES ------
 	//x,   y,   w,   h,  funcOnUp
 	{   3,  91,  77, 12, cbToggleAutoSaveConfig },
-	{ 389, 132,  90, 12, cbConfigInterpolation },
-	{ 389, 145, 107, 12, cbConfigVolRamp },
+	{ 389, 159, 107, 12, cbConfigVolRamp },
 	{ 113,  14, 108, 12, cbConfigPattStretch },
 	{ 113,  27, 117, 12, cbConfigHexCount },
 	{ 113,  40,  81, 12, cbConfigAccidential },
--- a/src/ft2_checkboxes.h
+++ b/src/ft2_checkboxes.h
@@ -54,7 +54,6 @@
 	CB_CONF_AUTOSAVE,
 
 	// CONFIG AUDIO
-	CB_CONF_INTERPOLATION,
 	CB_CONF_VOL_RAMP,
 
 	// CONFIG LAYOUT
--- a/src/ft2_config.c
+++ b/src/ft2_config.c
@@ -47,7 +47,7 @@
 static void xorConfigBuffer(uint8_t *ptr8)
 {
 	for (int32_t i = 0; i < CONFIG_FILE_SIZE; i++)
-		ptr8[i] ^= (uint8_t)(i * 7);
+		ptr8[i] ^= i*7;
 }
 
 static int32_t calcChecksum(uint8_t *p, uint16_t len) // for nibbles highscore data
@@ -141,6 +141,8 @@
 	config.recMIDIVolSens = CLAMP(config.recMIDIVolSens, 0, 200);
 	config.recMIDIChn  = CLAMP(config.recMIDIChn, 1, 16);
 
+	config.interpolation &= 3; // one extra bit used in FT2 clone (off, cubic, linear)
+
 	if (config.recTrueInsert > 1)
 		config.recTrueInsert = 1;
 
@@ -179,7 +181,7 @@
 	if (audio.dev != 0)
 		setNewAudioSettings();
 
-	audioSetInterpolation(config.interpolation ? true : false);
+	audioSetInterpolationType(config.interpolation);
 	audioSetVolRamp((config.specialFlags & NO_VOLRAMP_FLAG) ? false : true);
 	setAudioAmp(config.boostLevel, config.masterVol, config.specialFlags & BITDEPTH_32);
 	setMouseShape(config.mouseType);
@@ -827,6 +829,18 @@
 
 	radioButtons[tmpID].state = RADIOBUTTON_CHECKED;
 
+	// AUDIO INTERPOLATION
+	uncheckRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INTERPOLATION);
+
+	if (config.interpolation == INTERPOLATION_NONE)
+		tmpID = RB_CONFIG_AUDIO_INTRP_NONE;
+	else if (config.interpolation == INTERPOLATION_LINEAR)
+		tmpID = RB_CONFIG_AUDIO_INTRP_LINEAR;
+	else
+		tmpID = RB_CONFIG_AUDIO_INTRP_CUBIC;
+
+	radioButtons[tmpID].state = RADIOBUTTON_CHECKED;
+
 	// AUDIO FREQUENCY
 	uncheckRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_FREQ);
 	switch (config.audioFreq)
@@ -857,6 +871,7 @@
 
 	showRadioButtonGroup(RB_GROUP_CONFIG_SOUND_BUFF_SIZE);
 	showRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_BIT_DEPTH);
+	showRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INTERPOLATION);
 	showRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_FREQ);
 	showRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INPUT_FREQ);
 	showRadioButtonGroup(RB_GROUP_CONFIG_FREQ_TABLE);
@@ -864,10 +879,7 @@
 
 static void setConfigIOCheckButtonStates(void)
 {
-	checkBoxes[CB_CONF_INTERPOLATION].checked = config.interpolation;
 	checkBoxes[CB_CONF_VOL_RAMP].checked = (config.specialFlags & NO_VOLRAMP_FLAG) ? false : true;
-
-	showCheckBox(CB_CONF_INTERPOLATION);
 	showCheckBox(CB_CONF_VOL_RAMP);
 }
 
@@ -1110,9 +1122,9 @@
 			drawFramework(110,   0, 276, 87, FRAMEWORK_TYPE1);
 			drawFramework(110,  87, 276, 86, FRAMEWORK_TYPE1);
 
-			drawFramework(386,   0, 119,  73, FRAMEWORK_TYPE1);
-			drawFramework(386,  73, 119,  44, FRAMEWORK_TYPE1);
-			drawFramework(386, 117, 119,  56, FRAMEWORK_TYPE1);
+			drawFramework(386,   0, 119,  58, FRAMEWORK_TYPE1);
+			drawFramework(386,  58, 119,  44, FRAMEWORK_TYPE1);
+			drawFramework(386, 102, 119,  71, FRAMEWORK_TYPE1);
 
 			drawFramework(505,   0, 127,  73, FRAMEWORK_TYPE1);
 			drawFramework(505, 117, 127,  56, FRAMEWORK_TYPE1);
@@ -1149,13 +1161,15 @@
 			textOutShadow(406,  31, PAL_FORGRND, PAL_DSKTOP2, "Medium (default)");
 			textOutShadow(406,  45, PAL_FORGRND, PAL_DSKTOP2, "Large");
 
-			textOutShadow(390,  76, PAL_FORGRND, PAL_DSKTOP2, "Audio bit depth:");
-			textOutShadow(406,  90, PAL_FORGRND, PAL_DSKTOP2, "16-bit (default)");
-			textOutShadow(406, 104, PAL_FORGRND, PAL_DSKTOP2, "32-bit float");
+			textOutShadow(390,  61, PAL_FORGRND, PAL_DSKTOP2, "Audio bit depth:");
+			textOutShadow(406,  75, PAL_FORGRND, PAL_DSKTOP2, "16-bit (default)");
+			textOutShadow(406,  89, PAL_FORGRND, PAL_DSKTOP2, "32-bit float");
 
-			textOutShadow(390, 120, PAL_FORGRND, PAL_DSKTOP2, "Mixer settings:");
-			textOutShadow(406, 134, PAL_FORGRND, PAL_DSKTOP2, "Interpolation");
-			textOutShadow(406, 147, PAL_FORGRND, PAL_DSKTOP2, "Volume ramping");
+			textOutShadow(390, 105, PAL_FORGRND, PAL_DSKTOP2, "Interpolation:");
+			textOutShadow(406, 118, PAL_FORGRND, PAL_DSKTOP2, "None");
+			textOutShadow(406, 132, PAL_FORGRND, PAL_DSKTOP2, "Linear (FT2)");
+			textOutShadow(406, 146, PAL_FORGRND, PAL_DSKTOP2, "Cubic spline");
+			textOutShadow(406, 161, PAL_FORGRND, PAL_DSKTOP2, "Volume ramping");
 
 			textOutShadow(509,   3, PAL_FORGRND, PAL_DSKTOP2, "Mixing frequency:");
 			textOutShadow(525,  17, PAL_FORGRND, PAL_DSKTOP2, "44100Hz");
@@ -1398,10 +1412,10 @@
 	// CONFIG AUDIO
 	hideRadioButtonGroup(RB_GROUP_CONFIG_SOUND_BUFF_SIZE);
 	hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_BIT_DEPTH);
+	hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INTERPOLATION);
 	hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_FREQ);
 	hideRadioButtonGroup(RB_GROUP_CONFIG_AUDIO_INPUT_FREQ);
 	hideRadioButtonGroup(RB_GROUP_CONFIG_FREQ_TABLE);
-	hideCheckBox(CB_CONF_INTERPOLATION);
 	hideCheckBox(CB_CONF_VOL_RAMP);
 	hidePushButton(PB_CONFIG_AUDIO_RESCAN);
 	hidePushButton(PB_CONFIG_AUDIO_OUTPUT_DOWN);
@@ -1591,6 +1605,27 @@
 	setNewAudioSettings();
 }
 
+void rbConfigAudioIntrpNone(void)
+{
+	config.interpolation = INTERPOLATION_NONE;
+	audioSetInterpolationType(config.interpolation);
+	checkRadioButton(RB_CONFIG_AUDIO_INTRP_NONE);
+}
+
+void rbConfigAudioIntrpLinear(void)
+{
+	config.interpolation = INTERPOLATION_LINEAR;
+	audioSetInterpolationType(config.interpolation);
+	checkRadioButton(RB_CONFIG_AUDIO_INTRP_LINEAR);
+}
+
+void rbConfigAudioIntrpCubic(void)
+{
+	config.interpolation = INTERPOLATION_CUBIC;
+	audioSetInterpolationType(config.interpolation);
+	checkRadioButton(RB_CONFIG_AUDIO_INTRP_CUBIC);
+}
+
 void rbConfigAudio44kHz(void)
 {
 	config.audioFreq = 44100;
@@ -1651,13 +1686,6 @@
 {
 	config.cfg_AutoSave ^= 1;
 }
-
-void cbConfigInterpolation(void)
-{
-	config.interpolation ^= 1;
-	audioSetInterpolation(config.interpolation);
-}
-
 void cbConfigVolRamp(void)
 {
 	config.specialFlags ^= NO_VOLRAMP_FLAG;
--- a/src/ft2_config.h
+++ b/src/ft2_config.h
@@ -18,6 +18,10 @@
 	CONFIG_HIDE_ERRORS = 0,
 	CONFIG_SHOW_ERRORS = 1,
 
+	INTERPOLATION_NONE = 0,
+	INTERPOLATION_CUBIC = 1,
+	INTERPOLATION_LINEAR = 2,
+
 	MOUSE_IDLE_SHAPE_NICE = 0,
 	MOUSE_IDLE_SHAPE_UGLY = 1,
 	MOUSE_IDLE_SHAPE_AWFUL = 2,
@@ -205,6 +209,9 @@
 void rbConfigSbs2048(void);
 void rbConfigAudio16bit(void);
 void rbConfigAudio24bit(void);
+void rbConfigAudioIntrpNone(void);
+void rbConfigAudioIntrpLinear(void);
+void rbConfigAudioIntrpCubic(void);
 void rbConfigAudio44kHz(void);
 void rbConfigAudio48kHz(void);
 void rbConfigAudio96kHz(void);
@@ -238,7 +245,6 @@
 void rbWinSize3x(void);
 void rbWinSize4x(void);
 void cbToggleAutoSaveConfig(void);
-void cbConfigInterpolation(void);
 void cbConfigVolRamp(void);
 void cbConfigPattStretch(void);
 void cbConfigHexCount(void);
--- a/src/ft2_header.h
+++ b/src/ft2_header.h
@@ -12,7 +12,7 @@
 #endif
 #include "ft2_replayer.h"
 
-#define PROG_VER_STR "1.34"
+#define PROG_VER_STR "1.35"
 
 // do NOT change these! It will only mess things up...
 
--- a/src/ft2_main.c
+++ b/src/ft2_main.c
@@ -33,7 +33,6 @@
 #include "ft2_events.h"
 #include "ft2_bmp.h"
 #include "ft2_structs.h"
-#include "mixer/ft2_cubic.h"
 
 #ifdef HAS_MIDI
 static SDL_Thread *initMidiThread;
@@ -334,7 +333,6 @@
 	closeAudio();
 	closeReplayer();
 	closeVideo();
-	freeCubicTable();
 	freeSprites();
 	freeDiskOp();
 	clearCopyBuffer();
--- a/src/ft2_radiobuttons.c
+++ b/src/ft2_radiobuttons.c
@@ -75,14 +75,20 @@
 
 	// audio buffer size
 	//x,   y,   w,   group,                           funcOnUp
-	{ 390,  16,  46, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs512  },
-	{ 390,  30, 113, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs1024 },
-	{ 390,  44,  50, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs2048 },
+	{ 390, 16,  46, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs512  },
+	{ 390, 30, 113, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs1024 },
+	{ 390, 44,  50, RB_GROUP_CONFIG_SOUND_BUFF_SIZE, rbConfigSbs2048 },
 
 	// audio bit depth
 	//x,   y,   w,   group,                           funcOnUp
-	{ 390,  89, 107, RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, rbConfigAudio16bit },
-	{ 390, 103,  83, RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, rbConfigAudio24bit },
+	{ 390, 74, 107, RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, rbConfigAudio16bit },
+	{ 390, 88,  83, RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, rbConfigAudio24bit },
+
+	// audio interpolation
+	//x,   y,   w,   group,                              funcOnUp
+	{ 390, 117, 46, RB_GROUP_CONFIG_AUDIO_INTERPOLATION, rbConfigAudioIntrpNone },
+	{ 390, 131, 91, RB_GROUP_CONFIG_AUDIO_INTERPOLATION, rbConfigAudioIntrpLinear },
+	{ 390, 145, 86, RB_GROUP_CONFIG_AUDIO_INTERPOLATION, rbConfigAudioIntrpCubic },
 
 	// audio output frequency
 	//x,   y,   w,  group,                      funcOnUp
--- a/src/ft2_radiobuttons.h
+++ b/src/ft2_radiobuttons.h
@@ -50,10 +50,15 @@
 	RB_CONFIG_SBS_1024,
 	RB_CONFIG_SBS_2048,
 
-	// SOUND BIT DEPTH
+	// AUDIO BIT DEPTH
 	RB_CONFIG_AUDIO_16BIT,
 	RB_CONFIG_AUDIO_24BIT,
 
+	// AUDIO INTERPOLATION
+	RB_CONFIG_AUDIO_INTRP_NONE,
+	RB_CONFIG_AUDIO_INTRP_LINEAR,
+	RB_CONFIG_AUDIO_INTRP_CUBIC,
+
 	// AUDIO FREQUENCY
 	RB_CONFIG_AUDIO_44KHZ,
 	RB_CONFIG_AUDIO_48KHZ,
@@ -166,6 +171,7 @@
 	RB_GROUP_CONFIG_SELECT,
 	RB_GROUP_CONFIG_SOUND_BUFF_SIZE,
 	RB_GROUP_CONFIG_AUDIO_BIT_DEPTH,
+	RB_GROUP_CONFIG_AUDIO_INTERPOLATION,
 	RB_GROUP_CONFIG_AUDIO_FREQ,
 	RB_GROUP_CONFIG_AUDIO_INPUT_FREQ,
 	RB_GROUP_CONFIG_FREQ_TABLE,
--- a/src/ft2_replayer.c
+++ b/src/ft2_replayer.c
@@ -20,7 +20,7 @@
 #include "ft2_sample_loader.h"
 #include "ft2_tables.h"
 #include "ft2_structs.h"
-#include "mixer/ft2_cubic.h"
+#include "mixer/ft2_cubicspline.h"
 
 /* This is a mess, directly ported from the original FT2 code (with some modifications).
 ** You will experience a lot of headaches if you dig into it...
@@ -27,7 +27,7 @@
 ** If something looks to be off, it probably isn't!
 */
 
-// non-FT2 precalced stuff
+// non-FT2 precalced stuff (these are kinda big...)
 static double dPeriod2HzTab[65536], dLogTab[768], dHz2MixDeltaMul;
 static uint32_t revMixDeltaTab[65536];
 static bool bxxOverflow;
@@ -2710,6 +2710,8 @@
 		free(instr[131]);
 		instr[131] = NULL;
 	}
+
+	freeCubicTable();
 }
 
 bool setupReplayer(void)
--- a/src/ft2_replayer.h
+++ b/src/ft2_replayer.h
@@ -4,6 +4,9 @@
 #include <stdbool.h>
 #include "ft2_unicode.h"
 
+// cubic spline requires 2 extra samples in the future to be read
+#define NUM_FIXED_TAP_SAMPLES 2
+
 enum
 {
 	// voice flags
@@ -172,7 +175,7 @@
 	bool fixed;
 	int8_t fine, relTon, *pek, *origPek;
 	uint8_t vol, typ, pan;
-	int16_t fixedSmp1, fixedSmp2;
+	int16_t fixedSmp[NUM_FIXED_TAP_SAMPLES];
 	int32_t fixedPos, len, repS, repL;
 } sampleTyp;
 
--- a/src/ft2_sample_ed.c
+++ b/src/ft2_sample_ed.c
@@ -10,7 +10,7 @@
 #ifndef _WIN32
 #include <unistd.h> // chdir() in UNICHAR_CHDIR()
 #endif
-#if defined __APPLE__ || defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
+#if defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
 #include <emmintrin.h>
 #endif
 #include "ft2_header.h"
@@ -54,50 +54,72 @@
 	return &instr[editor.curInstr]->samp[editor.curSmp];
 }
 
-// adds wrapped samples after loop/end (for branchless mixer interpolation)
+// modifies samples before index 0, and after loop/end (for branchless mixer interpolation (kinda))
 void fixSample(sampleTyp *s)
 {
-	uint8_t loopType;
-	int16_t *ptr16;
-	int32_t loopStart, loopLen, loopEnd, len;
-
 	assert(s != NULL);
-	if (s->origPek == NULL)
+	if (s->origPek == NULL || s->pek == NULL)
+	{
+		s->fixed = false;
+		s->fixedPos = 0;
 		return; // empty sample
+	}
 
-	assert(s->pek != NULL);
+	const bool sample16Bit = (s->typ & 16) ? true : false;
+	int16_t *ptr16 = (int16_t *)s->pek;
+	uint8_t loopType = s->typ & 3;
+	int32_t len = s->len;
+	int32_t loopStart = s->repS;
+	int32_t loopLen = s->repL;
+	int32_t loopEnd = s->repS + s->repL;
 
-	loopType = s->typ & 3;
-	if (loopType == 0)
+	if (sample16Bit)
 	{
-		len = s->len;
+		len >>= 1;
+		loopStart >>= 1;
+		loopLen >>= 1;
+		loopEnd >>= 1;
+	}
 
-		// no loop (don't mess with fixed, fixSpar of fixedPos)
+	if (len < 1)
+	{
+		s->fixed = false;
+		s->fixedPos = 0;
+		return; // empty sample
+	}
 
-		if (s->typ & 16)
-		{
-			if (len < 2)
-				return;
+	// disable loop if loopLen == 0 (FT2 does this)
+	if (loopType != 0 && loopLen == 0)
+	{
+		loopType = 0;
+		loopStart = loopLen = loopEnd = 0;
+	}
 
-			len >>= 1;
-			ptr16 = (int16_t *)s->pek;
+	/* The first and second tap (-1, 0) should be the same at sampling position #0
+	** (at sample trigger), until an eventual loop cycle, where the -1 tap has a
+	** special case in the mixer.
+	*/
+	if (sample16Bit)
+		ptr16[-1] = ptr16[0];
+	else
+		s->pek[-1] = s->pek[0];
 
-			// write new values
-			ptr16[-1] = 0;
-			ptr16[len+0] = 0;
-			ptr16[len+1] = 0;
+	if (loopType == 0)
+	{
+		// no loop
+		if (sample16Bit)
+		{
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+				ptr16[len+i] = ptr16[len-1];
 		}
 		else
 		{
-			if (len < 1)
-				return;
-
-			// write new values
-			s->pek[-1] = 0;
-			s->pek[len+0] = 0;
-			s->pek[len+1] = 0;
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+				s->pek[len+i] = s->pek[len-1];
 		}
 
+		s->fixedPos = 0;
+		s->fixed = false; // no fixed samples inside actual sample data
 		return;
 	}
 
@@ -104,165 +126,100 @@
 	if (s->fixed)
 		return; // already fixed
 
-	if (loopType == 1)
-	{
-		// forward loop
+	s->fixedPos = loopStart + loopLen;
 
-		if (s->typ & 16)
+	if (loopLen == 1) // too short for interpolation kernel size, fix in a different way
+	{
+		if (sample16Bit)
 		{
-			// 16-bit sample
-
-			if (s->repL < 2)
-				return;
-
-			loopStart = s->repS >> 1;
-			loopEnd = (s->repS + s->repL) >> 1;
-
-			ptr16 = (int16_t *)s->pek;
-
-			// store old fix position and old values
-			s->fixedPos = s->repS + s->repL;
-			s->fixedSmp1 = ptr16[loopEnd+0];
-			s->fixedSmp2 = ptr16[loopEnd+1];
-
-			// write new values
-			ptr16[loopEnd+0] = ptr16[loopStart+0];
-			if (loopStart == 0 && loopEnd > 0)
-				ptr16[-1] = ptr16[loopEnd-1];
-			else
-				ptr16[-1] = 0;
-
-			ptr16[loopEnd+1] = ptr16[loopStart+1];
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = ptr16[loopEnd+i];
+				ptr16[loopEnd+i] = ptr16[loopStart];
+			}
 		}
 		else
 		{
-			// 8-bit sample
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = s->pek[loopEnd+i];
+				s->pek[loopEnd+i] = s->pek[loopStart];
+			}
+		}
 
-			if (s->repL < 1)
-				return;
+		s->fixed = true;
+		return;
+	}
 
-			loopStart = s->repS;
-			loopEnd = s->repS + s->repL;
-
-			// store old fix position and old values
-			s->fixedPos = loopEnd;
-			s->fixedSmp1 = s->pek[loopEnd+0];
-			s->fixedSmp2 = s->pek[loopEnd+1];
-
-			// write new values
-			s->pek[loopEnd+0] = s->pek[loopStart+0];
-			if (loopStart == 0 && loopEnd > 0)
-				s->pek[-1] = s->pek[loopEnd-1];
-			else
-				s->pek[-1] = 0;
-
-			s->pek[loopEnd+1] = s->pek[loopStart+1];
+	if (loopType == 1)
+	{
+		// forward loop
+		if (sample16Bit)
+		{
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = ptr16[loopEnd+i];
+				ptr16[loopEnd+i] = ptr16[loopStart+i];
+			}
 		}
+		else
+		{
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = s->pek[loopEnd+i];
+				s->pek[loopEnd+i] = s->pek[loopStart+i];
+			}
+		}
 	}
 	else
 	{
 		// pingpong loop
-
-		if (s->typ & 16)
+		if (sample16Bit)
 		{
-			// 16-bit sample
-
-			if (s->repL < 2)
-				return;
-
-			loopStart = s->repS >> 1;
-			loopLen = s->repL >> 1;
-
-			loopEnd = loopStart + loopLen;
-			ptr16 = (int16_t *)s->pek;
-
-			// store old fix position and old values
-			s->fixedPos = s->repS + s->repL;
-			s->fixedSmp1 = ptr16[loopEnd+0];
-			s->fixedSmp2 = ptr16[loopEnd+1];
-
-			// write new values
-			ptr16[loopEnd+0] = ptr16[loopEnd-1];
-			if (loopStart == 0)
-				ptr16[-1] = ptr16[0];
-			else
-				ptr16[-1] = 0;
-
-			if (loopLen >= 2)
-				ptr16[loopEnd+1] = ptr16[loopEnd-2];
-			else
-				ptr16[loopEnd+1] = ptr16[loopStart+0];
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = ptr16[loopEnd+i];
+				ptr16[loopEnd+i] = ptr16[loopEnd-1-i];
+			}
 		}
 		else
 		{
-			// 8-bit sample
-
-			if (s->repL < 1)
-				return;
-
-			loopStart = s->repS;
-			loopLen = s->repL;
-
-			loopEnd = loopStart + loopLen;
-
-			// store old fix position and old values
-			s->fixedPos = loopEnd;
-			s->fixedSmp1 = s->pek[loopEnd+0];
-			s->fixedSmp2 = s->pek[loopEnd+1];
-
-			// write new values
-			s->pek[loopEnd+0] = s->pek[loopEnd-1];
-			if (loopStart == 0)
-				s->pek[-1] = s->pek[0];
-			else
-				s->pek[-1] = 0;
-
-			if (loopLen >= 2)
-				s->pek[loopEnd+1] = s->pek[loopEnd-2];
-			else
-				s->pek[loopEnd+1] = s->pek[loopStart+0];
+			for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			{
+				s->fixedSmp[i] = s->pek[loopEnd+i];
+				s->pek[loopEnd+i] = s->pek[loopEnd-1-i];
+			}
 		}
 	}
 
+	// -1 tap (right before loopStart) on forward/pingpong loops are handled in the mixer
+
 	s->fixed = true;
 }
 
-// reverts wrapped samples after loop/end (for branchless mixer interpolation)
+// restores interpolation tap samples after loop/end
 void restoreSample(sampleTyp *s)
 {
-	int16_t *ptr16;
-	int32_t fixedPos16;
-
 	assert(s != NULL);
-	if (s->origPek == NULL || s->len == 0 || (s->typ & 3) == 0 || !s->fixed)
-		return; // empty sample, no loop or not fixed
+	if (s->origPek == NULL || s->pek == NULL || !s->fixed)
+		return; // empty sample or not fixed (f.ex. no loop)
 
-	assert(s->pek != NULL);
-	s->fixed = false;
-
-	// clear pre-start bytes (this is safe, we have allocated room on the left for this)
-	s->pek[-4] = 0;
-	s->pek[-3] = 0;
-	s->pek[-2] = 0;
-	s->pek[-1] = 0;
-
 	if (s->typ & 16)
 	{
 		// 16-bit sample
-
-		ptr16 = (int16_t *)s->pek;
-		fixedPos16 = s->fixedPos >> 1;
-
-		ptr16[fixedPos16+0] = s->fixedSmp1;
-		ptr16[fixedPos16+1] = s->fixedSmp2;
+		int16_t *ptr16 = (int16_t *)s->pek + s->fixedPos;
+		for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			ptr16[i] = s->fixedSmp[i];
 	}
 	else
 	{
 		// 8-bit sample
-
-		s->pek[s->fixedPos+0] = (int8_t)s->fixedSmp1;
-		s->pek[s->fixedPos+1] = (int8_t)s->fixedSmp2;
+		int8_t *ptr8 = s->pek + s->fixedPos;
+		for (int32_t i = 0; i < NUM_FIXED_TAP_SAMPLES; i++)
+			ptr8[i] = (int8_t)s->fixedSmp[i];
 	}
+
+	s->fixed = false;
 }
 
 int16_t getSampleValue(int8_t *ptr, uint8_t typ, int32_t pos)
@@ -317,7 +274,7 @@
 	double dFTune = realFineTune * (1.0 / 16.0); // new range is -16..15
 
 	double dFreq = 8363.0 * exp2((s->relTon + dFTune) * (1.0 / 12.0));
-	return (int32_t)(dFreq + 0.5);
+	return (int32_t)(dFreq + 0.5); // rounded
 }
 
 int32_t getSampleRangeStart(void)
@@ -618,56 +575,39 @@
 	}
 }
 
-static int8_t getScaledSample(sampleTyp *s, int32_t index)
+static int8_t getScaledSample(sampleTyp *s, int32_t index) // for drawing sample waveform in zoomed-in mode
 {
-	int8_t *ptr8, sample;
+	int8_t sample;
 	int16_t *ptr16;
 	int32_t tmp32;
 
+	const int32_t loopEnd = s->repS + s->repL;
+
 	if (s->pek == NULL || index < 0 || index >= s->len)
-		return 0; // return center value if overflown (e.g. sample is shorter than screen width)
+		return 0;
 
 	if (s->typ & 16)
 	{
-		ptr16 = (int16_t *)s->pek;
-
 		assert(!(index & 1));
+		index >>= 1;
 
-		// restore fixed mixer interpolation sample(s)
-		if (s->fixed)
-		{
-			if (index == s->fixedPos)
-				tmp32 = s->fixedSmp1;
-			else if (index == s->fixedPos+2)
-				tmp32 = s->fixedSmp2;
-			else
-				tmp32 = ptr16[index >> 1];
-		}
+		ptr16 = (int16_t *)s->pek;
+
+		// don't read fixed mixer interpolation samples, read the prestine ones instead
+		if (index >= s->fixedPos && index < s->fixedPos+NUM_FIXED_TAP_SAMPLES && s->len > loopEnd && s->fixed)
+			tmp32 = s->fixedSmp[index-s->fixedPos];
 		else
-		{
-			tmp32 = ptr16[index >> 1];
-		}
+			tmp32 = ptr16[index];
 
 		sample = (int8_t)((tmp32 * SAMPLE_AREA_HEIGHT) >> 16);
 	}
 	else
 	{
-		ptr8 = s->pek;
-
-		// restore fixed mixer interpolation sample(s)
-		if (s->fixed)
-		{
-			if (index == s->fixedPos)
-				tmp32 = s->fixedSmp1;
-			else if (index == s->fixedPos+1)
-				tmp32 = s->fixedSmp2;
-			else
-				tmp32 = ptr8[index];
-		}
+		// don't read fixed mixer interpolation samples, read the prestine ones instead
+		if (index >= s->fixedPos && index < s->fixedPos+NUM_FIXED_TAP_SAMPLES && s->len > loopEnd && s->fixed)
+			tmp32 = s->fixedSmp[index-s->fixedPos];
 		else
-		{
-			tmp32 = ptr8[index];
-		}
+			tmp32 = s->pek[index];
 
 		sample = (int8_t)((tmp32 * SAMPLE_AREA_HEIGHT) >> 8);
 	}
@@ -762,7 +702,7 @@
 
 static void getMinMax16(const void *p, uint32_t scanLen, int16_t *min16, int16_t *max16)
 {
-#if defined __APPLE__ || defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
+#if defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
 	if (cpu.hasSSE2)
 	{
 		/* Taken with permission from the OpenMPT project (and slightly modified).
@@ -827,16 +767,14 @@
 	else
 #endif
 	{
-		// non-SSE version (really slow for big samples, especially when scrolling!)
-		int16_t smp16, minVal, maxVal, *ptr16;
+		// non-SSE version (really slow for big samples while zoomed out)
+		int16_t minVal =  32767;
+		int16_t maxVal = -32768;
 
-		minVal = 32767;
-		maxVal = -32768;
-
-		ptr16 = (int16_t *)p;
+		const int16_t *ptr16 = (const int16_t *)p;
 		for (uint32_t i = 0; i < scanLen; i++)
 		{
-			smp16 = ptr16[i];
+			const int16_t smp16 = ptr16[i];
 			if (smp16 < minVal) minVal = smp16;
 			if (smp16 > maxVal) maxVal = smp16;
 		}
@@ -848,7 +786,7 @@
 
 static void getMinMax8(const void *p, uint32_t scanLen, int8_t *min8, int8_t *max8)
 {
-#if defined __APPLE__ || defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
+#if defined _WIN32 || defined __amd64__ || (defined __i386__ && defined __SSE2__)
 	if (cpu.hasSSE2)
 	{
 		/* Taken with permission from the OpenMPT project (and slightly modified).
@@ -924,16 +862,14 @@
 	else
 #endif
 	{
-		// non-SSE version (really slow for big samples, especially when scrolling!)
-		int8_t smp8, minVal, maxVal, *ptr8;
+		// non-SSE version (really slow for big samples while zoomed out)
+		int8_t minVal =  127;
+		int8_t maxVal = -128;
 
-		minVal = 127;
-		maxVal = -128;
-
-		ptr8 = (int8_t *)p;
+		const int8_t *ptr8 = (const int8_t *)p;
 		for (uint32_t i = 0; i < scanLen; i++)
 		{
-			smp8 = ptr8[i];
+			const int8_t smp8 = ptr8[i];
 			if (smp8 < minVal) minVal = smp8;
 			if (smp8 > maxVal) maxVal = smp8;
 		}
@@ -943,12 +879,96 @@
 	}
 }
 
-static void getSampleDataPeak(sampleTyp *s, int32_t index, int32_t numBytes, int16_t *outMin, int16_t *outMax)
+// for scanning sample data peak where loopEnd+NUM_FIXED_TAP_SAMPLES is within scan range (fixed interpolation tap samples)
+static void getSpecialMinMax16(sampleTyp *s, int32_t index, int32_t scanEnd, int16_t *min16, int16_t *max16)
 {
+	int16_t minVal, maxVal, minVal2, maxVal2;
+
+	const int16_t *ptr16 = (const int16_t *)s->pek;
+
+	minVal =  32767;
+	maxVal = -32768;
+
+	// read peak samples before fixed samples
+	if (index < s->fixedPos)
+	{
+		getMinMax16(&ptr16[index], s->fixedPos-index, &minVal, &maxVal);
+		index += s->fixedPos-index;
+	}
+
+	// read fixed samples
+	int32_t tmpScanEnd = index+NUM_FIXED_TAP_SAMPLES;
+	if (tmpScanEnd > scanEnd)
+		tmpScanEnd = scanEnd;
+
+	const int16_t *smpReadPtr = s->fixedSmp;
+	for (; index < tmpScanEnd; index++)
+	{
+		const int16_t smp16 = *smpReadPtr++;
+		if (smp16 < minVal) minVal = smp16;
+		if (smp16 > maxVal) maxVal = smp16;
+	}
+
+	// read peak samples after fixed samples
+	if (index < scanEnd)
+	{
+		getMinMax16(&ptr16[index], scanEnd-index, &minVal2, &maxVal2);
+		if (minVal2 < minVal) minVal = minVal2;
+		if (maxVal2 > maxVal) maxVal = maxVal2;
+	}
+
+	*min16 = minVal;
+	*max16 = maxVal;
+}
+
+// for scanning sample data peak where loopEnd+NUM_FIXED_TAP_SAMPLES is within scan range (fixed interpolation tap samples)
+static void getSpecialMinMax8(sampleTyp *s, int32_t index, int32_t scanEnd, int8_t *min8, int8_t *max8)
+{
+	int8_t minVal, maxVal, minVal2, maxVal2;
+
+	const int8_t *ptr8 = (const int8_t *)s->pek;
+
+	minVal =  127;
+	maxVal = -128;
+
+	// read peak samples before fixed samples
+	if (index < s->fixedPos)
+	{
+		getMinMax8(&ptr8[index], s->fixedPos-index, &minVal, &maxVal);
+		index += s->fixedPos-index;
+	}
+
+	// read fixed samples
+	int32_t tmpScanEnd = index+NUM_FIXED_TAP_SAMPLES;
+	if (tmpScanEnd > scanEnd)
+		tmpScanEnd = scanEnd;
+
+	const int16_t *smpReadPtr = (const int16_t *)s->fixedSmp;
+	for (; index < tmpScanEnd; index++)
+	{
+		const int8_t smp8 = (int8_t)(*smpReadPtr++);
+		if (smp8 < minVal) minVal = smp8;
+		if (smp8 > maxVal) maxVal = smp8;
+	}
+
+	// read peak samples after fixed samples
+	if (index < scanEnd)
+	{
+		getMinMax8(&ptr8[index], scanEnd-index, &minVal2, &maxVal2);
+		if (minVal2 < minVal) minVal = minVal2;
+		if (maxVal2 > maxVal) maxVal = maxVal2;
+	}
+
+	*min8 = minVal;
+	*max8 = maxVal;
+}
+
+static void getSampleDataPeak(sampleTyp *s, int32_t index, int32_t numSamples, int16_t *outMin, int16_t *outMax)
+{
 	int8_t min8, max8;
 	int16_t min16, max16;
 
-	if (numBytes == 0 || s->pek == NULL || s->len <= 0)
+	if (numSamples == 0 || s->pek == NULL || s->len <= 0)
 	{
 		*outMin = SAMPLE_AREA_Y_CENTER;
 		*outMax = SAMPLE_AREA_Y_CENTER;
@@ -957,12 +977,45 @@
 
 	if (s->typ & 16)
 	{
-		// 16-bit sample
-
 		assert(!(index & 1));
+		index >>= 1;
+		numSamples >>= 1;
+	}
 
-		getMinMax16((int16_t *)&s->pek[index], numBytes >> 1, &min16, &max16);
+	if (s->fixed && s->len > s->repL+s->repS)
+	{
+		const int32_t scanEnd = index + numSamples;
 
+		/* If the scan area is including the fixed samples (for branchless mixer interpolation),
+		** do a special procedure to scan the original non-touched samples when needed.
+		*/
+		const bool insideRange = index >= s->fixedPos && index < s->fixedPos+NUM_FIXED_TAP_SAMPLES;
+		if (insideRange || (index < s->fixedPos && scanEnd >= s->fixedPos))
+		{
+			if (s->typ & 16)
+			{
+				// 16-bit sample
+				getSpecialMinMax16(s, index, scanEnd, &min16, &max16);
+				*outMin = SAMPLE_AREA_Y_CENTER - ((min16 * SAMPLE_AREA_HEIGHT) >> 16);
+				*outMax = SAMPLE_AREA_Y_CENTER - ((max16 * SAMPLE_AREA_HEIGHT) >> 16);
+			}
+			else
+			{
+				// 8-bit sample
+				getSpecialMinMax8(s, index, scanEnd, &min8, &max8);
+				*outMin = SAMPLE_AREA_Y_CENTER - ((min8 * SAMPLE_AREA_HEIGHT) >> 8);
+				*outMax = SAMPLE_AREA_Y_CENTER - ((max8 * SAMPLE_AREA_HEIGHT) >> 8);
+			}
+
+			return;
+		}
+	}
+
+	if (s->typ & 16)
+	{
+		// 16-bit sample
+		const int16_t *smpPtr16 = (int16_t *)s->pek;
+		getMinMax16(&smpPtr16[index], numSamples, &min16, &max16);
 		*outMin = SAMPLE_AREA_Y_CENTER - ((min16 * SAMPLE_AREA_HEIGHT) >> 16);
 		*outMax = SAMPLE_AREA_Y_CENTER - ((max16 * SAMPLE_AREA_HEIGHT) >> 16);
 	}
@@ -969,9 +1022,7 @@
 	else
 	{
 		// 8-bit sample
-
-		getMinMax8(&s->pek[index], numBytes, &min8, &max8);
-
+		getMinMax8(&s->pek[index], numSamples, &min8, &max8);
 		*outMin = SAMPLE_AREA_Y_CENTER - ((min8 * SAMPLE_AREA_HEIGHT) >> 8);
 		*outMax = SAMPLE_AREA_Y_CENTER - ((max8 * SAMPLE_AREA_HEIGHT) >> 8);
 	}
@@ -2675,7 +2726,7 @@
 	if (okBox(1, "System request", "Minimize sample?") != 1)
 		return;
 
-	bool hasLoop = s->typ & 3;
+	const bool hasLoop = s->typ & 3;
 	if (hasLoop && s->len > s->repS+s->repL && s->repL < s->len)
 	{
 		lockMixerCallback();
--- a/src/ft2_sample_ed.h
+++ b/src/ft2_sample_ed.h
@@ -8,8 +8,8 @@
 #define SAMPLE_AREA_Y_CENTER 250
 
 sampleTyp *getCurSample(void);
-void fixSample(sampleTyp *s); // adds wrapped sample after loop/end (for branchless mixer interpolation)
-void restoreSample(sampleTyp *s); // reverts wrapped sample after loop/end (for branchless mixer interpolation)
+void fixSample(sampleTyp *s); // modifies samples before index 0, and after loop/end (for branchless mixer interpolation)
+void restoreSample(sampleTyp *s); // restores samples after loop/end
 void clearSample(void);
 void clearCopyBuffer(void);
 int32_t getSampleMiddleCRate(sampleTyp *s);
--- a/src/ft2_sample_saver.c
+++ b/src/ft2_sample_saver.c
@@ -45,68 +45,53 @@
 	uint8_t vibratoType, vibratoSweep, vibratoDepth, vibratoRate;
 } mptExtraChunk_t;
 
-static const char rangedDataStr[] = "Ranged data from FT2";
+static const char *rangedDataStr = "Ranged data from FT2";
 
 // thread data
 static bool saveRangeFlag;
 static SDL_Thread *thread;
 
-// used to restore mixer interpolation fix .RAW/.IFF/.WAV files after save
-static bool fileRestoreSampleData(UNICHAR *filenameU, int32_t sampleDataOffset, sampleTyp *smp)
+// restores modified interpolation tap samples after loopEnd (for .RAW/.IFF/.WAV samples after save)
+static void fileRestoreFixedSampleData(UNICHAR *filenameU, uint32_t sampleDataOffset, sampleTyp *s)
 {
-	int8_t fixedSmp;
-	FILE *f;
+	if (!s->fixed)
+		return; // nothing to restore
 
-	if (!smp->fixed)
-		return false; // nothing to fix
-
-	f = UNICHAR_FOPEN(filenameU, "r+"); // open in read+update mode
+	FILE *f = UNICHAR_FOPEN(filenameU, "r+"); // open in read+update mode
 	if (f == NULL)
-		return false;
+		return;
 
-	if (smp->typ & 16)
-	{
-		// 16-bit sample
-		if (smp->fixedPos < smp->len)
-		{
-			fseek(f, sampleDataOffset + smp->fixedPos, SEEK_SET);
-			fwrite(&smp->fixedSmp1, sizeof (int16_t), 1, f);
-		}
+	const bool sample16Bit = (s->typ & 16) ? true : false;
 
-		if (smp->fixedPos+2 < smp->len)
-		{
-			fseek(f, sampleDataOffset + (smp->fixedPos + 2), SEEK_SET);
-			fwrite(&smp->fixedSmp2, sizeof (int16_t), 1, f);
-		}
+	uint32_t fixedPos = s->fixedPos;
+	if (sample16Bit)
+		fixedPos *= 2;
+
+	if (fixedPos >= (uint32_t)s->len)
+		return;
+
+	uint32_t bytesToWrite = NUM_FIXED_TAP_SAMPLES * (sample16Bit+1);
+	if (fixedPos+bytesToWrite > (uint32_t)s->len)
+		bytesToWrite = s->len - fixedPos;
+
+	fseek(f, sampleDataOffset+fixedPos, SEEK_SET);
+	if (sample16Bit)
+	{
+		fwrite(s->fixedSmp, sizeof (int16_t), bytesToWrite / 2, f);
 	}
 	else
 	{
-		// 8-bit sample
-		if (smp->fixedPos < smp->len)
+		for (uint32_t i = 0; i < bytesToWrite; i++)
 		{
-			fseek(f, sampleDataOffset + smp->fixedPos, SEEK_SET);
-
-			fixedSmp = (int8_t)smp->fixedSmp1;
+			int8_t fixedSmp = (int8_t)s->fixedSmp[i];
 			if (editor.sampleSaveMode == SMP_SAVE_MODE_WAV) // on 8-bit WAVs the sample data is unsigned
-				fixedSmp ^= 0x80;
+				fixedSmp ^= 0x80; // signed -> unsigned
 
 			fwrite(&fixedSmp, sizeof (int8_t), 1, f);
 		}
-
-		if (smp->fixedPos+1 < smp->len)
-		{
-			fseek(f, sampleDataOffset + (smp->fixedPos + 1), SEEK_SET);
-
-			fixedSmp = (int8_t)smp->fixedSmp2;
-			if (editor.sampleSaveMode == SMP_SAVE_MODE_WAV) // on 8-bit WAVs the sample data is unsigned
-				fixedSmp ^= 0x80;
-
-			fwrite(&fixedSmp, sizeof (int8_t), 1, f);
-		}
 	}
 
 	fclose(f);
-	return true;
 }
 
 static bool saveRawSample(UNICHAR *filenameU, bool saveRangedData)
@@ -113,19 +98,15 @@
 {
 	int8_t *samplePtr;
 	uint32_t sampleLen;
-	FILE *f;
-	sampleTyp *smp;
 
-	if (instr[editor.curInstr] == NULL ||
-		instr[editor.curInstr]->samp[editor.curSmp].pek == NULL ||
-		instr[editor.curInstr]->samp[editor.curSmp].len == 0)
+	instrTyp *ins = instr[editor.curInstr];
+	if (ins == NULL || ins->samp[editor.curSmp].pek == NULL || ins->samp[editor.curSmp].len == 0)
 	{
-		okBoxThreadSafe(0, "System message", "Error saving sample: The sample is empty!");
+		okBoxThreadSafe(0, "System message", "The sample is empty!");
 		return false;
 	}
 
-	smp = &instr[editor.curInstr]->samp[editor.curSmp];
-
+	sampleTyp *smp = &instr[editor.curInstr]->samp[editor.curSmp];
 	if (saveRangedData)
 	{
 		samplePtr = &smp->pek[getSampleRangeStart()];
@@ -137,7 +118,7 @@
 		samplePtr = smp->pek;
 	}
 
-	f = UNICHAR_FOPEN(filenameU, "wb");
+	FILE *f = UNICHAR_FOPEN(filenameU, "wb");
 	if (f == NULL)
 	{
 		okBoxThreadSafe(0, "System message", "General I/O error during saving! Is the file in use?");
@@ -153,8 +134,10 @@
 
 	fclose(f);
 
-	// restore mixer interpolation fix
-	fileRestoreSampleData(filenameU, 0, smp);
+	// restore modified interpolation tap samples after loopEnd
+	const bool loopEnabled = (smp->typ & 3) ? true : false;
+	if (loopEnabled && smp->len > smp->repS+smp->repL)
+		fileRestoreFixedSampleData(filenameU, 0, smp);
 
 	editor.diskOpReadDir = true; // force diskop re-read
 
@@ -196,21 +179,18 @@
 {
 	char *smpNamePtr;
 	int8_t *samplePtr;
-	uint32_t sampleLen, smpNameLen, chunkLen, tmp32, sampleDataPos;
-	FILE *f;
-	sampleTyp *smp;
+	uint32_t sampleLen, smpNameLen, chunkLen;
 
-	if (instr[editor.curInstr] == NULL ||
-		instr[editor.curInstr]->samp[editor.curSmp].pek == NULL ||
-		instr[editor.curInstr]->samp[editor.curSmp].len == 0)
+	instrTyp *ins = instr[editor.curInstr];
+	if (ins == NULL || ins->samp[editor.curSmp].pek == NULL || ins->samp[editor.curSmp].len == 0)
 	{
-		okBoxThreadSafe(0, "System message", "Error saving sample: The sample is empty!");
+		okBoxThreadSafe(0, "System message", "The sample is empty!");
 		return false;
 	}
 
-	smp = &instr[editor.curInstr]->samp[editor.curSmp];
+	sampleTyp *smp = &instr[editor.curInstr]->samp[editor.curSmp];
 
-	f = UNICHAR_FOPEN(filenameU, "wb");
+	FILE *f = UNICHAR_FOPEN(filenameU, "wb");
 	if (f == NULL)
 	{
 		okBoxThreadSafe(0, "System message", "General I/O error during saving! Is the file in use?");
@@ -249,7 +229,7 @@
 	iffWriteUint32(f, 0); // samplesPerHiCycle
 
 	// samplesPerSec
-	tmp32 = getSampleMiddleCRate(smp);
+	uint32_t tmp32 = getSampleMiddleCRate(smp);
 	if (tmp32 == 0 || tmp32 > 65535) tmp32 = 16726;
 	iffWriteUint16(f, (uint16_t)tmp32);
 
@@ -294,7 +274,7 @@
 	// "BODY" chunk
 	chunkLen = sampleLen;
 	iffWriteChunkHeader(f, "BODY", chunkLen);
-	sampleDataPos = ftell(f);
+	const uint32_t sampleDataPos = ftell(f);
 	iffWriteChunkData(f, samplePtr, chunkLen);
 
 	// go back and fill in "FORM" chunk size
@@ -304,8 +284,10 @@
 
 	fclose(f);
 
-	// restore interpolation sample fix (was used for audio mixer)
-	fileRestoreSampleData(filenameU, sampleDataPos, smp);
+	// restore modified interpolation tap samples after loopEnd
+	const bool loopEnabled = (smp->typ & 3) ? true : false;
+	if (loopEnabled && smp->len > smp->repS+smp->repL)
+		fileRestoreFixedSampleData(filenameU, sampleDataPos, smp);
 
 	editor.diskOpReadDir = true; // force diskop re-read
 
@@ -317,30 +299,21 @@
 {
 	char *smpNamePtr;
 	int8_t *samplePtr;
-	uint8_t sampleBitDepth;
-	uint32_t i, sampleLen, riffChunkSize, smpNameLen, tmpLen, progNameLen, sampleDataPos;
-	FILE *f;
-	sampleTyp *smp;
-	instrTyp *ins;
+	uint32_t i, sampleLen, riffChunkSize, smpNameLen, tmpLen;
 	wavHeader_t wavHeader;
 	samplerChunk_t samplerChunk;
 	mptExtraChunk_t mptExtraChunk;
 
-	ins = instr[editor.curInstr];
-	if (ins == NULL)
+	instrTyp *ins = instr[editor.curInstr];
+	if (ins == NULL || ins->samp[editor.curSmp].pek == NULL || ins->samp[editor.curSmp].len == 0)
 	{
-		okBoxThreadSafe(0, "System message", "Error saving sample: The sample is empty!");
+		okBoxThreadSafe(0, "System message", "The sample is empty!");
 		return false;
 	}
 
-	smp = &ins->samp[editor.curSmp];
-	if (smp->pek == NULL || smp->len == 0)
-	{
-		okBoxThreadSafe(0, "System message", "Error saving sample: The sample is empty!");
-		return false;
-	}
+	sampleTyp *smp = &ins->samp[editor.curSmp];
 
-	f = UNICHAR_FOPEN(filenameU, "wb");
+	FILE *f = UNICHAR_FOPEN(filenameU, "wb");
 	if (f == NULL)
 	{
 		okBoxThreadSafe(0, "System message", "General I/O error during saving! Is the file in use?");
@@ -358,7 +331,7 @@
 		samplePtr = smp->pek;
 	}
 
-	sampleBitDepth = (smp->typ & 16) ? 16 : 8;
+	const uint8_t sampleBitDepth = (smp->typ & 16) ? 16 : 8;
 
 	wavHeader.chunkID = 0x46464952; // "RIFF"
 	wavHeader.chunkSize = 0; // is filled later
@@ -378,7 +351,7 @@
 	fwrite(&wavHeader, sizeof (wavHeader_t), 1, f);
 
 	// write sample data
-	sampleDataPos = ftell(f);
+	const uint32_t sampleDataPos = ftell(f);
 	if (sampleBitDepth == 16)
 	{
 		fwrite((int16_t *)samplePtr, sizeof (int16_t), sampleLen / 2, f);
@@ -464,7 +437,7 @@
 		}
 	}
 
-	progNameLen = sizeof (PROG_NAME_STR) - 1;
+	const uint32_t progNameLen = sizeof (PROG_NAME_STR) - 1;
 
 	tmpLen = 4 + (4 + 4) + (progNameLen + 1 + ((progNameLen + 1) & 1));
 	if (smpNameLen > 0)
@@ -500,8 +473,10 @@
 
 	fclose(f);
 
-	// restore mixer interpolation fix
-	fileRestoreSampleData(filenameU, sampleDataPos, smp);
+	// restore modified interpolation tap samples after loopEnd
+	const bool loopEnabled = (smp->typ & 3) ? true : false;
+	if (loopEnabled && smp->len > smp->repS+smp->repL)
+		fileRestoreFixedSampleData(filenameU, sampleDataPos, smp);
 
 	editor.diskOpReadDir = true; // force diskop re-read
 
@@ -511,10 +486,6 @@
 
 static int32_t SDLCALL saveSampleThread(void *ptr)
 {
-	const UNICHAR *oldPathU;
-
-	(void)ptr;
-
 	if (editor.tmpFilenameU == NULL)
 	{
 		okBoxThreadSafe(0, "System message", "General I/O error during saving! Is the file in use?");
@@ -521,7 +492,7 @@
 		return false;
 	}
 
-	oldPathU = getDiskOpCurPath();
+	const UNICHAR *oldPathU = getDiskOpCurPath();
 
 	// in "save range mode", we must enter the sample directory
 	if (saveRangeFlag)
@@ -538,6 +509,7 @@
 	if (saveRangeFlag)
 		UNICHAR_CHDIR(oldPathU);
 
+	(void)ptr;
 	return true;
 }
 
--- a/src/helpdata/FT2.HLP
+++ b/src/helpdata/FT2.HLP
@@ -528,7 +528,7 @@
 END
 ;***************************************************************************
 ;***************************************************************************
-@LHow to use Fasttracker 2.0
+@LHow to use Fasttracker II
 >@X040@C002
 >All "not-too-trivial" functions are presented below (ordered in
 windows) with a short description.
@@ -782,11 +782,12 @@
 >
 >@X040@C001Interpolation:
 >@X060@C002
-The mixing routine interpolates the sample value between the
-sample points to remove unwanted noise in the sound. Real FT2 uses
-2-tap linear interpolation, while this clone uses 4-tap cubic spline 
-interpolation for improved high frequencies. Turning it off will make
-the audio sharper, but it will also be noisier.
+Selects what type of resampling interpolation to use.
+"None" uses no interpolation (nearest neighbor), which will result in
+aliasing (noise) in the sound. "Linear" is what real FT2 uses, which is a
+mediocre interpolation type. "Cubic spline" is the recommended setting
+for the best audio quality, although it may sometimes sound too filtered
+on low-quality samples (f.ex. Amiga MODs).
 
 >@X040@C001Volume ramping:
 >@X060@C002
@@ -894,20 +895,12 @@
 >@C002A: This is normal. This is a limitation in the nature of scaling.
 >@X020
 >@C001Q: I found a bug!
->@C002A: Please send a mail to olav.sorensen@live.no and try to explain it.
+>@C002A: Please send me a mail (found at 16-bits.org) and try to explain it.
 
 END
 ;***************************************************************************
 ;***************************************************************************
 @LKnown bugs
->@X010
->@C001Sample editor:
->@C002
->@X010- When a looped sample is zoomed out in the sample editor, you could see
->@X021unexpected sample data at the loop-end point. This is because of a kludge
-for the resampling interpolation to work faster in the audio mixer, and the
-original FT2 has the same problem. I have made it so that if you zoom in to
-see the individual sample points, it will look like normal.
 >@X010
 >@C001Mouse / keyboard:
 >
--- a/src/helpdata/ft2_help_data.h
+++ b/src/helpdata/ft2_help_data.h
@@ -3,9 +3,9 @@
 
 #include <stdint.h>
 
-#define HELP_DATA_LEN 27330
+#define HELP_DATA_LEN 26993
 
-const uint8_t helpData[27330] =
+const uint8_t helpData[26993] =
 {
 	0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
@@ -1146,1145 +1146,1117 @@
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x1C,0x40,0x4C,0x48,0x6F,0x77,0x20,0x74,0x6F,0x20,0x75,0x73,
+	0x1B,0x40,0x4C,0x48,0x6F,0x77,0x20,0x74,0x6F,0x20,0x75,0x73,
 	0x65,0x20,0x46,0x61,0x73,0x74,0x74,0x72,0x61,0x63,0x6B,0x65,
-	0x72,0x20,0x32,0x2E,0x30,0x0B,0x3E,0x40,0x58,0x30,0x34,0x30,
-	0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x41,0x6C,0x6C,0x20,0x22,
-	0x6E,0x6F,0x74,0x2D,0x74,0x6F,0x6F,0x2D,0x74,0x72,0x69,0x76,
-	0x69,0x61,0x6C,0x22,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,
-	0x6E,0x73,0x20,0x61,0x72,0x65,0x20,0x70,0x72,0x65,0x73,0x65,
-	0x6E,0x74,0x65,0x64,0x20,0x62,0x65,0x6C,0x6F,0x77,0x20,0x28,
-	0x6F,0x72,0x64,0x65,0x72,0x65,0x64,0x20,0x69,0x6E,0x22,0x77,
-	0x69,0x6E,0x64,0x6F,0x77,0x73,0x29,0x20,0x77,0x69,0x74,0x68,
-	0x20,0x61,0x20,0x73,0x68,0x6F,0x72,0x74,0x20,0x64,0x65,0x73,
-	0x63,0x72,0x69,0x70,0x74,0x69,0x6F,0x6E,0x2E,0x00,0x17,0x3E,
-	0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x61,
-	0x69,0x6E,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,0x3A,0x01,0x3E,
-	0x22,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x42,0x50,0x4D,0x20,0x28,0x42,0x65,0x61,0x74,0x73,0x20,0x70,
-	0x65,0x72,0x20,0x6D,0x69,0x6E,0x75,0x74,0x65,0x29,0x3A,0x0B,
-	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,
-	0x54,0x68,0x65,0x20,0x42,0x50,0x4D,0x20,0x73,0x65,0x74,0x74,
-	0x69,0x6E,0x67,0x20,0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,
-	0x68,0x6F,0x77,0x20,0x66,0x61,0x73,0x74,0x20,0x28,0x74,0x69,
-	0x63,0x6B,0x73,0x2F,0x73,0x65,0x63,0x6F,0x6E,0x64,0x29,0x20,
-	0x74,0x68,0x65,0x20,0x6D,0x75,0x73,0x69,0x63,0x20,0x70,0x6C,
-	0x61,0x79,0x65,0x72,0x1C,0x77,0x69,0x6C,0x6C,0x20,0x72,0x75,
-	0x6E,0x2E,0x20,0x31,0x32,0x35,0x20,0x42,0x50,0x4D,0x20,0x3C,
-	0x2D,0x3E,0x20,0x35,0x30,0x20,0x48,0x7A,0x2E,0x28,0x3E,0x4E,
-	0x75,0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,0x70,0x6C,0x61,
-	0x79,0x65,0x72,0x20,0x74,0x69,0x63,0x6B,0x73,0x2F,0x73,0x65,
-	0x63,0x6F,0x6E,0x64,0x20,0x3D,0x20,0x42,0x50,0x4D,0x2A,0x32,
-	0x2F,0x35,0x00,0x16,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
-	0x30,0x30,0x31,0x53,0x70,0x64,0x2C,0x20,0x53,0x70,0x65,0x65,
-	0x64,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x2C,0x53,0x70,0x65,0x65,0x64,0x20,0x3D,0x20,0x6E,
-	0x75,0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,0x70,0x6C,0x61,
-	0x79,0x65,0x72,0x20,0x74,0x69,0x63,0x6B,0x73,0x2F,0x70,0x61,
-	0x74,0x74,0x65,0x72,0x6E,0x20,0x6C,0x69,0x6E,0x65,0x2E,0x00,
-	0x0F,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x41,0x64,0x64,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
-	0x43,0x30,0x30,0x32,0x3E,0x22,0x41,0x64,0x64,0x22,0x20,0x69,
-	0x73,0x20,0x74,0x68,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,
-	0x20,0x6F,0x66,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,
-	0x6C,0x69,0x6E,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,
-	0x72,0x73,0x6F,0x72,0x20,0x6A,0x75,0x6D,0x70,0x73,0x20,0x77,
-	0x68,0x65,0x6E,0x20,0x79,0x6F,0x75,0x0C,0x65,0x64,0x69,0x74,
-	0x20,0x61,0x20,0x6E,0x6F,0x74,0x65,0x2E,0x00,0x0F,0x3E,0x40,
-	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x74,0x6E,
+	0x72,0x20,0x49,0x49,0x0B,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
+	0x43,0x30,0x30,0x32,0x40,0x3E,0x41,0x6C,0x6C,0x20,0x22,0x6E,
+	0x6F,0x74,0x2D,0x74,0x6F,0x6F,0x2D,0x74,0x72,0x69,0x76,0x69,
+	0x61,0x6C,0x22,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,
+	0x73,0x20,0x61,0x72,0x65,0x20,0x70,0x72,0x65,0x73,0x65,0x6E,
+	0x74,0x65,0x64,0x20,0x62,0x65,0x6C,0x6F,0x77,0x20,0x28,0x6F,
+	0x72,0x64,0x65,0x72,0x65,0x64,0x20,0x69,0x6E,0x22,0x77,0x69,
+	0x6E,0x64,0x6F,0x77,0x73,0x29,0x20,0x77,0x69,0x74,0x68,0x20,
+	0x61,0x20,0x73,0x68,0x6F,0x72,0x74,0x20,0x64,0x65,0x73,0x63,
+	0x72,0x69,0x70,0x74,0x69,0x6F,0x6E,0x2E,0x00,0x17,0x3E,0x40,
+	0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x61,0x69,
+	0x6E,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,0x3A,0x01,0x3E,0x22,
+	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x42,
+	0x50,0x4D,0x20,0x28,0x42,0x65,0x61,0x74,0x73,0x20,0x70,0x65,
+	0x72,0x20,0x6D,0x69,0x6E,0x75,0x74,0x65,0x29,0x3A,0x0B,0x3E,
+	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x54,
+	0x68,0x65,0x20,0x42,0x50,0x4D,0x20,0x73,0x65,0x74,0x74,0x69,
+	0x6E,0x67,0x20,0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,0x68,
+	0x6F,0x77,0x20,0x66,0x61,0x73,0x74,0x20,0x28,0x74,0x69,0x63,
+	0x6B,0x73,0x2F,0x73,0x65,0x63,0x6F,0x6E,0x64,0x29,0x20,0x74,
+	0x68,0x65,0x20,0x6D,0x75,0x73,0x69,0x63,0x20,0x70,0x6C,0x61,
+	0x79,0x65,0x72,0x1C,0x77,0x69,0x6C,0x6C,0x20,0x72,0x75,0x6E,
+	0x2E,0x20,0x31,0x32,0x35,0x20,0x42,0x50,0x4D,0x20,0x3C,0x2D,
+	0x3E,0x20,0x35,0x30,0x20,0x48,0x7A,0x2E,0x28,0x3E,0x4E,0x75,
+	0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,0x70,0x6C,0x61,0x79,
+	0x65,0x72,0x20,0x74,0x69,0x63,0x6B,0x73,0x2F,0x73,0x65,0x63,
+	0x6F,0x6E,0x64,0x20,0x3D,0x20,0x42,0x50,0x4D,0x2A,0x32,0x2F,
+	0x35,0x00,0x16,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
+	0x30,0x31,0x53,0x70,0x64,0x2C,0x20,0x53,0x70,0x65,0x65,0x64,
 	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x1B,0x54,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,
-	0x74,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x6E,0x75,
-	0x6D,0x62,0x65,0x72,0x2E,0x00,0x0E,0x3E,0x40,0x58,0x30,0x34,
-	0x30,0x40,0x43,0x30,0x30,0x31,0x4C,0x6E,0x3A,0x0B,0x3E,0x40,
-	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,0x54,0x68,
-	0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,
-	0x6C,0x69,0x6E,0x65,0x73,0x20,0x66,0x6F,0x72,0x20,0x74,0x68,
-	0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x70,0x61,
-	0x74,0x74,0x65,0x72,0x6E,0x2E,0x20,0x55,0x70,0x20,0x74,0x6F,
-	0x20,0x24,0x31,0x30,0x30,0x20,0x6C,0x69,0x6E,0x65,0x73,0x2E,
-	0x20,0x4E,0x6F,0x74,0x65,0x40,0x74,0x68,0x61,0x74,0x20,0x46,
-	0x54,0x32,0x20,0x77,0x6F,0x6E,0x27,0x74,0x20,0x77,0x61,0x72,
-	0x6E,0x20,0x79,0x6F,0x75,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,
-	0x20,0x64,0x65,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,
-	0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,0x2E,0x20,0x54,0x68,
-	0x65,0x20,0x6E,0x6F,0x74,0x65,0x73,0x20,0x61,0x74,0x37,0x74,
-	0x68,0x65,0x20,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x20,0x6C,0x69,
-	0x6E,0x65,0x20,0x77,0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x74,
-	0x68,0x72,0x6F,0x77,0x6E,0x20,0x6F,0x75,0x74,0x20,0x74,0x6F,
-	0x20,0x74,0x68,0x65,0x20,0x62,0x69,0x6E,0x61,0x72,0x79,0x20,
-	0x73,0x70,0x61,0x63,0x65,0x2E,0x00,0x10,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x45,0x78,0x70,0x64,0x3A,
+	0x32,0x2C,0x53,0x70,0x65,0x65,0x64,0x20,0x3D,0x20,0x6E,0x75,
+	0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,0x70,0x6C,0x61,0x79,
+	0x65,0x72,0x20,0x74,0x69,0x63,0x6B,0x73,0x2F,0x70,0x61,0x74,
+	0x74,0x65,0x72,0x6E,0x20,0x6C,0x69,0x6E,0x65,0x2E,0x00,0x0F,
+	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x41,
+	0x64,0x64,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
+	0x30,0x30,0x32,0x3E,0x22,0x41,0x64,0x64,0x22,0x20,0x69,0x73,
+	0x20,0x74,0x68,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,
+	0x6F,0x66,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x6C,
+	0x69,0x6E,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,
+	0x73,0x6F,0x72,0x20,0x6A,0x75,0x6D,0x70,0x73,0x20,0x77,0x68,
+	0x65,0x6E,0x20,0x79,0x6F,0x75,0x0C,0x65,0x64,0x69,0x74,0x20,
+	0x61,0x20,0x6E,0x6F,0x74,0x65,0x2E,0x00,0x0F,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x74,0x6E,0x3A,
+	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
+	0x1B,0x54,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,
+	0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x6E,0x75,0x6D,
+	0x62,0x65,0x72,0x2E,0x00,0x0E,0x3E,0x40,0x58,0x30,0x34,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x4C,0x6E,0x3A,0x0B,0x3E,0x40,0x58,
+	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,0x54,0x68,0x65,
+	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x6F,0x66,0x20,0x6C,
+	0x69,0x6E,0x65,0x73,0x20,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,
+	0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x70,0x61,0x74,
+	0x74,0x65,0x72,0x6E,0x2E,0x20,0x55,0x70,0x20,0x74,0x6F,0x20,
+	0x24,0x31,0x30,0x30,0x20,0x6C,0x69,0x6E,0x65,0x73,0x2E,0x20,
+	0x4E,0x6F,0x74,0x65,0x40,0x74,0x68,0x61,0x74,0x20,0x46,0x54,
+	0x32,0x20,0x77,0x6F,0x6E,0x27,0x74,0x20,0x77,0x61,0x72,0x6E,
+	0x20,0x79,0x6F,0x75,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x20,
+	0x64,0x65,0x63,0x72,0x65,0x61,0x73,0x65,0x20,0x74,0x68,0x69,
+	0x73,0x20,0x76,0x61,0x6C,0x75,0x65,0x2E,0x20,0x54,0x68,0x65,
+	0x20,0x6E,0x6F,0x74,0x65,0x73,0x20,0x61,0x74,0x37,0x74,0x68,
+	0x65,0x20,0x62,0x6F,0x74,0x74,0x6F,0x6D,0x20,0x6C,0x69,0x6E,
+	0x65,0x20,0x77,0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x74,0x68,
+	0x72,0x6F,0x77,0x6E,0x20,0x6F,0x75,0x74,0x20,0x74,0x6F,0x20,
+	0x74,0x68,0x65,0x20,0x62,0x69,0x6E,0x61,0x72,0x79,0x20,0x73,
+	0x70,0x61,0x63,0x65,0x2E,0x00,0x10,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x45,0x78,0x70,0x64,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x44,
+	0x45,0x78,0x70,0x61,0x6E,0x64,0x20,0x70,0x61,0x74,0x74,0x65,
+	0x72,0x6E,0x2E,0x20,0x49,0x6E,0x73,0x65,0x72,0x74,0x73,0x20,
+	0x61,0x20,0x62,0x6C,0x61,0x6E,0x6B,0x20,0x6C,0x69,0x6E,0x65,
+	0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x65,0x61,0x63,0x68,0x20,
+	0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x6C,0x69,0x6E,0x65,
+	0x2E,0x20,0x55,0x73,0x65,0x66,0x75,0x6C,0x3C,0x69,0x66,0x20,
+	0x79,0x6F,0x75,0x20,0x77,0x61,0x6E,0x74,0x20,0x74,0x6F,0x20,
+	0x63,0x6F,0x6E,0x76,0x65,0x72,0x74,0x20,0x61,0x20,0x70,0x61,
+	0x74,0x74,0x65,0x72,0x6E,0x20,0x74,0x68,0x61,0x74,0x20,0x72,
+	0x75,0x6E,0x73,0x20,0x69,0x6E,0x20,0x73,0x70,0x65,0x65,0x64,
+	0x20,0x32,0x2A,0x78,0x20,0x74,0x6F,0x20,0x61,0x1D,0x70,0x61,
+	0x74,0x74,0x65,0x72,0x6E,0x20,0x74,0x68,0x61,0x74,0x20,0x72,
+	0x75,0x6E,0x73,0x20,0x69,0x6E,0x20,0x73,0x70,0x65,0x65,0x64,
+	0x20,0x78,0x2E,0x00,0x10,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
+	0x43,0x30,0x30,0x31,0x53,0x68,0x6E,0x6B,0x3A,0x0B,0x3E,0x40,
+	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x2E,0x53,0x68,
+	0x72,0x69,0x6E,0x6B,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,
+	0x2E,0x20,0x44,0x65,0x6C,0x65,0x74,0x65,0x73,0x20,0x61,0x6C,
+	0x6C,0x20,0x6F,0x64,0x64,0x20,0x70,0x61,0x74,0x74,0x65,0x72,
+	0x6E,0x20,0x6C,0x69,0x6E,0x65,0x73,0x2E,0x00,0x2A,0x3E,0x40,
+	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x68,0x65,
+	0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x2F,
+	0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x73,0x65,0x6C,0x65,0x63,
+	0x74,0x6F,0x72,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
+	0x43,0x30,0x30,0x32,0x3A,0x54,0x68,0x65,0x20,0x69,0x6E,0x73,
+	0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x74,0x68,0x61,0x74,
+	0x20,0x68,0x61,0x73,0x20,0x61,0x20,0x6D,0x61,0x72,0x6B,0x20,
+	0x6F,0x6E,0x20,0x69,0x74,0x27,0x73,0x20,0x6E,0x61,0x6D,0x65,
+	0x20,0x73,0x74,0x72,0x69,0x6E,0x67,0x2C,0x20,0x69,0x73,0x20,
+	0x74,0x68,0x65,0x17,0x64,0x65,0x73,0x74,0x69,0x6E,0x61,0x74,
+	0x69,0x6F,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
+	0x6E,0x74,0x2E,0x3D,0x3E,0x54,0x68,0x65,0x20,0x69,0x6E,0x73,
+	0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x74,0x68,0x61,0x74,
+	0x20,0x68,0x61,0x73,0x20,0x61,0x20,0x6D,0x61,0x72,0x6B,0x20,
+	0x6F,0x6E,0x20,0x69,0x74,0x27,0x73,0x20,0x6E,0x75,0x6D,0x62,
+	0x65,0x72,0x2C,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x73,
+	0x6F,0x75,0x72,0x63,0x65,0x0B,0x69,0x6E,0x73,0x74,0x72,0x75,
+	0x6D,0x65,0x6E,0x74,0x2E,0x1F,0x3E,0x54,0x68,0x65,0x20,0x73,
+	0x61,0x6D,0x65,0x20,0x67,0x6F,0x65,0x73,0x20,0x66,0x6F,0x72,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x73,
+	0x2E,0x42,0x3E,0x59,0x6F,0x75,0x20,0x63,0x68,0x61,0x6E,0x67,
+	0x65,0x20,0x74,0x68,0x65,0x20,0x6E,0x61,0x6D,0x65,0x20,0x6F,
+	0x6E,0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
+	0x65,0x6E,0x74,0x2F,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x62,
+	0x79,0x20,0x63,0x6C,0x69,0x63,0x6B,0x69,0x6E,0x67,0x20,0x74,
+	0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74,0x07,0x62,0x75,0x74,
+	0x74,0x6F,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x32,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,0x65,0x73,0x3A,
 	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
-	0x44,0x45,0x78,0x70,0x61,0x6E,0x64,0x20,0x70,0x61,0x74,0x74,
-	0x65,0x72,0x6E,0x2E,0x20,0x49,0x6E,0x73,0x65,0x72,0x74,0x73,
-	0x20,0x61,0x20,0x62,0x6C,0x61,0x6E,0x6B,0x20,0x6C,0x69,0x6E,
-	0x65,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x65,0x61,0x63,0x68,
-	0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x6C,0x69,0x6E,
-	0x65,0x2E,0x20,0x55,0x73,0x65,0x66,0x75,0x6C,0x3C,0x69,0x66,
-	0x20,0x79,0x6F,0x75,0x20,0x77,0x61,0x6E,0x74,0x20,0x74,0x6F,
-	0x20,0x63,0x6F,0x6E,0x76,0x65,0x72,0x74,0x20,0x61,0x20,0x70,
-	0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x74,0x68,0x61,0x74,0x20,
-	0x72,0x75,0x6E,0x73,0x20,0x69,0x6E,0x20,0x73,0x70,0x65,0x65,
-	0x64,0x20,0x32,0x2A,0x78,0x20,0x74,0x6F,0x20,0x61,0x1D,0x70,
-	0x61,0x74,0x74,0x65,0x72,0x6E,0x20,0x74,0x68,0x61,0x74,0x20,
-	0x72,0x75,0x6E,0x73,0x20,0x69,0x6E,0x20,0x73,0x70,0x65,0x65,
-	0x64,0x20,0x78,0x2E,0x00,0x10,0x3E,0x40,0x58,0x30,0x34,0x30,
-	0x40,0x43,0x30,0x30,0x31,0x53,0x68,0x6E,0x6B,0x3A,0x0B,0x3E,
-	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x2E,0x53,
-	0x68,0x72,0x69,0x6E,0x6B,0x20,0x70,0x61,0x74,0x74,0x65,0x72,
-	0x6E,0x2E,0x20,0x44,0x65,0x6C,0x65,0x74,0x65,0x73,0x20,0x61,
-	0x6C,0x6C,0x20,0x6F,0x64,0x64,0x20,0x70,0x61,0x74,0x74,0x65,
-	0x72,0x6E,0x20,0x6C,0x69,0x6E,0x65,0x73,0x2E,0x00,0x2A,0x3E,
-	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x68,
-	0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,
-	0x2F,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x73,0x65,0x6C,0x65,
-	0x63,0x74,0x6F,0x72,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
-	0x40,0x43,0x30,0x30,0x32,0x3A,0x54,0x68,0x65,0x20,0x69,0x6E,
-	0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x74,0x68,0x61,
-	0x74,0x20,0x68,0x61,0x73,0x20,0x61,0x20,0x6D,0x61,0x72,0x6B,
-	0x20,0x6F,0x6E,0x20,0x69,0x74,0x27,0x73,0x20,0x6E,0x61,0x6D,
-	0x65,0x20,0x73,0x74,0x72,0x69,0x6E,0x67,0x2C,0x20,0x69,0x73,
-	0x20,0x74,0x68,0x65,0x17,0x64,0x65,0x73,0x74,0x69,0x6E,0x61,
-	0x74,0x69,0x6F,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
-	0x65,0x6E,0x74,0x2E,0x3D,0x3E,0x54,0x68,0x65,0x20,0x69,0x6E,
-	0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x74,0x68,0x61,
-	0x74,0x20,0x68,0x61,0x73,0x20,0x61,0x20,0x6D,0x61,0x72,0x6B,
-	0x20,0x6F,0x6E,0x20,0x69,0x74,0x27,0x73,0x20,0x6E,0x75,0x6D,
-	0x62,0x65,0x72,0x2C,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,
-	0x73,0x6F,0x75,0x72,0x63,0x65,0x0B,0x69,0x6E,0x73,0x74,0x72,
-	0x75,0x6D,0x65,0x6E,0x74,0x2E,0x1F,0x3E,0x54,0x68,0x65,0x20,
-	0x73,0x61,0x6D,0x65,0x20,0x67,0x6F,0x65,0x73,0x20,0x66,0x6F,
-	0x72,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,
-	0x73,0x2E,0x42,0x3E,0x59,0x6F,0x75,0x20,0x63,0x68,0x61,0x6E,
-	0x67,0x65,0x20,0x74,0x68,0x65,0x20,0x6E,0x61,0x6D,0x65,0x20,
-	0x6F,0x6E,0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,
-	0x6D,0x65,0x6E,0x74,0x2F,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,
-	0x62,0x79,0x20,0x63,0x6C,0x69,0x63,0x6B,0x69,0x6E,0x67,0x20,
-	0x74,0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74,0x07,0x62,0x75,
-	0x74,0x74,0x6F,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x32,
-	0x30,0x40,0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,0x65,0x73,
-	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x22,0x3E,0x4C,0x65,0x66,0x74,0x20,0x62,0x75,0x74,0x74,
-	0x6F,0x6E,0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x63,0x68,0x61,
-	0x6E,0x6E,0x65,0x6C,0x20,0x6F,0x6E,0x2F,0x6F,0x66,0x66,0x2E,
-	0x35,0x3E,0x52,0x69,0x67,0x68,0x74,0x20,0x62,0x75,0x74,0x74,
-	0x6F,0x6E,0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x63,0x68,0x61,
-	0x6E,0x6E,0x65,0x6C,0x20,0x6D,0x75,0x6C,0x74,0x69,0x2D,0x72,
-	0x65,0x63,0x6F,0x72,0x64,0x2F,0x65,0x64,0x69,0x74,0x20,0x6F,
-	0x6E,0x2F,0x6F,0x66,0x66,0x2E,0x42,0x3E,0x4C,0x65,0x66,0x74,
-	0x2B,0x72,0x69,0x67,0x68,0x74,0x20,0x62,0x75,0x74,0x74,0x6F,
-	0x6E,0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x61,0x6C,0x6C,0x20,
-	0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x73,0x20,0x6F,0x66,0x66,
-	0x20,0x65,0x78,0x63,0x65,0x70,0x74,0x20,0x74,0x68,0x65,0x20,
-	0x73,0x65,0x6C,0x65,0x63,0x74,0x65,0x64,0x20,0x6F,0x6E,0x65,
-	0x2E,0x00,0x1C,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,
-	0x31,0x49,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,
-	0x45,0x64,0x69,0x74,0x6F,0x72,0x3A,0x01,0x3E,0x22,0x3E,0x40,
-	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x57,0x68,0x61,
-	0x74,0x20,0x69,0x73,0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,
-	0x72,0x75,0x6D,0x65,0x6E,0x74,0x3F,0x3A,0x0B,0x3E,0x40,0x58,
-	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1E,0x41,0x20,0x46,
-	0x61,0x73,0x74,0x74,0x72,0x61,0x63,0x6B,0x65,0x72,0x20,0x32,
-	0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,
-	0x69,0x73,0x3A,0x15,0x3E,0x20,0x20,0x20,0x31,0x20,0x56,0x6F,
-	0x6C,0x75,0x6D,0x65,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,
-	0x65,0x16,0x3E,0x20,0x20,0x20,0x31,0x20,0x50,0x61,0x6E,0x6E,
-	0x69,0x6E,0x67,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,
-	0x1D,0x3E,0x20,0x20,0x20,0x31,0x20,0x41,0x75,0x74,0x6F,0x2D,
-	0x76,0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x64,0x65,0x66,0x69,
-	0x6E,0x69,0x74,0x69,0x6F,0x6E,0x13,0x3E,0x20,0x20,0x20,0x31,
-	0x2E,0x2E,0x31,0x36,0x20,0x53,0x61,0x6D,0x70,0x6C,0x65,0x28,
-	0x73,0x29,0x1F,0x3E,0x20,0x20,0x20,0x31,0x20,0x4B,0x65,0x79,
-	0x62,0x6F,0x61,0x72,0x64,0x20,0x73,0x70,0x6C,0x69,0x74,0x20,
-	0x64,0x65,0x66,0x69,0x6E,0x69,0x74,0x69,0x6F,0x6E,0x15,0x3E,
-	0x20,0x20,0x20,0x31,0x20,0x4D,0x49,0x44,0x49,0x20,0x64,0x65,
-	0x66,0x69,0x6E,0x69,0x74,0x69,0x6F,0x6E,0x00,0x1B,0x3E,0x41,
-	0x20,0x46,0x61,0x73,0x74,0x74,0x72,0x61,0x63,0x6B,0x65,0x72,
-	0x20,0x32,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x69,0x73,
-	0x3A,0x29,0x3E,0x20,0x20,0x20,0x31,0x20,0x56,0x6F,0x6C,0x75,
-	0x6D,0x65,0x2F,0x50,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x2F,0x46,
-	0x69,0x6E,0x65,0x2D,0x74,0x75,0x6E,0x65,0x20,0x64,0x65,0x66,
-	0x69,0x6E,0x69,0x74,0x69,0x6F,0x6E,0x14,0x3E,0x20,0x20,0x20,
-	0x31,0x20,0x52,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x20,0x74,
-	0x6F,0x6E,0x65,0x2E,0x10,0x3E,0x20,0x20,0x20,0x31,0x20,0x57,
-	0x61,0x76,0x65,0x20,0x66,0x6F,0x72,0x6D,0x2E,0x00,0x1F,0x3E,
-	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x68,
-	0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x65,0x6E,0x76,
-	0x65,0x6C,0x6F,0x70,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
-	0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x41,0x6E,0x20,0x69,
-	0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x27,0x73,0x20,
-	0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x69,0x73,0x20,0x64,0x65,
-	0x66,0x69,0x6E,0x65,0x64,0x20,0x62,0x79,0x20,0x69,0x74,0x73,
-	0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x63,0x75,
-	0x72,0x76,0x65,0x2E,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x3E,
-	0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x68,
-	0x61,0x73,0x20,0x61,0x20,0x73,0x75,0x73,0x74,0x61,0x69,0x6E,
-	0x20,0x70,0x6F,0x69,0x6E,0x74,0x2C,0x20,0x74,0x68,0x65,0x20,
-	0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x77,0x69,0x6C,
-	0x6C,0x20,0x73,0x74,0x6F,0x70,0x20,0x61,0x74,0x20,0x74,0x68,
-	0x61,0x74,0x42,0x70,0x6F,0x69,0x6E,0x74,0x20,0x75,0x6E,0x74,
-	0x69,0x6C,0x20,0x61,0x20,0x6B,0x65,0x79,0x2D,0x6F,0x66,0x66,
-	0x20,0x6E,0x6F,0x74,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,
-	0x65,0x6E,0x20,0x70,0x6C,0x61,0x79,0x65,0x64,0x2E,0x20,0x57,
-	0x68,0x65,0x6E,0x20,0x61,0x20,0x6B,0x65,0x79,0x2D,0x6F,0x66,
-	0x66,0x20,0x6E,0x6F,0x74,0x65,0x20,0x69,0x73,0x1D,0x70,0x6C,
-	0x61,0x79,0x65,0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x22,0x66,
-	0x61,0x64,0x65,0x6F,0x75,0x74,0x22,0x20,0x62,0x65,0x67,0x69,
-	0x6E,0x73,0x2E,0x44,0x3E,0x4F,0x6E,0x65,0x20,0x70,0x69,0x78,
-	0x65,0x6C,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x65,0x6E,
-	0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,
-	0x77,0x20,0x63,0x6F,0x72,0x72,0x65,0x73,0x70,0x6F,0x6E,0x64,
-	0x73,0x20,0x74,0x6F,0x20,0x6F,0x6E,0x65,0x20,0x70,0x6C,0x61,
-	0x79,0x65,0x72,0x2D,0x74,0x69,0x63,0x6B,0x2E,0x20,0x49,0x66,
-	0x3C,0x74,0x68,0x65,0x20,0x42,0x50,0x4D,0x20,0x69,0x73,0x20,
-	0x31,0x32,0x35,0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,0x20,
-	0x63,0x6F,0x6E,0x73,0x75,0x6D,0x65,0x20,0x35,0x30,0x20,0x70,
-	0x69,0x78,0x65,0x6C,0x2F,0x73,0x65,0x63,0x6F,0x6E,0x64,0x2E,
-	0x20,0x54,0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x27,
-	0x73,0x1A,0x22,0x73,0x69,0x7A,0x65,0x22,0x20,0x69,0x73,0x20,
-	0x61,0x62,0x6F,0x75,0x74,0x20,0x36,0x20,0x73,0x65,0x63,0x6F,
-	0x6E,0x64,0x73,0x2E,0x3E,0x3E,0x49,0x66,0x20,0x79,0x6F,0x75,
-	0x20,0x70,0x72,0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x20,0x72,
-	0x69,0x67,0x68,0x74,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x62,
-	0x75,0x74,0x74,0x6F,0x6E,0x20,0x61,0x74,0x20,0x74,0x68,0x65,
-	0x20,0x70,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x20,0x62,
-	0x75,0x74,0x74,0x6F,0x6E,0x73,0x2C,0x3F,0x79,0x6F,0x75,0x27,
-	0x6C,0x6C,0x20,0x73,0x74,0x6F,0x72,0x65,0x20,0x74,0x68,0x65,
-	0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x65,0x6E,0x76,
-	0x65,0x6C,0x6F,0x70,0x65,0x20,0x69,0x6E,0x74,0x6F,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x70,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,
-	0x65,0x20,0x63,0x65,0x6C,0x6C,0x2E,0x20,0x54,0x68,0x65,0x30,
-	0x70,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,0x61,
-	0x72,0x65,0x20,0x73,0x74,0x6F,0x72,0x65,0x64,0x20,0x69,0x6E,
-	0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,
-	0x72,0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x2E,
-	0x43,0x3E,0x50,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x20,
-	0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x31,0x20,0x69,0x73,0x20,
-	0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x20,
-	0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x2E,0x20,0x54,0x68,
-	0x69,0x73,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x74,0x68,0x61,
-	0x74,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x42,0x6C,0x6F,0x61,
-	0x64,0x20,0x61,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x2C,0x20,
-	0x69,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x67,0x65,0x74,0x20,
-	0x61,0x6C,0x6C,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,
-	0x20,0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,0x6E,
-	0x20,0x66,0x72,0x6F,0x6D,0x20,0x70,0x72,0x65,0x64,0x65,0x66,
-	0x69,0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x31,
-	0x2C,0x20,0x69,0x6E,0x63,0x6C,0x75,0x64,0x69,0x6E,0x67,0x20,
-	0x74,0x68,0x65,0x20,0x76,0x69,0x62,0x72,0x61,0x74,0x6F,0x2E,
-	0x42,0x3E,0x4E,0x6F,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,
-	0x69,0x66,0x20,0x79,0x6F,0x75,0x20,0x74,0x75,0x72,0x6E,0x20,
-	0x74,0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x2D,0x65,
-	0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x6F,0x66,0x66,0x2C,
-	0x20,0x79,0x6F,0x75,0x20,0x64,0x6F,0x6E,0x27,0x74,0x20,0x74,
-	0x75,0x72,0x6E,0x20,0x74,0x68,0x65,0x0C,0x76,0x69,0x62,0x72,
-	0x61,0x74,0x6F,0x20,0x6F,0x66,0x66,0x2E,0x00,0x20,0x3E,0x40,
+	0x22,0x3E,0x4C,0x65,0x66,0x74,0x20,0x62,0x75,0x74,0x74,0x6F,
+	0x6E,0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x63,0x68,0x61,0x6E,
+	0x6E,0x65,0x6C,0x20,0x6F,0x6E,0x2F,0x6F,0x66,0x66,0x2E,0x35,
+	0x3E,0x52,0x69,0x67,0x68,0x74,0x20,0x62,0x75,0x74,0x74,0x6F,
+	0x6E,0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x63,0x68,0x61,0x6E,
+	0x6E,0x65,0x6C,0x20,0x6D,0x75,0x6C,0x74,0x69,0x2D,0x72,0x65,
+	0x63,0x6F,0x72,0x64,0x2F,0x65,0x64,0x69,0x74,0x20,0x6F,0x6E,
+	0x2F,0x6F,0x66,0x66,0x2E,0x42,0x3E,0x4C,0x65,0x66,0x74,0x2B,
+	0x72,0x69,0x67,0x68,0x74,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,
+	0x3A,0x20,0x54,0x75,0x72,0x6E,0x20,0x61,0x6C,0x6C,0x20,0x63,
+	0x68,0x61,0x6E,0x6E,0x65,0x6C,0x73,0x20,0x6F,0x66,0x66,0x20,
+	0x65,0x78,0x63,0x65,0x70,0x74,0x20,0x74,0x68,0x65,0x20,0x73,
+	0x65,0x6C,0x65,0x63,0x74,0x65,0x64,0x20,0x6F,0x6E,0x65,0x2E,
+	0x00,0x1C,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x49,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x45,
+	0x64,0x69,0x74,0x6F,0x72,0x3A,0x01,0x3E,0x22,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x57,0x68,0x61,0x74,
+	0x20,0x69,0x73,0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,
+	0x75,0x6D,0x65,0x6E,0x74,0x3F,0x3A,0x0B,0x3E,0x40,0x58,0x30,
+	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1E,0x41,0x20,0x46,0x61,
+	0x73,0x74,0x74,0x72,0x61,0x63,0x6B,0x65,0x72,0x20,0x32,0x20,
+	0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x69,
+	0x73,0x3A,0x15,0x3E,0x20,0x20,0x20,0x31,0x20,0x56,0x6F,0x6C,
+	0x75,0x6D,0x65,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,
+	0x16,0x3E,0x20,0x20,0x20,0x31,0x20,0x50,0x61,0x6E,0x6E,0x69,
+	0x6E,0x67,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x1D,
+	0x3E,0x20,0x20,0x20,0x31,0x20,0x41,0x75,0x74,0x6F,0x2D,0x76,
+	0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x64,0x65,0x66,0x69,0x6E,
+	0x69,0x74,0x69,0x6F,0x6E,0x13,0x3E,0x20,0x20,0x20,0x31,0x2E,
+	0x2E,0x31,0x36,0x20,0x53,0x61,0x6D,0x70,0x6C,0x65,0x28,0x73,
+	0x29,0x1F,0x3E,0x20,0x20,0x20,0x31,0x20,0x4B,0x65,0x79,0x62,
+	0x6F,0x61,0x72,0x64,0x20,0x73,0x70,0x6C,0x69,0x74,0x20,0x64,
+	0x65,0x66,0x69,0x6E,0x69,0x74,0x69,0x6F,0x6E,0x15,0x3E,0x20,
+	0x20,0x20,0x31,0x20,0x4D,0x49,0x44,0x49,0x20,0x64,0x65,0x66,
+	0x69,0x6E,0x69,0x74,0x69,0x6F,0x6E,0x00,0x1B,0x3E,0x41,0x20,
+	0x46,0x61,0x73,0x74,0x74,0x72,0x61,0x63,0x6B,0x65,0x72,0x20,
+	0x32,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x69,0x73,0x3A,
+	0x29,0x3E,0x20,0x20,0x20,0x31,0x20,0x56,0x6F,0x6C,0x75,0x6D,
+	0x65,0x2F,0x50,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x2F,0x46,0x69,
+	0x6E,0x65,0x2D,0x74,0x75,0x6E,0x65,0x20,0x64,0x65,0x66,0x69,
+	0x6E,0x69,0x74,0x69,0x6F,0x6E,0x14,0x3E,0x20,0x20,0x20,0x31,
+	0x20,0x52,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x20,0x74,0x6F,
+	0x6E,0x65,0x2E,0x10,0x3E,0x20,0x20,0x20,0x31,0x20,0x57,0x61,
+	0x76,0x65,0x20,0x66,0x6F,0x72,0x6D,0x2E,0x00,0x1F,0x3E,0x40,
 	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x68,0x65,
-	0x20,0x70,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x65,0x6E,0x76,
-	0x65,0x6C,0x6F,0x70,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
-	0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x53,0x61,0x6D,0x65,
-	0x20,0x61,0x73,0x20,0x61,0x62,0x6F,0x76,0x65,0x2C,0x20,0x65,
-	0x78,0x63,0x65,0x70,0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x62,0x72,
-	0x61,0x74,0x6F,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,
-	0x6F,0x6E,0x6E,0x65,0x63,0x74,0x65,0x64,0x20,0x74,0x6F,0x15,
-	0x74,0x68,0x65,0x20,0x70,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x20,
-	0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x2E,0x00,0x10,0x3E,
-	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x75,
-	0x6E,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x3F,0x3E,0x54,0x68,0x65,0x20,0x66,0x69,0x6E,
-	0x65,0x2D,0x74,0x75,0x6E,0x65,0x20,0x72,0x65,0x73,0x6F,0x6C,
-	0x75,0x74,0x69,0x6F,0x6E,0x20,0x68,0x61,0x73,0x20,0x62,0x65,
-	0x65,0x6E,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x66,
-	0x72,0x6F,0x6D,0x20,0x61,0x20,0x73,0x69,0x67,0x6E,0x65,0x64,
-	0x20,0x6E,0x69,0x62,0x62,0x6C,0x65,0x27,0x28,0x2D,0x38,0x2E,
-	0x2E,0x2B,0x37,0x29,0x20,0x74,0x6F,0x20,0x61,0x20,0x73,0x69,
-	0x67,0x6E,0x65,0x64,0x20,0x62,0x79,0x74,0x65,0x20,0x28,0x2D,
-	0x31,0x32,0x38,0x2E,0x2E,0x2B,0x31,0x32,0x37,0x29,0x2E,0x00,
-	0x13,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x46,0x61,0x64,0x65,0x6F,0x75,0x74,0x3A,0x0B,0x3E,0x40,0x58,
-	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1B,0x3E,0x54,0x68,
-	0x69,0x73,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x66,0x61,
-	0x64,0x65,0x6F,0x75,0x74,0x20,0x73,0x70,0x65,0x65,0x64,0x2E,
-	0x00,0x19,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,
-	0x31,0x56,0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x73,0x77,0x65,
-	0x65,0x70,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x3E,0x3E,0x54,0x68,0x69,0x73,0x20,0x69,0x73,
-	0x20,0x74,0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20,0x28,0x69,
-	0x6E,0x20,0x70,0x6C,0x61,0x79,0x65,0x72,0x20,0x74,0x69,0x63,
-	0x6B,0x73,0x29,0x20,0x74,0x68,0x61,0x74,0x20,0x77,0x69,0x6C,
-	0x6C,0x20,0x62,0x79,0x70,0x61,0x73,0x73,0x20,0x75,0x6E,0x74,
-	0x69,0x6C,0x20,0x74,0x68,0x65,0x2D,0x61,0x75,0x74,0x6F,0x2D,
-	0x76,0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x77,0x69,0x6C,0x6C,
-	0x20,0x72,0x65,0x61,0x63,0x68,0x20,0x69,0x74,0x27,0x73,0x20,
-	0x66,0x69,0x6E,0x61,0x6C,0x20,0x61,0x6D,0x70,0x6C,0x69,0x74,
-	0x75,0x64,0x65,0x2E,0x00,0x1E,0x3E,0x40,0x58,0x30,0x34,0x30,
-	0x40,0x43,0x30,0x30,0x31,0x54,0x68,0x65,0x20,0x70,0x69,0x61,
-	0x6E,0x6F,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x3A,
-	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
-	0x3F,0x3E,0x54,0x68,0x65,0x20,0x70,0x69,0x61,0x6E,0x6F,0x20,
-	0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x20,0x64,0x65,0x66,
-	0x69,0x6E,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x6B,0x65,0x79,
-	0x20,0x73,0x70,0x6C,0x69,0x74,0x20,0x66,0x6F,0x72,0x20,0x61,
-	0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,
-	0x2E,0x20,0x54,0x6F,0x3F,0x63,0x68,0x61,0x6E,0x67,0x65,0x20,
-	0x74,0x68,0x65,0x20,0x6B,0x65,0x79,0x20,0x73,0x70,0x6C,0x69,
-	0x74,0x2C,0x20,0x63,0x68,0x6F,0x6F,0x73,0x65,0x20,0x61,0x20,
-	0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x77,0x69,0x74,0x68,0x69,
-	0x6E,0x20,0x74,0x68,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,
-	0x6D,0x65,0x6E,0x74,0x20,0x61,0x6E,0x64,0x1C,0x74,0x68,0x65,
-	0x6E,0x20,0x22,0x64,0x72,0x61,0x77,0x22,0x20,0x6F,0x6E,0x20,
-	0x74,0x68,0x65,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,
-	0x2E,0x42,0x3E,0x54,0x68,0x65,0x20,0x6E,0x6F,0x74,0x65,0x73,
-	0x20,0x70,0x6C,0x61,0x79,0x65,0x64,0x20,0x77,0x69,0x74,0x68,
-	0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,
-	0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,
-	0x61,0x72,0x65,0x20,0x69,0x6E,0x64,0x69,0x63,0x61,0x74,0x65,
-	0x64,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x09,0x6B,0x65,0x79,
-	0x62,0x6F,0x61,0x72,0x64,0x2E,0x00,0x1A,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x49,0x6D,0x70,0x6F,0x72,
-	0x74,0x61,0x6E,0x74,0x20,0x6E,0x6F,0x74,0x65,0x3A,0x0B,0x3E,
-	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,
-	0x54,0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x2C,0x20,
-	0x70,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x2C,0x20,0x74,0x75,0x6E,
-	0x65,0x20,0x61,0x6E,0x64,0x20,0x72,0x65,0x6C,0x61,0x74,0x69,
-	0x76,0x65,0x20,0x74,0x6F,0x6E,0x65,0x20,0x69,0x73,0x20,0x64,
-	0x65,0x66,0x69,0x6E,0x65,0x64,0x20,0x66,0x6F,0x72,0x20,0x45,
-	0x41,0x43,0x48,0x41,0x53,0x41,0x4D,0x50,0x4C,0x45,0x20,0x69,
-	0x6E,0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
-	0x65,0x6E,0x74,0x2E,0x20,0x41,0x6C,0x6C,0x20,0x6F,0x74,0x68,
-	0x65,0x72,0x20,0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,
-	0x6F,0x6E,0x20,0x69,0x73,0x20,0x64,0x65,0x66,0x69,0x6E,0x65,
-	0x64,0x20,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x12,0x65,0x6E,
-	0x74,0x69,0x72,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
-	0x65,0x6E,0x74,0x2E,0x00,0x31,0x40,0x58,0x30,0x32,0x30,0x40,
-	0x43,0x30,0x30,0x31,0x49,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
-	0x6E,0x74,0x20,0x45,0x64,0x69,0x74,0x6F,0x72,0x20,0x45,0x78,
-	0x74,0x65,0x6E,0x73,0x69,0x6F,0x6E,0x3A,0x20,0x28,0x49,0x2E,
-	0x45,0x2E,0x45,0x78,0x74,0x2E,0x29,0x01,0x3E,0x10,0x3E,0x40,
-	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x49,0x44,
-	0x49,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x28,0x3E,0x27,0x70,0x2E,0x27,0x20,0x73,0x74,0x61,
-	0x6E,0x64,0x73,0x20,0x66,0x6F,0x72,0x20,0x22,0x70,0x72,0x6F,
-	0x67,0x72,0x61,0x6D,0x22,0x20,0x28,0x69,0x6E,0x73,0x74,0x72,
-	0x75,0x6D,0x65,0x6E,0x74,0x29,0x2E,0x40,0x3E,0x53,0x65,0x76,
-	0x65,0x72,0x61,0x6C,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
-	0x65,0x6E,0x74,0x73,0x20,0x63,0x61,0x6E,0x20,0x68,0x61,0x76,
-	0x65,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x74,
-	0x72,0x61,0x6E,0x73,0x6D,0x69,0x74,0x20,0x63,0x68,0x61,0x6E,
-	0x6E,0x65,0x6C,0x20,0x62,0x75,0x74,0x20,0x77,0x69,0x74,0x68,
-	0x33,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,
-	0x72,0x6F,0x67,0x72,0x61,0x6D,0x73,0x2E,0x20,0x46,0x54,0x32,
-	0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x73,0x20,0x74,0x68,0x65,
-	0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x73,0x20,0x6F,0x6E,
-	0x20,0x74,0x68,0x65,0x43,0x4D,0x49,0x44,0x49,0x2D,0x63,0x68,
-	0x61,0x6E,0x6E,0x65,0x6C,0x73,0x20,0x69,0x6E,0x73,0x74,0x61,
-	0x6E,0x74,0x6C,0x79,0x20,0x64,0x75,0x72,0x69,0x6E,0x67,0x20,
-	0x70,0x6C,0x61,0x79,0x20,0x69,0x66,0x20,0x64,0x69,0x66,0x66,
-	0x65,0x72,0x65,0x6E,0x74,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,
-	0x6D,0x73,0x20,0x61,0x72,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,
-	0x3E,0x44,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,
-	0x72,0x6F,0x67,0x72,0x61,0x6D,0x73,0x20,0x63,0x61,0x6E,0x6E,
-	0x6F,0x74,0x20,0x62,0x65,0x20,0x70,0x6C,0x61,0x79,0x65,0x64,
-	0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,
-	0x20,0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x20,0x61,0x74,0x20,
-	0x74,0x68,0x65,0x11,0x73,0x61,0x6D,0x65,0x20,0x74,0x69,0x6D,
-	0x65,0x20,0x74,0x68,0x6F,0x75,0x67,0x68,0x2E,0x44,0x3E,0x49,
-	0x66,0x20,0x79,0x6F,0x75,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,
-	0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,0x2C,
-	0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
-	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x77,0x69,0x6C,0x6C,
-	0x20,0x62,0x65,0x20,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,0x74,
-	0x74,0x65,0x64,0x20,0x74,0x6F,0x1C,0x74,0x68,0x65,0x20,0x73,
-	0x79,0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,0x69,
-	0x6D,0x6D,0x65,0x64,0x69,0x61,0x74,0x65,0x6C,0x79,0x2E,0x3E,
-	0x3E,0x53,0x6F,0x6D,0x65,0x20,0x73,0x79,0x6E,0x74,0x68,0x65,
-	0x73,0x69,0x7A,0x65,0x72,0x73,0x20,0x74,0x72,0x61,0x6E,0x73,
+	0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x65,0x6E,0x76,0x65,
+	0x6C,0x6F,0x70,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
+	0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x41,0x6E,0x20,0x69,0x6E,
+	0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x27,0x73,0x20,0x76,
+	0x6F,0x6C,0x75,0x6D,0x65,0x20,0x69,0x73,0x20,0x64,0x65,0x66,
+	0x69,0x6E,0x65,0x64,0x20,0x62,0x79,0x20,0x69,0x74,0x73,0x20,
+	0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x63,0x75,0x72,
+	0x76,0x65,0x2E,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x3E,0x69,
+	0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x68,0x61,
+	0x73,0x20,0x61,0x20,0x73,0x75,0x73,0x74,0x61,0x69,0x6E,0x20,
+	0x70,0x6F,0x69,0x6E,0x74,0x2C,0x20,0x74,0x68,0x65,0x20,0x65,
+	0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x77,0x69,0x6C,0x6C,
+	0x20,0x73,0x74,0x6F,0x70,0x20,0x61,0x74,0x20,0x74,0x68,0x61,
+	0x74,0x42,0x70,0x6F,0x69,0x6E,0x74,0x20,0x75,0x6E,0x74,0x69,
+	0x6C,0x20,0x61,0x20,0x6B,0x65,0x79,0x2D,0x6F,0x66,0x66,0x20,
+	0x6E,0x6F,0x74,0x65,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,
+	0x6E,0x20,0x70,0x6C,0x61,0x79,0x65,0x64,0x2E,0x20,0x57,0x68,
+	0x65,0x6E,0x20,0x61,0x20,0x6B,0x65,0x79,0x2D,0x6F,0x66,0x66,
+	0x20,0x6E,0x6F,0x74,0x65,0x20,0x69,0x73,0x1D,0x70,0x6C,0x61,
+	0x79,0x65,0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x22,0x66,0x61,
+	0x64,0x65,0x6F,0x75,0x74,0x22,0x20,0x62,0x65,0x67,0x69,0x6E,
+	0x73,0x2E,0x44,0x3E,0x4F,0x6E,0x65,0x20,0x70,0x69,0x78,0x65,
+	0x6C,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x65,0x6E,0x76,
+	0x65,0x6C,0x6F,0x70,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,
+	0x20,0x63,0x6F,0x72,0x72,0x65,0x73,0x70,0x6F,0x6E,0x64,0x73,
+	0x20,0x74,0x6F,0x20,0x6F,0x6E,0x65,0x20,0x70,0x6C,0x61,0x79,
+	0x65,0x72,0x2D,0x74,0x69,0x63,0x6B,0x2E,0x20,0x49,0x66,0x3C,
+	0x74,0x68,0x65,0x20,0x42,0x50,0x4D,0x20,0x69,0x73,0x20,0x31,
+	0x32,0x35,0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,0x20,0x63,
+	0x6F,0x6E,0x73,0x75,0x6D,0x65,0x20,0x35,0x30,0x20,0x70,0x69,
+	0x78,0x65,0x6C,0x2F,0x73,0x65,0x63,0x6F,0x6E,0x64,0x2E,0x20,
+	0x54,0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x27,0x73,
+	0x1A,0x22,0x73,0x69,0x7A,0x65,0x22,0x20,0x69,0x73,0x20,0x61,
+	0x62,0x6F,0x75,0x74,0x20,0x36,0x20,0x73,0x65,0x63,0x6F,0x6E,
+	0x64,0x73,0x2E,0x3E,0x3E,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,
+	0x70,0x72,0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x69,
+	0x67,0x68,0x74,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x62,0x75,
+	0x74,0x74,0x6F,0x6E,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,
+	0x70,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x20,0x62,0x75,
+	0x74,0x74,0x6F,0x6E,0x73,0x2C,0x3F,0x79,0x6F,0x75,0x27,0x6C,
+	0x6C,0x20,0x73,0x74,0x6F,0x72,0x65,0x20,0x74,0x68,0x65,0x20,
+	0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x65,0x6E,0x76,0x65,
+	0x6C,0x6F,0x70,0x65,0x20,0x69,0x6E,0x74,0x6F,0x20,0x74,0x68,
+	0x61,0x74,0x20,0x70,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,
+	0x20,0x63,0x65,0x6C,0x6C,0x2E,0x20,0x54,0x68,0x65,0x30,0x70,
+	0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,0x61,0x72,
+	0x65,0x20,0x73,0x74,0x6F,0x72,0x65,0x64,0x20,0x69,0x6E,0x20,
+	0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,
+	0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x2E,0x43,
+	0x3E,0x50,0x72,0x65,0x64,0x65,0x66,0x69,0x6E,0x65,0x20,0x6E,
+	0x75,0x6D,0x62,0x65,0x72,0x20,0x31,0x20,0x69,0x73,0x20,0x74,
+	0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6C,0x74,0x20,0x65,
+	0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x2E,0x20,0x54,0x68,0x69,
+	0x73,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x74,0x68,0x61,0x74,
+	0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x42,0x6C,0x6F,0x61,0x64,
+	0x20,0x61,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x2C,0x20,0x69,
+	0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x67,0x65,0x74,0x20,0x61,
+	0x6C,0x6C,0x20,0x65,0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,
+	0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,0x6E,0x20,
+	0x66,0x72,0x6F,0x6D,0x20,0x70,0x72,0x65,0x64,0x65,0x66,0x69,
+	0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x31,0x2C,
+	0x20,0x69,0x6E,0x63,0x6C,0x75,0x64,0x69,0x6E,0x67,0x20,0x74,
+	0x68,0x65,0x20,0x76,0x69,0x62,0x72,0x61,0x74,0x6F,0x2E,0x42,
+	0x3E,0x4E,0x6F,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x69,
+	0x66,0x20,0x79,0x6F,0x75,0x20,0x74,0x75,0x72,0x6E,0x20,0x74,
+	0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x2D,0x65,0x6E,
+	0x76,0x65,0x6C,0x6F,0x70,0x65,0x20,0x6F,0x66,0x66,0x2C,0x20,
+	0x79,0x6F,0x75,0x20,0x64,0x6F,0x6E,0x27,0x74,0x20,0x74,0x75,
+	0x72,0x6E,0x20,0x74,0x68,0x65,0x0C,0x76,0x69,0x62,0x72,0x61,
+	0x74,0x6F,0x20,0x6F,0x66,0x66,0x2E,0x00,0x20,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x68,0x65,0x20,
+	0x70,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x65,0x6E,0x76,0x65,
+	0x6C,0x6F,0x70,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
+	0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x53,0x61,0x6D,0x65,0x20,
+	0x61,0x73,0x20,0x61,0x62,0x6F,0x76,0x65,0x2C,0x20,0x65,0x78,
+	0x63,0x65,0x70,0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,0x68,
+	0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x76,0x69,0x62,0x72,0x61,
+	0x74,0x6F,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,0x6F,
+	0x6E,0x6E,0x65,0x63,0x74,0x65,0x64,0x20,0x74,0x6F,0x15,0x74,
+	0x68,0x65,0x20,0x70,0x61,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x65,
+	0x6E,0x76,0x65,0x6C,0x6F,0x70,0x65,0x2E,0x00,0x10,0x3E,0x40,
+	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x54,0x75,0x6E,
+	0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
+	0x30,0x32,0x3F,0x3E,0x54,0x68,0x65,0x20,0x66,0x69,0x6E,0x65,
+	0x2D,0x74,0x75,0x6E,0x65,0x20,0x72,0x65,0x73,0x6F,0x6C,0x75,
+	0x74,0x69,0x6F,0x6E,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,
+	0x6E,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x66,0x72,
+	0x6F,0x6D,0x20,0x61,0x20,0x73,0x69,0x67,0x6E,0x65,0x64,0x20,
+	0x6E,0x69,0x62,0x62,0x6C,0x65,0x27,0x28,0x2D,0x38,0x2E,0x2E,
+	0x2B,0x37,0x29,0x20,0x74,0x6F,0x20,0x61,0x20,0x73,0x69,0x67,
+	0x6E,0x65,0x64,0x20,0x62,0x79,0x74,0x65,0x20,0x28,0x2D,0x31,
+	0x32,0x38,0x2E,0x2E,0x2B,0x31,0x32,0x37,0x29,0x2E,0x00,0x13,
+	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x46,
+	0x61,0x64,0x65,0x6F,0x75,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,
+	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1B,0x3E,0x54,0x68,0x69,
+	0x73,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x66,0x61,0x64,
+	0x65,0x6F,0x75,0x74,0x20,0x73,0x70,0x65,0x65,0x64,0x2E,0x00,
+	0x19,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x56,0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x73,0x77,0x65,0x65,
+	0x70,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
+	0x30,0x32,0x3E,0x3E,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,
+	0x74,0x68,0x65,0x20,0x74,0x69,0x6D,0x65,0x20,0x28,0x69,0x6E,
+	0x20,0x70,0x6C,0x61,0x79,0x65,0x72,0x20,0x74,0x69,0x63,0x6B,
+	0x73,0x29,0x20,0x74,0x68,0x61,0x74,0x20,0x77,0x69,0x6C,0x6C,
+	0x20,0x62,0x79,0x70,0x61,0x73,0x73,0x20,0x75,0x6E,0x74,0x69,
+	0x6C,0x20,0x74,0x68,0x65,0x2D,0x61,0x75,0x74,0x6F,0x2D,0x76,
+	0x69,0x62,0x72,0x61,0x74,0x6F,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x72,0x65,0x61,0x63,0x68,0x20,0x69,0x74,0x27,0x73,0x20,0x66,
+	0x69,0x6E,0x61,0x6C,0x20,0x61,0x6D,0x70,0x6C,0x69,0x74,0x75,
+	0x64,0x65,0x2E,0x00,0x1E,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
+	0x43,0x30,0x30,0x31,0x54,0x68,0x65,0x20,0x70,0x69,0x61,0x6E,
+	0x6F,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3F,
+	0x3E,0x54,0x68,0x65,0x20,0x70,0x69,0x61,0x6E,0x6F,0x20,0x6B,
+	0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x20,0x64,0x65,0x66,0x69,
+	0x6E,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x6B,0x65,0x79,0x20,
+	0x73,0x70,0x6C,0x69,0x74,0x20,0x66,0x6F,0x72,0x20,0x61,0x6E,
+	0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x2E,
+	0x20,0x54,0x6F,0x3F,0x63,0x68,0x61,0x6E,0x67,0x65,0x20,0x74,
+	0x68,0x65,0x20,0x6B,0x65,0x79,0x20,0x73,0x70,0x6C,0x69,0x74,
+	0x2C,0x20,0x63,0x68,0x6F,0x6F,0x73,0x65,0x20,0x61,0x20,0x73,
+	0x61,0x6D,0x70,0x6C,0x65,0x20,0x77,0x69,0x74,0x68,0x69,0x6E,
+	0x20,0x74,0x68,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,
+	0x65,0x6E,0x74,0x20,0x61,0x6E,0x64,0x1C,0x74,0x68,0x65,0x6E,
+	0x20,0x22,0x64,0x72,0x61,0x77,0x22,0x20,0x6F,0x6E,0x20,0x74,
+	0x68,0x65,0x20,0x6B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x2E,
+	0x42,0x3E,0x54,0x68,0x65,0x20,0x6E,0x6F,0x74,0x65,0x73,0x20,
+	0x70,0x6C,0x61,0x79,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,
+	0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,
+	0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x61,
+	0x72,0x65,0x20,0x69,0x6E,0x64,0x69,0x63,0x61,0x74,0x65,0x64,
+	0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x09,0x6B,0x65,0x79,0x62,
+	0x6F,0x61,0x72,0x64,0x2E,0x00,0x1A,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x49,0x6D,0x70,0x6F,0x72,0x74,
+	0x61,0x6E,0x74,0x20,0x6E,0x6F,0x74,0x65,0x3A,0x0B,0x3E,0x40,
+	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x54,
+	0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x2C,0x20,0x70,
+	0x61,0x6E,0x6E,0x69,0x6E,0x67,0x2C,0x20,0x74,0x75,0x6E,0x65,
+	0x20,0x61,0x6E,0x64,0x20,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,
+	0x65,0x20,0x74,0x6F,0x6E,0x65,0x20,0x69,0x73,0x20,0x64,0x65,
+	0x66,0x69,0x6E,0x65,0x64,0x20,0x66,0x6F,0x72,0x20,0x45,0x41,
+	0x43,0x48,0x41,0x53,0x41,0x4D,0x50,0x4C,0x45,0x20,0x69,0x6E,
+	0x20,0x61,0x6E,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
+	0x6E,0x74,0x2E,0x20,0x41,0x6C,0x6C,0x20,0x6F,0x74,0x68,0x65,
+	0x72,0x20,0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,
+	0x6E,0x20,0x69,0x73,0x20,0x64,0x65,0x66,0x69,0x6E,0x65,0x64,
+	0x20,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x12,0x65,0x6E,0x74,
+	0x69,0x72,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
+	0x6E,0x74,0x2E,0x00,0x31,0x40,0x58,0x30,0x32,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x49,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,
+	0x74,0x20,0x45,0x64,0x69,0x74,0x6F,0x72,0x20,0x45,0x78,0x74,
+	0x65,0x6E,0x73,0x69,0x6F,0x6E,0x3A,0x20,0x28,0x49,0x2E,0x45,
+	0x2E,0x45,0x78,0x74,0x2E,0x29,0x01,0x3E,0x10,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x49,0x44,0x49,
+	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
+	0x32,0x28,0x3E,0x27,0x70,0x2E,0x27,0x20,0x73,0x74,0x61,0x6E,
+	0x64,0x73,0x20,0x66,0x6F,0x72,0x20,0x22,0x70,0x72,0x6F,0x67,
+	0x72,0x61,0x6D,0x22,0x20,0x28,0x69,0x6E,0x73,0x74,0x72,0x75,
+	0x6D,0x65,0x6E,0x74,0x29,0x2E,0x40,0x3E,0x53,0x65,0x76,0x65,
+	0x72,0x61,0x6C,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
+	0x6E,0x74,0x73,0x20,0x63,0x61,0x6E,0x20,0x68,0x61,0x76,0x65,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x74,0x72,
+	0x61,0x6E,0x73,0x6D,0x69,0x74,0x20,0x63,0x68,0x61,0x6E,0x6E,
+	0x65,0x6C,0x20,0x62,0x75,0x74,0x20,0x77,0x69,0x74,0x68,0x33,
+	0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,0x72,
+	0x6F,0x67,0x72,0x61,0x6D,0x73,0x2E,0x20,0x46,0x54,0x32,0x20,
+	0x63,0x68,0x61,0x6E,0x67,0x65,0x73,0x20,0x74,0x68,0x65,0x20,
+	0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x73,0x20,0x6F,0x6E,0x20,
+	0x74,0x68,0x65,0x43,0x4D,0x49,0x44,0x49,0x2D,0x63,0x68,0x61,
+	0x6E,0x6E,0x65,0x6C,0x73,0x20,0x69,0x6E,0x73,0x74,0x61,0x6E,
+	0x74,0x6C,0x79,0x20,0x64,0x75,0x72,0x69,0x6E,0x67,0x20,0x70,
+	0x6C,0x61,0x79,0x20,0x69,0x66,0x20,0x64,0x69,0x66,0x66,0x65,
+	0x72,0x65,0x6E,0x74,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
+	0x73,0x20,0x61,0x72,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,0x3E,
+	0x44,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,0x72,
+	0x6F,0x67,0x72,0x61,0x6D,0x73,0x20,0x63,0x61,0x6E,0x6E,0x6F,
+	0x74,0x20,0x62,0x65,0x20,0x70,0x6C,0x61,0x79,0x65,0x64,0x20,
+	0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,
+	0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x20,0x61,0x74,0x20,0x74,
+	0x68,0x65,0x11,0x73,0x61,0x6D,0x65,0x20,0x74,0x69,0x6D,0x65,
+	0x20,0x74,0x68,0x6F,0x75,0x67,0x68,0x2E,0x44,0x3E,0x49,0x66,
+	0x20,0x79,0x6F,0x75,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x20,
+	0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,0x2C,0x20,
+	0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,
+	0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x62,0x65,0x20,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,0x74,0x74,
+	0x65,0x64,0x20,0x74,0x6F,0x1C,0x74,0x68,0x65,0x20,0x73,0x79,
+	0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,0x69,0x6D,
+	0x6D,0x65,0x64,0x69,0x61,0x74,0x65,0x6C,0x79,0x2E,0x3E,0x3E,
+	0x53,0x6F,0x6D,0x65,0x20,0x73,0x79,0x6E,0x74,0x68,0x65,0x73,
+	0x69,0x7A,0x65,0x72,0x73,0x20,0x74,0x72,0x61,0x6E,0x73,0x6D,
+	0x69,0x74,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,
+	0x68,0x61,0x6E,0x67,0x65,0x20,0x69,0x6E,0x66,0x6F,0x72,0x6D,
+	0x61,0x74,0x69,0x6F,0x6E,0x2E,0x20,0x49,0x66,0x20,0x74,0x68,
+	0x65,0x43,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x69,0x6E,
+	0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x69,0x6E,0x20,
+	0x46,0x54,0x32,0x20,0x69,0x73,0x20,0x61,0x20,0x4D,0x49,0x44,
+	0x49,0x2D,0x69,0x6E,0x73,0x74,0x72,0x2E,0x20,0x77,0x69,0x74,
+	0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x63,
+	0x68,0x61,0x6E,0x6E,0x65,0x6C,0x20,0x61,0x73,0x3F,0x74,0x68,
+	0x65,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x64,0x20,0x70,
+	0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x68,0x61,0x6E,0x67,
+	0x65,0x2C,0x20,0x69,0x74,0x27,0x73,0x20,0x4D,0x49,0x44,0x49,
+	0x2D,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x77,0x69,0x6C,
+	0x6C,0x20,0x62,0x65,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x64,
+	0x2E,0x40,0x3E,0x49,0x66,0x20,0x79,0x6F,0x75,0x72,0x20,0x73,
+	0x79,0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,0x64,
+	0x6F,0x65,0x73,0x6E,0x27,0x74,0x20,0x74,0x72,0x61,0x6E,0x73,
 	0x6D,0x69,0x74,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,
-	0x63,0x68,0x61,0x6E,0x67,0x65,0x20,0x69,0x6E,0x66,0x6F,0x72,
-	0x6D,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x20,0x49,0x66,0x20,0x74,
-	0x68,0x65,0x43,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x69,
-	0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,0x74,0x20,0x69,0x6E,
-	0x20,0x46,0x54,0x32,0x20,0x69,0x73,0x20,0x61,0x20,0x4D,0x49,
-	0x44,0x49,0x2D,0x69,0x6E,0x73,0x74,0x72,0x2E,0x20,0x77,0x69,
-	0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,
-	0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x20,0x61,0x73,0x3F,0x74,
-	0x68,0x65,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x64,0x20,
-	0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x68,0x61,0x6E,
-	0x67,0x65,0x2C,0x20,0x69,0x74,0x27,0x73,0x20,0x4D,0x49,0x44,
-	0x49,0x2D,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x77,0x69,
-	0x6C,0x6C,0x20,0x62,0x65,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,
-	0x64,0x2E,0x40,0x3E,0x49,0x66,0x20,0x79,0x6F,0x75,0x72,0x20,
-	0x73,0x79,0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,
-	0x64,0x6F,0x65,0x73,0x6E,0x27,0x74,0x20,0x74,0x72,0x61,0x6E,
-	0x73,0x6D,0x69,0x74,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
-	0x20,0x63,0x68,0x61,0x6E,0x67,0x65,0x2C,0x20,0x74,0x68,0x65,
-	0x72,0x65,0x27,0x73,0x20,0x6E,0x6F,0x3E,0x70,0x6F,0x69,0x6E,
-	0x74,0x20,0x69,0x6E,0x20,0x63,0x68,0x61,0x6E,0x67,0x69,0x6E,
-	0x67,0x20,0x69,0x74,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,
-	0x73,0x79,0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x2C,
-	0x20,0x64,0x6F,0x20,0x69,0x74,0x20,0x69,0x6E,0x20,0x46,0x54,
-	0x32,0x20,0x69,0x6E,0x73,0x74,0x65,0x61,0x64,0x2E,0x00,0x18,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x42,
-	0x65,0x6E,0x64,0x65,0x72,0x20,0x72,0x61,0x6E,0x67,0x65,0x3A,
+	0x63,0x68,0x61,0x6E,0x67,0x65,0x2C,0x20,0x74,0x68,0x65,0x72,
+	0x65,0x27,0x73,0x20,0x6E,0x6F,0x3E,0x70,0x6F,0x69,0x6E,0x74,
+	0x20,0x69,0x6E,0x20,0x63,0x68,0x61,0x6E,0x67,0x69,0x6E,0x67,
+	0x20,0x69,0x74,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x73,
+	0x79,0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x2C,0x20,
+	0x64,0x6F,0x20,0x69,0x74,0x20,0x69,0x6E,0x20,0x46,0x54,0x32,
+	0x20,0x69,0x6E,0x73,0x74,0x65,0x61,0x64,0x2E,0x00,0x18,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x42,0x65,
+	0x6E,0x64,0x65,0x72,0x20,0x72,0x61,0x6E,0x67,0x65,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x38,
+	0x3E,0x54,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,0x20,
+	0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,0x68,0x6F,0x77,0x20,
+	0x6D,0x61,0x6E,0x79,0x20,0x6E,0x6F,0x74,0x65,0x73,0x20,0x74,
+	0x68,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,0x6E,
+	0x74,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x37,0x73,0x79,0x6E,
+	0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,0x63,0x61,0x6E,
+	0x20,0x62,0x65,0x20,0x70,0x69,0x74,0x63,0x68,0x62,0x65,0x6E,
+	0x64,0x65,0x64,0x2E,0x20,0x46,0x54,0x32,0x20,0x75,0x73,0x65,
+	0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,
+	0x20,0x66,0x6F,0x72,0x37,0x74,0x72,0x61,0x6E,0x73,0x6D,0x69,
+	0x74,0x74,0x69,0x6E,0x67,0x20,0x74,0x68,0x65,0x20,0x70,0x6F,
+	0x72,0x74,0x61,0x6D,0x65,0x6E,0x74,0x6F,0x20,0x75,0x70,0x2F,
+	0x64,0x6F,0x77,0x6E,0x20,0x61,0x6E,0x64,0x20,0x74,0x6F,0x6E,
+	0x65,0x2D,0x70,0x6F,0x72,0x74,0x61,0x6D,0x65,0x6E,0x74,0x6F,
+	0x13,0x63,0x6F,0x6D,0x6D,0x61,0x6E,0x64,0x73,0x20,0x63,0x6F,
+	0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x2E,0x45,0x3E,0x54,0x68,
+	0x65,0x20,0x4D,0x49,0x44,0x49,0x2D,0x70,0x69,0x74,0x63,0x68,
+	0x62,0x65,0x6E,0x64,0x20,0x77,0x6F,0x72,0x6B,0x73,0x20,0x63,
+	0x6F,0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x6F,0x6E,0x6C,
+	0x79,0x20,0x77,0x69,0x74,0x68,0x20,0x6C,0x69,0x6E,0x65,0x61,
+	0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,
+	0x74,0x61,0x62,0x6C,0x65,0x2E,0x00,0x18,0x40,0x58,0x30,0x32,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x53,0x61,0x6D,0x70,0x6C,0x65,
+	0x20,0x45,0x64,0x69,0x74,0x6F,0x72,0x3A,0x01,0x3E,0x2C,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x6C,
+	0x61,0x79,0x20,0x28,0x57,0x61,0x76,0x65,0x20,0x66,0x6F,0x72,
+	0x6D,0x2C,0x20,0x72,0x61,0x6E,0x67,0x65,0x2C,0x20,0x64,0x69,
+	0x73,0x70,0x6C,0x61,0x79,0x29,0x3A,0x0B,0x3E,0x40,0x58,0x30,
+	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3C,0x3E,0x50,0x6C,0x61,
+	0x79,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,
+	0x6E,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x77,0x69,
+	0x74,0x68,0x20,0x74,0x6F,0x6E,0x65,0x20,0x64,0x69,0x73,0x70,
+	0x6C,0x61,0x79,0x20,0x61,0x62,0x6F,0x76,0x65,0x20,0x74,0x68,
+	0x65,0x20,0x22,0x73,0x74,0x6F,0x70,0x22,0x3D,0x62,0x75,0x74,
+	0x74,0x6F,0x6E,0x2E,0x20,0x4E,0x6F,0x74,0x65,0x20,0x74,0x68,
+	0x61,0x74,0x20,0x72,0x65,0x73,0x70,0x65,0x63,0x74,0x20,0x69,
+	0x73,0x20,0x74,0x61,0x6B,0x65,0x6E,0x20,0x74,0x6F,0x20,0x74,
+	0x68,0x65,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x75,0x6C,0x61,
+	0x72,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x27,0x73,0x0E,0x72,
+	0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x20,0x74,0x6F,0x6E,0x65,
+	0x2E,0x00,0x16,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
+	0x30,0x31,0x53,0x61,0x76,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,
+	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
+	0x32,0x3C,0x3E,0x53,0x74,0x6F,0x72,0x65,0x73,0x20,0x74,0x68,
+	0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x73,0x70,0x65,0x63,
+	0x69,0x66,0x69,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,
+	0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x73,0x61,0x6D,
+	0x70,0x6C,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,
+	0x79,0x2E,0x00,0x11,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x50,0x61,0x73,0x74,0x65,0x3A,0x0B,0x3E,0x40,
+	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x54,
+	0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x61,
+	0x74,0x61,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,
+	0x70,0x79,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x69,0x73,
+	0x20,0x73,0x74,0x6F,0x72,0x65,0x64,0x20,0x49,0x4E,0x54,0x4F,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,
+	0x65,0x64,0x06,0x72,0x61,0x6E,0x67,0x65,0x2E,0x00,0x10,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x72,
+	0x6F,0x70,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
+	0x30,0x30,0x32,0x3E,0x3E,0x43,0x75,0x74,0x73,0x20,0x65,0x76,
+	0x65,0x72,0x79,0x74,0x68,0x69,0x6E,0x67,0x20,0x62,0x75,0x74,
+	0x20,0x74,0x68,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x2E,0x20,
+	0x4E,0x6F,0x74,0x68,0x69,0x6E,0x67,0x20,0x69,0x73,0x20,0x63,
+	0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x63,0x6F,0x70,0x79,0x19,0x62,0x75,0x66,0x66,0x65,
+	0x72,0x20,0x62,0x79,0x20,0x74,0x68,0x69,0x73,0x20,0x6F,0x70,
+	0x65,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x00,0x12,0x3E,0x40,
+	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,0x6F,0x6C,
+	0x75,0x6D,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
+	0x43,0x30,0x30,0x32,0x17,0x3E,0x4F,0x70,0x65,0x72,0x61,0x74,
+	0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x72,0x61,
+	0x6E,0x67,0x65,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x34,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x58,0x2D,0x46,0x61,0x64,0x65,0x3A,
 	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
-	0x38,0x3E,0x54,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,0x65,
-	0x20,0x64,0x65,0x66,0x69,0x6E,0x65,0x73,0x20,0x68,0x6F,0x77,
-	0x20,0x6D,0x61,0x6E,0x79,0x20,0x6E,0x6F,0x74,0x65,0x73,0x20,
-	0x74,0x68,0x65,0x20,0x69,0x6E,0x73,0x74,0x72,0x75,0x6D,0x65,
-	0x6E,0x74,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x37,0x73,0x79,
-	0x6E,0x74,0x68,0x65,0x73,0x69,0x7A,0x65,0x72,0x20,0x63,0x61,
-	0x6E,0x20,0x62,0x65,0x20,0x70,0x69,0x74,0x63,0x68,0x62,0x65,
-	0x6E,0x64,0x65,0x64,0x2E,0x20,0x46,0x54,0x32,0x20,0x75,0x73,
-	0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6C,0x75,
-	0x65,0x20,0x66,0x6F,0x72,0x37,0x74,0x72,0x61,0x6E,0x73,0x6D,
-	0x69,0x74,0x74,0x69,0x6E,0x67,0x20,0x74,0x68,0x65,0x20,0x70,
-	0x6F,0x72,0x74,0x61,0x6D,0x65,0x6E,0x74,0x6F,0x20,0x75,0x70,
-	0x2F,0x64,0x6F,0x77,0x6E,0x20,0x61,0x6E,0x64,0x20,0x74,0x6F,
-	0x6E,0x65,0x2D,0x70,0x6F,0x72,0x74,0x61,0x6D,0x65,0x6E,0x74,
-	0x6F,0x13,0x63,0x6F,0x6D,0x6D,0x61,0x6E,0x64,0x73,0x20,0x63,
-	0x6F,0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x2E,0x45,0x3E,0x54,
-	0x68,0x65,0x20,0x4D,0x49,0x44,0x49,0x2D,0x70,0x69,0x74,0x63,
-	0x68,0x62,0x65,0x6E,0x64,0x20,0x77,0x6F,0x72,0x6B,0x73,0x20,
-	0x63,0x6F,0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x6F,0x6E,
-	0x6C,0x79,0x20,0x77,0x69,0x74,0x68,0x20,0x6C,0x69,0x6E,0x65,
-	0x61,0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,
-	0x20,0x74,0x61,0x62,0x6C,0x65,0x2E,0x00,0x18,0x40,0x58,0x30,
-	0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x53,0x61,0x6D,0x70,0x6C,
-	0x65,0x20,0x45,0x64,0x69,0x74,0x6F,0x72,0x3A,0x01,0x3E,0x2C,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,
-	0x6C,0x61,0x79,0x20,0x28,0x57,0x61,0x76,0x65,0x20,0x66,0x6F,
-	0x72,0x6D,0x2C,0x20,0x72,0x61,0x6E,0x67,0x65,0x2C,0x20,0x64,
-	0x69,0x73,0x70,0x6C,0x61,0x79,0x29,0x3A,0x0B,0x3E,0x40,0x58,
-	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3C,0x3E,0x50,0x6C,
-	0x61,0x79,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,
-	0x65,0x6E,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x77,
-	0x69,0x74,0x68,0x20,0x74,0x6F,0x6E,0x65,0x20,0x64,0x69,0x73,
-	0x70,0x6C,0x61,0x79,0x20,0x61,0x62,0x6F,0x76,0x65,0x20,0x74,
-	0x68,0x65,0x20,0x22,0x73,0x74,0x6F,0x70,0x22,0x3D,0x62,0x75,
-	0x74,0x74,0x6F,0x6E,0x2E,0x20,0x4E,0x6F,0x74,0x65,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x72,0x65,0x73,0x70,0x65,0x63,0x74,0x20,
-	0x69,0x73,0x20,0x74,0x61,0x6B,0x65,0x6E,0x20,0x74,0x6F,0x20,
-	0x74,0x68,0x65,0x20,0x70,0x61,0x72,0x74,0x69,0x63,0x75,0x6C,
-	0x61,0x72,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x27,0x73,0x0E,
-	0x72,0x65,0x6C,0x61,0x74,0x69,0x76,0x65,0x20,0x74,0x6F,0x6E,
-	0x65,0x2E,0x00,0x16,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
-	0x30,0x30,0x31,0x53,0x61,0x76,0x65,0x20,0x72,0x61,0x6E,0x67,
-	0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x3C,0x3E,0x53,0x74,0x6F,0x72,0x65,0x73,0x20,0x74,
-	0x68,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x73,0x70,0x65,
+	0x44,0x3E,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x20,
+	0x74,0x6F,0x6F,0x6C,0x20,0x66,0x6F,0x72,0x20,0x6D,0x61,0x6B,
+	0x69,0x6E,0x67,0x20,0x73,0x6D,0x6F,0x6F,0x74,0x68,0x20,0x6C,
+	0x6F,0x6F,0x70,0x73,0x2E,0x20,0x53,0x70,0x65,0x63,0x69,0x66,
+	0x79,0x20,0x61,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x74,0x68,
+	0x61,0x74,0x20,0x63,0x6F,0x76,0x65,0x72,0x73,0x41,0x74,0x68,
+	0x65,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x6C,0x6F,0x6F,0x70,
+	0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x20,0x4D,0x61,0x6B,0x65,
+	0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x74,
+	0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x61,0x73,0x20,0x6D,
+	0x75,0x63,0x68,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x61,0x66,
+	0x74,0x65,0x72,0x41,0x74,0x68,0x65,0x20,0x73,0x65,0x63,0x6F,
+	0x6E,0x64,0x20,0x6C,0x6F,0x6F,0x70,0x20,0x70,0x6F,0x69,0x6E,
+	0x74,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x61,0x6E,
+	0x67,0x65,0x20,0x62,0x79,0x70,0x61,0x73,0x73,0x65,0x73,0x20,
+	0x74,0x68,0x65,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x6C,0x6F,
+	0x6F,0x70,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x1F,0x50,0x72,
+	0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x20,0x58,0x2D,0x66,0x61,
+	0x64,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x2E,0x20,0x45,
+	0x6E,0x6A,0x6F,0x79,0x21,0x00,0x18,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x38,0x2D,0x42,0x69,0x74,0x2F,
+	0x31,0x36,0x2D,0x62,0x69,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,
+	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x42,0x3E,0x49,0x66,0x20,
+	0x79,0x6F,0x75,0x20,0x6C,0x6F,0x61,0x64,0x20,0x61,0x20,0x31,
+	0x36,0x2D,0x62,0x69,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,
+	0x20,0x77,0x69,0x74,0x68,0x6F,0x75,0x74,0x20,0x68,0x65,0x61,
+	0x64,0x65,0x72,0x2C,0x20,0x46,0x54,0x32,0x20,0x61,0x73,0x73,
+	0x75,0x6D,0x65,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,
+	0x27,0x73,0x3E,0x61,0x6E,0x20,0x38,0x2D,0x62,0x69,0x74,0x20,
+	0x73,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x20,0x57,0x68,0x65,0x6E,
+	0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6E,0x67,0x20,0x74,0x68,
+	0x65,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x62,0x75,0x74,
+	0x74,0x6F,0x6E,0x2C,0x20,0x64,0x6F,0x20,0x6E,0x6F,0x74,0x20,
+	0x70,0x72,0x65,0x73,0x73,0x23,0x22,0x63,0x6F,0x6E,0x76,0x65,
+	0x72,0x74,0x22,0x20,0x77,0x68,0x65,0x6E,0x20,0x74,0x68,0x65,
+	0x20,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x20,0x69,0x73,0x20,
+	0x6D,0x61,0x64,0x65,0x2E,0x00,0x14,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x69,0x6E,0x69,0x6D,0x69,
+	0x7A,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
+	0x30,0x30,0x32,0x44,0x3E,0x54,0x68,0x69,0x73,0x20,0x66,0x75,
+	0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x63,0x75,0x74,0x73,0x20,
+	0x74,0x68,0x65,0x20,0x70,0x61,0x72,0x74,0x20,0x6F,0x66,0x20,
+	0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x74,
+	0x68,0x61,0x74,0x20,0x69,0x73,0x20,0x62,0x65,0x79,0x6F,0x6E,
+	0x64,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x63,0x6F,0x6E,0x64,
+	0x0B,0x6C,0x6F,0x6F,0x70,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,
+	0x00,0x2D,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x53,0x61,0x6D,0x70,0x6C,0x65,0x20,0x45,0x64,0x69,0x74,0x6F,
+	0x72,0x20,0x45,0x78,0x74,0x65,0x6E,0x73,0x69,0x6F,0x6E,0x3A,
+	0x20,0x28,0x53,0x2E,0x45,0x2E,0x45,0x78,0x74,0x2E,0x29,0x01,
+	0x3E,0x27,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,
+	0x31,0x43,0x6F,0x70,0x79,0x2F,0x58,0x63,0x68,0x67,0x20,0x53,
+	0x61,0x6D,0x70,0x6C,0x65,0x2F,0x49,0x6E,0x73,0x74,0x72,0x75,
+	0x6D,0x65,0x6E,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
+	0x40,0x43,0x30,0x30,0x32,0x3C,0x3E,0x54,0x68,0x65,0x20,0x73,
+	0x6F,0x75,0x72,0x63,0x65,0x20,0x69,0x73,0x20,0x73,0x70,0x65,
 	0x63,0x69,0x66,0x69,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x73,0x61,
-	0x6D,0x70,0x6C,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,
-	0x72,0x79,0x2E,0x00,0x11,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
-	0x43,0x30,0x30,0x31,0x50,0x61,0x73,0x74,0x65,0x3A,0x0B,0x3E,
-	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,0x3E,
-	0x54,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,
-	0x61,0x74,0x61,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,
-	0x6F,0x70,0x79,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x69,
-	0x73,0x20,0x73,0x74,0x6F,0x72,0x65,0x64,0x20,0x49,0x4E,0x54,
-	0x4F,0x20,0x74,0x68,0x65,0x20,0x73,0x70,0x65,0x63,0x69,0x66,
-	0x69,0x65,0x64,0x06,0x72,0x61,0x6E,0x67,0x65,0x2E,0x00,0x10,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x43,
-	0x72,0x6F,0x70,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
-	0x43,0x30,0x30,0x32,0x3E,0x3E,0x43,0x75,0x74,0x73,0x20,0x65,
-	0x76,0x65,0x72,0x79,0x74,0x68,0x69,0x6E,0x67,0x20,0x62,0x75,
-	0x74,0x20,0x74,0x68,0x65,0x20,0x72,0x61,0x6E,0x67,0x65,0x2E,
-	0x20,0x4E,0x6F,0x74,0x68,0x69,0x6E,0x67,0x20,0x69,0x73,0x20,
-	0x63,0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,
-	0x68,0x65,0x20,0x63,0x6F,0x70,0x79,0x19,0x62,0x75,0x66,0x66,
-	0x65,0x72,0x20,0x62,0x79,0x20,0x74,0x68,0x69,0x73,0x20,0x6F,
-	0x70,0x65,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x00,0x12,0x3E,
-	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,0x6F,
-	0x6C,0x75,0x6D,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
-	0x40,0x43,0x30,0x30,0x32,0x17,0x3E,0x4F,0x70,0x65,0x72,0x61,
-	0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x72,
-	0x61,0x6E,0x67,0x65,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x34,
-	0x30,0x40,0x43,0x30,0x30,0x31,0x58,0x2D,0x46,0x61,0x64,0x65,
+	0x65,0x20,0x6C,0x69,0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,
+	0x72,0x69,0x6E,0x67,0x20,0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x20,
+	0x6F,0x66,0x20,0x74,0x68,0x65,0x40,0x69,0x6E,0x73,0x74,0x72,
+	0x2E,0x2F,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x6C,0x69,0x73,
+	0x74,0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x75,0x70,
+	0x70,0x65,0x72,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x63,0x6F,
+	0x72,0x6E,0x65,0x72,0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,
+	0x73,0x63,0x72,0x65,0x65,0x6E,0x2E,0x20,0x54,0x68,0x65,0x29,
+	0x64,0x65,0x73,0x74,0x69,0x6E,0x61,0x74,0x69,0x6F,0x6E,0x20,
+	0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,
+	0x6E,0x74,0x20,0x69,0x6E,0x73,0x74,0x72,0x2E,0x2F,0x73,0x61,
+	0x6D,0x70,0x6C,0x65,0x2E,0x00,0x15,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x42,0x61,0x63,0x6B,0x77,0x61,
+	0x72,0x64,0x73,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
+	0x43,0x30,0x30,0x32,0x40,0x3E,0x4F,0x70,0x65,0x72,0x61,0x74,
+	0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x72,0x61,
+	0x6E,0x67,0x65,0x20,0x28,0x6F,0x72,0x20,0x74,0x68,0x65,0x20,
+	0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,
+	0x20,0x69,0x66,0x20,0x6E,0x6F,0x20,0x72,0x61,0x6E,0x67,0x65,
+	0x20,0x69,0x73,0x20,0x73,0x65,0x74,0x29,0x2E,0x00,0x13,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,
+	0x6E,0x76,0x65,0x72,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
+	0x30,0x40,0x43,0x30,0x30,0x32,0x34,0x3E,0x43,0x6F,0x6E,0x76,
+	0x65,0x72,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x65,0x6E,0x74,
+	0x69,0x72,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x66,
+	0x72,0x6F,0x6D,0x2F,0x74,0x6F,0x20,0x73,0x69,0x67,0x6E,0x65,
+	0x64,0x2F,0x75,0x6E,0x73,0x69,0x67,0x6E,0x65,0x64,0x2E,0x00,
+	0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x43,0x6F,0x6E,0x76,0x65,0x72,0x74,0x20,0x57,0x3A,0x0B,0x3E,
+	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3F,0x53,
+	0x77,0x61,0x70,0x73,0x20,0x74,0x68,0x65,0x20,0x62,0x79,0x74,
+	0x65,0x20,0x6F,0x72,0x64,0x65,0x72,0x20,0x74,0x6F,0x2F,0x66,
+	0x72,0x6F,0x6D,0x20,0x49,0x6E,0x74,0x65,0x6C,0x20,0x66,0x72,
+	0x6F,0x6D,0x2F,0x74,0x6F,0x20,0x4D,0x6F,0x74,0x6F,0x72,0x6F,
+	0x6C,0x61,0x20,0x73,0x74,0x61,0x6E,0x64,0x61,0x72,0x64,0x20,
+	0x6F,0x6E,0x12,0x74,0x68,0x65,0x20,0x65,0x6E,0x74,0x69,0x72,
+	0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x44,0x59,0x6F,
+	0x75,0x27,0x6C,0x6C,0x20,0x6E,0x65,0x65,0x64,0x20,0x74,0x68,
+	0x69,0x73,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,
+	0x69,0x66,0x20,0x79,0x6F,0x75,0x20,0x69,0x6D,0x70,0x6F,0x72,
+	0x74,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x73,0x61,0x6D,
+	0x70,0x6C,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x4D,0x6F,
+	0x74,0x6F,0x72,0x6F,0x6C,0x61,0x2D,0x62,0x79,0x74,0x65,0x2D,
+	0x6F,0x72,0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x28,0x66,0x2E,
+	0x65,0x78,0x2E,0x20,0x4B,0x75,0x72,0x7A,0x77,0x65,0x69,0x6C,
+	0x20,0x4B,0x32,0x30,0x30,0x30,0x20,0x73,0x61,0x6D,0x70,0x6C,
+	0x65,0x73,0x2E,0x29,0x00,0x10,0x3E,0x40,0x58,0x30,0x34,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x45,0x63,0x68,0x6F,0x3A,0x0B,0x3E,
+	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1E,0x4F,
+	0x70,0x65,0x72,0x61,0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,
+	0x68,0x65,0x20,0x65,0x6E,0x74,0x69,0x72,0x65,0x20,0x73,0x61,
+	0x6D,0x70,0x6C,0x65,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x34,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x46,0x69,0x78,0x20,0x44,0x43,
 	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x44,0x3E,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,
-	0x20,0x74,0x6F,0x6F,0x6C,0x20,0x66,0x6F,0x72,0x20,0x6D,0x61,
-	0x6B,0x69,0x6E,0x67,0x20,0x73,0x6D,0x6F,0x6F,0x74,0x68,0x20,
-	0x6C,0x6F,0x6F,0x70,0x73,0x2E,0x20,0x53,0x70,0x65,0x63,0x69,
-	0x66,0x79,0x20,0x61,0x20,0x72,0x61,0x6E,0x67,0x65,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x63,0x6F,0x76,0x65,0x72,0x73,0x41,0x74,
-	0x68,0x65,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x6C,0x6F,0x6F,
-	0x70,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x20,0x4D,0x61,0x6B,
-	0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x61,0x74,0x20,
-	0x74,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x61,0x73,0x20,
-	0x6D,0x75,0x63,0x68,0x20,0x73,0x70,0x61,0x63,0x65,0x20,0x61,
-	0x66,0x74,0x65,0x72,0x41,0x74,0x68,0x65,0x20,0x73,0x65,0x63,
-	0x6F,0x6E,0x64,0x20,0x6C,0x6F,0x6F,0x70,0x20,0x70,0x6F,0x69,
-	0x6E,0x74,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x61,
-	0x6E,0x67,0x65,0x20,0x62,0x79,0x70,0x61,0x73,0x73,0x65,0x73,
-	0x20,0x74,0x68,0x65,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x6C,
-	0x6F,0x6F,0x70,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x1F,0x50,
-	0x72,0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x20,0x58,0x2D,0x66,
-	0x61,0x64,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x2E,0x20,
-	0x45,0x6E,0x6A,0x6F,0x79,0x21,0x00,0x18,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x38,0x2D,0x42,0x69,0x74,
-	0x2F,0x31,0x36,0x2D,0x62,0x69,0x74,0x3A,0x0B,0x3E,0x40,0x58,
-	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x42,0x3E,0x49,0x66,
-	0x20,0x79,0x6F,0x75,0x20,0x6C,0x6F,0x61,0x64,0x20,0x61,0x20,
-	0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,
-	0x65,0x20,0x77,0x69,0x74,0x68,0x6F,0x75,0x74,0x20,0x68,0x65,
-	0x61,0x64,0x65,0x72,0x2C,0x20,0x46,0x54,0x32,0x20,0x61,0x73,
-	0x73,0x75,0x6D,0x65,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x69,
-	0x74,0x27,0x73,0x3E,0x61,0x6E,0x20,0x38,0x2D,0x62,0x69,0x74,
-	0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x20,0x57,0x68,0x65,
-	0x6E,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6E,0x67,0x20,0x74,
-	0x68,0x65,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x62,0x75,
-	0x74,0x74,0x6F,0x6E,0x2C,0x20,0x64,0x6F,0x20,0x6E,0x6F,0x74,
-	0x20,0x70,0x72,0x65,0x73,0x73,0x23,0x22,0x63,0x6F,0x6E,0x76,
-	0x65,0x72,0x74,0x22,0x20,0x77,0x68,0x65,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x20,0x69,0x73,
-	0x20,0x6D,0x61,0x64,0x65,0x2E,0x00,0x14,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x69,0x6E,0x69,0x6D,
-	0x69,0x7A,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
-	0x43,0x30,0x30,0x32,0x44,0x3E,0x54,0x68,0x69,0x73,0x20,0x66,
-	0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x20,0x63,0x75,0x74,0x73,
-	0x20,0x74,0x68,0x65,0x20,0x70,0x61,0x72,0x74,0x20,0x6F,0x66,
-	0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,
-	0x74,0x68,0x61,0x74,0x20,0x69,0x73,0x20,0x62,0x65,0x79,0x6F,
-	0x6E,0x64,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x63,0x6F,0x6E,
-	0x64,0x0B,0x6C,0x6F,0x6F,0x70,0x20,0x70,0x6F,0x69,0x6E,0x74,
-	0x2E,0x00,0x2D,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,
-	0x31,0x53,0x61,0x6D,0x70,0x6C,0x65,0x20,0x45,0x64,0x69,0x74,
-	0x6F,0x72,0x20,0x45,0x78,0x74,0x65,0x6E,0x73,0x69,0x6F,0x6E,
-	0x3A,0x20,0x28,0x53,0x2E,0x45,0x2E,0x45,0x78,0x74,0x2E,0x29,
-	0x01,0x3E,0x27,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
-	0x30,0x31,0x43,0x6F,0x70,0x79,0x2F,0x58,0x63,0x68,0x67,0x20,
-	0x53,0x61,0x6D,0x70,0x6C,0x65,0x2F,0x49,0x6E,0x73,0x74,0x72,
-	0x75,0x6D,0x65,0x6E,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
-	0x30,0x40,0x43,0x30,0x30,0x32,0x3C,0x3E,0x54,0x68,0x65,0x20,
-	0x73,0x6F,0x75,0x72,0x63,0x65,0x20,0x69,0x73,0x20,0x73,0x70,
-	0x65,0x63,0x69,0x66,0x69,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,
-	0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,
-	0x65,0x72,0x69,0x6E,0x67,0x20,0x63,0x6F,0x6C,0x75,0x6D,0x6E,
-	0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x40,0x69,0x6E,0x73,0x74,
-	0x72,0x2E,0x2F,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x6C,0x69,
-	0x73,0x74,0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x75,
-	0x70,0x70,0x65,0x72,0x2D,0x72,0x69,0x67,0x68,0x74,0x20,0x63,
-	0x6F,0x72,0x6E,0x65,0x72,0x20,0x6F,0x66,0x20,0x74,0x68,0x65,
-	0x20,0x73,0x63,0x72,0x65,0x65,0x6E,0x2E,0x20,0x54,0x68,0x65,
-	0x29,0x64,0x65,0x73,0x74,0x69,0x6E,0x61,0x74,0x69,0x6F,0x6E,
-	0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,
-	0x65,0x6E,0x74,0x20,0x69,0x6E,0x73,0x74,0x72,0x2E,0x2F,0x73,
-	0x61,0x6D,0x70,0x6C,0x65,0x2E,0x00,0x15,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x42,0x61,0x63,0x6B,0x77,
-	0x61,0x72,0x64,0x73,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,
-	0x40,0x43,0x30,0x30,0x32,0x40,0x3E,0x4F,0x70,0x65,0x72,0x61,
-	0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x72,
-	0x61,0x6E,0x67,0x65,0x20,0x28,0x6F,0x72,0x20,0x74,0x68,0x65,
-	0x20,0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,
-	0x65,0x20,0x69,0x66,0x20,0x6E,0x6F,0x20,0x72,0x61,0x6E,0x67,
-	0x65,0x20,0x69,0x73,0x20,0x73,0x65,0x74,0x29,0x2E,0x00,0x13,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x43,
-	0x6F,0x6E,0x76,0x65,0x72,0x74,0x3A,0x0B,0x3E,0x40,0x58,0x30,
-	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x34,0x3E,0x43,0x6F,0x6E,
-	0x76,0x65,0x72,0x74,0x73,0x20,0x74,0x68,0x65,0x20,0x65,0x6E,
-	0x74,0x69,0x72,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,
-	0x66,0x72,0x6F,0x6D,0x2F,0x74,0x6F,0x20,0x73,0x69,0x67,0x6E,
-	0x65,0x64,0x2F,0x75,0x6E,0x73,0x69,0x67,0x6E,0x65,0x64,0x2E,
+	0x32,0x3D,0x41,0x74,0x74,0x65,0x6D,0x70,0x74,0x73,0x20,0x74,
+	0x6F,0x20,0x63,0x65,0x6E,0x74,0x65,0x72,0x20,0x61,0x20,0x73,
+	0x61,0x6D,0x70,0x6C,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x68,
+	0x61,0x73,0x20,0x75,0x6E,0x77,0x61,0x6E,0x74,0x65,0x64,0x20,
+	0x44,0x43,0x20,0x6F,0x66,0x66,0x73,0x65,0x74,0x2F,0x62,0x69,
+	0x61,0x73,0x2E,0x43,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x6E,
+	0x6F,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,0x20,
+	0x69,0x73,0x20,0x75,0x73,0x69,0x6E,0x67,0x20,0x61,0x20,0x63,
+	0x72,0x75,0x64,0x65,0x20,0x61,0x6C,0x67,0x6F,0x72,0x69,0x74,
+	0x68,0x6D,0x2C,0x20,0x73,0x6F,0x20,0x69,0x74,0x20,0x63,0x61,
+	0x6E,0x20,0x73,0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,0x22,
+	0x66,0x61,0x69,0x6C,0x20,0x64,0x65,0x70,0x65,0x6E,0x64,0x69,
+	0x6E,0x67,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x73,0x61,
+	0x6D,0x70,0x6C,0x65,0x20,0x64,0x61,0x74,0x61,0x2E,0x00,0x14,
+	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x52,
+	0x65,0x73,0x61,0x6D,0x70,0x6C,0x65,0x3A,0x0B,0x3E,0x40,0x58,
+	0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3C,0x4F,0x70,0x65,
+	0x72,0x61,0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,
+	0x20,0x65,0x6E,0x74,0x69,0x72,0x65,0x20,0x73,0x61,0x6D,0x70,
+	0x6C,0x65,0x2E,0x20,0x54,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,
+	0x6C,0x65,0x27,0x73,0x20,0x72,0x65,0x6C,0x61,0x74,0x69,0x76,
+	0x65,0x20,0x74,0x6F,0x6E,0x65,0x20,0x69,0x73,0x2C,0x63,0x68,
+	0x61,0x6E,0x67,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x72,
+	0x65,0x73,0x70,0x65,0x63,0x74,0x20,0x74,0x6F,0x20,0x74,0x68,
+	0x65,0x20,0x72,0x65,0x73,0x61,0x6D,0x70,0x6C,0x69,0x6E,0x67,
+	0x20,0x72,0x61,0x74,0x65,0x2E,0x00,0x16,0x3E,0x40,0x58,0x30,
+	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x69,0x78,0x20,0x73,
+	0x61,0x6D,0x70,0x6C,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
+	0x30,0x40,0x43,0x30,0x30,0x32,0x35,0x3E,0x4D,0x69,0x78,0x65,
+	0x73,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x72,0x63,0x65,
+	0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x64,0x65,
+	0x73,0x74,0x69,0x6E,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,0x6F,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x72,0x63,0x65,0x2E,
 	0x00,0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,
-	0x31,0x43,0x6F,0x6E,0x76,0x65,0x72,0x74,0x20,0x57,0x3A,0x0B,
-	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3F,
-	0x53,0x77,0x61,0x70,0x73,0x20,0x74,0x68,0x65,0x20,0x62,0x79,
-	0x74,0x65,0x20,0x6F,0x72,0x64,0x65,0x72,0x20,0x74,0x6F,0x2F,
-	0x66,0x72,0x6F,0x6D,0x20,0x49,0x6E,0x74,0x65,0x6C,0x20,0x66,
-	0x72,0x6F,0x6D,0x2F,0x74,0x6F,0x20,0x4D,0x6F,0x74,0x6F,0x72,
-	0x6F,0x6C,0x61,0x20,0x73,0x74,0x61,0x6E,0x64,0x61,0x72,0x64,
-	0x20,0x6F,0x6E,0x12,0x74,0x68,0x65,0x20,0x65,0x6E,0x74,0x69,
-	0x72,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x2E,0x44,0x59,
-	0x6F,0x75,0x27,0x6C,0x6C,0x20,0x6E,0x65,0x65,0x64,0x20,0x74,
-	0x68,0x69,0x73,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,
-	0x20,0x69,0x66,0x20,0x79,0x6F,0x75,0x20,0x69,0x6D,0x70,0x6F,
-	0x72,0x74,0x20,0x31,0x36,0x2D,0x62,0x69,0x74,0x20,0x73,0x61,
-	0x6D,0x70,0x6C,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20,0x4D,
-	0x6F,0x74,0x6F,0x72,0x6F,0x6C,0x61,0x2D,0x62,0x79,0x74,0x65,
-	0x2D,0x6F,0x72,0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x28,0x66,
-	0x2E,0x65,0x78,0x2E,0x20,0x4B,0x75,0x72,0x7A,0x77,0x65,0x69,
-	0x6C,0x20,0x4B,0x32,0x30,0x30,0x30,0x20,0x73,0x61,0x6D,0x70,
-	0x6C,0x65,0x73,0x2E,0x29,0x00,0x10,0x3E,0x40,0x58,0x30,0x34,
-	0x30,0x40,0x43,0x30,0x30,0x31,0x45,0x63,0x68,0x6F,0x3A,0x0B,
-	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x1E,
-	0x4F,0x70,0x65,0x72,0x61,0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,
-	0x74,0x68,0x65,0x20,0x65,0x6E,0x74,0x69,0x72,0x65,0x20,0x73,
-	0x61,0x6D,0x70,0x6C,0x65,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x46,0x69,0x78,0x20,0x44,
-	0x43,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x3D,0x41,0x74,0x74,0x65,0x6D,0x70,0x74,0x73,0x20,
-	0x74,0x6F,0x20,0x63,0x65,0x6E,0x74,0x65,0x72,0x20,0x61,0x20,
-	0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x74,0x68,0x61,0x74,0x20,
-	0x68,0x61,0x73,0x20,0x75,0x6E,0x77,0x61,0x6E,0x74,0x65,0x64,
-	0x20,0x44,0x43,0x20,0x6F,0x66,0x66,0x73,0x65,0x74,0x2F,0x62,
-	0x69,0x61,0x73,0x2E,0x43,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,
-	0x6E,0x6F,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x74,
-	0x20,0x69,0x73,0x20,0x75,0x73,0x69,0x6E,0x67,0x20,0x61,0x20,
-	0x63,0x72,0x75,0x64,0x65,0x20,0x61,0x6C,0x67,0x6F,0x72,0x69,
-	0x74,0x68,0x6D,0x2C,0x20,0x73,0x6F,0x20,0x69,0x74,0x20,0x63,
-	0x61,0x6E,0x20,0x73,0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,
-	0x22,0x66,0x61,0x69,0x6C,0x20,0x64,0x65,0x70,0x65,0x6E,0x64,
-	0x69,0x6E,0x67,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,0x20,0x73,
-	0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x61,0x74,0x61,0x2E,0x00,
-	0x14,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x52,0x65,0x73,0x61,0x6D,0x70,0x6C,0x65,0x3A,0x0B,0x3E,0x40,
-	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3C,0x4F,0x70,
-	0x65,0x72,0x61,0x74,0x65,0x73,0x20,0x6F,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x65,0x6E,0x74,0x69,0x72,0x65,0x20,0x73,0x61,0x6D,
-	0x70,0x6C,0x65,0x2E,0x20,0x54,0x68,0x65,0x20,0x73,0x61,0x6D,
-	0x70,0x6C,0x65,0x27,0x73,0x20,0x72,0x65,0x6C,0x61,0x74,0x69,
-	0x76,0x65,0x20,0x74,0x6F,0x6E,0x65,0x20,0x69,0x73,0x2C,0x63,
-	0x68,0x61,0x6E,0x67,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,
-	0x72,0x65,0x73,0x70,0x65,0x63,0x74,0x20,0x74,0x6F,0x20,0x74,
-	0x68,0x65,0x20,0x72,0x65,0x73,0x61,0x6D,0x70,0x6C,0x69,0x6E,
-	0x67,0x20,0x72,0x61,0x74,0x65,0x2E,0x00,0x16,0x3E,0x40,0x58,
-	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x4D,0x69,0x78,0x20,
-	0x73,0x61,0x6D,0x70,0x6C,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,
-	0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x35,0x3E,0x4D,0x69,0x78,
-	0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x72,0x63,
-	0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x64,
-	0x65,0x73,0x74,0x69,0x6E,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,
-	0x6F,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x72,0x63,0x65,
-	0x2E,0x00,0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
-	0x30,0x31,0x44,0x72,0x61,0x77,0x20,0x6D,0x6F,0x64,0x65,0x3A,
+	0x31,0x44,0x72,0x61,0x77,0x20,0x6D,0x6F,0x64,0x65,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x40,
+	0x42,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6E,0x67,0x20,
+	0x74,0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74,0x20,0x6D,0x6F,
+	0x75,0x73,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20,0x69,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,
+	0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x2C,0x20,0x79,0x6F,0x75,
+	0x20,0x63,0x61,0x6E,0x1D,0x64,0x72,0x61,0x77,0x20,0x79,0x6F,
+	0x75,0x72,0x20,0x77,0x61,0x76,0x65,0x66,0x6F,0x72,0x6D,0x73,
+	0x20,0x6D,0x61,0x6E,0x75,0x61,0x6C,0x6C,0x79,0x2E,0x00,0x18,
+	0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,
+	0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x3A,
+	0x01,0x3E,0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
+	0x30,0x31,0x41,0x75,0x74,0x6F,0x20,0x73,0x61,0x76,0x65,0x3A,
 	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
-	0x40,0x42,0x79,0x20,0x70,0x72,0x65,0x73,0x73,0x69,0x6E,0x67,
-	0x20,0x74,0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74,0x20,0x6D,
-	0x6F,0x75,0x73,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x20,
-	0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,
-	0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x2C,0x20,0x79,0x6F,
-	0x75,0x20,0x63,0x61,0x6E,0x1D,0x64,0x72,0x61,0x77,0x20,0x79,
-	0x6F,0x75,0x72,0x20,0x77,0x61,0x76,0x65,0x66,0x6F,0x72,0x6D,
-	0x73,0x20,0x6D,0x61,0x6E,0x75,0x61,0x6C,0x6C,0x79,0x2E,0x00,
-	0x18,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x43,
-	0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,
-	0x3A,0x01,0x3E,0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
-	0x30,0x30,0x31,0x41,0x75,0x74,0x6F,0x20,0x73,0x61,0x76,0x65,
+	0x43,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x74,0x6F,
+	0x20,0x73,0x61,0x76,0x65,0x20,0x69,0x73,0x20,0x6F,0x6E,0x2C,
+	0x20,0x46,0x54,0x32,0x20,0x77,0x69,0x6C,0x6C,0x20,0x75,0x70,
+	0x64,0x61,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,
+	0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,
+	0x69,0x6C,0x65,0x20,0x77,0x68,0x65,0x6E,0x15,0x79,0x6F,0x75,
+	0x20,0x65,0x78,0x69,0x74,0x20,0x74,0x68,0x65,0x20,0x70,0x72,
+	0x6F,0x67,0x72,0x61,0x6D,0x2E,0x00,0x25,0x40,0x58,0x30,0x32,
+	0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,
+	0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x49,0x2F,0x4F,
+	0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x73,0x3A,0x01,0x3E,0x19,
+	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x49,
+	0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,
 	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x43,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x74,
-	0x6F,0x20,0x73,0x61,0x76,0x65,0x20,0x69,0x73,0x20,0x6F,0x6E,
-	0x2C,0x20,0x46,0x54,0x32,0x20,0x77,0x69,0x6C,0x6C,0x20,0x75,
-	0x70,0x64,0x61,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,
-	0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x20,
-	0x66,0x69,0x6C,0x65,0x20,0x77,0x68,0x65,0x6E,0x15,0x79,0x6F,
-	0x75,0x20,0x65,0x78,0x69,0x74,0x20,0x74,0x68,0x65,0x20,0x70,
-	0x72,0x6F,0x67,0x72,0x61,0x6D,0x2E,0x00,0x25,0x40,0x58,0x30,
-	0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,0x69,
-	0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x49,0x2F,
-	0x4F,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x73,0x3A,0x01,0x3E,
-	0x19,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x49,0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,
-	0x6E,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x3C,0x54,0x68,0x65,0x20,0x6D,0x69,0x78,0x69,0x6E,
-	0x67,0x20,0x72,0x6F,0x75,0x74,0x69,0x6E,0x65,0x20,0x69,0x6E,
-	0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x65,0x73,0x20,0x74,
-	0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x76,0x61,
-	0x6C,0x75,0x65,0x20,0x62,0x65,0x74,0x77,0x65,0x65,0x6E,0x20,
-	0x74,0x68,0x65,0x42,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x70,
-	0x6F,0x69,0x6E,0x74,0x73,0x20,0x74,0x6F,0x20,0x72,0x65,0x6D,
-	0x6F,0x76,0x65,0x20,0x75,0x6E,0x77,0x61,0x6E,0x74,0x65,0x64,
-	0x20,0x6E,0x6F,0x69,0x73,0x65,0x20,0x69,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x73,0x6F,0x75,0x6E,0x64,0x2E,0x20,0x52,0x65,0x61,
-	0x6C,0x20,0x46,0x54,0x32,0x20,0x75,0x73,0x65,0x73,0x45,0x32,
-	0x2D,0x74,0x61,0x70,0x20,0x6C,0x69,0x6E,0x65,0x61,0x72,0x20,
-	0x69,0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,
-	0x6E,0x2C,0x20,0x77,0x68,0x69,0x6C,0x65,0x20,0x74,0x68,0x69,
-	0x73,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x20,0x75,0x73,0x65,0x73,
-	0x20,0x34,0x2D,0x74,0x61,0x70,0x20,0x63,0x75,0x62,0x69,0x63,
-	0x20,0x73,0x70,0x6C,0x69,0x6E,0x65,0x20,0x45,0x69,0x6E,0x74,
-	0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,
-	0x6F,0x72,0x20,0x69,0x6D,0x70,0x72,0x6F,0x76,0x65,0x64,0x20,
-	0x68,0x69,0x67,0x68,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,
-	0x63,0x69,0x65,0x73,0x2E,0x20,0x54,0x75,0x72,0x6E,0x69,0x6E,
-	0x67,0x20,0x69,0x74,0x20,0x6F,0x66,0x66,0x20,0x77,0x69,0x6C,
-	0x6C,0x20,0x6D,0x61,0x6B,0x65,0x2F,0x74,0x68,0x65,0x20,0x61,
-	0x75,0x64,0x69,0x6F,0x20,0x73,0x68,0x61,0x72,0x70,0x65,0x72,
-	0x2C,0x20,0x62,0x75,0x74,0x20,0x69,0x74,0x20,0x77,0x69,0x6C,
-	0x6C,0x20,0x61,0x6C,0x73,0x6F,0x20,0x62,0x65,0x20,0x6E,0x6F,
-	0x69,0x73,0x69,0x65,0x72,0x2E,0x00,0x1A,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,0x6F,0x6C,0x75,0x6D,
-	0x65,0x20,0x72,0x61,0x6D,0x70,0x69,0x6E,0x67,0x3A,0x0B,0x3E,
-	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3B,0x45,
-	0x6E,0x61,0x62,0x6C,0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x61,
-	0x6E,0x74,0x69,0x2D,0x63,0x6C,0x69,0x63,0x6B,0x20,0x73,0x79,
-	0x73,0x74,0x65,0x6D,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,
-	0x61,0x75,0x64,0x69,0x6F,0x20,0x6D,0x69,0x78,0x65,0x72,0x20,
-	0x28,0x46,0x54,0x32,0x2E,0x30,0x38,0x2B,0x29,0x2E,0x3B,0x50,
-	0x6C,0x65,0x61,0x73,0x65,0x20,0x6E,0x6F,0x74,0x65,0x20,0x74,
-	0x68,0x61,0x74,0x20,0x6F,0x72,0x69,0x67,0x69,0x6E,0x61,0x6C,
-	0x20,0x46,0x54,0x32,0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x6C,
-	0x6F,0x61,0x64,0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x6F,0x6E,
-	0x66,0x69,0x67,0x20,0x65,0x6E,0x74,0x72,0x79,0x2C,0x0B,0x63,
-	0x6C,0x6F,0x6E,0x65,0x20,0x6F,0x6E,0x6C,0x79,0x2E,0x00,0x19,
-	0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x41,
-	0x6D,0x70,0x6C,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,
-	0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,
-	0x32,0x46,0x41,0x6D,0x70,0x6C,0x69,0x66,0x69,0x65,0x73,0x20,
-	0x74,0x68,0x65,0x20,0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x77,
-	0x68,0x65,0x6E,0x20,0x6D,0x69,0x78,0x69,0x6E,0x67,0x2E,0x20,
-	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x73,0x65,0x74,0x20,0x74,
-	0x68,0x69,0x73,0x20,0x6F,0x6E,0x65,0x20,0x74,0x6F,0x6F,0x20,
-	0x68,0x69,0x67,0x68,0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,
-	0x3A,0x67,0x65,0x74,0x20,0x64,0x69,0x73,0x74,0x6F,0x72,0x74,
-	0x69,0x6F,0x6E,0x2E,0x20,0x33,0x32,0x58,0x20,0x65,0x71,0x75,
-	0x61,0x6C,0x73,0x20,0x66,0x75,0x6C,0x6C,0x20,0x61,0x6D,0x70,
-	0x6C,0x69,0x74,0x75,0x64,0x65,0x20,0x66,0x6F,0x72,0x20,0x6F,
-	0x6E,0x65,0x20,0x63,0x68,0x61,0x6E,0x6E,0x65,0x6C,0x2E,0x00,
-	0x1B,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x46,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,
-	0x62,0x6C,0x65,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,
-	0x43,0x30,0x30,0x32,0x40,0x54,0x68,0x65,0x20,0x6C,0x69,0x6E,
-	0x65,0x61,0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,
-	0x79,0x20,0x74,0x61,0x62,0x6C,0x65,0x20,0x6D,0x61,0x6B,0x65,
-	0x73,0x20,0x61,0x6C,0x6C,0x20,0x70,0x69,0x74,0x63,0x68,0x20,
-	0x62,0x65,0x6E,0x64,0x73,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,
-	0x20,0x63,0x6F,0x6E,0x73,0x74,0x61,0x6E,0x74,0x3F,0x73,0x70,
-	0x65,0x65,0x64,0x2C,0x20,0x69,0x6E,0x64,0x65,0x70,0x65,0x6E,
-	0x64,0x65,0x6E,0x74,0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,
-	0x63,0x75,0x72,0x72,0x65,0x6E,0x74,0x20,0x66,0x72,0x65,0x71,
-	0x75,0x65,0x6E,0x63,0x79,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,
-	0x75,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x74,0x68,0x69,
-	0x73,0x41,0x6F,0x6E,0x65,0x2C,0x20,0x6F,0x6E,0x20,0x61,0x20,
-	0x66,0x69,0x6E,0x69,0x73,0x68,0x65,0x64,0x20,0x73,0x6F,0x6E,
-	0x67,0x2C,0x20,0x69,0x74,0x20,0x6D,0x69,0x67,0x68,0x74,0x20,
-	0x73,0x6F,0x75,0x6E,0x64,0x20,0x73,0x74,0x72,0x61,0x6E,0x67,
-	0x65,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,
-	0x6E,0x64,0x20,0x75,0x73,0x65,0x73,0x0D,0x70,0x6F,0x72,0x74,
-	0x61,0x6D,0x65,0x6E,0x74,0x6F,0x65,0x73,0x2E,0x00,0x20,0x40,
-	0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,
-	0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,
-	0x4C,0x61,0x79,0x6F,0x75,0x74,0x3A,0x01,0x3E,0x29,0x3E,0x40,
-	0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x61,0x74,
-	0x74,0x65,0x72,0x6E,0x20,0x6C,0x61,0x79,0x6F,0x75,0x74,0x2C,
-	0x20,0x68,0x65,0x78,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x69,
-	0x6E,0x67,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x41,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x75,
-	0x73,0x65,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6E,0x73,0x20,
-	0x74,0x68,0x61,0x74,0x20,0x61,0x72,0x65,0x20,0x6C,0x6F,0x6E,
-	0x67,0x65,0x72,0x20,0x74,0x68,0x61,0x6E,0x20,0x39,0x39,0x20,
-	0x6C,0x69,0x6E,0x65,0x73,0x2C,0x20,0x79,0x6F,0x75,0x20,0x73,
-	0x68,0x6F,0x75,0x6C,0x64,0x20,0x75,0x73,0x65,0x45,0x68,0x65,
-	0x78,0x20,0x63,0x6F,0x75,0x6E,0x74,0x69,0x6E,0x67,0x20,0x73,
-	0x69,0x6E,0x63,0x65,0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,
-	0x72,0x65,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x32,0x20,0x64,0x69,
-	0x67,0x69,0x74,0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,
-	0x6C,0x69,0x6E,0x65,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,
-	0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,
-	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,
-	0x65,0x73,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x43,0x22,0x53,0x74,0x64,0x2E,0x22,0x20,0x28,
-	0x73,0x74,0x61,0x6E,0x64,0x61,0x72,0x64,0x29,0x20,0x77,0x69,
-	0x6C,0x6C,0x20,0x73,0x68,0x6F,0x77,0x20,0x74,0x68,0x65,0x20,
-	0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,
-	0x73,0x20,0x61,0x73,0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,
-	0x28,0x6C,0x69,0x6B,0x65,0x20,0x46,0x54,0x32,0x29,0x2E,0x41,
-	0x22,0x4C,0x69,0x6E,0x65,0x64,0x22,0x20,0x77,0x69,0x6C,0x6C,
-	0x20,0x64,0x72,0x61,0x77,0x20,0x6C,0x69,0x6E,0x65,0x73,0x20,
-	0x62,0x65,0x74,0x77,0x65,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,
-	0x70,0x6F,0x69,0x6E,0x74,0x73,0x2C,0x20,0x6C,0x69,0x6B,0x65,
-	0x20,0x61,0x6E,0x20,0x6F,0x73,0x63,0x69,0x6C,0x6C,0x6F,0x73,
-	0x63,0x6F,0x70,0x65,0x2E,0x00,0x27,0x40,0x58,0x30,0x32,0x30,
+	0x32,0x35,0x53,0x65,0x6C,0x65,0x63,0x74,0x73,0x20,0x77,0x68,
+	0x61,0x74,0x20,0x74,0x79,0x70,0x65,0x20,0x6F,0x66,0x20,0x72,
+	0x65,0x73,0x61,0x6D,0x70,0x6C,0x69,0x6E,0x67,0x20,0x69,0x6E,
+	0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,0x20,
+	0x74,0x6F,0x20,0x75,0x73,0x65,0x2E,0x45,0x22,0x4E,0x6F,0x6E,
+	0x65,0x22,0x20,0x75,0x73,0x65,0x73,0x20,0x6E,0x6F,0x20,0x69,
+	0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,
+	0x20,0x28,0x6E,0x65,0x61,0x72,0x65,0x73,0x74,0x20,0x6E,0x65,
+	0x69,0x67,0x68,0x62,0x6F,0x72,0x29,0x2C,0x20,0x77,0x68,0x69,
+	0x63,0x68,0x20,0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x73,0x75,
+	0x6C,0x74,0x20,0x69,0x6E,0x49,0x61,0x6C,0x69,0x61,0x73,0x69,
+	0x6E,0x67,0x20,0x28,0x6E,0x6F,0x69,0x73,0x65,0x29,0x20,0x69,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x6E,0x64,0x2E,
+	0x20,0x22,0x4C,0x69,0x6E,0x65,0x61,0x72,0x22,0x20,0x69,0x73,
+	0x20,0x77,0x68,0x61,0x74,0x20,0x72,0x65,0x61,0x6C,0x20,0x46,
+	0x54,0x32,0x20,0x75,0x73,0x65,0x73,0x2C,0x20,0x77,0x68,0x69,
+	0x63,0x68,0x20,0x69,0x73,0x20,0x61,0x46,0x6D,0x65,0x64,0x69,
+	0x6F,0x63,0x72,0x65,0x20,0x69,0x6E,0x74,0x65,0x72,0x70,0x6F,
+	0x6C,0x61,0x74,0x69,0x6F,0x6E,0x20,0x74,0x79,0x70,0x65,0x2E,
+	0x20,0x22,0x43,0x75,0x62,0x69,0x63,0x20,0x73,0x70,0x6C,0x69,
+	0x6E,0x65,0x22,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x72,
+	0x65,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x64,0x65,0x64,0x20,0x73,
+	0x65,0x74,0x74,0x69,0x6E,0x67,0x48,0x66,0x6F,0x72,0x20,0x74,
+	0x68,0x65,0x20,0x62,0x65,0x73,0x74,0x20,0x61,0x75,0x64,0x69,
+	0x6F,0x20,0x71,0x75,0x61,0x6C,0x69,0x74,0x79,0x2C,0x20,0x61,
+	0x6C,0x74,0x68,0x6F,0x75,0x67,0x68,0x20,0x69,0x74,0x20,0x6D,
+	0x61,0x79,0x20,0x73,0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,
+	0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x74,0x6F,0x6F,0x20,0x66,
+	0x69,0x6C,0x74,0x65,0x72,0x65,0x64,0x2A,0x6F,0x6E,0x20,0x6C,
+	0x6F,0x77,0x2D,0x71,0x75,0x61,0x6C,0x69,0x74,0x79,0x20,0x73,
+	0x61,0x6D,0x70,0x6C,0x65,0x73,0x20,0x28,0x66,0x2E,0x65,0x78,
+	0x2E,0x20,0x41,0x6D,0x69,0x67,0x61,0x20,0x4D,0x4F,0x44,0x73,
+	0x29,0x2E,0x00,0x1A,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x56,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x72,0x61,
+	0x6D,0x70,0x69,0x6E,0x67,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
+	0x30,0x40,0x43,0x30,0x30,0x32,0x3B,0x45,0x6E,0x61,0x62,0x6C,
+	0x65,0x73,0x20,0x74,0x68,0x65,0x20,0x61,0x6E,0x74,0x69,0x2D,
+	0x63,0x6C,0x69,0x63,0x6B,0x20,0x73,0x79,0x73,0x74,0x65,0x6D,
+	0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x61,0x75,0x64,0x69,
+	0x6F,0x20,0x6D,0x69,0x78,0x65,0x72,0x20,0x28,0x46,0x54,0x32,
+	0x2E,0x30,0x38,0x2B,0x29,0x2E,0x3B,0x50,0x6C,0x65,0x61,0x73,
+	0x65,0x20,0x6E,0x6F,0x74,0x65,0x20,0x74,0x68,0x61,0x74,0x20,
+	0x6F,0x72,0x69,0x67,0x69,0x6E,0x61,0x6C,0x20,0x46,0x54,0x32,
+	0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x6C,0x6F,0x61,0x64,0x20,
+	0x74,0x68,0x69,0x73,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,
+	0x65,0x6E,0x74,0x72,0x79,0x2C,0x0B,0x63,0x6C,0x6F,0x6E,0x65,
+	0x20,0x6F,0x6E,0x6C,0x79,0x2E,0x00,0x19,0x3E,0x40,0x58,0x30,
+	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x41,0x6D,0x70,0x6C,0x69,
+	0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x3A,0x0B,0x3E,0x40,
+	0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x46,0x41,0x6D,
+	0x70,0x6C,0x69,0x66,0x69,0x65,0x73,0x20,0x74,0x68,0x65,0x20,
+	0x76,0x6F,0x6C,0x75,0x6D,0x65,0x20,0x77,0x68,0x65,0x6E,0x20,
+	0x6D,0x69,0x78,0x69,0x6E,0x67,0x2E,0x20,0x49,0x66,0x20,0x79,
+	0x6F,0x75,0x20,0x73,0x65,0x74,0x20,0x74,0x68,0x69,0x73,0x20,
+	0x6F,0x6E,0x65,0x20,0x74,0x6F,0x6F,0x20,0x68,0x69,0x67,0x68,
+	0x2C,0x20,0x79,0x6F,0x75,0x27,0x6C,0x6C,0x3A,0x67,0x65,0x74,
+	0x20,0x64,0x69,0x73,0x74,0x6F,0x72,0x74,0x69,0x6F,0x6E,0x2E,
+	0x20,0x33,0x32,0x58,0x20,0x65,0x71,0x75,0x61,0x6C,0x73,0x20,
+	0x66,0x75,0x6C,0x6C,0x20,0x61,0x6D,0x70,0x6C,0x69,0x74,0x75,
+	0x64,0x65,0x20,0x66,0x6F,0x72,0x20,0x6F,0x6E,0x65,0x20,0x63,
+	0x68,0x61,0x6E,0x6E,0x65,0x6C,0x2E,0x00,0x1B,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x46,0x72,0x65,0x71,
+	0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,0x62,0x6C,0x65,0x3A,
+	0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,
+	0x40,0x54,0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,0x61,0x72,0x20,
+	0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,0x74,0x61,
+	0x62,0x6C,0x65,0x20,0x6D,0x61,0x6B,0x65,0x73,0x20,0x61,0x6C,
+	0x6C,0x20,0x70,0x69,0x74,0x63,0x68,0x20,0x62,0x65,0x6E,0x64,
+	0x73,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x63,0x6F,0x6E,
+	0x73,0x74,0x61,0x6E,0x74,0x3F,0x73,0x70,0x65,0x65,0x64,0x2C,
+	0x20,0x69,0x6E,0x64,0x65,0x70,0x65,0x6E,0x64,0x65,0x6E,0x74,
+	0x20,0x6F,0x66,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,
+	0x65,0x6E,0x74,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,
+	0x79,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x73,0x77,
+	0x69,0x74,0x63,0x68,0x20,0x74,0x68,0x69,0x73,0x41,0x6F,0x6E,
+	0x65,0x2C,0x20,0x6F,0x6E,0x20,0x61,0x20,0x66,0x69,0x6E,0x69,
+	0x73,0x68,0x65,0x64,0x20,0x73,0x6F,0x6E,0x67,0x2C,0x20,0x69,
+	0x74,0x20,0x6D,0x69,0x67,0x68,0x74,0x20,0x73,0x6F,0x75,0x6E,
+	0x64,0x20,0x73,0x74,0x72,0x61,0x6E,0x67,0x65,0x20,0x69,0x66,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x6F,0x75,0x6E,0x64,0x20,0x75,
+	0x73,0x65,0x73,0x0D,0x70,0x6F,0x72,0x74,0x61,0x6D,0x65,0x6E,
+	0x74,0x6F,0x65,0x73,0x2E,0x00,0x20,0x40,0x58,0x30,0x32,0x30,
 	0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,0x75,
-	0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x4D,0x69,0x73,0x63,
-	0x65,0x6C,0x6C,0x61,0x6E,0x65,0x6F,0x75,0x73,0x3A,0x01,0x3E,
-	0x15,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,
-	0x56,0x53,0x79,0x6E,0x63,0x20,0x6F,0x66,0x66,0x3A,0x0B,0x3E,
-	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x3F,0x54,
-	0x65,0x6C,0x6C,0x73,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,
-	0x67,0x72,0x61,0x6D,0x20,0x74,0x6F,0x20,0x6E,0x6F,0x74,0x20,
-	0x75,0x73,0x65,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x66,0x6F,
-	0x72,0x20,0x76,0x69,0x64,0x65,0x6F,0x2E,0x20,0x49,0x66,0x20,
-	0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,
-	0x27,0x73,0x40,0x72,0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x72,
-	0x61,0x74,0x65,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x36,
-	0x30,0x48,0x7A,0x20,0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,
-	0x29,0x2C,0x20,0x74,0x68,0x65,0x6E,0x20,0x56,0x53,0x79,0x6E,
-	0x63,0x20,0x69,0x73,0x20,0x61,0x6C,0x77,0x61,0x79,0x73,0x20,
-	0x6F,0x66,0x66,0x20,0x66,0x6F,0x72,0x45,0x74,0x68,0x69,0x73,
-	0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x2E,0x20,0x4E,0x6F,
-	0x74,0x20,0x68,0x61,0x76,0x69,0x6E,0x67,0x20,0x56,0x53,0x79,
-	0x6E,0x63,0x20,0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x73,0x75,
-	0x6C,0x74,0x20,0x69,0x6E,0x20,0x6C,0x65,0x73,0x73,0x20,0x69,
-	0x6E,0x70,0x75,0x74,0x2F,0x76,0x69,0x64,0x65,0x6F,0x20,0x64,
-	0x65,0x6C,0x61,0x79,0x2C,0x1E,0x62,0x75,0x74,0x20,0x61,0x6C,
-	0x73,0x6F,0x20,0x70,0x6F,0x74,0x65,0x6E,0x74,0x69,0x61,0x6C,
-	0x20,0x73,0x74,0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x2E,
-	0x01,0x20,0x18,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,
-	0x30,0x31,0x50,0x69,0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,
-	0x65,0x72,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,
-	0x30,0x30,0x32,0x43,0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,
-	0x61,0x20,0x73,0x75,0x62,0x70,0x69,0x78,0x65,0x6C,0x20,0x66,
-	0x69,0x6C,0x74,0x65,0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x69,
-	0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x77,0x68,0x65,0x6E,0x20,
-	0x74,0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x69,
-	0x73,0x20,0x75,0x70,0x73,0x63,0x61,0x6C,0x65,0x64,0x2E,0x43,
-	0x54,0x68,0x69,0x73,0x20,0x61,0x6C,0x73,0x6F,0x20,0x6D,0x61,
-	0x6B,0x65,0x73,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,
-	0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x63,0x6F,0x6D,0x70,
-	0x6C,0x65,0x74,0x65,0x6C,0x79,0x20,0x73,0x74,0x72,0x65,0x74,
-	0x63,0x68,0x20,0x6F,0x75,0x74,0x20,0x69,0x66,0x20,0x69,0x74,
-	0x20,0x64,0x69,0x64,0x6E,0x27,0x74,0x44,0x61,0x6C,0x72,0x65,
-	0x61,0x64,0x79,0x2E,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,
-	0x6B,0x65,0x65,0x70,0x20,0x69,0x6E,0x20,0x6D,0x69,0x6E,0x64,
-	0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,
-	0x69,0x6C,0x6C,0x20,0x6D,0x61,0x6B,0x65,0x20,0x70,0x69,0x78,
-	0x65,0x6C,0x73,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x62,0x6C,0x75,
-	0x72,0x72,0x79,0x2E,0x00,0x23,0x40,0x58,0x30,0x32,0x30,0x40,
-	0x43,0x30,0x30,0x31,0x41,0x64,0x76,0x61,0x6E,0x63,0x65,0x64,
-	0x20,0x65,0x64,0x69,0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,
-	0x6F,0x6E,0x73,0x3A,0x20,0x01,0x3E,0x1E,0x3E,0x40,0x58,0x30,
-	0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x43,0x6F,0x70,0x79,0x2F,
-	0x50,0x61,0x73,0x74,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,
-	0x67,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,
-	0x30,0x32,0x37,0x54,0x68,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,
-	0x6E,0x67,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x66,
-	0x6F,0x72,0x20,0x63,0x6F,0x70,0x79,0x69,0x6E,0x67,0x2F,0x70,
-	0x61,0x73,0x74,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x6C,0x79,0x20,
-	0x70,0x61,0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,0x46,0x22,
-	0x6E,0x6F,0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,0x2E,0x20,
-	0x54,0x68,0x65,0x20,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,
-	0x74,0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,
-	0x20,0x22,0x6E,0x6F,0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,
-	0x20,0x69,0x73,0x20,0x4E,0x6F,0x74,0x65,0x2C,0x20,0x49,0x6E,
-	0x73,0x74,0x72,0x2E,0x20,0x6E,0x72,0x2E,0x2C,0x20,0x56,0x6F,
-	0x6C,0x75,0x6D,0x65,0x2C,0x20,0x45,0x66,0x66,0x65,0x63,0x74,
-	0x20,0x6E,0x72,0x20,0x26,0x20,0x45,0x66,0x66,0x65,0x63,0x74,
-	0x20,0x64,0x61,0x74,0x61,0x2E,0x34,0x3E,0x41,0x73,0x20,0x79,
-	0x6F,0x75,0x20,0x63,0x61,0x6E,0x20,0x73,0x65,0x65,0x20,0x69,
-	0x6E,0x20,0x74,0x68,0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,
-	0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x33,
-	0x20,0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x73,0x20,0x6F,0x66,0x3D,
-	0x22,0x65,0x6E,0x61,0x62,0x6C,0x65,0x2F,0x64,0x69,0x73,0x61,
-	0x62,0x6C,0x65,0x20,0x62,0x75,0x74,0x74,0x6F,0x6E,0x73,0x22,
-	0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x68,0x61,0x73,0x20,0x74,
-	0x68,0x65,0x20,0x6C,0x65,0x74,0x74,0x65,0x72,0x73,0x20,0x43,
-	0x2C,0x50,0x20,0x26,0x20,0x54,0x20,0x61,0x62,0x6F,0x76,0x65,
-	0x2E,0x45,0x3E,0x43,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x63,
-	0x6F,0x70,0x79,0x2C,0x20,0x69,0x74,0x20,0x63,0x6F,0x6E,0x74,
-	0x72,0x6F,0x6C,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,
-	0x61,0x72,0x74,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,
-	0x65,0x73,0x20,0x69,0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,
-	0x63,0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x3E,
-	0x3E,0x50,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x70,0x61,0x73,
-	0x74,0x65,0x20,0x61,0x6E,0x64,0x20,0x63,0x6F,0x6E,0x74,0x72,
-	0x6F,0x6C,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,
-	0x72,0x74,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,
-	0x73,0x20,0x6F,0x75,0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,
-	0x68,0x65,0x0B,0x63,0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,
-	0x72,0x2E,0x45,0x3E,0x54,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,
-	0x74,0x72,0x61,0x6E,0x73,0x70,0x61,0x72,0x65,0x6E,0x63,0x79,
-	0x2E,0x20,0x49,0x66,0x20,0x69,0x74,0x27,0x73,0x20,0x65,0x6E,
-	0x61,0x62,0x6C,0x65,0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x70,
-	0x61,0x73,0x74,0x69,0x6E,0x67,0x20,0x64,0x6F,0x65,0x73,0x6E,
-	0x27,0x74,0x20,0x6F,0x76,0x65,0x72,0x77,0x72,0x69,0x74,0x65,
-	0x3D,0x64,0x61,0x74,0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6E,
-	0x69,0x6C,0x2D,0x69,0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,
-	0x6F,0x6E,0x2C,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x77,0x69,0x74,
-	0x68,0x20,0x61,0x20,0x6E,0x6F,0x74,0x65,0x20,0x6F,0x72,0x20,
-	0x61,0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x3C,0x3E,0x20,
-	0x30,0x2E,0x01,0x3E,0x40,0x3E,0x54,0x68,0x65,0x20,0x63,0x75,
-	0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x20,
-	0x77,0x6F,0x72,0x6B,0x73,0x20,0x6C,0x69,0x6B,0x65,0x20,0x70,
-	0x61,0x73,0x74,0x69,0x6E,0x67,0x20,0x77,0x69,0x74,0x68,0x20,
-	0x7A,0x65,0x72,0x6F,0x2D,0x64,0x61,0x74,0x61,0x2E,0x20,0x54,
-	0x68,0x69,0x73,0x20,0x6D,0x65,0x61,0x6E,0x73,0x3B,0x74,0x68,
-	0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x74,0x74,0x69,
-	0x6E,0x67,0x20,0x69,0x73,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,
-	0x6C,0x6C,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x50,0x2D,
-	0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x20,0x28,0x6F,0x72,0x20,0x54,
-	0x2D,0x63,0x6F,0x6C,0x75,0x6D,0x6E,0x29,0x2E,0x3C,0x3E,0x57,
-	0x68,0x65,0x6E,0x20,0x79,0x6F,0x75,0x20,0x63,0x6F,0x70,0x79,
-	0x20,0x64,0x61,0x74,0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6D,
-	0x61,0x73,0x6B,0x69,0x6E,0x67,0x2C,0x20,0x74,0x68,0x65,0x20,
-	0x64,0x69,0x73,0x61,0x62,0x6C,0x65,0x64,0x20,0x70,0x61,0x72,
-	0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x6E,0x6F,0x74,0x43,0x63,
-	0x6C,0x65,0x61,0x72,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x63,0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,
-	0x2E,0x20,0x28,0x4D,0x61,0x6B,0x69,0x6E,0x67,0x20,0x69,0x74,
-	0x20,0x70,0x6F,0x73,0x73,0x69,0x62,0x6C,0x65,0x20,0x74,0x6F,
-	0x20,0x63,0x6F,0x6C,0x6C,0x65,0x63,0x74,0x20,0x64,0x61,0x74,
-	0x61,0x20,0x66,0x72,0x6F,0x6D,0x27,0x73,0x65,0x76,0x65,0x72,
-	0x61,0x6C,0x20,0x6C,0x6F,0x63,0x61,0x74,0x69,0x6F,0x6E,0x73,
-	0x20,0x69,0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,
-	0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x29,0x00,0x03,
-	0x45,0x4E,0x44,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x72,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,0x4C,0x61,0x79,0x6F,
+	0x75,0x74,0x3A,0x01,0x3E,0x29,0x3E,0x40,0x58,0x30,0x34,0x30,
+	0x40,0x43,0x30,0x30,0x31,0x50,0x61,0x74,0x74,0x65,0x72,0x6E,
+	0x20,0x6C,0x61,0x79,0x6F,0x75,0x74,0x2C,0x20,0x68,0x65,0x78,
+	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x69,0x6E,0x67,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x41,
+	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x75,0x73,0x65,0x20,0x70,
+	0x61,0x74,0x74,0x65,0x72,0x6E,0x73,0x20,0x74,0x68,0x61,0x74,
+	0x20,0x61,0x72,0x65,0x20,0x6C,0x6F,0x6E,0x67,0x65,0x72,0x20,
+	0x74,0x68,0x61,0x6E,0x20,0x39,0x39,0x20,0x6C,0x69,0x6E,0x65,
+	0x73,0x2C,0x20,0x79,0x6F,0x75,0x20,0x73,0x68,0x6F,0x75,0x6C,
+	0x64,0x20,0x75,0x73,0x65,0x45,0x68,0x65,0x78,0x20,0x63,0x6F,
+	0x75,0x6E,0x74,0x69,0x6E,0x67,0x20,0x73,0x69,0x6E,0x63,0x65,
+	0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x6F,
+	0x6E,0x6C,0x79,0x20,0x32,0x20,0x64,0x69,0x67,0x69,0x74,0x73,
+	0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x6C,0x69,0x6E,0x65,
+	0x20,0x6E,0x75,0x6D,0x62,0x65,0x72,0x20,0x63,0x6F,0x6C,0x75,
+	0x6D,0x6E,0x2E,0x00,0x12,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,
+	0x43,0x30,0x30,0x31,0x53,0x63,0x6F,0x70,0x65,0x73,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,
+	0x22,0x53,0x74,0x64,0x2E,0x22,0x20,0x28,0x73,0x74,0x61,0x6E,
+	0x64,0x61,0x72,0x64,0x29,0x20,0x77,0x69,0x6C,0x6C,0x20,0x73,
+	0x68,0x6F,0x77,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x70,
+	0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x73,0x20,0x61,0x73,
+	0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,0x28,0x6C,0x69,0x6B,
+	0x65,0x20,0x46,0x54,0x32,0x29,0x2E,0x41,0x22,0x4C,0x69,0x6E,
+	0x65,0x64,0x22,0x20,0x77,0x69,0x6C,0x6C,0x20,0x64,0x72,0x61,
+	0x77,0x20,0x6C,0x69,0x6E,0x65,0x73,0x20,0x62,0x65,0x74,0x77,
+	0x65,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,0x70,0x6F,0x69,0x6E,
+	0x74,0x73,0x2C,0x20,0x6C,0x69,0x6B,0x65,0x20,0x61,0x6E,0x20,
+	0x6F,0x73,0x63,0x69,0x6C,0x6C,0x6F,0x73,0x63,0x6F,0x70,0x65,
+	0x2E,0x00,0x27,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,
+	0x31,0x43,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,
+	0x6F,0x6E,0x2C,0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,
+	0x6E,0x65,0x6F,0x75,0x73,0x3A,0x01,0x3E,0x15,0x3E,0x40,0x58,
+	0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x56,0x53,0x79,0x6E,
+	0x63,0x20,0x6F,0x66,0x66,0x3A,0x0B,0x3E,0x40,0x58,0x30,0x36,
+	0x30,0x40,0x43,0x30,0x30,0x32,0x3F,0x54,0x65,0x6C,0x6C,0x73,
+	0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
+	0x20,0x74,0x6F,0x20,0x6E,0x6F,0x74,0x20,0x75,0x73,0x65,0x20,
+	0x56,0x53,0x79,0x6E,0x63,0x20,0x66,0x6F,0x72,0x20,0x76,0x69,
+	0x64,0x65,0x6F,0x2E,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x72,
+	0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x40,0x72,
+	0x65,0x66,0x72,0x65,0x73,0x68,0x20,0x72,0x61,0x74,0x65,0x20,
+	0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x36,0x30,0x48,0x7A,0x20,
+	0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,0x2C,0x20,0x74,
+	0x68,0x65,0x6E,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x69,0x73,
+	0x20,0x61,0x6C,0x77,0x61,0x79,0x73,0x20,0x6F,0x66,0x66,0x20,
+	0x66,0x6F,0x72,0x45,0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,
+	0x67,0x72,0x61,0x6D,0x2E,0x20,0x4E,0x6F,0x74,0x20,0x68,0x61,
+	0x76,0x69,0x6E,0x67,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x77,
+	0x69,0x6C,0x6C,0x20,0x72,0x65,0x73,0x75,0x6C,0x74,0x20,0x69,
+	0x6E,0x20,0x6C,0x65,0x73,0x73,0x20,0x69,0x6E,0x70,0x75,0x74,
+	0x2F,0x76,0x69,0x64,0x65,0x6F,0x20,0x64,0x65,0x6C,0x61,0x79,
+	0x2C,0x1E,0x62,0x75,0x74,0x20,0x61,0x6C,0x73,0x6F,0x20,0x70,
+	0x6F,0x74,0x65,0x6E,0x74,0x69,0x61,0x6C,0x20,0x73,0x74,0x75,
+	0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x2E,0x01,0x20,0x18,0x3E,
+	0x40,0x58,0x30,0x34,0x30,0x40,0x43,0x30,0x30,0x31,0x50,0x69,
+	0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x3A,0x0B,
+	0x3E,0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x43,
+	0x41,0x70,0x70,0x6C,0x69,0x65,0x73,0x20,0x61,0x20,0x73,0x75,
+	0x62,0x70,0x69,0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,
+	0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x73,0x20,0x75,0x73,
+	0x65,0x64,0x20,0x77,0x68,0x65,0x6E,0x20,0x74,0x68,0x65,0x20,
+	0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x69,0x73,0x20,0x75,0x70,
+	0x73,0x63,0x61,0x6C,0x65,0x64,0x2E,0x43,0x54,0x68,0x69,0x73,
+	0x20,0x61,0x6C,0x73,0x6F,0x20,0x6D,0x61,0x6B,0x65,0x73,0x20,
+	0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x6D,
+	0x6F,0x64,0x65,0x20,0x63,0x6F,0x6D,0x70,0x6C,0x65,0x74,0x65,
+	0x6C,0x79,0x20,0x73,0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x6F,
+	0x75,0x74,0x20,0x69,0x66,0x20,0x69,0x74,0x20,0x64,0x69,0x64,
+	0x6E,0x27,0x74,0x44,0x61,0x6C,0x72,0x65,0x61,0x64,0x79,0x2E,
+	0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x6B,0x65,0x65,0x70,
+	0x20,0x69,0x6E,0x20,0x6D,0x69,0x6E,0x64,0x20,0x74,0x68,0x61,
+	0x74,0x20,0x74,0x68,0x69,0x73,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x6D,0x61,0x6B,0x65,0x20,0x70,0x69,0x78,0x65,0x6C,0x73,0x20,
+	0x6C,0x6F,0x6F,0x6B,0x20,0x62,0x6C,0x75,0x72,0x72,0x79,0x2E,
+	0x00,0x23,0x40,0x58,0x30,0x32,0x30,0x40,0x43,0x30,0x30,0x31,
+	0x41,0x64,0x76,0x61,0x6E,0x63,0x65,0x64,0x20,0x65,0x64,0x69,
+	0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x3A,
+	0x20,0x01,0x3E,0x1E,0x3E,0x40,0x58,0x30,0x34,0x30,0x40,0x43,
+	0x30,0x30,0x31,0x43,0x6F,0x70,0x79,0x2F,0x50,0x61,0x73,0x74,
+	0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,0x67,0x3A,0x0B,0x3E,
+	0x40,0x58,0x30,0x36,0x30,0x40,0x43,0x30,0x30,0x32,0x37,0x54,
+	0x68,0x65,0x20,0x6D,0x61,0x73,0x6B,0x69,0x6E,0x67,0x20,0x69,
+	0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x66,0x6F,0x72,0x20,0x63,
+	0x6F,0x70,0x79,0x69,0x6E,0x67,0x2F,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x6F,0x6E,0x6C,0x79,0x20,0x70,0x61,0x72,0x74,
+	0x73,0x20,0x6F,0x66,0x20,0x61,0x46,0x22,0x6E,0x6F,0x74,0x65,
+	0x2D,0x63,0x65,0x6C,0x6C,0x22,0x2E,0x20,0x54,0x68,0x65,0x20,
+	0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6E,0x74,0x20,0x70,0x61,
+	0x72,0x74,0x73,0x20,0x6F,0x66,0x20,0x61,0x20,0x22,0x6E,0x6F,
+	0x74,0x65,0x2D,0x63,0x65,0x6C,0x6C,0x22,0x20,0x69,0x73,0x20,
+	0x4E,0x6F,0x74,0x65,0x2C,0x20,0x49,0x6E,0x73,0x74,0x72,0x2E,
+	0x20,0x6E,0x72,0x2E,0x2C,0x20,0x56,0x6F,0x6C,0x75,0x6D,0x65,
+	0x2C,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,0x6E,0x72,0x20,
+	0x26,0x20,0x45,0x66,0x66,0x65,0x63,0x74,0x20,0x64,0x61,0x74,
+	0x61,0x2E,0x34,0x3E,0x41,0x73,0x20,0x79,0x6F,0x75,0x20,0x63,
+	0x61,0x6E,0x20,0x73,0x65,0x65,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x77,0x69,0x6E,0x64,0x6F,0x77,0x20,0x74,0x68,0x65,
+	0x72,0x65,0x20,0x61,0x72,0x65,0x20,0x33,0x20,0x63,0x6F,0x6C,
+	0x75,0x6D,0x6E,0x73,0x20,0x6F,0x66,0x3D,0x22,0x65,0x6E,0x61,
+	0x62,0x6C,0x65,0x2F,0x64,0x69,0x73,0x61,0x62,0x6C,0x65,0x20,
+	0x62,0x75,0x74,0x74,0x6F,0x6E,0x73,0x22,0x20,0x77,0x68,0x69,
+	0x63,0x68,0x20,0x68,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x6C,
+	0x65,0x74,0x74,0x65,0x72,0x73,0x20,0x43,0x2C,0x50,0x20,0x26,
+	0x20,0x54,0x20,0x61,0x62,0x6F,0x76,0x65,0x2E,0x45,0x3E,0x43,
+	0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x63,0x6F,0x70,0x79,0x2C,
+	0x20,0x69,0x74,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x73,
+	0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,0x72,0x74,0x73,
+	0x20,0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,0x73,0x20,0x69,
+	0x6E,0x74,0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x70,0x79,
+	0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x3E,0x3E,0x50,0x20,0x6D,
+	0x65,0x61,0x6E,0x73,0x20,0x70,0x61,0x73,0x74,0x65,0x20,0x61,
+	0x6E,0x64,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x73,0x20,
+	0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x61,0x72,0x74,0x73,0x20,
+	0x74,0x68,0x61,0x74,0x20,0x67,0x6F,0x65,0x73,0x20,0x6F,0x75,
+	0x74,0x20,0x66,0x72,0x6F,0x6D,0x20,0x74,0x68,0x65,0x0B,0x63,
+	0x6F,0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x45,0x3E,
+	0x54,0x20,0x6D,0x65,0x61,0x6E,0x73,0x20,0x74,0x72,0x61,0x6E,
+	0x73,0x70,0x61,0x72,0x65,0x6E,0x63,0x79,0x2E,0x20,0x49,0x66,
+	0x20,0x69,0x74,0x27,0x73,0x20,0x65,0x6E,0x61,0x62,0x6C,0x65,
+	0x64,0x2C,0x20,0x74,0x68,0x65,0x20,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x64,0x6F,0x65,0x73,0x6E,0x27,0x74,0x20,0x6F,
+	0x76,0x65,0x72,0x77,0x72,0x69,0x74,0x65,0x3D,0x64,0x61,0x74,
+	0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6E,0x69,0x6C,0x2D,0x69,
+	0x6E,0x66,0x6F,0x72,0x6D,0x61,0x74,0x69,0x6F,0x6E,0x2C,0x20,
+	0x6F,0x6E,0x6C,0x79,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x20,
+	0x6E,0x6F,0x74,0x65,0x20,0x6F,0x72,0x20,0x61,0x20,0x6E,0x75,
+	0x6D,0x62,0x65,0x72,0x20,0x3C,0x3E,0x20,0x30,0x2E,0x01,0x3E,
+	0x40,0x3E,0x54,0x68,0x65,0x20,0x63,0x75,0x74,0x20,0x66,0x75,
+	0x6E,0x63,0x74,0x69,0x6F,0x6E,0x73,0x20,0x77,0x6F,0x72,0x6B,
+	0x73,0x20,0x6C,0x69,0x6B,0x65,0x20,0x70,0x61,0x73,0x74,0x69,
+	0x6E,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x7A,0x65,0x72,0x6F,
+	0x2D,0x64,0x61,0x74,0x61,0x2E,0x20,0x54,0x68,0x69,0x73,0x20,
+	0x6D,0x65,0x61,0x6E,0x73,0x3B,0x74,0x68,0x61,0x74,0x20,0x74,
+	0x68,0x65,0x20,0x63,0x75,0x74,0x74,0x69,0x6E,0x67,0x20,0x69,
+	0x73,0x20,0x63,0x6F,0x6E,0x74,0x72,0x6F,0x6C,0x6C,0x65,0x64,
+	0x20,0x77,0x69,0x74,0x68,0x20,0x50,0x2D,0x63,0x6F,0x6C,0x75,
+	0x6D,0x6E,0x20,0x28,0x6F,0x72,0x20,0x54,0x2D,0x63,0x6F,0x6C,
+	0x75,0x6D,0x6E,0x29,0x2E,0x3C,0x3E,0x57,0x68,0x65,0x6E,0x20,
+	0x79,0x6F,0x75,0x20,0x63,0x6F,0x70,0x79,0x20,0x64,0x61,0x74,
+	0x61,0x20,0x77,0x69,0x74,0x68,0x20,0x6D,0x61,0x73,0x6B,0x69,
+	0x6E,0x67,0x2C,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x73,0x61,
+	0x62,0x6C,0x65,0x64,0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x61,
+	0x72,0x65,0x20,0x6E,0x6F,0x74,0x43,0x63,0x6C,0x65,0x61,0x72,
+	0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,
+	0x70,0x79,0x62,0x75,0x66,0x66,0x65,0x72,0x2E,0x20,0x28,0x4D,
+	0x61,0x6B,0x69,0x6E,0x67,0x20,0x69,0x74,0x20,0x70,0x6F,0x73,
+	0x73,0x69,0x62,0x6C,0x65,0x20,0x74,0x6F,0x20,0x63,0x6F,0x6C,
+	0x6C,0x65,0x63,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,
+	0x6F,0x6D,0x27,0x73,0x65,0x76,0x65,0x72,0x61,0x6C,0x20,0x6C,
+	0x6F,0x63,0x61,0x74,0x69,0x6F,0x6E,0x73,0x20,0x69,0x6E,0x74,
+	0x6F,0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x70,0x79,0x62,0x75,
+	0x66,0x66,0x65,0x72,0x2E,0x29,0x00,0x03,0x45,0x4E,0x44,0x4C,
+	0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0E,0x40,0x4C,
+	0x50,0x72,0x6F,0x62,0x6C,0x65,0x6D,0x73,0x2F,0x46,0x41,0x51,
+	0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x41,0x3E,0x40,0x43,0x30,
+	0x30,0x31,0x51,0x3A,0x20,0x43,0x61,0x6E,0x20,0x49,0x20,0x6D,
+	0x61,0x6B,0x65,0x20,0x66,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,
+	0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x73,0x74,0x72,0x65,
+	0x74,0x63,0x68,0x20,0x6F,0x75,0x74,0x20,0x74,0x68,0x65,0x20,
+	0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x63,0x72,0x65,0x65,0x6E,
+	0x3F,0x3A,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x45,
+	0x6E,0x61,0x62,0x6C,0x65,0x20,0x22,0x50,0x69,0x78,0x65,0x6C,
+	0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x22,0x20,0x69,0x6E,0x20,
+	0x43,0x6F,0x6E,0x66,0x69,0x67,0x20,0x2D,0x3E,0x20,0x4D,0x69,
+	0x73,0x63,0x65,0x6C,0x6C,0x61,0x6E,0x65,0x6F,0x75,0x73,0x2E,
+	0x4D,0x3E,0x40,0x58,0x30,0x33,0x35,0x49,0x74,0x20,0x77,0x6F,
+	0x6E,0x27,0x74,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x70,0x72,0x65,
+	0x74,0x74,0x79,0x2C,0x20,0x62,0x75,0x74,0x20,0x74,0x6F,0x20,
+	0x73,0x6F,0x6D,0x65,0x20,0x70,0x65,0x6F,0x70,0x6C,0x65,0x20,
+	0x69,0x74,0x27,0x73,0x20,0x6D,0x75,0x63,0x68,0x20,0x62,0x65,
+	0x74,0x74,0x65,0x72,0x20,0x74,0x68,0x61,0x6E,0x20,0x6E,0x6F,
+	0x74,0x68,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,
+	0x30,0x27,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x49,
+	0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x75,0x73,0x65,0x20,0x41,
+	0x4C,0x54,0x2B,0x46,0x34,0x20,0x61,0x6E,0x64,0x20,0x41,0x4C,
+	0x54,0x2B,0x46,0x35,0x21,0x4E,0x3E,0x40,0x43,0x30,0x30,0x32,
+	0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,0x3A,0x20,
+	0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x68,0x61,0x76,0x65,0x20,
+	0x47,0x65,0x46,0x6F,0x72,0x63,0x65,0x20,0x45,0x78,0x70,0x65,
+	0x72,0x69,0x65,0x6E,0x63,0x65,0x20,0x69,0x6E,0x73,0x74,0x61,
+	0x6C,0x6C,0x65,0x64,0x2C,0x20,0x79,0x6F,0x75,0x20,0x6E,0x65,
+	0x65,0x64,0x20,0x74,0x6F,0x20,0x63,0x68,0x61,0x6E,0x67,0x65,
+	0x2B,0x3E,0x40,0x58,0x30,0x33,0x35,0x74,0x68,0x65,0x20,0x6B,
+	0x65,0x79,0x62,0x69,0x6E,0x64,0x69,0x6E,0x67,0x73,0x20,0x69,
+	0x6E,0x20,0x69,0x74,0x73,0x20,0x73,0x65,0x74,0x74,0x69,0x6E,
+	0x67,0x73,0x20,0x70,0x61,0x67,0x65,0x2E,0x56,0x6D,0x61,0x63,
+	0x4F,0x53,0x2F,0x4F,0x53,0x20,0x58,0x3A,0x20,0x43,0x68,0x61,
+	0x6E,0x67,0x65,0x20,0x41,0x4C,0x54,0x2B,0x46,0x34,0x2F,0x41,
+	0x4C,0x54,0x2B,0x46,0x35,0x20,0x6B,0x65,0x79,0x73,0x20,0x69,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,0x74,0x6F,0x20,
+	0x73,0x6F,0x6D,0x65,0x74,0x68,0x69,0x6E,0x67,0x20,0x65,0x6C,
+	0x73,0x65,0x2E,0x20,0x41,0x6C,0x73,0x6F,0x20,0x66,0x6F,0x72,
+	0x20,0x47,0x4E,0x55,0x2F,0x4C,0x69,0x6E,0x75,0x78,0x2E,0x06,
+	0x3E,0x40,0x58,0x30,0x32,0x30,0x2B,0x3E,0x40,0x43,0x30,0x30,
+	0x31,0x51,0x3A,0x20,0x54,0x68,0x65,0x20,0x6D,0x6F,0x75,0x73,
+	0x65,0x20,0x63,0x75,0x72,0x73,0x6F,0x72,0x20,0x69,0x73,0x20,
+	0x64,0x65,0x6C,0x61,0x79,0x65,0x64,0x2F,0x6C,0x61,0x67,0x67,
+	0x79,0x21,0x44,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,
+	0x4D,0x61,0x6B,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x22,0x53,
+	0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x6D,0x6F,0x75,0x73,
+	0x65,0x22,0x20,0x69,0x73,0x20,0x64,0x69,0x73,0x61,0x62,0x6C,
+	0x65,0x64,0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,
+	0x20,0x2D,0x3E,0x20,0x4C,0x61,0x79,0x6F,0x75,0x74,0x2E,0x4B,
+	0x3E,0x40,0x58,0x30,0x33,0x35,0x41,0x6C,0x74,0x65,0x72,0x6E,
+	0x61,0x74,0x69,0x76,0x65,0x6C,0x79,0x2C,0x20,0x79,0x6F,0x75,
+	0x20,0x63,0x61,0x6E,0x20,0x65,0x6E,0x61,0x62,0x6C,0x65,0x20,
+	0x22,0x56,0x53,0x79,0x6E,0x63,0x20,0x6F,0x66,0x66,0x22,0x20,
+	0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,0x20,0x2D,0x3E,
+	0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,0x6E,0x65,0x6F,
+	0x75,0x73,0x2E,0x46,0x3E,0x54,0x68,0x69,0x73,0x20,0x68,0x6F,
+	0x77,0x65,0x76,0x65,0x72,0x2C,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x69,0x6E,0x74,0x72,0x6F,0x64,0x75,0x63,0x65,0x20,0x73,0x74,
+	0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,0x20,0x62,0x65,0x63,
+	0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x6E,
+	0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x72,0x61,0x74,0x65,0x20,
+	0x69,0x73,0x22,0x3E,0x6E,0x6F,0x74,0x20,0x65,0x78,0x61,0x63,
+	0x74,0x20,0x74,0x6F,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,
+	0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x20,0x72,0x61,0x74,0x65,
+	0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x33,0x3E,0x40,0x43,
+	0x30,0x30,0x31,0x51,0x3A,0x20,0x57,0x69,0x6C,0x6C,0x20,0x79,
+	0x6F,0x75,0x20,0x69,0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,
+	0x20,0x4D,0x49,0x44,0x49,0x20,0x6F,0x75,0x74,0x20,0x66,0x75,
+	0x6E,0x63,0x74,0x69,0x6F,0x6E,0x61,0x6C,0x69,0x74,0x79,0x3F,
+	0x4D,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x4E,0x6F,
+	0x2C,0x20,0x73,0x6F,0x72,0x72,0x79,0x2E,0x20,0x54,0x68,0x69,
+	0x73,0x20,0x69,0x73,0x20,0x76,0x65,0x72,0x79,0x20,0x64,0x69,
+	0x66,0x66,0x69,0x63,0x75,0x6C,0x74,0x20,0x74,0x6F,0x20,0x69,
+	0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,0x20,0x63,0x6F,0x72,
+	0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x77,0x68,0x65,0x6E,0x20,
+	0x68,0x61,0x76,0x69,0x6E,0x67,0x3C,0x3E,0x40,0x58,0x30,0x33,
+	0x35,0x68,0x69,0x67,0x68,0x65,0x72,0x20,0x61,0x75,0x64,0x69,
+	0x6F,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x73,0x69,0x7A,
+	0x65,0x73,0x20,0x28,0x62,0x75,0x66,0x66,0x65,0x72,0x65,0x64,
+	0x20,0x72,0x65,0x70,0x6C,0x61,0x79,0x65,0x72,0x20,0x74,0x69,
+	0x63,0x6B,0x73,0x29,0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,0x30,
+	0x32,0x30,0x30,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,
+	0x57,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x74,0x68,0x65,
+	0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,
+	0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x73,0x74,0x6F,0x72,
+	0x65,0x64,0x3F,0x3F,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,
+	0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,0x3A,0x20,0x5C,0x55,
+	0x73,0x65,0x72,0x73,0x5C,0x55,0x53,0x45,0x52,0x5C,0x41,0x70,
+	0x70,0x44,0x61,0x74,0x61,0x5C,0x52,0x6F,0x61,0x6D,0x69,0x6E,
+	0x67,0x5C,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x5C,
+	0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x45,0x3E,0x40,0x58,0x30,
+	0x33,0x35,0x4F,0x53,0x20,0x58,0x3A,0x20,0x2F,0x55,0x73,0x65,
+	0x72,0x73,0x2F,0x55,0x53,0x45,0x52,0x2F,0x4C,0x69,0x62,0x72,
+	0x61,0x72,0x79,0x2F,0x41,0x70,0x70,0x6C,0x69,0x63,0x61,0x74,
+	0x69,0x6F,0x6E,0x20,0x53,0x75,0x70,0x70,0x6F,0x72,0x74,0x2F,
+	0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x2F,0x46,0x54,
+	0x32,0x2E,0x43,0x46,0x47,0x2F,0x47,0x4E,0x55,0x2F,0x4C,0x69,
+	0x6E,0x75,0x78,0x3A,0x20,0x2F,0x68,0x6F,0x6D,0x65,0x2F,0x55,
+	0x53,0x45,0x52,0x2F,0x2E,0x63,0x6F,0x6E,0x66,0x69,0x67,0x2F,
+	0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x2F,0x46,0x54,
+	0x32,0x2E,0x43,0x46,0x47,0x01,0x3E,0x48,0x49,0x74,0x20,0x77,
+	0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x73,0x74,0x6F,0x72,0x65,
+	0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,
+	0x67,0x72,0x61,0x6D,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,
+	0x72,0x79,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x70,0x61,
+	0x74,0x68,0x20,0x63,0x6F,0x75,0x6C,0x64,0x6E,0x27,0x74,0x20,
+	0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,0x4D,0x49,0x66,0x20,
+	0x79,0x6F,0x75,0x20,0x70,0x75,0x74,0x20,0x74,0x68,0x65,0x20,
+	0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,0x61,0x74,0x69,0x6F,
+	0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x64,0x69,
+	0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x2C,0x20,0x69,0x74,0x20,
+	0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x61,0x64,0x20,0x74,0x68,
+	0x61,0x74,0x4A,0x6F,0x6E,0x65,0x20,0x61,0x6E,0x64,0x20,0x6E,
+	0x6F,0x74,0x20,0x61,0x74,0x74,0x65,0x6D,0x70,0x74,0x20,0x74,
+	0x6F,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x63,0x6F,0x6E,
+	0x66,0x69,0x67,0x20,0x64,0x69,0x72,0x73,0x20,0x66,0x6F,0x72,
+	0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,0x75,0x73,0x65,0x72,
+	0x2E,0x20,0x28,0x70,0x6F,0x72,0x74,0x61,0x62,0x6C,0x65,0x20,
+	0x6D,0x6F,0x64,0x65,0x29,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,
+	0x42,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x43,0x61,
+	0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6C,0x6F,0x6E,0x65,0x20,
+	0x72,0x65,0x61,0x64,0x20,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,
+	0x20,0x66,0x72,0x6F,0x6D,0x20,0x72,0x65,0x61,0x6C,0x20,0x46,
+	0x54,0x32,0x2C,0x20,0x61,0x6E,0x64,0x20,0x76,0x69,0x63,0x65,
+	0x20,0x76,0x65,0x72,0x73,0x61,0x3F,0x4C,0x3E,0x40,0x43,0x30,
+	0x30,0x32,0x41,0x3A,0x20,0x59,0x65,0x73,0x2C,0x20,0x69,0x74,
+	0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,0x77,0x6F,0x72,0x6B,
+	0x20,0x6A,0x75,0x73,0x74,0x20,0x66,0x69,0x6E,0x65,0x2E,0x20,
+	0x50,0x75,0x74,0x20,0x69,0x74,0x20,0x69,0x6E,0x20,0x74,0x68,
+	0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x20,
+	0x73,0x68,0x6F,0x77,0x6E,0x20,0x61,0x62,0x6F,0x76,0x65,0x2E,
+	0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x52,0x3E,0x40,0x43,0x30,
+	0x30,0x31,0x51,0x3A,0x20,0x53,0x6D,0x70,0x2E,0x20,0x45,0x64,
+	0x2E,0x3A,0x20,0x57,0x68,0x69,0x6C,0x65,0x20,0x7A,0x6F,0x6F,
+	0x6D,0x69,0x6E,0x67,0x20,0x69,0x6E,0x2C,0x20,0x49,0x20,0x73,
+	0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,0x20,0x63,0x61,0x6E,
+	0x27,0x74,0x20,0x6D,0x61,0x72,0x6B,0x20,0x74,0x68,0x65,0x20,
+	0x6C,0x61,0x73,0x74,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,
+	0x70,0x6F,0x69,0x6E,0x74,0x21,0x47,0x3E,0x40,0x43,0x30,0x30,
+	0x32,0x41,0x3A,0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,
+	0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x20,0x54,0x68,0x69,0x73,
+	0x20,0x69,0x73,0x20,0x61,0x20,0x6C,0x69,0x6D,0x69,0x74,0x61,
+	0x74,0x69,0x6F,0x6E,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,
+	0x6E,0x61,0x74,0x75,0x72,0x65,0x20,0x6F,0x66,0x20,0x73,0x63,
+	0x61,0x6C,0x69,0x6E,0x67,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,
+	0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x49,
+	0x20,0x66,0x6F,0x75,0x6E,0x64,0x20,0x61,0x20,0x62,0x75,0x67,
+	0x21,0x4C,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x50,
+	0x6C,0x65,0x61,0x73,0x65,0x20,0x73,0x65,0x6E,0x64,0x20,0x6D,
+	0x65,0x20,0x61,0x20,0x6D,0x61,0x69,0x6C,0x20,0x28,0x66,0x6F,
+	0x75,0x6E,0x64,0x20,0x61,0x74,0x20,0x31,0x36,0x2D,0x62,0x69,
+	0x74,0x73,0x2E,0x6F,0x72,0x67,0x29,0x20,0x61,0x6E,0x64,0x20,
+	0x74,0x72,0x79,0x20,0x74,0x6F,0x20,0x65,0x78,0x70,0x6C,0x61,
+	0x69,0x6E,0x20,0x69,0x74,0x2E,0x00,0x03,0x45,0x4E,0x44,0x4C,
+	0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x0E,0x40,0x4C,0x50,0x72,0x6F,0x62,0x6C,0x65,0x6D,0x73,
-	0x2F,0x46,0x41,0x51,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x41,
-	0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x43,0x61,0x6E,
-	0x20,0x49,0x20,0x6D,0x61,0x6B,0x65,0x20,0x66,0x75,0x6C,0x6C,
-	0x73,0x63,0x72,0x65,0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,
-	0x73,0x74,0x72,0x65,0x74,0x63,0x68,0x20,0x6F,0x75,0x74,0x20,
-	0x74,0x68,0x65,0x20,0x77,0x68,0x6F,0x6C,0x65,0x20,0x73,0x63,
-	0x72,0x65,0x65,0x6E,0x3F,0x3A,0x3E,0x40,0x43,0x30,0x30,0x32,
-	0x41,0x3A,0x20,0x45,0x6E,0x61,0x62,0x6C,0x65,0x20,0x22,0x50,
-	0x69,0x78,0x65,0x6C,0x20,0x66,0x69,0x6C,0x74,0x65,0x72,0x22,
-	0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,0x67,0x20,0x2D,
-	0x3E,0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,0x61,0x6E,0x65,
-	0x6F,0x75,0x73,0x2E,0x4D,0x3E,0x40,0x58,0x30,0x33,0x35,0x49,
-	0x74,0x20,0x77,0x6F,0x6E,0x27,0x74,0x20,0x6C,0x6F,0x6F,0x6B,
-	0x20,0x70,0x72,0x65,0x74,0x74,0x79,0x2C,0x20,0x62,0x75,0x74,
-	0x20,0x74,0x6F,0x20,0x73,0x6F,0x6D,0x65,0x20,0x70,0x65,0x6F,
-	0x70,0x6C,0x65,0x20,0x69,0x74,0x27,0x73,0x20,0x6D,0x75,0x63,
-	0x68,0x20,0x62,0x65,0x74,0x74,0x65,0x72,0x20,0x74,0x68,0x61,
-	0x6E,0x20,0x6E,0x6F,0x74,0x68,0x69,0x6E,0x67,0x2E,0x06,0x3E,
-	0x40,0x58,0x30,0x32,0x30,0x27,0x3E,0x40,0x43,0x30,0x30,0x31,
-	0x51,0x3A,0x20,0x49,0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x75,
-	0x73,0x65,0x20,0x41,0x4C,0x54,0x2B,0x46,0x34,0x20,0x61,0x6E,
-	0x64,0x20,0x41,0x4C,0x54,0x2B,0x46,0x35,0x21,0x4E,0x3E,0x40,
-	0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,
-	0x77,0x73,0x3A,0x20,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x68,
-	0x61,0x76,0x65,0x20,0x47,0x65,0x46,0x6F,0x72,0x63,0x65,0x20,
-	0x45,0x78,0x70,0x65,0x72,0x69,0x65,0x6E,0x63,0x65,0x20,0x69,
-	0x6E,0x73,0x74,0x61,0x6C,0x6C,0x65,0x64,0x2C,0x20,0x79,0x6F,
-	0x75,0x20,0x6E,0x65,0x65,0x64,0x20,0x74,0x6F,0x20,0x63,0x68,
-	0x61,0x6E,0x67,0x65,0x2B,0x3E,0x40,0x58,0x30,0x33,0x35,0x74,
-	0x68,0x65,0x20,0x6B,0x65,0x79,0x62,0x69,0x6E,0x64,0x69,0x6E,
-	0x67,0x73,0x20,0x69,0x6E,0x20,0x69,0x74,0x73,0x20,0x73,0x65,
-	0x74,0x74,0x69,0x6E,0x67,0x73,0x20,0x70,0x61,0x67,0x65,0x2E,
-	0x56,0x6D,0x61,0x63,0x4F,0x53,0x2F,0x4F,0x53,0x20,0x58,0x3A,
-	0x20,0x43,0x68,0x61,0x6E,0x67,0x65,0x20,0x41,0x4C,0x54,0x2B,
-	0x46,0x34,0x2F,0x41,0x4C,0x54,0x2B,0x46,0x35,0x20,0x6B,0x65,
-	0x79,0x73,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,
-	0x20,0x74,0x6F,0x20,0x73,0x6F,0x6D,0x65,0x74,0x68,0x69,0x6E,
-	0x67,0x20,0x65,0x6C,0x73,0x65,0x2E,0x20,0x41,0x6C,0x73,0x6F,
-	0x20,0x66,0x6F,0x72,0x20,0x47,0x4E,0x55,0x2F,0x4C,0x69,0x6E,
-	0x75,0x78,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x2B,0x3E,
-	0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x54,0x68,0x65,0x20,
-	0x6D,0x6F,0x75,0x73,0x65,0x20,0x63,0x75,0x72,0x73,0x6F,0x72,
-	0x20,0x69,0x73,0x20,0x64,0x65,0x6C,0x61,0x79,0x65,0x64,0x2F,
-	0x6C,0x61,0x67,0x67,0x79,0x21,0x44,0x3E,0x40,0x43,0x30,0x30,
-	0x32,0x41,0x3A,0x20,0x4D,0x61,0x6B,0x65,0x20,0x73,0x75,0x72,
-	0x65,0x20,0x22,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x20,
-	0x6D,0x6F,0x75,0x73,0x65,0x22,0x20,0x69,0x73,0x20,0x64,0x69,
-	0x73,0x61,0x62,0x6C,0x65,0x64,0x20,0x69,0x6E,0x20,0x43,0x6F,
-	0x6E,0x66,0x69,0x67,0x20,0x2D,0x3E,0x20,0x4C,0x61,0x79,0x6F,
-	0x75,0x74,0x2E,0x4B,0x3E,0x40,0x58,0x30,0x33,0x35,0x41,0x6C,
-	0x74,0x65,0x72,0x6E,0x61,0x74,0x69,0x76,0x65,0x6C,0x79,0x2C,
-	0x20,0x79,0x6F,0x75,0x20,0x63,0x61,0x6E,0x20,0x65,0x6E,0x61,
-	0x62,0x6C,0x65,0x20,0x22,0x56,0x53,0x79,0x6E,0x63,0x20,0x6F,
-	0x66,0x66,0x22,0x20,0x69,0x6E,0x20,0x43,0x6F,0x6E,0x66,0x69,
-	0x67,0x20,0x2D,0x3E,0x20,0x4D,0x69,0x73,0x63,0x65,0x6C,0x6C,
-	0x61,0x6E,0x65,0x6F,0x75,0x73,0x2E,0x46,0x3E,0x54,0x68,0x69,
-	0x73,0x20,0x68,0x6F,0x77,0x65,0x76,0x65,0x72,0x2C,0x20,0x77,
-	0x69,0x6C,0x6C,0x20,0x69,0x6E,0x74,0x72,0x6F,0x64,0x75,0x63,
-	0x65,0x20,0x73,0x74,0x75,0x74,0x74,0x65,0x72,0x69,0x6E,0x67,
-	0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,
-	0x20,0x72,0x65,0x6E,0x64,0x65,0x72,0x69,0x6E,0x67,0x20,0x72,
-	0x61,0x74,0x65,0x20,0x69,0x73,0x22,0x3E,0x6E,0x6F,0x74,0x20,
-	0x65,0x78,0x61,0x63,0x74,0x20,0x74,0x6F,0x20,0x79,0x6F,0x75,
-	0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x27,0x73,0x20,
-	0x72,0x61,0x74,0x65,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,
-	0x33,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x57,0x69,
-	0x6C,0x6C,0x20,0x79,0x6F,0x75,0x20,0x69,0x6D,0x70,0x6C,0x65,
-	0x6D,0x65,0x6E,0x74,0x20,0x4D,0x49,0x44,0x49,0x20,0x6F,0x75,
-	0x74,0x20,0x66,0x75,0x6E,0x63,0x74,0x69,0x6F,0x6E,0x61,0x6C,
-	0x69,0x74,0x79,0x3F,0x4D,0x3E,0x40,0x43,0x30,0x30,0x32,0x41,
-	0x3A,0x20,0x4E,0x6F,0x2C,0x20,0x73,0x6F,0x72,0x72,0x79,0x2E,
-	0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x76,0x65,0x72,
-	0x79,0x20,0x64,0x69,0x66,0x66,0x69,0x63,0x75,0x6C,0x74,0x20,
-	0x74,0x6F,0x20,0x69,0x6D,0x70,0x6C,0x65,0x6D,0x65,0x6E,0x74,
-	0x20,0x63,0x6F,0x72,0x72,0x65,0x63,0x74,0x6C,0x79,0x20,0x77,
-	0x68,0x65,0x6E,0x20,0x68,0x61,0x76,0x69,0x6E,0x67,0x3C,0x3E,
-	0x40,0x58,0x30,0x33,0x35,0x68,0x69,0x67,0x68,0x65,0x72,0x20,
-	0x61,0x75,0x64,0x69,0x6F,0x20,0x62,0x75,0x66,0x66,0x65,0x72,
-	0x20,0x73,0x69,0x7A,0x65,0x73,0x20,0x28,0x62,0x75,0x66,0x66,
-	0x65,0x72,0x65,0x64,0x20,0x72,0x65,0x70,0x6C,0x61,0x79,0x65,
-	0x72,0x20,0x74,0x69,0x63,0x6B,0x73,0x29,0x2E,0x2E,0x2E,0x06,
-	0x3E,0x40,0x58,0x30,0x32,0x30,0x30,0x3E,0x40,0x43,0x30,0x30,
-	0x31,0x51,0x3A,0x20,0x57,0x68,0x65,0x72,0x65,0x20,0x69,0x73,
-	0x20,0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,
-	0x72,0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,
-	0x73,0x74,0x6F,0x72,0x65,0x64,0x3F,0x3F,0x3E,0x40,0x43,0x30,
-	0x30,0x32,0x41,0x3A,0x20,0x57,0x69,0x6E,0x64,0x6F,0x77,0x73,
-	0x3A,0x20,0x5C,0x55,0x73,0x65,0x72,0x73,0x5C,0x55,0x53,0x45,
-	0x52,0x5C,0x41,0x70,0x70,0x44,0x61,0x74,0x61,0x5C,0x52,0x6F,
-	0x61,0x6D,0x69,0x6E,0x67,0x5C,0x46,0x54,0x32,0x20,0x63,0x6C,
-	0x6F,0x6E,0x65,0x5C,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x45,
-	0x3E,0x40,0x58,0x30,0x33,0x35,0x4F,0x53,0x20,0x58,0x3A,0x20,
-	0x2F,0x55,0x73,0x65,0x72,0x73,0x2F,0x55,0x53,0x45,0x52,0x2F,
-	0x4C,0x69,0x62,0x72,0x61,0x72,0x79,0x2F,0x41,0x70,0x70,0x6C,
-	0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x20,0x53,0x75,0x70,0x70,
-	0x6F,0x72,0x74,0x2F,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,
-	0x65,0x2F,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x2F,0x47,0x4E,
-	0x55,0x2F,0x4C,0x69,0x6E,0x75,0x78,0x3A,0x20,0x2F,0x68,0x6F,
-	0x6D,0x65,0x2F,0x55,0x53,0x45,0x52,0x2F,0x2E,0x63,0x6F,0x6E,
-	0x66,0x69,0x67,0x2F,0x46,0x54,0x32,0x20,0x63,0x6C,0x6F,0x6E,
-	0x65,0x2F,0x46,0x54,0x32,0x2E,0x43,0x46,0x47,0x01,0x3E,0x48,
-	0x49,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x62,0x65,0x20,0x73,
-	0x74,0x6F,0x72,0x65,0x64,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,
-	0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x64,0x69,0x72,
-	0x65,0x63,0x74,0x6F,0x72,0x79,0x20,0x69,0x66,0x20,0x74,0x68,
-	0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x63,0x6F,0x75,0x6C,0x64,
-	0x6E,0x27,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x2E,
-	0x4D,0x49,0x66,0x20,0x79,0x6F,0x75,0x20,0x70,0x75,0x74,0x20,
-	0x74,0x68,0x65,0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x75,0x72,
-	0x61,0x74,0x69,0x6F,0x6E,0x20,0x66,0x69,0x6C,0x65,0x20,0x69,
-	0x6E,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,
-	0x6D,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x2C,
-	0x20,0x69,0x74,0x20,0x77,0x69,0x6C,0x6C,0x20,0x72,0x65,0x61,
-	0x64,0x20,0x74,0x68,0x61,0x74,0x4A,0x6F,0x6E,0x65,0x20,0x61,
-	0x6E,0x64,0x20,0x6E,0x6F,0x74,0x20,0x61,0x74,0x74,0x65,0x6D,
-	0x70,0x74,0x20,0x74,0x6F,0x20,0x63,0x72,0x65,0x61,0x74,0x65,
-	0x20,0x63,0x6F,0x6E,0x66,0x69,0x67,0x20,0x64,0x69,0x72,0x73,
-	0x20,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x20,0x4F,0x53,0x20,
-	0x75,0x73,0x65,0x72,0x2E,0x20,0x28,0x70,0x6F,0x72,0x74,0x61,
-	0x62,0x6C,0x65,0x20,0x6D,0x6F,0x64,0x65,0x29,0x06,0x3E,0x40,
-	0x58,0x30,0x32,0x30,0x42,0x3E,0x40,0x43,0x30,0x30,0x31,0x51,
-	0x3A,0x20,0x43,0x61,0x6E,0x20,0x74,0x68,0x65,0x20,0x63,0x6C,
-	0x6F,0x6E,0x65,0x20,0x72,0x65,0x61,0x64,0x20,0x46,0x54,0x32,
-	0x2E,0x43,0x46,0x47,0x20,0x66,0x72,0x6F,0x6D,0x20,0x72,0x65,
-	0x61,0x6C,0x20,0x46,0x54,0x32,0x2C,0x20,0x61,0x6E,0x64,0x20,
-	0x76,0x69,0x63,0x65,0x20,0x76,0x65,0x72,0x73,0x61,0x3F,0x4C,
-	0x3E,0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x59,0x65,0x73,
-	0x2C,0x20,0x69,0x74,0x20,0x73,0x68,0x6F,0x75,0x6C,0x64,0x20,
-	0x77,0x6F,0x72,0x6B,0x20,0x6A,0x75,0x73,0x74,0x20,0x66,0x69,
-	0x6E,0x65,0x2E,0x20,0x50,0x75,0x74,0x20,0x69,0x74,0x20,0x69,
-	0x6E,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,
-	0x6F,0x72,0x79,0x20,0x73,0x68,0x6F,0x77,0x6E,0x20,0x61,0x62,
-	0x6F,0x76,0x65,0x2E,0x06,0x3E,0x40,0x58,0x30,0x32,0x30,0x52,
-	0x3E,0x40,0x43,0x30,0x30,0x31,0x51,0x3A,0x20,0x53,0x6D,0x70,
-	0x2E,0x20,0x45,0x64,0x2E,0x3A,0x20,0x57,0x68,0x69,0x6C,0x65,
-	0x20,0x7A,0x6F,0x6F,0x6D,0x69,0x6E,0x67,0x20,0x69,0x6E,0x2C,
-	0x20,0x49,0x20,0x73,0x6F,0x6D,0x65,0x74,0x69,0x6D,0x65,0x73,
-	0x20,0x63,0x61,0x6E,0x27,0x74,0x20,0x6D,0x61,0x72,0x6B,0x20,
-	0x74,0x68,0x65,0x20,0x6C,0x61,0x73,0x74,0x20,0x73,0x61,0x6D,
-	0x70,0x6C,0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x21,0x47,0x3E,
-	0x40,0x43,0x30,0x30,0x32,0x41,0x3A,0x20,0x54,0x68,0x69,0x73,
-	0x20,0x69,0x73,0x20,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x20,
-	0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x20,0x6C,0x69,
-	0x6D,0x69,0x74,0x61,0x74,0x69,0x6F,0x6E,0x20,0x69,0x6E,0x20,
-	0x74,0x68,0x65,0x20,0x6E,0x61,0x74,0x75,0x72,0x65,0x20,0x6F,
-	0x66,0x20,0x73,0x63,0x61,0x6C,0x69,0x6E,0x67,0x2E,0x06,0x3E,
-	0x40,0x58,0x30,0x32,0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,
-	0x51,0x3A,0x20,0x49,0x20,0x66,0x6F,0x75,0x6E,0x64,0x20,0x61,
-	0x20,0x62,0x75,0x67,0x21,0x4B,0x3E,0x40,0x43,0x30,0x30,0x32,
-	0x41,0x3A,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20,0x73,0x65,
-	0x6E,0x64,0x20,0x61,0x20,0x6D,0x61,0x69,0x6C,0x20,0x74,0x6F,
-	0x20,0x6F,0x6C,0x61,0x76,0x2E,0x73,0x6F,0x72,0x65,0x6E,0x73,
-	0x65,0x6E,0x40,0x6C,0x69,0x76,0x65,0x2E,0x6E,0x6F,0x20,0x61,
-	0x6E,0x64,0x20,0x74,0x72,0x79,0x20,0x74,0x6F,0x20,0x65,0x78,
-	0x70,0x6C,0x61,0x69,0x6E,0x20,0x69,0x74,0x2E,0x00,0x03,0x45,
-	0x4E,0x44,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
+	0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x4C,0x3B,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
 	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,
-	0x0C,0x40,0x4C,0x4B,0x6E,0x6F,0x77,0x6E,0x20,0x62,0x75,0x67,
-	0x73,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,0x14,0x3E,0x40,0x43,
-	0x30,0x30,0x31,0x53,0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,
-	0x69,0x74,0x6F,0x72,0x3A,0x06,0x3E,0x40,0x43,0x30,0x30,0x32,
-	0x4E,0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x57,0x68,0x65,
-	0x6E,0x20,0x61,0x20,0x6C,0x6F,0x6F,0x70,0x65,0x64,0x20,0x73,
-	0x61,0x6D,0x70,0x6C,0x65,0x20,0x69,0x73,0x20,0x7A,0x6F,0x6F,
-	0x6D,0x65,0x64,0x20,0x6F,0x75,0x74,0x20,0x69,0x6E,0x20,0x74,
-	0x68,0x65,0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x65,0x64,
-	0x69,0x74,0x6F,0x72,0x2C,0x20,0x79,0x6F,0x75,0x20,0x63,0x6F,
-	0x75,0x6C,0x64,0x20,0x73,0x65,0x65,0x4F,0x3E,0x40,0x58,0x30,
-	0x32,0x31,0x75,0x6E,0x65,0x78,0x70,0x65,0x63,0x74,0x65,0x64,
-	0x20,0x73,0x61,0x6D,0x70,0x6C,0x65,0x20,0x64,0x61,0x74,0x61,
-	0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x6C,0x6F,0x6F,0x70,
-	0x2D,0x65,0x6E,0x64,0x20,0x70,0x6F,0x69,0x6E,0x74,0x2E,0x20,
-	0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x62,0x65,0x63,0x61,
-	0x75,0x73,0x65,0x20,0x6F,0x66,0x20,0x61,0x20,0x6B,0x6C,0x75,
-	0x64,0x67,0x65,0x4B,0x66,0x6F,0x72,0x20,0x74,0x68,0x65,0x20,
-	0x72,0x65,0x73,0x61,0x6D,0x70,0x6C,0x69,0x6E,0x67,0x20,0x69,
-	0x6E,0x74,0x65,0x72,0x70,0x6F,0x6C,0x61,0x74,0x69,0x6F,0x6E,
-	0x20,0x74,0x6F,0x20,0x77,0x6F,0x72,0x6B,0x20,0x66,0x61,0x73,
-	0x74,0x65,0x72,0x20,0x69,0x6E,0x20,0x74,0x68,0x65,0x20,0x61,
-	0x75,0x64,0x69,0x6F,0x20,0x6D,0x69,0x78,0x65,0x72,0x2C,0x20,
-	0x61,0x6E,0x64,0x20,0x74,0x68,0x65,0x4B,0x6F,0x72,0x69,0x67,
-	0x69,0x6E,0x61,0x6C,0x20,0x46,0x54,0x32,0x20,0x68,0x61,0x73,
-	0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x70,0x72,
-	0x6F,0x62,0x6C,0x65,0x6D,0x2E,0x20,0x49,0x20,0x68,0x61,0x76,
-	0x65,0x20,0x6D,0x61,0x64,0x65,0x20,0x69,0x74,0x20,0x73,0x6F,
-	0x20,0x74,0x68,0x61,0x74,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,
-	0x20,0x7A,0x6F,0x6F,0x6D,0x20,0x69,0x6E,0x20,0x74,0x6F,0x3B,
-	0x73,0x65,0x65,0x20,0x74,0x68,0x65,0x20,0x69,0x6E,0x64,0x69,
-	0x76,0x69,0x64,0x75,0x61,0x6C,0x20,0x73,0x61,0x6D,0x70,0x6C,
-	0x65,0x20,0x70,0x6F,0x69,0x6E,0x74,0x73,0x2C,0x20,0x69,0x74,
-	0x20,0x77,0x69,0x6C,0x6C,0x20,0x6C,0x6F,0x6F,0x6B,0x20,0x6C,
-	0x69,0x6B,0x65,0x20,0x6E,0x6F,0x72,0x6D,0x61,0x6C,0x2E,0x06,
-	0x3E,0x40,0x58,0x30,0x31,0x30,0x17,0x3E,0x40,0x43,0x30,0x30,
-	0x31,0x4D,0x6F,0x75,0x73,0x65,0x20,0x2F,0x20,0x6B,0x65,0x79,
-	0x62,0x6F,0x61,0x72,0x64,0x3A,0x01,0x3E,0x43,0x3E,0x40,0x43,
-	0x30,0x30,0x32,0x2D,0x20,0x4C,0x69,0x6E,0x75,0x78,0x3A,0x20,
-	0x54,0x68,0x65,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x63,0x75,
-	0x72,0x73,0x6F,0x72,0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,
-	0x73,0x20,0x63,0x61,0x6E,0x20,0x62,0x65,0x20,0x67,0x6C,0x69,
-	0x74,0x63,0x68,0x79,0x20,0x61,0x74,0x20,0x74,0x69,0x6D,0x65,
-	0x73,0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,0x0C,
-	0x3E,0x40,0x43,0x30,0x30,0x31,0x56,0x69,0x64,0x65,0x6F,0x3A,
-	0x06,0x3E,0x40,0x43,0x30,0x30,0x32,0x50,0x3E,0x40,0x58,0x30,
-	0x31,0x30,0x2D,0x20,0x46,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,
-	0x65,0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x63,0x61,0x6E,0x20,
-	0x62,0x65,0x20,0x75,0x6E,0x62,0x65,0x61,0x72,0x61,0x62,0x6C,
-	0x79,0x20,0x73,0x6C,0x6F,0x77,0x20,0x6F,0x6E,0x20,0x61,0x20,
-	0x52,0x61,0x73,0x70,0x62,0x65,0x72,0x72,0x79,0x20,0x50,0x69,
-	0x20,0x28,0x65,0x76,0x65,0x6E,0x20,0x6F,0x6E,0x20,0x52,0x50,
-	0x69,0x20,0x34,0x29,0x01,0x3E,0x4A,0x3E,0x40,0x58,0x30,0x31,
-	0x30,0x2D,0x20,0x54,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,0x65,
-	0x73,0x20,0x63,0x61,0x6E,0x20,0x6D,0x69,0x6C,0x64,0x6C,0x79,
-	0x20,0x66,0x6C,0x69,0x63,0x6B,0x65,0x72,0x20,0x64,0x65,0x70,
-	0x65,0x6E,0x64,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x20,0x74,0x68,
-	0x65,0x20,0x77,0x61,0x76,0x65,0x66,0x6F,0x72,0x6D,0x20,0x61,
-	0x6E,0x64,0x20,0x70,0x69,0x74,0x63,0x68,0x2E,0x4D,0x3E,0x40,
-	0x58,0x30,0x32,0x31,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,
-	0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x69,
-	0x72,0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,
-	0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,0x6C,0x6F,0x63,0x6B,
-	0x65,0x64,0x20,0x74,0x6F,0x20,0x65,0x78,0x61,0x63,0x74,0x6C,
-	0x79,0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x72,
-	0x61,0x74,0x65,0x4D,0x3E,0x61,0x74,0x20,0x77,0x68,0x69,0x63,
-	0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,0x65,0x73,
-	0x20,0x61,0x72,0x65,0x20,0x72,0x65,0x6E,0x64,0x65,0x72,0x65,
-	0x64,0x2E,0x20,0x49,0x74,0x27,0x73,0x20,0x63,0x6C,0x6F,0x73,
-	0x65,0x2C,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x63,0x61,0x75,
-	0x73,0x65,0x73,0x20,0x61,0x20,0x66,0x6C,0x69,0x63,0x6B,0x65,
-	0x72,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2E,0x01,0x3E,0x52,
-	0x3E,0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x4E,0x6F,0x74,0x20,
-	0x61,0x20,0x62,0x75,0x67,0x2C,0x20,0x62,0x75,0x74,0x20,0x69,
-	0x66,0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,
-	0x6F,0x72,0x27,0x73,0x20,0x72,0x65,0x66,0x72,0x65,0x73,0x68,
-	0x20,0x72,0x61,0x74,0x65,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,
-	0x20,0x73,0x65,0x74,0x20,0x74,0x6F,0x20,0x36,0x30,0x48,0x7A,
-	0x20,0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,0x4F,0x3E,
-	0x40,0x58,0x30,0x32,0x31,0x79,0x6F,0x75,0x20,0x6D,0x61,0x79,
-	0x20,0x65,0x78,0x70,0x65,0x72,0x69,0x65,0x6E,0x63,0x65,0x20,
-	0x76,0x69,0x73,0x75,0x61,0x6C,0x20,0x73,0x74,0x75,0x74,0x74,
-	0x65,0x72,0x69,0x6E,0x67,0x20,0x62,0x65,0x63,0x61,0x75,0x73,
-	0x65,0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x77,0x69,0x6C,0x6C,
-	0x20,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,
-	0x20,0x74,0x68,0x65,0x6E,0x2E,0x49,0x49,0x20,0x68,0x69,0x67,
-	0x68,0x6C,0x79,0x20,0x72,0x65,0x63,0x6F,0x6D,0x6D,0x65,0x6E,
-	0x64,0x20,0x72,0x75,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x79,0x6F,
-	0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x20,0x61,
-	0x74,0x20,0x36,0x30,0x48,0x7A,0x20,0x69,0x66,0x20,0x79,0x6F,
-	0x75,0x27,0x72,0x65,0x20,0x61,0x20,0x68,0x61,0x72,0x64,0x63,
-	0x6F,0x72,0x65,0x20,0x75,0x73,0x65,0x72,0x10,0x6F,0x66,0x20,
-	0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,
-	0x2E,0x00,0x03,0x45,0x4E,0x44
+	0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x2A,0x0C,0x40,0x4C,
+	0x4B,0x6E,0x6F,0x77,0x6E,0x20,0x62,0x75,0x67,0x73,0x06,0x3E,
+	0x40,0x58,0x30,0x31,0x30,0x17,0x3E,0x40,0x43,0x30,0x30,0x31,
+	0x4D,0x6F,0x75,0x73,0x65,0x20,0x2F,0x20,0x6B,0x65,0x79,0x62,
+	0x6F,0x61,0x72,0x64,0x3A,0x01,0x3E,0x43,0x3E,0x40,0x43,0x30,
+	0x30,0x32,0x2D,0x20,0x4C,0x69,0x6E,0x75,0x78,0x3A,0x20,0x54,
+	0x68,0x65,0x20,0x6D,0x6F,0x75,0x73,0x65,0x20,0x63,0x75,0x72,
+	0x73,0x6F,0x72,0x20,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,
+	0x20,0x63,0x61,0x6E,0x20,0x62,0x65,0x20,0x67,0x6C,0x69,0x74,
+	0x63,0x68,0x79,0x20,0x61,0x74,0x20,0x74,0x69,0x6D,0x65,0x73,
+	0x2E,0x2E,0x2E,0x06,0x3E,0x40,0x58,0x30,0x31,0x30,0x0C,0x3E,
+	0x40,0x43,0x30,0x30,0x31,0x56,0x69,0x64,0x65,0x6F,0x3A,0x06,
+	0x3E,0x40,0x43,0x30,0x30,0x32,0x50,0x3E,0x40,0x58,0x30,0x31,
+	0x30,0x2D,0x20,0x46,0x75,0x6C,0x6C,0x73,0x63,0x72,0x65,0x65,
+	0x6E,0x20,0x6D,0x6F,0x64,0x65,0x20,0x63,0x61,0x6E,0x20,0x62,
+	0x65,0x20,0x75,0x6E,0x62,0x65,0x61,0x72,0x61,0x62,0x6C,0x79,
+	0x20,0x73,0x6C,0x6F,0x77,0x20,0x6F,0x6E,0x20,0x61,0x20,0x52,
+	0x61,0x73,0x70,0x62,0x65,0x72,0x72,0x79,0x20,0x50,0x69,0x20,
+	0x28,0x65,0x76,0x65,0x6E,0x20,0x6F,0x6E,0x20,0x52,0x50,0x69,
+	0x20,0x34,0x29,0x01,0x3E,0x4A,0x3E,0x40,0x58,0x30,0x31,0x30,
+	0x2D,0x20,0x54,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,0x65,0x73,
+	0x20,0x63,0x61,0x6E,0x20,0x6D,0x69,0x6C,0x64,0x6C,0x79,0x20,
+	0x66,0x6C,0x69,0x63,0x6B,0x65,0x72,0x20,0x64,0x65,0x70,0x65,
+	0x6E,0x64,0x69,0x6E,0x67,0x20,0x6F,0x6E,0x20,0x74,0x68,0x65,
+	0x20,0x77,0x61,0x76,0x65,0x66,0x6F,0x72,0x6D,0x20,0x61,0x6E,
+	0x64,0x20,0x70,0x69,0x74,0x63,0x68,0x2E,0x4D,0x3E,0x40,0x58,
+	0x30,0x32,0x31,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x62,
+	0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x69,0x72,
+	0x20,0x66,0x72,0x65,0x71,0x75,0x65,0x6E,0x63,0x79,0x20,0x69,
+	0x73,0x20,0x6E,0x6F,0x74,0x20,0x63,0x6C,0x6F,0x63,0x6B,0x65,
+	0x64,0x20,0x74,0x6F,0x20,0x65,0x78,0x61,0x63,0x74,0x6C,0x79,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x61,0x6D,0x65,0x20,0x72,0x61,
+	0x74,0x65,0x4D,0x3E,0x61,0x74,0x20,0x77,0x68,0x69,0x63,0x68,
+	0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x6F,0x70,0x65,0x73,0x20,
+	0x61,0x72,0x65,0x20,0x72,0x65,0x6E,0x64,0x65,0x72,0x65,0x64,
+	0x2E,0x20,0x49,0x74,0x27,0x73,0x20,0x63,0x6C,0x6F,0x73,0x65,
+	0x2C,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x63,0x61,0x75,0x73,
+	0x65,0x73,0x20,0x61,0x20,0x66,0x6C,0x69,0x63,0x6B,0x65,0x72,
+	0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x2E,0x01,0x3E,0x52,0x3E,
+	0x40,0x58,0x30,0x31,0x30,0x2D,0x20,0x4E,0x6F,0x74,0x20,0x61,
+	0x20,0x62,0x75,0x67,0x2C,0x20,0x62,0x75,0x74,0x20,0x69,0x66,
+	0x20,0x79,0x6F,0x75,0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,
+	0x72,0x27,0x73,0x20,0x72,0x65,0x66,0x72,0x65,0x73,0x68,0x20,
+	0x72,0x61,0x74,0x65,0x20,0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,
+	0x73,0x65,0x74,0x20,0x74,0x6F,0x20,0x36,0x30,0x48,0x7A,0x20,
+	0x28,0x6F,0x72,0x20,0x35,0x39,0x48,0x7A,0x29,0x4F,0x3E,0x40,
+	0x58,0x30,0x32,0x31,0x79,0x6F,0x75,0x20,0x6D,0x61,0x79,0x20,
+	0x65,0x78,0x70,0x65,0x72,0x69,0x65,0x6E,0x63,0x65,0x20,0x76,
+	0x69,0x73,0x75,0x61,0x6C,0x20,0x73,0x74,0x75,0x74,0x74,0x65,
+	0x72,0x69,0x6E,0x67,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,
+	0x20,0x56,0x53,0x79,0x6E,0x63,0x20,0x77,0x69,0x6C,0x6C,0x20,
+	0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,
+	0x74,0x68,0x65,0x6E,0x2E,0x49,0x49,0x20,0x68,0x69,0x67,0x68,
+	0x6C,0x79,0x20,0x72,0x65,0x63,0x6F,0x6D,0x6D,0x65,0x6E,0x64,
+	0x20,0x72,0x75,0x6E,0x6E,0x69,0x6E,0x67,0x20,0x79,0x6F,0x75,
+	0x72,0x20,0x6D,0x6F,0x6E,0x69,0x74,0x6F,0x72,0x20,0x61,0x74,
+	0x20,0x36,0x30,0x48,0x7A,0x20,0x69,0x66,0x20,0x79,0x6F,0x75,
+	0x27,0x72,0x65,0x20,0x61,0x20,0x68,0x61,0x72,0x64,0x63,0x6F,
+	0x72,0x65,0x20,0x75,0x73,0x65,0x72,0x10,0x6F,0x66,0x20,0x74,
+	0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x2E,
+	0x00,0x03,0x45,0x4E,0x44
 };
 
 #endif
--- a/src/mixer/ft2_center_mix.c
+++ b/src/mixer/ft2_center_mix.c
@@ -138,10 +138,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -158,19 +158,19 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			INC_POS
 		}
 
@@ -180,10 +180,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -191,6 +191,7 @@
 	GET_VOL_MONO
 	GET_MIXER_VARS
 	SET_BASE8
+	PREPARE_TAP_FIX8
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -198,24 +199,200 @@
 		LIMIT_MIX_NUM
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+	PREPARE_TAP_FIX8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+			}
+		}
+
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_8BIT_SMP_MONO_LINTRP
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -222,10 +399,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac, tmpDelta;
@@ -243,19 +420,19 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
 		}
 		END_BIDI
@@ -418,10 +595,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -440,7 +617,7 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -447,16 +624,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -468,10 +645,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bRampLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -480,6 +657,7 @@
 	GET_VOL_MONO_RAMP
 	GET_MIXER_VARS_MONO_RAMP
 	SET_BASE8
+	PREPARE_TAP_FIX8
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -488,9 +666,168 @@
 		LIMIT_MIX_NUM_MONO_RAMP
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8_BIDI
+	PREPARE_TAP_FIX8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -497,20 +834,70 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix8bRampLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_8BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_8BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -518,10 +905,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix8bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -541,7 +928,7 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
 		}
@@ -548,16 +935,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_MONO_INTRP
+			RENDER_8BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
 		}
@@ -570,8 +957,6 @@
 	SET_BACK_MIXER_POS
 }
 
-
-
 /* ----------------------------------------------------------------------- */
 /*                      16-BIT CENTER MIXING ROUTINES                      */
 /* ----------------------------------------------------------------------- */
@@ -704,10 +1089,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -724,19 +1109,19 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			INC_POS
 		}
 
@@ -746,10 +1131,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -757,6 +1142,7 @@
 	GET_VOL_MONO
 	GET_MIXER_VARS
 	SET_BASE16
+	PREPARE_TAP_FIX16
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -764,24 +1150,199 @@
 		LIMIT_MIX_NUM
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+	PREPARE_TAP_FIX16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO
+	GET_MIXER_VARS
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_16BIT_SMP_MONO_LINTRP
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -788,10 +1349,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac, tmpDelta;
@@ -809,19 +1370,19 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			INC_POS_BIDI
 		}
 		END_BIDI
@@ -832,6 +1393,7 @@
 	SET_BACK_MIXER_POS
 }
 
+
 void centerMix16bRampNoLoop(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
@@ -984,10 +1546,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1006,7 +1568,7 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -1013,16 +1575,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_CINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -1034,10 +1596,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bRampLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1046,6 +1608,7 @@
 	GET_VOL_MONO_RAMP
 	GET_MIXER_VARS_MONO_RAMP
 	SET_BASE16
+	PREPARE_TAP_FIX16
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -1054,9 +1617,168 @@
 		LIMIT_MIX_NUM_MONO_RAMP
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16_BIDI
+	PREPARE_TAP_FIX16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_MONO_CINTRP
+				VOLUME_RAMPING_MONO
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
@@ -1063,20 +1785,70 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK_MONO
+	SET_BACK_MIXER_POS
+}
+
+void centerMix16bRampLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolL;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_MONO_RAMP
+	GET_MIXER_VARS_MONO_RAMP
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_MONO_RAMP
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_16BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+			RENDER_16BIT_SMP_MONO_LINTRP
+			VOLUME_RAMPING_MONO
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -1084,10 +1856,10 @@
 	SET_BACK_MIXER_POS
 }
 
-void centerMix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+void centerMix16bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolL;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1107,7 +1879,7 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
 		}
@@ -1114,16 +1886,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_MONO_INTRP
+			RENDER_16BIT_SMP_MONO_LINTRP
 			VOLUME_RAMPING_MONO
 			INC_POS_BIDI
 		}
--- a/src/mixer/ft2_center_mix.h
+++ b/src/mixer/ft2_center_mix.h
@@ -3,27 +3,50 @@
 #include <stdint.h>
 #include "../ft2_audio.h"
 
+// no volume ramping
+
+// 8-bit
 void centerMix8bNoLoop(voice_t *v, uint32_t numSamples);
 void centerMix8bLoop(voice_t *v, uint32_t numSamples);
 void centerMix8bBidiLoop(voice_t *v, uint32_t numSamples);
-void centerMix8bNoLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix8bLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bNoLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bBidiLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bNoLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bBidiLoopLIntrp(voice_t *v, uint32_t numSamples);
+
+// 16-bit
 void centerMix16bNoLoop(voice_t *v, uint32_t numSamples);
 void centerMix16bLoop(voice_t *v, uint32_t numSamples);
 void centerMix16bBidiLoop(voice_t *v, uint32_t numSamples);
-void centerMix16bNoLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix16bLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bNoLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bBidiLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bNoLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bBidiLoopLIntrp(voice_t *v, uint32_t numSamples);
+
+// volume ramping
+
+// 8-bit
 void centerMix8bRampNoLoop(voice_t *v, uint32_t numSamples);
 void centerMix8bRampLoop(voice_t *v, uint32_t numSamples);
 void centerMix8bRampBidiLoop(voice_t *v, uint32_t numSamples);
-void centerMix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix8bRampLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix8bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples);
+
+// 16bit
 void centerMix16bRampNoLoop(voice_t *v, uint32_t numSamples);
 void centerMix16bRampLoop(voice_t *v, uint32_t numSamples);
 void centerMix16bRampBidiLoop(voice_t *v, uint32_t numSamples);
-void centerMix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix16bRampLoopIntrp(voice_t *v, uint32_t numSamples);
-void centerMix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampLoopLIntrp(voice_t *v, uint32_t numSamples);
+void centerMix16bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples);
--- a/src/mixer/ft2_cubic.c
+++ /dev/null
@@ -1,59 +1,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include "ft2_cubic.h"
-
-float *fCubicLUT8 = NULL;
-float *fCubicLUT16 = NULL;
-
-/* 4-tap cubic spline interpolation (Horner's method)
-**
-** This simplified LUT formula has been used in several trackers, but
-** I think it originates from ModPlug Tracker (not sure about this).
-*/
-
-static void calcCubicLUT(float *fLUTPtr, const double dSale)
-{
-	for (int32_t i = 0; i < CUBIC_PHASES; i++)
-	{
-		const double x  = i * (1.0 / CUBIC_PHASES);
-		const double x2 = x * x;  // x^2
-		const double x3 = x2 * x; // x^3
-
-		*fLUTPtr++ = (float)((-0.5 * x3 + 1.0 * x2 - 0.5 * x) * dSale);
-		*fLUTPtr++ = (float)(( 1.5 * x3 - 2.5 * x2 + 1.0)     * dSale);
-		*fLUTPtr++ = (float)((-1.5 * x3 + 2.0 * x2 + 0.5 * x) * dSale);
-		*fLUTPtr++ = (float)(( 0.5 * x3 - 0.5 * x2)           * dSale);
-	}
-}
-
-bool calcCubicTable(void)
-{
-	fCubicLUT8 = (float *)malloc(CUBIC_LUT_LEN * sizeof (float));
-	if (fCubicLUT8 == NULL)
-		return false;
-
-	fCubicLUT16 = (float *)malloc(CUBIC_LUT_LEN * sizeof (float));
-	if (fCubicLUT16 == NULL)
-		return false;
-
-	calcCubicLUT(fCubicLUT8, 1.0 / 128.0); // for 8-bit samples
-	calcCubicLUT(fCubicLUT16, 1.0 / 32768.0); // for 16-bit samples
-
-	return true;
-}
-
-void freeCubicTable(void)
-{
-	if (fCubicLUT8 != NULL)
-	{
-		free(fCubicLUT8);
-		fCubicLUT8 = NULL;
-	}
-
-	if (fCubicLUT16 != NULL)
-	{
-		free(fCubicLUT16);
-		fCubicLUT16 = NULL;
-	}
-}
--- a/src/mixer/ft2_cubic.h
+++ /dev/null
@@ -1,22 +1,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include "../ft2_audio.h" // MIXER_FRAC_BITS definition
-
-// if you change this, also change CUBIC_PHASES_BITS
-#define CUBIC_PHASES 4096
-#define CUBIC_PHASES_BITS 12 /* log2(CUBIC_PHASES) */
-
-// don't change these!
-
-#define CUBIC_WIDTH 4
-#define CUBIC_WIDTH_BITS 2
-#define CUBIC_LUT_LEN (CUBIC_WIDTH * CUBIC_PHASES)
-#define CUBIC_FSHIFT (MIXER_FRAC_BITS-(CUBIC_PHASES_BITS+CUBIC_WIDTH_BITS))
-#define CUBIC_FMASK ((CUBIC_WIDTH*CUBIC_PHASES)-CUBIC_WIDTH)
-
-extern float *fCubicLUT8;
-extern float *fCubicLUT16;
-
-bool calcCubicTable(void);
-void freeCubicTable(void);
--- /dev/null
+++ b/src/mixer/ft2_cubicspline.c
@@ -1,0 +1,59 @@
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include "ft2_cubicspline.h"
+
+float *fCubicSplineLUT8 = NULL;
+float *fCubicSplineLUT16 = NULL;
+
+/* 4-tap cubic spline interpolation (Horner's method)
+**
+** This simplified LUT formula has been used in several trackers, but
+** I think it originates from ModPlug Tracker (not sure about this).
+*/
+
+static void calcCubicLUT(float *fLUTPtr, const double dSale)
+{
+	for (int32_t i = 0; i < CUBIC_PHASES; i++)
+	{
+		const double x  = i * (1.0 / CUBIC_PHASES);
+		const double x2 = x * x;  // x^2
+		const double x3 = x2 * x; // x^3
+
+		*fLUTPtr++ = (float)((-0.5 * x3 + 1.0 * x2 - 0.5 * x) * dSale);
+		*fLUTPtr++ = (float)(( 1.5 * x3 - 2.5 * x2 + 1.0)     * dSale);
+		*fLUTPtr++ = (float)((-1.5 * x3 + 2.0 * x2 + 0.5 * x) * dSale);
+		*fLUTPtr++ = (float)(( 0.5 * x3 - 0.5 * x2)           * dSale);
+	}
+}
+
+bool calcCubicTable(void)
+{
+	fCubicSplineLUT8 = (float *)malloc(CUBIC_LUT_LEN * sizeof (float));
+	if (fCubicSplineLUT8 == NULL)
+		return false;
+
+	fCubicSplineLUT16 = (float *)malloc(CUBIC_LUT_LEN * sizeof (float));
+	if (fCubicSplineLUT16 == NULL)
+		return false;
+
+	calcCubicLUT(fCubicSplineLUT8, 1.0 / 128.0); // for 8-bit samples
+	calcCubicLUT(fCubicSplineLUT16, 1.0 / 32768.0); // for 16-bit samples
+
+	return true;
+}
+
+void freeCubicTable(void)
+{
+	if (fCubicSplineLUT8 != NULL)
+	{
+		free(fCubicSplineLUT8);
+		fCubicSplineLUT8 = NULL;
+	}
+
+	if (fCubicSplineLUT16 != NULL)
+	{
+		free(fCubicSplineLUT16);
+		fCubicSplineLUT16 = NULL;
+	}
+}
--- /dev/null
+++ b/src/mixer/ft2_cubicspline.h
@@ -1,0 +1,22 @@
+#pragma once
+
+#include <stdbool.h>
+#include "../ft2_audio.h" // MIXER_FRAC_BITS definition
+
+// if you change this, also change CUBIC_PHASES_BITS
+#define CUBIC_PHASES 4096
+#define CUBIC_PHASES_BITS 12 /* log2(CUBIC_PHASES) */
+
+// don't change these!
+
+#define CUBIC_WIDTH 4
+#define CUBIC_WIDTH_BITS 2
+#define CUBIC_LUT_LEN (CUBIC_WIDTH * CUBIC_PHASES)
+#define CUBIC_FSHIFT (MIXER_FRAC_BITS-(CUBIC_PHASES_BITS+CUBIC_WIDTH_BITS))
+#define CUBIC_FMASK ((CUBIC_WIDTH*CUBIC_PHASES)-CUBIC_WIDTH)
+
+extern float *fCubicSplineLUT8;
+extern float *fCubicSplineLUT16;
+
+bool calcCubicTable(void);
+void freeCubicTable(void);
--- a/src/mixer/ft2_mix.c
+++ b/src/mixer/ft2_mix.c
@@ -9,14 +9,14 @@
 **            (Note: Mixing macros can be found in ft2_mix_macros.h)
 **
 ** Specifications:
-** - Fast 4-tap cubic interpolation through 32-bit float LUT (optional)
-** - Linear volume ramping, matching FT2 (optional)
-** - 32.32 fixed-point logic for position delta
-** - 32-bit float logic for volumes/amplitudes
+** - Either no interpolation, 2-tap linear interpolation (FT2) or 4-tap cubic interpolation
+** - Linear volume ramping, matching FT2 (can be turned off)
+** - 32.32 fixed-point logic for resampling delta
+** - 32-bit single-precision float logic for mixing and interpolation
 **
 ** This file has separate routines for EVERY possible sampling variation:
-** Interpolation on/off, volumeramp on/off, 8-bit, 16-bit, no loop, loop, bidi.
-** (24 mixing routines in total + another 24 for center-mixing)
+** Interpolation none/cubic/linear, volumeramp on/off, 8-bit, 16-bit, no loop, loop, bidi.
+** (36 mixing routines in total + another 36 for center-mixing)
 **
 ** Every voice has a function pointer set to the according mixing routine on
 ** sample trigger (from replayer, but set in audio thread), using a function
@@ -24,13 +24,6 @@
 ** when changing any of the above attributes from the GUI, to prevent possible
 ** thread-related issues.
 **
-** There's one problem with the 4-tap cubic spline resampling interpolation...
-** On looped samples where loopStart>0, the splines are not correct when reading
-** from the loopStart (or +1?) sample point. The difference in audio is very
-** minor, so it's not a big problem. It just has to stay like this the way the
-** mixer works. In cases where loopStart=0, the sample before index 0 (yes, we
-** allocate enough data and pre-increment main pointer to support negative
-** look-up), is already pre-fixed so that the splines will be correct.
 ** -----------------------------------------------------------------------------
 */
 
@@ -165,10 +158,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -185,19 +178,19 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			INC_POS
 		}
 
@@ -207,10 +200,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -218,6 +211,7 @@
 	GET_VOL
 	GET_MIXER_VARS
 	SET_BASE8
+	PREPARE_TAP_FIX8
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -225,24 +219,199 @@
 		LIMIT_MIX_NUM
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8_BIDI
+	PREPARE_TAP_FIX8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_8BIT_SMP_LINTRP
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -249,10 +418,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac, tmpDelta;
@@ -270,19 +439,19 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS_BIDI
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			INC_POS_BIDI
 		}
 		END_BIDI
@@ -445,10 +614,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -467,7 +636,7 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -474,16 +643,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -495,10 +664,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bRampLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -507,6 +676,7 @@
 	GET_VOL_RAMP
 	GET_MIXER_VARS_RAMP
 	SET_BASE8
+	PREPARE_TAP_FIX8
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -515,9 +685,168 @@
 		LIMIT_MIX_NUM_RAMP
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8_BIDI
+	PREPARE_TAP_FIX8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_8BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+	
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -524,20 +853,70 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix8bRampLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int8_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE8
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_8BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_8BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_8BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -545,10 +924,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix8bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix8bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int8_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -568,7 +947,7 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
 		}
@@ -575,16 +954,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_8BIT_SMP_INTRP
+			RENDER_8BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
 		}
@@ -597,8 +976,6 @@
 	SET_BACK_MIXER_POS
 }
 
-
-
 /* ----------------------------------------------------------------------- */
 /*                          16-BIT MIXING ROUTINES                         */
 /* ----------------------------------------------------------------------- */
@@ -731,10 +1108,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bNoLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -751,19 +1128,19 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			INC_POS
 		}
 
@@ -773,10 +1150,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac;
@@ -784,6 +1161,7 @@
 	GET_VOL
 	GET_MIXER_VARS
 	SET_BASE16
+	PREPARE_TAP_FIX16
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -791,24 +1169,199 @@
 		LIMIT_MIX_NUM
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16_BIDI
+	PREPARE_TAP_FIX16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL
+	GET_MIXER_VARS
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_16BIT_SMP_LINTRP
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -815,10 +1368,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	uint32_t i, samplesToMix, samplesLeft;
 	uint64_t posFrac, tmpDelta;
@@ -836,19 +1389,19 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS_BIDI
 		}
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			INC_POS_BIDI
 		}
 		END_BIDI
@@ -1011,10 +1564,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bRampNoLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bRampNoLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1033,7 +1586,7 @@
 
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -1040,16 +1593,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_CINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -1061,10 +1614,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bRampLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bRampLoopCIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1073,6 +1626,7 @@
 	GET_VOL_RAMP
 	GET_MIXER_VARS_RAMP
 	SET_BASE16
+	PREPARE_TAP_FIX16
 
 	samplesLeft = numSamples;
 	while (samplesLeft > 0)
@@ -1081,9 +1635,168 @@
 		LIMIT_MIX_NUM_RAMP
 		samplesLeft -= samplesToMix;
 
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS
+			}
+		}
+
+		WRAP_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampBidiLoopCIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *revBase, *smpPtr;
+	float s0, s1, s2, s3, fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac, tmpDelta;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16_BIDI
+	PREPARE_TAP_FIX16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
+		START_BIDI
+		if (v->hasLooped) // the interpolation's -1 tap needs a special case from now on
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP_TAP_FIX
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+		}
+		else
+		{
+			for (i = 0; i < (samplesToMix & 3); i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+			samplesToMix >>= 2;
+			for (i = 0; i < samplesToMix; i++)
+			{
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+				RENDER_16BIT_SMP_CINTRP
+				VOLUME_RAMPING
+				INC_POS_BIDI
+			}
+		}
+		END_BIDI
+
+		WRAP_BIDI_LOOP
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampNoLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
@@ -1090,20 +1803,70 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS
 		}
 
+		HANDLE_SAMPLE_END
+	}
+
+	SET_VOL_BACK
+	SET_BACK_MIXER_POS
+}
+
+static void mix16bRampLoopLIntrp(voice_t *v, uint32_t numSamples)
+{
+	const int16_t *base, *smpPtr;
+	float fSample, *fMixBufferL, *fMixBufferR;
+	int32_t pos;
+	float fVolLDelta, fVolRDelta, fVolL, fVolR;
+	uint32_t i, samplesToMix, samplesLeft;
+	uint64_t posFrac;
+
+	GET_VOL_RAMP
+	GET_MIXER_VARS_RAMP
+	SET_BASE16
+
+	samplesLeft = numSamples;
+	while (samplesLeft > 0)
+	{
+		LIMIT_MIX_NUM
+		LIMIT_MIX_NUM_RAMP
+		samplesLeft -= samplesToMix;
+
+		for (i = 0; i < (samplesToMix & 3); i++)
+		{
+			RENDER_16BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+		samplesToMix >>= 2;
+		for (i = 0; i < samplesToMix; i++)
+		{
+			RENDER_16BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+			RENDER_16BIT_SMP_LINTRP
+			VOLUME_RAMPING
+			INC_POS
+		}
+
 		WRAP_LOOP
 	}
 
@@ -1111,10 +1874,10 @@
 	SET_BACK_MIXER_POS
 }
 
-static void mix16bRampBidiLoopIntrp(voice_t *v, uint32_t numSamples)
+static void mix16bRampBidiLoopLIntrp(voice_t *v, uint32_t numSamples)
 {
 	const int16_t *base, *revBase, *smpPtr;
-	float fSample, fSample2, fSample3, fSample4, *fMixBufferL, *fMixBufferR;
+	float fSample, *fMixBufferL, *fMixBufferR;
 	int32_t pos;
 	float fVolLDelta, fVolRDelta, fVolL, fVolR;
 	uint32_t i, samplesToMix, samplesLeft;
@@ -1134,7 +1897,7 @@
 		START_BIDI
 		for (i = 0; i < (samplesToMix & 3); i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
 		}
@@ -1141,16 +1904,16 @@
 		samplesToMix >>= 2;
 		for (i = 0; i < samplesToMix; i++)
 		{
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
-			RENDER_16BIT_SMP_INTRP
+			RENDER_16BIT_SMP_LINTRP
 			VOLUME_RAMPING
 			INC_POS_BIDI
 		}
@@ -1165,57 +1928,113 @@
 
 // -----------------------------------------------------------------------
 
-const mixFunc mixFuncTab[48] =
+const mixFunc mixFuncTab[72] =
 {
-	// normal mixing (this file)
+	/*
+	** ---------------------------------
+	** stereo mixing (this file)
+	** ---------------------------------
+	*/
+
+	// no volume ramping
+
+	// 8-bit
 	(mixFunc)mix8bNoLoop,
 	(mixFunc)mix8bLoop,
 	(mixFunc)mix8bBidiLoop,
-	(mixFunc)mix8bNoLoopIntrp,
-	(mixFunc)mix8bLoopIntrp,
-	(mixFunc)mix8bBidiLoopIntrp,
+	(mixFunc)mix8bNoLoopCIntrp,
+	(mixFunc)mix8bLoopCIntrp,
+	(mixFunc)mix8bBidiLoopCIntrp,
+	(mixFunc)mix8bNoLoopLIntrp,
+	(mixFunc)mix8bLoopLIntrp,
+	(mixFunc)mix8bBidiLoopLIntrp,
+
+	// 16-bit
 	(mixFunc)mix16bNoLoop,
 	(mixFunc)mix16bLoop,
 	(mixFunc)mix16bBidiLoop,
-	(mixFunc)mix16bNoLoopIntrp,
-	(mixFunc)mix16bLoopIntrp,
-	(mixFunc)mix16bBidiLoopIntrp,
+	(mixFunc)mix16bNoLoopCIntrp,
+	(mixFunc)mix16bLoopCIntrp,
+	(mixFunc)mix16bBidiLoopCIntrp,
+	(mixFunc)mix16bNoLoopLIntrp,
+	(mixFunc)mix16bLoopLIntrp,
+	(mixFunc)mix16bBidiLoopLIntrp,
+
+	// volume ramping
+
+	// 8-bit
 	(mixFunc)mix8bRampNoLoop,
 	(mixFunc)mix8bRampLoop,
 	(mixFunc)mix8bRampBidiLoop,
-	(mixFunc)mix8bRampNoLoopIntrp,
-	(mixFunc)mix8bRampLoopIntrp,
-	(mixFunc)mix8bRampBidiLoopIntrp,
+	(mixFunc)mix8bRampNoLoopCIntrp,
+	(mixFunc)mix8bRampLoopCIntrp,
+	(mixFunc)mix8bRampBidiLoopCIntrp,
+	(mixFunc)mix8bRampNoLoopLIntrp,
+	(mixFunc)mix8bRampLoopLIntrp,
+	(mixFunc)mix8bRampBidiLoopLIntrp,
+
+	// 16-bit
 	(mixFunc)mix16bRampNoLoop,
 	(mixFunc)mix16bRampLoop,
 	(mixFunc)mix16bRampBidiLoop,
-	(mixFunc)mix16bRampNoLoopIntrp,
-	(mixFunc)mix16bRampLoopIntrp,
-	(mixFunc)mix16bRampBidiLoopIntrp,
+	(mixFunc)mix16bRampNoLoopCIntrp,
+	(mixFunc)mix16bRampLoopCIntrp,
+	(mixFunc)mix16bRampBidiLoopCIntrp,
+	(mixFunc)mix16bRampNoLoopLIntrp,
+	(mixFunc)mix16bRampLoopLIntrp,
+	(mixFunc)mix16bRampBidiLoopLIntrp,
 
-	// center mixing (ft2_center_mix.c)
+	/* 
+	** ---------------------------------
+	** center mixing (ft2_center_mix.c)
+	** ---------------------------------
+	*/ 
+
+	// no volume ramping
+
+	// 8-bit
 	(mixFunc)centerMix8bNoLoop,
 	(mixFunc)centerMix8bLoop,
 	(mixFunc)centerMix8bBidiLoop,
-	(mixFunc)centerMix8bNoLoopIntrp,
-	(mixFunc)centerMix8bLoopIntrp,
-	(mixFunc)centerMix8bBidiLoopIntrp,
+	(mixFunc)centerMix8bNoLoopCIntrp,
+	(mixFunc)centerMix8bLoopCIntrp,
+	(mixFunc)centerMix8bBidiLoopCIntrp,
+	(mixFunc)centerMix8bNoLoopLIntrp,
+	(mixFunc)centerMix8bLoopLIntrp,
+	(mixFunc)centerMix8bBidiLoopLIntrp,
+
+	// 16-bit
 	(mixFunc)centerMix16bNoLoop,
 	(mixFunc)centerMix16bLoop,
 	(mixFunc)centerMix16bBidiLoop,
-	(mixFunc)centerMix16bNoLoopIntrp,
-	(mixFunc)centerMix16bLoopIntrp,
-	(mixFunc)centerMix16bBidiLoopIntrp,
+	(mixFunc)centerMix16bNoLoopCIntrp,
+	(mixFunc)centerMix16bLoopCIntrp,
+	(mixFunc)centerMix16bBidiLoopCIntrp,
+	(mixFunc)centerMix16bNoLoopLIntrp,
+	(mixFunc)centerMix16bLoopLIntrp,
+	(mixFunc)centerMix16bBidiLoopLIntrp,
+
+	// volume ramping
+
+	// 8-bit
 	(mixFunc)centerMix8bRampNoLoop,
 	(mixFunc)centerMix8bRampLoop,
 	(mixFunc)centerMix8bRampBidiLoop,
-	(mixFunc)centerMix8bRampNoLoopIntrp,
-	(mixFunc)centerMix8bRampLoopIntrp,
-	(mixFunc)centerMix8bRampBidiLoopIntrp,
+	(mixFunc)centerMix8bRampNoLoopCIntrp,
+	(mixFunc)centerMix8bRampLoopCIntrp,
+	(mixFunc)centerMix8bRampBidiLoopCIntrp,
+	(mixFunc)centerMix8bRampNoLoopLIntrp,
+	(mixFunc)centerMix8bRampLoopLIntrp,
+	(mixFunc)centerMix8bRampBidiLoopLIntrp,
+
+	// 16-bit
 	(mixFunc)centerMix16bRampNoLoop,
 	(mixFunc)centerMix16bRampLoop,
 	(mixFunc)centerMix16bRampBidiLoop,
-	(mixFunc)centerMix16bRampNoLoopIntrp,
-	(mixFunc)centerMix16bRampLoopIntrp,
-	(mixFunc)centerMix16bRampBidiLoopIntrp
+	(mixFunc)centerMix16bRampNoLoopCIntrp,
+	(mixFunc)centerMix16bRampLoopCIntrp,
+	(mixFunc)centerMix16bRampBidiLoopCIntrp,
+	(mixFunc)centerMix16bRampNoLoopLIntrp,
+	(mixFunc)centerMix16bRampLoopLIntrp,
+	(mixFunc)centerMix16bRampBidiLoopLIntrp
 };
--- a/src/mixer/ft2_mix.h
+++ b/src/mixer/ft2_mix.h
@@ -5,4 +5,4 @@
 
 typedef void (*mixFunc)(void *, int32_t);
 
-extern const mixFunc mixFuncTab[48]; // ft2_mix.c
+extern const mixFunc mixFuncTab[72]; // ft2_mix.c
--- a/src/mixer/ft2_mix_macros.h
+++ b/src/mixer/ft2_mix_macros.h
@@ -2,7 +2,7 @@
 
 #include <assert.h>
 #include "../ft2_audio.h"
-#include "ft2_cubic.h"
+#include "ft2_cubicspline.h"
 
 /* ----------------------------------------------------------------------- */
 /*                          GENERAL MIXER MACROS                           */
@@ -53,6 +53,14 @@
 	pos = v->pos; \
 	posFrac = v->posFrac; \
 
+#define PREPARE_TAP_FIX8 \
+	const int8_t *loopStartPtr = &v->base8[v->loopStart]; \
+	const float fTapFixSample = v->fTapFixSample; \
+
+#define PREPARE_TAP_FIX16 \
+	const int16_t *loopStartPtr = &v->base16[v->loopStart]; \
+	const float fTapFixSample = v->fTapFixSample; \
+
 #define SET_BASE8 \
 	base = v->base8; \
 	smpPtr = base + pos; \
@@ -119,66 +127,136 @@
 	*fMixBufferL++ += fSample; \
 	*fMixBufferR++ += fSample; \
 
-// 4-tap cubic spline interpolation through LUT (mixer/ft2_cubic.c)
+// 2-tap linear interpolation (like FT2)
 
-#define INTERPOLATE(LUT, s0, s1, s2, s3, f) \
+#define LINEAR_INTERPOLATION16(s, f) \
 { \
-	const float *t = (const float *)LUT + ((f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
-	s0 = (s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3]); \
+	const float fFrac = (const float)((uint32_t)f * (1.0f / (UINT32_MAX+1.0f))); /* 0.0 .. 0.999f */ \
+	fSample = ((s[0] + (s[1]-s[0]) * fFrac)) * (1.0f / 32768.0f); \
 } \
 
-/* 8bitbubsy: It may look like we are potentially going out of bounds by looking up sample point
-** -1, 1 and 2, but the sample data is actually padded on both the left (negative) and right side,
-** where correct samples are stored according to loop mode (or no loop).
+#define LINEAR_INTERPOLATION8(s, f) \
+{ \
+	const float fFrac = (const float)((uint32_t)f * (1.0f / (UINT32_MAX+1.0f))); /* 0.0f .. 0.999f */ \
+	fSample = ((s[0] + (s[1]-s[0]) * fFrac)) * (1.0f / 128.0f); \
+} \
+
+#define RENDER_8BIT_SMP_LINTRP \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	LINEAR_INTERPOLATION8(smpPtr, posFrac) \
+	*fMixBufferL++ += fSample * fVolL; \
+	*fMixBufferR++ += fSample * fVolR; \
+
+#define RENDER_8BIT_SMP_MONO_LINTRP \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	LINEAR_INTERPOLATION8(smpPtr, posFrac) \
+	fSample *= fVolL; \
+	*fMixBufferL++ += fSample; \
+	*fMixBufferR++ += fSample; \
+
+#define RENDER_16BIT_SMP_LINTRP \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	LINEAR_INTERPOLATION16(smpPtr, posFrac) \
+	*fMixBufferL++ += fSample * fVolL; \
+	*fMixBufferR++ += fSample * fVolR; \
+
+#define RENDER_16BIT_SMP_MONO_LINTRP \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	LINEAR_INTERPOLATION16(smpPtr, posFrac) \
+	fSample *= fVolL; \
+	*fMixBufferL++ += fSample; \
+	*fMixBufferR++ += fSample; \
+
+// 4-tap cubic spline interpolation (better quality, through LUT: mixer/ft2_cubicspline.c)
+
+/* 8bitbubsy: It may look like we are potentially going out of bounds while looking up the sample points,
+** but the sample data is actually padded on both the left (negative) and right side, where correct tap
+** samples are stored according to loop mode (or no loop).
 **
-** The only issue is that the -1 look-up gets wrong information if loopStart>0 on looped-samples,
-** and the sample-position is at loopStart. The spline will get ever so slighty wrong because of this,
-** but it's barely audible anyway. Doing it elsewise would require a refactoring of how the audio mixer
-** works!
+** The mixer is also reading the correct sample on the -1 tap after the sample has looped at least once.
+**
 */
 
-#define RENDER_8BIT_SMP_INTRP \
+#define CUBICSPLINE_INTERPOLATION(LUT, s, f) \
+{ \
+	const float *t = (const float *)LUT + (((uint32_t)f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+	fSample = (s[-1] * t[0]) + (s[0] * t[1]) + (s[1] * t[2]) + (s[2] * t[3]); \
+} \
+
+#define CUBICSPLINE_INTERPOLATION_CUSTOM(LUT, f) \
+{ \
+	const float *t = (const float *)LUT + (((uint32_t)f >> CUBIC_FSHIFT) & CUBIC_FMASK); \
+	fSample = (s0 * t[0]) + (s1 * t[1]) + (s2 * t[2]) + (s3 * t[3]); \
+} \
+
+#define RENDER_8BIT_SMP_CINTRP \
 	assert(smpPtr >= base && smpPtr < base+v->end); \
-	fSample = smpPtr[-1]; \
-	fSample2 = smpPtr[0]; \
-	fSample3 = smpPtr[1]; \
-	fSample4 = smpPtr[2]; \
-	INTERPOLATE(fCubicLUT8, fSample, fSample2, fSample3, fSample4, posFrac) \
+	CUBICSPLINE_INTERPOLATION(fCubicSplineLUT8, smpPtr, posFrac) \
 	*fMixBufferL++ += fSample * fVolL; \
 	*fMixBufferR++ += fSample * fVolR; \
 
-#define RENDER_8BIT_SMP_MONO_INTRP \
+#define RENDER_8BIT_SMP_MONO_CINTRP \
 	assert(smpPtr >= base && smpPtr < base+v->end); \
-	fSample = smpPtr[-1]; \
-	fSample2 = smpPtr[0]; \
-	fSample3 = smpPtr[1]; \
-	fSample4 = smpPtr[2]; \
-	INTERPOLATE(fCubicLUT8, fSample, fSample2, fSample3, fSample4, posFrac) \
+	CUBICSPLINE_INTERPOLATION(fCubicSplineLUT8, smpPtr, posFrac) \
 	fSample *= fVolL; \
 	*fMixBufferL++ += fSample; \
 	*fMixBufferR++ += fSample; \
 
-#define RENDER_16BIT_SMP_INTRP \
+#define RENDER_16BIT_SMP_CINTRP \
 	assert(smpPtr >= base && smpPtr < base+v->end); \
-	fSample = smpPtr[-1]; \
-	fSample2 = smpPtr[0]; \
-	fSample3 = smpPtr[1]; \
-	fSample4 = smpPtr[2]; \
-	INTERPOLATE(fCubicLUT16, fSample, fSample2, fSample3, fSample4, posFrac) \
+	CUBICSPLINE_INTERPOLATION(fCubicSplineLUT16, smpPtr, posFrac) \
 	*fMixBufferL++ += fSample * fVolL; \
 	*fMixBufferR++ += fSample * fVolR; \
 
-#define RENDER_16BIT_SMP_MONO_INTRP \
+#define RENDER_16BIT_SMP_MONO_CINTRP \
 	assert(smpPtr >= base && smpPtr < base+v->end); \
-	fSample = smpPtr[-1]; \
-	fSample2 = smpPtr[0]; \
-	fSample3 = smpPtr[1]; \
-	fSample4 = smpPtr[2]; \
-	INTERPOLATE(fCubicLUT16, fSample, fSample2, fSample3, fSample4, posFrac) \
+	CUBICSPLINE_INTERPOLATION(fCubicSplineLUT16, smpPtr, posFrac) \
 	fSample *= fVolL; \
 	*fMixBufferL++ += fSample; \
 	*fMixBufferR++ += fSample; \
 
+#define RENDER_8BIT_SMP_CINTRP_TAP_FIX  \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	s0 = (smpPtr != loopStartPtr) ? smpPtr[-1] : fTapFixSample; \
+	s1 = smpPtr[0]; \
+	s2 = smpPtr[1]; \
+	s3 = smpPtr[2]; \
+	CUBICSPLINE_INTERPOLATION_CUSTOM(fCubicSplineLUT8, posFrac) \
+	*fMixBufferL++ += fSample * fVolL; \
+	*fMixBufferR++ += fSample * fVolR; \
+
+#define RENDER_8BIT_SMP_MONO_CINTRP_TAP_FIX \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	s0 = (smpPtr != loopStartPtr) ? smpPtr[-1] : fTapFixSample; \
+	s1 = smpPtr[0]; \
+	s2 = smpPtr[1]; \
+	s3 = smpPtr[2]; \
+	CUBICSPLINE_INTERPOLATION_CUSTOM(fCubicSplineLUT8, posFrac) \
+	fSample *= fVolL; \
+	*fMixBufferL++ += fSample; \
+	*fMixBufferR++ += fSample; \
+
+#define RENDER_16BIT_SMP_CINTRP_TAP_FIX \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	s0 = (smpPtr != loopStartPtr) ? smpPtr[-1] : fTapFixSample; \
+	s1 = smpPtr[0]; \
+	s2 = smpPtr[1]; \
+	s3 = smpPtr[2]; \
+	CUBICSPLINE_INTERPOLATION_CUSTOM(fCubicSplineLUT16, posFrac) \
+	*fMixBufferL++ += fSample * fVolL; \
+	*fMixBufferR++ += fSample * fVolR; \
+
+#define RENDER_16BIT_SMP_MONO_CINTRP_TAP_FIX \
+	assert(smpPtr >= base && smpPtr < base+v->end); \
+	s0 = (smpPtr != loopStartPtr) ? smpPtr[-1] : fTapFixSample; \
+	s1 = smpPtr[0]; \
+	s2 = smpPtr[1]; \
+	s3 = smpPtr[2]; \
+	CUBICSPLINE_INTERPOLATION_CUSTOM(fCubicSplineLUT16, posFrac) \
+	fSample *= fVolL; \
+	*fMixBufferL++ += fSample; \
+	*fMixBufferR++ += fSample; \
+
 /* ----------------------------------------------------------------------- */
 /*                      SAMPLES-TO-MIX LIMITING MACROS                     */
 /* ----------------------------------------------------------------------- */
@@ -262,15 +340,27 @@
 
 #define WRAP_LOOP \
 	pos = (int32_t)(smpPtr - base); \
-	while (pos >= v->end) \
-		pos -= v->loopLength; \
+	if (pos >= v->end) \
+	{ \
+		do \
+		{ \
+			pos -= v->loopLength; \
+		} \
+		while (pos >= v->end); \
+		v->hasLooped = true; \
+	} \
 	smpPtr = base + pos; \
 
 #define WRAP_BIDI_LOOP \
-	while (pos >= v->end) \
+	if (pos >= v->end) \
 	{ \
-		pos -= v->loopLength; \
-		v->backwards ^= 1; \
+		do \
+		{ \
+			pos -= v->loopLength; \
+			v->backwards ^= 1; \
+		} \
+		while (pos >= v->end); \
+		v->hasLooped = true; \
 	} \
 
 #define END_BIDI \
--- a/src/mixer/ft2_silence_mix.h
+++ b/src/mixer/ft2_silence_mix.h
@@ -27,6 +27,8 @@
 			pos = v->loopStart + ((pos - v->end) % v->loopLength); \
 		else \
 			pos = v->loopStart; \
+		\
+		v->hasLooped = true; \
 	} \
 
 #define SILENCE_MIX_BIDI_LOOP \
@@ -45,6 +47,7 @@
 		{ \
 			pos = v->loopStart; \
 		} \
+		v->hasLooped = true; \
 	} \
 
 void silenceMixRoutine(voice_t *v, int32_t numSamples);
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj
@@ -92,7 +92,7 @@
       <Optimization>MaxSpeed</Optimization>
       <AdditionalIncludeDirectories>
       </AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__WINDOWS_MM__;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;HAVE_M_PI;HAS_MIDI</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__WINDOWS_MM__;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;HAS_MIDI</PreprocessorDefinitions>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <StringPooling>true</StringPooling>
@@ -142,7 +142,7 @@
       <Optimization>MaxSpeed</Optimization>
       <AdditionalIncludeDirectories>
       </AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__WINDOWS_MM__;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;HAVE_M_PI;HAS_MIDI</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__WINDOWS_MM__;NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;HAS_MIDI</PreprocessorDefinitions>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <StringPooling>true</StringPooling>
@@ -199,7 +199,7 @@
       <WarningLevel>Level4</WarningLevel>
       <AdditionalIncludeDirectories>
       </AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__WINDOWS_MM__;_CRTDBG_MAP_ALLOC;DEBUG;_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;HAVE_M_PI;HAS_MIDI</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__WINDOWS_MM__;_CRTDBG_MAP_ALLOC;DEBUG;_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;HAS_MIDI</PreprocessorDefinitions>
       <FloatingPointModel>Fast</FloatingPointModel>
       <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
       <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
@@ -237,7 +237,7 @@
       <WarningLevel>Level4</WarningLevel>
       <AdditionalIncludeDirectories>
       </AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>__WINDOWS_MM__;_CRTDBG_MAP_ALLOC;DEBUG;_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_USE_MATH_DEFINES;HAVE_M_PI;HAS_MIDI</PreprocessorDefinitions>
+      <PreprocessorDefinitions>__WINDOWS_MM__;_CRTDBG_MAP_ALLOC;DEBUG;_DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;HAS_MIDI</PreprocessorDefinitions>
       <FloatingPointModel>Fast</FloatingPointModel>
       <StringPooling>
       </StringPooling>
@@ -336,7 +336,7 @@
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_instr.c" />
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_looppins.c" />
     <ClCompile Include="..\..\src\gfxdata\ft2_bmp_scopes.c" />
-    <ClCompile Include="..\..\src\mixer\ft2_cubic.c" />
+    <ClCompile Include="..\..\src\mixer\ft2_cubicspline.c" />
     <ClCompile Include="..\..\src\mixer\ft2_mix.c" />
     <ClCompile Include="..\..\src\mixer\ft2_center_mix.c" />
     <ClCompile Include="..\..\src\mixer\ft2_silence_mix.c" />
@@ -400,7 +400,7 @@
     <ClInclude Include="..\..\src\ft2_unicode.h" />
     <ClInclude Include="..\..\src\ft2_video.h" />
     <ClInclude Include="..\..\src\ft2_wav_renderer.h" />
-    <ClInclude Include="..\..\src\mixer\ft2_cubic.h" />
+    <ClInclude Include="..\..\src\mixer\ft2_cubicspline.h" />
     <ClInclude Include="..\..\src\mixer\ft2_mix.h" />
     <ClInclude Include="..\..\src\mixer\ft2_mix_macros.h" />
     <ClInclude Include="..\..\src\mixer\ft2_center_mix.h" />
--- a/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
+++ b/vs2019_project/ft2-clone/ft2-clone.vcxproj.filters
@@ -84,7 +84,7 @@
     <ClCompile Include="..\..\src\mixer\ft2_silence_mix.c">
       <Filter>mixer</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\mixer\ft2_cubic.c">
+    <ClCompile Include="..\..\src\mixer\ft2_cubicspline.c">
       <Filter>mixer</Filter>
     </ClCompile>
   </ItemGroup>
@@ -233,7 +233,7 @@
     <ClInclude Include="..\..\src\mixer\ft2_silence_mix.h">
       <Filter>mixer</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\mixer\ft2_cubic.h">
+    <ClInclude Include="..\..\src\mixer\ft2_cubicspline.h">
       <Filter>mixer</Filter>
     </ClInclude>
   </ItemGroup>