From 161096273ad166b04775ac68f83952b5dea4796a Mon Sep 17 00:00:00 2001 From: esoe Date: Sat, 8 Oct 2022 19:58:59 +0300 Subject: [PATCH] qq --- src/main/java/ru/molokoin/ExchangeServer.java | 137 +---------------- .../java/ru/molokoin/MainFrameController.java | 1 + .../ru/molokoin/example/ExchangeServer.java | 138 ++++++++++++++++++ .../ru/molokoin/example/TestServerNIO.java | 19 +++ .../example/servernio/IServerAdminFace.java | 13 ++ .../example/servernio/IServerUserFace.java | 5 + .../ru/molokoin/example/servernio/Server.java | 28 ++++ .../ru/molokoin/example/testFileSystem.java | 50 +++++++ .../classes/ru/molokoin/ExchangeServer.class | Bin 4588 -> 291 bytes .../ru/molokoin/MainFrameController.class | Bin 1707 -> 1723 bytes .../ru/molokoin/example/ExchangeServer.class | Bin 0 -> 4604 bytes .../ru/molokoin/example/TestServerNIO.class | Bin 0 -> 1028 bytes .../example/servernio/IServerAdminFace.class | Bin 0 -> 249 bytes .../example/servernio/IServerUserFace.class | Bin 0 -> 141 bytes .../molokoin/example/servernio/Server.class | Bin 0 -> 883 bytes .../ru/molokoin/example/testFileSystem.class | Bin 0 -> 2617 bytes 16 files changed, 256 insertions(+), 135 deletions(-) create mode 100644 src/main/java/ru/molokoin/example/ExchangeServer.java create mode 100644 src/main/java/ru/molokoin/example/TestServerNIO.java create mode 100644 src/main/java/ru/molokoin/example/servernio/IServerAdminFace.java create mode 100644 src/main/java/ru/molokoin/example/servernio/IServerUserFace.java create mode 100644 src/main/java/ru/molokoin/example/servernio/Server.java create mode 100644 src/main/java/ru/molokoin/example/testFileSystem.java create mode 100644 target/classes/ru/molokoin/example/ExchangeServer.class create mode 100644 target/classes/ru/molokoin/example/TestServerNIO.class create mode 100644 target/classes/ru/molokoin/example/servernio/IServerAdminFace.class create mode 100644 target/classes/ru/molokoin/example/servernio/IServerUserFace.class create mode 100644 target/classes/ru/molokoin/example/servernio/Server.class create mode 100644 target/classes/ru/molokoin/example/testFileSystem.class diff --git a/src/main/java/ru/molokoin/ExchangeServer.java b/src/main/java/ru/molokoin/ExchangeServer.java index fdaa8ec..24badd6 100644 --- a/src/main/java/ru/molokoin/ExchangeServer.java +++ b/src/main/java/ru/molokoin/ExchangeServer.java @@ -1,138 +1,5 @@ package ru.molokoin; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.net.ServerSocket; -import java.net.Socket; -import java.nio.charset.StandardCharsets; -/** - * - */ -public class ExchangeServer extends Thread{ - private int port = 8081; - private int num = 0; - public static boolean isActive; - public static ServerSocket serverSocket; - public static Socket socket; - - ExchangeServer() throws Exception{ - isActive = true; - serverSocket = new ServerSocket(port); - } - ExchangeServer (int port) throws Exception{ - isActive = true; - setPort(port); - serverSocket = new ServerSocket(port); - } - /** - * @return the port - */ - public int getPort() { - return port; - } - /** - * @param port the port to set - */ - public void setPort(int port) { - this.port = port; - } - //осановка сервера - public void finish() throws Exception{ - isActive = false; - } - - public void connect() throws Exception{} - - //запуск сервера - @Override - public void run(){ - System.out.printf("%s started... \n", Thread.currentThread().getName()); - try { - System.out.println("Server started at port: " + port + " ..."); - do { - if (isActive){ - // ожидаем подключения - Socket socket = serverSocket.accept(); - System.out.println("Client connected ..."); - num++; - - // для подключившегося клиента открываем потоки - // чтения и записи - try (BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); - PrintWriter output = new PrintWriter(socket.getOutputStream())) { - - // ждем первой строки запроса - while (!input.ready()); - - // считываем и печатаем все что было отправлено клиентом - System.out.println(); - String firstLine = null; - String querry = null; - while (input.ready()) { - String line = input.readLine(); - if (firstLine == null){ - firstLine = line; - if(firstLine.startsWith("GET")){ - querry = "GET"; - } - if(firstLine.startsWith("POST")){ - querry = "POST"; - } - System.out.println("firstLine: " + firstLine); - System.out.println("querry: " + querry); - } - //System.out.println(line); - } - - // отправляем ответ - System.out.println("отправка ответа от сервера:"); - String path = new File("").getAbsolutePath(); - String fileName = "upload.http"; - path = path + "/src/main/webapp/"; - File file = new File(path + fileName); - //String text = ""; - try (BufferedReader br = new BufferedReader(new FileReader(file))){ - String line; - while ((line = br.readLine()) != null) { - System.out.println(line); - output.println(line); - //text = text + " " + line; - } - output.flush(); - } - catch (IOException e) { - e.printStackTrace(); - } - - // по окончанию выполнения блока try-with-resources потоки, - // а вместе с ними и соединение будут закрыты - System.out.println("Client disconnected!"); - System.out.println("num: " + num); - } - } - else { - System.out.printf("%s finished... \n", Thread.currentThread().getName()); - serverSocket.close(); - socket.close(); - return; //завершение потока - } - } while (true); - //serverSocket.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - public static void main(String[] args) { - try { - new ExchangeServer().start(); - } catch (Exception e) { - System.out.println(e); - } - } - +public class ExchangeServer { + } diff --git a/src/main/java/ru/molokoin/MainFrameController.java b/src/main/java/ru/molokoin/MainFrameController.java index fc5573d..77a8d7a 100644 --- a/src/main/java/ru/molokoin/MainFrameController.java +++ b/src/main/java/ru/molokoin/MainFrameController.java @@ -8,6 +8,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.TextField; +import ru.molokoin.example.ExchangeServer; public class MainFrameController implements Initializable{ @FXML diff --git a/src/main/java/ru/molokoin/example/ExchangeServer.java b/src/main/java/ru/molokoin/example/ExchangeServer.java new file mode 100644 index 0000000..b1b895a --- /dev/null +++ b/src/main/java/ru/molokoin/example/ExchangeServer.java @@ -0,0 +1,138 @@ +package ru.molokoin.example; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +/** + * + */ +public class ExchangeServer extends Thread{ + private int port = 8081; + private int num = 0; + public static boolean isActive; + public static ServerSocket serverSocket; + public static Socket socket; + + public ExchangeServer() throws Exception{ + isActive = true; + serverSocket = new ServerSocket(port); + } + ExchangeServer (int port) throws Exception{ + isActive = true; + setPort(port); + serverSocket = new ServerSocket(port); + } + /** + * @return the port + */ + public int getPort() { + return port; + } + /** + * @param port the port to set + */ + public void setPort(int port) { + this.port = port; + } + //осановка сервера + public void finish() throws Exception{ + isActive = false; + } + + public void connect() throws Exception{} + + //запуск сервера + @Override + public void run(){ + System.out.printf("%s started... \n", Thread.currentThread().getName()); + try { + System.out.println("Server started at port: " + port + " ..."); + do { + if (isActive){ + // ожидаем подключения + Socket socket = serverSocket.accept(); + System.out.println("Client connected ..."); + num++; + + // для подключившегося клиента открываем потоки + // чтения и записи + try (BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); + PrintWriter output = new PrintWriter(socket.getOutputStream())) { + + // ждем первой строки запроса + while (!input.ready()); + + // считываем и печатаем все что было отправлено клиентом + System.out.println(); + String firstLine = null; + String querry = null; + while (input.ready()) { + String line = input.readLine(); + if (firstLine == null){ + firstLine = line; + if(firstLine.startsWith("GET")){ + querry = "GET"; + } + if(firstLine.startsWith("POST")){ + querry = "POST"; + } + System.out.println("firstLine: " + firstLine); + System.out.println("querry: " + querry); + } + //System.out.println(line); + } + + // отправляем ответ + System.out.println("отправка ответа от сервера:"); + String path = new File("").getAbsolutePath(); + String fileName = "upload.http"; + path = path + "/src/main/webapp/"; + File file = new File(path + fileName); + //String text = ""; + try (BufferedReader br = new BufferedReader(new FileReader(file))){ + String line; + while ((line = br.readLine()) != null) { + System.out.println(line); + output.println(line); + //text = text + " " + line; + } + output.flush(); + } + catch (IOException e) { + e.printStackTrace(); + } + + // по окончанию выполнения блока try-with-resources потоки, + // а вместе с ними и соединение будут закрыты + System.out.println("Client disconnected!"); + System.out.println("num: " + num); + } + } + else { + System.out.printf("%s finished... \n", Thread.currentThread().getName()); + serverSocket.close(); + socket.close(); + return; //завершение потока + } + } while (true); + //serverSocket.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + public static void main(String[] args) { + try { + new ExchangeServer().start(); + } catch (Exception e) { + System.out.println(e); + } + } + +} diff --git a/src/main/java/ru/molokoin/example/TestServerNIO.java b/src/main/java/ru/molokoin/example/TestServerNIO.java new file mode 100644 index 0000000..faaeffc --- /dev/null +++ b/src/main/java/ru/molokoin/example/TestServerNIO.java @@ -0,0 +1,19 @@ +package ru.molokoin.example; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.channels.ServerSocketChannel; +import java.nio.channels.SocketChannel; + +public class TestServerNIO { + public static void main(String[] args) throws IOException { + ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); + serverSocketChannel.socket().bind(new InetSocketAddress(9999)); + serverSocketChannel.configureBlocking(false); + while(true){ + SocketChannel socketChannel = serverSocketChannel.accept(); + + //do something with socketChannel... +} + } +} diff --git a/src/main/java/ru/molokoin/example/servernio/IServerAdminFace.java b/src/main/java/ru/molokoin/example/servernio/IServerAdminFace.java new file mode 100644 index 0000000..5a087ae --- /dev/null +++ b/src/main/java/ru/molokoin/example/servernio/IServerAdminFace.java @@ -0,0 +1,13 @@ +package ru.molokoin.example.servernio; + +public interface IServerAdminFace { + //передаем адрес хоста + public abstract void initHost(String host); + //передаем номер порта для запуска сервера + public abstract void initPort(int port); + //запуск сервера + public abstract void start(); + //остановка сервера + public abstract void stop(); + +} diff --git a/src/main/java/ru/molokoin/example/servernio/IServerUserFace.java b/src/main/java/ru/molokoin/example/servernio/IServerUserFace.java new file mode 100644 index 0000000..0dbb4be --- /dev/null +++ b/src/main/java/ru/molokoin/example/servernio/IServerUserFace.java @@ -0,0 +1,5 @@ +package ru.molokoin.example.servernio; + +public interface IServerUserFace { + +} diff --git a/src/main/java/ru/molokoin/example/servernio/Server.java b/src/main/java/ru/molokoin/example/servernio/Server.java new file mode 100644 index 0000000..9bdacdc --- /dev/null +++ b/src/main/java/ru/molokoin/example/servernio/Server.java @@ -0,0 +1,28 @@ +package ru.molokoin.example.servernio; + +public class Server implements IServerUserFace, IServerAdminFace{ + Server(){} + public static void main(String[] args) { + + } + @Override + public void start() { + // TODO Auto-generated method stub + + } + @Override + public void stop() { + // TODO Auto-generated method stub + + } + @Override + public void initHost(String host) { + // TODO Auto-generated method stub + + } + @Override + public void initPort(int port) { + // TODO Auto-generated method stub + + } +} diff --git a/src/main/java/ru/molokoin/example/testFileSystem.java b/src/main/java/ru/molokoin/example/testFileSystem.java new file mode 100644 index 0000000..dd60970 --- /dev/null +++ b/src/main/java/ru/molokoin/example/testFileSystem.java @@ -0,0 +1,50 @@ +package ru.molokoin.example; + +import java.io.IOException; +import java.io.RandomAccessFile; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class testFileSystem { + public static void main(String[] args) { + try { + FileSystem filesystem = FileSystems.getDefault(); + for (Path rootdir : filesystem.getRootDirectories()) { + System.out.println(rootdir.toString()); + } + } + catch (Exception e) { + e.printStackTrace(); + } + + //читаем файл + RandomAccessFile aFile; + try { + String stringPath = "src/main/webapp/upload.http"; + Path path = Paths.get(stringPath); + aFile = new RandomAccessFile(path.toAbsolutePath().toString(), "rw"); + FileChannel inChannel = aFile.getChannel(); + ByteBuffer buf = ByteBuffer.allocate(24); + int bytesRead; + bytesRead = inChannel.read(buf); + while (bytesRead != -1){ + System.out.println("Read " + bytesRead); + buf.flip(); + while(buf.hasRemaining()){ + System.out.print((char) buf.get()); + } + buf.clear(); + bytesRead = inChannel.read(buf); + } + aFile.close(); + } + catch (IOException e) { + e.printStackTrace(); + } + } +} + diff --git a/target/classes/ru/molokoin/ExchangeServer.class b/target/classes/ru/molokoin/ExchangeServer.class index 5a1271ec2e521ac8cd1b3863f88bf5e5b97f8c15..2308d07deea432c130515c704298a0fec7f4c640 100644 GIT binary patch delta 140 zcmaE(yqJmW)W2Q(7#JAL83ZPB8L0UuWu+#UFfy>&Waed-*fBCNYiNcsGO#%3r=)T* zFf(xSFt9SPO?F`Poy^9iT-?CLhBf9?+-=IDO!IZ2vgdG~ zcbmI5@6GB^(j2b?aV3v*w zRF;9_b(F#*vw#lGna$PVMVW?+6lP5e&WCxpL|D|4=fV|rYvul>I(+aeRJO$u#>z}z zw_$dLyW`Zlx-A(A$Jd6i!bULJDugE~TD zXs?xY1c*uR)UiRpYPRL#2?^*;IyU1jfftcfqQ&#Rvvbo)JTJQGsU`6keO#LhHzO)2 zHBh4(+k7_acMYKSr5CezK9r(+x93Ka~J zqFZ!R9vVdz9ki4ofs}@%!hDAl&snof=1y~`6;4FMW^{?OPV3kXQ=xQC*RstF>p6}U z6Gb<2lng=xmbf>gaCOcB=LkOkW$}FkJLLLKv8hAJ>yGX%b!#2)!SwQ1V4SntKB z804!uI=j61jDo)>W~MC>6Rh>(DF*HKjA5DsvU-}fA0In)-}v!UyT=cX4~-ukKUiyT z42=(S+ga3}x|gfnJeKdlpoY)##mPtBvRIr7JgdM;y&rAzc}~X{L_x7{Yj-*s&sfH) zu+{6umxw2miYLR-re4cRiN0UfF^I1)ZTiFUjM2fMzM?oErsyS^& zn)||hNp~3CECS6M4)Ap-Mwd^B7w`@7;5T_|(t`q@@gn}cQ$9mFUPL9`*AvgAd&OPD zIVbKI05X4k?BOL$Zfna9%98Oj(@@C~OBQxVl+a6i+5)7g>t3T?R`*xoxHP za4O#rNMx{tE-Zera`7WhCp-E4MaN%l7u(q-+4{O<>)+2wv3xA@&2Wd!E$lRAPQ$kV z(N?|SOhWW^CNpNl5RG`1CqmW!rJ~;fP8`iV_U2_p zT9oG4C}{J=lnT@07S%IeiwbY-zFi}gd8v(M!o!u%{Ywh4nUH|s-(8BBLEqEx$DIf_VV z6h`REEVc}xZv^QP^atIe7?7=9Blt+LG~mwSzI_w_A%`p;R6&mlYJ=D)+k1lEfafIc z2zY~@fT#N5EIzRhTJ^(0jjJbet0#h59_OctGvFx#=)iwcwza~xE%51y=LGUTLLSBb zQ1vq-_*@pB4|=P=7%UT|1KuNeo)@dX>Rb$Zg|7G{Q0AQQX3(dCeihUmeP0L#d?Wa} zs9HXVYRU;zP)?v!hJ%4}Di#V>oSb+gP@2V|K=}#WBAbT?aYN8AORv2Q_>Twmfd3?X z0X^s+L{-2a(4XguLlz@)><{>}I3|jG&vuBT?++Yz&8E8?PX$U(V73T5F^C!Mvhv!i zhT{SEiL*g5$l<}WSFdb132$TjAj%sWpNF@hQKYzqSO^-9Pj}vMT%@0zCUh7UKN`Zz zS^VTs8=ZaZ5HuB1yVM@W>2md?dXi(S%Bn2JuuGj*Z!&-r>TOpk$91j+t_2)xTpL}R zcwS=Hp)sa0a2;y+oB3MYh#-FmwPF!g;3jl(mSBb6#osCS<5oPx-MzRCkK%SbjyCK= zJD$Z#b|4)%zy|*yR^updjbRO5#ag^Yx_`5{zk`j+hfS&io7Ls)(OcPthuCj#fT5!7 zt+#RB&;EHAwi5X^b%agxF>F^avB5o!w5tXEt~;>9wGKO78!5b>NqrY1E?=uW;ri%2$Y7 zW)-CV6=!8c`wV`K-@r%AE%+_@l@ocTeWOC9`7FrY3ZgE>Yxo`f#OB8DIaBxpZTl+b zUORzh@MusPdNmxe{~{XO2K*N_8Xn=_JGhA7@-t|hKoXVjrgg~j-~B~w9s$mvVgq;1 zz`vM7dHDpZsQ>@+5Ikd^2{cZNjfZ6DQ*9i}%Fdvy)tsAy4CvPRZl19H*Gq zj6#J*@TV;PJP5zkF9zw~4v|V))^a{`PS91;Kw$6g!vlQS9>gr{DJu3g_y_*U^9s7= XHN25CBmY0AT|*U>!oPUv!khmCgFaq8 diff --git a/target/classes/ru/molokoin/MainFrameController.class b/target/classes/ru/molokoin/MainFrameController.class index 5f19190c2c0002b64fe40939cfaa29c3b1e74aba..3494a70743fbf98018682da3a2c5f4e0d0b144cb 100644 GIT binary patch delta 125 zcmZ3@yPJ2yS5Xz8qEh|b{G9yk{LDQ4)QZI1f}GUNOpH?*MU=3~EM{tDV&t8y$r>jp z#=yZK!63{a$so=k#URHZGkFH<7DWXHeg;LLxDtargDQ|zW6);MU@&6PWH4jUVz6b< Jo1DvL2LMmj9svLV delta 109 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 literal 0 HcmV?d00001 diff --git a/target/classes/ru/molokoin/example/TestServerNIO.class b/target/classes/ru/molokoin/example/TestServerNIO.class new file mode 100644 index 0000000000000000000000000000000000000000..4142abc5c9a1a126d84d3ecdec4a61c4392f84f8 GIT binary patch literal 1028 zcma)5TTc@~6#j-TEUb$KDpjZmwPLqaS?@g5m?+VtNuduVHR{uJJC>o_*=Bc3_(wkb z0!9;mfPYD&p4m2)CM5VWXU=8L_npi9`2F=efF10Zm}1C>1Gg9WK{t@f6(_vc_l0{P zqPQW#V-fCG>n03_g(H5x+QLE#b2g?i!;r2? zCH4osmIx1c%NGnwwZP+klZR64Bcl-?%7~#*yOc%9wUNV3>Q$6vWLOzL7x4sG#l$U!)gdGDRh5W`G+wsbp@y#MvY}~oc9+O?b9OYQI0y5lziXDHe4#1dwLW!*>TAejXvLEJy{-hXbmzK43?}> zvWydBVJQCRAQJ0+Xpjm>Tba;S=Bn_9U5S(bWzVYHe)Jt>p;K_?92nq%7u?9(Plai+5w|Vdb{3vl#1i{PB%bM_vV$GbO_yF||$QTIG^v k{qK+c=q>{_(Gx&G=XB5|!Vsd@U>}19haSl}qS(Ut1LmST^8f$< literal 0 HcmV?d00001 diff --git a/target/classes/ru/molokoin/example/servernio/IServerUserFace.class b/target/classes/ru/molokoin/example/servernio/IServerUserFace.class new file mode 100644 index 0000000000000000000000000000000000000000..747c4dfc4f7be7c5df684e5fc42eacd7015eb385 GIT binary patch literal 141 zcmX^0Z`VEs1_pBmc6J6PMh4xYQvKZgoc!$k%sluXP6X%)EgM)++{x}h}J(gaGo zH5)ld6AG8&TDYDFn(lG^QZ^z7S;EHGd?gV$W5ol}kPZe3n?FMKE_@Zl3?aL#0u}uu z43t;T3F&=(A#)hONFGDT5yq-2kVhTAF3qW^drTCox*@!CVN`tXCeu+%g@l#r*ZmX6 zJKVa2hjRt6S_K)yrzhf~BO`oiUzj7IVB3=JESGiMc)!3;1It{@UJ)&w?wVV*mgE literal 0 HcmV?d00001 diff --git a/target/classes/ru/molokoin/example/testFileSystem.class b/target/classes/ru/molokoin/example/testFileSystem.class new file mode 100644 index 0000000000000000000000000000000000000000..36ebb496659cfc310472b6e523ec8f2322d8b9df GIT binary patch literal 2617 zcmai0TXz#x6#h<|cG@u5(i<%;lp;t9g@7QpAV^!#YEx>9#exWv^rRV>%*4rri+C3m z#4FxW5q+>PzTjGx+frQeAj{w3yZ^xYok`OqH7;K!Gw1B{?Y+PK?S1mc-?x4Nuod5F zs1R7;X2U7Ra!xp=9hRq!RN9hZPiDM*rX@$uWIUPD5D=(8Zk#m2mSInZ_s5RQxF=A( z)3i-*mq2BxdrTnE=S;{TDp9MW3e^I2gQhKqvZED5R1^Lp+TU{-?dFAoM0m1LN*y4O=uPf zPD-y|CXB4bR60W4Ik++hB0(%hn}$|_*8c+4u>|eRkC-El^8FE}xGO?CCwol%G zCta0%WC50ccnR_0Mkc6B^})uhap zr&`>KXA92V5gAYtS#yo^j)0rMB=X z88g!9a5il@#>D!h=cP65D`mzPU=WYtaSa1`UnPuEcTZrDyip?pkuqtNQ}jGls?xA# zLwPBZtP#VWa8i5Xahb^|l`HOtbv%g?f%`mXPb}kDSx>5yMJg%@EmDI60u}D5Afgyk z-Fr}Ab(sjuQLoO7>o|nNxt{7v8n!Jhfv&vXl&^ShHRCtptO*|;*c691eVTqXgQBM5}0H|P^7eNoy}0iR|M8Q zpurSaT9&})qNtSVX(gdE{=Dr~ZF5$~3wV*y`0^!0s85Z+BY0WIE2OZ8?WhjT{)|YThee<>E6)srfLDMI2n%b^Qv1eD??z(JmnS!Fo(G2a!5{?9BWPU%zS|h2v&P`w3Ie14_6rqYtBQN7NAiu z<9B3E^$q{lEmKMR9Z_rAvvL&ZECf?dJ%p`{WfOCe&C`uQZH(e2;YwVBQ=l*$i%2BO zLVwakjkJFQYPiUFN1d!2m$}RuOYh(HN{Q$K-SgrGD)`0=mQRgeVg3sKR;{^?nrr@c zkWaM@=vd%CeFJ_i)b@GC;mAF-zA zCN>C6V>4HG2wa}|a|$)eepf?Zw5RfC?7e|Uhi)S}PJ{gdzInswbv&hvp576tZ@qzM zc2u#&-ur(sXSr3Yn@IXHzn?yL7xm!|Q&dU@&c%wOvF z)q`^=&D9lGXKvBMIffJMnZ{e!NDi<8n>h8i;SPSIo-3jFu+h$E9rLZ{+aj#y?*=r| zvI(2fOzU<;(1Ctl%i~yvqv+(Y=z@b4aCy62z)HN2Rk*}E^$LH#=a~Hg-S~<7w|QCK zK@YvH!(HBvzY|&Up7x*j@HQ^;D?p2P@GhBeXC>YvS_M4^@Bu#L+Bi&Nf5f*4&f#Nx z!rgwH#iz8ZWHiU{89t|Vf|g(4G6mpZ7+>NmR{E}w@-uc v<{5?}xS}4r12fnT&EJn|*sCF=A+F&FRnobjWroq^P0t4y&{cv~;M;!yRTrUx literal 0 HcmV?d00001