From fe03f364b155936cdd9dbd04897cff5a249fb153 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Thu, 18 Feb 2021 01:51:06 +0800 Subject: [PATCH 001/762] Set theme jekyll-theme-minimal --- docs/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_config.yml b/docs/_config.yml index 6bd245d8f4e..c926c85948d 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,5 +1,5 @@ title: "AB-3" -theme: minima +theme: jekyll-theme-minimal header_pages: - UserGuide.md From a491e6e7f6be31d0e65e40cb62217fdf690ad97a Mon Sep 17 00:00:00 2001 From: yutingzou Date: Tue, 23 Feb 2021 18:21:26 +0800 Subject: [PATCH 002/762] UG: Add 'adding appointment' for features --- docs/UserGuide.md | 145 +++++++--------------------------------------- 1 file changed, 21 insertions(+), 124 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..2726e003d3f 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -2,8 +2,7 @@ layout: page title: User Guide --- - -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +_**Tutor Tracker**_ is a **desktop app designed to help secondary school students manage tutors and tuition appointments, optimised for use via a Command Line Interface** (CLI) for a fast and streamlined experience while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Tutor Tracker can get your contact management tasks done faster than traditional GUI apps. * Table of Contents {:toc} @@ -14,9 +13,9 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo 1. Ensure you have Java `11` or above installed in your Computer. -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). +1. Download the latest `tutortracker.jar` from [here](https://github.com/AY2021S2-CS2103-T14-3/tp). -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. +1. Copy the file to the folder you want to use as the _home folder_ for your TutorTracker. 1. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
![Ui](images/Ui.png) @@ -24,15 +23,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo 1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
Some example commands you can try: - * **`list`** : Lists all contacts. - - * **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. - - * **`delete`**`3` : Deletes the 3rd contact shown in the current list. - - * **`clear`** : Deletes all contacts. - - * **`exit`** : Exits the app. + * **`appointment`**`n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` : Adds an appointment with a tutor named `Chloe Lim` to the Tutor Tracker. 1. Refer to the [Features](#features) below for details of each command. @@ -45,131 +36,42 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo **:information_source: Notes about the command format:**
* Words in `UPPER_CASE` are the parameters to be supplied by the user.
- e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. + e.g. in `appointment n/NAME`, `NAME` is a parameter which can be used as `appointment n/John Doe`. * Items in square brackets are optional.
- e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. + e.g `n/NAME [l/LOCATION]` can be used as `n/John Doe l/Clementi` or as `n/John Doe`. * Items with `…`​ after them can be used multiple times including zero times.
- e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. + e.g. `[l/LOCATION]…​` can be used as ` ` (i.e. 0 times), `l/Bedok`. * Parameters can be in any order.
- e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. + e.g. if the command specifies `n/NAME s/SUBJECT`, `s/SUBJECT n/NAME` is also acceptable. * If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
- e.g. if you specify `p/12341234 p/56785678`, only `p/56785678` will be taken. + e.g. if you specify `l/Bedok l/Clementi`, only `l/Clementi` will be taken. * Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
e.g. if the command specifies `help 123`, it will be interpreted as `help`. -### Viewing help : `help` - -Shows a message explaning how to access the help page. +### Adding Appointment : `appointment` -![help message](images/helpMessage.png) +Adds an appointment with a specific tutor to the schedule.
-Format: `help` +Format: `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]` - -### Adding a person: `add` - -Adds a person to the address book. - -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` +* The date format `yyyy-mm-dd` must be strictly followed. e.g. `2021-3-1`and `2021-03-01`. +* The time format `hh:mm a` must be strictly followed. e.g. `9:01 am` and `10:30 pm`.
:bulb: **Tip:** -A person can have any number of tags (including 0) +An appointment can only have 0 or 1 location.
-Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` - -### Listing all persons : `list` - -Shows a list of all persons in the address book. - -Format: `list` - -### Editing a person : `edit` - -Edits an existing person in the address book. - -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` - -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ -* At least one of the optional fields must be provided. -* Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without - specifying any tags after it. - -Examples: -* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. - -### Locating persons by name: `find` - -Finds persons whose names contain any of the given keywords. - -Format: `find KEYWORD [MORE_KEYWORDS]` - -* The search is case-insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` - -Examples: -* `find John` returns `john` and `John Doe` -* `find alex david` returns `Alex Yeoh`, `David Li`
- ![result for 'find alex david'](images/findAlexDavidResult.png) - -### Deleting a person : `delete` - -Deletes the specified person from the address book. - -Format: `delete INDEX` - -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index **must be a positive integer** 1, 2, 3, …​ - -Examples: -* `list` followed by `delete 2` deletes the 2nd person in the address book. -* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. - -### Clearing all entries : `clear` - -Clears all entries from the address book. - -Format: `clear` - -### Exiting the program : `exit` - -Exits the program. - -Format: `exit` - -### Saving the data - -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. - -### Editing the data file - -AddressBook data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. - -
:exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. -
- -### Archiving data files `[coming in v2.0]` - -_Details coming soon ..._ - +Examples:
+* `appointment n/Andrew Ng s/Mathematics d/2021-3-1 fr/10:00am to/12:00am` +* `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` + -------------------------------------------------------------------------------------------------------------------- ## FAQ @@ -183,10 +85,5 @@ _Details coming soon ..._ Action | Format, Examples --------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` -**Delete** | `delete INDEX`
e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` -**List** | `list` -**Help** | `help` +**Appointment** | `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]`
e.g., `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` + From 27ee9b415d9a35a32caa7ca71035a9c315dc01ff Mon Sep 17 00:00:00 2001 From: yutingzou Date: Thu, 25 Feb 2021 15:01:14 +0800 Subject: [PATCH 003/762] DeveloperGuide: update use cases --- docs/DeveloperGuide.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4829fe43011..9de97cd15fc 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -262,30 +262,30 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Use cases -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) +(For all use cases below, the **System** is the `TutorTracker` and the **Actor** is the `user`, unless specified otherwise) -**Use case: Delete a person** +**Use case: Add an appointment** **MSS** -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. User requests to add an appointment. +2. TutorTracker adds the appointment and displays the new appointment. Use case ends. **Extensions** -* 2a. The list is empty. +* 1a. The tutor name/date/time is empty. + + * 1a1. TutorTracker shows an error message. + + Use case ends. - Use case ends. +* 1b. The given date/time is invalid. -* 3a. The given index is invalid. + * 1b1. TutorTracker shows an error message. - * 3a1. AddressBook shows an error message. - - Use case resumes at step 2. + Use case ends. *{More to be added}* From f1e1e2e906ee537d6efdadfaa0d1d2eb15cc035c Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 15:59:36 +0800 Subject: [PATCH 004/762] Update user guide on list appointments section --- docs/UserGuide.md | 29 ++++++++++-------- docs/images/Ui.png | Bin 14607 -> 41796 bytes docs/images/helpMessage.png | Bin 8435 -> 15688 bytes .../java/seedu/address/ui/HelpWindow.java | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..262bba02a8b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,7 +3,7 @@ layout: page title: User Guide --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +Tutor Tracker is a d**esktop app designed to help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. * Table of Contents {:toc} @@ -14,9 +14,9 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo 1. Ensure you have Java `11` or above installed in your Computer. -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). +1. Download the latest `tutortracker.jar` from [here](https://github.com/AY2021S2-CS2103-T14-3/tp/releases). -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. +1. Copy the file to the folder you want to use as the _home folder_ for your Tutor Tracker. 1. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
![Ui](images/Ui.png) @@ -24,7 +24,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo 1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
Some example commands you can try: - * **`list`** : Lists all contacts. + * **`list_appointments`** : Lists all personal tuition appointments. * **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. @@ -87,11 +87,16 @@ Examples: * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` * `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` -### Listing all persons : `list` +### Listing all tuition appointments : `list_appointments` -Shows a list of all persons in the address book. +Shows a list of all upcoming tuition schedules in the personal tuition appointment list. -Format: `list` +Format: `list_appointments` + +Example outputs: +* `1) John Doe - 2021-4-20 2:00pm - 4:00pm @ Bedok National Library` +* `2) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library` +* `3) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library` ### Editing a person : `edit` @@ -156,14 +161,14 @@ Format: `exit` ### Saving the data -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. +Tutor Tracker data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. ### Editing the data file -AddressBook data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. +Tutor Tracker data are saved as a JSON file `[JAR file location]/data/tutortracker.json`. Advanced users are welcome to update data directly by editing that data file.
:exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. +If your changes to the data file makes its format invalid, Tutor Tracker will discard all data and start with an empty data file at the next run.
### Archiving data files `[coming in v2.0]` @@ -175,7 +180,7 @@ _Details coming soon ..._ ## FAQ **Q**: How do I transfer my data to another Computer?
-**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. +**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Tutor Tracker home folder. -------------------------------------------------------------------------------------------------------------------- @@ -188,5 +193,5 @@ Action | Format, Examples **Delete** | `delete INDEX`
e.g., `delete 3` **Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` **Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` -**List** | `list` +**List tuition appointments** | `list_appointments` **Help** | `help` diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2429edac366ebe3e00650b6dd909d8..480ac052be091725e65039f4b143ef9e66ddce2a 100644 GIT binary patch literal 41796 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 literal 14607 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 RAXge19gVx{rMDi1{6Bg4z)AoB diff --git a/docs/images/helpMessage.png b/docs/images/helpMessage.png index b1f70470137ec75b2bfe4d29458114d1aa75dbcd..855299fa9dc8b725f20d171c0253b27f7ffcdcc5 100644 GIT binary patch literal 15688 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ÐxTGMs?~ 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 { - public static final String USERGUIDE_URL = "https://se-education.org/addressbook-level3/UserGuide.html"; + public static final String USERGUIDE_URL = "https://nus-cs2103-ay2021s2.github.io/tp/UserGuide.html"; public static final String HELP_MESSAGE = "Refer to the user guide: " + USERGUIDE_URL; private static final Logger logger = LogsCenter.getLogger(HelpWindow.class); From 7a1d7cb5122c9b8369b7d2bb32111ed68409cfdd Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 16:00:56 +0800 Subject: [PATCH 005/762] Fixed introduction formatting --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 262bba02a8b..c6a3cc02a94 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,7 +3,7 @@ layout: page title: User Guide --- -Tutor Tracker is a d**esktop app designed to help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. +Tutor Tracker is a **desktop app designed to help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. * Table of Contents {:toc} From f6906541c28afd4bbe8641777eebc35fe11ac52c Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 17:52:08 +0800 Subject: [PATCH 006/762] Fix HelpWindow URL --- docs/images/helpMessage.png | Bin 15688 -> 16008 bytes .../java/seedu/address/ui/HelpWindow.java | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/images/helpMessage.png b/docs/images/helpMessage.png index 855299fa9dc8b725f20d171c0253b27f7ffcdcc5..463acead0f851fa0966b9ac568ff845417e11503 100644 GIT binary patch delta 13011 zcmZv@WmFhV(y)yO2=4A0+zIaP?(R--9o*f6LvVL@cX!tS!QIK1+`Ieip6|SWX6DrN z>8`Hosj8W|dc-r#hd5k8P8=Q<2Nnbb1YS}?L zQbbV29rWDivre*V+an=+MmtGF9?_Q+7P*pA&Dp%`1Sw3muX4^7cR`_Fg~hqn8ZtP? zinD!xg~lva%CUf-JcRCBt`h7gE5JwLxcKRNNp>N=XGjOg$V=I0jkLpFfG0{z#? zA2&oGHa1os+-K|I{@y2~%gZ}x&a77BVa}Y3HxR7_cL?8n0-6yl3WT)hUnc`$KQ#8Z zKBz3YM`9m>JL2H;X0!U|Z4JYE{{i{`HtT`jkbwrEA?2!grlpTPN}roJmT8fq^06;C%6Udw=gFHjZ|xpRZ>gL;R!kRVVR`<;BpJJVR~~!SQhe zQ5>AjF8G_l$%&{_M(_d$|5GmR`aF$mB2qn}p!2Mqu zVl+M>spq>Lg-Xc#BQ712t;n_?`aA6pcA*ZRfAReW8=h|BdgAs%r~EZJ1-26V*NOfa zP@u6985#uWY5-eaLFsaEnEiP@G^(SBj{JpL@liN{VE(67xwwGFdYPP_7^ddZKn#02 zjL~Br#@nOUcHVK~=aqL$nl@@$);JNg;Mph?GBL%Bim4%|oANgpuwc5CCUZ)WUKu_47`&xZNyZQ9X^~xyiJ~ z(U=y9+SL_l;g!~vsa^%9vv$nh@Q9CrQ^lD2Y_56b;v<+!TeQ3-_7}va({Mm%`Fv3V zPKjY!($`6Cdwa@XWwAReCr%0W0#8&MZqr%Npr09Ua^LEx<9TKi^XT<{JV&S z9f9diWkxayX~m3)9PGbO+|viL12cc)vDQ~&EMQ>H&5cn&faHtr@TJavoKS81kfZ);E=mIb}KmA=a zi%1IR+D4@dB7`Sq4*G-}>=Lo!ML~Pt%n={n&Y9aR12eigsfbW!>a&voUgj%q7p}VW z#rJa-R!$gv5ntY)X5O01{(1WsqBaLacX4!fdj)1m>TEkg%baiy33hi$pB#o6pT8u$ z5`b*I*TCK%aWk=#%t+ci82t@eJFntBKlUi9-exWwQE9^q6)RCMox>Ua|4WO=#*d$N zQx`a9e4d+bd5YT;V-Dua6YS!Yc5BV*l)$`po!w$x+y5zzyX;Lh5h`O9=sn0>dK(ND zS&C^~G&Rt&Zd1HIICmVM(AiQ@LyPfsdJ%8n0>>5`Z1at?UUumj0zz1A*#?7$4&B%6 zAH6(@b`%{^9~&B*nzZB-xtI&TI104_xSS5T#tu1;8CiOSA*+FZqrg`%;)XZuuOo<< zl8(36h2XFSY0vRsZVyI?Tik1c=G=#ciu_t6i}8CuX%GmWo{dc;+Q;8*jX+ho{L6Ni zhQ&YC295}fgs60{%)#yYd3 zdy=0MM6fH>(LBk#yo=?63iIh#KU0Wrc;3Z`Ip_RFh}=AR=2Hcl*TdN`dE{h7(FKr; zy3|@tL*r0%f^wc^Jrpk-I%C$`ZBuH(FF7f~B{X+`#_!=0Xcb*=3h^O_bexBpUKpyaa83SR)4>;(BJ6bn0Z?nM-El!cJd+Zw z5E8e^$>6L76C%1*Hr!*z=)DMf8ET?p@S4lvnXE{sw5+_E?>;!R6(^)9yLevTYM=d+ zqg!gB-78x*HQ2wp{f!@9V!2hd;Gx#Ca|9fY_8AIWeV>k*nDMYUCStRzFKc4@D*yub8}Bk`YV;q=`C>uW>^=0CQ2tCnZXriPN-5a3!SD9dk0-@p9F8L*3^}i(ps8|mwSk=R=r_}K7KZg0g>R=fg zv>TOjAfEnT24e&R{(YZ=8;s9cYQfcic5;gDcKCnli5|Kr5QgNfzT|1qKS|*~MF}AW zSVhZw&9BH-)Bg&!u|U-}>~_bF^8ZBgf0rXYh@bxmeKqa}H<J(!-u}`VTnp^} zPg}oK=)1eS+^Q-B^Xcry57weoN&8icy<*`|M8cS~G_03Svr8LG@3OlTTY8

G7W_ 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 YV7Ae(nR4RKJ{1s2Q8|$+A%lSb59FJGU;qFB delta 12688 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 qBj7p;F_ih=Nc { - public static final String USERGUIDE_URL = "https://nus-cs2103-ay2021s2.github.io/tp/UserGuide.html"; + public static final String USERGUIDE_URL = "https://ay2021s2-cs2103-t14-3.github.io/tp/UserGuide.html"; public static final String HELP_MESSAGE = "Refer to the user guide: " + USERGUIDE_URL; private static final Logger logger = LogsCenter.getLogger(HelpWindow.class); From f9e141b65caad016f965261dcd22f55e1e85ffb4 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 21:10:52 +0800 Subject: [PATCH 007/762] Edit DG introduction, architecture and logic section --- docs/DeveloperGuide.md | 59 +++++++++++------- .../diagrams/ArchitectureSequenceDiagram.puml | 8 +-- docs/diagrams/DeleteSequenceDiagram.puml | 24 +++---- docs/diagrams/LogicClassDiagram.puml | 8 +-- docs/images/ArchitectureSequenceDiagram.png | Bin 25793 -> 19795 bytes docs/images/DeleteSequenceDiagram.png | Bin 33030 -> 29900 bytes docs/images/LogicClassDiagram.png | Bin 50429 -> 60513 bytes 7 files changed, 56 insertions(+), 43 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4829fe43011..d0c8b7a28f2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -12,13 +12,33 @@ title: Developer Guide Refer to the guide [_Setting up and getting started_](SettingUp.md). -------------------------------------------------------------------------------------------------------------------- +## **Introduction** +**Tutor Tracker** is a desktop tuition management application meant for secondary students to track their tuition information, such as upcoming tuition appointments and tutor's contact information. +It focuses on the Command Line Interface (CLI) while providing users with a simple and clean Graphical User Interface (GUI). +Thus, the main interaction with **Tutor Tracker** will be done through commands. + +Tutor Tracker is an all-in-one tuition management solution for tech-savvy secondary school students. +The features of Tutor Tracker includes: + +- Viewing of tutors' profile +- Adding new tuition appointments +- Filtering tutors by personal preference (i.e. availability, experiences, name, location, price, etc.) +- Viewing upcoming tuition appointments + +The purpose of this Developer Guide is to help you understand the design and implementation of Tutor Tracker to get started on your contributions to Tutor Tracker. ## **Design** +This section will help you learn more about the design and structure of Tutor Tracker. Each section will describe and explains how each component of the application works. +It's noteworthy to mention that the Tutor Tracker follows an Object-Oriented Programming paradigm. + ### Architecture +_Figure 1. Architecture Diagram of Tutor Tracker_ + + The ***Architecture Diagram*** given above explains the high-level design of the App. Given below is a quick overview of each component.

@@ -27,31 +47,24 @@ The ***Architecture Diagram*** given above explains the high-level design of the
-**`Main`** has two classes called [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java). It is responsible for, -* At app launch: Initializes the components in the correct sequence, and connects them up with each other. -* At shut down: Shuts down the components and invokes cleanup methods where necessary. +The application consists of 6 main components" -[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components. - -The rest of the App consists of four components. - -* [**`UI`**](#ui-component): The UI of the App. -* [**`Logic`**](#logic-component): The command executor. -* [**`Model`**](#model-component): Holds the data of the App in memory. -* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk. - -Each of the four components, +| Component | Description +| -------- | ------------------------------------------ | +| `Main` |**`Main`** has two classes called [`Main`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/MainApp.java).
It is responsible for:
  • At app launch: Initializes the components in the correct sequence, and connects them up with each other.
  • At shut down: Shuts down the components and invokes cleanup methods where necessary.
  • | +| [**`UI`**](#ui-component) | The UI of the App. | +| [**`Logic`**](#logic-component)| The command executor.| +| [**`Model`**](#model-component)| Holds the data of the App in memory.| +| [**`Storage`**](#storage-component)| Reads data from, and writes data to, the hard disk. | +| [**`Commons`**](#common-classes)| Represents a collection of classes used by multiple other components.| +For each of `UI`, `Logic`, `Model` and `Storage` component, * defines its *API* in an `interface` with the same name as the Component. * exposes its functionality using a concrete `{Component Name}Manager` class (which implements the corresponding API `interface` mentioned in the previous point. -For example, the `Logic` component (see the class diagram given below) defines its API in the `Logic.java` interface and exposes its functionality using the `LogicManager.java` class which implements the `Logic` interface. - -![Class Diagram of the Logic Component](images/LogicClassDiagram.png) - **How the architecture components interact with each other** -The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. +The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete_appointment 1`. @@ -62,7 +75,7 @@ The sections below give more details of each component. ![Structure of the UI Component](images/UiClassDiagram.png) **API** : -[`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java) +[`Ui.java`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/ui/Ui.java) The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class. @@ -78,15 +91,15 @@ The `UI` component, ![Structure of the Logic Component](images/LogicClassDiagram.png) **API** : -[`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) +[`Logic.java`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/logic/Logic.java) -1. `Logic` uses the `AddressBookParser` class to parse the user command. +1. `Logic` uses the `TutorTrackerParser` class to parse the user command. 1. This results in a `Command` object which is executed by the `LogicManager`. -1. The command execution can affect the `Model` (e.g. adding a person). +1. The command execution can affect the `Model` (e.g. adding an appointment). 1. The result of the command execution is encapsulated as a `CommandResult` object which is passed back to the `Ui`. 1. In addition, the `CommandResult` object can also instruct the `Ui` to perform certain actions, such as displaying help to the user. -Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete 1")` API call. +Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete_appointment 1")` API call. ![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png) diff --git a/docs/diagrams/ArchitectureSequenceDiagram.puml b/docs/diagrams/ArchitectureSequenceDiagram.puml index ef81d18c337..f4939534e57 100644 --- a/docs/diagrams/ArchitectureSequenceDiagram.puml +++ b/docs/diagrams/ArchitectureSequenceDiagram.puml @@ -7,19 +7,19 @@ Participant ":Logic" as logic LOGIC_COLOR Participant ":Model" as model MODEL_COLOR Participant ":Storage" as storage STORAGE_COLOR -user -[USER_COLOR]> ui : "delete 1" +user -[USER_COLOR]> ui : "delete_appointment 1" activate ui UI_COLOR -ui -[UI_COLOR]> logic : execute("delete 1") +ui -[UI_COLOR]> logic : execute("delete_appointment 1") activate logic LOGIC_COLOR -logic -[LOGIC_COLOR]> model : deletePerson(p) +logic -[LOGIC_COLOR]> model : deleteAppointment(a) activate model MODEL_COLOR model -[MODEL_COLOR]-> logic deactivate model -logic -[LOGIC_COLOR]> storage : saveAddressBook(addressBook) +logic -[LOGIC_COLOR]> storage : saveAppointment(addressBook) activate storage STORAGE_COLOR storage -[STORAGE_COLOR]> storage : Save to file diff --git a/docs/diagrams/DeleteSequenceDiagram.puml b/docs/diagrams/DeleteSequenceDiagram.puml index 1dc2311b245..84b97e6b4aa 100644 --- a/docs/diagrams/DeleteSequenceDiagram.puml +++ b/docs/diagrams/DeleteSequenceDiagram.puml @@ -3,7 +3,7 @@ box Logic LOGIC_COLOR_T1 participant ":LogicManager" as LogicManager LOGIC_COLOR -participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":TutorTrackerParser" as TutorTrackerParser LOGIC_COLOR participant ":DeleteCommandParser" as DeleteCommandParser LOGIC_COLOR participant "d:DeleteCommand" as DeleteCommand LOGIC_COLOR participant ":CommandResult" as CommandResult LOGIC_COLOR @@ -13,20 +13,20 @@ box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR end box -[-> LogicManager : execute("delete 1") +[-> LogicManager : execute("delete_appointment 1") activate LogicManager -LogicManager -> AddressBookParser : parseCommand("delete 1") -activate AddressBookParser +LogicManager -> TutorTrackerParser : parseCommand("delete_appointment 1") +activate TutorTrackerParser create DeleteCommandParser -AddressBookParser -> DeleteCommandParser +TutorTrackerParser -> DeleteCommandParser activate DeleteCommandParser -DeleteCommandParser --> AddressBookParser +DeleteCommandParser --> TutorTrackerParser deactivate DeleteCommandParser -AddressBookParser -> DeleteCommandParser : parse("1") +TutorTrackerParser -> DeleteCommandParser : parse("1") activate DeleteCommandParser create DeleteCommand @@ -36,19 +36,19 @@ activate DeleteCommand DeleteCommand --> DeleteCommandParser : d deactivate DeleteCommand -DeleteCommandParser --> AddressBookParser : d +DeleteCommandParser --> TutorTrackerParser : d deactivate DeleteCommandParser 'Hidden arrow to position the destroy marker below the end of the activation bar. -DeleteCommandParser -[hidden]-> AddressBookParser +DeleteCommandParser -[hidden]-> TutorTrackerParser destroy DeleteCommandParser -AddressBookParser --> LogicManager : d -deactivate AddressBookParser +TutorTrackerParser --> LogicManager : d +deactivate TutorTrackerParser LogicManager -> DeleteCommand : execute() activate DeleteCommand -DeleteCommand -> Model : deletePerson(1) +DeleteCommand -> Model : deleteAppointment(1) activate Model Model --> DeleteCommand diff --git a/docs/diagrams/LogicClassDiagram.puml b/docs/diagrams/LogicClassDiagram.puml index 016ef33e2e2..ab3714d296e 100644 --- a/docs/diagrams/LogicClassDiagram.puml +++ b/docs/diagrams/LogicClassDiagram.puml @@ -8,7 +8,7 @@ package Logic { package Parser { Interface Parser <> -Class AddressBookParser +Class TutorTrackerParser Class XYZCommandParser Class CliSyntax Class ParserUtil @@ -35,8 +35,8 @@ Class HiddenOutside #FFFFFF HiddenOutside ..> Logic LogicManager .up.|> Logic -LogicManager -->"1" AddressBookParser -AddressBookParser .left.> XYZCommandParser: creates > +LogicManager -->"1" TutorTrackerParser +TutorTrackerParser .left.> XYZCommandParser: creates > XYZCommandParser ..> XYZCommand : creates > XYZCommandParser ..|> Parser @@ -53,7 +53,7 @@ LogicManager .left.> Command : executes > LogicManager --> Model Command .right.> Model -note right of XYZCommand: XYZCommand = AddCommand, \nFindCommand, etc +note right of XYZCommand: XYZCommand = AddAppointmentCommand, \nDeleteAppointmentCommand, etc Logic ..> CommandResult LogicManager .down.> CommandResult diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png index 2f1346869d0686b215b9bd3659b0879621eea2d5..c9c1089d89ebb4c757c7fbeaa8ce02e26fccee3c 100644 GIT binary patch literal 19795 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 P%==-|N>X|EpZfeSas+rg literal 25793 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 WgL7e1(H*cP>X7D9ja0QWSN;W2)I1&l diff --git a/docs/images/DeleteSequenceDiagram.png b/docs/images/DeleteSequenceDiagram.png index fa327b39618308d02b8e0627791af7979ef63947..9dcca89ed5cb3326f34eb2c030b4a28b3aaba632 100644 GIT binary patch literal 29900 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 WYVe1k7vQ_1B-fQSm2wpB`2G+6g-p-@ literal 33030 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 diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png index b9e853cef129e02994830b0556b03b25b48ed257..a06183152feb4703b437d353f0523bd86b88521a 100644 GIT binary patch literal 60513 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 From 9cf1e720df4aa04d6e3f3f59bd3c2d9b36069727 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 21:27:12 +0800 Subject: [PATCH 008/762] Fix LogicClassDiagram image --- docs/images/LogicClassDiagram.png | Bin 60513 -> 132926 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png index a06183152feb4703b437d353f0523bd86b88521a..42abed3adb71d0e038b104c30e2da80f3a0970c4 100644 GIT binary patch literal 132926 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 Date: Thu, 25 Feb 2021 22:05:42 +0800 Subject: [PATCH 009/762] Fix formatting, update user stories and use case for list --- docs/DeveloperGuide.md | 94 ++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 36 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index d0c8b7a28f2..e4efd1d2876 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -49,16 +49,16 @@ The ***Architecture Diagram*** given above explains the high-level design of the The application consists of 6 main components" -| Component | Description -| -------- | ------------------------------------------ | -| `Main` |**`Main`** has two classes called [`Main`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/MainApp.java).
    It is responsible for:

  • At app launch: Initializes the components in the correct sequence, and connects them up with each other.
  • At shut down: Shuts down the components and invokes cleanup methods where necessary.
  • | -| [**`UI`**](#ui-component) | The UI of the App. | -| [**`Logic`**](#logic-component)| The command executor.| -| [**`Model`**](#model-component)| Holds the data of the App in memory.| -| [**`Storage`**](#storage-component)| Reads data from, and writes data to, the hard disk. | -| [**`Commons`**](#common-classes)| Represents a collection of classes used by multiple other components.| - -For each of `UI`, `Logic`, `Model` and `Storage` component, +| Component | Description +| ----------------------------------- | -------------------------------------------------------------------- | +| `Main` | **`Main`** has two classes called [`Main`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/MainApp.java).
    It is responsible for:
  • At app launch: Initializes the components in the correct sequence, and connects them up with each other.
  • At shut down: Shuts down the components and invokes cleanup methods where necessary.
  • | +| [**`UI`**](#ui-component) | The UI of the App. | +| [**`Logic`**](#logic-component) | The command executor. | +| [**`Model`**](#model-component) | Holds the data of the App in memory. | +| [**`Storage`**](#storage-component) | Reads data from, and writes data to, the hard disk. | +| [**`Commons`**](#common-classes) | Represents a collection of classes used by multiple other components.| + +For each of `UI`, `Logic`, `Model` and `Storage` component, it * defines its *API* in an `interface` with the same name as the Component. * exposes its functionality using a concrete `{Component Name}Manager` class (which implements the corresponding API `interface` mentioned in the previous point. @@ -101,7 +101,7 @@ The `UI` component, Given below is the Sequence Diagram for interactions within the `Logic` component for the `execute("delete_appointment 1")` API call. -![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png) +![Interactions Inside the Logic Component for the `delete appointment_1` Command](images/DeleteSequenceDiagram.png)
    :information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
    @@ -263,44 +263,66 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` | Priority | As a …​ | I want to …​ | So that I can…​ | -| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | - +| -------- | --------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `* * *` | brand new user | see usage instructions | refer to instructions when I forget how to use the App | +| `* * *` | student | add new tutor details | keep track of a new tutor that I have heard about | +| `* * *` | student | view personal information of a tutor (i.e., email, location, subject, background, age, etc.) | determine whether I should choose this tutor & contact tutors directly for queries | | +| `* * *` | student | add an tuition appointment | | +| `* * *` | student | view my tuition appointment | view the details of the tuition appointment (i.e., tutor's name, location, date and time) | +| `* * *` | student | delete a tuition appointment | know that the tuition appointment is cancelled | +| `* * *` | student | check my personal tuition appointment schedule | know the timing of all my tuition appointments | +| `* * *` | student | filter tutors by their subject discipline | find a tutor that caters to my needs (academic) | +| `* * *` | student | filter tutor by cost | find a tutor that fits into budget as well | +| `* * *` | student | filter a tutor by his/her name | view his/her profile | +| `* * *` | student | filter tutors by their years of experience | find a tutor with experience within the range of my expectation | +| `* * *` | student | filter tutors by their available timeslots | find a tutor with matched tuition time | +| `* * *` | student | filter tutors by their available location | find tutors in a specific area | *{More to be added}* ### Use cases (For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) -**Use case: Delete a person** - -**MSS** - -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person - +### Appointment +
    +Use Case UC001: Add an appointment
    +
    +
    +Use Case UC002: Delete an appointment
    +
    +MSS
    +1. User requests to list persons
    +2. AddressBook shows a list of persons
    +3. User requests to delete a specific person in the list
    +4. AddressBook deletes the person.
    +Use case ends.
    +
    +Extensions
    +2a. The list is empty.
         Use case ends.
     
    -**Extensions**
    -
    -* 2a. The list is empty.
    +3a. The given index is invalid.
    +    3a1. AddressBook shows an error message.
    +    Use case resumes at step 2.
     
    -  Use case ends.
    +{More to be added}
    +
    -* 3a. The given index is invalid. +
    +Use Case UC003: List tution appointments
    +View the list of personal tuition appointments.
     
    -    * 3a1. AddressBook shows an error message.
    +System: Tutor Tracker
    +Actor: User
     
    -      Use case resumes at step 2.
    +Preconditions: Appointments list must exist.
    +Guarantees: A view of the schedule of appointments.
     
    -*{More to be added}*
    +MSS
    +1. User requests to view the list of appointments.
    +2. Tutor Tracker displays the list of appointments to the user.
    +   Use case ends.
    +
    ### Non-Functional Requirements From e9698faa8ede853b8e7ca2d326d1aef36cdf3b38 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Thu, 25 Feb 2021 22:09:07 +0800 Subject: [PATCH 010/762] Fix typo --- docs/DeveloperGuide.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e4efd1d2876..c388b4eb139 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -309,18 +309,18 @@ Use case ends.
    -Use Case UC003: List tution appointments
    +Use Case UC003: List tuition appointments
     View the list of personal tuition appointments.
     
     System: Tutor Tracker
     Actor: User
     
    -Preconditions: Appointments list must exist.
    -Guarantees: A view of the schedule of appointments.
    +Preconditions: Appointment list must exist.
    +Guarantees: A view of the schedule of tuition appointments.
     
     MSS
    -1. User requests to view the list of appointments.
    -2. Tutor Tracker displays the list of appointments to the user.
    +1. User requests to view the list of tuition appointments.
    +2. Tutor Tracker displays the list of tuition appointments to the user.
        Use case ends.
     
    From 4b1dc1fe5e3420a9503c64feb8d9f0596fbecd6e Mon Sep 17 00:00:00 2001 From: yutingzou Date: Fri, 26 Feb 2021 14:58:18 +0800 Subject: [PATCH 011/762] DeveloperGuide: update glossary --- docs/DeveloperGuide.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9de97cd15fc..ecb75717b7c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -275,13 +275,13 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli **Extensions** -* 1a. The tutor name/date/time is empty. +* 1a. The tutor name, date of appointment or start and end time is empty. * 1a1. TutorTracker shows an error message. Use case ends. -* 1b. The given date/time is invalid. +* 1b. The given date or start and end time is invalid. * 1b1. TutorTracker shows an error message. @@ -300,7 +300,10 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Glossary * **Mainstream OS**: Windows, Linux, Unix, OS-X -* **Private contact detail**: A contact detail that is not meant to be shared with others +* **Appointment**: An event in user's local schedule with related details, including tutor's name, date of appointment, start and end time and location(optional). +* **Education Level**: The level of education offered by a tutor for a specific subject, e.g, "O level". +* **Years of Experience**: Years of experience of tutoring a specific subject. +* **Qualifications**: Official certificates of successful completion of an education programme, e.g, Bachelor of Science. -------------------------------------------------------------------------------------------------------------------- From d810dbdc584ce623f2045fdceada801f6eb70621 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Fri, 26 Feb 2021 15:30:05 +0800 Subject: [PATCH 012/762] Add TutorList.java --- .../seedu/address/model/person/TutorList.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/main/java/seedu/address/model/person/TutorList.java diff --git a/src/main/java/seedu/address/model/person/TutorList.java b/src/main/java/seedu/address/model/person/TutorList.java new file mode 100644 index 00000000000..952812a1885 --- /dev/null +++ b/src/main/java/seedu/address/model/person/TutorList.java @@ -0,0 +1,101 @@ +package seedu.address.model.person; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; + +import java.util.Iterator; +import java.util.List; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +public class TutorList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent person as the given argument. + */ + public boolean contains(Tutor toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameTutor); + } + + /** + * Adds a person to the list. + * The person must not already exist in the list. + */ + public void add(Tutor toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicatePersonException(); + } + internalList.add(toAdd); + } + + /** + * Removes the equivalent person from the list. + * The person must exist in the list. + */ + public void remove(Tutor toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new PersonNotFoundException(); + } + } + + /** + * Replaces the contents of this list with {@code persons}. + * {@code persons} must not contain duplicate persons. + */ + public void setPersons(List tutors) { + requireAllNonNull(tutors); + if (!tutorsAreUnique(tutors)) { + throw new DuplicatePersonException(); + } + + internalList.setAll(tutors); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof TutorList // instanceof handles nulls + && internalList.equals(((TutorList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code persons} contains only unique persons. + */ + private boolean tutorsAreUnique(List tutors) { + for (int i = 0; i < tutors.size() - 1; i++) { + for (int j = i + 1; j < tutors.size(); j++) { + if (tutors.get(i).isSameTutor(tutors.get(j))) { + return false; + } + } + } + return true; + } +} From 1cab3b3f6199529ee1d5ead9d97304c3a48dbad2 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Fri, 26 Feb 2021 20:14:14 +0800 Subject: [PATCH 013/762] Add TagList.java --- .../seedu/address/model/person/TutorList.java | 16 +- .../java/seedu/address/model/tag/TagList.java | 149 ++++++++++++++++++ 2 files changed, 161 insertions(+), 4 deletions(-) create mode 100644 src/main/java/seedu/address/model/tag/TagList.java diff --git a/src/main/java/seedu/address/model/person/TutorList.java b/src/main/java/seedu/address/model/person/TutorList.java index 952812a1885..a4634e97c3e 100644 --- a/src/main/java/seedu/address/model/person/TutorList.java +++ b/src/main/java/seedu/address/model/person/TutorList.java @@ -11,6 +11,9 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +// To implement: +// Class: Tutor, DuplicateTagException, TagNotFoundException +// Method: isSameTutor public class TutorList implements Iterable { private final ObservableList internalList = FXCollections.observableArrayList(); @@ -32,7 +35,7 @@ public boolean contains(Tutor toCheck) { public void add(Tutor toAdd) { requireNonNull(toAdd); if (contains(toAdd)) { - throw new DuplicatePersonException(); + throw new DuplicateTutorException(); } internalList.add(toAdd); } @@ -44,18 +47,23 @@ public void add(Tutor toAdd) { public void remove(Tutor toRemove) { requireNonNull(toRemove); if (!internalList.remove(toRemove)) { - throw new PersonNotFoundException(); + throw new TutorNotFoundException(); } } + public void setTutors(seedu.address.model.person.TutorList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + /** * Replaces the contents of this list with {@code persons}. * {@code persons} must not contain duplicate persons. */ - public void setPersons(List tutors) { + public void setTutors(List tutors) { requireAllNonNull(tutors); if (!tutorsAreUnique(tutors)) { - throw new DuplicatePersonException(); + throw new DuplicateTutorException(); } internalList.setAll(tutors); diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java new file mode 100644 index 00000000000..c36df9b4b7b --- /dev/null +++ b/src/main/java/seedu/address/model/tag/TagList.java @@ -0,0 +1,149 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.Email; +import seedu.address.model.person.Name; +import seedu.address.model.person.Person; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; + +/** + * A list of persons that enforces uniqueness between its elements and does not allow nulls. + * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of + * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is + * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so + * as to ensure that the person with exactly the same fields will be removed. + * + * Supports a minimal set of list operations. + * + * @see Person#isSamePerson(Person) + */ + +// To implement: +// Class: Tag, Name, Email, Gender, DuplicateTagException, TagNotFoundException +// Method: isSameTagType, isSameTag +public class TagList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent person as the given argument. + */ + public boolean contains(Tag toCheck) { + requireNonNull(toCheck); + // a tutor should only have 1 name, email and gender. + if (toCheck instanceof Name || toCheck instanceof Email || toCheck instanceof Gender) { + return internalList.stream().anyMatch(toCheck::isSameTagType); + } + return internalList.stream().anyMatch(toCheck::isSameTag); + } + + /** + * Adds a person to the list. + * The person must not already exist in the list. + */ + public void add(Tag toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateTagException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the person {@code target} in the list with {@code editedPerson}. + * {@code target} must exist in the list. + * The person identity of {@code editedPerson} must not be the same as another existing person in the list. + */ + public void setTag(Tag target, Tag editedTag) { + requireAllNonNull(target, editedTag); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new TagNotFoundException(); + } + + if (!target.isSameTag(editedTag) && contains(editedTag)) { + throw new DuplicateTagException(); + } + + internalList.set(index, editedTag); + } + + /** + * Removes the equivalent person from the list. + * The person must exist in the list. + */ + public void remove(Tag toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new TagNotFoundException(); + } + } + + public void setTags(seedu.address.model.tag.TagList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code persons}. + * {@code persons} must not contain duplicate persons. + */ + public void setTags(List tags) { + requireAllNonNull(tags); + if (!tagsAreUnique(tags)) { + throw new DuplicateTagException(); + } + + internalList.setAll(tags); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof TagList // instanceof handles nulls + && internalList.equals(((TagList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code persons} contains only unique persons. + */ + private boolean tagsAreUnique(List tags) { + for (int i = 0; i < tags.size() - 1; i++) { + for (int j = i + 1; j < tags.size(); j++) { + if (tags.get(i).isSameTag(tags.get(j))) { + return false; + } + } + } + return true; + } +} + From fdc0ea7310f67d0bacb9ce11bddb058b75513e53 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Fri, 26 Feb 2021 20:44:09 +0800 Subject: [PATCH 014/762] Add AppointmentList.java --- .../java/seedu/address/model/Appointment.java | 131 ++++++++++++++++++ .../seedu/address/model/person/TutorList.java | 33 +++-- .../java/seedu/address/model/tag/TagList.java | 31 ++--- 3 files changed, 166 insertions(+), 29 deletions(-) create mode 100644 src/main/java/seedu/address/model/Appointment.java diff --git a/src/main/java/seedu/address/model/Appointment.java b/src/main/java/seedu/address/model/Appointment.java new file mode 100644 index 00000000000..0d896f56e25 --- /dev/null +++ b/src/main/java/seedu/address/model/Appointment.java @@ -0,0 +1,131 @@ +package seedu.address.model; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; + +// To implement +// Class: Appointment, DuplicateAppointmentException, AppointmentNotFoundException +// Method: isSameAppoinment +public class AppointmentList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent appointment as the given argument. + */ + public boolean contains(Appointment toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameAppointment); + } + + /** + * Adds an appointment to the list. + * The appointment must not already exist in the list. + */ + public void add(Appointment toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateAppointmentException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the appointment {@code target} in the list with {@code editedAppointment}. + * {@code target} must exist in the list. + * The appointment identity of {@code editedAppointment} must not be the same as another existing appointment in the list. + */ + public void setAppointment(Appointment target, Appointment editedAppointment) { + requireAllNonNull(target, editedAppointment); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new AppointmentNotFoundException(); + } + + if (!target.isSameAppointment(editedAppointment) && contains(editedAppointment)) { + throw new DuplicateAppointmentException(); + } + + internalList.set(index, editedAppointment); + } + + /** + * Removes the equivalent appointment from the list. + * The appointment must exist in the list. + */ + public void remove(Appointment toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new AppointmentNotFoundException(); + } + } + + public void setAppointments(seedu.address.model.Appointment replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code appointments}. + * {@code appointments} must not contain duplicate appointments. + */ + public void setAppointments(List appointments) { + requireAllNonNull(appointments); + if (!appointmentsAreUnique(appointments)) { + throw new DuplicateAppointmentException(); + } + + internalList.setAll(appointments); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.AppointmentList // instanceof handles nulls + && internalList.equals(((seedu.address.model.AppointmentList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code appointments} contains only unique appointments. + */ + private boolean appointmentsAreUnique(List appointments) { + for (int i = 0; i < appointments.size() - 1; i++) { + for (int j = i + 1; j < appointments.size(); j++) { + if (appointments.get(i).isSameAppointment(appointments.get(j))) { + return false; + } + } + } + return true; + } +} + diff --git a/src/main/java/seedu/address/model/person/TutorList.java b/src/main/java/seedu/address/model/person/TutorList.java index a4634e97c3e..8935a9d829a 100644 --- a/src/main/java/seedu/address/model/person/TutorList.java +++ b/src/main/java/seedu/address/model/person/TutorList.java @@ -4,6 +4,7 @@ import javafx.collections.ObservableList; import seedu.address.model.person.exceptions.DuplicatePersonException; import seedu.address.model.person.exceptions.PersonNotFoundException; +import seedu.address.model.tag.Tag; import java.util.Iterator; import java.util.List; @@ -11,6 +12,7 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + // To implement: // Class: Tutor, DuplicateTagException, TagNotFoundException // Method: isSameTutor @@ -21,7 +23,7 @@ public class TutorList implements Iterable { FXCollections.unmodifiableObservableList(internalList); /** - * Returns true if the list contains an equivalent person as the given argument. + * Returns true if the list contains an equivalent tutor as the given argument. */ public boolean contains(Tutor toCheck) { requireNonNull(toCheck); @@ -29,8 +31,8 @@ public boolean contains(Tutor toCheck) { } /** - * Adds a person to the list. - * The person must not already exist in the list. + * Adds tutor to the list. + * The tutor must not already exist in the list. */ public void add(Tutor toAdd) { requireNonNull(toAdd); @@ -40,9 +42,24 @@ public void add(Tutor toAdd) { internalList.add(toAdd); } + public void setTutor(Tutor target, Tutor editedTutor) { + requireAllNonNull(target, editedTutor); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new TutorNotFoundException(); + } + + if (!target.isSameTutor(editedTutor) && contains(editedTutor)) { + throw new DuplicateTutorException(); + } + + internalList.set(index, editedTutor); + } + /** - * Removes the equivalent person from the list. - * The person must exist in the list. + * Removes the equivalent tutor from the list. + * The tutor must exist in the list. */ public void remove(Tutor toRemove) { requireNonNull(toRemove); @@ -57,8 +74,8 @@ public void setTutors(seedu.address.model.person.TutorList replacement) { } /** - * Replaces the contents of this list with {@code persons}. - * {@code persons} must not contain duplicate persons. + * Replaces the contents of this list with {@code tutors}. + * {@code tutors} must not contain duplicate tutors. */ public void setTutors(List tutors) { requireAllNonNull(tutors); @@ -94,7 +111,7 @@ public int hashCode() { } /** - * Returns true if {@code persons} contains only unique persons. + * Returns true if {@code tutors} contains only unique tutors. */ private boolean tutorsAreUnique(List tutors) { for (int i = 0; i < tutors.size() - 1; i++) { diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java index c36df9b4b7b..12a8f36b9bb 100644 --- a/src/main/java/seedu/address/model/tag/TagList.java +++ b/src/main/java/seedu/address/model/tag/TagList.java @@ -14,17 +14,6 @@ import seedu.address.model.person.exceptions.DuplicatePersonException; import seedu.address.model.person.exceptions.PersonNotFoundException; -/** - * A list of persons that enforces uniqueness between its elements and does not allow nulls. - * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of - * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is - * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so - * as to ensure that the person with exactly the same fields will be removed. - * - * Supports a minimal set of list operations. - * - * @see Person#isSamePerson(Person) - */ // To implement: // Class: Tag, Name, Email, Gender, DuplicateTagException, TagNotFoundException @@ -36,7 +25,7 @@ public class TagList implements Iterable { FXCollections.unmodifiableObservableList(internalList); /** - * Returns true if the list contains an equivalent person as the given argument. + * Returns true if the list contains an equivalent tag as the given argument. */ public boolean contains(Tag toCheck) { requireNonNull(toCheck); @@ -48,8 +37,8 @@ public boolean contains(Tag toCheck) { } /** - * Adds a person to the list. - * The person must not already exist in the list. + * Adds a tag to the list. + * The tag must not already exist in the list. */ public void add(Tag toAdd) { requireNonNull(toAdd); @@ -60,9 +49,9 @@ public void add(Tag toAdd) { } /** - * Replaces the person {@code target} in the list with {@code editedPerson}. + * Replaces the tag {@code target} in the list with {@code editedTag}. * {@code target} must exist in the list. - * The person identity of {@code editedPerson} must not be the same as another existing person in the list. + * The tag identity of {@code editedTag} must not be the same as another existing tag in the list. */ public void setTag(Tag target, Tag editedTag) { requireAllNonNull(target, editedTag); @@ -80,8 +69,8 @@ public void setTag(Tag target, Tag editedTag) { } /** - * Removes the equivalent person from the list. - * The person must exist in the list. + * Removes the equivalent tag from the list. + * The tag must exist in the list. */ public void remove(Tag toRemove) { requireNonNull(toRemove); @@ -96,8 +85,8 @@ public void setTags(seedu.address.model.tag.TagList replacement) { } /** - * Replaces the contents of this list with {@code persons}. - * {@code persons} must not contain duplicate persons. + * Replaces the contents of this list with {@code tags}. + * {@code tags} must not contain duplicate tags. */ public void setTags(List tags) { requireAllNonNull(tags); @@ -133,7 +122,7 @@ public int hashCode() { } /** - * Returns true if {@code persons} contains only unique persons. + * Returns true if {@code tags} contains only unique tags. */ private boolean tagsAreUnique(List tags) { for (int i = 0; i < tags.size() - 1; i++) { From 9b3fed1b07032827c426138763f3a8743f4cb6fc Mon Sep 17 00:00:00 2001 From: yutingzou Date: Fri, 26 Feb 2021 20:50:43 +0800 Subject: [PATCH 015/762] Update user stories --- docs/DeveloperGuide.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ecb75717b7c..01ab94b0a8b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -251,12 +251,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | | -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| `* * *` | user | add a new appointment with a tutor | refer to appointment details in my own schedule | *{More to be added}* From 63daa75c96e0bf23aa702e5297307b5cb0ae0a12 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sat, 27 Feb 2021 02:17:59 +0800 Subject: [PATCH 016/762] Update README and product UI mockup --- README.md | 18 +++++++----------- docs/images/Ui.png | Bin 14607 -> 73175 bytes 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 13f5c77403f..430e06480d4 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,10 @@ -[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) +# Tutor Tracker + +[![CI Status](https://github.com/AY2021S2-CS2103-T14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2021S2-CS2103-T14-3/tp/actions) +[![codecov](https://codecov.io/gh/AY2021S2-CS2103-T14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2021S2-CS2103-T14-3/tp) ![Ui](docs/images/Ui.png) -* This is **a sample project for Software Engineering (SE) students**.
    - Example usages: - * as a starting point of a course project (as opposed to writing everything from scratch) - * as a case study -* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. - * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big. - * It comes with a **reasonable level of user and developer documentation**. -* It is named `AddressBook Level 3` (`AB3` for short) because it was initially created as a part of a series of `AddressBook` projects (`Level 1`, `Level 2`, `Level 3` ...). -* For the detailed documentation of this project, see the **[Address Book Product Website](https://se-education.org/addressbook-level3)**. -* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org#https://se-education.org/#contributing) for more info. +* **Tutor Tracker** is a desktop app designed to **help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. +* For the detailed documentation of this project, see the **[Tutor Tracker Product Website](https://ay2021s2-cs2103-t14-3.github.io/tp/)**. +* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2429edac366ebe3e00650b6dd909d8..41e7e221b95a5ebc7dff44466274b8cb61015528 100644 GIT binary patch literal 73175 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 AC;$Ke literal 14607 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 RAXge19gVx{rMDi1{6Bg4z)AoB From 0b75075a71fd12cd1b461f9e5f2f036892605dc5 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sat, 27 Feb 2021 02:28:00 +0800 Subject: [PATCH 017/762] Update product website --- docs/_config.yml | 4 ++-- docs/index.md | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 6bd245d8f4e..1c3d100bbdc 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,4 +1,4 @@ -title: "AB-3" +title: "Tutor Tracker" theme: minima header_pages: @@ -8,7 +8,7 @@ header_pages: markdown: kramdown -repository: "se-edu/addressbook-level3" +repository: "AY2021S2-CS2103-T14-3/tp" github_icon: "images/github-icon.png" plugins: diff --git a/docs/index.md b/docs/index.md index 7601dbaad0d..22985feb1a3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,19 +1,20 @@ --- layout: page -title: AddressBook Level-3 +title: Tutor Tracker --- -[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) -[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3) +[![CI Status](https://github.com/AY2021S2-CS2103-T14-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2021S2-CS2103-T14-3/tp/actions) +[![codecov](https://codecov.io/gh/AY2021S2-CS2103-T14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2021S2-CS2103-T14-3/tp) ![Ui](images/Ui.png) -**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). +**Tutor Tracker** is a desktop app designed to **help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. -* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). -* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. +* If you are interested in using **Tutor Tracker**, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). +* If you are interested about developing **Tutor Tracker**, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. **Acknowledgements** * Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5) +* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). From d294dc091d4647334e3a717e0661f99704bccf80 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sat, 27 Feb 2021 02:35:47 +0800 Subject: [PATCH 018/762] Update About Us with basic team details and photos --- docs/AboutUs.md | 42 ++++++++++++++++------------------- docs/images/glatituden.png | Bin 0 -> 93832 bytes docs/images/jared98lyj.png | Bin 0 -> 125512 bytes docs/images/kingsleykuan.png | Bin 0 -> 57825 bytes docs/images/winniehyx.png | Bin 0 -> 61756 bytes docs/images/yutingzou.png | Bin 0 -> 76238 bytes 6 files changed, 19 insertions(+), 23 deletions(-) create mode 100755 docs/images/glatituden.png create mode 100755 docs/images/jared98lyj.png create mode 100755 docs/images/kingsleykuan.png create mode 100755 docs/images/winniehyx.png create mode 100755 docs/images/yutingzou.png diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..29e50e107bf 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,55 +5,51 @@ title: About Us We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). -You can reach us at the email `seer[at]comp.nus.edu.sg` +You can reach us at the email `` ## Project team -### John Doe +### Kingsley Kuan Jun Hao - + -[[homepage](http://www.comp.nus.edu.sg/~damithch)] -[[github](https://github.com/johndoe)] +[[github](https://github.com/kingsleykuan)] [[portfolio](team/johndoe.md)] -* Role: Project Advisor +* Role: Developer -### Jane Doe +### Koh Vinleon - + -[[github](http://github.com/johndoe)] +[[github](http://github.com/glatituden)] [[portfolio](team/johndoe.md)] -* Role: Team Lead -* Responsibilities: UI +* Role: Developer -### Johnny Doe +### Lim Yong Jian Jared - + -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](http://github.com/jared98lyj)] +[[portfolio](team/johndoe.md)] * Role: Developer -* Responsibilities: Data -### Jean Doe +### Winnie Ho Yi Xuan - + -[[github](http://github.com/johndoe)] +[[github](http://github.com/winniehyx)] [[portfolio](team/johndoe.md)] * Role: Developer -* Responsibilities: Dev Ops + Threading -### James Doe +### Zou Yuting - + -[[github](http://github.com/johndoe)] +[[github](http://github.com/yutingzou)] [[portfolio](team/johndoe.md)] * Role: Developer -* Responsibilities: UI diff --git a/docs/images/glatituden.png b/docs/images/glatituden.png new file mode 100755 index 0000000000000000000000000000000000000000..1868fc1461d81a9c0d9536a01666c2a2ae967e61 GIT binary patch literal 93832 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%0D>DxsIx3ODPdw6vclLryZ-vcmuxiEPN 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%0At^ZWkLwG{lExjFF)(uZ)%N(ECad@cG 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 literal 0 HcmV?d00001 diff --git a/docs/images/jared98lyj.png b/docs/images/jared98lyj.png new file mode 100755 index 0000000000000000000000000000000000000000..eff0299a4181900c7b0fde91343b17a0f25fd6d8 GIT binary patch literal 125512 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

    2J)Pj`72X53hdv<)`m|c=P+K@4x@< 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

    9e090BW1-rS#SkQrKHrW=o# zEgj)iL**K?%^u!PA8~gnD>@Ys(I^@vMjgj-9D_(u_PoaJOfh%MpVF+3B1*<4S}fAR6(w#`0ZW{Hs{9s))cT|thPK)4Pb7jF#r9m)u_E5 znb{q|hhcd8=KU|fzB&%_C3eq0`|PW)zYcvLV~k$(0tvYAY)YOJjl+1pTrT5ynJpe` znE9j$Y5jt>?V)S34eSQ*Zp~a_+j!Hv@l1ucUzXhpHMx2J@6_9i zS5pH7TNS~M$oFd1)N-nksw_+ePC_UECGCH&0Mtz5Fpihua=B1H0QWJ*7-byCz&#Tf zpgPyx6bR86C?Ev|^2DpCf*O13s$?m`q#gF_oeGYHv+z2uo&zP54+W(H(c^^TtlsAI zG^{}g#q11HF>RnBbDAkQ_pYx+7ESqB*RWRCb6f2hzkQ?Fz4%J* z?w&n={z4Egahy$d5^zWkF8HB5j+c@OX$gJ>RYjO*W6q13$+pav#+N&JQ2Wbo`<`zH z8!RG2VWr_+PDVd{cD|;=ED~R-n3-OgG2kD!L)yB`_u<3+s%gs~em(BmI33(E3o(gB z6DL1lNDnA$^h9JFM;S+p0%~LgqA{w+_|3j;8t@XO%0DPTj5?0dA^+JgWd9GdZpVKy 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 IM6N<$f?8Y0Q2+n{ literal 0 HcmV?d00001 diff --git a/docs/images/kingsleykuan.png b/docs/images/kingsleykuan.png new file mode 100755 index 0000000000000000000000000000000000000000..cab878a24aab9becb935cc6cca2232efddf3511c GIT binary patch literal 57825 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 literal 0 HcmV?d00001 diff --git a/docs/images/winniehyx.png b/docs/images/winniehyx.png new file mode 100755 index 0000000000000000000000000000000000000000..06df8b52f9aa5bc62f8577b0a3eda787ac87d517 GIT binary patch literal 61756 zcmbrkWmFtb&^J1`1q+toZi~AI3GU9aNP;_o#XS%p5Zv9}-8HzodvFT`myo=h|MQ&p z-f#EA?b)+urewPM*Htxbf0zGm12_sY@-hG%92_7AyMVuIz!v}&R?tw<(9zK_v0h<6M}qobi?qkqrK&d&Q@MN&*s#aLV0*xkuJBVz{c|L+U_ zeg|+-5w;Nk1UPB{9v2P)7w&IAKnehGNdGMTe+nEt0wNMJ3hLig0QG+u_ntlfmyLrY zjspNV0KtD0HQ>|#<-o(|z%v7==;5d(0Kg0YjPT+Amj?te1C+2Q)PIy5RCLCie>eYA z0sv}smhVzug9r{#nUIqXkK0pj7!M~pTo!; z5FYT)RscX#jX30}b>_PIF?akt+R1vsbLI4*w%Wh>RxEBbFb8HJtd!(12mIFr0MOd? znTsABD95+M5bpduw9~_zBkZ{J0`=1VPZD1oA4v_67XSBvIC$mAuzwN_#my1hpo9ZZ zZpBWIiP`?K;NBxi!)d|&516PA-N-x8)&FfF-S*|#o8k{(y8lVm97FdCQ$M)FFgrg1s9!==^;s9WX?Q%!PADH(Q$bn}B zumD6P7!jbpR!zOu3%HjFfFBl?g5Zhfz%1<=__V(*ox20>CJ%;1THk6h`c1;tHHEj*x{8#{d#@lw`iRParlz22%VZo_RSqIVE_pqfFr<{#zEjd=oSTO0&v46 zr+i5ZNnDGO&$#LX`7+2f;z@ETXbd&pll_x8_%IciK{#4!IH)2RgDjRy9{{W*MZTX# zHPOV)m52+rmfO>n=m=qk81SmL_rClB|0;oLAgbZOby;3-x)N6aq>2ukmFYSI8DD+w zEVJa8H48N{sLK%vt_v^~--$nC-Uq;R{_|x@6!xo4#8yU14A#y{Z|p|qRazQZWoJ(k zM7vUgSEM2-tBmrr>gg29UIf7~9XOb~!;CAw_K!V1(9sEuKf5?FY&4%$1*u0c)YArv zFPB%mY4z~gaLSR3#Fltc^&5uCqci@~Vo3NssG2GIfdX2*HQVa2_tRz+y&#(QeQ+$T z)4{>?9%m_sI!c54w9#13B}`mh9QKDe{Ad}_OdP{wsFGbc+vwm)U>PS<)~YXHx`W(5 zs#Sl*Dd=;MAERyEdTVUV9PqzY!OQL%3+dLAUh;7*X)oCt)lzp}q?wa`mq5lgC5{YX zo@cc9c;z_}`?XFc>ejK~LIl=J(*J-5_Wfk~p=&1aOl?)&mg-la4cggG10L^H9^ysL z+6tay_1tmimA;gq8FpXotpmQ@N|M)> z`VD7enNI1qQ7D1IV)T2_(4$jW;$aN`hX~rh@9ek%ot$HDwmysTc$P`%=3zXuNQ~9Y z7rDX6kbKI?!-q4W(>HLnw?kT&ND^vl|7=9|S=&_)r^a5mc!FFj$sLyOe|r3UN<&Pe zAKMrt_aj8;ku;e-l0+Qk`7h9>0+hf9{Hu$eVn|Q?4!ubz>d@wNPd85VZ{S~SvL!6zFb zD**n9Vv$e_0AN1!_F6Xr=Icv0tjbR4i8)r^eOV3BvOq(ernV;4QfyH+C9E@^^j!N#yHP1kA~6iF z)z=E;Eb0rT>96i@EK|?IN)ooKz|2m6tPKE6|0-<304Q&NoxK9!9d@hg zdD9)Uw0)A$){NdTEu{UfAC*94aTcYc4#?6*m8L2W+Sl6#gjdAk64YQ2!-<3*kY$Ji zJkNgu7s438O6wJQkkzy%8Sya<{aEU1c-dF3P{x_O(^cUoyg|`@mT2Zfalqg8wln8n zgGsicYUH^g|1$%r#PqwiKJ4 zE>ahqMXD14c%!*f@3O!Em`iP?bo}W01njn*{an-A9q-%w)kY!yYv>G`={J?T?xLY; zV$!J38u~7DVxQi&GaoyI|EV$(gU_rw`9MSgK+J4jc*^-V=;7b5VxUg}>bz8y^SwkW z#>p+BlFgSMSaJU>$z13?Z1FVBHtG*g67OG-7POP^1P8^u7_utcE}BkUV`1U|Mu(@~ z|G5wU;XBw@7sG#!-{m6phH0+qoaxf@xcYAPzzsWu1P>C@z{s7E$*jf8LL;M8-D;y_ z`M8zN2_W5G6rTMT^i$bBWH^AKs@%pxEAxOxN4;K+;Eie0cvaQVl(W!u`L2HAcgs!< zI`5ezx@h4kk%5wbSw`7c9M&W7#Z%<80Q||5%AdxO*l7twN5lxoDz~&g!&)Pm2N`Iw z$wXIHL7An060SAN`=EvrIFGIpO8ys{h<+H?mjFiVkuPCpGdPwyynurz?)+J!uF;CZ zYuxo@j3-X4Q4jazl-;MmPNp~gaMM#c05MrC>83sWU)ZQUnoa}&hW>KLE|sc0CxUqa z$8_c%HVZsli;4>&>)`YGdf^ryFKp!C43!-5%fH zCICnP0@07N8aT6f*_k$0@IjX6fk%Z0oKXWlnD-RPMk#AxBuhl%1gDM>BtCw@`8_uY zj%nG8zjen|^`HA5`mq%O@8p|(F`zQ*$t+W}Q92?7m6bY~u377Q9NKiv4(@_IIfJtJ zyf%ew#8C{i0eD`@TScDaGuyD7`}Q3f^aD~?**;dc+sm+rnLHe}H)(todRgAs-fJ|bl`>!Eq-7>f^_}`uGIVr#ldG2#Cr#xbWLDe7>3v7w zD;*xB)59lSMTdWB0P*TCkRXmpevMtiSG`*6>{*!kUPnqJ$W9T7=y*LNJki8`p(6QQ zFI7!v0FgJpG_kKzg%l@T=xz%R=dO~;&gF2*#ME3eg zwutJ|Mwwn(Y+@`P7uHAkwV!zTS*09qG&a&a$w-;-ab*=lt}Oz97k}v+zrO(ZzaHr( zcg_I>&V*CX4C_ri>EB}7J#lwOoB1rdJgw;@H8V&WW&JD$n`Dx-5$^l2+Hv%fsful{ z0tjc%$*QY2Hn1Rocm4~!T>t=~$sgl)=c{qn+6mX!7giZlXwpghW3C57oeqVHos+YR zLxrV<*8O&Y$kHfj&X@q4#glMu_xisc!F`yTumS*=KLIeOX#RNN>V{6d>08oy6d6!J?!(mXMP9^&c!t!hD(bX`x*}~l3 z;E0#!LJ(1{Ql=sKeEbmgJO1c_$xJlA~!Ww`kyIX<&0YK_j zYdV}TncG5Q@n!vXw|-b6Nb}L8U&)!b)F6~5(XVnPg@e(fLk>Xh%r0+!piqIi0UXx5 z12%uyINiU*YWQB&;(d9jzy9@^(tUZ7q8)jxk>%SpY(I{gJT@x$6mRq?Lo?6S?$o#t{I3+FzQ5CQ8p0$F4mlk~k}g zkL^!}_==#Xvj*#D&t92)m7T0iU?lyB1D^$$uOzREp8uvO6oFI2hc6z^)J>LB0sy{t zZ>+41(>cv*-K0I|wdQGA`jz&)K80^=+vktP=$*RO9m{O`a^+fq)rornSXRVFQ)f$p zD(BnqjOcH&IaNmw_X7ZgXV#Gox4SPF-XLg4wxH>PkP)pCgO&2rw)#30Kt8&6FcWn=n+r{@CA+2xt6kEb5x|Ci@z^sTD`Q>62NaCG@gPn z+uN-*tm6ue#Mnp*r#q7OzuIxAm!}@!aKPMF)#9g+0vTxlY{bvNbWP50-D?i}HtzZt zwbJ~wF|do%Chxj5_WMRRQ3K&>*Z}P9 z=OJ_*W0?i@GFV-kdLbTZp)iQcK&;62R9$qq7;2 znA6Df_AzDC)eryxl;h_M!`YJ#KpF}8@qX-OAe%D>M#gY2S~z0gnhg~y-zh}cCIs&V z@`28*w`zvBa`i*VWit;kVN!%sHD2u6)58FDU>HT52Y=D^ra2Cbj`TCz(N^W9#HN3> zA*Yg2v=iNdnv9Y%$*0c$VSZu=E{^&G|&f03W&PQPK91^}vOXS%Da z^Buei$q&TjN$*7@BEnIr#)qd$r>=hd6Tm(di#TndRhMDR#iqKhE^+>2`Sl;2B~6#E zy}UBl*}G{~bWyf-2al#&r}33dt;FZioPPrH{9WDzW6Vsi0>je#Jd*RTyMzs3Wccyd zn=Qu-OUvChKfeTRumoI2b!e9!9?X73CZhkRhcH+6q}mEykXuLi)WOBJG%3=U10(-9 z7uIEKt*S51_m_MbF*qg*FN%uk2s{k3!TdhwqoQv7P?oZ%!PuUh`7C$^>gVV5V2 z3NH&OJNKs1p4)8C%`g6Vg&+;3&ef?zzY=lv@#9nI`6p74soL#DaI3)}P(AjGbjiK{ z!R`YLXx7;YM*gar_lXuW^@X`Y!#8gRbqe)6ROq~VKTm9pmBCa249nS<>oN}s#_>tx zkfr&@_J2e&)>G^tVXvD@-uyMuc6a;9`wAynBrAO^pP-eY`FO6ZK}MJqd?rKV(_sGS zBu&r2o);TYKh?kY;aMe>9oku|yb3`x=Dtug?~!_?L@vv7&HM33Cb_G_Jp(LSVDNjf zx42y^g3-YlYJY+BWLN~FjXJxyLn8KlX_cq+M{w7Y)%=9R5}y(;(S z=<>4rPQGT&#NuA4WDhK4l#jBKPn*i6;xm({uDZb9>EZxvEe5xkgK$%| zmKL>WXiNGs!7OMvgut z_&B$nm$wo>(;1@C$!0uqY;JWvyOo_bTy9&jP%jhgXRPrv+LezeChev38%IS&AZ^r} zj0z`Cp86^7^~6t3yp=P%goh0fN2Ei;1Hqa}x6LY%RZlO2Ob^+u<4*p9PJZqmE9zDT z*%~x#lbDu{8(EEF(2^ua^~t^8htn-a?JBNTVWcb}41$QT3CT4?b`ciY$?vc0XWPe6 z;UN@xrO@rUOa*i=kD&J zhZG~8Cz{G4I`uA$A8*QPwQBJfkLEVc?n(}tvB|}HzcU_iF>a@76N0m8XJwJRTZCzunM*N)D&R|o9V zH7%{G-W5H*=&~#({Uj&smYOg&TeP1Giy2%u>RTY6l$vm7-*r#Q!1R8jYgHzuD=$3i zTDDXi+L)OdY}EfmhVj5ko_3B-$T9gNk|!)GRAS-B!s+jY`0+8m2=t}fddHY#7F`Q# z)$FsErz*#+tD-+d)>U_y6nJm(HCxGO>xLh!7afeK4JHns$Td2vW*ZEWLQS~PTHW1o zNq6<08|@*}p|*jE_j#cjiS*4Dsob(gNsYt_wNKGGb(bA8x2|{$-?mwo&DFeYmjMru|g7`-pY>5wbCUvQ)UZ*eqEjlazl> z%+U?+L$alsv6TKx$cuDJ_uHm>6mCqxD-$5EjAN&<=2GJ~&gd|EM-XAwep|t!XI4DB zvX#zK;0w!z?rF2&6mnXdK!J2L*P!Z+F2eB9a%tNt^ z%cYv<28$W*vR>n_w_@$wed#ti%5zWIUJr3^R%4jahdPb1F*+fWrSe_{_mtH+xYzi6 z4X@8Lsvy%)Z{jze3s9$JcfYTHEHN9cyte#%AKAuVOOdU%)o5f*JaA`@?kO#cV`O6M zp7JkHhw$3KQ;$(YU0ggTg%Y^8z&2ca^R`fer%KXJk`}P&q*1eD{4N0viWi0T_s&KW zqRwLx>~iK#RtxKiWY+Xwhr9wMF#zj{?USy#NJN$3*{9yP3Ih}=_H?ztFPRAFF}h~j zHMc_PsY=rah10zwi=hI^Qe_vqzI;KiQ;vC{%bNW!pnq9ze^*~0J z^oyf*cyq{hQj|K~`NZ0ON=h{TWOpE^;dC~xJsCq)U!K(~bHy^zm?M%hid<}AlOZ+C zlMuj?j`voXm1T3qxcBJ4@5&zK7JdizpUS8_7iIIxO!=waeA00Un@q;WPg@y&6Z*0Q zs!a>rE5H_H&9uT5GM3Al7%}EnFVKQ|oS*!0(v=EsR``>lbquMAyIA(K$YgnXA@DOU zykqsz{}Zvrb=B5Xb-b_c7M#zo8F{nOrJFXq)#=5I&%D(x-)z|$FMre#`SPTc)NOyX zNS_6kj;xtE02%Chvf#HQ2u+~l&dheJO?&O1TUt()%BG&agcc3XH~w&KC1`oZ)lM5& z&G!kzVQtb9h&ar1JA_nL^}6bA=6dVOqlY#ivx-ED7S(hKJ`zF>tbjO`=O% z^Pw!^euW_W0F(s6SANU2Gk?#P)d+dVZ)K^~$o-ZqwQw*V1l&4MM|CBx5hs8SWF0`Y zBYrG%BGCzFrX^3!PuK=6^`gXFRgV0SVe{2uO|fppW;XGOLCdajFPBuAigcbPE^n2! z`rObTeNgkRr^2JmAfqI+&LlDJr}CeRHfD5Z=K{0m5haY088?~Q`p_Zw8E^N=s*ePA zVz#5qE)8JAo3;t!Tc)YDRIU+=4J$@dYZuRU0fMK=`nvDec1LA`U5Q(szCu?shg^87 zW%fpnrAdS7quLCnnV1_wiCmQ7T~hZB1?uNdg}1RY1!~S&{Ecz@g)zq{zSm`c;CYIcmI`tL$CiW|LyVqx4{elZ?q)hp%`o3;4l}4yFdu3@TOTjK;!bZ3G(v{C|q!T86s)0CG zsEQr^8a;Tac_TNQT>^kFVQ&-^pi-9aSYHnY#F7GmkdS zT2OlVHHw_0AIn<^q5XQKvM-RwX@ByI7jda;&ZUux9{tWbgTM${xd}zm^uiOyCJN-E zA|Rp1$~Kk}JTjc&t`&1k_nzGpkZapgXxR_DZI2ck*m!GYx^Jlgao|uaBM7^=iz3j~ zf3xiQ$Hd%jju&5^*J#UQNZ3}VNC;)>%94BTcqx5cZK=H&n?LL1=}*iMYuQPWL+J2s zq<7mB|JeSOmhIY4Pww68jVHg7{m8PjjHig-eq4@*&(PgKy7MMMXtM90mcuEVw$ibh zq0ya$%JX39b@|w>Q>!e8hIa0#d(^eYw`Pyf_#L%%C%kYJq<=8y&))(HhvCW}o+2?{^B;k10CF9zY zC%D_VB+JmHsABMjoPwS^5ksj@U-G3*@YmvTIky|Re=5Cwud9O@q#|m|Kx7WmWHSjl z!rL=(?usl-wbZRveaABJB-V4S?67|Bagih9_v$MB_PHa2qi)Mcz&Xk7nG(i2C9Wbl zLmAo0a!6l9tQ?noaTFI3WrsMqM>*V({xK%C^sf8zUi2>@j{T1HX5+BZRN%Hpz^4oO zUXdHstE=Rdr~7K_g~8qp;Q7axc=3z_uX<$~CF*u#w+U|+PRu|0^|39zZu1J@dEI#$ zmC|+w{PKK+qDM3ez2qQ_UU=BZ`T~}{5!aJwCXp{a2+>%b9(r4!2(pvMQxByr+FsIt zER{}y(eoN@=%c}EydYxp+$~EEslffAZ6{%vn5>`-U0m9eQTYdi-c2$u=0MfNLDsMU zm!}u7)n@^xlO_8xr}Ecg{xNzcDAgxm;)1x^of}cUQkIY13=^+)G$x*3mIT+J>KP-~ zoolP3Me0@W7y!!STW=a&jf2#o=rx6sii3;nq3<{{?Jq{DX%GkE*uJs}g@Q@9Z1#y5 zs_Meig|OLr9<$-u0r`S#;i2(T^{rzsq@>2kkyj;)t}KHiyO)+6Z@Z!^Yt3_74zp_W zB?Ko@9`#a@wu+CmWlDJ_oo7JOoJf}saZK(vPstvcZ1P-fBOskZ3+bVWYer+)g>l}j z^oU9Qf%A;{sI&yS!3;lLGNh-huk(gB2D=ek%GXI)!C?~7{9}b)ej#b=8k-Jp&t0do zm5$X*m@;K2u2;N#dD~f&)|C$RJN*B@lHI=}2e8F!fRPYAI3O+nw&uvF2n^={NJyXM z^j>{q1g2{>h5Rq3~mCz%=j`9r?+*hiJnG z2SXe&0Dmc;l+xC)(?QHgIyeU>0RI-c&EKu+)gC{w|Kq5?Ef5}HxBbq0dULaR2H}im z2<2}QJcgZLxj&qkJAUG8g5&HvaJJ!%>j@w@o+7yuMXi%=P@w>2Eb>#L!Y?Tu9((tu zV%Rfe?~U6y0+i?s{`D>3l#m9zv1`FhZXiI5ec`TS^CfG0{EN*D zJ9g~&rg#8C^XkIeSOS~g?CfpUfB-$wZf*ID1m>9Q-(MXm14_iITe;sBBCFTGqX{cP z1#HjnCOPAadIn#wm0$f13DH^iL2bkgk zC`-5H(dpU6)7qTdQ`L>Bo_>1kpOI5}@17d_LW4q!&$N>|vgvL*MfHZT6R}zXkqd-g zqMD&19`2{=c7slndLYqrb@YmIYO50%^Qjovu+~z!XJ zoBeB_eDA^cfbTnFdzQFCd!!ISpDF}5Gs*SPnLEeI5D7Xp)8wI^8)zy{TaVYDqN=@F z2;HKYg6Y(+!FFdese*BmXEN7@{+o-Ubjzvh&W<7W%pb(36ETtX2wNAM=ROyX4jIC~ zGA=9yvK-?BPLnk9-EsJDy)U%SE)I5fH+{RdWP|!!heoau=EgXg`76xGx{B>rs&(tD z=!)~^#&b~YehmHsz}4k>RbRAzdDH=p z-6?bMxfWeT0}yn}11AZ)kf+^rk01@UnkS?1xKde)^eC91EDwTR*f#2&2Uu|>|RSwLC(slH%&CLy^ zS63EEZ|66#VVOt<2Y^F>M?gYCL_tA7goj4}-~iasI$WgJR5*B?66*NW93P!1X}H9Z z323<`H9phv@T!?O$4ceaYJLdpeGd(Yo7uVi-$QtC@8GQd0xc+if$(HqaFV(Iv(d?^ z4?G@xJrg~qVKF}>#OnyZf~q`H#&Bt7iA{~MM59fVzs z)0BEA<^D9gRK`y&jN@=Wib~dc5bkzF zkZs&j4+f?gzLIYS8(d9XYh?HyA$#{`TK;muXU|B=Uxz>r6XoCU zoBpg@$2}}vy{q;kezwIu%u+gZH)hJ=u1qlK_K%-(5?$DUQlC5Xy7g7}h_X7%P?z=} zXF+4Udd@`<#!z+&mu6XErCH@$1I%gHzd+V&6oT+wT#bf^)fJtk5nU>1cg)U1#eDP+ zMIEvTX<=DU&YkslnRp*vBTX@jB0m3OE=y%LV|RMQ08wseruj*thcRuEey@pe_p}&3 z6%J0|ZtRP`4ix}ueN2Qb1aqIt(!!W&*}WUZHac*ss`9B&mk&zwNBzWKV}9@bRUN{l zlAl&oVpoYM{8-DUH_0(-A%IX;TH^b@@aHA_4@`WnD~*A4t(_|%#(@w!!tCCWIjb^` z!{+lJ3m3gE=25-LwlbJOw9u^uz>6h(ix!XPlQP`6rnJe|M^Xl&ja5O?(lV*l*))fD zDVc-}VX}(2?Ty;n8rlkG?ueJD`n)Bb#(R=hV0o>56-TQoTROpO{>PB_6NL=H!-h8pHU}b#OtJ3F(;gU%f zPQ67HWb)HA{Z(iv{J**hoqo3!S$rQKFnP!?Gh?-F&n3xH3{dg?4WW7qDP|oDv}I}L zm*Em*Ddb^Xu0t5%%|X0l-MGk$%j}EeNVwB0r#XkOKyR)?L*Dt|(OHRKwKO5Y;ekrA zAN|QzUL@&V_@Qu;@Pb9FF@{6d^Mj|(drGDnLsS=K^CpL?I&-i?9T;^^uP)zp!2C*s zZwEC*>p{|ott)H>r|$VfMe}y$8N5Wxj~Y^gY$(%$G{|7)cXi-kE$iGXyNB@7bm7X$ zdx-#sc0*h-RBNVM@~<+Q;Js#FJX0{?dum97UPXm=jD#K)@o<63Msdw0B;mxB2NC~a zSm*9@-Gqzy9Zl>^hiDs4jh(LFG^uy5G`&Tnf1-)DWEP6hNnMwGAvF908?$WE@peGk zSdk>Sr}bM^0#F{F@+6Q;DWKyNbGU5C~+~G-hAd zG)7I3*zlgAQLs#IzUE#bPT0eRmp<#$X@yvAyv(fN7Xg1-`qc_34&s~Yyx7NeRo0+9 z5lshP6*to}&So{uEE~okyHw&=aM)%bZ^B=rbx?I1Z@hd>sk}ImcG()y==|H~R(A)r zVbW>;I1^XVeB?uuUuD_F1nja53-_IB>W-S$U@z(DQ~`GiudB(n96 z4r}OCV8}9!>A*t#YBpJ~rtE;+8d*@!lc2uTy;(_SYV#lI2yIj*v!%Gr1MhveX2$gN z2Tb%hGH%AyUf%H0HIy+5t2}~O8&=Ih{9pOoGxNlrtGA&lw82%~S9ra?po$5`;6e+& zW_IK(mdOQ8SqmO|zF{Q$pq1uG|5w3gnrp7K?wT@1QLFjeFQny8AFTJ%9DfJ4ckXTV*5yZl%jlQkX1Moc+8wV{Y_hnYnDT|bJX}Qv7m!dmqL*@N@f)4wCkvBQ zUtt$&S4W_xc|5Sre;G6!&CJBZ(@yNtdvMcPmW)l-d|wnMnyMM*)Oxpi&$CVtpzCPr zV7e)Od_60`8|AcDdy=oNx9f`%ILQo(%XzDbr?%{yBLe-gg1=oDsYsmRA%Lm!(=N+~ z2!6&fYp{%;Cu%7wT=vjAbN+!ZD48Wt`lgI}H_zLCTXXnhYMcuQ zy~M6Y2I~BHQJAP=WoLi5!>Qif-Yb*F7Enhb@XU9I((E6{c;@WQR^%9$By8OK#HlaO zk)@-|Pa&{t5m$SXtg0uwf0<7lEbq-YrzY-AsH1ates%cqy&+C9dT!~DO=J=+>oT}K zZ6vuY`WBx9CaqO3%h$#6-rQTZ1`ldndyFpXjr{Em9v{3>)<{%C)R(n#wK%{^yqA6v zOWqYxBGd19bZ1BBHiA1ugmi*Ym83pMt)Y)@&OFl8JY%WOGp*%n{#qU5iu=83Eze*qp^L?>|KOJEio zfs+4a5utlfz&xQg@`lW514Rnx*wF3DzURe9Kzdyy!Bjjo&o&k$z&JAU7B?ZEdc1zc zaVT#qt3*Z16_JW{+N-UtZKCea42aA7DqoNcub64h^WY`lKXq;@zRs8egQ};#qsKNg{H8Ag z1!Ph}#ww1l2r?}fh|1&YDhd&4skk&!ZYW%^Yh8T{jfN9x&hYl>pYpDBNW@ zsp}|P#;te67JaK1L^mq02fMkh4E!NzaeV&)bruRqXLv6eS;zBbDA(kx<|pkB#ZH%g zQ41+HUwksORL6V#z=N=ePkVg3Ggr?YpvD2RuBlu!8}^B(f+5&i zuPz#z>xuEEWFtH|zUefzODZZB=OxhI-z#ZG&}nBZp6p zKyA7>(uY{kofo%z;$yudwe`MZQf6;#oQ|M|WtCqW|9A8ll3*O2Wq4b=&>9>PIcXeh zI$Fx&UIz^7k9%p77$Lp2Ygl6}Upe(CMa%8FzVksoN^3=;YGQ~)V;n6g7JSYfz)l?4 z=bU>tqj2>|e(1#T-6r2WfGOyMjnyi_!lEq|;E{NZ6ha)j@i-S=%$LCuDV4*walrtT_f?###!i?m44mYeX`xzTE2@>4)MROHtfvWy92F?=Q*4qs%~c!v zTi};{9sTnqYE(-BLuEM0bRi|-ue4}Ny@$9^oOyLC)#$c z-%R$Vki$j#OV*OL;B9>)My|{c3QA*Fd6m_O9aKy*HJJ|5M(D0pB=?H>^v(=sg&50= zq7~N}ZFgsSSFe#I1Y)~}m$7EU87#`4nCLK(v~>R%F@v+I+Qah;c%?T^!CC{YiQ}DT z>CWPYX*%B$JH65ErQ|Q@Z>^_KN)KCVcg^VACTb|dol{MyC&^KX^aRHAx9HH?;U0|( zi_h(Dv`n{*R)ON@?>jx&$dP%QZc0Sr^k1~+vha#9yUMIrXPhOID$+x~Aq}X{IbwTQ zHDgB6eC$Kj{Nx&q~W;;)9IkU~!`VxE8k}wt7RYqv>O?^O1z41;If5u@`(k$v@i@J`V zIsOip1wMII$Pg0cjEUWafd@_a_o;5{ZaT&LS1{9cc+0|i)4zK$jHD}iz-e+I^UrXA zfgsJa>^x{@KNEkrh1gT&3R;X_U@3CGihLh8sy5~b_u63t3v}EBxP+UpSqtbuF4A3WCy3N+CUNtk5gS54au0ws=%wc8t1mR`aNs~ zP7Hx@uSVweZ{u80IhcYmqg06rzBZirun^MF$*Fzg%pcqLOO(BENV}T0 zpXv=T(s?S;hc~fmL;Y4<`$lI+2w7N>ZBWRnooXA8DbqF*$LxH&>_}RsJJMH`!?mTl zl&+bCk;CW9TizSxNn&7jm8Du}_0;X<(#^=agAYg09uCNeS_9Fby*`8=Anf?9NTsp! zYs{{fAF-H-wz@QzIHX8}PuSd&uFVqy+a%s`!1?Tu^d27509UoE9RI-~I_SoR(tPS5 z_40T1Y;uFp`fq0APMa@`a|DS^ICU&(8|LV}V1V!^`zYa0Hjx=zxT7#jx=(4^X`yvE z(gfzVAghY*_b$>Fkbz7K6!W_^^H>t(?|6%Jj#scZd-){lw@RLkKgzQwtoTxWepFod zVYb+mc`BJV4YVO)si^p-{Z$tv#6{3Gf z)}gYk*LH3MD~zgVj65P~Td|i8USu)gtE?n|J z)r-gnCag%7;rYlfgHk!Rcoe1R{6p=_R=61wYDbbJQf1BMvKu0fii+-?U4+$Oge~<( z=Ikg9E~6bCVdoK>Q1y062=+Vss! z--9lQbCrmcj#_g9QN3way83EI2Aq`9f&UdenaUPL@ML=k>F#>~%{ zeE8}la1z5F17wBDmx+38r=F$kAMhinn(tb{{9jdqJmpqMMtq6lzp+lpjn#Z(Hl$^J zWKnpDgFw-ZJN!#85qQAZ(s*(nx9XVi4r#e&ILkP9g0LwEa<1TJ^Hlh4C%VpR#M@2;cl7Fk=_B%lYJ@Op})^8yGsA zDfuKJ2hNf@-}!MN7H*Td@@ljw^{1(FjD?ePDQ0>ZS_x%HZ__hdRaMygV&OElHiscQ zYh_gWOIg!!TB-qFoD7zrilAxdwzjUZXF7a0K}Byvc}tPg>i4vt4vIgmrx!bkEn6tQnF2%5kL;n?e7ZX0I#G{LJz0cyD7EJ>3nG_5I{(^x$|yI_n}Z7;!ex zhLm8@+_zbG!2(qI+HKf}^XljE9bdaGsgGs!-yZ z>M|@<;60f!4{hiOhUj2$Vfi7|O*>(rdf4^}CWeX}G$u?4uBP|+B+rfnQI0M3nCnE^ zrau*>3asrVMH-bK_xVomk4pVVYiz#YF*|3xzxqu9i1Y(itxMm9Oh^g{+ zDkbv%vE}kka&B1_;3?1X4Ghzj9+?6UNptc^La6xTwmgd` zg^E?3n-_nivP-73&e0Lcm>p}?e=g-y=?6r$cq2UcnBoJQhez`-yzI7v7S1P7K;>t2 zh8DWg_zKPgSyDhZ1(v0-6N0=R?fX-EoS!P2Uv16AWURRwKF^rUU6h;g?-YlI_?Lv_ zBH~D32HDRrc8cx@j^xUdTdXMm^hj8#KFVhOyr8H~GqQjp0F`vVRmvbICLohecK|g) zq*w7y#1Ru&qT)4s!8}Rn!I+B9%aso&IrmxNd@EoPmPI8mEb;R4Dq(awi}!gMwYpc` zA#5*fH8QIJdTBlB_dNf;E4_sD67thEX;8h~y{nTL`I}S0UIhDq95qIK^tQI~s*Jt+ z{8IJ$GB~}mGP_-A9_RiaZ1tn(gvT2=MQnSKZyRSKd$}YRx~?GG=&yXLW@P0T+z6Mi zRdTjnRdU^T)YUS%jZWSm$b9Cp`l^C19(0x;i&C*;Y|WVH>guAyeBm{-zq1uk*K7LB z4PPC)ZnRoPI%&)86K1S%%CGf<($zgIB(`fFgq04dN)@@V{gFdZopr!@6#kzv< z*36bxIFAT2Ep&C?mzS3pvnbw2&-LLNP7pONVvWb}Fz4_iRxqv9Km86fmOpX74Wt^8 z&##>8%ku+EqP$0iE#U3LY&Qr~bw=XlwnqPNRppC*=4%d5`tRv)B)+kYAvs!%${5F` z@gum5M8l^&Q(o4?9HVRLsLaS16n44YUSOpsC0A^}Aa{>_qsJZfByq*v!NpHOr?<;T zL*Fsq6Gpbv?>szrkm3MO!nJ~kqg&U;bb*k@#wJA1x2U9i$x=~QQNqjnjZt>3t<5!| zLSs;0%YhFKwtx)n;Eht@r+v_<;p2NO!@Ub(5p4=C`{##DrjN)4xW&Cbaagy(TMOveQ>Iw zAz896+GJY{d>XH~$D1!n5r4YySd7*#+bXT!da;nD9yaqTtRY8*Z6S0L5{oVHb<^CG zd5gahtPq1Eq~Q7DKDTc0!$$$lcTw?r2C14X7qfsGHnBTs9+s=m*>}xgJwhFCKJ{xp z(qfyPw+ZBBn%j6Aj>me1=UMrz%G*KsqrRfgG;)UNG;>Z3eRPd2!?7MeCV78Pgx*K_ zR$GO=SvsJ8Gg_Pc^E(-V3W1j@sii&iCt1Oy4%uO(_LmgtbEhA(@^KOeDW~TsA0)t{ zt?A};tEVhIPBKPeAx|49tlKBe+fbSET*Kn0WE=aIs@c9Gvy+mZt`F_D4i0Knj#{IG zQ0McQQ%i=0fycn}?N2g|8$=GGyoRkWu!Vizwea(yq7vOqoGQx~@n9(Su3>9-rdyGp zd3URHe-Yntq&Ucq`I*)Owp1Ee5;FqIJlw%zmTl|-bWpiQ2Plxq<}BYcH?@%ac=7>ErbswVK&tmV5ZhNEwg_g zv8`(xOT0v|y4hTPQr})S?v|me&-fzFR#ziyW;1GA8~K5SirG4 z888g}wbzb@QP+yDAx1~zTuk7yp-JuCf`kd`etni(!huABL*kGT-qvq{8MVGHBF-kR z6}#ucw)3I%D<@Ad|3>$-7A~Cn+d~%-Pru_o!Gsr1@`}hG$ZMNd6Dzw4HMu=09ksdn zodr8Z6s*6InUhrU8UHTINeLO^AZWc(Ej0byqPeramX}1tv79#>XzQ?6VigfFUQodK z>nK0CL*eXvPI_g~>7%`tOKYV?vG|=A{gFf3oWJ(UdNwXGn2U69c$Tz{2HXEuGB!|D zzigLe$=ag0m5X1Xq|^a9t%S*gCF!UE(lFDI7d6zvL!il-q)T!<)?f60h`P$4wz{qh zr4)*m;ts_jKylaN4iSPCcXumZytsRD2!R5{r4)B4?pmNgA-GH5JTu?ScP4-GBX=_A z-m~xCYpuODX;#>{tb?BGR}e3T^qlr7vAr_+#fQiQeMgOdDDshk&u4o-5=Zz3$*w>I zEyKA6(y(~j{7?F}2JJ}760O!I8;G08$|*?XAe)~mWx!_3>2a$hPNc}*Yhj+_#9owD z|G_E_EWtMMq3397c?j5|G*w+w91XX5J%+CO+H@wgJRvVFb;`;Xl$4V@JSba_%Hx@u zYyVVTTSjG`pvZ#$JqiIU55dvf1b!8kM}R`v`f0a1qm9ei8K;>93DrrX(g`?rWQpBFoEZBf+MSV_#@RZ6dkAE8j7c3_)+#VW z?CI%}JLk#Zb61RQ)UU4ONw1ZHQ}#G3zzJv-RENi1B+f1{LpzKe;>Pfz!&sYoz6Y0j zU}W-Kh`hlH}bYE`)8hx;{I<5?*GS~7;8aEU+a zzxM>aY|U~k`r4A%oR%^k1s46mFYI%h^&p<{SgO;C@E@cDeOZT)#9JyR{TwXqsj^be z74ey!S&>z--4Bt+&=Ztfs4CLpi1CVEuEAPRAQ5(%lg$2z%OprTz&-ADXFffGqtpfo z$yiDn_GMp zoilEn{0OssklB8!3Tt9XKnN2EB&ti3FCYe&-l<(Pziq@yR{MVF%O>Csf{$GjiJR47 zQ~09pVQRO?9Y#D;rbY4(gOsSX%ho#ko9A?6m4AO6dF^hKedS*W+XT{NYrBofT14M} z{#!)oA$>H2<@sJb!+aloR%@>BZ$tI2TXJ@haon?wye=8)H$iEL!3kvBmPRO{%|WIk z{pj6Vq?JAEiU+@3(bb@-T)7CLeVQJ~$P1rJ#AHrH)9?Q4REMqli7-on&#&O-FA$be zvD9oy`~BMVJWY-Y8g`-dNA`A=EQwEEZGFU4H|l<0;LS2kY8rNPF6w?RZMR-720b}+ zQy8Cl&ye-871rSvagjKQg<}0*{>JD=waZRAR z=b)75o-SB@PL!~ZfdFfWMtQue=BG9;hjxXm&gXS|-@WEopXRE7z2;8B68RgwBo{*< zS(xlj%t#LTc70Kq}SQ28($_7NM;rOwWJATr_0TlvU0<<85w z^MAczEzR2e7oZdb^h3*=a-sAOf6jSSpg`K}K4wa0k(aZCp`QYXt7|{+`UCdU0=*6T z^ABpU_S5o*hMF^E55B0Iq3XSXXO8BaF9JvWXQwfj+{#mj{ywG#z3sJ&E)N*#&9^X% zdZTp~T?^eQ{TdI;+i=3TPYwB&1b=tfPB%7HsIeWW!iJ4cO~^P#NR@fQKUmiJ@nB>q z+~RtT1Q6W~EgDS_u+|@$eyNr|^{S(K>M)GZT$X>HIoz>n4wrxpq3M>bHL#kdE0XqX z%uM{U7-Ad+VgRUVNr^gtL10rS8Xi_Ma0OnvvA;u^fW>uIN1T?l=tWvSM7W-hQ2DlNMrWAzS@RpEU1c63)btEike0qzw?xSZ z5AXB@y|D~k(0iTNa}Q8P(42f5c{v@T?q@zjlf6R~B7<+Xf`k(OTk$>7a!1@c$`&`t zHF>bg+du=n>}h@)SketD?>;TTK+mDK)x>jDgyZ| zpkd|{Ax&7vFE>1O$zRt_HQ#De|BFy3^+`AE`$e!u>rsWH8gx?uKr-{2LZLVpNv01+ zEAAYGsq#wCO;C5d0N)%KBuR>zgd;6ELr*;PhG1c*X6n{UKq!8tEDz+Y9?)anATwNw z*5E+tRD-P0^pZT2{J1py{L>IMF>aNlw#}nkb7fhNNOl9hA@4cZ=R5Ye8aim5ttX@= zYNRET!BP~GWyxfIp?60)W1KRv%^MMy<&a675=x0m&vTGWcR5%l@dA0}5WTdy|JIb7 z`;;H@!?O79&~=TqXj8F=`+Si}IYRJDPrr(HllBi-Vp!?3!pQ0fUeKmvWU`Bk#LnylC7{~!o=)q({in7Ve&dHs`H>vLsA${7 zclbSvQgigA{LXQGV_HfLv0@KgxpupNa_NjeA^mGA|E_N>)Kls9^?vpV`a~^oybrdp z^SPjJSCs}KCB*)IelW0#+h7!-s$`$isFrff`{*~-jsf{AIp^Tdvl?XUsIQ;`!JG`H=h$yD z{IxCugBVP+f9@Clq7+2vncH?uw71b6M*G(_a|HF|vt^_DBQgtR^hl1kj`$BVJ=HxE z1Ae(7Hv(A|&U@w`Oz0uLH5@ffdw}Kai1|HPc)}%Z-FGTzDtlSbyz&xC17#Q#y?5EH zhl0Q|Iu8OPuRlcA5?_nVV;STTB@C^2YRRb~qkq}zhej>zKTRo>~_HNTJ@+S(_>UbL)?D%jtevivZe0?L-eaS-nG#2FTZia*Go6~ zj@%(Gr0B)|LH4(0lT>Kc?d*FnS#uKYFP5=CxMRl)Lj7Yb?`wC(Md*}7+1bmKX?FG< zU^c7Mn%pV&vFbg&e|haZvGFTx|G3EFNpCErE*km4Dr48(!ck|&bwTync@wT!wj2EM zzT%)T1~id8&6xR&9CU{c*>`-W2Zv#JI=_Fin&H1v_OBC4PA*c;HUF%a3ux!(Z~BB7 z^A(_2%2$fAd>!h`<=usV>pxJdn9=lxjzk#>8tLB`*4lilKYS2*fIvRj)~8*!C5kGe zQTBV;Exz)i7EeC~8P)GU%S#G1SOh(@!CgHgiKZ$3Cd$yB7u7_M-Nb`Wc@prfdjd7` zmUr8F*_*BUV$qf9k}@FISV>EhMOjbNqLmJP%oeU007&h4;a<__h?BfxMSR{8-=y8a zf{6J&K{eEGvsPF(Xac5f78?=TE-*8DOn?wNu*Z@--;okD?OZZ68SGMTZ%v`FS`1t5 zn|EeT;Y%A5wW(3$pLQYyYGDmE+lO4gig{kT{<&n?YaWx=%N~)hm#>NoPjD`w%W3V} z6;{;E8b=KOL*Y1~Y!6JvUgAku*S|9)WJZvTqe$8`<$tj9R&l_4BNFezkW4bZzFD6y zqMkx#+)YazF@X-GI@>erWnZ73H{w~iW=UM`Moar)r;zam^yuye=0hcL&ojyY15*FG zT~$gwq}To9wXHLOB_~x<-x9YA$fe#V-nauxuvWOs7Dy_`jEvMu)iKeK^CNceQ^C*9u!Qv|{`Olv-fWT3uEe3o~ zbxe3Uq0nzsU}l-s?(fby?*pcxGcUHUfQHjgOv?00OELDV`efbrUl-YqZoF4vR_Us5 zSF3m6j{Y{4^e?`LBQx@ti`j|-wZe&%pwbzKRvaljgG7oii>A3l^VjYb4QV%J0| zvK1mDZTy&ZNxiLX+*LfRP?$qi8_qu-R{pF-?4W_g-TKe;e(u+l&;Mrk%Y~Y~M z9~(mGM`c<}1sMnU%(#v4t(-fSkY2a8I^rh_Sdr%?WkoJFdXi@-H=Z==H^w`mNX^eI z?P7>P64*j+JOfhrAl|pUX$Q0RpD?&l{QeRzZ%JR)gID^*mnMew0ER7p-byk%br`S{ z0CJ7~2C$mkuelzhWZ>;oN6)2Xj!cf*9p|43j7k4GHF2AFngXjSU+etd|MT!m;)3iv zHKTg6ighNHj9onS?^U1o#5fwh?xs_nTJiBYCt@c+btY|GbFpTHf^|gM5RlQs?0J2!L6jm8$~V;rS0?^~ZGD@HRnbc7c7;w8)y=*@b)tOi(XUw;eG#WPDyA6 z+2&gW^KMC*ab$DKgG4#}X(%FWB#}v1Txwe3Qf`-}>E6uW|2x0|>u3XUL?LYRlj#%!nSl2@o|@BMexv482Idv{l60izR7_00lUxO@^imE3@D1 z4g9szmK|cxTK4bmIc)mY(B+PTc(+ki5&5JG6Lq{O5Z}Ofo{@o7jNej3D2{XFioq$^ zm1NdIs@)xFCGY~7@<()VG7DLeHgJ&gWlB&uQ+Xz4mZbppmX)>Gvgv4 zlGY2uh;+5+u^QR!;OG?TyMw1nSYav7EfsYNawJ~^c{|o-ZvG*sro~+M9|E zG;7#4)Hk7t(S8NtI9#4*H0=Ng+9nFH%i(G8!xG1QeG%Kb#&1~d*5}f(u-IidB>3|Hl$Py%KS-6Tr&p_@4l4^2nf@lcp zi0-OAMuv|h5LB8xt#9#>Iwas^zd=8$qtJ)&i7N~~Yx@tO@zg3Pw#UYlSovm^Ua3(C z5M~y8!L6jB^C{~P!OjL~7@rnUd3prWBx>iI3HV()=bn3ko%;|v7p2Bf7Q@;f@_MQX zM@VMfvj*ZnBM|4*Jg0CY>9gtGo81qRs+$!R)_-MEnK>}`^z{(;Nu@GzUW1%$COI!r ztFHRCge`G)c4FAJ}27N+uH+XfUlqRn6s6pG|;DDDLqGvkRb1dnFI9 zf;~V%_;X@Er2~Z7oBtOuKKg`cQPtqKg!a7fL6Gd`A_yJZ+s9+t-Ho$R%;+w+u%t9P zRC)dNW94lX1EQO(zN`pVzJt}86@*BnPtxn zRTWAOLo9!460&U4(=)JLvb3}ykikutrt7z~^Z+INL%~e^a$0-1(#l8Vu2EMu_e=98 zDIy=%j*s_6o$!*{Ys+Ka$=_9`36sCl!2{aubXS~-g%xl`dE8%;rsRF;F3+;H8G9m2 ze)kcUJ2Cjm$k7rawCKPa>swLHMa(J=1?lXf7-U7?c&&|X`bn@ z)r6t9UdX!>3ww=CGcCd_#B0yn2pY|o^+h)lbJ!G4U5wpBt!b|*@dzzZ_=hs~qL1E! z_dDya@Mxi<#1>!n@1F!|r*s;`a8j;7Cr=sgcVQ(WF0Giq&1#G7?23v5D$5SlQxyJS zxjt^0{*+hN=Al9!q+$N@({MGR+wjL>O|ezAAkVIzZyk$a4BPzJq)gK?Z+1wSd^XF% zh9U3!BjiN(VGP3`H2=WL$_RygIUYJPY>LZic3wbenLznhn-Sl712UVvUWg{v+R2X2 zN)`3-C^P1bJFk7dAj}4ct-$!1b2n3{899&d#oIm{V9dwBb0P*SBE&vl11ffA!L{^43Sai?G1%th zJra8yK-|l4iQSVu!$V(cAhlVg7E~wR0oT z?j)F^&Wsp`f_FUY%;9id1w^6y)}b!azlE&ovZRzoB_>sk>khCU>mR9OGr#A32byVu>Td!_T$5hj zt}sM6$wNSjlyVFj6;gPP-=S$*BW&o)4wYp38qKde1QX%#>iVIh`u{Kp;K8705rl7h+&n49eb<(# zl`PjEn@W43Z?(57+1i?vC3SQjij)?UfP67NuwKjhI_+mT)l<#<_H4I)|2fYP~T58wq2O>Y84yN!MC$8!CsAAc)*D9rYo(RpfBFWTmSnM7> zVqImm?}}Z^qEE^B5BA%W`MMt=X3I``Q?PtC=0FA78};7Gt-5S^%HRGdv0IpUhp(4K zREgycPl5o;Z?ht&6@jFl)IZ4a1NcTQLB1xFV81@PPsV68YInAEg)8fjCj*X*WJ{txi>BhmXz&RPx_EMX!m#nL% z>*{N6pAmClSRD2A&mB}1Zf8vFcIP=hn+U3r0 zv0~6|);T@dlZm3#r6BnQ4=nfA9tP_@E${bPdGy^(J zM9o)l!>5`xGGdWLB_XQ`QSK^tk}MckrR_Thy7w&K*=upx>jP$;STvNBfvh8=E5q^; zq)(T_x1Itu!=6{#^*;HpXN_YLI%bIzMX*<8t#B&z$bDGnlRfsoOpq?t!`kC*UsOIF&9t*(0Gu8d#+J4-B zDC{M5{T7f7v!5Pr{r*=|-_v8syxlO<>4cyTfJ^P~-r-7!LQ}_4Rp7gx<7JB=X)wY1 zHu>W`>*JO4`4qCJ0%|Bx6XZ)jWob`_qB+a)@h?#_PLEJNmYVDsPDmDrKh2YQx4$qz z%fV5kEy%76AqH8~X%{y^3i}EAtvlR<&IE5z<((9 z82J9mqvp=)A+44P^07}>Y+dqE-gdTB5c;*Ma(~VDb-@PWI=%p%$oM8y*j7Eo0g}27uqglT3$fyFB4 zxXx(_i)8Fh{U>OHKp=AdFX@o*dc=x@i=uhziGv@ql{)LYQ%*N;Xy<*#?vr*=U(Ts= z&>YtCq0`Zr;9+xvK!Fd6_eXT~h><};f_9(y%5&BBp*2E9utZOniUAZAWXHSk0gT8Bqd{;p(FVPus4TD}Y0l!{De0*mA4xfy{jPR)cB*|t@39fR zfY~@6UY8K}CluD8-H+yT<_7yRy;T?%3$I;VLT5~AkA})Q1jwZbe_~Rhc#pI_?Gq?1qgQd?3XX?pQ!UyL zN`tZ8wZ|kNIDvORR6@u4Fs~qhZ`qHtIP1FnLEt%acQa1sqHi}>Q?lz2ERAb=LX1~0 zXY58oebH4;N9-~##7RhP*!C)eBwq9e92=(S@g4h=C;mg3?u$pl5sy6s{&l@b(T9)^ z5W|4o=6s7=Lcg}?iFd=aW;?0*UY+}R@QeOZFO_B0mPvv-zVrJsdpdI(ir5b0(Yld@nyh~!_Ia4W~;kV&m{1i zM<6%d$t|>f^w2!m4Vtl3QTUl!lUU84i@c*TclUDx?$w9ea7FS;IPdUj9Qe~-eO*#Q z#1^bGWPrj7uH0&;4`F?^hc*tvS+rn&1QadcWDLP1ulSGlNr=?T9PeD9=CSswerx!i zF$E`J&R3n=kLeU+bNHzRA+k7g$*RLOZ6QBrRdo=!%)`mTukBh>O!BwiIsRZd0|Q1| z%AJ$@$=LP_qdc{R>P-_;!q#gu&jnS=FWKX-ghMhCMbbQ;>Z{=DYJF+IDmspwzBp-;q+=`kOSu_=(O{slPswYYBXNpsY}n_~^2D&t5*&`s29C z?bRsBLz}gG{Wp=*mbg1~Rk92mp94=hwNx;UH%e`@(f9s2*yji^35~ZM=h`HLVs<8h z!pa3`qsQnUN^%baeuaC&7G}FY^rmB6JZ?l~PlfpKQvH_)&_9=#`IJlRd)-$5M%D`+e|p@9||@`>`9r+Zc!<9QAY-LY%+`wq>G5`SwN5OXoDUUZ&~X5i);TJ z=kC|;US=n!1xupbKKx83T{I!_klj*@0t#(Lg6F5fJ*{8R+tYSyDGO$s0dP~TnLJx6TT9Y2W$q_whI3tqZ z{JWMVH+huNH#}?16KBR%edav+DT;fx%VfH;-p$n3*^|2c=Cp?L4&1IKURX?VJ0GXV zBUj$qp|8?E6pwpD`Qld2Cju{yH*?JjRRoPUQbz?~`X(ExB~6ZxQ-~uk(0BhxMV7aH zH%)5v%{#TtR>c*jP`#5`Ifc*cl!{Rzc}_2~+H;YcEOiG>`C#Xs5PY$Jkv)`U4U>j@LgRS z@JgM*g~AUejf?DFW(7$c-WdnJ&i{u(dSskMjGXzdXE|0Kfk$5z6e$F$YsRvU9QuQ5qEhaq_@bg9o8F1!gB9q% zo1AXcqz6tzt|Y9{clk1uD$!Z(6R(fC+Q{4mc*nXFRYp)RTdq!S`h`O;pkyEU?yI1<$~FE2;(~c-)1o0d)m_7C`xA^Ek($$|FKKr?xiFjIV2CwkcS~hLPMi;7U{+ zo)YXurhE?KwCx@CM)g!f%<-L^3bX+@Gy1q4DLwV9&A#G~k%*r769$#)K6FUFx~(Rs~k?D!%^_~!1Y9z#N1rPpN3rM#>&=N3Z$P(o7? z{K)qUJ;J-P93wfBkIG_`n0Tkc_Z$e!JbZ=NF?zc<_x=J8o7m~xMrpgK{ZKIlLg_T6 zBR)^-w8ST3SiNXPcYQ9TX=`;V2J0PK9|HcS7iZ?wxTbYgtv$l9j3MYJ` zgLh^4l^K7t6rolhUGjDr!J+KY;-{OT2clKc!nQ$PoPGwE%@g@$SAqfbu0F?yF8%|K zK{8^Cnbs_0>JavLRKYXk!5y^tG({Y~mIhX1h$$Y&V>kbiAq2MQk7>AafeyNrvBbx| zZD`O|!=Nh>+0P7OQ+v6I=#nk+k085_ufnqYnsvQh>*|*k1p0}`UHE8EC{h)qpiqDv_PWEGb~@F#9rR z9k7r)p?^?CCDJW|7OXYduq(k;si0@|JQudV9O(-nvw|l*rsOgWU`X%Ahw^1;AFAnPMO2h97A<+YyWqQWSLW78-S@vpDv z1Z$3rHP3y(-`<0Ojm3-9>ORx=S!}DyS`l&jGR*~OYaj@rmG4Jd@LN;ft5sH)Ax3FT zN@~h-PTr}N7N&3%r*I#(zuY(gGv{g$_KMz*)HQeV80&!#?EH(PbPZI%#$f(0xS#Y$ z$R0ElwZ68yYU&abeuh>d-|^~*Gpmi9bU^QNQBcuS(yoJv8efw_qK)S)rr% z72g(V|9HxHZB5g@t95*NBA$jaY0TIW0pkFfWuLYU;Q2N2KC2Q@wtS7kr69IABD1IH zJwx@RHnC(VY%2XYa2Q(bk8N04j>FMZe+?X4kkWWPJ{gV{h>brV@zs6Kls1UvABw(t zJqRO6zr1{1ZqPWHKi;W|IJyVAHpJ5I%cnk1g5g;41fi{AV44)7e>8#w5z-dbAZ7>m zgNG^Cc4~j8$5+ln@%wqsq5kgM+}^Ta-Om2t3+PHna$b3Ie=eo`8>A=4p9e7Q=`hmh z=aCmU309a~nkfJck_Z#@v5Olepnm&RHZODmyUXIoa|%@2_Y$?GS}k2hHkG?jtE>(6 z03f75uUDzWO>f}w)5upSawXc;*C$3aq`C8#7mZrd*H>0sXwrxA7#zuJuQ^3$1{g+6 zrf);UDK5G@$gggzSqP{+3wlN=T zSNBg?wQF7se?Aa(Q104?9hCdpTUthenvMw!7p=e;o>2m;p4bGGm0Nkmap`m)%E}Xc z0j9+O{I+i|3m+uCAGfe)+6Ot z2@M!vVyQ~|*`ENberA=DkAA+u|N0Lljq@}2C1_$eV*HQi=Z7}s9q9XxIee{lNr2`R zaWnxJ10_C+?7%abG}zobyulY8Ju5tAs3EyBC_)_xPKPTyd8feM8*5h9pIxyc zZHZK`Q^t>uweH7ra~*P`XPZyxrM9RPvhAJUHD1ng4MvQJCDeVuPs&)G?0;pZoiAim zPGEg+Qa&CR{$~(5+LpDar^}k4kK2@-<2t_^nET3|A&H?|7?$&R@e79FwZ1L8d5IfscN99 zhwW_Q2hdS6E8&bEQrRO+TzYHh6p$+zZ}W}evSqV5ONJ%1G7&N{w0z7}=QW6J9ui{u zM*vq<0)nS-ZiTF?dh?Q-Wd0&ii7?L?{nd|EhWlr4PUOK+!>X-xu0YW1N_QGZtjfFtw-GS zp)&e;`jVh>j_ECgnul}ts}}oyT0j#7S&AUf66Nb!No9n`1?4AtR1*TvY_P`!28W~& zM}0Pj{yC8ywc1ZZ^woGaiAxmb?U{HwX7l%N_y+Q{Bf-KL`~p;hNt>Ca3v(0{5%}I( z%|4lr-g;*wXLA&XzewjB%`YoD+YKibb(f_5%Jy52;?h}j z--ynRZe&2OWPi6${F*bj=}})6z3BC_qd#1wr}J>k8)NLzM#`!qd3$vGx4f#~O~?<3jW6{etyqf4-_hM-t*)DHLVi zc753!f9s234m=|ZflQjfmb6K<4@KoE$BzDSHM@9sTI7#QNNZ-M`oxL-rn1mrd)Q zW4F4WWP5^KQfA@rR_@|j*qwc2Ql8|^0v=_Gk&sg{y&as~B{MQnM|d!T@4msUF%Q;jI>bAy6=93H>>|ilWnJ#)*;H z=I#db5>DRys|URHiy$kxZ6z|#&fM5G0ePxRy`Ga1^n(B8?W)BO@ziC?ae}=ddBooTJ;6V8~zC}#wdzP2}dSolZ!C%bh4G1vD&evajuKVOn(jqyt6!iz~xi#G{qshQ{=28~jSd$ZS9 zEQso;XRc%ABKEC38%2#w^AF?oFt=-M+$ELQkaQ#CB*6O37bko`v){FR0^W#1Ct>#O znl(1j9nFO|CA@E6rF(q+_8zuMbMwhknew-wOMTDN8cxC$RDJXh68;H~jNAP*xvx^? zD*U-}k~yt+9DHNLwye;`-kX8_#gCn*y=PVPy-K&<&G~aI{)riv;2vmsyZ9k=;41%( z9{||?0Xu-$`t&}4So^5}>*PKxPYD)FM+$#2G~RAFTs zuPb}>`XNZa5A`@`%M54a_Ue)C4_IklWMb^EO*3l8tN^$5x_4$tJh_6OyIDn50bwuW zuZj}Q)8 zLDeA`+k!6!kQGnn`^X8deqdzD3#|}29YU5*v`ZRK5HddCEc)kvDCbZJEwf7GcUY=^ zy>#Wl($XP~{QR5w^hwul<+GN5DB9ZJ#g^Agf#1C;i8O3q{iP|T^`A1C)dKI~Z8=NT(L7naiKL!j4X+jk0!Y|@GTR=KFrbO?>+m#fhGTl-J#|3vHhfe(s_g-whF`ND zY?lJsjZ*`E!-lnh6n@qx!Z~n;lS9M$y>Ar~gvdm!%reTJnC=o{V4UH$6%7|2k+f`P~!oGT%#U#+i*Vpb=f?L+842qV|UZ-=}x` zFPwL>$ay-if3ZV_RwkKYHW#3}4*wCQ=cU9zm%1{`Pg2WOkw=G4P1xH#-+H=b9(kR? zVPS0*E>MGs=kjsb7lJ74XR|6k!MdF^Iqy_r8dVIbPa90Y;-O}NkiI4M@j;XVCsg2f zS=hl6E2qnpmg$sE7oSMQEgO@AIbU2lpKeEqtL>Ea1KNFZ>2xx|oGx~@(j63F_%tSC zX6-JI^Wm%30~~b8Uc1}J=Nlel%dc?`t$l^%een2?aBX?j@?tZu8Mb}+qw>`$S`9xK7#{qS|nZ!h}HG<8$C2&6Fjt;)Jd(` zrfIt4+RIFjL|OL6cBGTK5}iPe{YnuM#B@KHFQ)pzD}M$3!oNJa`mv$sbxWHK?RBt* zm~&Dh2tN*g7q}OZyHRjUV<6{iSuAFPFPu?f^>XCpcye@NkwBI_gKWyvppVsPuwcEY zedKgUk-X7lOI7l`e<+7Ue@KN}&RCOuQs?#Jl5ZA5)1`l}O+R`${X?-bp8SVmk8kQp zEZZw7qL^GxZUo*bwBesgQ>O7#2@k6!(E5~4gW89mHsyS*9W+5A9&l+stXr^jxf!QL z(jz6W;T$=}`4yR@5yIKmikzCXb6XOxkfTzQ)532mVEVNI?3PG$77O;Yt%-o*Z**dg z#zcsJ4Hu>#LG@yx%07oSu>h`KyrSf%^n+^;u#+v#ffUq>-p zjCRfzR=v46f^(D5YLqa`QCY9Qm|Cm7YFmPYe!V6bpXtlt5anJ~TU}D<#UK-8p zZiN&PE&CX;StRNQ?pi0|JO8LX`%%uiV{VGUa@`#B-8%Ria6;Hr?djVko6Fj?@I zl*UbvMq0$N@ z)gtw=3hl?adr(isf4Bw0t)Mj~u+SXimSWr^}>B-OIQS3FH^K=%$e z&OU#09tnCkH_X-z28x4b2guAb1Zxx?RV>15Z1*b|H*_Nnk}EvVlp^J0b0!HPtZq{Z zD;{zNSdCpTdZdY*C9ANk?1u4GD{?ye^A4+uJsRt1M`Zi`=iWCb*9Zo@zl27v&tSVl z>*g~7nkr<2MK;6XhL=!#M`gZF$Q!Zq_M&2uGYqjYSS*#2@dbJet(l*%FT_8>gaCC;RRYV@*FMJ_gH-Yz}-`fcruL>WI-m1LtlNDAFd{@a% zsfs&E*saQ#M(D}KcGj6Ngd7um9nbor(&{)#{xpv9BkpRfcHD-_>GA_kb zJ_9zi>e4$veGqnT)z{7PsqL?wuK^;hwRcYtOiuBCD9a62Y~^4BcObo1;BU^>w2*++ zdv-d?s1XSWqw`BxYC+Ww+PK1lX^pcEgq%JS*L{#0f*&giQDWTerv?G-2GJ~I9!7Ll ze*&1PH*EZR+i$;o6R*j4-!7!xme)z@sO+MvSWC|@ebSwx5Fh`v6UY>0@(UuQU9nl0 z%UtD2qhK`xtgyo)PMQ*XkBwVgc~svxmE;eniGi_M;f43gFTxb)&P_#--P#@kvfeu( z*Ox}|-x91-{-Mm)41@on$ZGyW(W$gK%+V%TZBIaYd(93rO3VJf2dKomzr?lBkPHEt zHcBMFYIS zjDaNwRrQjMOM^f&eE8ljdkjTAHh-LL{D0GHX@hWN729|*z#Q!U0iQL70|lYsR1@&1 zs9c4Zwrp$APfE(T7TCSsSi|*~JP3=b)}L;hRY%L{ZjP<+ka#eEeE?+sRn8*2zVeFn zRy*C2X(};}MYHLg))YvvUePJ8QKJy%8R$6NIL{ytIask#o`PtBm!&*3@(6mX9PqX_ zwiF}5El<6{7g+2n`|8b>V;qO~Ww}RRR*LR_6!q2fVjZ~`Tp9(*FWMOf9{;>&WrY>H zF!N;r>lNP{Rk=OKdLd%Hg4hh2J@lxj$kwJTBnTG~F&!fCO;{d~=b;?x3lNMuwm+ol zwYMpbzL?8ck%7gNPU<_&SXD0Gad_H(2leO<-Ruftd$Zt_gP9}NkiQ=rbdwbldyRtr zIq)xUufuXyu=XkhbPjS&q1J?zJJv3Bfg_A&c@_T_{Tyh-1yv8nX#svZr^h&i@$tJ9AeCPh`+5kXJ*~b z5I`(-db4O8V*7y+<*-=ONX-ec~@>Zr>G?-TfY=lC-u$HC!{73M zD9y$iKQ@9K9~A$g)CJZ4IecpVhq7&4H~4pOD(xQm{05ts;CZsGmQM>^(=M`XNIm9A zHmPRNk}bF%DC}1(o~`|ybNnHaiftcn>0XRg?2R&GDT5rAJ9=MGJNiWW59JT58t$Kp zv_-y5(Gae}Sx;YvBsofu#=Y4bTQ+9Y#DRG&*oyxxBcm03bVisd$n1(Z`|W~2?dWZ{ zkFujf!>1`H1FadX-gn|Mk<&~Q3s~AiUdtl)G#U;Y}=#yIDq_Ki7 zf+X7JmB5OrPISA`nLQ-n0mUbU@y-{{vDH_YTZv+H(`f^ zH_V(dA)dkJeNKz7?Jq;3PM=60LTe-#3F-t~1??iIyY#NzA24ndmoXu{N)#OgPP!+f z@Kjml1{SuZQ$)8|R&zEH5CED_# zffGN5uPOqIuUXURezm@J$F`ID%6;H{O&q|V5ni!zDydrDZ^pCiouJSCUNI#)fs%b?Tl)c3PFdzc80sje zB!uMcT>`hJe?v{94x3!w%R+WHnJ@MvmS!EhTAn|fH1D5{%cf@X;F5bq<$WyO6{79< z9{{C5TE8_aKhH1L7>6T|+z|b;(QzsY(PA)z1Zw!a5Jok7^&9R#cx*~soWqH8!n0GV zK0+1XzE~pSFPK|aG_V_pgVbNJsb8#((2_};F;GovrQh%C^xxT9u&bS1%LonPKQ;5_ zHXnA&8BI&IEM$P&FuU~um>w!WjBjz`A7L>Td@_vI^iN4#N)eJXqnt$M7g%a%+N*_@ z*o;fdey-SDjaT%7L`Mk`;%**MD0X3&euwr)?X;{eJ`s`|*xs3d3gaUzV^^u0`$A>$ zh|HxEdj2XgT=*laL&Qts&m^vR1BMk<`kWAIyZ#`LCvXghs4U|vm|~c&d^m=7JLG}T zy4>5N)MIilY^u1U^%Axskkj-6L>frAn(2r)mRvt%eGjnx)iPX50fJ;e)oOmV9A*y-ol;_}J z!2)BN2e=NU<>r#ygXaRjtZ}yhF(;Y4L0(lBtYgrWNL zkSW;(YD7blAGoj8nSWzk!3N(FtmflIN^5f=`eMIQU?wcV{M^hYZ%_e+fu$a%JwTHn zFrkOnsAH2gDV#*4saw=-#O*p2UCL8VJ%sA@F!jW|O8(;czlhYi=0pn2%4Vu!eN0Sb zmKx?(fVZEf5_9@gU(oz7iur=EvxH)d{>=S}2*i5hf;ucKLK4*_Fg0IF>~q)YE+83} z7V5UjD69?{o~)_Nd`%W-#07)mRN0waVASz)iG%T&MNOZgvn{B>%m(PLC4FjZ4zU%>2Q2CazqSX7P$4Cp_qY_| z_?Xhq3Vo2D_>~GqGMLn*YA5)QtDQ2y6L~=Yp6&IY;b*<_pKTPo-s|)oXp@um`INgwcVt&Z4s$=}!$J1}2ZI;n6LM}e3 zawj>M!%vx~_?7b9ss8|4fhtp9=a?Dh?g#Y-?=!Eh*Hag%TgGPi!~$|-5K7KwI+Y$H z$MGINh{t-B1o3eJ&_xxdxRqQ(OY@q9uzkJd`dm(bKt~VJtwE6(@0_dG>`&OKKm%;B zr(QUMt(WOb=ft^-i~24lp>7MgOE-O_IK^Bc2p-^S@VpVbf0I~H)bHx!j^)M>2#C>j{=Nsd>i5y~6kk#&@ z%Bn4q`i(~~*N0g`t2zh&0K(T+RQ1sFaouwL2>yl|&6l7eaK|+{Cx>ucvb@c;^da=8 z75J6BO8)@i3$t({Vp8k5Pt8i%PVrKssB`rE$LsKqSMl`xO7&5Le?h+)mm1GfygI3Q zpxzI1w!_;Ds$$vt$V)?*4h@$K{{H|`(tJe0u|s?~`i(`u&=817McLzX3OyRuAsXUY z;uZc(K)n4j{Qm$@`d|4572;nP0$dX2F&E#7nUA55I=m183 z66ZfKekuTfTRl{ymsEO&pRjHr*b=ei$NvC;?Lnw}LgVxm`fDu>(&kng8(=@iAM<1h zTtgcF0OYN1Rn$252tvEfK%K>=4}DKJ2Dyqmm%Pd`{{WJX_=&AXcZmD?{Cz*%q<)DL zc!)$iLe3(TY8jgguBO87A~hQVCdc)b;+)2H61IN&zJy{{->_+R&Bay10)=tnX;VTU zg+u=Uf_`Ukd)E@b^B+-_0moN5lzxnOpWRCOkD0koi;S=D>G99iK97G-{wh6UZhG!@ z^TaK^Odr!3S&EAhS8Mvos7)jxXB7#t58hmMC>dDXZZquCs|a~-7v?BR;tMXb;&>D1 zKNsQ;T7kqNb8z^m8Sj>JEFL_;_dhegrz9gjKk{8xIF0zIOiQl#j-em^GN<_+vhl1} z)8bU~6LGJSpz(+;!lbJ!a4E4{!f`1?%M!lB9k*%6>iQpa`>eP)qOizkCVt3|IlIK7 zX4U8VgNRR1+^AvSubEGCtNaiw%`=i)sU^ z%`7z0dY8NmA&#)e>FVeCF+!zRBaSEI)z47*g81rJGputcFEf;)zJ8SsCG5B|pUz2g zrPTTPiS+gH8_pwlD_HtpiGSqw@fgAl)cD1Q0V=Mb>?3kc!sblQ0KgCI)C|XK>Uhn- z&dB?V0_*$rIL*PI1MXJy^h{v4q6J3yFS*`H@mS%Al|2%-^~Y0Rm@r2>s``3TyT`=k z4l_48%;XLIi{n&_7mKqm-ahLS`mqLgnb+APSEo54pmSzPqa|132MZkLW32NDme>&1 zXZ7FE{{WDC?p7z}4nL{8_W;g)5#!e%N9X9?gq{65uJF_#(6h;1K9r>K@=7Che?H$3?RQ%3KzS9^o)Og<{G{~3hr5jq{m0K04|Yo1 zvx;>Vco&#k{gx>1Q@hm9O&67wiMolW*UGX9olHrBn%J3Y#L<1r6E47HOL znua;s67!P$GUAO*#Oz)(55{I0aUIRn!zy#Xh$;f!*NEeJ)`;y8>JA-4&T}4f2mX9c zbtzg3?%-?=U$aXlw=BAv{l<7OqmISFhJMMmDkw~44Hb>*pcXrr#vwb27{MR>)ZxRm z1^)n2hz(X2S<82_7lri{+v7)=2JZIeSlalwfEgJ`u!1+gY~o8lGXDU$YduT;=KA+D zpq=5=yi_LR{Fw1K!K2Pzroc`va~#FNoNUud_$`hl!ZdfwF+EfFN#O7i-cRPN?tmgCcIbSBd zMgIVi0llmFmMl}OvTT16zn!d`r^uLpa|MmvHqCEuCD}{9>kVeaiO(b@MU{D_S+G zf;u+~YZ1kZZ(U4wI_6T?OyQNWj;EIRuQK1lf1J-PeJ#aqI&;S7J5A5?`N!{yZingM5r?ET5Y3FE7Pr0faq3sg2y?&s_FQT^rmh_|q@x zzE}og`GuGK^82p}F|9i|1~^PNOFMmfCqagHfxPHh=#b`g3j4Srfv?6+!6D(O*oBJj=+)e^KMD*Qj+$HgI3|07s zSI<8~H)j(&JZj_2@hj=KWVNckc#0HqLjcT1+NHMz#P<-czFB8a z6Fua5Chi{P^Q66u2etJI;VJigM-t1#LCt$Rk3s;y=2E*_JE&<0>E<=) z(}C_fkC6&N1EyV4HGz~sjkNil{Ee5poJj9C^B(-eCgJW3LtmIglJkm&mbKb`%e+gK z3R_Xezi7e;U`;kL#Gt4S{?8z@HCv3B3dKg>@dKJ~xp&05%C>H%Q(EM?ZD4lnsd+Zw z9Zr^2V2KHNP`)EZv+0z9YUl|?8?scdPo;=T6?GuT88Dt8zs{hk7P#kf%Eqc^`G@gb z$}fJtmF9DoFLl(v^A)(+`P1Sw@~qT;T$9bILh&u(Vc2UR3QMacABX3+(fTyuHi0XOcY{{Zx#@jvQo&a-fTc!t;3$y&E<{g*)>G6snjOMeDQfnStl_BK%gjq#KF5ht#P-6oJAc70;lMCrWBbGIQ;f(dLdHvvQ9KCd~HXIj+dUoyDEb(x^X;Y^`%@qZ^1n`J|I z`6j;~)Z{nRTX?L8H42@TuxU6iii4^n^rj$6*s`n*9C(P(S63R!3YBbCA_^!XDz!%Y zns&w4skU*0)O!x)zlgQ&5Mm?7*DK;&a#6N)4R;BZb?d1wZkHRtHm>x%|Ta0B&H* zUa#K~Z}BTQ-OX;J;~uV#w{d&6IS6sK)_h#ShMj~#2NB;4!{Z#(F5TBtx-ylv{F6kl zn%u9bS;RBcDC=ACG3$;ASF4FgZZK1<+_eQz&HlkL&T*Q*X2$~qw>Y-_no!kTK&P$4 zXjB-peAF!OF*vPCmgqduxqyxbRLZw^vRj9(z$&xb0mV4Xd1!c+QrX)xpsv^4DxqTv zL0tr%xHr*X)VaDG?xE}QM^}92A<^WRQ{FBb_}n%$;^CkdJ;R^+L-KQRoE`rF$Y0}{ zCD-RM42rtLDs9#1lqoOZmoMJPKE2eo8zap3a6_MxSKe_NmDR&NX0pHo=lXzpn{ZXn zng0NLoHhY`1a$)7JdeM=Pqbh^V$C*zK zSb2e$ltq;oFYo(Pea#U#Qcxsn<2;2fgI= z3+R`{({me#QsS^&sM23YF|oMXxd7d9QRDd}6O>EC2-sLqhPu=Y86M-rqfNx+{6gnd zT8mrMW1aej@cm?Q^ESjg&0i38>zEe#?gdu$Gw*o$gPSu`q>fSesdKu%WyQ1EDR_dz z3e{Q|g=_{Ff*IeKlCfuLDz$>(yMKsAo>Lz~OE)WL&K4V0@0b(ypdGQmaI$7-1JMly z@%E3ifo_KkUg(-%WR}wIG82T=>SC=~e6iV79a97NaRileE;c|#{t`Oj9$|T(Q{Z}l zc@Ed<^nDVg^?%$d*@wv&g0pb1=Tfur%xlRrtp`3}tF^hxJNJ2&c*oFjmt1i*f4@^! z@$bynLr~ryiJt@?{DFIc67zJ_^L{JnZpSc>_)6y!-w5v{{U0C zyZ$Guz9u~FVmn_f#|z)sn_3*j#oppARHmbqsVNzMWcv)TSvH=f5CZ!q;7qO<^9lS$ z>F;dg>N~FQBn91hJCrJlgc4^ZY6L^qo0Qo1;wZ@cLtOi*Rn$pA#0YOu__@!ymfkB< zJ~4Q?{{T6dC%NZ34>F!C#^a{?!(GeoVchcrOk6FI`uLw00q_d##ubOl*V0fOkPWz z`R;xyf4iUN>*&wZzgfi3ABbRc;g$aYq;&rPY+pYyY8_$CM!mUjxlY{F$GO{tTKZ%CxZ*$ZFQ#^pci(e)-XX$Y$rMGU z(5x4iT+Y`&s9~~X&m}QgL!C9am)yYsWOo7l@_xmN#`q8@mfP$LH7PBNSC(aKWoqVi z-T99k>-(PH5fu^6d_xVJtzN1&nSo2rne!@tRjJOo`aev2^VDkikItu~KNV4wuW;*b zwNkAb=bxqFox1J~;yfGbW;x>{J;Mw=Jk0!$l6apHlwJGl>A?@Bd*9Ii0JDO+gs;bO zmwkLk>EqQ!o1Q!IErYInOPn)*aD*7F0S6(g#r~ns$_p<$j48_`P-0%t5)GA1H%n&W zgZ3)1Zz@a&Jl_xN3uY}X^)%(3LYgkO2C=*4g=fK+05bhq+~J59S%79UXtj5e6^~KJ zr~_lE{{T=gIlnQfkHkIkm`W*6Ql)TTrZ-a;#;!P~n@npmzrI-O7$H6`2ld1CwqWsR zQT40lSIj(qAYzK~4Rv1S{{T?<+&F{hKT7&*h_RRG_Z@W;&$-TTjFGu}{^m&W6oYqk zkTM4ZE?#g)^&cQ2w4{Lb7TU&b#BmCc)#7ON`vxh-EPbpWuDqC>+%E(nOe;0a#j(4_ zB1E}N9_O-S#vV!TzC)Rg`84^I84$Uqxr4u4#5m&c{Xed0gzw&J24V!K{*hz3h;^Dg z9nSsta_lKw5yu{`F!+SCF!{27{<2~_VtdE9bAQaIDVM~~?e#CNdp*uP*AG(ec!xxB zrhNWLd!IbP`d;P{_Dk~@QSkLL97h-U>Nt(PKI%43Q@`Nc#fl-H+YnGR_9r(#HXfjx-t2O4EW3^^D0r@@doC-Ody$~#wR=;pnq8* z{pF{g=lx-y*%QZ@o;**4Fdya*9w%4wN^{pALF@4t`g&rQh{HbuxST@oB}zt;9Z#h2rlnYF0%iF%c#$Jt*bc3+Kt#MpK}%wnon>l^402P?ea zFn~eTk%U?cJk+bR(PVd3G{X9t^Y7eu&LvB4Jl`#bFRioE zUpM)lNGB}I+A})usYyj&@6AFidh#(z=CXXwaRr{MYdSv+ z8kd&&$jloQp6^iFcWv{-ekDnqkc$BCTP-uj=!{gtBrw=Y*usfV>PEX1fWPKaDp zTOhM`apF{;apZ|N@h&*n<~r2mJL0FG=2TeI&BAxXXP6*sdyHp_-*fpG zWg4}Gb&J(^1Fi;U{Y$`HnNn9#Ykx%%xZAQ(;RY?{CjC!+!2rqrN7wLl?dw zXK#jAANQG*_X|`VzH=zg=jIKcGUeZnZeBM$pED_9@yuBE_^9lhPk5-msAi%npztv- zMRvu%)^6d_-v`7SyD%^=(9>`b_m2}1>-H?wC;Ky_S%Aq#$(w0&y{$M{{SK=^_k-@Ykvea z@i*KTzBNBPyvDM=C0CsP08ki+;JxeIR2Ovx>>aQzEE66hQzj9eO3~sLIB2P)L)cBpf?ru*a*PCXVXmWUU14Bn9uiV>u5ky)CIq88xLnQj5qA%{Yq!iwJRV>I zJYXRNIdDuo`z1H3gx%SK_ToLyl{)Rt~G4_?dF{s%sYEHh@5`gl~@YYzsDJ}vX{S4eb{ma%Fi*LD? zuu#OeY~dz(xa(D|B=JM8Ok*;-e=@N0e8GJqH~uEmp09Hwdb|^Lop3e9%A3%-)owjp zCEH|GZTko#imxduKq@dECa(>9l=Ns}Ih1m{R(>O1`-s^KtPutq%P4JCxK%e-Foefm zrBn{_TtQl0^49C=))?O~d3#xf?C0FSdd^8S`i|SG**2Gp z;y$(1d19}K&nwO&wVRszCg!pcpL4*3xvGqfML}+${eZHWNUly73j2N}?qm1c5C!q5 zK0;l}?qu=IHuVcoAWk$5TH&z?A<01R2JwL^MsykvhtFhLd0U0qwoY zTZ2*D1>R=-dpm;ay?ch5QMhMH!BrC#*7if80RASc!76{}Grx1cQyx7}QM4Q2mb9vbfPCvh?*d4Xv@cN;Pt4QGcB=c&BkV>TmB{Kf#vaXtXF;9 zv%$utM?-Lh4l+Qrw0R{=eruR{twL6z@BaWMCFWzPmbDw2ylyX=t_koCqT?LEvdY9u zCs-hXpN!2qkJ8NR)M906>%+QF5d0CD!!B(w9<^HFDc z`Xh%|g(u-VoL@Xaek(9u(?_2DN(cCb(R|#zbIxuUaqd#CW&R=ZR>)Pi!`!YTw{*eW zx?>%6Ff;B`I^Jqm60-&OsQO?w%yv>&65oBwJ5LoWd-;gQPx2-=nB^L`o>mo$AxNp} zRLi{KVW`U9AW(m4KfdPQ9K`YRMDd&3;&X}Sv;*xB9Z_otrZuQIEsz-5%r`UGb|M98 z7KiUYUEZTB0ELR3uiU&PW=DwfvEXr9f^s+61uIFw@fYW*Z~XTH^}Ez|k<%t6I7hqU zr9Yg_De|7)!abC83RU2P{{XcDX~Y-fWPb`{)4qH_R~psNYRov|0n?Z+YTk)W$>Esy z>gL`024ka+quy`9a2mF`xFA)t%pE}9mvF41zAsP>Wbj0}FQ~ZQd`#(G{{SI0U|mPd zIR2SMe+)b)iGHDn$1w*3E^nPPMt50YVY`28l~6AlWtJBiL#89daSDefhws$U^#t_5 z8_#3zsPRiH#H?!h`e*1HKA#e1%aA@9RYQ4|#f7*%ODg4FbKDvLwV~BQygB5Q$^yk+ zSVEkeX4w_p^(o9MynO z*lJjmY9QdVpoo~QrTf&skZ%DWXf$WU$_aW&cD)H!tofXKSCXPo&2fo9ZSX_VCN)v7 zHJQ||KZwxFo}%YJ67LL`>L{K4rE7Y;!k*(XZv0DE)=~tZU2slYKK-67Os=#P5r?Ts z)iuljYk2!&*g1@ao$HBzuM+p(WyD!kn}+j|(=__b-JkQ!b*z6<-7TgNl<2mu5F)c3 zNp3p1Q*mb*g?u@e^PD%Sc$cSS17k1K3zIBm<2)YWag8IW3ykOn*EcFe`CxLZP29+7 zeI`=2Rw_2(vIUh{fQa+o(Ot_>j|$c9CpJpOKm{CSl^7iDfmd1M<{uM|QlE(P8eI|p z0C|nu*5?m#nY;lbm+cV-+R+B;kaq^nkycJsQ4ogTGf&ihoBa$HOJF6k{{W(3iYf@( z6?X0S3SSGiiKK!r7ZBN6ZZ2`=RnD=7Y}Ve zi2T(Yk+53gVDK6gmJwz!#wljxH+8rgR~mfF9ht&1dAMtiAW*$JgK@22H7n7sCLlgu zDr|bt^%=32QU|D~oz`!ei)J3YM1e$gs`;GAz=yersE2jtR+vR7`Jt zN;Sn|Vu6(cHf~^77n#5NUqy6(^XTr0nMUfbUgjmTgEuUqQ?u?;MbhS_!H~ojmt%6D z+@LE{SFhE7XJ#mcS}d)3VpFdV!7fS;Y9L&(_mf_{6AI~no0;>g$HWJGarBzItxJRY zU|;o>`i|-1X|ff#&B_+?)+%uRnN^bUk2f_>N7QBrtrDubxu>Y-G7LktWh7LvGcqoi z4NBtJ1kw5m< z&r?f#ow4F!!B29nJZs$d_YHaDh!^Z-JB9+6*WO(Pw{onOOe6)sG;f=f_BR}7TRlow z+djHJrf}8+$q?MAw7M82IS_>Bh+JLSITaIE^itz%n@p*u*J=Aw)OJj4-TuZL|m#K|mo>w<3 zW2t$v{4j;-Wp|uK1UGYiyywNuRYim~$I&}{{{VBGXDHS?`@OQGAa4tytXGPJF!@;_lg;mHXNI(w=NevR91+G@q4!^+x1(M@oG}6NL zb0RIe{f~h=APq~Ei}`LH8II;D)OJHn7sO73FSX3Pd@=gs3f1l}ljMTURdP+Ijmp{C z5Y|r@1%Ucxgnn63MJnOjpPA(~S8#_1$pi`F^T+dQomIl=5UlJ z6)Jcu^C|V*t2p*Wjs@d8i}+p%f3YPk2xLMrgH+ou_T|iWezWv{SP)2UDM5UHPq?o?4W+s_h%d|-{5YqC{v9KK=-TDU)Fv;s8KFPFwyQEXF^ zYhS7TBx5OimEcfiif#-y87D_DhG$WUNHrjpFRT$}dvZ&4j%Ha1+>t3p7f>ZZXTK24)bL`Uc=sJk-@Qff z!ylQX^7AO<*5=A+zwSMOU$qX{E~uMSUoz*KbpcjCb(Lw|XZ`10&liQ}Ep5zYu85wA{}ZxPRH2{7T|II>c8U=4Xn{Vr7cO&sgh>bu%)0 zo}TIv$H%Fd(ytR7F!1$IP{v`zrEyV|dZ;x3xk;v3cH@rUzitK zBQZWQr^aIg^F983{RfEqnEfEqb1T6rEW_x%Pec;p)cK%j@hz&WsJ!3I4V%owJ~4l_ z8kgy#gfWgCF;JI%gY;kY+^m;DtB1zngec<`2&I(MF^++G{igFE;T$Bot+>pk;l@vM zCeR=!Jn+J*yZ0$$9f{{Mmd6~BS-~HnE<5)eFlEc?2Or#eIhkf$+ny(`;pZjwIPVoO zo5kkhKL<2VXdGr5HyNW`{?#IyyUjAxa8koA^=~l2)F0A6L-Y`z0S??f3Az_qUJ0xk zV2r@QYC=J!CHei4t!K53D@W4MHP7Y_Wd|knP0p@!rl01SL6giCUihizowL_3=%Mao zpAzqxbwB4{PW_SJ*5HZ{xaV1znf&uJVitFOOwAzNT`l5Mw(~hv>yzleop02!+j+kq zwYbNE;Dp2i6bKdiP5zaumkR-gT+cdkL01tf)Y#M*XPfeV#<6@{C0#I6Mar$h($TPR z%jvFh20<$=azl;`@e3X16l)5{7qN}Y&}55&aUvwhRbGc^Te^&%;O#ERm9i6W`1*0p-0@osZB!L3jL^NG7!J0 zBWbKu5kEotZWUr%#HbZUSWyC&RuMeYHyUjWml3kHKVqOQH>d#M;Ez4!I+&`LxamF1 z)~mTo!7@HMm+9gjmBSdbikBO_LToVJG1SRTdzOcq#yg52;O=5`3%|@Fy1!DIcjA2G zhWM6;JkMx~TaO~fFDubG-BR(yz_*CwlxvBL=H6v~Di;3$NV;bgDDU$ILnNm##(rfO zD$q}Y3qNXDjJB0<-z+~KsIsc{570lL?2J?KFY?}ptASuU6*qCsn>n~6^pRU`-TuLW zS>gdl1H@bL%qyH#h!VyAoNE}aIhuInmf-ZxX*1?&qx_U{^PSEdlLwowB{buxN@3#I zcASSnIYe($`#apbY%<(9UlN_W)T3wcaTDTvyv7n0Q+{eCM*3o}`bu2*pFH7Z!LQ6w z^-{0%iD1*_4XUklO5!6naSB6#jYKCX!~08=<0GhsHFQT+5T`LQ`VW6qm1g5CueFCI z^#_8?1guL9q<1t*m1r&gz{?e00enYi8HM6kF^ddnz%fNJ<^vA_)E3P%@iu+p$=4gy ze7Ec3Q!6Qc;gu_1V*|^5!Et)2O7#bq8|ow5GmOrAw)u|=g}2;E)}@7xW}D(CI~eM_ zJGn+{GiGzeyPr6|bAQ}1_=BgI8pj#>f5>w)G=ZjC@=ZO)TR4@YN}!qkBj{PD)HgE@ z%WI1LqZy0QV3dn_Nc}H-!Mw|tHTo~;O=$aN&Xn9?G;+ZnX}XGLx;D2jZ@<_$>B!6C zYC7+~P|CDDK3El5xCa77>vNPqMKshkZ9Kp$^R`|~Q7g5bBxmug&V`sCg2;m~!ca2#?}uN*^$v%wizXLlPH zpYkzKs5Slk!z}BsPy(OF6CciDUTc|c8JmS3NomY+JBqFciGE#j#_+6n^u|7eOHah- zTx--X1Uc)NynM>*R}P~cd`37~SWYez7sBAhuv-FX8Lw|l1z(g3YFr12VOfOWO0aI5 zfW01lpR-DZo*^aRQbFYw@{l)Y)o{f$x>$r+EK@OziomBTIOfGK=15;y*m}CvMI@Ng&b>b={FNUMZp|`7olz4vo^^C_hjzHvrI$4rXFRlF+ zC}!t+yGeT5slh{RW!8o(nunu=fNpI-bV@X<&3E=*r|D#*qFY>Ce-t|IrS+qnHvmaH zVBISMol4OXjvz0~t*aN)1L>Cs`ej$<>_r%H1!3U7fm`$q^+2(v@qQ);CA;&&uPSXCD zo#r&tXHeZ^{{SX6VW?|x_|4*cYNCzn$pG6CGN=2FZ7y~JW!1*x&4&}S0X_c!vp53! zx`vU)4=|(w85ecogX4pgLUPPx#JbyIZ-xyxa&rS9U9PTKFs2oXX|nQ$0GM#YxLd2x zmzT6=kF-I|Y%%WjD!`seaS9n00J&U2DObSD>T@m=91_O3bTOM0cPdQ@q>9HjnTl4| z^&oa(h8}~Nc4f`GgeV#9g&aktr>SFG;qdngkUG~l!x+~k49N@cvt5rQw=0)lR$m0ZKLMd;VjfKtv#z7~=rH&qJRjLf}OBig;fbu&YLVq*UQ z405lXGkfB*ELf;KOTor5EpTR3?&q`OEidv*cOCw97k4Pte8S(3A+Hsv+XBb*!~$+= zf{Ps1pApTNT-+$sE*|p>(z}#(`65UeS<<|X$*Ce8bgH$FEEP@40!@4X}9% z`WI00FBJ`XgScQd#005U&&IxuK4ph{{a4B%ZfRcVVd{M7sR|LKg1T+w@AXMz=onAnPxWJ zE-qSi9UG`HKvKecakSzAfQEy_tlcnBrW)MhHy85mIuRW^B%<7KfE)9n;s=5XvQZM5 z>L0jKtB5l#zAk0Xp_iM0>>?^~pRCnX=Haj%IAuPiHdo40a_a)XFlho@HL!d$ z2+el$QiZB<%q9dc#0G+}grR`YuMiNb;6_G~af_9zI#O)1g+>(=qZrzA`sOUA;4GT% z0{&yGDxht6saWDx_+(aXXdWl^U(|8_+;^_EI1HhZTG=*xlwx+eUM7ao+Td*SECNGecp(%VgoO!9 z;vFmo2h6MnNQx(X+^(Z$B({S2V-iBuYU&HIWI%-lSC~&^dm7-C;MKQe3YC^FQc&J> zI3m0pJ&l38psQZMKylx0nn&syZuCEaA2FrRPlC|2qK7^fIGilX?gtl4C zTKQs}!GFNNL|o8Kyyg`}Dv7gmznDh$$Ri=N0L6KZL0Qr}s(E{r)H#NQ=k=vf6GP3+ zx%idWa4f7xwDZJixkJ=p->R0!Jof`gZhOT%oZAfDeAK6`LX4{a0FvwRJlNt3mlHS4 zKdkRr;s(aOlZtt%y7fI~TuLq7cM9`Wm;xh!g~3&Vn9)_v>JL5Ig#rZxAR20xD69aX zF~xvK6Y=I8`goV!wS?!HZfYw5V4Ajsul!LF1viEj1c zCE^E=)}nu$&qx~a<`^r8Zthjr_d3zyZ}*vVb&J)?21!ifX;IbUa%!8EmdDRh@!cWR zs)`ImEL#%%Ws~aW)a96}&k@Ovd10U)*x}q|wjdJr=a5fu+;;cv3 zrrqqZ7x8REW&p3IJnU#OAw!9=8R+vAaVnS)h>ltn4}J|SILmMdBI3~bmF!ur>N`PMq2^hNYczoMbV_H?BF<8+ zCV$uYH0S$hb{YQoFs{_|L<22he6g;U4fu*TgJ{v9&~bTS5LE<04Oyvh(Pl$fIg0$n ziVgtfsbhuZcEYmO2Nx|veqxR1h=81cBJ=>E7$m|5E?zL(Nfj29P)a9-A5NL6MQT^q zmSrjvn#^ak^>e&O65UJXrT}rqrQ?iVyN)o`QQi$p_-d1RO}+>@ z7=zEa-Rs#A&PFg_EF6)Z76K9`b724rQn?bqg>vl_Rv=h9Hi0TtMfj$y*yd!NCixtT zJ|#CT5A>L&GPVnC$8;Kp@hk1#lJ5!;>K_@q-OE`9RQe`XdA-7R(INMVMC=dY#LkdM zqBWla9A*jQT1Ay^mU<<<8$e>DB30C0!iE%gdxs+OXT(4PnUeaLVR@)nY}GY)15suY z8y>mlR(@x$_?EiNb%wK_@e-_V`;}l%^@+kvaBIx8)qCb9Q>f`xT#&6F%qE0BH8IVO zVTvJ!H!!cFZ7<_8yZo<+jZ;#O1QH?vjGym7zmjq zX*zBuhSU%%a=(}w=7hj<(;0T6}fY9#Bf`9NhRgn@#tQfM))tfA-7%3OI=H4_+>1?=@R9CaQM zweZ7;YE~iYQPv^<05D3J60PxbN~0>wMT(**wy+QP+*sdOn6eWZQM13O$*oKy0+m6O zj#Lc-RJ(YU^C)0BxL}Fl>SMQHmiBo=L$_}vrrVwtd(bB)=^|@QO7coSCIqM)fWt3g zb$&>7;?%gadicbs(SX4#;=W;?E$IMy0HfrZlroZqd(5*(I3Aow zbW(E`oePb27E9uj1K7kQc~o1(Ziocf?j^_WzYM*Z3{Mi=Kq(_MV6Vw9)tV7S%nt-X z>{Sw=<7~KCD+?SF%|2>XutYn|v6=`T>SQZr;3IWtgj@dr0-)xELS{mj-ODLLt+6_R z9sLx#KM){=p;hBCIVuC81ucts!zSfhN|vbn+|CbI0`{tmI$5&c`kAfPN7VHQl4yu*N2t9OazLd$56$UKZNhMpXALNS zuoexlu?6KO%8_O0$fBQAUO{akc4SCxB;kT45Z2p0WNIXvOh#F zt}_@EC3MB>GG&sW93pECZ1O~J6=d;$s-{{S-?)wzk|5XbvRNR`!J(7Z6f zy(g&Y38)yms9pt1^NNf;@`r$u#?vgXb=1B=#w%|)p~Ks}9x5<8 zvur_CWt1`WLYl>I5XIK8Vu7blk@cRSVF7EoQdSe@psNi~jX+fy=Aj0jf0>S%v0fk! zi$zzNT`HE-)F?-l%$a~@0_a^!>sY#C6-jHwY6AMP+r&2;@+BTxBD}@G?+e?Q*Wj+= z5Tg&R%1u>RN7Ss5v5YhU6iS84960{OK^wNcFb2()9(`y66$*>|N1S+ZQ1VArz?2;U zKye2!Jl0_Eh{TI^3T0_G1~IQhrHt86wkU62t76_Ry$Y1pZTzA#wE=0mvt!xE%uXR# zX~v>-_F6qK0%&yx>rUeX&2bZG`Kfo*Fdk(_4p7}n*{)6?0k{HR?dS~13n_-d4FL;> z@K5-UtDVCvT;Uw198dk~CN=XMaTAh0!!!P2W5g$UMxiwfAErgFb2XZHtB#0aNF1HS z@&OiFlNS%#8sc+gT%uSwT{1%f`78$0UsactLt}>uoksTxNn< z*9104c!9$-b#j_2pWv6bg(7LJnaYV;F1*UMB7@yWTr$s_l?E(RP@$$8A56`7fp9ku z_hs^shj2CpJGq@JFDN!x_AF)U(!7i_km_BM#J@0BMJq=Gxqjec2-6u1L?KND2apMD7+3HY5wc=a0pMo18*TgaBvc;l+(niI`;nnlF?LgGj6UgMSD^X;+=IcN8jkG&_sgi`dT&f8T3Rkk8#WR zn5{z+p&v1Uf)@8Gy>S+!$@Go;j74f9T89Jz)w0njy)Ys9D;EQ%C)~^i^kZQ-)iN1M zI}VUTlJKG;!$RRWPsO7UfVD|W_u(ZnYd7WtC_|XYB5?)t43oqM3!!hRO7s1Qnu6R1 z%m5Ar7|p zs=Y$}jYc01C!DMjqlD8LX3%qo@ji72iC4!TO@2S9#dTyxkLKf2`P9wZ zW4TZkgKTx0iGX^ENHM{~7Ex%YY?96xVUo@DaYB~xUQoiQOvOQ!gzd20AyHdmD=>*s z+6<&Yyi@|){mhD<7-|@@H;T{=H5p@s1a7jTTC;SfqObhSB%;1BN=|V45LGC$`;Nh! zNUiG>F@a<~Ky5SvMl@;9p&d>>Lz|4X46m3eD{ks@GBt{*u^q2>2@XUu_0v`AUE{&a zFb}F?DXtRb>uVy}ER4FN1`cJcC^L1EWEUiZ@@$pJ11SL2ZKsM#J;B)V8KHO6xI;F> z)CF1cZGyF6dZ^9{5;~)CWk3WuSm+cjn`$mh9W2~inCCYVW@Cn&gg~_3F;_E&aIku6 zcQdVwA_yvK22KMR0k($`hTT^)bbMnNevjqEPZMW9Ofw|R(Z()PrDywokwmXvSyPO_ z{{Rsj%CqB30|Y9h>KLZ^^K$jTJg~t!D5<=y95hFb2GRm8!*MXLEm~TyG0J?(RIXZN z%nT2`pw+5qE(?KqT;`lNnLYQ?zL_mFy_x?2m>O|!yCrEHqtsQbQhzZHt4Gu`b-q$; z$VIHS0XSF~t}aqH7<#%cj;LabE;LBrvP-4Gah!+__;m^o2vk5QSa(pY@PIKXuqN3^ z97A62(i)AiX<%~kK_$4M#grS0)Vvm?mDr_+s5%_sLC%R|JK%Vfzb7}$aFVSi9g4Jw zwZHa6S#g8zcg94ophp!6NVhW+moAygd@;z{SRxjTQz>Pjng+~?IWLeKy7v|#l`9eC z?5-{`c7{R21-KO!R|82hKLCoN)zU(32x}^E`f2^kI=Hy*RCL5jfhn26jP!m!j5vhk z*ThWAU&}2m@fkM-#qk^`I#`te$R=GzJhv4D?`&qY=JHId9UFqP14&Urg?2W!KJ_u0 zjJfrRD)2qrYrasz6kKHqFg+wyOC#fQnp8v%n=#_z+z(N+RG7K?p*Lw(^I4b*x~xjq z6nv0iwrT2IY++t5DCb7Nw9_H}_sm4TUP^{GMw2Ana3HL{ahia-G6%%fflF&d=> z$u7OwOMW8U+AQ+&u9Q;cAoaJ^!n&Y^n!)^P4kWgw+Fd0Xhh&q+6^NWRI zTL-3b-GKL)9Xrq++*%9a8i3&qVj#<^CKy!Mb4wC}L!9F%W`5~1N3uMDpoPmE1PTjRKu3du=bgBq2f$%qD5CRGKZ_N-!z z-c~X&yjoB#4pEKT!w_C~&H`ZJ5-jQuQ;KY-1ekEiD+?IQy$wHjagyNX z?#b^E=Gq}r$`#2Q6{j3=7|DhqnC&_EKdE$XoY}Jh{UMU^jY<=E1R&M~)b?!vEwrL% zh~hHZ36q{Bodu54ITPgK4Cv5e6U{TN%Uh(64sg(UA|Pg=hy_tWF5C#;xI-%?^ugIm zq-03KZwYsX1Gc04g)GBdzMu>WMIcfrwK9zHBwKkzGlTe!AO5xkK6NXd%$w#eji)zk zbGcg#6G)V>H5;^X*;RMkbvKUgV_GRlv4Y`q3AkMrU>uP`)NeM#TUD3u#LsiW+#94; zs0Lh0na>7MnQh`HnOE^HZdJ7_?d0Oiuq;9T{(s!tkcvfl!5`5c8)d!e{2iIxkj5b z91&l$Br+8k5?_i_2ipbgmV2gKGP3^w$OhkGh4ORs!wV|bDdNKm%@XB3Nie9fhOX!Y zYB2(O6bWH!;-w-XW>gbuY*Ru?&q-q#{8JW0mgXGF+(8@F%3MR%J=4MP9q4fy53G}f9U>}*6 zkc20SyOGeKM2ou|GpK4FsfwF7yMJ2%3PH~%ZQL)Va{|z5n)44bVb=Pc#FR6+o#H!s z`YY>FrAX(3Chq)1HV$MefoZu;{{WbtS*u4?AJ@2%L<4zJHObO|)kRZLWZlI>$_%1l zmPlmLwN9XE>0r9osl|H2vlwH|RAxlgWoZH?svV@qj3@|CXlLP_s|<)}jf}3<0?nov zuVuA5oGT%;)bAR6VkJk$YssqqDlOdc;Vgyz`CfW&A>oJK=zz*b4MRFyu>zagiYrxUCeN$td(~%gD~nf5|~UU@Jxmg?O2zPay1hi z@}w|$X~eM9cEM;mxL4q`utly+;dLM!ZY}_}iE9~3`IOpOMI(SMej-Dch;%NX@94DT z$s6Z1KCDx&f>J}|Q4$)0(jF%73PAAdwq9n$=2km$`(wYV2f>)zG&FMw)drB-MHM)? zU+HRjhAlK1eu^xEXu6Q%phoTm4nhT+%PVF^pxqAej-QfIOe|Rr8@7{*VxF-Rty2e4 zX;49xHNqOR*$pvu<15v{u2pD3YC1#{9~CoZ(_ty> zQABtJ93_CUvhf2|TV;^|L9Rrh@gKVDlTb?~)G+5zb;}UUbw58&?xkF>8TwSwxq0)< z@B5YS<|BtZp*VYdLBuqRrKQR#s;b3(t+Kkf1anTFKS-1Vp@yM)V{nIVVdF1M<(x-3 z`c*n_Hz`+wo``{PSNN9gqUzml`%nc^g9;k?2&@+vyG~uR|>Qptn zFcS&NRfI#+EXSaNDZqCe+XlpS0YGvguW{dtja<7MaIjD%)}Zu1MSgmIjbR}^Cvurm zn^$q(PV6o*A`QoNXfxG1JQ!{LQ!`+%~b5d;Q0V4GUn zJ|>RktC#_;tScf!VQbK0vE{eqE?1^@jOD--A&rl7P8(o`==n(GVLcC6V zu>7z&8@S~bCIUl?$mbCY=w#}4t2rFz_Pb{_ts@$y>HiN@TVaRaXgBJ%e zP8mfFquf5NGB7oxSqW!yVNd%yegz1^B4HRmPT%{Oe>{1E$GFl?q8~;+JW9pm#b%vF zWAIFMsA{7ar*MsoPl5&HP%tyIDYPQN;GU{jOT?SiKLjaZQCLJ9EhfNk2^?u? zZGSS#jJAM2n=!)t^FVs24lMAn_9)2nals&<=e{G+j@A?PTLKrZun^*<54?pKAXtm~ zBjgkX5uDLeE*6An_Ymkd#7MYvJ|;3{SMJf0&6z_qTe+I3g#q%@Q<}@j#ufv_H#E^G zVkQq!Td}m+@^RsXYO%qN^QfqdfryRDm6X4a7q+@we7XQE7F!dqnTkBvOf~Ux{WIg;tS?jN(i_E^xW&SQQu;+@Hck=~>xNyV1e8$>-8JK9(wAd)o z;-W#3SKNNlYik0e4E<${0Aci4F>d43R8Cc>e6-3<=>Gr=afN|h%TnYTi}A$XcvA^= ztVvpWQ0%p=$6V0bElS0PC!3C{W~h$Vm93sif)Fp3Qr|!9BNWJ%rEL~v3^}3Z62OKpFuvW~~-~Pz)Yi1aWoRnhAhyi#95Ca^s7OkQZ z-kSj8Qj!fkXBz-qUKvZ6Ts^QDtZ;F0k+L!IC@MUN>H$z&kqo7#P=fK{f&If@_7VAo z#xcOn#;7$gzz}u0kM`(_5T*))BAX$ou@$k)3!`?AY^it%H4!kx{b8IC1_(B%w-W=28abOM8}DJTailD5*1(A`)>R{>|4cR>8yiB~!dug{BlTz0siH}yuhk-&>U2AWg6pY=`%L5pO!VOy`#NVP%D`ud*a0h)UdL}u&8c?#Tvc* zvm|XW_w;cHpgFmLA}R*R44quQfv1$+M6IL1#!&*OIEql)rY!d)4OoJsCKLB}4@cav zXmNAV0){OxAYo82QMxQ7fo{AqeznLAh{WtaNRI$8{_CtnZ|SqECd)p5wX@77?F73eMF!vH9*UVg$#ehtizJ;7juFJ5bu3AexKI z8>28a+^254DpL+p>eOkvnnI}uXQ(}yG{dTEK+NExMq(CfL-{O*7%M@LV5pqfZn%`r zD^VHoqQHY@%py;WBu~AhT%M&nVinu>00uWB5O%?l0lDlV-Q_5Sna{? zsJTgTre?_i;KjBmtWIIqY}zmVm*~5qV7rflsdX2)K5^|o5|xk10ynVGLThb;@H@gT zMw?#hMyrLdtxf>DUlNu@i#G*Kjup9Wy3l;YWreDb;=@xAOAEMv6R_r~$=qJEY%#Si z>UAyPc*Sz&BP=|TdjW)?VU22{)Y=sz^bkVD(E}{s7>a93)pt;yd47|IY`IiXi&qUS z0NPpZg8}B*bzV~bS!8)oOsV&(mzNy`t@11wxi|g6MzBq)ZvOy?@!2c~ZTrf&ALXC_ z!~iZ40RRF41OWsA0|WvC0RR910RRyK0}vrGAOsRHK~WPTVIwj?aTG!`P=R9q+5iXv z0s#R(01iH5{{V8oJikRs4>nN&vaPj456GgTw5lWs2VbsJe&J#s5@nkvoGO;@f*HRP#l?;IaJ^SbulfP zzNYLtnP#!enQ>ND#J)DIh1(paj=eOzLm@2j&jUPa0yM*~gzMqYFT}$iY5cG`VcZ*v z1+!aG%P#niOW+f|-QC8Z%^hbJVVRM;#@e|50N8{63e?0F_B)lt3ZAD`ziBec_YV_f zmE=6l9bB+~iH<@E;DS>snqmG1T%bc5zYOy+#aXSI<$ec=;Q0*D*8c#j4ngqN0U3{1 z;c)oz<-Z?Ms8_ad{0Dvvd`E0^M~R`WWj*+3kGQFi982&G$H|$q60rxvFS)M%=gjZP z-8@d_mR{V3Vu^kkp4{*0`TNN6&8${xzq`ouNcoU?o}VkR@YF9K^#_k2hmw^rEngjc zs~MATk>a~AjaK0Xnd!4V$Bt!XL_Ciyx|oy)kE+X~Vp9D>3GAN8h;v)OmL$iHJP$RZVfMZ`wTjG}Ruyu{=Uh+JVW~aP&H+;+cfGC+M=FL>-97C0&wTe0 ziBr+MCyr%ir{9s|lLCXs)Z`e3>*3UUxMY!TU%~$X&6w4~wr8blD)H4g7;z}mfd+9VW*aD1jEsR`<`d~Y%0cQ>BpvL zr%Jy~How*Xf>JRtbW^=^|86)_XEQ=v1Vj;wtJzd%r#NF zpYn42%(Yye=1QI%n=tNLeZyNL?mEg-J@+!r+}lMx(CF~hKW)MBJQ#m>j;mNRD4QfD zGO~rhjA6ff8$8OM*yAh1ONQnxhlWW=%yH}%fw2wW1Ftv0ntZfO zKDStxIpPn24b~NY3pF{#xs*%03xH}$3!!+8=VZNbh5i>}4uZb0;`te(Ykyl*R?hXI=+`xzrkgdpqJ=QxdTc6}%P)6CUBYyE3VbxqlvB zs~f;$v$4+3;cz!oYKa0HtR1~RE2wz=Gc3aj{$T^)%ejXFupEI(X(4A5Dl_%&-QArWhjJbnHIonQf0>U*m#NeL0I?n-+*mUl(VBYs6>P&_9Qb&eu0zLD zCqK`Hj1FZ1G!qP0DXXoPZyXV5iw%ONj+?2S5X1mHwQ0}&Y;JflnKT3{k1Vk=5t`ag z8B-FXTuNcw3YR}qCltOTodg~%IPel>PgC6N^6d4$rqTU8ZSC{V+-j`5AoJz*GKJjD z9Hs?gdFtt!nEwDV#l@uNB{6mz*pyFb&tP=VXi6niV9Q;vV*aP4^!;a-!KxK-Vg1vR z3??w;+c}3U?Y12s2EK`zXLCGTN4SXdu+$iBbuKZNF8m%~T=e=bd0*6^DEKqPa7p-> z_>%aUJj{5#kB47G%(JGgbZ5z24_>*n-P^y(s(c8+Gw(;dt5EFw8~x1wWj?tDT4xw2Ty z{{XoowT|sXMjj@|Gt=p&H~HK?--#?pq+i|d#@0A$0)c0~50|26RJBKjZirwpF zVcZGoi^s(_xpxzr+PU8n=cmEB(K{@T$55QJ@h18EG}k#$oW<%~{<9pfRrH{KHn9x+=Kbc9p%nFAz z%3C7-+K2Y-c2uh;9I~w@crBsh(YJdAPWE`Mx%@*KCvzi-tBqvLxORR51-m*MPNl=A{q5B2Z>aTN1;yeOD~Qj-I*(C!gbE^z1~yMpQ*kalI}e#O%9>cw zZ*Zs+l2kaEOXPzuU}4i;$D{e%?Tg4V&#%4e!Gw8-(G!SwQ}H_|YbyARAEtfF2(w)G z4Sj6wN15Ex{@|GKcykZMN4fZi-s90a_f!gh(LWRN%&y?O+&aC2*tflP4w!IU$$N%P z%Zs*Hh|NN>NEaB!61NU&08I=RD+q8^ZE)r+wtc|c=$!-#W6Khijz#Q{!*>~ru?`^f zP`UO$iS=L1t_zQdO?^MPRlQe<`G+$@8peIW{x=4?kNcdkDwwuh<)UTSOt@gvamjYF z0MGia_c$AiD&TPm(9Somr?yn~tFTP)GAWw+P8napRWvYi%lMr~!`$_I1uX7~^zBI8 z%eiSfE@e$r!y9>(MEfod$r9OB2e@@V8+N-NO#E-tQGvm>dS*pUT{jG?%cu)IHa^mO zx1wZJ4sICE(i|kN*@<^Q3p4GEwquRVS}Hw8?%^+G=VKdT)f;tFqbYpX@eV+X)V`z5 z$Bd)XF?gwwMeVPp?=0>mJ_g!4E?m7p0*#mjjNoI<&astDu7CMDsBw!>dxuQUlENm~ z6^kgj++OAxjQq08?g`wp^9+y7u;%Bye&^~1PkuD>J>{(TgpoQDGA@Kyf001tUUGq0wM+k^kBN2mu2D0Y3mDfQ*RKNq6XI~QUn7^Hjk-6#~I-|zHaTCK3 zSYw0pJs7yrGr`6Ddj;R~F(oxJ#SVPNq1?cruBLd{ghXlf1;6EDD?|dOrc`jnUn3Q0 zA*Gu24GKo?02KmiX$x%2ODuW#@a`gRKgb1WfMYY%_&f2(2QG+cXEgLNIeDIedY+p2 zh7c+QaaifmOwU6bW?DI8(Z=R~330@E#v*X+Gr!|$WAe>RsH3>IzBsuwOg@|EDTbAB zPt%4I^y(N#3F&}V&N0AahZQw`oNYUamMtd2jgZVr%4LNXb+Py%^@x%xm zMDTm@Hw)P=YUvpi&21M={7gY&Q!(d-j|@2{XYjfvJ(E6wXRn!)Z2E0KP9mJJDld!T zFmJ`?YU!C2%=FwAWC>=?QTKyVtN2R_xVG)1h2~krz$!j3kq;G#WYyEMH;SJg2PA)h zRXYuA7KG8$I|voQJKMh(uX7^FucKw35v}n-iTnnyj}0>NCW%JJi|icv>Ksi>Jr9N1 z@26fm7_Ol(>&av0YeM>z=FJnU^(+%{(!FBj50G7a%5?z-+NsZg)9>#IGga zxlAnG=6zAf_zg4S{{VyZ_}-z!z^$v9=~+ZdcB5hPVnp$#9ZM>GS-|+8xA;FviVF_B z828{0oiQL>^t+^bg!+>4d~p^%`&D&5Jbs%R(>!z4#|{=}t^&jB50YtXVW`pEF|GTC z)wX$KjwVIS7i1tU?#Nmm@h9#ji`q+Ure^Toc{l`Zm z8(wCqmu}h~tY1+u%hV5;TRx)l;Ob?LShUP>$v`HamP|D3reln8E+l%IrQ*b=!v}BT?X|B#B|>b z0mYqVGWJKa!|8D;$siq*4bx}9AZ+eb?j=OrhU}|mSY9a-n%@S7W$?_slCQ(*@&5pq zjH)Iu=XNIH06Z_9$d?>a11beWe4*TbYcl=L_yWv=J$t`RtYiKx$r57J#fMSdC#D9* z$r1!dVUIC3b~npY96M@i{Yg$Z_+daZAhtbwBTM7!%d2LNUaSUT-p226j}xBap>y>y zgDzUZ$!R!&9z23%?e$OjhmIWaAKcV^{{W`_gc@MkUUyMVsGKtHda8Puuza$Q6J5PW z@#Bd0L%ES&${wFDrEd!RY%q3MBz^1WbefzKHu7H*T*NIJPA<;gtHFP7F^IvU;pZ zT+F?UE0^sKQa$;7Hl?1I;ta=T4M$HMK@w|!!?kqlJUJnrSm1HY)7Kmo?3iof-Ld+r z%dRF`!H1}te^UCX>T7*MXGF_aET|^FmbSJyN%)X0Q6eEUMw3E@9iDwfX zJo0EJKk)r!iv)ejBF#=QxcBWD30^5)87~A|#C@$Y^9Vs|4KT_L`zujhwLfZmZFWj3$=>ea zSzLKz?P#HyX2bZ57-dWw^2#}J;gQ69eY|NBq9+f9Y&3H|Z`;!SD5g!%Lm+UOo%;}GV>|z2lGW-JAmEuyzeq}|b9g_y}FKXiat=jqV$(qgOX6(O-Pdg0a zQ{jj$GZjY{;$&}&GHu(K^JDQkXUFGj<=C7=w{0A+0(@@lcm%55ndL;yV8XUeV9w2i zgHyQTJw#2g<+J_7vM&;@a!V+7XKKz{ms8;Jd)w*Pk{x(F`#Ci=vZ6e`EV3UvRV1cV z5Gpv)WYcM>**JM;4EsRpUo6S9{mP$d-Od%;svvHJ(BbYKcqFf5E~c`)P7Q+XmwO3m z_>VZV?*`fM5|9_EYc2{fMYbqEhi;JD?nVbw<)8Hs9w&C}_Xs=bAonmz-1DmVVAkgS_+=J}t&+WQDfuPrTg{Q>cK8-mjQL6MPO*QvP0A=D zh06V>;$1->QvAb$cE*gWYX1NfiQdb1{Y-fD&OJBta=B$n5>o~r-1Mx_XsALA9hA61 z-?^yp%+-H0uK1jMa}S2BCe3lOCM@}9$@rbw`IZ*LnNcZ8_n$MqO`d8z zlFEOn@_+S*?HS#_n7zS@63XfgOJ8Fvg?bbLY7K08rtSeAKLd z#A{-Gwow9nFXndas#F?+vz~S-sM!v#Jg4P3-MEG~(#}D1H4ku(9_?!!WY4+lO?o}B}1|5^-h}R!@ zcKG3`>6%%Y628)_$l#ipQ5?CpW%1>FkT(0zjf;6=)H}FN7#|1B?HK$snpssZLJ|GfPlTS?kB|Jwx+7N8Wmgo~Ne; wCTo^T%4IMr0t@+wxqqmM5h2?G>LIz9U7~(MNzY8)o812>`m+~2&G~arD_yan-*1j z7PU7w+V5}O*Zt$(o4k&k=j1$jo|Bx<`@BEz&*!-Mel-iYsjaT14#2|$0Pt{6z||B$ z1wcwnOhQaVNk3af5=M_7*jenSqssnSqIkjZ2u9jYE)=iHT1NEGQ}l zfk0S!WfY{v<%K06;@2O7M@B|Qaf9LxCFLD)b|!Z5|Id%BHUJGNK_~8s#{s~n!6Tr- zyXpY2;_j0O@9zWf-vbYyfRKoogp`c@2Cf74CIBCgfB>J6fQX2Y5Z5~x_dbA-hKQD3 zOquwW(L)jrFQ9l>d>$$1z3NXOi*KxJ3KNvHa_wF$K>4n!s62M%Iezs&hFm+!Qs*I$?5gD z@Bjq=hK2k4Z(#qoanaz$g-=LGKuB^uE~fQS3>2xtI`fPJ$y z&Cy&h&GsS`2UynZ`GJ#ir?~=xUQ?SdKkOCI$PjNb{4p5JSj2g6JSXr_=gZPL>zZ}c z?RQqitJAEHCUTBS1Tplz@4<%~Y@@U-|#g~+>+3B@g^FEV>Uq*yGC)L}P z$Z5&PMJ34wtj7yvpd=B2+w4c`Z{OoG(otH|F~w5@8Uyl?e1J_Oy(4~`G2kz66tRAe z*YhOw5i0)f`~}!#8wzJnF)5)?@iY*8xx_|lK!6EDjxGXF?sHlBuIdUfs&%>P zF?|InuMoHb9MFa|8N%f~&94A)QC9%?_9ZjL8p-7c)ZT^F6`-Rl1QW#j*(-~_bpwqq zf2ZOzjKO_?kYq@s{)-F4;^~V??4QI@%%}+|8jxG*N@4M9kt1u>HPpRWPx!kQFbs&L zG?p{8Q)m1YW)=MPcWPr|g6l+-(?@Z+eR*;o({!l=-|~ovA(+6|?PUrot@Dk7q1yVS z$jDb+vgB>`4N=qWpQs8KSiz{Wc7JlGMNhmzWbsd2>oF&C+w+$`SUS@3Fhkk`KVIBW9QkFR8)-D{YysA z<0O^r0F2Y8O{)XC!cX7#evIX1CGGUPxS-zFr#d|*E1%qa>2-MpD0a(!)6KL#)zB~E z>>Koa82TUxF705lE@7fR%kZ@(@oP5bw}hpqVg_w!${JD>C8MaAjOx zgKv;-)F~yM&{QNjTg)6r@fivJ`;mFj)O1?H4@qhhxJ0RFoCac!Gq!J>OMfaB6!pVj zcYkaL-0&U@QR8~J@uBoqcCZ^%GkRg#3z@BFJgJ!axSz%@N{)fFRT$wBi7IeMtFYbK zfNL5peA$Mp>RCKk&Qb?IM!W$94IdR6>32go)QSp=%5X*n23*f||I*^KWDx|?vr&(L z*Px+Q+w`no^Pho5|34WPA#SjOa3UZ%01j8yQKHI^8bT3X+m;Z}*nt56=PSShxOrR@ zT)yNI@FW4A4$}c2pa6bAs-%BLhBGw$>+5ErBXV>hc<_Y_>xZ^ifbQm;t?|w7)Atrn zt^hmRyk}VMf-b1%32Fa9mBz8#6@U$P1*j};UckM?z5E5=kB!LLB?>uRNAUl?IlccT zWK2kW1*^qMgN&Ko#p=xQqDgZPigJ-EcRnK{9Dm**f2RRrq~c?cei|vSKNkxav-sW_ z#L2t(Tp+|SwAm2q=jVBwXs8yHV$B+H(23?r>6!_Ts#xNaq7+$}syIEveyFm=w z(8%NATlksP8&>i=sqsJD%HB$RUv1_t-J*0^+1kzjuocQM*UVd@BV0H_^#=Q^f=Zpz z*~mI6=1GTM#^a{)$fh@u=4^||&1MZ(PUT%8FYf~G+D{X?81SKFORj%5Lu<^DcI3m8 zq=&Ct9-(#($Twn35ZNZQLW_#=Rpt?X*`n*pBzZ-~@)aw_jWo2LmP_xs%fuT70f76;y(|G+uF^cujg=h|QN z&o$EKe~YJsn>Mw$ndVH+ScD({0rqH!ruAo8H|BmwlUdWK_+SK*5*PtA(m^J46m6;r zOQZ2hFvO`$gXSFJU+7cgx*E<(CoX9Ly-JiwEPC}cqq#=S`xx3cJ&B+@8Y*Z`zr1z7 z-uqkoMO0;;ZEjgyn`1_w+4NZKhr^!*TwhjN++56u>nd1#yZ_X=(WjEwJKf+_d2MC3 z>X`B+bmf`z6@VE-EiQBW&dQpZFy}8u^4?odgkerek81L3j_6Co=il$A*K^)`zUzAm z%cbA2M*n20fjKC<`j4g+a#X}O6ad#%bnji8#y_)MI!oq7#Mm~t<~me|l*0qg_P?}_ zVdR5PYgKsllN88?Ul(_%;m`^2c|0NMpfL9l4xxy<|D8{tOJZb{+R2{E?1CTk@Htl9 z?RYe9^Bpz3H>X1~?69aeab2H?Kvpni>uxgL4!vA?TI&6B zB}PN$T-I`N7*Np`OmYPP8Efnq=nKWx=$EhKPb4jA7`7%eb}Qu?Jy7^C&@F2=a9;P_ z;7{WX%kfhTwyjsOH^}^3xD^eY4mCEGK@zbv!d!1mt1-Af*EAB#W*+C-dUFdiMVqgk z6JPmDYo{{xIkLuzv`BHcfAt2l8hvSgHaH35Q9+%DmU!_(=~aFrM=As`>E>Hv!jJ~4 zR2)NnZoL8+@ebDuAlk`z_|z z!C0Bwqi~Y^DjL4hA{j4}AXD0l9kWAC+9W$9KQVhT%BvXl!0bb<Xx4rp97u-3% z`TZhQvO#CcrF%rsCbUh0NE)-ICXE1S$4qv5%k%*iDVzjqegru`N*#*sFCc;Q%XFZ zxx-af{6jePnpH~U+_vnvGR>#EW0T2W*32q%c@)}=qb)@}RX$a2a#g1YS&Zc8BS{S|;6+&WW0wj(z2 z{a~Ad!X*XA0sGzDgT|#IUY~2>*xd$dycb6V*JW;=^5qxiUPD&yka8Iw7_7(rmvmk) zj(7jE1s5ET@BFh(*KIrY=rx|pn*sc1Ms)CWbtaohq#z>HfV4QKYxz4SWe zsrc1-WQsVEHv99^xr1RB0*MpdsZR;hXC(zHQcLvRQYHpln(AasP@hn~LiLHfDP|hl zF=L#_ogW&AzF`lPOWS}l+-pxDJg`$0Yplvz6?WhNS;thSPJ zy3kSYR*LR0^Pi9|bMJi%v~!K-F#z47R=Ed;c(eP^jl+z-Mxci2IE9Sp%$UJupX7z; z==ts)FJAibe~ur|7su=IP#|LeNPgE$F`6S1U&JPa+?FfIOa(2r;EsQ>cN9=Y@6c5{ zj3nZiDWHO7v)tZB!tn9M21iot3eafE244Ojr6@Y$P^sFG+Xx2jSIB#YEKxo-k$LC$ zMz#+-ec@ywQ)eYRRSYiELOh4D+h|~;n*CaUuw53OItBG(#G|N*Fqev7HZ#Q5PFY_Rlt!b$7TRYZftk9K>LwhirG_4;N(s}J70H|5Nvnj5g6)aMK8 z8)4qoCuOI}z2ciH@LrlF>Bi~%rIX<{_ly=64@z_Y^jGW&CQyJ6E6Q1+J&&09`dxBp z1HImidN;#ptZ8b?R(;3E564B{OsjO0(T(MG1%PLcMr_uKxAZQ<=XfM+eZ14JhYy7AWZBep!*qpAqbyuO+@;O z(>07yqn3#8OIu|Z%SLe%6qXf zp3B#GW2QK!>DG(2@guv2nQ&ZV($^QAm{+R;yh^M){I4&@FkaRg{B%eXZGQD@ zQ~@&ZL6z7Giy%pVIfIcJekcw-Om438<)^*IF#)`kR$r58-{PvDz%@Bj2~+jY$g*Dn zV|8n07SFnH&IyhxiQNyaH9}e$8qR{-yfne>MJa4d!|_NXohW1ia*M40!7q(vNNLC$ zhSmFl71nys>ZcXlWNzPztckDKw&9s2=yVtAnF;*%bljsF59#&z#fu4$DT2-YHL|+3}(NV*{X$<89LMfx4iZhJ6!jXK17D>j20lB*B?0PViJ@|Wz-0+u$IDP(C zKY#nzZCO2_9uF&Ih$x`Sc=YwF)O>SQ$6d}u!}!F&NrcGF<8Zxuo5NCfH5V{GKHAjG zYeG8T9TGjInH96tHH+!G5qcft)zMLo?2GdSLYjJ_sC*K1pJ~xM=~7dskpV&<&0M3z zM17GLp9*<7k#DE)LqVCRqq-~O8GS5zn(=2&p+ue-?SiO1{Tpm&rQly{3I#w4;+YJD zS`^E1u}4zy>hWPodC7Ay#ba@eUSG8F%KIpWSk7b1yQ9r47k40zGhfWx(8!vkq1tYP_D2%d-j~lp@>(%f`*Ku#{GT;Oh=QXU-lKq}5# zQV+u3th$x1sJzyOlW6nZx%NAf82BJuK>wV#`H!m*VVd@RxaO{BHRMi>B`}%G(?u&Mb;naw>k=dYkNd0Wir=bGF8+fXA;2 zwA^RiD>ld6zB#2;%g8`L?|wK=N@8F=_WJVKuF}lw@xtaT<=woHITl&+H$C4Oq(W*D zZ-|*jgV#EiQ9&j&5B+O=OLH(>mW}-a-Y$4jG)622@Z<)YVmNb^4H?(lmudnFPGUL}wI7I-Spb1SF4CiHIYT>N0Xrc+5)I{oL;D!>sb2ji(u`E79dTH9f-WHxAzo+XUIslEDcYES8%|cqar@bROx+&k3 zKsTo@c5ymq<&5R>mKP^BiC`v0BNl`Ed|}&+USpfC%3vI=bJXd6sQV#?Bj1rHn~^6c3i)-g0=Qgk1E#_& z6bjP{js1q8%^qWu$(;~9aB@_lIyd6j)D1JfDdm)D9?+@%;OqV0TOt|Da-93+un&-% zvt=F%Js2@6vGX!R{A>Y}yT(LVGI{_`gdMLgkXy>PYGU}k5S`Nsa{ls$_bZY1hbOY7 z-zHh?sb6~xD}9xKan~fUaM=h9YV!n{N=b@N=TQ*56=$ZJQ%ZWVv_F^6m= zMX;73u3PhByRfWRRX^s)hV!x69i!y|KTwr(oPtlum$y7rk5oNaMnCely6H)GMXAQN zalDt8Dbl~a`6M<)0k1+*23X;H^9KR(y!wJgeGs-Q^;vw)Exfbt;SW4<9J5U0zJJvG z;>8`Fj>>?zy~mo%eOS|?NTH5F_VO?;x|;iU*||Qityz-odr zirQEvHvb|5N@H+wXiyXtzw!}6%$T5)5Jx%s>5IkMkuDIYP}-PLqsg=g++6@B?@1RG zD)8N`{sZpbMn3XgI4X;$$l?o9-O#?^?@%&;;4XGQ8V||{rSLMU{xY9#PhVfXvc&9$ z+Tp=6ze-Oqm_MM>)UNsnJT6on}*5k+$DXEs7Y z!47vo0=uC%Yq(>9Tf!z1BoHcWkd7qbjv=&>xh%ZnDSCbM^DT1EuV7lZb#cxT8l>s0 zfN-$m8!hZnUs4p&PPU@iHY$(Vk7<;F$4}=lck;1aZ1Dr*Vi@<(%CPNz0)p=0;+RK| zFBA~?nzQ@4K{09otJxTE6c*^S$!MVcF3>6_i6WY6qRQ;pGZ^@0tr@>EFQvIKCIF*A zV%{*cz0eq%P5rHLT|gGOqli;ZPX}l5gFh%TW<7@aosf z6oSMn%Nz6AOF_ov4K*MUHEDqP_!yS~;Ft{bg(~q3!qLjEfC;LwNX~~OmO=OQfD--6 zH0UR(7FL_brog)2<&k5noCpwk=%~qEOZ*~}UGld{1c`=NsfagbUEn#jd(;XDQ<-hp zzFM`-O%v&g@dvMJWMP#TpFxRUm({PF(qD)<)?5yas=lY_rk{mnxGRCAfwO?p!n3ZL z(k)dxfw;Q|_X6cjVznPiGmQ(5nyn%N20#`J)gW;log;*@u1(UM^&p&r*i{4Z=0(Gv zo|*kj=5zL2)jT!Z-ac?S3vf?G)7QOzt4rFv9m+WBn)Ry<`tj`PExgCt)L$eiF55m{}Vlm z@foyDw3Ke(nlughat#Sy$)doc9g0}UL5Y8Hc5R0&PSkbMWnJ&IxMaYPOoLp4dwViC zgb&~b9}zyLaf*G8BeG~75JA2i&mU44_mwS>Xm7n(Liks}exFNY@N0|jL# z^PQMwoMEGb1JF$GH6NE2t_+$8Ez@?LS9F@x{xux>NnA}$TeZpKbw$GNOYGRM+~W(Ou0wGz9}aAdrvv|mKom%ZyKZx{3wV_=p4=9`V`}GV&Gsqb8Tw_pn{58+Au?Nl!_s zO9P$&CY64kWMR&$^@6elBl84&SZa;On2<$rz8M5#?iTIoy)->u0e>oVoZ1so)#T;e zHeqo5qar+aVvJsi;m`C2$&cl>MPYPQWCw^hRhIU5+Ez6;#$s@H5MgCQL-_qsb9E0G4=SqT$4r~WU3nH zB0=t&#L$@@LlukwV>)I%pq%0_xlrLV>vC_K3uQP8T@y51$$bH+M*K2+CbQBiq)cCfX%oA4}xpa=O9ZtU6iW_lI{CtWqNlqM^))ST!srNd0Da+ zH6vwtG8Gev&(eVx_tZ2sZLm2MQw1CS&I%N~%r{=Gi=U4WIK_<%c71;PrPN|Ryc?_D zA8*VhEqYKcCOYekS`ooExlxqLE$)LN>6*N_Pp9P`1exmzLRPjpn1=lo1Wn4Y74!3i z@%kzhqa71^jXF0Er1RyMv#7rwb5xX3_?E_Yh&N>t+?RTdao27IOIPR=j8_(SjvPnG zTmjTVju=nOQ~SS_hHR7^R2h0*Myy;!T$(M@hI}!^4hyg zrlFU=&8m+CfQT<=W3D0N4DV;kbuQnHerbr$t~CrAx}S0l6W5aAUtGDy7F@ye(I-yV z2Lk@M{wOB*1IR%di=9&9Ip3?h*46@Qjg4@q!~HirBuXlG;cAKDVm260{xHTt&+ms5 zKSoS2vha~SzDfk0Jb4o8Rjl^cS`{yzF*yzR-Y-@}{$!7!(Vt!K#h@T_uRvj7T@b~@ zo8$b8ZEX7eZ)Q|PM0c7OrVmP|T658iMXEs~Zzy|;MR~II!LR!7Q;2EYOo=d)Qh-Wt3j`G&@({^EP)*#mlzwwsdjq=4Ui z*#I>b^2JMLyk20pX6yz=#=?PoZK<9L(VX(K3TqrsMM48D(8!i9EAp~_)t}-MZ;=Wk zNgy(I(&v$tQ7_RXc-9+OqD5w`Ty_E;ukzustZ%p^L1&T7fHJAJG~i91k_X>|h8gTK zP2+ps?G2+oyAG`BE&M?Xetb<*WAJVt$qo{{A^$T=Sl;Ca^3}eggVX zqQ^IHvPmw0zI}E_qk3t2GAnX$hT_3N33dhnsr|GZKg*8x=6slFl~980iZu+_N_SxL z$1H_uF2elAGe0_K#UxEvAYX9Tf1ut2wE;IG+XG@-OkL@u8|TX^V!6_kyD>i6FfeU% zH@DRy%Hg45{Pak3bXDUwJ-(N;woepZsn6Sw#!nP+iZLA)MLl3XFq<9_Q=NtB%cg5* za5Q|37_QH9Q<=DwzO754r=2UPzw7hCfy%p^C6>N&2`{c;*!FqWBu zyCLVYSB#G}K3~>U2^qbdTPa zp3Au^!MKo)h0DpR%U3pqo0qS6&mx*@_sXeHf4823Y;HK|^ZNYQpAnqLA;XxE;-v!T zsafxuDBb_amH5w|ud{5}aM=gBDxK24#mIm)Q+6DW|C>Evuk>8I?(ULF{aLbmpe{`F zN7S}i(G|b~F`#1Rc>T&{r9PwvO1Cd9{8GSyTl#s_=z$b)T>j1%T>b?v2LZrW07=iq z&jhD0XHw#`fPM6UwG@81%NP%8t{dqQr-afWwf_?)6!>!YbBXG=^*w68%Z+4gn{m){ z_?77B>DRu8Ws#{ltr<3=ZSzW*_KsnW1z8i@w3EH3kIqY@NY17nW9Nq7>q&^o4B%1_ zSZwbIKCCnO+L&UncH!2axTNk0r?Iz+?ag%sTkpl2?WG)oTq3#`QQm0#uzQr<1Vyg! zDQ9}%53mmrCR=m94znpr0<0UKwMUMJQ)R-Q$g<`RKH9f=iZ$Cd3`ixE-h@JaGbC}#xdY7k zU89OIo5eNcfZSe6)gENSTB2die7N=_?2T@7dgan|(p++P(sd$eKBKJJS1(-$$ZrXb zdAt`EN0Pt5l_{!(ECQ0tECnDh@l5@@TNCtc6>kf=+{#)a>7lQ@ShS=uG<{r-3&inO z1&a&`W?cyOHQg6_cXaM3thMkL(xxpk?U;Wd^kAmcf#|x(e8Sua^r;QI7ZqXZAPD+1l9vX3TQ| z-B1tW$LdS-?;bBpB~%N(G9%+n)YWWPS-xd3Y4d>TA>wH=OzEw@XmxULPx?3iS(9e$ z+Zq6fH_cAhy=<6__ilJ~rlq|&HUrwE%hp#F0{=F0uBh$z zk|s~-dx%!|8>12%^{4dfu~8gdg(IH($GoAU%JG}9^Wzr}UUVvO?q%fBjH&Cr<}zk| zl)+}Y58}H6B${d~5#dOC_2&G*g#pb<4I?1`rt~uNaIxoVe(xA1+q3aRtaTFLm#ax^5(9-I20A-NMx&=pZ>JC4SdaH(FDC2F z1Va|a6n~b7?pO=9!T;vi{mr$z&M{OXx-LT8LWI@x*|H`?^1fv^lW_5hYx*Es@y)oZ z`v~zWhs=DW$RT=B{Q^<@E2yGzIoGRUI8HUn9_VH89qdp3tt*wjlNZGEN&S;r_+mf- zh&M&S^;z`>?!ck|B!WAT|9cQv0J$jNRv$ac|Kyeazv|wyM#jHwgRCRB)xsBuvHj%uLv=H5mDEw65MXfvToV0?!l{N`rTFHEr(F1xU>3m^Zfy;hLuRwg4Xwb;O zcvdadXcs5sH;=X~()Xup`KWQquM)YOXEGK|##JyeliU@c?PTWlvN8&q{b%TpB z0+Q{5hm{fEgkOVbo%WOa{NH&?V_Z0yyv!czk`IOjR9MO;RLi^YkGdIl@DEcMtKG^4 z@fjHvY4f)k;*f$5mt+{0R)VL4G#U?OAz}yCnk7I+G)v;OkbsJf{(F7q^awh59Dj0g zje}Wu?YIpey=@m$e25GY4hVEPh(%&mjTe!Ps@m? z`NpQcXAX84racW2SqC#IM!iQ?ZNzSprc*Gxu{Rp>W=*(&z*5E~$dbM|6Fm_0NOMe4 zs_(>PLHa}wR-dGqd#nHc1F!h;!r`Seu&%`1DZ@T9`4Var=$Xy4ux8`d#fX@w}M4wu2+CZD)-%T zW!sfFKBzO3=GqTqqb9|YOk^5-?+=TMgE|GhKu*3V(b#Z%z5E#` zUC!bf^-$0JUR$Pp3hzbVbDc_-s)tUZ}#%?hK!_Uc?$=OUgC2KO5Xy+F-Y^OfJ6 zGey1%GDUYnDtNka5%nkeX`TIqnZt%|ybWW$a;&p3_Z5oj+TpqAI3;BhvR&6*eU>UnT z$$5Ff>JodlZ$T!e&fnM&dA1*1EV4cHK+rDAETp#c;`Hvw?W0aQ{NViP{PN%$){|Af zGY7@JL8AwPo4^NVo^{Gs00kn}M=vge$OVZi$gRlB55Fs}loo8pT>%D^%^nEtD0LxH zr`WFm+2OHu?TSmeB@ZCtwYeBv%9g8T$bhoWMUnf(so-shcdaAh^B*=}@D>dhB5m>&yk;T%hTad=l#}(7Vun3{eT=YS(Y-uSA!bfvCHu#^BNb+}`$Toh z@?!FEiZ2e{p;5$_r|o3x(8+m`{c-;!K!2VMb86}QXQpPIOOM`mRf^(XxizAwt3GJQ~41ta_+ zwry3Uj0t(xtodty6|n%VvJC&<@w4N&$Csd zi|A77lZU6sO`J7s+510EWpFbB z=1=&dh(6ahKMp4knp_76mAr}RmF9I#g$O%v5iV#RQt~N`cnOd2*WQoPT_>EicGXH6 z)r3l%zYSSI7ko**3_=b5Q11l{oIzUmMlVf+QMM=RA^d}#j4lLnzj5&%1wB^Bkdt*c z4WM19#O0SOz~5fcOTF5_Yrs76;}#i5jYN^M1KXav)xAB?P&c4EvSpG z#mg2PIqTP_b6xG;DgS<0L@*i3e*?0wm?aIbIwG>XzIMqWD*Mi4z@C}TPpUUN2P zYF2)irIc<(<6&0&ha1l|D{fGA)nf*<+ch3hl71MgEqjb=WYtbI{u<2RPF}^T{VpOb zkz1Re3yrso!4oY4hU1(nBzSt5+}{N+DR-DbLP=byJ@ti|_2DSxlXtr=H2%8&Wr<(o zqqaa9Pcd(H%X==(zOKt=COEq#%!F4&{PvZS?GTOP8RwjN=W(#Mm>9)>#_;(`a+-u# z&nlSk)|c}FyBu($hjOKR1T^z`>p`!}e-PhuE8l%WKG0GtTxf@K@-~+*FnrM$A0anx62-7_upz -### Viewing help : `help` - -Shows a message explaning how to access the help page. - -![help message](images/helpMessage.png) - -Format: `help` - - -### Adding a person: `add` - -Adds a person to the address book. - -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` - -
    :bulb: **Tip:** -A person can have any number of tags (including 0) -
    - -Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` - -### Listing all persons : `list` - -Shows a list of all persons in the address book. - -Format: `list` - -### Editing a person : `edit` +### Add new tutor details: `add_tutor` -Edits an existing person in the address book. +Add a new tutor and enter their basic details. -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` +Details: +* Name +* Phone Number +* Email +* Address +* Subjects (multiple allowed) +* Hourly Rate +* Years of Experience -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ -* At least one of the optional fields must be provided. -* Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without - specifying any tags after it. +Format: +`add_tutor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT... r/RATE y/YEARS` -Examples: -* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +Example Input: +`add_tutor n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/English s/Mathematics (Sec 3, 4, JC) r/60 y/6` -### Locating persons by name: `find` +### List all tutors: `list_tutors` -Finds persons whose names contain any of the given keywords. +View a list of all tutors known. -Format: `find KEYWORD [MORE_KEYWORDS]` - -* The search is case-insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` - -Examples: -* `find John` returns `john` and `John Doe` -* `find alex david` returns `Alex Yeoh`, `David Li`
    - ![result for 'find alex david'](images/findAlexDavidResult.png) - -### Deleting a person : `delete` - -Deletes the specified person from the address book. - -Format: `delete INDEX` - -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index **must be a positive integer** 1, 2, 3, …​ - -Examples: -* `list` followed by `delete 2` deletes the 2nd person in the address book. -* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. - -### Clearing all entries : `clear` - -Clears all entries from the address book. - -Format: `clear` - -### Exiting the program : `exit` - -Exits the program. - -Format: `exit` - -### Saving the data - -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. - -### Editing the data file - -AddressBook data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. - -
    :exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. -
    - -### Archiving data files `[coming in v2.0]` - -_Details coming soon ..._ - --------------------------------------------------------------------------------------------------------------------- - -## FAQ - -**Q**: How do I transfer my data to another Computer?
    -**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. - --------------------------------------------------------------------------------------------------------------------- +Example Output: +``` +1) John Doe +2) Jane Doe +3) Peter Ng +``` ## Command summary Action | Format, Examples --------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
    e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` -**Delete** | `delete INDEX`
    e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
    e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` -**List** | `list` -**Help** | `help` +**Add Tutor** | `add_tutor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT... r/RATE y/YEARS​`
    e.g., `add_tutor n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/English s/Mathematics (Sec 3, 4, JC) r/60 y/6` +**List Tutors** | `list_tutors` From 6c2dd9613744c9d629edba4c91f9a8c8b59a271a Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sat, 27 Feb 2021 04:19:22 +0800 Subject: [PATCH 020/762] Update target user profile and value proposition --- docs/DeveloperGuide.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4829fe43011..9aa1147292e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -236,14 +236,11 @@ _{Explain here how the data archiving feature will be implemented}_ **Target user profile**: -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing to mouse interactions -* is reasonably comfortable using CLI apps +Tech-savvy secondary school students in Singapore who to need to search for tutors and manage their tuition appointments, and prefer CLI over GUI. -**Value proposition**: manage contacts faster than a typical mouse/GUI driven app +**Value proposition**: +The demand for tuition in Singapore is escalating, especially among secondary school students. A large amount of time and money has been invested in finding tutors and managing ever growing lists of tuition appointments. Currently, there are limited number of apps and websites that cater to this need, particularly in a streamlined typing oriented CLI. Therefore, this app aims to assist secondary school students in streamlining the process of searching for tutors and managing their tuition appointments. These students can search for an ideal tutor based on their personal preferences (such as subjects, expertise, years of experience, cost, availability etc.), and cut down on the time taken tracking their favoured tutors and tuition appointments. ### User stories From 6eda3a0af419a6d2ae0d994a6419ce089d41be66 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 11:27:12 +0800 Subject: [PATCH 021/762] Update UserGuide: view appointment, delete appointment --- docs/UserGuide.md | 199 ++++++---------------------------------------- 1 file changed, 25 insertions(+), 174 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..72903508245 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,192 +1,43 @@ --- -layout: page -title: User Guide +User Guide --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. - -* Table of Contents -{:toc} - --------------------------------------------------------------------------------------------------------------------- - -## Quick start - -1. Ensure you have Java `11` or above installed in your Computer. - -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). - -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. - -1. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
    - ![Ui](images/Ui.png) - -1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
    - Some example commands you can try: - - * **`list`** : Lists all contacts. - - * **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. - - * **`delete`**`3` : Deletes the 3rd contact shown in the current list. - - * **`clear`** : Deletes all contacts. - - * **`exit`** : Exits the app. - -1. Refer to the [Features](#features) below for details of each command. - --------------------------------------------------------------------------------------------------------------------- +Tutor Tracker is a desktop app designed to help students search for tutors and manage tuition appointments, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. ## Features -
    - -**:information_source: Notes about the command format:**
    - -* Words in `UPPER_CASE` are the parameters to be supplied by the user.
    - e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. - -* Items in square brackets are optional.
    - e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. - -* Items with `…`​ after them can be used multiple times including zero times.
    - e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. - -* Parameters can be in any order.
    - e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. - -* If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
    - e.g. if you specify `p/12341234 p/56785678`, only `p/56785678` will be taken. - -* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
    - e.g. if the command specifies `help 123`, it will be interpreted as `help`. - -
    - -### Viewing help : `help` - -Shows a message explaning how to access the help page. - -![help message](images/helpMessage.png) - -Format: `help` - - -### Adding a person: `add` - -Adds a person to the address book. - -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` - -
    :bulb: **Tip:** -A person can have any number of tags (including 0) -
    - -Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` - -### Listing all persons : `list` - -Shows a list of all persons in the address book. - -Format: `list` - -### Editing a person : `edit` - -Edits an existing person in the address book. - -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` - -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​ -* At least one of the optional fields must be provided. -* Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without - specifying any tags after it. - -Examples: -* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. - -### Locating persons by name: `find` - -Finds persons whose names contain any of the given keywords. - -Format: `find KEYWORD [MORE_KEYWORDS]` - -* The search is case-insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` - -Examples: -* `find John` returns `john` and `John Doe` -* `find alex david` returns `Alex Yeoh`, `David Li`
    - ![result for 'find alex david'](images/findAlexDavidResult.png) - -### Deleting a person : `delete` - -Deletes the specified person from the address book. - -Format: `delete INDEX` - -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index **must be a positive integer** 1, 2, 3, …​ - -Examples: -* `list` followed by `delete 2` deletes the 2nd person in the address book. -* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. - -### Clearing all entries : `clear` - -Clears all entries from the address book. - -Format: `clear` - -### Exiting the program : `exit` - -Exits the program. - -Format: `exit` - -### Saving the data +### 6. View tuition appointment details: `view_appointment` -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. +View details of tuition appointment -### Editing the data file +Format: +`view_appointment INDEX` -AddressBook data are saved as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. +Example: +`view_appointment 1` -
    :exclamation: **Caution:** -If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. -
    +Example Output: +` +Tutor Name: Chloe Lim +Appointment Date: 2021-4-20 +Appointment Time: 2:00pm - 2:00pm +Location: Bedok National Library` -### Archiving data files `[coming in v2.0]` +### 7. Delete a tuition appointment: `delete_appointment` -_Details coming soon ..._ +Format: `delete_appointment INDEX` +Deletes the specific appointment at the specified INDEX. +The index refers to the index number shown in the displayed person list. +The index must be a positive integer 1, 2, 3, …​ --------------------------------------------------------------------------------------------------------------------- +Following the list in 5), -## FAQ +Example: -**Q**: How do I transfer my data to another Computer?
    -**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder. +`delete_1` --------------------------------------------------------------------------------------------------------------------- +Example Output: -## Command summary +`1) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library` -Action | Format, Examples ---------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
    e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` -**Delete** | `delete INDEX`
    e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
    e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` -**List** | `list` -**Help** | `help` +`2) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library` From 4d1db6666f79038cd16c9f269e7dbda5a76e7035 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 11:57:13 +0800 Subject: [PATCH 022/762] DeveloperGuide: update use cases --- docs/DeveloperGuide.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4829fe43011..1ba3082ea35 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -249,16 +249,12 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` + | Priority | As a …​ | I want to …​ | So that I can…​ | | -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| `* * *` | user | View my tuition applications | I can keep track of the tuitions I that I have applied | +| `* * *` | user | Delete a tuition application | I can reverse the tuition application | -*{More to be added}* ### Use cases From 8010d2093edb6b0c96e8a2f26ca3572816b3bdf9 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 12:08:37 +0800 Subject: [PATCH 023/762] DeveloperGuide: update use cases --- docs/DeveloperGuide.md | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1ba3082ea35..f721f08aa0f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -258,16 +258,33 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Use cases -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) +(For all use cases below, the **System** is the `TutorTracker` and the **Actor** is the `user`, unless specified otherwise) -**Use case: Delete a person** +**Use case: View tuition application** **MSS** -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. User requests to view applications +2. TutorTracker shows a list of applications + + Use case ends. + +**Extensions** + +* 1a. The list is empty. + + * 1a1. TutorTracker shows a message that there are no applications. + + Use case ends. + +**Use case: Delete a tuition application** + +**MSS** + +1. User requests to list applications +2. TutorTracker shows a list of applications +3. User requests to delete a specific application in the list +4. TutorTracker deletes the person Use case ends. @@ -279,7 +296,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 3a. The given index is invalid. - * 3a1. AddressBook shows an error message. + * 3a1. TutorTracker shows an error message. Use case resumes at step 2. From 20b1ac9502fc2b6c3ca204ae50691758c663986e Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 13:47:43 +0800 Subject: [PATCH 024/762] Update design details - Model & Storage Update user stories Add use case for view applications & delete information --- docs/DeveloperGuide.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f721f08aa0f..c25a41d5bf3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -97,14 +97,14 @@ Given below is the Sequence Diagram for interactions within the `Logic` componen ![Structure of the Model Component](images/ModelClassDiagram.png) -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) +**API** : [`Model.java`] The `Model`, * stores a `UserPref` object that represents the user’s preferences. -* stores the address book data. +* stores the Tutor Hunter data. * exposes an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* does not depend on any of the other three components. +*
    :information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique `Tag`, instead of each `Person` needing their own `Tag` object.
    @@ -117,11 +117,11 @@ The `Model`, ![Structure of the Storage Component](images/StorageClassDiagram.png) -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) +**API** : [`Storage.java`] The `Storage` component, * can save `UserPref` objects in json format and read it back. -* can save the address book data in json format and read it back. +* can save the Tutor Hunter details in json format and read it back. ### Common classes From 60794c2802051487f87ac8f2e200c1419106df12 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 17:14:17 +0800 Subject: [PATCH 025/762] Add Name.java, Gender.java , Address.java, Email.java, Phone.java, Location.java under Tag and Gender.java under Person --- .../seedu/address/model/person/Gender.java | 59 +++++++++++++++++++ .../java/seedu/address/model/tag/Address.java | 37 ++++++++++++ .../java/seedu/address/model/tag/Email.java | 36 +++++++++++ .../java/seedu/address/model/tag/Gender.java | 36 +++++++++++ .../java/seedu/address/model/tag/Name.java | 36 +++++++++++ .../java/seedu/address/model/tag/Phone.java | 36 +++++++++++ .../logic/parser/AddCommandParserTest.java | 1 - .../logic/parser/EditCommandParserTest.java | 1 - .../address/logic/parser/ParserUtilTest.java | 1 - .../storage/JsonAdaptedPersonTest.java | 1 - .../testutil/EditPersonDescriptorBuilder.java | 1 - .../seedu/address/testutil/PersonBuilder.java | 1 - 12 files changed, 240 insertions(+), 6 deletions(-) create mode 100644 src/main/java/seedu/address/model/person/Gender.java create mode 100644 src/main/java/seedu/address/model/tag/Address.java create mode 100644 src/main/java/seedu/address/model/tag/Email.java create mode 100644 src/main/java/seedu/address/model/tag/Gender.java create mode 100644 src/main/java/seedu/address/model/tag/Name.java create mode 100644 src/main/java/seedu/address/model/tag/Phone.java diff --git a/src/main/java/seedu/address/model/person/Gender.java b/src/main/java/seedu/address/model/person/Gender.java new file mode 100644 index 00000000000..b770a87ead3 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Gender.java @@ -0,0 +1,59 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Person's name in the address book. + * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)} + */ +public class Gender { + + public static final String MESSAGE_CONSTRAINTS = + "Gender should only contain alphanumeric characters and spaces, should be female or male, and it should not be blank"; + + /* + * The first character of the address must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + + public final String personGender; + + /** + * Constructs a {@code Name}. + * + * @param gender A valid gender. + */ + public Gender(String gender) { + requireNonNull(gender); + checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS); + personGender = gender; + } + + /** + * Returns true if a given string is a valid name. + */ + public static boolean isValidGender(String test) { + return test.matches(VALIDATION_REGEX); + } + + + @Override + public String toString() { + return personGender; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Name // instanceof handles nulls + && personGender.equals(((Name) other).fullName)); // state check + } + + @Override + public int hashCode() { + return personGender.hashCode(); + } + +} diff --git a/src/main/java/seedu/address/model/tag/Address.java b/src/main/java/seedu/address/model/tag/Address.java new file mode 100644 index 00000000000..639a038bbb9 --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Address.java @@ -0,0 +1,37 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.model.person.Address.MESSAGE_CONSTRAINTS; +import static seedu.address.model.person.Address.VALIDATION_REGEX; + +public class Address { + + public final String address; + + /** + * Constructs a {@code Tag}. + * + * @param address A valid address tag. + */ + + public Address(String address) { + requireNonNull(address); + checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS); + this.address = address; + } + + /** + * Returns true if a given string is a valid tag location. + */ + public static boolean isValidAddress(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.tag.Address // instanceof handles nulls + && address.equals(((seedu.address.model.tag.Address) other).address)); // state check + } +} diff --git a/src/main/java/seedu/address/model/tag/Email.java b/src/main/java/seedu/address/model/tag/Email.java new file mode 100644 index 00000000000..9c0ea245d6e --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Email.java @@ -0,0 +1,36 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; +import static seedu.address.model.person.Name.VALIDATION_REGEX; + +public class Email { + + public final String email; + /** + * Constructs a {@code Tag}. + * + * @param email A valid email tag. + */ + + public Email(String email) { + requireNonNull(email); + checkArgument(isValidName(email), MESSAGE_CONSTRAINTS); + this.email = email; + } + + /** + * Returns true if a given string is a valid tag name. + */ + public static boolean isValidName(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.tag.Email // instanceof handles nulls + && email.equals(((seedu.address.model.tag.Email) other).email)); // state check + } +} diff --git a/src/main/java/seedu/address/model/tag/Gender.java b/src/main/java/seedu/address/model/tag/Gender.java new file mode 100644 index 00000000000..db8c70c6c34 --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Gender.java @@ -0,0 +1,36 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.model.person.Gender.MESSAGE_CONSTRAINTS; +import static seedu.address.model.person.Gender.VALIDATION_REGEX; + +public class Gender { + + public final String personGender; + /** + * Constructs a {@code Tag}. + * + * @param gender A valid gender tag. + */ + + public Gender(String gender) { + requireNonNull(gender); + checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS); + this.personGender = gender; + } + + /** + * Returns true if a given string is a valid tag gender. + */ + public static boolean isValidGender(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.tag.Gender // instanceof handles nulls + && personGender.equals(((seedu.address.model.tag.Gender) other).personGender)); // state check + } +} diff --git a/src/main/java/seedu/address/model/tag/Name.java b/src/main/java/seedu/address/model/tag/Name.java new file mode 100644 index 00000000000..a8eb3f23ffb --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Name.java @@ -0,0 +1,36 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; +import static seedu.address.model.person.Name.VALIDATION_REGEX; + +public class Name { + + public final String TutorName; + /** + * Constructs a {@code Tag}. + * + * @param TutorName A valid tutor name tag name. + */ + + public Name(String TutorName) { + requireNonNull(TutorName); + checkArgument(isValidName(TutorName), MESSAGE_CONSTRAINTS); + this.TutorName = TutorName; + } + + /** + * Returns true if a given string is a valid tag name. + */ + public static boolean isValidName(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.tag.Name // instanceof handles nulls + && TutorName.equals(((seedu.address.model.tag.Name) other).TutorName)); // state check + } +} diff --git a/src/main/java/seedu/address/model/tag/Phone.java b/src/main/java/seedu/address/model/tag/Phone.java new file mode 100644 index 00000000000..39497d0361f --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Phone.java @@ -0,0 +1,36 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; +import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; +import static seedu.address.model.person.Name.VALIDATION_REGEX; + +public class Phone { + + public final String PhoneNumber; + /** + * Constructs a {@code Tag}. + * + * @param PhoneNumber A valid PhoneNumber tag. + */ + + public Phone(String PhoneNumber) { + requireNonNull(PhoneNumber); + checkArgument(isValidPhoneNumber(PhoneNumber), MESSAGE_CONSTRAINTS); + this.PhoneNumber = PhoneNumber; + } + + /** + * Returns true if a given string is a valid PhoneNumber tag. + */ + public static boolean isValidPhoneNumber(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.tag.Phone // instanceof handles nulls + && PhoneNumber.equals(((seedu.address.model.tag.Phone) other).PhoneNumber)); // state check + } +} diff --git a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java index 5cf487d7ebb..ea46b68e5ae 100644 --- a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java @@ -34,7 +34,6 @@ import seedu.address.logic.commands.AddCommand; import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; diff --git a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java index 2ff31522486..f0656d3795c 100644 --- a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java @@ -38,7 +38,6 @@ import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; import seedu.address.testutil.EditPersonDescriptorBuilder; diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java index 4256788b1a7..5a161002a0f 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java @@ -16,7 +16,6 @@ import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 83b11331cdb..3d532ddd244 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -14,7 +14,6 @@ import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Phone; public class JsonAdaptedPersonTest { diff --git a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java index 4584bd5044e..cf1b97c600c 100644 --- a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java +++ b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java @@ -7,7 +7,6 @@ import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index 6be381d39ba..a4c93e86bcd 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -5,7 +5,6 @@ import seedu.address.model.person.Address; import seedu.address.model.person.Email; -import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; From 65116b7de746f424be66e3c2262a6a0ad2370544 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Sun, 28 Feb 2021 18:11:04 +0800 Subject: [PATCH 026/762] Delete given Model & Storage class diagrams --- docs/images/ModelClassDiagram.png | Bin 34656 -> 0 bytes docs/images/StorageClassDiagram.png | Bin 15519 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/ModelClassDiagram.png delete mode 100644 docs/images/StorageClassDiagram.png diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png deleted file mode 100644 index ffd17662d413cb5497ad5ee30a22ccf8e2752c1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34656 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 VV{aEtEx>_4qQa6dvjsIh{tv0|2c!T1 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png deleted file mode 100644 index d87c121682002293418d2595c4001d975944da8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15519 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%0DYIvfSrFV9-nlc z?G^Uf0%U^_)PAHh1rPO@hSQ$$AeYD@tIdkg*42|V z@Y_jIg3>M*gT$cV-w^OhL=#O5Vk>FBA+|21^HCB-&~@|g7ucgJlMMq5fy=b2Z&0d| zccISP6kMj}2xULjrJk4!+9LVhAX*ZO*9sOge^OqR9yhAt-_U)zUna4VarF{vebn__ zU#)4x#>J8qs8i>#1l&gBwkB3dz3})w^j6q-IB}Wj z5zHkG+%;GlXz9rVSCUKZak|CFW@zvC$y)f*2P(i&pW44qU{8??x@6;o*mL+6Gwv{l zd!tPJ7wWYrb^`u|1UTMa5>4P!Ibsc{rRM?(9utB&Oy&h@UnF18s+LlK))79wfslci z#DmH9%RAxDd~3`$?v&}$x7VAg)OY0J`Z;lSY59WbnNyiZnyi@C{KI@)&>8XtdPLUh zwi_p`gdlE{;^MSXOO`~)kKP9s^Le(11kkJ;F+%G#;^L6BCZC@IK?8{x~LFPlYvUqy-mES68%i+9xSvMvOtTv&1lT1IlseJTO! zeNF<_)u4))*?C=-SAd4AK{jC@cA2)L_ylVT(f;_Nj5n6Jrpxo`LJCe|TV$}vB>tk1 z*I>WQnbF$XTs5y6;Y%(1AzcLf)Z?czH?|0dBH7|Sd!+TWg?h0XD9W^Uu`Q5wZ)UKH zSm|@OZ@~6!%*PM?!v@JH2Ty!?1}*b|Z{FCo5@mPZq#)-4-bajOZsbo-DkT90L>^1; zIJ8DuqD?uspsGtuk}{O*0mFk#R`+88+Oaya549Yy5V++%iCPDhS@+lOzpOL! zXLy;Np&4=bfQXEv-vobP@d5Y5jplkan+f^sin?t8i4+7<0p-B0=K< z^c|J$fc^Bj;;wwgV6ppo(pU=(+#R0YqV>4|ZzBZ%2^#gDPR{e7kg_f>aq{&|Yp9b! z35me4nAyaif`Ien6jlQ=@m^%wVc-H1tnTZ-0%B}@Z&rYjBIqZe0xEyH0ZI9=D-C%Q zp~<`W0TZ0&?FHYDW?5dx*!X7&D9}1oR_^A$Et6JT?&~xK;a}fxo58SPxVIYQ?t53) z Date: Sun, 28 Feb 2021 18:14:14 +0800 Subject: [PATCH 027/762] Update design - Model & Storage Diagrams --- docs/images/ModelClassDiagram.png | Bin 0 -> 68613 bytes docs/images/StorageClassDiagram.png | Bin 0 -> 16253 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/ModelClassDiagram.png create mode 100644 docs/images/StorageClassDiagram.png diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a73c6ba0de237382dd937994a925f9a1246d07f1 GIT binary patch literal 68613 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

    nCMzT*A_6lBXsCDRKOC8`bP=n75+p(t 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 literal 0 HcmV?d00001 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa3ecbbd8d104a1b70d20986e61112a1db2cf78 GIT binary patch literal 16253 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 B6Nvx- literal 0 HcmV?d00001 From 28482b1e0e3fe033301e801f3bac78ec66e01b0c Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sun, 28 Feb 2021 18:49:17 +0800 Subject: [PATCH 028/762] Add use cases for adding tutors and listing tutors --- docs/DeveloperGuide.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9aa1147292e..f347ec6c51a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -259,30 +259,32 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Use cases -(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise) +(For all use cases below, the **System** is the `TutorTracker` and the **Actor** is the `user`, unless specified otherwise) -**Use case: Delete a person** +**Use case: Add new tutor details** **MSS** -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. User inputs tutor details. +2. TutorTracker confirms that tutor details have been added to list. - Use case ends. + Use case ends. **Extensions** -* 2a. The list is empty. +* 2a. Tutor details already exists in list. + * 2a1. AddressBook shows an error message - Use case ends. + Use case resumes at step 1. -* 3a. The given index is invalid. +**Use case: List all tutors** - * 3a1. AddressBook shows an error message. +**MSS** + +1. User requests to list tutors. +2. TutorTracker shows a list of tutors. - Use case resumes at step 2. + Use case ends. *{More to be added}* From 9091818dd5c02d17ce297cffcdcb9e2fe9546649 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sun, 28 Feb 2021 18:59:20 +0800 Subject: [PATCH 029/762] Add user stories for v1.2 --- docs/DeveloperGuide.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f347ec6c51a..2133fca578c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -248,12 +248,20 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | | -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | +| `* * *` | User | Add new tutor details | I can keep track of a new tutor that I have heard about | +| `* * *` | User | List all tutors | See all known tutors | +| `* * *` | User | View details of a tutor (subject, background, age) | Determine whether I should choose this tutor | +| `* * *` | User | Get the email address of a tutor | Contact tutors directly for queries | +| `* * *` | User | Add tuition appointment | I can keep track of appointments I have made | +| `* * *` | User | View my tuition appointments | I can keep track of appointments | +| `* * *` | User | Delete a tuition appointment | I can remove canceled appointments | +| `* * *` | User | Check my own tuition appointments list | I can know the timing of ALL my appointments in order | +| `* * *` | User | Filter tutors by their subject discipline | Find a tutor that caters to my needs (academic) | +| `* * *` | User | Filter tutor by cost | Find a tutor that fits into budget as well | +| `* * *` | User | Filter a tutor by his/her name | View tutor's profile | +| `* * *` | User | Filter tutors by their years of experience | Find a tutor with experience within the range of my expectation | +| `* * *` | User | Filter tutors by their available timeslots | Find a tutor with matched tuition time | +| `* * *` | User | Filter tutors by their available location | Find tutors in a specific area | *{More to be added}* From e5c7482c237cfad473f69f58d0bc7e2c86d4b284 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Sun, 28 Feb 2021 20:53:44 +0800 Subject: [PATCH 030/762] Update About Us with emails, roles, and portfolio links --- docs/AboutUs.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 29e50e107bf..97d2eb92e20 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,7 +5,14 @@ title: About Us We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). -You can reach us at the email `` +You can reach us at the emails: +``` +kingsley.kuan[at]u.nus.edu +vinleon[at]u.nus.edu +jared_lyj[at]u.nus.edu +e0425411[at]u.nus.edu +zou.yuting[at]u.nus.edu +``` ## Project team @@ -14,42 +21,42 @@ You can reach us at the email `` [[github](https://github.com/kingsleykuan)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/kingsleykuan.md)] -* Role: Developer +* Role: Documentation, Testing ### Koh Vinleon [[github](http://github.com/glatituden)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/glatituden.md)] -* Role: Developer +* Role: Integration ### Lim Yong Jian Jared [[github](http://github.com/jared98lyj)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/jared98lyj.md)] -* Role: Developer +* Role: Scheduling and tracking ### Winnie Ho Yi Xuan [[github](http://github.com/winniehyx)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/winniehyx.md)] -* Role: Developer +* Role: Deliverables and deadlines ### Zou Yuting [[github](http://github.com/yutingzou)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/yutingzou.md)] -* Role: Developer +* Role: Code quality From 20a84265534875e56698df079a960d866e484680 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 28 Feb 2021 21:06:34 +0800 Subject: [PATCH 031/762] Add yutingzou.md --- docs/team/yutingzou.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/team/yutingzou.md diff --git a/docs/team/yutingzou.md b/docs/team/yutingzou.md new file mode 100644 index 00000000000..e69de29bb2d From c8bd39f6cf414f83a7338aa0feb81596d7d6b686 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 28 Feb 2021 21:07:37 +0800 Subject: [PATCH 032/762] Add yutingzou.md --- docs/team/yutingzou.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/team/yutingzou.md b/docs/team/yutingzou.md index e69de29bb2d..ae281b77e75 100644 --- a/docs/team/yutingzou.md +++ b/docs/team/yutingzou.md @@ -0,0 +1 @@ +Hi I'm Yuting, a year 4 Business Analytics student. I like to cook and explore nice food in every city I visit :) \ No newline at end of file From caf1d70251fa8a886b3de9ec409d0a22645b24d5 Mon Sep 17 00:00:00 2001 From: Koh Vinleon Date: Sun, 28 Feb 2021 21:38:44 +0800 Subject: [PATCH 033/762] Update yutingzou.md Add new line in the file for the CI check --- docs/team/yutingzou.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/team/yutingzou.md b/docs/team/yutingzou.md index ae281b77e75..60cf12706af 100644 --- a/docs/team/yutingzou.md +++ b/docs/team/yutingzou.md @@ -1 +1 @@ -Hi I'm Yuting, a year 4 Business Analytics student. I like to cook and explore nice food in every city I visit :) \ No newline at end of file +Hi I'm Yuting, a year 4 Business Analytics student. I like to cook and explore nice food in every city I visit :) From 044ea5d794d12d01b983469b66505bfcf11c412c Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Mon, 1 Mar 2021 01:21:16 +0800 Subject: [PATCH 034/762] Update add_tutor in User Guide to match new requirements --- docs/UserGuide.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1648d9f9a4f..26b53b8fca4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -4,14 +4,11 @@ title: User Guide --- _**Tutor Tracker**_ is a **desktop app designed to help secondary school students manage tutors and tuition appointments, optimised for use via a Command Line Interface** (CLI) for a fast and streamlined experience while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Tutor Tracker can get your contact management tasks done faster than traditional GUI apps. - * Table of Contents {:toc} -------------------------------------------------------------------------------------------------------------------- - -======= ## Quick start 1. Ensure you have Java `11` or above installed in your Computer. @@ -56,6 +53,8 @@ _**Tutor Tracker**_ is a **desktop app designed to help secondary school student * Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
    e.g. if the command specifies `help 123`, it will be interpreted as `help`. +* Parameters in triangle brackets must be supplied together in order as a group. eg. with ``, both subject name and rate must be supplied in order. +

    ### Add new tutor details: `add_tutor` @@ -66,16 +65,20 @@ Details: * Name * Phone Number * Email -* Address +* Gender +* Location (multiple allowed) * Subjects (multiple allowed) -* Hourly Rate -* Years of Experience + * Subject Name + * Hourly Rate + * Education Level + * Years of Experience + * Qualifications Format: -`add_tutor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT... r/RATE y/YEARS` +`add_tutor n/NAME p/PHONE_NUMBER e/EMAIL g/GENDER a/ADDRESS... ...` Example Input: -`add_tutor n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/English s/Mathematics (Sec 3, 4, JC) r/60 y/6` +`add_tutor n/John Doe p/98765432 e/johnd@example.com g/Male a/John street, block 123, #01-01 s/English r/50 l/Sec 3 y/5 q/A-Level s/Mathematics r/60 l/Sec 4 y/6 q/A-Level` ### List all tutors: `list_tutors` From e0021417127df03eb3cb4fea686645498d30465c Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Mon, 1 Mar 2021 01:25:05 +0800 Subject: [PATCH 035/762] Update User Guide command summary --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 26b53b8fca4..f0663314af0 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -113,7 +113,7 @@ Examples:
    Action | Format, Examples --------|------------------ -**Add Tutor** | `add_tutor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SUBJECT... r/RATE y/YEARS​`
    e.g., `add_tutor n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 s/English s/Mathematics (Sec 3, 4, JC) r/60 y/6` +**Add Tutor** | `add_tutor n/NAME p/PHONE_NUMBER e/EMAIL g/GENDER a/ADDRESS... ...`
    e.g., `add_tutor n/John Doe p/98765432 e/johnd@example.com g/Male a/John street, block 123, #01-01 s/English r/50 l/Sec 3 y/5 q/A-Level s/Mathematics r/60 l/Sec 4 y/6 q/A-Level` **List Tutors** | `list_tutors` **Appointment** | `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]`
    e.g., `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` From ef6ad13143cf2e971ff707435dbeae7e93b257ba Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 1 Mar 2021 12:39:57 +0800 Subject: [PATCH 036/762] Info about me: Winniehyx.md --- docs/team/Winniehyx.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/team/Winniehyx.md diff --git a/docs/team/Winniehyx.md b/docs/team/Winniehyx.md new file mode 100644 index 00000000000..dd90cbffba0 --- /dev/null +++ b/docs/team/Winniehyx.md @@ -0,0 +1 @@ +Hello, I am Winnie, a Year 2 Computer Science student. I like to spot fashion trends and operate an online shop that buy and sell clothing. \ No newline at end of file From b4d3a837b6d3d9cc6dd412eac6cc5bc2e61594e6 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 1 Mar 2021 13:18:45 +0800 Subject: [PATCH 037/762] Fixed typos in DeveloperGuide.md --- docs/DeveloperGuide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c25a41d5bf3..a9b1815bffb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -102,7 +102,7 @@ Given below is the Sequence Diagram for interactions within the `Logic` componen The `Model`, * stores a `UserPref` object that represents the user’s preferences. -* stores the Tutor Hunter data. +* stores the Tutor Tracker data. * exposes an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. * @@ -252,8 +252,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | | -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | -| `* * *` | user | View my tuition applications | I can keep track of the tuitions I that I have applied | -| `* * *` | user | Delete a tuition application | I can reverse the tuition application | +| `* * *` | user | View my tuition applications | keep track of the tuitions I that I have applied | +| `* * *` | user | Delete a tuition application | reverse the tuition application | ### Use cases @@ -284,7 +284,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli 1. User requests to list applications 2. TutorTracker shows a list of applications 3. User requests to delete a specific application in the list -4. TutorTracker deletes the person +4. TutorTracker deletes that specific application. Use case ends. From bfc60ff9404b527db5bffe226cf57563fff22313 Mon Sep 17 00:00:00 2001 From: Koh Vinleon Date: Mon, 1 Mar 2021 14:16:18 +0800 Subject: [PATCH 038/762] Update DeveloperGuide.md Remove preconditions from Use Case --- docs/DeveloperGuide.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c388b4eb139..2a6ad5c86bb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -315,7 +315,6 @@ View the list of personal tuition appointments. System: Tutor Tracker Actor: User -Preconditions: Appointment list must exist. Guarantees: A view of the schedule of tuition appointments. MSS From c69291090a2c4a261361e670f577db3457789d9d Mon Sep 17 00:00:00 2001 From: Koh Vinleon Date: Mon, 1 Mar 2021 14:17:27 +0800 Subject: [PATCH 039/762] Delete Ui.png --- docs/images/Ui.png | Bin 41796 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png deleted file mode 100644 index 480ac052be091725e65039f4b143ef9e66ddce2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41796 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
    ;fu9vicNld}I&~MbpqWP~d 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 From a57d35abbe75918b5973a84c186d76cddbef2e41 Mon Sep 17 00:00:00 2001 From: Koh Vinleon Date: Mon, 1 Mar 2021 14:20:45 +0800 Subject: [PATCH 040/762] Delete Ui.png --- docs/images/Ui.png | Bin 41796 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/images/Ui.png diff --git a/docs/images/Ui.png b/docs/images/Ui.png deleted file mode 100644 index 480ac052be091725e65039f4b143ef9e66ddce2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41796 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 From 881c4c29ba4b149511b7e5c0e2b5883eb66c9849 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Mon, 1 Mar 2021 17:45:59 +0800 Subject: [PATCH 041/762] Add personal portfolio for Kingsley Kuan --- docs/team/kingsleykuan.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 docs/team/kingsleykuan.md diff --git a/docs/team/kingsleykuan.md b/docs/team/kingsleykuan.md new file mode 100644 index 00000000000..6839f21a2b7 --- /dev/null +++ b/docs/team/kingsleykuan.md @@ -0,0 +1,12 @@ +--- +layout: page +title: Kingsley Kuan Jun Hao's Project Portfolio Page +--- + +Hello I’m Kingsley a Year 2 Computer Science student. I’m an aspiring researcher and content creator. + +## Project: Tutor Tracker + +Given below are my contributions to the project. + +* **Code contributed**: [RepoSense link]() From feed92160363fac07fb4854079350a1ba21da394 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Mon, 1 Mar 2021 17:54:53 +0800 Subject: [PATCH 042/762] Updated user guide to include view_tutor command --- docs/UserGuide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..e37c8f92edb 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -190,3 +190,4 @@ Action | Format, Examples **Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` **List** | `list` **Help** | `help` +**view_tutor** | `view_tutor 1`
    e.g., Name: John Doe
    Phone Number: 98765432
    Email Address: johnd@example.com
    Address: John street, block 123, #01-01
    Subject Expertise: English, Mathematics (Sec 3, 4, JC)
    Hourly Rate: SGD60/hr
    Years of Experience: 6 From 5764aa4e058e03245afdbc8e032b58838428f6e9 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Mon, 1 Mar 2021 18:17:27 +0800 Subject: [PATCH 043/762] Updated developer guide to include NFRs. --- docs/DeveloperGuide.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4829fe43011..b233a388d28 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -290,12 +290,30 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli *{More to be added}* ### Non-Functional Requirements +**Technical Requirements**: +* Application should be able to launch in any operating + systems (Linux, Max, Windows) with JDK 11 installed on computer. +* Should be able to + run on both 32-bit and 64-bit systems. + +**Performance Requirements** +* Response to user command (add, delete, update, retrieve) + should be visible within 2 seconds. +* Should be able to hold at least 10000 persons + and appointments without any noticeable decrease in loading time. + +**Quality Requirements** +* Interface can be used by a user with no programming + experience, i.e., user should not be expected to key in complicated commands or + logical statements to get a desired output. + +**Process Requirements** +* Project to be updated with one new feature/improvement from + each member each week. +* Updates will be pushed to each teammates' individual branches, + where PRS are made to the master branch. -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. -*{More to be added}* ### Glossary From ae097b3e1b97b76857cc67e3e3cbb4baeb033055 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Mon, 1 Mar 2021 18:33:24 +0800 Subject: [PATCH 044/762] Updated johndoe.md to my jared98lyj.md --- docs/AboutUs.md | 8 +++---- docs/team/jared98lyj.md | 33 +++++++++++++++++++++++++++++ docs/team/johndoe.md | 46 ----------------------------------------- 3 files changed, 37 insertions(+), 50 deletions(-) create mode 100644 docs/team/jared98lyj.md delete mode 100644 docs/team/johndoe.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1c9514e966a..051b65f3aa4 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -24,7 +24,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/jared98lyj.md)] * Role: Team Lead * Responsibilities: UI @@ -33,7 +33,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` -[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)] +[[github](http://github.com/johndoe)] [[portfolio](team/jared98lyj.md)] * Role: Developer * Responsibilities: Data @@ -43,7 +43,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/jared98lyj.md)] * Role: Developer * Responsibilities: Dev Ops + Threading @@ -53,7 +53,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](http://github.com/johndoe)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/jared98lyj.md)] * Role: Developer * Responsibilities: UI diff --git a/docs/team/jared98lyj.md b/docs/team/jared98lyj.md new file mode 100644 index 00000000000..f91cc980b3f --- /dev/null +++ b/docs/team/jared98lyj.md @@ -0,0 +1,33 @@ +--- +Jared Lim's Project Portfolio Page +--- + +## Project: Tutor Hunter + +Tutor Hunter is a desktop tutor finder application that links a user with multiple +tutor in the database. The user interacts with it using a CLI, and it +has a GUI created with JavaFX. + +Given below are my contributions to the project. + +* **New Feature**: Added an Appointment class to represent the relation between + tutor and tutee. + +* **Code contributed**: + +* **Project management**: + * Managed releases `v1.1` (3 releases) on GitHub + +* **Enhancements to existing features**: + +* **Documentation**: + * User Guide: + * Added documentation (format and example usage) for the command view_tutor + + * Developer Guide: + * Added Non Functional Requirements + +* **Community**: + + +* **Tools**: diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md deleted file mode 100644 index 1f1e9e6f6db..00000000000 --- a/docs/team/johndoe.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: John Doe's Project Portfolio Page ---- - -## Project: AddressBook Level 3 - -AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. - -Given below are my contributions to the project. - -* **New Feature**: Added the ability to undo/redo previous commands. - * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. - * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. - * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. - * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* - -* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. - -* **Code contributed**: [RepoSense link]() - -* **Project management**: - * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub - -* **Enhancements to existing features**: - * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) - * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) - -* **Documentation**: - * User Guide: - * Added documentation for the features `delete` and `find` [\#72]() - * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() - * Developer Guide: - * Added implementation details of the `delete` feature. - -* **Community**: - * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() - * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) - * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) - * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) - -* **Tools**: - * Integrated a third party library (Natty) to the project ([\#42]()) - * Integrated a new Github plugin (CircleCI) to the team repo - -* _{you can add/remove categories in the list above}_ From 3c0e0c9ddc47c1edcf04f50ec447638585b72d14 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Mon, 1 Mar 2021 19:01:36 +0800 Subject: [PATCH 045/762] Add About Me: Koh Vinleon (glatiuden) --- docs/team/johndoe.md | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md index 1f1e9e6f6db..21950d9c84d 100644 --- a/docs/team/johndoe.md +++ b/docs/team/johndoe.md @@ -1,46 +1,24 @@ --- layout: page -title: John Doe's Project Portfolio Page +title: Koh Vinleon's Project Portfolio Page --- -## Project: AddressBook Level 3 - -AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. +## Project: Tutor Tracker Given below are my contributions to the project. -* **New Feature**: Added the ability to undo/redo previous commands. - * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. - * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. - * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. - * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* - -* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. - +* **New Feature**: * **Code contributed**: [RepoSense link]() - * **Project management**: - * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub - * **Enhancements to existing features**: - * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) - * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) - * **Documentation**: * User Guide: - * Added documentation for the features `delete` and `find` [\#72]() - * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() + * Added documentation for the feature `list_appointments` [\#2]() * Developer Guide: - * Added implementation details of the `delete` feature. - + * Added introduction: [\#5]() + * Did cosmetic tweaks to existing documentation of Design Section - `Architecture`, `Design`: [\#5]() + * Added user cases of the `list_appointments` feature: [\#5]() * **Community**: - * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() - * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) - * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) - * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) - * **Tools**: - * Integrated a third party library (Natty) to the project ([\#42]()) - * Integrated a new Github plugin (CircleCI) to the team repo * _{you can add/remove categories in the list above}_ From a7628a8046c624c2a268bd99b2a2967e4ee90e2b Mon Sep 17 00:00:00 2001 From: Vinleon Date: Mon, 1 Mar 2021 19:04:44 +0800 Subject: [PATCH 046/762] Rename file name to glatiuden.md --- docs/team/glatiuden.md | 24 ++++++++++++++++++++++++ docs/team/johndoe.md | 36 +++++++++++++++++++++++++++++------- 2 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 docs/team/glatiuden.md diff --git a/docs/team/glatiuden.md b/docs/team/glatiuden.md new file mode 100644 index 00000000000..2210f7889ee --- /dev/null +++ b/docs/team/glatiuden.md @@ -0,0 +1,24 @@ +--- +layout: page +title: Koh Vinleon's Project Portfolio Page +--- + +## Project: Tutor Tracker + +Given below are my contributions to the project. + +* **New Feature**: +* **Code contributed**: [RepoSense link]() +* **Project management**: +* **Enhancements to existing features**: +* **Documentation**: + * User Guide: + * Added documentation for the feature `list_appointments` [\#2]() + * Developer Guide: + * Added introduction: [\#5]() + * Did cosmetic tweaks to existing documentation of Design Section - `Architecture`, `Design`: [\#5]() + * Added user cases of the `list_appointments` feature: [\#5]() +* **Community**: +* **Tools**: + +* _{you can add/remove categories in the list above}_ diff --git a/docs/team/johndoe.md b/docs/team/johndoe.md index 21950d9c84d..1f1e9e6f6db 100644 --- a/docs/team/johndoe.md +++ b/docs/team/johndoe.md @@ -1,24 +1,46 @@ --- layout: page -title: Koh Vinleon's Project Portfolio Page +title: John Doe's Project Portfolio Page --- -## Project: Tutor Tracker +## Project: AddressBook Level 3 + +AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. Given below are my contributions to the project. -* **New Feature**: +* **New Feature**: Added the ability to undo/redo previous commands. + * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command. + * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. + * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands. + * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}* + +* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys. + * **Code contributed**: [RepoSense link]() + * **Project management**: + * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub + * **Enhancements to existing features**: + * Updated the GUI color scheme (Pull requests [\#33](), [\#34]()) + * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]()) + * **Documentation**: * User Guide: - * Added documentation for the feature `list_appointments` [\#2]() + * Added documentation for the features `delete` and `find` [\#72]() + * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]() * Developer Guide: - * Added introduction: [\#5]() - * Did cosmetic tweaks to existing documentation of Design Section - `Architecture`, `Design`: [\#5]() - * Added user cases of the `list_appointments` feature: [\#5]() + * Added implementation details of the `delete` feature. + * **Community**: + * PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]() + * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]()) + * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]()) + * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]()) + * **Tools**: + * Integrated a third party library (Natty) to the project ([\#42]()) + * Integrated a new Github plugin (CircleCI) to the team repo * _{you can add/remove categories in the list above}_ From 606ea95fb2702e69e86db7ab723aeea15af13692 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Tue, 2 Mar 2021 00:06:58 +0800 Subject: [PATCH 047/762] Updated ModelClassDiagram & StorageClassDiagram --- docs/images/ModelClassDiagram.png | Bin 68613 -> 76063 bytes docs/images/StorageClassDiagram.png | Bin 16253 -> 16547 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png index a73c6ba0de237382dd937994a925f9a1246d07f1..ae7de4ddb89d9c2d61c0e2b0d284fff3f63e2e6f 100644 GIT binary patch literal 76063 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�+Js@zSH7RRwbqT8CM-?lFy>3 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 R8JMeuN6?D30Tq5s?!QdVFY^EZ literal 68613 zcmaI8Wk6MJv@J|`Y+AaJM!GwtK{`dcLAs@pMiG#dQlurMOS-$eyIbmec;9o*J@-Z|Qa@2#PscPHBYC{i0)9INJL&2%8BL_8cDLZK~cBn6(Vvj{# zSkDbVCXl^YTIL*fTDo3HT^+j3x?aGkn4O*FfD?zniOa$8AF)0E1G0(H`$}AcQr*-v z&f~aQOWY(mO2JhXvQ3L5@jf06M+$H4bgCpf9FrQ$<*E58M|$8jBm|CA|Zv1Um z5w&bBt~lgVuvrQPQV<0V0=U`p?a@A&1c5i=U(mF}sfE6}K3!Gk;Bc#VT~!Ca!~nl6 zkkG*-vm0yV$0n+_^%+R(P6xk$q)JEqdmHKY=f|XEmkUD%_mOx9o&>xR(m?^fxKP?x zM`t9Jn=6}3Tm#bKHu~wymrZbA@V$wQiUABnbl^#lK8kZFK93JOS2bpg>vsx89;_%^ zSr3yopQMb1gbYG56;e)PPksq5`v1B!V@TLfhGgs^%ietO>?Hp@dpV&{ih^I$04x|~ zP$oK#)Fjo}SblOirfuq1ex=loI;0?a+4t5={|-EneB$3BFrt8~|IZ;vO|I=t{A@5V zi1j$mBqHty*T$1PUr-1UFVZ&7;EBoKcikQ99gfRK4x;BRh{6}wFkCWd9>_N{qw=x_ z^9%paVvTvCk6JrB8$?nd_5SBD|N9DPP$~)u*Cj?rX9mN9asJ0b{;?jT`Q9v_np(nR z|4td)3<+I_DuPkgRW-i(Gma$$POW)kOzYo;qZhSW_-7?GaR1v9fU$G)@SL4(-ju%@ zqC=9%8L50;Nijcg9;vBfo5 z$Q&0VlRy6WF`oB&(zA^nY-CARds@QhwU0Op?)qm{rKAJ@hkaR~C$#i?aCrXiDo6U~ zuV3k4%k_#IRw3n}oOI`ZH4dm+TS zG0bXIUEz7>{;&NWlK2@yM&`W(F=EIPac2D`g^2KOU3=oK0z|4#41CS&v!&&y$zP_- z_MB!BT8s6}gPv993Jd+oay{BbTOyViF8E)5&L1EoMz2ghRo1-$r{xNS13_n;{-BgN*_rdj6Sa=Zy4IamjXQ)2Hv%iARQF`T+ zn}wXI`cZU#N1tQUwu3D&`bVDZeCyZq(Fie1DWKojt0ne7Gm}xrwoHUl>--FrYGENM zA=!{2$a~X?>SAm>r10-L(8PuP{8`-SJMeIaytc93EJu$)=MPFYGUbMQ;FQy;IJ(Y=h)*SFg=d! zYO0&K10F&2fv_W%=vMZ3Zno9C8T^hO_}Ugs`OBm`&NTR(S{9+ypx1okL(Dao9n#NO zK9{Y@(Oh2t`_mQ#bZjcBT05{+-h(-a7qUi1-ZHGGp!{TlM3XLqPP`Rqjh#m#FhFJ9g9QfitB*v-PR2mO=ia>SmSbphpz_3vC zkEe(5m;|d|?j@y7!W}c#XJ#p@FO|*mf1vUv_~!%%{S%zSo`*O~NC*}dB8_C0qKY9I zYGX56LOd_l(JdRNlOvNW!<=nu+D^3;N)YcXd68{LeJ#(FAO}XuJD$y$02z5Sb(k%KU;w$FlyS<&I8(}y1n`H^z&=7vU zx95gU4^H%5^IgDwn-H4X^nRMlc13sx#ZhNejdocDmpDYqOM*jDDkO^M|YLD&K*xjQ`6*&Tx}Gt)qx?<;L`U-q{q zkckrP z?go$L&9zTO${{1nR23fT*4a`8S>G2pH3DeO3s@qQ^u=-;4sYpN~{hE(IA= zkrfpk&0VglQY*w~)yO6wQvad0yUDpeKhpn~@s z>hDCJFC6-hmo^#r;zWuN>~Qd;g>YV9Qn*qm7-63CpXLe^yEQ;ukeylZlLg=|)1V-( zfdQ_;0X_nd#gN=ass2rdAXfk!lanJh`ifH1;O|j`N*uWhg4*dTo0;;{PqgXc5KU~G zM7q4MeoAT0EpAbq5s|VP${7Nr0v&{KYP0~O{bMTvFocXEBZGD*nE7hDiurPH9* z-4(`31K0bCaxflE+bK^!%s5Llpuk>#h=P$uxXh5#W+tAKMvB!wpH=Vw2VuY)|Ddq{ z%Gb|%+K4oa?toe(os5T`scQMpE2Hnc*B8TbKKFv4bTZmYTZ z^6qM~_)WMA7M$AGXF!RqR%WTvkU-6!8~xL$Z0Xxe6}@7^{j2pj)psBTNtuH%Mj;<^ zm(DK}L*(35%U?bsV&1A{Dg7eD8#ZL9Yt z`3clG0FIH6Q5J8j@NgXJ39g8Z)$NW=Kjn_Jv6-8iBENs&*JrMt|LvB_#X!yfwK59n zV!l{1JUorZJpYGFX+^foXF7Ttern7u5fK2P(#7S7@PwPfqVTPCb)4J@-;`MnLt~QH z4`zD1#H8!x6-6d2gwNb6cn&-6eyCS$ltF@HDr}|t;Qzo^7LC^ToM;R!hj}(G z^)-srf;Cam78fA)X?K4at*!a}uSpYi278cXTSI@bT#}If@(KR=MvVj^PWKQ}Y^U zh)K#wmv9cD>E~$eX@YWw!$9Vsxo=EDgO7!LUpFFV%B=VKRw|30t6;#A`CnJF>g8(G z1eE)TVAAe5OUfwe>!Ys0RAk;{>qfKJS%Mw|4X(d-rb?z`h^yzTOdjhE8zcltyW+0- zy|9&c-W8z}+l6BeD=J97j_e1q%)H^c$!EGko2}CQ(0j4oT-Z!*Ju6_Sujeh|X$r67 zN_#kuWVnQ@@YaxYbpJhkhDOKu)8pOnEMcIC%}b?ZHtng&O^y%)62U98ERl$QMA3kw zR}SgvIaJBwiBJ!@Mn0D;$q2l{M6i9d9+S4wntAZ(CH~9yq z4gmA4o!N6qF|ms#pP7f0GPa8uhYh)8-AY!a^awx9-_|&1$1N;Vr4R8q$&wU{TLb)} z?>ATpl1&X897^A8Z?*-WMDa6Z%~%c(p^-)VX-d3q!v#-MT67^z;(xbwi$G*52IlzAC z1&u&&3xUx?e*u*(u<&c0H=H7O0gHj$cE#`JxMleI(3FgXUzjqGHfCYrZ6uEjbhy~< zV^%=3fHyAP-p$D3jdqz1D+au^=wuCB%Ytkm(;O*0q5Lm`yKB)NWTihU84^FcQ@imd zC!J3a_osxHe#dO0^bFw#j5Pvi>FnMUFHA-zFf|oy-1zGBVuK^3vCeaJxPSlPWK|jG zWzI;*TNgt0?z+`>NlbDKy~?iP`3BrCI+Hy}+&}!Uk1fA{cc`g0f5OH3i%#Uq?_Rtf z2)p`2#gU!&>FkOnxlLAUsGg5)Oe6uwC(aH(Uq`cN+nDOq z%=WN!C|?euxuIcV2@;ZO$R#>bM7<9I7E1-h>svv6i@SZ_4;4GpZ^gO6R{AvU+)a&; zWw;W!%yZl=Fa&^ePI9N%}!Gh%6!kovgI;63I!zp=``pMR}{X z-a)D5mk;TYdZ38P&*`{vK|PG4sWtXf$Gp#W~T(AK_Btt8@tf=moCHR>co$HmP{vdhypCQwp@e2HLK zmz1oTEDOkU*)AIYPN}6eHuk5h*s$Aes(2o-3Ru_NwpVS-#v=%yQ~#RXxgYqu{dLuV za}KR7Kjh(=c@UMA-L@Wg+C0FJibnP8B}8`#+%6)c)aO*+Ih0OF(~lG86{@i6A1a#rIF&zq>#D&5@Ia@NVZp zUkwfoNEHMU{BGp(7wWqnNW?Y!RghXu8TEGPnqRhHv_K8iu%bG=4r5XfdsN<6PHxf@ zLA8PAA0aMdjo*CjT6}n$$tQ`pF+9CUZKjXL*SndcF2(n~4)v1PyVu+QsODvo^H)&( zjEB*)pQEw)%vOh;=61jbieNmyhm6=*g69HGjZSpQ>}M+$=l-sKS0cSSY>(=P1abal(<$%#LnR{A_!NxDN1d#O3~*H; z6+L{AR>>d7o2yT>?zuAPsF<>+-J88V-^`?hN!3Z6kJ6`?12DbsXL5WzSmO{;+BSBq zb|7Q#BP0JRD?64MfhtBdske_KK?d^8*7Buy7@`Imnuw@Z#q7j|=*u5({O&~NE5pCM zf$F4Xgw7%pen$tpE#X9xjH6#PS&;C8@Z+1mdK$dwU!&g2 z^L5&6a#%PKc4Is})b9`|NEY*{6(S@|w>mlB9!z2ja9)9G&LI}PkH2^nPJWrcB07Kg zCv;4Gjm>d+4GChp;5ouLlm@#eFe5gS(H!vPcqJ{{w0B-+lcD8qk-hG1G<=thl+0@zD`>)(Z+ml5R*;t8{chKRTF&&Q6(28l&UzGbr{EUoi zPj*)&ErM(&i>T);uFW2r{fx;35^uK9`>`pv@@|8O8%oQ{4o_BR8|T81XwlKr+Jc=+ zYe!VoD&Lqt(<=4fdOYi0wplGLHTKS98>RStJa)%ewzi=AlO?72*)VtV3p6BNvly2U ziOzj+iVT7U(QgwMS0@#ESHd&Fv4!~2M0&+at??Z_lW<0h<1>zfi|S)&Ym13FCo>p$ zeY>NhA5JEW^07(4%|;^gb<3&dLb{-bZId_s_k2E>A!!CiXOP+v^?nP@VlB$WCtQt7M@!*B(RsK)||TM}|;ZO0_863vVrj+^-159oicN>$O@y zChX%Q&CRWqNUbH7Gwaxr9pBlXBO3=0B8oc>StQ#w8g7v9OBmZh0k`sGfceiac4r9S zOX;VOg?(QjUK>;*utSVyqA&m8fxs45VbtGRVa|?pon%WG+H#R zEZbex(LttNy3!L*&&nov*ZKJ1L(DAz5F6E8Tm0VPy!196wC4D)YCP^=NJMJyOr=e? zp&V#NSxk2JBIya$s5xg(exT;c<_c_XZ@R5_lS}IwGz?wt58#?~?0tHtgl{0Z05Ca74vb zTvMxGF&~fLqo6#sz_vI@B>?;t&r(n8!*e#?na~inY%EqK;@vkMwXWDT3SobDqB+G z-3ozbKE8kkFMDs_!2RCq!eVB|OTe{x2~wVm&!BWJzBQxSJNYA)7X_2BoGn1GS8Zbw zyfExwZa!%{rKln&_i+F9tAr!jP0Qc0IT@Mn%G*O;1Om~RsO#Zc-m$S>+e~3|;#Z)7 zAoE%QHK>hH=$T=|ke7ImUhxih%a!8n%si>b4U!JiM&g5pS?*JFzCDZ8=aSuy@aDVN z{gh_ekRF{XCF^!{G62)8#B1n6|t!6%rBg+3#<`*A&k( z{p-yKAGihL_jAL}PJXMEnSc|n9vI{v9Fz=wx(HI%%hYHM#dsaY4_UBENtH<#8Jwj> z=#(17XHm`CL=mLI)Km(KQi>9N;}^Zxmo-BIYR%BPS7hdwZsTzQrEU{E|gQE({)5GmORO+QOxI1tTKha&Pi9hPSa!XWp zhdEpio91EasKKX}E;eI0k+t(y#j@8hkx>Umv~dFvyK^v-t@7J(8;uOq1(2WAFx(-w%!A#4jP>We z0W59Z28oyz){=8rG@8G6O=w9m70F9Qt4FutRRj3}5e;dhD`RnK_?Fs^>9SiBRuo=< zcsgnvQHg50KIEV>1{ufYCBM-C=SqB*e(zTnDhRonlI?8AOPh=~C|+Y6K}ip67&my? zbNb`sI5{)k`&t_LPs_>K7q8AvRz!UyFWpyiWp7r0?(F8jdr*1;AKyk?XDjyH_TRf>@U(~Ny6$%o=7+4iT1hW(02S#6%tZAGUC`r zX*;tXO#&I}3J=B0YlGtUClPXVYl(kZBB0?)DAV-1!QXE}@!H4xar#@E7AorfdFta| zres5Tr0`t91qK?OlrKR&BFbf;W#ySpa&JT}1)~O@aRF&;h?rC4} z9&OF_E&Nzs-d6dWTlV`MCWd~sto*~3mW>gaH&r3WiSAm zIwOu$(yQtb+-(8uLfzC*AKnDV%_>Kan?T#8uV1`D%m!!<)rlm!Qk3Q8eJiw?{So*3 z%VcGf4?mmQoW_OBZmN+HDA;B<*QoX~Rv(UA0J$=oK8~&e=y||G6@qpLy&dmXjkcu0 zzWZUM(^Y8J@{e##(4h=^6D5ubXTrT%6=jQGyz2)`va!uc{#*)YRnd}J)PG4Px>E%AY@IRwz5mi3? zZ4WB#F>D+)X$Yxti#RL^<=Gf5=v(={{4pXKu4-0Z=4||#E~gLy=H2>tCAAXqIY72e z@H?Gq!6E?WAM}sfGcAjVh^7vwlqOrDWZ%XuI1vJvX#2}zu*kIgk8-+PbhNMEqfmNM zlehI`N!r;hXYAACmQous3N*L80wgdNrFV!o&lEG*r6+)RN&ExFmt~84d$B|J!+H|Y zAwvEY1ci0@Z$uUrzJBIN^;Yok&ItZ=lSSL}(h3vd5!u@t9RaTf==XNtlhTwScr-W# z+N&lI=SKwwMkzR&e0&Z90Fb0qR!GK-Nh82~WK~*Q!{TIsWmsDMEj&?vr&; z`S(`*?jHslTmx}_dCrpx&hVfxGK#!ZS;G;R$Kt&}MR{j>1|^|c^!PA;I0yeL#J`_` zq3t6Z<^H}}Nv($3hcC879#g2Wj3PU`Z@N#{Pj>|l=EE!7k;ff6kbJo`uf2$)WI>KeVL|v@QS}tswGtRX#{&}+A=7183>=~-I^`6* z?TEi$#eO^GZ^5@VfFj=5W_Mg_S`JvAE+!ON0TuE%EJC?Gs60bZ+5(1#!sn_5XX?4- z1BqgYelZ_79IXehc)DZ=1o6*?c6U!lz($gx?#|4mdV0&G3rD#wSuaq|&>Nh@2(q4!grh?zo= z*xcd>+EL2-&1$ZRhlj4$Ey9~0R2K)HD`Eh{WZBKT2MiLKef&z>IGQ6J;V_J<-5r8# z(#oTFLa~HS!0h>VIUpxCxs1)IgF)({5^_&Dm=!J#x4}qjxkAT^W}~sfyhlbBv7);S zx6qvfF9s3O!z6NbIWnN9N`uv!kY|RGm7&E&?AE08wImO0)64q>y>_F3Lsw21Hmm4q zS0_N9<2{(letm45#vZ)v2Gj5sc0w6)SwH+WIOS5ojAq{}in(z+wX5lLSTq0yxsKIf z-^l3o>+ZQ!Qu4PxZL4?kTOJeZ$$*j9%7$?R>x*}X-y+tDloLh)aC z_}g^8z(vWavgO00p{*dX7|Lm`qrUoj)qOy?><7YTcRxr%HE(_34ca4!5xSHeXddz*7mFv2k)wJEnfE2_l{ZDDv0sJ4c-sLg^@kZNNkIx^%2RkHO%J)I>4{>`sklchBW-Q8W#UYd`I%zXm=w76i^WE^n+=q(H%uitmmede!?eI^b z8A1#&^~KBqgXCEE_-6)U!RN~BkJ6s*qvv)awFtgV zSuL?EgyObS6bj&&S0YmuqZ?BXb6x*#4`Xo82|ZZ*mfGXxq7DpS2f$5FS$TyzCnAjBV_Ti*`e6itHGR%ln zl$D8T{7$eA>=8xhuBK$%-#caHb$0L1&etqA5zlpD;=O0VGjN6km;h`Tq|c>7 zFwqFA>9k{dSzHI3uC6u95;58j0qxrAjHPJXdU6CYwm(Uc}M+QXnA`0k2B#*?<);X zj=iT9Xyw3Td9J0ufS^Lg!UF2Ba9No(g;q9n+Ma?PE8nlG5mD=1r)lHJ3;gsdv)%$CN)A008I>6Y8#hZOXiRtiI8UH9j3r%9?hJB1QOSBId*2U&tF7Ss zJhbCB+2-KJK&yKJ&W~$>6=d%|&Xl@xzj#V5-5wGzy5g~}SRTg_Jps}czz=Zl&-`lJ z=v|PxNvN-*m6grq8J@*MI3=K?$2%8l?L$plVOxelfnUUTaT&cpxc#S>>hfK&ps`2m zM7OFL`7!Et2pdCGN`k9KgB7AVv19-R$o{der)@lAWz@Pbw{cAfkQvHWx$oP*x5R z=Nef*+Z1fMr`p-f%&_0tnmV7WW_t6z9N~qb&)w4FBPhycr4gS{HOTK4>OMbi_In!| z+M!iWm*`(l7uP*LT+h@3dIG7$y{?wRUerSIT(fA()^@uofJPcA7*O@mb=$ z&J6-?OybHJ2kJsrvWg16|6c40``Y|N#nSgS$O+~P3n^1k4X?wAB?{9jvyU1ybl=>Z ziu=*VQ`i3WA@SWBe9?yUIIf;f^Q7-T?_!J~xo94K_&lDjQ{UxZ7L@{&=fqZBUJ7gqFl`gtquu5{e z0ayZ1^i7`V2z)T_MzC#OIe`MVpg3jI8QZv}t0d|8qq=B77ip3sVI%~fyzzkR1=3&t zZCw#~i~Az&oO26vGn$Za0?FVa82U<`z)(lUDwO)}`&%a}sVxsbs|wfM24Y^gs7{oC zBzkBp+9(S-hbk*9M#LCA{_=5M>Rh4ucmE*Vn7uC~Ie`O|AKQuKQE_UFg3Ns9G(8 zW+Tshkp*~ofL2K+FVMA_yt22f#;)#RTqW+e-D;!M7jbD7%(4Ez!;)d#Hq$aW zy=*OwGcDxih&hnNcZy-UHNO5kP+T^X^3l;!e@5CRmBj;}MiyH;;mx_`$)I^7hhPxB z&b!KR@KDyfVzPyg0o1i4>-%%NG^^@=A8`5znwq1<0T4MJRhXyiPs0_6(j5)-M8ApI zVR#P*`Ca0FlXD{MzInK-WTy)fkMlS(qj}klglH34_v!g#>a$3mI?Ee@Gta%}WC5R4HBbm?t!iESq6t0(6^%EL4L z&=G@N@8O})<;uiB;L16aRcD72jLcVYwSP8VVS|1Im!i@v#6?q5vhn2!SxzPQ9bVTisKuAq&gq)tBg>BIng`_zD+;`7#ZRjhF!`%Mt0R^B_^}W{KBt4% zai;1f$ZBSwc=l{l+;*BnT$&;HZSp1^5;gWCg(t26{coL%cow@dNkxhQEHu$dQg#?w zi{bT7w6iXFij*F1C1N#kRdwxQZiztXpTRoK_(M~OPFaoo0h!D2Qqxmf6Z~}=7PIY5 z9XYGdg!#4un^ANX2;6~Dr~#}JTUgRrYiwxKAMVlz13qx&O*sF7YfR+gW{V+@Q+U_p zrBhAeC>4bQ9ZUCV##i+F&8qqrRG{gj$GI6cUpH=2$Bw;t?(Pf(!>CP&?k`^MJF^+{ z=+~(O;06CKw=>E<9KGRY(WBT_Q{(M7Mfcz19Utkx0cyHwy6ou%39~>&iulq3gS=Y` ztePH;wDf8~Ov;x^mk;=T4D>?tm5A2#qN%X#@xf_=`Dw6WcFUc+yfIw>Ml19gTgtMrp!i z>@qu&*}gLT8JWbp1TyaJhm;wFFKGC++U`KhmZJ#iaf%(Opoexwh$2&s+!f%9kU^tn z6qu@Jl5g_AK0-&wECZc2HREM%+1T<0pm1<}y1&mpt={JP_>v@$m+r#|~r|AO%Ivmc{$rfz4J=CUutuwVHDg($d z5n*54+<*#eSW&6zdfsuMSFc}<@+}>Y*dYYjUG`(kD_>SS3IR1B#ogn!jl}3gY{619 zPsDUsjLxHZ%MvE!26*?t)rD!v#grJURii73V)e->vY^#l@hmhRn^oW}T+ zd-|)k!*FsK{|CHlF@~XvaH|)Sd_O+oJP@$q3oj`BJ%P?H2R&b;#LJ8fKb6dAuM-M> z#>md@cdTf2NQr;|kQzPdmkft6@!lQsa+{hqGJ9VX%vUq@|3MsaaSN5);6uq?-p!&xu9E~IJ z6_NB$j050H4H!}-z71X-ek?O?X>cnV+!_QB_+Obp2^P0|sc#YAJ+S($mvKt$leXM)+R@A#{JC(cOO(a6`eC&(Si)rIuv}3iO z0OkoH6)m+l=U&OcUk<*dUcKfftvc5)oe7!04QZ|?#b4~EhayF#;Jl$U{X z1^9$k8IgLOSU0{TPS{S$E671AQIZ-fIAF9wN{W*!A}TV?Rg~4#7CUH;y`*tnO>QZe ziqsl-N-JMP`Qcr#tNDo&2BC;IXDp%wS^T4$eZ-`pIoeb>T}uRY899EE_FkWNQd9B8 zh3_y^&NtNl@B_P14iD*k5W6w&rN>qxk^cwB(*Nn(`G1OD|I6}(tY~q&x!4dN@VJVW zv(Veu(<859IX)wgPpdQt;+c~SgZO7%Ehj4u1&NB0^s$hQIu3Jr8#}xG!8CsTdJ4kQ z72t>Y6uOm2N2BPfstRPQ`+sjj)IfHmjiH>+A3XZIade8ebh^{!l{G;E`mEwr4q zY{Qmj^DL2cN;g$5gVSsoYl%-nOZA%L6BD2nmxqNPP9|~y^eX+p?z92qzP=!Id`uuB z_A&3n^@lrXamv12X#>W9bR`G}$Ek@)LNeQW*NR;ZeMgJ;rRO})vnCiMjH2n{UP5e; z%p*T(yHXA~@qjKGZ~(22M^4n%0#kx!kx|C8khc&xi1un1uc9xA8MQcB>CWp2DMvI0ejxWOPf%nQ5})J1seO+}QxJ{t=)9;E z-#OnJ%YPOa(iPIwLK~5ZFxRU9QO!;uym%reO}n}>=vPK~@aIB7{*F|(GGaJ{hKkq$ggJgPcq#rycesKpiKFWc&laCqj4gv%)+D#FZkQb7PJ zkH>MPxX88))JzIG!U4@iV=@s%OlG7UMM}aXy_t(q_{)JlcvL^DoLxpF;=B$$sWXY- zWTc$p=U=OO<6D=?gFZ!wNV>QN;S2@sP!BA+5!F9;7w~Fy+voMM*bGhmUPN>+E)OsM ze4%1?FLQqU!N5SU{hTK-&CN0L`rS`;Tqj zyT4#rURWvbGKy;f*Bhh2`?Ir~Wfug>CR`%}RJIv7abKL&H}&!qKfb9R5Li2DQiw34 zt?BhZB_pt5NzICnI%z_iTb0tz0Ac=ceneq6kZPpUDKQoVyEc>TPsM0~C;lWk>VyYB zssh^3_XNq}8p2@FgHrKd2Sfieo)6C=c#^o^4tSh$KPjwEu*DPMpQC=YXQNwD3SLcz z@8{ayVHHZS`HITt)j)9B+H#4F( zC9t2>8)(JqJc_ZGh$+9rdz*eZE>MncDeWCId(`q zi`zb3NVp3^iJTI|T;^Z1odguip%`QnHiq~g<6R^WVm|vY|2O~Vf6QGGq=tY+ujrc? zDk=8uAM#-Y8*lIT48UQB{b{vO0zAfJ6#g$)u!Stc(M_#`-d4?3z2^EE1tg?&EPCbt z%oMs#A>)WdxRgl*2Fe&0XFvBg(X-tH*cg#=#DLM}+1()oByaztIRT;9Nt1FKw#6X# z4H68P82A!h9PgV~|4fal%5I^Aja_k8vbLhrD^9_Gjf`V(&=Q!W0!z7w3Td9+?t%fC z&$dj%XS1gh9*lgnSU8Jofwe`K7qSEri>n-%hUd}WJ`YgpHeNx07dSlrZ<9d+V(qhk zGbo-5M8b%oH$O@>RcCBWe)V^TcBJ%#0u6zI{D0mRJov>(_BU=@9f7UK2c|baz{Yu% z`f!zIrA}~N=VF~L8AMNR)vB%;h%Z2cBI&F1B8K5*1V<Ct{v#TTxW9#rFC z=)p>v|Cp@*X{!`OX-!gzFf()WXn~zq`BA>V7bx-$mWK(=q5Lm%us_iA$dHih|ks*+-7Rq2th>wd- z(@qPlBt59TPN6G*i**B;wBIAB;Tl*DJ6v3rEKPqbCabFX(7I6a?@2hT$ zqjCB~o|lWonThVD_tl17P`nX%Vi0XRqaHFdwdqub z3qx~G6P^dX?V%xYE#;xRtblm)xzdcc>7R<3Yo<)HJ7)?^+T$?E%)Wnr?+*Qz!pVx|Gs#q}HR={{UN1 z2z3yW^;EHUlQ%;_ffFHK+(B{iH_ak<0sf{2=U^924T@HFadEHUmBw-&8$07j`w1X? zICfl~dd0nYKmt4{+Eb&ieb4DYSv>?FN!2BDbi~JDiHjD%Il)uK%>347t1eSUAxUf^ z;ik2PEGS-GE{q8WsN$58S&EEmSS`2Ta@wUxli9OA=N~|t+b!h1Zpswacbw(8xjo-Y zN-{9QQUgZ9SLP^|i9AR_*WC8rZhtROmd0Ox&hXvoHNJ?VT@BOBk!J zMi+IHS2HBd>GxXI)|4h?1#MsewAVycwMWO>(O0;<-h&?AP^aW%PYv-$`Fgh+@``a> zW^OK!SE7Gc?hNf^V$j7T3V}u8Ff%Vf!04z6nMX_BV0SbEUV>1c`z)AiJby(Edw}bk zPu4>#E16Xr?DentT~25V0MM*+3PmR>56G!2E9(w|FL=c+Dvpc!X|)ed9_LwFV-lVa z-hHQjm=F@A+2H>GI`JTTc{J2J;Gj4GpMXi7bSH2kp&J6s(_P;SD}n=Bw&4mf(Aj(zqLDhUy9xVDxo^ldn@Oa{@ALT!ZIrh+`^6+PoA?9U z!Q*1ohyf%35q{I=h1K8vvbY+%!0#YRvDh?siT_<{vYjnT)@^Waa#*Y&-xprf4FH4c~Wz>kvZw)4%xE}GfXS2^>b z)-enCXMjBD3Kd12{S|~v#Yt5E@_5-{x)k4bYU1iD>5ck3{~&rYn)WZqaFCJAGChpY zCY5TyimHc5beP=VJiEf;$Vx8V7NT3>*#q|vW|<)-8~W9}PA)jO#r)k;&VX_x@n*@&<4@tC8fze%()q4N9)Y|dfX|M+^jW~#{Jn|VJhi{6C8;+)Ba6;D%sX_Mc4h9Iahn-;safMKd_ zszgmxAu8_aVgvcTb6oY^aSL$J0Aq#V#BUZJPWx$PCpwcTt`0VVSMgtKGYdXIr6-VQ zNWwe2Ea{a)9a98W;jP_32nsti*G*H4XyNV1XgjHZR60Lw05FfJ zhUL(6IgHUz3f=crS<`E&zUMY5f18n{WucdPLcr27Tp2V?QUkmV=X5_#6MwDGp=nVuM zL#$9c;_MQ`W73+&%g$qYjrMu8tCzRuptleo&E8=11yh88x;PR<`=G9EAx%d<&Nu3+ zVibo0E_5gfhrfRVQL~4DfJ1ea8Bui43!>;Tr-1V<`ZLwMM^TyHG8@N@tuWX~E}ibF zsg7~ZwF6y?twnffRxUmfE?51Bzp?@z%>wpBRE#0J1vWynzhE~7(~-1-p8h|&-ZHGp zsC)M{kVd+tBt$^E5$O;_q@_c;m2T-qKw7$$lx`$c8flOcq`MnAW4-S_|LdH6?ft=z z0_$1xnRCoB?)!IN^jiL+CNLJ--hLZ6>5>!rJcgTudc3~Yk`T_MQV}o;b+-Tpp`x;) z4uc5`XCRyMF4niUaL`5$Jql;TRjf28;d%5aOQH-N zov}h)?Xh1t6aGD<+4j!Dyb?iwQ0vTI1&Vt`RYy-89keHiwWG$jS!!gzPF6dRB#YoO zx`ftc3{h(tPz2_rbkR4Qw^N9SPtVs?ayL&m6G1woIs-e{{mYZ;>3V#P@7_j1g@#>V z($`^}45pU58@nJU!DC|+_X+i(fDj6Sgp#jsv|ui77JARm)bVgIBJD@vl>lww^ycai z_z>($cbGQUzpltIK742zz&T;sXCPznCuvd?`owu(zSU zSak0;lxO_y?Y&>Mbzi5sL|TP2wm z+MV7~$u%eS@aL~WHD(S@JhYJLRKIp|bG?^Nlwx$*dNsoTCMpgN@@;%Wu-nNxYS^NUKb-NfO4DO7$#IMaa=dv>&4^m*I&lR(t3uf_az4w0-%rECDxzK%_@hi) z&$H%F)dTkcpOcgBAKCT#M>s-3S|4vbgRA-!?p9C?9-o{NQwZ$ZYjf<`rPpbcQFnvS zeBno(fZ6@0Tl-8OS^qP;$#@n@DP=MKImghl=eIbH&Z6-Cv6W%eEolDi4@4DzDf@5= zRnO*a2UV78TAob?w9dDiY<23GsRu)z#ROsgb%)7vED`yoYcG*lX>c$ju?wx` zt!#9v(ILw}-xL+o%V{ObX|7^`C86_v@FBY8_gxHOZ|^_1QbC~G{X$`Ox_n_ow=sac zr;v;!v!U|)jHhBpP~FG#?C`&>Int)ts?bT{UK0|?56e zC0jPV`C}kU>mZ)=H3u%&t~8AG;HR@ZEq=l}|3w)8H?-4latcm^D>%bOfou`hGt$&Z z{d>H+Rwg$pX}Zd08W>7Acfa0}!nwQO@WB^+2Vh7=?V|peZZ&Q{XQb3>HxHiB6`|Dp zY{Q2S7i?CUj|LmSTVBXEcuKoqsXkcQ?7+D%=uT5&j)6 zbDS@<#r?_q;F)+b$G7KWY_cD7_>2U)TB4jf7NTR%K)9(imTov#&xJ1YZzl3p+f8b! z_y@}4x$@hM-*Su$_RhOM_UGsCWo%5Jf-}bd3 z?ai^n!-EExNW9I;V!<$ZC|9cUU0vMu42<4oFFz&hs?tf_X-nQ+A9(_P^iP$f@()57 za|vSaYA)-{XIHsv-u2~Qz9Po)s)%WEagfej@F9z*eR;O}quF!HdRb0aNC*VG(&5C@ z_sN~#UY$iO8DBBy+`0Rsi$4#W9t?zm&|6mO80Vtoo&IY)XoAR6yNh-Ca?q zQjSV)w6ew0z-%uJ{2OtK4#hOT&xNI>Ha1W2vbc4vK%!!k@+T{&YH=xRU7p%%g_;_p{fyxSnjko+yRg>)PKhC@455-Es7% z%&#KRGj{%y^TTP8>rsQAxc_}v*4c?K?D2(^^w?+5z*to^xY=W>j^~??V|(Wd;~#;6 zS$eLK3T96t%HKK<9Y39|KLk_Oe_d4mzTv$?18Fpo*-8gN`Yu|dH5JOk!+6VKQ?(6w zc~OyA9@aX&y+vdB3KDuPk~X4s887}v`}0AOW33w>Y>Avo7`Wc(I+mrl{zyvV=HFtC z8GpQ|AN_d=0_l^Dv1zzlo@d(IR+{B-PfZu%df<((6=dk0oqvDk5k&I!+^%)ZeAqa= zULZ^>j-t6#9~+EFyx;D=3tR)kSb)&ApWhj+FiDPxm!C8^Nxw}!MgN`GJCp+ymI9Rf z5oqXsloOj%hd;1IzU^{bC|43PgJ>o5zAw-qMhgcA(`h`#(!Rk^7A}!{hbOEXoS3DR zX0(!jF`rFMovN2Kz(%_HVD5NpD)y;2s}*&J#n-QA!w0-Pw9Mem>Yuu2U!j-*E_erN z(p&e`Ua1ouW%WKrff1PHVm$aR%~o%_WTwXA{abg_RtZD7A0np>j_g!jf`gs#9{oXb zzJdFs?LTO5o9ND_Pn2ev+6UF{++$)aY-RY_8Is;baF>>>Tyn`5nMFn-Rx8yk3w8_ zsk^~N%-o+BZES*@ciifuKiKAbsA_;iL_6G1NK{$+`fT1y#lP22$7vh5IY`6tGXA%B zm^sKWUn#usyl$xCCi(OJ`-nlbi+<7VyRmbv#1`zLHWGVp&IRYb4bri4SJ6RlIM6rS zu=`chx)2E%+@O^~J!+8Se@5-6RHSq_@Fm=|Qso1Ri@`Jk*0^l6JMt7DDfzGA=X^w{ zx2N}SlMY9)dxoE1O6YTSEwar~6-@MqAcwA=t~wZ?qXtHP;$7AuB=J3>d}h7#7oUnK z=&Ww9$5?E0QL9qk!{EmkUxD2`f=7}1}D4lDvv_`fyy|Az_qe`zKEUmLq<@Du-kxWfPW z0cyBB5)#2*-w62sFKV9}YM~um|C=VtsE9}{hW^uh7k}4PF?Mq(rLLYp-)SvD@L{vk z6h^+?q>@SqC>Z!5p^bSCAL5-Ox0z=+uq2k2mf^`LG&KQ0Z6Fo*kz!9#VL7*wG`u%p zm2p58L;del29e5SG$wKSS$TOQt*Y-A(?yeNA=4A?qyA^Z;c z&YyTwl~5T0!59kIA~D%V2Xb=I<__sWw8mx8M!R0%#N)zakH$MV2_(A9t^JvC8onB7 z#P88e*vKS5_;o9SVK={EoOn49Rn~^JqN9qa0aN^Mco)jWCIFcsRFX*f~K5lASN@e|@ zxeE@S+*r{_90d{$?wNavy!LaDTfDm)KRaIq*O_P?k=JLmY`Ws`kRnDCsp&8fAMFVM z?PSmQvRp*puc2J7EJ`J0I$@$^`%wdG3;}vFx}#AH4@g=}H?1eY+r^BgzI`+(+CizDr=!q3N;gbH5f`$xq1+b;#Zj}AodcmI4o#`f}GA?I$rDr_Y1^l3IfQ)Ih$5MK)SyK zY|R95@&Ellm196BV2R)gsc3@@f@v~KECN#{2QZ%Z=X4r6xnC>kHUpE46^j8iI~K9@ z;@{_DQ@uRd_&#h?V>80d1#=;4CLzSf9O@qE5ge*CgEK&O`UAiP^Dtl%OmhzwlBCos zpeR5QCMrJImNoT74S_6mL_BN46uv~(+3RIux=C6?Hz}!=N2ub02*P9-hASqM4 zi-}Q_lr&qW{r=w{L$t75VhX zDv*M>Was+7Yt070(8Mps*z;gHnb;j^fM$Y42 zZcAadO6^KFQ=|c7$Kj}XFEa#llQ4BhruN0fQFQZ*lse9W>8hcJkFpI{=urKz5z8|O z#`JwvRr2#*E=}6CRh^Op%(M<(U zZ+Og$6@k!O&+GhAiB)bQ{SLi$Uq;K;H(CoGj5sHVvMVLmVrXv!1f?;^3uEqUHIt#y zKY8+)oc@YtZK1yV@U(`iTzZhQ%*lx?os8q}$VlQt`T^PJUgb{nQ4B5Ccdgy5)-zZl ziKnG4f0gRbLx*EN5xSW((vo9{!7-hLmd=C3*qG<2*z?zPwEB#Tp6ruB$XC1e9 zC{aLlS7A0xY&m{gPT03NLhu@4!`E_btc_$;)8bAb*<-CssN<2%S< zSq8aBuDsZAvRpl@y)ChuRyzHeFcl3vTuKYIte?(OU8 zVV&{fJz%ito2y2QO2}H@Lj!o z{J7oX=o|7I6pQ4sh$ipTV?v+)-wb_JRR557asF1hw%vVq_mTGMZqUOlE0cw1PH_ep z7IcE_d(a33>J}+G?LdYZgI-3)Gn45MnIc3OWI1B|<-8J|29VA`<1Jkcmn z9F$XB)ro%)&?IxI=<0M4oBbs$CcGJ5@BBF(ncPuVF`*_@@3N|`z89?Y%_I%=G}KY( zm`m0)FdhU<8>hZvhjObT)!7Ih9!Nk`kB&`@O}Jt|ipUZEVV`^&whb1#%kA|19~vM)PHPD9*t$ z^{VTgvkAk|XkHbP*r!U9+7th)4^DH(X2SYyTuQj;J!7vImqRhuL-nJ(WS?IjsggZw zbj6&V6?x_w4MV*t@jsoHmt_*haJvm*#iNoCFYQl#T#$LIMCwl2qv_g?T}}rEzrWgt zt3dH;<+q&yJV3_otd)o_en_T`Vmuxy+6{zrHA{Nw( zoGMgF0kh!y3agP!rMbp=80qi**r<%~=9)YlzKiS)KI!Wy9H|M6Z6L$*yFc7|a{v|I4=gMhX)@@>{^?V*H8`LV8$`M5|ODD_>vc4iP3 z^~8u5&@EqVHVr50Gv0^_n>|;`$<5D_LPzK-x~ZR$sh6qsLUY|0Zq9Y@q?B~i4%M|b zs*Y8M#-wi%JD>E-=ToA125XEAFC7Go+B-OY5|n$cLNPsa<@TgTK=T4uM^%%m?cDWVzv@#1i_4%>EfbZ zE7!`+O)UO~t)o3k*Ymn`eLXoXp3v=_(+oq21Lx?i{KYpXABkw-`r&(T5O9T}-$CFi z@opLRxKmIJh&sI%YXg5WxM!hT$f6(VA*ZF9yNlxC(^0BIYesE2S1L95Q7EbM#p6}N z1Q`Bs0}##r(cV9kgl3OgxN*9k?tpiT>qBbx;xCP|S9a63HvLa$2hv7rDt^DNWZ)8; zs5ApU;XfX3cu^=1R~rY@8h>`sGEv_;{h2hFk=6F-@@S!g9tr*^W)|FlCERLRayM7N zMml#kx}@EwtXdn&nIvPmNB7ec=|1EepTR*gjcg&As0)s!|%MKwUl>V zKyWc_-sQLH+N-vY2714W=QG7hNywBVW7E0beWQrS!KL|SKuW5stu5trtRu$zACN36 z+Iy|?=?^0J-7l(Ek2g=={8S$qU*Y`1zRJ+w*l0S^*x2^A>|r~bjtGyt`ec34F9REl z$_rs6c{X`ckkohF2v39%%U>05^EcjmvMp$(nxq*3w6js4m?u6MBCn4CPS zcX+gayb15W4^);fe@4NCuZ7?KkLt}omft5@wfB{d1#PxLPTOWdhr%O=D5P)*aeGU* z`?dIFwtDqs`I7na1_PUy^V^m&H%;UD$h`L^^r0}a&)~zZuoN-v17QVlTl(Y_Kio$* zBB%DUntKXr-;3GC2?3dQxYRm=3A#8UqDIKY8N3qidj@O!>$mSFA>Wnkn3P^5d$AOl zZJ2!p(!>{^w}$McGE*DPL&au0CDp}f5KP3w%-qkP)pL+bdAWGv9ni!)S(w>wmP-s~ zzl5Plb^M3CuIdQ3zwdCBfU(`xkp(Lj@^h+Zs>WCh2Z$}~zY3NAkGA6fq!;-=UI}ob z$;hpQ&7&#pv`imTRaBZ-h!-d$jz3g!2Dlu6xbM{MuxfK+RY%fW)VI=s!S|uuy_CLK z0H1UAat1O~vhe;g00avH07X&f>Gpbo=!cKXU*tI}Zri@T_UN?ucp~yoIHaG=>;~&w z5dG*;#f<1^wO8LfoZTBzzP@#mmp5FgJwMwslzS238y=pWLMCTFp#7y&*eCt$dzl}=fra2ZKn>kzoIuwhc`nAO1G+|H|Fz7_(GOHs?j8;`zjA<# zOL`9<|3Oocm_N7(odqAhCa8~=oUPBvETz0!&3N+f%->;O_U2$2lr2F!J0L*-4+pST zeBjo0Wqs^j6Y2U)*t=!efnma^uCRUla|$>4n*~wwj%FLbvgz-f9(mT7VJ9lN@0m3O zr5fiKTn>J!9UDGaA4q#e$eMHOgxB)O{;#yw@?!)ON=#KCGi1%a&7?K9T*!X|V~4EtqzG$bVx1&U%f`Bi=< zXWL^%(2KY);t-U~K|{mQ*2eOL(!Bh6I8iDMt$z~Fgyl^=s?ghqiC<=QTXf33_i8~f z9L)MID5CFLZ;}J0HV)zaw4o*zjCU#qENd;Anv&;YRGLeA!$Vr};`#a17i+t}o5I*$VdGwJX z@B2>&XS7%UOHhK7*O?PZ{?=o3>9Ns*o5%L=z_)*mGKBwH(+s+7FDl>bIC`A8VU?5| zYH{uDu#T6wxNm*BgOMZsR{Hi*bNZ^cH%zgf7(0nQ1u@p*_07YR>MeTZ(3TQ7kfs}gSH(TRN+fM-OJzI167e7+VD{JRlGcDsTf;vapcxMJy?FM!yv_8?9wF~hyCrun z)h*U~;|<`$LBJ(D-{<&1`S!CP;J%Wm(7B+iV07Ri-skFc#-4bQ0(9R{yR?B*_v|}& z0K2DuAoJbN{jOvjvCSd$ikjF>`)bJtTWx7?ga}JLm`sqsW z@eSZOdw-?mmMxLS%5~b_2B}VVX0c9=5-mTNBc^y!%fQ}RO~u9Fa-*!NDcOu_0+V~k z^k=gGYCl^lQtNm-w;E$80faymsM8`7^lh@hh{-q$ zmWoOOeOa+Jh=jnK0y19yJBuDGC1{OClSa z?1nvk9p%6onJRT=%o%m6E(;8bktDJ@{d$E)zo=a#vZY@0RJb*~HObGNNfA1IH%8u0 z2kP3wBT-x2wa%xm-=;V@VTuU!j1N?DxKW9qqk4~t?VnUrQMcMuKo*}B2=3Ld;iV-{QUO;gst=WWM~&g1KTz~O zEC5@ZLc)_?(AYDWH&|nV|%-i!Pz1Nq3ghr*p)h0f|A^YcfY1zzg|6ZO@R7~#5 zxR;3I#!HoUPfYHiD?@(@p()PjrhK9^H06FwEKMhp&D(&VV|#zk)nl7%^@|)_J>x06 z$}=gF_#BZafduXCX}z?P@PHx>hccan)U9uVkD2ywca06gTPJsYMaogyakjs=>+CQ+ zQoc}~%msHzneyK4&7CNh&P)LR&4AO{7R9cSbs#! z%ouwRIvYRQlwkednFov8f>sHCGR4o@6>p8c3u<+HGgC}zMjWWp><;ER#R0}!h4&MC zB>HNlX;!B-Hg(h06PiRr-`b?cbX+#N)T_4raTc%YA(f&N61to%(N3iyQq!}-qT-N9 zfp^lrL!+%c39+oGH~I^5DF|p&zfNQpZ6ZjBIDGoL z_NBTyk=P?H&79Na=O3T#yO)xoSCjf$&%eJlRCK=E`pD}n8VA>xMN>dPXVN1bQ=(wG zNDW^XIqFuH@KmiGWEXrR;vEl75stZpI+42_kD+}HP$aTC6KM+Z;eo28Me9Umtrv(?=w$@BkNPu_HR&Ibj+vNUW7CKMDc zzi*?OsTxqXVslk(+*~}uG?wD9N{ga^uJ5_cdGpS z_$E*#udW^;Vt6s`C9K*?{)na z(eJp`E|axoa9;>X(wx`u1jpZ*2ffFNh7=AL-eY}bjEN?y%Y(ea`;YF#vZYX~JVi}B z$98O;dibQhPKnmr<&n-^OJDdB?-CQUs!3+Ms%h_sT!@B5tGqG?gCbb19h}>mn!TIl zB8?ux?$4K+?@bX!;_kYqor@dvWo7!N%*w1H#hE=>VSZt+RBz5Y%Tv?q9x{^{G$>l!RNIOVb3dP z<fEwlIXt41EJvA`a=zLhEPt0I-(jy^}@7 zfL`O@2s^`_za8n)X8E~I&2AqBTA$BS3fIL&H%+|4;c;yy#!z%NHSL_LM6B7nccIV0 z?;kwd6?2wnFWsif$G7TY9p?@QMh})Gqkv$_d_JfdilG=5iL0V`_F(shxT|bBtZ02L z7xmEyu~LzVJR{>ngWRuQi<_<*HzzcS{6iV_8E$ivC{?dD6;gS6pF~*M6P<)hd+yP! z4y6G~-O_qXMz5ChfyxoJ=BwK1_+=lYIII63O(ev3J<567q_V19z+? z#y;h#z)=@25vv3RS8VLFpn!56WMjOc)q*m4Jyc$is}jB1(!xMeZg3O1(bEs*p}X7d zvy$IS_4Y^JbvPLV`?469Psm2%>2CGGCo;^8mwQd;n|ALRL)znZe~E`MZYBmt-;W_Z z3}4+|?#+Jw#=gLUK=3}%?Wri>2M$ftZjA&xgwmHiBvNjLx?N|Bo~j}BsRgKY%m^Zs zZvUN~PZj!^*Qvb4dnktvu;Nf(_jLh*{T%6U;@Xl`!0>ZwbhfFs7y)j>d1MEU7UNfd zjE6lva0lI^b12zy<)KXXOi=}6FFN)Co9#@uQV+!ES>Tb%ONn;;ViEvqW=DLDD~s8nNE;j{&jtEoRXfNs>FT~6{Yj#b=B{tDW@NpS9SbC*kKzR z>JmXv1rStB#~ZbwBtpYGR4xMKL;B4mAv#nxa|jBTjL*L<&Nn~0=bDwO_IY;a>{>NX zc7%DK&Apj>nv{|8RA8vF7EF{9`pp|u4B5`B9p=-@Qj(rBHW zo$|XpBm_9*Ih1<_*B7w4AjlW;ze-+cBvQ4b8?oupT^rqacdq@HT2V121>|CM&DJ@q z>x&pACD7rCed|n^=Q!Ad6sgvL5nnZmcEwazuM2LoC12sR{;}Hn%x_U2EH=jhu&?yk znBiZm+fQmjSa(*7x@K7u+`as8yB!)Hnqu+%;_(n_f z^S=9JV^X`qKsB!po!n0=QmYzo9{Qxu7jy!VO&Va<3ehDVJ$-2{16sf2K2U zHr&tk{MR%zSqFJOFWrbJ#IJf1^ty_ux_(=mGUPWClg&6!lw23Y-uSxG$RsjBnY(sIu=TT8aBagU_4_9@_Ff-lq8u2XE z-Q9J}%{jP9jLl3RJ{+X44RL?_&66kTjNw$HjOa?n6?==c4u6mH^tfMxXMy05Zp`UN z1nVQkm08>{O093XzwX7jWMhLp1tTnU(`#0MnYh$prAnvvB?L`Wx~-v_88Z{^RUb8Y zkyqmk3@lVmPW3!^q-Z+w%(`Eo@GUX z9u%^fwM2dRR1kjyrOt z&%gIElXR+J{N4qR*(%Brx!jC-o1f>W>LLpZLhsDP{|t!&jt*UW6Tm_UQ-O|Dno9Pm z@@zYz3pWj^0Pm{VdX)&|yAOy8{$PHkCL$j3OVbFoT3t_#XY(^ZUQzHacp~6-KAFho z(C?)3?&(A+p)eCK=<0=-i`X%U9~uwxvAn!Ipyw&bctiM~XtKwTgoK0)ra0-gq@%cx z_TFzvq1^i#WM1Rz3Lf&m!STPy%Z@i4BB%O^k?I1`LLe%pQ{!G{=P!YQ=$OxmW=!jT z@2gydedZVn<|{ydA5px8HCI8O7dR64`0V9qM5K*$(sP# z2w_kiC?tc56NzRyfI=93DDaMeV#a+Fcb7v3<1*PdVMh*>*b*PI9s~{CjLYv}H|;{UN(lX`$KBf1<%Dx@?^>SemT5jGB+s*C@*hES@v^!Vq)Up#KHWOhm7w>i0R~SjHK$wx_0F=Wf#L9^@qLm~1pNE?6NSd< z2^$-vT!{ZWm*IA4aFl>f?65ZuP`j5shX0y|440Z!w|78O+cheV?RQIq#z}G$F!e9&Mg)`xp_ZgZgFZX?P_R6g*QbQbfQTG!f-XMKE(KHdbi zG{M*y@cI7gNIen|6lCD9OQ@~Y={DU!_G{5P-Dwtd-jaB$(Ya_`$DNR9TW8=)P5r|o zS*iU!iEF8@wu1KM(Kp}WX4n5%CY5CYa0%&=viuQLgX+mFlx0y=KN~F?o%>kO;HPCg zn@!>gf1;;}IT{%`W;Mp-#*K-CGqE}J7n-umxH!b+qTl(H#)tMVE_dq^+3ey?f;mI~ z^W_j6c<#;tb*QJOcU4#Mvurs^hm)YQu_+pd->K4#kJKG~M7 z>q}~T`ki5GlA}qZkjMhrArsRH%Pib!ckyDY8Q4kQ|KVW%X5rkqZDL@#ngYh0e0_OC= z){TcC>@F;T#3r@&bt)DnBu%Z9o$HHps;Jy3t4JJ80UK^W&2bnHZ+vr&dVKfY5#uTo$Ik|5FQ+4Oh*p9W z9iU3K9v%)t5Eihb|5V8Pn|Yk1?#$1-@BM+-`(0`FM-tNdjvvy!?b)Z>)ASjy@}4ei zTKvcV+k+;{R<-oK&HwrC+}qN!b@v^e{;(sQQt_Cxm3~TWY;_lllW9BXYjcWFU9@Gl zR18h>^YGRzv`*$KscKBJ_3mw`$N9S#-WYs@AJ#lh zog3?6jFj(r74iv-vNKJ0Fx{j+Puy939Oj*H=Rj`t{H#<&wE9F4``^Dy2$odvz8*uE z1=UD#Xgfgn5+`8z=w<50m{n_m8T4BK{S3^-+%}_EWttW>C_UxLXr==AT0FBML}M1o-uowPLN-Vx+6^g4*N9t9u` ze4?@p3epKmJEf=@L zQ_d2{2G)s@Y zMJj!y4hrFcQUj7oJuUil`OOnW5fJvo9jxP<9Wrjb>k7=Ox??1{5$SXBcw->#kI272 zI`QCp&BlD(NQ0x60EYnN{6P-6!s(ik9=+_-0~mwQ@n-@X_aNbQ%X#LPB)rFHx3-`wZOwzl9UiDDZIKE;Cq zst|_}Z9?i1y8nd84GEuJR3~h1FHd$NC;iTgIHBQgSEeh`?$$%F@)!-*Y~WAxo%?Ew zDml+T))BMCig+(=EoQH-P5zvpznu3`J30dWaYabb?K?&v?qML^=CJcr<%o`tw`uh9 zfE?3gF@Jsygn)uk!Wg4DQ(J5O_&m;iX=z!AN-)>PB+zj(6n{c42dk#S;WSZyuhh!U z4mx3naY(#q8utb${U{20%#b4O z*W5bge}GN|Q0$I+rbh^^(>e6$kA$7%G&P9V!2}M$FYQ-qA3M9cRxeL!mD&RzNHz(+ z74Pqq{5hUb$xO#X#?$WcxmdUle4Kka%?&>GK&s6!A|&9V*cwR zxcxxXy?c6V^-BPpHYT#pS;Pz~T%3!_k_)2c!^>xH1r{&~iKQdI^hhM_l;}MEm{wwH ztphQA18R3*e`2SqV9*dHjh)64O0jAg9eHkSivh0$@~ea-uAc*gnYj z%RUznGDd}81Ue{5(u(ORfd>1(mMLYg7hW%ho)uBEU0s3DD=@(C%SK%)jiK5G%BO_r z@+|4dzPLD0lJYS|qI5vmjynWr03}xgWay9~7B_xGf!V5F0-bKbo!&&hhZ7(?i(mip z?>jPwi{q?vZr)vcom6fz^bJ$-mpx9V# z0{RAcP;X1+?!ik=^D1v$C@j3USd(#xKPN0EJ_Z;3E_hI@GFh0jn>|O2=C-S?cv84O zmrKN-mGe-_S#2-8limw(ooiBd6GxEnoi9(0Iy)hV*x|oFGl-zVX0%vWsPaw%Gc~$I zQU9kY90utzi#YEVv%$n#JCL=cgt5$|%2@MaNv!U6^ zLLKFC9_v6z>_(pl{FDOkf1Y1EF+Ae9pfIU7`rS}{+Ti4M=Pvp6fjm!&Kv7>EyCs2S zAXjeOH-I)b0-XWa`h6--VdeZ)7NC=qeEPd;U3I<%V3AUK_3duVbj7+2t{n-8)mLLA z)g^M1x;3)ec5(bzDkHl0*X%XIpRdI7T9oBun%8AP2EPW{w_`|pT83dBoLBaxJ-1*n zsW+_>V)Y0L7GKx*c7No}8_kKwk$|HQm|ozC6VTo`gOT~!XBAm)#(jQ13i3~$8u-eu zl-A!ZA{nQ{PN2h9l3lhBKH)9kSOyC@d+zRjKs~rF(LR$~m~e31a$I}$p*PXW-L0*P zf+HKSur@9`ogWfE4N9sLwNEWiasVK9q_WnG6XC+Dby$TsV>1Ukp3Ci8!8Aco@#L|q zWX2hZVv@0H1>CFv>_p}7BEJUEPm&n%D=I62>Jt`V?d)8V@B~HJLwb8~IViY%)52Z6 zJRgzN}Y`J-scuFA}Px94<^y1 zpk>i5rF@o{{@no4F7(!$tb8vroj*|Kh3XCpvB3<>v(AGU4M7B~iBgai?eB12>T;>I zrD>PW>}xT!b_PWz)R0nYW4SK7O9TYg$k;6q{L%&KrZ|oraWQX`pIt-hNVMKajZMeP zwD!}4vx{R$65cztCnGng*pj zcEDSH4x30M8L#9+Ch9*`>>)7>em7^d%)%5-LU1|>XmqnXx@hz#za;!JzPZwG&Cn2nzk^Ckq3?yt2!U=S&R2Ed%>hz7j9K3IBYp6_ zd#9?T7!(J6$Sz{rlYKPc1A^NiB%`0Zxn-@Gt*x9`@9LdlD6S)SW&$kJaL@mHE_B*jbv((IIpEbHb49ha~NeM}A2i`s}pE;n>VW+n50OuJPZKl+xE(yK7xnlIJ?wkSeXfG6aZl4EX8`9W3qvTHd?ldUyV(!eX_z*W}kX z_H&olrx2CpIN4YW2_%Kmf>X9o#MG*iD2AZbDXRl1VQx&Y$|Dt@8m9kc}xU` z%{(NM8lX$+PR{5eHsI^C9BOJJ-rV>HNSlE4%8^sr|CDb5LCxIt0xqoD=hYB*1OhMP zm)V|Orzqidon0p5}LkMCkeJr)uc&U3YuP{j_>9;q%yWpO3(9=`gp<%d2^`Q98n+{Te zOs(=f+gTt>A`83ubtN4pAktd4$H&hi?otUWzfxOnYJV)>>rjqgc(*FWMg7f5v4`jTaK(G25istS7uu77;)x=-4EKP4`rzM2_`>f8yPH zCl$63&e#PAlfx;u*4)*u#RNb^VsuzjyRsfB@_)fLbr98CB5(1JG@w2Bchy%at{|z6 zKY1DR{>PhejF_6%E1`3;$ic0glB4xAXC5^va<)49X!ONQbGUu*IWxtju<*QYt1Zw; zDxwA;RQ7KZVd&fE&yCVwC&pj`WMV6+%nqRc4k`RG4rrepIaA|fzEiC zZ%qze57R?z3CtUxPPNSb>c=`(Vr^`Ki_DQVBwlBLxv!E#0BvDG2Gm$D6wUtie1~de z>M3DfMQJ&=;o^Gesa(S-9+kkoKxn>+rpaxhahU(R-2D<11R~Jc^)*zipn~jv14U>i zsrl6iIRpNJdjH>ei9;UuKtZZurN+kZX@q`+(l0AFE6c`2Euy}PiF({0#VRFvd4n_U z0mU^3T>w{@EZAB>;{=3;LVr%h(no7}1zj5c)G5?w0cnEO(t4C-B?$=@`YrZzUr`QR6lEOXQHyf2y<(1v4%SQ9Lc|+KiG_=avWnC&DE~7M3ihH$bQS}cU&aykyh)R^O^lh zS&HlxpK=#QNR#Ke!R9y!sX^c{JCIREAdv*uZC*%DNRAzbY@nLr1*k&{!-+B=Ew^TR za`FSkw9&TK06py?^nHG|f1YI~1G=yg7T0-fOq`?pugq6-c)!737*_$J6N0FKy}it_ zA}ZV8asQ5Wv>+JSsns=xs|SO_U5@hw0o5osJQ?wJNWBAQBbQmc)M9H)yZ*PFC)xuT z6ZL=ya?bz-gd4k0AU)(+kyo1aGBba0J&nQ&pd}sXMW&@aPT|?dUbZ$2w^j0&?T&@X zZ~zxzV&0V;vFMll=3gMt{eH`EABcl~|{_a>-S z?Fi(_M&>Kz`1_^r&U)Ca^a0`n5TFJW{>&J=*VlYwrCzXwI#{q5+FEqyg+)Oo=*UvH ze};%%s~NUcL)j6K(GWN5>Q7SFtoaL)q1BdK7|JSjPlQrMEI*q)@Wp@Om!s=N|j+aqDG zhJ;!dT0<8dusin&IzwowOJa@;u=YP)pOE)hxgrI3RpxsI8iC{cGKIUI$H#jqo>^0W zBG1y@P3`I@R{gK)>TUNE>s4AAIC%LJar*tJ=!gkHssw~X{v0FG!JyEG4kianm+i?5 zuO_75{zwhz^r8J;_kJlUNtcyXKcII##9c&zK{~$g#xOU%JyZ35fFz91;Hh_FYM7;Z^o_CRarO;ctKB4r_5O4YuF=h=)m;492_G%}{!;f5Q8c>tw=-zyTd8tw+b zL>%JBD+RTIWc}3DRWu{ow$+7Ad$(-SzV6LW0QzIi%((jqUm6%1liaS#D%y;s^4W6R z{tbZB!D_3!8pR-1fV`eRU_qF?6?h391-Ni?9&`j#I6FgP62QP)PfvZSEb#A`z{P#= z1KGX6AHvvbkm0Z;S*Dk5`|O_5Kiw+jH*XLj+7u*RQ{n(A4sP|*p7KfmrF!!{-2djP z^14(P?l7quEHN6TXKrq9rKOCFOc~^hV-kt;l!_|JdBVu@LLa^lx&56A57L$3Sf;~D zxZ_w{B6M;7^(8YP=+9mq(QoubLGx7HKgK@!S(;l|K-Q;ekA;RKMVD=HokAN6Qiq!s z-y-IA+!|kKqfWkmV$0@w6``x6tBwHI{2f6`SqTXUi$Iy7li)Y{TNC@7OfdQB?Sd_ zy=TXVX1Vv|x6x0fu6p!GT8#Xdcb#`0v^soLSWYeD*00(aFL|%HEDy%PMP`JcFz>+L zsV6S!j{%*vOoS*dEMZ5)t^+g!*<8;n*FxRKFlvG4N=g90mu$Bf&RvXPkBL{~;l4W9 zp@$6PaGJG^P`bXN*Y>y?JMz+11iyV2q= z5d*eX+&bz5%>+qMQC+l!?VC+7kfP7uouRj+8#abAxe#_fm+<))0nB3+M zkb3%I(lb~}Z1fxwOg`_h-FaWAx(_cd&H?EalZ`-ZdyI#l_{ozUt`6lvp`(#_qQ)@~N zMXICoMojGjTTf~ZNc2!%nB^CMpzICp!&fgpxvaOp3)N9QF;4vZAb79Y@7jS(+p%Pv^1Z5M14z%^Dy!5q4Uc1_H-XNIdAWuY&&^*mA%X;g|*=qCbwQHpp+!N{;#bKb_krY$4=HZ(4KT$ zP1GO8$4e>ESzq0zxV&;iI5KmA3X*_DH%lzC%C;Yu$Yy%~MOd2zLePRCv?y^JharH)dfVL$O*o;{uW+oe zO}&*7gWA=uOy6hkbRJk~9F9&r?_4xg)ojiu^kFbYtx@@sLNYA9NaHV=0hr5_3*?E* zoHi$;Wfi!%tfwshN_VFCy&)uqWJ*xwfYQjmCgMfqaATY?$;RQr+`27S z1A`(GWH13n$NCX3;q}33`vP=%jLfVIz}AddT2iE;!MTKlnDyUN-&@_|W8#+h-!3+4 z*Ip5`po%!5r`Ui~J1R&A1_z^s;@DJC{2uDA5K>6W@K140+Ts}y0&fHazTSQ!srGF% z!^hIigLZ$v&HwLg!&gnVo)poA$`3&DtDdfYLzzwOXl?!b`jpCpFvq3pXOkQFXk{IR zU0#;{u{EJbYQXs3o~MOHvbQo!4-PTaQ#P;DwC!?3=;=qlz6r$ezxmggWgm$Jl5RpZ zRn{nS6yb!Jc$@RpjM|lcdG{MVME+Tc>z~|LuZFNNmCA;4y8%v~^q3@`l{uWfHX)I? zbv{FCqIB?d$As|J|HIW;M^)WLZ(aoHl8_Pvk?wAg?vzfEZV;rqLAtxUrMtVOySq~w z=J5VzX3d)aS(kgi_uO;#+534u&lFnL>GBYemG?OTXB8_5?)*MkO*HONYldaJVO*jG z-vBza8Ixj%Y{rDc!(g1S@#1Q$C;}Y7AgWF6Z_e7N;&I6^1wpEU1uM(-ksr|^b(Lpk{5=P@w>D(H?v*UVC z?tI(C=bs*@zn&!f>#gYB*XwYymIGurpXUr@G7NOj&;Js~iP$}BJ3^ULN9hXopOtEe zf&9nc>hQu<9fUVvzMFD+SSVr(4!g&60i>|u(bk)XQ@VeryHWy0z*Tn1%adSJTk|0a}yFy`Av>pAPGjHz;@Y#fOavmjoXyQv03BJgVEF8Bdo19 zZ_tbA>mcPj$7?~Wfy&f)tx^}4&Ej=E@?X|iC+f!) zm*n5LuC{^;;gVXVkaY$cVbV+t#6WkU8dH5kILg+iUE$$ST)5;~SY6JQ_b?#(icr2- zsThbn-B63lfzkk6snEV=)OU9Ewm9k%9w}w3<%fYVX%xT1(V(9YX1~Y*@N?rOC)gq; z?wcIQxk7i}BF@hGGBFz&0So96zj%N8BI!0V+x!rcd6$j?KSJD$oYg~2LqsIR9$(Z| zZ}Y={1?{t3{UH~}JR+VUr6zrmb~wQfpz`4`lmFY6e3Su~lSWqCysiX>{-XWuZDyMd zV2dIs(OGpqoBe)+!e9yD-T=Q&(~0JW-Ggc1EB6I4mM@!P z>xQRgTE+8O!i9+1eGn}(rFbBlT3aTXjQGBd(TVYZ91vk0(l{}75GXxRmk+CqZW^7c z0P@LEw;YU9*`YDY%-@~{Lza(cKERQ8R%aDkQ^QeiCm+m{8(Up{4-K^@ zDac97d<9nDk2td{4)>*({PdO8W}xbwe|dfy`E~F$w33PORRMLN8j&uG@~N^bI5Q;g zwB18Q(`{;SN`LVQ`u@U>N}9x6$sK24STrri-s2 zRlx7_>~fxgNR%nIIQ)Pu(Bydq(|09879 z8Y0T=0gf8Ekn#}JMU2ziX(CMVF^ za$G;$P)Czf0z#7g#U&mN<}~QAh2XLP`fj8km^GNeYdrGuI#x8ur0%-hF!K3GyIo6z zqbJ@0+n_xd)3JQAq3VOu13Zj|NMRi?YXcuc7EJLS?d<)>|zhW z>%)0>3B;I^n|(k^!Y-5W9q3~Ps%L>S8!Zg&1f(Se<&!N+QAVy&tAn=Q1{w4%X{@se zOwc#DG$cG1W^6P^Q-P@`D^vPFcz0Ll;Tze11b*hW0G>YR2P{_Zt17&pW2GrU4Ulq< zFIRhid;aLLVdLqfvmAz<6;^@Kp`BTUK1C)p7A82#!TB9m25$OjejUIgL#t#^K+c$w zcDp_FVBD<0Yja6qXk^flh;bQo7oEjdNow4|+FWZKmzIu&)RC(pFDAgv3RLjV6OCG;afF1mIu~ z+DF#vH?B{rtqpGFH9D&Y*jC_t>Xc2*A`n#gYU03aFn|qx&RZB5n+vwUe1#25SC$7<80O=K5B6FvE=NE3?5QhXgAwAG z<>k|mb_c;c)$hdJ^-)t~ z79hmX6BAn-jO8Vh`FJu8(FtVly&#LE=_8kY5y%6RjN@LekpxuYji>d|)Ly<9*8=I} z=IoH$F@HeI2W5!fKD;nsVyJEW?>l}D=rz8JU61b@J3ak^jhiVyRR53}dLPF6>8;>n z{L^-m6;Dc*COy>ylH}_Eug71%K7_mp0Z^z6k9$}31>83&E`K^r)h_k`+qL zN1ddC&y1RF9v)(+4~unLhQsa0*td&TpfTRYZAZ>Y|H|?OzR9{zJog~gr(o{xBcFSg z!zn;Q&m^;@A1&h@xY+NFZ|&`Yq8#KPl)gMYl!xJWrM`M-!ANSJ_DIw9mQhppeRe)( zt~@8!g+#Eo5*?J}X-_~}>&IWGnQ>|(qg>skDN?9HI9`l@K*BM=84{7NYraE$IKqiX z`+fV)7Eq(DIrk^mihRCXqI$f5barsrdQHWGMVYOtdcgizqH9`YV43#elhxYBXVqe9 zWmYC09v+6j)1?SVWqGBc)*M_+mzPyW1%JSui-CppLsN5uwHLn5U_r)T zYX!w&4;trQQ6a-G`4v5`!|H5S^oAM0%l$JL9s^0mlpL3qcyRY^YqJZM`-MJ0wUv*h z4slsT0RL2tM%_+`H-)icP)b(T;mvB(Xc|qatppY+Zg2c0C}TzofX)to=))a3tUPmw ztb=C#j^&g46O`n?d*IR6rlF!s2Q)z659hR5E5xaspyt-~0WJD9ZVUCP78d}~l6HT_ z*)D1f8Yq2-0EC+@Z07x95`d6W&u;l~W2cK_NO3ExQnU+G(Ld4??Sby$VS1iQXGNIA z;}MZTc|z{g)?NiE92#(saihS(PoX2E;&}q|_w{@k{wU!pBIi<#KIe@ELIN^(x)f@-sR-u@i%g06ax@~DV%VQ5H#?Z_&ht>o>sWL9diI3W^qCe`83V#%_C>u( zxPev}@EOg;{C|&tM3R$o8tdja9uw+u1>H-SCX==m0*^9atp@&7m;K_wMpSrrTdsq(`u3kb=2dW9&#)hE# za!g;qqXey^6u=e(j4Z&R4a#hC`Dtgjl6XZlj29B>^K$>Y>M|S5-9ZdaP+~?pfRT~2 z0bD8xtkWxH1&8|zkGWvBicAu;>@`qur@)mve;_&(*XC(fYO%)bkMpmeQizoYH;1p# zC{*7Z@Tpw;2M2K2x!T5L{k7U&R&*a7zr_5qyN7{cySrB55$yviYKJz*zXiI2-5tOp zVy3409TN1jLz7w1PlWy_tYUpI0C-Y>4kv)ifjt?()?t1}mHwaT@FxbHRkx8O3uXo< zk3;3|{mI$Z7lMXa!%^;oO1b3% z&9hQV!$VOB#6?-xxj1udU}^oA^AlKphmBTQ>h9KT`FKlw!VuR>rCyJW4_*lQ^@aXg zx1#umE-go|w8^?Y;qLzruN0(j043qI=H&~A5K-4%tsy!TF);-NNRDa-+iPcO=Y-=Q z6N8$=+49+96=3DhdH)G~2M7*P@=UB{i=`T=qp8x|Jm(X(cKU$4)d~kP1qAtpg=c42 zSCtKFr&x`?26c6TE}+M+1!j<)Ehp6JBk*l@RAxA*8;a<&l|}iyRU0Vz`|RiFSEI=Q zBLB#J-8;nk!t4I&;RXqo-eR$~BZdM@ldR~SD!riyQ`DK`&Vc5l7w z^Vp~9BH`7xvDz<1q+mluoZ*wqwzmKh+J8Sb!%#m{6%|+gL|?Z8vfv^UGca;v)2x@1 zkv|8!?b#3&<%ZVS%4@q<{2RK7cRv=uOjs`l>Z`V@vjFbDYu(xa56N}J$ z*eida!U5MR&bzzN;4p&olhow`c>rAe-Rz3<3}QlobQ-lUB1AX#UGnpHznBk4_=nEQAh`R1}js4%-dj708@BF#}S+Maxy%iH;p9<;!3@F72CH8 zh)WhX`n_vwTHVc;1&e<)6|i5fa zLrIB)E)phvvrjmCA{X*?2C505fUjHfpU9)imm(1n6C0bXuyKIzY_VM7UTSr-lS939 zEK}24+o&uTM>mW^iHcnZc-O7A?+`|)xqS)s>{AEqf|RJ)`BUUHG;-I0ZR`BaSskUdMfrzQ?J$aB0%VDLI`_Y{kQ^Ma1xPkzQ14J<9_4Ii-Ki&cv zJD6f=YCG{WQpd_=Gt2ug>C~9!r)o_-J>06aQ{T;HYFzHvyi6S(!FasTT*aaT{ig&b zZDv9*-iUxAK9GI3aat?@C*WB4Mykk?3qXj&NQMACG*YkIV9)vrQgL=+D%=yR0ak~40zNxd@j?{CCQ0`m( zu~%r@t>fq@#Cyt4%TaPB>wkd=SnPr#JCmDzWG+{0hyWFtH6DQ&j|sw67fVW?u&8eV zIHW-$w)k6KH?K=Cj?On^*+7uskbG#{(rUNAG@kk2@r{8D@{p9FUan`igV2E!>Q%SO z?gYYJl7Lt~FmHJbYZiwI_vr$`Cd6DnwHqO9Zf#-HS=FFMy`npy;j1E}zX!HXosB&0h)laWFcm*3=&-_v6w zvj5(GL+BRRn&sbsW8GCqLJCzl2Mnb_@oI6i>H&HNfQ6Kuk=1Ds*aJ4JFc{>1Dhiu_ zvs3$1g`k0^P%GsP=7pLAax;^YbW7Z7fVpD85V+UV>ZV!rePUx1VUkc56)K>_Jo$JL zj2Ku!P6ZXyx7C3{ut5geG-&<-19u>(#HgMKiSv8S!DUoaOVJVnLsUGFp@t(g4{Eu) z3Lwyz49XSR>;vSiuPd;hZsv<5g@t%DM7!?K_H+Drs8?tr>V2J@;_EEw?=qOz{pS?IqOk6O7mwLV6 zyp>~OwLAxzr1H+q4R(bQl6$I1IGwq$-nSoETAJnh+`u&0XsDmC9bj3$3IN+aFmAm@ z9(|fJo)BX8Ybt4Oeswfkt|(57SAdKWr+d5O`)jqhH)?92d2a(X8WZ^{{sN&YV9Eqy zRm#q;z54=_@!KBCfK`IE%fAp8cM!z2t~1+Yr8INXX2jL8)#1x8fY?JcNTXfQ?X?k+ zw@#q#`#alo&o`hRJQfMrv)v5~E2SBl{`1GA#i^<&@;y`WY%v=M#Xhp! z+nBKH2?jS`dcLy+HmkL+06kKWRsF2qWL)G}BCtJScZ(EyZP zw+Q{MlhJe^S#ZX#4(tQr>@c&PZS=sX2&!wPO1a?i!m-^?iI+ z4rGR!-rX9w9Ur&2KK!)5bazl~0@`+za4KrQu-Qf}MpG_{MNfX(aLm*k?r{FnCg8>f zK|#^@Toqibya$`;kFz?Rf@rzm?%>n~RWJMfJ6!C9`_Y{1HY$tGlr2X#;#Z_MvveXs zHV|Q}@H24UYv{jjPR>u3-~B!CfqA5r2P_-tva(Yr#**DVa-Gs7G5=6*Zhd`&^3jC% z_!v-3OeEWrT>;>bqMjY^+T83401`?uF6o2}Lw!5vwRXF8XJhEmQ82y8Bm1&ew*=rr zKxP3-VCnj3)OAN?L5CXf5+!O zE$KQcXh)-bEU!G@c$kIj!}zQ>zm4l18QM0XJ?Z1e1l3Ym%%OI)rwZ({XwvBs}Yv>+1}G{D8*0<=Q4xw#3vb3!IyN2=8~ zGTJ=(batkz#$6(eUyDokr3a-_ZFIwD+w)})eqe{^F1_lE=QiO510b&^gVKYzqd{n>E8O#yK(h-*5CV}Z6$i^lYz$7Qh(w2`-C@EPy znzy0TZsv7BjstiI(8>pS2RZMeUG$BrV7ahBIa-W|Cs+YOP{8K%-qyqYF`+7m5ga-t zfhZ_1k6S@tk75}zZ%7`#vir-ewmtJP^|wgdqk{Ce=-f~q9w4lG4g7oO)9cuZ1=>#6mw`V}B zZ*qSA3Q=u9RS&cTDl4CKo-S4pMa%v-JD{K`?t2dUY39ZMg}*m|r~p8JM-7E^KRxvT zzY1p_7v%7e?qcBWFXn(Q%Z+p+1D2>BZ%Q=OzU- zws}2}LlugOwmJf_tTP4EJblK$VqsxYQ8`{#JlkpBuuvbxB;#RJFE9B+!$gZbH?doP zU)mlrJzfaaUt#=f`uCZjgN@?F#w=5i0uxglGj?NGYVTP=T8R*2`}*o4Dk?)%l4bf0 zzNXk=bGJ~@X!8aa1;^b&f8?K4*|&5=bSTND%gHHe+QKF#{1Wg=0V**C1ds zeAC@@_2WdQMft_b9S*yG2u|@Gp4a}mBT<3~KX;>aU!HSbAkuI|!s+4*9g&x*@LNQ^gojSR zcsQl~jfL?0?BCcBr(JAr9a{)PNJRUd)84pjVj_HR?~Un_Y#(DP6sYD1TuED7aZDm#xhL=! zBbT9gL%)NMJnn=yM2k0Ug~erLgw=2`augMx`3kA=U;j<%HxhIu{!qUvV;fO%?G*^E z<=~5pAUL>3H60=<(w&4F77RrY3?M8LC8Dn1>SVjr3k^RhDdFfA9!Hq{#N%zH@ceLp zwSRZAEO~jsS*BSy{fBsZ0o6vOjQin`&O~XtHD5+vdg=0H)g$}n6ziMfk=s@vyGj#G z&-{FR0HW9I$Czz9JI#1nC1zIAWOk~7k(Ql91fCBZZf?n*Z)j9hOuKIETAB+KBs+*? z8T=cFT}P6}dwyq99sRK(p6=EQx;afhoI!%OXtc+-+k`gB5!U{(!4C;Z{umQUlvyB# zt3kA|N__$wjpjp zOHM`YT5FRXSnv3->YknC82;xcPBe8XmOlgs1=1ROJO--i`2;aB-QDe%)ix9Z(0LWt z^Z5#`gU15Th&||+m{>ABQBQJnxhtzu9(9qNExJA%$ylezNEiJ6E-2{C%BjVJPiePb z_n-NUN!6@qSjxc^1vn%WEK=$H8`h>*T1YrJls9`L-*w&+>(Kj)LozDhu5Ig1ZSbr5 zm#e>naBcjSFB=aoPSCgmS@%c+j0r3i?|Hvw)mo7mSUOeOQ5?k;ef>4hNK4A|#d80K z>0f)>cE?h~-)pfSHfm~>kDuiuQa(1??Td?wmVF{;#=`EBR?=3uFz5#1t8ql-W_x@JU!3=&ReKAesVw)^0u@c6t}b8V`WuZ;kbbQ&T=I$5cfu>r zLile7RYu`hba|B0{~Am=gzeAZtjP!o9cQSEv;*oT;|tJ|s{wt^*=0429)j~+@msMM z!;+#^_(w0H>a)vlYp2^t5Q$AbsD0QXG*hz`6%R~C1T~e7_^7Ctr)_tubox-fc#b5k zGlTF5)9HLJ@hdvao zaDGQ*6E_gU8-goMbwz4M{L)(FT26~7^w+S@A@ z5*!SE|LnZVTQtRt;{H@KLxu=5sL8?dV%)N38x44ULOLs-%LJ~6|?1*GopOQI*Ry9!90J$4Y4iju8cjKTx1 zHX=IKhK?5%3*iX&`Jmp($Kooa^APg{*;677Rc0sq%f~4DV`IS~qu7w!g>Bg^%g@hox_WqXRQR`* z2W;}zQ0<%)UtsB!Lv*J;2Tkh@BK++8i{e+VJ+hueKC~zpP@s^#l+FNo-=vs}e8&5< zPELvJ?kJLk8XsHpku9vqm9DP$`Z|gEBYvR*l_$fJqwed0LH3LsK^i?GF8p+=!sJJUTfl>)yCL=8-B`tVU1~Nis+xpYG*j{h5vyXMbK97b(Dy zFfoOXBo|6#&%NB6#V>n{;pcdkdgLWyNXYU+ajo;-GVJhj*9D8h#b z$``l=aTC*fWbh%pb3}#YNW!jMuCpZg-r^K?+u(fmA>c`BeIpnE&_b(xa6CJC460`-+BSP)b9JVhZ~B#M00d zI%D=5ZUR$<1pbDmx8eAqqFKuV45zHjhuEl#g;uv80s^}hi*}s9 zvT9k7?6TGLLY!hcp!D&~q$&%1eHR;l25$L5;fz1tnLyL`+J9v|5vr3QA5WyTAca-?Anbbgpwg{qf@Xh>D7^ z02n1J49BP^I!#ox_i!3DMc1wg-w|!!;;&*Qv*I%|H}jb(izq5ioh*ZG&weuhTe3-K zl7i=9yb~^x9(E1(8E)&rAp(9A@=)CQkH*`|tgNgML|xr=A`}8SX>Q0*?|UJk+uMYf z2ZBsDa2PFS@=42$N;Xd{r`q_gm^+>3-LS~9yHdy*tuCnOXv3ENZ2I~@#w>>64=o9h z@pBO)36YSjf5nCeM?pgqkJC?W0q?wGs_;=4Hzb7Ol9H*DDe;^YsxPeX^n$^O%)2yM ze!N3UN*tY@aNC8~;@5UZZx(2r1~p8@&W{VRZB&#dn;2@vg24U0sEo_)r$E zABb{G5La!WQKm|IQrOR*kJN0O?s&;$FZRN^^>-+}P}Oq=&9-uwKdmHKD`u`{!(i~P z*7K|5O3yDXnI5U`z4+2}#gAWq1V$G6Hs|9~FzTTF`gMPA-n{+EVZdm!{ERAGp zX}h;?HI)?!e)->V^z0;YsHW(TdVYs%=65)}YUwN=lEZAAuz%d%{{jc(ticfY=sKUc z6RuD2r>A~`%2uI@Z8+-b1Rsa2$K$P|0i+%S$REVl;fJ17R710s`ynvx3CGMOl57LshZ7 zkv_>7~HZn%{Z;B%S?vjgfcgfOkZj~;l-Kd(+%dm)<@5Q&}sZKWi z_UxdA!QOoMe3J(m|9<_a@6ub*UKd5hjC4+3+A!0N+|T#&&C)8F zY%U0hzYjNyGRZRl##)%C?EeoV=LwGaTOFCSv)f)oqfgh_xSaN?kloxc;)VNglS2*i z%a-3@aPTo28d`8LpMk!dbhDziX0wJ`LspKy!p}-(wmg4#+pYdmICM}$iHM3$a`{=K zPrtsMV6xog^k!cug#xosdi6DNlc|qxjdpO1s!}3(vfl~Ind<3@AsJOAg#D~=5D6RC zbo%Pp@(OZtXl<|N^FbLQiLMq#fP|BRkN0rj4pCIt(}8VixOOZgLL^aGREb;&1%cVc zu7Jz(>26?vtuNHadv|BVHLzD`hbGLTRcFBq1v|T%lIqT$AySjzxifUA>kTq7H>;(u zz+SpXT+KMeA%lN%;!8O*wOCgU1Xy^N3TkRj7E=Y_2HfTTbX%p0kWO~;ok&pOmPr*i zLXC!RwZ5bDH}TmgD39vSDF7EsF3gL2r&ph-ixeF(hPKu++pv6gbY9ygB?n zWUL&_;faj!J1Z)ZUm7N?^o2(|sXCRG6p&xv*~*KHKd&yg@4Cc!+JF@BRE^zSh{wND z&?x@dkKm#YW{*YS0ta{_%NwO5uOrQ8Y{gIun;H^@X?NrlF~@$8v~YwiGr}&eD>WXctCH#1A2c( zq@H_scZR>>awjf6|L4y>olcZ41uR@39h;TN@e0jn+7&W-IYj|)(`}x{UL%MD@Asgr zi;|E~FDsMtY-2T9ho2>p1bdU7Oo~`|a8{B!RLHua|1S&GxD&H3a8RwB-Jl#y?&^s4 zLEhi@Sy+faurmBPTDyJsj5vZ%H zYvE2)(jBIWw{v+WezH<4)NgEB`*O@i&b>9FFmAVQhA3%fY^U1VJVW=6nD~Id84AW2 zKaQr@DY{ku<+)2hpgSkGu<;Fg%1T8_ndNZXOXpu&JEzQ3$r^W*=bSW+S~*PLJ!l-w zn6$FlmZqoSL`8HReIeo4o$bO}Gf{w7>fMc;fNHSV2M)@dL7Fg-fKyoVxZNA-m^72P z{jRmQLSnHN^d2MW@|`YAdc%#B4sFdEHd8pHr6h(J^r%I{%Nk(gvkD7K!jN~HmcC$M ze1!V$Z`0AhYR+dC_tz5w6#kN(IxwOMi%;XK2Jpab5dKZSroRU%iFTM8F>oGG!kS;e% z0M}&dvj4pkBxI3-k9TAwH!8r=I-}F)DLu&BnB+H-rx)ToRxJ3m2oOVFyH}N zZ#jg7n^kM%O{)#Izec(je~l5y+t?I&qq+@BN|c3R%WG?z^Vnp)zl>An&9+Hk&d6m$ zEEww2Y_WiA&zIkkFS=Q5PGV>)!&q z3W?LQELAri1|7Eo$<8|<+24GoS^9BuSiDfSTvuNYY=H%NJ0Z2$GA_@}QO93JhI(?h z7VC!DtO__U8MdG<;tyv9cSd{!`j;9&V0<&zFUpujVCTvK*x>Z&(NQma&UR9;2V_(Y z-HIDpX-G(q%q>1t6z=25%3kQaD(M6XFc&v%|?3zJ3pH4u^o{t9_AGoi87v%c)w0R_SyEDpw6dq|Y;>zDpvB=3%-A_A39`435R+B$)!>AMQwRaMPDm_Rrx%_=zp&D|rma6vs0JG+tMp@?}@pqfSc$f_I@SD7XvKMkK6lJ0h0 zRFdJTxc|9=Nlm#)?5No~lY8;{o$sDPOzbaSYJaiA_JP$@8DW5{F+IMIpy=Vh>pt1YN9Gunf7 z=aTU8h6WY0-Jb~QKwFVasl8vuv4+7YB0^DFnUTq*!9t@(y!{Y2{T-K)7Jb-UBc_7W zS}fJHGLKK19Sv6O9W5V6A_kPT7R-$BkB^CdP<%vxIbiAGb#{HOFL?Jpd; zYKZ-&l1l`+!jAN_E{=bkn2J3nr2e9Ip_-hf^1LTv!RZ)|v%Oz#Qc+f{kRfCeNIE{Z zRz$F(nK`)ev@uXoO{i}7S$_z4dDgSc6r-e|NJ>&3awjAu&Nj7pswsM!?D_q2y$8Y1 zNXZz*@&R!|Ykn!^cd;Kc?qN=KhIHn;spF%5N^*8a1UOiBh43a<9DxELu(hKZ)lycB z`3IQmIXOu!pxff`m_8gO+}9;2B=C9n$>m?TnWcQyABIm1StS{3pkE1$NUX~MPr1U1jZ(0f4ddY_QBo|rw!3b$dtX!{Rc{M3s7_1U zqo$Tvt`jW{HL#P^qI)~tnU!@U`X;EOgY4*-56F-#Ufd`4^*^$~A|MD^C17^FwO2^0 zNaU%%@^oY=q;oml zBJkp3Xs9VAB-blE&2#_07*%34uh8qVxN|EB1oC1U7^oyZeX-Tismc^AROTFKk7Y&( zZP9I?yqpLY5n+XZh{XgH!lu1(yUve!VLwuPz4|H!n=mkw8PD(=(;(*O*Ue@t>F`Xz z9=%JWA>-m~*w?Kpn*_B?Vc~EC)Asbw^i+GU$kOT*kHFnyXP7Mjr7Jw%^&!vPWdCNP z=gr%mK!N$r?f_~mj}iJC@m&hYby`wi{oNHXZJ zix(HC`;Asd$bnsZH66_I#%HgVs^QYQi1hSsfBma6bTVJMEzj0-S5N>mgAwui0}~17 z#+)cLC6gGvnHe<(203gzydkH1*}X}&8*~;sFWKQRDrLD?|L-1c5pUD~K0`tEW&0td zmuisB=8Y8ei!ti^(!N|DC0g$yZ;p!ZXnwGpFU^5^ioh9WV0ML0FAyy)>DJeG9~>?* z3-ih&9~|a3Hiiw*Bu?XAe^DR3RxwM9s-tYvOVBr!TWvkMvFm!!KRaGLKt{HfyFA$% zfN6W-rJ&f)sj^-8ja8wfD%AZjLBc4wucWhjV>J4;qknPn@U#tQ(oIph7aVU^y@eeQohySV=DSSWy>(OF-3YWM0 zG#LsKavU3d0W}?8M)~UA`Wxx+b)KRk&`OuPZK#O2yq>)=8WXVcEXwfrj8}fK-7Sz1 z98dGE=7WHUytq9#*{RslB_dMC=Zp|hZ--f+1^lt7sKSPZ>Lse4pI>F^_&A&n>a0)$ zKvNN)p1xmJ>Z9vnTvFi zMZ~`phP9y~^jc?wUa#31GLNNMa(u)ZvlT(2S&)dySbDmh4Urp4Q4s0)C%-U>krh~v zrKh`H6_*>%(bU6QXBP0*#{cq}8!9Ixae^jQg$`elQu}`wIf=yruOx7;9u9twh)+5ng-T{-X3Q0vHK{SlQNtgW>gV@$J9 zSYnyML__JLjBdtkc0fge@%>P|pHkI^Z7S$u!TbAzD&Fd@)m3>C ze0sc>HWO9CQ)Pj`bnvZ&EiM>VEI&lxeeww4m@EaiG6_S&oJj2fec^y2lQR>cO&-ZN z&c$0X?Ym~PVhFQAfx(UCS_pn%*fhjm7E9(y@1Km+(WU`M)atcjy>mEAhL4|KrmmzW z522&t<~9TmkN9xy6ZZa^P#x^Cp!pRyIT=0qH#2FEnE#MR(vy>JqzW544?r*KtkTnC zFdE#rrl+L9Wd_fi+wX&btFpGj+f}N;K>|9ppMxXE&n0R)>D*p*BH@rQ{gB3@4 z3Zf@mb(X#Sq-gOSj&WuCP@;k!JC#eb96rhlzJA^kvo3GeOlE<{K3<^I=T0ffn%P|A zr%+Ow5aT)sVRob9tjP8^{)^Q$E*q=xjcQ=P>xH@~2*z${8R`DYONQ^E83Rl#>*v3x z#`KzX!A^4u9qP%U&c@eTFn8dPB8gcg^hQs3rorZUB1a7-OiqrY2dqk3n$P(R}KjMrs{BjRoJOxB6F^u=)~eldX4qFaQ)# zNKW?&A0Meus%D~ehMUA{8oJNg%rO8V4_`q+pYw1(H@D;^tnuu#zY76}z)WMr^i16B z?92TXMZ-7Vlfl?L%^;ko10@O7InaeD0Nv?MunLP?TNPVa5B~kTfQJ6$<6XeX237#V zsZ3fkuQRjK9l^(GwcEQ6-IVGiTyU&s{>BO@SKDl~D;&xaRzxrTA)DH`vpZ{fu|+%l zd(V#O8^#SBA~Qatujxi;M1!r4`GWpj-Ki%6Rsm_FP5(D;ie>JYt*r>exS8==UFggH zPzF7jrlu~HrRm~#I&EnObCHV4Q5|R(7lR)@)Rb+znw)(f#X)SYwTk~co1gYG;*k)6xyC<{B9JD-Z_{9pOXUoR9Y*M)DjuRNR ze%qC>B$#o`YQo@hE}db|EU+IOFLI40ZdN+}=_!y`prjoCoLx9?(gj_Lj1SsyUZOM3 zwI6G~9|=}7r>1gQEpt+EG_1~7k@`UYiTeur!VLM`?uc~eG+sfv3!)O}j}6?2YuQ~+ z&#vT9FZWa?@Abi&^;ruULyL`3tofr`3N0NdF8QF@H1qQ4gpY#qpjLIC!oAOIm3G%3 zsc#nU1A~JgQB+vCxah!Vo$++qR&}!Bi6VE)E$wj^rKq;nRehMoqd!G;G=4LHu4iRM zgN0QGY}fc)(4i-XGyIZH;&4ZkcKxU(UJcUk&PCPa-+%Ptcs}n-sIv+P@Lza-tjeim ztO>OQdvuqi3MiDFRg`{+KDc%H)+Q$>gh;vn_yKkuMf9;bkO*6x4f%p~I+m831clja zeHlSV??6?^#s1YQd%BC- zEPQQX)W@XV(#T^V0j7Tyn4B{v@87e;ThILbB^@5}h2iLaH=T~viuZWkMz`J5$KQV| zcnws^YcT6P_BLx@ZzV9+-i@NtsfOXQ@X{h94`E147m|7r!Ad@<2wwZ|^HR`!Ce52| z;lglqTSW8J%RnAxnf>&9F6#Fkg{l|Zl0daZcR^OdjFSUSNx3pz#Q!_%Cx(sn$2&z< z73EGBDOE*gKQ$IydP1Q0m|pd3rF%$uNTQ`>854sP;kxY8<+Hxk?5Ndrk~bu!__~|$ z2tNfcj&PRn<|mJW=o@7_!k>H|qfRdb@O~yH>9m@TZfD<*3crCiBj3v*-OMy?>-wUT z$+-QIDhX4Sm5t3=ICzq1VKJ5j1S9D$V5m**_;?-vRHBv>3As|rwgg%Oq5qD?&u2ip^?hpNuTIT*fw%3dVM_yjVABFDrKDMhm zY+Pseh4an{4h{whN%+f`x0RKkfl#QN=G7G@=>yZn4^U&OGg=B@7T%Y}F$qowg>4jM zr(lL9?xl}>Y1C`eV7|2H93_J6h}HFMwUPsVL1O_$2yjR(9&OBgd<9lIMYLbGY@Zrq zDlf#bu*mTqZm*CKT|rj(M~B6+6u75_$yCnBc7N%o(G-p!y8JS7ReLuFEN2%6m2w;= zCTs@qzHZ`{Cp{35Kns!S=ezyh*0vw+0^70!+wjJEh5P65ly?n2Qy$liVU|A@Q*#a` zBGP(bv}x8r%l>4x{b?R03+(T}kl>K5lXFoXe2Ya^F4h@P9768=S<&PH_vJz}4Z!4Rle6zBm3QY!Yx^fJvYi#E^rQk(G8dJHdWU!2c zMDki3Gfgc@w>Qul^!f_J@YPZcX^f2am=%Y`U?JXyX%g&ok<$pQw0|v=PM&CP_T_RYAnmBXj0SCDr`wkciRxBo)0Q^a&yxi@ zeAD*FTUS?L+Y*tfiU8w~f&wt>en?``vOlrAy;cE=oE=#?&^;T3M+k*M)^`J!55XqG z={c%BRj^rS8=F#+5<`Ys^o8iU_A=biQPR?u=ac1TeU=lgft5#hfbG4dc08SOem7-1 zN$MyokJ&m2+N`#6+guibS;$oiB0-Ti|?zL^by-ER^%q&I3oj zNseD$^tX|R-vo48>M60?Snt6(vyjb_G%?(r5 z0R=f<5;+J@1~Df(e~sU`Rod+n>1|>Grs&vJ=V!TqQ+A z8s%oZEF~-_x2Mi(=6@8>O)r<>S%1#`ARtw{l8^IbZj9=t9;uU4boKwn>mgViZe&5%O8;jo*S#|c9bn?CJ9SeSKl zexB6{f4&t|kd}^RyIfU@iQjd*dz<>5@zhNkNLN5tThY&G&A8-p)gziQfV&6V5;_CY zd13$#9(23MGrxqUob&k?zmJW&=U}^OY

    nCMzT*A_6lBXsCDRKOC8`bP=n75+p(t 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 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png index 1aa3ecbbd8d104a1b70d20986e61112a1db2cf78..ad779176d05773cbf060ad1d0eb2c6804053c628 100644 GIT binary patch delta 14905 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 AB>(^b delta 14639 zcmZX*bzD>LAOF38jhKYABBfv;-BMFPP!Izt=?1C6kQ#6{8l?mgkTg-L0n#<3b1Fzk zH%RAb?&Ih8ecbo`xbOY9y3WqE_qopd^?E(8_XOy1P`nXPOR+aDzHXc#$T7pvQqhZQ zc@@uet9|t>pKW5ih|~3ICzs;1dqHR|7;W{3N7f|E8)XuroIWFIE|u+Nw#LPIWAl_& z#Q`7t)oAGi*BIN{toff8yE7CinOEOzDbELxD`g`ZC-ITsgC3Vn&nF-t0FQ%FF*7q4 zJ-~y{5>blc01bl|RQ+Id;{qwu4y`7`#Knl>rDyGd-Fgo*D}M352r;;?^1ztR>lutT z72P01B2J-`b<`2e)HIUcUb#ZXf`S2L1oT2adhs&4hZRBdyA^ME!ez9_8LxkKuz0t5 z@zF#KFGOSq;({M#;2v)orekuP$C2Kg!g>6eY3Kl2FDG@x^?#!+n>CDMd7v$$5b57A zwnIV+E9ob7Kw0R`#+M@KK$&<2M5Ok-&C~m^Sw*9vPjm1gLkMxBZdwuFkFf0XQrX?U zX*rdTy7lyaQG(lzPM#Mvi$|{V*w9v2cc=ghB<%um2>-6Krhf4{WjF1L?Qq(9~J-yOITN&d;|G?*5o#d%!&3B@~jWtz4OMAIjaEbzQq zaRG6ZAgaL-LNHfAmU>eRjEd_?^o!(75r;4~E;1bzicbZXSYLR^4i8oCB*X>5 zy`H7Co>QQ%*q1QqA0D@!mD|}Og(v%+ei$}(I^N+W^muQ1IG@r4OageI={k?kelJ=_ zl8GIjuFy4Y$0~uA4`lK^mdMUeWqanJxK=$)Yv5L(y9)2gga}v@6d0j5d+w?((P6WC zBk*znjr72q;VCKn@M&TaHjs^Ybd@h3^7)!n)>?}pKKd3yHC)&YVXxd)Z+PjwRk){V9uespp&0>FJ#+cQyV7b<2w+$?r*2&9}U zB49<|^5`DvOD$=2wtwFKao3mkT@$3zO-;)2HAcw5k@EUS z2cu8@2n4SM5RgzS1`&R0m>;w3QMsmIu#n+Onrp6c-^xWXcnU!&N{ysrJ11-IGi&WPD1ujpk+Oj>Dcx#hXp)vfUT+ z8{X5#Cn~E-;oS@_zEK16uG_X6N@p<*84tgfzx zlH5k|A_F!~B@{gNdtJIY$TrTsX+jP@0f6tf%I*a^cX#h`Ij7LWm3shO<(QsA&a`Ck zAnoI(^11)`u1FZTJWIN+?f9YO5tay3{QIjkD;*xH(fGa1`E&02iPD>;J;h5SE*j@s zC4%Y6Hc*$3aC;uL_|AdwMk|AgmLjOZ2;|4F2_=dGWeXZ`@7z~{Y#dfoup(=~7s!8- zK3kYO6HiSVxGvBiNOM^dI!|x+>Nk{mQSjfY*q3RY%PdGbYzHO(jc7t5%s=OXIbH6d$_^T{`zjvncqyL6cJGRUeo_qMyZMSRztU z5kH(Yfzj}hY~4K4w{t0CHL$Oz~i^9#8=Cd@zTYJ}ic}~76Fxa+8w8AZQ zVWj?pO1ir6c7^5LLhKx@370vn`C?3q{elcUWuLMCFt_9Adi4g65A3G$@-@lOtLXT* zcJ0$Hqn~D~92Om-=Z=5gIjY@Yo0xGks8UFj&%?}#6SrH@N8*+PxV$!?#ccd|Kl=6d zs$F_ManXI1!h7^e!lEeek6X8s- z4CbyQnHBCsgHa;JhT=cF+o-kLs0#c@d3<->tbBrIp|M$)ZJ|Uc{b@`iv!<*^eH)c! zOEQ1CxJmN5LR|V&A*F+hH)xHv;g-L#I{sAhj~^8ieeBYA1?!SOI;VE|HFwwIYTB5r zu=3pJG7{ec%|DwrmM1XSu8~0G+=Wneqc!kaC@^GV?8F3%nPqT?#6{W^;wSeQEZgg$ zHiZt>nWGHS=}_}y6_ZMepY6Qd@68S6GcugyqJ3`RAM1|J#)^u2=hT~?<_FtHWZ)fqV#dR~NH~Ex@ z9KuuzZVBx5p5NtL(_4(LJZX4~e!#@Ca*Y8~MkvpWYFq7CZm_2ub3+WiCR_VwHTo^{ zi8T;ZXEzNopB1?KICizSk2FLt(lM#S?E1VIL|kw$R3RZz4-Mg19tM{ob=$UHrVy>{ z-&q3CbGbvaJc-|%zBkOx@GyKt348P2W`2278yXDuO-7Ei5{WnIq7p6XE&~GcKd38g zZ#*G9hZ97bNw4B*)ddk%tO5d(c(Xd_tz)ig>wjn?yk%6AKRL#Xl#2 zvWEIhvE()^G}6fOuNnHc68d<I#a#rF&|u-S@?U(|3WGvzYwVP5l%WyLJ!tZQYFvd^%O|!Ob_Sm#JFJ8Ef`K= IClJEVAqK(+r74pg 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 yD Date: Tue, 2 Mar 2021 13:35:19 +0800 Subject: [PATCH 048/762] Resolve merge conflict, formatting of about me and fix Ui.png --- docs/images/Ui.png | Bin 14607 -> 73175 bytes docs/team/jared98lyj.md | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5bd77847aa2429edac366ebe3e00650b6dd909d8..41e7e221b95a5ebc7dff44466274b8cb61015528 100644 GIT binary patch literal 73175 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 AC;$Ke literal 14607 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 RAXge19gVx{rMDi1{6Bg4z)AoB diff --git a/docs/team/jared98lyj.md b/docs/team/jared98lyj.md index f91cc980b3f..a56160f2d1f 100644 --- a/docs/team/jared98lyj.md +++ b/docs/team/jared98lyj.md @@ -1,5 +1,6 @@ --- -Jared Lim's Project Portfolio Page +layout: page +title: Jared Lim's Project Portfolio Page --- ## Project: Tutor Hunter From 3cbb5e2c3856008012e93e3845cc36da6731cd85 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Tue, 2 Mar 2021 22:00:41 +0800 Subject: [PATCH 049/762] Shifted view_tutor explanation to under Features. Summarized it under command summary --- docs/UserGuide.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index e37c8f92edb..28b59f641c5 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -42,7 +42,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo

    -**:information_source: Notes about the command format:**
    +**information_source: Notes about the command format:**
    * Words in `UPPER_CASE` are the parameters to be supplied by the user.
    e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. @@ -73,6 +73,14 @@ Shows a message explaning how to access the help page. Format: `help` +### Viewing a tutor: `view_tutor` +Example Usage:
    +Format: `view_tutor 1`
    Name: John Doe
    Phone Number: 98765432
    +Email Address: johnd@example.com
    +Address: John street, block 123, #01-01
    +Subject Expertise: English, Mathematics (Sec 3, 4)
    +Hourly Rate: SGD60/hr
    Years of Experience: 6 + ### Adding a person: `add` Adds a person to the address book. @@ -190,4 +198,4 @@ Action | Format, Examples **Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` **List** | `list` **Help** | `help` -**view_tutor** | `view_tutor 1`
    e.g., Name: John Doe
    Phone Number: 98765432
    Email Address: johnd@example.com
    Address: John street, block 123, #01-01
    Subject Expertise: English, Mathematics (Sec 3, 4, JC)
    Hourly Rate: SGD60/hr
    Years of Experience: 6 +**view_tutor** | `view_tutor INDEX`,
    e.g. `view_tutor 1` \ No newline at end of file From 846ed366f7823143e9dbc44f677b724b5a36aae1 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Tue, 2 Mar 2021 22:20:10 +0800 Subject: [PATCH 050/762] Resolve merge conflicts on DG --- docs/DeveloperGuide.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 141f1670088..ed32bbb20a9 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -261,7 +261,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | | -------- | --------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `* * *` | brand new user | see usage instructions | refer to instructions when I forget how to use the App | +| `* * *` | Brand new user | See the usage instructions | refer to instructions when I forget how to use the App | | `* * *` | User | Add new tutor details | Keep track of a new tutor that I have heard about | | `* * *` | User | List all tutors | See all known tutors | | `* * *` | User | View details of a tutor (subject, background, age) | Determine whether I should choose this tutor | @@ -295,7 +295,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 2a1. AddressBook shows an error message Use case resumes at step 1. - +
    **Use Case UC0002: Add an appointment** **MSS** @@ -317,6 +317,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * 1b1. TutorTracker shows an error message. Use case ends. +
    **Use Case UC0003: List all tutors** @@ -326,7 +327,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli 2. TutorTracker shows a list of tutors. Use case ends. - +
    + **Use Case UC0004: List tuition appointments** **MSS** @@ -334,7 +336,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli 1. User requests to view the list of tuition appointments. 2. TutorTracker displays the list of tuition appointments to the user. -Use case ends. + Use case ends. *{More to be added}* From 426d4b329cc964a98b9b6942354ca6ed7c8b072c Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Tue, 2 Mar 2021 22:32:58 +0800 Subject: [PATCH 051/762] Update Vinleon's profile image name --- docs/AboutUs.md | 2 +- docs/images/{glatituden.png => glatiuden.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/images/{glatituden.png => glatiuden.png} (100%) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 97d2eb92e20..80d2816bd3e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -27,7 +27,7 @@ zou.yuting[at]u.nus.edu ### Koh Vinleon - + [[github](http://github.com/glatituden)] [[portfolio](team/glatituden.md)] diff --git a/docs/images/glatituden.png b/docs/images/glatiuden.png similarity index 100% rename from docs/images/glatituden.png rename to docs/images/glatiuden.png From 41a6a9b68a6a750865a6558d0816e11e1d128d03 Mon Sep 17 00:00:00 2001 From: Koh Vinleon Date: Tue, 2 Mar 2021 22:34:55 +0800 Subject: [PATCH 052/762] Update docs/UserGuide.md --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 28b59f641c5..80adf8d85c7 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -198,4 +198,4 @@ Action | Format, Examples **Find** | `find KEYWORD [MORE_KEYWORDS]`
    e.g., `find James Jake` **List** | `list` **Help** | `help` -**view_tutor** | `view_tutor INDEX`,
    e.g. `view_tutor 1` \ No newline at end of file +**View Tutor** | `view_tutor INDEX`,
    e.g. `view_tutor 1` From 83099ec9f5c757490dab51af9f5c558f21a6ea05 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Tue, 2 Mar 2021 22:43:36 +0800 Subject: [PATCH 053/762] Update UserGuide.md --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 80adf8d85c7..cd465b680bf 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -42,7 +42,7 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo
    -**information_source: Notes about the command format:**
    +**:information_source: Notes about the command format:**
    * Words in `UPPER_CASE` are the parameters to be supplied by the user.
    e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. From 2e32788b2846a66557e71c7dfe7b881bca0c4aa8 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Tue, 2 Mar 2021 22:48:22 +0800 Subject: [PATCH 054/762] Update UserGuide.md --- docs/UserGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8bed99cf5c8..c446e63ae8a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -56,6 +56,8 @@ _**Tutor Tracker**_ is a **desktop app designed to help secondary school student * Parameters in triangle brackets must be supplied together in order as a group. eg. with ``, both subject name and rate must be supplied in order. +
    + ### Add new tutor details: `add_tutor` Add a new tutor and enter their basic details. From e92a4d8574de311a0efddce10b254fc529c869fe Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 3 Mar 2021 00:12:44 +0800 Subject: [PATCH 055/762] Remove trailing space for Java CI checks --- docs/DeveloperGuide.md | 8 +++++--- docs/UserGuide.md | 10 +++++----- docs/team/Winniehyx.md | 2 +- docs/team/jared98lyj.md | 11 +++++------ 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ec5c31de11d..fc7b55fe21d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -17,7 +17,7 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). It focuses on the Command Line Interface (CLI) while providing users with a simple and clean Graphical User Interface (GUI). Thus, the main interaction with **Tutor Tracker** will be done through commands. -Tutor Tracker is an all-in-one tuition management solution for tech-savvy secondary school students. +Tutor Tracker is an all-in-one tuition management solution for tech-savvy secondary school students. The features of Tutor Tracker includes: - Viewing of tutors' profile @@ -47,7 +47,7 @@ The ***Architecture Diagram*** given above explains the high-level design of the
    -The application consists of 6 main components" +The application consists of 6 main components: | Component | Description | ----------------------------------- | -------------------------------------------------------------------- | @@ -296,6 +296,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case resumes at step 1.
    + **Use Case UC0002: Add an appointment** **MSS** @@ -335,7 +336,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli 2. TutorTracker displays the list of tuition appointments to the user. Use case ends. - +
    + *{More to be added}* ### Non-Functional Requirements diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d726f49e003..af1ed118f72 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -119,10 +119,10 @@ Example Output: ### Viewing a tutor: `view_tutor` Example Usage:
    -Format: `view_tutor 1`
    Name: John Doe
    Phone Number: 98765432
    -Email Address: johnd@example.com
    -Address: John street, block 123, #01-01
    -Subject Expertise: English, Mathematics (Sec 3, 4)
    +Format: `view_tutor 1`
    Name: John Doe
    Phone Number: 98765432
    +Email Address: johnd@example.com
    +Address: John street, block 123, #01-01
    +Subject Expertise: English, Mathematics (Sec 3, 4)
    Hourly Rate: SGD60/hr
    Years of Experience: 6 ### Adding Appointment : `appointment` @@ -141,7 +141,7 @@ An appointment can only have 0 or 1 location. Examples:
    * `appointment n/Andrew Ng s/Mathematics d/2021-3-1 fr/10:00am to/12:00am` * `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` - + ### Listing all tuition appointments : `list_appointments` Shows a list of all upcoming tuition schedules in the personal tuition appointment list. diff --git a/docs/team/Winniehyx.md b/docs/team/Winniehyx.md index dd90cbffba0..174696ada75 100644 --- a/docs/team/Winniehyx.md +++ b/docs/team/Winniehyx.md @@ -1 +1 @@ -Hello, I am Winnie, a Year 2 Computer Science student. I like to spot fashion trends and operate an online shop that buy and sell clothing. \ No newline at end of file +Hello, I am Winnie, a Year 2 Computer Science student. I like to spot fashion trends and operate an online shop that buy and sell clothing. diff --git a/docs/team/jared98lyj.md b/docs/team/jared98lyj.md index a56160f2d1f..4c6db3a37c3 100644 --- a/docs/team/jared98lyj.md +++ b/docs/team/jared98lyj.md @@ -5,16 +5,15 @@ title: Jared Lim's Project Portfolio Page ## Project: Tutor Hunter -Tutor Hunter is a desktop tutor finder application that links a user with multiple -tutor in the database. The user interacts with it using a CLI, and it -has a GUI created with JavaFX. +Tutor Hunter is a desktop tutor finder application that links a user with multiple +tutor in the database. The user interacts with it using a CLI, and it +has a GUI created with JavaFX. Given below are my contributions to the project. -* **New Feature**: Added an Appointment class to represent the relation between - tutor and tutee. +* **New Feature**: Added an Appointment class to represent the relation between tutor and tutee. -* **Code contributed**: +* **Code contributed**: * **Project management**: * Managed releases `v1.1` (3 releases) on GitHub From 410515e59c8b24b12a7ba25e994913d097012208 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Wed, 3 Mar 2021 22:29:41 +0800 Subject: [PATCH 056/762] Fix User Guide by moving features to bottom of feature section --- docs/UserGuide.md | 52 +++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index af1ed118f72..30e67b17b29 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,32 +3,6 @@ User Guide --- Tutor Tracker is a desktop app designed to help students search for tutors and manage tuition appointments, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. -## Features - -### 6. View tuition appointment details: `view_appointment` - -View details of tuition appointment - -Format: -`view_appointment INDEX` - -Example: -`view_appointment 1` - -Example Output: -` -Tutor Name: Chloe Lim -Appointment Date: 2021-4-20 -Appointment Time: 2:00pm - 2:00pm -Location: Bedok National Library` - -### 7. Delete a tuition appointment: `delete_appointment` - -Format: `delete_appointment INDEX` -Deletes the specific appointment at the specified INDEX. -The index refers to the index number shown in the displayed person list. -The index must be a positive integer 1, 2, 3, …​ - * Table of Contents {:toc} @@ -163,6 +137,30 @@ Example Output: `1) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library` `2) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library` +### View tuition appointment details: `view_appointment` + +View details of tuition appointment + +Format: +`view_appointment INDEX` + +Example: +`view_appointment 1` + +Example Output: +` +Tutor Name: Chloe Lim +Appointment Date: 2021-4-20 +Appointment Time: 2:00pm - 2:00pm +Location: Bedok National Library` + +### Delete a tuition appointment: `delete_appointment` + +Format: `delete_appointment INDEX` +Deletes the specific appointment at the specified INDEX. +The index refers to the index number shown in the displayed person list. +The index must be a positive integer 1, 2, 3, …​ + **Q**: How do I transfer my data to another Computer?
    **A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Tutor Tracker home folder. @@ -173,3 +171,5 @@ Action | Format, Examples **View Tutor** | `view_tutor INDEX`,
    e.g. `view_tutor 1` **Appointment** | `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]`
    e.g., `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` **List tuition appointments** | `list_appointments` +**View tuition appointment details** | `view_appointment`
    e.g. `view_appointment 1` +**Delete a tuition appointment** | `delete_appointment`
    e.g. `delete_appointment 1` From ca04066a190809d895280978c908ce2aa857f957 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 3 Mar 2021 22:58:11 +0800 Subject: [PATCH 057/762] Fix DG and UG formatting --- docs/AboutUs.md | 4 +- docs/DeveloperGuide.md | 194 +++++++++++++++-------------------------- docs/UserGuide.md | 86 ++++++++++-------- 3 files changed, 122 insertions(+), 162 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 80d2816bd3e..ff1e9b29e57 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -29,8 +29,8 @@ zou.yuting[at]u.nus.edu -[[github](http://github.com/glatituden)] -[[portfolio](team/glatituden.md)] +[[github](http://github.com/glatiuden)] +[[portfolio](team/glatiuden.md)] * Role: Integration diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index fc7b55fe21d..76fb69b8fa5 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -3,7 +3,7 @@ layout: page title: Developer Guide --- * Table of Contents -{:toc} + {:toc} -------------------------------------------------------------------------------------------------------------------- @@ -36,7 +36,7 @@ It's noteworthy to mention that the Tutor Tracker follows an Object-Oriented Pro -_Figure 1. Architecture Diagram of Tutor Tracker_ +_Figure 1. Architecture Diagram of TutorTracker_ The ***Architecture Diagram*** given above explains the high-level design of the App. Given below is a quick overview of each component. @@ -49,7 +49,7 @@ The ***Architecture Diagram*** given above explains the high-level design of the The application consists of 6 main components: -| Component | Description +| Component | Description | ----------------------------------- | -------------------------------------------------------------------- | | `Main` | **`Main`** has two classes called [`Main`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/MainApp.java).
    It is responsible for:
  • At app launch: Initializes the components in the correct sequence, and connects them up with each other.
  • At shut down: Shuts down the components and invokes cleanup methods where necessary.
  • | | [**`UI`**](#ui-component) | The UI of the App. | @@ -79,7 +79,7 @@ The sections below give more details of each component. The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class. -The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml) +The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2021S2-CS2103-T14-3/tp/blob/master/src/main/resources/view/MainWindow.fxml) The `UI` component, @@ -110,17 +110,15 @@ Given below is the Sequence Diagram for interactions within the `Logic` componen ![Structure of the Model Component](images/ModelClassDiagram.png) -**API** : [`Model.java`] +**API** : `Model.java` The `Model`, * stores a `UserPref` object that represents the user’s preferences. -* stores the Tutor Tracker data. +* stores the TutorTracker data. * exposes an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* - -
    :information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique `Tag`, instead of each `Person` needing their own `Tag` object.
    +
    :information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `TutorTracker`, which `Person` references. This allows `TutorTracker` to only require one `Tag` object per unique `Tag`, instead of each `Person` needing their own `Tag` object.
    ![BetterModelClassDiagram](images/BetterModelClassDiagram.png)
    @@ -130,7 +128,7 @@ The `Model`, ![Structure of the Storage Component](images/StorageClassDiagram.png) -**API** : [`Storage.java`] +**API** : `Storage.java` The `Storage` component, * can save `UserPref` objects in json format and read it back. @@ -138,97 +136,13 @@ The `Storage` component, ### Common classes -Classes used by multiple components are in the `seedu.addressbook.commons` package. +Classes used by multiple components are in the `seedu.TutorTracker.commons` package. -------------------------------------------------------------------------------------------------------------------- ## **Implementation** -This section describes some noteworthy details on how certain features are implemented. - -### \[Proposed\] Undo/redo feature - -#### Proposed Implementation - -The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations: - -* `VersionedAddressBook#commit()` — Saves the current address book state in its history. -* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. - -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. - -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. - -Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state. - -![UndoRedoState0](images/UndoRedoState0.png) - -Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state. - -![UndoRedoState1](images/UndoRedoState1.png) - -Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`. - -![UndoRedoState2](images/UndoRedoState2.png) - -
    :information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`. - -
    - -Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state. - -![UndoRedoState3](images/UndoRedoState3.png) - -
    :information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather -than attempting to perform the undo. - -
    - -The following sequence diagram shows how the undo operation works: - -![UndoSequenceDiagram](images/UndoSequenceDiagram.png) - -
    :information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram. - -
    - -The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state. - -
    :information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo. - -
    - -Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged. - -![UndoRedoState4](images/UndoRedoState4.png) - -Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow. - -![UndoRedoState5](images/UndoRedoState5.png) - -The following activity diagram summarizes what happens when a user executes a new command: - -![CommitActivityDiagram](images/CommitActivityDiagram.png) - -#### Design consideration: - -##### Aspect: How undo & redo executes - -* **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. - -* **Alternative 2:** Individual command knows how to undo/redo by - itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. - -_{more aspects and alternatives to be added}_ - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ +_{More to be added}_ -------------------------------------------------------------------------------------------------------------------- @@ -281,7 +195,9 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Use cases -(For all use cases below, the **System** is the `TutorTracker` and the **Actor** is the `user`, unless specified otherwise) +_For all use cases below, the **System** is the `TutorTracker` and the **Actor** is the `user`, unless specified otherwise._ + +
    **Use Case UC0001: Add new tutor details** @@ -292,25 +208,34 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli **Extensions** * 2a. Tutor details already exists in list. - * 2a1. AddressBook shows an error message + * 2a1. TutorTracker shows an error message - Use case resumes at step 1. + Use case resumes at step 1.
    -**Use Case UC0002: Add an appointment** +**Use Case UC0002: List all tutors** + +**MSS** +1. User requests to list tutors. +2. TutorTracker shows a list of tutors. + + Use case ends. +
    + +**Use Case UC0003: Add an appointment** **MSS** 1. User requests to add an appointment. 2. TutorTracker adds the appointment and displays the new appointment. - Use case ends. +Use case ends. **Extensions** * 1a. The tutor name, date of appointment or start and end time is empty. - + * 1a1. TutorTracker shows an error message. - + Use case ends. * 1b. The given date or start and end time is invalid. @@ -320,22 +245,43 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli Use case ends.
    -**Use Case UC0003: List all tutors** +**Use Case UC0004: List all tuition appointments** -1. User requests to list tutors. -2. TutorTracker shows a list of tutors. +**MSS** + +1. User requests to view the list of tuition appointments. +2. TutorTracker displays the list of tuition appointments to the user. Use case ends.
    -**Use Case UC0004: List tuition appointments** +**Use Case UC0005: View tuition application** **MSS** -1. User requests to view the list of tuition appointments. -2. TutorTracker displays the list of tuition appointments to the user. +1. User requests to view applications +2. TutorTracker shows a list of applications Use case ends. + +**Extensions** + +* 1a. The list is empty. + + * 1a1. TutorTracker shows a message that there are no applications. + + Use case ends. +
    + +**Use Case UC0006: Delete a tuition application** + +**MSS** + +1. User requests to list applications +2. TutorTracker shows a list of applications +3. User requests to delete a specific application in the list +4. TutorTracker deletes that specific application. +
    *{More to be added}* @@ -364,8 +310,6 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli * Updates will be pushed to each teammates' individual branches, where PRS are made to the master branch. - - ### Glossary * **Mainstream OS**: Windows, Linux, Unix, OS-X @@ -389,33 +333,33 @@ testers are expected to do more *exploratory* testing. 1. Initial launch - 1. Download the jar file and copy into an empty folder + 1. Download the jar file and copy into an empty folder - 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. + 1. Double-click the jar file Expected: Shows the GUI with a set of sample tutors. The window size may not be optimum. 1. Saving window preferences - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. + 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - 1. Re-launch the app by double-clicking the jar file.
    + 1. Re-launch the app by double-clicking the jar file.
    Expected: The most recent window size and location is retained. 1. _{ more test cases …​ }_ -### Deleting a person +### Deleting a tutor -1. Deleting a person while all persons are being shown +1. Deleting a tutor while all persons are being shown - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. + 1. Prerequisites: List all persons using the `list` command. Multiple tutors in the list. - 1. Test case: `delete 1`
    - Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated. + 1. Test case: `delete 1`
    + Expected: First tutor is deleted from the list. Details of the deleted tutor shown in the status message. Timestamp in the status bar is updated. - 1. Test case: `delete 0`
    - Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. + 1. Test case: `delete 0`
    + Expected: No tutor is deleted. Error details shown in the status message. Status bar remains the same. - 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
    - Expected: Similar to previous. + 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
    + Expected: Similar to previous. 1. _{ more test cases …​ }_ @@ -423,6 +367,6 @@ testers are expected to do more *exploratory* testing. 1. Dealing with missing/corrupted data files - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ + 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ 1. _{ more test cases …​ }_ diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 30e67b17b29..83dc5e889c9 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,9 +1,9 @@ --- -User Guide +layout: page +title: User Guide --- -Tutor Tracker is a desktop app designed to help students search for tutors and manage tuition appointments, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. - -* Table of Contents +_**Tutor Tracker**_ is a **desktop app designed to help secondary school students manage tutors and tuition appointments, optimised for use via a Command Line Interface** (CLI) for a fast and streamlined experience while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Tutor Tracker can get your contact management tasks done faster than traditional GUI apps. +* Table of Contents {:toc} -------------------------------------------------------------------------------------------------------------------- @@ -22,8 +22,8 @@ Tutor Tracker is a desktop app designed to help students search for tutors and m 1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
    Some example commands you can try: - * **`appointment`**`n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` : Adds an appointment with a tutor named `Chloe Lim` to the Tutor Tracker. - * **`list_appointments`** : Lists all personal tuition appointments. + * **`appointment`**`n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` : Adds an appointment with a tutor named `Chloe Lim` to the Tutor Tracker. + * **`list_appointments`** : Lists all personal tuition appointments. 1. Refer to the [Features](#features) below for details of each command. @@ -53,7 +53,7 @@ Tutor Tracker is a desktop app designed to help students search for tutors and m * Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
    e.g. if the command specifies `help 123`, it will be interpreted as `help`. -* Parameters in triangle brackets must be supplied together in order as a group. eg. with ``, both subject name and rate must be supplied in order. +* Parameters in angle brackets (`<`, `>`) must be supplied together in order as a group. eg. with ``, both subject name and rate must be supplied in order.
    @@ -92,14 +92,23 @@ Example Output: ``` ### Viewing a tutor: `view_tutor` -Example Usage:
    -Format: `view_tutor 1`
    Name: John Doe
    Phone Number: 98765432
    -Email Address: johnd@example.com
    -Address: John street, block 123, #01-01
    -Subject Expertise: English, Mathematics (Sec 3, 4)
    + +Views a tutor's personal information. + +Format: `view_tutor INDEX` + +Example: `view_tutor 1` + +Example Output:
    +``` +Name: John Doe
    Phone Number: 98765432 +Email Address: johnd@example.com +Address: John street, block 123, #01-01 +Subject Expertise: English, Mathematics (Sec 3, 4) Hourly Rate: SGD60/hr
    Years of Experience: 6 +``` -### Adding Appointment : `appointment` +### Adding an appointment : `appointment` Adds an appointment with a specific tutor to the schedule.
    @@ -123,23 +132,15 @@ Shows a list of all upcoming tuition schedules in the personal tuition appointme Format: `list_appointments` Example outputs: -* `1) John Doe - 2021-4-20 2:00pm - 4:00pm @ Bedok National Library` -* `2) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library` -* `3) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library` - -Following the list in 5), - -Example: -`delete_1` - -Example Output: - -`1) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library` -`2) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library` +``` +1) John Doe - 2021-4-20 2:00pm - 4:00pm @ Bedok National Library +2) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library +3) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library +``` ### View tuition appointment details: `view_appointment` -View details of tuition appointment +View details of a tuition appointment. Format: `view_appointment INDEX` @@ -148,28 +149,43 @@ Example: `view_appointment 1` Example Output: -` +``` Tutor Name: Chloe Lim Appointment Date: 2021-4-20 Appointment Time: 2:00pm - 2:00pm -Location: Bedok National Library` +Location: Bedok National Library +``` ### Delete a tuition appointment: `delete_appointment` Format: `delete_appointment INDEX` + Deletes the specific appointment at the specified INDEX. The index refers to the index number shown in the displayed person list. -The index must be a positive integer 1, 2, 3, …​ +The index must be a positive integer e.g. `1, 2, 3, …​` + +Referencing to the example output from `list_appointments`, + +Example: +`delete_appointment 1` + +Example Output: +``` +1) Jane Doe - 2021-4-21 2:00pm - 4:00pm @ Bedok National Library +2) Peter Ng - 2021-4-24 2:00pm - 4:00pm @ Bedok National Library +``` +-------------------------------------------------------------------------------------------------------------------- **Q**: How do I transfer my data to another Computer?
    **A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Tutor Tracker home folder. +-------------------------------------------------------------------------------------------------------------------- Action | Format, Examples --------|------------------ -**Add Tutor** | `add_tutor n/NAME p/PHONE_NUMBER e/EMAIL g/GENDER a/ADDRESS... ...`
    e.g., `add_tutor n/John Doe p/98765432 e/johnd@example.com g/Male a/John street, block 123, #01-01 s/English r/50 l/Sec 3 y/5 q/A-Level s/Mathematics r/60 l/Sec 4 y/6 q/A-Level` -**List Tutors** | `list_tutors` -**View Tutor** | `view_tutor INDEX`,
    e.g. `view_tutor 1` -**Appointment** | `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]`
    e.g., `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` +**Add a new tutor** | `add_tutor n/NAME p/PHONE_NUMBER e/EMAIL g/GENDER a/ADDRESS... ...`
    e.g., `add_tutor n/John Doe p/98765432 e/johnd@example.com g/Male a/John street, block 123, #01-01 s/English r/50 l/Sec 3 y/5 q/A-Level s/Mathematics r/60 l/Sec 4 y/6 q/A-Level` +**List tutors** | `list_tutors` +**View a tutor details** | `view_tutor INDEX`,
    e.g. `view_tutor 1` +**Add a new appointment** | `appointment n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION]`
    e.g., `appointment n/Chloe Lim s/English d/2021-4-20 fr/2:00pm to/c l/Bedok` **List tuition appointments** | `list_appointments` -**View tuition appointment details** | `view_appointment`
    e.g. `view_appointment 1` +**View a tuition appointment details** | `view_appointment`
    e.g. `view_appointment 1` **Delete a tuition appointment** | `delete_appointment`
    e.g. `delete_appointment 1` From e6fb98be4c215378633aaf43207477a5d156bef7 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 3 Mar 2021 23:02:06 +0800 Subject: [PATCH 058/762] Fix Winnie and Yuting's About Me Pages --- docs/team/Winniehyx.md | 21 +++++++++++++++++++++ docs/team/yutingzou.md | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/docs/team/Winniehyx.md b/docs/team/Winniehyx.md index 174696ada75..57d692f32e5 100644 --- a/docs/team/Winniehyx.md +++ b/docs/team/Winniehyx.md @@ -1 +1,22 @@ +--- +layout: page +title: Winnie Ho Yi Xuan's Project Portfolio Page +--- + Hello, I am Winnie, a Year 2 Computer Science student. I like to spot fashion trends and operate an online shop that buy and sell clothing. + +## Project: Tutor Tracker + +Given below are my contributions to the project. + +* **New Feature**: +* **Code contributed**: [RepoSense link]() +* **Project management**: +* **Enhancements to existing features**: +* **Documentation**: + * User Guide: + * Developer Guide: +* **Community**: +* **Tools**: + +* _{you can add/remove categories in the list above}_ diff --git a/docs/team/yutingzou.md b/docs/team/yutingzou.md index 60cf12706af..c87bede444d 100644 --- a/docs/team/yutingzou.md +++ b/docs/team/yutingzou.md @@ -1 +1,22 @@ +--- +layout: page +title: Zou Yuting's Project Portfolio Page +--- + Hi I'm Yuting, a year 4 Business Analytics student. I like to cook and explore nice food in every city I visit :) + +## Project: Tutor Tracker + +Given below are my contributions to the project. + +* **New Feature**: +* **Code contributed**: [RepoSense link]() +* **Project management**: +* **Enhancements to existing features**: +* **Documentation**: + * User Guide: + * Developer Guide: +* **Community**: +* **Tools**: + +* _{you can add/remove categories in the list above}_ From 73c3fa9cee30f6ffd92c88af31bda7d295fff277 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 3 Mar 2021 23:31:35 +0800 Subject: [PATCH 059/762] Fix DG user stories formatting --- docs/AboutUs.md | 4 +-- docs/DeveloperGuide.md | 61 ++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index ff1e9b29e57..01ae18e2651 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -47,8 +47,8 @@ zou.yuting[at]u.nus.edu -[[github](http://github.com/winniehyx)] -[[portfolio](team/winniehyx.md)] +[[github](http://github.com/Winniehyx)] +[[portfolio](team/Winniehyx.md)] * Role: Deliverables and deadlines diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 76fb69b8fa5..ce2d06f8cd1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -3,7 +3,7 @@ layout: page title: Developer Guide --- * Table of Contents - {:toc} +{:toc} -------------------------------------------------------------------------------------------------------------------- @@ -36,7 +36,7 @@ It's noteworthy to mention that the Tutor Tracker follows an Object-Oriented Pro -_Figure 1. Architecture Diagram of TutorTracker_ +_Figure 1. Architecture Diagram of Tutor Tracker_ The ***Architecture Diagram*** given above explains the high-level design of the App. Given below is a quick overview of each component. @@ -175,8 +175,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | Priority | As a …​ | I want to …​ | So that I can…​ | -| -------- | --------------------------------------------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `* * *` | Brand new user | See the usage instructions | refer to instructions when I forget how to use the App | +| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- | | `* * *` | User | Add new tutor details | Keep track of a new tutor that I have heard about | | `* * *` | User | List all tutors | See all known tutors | | `* * *` | User | View details of a tutor (subject, background, age) | Determine whether I should choose this tutor | @@ -191,6 +190,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* * *` | User | Filter tutors by their years of experience | Find a tutor with experience within the range of my expectation | | `* * *` | User | Filter tutors by their available timeslots | Find a tutor with matched tuition time | | `* * *` | User | Filter tutors by their available location | Find tutors in a specific area | + + *{More to be added}* ### Use cases @@ -211,6 +212,7 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** * 2a1. TutorTracker shows an error message Use case resumes at step 1. +
    **Use Case UC0002: List all tutors** @@ -218,8 +220,9 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **MSS** 1. User requests to list tutors. 2. TutorTracker shows a list of tutors. - - Use case ends. + + Use case ends. +
    **Use Case UC0003: Add an appointment** @@ -227,22 +230,21 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **MSS** 1. User requests to add an appointment. -2. TutorTracker adds the appointment and displays the new appointment. - -Use case ends. +2. TutorTracker adds the appointment and displays the new appointment. + + Use case ends. **Extensions** * 1a. The tutor name, date of appointment or start and end time is empty. - - * 1a1. TutorTracker shows an error message. - + * 1a1. TutorTracker shows an error message. + Use case ends. * 1b. The given date or start and end time is invalid. - * 1b1. TutorTracker shows an error message. - - Use case ends. + + Use case ends. +
    **Use Case UC0004: List all tuition appointments** @@ -251,36 +253,37 @@ Use case ends. 1. User requests to view the list of tuition appointments. 2. TutorTracker displays the list of tuition appointments to the user. + + Use case ends. - Use case ends.
    -**Use Case UC0005: View tuition application** +**Use Case UC0005: View tuition appointment** **MSS** -1. User requests to view applications -2. TutorTracker shows a list of applications - +1. User requests to view appointment +2. TutorTracker shows a list of appointments + Use case ends. **Extensions** * 1a. The list is empty. - - * 1a1. TutorTracker shows a message that there are no applications. - - Use case ends. + * 1a1. TutorTracker shows a message that there are no appointments. + + Use case ends. +
    -**Use Case UC0006: Delete a tuition application** +**Use Case UC0006: Delete a tuition appointment** **MSS** -1. User requests to list applications -2. TutorTracker shows a list of applications -3. User requests to delete a specific application in the list -4. TutorTracker deletes that specific application. +1. User requests to list appointments +2. TutorTracker shows a list of appointments +3. User requests to delete a specific appointment in the list +4. TutorTracker deletes that specific appointment.
    From 3df88db6ff2f4df828734c65c1343d9a323d8e2f Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Wed, 3 Mar 2021 23:36:59 +0800 Subject: [PATCH 060/762] Fix User Guide by removing triangle brackets --- docs/UserGuide.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 30e67b17b29..47cfefb513d 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -148,7 +148,9 @@ Example: `view_appointment 1` Example Output: -` +``` +Appointment Details + Tutor Name: Chloe Lim Appointment Date: 2021-4-20 Appointment Time: 2:00pm - 2:00pm From 4ad2d64ed9f49d5d61f5670f499429c1d3946744 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Wed, 3 Mar 2021 23:39:38 +0800 Subject: [PATCH 061/762] Fix User Guide by changing singleline comment to multiline comment --- docs/UserGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 47cfefb513d..fc9cabc817e 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -154,7 +154,8 @@ Appointment Details Tutor Name: Chloe Lim Appointment Date: 2021-4-20 Appointment Time: 2:00pm - 2:00pm -Location: Bedok National Library` +Location: Bedok National Library +``` ### Delete a tuition appointment: `delete_appointment` From 80d72707e311905747b5d354495abb7cd4305a86 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Tue, 9 Mar 2021 19:52:55 +0800 Subject: [PATCH 062/762] Implemented taggable abstract class --- .../seedu/address/model/person/Address.java | 8 +++- .../seedu/address/model/person/Email.java | 8 +++- .../seedu/address/model/person/Gender.java | 8 +++- .../java/seedu/address/model/person/Name.java | 8 +++- .../seedu/address/model/person/Phone.java | 8 +++- .../java/seedu/address/model/tag/Address.java | 37 ------------------- .../java/seedu/address/model/tag/Email.java | 36 ------------------ .../java/seedu/address/model/tag/Gender.java | 36 ------------------ .../java/seedu/address/model/tag/Name.java | 36 ------------------ .../java/seedu/address/model/tag/Phone.java | 36 ------------------ .../java/seedu/address/model/tag/Tag.java | 6 ++- .../seedu/address/model/tag/Taggable.java | 7 ++++ 12 files changed, 47 insertions(+), 187 deletions(-) delete mode 100644 src/main/java/seedu/address/model/tag/Address.java delete mode 100644 src/main/java/seedu/address/model/tag/Email.java delete mode 100644 src/main/java/seedu/address/model/tag/Gender.java delete mode 100644 src/main/java/seedu/address/model/tag/Name.java delete mode 100644 src/main/java/seedu/address/model/tag/Phone.java create mode 100644 src/main/java/seedu/address/model/tag/Taggable.java diff --git a/src/main/java/seedu/address/model/person/Address.java b/src/main/java/seedu/address/model/person/Address.java index 60472ca22a0..9d0b7e90a83 100644 --- a/src/main/java/seedu/address/model/person/Address.java +++ b/src/main/java/seedu/address/model/person/Address.java @@ -1,5 +1,7 @@ package seedu.address.model.person; +import seedu.address.model.tag.Taggable; + import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -7,7 +9,7 @@ * Represents a Person's address in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} */ -public class Address { +public class Address extends Taggable { public static final String MESSAGE_CONSTRAINTS = "Addresses can take any values, and it should not be blank"; @@ -54,4 +56,8 @@ public int hashCode() { return value.hashCode(); } + @Override + public boolean filter(String s) { + return value.contains(s); + } } diff --git a/src/main/java/seedu/address/model/person/Email.java b/src/main/java/seedu/address/model/person/Email.java index a5bbe0b6a5f..ed44b625936 100644 --- a/src/main/java/seedu/address/model/person/Email.java +++ b/src/main/java/seedu/address/model/person/Email.java @@ -1,5 +1,7 @@ package seedu.address.model.person; +import seedu.address.model.tag.Taggable; + import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -7,7 +9,7 @@ * Represents a Person's email in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} */ -public class Email { +public class Email extends Taggable { private static final String SPECIAL_CHARACTERS = "!#$%&'*+/=?`{|}~^.-"; public static final String MESSAGE_CONSTRAINTS = "Emails should be of the format local-part@domain " @@ -64,4 +66,8 @@ public int hashCode() { return value.hashCode(); } + @Override + public boolean filter(String s) { + return value.contains(s); + } } diff --git a/src/main/java/seedu/address/model/person/Gender.java b/src/main/java/seedu/address/model/person/Gender.java index b770a87ead3..fd0def60138 100644 --- a/src/main/java/seedu/address/model/person/Gender.java +++ b/src/main/java/seedu/address/model/person/Gender.java @@ -1,5 +1,7 @@ package seedu.address.model.person; +import seedu.address.model.tag.Taggable; + import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -7,7 +9,7 @@ * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)} */ -public class Gender { +public class Gender extends Taggable { public static final String MESSAGE_CONSTRAINTS = "Gender should only contain alphanumeric characters and spaces, should be female or male, and it should not be blank"; @@ -56,4 +58,8 @@ public int hashCode() { return personGender.hashCode(); } + @Override + public boolean filter(String s) { + return personGender.contains(s); + } } diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java index 79244d71cf7..ab5fa5a50a3 100644 --- a/src/main/java/seedu/address/model/person/Name.java +++ b/src/main/java/seedu/address/model/person/Name.java @@ -1,5 +1,7 @@ package seedu.address.model.person; +import seedu.address.model.tag.Taggable; + import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -7,7 +9,7 @@ * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} */ -public class Name { +public class Name extends Taggable { public static final String MESSAGE_CONSTRAINTS = "Names should only contain alphanumeric characters and spaces, and it should not be blank"; @@ -56,4 +58,8 @@ public int hashCode() { return fullName.hashCode(); } + @Override + public boolean filter(String s) { + return fullName.contains(s); + } } diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java index 872c76b382f..713fe435d99 100644 --- a/src/main/java/seedu/address/model/person/Phone.java +++ b/src/main/java/seedu/address/model/person/Phone.java @@ -1,5 +1,7 @@ package seedu.address.model.person; +import seedu.address.model.tag.Taggable; + import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -7,7 +9,7 @@ * Represents a Person's phone number in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} */ -public class Phone { +public class Phone extends Taggable { public static final String MESSAGE_CONSTRAINTS = @@ -50,4 +52,8 @@ public int hashCode() { return value.hashCode(); } + @Override + public boolean filter(String s) { + return value.contains(s); + } } diff --git a/src/main/java/seedu/address/model/tag/Address.java b/src/main/java/seedu/address/model/tag/Address.java deleted file mode 100644 index 639a038bbb9..00000000000 --- a/src/main/java/seedu/address/model/tag/Address.java +++ /dev/null @@ -1,37 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; -import static seedu.address.model.person.Address.MESSAGE_CONSTRAINTS; -import static seedu.address.model.person.Address.VALIDATION_REGEX; - -public class Address { - - public final String address; - - /** - * Constructs a {@code Tag}. - * - * @param address A valid address tag. - */ - - public Address(String address) { - requireNonNull(address); - checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS); - this.address = address; - } - - /** - * Returns true if a given string is a valid tag location. - */ - public static boolean isValidAddress(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof seedu.address.model.tag.Address // instanceof handles nulls - && address.equals(((seedu.address.model.tag.Address) other).address)); // state check - } -} diff --git a/src/main/java/seedu/address/model/tag/Email.java b/src/main/java/seedu/address/model/tag/Email.java deleted file mode 100644 index 9c0ea245d6e..00000000000 --- a/src/main/java/seedu/address/model/tag/Email.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; -import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; -import static seedu.address.model.person.Name.VALIDATION_REGEX; - -public class Email { - - public final String email; - /** - * Constructs a {@code Tag}. - * - * @param email A valid email tag. - */ - - public Email(String email) { - requireNonNull(email); - checkArgument(isValidName(email), MESSAGE_CONSTRAINTS); - this.email = email; - } - - /** - * Returns true if a given string is a valid tag name. - */ - public static boolean isValidName(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof seedu.address.model.tag.Email // instanceof handles nulls - && email.equals(((seedu.address.model.tag.Email) other).email)); // state check - } -} diff --git a/src/main/java/seedu/address/model/tag/Gender.java b/src/main/java/seedu/address/model/tag/Gender.java deleted file mode 100644 index db8c70c6c34..00000000000 --- a/src/main/java/seedu/address/model/tag/Gender.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; -import static seedu.address.model.person.Gender.MESSAGE_CONSTRAINTS; -import static seedu.address.model.person.Gender.VALIDATION_REGEX; - -public class Gender { - - public final String personGender; - /** - * Constructs a {@code Tag}. - * - * @param gender A valid gender tag. - */ - - public Gender(String gender) { - requireNonNull(gender); - checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS); - this.personGender = gender; - } - - /** - * Returns true if a given string is a valid tag gender. - */ - public static boolean isValidGender(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof seedu.address.model.tag.Gender // instanceof handles nulls - && personGender.equals(((seedu.address.model.tag.Gender) other).personGender)); // state check - } -} diff --git a/src/main/java/seedu/address/model/tag/Name.java b/src/main/java/seedu/address/model/tag/Name.java deleted file mode 100644 index a8eb3f23ffb..00000000000 --- a/src/main/java/seedu/address/model/tag/Name.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; -import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; -import static seedu.address.model.person.Name.VALIDATION_REGEX; - -public class Name { - - public final String TutorName; - /** - * Constructs a {@code Tag}. - * - * @param TutorName A valid tutor name tag name. - */ - - public Name(String TutorName) { - requireNonNull(TutorName); - checkArgument(isValidName(TutorName), MESSAGE_CONSTRAINTS); - this.TutorName = TutorName; - } - - /** - * Returns true if a given string is a valid tag name. - */ - public static boolean isValidName(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof seedu.address.model.tag.Name // instanceof handles nulls - && TutorName.equals(((seedu.address.model.tag.Name) other).TutorName)); // state check - } -} diff --git a/src/main/java/seedu/address/model/tag/Phone.java b/src/main/java/seedu/address/model/tag/Phone.java deleted file mode 100644 index 39497d0361f..00000000000 --- a/src/main/java/seedu/address/model/tag/Phone.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; -import static seedu.address.model.person.Name.MESSAGE_CONSTRAINTS; -import static seedu.address.model.person.Name.VALIDATION_REGEX; - -public class Phone { - - public final String PhoneNumber; - /** - * Constructs a {@code Tag}. - * - * @param PhoneNumber A valid PhoneNumber tag. - */ - - public Phone(String PhoneNumber) { - requireNonNull(PhoneNumber); - checkArgument(isValidPhoneNumber(PhoneNumber), MESSAGE_CONSTRAINTS); - this.PhoneNumber = PhoneNumber; - } - - /** - * Returns true if a given string is a valid PhoneNumber tag. - */ - public static boolean isValidPhoneNumber(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof seedu.address.model.tag.Phone // instanceof handles nulls - && PhoneNumber.equals(((seedu.address.model.tag.Phone) other).PhoneNumber)); // state check - } -} diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index b0ea7e7dad7..3fe455fc8ec 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -7,7 +7,7 @@ * Represents a Tag in the address book. * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)} */ -public class Tag { +public class Tag extends Taggable { public static final String MESSAGE_CONSTRAINTS = "Tags names should be alphanumeric"; public static final String VALIDATION_REGEX = "\\p{Alnum}+"; @@ -51,4 +51,8 @@ public String toString() { return '[' + tagName + ']'; } + @Override + public boolean filter(String s) { + return tagName.contains(s); + } } diff --git a/src/main/java/seedu/address/model/tag/Taggable.java b/src/main/java/seedu/address/model/tag/Taggable.java new file mode 100644 index 00000000000..967ea83f2ce --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Taggable.java @@ -0,0 +1,7 @@ +package seedu.address.model.tag; + +public abstract class Taggable { + + public abstract boolean filter(String s); + +} From 503ba2d7436087f6b995bbf1512988f9b685a96f Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 10 Mar 2021 12:12:32 +0800 Subject: [PATCH 063/762] Update and redesign Ui --- docs/tutorials/AddRemark.md | 2 +- .../seedu/address/model/AppointmentStub.java | 41 ++ .../address/model/util/SampleDataUtil.java | 12 +- .../seedu/address/ui/AppointmentCard.java | 73 ++++ .../address/ui/AppointmentListPanel.java | 49 +++ .../java/seedu/address/ui/CalendarView.java | 380 ++++++++++++++++++ .../java/seedu/address/ui/MainWindow.java | 72 +++- .../seedu/address/ui/ResultBarFooter.java | 27 ++ .../ui/{PersonCard.java => TutorCard.java} | 10 +- ...rsonListPanel.java => TutorListPanel.java} | 19 +- .../resources/images/arrow_backward_icon.png | Bin 0 -> 180 bytes .../resources/images/arrow_forward_icon.png | Bin 0 -> 169 bytes src/main/resources/images/calendar_icon.png | Bin 0 -> 257 bytes src/main/resources/images/favorite_icon.png | Bin 0 -> 458 bytes .../resources/view/AppointmentListCard.fxml | 38 ++ .../resources/view/AppointmentListPanel.fxml | 8 + src/main/resources/view/CalendarView.fxml | 114 ++++++ src/main/resources/view/MainWindow.fxml | 95 ++++- src/main/resources/view/PersonListPanel.fxml | 8 - ...PersonListCard.fxml => TutorListCard.fxml} | 4 +- src/main/resources/view/TutorListPanel.fxml | 8 + 21 files changed, 898 insertions(+), 62 deletions(-) create mode 100644 src/main/java/seedu/address/model/AppointmentStub.java create mode 100644 src/main/java/seedu/address/ui/AppointmentCard.java create mode 100644 src/main/java/seedu/address/ui/AppointmentListPanel.java create mode 100644 src/main/java/seedu/address/ui/CalendarView.java create mode 100644 src/main/java/seedu/address/ui/ResultBarFooter.java rename src/main/java/seedu/address/ui/{PersonCard.java => TutorCard.java} (88%) rename src/main/java/seedu/address/ui/{PersonListPanel.java => TutorListPanel.java} (62%) create mode 100755 src/main/resources/images/arrow_backward_icon.png create mode 100755 src/main/resources/images/arrow_forward_icon.png create mode 100755 src/main/resources/images/calendar_icon.png create mode 100755 src/main/resources/images/favorite_icon.png create mode 100644 src/main/resources/view/AppointmentListCard.fxml create mode 100644 src/main/resources/view/AppointmentListPanel.fxml create mode 100644 src/main/resources/view/CalendarView.fxml delete mode 100644 src/main/resources/view/PersonListPanel.fxml rename src/main/resources/view/{PersonListCard.fxml => TutorListCard.fxml} (96%) create mode 100644 src/main/resources/view/TutorListPanel.fxml diff --git a/docs/tutorials/AddRemark.md b/docs/tutorials/AddRemark.md index 64c9b1f91de..7ddb6283a66 100644 --- a/docs/tutorials/AddRemark.md +++ b/docs/tutorials/AddRemark.md @@ -239,7 +239,7 @@ Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark` Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person. -Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-0c6b6abcfac8c205e075294f25e851fe). +Simply add the following to [`seedu.address.ui.TutorCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-0c6b6abcfac8c205e075294f25e851fe). **`PersonCard.java`:** diff --git a/src/main/java/seedu/address/model/AppointmentStub.java b/src/main/java/seedu/address/model/AppointmentStub.java new file mode 100644 index 00000000000..8d48a632885 --- /dev/null +++ b/src/main/java/seedu/address/model/AppointmentStub.java @@ -0,0 +1,41 @@ +package seedu.address.model; + +import java.time.LocalDateTime; + +import seedu.address.model.person.Email; + +/** + * Temporary stub class to test the UI interface. + */ +public class AppointmentStub { + private final Email email; + private final String subject; + private final LocalDateTime dateTime; + private final String location; + + /** + * Default constructor for AppointmentStub + */ + public AppointmentStub(Email email, String subject, LocalDateTime dateTime, String location) { + this.email = email; + this.subject = subject; + this.dateTime = dateTime; + this.location = location; + } + + public Email getEmail() { + return email; + } + + public String getSubject() { + return subject; + } + + public LocalDateTime getDateTime() { + return dateTime; + } + + public String getLocation() { + return location; + } +} diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index 1806da4facf..885ee9ecb4c 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -21,22 +21,22 @@ public static Person[] getSamplePersons() { return new Person[] { new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), new Address("Blk 30 Geylang Street 29, #06-40"), - getTagSet("friends")), + getTagSet("mathematics")), new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getTagSet("colleagues", "friends")), + getTagSet("english")), new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), - getTagSet("neighbours")), + getTagSet("english", "literature")), new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), - getTagSet("family")), + getTagSet("science")), new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), new Address("Blk 47 Tampines Street 20, #17-35"), - getTagSet("classmates")), + getTagSet("geography")), new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), new Address("Blk 45 Aljunied Street 85, #11-31"), - getTagSet("colleagues")) + getTagSet("history")) }; } diff --git a/src/main/java/seedu/address/ui/AppointmentCard.java b/src/main/java/seedu/address/ui/AppointmentCard.java new file mode 100644 index 00000000000..1847f3d3ee2 --- /dev/null +++ b/src/main/java/seedu/address/ui/AppointmentCard.java @@ -0,0 +1,73 @@ +package seedu.address.ui; + +import java.time.format.DateTimeFormatter; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Region; +import seedu.address.model.AppointmentStub; + +/** + * An UI component that displays information of a {@code Person}. + */ +public class AppointmentCard extends UiPart { + + private static final String FXML = "AppointmentListCard.fxml"; + + /** + * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. + * As a consequence, UI elements' variable names cannot be set to such keywords + * or an exception will be thrown by JavaFX during runtime. + * + * @see
    The issue on AddressBook level 4 + */ + + public final AppointmentStub appointment; + + @FXML + private HBox cardPane; + @FXML + private Label subject; + @FXML + private Label id; + @FXML + private Label name; + @FXML + private Label datetime; + @FXML + private Label address; + + /** + * Creates a {@code PersonCode} with the given {@code Person} and index to display. + * Temporarily using a Stub due to absence of integration. + */ + public AppointmentCard(AppointmentStub appointment, int displayedIndex) { + super(FXML); + this.appointment = appointment; + id.setText(displayedIndex + ". "); + subject.setText(appointment.getSubject()); + name.setText(appointment.getEmail().value); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm"); + datetime.setText(appointment.getDateTime().format(formatter)); + address.setText(appointment.getLocation()); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof AppointmentCard)) { + return false; + } + + // state check + AppointmentCard card = (AppointmentCard) other; + return id.getText().equals(card.id.getText()) + && appointment.equals(card.appointment); + } +} diff --git a/src/main/java/seedu/address/ui/AppointmentListPanel.java b/src/main/java/seedu/address/ui/AppointmentListPanel.java new file mode 100644 index 00000000000..b46c7aa5e2a --- /dev/null +++ b/src/main/java/seedu/address/ui/AppointmentListPanel.java @@ -0,0 +1,49 @@ +package seedu.address.ui; + +import java.util.logging.Logger; + +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.Region; +import seedu.address.commons.core.LogsCenter; +import seedu.address.model.AppointmentStub; + +/** + * Panel containing the list of persons. + */ +public class AppointmentListPanel extends UiPart { + private static final String FXML = "AppointmentListPanel.fxml"; + private final Logger logger = LogsCenter.getLogger(AppointmentListPanel.class); + + @FXML + private ListView appointmentListView; + + /** + * Creates a {@code PersonListPanel} with the given {@code ObservableList}. + */ + public AppointmentListPanel(ObservableList appointmentList) { + super(FXML); + appointmentListView.setItems(appointmentList); + appointmentListView.setCellFactory(listView -> new AppointmentListViewCell()); + } + + /** + * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}. + */ + class AppointmentListViewCell extends ListCell { + @Override + protected void updateItem(AppointmentStub appointment, boolean empty) { + super.updateItem(appointment, empty); + + if (empty || appointment == null) { + setGraphic(null); + setText(null); + } else { + setGraphic(new AppointmentCard(appointment, getIndex() + 1).getRoot()); + } + } + } + +} diff --git a/src/main/java/seedu/address/ui/CalendarView.java b/src/main/java/seedu/address/ui/CalendarView.java new file mode 100644 index 00000000000..f5c00fdba17 --- /dev/null +++ b/src/main/java/seedu/address/ui/CalendarView.java @@ -0,0 +1,380 @@ +package seedu.address.ui; + +import java.time.LocalDate; +import java.time.Year; +import java.time.YearMonth; + +import javafx.fxml.FXML; +import javafx.geometry.HPos; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.geometry.VPos; +import javafx.scene.control.Label; +import javafx.scene.effect.BlendMode; +import javafx.scene.image.ImageView; +import javafx.scene.layout.Background; +import javafx.scene.layout.BackgroundFill; +import javafx.scene.layout.Border; +import javafx.scene.layout.BorderStroke; +import javafx.scene.layout.BorderStrokeStyle; +import javafx.scene.layout.BorderWidths; +import javafx.scene.layout.CornerRadii; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; +import javafx.scene.text.Text; + +/** + * UI calendar component that is displayed. + * Adapted from https://github.com/AY2021S1-CS2103-W14-1/tp/blob/master/src/main/java/seedu/address/ui/CalendarView.java + * and https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + */ +public class CalendarView extends UiPart { + + private static final String FXML = "CalendarView.fxml"; + private static final int[] DAYS_IN_MONTH = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; + private static final String[] MONTHS = {"January", "February", "March", "April", "May", "June", + "July", "August", "September", "October", "November", "December"}; + + private int[] simulateGridPane = new int[42]; + private int day; + private int month; + private int year; + + private YearMonth yearMonth; + private LocalDate todayDate; + private LocalDate nonPivotDate; + private LocalDate pivotDate; + private LocalDate firstDayOfTheMonth; + + private int prevMonthBalance; + private int nextMonthBalance; + private int thisMonthBalance; + private final int currentDay; + + @FXML + private Text monthYearText; + + @FXML + private GridPane dateGridPane; + + @FXML + private GridPane monthYearGridPane; + + @FXML + private GridPane weekDayGridPane; + + @FXML + private ImageView leftButton; + + @FXML + private ImageView rightButton; + + /** + * Constructor for the calendar view in TutorTracker + */ + public CalendarView() { + super(FXML); + this.todayDate = LocalDate.now(); + this.pivotDate = todayDate; + this.nonPivotDate = todayDate; + this.day = todayDate.getDayOfMonth(); + this.month = todayDate.getMonthValue(); + this.year = todayDate.getYear(); + this.currentDay = this.day; + this.yearMonth = YearMonth.of(this.year, this.month); + this.firstDayOfTheMonth = yearMonth.atDay(1); + setMonthYearLabel(); + generateCalender(); + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with minor modifications (renaming variables). + /** + * It will update the attributes in the class according to the appointmentDate parse in + * @param date the new appointmentDate + */ + private void updateDayMonthYear(LocalDate date) { + this.year = date.getYear(); + this.month = date.getMonthValue(); + this.day = date.getDayOfMonth(); + this.yearMonth = YearMonth.of(this.year, this.month); + this.firstDayOfTheMonth = yearMonth.atDay(1); + } + + private boolean isSameMonth(LocalDate d1, LocalDate d2) { + return d1.withDayOfMonth(1).equals(d2.withDayOfMonth(1)); + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Find the number of days in a month given the year and month. + * + * @return return the number of days. + */ + public int findNumberOfDaysInTheMonth() { + if (this.month == 2) { + if (this.yearMonth.isLeapYear()) { + return 29; + } else { + return DAYS_IN_MONTH[month - 1]; + } + } else { + return DAYS_IN_MONTH[month - 1]; + } + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Find the number of days in a month given the year and month. + * + * @return return the number of days. + */ + public int findNumberOfDaysOfAMonth(int month, int year) { + if (month == 2) { + if (Year.isLeap(year)) { + return 29; + } else { + return DAYS_IN_MONTH[month - 1]; + } + } else { + return DAYS_IN_MONTH[month - 1]; + } + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Find the number of days in the previous month given the year and month. + * + * @return return the number of days. + */ + public int findNumberOfDaysInPreviousMonth() { + if (this.month >= 2) { + return findNumberOfDaysOfAMonth(this.month - 1, this.year); + } else { + return DAYS_IN_MONTH[11]; + } + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Set the monthYear Label's content. + */ + private void setMonthYearLabel() { + StringBuilder monthYear = new StringBuilder(); + monthYear.append(MONTHS[this.nonPivotDate.getMonthValue() - 1]); + monthYear.append(" "); + monthYear.append(this.nonPivotDate.getYear()); + String output = monthYear.toString(); + this.monthYearText.setText(output); + } + + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Fill up the simulateGridPane[] with the appointmentDate in order. + */ + private void fill() { + this.thisMonthBalance = findNumberOfDaysInTheMonth(); + int firstDayOfMonth = this.firstDayOfTheMonth.getDayOfWeek().getValue(); + this.prevMonthBalance = firstDayOfMonth % 7; + int firstValue = findNumberOfDaysInPreviousMonth() - this.prevMonthBalance + 1; + for (int i = 0; i < this.prevMonthBalance; i++) { + this.simulateGridPane[i] = firstValue; + firstValue++; + } + + for (int i = 0; i < this.thisMonthBalance; i++) { + this.simulateGridPane[this.prevMonthBalance + i] = i + 1; + } + + this.nextMonthBalance = 42 - this.thisMonthBalance - prevMonthBalance; + int newStartingPoint = this.thisMonthBalance + prevMonthBalance; + for (int i = 0; i < this.nextMonthBalance; i++) { + this.simulateGridPane[newStartingPoint + i] = i + 1; + } + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Generate Label for dateGridPane. + * + * @param dayNumber text for the Label + * @return a label with specific text and font + */ + private Label createLabel(int dayNumber) { + Label label = new Label(); + label.setText("" + dayNumber); + label.setStyle("-fx-text-fill: white"); + return label; + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Generate a VBox with specific calendar. + * + * @return a VBox for dateGridPane. + */ + private VBox placeHolderForLabel() { + VBox holder = new VBox(); + holder.setFillWidth(false); + holder.setPrefHeight(20); + holder.setPrefWidth(20); + holder.setMinSize(20, 20); + holder.setMaxSize(30, 30); + holder.setAlignment(Pos.CENTER); + return holder; + } + + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with minor modifications (change of colors and code structure). + /** + * Assign a Vbox to each GridPane. + * Each Vbox contains a Label. + * Each label's text is correspond to the calendar. + */ + public void generateCalender() { + fill(); + int i = 0; + this.weekDayGridPane.setBackground(new Background( + new BackgroundFill(Color.valueOf("#383838"), CornerRadii.EMPTY, Insets.EMPTY))); + this.dateGridPane.setBackground(new Background( + new BackgroundFill(Color.valueOf("#383838"), CornerRadii.EMPTY, Insets.EMPTY))); + for (int row = 0; row < 6; row++) { + for (int col = 0; col < 7; col++) { + VBox holder = placeHolderForLabel(); + + if (i < this.prevMonthBalance || i > 42 - 1 - this.nextMonthBalance) { + holder.setBlendMode(BlendMode.SOFT_LIGHT); + } + + if (i == this.prevMonthBalance + this.day - 1 && isSameMonth(this.pivotDate, this.nonPivotDate)) { + holder.setBackground(new Background( + new BackgroundFill(Color.valueOf("#5e5e5e"), CornerRadii.EMPTY, Insets.EMPTY))); + } + + if (isSameMonth(this.todayDate, this.nonPivotDate) + && i == this.prevMonthBalance + this.currentDay - 1) { + holder.setBorder(new Border(new BorderStroke(Color.valueOf("white"), + BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(1)))); + } + + Label num = createLabel(this.simulateGridPane[i]); + + holder.getChildren().add(num); + + holder.setOnMouseClicked(event -> { + Label a = (Label) holder.getChildren().get(0); + int clickedDate = Integer.parseInt(a.getText()); + if (holder.getBlendMode() != BlendMode.SOFT_LIGHT) { + pivotDate = nonPivotDate.withDayOfMonth(clickedDate); + } else { + pivotDate = getNewDate(clickedDate); + } + nonPivotDate = pivotDate; + updateDayMonthYear(pivotDate); + refreshCalenderView(); + }); + + this.dateGridPane.add(holder, col, row); + GridPane.setHalignment(holder, HPos.CENTER); + GridPane.setValignment(holder, VPos.CENTER); + i++; + } + } + } + + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Refresh the whole dateGridPane to show latest UI. + */ + private void refreshCalenderView() { + dateGridPane.getChildren().clear(); + updateDayMonthYear(nonPivotDate); + setMonthYearLabel(); + generateCalender(); + } + + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * generate a new local appointmentDate according to input new appointmentDate. + * + * @param value appointmentDate indicator. + * @return a new localDate object with that appointmentDate. + */ + private LocalDate getNewDate(int value) { + if (value <= 31 && value >= 21) { + LocalDate prevM = this.nonPivotDate.minusMonths(1); + prevM = prevM.withDayOfMonth(value); + return prevM; + } else { + LocalDate nextM = this.nonPivotDate.plusMonths(1); + nextM = nextM.withDayOfMonth(value); + return nextM; + } + } + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Initialise calendar to previous month data when the next button is clicked. + */ + @FXML + public void handleToPrev() { + this.nonPivotDate = nonPivotDate.minusMonths(1); + updateDayMonthYear(nonPivotDate); + refreshCalenderView(); + } + + + // @@author {zwasd}-reused + // Reused from + // https://github.com/AY1920S2-CS2103T-T10-3/main/blob/master/src/main/java/seedu/saveit/ui/CalendarView.java + // with no modifications. + /** + * Initialise calendar to next month data when the next button is clicked. + */ + @FXML + public void handleToNext() { + this.nonPivotDate = nonPivotDate.plusMonths(1); + updateDayMonthYear(nonPivotDate); + refreshCalenderView(); + } +} diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 9106c3aa6e5..9420fb410b9 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -1,7 +1,13 @@ package seedu.address.ui; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.time.temporal.ChronoField; import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.MenuItem; @@ -16,6 +22,8 @@ import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.AppointmentStub; +import seedu.address.model.person.Email; /** * The Main Window. Provides the basic application layout containing @@ -24,6 +32,18 @@ public class MainWindow extends UiPart { private static final String FXML = "MainWindow.fxml"; + private static final DateTimeFormatter DATETIME_FORMAT = new DateTimeFormatterBuilder() + .appendPattern("[yyyy-MM-dd HH:mm]") + .appendPattern("[yyyy-MM-dd]") + .appendPattern("[d-M-yyyy HH:mm]") + .appendPattern("[d-M-yyyy]") + .appendPattern("[yyyy/MM/dd HH:mm]") + .appendPattern("[yyyy/MM/dd]") + .appendPattern("[d/M/yyyy HH:mm]") + .appendPattern("[d/M/yyyy]") + .parseDefaulting(ChronoField.HOUR_OF_DAY, 0) + .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) + .toFormatter(); private final Logger logger = LogsCenter.getLogger(getClass()); @@ -31,9 +51,11 @@ public class MainWindow extends UiPart { private Logic logic; // Independent Ui parts residing in this Ui container - private PersonListPanel personListPanel; - private ResultDisplay resultDisplay; + private TutorListPanel tutorListPanel; + private ResultBarFooter resultDisplay; private HelpWindow helpWindow; + private CalendarView calendarView; + private AppointmentListPanel appointmentListPanel; @FXML private StackPane commandBoxPlaceholder; @@ -45,10 +67,13 @@ public class MainWindow extends UiPart { private StackPane personListPanelPlaceholder; @FXML - private StackPane resultDisplayPlaceholder; + private StackPane statusbarPlaceholder; @FXML - private StackPane statusbarPlaceholder; + private StackPane calendarViewPane; + + @FXML + private StackPane appointmentListPanelPlaceholder; /** * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}. @@ -66,6 +91,7 @@ public MainWindow(Stage primaryStage, Logic logic) { setAccelerators(); helpWindow = new HelpWindow(); + calendarView = new CalendarView(); } public Stage getPrimaryStage() { @@ -106,21 +132,32 @@ private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) { }); } + private ObservableList generateMockData() { + ObservableList mockList = FXCollections.observableArrayList(); + mockList.add(new AppointmentStub(new Email("alexyeoh@example.com"), "Mathematics (Sec 4)", + LocalDateTime.parse("2020-02-24 14:00", DATETIME_FORMAT), "Geylang")); + mockList.add(new AppointmentStub(new Email("bernice@example.com"), "Science (Sec 4)", + LocalDateTime.parse("2020-02-27 15:00", DATETIME_FORMAT), "Serangoon")); + return mockList; + } + /** * Fills up all the placeholders of this window. */ void fillInnerParts() { - personListPanel = new PersonListPanel(logic.getFilteredPersonList()); - personListPanelPlaceholder.getChildren().add(personListPanel.getRoot()); + tutorListPanel = new TutorListPanel(logic.getFilteredPersonList()); + personListPanelPlaceholder.getChildren().add(tutorListPanel.getRoot()); - resultDisplay = new ResultDisplay(); - resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot()); + appointmentListPanel = new AppointmentListPanel(generateMockData()); + appointmentListPanelPlaceholder.getChildren().add(appointmentListPanel.getRoot()); - StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getAddressBookFilePath()); - statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot()); + resultDisplay = new ResultBarFooter(); + statusbarPlaceholder.getChildren().add(resultDisplay.getRoot()); CommandBox commandBox = new CommandBox(this::executeCommand); commandBoxPlaceholder.getChildren().add(commandBox.getRoot()); + + calendarViewPane.getChildren().add(new CalendarView().getRoot()); } /** @@ -147,6 +184,17 @@ public void handleHelp() { } } + @FXML + private void setCalendarNavigation(String direction) throws CommandException { + if (direction.equals("next")) { + calendarView.handleToNext(); + } else if (direction.equals("prev")) { + calendarView.handleToPrev(); + } else { + throw new CommandException("MESSAGE_UNKNOWN_COMMAND"); + } + } + void show() { primaryStage.show(); } @@ -163,8 +211,8 @@ private void handleExit() { primaryStage.hide(); } - public PersonListPanel getPersonListPanel() { - return personListPanel; + public TutorListPanel getPersonListPanel() { + return tutorListPanel; } /** diff --git a/src/main/java/seedu/address/ui/ResultBarFooter.java b/src/main/java/seedu/address/ui/ResultBarFooter.java new file mode 100644 index 00000000000..075ab0b6d93 --- /dev/null +++ b/src/main/java/seedu/address/ui/ResultBarFooter.java @@ -0,0 +1,27 @@ +package seedu.address.ui; + +import static java.util.Objects.requireNonNull; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.Region; + +/** + * A ui for the status bar that is displayed at the footer of the application. + */ +public class ResultBarFooter extends UiPart { + + private static final String FXML = "StatusBarFooter.fxml"; + + @FXML + private Label saveLocationStatus; + + public ResultBarFooter() { + super(FXML); + } + + public void setFeedbackToUser(String feedbackToUser) { + requireNonNull(feedbackToUser); + saveLocationStatus.setText(feedbackToUser); + } +} diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/TutorCard.java similarity index 88% rename from src/main/java/seedu/address/ui/PersonCard.java rename to src/main/java/seedu/address/ui/TutorCard.java index 7fc927bc5d9..83a9d9cf802 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/TutorCard.java @@ -12,9 +12,9 @@ /** * An UI component that displays information of a {@code Person}. */ -public class PersonCard extends UiPart { +public class TutorCard extends UiPart { - private static final String FXML = "PersonListCard.fxml"; + private static final String FXML = "TutorListCard.fxml"; /** * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. @@ -44,7 +44,7 @@ public class PersonCard extends UiPart { /** * Creates a {@code PersonCode} with the given {@code Person} and index to display. */ - public PersonCard(Person person, int displayedIndex) { + public TutorCard(Person person, int displayedIndex) { super(FXML); this.person = person; id.setText(displayedIndex + ". "); @@ -65,12 +65,12 @@ public boolean equals(Object other) { } // instanceof handles nulls - if (!(other instanceof PersonCard)) { + if (!(other instanceof TutorCard)) { return false; } // state check - PersonCard card = (PersonCard) other; + TutorCard card = (TutorCard) other; return id.getText().equals(card.id.getText()) && person.equals(card.person); } diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/TutorListPanel.java similarity index 62% rename from src/main/java/seedu/address/ui/PersonListPanel.java rename to src/main/java/seedu/address/ui/TutorListPanel.java index f4c501a897b..27e83e6425f 100644 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ b/src/main/java/seedu/address/ui/TutorListPanel.java @@ -13,26 +13,26 @@ /** * Panel containing the list of persons. */ -public class PersonListPanel extends UiPart { - private static final String FXML = "PersonListPanel.fxml"; - private final Logger logger = LogsCenter.getLogger(PersonListPanel.class); +public class TutorListPanel extends UiPart { + private static final String FXML = "TutorListPanel.fxml"; + private final Logger logger = LogsCenter.getLogger(TutorListPanel.class); @FXML - private ListView personListView; + private ListView tutorListView; /** * Creates a {@code PersonListPanel} with the given {@code ObservableList}. */ - public PersonListPanel(ObservableList personList) { + public TutorListPanel(ObservableList tutorList) { super(FXML); - personListView.setItems(personList); - personListView.setCellFactory(listView -> new PersonListViewCell()); + tutorListView.setItems(tutorList); + tutorListView.setCellFactory(listView -> new TutorListViewCell()); } /** * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}. */ - class PersonListViewCell extends ListCell { + class TutorListViewCell extends ListCell { @Override protected void updateItem(Person person, boolean empty) { super.updateItem(person, empty); @@ -41,9 +41,8 @@ protected void updateItem(Person person, boolean empty) { setGraphic(null); setText(null); } else { - setGraphic(new PersonCard(person, getIndex() + 1).getRoot()); + setGraphic(new TutorCard(person, getIndex() + 1).getRoot()); } } } - } diff --git a/src/main/resources/images/arrow_backward_icon.png b/src/main/resources/images/arrow_backward_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..2c99c9de9d1c27de0b8d920e0446d5a40331e1e8 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawsy$sCLo)8Yy=BPT;2`31P`FVr z<{?x1b4K}!A1qu#PRydxM*auC>|X2HwRV}*B#YuuUBe~K!G=pFPj=i@uuuK2MYV1B z=4&0zNZ_-yfDjV6R2`JB+bObbSKHf5iKqWg`kH%USCmK94K~IVr)T@bzvKlvgTd3) K&t;ucLK6VY$U&L_ literal 0 HcmV?d00001 diff --git a/src/main/resources/images/arrow_forward_icon.png b/src/main/resources/images/arrow_forward_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..94236292029e5172cdf296de3a68089d729a55c6 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw3OrpLLo)8Yy|t0I!GMAJ;F^OH zJ~LWx9_-*#)RK~US=aRXt)WWj)R{Mr?wl1nN9gVaP*n2?XQ)oO>ol@*23n~^YvV0xqEbz5pm{M+YXj|yfsze$C2QZ*dU>PY0#l zMG@r|mEK$;&bzO@$jiOH%DwkI@B2W3pO5bRZ|I{>E-}ljTw;R_xkDQlT+k+0m?khS zS6C&mDmTb+PT-uJTwsXMkX&Ge(288(kkFyBM?X>h${GtqEhua35VfOh(N2}9D(%V= zGsMj(OB9GJ$PAPCWW{GvH_=6rEEMU|?eKU@nKa70!&5yxV;@@wJXbPW`HGEiw5m}| z;A7$!Q!+y*n>1>RZkfYlo-#?wyvLI*1~{gk5-*evd(^Y9ba+CNr%Ho4lFTa&wn(xo zd*rE*q)LZu@tU|2CF0)576qlQSz#1)^MO!1O{&zS09l%E6!Wr`2L4|GQ|O(X;uSxz$cElClmBCB?FA}Sa<$Wmq5QlF`S$XdjJ3c07*qoM6N<$g1Z{U A0{{R3 literal 0 HcmV?d00001 diff --git a/src/main/resources/view/AppointmentListCard.fxml b/src/main/resources/view/AppointmentListCard.fxml new file mode 100644 index 00000000000..9fce61c52e3 --- /dev/null +++ b/src/main/resources/view/AppointmentListCard.fxml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/AppointmentListPanel.fxml b/src/main/resources/view/AppointmentListPanel.fxml new file mode 100644 index 00000000000..48454aa7f07 --- /dev/null +++ b/src/main/resources/view/AppointmentListPanel.fxml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/resources/view/CalendarView.fxml b/src/main/resources/view/CalendarView.fxml new file mode 100644 index 00000000000..129babe0a47 --- /dev/null +++ b/src/main/resources/view/CalendarView.fxml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index a431648f6c0..b7e3a66cacb 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -3,16 +3,18 @@ + - + + + - + @@ -33,26 +35,83 @@ - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/PersonListPanel.fxml b/src/main/resources/view/PersonListPanel.fxml deleted file mode 100644 index 8836d323cc5..00000000000 --- a/src/main/resources/view/PersonListPanel.fxml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/TutorListCard.fxml similarity index 96% rename from src/main/resources/view/PersonListCard.fxml rename to src/main/resources/view/TutorListCard.fxml index f08ea32ad55..650a7e592ea 100644 --- a/src/main/resources/view/PersonListCard.fxml +++ b/src/main/resources/view/TutorListCard.fxml @@ -9,7 +9,7 @@ - + @@ -27,10 +27,10 @@ - diff --git a/src/main/resources/view/TutorListPanel.fxml b/src/main/resources/view/TutorListPanel.fxml new file mode 100644 index 00000000000..84d24780fd4 --- /dev/null +++ b/src/main/resources/view/TutorListPanel.fxml @@ -0,0 +1,8 @@ + + + + + + + + From 7a97343eba0edf3cd36d38eebcc4ebea248a36c5 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Wed, 10 Mar 2021 12:36:20 +0800 Subject: [PATCH 064/762] Changed abstract Taggable class to Filterable interface --- src/main/java/seedu/address/model/person/Address.java | 4 ++-- src/main/java/seedu/address/model/person/Email.java | 4 ++-- src/main/java/seedu/address/model/person/Gender.java | 4 ++-- src/main/java/seedu/address/model/person/Name.java | 4 ++-- src/main/java/seedu/address/model/person/Phone.java | 4 ++-- src/main/java/seedu/address/model/tag/Filterable.java | 7 +++++++ src/main/java/seedu/address/model/tag/Tag.java | 2 +- src/main/java/seedu/address/model/tag/Taggable.java | 7 ------- .../address/testutil/EditPersonDescriptorBuilder.java | 1 + src/test/java/seedu/address/testutil/PersonBuilder.java | 1 + 10 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 src/main/java/seedu/address/model/tag/Filterable.java delete mode 100644 src/main/java/seedu/address/model/tag/Taggable.java diff --git a/src/main/java/seedu/address/model/person/Address.java b/src/main/java/seedu/address/model/person/Address.java index 9d0b7e90a83..af74d2c645f 100644 --- a/src/main/java/seedu/address/model/person/Address.java +++ b/src/main/java/seedu/address/model/person/Address.java @@ -1,6 +1,6 @@ package seedu.address.model.person; -import seedu.address.model.tag.Taggable; +import seedu.address.model.tag.Filterable; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -9,7 +9,7 @@ * Represents a Person's address in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} */ -public class Address extends Taggable { +public class Address implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Addresses can take any values, and it should not be blank"; diff --git a/src/main/java/seedu/address/model/person/Email.java b/src/main/java/seedu/address/model/person/Email.java index ed44b625936..3cedcf98597 100644 --- a/src/main/java/seedu/address/model/person/Email.java +++ b/src/main/java/seedu/address/model/person/Email.java @@ -1,6 +1,6 @@ package seedu.address.model.person; -import seedu.address.model.tag.Taggable; +import seedu.address.model.tag.Filterable; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -9,7 +9,7 @@ * Represents a Person's email in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} */ -public class Email extends Taggable { +public class Email implements Filterable { private static final String SPECIAL_CHARACTERS = "!#$%&'*+/=?`{|}~^.-"; public static final String MESSAGE_CONSTRAINTS = "Emails should be of the format local-part@domain " diff --git a/src/main/java/seedu/address/model/person/Gender.java b/src/main/java/seedu/address/model/person/Gender.java index fd0def60138..2010ab0b3f2 100644 --- a/src/main/java/seedu/address/model/person/Gender.java +++ b/src/main/java/seedu/address/model/person/Gender.java @@ -1,6 +1,6 @@ package seedu.address.model.person; -import seedu.address.model.tag.Taggable; +import seedu.address.model.tag.Filterable; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -9,7 +9,7 @@ * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)} */ -public class Gender extends Taggable { +public class Gender implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Gender should only contain alphanumeric characters and spaces, should be female or male, and it should not be blank"; diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java index ab5fa5a50a3..1cfa90060cf 100644 --- a/src/main/java/seedu/address/model/person/Name.java +++ b/src/main/java/seedu/address/model/person/Name.java @@ -1,6 +1,6 @@ package seedu.address.model.person; -import seedu.address.model.tag.Taggable; +import seedu.address.model.tag.Filterable; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -9,7 +9,7 @@ * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} */ -public class Name extends Taggable { +public class Name implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Names should only contain alphanumeric characters and spaces, and it should not be blank"; diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java index 713fe435d99..f6e7ce5b0ba 100644 --- a/src/main/java/seedu/address/model/person/Phone.java +++ b/src/main/java/seedu/address/model/person/Phone.java @@ -1,6 +1,6 @@ package seedu.address.model.person; -import seedu.address.model.tag.Taggable; +import seedu.address.model.tag.Filterable; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; @@ -9,7 +9,7 @@ * Represents a Person's phone number in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} */ -public class Phone extends Taggable { +public class Phone implements Filterable { public static final String MESSAGE_CONSTRAINTS = diff --git a/src/main/java/seedu/address/model/tag/Filterable.java b/src/main/java/seedu/address/model/tag/Filterable.java new file mode 100644 index 00000000000..071ba5d4364 --- /dev/null +++ b/src/main/java/seedu/address/model/tag/Filterable.java @@ -0,0 +1,7 @@ +package seedu.address.model.tag; + +public interface Filterable { + + boolean filter(String s); + +} diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index 3fe455fc8ec..44fb4670f85 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -7,7 +7,7 @@ * Represents a Tag in the address book. * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)} */ -public class Tag extends Taggable { +public class Tag implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Tags names should be alphanumeric"; public static final String VALIDATION_REGEX = "\\p{Alnum}+"; diff --git a/src/main/java/seedu/address/model/tag/Taggable.java b/src/main/java/seedu/address/model/tag/Taggable.java deleted file mode 100644 index 967ea83f2ce..00000000000 --- a/src/main/java/seedu/address/model/tag/Taggable.java +++ /dev/null @@ -1,7 +0,0 @@ -package seedu.address.model.tag; - -public abstract class Taggable { - - public abstract boolean filter(String s); - -} diff --git a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java index cf1b97c600c..e78980afda1 100644 --- a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java +++ b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java @@ -6,6 +6,7 @@ import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.model.person.Address; +import seedu.address.model.person.Name; import seedu.address.model.person.Email; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index a4c93e86bcd..6be381d39ba 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -5,6 +5,7 @@ import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; From 8399639f5e71d118bd02d2361fb253dc03234a8e Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Wed, 10 Mar 2021 14:57:21 +0800 Subject: [PATCH 065/762] Fixed Checkstyle issues --- src/main/java/seedu/address/model/person/Address.java | 5 ++--- src/main/java/seedu/address/model/person/Email.java | 5 ++--- src/main/java/seedu/address/model/person/Gender.java | 8 ++++---- src/main/java/seedu/address/model/person/Name.java | 5 ++--- src/main/java/seedu/address/model/person/Phone.java | 5 ++--- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/main/java/seedu/address/model/person/Address.java b/src/main/java/seedu/address/model/person/Address.java index af74d2c645f..2a50cc0b2f4 100644 --- a/src/main/java/seedu/address/model/person/Address.java +++ b/src/main/java/seedu/address/model/person/Address.java @@ -1,10 +1,9 @@ package seedu.address.model.person; - -import seedu.address.model.tag.Filterable; - import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Person's address in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} diff --git a/src/main/java/seedu/address/model/person/Email.java b/src/main/java/seedu/address/model/person/Email.java index 3cedcf98597..7932b80a724 100644 --- a/src/main/java/seedu/address/model/person/Email.java +++ b/src/main/java/seedu/address/model/person/Email.java @@ -1,10 +1,9 @@ package seedu.address.model.person; - -import seedu.address.model.tag.Filterable; - import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Person's email in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} diff --git a/src/main/java/seedu/address/model/person/Gender.java b/src/main/java/seedu/address/model/person/Gender.java index 2010ab0b3f2..d5acf976952 100644 --- a/src/main/java/seedu/address/model/person/Gender.java +++ b/src/main/java/seedu/address/model/person/Gender.java @@ -1,10 +1,9 @@ package seedu.address.model.person; - -import seedu.address.model.tag.Filterable; - import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)} @@ -12,7 +11,8 @@ public class Gender implements Filterable { public static final String MESSAGE_CONSTRAINTS = - "Gender should only contain alphanumeric characters and spaces, should be female or male, and it should not be blank"; + "Gender should only contain alphanumeric characters and spaces, should be female or male," + + "and it should not be blank"; /* * The first character of the address must not be a whitespace, diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java index 1cfa90060cf..d6f81541ec7 100644 --- a/src/main/java/seedu/address/model/person/Name.java +++ b/src/main/java/seedu/address/model/person/Name.java @@ -1,10 +1,9 @@ package seedu.address.model.person; - -import seedu.address.model.tag.Filterable; - import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Person's name in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java index f6e7ce5b0ba..03cad2e0194 100644 --- a/src/main/java/seedu/address/model/person/Phone.java +++ b/src/main/java/seedu/address/model/person/Phone.java @@ -1,10 +1,9 @@ package seedu.address.model.person; - -import seedu.address.model.tag.Filterable; - import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Person's phone number in the address book. * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} From 6dfb91cc91d5ed9cce02fb05ef3e9e31b4f1a2b6 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Wed, 10 Mar 2021 15:06:56 +0800 Subject: [PATCH 066/762] Added import name into the files --- .../java/seedu/address/logic/parser/AddCommandParserTest.java | 1 + .../java/seedu/address/logic/parser/EditCommandParserTest.java | 1 + src/test/java/seedu/address/logic/parser/ParserUtilTest.java | 1 + src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java | 1 + 4 files changed, 4 insertions(+) diff --git a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java index ea46b68e5ae..5cf487d7ebb 100644 --- a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java @@ -34,6 +34,7 @@ import seedu.address.logic.commands.AddCommand; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; diff --git a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java index f0656d3795c..2ff31522486 100644 --- a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java @@ -38,6 +38,7 @@ import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; import seedu.address.testutil.EditPersonDescriptorBuilder; diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java index 5a161002a0f..4256788b1a7 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java @@ -16,6 +16,7 @@ import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 3d532ddd244..08821bb0c86 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.person.Name; import seedu.address.model.person.Address; import seedu.address.model.person.Email; import seedu.address.model.person.Phone; From 6b7c8b7c5f74ec6d499c01618f6fb62d80c0d0ad Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 15:10:10 +0800 Subject: [PATCH 067/762] Add TagNotFoundException.java --- .../address/model/tag/exceptions/TagNotFoundException.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java diff --git a/src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java b/src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java new file mode 100644 index 00000000000..b787073e91b --- /dev/null +++ b/src/main/java/seedu/address/model/tag/exceptions/TagNotFoundException.java @@ -0,0 +1,7 @@ +package seedu.address.model.tag.exceptions; + +/** + * Signals that the operation is unable to find the specified tag. + */ +public class TagNotFoundException extends RuntimeException { +} From 3b8ce80a0c5fc6c39395ad8c70004b376c025ff1 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Wed, 10 Mar 2021 15:10:11 +0800 Subject: [PATCH 068/762] Fixed Checkstyle issues --- src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java | 2 +- .../seedu/address/testutil/EditPersonDescriptorBuilder.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 08821bb0c86..83b11331cdb 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -12,9 +12,9 @@ import org.junit.jupiter.api.Test; import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.person.Name; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Phone; public class JsonAdaptedPersonTest { diff --git a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java index e78980afda1..4584bd5044e 100644 --- a/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java +++ b/src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java @@ -6,8 +6,8 @@ import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.model.person.Address; -import seedu.address.model.person.Name; import seedu.address.model.person.Email; +import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; From 36159bc692db34e70cfdce927cb330b60de84f4f Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 15:20:58 +0800 Subject: [PATCH 069/762] Add DuplicateTagException.java --- .../model/tag/exceptions/DuplicateTagException.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java diff --git a/src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java b/src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java new file mode 100644 index 00000000000..143f9b6a0d1 --- /dev/null +++ b/src/main/java/seedu/address/model/tag/exceptions/DuplicateTagException.java @@ -0,0 +1,7 @@ +package seedu.address.model.tag.exceptions; + +public class DuplicateTagException extends RuntimeException { + public DuplicateTagException() { + super("Operation would result in duplicate tags"); + } +} From dec15420dd0f1fc2b36a3bf1547668378d21d20b Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Tue, 9 Mar 2021 21:56:54 +0800 Subject: [PATCH 070/762] Add subject classes --- .../model/subject/SubjectExperience.java | 50 ++++++++++ .../address/model/subject/SubjectLevel.java | 56 +++++++++++ .../address/model/subject/SubjectName.java | 56 +++++++++++ .../model/subject/SubjectQualification.java | 56 +++++++++++ .../address/model/subject/SubjectRate.java | 50 ++++++++++ .../address/model/subject/TutorSubject.java | 93 +++++++++++++++++++ 6 files changed, 361 insertions(+) create mode 100644 src/main/java/seedu/address/model/subject/SubjectExperience.java create mode 100644 src/main/java/seedu/address/model/subject/SubjectLevel.java create mode 100644 src/main/java/seedu/address/model/subject/SubjectName.java create mode 100644 src/main/java/seedu/address/model/subject/SubjectQualification.java create mode 100644 src/main/java/seedu/address/model/subject/SubjectRate.java create mode 100644 src/main/java/seedu/address/model/subject/TutorSubject.java diff --git a/src/main/java/seedu/address/model/subject/SubjectExperience.java b/src/main/java/seedu/address/model/subject/SubjectExperience.java new file mode 100644 index 00000000000..d9e4328ef5c --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectExperience.java @@ -0,0 +1,50 @@ +package seedu.address.model.subject; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Tutor's years of experience in a subject in Tutor Tracker. + * Guarantees: immutable; is valid as declared in {@link #isValidExperience(String)} + */ +public class SubjectExperience { + public static final String MESSAGE_CONSTRAINTS = + "Subject experience should only contain numbers, and it should be at least 1 digit long"; + public static final String VALIDATION_REGEX = "\\d{1,}"; + public final Integer experience; + + /** + * Constructs a {@code SubjectExperience}. + * + * @param experience A valid subject experience. + */ + public SubjectExperience(String experience) { + requireNonNull(experience); + checkArgument(isValidExperience(experience), MESSAGE_CONSTRAINTS); + this.experience = Integer.parseInt(experience); + } + + /** + * Returns true if a given string is a valid subject experience. + */ + public static boolean isValidExperience(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return experience.toString(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectExperience // instanceof handles nulls + && experience.equals(((SubjectExperience) other).experience)); // state check + } + + @Override + public int hashCode() { + return experience.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/subject/SubjectLevel.java b/src/main/java/seedu/address/model/subject/SubjectLevel.java new file mode 100644 index 00000000000..2eefd215d58 --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectLevel.java @@ -0,0 +1,56 @@ +package seedu.address.model.subject; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Subject's education level in Tutor Tracker. + * Guarantees: immutable; is valid as declared in {@link #isValidLevel(String)} + */ +public class SubjectLevel { + public static final String MESSAGE_CONSTRAINTS = + "Subject level should only contain alphanumeric characters and spaces, and it should not be blank"; + + /* + * The first character of the subject level must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + + public final String level; + + /** + * Constructs a {@code SubjectLevel}. + * + * @param level A valid subject level. + */ + public SubjectLevel(String level) { + requireNonNull(level); + checkArgument(isValidLevel(level), MESSAGE_CONSTRAINTS); + this.level = level; + } + + /** + * Returns true if a given string is a valid subject level. + */ + public static boolean isValidLevel(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return level; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectLevel // instanceof handles nulls + && level.equals(((SubjectLevel) other).level)); // state check + } + + @Override + public int hashCode() { + return level.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/subject/SubjectName.java b/src/main/java/seedu/address/model/subject/SubjectName.java new file mode 100644 index 00000000000..34d4b1643d1 --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectName.java @@ -0,0 +1,56 @@ +package seedu.address.model.subject; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Subject's name in Tutor Tracker. + * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} + */ +public class SubjectName { + public static final String MESSAGE_CONSTRAINTS = + "Names should only contain alphanumeric characters and spaces, and it should not be blank"; + + /* + * The first character of the subject name must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + + public final String name; + + /** + * Constructs a {@code SubjectName}. + * + * @param name A valid subject name. + */ + public SubjectName(String name) { + requireNonNull(name); + checkArgument(isValidName(name), MESSAGE_CONSTRAINTS); + this.name = name; + } + + /** + * Returns true if a given string is a valid name. + */ + public static boolean isValidName(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return name; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectName // instanceof handles nulls + && name.equals(((SubjectName) other).name)); // state check + } + + @Override + public int hashCode() { + return name.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/subject/SubjectQualification.java b/src/main/java/seedu/address/model/subject/SubjectQualification.java new file mode 100644 index 00000000000..64655df98eb --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectQualification.java @@ -0,0 +1,56 @@ +package seedu.address.model.subject; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Tutor's qualifications in a subject in Tutor Tracker. + * Guarantees: immutable; is valid as declared in {@link #isValidQualification(String)} + */ +public class SubjectQualification { + public static final String MESSAGE_CONSTRAINTS = + "Qualifications should only contain alphanumeric characters and spaces, and it should not be blank"; + + /* + * The first character of the subject qualification must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + + public final String qualification; + + /** + * Constructs a {@code SubjectQualification}. + * + * @param qualification A valid subject qualification. + */ + public SubjectQualification(String qualification) { + requireNonNull(qualification); + checkArgument(isValidQualification(qualification), MESSAGE_CONSTRAINTS); + this.qualification = qualification; + } + + /** + * Returns true if a given string is a valid subject qualification. + */ + public static boolean isValidQualification(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return qualification; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectQualification // instanceof handles nulls + && qualification.equals(((SubjectQualification) other).qualification)); // state check + } + + @Override + public int hashCode() { + return qualification.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/subject/SubjectRate.java b/src/main/java/seedu/address/model/subject/SubjectRate.java new file mode 100644 index 00000000000..3ccd69cd31c --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectRate.java @@ -0,0 +1,50 @@ +package seedu.address.model.subject; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Subject's hourly rate in Tutor Tracker. + * Guarantees: immutable; is valid as declared in {@link #isValidRate(String)} + */ +public class SubjectRate { + public static final String MESSAGE_CONSTRAINTS = + "Subject rate should only contain numbers, and it should be at least 1 digit long"; + public static final String VALIDATION_REGEX = "\\d{1,}"; + public final Integer rate; + + /** + * Constructs a {@code SubjectRate}. + * + * @param rate A valid subject rate. + */ + public SubjectRate(String rate) { + requireNonNull(rate); + checkArgument(isValidRate(rate), MESSAGE_CONSTRAINTS); + this.rate = Integer.parseInt(rate); + } + + /** + * Returns true if a given string is a valid subject rate. + */ + public static boolean isValidRate(String test) { + return test.matches(VALIDATION_REGEX); + } + + @Override + public String toString() { + return rate.toString(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectRate // instanceof handles nulls + && rate.equals(((SubjectRate) other).rate)); // state check + } + + @Override + public int hashCode() { + return rate.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/subject/TutorSubject.java b/src/main/java/seedu/address/model/subject/TutorSubject.java new file mode 100644 index 00000000000..ddec44e7c08 --- /dev/null +++ b/src/main/java/seedu/address/model/subject/TutorSubject.java @@ -0,0 +1,93 @@ +package seedu.address.model.subject; + +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Objects; + +/** + * Represents a subject that a tutor offers. + * Guarantees: details are present and not null, field values are validated, immutable. + */ +public class TutorSubject { + private final SubjectName name; + private final SubjectLevel level; + private final SubjectRate rate; + private final SubjectExperience experience; + private final SubjectQualification qualification; + + /** + * Every field must be present and not null. + */ + public TutorSubject(SubjectName name, SubjectLevel level, SubjectRate rate, + SubjectExperience experience, SubjectQualification qualification) { + requireAllNonNull(name, level, rate, experience, qualification); + this.name = name; + this.level = level; + this.rate = rate; + this.experience = experience; + this.qualification = qualification; + } + + public SubjectName getName() { + return name; + } + + public SubjectLevel getLevel() { + return level; + } + + public SubjectRate getRate() { + return rate; + } + + public SubjectExperience getExperience() { + return experience; + } + + public SubjectQualification getQualification() { + return qualification; + } + + /** + * Returns true if both tutor subjects have the same identity and data fields. + */ + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof TutorSubject)) { + return false; + } + + TutorSubject otherTutorSubject = (TutorSubject) other; + return otherTutorSubject.getName().equals(getName()) + && otherTutorSubject.getLevel().equals(getLevel()) + && otherTutorSubject.getRate().equals(getRate()) + && otherTutorSubject.getExperience().equals(getExperience()) + && otherTutorSubject.getQualification().equals(getQualification()); + } + + @Override + public int hashCode() { + // use this method for custom fields hashing instead of implementing your own + return Objects.hash(name, level, rate, experience, qualification); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append(getName()) + .append("; Level: ") + .append(getLevel()) + .append("; Rate: ") + .append(getRate()) + .append("; Years of Experience: ") + .append(getExperience()) + .append("; Qualification: ") + .append(getQualification()); + + return builder.toString(); + } +} From d8a1cd9727dd512027e5189d7d9650219d4b9b9c Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Wed, 10 Mar 2021 15:13:01 +0800 Subject: [PATCH 071/762] Add list of subjects to tutor TODO: - Parsing of subjects - Editing of subjects - Sample data with subjects - Storage for subjects - Adapt PersonBuilder with subjects --- .../address/logic/commands/EditCommand.java | 7 +++++- .../logic/parser/AddCommandParser.java | 8 +++++- .../seedu/address/model/person/Person.java | 25 +++++++++++++++++-- .../address/model/util/SampleDataUtil.java | 15 +++++++++++ .../address/storage/JsonAdaptedPerson.java | 7 +++++- .../seedu/address/testutil/PersonBuilder.java | 17 ++++++++++++- 6 files changed, 73 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 7e36114902f..f2999002a65 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -8,6 +8,7 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -24,6 +25,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** @@ -99,7 +101,10 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags); + // TODO: Edit Tutor Subjects + List updatedTutorSubjects = new ArrayList<>(); + + return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTutorSubjects, updatedTags); } @Override diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 3b8bfa035e8..0e2a38378a6 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -7,6 +7,8 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -17,6 +19,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** @@ -44,7 +47,10 @@ public AddCommand parse(String args) throws ParseException { Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Person person = new Person(name, phone, email, address, tagList); + // TODO: Parse Tutor Subjects + List tutorSubjects = new ArrayList<>(); + + Person person = new Person(name, phone, email, address, tutorSubjects, tagList); return new AddCommand(person); } diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index 8ff1d83fe89..d07562489e8 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -2,11 +2,14 @@ import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; +import java.util.List; import java.util.Objects; import java.util.Set; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** @@ -22,17 +25,20 @@ public class Person { // Data fields private final Address address; + private final List tutorSubjects = new ArrayList<>(); private final Set tags = new HashSet<>(); /** * Every field must be present and not null. */ - public Person(Name name, Phone phone, Email email, Address address, Set tags) { + public Person(Name name, Phone phone, Email email, Address address, + List tutorSubjects, Set tags) { requireAllNonNull(name, phone, email, address, tags); this.name = name; this.phone = phone; this.email = email; this.address = address; + this.tutorSubjects.addAll(tutorSubjects); this.tags.addAll(tags); } @@ -52,6 +58,14 @@ public Address getAddress() { return address; } + /** + * Returns an immutable list, which throws {@code UnsupportedOperationException} + * if modification is attempted. + */ + public List getTutorSubjects() { + return Collections.unmodifiableList(tutorSubjects); + } + /** * Returns an immutable tag set, which throws {@code UnsupportedOperationException} * if modification is attempted. @@ -92,13 +106,14 @@ public boolean equals(Object other) { && otherPerson.getPhone().equals(getPhone()) && otherPerson.getEmail().equals(getEmail()) && otherPerson.getAddress().equals(getAddress()) + && otherPerson.getTutorSubjects().equals(getTutorSubjects()) && otherPerson.getTags().equals(getTags()); } @Override public int hashCode() { // use this method for custom fields hashing instead of implementing your own - return Objects.hash(name, phone, email, address, tags); + return Objects.hash(name, phone, email, address, tutorSubjects, tags); } @Override @@ -112,6 +127,12 @@ public String toString() { .append("; Address: ") .append(getAddress()); + List tutorSubjects = getTutorSubjects(); + if (!tutorSubjects.isEmpty()) { + builder.append("; Subjects: "); + tutorSubjects.forEach(builder::append); + } + Set tags = getTags(); if (!tags.isEmpty()) { builder.append("; Tags: "); diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index 1806da4facf..ab563da7203 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -1,6 +1,8 @@ package seedu.address.model.util; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -11,6 +13,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** @@ -21,21 +24,27 @@ public static Person[] getSamplePersons() { return new Person[] { new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), new Address("Blk 30 Geylang Street 29, #06-40"), + getTutorSubjectList(), getTagSet("friends")), new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), + getTutorSubjectList(), getTagSet("colleagues", "friends")), new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), + getTutorSubjectList(), getTagSet("neighbours")), new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), + getTutorSubjectList(), getTagSet("family")), new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), new Address("Blk 47 Tampines Street 20, #17-35"), + getTutorSubjectList(), getTagSet("classmates")), new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), new Address("Blk 45 Aljunied Street 85, #11-31"), + getTutorSubjectList(), getTagSet("colleagues")) }; } @@ -48,6 +57,12 @@ public static ReadOnlyAddressBook getSampleAddressBook() { return sampleAb; } + // TODO: Create sample Tutor Subject data + public static List getTutorSubjectList() { + List tutorSubjects = new ArrayList<>(); + return tutorSubjects; + } + /** * Returns a tag set containing the list of strings given. */ diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index a6321cec2ea..176c804710a 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -15,6 +15,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** @@ -103,7 +104,11 @@ public Person toModelType() throws IllegalValueException { final Address modelAddress = new Address(address); final Set modelTags = new HashSet<>(personTags); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags); + + // TODO: Adapt storage for Tutor Subjects + final List modelTutorSubjects = new ArrayList<>(); + + return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTutorSubjects, modelTags); } } diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index 6be381d39ba..b57cd76f612 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -1,6 +1,8 @@ package seedu.address.testutil; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import seedu.address.model.person.Address; @@ -8,6 +10,7 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; import seedu.address.model.util.SampleDataUtil; @@ -25,6 +28,7 @@ public class PersonBuilder { private Phone phone; private Email email; private Address address; + private List tutorSubjects; private Set tags; /** @@ -35,6 +39,7 @@ public PersonBuilder() { phone = new Phone(DEFAULT_PHONE); email = new Email(DEFAULT_EMAIL); address = new Address(DEFAULT_ADDRESS); + tutorSubjects = new ArrayList<>(); tags = new HashSet<>(); } @@ -46,6 +51,7 @@ public PersonBuilder(Person personToCopy) { phone = personToCopy.getPhone(); email = personToCopy.getEmail(); address = personToCopy.getAddress(); + tutorSubjects = personToCopy.getTutorSubjects(); tags = new HashSet<>(personToCopy.getTags()); } @@ -89,8 +95,17 @@ public PersonBuilder withEmail(String email) { return this; } + /** + * Parses the {@code subject} and add it to the {@code Person} that we are building. + */ + public PersonBuilder withSubject() { + // TODO: Add withSubject method + this.tutorSubjects = SampleDataUtil.getTutorSubjectList(); + return this; + } + public Person build() { - return new Person(name, phone, email, address, tags); + return new Person(name, phone, email, address, tutorSubjects, tags); } } From 36170d5373baf6efb347efbc734a791652674eaa Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Wed, 10 Mar 2021 15:50:48 +0800 Subject: [PATCH 072/762] Implement Filterable interface for subject classes --- .../address/model/subject/SubjectExperience.java | 9 ++++++++- .../seedu/address/model/subject/SubjectLevel.java | 9 ++++++++- .../seedu/address/model/subject/SubjectName.java | 9 ++++++++- .../model/subject/SubjectQualification.java | 9 ++++++++- .../seedu/address/model/subject/SubjectRate.java | 9 ++++++++- .../seedu/address/model/subject/TutorSubject.java | 15 ++++++++++++++- 6 files changed, 54 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/model/subject/SubjectExperience.java b/src/main/java/seedu/address/model/subject/SubjectExperience.java index d9e4328ef5c..0c6456ebc97 100644 --- a/src/main/java/seedu/address/model/subject/SubjectExperience.java +++ b/src/main/java/seedu/address/model/subject/SubjectExperience.java @@ -3,11 +3,13 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Tutor's years of experience in a subject in Tutor Tracker. * Guarantees: immutable; is valid as declared in {@link #isValidExperience(String)} */ -public class SubjectExperience { +public class SubjectExperience implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Subject experience should only contain numbers, and it should be at least 1 digit long"; public static final String VALIDATION_REGEX = "\\d{1,}"; @@ -47,4 +49,9 @@ public boolean equals(Object other) { public int hashCode() { return experience.hashCode(); } + + @Override + public boolean filter(String s) { + return experience.equals(Integer.parseInt(s)); + } } diff --git a/src/main/java/seedu/address/model/subject/SubjectLevel.java b/src/main/java/seedu/address/model/subject/SubjectLevel.java index 2eefd215d58..57974c7162a 100644 --- a/src/main/java/seedu/address/model/subject/SubjectLevel.java +++ b/src/main/java/seedu/address/model/subject/SubjectLevel.java @@ -3,11 +3,13 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Subject's education level in Tutor Tracker. * Guarantees: immutable; is valid as declared in {@link #isValidLevel(String)} */ -public class SubjectLevel { +public class SubjectLevel implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Subject level should only contain alphanumeric characters and spaces, and it should not be blank"; @@ -53,4 +55,9 @@ public boolean equals(Object other) { public int hashCode() { return level.hashCode(); } + + @Override + public boolean filter(String s) { + return level.contains(s); + } } diff --git a/src/main/java/seedu/address/model/subject/SubjectName.java b/src/main/java/seedu/address/model/subject/SubjectName.java index 34d4b1643d1..5984e6a9fff 100644 --- a/src/main/java/seedu/address/model/subject/SubjectName.java +++ b/src/main/java/seedu/address/model/subject/SubjectName.java @@ -3,11 +3,13 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Subject's name in Tutor Tracker. * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} */ -public class SubjectName { +public class SubjectName implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Names should only contain alphanumeric characters and spaces, and it should not be blank"; @@ -53,4 +55,9 @@ public boolean equals(Object other) { public int hashCode() { return name.hashCode(); } + + @Override + public boolean filter(String s) { + return name.contains(s); + } } diff --git a/src/main/java/seedu/address/model/subject/SubjectQualification.java b/src/main/java/seedu/address/model/subject/SubjectQualification.java index 64655df98eb..dcfa1161c36 100644 --- a/src/main/java/seedu/address/model/subject/SubjectQualification.java +++ b/src/main/java/seedu/address/model/subject/SubjectQualification.java @@ -3,11 +3,13 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Tutor's qualifications in a subject in Tutor Tracker. * Guarantees: immutable; is valid as declared in {@link #isValidQualification(String)} */ -public class SubjectQualification { +public class SubjectQualification implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Qualifications should only contain alphanumeric characters and spaces, and it should not be blank"; @@ -53,4 +55,9 @@ public boolean equals(Object other) { public int hashCode() { return qualification.hashCode(); } + + @Override + public boolean filter(String s) { + return qualification.contains(s); + } } diff --git a/src/main/java/seedu/address/model/subject/SubjectRate.java b/src/main/java/seedu/address/model/subject/SubjectRate.java index 3ccd69cd31c..d821dfc644d 100644 --- a/src/main/java/seedu/address/model/subject/SubjectRate.java +++ b/src/main/java/seedu/address/model/subject/SubjectRate.java @@ -3,11 +3,13 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.AppUtil.checkArgument; +import seedu.address.model.tag.Filterable; + /** * Represents a Subject's hourly rate in Tutor Tracker. * Guarantees: immutable; is valid as declared in {@link #isValidRate(String)} */ -public class SubjectRate { +public class SubjectRate implements Filterable { public static final String MESSAGE_CONSTRAINTS = "Subject rate should only contain numbers, and it should be at least 1 digit long"; public static final String VALIDATION_REGEX = "\\d{1,}"; @@ -47,4 +49,9 @@ public boolean equals(Object other) { public int hashCode() { return rate.hashCode(); } + + @Override + public boolean filter(String s) { + return rate.equals(Integer.parseInt(s)); + } } diff --git a/src/main/java/seedu/address/model/subject/TutorSubject.java b/src/main/java/seedu/address/model/subject/TutorSubject.java index ddec44e7c08..d5e13589b29 100644 --- a/src/main/java/seedu/address/model/subject/TutorSubject.java +++ b/src/main/java/seedu/address/model/subject/TutorSubject.java @@ -4,11 +4,13 @@ import java.util.Objects; +import seedu.address.model.tag.Filterable; + /** * Represents a subject that a tutor offers. * Guarantees: details are present and not null, field values are validated, immutable. */ -public class TutorSubject { +public class TutorSubject implements Filterable { private final SubjectName name; private final SubjectLevel level; private final SubjectRate rate; @@ -90,4 +92,15 @@ public String toString() { return builder.toString(); } + + @Override + public boolean filter(String s) { + boolean disjunction = false; + disjunction = disjunction || name.filter(s); + disjunction = disjunction || level.filter(s); + disjunction = disjunction || rate.filter(s); + disjunction = disjunction || experience.filter(s); + disjunction = disjunction || qualification.filter(s); + return disjunction; + } } From 5418babca0aa9ab12d0ad55ac86f6343ea0648c3 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 15:53:09 +0800 Subject: [PATCH 073/762] Modify TagList.java --- src/main/java/seedu/address/model/tag/TagList.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java index 12a8f36b9bb..5d38f2e0c8f 100644 --- a/src/main/java/seedu/address/model/tag/TagList.java +++ b/src/main/java/seedu/address/model/tag/TagList.java @@ -29,10 +29,6 @@ public class TagList implements Iterable { */ public boolean contains(Tag toCheck) { requireNonNull(toCheck); - // a tutor should only have 1 name, email and gender. - if (toCheck instanceof Name || toCheck instanceof Email || toCheck instanceof Gender) { - return internalList.stream().anyMatch(toCheck::isSameTagType); - } return internalList.stream().anyMatch(toCheck::isSameTag); } From 12ea1a94fdef7762cdfae38540babb5de398ea23 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 10 Mar 2021 19:27:33 +0800 Subject: [PATCH 074/762] Add Appointment Commands and Parser classes --- .../seedu/address/logic/LogicManager.java | 8 +- .../AddAppointmentCommand.java | 48 +++++++++++ .../DeleteAppointmentCommand.java | 44 ++++++++++ .../EditAppointmentCommand.java | 81 ++++++++++++++++++ .../FindAppointmentCommand.java | 35 ++++++++ .../ListAppointmentCommand.java | 24 ++++++ .../seedu/address/logic/parser/CliSyntax.java | 18 ++++ ...ookParser.java => TutorTrackerParser.java} | 27 +++++- .../AddAppointmentCommandParser.java | 60 ++++++++++++++ .../DeleteAppointmentCommandParser.java | 29 +++++++ .../EditAppointmentCommandParser.java | 82 +++++++++++++++++++ .../FindAppointmentCommandParser.java | 34 ++++++++ ...rTest.java => TutorTrackerParserTest.java} | 4 +- 13 files changed, 487 insertions(+), 7 deletions(-) create mode 100644 src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java create mode 100644 src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java create mode 100644 src/main/java/seedu/address/logic/commands/appointmentcommands/EditAppointmentCommand.java create mode 100644 src/main/java/seedu/address/logic/commands/appointmentcommands/FindAppointmentCommand.java create mode 100644 src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java rename src/main/java/seedu/address/logic/parser/{AddressBookParser.java => TutorTrackerParser.java} (64%) create mode 100644 src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java create mode 100644 src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java create mode 100644 src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java create mode 100644 src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java rename src/test/java/seedu/address/logic/parser/{AddressBookParserTest.java => TutorTrackerParserTest.java} (97%) diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 9d9c6d15bdc..bfdd6a03b8a 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -10,7 +10,7 @@ import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.AddressBookParser; +import seedu.address.logic.parser.TutorTrackerParser; import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; @@ -26,7 +26,7 @@ public class LogicManager implements Logic { private final Model model; private final Storage storage; - private final AddressBookParser addressBookParser; + private final TutorTrackerParser tutorTrackerParser; /** * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}. @@ -34,7 +34,7 @@ public class LogicManager implements Logic { public LogicManager(Model model, Storage storage) { this.model = model; this.storage = storage; - addressBookParser = new AddressBookParser(); + tutorTrackerParser = new TutorTrackerParser(); } @Override @@ -42,7 +42,7 @@ public CommandResult execute(String commandText) throws CommandException, ParseE logger.info("----------------[USER COMMAND][" + commandText + "]"); CommandResult commandResult; - Command command = addressBookParser.parseCommand(commandText); + Command command = tutorTrackerParser.parseCommand(commandText); commandResult = command.execute(model); try { diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java new file mode 100644 index 00000000000..c696db5091e --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java @@ -0,0 +1,48 @@ +package seedu.address.logic.commands.appointmentcommands; + +import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_FROM; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_TO; + +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; + +/** + * Adds an appointment to the appointment list. + */ +public class AddAppointmentCommand extends Command { + + public static final String COMMAND_WORD = "add_appointment"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds an appointment to the appointment list. " + + "Parameters: " + + PREFIX_EMAIL + "NAME " + + PREFIX_SUBJECT_NAME + "SUBJECT " + + PREFIX_DATE + "DATE " + + PREFIX_TIME_FROM + "TIME FROM " + + PREFIX_TIME_TO + "TIME TO " + + PREFIX_LOCATION + "LOCATION\n" + + "Example: " + COMMAND_WORD + " " + + PREFIX_EMAIL + "chloelim@example.com " + + PREFIX_SUBJECT_NAME + "English " + + PREFIX_DATE + "2021-3-1 " + + PREFIX_TIME_FROM + "10:00am " + + PREFIX_TIME_TO + "12:00pm " + + PREFIX_LOCATION + "Bedok"; + + public static final String MESSAGE_SUCCESS = "New appointment added: %1$s"; + public static final String MESSAGE_DUPLICATE_APPOINTMENT = "This appointment already exists in the list"; + + /** + * More to be implemented + */ + @Override + public CommandResult execute(Model model) throws CommandException { + return null; + } +} diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java new file mode 100644 index 00000000000..8c6c82294e4 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java @@ -0,0 +1,44 @@ +package seedu.address.logic.commands.appointmentcommands; + +import static java.util.Objects.requireNonNull; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; + +/** + * Deletes an appointment identified using it's displayed index from the appointment list. + */ +public class DeleteAppointmentCommand extends Command { + + public static final String COMMAND_WORD = "delete_appointment"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Deletes the appointment identified by the index number used in the displayed appointment list.\n" + + "Parameters: INDEX (must be a positive integer)\n" + + "Example: " + COMMAND_WORD + " 1"; + + public static final String MESSAGE_DELETE_APPOINTMENT_SUCCESS = "Deleted Appointment: %1$s"; + + private final Index targetIndex; + + public DeleteAppointmentCommand(Index targetIndex) { + this.targetIndex = targetIndex; + } + + /* To be implemented */ + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + return null; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof DeleteAppointmentCommand // instanceof handles nulls + && targetIndex.equals(((DeleteAppointmentCommand) other).targetIndex)); // state check + } +} diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/EditAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/EditAppointmentCommand.java new file mode 100644 index 00000000000..5eb1b8b4b3c --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/EditAppointmentCommand.java @@ -0,0 +1,81 @@ +package seedu.address.logic.commands.appointmentcommands; + +import static java.util.Objects.requireNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_FROM; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_TO; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; + +/** + * Edits the details of an existing appointment in the appointment list. + */ +public class EditAppointmentCommand extends Command { + + public static final String COMMAND_WORD = "edit_appointment"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the appointment identified " + + "by the index number used in the displayed appointment list. " + + "Existing values will be overwritten by the input values.\n" + + "Parameters: INDEX (must be a positive integer) " + + "[" + PREFIX_EMAIL + "NAME] " + + "[" + PREFIX_SUBJECT_NAME + "SUBJECT] " + + "[" + PREFIX_DATE + "DATE] " + + "[" + PREFIX_TIME_FROM + "TIME FROM] " + + "[" + PREFIX_TIME_TO + "TIME TO] " + + "[" + PREFIX_LOCATION + "LOCATION]\n" + + "Example: " + COMMAND_WORD + " 1 " + + PREFIX_EMAIL + "chloelim@example.com " + + PREFIX_SUBJECT_NAME + "Science"; + + public static final String MESSAGE_EDIT_APPOINTMENT_SUCCESS = "Edited Appointment: %1$s"; + public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided."; + public static final String MESSAGE_DUPLICATE_APPOINTMENT = "This appointment already exists."; + + private final Index index; + + /** + * @param index of the appointment in the filtered appointment list to edit + */ + public EditAppointmentCommand(Index index) { + requireNonNull(index); + this.index = index; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + return null; + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof EditAppointmentCommand)) { + return false; + } + + // state check + EditAppointmentCommand e = (EditAppointmentCommand) other; + return index.equals(e.index); + } + + /** + * To be implemented + */ + public static class EditAppointmentDescriptor { + public EditAppointmentDescriptor() {} + } +} diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/FindAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/FindAppointmentCommand.java new file mode 100644 index 00000000000..3047dc3c884 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/FindAppointmentCommand.java @@ -0,0 +1,35 @@ +package seedu.address.logic.commands.appointmentcommands; + +import static java.util.Objects.requireNonNull; + +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.model.Model; + +/** + * Finds and lists all appointments in list whose attributes contains any of the argument keywords. + * Keyword matching is case insensitive. + */ +public class FindAppointmentCommand extends Command { + + public static final String COMMAND_WORD = "find_appointment"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all appointments whose attributes contain any of" + + " the specified keywords (case-insensitive) and displays them as a list with index numbers.\n" + + "Parameters: KEYWORD [MORE_KEYWORDS]...\n" + + "Example: " + COMMAND_WORD + " alice bob charlie"; + + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + return null; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof FindAppointmentCommand // instanceof handles nulls + ); + } +} diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java new file mode 100644 index 00000000000..1bd9daccf6f --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java @@ -0,0 +1,24 @@ +package seedu.address.logic.commands.appointmentcommands; + +import static java.util.Objects.requireNonNull; + +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.CommandResult; +import seedu.address.model.Model; + +/** + * Lists all appointments in the appointment list to the user. + */ +public class ListAppointmentCommand extends Command { + + public static final String COMMAND_WORD = "list_appointment"; + + public static final String MESSAGE_SUCCESS = "Listed all appointments"; + + + @Override + public CommandResult execute(Model model) { + requireNonNull(model); + return null; + } +} diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 75b1a9bf119..63bdb744ba8 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -12,4 +12,22 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); + /* + * Subject prefix definitions + * Reference: s/English r/50 l/Sec 3 y/5 q/A-Level s/Mathematics r/60 l/Sec 4 y/6 q/A-Level + */ + public static final Prefix PREFIX_SUBJECT_NAME = new Prefix("s/"); + public static final Prefix PREFIX_RATE = new Prefix("r/"); + public static final Prefix PREFIX_EDUCATION_LEVEL = new Prefix("l/"); + public static final Prefix PREFIX_YEAR = new Prefix("y/"); + public static final Prefix PREFIX_QUALIFICATION = new Prefix("q/"); + + /* + * Appointment prefix definitions + * Reference: n/NAME s/SUBJECT d/DATE fr/TIME_FROM to/TIME_TO [l/LOCATION] + */ + public static final Prefix PREFIX_DATE = new Prefix("d/"); + public static final Prefix PREFIX_TIME_FROM = new Prefix("fr/"); + public static final Prefix PREFIX_TIME_TO = new Prefix("to/"); + public static final Prefix PREFIX_LOCATION = new Prefix("l/"); } diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java similarity index 64% rename from src/main/java/seedu/address/logic/parser/AddressBookParser.java rename to src/main/java/seedu/address/logic/parser/TutorTrackerParser.java index 1e466792b46..29450b7fc75 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java @@ -15,12 +15,21 @@ import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.appointmentcommands.AddAppointmentCommand; +import seedu.address.logic.commands.appointmentcommands.DeleteAppointmentCommand; +import seedu.address.logic.commands.appointmentcommands.EditAppointmentCommand; +import seedu.address.logic.commands.appointmentcommands.FindAppointmentCommand; +import seedu.address.logic.commands.appointmentcommands.ListAppointmentCommand; +import seedu.address.logic.parser.appointmentparser.AddAppointmentCommandParser; +import seedu.address.logic.parser.appointmentparser.DeleteAppointmentCommandParser; +import seedu.address.logic.parser.appointmentparser.EditAppointmentCommandParser; +import seedu.address.logic.parser.appointmentparser.FindAppointmentCommandParser; import seedu.address.logic.parser.exceptions.ParseException; /** * Parses user input. */ -public class AddressBookParser { +public class TutorTrackerParser { /** * Used for initial separation of command word and args. @@ -68,6 +77,22 @@ public Command parseCommand(String userInput) throws ParseException { case HelpCommand.COMMAND_WORD: return new HelpCommand(); + /* Appointment Commands */ + case AddAppointmentCommand.COMMAND_WORD: + return new AddAppointmentCommandParser().parse(arguments); + + case EditAppointmentCommand.COMMAND_WORD: + return new EditAppointmentCommandParser().parse(arguments); + + case DeleteAppointmentCommand.COMMAND_WORD: + return new DeleteAppointmentCommandParser().parse(arguments); + + case FindAppointmentCommand.COMMAND_WORD: + return new FindAppointmentCommandParser().parse(arguments); + + case ListAppointmentCommand.COMMAND_WORD: + return new ListAppointmentCommand(); + default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java new file mode 100644 index 00000000000..3b8bfa035e8 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java @@ -0,0 +1,60 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; + +import java.util.Set; +import java.util.stream.Stream; + +import seedu.address.logic.commands.AddCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Address; +import seedu.address.model.person.Email; +import seedu.address.model.person.Name; +import seedu.address.model.person.Person; +import seedu.address.model.person.Phone; +import seedu.address.model.tag.Tag; + +/** + * Parses input arguments and creates a new AddCommand object + */ +public class AddCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the AddCommand + * and returns an AddCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public AddCommand parse(String args) throws ParseException { + ArgumentMultimap argMultimap = + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + + if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) + || !argMultimap.getPreamble().isEmpty()) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); + } + + Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); + Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); + Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); + Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); + Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); + + Person person = new Person(name, phone, email, address, tagList); + + return new AddCommand(person); + } + + /** + * Returns true if none of the prefixes contains empty {@code Optional} values in the given + * {@code ArgumentMultimap}. + */ + private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { + return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java new file mode 100644 index 00000000000..522b93081cc --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java @@ -0,0 +1,29 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.DeleteCommand; +import seedu.address.logic.parser.exceptions.ParseException; + +/** + * Parses input arguments and creates a new DeleteCommand object + */ +public class DeleteCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the DeleteCommand + * and returns a DeleteCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public DeleteCommand parse(String args) throws ParseException { + try { + Index index = ParserUtil.parseIndex(args); + return new DeleteCommand(index); + } catch (ParseException pe) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe); + } + } + +} diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java new file mode 100644 index 00000000000..845644b7dea --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java @@ -0,0 +1,82 @@ +package seedu.address.logic.parser; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; + +import java.util.Collection; +import java.util.Collections; +import java.util.Optional; +import java.util.Set; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.EditCommand; +import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.tag.Tag; + +/** + * Parses input arguments and creates a new EditCommand object + */ +public class EditCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the EditCommand + * and returns an EditCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public EditCommand parse(String args) throws ParseException { + requireNonNull(args); + ArgumentMultimap argMultimap = + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + + Index index; + + try { + index = ParserUtil.parseIndex(argMultimap.getPreamble()); + } catch (ParseException pe) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe); + } + + EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor(); + if (argMultimap.getValue(PREFIX_NAME).isPresent()) { + editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get())); + } + if (argMultimap.getValue(PREFIX_PHONE).isPresent()) { + editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())); + } + if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) { + editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); + } + if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { + editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); + } + parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags); + + if (!editPersonDescriptor.isAnyFieldEdited()) { + throw new ParseException(EditCommand.MESSAGE_NOT_EDITED); + } + + return new EditCommand(index, editPersonDescriptor); + } + + /** + * Parses {@code Collection tags} into a {@code Set} if {@code tags} is non-empty. + * If {@code tags} contain only one element which is an empty string, it will be parsed into a + * {@code Set} containing zero tags. + */ + private Optional> parseTagsForEdit(Collection tags) throws ParseException { + assert tags != null; + + if (tags.isEmpty()) { + return Optional.empty(); + } + Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; + return Optional.of(ParserUtil.parseTags(tagSet)); + } + +} diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java new file mode 100644 index 00000000000..b814f90be9b --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java @@ -0,0 +1,34 @@ +package seedu.address.logic.parser.appointmentparser; + +import seedu.address.logic.commands.FindCommand; +import seedu.address.logic.parser.Parser; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.NameContainsKeywordsPredicate; + +import java.util.Arrays; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +/** + * Parses input arguments and creates a new FindCommand object + */ +public class FindCommandParser implements Parser { + + /** + * Parses the given {@code String} of arguments in the context of the FindCommand + * and returns a FindCommand object for execution. + * @throws ParseException if the user input does not conform the expected format + */ + public FindCommand parse(String args) throws ParseException { + String trimmedArgs = args.trim(); + if (trimmedArgs.isEmpty()) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE)); + } + + String[] nameKeywords = trimmedArgs.split("\\s+"); + + return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords))); + } + +} diff --git a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java b/src/test/java/seedu/address/logic/parser/TutorTrackerParserTest.java similarity index 97% rename from src/test/java/seedu/address/logic/parser/AddressBookParserTest.java rename to src/test/java/seedu/address/logic/parser/TutorTrackerParserTest.java index d9659205b57..b781983b4cb 100644 --- a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java +++ b/src/test/java/seedu/address/logic/parser/TutorTrackerParserTest.java @@ -29,9 +29,9 @@ import seedu.address.testutil.PersonBuilder; import seedu.address.testutil.PersonUtil; -public class AddressBookParserTest { +public class TutorTrackerParserTest { - private final AddressBookParser parser = new AddressBookParser(); + private final TutorTrackerParser parser = new TutorTrackerParser(); @Test public void parseCommand_add() throws Exception { From f0a1cf79ecd24237be808276dcbcde55331f1fa4 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 10 Mar 2021 19:28:12 +0800 Subject: [PATCH 075/762] Edit imports to fix styling issues --- .../AddAppointmentCommandParser.java | 49 ++++++------- .../DeleteAppointmentCommandParser.java | 15 ++-- .../EditAppointmentCommandParser.java | 72 +++++-------------- .../FindAppointmentCommandParser.java | 20 +++--- 4 files changed, 57 insertions(+), 99 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java index 3b8bfa035e8..179aea47d96 100644 --- a/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/AddAppointmentCommandParser.java @@ -1,52 +1,46 @@ -package seedu.address.logic.parser; +package seedu.address.logic.parser.appointmentparser; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_FROM; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_TO; -import java.util.Set; import java.util.stream.Stream; import seedu.address.logic.commands.AddCommand; +import seedu.address.logic.commands.appointmentcommands.AddAppointmentCommand; +import seedu.address.logic.parser.ArgumentMultimap; +import seedu.address.logic.parser.ArgumentTokenizer; +import seedu.address.logic.parser.Parser; +import seedu.address.logic.parser.Prefix; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; /** * Parses input arguments and creates a new AddCommand object */ -public class AddCommandParser implements Parser { +public class AddAppointmentCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the AddCommand - * and returns an AddCommand object for execution. + * Parses the given {@code String} of arguments in the context of the AddAppointmentCommand + * and returns an AddAppointmentCommand object for execution. * @throws ParseException if the user input does not conform the expected format */ - public AddCommand parse(String args) throws ParseException { + public AddAppointmentCommand parse(String args) throws ParseException { ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + ArgumentTokenizer.tokenize(args, PREFIX_EMAIL, PREFIX_SUBJECT_NAME, PREFIX_DATE, PREFIX_TIME_FROM, + PREFIX_TIME_TO, PREFIX_LOCATION); - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) + if (!arePrefixesPresent(argMultimap, PREFIX_EMAIL, PREFIX_SUBJECT_NAME, PREFIX_DATE, + PREFIX_TIME_FROM, PREFIX_TIME_TO) || !argMultimap.getPreamble().isEmpty()) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } - Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); - Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - - Person person = new Person(name, phone, email, address, tagList); - - return new AddCommand(person); + /* To be implemented */ + return null; } /** @@ -56,5 +50,4 @@ public AddCommand parse(String args) throws ParseException { private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); } - } diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java index 522b93081cc..73e96e011e5 100644 --- a/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/DeleteAppointmentCommandParser.java @@ -1,25 +1,28 @@ -package seedu.address.logic.parser; +package seedu.address.logic.parser.appointmentparser; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.DeleteCommand; +import seedu.address.logic.commands.appointmentcommands.DeleteAppointmentCommand; +import seedu.address.logic.parser.Parser; +import seedu.address.logic.parser.ParserUtil; import seedu.address.logic.parser.exceptions.ParseException; /** * Parses input arguments and creates a new DeleteCommand object */ -public class DeleteCommandParser implements Parser { +public class DeleteAppointmentCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the DeleteCommand - * and returns a DeleteCommand object for execution. + * Parses the given {@code String} of arguments in the context of the DeleteAppointmentCommand + * and returns a DeleteAppointmentCommand object for execution. * @throws ParseException if the user input does not conform the expected format */ - public DeleteCommand parse(String args) throws ParseException { + public DeleteAppointmentCommand parse(String args) throws ParseException { try { Index index = ParserUtil.parseIndex(args); - return new DeleteCommand(index); + return new DeleteAppointmentCommand(index); } catch (ParseException pe) { throw new ParseException( String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe); diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java index 845644b7dea..dabcf695caa 100644 --- a/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/EditAppointmentCommandParser.java @@ -1,82 +1,46 @@ -package seedu.address.logic.parser; +package seedu.address.logic.parser.appointmentparser; import static java.util.Objects.requireNonNull; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; -import java.util.Set; +import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION; +import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_FROM; +import static seedu.address.logic.parser.CliSyntax.PREFIX_TIME_TO; import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; +import seedu.address.logic.commands.appointmentcommands.EditAppointmentCommand; +import seedu.address.logic.parser.ArgumentMultimap; +import seedu.address.logic.parser.ArgumentTokenizer; +import seedu.address.logic.parser.Parser; +import seedu.address.logic.parser.ParserUtil; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.tag.Tag; /** * Parses input arguments and creates a new EditCommand object */ -public class EditCommandParser implements Parser { +public class EditAppointmentCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the EditCommand - * and returns an EditCommand object for execution. + * Parses the given {@code String} of arguments in the context of the EditAppointmentCommand + * and returns an EditAppointmentCommand object for execution. * @throws ParseException if the user input does not conform the expected format */ - public EditCommand parse(String args) throws ParseException { + public EditAppointmentCommand parse(String args) throws ParseException { requireNonNull(args); ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + ArgumentTokenizer.tokenize(args, PREFIX_EMAIL, PREFIX_SUBJECT_NAME, PREFIX_DATE, + PREFIX_TIME_FROM, PREFIX_TIME_TO, PREFIX_LOCATION); Index index; - try { index = ParserUtil.parseIndex(argMultimap.getPreamble()); } catch (ParseException pe) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe); } - EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor(); - if (argMultimap.getValue(PREFIX_NAME).isPresent()) { - editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get())); - } - if (argMultimap.getValue(PREFIX_PHONE).isPresent()) { - editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())); - } - if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) { - editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); - } - if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { - editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); - } - parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags); - - if (!editPersonDescriptor.isAnyFieldEdited()) { - throw new ParseException(EditCommand.MESSAGE_NOT_EDITED); - } - - return new EditCommand(index, editPersonDescriptor); - } - - /** - * Parses {@code Collection tags} into a {@code Set} if {@code tags} is non-empty. - * If {@code tags} contain only one element which is an empty string, it will be parsed into a - * {@code Set} containing zero tags. - */ - private Optional> parseTagsForEdit(Collection tags) throws ParseException { - assert tags != null; - - if (tags.isEmpty()) { - return Optional.empty(); - } - Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; - return Optional.of(ParserUtil.parseTags(tagSet)); + return new EditAppointmentCommand(index); } - } diff --git a/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java b/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java index b814f90be9b..c29650b3d1c 100644 --- a/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/appointmentparser/FindAppointmentCommandParser.java @@ -1,25 +1,23 @@ package seedu.address.logic.parser.appointmentparser; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + import seedu.address.logic.commands.FindCommand; +import seedu.address.logic.commands.appointmentcommands.FindAppointmentCommand; import seedu.address.logic.parser.Parser; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -import java.util.Arrays; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; /** * Parses input arguments and creates a new FindCommand object */ -public class FindCommandParser implements Parser { +public class FindAppointmentCommandParser implements Parser { /** - * Parses the given {@code String} of arguments in the context of the FindCommand - * and returns a FindCommand object for execution. + * Parses the given {@code String} of arguments in the context of the FindAppointmentCommand + * and returns a FindAppointmentCommand object for execution. * @throws ParseException if the user input does not conform the expected format */ - public FindCommand parse(String args) throws ParseException { + public FindAppointmentCommand parse(String args) throws ParseException { String trimmedArgs = args.trim(); if (trimmedArgs.isEmpty()) { throw new ParseException( @@ -27,8 +25,8 @@ public FindCommand parse(String args) throws ParseException { } String[] nameKeywords = trimmedArgs.split("\\s+"); - - return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords))); + /* To be implemented */ + return null; } } From 5c4e46c975d870b09deccd884aaf52a7242d5aa9 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 10 Mar 2021 19:33:39 +0800 Subject: [PATCH 076/762] Fix command word attributes --- src/main/java/seedu/address/logic/commands/AddCommand.java | 2 +- src/main/java/seedu/address/logic/commands/DeleteCommand.java | 2 +- src/main/java/seedu/address/logic/commands/EditCommand.java | 2 +- src/main/java/seedu/address/logic/commands/FindCommand.java | 2 +- src/main/java/seedu/address/logic/commands/ListCommand.java | 2 +- .../commands/appointmentcommands/ListAppointmentCommand.java | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index 71656d7c5c8..db20c5cf103 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -16,7 +16,7 @@ */ public class AddCommand extends Command { - public static final String COMMAND_WORD = "add"; + public static final String COMMAND_WORD = "add_tutor"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. " + "Parameters: " diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/address/logic/commands/DeleteCommand.java index 02fd256acba..58f136b9178 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteCommand.java @@ -15,7 +15,7 @@ */ public class DeleteCommand extends Command { - public static final String COMMAND_WORD = "delete"; + public static final String COMMAND_WORD = "delete_tutor"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Deletes the person identified by the index number used in the displayed person list.\n" diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index 7e36114902f..136e55bdbaa 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -31,7 +31,7 @@ */ public class EditCommand extends Command { - public static final String COMMAND_WORD = "edit"; + public static final String COMMAND_WORD = "edit_tutor"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the person identified " + "by the index number used in the displayed person list. " diff --git a/src/main/java/seedu/address/logic/commands/FindCommand.java b/src/main/java/seedu/address/logic/commands/FindCommand.java index d6b19b0a0de..5e8fb283daf 100644 --- a/src/main/java/seedu/address/logic/commands/FindCommand.java +++ b/src/main/java/seedu/address/logic/commands/FindCommand.java @@ -12,7 +12,7 @@ */ public class FindCommand extends Command { - public static final String COMMAND_WORD = "find"; + public static final String COMMAND_WORD = "find_tutor"; public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all persons whose names contain any of " + "the specified keywords (case-insensitive) and displays them as a list with index numbers.\n" diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index 84be6ad2596..9fdc0bb5d35 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -10,7 +10,7 @@ */ public class ListCommand extends Command { - public static final String COMMAND_WORD = "list"; + public static final String COMMAND_WORD = "list_tutors"; public static final String MESSAGE_SUCCESS = "Listed all persons"; diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java index 1bd9daccf6f..2dc18debfc3 100644 --- a/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/ListAppointmentCommand.java @@ -11,7 +11,7 @@ */ public class ListAppointmentCommand extends Command { - public static final String COMMAND_WORD = "list_appointment"; + public static final String COMMAND_WORD = "list_appointments"; public static final String MESSAGE_SUCCESS = "Listed all appointments"; From 4cd8e048faad5e958d8d6f3bb4da11b11de5e002 Mon Sep 17 00:00:00 2001 From: Vinleon Date: Wed, 10 Mar 2021 19:36:48 +0800 Subject: [PATCH 077/762] Fix the test case command --- src/test/java/seedu/address/logic/LogicManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/logic/LogicManagerTest.java b/src/test/java/seedu/address/logic/LogicManagerTest.java index ad923ac249a..e4ba2e70dc3 100644 --- a/src/test/java/seedu/address/logic/LogicManagerTest.java +++ b/src/test/java/seedu/address/logic/LogicManagerTest.java @@ -58,7 +58,7 @@ public void execute_invalidCommandFormat_throwsParseException() { @Test public void execute_commandExecutionError_throwsCommandException() { - String deleteCommand = "delete 9"; + String deleteCommand = "delete_tutor 9"; assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); } From ab21fe16ff488694a27fbed4a2372bf42c136e44 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 20:28:41 +0800 Subject: [PATCH 078/762] Modify TutorList.java --- .../seedu/address/model/person/TutorList.java | 42 +++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/main/java/seedu/address/model/person/TutorList.java b/src/main/java/seedu/address/model/person/TutorList.java index 8935a9d829a..056a619bdf9 100644 --- a/src/main/java/seedu/address/model/person/TutorList.java +++ b/src/main/java/seedu/address/model/person/TutorList.java @@ -5,6 +5,7 @@ import seedu.address.model.person.exceptions.DuplicatePersonException; import seedu.address.model.person.exceptions.PersonNotFoundException; import seedu.address.model.tag.Tag; +import seedu.address.model.person.Person; import java.util.Iterator; import java.util.List; @@ -13,45 +14,42 @@ import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -// To implement: -// Class: Tutor, DuplicateTagException, TagNotFoundException -// Method: isSameTutor -public class TutorList implements Iterable { +public class TutorList implements Iterable { - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = FXCollections.unmodifiableObservableList(internalList); /** * Returns true if the list contains an equivalent tutor as the given argument. */ - public boolean contains(Tutor toCheck) { + public boolean contains(Person toCheck) { requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSameTutor); + return internalList.stream().anyMatch(toCheck::isSamePerson); } /** * Adds tutor to the list. * The tutor must not already exist in the list. */ - public void add(Tutor toAdd) { + public void add(Person toAdd) { requireNonNull(toAdd); if (contains(toAdd)) { - throw new DuplicateTutorException(); + throw new DuplicatePersonException(); } internalList.add(toAdd); } - public void setTutor(Tutor target, Tutor editedTutor) { + public void setTutor(Person target, Person editedTutor) { requireAllNonNull(target, editedTutor); int index = internalList.indexOf(target); if (index == -1) { - throw new TutorNotFoundException(); + throw new PersonNotFoundException(); } - if (!target.isSameTutor(editedTutor) && contains(editedTutor)) { - throw new DuplicateTutorException(); + if (!target.isSamePerson(editedTutor) && contains(editedTutor)) { + throw new DuplicatePersonException(); } internalList.set(index, editedTutor); @@ -61,10 +59,10 @@ public void setTutor(Tutor target, Tutor editedTutor) { * Removes the equivalent tutor from the list. * The tutor must exist in the list. */ - public void remove(Tutor toRemove) { + public void remove(Person toRemove) { requireNonNull(toRemove); if (!internalList.remove(toRemove)) { - throw new TutorNotFoundException(); + throw new PersonNotFoundException(); } } @@ -77,10 +75,10 @@ public void setTutors(seedu.address.model.person.TutorList replacement) { * Replaces the contents of this list with {@code tutors}. * {@code tutors} must not contain duplicate tutors. */ - public void setTutors(List tutors) { + public void setTutors(List tutors) { requireAllNonNull(tutors); if (!tutorsAreUnique(tutors)) { - throw new DuplicateTutorException(); + throw new DuplicatePersonException(); } internalList.setAll(tutors); @@ -89,12 +87,12 @@ public void setTutors(List tutors) { /** * Returns the backing list as an unmodifiable {@code ObservableList}. */ - public ObservableList asUnmodifiableObservableList() { + public ObservableList asUnmodifiableObservableList() { return internalUnmodifiableList; } @Override - public Iterator iterator() { + public Iterator iterator() { return internalList.iterator(); } @@ -113,10 +111,10 @@ public int hashCode() { /** * Returns true if {@code tutors} contains only unique tutors. */ - private boolean tutorsAreUnique(List tutors) { + private boolean tutorsAreUnique(List tutors) { for (int i = 0; i < tutors.size() - 1; i++) { for (int j = i + 1; j < tutors.size(); j++) { - if (tutors.get(i).isSameTutor(tutors.get(j))) { + if (tutors.get(i).isSamePerson(tutors.get(j))) { return false; } } From d2c58bcd252854b93826956848770849afc29afc Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 21:08:30 +0800 Subject: [PATCH 079/762] Add TagListTest.java --- .../seedu/address/model/tag/TagListTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/test/java/seedu/address/model/tag/TagListTest.java diff --git a/src/test/java/seedu/address/model/tag/TagListTest.java b/src/test/java/seedu/address/model/tag/TagListTest.java new file mode 100644 index 00000000000..32336388182 --- /dev/null +++ b/src/test/java/seedu/address/model/tag/TagListTest.java @@ -0,0 +1,20 @@ +package seedu.address.model.tag; + +import org.junit.jupiter.api.Test; +import seedu.address.model.tag.TagList; + +import static seedu.address.testutil.Assert.assertThrows; + +public class TagListTest { + private final TagList tagList = new TagList(); + + @Test + public void contains_nullTag_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> tagList.contains(null)); + } + + @Test + public void add_nullTag_throwsNullPointerException() { + assertThrows(NullPointerException.class, () -> tagList.add(null)); + } +} From 2c1be28499d9c3f75401fe60ea069b516b43f18d Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 21:14:48 +0800 Subject: [PATCH 080/762] Add TagList.java and add method: isSameTag() --- .../java/seedu/address/model/tag/Tag.java | 12 ++ .../java/seedu/address/model/tag/TagList.java | 137 ++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 src/main/java/seedu/address/model/tag/TagList.java diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java index 44fb4670f85..29c2153f0cb 100644 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ b/src/main/java/seedu/address/model/tag/Tag.java @@ -55,4 +55,16 @@ public String toString() { public boolean filter(String s) { return tagName.contains(s); } + + public String getTagName() { + return this.tagName; + } + + boolean isSameTag(Tag otherTag) { + if (otherTag == this) { + return true; + } + return otherTag != null + && otherTag.getTagName().equals(getTagName()); + } } diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java new file mode 100644 index 00000000000..314c0829659 --- /dev/null +++ b/src/main/java/seedu/address/model/tag/TagList.java @@ -0,0 +1,137 @@ +package seedu.address.model.tag; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.Email; +import seedu.address.model.person.Name; +import seedu.address.model.person.Person; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; +import seedu.address.model.tag.exceptions.DuplicateTagException; +import seedu.address.model.tag.exceptions.TagNotFoundException; + + +// To implement: +// Class: Tag, Name, Email, Gender, DuplicateTagException, TagNotFoundException +// Method: isSameTagType, isSameTag +public class TagList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent tag as the given argument. + */ + public boolean contains(Tag toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameTag); + } + + /** + * Adds a tag to the list. + * The tag must not already exist in the list. + */ + public void add(Tag toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateTagException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the tag {@code target} in the list with {@code editedTag}. + * {@code target} must exist in the list. + * The tag identity of {@code editedTag} must not be the same as another existing tag in the list. + */ + public void setTag(Tag target, Tag editedTag) { + requireAllNonNull(target, editedTag); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new TagNotFoundException(); + } + + if (!target.isSameTag(editedTag) && contains(editedTag)) { + throw new DuplicateTagException(); + } + + internalList.set(index, editedTag); + } + + /** + * Removes the equivalent tag from the list. + * The tag must exist in the list. + */ + public void remove(Tag toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new TagNotFoundException(); + } + } + + public void setTags(seedu.address.model.tag.TagList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code tags}. + * {@code tags} must not contain duplicate tags. + */ + public void setTags(List tags) { + requireAllNonNull(tags); + if (!tagsAreUnique(tags)) { + throw new DuplicateTagException(); + } + + internalList.setAll(tags); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof TagList // instanceof handles nulls + && internalList.equals(((TagList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code tags} contains only unique tags. + */ + private boolean tagsAreUnique(List tags) { + for (int i = 0; i < tags.size() - 1; i++) { + for (int j = i + 1; j < tags.size(); j++) { + if (tags.get(i).isSameTag(tags.get(j))) { + return false; + } + } + } + return true; + } +} + + From 2b3fb40b0d62ba6c74e2eec4157a30eb38f2eec3 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 21:16:05 +0800 Subject: [PATCH 081/762] Delete TagList.java --- .../java/seedu/address/model/tag/TagList.java | 134 ------------------ .../seedu/address/model/tag/TagListTest.java | 20 --- 2 files changed, 154 deletions(-) delete mode 100644 src/main/java/seedu/address/model/tag/TagList.java delete mode 100644 src/test/java/seedu/address/model/tag/TagListTest.java diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java deleted file mode 100644 index 5d38f2e0c8f..00000000000 --- a/src/main/java/seedu/address/model/tag/TagList.java +++ /dev/null @@ -1,134 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Iterator; -import java.util.List; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; - - -// To implement: -// Class: Tag, Name, Email, Gender, DuplicateTagException, TagNotFoundException -// Method: isSameTagType, isSameTag -public class TagList implements Iterable { - - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = - FXCollections.unmodifiableObservableList(internalList); - - /** - * Returns true if the list contains an equivalent tag as the given argument. - */ - public boolean contains(Tag toCheck) { - requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSameTag); - } - - /** - * Adds a tag to the list. - * The tag must not already exist in the list. - */ - public void add(Tag toAdd) { - requireNonNull(toAdd); - if (contains(toAdd)) { - throw new DuplicateTagException(); - } - internalList.add(toAdd); - } - - /** - * Replaces the tag {@code target} in the list with {@code editedTag}. - * {@code target} must exist in the list. - * The tag identity of {@code editedTag} must not be the same as another existing tag in the list. - */ - public void setTag(Tag target, Tag editedTag) { - requireAllNonNull(target, editedTag); - - int index = internalList.indexOf(target); - if (index == -1) { - throw new TagNotFoundException(); - } - - if (!target.isSameTag(editedTag) && contains(editedTag)) { - throw new DuplicateTagException(); - } - - internalList.set(index, editedTag); - } - - /** - * Removes the equivalent tag from the list. - * The tag must exist in the list. - */ - public void remove(Tag toRemove) { - requireNonNull(toRemove); - if (!internalList.remove(toRemove)) { - throw new TagNotFoundException(); - } - } - - public void setTags(seedu.address.model.tag.TagList replacement) { - requireNonNull(replacement); - internalList.setAll(replacement.internalList); - } - - /** - * Replaces the contents of this list with {@code tags}. - * {@code tags} must not contain duplicate tags. - */ - public void setTags(List tags) { - requireAllNonNull(tags); - if (!tagsAreUnique(tags)) { - throw new DuplicateTagException(); - } - - internalList.setAll(tags); - } - - /** - * Returns the backing list as an unmodifiable {@code ObservableList}. - */ - public ObservableList asUnmodifiableObservableList() { - return internalUnmodifiableList; - } - - @Override - public Iterator iterator() { - return internalList.iterator(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof TagList // instanceof handles nulls - && internalList.equals(((TagList) other).internalList)); - } - - @Override - public int hashCode() { - return internalList.hashCode(); - } - - /** - * Returns true if {@code tags} contains only unique tags. - */ - private boolean tagsAreUnique(List tags) { - for (int i = 0; i < tags.size() - 1; i++) { - for (int j = i + 1; j < tags.size(); j++) { - if (tags.get(i).isSameTag(tags.get(j))) { - return false; - } - } - } - return true; - } -} - diff --git a/src/test/java/seedu/address/model/tag/TagListTest.java b/src/test/java/seedu/address/model/tag/TagListTest.java deleted file mode 100644 index 32336388182..00000000000 --- a/src/test/java/seedu/address/model/tag/TagListTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package seedu.address.model.tag; - -import org.junit.jupiter.api.Test; -import seedu.address.model.tag.TagList; - -import static seedu.address.testutil.Assert.assertThrows; - -public class TagListTest { - private final TagList tagList = new TagList(); - - @Test - public void contains_nullTag_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> tagList.contains(null)); - } - - @Test - public void add_nullTag_throwsNullPointerException() { - assertThrows(NullPointerException.class, () -> tagList.add(null)); - } -} From 1dd743dcaa55b7efdec0fedf73ba873b28d92eca Mon Sep 17 00:00:00 2001 From: yutingzou Date: Wed, 10 Mar 2021 21:21:29 +0800 Subject: [PATCH 082/762] Remove unused import statements --- src/main/java/seedu/address/model/tag/TagList.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java index 314c0829659..7c784f0d8bb 100644 --- a/src/main/java/seedu/address/model/tag/TagList.java +++ b/src/main/java/seedu/address/model/tag/TagList.java @@ -8,18 +8,10 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; import seedu.address.model.tag.exceptions.DuplicateTagException; import seedu.address.model.tag.exceptions.TagNotFoundException; -// To implement: -// Class: Tag, Name, Email, Gender, DuplicateTagException, TagNotFoundException -// Method: isSameTagType, isSameTag public class TagList implements Iterable { private final ObservableList internalList = FXCollections.observableArrayList(); From 8d88481403db31d9a1d87bbd89d9cb39aaa543d2 Mon Sep 17 00:00:00 2001 From: Kingsley Kuan Date: Thu, 11 Mar 2021 18:52:31 +0800 Subject: [PATCH 083/762] Add Gender attribute to Person TODO: - Add Command - Edit Command - Storage - Tests --- .../address/logic/commands/EditCommand.java | 6 +++++- .../logic/parser/AddCommandParser.java | 5 ++++- .../seedu/address/model/person/Person.java | 18 +++++++++++++----- .../address/model/util/SampleDataUtil.java | 19 +++++++++++++------ .../address/storage/JsonAdaptedPerson.java | 5 ++++- .../seedu/address/testutil/PersonBuilder.java | 15 ++++++++++++++- 6 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java index f2999002a65..62b3e33d02f 100644 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ b/src/main/java/seedu/address/logic/commands/EditCommand.java @@ -22,6 +22,7 @@ import seedu.address.model.Model; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; @@ -101,10 +102,13 @@ private static Person createEditedPerson(Person personToEdit, EditPersonDescript Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); + // TODO: Edit Gender + Gender updatedGender = new Gender("Todo"); // TODO: Edit Tutor Subjects List updatedTutorSubjects = new ArrayList<>(); - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTutorSubjects, updatedTags); + return new Person(updatedName, updatedGender, updatedPhone, updatedEmail, updatedAddress, + updatedTutorSubjects, updatedTags); } @Override diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 0e2a38378a6..b38a330210b 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -16,6 +16,7 @@ import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; @@ -47,10 +48,12 @@ public AddCommand parse(String args) throws ParseException { Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); + //TODO: Parse Gender + Gender gender = new Gender("Todo"); // TODO: Parse Tutor Subjects List tutorSubjects = new ArrayList<>(); - Person person = new Person(name, phone, email, address, tutorSubjects, tagList); + Person person = new Person(name, gender, phone, email, address, tutorSubjects, tagList); return new AddCommand(person); } diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java index d07562489e8..7f75098848e 100644 --- a/src/main/java/seedu/address/model/person/Person.java +++ b/src/main/java/seedu/address/model/person/Person.java @@ -13,13 +13,14 @@ import seedu.address.model.tag.Tag; /** - * Represents a Person in the address book. + * Represents a Person in Tutor Tracker. * Guarantees: details are present and not null, field values are validated, immutable. */ public class Person { // Identity fields private final Name name; + private final Gender gender; private final Phone phone; private final Email email; @@ -31,10 +32,11 @@ public class Person { /** * Every field must be present and not null. */ - public Person(Name name, Phone phone, Email email, Address address, + public Person(Name name, Gender gender, Phone phone, Email email, Address address, List tutorSubjects, Set tags) { - requireAllNonNull(name, phone, email, address, tags); + requireAllNonNull(name, gender, phone, email, address, tutorSubjects, tags); this.name = name; + this.gender = gender; this.phone = phone; this.email = email; this.address = address; @@ -46,6 +48,10 @@ public Name getName() { return name; } + public Gender getGender() { + return gender; + } + public Phone getPhone() { return phone; } @@ -103,6 +109,7 @@ public boolean equals(Object other) { Person otherPerson = (Person) other; return otherPerson.getName().equals(getName()) + && otherPerson.getGender().equals(getGender()) && otherPerson.getPhone().equals(getPhone()) && otherPerson.getEmail().equals(getEmail()) && otherPerson.getAddress().equals(getAddress()) @@ -113,13 +120,15 @@ public boolean equals(Object other) { @Override public int hashCode() { // use this method for custom fields hashing instead of implementing your own - return Objects.hash(name, phone, email, address, tutorSubjects, tags); + return Objects.hash(name, gender, phone, email, address, tutorSubjects, tags); } @Override public String toString() { final StringBuilder builder = new StringBuilder(); builder.append(getName()) + .append("; Gender: ") + .append(getGender()) .append("; Phone: ") .append(getPhone()) .append("; Email: ") @@ -140,5 +149,4 @@ public String toString() { } return builder.toString(); } - } diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index a18df1f4b18..12ffd3b87b6 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -10,6 +10,7 @@ import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; @@ -22,27 +23,33 @@ public class SampleDataUtil { public static Person[] getSamplePersons() { return new Person[] { - new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), + new Person(new Name("Alex Yeoh"), new Gender("Male"), new Phone("87438807"), + new Email("alexyeoh@example.com"), new Address("Blk 30 Geylang Street 29, #06-40"), getTutorSubjectList(), getTagSet("mathematics")), - new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), + new Person(new Name("Bernice Yu"), new Gender("Female"), new Phone("99272758"), + new Email("berniceyu@example.com"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), getTutorSubjectList(), getTagSet("english")), - new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), + new Person(new Name("Charlotte Oliveiro"), new Gender("Female"), new Phone("93210283"), + new Email("charlotte@example.com"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), getTutorSubjectList(), getTagSet("english", "literature")), - new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), + new Person(new Name("David Li"), new Gender("Male"), new Phone("91031282"), + new Email("lidavid@example.com"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), getTutorSubjectList(), getTagSet("science")), - new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), + new Person(new Name("Irfan Ibrahim"), new Gender("Male"), new Phone("92492021"), + new Email("irfan@example.com"), new Address("Blk 47 Tampines Street 20, #17-35"), getTutorSubjectList(), getTagSet("geography")), - new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), + new Person(new Name("Roy Balakrishnan"), new Gender("Male"), new Phone("92624417"), + new Email("royb@example.com"), new Address("Blk 45 Aljunied Street 85, #11-31"), getTutorSubjectList(), getTagSet("history")) diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index 176c804710a..c5d2582ac5b 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -12,6 +12,7 @@ import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; @@ -105,10 +106,12 @@ public Person toModelType() throws IllegalValueException { final Set modelTags = new HashSet<>(personTags); + //TODO: Adapt storage for Gender + final Gender modelGender = new Gender("Todo"); // TODO: Adapt storage for Tutor Subjects final List modelTutorSubjects = new ArrayList<>(); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTutorSubjects, modelTags); + return new Person(modelName, modelGender, modelPhone, modelEmail, modelAddress, modelTutorSubjects, modelTags); } } diff --git a/src/test/java/seedu/address/testutil/PersonBuilder.java b/src/test/java/seedu/address/testutil/PersonBuilder.java index b57cd76f612..23674d3838c 100644 --- a/src/test/java/seedu/address/testutil/PersonBuilder.java +++ b/src/test/java/seedu/address/testutil/PersonBuilder.java @@ -7,6 +7,7 @@ import seedu.address.model.person.Address; import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; @@ -20,11 +21,13 @@ public class PersonBuilder { public static final String DEFAULT_NAME = "Amy Bee"; + public static final String DEFAULT_GENDER = "Female"; public static final String DEFAULT_PHONE = "85355255"; public static final String DEFAULT_EMAIL = "amy@gmail.com"; public static final String DEFAULT_ADDRESS = "123, Jurong West Ave 6, #08-111"; private Name name; + private Gender gender; private Phone phone; private Email email; private Address address; @@ -36,6 +39,7 @@ public class PersonBuilder { */ public PersonBuilder() { name = new Name(DEFAULT_NAME); + gender = new Gender(DEFAULT_GENDER); phone = new Phone(DEFAULT_PHONE); email = new Email(DEFAULT_EMAIL); address = new Address(DEFAULT_ADDRESS); @@ -48,6 +52,7 @@ public PersonBuilder() { */ public PersonBuilder(Person personToCopy) { name = personToCopy.getName(); + gender = personToCopy.getGender(); phone = personToCopy.getPhone(); email = personToCopy.getEmail(); address = personToCopy.getAddress(); @@ -63,6 +68,14 @@ public PersonBuilder withName(String name) { return this; } + /** + * Sets the {@code Gender} of the {@code Person} that we are building. + */ + public PersonBuilder withGender(String gender) { + this.gender = new Gender(gender); + return this; + } + /** * Parses the {@code tags} into a {@code Set} and set it to the {@code Person} that we are building. */ @@ -105,7 +118,7 @@ public PersonBuilder withSubject() { } public Person build() { - return new Person(name, phone, email, address, tutorSubjects, tags); + return new Person(name, gender, phone, email, address, tutorSubjects, tags); } } From 6599f66675836d219700b67099ed4266913388c8 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Thu, 11 Mar 2021 21:13:15 +0800 Subject: [PATCH 084/762] Cleaned up appointment class. --- .../java/seedu/address/model/Appointment.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/main/java/seedu/address/model/Appointment.java diff --git a/src/main/java/seedu/address/model/Appointment.java b/src/main/java/seedu/address/model/Appointment.java new file mode 100644 index 00000000000..f7dec5a6fa2 --- /dev/null +++ b/src/main/java/seedu/address/model/Appointment.java @@ -0,0 +1,85 @@ +package seedu.address.model; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import seedu.address.model.person.Address; +import seedu.address.model.person.Email; +import seedu.address.model.subject.SubjectName; + +/** + * Appointment class to store appointment objects to represent tutee and tutor relations + */ +public class Appointment { + + private final Email email; + private final SubjectName subject; + private final LocalDateTime dateTime; + private final Address location; + + private final String formatter = "dd MM yyyy"; + + + /** + * Primary constructor for appointment class. + * @param email Email of tutor. + * @param subject Subject tutor is teaching to tutee. + * @param dateTime LocalDateTime + * @param location Location of teaching venue + */ + Appointment(Email email, SubjectName subject, LocalDateTime dateTime, + Address location) { + this.email = email; + this.subject = subject; + this.dateTime = dateTime; + this.location = location; + } + + /** + * Helper method to parse date time. + * @param date Date in string + * @param time 24 hr time in integer + * @return LocalDateTime for given date and time + */ + private LocalDateTime parseDateTime(String date, int time) { + String[] tempArray = date.split("\\s+"); + List dateList = + Arrays.stream(tempArray).map(Integer::parseInt).collect(Collectors.toList()); + int hour = time / 100; + int min = time % 100; + + LocalDateTime dateAndTime = LocalDateTime.of(dateList.get(1), dateList.get(2), + dateList.get(3), hour, min); + return dateAndTime; + } + + @Override + public String toString() { + return String.format("Appointment with Tutor (%s) at %s", this.email.value, + LocalDateTime.parse(this.dateTime.toString(), + DateTimeFormatter.ofPattern(formatter))); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + Appointment that = (Appointment) o; + return Objects.equals(email, that.email) && Objects.equals(subject, that.subject) + && Objects.equals(dateTime, that.dateTime) && Objects.equals(location, that.location); + } + + @Override + public int hashCode() { + return Objects.hash(email, subject, dateTime, location); + } + +} From 38c7ea146c52cac4698c210e25ca8f9871fb6f20 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Thu, 11 Mar 2021 22:04:08 +0800 Subject: [PATCH 085/762] Add SubjectList.java and exceptions; remove TagList.java --- .../address/model/subject/SubjectList.java | 126 +++++++++++++++++ .../exceptions/DuplicateSubjectException.java | 7 + .../exceptions/SubjectNotFoundException.java | 7 + .../java/seedu/address/model/tag/TagList.java | 129 ------------------ 4 files changed, 140 insertions(+), 129 deletions(-) create mode 100644 src/main/java/seedu/address/model/subject/SubjectList.java create mode 100644 src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java create mode 100644 src/main/java/seedu/address/model/subject/exceptions/SubjectNotFoundException.java delete mode 100644 src/main/java/seedu/address/model/tag/TagList.java diff --git a/src/main/java/seedu/address/model/subject/SubjectList.java b/src/main/java/seedu/address/model/subject/SubjectList.java new file mode 100644 index 00000000000..84673eab67d --- /dev/null +++ b/src/main/java/seedu/address/model/subject/SubjectList.java @@ -0,0 +1,126 @@ +package seedu.address.model.subject; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.subject.exceptions.DuplicateSubjectException; +import seedu.address.model.subject.exceptions.SubjectNotFoundException; + +import java.util.Iterator; +import java.util.List; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +public class SubjectList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent subject as the given argument. + */ + public boolean contains(TutorSubject toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::equals); + } + + /** + * Adds a subject to the list. + * The subject must not already exist in the list. + */ + public void add(TutorSubject toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateSubjectException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the subject {@code target} in the list with {@code editedSubject}. + * {@code target} must exist in the list. + * The subject identity of {@code editedSubject} must not be the same as another existing subject in the list. + */ + public void setSubject(TutorSubject target, TutorSubject editedSubject) { + requireAllNonNull(target, editedSubject); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new SubjectNotFoundException(); + } + + if (!target.equals(editedSubject) && contains(editedSubject)) { + throw new DuplicateSubjectException(); + } + + internalList.set(index, editedSubject); + } + + /** + * Removes the equivalent subject from the list. + * The subject must exist in the list. + */ + public void remove(TutorSubject toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new SubjectNotFoundException(); + } + } + + public void setSubjects(seedu.address.model.subject.SubjectList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code subjects}. + * {@code subjects} must not contain duplicate subjects. + */ + public void setSubjects(List subjects) { + requireAllNonNull(subjects); + if (!subjectsAreUnique(subjects)) { + throw new DuplicateSubjectException(); + } + + internalList.setAll(subjects); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SubjectList // instanceof handles nulls + && internalList.equals(((SubjectList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code subjects} contains only unique subjects. + */ + private boolean subjectsAreUnique(List subjects) { + for (int i = 0; i < subjects.size() - 1; i++) { + for (int j = i + 1; j < subjects.size(); j++) { + if (subjects.get(i).equals(subjects.get(j))) { + return false; + } + } + } + return true; + } +} diff --git a/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java b/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java new file mode 100644 index 00000000000..1ee74b8334b --- /dev/null +++ b/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java @@ -0,0 +1,7 @@ +package seedu.address.model.subject.exceptions; + +public class DuplicateSubjectException extends RuntimeException { + public DuplicateSubjectException() { + super("Operation would result in duplicate subjects"); + } +} \ No newline at end of file diff --git a/src/main/java/seedu/address/model/subject/exceptions/SubjectNotFoundException.java b/src/main/java/seedu/address/model/subject/exceptions/SubjectNotFoundException.java new file mode 100644 index 00000000000..80a9a8bcb69 --- /dev/null +++ b/src/main/java/seedu/address/model/subject/exceptions/SubjectNotFoundException.java @@ -0,0 +1,7 @@ +package seedu.address.model.subject.exceptions; + +/** + * Signals that the operation is unable to find the specified subject. + */ +public class SubjectNotFoundException extends RuntimeException { +} diff --git a/src/main/java/seedu/address/model/tag/TagList.java b/src/main/java/seedu/address/model/tag/TagList.java deleted file mode 100644 index 7c784f0d8bb..00000000000 --- a/src/main/java/seedu/address/model/tag/TagList.java +++ /dev/null @@ -1,129 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Iterator; -import java.util.List; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.tag.exceptions.DuplicateTagException; -import seedu.address.model.tag.exceptions.TagNotFoundException; - - -public class TagList implements Iterable { - - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = - FXCollections.unmodifiableObservableList(internalList); - - /** - * Returns true if the list contains an equivalent tag as the given argument. - */ - public boolean contains(Tag toCheck) { - requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSameTag); - } - - /** - * Adds a tag to the list. - * The tag must not already exist in the list. - */ - public void add(Tag toAdd) { - requireNonNull(toAdd); - if (contains(toAdd)) { - throw new DuplicateTagException(); - } - internalList.add(toAdd); - } - - /** - * Replaces the tag {@code target} in the list with {@code editedTag}. - * {@code target} must exist in the list. - * The tag identity of {@code editedTag} must not be the same as another existing tag in the list. - */ - public void setTag(Tag target, Tag editedTag) { - requireAllNonNull(target, editedTag); - - int index = internalList.indexOf(target); - if (index == -1) { - throw new TagNotFoundException(); - } - - if (!target.isSameTag(editedTag) && contains(editedTag)) { - throw new DuplicateTagException(); - } - - internalList.set(index, editedTag); - } - - /** - * Removes the equivalent tag from the list. - * The tag must exist in the list. - */ - public void remove(Tag toRemove) { - requireNonNull(toRemove); - if (!internalList.remove(toRemove)) { - throw new TagNotFoundException(); - } - } - - public void setTags(seedu.address.model.tag.TagList replacement) { - requireNonNull(replacement); - internalList.setAll(replacement.internalList); - } - - /** - * Replaces the contents of this list with {@code tags}. - * {@code tags} must not contain duplicate tags. - */ - public void setTags(List tags) { - requireAllNonNull(tags); - if (!tagsAreUnique(tags)) { - throw new DuplicateTagException(); - } - - internalList.setAll(tags); - } - - /** - * Returns the backing list as an unmodifiable {@code ObservableList}. - */ - public ObservableList asUnmodifiableObservableList() { - return internalUnmodifiableList; - } - - @Override - public Iterator iterator() { - return internalList.iterator(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof TagList // instanceof handles nulls - && internalList.equals(((TagList) other).internalList)); - } - - @Override - public int hashCode() { - return internalList.hashCode(); - } - - /** - * Returns true if {@code tags} contains only unique tags. - */ - private boolean tagsAreUnique(List tags) { - for (int i = 0; i < tags.size() - 1; i++) { - for (int j = i + 1; j < tags.size(); j++) { - if (tags.get(i).isSameTag(tags.get(j))) { - return false; - } - } - } - return true; - } -} - - From 6c48c1f3091a0f667c59bdfc2a2fcd397f9d41da Mon Sep 17 00:00:00 2001 From: yutingzou Date: Thu, 11 Mar 2021 22:08:52 +0800 Subject: [PATCH 086/762] Fix checkstyle errors --- .../model/subject/exceptions/DuplicateSubjectException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java b/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java index 1ee74b8334b..3f2a3ea7927 100644 --- a/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java +++ b/src/main/java/seedu/address/model/subject/exceptions/DuplicateSubjectException.java @@ -4,4 +4,4 @@ public class DuplicateSubjectException extends RuntimeException { public DuplicateSubjectException() { super("Operation would result in duplicate subjects"); } -} \ No newline at end of file +} From 5d801e04db8dbb8a905030b187df5a7953e4d006 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Thu, 11 Mar 2021 22:16:15 +0800 Subject: [PATCH 087/762] Fix checkstyle error --- .../seedu/address/model/subject/SubjectList.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/model/subject/SubjectList.java b/src/main/java/seedu/address/model/subject/SubjectList.java index 84673eab67d..274363d98a3 100644 --- a/src/main/java/seedu/address/model/subject/SubjectList.java +++ b/src/main/java/seedu/address/model/subject/SubjectList.java @@ -1,15 +1,15 @@ package seedu.address.model.subject; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.subject.exceptions.DuplicateSubjectException; -import seedu.address.model.subject.exceptions.SubjectNotFoundException; +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; import java.util.Iterator; import java.util.List; -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.subject.exceptions.DuplicateSubjectException; +import seedu.address.model.subject.exceptions.SubjectNotFoundException; public class SubjectList implements Iterable { From 7631cc2c5441ae3539b5243e2c63bafe2284324d Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sat, 13 Mar 2021 23:33:03 +0800 Subject: [PATCH 088/762] Create appointment package and refactor Appointment.java and AppointmentList.java to appointment package --- .../model/{ => appointment}/Appointment.java | 4 +- .../model/appointment/AppointmentList.java | 125 ++++++++++++++++++ 2 files changed, 126 insertions(+), 3 deletions(-) rename src/main/java/seedu/address/model/{ => appointment}/Appointment.java (97%) create mode 100644 src/main/java/seedu/address/model/appointment/AppointmentList.java diff --git a/src/main/java/seedu/address/model/Appointment.java b/src/main/java/seedu/address/model/appointment/Appointment.java similarity index 97% rename from src/main/java/seedu/address/model/Appointment.java rename to src/main/java/seedu/address/model/appointment/Appointment.java index 4ab7192092c..a422e543a25 100644 --- a/src/main/java/seedu/address/model/Appointment.java +++ b/src/main/java/seedu/address/model/appointment/Appointment.java @@ -1,15 +1,13 @@ -package seedu.address.model; +package seedu.address.model.appointment; import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -import java.util.Iterator; import java.util.List; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; -import java.util.List; import java.util.Objects; import java.util.stream.Collectors; diff --git a/src/main/java/seedu/address/model/appointment/AppointmentList.java b/src/main/java/seedu/address/model/appointment/AppointmentList.java new file mode 100644 index 00000000000..a7d7ee7b0f5 --- /dev/null +++ b/src/main/java/seedu/address/model/appointment/AppointmentList.java @@ -0,0 +1,125 @@ +package seedu.address.model.appointment; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.appointment.Appointment; +import seedu.address.model.appointment.exceptions.AppointmentNotFoundException; +import seedu.address.model.appointment.exceptions.DuplicateAppointmentException; + +import java.util.Iterator; +import java.util.List; + +// To implement +// Method: isSameAppoinment + +public class AppointmentList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + private final ObservableList internalUnmodifiableList = + FXCollections.unmodifiableObservableList(internalList); + + /** + * Returns true if the list contains an equivalent appointment as the given argument. + */ + public boolean contains(Appointment toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameAppointment); + } + + /** + * Adds an appointment to the list. + * The appointment must not already exist in the list. + */ + public void add(Appointment toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateAppointmentException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the appointment {@code target} in the list with {@code editedAppointment}. + * {@code target} must exist in the list. + * The appointment identity of {@code editedAppointment} must not be the same as another existing appointment in the list. + */ + public void setAppointment(Appointment target, Appointment editedAppointment) { + requireAllNonNull(target, editedAppointment); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new AppointmentNotFoundException(); + } + + if (!target.isSameAppointment(editedAppointment) && contains(editedAppointment)) { + throw new DuplicateAppointmentException(); + } + + internalList.set(index, editedAppointment); + } + + /** + * Removes the equivalent appointment from the list. + * The appointment must exist in the list. + */ + public void remove(Appointment toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new AppointmentNotFoundException(); + } + } + + public void setAppointments(Appointment replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code appointments}. + * {@code appointments} must not contain duplicate appointments. + */ + public void setAppointments(List appointments) { + requireAllNonNull(appointments); + if (!appointmentsAreUnique(appointments)) { + throw new DuplicateAppointmentException(); + } + + internalList.setAll(appointments); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return internalUnmodifiableList; + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof seedu.address.model.appointment.AppointmentList // instanceof handles nulls + && internalList.equals(((seedu.address.model.appointment.AppointmentList) other).internalList)); + return internalList.hashCode(); + } + + /** + * Returns true if {@code appointments} contains only unique appointments. + */ + private boolean appointmentsAreUnique(List appointments) { + for (int i = 0; i < appointments.size() - 1; i++) { + for (int j = i + 1; j < appointments.size(); j++) { + if (appointments.get(i).isSameAppointment(appointments.get(j))) { + return false; + } + } + } + return true; + } +} From f96005cf3033df7d51ebf7a9f7f7d59bea66e453 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sat, 13 Mar 2021 23:33:42 +0800 Subject: [PATCH 089/762] Add appointment exceptions --- .../exceptions/AppointmentNotFoundException.java | 7 +++++++ .../exceptions/DuplicateAppointmentException.java | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java create mode 100644 src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java diff --git a/src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java b/src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java new file mode 100644 index 00000000000..6738a6419b3 --- /dev/null +++ b/src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java @@ -0,0 +1,7 @@ +package seedu.address.model.appointment.exceptions; + +/** + * Signals that the operation is unable to find the specified appointment. + */ +public class AppointmentNotFoundException extends RuntimeException { +} diff --git a/src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java b/src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java new file mode 100644 index 00000000000..7f8c9fd96c7 --- /dev/null +++ b/src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java @@ -0,0 +1,7 @@ +package seedu.address.model.appointment.exceptions; + +public class DuplicateAppointmentException extends RuntimeException { + public DuplicateAppointmentException() { + super("Operation would result in duplicate appointments"); + } +} From 440064de084d961049e55f0ebbd82c859ffdedb0 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sat, 13 Mar 2021 23:44:41 +0800 Subject: [PATCH 090/762] Fix checkstyle error --- .../model/appointment/Appointment.java | 7 +---- .../model/appointment/AppointmentList.java | 26 ++++++++++--------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/main/java/seedu/address/model/appointment/Appointment.java b/src/main/java/seedu/address/model/appointment/Appointment.java index a422e543a25..f29643bb296 100644 --- a/src/main/java/seedu/address/model/appointment/Appointment.java +++ b/src/main/java/seedu/address/model/appointment/Appointment.java @@ -1,13 +1,9 @@ package seedu.address.model.appointment; -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.List; - import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Arrays; +import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -85,5 +81,4 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(email, subject, dateTime, location); } - } diff --git a/src/main/java/seedu/address/model/appointment/AppointmentList.java b/src/main/java/seedu/address/model/appointment/AppointmentList.java index a7d7ee7b0f5..79d54fedd0c 100644 --- a/src/main/java/seedu/address/model/appointment/AppointmentList.java +++ b/src/main/java/seedu/address/model/appointment/AppointmentList.java @@ -2,17 +2,14 @@ import static java.util.Objects.requireNonNull; import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.appointment.Appointment; -import seedu.address.model.appointment.exceptions.AppointmentNotFoundException; -import seedu.address.model.appointment.exceptions.DuplicateAppointmentException; import java.util.Iterator; import java.util.List; -// To implement -// Method: isSameAppoinment +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.appointment.exceptions.AppointmentNotFoundException; +import seedu.address.model.appointment.exceptions.DuplicateAppointmentException; public class AppointmentList implements Iterable { @@ -25,7 +22,7 @@ public class AppointmentList implements Iterable { */ public boolean contains(Appointment toCheck) { requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSameAppointment); + return internalList.stream().anyMatch(toCheck::equals); } /** @@ -43,7 +40,8 @@ public void add(Appointment toAdd) { /** * Replaces the appointment {@code target} in the list with {@code editedAppointment}. * {@code target} must exist in the list. - * The appointment identity of {@code editedAppointment} must not be the same as another existing appointment in the list. + * The appointment identity of {@code editedAppointment} must not be + * the same as another existing appointment in the list. */ public void setAppointment(Appointment target, Appointment editedAppointment) { requireAllNonNull(target, editedAppointment); @@ -53,7 +51,7 @@ public void setAppointment(Appointment target, Appointment editedAppointment) { throw new AppointmentNotFoundException(); } - if (!target.isSameAppointment(editedAppointment) && contains(editedAppointment)) { + if (!target.equals(editedAppointment) && contains(editedAppointment)) { throw new DuplicateAppointmentException(); } @@ -71,7 +69,7 @@ public void remove(Appointment toRemove) { } } - public void setAppointments(Appointment replacement) { + public void setAppointments(AppointmentList replacement) { requireNonNull(replacement); internalList.setAll(replacement.internalList); } @@ -106,6 +104,10 @@ public boolean equals(Object other) { return other == this // short circuit if same object || (other instanceof seedu.address.model.appointment.AppointmentList // instanceof handles nulls && internalList.equals(((seedu.address.model.appointment.AppointmentList) other).internalList)); + } + + @Override + public int hashCode() { return internalList.hashCode(); } @@ -115,7 +117,7 @@ public boolean equals(Object other) { private boolean appointmentsAreUnique(List appointments) { for (int i = 0; i < appointments.size() - 1; i++) { for (int j = i + 1; j < appointments.size(); j++) { - if (appointments.get(i).isSameAppointment(appointments.get(j))) { + if (appointments.get(i).equals(appointments.get(j))) { return false; } } From 9cce365f6f85ed70a68c903cff6e4ff581e3a5ca Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sat, 13 Mar 2021 23:46:04 +0800 Subject: [PATCH 091/762] Delete TutorList class --- .../seedu/address/model/person/TutorList.java | 124 ------------------ 1 file changed, 124 deletions(-) delete mode 100644 src/main/java/seedu/address/model/person/TutorList.java diff --git a/src/main/java/seedu/address/model/person/TutorList.java b/src/main/java/seedu/address/model/person/TutorList.java deleted file mode 100644 index 056a619bdf9..00000000000 --- a/src/main/java/seedu/address/model/person/TutorList.java +++ /dev/null @@ -1,124 +0,0 @@ -package seedu.address.model.person; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; -import seedu.address.model.tag.Tag; -import seedu.address.model.person.Person; - -import java.util.Iterator; -import java.util.List; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - - -public class TutorList implements Iterable { - - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = - FXCollections.unmodifiableObservableList(internalList); - - /** - * Returns true if the list contains an equivalent tutor as the given argument. - */ - public boolean contains(Person toCheck) { - requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSamePerson); - } - - /** - * Adds tutor to the list. - * The tutor must not already exist in the list. - */ - public void add(Person toAdd) { - requireNonNull(toAdd); - if (contains(toAdd)) { - throw new DuplicatePersonException(); - } - internalList.add(toAdd); - } - - public void setTutor(Person target, Person editedTutor) { - requireAllNonNull(target, editedTutor); - - int index = internalList.indexOf(target); - if (index == -1) { - throw new PersonNotFoundException(); - } - - if (!target.isSamePerson(editedTutor) && contains(editedTutor)) { - throw new DuplicatePersonException(); - } - - internalList.set(index, editedTutor); - } - - /** - * Removes the equivalent tutor from the list. - * The tutor must exist in the list. - */ - public void remove(Person toRemove) { - requireNonNull(toRemove); - if (!internalList.remove(toRemove)) { - throw new PersonNotFoundException(); - } - } - - public void setTutors(seedu.address.model.person.TutorList replacement) { - requireNonNull(replacement); - internalList.setAll(replacement.internalList); - } - - /** - * Replaces the contents of this list with {@code tutors}. - * {@code tutors} must not contain duplicate tutors. - */ - public void setTutors(List tutors) { - requireAllNonNull(tutors); - if (!tutorsAreUnique(tutors)) { - throw new DuplicatePersonException(); - } - - internalList.setAll(tutors); - } - - /** - * Returns the backing list as an unmodifiable {@code ObservableList}. - */ - public ObservableList asUnmodifiableObservableList() { - return internalUnmodifiableList; - } - - @Override - public Iterator iterator() { - return internalList.iterator(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof TutorList // instanceof handles nulls - && internalList.equals(((TutorList) other).internalList)); - } - - @Override - public int hashCode() { - return internalList.hashCode(); - } - - /** - * Returns true if {@code tutors} contains only unique tutors. - */ - private boolean tutorsAreUnique(List tutors) { - for (int i = 0; i < tutors.size() - 1; i++) { - for (int j = i + 1; j < tutors.size(); j++) { - if (tutors.get(i).isSamePerson(tutors.get(j))) { - return false; - } - } - } - return true; - } -} From 91bbd3388bc3ddaef3a09583f3066a764827584d Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 14:15:49 +0800 Subject: [PATCH 092/762] Update success message --- src/main/java/seedu/address/logic/commands/ListCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index 9fdc0bb5d35..c497a7dff59 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -12,7 +12,7 @@ public class ListCommand extends Command { public static final String COMMAND_WORD = "list_tutors"; - public static final String MESSAGE_SUCCESS = "Listed all persons"; + public static final String MESSAGE_SUCCESS = "Listed all tutors"; @Override From 6fa5920e99f10ce9c097d723691bc3f2601676a0 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 14:52:14 +0800 Subject: [PATCH 093/762] Add ViewCommand --- .../address/logic/commands/ViewCommand.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/ViewCommand.java diff --git a/src/main/java/seedu/address/logic/commands/ViewCommand.java b/src/main/java/seedu/address/logic/commands/ViewCommand.java new file mode 100644 index 00000000000..13accd8a5b4 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/ViewCommand.java @@ -0,0 +1,48 @@ +package seedu.address.logic.commands; + +import seedu.address.commons.core.Messages; +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.person.Person; + +import java.util.List; + +import static java.util.Objects.requireNonNull; + +public class ViewCommand extends Command { + public static final String COMMAND_WORD = "view_tutor"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + + ": Views the tutor identified by the index number used in the displayed tutor list.\n" + + "Parameters: INDEX (must be a positive integer)\n" + + "Example: " + COMMAND_WORD + " 1"; + + public static final String MESSAGE_VIEW_TUTOR_SUCCESS = "View Tutor: %1$s"; + + private final Index targetIndex; + + public ViewCommand(Index targetIndex) { + this.targetIndex = targetIndex; + } + + @Override + public CommandResult execute(Model model) throws CommandException { + requireNonNull(model); + List updatedTutorList = model.getFilteredPersonList(); + + if (targetIndex.getZeroBased() >= updatedTutorList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + Person tutorToView = updatedTutorList.get(targetIndex.getZeroBased()); + return new CommandResult(String.format(MESSAGE_VIEW_TUTOR_SUCCESS, tutorToView)); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof ViewCommand // instanceof handles nulls + && targetIndex.equals(((ViewCommand) other).targetIndex)); // state check + } +} From 84d88c97ebf210cdc96c2a3aa9d13bf33c167385 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 14:55:45 +0800 Subject: [PATCH 094/762] Add ViewCommandParser --- .../logic/parser/ViewCommandParser.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/seedu/address/logic/parser/ViewCommandParser.java diff --git a/src/main/java/seedu/address/logic/parser/ViewCommandParser.java b/src/main/java/seedu/address/logic/parser/ViewCommandParser.java new file mode 100644 index 00000000000..2ce20758372 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/ViewCommandParser.java @@ -0,0 +1,21 @@ +package seedu.address.logic.parser; + +import seedu.address.commons.core.index.Index; +import seedu.address.logic.commands.ViewCommand; +import seedu.address.logic.parser.exceptions.ParseException; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + +public class ViewCommandParser implements Parser { + + public ViewCommand parse(String args) throws ParseException { + try { + Index index = ParserUtil.parseIndex(args); + return new ViewCommand(index); + } catch (ParseException pe) { + throw new ParseException( + String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE), pe); + } + } + +} From ce55652ab75bbf88b7c9b4427524683519351737 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 15:49:16 +0800 Subject: [PATCH 095/762] Update TutorTrackerParser --- .../address/logic/parser/TutorTrackerParser.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java index 29450b7fc75..cfb87a7d6c9 100644 --- a/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java +++ b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java @@ -6,15 +6,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.ClearCommand; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.commands.HelpCommand; -import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.*; import seedu.address.logic.commands.appointmentcommands.AddAppointmentCommand; import seedu.address.logic.commands.appointmentcommands.DeleteAppointmentCommand; import seedu.address.logic.commands.appointmentcommands.EditAppointmentCommand; @@ -71,6 +63,9 @@ public Command parseCommand(String userInput) throws ParseException { case ListCommand.COMMAND_WORD: return new ListCommand(); + case ViewCommand.COMMAND_WORD: + return new ViewCommandParser().parse(arguments); + case ExitCommand.COMMAND_WORD: return new ExitCommand(); From a81528e0eb64387b041ce7e23d61ad882a105d0e Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 16:30:27 +0800 Subject: [PATCH 096/762] Update ViewCommand to feedback tutor details --- .../java/seedu/address/logic/commands/ViewCommand.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/ViewCommand.java b/src/main/java/seedu/address/logic/commands/ViewCommand.java index 13accd8a5b4..9a7a71f528a 100644 --- a/src/main/java/seedu/address/logic/commands/ViewCommand.java +++ b/src/main/java/seedu/address/logic/commands/ViewCommand.java @@ -1,10 +1,12 @@ package seedu.address.logic.commands; +import javafx.collections.ObservableList; import seedu.address.commons.core.Messages; import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.person.Person; +import seedu.address.model.person.UniquePersonList; import java.util.List; @@ -36,7 +38,10 @@ public CommandResult execute(Model model) throws CommandException { } Person tutorToView = updatedTutorList.get(targetIndex.getZeroBased()); - return new CommandResult(String.format(MESSAGE_VIEW_TUTOR_SUCCESS, tutorToView)); + UniquePersonList tutorsList = new UniquePersonList(); + tutorsList.add(tutorToView); + ObservableList tutorsToView = tutorsList.asUnmodifiableObservableList(); + return new CommandResult(String.format(MESSAGE_VIEW_TUTOR_SUCCESS, tutorToView.getName()), tutorsToView); } @Override From f39fc8245401203b6d74b0a6aa714fc47eb702f0 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 16:31:33 +0800 Subject: [PATCH 097/762] Update CommandResult and MainWindow to show the details of tutor requested to view in GUI --- .../address/logic/commands/CommandResult.java | 20 ++++++++++++++++--- .../address/logic/commands/ExitCommand.java | 2 +- .../address/logic/commands/HelpCommand.java | 2 +- .../java/seedu/address/ui/MainWindow.java | 5 +++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 92f900b7916..20db975fbf8 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -1,5 +1,9 @@ package seedu.address.logic.commands; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; +import seedu.address.model.person.UniquePersonList; + import static java.util.Objects.requireNonNull; import java.util.Objects; @@ -11,6 +15,8 @@ public class CommandResult { private final String feedbackToUser; + private final ObservableList tutorsToView; + /** Help information should be shown to the user. */ private final boolean showHelp; @@ -20,8 +26,9 @@ public class CommandResult { /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + public CommandResult(String feedbackToUser, ObservableList tutorToView, boolean showHelp, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); + this.tutorsToView = tutorToView; this.showHelp = showHelp; this.exit = exit; } @@ -31,13 +38,19 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); + this(feedbackToUser, null, false, false); + } + + public CommandResult(String feedbackToUser, ObservableList tutorsToView) { + this(feedbackToUser, tutorsToView, false, false); } public String getFeedbackToUser() { return feedbackToUser; } + public ObservableList getTutorsToView() { return tutorsToView;} + public boolean isShowHelp() { return showHelp; } @@ -59,13 +72,14 @@ public boolean equals(Object other) { CommandResult otherCommandResult = (CommandResult) other; return feedbackToUser.equals(otherCommandResult.feedbackToUser) + && tutorsToView.equals(otherCommandResult.tutorsToView) && showHelp == otherCommandResult.showHelp && exit == otherCommandResult.exit; } @Override public int hashCode() { - return Objects.hash(feedbackToUser, showHelp, exit); + return Objects.hash(feedbackToUser, tutorsToView, showHelp, exit); } } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index 3dd85a8ba90..af84851aece 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index bf824f91bd0..3c09dfbe761 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, null, true, false); } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 9420fb410b9..bc6208a7506 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -226,6 +226,11 @@ private CommandResult executeCommand(String commandText) throws CommandException logger.info("Result: " + commandResult.getFeedbackToUser()); resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser()); + if (commandResult.getTutorsToView() != null) { + tutorListPanel = new TutorListPanel(commandResult.getTutorsToView()); + personListPanelPlaceholder.getChildren().add(tutorListPanel.getRoot()); + } + if (commandResult.isShowHelp()) { handleHelp(); } From e81073a064eb0a425255e4bc83c0f2a76cc5e29c Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:09:26 +0800 Subject: [PATCH 098/762] Update ListCommand --- src/main/java/seedu/address/logic/commands/ListCommand.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index c497a7dff59..dcdbc3b707d 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -3,7 +3,10 @@ import static java.util.Objects.requireNonNull; import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import javafx.collections.ObservableList; import seedu.address.model.Model; +import seedu.address.model.person.Person; +import seedu.address.model.person.UniquePersonList; /** * Lists all persons in the address book to the user. @@ -19,6 +22,7 @@ public class ListCommand extends Command { public CommandResult execute(Model model) { requireNonNull(model); model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - return new CommandResult(MESSAGE_SUCCESS); + ObservableList tutorsToView = model.getFilteredPersonList(); + return new CommandResult(MESSAGE_SUCCESS, tutorsToView); } } From bd8e28bbd9aa7942803491d4b56cdb12b7a54e09 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:10:12 +0800 Subject: [PATCH 099/762] Update MainWindow to show all tutors --- .../address/logic/commands/CommandResult.java | 18 ++++++++++++++++-- .../address/logic/commands/ExitCommand.java | 2 +- .../address/logic/commands/HelpCommand.java | 2 +- src/main/java/seedu/address/ui/MainWindow.java | 5 +++++ 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 92f900b7916..f189947c982 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -1,5 +1,8 @@ package seedu.address.logic.commands; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; + import static java.util.Objects.requireNonNull; import java.util.Objects; @@ -11,6 +14,8 @@ public class CommandResult { private final String feedbackToUser; + private final ObservableList tutorsToView; + /** Help information should be shown to the user. */ private final boolean showHelp; @@ -20,8 +25,9 @@ public class CommandResult { /** * Constructs a {@code CommandResult} with the specified fields. */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + public CommandResult(String feedbackToUser, ObservableList tutorsToView, boolean showHelp, boolean exit) { this.feedbackToUser = requireNonNull(feedbackToUser); + this.tutorsToView = tutorsToView; this.showHelp = showHelp; this.exit = exit; } @@ -31,13 +37,21 @@ public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { * and other fields set to their default value. */ public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); + this(feedbackToUser, null, false, false); + } + + public CommandResult(String feedbackToUser, ObservableList tutorsToView) { + this(feedbackToUser, tutorsToView, false, false); } public String getFeedbackToUser() { return feedbackToUser; } + public ObservableList getTutorsToView() { + return tutorsToView; + } + public boolean isShowHelp() { return showHelp; } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index 3dd85a8ba90..af84851aece 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index bf824f91bd0..3c09dfbe761 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, null, true, false); } } diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 9420fb410b9..bc6208a7506 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -226,6 +226,11 @@ private CommandResult executeCommand(String commandText) throws CommandException logger.info("Result: " + commandResult.getFeedbackToUser()); resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser()); + if (commandResult.getTutorsToView() != null) { + tutorListPanel = new TutorListPanel(commandResult.getTutorsToView()); + personListPanelPlaceholder.getChildren().add(tutorListPanel.getRoot()); + } + if (commandResult.isShowHelp()) { handleHelp(); } From 8c03b617d7790ba60acd11f6fc905750af2e3be2 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:11:30 +0800 Subject: [PATCH 100/762] Fix checkstyle error --- .../java/seedu/address/logic/commands/CommandResult.java | 6 +++--- src/main/java/seedu/address/logic/commands/ListCommand.java | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index f189947c982..88e71ac98ca 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -1,12 +1,12 @@ package seedu.address.logic.commands; -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; - import static java.util.Objects.requireNonNull; import java.util.Objects; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; + /** * Represents the result of a command execution. */ diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index dcdbc3b707d..8a626558273 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -6,7 +6,6 @@ import javafx.collections.ObservableList; import seedu.address.model.Model; import seedu.address.model.person.Person; -import seedu.address.model.person.UniquePersonList; /** * Lists all persons in the address book to the user. From 6b1aaea764bb29379b894eabbd590123cfb004eb Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:15:43 +0800 Subject: [PATCH 101/762] Update CommandResult --- src/main/java/seedu/address/logic/commands/CommandResult.java | 4 ++++ src/main/java/seedu/address/logic/commands/ExitCommand.java | 2 +- src/main/java/seedu/address/logic/commands/HelpCommand.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 88e71ac98ca..0e3eaa3d511 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -44,6 +44,10 @@ public CommandResult(String feedbackToUser, ObservableList tutorsToView) this(feedbackToUser, tutorsToView, false, false); } + public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + this(feedbackToUser, null, showHelp, exit); + } + public String getFeedbackToUser() { return feedbackToUser; } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index af84851aece..a78c1d5d0a0 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index 3c09dfbe761..bf824f91bd0 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, null, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, true, false); } } From f31472762029eb96701ef129d52de11c758b0422 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:16:28 +0800 Subject: [PATCH 102/762] Fix checkstyle error --- src/main/java/seedu/address/logic/commands/ExitCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index a78c1d5d0a0..3dd85a8ba90 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT,false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); } } From fb5afd465856a8d6690c74a5a720db320483a8ef Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:34:05 +0800 Subject: [PATCH 103/762] Add use case: view tutor --- docs/DeveloperGuide.md | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ce2d06f8cd1..d362d6601fd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -262,8 +262,8 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **MSS** -1. User requests to view appointment -2. TutorTracker shows a list of appointments +1. User requests to view an appointment by index. +2. TutorTracker displays the appointment. Use case ends. @@ -280,13 +280,36 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **MSS** -1. User requests to list appointments -2. TutorTracker shows a list of appointments -3. User requests to delete a specific appointment in the list +1. User requests to list appointments. +2. TutorTracker shows a list of appointments. +3. User requests to delete a specific appointment in the list. 4. TutorTracker deletes that specific appointment.
    +**Use Case UC0007: View tutor** + +**MSS** + +1. User requests to list the list of all tutors. +2. TutorTracker shows a list of tutors. +3. User requests to view a tutor by index. +4. TutorTracker displays the tutor. + +**Extensions** + +* 1a. The list is empty. + * 1a1. TutorTracker shows a message that there are no appointments. + + Use case ends. + +* 3a. The index is invalid. + * 3a1. TutorTrackers shows an error message. + + User case ends. + +
    + *{More to be added}* ### Non-Functional Requirements From 3fdc1dd33a975bbce5ec4d33300ab36c5f2fe4b7 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:36:43 +0800 Subject: [PATCH 104/762] Update use case: view tuition appointment --- docs/DeveloperGuide.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index d362d6601fd..076524babe1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -262,7 +262,9 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **MSS** -1. User requests to view an appointment by index. +1. User requests to view the list of tuition appointments. +2. TutorTracker displays the list of tuition appointments to the user. +3. User requests to view an appointment by index. 2. TutorTracker displays the appointment. Use case ends. @@ -273,6 +275,12 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** * 1a1. TutorTracker shows a message that there are no appointments. Use case ends. + +* 3a. The index is invalid. + * 3a1. TutorTrackers shows an error message. + + User case ends. +
    @@ -299,7 +307,7 @@ _For all use cases below, the **System** is the `TutorTracker` and the **Actor** **Extensions** * 1a. The list is empty. - * 1a1. TutorTracker shows a message that there are no appointments. + * 1a1. TutorTracker shows a message that there are no tutors. Use case ends. From 783bb8c3b1dd24846ac3780bda693e5b13c6d16c Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:42:13 +0800 Subject: [PATCH 105/762] Update CommandResult --- src/main/java/seedu/address/logic/commands/CommandResult.java | 4 ++++ src/main/java/seedu/address/logic/commands/ExitCommand.java | 2 +- src/main/java/seedu/address/logic/commands/HelpCommand.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 20db975fbf8..45a53422e72 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -45,6 +45,10 @@ public CommandResult(String feedbackToUser, ObservableList tutorsToView) this(feedbackToUser, tutorsToView, false, false); } + public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { + this(feedbackToUser, null, showHelp, exit); + } + public String getFeedbackToUser() { return feedbackToUser; } diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java index af84851aece..3dd85a8ba90 100644 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ b/src/main/java/seedu/address/logic/commands/ExitCommand.java @@ -13,7 +13,7 @@ public class ExitCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, null, false, true); + return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); } } diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java index 3c09dfbe761..bf824f91bd0 100644 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ b/src/main/java/seedu/address/logic/commands/HelpCommand.java @@ -16,6 +16,6 @@ public class HelpCommand extends Command { @Override public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, null, true, false); + return new CommandResult(SHOWING_HELP_MESSAGE, true, false); } } From e5059b8c6052add1d47c91a1dcfb31ed1b68dfad Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 17:51:22 +0800 Subject: [PATCH 106/762] Fix checkstyle error --- .../seedu/address/logic/commands/CommandResult.java | 11 ++++++----- .../seedu/address/logic/commands/ListCommand.java | 2 +- .../seedu/address/logic/commands/ViewCommand.java | 11 +++++++---- .../address/logic/parser/TutorTrackerParser.java | 11 ++++++++++- .../address/logic/parser/ViewCommandParser.java | 12 ++++++++++-- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java index 45a53422e72..4f3a984bf8a 100644 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ b/src/main/java/seedu/address/logic/commands/CommandResult.java @@ -1,13 +1,12 @@ package seedu.address.logic.commands; -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; -import seedu.address.model.person.UniquePersonList; - import static java.util.Objects.requireNonNull; import java.util.Objects; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; + /** * Represents the result of a command execution. */ @@ -53,7 +52,9 @@ public String getFeedbackToUser() { return feedbackToUser; } - public ObservableList getTutorsToView() { return tutorsToView;} + public ObservableList getTutorsToView() { + return tutorsToView; + } public boolean isShowHelp() { return showHelp; diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index 9fdc0bb5d35..5d7a4f0d4c2 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -6,7 +6,7 @@ import seedu.address.model.Model; /** - * Lists all persons in the address book to the user. + * Lists all tutors in the address book to the user. */ public class ListCommand extends Command { diff --git a/src/main/java/seedu/address/logic/commands/ViewCommand.java b/src/main/java/seedu/address/logic/commands/ViewCommand.java index 9a7a71f528a..f29b2206a1a 100644 --- a/src/main/java/seedu/address/logic/commands/ViewCommand.java +++ b/src/main/java/seedu/address/logic/commands/ViewCommand.java @@ -1,5 +1,9 @@ package seedu.address.logic.commands; +import static java.util.Objects.requireNonNull; + +import java.util.List; + import javafx.collections.ObservableList; import seedu.address.commons.core.Messages; import seedu.address.commons.core.index.Index; @@ -8,10 +12,9 @@ import seedu.address.model.person.Person; import seedu.address.model.person.UniquePersonList; -import java.util.List; - -import static java.util.Objects.requireNonNull; - +/** + * View a tutor by its index in tutor list. + */ public class ViewCommand extends Command { public static final String COMMAND_WORD = "view_tutor"; diff --git a/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java index cfb87a7d6c9..cafb8a88182 100644 --- a/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java +++ b/src/main/java/seedu/address/logic/parser/TutorTrackerParser.java @@ -6,7 +6,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import seedu.address.logic.commands.*; +import seedu.address.logic.commands.AddCommand; +import seedu.address.logic.commands.ClearCommand; +import seedu.address.logic.commands.Command; +import seedu.address.logic.commands.DeleteCommand; +import seedu.address.logic.commands.EditCommand; +import seedu.address.logic.commands.ExitCommand; +import seedu.address.logic.commands.FindCommand; +import seedu.address.logic.commands.HelpCommand; +import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.ViewCommand; import seedu.address.logic.commands.appointmentcommands.AddAppointmentCommand; import seedu.address.logic.commands.appointmentcommands.DeleteAppointmentCommand; import seedu.address.logic.commands.appointmentcommands.EditAppointmentCommand; diff --git a/src/main/java/seedu/address/logic/parser/ViewCommandParser.java b/src/main/java/seedu/address/logic/parser/ViewCommandParser.java index 2ce20758372..981ec5498fc 100644 --- a/src/main/java/seedu/address/logic/parser/ViewCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/ViewCommandParser.java @@ -1,13 +1,21 @@ package seedu.address.logic.parser; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; + import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.ViewCommand; import seedu.address.logic.parser.exceptions.ParseException; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - +/** + * Parses input arguments and creates a new ViewCommand object + */ public class ViewCommandParser implements Parser { + /** + * Parses the given {@code String} of arguments in the context of the ViewCommand + * and returns a ViewCommand object for execution. + * @throws ParseException if the user input does not conform the expected format. + */ public ViewCommand parse(String args) throws ParseException { try { Index index = ParserUtil.parseIndex(args); From 2c57492ad57a35568a0cbbb89b16a08233efc3aa Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Sun, 14 Mar 2021 18:49:11 +0800 Subject: [PATCH 107/762] Added Delete Appointment Command --- .../DeleteAppointmentCommand.java | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java index 8c6c82294e4..06c0ef5c976 100644 --- a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java @@ -6,6 +6,7 @@ import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Appointment; import seedu.address.model.Model; /** @@ -21,18 +22,53 @@ public class DeleteAppointmentCommand extends Command { + "Example: " + COMMAND_WORD + " 1"; public static final String MESSAGE_DELETE_APPOINTMENT_SUCCESS = "Deleted Appointment: %1$s"; + public static final String MESSAGE_DELETE_APPOINTMENT_FAILURE = "Appointment does" + + " not exists in appointment list."; private final Index targetIndex; + private final Appointment toDelete; public DeleteAppointmentCommand(Index targetIndex) { + requireNonNull(targetIndex); this.targetIndex = targetIndex; + this.toDelete = null; } - /* To be implemented */ + public DeleteAppointmentCommand(Appointment toDelete) { + requireNonNull(toDelete); + this.targetIndex = null; + this.toDelete = toDelete; + } + + /** + * Deletes appointment if exists in appointment list (Offer two ways to delete by + * index or by appointment) + * @param model {@code Model} which the command should operate on. + * @return Command Result indicating success or failure of delete operation + * @throws CommandException + */ @Override public CommandResult execute(Model model) throws CommandException { requireNonNull(model); - return null; + + // Delete by appointment + if (targetIndex == null) { + if (model.hasAppointment(toDelete)) { + model.removeAppointment(toDelete); + return new CommandResult(MESSAGE_DELETE_APPOINTMENT_SUCCESS); + } else { + return new CommandResult(MESSAGE_DELETE_APPOINTMENT_FAILURE); + } + } else { + // Delete by index + try { + model.removeAppointmentIndex(targetIndex.getZeroBased()); + return new CommandResult(MESSAGE_DELETE_APPOINTMENT_SUCCESS); + } catch (IndexOutOfBoundsException e) { + return new CommandResult(MESSAGE_DELETE_APPOINTMENT_FAILURE); + } + } + } @Override From 12c05750ce3852dbf992c68fc197ae9c4fbaf7af Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Sun, 14 Mar 2021 18:50:55 +0800 Subject: [PATCH 108/762] Added add-appointment command. Fixed import line syntax errors --- .../AddAppointmentCommand.java | 31 +++++++++++++++++-- .../DeleteAppointmentCommand.java | 1 + 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java index c696db5091e..37df580109b 100644 --- a/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/AddAppointmentCommand.java @@ -1,5 +1,6 @@ package seedu.address.logic.commands.appointmentcommands; +import static java.util.Objects.requireNonNull; import static seedu.address.logic.parser.CliSyntax.PREFIX_DATE; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_LOCATION; @@ -10,7 +11,9 @@ import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; + import seedu.address.model.Model; +import seedu.address.model.appointment.Appointment; /** * Adds an appointment to the appointment list. @@ -38,11 +41,35 @@ public class AddAppointmentCommand extends Command { public static final String MESSAGE_SUCCESS = "New appointment added: %1$s"; public static final String MESSAGE_DUPLICATE_APPOINTMENT = "This appointment already exists in the list"; + private final Appointment toAdd; + + /** + * Primary constructor to accept an appointment and add it to appointment list. + * @param appointment Appointment to add + */ + public AddAppointmentCommand(Appointment appointment) { + requireNonNull(appointment); + toAdd = appointment; + } + + /** - * More to be implemented + * Main execute method that creates adds a new appointment to the appointment list + * @param model {@code Model} which the command should operate on. + * @return CommandResult indicating success or failure of add operation + * @throws CommandException */ @Override public CommandResult execute(Model model) throws CommandException { - return null; + requireNonNull(model); + + if (model.hasAppointment(toAdd)) { + throw new CommandException(MESSAGE_DUPLICATE_APPOINTMENT); + } else { + model.addAppointment(toAdd); + return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); + } + } + } diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java index 06c0ef5c976..d36482a2fb2 100644 --- a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java @@ -8,6 +8,7 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Appointment; import seedu.address.model.Model; +import seedu.address.model.appointment.Appointment; /** * Deletes an appointment identified using it's displayed index from the appointment list. From 002bc0f8ceb79d08730e7e33b8b4ef56eb958d1f Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Sun, 14 Mar 2021 19:04:44 +0800 Subject: [PATCH 109/762] Added RemoveByIndex utility in AppointmentList. Updated Model and Model Manager with add and remove commands to link with UI. --- src/main/java/seedu/address/model/Model.java | 28 +++++++++++++ .../seedu/address/model/ModelManager.java | 40 +++++++++++++++++++ .../model/appointment/AppointmentList.java | 10 ++++- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index d54df471c1f..2c119bfc30e 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -5,6 +5,7 @@ import javafx.collections.ObservableList; import seedu.address.commons.core.GuiSettings; +import seedu.address.model.appointment.Appointment; import seedu.address.model.person.Person; /** @@ -84,4 +85,31 @@ public interface Model { * @throws NullPointerException if {@code predicate} is null. */ void updateFilteredPersonList(Predicate predicate); + + + /** + * Checks if Appointment exists in appointment list. + * @param appointment Appointment to check + * @return True if appointment is already in appointment list + */ + boolean hasAppointment(Appointment appointment); + + /** + * @param appointment Appointment to add (appointment must not already exist) + */ + void addAppointment(Appointment appointment); + + /** + * Removes appointment from appointment list. + * @param appointment Appointment to remove must be present + */ + void removeAppointment(Appointment appointment); + + /** + * Method that removes appointment based on index + * @param indexToRemove + */ + void removeAppointmentIndex(int indexToRemove); + + } diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 0650c954f5c..17a5a1524f4 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -11,6 +11,8 @@ import javafx.collections.transformation.FilteredList; import seedu.address.commons.core.GuiSettings; import seedu.address.commons.core.LogsCenter; +import seedu.address.model.appointment.Appointment; +import seedu.address.model.appointment.AppointmentList; import seedu.address.model.person.Person; /** @@ -22,6 +24,7 @@ public class ModelManager implements Model { private final AddressBook addressBook; private final UserPrefs userPrefs; private final FilteredList filteredPersons; + private final AppointmentList appointmentList; /** * Initializes a ModelManager with the given addressBook and userPrefs. @@ -34,6 +37,7 @@ public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs this.addressBook = new AddressBook(addressBook); this.userPrefs = new UserPrefs(userPrefs); + this.appointmentList = new AppointmentList(); filteredPersons = new FilteredList<>(this.addressBook.getPersonList()); } @@ -129,6 +133,42 @@ public void updateFilteredPersonList(Predicate predicate) { filteredPersons.setPredicate(predicate); } + /** + * Checks if Appointment exists in appointment list. + * @param appointment Appointment to check + * @return True if appointment is already in appointment list + */ + @Override + public boolean hasAppointment(Appointment appointment) { + return appointmentList.contains(appointment); + } + + /** + * @param appointment Appointment to add (appointment must not already exist) + */ + @Override + public void addAppointment(Appointment appointment) { + appointmentList.add(appointment); + } + + /** + * Removes appointment from appointment list. + * @param appointment Appointment to remove must be present + */ + @Override + public void removeAppointment(Appointment appointment) { + appointmentList.remove(appointment); + } + + /** + * Method that removes appointment based on index + * @param indexToRemove + */ + public void removeAppointmentIndex(int indexToRemove) { + appointmentList.removeByIndex(indexToRemove); + } + + @Override public boolean equals(Object obj) { // short circuit if same object diff --git a/src/main/java/seedu/address/model/appointment/AppointmentList.java b/src/main/java/seedu/address/model/appointment/AppointmentList.java index 79d54fedd0c..cf9ea003073 100644 --- a/src/main/java/seedu/address/model/appointment/AppointmentList.java +++ b/src/main/java/seedu/address/model/appointment/AppointmentList.java @@ -59,7 +59,7 @@ public void setAppointment(Appointment target, Appointment editedAppointment) { } /** - * Removes the equivalent appointment from the list. + * Removes the equivalent appointment from the list. (By appointment) * The appointment must exist in the list. */ public void remove(Appointment toRemove) { @@ -69,6 +69,14 @@ public void remove(Appointment toRemove) { } } + /** + * Removes the equivalent appointment from the list (must be present). + * @param index Index of appointment to remove (0-based) + */ + public void removeByIndex(int index) { + this.internalList.remove(index); + } + public void setAppointments(AppointmentList replacement) { requireNonNull(replacement); internalList.setAll(replacement.internalList); From c23d2e061741818dc16185c495e6a3ce87ac5209 Mon Sep 17 00:00:00 2001 From: Jared Lim Date: Sun, 14 Mar 2021 19:11:14 +0800 Subject: [PATCH 110/762] Fixed integration errors --- .../commands/appointmentcommands/DeleteAppointmentCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java index d36482a2fb2..1a4c3af3591 100644 --- a/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java +++ b/src/main/java/seedu/address/logic/commands/appointmentcommands/DeleteAppointmentCommand.java @@ -6,7 +6,6 @@ import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Appointment; import seedu.address.model.Model; import seedu.address.model.appointment.Appointment; From ef4fa6269b5f8086483d596ffbc210a4708e727c Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 20:04:10 +0800 Subject: [PATCH 111/762] Add ViewCommandTest --- .../logic/commands/ViewCommandTest.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/test/java/seedu/address/logic/commands/ViewCommandTest.java diff --git a/src/test/java/seedu/address/logic/commands/ViewCommandTest.java b/src/test/java/seedu/address/logic/commands/ViewCommandTest.java new file mode 100644 index 00000000000..631affb5ad4 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/ViewCommandTest.java @@ -0,0 +1,88 @@ +package seedu.address.logic.commands; + +import org.junit.jupiter.api.Test; +import seedu.address.commons.core.Messages; +import seedu.address.commons.core.index.Index; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.person.Person; + +import java.util.Collections; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static seedu.address.logic.commands.CommandTestUtil.*; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; + +public class ViewCommandTest { + + private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + + @Test + public void execute_validIndexUnfilteredList_success() { + Person tutorToView = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + ViewCommand viewCommand = new ViewCommand(INDEX_FIRST_PERSON); + + String expectedMessage = String.format(ViewCommand.MESSAGE_VIEW_TUTOR_SUCCESS, tutorToView.getName()); + assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel); + } + + @Test + public void execute_invalidIndexUnfilteredList_throwsCommandException() { + Index outOfBoundIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); + ViewCommand viewCommand = new ViewCommand(outOfBoundIndex); + + assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + @Test + public void execute_validIndexFilteredList_success() { + showPersonAtIndex(model, INDEX_FIRST_PERSON); + + Person tutorToView = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); + ViewCommand viewCommand = new ViewCommand(INDEX_FIRST_PERSON); + + String expectedMessage = String.format(ViewCommand.MESSAGE_VIEW_TUTOR_SUCCESS, tutorToView.getName()); + assertCommandSuccess(viewCommand, model, expectedMessage, expectedModel); + } + + @Test + public void execute_invalidIndexFilteredList_throwsCommandException() { + showPersonAtIndex(model, INDEX_FIRST_PERSON); + + Index outOfBoundIndex = INDEX_SECOND_PERSON; + // ensures that outOfBoundIndex is still in bounds of address book list + assertTrue(outOfBoundIndex.getZeroBased() < model.getAddressBook().getPersonList().size()); + + ViewCommand viewCommand = new ViewCommand(outOfBoundIndex); + + assertCommandFailure(viewCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + } + + @Test + public void equals() { + ViewCommand viewFirstCommand = new ViewCommand(INDEX_FIRST_PERSON); + ViewCommand viewSecondCommand = new ViewCommand(INDEX_SECOND_PERSON); + + // same object -> returns true + assertTrue(viewFirstCommand.equals(viewFirstCommand)); + + // same values -> returns true + ViewCommand viewFirstCommandCopy = new ViewCommand(INDEX_FIRST_PERSON); + assertTrue(viewFirstCommand.equals(viewFirstCommandCopy)); + + // different types -> returns false + assertFalse(viewFirstCommand.equals(1)); + + // null -> returns false + assertFalse(viewFirstCommand.equals(null)); + + // different person -> returns false + assertFalse(viewFirstCommand.equals(viewSecondCommand)); + } + +} From b38a612aa0be4ab0a8a4b7aa286e0ea5be3a6d39 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Sun, 14 Mar 2021 20:06:50 +0800 Subject: [PATCH 112/762] Add ViewCommandParserTest --- .../logic/parser/ViewCommandParserTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java diff --git a/src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java b/src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java new file mode 100644 index 00000000000..e570705910b --- /dev/null +++ b/src/test/java/seedu/address/logic/parser/ViewCommandParserTest.java @@ -0,0 +1,24 @@ +package seedu.address.logic.parser; + +import org.junit.jupiter.api.Test; +import seedu.address.logic.commands.ViewCommand; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; + +public class ViewCommandParserTest { + + private ViewCommandParser parser = new ViewCommandParser(); + + @Test + public void parse_validArgs_returnsViewCommand() { + assertParseSuccess(parser, "1", new ViewCommand(INDEX_FIRST_PERSON)); + } + + @Test + public void parse_invalidArgs_throwsParseException() { + assertParseFailure(parser, "a", String.format(MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE)); + } +} From 55edce45058a349c1bda7efb8890f07f23a42ba8 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 15 Mar 2021 20:07:03 +0800 Subject: [PATCH 113/762] Add add_tutor, delete_tutor and storage for tutor --- .../logic/parser/AddCommandParser.java | 24 +++- .../seedu/address/logic/parser/CliSyntax.java | 1 + .../address/logic/parser/ParserUtil.java | 110 ++++++++++++++++-- .../model/subject/SubjectQualification.java | 2 +- .../address/model/subject/TutorSubject.java | 2 + .../address/storage/JsonAdaptedPerson.java | 37 ++++-- .../storage/JsonAdaptedTutorSubject.java | 81 +++++++++++++ 7 files changed, 236 insertions(+), 21 deletions(-) create mode 100644 src/main/java/seedu/address/storage/JsonAdaptedTutorSubject.java diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index b38a330210b..db1ed09b74f 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -2,10 +2,16 @@ import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; +import static seedu.address.logic.parser.CliSyntax.PREFIX_EDUCATION_LEVEL; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; +import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_QUALIFICATION; +import static seedu.address.logic.parser.CliSyntax.PREFIX_RATE; +import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_YEAR; import java.util.ArrayList; import java.util.List; @@ -35,9 +41,10 @@ public class AddCommandParser implements Parser { */ public AddCommand parse(String args) throws ParseException { ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, + PREFIX_GENDER, PREFIX_SUBJECT_NAME, PREFIX_RATE, PREFIX_EDUCATION_LEVEL, PREFIX_YEAR, PREFIX_QUALIFICATION); - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) + if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_GENDER) || !argMultimap.getPreamble().isEmpty()) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } @@ -48,10 +55,15 @@ public AddCommand parse(String args) throws ParseException { Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - //TODO: Parse Gender - Gender gender = new Gender("Todo"); - // TODO: Parse Tutor Subjects - List tutorSubjects = new ArrayList<>(); + Gender gender = ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()); + + List tutorSubjects = ParserUtil.parseTutorSubjects( + argMultimap.getAllValues(PREFIX_SUBJECT_NAME), + argMultimap.getAllValues(PREFIX_EDUCATION_LEVEL), + argMultimap.getAllValues(PREFIX_RATE), + argMultimap.getAllValues(PREFIX_YEAR), + argMultimap.getAllValues(PREFIX_QUALIFICATION) + ); Person person = new Person(name, gender, phone, email, address, tutorSubjects, tagList); diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 63bdb744ba8..d3e13e32ed5 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -11,6 +11,7 @@ public class CliSyntax { public static final Prefix PREFIX_EMAIL = new Prefix("e/"); public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); + public static final Prefix PREFIX_GENDER = new Prefix("g/"); /* * Subject prefix definitions diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index b117acb9c55..13e8f48e427 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -2,17 +2,13 @@ import static java.util.Objects.requireNonNull; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.*; import seedu.address.commons.core.index.Index; import seedu.address.commons.util.StringUtil; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; +import seedu.address.model.person.*; +import seedu.address.model.subject.*; import seedu.address.model.tag.Tag; /** @@ -50,6 +46,21 @@ public static Name parseName(String name) throws ParseException { return new Name(trimmedName); } + /** + * Parses a {@code String gender} into a {@code Gender}. + * Leading and trailing whitespaces will be trimmed. + * + * @throws ParseException if the given gender is invalid + */ + public static Gender parseGender(String gender) throws ParseException { + requireNonNull(gender); + String trimmedGender = gender.trim(); + if (!Gender.isValidGender(trimmedGender)) { + throw new ParseException(Gender.MESSAGE_CONSTRAINTS); + } + return new Gender(trimmedGender); + } + /** * Parses a {@code String phone} into a {@code Phone}. * Leading and trailing whitespaces will be trimmed. @@ -121,4 +132,89 @@ public static Set parseTags(Collection tags) throws ParseException } return tagSet; } + public static SubjectName parseSubjectName(String subjectName) throws ParseException { + requireNonNull(subjectName); + String trimmedSubjectName = subjectName.trim(); + if (!SubjectName.isValidName(trimmedSubjectName)) { + throw new ParseException(SubjectName.MESSAGE_CONSTRAINTS); + } + return new SubjectName(trimmedSubjectName); + } + + public static SubjectRate parseSubjectRate(String subjectRate) throws ParseException { + requireNonNull(subjectRate); + String trimmedSubjectRate = subjectRate.trim(); + if (!SubjectRate.isValidRate(trimmedSubjectRate)) { + throw new ParseException(SubjectRate.MESSAGE_CONSTRAINTS); + } + return new SubjectRate(trimmedSubjectRate); + } + + public static SubjectQualification parseSubjectQualification(String subjectQualification) throws ParseException { + requireNonNull(subjectQualification); + String trimmedSubjectQualification = subjectQualification.trim(); + if (!SubjectQualification.isValidQualification(trimmedSubjectQualification)) { + throw new ParseException(SubjectQualification.MESSAGE_CONSTRAINTS); + } + return new SubjectQualification(trimmedSubjectQualification); + } + + public static SubjectLevel parseSubjectLevel(String subjectLevel) throws ParseException { + requireNonNull(subjectLevel); + String trimmedSubjectLevel = subjectLevel.trim(); + if (!SubjectLevel.isValidLevel(trimmedSubjectLevel)) { + throw new ParseException(SubjectLevel.MESSAGE_CONSTRAINTS); + } + return new SubjectLevel(trimmedSubjectLevel); + } + + public static SubjectExperience parseSubjectExperience(String subjectExperience) throws ParseException { + requireNonNull(subjectExperience); + String trimmedSubjectExperience = subjectExperience.trim(); + if (!SubjectExperience.isValidExperience(trimmedSubjectExperience)) { + throw new ParseException(SubjectExperience.MESSAGE_CONSTRAINTS); + } + return new SubjectExperience(trimmedSubjectExperience); + } + + + public static List parseTutorSubjects( + List subjectNames, + List subjectLevels, + List subjectRates, + List subjectExperiences, + List subjectQualifications + ) throws ParseException { + + requireNonNull(subjectNames); + requireNonNull(subjectLevels); + requireNonNull(subjectRates); + requireNonNull(subjectExperiences); + requireNonNull(subjectQualifications); + + List subjectList = new ArrayList<>(); + + // check for correct number of args for each tutor subject + int numberOfSubjects = subjectNames.size(); + if (subjectLevels.size() != numberOfSubjects + || subjectRates.size() != numberOfSubjects + || subjectExperiences.size() != numberOfSubjects + || subjectQualifications.size() != numberOfSubjects) { + throw new ParseException(TutorSubject.MESSAGE_CONSTRAINTS); + } + + for (int i = 0; i < numberOfSubjects; i ++) { + SubjectName subjectName = parseSubjectName(subjectNames.get(i)); + SubjectLevel subjectLevel = parseSubjectLevel(subjectLevels.get(i)); + SubjectRate subjectRate = parseSubjectRate(subjectRates.get(i)); + SubjectExperience subjectExperience = parseSubjectExperience(subjectExperiences.get(i)); + SubjectQualification subjectQualification = parseSubjectQualification(subjectQualifications.get(i)); + + subjectList.add( + new TutorSubject(subjectName, subjectLevel, subjectRate, subjectExperience, subjectQualification) + ); + } + + return subjectList; + } } diff --git a/src/main/java/seedu/address/model/subject/SubjectQualification.java b/src/main/java/seedu/address/model/subject/SubjectQualification.java index dcfa1161c36..79130aec1e7 100644 --- a/src/main/java/seedu/address/model/subject/SubjectQualification.java +++ b/src/main/java/seedu/address/model/subject/SubjectQualification.java @@ -17,7 +17,7 @@ public class SubjectQualification implements Filterable { * The first character of the subject qualification must not be a whitespace, * otherwise " " (a blank string) becomes a valid input. */ - public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + public static final String VALIDATION_REGEX = "^[\\p{Alnum} \\-)(]{2,20}$"; public final String qualification; diff --git a/src/main/java/seedu/address/model/subject/TutorSubject.java b/src/main/java/seedu/address/model/subject/TutorSubject.java index d5e13589b29..5705a03dc57 100644 --- a/src/main/java/seedu/address/model/subject/TutorSubject.java +++ b/src/main/java/seedu/address/model/subject/TutorSubject.java @@ -11,6 +11,8 @@ * Guarantees: details are present and not null, field values are validated, immutable. */ public class TutorSubject implements Filterable { + public static final String MESSAGE_CONSTRAINTS = + "Each TutorSubject must contain name, level, rate, experience and qualification"; private final SubjectName name; private final SubjectLevel level; private final SubjectRate rate; diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java index c5d2582ac5b..5e26d93aa96 100644 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java @@ -27,25 +27,35 @@ class JsonAdaptedPerson { public static final String MISSING_FIELD_MESSAGE_FORMAT = "Person's %s field is missing!"; private final String name; + private final String gender; private final String phone; private final String email; private final String address; private final List tagged = new ArrayList<>(); + private final List tutorSubjects = new ArrayList<>(); /** * Constructs a {@code JsonAdaptedPerson} with the given person details. */ @JsonCreator - public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone") String phone, - @JsonProperty("email") String email, @JsonProperty("address") String address, - @JsonProperty("tagged") List tagged) { + public JsonAdaptedPerson(@JsonProperty("name") String name, + @JsonProperty("gender") String gender, + @JsonProperty("phone") String phone, + @JsonProperty("email") String email, + @JsonProperty("address") String address, + @JsonProperty("tagged") List tagged, + @JsonProperty("tutorSubjects") List tutorSubjects) { this.name = name; + this.gender = gender; this.phone = phone; this.email = email; this.address = address; if (tagged != null) { this.tagged.addAll(tagged); } + if (tutorSubjects != null) { + this.tutorSubjects.addAll(tutorSubjects); + } } /** @@ -53,12 +63,16 @@ public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone */ public JsonAdaptedPerson(Person source) { name = source.getName().fullName; + gender = source.getGender().personGender; phone = source.getPhone().value; email = source.getEmail().value; address = source.getAddress().value; tagged.addAll(source.getTags().stream() .map(JsonAdaptedTag::new) .collect(Collectors.toList())); + tutorSubjects.addAll(source.getTutorSubjects().stream() + .map(JsonAdaptedTutorSubject::new) + .collect(Collectors.toList())); } /** @@ -106,10 +120,19 @@ public Person toModelType() throws IllegalValueException { final Set modelTags = new HashSet<>(personTags); - //TODO: Adapt storage for Gender - final Gender modelGender = new Gender("Todo"); - // TODO: Adapt storage for Tutor Subjects - final List modelTutorSubjects = new ArrayList<>(); + if (gender == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Gender.class.getSimpleName())); + } + if (!Gender.isValidGender(gender)) { + throw new IllegalValueException(Gender.MESSAGE_CONSTRAINTS); + } + final Gender modelGender = new Gender(gender); + + final List tutorSubjectsList = new ArrayList<>(); + for (JsonAdaptedTutorSubject tutorSubject : tutorSubjects) { + tutorSubjectsList.add(tutorSubject.toModelType()); + } + final List modelTutorSubjects = new ArrayList<>(tutorSubjectsList); return new Person(modelName, modelGender, modelPhone, modelEmail, modelAddress, modelTutorSubjects, modelTags); } diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTutorSubject.java b/src/main/java/seedu/address/storage/JsonAdaptedTutorSubject.java new file mode 100644 index 00000000000..3420c1c8052 --- /dev/null +++ b/src/main/java/seedu/address/storage/JsonAdaptedTutorSubject.java @@ -0,0 +1,81 @@ +package seedu.address.storage; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.subject.SubjectExperience; +import seedu.address.model.subject.SubjectLevel; +import seedu.address.model.subject.SubjectName; +import seedu.address.model.subject.SubjectQualification; +import seedu.address.model.subject.SubjectRate; +import seedu.address.model.subject.TutorSubject; + +public class JsonAdaptedTutorSubject { + + private final String subjectName; + private final String subjectLevel; + private final String subjectRate; + private final String subjectExperience; + private final String subjectQualification; + + + @JsonCreator + public JsonAdaptedTutorSubject(@JsonProperty("subjectName") String subjectName, + @JsonProperty("subjectLevel") String subjectLevel, + @JsonProperty("subjectRate") String subjectRate, + @JsonProperty("subjectExperience") String subjectExperience, + @JsonProperty("subjectQualification") String subjectQualification) { + + this.subjectName = subjectName; + this.subjectLevel = subjectLevel; + this.subjectRate = subjectRate; + this.subjectExperience = subjectExperience; + this.subjectQualification = subjectQualification; + + } + + public JsonAdaptedTutorSubject(TutorSubject source) { + subjectName = source.getName().toString(); + subjectLevel = source.getLevel().toString(); + subjectRate = source.getRate().toString(); + subjectExperience = source.getExperience().toString(); + subjectQualification = source.getQualification().toString(); + } + + public TutorSubject toModelType() throws IllegalValueException { + if (!SubjectName.isValidName(subjectName)) { + throw new IllegalValueException(SubjectName.MESSAGE_CONSTRAINTS); + } + SubjectName modelSubjectName = new SubjectName(subjectName); + + if (!SubjectLevel.isValidLevel(subjectLevel)) { + throw new IllegalValueException(SubjectLevel.MESSAGE_CONSTRAINTS); + } + SubjectLevel modelSubjectLevel = new SubjectLevel(subjectLevel); + + if (!SubjectRate.isValidRate(subjectRate)) { + throw new IllegalValueException(SubjectRate.MESSAGE_CONSTRAINTS); + } + SubjectRate modelSubjectRate = new SubjectRate(subjectRate); + + if (!SubjectExperience.isValidExperience(subjectExperience)) { + throw new IllegalValueException(SubjectExperience.MESSAGE_CONSTRAINTS); + } + SubjectExperience modelSubjectExperience = new SubjectExperience(subjectExperience); + + if (!SubjectQualification.isValidQualification(subjectQualification)) { + throw new IllegalValueException(SubjectQualification.MESSAGE_CONSTRAINTS); + } + SubjectQualification modelSubjectQualification = new SubjectQualification(subjectQualification); + + TutorSubject modelTutorSubject = new TutorSubject( + modelSubjectName, + modelSubjectLevel, + modelSubjectRate, + modelSubjectExperience, + modelSubjectQualification + ); + + return modelTutorSubject; + } +} From 66e15f0955f09d68b663421f441dfa01d5f9aae5 Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 15 Mar 2021 20:37:38 +0800 Subject: [PATCH 114/762] Fixed import statements for ParserUtil --- .../address/logic/parser/ParserUtil.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 13e8f48e427..8306332b4b2 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -2,13 +2,26 @@ import static java.util.Objects.requireNonNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import seedu.address.commons.core.index.Index; import seedu.address.commons.util.StringUtil; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.*; -import seedu.address.model.subject.*; +import seedu.address.model.person.Address; +import seedu.address.model.person.Email; +import seedu.address.model.person.Gender; +import seedu.address.model.person.Name; +import seedu.address.model.person.Phone; +import seedu.address.model.subject.SubjectExperience; +import seedu.address.model.subject.SubjectLevel; +import seedu.address.model.subject.SubjectName; +import seedu.address.model.subject.SubjectQualification; +import seedu.address.model.subject.SubjectRate; +import seedu.address.model.subject.TutorSubject; import seedu.address.model.tag.Tag; /** From 6b157c6afff80ed127d6e0e544356b97fe13ee7b Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 15 Mar 2021 21:05:17 +0800 Subject: [PATCH 115/762] Updated test cases --- .../duplicatePersonAddressBook.json | 45 +++++++++--- .../invalidPersonAddressBook.json | 29 ++++++-- .../typicalPersonsAddressBook.json | 69 ++++++++----------- 3 files changed, 86 insertions(+), 57 deletions(-) diff --git a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json index 48831cc7674..e5d774f624b 100644 --- a/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json @@ -1,14 +1,37 @@ { - "persons": [ { - "name": "Alice Pauline", - "phone": "94351253", - "email": "alice@example.com", - "address": "123, Jurong West Ave 6, #08-111", - "tagged": [ "friends" ] + "persons" : [ { + "name" : "Alice Pauline", + "gender" : "Male", + "phone" : "94351253", + "email" : "johnd@example.com", + "address" : "John street, block 123, #01-01", + "tagged" : [ "friends", "tutor" ], + "tutorSubjects" : [ { + "subjectName" : "English", + "subjectLevel" : "Sec 3", + "subjectRate" : "50", + "subjectExperience" : "5", + "subjectQualification" : "ALevel" + }, { + "subjectName" : "Mathematics", + "subjectLevel" : "Sec 4", + "subjectRate" : "60", + "subjectExperience" : "6", + "subjectQualification" : "ALevel" + } ] }, { - "name": "Alice Pauline", - "phone": "94351253", - "email": "pauline@example.com", - "address": "4th street" - } ] + "name" : "Alice Pauline", + "gender" : "Female", + "phone" : "94351253", + "email" : "alice@example.com", + "address" : "123, Jurong West Ave 6, #08-111", + "tagged" : [ "friends" ], + "tutorSubjects" : [ { + "subjectName" : "English", + "subjectLevel" : "Sec 3", + "subjectRate" : "50", + "subjectExperience" : "5", + "subjectQualification" : "ALevel" + }] + }] } diff --git a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json index ad3f135ae42..9b7fe4d81cf 100644 --- a/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json @@ -1,8 +1,23 @@ { - "persons": [ { - "name": "Hans Muster", - "phone": "9482424", - "email": "invalid@email!3e", - "address": "4th street" - } ] -} + "persons" : [ { + "name" : "Hans Muster", + "gender" : "Male", + "phone" : "9482424", + "email" : "invalid@email!3e", + "address" : "4th street", + "tagged" : [ "friends", "tutor" ], + "tutorSubjects" : [ { + "subjectName" : "English", + "subjectLevel" : "Sec 3", + "subjectRate" : "50", + "subjectExperience" : "5", + "subjectQualification" : "ALevel" + }, { + "subjectName" : "Mathematics", + "subjectLevel" : "Sec 4", + "subjectRate" : "60", + "subjectExperience" : "6", + "subjectQualification" : "ALevel" + } ] + }] +} \ No newline at end of file diff --git a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json index f10eddee12e..1edd8c1292d 100644 --- a/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json +++ b/src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json @@ -1,46 +1,37 @@ { - "_comment": "AddressBook save file which contains the same Person values as in TypicalPersons#getTypicalAddressBook()", "persons" : [ { + "name" : "John Doe", + "gender" : "Male", + "phone" : "98765432", + "email" : "johnd@example.com", + "address" : "John street, block 123, #01-01", + "tagged" : [ "friends", "tutor" ], + "tutorSubjects" : [ { + "subjectName" : "English", + "subjectLevel" : "Sec 3", + "subjectRate" : "50", + "subjectExperience" : "5", + "subjectQualification" : "ALevel" + }, { + "subjectName" : "Mathematics", + "subjectLevel" : "Sec 4", + "subjectRate" : "60", + "subjectExperience" : "6", + "subjectQualification" : "ALevel" + } ] + }, { "name" : "Alice Pauline", + "gender" : "Female", "phone" : "94351253", "email" : "alice@example.com", "address" : "123, Jurong West Ave 6, #08-111", - "tagged" : [ "friends" ] - }, { - "name" : "Benson Meier", - "phone" : "98765432", - "email" : "johnd@example.com", - "address" : "311, Clementi Ave 2, #02-25", - "tagged" : [ "owesMoney", "friends" ] - }, { - "name" : "Carl Kurz", - "phone" : "95352563", - "email" : "heinz@example.com", - "address" : "wall street", - "tagged" : [ ] - }, { - "name" : "Daniel Meier", - "phone" : "87652533", - "email" : "cornelia@example.com", - "address" : "10th street", - "tagged" : [ "friends" ] - }, { - "name" : "Elle Meyer", - "phone" : "9482224", - "email" : "werner@example.com", - "address" : "michegan ave", - "tagged" : [ ] - }, { - "name" : "Fiona Kunz", - "phone" : "9482427", - "email" : "lydia@example.com", - "address" : "little tokyo", - "tagged" : [ ] - }, { - "name" : "George Best", - "phone" : "9482442", - "email" : "anna@example.com", - "address" : "4th street", - "tagged" : [ ] - } ] + "tagged" : [ "friends" ], + "tutorSubjects" : [ { + "subjectName" : "English", + "subjectLevel" : "Sec 3", + "subjectRate" : "50", + "subjectExperience" : "5", + "subjectQualification" : "ALevel" + }] + }] } From f51863b2194ea1ec695e458e48edbbcd651e822d Mon Sep 17 00:00:00 2001 From: Winniehyx Date: Mon, 15 Mar 2021 21:17:22 +0800 Subject: [PATCH 116/762] Fixed Test cases --- .../logic/commands/AddCommandTest.java | 21 +++++++++++ .../storage/JsonAdaptedPersonTest.java | 36 ++++++++++++++----- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 5865713d5dd..c9067fc3757 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -20,6 +20,7 @@ import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.ReadOnlyUserPrefs; +import seedu.address.model.appointment.Appointment; import seedu.address.model.person.Person; import seedu.address.testutil.PersonBuilder; @@ -147,6 +148,26 @@ public ObservableList getFilteredPersonList() { public void updateFilteredPersonList(Predicate predicate) { throw new AssertionError("This method should not be called."); } + + @Override + public boolean hasAppointment(Appointment appointment) { + return false; + } + + @Override + public void addAppointment(Appointment appointment) { + + } + + @Override + public void removeAppointment(Appointment appointment) { + + } + + @Override + public void removeAppointmentIndex(int indexToRemove) { + + } } /** diff --git a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java index 83b11331cdb..2500ff860d7 100644 --- a/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java +++ b/src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java @@ -15,6 +15,7 @@ import seedu.address.model.person.Address; import seedu.address.model.person.Email; import seedu.address.model.person.Name; +import seedu.address.model.person.Person; import seedu.address.model.person.Phone; public class JsonAdaptedPersonTest { @@ -25,12 +26,16 @@ public class JsonAdaptedPersonTest { private static final String INVALID_TAG = "#friend"; private static final String VALID_NAME = BENSON.getName().toString(); + private static final String VALID_GENDER = BENSON.getGender().toString(); private static final String VALID_PHONE = BENSON.getPhone().toString(); private static final String VALID_EMAIL = BENSON.getEmail().toString(); private static final String VALID_ADDRESS = BENSON.getAddress().toString(); private static final List VALID_TAGS = BENSON.getTags().stream() .map(JsonAdaptedTag::new) .collect(Collectors.toList()); + private static final List VALID_TUTOR_SUBJECTS= BENSON.getTutorSubjects().stream() + .map(JsonAdaptedTutorSubject::new) + .collect(Collectors.toList()); @Test public void toModelType_validPersonDetails_returnsPerson() throws Exception { @@ -41,14 +46,17 @@ public void toModelType_validPersonDetails_returnsPerson() throws Exception { @Test public void toModelType_invalidName_throwsIllegalValueException() { JsonAdaptedPerson person = - new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + new JsonAdaptedPerson(INVALID_NAME, VALID_GENDER, VALID_PHONE, + VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = Name.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullName_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedPerson person = + new JsonAdaptedPerson(null, VALID_GENDER, VALID_PHONE, + VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -56,14 +64,17 @@ public void toModelType_nullName_throwsIllegalValueException() { @Test public void toModelType_invalidPhone_throwsIllegalValueException() { JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, INVALID_PHONE, + VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = Phone.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullPhone_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedPerson person = + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, null, + VALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -71,14 +82,17 @@ public void toModelType_nullPhone_throwsIllegalValueException() { @Test public void toModelType_invalidEmail_throwsIllegalValueException() { JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS); + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_PHONE, + INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = Email.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullEmail_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS); + JsonAdaptedPerson person = + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_PHONE, + null, VALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -86,14 +100,17 @@ public void toModelType_nullEmail_throwsIllegalValueException() { @Test public void toModelType_invalidAddress_throwsIllegalValueException() { JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS); + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_PHONE, + VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = Address.MESSAGE_CONSTRAINTS; assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @Test public void toModelType_nullAddress_throwsIllegalValueException() { - JsonAdaptedPerson person = new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS); + JsonAdaptedPerson person = + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_PHONE, + VALID_EMAIL, null, VALID_TAGS, VALID_TUTOR_SUBJECTS); String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()); assertThrows(IllegalValueException.class, expectedMessage, person::toModelType); } @@ -103,7 +120,8 @@ public void toModelType_invalidTags_throwsIllegalValueException() { List invalidTags = new ArrayList<>(VALID_TAGS); invalidTags.add(new JsonAdaptedTag(INVALID_TAG)); JsonAdaptedPerson person = - new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags); + new JsonAdaptedPerson(VALID_NAME, VALID_GENDER, VALID_PHONE, + VALID_EMAIL, VALID_ADDRESS, invalidTags, VALID_TUTOR_SUBJECTS); assertThrows(IllegalValueException.class, person::toModelType); } From b491754260d2a60fa4e187a5091373e4bc720e7d Mon Sep 17 00:00:00 2001 From: yutingzou Date: Mon, 15 Mar 2021 22:01:53 +0800 Subject: [PATCH 117/762] UserGuide: Update 'Viewing a tutor' --- docs/UserGuide.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 135eba273d4..0171cfa9721 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -101,11 +101,16 @@ Example: `view_tutor 1` Example Output:
    ``` -Name: John Doe
    Phone Number: 98765432 -Email Address: johnd@example.com -Address: John street, block 123, #01-01 -Subject Expertise: English, Mathematics (Sec 3, 4) -Hourly Rate: SGD60/hr
    Years of Experience: 6 +John Doe +98765432 +John street, block 123, #01-01 +johnd@example.com +Subjects: +1. English + Level: Sec 3 + Rate: SGD60/hr + Experience: 6 years + Qualification: Bacholar of English Literature ``` ### Adding an appointment : `appointment` From 0c5a19504bd06db0f905982de8b2672402d699b7 Mon Sep 17 00:00:00 2001 From: yutingzou Date: Mon, 15 Mar 2021 23:35:59 +0800 Subject: [PATCH 118/762] Update TutorCard and TutorListCard to display list of subjects of each tutor --- src/main/java/seedu/address/ui/TutorCard.java | 18 ++++++++++++++++++ src/main/resources/view/TutorListCard.fxml | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/seedu/address/ui/TutorCard.java b/src/main/java/seedu/address/ui/TutorCard.java index 83a9d9cf802..7bf811452ae 100644 --- a/src/main/java/seedu/address/ui/TutorCard.java +++ b/src/main/java/seedu/address/ui/TutorCard.java @@ -1,6 +1,7 @@ package seedu.address.ui; import java.util.Comparator; +import java.util.Objects; import javafx.fxml.FXML; import javafx.scene.control.Label; @@ -8,6 +9,7 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import seedu.address.model.person.Person; +import seedu.address.model.subject.TutorSubject; /** * An UI component that displays information of a {@code Person}. @@ -39,6 +41,10 @@ public class TutorCard extends UiPart { @FXML private Label email; @FXML + private Label subject; + @FXML + private FlowPane subjects; + @FXML private FlowPane tags; /** @@ -52,11 +58,23 @@ public TutorCard(Person person, int displayedIndex) { phone.setText(person.getPhone().value); address.setText(person.getAddress().value); email.setText(person.getEmail().value); + subject.setText("Subjects: "); + person.getTutorSubjects().stream() + .filter(subject -> Objects.nonNull(subject)) + .forEach(subject -> displaySubjectDetails(subject)); person.getTags().stream() .sorted(Comparator.comparing(tag -> tag.tagName)) .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); } + private void displaySubjectDetails(TutorSubject subject) { + subjects.getChildren().add(new Label(subject.getName().name)); + subjects.getChildren().add(new Label(" Level: " + subject.getLevel().level)); + subjects.getChildren().add(new Label(" Rate: SGD" + subject.getRate().rate + "/hr")); + subjects.getChildren().add(new Label(" Experience: " + subject.getExperience().experience + "years")); + subjects.getChildren().add(new Label(" Qualification: " + subject.getQualification().qualification)); + } + @Override public boolean equals(Object other) { // short circuit if same object diff --git a/src/main/resources/view/TutorListCard.fxml b/src/main/resources/view/TutorListCard.fxml index 650a7e592ea..2b33440f66d 100644 --- a/src/main/resources/view/TutorListCard.fxml +++ b/src/main/resources/view/TutorListCard.fxml @@ -30,6 +30,8 @@

    }8B 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°w3nmpWL9j>9a4Y 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 Date: Sat, 27 Feb 2021 03:54:28 +0800 Subject: [PATCH 019/762] Update User Guide with add_tutor and list_tutors commands --- docs/UserGuide.md | 168 +++++++--------------------------------------- 1 file changed, 25 insertions(+), 143 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 3716f3ca8a4..a83c9e19c73 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,41 +3,13 @@ layout: page title: User Guide --- -AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. +**Tutor Tracker** is a desktop app designed to **help students search for tutors and manage tuition appointments**, optimised for use via a Command Line Interface (CLI) for a fast and streamlined experience. * Table of Contents {:toc} -------------------------------------------------------------------------------------------------------------------- -## Quick start - -1. Ensure you have Java `11` or above installed in your Computer. - -1. Download the latest `addressbook.jar` from [here](https://github.com/se-edu/addressbook-level3/releases). - -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. - -1. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
    - ![Ui](images/Ui.png) - -1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.
    - Some example commands you can try: - - * **`list`** : Lists all contacts. - - * **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book. - - * **`delete`**`3` : Deletes the 3rd contact shown in the current list. - - * **`clear`** : Deletes all contacts. - - * **`exit`** : Exits the app. - -1. Refer to the [Features](#features) below for details of each command. - --------------------------------------------------------------------------------------------------------------------- - ## Features

    dkX^WHE&3oc~Uq zXfV1Q1CJgNEF5$1ry0aT;=^u8*#fo$OefesO+=OV(;n{ERs2Ei;o$Jx@7E)kR>|RW zDy0ZeEVH$?D6@38TW>b2Wxm@ILIjLbp3dU3pd!r>#Z9CgI}igV?xDGi!^ekpsx2ny z{rb#29Wyv~_?rGMhyD_H7rkQ)L&#tP#BQXksuahtsVTH5%8`%iS9kIkBmKgRz4 z|1n5XS7T4bE8;yY#bX>shX~@wCBJyeE6M(_gpid`ZWhFPpCfHrcBzk0N}9_1cH6l=^afm5sP*#f9Q#f zA~;lGwT(07;49Zjj#Xooh`5<$MV8pIL{PxM%mrey-QC|_e|Y=m^78WJdCMi_&i_tp#Sy<;1sJIE>aM@R=pXZYMsbeK$+ zC4DaW@0FFhR7G6@Dk5&;RrPozN=5UzoS!aEPfq5Mjw3aXBQ7+U(wZXKnk?B+oy@aA zA%Nq+5CkN3R19+L;g~2UA<{$LI|qeh?jHj^)lUH^Un>@{9yBc?!Ed0A!{b`@m z$BT%hX$O$bpo?K#t-DZl_K_<2pFsEoc<5idSM6ZS6ZNoTO0Bv=-D+IfB19zgsVNaF zLV$({MZ_4+MY1e;ukq~i;%8rd`SRJ*O;RYOqFFqf&7vrZ<2aIb?O?B5Cv4tB|}<+WfTChAP8bf)a>+R9z`U) zyuJC;AOF$PjEGLo7Qg((uV1`+Ih)PmS&X%NVyzfspf&8IDf$|WXFFEysPguS!qc(Z z+2NdM+pQZ{7P1%i4w(gXmC3K$PDjJ|kf#3?V%84n&GS4> zw#jC_-L2Ezt}HTPqY#xs5k)m=1h-JWt^ximZ$uL_k=y7Rwp(|n%?|tKCM595?pokR zW6|M&u1BeSe8FP-c2dVDmE#$JwFp9l0*Imjkx)lUYXY&m?dJX4H>=e$$*qc`7cX91 zo}E8=dZ85pfE8xzW0R^JyTe&@`1HQd4`w|e&)@Or2VX?*@kqxN)u)C-AGSTm6ez0daZCs>AoW%ql6 zGVMmzKitD4+P=EkI00k7a3r`fd{vi8u2$RFNjX`sx??s~2F6if6{kHrWxXD2k$Jrj$}qq(~tuSKs~l z%hews|AUI@!O~ZC^|{Ee6Z40O!M#%u2hGtT5$t1pnh_LjQ&ib}*Z%EJZ&4Jh<=u9* z%+lRvvr5ynEV8o9xhx6T>5OW6T+`G<2d*!NQe5u^tu)2Nhkvk%;jtu52kaF%Yi zTe^C0L9&eJ^LbfhH^2Se%a_mfY>q@mV7b~vQM5QaUn~~$`6&@8)NTT5zb*F%s0jM< ze>fLdKd5Y>{SdItz(?>Re_wu4ed~sNzGCCIjtmo(Qd*O>WK5B!>2|YOZ&tfxV~jx% z7K6=P0=LElfI^7JH;Ozg%l$6lfhj|5vkbQVd>)(R z14Hz6M{$r;CLKmcry?R)5La&C2S%fabK9*LTNKum)|AE+IYjfB()7na{ExgyPZ#I2 z)5UCY>I}Xx8)J+yv5uG+dNgXE6tsSHIbwlckd%f!Gfo7e|9t6h%=K z#u%k2ilX^EJ~=tjTA!SpY-43ik!*KKvIXEcj+HQ*(mVO$xZqIXz!?~BdaDa0;aIIX zUPj(%qPor+eb-&sv=@xi7=Vss^u87VJM*n;vUc%hdmRsJEG~edNq&c9iyQHCZPESn z?fV47?)`=-1b{@7Lakzn83fKWGbiiSKm7Oq{_fq|mtTDG{EIJt_3PjK-T(T(onJhe z&*vhbC?cZ4E~X#&K;AKbY7Fq3i01ah{0|WFY4-9@;`B2I9xQpRyC{nFdcE1K0e}cj zPEO7*7R-EqdvkMreRFejb#=A8y(_ca(fRdaDr#y%TV{$v6)-X0@Bt@jDoT?5PS&I33&%tt+bU}jMHgW=4)PL%hMsfseBEI@$(pnI=sXtMGJg0`9o z77Eir?SW@)C!tY|;knY}XZI)%r<+3OWYfG*5>0)k-xxKzx-QTa5_tziZ zEtktIOPn8Axzhkd#BL5vJ*#shAZL_E**pnYHy=KUbkGTRe;-B^Xn?M3Y+Iq9z?TP( zW}HZ9g$$xtXZAZI7%J_9DC~wQiBg)h5)s49%*do7&6>+RPt(+mRM@PS>-)Rs&z~=d zwAKg};kQ36UNd@I@)P(>q~YD4H8Ud$iUuoK6+WwGk83o@r)WFL+rhboUZ?te+YyID zI@WIJt%5EC24uFH6bi&zvnjw7Tx3$FcUN!U|Mk1ga<$v8ZE3)Ank3iD>m*6i?XD~` zDGN3hg;6vhlR#a;=VVe?EJ$P1nA_tqaiHHuSVE?-!`_$MAd71;cUdWdFzrw1`}3Rf z9svP=WU;zh{n4l@-uRkbujQ^w3w3h?3xkwF$lkA-9tUY=9JwSsVFk|nvYF2DAYURe zb{??movMbQI~Rt~igirLVi*xM5CS42v#Q3)2y)2)pa9)GUu4!G&z@YWNTs{YY&LuM z`n%VE{`1A@Vy5WX^OvYqUKmCLD7Lh0nMf<8T+rqQE?`Xy%5I~v`h(`rDZe4;Yuj^{ z>*Wo2d#aig@H*f7V$JcgQaNlYEdMyru|EXu?~l{{6y8pKxV0-ENnr zyFANQ%jJ5#zPY|$-Q8|i>)m#frs>`C))b}XG9ndeijLxU5%41-0) zj-NxAMZ}F;EAwKzUW>q={`99fjj@%(gtQd$Fo*4mJhe{2o)P^9{hcy*9@_7R1@k0DiE-?mf=vpl=GzW%2_{^{!KD$f!CPzvW!%w?en zPUo{C(L2ioe0g$WxF0F$&1{+KR zHerN> z>Qf7h^_)E5I$py<^Ao|ySG`EiP+1F3x#Nk!W6kJb76yQHHacN z+)33-X~(Ku#+GG_Q?;)e_LqwtKz%WW*#t~W(AOOemFO4=9FFd|s{%%BOiWlG?&|{G zh)y2j@afbSavds+mZ=C#Q)Q2JF+!VDfCL$YNRd_*2^9!f-mTW}UVmqc^6u{L*^B4D zeD~X5{Q6gyPoBi_iKG4r3)qQ>1*ku+;`_^JjaT@{gXO;#{_48NW%$N?`;Tez8IAKh z4arX5GrLePilWog`Okm;^Sj&Y4{u-Zw(DfOy}S9K0NIvetQgB>VT_4=tv&z%Tecu# zp(=V2tfbNP0=g(^kSw^*2s}1xX!>>fjW_#RwXlyFcvjK_kAh&AZfpYTbFQ#2AE;)rmi6@oJUU{H#18)X>7hFcnnYP1hpfAG8%)lZzKPKbi!ri8G7SYd}{h$(S( zcfZ@F@87?lEzX|*>%aW|@BZ#T{pbJk)h~WEpU<_9uD{zQ9LX6kUa1R9z5V zQc7THlw3kUx}+qR?rx=#?(SYvy1To(k?xX~l2{~_rSscw{($|xci-MSbLN~gcTslo zbxy6j2Om?IF_95O#LQ4a6Se2*B#jx0>^6tQu;uw*rbU zNnJ4W6_TWXgB^Dr;E;e8)bm5eQEGh;LU;?EJ_#^YI88b^eUu{9l(=P`+jsDd{d(-tdZlJTf3zso{*41 z3P$s6>D;bfxn~`3&DwN-yNuf@?u1$-mO_O$y52Dq{G)$??A!1XfK;r)lEhfzfv;fR zjDf~Yrts%?ah!tQ0=~@jc?s%W;aTM!g8tBYxZ+P(V6O3AO;v)LJITw>7&m6H z2cHc5Jn=*9ep^0~h38dz?ubs$IM@3tMLjlDx{s>i2|>%`%qc>_srVG-(* z^fyA)))T8ZG(H}-gck#YqevnCnK4o~;u13|Puq1o zop}9-1PE@>0{_y$v2d@CXu&l?M+C6m?(2yS`}RT z72tVWs(>#}9jIHJtVV>n(@7OETnIp{V#+cV)6wZ4F4~DmE6~6kGDgYn59Gh5k0w`d z7W5ZA%AU3NyntBbA1b*pHivh0zLZw+{t-OOsnl=#0e&lM+HUfaxk(TMfV4~gYjfY$ z{-v{9y3&_9g3wG3nZX;5O~rp2&^MB)4A$1!v zgg-d6g}|rM`h24^J+JFy!&U2qqSA}_qg=d10D|MDVYu>H9DPI0yxV1eny36wN)S`F zpK!%GMWV7&8&L)s5d3sQa&#`qa=K^mebusb-Hor-X_s4bv$C$T!4azG^z z{CPKu0zYRv4r0WAbyL;VG#MeD;`*U-d7DENgX_Ib4NuqsUXWh|VY8Pw7&#NKUx~>n z^gQkW_h5rLxw2Jjy)Fhhw+Yk!`g92gd&;km0saq9 zVf73p16n=1DR`ljMB}47349YI(U96vmhiYj-|n!Bl{U&8xXY`rEB`{ZfWg^NLO0b; zt7@a_WXZZDfpvy;K9h6SARW5O%*>^k#cJX#lDU2>N)w$Yd;VlCmfe42+`aP?(>UEC z&!~yw{Vwm=FWv;#)2R(tf*gCYFPO*DuB^3`Qfe(Sn&zCEBTDN@euksi=zKQ@C2(Qt zvL3!_HK6~UO?AVvR*o^4j25Mv6&Hx?)YL3#o4#r5qkFXz5)p%VdM7H8AIE|eB~Bn3 z7K&kKJ;lxG+992aNBuG>#-l)?seY4V`X_I8MD6iD3$afe$`-ev*xDLhi%B3Ep( zI*5i121%Q|Q&oS6YwUCVprJ6}iK8O-*23oDpg%;%NJI^dk>R0`VqIV4Tq%7p4_B2y zQtyN>E~A4Pu5-vqJxzWOsXt+$h3>pJ%^|0cYKcpZYIbi)@lxIQvX5z4z#_o4KO_)T znd`9~Z)J$0J}QvcF?dahlk@us{-{AMPlbICs3LgCq{)&kv8`G#BqdpVSKWh zS1w#FW7~RiaD4NBEFWf!FWRel^#!LU3IgoD>ta#;{RPC0N!gU?L|0<($X)k2DZ;v@Dk(ZTywS zoEGN1Ug}H^#&E)l*LHG>;vhmV^t7*L=pP=pwN%V3709&X&8n)ZVhix6oK-IT##?S2 zV8AKDaKGEJ1V$FedV5Ycz|A9OH2VIaqi|hv*Dszwdv^jsP+UiC*-jC?X_4oKC^_J# z6F}SieVp|~x^s)3eIvPwmlp*cN5CyyMMqiN2x<#VB@I%=+VE8Zg{JCutdjt~g-wi*GQ`e>j5ag#yX(2-6s0s?9)vrORrUv}+?qmf~1PPCB0 z&hl+k(=b(4_3QA7L5xhr6kfKs0ERNmbOeI5DKw>vZzX$t%T5}Ln79CTeas(I;TiJk z1d_U`B@Og!Ie8{EIipPrB;qmgbE`7D@Rd}pPJw&8*2WEN6!m764nc`#f1FzsCz+w* zqO0tHQKdFCz9~9!y=<^58Am=EhfBu67|*{r0G|ML7`6rViuHI4*Kmz@$l;LSaqyRq z&2FBpaBn;sK$H;?0M}@a19bG6N&@FFq*E`KEG#|SbOb{Etch~PwohC3Bm{x z4((qon6n1ogt80m@;z2dDj!@&Wf~9>BI2MR43#vrKje7F_h6ucTIg?@*AGMa(j&7hA2J#R63A#4S0y(!An<#pa}v}8T%2AY_Mj(n8w4+I2;^!Mf1cc zEQBuSO1eoadRZ)*GEFR|QJfM@ofX;VrrR+1^ZDSTibRE2$f>Iqd7>!0qqs@}y)*B& z*SabJ<7XEX<0)H~gchwpU}Gb@mvJnD#cjX65Gu8lUJ|^mnn=&{{rB)6U${jR3R|-c zj|yanGaX#E3u@7_Em=2cz*!>oFUJo9ze_Kn8;MPs&yi8DC(YWa__1-cS3Az%K7uBkz&L&wxYGXsWnx=6Gem?;WW@{>7^MhycU z1&vDW;dKA%^whRNCp#x6Cz~aP!z%Z{T(=l5RW;8|Gymfn4^pd?Bhzs4#6?dgX)tRS zFv7+yp4fdSe-t-6o|%i^q$7ua3}8y zocexw?eJMS8*wsIu&OFU00un5d==L|9JkCAt^lV>CthjXP#pSIQW*nwx84 z-%e)4{jKP_q(Wor2SvLX_m`TQuNlND0jg(GP%olL3`b#dI6DlxIlB!Iq-5!cC4o>$ zAwWcjj?($9p2SXe8o#ucW5Xa=RljK4l4=Fv%jM;3F<{pTP*@^P|vOLQH~1~cE30J{eO!1 z@cu0PxrG12mZ!zV>XE-x4L*tM))$OHGU+I#2FF`VL&-L#sg zR;!7?yn{4Cp$p6LRsW!hOF8s35EZ^EQS30u_fhx*QGOpS^U78HJ7^{xmkiGDcgcu} z1BhBtKOj{Pv%ly5AQIf{pZC_xgf8UzX?m++VgKU+-PD+cyYYQ}@wJdcxq}9#p6kK+>FQC zjWbl7p}=HhY7Rk(KS7QHl-s?JFVh=suh*L*+ueRXWM%v#UbzVUK$;N3r>(~wp-TEg z0+%3s`DM{1&PW~cvPvduM#9wO){tahh+4INPa^jiFT4TQwfl`r!C%AQ7M zGY`};c);;VV^etfn%`yn(r(}_E}5?0Z0-=A3RdA7wt+}KgBdWI6}as+>D~*I)yABN zxD?xhFHIEbs6glpIzPK1PNptVBo;tngu@OR6UDun2wGA)3WPOXAIj|MQ@(mriwH8) zWIn4*ReafnWOmax6LAAh&_Q;r2;-G7_E7tyhuV|wz5bbr$DE7cNkj?@jG+Mz;56fB z5fQ)J=UaHk=H+GfqR+?Mp9tBR8APgUL_a!p3dwO9SEO@j@X(I2KKjG(~0S89Y!@_G6KqbPC_Dix!*^jFuph^ zEo3cK+l^EqrdhYp$ zg#o(h<0VN$HJPuCQEUAq%Ndq^w}sByOSnItch47h>o?9GW>$bk{OX#7YI6Ch#{=)> z?kyZT!@3fKZJ)YbIpV9#lw-#!{%OQHi8ATG(Rcv9E9ocir9Jv>IH;IOT*l;WCI^)y#9{cgR_d>veUKEwK z&`{(TCH8<IzSiSJ>1~T#Qh6+Yy>S7N77Ea-m}E~+6^Ew@OWW*&!9!Sdu)XQW zU&whALbGH0=^-u>P)WQ%2HL}^6{-2;L>IAumCc~A{AGYG<^+wrnTBZVqg$)_rugL``ko%YjU3A z{$tOq$@t>;4&ytkyv$Qs*8V#>fsn{K>I0|F*j?JDf6R)%=*@0w$?%-8lj@Si%9wsN;-EpfL$^iZ@C4ru|Ast&pc2z;Ao|3@0~dh;amhkxOpGtwbT9 z1cJi;!Q<@lb`1XhgCHTR6Q#&nVNd7F*V>!9Yw;z~M(;@^ zkkaDSIo!y<-RJfAd^?**G5YT(2S<@bLj~{PEU%y2()VUo0d2#nDlYf)krpA#o785M z5&}SICTT7t3V;T5Gjs&Ut;PYlx5W;H_pePgd}Zgy+;Jkhj7c7-S39f-{|L<{*B9O{ z`sS8ek&Sxge(vgu_&)~ca0ZPAI|lu6;wCFF8R-b8Dtps|;cMr@8U+|S_9rzZ+Y_3F zE&lP$9ND{f%^iU*{^O35nrsos>v5Smd&n6`<@`W%FRzf%i5v=+5skwOEZ|~_0$`yA zCrUV?A!jB64l^pKXjN2EIEt2jDNgC!LNLS8SWBnclydYbnkub{rA-8cKL@;?c^HZa zJ)LLW*U^xl!{-NG$aT^GGR{tv~nV}d4tVx0u9;lll@_ry1#K{nfeqh3l@sDXoXf};$wcI_V! zLD>tw6qd3aQnHbvZ=l{508dZPyF-sYA5YJEpr3F&Fp*YMQc@c7^B@s1VN4}(hMx!+ z>68m~BFoDYQCcL>RNA{=+}k68%DR$`TIU~5@lDl#HbInOoaT@+y_@CY@|bx)Ve}2f zQ&@S=NF@5~z3&W@8dyalDIhSc>=%e;z5bSX2F04vZ6#T1X-Yca zJmnQhxaMO+K*8&l-oXy~tWGjmthUQor zWn4@@02^6ZvQ_s#^V> zkho%cetvZFQT=ZLkBG4=nJ4C^eNg3qrbvDh4tWgct@pC+>@YxifL4na{> zGjFo2;)Xm0az+-tC}ydwQ+c$`S1#)i8`mhb+TPpcQ2jLT7W)_-#>P||=325;%rnX~ zGym5Y+31Jp&xVuqTf>z{qw@5R!6HDXoyakM=QxCPO(n*}VlN8l;=QZDu-C6|*YRUM z+iow8tJ|BKpMP!N`oTR?7x5-BqkOaZjMFf_(&Sa2#h;w@?Qz~l7SQfM3$g(YA8D|V zV(KKhsjo138T{-5(;W`yOr4Q1aOI;1f(J%0WJQPYy)GhHT@A;IX)GiKrtzzS(IWFf z74ht}D1;W+VDcs_+?p$Gu#y0yksNxcysel!8LbuZ{6VAFnhOFiE3*tZnO0XSnyJ!G zkOP?TA(uVX1u`}h&oYJ6o;RP36tjN@^Gj9iH#%}&kl0G4~Sc>)Y zIi7X&AR^=C{}yMLxjjW@l&fT=(@G%_{ISnY&BOZu2=y}&ZyEGuK2ocw7q!?v1i+Tnv zl3K1cwf}RiK}y`20U3aGB#SneB$WiCE1gaB zqSda_V-Do-+dVF>`glZ7T)P%n=@#qP$Ir*5MWGqOitO((&2XLxI!;4DsMorU4XvG; zV=r;dEn2d0*zWc7_LhSe|G2hcw6PvbnSveHBdmZ3f^M#r?~~t+#mK5NRSNJ<-!fqB zuZ8Ux8gG(!8nl zr3xHZW?6)tF1~GXcf=QpE6#`2_3YpGzA*`h3#S%mYXdhD{(alq0oO~$s~JW@-}M4nvQE<+!aun$5x-tz0@0Wo zIlyi0@4jW+@Wf3<_31=h;t@9%xHB|KXyO}*h={-&15RX-2_3dAC%@)fzQ*$&CxE@V zVr?=o)29QL5Y{zS>1d^Ry$mP?F8qv$#aG{M`jdnkJ07xDQ-yL-1@2>Y&;pEl?6+^h zo_u8C#-g;Y**y1aDIxI{|N0lp#WQu$VM2L(*@XTx2{3}{9ZCq=7(Wy|^k}5)NcrfM zKI){fn61`Whx(2iNt4?{}a|A+%NzS|CJ37lE|PQ zmn|-!SfZ71o=IcHE*wF?G7|h>AGay7Bli9!t1aXk_ECl#A9-K+#c%=L4L`xpo9(w< zoAwT2M?!RJe^Jl~P^8opuw<5t56cQqFFJ8+Q{P=C8k#i!UO%XaViwY%cW5g;L4}HE z#pJ_@1ctxSmN(C#zWke0_u5ls;S-g8*!#+FQA`s0*D1MVau+;>DZY;`-gnds_jlg| z=Ux3EGR-Cbpj=<@o400!g}qV4T!Kotl#+Z*OdjQi&cah^>8j_=@ z*>A@gJg>0FUm$1(6^zLJ`3Pd!@{9#d4Gc4jW|r-1dJRbUuZ84Y5OVd*%=@dQg^PC?vrnFkgRR^6&7jV0LAK z7l-$2ORqf+3ab#+S6XZt{u|)HS{{o>O(r943R^1c3*ufB;{5d99ef7W(-XW(!a6g3 zFRbqo-#B(r_*WhvlUUD~9#4>I^@IL(47qF>pyy4A#6KFeITtbTSbGxA3dgtbPkIzw zgIiRGFCoV`4ea)WVw6q;0J0iE-KK}M;#0E7@lAKi07XUx#6rZ(WQIr!Ck{)jksz1D zjX{3TER=W_GZp5>#QqdpL^|4wZc`w7VZlYXF$wnLz0mp_9K%mo64@8|a!w@G2o1u8 z08Q~%Jw#Sc~04mp&J&fBTn@QR}7BHRz$gE2A6wYwO_QHtr({EfX~=6fY9ZCjt`MXq}vXoSI?o zb@;AaZYP0zyc$hBK5;710vF?D=h?oE2GDdXoHxrzw{iCiH|FV6o^;iEbs0QigYe9S z{>OHHa*S@mp0fiTGjFJ(%6legWknPCE8^%^8jq;g&^AhVULBmgHuv+>$gtHo2Oah# zHW=m(;|STx&nrYiS7ESf-zB!Bjn;q$X8)ykOIE*{SwhaVk6oFftKuxDPg)y_QWNz% z<;t`SuLCf5^3ajm=Wj5+C23|7v{QJDSfIxVx<48Q1bEy%R7G?>pR->{Yzs;cc(MAi z;qke*yt&y@r;c405~;*(u)Ii5Ktss*j8vSA+b(75O-y7eIT4$=s~64CgU!K?Q#p+; z8hIjSSTRAb0~z*!RFlv6aRP|40H}iKl~#plmBHd_D*Dh??Vyiu6VOUSr$o`lnnQN{ zpxwYrHMxl)2&yCfPl7TM({q#b&f1esxHNz-4!%G_{&(rW_tQUjZFRAF-mnHS{m52R zqaK|tQ;h@_Fwr8S$|c4udUaqO{a|sIc#+m66T^~X9|?u%s8!Jk*9t5hSLky?M-ACuLc{OBJ2ejQIBt6BVy(oz``XED8^un6p7)giACykWIQ^gMd_&l%pb7 zxeWaG>gvy6gvadc_raGPGU~?4A%YI2l-iWo1Bi9Y;AN7d=clWoS&M7K%S_gQeoe;N z#F^ICq6ugv;!a(RJL^*B$l{;>A%m|kCz~~8cI#o3TC4!AsGZ#KCf(4}j$AuR-`Zc*YIJlpdiJ>DkhNbNQAWEUWDX03P5y~7l^v+3chXgl87B`VL5*Q`u^W$gNmXC7a=-wYV z%j5m@_ilIZ{>qkM+;GJQ3h9rZ4n-~wkMu@@a?>k31 zafoCYkGXS{%DgfgaSB@$nZQ-U%R_HpR34`(4R7iqbnnCk>j9Pr@ErZBUjW-9j32pc zUB0I;^vbPCis7J-l=RlUCvP^uXZ%KAXw4~0f=JaU%49qDYl%qkGcHdsJNxgQ=h~AS zKaaNe6z4ZM|L586rgJ2DjTVMRr+!7r__d(n7=|Fl5*UZ2e@I}=X>|lb$3Z&5sjgrrOc#YgLyA%#?KX1v~-7 zFD_bX#l?6uU<4I+g+K*#Zdp$DQXLZ@AZE`~h+^9x?jhaqaM|h$iyC4DM^#1x{nGvHkNa)-5MC zdMz<(e`19ZSG`@g+Q&n~f3KBO_$ogO9Z6CksE1tzeekCd_H~0Fb?1)oeeH;iE~*$m zIyKhn5vWo-Kh6y(AFj_MQ9wIMUwgEd9p>%ipl0FZ;vB+0kqAL6#<1QJcEeM_=}>!H z`nK-h0{={}X*M=f;qaj`U5!%LTA)GJTU1!%S5DqUI(KMgkOtUP4v|Ub7*fsDINlvd z^KLW&7>SOoymlLz}Ty~%?l3##A@&{*Wlof=tu{4$M4iua|c zZTm7L%#CDxi6MyX$MM(K!8T{b^}YlI5y2DInrnZ}X623RZ9O)4fBOIa1*OOgY-&nt ze-EWfnFqgdxy~B(F;RCeU+tm-6?fCf+?;%Ros+aSoONW*%H322N_RG%=x|rI}XWc92Kv#Z#jcP6FxJhg+qe#lV5M(ix?) z7EUu2WAJvt-Y6M z+_8+#hz(|?(Pb+)T^RY9f{5>qRT;KrDrFId_{E`6FaKM(W2VjFqR;!N6FWUp1!R!B z&jy}hC|;@FN?UsrA;Ek)rD%wGFe2aoBCK|fj^SL}hr4v^yqb2fY)w{;10Pg-_t%(g zRB;0-P}4*^v@<)xL=(DQpM$1K6>>^+Y=3Hq>o#*seJa?7V@&J|H8gUT$rr~kTL(@k z_|PEX#s_Dq+_W;hxhtgUUw}xwR}ZkFTb3%a9>3=*u*$t!JCs?QY`qJfU{PT3 zA=3n=p#cwAkbpJ5Uj)jVleLF;%HI_cjQ&Gm;xs8#nXgTqCjav4b9?v=ac`#Ae)`x!R-`a;~@c9M9&@ipFfa|bi6bza0% z?sjePHI>K+=E|=uG-(qiU0fpn;)V0{(JN?qZ0$0RLl}--MMSbTn46^w337wS=;bzj zTWk~1Sj~b>ey1O3+$7WFTb@g-qEHA>k_lQgt^Z({0FG0mA%rlSD+Ri9zo3fDd6m8g@kj62hG>#qRk2E*oJ~wkm|be_h$cL{LiPqL^1PnmA)R_ zl@^1D7m<)iD%lmcubU!RgDPEENE^rYV=-V>I!#$yA+(E(_yht*5H_fcKhBAsj)pD+ za(Rpp&EKhLGla=3taQH^yLSgKA4W&N!-Uocj1)(0h>mL(?>LtaoCWVHV*Kn=o%0PmAJhw;Nj6l4#_Qbp?Hy|o3>yF{V4u% z?InrI`vGwPjZ_c`k(N$D70>gxf-ZtF@@Tz_>-PQTPDt5I(mi}gCpd~TDMJb)o}J1F zEV+nGXQ35HLL&p>jO55SvA>7yr3ZcndgV`)5on64(iTn;vqyLE@}(~w_3&oLPZlUO z`KX-mt?g40cP1l38~v;dYA}D{3aAkc^6*=h6j9rKdWRyVDU+Ygh#DmtnV3xGwGuWs z*mEI{O_^0>?QB65S1xP2hKZ3#FUz5H$WvM=nyE47BZ5U9h+|B22KE`{o{qcQ>AY1% zF{h729LL2~e}-Ry)?%@n& z|4jA^?a51=Qgs}fiDb};roYw5|H5dednLudFAA+jLIhhI3G#;cnb@M?UJ-4U$-cFO+bG)}qUea3#fmS|hv`e81)=pB8Bj&QX3~diyMFsw72K-t&z6-xZ zD)lBOBIueJ=vBc`_pkZIv_FIoGYGm{QFZY3rud!tUK}caEI?GfdcB6j+ zWmDo4FbgOU9N1{VKO0Z~j0hM|a}s}eJ=E2$AasE0beC@Yy1K_~a#Z9qURdA_)HuQ_BfQ<<Xp zTxY5rzDBoUCk~2~O?W==?eE{VVV;s~AQD?w3nRAwW$Ce01>UTJ1y}W59XEKKuyoj& z-(_sPVy=-`HMzPylTHO3E|w{e?#&}NwaZ>|ABuO#KxC}9NbZ?HR5YB4ALuoBJ=luM zJ^N06JlFSa;DlVn^zB6#q*|8#UjJsZQP`?~&e2R8IlbqM#MWY$zMk24hvJY{Qod!B zXdvv>)(g8-g+25wfzVLM7vwMFqIBZcuy zNt=>vL;(1M-_fD)u-8^e2FnjanXz@I9J<-ckF?#cV{gM99L-a?%0qFdNIT@pV(pw< z0x|Obpw+T&QbxjhcGUelJi43jCS%oB4>O)I`1;nE)Jf?p(27hgBLBc~+H}^Z|J&yN z{;jS{-ahY8qx*-$T6cWZ6YDi!%%sRCMEj5Vg~+h`9* zfnZ!z8L+dHP%wjY4JitNT4He`2s=WsiRCIcga4K-R(9y)ENq&k9joT~H2LN7dlpmm zv!q)^UpV$D>o@eY=Rswz_@~RH0NEv$;q}7(>C4q@JvZ}+#V8;zpES>i1ugz2zbons zp2^=$V!da46tIgeRezYO9+c^*NvyCK+_4Lo zpCr^VoZ<~!#y*Bb2QCaT2U#{ZT}S{2NflQ;W6 zCf4sQ|IAy-kAA?T-nLSmAn*8cdDv^AzSTX0DIF%Mv>{^1Wu${Xrl;t+5%T(L^ab%y zH@ljZ)NM(5g#Q*^zy~~EukcQB=TZVIibrHQeKc`F3;)|a&8uU@nClzSD%nxG>rh@C8*&GFASOLs z&BdrJo+yH*tgIT-H4&RJOS~O#xS=#BS5n{%lW9~^X|iLcg}699z=c-3IwUe18n^Ue zhTk%d@qZQR&4z=B{}WsyW!iWpj68R<=YVnQF5hFYbhf7ZX>qdQwS;fQ|L)*y@8Hc2 zXRELNO*DiTXA$$|jmSlOot7CuLyeWWcxlex#c%zrvFYJ}t~~i}cw^`=MYi&I+gXRq z1!~~9#pN#Sy7lQU4)0)c$R^X)e7?EfzzNHgJM2pV4wa*qBwoKww&atox?#gmo;9rJ z^!=x@e=MRW$4<=?D$~!{D_Lqt2^fqfUfhxZ)|+UPN^5Z7w<7g#gnu#^6){M8j4bLf zls0!tNs5l*_s3(6e}|6KfK?ETX#_gFhJ)1wjWI=_?9Nz#mq}DpT9CN^N6WLqofsqvM9p_a7@d zwvI56TgmfEvh|pweo}9Ef7fy8L=erP0b7zwrX8~K%Y&s*I5SF(m>FXf6@7B96v1Uq zLgb@P@Ed)`BM1=jofI$p3hZAIVBK%uLs8HU!^~eVt^DrESAH4(B(52U{eI;cd0l>d zzhmQ8;MPH(oDi+5e#Z3{Ta=E0vgX|k5?X;N?QAV<3+OGywA#%Ckx~_9SLW&{ZeKEj zsXe)zTWe2|Rqi)%zWGXd2a;s-2$KA2hVfx;h0D>O9eTCbane>}T>m6j_lr3tMcI5zTj4H&P^Z60sn?nr>Cnsx zk4Dc@+IP)qGQqE`M$XN#Bwpp0g02b@uX@o-O;Z%|W2tG%CNTgF{`h;%M;N1g&&)AZ|M5AM`V_=3}8NDW+vXwrVV54%g=!zRw#x3l7s0>1v-pavn9xkRyYPjI{pk#FXF@79Md=2gk=qhg#1urue;a^g$aX z;R;9|>x#>v9A%sl@3y;SyFHk_q+ciBCpvqx)48(q@nf+5a2PkQf4I1W@M~QT7LmO^ z>P+xZpBz6GXyl@G_dAgN*mu$_7i}ZMMe>}PIt!N?U38}3)I!--s|hY{MCu|-LKnA) zQRn984bajI1vS}JdKmTtQ0Zo(1b)&}{&0;_%xwSsEZNn|{?5n?I?Q6~7XMOw^2$W! z*YeF)dV=Mntyl2-e0^dXdL4`UOdVo7XJID!Pe~yj&B?-&P3>2%pHNL9MA;K6EV2kx z=!NbxqxpN;-Xb3|_-4ebc@3xQl!uoS=b{8rq~NsN)2PVHzleaRy?=`?F$p~$WN38b zzHU}a9E+Nv7ta4ysAonzA1~Rym|OS64EM4_(@YRT&@heY3lnd3^)84I%MXB0be9to zofGzm$q@<*{ihjA4uaaU)gYEyTD9h1VHhLKUXmFubc}qo^q{eSe#rYVuj*v2{r$%3 z$D}9fs+xM66hP`m?r$O-gbtJ-5E2t00b)K+#{HMXxaxjw=kvWW-ZQh-Rf*saO@X-@ zsO_LbN9@zrb;&(CUW@WKEC)!3`;f{MCjG$5DBAY$Q0;}F8s8AYdOk9iMP_KQxX5tQ zdqX(><(BJ>`URhGGlL?f;yMFo{ow(Zig=+GCO4Z4RG-zX5cTI39WkpM49CV3`UmBu zAoaxA=fB4=Vtte}xnB;x`Pyv8-$9(PgDD~2d)Lt%)IlnRlyALYLOINBg;;+lFwSM| zN>zx+7zK@21EX+$w=&&eWGbi1eD2Xbp;Hl4(HJO}3j_jElF<@mrgL$0fvQRLj2wLE zfg~_wis>|cOJ*m%z-oplw0-9#BVUZLWV^nfcOtP$oEd}K3ll2&4~|eEajQP+myD4`Gtf!vbfP13nnL-ZfD$@cS6*n6vg^Nm! z$TK93mhh7i#89j--F(Mwfj!{n_vv)(pOCb3+*nWlxL43mv^o{dmj1aK(ifcm*V^fr zvu;|j8)}B`Q0&%!0Cz!%z62hAGHm&kJ%2UB5y{0~`+T<-otbmgn205g!i893#TvB7 zQ-4+2w21iX$VV?K!`s*%0^l`pm@ZzqveN@DEGo@RNzMAu2vZdTNY@G6 zwi(;swWf82=@4_5r6j1IgGQV@Z?t}RMg__A$9q&bNj>L;hX>V%{Si+!(eo; zS4y5=Bf|X^zuNb?EPhi^XaS`f$@)g{^V0V7<3DP(I$sC)6tq zn_im+)%92_?N#Ym5`OI3rL~L0;?3W7>DBa46#%cI%6TNVygey?KF!V2MKaKg&{vCp z%}5oSsTLAezOb8|HKihLx@cuvmPhmANJO4k6av{R1Ha0bT_sl;i>=ym)5rmCLDv^F z8=vI`-gFmh(BpRcZ~>D5GY`XXI2`Wo?)tvZ^Sq^Sk%mB)Pi9;j>0x7@1H7E{QH4{o zQQS)Av{p4H6}CR{VuM#rW~+AK9V>hZQDXR~hbAR~5AO7-}zue#7cU?!$sm#+f zeHQQj4H{wGdV7nor}#hvZ1udPP_kh`v>9WrQc$Zv=!WF*>ZRE*M)HYjH)MmXtU*h2 z*EDF2D6c|`6}`f*wk9W=;Q=ua5;N6TP+SdQR3V{K*%WJuxJ231!{3}jmZnujgfKhe zUs^|%zlxiTor-&v^B7U-s(IQ<#Rc5#3;C}rLOZy^SAb8OGpXrfu*M&@ZgY6u?yWp6 zucN`(OV)3tl*ozz8-j{9Oee_TuiAXx^f{0uGp7i-6j{r!<{a~$2^}`m_3Rw+te}}M zpmorvW!FF?bk2++i>ikjg5&3fkMNuS%4le7fu&cLsI(_=lY{n>UCFIh=W09ja)Hzy z(u-fBNJ?q4K(!Q8iprENnKcy~{tTSL8U;WSn*gvG=sUNWqQ8LIZUD17d{Pk`P>2W+ zZ;@nJ(Kad*c(dfzr)$LvE;K)7ytb(u%h*ger4!sx>D-zdUt}ER7Qukw)*5It^DiJa zeumtl4R@seMKR_!ETVsF2h=ihwY52fwcl|itCuE@>Ziy%geW8-Nd&-v%xv)-#^p2g z)^f)Q*?aH1-VZxwe)HzdfBn~g{pqiNJKTSj8w92os4hR175^{R`MYb+cd`=^CbJ=#T~QVQm=n55l*&LcZHLe1{;!P?=)&&m))`<3v(z#Q5hWvgb*ibGD__x{ zb_9TBGEAB7vr?&uk_w8F3L`NRaYCsQDRZeW0C0@sI3j!H5!`8-rWoTmjvhc%=Q%mX zFIs88we3KXr7<=U-8G`4P%jc()0S=y)yu8nvuI~~=GQW^j#6?2MT_v2Wn{-a0W&ip zn5o{{Tum2UIEoqO=C}pTBYeoBt^|mh<}{OdXMTRnn8`T}V^2f~mnnC1BNdS>6o{Cb zfw>3*2wFx}9+Km-0?QsJHs>ZHQ5Atwvn-KhsI@lX4YmRos=M4tG_8J3VJjn2T<7Y* z#v-)p?NuZjXRjFHl}JmM(0bWoJOE@Ho;odBdHb?x49-X<#V1Mr|OO>+`bOD)QW0W-}>KYaLrkI!Fy^ZT!V z|8IA9cdd^LGrti1@>?zhmSfUPsj$)W>sl7~GF{=S@aQ!OB)2$^SL`3wVQY1qY-m54 zd9!oYvA4d<=KZ9Q$9Pm8av~rC=g8-!&UxP`2bIm?ZQNTdK(2%rZ}u;wn^jESLj?@^ zE<_z0#WlO<1$^9I4Y|SM+_Jt)=s1=P(yQ#TORdQ5=ap;mz5Y)OkXCl@h)7IQLBU)} zS<`I|W8D=|N!B5PPz*&t*@zlTZ&H_ZJ(jC>8<7;!wW&l_tgxm$w~yJPBfGGY2XVs2 z)UvSgwl|D1p3i5+d3QJ6-`|^Ij5&O0@ecWy{%Wq0Iy9r3oZF`Gie|n>M7>}d`$DU~ zIl*3D{BTh?*dtO9J7#u5iK|ONL6wS=FV=WwoBcAWEq*2>&W;<-x!`?`)^x-bFc-11 zFjekqrUodOsU#yIk#5IyEoZCr-j%Uy8_(7O-ky5e(i1c`0pxXAu3G)pKUj5v>o?f@ z%d)U?F9a^Hed*ZC>!RY^wB(Gecrqa%F?vTd@IgYM^XpPG=-dJW_ zFi3j2PTP>N%Q$06?6xPipnw1uPEwcdt}j=l>)m`o=`8HH#-C+`Y$fu!9Mim{Z>u>4 z70JkBd;!5GO;qz6pfWhkI%3?i>$ARFz?{@lk|-%k5>2A9+9)s*BQRPhW9jcu>u)io zh&d4v(J%~sAEM|lW@hzEeUZC`x?d1c=>_*PyvnHkl8#6>J{)azx(yUUW)h;+kXf;P zp;DfSfoj+&;4ItUmovTt2HuWN4e$*Bwobk_dJ!+br{HtuxU#g5eSiDYKY@oPu zf~gjw(3(Yr4YT#;(3BQK^=u$$@dPbw@oMLZcHmHXY}(8Ppt^A`6lt<|Q97J*xwKr= zQbZ6SRCaLn{Ho#{L`c#+IV&Ss`zQpOKw#-1v=Ri%M8Ft_DhX9ru`WqPF%uS`Xh4}c zuv1A`mc2?Y7?_zIr^C-7C`tu7R&th5|32C$FtcAOk;T z-UY2;4iOV!Dvv}L1(%DQut+&o1?+#tX$JrhV_=5+4r>Cb6A3mJVXN622`ByLaH<-O!Rf(X8FRxY9 zCX5kYRQP??WAFv7;;J~brmk?d5kXZSd9UaNXCr{XV- znen&zOv}WuAuX=|!}7`qD~WNIfx?>Jd!3!7nPmrN!j|)`p*i;3PBi;=F2_C?gXqI~Lj@B2PXzCB26bJhNd!ms0BXy;Y6?nLBM=6?Q}s>MFXckcx?Fk_VYb02WwI5iS;U zb%vme4r^n%V%vAybysV%yzgw(zMmsm5aZ?IUl(_*Di!~;8m;sidC*{=mDIWe$b&k# zjNU%23Lo03#G3#dK*KkW-1JQV5An3231@giLwH1_+qIGjOgcn5^Jn zCNuM}=Nc#vAy82$<>x(bRrbM&%oNZll?X&!7D+0xA669SR=i+gs$$E72sGtV%;bnTb)-tP*W6%78!3W_3&=q^O8i}gi9|I)R1`?F%u%KkXUPr%BoQ|uSJy7EUaz%&8z>(js99HEqxb%_q=IcN zE&3XQ@YNc+1Rv@SXFc#JsN;(DB|fA^iDkE6+JJn;0uZkTC^h+`xXEeC|D@}f z>*dV=lm z6J7N$*aS43eR8dJWI03NC#i5s&de3i`?9frDe`gi3KcE4(Y^OEP1~U23i1~?zg_&h zuHW^;t`D7ej*BF4^Xn|VRRKLAWTLR4>8cn7@-wCgKvBRvLowTXw*SxKfZW0o7im~Y z@&HWBet1EtEKgX|twBTn-}V9qqP4i!h7ovm5U|=l5N=U3S6R{RXlA_{7CXabJ7WMP zxQ5GGi-3Tb09aL$iYkaeN-83l(mcm`o;8UDtLJ1y0ZFzeuXsl)*wXbg{E6tnTc$HJ zqgi>X62N3ANzM;O`vE|XF}{2E;qBYEr_(8=Q~%X*!ZgeG)E zYBaez1u&}1rh0F-^KG1a%TRd1aN)B;jLQGD(Swos%{ai;S>1gAKr!cG)xT&ue}uJ3 zgS1>m22H9cLUY1#miau#7^%=T;*AIR0j+k>}eMP;4 z$ObwZ&}aeM07zm1kuuAaUBmML(mChYyDlJkbuKY8IY!5Um<8FnjQQmh&O!=6%9wa= z;I;Gu4RL6(q=nY_u|3txWOOqxz*`A0SD78Hnz*nJZl=DM=o@NRc(b!Fb{(zErf~iZ zAGPwt5PKB?i5jDf26f@T@ z1d=qF@1LlE00Ohy?RGv2xOo&EWx{w-R6^E4W*evC6I<<{UVFy=CXf9B;^=bnTeJLv zH|tNk?5}=Rc%P)U2HI`_stKENSCbeGdmP7ko;{;;oIy9r2_L5B$D*ir&V>;6{m}W~ z99Nk=B51WH2Ld2Vg|;eR^72FZ|EYVkE;)`XP4F&e=1WAbKms5ok}9dI`kbEa|Nn;R znuqB#)zhs~l|~{70z_`HxVtU)-gz+h$jAghLM&3HiU%A3xrV!6yW6)IX))D2rIb>N zIhCRng<6$Gy!Xzz&}y~)V(*w49eXcLXY9)I43RA^pimUw);<>5l;DFv|WB z>2CYzy8cQ2|DolJK7M*s)(wo=K0Nv=A28> z7~{N-$vMVx7{+m&q!f**X5f;NmJ9%n(GyQoYTMBIP-Q~h!s7x)1>?CX1XV*oFeC#{ z%%SlP1YJ^#fMc90PI1l>^$#Nekn+eH;E?>m{zDf0?^keeaOwTngYs|u89%&i{G{)2 z^vuy>DVuZN-QT}^_wN4ob{zMTvUv70HE>bXS6Gz#5WvWB<9*+Dbp~H)pH=!|CeIMn zG4`@*00A*WLI(i0;LBr-yJ0`WSZWb}(Q>G4IQ*PMr2}QD_~em$q;}Tv2oD0ZJRSA9rj8~ROb>pep}I>G_Wr zK<<}2T|T|wpC>{G(ihGEE46cN?t{n6B+s{{Z>^4>R1 z114sb$gFGx_&8Jy4G@r2wP*#6;-UKxktyb3%)4QXIalo&7r+n=Q2~;vC>uCH5ko9m zQ~-c|3L%K0Av+)haW2dj#7pP@K0g0r;Jgp3Bp&g5ewfVjlp2oRMXw8=}+X-ZYe zt5zldp~L?DW8FQrRXpBOj3AAc>X_?*H zY0=d`%)^&wdPZ)TnP*3U&bbPNuhU{?p2@rhj0A*cD3v@eR#XtE1~4L~l!lmME@DvU z$c8M2SqvG>h?O!LmW+iR5hCUyNCu9rLT;P~B12Lzt@ZG-e>xV5JIpLTu!sLpb#}C= zc?8J&fJEZsYySRD^n-rkSc(2e>jQg`Zo^JgOAr0VhKxYm8YHN-5(w4#T+H z?Mo>+NiDXQW?QOq4!eNJs0>mHK*_PvI~5JYkW59hWg;Ri-Z>xuPr%5;1W<~qY9;+u z$AKOee^!;CmuFG>|6Aa%3&sx&B)M)v45TInX1+yP<>Dq{icUUt>}Jh7A#!Ay|3*RRo}f$V9=p#=GM()yxVg889&*s-c<{DJhj$a!yi8 zIrR23pP#Ura51@q%?T0-psJY^)I3k>yaP}LYnsLoz;PDIGd`S{x$Y@*k^1TN(++vo zAL$D`y4m=tSM>?!`a_}#__1-|lVt%sXeiFb|3bV61U>)(=Xq-tQNjmfRna=ei?!R| z?}p80Hw?qDANTwHFbpY`!$&K_uWs6yd7RKW7lL=r5t^s~0C^`OrY5E;R^ff6NGZig z9Z~1Py6gMgH%-H}8^D9Kw;_>Zu45O*nCGiqdU?E4AQbB7Ljorr)fHbef?8J4plKTqs9CJ#k_MauI9G-7>&bct7{pO5;YG9?*6=2EvP&Xo3 zD#d%h8-{MbYnrBM8fMSTZQHhOTZJNPi5pXBQd4OpAq3y{b4_05<_;Tsd~YLT4}wDP z4{JYhc5o=5Dz<-KcN{xXKRhIM0O|n%5!76LK=?B=0n{cr#gbBr%d5`qx7+Rg{rxZu z!!Yjm`#4UEPKO~PI7T(mTwbwy~9Ot!&GxhHDj16I>sY~Jb(vj4mJP;&)gz5 zJ~(2s2k6^_Eqt{iRY^ssDUETO#xzydU@?OtB6Cg#@=K|2T0Nd-s&D;g-9*g&FcBiA zk`Zw??EN+@2au~ZZPU!5UZ28xGzhNy5Di)N|X>ccSX_xs&$H;%Iy<}^*)?RIy+nWmUhnx-k|3_4dj zH5vg`Wf`!k0-{PT1&Dyr!HnNo7dA8RiPDTi*E0NZ$jI)P1BT=Q&EJ!z@?gOW@7y8N&Y8mgde3|bsy|4Kc4m# zfPd-_dob1biw?^N{?|g@jxi3q{Wy;G4#5H5`JPiM13KpdbL)dAK9E3lasF7Co+@T3 zr7=$XG3H!yDMd_F)XIZ#Dj9<_Gl5c)7L}YuL>9rY+Fc*{TM(8~#5CpvdqBstt?&^! zyjlZ$?`tj4G|hUwK07(hIj{P4+qU(ib5sDRC_Gj2hmYeX9|=xA@q~mA$uX!th+aGa z4jf)bX0?W9ZmGNwQ3ZB!*lxGm?KY*f-|z45?>C#xe!tJTsA@`azu(t?T9Kutf+~+$ zM}1X=vx=s;T5CD>-aB6}vd-|T#U^Ctag!r5Ca*{pPcWriR0~QLXJ+eO`nGe^hj0h5dZJD63c1(a2BXQDP0_Ca-^m)mz*URP{5ST3~lg?!TH*?&1x2l26Sav107h@4=%<;1pLr1d}4ikJn8-= z;{Qjx{UYSt$^U@&_>>0exXe0~ddK+I!%%wm$zJfh zRrCW99TMXs)h&38X%~@{%9Qdj4Ez0^;xWt;Z9!x1rq}CwQG}T669LHMJOwZ!^c-FRU-}kE8wr!ORd|dK9h59_k z>f#fRtsm82sH2sKuX@bqKQ>KSs(_^g7bvBql=hqL-QC^0ckiZY+H5v=clX=vwgUJ7 z5zw^A!=jPsuBhgN0vx=e4<|hbh zLPp02OJ#2?)HL|fna3m32wB|n;E28o558&!aHLTM%GG7XP;~ZYMX6?Oj1&mWaR{MV zo%;2Kb!R-?q5*-i7z08r0_)7OKrq)BHHs}_KxGuJds;>yC#GX8!!%B*OeyY${dPYV zmC8-6B|{)`&UxQ>;u;kxmD;{4Kp^(5_ud~IzClq{3y5=;6$&g)QiLKx3blD&-Z3Fs zEqzr>jF4l>G3~dz&CT7-+jr;Z7pv9k{N(iN>gw|HdE2%`;JtSZ0i!M}K2@D1{bnWH z0|^JLJn9dRs%3mKC|SA{w*ZLBC^nRN~I+eR(&o`DOK1-n&LRdo12@rZ{J?u z+}z*a-`?Kt#v$iY7O@@Qgr;fM>yrw|^WF#VKs4t}h@QA>+P?3b5SpfG+qMO+3S6b6 zTw>0d9k*>)51f>eh%meQ%RA>-$;iey-6HM4N=arWIpqNpxrrhGg+|*In}ZIdv;)NG zP*e~t6Dm?+awjML;xwE#jN=H~p|H0Cj9tdemAPp^rf2|!x@fZ4GUX!UY7;2@^u(YK zHfZ*N85w?{ny?Sjv461QesuSVZKi)!BKltw+xx*Im)R~hau&OdX8j?Lg^}tEudO4 z{5ETQR}G&cGNt`?yWQOHcDvm)jwz-4`}^zb>%05=+S?~7bx&V^fu@=Duq(RRF?sLF zfSH5$fnDQ6y|YB%iM7-lJhQf)qo!%Pt_8w6;RgWkLwz<7F`!RUhH1~ihv3I?52^&# zIDZJ6lnQVX(>Uc6%QU57oKg|wCN%xo#j~bg{p!mvU%dRRKRrRBtU}0!Se3qE@&8=( zC5`Zb8#i}A1`MG1G#2P_5&k$~{*_jPhsVJEgfIIy6fO$(9zY78;0TSEoCCASB`yKsO&md-1U`x@xI~3D@f&YG#a9fw3j!+nf8>uV24?`*ye8RwPV}akJUPlwyo# z*0ycicHVniRrCeYfiN+f7P|)EEpDiQMc#W~8Di$=&t+?dEWI;l(1^g0fXQ({L~@J6 z*Fmh$g__vw|0qBR`#DscSA`Hl-}hb9I_CgLq>nKYpyVRCfHMYE)h4u6sm{#C{V?qI z+xtyPxoH{`tskltiZiP^VYF!JA16_4Zt@qxuvm!|( zrBre*r4&hKrdkmBnDXdmvSw518zPo9BN4J^=bEMw>4->j_UstY1hOa-s8P&1MIj8q z_gOe<%0}2UXIIa!e)X&8FJJVhXWX>p!mLU70des|5;EypC0_P z=FHKm|H(g>RPmu+<;Q=K_aV-6sy~8^&5>WX@b>uI&U*RAXl7JRn^XaSy$fCIn~s2a zF_17dBtla-@{>2xdjIOU@gQ-V7j$rS@2VsBuIqw(DEqzViVBws_YpAzAoQ+zu#R3L zpP8NSeA_gQKO7BHIy*ZZcc;4=56-!+X=ZD1n@!-?UB7C(x(v@bmsFf{Ip=X4OD@AO zTwh-k(R#h^`nE{UB{gl=b)9dUdQ_qJ#}yqSFSks86!v#K{?t;AzDkj1TSV2e=;qAN zMqPvCTvQDW5y%wc%)re+$n1zHu&>{k2%F%YbBwc(AOn&CRs6k_loBCIE)h{uj&am# zxihl>3jjFB(=^qk;IUuGY|fKK4MnnmDM(QPWcIFBMob|?Q3cP9paTx;v&$2-)!DNG zIH_iUtIs}v_VU&G*|YWK<@xigi_6Ql?~rN9e+wag0S2JW<bgHFT;)OHjPy3Cs@2n0c|m1Aw~q0aX(|6uiv-eP8Y8Cu5Ut6tCQU}a|RV&!~n#LInx7+P@o6T;w%PGBk`!>gT zc6QeE?aA^YLS|0O#n*>@J0I+HkUq%Wc-ruzJ?;}s&4h@UYE5BAUPS7gR@F*TDXI!x z(>}Yn1hw^gz1eIkbkBRQV7$yDOf*@lhZGrD5d%PGb(LU)0I=O|hy5NA8G!*yDPZQD z16Tw+0RSu|DWwd%UA<^|h7yene6XmYB81kjPWsTb07eACx!@W#RY2D^*fbD)zgl+} z&tI+o*S7CM-y6Gqj>_DwSLArTI(_-_<%<_Dn7yi1$*_l$lyDvZRd2YZWPP~2M>dl` zTK0dU=k?F-7vw%YhJUo@|B?5Ak027q%fI82iI&~M9BGRbV|D390JX&4txndLSI;kQ zt~rlezT4fEGG$fu>=02T!@SgcDuzGrcz_YrGZ*jc1M0nRny&BrzG-WAVrJ(FaE1mu z7Z$t+t7^=p;(HGHe^&BxbJu|Gfjx4pGhLx?B^HMA7%&57mUF4eUsZRzU7eX-Utize z-d1d^b1W&(pCh6wkRdG|vh3U;{+G9`A0zOo7%aluha2abrs|iQ381NJj#G@0h{kb@ zLrhgxD;5z$MCVAgUcIL4x)@`%xUcA(+V6;zdWAXoS~w7qn{nCboMXU}vzdTe-Te7w z7eEW1ug2E_#ydmtL^KPCGN3tUhGQS&r5mqF)T+jgOA)@we5VoIq# z>#twG{?niS6k}YiR(;=9*k9e;lv0S45K1Y`?3UF7EqIlK2X$RlA8Z1Seb5%iVkDwa zG4zfQQM3%Z{bn31XlHv@G5KR0Q;fM@xAnTO5ni#jZQHI^tFyDS&^8Co1@i;Ws*bzs z|ErdY=TQ-nJkS3CsUF{=h^S~Hq6^8t4m&DdXodpgxG_{y+ZruYUKt{TO#DzG(q5bggf~q5@hp7b@lYn{TIS zVjqy4Z`y9PX4lpqt%#;pUH%^Xi{bkj{{8XFF1=h^8WHD#c9Ed+&nB!wj*i?uFpJuc_&fw^bF8 zZ3Lo7H1h-MTnHhAmYJJX3jiri z=_20U+}`FwfLf%ASP)T4iJ1YBaz@8y{y-Bt1pf>Qvc&`AvBFM%-FM#(yWM^_?smJoyZdoJ#F$emb$*d^?EAhRj^6vajJUYCXu1{`@ZxeI z>xd4Ilndm*?@}#we+Hp!KE zQT#OIVj8F1_iNa0&T=l^oqzu7^u-GrMv#Jtz@!3|Wx%FTvQF`4b3Y72oH7ui55DU! zE}jXU&H`<9`ByE87LX;`BjLj*+q+}o<0JpFpEBqBbT7<7DNaR9p;Apj0nLz^6#<#NZ`k`9{A~!KY1ljV-VxXBajN)GM4|zJ zYSLDihx}%cq|Bm}i`9&X9Z>58e=WFs(m4- znK>juQdKn)ky&y_O;yF@0Pdt&!k;RVvL3Zk=fTbaxuRf*iUjN?RZi1(oVIZswWuR? zWI#>Z645veo7>Iq?$%;#%<_IH)2KyK$%2I5ySC#T2OZbzb$_yUzHtQEP{C#^bTa{9 zz^ea*_SdfDKV_|O-2A%tEBq%#{&D{Q0gvbRExH%J_cBRVIOY;R22?&e0f}6eWNM9P zLISYhsbOQloJC53l583p#9v)qT`*jqoporM;;`S1Aac_3o%L)+A6w`XdZt$JoQnPu~x=L7SnQmtl;6U<{*P!qzciwq`O zMS2$CJ{l;XAsLy7fEs|!2QDC>)&n}L#2Ck1#vF@EZ9tSTs}TUSkaF3L)4RKyi<|44 zyW6|{b~o&~X^FuRPW#=z{LlaXhyVA#57)O|br%;A5nbNB^TAr6M1Ut}5=%a3;w* zM(?<(UTSIF-fXAsJ`Q`$CB`_6yI8V_K+c+`E`+nystZl(y3jTinUA7CJmvz!sH(sK zv|crBaNZEIh?SzIV~$aBmG{~(2RDoR)-;t;N-^ezl)fK^-EKGQ2GsBewt3*sz|?h% zGXyXZ0V#7JBIlc0kUQrpIB!OI$I{|T9g?Y{eQ-Q3 zdfX@>F|YxE)0s4_b%rXX5`?2@DjC$eu3M$mR8M^{Hb7I;8BbxN4#5#xO5175IsfTj z{_ubQU;p@rfBJuDiao&d^%~F5`}0c|JOU+vSkm6CZ0>xK&M^V5&d<>Yg32Sd#g6Hb z$=%6QMr6i`#QN{lqK#KGA<$CUf>T;EHp2oD_ z@6$Bpm~zfqw5n*5gVkzvetL0rb#;DnwqBnyvld&rcdiyAh%?tUG&36N*pCS)-H`#oMz+!V&aVXx0S!2Yk4rMF-aTiA%!6ny( z;C&O*SfLrJ;E=kmzgVAMo}R7Swr?6#ee>;i-+lMp_079~{-3}9Z~yiGjN7}fu3lcP z`d24sFE7u}Rx41;21&IAH|F&A_I_A@f7i5-MMc)nt{NXwbqZeCr3|=CsqN6?AKt>h zZzFJA+W&awf2tw(g9-fovBZ0eO?tfkn{{9pCpIuLRCJ!aqcrSy`}@4TfAhybee=)% z&%F1ym$!EpZ^zAj8g?it1eZ+S z+}_rG+c1s8FjN4^G)*ExfSq?PG!=VS6{HiUnc(Fb$9R-T7iK;$z7FgW(MXy690tse z1AFIOI0U~BP3?`d$^tH&6$UCyt?m@-xS^jFEpv?V;^KV2-%rCB(>PAke!sun-0ya~ zETyOp<8Hg#jpJBr2XgEKhY;+*I3%jUKdW2}al7577&RAFC736LS63J3r)Mu;UcGqn z>ebcD_4*Wz#&I-7gG#@zoMLdE>xS<^YoLmbRv7Q1>Qj3SS^}Wtay;1nfVYxr#TwO> z9vzVgD>`g`qUt>8Fu|Nl3vNKvtSzZ++s65w4wfa0F>@EXvwpp5TFm+F*IzeGyJ7$O zkKg?3pZ@jw`uf|i|Mce1e>`oQlfJn)U0+?EK0jFppqR!SGpL~!n36@CzQ5kMfM&jF z*C%JL>C~Vuk?Pi05ec-8v;@{hZY3dXLzU)A}@s?5kp zWI7GoH-G-q?(KIsU;i1V@v?3E)e6jVEb~PDOl~3Nm}87-U$h7s&gL8^r%ls+cJ%^P zD935sUEjR9xw-k{*MFX-sqTuZK3`qAt-9{{<+ERZ_W9-6sYjBOB^N-Itg2dSv82n6 z8eMRHUhI>vYl2zLg6H+Vy8kDo}A_qV@ks?thcArG!>O3>Hhxg=Jxj8yLY?&X3Aq3XC(ZXWBqZ55UH`0lT6bz z?^l2runEn2-M@PE>WeRb_59h3lasT)@0mOrwGEb1LmPpqKepTL?%nOXo9l5Lce@P(teVhy?mX3*e@tn& z+3xp463t>`oQziaZkPLA>{n^GL(zsQi*S`&J0Mo)sFzRg`4u0g;J+vx_%M}okEnuR zA57yP(+~ULcmJ@e{09#UJ-7!M>P#OM5$8OB8fcovoA2M=zW!#syLBm_uv<3))X290 zFs7&iAaS5UbHT+vqQX3xTv#_9yOzm;jQdTN^zP<*H|%e3Z&ON5(re4f!nUO)L{**Zw z6%@pILSPdCH6m&ne|mn>_09SD`NhRW->=)Yl`^l>o2D%(W)o)gjs+Az=MBFdZmu4n z6;HrR6~b6bu|*}FRR11-F!KKzWB;Q7cgGlMG|&Ur-yT#A^h2tz_6c%A z75#QN%ob~>WvW1xV57@02aK$E4PG>rve`{t{n=Rv!8zK#@nd(r!PVQ{a6e3?lr=E{q?kOr zHZ-Sw*E%FgD9MVHIG`q!f;zSyMFb2S1_tL4*$Nvo5vWNn;Hb{2nR&{Fn0bio9D7%@ zf%hKRdG9@WW_ILp@f4b6NESw_ff{I$Vo;rJu|j04m$YMqmRxZz8?pL;CFN>yvk#$X z&cp8R?e{Hl%45@owr$qDTF^=a0ECXnRr9IZT*MeRclXu7w&CVtb=8NHlm4{tdjJs3 zuHjNLAc8O6L0~2ZC)H0ykiZiI6fl@QM?r~5BnNhu6dY`~TS-}prWhwy5dkSsYbdH~ zKdQhdE21S!jwMGEAyB0if}){`X;Cx*5+igL%sVkvGXWC?R`A{zP*7nE4TXk6U@nXq zO4CtjQDnp^5o6qxY~aX-A|*{ZMvYT2TyxujC*hoAf+Py+oO#D!-ZvCHdurHxOtjzY z7y)1ei>QjqYAC8`KqvrK{o<6Lg5o|DDIZMu_G3rJr$Gbo&}6A9(u2^;gOv3GzFBGm z{mb?Ce^M#(q#S6x4@ha;+`V~w{rb)Bexp;eT&6LL?IN=G&1$_~wXI`^$i_&GZ&zpP z_->eXo9&x7Z#Ki2M0`^Rseq<@qvm*R%(%&I7W2rtRgql4NF3<7NgacB{T^+q>=kx8Hs{rP#LZix7>FGsJ7$_m7Fh}*AajM)5K{GSe}rPHvq=N0G)B>ESuvyc z!TY`qAq384x7#uEXj)IwI%^nH1Swvj@B6dUa~C}Orj&9oW=cR@#mG}iK9`T!TKtXn z`-hWan%SU zQ!PbpR_rGU z;MdI9vTuV6&U;6$61^M+GcudCn+XnpUqz(ZA`BduXJmG#>(zR_u9jhqck8}iuh(7E z`ZzHHsFW0?`iM-^)HE#f)e}Rtva6l;JY_gK1uCWWP}iKDpMCY!SO4%2|ImeQ z-qMj{W?)yfgX_k@%+`JX`Kwos=-Y4cn{U3^4!dH4j@q`#IU%BIK{N$$Xh>iJ0EYE` zsA2Urlwt}M$s1D~hT-Ps?(Y8n+i$;{rYVFbrF3(1GmhhS9I77S+388sG-|LN$D6y2 zsiM(N)6)vB^q$+$bY171OO7iI(GiH39q_1(wX^}oV4@`GDLGyqi;(Uc(-%)%l)GgVNUCon21 z!!S^2+Evfak#}*NQi>J+AIJS9DqwG4e|vs@`r_gOPFE#IQt@2H9;>z|+fpCa9hLXq zc^3%V(6B+p`5bC*6gMt{4Y7vmCM{r;S9d1)y z;MF(c9QA#FadGkN*)!H<(9cy!YnBgVq60(b6^;%B8xYRMY@_ryy1;jfF*y1OXgzQBe^vi{o^6bHCYaw)eXjqan3@U%-YGZ#Ub!%?8QN@%+S2kl0WQ zU=kfubYi|SYFocPJ$-(ar;%^(!#E7PT^wRH?`}dkT}3%LQ7|=YmMr3k0Kq`P0U~x+~1+387L&^phaU9FgWDu+t&7}82a-ZxFtpku8tRYNfY(Q5d4V5Wd7 zle5L-zDoN2Ex!(rjf2N>j(^qi<30Fb?cb^hKZueD8<>G}zHNeY#E7OCOBv!crMTH_ zylUv$TJMF%dCx>hYIz!m{r3L)-Jk#TFQ@A@0GLQs(Wnxd07^gxv{-0#Ap{4;3MOi3 zNRAP~Or?tO>Y}<=#r8_dl5&}H+3oj3OlHXJo31~-IBS|_N>LEu<~BJ0Lk@ zr-Y&k$VmzXe|mQI?8Q}JXIh5ce%cS$Z@&i>@40Cj03t!%zC@6^a#Zy|U=Li$_r*D9 z4HByUWd@=KpoC_?%vj+G%bvByKM{DIm1>7+-0ZfS-F9`dc8(Ck0k0-tvlI#{S=IRw z6+CcS5CBBuFy7u?-`w1#EPda%{p$Sk0&cFs`J|GipkgT{maNmL3c08eB0FOS=eTM5 z)3dA3K3CNtWlwNTw7a_((^xW?O-yyQQAf@p1Ozai@yn1E5v3&45(w9AqpD}C{7;<5WakbcLqz%ud-(qB z$$u{UA9>w;WY724f*hid8jvn*JkQRDhRL6tu0wFDT8jE2HilU8Fh&6Dq;P1Qa}FtZ z?z_e!PB9L<&70TX?6-Ga({^oeNGQcS=Nw6%jUuXI#A>xZIXP(^qZE{aRbv`ab*7Y6 zr>de#8kZk(o=rix(e?e+tIz(^-~YoGzy6#JN=&c6{`39K?aj>%pb^3PY#l-%hh|1LtL{A^ zS=3ZM8v!s@cpo#0WCx-83aP`xh7uOrA`vMi5fRtx!VqJ;ySux&x#|1<`Sa)AQ?2|< zB`K;NT#rSHiGs0e{oZI|Ip<-&-`?F%`yuqJm!G|Q`Pt`Z&o9?se|>YmNhK>-&e?#5 zG2)bvsTh#+X^altDzul+u73UNFaGYgfA5Hz(CuG7fBnrj-+ukgu(_99Ky6GBHk-rt zv}!wfFHGJsSI}S1nZQm~{isG33u+J@%r?CkmT z=NBhyECq@f5D)@6-?Ze|I|XD*g@b436hT$_coIiW~yJIE%V{C^0bqNU% z@xQo1S4>C>O5ltTm3OXu)%w_BYph`wl!~ z-}e`1=aQo%WF#YE#JY11&aYOh)6-Knl{l%XiGUfPq?}F)0C?c2A@n6M#&%H&h63h!WsQnHAe z6lchY-g`#cr=i-YNhw{|ot&L~@x>Rv`Q2|XuCBWE>UwimRgdoO?ovu+duLX`h#}`v z3-Z(T$#1^=>Z>pR?%Bnq_udiRx8xP_e*b++QAfjqYE|!e<|ZxkHFE~WP&v#Zj__pF zd*{sL_WZksX;(I!MRWOCg0UDK`77z<#D znVjRcsbC7t*|USHZT>0Jc0aYs{(0ly;Zfgvpy19HXuojdVMiBYsXkD|D)rVmx9)oa z2$~(E^C%*@6lMmru5+$wfhn7oQew{gIGQOLDIMI{FLjnAsy+PE$&j#SpXrBPrNHK%x|hSyDkQ9CcAIVA_Y{@oW}{@oW}dZhi$-RAms+HEzbhFs@^YXr>K!_@J^ix#C2AoPs&cse;b0TX8S zi~vATv?ziRn5v=)Fa_`1wrQIt#ps>$#6Gx66X?2bpCU7pcfJYTYTfp0a;#G{1RsKg z#bS*)ru9u&b=e^2ydCzFWGSWOR28^^sPV3En>Khx$}!0}#FG2AT^1aWV=ARc zE-^+)**Qi7N32d!tD4Y5nY|4BQz=CjvZ^O0A6Dyi=-Revm}$S+Zf@_YOjQ&7%d6+F zUc9)uxk;sHDTpGfh}`&avRbd#>sP;e_3Y}>1>Ws;q{dd^bj{h>DKq69V~qR#ezo0s zUp2y^GH2@)I;AvD!*;uU{oQvrx9_&wZJH)U9mjFM+vPM#nWbbE*g(NhwHVGMJ7?^@ z7b$>-1m628mK;-63ckL+-fT8~|6fj4>v@P>p&({pRi~U<-#F()B*(Ph@5gb>Ia-na zvSq;iu>Jl!8mCDS+P3}d#mk%T-(5YsEGbr2q*+z;qt*KK)r%J|pIxq+P=?`dbANYz zbA5en``fr5*q{%-EOow!ILFSj^X!B3;h+~X`!9M&8XTH>=Gp5Qfe1lO5oVorKn4u# zJds0m3+Rv-4tB#xgyewO5RnOpksLUWhSYctp1nur19jJI$tM704|?9e#0cQuP8oDh zRIdKrUkpe91QbG>LxAkL00D&1fJlj{dSUy}c3pRNc3zlMO2Blt-!9GYET)L2Y~~mn z?_0+VrFC3*MqEj;T@i^f$0<%@PKnH6<-Hpl2uRgv1AX8l&$iV};C%pg2E@+I;{sJ{_`S&e{kbHnKiplv+dqHC zp#dZ3TwT`@m?7Y7eO>WOv%UbLh2UCGlJb7Dt(Jk3(?9&D->E7wFkq>^Kts;#gq|iF;Mxy4yi_pXhyW9 z0y0v7YRW{4NASAiE}h6ByV->qNdcKqkc^$8DIqwI&I5pgkv=TTb;kD`qg#LRDd11Q z<2ZOC*JXdDA>YTDMqGiPA%xfj8J$t7au@ag8K`#5GlbiFB5GsXxYo0C)!9eQd2)8ukt- zI5x931T#}B$P{CA;}k;hZA*@|SoINAuyLAhZf|dHZVZHx2v7kKZJMV2e%})_*Ao>8 z6sq=61zsa@eP5tv!bpABNGhf!7to|Br5t09BbqR{%D*-{P!$xBfk|`8Ij0K8S4mQa zI8=)S0mHrX+ijH?C&%#rbN6OTk{mgfC=Q@%=1XkJBw5`vHPS78<=(gc|KFL1mMhY= zk-0>KyQu=02dJ8vZ;_c?x~nFHLZKuhBHhh(0S?Ym>(kwSV0cxqYq8@rr8GP|JU%?! z@5gM@>xaYhhoAoT{PENAaNv3fKv9Mv3}Mt;wsiFTA`&@FBFL%Pt|k^D>u0s0Zww`M zS0b$YP4wuoa1(R2h-UUq@d%QYk+WekRVF1?unL^xq0BiH%OL`a=&1i9-p(7c`dhpC z@2KowkQ)O_PMa;pK{J~&$f;XUiinUym>88D21Xh}Bu|lzTjA;o0T04M&V#TpCu}t3 zePre_J29CZUS2YbFvpS4P9evS02|>D9|aLW+GS8~$B!R>`dN$C2j}30ZO%+qY${M4gm_Fc?!xJ0zLwP^(AU!- zVW$`GB}t@thr$|gF;}zd%I1xM3qz+7Hq43PS<*O;!;qT2P?MH7$DwMZPDQOuYPlR# z4d9&9c9VA-42c-9oiOCAtR9y4<^f4g#=L`1-eNx+Q_-h!D) zn5b_yBFb4dn@#-Rl(O|95CHQQ0a%UL{pHiA!}GI}yHf)F>mUDT&RHbqanS0oudjeK zEbwsr&;R(3>Ge>KlQ3r%0VnX?{Vu>~R97C4P2S#@^-F@w21neZ>(Y&QAF9}>$rZsvb}uA}>u@+8c{7gtyYcaUbN`r!!Mbz?E0=<~ z=l^^DO22;m@Y`PgCV(Oj<9NT{JUqO7{8^8m)hw4u+|^B{-Yee!p#YG^Xsv!fxTf1qmC8)*o^U?PLH@C*~wM zL2?*oXmukn^RW~nDy4+g$Nl~N{^23#963M7V~KXX6fLDZfBfWA*~X|HoO9l8HV{fF zWuRIvrVfj$L8!^y<5dMIFJ4?ce~xc{>#7o@WcD>zWZ*!-;00|WIz`J$cO~y zMxulw)6dw)Er*6HQt<>B$}>EUj>9XFd{sq@|4mB@hvc0!{(OXO^} zjH4W_chn{!=8c!??(7_wYEBZLPBmptMkuA2k*dNHGbiE1qF&9+RKwmgypqi1 z)d=Ql2|Nq~rC|Fo5g9wYlEXb>xtp;;Z2nM_3PD81Aq9*Yt3^9qD(BqHo`^_N8mJO& zhrD~d&reVCc+W|y8Ef15^ELll_4;Ru_}~8KzZ}2)weQ&Y75tsg>HSYf|c7dSNuS|KlJ3_=i9I z@c8%`;dbt8#iqMeM{h&T360n6Hqzdo?jNQfbh8ofN=3NsxyO#*j6;?b!EHmzoP;?|-4Td1;%yZ~PAQaj zT0_v=;)G_;ZwL{wJH^D0B#epUZVw%YEz6rj+aFcG&zF2W_S7YVv)y|f2UAsaI!sDw z7`MCKF5m63*|>1CA6(=-eT4m6-~7KuVs|z0CqdXu13mJF1e2LDejB8MoeT>QA{I%2 z6f9_MLQG;MA*4znC2?ln@36m<{XReM4==}Qn%t`}+fsz4VUvmB?gk@D3Ek_OOyH^$ zi4j3n8O~H)U&+h+?;h^%?tb{;-H$(hFCsC#{kVNOyng!h>E-45c=&vH{-FDjh}ezDq))&Y><0DfFiseFY<^qnv2|dLmFOf| z)m4+op-w3!)Dq4jEmWwQh-QiWbPebnXl5ZS#*L2`{9<*}D82-65;NnRETJT4XE@x6 z39dwyMTL}vU~1NpTz4ZOhkKDN1~%JM%1s&I1~Rrhrg6##^1)H7P1D3_INWW9U8egz zZHKfOCxa0ecP0_$M4sKeR)W^#nn9Mn2-MMyw5zq&U>4+`A@rCf3B5U84*I2?U&O_T zbXx+!({**tZ(3lmlbvK4oP0&gbeRYe0k3%+^LA&O7jv`8bedE(#q52~{P4w)pcQgp zh5<+{BEn$cBAXK>u-!|ogDU@X5SmHFJaA#&Bv?|xT@sVi|0nF^(yLb2Z`zT)l*m21S zn|TUwMjt@MpK)I|bKu7~j?D%KCcQ$LA%^o63?c?Y!orq_LNslGs}WHWp-}5C6tZwG zZny5@{4MDw=!edd^j`QH+ABs@E;1Bj1O ziP+4@StR8#IymM8n+IghWUHv#Uq$A5!$j-MDeElx=kf<{g@UAUB2AjgOsT~9y z)t-cd^*k14206<G0ZmG*`!Krf%`Av$kuKN>XhLzWg<$69hS4)-Q7i;Rybr65i^}-F2?imI32(Q zbv1Abk8O7H+`=~99pSw*l~sO`yL%RiazR>Y(N0yh;s#$?p#ccrL_+@+?$(b3text7 zg(daPZ)TC9FdJIU(IbIYFegp|5+gQ{kr%T{K(*wQHrsKxPve+|Ow44;-irJ+uJ3K6 z`UR5f<$vGu!oSQ@zAPCozwM2`^dz+7*3tf7qcJqNtUjt@3I-3u-TU{uoL-m@A3qy^ zHY0!`i6u)Oz#()6y9A81$-_7dW1V0sE&XK@Krm&U_Cr zFHBNcvu8CWH*=7>f#3!1N`e&K{9NMQup3nF$jH~St1 z2p4V=y5{;D@kA-z-Q9iv{rBH}_gzY+ON>ZWdt1j#H04|<<$_IKO6JLE)?n*OCpczKpT_M40s1mLUt`73dlwVnH>pkw6&% zmK1dj3!)rtC1}ed1kdZNHwx7)yg$croH;{rW{u-EkAsLn$eXiiA2?BqIP8yVmgQ9^ zODuPHcLEoY-EOC<({zkip1`GtIyZUNaW{g$n4cC@gbDb6bYw36G_UY>w z$Y|~wC%s06CrKDnV#)ja?Zd<2)3YnVi%UYv7!or^-jX{zvTeq3+HSYoVSG+$qj`Y9 zm%fge*IcL7VdQgAU@VlB*^HuN=hSZdzW9K?^4i0i6GhwXRQfY+&L05{qygDsX5b~V zmWaaYJDm1UUX43}&^P~#+?XB{U~uZH=k1t>^vKOkw1kORY>!a&_tu)3&g~e58tC2r zI)IrPU5eb%Qn3Y4S7r|{kl@Pn=O}0E2axVH#2sY-k>#9{D%t6I)C=-}AFFP%k4mG#;)pKcS6ATgpz?P`DljxN3R(8gJ(^4yiiQM9PX5i+Q z12;5%WQ2S~oD*Y>8Y(<`T%8vIdbN1EEW#g7Xz7Q^+^n{v#G~+ROF>ngJ*7k|V)Bfx zpI2TDC^0f;MoI#ZQe(h@*S+XTd5JbPo6i&w5ea)#NiKpJuNERQF}89dHa(B!f;QTWP`o_uBO87F|xIwiB}#=tOa?(Xik z``!Kh{dT|0n-QEqWMGAOf)OZX8Acg5ZfeAhKMZ1TQ;UAqw1sfi2z;x~_iYGsUD#jN z@0ST0eMk4ti#eSQ6|RB`zxQnay#F^-5P{rrG-ohvH^cs3He1VsPDgUDAP@N!kw=mv zCx}SS!!V9{G_%Yy#Q1hj%XE*md=eA5u;q+7uOGs^a%r`8z!F1(MjJ;PAh#d1J`^Ac z>zjVGH5mEKgd@s$Co;Eowe^^%zU{8aPWo$U^#z<#lCZ}&GfB;xklRtm4fUL_%`>=2 z80KW|OmlM-g@7X_A2o9%e;LtS1aXVfBrt)zKYG*XlB-e8fn8*m%ch1 z89Rg2B8MTW+7QRKTh8Kl#(kkZ7PY6WhtDFS!(w-K03_WuKGrtR4Mp=qBT6Z4x7*Er zH*Cf{jN@jT2z642C|m)9P)?o_@<639BW5;mhg{p^&THBay(z-I{KFH)&1yfNL49Y# zzvVN%Rt217b(5z#I(qH#vc3~;RUKzA<2M}>t8(KMpKyvG7j-Swa?W6xYR%hiy1%>o z?)_i?@|OatY6LO!;Fl&sv4SL$vq-wz?#k{sB=J^8(9A+z&@YfMFQ}E4V9P`u74Z-8 zRjKv)4Qvky2(u$(VbUrZMi^s~FaZvUHz{!_v>_l`tX1cMI>lsr$+`$Yq3s|bEmxh- zTdu+8aG&=>zrEvKnAdp^i!al@u()hyEoPneV=bhiY5N-Fp-s(3vzu!aaWnKtmRi!T z@T_J>i{d2$X7~4)fJv-Tk=5%#vuv}V-89h^z%E@sOdw`oMgvSBlHltxNMbIyoT~9+ z9K>{+3hnmBfxbh0@Z86vgK3@#T=64h_$e^RSJFy$c$>FE# z0S;=Q!O1IeXLFD{8xfN=EhOC4aScvd7O^dP)^M|4Hhc7a4FG1iIrX!3T{kW54-wqZ z&rxzW3Zx?$8#AjoRaUn^71s`k(yKxabM?(8rQ{5U0Etkm>7?Y6@^-h`-yuw{8j+?I zXJHA|H%nLa!sZs>YufVbnEdHsadCV9DtLZD`>(e8>%V?}5#K~PY*ZXvQ6OJF1vWPW zaVv&Ry^@Q&LWbRbyx;HMJ*k$%%SSaTMMtG^96|~L_^^@t$9IY4cz6HTas270za8|r zP&g4Qe%VF666anz_5(Pzs}BZNU&G7sX&Vs`1~C8$NxNK}TMxV}>h`mZdezE=NUn@a zwJtZnT$!({zL}un?nIGVYwKcM#?3C35A%wwUj%a^izFwy* z^3}39xg91(j`#Canx!UKick<=G-{_aG?!FeLa(k@M+38}IXD+7slvnC{jI%O~MA%`y}7_1mtHYBaeXKz+r)T1Vrr(GDzpv z6*k>f|*5|6v#yDV)MQlad#$hoXCyalhN#-5-*y ztMPUO`DxUA=bYX`>EGT^U))@8-?*3O$Z2W6n)AQ0Z_oOK%aqS=+tRo>>gN@j1&Op3 z2M6$tkOsIg#ys5J)oHRil~14DD5U`q1`{io@-Pr*F@ouCw`=k;=|v5ZYLQ@&uiqns z`VNo5Rj^(f#ZTaIrBj2mBRcFy}GqmXxsv*otlG2Nkc%Q2|Vylj7qb(sc*R$U&ggtCGTnHL` zKqir9Z7hut2y%BOn0tVVvm;QnY)auwZW;jv3>h+pl)$%;xwB0XPs3K5mda8&M?Hdd|avh&S?>B{bAPR-Sw z!Zl{DT>)_z42&3P2}A*q!MkZxtMJ><_x$Qx?|kaSmg! zyDJbDNOSa=27^0weP%mUbKs->!Nk|Z3K zzDPmiu^_L2NR5~yr7OBQYgoDU9**P|SNAHucDYN}Gr0ARyS49bwc%&@0_pnBDI&DKkOSfgdO1#N2c9?T`i;cj=zLOQoE2HCY~(BRnA4eU;{Y*p zE7ghAof{h5HBlWK$id;&)kh*HMMO*p+vg%D4^#X2 z7Q%2oL#@}8iL>>2_I~Gu64OVDv-UKnXc4h=sYTNo5D|kM&OlQFQxkT?x2+5 z>Cx{Q^FE95bCmUKI0^IEoKJ%coWe!YL*Cz805_0^FO!-O7^r4y8d!5uW*XACDU#*g zXTIN>X|0ph!QGQps8TF$Cfa1$Y_<?WH&S)wVn6vp`YuF%m5^!M{r}(Fotl3 zJ9BobZW^0D6iv=#;^xF;@y!lWSFL3uBkIJ*qok}}L3+@VhmBfQav5{lZ!G62i3UEw ze$)zp;HqWj@y~swFAL-PZ0{=0_lCYc7#!>GymiC3KWDx%1<> zX#C#A%TU63CWgjA3tl#V&~>qXk7ks>vo5_omN$@;gtS@^s|NySk0uw?iSB^3Q6((i z>@t3{MY=Z^?FMpKN8tUEAGVad3sb0DPx_h+K_U_|wdnb=D(RIR?bGki4Se%fZ!WsN zW>{aR;#HMUoob~>0wGS$t^4>Uw%eJm z?rntcc8UJh@c(S1T}9%~8vdp1zx?ah{PualU6OylC^on?)tt37X9W9xjX1Rh)_l-l z^Kb_4a0X>@##C$OAjHRCs%FA~v-goaoa30UMy^VpmSokY?T3H_%&WPrP>6Fl#b%CI z5-&J$5qZGoq%aIi;X_kD6FriKOltk%#Mj<5bPv!<&@cmVk<$xCcY; zU!1|1mx?njO6@Cm0Ihbi-;{gbZa+`%`~=ME(fMpxBPnNtEdaujSQ4^TtrMvrGO37ZO{ zZn6IxUDrVrWP5TYGo{s89Q0eO+BScC} zi_J!Y@WV|H_+Evg1yaEyj3Gz@(8IL9Nd)DY=eigRSprm&?U~K!PfO2-P22z5ojiOqW zUP#S#u4zMODuf$!QP(cZwS_@2!vr%)sqI83El$Lo+^P7HHDU`Gp|d50$$FR_%!OH4 zdP?VEpqHZGa<9A46;MyBPbPoF-0`lMDOVLp2H z9{I(y*;aqoP5BC9>i=}BOPSYg=<|frybgFZGH6_ei?(p}Z#jbieG&9w7XO5(rmA+H zkzZj(^kTSKI9VG6nrVMW&csFr&dXwD@2G^XZlM$U#mxVmk;InlXVqO`W@6$w#`^+P zGiG7~vCJlxD<#5uUGmJ#TS+Rflh5XdrmEg~7Hfu>uj=_w(Ns4xE}Y)HfbGvdYW^etZe)wcJly5`p1`AvPq+uQbrhcBhY ztnO6R_cn|8i@JhKPSV$OFYPd%)y_mh-QA5F+?Z0Lsww4^vxg6KOT18aBJ(mGwA5*u zj?-(Dlp;upJ2xf-U-QH2gf=wOm_WnAU59A#r3lm5C{VStW@zOzN3${BwTIpvGR~iy zE-Q7-;0-C81%%MX8SY_h9~&o{BPM`QwTWTr4DYp*P8YX6ul3Ah{iljgf5}cUS4aPF0dA=BQ#%BA0rt?`d4%=Jn^aq@-hnB**o=4I`&OZ?> zQPW;9vsLZ$PMopV>~y!IDKeJoqZ}(xlo>=Ul5&P{%K2^n+}H5xzjbf_vRn3T`oQX# zxSc5QE5Ckm;h?JGOa3^|omq2AT~m=Ca3EJ~gq!)~*ZzkGn(3adPl;$Lg*;?s=`mNb-{4c-Dg~JhL`+Z<`<1 z@+u^5GADN`Rjp1|wbp7{7JrVJ(Hz7Cr1en!Qh(y16}O~REC!ZV8;6p}NEd32I}w{y zREK3}urWg@^p|8H?qWS(qj76hStkpeJcQ*2GQTxBe?#TEjwLz+4j1R*^H~>#7m2GW zsgaYguuyj{i9UgoKq9vB_wu&=y}wRI>8mR_{o=j-l}FbtJMddSezlc?vzbCDa@QEh z!?3;E-{0TAJn!JHs;{rFbvo2qt*WY~#Jk-ly1RhKiP=p}S=$HS;vg24(aB4)#@B*l z6%i4G@l$T5&Ik&wtg)Y~I(Hxfv*aYwDd7x`KN)fwGDq6VYVP=t z`*nre|E(3pZ&Dhp$q!%t{mu$?BL+!I<94&#?{WX2Wg^h=c&yXWN)4&zI1IyfV`i_% zLpeHJ+lS}#u4}$d?P8Z!umfQoEhoH@K0G!e4*U1!Ol7yI*Cz|~g6*@~f!3?tE68wa zQFGwgx6a(nRJ9(bX_{)8TurTz+RPDNpDdWQvdwYhB#1d~%8>Ll;N6?cSd;H~E83TN zl7-zLpeiCH3?DhcN#Q{RI8zbDTjNIE^~tdJ zxoRv6%wl!8v*cme?6$VuDht(8y{Kvs-9p8YHlw;3DU(~BsQY2XoPYlBPWa(q!YxP` zhYe03`i;QPv{thl5#FX)cedKq35^nwnG&6gCYrB)$E=rd5jQf|QgxcjG?i)6Qs5qB zfrYNWddR|bG9J554r$XgvlujLp8#4gV|3*IM#zC?x9JO;T zO1JWa+u5f5widGKNBqWs-d;aPJ zv`gRqw>R?}AHy&3@Vwb6cq5?Abe9xU~T1qXg((JuVrtZ@x*p@vQW8mHXv5S5<>I$HZV~XC>9( z6SREaYPHP#AEs8*T*?Qdbw_vOpfi#M0w}Z@ZH=jbnZ_205yjGaYx^HW6q~%rk(oKS z{-Vim&d)(d2P-d^${9S)ej(ty?f%xfgZUl#`ghVL<@^i<@YQr6#N$(dHRFqR>5_iwhXp z#3nN=N=ZN-?rHJzTK;lQlH$>XBltgRpYP}Q%tgC-0d8|Agrf8a-lC+t<_G3>pHeC zS{}}NyE8cBZKBiyR#CGU#Zm^5lUrc=rRecEO;eppt<`i!AAA%gqB4 zz}%TYEX!*&cLS;U(jX9#+I%GR-mR39Qstysjd2S(|gouH!iYWzIo%B4JWOl9W;!A`!Gf9uc_o4~_Pn(0kV-kXyI-6WZ!x; zyutHb?+}RwIhZK4_+^l}kSAg)2A~pE5&ZDI>0vOXzy9Q}bt8#WJ|yyyDJKkRAR|9! z7ozl`yc)r&2$B<3egPaF){w@gUMGEhEzi&NaxBv{>15>UZeE-8fSm+jge9@L z8wF=U-6_mz;2dJ~E?aUkH>wRN5HQ@t+$z{4HG|Ipz=XL*)emw8#dOTfREkZ4L_}JS z!)BMqp&lnmiC8%3&p>#MI<1-$YogY>gD)mlmz$RShF~-1=U8J-Sh?&*Lp+CGMCE=uwIVnu0_C+%FR!0J zeEj_RbD54ZX-woITNvGXJf)PtD~PloDp-Mj-W-bi-e+eeW9x8=g8*SN4cyeJhOVKL z;@S+{-He?I04=p>sn7M8B#(n5;xDqX!X1(v2>yRlYWd}pyv}#Jx+-pYRIC$9LZoEj zXw(w{Rkf;CtGY^6HFA=6zQ-Awz~qv^$6BURSZj}305hYK{ieI)H~%GHpS5=d@cYeK zhkT<)dOHiW&AOacIj43$5g??L4$L$RX}e9koz#*xNj53%24YA~Py@4rjbOy)!rjTc zg*T;0i?RUNqY^+9^AJ&+jNf3!+T5Gp81*^5>DJyf{Y%t%Cy30hK_VhxI;GZ8=fF4RKjTcqNhj0z{$!g;A6mdyxZ#Vi$eeIGpT#MW znN3=3QU|3x4LXUZ7!8su2u?zz-C#e_O1;zWYv#*`13=Ez%-$SKntx{}`mVI@u+DKd zcXL_|`TL0f>0fi(>8gg*663ZlPU~?!Kl1MES9Z}kwQa8K{ zm4Jm~GkO&CVo!bwP&Fz6!7fG>O{42Q`I>y4hIB?{p$lPFQ;E6@P}IC?ok}?#r`JO* zWe|yyCk=^{1dWfS-%GR{AJ(yPkIq1rV4}-fac!OjNSFx%EAdZ9#YH6EiU3L^#1f*( zT8WIzwHBQw8pm)Sfx9`A5V=Ipf0jppj=5a6tlSHt?kI^9w@l)Or$kNTC$SvtWUZO9 zuydeg|GT=Gc?g(^-MrQ+tZ8-xaZn}qKsR{qPzZq1{|#Tiir)JhmO5|me_8-=>dLoR zpaDG-vA77O>?r}pLrN(TL%?R{RTtc$C2&@ET++@L%M3ehRigPPS;zqE;stu9muc}? zzJ%VN%s%|Qol)}jtrY~^1}Li4snqFEj+0Kss}dv)K{yR8V?L(5#g41RRo~4l7By>w zwTVGATls**+2JwAJMlPl2g58f#Y3~m?GQod$yWC)K+5i}Zp36(ODU?AP262w2u4Uv zWYFkDSm$%hQC|xP@9lIr6CIUdW4 z`ov6|F^xk+dW1cR;CH|If8~_zEy>(U6a8P&^MB>e|I!;?6?J`0&o0A8#7Ty6oW{Xl zr$~SiNgz}8T5H4*hXW^|-bJs`lK9Fzr<>=b+o7K zxGAyZ3kDlv9N!hATC^OGFVD~A^<_F7%}l^qB#lGLIY}m=7N|i)<}BOeiFTdGJ0+F4+;Y3mgP`z+A834s>b|A`Lu(z=IwigC*6u0 zlxoI3SiX`oX-ki49Rc8^XXnCF$)7!eu3F*MCxl+LcDyRCeJ`aPUtbQ-FVpLbmcoRb zBGv#`Y%-i~+kIwMbIwzw6HVU9%Wk1xp+HjV zzHff5WSF~vkQk47!^~RBLA^)~aZ(<)X}f#(-TTLP@5gcMQRZfl8apC7dx*l+M5zIxlQ@7}NZ{`t?Firh5XSSL#?X&mLdcjd#+&wu{Uay$%);1=e5 zndJb4S053Dn{PE`0yDXLt(BQ(F?sa0>rRr*k$5eD^G+Y0Eojy(8dZ%gW@e#sqY$)T zwE9;@o8I;YnTJ&I@cLSgN2}9zv)K&8n1@L`C`=I}VWjS!#vwi$W+uu`Wk$2(d6`)< zH+1?gOZeD_fjP{L+AFMXN*)kegpoUQPXLV(NQ?=p)_*Fb-RmR7xSD zV?7*?pN8H3@%{U|yZikget7)x599rvIlKGucqF$WXQld0L#|)uj&lJdeZ$!QN-1%n zjEwI|SBI;A&nU&|+rW@VxXWg@-S2o9%j?VQvAEi1!!WP45|Ie9M%--`W>|!7lDe^~ zS&B0q%(3elqu11(D7C{+73F_rDdr;bx(70~A<@>ypwq z47>fX+rNDL@Nzg#GuLER9YOkXRb>iUe=Kq}GihTaLsy|JJ-M8l zA}mXg-F(iV@@w44zVjE=d0XO`H(`(er5;0IW>#xt;G`7s0S()u4(6LV%t11va*b|ErIKKR$b4!31uC>e*DKleZGG~tw-@>qk zxvdyeOlD3Lfkl2gQ@QZEzq&ZxJ$8OyCnpriHni+7tPfVZQz%f?N_{=Dm{P43BK!Nt z-S_Xe@18bK@3s%`hH+baN(#sT`9KE09bD-PJNcU$=dba_y4nQY+KFe@*vnsm<$3l< zcK3B+&rNRc@6ft@{qH|DLOhphhIyAbiO9IW+dVyg{`sfppALFFJii{ldwjaT-$*uf zV>ihOg=5f*Ahr@Qw_CC5#5$OnyM`?t356>ztu5KnK!Z3i;sWUp&3jzmdd`2+SI-mY zd5H=UnZ-sxlg~R@4d)+b){awmq!VrPx82)B!y*Fn@c3Bi^IGQ;@6ce$)MwLiCv$b} zG1uO{&rQt@F8z&%r8uL{)LD_R5N8?z-e@T5YrX%__qQ3RA4=wqvHt>@2aOT^8=D7DI*X)&Q9v38^Zx znAq9EwlCrefpAsih!QmSs$Q$MSj%xpDdn6=7|cz^=)G_-q7%15oo!UF-=edd@Ir`; zv=H@K^pAziyD)Ikhi<{fB5H3%6I#R*AE~5_NPDnCb;1hP2&ecb&8F?ryW$#pZXwt%oiE?r<}- z&u$*(ulGMLH~&?zYF)8*ond&ES8^xo48Q&xj%9KuVyW(v+EjHIx9`9I{_cPM%l`g; zbAPvgc)a`WJrCp2UESClOF(+2fOV&%U)B_VL$!M?gonPAnsYg9TKT)IPupcfrAtrV zzo-3wVad|UZ=U_lp6MSVKH9_n!-S9kZ?Tuh6X01GNAfC7jZ5!dh( zF>|f)+Emp_ty=o)5odNbwmkE2XPInI_pz7b;dMH`9FNm<9EM@H+uh&aZ#J8hk~3?o z))@d9%q>nWH(u<@Pg+@@DN>g!{>obI-2$kQc%>@!hS2(HuIjZKIH`Meo2(vc-90}2 z(;xr%`2YOd{o}*9zvE%_oG0^AixF8>m?xGbm=RVZW8$}G>|di;JDYP|P0e{D5$m$n zxWx8ORk>?2_41wRG6VFtZQ6gYQ-OOk${Z%^rJ4{1$(!wthfzd^&G_--&(AL(Utc~R zUS3K$z8(%$t5pp*en8-0k1UV|y!XivoD?9J1{d}Fv!lnIE4rl3ENAVF{Lk!D@U^k#+7M763xke-qeCM6SYwR~?Ek2Yz2P>R-yeGlS#x z%|AcH8S{T*WA`T3XW%zH^M0qZz|V99L7R)Wq~XH>F*9{#GUkZ^XGuJOXgA#NxBSzi z{PZ{ZxINZC4|^UxPe(sYpR?E|3!8$4JQ;IU7cqE6J%F=gaA5+$Co&~Z<`B+ILf%0G z5IZmvA422rwVA`T$K8E3qm4H;RdMy6Td(2dw_5kY%tB0Tiac&a@@BL7Tlq^VB}+P{ zqnYg@`^FT2sZP^$eE#^;-~KjD(~!~uo^#%Ax2g#;YE_yh%9-=XsiGs4i&K5qHBDu* zs`Jbe@RSmpx~0(cMcEK@!BR>orM@10s$P|dQXbMcQc9J>cnxOFLd;2-k>EP>$^Zjf za}=euW4D}vKCn5XB$!AM!D?=R5u)}{cyY5D<&2xUs%x=Y-JC%XtIozkQnZvjzHWBY z`|qavC(k*HxDmN!!vL_#q(KM>tUs*dIk7nF8T;s4ufuhXaH&mPOW?nTBXCtXHv@ze z`3@JOzWAN#?CiXSTii@I{_iFSphaH7Xl0&FyxZMT8j^4xWV;)O&F1CvXZlZh{`ixU zQ>|4bv8>QkH6vA3WvYM+NQs528sI1}QEp&aWY6@0KVpN&!^vRpgFstRiOF>4qBJ*@ z6-}7VGjoW5lu{TOZg;!=!~N$EAD>@eN}Y1frIc|TiO8%*X2IvrpI=@+tLl+kJjv(J zpP4z2`zBUR!~8W*DB@y_P}BH5*4z-Al~w4bBkwHdJPbpYc45?7z3S)ZgS+RP$DHEM zk6}brb?|zj+m&J1;+1sD;a`utdoJk8W5{f_8@Bj^$ZKehtSgW|zCy?4MrLp@gohyy z+wC}x<2bfR*!Wp%l0k3!2%9a*+HrX!tNs_vzi-X(e!nXF%;_lII=aqGb#K4V|K|E1 zB*JzQMa4|SucZ#)VSk^;;o-Y?|NOuHSPsX#|NX!J`ltUWZd!{Dxk=`sq6F$Vys824 ziNTN@9#;kjT;r1Fi0SM$o+~k5OU>4p%9v5#=jP_sXN|qvI!}%+WRA@T8wj4ve!u_j z{d+U}@ZrPjhY#Uml2QsTZ7IiTn&RWDwU%)~)X91i9h|6R(lT|wbv#~eF90Q}u_@;%ycYSAdPEgjUA#I@c})?~QjNlSuol+@fXD5Azuynz zn1<|Xwbp9tsy%_t`i(lXJ!lPAxCUJ+6qcRslatQqck6=UA)w!8gah8#rCTC1vsXcxSY4tiEv zgL2K3mwZQ@Ig9<`BjCSs+;+bCFKzj+`hi`N7XKdR0udSAEp~(L>FQ3*6H#>+rs}4u znQqp?qZZE5tB2Z895AaxRy4fig8|-yAcFv{E1pGSlQk5 zl6n9^yNYMCfYs)2s~rA+*n86^Nsi=9Q(sjxcaI~FIsi0C44cE5mEHgUCr0MO%F2G& z8TNA7?BUVfXcP)nl}ALlnX2vwHTUqytEzxP0}V0+0!gXNjEwMbGt=YM=M8Tlc5)&S z=~wG#FKAe=@Y&}xzAnC)KZL&TZ*Fd0y?V9V?Sy%=*<4&)@Wkygqgv}Yj^j8+$Y5qU z=V!wZ;)WL9Ct7Bn^F+|hz?ut<5lwI&x}hJ2L2^=uX+%kgC5VTPvZJHH@%uW@jI?6I zEQ>mIe2f5UD(vYzCDo>Q-A$F;^(5$5H74dT-Jk@?X;`oN?V2Swp@*B1gSmA;C%{=G z%<~sf;=NBpc>+uKvC_Cd&*G2UEPd>HzN@eNsl)!++M1^z(xKBaVie*Wy)GoJ80syZI( zZnwL=y*(Tb>2RpEc3pRVem)FC*LADas_*+shZErc>{!$sY>Sl`mzW;?5JUbpx7^W0 z_47?-K_v$Pk)18g{P+CyVsvF!T;dn$)0StS7>W?q_cjhPuUxeKXkbtYyOB9B3!h5#Tf z3ILKg+A1>{-qSovKaZHrI{#_qV-AVucGt35J{JFavxzD|>Jw7x1vC-+XH0YK9g-*$YFr$V zkPm>9qj~g^yLz?BT99HI%AK7Tnsc4Lh;o1~eGsQjaB<6FNz1k<0Zg-i)};OBX6m)h zx&CqGn;DT3xtS5vEiqD;^Lo{-)}GkRqP)>Y7tMnY5E7=C+G;%rxDuZB)&5j5`Hz?) z`#pN^ha*HE6eRqF4-K|Q*LuUYFEwwrNmebi=@1A50N~ggPLty)S1G_N!{nc^HPAcurYMy>T}u zSJ&u|6OoWGv*eCbPKzDE-62e9rp8L{#MD50P*OLiM+Z*YvA;aq7k8lEQ_k2?u|n=- zkrPF3Kl=$p@*nHp)T_swArr)76HOvr?)p9tJ*O^a5+1m{qm+m_{Ba_%HJRCc3!sk@ z@IBq4e=Jb{Bx%Koy!TYu@~GtaL_~3NrTE7PS3Y8QWDhojv^yz4k(9uuRS1%V)G~{^ z_kDl1J-@hkws$*xcOX^H&@h~g&NI2X!H7`VVavqlB4Si4BUz3Cd%$K` z-wgde4wEB}7X}2s6`?5Cxws!JjwXbd&BUYdf4VFWNk63+`D$O8lhAEQCWu^o3$ zc6JgoP9wsqx~PC03%Apisk4PyOdgtf z_WW#pwslanIp>MvIWL>SjhPYN+J3XK;`ctWpD6Er;CAqFE9Dd?HH&{*!S4xO@q6Fr ze471qQNUDsWrsFa1)P|JQbBXx4RZl+x98il3m*4&eWl~RogzZ&1~-CNM<}_&YFa2o zZb@(>hKn;|)#JT(_dli0>)OPNXk zI>*Kc*ISziz0M$)rhQC8fVS5q04lt?MhffP$XPm-+7+&FQVk)4I(cH(2x=xffWT=G zdDB}ps%AB9avW+dtIlo6U_P;J^` zC``8N84P9)A(I-BbUF2%^qurW%Ds!Q(HwskBt+|_u_K8 z@OucJKFwQ-b2cLF8AU}T?xfD9WI{}musyptKfl24cAs9=>C8FWN%&mrhLc)Y8qMRh zaRVq@v*sW-O2*C(k5M5+7ploraL4ES_?UGg@fYXAYAMg0j!LfP(N$z-<VPq#dwgFlqoJASNsGZX%so>#3(C+8;a0C2dK*Q7;+Wpg^UvnmBB{6~ zWGsb9a^H1*zgn$^Vc?ufyb^85uQu+utdWJg=~A!#i&*@3>AiQ@Lk}+FkPW_9icCMn zXt3jmad3A5ySaHJ103W=aLViTYP}s-17t#&;dqxUMJYrkl-LR8JXNsKMo;E4Fx?S; z%);k5*`filYj8J4H~09KxnXkkjlswEAHye)-n)0m$uKN@)Vu=V{^5Pc|296Ewq5wTtfLo`Ri&MyDg;l)E&nQa>=WHMC`- z$%Jz<=x{i3)9Xzpf@t-5rpCa<)Tr{)#eclNBNAz~WHgRSX#eIbrWE6U%;~tH@ZD>x zsxix`jxGevr@D-Gw1OD0Ac%9=_TI4}h2K%#5rwO!J2O#ri4MJ!GuU9}Zbm7knVb}R zgb+!&?S5vmwF^6(gc~>z*|{)8eF@9kfq-#4!S$3aY;7 zp{f(iQtmjX)b}hB*mADZ?uCHmo+obbY@JKV2mLAjfJ1#C{Kj+_}dz_x%> z9QO-rw{mmTFsHVF=bva`dvdsur1yti9IttLX;T@FiE-zy4j_+{^AVuO%kZ{s4rDNo z8Ie1mwY8cH^Q2s)a9WD?3Ej2XoWmSuUT$(ToY_wdHtgQw*ZD1|syo3spnPp^Vs0yd zKnT-kB`;bNCC({#UCtSh_R5JsBz$7Qd~y$mSKl$fw7=-Xf0>@Ar(^!dS`G`<3Z4!e ze)M-WEqlXpE8wQNWty;)9z8ftd9_}x*SleW0C<6;BQmRDj~aDjC7Z3meG2t`>Vfn8*|bv!aGE;MO=vLd?P#h_#WTlr zvCbj=5t0`t|1pr5l*L#CN0G&tPHp$4Dq*(xlZMG8p5kecfWiS{hLKFxy2s~nj>zU7 zlw$TSI^Jyal+KfluGwzj*bqJXBi$YN$27_^X*wuy1MAI(lbD$jiTNDg9Ve`h=2ra6 zJMf>X_S5M|Aia;${lgJ}KkVe6ZC?2#MVtCg(fn(DWJbRl`t_<`4UID;yflhi>TGF| z0WQ94izu2sBG}`}4_?ffn^$V_G#l<3(N46i)=z`a_}UW$066eDQ?}(4Apmix3pu!7 zGQl>YeCLRX-3g%wz+z)-5&K+g3~qO@u-GXI6jLP^X2#8KUesQ|;@6Lz0*U?Tz0 zYDAPE+#_vQzTN10quqKmB&$8ch%9jxE^ub<+{K;LM)AZ)cmcD8THX=Fu6a7W$#t7` zy_=d&nZ!iC3z)5g*n_)i#0H**NZqMTjKZu{3^?Z20}AAzu-}OE9_}*QR1cTPz~k5# zw#a9Azlay+83I)mVV#iS0T+y>zr;u)BEna9QzAe}+6b)?&2r}B20Xca7^#N|86#$D zh$ywIq(tPDVDJj(*c0dS$J`yTn51dbM1}-0tE3degl09$t|=uls47EnrlU8+)tlhbFr4h2BrbEX9GkYvVi}2}RS$xgp zI$!Rim@kf_;93a)=HfO7O0yqvn-}n-iw#Ym*xVA5^J#=A^S#wx4;uZ#8j_Ufvy{Z$aq1L&SN1dANk{Ne z2Cu_AU}#ahujTyL(WZCwkXizuh^sU7o9c7d~+; z7EY;xJAs(pJu%#l%O?KEZ7u+d73Guq|EQUnn(5L+h!ba`rQ%JOgBU9YNGGOCvnMC# z$@S1$pz8#(lhIV4z3cA=P=WMUFAF;dQX7`maSE}KRNSCoFqi~oUC|FLTSo%R3V^v+{d zy<@BEaRkuMVFcKSId|RAZ_m%Jx0}OmZ#K5GlsSceMhvMC(+MD*Lnk+{pNPO`7TqbL zf4+c54)>r$C`ba#-x_Q*acrl?auE6FtiKJG&!V0-B7j)k(V?Gq4vwcvsN z;OVKx(Z`;rjz$2ljz;$s$b#sfhd>!qD{uaMZCMQU*_@eO;Dp z?)+qX)eLqvBAzV?2<${*!F2T2XzwwB32uh!#z~9?T}pkI`_58Vt;7J=zuU)=-uqAq z=I*k8Fe3P%cHqw@{tu68PSUS77tfyGTs#}!ywTC-LrejV5`7flr*Yre7kG9DUpA$% z^btLMzjF;mkO<^d=c~vL5Im+Nn-m#yY<4u(3R(dWeaYofJQv7gets6ZIS7!H5(L~_ zx!Vza+zPx^$i$C3H!Q-S30c)h)zfqxW`glz)1T(sk0L1c$r!7(=g8QYiOoYD&(?tD#$O@@n8NOU|Wgysn>Biu!5K z`6oEv@sXuFEB}5o@WEK%1Iu{#7sJPTb^Qnz1rF(k;o|c7+l$Lrka4V~tCB(;2X;8f zTg4n?b0j_oy^DyTMXwKRcFmqc)x9=ZYv}(Y5T*t{wHPT@EoM{C5bQK*a$8!#Q8T2e z(PeJd+`QX>yIIky8g)iuR!WAPIWrT-P~b9bp#?pb32d{d&WI=!uWsgUClMd8Xo?UK zRW!veGy8FafJUF+tHGu{DSFEmV^qh;=s_XbT!E(MTn>O@FXpL^P*q7`Gj25QXgCra z>ISuP7)OWqd2?~Lx;V?LweysLMWuuJ1AU_Z(i8saTsbDNkB0pp@?58T#7B=b{v^qN zHHCvEug@l8BFFn=S6<+?p&0t9^Bo0w&-w&vvOrN<`k5__!!)p zr%bI?i@AG3AYz#$$sFkuLBu#Fd}g_ep%wR9h+zSuYb+qJWph#mi9k#w26Gt*zz4az zRc#poojmOc^@s+d1R%Tk!e)1IuGpO`c@#Pw zoxR9GLgIQSdLHiK+cJ!PT zp454h7Tw&@EWt>~gDv0)jJGj0v#X-6W&r0wBn5H`-b~$QJ->tIDIoZX$U@azwH4=? zEn<6SXEtV?SY0f_0HNvUEV}4ndr|A`eKmUr8`+6?;kZ1Eh*UyNI0651N|rn|=(Unt zI08+V%bb|WoyEoI&JFgc$R|qpybL+qBEz34sUBfej7=L6!3fp7gpd1nl~*g|&Im_H z$zT4U&i6|P;x0~fPs8(=s(+cpE`M^m|LDG7`n+;xY8AbYbNnI2#mAoK3Cc=qrR93hWD$qgQW>ewS*;#+J5{Y_s#?eKurEyx)Q!V1WEK&bp|o`@s>;l<_;D;?#HPSY zT~_4fs_LcG#UR!&4BPFN`p(^%rzfwv1d1E$%)^K+F#cT#?o*JW8lP!(tJW~V<}M;# zpCsp$66a7NxVkkqQ0M_cE)t!^U`Z%Urhi#z2bky5!`$zjG6Ge#>GYn51tM}`28ES_ zksC(yk%*bM7nheWURHIPoLAf|z~J!*<4yg=MgC9lwePg*+O;}bPWeYO{O$+*(_ZpO zfo(DEyL?$sxEd|(nI8tYlbli zSoK%{GXpm-EhZ1WJvX1ZBj!xpLlEo79jDd0|*yuX$4_8-L<2Z)n&2G0F_r={i z>4stGyUvty&S_E~s+Rfn1JZR}5b|Y$skE#KFr&Ubu%{?gO?$CUUFF0s>|6w+hW&JVN@ zcyPi8cPCgM=q9|^X7K4f_=)Z9L50F1dz^kC@#^gS#g|_m-oCNxt9?DFTk2BZ_YuZg z4Ka@_Bi=ZE+k2!3ra>@&*GW}t`*o}1=pryLMC5*Tb@lr7>)md*dv|?(eZAZ5ODSd~ zV3AB}vAl<2=u!?~Uew7VbcY+ldIO+=4Z`n>~kO|qgu^sCDp@WAM0=m?p)n8aNuweQLnYuVHnOYFW2ie zZ?}mhu~c_y_(LKhNy+bppD}B9B%MyXaIG~UA3oWi@Ud>!il{}kI8n;d_1$)Rc6qtl zZb&-Qi4;V{f`{e_9+V#aOj`i=U*3Zvo#Pq2Xh?rgdhY|5=JA5xQW*2Gu14==1U+U^ zJm1!LY#!r;RJYNP`qlH#zqtAK_1kgW?QTlZ&1NMc)R5Q?Af?H`GYmfFp)`@X|2Hcg z;_T&Men#Wk{BSss>BN?dDK(-d5g;N0krv9fsTCqOQq!>%bERV)O+*rofQ>YxIn33_ zO3QkVz0A0{W39CW-Jc9vOvwOO)vCb<-&a$2tF<1=e!JbG8qRB%llPr@3aX}u{|_4H z$4@gp05n^qF81F>>}qD`9{WeL5^)$&(Q;5L?mP_rX0yJ0me=dt4ONM}PFEy+RG+GC z{~RclAC=5MLE@m(VSajSr1!%!jpM4j$2NN~CjZz#>%CWhx$K`ZDm@7&Ny90w&)a7& zwilPLfB$d$L(Qzk)ET7YZaHNJf?&e}cfJGOSjI9-^%Nt;bnhhVbsbB!l9+;b33w8K z-ARR0m;1cV+wFPRb)9sodV72O=FK}TRfHE31I(O{Qq-&@@W`A~>bfpTm$TtWD>0<&Sxk*o)uM(_ zZ5+pOthJ72wma05s+QYYB{jR1R#;cKEhKl4qzCD)oSzX*|XJZlfb3uFs#j}ltM&V zIOi;qC8e(Gh*CM@2m_CkYwoB+skuT zORrz=b~iDW%jECgy}7!2yW8y!H`RrQ?RIl<-mN#1x~@-Ikia!ea$=CUNeS;%b1+%4 z)6#ycO%OLLaj?^}A{ZS%RUNCPjchK@hZip|o;~Y^K0Y=9tE#afvAX5=rO z;ykD;y|eyLpSIZ@{-Bfp1FMcdWaU3m?RzlASYC)n7e5E<-Q8VSHk-5OFJ8X*?29yx z@4o%I*0S5}co@2z1)NeU6T5!C!1Lkb9&A4_5tD?u_8m-exLn2~>|_|;b)B4_i*PB= zZnky5-|u#ZQp$L!No>14-)uI2_0`|h!?@euM1XBp&(F_4|NQgwv*)FhZ@+o<>eVY( zAG&U{*_@r7Wl7h!H*ep*y}7yB??z|1LnMc8U%B-H%|mqPwQ98bmN)|Wq4SK~N3&~@Evvpze!uv*T)`R3;4hRIT5a{unT*WbSS(|6x} zTfK5h7nf%*Uc5NJJRgQ3YW|X7$~abwA7nrt4QH0k;}}3TZ+haHr4U>}Rc*F?UGx_h$OALa?sa6YR;<)Img0_~r!H4j%EC#;TDR*}&RHb+IGQA1 zZTijT?EJD{ue!?%7LlvBDEltw)a7oy&YNd9H`g+((#=%{U2ZmZIB4#x8c4?7XjZ@c z>dVXL7n~#y9j~+JJc7O1`4P;s@afPlnOO*j!hO-ISv6BP^>74m!KfPBD;(}@PO4T8 z2jspuYaaUZmlw~!{Osj_+MGQvW}{XYcQ$~@%&R4LJTlz#^jZ3&Xzxysw8w(n`&gu> zBbU4D!poF^f8T=NpRINAUh~tBwMMVCf><0;4>$Mqdi_^_^;a*p{qNbo{_Q`0``ue1 ze?gbsssp4>mK&j*F>{U)aWf)RQz)}=GQWc`pE1>8hb;tCwb}_>z%ofn&(DXxOGDp} zH@m~3sOr_#)zxl4T;E)N@$%VcpPyf>ndSES27o#CAnDWQ*@dk7{kRXa?Y!O$!;sc% z&$(M|_WOO7bar-ec6P>+XOG?B-j4gje!qYF`dd|9uh;9dbIwV++zq`0;SR*i`~ALu zdp(Y0-}me7SxPB)oiqBr=WxORRQ2lSN=r>Ct=H>SPTSRLKb=20=gZ5>l=%7c=VupN z6Qqr0b&W&k$8LBULlUxZhXP_2%sS{Cu_A zq?7=jZNiSrDd=zZ)X9IpZ2YnM-^VtK_u76vxEI`C^ZWsu*PTOje$Mn`_cI=gJ)YK8 zez-aLdlRzBwxk{Y;xID_6AP~}q*ecX_1QS2!`s)xcJuD~s+b>Yr7DS#B{etRU|>gQ zF;ahWGUz0Rr|^npTNcloWGMGAI9F$ZIR_@&iBe99lZb$KVB*{Temv~Q{ceAA7-bk< zy!@i;`rNM^;*JB+uI@83R()Reb)SexMGgsh$lT|ZNMVuPm_&y4S-06pcyTd{h%l+D z-0t{xcOa_ekXFNR`7HMxi=@7joHU?YYDuIgl4^b5533asRdNvJoB>47vyKIc;Uoe^ zmyDJ84w<}L^VOcHRHyUi+Z)@i-v+!d#NsRW@F=iCmZ;OWGS z8Ns1PR_yYwnx(HtIdi-o2DuPmsN{$VH~|O>Ax^@XyVby)j42hKLU_Z#la# zcNsY!^Z;`Ojl$M&s+0mE5m~KPNDYiB zNtoGE_#8%*G=bII1}y}m|m#DZDx!53SDP1aPhOdbi(K&FgNnJs-B4)D1{7 z>;Gr5P&*brAdG)-p7mq%@DHzBKWN>1U-t67w}z>m3io?3j~}nj@t{8cqtrg{tqvYh z*>^S+U!eXP1`qCDsj=c*Qny~O&Mq%rel}iT`(eK;W>mU<<*v5ygKW<)Z0@k*T!Wdj zx{(|1SQxVzxj{I)7c(b_1y|awOlsn8$VBU|_tI5$8pnEl{ceACvwL^j58Hk)Vo*xv zrcSC3vjj2+vk=%^ZpV@{VlF6C2f(E(B+d&ZQVbENMBrqa%~ML6lS^`j62$xvEPRlQ zc-N6xAu_88tWIJYvj7piAaRsD*o_HwEH~HJ*Kgm|QeqSA`abnZdXd~q&HzMW8b9dh zZLen}w*YMm69P#}$JySanmhho!qKFb1a?L#HD;6!hr`ujJd}E|y*PXJ{Mn0_{c0ev znJvh}C%58@BZof-Mjs6?7L0Q#KsUdk6}OI3IAqft-Y>_0sulp z*-oe5G|YBL-Kg0K#>j2h%mV7fffq{2gjvf_54Ch7ioSdGN>%s!z4v{;T~kUPGJYa< z&PWV4kC{AjB_Q{`SSGEm<~FKH;^tf!JRWbLkM%ZGNa0{@YOvy59rbA3>YiA@%)$UC zpq9h_u-8&^;wU#HLOqO!-EG|;cDFaTZ{CbIJF2D69Wzp9$&AdLgc#14Sf38qwD6e0 zrr4Bu@wEs+D|A$}1kBw>qgT;;y`4oxB)xhkCDA0`P zVAZN7av6p%fBoz6X7}dRx3{LB=z7{%4=JPGym@ndeJ!tE$#!%0;@S4{Vpwm6O+Ssi zk*k7;C5r&&4rfjbHd2@oMBUAtCm$PfaKL~)%(dD)0;6$k)oMui;S6?R$&!+=5S(nh zy?OWMZ7qj&KlFXiPCfYc-PN0KzrA|&wgB4PX5ASC=ndcEkE$u>mVY8g<=2 zXrAY>mOKAo^w(oe=%<_IAL8fx-g5YzJt+PB&v~B*=^lDSIVk)z`0)#ZMNlvmjf8WG z>r<+;Fmm3${OrY7S1(_^5>Bsv|A*aJ)?8b%kYqN0YM{*7&%=#uGR)G#HSTP;Wfg** zDG+ozhp_HWERb;94GRrrrcNaH{mypRH@iZ#-`(==23|ULs@el0QcBtF_p0hF>+MEz z=fn!;lsR=yfN)MZM%!(|QdiQvNGeejQ2}_qbC2uK0#PbpsWn?G13?*-f zK5wq4WJfZ>lI;s&&0Q{PZ*Okbo9)^2&z`+}@%fj3-EX!^FtWJ|9mhV!WD@9U z{LEtozfYC(KlZc_-sj)1=XE&qvwF%dT#cBZAT@iC{c(d8I7VuE@hbGWiw)lt+oT^fMOY>85>L*)a4>7K2Ppl@xRD%^pK|`hY}4h>S>( zQ)U5MRV|0Q8*43zP-}Vj`rEhPzTUlht)<{*Rr}7@x8^8^gOsvDA|Vm!a$?KF+hGh|VyInEciyy+AxWaJHe>h6qj9L?oW>g`x|MK`%SfBE9s7oR`> z{0r%aYHnb46A^7DAO7Au>cL9eCqK;Y&lEpR&G{jJ`XsHe*&pGdu>aHM|M#Pg54rT; z`}*3G=l{cbL+k;<#c5aFht>MoC8@oA`&R$-YAjldnUYDUOBkkB)j=S((^?cWldBtG z%wS`3b0$VuT1T0hn=~~P!Afv4p6>&8xRDpPD$ta~8HM0PqN5z3#dXwLz3%tpySHPh zNRrf9-6i?qU@V+F9|l-W!Y%qRGE5zE36OsyY{%SCJCGeg{mjG$C3US8`-6_v#zXn; z?fCkQzq=9hq|Bx2SVurraTv2ZGr$lBfNI4E(j^imZoS=wAJSyzIgNuh18+aF$(O^R z^BxL-Cc|&jX2M&l?Te8lZ7`l}J#H**H@K=e`*nvrmLl z;bb~Ot2)Nr?&`ZYhpQ`$BZ}7B+wtlO*Sn#p5W2ClR_x0t?5-dh0Otgd2Vqo=BteKp zLJYMg1;nP-yL&y*eoUZqPRN~u$l&{G z$?IV(yPbk@JFW?5AiQ`XA}PUuWH7Jl76J#WO6C?$pv)}7;%shO#!}zDdi96@^)I_O zZ#ws6F6wN$a@%wR6LHw(5RInI0*VRbYHsSz22PTbbeWT&AFeh29F24BUtH1l(Z}#8*>5pH( zd-HbN_qyGrl!$6js+zf5_~E#bnlsnp02C?cG6XOSrASk4f(adsHNZk)t;NPhNFq6> z!P3y{sH0jkO~fLUDG@vwR8_V1DRrHsoE=n+sx^~pbuX^6-;b}~zC%jnoRg#kVI^(x zvy(8~)l{uoorK8%xQw+FJCv)}-|k+0bGW+U7(#ZJlzZWnli;|mE3_H@5mhtwij*KZ z^__HCQkr$UAYz3s8UD`H3jDMT0|0TW?aXgOR5Zx|B|Mc(bu3zHeRp$vyD!@p=fC>u z*I)knZ`0WpNs3l;Ct*A8{!tWma{7<0;JEnjBe6d13cri}Xo8a;CHPtDd7h}3+B7Q` zW3A+^+hk^ARb}sh^~KrW{FnbKyEk8d_vZDtuS+R8=T$$LnN-T1ENv&EWluz=q{S4K zh@6F(qoZ;x?U+yQJJw1LbYw^q;E7==Z#I>8byrN?-30Cus61x@9El+yHiIN0O<*;w zlXPci#_W>VZ2$J{SPqbul;=mf&fO%UDOFfC{SFd`?rgMoceOCN22JDu~d zS`TAA6dQ{o_uI=CpZ)4r&p!Kn-*x6*wHSdpEzt}AvE=VA{>Qv}{!)@0Jao1{c=*p8 z%f;^+dw{e_05uq)Xqf8w(Dg5V_4)3*Uv>ZAnSb-AgX`^hxH;@8rJR_&OmIL* z-8#vA?ktHhj8N;SS6Ydj!5yc*qpqVayMTBXlkH`<9}fpr9mje&99HV&N=}{mIHdjz8~|$8o+r2zA+ZQp zVhf0iWmbyr_lJWTr+jg7`RwJ(^ULSmu-=oJnl63G%ou#<20YGs{ySrLFHhnhz0dzx z&L5(#pP!?ygiSTI{(5)p^HJ@u<$*q#mBvwpM1Zhsid;c&>HF85}}A@v7{!g|-a zVc`ho1|t_CaydDE!pY`%7m~reWzg(YO}a@-5%##M#DP8pnq7(!&AuGEo*goKhP zo0=(!lIc7WE*$P*7OQyCGmfczcPBMpnwp-_pIsLJa(@afu>7uoyOEbt4u?Z=&g<3r z#j~^X^M17^7OTbZz>WSNkNaCdB6B#w>7Ika!y=>yl@GJw$^D1k(J**(P@ex`@#GI~ z77x-@m%3{_SowRb$~l=cvbht92}X9fF<@2)A}9jjS(8ZLZ?-Rf_2u8(Uhl`NtE+Fm zt#7XE5;^xPf)y1J7AImOZ`A`bRU5sE38(BFvuQpvGmb`iZcfAycQUd904T0-CwO8R za!TqArCaJq2ZD79a}zKTC|p3)B7#Uvt_tSN%mgN0Wf_yWrx@noZFWdb~hy_cO_RRr*X8s;!X9Ed3%2L#b15#;_rTKL%ywJ zH8HDZQ5n=w^_bU%rzz2KriBgmm%fZYs)N3?HcMgfGRHp;8csgpWcHYu@52c>O@o>z zYx}`n!+xaQt_gFUmbz}E6XOAQS8{TL*7f%6*MIlFG0E#c{{C=vbMyN3rr&RJMot3i zbKra=wj4*y&P*V4aENMV!q17o`)J$s)GH-IxVE0kzv0bYj4r3`LrQB^cmzS3> zUc9)tcoxjEU;!Sf3Xg@K_{sbIpE$DqKtR@V{iX*I<@7!(=p8)R6WsxR{1q>)8W%rn zpLR#QD=3&l(9<6`G~~VoA}YrIYVC*hU;pR-G7Rf)E-&{txBs@^ABw)cx%Iy9I|h44 z!t6}!AX76wE`DnSeV%a|%pBddW7bnrm_QaQ-kYs>%>zH&Y^j1W*wH3(uB5#Z+spZSi|^ zzCk#aLmIiPwR0oZH##yxd6CsG5^nZmif*b}s;ZKjkyO*7)j?*Y#cI*rZeQKk>-GA@ zXD>hd?B!=)Y|qYWwNi?a1am!-FUO;z)n7)!zs#QQt*rNk{r4ojPaoj#-D%$6w8LY~ z7W=eC*~d*w?pvB*2K6sB2-T_}ueZaq&k4Zp-E}>T-~HiVuXj6v1AR`c!qjGcqbG$a zq9+iTIjNagWJX~^6$hrdv%C2W*jx~7rcrY+LBz6hW;T#T8PVOHjVs5X`fSAnumA#L z2dR-5A+v}eiHLv`Gb2fZWtr7l%V8v|L}ZnniU@f;qY_b_z*-=3l%w3vCU@PKktAUe zrUa4W#55rsh$oNl7Hyr}JUqpIh`|GQv#Ql7?;WX{1>3_ex?Eh&%?t_HeW7rR3cbl`ZMJ4>P#s7Wi+K(mepnH@) z_sM6&Q; zBG!gaX)@@fi89X%i>sNUd*YK#WIjVFPRii1n-GK8Qc5%!04ue+nnkwkDT?UkfEjUf z3IGg5N+zc2(Hmz@U~xu;vm1**ge3t)s;&elP9)@_eY6K8+hO1U3uhUTNk;pED z#GHhZAScc#BtsfPW?Hz!`AJ+iXFjsr``oLV)ncVaogx;$swuguYjrnwLm>r;vna)U zGl&5Z(qnMDxZr+A@$t*s1@6wUGe0rs+7`c(`!vq^p!Ltg0MPfDZGLEp6@EH~|8a-; z$Jzu>hLax6o@2;_*|Pn_SpYyGGSi&Wu-!cS?DJ=zea=aChcXVes1!9x7P(9K__ako z4V<>2Q#DU+W->3(<9-xhs5{>+uMoM_wly(xf;&XTCY`Lda*dNam_h6Yb#o;!B1_g< zi72P$;pYe{f3QfwlqIVZxtc*3B;wJ!Fn6K^Q<|J`+e9sl*kgRy-IX~DBPUKmBJJ3R zaZK9ZgYzz=mWBm*g$ZbG<1JZmt8Qurqu6@l9g(^fQ|F}9sIOXxlwtSw_oa}2`Az?& z>;WG_3VKj(bJFLxAXK%a>_q4HSR(MCpLa~o;k3H=F%NsZRxrIV!uKZsQzJMyJ2x#b zdBo>RzIee-FanusKlB|@${bx~Sd?AY9U7Dd=^PLck(O?UP)TKIq&ua%g`ot*hi;G< zx}`x%8l)Q}Mrw$mhWzgLJHPnHb=`B$j1bctmtMxvVw|DTK71yn*B9?plXdIyg<{2PYg+6v-u^U?cvE91@Uh&WQgzqol_+cE(>G}m zERe%Nzcmk(O4@zX`(+Bc3>LKnksL>(#(^8Pi>}onR)|YXx_Ir3{t3&3~jq88WJsI5uDj}{f zxdcCkpTAzH;+uZUgUn(}pEiDv|NY?aCfRMW?&~npSbdM{_kYJ3S0}H^LzB2_c(aTg zerhu7-m-*pp}bqJkF%DKK0$tOF+E{QS$r%oc|ACEn!k3882~FwAtR7E z1U+_|Z|hlqwK$|^Q2!`k0a6=P-PetophsPDJ{91gwHPT1c)?OSt-F`m%Ne z=jLJ6?yP+p*H1&RZu7nZykE)P%$)Si&?>jkQ;cE-)3EYciHv8}2KHq;n(xcD#OA{1 zw4i0a_Ot@OqB3D0)?f4R37J!yii&b%JjF(7jmo{w)`0CE9Z)JMEm_Bp&T7Bb=}Z^r znz>gpP+C12@YdCp-i+n-UhP)-HeK4d>WFl164o?MxktWlr}($GG^r5;mpyXzH_7+s zTRctPw3U44_TeRYu1LZ1y)ucPG1@}lrgoeEwU*7`e|Xauc*}m%%Nv~igt5sV0ZY-9 zU||cTL^Zw%#2-JyJEeEHS>L@KW{xcft6I)V_x_3$`$!WBhED%>wwvdW{ z_{sKt6^Yp7V5}@7x9BQa*+x3!1fTg&Ck z<>dzr0AuDF6x6xon6}8+n3A?UScaF>GDzB!-G8iXMZ0PTx+io(=Wt-IMn6Ax#7oe^ znm%hXq-$E&*wvs^2ohCFl}r{AK&tyxh?ym{3uZ2@l2Fod=EIs#PVs#LYF?h&hIFSj zPtPUgQ1Xnf5Fk29K30Bi?(zft5g#9dA1;|6H%Yo~SC1by0mP!b3w;*r(c~$VX8$f! zfx`PUNt6cuN5lP(^v5#`SJ+yoq#8ZD_^+~L(@5w0+lldWH&&f`e zaP1YPBxezrPot(KUD{s|t3o*~SSuU9e^@b2%a*gWSTr#?c6PZuu5xy0>^ze&fUlIZL zT(@^CR;;gIUXTP|H_JY3xdh!NJe~{&-=_l9daK{<*I^m%j7FV5`_^DmQMZr<{QCH6 zcmdhzLPxs);5_GUdct!zVb*RK=AoULfTNNU%cYz-NWD+Xht2x~m{Yf^N%E)PMOKGE z*anL^@mTP?7m!ZN#`{_W`%38h?v}T&`WleC{P+|-D%ltqeXPV@;~}K%=Kh>s_Hi}; zjwLY&zw!ZMykT;A550FY73#ZdPSmAjClp$hvow814#1LVb5vkuh$cRZ;(cZ2eNm-jgox?6ax{# zk7F)Ds8!KmI&Vo1Lzm`k)eq@+CUWj6-gqv-GL>htlA+XxWP17ND%STm>Z8$* z6dE{O>-p00RaCDT!yx}_U|GU=e$4*Y07^rdv(%zx^C$Vq0_|tS_9J^-8MDj1YznoM zaZQ>RQRac#-Z*`Votab`N|M=oa_4UJ!;22eg9%BbU19=FWXBa%`cmGNKVQ#>6O_F5 z8VLmZqtseTN8UlJ`p?75V87el{iC)nz#{x~{c$;$o!GvZehEQ>yCqk_16wL>og$;&=D=d!OB&D&c&m z3h6DJ;p|@CMb0uh8JIF;>W4J)5@>w+_F=#q;PKXsk1l7kb;>XLfrGLECddMhR%@h} zty6ZDnL1V!|00x~m#}PxEIyW89XYQX);?%8N0*E#qzr$Tbo$8|^j!L<)5-)o`*ZN= z^)H?KBK?}gvc>Q=N~+j7-&Txlm;vg3jmouE>Z{8KPWlv*!!I%Js5MJK(o6gYdvw%_ z9pmHCBLdlx%k%cDkUTY6IvTPEr(z4iaVcwQHjlr(XiQ|C0wbj0>h&{yc$Lw|K+8-vsC0q z5sjJ*4a~im9|pY?`CCyIMf<7|3#2%z&QCN!i(l)s^Nn3O95>qdM~b?%_A(+3*QfGF z0+>_)OhypW?}i~HV6nR(=|v3VKlT0C;M{yRmn3<#UeaB`v~Rtap*F2D&G987O{r+e zrUJKT$IaK>z1}`-BCdG<^ocJ8voFsim^38^KH!o2e-zUq$CjbpC?~Jr+MAm_kczV3s~8U zu#Bb7G?!w@E#L2X2kYIqa0sCj6D#=J;>9`myme2>o65r=C+PKzS-|Sq(|imN>`w%s z{961ZcE`NYpvBxZAi#)lFba>e@Khdlx_e}puC82fM|AhoPF-DnbgG>>X+@1zqHAu< z@V?iw=4$!yk)SoaBd=G-rAu)r@KK;a>DI}UtY~9#o3as|T;zXyc|?#4{V(IY!R6q`c;WfNE}!G6b;?{2*#Kh2Dlc&6&( zUhv)B$V4!DKeO7Vx%p>W0)~#(8@4U^&ptla(;719MGYAV#)O7X@)Sb9G^{w5dw1Wpyoc?DzHW3*Kngy-lyF z8Y83>R)P_m_f3`-p}R`M`h<1aT$x~HuX|OeR#!RpJbxFnDp+D3&xnKPFNqWBsK5~W zS6qf7Ixmm! zH(djSX&9Io2#F(kz3ZVZKikry08yq6BULIur>qMo$^39 zyZ6p%VH~aPKnf*6=Ek%usjG;+K?8~S=9J#>@r@k2b-_<6gonY_8dzPqyukNN z!a6~z*fjjgK+1gDTG_jOf$Xwjc;&vtw#!NNB%UYa5V9;-{f$ zaw!T2ZfdNe(W_KClJW7Bk)6%c7i47ONi15miVw>OIdlD2dA2Cp?;Uy)dmVCTQ7TsJ zZ1Ib$#LT~6EWQ7*f`i#i448F^;$=Et2GgDYB_W7dN&b`n{gXEKb0=|3kQ$-gs(-Fk zx_i}&@_9fZr>pJm@BHK0*m0-d{om)|ehpJ(brXE!<1&8dCxyxh4|jZzchh)?k)fkA zQ8)#IVE`naPHJP02@FDWiu{au)x;+u-+5ewSW{ePWX z=$M$=+wPW8^>`}06R5`WcdZS_#$(H|2$R|~**;y1=zyvKDuyqh;`M~s!E>sJ`q&yJ;EkSc6uyCctbVu2S~ZnG|pzAUfiGwDp^AdJZ( z{SN~9I>8HYC6AXb4`0|ulk#FY?U}q=cKRfG&QMCYuvsq{r*RnOw3igGMfMA`m2B6UOU#*t|yI+ID+^4tl|; z|1d8{&Peo=k4g3e5*U%rJzWk+Y{}W_z~uH@u>je3{To4dIrAhdF(*L~WI{0dO6x5) z{}fNXH!mBe21CZ~>Vd9F(8Hqa!^Gq9&ea63Nk>&m>`HA6XoH3COzLslM)tPt@$4!X zH6QF56yU+nwJWOY`E0oEs~UEm)Wl$~c_IR$tyyU;jX;W+YAP| z;;T&;Sw;QyymBUZKKa*K!j|acQwxDM82)c1D7%)q&c%}TDkwzcBIDES?SAS#{U&Y0 zC8a!MTeud>@VqQqGjq!Ew7z*sdy?qon#{z6NQ-d3T}H8;0{+2B7s1Gmn_&7({)-s% z?fbpGz0FOt6e~4G3&#TCus-~pM36cDblcky8>G_#W z|1elYSbrwYNRE5{zRNL)boEyj_(2dmgnVIa_KHgm|3x=X3wd)lJm2}g;=s6@gbarc zf~3KSS>QW_syVS|KNGR9PnDjl^J}`2eQSOptX9bC>=cCBel=3Z^ZxjLXzKLjWMgBa z+h_Vol9=6pYM*J|#FJ}n9bJs2c0Eud>UvHzpYbwD)ueJ@dYzDaV0C?sHeVuMQOtb& z&#mruz|oNN_SWIymBEtE)0zv!x=Yv3;Fo`XG2fnvE=9*P9h$@oIV`I}_FDt|(Kr7q z&~8M#S~^;ZJ&(xn*046fT%kU>!DmAnL6PMNs zD)(+C!Z?zL#>Uk2Q&^USiNL=|+pk7fHUk8d2n4)zt9qs~50pf9*%!JD4V5ASIZLQt zPNvp+)8M&;c7VBlz3TUIKwyFLH8#S?;(srGegTH(zX~+AsYwX&f2t0}5i}|C`n6uq zZ!qGyoU;OFfcPGBxvA<2dJ$oYe$DDIen+0R~pXB9kc#lbqQ2PH+#9! zT$0{CZo`N1-WfB}Kh5^!hlp^z`QYn@bIqym{h7l}kK^xI`+qq%3^Dtl9`iddWkzHd zhyHAN7n$frSmP;XHV7l+`}`oWGJeBm=M`4&886hU9-Y_; zA9j9dt+I$4Zz;;~YuZ-yose(&Tq^caG^a(iu^gwe!zeTUJEkN>jEDD7R4`)Nv zoh$r#QsdWu{j%k-iF)5(i`PlN$)6HQ zmJi7;MxO-5na(%ljm31YMmu18j$?%NxWR|}z#k~Txbx13PJ9~h*QV0u~`=@Js};>i4%?dM;>RFvEHi7^ec85^rm z<)rM+v@PK1?biOQB3^T@XbBOj7%n=}B&B?Zbqsk(!Y6ii4Q!$PZebOZwn5kmo<|v+ z#zj^DJ@e$D*v?T0D4v{MTokvb3YAHiWF^GJen+zH7M-hN2U$N2$7kjL#uiC~KZ{sg zy_j|ByuKKlg~px!`}gl}4;vT`=k|)yy3Hvn#G~l=u_b9}Vx7Npvz6}EC8~Ighw+Pf z*6;A5@`xds?AuZDt%cOFtcZyz*3nPA&4Y0j%!b;OD_XMI@|~lxvDlLJ`kFH% zRzL3{?5!RcDU=^uetYVtn3$NjbeEWnG$U~o%s>}fI_xKqIe~yeLzT?WwuKN9pYX`g zE7>_Yk)->rIcsX>aVYc((s>KDoYF+x6fN)YyKXcmXX^Uf<7;=vgKK2Wpqg!BNGorM z;hT2L7+VkH+jas8)XmqnI^6Bi$C5|%JCc|3_RwnonZeQu(p&5YWGu1_v*ydqjfvOh z`q~PWF2$W)k)5jadt0DJ4&=ij%_Soxk3%;u|%{Xuu<05P#Uo$ij@>{Z5>lAxhD zbrmCoGAcMBGLl%67L5iQU4(rm3U00*W^);WH76dsoF2RO+{z~X6wdjYDalCk-bN^e z_v9Jzb_L&z)dSL}$YmFq$5|VV+<+*7xR_9HVi3Ie#fZcR9*|mjnPdP(!(0ZYTw+{b z;}j_L^+>*E661W;VaUREyaV2+B-)AXLkK=bCB8$x2@OrKUZ^CY}_DO>T z%SHHC#jMFs-aEvRLH^9?mRaC?GAewWzi<@szd{-t&yPyc#ZNF9Wo6~YE3qAS$kS(! zPmGgBbH6}R%g;dcpHS|*>CBb)lNT^BG76wHf^O==3wy!zq3!}Af2JEkKc{~VE^D8~ zxx-sPw}lg49iR3es*C-3{|(zGx%l7D?OdFHuxQ&BBbj^T@_GCIN3eKK6Dlc}AV`=3&!-l{pXNR*_TpIO6E^4x3{J0aD555QRZn z5EBDKABT@u%N3BJ8}+JmUZS#UVms{ZD@rM<^n1EeGiM33K0m$C#XRKi+NOQ-HpQZj z`Rxo99Mw{vXSHJTs z;s#5UhM6%ZJ3C&fut+U0hZm%ZYt8iVM-h~$Fu>ji{`G|BU}$v~#i_x|%ZnQx`s14z zLh#t4sI)d&OB~@i>zJJxrNQ@DjC!|8xu& zH&=j?UmUiwJ;riNEt+U$2u4#d)z zg-`I`(L(Tz#rQ!Bwgy#>WKB^|W4_e)sN8>bA)~XYS%oyuJ~Mhu!>6zO!RP0QR&je# zMJ&_u$X1)Rwj4H=^VeR6;jLcgPnt$lfAj^qQ?E`a>_rF%s%t$??_En>b`}5OEZ`Z5 z?A-*8k5p6k#Hg0VRibI%n2K?{xdzKXDT``cgpo2fUVge7u!-d-#Kfo#rLd3^7pEn3 zx2}3q35QPikw*JS8@{!Bu|QY&sEk72e=h8-bnxBsN4BP`m&Eq}5=Ug! zlRAL#!R%p2s6#zbEgbCmUvX+@8vYwUT36GqbwVvBsOa!C2EcSq` z_**(Xd#tbGfdOF$nUB8J~upk3*x_Aus6wLt* zn>enZfBj|Pfb4Mmg^M1?x;MIwWYIdDA<^AU3 z*?d&7#rB#*Eu-@MUEE;xB2UX`d-n^T5w~L^=NYa6V}Z{7nkr%vlE&FF`lWfa@70iR zjlibifz1ua$RuNrbq6T|4ipH#;jxe!(ik8f4%}IAt9c*#d*BvTIG@_TKm;%si?H^^4YUBoG&aA znW{KBuTpl}$`20O-a?_wfoIpr8ZxvAgCTm9U#>c%&78u&lu?E;|BZXNU41lcj|(2j zc{G`ZT&P&kOAK4Gg?49E7#}+OUY_6PKHeb!AZpRA)^)V|P)vMnL6_oS^WVwc-Q8wy z6mXTc8U3jpq5(@=9?s+;dx`8Zs*xSRdCl#^Y#XAS_OX#M6CtkcHBbMv^n`?j%;NMh zYhatv3tL;wsgCwm2`CRMu@gQ5Eq?l=|p&nVJXbXzMq z_OfOE#YJgNIbGuAu8GFA!DUqk0)-9`$(;3+&Ye))J~=r#-5LbS3Pmmcwklv}1rlHB z3Ru|}VREs&cZmHx${tEX`V4D#JXs+TC_1c0cHnU8*nVKYN+bAYFZkXi_;If!mnyvH z#54=xtJmLY;S}t0hZk~nTnO^WwTtY{pB4TPHUH&=>%mpA=ia0x2Y2&U9(Gxi z;2#>9Bi#DsI|LdbRoqHKK(;7Q_(scmK!S&JT9gk^6)_G*^W_F##F`k%`pXP^9J-6- z$2Zf-Srz5A zVG(guG^H4Eny^xCe0(r|OrDkn#r^^|^wm~f+=#w-o8d~O4m9qwFjE3>6UTXR@uGZ@ zwZ?^>wxpqx(XekZ<};54T$CJ%f6$3C+l)RgeKis)Yr(O5J`2YtSr`gCAYK zx7On6r6;RLcZYxPrj(hDrNl-8%!Gnx=eDrPgu!(*j&Y8)me_G+XG?-6KgPy5m_y>V zswGoM%KpfbO8R#>bT=(MnL5g~*|=BTVh+xwH*-FqZI?ZAN66nQ&)+zK3uxYOz7vK0 z&Ir&>TU!mh9n#~iDm2$oRdmb(uiWFr$4@wBuGZSnwdRE z?%o_3a?VcG{8lQg!Tc}7K=f;0A`Yfe$$6;2KLgRWQ=b4gH^Iy?Ye7+1?4tki8~nrU zT3qQ8b`t1wvqjY$+dUx#N(`TMNy^W7J$ptWR}Jr94THFb#@cQ(vzz@U^jDTF41K(> zMr#A_I?EjoxD#O=b2gPav-XX{^?$FguYu=<+X<`q&*DfZ>FcpALp}|KUfSJ!TKb*e z$y6Z?Z69ePc?=M*YV`uHj^;(Zo2f~d@6hHw!~j_bbP3bKtTWl2AdL1B(lC&}^Pa~a zx@5ssyu5&u%B((|BJj2R&I#Tni^FmqiS2CgPsBQZH`SNylR^@)c-QJ*`CWoH!Ckt7 z>3ZCC_n*Acmtag5eARu%Zx%*l)S|k_01gpwdUrcQ&F5TIt&74b@UtPq0?}dUL7y-F zGt;6R90YKh1^>ZO{9lmTGVA2F%<|@~EOlkYPuu0z&)ym5G7WVKD!M9R3%s;cgu=+P z-J_zSJZDvr#pIqXMmo?p+SdBk<@I*v_yvmtx0B+{4fCB%ani{6>1LT%TI`UwtbR34 zM-B6O$;&~UKkp;l19O5-4bo2y&Cv)t@rGom=H-3ykL zloXei0N~b2%KcWPI*}Hk)}j>)ofCdL({)mq{Cy6aI%!D8n% zKkgnk87r5b?jKf@{OZ8czzPlO`V?3_+v6WW+P0$-t5De@&G>eJSMOMwOxRPOZ|h=q zxw`Z2Z*v#=??t^0@P#v>dki**(R5&J3^L4aE*ALjwa+Qk;Zr_R48-+3HrDa^#A+>R zsj+sAX^6iTAIrktfu7C6TJ!(ld8o)G7Wvz~2i2i+{%ruUx<@ew(cJtNy%k6-r-Wgf zQCubMF8rQ29?S!a!+%owviQ%9kxEy_lAu$^gv6(iHLN>F+V@8_gPzA@>&}&(Qu0lz zc!bM_CNh^|pT`92W;QOb3(aK27!n4zdJDMfcn;ccv_NCd<&4LyA*(1%DjKc`DVpuj z`?{~Y-zbG)s7lB?2n2&HLKBA)VnH$NXE6W#1&hk3>rEC1b{ee_D=Ze_0s#=IJ}e2l zv4&hoIC0MZo1dsAw_~&Jv3gH}zj~~jAGd3ob)5`fltye8qx36jlKw}6sC5_r_qKDC+a zY44M=g-pZ-@JmQZ$w){DV3b8H%*=YY`Fme@iDzq%EDGMB*{4_J@#DHx`m)(`oTiI? zDO;R>j%ATYeofFwzyE8QM8cc8V=t1f!I9irm8nOOWMlIs{3?eQ7C~Di#P?;Ka-H{| zt%#IdSYOTJSEn&_t4*EN(`IPEg$&DThicyO=yF})^aNb;L<1r?q5N%>tNV>J>%rdoG7A2&=;vr}(^8j>fdSlu5-SR$A$JfGb1 zD0}(x+{d+Ewfoo3BdcG;Ko0pw1Si_{cs_ObT#o6Qborj%?Ij;~-kgo}Z;#ibO1H&q zV)F7Z{wq3qZ=vb7=o%nJ$DEy=o1j!EH9=dJq!)DtkO;eHv-WPw6;#mh*f3us%h7SN z&^wv5A4H!HJsu?N+Nf+iI5@aUA$wRU3@?9P)f{ zm6lGCk_RccW8svYPOl%GDe3Ega@pxJPbb8Qc zXTczqlOIL(0RMStuYU-QbISl)$j61LxuY(RmUa13rX>mg!=KravhM5sMSm)6rC;{G zLRU$S{iT*?`1hDRxkEt(adC0<^;SakzuA#gPvhl^%yelRj%xvU*J{C`V2BE&6kE<% z!H)X@CyC;rxp}*x<$f;9CE+A!+O+HHYMJQOa}hZ>;u+aeh8BBB#aN3YZg_#fKxaL7W zCaLB9J$W?L;hOWMmSmG_EfOM2A7948uh9QCHvXL-ng;ZZj<cF2*YTvr z_S=h%qE`5AZn3~@O6(t?+L&)o1F%>2ovf@OZKf*iQ8{p@8sPmo;YXJuiwvx7*PnR%|`^0rwlAfXl%WzooSv zp`>Q#ki%iyRAz~6K(MKp<2{Y}92{c~Fhjrz@DHRYsn2#Ggy9opYKlWWFrUQj3sEcl zZ1eMOPJ2aNZ_b}FkrKYiHSz@P=DV5Yu!u|iOzs;lEmFU^Qsa&}ip;yKWv=R1KQC@< zXz=6JF)eY=*Tm~L>UFDUX7er{?<>w&jl(PA6{1zt&g}ZckA)CMxN4;%djY3s{q+cq z+)o{C71Xh<2I88y*kltt`2t%vH1tnnFfrW#a0X0j-OvB>EI>2OBF<+Jzm{O6-%-2+ zRr=L5v1LVwjg-B?B~XSOUI1IwmcDG`Cl9kF96;1A8v&(?DL(+eY0mcBJ6A!0{$-?2 zY9iVQe<<)hM7t043T)2e|K^XV^6AlM&7P_R~06C`tiQmuiUioD|P+y#5w}q zfozIzM#{^YCwWwuO4nh^_5Y4&~lG3u<4x*vpwai^7;h;o1Q<{zqNrX` z7n4ly|D1xhI_Tw0qeQ{>*qab5qN4>u{4rW1QkA#AUC)H=@tjU=pet?$14MQAb2~0x zw;dy0HXelssVP72;WUaCju{;9EavN!w6qT{GvS{qb&`iHC9(k!v$d+ef`*wXC)+rV zc;L_-{DD1^h_>$SleYNxDlf$HWYHg~$gt03=o0|ag@3{w5@+9HRqQ81(G1%7CLUkf zbeoDHl{CT-ni7j1p`K7R3h?ywJpFfCB8wj42PQ=FZDDHsVxkct#FEK^N1+@|>*fjC z|AFY9(dS=+w><011}_ANT64|o`D$$(f_tQ^LJj9@F8%PElhg0R1A^|7Ze^SDRhSnZ z9ci=|8E`;Zg*w9I3?FuljDQyBKSS%m^* zy>||agJ72KS`#E%ExL+{2&B8KV=Lg37YOH<*=rBg2Z-?~DSomnUbB&mY&|zrm^Z&K ze#-i^1OwYr4gwPhV@Cy%fq@Fhqfc2`d7D3izojixy+r3EL5VFH6b&N?Wh^oHn*Kv= zm7RtDBYE`Dw-8b}Ey~1OBc#(CpdTE#5u<%k3TS z(QR~}3}o9k6MRr_$Hoo+VR6p#XY2)4Q@TUPMW^_`KUY{mZ6|2ykM;NYAe9anvNCs2 z7W-Xoi{`&8+s|H?vVC0E;d}V?JR^cv$fM=|AwqkpT|w^Xo6PkGCKw@TBgq{&eu zK}r7>d~#Pa9)<}ji==t=nkUTf_^6H?Rz3?aJD9ci^!84*O8=pmITOrJ!(Z>C1+9Lf z{vQqPY$11n9xC6O{oQc)TXB-?bq)VBuWt2N)bj9ul{sB%6h|q#n7m{B)#2i8VX~2y zT}~Lw(Y@<4xVPy9SF5Y5_AMUc0IXJzN3G0R()k+)L!Ln81ubvm#TS~o(wLCX*^LcI zweK(%4jhd75mY2&4s9=mPH*b5Oa}hqiz=~0qArBRwiIo4v zS$|t|>f^=n)fs5CU;Kva`dMHK#i#Y_Ms9E1}u)m%Ph2=dLZH(vS zDvzKP>(f*A_`5o+UwmW`aSm{?^X={zb7uq4VzCVWslL(?=YPzY1SCZ_iA+R&4)D>|=MR$pg z%#zK8%d_6%+4XIM0Ubn2B;aFp5)s8^3itqS?C;WETl`y;N@v+e z66Bf{hSZXm^ZSbl8PLY5pcTvhHC%N>q)96G`rNUyfb7A0UgwF&k)ViyhRkefrERrc z#*UkQ5z%#>Daid(9DY%@9iE3Or-Fzo z`-mV%uH(|QKq|{~x%Yh95NBn@KgsL-c`TZV#f;At=}R#&z`~xsKt2^Uv7L@cigEKu9?TwBSh}z9 zB9Lc|K_Q6wEw;O3%dH4Zl|kYY2CO?1qNH|i_j1%6>918Mzd&pLV@Gk#a_^Uk!*DaDT*=H-2?SukjYcx zuxmZXeukq!sXC69w#Xs+b@vr3^;?W>s&U!VFWz^5bDDW1P<@8zYPrPv~>jEXmvK-*w5@FtREbWb2BTib| zHJ~r`VAoZ`Q3NLze=1uu>Zvc_Dz^^sY1c~;fcH~TDU#8aHTOs`&Wq%lcoj7+Z1T#k zkkM;4?g(D83U$3A^{(ESaH6dQJ%o-tFgK$x3WPJPi*3zmRXm7I<}ZLuvU+sk5)5pJ zccOQ9MpCEShVtyRXP^BWV#|Y*RypwFkbX300l9^(&nxe>zFHq1-P5!}FbIM7a9PZ8 z9(Q*&_WcUR%2fTbX!-+Wg`Wr+9!5ZF4@NA5L4vsx@mS49ycjG>l?Sa!3vSkUGW0M* z6G1}Li!MyM#^1xSb2pKniRAeI>d=<8L6W#WJK&U9vo!tbSU4AzjWk`s?%wV&N!c;4 zO;hEVh4YM%lK~|qF!M4r6g?((ZK4&>@dcgoD%Q0v=%aBLYWyE`S{R@a5sNhp|Ec)`!@ctHW;-2MtP{_ffBp8?sQd|4 z?5?m=`9UAuXcZe1yD~M^((4Do+F$Y+#DUq-evyeF0+HJnE()tz6~^`(?6J-6Lc;nEAc~qO7m-6SW$t>*XU4ER!lDL1yU%*>!d`O zY0`H-g(9Z6WIAd_+87KUv~`AYP3pUaepFz@%=o_-`=;9@LoWv6&LYn-4WP8|taJ{@dNvYUa^UA|Q z)f7%lwf^T7H}f=f?=ehvbSF0__XUT?)_D!Kk0K@XfE_1nKn3#EIK^sizRVt)!k5!| zy~Fo_Mw#590Ls11_sY7_h~Eq;weJ^y*ytwQQg+Vp2 zmi{kB9w6kIoJ+WZ#hkkz zp^anJ0yLf`>~i1pH0Q01=YjF!PiiI8%K&K>(8;3<`MwkWza%g{UD%u4W7-|GYF%8G zskTKxR@UZvh!p5r415C~0TZmOjA!U!i;Ji@C9%9|_wFGImx z-h;b#oR>I}^t&qe;F|wL7DAjX|Cf2K51{1mc)R|13p7_6KyCHXroPo+XWW-#a-rHs zM8U1|W{BzWm9Z$|ekjqt&nuyA%`H05DeDt|PWERX3w!|)s-|XmIUK$Z1zuB&!6*W? z<3?+7zDA8c0haiB`U{hjlc!8Uuv)U=3iidCL?NgKoh)}LW(-7&?6ai>+E&B3&sO!4 zcL%7}^n226tQ99MM=S&Bga5BJ`jCON?12NOfwIJ1#d(B1W>assn#kl65mB2tLiyma(jKabOEHzgp6hR9)S z@tl?xy!zmq`ode|Ad9!{wbG=ngR`G7OF{ja1@(!>2&T8Ws`r`R9G&2bGf@He`CiOh z`t%b$a9t7&7FW}~5G+ia6|+<+T1}{>1O3qE(s_5m*L8c-Jkmdk;ZtO`iveL%vh%W1 ziTv#%R~>yh^+z3AkXEJ4s6|33N>8kc0ZEa z1Q}bE#d)jN>P}o|F82NV=olr`wGqDG3g@l|^^JZZ75-sDc+i@nna73Yw#|!AlNOg< z#fmA%V)tyYVgb(n;cKPGM+r?eTCbzVbzcSpeqLCZJ$_>(_SrlXTBY;9o&so+>^Odm z8d)y73d=}IF(nN8%CLYHIo|DY(+kQ^L(KTzS<*+VFuC62D2?i;JX73^U9tMg;IhHz zzlHy&w9uXTZBe!JgI!rpDR?*AdM^l`)tA8y-f`1OjX3=Mx#bMCw~a(viv@`?B&fSM zk4SKx<9j$mi5rGjZX8(Z~nYcb*_jE>tmo=VSqzai+S*p@p<rfGLlpI-~RV2b)u!X9gP8z+(9ctH~HjaUP#mFN}ADk8jk9dv*He8R?JZQ9D#g)KX33K6c6I z=p-ufc-&6%1uT(vtM$_|_?^MG#710ve44hF5dP4reB}cOZn*sHOcQS#qYC$P-qOs` zK^}3Nd>_CXYC`h4kJK+BsotW=n_ zPhv)GS{T(2uSoIK*B>Yr4vjvOVkQCt2*B3x)?u)fu}D~YeLIwkqZ%7Xey)(Xur~Pu zHd#d^B)Csuy6h_>hFCz1i=U0Rs3zTBix>YRm;3nl0%7K4bh|`v{bt133kLgLt0-@{ z119_(jXj&U4>2dAD}rzHOGHx36_w?Z0cTgj z{Uw26^{UOtMW#i=`)MZb_Mc$vl}SAD)wepW8nYJvJyMx%;Caf_vc*?u;MXOkh0x8< zV$usDqVrSqs)zTsZ*~Cat@B}j2X%a0Rkha9*&gUkP&+IwQ0E;{3ML~g{P$H-n*QYyvGdO|YlSjA~!a=K+}DD;cH9wJ<-Is*<|Kuwes{2yx&KUBm;vjTU$Vgd^}H%0!HO}OcU#yDT*BTY1pOdq46)|lPGI& z21>i4DZR43i}s8C9C@Z%O0-98*0hegBFjEX?<;;A;k?@#XnN&@bW z1tJ$M4MeS=(DGSxH}~6{*;t$P;H&ck7n804fsT%{)TdG1Ance@dkZ1ugO3yjyI;@z zfGv58;HAY5`TNxNZ1$(z0BJpelA6f$D?7NYxedZ`KT=3!QYNOL&aSvPo-a7k8iUyT zk!XhCL$D!Xr31^}aiKI~BZ8K6gt&@YGz4WlBiwWF4=Gj^nSM}%C(zy4DO=0Tb(Kl4 zQgH+gBe>3cH0aeOrix(C9I*KK?L&1~mEEJ(k1B_)qdtxZP35-D%H8UNVggU&L5Z?g zu?1oh65`U*(qa-rD5;mY`Z{8l+cb-k2=fm%XymG9d|?_v4)Q5t4)e=# z|6{>pG1QucuDHDkhGo9hkV!ic2Tph%(eou1z*h*5uC~KUO}XX)8;3$#M$KKNAi|0; zM9cGarg}Ay=>vTI{DNFvT>&P)1ASen;mjl(ltqF!p0_hv?_Kt_N#26eZaw1b?c{;0 zYwC-I5~<@wKV~YqjmyZ=F6H#LE5G20dza(yP!kAlu8o}?Io!U{V3cE8wEB}&@Wb6| zn|D2cfz4hVU9|0OJHO7>iS>1ahuSC;auE;d&4IplxG2ai`4OAX3BIz7F|4st$sZje zoF8AS4A&rqG2BW`#0sKR)EnY5jGX5`S{+Vm{MY#Tl_!D1tBH@T4o$|8uMkKWoLpS- zIViqhihf=yLbdEOH;0_Cii;GJF7&mbDsb)PmUjeI4ov=Ky#&-Gvc!m9#8GE8zeygY zo}=+bn3k*jcX=+HRY67;Eh3;9JE?XQXgp9{2IrpfEI6H4o5uFX4DT@&WB59_g+j$9 zCsU+88_gNb#X9=UhG3}s670^ofz$n(@ngf-s9IpB+MOR&(O&X!-6$gcDkr;sFmmRp z{9mIYTQdu3&0v(_Q&`N>Q~9-4a+nH~r0vbUqPV0LGs8R zSs-e)T7*iQ`uY-H4+qblJ$d->;e$sH4-O6vj*l)LJbL`e$EW9KMUjrb7-Oib7|Gh? z5Z2BmYo6#2P2P5+Swtl{uXOjnDsCFFy8YZTM(liS(dWHz0sgp4U?Dx7nSl)T`?dW1$|6DkB2 z37ccj4TN$#CC&=m_89LhpA^z8&H70MHhcErc+`v!?{2OIKsBveLj-JWAqYswL~3w4 z@OBbTqN`(XuGU>6%*+HLA^}K~ZN8FFp69WOrc1Y!29$EQa}M@2pqBp_6>6OfRZeTM9;6KYwv9fu&zn_A=8gz6hY8Di*AQp2>p z_b$&81uM_Me3Jy)cv0>3T#3op!G?$kitYKb7B+PFOFK1|4mLJO#VV$V1R4~TfHX8D zKuq3z$5aJWkwI}aYXo62zrDFBuHLB-UQ$=Ugvx7SyXA3r`iInJ_dFv!g| zuB(Whb4}A28_6ywYfE=8>HcPvj!%YbQmj?(yISB4GmqT|-K!bg>jSZcwD(gPv27ad zT4447&@@fCTutw8pMCfA>iX^UZZf&OxqSWV=K9^u&CP5!DKs=y=|GV%XJSGGF%-6Y z%-99Rr4~sxX-AfJP3e1fLTQa#w$}xz-K?MpKuqkB7>GBSq=e)U?ZVlxKiPX)@0q*y z4L1AiT8tp1Wc9xzCoLrxnK{d{+-Jk_V2~G{UG6iB47TQRu~>Civ?c%8%9tiq89L`| zD&7Y&88=A2XtrD}eW!`h9?d{R`-3Aw1V%Dc^6dCzG#VAffXM!4;5aih4v@+DWUbG> zWm0Tk4{Jlm9wsDdYP&AW1SQI;79Gj}7GX*ILbk<#!0Fr71 z`=p?oGNlCGtKA`FvU~ zmQ`I!h=`bLWM;>l_7S!&to;qFTeL0OIAmNUfl-+P>>9y0N0}_dA!pB)`qnJpyC0ssj*GMAnhTrb4qI_49YlcYD(nB4f5>i`(N(exNNDd*QAc7zPXbh_u zNNQ{v0c^V5rS^O9jtCNu5!fBzKNtsm35v@aB6n}*XW znb*ReEidPm`KTMh#Qs|@3Y)38woojt#cV7i(>0u*_(zC_Srp1MwH&F&2Vpjv@HZiRwryhaS96TyjK7tnX4)x zwE>vU5f6(&?lW`Iuw9+POAxHO4vo|yDR3l0RaNulVzpXXKWU5|Twkq;-rrfz*Z_i= zUFM5om}QwkEu%qU(}zKxJLfF^BxPAdP*5dAWO7XAdF0m+Z&!sS$uOj1y6aL?fs(92 z+w>6z5(33FYSptO?4PRKt0l}A&^#TqOW?#dZm;*__dsc=8*W@{$)X!N4>(|epes}Tk!Q;n|FCIKNIy$;|{L%UO z`O(o4I~0+oY0A1b0X1#-+;!Cx^xMpSUDGdq*ZY5K&c6Y4w|nkBO8^_FNk0La$RXNp zw}5KXa;_H3s;Xv_yJt_o|MuIjzkmAV`tnV+T$HP2QLRD4il8lX6UzxvUT4BtVfaLQc&vWxT$nDE!Y|artjB&MC zw)kLoK_Zj)Sw`%9R&eH#Idwz#$jdefxEtoqx>k5&pEuFP{*nkgW{1u>#|)(05_eKM zI8hsN(&9TJ7J#%huHG)E`?r3pt}*2sb!mkr5$_p|0FwQud7P<~sZv#D_GE4n^=h)1 zD-tnZzq`76dwKc#^}~k`k4{d`-@beN`0=AhkH+J1UZfFbQ4}#oTwheNn?6zpNNJw} zw5{+<>tVBgckOg~BdeqH9@`@%=rv=li5(lYLsdgvPbQPsuU|iZ{`~dJSCh%)`ttSl z)z$R&X0@D4Q$vigF1?Dklv!ehNGNDd5=yP@pB=1b;7;k@OQdBh=i9J4-1IZphgNPh z+h(xW4u!g%Z&xTHLEH8-GjQhfq9}?c&skDeX-*Qc9mlTgF}q`E&G_$!jP#zQrZdTY ziV(>Zn~F#(&_#51WZ_=#XD(DWK45GQ3A-W;D;E(ZAtc+eMKQEmKw4Ev+Br>Q-XS)? zkCG|~l4#6p=bXWHHckV8&aDU}8lWH{M2R43@gj(<2+nz5G2wwnG)%&1k1_NM#JF}XSQoGxN!`n$VlUw-w?H{bmE&wu{&pa1-)KmW;@LihLgo@M9?3mHd&ly^>< zmgWNZW+hWuv(C=niR3e#xAU56hBO+Gn-=79mzlk{JDpAZ z>4zUbeE9J6{_TekA1=oylz8a*E^vp?_Z=ux?uUs;(G#7)$lQ9hI;8-aK&H+Ib5lZ= zOrEf!?k}ejxe9~Z3oKTkIZ5!DUzJ$*|?#~R0R^hH0J@F6-<;C6?})XYa1 zK37+$oGl@b=FMg!oka32{Q_0V?+MhnT=;V7?#17}*CQH-Mq^c=X!llu%HqVdren`N z000psE8P8{XTa(HpoFL=BAJ4jYE*Ky3OI= z&Zm>S{W+Y^It+}|OHUXAvp-8U0#rawjLHzq41_T?_c)!r;=(RV(0wlBk!CvQIzzIa z*%awkPSoKjQPFK%B3L{R@e<)Y;(cc<=R*igcu@$4JHcms_fo@$fI1okh<6=D5F-Xm zI|Y%*0#ZOFU_;ZysK)HpX5Jf9s+|xN%m|c;V8V0Ucu$Fm4=5HwA0wzKAu7kj=T@9g zTg!ktSfa`>0BAHD5duYu355+9kWj_UNL58m)I?E`fEfXa7?d&P1z`#%@vR@6EzV$I zqGG6BFpe>jMHK~5AtprR9>YO^2$-lN4oXZw07PD{k)*BX=_6nUXq0MaGmT(bfkTKG zu`@CQB|s2m#ohuA1_;CXau1`}Me!af0N<(Jb#?&*LsKSW1W+@f!kh;LBF%)Ndel{~ zBC1LTPTt$;J}5;pg4d<_{(;0OETfYQ)*Q?Yf0LDk0-IS(q<&*lWX0z3=