From 3d74bf608325572a86f624dd39b2ccca9d4517dc Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Mon, 2 May 2022 11:48:25 +0200
Subject: [PATCH] Added timeleft in sidebar

---
 .../java/com/application/DB/Constants.java    |  15 +++++--
 src/main/java/com/application/DB/DB.java      |  40 +++++++++++++++++-
 .../GUI/LineChartFunctionality.java           |  28 +++++++++++-
 .../application/GUI/OutputPopUpWindow.java    |  25 ++++++++---
 src/main/java/com/application/Main.java       |  16 ++++++-
 .../com/application/DB/Constants.class        | Bin 6612 -> 6924 bytes
 target/classes/com/application/DB/DB.class    | Bin 15871 -> 16414 bytes
 .../GUI/LineChartFunctionality.class          | Bin 11558 -> 11999 bytes
 .../application/GUI/OutputPopUpWindow.class   | Bin 4336 -> 4658 bytes
 9 files changed, 109 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index ed2b28a..541ec59 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -1,5 +1,8 @@
 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;
@@ -27,15 +30,16 @@ public final class Constants {
 
     // User inputs
     public static String TREE_SPECIES = "";
-    public static  String DIMENSIONS = "";
-    public static  String SAWSET = "";
-    public static  String MOISTURE_GOAL = "";
+    public static String DIMENSIONS = "";
+    public static String SAWSET = "";
+    public static String MOISTURE_GOAL = "";
+    public static String TIME_LEFT = "";
 
     // Number of manual moisture checks
     public static int NUMBER_OF_CHECKS = 1;
 
     // Number of wanted drying periods
-    public static int NUMBER_OF_PERIODS = 1;
+    public static int NUMBER_OF_PERIODS = 2;
 
     // Number of seconds to wait before updating live data, in seconds
     public static int NUMBER_OF_SECONDS_LIVE_DATA = 10;
@@ -43,6 +47,9 @@ 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 3b0936d..95044b7 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -561,10 +561,46 @@ public class DB {
 
 
     public static void pushManMoisture(String moisture, boolean finished) throws Exception {
+
+        String startTime = null;
+        String stopTime = null;
+        String treeSpecies;
+        String dimensions;
+        String sawset;
+        String moistureGoal;
+
+        // Checks if variables is not null, if so, formats correctly for the sql statement
+        if(!START_TIME.equals("")){
+            startTime = '"'+START_TIME+'"';
+        }
+        if(STOP_TIME != null){
+            stopTime = '"'+STOP_TIME+'"';
+        }
+        if(!TREE_SPECIES.equals("")){
+            treeSpecies = '"'+TREE_SPECIES+'"';
+        } else {
+            treeSpecies = null;
+        }
+        if(!DIMENSIONS.equals("")){
+            dimensions = '"'+DIMENSIONS+'"';
+        } else {
+            dimensions = null;
+        }
+        if(!SAWSET.equals("")){
+            sawset = '"'+SAWSET+'"';
+        } else {
+            sawset = null;
+        }
+        if(!MOISTURE_GOAL.equals("")){
+            moistureGoal = '"'+MOISTURE_GOAL+'"';
+        } else {
+            moistureGoal = null;
+        }
+
         // Sqlstatement
         final String sqlStatement =
-                "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + MAN_MOISTURE_TABLE + "(moisture,tree_species,dimensions,sawset,moisture_goal,no_moisture_checkstart_time,start_time,stop_time,finished) " +
-                        "VALUES("+moisture+","+TREE_SPECIES+","+DIMENSIONS+","+SAWSET+","+MOISTURE_GOAL+","+NUMBER_OF_CHECKS+","+",) ";
+                "INSERT INTO " + PROJECT_ID + "." + LOCATION_ID + "." + MAN_MOISTURE_TABLE + "(moisture,tree_species,dimensions,sawset,moisture_goal,no_moisture_check,start_time,stop_time,finished) " +
+                        "VALUES("+moisture+","+treeSpecies+","+dimensions+","+sawset+","+moistureGoal+","+NUMBER_OF_CHECKS+","+startTime+","+stopTime+","+finished+") ";
 
         System.out.println(sqlStatement);
 
diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java
index c5b4225..3766443 100644
--- a/src/main/java/com/application/GUI/LineChartFunctionality.java
+++ b/src/main/java/com/application/GUI/LineChartFunctionality.java
@@ -1,5 +1,6 @@
 package com.application.GUI;
 
+import com.application.Main;
 import javafx.collections.ObservableList;
 import javafx.scene.chart.CategoryAxis;
 import javafx.scene.chart.LineChart;
@@ -15,6 +16,7 @@ import java.lang.reflect.Array;
 import java.util.*;
 
 import static com.application.DB.Constants.ADJUST_REGRESSION;
+import static com.application.DB.Constants.TIME_LEFT;
 //import static com.application.DB.DB.
 
 public class LineChartFunctionality {
@@ -24,6 +26,7 @@ public class LineChartFunctionality {
     private static CategoryAxis xAxis;
     private static NumberAxis yAxis;
     private static final double CONFIDENCE_INTERVAL = 0.90;
+    private static int dataPoints = 0;
 
 
     public LineChartFunctionality() {
@@ -193,7 +196,7 @@ public class LineChartFunctionality {
         }
         endOfGraphPoints.add(confidenceIntervalData.size());
 
-        int dataPoints = 0;
+        dataPoints = 0;
         for (int i = 0; i < endOfGraphPoints.size(); i++) {
             dataPoints+=endOfGraphPoints.get(i);
         }
@@ -258,11 +261,15 @@ public class LineChartFunctionality {
 
         //simpleRegression.add
 
+        getTimeLeft(0);
+
         return getLineChart();
     }
 
     public static void loadLiveData(Map<String, Number> userInput) throws Exception {
 
+        getTimeLeft(userInput.size());
+
         int index = 0;
         for (Map.Entry<String, Number> entryKwh : userInput.entrySet()) {
             Double kwhValue = entryKwh.getValue().doubleValue();
@@ -271,7 +278,24 @@ public class LineChartFunctionality {
             liveDataSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue));
             index++;
         }
-}
+    }
+
+    public static void getTimeLeft(int liveData){
+        int time = 0;
+
+        if(liveData == 0) {
+            time = dataPoints*10;
+
+        } else {
+            time = (dataPoints/liveData)*10;
+        }
+        if(time > 60){
+            time = time/60;
+            Main.setTimeLeftText(time + " h");
+        } else {
+            Main.setTimeLeftText(time + " min");
+        }
+    }
 
 
     public static double getNonLinearRegression(Map<Integer, ArrayList<Double>> confidenceIntervalData, double y0, double alpha, double j, int n) {
diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java
index 94d7d93..26f5a37 100644
--- a/src/main/java/com/application/GUI/OutputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java
@@ -36,15 +36,24 @@ public class OutputPopUpWindow {
         moistureCheckTextField.setId("inputLabel");
         moistureCheckTextField.setAlignment(Pos.CENTER);
 
+
+
         // Bottom - Buttons
         Button countinueButton = new Button("Continue");
         countinueButton.setId("inputButtonStart");
         countinueButton.setAlignment(Pos.BOTTOM_CENTER);
         countinueButton.setOnAction(e -> {
                     try {
-                        STOP_TIME = "";
-                        DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(), false);
-                        NUMBER_OF_CHECKS++;
+                        if(!moistureCheckTextField.getCharacters().toString().isEmpty() &&
+                            !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
+                            STOP_TIME = null;
+                            DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(), false);
+                            NUMBER_OF_CHECKS++;
+                            window.close();
+                        } else {
+                            moistureCheckTextField.setPromptText("Please enter a value");
+                        }
+
                     } catch (Exception ex) {
                         ex.printStackTrace();
                     }
@@ -54,8 +63,14 @@ public class OutputPopUpWindow {
         finishButton.setAlignment(Pos.BOTTOM_CENTER);
         finishButton.setOnAction(e -> {
             try {
-                STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
-                DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(),true);
+                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());
+                    DB.pushManMoisture(moistureCheckTextField.getCharacters().toString(),true);
+                    window.close();
+                } else {
+                    moistureCheckTextField.setPromptText("Please enter a value");
+                }
             } catch (Exception ex) {
                 ex.printStackTrace();
             }
diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java
index 2a15a6e..0f995ab 100644
--- a/src/main/java/com/application/Main.java
+++ b/src/main/java/com/application/Main.java
@@ -1,6 +1,5 @@
 package com.application;
 
-import com.application.DB.Constants;
 import com.application.GUI.InputPopUpWindow;
 import com.application.GUI.OutputPopUpWindow;
 import com.application.GUI.RingProgressIndicator;
@@ -42,6 +41,7 @@ public class Main extends Application {
     private static TextField dimensionsText;
     private static TextField sawsetText;
     private static TextField moistureGoalText;
+    private static TextField timeLeftText;
 
     /**
      * Starts the application
@@ -189,6 +189,14 @@ public class Main extends Application {
         moistureGoalText.setText(MOISTURE_GOAL);
         moistureGoalText.setEditable(false);
 
+        Label timeLeftLabel = new Label("Time Left");
+        timeLeftLabel.setId("sideBarLabelText");
+        timeLeftText = new TextField();
+        timeLeftText.setId("sideBarLabelText");
+        timeLeftText.setPromptText("Calculating...");
+        timeLeftText.setText(TIME_LEFT);
+        timeLeftText.setEditable(false);
+
         Button inputParametersButton = new Button("Input Parameters");
         inputParametersButton.setId("sideBarButtonInputParameters");
         inputParametersButton.setOnAction(e -> InputPopUpWindow.display());
@@ -245,7 +253,7 @@ public class Main extends Application {
 
 
         sideBarVBox.getChildren().addAll(ringProgressIndicator, treeSpeciesLabel, treeSpeciesText, dimensionsLabel, dimensionsText,
-                sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, inputParametersButton, finishButton, exitButton);
+                sawsetLabel, sawsetText, moistureGoalLabel, moistureGoalText, timeLeftLabel, timeLeftText, inputParametersButton, finishButton, exitButton);
 
         VBox.setVgrow(sideBarVBox, Priority.ALWAYS);
 
@@ -302,6 +310,10 @@ public class Main extends Application {
     public static void setMoistureGoalText(String moistureGoalText) {
         Main.moistureGoalText.setText(moistureGoalText);
     }
+
+    public static void setTimeLeftText(String moistureGoalText) {
+        Main.timeLeftText.setText(moistureGoalText);
+    }
 }
 
 
diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index 12b796c5c7f59d192a5504fb50d7263ec9fee188..e4a40bb5a814f32272d6ba8147e2d80a53fd2771 100644
GIT binary patch
delta 2888
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

delta 2529
zcmeA%yJB2_>ff$?3=9k=jEr0iwhSxT8CG#IFoEdRTnttWYq%I#7}kPB)`3{-LBs|Q
zhK(SRO(4!@4u&ltdMgLRHV%gE91J@+7<O_n?BZb9&B3sTgJCZh!#;-noD3`s2RIlG
zaxfg?U^vXdaD;>5C`jxWS3Ls@!*P%SCqTqW4u(@445v95&TufC1t~bk!Ehc#U*KT4
z$i;Ap;W8J)6^5%I)-{mubq<CbAo?bVxCJ6^gNQpI;x34|2O{o+hzB6zA&7Xy&hVI>
z;RzSRQ-)_;><pF+&)FGXOqOA6o4k&(h9}71%hfp~-qVGH;pOB_Oj?YuCf{XhVSK$g
ziJ6&^i!(SgJuk7Ov?z6RGRtj7#y6Yo+2*n`H!w6#zRzuH@s{Bo4?`bA2M@!0h7UXp
zb3v?03>}ONoMDMMxv3?Y$;CVj9~nOJFiZuBGJBV2@G#6`=$P!o)4{{=nTO#m!xtWg
zG=}ua4|wc_av9Qj80Le_SO6jxGjvQg<c$(3XGmvc;0#Jl%n3`(DNW^JsAfo?JfBzG
zkKrp1!#9TS><mA67=AMR;$isB@P~)Nj=`Rhfq{p?fx(`K!4X6_F*x%uxPVx$Ai@nq
zxPu4}22UOaFA(9);5pfmPn(C~FAu{%hW|Va4U7z%EBH8>CT|x=uD4}iU@%~i1R2f1
zz`zMI8caJf*n?>&24^ts0_D3xX*VeC4y8R9Ji+R`ptLubmSpf@@MU0R@MB<LU}ErR
zkYosCu!r-57$oZ%f*CyF0wD~N453I0!WbkO!jbp_43Z2HNPH;<Nrp%yzBGd*LlhEU
zmO+vs8i^mnAjuGmVqd)^LmZL<eg;W~cqBf^!UQC~AcG`BA`)MSL6RW}i7&z+$&if1
z7iExSNI|kNl|d4eBp4VOGQc5{S<fKJkcFfH<fCjPKFCKoNPLiwav9PQ1~5o6<RMv*
z&mhTAfTUiDL6V^miLcBc$xwvEuLt?47)b!+qY@;(3WFp=DH30mL6V^i$wH8i%F!HD
zfuvrYL6V^oi4XEn6@p*S0P;~angKNk1q`(ek_>f77S=QHGcYkUFf=kSGBhzTFc>p1
zGB7eQFtBQEXJFh24%KD`1_n^6#=yYGz``KF(82)9G+;#xtqg78blT3)!NA1OG+9T)
z%on6yh=GNHfuWp%gQ0>!l%bMAnV|}<kAp#$p_8GDfq|hLY7#`Ghk*eakG%|Bpt1sN
zqNBL@<YOW#NTxP0a4<A7NH8=pXfQM*nX1Ilk7g=JWCGmOi42?!lc4T27u7{Fv7Lc~
zp@Tt?p_4(1p$o}G5eySSB9q}JPGR5z6<1()ZWQ&Y2l-r%ft`VYp^t%sp`SsJVFH5`
z!$byUhDi)M3{w~^8KxqcZp<(Z&AlKIWYakrrZda{na;q#AOnsT1_qW*3=$g{7#J8C
zK(?`gMQ1|7jfY_-0~e^!1ZkPvA!Zf`QX<B{%D})dmw|&}9)lpmd<H3o1q{jzi;)~6
z%P<?wAs`V{hs=REWHP_Fs4U1-h{ekx7K81b3k_OFaciWYUCY41u#Q23VLgKe!v-Wf
zl^Eus*$EOsjjZ`l6HkgGN7fbw4u-7^f(+Xjq!_j%nFxv+)I<dmLG}d~!vd&@8%4Dy
z=SnCcMc8fz4u(Apf(&~Zq!{)wC^PJ5&|x^pV99U@$p&MFg=lUDi6Gm+$*>3#PN)&4
zh8|(ZAmIjyu*FbENl79{*eM1MhSLm!3}+am7|t>%Gn_|qh%CbrG>3phP#v-q;*iM;
zB}Fw65q243F~dv-4u)m0OwTCDz{UUq2PfZ`G^l6U%wWc{nZaCuYcqqzZU)Op*1Zf?
zk<1)B7+8ZNSp?WX^bQ8=?F=@X86*($0>&VTNEQJL5DilxhonFdBoWCXAOxae3e=Dk
z2!kY2B3T5$444WHP%#8a?sg3P3=9my415e?48jcJ3=#}d3^EL|42leL3~CJW4B89|
o3<eC!3?>X}3>FNU47Lm&46zIW40Q}?4D%Us85kLsgNw8k0CZ}GlmGw#

diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index 907ca7cd83870015b2dfa3d10e234e29292ea61b..aded3c064c967f49860ea32d288755bbb1f6538c 100644
GIT binary patch
delta 2200
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
Wof)n$Ffed2Ff#BlR54s;;{*VptmlgW

delta 1658
zcmbQ&!1%wq{?xx+`xqD)Oqf#G8J)No1Q?w;8C@7%xfpgbx^XeOGkUNydU7$aF*<WF
zdT}u@GJ1nJKHQAHjDFmV{)_=2B9NUih=VbhoiT))fsZj1M1+C#hO;w9a50F0^hSc{
zD3IQ05Gw{m#BwpZ*E7bkGsbf<$S@{wGB7eGaxf-wF=#O+b1<fWY)b_ZX&@pUL}Y-7
zOc0U9!I%v)Er*>kmxD2ngE60jv4DfIkb|)ZWLPl=V+jYt0}jSg4#qML#&QnE3Xt)Y
z9E?>Ux|)Nr21M6#)HBv`FxG=y)4;*l$idje!PpFPKnsXy<zQ^%WZ22r&d%7u#o)&1
z%*EKr7|q4l#n{ck*aNbs7bMch!Pw8iIDwsUA}G`*fr!am4E~H$xEZP#r-F!R4#sI5
zjMG6@&Hx!alY?;<2jgrG#yP?qjB`OjH4miBhl6oG2jhatU5tvJT#RcN*Mf+39E|I^
z88<MtfQV?2vW+0&O(1hNb1-h<VBE^VxQ&BxI|t(qkP;tu#+@9DyFhmB=3v~zG5HIl
zay=L0Nyby$jHem>*cs1oFrMXN=wUp^#dx0a0*JT>BEmqCAIrgb31skP4#q1Sj8{1r
zuW>M5=U}`661&O4c#DJaHc0IqRt7L&egSgIT`tCZjQ6=1A22>-XMDuL_?Uz72|MFc
zE{0`{&p^a;E=PuCjIkVyFE|)qaxlK)V0;Y<o;MtfZ#fv>fgJjtgYg3g<3|wl6NvcC
z!T5!P@hb=8H+IJFT#P>$e@?#7bcFHO<|WJpECM^(89mt<f3q{@vNQf+XAIh`!tsrX
z<u5zqzs+*o7R>Bt*cpzqGd`Le%lBq-0{<j0#{WD_3`~qX45t`QvokUAFflW+Ffs^c
zC6*=XmzHGa=zAm<XZR)-FfuUkFtIYR@i4J7aj-LS@-T5RakDf2;bG!o;^krDW8$A|
zBM{6hz{JnPBnTpen1m<K5iqV7VG`wG5@QnQVG?1I;9-(vk^<Qw4YMOBF)v-;Gp{5y
zJ++93Nd}}&mf<EN1B+W}Q7I3T9FshRoyfza0J2??Nr{I^8APanxT+wQ8j}(u17}!b
zPHt*RW^yqPlRA?IBZC0g50m`_-I+C+v?k9GbZ69_{6J7dLI-3%zi)nKaY<=Ws+9sK
zr)n`550ma>9w9|p5hguG21Zpz1}04fMh2Fc7*$msCVh|>4VVlkdkNWc{$^(~;$bpo
zGMPL<NQT3d$qZzl`Q$A^PHYxDOqNU*lm7^*a#%5(=V7vDvYD(YoXpJ3WIMTEc%il(
z50gEU0}qoUlM^EYw@YG4qC#<IRjQQ&JL5kdCTAuW9wt|Y(>zRWOzxATMK&;cOy&`N
z$n%$n$&<;8oynV#L1Xepd6mhsV&anOOg`*PzC28Rpz!o(;$>uDRN!F>U<#b<E2gL&
z1PV6B3PuL@n3QV6+SCdjreLNJ9;Q&HFm|SJ9wt+!2zI7O9;PU!=*ct1LfKe&m|~b>
zCw~$1XNhBE*fcp%ypgN8B(bO@z9cg@b@C-~U9NbB^Nb8EIy#yPli4LIxOkWn7;f?~
zB{JNcTrXk4mc+x9%*4BSuf$xA$;FDo;#|QYjzJ;uA)dajj0~K?A^rhi_U6TkiBk0p
z%Ndv$m>C!tVs|r$L~dsg6<WWIL0oGagSgO!Z4Ba@7~~L4a|F{8!L&v&H*RB)6xy_n
zL3|s7l<y`6W}R&e(mFdBa>6$<FfcGN9AIEz5Mp3qU|=$32w<{g2xqdkV2EL|VK~UZ
zz@Pwe1*0{?O>mZtWwc?~!@$T8z`)DM!Elp-iQxnT0|N^KBg07sPDb0w>+DoyHiKQb
zWgCOIfYLSwJE3$KYZJrP$?xpaCEXb~m^>M{n0y%0nL-%yn8F!~nW7nLnPMjA*$1=Q
jF>o;2Pd;YvDDD7qAEP6~6$S<dE(S&hK87lW%WRwgPsCZm

diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class
index f70466837b2fd6c3753ca6494fe6f688c79c214e..814f84462cfd3ea9e241aaebceffe9b06984eee1 100644
GIT binary patch
delta 5119
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
G7!3f5zHzVs

delta 4595
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
E09(5C;Q#;t

diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class
index 3ce6d7422da8fe27aa5bfd05cc8d07d7c6ca9408..f30d763a28232c3f200b56a674d1c96e17dc89e1 100644
GIT binary patch
delta 1763
zcmeyMxJjk{)W2Q(7#J8#7+JX(+!-?28M3$-m>4oS8L}C2K&)I2hCC3R&(2W5#lXQ(
z$iYwqqKi2hN*GE(tTGOUat?+H5WkY0p^A$^kRcO96oZH|c7|#Wh8ivgQIO7B5DnH@
z2V#{8G1N0Kw1Akc91Lwj42%pd><k@j4k`>_z{Q}z&<P^SKtvZiLpL`=4?{0ILm!(%
z(*dv&Hivo#FoTOhgP|WpOkii2$iXm)i(xXu6fTCT4AVe*rh~jN14PUOxoQ?S!)%5*
zTnuv=oaS*b%m*<Ra4;<7Vpznmn2TWv!%`4y87ISXh80{4D;ZXSG_D3|T*J<=mW#oe
zVI4?rJv+k&c7~0cbr^3lG6qimz^*9bla*MOm{y@*T#}fcsvis@ttX#gmz(U$?8mrv
z@)TxwW)B9>$@iGWRW|W3Y-ZTP!?2ZM8zTdsZ+>QRNoi54f^$Y{ayAdcc7`2{3{sQr
znM5b+v9K$6fVdo)c?G2<A^8P73_BTiuruu9Vc5;EhlgP=!@kL(EQ)OV8TK$T$W69q
zlAAn>#m?>kh%4ZfpI=g3Qj}QWn_7~QpHj@v#&A%8;SfI?!(jo2BRmX88IJKV9A`Me
z$iU{7nU`6d!OzBUl954T@){-yR~`lrhEqHYry0&LG6=%FmYkZGs_&PdlFH6-mWSaS
z!+AyqAr!e_kP4923p@-L8O}^DX7%^G#KUlz;R-v$RUU?G4A*%WZZO>BVYtO`n}^{J
zgC`HeU50z?4EK2$9xz;IXL!iN@QC3tBZEjlPHJLtszPdBNotWoqC#0>PH8F+!xM&^
zlkc-i_&()fc*gLYo#6!!!%K!&JPfZH-mo*g<zaZo@SdIF0}sPThEF^UpFyU70fnA0
z$c_3riFxVzt`*6t1tppJc{~hXLGs@izHjzoi(pjx!SIujL0khCi>YO)c_sR;Aktbh
zjEljI;n(CN?AnmH7KW)pitEV&9DdAh48J!gax^eb7T^xl5<u7*TvC*om(Iw*o>}ag
zTToKT$iS?j8O6xJmReYvm{Yv@KBpn$<V0>~G1laq{Nhwb2HxV-l7OQ8+=7yj)QXbH
zi@3D~{_rsTWn|=GNMnfSVTfahpM00wgo%-PvM|pJCPtRYe|daj+!)-!8G?m@k->w(
zlYx=Ji-CbbpMjBqk%57MRcku~<3<Js1||k?1_lN;u%Hlw4+8@O517r$;LG60z`(%C
z;1AQx_=<s@frEj8k#F)+-cm-b$x?i(j9QcJ`N|o+CvWGotk+^lX3%EHV$fkIV$fx%
zW3XlDWUynHz+lfXgTaAe2}1zG28KX}9SlJXcNsz$-Z6wSGBboRax#Q7@-jq#?G9q#
zVBlb6V+ddfWME*BXL!#L#1PED$Y92BgCT?=80^}^4518R49pD4467N!86p^17&;kR
z86p`X>KRxWHZa67L@`7&ura)2P+*8*h-F|G-~xpZ)c@BQm>5_X7#ISzwlSFPWH4uB
z*v4Qni@^-e6|&sMU^R<DRmge=gUt>G+ieVXn;Gok(kwd|9JIGFI4)=4)B-7WTF$`X
zr@M{8Wg`P)Jp%)S2ZJ|*GXpa?P_-Di7#J9w7z7xc859^?81xui8LS!H7@Qb97(5t!
z7`z$0z+?b}FWB>13@i*j3@i)@42cZPAUA?N3W~%)aDaf~Es!CJA(?@RA%%f~ft!Kl
zH-i(a6FWmHivSlxT0KKN)R#A)zVwH?8|+IHI2Yt}t62=njL3dt-ofCoiNTd6VKaj(
zE<Z9bFt{;z!o8@+zzt4R0t^NW3iS+z3@Qvp42BHG43-Qg3=Rxt3~mh844w>@3|<UY
z41NqYaDRFs`O_cnPk*>S{n7pD0P!aSGebH!)n<S~gMo{Ik>MXB6T^Q7NrrkU1_lN(
V1}26E24;pvh9-t)D65^J831B^fMx&y

delta 1440
zcmdm_@<Flw)W2Q(7#J8#7`|~aI5VWOGo*1bFfpWZGNdzPfLNIv3|SyLo1Gzti-Ch7
zmxCb>MCWrd6fhKmSVbHR#T*PJAbu%3Lm3x?AVVsM$OjQc><r}`3>91qq9C1>AR4T*
z3dAZBVyI_eXaF%AIT)IR7#JBE*cn>b98?&<fQvzap%p|FfrvJChIVd-4u(#4hAuXT
zrUPIlY!3AfU<Mb1217T9=wWB*<zVRJV(4d>z{N0;VG>BsWRMr8fQYFa4AZz6rZddo
zVwlM=i%XATI>T&EhB*v#L9U(0%`l%~0T;tUhDGcQi@6x=7?yA_ECop~V`o^-&ah&$
z1LI9bCR>e3Ok$IxID{sLGp8^vp1g<I-P(o0m61UxE3qswtwO)JBr!czKNv)^Gpyuc
zSjDiKhhYuFT1Eyw-~7ztlG3771?P;^<ZK>>bqwn#+p)+ixG=0|WZ=lmD<~}q$uHnx
z*ub!!ona#n!zPB!JPcbHwoa~PQDol6uzB)AmUz4E44WAl1f25oONvX15(|7&OEU6P
ziuu_Xb_g)+<Y!~pCBU$ohhY!HULJ;h4Eq@w*xWMnGK(|#*%%HmGDu85z$C%N!{EYj
zkcZ(A!{NyZtYR8Rco>c{97FO!a%x_xelUmxsXWfZaDw45BZJE11#BXdH?dlzp5$RT
z#c-OP;S3MMS%z~w4Cfgx@Gx9txWvP7859!2m6es1y1u@;DJcpb9#*-zR>j5a3|Dv<
zt}<L>XSmM8aD(9{55p~n+w2T?co^<7+~Z-m&+veq;UN#hBZhPA43Bvjo-jO}T+1fG
z{S0It0}sP<h8LUXvPCd5zhrnd`3JiUyA#7}Mh01p$^Oi8+-w<%c_}%mj10EWxZ#>y
z!Qsp7#PDYG362IvMy1I-+)A5YaPcrs_TUPf{Ds?jvOkZez*`=McMP9+7?K#Gc^IM?
zq9=Fom@qMXnY@qZ1uMf>Mh4Z%hP>jF5AhnsI59Yb(-{i`BZCWrD+42g8v_G_J_92I
zBLf2itJZb~#*GXN3``8}3=9lxU_l`U4+aJX9x$7g!IQy@fq{XO!5gNT@dX1r0|x^G
zBhTajzS7CZ_*5sq;VWl!pPa&PS+Bv6%%I7T#h}Gd#GuVk%V5IL!C=bJ&tS$doxz-8
z5rZScItC|(Z4Ax~w;5a+-Y~c^GBUU`vNL!vax-{>?G0k!VBlb6Venz_Wnf^CXL!rt
z$KcPv$Y92BjUj-+pMi<No8cfsAVUxXGea`NN`_#D5C#^84u%$nP==6t23Cf33~>x$
z4B-rH3~v||7$O)V8Q2B5K!F7Hdp83U12Y2ygNl&Z4hHib3>MoMEH^V)X>DV$-pOFY
z$iT9L!FD+Vhp)~y2K$ZRK#*pTW3Xdj1_zN80~-SagCzqWgB61`gDry`gEfOZgAIc+
zgB^nhs8~>7U}lhKU}1=1h-F{`Sp#+}C=OH@;uzu?7#R{67#P?YnBv$O5?KVeKye6l
zSs&D8%0dpv4r1QHV7rOIktJa>gCnZLq!?u34wGYGXJDvj&}Cp{&|?r{&}WchFk+Bp
zFkp~lFl10-Fa`%M$Z>K=j#Gv^P8rp4u^`8RLl~4cQW!omFfed2FfzPn_{{KuL6V`G
bfq_Acfr+7pftjI}p^l**!eU`)W~c`Mdp;v9

-- 
GitLab