From df0472230aa93a7e1d9f1451c3fda4691336fe17 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Thu, 24 Aug 2017 17:58:04 +0200 Subject: [PATCH] Update the documentation and fix various problems. --- doku/content.tex | 239 ++++++++++++++---------------- doku/diagrammes/getlocations.png | Bin 3936 -> 4455 bytes doku/diagrammes/getlocations.puml | 2 +- doku/diagrammes/getmembers.png | Bin 4183 -> 4958 bytes doku/diagrammes/getmembers.puml | 4 +- doku/diagrammes/getrents.png | Bin 4589 -> 5187 bytes doku/diagrammes/getrents.puml | 2 +- doku/style.tex | 2 +- 8 files changed, 120 insertions(+), 129 deletions(-) diff --git a/doku/content.tex b/doku/content.tex index 547bed4..2f55b36 100644 --- a/doku/content.tex +++ b/doku/content.tex @@ -5,7 +5,7 @@ ermöglicht geeignete Standflächen an attraktiven Standorten zu mieten. Zusätzlich sollen sie auf einer Plattform die Möglichkeit haben sich zu präsentieren. Diese Plattform soll interessierten Kunden einen Überblick über die verschieden Anbieter geben und somit Neugierde -wecken. Dies alles soll auf mit möglichst wenig Aufwand verwaltet +wecken. Dies alles soll mit möglichst wenig Aufwand verwaltet werden können. \subsection{Stakeholder} @@ -16,7 +16,7 @@ Folgende Stakeholder sind in diesem Projekt zu berücksichtigen: \item Marktbesucher \end{itemize} -Diagramm:\ref{fig:stakeholder} zeigt die Beziehung der Stakeholder +Diagramm (\ref{fig:stakeholder}) zeigt die Beziehung der Stakeholder zum Projekt noch grafisch auf. \begin{figure} @@ -36,10 +36,11 @@ zum Projekt noch grafisch auf. \end{itemize} \subsubsection{Risiken} -Ein grosses Risiko ist das wir uns beim erarbeiten der Datenbank in -Details verlieren die nicht gefordert werden sowie unter Umständen -Dinge einbauen welche wir nicht genügend kennen was uns zu einem -späteren Zeitpunkt zum Verhängnis werden könnte. +Ein grosses Risiko ist das wir uns beim Erarbeiten der Datenbank sowie +beim schreiben der Applikation in Details verlieren die nicht +gefordert werden. Sowie unter Umständen Dinge einbauen welche wir nicht +genügend kennen. Dies könnte uns zu einem späteren Zeitpunkt zum Verhängnis +werden. \newpage \section{Zielsetzung} @@ -49,8 +50,8 @@ späteren Zeitpunkt zum Verhängnis werden könnte. \item Das Geschäftsmodell wurde in ein ERM umgewandelt. \item Das ERM wurde in eine SQL-Server Datenbank umgesetzt. \item Die Arbeit wurde mittels eines Testplans überprüft. - \item Die zur Verfügung stehenden Stunden sind in einer Planung auf - die Aufgaben zugeordnet. Abweichungen wurden mittels einer + \item Die zur Verfügung stehenden Stunden sind in einer Planung + den Aufgaben zugeordnet. Abweichungen wurden mittels einer Abweichungsanalyse aufgezeichnet. \item Die Lösung wurde dokumentiert. \item Eine Teilfunktion des Geschäftsmodell wurde in einer C\# Applikation @@ -77,21 +78,21 @@ Als Plattforminhaber möchte ich, \item die Kontrolle über die Anzahl der Auftrittsanpassungen haben. \item Abonnemente verwalten können. \item sichergestellt haben das provisorische Mitglieder sich nur - an einem Standort einen Platz reservieren kann. + an einem Standort einen Platz reservieren können. \end{itemize} -\subsection{Anbieter provisorisches Mitglied} +\subsection{Anbieter (provisorisches Mitglied)} Als provisorisches Mitglied möchte ich, \begin{itemize} \item mich registrieren können. - \item einen Standfläche mieten können. + \item eine Standfläche mieten können. \item einsehen können wie lange die Probezeit noch dauert. \end{itemize} -\subsection{Anbieter festes Mitglied} +\subsection{Anbieter (festes Mitglied)} Als festes Mitglied möchte ich, \begin{itemize} - \item Abonnement lösen können. + \item ein Abonnement lösen können. \item Standorte buchen können. \item meinen Auftritt anpassen können. \end{itemize} @@ -128,8 +129,7 @@ Als Marktbesucher möchte ich, %begin title row {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 1.0 User Registrierung} \\ \hline %end title row -Description & Der Use Case beschreibt die Registrierung - eines neuen User Accounts.\\ +Description & Registrierung eines neuen User Accounts.\\ \hline Actors & User\\ \hline @@ -139,7 +139,7 @@ Includes & -\\ \hline Trigger & User möchte sich registrieren.\\ \hline -Preconditions & -\\ +Preconditions & Email Adresse vorhanden.\\ \hline Postconditions & User hat sich einen Account erstellt.\\ \hline @@ -148,8 +148,7 @@ Normal Flow & 1. User startet Registrierung\\ & 3. User schliesst Registrierung ab\\ \hline Alternative Flow & 1. User startet Registrierung\\ - & 2. User füllt Form mit bereits vorhandener\\ - & Email Adresse aus.\\ + & 2. User füllt Form mit bereits vorhandener Email Adresse aus.\\ & 3. Applikation gibt Fehler aus\\ & 4. User verwendet einzigartige Email Adresse\\ & 5. User schliesst Registrierung ab\\ @@ -157,10 +156,11 @@ Alternative Flow & 1. User startet Registrierung\\ Notes & -\\ \hline UC History & 1.0 Draft erstellt durch AZ\\ + & 1.1 kleinere Anpassungen durch AZ\\ \hline Author & A. Zweili \& I. Cadaroski\\ \hline -Date & 20. Juli 2017\\ +Date & 24. August 2017\\ \hline \caption{Use 1.0 User Registrierung} \end{longtable}} @@ -174,8 +174,7 @@ Date & 20. Juli 2017\\ %begin title row {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 1.1 User Login} \\ \hline %end title row -Description & Der Use Case beschreibt den Login eines - Users.\\ +Description & Login eines Users am System.\\ \hline Actors & User\\ \hline @@ -193,17 +192,17 @@ Normal Flow & 1. User füllt Login Form korrekt aus\\ & 2. User quittiert Login\\ & 3. Applikation wechselt zum geschützten Bereich\\ \hline -Alternative Flow & 1. User füllt Login Form mit falschen\\ - & Angaben aus\\ +Alternative Flow & 1. User füllt Login Form mit falschen Angaben aus.\\ & 2. Applikation gibt einen Error aus\\ \hline Notes & -\\ \hline UC History & 1.0 Draft erstellt durch AZ\\ + & 1.1 kleinere Anpassungen durch AZ\\ \hline Author & A. Zweili \& I. Cadaroski\\ \hline -Date & 20. Juli 2017\\ +Date & 24. August 2017\\ \hline \caption{Use Case 1.1 User Login} \end{longtable}} @@ -211,14 +210,14 @@ Date & 20. Juli 2017\\ %% -- End of Use Case Template -- %% -- Begining of Use Case Template -- -\subsubsection{Standorte begutachten} +\subsubsection{Standorte auflisten/suchen} {\footnotesize\begin{longtable}{|>{\columncolor[HTML]{EFEFEF}}p{.25\textwidth}|p{.7\textwidth}|} \hline %begin title row - {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.0 Standorte begutachten} \\ \hline + {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.0 Standorte auflisten/suchen} \\ \hline %end title row -Description & Der Use Case beschreibt das Betrachten der - Standorte.\\ +Description & Auflisten/suchen der + Standorte in der Applikation.\\ \hline Actors & User\\ \hline @@ -226,25 +225,25 @@ Status & Freigegeben\\ \hline Includes & -\\ \hline -Trigger & User möchte Standort Details einsehen.\\ +Trigger & User möchte Standorte suchen/auflisten.\\ \hline Preconditions & UC 1.1 erfolgreich abgeschlossen\\ \hline Postconditions & -\\ \hline -Normal Flow & 1. User wählt einen Standort aus\\ - & 2. Die Applikation gibt die Details zum\\ - & ausgewählten Standort aus.\\ +Normal Flow & 1. User gibt einen Suchbegriff ein.\\ + & 2. Die Applikation gibt die passenden Resultate aus.\\ \hline Alternative Flow & -\\ \hline Notes & -\\ \hline UC History & 1.0 Draft erstellt durch AZ\\ + & 1.1 kleinere Anpassungen durch AZ\\ \hline Author & A. Zweili \& I. Cadaroski\\ \hline -Date & 20. Juli 2017\\ +Date & 24. August 2017\\ \hline \caption{Use Case 2.0 Standorte begutachten} \end{longtable}} @@ -259,10 +258,9 @@ Date & 20. Juli 2017\\ %begin title row {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.1 Standorte mieten} \\ \hline %end title row - Description & Der Use Case beschreibt das mieten der - Standorte als Test Member.\\ + Description & Mieten eines Standortes als Test Member.\\ \hline - Actors & User mit test$_{\text{member}}$ Status\\ + Actors & User mit ``test\_member'' Status\\ \hline Status & Freigegeben\\ \hline @@ -275,26 +273,25 @@ Date & 20. Juli 2017\\ Postconditions & Miete wurde erfolgreich in DB eingetragen.\\ \hline Normal Flow & 1. User wählt einen Standort aus\\ - & 2. User wählt das Datum aus an dem er den\\ - & Standort gerne mieten möchte.\\ - & 3. User bestätigt die Miete mit klick auf\\ - & den Insert Button.\\ + & 2. User wählt das Datum aus an dem er den Standort gerne mieten möchte.\\ + & 3. User bestätigt die Miete mit einem Klick auf den Insert Button.\\ \hline - Alternative Flow & 1. User wählt einen Standort aus\\ - & 2. User wählt das Datum an dem er den\\ - & Standort gerne mieten möchte.\\ - & 3. User bestätigt die Miete mit klick auf\\ - & den Insert Button.\\ - & 4. Die Applikation meldet zurück das der\\ - & Standort an diesem Datum bereits besetzt ist.\\ + Alternative Flow + & \textbf{Der Alternative Flow wurde in der Applikation nicht umgesetzt.}\\ + & 1. User wählt einen Standort aus\\ + & 2. User wählt das Datum an dem er den Standort gerne mieten möchte.\\ + & 3. User bestätigt die Miete mit klick auf den Insert Button.\\ + & 4. Die Applikation meldet zurück das der Standort an diesem Datum\\ + & bereits besetzt ist.\\ \hline Notes & -\\ \hline UC History & 1.0 Draft erstellt durch AZ\\ + & 1.1 kleinere Anpassungen durch AZ\\ \hline Author & A. Zweili \& I. Cadaroski\\ \hline - Date & 27. Juli 2017\\ + Date & 24. August 2017\\ \hline \caption{Use Case 2.1 Standorte Mieten} \end{longtable}} @@ -310,10 +307,9 @@ Date & 20. Juli 2017\\ %begin title row {\cellcolor[HTML]{C0C0C0} Identifier} + Name & {\cellcolor[HTML]{C0C0C0} 2.2 Mieten anzeigen} \\ \hline %end title row -Description & Der Use Case beschreibt das Betrachten der - getätigten Mieten des aktuellen Users.\\ +Description & Betrachten der getätigten Mieten des aktuellen Users.\\ \hline -Actors & User mit test$_{\text{member}}$ Status\\ +Actors & User mit ``test\_member'' Status\\ \hline Status & Freigegeben\\ \hline @@ -335,10 +331,11 @@ Alternative Flow & -\\ Notes & -\\ \hline UC History & 1.0 Draft erstellt durch AZ\\ + & 1.1 kleinere Anpassungen durch AZ\\ \hline Author & A. Zweili \& I. Cadaroski\\ \hline -Date & 27. Juli 2017\\ +Date & 24. August 2017\\ \hline \caption{Use Case 2.2 Mieten anzeigen} \end{longtable}} @@ -393,39 +390,21 @@ Haben die Länder und Städte Listen bereits komplett zu erstellen. \\ \hline \end{landscape} \newpage -\section{Zusammenarbeit} + +\section{Umsetzung} + \subsection{Lösungsvarianten} -\newpage -\section{Coding} +\subsection{Zusammenarbeit} \subsection{RM} -\subsection{ERM} +\subsection{ERM/SQL} -\begin{landscape} -\begin{figure} - \centering - \includegraphics[height=0.8\textheight]{diagrammes/rm.png} - \caption{RM Diagramm\label{fig:rm}} -\end{figure} -\end{landscape} - - -\begin{landscape} -\begin{figure} - \centering - \includegraphics[scale=0.38]{diagrammes/erm.png} - \caption{ERM Diagramm\label{fig:erm}} -\end{figure} -\end{landscape} - -\subsubsection{Entitäten} - -In dieser Sektion werden die Entitäten der Datenbank kurz beschrieben -damit das ERM besser verstanden werden kann. Dabei wird zuerst der -Name in der Datenbank aufgelistet gefolgt von der deutschen -Übersetzung. +Nachfolgend werden die Entitäten der Datenbank kurz beschrieben damit +das ERM Diagramm (\ref{fig:erm}) besser verstanden werden kann. Dabei +wird zuerst der Name der Tabelle in der Datenbank aufgelistet gefolgt von der +deutschen Übersetzung. \paragraph{persons / (Personen)} Sind die Repräsentation einer realen Person in der Datenbank. Hier @@ -458,8 +437,7 @@ hat. \paragraph{member\_status / (Mitgliedsstatus)} Die Mitgliedsstatus Tabelle enthält die möglichen Stati die ein Mitglied haben kann. Dabei werden hier auch Mitglieder Stati wie -Mitarbeiter oder Admin erfasst da es für die Datenbank keinen -Unterschied macht welche Funktion ein Mitglied hat. +Mitarbeiter oder Admin erfasst. \paragraph{subscribtions / (Abonnemente)} Beschreiben die Abonnementsarten welche von den Mitgliedern gekauft @@ -483,8 +461,10 @@ Zusätzlich wird erfasst an welchem Tag der Check geplant ist und Ob der Check bestanden wurde. \paragraph{subscription\_orders / (Abonnementsbestellungen)} -Enthält die Abokäufe die ein Mitglied macht welcher Standort dabei -gewählt wurde sowie an welchem Tag der Kauf getätigt wurde. +Enthält die Abokäufe die ein Mitglied macht und welcher Standort dabei +gewählt wurde Sowie an welchem Tag der Kauf getätigt wurde. Das +Kaufdatum kann in der finalen Version dazu verwendet werden zu +berechnen ob das aktuelle Abo noch gültig ist oder nicht. \paragraph{trial\_period / (Probezeit)} Beinhaltet die Zeit wie lange die Probezeit ist damit diese nicht als @@ -499,35 +479,51 @@ gemietet wird und mit einem Datumsfeld wird angegeben an welchem Tag der Platz reserviert wurde. \paragraph{rent\_prices / (Mietpreise)} -Diese weisst jedem Standort einen Preis zu. Dies ermöglicht es die +Diese Tabelle weist jedem Standort einen Preis zu. Dies ermöglicht es die Preise für jeden Standort flexibel zu halten und den regionalen Interessengruppen anzupassen. +\begin{landscape} +\begin{figure} + \centering + \includegraphics[height=0.8\textheight]{diagrammes/rm.png} + \caption{RM Diagramm\label{fig:rm}} +\end{figure} +\end{landscape} + + +\begin{landscape} +\begin{figure} + \centering + \includegraphics[scale=0.38]{diagrammes/erm.png} + \caption{ERM Diagramm\label{fig:erm}} +\end{figure} +\end{landscape} + \subsection{C\#} -In dieser Sektion wird das Verarbeiten einer kleiner Funktion +In dieser Sektion wird das Erstellen einer kleiner Anwendung beschrieben, in der wir gewisse Segmente unserer Datenbank abrufen und bearbeiten können. Damit zeigen wir die Funktionalität und Verarbeitung unsere Datenbank auf. -\subsubsection{Connection} +\subsubsection{Verbindung zur Datenbank} Um die Verbindung ( connectionstring ) abrufen zu können, erstellen wir eine ``Helper'' Klasse. Darin haben wir den Verbindungspfad definiert der beim Verbindungsaufbau in App.config aufgerufen wird. Den definitiven (connectionstring) haben wir in ``App.config'' bestimmt. +\subsubsection{grafische Oberfläche} -\subsubsection{GUI} - -Das GUI wurde beim aufbauen des Projektes als ``Windows Form -Application'' gestartet und ``Dashboard'' genannt. Nach dem Anpassen der -Grösse, haben wir eine ``ListBox'' eingesetzt und sie umbenannt. Sie -dient dazu, zukünftig gesuchte Daten darin aufzuführen. Um die -gesuchten Daten einzugeben,haben wir danach eine ``TextBox'' eingefügt. -Sobald die gesuchten Daten in der ``TextBox'' eingegeben wurden, werden -die Informationen aufgerufen und in der ``ListBox'' aufgezeigt. - +Die Grafische Oberfläche (GUI) wurde beim Aufbauen des Projektes als +``Windows Form Application'' gestartet und ``Dashboard'' genannt. Nach +dem Anpassen der Grösse, haben wir eine ``ListBox'' eingesetzt und sie +umbenannt. Sie dient dazu, zukünftig gesuchte Daten darin aufzuführen. +Um die gesuchten Daten eingebe zu können, haben wir danach eine +``TextBox'' eingefügt. Sobald die gesuchten Daten in der ``TextBox'' +eingegeben wurden, werden die Informationen aufgerufen und in der +``ListBox'' aufgezeigt. \subsubsection{Definition der Klassen} @@ -535,18 +531,19 @@ Hier werden alle eingesetzten Klassen der Applikation vorgestellt und definiert. Zu jeder Klasse gibt es eine passende Grafik welche ihre Methoden und -Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik eingefügt -welche die Symbole und den Aufbau beschreibt. +Attribute beschreibt. Nachfolgend habe wir eine Beispiel Grafik +(\ref{fig:class_example}) eingefügt welche die Symbole und den Aufbau +beschreibt. \begin{figure}[H] \centering \includegraphics[scale=0.7]{diagrammes/example.png} - \caption{Beispiel Klassen} + \caption{Beispiel Klassen\label{fig:class_example}} \end{figure} \paragraph{Programm} -Dient grundsätzlich als Eintrittspunkt der Applikation und hat sonst -keine grosse Funktion. +Beinhaltet die Main Klasse von wo aus alle anderen Klassen und Funktionen +aufgerufen werden. \paragraph{Helper} Helper.cs dient dem Zweck, den Pfad der Datenbank nicht in jeder @@ -556,7 +553,6 @@ zur Datenbank muss dadurch nur ein einziges Mal in App.config definiert werden und kann dann durch die Helper.cs Klasse simpel aufgerufen werden. - \paragraph{LoginForm} Diese Klasse wurde für das Registrieren und Einloggen des Benutzers mit einem dazugehörigen GUI von uns erstellt. Dadurch können sich @@ -565,10 +561,8 @@ dem ``Register-Button'' Registrieren und durch ein zweites eingeben der Daten und betätigen des ``Login-Button'' auch gleich einloggen. Nach dem Login wird auch gleich eine Nachricht der Applikation dem Benutzer mit dem Text ``It worked'' aufgezeigt, um den erfolgreichen Login zu melden. -Dadurch möchten wir die Funktion des einfüllen und Lesen der Daten aus -der Datenbank aufzeigen. Den Verbindungsaufbau in die Datenbank mit -allen nötigen Funktion(Schreiben / Lesen) haben wir in die Klasse -``DataAccess'' ausgelagert. +Dadurch möchten wir die Funktion des Einfüllens und Lesen der Daten aus +der Datenbank aufzeigen. \begin{figure}[H] \centering @@ -581,12 +575,8 @@ Auf dem Dashboard haben wir unseren Kern was Informationen herauslesen und wieder Eingeben belangt, erstellt. In dieser Klasse werden die aus der Datenbank herausgelesenen Daten der ``locations'' und ``rents'' Tabellen im GUI aufgezeigt und /oder eingefügt. Damit -möchten wir einen Teil unserer Applikation und Datenbank abbilden, mit -der Benutzer Standort heraussuchen können, neue Standorte hinzugefügt -werden können und den Mietbeginn/ das Zahlungsdatum eingegeben werden -kann. Den Verbindungsaufbau in die Datenbank mit allen nötigen -Funktion(Schreiben / Lesen) haben wir in die Klasse ``DataAccess'' -ausgelagert und vom GUI aus verankert. +möchten wir einen Teil der finalen Applikation und Datenbank abbilden mit +dem, die Benutzer Standorte heraussuchen und den Mietbeginn eingegeben können. \begin{figure}[H] \centering @@ -596,10 +586,10 @@ ausgelagert und vom GUI aus verankert. \paragraph{DataAccess} Mit der DataAccess Klasse konnten wir nahezu alle Datenbank relevanten -Funktionen, die sonst in unseren GUI ausgeführt werden, in einer +Funktionen, die in unserem GUI ausgeführt werden, in einer einzigen Klasse abbilden. Darin haben wir den Aufruf der -Datenbanktabellen mit den dazu benötigten SQl - Befehlen ausgeführt. -Dadurch wird SQl- Code nur in dieser Klasse aufgerufen und verwendet. +Datenbanktabellen mit den dazu benötigten SQL - Befehlen ausgeführt. +Dadurch wird SQL- Code nur in dieser Klasse aufgerufen und verwendet. \begin{figure}[H] \centering @@ -609,12 +599,10 @@ Dadurch wird SQl- Code nur in dieser Klasse aufgerufen und verwendet. \paragraph{GetRents} Um Daten herauszulesen oder zur Datenbank zu schicken, haben wir in -C\# ein Modell der ``rents'' Tabelle erstellt die sie abbildet. Damit -nehmen wir jede Spalte der Tabelle entgegen. Danach werden mit der -``RentInfo'' Methode nur diejenigen Spalten der Tabelle für unser GUI -abgerufen, die wir auch wirklich benötigen. Jedoch wird die ``RentInfo'' -Methode noch nicht benötigt, da wir Daten nur einfügen und nicht -herauslesen möchten. +C\# eine Klasse die der ``rents'' Tabelle in der DB entspricht +erstellt. Damit nehmen wir jede Spalte der Tabelle entgegen. Danach +werden mit der ``RentInfo'' Methode nur diejenigen Spalten der Tabelle +für unser GUI abgerufen, die wir auch wirklich benötigen. \begin{figure}[H] \centering @@ -658,15 +646,18 @@ GUI abgerufen, die wir auch wirklich benötigen. \end{itemize} \subsubsection{Referenzen und Addons/ Packages} -Mit Dapper \cite{dbcs6} entschieden wir uns, nachdem wir ein wenig +Für Dapper \cite{dbcs6} entschieden haben wir uns, nachdem wir ein wenig nachgeforscht haben und wir auf Stack Overflow fündig wurden. Da auf dieser Webseite Dapper genutzt wird und wir bisher immer gute Erfahrungen mit Stack Overflow hatten, schien die Entscheidung einfach. \subsubsection{Referenzen} --using System.Configuration; --using Dapper; + +\begin{itemize} + \item using System.Configuration; + \item using Dapper; +\end{itemize} \newpage \begin{landscape} diff --git a/doku/diagrammes/getlocations.png b/doku/diagrammes/getlocations.png index 32cc8606a394733b2caadfdc276a9e7101c42a16..2269ca90a1506e7ae56deadb5ba4569525aabab8 100644 GIT binary patch delta 4442 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 ggaKo~ILUJQAFyMMM}f}D8vp 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 d##H2A{s*UMeaIwA!*~Dy002ovPDHLkV1kx4x$ z0&hRxIq$r4rsv!{zqvE_-kCec_LGM_Qde7@jD&#%2M32t(Jz;M?E`hec<=Z(nKZ)$!xo5kR$4>Y+6faDU^3Cp zgS7=muYSuD_1ZSrXPK`4VBMp{Q;gm4cC)Ug05HIh;w$i;W}W9U!%UwJ-bwhT15~Uw z?R1zU!lo!iO_>p1n!K{P#@TVyiHlK-v}cYIChgx?Ya3S@8I&V*2wfss`2w8>vF@2V z4#koFgq`XWlhnb+rzRG`!JidgIM-7z6mC~E3wYGovdJfRsZkr>OU;@IkHXdPe`F2^ zVz|EPj*BB z)p#)P$0&LV-N>dgA6DYLL?RxB-YUW;fDdb>Ml-EgFbOUdm8M)XX}^$=Q1HjcYz1r& zEveVj2m04HwwoA|Zc}+1Z%43`!ri^M4;H1UUIsIDg$)+?(0)1FN#1lg4M(a_H$@#cSgn z?Y9j?yT;zPTU(A;>h2sPFu0ufbPSn1Xx7M+-k#31l6zR3Wy&|n#Ujfs?*Py=r{Z2+ zBj5q2cwU;CF)AD(Zrw?hc&9pwsV^J=w)8fxjVu*_d;9kO_BM@vCI0<6;CXr^g@nxZ zu^l7#R91d-Y|>3_a#2zHs*ivpYcG!oirY0}LIajdJrSJNaUfb{A?l~q1jnpMe(+&F z)SKK(Hm_p^f2_Kdkigu`7$r%NFq$>kjxX*blb_#m?{}a6S!^u6yrEVF5=- z7qrCic^pryi(vu10d1{AUVMr;#+jOuF-@0e>5D^VkV9Z2l1DVK@|5rF%GkCjHQx$7 zrnu~S1|41Rcer~uUcgxBi1l{h9=SgXG3O0nJh)kF&0aE#mF3nz)k#_}kbD+xPc90X zU(hajRdFuty6$fnnVtm>VA^!5fBJ3E0OYU(_sB%O)I#+@DS&oh*?&)~tTjDd!)0HB z$)wpu!bYj9OMwS*hFO9@p_gl_(h5Px6NfqqCSx7;b5EbHtGt;a!lF)1wSe^y2n4CG7u#Dn5jQd_y}Z;1r>c9gQ41q+DcCLa1AbGZ5=a9PpCtG$N)L6mr)Oxn+U}mPY)*|%|#m54n zASjj&yuXMCKF4x!V2F&E+{Y9R- zbS6Z|RD@n1Z(o>y`#O>?3a|^ivf`P7$)c_g)_UJ3VsNObRwJRIA!N+gwMhL$oIdO# zAKQaling|vTtruSyIB4n8+<;uG>&N#3tVunAMnX|liT7Vz- zL`~M_3NuQGRKEHKgC6GIwsmy80>hr7AR~18?3_9|S<3G)7=Bd%<#5&nFJU%P+WP%1 z#n^0YKUuUO1QBHb%X&HY?qgYYRw&xBKjgDs@o#Aea7#uVpB|@8M@D9p3txrcYB6jK&hy0H0AvPapUV7&@g4G~KY(ps>+%$K=dJ}` z@1}l94r-j-Qil8tn(*(}YQk7g7Z*a+PhB4UQc`im^zwdS_(*6QlY$lESMSo@6i^t-ox>se*JDEWQ8T z^U-Ty<+5Ovx|c@*73Q4?H@$pbnw+LwAyf)vn^1exYnxnrh=2H&s+-46_IE-X(ri`? z4fn?t5h)z>c{$5%66E#6_cl0-I2wDs_w0LgUoYTfo};~!;y*oJOp|srcjIOJ8&-cb z4NoDrtGsm+yaIt8t3$QIyGoR-4D@(+8S{ZFSDt&W#3sG-wkWJm(wf`Vfo-`tObo`3 zvn@DGDP(q)ARa+TOsghq%vu%eZ^)S!n%<(meq{zOHgI)z#KhjvazaM0oOTe5VEn`` zsC!1XFXv4)iVRQDY>g6G{7YK~NsyNhgEgICmb$0w9h{tm;=X4}eo7BK{WU1f4e+&k zRf`L6|7@ytHUH_bGbbn_G|s3Hu+rdMUewXzuD9M#F*mm-20`tZm=NOUgyZ_3LDlZK zyBoNX$${|+pxaZWsZD22H&;n7&d&Ch89fWyX1h{?XciT14{nYK+uMQ3Cbj{o@kn?R z$1bz%4QW|=y4CgNgCl1NlB@G(Kt9k<;qmUecD4+Q!ftF^M1KW^LR!Ro;5^^5=VRx_ z#=*%+adENhQ>D$Rqg+)I$o!Z3nwp2ayamp4b1ZTL>*YgBf!x|?$@MeLMnTSxAKeWN zs*IBDwG9Y$m8y?5azg>2_gj*RkP`UR)D$;Okgp}Y3k)`~?PV+~+iH#lMxNVyhFf#g zxn7KM;6F|M_2&<7X(=#da1YHVQhXKqdMsBlmg(8Z>$|P6+9mj9>M&{T?60R27gnN# zR%U~pM&{djBoc!^THs{wI4{=L(uirQ5)ucM?7!2`P1hw`F3!*6col;6P{>HtG||V> zM^vXw*WLzJ%C~9cV5!CoAmcBKd`ukEe0e>?3nGYhpH6NZmwnqr1t`OHx_rc5u1yR# zg{dun8G+VyK6lm%XQo6NuPT0Mk=Enum7Ui-?Aes<7^U%Y#tQWW_2ef>yu z+)4wZos9QvuB`Xa^%ZchWXlre4q*pm)-3mBwe&$F(}~GCwu;0 zMxO#6tc!__`5K%8R3s?Z6>_S$P{y`GJ zy1D9vwe2CtazyNsT~Jsd^r;%+zogyMo55nxnMs_b2vbqjtcD;(PA0nk=Aj(I)Wee+~ zGh+*L?epON;NHH~ds`6^a#Cg)9M91#>6^_F zkI@dbN*$Hy&8I}@P>NBP@B|z@%Gbteoa=i?tH~m&J9iipSw)I&t4$C6&)mq!WF737 zdnkN;s`RtI4*iJcsiK|uKhh2ySb93K`PY4I3tbo6(JbO+AXh6HP~hf1ACcru5@|*l zSpEk3}Z$0FvGQkMa%e6!A1z> z>A$UX;B+swN&`|vwUie((vG+5Q;u+0Nk~Y7qF=Q<^RubEr&x(b zyu=z}tUWfhc{}3rc!{BMiFIM^@7W}WB!9rmCtt-=wyc^m?3?DRKQoZ+BMJqh@NaI; z48D_kt*FxwTl`@U=qLOt{%RN!JL4D};r@x(U}d6E36OwQW=J z8X@4)5V3ETu{CQf&?ru)6RZwC4u2HfKQK^sSNfw|2zFY1rvtifYI6YcF;umnec$LX zR`c+KHrY2)JktRuid9p$iR#an`dd6wMLBX3Tt4d#Cg^cqaV!;1ukjo`9rtatsuIY&TEIn$M zFam#fgXGGcSx%c+=ZaXPiEw!Dnk@g#zmQPmwhAa=5TYhj+zIrQw1_5H?f_>^V z%kA0He)ZfpHO8w6DReI^D}m7r4#?^E*3UK()FYd3=Hj8x)z#HM%Vvr@%b7U;bVA^f zz`kN!5%FeqkGgHVlAXr_;~+ns%wu#cS!I5GhAtJbD_<7Q5J67HObo(Ca(w$cuw2GI zkcEdV)bs2rTrCGmTEQ*a0oKGb?nNnHrV4jqg^<`&rT#mgdZ}E#49UZSgr!>XOk6q&@n?B{AWI|mYu zJocH;AEYB_%=`hDU)3FnJ^**Vy3G;~`H!FAW4XRIzwn6GLRsMbhEeT!l2Bd3vd^A$ zUBCPsh3_bF#P2sTwOUF9;Bf%^w%=V}8Yh&x2? z?NNA+KmBNruaxkNyV zlb>|5P+qpLq0T=%&V9A~$rulh{RM)P^P3db3Qtcs*{nZPeOBGh|CxY5DcMrc#9F;k z0-C5BacP+el6e#t+nv*N`H!O&Q~h51@Y8+}zz;S_NB!e`Bjg}?3HkT6=3M^$4_=t> z$?uuU%))ie&6!Ho{}7tpRzYlL$&gKF-$I_2i|dax`P~q4Pbye z)uiR_OWpCh<^s~?h}p8rMA#DwNW?7=2fUJwUa-m9k^Vu6 z(a&xfAtY)an)IA|&-ry=EYsG>Dj=JR83PlvIm!~XfzN<|KQ|zh1=)ye!7rk*TBseM zWTIL#&NUkI%iH_F_geFRa(u0If97x8x%*jd>;H{WK)wPpK*bwoGOw7j%RGaFCl-XDa$_@-(ow7n= z3bQ?`>FDJmz*rrGu9ZY($#j)p2f9i4C@d7HJqfJxbI$5al>&`=QM{%Je+_%?beHrl zq~9FNzH1)D=V)e6KP`^NqD&zZ%6*VoaSchLeiVnDkV)Q6$OyO0Rn{YIYVH?PST3Hz z9?6*6IkxlgsK~JP;QHvjg8Tp~te6;C420_d01lE#L_t(|+U=bSTvSya$7xYPKn%pp zM~WaTzA&GyPkf`eqNZsIf0mhRYV4Y5K2}6bQHz(BiKv^3iZTpuYAf$ZMUL7>%m$LkU4FVh0CA3i)yB1ifD_z^B{`E=q@umMv7&1H7X`-tAxLB9JCc69Nt_t|JESVrZ3FHS>Z;FnN zPDn@qb&PckbmJkff5co%KX$RDCdt$eTseF86+KfqZ_qlp1 zo>0{<@~Blo`}XYvb&Pdr_=<`OV<3M}Tl|UdikNm|V>boGl_j&~bfRi?K#aqv!VMdV zRy`t*Sr-E2`}glxsZD<+6>AP=h zk9CJpH%pRacbCn~%o;UvsPsfvFIZ<{hlC>v2_dUHQNIY7pYfn zU1Mow$*|_09aDKOmD%&>pT|D)jQ#fQtFB(n_~nf1M88!0dU(jIqJNOPPPVf4}&h zcNRN3wzIRdeeE@`J9kcUB>2R$S+;CWRMex@K}yQDg$t+ie`R*UwLq4sD)#>M6X<%G%kdk1O<6 zr%r8mf9+Z;KjcX+ld$a80_o7UHFxVjNRAM;<1iy+jDD5bbL-Z2mo6P;{wXBHZ}jMa z7cZvVx|QqWX>PS2iQ9y}<)+kpdno;w%M*AeJs@!}bkl_z%Z4zRXv?&~{~ z%lGTojju3f%nRRqlMX><-MTkKJDfau1auYmf3|H~2h31+?-pLZocj9fQ{;zSWj$2a zaBJGEDTn+}fykN-k4sXw$;_V3&Hn^_&fhi7;p^(^_~n<6_H(}bE(^m&A9B2UdAZ{j zCnaqiKYp-g9f3}6-poM;R5bGz7R~qyUwonFXCG(h4x$}aR2<{43JPP}wiQ>dq{&sW zf1|lBNCS{(9*l1{R^lkMD1Z{~|0pyvP5m2Ok`?{v3eQ0PW%sevuvxp2- zv}lK%n&G6lIC{#Ik*!*_baCkjb5e$*++uKCQGA^hyE^eBObyJQr%f9j7Pg#;ylYoS zrq1UkOWpe2x^;$d_g%CTDag;BjpOndfA0J!m(tRc zb|MA2hsPjpE+02;P(Z)}=^a8|e%S*L3hDqk=5_fYFYx($;yW9(KnCvGz#(sLf8G4; z&{YTXkFXbMWyuK(m!I(u)Z2MM)TmJdU_)71S-QLT`}pHX-ZsW`h`AHvnYY~P346A-Y-STf1M^IMlt5>Wx*?Z4Ro_^VQt>TytAv5u40ehvN`jG znS@P#d+e9?ewgz7Gy{ApoaCtzI(p!W37afEX(y*IOrPy*0PoX@$41Wi_wqHwOs>dl zs|&LJGBeZLSIStAFN{kaJNLwt1rKVAiJ4rHbJQ``Q~OL$KO8B*J9XE#eZ`LQX=+Ng5n^d3Xp~lE_iG$Ww!nlgM2R zALUzvDNtLcQXU>mb2-iBe}tTn6LLbX9OO?rsKBIx78(q>@Le$SJ*vl#6aFVE8s!Q^ z-bhFJ(emhVQNGSwXL&`xRq%C^@LfP={rW{MTiSH!(B|mT_n8qxnyt7Xpf+tIY}>VK&HrEb_3PP_CJk@V!n#+lE`^0r5?i6d%9V4it(y-Rf6(LN#T4PLG=qi& zz8CsIZ|D;}D;&A{Y*eSPnIR{)eg1uFU`}wG_g-XD*F?T{?ceU)IT;i4u8T`Y;bFm7 zR;k{zuxN&Sb#)%{UAsDR6=uyEzjyEYyLStL)6LCAVk=be_n%)`d1CeId0t-b!d=au zKNU}d=zzxK!uP3gf8=gE=I$%q!@mV}jCEn;Tnxv(d&T;~M>JdUl{NF`=8qb-YSoh0 z5PYF%D-_>PBjRgf48?M1d8{{l{9E(>Bymk ztEzsd*hRaNqS(1U6^?xSsU6VmppLN)4UZuXYtB&Q>(;#i>P+)ZIDhkI&g|I}V4ZdD z+#be(bmY3`n`l>LzWt6m#yT`S$DX#jX!nhTkjr+PRx1&55<;%HQ7+%DcvC?x@SROZ zZHjIl5OR6De;;U+*PB~Ktq$qY!`Z^(@hN6nc950>L%u1>$@{Af1Y^*nT4j}R`K)m>D$+J(V~|! zGb8kEjcGbCgxxS0^gsUislbMI-P|o189Okrn*DY(nPw|dWKma+jp+U$+FP?b= z^%a_ge_Lh2f)~rn6QP3g^7i5@>3UNPLhk7~G$3FB?(dp4uQN&1&E10G1hcXXg%HLuBu0U6K zf9%i}6tOrA3tL`YoreD=do_&se(DTMIc}HIZvxl5&unf2Lc78IQtren@v$L`M2IX=2X(bPv=!@&^uV z)OD6CbZ=8Osk9rt@^ctxK7O`c1ajzY=fV55vsl}Kzc+39Rj8hOb~KN*IdtBgp6wuzEWLOw?T@ z908**FEI>7`gv4z2w1%x0w(G%5{`g@;JL@+h|JGF7l=B0Oagf$KLkwFUBvX|XjbUb zBfz33OjpD#e926 zhk()U8wnw&IF*L~bV6<_8+MqdVbUAn=}~^@0-7H_yoG;z=+LG=-r3r6ymaKu_y-wB zs~A6YL0^fHx8hsj$e{})3UsT`iBPoRN?V66lxezEFkfJnf04KOX0j(jnV?$* z35J3a7HRZD8?+TeZWTgKLdZ!7If+RkFAonvOAASaQ#7(U9k21B=#$Wh9} zgJ~|Oxtx#_azakX2{|DrQ9N?2?P!5Z>v9r>uFGpH@BENk!by7AZdG9Dfz_L$Rt2F8 z5;@7_8A4D=I1^Aula0#RHO% zkbsu^DakE?8rXp#I9|JUO%ifwgQB7$w84|2q9nHjYG4O~;CSQ44N1uHXrMNp5om^N zN^(n}26i9_j#X7vl8~bwo(?p?OmKmc+!CmP9SDMBO-+p?9^{l1nFx8KOaB8;2m8=V S6bFp}0000PU4Rs)3b}#?{fFN}5m=Mom;`%@dBJS$xcB1Kg z3P7iH8y<8LU%AlDp;uM1l+yr9=Zq&dNd*IMk*{7~*-;E>dOWhylTmJJQWlakolh9y zLwp)ytf*Q>5*WKUK}WX$Iqc7$w5oKfm0O^=$J~cx;k(i1rHC0AsE>B0V0`Aiu}Tkl z`cJAUl^pc?JRMR`aCiAKmRW4&y=PV3Mdxl#jU_rN>%3zoc%V&_Txe>_U_jc*q<)=& z6PaZ}!&P)UY})tDZ5kC;@I~R155*j3x040;2-6dSZ#Jc)rR7D`b;EACxDi%-q@8rg zceFiWlCfHk{ozsV0LgTnI)Ce;v=R7$t)|4oc$8-Hkl^Fdi|r=GO7P?GN8`(rnD>uN zzi^=+1-1v>m{ptW{FUKn?#aY=2ldjZF~OIBd&M;#QayZUo_YX!JmNebhuEJM(X^_! zTfCi^s{##fc#F(HJ`ku8iQRm50pKBPthsdmn*jhYx+3nVn}yE*DxgL|JUDPqv+6{& zs61}8*+iPvMqroghwFxI=3Q9lYJ=OZ51F9Lp6dNB$=C?&7P^iU;Xggn-u4wQGJbO- z*fMYC_*U1PZ*Uj3K(XKN<%`18TdLgw6=BP42dd-eT?dQW>&x#3!>4*|F&IBh+&eyp zMS95xl+ZRyQqFA8}ANvxAnJmA1CFot>SBhp=Q_ zbu|Mu9?g8C;IDTOp;$4o;HJ=gnqgpWE1i_unsA!C zizgW0BBhMkkTt0VsieM|j9{JXg}A;tXXoLNw|y4*IE9?$E~x=b^YDW3pR59gp< zT##h-wEMMPL0cA1peQ67J8&>en)f+Tog?$=MGwq!lBvrp&H8;2omCoB7RbyH3YyB12`YvF1X$1P@mz9I|D=5>o@6wAcS=Ke#XX0Gn2!yr(u6t?XOEs`^K0_o) zT#sUBKa-W_=Zz?q{jet2(LfQ0tsCx_c({(1F(m<9*$lTaMNWv6|Y<^wk-x~i*J zR4Cefms^`gv6&N0%Wxg^_=%@QYXy)5`Zt-9@6D z552eJa)!?r6n(pwygru-Q(DOhTQ^JZQKQ+hH!k(4I`@|Lj*BcFT%z+8**-Q+XN7xCoUvIib0?<9j-T3cFZscp$3Tt}elw9th%G=hwVk+b7NUtfBSctTc| zmTrROcwvEoezNO0_uuU~vf0~T-q?b4G!|~?x#F0II3K!xLG0%0eO$X8bbXOFH#~D_ z>eSL!vUUAk_xMbhdJkHCqq4R2nTuyAlAIkIdAc1>Hy(BMC@Ch!$8`4w9! zWy1>krdS%VSS+UQqdPG7c*lNt8n2g=+U(_KjZ7#1IQXs8%P{||Z~!h*JLbi3O_XLn zFgZxa>t~w&Akt&$W<7OVGMwAkwm@*5-LI9Oa`99rgc(w0<-CYv|GXi3$ddHiLuT3&Gn9WjQpBU7 z^AQCgKbr-J_WZ_a;XfJ}6tvRR-cFrE9y65vyw}Dm*VRqugJE4O;AE?w`Oe3~t(*^( zBT5uHI`#1_-00eKe6BrOJX_J>$t7-elBp$rqpUf`gZA3#IzEPiBo{M0^xemM9-wHG znacIXD&Czw*K0*ocExj;EO+)MpHX3c{N`N0Tgl?O!#NcoG0tc2rBMRXFKBhXo7Fn6 z!y2%Ysvs44`$}Yfv4gp`Nkr5LxKmo{ZhR-y@hf+N5iJ6+2al>P{lp_=F zU*H}C7`d5urz*7?r0*In56xs#OSTwIL|N7LT>m>Pv0h;mV*mF0Eo^=1dYG$E8Ap*5 zI28(I12|BN4&$m)bnY_k<~ln&_JTqakIlOQ<>NgKg3;>^6Kj`$3miNS`gzKG?}q+f z-1AvzMU(IC=7Osn+)PY_lB*Gva^@4uR^2DCW_NTw7mq`_(d!VSx2#>g>cO&nX^g}sH@f$N2cA!GG>4)&29Uvn!W$CW!PA0-~iLotzDP(Ok_K`|p z(~-BqmP(iRDXXrfBWCbaVd}vmqV05DLw?=4zwBOA^@K2MMw3jb5k+Ls;?DxkN{1dM(L%Rf^Wv&v+duRda4)Oc7~iHb*sQvybesH$(R`cih%(v zj_j4V6I?QcL6+Tk?X^2Ao*OPoRh{rPIzV!)hZ6b^@}Ta)+9-X)8OFAC`uy)PwTgUO z*JXyQ$6nw-xD@4yoM%He@D+ItIa;BHKPqtB|NPC4LF%yxHgl|AR!K?e{{5QymZs*n z9+?@81kmbSqn@2k|HrCj@dBakL$IaYDNfUE!L9 z2?`50n^p$T&PtdX(n~7i%XS=Ia*-U}w=V;Pn^es`Zi2hWI z3or%6`H5KMSu^GBtBZiBdOKPdm%X4MRtY;5n(4$UzbvIPyOGWa?AqEJ|A1qaDAdO0 zDGcOFvFP=M;`2}BswL47BXqg>S2Q#>j109Zn86NG{vynK2C3H~LAsq#<7Gr<9AgCj zOAKZXC{G7HFZ;d2gxx{c7)5IwkO+pbv$4@DFNeNTWOdjN@bo;{T^YOR7y3mHtf6_g zaD zr1Geq5M6#G$_hOWlXuh9{sfno&(TQ(zl&Nks|0nsl{W4_fAIog_sx!*u4n5ZayLQ{ zkJ@#z!TQ7A@YFR8kIp^(WdpvL%n{EkH;#RFrOEE#`Bs2?oV4om>fpx{$Uyx^tsa+m zcJ0AZ$-q0-qi>xkCNI5EZaF1QE0sl!0{k5-+;a;dyhG?j2d5K z$Ocf{N}H{Gd!D>ZF>?c_)Q2nu%y#_Nwsau;S+2PFDBk|1s+xj>W5U?@GM&=dW@W&0 z(CqW4(K9kYdoHeDHLv#{ERV6NyrZMa{fEpy0KPrn!v3JDt_~*V3HP?r-Yz>Mi6x1n z(@A^Kh;C_#>oZit^}n&r+b5YVej1G(_$MwNtfj=SEwwL%MRXg1Dvmye2M5B1Sgp2C zPQ!5X%x_@+P0kEt;p!Y}PEjX(*ZfMW8wasM^pc*EpzOwDPys|*{=uszAW&~{uEArf z@*$?605X@f$xKOWx3YQq+dgEq$3p=lYf6D8j{=P<2Q~~1FSL8liCMi>R+`U*)9*z{ ztnPU4?!Pp(wGG{0g#{c~Oy_VRJ3(@Crw;?D+J$jPM^Q!IT@RKR75vYSBn}S`kG8Ez ziXJ^;9W7E-7x_kgs?32m>RtEyL0(?z`*R;mOmLeMB{)`zq4&YR{`^R@b`JPn*7g9+ z)z)w_Y+_**`Vf!%X0m5Duso**ii;q{U^_tN<$jo7y@>_HszOS4|3!ta&Y_#AsaXxbwT<(LTbua9DM@K+M68CBIp=sR$|#`*Stk2- zybgiz0rrMngiUD}-M+-DGCAD$+JWm=(s!$RGK6216)qKZGuOyR*NDDmy(7{GDl^kY z+-g@f61DIpHL^65NSO5J;jbRJUM_vN-tpMYr;m_=-%L7$>_NW6zM=&>rSB5v{$jmT z^nGLLSv9Va)fW8w5(b#+V9-EOYQ(vxn>lCLvE4Y_zEr_@e52%p#R|S3@We^qbsyAF z$8AWe;h^}`R(DA738CjW#l7NF#${Dcy+KT$@nq2q%P4cCy;bPM%nZWbo{lylWeFF= zRvI4d>FlQYDhK_?EhX6v(p66kCim}yQHjROv( zmzJK)TZFFUYd1T>8=KT2wt+F)dS@~|pHXk;Br&E=-W+Da`2yE)?0#@}Y?;(T)F({@dW34`HWBW*4i& zg*2MGuC;RC`X&p92L=RS{R9e#bPtrOWVX|Z(% zB5x-$Xd-X=-pHhwf)qF3fuQ42UuLI)-Ltrm`2=uGWl<4DP(sD~|3n*`;~b-iih`Cs zy!aIg-wT#vfw9kt(u{B53|!LDPag05YendGDh5d}nUo9gYAWm29{J2Df?Qs`dnVv; z`uvaOA*$8`JW?=Xn9KSpFi5t_R!G-zjNB*tkLBh+5EPcW+3?*WqpW3o_><`CYu*#C z2z1t1-^&VIR=e6(>}Iw@P*9bnkZ${t zorReC1sq1a)o=!~P3n2w-iI{!+&Nx01~Pm__8jkO2PE3wX=I+yuVDHq9nD4Tp-+D< zdaih7gnVV4`GnnRmiC3F?3aa9sV4Q0FCZVrMR(;s)p9kC_0;+*e;Of&xWOq^>v3P8 zGRkG&V1&M=u3u0Y4%z%U-ir3WO6O6pjr82 zb}R}&(NSE!|}5AX=$}Hy!ffc*b7K$ z5Yk`#-hmFHPM#F{o|BXyu0ZjFGa17m z2?k|jnOOTfPF*9oxC#ga8B~8V+rd%Wvf#`Yd;j3y2*D-?{p>R-d14{(u)pLAc2DV3 zpHF0;SIoE2*W(67zoRycd5tXH#1(g+XTbnKT&u=U# zwh4s5pXecEVI7ND?j2I{$7bd~=e{`1ZQ&diKrd2oDXVIgW#Y z`ybC3;tzi>Wr;ct&(5B$jneGTb8>ojp9&%!F?9ARg!Xfit!Hckr8$k{OCE}XPu2D> zPF*G(1O#G;ebs)fw6KA0CCHU~uHK$bBgR^w6^~{o_AAv>Da3{)T}X@#*F#pa)|1)a z7uCT(71CSM=L0u#lAiU~XOW_~#z&r*Xq!-gD$&1tZL%8kLMH=5WRZ(miKkT!5e7cs zQ3_c5%*-+7&AWQ9Ph^$`?eoc*K^G6x(LTfFo)VkGLSw;ls!cQ8hyVhIVz6!Id+&w* zV#vr*nn#g*FONePWEXKJI$Nwvq(iRbJ*F0;V=Q<7RhpGDSJaW3#X6qOmp8M&yltQn zk|(FLq6NAXTFPMyto)fPCW22&l06B(ih@}RWlqKhKE`1ATgM8N)ou&+B!H%xdbu+{ zB(()yNc>1SRkzPa(REnMT;!pNU%S77IsH0^bu&mIg>a>_hA4XHy=o~|P9D@Sy#dn3 z{p(dsVZ^~ns(J`CFrL4!xc#i(sAfEy!Jj{}o1b^P!PmHUTzdng)!{E>A>=@?K%w%} z(;0YpcvAA1;JjoVnE5xhZKOcrR3*Mh)6-L=Il0GRkwX$>g7c%UGPke*gJ@pb+1P-6 z@F69*|ASCh%}h^If@oAp71*N~iVwryB}R~FtARs-E%Wm>>X;RU6LB>X=#(#B@HYes s6vmTH69@!S;3ore4x-lY5Mk$ZLzca2^!DNQ#GxMmp=EfdPQxMke~tmp-T(jq delta 4550 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 V95BJtbN)3$rLS$Qg@-#l{vU1G#<&0g diff --git a/doku/diagrammes/getrents.puml b/doku/diagrammes/getrents.puml index 83a7dd2..14aeaf2 100644 --- a/doku/diagrammes/getrents.puml +++ b/doku/diagrammes/getrents.puml @@ -9,6 +9,6 @@ class GetRents { + string streetname + int location_capacity + string location_name - + string RentInfo + + string RentInfo() } @enduml diff --git a/doku/style.tex b/doku/style.tex index 1fbdf1a..3e75219 100644 --- a/doku/style.tex +++ b/doku/style.tex @@ -4,7 +4,7 @@ \usepackage[table,xcdraw]{xcolor} \hypersetup{ colorlinks=true, - linkcolor=black, + linkcolor=blue, urlcolor=blue, } \urlstyle{same}