Week 2 ISSC

profiledeweese3
fpmv_beta_3_0.zip

FpMV/bin/dwsq.exe

FpMV/bin/FpMV.exe

FpMV/bin/mindtct.exe

FpMV/bin/nfiq.exe

FpMV/README.txt

/******************************************************************************* License: This software and/or related materials was developed at the National Institute of Standards and Technology (NIST) by employees of the Federal Government in the course of their official duties. Pursuant to title 17 Section 105 of the United States Code, this software is not subject to copyright protection and is in the public domain. This software and/or related materials have been determined to be not subject to the EAR (see Part 734.3 of the EAR for exact details) because it is a publicly available technology and software, and is freely distributed to any interested party with no licensing requirements. Therefore, it is permissible to distribute this software as a free download from the internet. Disclaimer: This software and/or related materials was developed to promote biometric standards and biometric technology testing for the Federal Government in accordance with the USA PATRIOT Act and the Enhanced Border Security and Visa Entry Reform Act. Specific hardware and software products identified in this software were used in order to perform the software development. In no case does such identification imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the products and equipment identified are necessarily the best available for the purpose. This software and/or related materials are provided "AS-IS" without warranty of any kind including NO WARRANTY OF PERFORMANCE, MERCHANTABILITY, NO WARRANTY OF NON-INFRINGEMENT OF ANY 3RD PARTY INTELLECTUAL PROPERTY or FITNESS FOR A PARTICULAR PURPOSE or for any purpose whatsoever, for the licensed product, however used. In no event shall NIST be liable for any damages and/or costs, including but not limited to incidental or consequential damages of any kind, including economic damage or injury to property and lost profits, regardless of whether NIST shall be advised, have reason to know, or in fact shall know of the possibility. By using this software, you agree to bear all risk relating to quality, use and performance of the software and/or related materials. You agree to hold the Government harmless from any claim arising from your use of the software. *******************************************************************************/ To run the FpMV application, simply click FpMV.exe under the bin directory.

FpMV/src/FpMV/FPMD.suo

FpMV/src/FpMV/FpMV.sln

Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FpMV", "FpMV\FpMV.csproj", "{621F6169-E45D-4E4F-8768-01B264C0688A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {621F6169-E45D-4E4F-8768-01B264C0688A}.Debug|x86.ActiveCfg = Release|x86 {621F6169-E45D-4E4F-8768-01B264C0688A}.Debug|x86.Build.0 = Release|x86 {621F6169-E45D-4E4F-8768-01B264C0688A}.Release|x86.ActiveCfg = Release|x86 {621F6169-E45D-4E4F-8768-01B264C0688A}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal

FpMV/src/FpMV/FpMV.suo

FpMV/src/FpMV/FpMV.v12.suo

FpMV/src/FpMV/FpMV/bin/Debug/mindtct.exe

FpMV/src/FpMV/FpMV/bin/Release/dwsq.exe

FpMV/src/FpMV/FpMV/bin/Release/FpMV.vshost.application

GiuzXsIwiwe6d89gFbbc9M93S8U=

FpMV/src/FpMV/FpMV/bin/Release/FpMV.vshost.exe

FpMV/src/FpMV/FpMV/bin/Release/FpMV.vshost.exe.manifest

MAK+ffJJpyBfBPPLCuPryQnNxzE= sCEgONVk4UPt6U/N4dLqvCXZEPU=

FpMV/src/FpMV/FpMV/bin/Release/mindtct.exe

FpMV/src/FpMV/FpMV/bin/Release/nfiq.exe

FpMV/src/FpMV/FpMV/ClassDiagram1.cd

RaEbYgfYFSVAd7WKfOGASDJTdD44ITSYseRgEqhIjqA= Form1.cs

FpMV/src/FpMV/FpMV/Form1.cs

/******************************************************************************* License: This software and/or related materials was developed at the National Institute of Standards and Technology (NIST) by employees of the Federal Government in the course of their official duties. Pursuant to title 17 Section 105 of the United States Code, this software is not subject to copyright protection and is in the public domain. This software and/or related materials have been determined to be not subject to the EAR (see Part 734.3 of the EAR for exact details) because it is a publicly available technology and software, and is freely distributed to any interested party with no licensing requirements. Therefore, it is permissible to distribute this software as a free download from the internet. Disclaimer: This software and/or related materials was developed to promote biometric standards and biometric technology testing for the Federal Government in accordance with the USA PATRIOT Act and the Enhanced Border Security and Visa Entry Reform Act. Specific hardware and software products identified in this software were used in order to perform the software development. In no case does such identification imply recommendation or endorsement by the National Institute of Standards and Technology, nor does it imply that the products and equipment identified are necessarily the best available for the purpose. This software and/or related materials are provided "AS-IS" without warranty of any kind including NO WARRANTY OF PERFORMANCE, MERCHANTABILITY, NO WARRANTY OF NON-INFRINGEMENT OF ANY 3RD PARTY INTELLECTUAL PROPERTY or FITNESS FOR A PARTICULAR PURPOSE or for any purpose whatsoever, for the licensed product, however used. In no event shall NIST be liable for any damages and/or costs, including but not limited to incidental or consequential damages of any kind, including economic damage or injury to property and lost profits, regardless of whether NIST shall be advised, have reason to know, or in fact shall know of the possibility. By using this software, you agree to bear all risk relating to quality, use and performance of the software and/or related materials. You agree to hold the Government harmless from any claim arising from your use of the software. *******************************************************************************/ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows; using System.Windows.Forms; using System.Windows.Media.Imaging; using System.Threading; namespace FpMV { public partial class Form1 : Form { string verion = "FpMV (Fingerprint Minutiae Viewer) - BETA V3.0"; string appPath = AppDomain.CurrentDomain.BaseDirectory; string FpMVPath; bool isFirstTimeStatus = true; //bool isMFirstTimeStatus = true; bool isImageStatus = false; bool veiwStatus = false; bool isRawWsqStatus = true; bool isEightBitStatus = true; bool workerRunningStatus = false; string chosenFile = ""; string previousChosenFile = ""; string imageFile = ""; string orgImageFile = ""; string fullFileName =""; string fileNamePrefix = ""; string fileExt = ""; string[] tempStr; string argv1 = ""; string argv2 = ""; string argv3 = ""; string arguments = ""; int width = 0; int height = 0; int previousWidth = 0; int previousHeight = 0; int totalMinutiae = 0; int displayMinutiae = 0; string curline = ""; string lines = ""; static int maxArrLenght = 10000; string[] temparrXY_IAFIS = new string[2]; string[] arrXY_IAFIS = new string[maxArrLenght]; int[] arrX_IAFIS = new int[maxArrLenght]; int[] arrY_IAFIS = new int[maxArrLenght]; double[] arrDIR_IAFIS = new double[maxArrLenght]; double[] arrREL_IAFIS = new double[maxArrLenght]; string[] arrTYP_IAFIS = new string[maxArrLenght]; double relScalar = 100; float contrastMax = 4.0f; float contrastMin = -1.0f; float contrastValue = 1.0f; float brightnessValue = 0.0f; float brightnessMax = 1.0f; float brightnessMin = -1.0f; int count; int index = 0; int minWidth = 8; int minHeight = 8; int maxWidth = 4000; int maxHeight = 4000; int imgWidth; int imgHeight; ColorMatrix colormatrix; ImageAttributes imgAttribute; Pen opaquePenRed; Pen opaquePenBlue; Pen opaquePenGreen; Pen opaqueShadowPenRed; Pen opaqueShadowPenBlue; Pen opaqueShadowPenGreen; bool drag; float ScaleFactor = 1; float ScaleRange = 2.0F; System.Drawing.Point basePoint; Image image = null; int x, y; Form2 SetWidthHeightForm; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // Set Title this.Text = verion; // Enable application exit handler Application.ApplicationExit += new EventHandler(this.OnApplicationExit); // Enable drag and drop this.AllowDrop = true; // Set FormBorderStyle to not sizeable this.FormBorderStyle = FormBorderStyle.Fixed3D; // Add event handlers for PictureBox1 this.pictureBox1.Resize += new EventHandler(pictureBox1_Resize); this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(pictureBox1_Paint); // Add event handlers for the drag & drop functionality this.DragEnter += new System.Windows.Forms.DragEventHandler(Form1_DragEnter); this.DragDrop += new System.Windows.Forms.DragEventHandler(Form1_DragDrop); // Add event handler for the mouse wheel functionality this.pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel); this.pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove); this.pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown); this.pictureBox1.MouseUp += new MouseEventHandler(pictureBox1_MouseUp); this.pictureBox1.MouseHover += new EventHandler(pictureBox1_MouseHover); // Create directory using timestap as filename Stopwatch Stopwatch = Stopwatch.StartNew(); String timeStamp = Stopwatch.GetTimestamp().ToString(); FpMVPath = GetTempDir() + "FpMV\\" + timeStamp + "\\"; // Create FpMVPath if (!Directory.Exists(FpMVPath)) { System.IO.Directory.CreateDirectory(FpMVPath); if (!Directory.Exists(FpMVPath)) { MessageBox.Show("Can't create directory: " + FpMVPath, "Error Creating Directory!", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } } } private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) { if (isImageStatus == true) { if (e.Delta > 0) { this.ZoomIn(); } if (e.Delta < 0) { this.ZoomOut(); } base.OnMouseWheel(e); } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (isImageStatus == true) { if (e.Button == MouseButtons.Left) drag = false; base.OnMouseUp(e); } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (isImageStatus == true) { switch (e.Button) { case MouseButtons.Left: this.drag = true; x = e.X; y = e.Y; break; default: break; } base.OnMouseDown(e); } } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (drag) { LimitBasePoint(basePoint.X + e.X - x, basePoint.Y + e.Y - y); x = e.X; y = e.Y; this.pictureBox1.Invalidate(); } base.OnMouseMove(e); } private void ZoomExtents() { if (isImageStatus != false) this.ScaleFactor = (float)Math.Min((double)this.pictureBox1.Width / imgWidth, (double)this.pictureBox1.Height / imgHeight); } private void ZoomIn() { if (ScaleFactor < 10) { int x = (int)((this.pictureBox1.Width / ScaleRange - basePoint.X) / ScaleFactor); int y = (int)((this.pictureBox1.Height / ScaleRange - basePoint.Y) / ScaleFactor); ScaleFactor *= ScaleRange; LimitBasePoint((int)(this.pictureBox1.Width / ScaleRange - x * ScaleFactor), (int)(this.pictureBox1.Height / ScaleRange - y * ScaleFactor)); this.pictureBox1.Invalidate(); } } private void ZoomOut() { if (ScaleFactor > .1) { int x = (int)((this.pictureBox1.Width / ScaleRange - basePoint.X) / ScaleFactor); int y = (int)((this.pictureBox1.Height / ScaleRange - basePoint.Y) / ScaleFactor); ScaleFactor /= ScaleRange; LimitBasePoint((int)(this.pictureBox1.Width / ScaleRange - x * ScaleFactor), (int)(this.pictureBox1.Height / ScaleRange - y * ScaleFactor)); this.pictureBox1.Invalidate(); } } private void LimitBasePoint(int x, int y) { if (isImageStatus == false) return; int width = this.pictureBox1.Width - (int)(imgWidth * ScaleFactor); int height = this.pictureBox1.Height - (int)(imgHeight * ScaleFactor); if (width < 0) { x = Math.Max(Math.Min(x, 0), width); } else { x = (int)(width / 2); } if (height < 0) { y = Math.Max(Math.Min(y, 0), height); } else { y = (int)(height / 2); } basePoint = new System.Drawing.Point(x, y); } private void pictureBox1_MouseHover(object sender, EventArgs e) { pictureBox1.Focus(); } private void pictureBox1_Resize(object sender, EventArgs e) { int x = (int)((this.pictureBox1.Width / ScaleRange - basePoint.X) / ScaleFactor); int y = (int)((this.pictureBox1.Height / ScaleRange - basePoint.Y) / ScaleFactor); LimitBasePoint((int)(this.pictureBox1.Width / ScaleRange - x * ScaleFactor), (int)(this.pictureBox1.Height / ScaleRange - y * ScaleFactor)); if (this.WindowState == FormWindowState.Maximized) { //MessageBox.Show("MAX ", "MAX!", MessageBoxButtons.OK, MessageBoxIcon.Error); this.pictureBox1.Invalidate(); } if (this.WindowState == FormWindowState.Minimized) { //MessageBox.Show("MIN", "MIN", MessageBoxButtons.OK, MessageBoxIcon.Error); this.pictureBox1.Invalidate(); } if (this.WindowState == FormWindowState.Normal) { //MessageBox.Show("Norm ", "Norm!", MessageBoxButtons.OK, MessageBoxIcon.Error); this.pictureBox1.Invalidate(); } } private void openToolStripMenuItem1_Click(object sender, EventArgs e) { fileNamePrefix = ""; //isMFirstTimeStatus = true; openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "fingerImages"; openFileDialog1.Title = "Open a Image File (*.bmp, *.gif, *.jpg, *.png, *.raw, *.tif and *.wsq)"; openFileDialog1.FileName = ""; openFileDialog1.Filter = "(*.bmp, *.gif, *.jpg, *.png, *.raw, *tif, *.wsq)|*.bmp;*.gif;*.jpg;*.png;*.raw;*.tif;*.wsq"; // Save previous image filename if (isImageStatus == true) { previousChosenFile = chosenFile; } if (openFileDialog1.ShowDialog() != DialogResult.Cancel) { // Set image file chosenFile = openFileDialog1.FileName; imageFile = chosenFile; // Run MINDTCT - IAFIS executeMindtctIAFIS(); if (veiwStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } else { if (isEightBitStatus == false && isRawWsqStatus == false) { isRawWsqStatus = true; masterReset(); this.pictureBox1.Invalidate(); } else if (isEightBitStatus == true && isRawWsqStatus == false) { if (isImageStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } } else if (isEightBitStatus == true && isRawWsqStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } else if (isEightBitStatus == false && isRawWsqStatus == true) { masterReset(); this.pictureBox1.Invalidate(); } } } else { textBox1.Text = "No Image File Selected!"; } } // This event occurs when the user drags over the form with // the mouse during a drag drop operation private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { // Check if the Dataformat of the data can be accepted // (we only accept file drops from Explorer, etc.) if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)) e.Effect = System.Windows.Forms.DragDropEffects.Copy; // Okay else e.Effect = System.Windows.Forms.DragDropEffects.None; // Unknown data, ignore it } // Occurs when the user releases the mouse over the drop target private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { int x = this.PointToClient(new System.Drawing.Point(e.X, e.Y)).X; int y = this.PointToClient(new System.Drawing.Point(e.X, e.Y)).Y; if (x >= pictureBox1.Location.X && x <= pictureBox1.Location.X + pictureBox1.Width && y >= pictureBox1.Location.Y && y <= pictureBox1.Location.Y + pictureBox1.Height) { //isMFirstTimeStatus = true; // Extract the data from the DataObject-Container into a string list string[] FileList = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop, false); string chosenFileTemp = FileList[0]; string ext = Path.GetExtension(chosenFileTemp); if (checkImageType(ext)) { // Set input file if (isImageStatus == true) { previousChosenFile = chosenFile; chosenFile = FileList[0]; imageFile = FileList[0]; } else { chosenFile = FileList[0]; imageFile = FileList[0]; } // Run MINDTCT - IAFIS executeMindtctIAFIS(); if (veiwStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } else { if (isEightBitStatus == false && isRawWsqStatus == false) { isRawWsqStatus = true; masterReset(); this.pictureBox1.Invalidate(); } else if (isEightBitStatus == true && isRawWsqStatus == false) { if (isImageStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } } else if (isEightBitStatus == true && isRawWsqStatus == true) { populate_IAFIS(imageFile, true); printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } else if (isEightBitStatus == false && isRawWsqStatus == true) { masterReset(); this.pictureBox1.Invalidate(); } } } else { MessageBox.Show("Invalid Image Type! \r\nThis application only support: *.bmp, *.gif, *.jpg, *.png, *.raw, *.tif and *.wsq", "Error Image Type!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void getFileNameAndExt() { fullFileName = Path.GetFileName(imageFile); tempStr = fullFileName.Split('.'); fileNamePrefix = tempStr[0]; fileExt = tempStr[1]; } private void executeMindtctIAFIS() { // Initialize text box nfiqScoreTextBox.Text = ""; // Extract file information getFileNameAndExt(); // Initialize filename string rawFileName = fileNamePrefix + ".raw"; string pngFileName = fileNamePrefix + ".png"; if (fileExt == "wsq") { // Covert WSQ to PNG convertWsq2Png(fileNamePrefix); if (veiwStatus == false) { getFileNameAndExt(); if (fileExt == "wsq") { convertWsq2Png(fileNamePrefix); } else if (fileExt == "raw") { rawFileName = fileNamePrefix + ".raw"; pngFileName = fileNamePrefix + ".png"; // Copy source image file to FpMVPath File.Copy(imageFile, FpMVPath + rawFileName, true); // Covert RAW to PNG convertRaw2Png(rawFileName, pngFileName, "raw"); } } } else if (fileExt == "raw") { // Get the Raw dimension from Form2 getRawImageDimension(imageFile, fileNamePrefix); // Set the width and height width = SetWidthHeightForm.width; height = SetWidthHeightForm.height; //dispose the Form2 SetWidthHeightForm.Dispose(); // Case takecare if form return W and H both 0 if (width == 0 || height == 0) { chosenFile = previousChosenFile; imageFile = chosenFile; getFileNameAndExt(); if (fileExt == "raw") { rawFileName = fileNamePrefix + ".raw"; pngFileName = fileNamePrefix + ".png"; width = previousWidth; height = previousHeight; // Copy source image file to FpMVPath File.Copy(imageFile, FpMVPath + rawFileName, true); // Covert RAW to PNG convertRaw2Png(rawFileName, pngFileName, "raw"); } veiwStatus = false; isRawWsqStatus = false; } else { // Copy source image file to FpMVPath File.Copy(imageFile, FpMVPath + rawFileName, true); // Covert RAW to PNG convertRaw2Png(rawFileName, pngFileName, "raw"); } previousWidth = width; previousHeight = height; } else { // Convert input image to PNG convertImage2Png(); } if (veiwStatus == true) { callMindtct(imageFile, fileExt, true); } } // Extract Minutiae private void callMindtct(string fileIn, string fExt, bool resetTrackbar) { string str1 = Path.GetFileName(fileIn); string[] strArr1 = str1.Split('.'); string filePrefix = strArr1[0]; // Prep and call mindtct - IAFIS ProcessStartInfo startInfo_IAFIS = new ProcessStartInfo(); startInfo_IAFIS.CreateNoWindow = true; startInfo_IAFIS.UseShellExecute = false; startInfo_IAFIS.FileName = appPath + "\\mindtct.exe"; startInfo_IAFIS.WindowStyle = ProcessWindowStyle.Hidden; if (fExt == "jpg" || fExt == "png" || fExt == "wsq") { argv1 = "\"" + fileIn + "\""; } else if (fExt == "gif" || fExt == "tif" || fExt == "raw" || fExt == "bmp") { argv1 = "\"" + fileIn + "\""; } argv2 = "\"" + FpMVPath + filePrefix + "_iafis" + "\""; arguments = argv1 + " " + argv2; startInfo_IAFIS.Arguments = arguments; try { // Start the process with the info we specified. using (Process exeProcess = Process.Start(startInfo_IAFIS)) { exeProcess.WaitForExit(); veiwStatus = true; if (resetTrackbar == true) { resetAllTrackBars(); } } } catch { veiwStatus = false; // Log error. MessageBox.Show("Failed to locate MINDTCT executable!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Get the Raw Image Dimension private void getRawImageDimension(string chosenFile, string fileNamePrefix) { SetWidthHeightForm = new Form2(chosenFile, fileNamePrefix); SetWidthHeightForm.Activate(); SetWidthHeightForm.ShowDialog(); } // Convert input WSQ to PNG private void convertWsq2Png(string fileNamePrefix) { // Copy source image file to FpMVPath File.Copy(chosenFile, FpMVPath + fileNamePrefix + ".wsq", true); // Prep and call dwsq ProcessStartInfo startInfo_WSQ = new ProcessStartInfo(); startInfo_WSQ.CreateNoWindow = true; startInfo_WSQ.UseShellExecute = false; startInfo_WSQ.FileName = appPath + "\\dwsq.exe"; startInfo_WSQ.WindowStyle = ProcessWindowStyle.Hidden; argv1 = "raw"; argv2 = "\"" + FpMVPath + fileNamePrefix + ".wsq" + "\""; argv3 = "-r"; arguments = argv1 + " " + argv2 + " " + argv3; startInfo_WSQ.Arguments = arguments; string rawFileName = fileNamePrefix + ".raw"; string ncmFileName = fileNamePrefix + ".ncm"; string pngFileName = fileNamePrefix + ".png"; veiwStatus = true; try { // Start the process with the info we specified. using (Process exeProcess = Process.Start(startInfo_WSQ)) { exeProcess.WaitForExit(); if (!(File.Exists(FpMVPath + ncmFileName))) { veiwStatus = false; isRawWsqStatus = false; chosenFile = previousChosenFile; imageFile = chosenFile; getFileNameAndExt(); MessageBox.Show("Failed to decode WSQ file!\nPotentially bad or corrupted WSQ file!", "Error Decoding WSQ!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { veiwStatus = true; isRawWsqStatus = true; } } } catch { veiwStatus = false; isRawWsqStatus = false; chosenFile = previousChosenFile; imageFile = chosenFile; getFileNameAndExt(); // Log error. MessageBox.Show("Failed to locate the DWSQ executable!", "Error Executing DWSQ!", MessageBoxButtons.OK, MessageBoxIcon.Error); } // Convert Raw to Png if (veiwStatus == true) { readWidthHeightFromNCM(ncmFileName); convertRaw2Png(rawFileName, pngFileName, "wsq"); } } // Read Width and Height from ncm file private void readWidthHeightFromNCM(string ncmFileName) { // Read the file and display it line by line. string line; System.IO.StreamReader file = new System.IO.StreamReader(FpMVPath + ncmFileName); while ((line = file.ReadLine()) != null) { if (line.Contains("PIX_WIDTH")) { string[] tempStr = line.Split(' '); width = Convert.ToInt32(tempStr[1]); } if (line.Contains("PIX_HEIGHT")) { string[] tempStr = line.Split(' '); height = Convert.ToInt32(tempStr[1]); } } file.Close(); } // Convert from RAW to PNG private void convertRaw2Png(string rawFileName, string pngFileName, string format) { int stride = width; byte[] byteArray = new byte[height * stride]; try { using (FileStream fsSource = new FileStream(FpMVPath + rawFileName, FileMode.Open, FileAccess.Read)) { // Read the source file into a byte array. int numBytesToRead = (int)fsSource.Length; int numBytesRead = 0; while (numBytesToRead > 0) { // Read may return anything from 0 to numBytesToRead. int n = fsSource.Read(byteArray, numBytesRead, numBytesToRead); // Break when the end of the file is reached. if (n == 0) break; numBytesRead += n; numBytesToRead -= n; } numBytesToRead = byteArray.Length; fsSource.Close(); } // Define the image palette BitmapPalette myPalette = BitmapPalettes.Gray256; // Creates a new empty image with the pre-defined palette BitmapSource image = BitmapSource.Create( width, height, 500, 500, System.Windows.Media.PixelFormats.Indexed8, myPalette, byteArray, stride); FileStream stream = new FileStream(FpMVPath + pngFileName, FileMode.Create); PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Interlace = PngInterlaceOption.On; encoder.Frames.Add(BitmapFrame.Create(image)); encoder.Save(stream); stream.Dispose(); imageFile = FpMVPath + pngFileName; fileExt = format; convertImage2Png(); } catch (FileNotFoundException ioEx) { Console.WriteLine(ioEx.Message); MessageBox.Show("Failed to read file", "Error Read!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Convert input image to PNG private void convertImage2Png() { try { Image image2 = System.Drawing.Image.FromFile(imageFile); if (image2.PixelFormat.ToString() == "Format8bppIndexed" || image2.PixelFormat.ToString() == "Format32bppArgb") { string fname = ""; isEightBitStatus = true; if (Path.GetExtension(imageFile) == ".png") { if (!imageFile.Contains(FpMVPath)) { fname = FpMVPath + fileNamePrefix + ".png"; File.Copy(imageFile, fname, true); } } else { fname = FpMVPath + fileNamePrefix + "." + fileExt; File.Copy(imageFile, fname, true); fname = FpMVPath + fileNamePrefix + ".png"; image2.Save(fname, ImageFormat.Png); imageFile = fname; } imgWidth = image2.Width; imgHeight = image2.Height; if (imgWidth >= 8 && imgHeight >= 8 && imgWidth <= 4000 && imgHeight <= 4000) { isImageStatus = true; veiwStatus = true; this.FormBorderStyle = FormBorderStyle.Sizable; } if (imgWidth < minWidth || imgHeight < minHeight) { MessageBox.Show("Image Width or Height can't be less than 8 pixels!\nNo minuitae will be detected!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); isImageStatus = false; veiwStatus = false; this.FormBorderStyle = FormBorderStyle.Sizable; } if (imgWidth > maxWidth || imgHeight > maxHeight) { MessageBox.Show("Image Width or Height can't be larger than 4000 pixels!\nNo minuitae will be detected!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); isImageStatus = false; veiwStatus = false; this.FormBorderStyle = FormBorderStyle.Sizable; } } else { isEightBitStatus = false; imageFile = chosenFile; isImageStatus = true; veiwStatus = false; this.FormBorderStyle = FormBorderStyle.Sizable; imgWidth = image2.Width; imgHeight = image2.Height; totalMinutiae = 0; resetAllTrackBars(); masterReset(); printImageAndToolInfo(); this.ZoomExtents(); this.LimitBasePoint(basePoint.X, basePoint.Y); this.pictureBox1.Invalidate(); MessageBox.Show("Image is not 8-bit grey scale!", "Image Depth Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } image2.Dispose(); } catch { veiwStatus = false; isRawWsqStatus = false; chosenFile = previousChosenFile; imageFile = chosenFile; MessageBox.Show("Failed to decode file!\nPotential bad file format!", "Decoding Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Populate the minutiea from min file private void populate_IAFIS(string fileIn, bool resetZoom) { // Extract file information string str1 = Path.GetFileName(fileIn); string[] strArr1 = str1.Split('.'); string filePrefix = strArr1[0]; // Set the min file name string path = FpMVPath + filePrefix + "_iafis" + ".min"; StreamReader file = new StreamReader(path); // Initializing resetAllArrays(); // Retieve image infomation curline = file.ReadLine(); tempStr = curline.Split(' '); width = Convert.ToInt32(tempStr[2]); height = Convert.ToInt32(tempStr[3]); file.ReadLine(); curline = file.ReadLine(); tempStr = curline.Split(' '); totalMinutiae = Convert.ToInt32(tempStr[0]); file.ReadLine(); // Print image infomation printImageAndToolInfo(); // Get all minutiae to arrays while (((curline = file.ReadLine()) != null) && (count < maxArrLenght)) { //lines = lines + curline + "\r\n"; Array.Clear(tempStr, 0, tempStr.Length); tempStr = curline.Split(':'); arrXY_IAFIS[count] = tempStr[1].Trim(); temparrXY_IAFIS = arrXY_IAFIS[count].Split(','); arrX_IAFIS[count] = Convert.ToInt32(temparrXY_IAFIS[0]); arrY_IAFIS[count] = Convert.ToInt32(temparrXY_IAFIS[1]); arrDIR_IAFIS[count] = Convert.ToDouble(tempStr[2]); arrREL_IAFIS[count] = Convert.ToDouble(tempStr[3]); arrTYP_IAFIS[count] = tempStr[4].Trim(); count++; } file.Close(); if (resetZoom == true) { this.ZoomExtents(); this.LimitBasePoint(basePoint.X, basePoint.Y); } this.FormBorderStyle = FormBorderStyle.Sizable; } // Print the Minintiae information private void printImageMinutiaeInfo() { // Print XYTQ in Textbox int ilen; lines = ""; for (int i = 0; i < count; i++) { string str0 = i.ToString(); ilen = str0.Length; lines = lines + str0 + addSpaces(ilen, 5); string str1 = "-> (" + arrX_IAFIS[i] + "," + arrY_IAFIS[i] + ")"; ilen = str1.Length; lines = lines + str1 + addSpaces(ilen, 16); string str2 = "Direction: " + arrDIR_IAFIS[i]; ilen = str2.Length; lines = lines + str2 + addSpaces(ilen, 16); string str3 = "Quality: " + arrREL_IAFIS[i]; ilen = str3.Length; lines = lines + str3 + addSpaces(ilen, 17); string str4 = "Type: " + arrTYP_IAFIS[i]; lines = lines + str4 + "\r\n"; //lines = lines + i + " -> (" + arrX_IAFIS[i] + "," + arrY_IAFIS[i] + ") Direction: " + // arrDIR_IAFIS[i] + " Quality: " + arrREL_IAFIS[i] + " Type: " + arrTYP_IAFIS[i] + "\r\n"; } // Print all minutiae information to textbox textBox6.Text = fileNamePrefix + "." + fileExt; textBox1.Text = lines; } private string addSpaces(int ilen, int dlen) { string c_spaces = ""; int index = dlen - ilen; for (int i = 0; i < index; i++) { c_spaces = c_spaces + " "; } return c_spaces; } private void calDisplayMinutiae() { displayMinutiae = 0; for (int i = 0; i < count; i++) { if ((arrREL_IAFIS[i] * relScalar) > trackBar1.Value) { displayMinutiae++; } } } // Paint the image and overlay the minutiae points private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { double x1; double y1; double x2; double y2; double angle = 0; int radius = 4; int pixels = 14; int offset = 1; displayMinutiae = 0; Graphics g = e.Graphics; if (isFirstTimeStatus == false && isImageStatus == true) { image = Image.FromFile(imageFile); // Display image as pixel (no smoothing apply) g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // Set opaque image colormatrix = new ColorMatrix(); colormatrix.Matrix33 = (float)fpOpacityTrackBar.Value / 100; // Set image contrast calContrastValue(); colormatrix.Matrix00 = contrastValue; colormatrix.Matrix11 = contrastValue; colormatrix.Matrix22 = contrastValue; // Set image brightness5 calBrightnesstValue(); colormatrix.Matrix40 = brightnessValue; colormatrix.Matrix41 = brightnessValue; colormatrix.Matrix42 = brightnessValue; // Set image attribute imgAttribute = new ImageAttributes(); imgAttribute.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); // Create opaque Pen int opaquePenTranValue = (int)(MinOpacityTrackBar.Value * (255 / 100)); opaquePenRed = new Pen(Color.FromArgb(opaquePenTranValue, 255, 0, 0), 2); opaquePenGreen = new Pen(Color.FromArgb(opaquePenTranValue, 0, 255, 0), 2); opaquePenBlue = new Pen(Color.FromArgb(opaquePenTranValue, 0, 0, 255), 2); opaqueShadowPenRed = new Pen(Color.FromArgb(opaquePenTranValue/2, 100, 0, 0), 2); opaqueShadowPenGreen = new Pen(Color.FromArgb(opaquePenTranValue / 2, 0, 100, 0), 2); opaqueShadowPenBlue = new Pen(Color.FromArgb(opaquePenTranValue / 2, 0, 0, 100), 2); // Draw Image Rectangle dst = new Rectangle(basePoint.X, basePoint.Y, (int)(imgWidth * ScaleFactor), (int)(imgHeight * ScaleFactor)); g.DrawImage(image, dst, 0, 0, imgWidth, imgHeight, GraphicsUnit.Pixel, imgAttribute); // TransForm and scale minutieas on image g.TranslateTransform(basePoint.X, basePoint.Y); g.ScaleTransform(ScaleFactor, ScaleFactor); if (veiwStatus == true || isImageStatus == true) { for (int i = 0; i < count; i++) { // Center of minutiea x1 = arrX_IAFIS[i]; y1 = arrY_IAFIS[i]; // IAFIS or M1 if (radioButton_IAFIS.Checked) { angle = arrDIR_IAFIS[i] * 11.25 - 90; } else if (radioButton_M1.Checked) { angle = (arrDIR_IAFIS[i] * 11.25 - 270); } // Calculate line and direction x2 = Math.Round(x1 + (Math.Cos(angle / 180 * Math.PI) * pixels), 0, MidpointRounding.ToEven); y2 = Math.Round(y1 + (Math.Sin(angle / 180 * Math.PI) * pixels), 0, MidpointRounding.ToEven); if (arrTYP_IAFIS[i].Equals("RIG")) { if ((arrREL_IAFIS[i] * relScalar) > trackBar1.Value) { g.DrawEllipse(opaquePenRed, new Rectangle((int)(x1 - radius), (int)(y1 - radius), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaquePenRed, new System.Drawing.Point((int)x1, (int)y1), new System.Drawing.Point((int)x2, (int)y2)); if (opaquePenTranValue < 200) { g.DrawEllipse(opaqueShadowPenRed, new Rectangle((int)(x1 - radius + offset), (int)(y1 - radius + 1), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaqueShadowPenRed, new System.Drawing.Point((int)x1 + offset, (int)y1 + offset), new System.Drawing.Point((int)x2 + offset, (int)y2 + offset)); } displayMinutiae++; } } else if (arrTYP_IAFIS[i].Equals("BIF")) { if ((arrREL_IAFIS[i] * relScalar) > trackBar1.Value) { g.DrawRectangle(opaquePenGreen, new Rectangle((int)(x1 - radius), (int)(y1 - radius), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaquePenGreen, new System.Drawing.Point((int)x1, (int)y1), new System.Drawing.Point((int)x2, (int)y2)); if (opaquePenTranValue < 200) { g.DrawRectangle(opaqueShadowPenGreen, new Rectangle((int)(x1 - radius + offset), (int)(y1 - radius + offset), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaqueShadowPenGreen, new System.Drawing.Point((int)x1 + offset, (int)y1 + offset), new System.Drawing.Point((int)x2 + offset, (int)y2 + offset)); } displayMinutiae++; } } else { if ((arrREL_IAFIS[i] * relScalar) > trackBar1.Value) { g.DrawEllipse(opaquePenBlue, new Rectangle((int)(x1 - radius), (int)(y1 - radius), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaquePenBlue, new System.Drawing.Point((int)x1, (int)y1), new System.Drawing.Point((int)x2, (int)y2)); if (opaquePenTranValue < 200) { g.DrawEllipse(opaqueShadowPenBlue, new Rectangle((int)(x1 - radius + offset), (int)(y1 - radius + offset), (int)(radius * 2), (int)(radius * 2))); g.DrawLine(opaqueShadowPenBlue, new System.Drawing.Point((int)x1 + offset, (int)y1 + offset), new System.Drawing.Point((int)x2 + offset, (int)y2 + offset)); } displayMinutiae++; } } } } displayedMinTextBox.Text = Convert.ToString(displayMinutiae); imgObjDispose(); } else { isFirstTimeStatus = false; } } // Calculate NFIQ Score Button private void button2_Click(object sender, EventArgs e) { if (!(File.Exists(appPath + "\\nfiq.exe"))) { MessageBox.Show("Failed to locate NFIQ executable!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (veiwStatus == true) { bool status = false; string outFile = FpMVPath + "xcnfiqtemp_" + index + ".png"; // Call function to create grayscale image CreateGraysacleToFile(outFile); // Create Compiler Object Process compiler = new Process(); compiler.StartInfo.FileName = appPath + "\\nfiq.exe"; status = true; compiler.StartInfo.Arguments = outFile; if (status == true) { compiler.StartInfo.CreateNoWindow = true; compiler.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; compiler.StartInfo.UseShellExecute = false; compiler.StartInfo.RedirectStandardOutput = true; compiler.Start(); nfiqScoreTextBox.Text = compiler.StandardOutput.ReadToEnd(); Console.WriteLine(compiler.StandardOutput.ReadToEnd()); compiler.WaitForExit(); } else { nfiqScoreTextBox.Text = "N/A"; MessageBox.Show("Invalid image format!\r\nNFIQ only support *jpg, *.png, *raw and *wsq image formats!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { nfiqScoreTextBox.Text = "N/A"; MessageBox.Show("Invalid image format!\r\nNFIQ only support *jpg, *png, *raw and *wsq image formats!", "Error Executing!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } public static String GetTempDir() { return System.IO.Path.GetTempPath(); } private void saveToolStripMenuItem1_Click(object sender, EventArgs e) { if (isImageStatus == true) { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); saveFileDialog1.Filter = "(*.bmp)|*.bmp|(*.gif)|*.gif|(*.jpg)|*.jpg|(*.png)|*.png|(*.tif)|*.tif|(*.wsq)|*.wsq"; saveFileDialog1.FilterIndex = 6; saveFileDialog1.CheckPathExists = true; ImageFormat format = ImageFormat.Png; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string ext = System.IO.Path.GetExtension(saveFileDialog1.FileName); switch (ext) { case ".bmp": format = ImageFormat.Bmp; break; case ".gif": format = ImageFormat.Gif; break; case ".jpg": format = ImageFormat.Jpeg; break; case ".png": format = ImageFormat.Png; break; case ".tif": format = ImageFormat.Tiff; break; case ".wsq": //format = ImageFormat.Wsq; break; } pictureBox1.Image.Save(saveFileDialog1.FileName, format); } } else { MessageBox.Show("No image is avaliable for save! ", "Error Saving Image!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Reset Button private void button1_Click(object sender, EventArgs e) { if (isImageStatus == true) { //if (isMFirstTimeStatus == false) //{ // imageFile = orgImageFile; // isMFirstTimeStatus = true; //} int origTotalMin = totalMinutiae; if (workerRunningStatus == false) { // reset everything contrastValue = 1.0f; brightnessValue = 0.0f; resetAllArrays(); // recalculate Minutiae callMindtct(imageFile, fileExt, true); populate_IAFIS(imageFile, true); printImageAndToolInfo(); printImageMinutiaeInfo(); // display this.ZoomExtents(); this.LimitBasePoint(basePoint.X, basePoint.Y); this.pictureBox1.Invalidate(); // Flash Minutiea related textbox if (totalMinutiae != origTotalMin) { //flashMinTextBox(); workerRunningStatus = true; backgroundWorker1.RunWorkerAsync(); } } } } // Min. Detect Button private void button3_Click(object sender, EventArgs e) { if (isImageStatus == true) { // Initialize index++; //if (isMFirstTimeStatus == true) //{ // orgImageFile = imageFile; // isMFirstTimeStatus = false; //} int origTotalMin = totalMinutiae; string outFile = FpMVPath + "xctemp_" + index + ".png"; // Call function to create grayscale image CreateGraysacleToFile(outFile); // set image file //imageFile = outFile; if (workerRunningStatus == false) { // Reset resetAllArrays(); // process Mindect and IAFIS callMindtct(outFile, "png", false); populate_IAFIS(outFile, false); this.pictureBox1.Invalidate(); printImageAndToolInfo(); printImageMinutiaeInfo(); // Flash Minutiea related textbox if (totalMinutiae != origTotalMin) { //flashMinTextBox(); workerRunningStatus = true; backgroundWorker1.RunWorkerAsync(); } } } } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { int msec = 500; int flashCount = 3; int i = 0; for (i = 0; i < flashCount; i++) { totalMinTextBox.ForeColor = Color.Red; displayedMinTextBox.ForeColor = Color.Red; Thread.Sleep(msec); totalMinTextBox.ForeColor = Color.Black; displayedMinTextBox.ForeColor = Color.Black; Thread.Sleep(msec); } workerRunningStatus = false; } void flashMinTextBox() { int msec = 500; int flashCount = 3; int i = 0; resetButton.Enabled = false; minDetectButton.Enabled = false; nfiqButton.Enabled = false; for (i = 0; i < flashCount; i++) { totalMinTextBox.ForeColor = Color.Red; displayedMinTextBox.ForeColor = Color.Red; totalMinTextBox.Refresh(); displayedMinTextBox.Refresh(); Thread.Sleep(msec); totalMinTextBox.ForeColor = Color.Black; displayedMinTextBox.ForeColor = Color.Black; totalMinTextBox.Refresh(); displayedMinTextBox.Refresh(); Thread.Sleep(msec); } resetButton.Enabled = true; minDetectButton.Enabled = true; nfiqButton.Enabled = true; } public void CreateGraysacleToFile(string outFile) { ColorMatrix cMatrix; ImageAttributes imgAttr; Image image1 = Image.FromFile(imageFile); Image image2 = new Bitmap(image1); Graphics a = Graphics.FromImage(image2); // Display image as pixel (no smoothing apply) a.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; a.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; // Set image contrast and brightness cMatrix = new ColorMatrix(); calContrastValue(); cMatrix.Matrix00 = contrastValue; cMatrix.Matrix11 = contrastValue; cMatrix.Matrix22 = contrastValue; calBrightnesstValue(); cMatrix.Matrix40 = brightnessValue; cMatrix.Matrix41 = brightnessValue; cMatrix.Matrix42 = brightnessValue; // Set image attribute imgAttr = new ImageAttributes(); imgAttr.SetColorMatrix(cMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); // Draw Image Rectangle dst = new Rectangle(0, 0, image2.Width, image2.Height); a.DrawImage(image2, dst, 0, 0, image2.Width, image2.Height, GraphicsUnit.Pixel, imgAttr); // Convert to gray scale Bitmap bmp = new Bitmap(image2); Bitmap gray; gray = ColorToGrayscale(bmp); gray.Save(outFile, ImageFormat.Png); // Clean up image1.Dispose(); image2.Dispose(); bmp.Dispose(); gray.Dispose(); a.Dispose(); } /// <summary> /// http://social.msdn.microsoft.com/Forums/vstudio/en-US/1a856813-a746-4c1a-ac15-a4314f6eb349/quick-image-conversion-to-8bpp /// Converts a bitmap into an 8-bit grayscale bitmap /// </summary> public Bitmap ColorToGrayscale(Bitmap bmp) { int w = bmp.Width, h = bmp.Height, r, ic, oc, bmpStride, outputStride, bytesPerPixel; PixelFormat pfIn = bmp.PixelFormat; ColorPalette palette; Bitmap output; BitmapData bmpData, outputData; //Create the new bitmap output = new Bitmap(w, h, PixelFormat.Format8bppIndexed); //Build a grayscale color Palette palette = output.Palette; for (int i = 0; i < 256; i++) { Color tmp = Color.FromArgb(255, i, i, i); palette.Entries[i] = Color.FromArgb(255, i, i, i); } output.Palette = palette; //No need to convert formats if already in 8 bit if (pfIn == PixelFormat.Format8bppIndexed) { output = (Bitmap)bmp.Clone(); //Make sure the palette is a grayscale palette and not some other //8-bit indexed palette output.Palette = palette; return output; } //Get the number of bytes per pixel switch (pfIn) { case PixelFormat.Format24bppRgb: bytesPerPixel = 3; break; case PixelFormat.Format32bppArgb: bytesPerPixel = 4; break; case PixelFormat.Format32bppRgb: bytesPerPixel = 4; break; default: throw new InvalidOperationException("Image format not supported"); } //Lock the images bmpData = bmp.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, pfIn); outputData = output.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); bmpStride = bmpData.Stride; outputStride = outputData.Stride; //Traverse each pixel of the image unsafe { byte* bmpPtr = (byte*)bmpData.Scan0.ToPointer(), outputPtr = (byte*)outputData.Scan0.ToPointer(); if (bytesPerPixel == 3) { for (r = 0; r < h; r++) for (ic = oc = 0; oc < w; ic += 3, ++oc) outputPtr[r * outputStride + oc] = (byte)(int)(bmpPtr[r * bmpStride + ic + 1]); } else //bytesPerPixel == 4 { for (r = 0; r < h; r++) for (ic = oc = 0; oc < w; ic += 4, ++oc) outputPtr[r * outputStride + oc] = (byte)(int)(bmpPtr[r * bmpStride + ic + 1]); } } //Unlock the images bmp.UnlockBits(bmpData); output.UnlockBits(outputData); return output; } private void imgObjDispose() { if (image != null) { image.Dispose(); } } private void cleanUpFiles() { // cleanup all the files and objects if (isFirstTimeStatus == false) { imgObjDispose(); if (Directory.Exists(FpMVPath)) { try { Directory.Delete(FpMVPath, true); } catch (Exception e) { string errStr = "Failed to delete directory: " + FpMVPath; Console.WriteLine(errStr, e.Message); } } } } private void quitToolStripMenuItem1_Click(object sender, EventArgs e) { // cleanup and exit cleanUpFiles(); Application.Exit(); } private void OnApplicationExit(object sender, EventArgs e) { // When the application is exiting, write the application data to the // user file and close it. cleanUpFiles(); } private bool checkImageType(string ext) { bool status; if (ext == ".bmp" || ext == ".gif" || ext == ".jpg" || ext == ".png" || ext == ".tif" || ext == ".wsq" || ext == ".raw") { status = true; } else { status = false; } return status; } private void trackBar1_Scroll(object sender, EventArgs e) { if (isImageStatus == true) { double trackbarValue = (double)trackBar1.Value / relScalar; qualityTextBox.Text = trackbarValue.ToString(); this.pictureBox1.Invalidate(); } } private void textBox5_TextChanged(object sender, EventArgs e) { int orgValueI = trackBar1.Value; double newValueD = 0; try { newValueD = Convert.ToDouble(qualityTextBox.Text); if (isImageStatus == true && isFirstTimeStatus == false) { if (newValueD >= 0 && newValueD <= 0.99) { int newValueI = (int)(newValueD * relScalar); trackBar1.Value = newValueI; this.pictureBox1.Invalidate(); } else { trackBar1.Value = orgValueI; MessageBox.Show("Invalid Range(1)! \r\nPlease input a value in the range of (0 - 0.99).", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch { trackBar1.Value = orgValueI; //MessageBox.Show("Invalid Range(2)! \r\nPlease input range (0 - 0.99).", "Error Invalid Range!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void trackBar2_Scroll(object sender, EventArgs e) { if (isImageStatus == true) { fpOpacityTextBox.Text = fpOpacityTrackBar.Value.ToString(); this.pictureBox1.Invalidate(); } } private void textBox13_TextChanged(object sender, EventArgs e) { int orgValueI = fpOpacityTrackBar.Value; int newValueI = 0; try { newValueI = Convert.ToInt32(fpOpacityTextBox.Text); if (isImageStatus == true && isFirstTimeStatus == false) { if (newValueI >= 0 && newValueI <= 100) { fpOpacityTrackBar.Value = newValueI; this.pictureBox1.Invalidate(); } else { fpOpacityTrackBar.Value = orgValueI; MessageBox.Show("Invalid Range(2)! \r\nlease input a value in the range of (0 - 100).", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch { fpOpacityTrackBar.Value = orgValueI; //MessageBox.Show("Invalid Range(2)! \r\nPlease input range (0 - 100).", "Error Invalid Range!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void trackBar3_Scroll(object sender, EventArgs e) { if (isImageStatus == true) { MinOpacityTextBox.Text = MinOpacityTrackBar.Value.ToString(); this.pictureBox1.Invalidate(); } } private void textBox14_TextChanged(object sender, EventArgs e) { int orgValueI = MinOpacityTrackBar.Value; int newValueI = 0; try { newValueI = Convert.ToInt32(MinOpacityTextBox.Text); if (isImageStatus == true && isFirstTimeStatus == false) { if (newValueI >= 0 && newValueI <= 100) { MinOpacityTrackBar.Value = newValueI; this.pictureBox1.Invalidate(); } else { MinOpacityTrackBar.Value = orgValueI; MessageBox.Show("Invalid Range(3)! \r\nlease input a value in the range of (0 - 100).", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch { fpOpacityTrackBar.Value = orgValueI; //MessageBox.Show("Invalid Range(2)! \r\nPlease input range (0 - 100).", "Error Invalid Range!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void calContrastValue() { contrastValue = 1.0f; float trackbarValue = (float)contrastTrackBar.Value; if (trackbarValue == 0) { contrastValue = 1.0f; } else if (trackbarValue > 0) { contrastValue = contrastValue + (contrastMax * (trackbarValue / 100)); } else if (trackbarValue < 0) { contrastValue = contrastValue - (contrastMin * (trackbarValue / 100)); } } private void trackBar4_Scroll(object sender, EventArgs e) { if (isImageStatus == true) { fpContrastTextBox.Text = contrastTrackBar.Value.ToString(); this.pictureBox1.Invalidate(); } } private void textBox16_TextChanged(object sender, EventArgs e) { int orgValueI = contrastTrackBar.Value; int newValueI = 0; try { newValueI = Convert.ToInt32(fpContrastTextBox.Text); if (isImageStatus == true && isFirstTimeStatus == false) { if (newValueI >= -100 && newValueI <= 100) { contrastTrackBar.Value = newValueI; this.pictureBox1.Invalidate(); } else { contrastTrackBar.Value = orgValueI; MessageBox.Show("Invalid Range(4)! \r\nlease input a value in the range of (-100 - 100).", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch { contrastTrackBar.Value = orgValueI; //MessageBox.Show("Invalid Range(2)! \r\nPlease input range (0 - 100).", "Error Invalid Range!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void calBrightnesstValue() { brightnessValue = 0.0f; float trackbarValue = (float)brightnessTrackBar.Value; if (trackbarValue == 0) { brightnessValue = 0.0f; } else if (trackbarValue > 0) { brightnessValue = brightnessValue + (brightnessMax * (trackbarValue / 100)); } else if (trackbarValue < 0) { brightnessValue = brightnessValue - (brightnessMin * (trackbarValue / 100)); } } private void textBox7_TextChanged(object sender, EventArgs e) { int orgValueI = brightnessTrackBar.Value; int newValueI = 0; try { newValueI = Convert.ToInt32(fpBrightnessTextBox.Text); if (isImageStatus == true && isFirstTimeStatus == false) { if (newValueI >= -100 && newValueI <= 100) { brightnessTrackBar.Value = newValueI; this.pictureBox1.Invalidate(); } else { brightnessTrackBar.Value = orgValueI; MessageBox.Show("Invalid Range(5)! \r\nlease input a value in the range of (-100 - 100).", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch { brightnessTrackBar.Value = orgValueI; MessageBox.Show("Invalid Range(6)! \r\nPlease input range (0 - 100).", "Error Invalid Range!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void trackBar5_Scroll(object sender, EventArgs e) { if (isImageStatus == true) { fpBrightnessTextBox.Text = brightnessTrackBar.Value.ToString(); this.pictureBox1.Invalidate(); } } private void radioButton_IAFIS_CheckedChanged(object sender, EventArgs e) { if (isImageStatus == true) { if (radioButton_IAFIS.Checked) { printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } } } private void radioButton_M1_CheckedChanged(object sender, EventArgs e) { if (isImageStatus == true) { if (radioButton_M1.Checked) { printImageMinutiaeInfo(); this.pictureBox1.Invalidate(); } } } private void masterReset() { contrastValue = 1.0f; brightnessValue = 0.0f; resetAllArrays(); resetAllTrackBars(); printImageAndToolInfo(); printImageMinutiaeInfo(); this.ZoomExtents(); this.LimitBasePoint(basePoint.X, basePoint.Y); this.pictureBox1.Invalidate(); } private void resetAllTrackBars() { trackBar1.Value = 0; fpOpacityTrackBar.Value = 100; MinOpacityTrackBar.Value = 100; contrastTrackBar.Value = 0; brightnessTrackBar.Value = 0; radioButton_IAFIS.Checked = true; printImageAndToolInfo(); } private void resetAllArrays() { count = 0; totalMinutiae = 0; Array.Clear(tempStr, 0, tempStr.Length); Array.Clear(arrXY_IAFIS, 0, arrXY_IAFIS.Length); Array.Clear(temparrXY_IAFIS, 0, temparrXY_IAFIS.Length); Array.Clear(arrX_IAFIS, 0, arrX_IAFIS.Length); Array.Clear(arrY_IAFIS, 0, arrY_IAFIS.Length); Array.Clear(arrDIR_IAFIS, 0, arrDIR_IAFIS.Length); Array.Clear(arrREL_IAFIS, 0, arrREL_IAFIS.Length); Array.Clear(arrTYP_IAFIS, 0, arrTYP_IAFIS.Length); } private void printImageAndToolInfo() { widthTextBox.Text = Convert.ToString(imgWidth); heightTextBox.Text = Convert.ToString(imgHeight); totalMinTextBox.Text = Convert.ToString(totalMinutiae); displayedMinTextBox.Text = Convert.ToString(displayMinutiae); qualityTextBox.Text = Convert.ToString(trackBar1.Value / relScalar); fpOpacityTextBox.Text = Convert.ToString(fpOpacityTrackBar.Value); MinOpacityTextBox.Text = Convert.ToString(MinOpacityTrackBar.Value); fpContrastTextBox.Text = Convert.ToString(contrastTrackBar.Value); fpBrightnessTextBox.Text = Convert.ToString(brightnessTrackBar.Value); } private void groupBox1_Enter(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void label4_Click(object sender, EventArgs e) { } private void label2_Click(object sender, EventArgs e) { } private void label3_Click(object sender, EventArgs e) { } private void textBox2_TextChanged(object sender, EventArgs e) { } private void textBox4_TextChanged(object sender, EventArgs e) { } private void textBox3_TextChanged(object sender, EventArgs e) { } private void textBox6_TextChanged(object sender, EventArgs e) { } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void saveFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void saveFileDialog1_FileOk_1(object sender, CancelEventArgs e) { } private void pictureBox1_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e) { } private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void textBox1_TextChanged_1(object sender, EventArgs e) { } private void label5_Click(object sender, EventArgs e) { } private void groupBox2_Enter(object sender, EventArgs e) { } private void label6_Click(object sender, EventArgs e) { } private void textBox10_TextChanged(object sender, EventArgs e) { } private void label7_Click(object sender, EventArgs e) { } private void textBox1_TextChanged_2(object sender, EventArgs e) { } private void textBox15_TextChanged(object sender, EventArgs e) { } private void label9_Click(object sender, EventArgs e) { } private void label10_Click(object sender, EventArgs e) { } private void groupBox3_Enter(object sender, EventArgs e) { } private void groupBox5_Enter(object sender, EventArgs e) { } private void totalMinutiaeBox_TextChanged(object sender, EventArgs e) { } private void timer1_Tick(object sender, EventArgs e) { } } }

FpMV/src/FpMV/FpMV/Form1.Designer.cs

namespace FpMV { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.saveToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.quitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox6 = new System.Windows.Forms.TextBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.minDetectButton = new System.Windows.Forms.Button(); this.label5 = new System.Windows.Forms.Label(); this.resetButton = new System.Windows.Forms.Button(); this.nfiqButton = new System.Windows.Forms.Button(); this.nfiqScoreTextBox = new System.Windows.Forms.TextBox(); this.radioButton_IAFIS = new System.Windows.Forms.RadioButton(); this.radioButton_M1 = new System.Windows.Forms.RadioButton(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox5 = new System.Windows.Forms.GroupBox(); this.qualityLabel = new System.Windows.Forms.Label(); this.trackBar1 = new System.Windows.Forms.TrackBar(); this.MinOpacityTextBox = new System.Windows.Forms.TextBox(); this.qualityTextBox = new System.Windows.Forms.TextBox(); this.minOpacityLabel = new System.Windows.Forms.Label(); this.fpPpacityLabel = new System.Windows.Forms.Label(); this.MinOpacityTrackBar = new System.Windows.Forms.TrackBar(); this.fpOpacityTextBox = new System.Windows.Forms.TextBox(); this.fpOpacityTrackBar = new System.Windows.Forms.TrackBar(); this.groupBox4 = new System.Windows.Forms.GroupBox(); this.fpBrightnessLabel = new System.Windows.Forms.Label(); this.brightnessTrackBar = new System.Windows.Forms.TrackBar(); this.fpContrastLabel = new System.Windows.Forms.Label(); this.fpBrightnessTextBox = new System.Windows.Forms.TextBox(); this.fpContrastTextBox = new System.Windows.Forms.TextBox(); this.contrastTrackBar = new System.Windows.Forms.TrackBar(); this.displayedMinTextBox = new System.Windows.Forms.TextBox(); this.displayedMinLabel = new System.Windows.Forms.Label(); this.totalMinTextBox = new System.Windows.Forms.TextBox(); this.heightTextBox = new System.Windows.Forms.TextBox(); this.widthTextBox = new System.Windows.Forms.TextBox(); this.widthLabel = new System.Windows.Forms.Label(); this.totalMinDetectedLabel = new System.Windows.Forms.Label(); this.heightLabel = new System.Windows.Forms.Label(); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); this.menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.groupBox2.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox5.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.MinOpacityTrackBar)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.fpOpacityTrackBar)).BeginInit(); this.groupBox4.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.brightnessTrackBar)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.contrastTrackBar)).BeginInit(); this.tableLayoutPanel1.SuspendLayout(); this.groupBox3.SuspendLayout(); this.SuspendLayout(); // // menuStrip1 // this.menuStrip1.BackColor = System.Drawing.SystemColors.ActiveCaption; this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem1}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; this.menuStrip1.Size = new System.Drawing.Size(781, 24); this.menuStrip1.TabIndex = 0; this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.menuStrip1_ItemClicked); // // fileToolStripMenuItem1 // this.fileToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.openToolStripMenuItem1, this.saveToolStripMenuItem1, this.quitToolStripMenuItem1}); this.fileToolStripMenuItem1.Name = "fileToolStripMenuItem1"; this.fileToolStripMenuItem1.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem1.Text = "File"; // // openToolStripMenuItem1 // this.openToolStripMenuItem1.Name = "openToolStripMenuItem1"; this.openToolStripMenuItem1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); this.openToolStripMenuItem1.Size = new System.Drawing.Size(146, 22); this.openToolStripMenuItem1.Text = "Open"; this.openToolStripMenuItem1.Click += new System.EventHandler(this.openToolStripMenuItem1_Click); // // saveToolStripMenuItem1 // this.saveToolStripMenuItem1.Name = "saveToolStripMenuItem1"; this.saveToolStripMenuItem1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); this.saveToolStripMenuItem1.Size = new System.Drawing.Size(146, 22); this.saveToolStripMenuItem1.Text = "Save"; this.saveToolStripMenuItem1.Visible = false; this.saveToolStripMenuItem1.Click += new System.EventHandler(this.saveToolStripMenuItem1_Click); // // quitToolStripMenuItem1 // this.quitToolStripMenuItem1.Name = "quitToolStripMenuItem1"; this.quitToolStripMenuItem1.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q))); this.quitToolStripMenuItem1.Size = new System.Drawing.Size(146, 22); this.quitToolStripMenuItem1.Text = "Quit"; this.quitToolStripMenuItem1.Click += new System.EventHandler(this.quitToolStripMenuItem1_Click); // // openFileDialog1 // this.openFileDialog1.FileName = "openFileDialog1"; this.openFileDialog1.FileOk += new System.ComponentModel.CancelEventHandler(this.openFileDialog1_FileOk); // // saveFileDialog1 // this.saveFileDialog1.CheckFileExists = true; this.saveFileDialog1.FilterIndex = 2; this.saveFileDialog1.RestoreDirectory = true; this.saveFileDialog1.FileOk += new System.ComponentModel.CancelEventHandler(this.saveFileDialog1_FileOk_1); // // pictureBox1 // this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Arrow; this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.pictureBox1.Location = new System.Drawing.Point(156, 0); this.pictureBox1.Margin = new System.Windows.Forms.Padding(0); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(625, 603); this.pictureBox1.TabIndex = 1; this.pictureBox1.TabStop = false; this.pictureBox1.WaitOnLoad = true; this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); // // textBox1 // this.textBox1.BackColor = System.Drawing.SystemColors.Control; this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.textBox1.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.textBox1.Location = new System.Drawing.Point(159, 632); this.textBox1.Multiline = true; this.textBox1.Name = "textBox1"; this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.textBox1.Size = new System.Drawing.Size(619, 173); this.textBox1.TabIndex = 13; this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged_2); // // textBox6 // this.textBox6.Dock = System.Windows.Forms.DockStyle.Fill; this.textBox6.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.textBox6.Location = new System.Drawing.Point(159, 606); this.textBox6.Name = "textBox6"; this.textBox6.ReadOnly = true; this.textBox6.Size = new System.Drawing.Size(619, 26); this.textBox6.TabIndex = 9; this.textBox6.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.textBox6.TextChanged += new System.EventHandler(this.textBox6_TextChanged); // // groupBox2 // this.groupBox2.AutoSize = true; this.groupBox2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.groupBox2.Controls.Add(this.minDetectButton); this.groupBox2.Controls.Add(this.label5); this.groupBox2.Controls.Add(this.resetButton); this.groupBox2.Controls.Add(this.nfiqButton); this.groupBox2.Controls.Add(this.nfiqScoreTextBox); this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox2.Location = new System.Drawing.Point(3, 632); this.groupBox2.Name = "groupBox2"; this.groupBox2.Size = new System.Drawing.Size(150, 173); this.groupBox2.TabIndex = 10; this.groupBox2.TabStop = false; this.groupBox2.Enter += new System.EventHandler(this.groupBox2_Enter); // // minDetectButton // this.minDetectButton.Location = new System.Drawing.Point(31, 19); this.minDetectButton.Name = "minDetectButton"; this.minDetectButton.Size = new System.Drawing.Size(75, 23); this.minDetectButton.TabIndex = 0; this.minDetectButton.Text = "Min. Detect"; this.minDetectButton.UseVisualStyleBackColor = true; this.minDetectButton.Click += new System.EventHandler(this.button3_Click); // // label5 // this.label5.AutoSize = true; this.label5.Location = new System.Drawing.Point(7, 116); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(0, 13); this.label5.TabIndex = 12; this.label5.Click += new System.EventHandler(this.label5_Click); // // resetButton // this.resetButton.Location = new System.Drawing.Point(30, 126); this.resetButton.Name = "resetButton"; this.resetButton.Size = new System.Drawing.Size(76, 20); this.resetButton.TabIndex = 10; this.resetButton.Text = "Reset"; this.resetButton.UseVisualStyleBackColor = true; this.resetButton.Click += new System.EventHandler(this.button1_Click); // // nfiqButton // this.nfiqButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 7F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nfiqButton.Location = new System.Drawing.Point(31, 63); this.nfiqButton.Name = "nfiqButton"; this.nfiqButton.Size = new System.Drawing.Size(75, 24); this.nfiqButton.TabIndex = 9; this.nfiqButton.Text = "NFIQ Score"; this.nfiqButton.UseVisualStyleBackColor = true; this.nfiqButton.Click += new System.EventHandler(this.button2_Click); // // nfiqScoreTextBox // this.nfiqScoreTextBox.Location = new System.Drawing.Point(53, 93); this.nfiqScoreTextBox.Name = "nfiqScoreTextBox"; this.nfiqScoreTextBox.ReadOnly = true; this.nfiqScoreTextBox.Size = new System.Drawing.Size(30, 20); this.nfiqScoreTextBox.TabIndex = 14; this.nfiqScoreTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.nfiqScoreTextBox.TextChanged += new System.EventHandler(this.textBox15_TextChanged); // // radioButton_IAFIS // this.radioButton_IAFIS.AutoSize = true; this.radioButton_IAFIS.Checked = true; this.radioButton_IAFIS.Location = new System.Drawing.Point(20, 1); this.radioButton_IAFIS.Name = "radioButton_IAFIS"; this.radioButton_IAFIS.Size = new System.Drawing.Size(51, 17); this.radioButton_IAFIS.TabIndex = 9; this.radioButton_IAFIS.TabStop = true; this.radioButton_IAFIS.Text = "IAFIS"; this.radioButton_IAFIS.UseVisualStyleBackColor = true; this.radioButton_IAFIS.CheckedChanged += new System.EventHandler(this.radioButton_IAFIS_CheckedChanged); // // radioButton_M1 // this.radioButton_M1.AutoSize = true; this.radioButton_M1.Location = new System.Drawing.Point(80, 1); this.radioButton_M1.Name = "radioButton_M1"; this.radioButton_M1.Size = new System.Drawing.Size(40, 17); this.radioButton_M1.TabIndex = 10; this.radioButton_M1.Text = "M1"; this.radioButton_M1.UseVisualStyleBackColor = true; this.radioButton_M1.CheckedChanged += new System.EventHandler(this.radioButton_M1_CheckedChanged); // // groupBox1 // this.groupBox1.AutoSize = true; this.groupBox1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.groupBox1.Controls.Add(this.groupBox5); this.groupBox1.Controls.Add(this.groupBox4); this.groupBox1.Controls.Add(this.displayedMinTextBox); this.groupBox1.Controls.Add(this.displayedMinLabel); this.groupBox1.Controls.Add(this.totalMinTextBox); this.groupBox1.Controls.Add(this.heightTextBox); this.groupBox1.Controls.Add(this.widthTextBox); this.groupBox1.Controls.Add(this.widthLabel); this.groupBox1.Controls.Add(this.totalMinDetectedLabel); this.groupBox1.Controls.Add(this.heightLabel); this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox1.Location = new System.Drawing.Point(3, 3); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(150, 597); this.groupBox1.TabIndex = 3; this.groupBox1.TabStop = false; this.groupBox1.Text = "Control Panel"; this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter); // // groupBox5 // this.groupBox5.Controls.Add(this.qualityLabel); this.groupBox5.Controls.Add(this.trackBar1); this.groupBox5.Controls.Add(this.MinOpacityTextBox); this.groupBox5.Controls.Add(this.qualityTextBox); this.groupBox5.Controls.Add(this.minOpacityLabel); this.groupBox5.Controls.Add(this.fpPpacityLabel); this.groupBox5.Controls.Add(this.MinOpacityTrackBar); this.groupBox5.Controls.Add(this.fpOpacityTextBox); this.groupBox5.Controls.Add(this.fpOpacityTrackBar); this.groupBox5.Location = new System.Drawing.Point(3, 192); this.groupBox5.Name = "groupBox5"; this.groupBox5.Size = new System.Drawing.Size(149, 235); this.groupBox5.TabIndex = 27; this.groupBox5.TabStop = false; this.groupBox5.Text = "Display Setting"; this.groupBox5.Enter += new System.EventHandler(this.groupBox5_Enter); // // qualityLabel // this.qualityLabel.AutoSize = true; this.qualityLabel.Location = new System.Drawing.Point(6, 29); this.qualityLabel.Name = "qualityLabel"; this.qualityLabel.Size = new System.Drawing.Size(94, 13); this.qualityLabel.TabIndex = 1; this.qualityLabel.Text = "Quality (Unit) > "; this.qualityLabel.Click += new System.EventHandler(this.label1_Click); // // trackBar1 // this.trackBar1.Location = new System.Drawing.Point(3, 52); this.trackBar1.Maximum = 99; this.trackBar1.Name = "trackBar1"; this.trackBar1.RightToLeftLayout = true; this.trackBar1.Size = new System.Drawing.Size(146, 45); this.trackBar1.TabIndex = 2; this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None; this.trackBar1.Value = 1; this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll); // // MinOpacityTextBox // this.MinOpacityTextBox.AcceptsReturn = true; this.MinOpacityTextBox.Location = new System.Drawing.Point(106, 170); this.MinOpacityTextBox.MaxLength = 4; this.MinOpacityTextBox.Name = "MinOpacityTextBox"; this.MinOpacityTextBox.Size = new System.Drawing.Size(39, 20); this.MinOpacityTextBox.TabIndex = 7; this.MinOpacityTextBox.TextChanged += new System.EventHandler(this.textBox14_TextChanged); // // qualityTextBox // this.qualityTextBox.AcceptsReturn = true; this.qualityTextBox.Location = new System.Drawing.Point(105, 26); this.qualityTextBox.MaxLength = 4; this.qualityTextBox.Name = "qualityTextBox"; this.qualityTextBox.Size = new System.Drawing.Size(39, 20); this.qualityTextBox.TabIndex = 1; this.qualityTextBox.TextChanged += new System.EventHandler(this.textBox5_TextChanged); // // minOpacityLabel // this.minOpacityLabel.AutoSize = true; this.minOpacityLabel.Location = new System.Drawing.Point(7, 173); this.minOpacityLabel.Name = "minOpacityLabel"; this.minOpacityLabel.Size = new System.Drawing.Size(95, 13); this.minOpacityLabel.TabIndex = 17; this.minOpacityLabel.Text = "Min Opacity (%) > "; // // fpPpacityLabel // this.fpPpacityLabel.AutoSize = true; this.fpPpacityLabel.Location = new System.Drawing.Point(7, 100); this.fpPpacityLabel.Name = "fpPpacityLabel"; this.fpPpacityLabel.Size = new System.Drawing.Size(94, 13); this.fpPpacityLabel.TabIndex = 13; this.fpPpacityLabel.Text = "FP Opacity (%) > "; this.fpPpacityLabel.Click += new System.EventHandler(this.label7_Click); // // MinOpacityTrackBar // this.MinOpacityTrackBar.Location = new System.Drawing.Point(1, 197); this.MinOpacityTrackBar.Maximum = 100; this.MinOpacityTrackBar.Name = "MinOpacityTrackBar"; this.MinOpacityTrackBar.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.MinOpacityTrackBar.RightToLeftLayout = true; this.MinOpacityTrackBar.Size = new System.Drawing.Size(146, 45); this.MinOpacityTrackBar.TabIndex = 8; this.MinOpacityTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; this.MinOpacityTrackBar.Value = 1; this.MinOpacityTrackBar.Scroll += new System.EventHandler(this.trackBar3_Scroll); // // fpOpacityTextBox // this.fpOpacityTextBox.AcceptsReturn = true; this.fpOpacityTextBox.Location = new System.Drawing.Point(105, 97); this.fpOpacityTextBox.MaxLength = 4; this.fpOpacityTextBox.Name = "fpOpacityTextBox"; this.fpOpacityTextBox.Size = new System.Drawing.Size(39, 20); this.fpOpacityTextBox.TabIndex = 5; this.fpOpacityTextBox.TextChanged += new System.EventHandler(this.textBox13_TextChanged); // // fpOpacityTrackBar // this.fpOpacityTrackBar.Location = new System.Drawing.Point(1, 125); this.fpOpacityTrackBar.Maximum = 100; this.fpOpacityTrackBar.Name = "fpOpacityTrackBar"; this.fpOpacityTrackBar.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.fpOpacityTrackBar.RightToLeftLayout = true; this.fpOpacityTrackBar.Size = new System.Drawing.Size(146, 45); this.fpOpacityTrackBar.TabIndex = 6; this.fpOpacityTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; this.fpOpacityTrackBar.Value = 1; this.fpOpacityTrackBar.Scroll += new System.EventHandler(this.trackBar2_Scroll); // // groupBox4 // this.groupBox4.Controls.Add(this.fpBrightnessLabel); this.groupBox4.Controls.Add(this.brightnessTrackBar); this.groupBox4.Controls.Add(this.fpContrastLabel); this.groupBox4.Controls.Add(this.fpBrightnessTextBox); this.groupBox4.Controls.Add(this.fpContrastTextBox); this.groupBox4.Controls.Add(this.contrastTrackBar); this.groupBox4.Location = new System.Drawing.Point(3, 433); this.groupBox4.Name = "groupBox4"; this.groupBox4.Size = new System.Drawing.Size(153, 167); this.groupBox4.TabIndex = 26; this.groupBox4.TabStop = false; this.groupBox4.Text = "Image Setting"; // // fpBrightnessLabel // this.fpBrightnessLabel.AutoSize = true; this.fpBrightnessLabel.Location = new System.Drawing.Point(4, 32); this.fpBrightnessLabel.Name = "fpBrightnessLabel"; this.fpBrightnessLabel.Size = new System.Drawing.Size(101, 13); this.fpBrightnessLabel.TabIndex = 25; this.fpBrightnessLabel.Text = "FP Brightness (%) > "; this.fpBrightnessLabel.Click += new System.EventHandler(this.label10_Click); // // brightnessTrackBar // this.brightnessTrackBar.Location = new System.Drawing.Point(-1, 58); this.brightnessTrackBar.Maximum = 100; this.brightnessTrackBar.Minimum = -100; this.brightnessTrackBar.Name = "brightnessTrackBar"; this.brightnessTrackBar.RightToLeft = System.Windows.Forms.RightToLeft.No; this.brightnessTrackBar.RightToLeftLayout = true; this.brightnessTrackBar.Size = new System.Drawing.Size(146, 45); this.brightnessTrackBar.SmallChange = 5; this.brightnessTrackBar.TabIndex = 24; this.brightnessTrackBar.TickFrequency = 5; this.brightnessTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; this.brightnessTrackBar.Scroll += new System.EventHandler(this.trackBar5_Scroll); // // fpContrastLabel // this.fpContrastLabel.AutoSize = true; this.fpContrastLabel.Location = new System.Drawing.Point(4, 106); this.fpContrastLabel.Name = "fpContrastLabel"; this.fpContrastLabel.Size = new System.Drawing.Size(94, 13); this.fpContrastLabel.TabIndex = 22; this.fpContrastLabel.Text = "FP Contrast (%) > "; this.fpContrastLabel.Click += new System.EventHandler(this.label9_Click); // // fpBrightnessTextBox // this.fpBrightnessTextBox.AcceptsReturn = true; this.fpBrightnessTextBox.Location = new System.Drawing.Point(104, 29); this.fpBrightnessTextBox.MaxLength = 4; this.fpBrightnessTextBox.Name = "fpBrightnessTextBox"; this.fpBrightnessTextBox.Size = new System.Drawing.Size(38, 20); this.fpBrightnessTextBox.TabIndex = 23; this.fpBrightnessTextBox.TextChanged += new System.EventHandler(this.textBox7_TextChanged); // // fpContrastTextBox // this.fpContrastTextBox.AcceptsReturn = true; this.fpContrastTextBox.Location = new System.Drawing.Point(104, 103); this.fpContrastTextBox.MaxLength = 4; this.fpContrastTextBox.Name = "fpContrastTextBox"; this.fpContrastTextBox.Size = new System.Drawing.Size(39, 20); this.fpContrastTextBox.TabIndex = 3; this.fpContrastTextBox.TextChanged += new System.EventHandler(this.textBox16_TextChanged); // // contrastTrackBar // this.contrastTrackBar.Location = new System.Drawing.Point(-1, 129); this.contrastTrackBar.Maximum = 100; this.contrastTrackBar.Minimum = -100; this.contrastTrackBar.Name = "contrastTrackBar"; this.contrastTrackBar.RightToLeft = System.Windows.Forms.RightToLeft.No; this.contrastTrackBar.RightToLeftLayout = true; this.contrastTrackBar.Size = new System.Drawing.Size(146, 45); this.contrastTrackBar.SmallChange = 5; this.contrastTrackBar.TabIndex = 4; this.contrastTrackBar.TickFrequency = 5; this.contrastTrackBar.TickStyle = System.Windows.Forms.TickStyle.None; this.contrastTrackBar.Scroll += new System.EventHandler(this.trackBar4_Scroll); // // displayedMinTextBox // this.displayedMinTextBox.BackColor = System.Drawing.SystemColors.Control; this.displayedMinTextBox.Location = new System.Drawing.Point(20, 158); this.displayedMinTextBox.Name = "displayedMinTextBox"; this.displayedMinTextBox.Size = new System.Drawing.Size(100, 20); this.displayedMinTextBox.TabIndex = 0; this.displayedMinTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.displayedMinTextBox.TextChanged += new System.EventHandler(this.textBox10_TextChanged); // // displayedMinLabel // this.displayedMinLabel.AutoSize = true; this.displayedMinLabel.Location = new System.Drawing.Point(21, 142); this.displayedMinLabel.Name = "displayedMinLabel"; this.displayedMinLabel.Size = new System.Drawing.Size(99, 13); this.displayedMinLabel.TabIndex = 11; this.displayedMinLabel.Text = "Displayed Minutiae:"; this.displayedMinLabel.Click += new System.EventHandler(this.label6_Click); // // totalMinTextBox // this.totalMinTextBox.BackColor = System.Drawing.SystemColors.Control; this.totalMinTextBox.Location = new System.Drawing.Point(20, 107); this.totalMinTextBox.Name = "totalMinTextBox"; this.totalMinTextBox.Size = new System.Drawing.Size(100, 20); this.totalMinTextBox.TabIndex = 0; this.totalMinTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.totalMinTextBox.TextChanged += new System.EventHandler(this.textBox4_TextChanged); // // heightTextBox // this.heightTextBox.Location = new System.Drawing.Point(84, 53); this.heightTextBox.Name = "heightTextBox"; this.heightTextBox.ReadOnly = true; this.heightTextBox.Size = new System.Drawing.Size(46, 20); this.heightTextBox.TabIndex = 0; this.heightTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.heightTextBox.TextChanged += new System.EventHandler(this.textBox3_TextChanged); // // widthTextBox // this.widthTextBox.Location = new System.Drawing.Point(10, 53); this.widthTextBox.Name = "widthTextBox"; this.widthTextBox.ReadOnly = true; this.widthTextBox.Size = new System.Drawing.Size(48, 20); this.widthTextBox.TabIndex = 0; this.widthTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.widthTextBox.TextChanged += new System.EventHandler(this.textBox2_TextChanged); // // widthLabel // this.widthLabel.AutoSize = true; this.widthLabel.Location = new System.Drawing.Point(17, 37); this.widthLabel.Name = "widthLabel"; this.widthLabel.Size = new System.Drawing.Size(38, 13); this.widthLabel.TabIndex = 4; this.widthLabel.Text = "Width:"; this.widthLabel.Click += new System.EventHandler(this.label4_Click); // // totalMinDetectedLabel // this.totalMinDetectedLabel.AutoSize = true; this.totalMinDetectedLabel.Location = new System.Drawing.Point(9, 91); this.totalMinDetectedLabel.Name = "totalMinDetectedLabel"; this.totalMinDetectedLabel.Size = new System.Drawing.Size(124, 13); this.totalMinDetectedLabel.TabIndex = 3; this.totalMinDetectedLabel.Text = "Total Minutiae Detected:"; this.totalMinDetectedLabel.Click += new System.EventHandler(this.label3_Click); // // heightLabel // this.heightLabel.AutoSize = true; this.heightLabel.Location = new System.Drawing.Point(87, 37); this.heightLabel.Name = "heightLabel"; this.heightLabel.Size = new System.Drawing.Size(41, 13); this.heightLabel.TabIndex = 2; this.heightLabel.Text = "Height:"; this.heightLabel.Click += new System.EventHandler(this.label2_Click); // // tableLayoutPanel1 // this.tableLayoutPanel1.AutoScroll = true; this.tableLayoutPanel1.AutoSize = true; this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.tableLayoutPanel1.BackColor = System.Drawing.SystemColors.Control; this.tableLayoutPanel1.ColumnCount = 2; this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 156F)); this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tableLayoutPanel1.Controls.Add(this.groupBox2, 0, 2); this.tableLayoutPanel1.Controls.Add(this.textBox6, 1, 1); this.tableLayoutPanel1.Controls.Add(this.textBox1, 1, 2); this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 1, 0); this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0); this.tableLayoutPanel1.Controls.Add(this.groupBox3, 0, 1); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 24); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 3; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 179F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.tableLayoutPanel1.Size = new System.Drawing.Size(781, 808); this.tableLayoutPanel1.TabIndex = 3; this.tableLayoutPanel1.Paint += new System.Windows.Forms.PaintEventHandler(this.tableLayoutPanel1_Paint); // // groupBox3 // this.groupBox3.Controls.Add(this.radioButton_IAFIS); this.groupBox3.Controls.Add(this.radioButton_M1); this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox3.Location = new System.Drawing.Point(3, 606); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(150, 20); this.groupBox3.TabIndex = 14; this.groupBox3.TabStop = false; this.groupBox3.Enter += new System.EventHandler(this.groupBox3_Enter); // // backgroundWorker1 // this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSize = true; this.ClientSize = new System.Drawing.Size(781, 832); this.Controls.Add(this.tableLayoutPanel1); this.Controls.Add(this.menuStrip1); this.DoubleBuffered = true; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = " "; this.Load += new System.EventHandler(this.Form1_Load); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.MinOpacityTrackBar)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.fpOpacityTrackBar)).EndInit(); this.groupBox4.ResumeLayout(false); this.groupBox4.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.brightnessTrackBar)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.contrastTrackBar)).EndInit(); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.SaveFileDialog saveFileDialog1; private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem1; private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox6; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.Label label5; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.TrackBar fpOpacityTrackBar; private System.Windows.Forms.TextBox fpOpacityTextBox; private System.Windows.Forms.Label fpPpacityLabel; private System.Windows.Forms.TextBox displayedMinTextBox; private System.Windows.Forms.Label displayedMinLabel; private System.Windows.Forms.RadioButton radioButton_M1; private System.Windows.Forms.RadioButton radioButton_IAFIS; private System.Windows.Forms.TextBox qualityTextBox; private System.Windows.Forms.TextBox totalMinTextBox; private System.Windows.Forms.TextBox heightTextBox; private System.Windows.Forms.TextBox widthTextBox; private System.Windows.Forms.Label widthLabel; private System.Windows.Forms.Label totalMinDetectedLabel; private System.Windows.Forms.Label heightLabel; private System.Windows.Forms.Label qualityLabel; private System.Windows.Forms.TrackBar trackBar1; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.TextBox MinOpacityTextBox; private System.Windows.Forms.Label minOpacityLabel; private System.Windows.Forms.TrackBar MinOpacityTrackBar; internal System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Button resetButton; private System.Windows.Forms.Button nfiqButton; private System.Windows.Forms.TextBox nfiqScoreTextBox; private System.Windows.Forms.Label fpContrastLabel; private System.Windows.Forms.TrackBar contrastTrackBar; private System.Windows.Forms.TextBox fpContrastTextBox; private System.Windows.Forms.TrackBar brightnessTrackBar; private System.Windows.Forms.TextBox fpBrightnessTextBox; private System.Windows.Forms.Label fpBrightnessLabel; private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.Button minDetectButton; private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.GroupBox groupBox4; private System.ComponentModel.BackgroundWorker backgroundWorker1; } }

FpMV/src/FpMV/FpMV/Form1.resx

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 132, 17 272, 17 408, 17 AAABAAEAQEAAAAEAGAAoMgAAFgAAACgAAABAAAAAgAAAAAEAGAAAAAAAAAAAAGAAAABgAAAAAAAAAAAA AADl5eTw8fCkpKSQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ kJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQ kJCQkJCbm5vg4N/g4d/y8vJBQUFGRkZyc3J0dHN0dHNzdHJxcnFxcnFwcW9vcG9ub25ubm1tbm1sbWxs bGtrbGtra2pqamlqamlpamlpaWhpaWhnaGdnaGdnaGdnaGZnZ2ZmZ2ZmZ2ZmZ2ZmZ2ZmZ2ZmZ2ZmZ2Zm Z2ZnZ2ZnZ2ZnaGdnaGZoaGdoaGdpaWhpaWhpamlqamlqamlrbGprbGtsbGtsbWxtbm1ubm1ub25vcG9w cXBxcnFycnFzdHJ0dHN0dHNVVlUpKinX19a9vb04ODje393f4N7f4N7e393c3dvb3NrZ2tjX2NbV1tTU 1dPT1NLR0tDQ0c/P0M7NzszMzcvLzMrLzMrJysjIycfIycfHyMbGx8XGx8XGx8XFxsTFxsTFxsTFxsTF xsTFxsTFxsTFxsTFxsTFxsTFxsTGx8XGx8XGx8XHyMbIycfIycfJysjLzMrMzcvMzcvNzszP0M7Q0c/R 0tDS09HU1dPV1tTX2NbZ2tjb3Nrc3dvf4N7f4N7f4N5dXVyHiIaysrJZWlnf4N7f4N7e393c3dva29nY 2dfX2NbV1tTU1dPS09HQ0c/P0M7Oz83MzcvMzcvLzMrJysjIycfIycfHyMbGx8XGx8XFxsTFxsTFxsTD xMLDxMLCw8HDxMLExcPDxMLDxMLDxMLCw8HDxMLDxMLFxsTFxsTFxsTGx8XGx8XHyMbIycfIycfKy8nL zMrMzcvNzszOz83Q0c/Q0c/S09HU1dPV1tTX2NbY2dfb3Nrc3dvf4N7f4N6AgH97fHuysrJaWlnf4N7f 4N7b3Nra29nX2NbW19XU1dPT1NLS09HQ0c/P0M7NzszMzcvLzMrJysjIycfHyMbGx8XGx8XFxsTExcOq q6lVVVR+f36vsK7Cw8HBwsDBwsDBwsDAwb/BwsDBwsDBwsDBwsDBwsDCw8HCw8HDxMLCw8HExcPExcPF xsTGx8XGx8XHyMbIycfJysjLzMrMzcvNzszP0M7Q0c/S09HT1NLV1tTW19XY2dfa29nc3dvf4N6AgYB7 fHuysrJaWlne393c3dva29nX2NbW19XV1tTS09HR0tDP0M7P0M7NzszLzMrLzMrJysjHyMbHyMbGx8XF xsTExcPDxMLCw8GvsK9rbGsqKyoLCwsuLy5tbWyqq6m/wL68vbuUlZRtbW19fXytrqzAwb/Awb/Awb/A wb/BwsDCw8HCw8HDxMLExcPFxsTGx8XHyMbHyMbJysjLzMrLzMrNzszP0M7Q0c/R0tDT1NLV1tTW19XY 2dfa29nd3tyAgYB7fHuysrJZWlnc3dvb3NrX2NbW19XU1dPS09HQ0c/P0M7Oz83MzcvLzMrJysjHyMbH yMbFxsTFxsTExcPCw8HCw8G7vLp1dnR1dnSOj42ys7Knp6Z2d3VLS0sWFxY7OzuIiYi7vLq6uriIiYdB QUE8PTyIiYe2t7U7OzspKSlvcG+8vbvBwsDCw8HCw8HExcPFxsTFxsTHyMbHyMbKy8nLzMrNzszOz83P 0M7R0tDS09HU1dPW19XY2dfb3Np/f357fHuysrJZWVja29nZ2tjW19XU1dPS09HR0tDP0M7NzszMzcvL zMrJysjHyMbGx8XFx8XDxMLDxMLCw8HBwsDBwsC0tbOHh4ZcXVwoKCcICAguLi1ub26vsK62t7V1dnUg ICAiIyJ8fXu6u7m8vbuhoqBPT08uLy6Gh4VfX14ICAgnJyemp6bBwsDBwsDCw8HDxMLDxMLGx8XGx8XI ycfKy8nLzMrMzcvOz83Q0c/R0tDS09HU1dPW19XZ2th+fn17fHuysrJYWFfZ2tjX2NbV1tTS09HR0tDP 0M7NzszLzMrLzMrKy8nIycfGx8XFxsTDxMLCw8HCw8HBwsDAwb+/wL6XmJeAgX+oqae8vbujo6JbW1oT ExMLCwtRUlGmp6W3uLZ1dnQXFxcnJyePkI67vLq7vLqlpqRISEhHR0eQkI8xMTEREhGZmpnAwb/BwsDC w8HCw8HExcPFxsTGx8XIycfKy8nKy8nLzMrOz83P0M7R0tDT1NLV1tTX2NZ9fnx6e3qysrJXV1fX2NbV 1tTU1dPR0tDP0M7Oz83LzMrKy8nKy8nHyMbGx8XExcPExcPBwsDBwsC5urhaW1pERESAgH+0tbSio6Fd XV05OThrbGqrrauvsK5lZWQPDw8LCwtbXFuwsa+traxDQ0IFBQVLS0qtrq25uri6u7mMjYwxMjGRkpBw cG8cHRydnpy/wL7Awb/BwsDCw8HExcPExcPGx8XHyMbIycfKy8nLzMrOz83P0M7Q0c/U1dPW19V8fHt6 enmysrJXV1bV1tTU1dPS09HQ0c/Oz83MzcvLzMrJysjHyMbGx8XExcPDxMLCw8HAwb/Awb+/wL6ur66E hYM0NDMUFBNZWVioqaitrq1kZGMaGhlQUVCmpqWnp6ZBQkECAgIcHBuHiIa2t7VnZ2YFBQUbGxuRkZC5 uri4ubeqq6kyMjGEhYSjpKJLTEuwsa++v73Awb/BwsDCw8HDxMLFxsTHyMbHyMbJysjLzMrMzcvOz83Q 0c/S09HU1dN7fHp5enmysrJWV1bU1dPS09HQ0c/Oz83NzszLzMrJysjIycfHyMbExcPCw8HCw8HAwb+/ wL6+v729vryys7GDg4KMjIuRkpEzMjIKCgpZWVmtrqyrrKpVVVQQEBBiYmGys7J4eHcMDAwDAwNSU1Kx srB/gH8KCgoGBgZ1dXW4ube4uberrKoiIyKQkY+5ubicnZu9vry+v73Awb/BwsDCw8HCw8HFxsTHyMbI ycfKy8nLzMrNzszP0M7R0tDS09F6e3l5eXiysrJWVlbT1NLQ0c/P0M7MzcvLzMrJysjHyMbGx8XExcPD xMLCw8HAwb+/wL6+v728vbu8vbu6u7m6u7mCgoE7PDuOj417fHsWFhUXFxeBgoC1trSVlpQoKCcqKime n52Xl5YcHRwCAgIrKyujo6KLi4oODg4DAwNnaGe3uLa3uLaRkpAjJCO1trW7vLq7vLq8vbu+v72/wL7A wb/Cw8HDxMLFxsTGx8XIycfKy8nLzMrNzszP0M7R0tB6enl4eHeysrJVVVXS09HQ0c/Oz83LzMrKy8nI ycfGx8XFxsTDxMLCw8HBwsC/wL6+v728vbu0tbOAgH+io6G4ube4ubeam5ofHx5KS0qbnJo6OjoDAwNO Tk2ur62urq1FRUUTExOMjIujpKImJiUBAQEZGRmYmZeOkI4NDQ0DAwNvb2+3uLa3uLZHSEd/gH66u7m7 vLq7vLq9vry9vry+v73BwsDCw8HDxMLFxsTHyMbIycfKy8nMzcvOz83Q0c95eXh3eHeysrJVVVTQ0c/P 0M7NzszLzMrJysjHyMbFxsTExcPCw8HBwsC/wL6+v728vbu7vLq7vLqjpKItLS0zMzOMjYu2t7WkpKMj IyMaGhqOjo1ZWlkDAwMtLS2kpaOvsK82NjYLCwuDhIOmp6UkJCQBAQEVFRWbnJuJiokJCQkGBgaKi4q2 t7WZmpg0NDSztLKkpaO6u7m8vbu8vbu+v73Awb/BwsDDxMLExcPGx8XHyMbJysjLzMrNzszP0M54eHd3 eHeysrJUVVTP0M7NzszLzMrJysjHyMbGx8XDxMLCw8HBwsDAwb++v728vbu7vLp6e3lTU1K0tLOxsrFH R0cDAwNFRUSqq6mmp6UkJCMICAh3eHZpamkEBAQdHR2en52jpKIWFxYJCQmHh4ahoqAbGxsAAAAeHh6p qqh7e3oEBAQWFhaqq6m1trQzMzKWlpVhYmGgoZ+6u7m7vLq8vbu+v73Awb/BwsDCw8HExcPGx8XHyMbJ ysjLzMrNzsx3eHd3d3aysrJUVFPOz83MzcvLzMrHyMbGx8XFxsTCw8HCw8HAwb++v729vry7vLq7vLp7 e3oHBwcyMjKrrKqmp6VVVVUDAwMhISGbnJqhoqAcHBwEBARvcG9lZWQDAwIeHh6goZ+AgX8DAwMODg6V lZSSk5EMDAwBAQFCQ0KxsrBcXVwBAQFNTU20tbNxcXBJSUitrqxAQT+3uLa6u7m8vbu9vry/wL7BwsDB wsDDxMLFxsTGx8XIycfLzMrMzct3d3Z2d3aysrJTVFPNzszLzMrJysjGx8XFxsTDxMLBwsDAwb++v729 vry8vbu6u7m5uri4ubeAgH8HBwcqKiqoqadmZ2ZeXl0DAwMXFxeYmZeXmJYPDw8FBQV7fHpOTk0BAQEp KimnqKdGRkUBAQEfHh6lpqVycnECAgICAwJ/f36vsK4wMDAGBgaYmZemp6URERGpqqhvcG99fn26u7m7 vLq8vbu9vry+v73Awb/Cw8HDxMLFxsTHyMbJysjMzct2dnV2dnWysrJTU1LMzcvJysjIycfGx8XExcPD xMLBwsC/wL69vry8vbu7vLq6u7l8fXygoZ+2t7V1dnUDAwM0NDSjpKJISUhjZGMDAwMbGxuhoqCBgoAF BQUNDQ2RkpEnKCcBAQFGR0agoaAODg4AAABFRUWur60+Pj4AAAAfIB+srauampkICAhGRkWztLI2NjZk ZWSys7FERUS3uLa5uri7vLq9vry+v73Awb/Cw8HDxMLExcPGx8XIycfKy8l1dnV1dnWysrJSU1LLzMrJ ysjHyMbFxsTExcPBwsDAwb+/wL69vry8vbu6u7m4ubeJiYgkJCSrrKq0tbNSUlEBAQFVVVSIiYdSUlFZ WlkBAQEvMC+sratdXVwBAQEnKCeQkY8ICAgDAwOBgYBhYWEBAQECAwJ9fn2fn54NDQ0AAABubm2wsa9S UlIJCQmjpKJzc3IaGhqztLJ3eHeKi4m5uri6u7m8vbu9vry+v73Awb/BwsDDxMLFxsTHyMbJysh1dXR1 dXSysrJSUlHLzMrHyMbGx8XExcPCw8HBwsC/wL69vry8vbu7vLq5uri3uLa2t7VAQUBAQECzs7Ktrqwk JCQFBQWJiohZWVlzdHM/Pz8BAQFdXVyqq6kvMC8BAQFoaGdUVFMBAQEmJiWlpqQTExMAAAAfHx6pqqlg YF8BAQEbGxurrKqbnJoGBgZrbGqoqacJCQmBgoGxsrBaWlq4ube5uri7vLq8vbu9vry/wL7BwsDCw8HE xcPGx8XIycd0dXR1dXSysrJSUlHJysjGx8XFxsTDxMLBwsDAwb++v728vbu7vLq6u7m4ubednpx6e3ml paMRERFtbWyys7GLjIoEBAQlJiWpqqg0NDSQkJAdHR0ICAiRkZCWlpULCwsTExOXmJYODg4BAQF+fn1c XFwBAQEBAQFtbWylpqQSEhIBAQF0dHOwsa8uLi42Njays7I+Pj03Nze1trRnaGeoqae4ube6u7m7vLq8 vbu+v73Awb/BwsDExcPFxsTHyMZ0dXN0dHSysrJSUlLIycfGx8XFxsTDxMLBwsDAwb+9vry8vbu7vLq4 ube4ubeur64xMTGvsK5vcG8LCwuYmJexsrBHSEcBAQF1dnWQkZA4ODiGh4UDAwMxMTGrrKpdXl0BAQFl ZmVRUVABAQE3NzacnZsJCQkUFBQgIB+sratZWVgAAAAvLy6vsK5mZ2YQEBCur61+fn0FBQWdnZyen51q amm4ube5uri7vLq8vbu+v73Awb/BwsDDxMLFxsTHyMZzc3J0dHSysrJRUlHIycfGx8XFxsTBwsDAwb++ v728vbu7vLq6u7m4ube3uLa2t7VlZWRra2qys7EtLSwtLS2trqyfn54KCwohISCrq6pZWllra2pEREQC AgJ7fHump6UZGRkhISGPj44DAwMGBgaenp05OTg7OzsGBgaEhISXmJYGBgYEBASio6GVlpUFBQWampmt rqwNDQ1aWlq0tbNFRUS3uLa5uri6u7m7vLq9vry+v73Awb/Cw8HExcPHyMZzc3J0dHOysrJRUlDHyMbF xsTExcPBwsDAwb++v728vbu7vLq5uri3uLa3uLarrKqoqacjIyOrrKqQkY8FBQVrbGqur61UVFQBAQF5 eXilpqQmJiaKiokPDw8oKCepqqhpamkCAgKJiogjIyMBAQFqa2pwcXAlJSVBQUFKSkqsrasoKCcAAAB8 fXurraoRERKDhIKxsrA5OTkaGhmxsrFBQUGsrau4ube5uri7vLq9vry+v73Awb/Cw8HDxMLGx8Vyc3J0 dHOysrJQUVDHyMbFxsTDxMLAwb+/wL69vry7vLq7vLq5uri3uLaztLJ8fHyztLJQUU9lZmSwsbBISEcT ExOio6GgoZ8LCwsrKyqqq6lmZ2Y+Pj5rbGsCAwKAgH+jpKIRERFXV1dSU1IAAAA6OjqbnJsMDAx6enkb GxuqqqlVVVQAAABdXlyvsK4lJSRzc3Owsa9eX14CAgKWl5ZYWFeNjYy4ube5uri6u7m8vbu9vry/wL7B wsDDxMLGx8Vyc3JzdHOysrJRUlHHyMbExcPCw8HAwb+/wL69vry7vLq6u7m4ube3uLapqahZWlmztLKa mpkXFxepqqicnZwLCwtWV1atrqxOTk4DAwOFhoSjpaIRERGEhYMhIiE3ODepqqhGR0YoKCh+f34BAQEU FBSnqKYhISF9fnwXFxeYmZh3eHcBAQFJSUmur60tLSxqa2mwsa93d3YBAQGHiIdub211dnW3uLa4ube5 uri8vbu9vry/wL7BwsDCw8HFxsRyc3JzdHOysrJQUVDGx8XExcPCw8HAwb+/wL69vry7vLq6u7m4ube3 uLarq6owMC+ztLKys7E6OzplZmSvsK5QUVANDQ2hoqCXmJYHBwc7PDuqq6lVVVQ2NjZsbWwFBQWZmphx cXAKCgqVlpUFBQUDAwOYmJZBQUBeX14/Pz94eXiPkI4BAQE+Pj6ur60mJiVra2qvsK59fXwCAgKUlZN9 fXxra2q3uLa4ube5uri8vbu9vry/wL7BwsDCw8HExcNycnFzc3OysrJQUFDGx8XExcPCw8HAwb++v728 vbu7vLq6u7m4ube2t7W1trQXFxekpaOxsrCGh4YYGBipqqiYmZgHBwZgYWCrrKo7OzsGBgaWlpWXmJcM DAyNjYwNDQ1gYV+KiokCAgKHh4YZGRkAAACCgoFZWllHR0daWlpdXlycnZsDAwM+Pj6srasVFRVzdHOu r61qa2oPDw6srat6e3pxcXC2t7W4ube5uri7vLq8vbu+v73Awb/Cw8HFxsRycnFzc3OysrJQUFDGx8XE xcPCw8G/wL69vry8vbu6u7m5uri4ube2t7W1trRAQEBtbm2xsrCwsa8lJSVubm2ur601NTUcHBypqqiD g4ICAgJSUlGpqqg3NzdhYWA5OTgqKimam5oFBQVvb28yMjIAAABzc3Nqamo2NjZqa2pKSkmgoZ8FBQVI SEienp0GBgaDg4Kwsa88PDxERESztLJeXlyIiYi3uLa4ube5uri7vLq8vbu9vry/wL7Cw8HFxsRycnFz c3KysrJQUFDGx8XExcPBwsC/wL69vry8vbu6u7m4ube3uLa2t7W1trR7fHotLi2xsrCwsa9wcW8jIyKr rKpubm0BAQF9fn2pqqgiIiIODg6io6FoaGgzMzNiY2IGBgaWl5UJCQliYmJERUQAAABxcnBycnEuLi5y cnFAQUCfoJ4EBARbW1t9fnwDAwOXmJadnpwLCwqUlZOwsa8pKSmur623uLa3uLa4ube6u7m8vbu+v72/ wL7BwsDExcNycnFzc3OysrJQUFDFxsTDxMLBwsC/wL69vry8vbu6u7m4ube3uLa2t7WAgX+rrKoXFxeW lpWwsa+qqqgWFhaBgoGgoJ8HBwczMzKqq6llZWUBAQFlZWWSk5EXFxd5eXgBAQGDhIIFBQViYmFQUE8A AACAgX9wcXAuLi5xcXBCQkGVlpUBAQF3d3ZVVlQPDw+qq6liY2I4ODeys7BqamlJSUm1trS2t7W3uLa4 ube6u7m8vbu9vry/wL7BwsDExcNycnFzc3OysrJQUFDFxsTDxMLBwsC/wL69vry8vbu6u7m4ube3uLa2 t7VjY2JgYWBcXVxSUlGwsa+ur61dXVw+Pj6trqxEREQEBASLjIqgoJ8LDAsdHR2mp6U3ODd1dXQBAQEj IyMBAQFxcXBTVFICAwKXmJZkZWQ3ODdfX15OT05/gH8DAwObnJssKysuLi6vsK0jIyN7fHqfoJ4aGhqT lJOys7G2t7W3uLa4ube6u7m8vbu9vry/wL7BwsDExcNycnFzc3OysrJQUFDFxsTExcPBwsC/wL69vry8 vbu6u7m4ube3uLa2t7WTk5IJCQmLjIsdHh2nqKaur62goZ8VFRWfoJ6bnJoMDAw5OTmqq6lHR0YBAQF1 dXSXmJeKi4oBAQEAAAAFBQWUlZNMTUwTExOlpqRJSklNTU0yMzJqa2ldXl0fHx+jpKIJCQlaW1qOj40S EhKsratNTk1lZmRhYmGys7G2t7W3uLa4ube6u7m8vbu+v72/wL7BwsDExcNycnFzc3OysrJQUFDGx8XE xcPCw8G/wL69vry8vbu6u7m4ube3uLa2t7W0tbQaGho7OztiYmFpaWivsK6ur61PT09aW1qsrattbWwE BASEhIOPkI4DAwMjJCOmp6Wnp6YYGBgBAQFAQD+oqagzNDNAQUCjpKIXFxdiY2IICAiUlZMvLy5YWVhz dHMCAgKOj41MTEtPT06hoqAnKCeen55aW1q1trS3uLa3uLa4ube6u7m8vbu9vry/wL7Cw8HFxsRyc3Jz c3OysrJQUFDGx8XExcPCw8HAwb++v728vbu7vLq6u7m4ube2t7W0tbNWV1YFBQWTlJI3Nzepqqitrqya m5kWFhWcnZurq6pBQkEkJCSmp6VKSkkBAQFmZ2aoqaiMjYtpaWidn5xjY2IWFxaSk5JaWlkRERFISEgs LCuWl5YJCQmQkY80NDQgISCkpaMSEhKQkY9dXlx8fXxZWVmdnp21trS3uLa4ube5uri7vLq8vbu+v73A wb/DxMLFxsRyc3Jzc3KysrJQUFDGx8XExcPCw8HAwb+/wL69vry7vLq6u7m4ube2t7W1trSIiYgBAQF4 eHeKi4pOT06ur62trqxQUVA7Ozqqq6qio6EkJCRUVFOlpqQ7OzoGBgczMzNKS0k8PDsWFhYuLi2WlpV6 e3oMDAtgYF8KCgp/f35QUFAnJyeOj40DAwNjY2JwcXAnJyeurq1DREOen51OTk60tbS1trS3uLa4ube5 uri8vbu9vry/wL7BwsDCw8HExcNycnFzc3OysrJQUFDGx8XExcPCw8HAwb+/wL69vry7vLq6u7m4ube3 uLa2t7V/gH4AAABvcG+xsrBdXl1gYF+ur62kpaMXFxdiY2Kqq6mWl5UXFxdsbWypqqiAgX9XV1dUVFNo aWiNjYypqqhwcG8QEBBpaWkjIyJGRkaRkpAJCQlwcG8yMjEPDw+jpKIpKShvb26AgH+MjYxQUVCTlJK0 tbO2t7W3uLa4ube5uri8vbu9vry/wL7BwsDCw8HFxsRycnFzdHOysrJQUVDHyMbFxsTDxMLAwb+/wL69 vry7vLq6u7m5uri3uLa2t7VFRkUAAABWV1axsrCvsK4+Pj5cXFutrqyFhoQJCQlsbWuqq6mRkpAbGxpV VlWioqGpqqeVlpR4eXdaW1kpKiktLS11dXQkJCMyMjKen50lJSUkJCNlZWQCAgJfX16IiYcXFxepqqh3 eHebnJo3Nze0tbOztLK2t7W4ube5uri6u7m8vbu9vry/wL7BwsDDxMLGx8Vyc3JzdHOysrJRUVDHyMbF xsTDxMLBwsDAwb++v728vbu7vLq5uri3uLa3uLVtbWwBAQEnJyaio6GLjIqoqacwMDBLS0qqq6lubm0I CAhZWlioqaednpxDQ0IdHR0nJycEBAQEBAQmJiZMTEtCQkEMDAtERESam5oxMjEKCgplZWQJCQkgICCp qqg7OztgYGCoqaednpxCQkGAgX+mp6Wio6G2t7W4ube5uri7vLq9vry+v73Awb/Cw8HExcPGx8Vyc3J0 dHOysrJRUlHHyMbGx8XExcPBwsDAwb++v728vbu7vLq5uri4ube3uLa1trRDQ0IDAwOFhoUvLy95enim p6UwMTA0NTSjpKJyc3EJCQkrKyuKiomrrKqlpaRvb245OTknJyclJSU0NTRWVlWNjoyBgYAdHh0JCQle Xl0QEBAKCgqPkI+Ki4kPDw+io6Gur62AgH9CQkKys7GDhIK2t7W3uLa4ube6u7m7vLq9vry+v73Awb/C w8HExcPGx8Vzc3J0dHSysrJRUlHIycfGx8XFxsTCw8HBwsC/wL69vry8vbu7vLq4ube3uLa2t7Wtr6wo KSgfHx6RkpAWFxaJiYioqacwMC8fHx+Wl5WPkI4nJycDAwMsLCxmZmWMjYyhoaCnp6aioqGOjo1mZmUr KysDAwMmJiZvcG8REREICAh9fX2kpaMcHBxMTUywsa+en54tLi2oqaiCgoGnqKe2t7W3uLa5uri7vLq8 vbu+v72/wL7BwsDDxMLExcPHyMZzdHN0dXSysrJSUlLIycfGx8XFxsTCw8HBwsDAwb+9vry8vbu7vLq6 u7m4ube2t7W2t7WjpKIbGxowMDB9fXwZGRmPj46oqag2NzYQEBB7fHqsrat1dnQuLi4GBgYBAQEEBAQH BwcEBAQCAgIPDw47Ozp4eHdzdHMODg4QEBCCgoGnqKYwMDAODg2fn56mp6UyMjGWl5WLi4qLjIq1trS2 t7W4ube5uri7vLq8vbu+v73Awb/BwsDDxMLFxsTHyMZzc3J0dXSysrJSUlLKy8nHyMbGx8XDxMLCw8HB wsC+v729vry8vbu6u7m5uri3uLa2t7W1trSam5oVFRUyMjJ5eXkXFxZ7fHqrrKpTU1MHBwdAQD+Sk5Gs rauen51+f31paWliYmJiYmJmZmVeXl4+Pj4UFBQDAwM3Nzeam5mcnZssLCwGBgZ7e3qjpKIyMjGFhoSP kI5wcG+ztLKqq6q3uLa4ube6u7m7vLq9vry/wL7BwsDCw8HExcPGx8XIycd1dXR0dXSysrJSU1LLzMrJ ysjHyMbExcPCw8HBwsC/wL69vry9vry7vLq5uri4ubevsK6wsa+1trSZmpgZGhlGRkWLi4oXFxdKSkqk pKOGh4YkJCQEBAQkJSQ6OjkyMjEjIyIREREEBAQBAQEBAQEGBgY4ODeDhIOrrKpsbGwREREODg58fHuU lZMlJSR9fXyGh4ZeX160tbOCg4GztLK4ube5uri8vbu8vbu9vry/wL7BwsDCw8HFxsTGx8XJysh0dXR1 dXSysrJTU1LLzMrJysjHyMbFxsTExcPCw8HAwb++v729vry7vLq6u7m4ube4ubebnJqKi4mztLKjpKI1 NjVOTk6goaA+Pj4RERBcXFybnJtwcXA5OTkaGhoPDw8ODw4YGBgsLSxLS0tzdHKhoqGcnZtjY2IbGxsC AgI5OTmamplpaWgWFhaBgoFpaWhcXFuztLJxcXCoqae4ube5uri6u7m8vbu9vry/wL7BwsDCw8HExcPG x8XHyMbKy8l0dXR1dnWysrJTVFPMzcvLzMrIycfGx8XFxsTDxMLBwsDAwb++v729vry8vbu6u7m4ube4 ubenqKdkZGOBgoGwsa9wcW87PDuNjoyGhoYzNDMLDAszMzNjZGOEhIOWlpWdnpycnZyRkpF3eHdTU1Im JiYGBgUGBgY1NTWGhoWCg4IpKSk4ODiHh4Y/Pz5wcW+trq1YWVifoJ64ube4ube6u7m7vLq9vry+v73A wb/Cw8HDxMLFxsTHyMbIycfLzMp1dnV2dnWysrJUVFPNzszLzMrKy8nHyMbFxsTExcPCw8HBwsC/wL69 vry8vbu7vLq5uri4ube3uLa2t7V+f308PDxubm2enp1eXl1CQkJ6e3qWlpVubm1HR0YnJycUFBQNDQ0K CgoHBwgMDAwcHBw9PT1pammQkZBycnIuLi40NDR6e3laW1oxMTGUlZOZmZg+Pz6dnpy3uLa4ube6u7m7 vLq8vbu+v73Awb/BwsDCw8HDxMLFxsTHyMbKy8nLzMp3d3Z2dnaysrJUVFPP0M7MzcvKy8nHyMbGx8XF xsTCw8HBwsDAwb+/wL69vry7vLq6u7m5uri4ube3uLa2t7WvsK5kZWQcHBxDQ0N1dnRrbGtDRENEQ0Rn aGeIiYednpyhoaCfn56bnJqTlJJ+f35bXFszMzMqKipaW1p6e3pQUVAgICBrbGqur61lZWU0NDSlpqS3 uLa3uLa5uri6u7m8vbu9vry/wL7Awb/BwsDDxMLFxsTGx8XIycfKy8nMzct3eHd3d3aysrJUVVTQ0c/N zszMzcvKy8nHyMbGx8XExcPDxMLCw8HAwb++v729vry8vbu7vLqxsrCbnJq0tLK3uLa2t7Wur61qamkf Hx8JCQkwMDBTU1JUVFRRUVFMTExGR0ZDQ0JERENPT05fYF9ra2ptbm1TVFIhISEjIyNrbGutrqyCg4Il JSVUVVSys7G4ube4ube5uri7vLq8vbu9vry+v73Awb/Cw8HCw8HExcPGx8XHyMbKy8nMzcvOz813eHd3 d3eysrJVVVXR0tDP0M7NzszLzMrJysjHyMbFxsTExcPCw8HBwsDAwb++v729vry8vbu6u7mkpaNXWFcy MjFQUFCOj422t7WztLKNjo1TVFIhISEHBwcCAgIKCgoXFxckJCQpKSkeHh4ODw4QEBAuLi5dXVyTk5Kw sbCBgoAuLy4pKSiOj423uLa3uLa4ube6u7m7vLq8vbu9vry+v73Awb/Cw8HCw8HExcPGx8XHyMbJysjL zMrMzcvP0M55eXh4eHeysrJVVlXS09HQ0c/Oz83MzcvLzMrJysjGx8XFxsTExcPCw8HBwsC/wL6+v729 vry8vbu2t7W5urigoaBUVVQSEhIqKipdXl2Ki4mpqqiztLKmp6aNjox5eXlvb25ub250dHSDhIKZmpiu r620tbOjo6JnZ2ciIiIpKSl6e3q0tbO3uLa4ube5uri6u7m7vLq8vbu9vry+v73Awb/BwsDCw8HExcPF xsTHyMbJysjKy8nMzcvOz83Q0c95eXh4eHeysrJWVlXT1NLR0tDQ0c/NzszLzMrKy8nHyMbGx8XGx8XE xcPCw8HBwsDAwb++v729vry4ubdlZmWho6G6u7mxsrB6enk8PDsLCwsGBgYbGxs0NDNJSklYWVhjY2Jn aGdmZ2ZgYF9TU1M9Pj0iIiIjJCNUVVSTk5G3uLW3uLa4ube4ube5uri6u7m3uLa9vry9vry+v73Awb/B wsDCw8HExcPGx8XGx8XIycfKy8nLzMrOz83Q0c/S09F6enl4eHiysrJXV1bV1tTT1NLR0tDP0M7NzszL zMrKy8nHyMbGx8XGx8XExcPCw8HCw8HAwb+/wL69vrytrqxCQ0JMTEyYmZe5uri5uriztLKNjoxkZWNE REMsLCwfHx8aGhogICAvMC9HR0dhYmCCgoCmp6W3uLa3uLa4ube4ube5uri5uri7vLqio6FpaWmNjoy+ v72/wL7BwsDCw8HCw8HExcPFxsTHyMbIycfKy8nMzcvNzszP0M7R0tDU1dN7e3p5eXiysrJXV1fX2NbV 1tTS09HQ0c/P0M7NzszLzMrJysjHyMbHyMbGx8XDxMLCw8HCw8HAwb+/wL6+v727vLp7e3olJSQiIyJT VFN7fHuZmZipqqiwsbC0tbOztbK0tbK2t7S4ube4ube4ube4ube4ube4ube4ube0tbOio6GAgYBYWFdD RENcXVygoaC+v72/wL7Awb/Cw8HCw8HExcPGx8XGx8XIycfKy8nMzcvNzszP0M7R0tDS09HV1tR8fHt5 enmysrJYWFfY2dfW19XT1NLR0tDQ0c/Oz83MzcvLzMrJysjHyMbGx8XFxsTExcPCw8HBwsDBwsC/wL6+ v72+v727u7qWlpVgYV81NTUVFRULCwsNDQ0QEBARERESExIXFxcpKik7OztERURGR0ZBQUA0NDQjIyMT ExMdHR1aWlmcnZy5uri+v72+v73Awb/BwsDBwsDCw8HExcPGx8XGx8XIycfKy8nLzMrNzszP0M7Q0c/S 09HU1dPV1tR8fHt6enmysrJYWVja29nX2NbW19XT1NLS09HQ0c/P0M7NzszLzMrJysjIycfHyMbGx8XF xsTDxMLCw8HBwsDBwsDAwb+5urilpqS5uri+v728vbuys7GnqKagoZ+en52jpKKtrqyrrKqkpaObnJuT lJKPkI6RkZCbm5qtrqyjpKOMjYuXmJa2t7XAwb/BwsDCw8HCw8HDxMLFxsTGx8XIycfIycfKy8nMzcvN zszP0M7Q0c/S09HU1dPW19XY2dd9fnx7e3uysrJZWlnb3NrZ2tjX2NbV1tTU1dPS09HQ0c/Oz83NzszL zMrLzMrIycfHyMbGx8XFxsTDxMLCw8HCw8HBwsDAwb+ys7GDhINtbmxjY2JhYWBoaWdyc3J9fn2EhYSI iIeIiIeDg4J4eHdbXFtOTk1+fn2EhYSFhoSfoJ6+v73Awb/Awb/BwsDCw8HDxMLDxMLFxsTGx8XHyMbJ ysjKy8nLzMrNzszP0M7Q0c/S09HU1dPV1tTX2NbZ2th+fn17fHuysrJaWlne393a29nZ2tjW19XV1tTU 1dPS09HP0M7P0M7NzszLzMrKy8nJysjHyMbGx8XFxsTExcPDxMLCw8HBwsDBwsDAwb/Awb+/wL25urit rqyfoJ6VlpSQkY+PkI6MjYuMjYuWl5WlpqS1trW8vbuxsrCoqae/wL7Awb/BwsDBwsDCw8HExcPFxsTF xsTGx8XHyMbJysjLzMrLzMrNzszP0M7R0tDS09HU1dPW19XX2NbZ2tjb3Np+f357fHuysrJaWlnf4N7c 3dvb3NrY2dfX2NbW19XT1NLS09HQ0c/P0M7Oz83MzcvLzMrKy8nIycfHyMbGx8XGx8XFxsTDxMLDxMLC w8HCw8G6u7mdnpyGh4VxcnBrbGpub21ub21pamlhYWBVVVNHSEZKS0pjY2KNjY27vLrCw8HDxMLDxMLE xcPFxsTGx8XHyMbHyMbIycfLzMrLzMrMzcvP0M7P0M7Q0c/S09HU1dPW19XX2NbZ2tjb3Nrd3tyAgYB7 fHuysrJaWlnf4N7e393d3tzb3NrZ2tjX2NbV1tTU1dPS09HR0tDQ0c/Oz83NzszMzcvKy8nJysjHyMbH yMbGx8XFxsTFxsTExcPExcPDxMLDxMLDxMLDxMG0trKhoaCUlZSRkZCUlZSio6G4ubbDxMLCw8HDxMLD xMLExcPFxsTFxsTFxsTHyMbHyMbIycfJysjKy8nMzcvMzcvP0M7Q0c/R0tDS09HU1dPW19XX2NbZ2tjb 3Nrd3tzf4N6AgYB7fHuzs7NMTEvf4N7f4N7f4N7d3tzb3NrZ2tjW19XW19XV1tTT1NLR0tDQ0c/P0M7N zszMzcvLzMrKy8nJysjIycfIycfGx8XGx8XFxsTFxsTFxsTFxsTFxsTFxsTExcPDxMLDxMLDxMLExcPF xsTExcPFxsTFxsTFxsTGx8XGx8XGx8XHyMbIycfKy8nLzMrMzcvMzcvOz83P0M7Q0c/S09HU1dPV1tTV 1tTX2NbZ2tjb3Nrd3tze393f4N5zc3J9fn3f394fHx+Ojo29vr2+v76+v729vry7vLu5uri4ubi3uLa2 trW1tbSztLKys7GxsrCxsbCvsK6ur62trq2trqysrayrrKqrrKqqq6mqq6mpqqipqqipqqipqqipqqip qqioqaepqqipqqipqqipqqipqqipqqiqq6mqq6mrrKqrrKqtraytrqytrqyur62vsK6xsbCxsrCys7Gz tLK1tbS2t7W3uLa4uLe6u7m7u7q8vbu+v72+v76goJ8gICC3uLfi4+HCwsJOTk48PDs8PDs8PDs8PDs8 PDs8PDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozo6Ozo6Ozo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6 Ojk5Ojk6Ojk5OTk5OTk5OTk5OTk5OTk6Ojk5Ojk6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6 Ozo6Ozo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs8PDs8PDs8PDs8PDs8PDtERESlpaTf4N4AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

FpMV/src/FpMV/FpMV/Form2.cs

using System; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows; using System.Windows.Forms; namespace FpMV { public partial class Form2 : Form { public int width; public int height; public int fileSize; public string chosenFile; public string fileNamePrefix; public Form2() { InitializeComponent(); } public Form2(string chosenFile, string fileNamePrefix) { InitializeComponent(); this.fileNamePrefix = fileNamePrefix; this.chosenFile = chosenFile; praseWidthHeightFromFileName(); } private void Form2_Load(object sender, EventArgs e) { this.MouseHover += new EventHandler(Form2_MouseHover); } private void Form2_MouseHover(object sender, EventArgs e) { this.Activate(); } private void getFileSize() { this.fileSize = (int)new System.IO.FileInfo(this.chosenFile).Length; } private void praseWidthHeightFromFileName() { string[] arr1 = this.fileNamePrefix.Split('_'); if (arr1.Length == 2) { string[] arr2 = arr1[1].Split('x'); if (arr2.Length == 2) { imgWidthTextBox.Text = arr2[0].ToString(); imgHeightTextBox.Text = arr2[1].ToString(); } } } private void button1_Click(object sender, EventArgs e) { int num; getFileSize(); if (imgWidthTextBox.Text == "" || imgHeightTextBox.Text == "") { MessageBox.Show("Image width and/or image height can't be empty!", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (!(int.TryParse(imgWidthTextBox.Text, out num)) || !(int.TryParse(imgHeightTextBox.Text, out num))) { MessageBox.Show("Image width and/or image height need to be numeric!", "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if ((Convert.ToInt32(imgWidthTextBox.Text) * Convert.ToInt32(imgHeightTextBox.Text)).CompareTo(this.fileSize) != 0) { int w = Convert.ToInt32(imgWidthTextBox.Text); int h = Convert.ToInt32(imgHeightTextBox.Text); int dim = w * h; String errMsg = "Incorrect values for width and height given! Width multiplied by height must equal the size of the image file (number of bytes)!\r\n" + w + " X " + h + " does not equal " + this.fileSize.ToString() +"!"; MessageBox.Show(errMsg, "Invalid Range Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { this.width = Convert.ToInt32(imgWidthTextBox.Text); this.height = Convert.ToInt32(imgHeightTextBox.Text); this.Close(); } } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void label4_Click(object sender, EventArgs e) { } private void label1_Click(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } } }

FpMV/src/FpMV/FpMV/Form2.Designer.cs

namespace FpMV { partial class Form2 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2)); this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.imgWidthLabel = new System.Windows.Forms.Label(); this.imgHeightLabel = new System.Windows.Forms.Label(); this.imgHeightTextBox = new System.Windows.Forms.TextBox(); this.imgWidthTextBox = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(107, 68); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 3; this.button1.Text = "OK"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // button2 // this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.button2.Location = new System.Drawing.Point(197, 68); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 23); this.button2.TabIndex = 4; this.button2.Text = "Cancel"; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new System.EventHandler(this.button2_Click); // // imgWidthLabel // this.imgWidthLabel.AutoSize = true; this.imgWidthLabel.Location = new System.Drawing.Point(12, 27); this.imgWidthLabel.Name = "imgWidthLabel"; this.imgWidthLabel.Size = new System.Drawing.Size(67, 13); this.imgWidthLabel.TabIndex = 5; this.imgWidthLabel.Text = "Image width:"; this.imgWidthLabel.Click += new System.EventHandler(this.label4_Click); // // imgHeightLabel // this.imgHeightLabel.AutoSize = true; this.imgHeightLabel.Location = new System.Drawing.Point(141, 27); this.imgHeightLabel.Name = "imgHeightLabel"; this.imgHeightLabel.Size = new System.Drawing.Size(71, 13); this.imgHeightLabel.TabIndex = 6; this.imgHeightLabel.Text = "Image height:"; this.imgHeightLabel.Click += new System.EventHandler(this.label1_Click); // // imgHeightTextBox // this.imgHeightTextBox.AcceptsReturn = true; this.imgHeightTextBox.AcceptsTab = true; this.imgHeightTextBox.Location = new System.Drawing.Point(218, 24); this.imgHeightTextBox.MaxLength = 4; this.imgHeightTextBox.Name = "imgHeightTextBox"; this.imgHeightTextBox.Size = new System.Drawing.Size(54, 20); this.imgHeightTextBox.TabIndex = 2; this.imgHeightTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; // // imgWidthTextBox // this.imgWidthTextBox.AcceptsReturn = true; this.imgWidthTextBox.AcceptsTab = true; this.imgWidthTextBox.Location = new System.Drawing.Point(81, 24); this.imgWidthTextBox.MaxLength = 4; this.imgWidthTextBox.Name = "imgWidthTextBox"; this.imgWidthTextBox.Size = new System.Drawing.Size(54, 20); this.imgWidthTextBox.TabIndex = 1; this.imgWidthTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.imgWidthTextBox.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // // Form2 // this.AcceptButton = this.button1; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.button2; this.ClientSize = new System.Drawing.Size(284, 105); this.Controls.Add(this.imgWidthTextBox); this.Controls.Add(this.imgHeightTextBox); this.Controls.Add(this.imgHeightLabel); this.Controls.Add(this.imgWidthLabel); this.Controls.Add(this.button2); this.Controls.Add(this.button1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "Form2"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Set RAW Dimension"; this.TopMost = true; this.Load += new System.EventHandler(this.Form2_Load); this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Label imgWidthLabel; private System.Windows.Forms.Label imgHeightLabel; private System.Windows.Forms.TextBox imgHeightTextBox; private System.Windows.Forms.TextBox imgWidthTextBox; } }

FpMV/src/FpMV/FpMV/Form2.resx

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 AAABAAEAQEAAAAEAGAAoMgAAFgAAACgAAABAAAAAgAAAAAEAGAAAAAAAAAAAAGAAAABgAAAAAAAAAAAA AAAZGBkRERFoaGh5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5 eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5 eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5 eXl5eXlpaWkbGxsgHyEODg7Ozs6tra6EhIWDg4SDg4SEg4SFhYaGhYaHhoeIiImJiImJiYqKiouLioyM i4yMi42MjI2OjY6OjY6Ojo+Pjo+Pj5CQkJGQkJGQkJGQkJGRkJGRkJKRkJGRkZKRkZKRkZKRkZKRkZKR kJGRkJGRkJGQkJGRkJGPj5CQj5CPjo+Pjo+Ojo+OjY6NjY6MjI2Mi42Mi4yLiouKiYqJiImIiImIh4iH hoeGhYaFhIWDg4SDg4SEhIWsrK3Q0NAfHiBOTk69vb0gHyEgHyEgHyEhICIjIiQkIyUmJScoJykqKSsr KiwtLC4uLS8vLjAwLzEyMTMzMjQ0MzU0MzU2NTc3Njg3Njg4Nzk4Nzk5ODo5ODo5ODo6OTs6OTs6OTs6 OTs6OTs6OTs6OTs6OTs6OTs6OTs5ODo5ODo5ODo4Nzk3Njg3Njg1NDY0MzUzMjQzMjQxMDIwLzEvLjAt LC4sKy0rKiwpKConJiglJCYkIyUjIiQgHyEgHyEgHyG6urphYWJZWVmenp4gHyEgHyEhICIjIiQlJCYn JigoJykqKSssKy0uLS8vLjAwLzExMDIzMjQzMjQ0MzU2NTc3Njg4Nzk4Nzk5ODo5ODo6OTs7Ojw7Ojw8 Oz08Oz09PD48Oz08Oz08Oz08Oz08Oz08Oz08Oz08Oz07Ojw6OTs7Ojw5ODo5ODo4Nzk3Njg3Njg1NDY0 MzUzMjQyMTMxMDIvLjAuLS8tLC4rKiwqKSspKConJiglJCYjIiQgHyEgHyGbm5xsbG1ZWVmenZ4gHyEh ICIkIyUlJCYoJykpKCorKiwsKy0uLS8vLjAwLzEzMjQzMjQ1NDY2NTc3Njg4Nzk5ODo6OTs6OTs7Ojxf X2Czs7SFhYZRUFI+PT8+PT8+PT8/PkA/PkA/PkA+PT8+PT8+PT8+PT89PD49PD48Oz09PD47Ojw7Ojw6 OTs5ODo5ODo4Nzk3Njg1NDY0MzUzMjQyMTMwLzEvLjAtLC4sKy0qKSspKConJiglJCYjIiQgHyGbm5xs bG1ZWVmenZ4hICIjIiQlJCYoJykpKCoqKSstLC4uLS8wLzExMDIyMTM0MzU0MzU2NTc4Nzk4Nzk5ODo6 OTs7Ojw8Oz09PD5PTlCRkZLS0tL5+fnV1dWWlZZVVVdAP0FEQ0Vubm+ZmJmHhohTUlQ/PkA/PkA/PkA+ PT8+PT89PD49PD48Oz07Ojw6OTs5ODo4Nzk4Nzk2NTc0MzUzMjQyMTMwLzEvLjAuLS8sKy0qKSspKCon JigkIyUiISObm5xsbG1ZWVmfnp8jIiQlJCYoJykqKSsrKiwtLC4vLjAwLzExMDIzMjQ0MzU2NTc4Nzk5 ODo6OTs6OTs7Ojw9PD4+PT9KSUuVlZaSkpN3d3hQT1FUU1WEhIawsLHr6uvHx8d5eHpEQ0ZEQ0V1dXbA v8DGxcZ4d3lQT1DS0tPb29uQj5BCQkM+PT89PD49PD47Ojw6OTs6OTs4Nzk4Nzk1NDY0MzUzMjQyMTMw LzEuLS8tLC4rKiwpKConJigkIyWdnJ1sbG1ZWVmfn6AlJCYmJScpKCorKiwtLC4uLS8wLzEyMTM0MzU0 MzU2NTc4Nzk5ODo6OTs8Oz08Oz09PD4+PT8/PkBLSkxzcnSfnp/U1NT5+fnW1daUlJVRUFJJSEqJiIng 3+De3t6Eg4RFREZDQkRdXF2wsLHR0dJ4eHmko6T5+fnV1dVVVFY+PT8+PT89PD48Oz07Ojw5ODo5ODo3 Njg1NDY0MzUzMjQxMDIvLjAuLS8sKy0qKSspKComJSednZ5tbG1ZWVmgn6AmJScoJykqKSstLC4uLS8v LjAyMTM0MzU0MzU1NDY3Njg5ODo6OTs8Oz09PD49PD4+PT8/PkBAP0FubW+GhYdaWVpDQkRbWluioaLt 7e329vavrrBZWFpIR0iLiozq6urY19hvbnBEQ0VEQ0VaWVu5ubm3trdvbm/S0tPq6upfX2A/PkA+PT89 PD48Oz07Ojw6OTs4Nzk3Njg1NDY0MzU0MzUxMDIvLjAuLS8sKy0qKSsnJiienZ5ubW5ZWVmhoaEoJykq KSsrKiwuLS8wLzEyMTM0MzU1NDY2NTc4Nzk5ODo7Ojw8Oz0+PT8+PT9IR0mwsLDAwMCEg4RKSUtbWlyj oqPLy8uXl5hUU1VOTU+bmpvx8fH29vakpKRNTU5TUlPBwcH7+/uzsrNQT1BGRUdFREZ1dXbQ0NFpaWqT k5Ti4uJaWltAP0E/PkA+PT89PD47Ojw6OTs5ODo4Nzk3Njg1NDY0MzUxMDIwLzEuLS8rKiwpKCqfnp9u bm9ZWVmioaIqKSsrKiwtLC4vLjAxMDIzMjQ0MzU2NTc4Nzk5ODo7Ojw9PD49PD4/PkA/PkBBQEJRUFF4 eHnJyMnw8PCpqalYV1lQT1Cbm5zn5+ewr7BaWVtYV1m/v8D9/f3k5OR2dXZJSEqcnJ37+/vj4+NramxH RkhGRUdXVljT0tN1dHVdXF6zs7RKSUtBQEI/PkA+PT89PD48Oz06OTs4Nzk4Nzk2NTc0MzUzMjQxMDIv LjAtLC4rKiyfn6BvbnBZWVmioqIrKiwtLC4vLjAxMDIzMjQ0MzU2NTc4Nzk6OTs7Ojw9PD4+PT8/PkBA P0FCQUNCQUNNTE6AgIF2dndtbG7NzM329vanpqdSUVNUU1Wrq6vw8PGdnJ1MS02KiYv19fX8/PyqqqtN TE6EhIX4+Pj39/eEhIVHRkhIR0lZWFrg4OBnZmdHRkheXV9DQkRBQEJAP0E/PkA9PD49PD47Ojw5ODo3 Njg1NDY0MzUyMTMwLzEvLjAsKy2goKBwb3BZWVmjoqMsKy0vLjAwLzEzMjQ0MzU2NTc4Nzk5ODo7Ojw9 PD49PD4/PkBAP0FCQUNDQkRDQkRFREZFREZ/f4DIx8hwcHGEg4Ts7Ozo6Oh9fH5KSUtramza2tvU1NVe XV9qamvo5+j9/f3S0tNZWFp5eHr19fX8/PyQj5BIR0lIR0l5eHnV1dVGRUZEQ0VEQ0VCQUNBQEJAP0E+ PT89PD48Oz06OTs5ODo3Njg1NDYzMjQyMTMwLzEuLS+goKFxcHFZWVmjo6QuLS8vLjAxMDIzMjQ2NTc3 Njg5ODo6OTs8Oz09PD4+PT9AP0FBQEJDQkRNTE6GhodhYGJGRUdIR0lmZWbk5OS2tbZiYmPHx8j9/f2x sLFQT1FRUFK/v7/s7Oxwb3FeXV/e3t7+/v7l5OViYWN1dXb19fX8/PyHh4dIR0lIR0nFxcVycnNFREZE Q0VDQkRCQUNCQUNAP0E+PT89PD48Oz06OTs4Nzk3Njg1NDYzMjQxMDIvLjChoaFxcXJZWVmko6QvLjAx MDIzMjQ1NDY2NTc4Nzk6OTs8Oz0+PT8/PkBAP0FCQUNDQkRGRUdFREZcW13U1NTPz891dXZKSUtdXF7e 3t/l5eVxcHKoqKn9/f3R0NFaWVtQT1HQ0NHz8/N4d3hcW13g3+D+/v7n5+dfX2B7e3z5+fn39/dtbG1J SEpxcHLBwcFQUFFbWlxEQ0VEQ0VDQkRBQEJAP0E+PT89PD47Ojw5ODo4Nzk2NTc0MzUzMjQwLzGioqNy cXJZWVmkpKUwLzEyMTM0MzU2NTc4Nzk5ODo8Oz09PD4/PkBAP0FBQEJDQkREQ0WUk5WsrK1LSkxOTU+7 u7v8/Py6urtUU1VbWlzg3+D29vaFhYaampv9/f3f3t9fXmBgX2Hu7u709PRzc3RiYWPq6ur////b29tT U1SNjI39/f3h4eJRUFJKSUva2tpdXF6npqdYV1lFREZEQ0VCQUNBQEI/PkA+PT89PD47Ojw5ODo3Njg2 NTczMjQxMDKioqNzcnNZWVmlpKUxMDIzMjQ0MzU4Nzk5ODo6OTs9PD49PD4/PkBBQEJCQUNEQ0VFREaJ iIr5+fnNzc5TUlRcW12trK39/P3e3t5iYWNgX2Hn5+f7+/uLiougoKH9/f3e3t5cW12Hhof+/f7u7u5m ZWZycnP4+Pj+/v6zs7RNTE6tra7+/v6mpqdLSkyenZ6op6hZWFq7u7tGRUdEQ0VDQkRCQUNAP0E+PT8+ PT88Oz06OTs4Nzk3Njg0MzUzMjSjoqNzc3RZWVmlpaYyMTM0MzU3Njg5ODo6OTs8Oz0+PT8/PkBBQEJC QUNDQkRFREZGRUdHRkiBgIL5+fnU1NRVVFaenp+joqP9/f3o5+hkY2VtbG3y8vL6+vp+fX+5ubn+/v7S 0dJUU1XDw8P+/v7c3NxWVVaWlpf+/v78/Px2dXdRUFLZ2dn29vZeXV9jYmTt7e1PTlCenp50c3VFREZE Q0VDQkRCQUNBQEI/PkA9PD47Ojw5ODo4Nzk2NTczMjSjo6R0c3RZWVmmpaYzMjQ1NDY3Njg5ODo7Ojw8 Oz0+PT9AP0FCQUNDQkREQ0VGRUeOjo9dXF5JSEqNjI39/f3JyMldXV63t7ienp/9/f3i4eJcW1yDgoP8 /Pzw8PBra2zd3t7+/v6ysbJkY2T19vX+/v6ysrNRUFLLy8v////Y2NhQT1Fvbm/6+vqtrK1MS03Y2NiN jY5QT1G5ubpHRkhFREZEQ0VDQkRBQEI/PkA9PD48Oz06OTs4Nzk3Njg1NDako6R0dHVZWVmmpqc0MzU2 NTc4Nzk6OTs7Ojw+PT9AP0FBQEJDQkREQ0VGRUdHRkh9fH3a2tpSUVNLSkyzs7T+/v6kpKV9fH2qqqqr qqz+/v7KystTUlSqqar+/v7R0NFzcnT6+vr8/Px2dXapqar+/v78/Px4d3lnZmj39/f+/v6GhodPTlC6 urrx8fFTUlOdnJ3Z2NlJSEqWlpdmZWdHRkhFREZDQkRCQUNAP0E/PkA+PT88Oz06OTs4Nzk1NDakpKV1 dHVZWVmnpqc0MzU4Nzk5ODo7Ojw9PD4+PT9AP0FCQUNEQ0VFREZGRUdIR0lIR0nFxMW7u7xMS01TUlTh 4eH6+vpxcHGsrK2GhYbHx8f9/f2bm5xVVFbY19j+/v6Pj5C1tbb+/v7R0NFeXV/z8vP////Z2NlTUlSs q6z+/v7c29xQT1FubW/8/PyGhYdhYGL6+vtwb3FSUVKioqNHRkhGRUdEQ0VDQkRCQUM/PkA+PT88Oz06 OTs5ODo3NjikpKV1dXZZWVmnpqc1NDY4Nzk5ODo8Oz09PD4/PkBBQEJCQUNEQ0VFREZHRkhtbG6CgYJd XF7x8fGOjo9NTE55eHn9/P3U1NRWVVfPz89sbG3m5ub29vZpaGpubm/4+Pjn5+doZ2n39/f+/v53d3iu rq7////+/v6Ih4heXV/19PX+/v6Af4BQT1Hf39+7urtNTE7Q0NG6urpKSUuioqJOTU9HRkhFREZDQkRC QUNAP0E/PkA9PD47Ojw5ODo3NjikpKV2dXdZWVmnpqc3Njg5ODo6OTs8Oz0+PT8/PkBCQUNDQkRFREZH RkhIR0lTUlTQ0NBNTE6WlZbz8/NkY2RPTlC/v7/+/v6Dg4RzcnPFxMV/foD9/f3HxsdUU1Wqqqv+/v6Q j5C5ubr+/v69vb1qaWv7+/vq6urV1dVTUlS0s7T////DwsNQT1Gop6jk5ORNTE6QkJH39vdXVlhwb3CI h4hHRkhGRUdEQ0VDQkRBQEI/PkA9PD48Oz06OTs4NzmmpaZ2dXdZWVmnp6g3Njg5ODo7Ojw+PT8/PkBB QEJDQkREQ0VFREZHRkhIR0lJSEqioaKPjo9OTU/Y2NjOzs5QT1FlZGb4+PjY2NhTUlStra6OjY7Dw8T9 /f17enxcXF3t7e3W1tZ4d3j////09PRbW1zS0tPAwMD7+/twb3BycXP9/f309PRVVFZ3d3f8/PtWVVda WVv6+vqWlpdMS026urtIR0lGRUdFREZEQ0VCQUNAP0E+PT89PD46OTs4NzmmpaZ2dndZWVmop6g4Nzk6 OTs8Oz0+PT8/PkBBQEJDQkREQ0VGRUdIR0lIR0lVVFZZWFrf399RUFJzcnT8/PyOjY9RUFKzsrP+/f5/ f4BcW13c3Nx2dnf09PTPz9BVVFafn5/8/Pxsa2zo6Oj+/v6KiYubmpvOzs7Ly8uoqKlUU1Xk5OT+/v51 dHZWVVj6+vptbG5OTU/W1tbZ2dlLSkzIyMlKSUtHRkhGRUdEQ0VCQUNAP0E/PkA9PD47Ojw5ODqmpqd3 dndZWVmoqKk4Nzk6OTs8Oz0/PkBAP0FCQUNEQ0VFREZHRkhIR0lUU1V+fn5MS021tbaUlJVPTlC9vb7q 6epZWFpjY2T4+PjNzc5UU1WioaK6ubqcm5z9/f13dndfXmD19fWenZ65uLn///+5ublsbG3z8/OJiYrZ 2dlUU1W5uLn///+Uk5RRUFLq6up8e3xPTlCxsbL8/PxZWFq5ubphYWJIR0lGRUdFREZDQkRCQUNAP0E9 PD48Oz05ODqmpaZ3dndZWVmop6g4Nzk7Ojw9PD4/PkBAP0FCQUNEQ0VGRUdHRkhIR0lhYGKdnZ5MS01q aWvm5uZUVFVmZWf4+PiioqJSUVO5uLn9/f1xcXJgX2Hx8fF1dHXm5ua/vr9WVVfExMXMzMyOjY/+/v7h 4eFWVVfs7Ox5eHrw8PBcW12Xlpj+/v6np6dSUVPj4+OEg4VPTlCampv+/v5lZWajo6R4d3lIR0lHRkhF REZDQkRCQUNAP0E+PT89PD46OTumpqd3dndZWVmoqKk5ODo7Ojw9PD4+PT9BQEJCQUNEQ0VGRUdIR0lJ SEpeXV/JyMlMS01NTE7My8yUk5RRUFK2trfv7u9aWVtubW/8/Py8u7xVVFa0tLXAwMGdnZ729vZgX2Gb mpzy8vJsa2z9/f37+/tdXF7MzMyTk5POzs95eHqAf4H+/v6xsbFSUVPq6uqDg4NPTlCVlZb8/PxZWFqW lZaBgYJIR0lHRkhFREZDQkRCQUNAP0E+PT89PD47Ojympqd3d3hZWVmoqKk5ODo7Ojw9PD4/PkBBQEJD QkREQ0VGRUdIR0lJSEpNTE7s7OxWVVdOTU+Af4Dk5ORUU1Vramz8/PyYl5hUU1XMzMz39/djYmRtbW72 9vZvbm/4+PiVlZaBgYL9/f1tbG7y8vL+/v5xcHG0tLSqqqq0tLWUk5VxcXL+/v6xsbFWVVf5+fl6entR UFKop6ji4uJMS02ZmJl7entIR0lHRkhFREZEQ0VDQkRBQEI/PkA9PD46OTumpqd3d3hZWVmoqKk5ODo7 Ojw9PD5AP0FCQUNDQkRFREZGRUdIR0lJSEpKSUvHx8eLioxOTU9QT1Hg4OCLi4xRUFLS0tLd3N1VVFeE g4T9/f2mpqdWVVfR0dGVlJbR0dHMy8xtbW7+/v6EhITa2tv+/v5/fn+ko6S7u7yko6Snpqdramz+/v6m pqZvb3D+/v5ramxQT1HY2NilpaZMS023trhiYWNIR0lHRkhGRUdEQ0VDQkRBQEI/PkA8Oz06OTunpqd4 d3hZWVmoqKk5ODo7Ojw+PT9AP0FCQUNEQ0VFREZHRkhIR0lJSEpKSUuMi43Ly8xOTU9PTlCWlZfX19hS UVObm5v9/f17entWVVfm5ubr6+xbWlujoqPBwcGpqKn19fVoaGn+/v6QkJDIyMn+//6Af4KcnJ3Dw8Od nZ6wsLBubm/+/v6Tk5SVlJX7+/tXVlhzc3Tz8/NbWlxVVFbZ2NlKSUtIR0lIR0lHRkhEQ0VDQkRBQEI/ PkA+PT86OTumpqd3d3hZWVmpqKk5ODo8Oz0+PT9AP0FCQUNDQkRFREZHRkhIR0lJSEqHhodVVFbt7e1j YmNPTlBXVljv7+92dndkZGX7+/vFxcVVVFajoqP+/v6SkZJ1dHbh4OGSkpL9/f17enz+/v6Pj5C+vb7+ /v5wb3Kenp7Dw8Ofnp+urq57enz+/v53d3i9vb7j4+NRUFKysbKysrNOTU+tra6fn6BKSUtJSEpIR0lH RkhEQ0VDQkRBQEI/PkA+PT86OTunpqd3d3hZWVmpqKk5ODo8Oz0+PT9AP0FCQUNDQkRFREZHRkhIR0lJ SEqlpaWbm5uqqaqnp6dPTlBRUFKqqqu6ubpTUlTCwsL6+vpubW9jY2T4+Pnd3N1XVljLy8uRkZH+/v7j 4+P9/f1/f4C7u7z6+vpbWlyrq6y5ubmysbKgoKGRkZL29vZZWFrm5ua+vr5VVFbs7Oxwb3Fvb3Dj4uNl ZGZKSUtJSEpIR0lHRkhEQ0VDQkRBQEI/PkA+PT86OTunpqd3d3hZWVmoqKk5ODo7Ojw+PT9AP0FCQUNE Q0VFREZHRkhIR0lJSEp0c3X19fVycnPj4+NVVFZRUFJhYWLs7OxbWlxpaGn19fW/v8BVVFbBwMH9/f2D goRlZGZ/f4D+/v7////29vZfXmDCwsPf399XVljGxsejo6Pe3t6Eg4W0s7XMzM1qamv8/PyRkZKGhYfd 3d1OTU/IyMiDgoOkpKVJSEpJSEpIR0lHRkhEQ0VDQkRBQEI/PkA+PT86OTumpqd3d3hZWVmoqKk5ODo7 Ojw+PT9AP0FCQUNDQkRFREZHRkhIR0lJSEpNTE7q6uq+vr6jo6SQkJFQT1FRUFK4t7ienp5TUlSYmJj7 +/t0dHV4d3j8/PzV1dVXVlhbW1zt7e7+/v6trK1XVljb29uura5iYmP19fWcm5z29vZeXl/i4uKVlJaf np/6+vpgX2HIyMicm5xtbW7NzM1sa2yWlpZKSUtIR0lIR0lHRkhEQ0VDQkRBQEI/PkA9PD46OTumpqd3 d3hZWVmoqKk5ODo7Ojw9PD4/PkBBQEJDQkREQ0VGRUdIR0lJSEpLSkyxsbL7+/tmZWbIyMlVVFVSUVNo Z2nr6+tfXmBVVFbDw8TX1tdYV1i9vL3+/v6SkZNXVlh0c3SMi41hYGKvrq/h4eFjYmS5ubni4uLEw8TC wcJ3dnf4+PhgYGHf3t/Nzc5jYmP19fVfXmC3trdubW61tbVTU1RKSUtIR0lHRkhGRUdEQ0VDQkRBQEI/ PkA8Oz06OTumpqd4d3hZWVmoqKk5ODo7Ojw9PD4/PkBAP0FCQUNEQ0VGRUdIR0lJSEpKSUuAf4D9/f1/ foB4d3mvr7BQT1FSUVO1tbbAwMFUU1VdXF7g4OCmpqdaWlvGxcb7+/vR0dK+vr/Pzs/z8/PAwMFgX2GX l5jz8vOenp/39/dvb3DDw8PFxMWEhIX9/f2Ih4mkpKTDw8NaWVq0tLRvbnCioaJLSkxKSUtIR0lHRkhF REZEQ0VCQUNAP0E+PT89PD46OTumpqd3d3hZWVmpqKk5ODo7Ojw9PD4/PkBAP0FCQUNEQ0VGRUdHRkhJ SEpJSEqNjY7///+HhodOTU+lpaaenp5RUFJdXV7r6+uamZpVVFZramzq6uqQkJFWVVd8e32ioaKjo6SL i4xnZmhYV1mjoqPs7OyPjo/r6uukpKR+fX77+/uAf4Dh4OHj4+NXVljp6el8e32Qj5BiYWLBwMFaWltL SkxJSEpIR0lHRkhFREZDQkRCQUNAP0E+PT89PD46OTunpqd3d3hZWVmoqKk4Nzk6OTs8Oz0/PkBAP0FC QUNEQ0VFREZHRkhIR0lJSErHx8j///+goKFOTU9QT1HGxcaioaJSUVJ+fn/39/eQj5FVVFZwb3Hm5uaq qqtdXF1XVll0c3WTkpOysbLh4eHDw8SMjI3p6Om7u7xlZGbo6OjKysqtra79/f2MjIyKiYrb29tQT1GG hYd1dHa5uLlLSkxMS01JSEpIR0lGRUdFREZDQkRCQUNAP0E+PT88Oz05ODqmpqd3dndZWVmop6g4Nzk6 OTs8Oz0+PT8/PkBBQEJDQkREQ0VGRUdIR0lJSEqXl5j+/v7R0dFkY2V2dXZXVlfT09O0tLVUU1WTkpT5 +fmmpaZWVVdiYWK6urvl5eXj4+P+/v76+vrX19eysrPMy8z29vaoqKloZ2ne3t/u7e6enZ78/PzNzM1T UlTY2NiKiYpfXl9aWVvR0dFramtjYmRVVFZJSEpHRkhGRUdEQ0VCQUNBQEI/PkA9PD47Ojw5ODqmpqd2 dndZWVmnp6g3Njg5ODo8Oz0+PT8/PkBBQEJDQkREQ0VGRUdHRkhIR0lKSUu/v7/8/Px2dXfV1NWFhIZZ WFrR0dHLy8tcW12NjY739/fW1tZ5eHlUU1VWVleOjo+/vr/Ozs/Pz8/Av8CcnJ1nZ2iPj4/u7e7v7u+g oKH4+Pjr6+tiYWOJiIrn5+dTUlRQT1GWlpenp6dPTlB5eHpJSEpIR0lHRkhFREZEQ0VCQUNAP0E+PT89 PD47Ojw5ODqmpaZ2dndZWVmnp6g3Njg5ODo7Ojw9PD4+PT9AP0FCQUNDQkRFREZHRkhIR0lJSEpRUFLa 2dre3d5vb3Dq6up0c3RYV1nR0dLg4OFpaGpwb3DX19j9/f3X19efn6B6eXplZGVfX2BnZ2h+fX+np6jj 4+P8/PzJyMmUlJT29vbw8PBxcHJnZmfw8PCenZ5PTlBwb3HKyspPTlCIh4hOTU9JSEpIR0lGRUdEQ0VD QkRBQEJAP0E+PT88Oz06OTs4NzmlpaZ2dXZZWVmnpqc3Njg5ODo6OTs9PD4+PT8/PkBCQUNDQkRFREZG RUdHRkhJSEpJSEpdXF3n5+fPz9CDgoTn5+dvbnBXV1jLysvv7++Eg4RTUlSHhojNzc34+Pj+/v79/f38 /Pz+/v79/f3p6em3t7h+fX6cnJ35+fnk5ORubW5gX2Hg4OHm5uZWVVdjY2TR0dJcW12Eg4VmZWdKSUtI R0lHRkhGRUdEQ0VDQkRBQEI/PkA9PD48Oz06OTs4NzmmpaZ2dXZZWVmmpqc1NDY4Nzk5ODo8Oz09PD4+ PT9BQEJCQUNEQ0VFREZGRUdHRkhJSEpKSUtmZWbr6+vNzc2EhIXr6+uEhIVTUlSrq6z7+/vCwsJvb3BS UVNcW117e3yOjY6VlZWcnJybmpyoqKnOzs729vb8+/y2trdbWlxubm/j5OT08/RycXNmZWfX1tdoZ2mC gYOAf4FQT1FSUVNHRkhHRkhFREZDQkRCQUNAP0E+PT88Oz07Ojw5ODo3NjikpKV1dXZZWVmmpqc0MzU2 NTc5ODo7Ojw9PD4+PT9AP0FCQUNDQkREQ0VGRUdHRkhRUFJQUFFKSUtlZGbm5ua4uLh0c3Tp6em4uLhd XF52dXfb29v9/f3j4+PPzs/Y19jp6en6+vr+/v7+/v7+/v7z8/O4uLlsa21ZWVqmpqf39/jm5uZxcHJ8 e33h4OFvbm+Ojo6Pjo9NTE6Af4FIR0lHRkhGRUdEQ0VDQkRCQUM/PkA+PT88Oz06OTs5ODo1NDakpKV1 dHVZWVmmpqY0MzU2NTc4Nzk6OTs7Ojw9PD4/PkBBQEJDQkREQ0VFREZHRkhHRkhlZGV4d3lNTE5bWlzJ ycqxsLFfXmC/v8Dx8fGnp6hmZWaLiovAwMDe3t/s7Ozr6+vd3d3HxseoqKh/foBXV1hvbnCtra3v7+/6 +vq0tLRgX2GsrKzj4+Nwb3Grq6yPjo9PT1CWlpdNTE5IR0lGRUdFREZDQkRCQUNAP0E+PT89PD47Ojw5 ODo4Nzk1NDakpKV0dHVZWVmlpaYzMjQ1NDY3Njg5ODo6OTs8Oz0+PT8/PkBBQEJDQkRDQkRFREZHRkhH RkhXVlienZ6Dg4ROTU+NjY7FxcV1dXZ2dXbIyMj39/fR0dKko6WDgoRubW5mZWdqamt6eXuVlZa6urvm 5eb9/f329va6ubpsbG2OjY7k4+S1tLV7e3zLy8x6eXtaWVuura5UU1VHRkhHRkhFREZEQ0VCQUNBQEI/ PkA9PD48Oz06OTs4Nzk3Njg0MzWko6R0dHVZWVmlpaUyMTM0MzU1NDY4Nzk6OTs7Ojw9PD4+PT9AP0FC QUNDQkREQ0VGRUdHRkhIR0lIR0l+fn/Ix8iXlpdhYGKgn6DBwcGLiotlZGaLi4yxsLLQz9Dm5ub09PP3 9/f29vbs7OzW1ta1tbWJiIptbG2dnZ7e3d67u7x/foC3t7jExMRdXF13d3jBwMFVVFZHRkhHRkhFREZE Q0VDQkRBQEI/PkA+PT89PD47Ojw5ODo3Njg1NDY0MzWjoqN0c3RZWVmkpKUwLzEzMjQ1NDY3Njg4Nzk5 ODo8Oz09PD4/PkBAP0FCQUNDQkREQ0VGRUdGRUdIR0lJSEpPTlCXl5jl5OXCwsKOjY+Tk5S8u7zAv8Cf n6CAgIFramxhYGJgX2FnZmh0dHWOjo+xsLHW1tfMzMyYmJiJiInAv8Da2tuBgIFUVFWvr6++vr5QT1FH RkhHRkhFREZEQ0VCQUNCQUNAP0E+PT89PD47Ojw5ODo3Njg2NTc0MzUyMTOioqNzcnNZWVmkpKUvLjAy MTMzMjQ1NDY4Nzk5ODo7Ojw8Oz0+PT8/PkBBQEJCQUNDQkREQ0VQT1FqaWtNTE5IR0lJSEpQT1CRkZLd 3N36+vrX1tewsLGtra2urq6vr6+ysrO2treysrOmpaaZmJmTk5SWlpa8u7zq6urOzc6Dg4RQT1GQj5Dj 4+OVlJZJSEpHRkhHRkhFREZEQ0VDQkRCQUNBQEI/PkA9PD49PD46OTs5ODo3Njg0MzUzMjQxMDKioqNy cnNZWVmjo6QuLS8wLzEzMjQ0MzU3Njg4Nzk6OTs8Oz09PD4+PT8/PkBCQUNCQUNDQkREQ0VYWFmrqqvW 1te3t7d0c3VKSUpKSUtsbG2npqfY2Nj4+Pn+/v77+/vx8fHl5eXg4OHt7e35+fnr6+vExMSUk5VfXl9Q UFGQj5Dh4OHGxsdhYGJIR0lIR0lHRkhGRUdEQ0VDQkRCQUNBQEI/PkA9PD49PD47Ojw5ODo4Nzk2NTc0 MzUyMTMvLjChoaJycXJZWVmjoqMtLC4vLjAxMDIzMjQ0MzU2NTc4Nzk5ODo7Ojw9PD4+PT8/PkBBQEJC QUNDQkRNTE5GRUdaWVumpabt7e3c3Nyqqap+fX5aWltKSUtSUVNqamt+fX6GhoeGhoaAgIBxcHJaWVtL SkxLSkxoaGmqqarq6urGxsZzcnRIR0lHRkhHRkhGRUdFREZEQ0VDQkRCQUNBQEI/PkA+PT89PD47Ojw5 ODo3Njg1NDYzMjQyMTMwLzEvLjChoaFxcXJZWVmioqMsKy0uLS8vLjAxMDI0MzU1NDY4Nzk5ODo6OTs7 Ojw9PD4+PT8/PkBBQEJCQUNHRkiioaJhYGJFREZLSkx/f4C9vL3v7+/9/P3u7u7U1NTAwMCxsLGnp6ek o6SlpKWrqqu4uLnOzs7n5+fR0dKcm5xdXF9IR0lIR0lHRkhHRkhGRUdFREZKSUtDQkRCQUNBQEI/PkA+ PT89PD47Ojw5ODo5ODo3Njg1NDYzMjQwLzEvLjAtLC6goKFxcHFZWVmioaIqKSssKy0uLS8wLzEyMTMz MjQ1NDY4Nzk5ODo5ODo7Ojw9PD49PD4/PkBAP0FBQEJRUVK9vb64uLhsa21GRUdGRUdKSUtsa22Uk5Sz srPKycrX19fb29vU1NXDw8Osq6yRkJJxcHJQT1FIR0lIR0lHRkhHRkhGRUdGRUdGRUZramyioqNmZWdB QEI/PkA+PT89PD48Oz06OTs5ODo4Nzk3Njg1NDYzMjQxMDIvLjAuLS8rKiyfn6Bwb3BZWVmhoaIoJykq KSstLC4vLjAxMDIyMTM0MzU2NTc4Nzk5ODo5ODo8Oz09PD4+PT8/PkBAP0FBQEJDQkSBgYLY2Njk5OS0 s7SMjI1wb3FdXV5SUVJNTE5MS01LSk1JSEtHRkhIR0lHRkhHRkhHRkhHRkhGRUdPTlBqamuOjY61tba8 u7yWlZZQUFJBQEJAP0E/PkA9PD49PD47Ojw5ODo5ODo3Njg1NDYzMjQyMTMwLzEuLS8tLC4qKSufnp9v bm9ZWVmgoKEnJigqKSssKy0uLS8vLjAwLzEzMjQ0MzU2NTc4Nzk5ODo6OTs8Oz09PD4+PT8+PT9AP0FB QEJBQEJDQkRjYmOZmJnCwcLi4uL19fX6+vr6+vr6+vr4+Pjx8fHe3t7Nzc7GxcbDw8TKysrX1tfr6uv0 9PTV1dWVlJZUU1VHRkhBQEJAP0E/PkA+PT8+PT89PD47Ojw5ODo5ODo3Njg1NDY0MzUyMTMwLzEvLjAt LC4rKiwpKCqfnp9ubm9ZWVmfn6AlJCYoJykpKCorKiwtLC4vLjAwLzEyMTM0MzU2NTc3Njg4Nzk5ODo6 OTs8Oz09PD4+PT8+PT8/PkBHRkhgYGFISEpCQUNCQURGRUdPTlBVVFZWVVdRUFJJSEpLSkxRUFJZWFpi YWNlZGZjYmRYV1lJSEpoZ2l0c3VmZWdFREY/PkA+PT89PD49PD47Ojw6OTs5ODo3Njg3Njg1NDYzMjQy MTMwLzEuLS8tLC4rKiwpKConJiienZ5tbG1ZWVmfnp8kIyUmJScoJykqKSsrKiwtLC4vLjAwLzEzMjQ0 MzU0MzU2NTc4Nzk5ODo6OTs7Ojw9PD49PD4+PT8/PkBIR0l7e3yUk5Wgn6GmpaahoaKXlpeNjI2HhoeE g4SEhIWJiImVlJWzsrO1tbaCgYN7enx4eHlTUlQ/PkA/PkA+PT8+PT89PD48Oz07Ojw5ODo5ODo4Nzk1 NDY1NDYzMjQyMTMwLzEuLS8sKy0rKiwpKConJiglJCadnZ5sbG1ZWVmenp4hICIlJCYmJScoJykqKSsr KiwtLC4wLzExMDIyMTM0MzU1NDY2NTc4Nzk5ODo6OTs7Ojw7Ojw8Oz0+PT8+PT8/PkA/PkBAP0FBQEFK SUpWVVdgX2FlZGZlZWZpaGpoZ2leXV9PTlBCQUNDQkRXVlhZWFo/PkA+PT8+PT89PD48Oz07Ojw6OTs6 OTs4Nzk3Njg2NTc0MzUzMjQxMDIwLzEvLjAtLC4rKiwpKCooJykmJSckIyWcnJ1sbG1ZWVmenZ4gHyEi ISMkIyUnJigoJykqKSsrKiwtLC4vLjAwLzExMDIzMjQ0MzU1NDY3Njg4Nzk5ODo5ODo6OTs8Oz08Oz09 PD49PD5HRkhjYmR7enuRkJKfnp+enZ6enZ6ioaOrqqu4uLnAv8Gzs7OamZpmZWc9PD49PD48Oz08Oz07 Ojw6OTs5ODo4Nzk4Nzk2NTc0MzU0MzUyMTMwLzEwLzEuLS8tLC4rKiwpKConJiglJCYkIyUhICKbm5xs bG1ZWVmenZ4gHyEhICIiISMlJCYmJScoJykqKSsrKiwtLC4uLS8vLjAxMDIyMTM0MzU1NDY2NTc4Nzk4 Nzk5ODo6OTs6OTs7Ojw7Ojw8Oz08Oz08Oz08Oz1DQUVUVFVhYWJkY2VfX2BQT1E/PkE9PD48Oz09PD48 Oz07Ojw6OTs6OTs5ODo5ODo4Nzk3Njg2NTc0MzUzMjQyMTMwLzEvLjAuLS8sKy0rKiwpKCooJykmJSck IyUiISMgHyGbm5xsbG1WVlatra4gHyEgHyEgHyEiISMkIyUmJScoJykpKCoqKSssKy0uLS8vLjAwLzEx MDIzMjQ0MzU0MzU2NTc3Njg3Njg4Nzk5ODo5ODo5ODo6OTs6OTs6OTs6OTs7Ojw8Oz08Oz08Oz07Ojw6 OTs6OTs6OTs6OTs5ODo5ODo4Nzk4Nzk3Njg2NTc1NDY0MzUzMjQzMjQxMDIwLzEvLjAtLC4rKiwqKSsp KConJiglJCYkIyUhICIgHyEgHyGrqqtpaWofHx/k5OR6entRUFJQT1FQT1FRUFJTUlRVVFZWVVdXVlhY V1lZWFpbWltbW1xdXF1dXF5eXV9gX2BgX2FgYGFhYGJiYWNiYmNjYmRjYmRkY2VkY2RkY2RkY2VkY2Rk Y2VkZGVkY2VkY2VkY2RkY2RkY2RjYmRjYmRjYmRiYmNiYWNgYGFgX2FgX2FfXmBeXV9dXF1cXF1bWlxa WVtZWFpYV1lXVlhWVVdUU1VTU1RRUVJQT1FRUFJ5eHrl5eUwMDEdHR44ODioqKi5ubm5ubm5ubm5ubm5 ubm5ubm5ubq6urq6urq6urq6uru7uru7u7u7u7u7u7u7u7u7u7u8vLy8vLy8vLy8vLy8vLy8vLy8vLy8 vLy8vLy8vLy8vL28vL28vL28vL28vL28vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8u7y7u7u7u7u7 u7u7u7u7u7u7uru6urq6urq6urq5ubq5ubq5ubm5ubm5ubm5ubm5ubmqqqpDQkQgHyEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

FpMV/src/FpMV/FpMV/FPMD_TemporaryKey.pfx

FpMV/src/FpMV/FpMV/FpMV.csproj

Debug x86 8.0.30703 2.0 {621F6169-E45D-4E4F-8768-01B264C0688A} WinExe Properties FpMV FpMV v4.0 Client 512 false publish\ true Disk false Foreground 7 Days false false true 73 1.0.0.%2a false true true x86 true full false ..\..\..\..\..\Desktop\FPMD_Test\Debug\ DEBUG;TRACE prompt 4 x86 pdbonly true bin\Release\ TRACE prompt 4 true E0540E4A506E403133365432A20FDF2AC3DCF250 FPMD_TemporaryKey.pfx true true Resources\fpmv.ico true Form Form1.cs Form Form2.cs Form1.cs Form2.cs ResXFileCodeGenerator Resources.Designer.cs Designer True Resources.resx True SettingsSingleFileGenerator Settings.Designer.cs True Settings.settings True False Microsoft .NET Framework 4 Client Profile %28x86 and x64%29 true False .NET Framework 3.5 SP1 Client Profile false False .NET Framework 3.5 SP1 false False Windows Installer 3.1 true

FpMV/src/FpMV/FpMV/FpMV.csproj.user

publish\ en-US false ShowAllFiles

FpMV/src/FpMV/FpMV/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache

FpMV/src/FpMV/FpMV/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.application

GyItlOSaclXTHKxoC+9+UyID/ho=

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.csproj.FileListAbsolute.txt

C:\Users\kennethko\Desktop\FPMD_Test\FPMD.exe.manifest C:\Users\kennethko\Desktop\FPMD_Test\FPMD.application C:\Users\kennethko\Desktop\FPMD_Test\FPMD.exe C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\bin\Release\FPMD.exe.manifest C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\bin\Release\FPMD.application C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\bin\Release\FPMD.exe C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\bin\Release\FPMD.pdb C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.csprojResolveAssemblyReference.cache C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.Form1.resources C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.Properties.Resources.resources C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.csproj.GenerateResource.Cache C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.exe.manifest C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.application C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.exe C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FPMD\FPMD\obj\x86\Release\FPMD.pdb

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.csproj.GenerateResource.Cache

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.csprojResolveAssemblyReference.cache

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.exe

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.exe.manifest

K+ktNYs6EQRMgQXOhTJHM8POtAM= sCEgONVk4UPt6U/N4dLqvCXZEPU= yk0Z8/p4nghSoiETB/LaFVJXcoY=

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.Form1.resources

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.pdb

FpMV/src/FpMV/FpMV/obj/x86/Release/FPMD.Properties.Resources.resources

FpMV/src/FpMV/FpMV/obj/x86/Release/FpMV.csproj.FileListAbsolute.txt

C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\bin\Release\FpMV.exe.manifest C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\bin\Release\FpMV.application C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\bin\Release\FpMV.exe C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\bin\Release\FpMV.pdb C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.Form1.resources C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.Form2.resources C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.Properties.Resources.resources C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.csproj.GenerateResource.Cache C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.exe.manifest C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.application C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.exe C:\Users\kennethko\Documents\Visual Studio 2010\Projects\FpMV\FpMV\obj\x86\Release\FpMV.pdb

FpMV/src/FpMV/FpMV/obj/x86/Release/TempPE/Properties.Resources.Designer.cs.dll

FpMV/src/FpMV/FpMV/Program.cs

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace FpMV { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }

FpMV/src/FpMV/FpMV/Properties/AssemblyInfo.cs

using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("FpMV")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("FpMV")] [assembly: AssemblyCopyright("Copyright © 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("af048748-266f-46d9-908f-1bdfc9b1e86a")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // 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")]

FpMV/src/FpMV/FpMV/Properties/Resources.Designer.cs

//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.18444 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace FpMV.Properties { using System; /// <summary> /// A strongly-typed resource class, for looking up localized strings, etc. /// </summary> // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// <summary> /// Returns the cached ResourceManager instance used by this class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FpMV.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } /// <summary> /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// </summary> [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } } }

FpMV/src/FpMV/FpMV/Properties/Resources.resx

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

FpMV/src/FpMV/FpMV/Properties/Settings.Designer.cs

//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:4.0.30319.18444 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ namespace FpMV.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); public static Settings Default { get { return defaultInstance; } } } }

FpMV/src/FpMV/FpMV/Properties/Settings.settings

FpMV/src/FpMV/FpMV/publish/Application Files/FPMD_1_0_0_72/FPMD.application

SKeKYYaQQTmSZf5tT0mbruEx8EE= zgkn/Gwbalm2e9KUN5ACoGimnr8= Vv3/ubisle19WVtJXSsvMlyda0MU8icQ6W2ZIF8PyBbZlISooIXX6vZ+jsOXh5MSFXnwb/bF+glGd0fC9L4uHBta108dYi0zkgo/Htk2I9BlLVGUEZ+k73VLFHmmHWU4jBUkxJhRC6ehhNUJePwSgBmrWswDZMu2qpuB+0Cr7X8= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB CN=WIN-3M701NCCMU1\kennethko epcMg1WN2G4zX/pqG48eaaNThkk= R5qrtrJgWs09afvdXMVybOr4wQkUceAHrM8fcAxPeMc02GdkSnfj/Nqy54wowAvDgRZHc3PeHCRhSQduK2EdXvpvUb+L9Q3DK/YIWz2dzRaLbrsElJ4mh0BsJf1Xu7iLskpQcTaVbsAT1DOPcJiulITdfSp+IQVLPA3H7bRf1Oo= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB MIIB/TCCAWagAwIBAgIQGDhi13U3Kr5J/pOe1TFwujANBgkqhkiG9w0BAQUFADA9MTswOQYDVQQDHjIAVwBJAE4ALQAzAE0ANwAwADEATgBDAEMATQBVADEAXABrAGUAbgBuAGUAdABoAGsAbzAeFw0xMzA4MjYxNTQ2NDZaFw0xNDA4MjYyMTQ2NDZaMD0xOzA5BgNVBAMeMgBXAEkATgAtADMATQA3ADAAMQBOAEMAQwBNAFUAMQBcAGsAZQBuAG4AZQB0AGgAawBvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSUYGtJZm7knu5Jx5N0lMTB3U8Ps8+Dx/9OWBxIxoC9TG5gnoB8UBF6050okYtzC6NF3GFALzp7JAUHHhZVEKNpiIv9ljp/cL/Bya6g/tTh4cJNiMmQy18iHYphgpR8hBxm3YMPjhF9I3ek09VQh1Y+QRRnNrjIPA51WkzO3rImwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABMjLGXYtSP0diRo2zg+QPb26PhjKpzB/OdKV/an3mN9GDxn+5F8cxoD8LWM2HXuCjvrAG2wYw7bNYeJQQBSF4Weqygbc95Cflwz/C/EMMnH++GUhq+AhAO4A0PRLvutXVcKup24isoDMojNbrIaZ4gffr0nIOpcvAjV8DEihd2U

FpMV/src/FpMV/FpMV/publish/Application Files/FPMD_1_0_0_72/FPMD.exe.deploy

FpMV/src/FpMV/FpMV/publish/Application Files/FPMD_1_0_0_72/FPMD.exe.manifest

Vwa3Goes//YkYlgWRVSpzCCrqE8= hH6ZQ2aHmJmsyzrNbaU5lRbP3ZU= g6eVUUhkbwjyKHtOFZnnHKMkExTJTmJr3VNhwYrpnVZh3tC+V0Pid3u7RYQKuREGeGtCmKQ9/vhSOh4v+j7aeCVX6xDImLKuf4u2BT9m7wsEdqnc8xVg7aacxKVptDcT4WkBrvn2YiLKQrssYf3iHOIWuk9cmMoeDUUAV0p/RLw= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB CN=WIN-3M701NCCMU1\kennethko 4wtknOV4fQIJT4Cn8nNh8I5o1lg= Law2j9GvE+ubB7bEsTX4k8L+vvUKZsYFtgZSZkS9+vyCvrhGUqEAhBfDT8hcQV5NoOdO1CvLKjXuOXgJXtZCRun5r9J2xMl6baGoSlPujfMEXMB8KDtFe4jdMGI7hq2xcb1UE2gKhH5khlXYRWG92Z4dzdR8GT7rLGytJU+aSFg= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB MIIB/TCCAWagAwIBAgIQGDhi13U3Kr5J/pOe1TFwujANBgkqhkiG9w0BAQUFADA9MTswOQYDVQQDHjIAVwBJAE4ALQAzAE0ANwAwADEATgBDAEMATQBVADEAXABrAGUAbgBuAGUAdABoAGsAbzAeFw0xMzA4MjYxNTQ2NDZaFw0xNDA4MjYyMTQ2NDZaMD0xOzA5BgNVBAMeMgBXAEkATgAtADMATQA3ADAAMQBOAEMAQwBNAFUAMQBcAGsAZQBuAG4AZQB0AGgAawBvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSUYGtJZm7knu5Jx5N0lMTB3U8Ps8+Dx/9OWBxIxoC9TG5gnoB8UBF6050okYtzC6NF3GFALzp7JAUHHhZVEKNpiIv9ljp/cL/Bya6g/tTh4cJNiMmQy18iHYphgpR8hBxm3YMPjhF9I3ek09VQh1Y+QRRnNrjIPA51WkzO3rImwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABMjLGXYtSP0diRo2zg+QPb26PhjKpzB/OdKV/an3mN9GDxn+5F8cxoD8LWM2HXuCjvrAG2wYw7bNYeJQQBSF4Weqygbc95Cflwz/C/EMMnH++GUhq+AhAO4A0PRLvutXVcKup24isoDMojNbrIaZ4gffr0nIOpcvAjV8DEihd2U

FpMV/src/FpMV/FpMV/publish/FPMD.application

SKeKYYaQQTmSZf5tT0mbruEx8EE= zgkn/Gwbalm2e9KUN5ACoGimnr8= Vv3/ubisle19WVtJXSsvMlyda0MU8icQ6W2ZIF8PyBbZlISooIXX6vZ+jsOXh5MSFXnwb/bF+glGd0fC9L4uHBta108dYi0zkgo/Htk2I9BlLVGUEZ+k73VLFHmmHWU4jBUkxJhRC6ehhNUJePwSgBmrWswDZMu2qpuB+0Cr7X8= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB CN=WIN-3M701NCCMU1\kennethko epcMg1WN2G4zX/pqG48eaaNThkk= R5qrtrJgWs09afvdXMVybOr4wQkUceAHrM8fcAxPeMc02GdkSnfj/Nqy54wowAvDgRZHc3PeHCRhSQduK2EdXvpvUb+L9Q3DK/YIWz2dzRaLbrsElJ4mh0BsJf1Xu7iLskpQcTaVbsAT1DOPcJiulITdfSp+IQVLPA3H7bRf1Oo= klGBrSWZu5J7uSceTdJTEwd1PD7PPg8f/TlgcSMaAvUxuYJ6AfFARetOdKJGLcwujRdxhQC86eyQFBx4WVRCjaYiL/ZY6f3C/wcmuoP7U4eHCTYjJkMtfIh2KYYKUfIQcZt2DD44RfSN3pNPVUIdWPkEUZza4yDwOdVpMzt6yJs= AQAB MIIB/TCCAWagAwIBAgIQGDhi13U3Kr5J/pOe1TFwujANBgkqhkiG9w0BAQUFADA9MTswOQYDVQQDHjIAVwBJAE4ALQAzAE0ANwAwADEATgBDAEMATQBVADEAXABrAGUAbgBuAGUAdABoAGsAbzAeFw0xMzA4MjYxNTQ2NDZaFw0xNDA4MjYyMTQ2NDZaMD0xOzA5BgNVBAMeMgBXAEkATgAtADMATQA3ADAAMQBOAEMAQwBNAFUAMQBcAGsAZQBuAG4AZQB0AGgAawBvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSUYGtJZm7knu5Jx5N0lMTB3U8Ps8+Dx/9OWBxIxoC9TG5gnoB8UBF6050okYtzC6NF3GFALzp7JAUHHhZVEKNpiIv9ljp/cL/Bya6g/tTh4cJNiMmQy18iHYphgpR8hBxm3YMPjhF9I3ek09VQh1Y+QRRnNrjIPA51WkzO3rImwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABMjLGXYtSP0diRo2zg+QPb26PhjKpzB/OdKV/an3mN9GDxn+5F8cxoD8LWM2HXuCjvrAG2wYw7bNYeJQQBSF4Weqygbc95Cflwz/C/EMMnH++GUhq+AhAO4A0PRLvutXVcKup24isoDMojNbrIaZ4gffr0nIOpcvAjV8DEihd2U

FpMV/src/FpMV/FpMV/publish/setup.exe

FpMV/src/FpMV/FpMV/Resources/fpmv.ico