From 88012c30d4b47d8175b542996ed9e43b73085114 Mon Sep 17 00:00:00 2001
From: vaidehi4321 <56602405+vaidehi4321@users.noreply.github.com>
Date: Sun, 1 Dec 2019 21:52:20 -0500
Subject: [PATCH] completed
---
.idea/compiler.xml | 6 +-
.idea/dataSources.xml | 19 +++
.idea/encodings.xml | 6 -
.idea/misc.xml | 5 +-
.idea/modules.xml | 8 ++
.idea/vcs.xml | 6 +
jdbcdao.iml | 18 +++
pom.xml | 6 +
src/main/java/ApplicationRunner.java | 2 +
src/main/java/CarsDAO.java | 109 ++++++++++++++++++
src/main/java/CarsDTO.java | 87 ++++++++++++++
src/main/java/ConnectionFactory.java | 25 ++++
src/main/java/DAO.java | 12 ++
src/main/java/DTO.java | 3 +
src/test/java/TestCarsDAO.java | 35 ++++++
target/classes/ApplicationRunner.class | Bin 0 -> 276 bytes
target/classes/CarsDAO.class | Bin 0 -> 4035 bytes
target/classes/CarsDTO.class | Bin 0 -> 2275 bytes
target/classes/ConnectionFactory.class | Bin 0 -> 981 bytes
target/classes/DAO.class | Bin 0 -> 375 bytes
target/classes/DTO.class | Bin 0 -> 172 bytes
target/jdbcdao-1.0-SNAPSHOT.jar | Bin 0 -> 1559 bytes
target/maven-archiver/pom.properties | 5 +
.../compile/default-compile/inputFiles.lst | 0
.../default-testCompile/inputFiles.lst | 0
target/test-classes/TestCarsDAO.class | Bin 0 -> 1354 bytes
26 files changed, 341 insertions(+), 11 deletions(-)
create mode 100644 .idea/dataSources.xml
delete mode 100644 .idea/encodings.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/vcs.xml
create mode 100644 jdbcdao.iml
create mode 100644 src/main/java/ApplicationRunner.java
create mode 100644 src/main/java/CarsDAO.java
create mode 100644 src/main/java/CarsDTO.java
create mode 100644 src/main/java/ConnectionFactory.java
create mode 100644 src/main/java/DAO.java
create mode 100644 src/main/java/DTO.java
create mode 100644 src/test/java/TestCarsDAO.java
create mode 100644 target/classes/ApplicationRunner.class
create mode 100644 target/classes/CarsDAO.class
create mode 100644 target/classes/CarsDTO.class
create mode 100644 target/classes/ConnectionFactory.class
create mode 100644 target/classes/DAO.class
create mode 100644 target/classes/DTO.class
create mode 100644 target/jdbcdao-1.0-SNAPSHOT.jar
create mode 100644 target/maven-archiver/pom.properties
create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
create mode 100644 target/test-classes/TestCarsDAO.class
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index f006a55..c87e502 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -6,9 +6,11 @@
-
+
-
+
+
+
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..50a0ae1
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
deleted file mode 100644
index ada92a5..0000000
--- a/.idea/encodings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 803a716..d30d09e 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,5 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5c77ca2
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jdbcdao.iml b/jdbcdao.iml
new file mode 100644
index 0000000..e42d504
--- /dev/null
+++ b/jdbcdao.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d97c43d..469b6c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,5 +14,11 @@
junit
4.10
+
+
+ mysql
+ mysql-connector-java
+ 8.0.18
+
\ No newline at end of file
diff --git a/src/main/java/ApplicationRunner.java b/src/main/java/ApplicationRunner.java
new file mode 100644
index 0000000..c3a4d3a
--- /dev/null
+++ b/src/main/java/ApplicationRunner.java
@@ -0,0 +1,2 @@
+public class ApplicationRunner {
+}
diff --git a/src/main/java/CarsDAO.java b/src/main/java/CarsDAO.java
new file mode 100644
index 0000000..86cc7f7
--- /dev/null
+++ b/src/main/java/CarsDAO.java
@@ -0,0 +1,109 @@
+import com.mysql.cj.jdbc.Driver;
+
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CarsDAO implements DAO {
+ //ConnectionFactory cf = new ConnectionFactory();
+ Connection connection = ConnectionFactory.getConnection();
+
+
+ public CarsDTO findById(int id) {
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM Cars WHERE id=" + id);
+ if (rs.next()) {
+ CarsDTO car = extractUserFromResultSet(rs);
+ return car;
+ }
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+
+ return null;
+ }
+
+
+ private CarsDTO extractUserFromResultSet(ResultSet rs) throws SQLException {
+ CarsDTO car = new CarsDTO();
+ car.setID(rs.getInt("id"));
+ car.setMAKE(rs.getString("make"));
+ car.setMODEL(rs.getString("model"));
+ car.setYear(rs.getString("year"));
+ car.setCOLOR(rs.getString("color"));
+ car.setVIN(rs.getString("vin"));
+ return car;
+ }
+
+
+ public List findAll() {
+
+ Connection connection = ConnectionFactory.getConnection();
+ try {
+ Statement stmt = connection.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT * FROM Cars");
+ List carList = new ArrayList();
+ while (rs.next()) {
+ CarsDTO car = extractUserFromResultSet(rs);
+ carList.add(car);
+ }
+ return carList;
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+ return null;
+ }
+
+ public CarsDTO update(CarsDTO dto) {
+
+ try {
+ PreparedStatement ps = connection.prepareStatement("UPDATE Cars SET MAKE=?, MODEL=?, YEAR=?, COLOR=?, VIN=? WHERE ID=?");
+ ps.setString(1, dto.getMAKE());
+ ps.setString(2, dto.getMODEL());
+ ps.setString(3, dto.getYear());
+ ps.setString(4, dto.getCOLOR());
+ ps.setString(5, dto.getVIN());
+ ps.setInt(6, dto.getID());
+ int i = ps.executeUpdate();
+ if (i == 1) {
+ return dto;
+ }
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public CarsDTO create(CarsDTO dto) {
+ try {
+ PreparedStatement ps = connection.prepareStatement("INSERT INTO Cars VALUES (ID=?, MAKE=?, MODEL=?, YEAR=?, COLOR=?, VIN=? ");
+ ps.setInt(1, dto.getID());
+ ps.setString(2, dto.getMAKE());
+ ps.setString(3, dto.getMODEL());
+ ps.setString(4, dto.getYear());
+ ps.setString(5, dto.getCOLOR());
+ ps.setString(6, dto.getVIN());
+ int i = ps.executeUpdate();
+ if (i == 1) {
+ return dto;
+ }
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public void delete(int id) {
+ try {
+ Statement stmt = connection.createStatement();
+ int i = stmt.executeUpdate("DELETE FROM Cars WHERE id=" + id);
+ } catch (SQLException ex) {
+ ex.printStackTrace();
+ }
+
+
+ }
+}
diff --git a/src/main/java/CarsDTO.java b/src/main/java/CarsDTO.java
new file mode 100644
index 0000000..552e059
--- /dev/null
+++ b/src/main/java/CarsDTO.java
@@ -0,0 +1,87 @@
+
+public class CarsDTO implements DTO { //<------this is Data transfer object class
+ private Integer ID;
+ private String MAKE;
+ private String MODEL;
+ private String Year;
+ private String COLOR;
+ private String VIN;
+
+ public CarsDTO(Integer ID, String MAKE, String MODEL, String year, String COLOR, String VIN) {
+ this.ID = ID;
+ this.MAKE = MAKE;
+ this.MODEL = MODEL;
+ Year = year;
+ this.COLOR = COLOR;
+ this.VIN = VIN;
+ }
+ /*
+ public CarsDTO(String MAKE, String MODEL, String year, String COLOR, String VIN){
+ this.MAKE = MAKE;
+ this.MODEL = MODEL;
+ Year = year;
+ this.COLOR = COLOR;
+ this.VIN = VIN;
+ }
+
+ */
+
+ public CarsDTO(){
+ }
+
+ public Integer getID() {
+ return ID;
+ }
+
+ public String getMAKE() {
+ return MAKE;
+ }
+
+ public String getMODEL() {
+ return MODEL;
+ }
+
+ public String getYear() {
+ return Year;
+ }
+
+ public String getCOLOR() {
+ return COLOR;
+ }
+
+ public String getVIN() {
+ return VIN;
+ }
+
+ public void setID(Integer ID) {
+ this.ID = ID;
+ }
+
+ public void setMAKE(String MAKE) {
+ this.MAKE = MAKE;
+ }
+
+ public void setMODEL(String MODEL) {
+ this.MODEL = MODEL;
+ }
+
+ public void setYear(String year) {
+ Year = year;
+ }
+
+ public void setCOLOR(String COLOR) {
+ this.COLOR = COLOR;
+ }
+
+ public void setVIN(String VIN) {
+ this.VIN = VIN;
+ }
+
+ public int getId() {
+ return ID;
+ }
+
+ public String toString(){
+ return String.format("Car={car id = %d, make = %s, model = %s, year = %s, color = %s, vin = %s}",getID(),getMAKE(),getMODEL(),getYear(),getCOLOR(),getVIN());
+ }
+}
diff --git a/src/main/java/ConnectionFactory.java b/src/main/java/ConnectionFactory.java
new file mode 100644
index 0000000..2ca8ee4
--- /dev/null
+++ b/src/main/java/ConnectionFactory.java
@@ -0,0 +1,25 @@
+import com.mysql.cj.jdbc.Driver;
+
+import java.sql.Connection;
+
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class ConnectionFactory {
+ public static final String URL = "jdbc:mysql://localhost:3306/******";
+ public static final String USER = "****";
+ public static final String PASS = "********";
+
+ public static Connection getConnection()
+ {
+ try {
+ DriverManager.registerDriver(new Driver());
+ return DriverManager.getConnection(URL, USER, PASS);
+ } catch (SQLException ex) {
+ throw new RuntimeException("Error connecting to the database", ex);
+ }
+ }
+
+ }
+
+
diff --git a/src/main/java/DAO.java b/src/main/java/DAO.java
new file mode 100644
index 0000000..9dd6328
--- /dev/null
+++ b/src/main/java/DAO.java
@@ -0,0 +1,12 @@
+import java.util.List;
+public interface DAO {
+ public X findById(int id);
+
+ public List findAll();
+
+ public X update(X dto);
+
+ public X create(X dto);
+
+ public void delete(int id);
+}
\ No newline at end of file
diff --git a/src/main/java/DTO.java b/src/main/java/DTO.java
new file mode 100644
index 0000000..fde0fcb
--- /dev/null
+++ b/src/main/java/DTO.java
@@ -0,0 +1,3 @@
+public interface DTO {
+ int getId();
+}
diff --git a/src/test/java/TestCarsDAO.java b/src/test/java/TestCarsDAO.java
new file mode 100644
index 0000000..86c4fae
--- /dev/null
+++ b/src/test/java/TestCarsDAO.java
@@ -0,0 +1,35 @@
+import com.sun.xml.internal.bind.v2.model.core.ID;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestCarsDAO {
+
+ @Test
+ public void testFindById(){
+
+ CarsDAO c1 = new CarsDAO();
+ CarsDTO a1 = c1.findById(1);
+ CarsDTO e1 = new CarsDTO(1 , "Nissan" , "Frontier" , "2019" , "white" , "1392BR568");
+ /* Assert.assertEquals(a1.getID(),e1.getID());
+ Assert.assertEquals(a1.getCOLOR(), e1.getCOLOR());
+ Assert.assertEquals(a1.getMAKE() , e1.getMAKE());
+ Assert.assertEquals(a1.getMODEL() , e1.getMODEL());
+ Assert.assertEquals(a1.getYear() , e1.getYear());
+ Assert.assertEquals(a1.getVIN() , e1.getVIN());*/
+ Assert.assertEquals(a1.toString(),e1.toString());
+ }
+ @Test
+ public void testFindAll(){
+ CarsDAO c1 = new CarsDAO();
+ List carList = new ArrayList();
+ carList= c1.findAll();
+ System.out.println(carList);
+ }
+
+
+
+ }
+
diff --git a/target/classes/ApplicationRunner.class b/target/classes/ApplicationRunner.class
new file mode 100644
index 0000000000000000000000000000000000000000..fd5e825993768fd48271c8543a8c5f28adf288b9
GIT binary patch
literal 276
zcmZXO&1%9>5QWdg{M0mRtl-|AbzyL=2t{xeDyX=>i5Gh%y^)ysUakZeK0qI;bZ+R*
z892=O<_yfw@BIN_g3w0;Ee~xE9fCVkT9tD`WB9%!*o%BG37uGJ`B{A@ve=3wWAYZ~
zsmOMsP{#j5yZlmTLNER}oide*QssJGX)TK>!QbRnk;N578<)%Cy7)7JqJvxcQLPWf#>Ra7H)Km4OA1)n#m=FRVd5J7~hM*(!
zOS&)Vp04Ri+q4a|#6+P@(WAMk6^k{qdl0?tIJr&N+7(z5Ji&
zUjVQVe-Ggh^bpQtt^xPrLL>5+S8*`}KlC69@?4OiC_||ci+HpV29`qHZK^1T(2Pqe
z-V{QM9GH;B-fgLsEL-x*F#!A;TwR_@pd+Du_?Z%V*@~&&tf_f_PHUeqMln
zL545N@Ff*rR`C@TPbmmxOU0s|HS?vSg7(CG=2B*0>CwW#s5?EZAaEpK%$r9Qcq832
z3VfrboUUL~B45-e%M0gpBb_-{;7n_xl+6@oGDcqBok^d0A-|-cAu*aUmd2t<`U{@V
z7jq|8;yDFcB;IYWq-DjM%^2=pYsR-^E|?11YS2<<#?%+|qRIUpgRbk=ru3z9!A$Aa
zn!c={qwd`4L~J>$FA7&Vn&qEh=NbR^gJzNhs9^;66R3Csrb4XONG
zF=Lhu`s`Z2A;AbAaS0qH>rkpxHnRG7UNS^;l3=fR)^G$PD!!`WYxuf`!x&ca4GrJK
zw-~qD)hW}+7w1lt^M#zw0!%;>(Nj;=PnFYWSI$t?SV%*ka+a
zQYC5_nH5PA6+hST3;a^SiRn{g(R9panu?{v6VV4^Bggu}6UnhyLX6p1bV{D1$wbmJ
zX5y10#~fASV)MS2g?C1Yy
zZ0e`Wx(E@uIVj;=YiafF+*xLHk-d>hN4g)RDvPW`ljO4()9jb5<^Xk$7rCK*qkGs|
zH`k)Zefpf#uX-s{DC^1dBI=qJI1%vg}
z)}ofkY}DOVlD6@8x}jgUkJ=DqRU0Z?*P^S}2vhOpFs11*rB!80(_-4>B-FI?bz&+o
zu6`~{fZErjW;H@|pD&s-5@uU7F7Qkw&My$|;2)4fQ1CkbAU&UBh&De39FJOa9&1hO
zxelf0Ie4Ch_bTT-IA-nja16kQAdb`0?7fKM1m6_t8;+ls;N{;nAlh>c-U@sQCi-r`
zKYJa4R&^D@+g8!AickfO9!&OEpec9~O+EeB(RA3i-FM|Of)jnK*rZ&st~f}r%?^k?
zXrSXJ0&m7{Y(hUaV+gIJww1fuNUEJ+w^;y>66_G6#4t|KA@02oC+TN5wjhrCxiZZ8
z2aw<#!8%05n!qG)_Q*Gjqe$}%cYFDqzJV6<*gVnK+uB;e77ss9ZL4VK>(&Z7Jp5#B
zqrKg+J89qM*gI(NbnM${?{e&L-xWHxHSVIez)p_0qXWBeC&CzDv*C
zgl#Y`G-7
zutVbC?%VFKV7CWnF8}vmj882%J}Y~w!P(E80Qz|EUNjPS8wSZ`ANJq?#UEmj?qQG)
zGT-i{sE3$0hb=ZIp>jQBA@}p-ekV|E=yn3NlZ?}trstz|Asch}`{+gTng1%~6XtOJ
zCpGdB&soXB*1Ia$<6$29dRK9G1raa${4~35GeEP)HdUHbMm7X#_St3y{Zw$L?%~c)-tLtu;NT*dP
zdFJIj=Zjn^Ac6(vw_yS8A)pW`+D#==2e03S*KfCymM957?7%y~;CgshLr?FEXj#Qj
zt^5NPh=AqZZm$itD>|6Dse^lN&A}*zwgnn=5CnSIi4Xq2(*cKxhXIlvCE=21?thu9
BY<&O#
literal 0
HcmV?d00001
diff --git a/target/classes/CarsDTO.class b/target/classes/CarsDTO.class
new file mode 100644
index 0000000000000000000000000000000000000000..e7a07246a6de34294bcab8a8bd52c3ca016f517c
GIT binary patch
literal 2275
zcmb_cU2hvz5IxuS?mF9TzGzYc{V;7)>}}GJmK4%7fixejTPLP
zDj~%G;h_&j!UZA058y{3&fHx)%WD0`%go&CIcH|io$=rQ{P7onMeNzIaeoApSP}C;
z%&M3*F<*%J(#AR-=CNU6)8=_g%(j?EVjhbri+N(>DJm9rEbJ;|%9{%BRbF|oy@jUN
zI$9{Vy8e;hSy9OCtUujSn2h~c>vn?H5q~pws+(IC=G1+!!{bJ^QhlzF-7k~Vd=RvP
z?wZ2)#Td3v9J`9>{;!+TJ{#I-ANmSom7wMCo*p0gojvcM$(zYayWutWy-pzK=rY&+
zHaJljscd+ilg+)VeDx3di?T&wGmiYO2sBkJ#hUDYiGs!7LzOQ4Cu5*fUJ^p7BsWw`
zE+fHAhFUY@B&;-@CYiKiF(E896;FvONk(2WqFM~2T8#R&7>2c2w0y|dDwfKGb=x6{
zf?aE$b{hV6Ac8rOCbwla99+T;2Ny8qU>X-4yf0=(%m-pV#6=5L2VdcyLYc_b9~)k$
z5F8d(3$urFg=6nKU&0fHe4u6&i`G%tXgAya_;t|Iw?8S2pG{`<;FaI#I+(>x2Op#8
zpd`i>b4$z|iWZ(Zc#azNirVLA@?jMw&WNJ-IU@>cPZ71Jj@na7?WrdHIB}P7nf3}#KNDxs
z-*kV2a&PsJap!u-y7N8c+?iYthC5^QV7fDA57sZ5=PKa1JAIFpBf+W|VI?
zhO4YGiwP8%@i=5>$Jcmb9o?cYP!3`Yye27}E7w
zQ?{nNOoA)AxDzHt#g#m9M6fU*_!XJAWXiB>=qg}(fpHSd(MSPjli=A@Fh?o{oJ)dB
zsbG#`3fM@3=TpHP;S{i$1TUt7Ir=GJD+yjo1<&Jl1YV=O^3bLpu;hC!^O^5!hUqYC
zFf3*?ED8(wB#kSZIYn@yVhj7Wj3fG-)
zbvK>MOmdaU^<)T_ERAq|n$8tl;BZ%V$hA9!OV&=fmT-?&{w(h3Gmv+=HSdsr!@Kz6
zJkw0!;^YTg_t{{GUa*=XW@&O{-24-EJ?p;1xmrC(=hW&3-T7MGq#Lc(ExNHq5C>kY-v#JbKTPNzb0%%#{d8T
literal 0
HcmV?d00001
diff --git a/target/classes/ConnectionFactory.class b/target/classes/ConnectionFactory.class
new file mode 100644
index 0000000000000000000000000000000000000000..a0def2f826d3f4e3b1e960f57292c9173fb78eb9
GIT binary patch
literal 981
zcmaJ=TTc@~7(LUL?o!Idg#zMj!CR@yf*2pbm>7f?7cX6C!i&jtJ88FRcXT>M_*eP_
zkwoA9QO0k!m2E<_4>LXIyPWSb`|J1j9{@J+tbi#jTUaR|gXIG5;+}>3HXhh`XrpY1
zRSOjhk8C_HU;SxLyY6gkaucaMFtPaoNh%uhFPB^
zViD>{#(O-}Qk@#zrqC(Ruuxtdl-K**@lpeMX2c1ZQ)BSK-#rP%CzFrNg+TUIDE1;#
z$9x(&lv*=A7cqwt!(u4AUiZ`}gl(_gsE6Kb6&(v@!7E}N8w}U3Bw$!Eo?A)WmgjX$
zr!CpjTbrBf&%H|WqtPfSHG@6Cl}Zse@RXsHjNB-Wmd&t~uAO+&l||%I;JrLS_h#F@`RlcY!RLv
z!8Z9&LnzTXPZ1v7jP9|@8Q8ZZ#R8rAgtW0p|BC|$O0-01oR)Qy7!&*vxy0sPAaitv
z>^X8y-mx6}9OGZ#TwvnJDN^3apNZEj$(nD`ENO{}&{ylh2k@b!lPDgH
zr`>Ou?>EdGPk#pheRN&4U33WEmx;ph?<6Gja?4daHwENT|-uCQ?Zn
zYl7gO#fpn==8dc+wB^N06J!0U*=3GMe?pb8@GOgwcc*xgbI;i#h;=TDP+Og)I6QVq
zkZ-F&G48!sBGl&JX&mTJV_Ek;Mzhy!GeViagy!vv+nYv)Mp1r`A8jkWmW&
literal 0
HcmV?d00001
diff --git a/target/classes/DTO.class b/target/classes/DTO.class
new file mode 100644
index 0000000000000000000000000000000000000000..a4d4cefc6eacc1645541273bcba34909db3a11e2
GIT binary patch
literal 172
zcmX^0Z`VEs1_nb0ZgvJvb_Om+2G;b{63-My24)RSPeumL;LP;A#FEmYR7M63n-D9X
zti-ZJ{hY+SbbbG%tkmQZYdcIKMh33n{L-T2RJY6=pgsR${J3Jp3VhIw*avSvNB&s
zKTkK;;1E4ux6i(3PWyQ4>RsgZ*3~+9=KSU$gDb`lo)+nNojal9t?R_W{$xqm6fx}s
zDiu5Dco`RamCV&zE7B#@ZCqqrxpPi;kg#`9@PVX0*3OfXE4lV{rmn2yI#!id)g~aT
zxhqcdrh>Q57oJDGJPnKX#4x~|hv^G`Was53mZj#w{er1j0aI~uey(0sWluC6DT#W;f_KzNFoIvGKu}Cl^okJz87*RA6CKn3H2v&^FP4
z*}SvPFI&Mc9KTe2uHOQl?_t}v>{^#tE6%aqbJC)#C7V8oa&ax$)TgDkt3{vf>!jcvw
z<(GA2_7?(Us2GUNNQ|k1qWpr?qLR$i;@~p>v);O1I-b6P9;-q=`099{eH_H+rxW<$
zw0^LGS%87bMkYmN*6R-hSe2Qbz1MBJvgpy7KQ__Mw#;`E?2k7j@c$QB_hr$aOHAiQ
zZa?`Gvv<{*rYC=Ba0@T*>dEG(1MsSub?8YBs+0n{$OMhVaA=$fj$8O
z0fx7ZAQ~yx!?a<~_aMa}u%uBPNW!%tl>+!I24zhM5McQK{}_-7HvyJWVb){MstC=W
zF*Re!xVTLNWnBmWImHl|715l6VHzSM!%W4Vm0{*CX)GtfRA|OVgdX4#c$_6rr9SEhF7#N-bO=4gG03Ddr&HD5Xb)~EhL0MOQ9e)1w|>>P!I$`v|OsyUJyFW@G+E74u%Ai6o)tPb@T%;
zGUEgIP>y?=LW}azc6u(G-TnV|&q;s%{_zt)5=9kpjLVo%Az@q$lQO1MOhZ>NqadkZ
zR>7Qt=PH^oFNOsbFR&-8p0XW?5j$XNFZV3x^Ed!ucN$>d|T99&>|f$9K71UjAPean}^z39>SDB^s$}
zT2y%b)Ki{kx>UGkR2Q3{D~3fEW3&-FXig(z%_7uf(Xr}XiQR}b-jRkL@0@$Sc|vc5
zQz5~4P%?M)E$VS_>S|j{({-3{tRE4gLxRVY1C!L)yDUC_53pKsa}eroHeL
znqzWIiM7PkSnDOU{Nx4Nrs#Kt_PS0t{a*lWl&77(5sVO;PWgrIc#ylMs~~}gctrZ`
zc#I(`NFr~I*27fN6Y>|#BQ!HSy(RoaULmp#-Vk0RLZs2$#05HX-w`9K&cAW`2&W%W
iDmPBW4v?(C8442J;>2q>QNn+QQ4+cfk)Rj}V}AgeizvVV
literal 0
HcmV?d00001