diff --git a/PicReversing.c b/PicReversing.c
deleted file mode 100644
index 8ea9bb1..0000000
--- a/PicReversing.c
+++ /dev/null
@@ -1,500 +0,0 @@
-// Microprose MTG .PIC decoder reversing
-// (c) ogamespec@gmail.com
-
-
-uint32_t pic_Width; // 0x5360C8
-uint32_t pic_Height; // 0x5360CC
-uint32_t pic_CompSize; // 0x5360D0, Compressed size
-uint8_t * pic_SomeBuffer; // 0x5360D4
-uint32 pic_OpCount; // 0x5360D8, Operation count
-uint8_t pic_RepeatCount; // 0x5360DC
-uint8_t pic_RepeatByte; // 0x5360DD
-int onesCounter; // 0x5360DE
-uint8_t pic_MagicValueByte; // 0x5360DF
-uint32_t bitMask; // 0x5360E0
-
-uint32_t pic_MagicValueWord; // 0x5360E8
-uint8_t bitPointer; // 0x5360EC
-uint8_t bcdEncoded; // 0x5360ED (not used in MTG files)
-uint32_t savedIndex = 0; // 0x5360EE
-uint8_t savedByte = 0; // 0x5360F2
-
-int picHandle; // 0x547CE8
-int MpsFileHandle; // 0x547CD8
-
-uint8_t * DibSectionPtr = unk_547CA8; // DIB_SECTION_INFO *
-uint8_t * off_526C9C = unk_5F7460;
-
-uint8_t unk_5F7260[0x200]; // Work area (next loaded 0x200 bytes )
-uint8_t unk_5F7460[0x70]; // Safe stub (for unaligned access)
-
-void * MpsReadCallback; // 0x5F74D0
-uint8_t * MpsBuffer; // 0x5F74D4
-
-uint8_t LUT[0x10000]; // 0x5320C8
-
-typedef struct _DIB_SECTION_INFO
-{
- // 0x0
-
- FileMapping;
-
- // +4
-
- HDC hdc;
-
- // +8
-
- DibSection;
-
- // +0xc
-
- // ???
-
- // +0x10
-
- BITMAPINFOHEADER * bmiHead;
-
- // +0x14
-
- // +0x18
-
- // Current decoded image pointer
-
- uint8_t * CurrentPointer;
-
- // +0x1C
-
- DWORD dwMaximumSizeLow;
-
- // +0x20
-
- uint32_t Width;
-
- // +0x24
-
- uint32_t Height;
-
- // +0x28
-
- uint32_t Bpp;
-
- // +0x2C
-
- uint32_t AlignedWidthAddend; // for DIB 4 byte alignment
-
-} DIB_SECTION_INFO;
-
-uint8_t unk_547CA8[0x30]; // DIB_SECTION_INFO
-
-
-// 0x444F5F
-
-unsigned int LoadPicInternal (
- int par04, // PCX only
- unsigned int par08, // Not used
- unsigned int par0C, // Not used
- char * par10, // IDA arg_C [ebp + 0x10]
- unsigned int *par14) // IDA arg_10 [ebp + 0x14]
-{
- unsigned int v0, v1;
- unsigned int v2 = strchr(par10, '.');
- v2 = _strcmpi (".pcx", v2);
-
- if (v2)
- {
- v2 = PicOpen (par10, O_BINARY);
- picHandle = v2;
-
- if (v2 != -1)
- {
- SetupMpsReadCallback (picHandle);
-
- j_Mps_LoadPic(par14);
-
- // Align width on 4 (DIB specific)
-
- unsigned int v3 = (pic_Width & 3) != 0 ? 4 - (pic_Width & 3) : 0;
- gvar_547CE4 = pic_Width + v3; // Used only in PCX code section (not sure why this is here..)
-
- v2 = j_PicCreateDIBSection(pic_Width, pic_Height, 8); // 8 = bpp
-
- if (v2)
- {
- v0 = *(gvar_526C98 + 0x18);
- gvar_547CE0 = 0;
-
- while (gvar_547CE0 < pic_Height)
- {
- j_Mps_DecodeLine (v0, pic_Width);
- gvar_547CE0++;
-
- v0 += *(gvar_526C98 + 0x2c) + pic_Width; // +AlignedWidthAddend
- }
- }
- else
- {
- *(gvar_526C98 + 8) = 0;
- }
- }
- else
- {
- *(gvar_526C98 + 8) = 0;
- }
-
- return *(gvar_526C98 + 8);
- }
- else
- {
- // .PCX loading code section ... (don't care)
- }
-
-}
-
-
-int PicOpen (char * path, int mode)
-{
- int result = _open (path, mode);
- gvar_547CDC = -1; /// Only here (not used)
- return result;
-}
-
-
-
-void SetupMpsReadCallback (int par04)
-{
- MpsFileHandle = par04;
-
- // Reset buffer
- MpsBuffer = off_526C9C;
-
- MpsReadCallback = PicRead;
-}
-
-int PicRead ()
-{
- int result = read (MpsFileHandle, unk_5F7260, 0x200);
- MpsBuffer = unk_5F7260;
- return result;
-}
-
-Mps_LoadPic (unsigned int *par14)
-{
- if ( MpsBuffer >= off_526C9C )
- {
- MpsReadCallback ();
- }
-
- uint16_t ax = *(uint16_t)MpsBuffer;
- MpsBuffer += 2;
-
- // Parse header
-
- if ( (ax & 0xff) == 'X' )
- {
- // Compressed size
-
- bcdEncoded = (ax >> 8) & 1; // BCD encoded?
-
- if ( MpsBuffer >= off_526C9C )
- {
- MpsReadCallback ();
- }
-
- ax = *(uint16_t)MpsBuffer;
- MpsBuffer += 2;
- pic_CompSize = ax;
-
- // Picture Width
-
- if ( MpsBuffer >= off_526C9C )
- {
- MpsReadCallback ();
- }
-
- ax = *(uint16_t)MpsBuffer;
- MpsBuffer += 2;
- pic_Width = ax;
-
- // Picture Height
-
- if ( MpsBuffer >= off_526C9C )
- {
- MpsReadCallback ();
- }
-
- ax = *(uint16_t)MpsBuffer;
- MpsBuffer += 2;
- pic_Height = ax;
-
- Mps_PrepareContext();
- }
- else
- {
- // ... Other pic formats (don't care)
- }
-
-}
-
-Mps_PrepareContext() // 0x640245
-{
- if ( (pic_Width | pic_Height) == 0 )
- return;
-
- pic_RepeatCount = 0;
- pic_RepeatByte = 0;
-
- pic_SomeBuffer = &unk_5364F3;
-
- // Get one more word, which contain LUT settings byte (always 0xb)
-
- if ( MpsBuffer >= off_526C9C)
- {
- MpsReadCallback ();
- }
-
- ax = *(uint16_t)MpsBuffer;
- MpsBuffer += 2;
-
- uint8_t al = (ax & 0xff);
-
- if (al > 11)
- {
- al = 11;
- }
-
- pic_MagicValueByte = al;
- pic_MagicValueWord = ax;
-
- bitPointer = 8;
-
- Mps_PrepareBuffer ();
-}
-
-/// Prepare look-up table (0x800 * 3 bytes):
-
-// First we clear look-up indexes (set to 0xFFFFs)
-
-// FF FF 00
-// FF FF 00
-// FF FF 00
-// FF FF 00
-// ...
-
-// Next first 256 LUT entry values are set as following:
-
-// FF FF 00
-// FF FF 01
-// FF FF 02
-// FF FF 03
-// ...
-
-
-// LUT entries count = 1 << pic_MagicValueByte
-
-Mps_PrepareBuffer() // 0x6402B5
-{
- onesCounter = 9; // Number of significant bits in mask
- bitMask = 0x1FF;
-
- dword_5360E4 = 0x100; // WTF this meaning?
-
- ebx = 0;
- ecx = 0x800;
- while (ecx--)
- {
- *(uint16_t)(LUT + ebx) = 0xffff;
- ebx += 3;
- }
-
- al = 0;
-
- ebx = 0;
- ecx = 0x100;
- while (ecx--)
- {
- LUT[ebx + 2] = al;
- al++;
- ebx += 3;
- }
-}
-
-//
-// Decoder (kind of RLE with crazy look-up table)
-//
-// Also found some info on compression here: https://github.com/vvendigo/Darklands/blob/master/file_formats/quadko/PicFileFormat.txt
-//
-
-j_Mps_DecodeLine (
- uint8_t *picPtr, // Pointer where to decode part of image
- int Width) // Unaligned width in pixels
-{
- NextBytes (picPtr, Width);
-}
-
-Mps_NextBytes(uint8_t * outPtr /*edi*/, int Width /*ecx*/) // 0x640300
-{
- if ( bcdEncoded)
- {
- pic_OpCount = (Width + 1) / 2;
- }
- else
- {
- pic_OpCount = Width;
- }
-
- swap (esp, pic_SomeBuffer)
-
- while (pic_OpCount--)
- {
- if ( pic_RepeatCount )
- {
- al = pic_RepeatByte;
- pic_RepeatCount--;
- }
- else
- {
- al = Mps_NextRun();
-
- if (al == 0x90)
- {
- al = Mps_NextRun();
-
- if (al != 0)
- {
- pic_RepeatCount = al - 1;
-
- al = pic_RepeatByte;
- pic_RepeatCount--;
- }
- else
- {
- al = 0x90;
- pic_RepeatByte = al;
- }
- }
- else
- {
- pic_RepeatByte = al;
- }
- }
-
- // al - result
-
- if (bcdEncoded)
- {
- // Unpack BCD as uint16
-
- ah = al;
- al &= 0xF;
- ah >>= 4;
-
- *(uint16 *)outPtr = ax;
- outPtr += 2;
- }
- else
- {
- *(uint8_t *)outPtr = al;
- outPtr++;
- }
- }
-
- // Quit
-
- swap (pic_SomeBuffer, esp)
-}
-
-// Most evil
-
-Mps_NextRun()
-{
- // esp - Pointed at SomeBuffer (used as temporary space)
-
- if ( esp == &unk_5364F3 ) // On top of temporary buffer? (buffer is empty?)
- {
- ebx = pic_MagicValueWord >> (16 - bitPointer);
- cl = bitPointer;
-
- // Loop 1
-
- while (cl < onesCounter)
- {
- if ( esi >= off_526C9C)
- {
- MpsReadCallback ();
- esi = MpsBuffer;
- }
- eax = 0;
- ax = lodsw;
- pic_MagicValueWord = eax;
-
- eax <<= cl;
- ebx |= eax;
- cl += 16;
- }
-
- // After loop 1
-
- bitPointer = cl - onesCounter;
-
- eax = ebx & bitMask;
- ecx = eax;
-
- if (eax >= dword_5360E4)
- {
- ecx = dword_5360E4;
- eax = savedIndex;
- bl = savedByte;
- push ebx; // Push in temporary buffer
- }
-
- // Loop 2
-
- while (1)
- {
- ebx = 3 * eax;
- ax = *(uint16_t *)(LUT + ebx) + 1;
-
- if (ax != 0) // Not 0xFFFF?
- {
- ax--;
- bl = LUT[ebx + 2];
- push ebx; // Push in temporary buffer
- }
- else
- {
- break;
- }
- }
-
- // After loop 2
-
- al = LUT[ebx + 2];
- savedByte = al;
- push eax; // Push in temporary buffer
-
- ebx = 3 * dword_5360E4;
- LUT[ebx + 2] = al;
- eax = savedIndex;
- *(uint16_t *)(LUT + ebx) = ax;
-
- dword_5360E4++;
- if (dword_5360E4 > bitMask)
- {
- onesCounter++;
- bitMask = (bitMask << 1) | 1;
- }
-
- if (onesCounter > pic_MagicValueByte)
- {
- Mps_PrepareBuffer ();
- ecx = 0; // Cleared inside PrepareBuffer
- }
-
- savedIndex = ecx;
- }
-
- // Quit
-
- pop eax; // Pop from temporary buffer
-}
diff --git a/ShandalarImageToolbox/File Format Helpers/CATImageDecoder.cs b/ShandalarImageToolbox/File Format Helpers/CATImageDecoder.cs
index bdedd7e..e0aea93 100644
--- a/ShandalarImageToolbox/File Format Helpers/CATImageDecoder.cs
+++ b/ShandalarImageToolbox/File Format Helpers/CATImageDecoder.cs
@@ -18,42 +18,36 @@ public static Bitmap DecodeCatImage(ShandalarAsset asset)
int height = (int)BitConverter.ToUInt32(asset.data, 0x20);
int smallTableSize = (int)BitConverter.ToUInt32(asset.data, 0x24);
- int var_14;
- int var_24;
+ int newWidth;
+ int newHeight;
if ((int)BitConverter.ToUInt32(asset.data, 0) != 0)
{
- /// var_14
- int eax = width;
- int ecx = (int)BitConverter.ToUInt32(asset.data, 0x28) - 1;
- if (ecx == 0)
- var_14 = eax / 2;
- else
- var_14 = eax;
-
- /// var_24
- eax = height;
- ecx = (int)BitConverter.ToUInt32(asset.data, 0x28) - 1;
- if (ecx == 0)
- var_24 = eax / 2;
- else
- var_24 = eax;
+ bool halfSize = BitConverter.ToUInt32(asset.data, 0x28) == 1 ? true : false;
+ if (halfSize){
+ newWidth = width / 2;
+ newHeight = height / 2;
+ }
+ else{
+ newWidth = width;
+ newHeight = height;
+ }
}
else
{
- var_14 = width;
- var_24 = height;
+ newWidth = width;
+ newHeight = height;
}
int ptr1 = 0;
int ptr2 = ptr1 + width * width * 4 + 0x80;
- int ptr3 = ptr2 + var_14 * var_14 * 4 + 0x80;
+ int ptr3 = ptr2 + newWidth * newWidth * 4 + 0x80;
int[] tempArray = GeneralUtilityFunctions.ByteArrayToIntArray(uncompressedData, 0);
Wavelet.WaveletDecode(ref tempArray, ptr1, width, smallTableSize);
- Wavelet.WaveletDecode(ref tempArray, ptr2 / 4, var_14, smallTableSize);
- Wavelet.WaveletDecode(ref tempArray, ptr3 / 4, var_14, smallTableSize);
+ Wavelet.WaveletDecode(ref tempArray, ptr2 / 4, newWidth, smallTableSize);
+ Wavelet.WaveletDecode(ref tempArray, ptr3 / 4, newWidth, smallTableSize);
/// YCbCr -> RGB
Bitmap outputImage = Wavelet.Decode_YCbCrToRGB(tempArray,
@@ -62,8 +56,8 @@ public static Bitmap DecodeCatImage(ShandalarAsset asset)
height,
ptr2 / 4,
ptr3 / 4,
- var_14,
- var_24);
+ newWidth,
+ newHeight);
// Return image
return outputImage;
diff --git a/ShandalarImageToolbox/File Format Helpers/PicDecoder.cs b/ShandalarImageToolbox/File Format Helpers/PicDecoder.cs
index 501ad80..b5f0a39 100644
--- a/ShandalarImageToolbox/File Format Helpers/PicDecoder.cs
+++ b/ShandalarImageToolbox/File Format Helpers/PicDecoder.cs
@@ -91,7 +91,7 @@ private UInt16 GetWord()
private int onesCounter; /// Significant bit count
private UInt32 bitMask;
private byte[] LUT;
- private int dword_5360E4; /// 0x100
+ private int DecodeTableIndex; /// 0x100
private int savedIndex = 0;
private byte savedByte = 0;
@@ -128,7 +128,7 @@ private void PrepareBuffer()
onesCounter = 9;
bitMask = 0x1FF;
- dword_5360E4 = 0x100;
+ DecodeTableIndex = 0x100;
/// Fill FF FF 00 pattern
@@ -273,9 +273,9 @@ private byte NextRun ()
int oldIndex = (int)(b & bitMask);
int newIndex = oldIndex;
- if (oldIndex >= dword_5360E4)
+ if (oldIndex >= DecodeTableIndex)
{
- newIndex = dword_5360E4;
+ newIndex = DecodeTableIndex;
oldIndex = savedIndex;
PushValue(savedByte);
}
@@ -298,11 +298,11 @@ private byte NextRun ()
savedByte = GetLutValue(oldIndex);
PushValue(savedByte);
- SetLutValue(dword_5360E4, savedByte);
- SetLutIndex(dword_5360E4, savedIndex);
+ SetLutValue(DecodeTableIndex, savedByte);
+ SetLutIndex(DecodeTableIndex, savedIndex);
- dword_5360E4++;
- if (dword_5360E4 > bitMask)
+ DecodeTableIndex++;
+ if (DecodeTableIndex > bitMask)
{
onesCounter++;
bitMask = (bitMask << 1) | 1;
diff --git a/ShandalarImageToolbox/FormMain.resx b/ShandalarImageToolbox/FormMain.resx
deleted file mode 100644
index cb0e754..0000000
--- a/ShandalarImageToolbox/FormMain.resx
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 17, 17
-
-
- 439, 17
-
-
- 575, 17
-
-
- 89
-
-
-
-
- AAABAAEAMDAAAAAAAACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAA
- AAD///8AQkJCADExMQBKSlIAQkJKADk5QgAxMTkAKSkxAEpKWgAhISkAOTlKABgYIQAQEBgAGBgpACEh
- OQAICBAAISFSABAQKQAhIVoAGBhCABAQMQAYGFIAEBA5ABAQQgAICCEAGBhrABAQSgAYGHMAEBBSABAQ
- YwAICDEACAhCAAgISgAICFIACAhjAAAAcwAAAGMAAABaAAAAOQAAADEAAAApAAAAIQAAAAgAISmEACEp
- awAhISEAGCFaAHN7lABrc4wAY2uEAAgQKQBze4wAa3OEAFJaawBKUmMAjJy9AISUtQAIECEAY2t7AJyt
- zgCUpcYAQkpaADk5OQBaY3MAOUJSAIyctQCElK0Aa3uUAGNzjACcrcYAlKW9AHuMpQBzhJwAnLXWAJSt
- zgAYGBgAUlpjAISUpQBre4wAY3OEADE5QgCEnLUASlprABAYIQBrc3sASlJaAEJKUgB7jJwAc4SUAJy1
- zgCUrcYAjKW9AFprewApMTkAe5StAFJjcwBzjKUAISkxAFpjawA5QkoAGCEpAIScrQB7lKUAjKW1AHOM
- nABrhJQAa3uEAEpaYwBjc3sAQlJaAHuMlABaa3MAUmNrADlKUgAxQkoAa3NzAGNrawBSWloASlJSAEJK
- SgB7jIwAc4SEAGt7ewA5QkIAY3NzADE5OQBaa2sAKTExAFJjYwAhKSkAGCEhABAYGAAIEBAAAAgIAFpr
- YwAQEBAAa3tzAGNzawBKWlIAQlJKACkpKQBSWlIAWmNaAEpSSgBCSkIAOUI5ADE5MQApMSkAUmNSAEJS
- QgAhKSEAOUo5AEJSOQAICAgASlJCADE5KQApMSEAEBgIAAgQAABCSjkAGCEIABAYAAApMRgAISkQAEpS
- MQBCQjkAOTkxADExKQAhIRgAOTkpADExIQAYGBAAKSkYABAQCAAhIRAAKSkQABgYCAAhIQgAKSkIABgY
- AAAQEAAACAgAAAgAQgAQCFIACABrAAgA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAB1Aa89bodWA7cErj0qAFmBJIgAAO8FMAAAAAQAKIj3GdcFehrXBRgAAAAAADAA
- MAAwAAEIAADvSigAAAAwAAAAMAAAAAEACAAAAGBAYwD4IAAAsodQfxcBU3/4ICl5Uriq9ar17wX0h6wR
- nwSyDfYFurq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6
- urq6urq6urq6urigobq6urq6urq6urq6uqG6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urF2
- sLq6urNTurq6urq6upSqurq6urq6urq6urq6urq6urq6urq6urq6urq6urq6HJEEq7q6qZq6urq6urq6
- LHp7urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6tGN3sLoNjZS6uiaklbq6r0Omurq6urq6urq6
- urq6urq6urq6urq6urq6urq6urq6mQV3SydjNY66uiF8ZT8ofU6Surq6urq6urq6urq6urq6urq6urq6
- urq6urq6urq6tHt3S0tVP5S6uhmIQjq6Y0OSurq6urq6urq6urq6urq6urq6urq6urq6urq6urq6tHsE
- gVVwPz+buit5R2yEVk5/urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6tHt3Azo6P282gVVYWC81
- XDCcurq6urq6urq6urq6urq6urq6urq6urq6urq6urq6mQUEVWJPb2I/WEdOTmhCaE+curq6urq6urq6
- urq6urq6urq6urq6urq6urq6urq6tAV7BFU/OnA/WFgwTlhDMEyMuLq6urq6urq6urq6urq6urq6urq6
- urq6urq6urocAnt7VUxVTD9iTkNYV0hDb1YFoCK6urq6urq6urq6urq6urq6urq6uronHxoVEhKnewUE
- cD99g1Y1bE5OOmhIXFVWBIwSEhIVFx+6urq6urq6urq6urq6F12nAqY+kaVjewRVVVYFug9MQjCDgTBO
- T281a1WPj3aLkJEOILq6urq6urq6uroTpnt7e3t7BHdWVlVVVlZ3g7qDX3+6UE86XD9vP3A1azZVNlUD
- myG6urq6urq6uhObewUFewUFewRWVnt7BFZVB7q6urq6a05cNVVVTDZ2VlZWVVVtA6K6urq6urq6uq8E
- BXs+An19fQU+fQRWVgNVBbq6urqZT05cbzVWBX0GAn0FY3cIVpAVurq6urq6Fj57BX1WTD9PM04/cDE0
- T281Y7WZg7oLQ1hOME40b09qTjQ6TFVWVVWcHrq6urpTp3s+BVVMYjZWTE9NZVdYMzQ/d5kMVgxdVy9O
- WGhnO0JPXDVxbVxcNVVWqB66urqqBH1WcIEPD7q6ug+BP1dNWE58VoeDTEtQR2lIQkVCNoOZmbq6mQtM
- OjVrBLC6uocFez4DCbq6urq6urq6ugw9TlhsTIcMcAtxR01bWU8Murq6urq6urqFCUxVBJO6ulORBWOB
- urq6urq6urq6urq6UDpPYi2DYl1cUUZbNYW6urq6urq6urq6mWM2cJu6urqqewR/Krq6urq6urq6urq6
- jARVNWMFak9YQkhcBrq6urq6urq6urq6umNcYhW6urqgewR9urq6urq6urq6urqCBZEFBGJDZkZmOlVj
- BUu6urq6urq6urq6mW1Ojbq6urqxewQFmbq6urq6urq6mYI+AVA+fTZNPDxPVgUFez6Cmbq6urq6urq6
- hD9OgB26urqoAXsEgbq6urq6hYctAgV7UAQIVmN8ZjR7PndVVVVWBoe6urq6urq6XVhEb6G6urqie3tj
- dwu6upkLAgUEVndjAzVvXGI1OlZ9YzVvb1xOTjUHhLq6urqZbEhPOku6urqvBAUEBAMDVTZMVVVwP3Bi
- XE80TlhYTk9PNE4vTi9HQWdXTzZ7Y2sxYENEXIK6urqoe3t7d1VPTjQ6XDo6OjpPTi9YV0dmTUJCR1dH
- ZmZNUVs8WlpaWlpRR0NOjrq6urqjAXsEBFY1fHBibzpsNE4zbldmQmVCQUJBQWVBQVFBQUFnN0E3UUJH
- SGlOlLq6urqzY3tjd1Z1NUw1Pzo0TlhIR0JlZUFBQWdnW1tGW0ZbW0FRUWVCQl5XSFhDlbq6uroupnsE
- BFZVVUxMcD86TlhXTUJBQUFBQTdGW0ZGRjxGW0FRQUJeQkdoSGlOqrq6urq6snd7d3dVVUxMYm9sTlhH
- TUJBQWdGZ1tGRkZaWlpaRltBUVFCXkdoSFiGurq6urq6uqkEBHdVVVU1YjpPL1dNQmVnQUFnW0ZGWkVa
- WkVaWjxbQUJCZkdoSFiYurq6urq6upx3YwRWVUxMPzpOL1dNZUFBZ1tGRkY8RlpaO0VZWjxbUTheR0dI
- SIm6urq6urq6ui6pd3cIVUxiP2xObldCQUFGW0ZGRlpaWkVFWVk7RVpbN2VCZkdIV226urq6urq6urqM
- kFZVTDViXDRYZkJlQUFbRjxaWkVaO0VaRllJWlpbQVFeR0dmiSy6urq6urq6uroUmwhVTDVvNE8xOm8/
- SFFBQUZGWkVFRVlZQUdaSVtbUVFCZmZYm7q6urq6urq6urq6nZBVTD80VQuCYzZcTUFRQUFGRlpaWlo7
- SldfL1pGUUJeXld3urq6urq6urq6urq6uqF3YmJQhIw1Q1dCQmVlZUFRQVtGW0ZbRlsvbUAxUVFlR4u6
- urq6urq6urq6urq6urqddn26XWlYbkhXV0dmQkJCZVFRQVFRUVFbQm2ZXU5Yl7q6urq6urq6urq6urq6
- urq6uoOFijNOTlhYaFdXR2ZNQkJeZUJlQmVCZ1GLumRLurq6urq6urq6urq6urq6urq6urq6uqSIiFhY
- WG5XV0dHZkJNTWVNTWVleHmpuLq6urq6urq6urq6urq6urq6urq6urq6urq6uqSJiHmIeW5mZk14eHl5
- eY6Yurq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6uqKpmKm6urq6urq6urq6urq6urq6
- urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6
- urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6
- urq6urq6urq6urq6urq6urq6urq6urq6urq6urq6////////urr//x/+//+6uv//HP5//7q6//4Z/H//
- urr//hGMf/+6uv/+AYB//7q6//4BgH//urr//gCAf/+6uv/+AAB//7q6//4AAH//uqH//gAAP/+6uv/8
- AAAf/7q6/wAAAAB/urr8AAAAAB+6uvgAAAAAD7NT8AAAAAAPupTwAAAAAAe6uuAAAAAAA7q6wAAAAAAB
- urrAAAAAAAG6HIAAAAAAAZq6gAAAAAABLHrAAAAAAAG6usAAAAAAA7q6wAAAAAABurrAAAAAAAG6tMAA
- AAAAAZS6wAAAAAABr0PAAAAAAAO6usAAAAAAA7q6wAAAAAADurrAAAAAAAO6meAAAAAAB4668AAAAAAH
- fU7wAAAAAA+6uvAAAAAAD7q6+AAAAAAPurr4AAAAAB+6tPwAAAAAP5S6/gAAAAB/Y0P/AAAAAP+6uv/A
- AAAB/7q6//gAAAf/urr//wAAf/+6tP///D///z+b////////Vk7///////+6uv///////7q6
-
-
-
\ No newline at end of file
diff --git a/ShandalarImageToolbox/GUI/AboutForm.Designer.cs b/ShandalarImageToolbox/GUI/AboutForm.Designer.cs
new file mode 100644
index 0000000..c384bc1
--- /dev/null
+++ b/ShandalarImageToolbox/GUI/AboutForm.Designer.cs
@@ -0,0 +1,125 @@
+namespace ShandalarImageToolbox.GUI
+{
+ partial class AboutForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.mainTextbox = new System.Windows.Forms.Label();
+ this.okButton = new System.Windows.Forms.Button();
+ this.titleLabel = new System.Windows.Forms.Label();
+ this.versionLabel = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // mainTextbox
+ //
+ this.mainTextbox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+ this.mainTextbox.Location = new System.Drawing.Point(7, 48);
+ this.mainTextbox.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.mainTextbox.MaximumSize = new System.Drawing.Size(500, 400);
+ this.mainTextbox.Name = "mainTextbox";
+ this.mainTextbox.Size = new System.Drawing.Size(279, 234);
+ this.mainTextbox.TabIndex = 19;
+ this.mainTextbox.Text = "by CelestialAmber\r\n\r\nCredits:\r\nogamespec - Original project, and code for .pic/.c" +
+ "at files";
+ //
+ // okButton
+ //
+ this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.okButton.Location = new System.Drawing.Point(364, 258);
+ this.okButton.Name = "okButton";
+ this.okButton.Size = new System.Drawing.Size(70, 24);
+ this.okButton.TabIndex = 24;
+ this.okButton.Text = "&OK";
+ //
+ // titleLabel
+ //
+ this.titleLabel.AutoSize = true;
+ this.titleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 16F);
+ this.titleLabel.Location = new System.Drawing.Point(5, 9);
+ this.titleLabel.Name = "titleLabel";
+ this.titleLabel.Size = new System.Drawing.Size(52, 26);
+ this.titleLabel.TabIndex = 26;
+ this.titleLabel.Text = "Title";
+ //
+ // versionLabel
+ //
+ this.versionLabel.AutoSize = true;
+ this.versionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
+ this.versionLabel.Location = new System.Drawing.Point(7, 35);
+ this.versionLabel.Name = "versionLabel";
+ this.versionLabel.Size = new System.Drawing.Size(42, 13);
+ this.versionLabel.TabIndex = 25;
+ this.versionLabel.Text = "Version";
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.pictureBox1.Image = global::ShandalarImageToolbox.Properties.Resources.logo;
+ this.pictureBox1.Location = new System.Drawing.Point(292, 9);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(142, 142);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 27;
+ this.pictureBox1.TabStop = false;
+ //
+ // AboutForm
+ //
+ this.AcceptButton = this.okButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(435, 283);
+ this.Controls.Add(this.pictureBox1);
+ this.Controls.Add(this.titleLabel);
+ this.Controls.Add(this.versionLabel);
+ this.Controls.Add(this.mainTextbox);
+ this.Controls.Add(this.okButton);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AboutForm";
+ this.Padding = new System.Windows.Forms.Padding(9);
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "About ShandalarImageToolbox";
+ this.Load += new System.EventHandler(this.AboutWindowForm_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Label mainTextbox;
+ private System.Windows.Forms.Button okButton;
+ private System.Windows.Forms.Label titleLabel;
+ private System.Windows.Forms.Label versionLabel;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ }
+}
diff --git a/ShandalarImageToolbox/GUI/AboutForm.cs b/ShandalarImageToolbox/GUI/AboutForm.cs
new file mode 100644
index 0000000..76e8d5f
--- /dev/null
+++ b/ShandalarImageToolbox/GUI/AboutForm.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ShandalarImageToolbox.GUI
+{
+ partial class AboutForm : Form
+ {
+ public AboutForm()
+ {
+ InitializeComponent();
+ this.Text = string.Format("About {0}", AssemblyTitle);
+ this.titleLabel.Text = string.Format("{0}", AssemblyTitle);
+ this.versionLabel.Text = string.Format("Version {0}", AssemblyVersion);
+ }
+
+ #region Assembly Attribute Accessors
+
+ public string AssemblyTitle
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+ if (attributes.Length > 0)
+ {
+ AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+ if (titleAttribute.Title != "")
+ {
+ return titleAttribute.Title;
+ }
+ }
+ return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+ }
+ }
+
+ public string AssemblyVersion
+ {
+ get
+ {
+ return Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ }
+ }
+
+ public string AssemblyDescription
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyDescriptionAttribute)attributes[0]).Description;
+ }
+ }
+
+ public string AssemblyProduct
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyProductAttribute)attributes[0]).Product;
+ }
+ }
+
+ public string AssemblyCopyright
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
+ }
+ }
+
+ public string AssemblyCompany
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
+ if (attributes.Length == 0)
+ {
+ return "";
+ }
+ return ((AssemblyCompanyAttribute)attributes[0]).Company;
+ }
+ }
+ #endregion
+
+ private void AboutWindowForm_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void tableLayoutPanel_Paint(object sender, PaintEventArgs e)
+ {
+
+ }
+
+ private void okButton_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+ }
+}
diff --git a/ShandalarImageToolbox/FormPalette.resx b/ShandalarImageToolbox/GUI/AboutForm.resx
similarity index 100%
rename from ShandalarImageToolbox/FormPalette.resx
rename to ShandalarImageToolbox/GUI/AboutForm.resx
diff --git a/ShandalarImageToolbox/FormMain.Designer.cs b/ShandalarImageToolbox/GUI/FormMain.Designer.cs
similarity index 98%
rename from ShandalarImageToolbox/FormMain.Designer.cs
rename to ShandalarImageToolbox/GUI/FormMain.Designer.cs
index 6446a6e..cec5139 100644
--- a/ShandalarImageToolbox/FormMain.Designer.cs
+++ b/ShandalarImageToolbox/GUI/FormMain.Designer.cs
@@ -1,4 +1,4 @@
-namespace ShandalarImageToolbox
+namespace ShandalarImageToolbox.GUI
{
partial class FormMain
{
@@ -59,9 +59,9 @@ private void InitializeComponent()
this.previewPanel = new System.Windows.Forms.Panel();
this.imagePanel = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
- this.textBox1 = new System.Windows.Forms.TextBox();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
+ this.textBox1 = new System.Windows.Forms.TextBox();
this.hexEditor1 = new ShandalarImageToolbox.HexEditor();
this.menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
@@ -206,6 +206,7 @@ private void InitializeComponent()
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.aboutToolStripMenuItem.Text = "About";
+ this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
// saveFileDialog1
//
@@ -293,7 +294,7 @@ private void InitializeComponent()
this.topPreviewUiPanel.Location = new System.Drawing.Point(0, 0);
this.topPreviewUiPanel.Margin = new System.Windows.Forms.Padding(0);
this.topPreviewUiPanel.Name = "topPreviewUiPanel";
- this.topPreviewUiPanel.Size = new System.Drawing.Size(1180, 29);
+ this.topPreviewUiPanel.Size = new System.Drawing.Size(1184, 29);
this.topPreviewUiPanel.TabIndex = 3;
//
// useLastEmbeddedPaletteCheckbox
@@ -355,7 +356,7 @@ private void InitializeComponent()
this.previewPanel.Location = new System.Drawing.Point(0, 28);
this.previewPanel.Margin = new System.Windows.Forms.Padding(2);
this.previewPanel.Name = "previewPanel";
- this.previewPanel.Size = new System.Drawing.Size(754, 588);
+ this.previewPanel.Size = new System.Drawing.Size(758, 588);
this.previewPanel.TabIndex = 5;
//
// imagePanel
@@ -368,7 +369,7 @@ private void InitializeComponent()
this.imagePanel.Location = new System.Drawing.Point(0, 0);
this.imagePanel.Margin = new System.Windows.Forms.Padding(0);
this.imagePanel.Name = "imagePanel";
- this.imagePanel.Size = new System.Drawing.Size(754, 566);
+ this.imagePanel.Size = new System.Drawing.Size(758, 566);
this.imagePanel.TabIndex = 4;
//
// label2
@@ -382,25 +383,13 @@ private void InitializeComponent()
this.label2.Size = new System.Drawing.Size(0, 13);
this.label2.TabIndex = 5;
//
- // textBox1
- //
- this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.textBox1.Location = new System.Drawing.Point(0, 0);
- this.textBox1.Multiline = true;
- this.textBox1.Name = "textBox1";
- this.textBox1.ReadOnly = true;
- this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
- this.textBox1.Size = new System.Drawing.Size(754, 588);
- this.textBox1.TabIndex = 6;
- this.textBox1.Visible = false;
- //
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1});
this.statusStrip1.Location = new System.Drawing.Point(0, 566);
this.statusStrip1.Name = "statusStrip1";
- this.statusStrip1.Size = new System.Drawing.Size(754, 22);
+ this.statusStrip1.Size = new System.Drawing.Size(758, 22);
this.statusStrip1.TabIndex = 6;
this.statusStrip1.Text = "statusStrip1";
//
@@ -409,12 +398,24 @@ private void InitializeComponent()
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 17);
//
+ // textBox1
+ //
+ this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.textBox1.Location = new System.Drawing.Point(0, 0);
+ this.textBox1.Multiline = true;
+ this.textBox1.Name = "textBox1";
+ this.textBox1.ReadOnly = true;
+ this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
+ this.textBox1.Size = new System.Drawing.Size(758, 588);
+ this.textBox1.TabIndex = 6;
+ this.textBox1.Visible = false;
+ //
// hexEditor1
//
this.hexEditor1.Dock = System.Windows.Forms.DockStyle.Fill;
this.hexEditor1.Location = new System.Drawing.Point(0, 0);
this.hexEditor1.Name = "hexEditor1";
- this.hexEditor1.Size = new System.Drawing.Size(754, 588);
+ this.hexEditor1.Size = new System.Drawing.Size(758, 588);
this.hexEditor1.TabIndex = 0;
//
// FormMain
diff --git a/ShandalarImageToolbox/FormMain.cs b/ShandalarImageToolbox/GUI/FormMain.cs
similarity index 95%
rename from ShandalarImageToolbox/FormMain.cs
rename to ShandalarImageToolbox/GUI/FormMain.cs
index 055343a..00e7be3 100644
--- a/ShandalarImageToolbox/FormMain.cs
+++ b/ShandalarImageToolbox/GUI/FormMain.cs
@@ -13,7 +13,7 @@
using System.IO;
using System.Runtime.InteropServices;
-namespace ShandalarImageToolbox
+namespace ShandalarImageToolbox.GUI
{
public partial class FormMain : Form
@@ -22,30 +22,22 @@ public partial class FormMain : Form
static extern bool AllocConsole();
private List palettes = new List();
- public Color[] lastEmbeddedPalette;
-
-
-
+ public Color[] lastEmbeddedPalette;
public List loadedImages = new List();
public int loadedImageIndex;
public string windowTitle;
public int selectedPaletteIndex;
public bool useLastEmbeddedPalette;
public static string downloadsPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/Downloads/";
+
public FormMain()
{
-
-
InitializeComponent();
-
windowTitle = Text;
-
-
#if DEBUG
AllocConsole();
#endif
SetupGrayPalette();
-
paletteComboBox.Enabled = true;
paletteComboBox.SelectedIndex = 0;
paletteComboBox.Text = paletteComboBox.SelectedItem.ToString();
@@ -66,13 +58,12 @@ public void AddPalette(string name)
{
palettes.Add(new Color[256]);
paletteComboBox.Items.Add(name);
-
}
+
public void AddPalette(Color[] palette, string name)
{
palettes.Add(palette);
paletteComboBox.Items.Add(name);
-
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
@@ -114,6 +105,18 @@ private void UpdateStatusBarText(string text)
}
+ public static string[] duelTransparentPicFiles =
+ {
+ "Dying.pic",
+ "Poison.pic",
+ "Manastripes.pic",
+ "Summon.pic",
+ "Target.pic",
+ "Willuntap.pic",
+ "Canttarget.pic"
+
+ };
+
///
/// Load and decode .PIC image
///
@@ -149,28 +152,25 @@ private void loadPicToolStripMenuItem_Click(object sender, EventArgs e)
}
}
- public ShandalarAsset GetPic ( byte [] data, string name)
+ public ShandalarAsset GetPic(byte [] data, string name)
{
Color[] originalPalette = palettes[selectedPaletteIndex];
-
-
-
PicDecoder decoder = new PicDecoder(data);
if(decoder.hasPalette) palettes[selectedPaletteIndex] = decoder.embeddedPalette;
/// Output image as picture box
-
-
Bitmap bitmap = new Bitmap(decoder.width, decoder.height);
+ byte[,] imageData = new byte[decoder.width,decoder.height];
- byte[,] imageData = new byte[decoder.width,decoder.height];
decoder.DecodeImage(imageData);
+
if (decoder.hasPalette)
{
useLastEmbeddedPaletteCheckbox.Enabled = true;
lastEmbeddedPalette = decoder.embeddedPalette;
}
+
for (int y = 0; y < decoder.height; y++)
{
for (int x = 0; x < decoder.width; x++)
@@ -189,7 +189,9 @@ public ShandalarAsset GetPic ( byte [] data, string name)
}
ShandalarAsset asset = new ShandalarAsset(name, data, ImageType.Pic);
asset.image = bitmap;
- if (asset.filePath.Contains("Rogue") || asset.filePath.Contains("Faces") || asset.filePath.Contains("Playface")) //Combine the embedded alpha channel with the main image for the face sprites
+ asset.filename = Path.GetFileNameWithoutExtension(asset.filePath);
+ Console.WriteLine(asset.filename);
+ if (asset.filePath.Contains("Rogue") || asset.filePath.Contains("Faces") || duelTransparentPicFiles.Contains(asset.filename + ".pic")) //Combine the embedded alpha channel with the main image for the face sprites
{
Bitmap transparentSprite = new Bitmap(asset.image.Width / 2, asset.image.Height);
for(int x = 0; x < asset.image.Width/2; x++)
@@ -207,7 +209,6 @@ public ShandalarAsset GetPic ( byte [] data, string name)
}
palettes[selectedPaletteIndex] = originalPalette;
asset.hasEmbeddedPalette = decoder.hasPalette;
- asset.filename = Path.GetFileNameWithoutExtension(asset.filePath);
ClearImagePanel();
return asset;
@@ -250,11 +251,7 @@ private void LoadSprToolStripMenuItem_Click(object sender, EventArgs e)
UpdateStatusBarText("Finished loading images from spr file.");
exportToolStripMenuItem.Enabled = true;
exportAllToolStripMenuItem.Enabled = true;
-
-
-
}
-
}
private void LoadCATFileToolStripMenuItem_Click(object sender, EventArgs e)
@@ -286,6 +283,7 @@ private void LoadCATFileToolStripMenuItem_Click(object sender, EventArgs e)
exportToolStripMenuItem.Enabled = true;
exportAllToolStripMenuItem.Enabled = true;
}
+
public void ShowImage(Bitmap imageTexture)
{
ShandalarAsset image = loadedImages[loadedImageIndex];
@@ -306,6 +304,7 @@ public void ShowImage(Bitmap imageTexture)
else
imagePanel.BackgroundImageLayout = ImageLayout.Center;
}
+
public void ClearImagePanel()
{
imagePanel.BackgroundImage = null;
@@ -517,6 +516,12 @@ private void UseLastEmbeddedPaletteCheckbox_CheckedChanged(object sender, EventA
}
}
+
+ private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ AboutForm about = new AboutForm();
+ about.ShowDialog();
+ }
}
}
diff --git a/ShandalarImageToolbox/GUI/FormMain.resx b/ShandalarImageToolbox/GUI/FormMain.resx
new file mode 100644
index 0000000..8584197
--- /dev/null
+++ b/ShandalarImageToolbox/GUI/FormMain.resx
@@ -0,0 +1,755 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 439, 17
+
+
+ 575, 17
+
+
+ 89
+
+
+
+
+ AAABAAEAAAAAAAEAIACOkAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAIAAAACAAgGAAAA9HjU+gAAIABJ
+ REFUeJzs3XecVNX5x/HPne2NrfReV3oXQToIFuxEiRp7dCwJduy9G6NJjK4mlqi/aOwRxRJwcEAQhiZI
+ WXpvu7DA9jb398fuKnV36j3nzj7v18uXuszc8wC7833uveeeA0IIIYQQQgghhBBCCCGEEEIIIYQQQggh
+ hBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQggh
+ hBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhG0YqgsQQghhX06nsyvQBegAtANaAc2BLCAdSAES
+ gTgguvZtVUA5UAIUAgVAPrAH2AlsBTYD63NyctZZ8ztpfKQBEEII0SCn0+kAhgCDgP5Ab6AnkBDmoUuB
+ lcAKYCmwCFiQk5PjDfO4EU8aACGEEMfldDpHAKOBEcAwIElpQb8qBuYBc4DZOTk5cxTXY0vSAAghhADA
+ 6XQmA2cBZwATgJZqK/LZLuBb4Cvgy5ycnCLF9diCNABCCNHIOZ3OC4DzgXOAJorLCdYh4HPg05ycnE9U
+ F6MzaQCEEKIRcjqdfYApwMVAJ8XlhMtG4D/A+zk5OctVF6MbaQCEEKIRcTqdZwOXA5NV12Kxj4C3c3Jy
+ pqsuRBfRDb9ECCGE3TmdzsuAa6iZ1NcYTQZ+BqQBqCVXAISwAY/blWEaRnu8ZicM2jswW3tNowUOM8th
+ OtIxzFTTJAmTBAyiwYgGM5qan3EHGEbNf5v1/cybYJiAiWF6MakGvGBUglmJSSUGRYbBQUyjwGt48/Aa
+ ux2Y27wONpvVxvrq2LgNw4YNK7Xiz0T4xul0/g64HjhVdS2KPZyTk/OI6iJ0Ig2AEIp53K5Mh2l2qzYY
+ aEAvDDqbGG0MkyzTJMUwiK0JcFN1qb4ywagwTbPIMMx8A7abBuvwOlZ4wZNRXLK865lnlqsuMtI5nc5z
+ gZuB8apr0YCE/3FIAyCEBTxuV5LDNPt4DcYYpjHYa5hdDIyWQKphEl3veXnEMTFMo8I0OAjmLhM2GAbL
+ 8EbNTCsuXizNQXCcTudA4BbgMtW1aELC/wQa1ceOEFbwuF09DcyRJsYI06SXYZgdwEhRXZdNmGCUmJi7
+ DJOfDIcxz2t4vxl86phVhmHY5hKICk6nMwm4rfafNMXl6ELCvx7SAAgRhCU/zOpX7XWcZZrGWPB2NzCa
+ AVGq64pAVabBXofXWINhzqmi+oMhI8atlqaghtPpnATcAYxSXYtGJPwbIA2AED7yuF1ZGMZwwzQneU1O
+ NQw6AbGq62rEqoBtmPyIg48ro+JmNLYJiE6nswlwN3AX0ngeTsLfB9IACHECHrerNSaTMJiEySAMWqiu
+ SdTLNDAKTJOlOLzToxzmZwNOHbdFdVHh4nQ6RwP3ULNkr/iVhL+PpAEQopbH7Uo1MSYYmJeYpjHMMGhm
+ o5n34vgKgLkOzLcOVRszxowZU6a6oFBwOp03Afdhn7X6LVFcXPz2O++88xJwANgP7FNcktakARCNmsft
+ GgzmRWCcBZyE/ExEMi+w0TD4usqsfuWUkeNXqS7IX06nMwu4H5iquhbd7N+/f/YHH3zw/VFfrgTygD3A
+ bmAnsB3p7AH5sBONjMftSjQxzjYwL8NkuGEYaaZ8FjRSxiFMfjQcvFNmRP93+PDhhaorqo/T6ewPPEDN
+ pj3iMCcI/xOpALYBW4HNQMTeJmqINAAi4nncruYmxgUG5hVgDKxdIU+Iw1UDyzGM1xKrzHd7jhmj1Xay
+ TqfzDOBB4BTVtehm3759sz/88ENfw/94CoENwHpgLTUNQqMgDYCISB63qxUYF4B5OZiD5Vtd+MFrwkrD
+ MP9ZbsS+qfrKgNPpvBR4COiqsg4dhSD8j1YO5AKra/+JaPKpKCKGx+3KMGGyAVeDOUS+vUUIVJvws2GY
+ r8aWVL7dd+LEYisHdzqdTmrCX55AOUoYwv9oBdRsHvQzNXMIIo58QgrbW+h2/caAG8EcXrMJjhBhUWnA
+ /GqD57bsyvvqoosuqg7nYE6ncyrwMLKq3zEsCP+jrQJ+oubqQMSQBkDYksftOsU0uNIwuQhIV12PaHSK
+ MfkER/XDg0eM3xjqgzudztuoCX9ZQvooCsK/zuzafyKGNADCNjxuV6ZhmJeapvF7oJfqeoSoeZrMWGMY
+ xnMJGXvf7dnzoqAnkNWe+T+GhP8xJPxDSxoAoT2P2zXSBKdhcoFpGHGGPLYn9FSOaXyL17x38JgxPwdy
+ gNp7/k8hl/2PIeEfetIACC153K4EMC4HcyrQXXU9QvgpF8N4ykhI/vegQYMqfXlD7Wz/PyET/o4h4R8e
+ 0gAIrXjcrmwTrjHgWjDSZcEuYXNFmLwV54h+sM+IEQUnelHtc/5/QR71O4aEf/hIAyC04HG7RgNOTC7C
+ kO9LEXEqTdOYHh1dfdvRGxTVrvD3MrLIzzEk/MNLPmiFUh63azIYU8E7XL4dReQzTRNjSZSDmwcOH/Nj
+ 7dr+ryHL+x5Dwj/85BNXKLFozuxrTdO8xYSe8k0oGqn13852r922c9eZqgvRjYS/NWTRFGEZj9sVbxjm
+ 703TuB2T9iAdqGi8Nm/d1mXbzl1dVNehGwl/60gDIMLO43YlAtcBt5imoz2YyA58ojHbV1DAop+Wqy5D
+ OxL+1pIGQISNx+2KB64HbsOkXc3pvgS/aNyqqqpZuSaXg4VabTionIS/9aQBEGHhcbtuwOB2TDoDcq1f
+ iFprN2xg3aZGuwX9cSkMfxegYlwtSAMgQsrjdl0O5jQTo4dhytm+EIfbm5fPgqU/qS5DKxL+6kgDIELC
+ 43adi8ldmAzDMJDleoU4UnV1NT/nrsXr9aouRRsS/mpJAyCC4nG7hgG3Y3IBhoHc4xfi+NZv2symrdtU
+ l6GNffv2uT788EO3gqEl/GtJAyAC4nG7OhqGOdU0+YOJ4TAMEwl/IY7vYGEhS1YEtD9QRJLw14M0AMIv
+ HrcrGphqYN5lmo5mYMrlfiEasHb9BkpKy1SXoQUJf31IAyB85nG7LsDkbgwGm8jlfiF8sScvj+Wrc1WX
+ oQUJf71IAyAa5HG7emGYd2Ial8uz/EL4Z826DapL0IKEv36kARAn5HG7ooDbgGmYjkwJfiH8s33nLtZv
+ lmf+Jfz1JA2AOC6P23U6MA3TGI1M8IsY5eXllFdUkJyUhMPhUF1OxMtdL2f/Ev76kgZAHMHjdjUH7gBu
+ B8OoCX+h0sFDhzh06BAHDxVSWFjIwcJCDh06xKHCQg4d9bWKigqKikvwequpqKykvKwcgEOFhfWOkZiQ
+ QHT0rx8HKSnJJMQnkJCQQEJCPE1SUoiPjychPp7ExASapDQhPS2VtLQ00lJTycxIJz09nYT4+LD+WdjJ
+ jl272Lx9h+oylJLw15s0AOIXHrfrYuAeDKMvppz1h5PX62V/QQH5+/aTl5/Pvv37yc/fx779+9mbl8f+
+ ggL25uWzv6CAqqqqsNdTUlp6xP831DCcSHx8HGmpqTTNyqJZ06a0bN6cFi2a06pFC1q2bEHL5i1ISkoM
+ RcnaW7thk+oSlJLw15+s0C7wuF3twbgTzJuQ2f0hceDgQXbt3sOePXvYvXcvO3buYvfevezZs4e8/H3s
+ LyhotCvCNUlJoWWLFrRr24ZOHTrQoX07OnZoT7s2bYmJiYxzkj15+Xzxv1mqy1BGwt8/TqfzEWBRTk7O
+ dCvHjYyfNhEwj9v1W+ABMLvXfEXCvyGmaZKXn8+u3XvYtWcPu3fvZveevezas4ddu3eza/duymovvYtj
+ HSos5FBhIbnr1h3x9aioKFq1bEnnjh3o0L493bO70T07m5YtmqspNAgbt2xVXYIyEv7+qQ3/B4GPAEsb
+ ALkC0Eh53K5WwDTgj6pr0Vl5eTmrc9eycvUaVq1Zw6YtW9i6bTvl5RLwVklPS6P7Sdn0yM7mpOxu9MjO
+ pmnTLNVlnVBhUREffP6l6jKUkPD3j9PpfBR44LAv9c3JyVlu1fhyBaARqt245z7TYQyWHfuOtWPnLhYu
+ Wox73jwWLlpMRUWF6pIatYIDB5j34wLm/bjgl69lZmTQv28f+vbuRd/evTmpW1cMQ4/zmW07dqouQQkJ
+ f/8cJ/wBpgCWNQB6/MQIS3jcrkTgbkzuwZDmr05RcTHzflzA/IUeFng85OXvU12S8FPTrEwG9OvHgH59
+ GdivH+3btVVWy2dffcO+ggPKxldBwt8/Jwh/gI05OTmdrapDGoBGonbXvnsxOUv+1msu7S9ctJiZs7/H
+ 9b2b0jJZpz2StGzRglNOHsTJAwcy7JQhJCYkWDLu7r17+XKmy5KxdCHh7x+n0/kYcH89L7kwJyfnEytq
+ kShoBDxulxOTBzFoqboWlSoqK1mw0MPM2d8ze85cSkpKVJckLBAXF0ff3r0YMWwoo0eMoEXzZmEby7N0
+ WaNa91/C3z8+hD/Auzk5Ob+zoh5pACKYx+1qCdwL3NxYH+8zTZOlPy3n8xkzmD1nLsXFEvqNXa8e3Tlt
+ 7BjGjxlNs6ZNQ3bc6upq/vPZdEobyQRRCX//+Bj+AIeA1jk5OUVhLkkagEjlcbvGAg9gMLoR5j779xfw
+ 7Xff8dn0L9mwqXEvyCKOz+Ew6N2zJ+PHjOa0sWPIzMgI6ng7d+/hq+9mh6Y4zUn4+8eP8K8zJScn5z/h
+ qqeONAARyON23UDNc6UtVNdiJa/Xy/yFHj774kvmzptvyQp6IjI4HA4GDxjApDMmMnbUSGJjY/0+xqJl
+ P/HTqjVhqE4vEv7+cTqdjwP3+fm2f+Xk5FwZhnKOIA1ABPG4XRnA/ZjcahoGRiM59d+1ew+fz5jB9Blf
+ s2fvXtXlCJtr0iSFMyecxnlnT6Jzx44+v++j6V9ysDDsV22VUhj+3wEqxg1KgOEPsCsnJ6dVqOs5mjQA
+ EcLjdg2i5hLTuaprsYLX62XRkqV8Ov0LXO45VFdXqy5JRKDu2d04/+yzmXjauHqfJNh/4ACfzvjGwsqs
+ 171zp50vvvzIPzdtKrb6zKIxnfkfbmROTs6cUNVzPFHhPLiwhsftmgy8AIxUXUu4HTx0iA8/+ZRHnnqa
+ 9z/6mI2bN2PKYkYiTPL37WPOvPl8+OmnHDx4iA7t25OcnHTM67Zu38HWCF4AaMSQwfTr3SvlzAnndd2X
+ l79q7YYNVt1fa6zhD7Bp0aJFYb3qIQ2AzXncrtuAPxsY6lY+scCu3bt57Y03efDxJ/nhxwUB71YnRCAq
+ KytZvnIl//n4Y1atyaV1yxY0b/br44Qr16xl/4GDCisMnxFDBtOtcycAYmNjUoYPGzogrUna+nkLFxaH
+ eWi7hv8TBB/+AFWLFi16JwTHOSG5BWBTHrcrnZqVpG5VXUs4rduwkXff/w/fzJwll/mFVvr27sWUyRcy
+ ZtRI3vvkv5RH6JLRw08eRHaXIxenM02zevHSZf+94ZbbVoRpWDuH/70hOlwx0CQnJyds24ZKA2BDHrer
+ JzXhf3HNs/2R99e4fuNGXvnH67h/mKe6FCHqdeqwYfTu00d1GWF1vCYAYOu2rXMvvPSKUO97LOH/q2E5
+ OTnzG3jNGGAn4PcKVI6AShLK1D7f/7JpGhfXfCWywn/3nr08+afnufTq30v4C1tITDp2TkCkmbtwEbnr
+ Nxzz9XZt2w3/+tNPL2rRokWoPojsGv5PEvrwBxjUwK+PAUYBfQM5uDQANuJxu6YAL4Mx0jAia+JbVVUV
+ //q/97jwksv49PMv8HrDdtVLiJBq0qSJ6hIscaImIDMzrfv7b71+7fDhg2KCHMLO4X9PmA7fv55fqwt/
+ gB5Ac38PLpMAbcLjdt0MPItJ2wg76cezZClT77ybmS4X1RL8wmYGDRoU0MJBdrR1x06SEhLIOmrVxNiY
+ mJSxI0b3KS4sXrFyzZrKAA4t4X981YsWLfrHcb5+ePjXKQP8WvZUGgAb8LhdDwJPA0mRFP5er5d/vPUv
+ nnj2OQ4ePKS6HCECcsopp2AYEfSD2YATNQFRUVHxp5w8aECT5JTc+R6PP5tuSPifWPqiRYueOOprxwt/
+ gCbAAn8O3ni+a23I43alAg8ZmLeaEfZXdfDQIaY98BCLly5TXYoQAcvOzmbMmDGqy1DiRBMDTdOsmjdv
+ wYe33HPPWh8OY9fwfwq426LhuuXk5Kyr/e+x1L/ey3+A1b4eWOYAaMrjdrUFngduNSPsr6mouJg/3H6n
+ hL+wvfT0dNUlKHOiOQGGYUSfeurQKf96LefkBg4h4e+bLrX/bij8Abr7c+DISpYI4XG7ugPPAdfUPOYX
+ ORP+vF4vd9x7P6tzfTk5EEJvycnJqktQ6kRNAJhGj5Oyz/jwnX+NPcFbJfx91wHfwh8gG/B5Qoo0AJrx
+ uF0DgWeBiHzM7/MZX8mZv4gYCfXsD9BYnLgJgA7t24347P13Jh71ZbuG/9NYH/6UlJSMwPdl3uOAbr4e
+ WxoAjXjcruHUTPabpLqWcHn7/95TXYIQIdNYZv83pL4moHWrNqfM+PjDC2r/13bh73Q6DafT+SIwTcX4
+ Xq+3h59v6dLwS2pIA6AJj9s1DnjSxByvupZwqaioYNuOHarLECJkpAH4VX1NQNOmWb2//3rGCGwY/tRs
+ tDZVVQ3R0dH+3mc6dmbmCUgDoAGP23U68IRhMMKIsEv+QkSymJhg176JLPU1AYmJCWM9btcXpvmwLXJH
+ h/AHcDgciX6+JQVo79Ox/S9HhJLH7ZoEPI5pDIn0XW2jo6NVlyBESEVFyVIqR6uvCQDOWjxn1CyXy6X1
+ h0Ft+L+I4vAHcDgc8QG8rYNPxw7gwCJEPG7XOcCjhmEMJMKW9j0eh8OBwyHfciJySANwfPU1ASaMTo7C
+ tWjRIi0vnxwW/n9UXQuAw+GIC+Bt7Xw6dgAHFiFQG/6PAP3NSD/1P4xcMhWRRBraE2vgSsBws7Toe92u
+ BOgW/gCGYQTyodkWHx4hk+9eBWov+z9kQj/VtVgtRm4DiAjSmJYADkS9TYBpDk2K4mtd5gTUhv9f0Cj8
+ AQzDCOQyUyzQpqEXafEH35jUTvh7CIwBjfGjQ+YBiEgiDUDD6msCDBi3aO6ozywu6RiHhf8fVNdyHIHm
+ dKtwHVgEoPZRv4dNg0GRtLqfPxIT/Z3QKoSwu/qvBHD2wu9nfWJtRb/SPPyD0aKhF0gDYJHaRX4eAoY0
+ gvl+J5SWmqq6BCFCpjHN3wlWvVcCDMf5P86e9abFJdkl/APdI715Qy+QBsACtcv7PgSMUF2Lamlp0gCI
+ yCENgH/qawKiHI4rf5j57atW1VIb/n9F7/DHNM3qAN/atKEXSAMQZrUb+zwMROwKf/6QKwAikni9gZ6c
+ NV71NQGxsTHXub6c/tdw13BY+N8c7rGCZZpmZYBvjQEy63uBNABhVLul70PApEi45+/1evn6fzODOkZq
+ kyYhqkYI9aqrAz05a9zmLlzEmhM0AckpSTd/+cmHz4VrbDuFP4DX6y0P4u0Z9f2iNABh4nG7UqkJ/4jY
+ 1a+0rIxpDz7ME8/9KaizHrkCICKJNACB++GETYBhNMvKuv3dN167P9Rj1ob/37BJ+AN4vd6yIN6eVt8v
+ SgMQPg8B16guIhTy8vK57uY/Mts9h7KycjZt2RLwsZo1a/C2lBC2UVkZ6NVZAfU1ARjdOnd5+NlHH70+
+ VGMdFv43heqYVvB6vSVBvL3eMy5pAMLA43Y9CNyquo5QWLdhI1ffeBNr1q775Wur1+QGfLw2rRp8NFUI
+ 26ioqFBdgu2dqAkwDCNq1IhhL15/1VVXBzuGXcMfoKqqqiiIt6fU94vSAISYx+26GXgwEiYH//DjAq69
+ 6Q/s3rP3iK+vzl0b8DHbtJYGQEQOaQBC40RNgCMqKv7yS3/753PGj7800GPbOfwBKisrC4N4e1J9vygN
+ QAh53K4phsGDQJTdFwh7/6OPue3ueygpOfbqUzANQFZmJokJCcGUJoQ2SktLVZcQMU7UBMTGxqTedset
+ z7Vr1+4y/JxMVRv+L2HT8AcoLy8/GMTb6115TRqAEPG4XWOBB71ew9Y3uSsrq3jsmWd5/q8v4fUe/zLG
+ 2vXrg5r81LpVy4DfK4ROioqCuTorjnaiJiApMbHla3/98z3AFfiYW4eF/40hLdJiJSUlB4J4e71nW9IA
+ hIDH7eoJPAh0N2y8zF9JaSlT75rG519+Ve/rysvL2bg58ImA7dv5tFOlENorKChQXULEOVETkJmR2ePj
+ d9++BrgSqHeDnEgJf4CCgoL9Qbw9tr5flAYgSB63Kx14ABhl52f9Dx46xI233IZn8RKfXh/MRMDu2dkB
+ v1cIneTm5spiQGFwoiagXbu2w1/+ywtnUtMEHDe/Iin8TdOs8ng8wTQA9W4lLA1A8B4ALq65NWXPG//7
+ 9u/nhqm3snL1Gp/fs2LVqoDH69n9pIDfK4RuZB5AeJyoCRjUr+/5t0+9eQBwzJyASAp/gMrKyr0Nv6pe
+ 9W6/Kg1AEDxu12388rifPc/+d+zcxTU33sy6DRv9et/yn38OeMzuJ2XjcMi3nogMx5soK0LjeE2AYRiO
+ yeeed+UZY8d2B6bUfb02/P9OhIQ/QEVFRbANQL0ftPIpHCCP2zWZmrN/29qwaRPX3vQHduzc5fd7N2/Z
+ wqHCwJ5OSUxIoFOHDgG9VwjdHDp0SHUJEe14TUB0dFTitLtuv7xZs2bZwEWHhf8NKmoMl+LiYv8/nP0g
+ DUAAPG7XIGrCv95lFnX286rVXPeHqeTv2xfQ+71ek59XBn4boG/vXgG/Vwid5Ofnqy4h4v2wcBErj3r8
+ OCkxsdU//vbiGdHR0T1KS0u/JMLCH6CgoGBnkIeod4JKvTMpxbE8blcG8DwwSnUtgfIsXsItd91NUXFx
+ UMdp06oVgwb0D+i9JvDNzFlBjS+EDvLz8+nXrx+G3Rf/0Nz2XbuJi42lWdavG9ylpCS3zsjIbFvlNU9W
+ WFpYmKZZ+cUXX8wIcr+JSmDOiX5RrgD4737gXNVFBGru/B+55a67KQnBxKWfgpgHcPLAAcTHxwVdgxCq
+ VVVVURjg7TDhnx8XLz3iSsCyFasoKCzqrLCksCkvL99WXl4e7OSyejerkAbADx636wZsvMb/gkWLmPbA
+ Q1SEaAOTlatWB/wIVFxcHIMHDgxJHUKodvBgMIu1CX/8uHgpa9atZ/FPK1i8IvCTEN0VFxcHvtjKr+pd
+ q1oaAB/VrvR3n11n+y9Z9hN33Ht/SNcuLyktZd2G4+/p7YuRpw4LWS1CqLRnzx7VJTQqP3gWsyyIOUh2
+ kJ+fvzkEh6n3Uq80AD7wuF0tgfuA1nZ81n/5zyu5ddo9lJWVh/zYK34O/Idw3OhRJMTHh7AaIdRYvHix
+ bA0sQqa6urrI5XJtDcGh6n1GVRoA39wLjFVdRCBWr8ll6p3TQnLP/3iWrVgR8HtTkpOZOH5cCKsRQp0D
+ B4JZsl2IX5WWlgZ+afVI9c70lgagAR63ywncbMcz/3XrN3DzHXcGPdu/PkuWLQvq/ReeZ9v5lEIcQdYD
+ EKFSUFCwLkSHqnd2qjQA9fC4XcOAe2rC3173/jdt3sJNt93BoUPhnZ2cl7+PbTt2BPz+k7p1pVeP7iGs
+ SAjrZWdn0042uRIhYJpm+fLly0PVANQ7O1UagBPwuF2JwD1AO7uF/7bt27nx1tspsOiS5JJlPwX1/uuu
+ vipElQhhvV69ejLhtPHExNS774oQPikuLs7dtm1bqGZr1xsC0gCc2N3AJLtd+i84cIA/3jkt4BX+ArH0
+ p+AagKEnD2bIoEEhqkYIaxiGwfnnnMPZZ02isiqoxVqE+MW+fft835WtYfXuJCgNwHF43K5zqWkAsNPZ
+ f3l5Obffcx/bdwS7eqR/gr0CADD1RicOh72aLdF4tWndiheeeYpevXtRIGsAiBCpqqoq+Oqrr1aH6HCV
+ QL1ngtIAHMXjdrWiJvxtdT3P6/XywGNPsELBs7G7du9h1+7gnoPu2qUzF5xzTogqEiI84uPjuP6aq3gz
+ 52X2HTxE3r5gtmoX4kiFhYUrQ3i4vIZeIA3AsaYBp9jt0v+Lf38Fl/uESz6HXbC3AQBuvflGunaJyFU9
+ RQQYPmwo//nXm1zym9/g/nGhhL8IuW3btoVyacMGz8qkATiMx+36LQZ/rPk/+1z6/+Tz6bz34UdKawjF
+ bYDY2Fgef+B+2SNAaKVtmzb85dmneeHpJ0lLTWPmnLkS/iLkSkpKVs2bNy+US0rubugF0gDU8rhd7YG7
+ bJT7AHw/9wee+fOLqssISQMA0KljBx68exoxMdEhOZ4QgUpMTGTqjU4+ePtNhp0yhJKSUgl/ETZ79+4N
+ zYforxqcDCafsr+6E8x+drr0v2rNGu5/9LGAN+QJpW07dpCXl0/TpllBH+u0sWNompXFXfc/aNmjjELU
+ cTgMzpwwgZuu/z1ZmTVbz0r4i3AqLy/f/PXXX69t+JU+qwC2N/QiuQIAeNyui4Gb7BT+e/PyuHXavWFZ
+ 3z9Qi4NcFfBw/fr05l+vvULXzp1CdkwhGjJ4QH/e/serPHTv3RL+wjL5+flLQ3zIbfhwH7vRNwAet6s5
+ cIfqOvxRWVnF3Q8+zP6CAtWlHMGzZElIj9eyRQv++fJLjBp+akiPK8TROrZvz5+ffpKXX/wz2V27/vJ1
+ CX8RbuXl5dumT5++PMSH9WkjoUbfAFAT/oPsdO//zy+9pORxv4Z4Foe2AQBITEjg2ccf5crLLsUw7HOF
+ RthDRnoad99+K++99Tojhg094tck/IUV8vPzF4XhsJt9eVGjngPgcbtOB243Abtky4xvvuWjT/+ruozj
+ 2rV7D9t37KRN61YhPa7D4eCm666lc8cOPPbMc1RUhGqVTNFYxcXFcclFk7nikktISkqkvLycXbv3kLcv
+ n7y8fHbu2k15tZdoWd5XhFFZWdnGMJz9FwJbfHlho20APG5XFHC7gWnY5d7/uvUbeOr5P6suo16LliwJ
+ eQNQ5/TTxtOmdWvuvO8BS5c6FpHH9Hr58JPPePOd/zvm17JbuwA9AAAgAElEQVSzsxk6dCjx8fEKKhON
+ ye7duxeG4bA+byXcmG8B3AaMN20S/oVFRdz1wINaTfo7Hs+SUM9lOVKvHt15+x+v0uOkk8I6johsFZWV
+ x90mW8JfWKWoqGj5119/nRuGQ6/39YWNsgHwuF29gFvtcuZvmiYPPfGU5Wv8B2LRkqWYZngnVDTNyuTV
+ v77I+DGjwzqOaFwk/IVVvF5v2ZYtW34Mw6HLAZ8fJ2yUDQBwK9DSLqv9vfHOu8z5YZ7qMnyyv6CAjZs3
+ h32c+Pg4nnz4QW6+/jrZREgETcJfWKmgoGD+nDlzdoXh0LnUrAHgk0bXAHjcrguAq+1y9r90+XJee+Mt
+ 1WX4JRxPAxyPYRhccelveeqRh0lMTLRkTBF5JPyFlcrLy7fMnz9/fpgO79dOgo2qAfC4XdHAVAMTO5z9
+ l5SW8thTz2qx0p8/rGoA6owdNZJ3/vEqnTp2sHRcYX8S/sJi5s6dO+dt3769MgzHLkAagHpNBUbaZeLf
+ n/7yN7bt2KG6DL8tWfaT5U1Lu7ZteDPnZZkXIHwm4S+sVlBQ8MM333wTyiV/D+f3ToJR4ahCRx63qyPw
+ CpCquhZfuH+Yx99yXlVdRkAqKisZNuRkmjdrZum4MTExjBs9ioSEeBYtXRb2yYjCviT8hdXKyso2/PDD
+ D18fOHCgOkxDzACOfbSlHo2mAbjuqisfAiaqrsMXBQcOMPXOaZSWlakuJWDTv/qa/33nYt2GDRw6VERy
+ UiIpKSlhH9cwDPr27sXA/v2Yt2AhpaWlYR9T2IuEv7BadXV10ZYtW75ZunRpuBYwWQX4vaaAPa6FB8nj
+ dg0D3KZpRBmG/meF0x54iO++d6suI+SyMjPp16c3fXv3om/v3mR37YLDEb67UHl5+Ux78GFWrFwZtjGE
+ vUj4CxX27Nkz49NPP/WEcYj3qHkCwC+NpQF4D5iiug5ffP7lVzz2zLOqy7BEYkICvXr2oG/vXnTv1o3+
+ /fqSnJQU0jGqq6t55Z+v86//ey+kxxX2I+EvVDh48OCC99577+swDrEZeCuQN0Z8A+Bxu84FPsNE+9/t
+ rt27+e1V11BcXKK6FCWioqJo17ZNzVWCXr0Z2L8fLZqHZh7B1/+byRPP/Un7lRRFeEj4CxVKSkrWLFiw
+ YHpubm44P9Q/AQLaT0DzSAyex+36FjhNdR2+uOm2O1i4aLHqMrTStk0b+vbqSd8+venbqxcd2rcLeFfA
+ tevWc9cDD7JjZzjW3xC6kvAXKlRUVGxfu3btl3Pnzt0dxmG2Am8E+uaIbgA8btflwL9U1+GLb2bO4v5H
+ H1ddhvaaZmUybvQoxo0eTb8+vf1+f3FxCU//+QW+/t/MMFQndCPhL1Soqqrav3Xr1q++/fZbn9flD9Cn
+ wE+BvjnSG4AfgSGq62hIcXEJky+7XHa481PXzp04c+IEJo4bR9OmWX69d/qMr/jTX/5GiTwlELEk/IUK
+ Xq+3aOfOnd9+8cUXK8I81Ebg7WAOELGPAXrcrhuA61XX4Yu/5eSw0OLV8yLB/oICFngW8d5HH7HAs4jq
+ ai/t27Yhxoc93LO7dmXi+LGsXL2GvXl5FlQrrCThL1Twer1le/fudX3++efLLBjuGyA/mANE5BUAj9sV
+ DywA+qiupSHrN27ksmuuo7o6XGtDNC6xsbGcPGggZ02cwOgRw4mOjq739dXV1bz+9ju8/q+38Xr1f0RU
+ NEzCX6hgmmZFXl7ed5988skCC4ZbTs3kv6BEagMwFXhRdR0N8Xq9XHvTH+U59TBp0iSFcaNHceaECQ3O
+ F/AsXsJDTzxJXr7chrEzCX+hgmmaFfn5+bM//vjjcG3yc7gyai79B70/fMTdAvC4XYnAayY01b27+Wz6
+ l3z83/+qLiNilZdXsCZ3LdNnfMX/Zrk4cPAgzZs1o0mTY1ckbN2qJWdOnMCmLVvZum27gmpFsCT8hQpe
+ r7csPz/f9cknn/xo0ZBzCGDd/+PRPSP95nG7bgFeMNB7v78DBw9y4aW/49ChQtWlNCqGYdCvT2/OnDiB
+ caNHkZKcfMSvm6bJ+x99zEs5r1FRGY4Nu0Q4SPgLFbxeb9HevXu//+yzzxZZNORm4N9ARSgOFlFXAGrv
+ /b8KNFVdS0Oe/9vf+WlFSJo44afde/Yw54d5vPfhx6xbv4HY2FhatWxJVJQDwzDo3bMHo0cOZ+Xq1fJk
+ hg1I+AsVqqqq9u/atWuWRRP+ALzAV8DeUB0woq4AeNyumzH4m2EamBqf/2/Zuo2Lr7hKJv5ppElKCsOH
+ DeWsiRMYPHAAhmFQXV3Nu+9/wGtvvClXAzQl4S9UqKio2L59+/bvLXjO/3BzgFmhPGCkNQDLgL6q62hI
+ pG72Eynatm7NGRNO4/QJ42nbujXrNmzk0aeeZs3adapLE4eR8BcqlJSUrNm4ceP3YV7h72gbgA+AkK5l
+ HjENgMftugb4Z81vSd+z/9Vrcrni+htkr3qb6J7drXa+wGhmzZ7NK/94XRYP0oCEv1Dh4MGDC5YsWeIO
+ 89r+RysEPqbm/n9IhW8vVutdXfMvvYP1b6++JuFvI6tz1/L8X19i0uSLmDNvPlddfhlDh5ysuqxGTcJf
+ WC01JZlxw4fRoVWrZRaHP9Rc+t8cjgNHxBUAj9s1GfhQdR0NWbhoMTfddofqMkSQUpKTMRyGPMGhgIS/
+ sFrXju3peVI2menpFBYWbRl71tlvWTj8j0DYthKOlCsAV6kuoCGmafLKP19XXYYIgcKiIgl/BST8hZUc
+ DgdDB/Zn2ODBZKanA5CSktz+2isvTbWohNVAWCeL2b4B8Lhdo4EzVdfRkFmzv+fnVatVlyGELUn4Cyt1
+ bNeWs8aNoUd2N6Kjj3xa/sJzzxtvQQnbqQn/sN5usH0DAFyhuoCGVFdX8+rrb6ouQwhbkvAXVklMiGf4
+ yYMYNXQIzU6ww2hmRlaPM8aOjQtjGfuA74FdYRwDsHkD4HG7soHLVdfRkJmu2WzeulV1GULYjoS/sEqf
+ 7tmcOX4s2V06ExV14jXyDAPHtVdfOSJMZRRRE/6WPHNc/1Zp+vsdNmhi3n3/P6pLEMJ2JPyFFbp0aM9J
+ XTvTvKnvC8i2btN6UI8ePb5btWqVN4SllAGzqdnpzxLah+eJeNyuBGoaAK0tXLRYFpARwk8S/iLcOrRp
+ zcTRIxk17BS/wh8gyuGIu+WG6+rfYtQ/5dSEv1V7CgD2vgJwKdBOdRENeee991WXIIStSPiLcOrUri3d
+ OnekdcuWQR3npOzuw4GfQlBSXfhbtZvgL2x7BYCaBkBr6zduZMGixarLEMI2JPxFuPTo1pVJp41jzPBh
+ QYc/QEJ8bNZN11+fEeRhygAXMD/oggJgyysAHrdrJDC6ZtU/fdcyevvf78uqf0L4SMJfhFpmehrdOnWk
+ betWx2z9HQpnnj5+9N9fffWTAN9ehILL/oezZQMA/BbAxIGh6dK/e/Py+N93LtVlCGELEv4iVBLi4uja
+ qQNtW7eiRbNmYR0rKy2je48ePRwBTAase9TPsgl/x2O7BsDjdmUCUwBtwx/g3x98SFVVleoyhNCehL8+
+ ysrK2LFjB02aNCEtLY2YmBjVJfkkNSWZDm3b0KpFC5o3zar3Mb5QckQ5ov944/W9nTdP9WcuwHYsfNSv
+ PrZrAICLgTSdN/0rLi7h0+lfqi5DCO1J+OujrKyM+fPnk5ub+8vXBg4cSPPmzUlNTSUlJQWHQ49pY3Gx
+ sbRt1ZIWzZrSNCuTjLQ0ZbX06JZ9Kr5PBqxb3jfsi/z4wo4NwEUAmPre//9m1ixKSqzeMEoIe5Hw18fx
+ wh9g8eJfJzFHR0fTu3dvsrKyaNKkCYmJiSQkJIS9KYiNiaFZViZZGelkpKWRnpZKapNUDE0+/hPiY5te
+ d/XvUl97452DDbz0RyxY3tcfmvwR+sbjdp0CzNd87h9XXHcDq9asUV2GENqS8NfHicLfV9nZ2aSnp5Oc
+ nExCQgKxsbHExsYSExNDVFQUUVFROBwODMPAqE1t0zQxTROv10t1dTXV1dVUVlZSUVFBRUUFpaWlVFSU
+ 88g900hOSgrlbzcsdu/ds+TsyVOmN/CyV9HkzL+O3a4ATAZ0vvrPhk2bJPyFqIeEvz6CDX8gqPc25KdJ
+ Z3HqKUPCdvxQaZbVtFeLFi2+2L17d33RdDqg1aYwetzQ8d1kAFPjs//P5N6/ECck4a+PUIR/uH3wyaeq
+ S/CJw+GIvfOWP3Ru4GXtAKu2EvaJbRoAj9t1AdBedR31qays4puZs1SXIYSWJPz1YYfwB5i/YCFbt21X
+ XYZP+vfuNbyBlxjAaVbU4ivbNADA+aoLaMj3c+dScOCA6jKE0I6Evz7sEv5QM1fgo8/+q7oMnyQnp7Qd
+ MmRIQ7fVuwPa/BDYogHwuF0Z2KAB+O8XcvlfiKNJ+OvDTuFf579fzqC4WJuJ8ydkGIbj6kun9GjgZVFA
+ Q1cKLGOLBgA4F9B6KujuPXtZuFjW/RficBL++rBj+AOUlJTwv+++U12GT7K7djnZh5cNpqYRUM5ODYDW
+ vvzmG7xeXZ9NEMJ6Ev76sGv41/l8xteqS/BJYmJSqzGnnNLQ8olxQC8r6mmI9g2Ax+1qBZyjuo6GzJr9
+ veoShNCGhL8+7B7+ACtWrmTz1q2qy2iQYRjGZZdf1tuHl44IezE+0L4BAM4GDEPjk+udu3axbv0G1WUI
+ oQUJf31EQvjXmfHNt6pL8EmXTh0H+fCyLCAz3LU0xA4NwCTQ+9n/7753qy5BCC1I+OsjksIf4Iuvv8Hr
+ 9XfTPeslJCS2OG3EiFgfXjoq7MU0QOsGwON2NQfOUl1HQ1zuOapLEEI5CX99RFr4A+Tl5eNZskR1GQ0y
+ DIzfXjLFl9sA3VE8GVDrBgA4E713/WXf/v38vGqV6jKEUErCXx+RGP51vvjqG9Ul+KRLhw4DfXhZDIon
+ A+reAJwBaL3xj+v7OTL7XzRqEv76iOTwh5qrrYVFRarLaFB8YkILHxYFAjg17MXUQ9sGwON2JVLXAGhs
+ 9py5qksQQhkJf31EevgDlJeXM8s1W3UZDTIMw7j0wvMa2hsAoBmQFu56TkTbBgCYCCTrfPZfWFTEkp+W
+ qS5DCCUk/PXRGMK/zrez7LEoUPfuJw3w8aUjw1pIPXTeDngCoO++v8DcefOprKxSXYZWmjdrRsf27ejU
+ sSMtWzQnISGBpMREUlKSSUxIJDq65luuoqKCsvIyCg4c5MCBA+Tv28eOnbvYtn0HW7dto7SsTPHvRNRH
+ wl8fjSn8AZb8tJwDBw+SlqrVxnrHSElOaefjS3sCXwCWP+KgcwOg1a5Jx7NwUeNe+jc2Job+ffsy7JST
+ 6d2zJx07tCc5KfgVm71eL1u2bWP1mlxWrl6DZ8kSNm3eEoKKRShI+OujsYU/QHV1NbPnzOW8SXo/IBYV
+ FRV/0/VXp//91TcKGnhpHNAZWGdBWUfQ8gK7x+0aDCxUXUdDzv7Nxezes1d1GZbKSE9n7OiRDBsyhEED
+ +pNgUQjk79vHjws9uNxz+NGziIqKCkvGFUeS8NdHSnIS1RXlLFy0mCVLl1FSWqq6JMsMHXIyf33uGdVl
+ NGjL9m0/TL7k8pk+vHQz8FZ4qzmWrlcAxqsuoCHbd+xsVOHfr09vJp93LmNHjSImxvpvm6zMTCadcTqT
+ zjidktJSvp8zl8+//IrFy5ZhmhrfJ4ogEv76aJqZwfgRw0lMTOC3ky+kqqqK5T+v5NtZ3/H1zJm22D0v
+ GIuWLKGwqIiU5GTVpdSreWazbMCXBqAtNY8FVoa3oiNpsSPR0a676sqHgE6aXqAA4Du3mzk/zFNdRljF
+ xsRw7qSzeODuaVx52SV06dSJqCj180ZjYmLo2rkzk86YyJkTJxATE8PGTZuoqLT0Z6dRkfDXx+HhX8fh
+ cNCyRQuGDxvKxZMvpE2r1hQcOMDevDyFlYaP1+ulY/sOdOviy0R7daKioxKWL1o8d8fevQ2dpTiAfGCP
+ BWX9QrsGwON2pQKvYGj9hAL/9/4HrN+4SXUZYWEYBhPGjeW5Jx7jzIkTyMxIV13SCTVJSWHI4EFcdMF5
+ ZKSns2HTZopLIvvsx2oS/vo4XvgfLSY6muxuXTl30pmMHTWSwsIiNm3ZTKRdKPN6vUwcP051GfUyDMNI
+ y8rc+fX/Zu7z4eUpgKVLHWp3iu1xu84FPjNNQ+sdgM68YDJ5+b78ndrLwP79+OMN19PjpJNUlxKQiooK
+ Pvn8C9569//Yt3+/6nJsT8JfH76E/4msW7+Bl//5OnPnzQ9DZWrExsbyv88/JTExUXUp9dp/oCB34jkX
+ vO/DS73A04BlE5x0PMseDWBo15r8avPWrREX/hnpaTz7+KPk/OUF24Y/1HwoTJl8AZ+9/2+uvfJy4uLi
+ VJdkWxL++ggm/AG6dunMC08/yRuvvET/vn1CXJ0aFRUV/PDjAtVlNCgtJdXXxwEdgC97CISMjg1A7aII
+ +p79L14aWYv/DB82lPfefIMxI7XYojok4uPjuP7qq/jo3bcZP2a06nJsR8JfH8GG/+F69+zJq399kfvu
+ vJ2kJL3PnH3xw48/qi6hQY4oR8Ilk8/x9floX/YQCBmt5gB43K7WwHOq62jIO++9z8bNm1WXEbTEhATu
+ vGUqt9x0AwkJwX+46Cg5OYnxY0bTPTubZctXUFxcrLok7Un46yOU4V/HMAxOyu7GGRNOY9OWrWzfsSNk
+ x7ba/v0FXHrxRRg6XzIGkhJT8j+f8dVuX14KzAeqw1wSoN8VgOGqC/BFJOz+17ljR9594x+cf84k1aVY
+ YsSwoXzw9ptccM7Z2n9YqCThr49whP/hmjdrxl+fe4YHpt0VkgW8VNi3fz/r1m9QXUaD2rVt4+t9VQdg
+ 2T0a3RoApTsj+eLAwYO2f/5/6JCTef3ll2jburXqUiyVmJjIPXfcxvNPPk5GurL9N7Ql4a+PcIf/4c45
+ 6wz+9VoOHdu3D/tY4TB/oUd1CQ1KSk5u5cfLLbsNoFsDMKzmX/qeoeWus3y1xpCafP65vPD0kxFx/y9Q
+ I04dxr/ffJ1B/furLkUbEv76sDL867Rr24Y3c15mxKnDLBszVOYv1H7RWGKio5MHDBjg6wpqzalZFCjs
+ tJkD4HG7soAXVNfRkFmu71m42H57ADgcDm77w004r7kah0O3vs96iQkJnDFhPIVFRaxcvVp1OUpJ+OtD
+ RfjXiY2N4bSxYzC9JsuWr7B8/EDl78vntxf9hpgYSzIzYOmpTbZ/M3OWL88mG8AOIOyPmumUBKeoLsAX
+ a9auVV2C3xwOB489cB9TJl+ouhStREVFccfUP/DAtLuI1fzDI1wk/PWhMvzrOBwOnNdezZMPP2ibn4nK
+ yioWLVmquowGZXft0tOPl1tyG0CnBmAIoPPTfwDkrrXXLQDDMLjnjtuYMG6s6lK0dc5ZZ5Dz1xfIysxU
+ XYqlJPz1oUP4H278mNH86cnHbbOOxo82mAfQJLlJWz9e7uvaAUHRqQE4GdB6BaDi4hK279ypugyfGYbB
+ fXfdof22mTro3bMnb7+WY+tFkPwh4a8P3cK/ztAhJ/PCM09ZtuNnMOzQAMTGxaV17Jjka8DFAxnhrAf0
+ agAG15z963sJYO369bbZec4wDKbddgvnnnWm6lJso2nTLF75y58ZPCCyJwdK+OtD1/CvM3hAf/7yp2e0
+ X253244d2q/Oahg4zj/zSn8uM4b9NoAWDYDH7eoDpGs8+R+w1/3/m6+/jgvPPUd1GbaTmJDAC888xfCh
+ tpiS4jcJf33oHv51+vfpw0vPP6f9k0M/rdB/4uKQkwf5Mw8gO2yF1NKiAQAGAJgan/0DrLXBghMAZ595
+ BpdfMkV1GbYVFxfHs48/xrjRo1SXElIS/vqwS/jX6d2zB8889gjR0b4+yWY9OzQAWZkZ/iy2kAGE9Q9c
+ qwbA0PwSwLbt21WX0KC+vXtx9+23qi7D9mJionny4Qc556wzVJcSEhL++rBb+NcZMmgQD917t7Yradrh
+ 0cWEhMQsP17uALqEq5a6AXRgi5uuO3buUl1CvVq1bMlzTzxmm8d3dOdwOLjvzjuYfN65qksJioS/Puwa
+ /nVOHz+Oa6+8XHUZx7V2/QZKSkpUl1Gv6OiopGbNmvnzln7hqgX0aQD6qi6gIWVl5VrvL5+UlMgLTz9J
+ eposcRtKDoeDu26dyqQzTlddSkAk/PVh9/Cv8/srr9Dy58Hr9bJ8pd77tBiG4Thr4sQmfrwlrOszK28A
+ PG5XTyBFdR0N2bFrp9ZPANx926106thBdRkRyTAM7r/rDttNDJTw10ekhD/UPl585+306eXPfDZr2GEe
+ wMhhp3Tz4+UJ1OwQGBbKGwCgt+oCfLF9h77P/48bPYrTTxuvuoyIFhUVxdOPPky/Prb4dpXw10gkhX+d
+ 6OiaOTKpTfw5mQ2/n1b8rLqEBrVs3tzfs/qwPQ2gTQOg68SSOjs0XQCoebNm3HfXHarLaBTi4uL405OP
+ 07GD3rumSfjrIxLDv07zZs24X7PPnp9XrqK6ulp1GfVKSElu7udbwrY6mQ4NQE9A68vroOcVAIfD4KF7
+ 7yYlOVl1KY1GapMm/P35P9Gyhb8/w9aQ8NdHJId/ndEjR/Cb889TXcYvSsvK2Lx1q+oy6hUXG+PvZRN/
+ thL2iw4NQA/VBfhixy79ngC45De/ifhV63TUtGkWLz7zNIkJen2wS/jrozGEf51bbrqBrl06qy7jF7rv
+ 1xJlOOKG9Orlz068SYRpPQClDYDH7UoCuqqswVfbd+xQXcIRmmZl8vurr1RdRqPVqWMHHrj7LtVl/ELC
+ Xx+NKfwBYmNjefDuadpsM752/XrVJTRo4rlntfTj5QbQKRx1qP4bs83OK7v37FVdwhFuvv467c5AG5vx
+ Y0bz299MVl2GhL9GGlv41zmpW1cuOPds1WUAkLtW/wage7dsfwM9LFfKVTcA2QCm3vP/KCkpoaKiQnUZ
+ v+jdswdnTDhNdRkCmHqjk/59+igbX8JfH401/OvccO01ZKSrX4ckd9067eeUpaeltvDzLf5sJewz1Q1A
+ NwBD778rDhw8qLqEXxiGwe1//IP2T000FlFRUTz16EM0zfJnk6/QkPDXR2MPf4AmKSncdN11qsugsKiI
+ 3Xv2qC6jXgnxCf5u9ZsGoV8rX3UDYIv7/zo1AKefNp6e3W1z56RRyMzI4LEH7icqyp95PcGR8NeHhP+v
+ zj7zdHr3VL9AkO4TAWNjYvx9dCsK8GcfAZ+obgC6gA2uABzQowEwDIMrL71EdRniOAb278dlUy6yZCwJ
+ f31I+B/JMAyc11ylugxyNZ8IGBUVHcgPb8g7K9UNQGcAU/MOQJcrAKcOPUWW+9XY76+8gnZt24R1DAl/
+ fUj4H9/JgwbS4yS1Vylz1+ndABgGUT169PA3f9uFug5lDYDH7coEam+c6n0/e/+BA6pLAODyS6aoLkHU
+ Iy4ujvvvujNs8zMk/PUh4V+/qy5Te6XygCaf2fU576zT/V1NLKJuAXSo+ZfeZ/8ABzW4BdCz+0lKZ5sL
+ 3/Tv24fzz54U8uNK+OtDwr9ho0YMp3PHjsrGr672KhvbV107d27t51uSCfHZssoGoHZBdb3P/gEOHDqk
+ ugQum3Kx6hKEj/5ww/U0bRq6Zl3CXx8S/r4xDEPpFUuvV+/9AAAyMzL8vQLgAEK6+5LyBkD3NQBA/RyA
+ lORkRp46TGkNwnfJSUlMu/WWkBxLwl8fEv7+GT9mtLJ9Sqq9+l8BSExI9PdRQKh9dD5UVDYAbUH/JwAA
+ igqLlI4/ZtQIYmNjldYg/DNq+KkM6h/cPg0S/vqQ8PdfbGwsY0eNVDK21wa3AOLj4gI5mw/pVqQqG4Dw
+ TpcOoYpKtasAnj5+vNLxRWBuvflGHI7ALnFJ+OtDwj9wp09Q89nltcEVgKiYmKQA3tYslDWobAD8nQCh
+ TGVVlbKxMzMyGNi/n7LxReC6de3CaWPH+v0+CX99SPgHZ0DfvrRoHtLM8km1DeYARDuMQC7rpoayBpUN
+ QNj2OA61yopKZWOPHzNam122hP+uufx3fl0FkPDXh4R/8BwOBxPHj7N8XDtcAcAwAvlgjyWEWwOrTBZ/
+ N0NQRuUtgMEDBygbWwSvY4f2jB01yqfXSvjrQ8I/dE4deorlY3q9NphcBsaAAQP8DXODEGankgbA43Zl
+ ALb5lKusVHMLwDAM+vXprWRsETpX+rAoioS/PiT8Q6tX9x7Ex8dZOmZ1tf63AADGnDokPYC3dQ7V+Kqu
+ ANQ8/2iDRwABKivV3ALo3LEjqU1C+tinUCC7a9d6GzkJf31I+IdeTEy05RsEeU0b3AIA2rftEMijgP6u
+ H3BCqhqApoAdFgEE1DUA/frK2X+kuPjCC477dQl/fUj4h4/VE5lVztvyR3paWloAbwukaTguVQ1AyNc0
+ DidVDYAs/Rs5xowcQUb6kVf7JPz1IeEfXgP7WdsAlJaVWTpeoJKSEwO5xJsSqvFVNQCZisYNSGWVmgag
+ S6dOSsYVoRcVFcXpp/36TLSEvz4k/MOvx0nZlj7NVF5ebosnARLi4wMJ85B9aKhqAEJ2CcMKVVXWTyhx
+ OAzatLbNk5LCB5NOnwhI+OtEwt8asbGxtGgeslvXPikt1f8qQExsbGIAb4uq/SdoqhqAdADTDhsBANHR
+ Ifmz9kuzpk1l+d8I07VLZwb07y/hrwkJf2u1a2Pt2m/FJcWWjheI6OioQL/5QrK6kqoGIE3p6H6KjgrZ
+ ugs+a9vGNislCx+VlJQyePBgCX8NSPhbz+rPtP0FBywdLxDRUVGBPh8Zkj9MVRGcCvbYCAggJibG8jHl
+ 8n9kKSkpZeacuRiyqqNyEv5qtGtrcQOwf7+l4wXCcEQFepnX1lcAUsA2TwESHW39FYDmzaxfP1uER134
+ 5+3T/wMp0kn4q9OmtbW3AFRv4+4Lh8MI9P5ySCbSK20ADJu0AFEK5gAkJsgHVCSQ8NeHhL9aTVJC9vSa
+ T+zwFIBBwA1ASFaIU9UA1G6DaAN9IJ0AACAASURBVI9JgLEKbgEkyH1i25Pw14eEv3oJclJzHAFtCAQQ
+ yNMDx1DVACSCfa4AxMdZH8byw2JvEv76kPDXQ5L8+R/D4TACPQsOySNiqhqABLDPHIAmTay9dAVyC8DO
+ JPz1IeGvD6tPalRM3g5AoBls63UAak+p7XELIDU11fIx5VExe5Lw14eEv16sPqnp3bOHpeMFKNAQNICg
+ Z6eragBqn320xzWAVIsnrwBU22ACiziShL8+JPz1U2Hxniox0fpfATACngIA1C6oFwxVDUAMgGmbKwDW
+ b8lbWVFh+ZgicBL++pDw11NRUZGl40XHWP/4tt+CWw436EcBlTYAdpkE2CTF+gag0OIfFhE4CX99SPjr
+ y+q1+W0xByC4c+BAthI+gqoGwPoH64OQlmb9HIB9NljFSkj460TCX28lpaWWjhcXG+gqu1YKqgMI+sxU
+ GgAftLR4FyuAPXvzLB9T+EfCXx8S/vrbm2fdZ1piQgIxdrgFENxV8ORgR1fVANjj5n+tVi1bWj7mxk2b
+ LB9T+E7CXx8S/vawfcdOy8ZS8ei2AknBHkB2JvFBi+bNcFi8icv6jZswTXvMkWhsJPz1IeFvHzt2WtkA
+ WD9vKzBBnQsH/ay4qgbAVskWHR1Ns6ZZlo5ZcOAAm7dstXRM0TAJf31I+NvL6rVrLRsr1TYNQFBRaNsG
+ oBrs8xggQMsWLSwfc+HixZaPKU5Mwl8fEv72UlxcQu7adZaNZ5vdVIM7FQ56OWClDYBdHgME67eyBJg1
+ +3vLxxTHJ+GvDwl/+1m2YoWlu/O1UnDCFpCAtwIAQjCZXlUDULsklH2uAHTr0sXyMX9asYLde/ZaPq44
+ koS/PiT87cn1vdvS8Vq2tEkDQFATvYLOb8UNgH2uAGR3tb4B8HpNPvjkU8vHFb+S8NeHhL89lZeXW341
+ 0y5XAIKc6G3bBqAc7HT+D127dMYI7nJNQD6b/gWHDhVaPq6Q8NeJhL99uebMpai42NIxO7Rvb+l4QWiU
+ VwDKwF6TAJOTkmjdyvr1AAqLinjjnXcsH7exk/DXh4S/fXm9Xt5429rPr6zMTDLSg14l1xKmGVQDEHSA
+ qmoAateEtM8tAFAzDwDgPx9/Su4662bQNnYS/vqQ8Le3b2d9x6bNWywds2uXzpaOFxwzmJmRtm0ASsBe
+ VwAAevfqqWTcqqoqHn7iacrLy5WM35hI+OtDwt/eiotL+Ptr/7B83G42agBMg0bZABSDveYAAAwe0F/Z
+ 2Os3buSxZ56T1QHDSMJfHxL+9vf8315S8hRT755qTtQCYXqDugIQNFUNQO2sNnuFWdfOnUlLtX5nwDrf
+ zJzFS6++pmz8SCbhrw8Jf/ub6ZrN9BlfWT6uw2HQv28fy8cNlNfrrQzi7ba9AlAIwa6BYD2Hw8HA/v2U
+ 1vD2v9/nLy/nyJWAEJLw10dlZaWEv80tW76Ch554SsnYXTt3oUmKfTYC8nrNYBqAoKlqAA5CkEsgKDJI
+ 4W2AOu++/x/ueegRSsvKVJdiexL++igrK+OHH36gtMzafeNF6OSuW8ft995HRUWFkvFVn6D5q7qqUumH
+ uKoG4ICicYM2bMjJStYDONqs2d/zu2uvY/WaXNWl2JaEvz7KysqYP38+a9as4a13/626HBGA+Qs9XPeH
+ W5SuWzLi1KHKxg5EVXVVo2wAChSNG7RWLVvSs/tJqssAYMvWbVx1w008/9eXKCwqUl2OrUj466Mu/HNz
+ a5rZT/77ORs3bVZblPCZaZq89+FH3Hb3vZSUlCirIy01lf597HP/H6CiosLaFZKOoqoBsPWn7oRxY1WX
+ 8Ivq6mre/+hjLvjtZbz17v8p/QG0Cwl/fRwd/gAVlZU8/NTTyi4jC9/t2r2HG2+5nT//7e9UVVUprWXk
+ 8GFERQW9P46lysoaZwOwT9G4ITF+zBgcDvW3AQ534OBB/v7aP5k0+WKe/+tLbNpi7eIbdiHhr4/jhX+d
+ 1WtyefTpZy3dQU74rqSkhFffeJMpV1zFoqVLVZcDwPjRo1WX4Lfi4uJDKsePVjRuvqJxQ6JpVib9+/Zl
+ 8dJlqks5RmFREe9/9DHvf/Qx2V27Mn7saE4dMoTOnTricKjq9/Qg4a+P+sK/zjczZwHw0D13ExOj6qNK
+ HO7QoUI+nzGDt//9PgUH9JnK1aJ5M4YMHqS6DL8VHDgYzB9i0NPoVf1U5SkaN2TOOfMMLRuAw+WuW0fu
+ unX8/dV/kJaaysD+/ejbuxc9u3cnu2sX4uLiVJdoGQl/ffgS/nW+mTmL7Tt28NgD99G2TRsLqhNH83q9
+ /LxqNZ9O/4L/fefSckXSc886y5YnODt2b1M6H07JdWyP25WBzW8DVFZWce7FU8jLt+dvIyoqik4dO9C+
+ bVvat21Lh/btaNe2De3btiMpKVF1eSEl4a8Pf8L/cHFxcVx0wflcfskUpYtxNRYlpaX8tHwFs+fMxf3D
+ PPL36fs5FxUVxecfvEezpk1Vl+Ing8efefbZ/345I9DnXr3Ao8FVoIjH7SoF4mtKsOGCAMAbb7/LK/98
+ XXUZIZeZkUGH9u1o2bw5mZkZZGZkkJ6eTlZmBpnpGaSnp9nmQ1jCXx+Bhv/hYmNjGTtqJBPGjmHQwAEk
+ xMeHsMLGqai4mM1btrJp82ZW5eay/OeVrN+w0TbzL04/bTyPPXCf6jICMnjkmEeCeHs18Fgw46tsADYB
+ HUzTfisC1jl46BCTJl9EWZl+l8TCLSYmmrS0mkYgPi6ehIR4kpOSiI+PJy4uliYpKcTFxhEfH0dyUrKS
+ Gr1eL4Vl5VTb5IMskoUi/I8WExNNl86dye7ShdatWtKsaVPSUlOJjo4mKSnJlpeEQ6msvIzKikoOFRZS
+ VVVFSWkp+wsKKCg4QP6+fewvKGD7jp1an903xOEweP+tN+nYob3qUvxmmlSfPGrM40EcogoI5v3K5gAA
+ 7AQ62DX8AVKbNGHS6afz0Wf/VV2K5Sorq8jLyycvT8/5nNnZ2QwdOpR4OUNULhzhDzXfg6vX5MpiWI3Y
+ 6BEjbBn+AN7qqmDPHIO+dK6yRd4BYNj08n+da674HYkJsm65TiT89RGu8BciOjoa5zVXqy4jYBXVVcEu
+ 2hL0pU2VDcB2ANN2mwIfKSszk9/9dorqMkQtCX99SPiLcLrogvNte/YPUFFWEewaALZuALbV/MveVwAA
+ Lp1yEU2bZqkuo9GT8NeHhL8Ip4z0NK698nLVZQSluLQk2JnJQe8kqLIBqF2qzt5XAAAS4uO58ffXqi6j
+ UZPw14eEvwi3W2++iZRkNZOLQ2X//v17gjxE0Gtla9AAQCRcBThr4gROPWWI6jIaJQl/fUj4i3AbP2Y0
+ p582XnUZQdu8dduuIA8R9ONnKhuAzXX/YZj2vwpgGAb3T7vTNs/HRwoJf31I+Itwa5qVyd2336q6jJBY
+ vuLnYG8BBLqA0C+UNQCDR47ZR+1qgBGQ/0DNhMB77rhNdRmNhoS/PiT8RbhFR0fz+IMPkNqkiepSgmaa
+ pvfT6V8EG+BBb/2qeqWMDYrHD7mxo0Zy3tmTVJcR8ST89RETHSXhL8Luzlv+yIB+fVWXERLe6uqyEBym
+ KNgDqG4A1gOYETAH4HDTbp3KyYMGqi4jYkn466NpZgbnTDyNnTt2qC5FRLCLLjifC845W3UZIVNRVRl0
+ eANBbyWsugFYB2BEwJMAh4uOjuaZxx6hU8cOqkuJOBL++miamcH4EcNJS03ltLFjVJcjItTp48dx+x9v
+ Vl1GSJUUl4Vi/eWDwR5AdQOwVvH4YZOclMSLzzxNVmam6lIihoS/PurCPzGxZhXMSJiVLfQzeuQIHr7v
+ nojb12F/QUEoLpkFvcOZ6j/ViL5p2LJFc1576S+0bNFCdSm2J+Gvj6PDH6Bv715kZmQorEpEmrGjRvLk
+ Qw8SFRWlupSQW7th7ZaGX9Ug298CWFP3H5F2G6BO29ateeOVl+jSqZPqUmxLwl8fxwt/AIfDwZhRIxRV
+ JSLNlMkX8NQjDxETo3K/unAxcH0/N9hFgEzs/BggwOCRY4qpnQcQaRMBD5eVmckrf/n/9s47PK7q2tvv
+ US+WbFmWe5GrJFdcZIOxBQKTAKGHEkJCKIEMhBoCJHy5aSRcQkghECJCvUAgJBACBgymuPcCbpJluUi2
+ ZNnqvWvO98eesYVRn9NmZr3Pc2xZM7P3sq2Z3zprr/JHpqWl2m2K3yHi7xy6En8v5559lsUWCYFGaGgo
+ 995xO/fddWfAhf29uN3tLavWrvO1jW+7EbY44V84224DrGDQwIH8/am/8K0rr0Dz5xnIFiLi7xx6En+A
+ ObNmMThhkIVWCYFE0pBE/vbnP/Ltq6+y2xRTaWlp9jl5DwO6AIIzHIA9EAjNgHsmIjyc++66k8d+82vi
+ 4+LsNsfRiPg7h96IP6hjgLMXyzGA0HdOT5/Hq88/x+xZM+02xXTqGhpKDFjG5yZA4AwHYBcEwkig3nP2
+ 4kW8+vyzLFp4ht2mOBIRf+fQW/H3culFF0qES+g18XFx/OzB+/nL448FTfTo2PHjjkgABAc5AMHGiOHD
+ +NOjj/DEY48ydsxou81xDCL+zqGv4g8wNTWVjDMXmmiVECgsyTybf73yEpd+I5icRo3de3LyDVjI5xJA
+ cMiN95bVK2qAOF0DLRjOAk6htbWNN956i1def4OKykq7zbENEX/n0B/x95J34CDfufn7uN1B+GYWemTm
+ 9GncdZuLWTOm222K5ei6rs8/65xfG7DU+8AWXxdxQgQAYAdAiNsR/ojlhIeH8Z1vXcPSN9/gZw/ez/jk
+ cXabZDki/s7BF/EHmDxxAksypTOg8GWmT03j97/5Nc8//VRQij9AmzEtgAF8HSUMgFOKLD8HFunBePvf
+ gYjwcC79xoVccuEFbNi0mfc+/Ii16zfQ2GTE3AjnIuLvHFpaWnwSfy+33ngDn65cRXu7IdVKgp+SOHgw
+ mRmLufSib5A6ZbLd5thOY1NTmUFLGXIE4BQHYLvdBjgJTdNYePoCFp6+gObmZtZt3MTHn61g/cZNNDT6
+ 3PvBUYj4O4empiaOFh7xWfwBxo0dw4Vf/xpLP1hmgGWCPzFhfDILFywgM2Mx06emBWw9f384Xlp60IBl
+ 2jGoCsCBDoBGcBQF9o7IyEjOOSuDc87KoL29nX37D7Bj1y527NrNFzt3UVZuxEwJexDxdw5NTU1s2LCB
+ qSnG3aXdcsP1fPjxx7S2thm2puA8RgwfTvrc2aTPmUP63DnSErobdu7ak2fAMob0AACHJAECbFm9ogJI
+ sNsOf6O0rJy9ubnk7NtHTu4+snNyqKisstusHhHxdw5e8c/NzeWWG7/HrTfeYNjav/vjn3nzv+8Ytp5g
+ LyEhIYwbO4bTZs5g1vQZzJ41g5EjRthtll+g67p7/lnnPGzAUseBvxmwjmMiAKAyGr9mtxH+RtKQRJKG
+ LGRxh9Kro8XFZO/NJSc3l5y9ueTk7qOuvt5GK7+MiL9z6Cj+AIMTjPXBb7r+uyxd9iHNzYbdtAgWERIS
+ wrgxY0iZMpnUKVNIS5lCWmoK0fK+7RctLa1GlXgZcv4PznIANiMOgCGMHDGCkSNGsCTz7BPfOzVSsHP3
+ bmpqai23TcTfOZwq/oDh46uThiRy5WWX8I83/m3ouoKxeO/s01JSSEuZwoTkZFJTpkjHUgOpqq46YtBS
+ RowSBpzlAGw6+aXkARhNZ5ECr1OwY7fKJ9iXt9/UigMRf+fQmfgDppzf3vCd63h76fs0NBiStyT4SGho
+ KGPHjD4h9qlT1BUVFWm3aQHNwfyCfQYtlW/QOo5yADae/FLE3wpOdQrcbjeHCgrI2Zt74ghhX95+Wlp9
+ HVwl4u8kuhJ/gMTBxqfhDBo4kG9deQUvvPyq4WsLXaNpGiNHDGfi+PFMGD+eSRPGMyE5meRx4wJ0zK6z
+ WbVmrREtgAGMmCUAOCgJEGDL6hVbgbkSAXAO7e3tFBw+oqoOdu0iJzeX/ILD6Hrv/39E/J1Dd+IPsPbj
+ D4mMNP5OsLaujsu+9W1bjp2Cgfi4OMYnj/OE78czPnkcUyZPIiba95JOwXda29rrFp6z5A8GLNUM/K8B
+ 6wDOigAArAfmivg7h9DQUCaMT2bC+GQuv+QiAOrq68nO2etxCLrPJxDxdw49iX/cgAGmiL937W9ffRVZ
+ z71gyvrBglfoJ4xPZkKyuiZNnBg0g3T8lbq62qMGLWXIECAvTnMA1gF3ouOw2ITQkQGxscyfN5f58+YC
+ J48OdmfnsGv3HnZn53CoIJ/Jk6eI+DuEnsQfYLAJ4f+OXHvVlbzx5n+orHJ+maoTGDF8OFNTU5iamkpa
+ yhQmTpggQu+nFBYe7fqN1zeOG7QO4DwHYC0g4u9nhISEMHH8eCaOH8+l37gQgLKycj5atYYmKf+ynfb2
+ 9h7FH8xJAOxITHQ0F11wPq+8/k9T9/FHIsLDmTVzBnNOm8XUlBSmpqUyaOBAu80SDGLV2rVGNAACMCqP
+ AHCYA5CekVm0ZfWK7cAcTYM+HDMLDqKhoZH127aL+DuApMTBFBUe6VH8wXwHAJBM8w7Ex8dx9uJFZGZk
+ MHf2aVJfH6C0t7XV/99rrxuV/BK4DoCH1cAcSQPwTxoaGvlkzVpKyw3rVSH0E+9Uv/+8+26vnm90DwDh
+ q4SGhrLojNO59KJvcMb8dMLCnPgRLBhJVU3NYYOWcmNgBQA40wFYCdyj9F+qAfwJEX/n0HGkb3xcfK9e
+ Iz3czSMmOporLr2Eb191JUlJQ+w2R7CQA/sP7DZoKcPbuTrVAWgHQtF1yQfwE0T8nUNH8QcVau4NiYni
+ ABhNWFgY13zzcm74znVyph+UaLz30fIDBi1WatA6J3DcnMb0jMxqYAUg4u8niPg7h1PFH+h1O1eJABjL
+ nNNm8c+XXuCeH94u4h+kNDU1lS37+BOjkqGMGCX8JZwYAQD4DFhitxFCz4j4O4fOxB96HwEYIg6AIYSG
+ hnLb92/mu9deQ0iI4+6xBAspLSsxqv0vwH4D1wIcGAHw8IndBgg9I+LvHLoSf4CBvc0BkCRAn4mJieHx
+ R37D9667VsQ/2NHg8x279hi0WjtwzKC1TuDIn9D0jMwtgFHnJoIJiPg7h+7EHyCuF0cAISEhDBrYO0dB
+ 6Jy4AQP4+5N/ZtEZp9ttiuAA2tvamh7+3e+N6gBoSvcsRzoAHj622wChc0T8nUNP4g+q9j4iIqLbdQYn
+ JMgdqw9EhIfz58ceJWXyZLtNERxCbW2dUeN/AYxc6wROfscvt9sA4auI+DuH3oi/l4E95AFIAqBv3HvH
+ D5k5fZrdZgiOQSN3/4EdBi5oVCvhL+FkB+AjoM5uI4STiPg7h76IP/R8DCAlgP1n/ry5XHn5pXabITgI
+ XXe7//nvN41MADS0A6AXxzoA6RmZDcAyu+0QFCL+zqGv4g89JwJKBKB/hISEcN+dd9hthuAw6hsajq7d
+ sLHVoOXqgAaD1voSjnUAPIgD4ABE/J1Df8Qfei4FTBoiFQD9IePMhUwYn2y3GYKj0CjIzzcy/G9UIuFX
+ cLoD8AHSC9hWRPydQ3/FH3o+AkgYZO4o4EDl8osvstsEwXHofPTpihwDFzTl/B8c7gCkZ2QeB963245g
+ RcTfOfgi/tBzEuAQyQHoM9FRUcybO8duMwSHUdfQcPT1N98ysm+/UaOEv4KjHQAP79ltQDAi4u8cfBV/
+ oMeBQJID0HdmTp9ORHi43WYIDuPw4SNGhv/rgBoD1/sS/uAALEWOASxFxN85GCH+0PM8AKscAN0dOG9l
+ OfsXTkUDPllhaPjfqFHCneJ4ByA9I/Mo0LuB5oLPiPg7B6PEH3pOArTKAaiuMe1mxnJGDB9mtwmCw6ir
+ ry965fU3ag1c0qhRwp3ieAfAwzsnv5QRgWYh4u8cjBR/gPj4ro8AoqIiiY2NMWSfnmhvb7dkHyuIjYm1
+ 2wTBYRw8eGi7gcvpmDABsCP+5ADUA2hyGmAKIv7OwWjxB4iPG9DlY72ZFWAUbrfbsr3MJiKy+/bKQpCh
+ 6+53PlhmZPi/HGgycL2v4BcOQHpGZgXwNkgygBmI+DsHM8Qfuk8CjBvQtXNgNO0B5AAIQkdq6+oK3nn/
+ g0YDlzSyk2Cn+IUD4OHtk1/KMYBRiPg7B7PEH7rPARgQa10o2+0OnCMAQejInpy9W41e0uD1voLfOADp
+ GZn/wdMPWUfuIoxAxN85mCn+oEQ+JKRzx3nk8OGm7NkZ7e3y3hUCj7b2tqY7f/xAtoFLNgFFBq7XKX7j
+ AHh4E0CTCIDPiPg7h9CQEFPFH1TP+gFdhPqnT5tq2r6nEkhJgIKg0CkrKzNS/MHk8j8vfukAKMQJ6C8i
+ /s6hqamJiBDNVPH30tlAoPDwMM7JyDB9by+trUbNRxEEp6Cx7fMdnxu8qJHNhLrErxyA9IzMjcAq9SdJ
+ B+wPIv7OoampiQ0bNtDUZGqi7wnOPfusrxwD3HLDDSQlDbFkf8Cyv6sgWEVjU1PpLx95tNDAJd1YkAAI
+ EGbFJgbzL+Asu43wR0T8nYNX/HNzc1k4f54le/7wB7dw6UXf4IudO6mqriY1ZQrzZs+2ZG8vjeIACAHG
+ ofwCo5P/igBLQmX+6AC8AfwWGKSiAHIU0BtE/J1DR/EHqK2ts2zv0aNGMnrUSMv2OxVxAISAQne3/Xfp
+ e7sMXtWS8D/42REAQHpGZjnwT/UnEf/eIOLvHE4Vf4Cq6mobLbKWxkZxAITAoayscu/bS98zsvYfYK/B
+ 63WJ3zkAHl632wB/QcTfOXQm/gDVQeQANDUZ/VkpCPago7F95w6jw/9HURMALcEvHYD0jMzVwEq77XA6
+ Iv7OoSvxh+CKANTXN9htgiAYQnNTY+n/+9XDBQYv+4XB63WLXzoAHv5x8ks5CjgVEX/n0J34A1RUVlls
+ kT00NzfT0CgRACEwyDtwaJMJyxo5S6BH/N0B8DRLkJLAjoj4O4eexB+gorKSlpYWC62yh2BxdITAp729
+ venZF180OlmvEDBylHCP+K0DkJ6R2Qi8YrcdTkPE3zn0RvwBdF3neGmpRVbZR2VVpd0mCIIBaBw9Wrx9
+ w+YtbQYvbHQzoR7xWwfAwyvgHQwgxwAi/s6ht+Lvpbj4mMkW2Y9EAISAQNdZtW7ddoNXdQNGtxPuEb92
+ ANIzMnOBl9WfgvsYQMTfOfRV/AGKjhabaJEzqKyUCIDg/5RXVmQ/8XRWucHLFgCWJ8j4tQPg4f+8X+ha
+ cEYBRPydQ3/EHyDvwAGTLHIOR4pMH24mCKaiA9u/2LHFhKXNWLNH/N4BSM/IXAl8AKDpwRcFEPF3Dv0V
+ fwgSB6BQHADBv6mrrzv80C9/nW/wsk3YEP6HAHAAPLx44qsgCgKI+DsHX8QflAOgB7gDKw6A4M/oQHb2
+ XjNK//aYsGavCAgHID0j801gPRA0qQAi/s7BV/EH1SAnb3/gRgF0XZcjAMGvaW5sKr3jvvvNuFO3PPvf
+ iz8OA+qKF4CFdhthBSL+zsEI8feyaetWpkye1O/XNzQ2UlJaSn19A/X19dTW1dHW1kZDw1dzi6KiIomO
+ imLw4MGMGDaMwYMTCA0N9cX8bjmUX0BDg3QBFPwUHfIOHthowsolqPp/WwgYByA9I/P5LatX3AnMstsW
+ MxHxdw5Gij/Ahs1b+O613+r1848UFbH808/YuHkLBYePUFnV/zK7sLAwxo0Zw8QJ45k8aSIzp01jamoq
+ UVGR/V6zI1/sMnpgmiBYR0trS9VNt91hdOkfwDYT1uw1AeMAeHgOeBIIyEnBIv7OwWjxB9j2+RccO17C
+ 8GFDu33ejl27efWNf7F67VrcbmPOvNra2jhw6BAHDh1i+aefAcopSEuZwoJ581h4+gKmpaUSEtK/U8PP
+ d+w0xE5BsIMDhw5tMGHZNsBWzzgQHYDbgKki/oJZmCH+AG63m3fef58f3HRjp4+tWL2Gf7zxL3btsSZh
+ uK2tjV17stm1J5vn/u9lBsbHs3jhGSw5J5P5c+cSHt67j4+WlhY2bNpssrWCYA4tra3VT2X93Yy7/xzA
+ 1nOxgHIA0jMym7asXvEs8Cf1HY1AyAoU8XcOZom/l3+99TZXXX45gxMGAXCooIBlyz9m2fKPOXa8xJQ9
+ e0t1TQ3vffgR7334EfFxcWRmLOayiy9i+tS0bl/3yYqVVNfUWGSlIBjLwYOHNm7ett3otr8ARo8S7jMB
+ 5QB4+DtwK5CGpvu9/ov4OwezxR+gpraW3zz2e5LHjmXt+g0cKjB62qgx1NTW8s77H/DO+x8wZfIkrrjk
+ Ys5fsoTY2JgvPc/tdvP6v9+0yUpB8I2WltbqZ1540Yxz+lJU9z9bCbBAuWLL6hV3A38G0DXQ/NQJEPF3
+ DlaIv78TEx3N15acyxWXXExayhTcbjdP/u0ZXn3jX3abZgoP//xnnL/kXLvNEEwkJzf3w+tvcZlR+/8e
+ EgEwjWeAm4CZIv6Cr4j4946Gxkb+u/Q9/rv0PVImT6apuYmCw0fsNksQ+kVzc0vlU1l/N+PuvxEwepRw
+ vwiIRkCnkp6R2QRknfiGn8U5RPydg4h//8jNyxPxF/wYjbwDB9abdPb/OdBqwrp9JiAdAID0jMy/ASp0
+ 40dRABF/5yDiLwjBSVNzY+mNrtvNCNHrgBkVBf0iYB0AD0/bbUBfEPF3DiL+ghC85OzNXWfS0tlAmUlr
+ 95mAdgDSMzJfBj62247eIOLvHET8BSFY0aitqzty6533mHVGb8vY364IaAfAw19PfunMswARf+cg4i8I
+ QYyus2v3HrPu/g8D+Sat3S8C3gFIz8h8B/in+pPmOB9AxN85iPgLQvCio1FeUZFz9wM/MesDwIxhQj4R
+ 8A6AhyeBdsBRFQEi/s5BxF8QghsNXd+0bZsZPf9BNf6xpod3HwgKByA9I3M93iFBOMMHEPF3DiL+giAU
+ HS3a/IvfPGJW7apZjoVPBIUD4OEvqDMYdJuPAUT8nYOIvyAIbW2t9cs+/tSsEH0VDir960jQOADpGZmH
+ UE6AeQAP1wAAIABJREFUCgFo9sQBRPydg4i/IAgABw7lr3vm+RerTFrekXf/EEQOgIcngNWALWEAEX/n
+ IOIvCAJAfX1D0a8eedSMfv8A1YAZ7YQNIagcgPSMzDaUEwCAZmFJgIi/cxDxFwQBQENj15496/IOHHSb
+ tMUGwIx2woYQVA4AQHpG5n+AF0CVfViBiL9zEPEXBEGhcay0ZMedP34gx6QNHH33D0HoAHj4E1BsxUYi
+ /s5BxF8QBC/t7a2NK1evWW/iFhtwyNCfrghKByA9I3M3yglQ6OZEAkT8nYOIvyAIJ9DgwMH8tY8/8WSJ
+ STtUAGYMEzKUoHQAPPwR+AQATcfo7gAi/s5BxF8QhI7U1dQWPPTLX5uZne/os38vQesApGdktgN/4ERz
+ YOMSAkX8nYOIvyAIHdGBbTt2ri04csSsLPASHDb0pyuC1gEASM/I/BDlBBiGiL9zEPEXzKShocFuE4R+
+ UFhYuP7HD/1sv4lbmDVMyHCC2gHw8Dgnzmp8cwhF/J2DiL9gNlVV1XabIPSRhqbG4//+z3/NTPw7DJg1
+ Sthwwuw2wG7SMzKPb1m94nHgn77kAYj4OwcrxP/885bguvmmL33vD08+xZp1Zn62CE6iuqbGbhOEPrJn
+ T86a1998q97ELfzqA0AiAEB6RuYbwF8BNTG4j36AiL9zsOrO//zzljBq5IgvXYvOON3UPQVnUV0jEQB/
+ 4mjxsS2333vfHhO3yAb2mri+4QR9BKADvwfOROc0pf8avTkSEPF3DlaJf0xMDOlzZn/l+2fMTzd1X1/5
+ 7rXfYsyoUZ0+Fh0TTVhoKDW1tXyxcxfLP/2M9vZ2iy30L6qrJQLgLzQ2NZW+t2yZmWfzOg7u+d8V4gB4
+ SM/ILNiyesVjwGvqOyL+/oSVZ/4LF8wnIiLiK98fMXw4Y0aP5khhoek29IcrL7uEkSNG9Pi8Ky65mG9d
+ eQW33f0jGhobLbDMP6mqlgiAv7AnO2f1sy+9bOZ/2CbArFHCpiEOQAfSMzJf37J6xenAXeo7XfcHEPF3
+ DlYn/J29eFGXjy1In+tIByA0NJRhQ4f2+vlTU1O54TvX8fSzz5lo1Vf546OPsHjhGd0+52/PPc8LL79q
+ kUVdU1JaZrcJQi8oOnp00233/Gi3iVvUoRwAv0NyAL7K7wDPXGgRf6djtfiHh4dxZjdn/aenO/MYYGhS
+ EqGhoX16zYgRw02ypnOSx47tVR7FRRecj2bTOO+OlFdU4HabNUNGMIKGhoajb73zrtlleeuBSpP3MAVx
+ AE4hPSPzKPAoXfRwFvF3DnaU+s2bM4cBsbFdPp4+ZzZhYc4LrI3qRejfbs48Y0GvhH3MqFGcNmOGBRZ1
+ T3t7O2Xl5XabIXSKjq7r7i927lr9yutv1Jq4UREnbhj9D3EAOiE9I/MdlBMAnBwbLOLvHOyq8+8u/A8q
+ QXBaWqpF1vQeq+/m+8PU1N7/u13yjQtMtKT3HC8ptdsEoRM0Qsg/fHjt3Q/8xOwPiLWA34aBxAHomkeB
+ 90CNDRbxdw52iX9IiEbGmQt7fN6CefMssKZvjBzufAcgcfDgXj/33MyziYmJMdGa3lFSKg6AE6msqsz7
+ y9NZa03e5gvArFHCliAOQBekZ2Q2AP8LHG5oaORTEX9HYGeHv2lpUxmSmNjj806f70AHwA8iAFFRUb1+
+ bnRUFEsyzzLRmt4hDoDzaG1trV2/ecuatRs2mjmKtwE/a/rTGeIAdEN6Rub6krKy5z9Zs5YSEX/baWtr
+ s7W9b2ZG9+F/L9PS0oiPizPZmr7Rm/I/u6mrr+vT8y+64HyTLOk9JXIE4Dhy8/JW/+I3j5hdkrcONfTH
+ rxEHoBtcLtfkpcs/vU7u/O0nKXEw+QcP2Nrbv6fzfy8hISHMnX2aydb0DX+IAFRU9C2R+rQZMxgzerRJ
+ 1vSO4xIBcBRFxcWbb3T9cKvJ2+Tjh01/OkMcgC5wuVyTUTkAU+y2JdhJShzMksWLOH7cPod7wvjkPonN
+ gnTnHAOEh4f16ujCbvbuy+vT8zVN48Kvn2eSNb1DjgCcQ21tbf6b//nvGpO30fHzxL+OiAPQCSL+zsEr
+ /jEx0bb2Xs9cvLhPz3dSW+Dhw4YTEuL8t3r23r63UT9/yRJbewKIA2A/OhqtbW11m7dtX/3qG//q2zlS
+ 39kAmDlK2FKc/6lgMSL+zqGj+APU1pr93u6as3oZ/vcycoQaEOQE/KECAGDvvn19nj8wetRIUlPse6uW
+ lpVLMyCb0XSd3H15q37y818eMnmr4wRA4l9HxAHogIi/czhV/KHvSWJGMWzoUFKnTO7z65zSFdAfegAA
+ NDU1c6igoM+v+9q555hgTe9oa2ujsqrKtv0FKDxatPFG1+1mn/sDrEG1/Q0YxAHwIOLvHDoT/4bGRlpb
+ 22yxJzNjUb/CzE7JAxjlJw4AwIGDfb+J+/q55xISYt8xgHQDtI+Kysrcl159bbUFW20GzJwnYAviACDi
+ 7yQ6E3+Aujr7HO+MRX0L/3uZN2e2I87eR/jJEQDAkcKiPr8maUgis6bb1xq4XKqEbKGxqbF0zboNq995
+ /wOzR1aWEmChfy/2fzrZjIi/c+hK/AFqas1s59018fFxzJk1s1+vjRswgDQbz6e9+EMPAC9HivruAACc
+ d26mwZb0nvIKcQCspt3d3rJz156Vv3ns90ct2G41EJDnPEHtAIj4O4fuxB+gpsYeByDjzDP7PEWvI+lz
+ 5xpoTf/wh0FAXvoTAQA48/QFBlvSe8okAmA5+/cfXHnHffdnW7DVJmCXBfvYQtA6ACL+zqEn8QeotekI
+ 4KxFZ/r0+vlz5xhkSf+IiookIWGQrTb0heJjx/r1upEjRpA8dqzB1vQOiQBYS2FR0cbvfP9WKxrxHEXV
+ /AcsQekAiPg7h96IP0CtDUcAmqb5nMk/c/o0IiIiDLKo74wYNtzWOvm+4stRz0KbogCSBGgNGlBWXr7n
+ hZdfXWXBdm5U6N+e0KNFBJ0DIOLvHHor/gDVNhwB6LpOS0uLT2tERkYyc9o0gyzqO/7QArgjLS0tNDc3
+ 9+u1ZyyYb7A1vUMiABagQ01tXcEnK1auWrrswyYLdlwD9L0zlZ8RVA6AiL9z6Iv4g31VACVlvnd6mz/P
+ vjwAf+kB0JGafjZ8mj1zhk/5Gv1FqgDMp6mlqXzztm2r/vCXp6xovbiPAA/9ewkaB0DE3zn0VfzBviqA
+ 0jLfw7vpNuYB+FMCoJf+Rl0iIyMZP26cwdb0jBwBmEtbW3vjrj3ZKy3o9Acq5L8GMHOUsGMICgdAxN85
+ 9Ef8AWpqakyyqHsO5ef7vMbU1BTiBgzw3Zh+4E89ALxEhIf3+7V2HHk0NjXR0NBg+b6Bj4au6/q+/Xkr
+ b7/nPqua8KwCzB4l7BgC3gEQ8XcO/RV/gBqbjgD6OqGuM0JCQjitn70EfMWfegB4CY/ovwMQYsMRAEge
+ gPFoaLg5lF+w6nu33rbZok03A1a0FHYMAe0AiPg7B1/EH+wbBLR33z5D1plvUz8Af0sCjIqKJDIyst+v
+ tytSJL0AjEbnSNHRjdd870YrMv4B8lGh/6AiYB0AEX/n4Kv4A9TU2vPBXnD4MA2NvncaTZ872wBr+kZM
+ TAwD4+Mt37e/TEtL5dXnniU6KqrfaxwtLjbQot4jEQBjOXa85PO/v/DSSou2q0OF/gO65K8zAtIBEPF3
+ DkaIP0BdXb1BFvUNt1snb/8Bn9eZkJxM4uDBBljUe/xlCFBYWBg/uOlGnn/6KcaNHdPvdZqamikptSJJ
+ /KtIBMA4ysrL97z97tKVyz7+pH/1oH1nFWBFgqHjCDgHQMTfORgl/mBfJ0Aw5hhA0zTS51gbBfCHBMDk
+ sWN54emn+P4N1/tcwpebl4fbrRtkWd8ol0oAQ6isqtq3/NPPVr7wyqtWhfw2AFss2stxBJQDIOLvHIwU
+ //b2dp8b8vhCbt5+Q9aZZ3E5oJMTADVN4/JLLuLl554hLTXFkDV3ZVvRGr5zyuQIwDd0qK6pObhq7bqV
+ f3rq6TKLdt2L6vYXtITZbYBRiPg7ByPFHzDkDN4XcvN8rwQA6+cCODUBcGhSEr/46YOGN0jK2Ztr6Hp9
+ QXIAfKO2vu7whk2bV/32scetSuIoQYm/vR8uNhMQEQARf+dgtPgDNNrsABzKz6el1fe+ICOGD2fE8GEG
+ WNQ7nBgBOH/Jubz+0vOmdEfck5Nj+Jq9xY5ZFYGADjQ01Bdt2bpt5f88/NvDFm3bDKxEDfsJavzeARDx
+ dw5miD9g27mul9bWNg4eyjdkrTmnzTJknd4w0kE5APHxcTzyy5/z8M9/RnxcnOHrV1ZVUXTUngoAwKfK
+ hWCmsaGheMv2L1Y+aE2XPy8rAfvOixyEXzsAIv7OwSzxBwgJsX+a3T6D8gDmzDrNkHV6g1MiAGcsmM8/
+ X3qR887JNG2P3dn23f0DxMbG2rq/P9LQ0Hhs+xc7Vv74oZ8Z8+bqHRs8l4Af5wCI+DsHM8UfVCc9uzlS
+ VGTIOlZFAOLj44iNjbFkr66IjY3h7ttu47KLv2H6SOJde/aYun5P2P1v7W80NDYe+3znjpX3/uQhYzpt
+ 9Y7dBHnS36n4pQMg4u8czBZ/gIjwCNPW7i3HS0oMWWf0qJEMTUoyvV7d7iFA8+fN5WcP3G9ZzoPdEYCY
+ aHEAeoOOTlNjY/HnO3auuueBn1qZtVmAJP19BftvrfqIiL9zsEL8AQYMiLX9GMAoBwCsiQLY1QMgJjqa
+ B390D0/94feWib/b7SZ7r72j2/2p46Jt6NDQ0Hh02+c7Vlos/mWoc3/j3sQBgl85ACL+zsEq8Qd1BBA3
+ wPjEsb7Q3GxcU7K5FjgAdiQAzp19Gq+/9DxXXnap6SH/jhwpLKK+3t5pfMOGDbV1f3+gvqG+aOv2z1dY
+ HPZvQIl/UHb66wm/OQIQ8XcOVoq/l4RBg6i2adALYGgb37mzzU8EHDnSuiOA6KgofviDW7j6isstFX4v
+ drX/7YiV5Z3+SG1d3eEtW7dZne3vRom/VaOE/Q6/iACI+DsHO8QfYJSFgtYZQxITDVtrzOjRJA0xbr3O
+ sKoCYOb0abz6/LNc880rbBF/gDIHtOEdMcw5JZdOo7qm5uC6DRs/tVj8QfX4t2qUsF/ieAdAxN852CX+
+ AGPH9H9IjBEMG2psiHfOaeZGAcw+AoiMjOTeO27n2af+wtgxo03dqyfs7sKnaRrDhibZaoNTqayq2rdi
+ 9ZpPLGzy42UDygEQusHRDoCIv3OwU/wBn6bEOXF/MxMBNU0zNQlw5vRpvPbCc3z76qscUaKp6/Y2ikoY
+ NIjIyEhbbXAiZeXle5Yt//hjC9v7etmOiH+vcGwOgIi/c7Bb/AGmT02zbW+A5HFjDV3PTAcgYdAgoqJ8
+ FyTd7f7SnyMiInDdfCPXXXO1I4Tfy8D4gbbu79SZC3Zy7HjJ52+/u9TKqX5edqPEv8niff0SRzoAIv7O
+ wQniDzB54kRiY2NsyfYOCQlhzKhRhq45bswYEgYNorKqytB1wThBuuBr5zF50kRWrV1H7r48brvlZsaP
+ G2fI2kYycKC9JXjJY411Dv0ZDZ0jRUc3/v2Fl1Yu+/gT40pnesc+lPhXW7yv3+I4B0DE3zk4RfxBifBp
+ M2awbuMmy/ceMXwYERHGNiPSNI0Z06ayet16Q9cFYxMAJ02YwKQJEwxbzwzsrsEfn5xs6/5OQNPBja4f
+ zC9Ydc33brQj/H4QlfFvf0mIH+GcOB4i/k7CSeLv5eyMxbbsa1YC4szp001Z10lDgKxgzGhjozN9ZXyy
+ 86IiVqLrGm3utoac3NwPbRL/AmS6X79wjAMg4u8cnCj+AJkZiwkNDbV8X7NKEGfOmGbKuk4ZAmQViYMH
+ Ex9vX6OoCUEeAWhubizbvmPnsu/depsdJXeFqLC/1VUGAYEjHAARf+fgVPEHFepddMbplu9r1h311JQU
+ wsONP4UbEYRJaXaJcGRkZJA2AVI9H2prawvWbdz0we333GdHs52jqDv/gzbsHRDY7gCI+DsHJ4u/l+uu
+ udryPc26o46MjCRl8mTD1x0VhA6AXWH45LFjHVURYR06ZeXle97/aPn7P7G+wQ9AMUr8rRwlHHDY+pPr
+ crkmAUsR8bcdfxB/gNmzZlpeEmjmmfqMacYeA4SEaAwbFnx3pHZFAIL1/L+wqGjj039/7r0//OUpO5Lu
+ jqHE38qZAgGJbQ6Ay+UaD7wBTLLLBkHhL+Lv5d47fmhp21kzQ+ozpxvrACQmJhIRHm7omv5A6hR77iEm
+ Thhvy7520d7e3pS7L2/55dd+56Olyz60o9a+GFgBWDlNMGCxxQFwuVyjgaeBFMD6rC7hBP4m/qBE84Kv
+ nWfJXjExMQwaaF6jmVkGVwKMCrIEQC9pKVMIC7O+qtkux8MOGhsbj2/d/vnS73z/1g02mXAUEX9DsdwB
+ cLlcQ4GfAjOBWKv3F07ij+Lv5cF777Yk/Gp2SV1S0hBDk8iCrQLAS2RkJJMnWt+vIGVycAQwKyorc5d/
+ uuLdO+67P9smEwqBz5Cwv6FY6jK7XK444DLgTGCkCVtUAB8D64CdqOzQ0qysrNgRI0ZcP3To0DGJiYkJ
+ AwcOHDZgwICx0dHRE0JCQvxP/QzAn8Uf1J357x7+FTffdge1dXWm7WNFRv2DP7qXoqNHaWxUEdW6+np0
+ 3U1LSytNzep7tbVf/juGhoae+L+LjYklOjqKmOhoZs2YYbq9TmX61Knk5FqnD0OTkkgYNMiy/axHBzQK
+ i4o2vvTqa6vfef+DRpsMKUCV+km2v8FY5gC4XK4QYBxwKWB0I/QPgVeBt7Kysk49l0oEvl1cXDywuLi4
+ BqhB/UBtHjZsWFh6enpaYmLizOjo6OBw5fF/8fcyftw4nvvrk9x1/4McLykxZQ8rMurPPH2B6XsEA9On
+ pvHvt/9r2X6pU4yv4HASra1ttbl5+1ff6Lp9q41meDv8SZ2/CVh2/r5161Z93rx5PwGuN3DZz4AfZWVl
+ /c/WrVt3bd26te2UxxOBb3t+/wr19fXuffv2lezYsWNXUlLS8aioqNiwsLAEA+1zHIEi/l4SEgZxzlln
+ sTs7m5JS4xOSzzsn0/BMfcEcoqIieeOtty3b72tLzmHubHPHOluPSq6tqa09tGHT5o/utC/kDyrc/xkq
+ /C+YgGU5AC6X6zpU+N8IGoGfAxdkZWV15fJ3K/6nsmzZsr1Lly79R3l5+Qpd1091JAKCQBN/L8OHDeW5
+ vz7J/ffcRWxsjKFrB1tbXX9m9KhRlobkzejhYCu6+qWouHjziy+/+h+b6vu97EYd50p7XxOxJALgcrkm
+ AtcC5+B1MfvPHtRd/9Nbt25t7+I5fRJ/L42NjXp2dnbB8OHDK2JiYpJCQ0MDJklxSEKC+7yMxVqgib8X
+ TdOYlpbGVZdfTmLiYA4cPER9g++TA2+47tskJg42wELBbDRNY0/OXg7lF1iy3123/YABsYHwEaE+klta
+ W6tzcnM/vfaGm1fv3LOnxUaDtqPu/CtstCEoMN0BcLlcGirp73/xPedgE/BQVlbWO908p1/i35G8vLzS
+ pKSkytjY2MTQ0FB7R40ZQFtbW3lcTNSyUSNHhEVHRfX738UfiIgIZ/rUqVx1xWWkTZlMZGQkJaWlNDX3
+ bzLpHa5biTR4EqBgHlVV1azbuNH0fQbGx3P7Ld83fR+rqKyq2rd63fqP7nngp3ttNmUDSvzrbbYjKLAi
+ CXAM6txf93GdfcCvs7KyPuzmOT6Lv5fly5fv//rXv66NGTPm62FhYX4rmm1tbeU7dux47bktWyoWnXH6
+ vrtudy1KHjt2kaZpAd2/NCI8nLMzFnN2xmLcbjf7DxwkZ98+9ubuI+/AAY4dL6GsvJz29s6DSGFhYXz7
+ 6iuJGzDAYssFXzDrTH5wQgJTU1NIS01hamoqU1NSTNnHOjRAR9d1d/7hw2v/8nTW2rUbNrbaaJAblelv
+ xzTBoMX0dmoul2se8ALga33S9VlZWa9087hh4t+Riy++eOaoUaMuN3JNq/CK/5YtW74USnvisUdTZs6Y
+ vmhAbOxo7/d0Tc30DibcbjflFZVUVlbS7nar8ju3G03TmDxpoqkNgARz0HWd8y/7JhWVlf1eI27AACX0
+ KSlMTUslLSWF4cOGGmilM6irry/cuWv32rsf+IndjXXqUcJvxzTBoMYKB+AR4C58a/rzaFZW1k+7edwU
+ 8fdyzTXXnJuQkLDIjLXNoivx9/Lda6+J++all5w5auTIU2rQ1J2BIPgrP/3Fr/hkxcpePTc6KoopkyeR
+ ljKF1CkppKVMIXlcgA/40aCo6Oimt955d90rr79Ra7M1pSjxt2OaYNBj6hGAZ9LfVHwT/23A77t53FTx
+ B9i+ffv6xYsXT4yIiPCLNms9iT/AK6+/UfvK6298+Lc//7FwalrqmTHR0Z50dxF/wb+ZO/u0Th2AsLAw
+ xoweRVpKikfwpzAtLc2UkcxOQ7X0gYbGxmPZOXvX3XbPj5wguPko8bez2iCoMfsnfzzg6wD3p7KysroS
+ MtPFHyAvL68xLS1t88iRIy81cx8j6I34d+S2e360+5Ybrj9y0QXnnzlyxIh0s+0TBLOZO/s0QkJCGDd2
+ zJfEfmpqChFBmtCpAUeLi7e8t+zDdc++9HK13fag7vhXA+Z08BJ6hWlHAC6XKx5wAQ8B/T1M3ZKVlTW/
+ i8cGo8R/SD/X7jM33XTTLREREWa0MDaEvor/qTz9pz9Mm5qWujA2JubE31HXNTTNjQWnRYJgCLqu09zc
+ QlRUpN2m2Iy6769vaDianbN3/e333rfHbos8bECJv12thQUPZh50uYF59F/8Af7RxfcTgKtQToBlVFVV
+ 7bRyv77gq/gD3H7vfXueee6F144UFq73fk/TPMFD0X/BT9A0TcQfAI0jhYXrn3nuhdccIv5NwEeeS8Tf
+ AZjSB8BT+z8BJdK+DMz+/tatW09NUokHLgZGYPEwo7CwsJqxY8eeYeWevcEI8feyOzun9Y233j6YMnly
+ UcKgQQOiIiNPtkb2HiQKguBINM8btLqm5uCmLVs/uPn2O7fuzs6xs7zPy3FgOfC53YYIJzHFAdi6dSvz
+ 5s1bCNyESgDsj2x8mpWV9ddTvhcLnAUkA8b2fO0FJSUlLdOnTx/npHkBRop/R5Z/+lnFqjXrdp02c0ZL
+ fHz8sNDQkIiT/4viCQiCk/C+I1tb2+oOHDy46u77H/zg32//1ymd9PaixF+m+TkMM++gB6Lu1vurFGtO
+ +XMkkIpqLBTng11d0QgcAI6gvNVKVH1qG+rfKRZI0HV9JHCLCfv3GbPE30vBkSP6dTffsv7Hd9+5/+zF
+ i04fNnTobPWIiL8gOANVtqsBx0tKPl+5Zu3Gx5940kmJdXLe72BMcQBcLlc0MAp15tPf5vMdQ0UayqFI
+ BYyezrIf2Alko8S+M9qAaqA6Ojr6PRzgAJgt/h15/IknSx5/4sl3n3z8sbxpaWkL4uIGjANOtgyQgIAg
+ 2IRObW1dwZ6cnE13/viBHLut6UAN6iZui92GCF1jZgQgDt/C9HkdvtaB2YCR47cOoWYL9LX3dV7PTzEX
+ K8W/I3f++IGcyRMn5P7ioZ8sGD8ueUFERLhK8PQ6AuIECILpqMocnZaW1upDBfmbfvXIo5vyDhx0221X
+ Bw6h7vqlvt/hmOUAeMXfl1TcjmMgZ6Lu/o2gFVjrubqaJtgdto6ntEv8veQdOOj+zs23bvjBzTfmnL9k
+ yYJRI0cs0DRNE/EXBKtw64VFxZs+/OSTTc88/2KV3dacwmbUnb/dHQaFXmCWAxCCKtVrpP9HAN4foMHA
+ WMCIQd8lKM/Uly5Ytv1g2yj+bk4pGX3m+Rernnn+xY9+9bOHsufPnTN/SGLi9I6PS0BAEIynrLx89+Zt
+ 2zf/4jePHLHbllOoRgn/VrsNEXqPmUcARvQY0IAkVPjfVz0pBFaizvz9DhvFvxxYgYrCTDn1Qc8H0ZEn
+ Hnt097SpafMHxsdPgJP/WToamrQXFoR+oaGjo1FdU3NwT3bOZgcM7umMfSjxd5pTIvSAWQ5AOL7d/cPJ
+ TP9Z+N6gvhzVc9oI8TejAqFbbBb/1zy/5wKLPNdXykc9H0y5f3/yz7OmTJqUHhsbOwoQ8ReEPqLroHk8
+ 6Lr6hqJ9+/dvufXOe3bYa1WntHPyONUJvQaEPmKWA9CIChu3AP1tvj0SFVZKxHc7V2Nc8p6lrYAdIv6g
+ 3uArgGKUEzC6sxd5Pqh2vJj19LyJ45PnRUdHD/vSE+RsQBC6wFPSp0FjY+PxA4fyt97out2pIfVClPD3
+ NYlacBBmOQDtKMFopv8OwGRUHb6vTXfWAkZ6z0ZWInSLg8S/I3uBIpQTsKCTxwG40XX71vlz53xxh+vW
+ uePHjZsXFRWlZjacEH8ZOywI0PGdoNPU1FR2qKBg61NZf9+2edv2rsqS7WYT6nNVEv38HLMcgGbUnWK/
+ qwDa29sXAl/QfwcCVMb+Oh9e3xmzDV6vUxwq/l5qgWWou4Az6aI3w+Zt29uuv8W1adEZp2//wU03zk0e
+ N3ZOVFRUknpUP/GrBASEYEYHmpqaSvMLDm9/5oUXt63dsNGp4fRjqM/TXXYbIhiDKQ5AVlZWg8vlqkLl
+ AvQLTdMWA2U+mrIZ4ztQLTZ4va/gcPHvyC5U4s9CoKupjazdsLF17YaNG+fPnbP1hz+4Zc74cePmeI8G
+ TnYX1kCTiIAQXDQ2Nh4/VFCw/a/PPLvdwXf8oD5L1wNOKzsUfMCUmy+XyxUKXA78HtW3v1+sX7/+f3fu
+ 3NnSz5cXAc/2d+/OcLlco1B3vabhR+J/KtNRjkCvciSe++uTsyeOHz97wIDYMV96QEICQoDibeADUFdX
+ f+TAoUOff/+Hdzp9OM5RlPD7UjotOBSzhgHp8+bNiwIuBIb19PyuiIyMrM/JySnq58vXY7BYz5s37ybg
+ fCPX7Igfiz+oHgveEqXR9CDj736w7Nj//eO1z2dNn146IDY2IioqKhF6epUg+CG9OLL3AAAQJUlEQVTe
+ idoaVFVV5+3Ytfuza7534/J3P1h2zG7TukFH9fH/AJNvegT7MLMPQB3Ke5xKPx2NQYMGzUQlnPSH7H6+
+ rjuuM2FNwO/F30sdJ6d+LUSNhO6WO+67PxvIfuSXP0+eOX36rGFDk2ZxihsgvQQEf+NLP7Ma+vGS0h07
+ d+/e8dAvf51vq2G94yDqBsove6YIvceUCADAvHnz6oBpqGzxfhEaGho3cuTI6tzc3L56ygdRZ1aG4XK5
+ bgBuN3JNLwEi/h2pQOUHtABD6UUy6KcrV1W99q9/58ZER++Oj4tvjomJGRQaGhoFEhQQ/Ajv3T7Q0tJa
+ faSwaMt7H3649O77H/z805WrnH5+Xosqmf4A4z8TBAdi6mery+W6BfglPtTOt7S0FK9Zs+aVvLy8viTz
+ rfRchuByuQaj7mznGrWmlwAU/1MZCpxBH6snzpifHvb9G66fmTxu3Iz4uLhkUywTBJ/5atJKTW1tfn5B
+ wa7nXnp554bNW5yc2NeRz1EhfyeNEhZMxswjAIClqNG5/XYAIiIiRsyZM2dhXl7ep314WXF/9+uC+xHx
+ 7y8lwDuodqGnA+N686INm7e0bdi8ZTuw/be/+J9xM6ZNnT40KWm6NyqgkIxBwR403VPI6mnZ197e3lRS
+ Wrp7157s3f/vVw8X2Gpc3ygANgJOGiUsWITZEYCRwO9QFQGxvqxVVFT09tKlS3f28ul/BUp92c+Ly+X6
+ LvCyEWt1JEjE/1RCUE7AAmBgX198+cUXRV960YXTx44ePS0uLu7LjoSG6qFKCNJgSDANTya/7uneU1tb
+ W3C4sHDPO+99sPvtpe8ZXXJsJtWo/KqNqK6tQhBi+u2Ty+W6DPgXPvQEACWYR44c+eijjz7qTUvfR4Em
+ X/YDcLlcFwJ/opMhOL4QpOLfkQSUEzCffg6N+uVDPxk9c/r0qcOGJk2NiIjoxJkQZ0AwhlPjTC0tLdXH
+ S0qzd+7enf3LRx71twx5Nyo/ahNQabMtgs1Y4QDMBn4FXOTrfi0tLUWFhYUrly9f3lN26q/w8ZPf5XKd
+ j8pf6LLdbX8Q8f8SY1D/vtN7emJ3PPn4Y2kTJ4xPTRw8OC0kJKQTR1OOCoS+cepPjNvtbi2vqMg5cPDQ
+ 3jt//IC/hst3o4RfpvYJgEWfii6X6/8BDxuxX2tra+mxY8dWvf/++3u6eZpPDoDL5boG+B9UFYOR7Nu2
+ bdtHIv5fIRVIByb6ssil37gw+qILzk8ZO2Z06uCEhJTOnqPpqumgIHwZrcMx0kkqKitzDx8p3Pvesg9z
+ 33n/A38K8XfkALAFGdwjnIIVEYAQVDfAv2JQEx1d19sqKirWfPbZZ+vKy8vbO3lKv44AXC5XBPAg8FN8
+ G2XcGfuampqueOmll64yeN2ecLr4d2QWyhHodNJgX/jutdfEZWZkTBk9auSUhEGDOj/CkcBAkKN5fga+
+ LPqVVVX7CouO7luxevW+V15/w58H3hSihN+Jo4QFB2BVBCAOuBO4DQM+3L00NTUdOn78+OZly5ad6tn2
+ OQnQk6twJ3COUfZ1YB9wUVZWVhXwQxPW7wp/Ev+OpAPz8KGLZEeuvfKbseecfdbkMaNHTU4YNGhSSEhI
+ NwOmZEph4NL5/63b7W6prKraf6SwKO+zlavyXn/zrXrrbTOU48BWlPgLQpdYdv/jcrlGA2+hPtj7lfjV
+ FY2NjfvLy8t3btmyJef48eNtwOucbEvbnU1RwDeB72Bei1+v+OcBKcC1Ju1zKv4q/l7CUD8rc4EkoxZd
+ dMbp4VdfcfnE5HFjJw5OGDwxMjLiq+OmdUDTPHIhzoC/05nsNze3VFZUVhzILzh84F//efuAgyfw9YVS
+ YBtK/P2l/4BgI5YGQF0u1xLgJWCUGeu73e7GxsbGg263+9O4uLj/oDoClmZlZTV5xD4J1Z52JmqM7XnA
+ YDNs8dBR/AHO9lxm4+/i35FwlBNgqCPg5X8evH/k1NTUCUlJQ8bHx8WN1zSt8/eEHBf4DR2H7pz8nq7X
+ 1NYeKi0tO5S9d+/Bh3/3+6M2mWcGXuHfBgSCIyNYhNUOQDJwA3AXqhQskDlV/AGupxf98X0kkMS/I2HA
+ HM813IwNLjhvSeT55y1JHjtmTPLghEHjYmJiRpixj2AUnnv7LpyzhoaG4orKqoLDR47kf/jxJ/nLPv6k
+ 2WoLTeYYsN1zyR2/0Gcsv6dxuVyLUJ31lgAxVu9vEZ2JfzzwI5P3DVTxP5U5qNbCY3p6oi9879vXxi1I
+ nzd25IgRYxMGDRzTo0OgwYkOMYLlNDQ0FFdWVR85Wlx8eNOWrYf/77XX/TmBrzuOoFr3brfbEMG/sSWo
+ 6XK5rgB+iyr78qlBkAPpTPxBdcAzbZQwwSP+HZmKcgQmW7HZNy+9JGbRGaePHj1q5KiEhIRRA2JjR325
+ NXFHOt6WyvlB39DQ0VVyfhf/bO3t7U119fVFlZWVRYVFR4vWbthY+NY77zZYaqb15KGE34xJp0IQYtun
+ ksvlugn4A6olbKB8OnYl/qBmIpiS+0Bwin9HkoHTUGWElv4sPXDv3cMmT5wwImlI0oj4+LjhsTExw7uv
+ MvCgGsl3sDbYogYnUyx7+g9zu90t9Q0Nx2pqao+VlpUW5x04WPzYn544boGRTkBHlfF9AeTba4oQaNgq
+ vC6X6w7gCQyuCrCJ7sT/NOAyk/YNdvHvyBBUgucs+jFrwCjuu+uOpIkTxg9LGjJkaHxc3NDYmJikyMjI
+ viWb6qCHaJ4SdX91DjR1L9+HAEhzc3NFfUNDaU1tbUlpWVnJgYOHjv/hL08ZMtfDz6hGCf9OoMxmW4QA
+ xfY7b5fLdTfwR48tttvTD9qB/cDFXYh/NPBdfJiI2A0i/p0TDsxAOQPJ9pqiOGvRmeGLFp4xZPSokUMG
+ JyQkxg0YMDgmOmZwZFTk4LDQ0D40nepOTU/OP9A94gt0+Mr7nO7oeGzh/arDCroGmrsLG3qn9G3t7Y3N
+ Tc0VDY0NFbV1dRUVlZXlhUVHy9au31C2au26YM9iz0eJ/i4ko18wGUcIricS8DBqYqA/5QTUo/oNXJOV
+ ldXVfIIlwCIT9hbx7x3jUM7AdKCL83p7ufzii6KnpqUOGj506KBBgwYOHBAbOzA6Ojo+MiIyLiIiPC48
+ PHyApmlmj+42BF3X21pbW+taWlprm1uaaxsbG2vq6uurq6qqq4+VlFRl5+yt8rOpeVbQhOrTvws1nlcQ
+ LMERDgCcyAm4HxiLf1QHHEV56rdnZWUd6uI5s1CjkI1GxL/vxKBmO0zDIVGBvnDpNy6MnjA+OXZIYmJs
+ fFxcTExMTHR0VFR0ZGREdHh4RFR4eFhkWGhoZGhoWERoaEhESEhIeEhISJgWEhIWomlhmqaFaJoWCmia
+ pn3pyE3Xdbf6TW/Xdd3t1vU23e1uc6urtb3d3dLe3tbS1t7e3Nra1tza2tLU3NzS2NjU1NjQ0NBYU1vb
+ UFZeXn/wUH69H/fLt4N8YI/nCvQERsGBOMYBgBPVAd8DFuPsPgE7gHXA/2ZlZXU1DnQyKus/0eC9Rfx9
+ ZzSqgmAqMMhmW4TgogqVxZ+N6tUvCLbhKAcATvQJWAJ8HxiB8xIEPwDeAf6blZVV0sVzJqE6/hk298CD
+ iL/xpHmuVKDn7H1B6DstqEl8OZ5LEByB4xwAONExcBLwW13Xx2uaZngL2D7iRp3N/Rd4ASjIysrqqsnI
+ dCADGGqwDSL+5hKNcgJSPJcj3xuC36Cj8oNyUeIvRyOC43D0h9ytt946Rtf1W9vb2y+JiIiYaYMJzah/
+ oxeBNVlZWf9wuVwhWVlZ7k6eG4pK9luE8YmMIv7WEodyAqagjnIc/T4RHIOOatazDyX8gdqJUAgQHP/B
+ dvXVVyeWlZUtGTJkyPeio6MnRkdHT9J1vV3TNDOrBepRg4RygZeB7KysrAPdPD8VWACMN8EWEX97GYBy
+ AiZ5fpdjAqEjLSjR3+/5vc5ecwSh9zjeAQCYNGnSoP3791+1aNGiOXFxcQmJiYlpERERQ0JDQ+NCQ0Pj
+ MKbXajWqHGcjKkHnP0AJcCQrK6uz4ukwVBLZTJQ4mIGIv7MIR/1fT0QNdTJzkqTgXCpQNwgHUMIv9fqC
+ X+IXDoCHCahuevHTp0+P03VdnzRp0pTo6OjEqKioYaGhoXEhISERoaGhg3Rdb0c16AnVNC1U1/U2AE3T
+ wjylTq2er5tbWlpK3W53Q2NjY0FTU9O25ubmHcuXL98KVKIiAW0osY9FVSYMQw2hmYg6NzYLEX/nMwr1
+ czkeVVrotIRVwRjcqJK9QyjhL7LVGkEwCH9yAAahWuouoIPwJiUlhSYnJw+KjIyMiI+PT4iIiIgJCwuL
+ Cg8Pj/PUPmue4wK9vb29UdU1t7c0NzfXtLa2NldUVJQXFxfXhIaGavn5+U4ZFyri739EoZyAZFTzIRkl
+ 7N8UoxJ/8z1Xk53GCIIZ+JMDAKpJ0Jmou66v5ADExsZq9fX1+siRI8NjYmJCQ0NDQ6KiosLa2trcAG63
+ W6+qqmoGKC4ubgMICwujrc1Ro7RF/AODeNTP6xjPZUYraME4jqLG7B4BDgM19pojCObjbw4AqJrtc1Hh
+ +FCbbTEaEf/AJQbVF2I06uhgJOYeIQld04gS/CJUM55CpBOfEIT4owMAagb814FI/PfvcCoi/sHHMNRR
+ gfcahvqZFoyjGTiOCul7r2AZJSwI3eLP4jkfuAD//jt4EfEXvAz1XMOAJM9ldDvpQKUcKPVcx1FVPF11
+ 6xSEoMffxfN0VCQA/PPv4kaVFL2OiL/QNRHAEJQj4L0Go47B/GFwlpE0oCp0KlDvGe9VhqrJFwShl/ij
+ aJ7KfOAcVFKgP+UEtKA+uP6N+jAThP4Qg6qQGej5Pb7DFYdqZOQXo4RRJbd1qA56NR2uKlSfjirkrF4Q
+ DCMQHABQOQFnoj4EzewQaBS1qBDl+6i7GUEwk2iUIxDT4YpGlS56rwhU/kF4hysM5VSHonochKA+M7yf
+ G7rncnsub/+NNlRzHO/VjHJ4mzpcjSgx9151SL98QbCUQHEAQFUHnIYqvXJydvUxVKnRGqTUSBAEQbAJ
+ fwqZ90QZSlAbUOejETjPwckDdgJbkZ7hgiAIgo0EkgMAJ88JC1DZ02B/WZWOsukLYB3q7l9CnYIgCIKt
+ BJoDAOp8sRI1pKMddTaZ4HnMyohAG0r8twM7gPWo6ISj2g4KgiAIwYnTQuRGE4lKeJqB6r42CeUUmDnS
+ tQXlgJSjhL8UyfIXBEEQHEagOwCg/o46qtPaQNQI30ROlkm56d8Ut44jiJtQd/aFKMHPQU0SrPE8TxAE
+ QRAcRTA4AKcShxLlFFSy4DDP9yJRDoKbkyOAQzk56zuck+VNYajSplJUWP8oKru/CmnoIwiCIPgBwegA
+ dCQMJfoRqDyBWFRN9ACU+Gue5+iou3xvTXOt58/lqLt8zfN9QRAEQfALgt0B6EgI6u7f2wBF83zd7nlc
+ 52SrUW9UwHu8IAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAjm8/8BhgBSBTWLaWsAAAAA
+ SUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/ShandalarImageToolbox/FormPalette.Designer.cs b/ShandalarImageToolbox/GUI/FormPalette.Designer.cs
similarity index 89%
rename from ShandalarImageToolbox/FormPalette.Designer.cs
rename to ShandalarImageToolbox/GUI/FormPalette.Designer.cs
index e3e90f9..fe59836 100644
--- a/ShandalarImageToolbox/FormPalette.Designer.cs
+++ b/ShandalarImageToolbox/GUI/FormPalette.Designer.cs
@@ -1,4 +1,4 @@
-namespace ShandalarImageToolbox
+namespace ShandalarImageToolbox.GUI
{
partial class FormPalette
{
@@ -28,6 +28,7 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormPalette));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
@@ -48,6 +49,7 @@ private void InitializeComponent()
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(404, 269);
this.Controls.Add(this.pictureBox1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FormPalette";
this.Text = "Palette View";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
diff --git a/ShandalarImageToolbox/FormPalette.cs b/ShandalarImageToolbox/GUI/FormPalette.cs
similarity index 97%
rename from ShandalarImageToolbox/FormPalette.cs
rename to ShandalarImageToolbox/GUI/FormPalette.cs
index c4a0b74..ef62afe 100644
--- a/ShandalarImageToolbox/FormPalette.cs
+++ b/ShandalarImageToolbox/GUI/FormPalette.cs
@@ -8,7 +8,7 @@
using System.Threading.Tasks;
using System.Windows.Forms;
-namespace ShandalarImageToolbox
+namespace ShandalarImageToolbox.GUI
{
public partial class FormPalette : Form
{
diff --git a/ShandalarImageToolbox/GUI/FormPalette.resx b/ShandalarImageToolbox/GUI/FormPalette.resx
new file mode 100644
index 0000000..58a6413
--- /dev/null
+++ b/ShandalarImageToolbox/GUI/FormPalette.resx
@@ -0,0 +1,743 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ SUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/ShandalarImageToolbox/Program.cs b/ShandalarImageToolbox/Program.cs
index 7dd9b56..1961843 100644
--- a/ShandalarImageToolbox/Program.cs
+++ b/ShandalarImageToolbox/Program.cs
@@ -3,6 +3,7 @@
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
+using ShandalarImageToolbox.GUI;
namespace ShandalarImageToolbox
{
diff --git a/ShandalarImageToolbox/Properties/AssemblyInfo.cs b/ShandalarImageToolbox/Properties/AssemblyInfo.cs
index f882adc..936d0c2 100644
--- a/ShandalarImageToolbox/Properties/AssemblyInfo.cs
+++ b/ShandalarImageToolbox/Properties/AssemblyInfo.cs
@@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ShandalarImageToolbox")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.12.0.0")]
+[assembly: AssemblyFileVersion("1.12.0.0")]
diff --git a/ShandalarImageToolbox/Properties/Resources.Designer.cs b/ShandalarImageToolbox/Properties/Resources.Designer.cs
index 1ec96a5..f0fe765 100644
--- a/ShandalarImageToolbox/Properties/Resources.Designer.cs
+++ b/ShandalarImageToolbox/Properties/Resources.Designer.cs
@@ -59,5 +59,15 @@ internal class Resources {
resourceCulture = value;
}
}
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap logo {
+ get {
+ object obj = ResourceManager.GetObject("logo", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
}
}
diff --git a/ShandalarImageToolbox/Properties/Resources.resx b/ShandalarImageToolbox/Properties/Resources.resx
index af7dbeb..45dc3be 100644
--- a/ShandalarImageToolbox/Properties/Resources.resx
+++ b/ShandalarImageToolbox/Properties/Resources.resx
@@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
- : System.Serialization.Formatters.Binary.BinaryFormatter
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@@ -60,6 +60,7 @@
: and then encoded with base64 encoding.
-->
+
@@ -68,9 +69,10 @@
-
+
+
@@ -85,9 +87,10 @@
-
+
+
@@ -109,9 +112,13 @@
2.0
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/ShandalarImageToolbox/Resources/logo.png b/ShandalarImageToolbox/Resources/logo.png
new file mode 100644
index 0000000..85e1998
Binary files /dev/null and b/ShandalarImageToolbox/Resources/logo.png differ
diff --git a/ShandalarImageToolbox/ShandalarImageToolbox.csproj b/ShandalarImageToolbox/ShandalarImageToolbox.csproj
index c09775c..61a8843 100644
--- a/ShandalarImageToolbox/ShandalarImageToolbox.csproj
+++ b/ShandalarImageToolbox/ShandalarImageToolbox.csproj
@@ -48,7 +48,7 @@
4
- icon.ico
+ newicon.ico
@@ -83,21 +83,27 @@
-
+
+
+ Form
+
+
+ AboutForm.cs
+
-
+
Form
-
+
FormMain.cs
-
+
Form
-
+
FormPalette.cs
@@ -109,10 +115,13 @@
HexEditorNew.cs
-
+
+ AboutForm.cs
+
+
FormMain.cs
-
+
FormPalette.cs
@@ -140,6 +149,8 @@
+
+
@@ -148,5 +159,8 @@
false
+
+
+
\ No newline at end of file
diff --git a/ShandalarImageToolbox/GeneralUtilityFunctions.cs b/ShandalarImageToolbox/Utility/GeneralUtilityFunctions.cs
similarity index 100%
rename from ShandalarImageToolbox/GeneralUtilityFunctions.cs
rename to ShandalarImageToolbox/Utility/GeneralUtilityFunctions.cs
diff --git a/ShandalarImageToolbox/newicon.ico b/ShandalarImageToolbox/newicon.ico
new file mode 100644
index 0000000..f0ddaac
Binary files /dev/null and b/ShandalarImageToolbox/newicon.ico differ