From 7201f66214b1a8b707f2167d214b68baf3aa8f20 Mon Sep 17 00:00:00 2001 From: KevinSchoenmayer Date: Wed, 3 Dec 2025 20:33:11 +0100 Subject: [PATCH 01/10] Small commit while writing tests --- .../hhn/temp/project/AssignmentManager.java | 3 ++ src/main/java/hhn/temp/project/Main.java | 9 +++++ .../java/hhn/temp/project/UserCommands.java | 20 +++++++++++ test/hhn/temp/project/GoodCasesTest.java | 35 +++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 src/main/java/hhn/temp/project/Main.java create mode 100644 src/main/java/hhn/temp/project/UserCommands.java diff --git a/src/main/java/hhn/temp/project/AssignmentManager.java b/src/main/java/hhn/temp/project/AssignmentManager.java index ec8d4510..0f6d07d1 100644 --- a/src/main/java/hhn/temp/project/AssignmentManager.java +++ b/src/main/java/hhn/temp/project/AssignmentManager.java @@ -10,12 +10,15 @@ public class AssignmentManager { Map taskMap; int workerIdCounter; int taskIdCounter; + UserCommands userInterface; public AssignmentManager() { workerMap = new HashMap<>(); taskMap = new HashMap<>(); int workerIdCounter = 1000; int taskIdCounter = 0; + userInterface = new UserCommands(); + userInterface.start(); } public int createWorker(String name) { diff --git a/src/main/java/hhn/temp/project/Main.java b/src/main/java/hhn/temp/project/Main.java new file mode 100644 index 00000000..e944ddbc --- /dev/null +++ b/src/main/java/hhn/temp/project/Main.java @@ -0,0 +1,9 @@ +package hhn.temp.project; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + AssignmentManager manager = new AssignmentManager(); + } +} diff --git a/src/main/java/hhn/temp/project/UserCommands.java b/src/main/java/hhn/temp/project/UserCommands.java new file mode 100644 index 00000000..70f25b2d --- /dev/null +++ b/src/main/java/hhn/temp/project/UserCommands.java @@ -0,0 +1,20 @@ +package hhn.temp.project; + +import java.util.Scanner; + +public class UserCommands { + public void start() { + boolean close = false; + Scanner scanner = new Scanner(System.in); + while (!close) { + System.out.println("Type '?' or 'help' for a list of commands"); + System.out.println("Please enter a command:"); + String input = scanner.nextLine(); + handleInput(input); + } + scanner.close(); + } + public void handleInput(String input) { + + } +} diff --git a/test/hhn/temp/project/GoodCasesTest.java b/test/hhn/temp/project/GoodCasesTest.java index 31988ef6..efab70d8 100644 --- a/test/hhn/temp/project/GoodCasesTest.java +++ b/test/hhn/temp/project/GoodCasesTest.java @@ -13,6 +13,7 @@ public class GoodCasesTest { public void setup() { manager = new AssignmentManager(); } + @Test @DisplayName("Assert that a Worker can add a Task") public void assertWorkerCanAddTask() { @@ -30,6 +31,7 @@ public class GoodCasesTest { int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); assertEquals(sizeCount + 1, manager.getTaskMap().size()); } + @Test @DisplayName("Assert existing Tasks can be edited") public void assertExistingTasksCanBeEdited() { @@ -50,6 +52,7 @@ public class GoodCasesTest { manager.removeTask(taskId); assertEquals(sizeCount, manager.getTaskMap().size()); } + @Test @DisplayName("Assert deleted Tasks no longer show up in the List") public void assertDeletedTasksDisappear() { @@ -58,6 +61,7 @@ public class GoodCasesTest { manager.removeTask(taskId); assertThrows(IllegalArgumentException.class, () -> manager.getTask(taskId)); } + @Test @DisplayName("Check Getters") public void assertGettersWorkCorrectly() { @@ -70,6 +74,7 @@ public class GoodCasesTest { assertEquals(manager.getTask(taskId).getWorkerId(), workerId); } + @Test @DisplayName("Assert that Task State is actually changed when submitted as finished") public void assertTaskStateChanges() { @@ -81,4 +86,34 @@ public class GoodCasesTest { assertSame(TaskState.IN_PROGRESS, manager.getTask(taskId).getTaskState()); } + @Test + @DisplayName("Assert that the Scanner is actually started when AM calls start") + public void assertScannerExists() { + try { + manager.getUserCommands().getScanner(); + } catch (Exception e) { + fail("Scanner does not exists or can't be gotten by getScanner()"); + } + } + @Test + @DisplayName("Check that every required surface command actually works") + public void assertCommandsAreRecognized() { + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("?")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("help")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("createWorker")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("createTask")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("selectTask")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("listWorkers")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("exit")); + } + @Test + @DisplayName("Check that every task command works") + public void assertFinishingTasksIsPossibleThroughUi() { + int workerId = manager.createWorker("Alfred"); + int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); + manager.getUserCommands().handleInput("selectTask"); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput(taskId)); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finishTask")); + } + } -- 2.49.1 From 79df3d300e7168ad400d6117af7c529e38a7eec7 Mon Sep 17 00:00:00 2001 From: KevinSchoenmayer Date: Wed, 3 Dec 2025 20:39:54 +0100 Subject: [PATCH 02/10] Just a small commit so i can pull --- .gradle/8.14/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes build/reports/problems/problems-report.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.gradle/8.14/fileHashes/fileHashes.lock b/.gradle/8.14/fileHashes/fileHashes.lock index 3bdaec1a8f7fd341ca151b56ad3b2ecba29eccb8..48260868a80b2f0cbacf25a62af61452bed48769 100644 GIT binary patch literal 17 VcmZQJ+4?|x>8n?D3}C>x2>?8v1)=}| literal 17 VcmZQJ+4?|x>8n?D3}C>x0RTLl1)u-` diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html index 615d6f90..1bf2a99e 100644 --- a/build/reports/problems/problems-report.html +++ b/build/reports/problems/problems-report.html @@ -650,7 +650,7 @@ code + .copy-button { -- 2.49.1 From 2af4f4b7a4eed29a88ba5f2754fec74f0623cb36 Mon Sep 17 00:00:00 2001 From: KevinSchoenmayer Date: Wed, 3 Dec 2025 21:13:59 +0100 Subject: [PATCH 03/10] Wrote all the Tests for the Scanner UI --- .../hhn/temp/project/AssignmentManager.java | 5 ++- src/main/java/hhn/temp/project/Task.java | 4 +- test/hhn/temp/project/BadCasesTest.java | 16 ++++++++ test/hhn/temp/project/GoodCasesTest.java | 38 ++++++++++++++++++- 4 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/main/java/hhn/temp/project/AssignmentManager.java b/src/main/java/hhn/temp/project/AssignmentManager.java index 0f6d07d1..eca8d408 100644 --- a/src/main/java/hhn/temp/project/AssignmentManager.java +++ b/src/main/java/hhn/temp/project/AssignmentManager.java @@ -26,11 +26,14 @@ public class AssignmentManager { workerMap.put(workerIdCounter, worker); return workerIdCounter; } + public void removeWorker(int workerId) { + workerMap.remove(workerId); + } public int addTask(int workerId, String name, String description) { if (!workerMap.containsKey(workerId) || name == null || description == null) { throw new IllegalArgumentException("WorkerId must exist and name or description can't be null"); } - Task task = new Task(++taskIdCounter, workerId, name, description, this); + Task task = new Task(++taskIdCounter, workerId, name, description); taskMap.put(taskIdCounter, task); return taskIdCounter; } diff --git a/src/main/java/hhn/temp/project/Task.java b/src/main/java/hhn/temp/project/Task.java index b5ee9cc9..f4d015bb 100644 --- a/src/main/java/hhn/temp/project/Task.java +++ b/src/main/java/hhn/temp/project/Task.java @@ -5,10 +5,8 @@ public class Task { String description; int taskId; int workerId; - AssignmentManager manager; TaskState state; - public Task(int taskId, int workerId, String name, String description, AssignmentManager manager) { - this.manager = manager; + public Task(int taskId, int workerId, String name, String description) { this.name = name; this.description = description; this.taskId = taskId; diff --git a/test/hhn/temp/project/BadCasesTest.java b/test/hhn/temp/project/BadCasesTest.java index 09452e83..ebda57b3 100644 --- a/test/hhn/temp/project/BadCasesTest.java +++ b/test/hhn/temp/project/BadCasesTest.java @@ -52,4 +52,20 @@ public class BadCasesTest { assertThrows(IllegalArgumentException.class, () -> manager.finishTask(20405, 21034)); assertThrows(IllegalArgumentException.class, () -> manager.unfinishTask(20405, 21034)); } + @Test + @DisplayName("Assert that removing a non-existent worker throws an Exception") + public void assertRemovingNonExistentWorkerFails() { + assertThrows(IllegalArgumentException.class, () -> manager.removeWorker(34054)); + } + @Test + @DisplayName("Assert non-existent commands are recognized as such") + public void assertInvalidCommandsDontCrash() { + int workerId = manager.createWorker("Alfred"); + int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); + try { + manager.getUserCommands().handleInput("baum"); + } catch (Exception e) { + fail("Should not crash just because a command is invalid"); + } + } } diff --git a/test/hhn/temp/project/GoodCasesTest.java b/test/hhn/temp/project/GoodCasesTest.java index efab70d8..0fc849e7 100644 --- a/test/hhn/temp/project/GoodCasesTest.java +++ b/test/hhn/temp/project/GoodCasesTest.java @@ -113,7 +113,41 @@ public class GoodCasesTest { int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); manager.getUserCommands().handleInput("selectTask"); assertDoesNotThrow(() -> manager.getUserCommands().handleInput(taskId)); - assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finishTask")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("finish")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("unfinish")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("edit")); + } + @Test + @DisplayName("Check that editing is possible through UI") + public void assertEditingTasksIsPossibleThroughUi() { + int workerId = manager.createWorker("Alfred"); + int taskId = manager.addTask(workerId, "Run", "Jog 10 Miles"); + manager.getUserCommands().handleInput("selectTask"); + manager.getUserCommands().handleInput(taskId); + manager.getUserCommands().handleInput("edit"); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("Walk;Walk 3 Miles")); + assertEquals("Walk", manager.getTask(taskId).getName()); + assertEquals("Walk 3 Miles", manager.getTask(taskId).getDescription()); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + } + @Test + @DisplayName("Assert that removing Workers is possible through the UI") + public void assertRemovingWorkersIsPossibleThroughUI() { + int workerId = manager.createWorker("Alfred"); + int workerId2 = manager.createWorker("Balfred"); + manager.getUserCommands().handleInput("listWorkers"); + manager.getUserCommands().handleInput(workerId); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("remove")); + manager.getUserCommands().handleInput(workerId2); + assertDoesNotThrow(() -> manager.getUserCommands().handleInput("back")); + } + @Test + @DisplayName("Assert that removing a worker removes the worker from the worker list") + public void assertRemoveWorkerActuallyRemoves() { + int workerId = manager.createWorker("Alfred"); + manager.removeWorker(workerId); + assertThrows(IllegalArgumentException.class, () -> manager.workerMap.containsKey(workerId)); } - } -- 2.49.1 From bb71c7e32927ca0fd2d5fdde59256ad05ca11643 Mon Sep 17 00:00:00 2001 From: KevinSchoenmayer Date: Thu, 18 Dec 2025 19:58:03 +0100 Subject: [PATCH 04/10] Fixed assignment manager to pass some tests, scanner is not yet implemented fully --- .../executionHistory/executionHistory.bin | Bin 86514 -> 86514 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.14/fileHashes/fileHashes.bin | Bin 22797 -> 23597 bytes .gradle/8.14/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.14/fileHashes/resourceHashesCache.bin | Bin 19449 -> 20129 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .idea/gradle.xml | 2 + .idea/misc.xml | 2 +- .idea/modules.xml | 8 -- .../hhn/temp/project/AssignmentManager.class | Bin 3306 -> 3682 bytes .../java/main/hhn/temp/project/Task.class | Bin 1544 -> 1421 bytes .../test/hhn/temp/project/BadCasesTest.class | Bin 4489 -> 5506 bytes .../test/hhn/temp/project/GoodCasesTest.class | Bin 4541 -> 10116 bytes build/jacoco/test.exec | Bin 43097 -> 55760 bytes build/reports/problems/problems-report.html | 2 +- .../hhn.temp.project.BadCasesTest.html | 24 +++-- .../hhn.temp.project.GoodCasesTest.html | 92 ++++++++++++++++-- build/reports/tests/test/index.html | 74 ++++++++++---- .../tests/test/packages/hhn.temp.project.html | 64 +++++++++--- .../TEST-hhn.temp.project.BadCasesTest.xml | 10 +- .../TEST-hhn.temp.project.GoodCasesTest.xml | 36 ++++++- build/test-results/test/binary/results.bin | Bin 1258 -> 5384 bytes .../AssignmentManager.class.uniqueId0 | Bin 2745 -> 0 bytes .../stash-dir/Task.class.uniqueId1 | Bin 1186 -> 0 bytes .../compileJava/previous-compilation-data.bin | Bin 388 -> 841 bytes .../previous-compilation-data.bin | Bin 1347 -> 2048 bytes .../hhn/temp/project/AssignmentManager.java | 6 ++ .../java/hhn/temp/project/UserCommands.java | 20 ++-- test/hhn/temp/project/GoodCasesTest.java | 12 ++- 29 files changed, 279 insertions(+), 73 deletions(-) delete mode 100644 .idea/modules.xml delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/AssignmentManager.class.uniqueId0 delete mode 100644 build/tmp/compileJava/compileTransaction/stash-dir/Task.class.uniqueId1 diff --git a/.gradle/8.14/executionHistory/executionHistory.bin b/.gradle/8.14/executionHistory/executionHistory.bin index 0e40d55012e1e44d2c4269802670177ddf1c759c..d5b63b63c0ca3a3b0923bb7e9bb474e5aa7593fa 100644 GIT binary patch delta 5984 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 F{a@0YkA(mL delta 2192 zcmds%eOOa<6vy}5#zJ25ZpwJyRA2~*Fae_k!$<`KVS)~jR1h8!7z@ULGzA1nDhExRpe1xM=(Vk7aSQ6qv@HR#f2E(e zv2m+c9x4S@jtOM9Z3M+yJ}{L+Y^@)!!tLTw$14nd=di>tufx@KT)>r|!!Bto_{7lR zxX@&N!Lk_9)})1-6Qd*&3a01xl$j-patrX#v$)cr&K=m@Tv_XOn2HYJ#R!?2Q?SQA z%>vD{l>=QJ?N%^(vwDam?t@{NwQ2k~dxmy6K1VkmVz!uN~eGbENCOK@?^q za6A)3bH6(f5pQnncPsa_Y?Op*jc61Mx9+TX-!pEtQK{tq-p+e9C_gkxlJL5=mdkX( z{wf-KAO7v5#vvhfj0}`fK^!U)UI3*!A<#o`{+d?^tt~2AF!F@t_S1%zM9&6N_d3r&USME^ei1Wp7=@nwA59dLCdL-CJyaSw!U?_{=Ik4fS5vYpaVjbzqWuBYM#(FH@ z`>NG@!zxsT_bfy_xK&I?eXsEaY+W=BgZv$LxWbG@PIvDAq0zD};gbW-#Hu;rnXbsz zY>N42*_Fe)FP{oh$Lwzk)Q&tyr|>3M#077uJ2o;Dq6tqeN%WHztVM4N5RTa0cO?Z(L zEqj-}?#l*3@|CO0eq7w!7U%j^tExO-H-6^R@j7i>$qpuM>}*Hi{1s3e?x4s|&p?V$ z{LU_<)Q#BAW%kY)i>m4FMQy1X_nrL=13v^S#{H2G99)bG2H_Z7{ z51-?P>{!#=hE5Tqwt-7AOG&2R8SO-xHzAwcQ9OF~#&mT-o~-HJLzi^pHwTwVYc%># zln0ZO3>NKQ-NeT{&_eY14NBx>g6hEArsQ)$!=|?vZ*)cWute+ouO=yqw4LaGazkE2 zElM?FPTzy8a5BRM9yAyzT<=Ee)9&UqgX~A1?_`l~+Yu^AiIqqbQzZ+dwi33NldJ;C-u++0x9*58t`kZJ^xf$j7fbntVQ0 zd;csV7l$IQN?#M1v6Fq!F1$yoA|$!y;f>9m2LP)R9X|J)R*1U>5wGsd>bU=I0H^}5 t4@PW!A^;h4Gj#0`J^VDXgTr%3zx}AEB{V5Hi@eN!2CCDM99?_!{s!b~&qM$K diff --git a/.gradle/8.14/executionHistory/executionHistory.lock b/.gradle/8.14/executionHistory/executionHistory.lock index 49b5cfeb2100de4d41b397b69f458e3a36cf41d2..673f2b227cdd0c34747ecc94601508c2bddaabfe 100644 GIT binary patch literal 17 UcmZSnb#-Tx%i?)c7$6`907C=?g8%>k literal 17 UcmZSnb#-Tx%i?)c7$Cq407CKwaR2}S diff --git a/.gradle/8.14/fileHashes/fileHashes.bin b/.gradle/8.14/fileHashes/fileHashes.bin index 5777e66c220af5de1e0f9ff4602549876f15cf66..11141c63fec798fb7aba1e5031db8860ca03a7b5 100644 GIT binary patch delta 2218 zcmZXV2~<-@6o#{~1QmFNvd9vMRDlYH3Tkkp(10LI141!cl|?)>SOH0*6(PZjsTFW} z)F>8&Vxt@dgGjMd6h#lRiGVp3sUbkAq9TZ(EDD`u2GL~Bd2f=N|GWRqo0oxwdwb5iq_n2KP31H;fPKvZmaXqL>)xncF)2 zblO*vQGopjgKYij1P5i6eP{CKy+!dtJky+k9jo<9u{zO4L_rU{$~+b;_#x1H>yqIj zl(w$SdagMM>nk$)t&2lWL()Xt+42PTW_6n1J;`%JBqicimMmZM=o65jEv_I3I z&tV@y!8n{pWnun8N5jREUW9MR#jAjF%gC3s2Vpyr(Z&h9pE`>1qzSKIvMz)pTo-?2 zvy-G(P)Zv$D|OjzQ0D2oh#Znzk)2v{wQ^fgeX0e<7|SLQh&jC-1G*5J;|%6SuHfbf zE}HVfj$YFHdn~-5&92?A@KnyRNEK08UkiRzjt=~WKhxGVAf5KwG(~DRyx?Z~i%*kO zqUxs}P(vQZ=Lhg@|8NieK0!}^eW&DF?Ca*er7DqvFM}e3C_Is6Y_tCCi-oBh9}vw* z90%!su}ULn9)cQz0`Cv7UnOT|!tW#|nAPg_i_Ej(cCT~Tv2b5Vw7>6Clz|5c?Mys4 z(4H)39>9|W>0nO8ivukLCPp!o5syZvxA!9`!k*&YsI)E!k^MAnj!?N_k%RFkr*5;T zl{JP%X_IV3Mwn1?S=E(4dIGi9JpH)T(9WErIeCV)6O7wTQR^J+$4`iFq{4?!}uMwUIS9Ew*$R zAw-B_d6_tbuOs;QWXJD%nx=RX<&eBdS~70d)}&%8>!+X%;kLRBaB=V(-PXeOUvy}> zg)8IXc|@RIKt8BR)atA`wIZo&Vsna!*C3d<2x?armINA)a*%}JrnWg7Dp-YgwI$uD zqAd)W;UuV8N$?*k_2BauxTz5lq*!sSr&Dpo0D~iVl66)^$eF*W0D>+yO$cVX+Lp!i z=;*}B*g(!F9h^EJuzV_$2M{6UO(QeJQ1+9EoSNz&m(5F}$E{moi>RzeFEK40O@cl3 zMRdlFSLHHU5*AYxFCqw(ChrlQZ#0pfmwN+`O4AMvu^)N=L#+Y591wD!4pi2pCZQ`G zxW8^XdoQqp#~Wlep8G{5Sk&j|@arkkDChX^Ek zjY?fiE0(87Mz;H~zy9+&BD$f8E+})x1QO?+OM8r0_BZ8~lgme16ri(!KLT0_I)QUQ zo$5#<-D%}J*}&WIAsu6v!ElBOQ3$J{iJtPMuD0$R(+baHYX{lG&Td{#Z#t(>7TWaM hTy=H delta 1145 zcmZ3xgRyrL;|3E6!LWvUuKE=$Z%#0PLAd1PSP9F?>mIQ=knSoLOf#!ZY}$f7g-tYU0B2UtgarwmY~IS}({VQPsswK#nG z{%`5Ol~Vf>T15-MT58>|0aXHlVCUvqKRd=CZJnOX_t%RFk+mCZ7*fuaCbC zOamYwkqjiz0-RGY$z|1<7w>L6uzM&L#3Z4bzzIwX=sJq3FWxS2@!cV}GOKvy!8n?D3}C<{3jjO|1r7iJ literal 17 VcmZQJ+4?|x>8n?D3}C>x2>?8v1)=}| diff --git a/.gradle/8.14/fileHashes/resourceHashesCache.bin b/.gradle/8.14/fileHashes/resourceHashesCache.bin index 627fd17193af0e9d377a92844097e5ecc4540178..a119f2b3933caf292eb168f004d9bbeac1b59464 100644 GIT binary patch delta 1170 zcmex4opIq@#tkMCh6YXlqh;z&mrh^+1K<4rP|&QBQaJN@P8~$t`zK6%vZ;iDM(?su zo-KYZAE27P!z3rYaL_C<-1!|M?h`*bR-!>;m)8gF9SwIip^C4<6z_Y~#Q!00#c`-& z>B(0mECi0fxvlLzbK6v?V$R8|k_rMRcZCN<$DS^M2>R7emX+M#z^8PxZTa5W>QKR0 zn6W~acFOekw=RO3pbZn3)%f%^R!P zllm~~O{ImIkXr>%P!3f^SJ0Io-w!L#2!1vzZ?^20!pRH0gzNJ;E;wvux+Zh^+$vSk z%q&b@3uY!PH~TDeO`FT@jigZV5lj{BM<%Xtdl;twYK_hR$1cipm?~b^%XRLW`n#O3 zwpD#jx=R8=MLo>tvf*0#cBb2~Y{Lem9bnL?n$5r(j)%$kt;=oif zVf{zu$d@yA{Y{if`F3sR7EBceOy`QLQ$*svugX?@t0eEo0JI-1l>VjWl&#)y+@@-3 z>eVPVa}7*G+|&NA%hfo?%#ft{*dpXG3#N*#@_X2KfARdGH)A?ex2iBG8qjRH>Z=pb zEGoIEe#hkCmrtsyvoV#t>F0a7d2aTZ)kXV$UAbPq8B>M+=dRA?_Y1S#57obj6@U8~ zQ^mXPhz+jykK1`H+-~YGS-luTMWjG*r@QZrYj*NK)tz_ES9`^ep+q1^I7Vh?{3XZE Q4!!Nx`DyzwRbaCQ0C~2Es{jB1 delta 67 zcmZ2Dm+|Lx#tkMCj53o`B@8AXm8h7UD`_x!tE9x_r;;lsUzL)WEGz9XxmH?Y@>(Fa Xm1$yP+PG2ihxkT=4AISw9y^!;TBjJv diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index a4beab638e9dd3c60e6aec3ae9c039673dd95b87..02f58e2335d7e9125272836bf09f5d94b9667751 100644 GIT binary patch literal 17 VcmZQBa#cSO`uvX|0~jz$0{}2E1P=fJ literal 17 UcmZQBa#cSO`uvX|0|eX!05I?b&;S4c diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ce1c62c7..d6733e47 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -5,6 +5,8 @@