From f523b62520ed80a78cab0ccd35a84a9d9ef299be Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Mon, 2 May 2022 14:22:39 +0200 Subject: [PATCH] Added check for max 10 characters in input field, for sql injection security, not printing error message to user yet tho --- .../java/com/application/DB/Constants.java | 18 -- src/main/java/com/application/DB/DB.java | 68 +++--- .../com/application/DB/HelpingFunctions.java | 32 ++- .../com/application/GUI/InputPopUpWindow.java | 213 +++++++----------- .../application/GUI/OutputPopUpWindow.java | 5 +- src/main/java/com/application/Main.java | 15 +- .../com/application/DB/Constants.class | Bin 6924 -> 6367 bytes target/classes/com/application/DB/DB.class | Bin 16414 -> 16295 bytes .../com/application/DB/HelpingFunctions.class | Bin 7006 -> 8556 bytes .../application/GUI/InputPopUpWindow.class | Bin 8009 -> 8416 bytes .../application/GUI/OutputPopUpWindow.class | Bin 4658 -> 4699 bytes .../com/application/Main$1WorkerThread.class | Bin 2263 -> 2269 bytes target/classes/com/application/Main.class | Bin 8214 -> 8558 bytes 13 files changed, 165 insertions(+), 186 deletions(-) diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 541ec59..fffe178 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -1,8 +1,5 @@ package com.application.DB; -import javafx.beans.property.SimpleIntegerProperty; -import javafx.beans.value.ObservableValue; - import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -21,18 +18,6 @@ public final class Constants { // Today's date public static final String CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); - // Start- & end time - public static String START_TIME = ""; - public static String STOP_TIME = ""; - - // Boolean variable to tell if the drying process is finished - public static boolean IS_FINISHED = false; - - // User inputs - public static String TREE_SPECIES = ""; - public static String DIMENSIONS = ""; - public static String SAWSET = ""; - public static String MOISTURE_GOAL = ""; public static String TIME_LEFT = ""; // Number of manual moisture checks @@ -47,9 +32,6 @@ public final class Constants { // Non linear regression public static final double ADJUST_REGRESSION = 5.5; - // Number percentage to display the searching for data - public static ObservableValue<Integer> PERCENTAGE = new SimpleIntegerProperty().asObject(); - // Current sawmill settings; public static final String PROJECT_ID = "sf-drying-optimization"; public static final int LOCATION_ID = 124; diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java index 95044b7..614228a 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -6,6 +6,7 @@ import org.joda.time.DateTime; import java.util.*; import static com.application.DB.Constants.*; +import static com.application.DB.HelpingFunctions.getNoOfChambers; /** * This class is responsible for handling database related activities @@ -25,7 +26,8 @@ public class DB { //getKwh(); //getName(); //getZeroPointDate(); - System.out.println(setInputParameters()); + //System.out.println(setInputParameters()); + getNoOfChambers(); } @@ -70,6 +72,9 @@ public class DB { String valueIDName; int valueID; + getNoOfChambers(); + int chamberNo = 1; + while(true){ @@ -91,16 +96,16 @@ public class DB { if (location.getKey() == 124) { // If location is Valasen, then the database stores furu as fura, swedish. - if (TREE_SPECIES.equalsIgnoreCase("Furu")) { - TREE_SPECIES = "Fura"; + if (HelpingFunctions.TREE_SPECIES.equalsIgnoreCase("Furu")) { + HelpingFunctions.TREE_SPECIES = "Fura"; } locationTables = getValasenTableNames(); valmeticsChamberIDS = getValasenValmeticsChamberIDS(); kwhChamberIDS = getValasenKwhChamberIDS(); } if (location.getKey() == 174) { - if (TREE_SPECIES.equalsIgnoreCase("Fura")) { - TREE_SPECIES = "Furu"; + if (HelpingFunctions.TREE_SPECIES.equalsIgnoreCase("Fura")) { + HelpingFunctions.TREE_SPECIES = "Furu"; } locationTables = getArjangTableNames(); valmeticsChamberIDS = getArjangValmeticsChamberIDS(); @@ -124,33 +129,33 @@ public class DB { //valueID = Integer.parseInt(location.getValue().get(locationTables.get("Kwh")).get("ValueID")); - System.out.printf("Tree species: \t%s\n", TREE_SPECIES); - System.out.printf("Width: \t\t\t%s\n", DIMENSIONS); - System.out.printf("Sawset: \t\t%s\n", SAWSET); - System.out.printf("Moisture: \t\t%s\n", MOISTURE_GOAL); + System.out.printf("Tree species: \t%s\n", HelpingFunctions.TREE_SPECIES); + System.out.printf("Width: \t\t\t%s\n", HelpingFunctions.DIMENSIONS); + System.out.printf("Sawset: \t\t%s\n", HelpingFunctions.SAWSET); + System.out.printf("Moisture: \t\t%s\n", HelpingFunctions.MOISTURE_GOAL); // Defining the extra sql statements for extra parameters - treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + TREE_SPECIES + "%" + '"' + ") "; - dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + DIMENSIONS + "%" + '"' + ") "; - sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + SAWSET + "%" + '"' + ") "; - moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + MOISTURE_GOAL + "\\\\%" + "%" + '"' + ") "; + treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + HelpingFunctions.TREE_SPECIES + "%" + '"' + ") "; + dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + HelpingFunctions.DIMENSIONS + "%" + '"' + ") "; + sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + HelpingFunctions.SAWSET + "%" + '"' + ") "; + moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + HelpingFunctions.MOISTURE_GOAL + "\\\\%" + "%" + '"' + ") "; // 1. Checking if user input is empty. // 2. Checking if the extraInputParameter variable already contains the extra parameters, // if so not adding a second time. // 3. Checking if the while loop have previously removed the parameter, if so, not adding again. - if (!TREE_SPECIES.isEmpty() && !extraInputParameter.contains(treeSpecies) && !treespeciesRemoved) { + if (!HelpingFunctions.TREE_SPECIES.isEmpty() && !extraInputParameter.contains(treeSpecies) && !treespeciesRemoved) { extraInputParameter += treeSpecies; } - if (!DIMENSIONS.isEmpty() && !extraInputParameter.contains(dimensions) && !dimensionsRemoved) { + if (!HelpingFunctions.DIMENSIONS.isEmpty() && !extraInputParameter.contains(dimensions) && !dimensionsRemoved) { extraInputParameter += dimensions; } - if (!SAWSET.isEmpty() && !extraInputParameter.contains(sawset) && !sawsetRemoved) { + if (!HelpingFunctions.SAWSET.isEmpty() && !extraInputParameter.contains(sawset) && !sawsetRemoved) { extraInputParameter += sawset; } - if (!MOISTURE_GOAL.isEmpty() && !extraInputParameter.contains(moistureGoal) && !moistureRemoved) { + if (!HelpingFunctions.MOISTURE_GOAL.isEmpty() && !extraInputParameter.contains(moistureGoal) && !moistureRemoved) { extraInputParameter += moistureGoal; } @@ -172,6 +177,7 @@ public class DB { System.out.printf("valueID: \t%d\n",valueID); //System.out.println("Før results"); + Map<Integer, Map<String, Number>> results = new TreeMap<>(getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit), locationID, kwhTableName, KwhName, timestamp, valueIDName, valueID, index)); @@ -570,29 +576,29 @@ public class DB { String moistureGoal; // Checks if variables is not null, if so, formats correctly for the sql statement - if(!START_TIME.equals("")){ - startTime = '"'+START_TIME+'"'; + if(!HelpingFunctions.START_TIME.equals("")){ + startTime = '"'+ HelpingFunctions.START_TIME+'"'; } - if(STOP_TIME != null){ - stopTime = '"'+STOP_TIME+'"'; + if(HelpingFunctions.STOP_TIME != null){ + stopTime = '"'+ HelpingFunctions.STOP_TIME+'"'; } - if(!TREE_SPECIES.equals("")){ - treeSpecies = '"'+TREE_SPECIES+'"'; + if(!HelpingFunctions.TREE_SPECIES.equals("")){ + treeSpecies = '"'+ HelpingFunctions.TREE_SPECIES+'"'; } else { treeSpecies = null; } - if(!DIMENSIONS.equals("")){ - dimensions = '"'+DIMENSIONS+'"'; + if(!HelpingFunctions.DIMENSIONS.equals("")){ + dimensions = '"'+ HelpingFunctions.DIMENSIONS+'"'; } else { dimensions = null; } - if(!SAWSET.equals("")){ - sawset = '"'+SAWSET+'"'; + if(!HelpingFunctions.SAWSET.equals("")){ + sawset = '"'+ HelpingFunctions.SAWSET+'"'; } else { sawset = null; } - if(!MOISTURE_GOAL.equals("")){ - moistureGoal = '"'+MOISTURE_GOAL+'"'; + if(!HelpingFunctions.MOISTURE_GOAL.equals("")){ + moistureGoal = '"'+ HelpingFunctions.MOISTURE_GOAL+'"'; } else { moistureGoal = null; } @@ -623,8 +629,8 @@ public class DB { // Sqlstatement final String sqlStatement = "SELECT `" + KWH_TIMESTAMP_NAME_PARAMETER + "`, `" + KWH_NAME_PARAMETER + "` " + "FROM `" + PROJECT_ID + "." + LOCATION_ID + "." + KWH_TABLE_NAME + "` " + - "WHERE " + KWH_TIMESTAMP_NAME_PARAMETER + " BETWEEN " + '"' + START_TIME + '"' + - " AND " + '"' + STOP_TIME + '"' + + "WHERE " + KWH_TIMESTAMP_NAME_PARAMETER + " BETWEEN " + '"' + HelpingFunctions.START_TIME + '"' + + " AND " + '"' + HelpingFunctions.STOP_TIME + '"' + " AND " + KWH_VALUE_ID_NAME_PARAMETER + " = " + KWH_VALUE_ID_VALUE_PARAMETER + " " + " AND " + KWH_NAME_PARAMETER + " <> 0 " + " ORDER BY " + KWH_TIMESTAMP_NAME_PARAMETER + " ASC"; diff --git a/src/main/java/com/application/DB/HelpingFunctions.java b/src/main/java/com/application/DB/HelpingFunctions.java index a34f4f5..e5689d4 100644 --- a/src/main/java/com/application/DB/HelpingFunctions.java +++ b/src/main/java/com/application/DB/HelpingFunctions.java @@ -11,11 +11,21 @@ import java.util.HashMap; import java.util.Map; import java.util.TimeZone; -import static com.application.DB.Constants.PROJECT_ID; +import static com.application.DB.Constants.*; public class HelpingFunctions { + // Start- & end time + public static String START_TIME = ""; + public static String STOP_TIME = ""; + // Boolean variable to tell if the drying process is finished + public static boolean IS_FINISHED = false; + // User inputs + public static String TREE_SPECIES = ""; + public static String DIMENSIONS = ""; + public static String SAWSET = ""; + public static String MOISTURE_GOAL = ""; static Map<String,String> manMoist = new HashMap<>(); /** @@ -149,4 +159,24 @@ public class HelpingFunctions { } } } + + public static int getNoOfChambers(){ + int valmeticsChamberIDS = 0; + int kwhChamberIDS = 0; + int noOfChambers = 0; + System.out.println("Constants.getSawmills().size(): "+Constants.getSawmills().size()); + for (HashMap.Entry<Integer, HashMap<String, HashMap<String, String>>> first : Constants.getSawmills().entrySet()) { + if (first.getKey() == 124) { + valmeticsChamberIDS = getValasenValmeticsChamberIDS().size(); + kwhChamberIDS = getValasenKwhChamberIDS().size(); + } + if (first.getKey() == 174) { + valmeticsChamberIDS = getArjangValmeticsChamberIDS().size(); + kwhChamberIDS = getArjangKwhChamberIDS().size(); + } + noOfChambers+= Math.min(valmeticsChamberIDS, kwhChamberIDS); + System.out.println("NO_OF_CHAMBERS: "+noOfChambers); + } + return noOfChambers; + } } diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java index 3043841..e4a829f 100644 --- a/src/main/java/com/application/GUI/InputPopUpWindow.java +++ b/src/main/java/com/application/GUI/InputPopUpWindow.java @@ -1,5 +1,6 @@ package com.application.GUI; +import com.application.DB.HelpingFunctions; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -29,6 +30,8 @@ import static com.application.GUI.LineChartFunctionality.loadSingleSeries; */ public class InputPopUpWindow { + private static boolean err = false; + public static void exitDataThread(){ Platform.exit(); System.exit(0); @@ -91,7 +94,7 @@ public class InputPopUpWindow { "4ex" ); ComboBox<String> sawsetList = new ComboBox<>(sawset); - sawsetList.setPromptText("Select Dimensions"); + sawsetList.setPromptText("Select Sawset"); sawsetList.setId("inputDropDownBox"); sawsetList.setEditable(true); @@ -107,7 +110,7 @@ public class InputPopUpWindow { "20%" ); ComboBox<String> moistureList = new ComboBox<>(moistureGoal); - moistureList.setPromptText("Select Dimensions"); + moistureList.setPromptText("Select Moisture Goal"); moistureList.setId("inputDropDownBox"); moistureList.setEditable(true); @@ -118,171 +121,124 @@ public class InputPopUpWindow { startButton.setOnAction(e -> { - // Sets the start time + // Sets the start time - START_TIME = CURRENT_DATE; + HelpingFunctions.START_TIME = CURRENT_DATE; - // Retrieves the user inputs - TREE_SPECIES = treeSpeciesList.getValue(); - DIMENSIONS = dimensionsList.getValue(); - SAWSET = sawsetList.getValue(); - if(moistureList.getValue() != null && moistureList.getValue().contains("%")) - { - MOISTURE_GOAL = moistureList.getValue().replace("%",""); - } else { - MOISTURE_GOAL = moistureList.getValue(); - } + // Retrieves the user inputs + HelpingFunctions.TREE_SPECIES = treeSpeciesList.getValue(); + HelpingFunctions.DIMENSIONS = dimensionsList.getValue(); + HelpingFunctions.SAWSET = sawsetList.getValue(); + if (moistureList.getValue() != null && moistureList.getValue().contains("%")) { + HelpingFunctions.MOISTURE_GOAL = moistureList.getValue().replace("%", ""); + } else { + HelpingFunctions.MOISTURE_GOAL = moistureList.getValue(); + } - // If the input is null, sets the value to be empty - if (treeSpeciesList.getValue() == null) { - TREE_SPECIES = ""; - } - if (dimensionsList.getValue() == null) { - DIMENSIONS = ""; - } - if (sawsetList.getValue() == null) { - SAWSET = ""; - } - if (moistureList.getValue() == null) { - MOISTURE_GOAL = ""; - } + // If the input is null, sets the value to be empty + if (treeSpeciesList.getValue() == null) { + HelpingFunctions.TREE_SPECIES = ""; + } else if (treeSpeciesList.getValue().length() > 10) { + treeSpeciesList.setPromptText("A maximum of 10 characters is allowed!"); + err = true; + } + if (dimensionsList.getValue() == null) { + HelpingFunctions.DIMENSIONS = ""; + } else if (dimensionsList.getValue().length() > 10) { + dimensionsList.setPromptText("A maximum of 10 characters is allowed!"); + err = true; + } + if (sawsetList.getValue() == null) { + HelpingFunctions.SAWSET = ""; + } else if (sawsetList.getValue().length() > 10) { + sawsetList.setPromptText("A maximum of 10 characters is allowed!"); + err = true; + } + if (moistureList.getValue() == null) { + HelpingFunctions.MOISTURE_GOAL = ""; + } else if (moistureList.getValue().length() > 10) { + moistureList.setPromptText("A maximum of 10 characters is allowed!"); + err = true; + } - setTreeSpeciesText(TREE_SPECIES); - setDimensionsText(DIMENSIONS); - setSawsetText(SAWSET); - setMoistureGoalText(MOISTURE_GOAL); - window.close(); + if (!err) { -/* - FutureTask[] randomNumberTasks = new FutureTask[1]; - Callable callable = new CallableExample(); - randomNumberTasks[0] = new FutureTask(callable); - Thread t = new Thread(randomNumberTasks[0]); - t.start(); + setTreeSpeciesText(HelpingFunctions.TREE_SPECIES); + setDimensionsText(HelpingFunctions.DIMENSIONS); + setSawsetText(HelpingFunctions.SAWSET); + setMoistureGoalText(HelpingFunctions.MOISTURE_GOAL); - try { - System.out.println(randomNumberTasks[0].get()); - } catch (InterruptedException | ExecutionException ex) { - ex.printStackTrace(); - } + window.close(); - }); - */ -/* + + // Fungerende ny thread!!@@@@@ + // Gather data + try { + Thread thread = new Thread(() -> { try { - //getData(); - loadSingleSeries(setInputParameters()); - //loadMultipleSeries(setInputParameters()); - //loadSingleSeries(); - //loadMultipleSeries(); + // Henter her data fra databasen + Map<Integer, Map<String, Number>> data = setInputParameters(); + Platform.runLater(() -> { + try { + loadSingleSeries(data); + } catch (Exception ex) { + ex.printStackTrace(); + } + }); } catch (Exception ex) { ex.printStackTrace(); } } - ); - - */ - - - - - - - -/* - try{ - Thread thread = new Thread(new Runnable() { - - @Override - public void run() { - try { - // Henter her data fra databasen - loadSingleSeries(setInputParameters(false,false,false,false)); - //loadSingleSeries(); - //loadMultipleSeries(); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - }); + thread.setDaemon(true); thread.start(); + } catch (Exception ex) { ex.printStackTrace(); } - } - ); - - */ - // Fungerende ny thread!!@@@@@ - // Gather data - try{ - Thread thread = new Thread(() -> { + // Retrieve data for current drying period + try { + Thread thread = new Thread(() -> { + try { + while (!HelpingFunctions.IS_FINISHED) { + HelpingFunctions.STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); + Map<String, Number> data = getCurrentDrying(); + Platform.runLater(() -> { try { - // Henter her data fra databasen - Map<Integer, Map<String, Number>> data = setInputParameters(); - Platform.runLater(() -> { - try { - loadSingleSeries(data); - } catch (Exception ex) { - ex.printStackTrace(); - } - }); + loadLiveData(data); } catch (Exception ex) { ex.printStackTrace(); } - } - ); - thread.setDaemon(true); - thread.start(); - + }); + Thread.sleep(1000L * NUMBER_OF_SECONDS_LIVE_DATA); + } } catch (Exception ex) { ex.printStackTrace(); } + } + ); + thread.setDaemon(true); + thread.start(); - // Retrieve data for current drying period - try{ - Thread thread = new Thread(() -> { - try { - while(!IS_FINISHED){ - - STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); - Map<String, Number> data = getCurrentDrying(); - Platform.runLater(() -> { - try { - loadLiveData(data); - } catch (Exception ex) { - ex.printStackTrace(); - } - }); - Thread.sleep(1000L *NUMBER_OF_SECONDS_LIVE_DATA); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - ); - thread.setDaemon(true); - thread.start(); - - } catch (Exception ex) { - ex.printStackTrace(); - } - + } catch (Exception ex) { + ex.printStackTrace(); + } + } } ); + /* // Fungerende ny thread!!@@@@@ try{ @@ -374,5 +330,4 @@ public class InputPopUpWindow { window.setScene(scene); window.showAndWait(); } - } diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java index 26f5a37..13f3d6a 100644 --- a/src/main/java/com/application/GUI/OutputPopUpWindow.java +++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java @@ -1,6 +1,7 @@ package com.application.GUI; import com.application.DB.DB; +import com.application.DB.HelpingFunctions; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; @@ -46,7 +47,7 @@ public class OutputPopUpWindow { try { if(!moistureCheckTextField.getCharacters().toString().isEmpty() && !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) { - STOP_TIME = null; + HelpingFunctions.STOP_TIME = null; DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(), false); NUMBER_OF_CHECKS++; window.close(); @@ -65,7 +66,7 @@ public class OutputPopUpWindow { try { if(!moistureCheckTextField.getCharacters().toString().isEmpty() && !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) { - STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); + HelpingFunctions.STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()); DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(),true); window.close(); } else { diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 0f995ab..6db0831 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -1,5 +1,6 @@ package com.application; +import com.application.DB.HelpingFunctions; import com.application.GUI.InputPopUpWindow; import com.application.GUI.OutputPopUpWindow; import com.application.GUI.RingProgressIndicator; @@ -162,7 +163,7 @@ public class Main extends Application { treeSpeciesText = new TextField(); treeSpeciesText.setId("sideBarLabelText"); treeSpeciesText.setPromptText("No Input"); - treeSpeciesText.setText(TREE_SPECIES); + treeSpeciesText.setText(HelpingFunctions.TREE_SPECIES); treeSpeciesText.setEditable(false); Label dimensionsLabel = new Label("Width x Height"); @@ -170,7 +171,7 @@ public class Main extends Application { dimensionsText = new TextField(); dimensionsText.setId("sideBarLabelText"); dimensionsText.setPromptText("No Input"); - dimensionsText.setText(DIMENSIONS); + dimensionsText.setText(HelpingFunctions.DIMENSIONS); dimensionsText.setEditable(false); Label sawsetLabel = new Label("Sawset"); @@ -178,7 +179,7 @@ public class Main extends Application { sawsetText = new TextField(); sawsetText.setId("sideBarLabelText"); sawsetText.setPromptText("No Input"); - sawsetText.setText(SAWSET); + sawsetText.setText(HelpingFunctions.SAWSET); sawsetText.setEditable(false); Label moistureGoalLabel = new Label("Moisture Goal"); @@ -186,7 +187,7 @@ public class Main extends Application { moistureGoalText = new TextField(); moistureGoalText.setId("sideBarLabelText"); moistureGoalText.setPromptText("No Input"); - moistureGoalText.setText(MOISTURE_GOAL); + moistureGoalText.setText(HelpingFunctions.MOISTURE_GOAL); moistureGoalText.setEditable(false); Label timeLeftLabel = new Label("Time Left"); @@ -226,11 +227,15 @@ public class Main extends Application { @Override public void run(){ + try { - Thread.sleep(100000); + //Thread.sleep(10000); + wait(); } catch (InterruptedException e) { e.printStackTrace(); } + + while (true){ try { Thread.sleep(100); diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index e4a40bb5a814f32272d6ba8147e2d80a53fd2771..8a8f052bedc04191e9b98cb78b0532048a14e669 100644 GIT binary patch delta 2411 zcmeA%yKh*3>ff$?3=9k=4DYxY%o*meGtA{;U;@$exEM?r=5sNyFf0IxECjI@fr!N% z3`;;FOF^7v91P1r^a>7!l^hJKI2cxQFs$KVSj)k%j)P%62g3#~hK&rHI2l+NHghm+ z;b7Rx!LW^kVLJ!I4v^SRt_%hihFu^7c7upL91MFo81`{6?B`%O08(&}gW(W}KFq;z zgp1)Q!!a&~;|wQ2tdk(&QydJZLG&3AaTY|J0}<!h87{ChT;yW7#BiC5!I<F+JHyq< zGK^}I7cqA51o?ZpI)}u2x^OUDo4kohi}Cv8yG$*NH#R3RGc$5=24|+{C6<&HrEX4U zxy{IUbF)3$Tvp~{hLXwmxlJu@G2G^1Xk@77VYtI^mxo~jh}Fta&B(wRmY9>9T9TPu z%)@Yx;XV&T2S}9JyF7!3p_ie0vJX!O55of<hFc5|c^D!Yq9#A!u@_2Uh~i<G1TteX zh?vGuJ=u^qN+gRRijjdcC^a!BEHS4vm4_jZA!_n`UU374M?4IV8J@5+Jmq0{#_*hn z;RVA>9tH~rOGX9;9tJB0OCAPm1{)p*TM%K#U^Cf~Pn(C~6%WH}hBrJ6#SCvZSMYH% zP2Mh$TyM_6z@Wt-3DV5Kz`zO845qCaY{0ZFl(qxYk_`3?4h)P8jtmS8Obkv8k_;{k zmT<l+gCv6+gAJVT&LGL)fh6zAAj#l`#1~+YtY`2>5|Cn$Wbi@aOEX9^_#*LT86+9} zkof)#k_-W876u~8^D{^?1R?PS7$g~jk@$iP^^y!BNCH9(k_@3pd=UmohA<?)D1#(J zIFf}C43eNoWME{728T!tgCs*Nl6sJb;*j_t55*(#W$PIv84?(xPz*>!vLJ~;k|7yM zgA#)zLkbdKnL&~v6^Sp%Ajy!1#0PmO9f_~PAjyz{#IILnkYvb2vJm8>EHnpYBWX}) zkYva~;)8sYi^P{@kOU=D6c6Pi$rmt4G87{0^Jgex;AdcBC}t>OU}Pv|U|=w2U}Ruq zU|?X?+RnhZ5ge*z3=9mQf`);CkAa0jfT5fLl+3}37%CVl!RfS$p_+k-p>(p2h?y@) zy$}Nn0|P@20|!GcgD68DgEB)tTptI6EJF=LEdv8X9n>U<NIe4sG#(omxInoZY@(yM z_~c_EDoCc5GH@`IF-S0!GiWeWAepMf(1d0xNTeBVY6}A=Lo3vs=AybtCe|=;Fw`;# zGSo3hG1McOD1u=kNTdyJVmkvDsDJ^xbEBwFJ;>*B4D1XH49yH23@r?T46O`O3~da` z4DAd$44n*?3|&a38#8pGxfdjYY&s`H7ehD5bOr_n8E~{PFtBW5kl4V$z`)1=vW*Qa z+6M_Y9)=zUE>JNC(lWV2%q$S3M2vxzfq`KX0|&!o20?}?3{nhJ8I&1jAUQ;qp%2X= zAQ4oD^g|pnnO|H~7Gx^K;yDnD!S+so2CbvGHB!(nV&Gs{%pk$Agh7L0DUzK^3=`4p z1c{(V)+DHjC&iH?Yb65*!zu<rhSdyG3~P`~1Vs&Mq5_E^`+|#MGStM4qFR%4C6tgN zYy$%a!$t-{hD{7o44WC08MZL!Fl=M6WY~^mgE7MtG&h4pkZs^(m<kCe)Cf~UkFed4 zaDznHG^nGbB#|R*KLZED0R};agA7s(hZvL@jvzTimSH-YLqH;^4w(UQ$mE5RqF`@A zBJ2djVul_D4u+ZVOn--gjR6Ff2x;zM(AvSEy^TR<GlQ;>-ev}Umdy+XteY7O1-Ldd z80}^-j%3}-U=qp9v4ep%IFdzx4Mgu?Fx}2zwwXZ!AunJIl89sxu-L&+&l(I<A%~<w z5UN55M8g!QAt?|BNkp;;fN7Wl4N##3N&IRIoD2*M!VG*2q71?e5)9%D(hSlJatsO# awhRsot_+C`(F{!tNerBf470!`*=zux%w^dC delta 2985 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 Ngn^L(6p~B~8v%Ot0l@$O diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class index aded3c064c967f49860ea32d288755bbb1f6538c..fe602725abb76a5f28ac86b93ded577f0a26ae0a 100644 GIT binary patch delta 8126 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 b8JHNIKr>H_&J349<0qhz6NXBLOKh9~)_Eq> delta 8147 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 SE1<y@21W)xhAM{3Y@7gm3ogX~ diff --git a/target/classes/com/application/DB/HelpingFunctions.class b/target/classes/com/application/DB/HelpingFunctions.class index 77d4802660217db2dbb5a825bf559f40a6d64f55..02c6c2496dbe75eab1bb4555c012c1fd2df6346e 100644 GIT binary patch delta 3247 zcmca-_Qt9H)W2Q(7#J8#7$>kZ?BHTZVA#pdu#1CXHx~ml!yXQXy<80Y81{oW2iO@7 zaxfg?V&G)h!_IJ+i-CvX2p7XqhGQVsadw6iTnqvXC%G6-F`VXNh-Wy%#URRXmYv}o z2g3yr^CF121d_hY&Ts{!;wl%zHHP}@TnslDZn87n;%1OyxWmqHmy6*Z!+my!2OJC! zxfqlf_JH`0xELNYJmF$^%J7Vf;W@(#E{2y3uRvzJW@mT<Qt*zGA)etq7sCgJkK7EO z7(R0|d|~(sBEGRRd}n9)!Np+Au#<z~Cy4$9BA#(E7%}|jVyOSa@Ry6>AH#nxhChr9 ztPEhl{DO-io{^D@k%^I+i-DPug^R(Lk(HZ~jgg&`k%N(wgOQ7ifsv7$iy@Yghl|0O zk(Y~+kC7k572swRWcbX^D8$X+%_z*yD8j|y3o@LMQIv~O45XToQ5>XM0z^o1)iX*l zN^>yEa5BU*%7O?v5FrmD6hMR`h)@C%%Iu6PTnw=cJJ}gk*%{Rs8MuN&9D_pQLp*(5 z85x9pvJ%S@^>Y&Q()EK&iZb)ktr;0OgG2lSpbEG>gX7&i{XBy`TwNF$7^4^&ctV0) zUG?IF16-XwU4t1JxLiDaUHyVR{r!R&8Q6jy!-HKz7#Vnd{XK(2LW5l6-TfVXHd{0D zGI1SbXH;irILyv)Vsj8PJ0laL#^h+0gv}RN{xNbgYO*tYXJly6m^_2cbTSWnKs|qY zYKdRIf0}bfVs27uQ86O}vxcT8BLiz%W>IkoBLk~zUP)0UBLk0TUS4XEb53G$acVIm zgDAvDr6rj;`o4(;DqvOCj10nMi8;BcC7H>^Py;<(f*Bcjv&%D(`8;_r8*RZ>c40Hk z1|kR!G|#+})b!LMYlsloR*%Huj7h9AoJbrkb~|f3Yj#GV$x-Zq%y|s?lh?7EisdnC zF)}cRhB&h`YV$DaFzWI!>M`n1{>ff#o5yIt&S=QPXvApD!)U^g&&VK*h^UZ^qWtp2 zq?}Y9MpH&Jc1Cj^Mhiwu9)?PWDjr5FMw`hSIUFW&N(eIAGTQMl+A})vFgh|iF)}Dk zR^(C=<zZ-N=wN4b25E9(XLJRraGRXKY0K=+=rMT#rvf{p1`nerqu1o)ocbExj6Up) zzC4V6jQ;G50X&R>j6v*-!63aM?2Mrxy<t2IoeW)*<+%Jc!WkoY7_u0$*%>2w7^4`Y z*%@Pa7-JdZ*cml>7~>feco-8IlNcE^CNC6LnY@!rxjvaOg@-YfF^!!uorf`lF_WD! zi-$3rVKon94r4A4Ln%WUJ7XRXV?JX64`U%?5r|dH&RD|3Sjt$&&REXFSixAy$e`ey zpI2Oxm{(G)m!4V@oLHWlnUhnjp{ZA#S(U1xX{Er!SjAY)!&n0{IGM4Qow1IGv7S+j zr=GEav5}pz2^PBG7=tGo9>!*nYXuPj4~=Xd#umm_cE&ay#&*V59>xw3(Fqdi;$iG& z>|taO@bi!NcZ+xSaP)O@4GOkW;9*E)NaA5g1`#O?sXPp6AXYjLh|B;HnG8vrrMV|D zG4^d<$2);-vWrOV<f|eXsf-K)2<w9@i%U{-85x-KOH1GhJu_cFpeQr1B)Fs~H8Izk zk%1d23>X<iH8jzZrf*__H6sHHC~O!RWHdZAeI_5^60Zkk5wKOL1~M|R7l4e<$zx>T zNCoA%;M5XE20;{KgHuba85wxN+QDH6R>PK_TH>8r$;cp^o>~%?n3GtXniqyG6N+nS z`qU#dI~ElsR{CTXgUp1ada#*rVMYdVgn{0u`Bx@AwZyR~D={w}t4(5XX*7L&@?iVH zS=u+TB!iKGIX5$pk%3ji(^J!vow0xNLjjS=b)tNeKk#x)&JtCvk7r0=U|`^2-~>f2 z0|NsmD0abg3PUQGPGd*{)9Fw;14?ItX%0|EVPIs)VPIfjV#sCSVqj#*W5{P<WGG-@ zV9;k^WME`qU|`kS&cL)0tfY{Efq@MyD8Nv}Aj!bM1Lm+Y6f=~7T~f+W2GTwGy{MW# zNHHG+GXn#IDgzgT8iO!{IztfyL=P7OH$yo?1p@;E7pTZ!U}7kk>>{?X9;8Q(ft`VY z!H|KA!JI*q!Gb}G!IHt6!JNUF!IB}3!3u1K76S`|6oVo|HA4*pBZDwQFheav9Rm{s z7egFFJwpQn149}E6I8a5fq@}{f#W}eCIbsQLlZkgGdn{IJ3}i2BRfMY*M9~!urLEi z&<!f;&d$*KpFx0ujh&$hEWyyq0N26%pMi;i31Sih14A1F0|N^KBZCqH7pPPNdu5fl zKG^$W;A+`}ftkURfset9L4?7ZL6*S-MNcO~7g!I6L{t*O`%w%c4ABg-3~>yK4Dk%w z3`q>849N`c45?u6i!m@UFfe#BbTjlYFffQPm@@P-^f53pfV|4d!1RYfo1LLw8p#?C zh6xN4!PXp+Pz8rF7ubkm25yEjBqK!_CV^81Hv=csNQCz|874DK0hz(Tz#s#TcLoNQ zO$@pl7#J8B89+{lB#j1WdYa0>!7z<sIz$I!D+3DyHv<F1Zk=tDGbHzc-Jr$5#lXPO z%b>{6&!EaMfx(ku3PS<IbcX2+GZ~gJ%wbr`Fppt7!vcm~3=6?-jA7tpC}41Bn87fU zft_JGg95`WhS>}p3`-b<8Rjq~F>o;`GE8Hb%P^0D4P+C;e1>drqi8q70*0Aj7w=|R z$gl|H^LmEe42v0(z{ztr!xDxh1{Q{;(8S5Wu$y5%!!ia2aCnL^u>4`*W@lLbhryPe zVZ|?o++Pe#P%o}z;AB|Euo{%)85kI27?{EFy_(sY*@oG66NB?^2II)>3?@P@+ZfDt zFt~1GaNEY<zKy|r8$-PZnD4oh!Hbc>Pj@GS0VBgqhGN~F42Fyh2N=AqSR`3?GWdYl zzS|i51ZoyA2<~9;-^LJNy@Mfe8$*B%io77hI<SHuh=O2{0vRdk9Sk7}$nFT;#$YA` zc0#@RHU^L7|GQ+?fRisM_Ust=85kIrFfcJJWnf`g#=yp~oI!<Q1%nI2N`^3oRSdBV zs~J)l)-sectYfHSSkKVPu#uscVH3kLhRqBs8Mc692$U~f7?K#)Fsx@_VPIld$*_T8 zCfJ7M3>(35z{aqYVH3m5dayN+!T_RSGXo1ayd@b}{xcXburM+*vNJ4aVEDse%+9by z;U|MK0|&!ac<Gb~ibVzn23;Z3%?x26BAj_MLj;Hs2_m9EL^Ozq+076ext$?yGlMRu z6oVwyTqOn$aModE5M|(E5NF_HkYo^MkYbQvkY<o&kYP|_kY!+E*aj~4wll0_U|_If zU}x}VWMf#%#>pVcaEjqP11EzVgA~JU22KWT1}TQO44jPCjJ*u!SvVPPFkA!EFBzUQ IoM(^(0C$YJ_5c6? delta 1749 zcmaFkbkD5*)W2Q(7#J8#7){w3y15wK7<$+ldN~;SxEPoj`Z*XTa4}3|m;~ZXW@nhf z!7!DJfs>)1onaam0}sP=E`}KlGeN9b><qKH7z7yRa52nfn8(H7$}pdcL6l(uJHtW_ zh9w~8QV_8WB)y!SVFgIVN-l;~4E3wI7}hYXWoKB&%^=0Fft_I^7sDoo&Fl<YI2g8a zF(@(ggZSIH7`8L);9}Uxu#1afH^Uw-hP@2?KxXV`XE*>-aEOz^mEkZK!x4s~+ziJU zj&n1dU^odPPO&qbW@k9V#bC_P!@+PCM4tl@ySNyP7|wGs*j`|`$i;Ap;W8J)1%@lE z3}C?g0%Z18E{1Ci*Fj#t!NqWs;TAW;ZH7DS40pL0oI!zfkDcNEW-TUOCax*$3=h~D zrm-{3-t5T2&d9{@aIzO`0;AC6Kyi`Ht62XrvNAkkXE;51Eqmu=FHV1EZw8;qb2v@K zycr%dGBAgRII}Z6;bC~n@QjDyIm3&|&pE4Yy%}DzGrZzqc+K#Jhv6-Q4<mzcR$^JA zeokUux_(GTQGR)1Qcfxl!#jre><k}x7(Oz5;$aA52<Kt=%<y&cd@cuG9?!hI)FS7c z#Ny)A;>mZpqy!nhF?{D?_`&d#hv65)Z$<{C$%!mVqC5;K45{o4e?VsZWoP&YQt^MX zJ-01010&<)dTs@FhKD?iOpMHvmvQTBvoNx<GqUk8vNLk9Gjj4UaxrqVGxG2-d}QQh zXXN8y_`%4}!;r?1&d6Xo`JssEWK$k-RRKmp9tL*?4|YZ&9!6nC5q3sV9!4=nadw7B zJd6^Il01x3jM9?}dA#gp7-e}F<rwAJ85MXK6&aP-8I^e$RTx!y7}Xfnc^HBig4r20 zco;PqwRjk{8FknhbwM0Gc1C?3MgvB}%}04BF)<o%ju4o@#=@+j={fnCSiO)SBH%pp zN>bBPizX+FXR)y}nlLh`Pqr15nA|97qU_4x#=yY9$iM+|DFY*eCj$cm6N486Cj%pc zH-irYBZKc`0Vy$cKL!Q{HU>rp1_l8Je+C8y9x$7gA%G!}fq{Vo<VLVsUnw<xkXk+l zW(EcZX$CF^83thnS-2i925yEBhEN6u1};#%F)%UsPF^InupXpGj)9$lfkB;ti$Rw` zltGU{ib0>jnn9PrnL(c+jllqHh86=0gA{`zLj*%410#blLoh=WLo@>u0~bRaLkvSK z0|P@E0~1s>j)8$8f`Q{dgC+wDJ3~A>LjpTPB0ED810y>_64!qQHn1=QNYD)`>dwxP z^q)b1fsLIZ9xTC-!~oa9{GWk|feB&~0|P@c0|NsK10#bH0~aVQfxW^ZqYw7J7y~Fv z*)cFP*fa1kI53DXI5NmG*rDi2V@L<<Nt1~}@_qn=2ty!)EJFx`B10&HHbVr1DMKWK zJ3}<s`(g}C3=9mO3>gfW3=9k+45kcO4A~5f3?Q#^GBEvN&}L`Ikw&tHgCUn84`dAk z1A`C9`5<jtI~X*!F=*~!(DKn{-pio9ZL+;A2iOf<VDmE>xEXSg>=R+gXDDD`VBlup zgxZJjJ10XSLlM*h8E~RtU|`wApt}K_tU%EUNj7EBq*cto!BE0b3emyX%D}?F&A`C0 zTW8zkW3v0eZqQ=jVqjosW>92kWl&{kWAJ3?VkltfWth&;&#;7H62nS{DGb{grZMbd zm=1Ph3<D=a0fRe38ACY(JHvDa1%?WSN(K&wB@Dt0RSX3TTnvf~(-^85Y8co+HZjyP zcz{d0-3)aM<zN@@W~gUq0QtP0VK+k~LjgGL?q+CWC}3b=Xojcu-3+x1Ees6cz!qU( z`NP1?&d~aY!Iqt&?H5DtF9s&47uy*)7&;(%hk=1X8Duah@OCpeM{Z|u+03B35iM+l z8JHM4K^f1Ap^ITL0|SE*0~>=V!(4_%44e#d3{nj188{iV8Kf8vGH^0{VKib`#KOt2 QhG7+$-pjC?VG)BQ0BgNAdjJ3c diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class index 22435a873bdd72d725141bb68ad28bf4d1bb7f2d..ec23024f7901048579ea5337beb875b1acf78e64 100644 GIT binary patch delta 3666 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 delta 3271 zcmaFhc+#%^)W2Q(7#J8#7&mh<R5NVlV%Wy8or_@y!%lXFU0e(-3|l!Fb~Ee&vG#H> z>;uvJ*%=OSFdXD!;9@w$!EhKvAK_p)%E8di&Tx!_;W!7w2`+|{45!!`PIEDcGMwRH zI18fBaWI?*(MLeU1rCOb91NE@82B!8FkInaxXQtBjf3Gj$HY>jdUl4F91O3x7)(IM zzXs7qgcukYK7v@E*cm>vIjAsz0T+Wc!xs?om7U=mH^X;^ADj$78GeC8ezP<DVRL9Y z09ME5Q11X{a51<r`~?yJ*ctwFFfwp4GBPr8F)}l<a5H>oWaVODVPxZ~XJBDu=Vaty z<OC61TnwU&+#nVYh~Nbgd>oAYTnvJY0vwEjAX*3{D9ptu!YB$N#6W~Nh>!r8D9O$! zCB(qUD9go=#3%<M<Uxc2JEI~OLpr095CapVEXV{E4n|cjMl~-+buLB?Molh8HAXFv zxHcD~4x_FR12dyO7sED216HtK7?@vxBn?4k8F4WhGn#;unF=wmFzSQ2=Io3Xn^l;^ zSQr&ITeGn+PWEC~4X9zLWoNYHVYC9#);x?>j5dr6LRpDriD?!3#U+X9srtbnlAY0( zhtZDFo`=za(UFlsz%#F)v_v5wu_!S&wIsEun1|7c(V3A!YO*4$sFF`&Qfdw(11ne& z4?_(|h9eWCBP73ohtY-6dGa@QBQ{qaMmI+H$$A`0W;Ki+j10oTsX3|1B?=)$si_LV z1*yrIsl_~uo*>-<VBIc7`2{Zd<#|r|6+DbyjNX&mIOb0_<uqoL23b3KDyO-qj{u`D zKO3W;0HZ$-V*q0y4`UEx@Z^V_vW7K`Av}zsjA4unf-vtTr{<;V`{k#kvNMMBFh(#& zvNJ~UFh(=R@G!<Q#!c4e66dI4jOSrYU<{k=$K_w2$itY#n9R<Y!o!%#n8w4H&X~c& zn8}#M!<Y>Uz8oILT*f>e#(WS_z*xw`SOj7fgNPEwJVpjaRUXDt#xh0*1|G(8#tI(B zO2#~P#ws4hYDQ-s#u^Y&3nJ=3L_I?-BZC0QsrosIdFlEg8S+J`i75gMwft<14LppE zj7^}RZRTNYVf5x<Y-OmOT*xg^-v*X%=V9z%>||sRuB@!A)b;h%O-WJk@UY6wwJI)V zXYAr(>}Kp?XYA!+>|^ZbVVuA?k%w^-$Ssq37^g5!<!57@2C`r}5918RW*)|wjI($c zXEV-WXPnE!IFDgH5955Wq6IvR3mF%oxN<WG&oV~l#f(cPZ{(F>_GVnV`2w#F^JFE# zdz1Nv@|e9DmrZUEN|f+sT+YbA?HL^J=IQ4d?BVLd$iNuI$e=XYT3BhbxUe`Qvp3_4 z$%Z1^nY|fTPJS)oF29P0aW&(59)<-B3waneFx2uetO6117}oPJY+_hHIZ)J;apUB6 z(U**yCKrnN)O#~jgL4H310zEXLoEX%LmdMHgFXWz10w?i1FP0{2F8sH3=B*R^$ZLQ zY+yk-h6V-(1|Be*m7$TLiGhKElc5=|SpzJ?z`(JCfr)ts12afJBUnEl12Y2ygCYYn zgAxNfgE9jr1A7ZZ+h%WZc}8*dZ445UTtbrD7^Eb*Shg`p?`GhN6w;mCC?Qg>7aYkV zq#qo~Dr68G$tGkN9LX+Z6dcJRWE{MMLBxt@H-l)TB+qsRF)Ln4ULmkaybzOkAtsqb z3Yl(aFtg&5<P$RA#$X}IC&?noF3BaytF?>4l7V3xgVk;Z>qrp>o9zsCR{WCu+ZgNx zxb`wQL^5j!M@|-zG^}@IVhESy-^Adwjlp?0gG;0&zX*e?2!s1}22U#iNr7z)UP9hN zKHC_4w=wwbWbkKV2-gCM254<#2n2-!GdL7BG3YQbFlaDvFlaIGGiWo2GUzeLGw3s@ zG8i-HGng=#GMF;BGgvYNGFUN0FjzChGuSYsGT1W|)H66RlruOoY-jLgIK<$`aFW5F z;Q~Vd!!?FbhKCGc3@;eM8Ce-(83h>P7{wXl8RZxf7*!aO8TA=b7|j?`8RHmo88aF3 z7z-Hk8Os?87;70y7&{nB8T%Q^85c3;Gp=JSVEn{b#Q2M`go&H6lu3cHj7g2LoJotZ z0vzS_YZwF>IGB_fS{d3H7#QT4co^ClIv5xk^cnv!bTV`>Ffq6@K4Iu$=w@JM2xPp) z(8JKnz`{_#xSOGmp@V^yVLM|9Lq9_|0~^C3#!Q9@4808O3=bK-7$!1wFmN!kGO965 zV(4bzWE5bOW|+*-%fQ8`&+vy~3PT42H)9;b*?NYl4BZSojF}9F7^X4wGVn5XFf3-6 z&M<?4k8vGCEyGNPSq%J4+zbi~vl-?v2r$fLU|<Mh;D9=69^6s$8CalBnFn{ud<J%? z1LnaUFrR@7WG%x~hIwFH>p|AeXW$j!0%b2qR$-E2U}j)vU|@K&i6Lk+L$KC1hL8gc zf}0sawPCC<9T+QIcN;^<F$Ogdb$~%oC}JB!<V*%}I9DiY8$<MFhM46Hyil>t3^5=R zk27!xMQyH!7z*JqfQ^N+!3IOwF`F1dcQC|mVhG#85VwgTd<R4PCWe?D3<;7f+ZYme zGbBasVn}9S*v^n*#U{zdvW+2Cl5HD9+HwXi5Pus(21H3FrjmMunvD!h3`-gIF&tz_ zXE?#|kl_hKIs+tiw=pO(Ffddzurbsz2r$$$NHH`ps4z4#STQs+_%XCHL@;zQ#4~g= zq%ia{WHa<J6fjI+C})_+P{S~pp&1<4(;500W-v?vN9Qbt1q^c-mNGnL*v#;)o?$1$ zcZPiozZniP{A4)H@QdLD!+(ZrjKU0e7)2N!GD<K!VH9I{#wgD4no$~@V$&G77&bF- zGc00Q%)rKQn1PjH3BytbHim0(v1f2G28K7_1Pdw--+&V*s04fiPKZpP2xh1UB|2s> z6O;p3z^r8q%NbZ1RxmIyh%j*dX7J<W=H}+EU}sp#77Zc<xIhIkB&{&)WMBc8jTW02 zvSu;p2xaeJ$l1Y=yNw}lGeiCkh5~P`T?~Z`3_BQ#L>P)UF_gAu?qDce{{PBy1`cnn zZ4C7p8^PN38H^ax8CbxDi53GF0|O%?0~;eVg9sxFg9IZhgCZjjgAOAvgFd4GgApSi zgE1pNgE^xhI7Gx4m>47&L>N{xtYKhaFlJx@hX?~WuYihlh}>ER2C$bn8CV$foY)yw zvIuZ7tgB~O5A{eI10w?{On9|+FqAK6;PBDj#sGC33j;emEr>C&GB7Z*Gq5mnF|ado zFmNz(GVm~R!yUo_wH_4Eyig~BLXw?<$sKCx21xzDz`)STP!Fk;#C9-LfI_Mg98%D* zf!fZ?AOH^<DF!wM28NdmEDWz0co{x32rztP5M=noAj<Fs?gADDPN=<tP`4n00wM=0 zx1nyT4}dyq6FeZ&p#j0CwS%E595p0Z88}cwg5eDVE5myR4u-c3oDA<6co{yx-2n<{ zP|^g21RvBzP+L7fmNGCiY-aEW)x%pD*D)|Ka4|44u3_B3xRybZ;SH!4!obS#mVue! b9m9Ku4<Ht!G@}foG?b+bXX(LNW{lDR(i)Cg diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class index f30d763a28232c3f200b56a674d1c96e17dc89e1..c16bf4ace2945df72d5db9f7d92fd70762c028a4 100644 GIT binary patch delta 779 zcmdm_a$AM#)W2Q(7#J8#7}+;+=`wPzXV}2bu#uf%(`E<8yG)9kc^I}ZY~^9t#;~1{ zfzLNTv$&+RC{@8ZBQ-gjhhYc9&dGKxigG&{88|ZY3Q9{t@(Xwvb}{T^XV}fdu!mtU z55qo&{gZ216qye&?47)jCEo5J!(K)P0jK=@lH!u0!~);cl8pS6VtzJ;Ljnwk`Pmqb z2rwMwVK~NcoQL5A!%0R4Hn+^Y%;F4wHilD-3=)$MFiCLnFnBPW=3zL)aCUM6s~Fok z9)|M_7be%RN^)N0VYtL_mXSea@&Y!I$(vX$j4tyqTw%D%&Tx%~;X1<&9)_C?w|E$C zGu+`}xXa+l!*Gw`K0Ct$9)^buH`o~-@i07QcrsarP155j!!1Sz;mXR&N?l)H-INps z4-c!{T&v<@c7|s>49^)}urs{mVR*&xnup;H!&`QScRUR589uNxeB@#H#PFGi;S0#{ zuM9gU*Rn})e`D}uXZX&;@Ppy!=DBPUjLg3neoy|vF30+ZkwI2tvOlxjWJ``d#=o0S zaJ*qsR!+{()lV!a$jMAjEXmBz(|2*w_ejkt$jnQ3E6qy=2~EDhJyBK$i#q50yyB9? zyprO{@jQ}j|9BYwGcr%E<FRLCoxG3dB?}uPgX&~MUh&C?cvBgLH*4^@GS-VTa4<+P z@H0p<h%(49$TP??s4~bg=rAZUm@z0Z*f1zFI5Vg)cr&On1Tv^GL@;PGBs1tRWHIP6 z6fx*A)G^pGbTZg8Oki+en8D!4u!JFyVFN=D!w!aEhPw=*4DT4i7?~Nu895mu7<m~Y z8GINR7=jo$7&sW&7y=jq85kzN;Xk74%pkzv!l1z5%Am*K#$e6h&fvu0$>71@%izu6 z&EUh}!w|sWH~Ff-UQGiA0R}?`1qLGq6$WDlLk1HDO9oR02L^KnHwGI9PX;RnF9vG{ yKL*>$y9Ir;nHU%txEL5285mg@85txQ>KPaq#2A<u8W@-v8X1}xnxU+AhGqbj1kEJ? delta 693 zcmcbuvPp&O)W2Q(7#J8#7+E)R=`wOIXIRh9uz{Un<7NlOyG)9kco;S_Y~f+p%CL=* zfzLNTv$&+RC{@8ZBQ-gjhhaOzj>&c`igG&`88|ZY3Q9{t@(Xwvb~5Z>XV}HVu$y5I z55r!DeUoch6q)xk?3uifCEo4;!yZNk0jK=@lH!u0!~);cl8pS6VtzJ;g8~eP_}Lf^ z3osnvVK~ZgjECVk!wE(PHn+^Y%;F4wHinao3=)$MFiCLnFnBPW;$b+=aAtA>s~Fo^ z9)@!a=O@>&O0r$xVYtX}X7X%Sf1^u043`<MurplcVYtR{ormED!%ZHBTMV~(81685 z@-W<GxW~?LpNHWA!*zCshdd0A7#>fSVUzTD!f=z3LAbKAvQpRAS2ra^!NbEUH`l7T zn4RG%55qHt=j;qGco<$Xyy9Va&G3eu;VlotJBIh{3?FzHJ~DjbVfYL({0qa5$+c_} z9A814Zw%izFJOycWd6bMbMkL?Io4l{46+)N{h8$^+i>(T{@#3=;|<f~Y##Z^ce(py z1^hyNom_+B{oUf7JzSl=gBckZJ=q!l@G$&kWSqR5$DWaS@^hY-j4YEc^42p7Z4Tsf zWvmxt;9wAE;AfCv5M_{NkY|u#P-T#1&|y$uFk?_;uwhVQaAr_u@Mch92xL%Yh+xoS zNM_Jx$YRi8C}PlMsAI5Y=wz^Cn80AqFoVH?VF^P3!v=;xh8+w+40jnq7~V02GBPuS zF>*45Gx9P-F!(SqFa$AhFmN!kF$6FKGB8XQ6*!{m#2~=n%%H&F!l1|C%3#gl#^A)@ z!QjE*!{E)}1ttR+d?)`C*sH0}Ai!Y2puk|rpu%9pV8~$1V98*@;J{$U;KpFh;K^Xg i;Kg9Y;KyJy`H7$pF9QPu0~Z4$!#_qQhX0doh2#JX5448> diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index 96fdabd6ebabc2018a0dd6405c464e591d7e57cb..a51def592eaa17118238adab46681e5e8925464e 100644 GIT binary patch delta 755 zcmcaEcvsNo)W2Q(7#J8#7)m)Agc%ID7(^HhK`bK>Va&x~!eGkIV8+G3#$e9M00Ai= zMHXBPCL0}|FiJ@>NbxX8GpO<~h%-p=Fo-gUu`~GdFa$8DPPS%JjZ@`e2x184VF+Oe zWoHQEVF+i4U}uQrVTfXgW@m`uVTfgj<6($rNMK|TaLUgwDK05WEbvV&$;eMB=4WF_ z6kt&0XJ<&_VNhX6W@kv@VMt|2V`oU`VaQ;}WMoj9ypcs|@;#<#OM$G!vPAuy#JqHU z|D>$c<Pt^(mh!~R5=I98f}+g4lHiiW<m`~5#N<>)2G-)7)YJk-1{Mu3&9Kec%$AHC zSq#}+48jaKlh?2u=Fa6|$YUtvVbEewom|Cg%2+&k1M4l85=I8q$%bsQlUK9pXbUrl zFfcGMGcbVs3l0@=1_=fR0RaX{1}U%%BZD-93<D#B>|`c()p|Jw1_mJp76t}}2MnAH z_ZavX9x@0sJYtY%U|>)Hn<K)Yz@Q8^Nd#;LBLf422-tKc21W)I233$*3=9kp8CV#Y z7#J9Qw6-y@E@$BI(cZ?uF2caEgMn)~gA|yjwT*#$8w1Y{2Hs5!e2m)L82CB0b}<Mr zFzjFuoV<};rk;g?oq>&khe3!zl!1+bnE~WFD+WFW28NdmEDUcL*co0ia4@`P;9>a4 zAjI&ML6qSWgBZhS1}TOw3_1+o7)%*{FxWHvWbk14#o*2G7w!uV1{MZ226YBT1~CRP zD2su?2kJ8o1_lOR23B`=VFpbW4|WDkF*yMyP#}YRHaVU{EJ<i10|NsS*g0$rpaA#= zHkt>_=7Ac+!k`USrNf}hz`(%5pvR!kpac$HCI(>!1_nh228MiwB8CD6Nd`v-1_qFB NCkAE)X9gDrX8^?!a(n;) delta 796 zcmcaBcwNxp)W2Q(7#J8#7)m%9L>LUY7(^M2KrCYrVZzD)0*q}7K;owC3}##m91P|V zQ3i$-E(VK@HcuGEr5L1n7-SgKco-xYBzYLb7{qxP{22l!TQR9ds<AT!@h}84gs?M& z@-T!kgtIe5@GwL&M6okO^Dx9P#PTr2F~l=62sq{EmlT&2B^LOmmSp6o6!Wt&BnU95 z@v}1|@-V0}B(XCj^Dv|^q_Q)l@i3$_WK7=0)L_I~oRgYbz{tR&;iVbI$iQDvl$lo& zT#}fa9a5B-oXW@`kd;`LsGpOVm#*)hl$DxXvbmVql94x)A&ZMagdv-e!Aiqt@?IvT z$+ubNaOdza<T4cSFlaNVO>SZ}Wh|P!gY_0mF(ZTO<o~SVlLOe;CU0ib(H3D4Wnf@n zW?%sM6cj)pZ!<6m2rx)7NP}e<8Dtn_85kMlCUdc?*2^<6FbFZQFfcG&XW(SG%D~5P zgF%?#CW8V41A_wC91#XZ1{JVLB49HZ85kHuz@{@XFfynzsDaF4U|@L6z{0@9z`)=q z!oa$NfqgjxhmZC)22K$ME-+6D%+uP&z_X2kcLxLCCI)^+?QQi80$RHm1Q{51FbHWy zZed_%N!ZH3thI%KSs-P}|KrOUm^XqAWn<uE;9%fm5MdB!;9y{806E)=fscWK;T{7U z!$Ss6hWiX$3=bIi7@jbQFuY(8XL!mW!SIYhhT%Db9>YrpbB5Opjtp-Yycpgx_%eKe zd#|30frUYxL4$#jL4rXH%3@&fgZf#Mfq{XSfz^|pL5szMok2@XPJjs%15huUF@S=A zfq_SB3j+(t(c2h=H!?6VFoE62#sCVcmtebiz-%6<u`CQaU{$&d#(E443@i-#3<eC! o;Fw@y5Mf|oP-0+U$YUsE$Y+pbaAaU$0BLt(U}kV;aA9x;0ATNW(EtDd diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index 4f200bb95090d532276bac28a3d5cf147cbf33a6..b6446f4af04adaa9f76154868bba310c78b38b99 100644 GIT binary patch delta 3642 zcmbQ{@Xo3J)W2Q(7#J8#7<Y0pv@ty4VrXS}3SvEDXL!!Vz{2o^lcAO21v|q_E(Uf8 z=M_7{Yc2*Z2<Htu!&@!}UI^zMJHvY}1_21?1IVb4AmS5<_zaTx!ojcxWaw88hHj8~ zUpeX-`a#;iaxnCQ%>2s1u$GJA8^c$2hVLN$50L7gAmSH@_|3`ihv6?s;vYN1e>R6n z2N*zr&7ldx;9}5VWB?J2T#QVN%p8m?T#T%YY+Q`&j2zsIoQzx?jNDv|JdC^`f)7O0 z^MgnM5FrR6gt!=m8AaF`ML8J7xEO30#W@%yI2a|l7<d__*cqic7-hH^oIs+oTntVO zU)dSuxES2Q9%hsWvA%LJDsVBlGb(a2Dlsa9SSlbwm4i`@lcAMS9VD#5!Kex1XmK(s z)iY{yFzSGKx*#b%4n}<t$AE*;kdx7f(U_glgoDwPiy;<drx_PREW=kJ1_nkOkcce@ zqa6pMy$}N<qYVe6BL}0C5CapV4LhR?7ef{(Dzg|}xfrq--Pjr3xft>oJwSvf7Xufg z7bq~i*%^J<{TY2Z82z{yN*Kkt7>XJFIT!=j83VZ(Dj9>=93nx1%fJBQ1%rqXcE(UH zhI)|E?2KWc2>byGu5d2K2*yZu#wd2i=*`wl#f+RhC7HRYKB;LXlUFdW<&I%wV9CtO zEMaGi-JHN8$;8PElipm!*2u^hH~9;D9S?tTYDox8TMox+ftd`mco^du7V<DGW0=Lr zAU8RIUu3d1Cl6aELl+~11c=My;gny&!_dvp0}}`X3-mJdF*3+Ze#j)l%EQplFk$jK zPW_OH43l^mwlHkvVc5m6n}^{f!zmud1ja-j#w3Po?2O5b41!sSWr=AO`o+nqd8zt- z`6;P93^N&1co<U|(|8!uK|}^)8arbq4`UW%HV<PCWA0=_E^&dGjCnka`HThZjD<Xm zMU2IhBe*ogN_ZGc8Ozui%Xt_p7%SNst9Tfz8EYm_<C52^<zcL2xW>a+&)C4j*vQz# z!`KWWS{Pe-7~2?Tu`{;wFm`~vEIIihlcW+O1B+W`4#+JG*BBXCTvIYj7#UbRQgaG; z7&{pY7#XA{KV%Y}tk3OLKbc_)BLjzDzJh07L1_sOV;9J0-8_sv4A*%WdqH;gF*YzV z@P%illw>GWD0rl1re~D!Fid5b!o%3laGjBXEjY2fIJJa_VH!wi0!WD0H$Stuq_iki z!971QhlgQ0NM<5Ph7%ND3ZQuAVVJ=%g;AP;&p9zCxilxSBr`8vPfw4XaS{*XWROy6 zup9qz`-x5wV4TX&#yCxY;Vuv3bjBGxj58T$O-|%dQl1U+T?NQ@g2kCBsZNPSPNgL! z`FXAtnI-&ejB^+nG$(K56q)QREXu{hIG1rA5954>S(9(_sEf{IT)@My0+e7DG8XVK zE@E5^N)Qv+B_`|gMljE0Tr#<XH&I|F<5C{RWuUNL4hjY-P!gK_fSpZ<hj9gCE)U~M zP~flPVO-5HYqKifeP(6l<osOy#DapH%;dz9%=|ok7bksCz-Q*AyOri8gM=n42>JOl zGRR<2>71WeT#}eqQq0J}8RF^d8t>!k7Q)52hH)(;gSdtdG_|FcrRJ6ByMjn-%`h&8 zR>pOcCkaJyv@)&-aW-uJA{50ax{-%*6XRAMhKCGyc^Dpmh&v2-Cnt-TGH#zdQ{)!Q z4n_vm$qz)tC-;dO)weRVF@Uly6GJCM7Xt$W6DWs(>0X9DFx}5E0ZdP1m;_cinPCc; zo(iR>LFwsGdIp&0XJBNQ$uNt7kzqCi1A{&TBLgD?0|Tqpb_T|cVB_X6Ffgz&)PqD7 z8RjxDFz`TBFwA3^&%nUI$*_Q7Ap;Xww=rDz4hANKZY~BU1_lN*1{MZ$6ayA9EM{O} zSi-=-z{0@Du#|xjR471=s$*aVTVtcOoq<_vH^by@Vpg6Yr^qp|GcYhXFt9K<Gw?IG zFi0`DGN>}RF&HqoGgvctAX#7obs@}x<qV7rD;QRSESPL5{;?ipS{{Qm0|P?{0|!GW zg8)Mqg9Jl3g91Y&g9<|ogBC+9gE2!KgAGGGgDXP<gEvD8Lp(z|Lk2?zLoq`(Lp4JV zLo-7zLkB}X!z6|xhD8j;3_BT08TK=jF&tqiXE@DJ!ElM8lHmqJ6~i5dT88@!bzs-o zF|aW(Fg%EZI*)<j0mCYW)eMXb91J%Y)-ZH2Ffphw>|t2Tu#SP5A)cX;VLd}10}I0< z20Mlg3>z6(88$&90itR%12a4fmoqSdN<&a&PG*;k0eex2frEj8p_74wp@%_;p_f61 zp^rhGVG@H8!(;|qhA9l54Aa5RGGSn4U|{fux{8Cr8C1wJFfs@+STby5*v`PjAj6=~ zu!CVc12cm<g9^h=hV2Y23{0Sc7i1p;19K(=D+4zJ0~7yl2Cm5M4BS4GA4$HecZw8> z+|J-)#U{xn<hqT)Z8w8^<aP#+%?weS7@|NTULZPp8-vd#kWkDv2ER=VQOw&I{C6|N zMheAkXNb3Amt+@8*v613$-avriGg7oLo!${1tiBI$sv>qlH=ILkcN;;2gz|ta@q-H zfFwD0F=Rp|vm&=MWLt4batWktW5|)@+QyK(n;|b!OOk6lL;f~~0_|-Kg#vtg85AR# zCAlUCN}JbjVu%Wk6yTO*4~`Vzk>m)D6yTNQ4Bp95#KaJ;y@^3>2ZOry26$$<#9+d} zz%ZYIgJB_q5W^w{35LZCN(@UFv>28$7%?nkux41!;KZ<!!G~cLLlDDih8Tu53@Hq2 z8FCobF_bc_XQ*M=$k5KPiJ^~SGs6sqEes3l8MZR4VA#g6kzqT-4u+i!hZ%M;oMPC` zaD`zH!ySgb3{M#LF}!8i&+vueAj5x#LyT+;hZzMJjxb6v9A#8sIL4^SaGcSA;UuFq z!zo55hSQ8b3}+d`8O|}rF`Q@2V7SOw%y5aZis3S23&Rb@UWS{DQy6YB&SYd@T*k=4 z#Ky?ZRL{%E2~Hvfkm!Xa5hiwqJq&%IB*OTYVK2iz1||j{#={Kz8TK(SGqf{yFdSgm z$H2mHn9+yfAj3WeR)+tK0t|;3_A#(AS~FZ>ILvT_ft@j&VF$xeh9e9djKvId7>+R< zVc=x!WoTkJ&TxVORB)VRI8_hIvJ4E2Y7A`P%s*i_LviG8hLT93((Mdo+ZoDz-~ts8 z0pHyWm66)p8LIq144v%^RaPvzA`I2r7;1G{wlUO6vOqYJEFj))hWg0u3=LMSlC0p! zY=jB0NwR?i>KPh$Gq6XpgOh}Aa3qT)Yj7m1Buj84n<QKCc7`TI+?z4*GB7ZTG6*t? zF(@%gGH5eOF_<#SGT1Q6F*q{HGk7v8F!(bnGej_|FeEUlF=R5TGZZpvf<xB>;yGyO z3Nq9)oMt$~z{sFf&ydG(mf;Ko6N5HGD#JO3^9;-krVP;x7Z}bnurNe0STI~<xWvH9 zkjbFVaGBu}0~@?NxWd56aFyX2B!4oPF))G4RE|vyo?6=&{Lo5hMgs<RMnkYuAVoX} z!(@i*3=9muoD4Ux84`%i5EBM=MpG0+rh*OOWVi`2WAYq1No`Qs3yNI^MhgaZMoSd+ z)1c~aLDfHylLQxJ5cM_;?2NW3>Ze21--f6MS2b{tMqzWK0|PswBc>SwTnu*@?m`1g zkAVRkSS&jjnm5+NGdCMp@G_ES7KVEa_Zb)jxIk4nrsftzC`0s~$Ex=sHjAxcdXqs_ zFsKGTjj5S|nc)%Gd5;-77#J9Y7?>FH7#JAZ85kHhGj3zt!XU|L&cMK+z`)FC!NAOD Q$!NuB4P`mNS<Z~s02C_o1^@s6 delta 3154 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 XGouazGovn}9-}^#WddiJGwK5Xt$=s= -- GitLab