From 4f94e7ef9920eab5545fc6ccfdd3b1741732a8bb Mon Sep 17 00:00:00 2001
From: David Goz <david.goz@inaf.it>
Date: Tue, 25 Jun 2024 09:21:08 +0200
Subject: [PATCH] hpc_school

---
 .../not_opt/src/jacobi_2D_omp_not_opt.c       |   8 +-
 .../not_opt/src/jacobi_2D_serial_not_opt.c    |  22 +-
 .../mpi/SendRecv/Makefile                     |   0
 .../mpi/SendRecv/include/allvars.h            |   0
 .../mpi/SendRecv/include/tools.h              |   0
 .../mpi/SendRecv/make.def                     |   0
 .../mpi/SendRecv/make_mpi_path                |   0
 .../mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c |   0
 .../mpi/SendRecv/src/tools.c                  |   0
 .../mpi/Send_Recv_blocking/Makefile           |   0
 .../mpi/Send_Recv_blocking/include/allvars.h  |   0
 .../mpi/Send_Recv_blocking/include/tools.h    |   0
 .../mpi/Send_Recv_blocking/make.def           |   0
 .../mpi/Send_Recv_blocking/make_mpi_path      |   0
 .../script/input_parameters                   |   0
 .../Send_Recv_blocking/script/run_pleiadi.sh  |   0
 .../src/jacobi_2D_mpi_send_recv_blocking.c    |   0
 .../mpi/Send_Recv_blocking/src/tools.c        |   0
 .../mpi/Send_Recv_nonblocking/Makefile        |   0
 .../Send_Recv_nonblocking/include/allvars.h   |   0
 .../mpi/Send_Recv_nonblocking/include/tools.h |   0
 .../mpi/Send_Recv_nonblocking/make.def        |   0
 .../mpi/Send_Recv_nonblocking/make_mpi_path   |   0
 .../script/input_parameters                   |   0
 .../script/run_pleiadi.sh                     |   0
 .../src/jacobi_2D_mpi_send_recv_nonblocking.c |   0
 .../mpi/Send_Recv_nonblocking/src/tools.c     |   0
 .../mpi/Send_Recv_paired/Makefile             |   0
 .../mpi/Send_Recv_paired/include/allvars.h    |   0
 .../mpi/Send_Recv_paired/include/tools.h      |   0
 .../mpi/Send_Recv_paired/make.def             |   0
 .../mpi/Send_Recv_paired/make_mpi_path        |   0
 .../src/jacobi_2D_mpi_send_recv_paired.c      |   0
 .../mpi/Send_Recv_paired/src/tools.c          |   0
 .../mpi/cartesian/Makefile                    |   0
 .../mpi/cartesian/include/allvars.h           |   0
 .../mpi/cartesian/include/tools.h             |   0
 .../mpi/cartesian/make.def                    |   0
 .../mpi/cartesian/make_mpi_path               |   0
 .../cartesian/src/jacobi_2D_mpi_cartesian.c   |   0
 .../mpi/cartesian/src/tools.c                 |   0
 .../mpi/comp_comm/Makefile                    |   0
 .../mpi/comp_comm/include/allvars.h           |   0
 .../mpi/comp_comm/include/tools.h             |   0
 .../mpi/comp_comm/make.def                    |   0
 .../mpi/comp_comm/make_mpi_path               |   0
 .../mpi/comp_comm/script/input_parameters     |   0
 .../mpi/comp_comm/script/run_pleiadi.sh       |   0
 .../comp_comm/src/jacobi_2D_mpi_comp_comm.c   |   0
 .../mpi/comp_comm/src/tools.c                 |   0
 .../mpi/comp_comm_io/Makefile                 |   0
 .../mpi/comp_comm_io/include/allvars.h        |   0
 .../mpi/comp_comm_io/include/tools.h          |   0
 .../mpi/comp_comm_io/make.def                 |   0
 .../mpi/comp_comm_io/make_mpi_path            |   0
 .../mpi/comp_comm_io/script/input_parameters  |   0
 .../mpi/comp_comm_io/script/run_pleiadi.sh    |   0
 .../src/jacobi_2D_mpi_comp_comm_io.c          |   0
 .../mpi/comp_comm_io/src/tools.c              |   0
 .../Broadcast_Gather_Scatter/Broadcast_1.cc   |   0
 .../Broadcast_Gather_Scatter/Broadcast_2.cc   |   0
 .../Broadcast_Gather_Scatter/Gather_Scatter.c |   0
 .../Heat_Equation_Gather.c                    |   0
 .../lecture_Broadcast_Gather_Scatter.pdf      | Bin
 .../miscellaneous/MPI_Datatypes/Subarray.c    |   0
 .../MPI_Datatypes/lecture_MPI_Datatypes.pdf   | Bin
 .../mpi/miscellaneous/MPI_Datatypes/tools.c   |   0
 .../Parallel_IO/lecture_Parallel_IO.pdf       | Bin
 .../miscellaneous/Parallel_IO/write_arr1D.c   |   0
 .../miscellaneous/Parallel_IO/write_arr2D.c   |   0
 .../mpi/miscellaneous/cartesian               | Bin
 .../mpi/miscellaneous/cartesian.c             |   0
 .../mpi/miscellaneous/cartesian.cpp           |   0
 .../mpi/miscellaneous/color_ring.c            |   0
 .../mpi/miscellaneous/lecture_color_ring.pdf  | Bin
 .../mpi/miscellaneous/subarray                | Bin
 .../mpi/miscellaneous/subarray.c              |   0
 .../openmp/not_opt}/Makefile                  |   0
 .../openmp/not_opt/include/allvars.h          |  20 ++
 .../openmp/not_opt}/include/tools.h           |   0
 jacobi_solutions/openmp/not_opt/make.def      |  53 +++
 .../openmp/not_opt/script/input_parameters    |   9 +
 jacobi_solutions/openmp/not_opt/script/run.sh |  63 ++++
 .../not_opt/src/jacobi_2D_omp_not_opt.c       | 309 ++++++++++++++++++
 .../openmp/not_opt}/src/tools.c               |   0
 jacobi_solutions/openmp/opt/Makefile          |  66 ++++
 .../openmp/opt/include/allvars.h              |   0
 .../openmp}/opt/include/tools.h               |   0
 .../openmp/opt/make.def                       |   0
 .../openmp/opt/src/jacobi_2D_omp_opt.c        |   6 +-
 .../openmp}/opt/src/tools.c                   |   0
 jacobi_solutions/serial/not_opt/Makefile      |  63 ++++
 .../serial/not_opt}/include/allvars.h         |   0
 .../serial/not_opt/include/tools.h            |  18 +
 jacobi_solutions/serial/not_opt/make.def      |  45 +++
 .../serial/not_opt/script/input_parameters    |   8 +
 jacobi_solutions/serial/not_opt/script/run.sh |  52 +++
 .../not_opt/src/jacobi_2D_serial_not_opt.c    | 274 ++++++++++++++++
 jacobi_solutions/serial/not_opt/src/tools.c   |  59 ++++
 .../serial/opt/Makefile                       |   0
 jacobi_solutions/serial/opt/include/allvars.h |   9 +
 jacobi_solutions/serial/opt/include/tools.h   |  18 +
 .../serial/opt/make.def                       |   0
 .../serial/opt/src/jacobi_2D_serial_opt.c     |   0
 jacobi_solutions/serial/opt/src/tools.c       |  59 ++++
 ...C_course_2024_hands-on_session_OpenMP.pdf} | Bin 84051 -> 91732 bytes
 ...se_2024_hands-on_session_presentation.pdf} | Bin 224267 -> 225898 bytes
 107 files changed, 1136 insertions(+), 25 deletions(-)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/SendRecv/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/script/input_parameters (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/script/run_pleiadi.sh (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/src/jacobi_2D_mpi_send_recv_blocking.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_blocking/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/script/input_parameters (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/script/run_pleiadi.sh (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/src/jacobi_2D_mpi_send_recv_nonblocking.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_nonblocking/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/src/jacobi_2D_mpi_send_recv_paired.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/Send_Recv_paired/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/src/jacobi_2D_mpi_cartesian.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/cartesian/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/script/input_parameters (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/script/run_pleiadi.sh (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/src/jacobi_2D_mpi_comp_comm.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/Makefile (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/include/allvars.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/make.def (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/make_mpi_path (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/script/input_parameters (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/script/run_pleiadi.sh (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/src/jacobi_2D_mpi_comp_comm_io.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/comp_comm_io/src/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_1.cc (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_2.cc (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Broadcast_Gather_Scatter/Gather_Scatter.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Broadcast_Gather_Scatter/Heat_Equation_Gather.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Broadcast_Gather_Scatter/lecture_Broadcast_Gather_Scatter.pdf (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/MPI_Datatypes/Subarray.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/MPI_Datatypes/lecture_MPI_Datatypes.pdf (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/MPI_Datatypes/tools.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Parallel_IO/lecture_Parallel_IO.pdf (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Parallel_IO/write_arr1D.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/Parallel_IO/write_arr2D.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/cartesian (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/cartesian.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/cartesian.cpp (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/color_ring.c (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/lecture_color_ring.pdf (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/subarray (100%)
 rename {jacobi => jacobi_solutions}/mpi/miscellaneous/subarray.c (100%)
 rename {jacobi/openmp/opt => jacobi_solutions/openmp/not_opt}/Makefile (100%)
 create mode 100644 jacobi_solutions/openmp/not_opt/include/allvars.h
 rename {jacobi/openmp/opt => jacobi_solutions/openmp/not_opt}/include/tools.h (100%)
 create mode 100644 jacobi_solutions/openmp/not_opt/make.def
 create mode 100644 jacobi_solutions/openmp/not_opt/script/input_parameters
 create mode 100755 jacobi_solutions/openmp/not_opt/script/run.sh
 create mode 100644 jacobi_solutions/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
 rename {jacobi/openmp/opt => jacobi_solutions/openmp/not_opt}/src/tools.c (100%)
 create mode 100644 jacobi_solutions/openmp/opt/Makefile
 rename {jacobi => jacobi_solutions}/openmp/opt/include/allvars.h (100%)
 rename {jacobi/serial => jacobi_solutions/openmp}/opt/include/tools.h (100%)
 rename {jacobi => jacobi_solutions}/openmp/opt/make.def (100%)
 rename {jacobi => jacobi_solutions}/openmp/opt/src/jacobi_2D_omp_opt.c (98%)
 rename {jacobi/serial => jacobi_solutions/openmp}/opt/src/tools.c (100%)
 create mode 100644 jacobi_solutions/serial/not_opt/Makefile
 rename {jacobi/serial/opt => jacobi_solutions/serial/not_opt}/include/allvars.h (100%)
 create mode 100644 jacobi_solutions/serial/not_opt/include/tools.h
 create mode 100644 jacobi_solutions/serial/not_opt/make.def
 create mode 100644 jacobi_solutions/serial/not_opt/script/input_parameters
 create mode 100755 jacobi_solutions/serial/not_opt/script/run.sh
 create mode 100644 jacobi_solutions/serial/not_opt/src/jacobi_2D_serial_not_opt.c
 create mode 100644 jacobi_solutions/serial/not_opt/src/tools.c
 rename {jacobi => jacobi_solutions}/serial/opt/Makefile (100%)
 create mode 100644 jacobi_solutions/serial/opt/include/allvars.h
 create mode 100644 jacobi_solutions/serial/opt/include/tools.h
 rename {jacobi => jacobi_solutions}/serial/opt/make.def (100%)
 rename {jacobi => jacobi_solutions}/serial/opt/src/jacobi_2D_serial_opt.c (100%)
 create mode 100644 jacobi_solutions/serial/opt/src/tools.c
 rename material/slides/{INAF_HPC_course_hands-on_session_OpenMP.pdf => INAF_HPC_course_2024_hands-on_session_OpenMP.pdf} (79%)
 rename material/slides/{INAF_HPC_course_hands-on_session_presentation.pdf => INAF_HPC_course_2024_hands-on_session_presentation.pdf} (89%)

diff --git a/jacobi/openmp/not_opt/src/jacobi_2D_omp_not_opt.c b/jacobi/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
index a43c5bb..d61d7fd 100644
--- a/jacobi/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
+++ b/jacobi/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
@@ -225,9 +225,7 @@ void JacobiAlgorithm(MyData      **const restrict Phi,
 {
   *error = 0.0;
 
-#pragma omp parallel default(none) shared(error, delta, Phi, Phi0)      \
-                                   firstprivate(ibeg, iend, jbeg, jend) \
-                                   num_threads(Nthreads)
+#pragma omp parallel default(none) /**** MISSING CLAUSES ****/
   {
 #if defined(DEBUG)
     const int id  = omp_get_thread_num();
@@ -236,7 +234,9 @@ void JacobiAlgorithm(MyData      **const restrict Phi,
     #pragma omp barrier
 #endif /* DEBUG */
 
-    #pragma omp for schedule(static)
+
+    /***** MISSING LOOP(s) PARALLELIZATION *****/
+    
     for (int j=jbeg ; j<=jend ; j++)
       {
 	for (int i=ibeg ; i<=iend ; i++)
diff --git a/jacobi/serial/not_opt/src/jacobi_2D_serial_not_opt.c b/jacobi/serial/not_opt/src/jacobi_2D_serial_not_opt.c
index ba53f32..ea1d8ed 100644
--- a/jacobi/serial/not_opt/src/jacobi_2D_serial_not_opt.c
+++ b/jacobi/serial/not_opt/src/jacobi_2D_serial_not_opt.c
@@ -75,7 +75,7 @@ int main(int argc, char **argv)
      2. Generate grid, allocate memory
      -------------------------------------------------------- */
 
-  /* memory allocation */
+  /* memory allocation for I.C. */
   MyData *xg = (MyData *) malloc((NX_GLOB + 2*NGHOST) * sizeof(MyData));
   MyData *yg = (MyData *) malloc((NY_GLOB + 2*NGHOST) * sizeof(MyData));
   assert((xg != NULL) && (yg != NULL));
@@ -136,24 +136,10 @@ int main(int argc, char **argv)
   printf("\n\t NX_GLOB x NY_GLOB = %d x %d\n", NX_GLOB, NY_GLOB);
   printf("\n\t Time = %lf [s]\n\n", seconds() - time_start);
 
-  // free memory
-  if (phi0)
-    {
-      free(phi0[0]);
-      free(phi0);
-    }
-
-  if (phi)
-    {
-      free(phi[0]);
-      free(phi);
-    }
 
-  if (yg)
-    free(yg);
-  
-  if (xg)
-    free(xg);
+  /******************** MISSING CODE ********************************/
+  /* free memory dynamically allocated                              */
+  /******************** MISSING CODE ********************************/
   
   return 0;
 }
diff --git a/jacobi/mpi/SendRecv/Makefile b/jacobi_solutions/mpi/SendRecv/Makefile
similarity index 100%
rename from jacobi/mpi/SendRecv/Makefile
rename to jacobi_solutions/mpi/SendRecv/Makefile
diff --git a/jacobi/mpi/SendRecv/include/allvars.h b/jacobi_solutions/mpi/SendRecv/include/allvars.h
similarity index 100%
rename from jacobi/mpi/SendRecv/include/allvars.h
rename to jacobi_solutions/mpi/SendRecv/include/allvars.h
diff --git a/jacobi/mpi/SendRecv/include/tools.h b/jacobi_solutions/mpi/SendRecv/include/tools.h
similarity index 100%
rename from jacobi/mpi/SendRecv/include/tools.h
rename to jacobi_solutions/mpi/SendRecv/include/tools.h
diff --git a/jacobi/mpi/SendRecv/make.def b/jacobi_solutions/mpi/SendRecv/make.def
similarity index 100%
rename from jacobi/mpi/SendRecv/make.def
rename to jacobi_solutions/mpi/SendRecv/make.def
diff --git a/jacobi/mpi/SendRecv/make_mpi_path b/jacobi_solutions/mpi/SendRecv/make_mpi_path
similarity index 100%
rename from jacobi/mpi/SendRecv/make_mpi_path
rename to jacobi_solutions/mpi/SendRecv/make_mpi_path
diff --git a/jacobi/mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c b/jacobi_solutions/mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c
similarity index 100%
rename from jacobi/mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c
rename to jacobi_solutions/mpi/SendRecv/src/jacobi_2D_mpi_sendrecv.c
diff --git a/jacobi/mpi/SendRecv/src/tools.c b/jacobi_solutions/mpi/SendRecv/src/tools.c
similarity index 100%
rename from jacobi/mpi/SendRecv/src/tools.c
rename to jacobi_solutions/mpi/SendRecv/src/tools.c
diff --git a/jacobi/mpi/Send_Recv_blocking/Makefile b/jacobi_solutions/mpi/Send_Recv_blocking/Makefile
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/Makefile
rename to jacobi_solutions/mpi/Send_Recv_blocking/Makefile
diff --git a/jacobi/mpi/Send_Recv_blocking/include/allvars.h b/jacobi_solutions/mpi/Send_Recv_blocking/include/allvars.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/include/allvars.h
rename to jacobi_solutions/mpi/Send_Recv_blocking/include/allvars.h
diff --git a/jacobi/mpi/Send_Recv_blocking/include/tools.h b/jacobi_solutions/mpi/Send_Recv_blocking/include/tools.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/include/tools.h
rename to jacobi_solutions/mpi/Send_Recv_blocking/include/tools.h
diff --git a/jacobi/mpi/Send_Recv_blocking/make.def b/jacobi_solutions/mpi/Send_Recv_blocking/make.def
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/make.def
rename to jacobi_solutions/mpi/Send_Recv_blocking/make.def
diff --git a/jacobi/mpi/Send_Recv_blocking/make_mpi_path b/jacobi_solutions/mpi/Send_Recv_blocking/make_mpi_path
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/make_mpi_path
rename to jacobi_solutions/mpi/Send_Recv_blocking/make_mpi_path
diff --git a/jacobi/mpi/Send_Recv_blocking/script/input_parameters b/jacobi_solutions/mpi/Send_Recv_blocking/script/input_parameters
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/script/input_parameters
rename to jacobi_solutions/mpi/Send_Recv_blocking/script/input_parameters
diff --git a/jacobi/mpi/Send_Recv_blocking/script/run_pleiadi.sh b/jacobi_solutions/mpi/Send_Recv_blocking/script/run_pleiadi.sh
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/script/run_pleiadi.sh
rename to jacobi_solutions/mpi/Send_Recv_blocking/script/run_pleiadi.sh
diff --git a/jacobi/mpi/Send_Recv_blocking/src/jacobi_2D_mpi_send_recv_blocking.c b/jacobi_solutions/mpi/Send_Recv_blocking/src/jacobi_2D_mpi_send_recv_blocking.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/src/jacobi_2D_mpi_send_recv_blocking.c
rename to jacobi_solutions/mpi/Send_Recv_blocking/src/jacobi_2D_mpi_send_recv_blocking.c
diff --git a/jacobi/mpi/Send_Recv_blocking/src/tools.c b/jacobi_solutions/mpi/Send_Recv_blocking/src/tools.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_blocking/src/tools.c
rename to jacobi_solutions/mpi/Send_Recv_blocking/src/tools.c
diff --git a/jacobi/mpi/Send_Recv_nonblocking/Makefile b/jacobi_solutions/mpi/Send_Recv_nonblocking/Makefile
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/Makefile
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/Makefile
diff --git a/jacobi/mpi/Send_Recv_nonblocking/include/allvars.h b/jacobi_solutions/mpi/Send_Recv_nonblocking/include/allvars.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/include/allvars.h
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/include/allvars.h
diff --git a/jacobi/mpi/Send_Recv_nonblocking/include/tools.h b/jacobi_solutions/mpi/Send_Recv_nonblocking/include/tools.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/include/tools.h
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/include/tools.h
diff --git a/jacobi/mpi/Send_Recv_nonblocking/make.def b/jacobi_solutions/mpi/Send_Recv_nonblocking/make.def
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/make.def
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/make.def
diff --git a/jacobi/mpi/Send_Recv_nonblocking/make_mpi_path b/jacobi_solutions/mpi/Send_Recv_nonblocking/make_mpi_path
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/make_mpi_path
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/make_mpi_path
diff --git a/jacobi/mpi/Send_Recv_nonblocking/script/input_parameters b/jacobi_solutions/mpi/Send_Recv_nonblocking/script/input_parameters
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/script/input_parameters
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/script/input_parameters
diff --git a/jacobi/mpi/Send_Recv_nonblocking/script/run_pleiadi.sh b/jacobi_solutions/mpi/Send_Recv_nonblocking/script/run_pleiadi.sh
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/script/run_pleiadi.sh
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/script/run_pleiadi.sh
diff --git a/jacobi/mpi/Send_Recv_nonblocking/src/jacobi_2D_mpi_send_recv_nonblocking.c b/jacobi_solutions/mpi/Send_Recv_nonblocking/src/jacobi_2D_mpi_send_recv_nonblocking.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/src/jacobi_2D_mpi_send_recv_nonblocking.c
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/src/jacobi_2D_mpi_send_recv_nonblocking.c
diff --git a/jacobi/mpi/Send_Recv_nonblocking/src/tools.c b/jacobi_solutions/mpi/Send_Recv_nonblocking/src/tools.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_nonblocking/src/tools.c
rename to jacobi_solutions/mpi/Send_Recv_nonblocking/src/tools.c
diff --git a/jacobi/mpi/Send_Recv_paired/Makefile b/jacobi_solutions/mpi/Send_Recv_paired/Makefile
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/Makefile
rename to jacobi_solutions/mpi/Send_Recv_paired/Makefile
diff --git a/jacobi/mpi/Send_Recv_paired/include/allvars.h b/jacobi_solutions/mpi/Send_Recv_paired/include/allvars.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/include/allvars.h
rename to jacobi_solutions/mpi/Send_Recv_paired/include/allvars.h
diff --git a/jacobi/mpi/Send_Recv_paired/include/tools.h b/jacobi_solutions/mpi/Send_Recv_paired/include/tools.h
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/include/tools.h
rename to jacobi_solutions/mpi/Send_Recv_paired/include/tools.h
diff --git a/jacobi/mpi/Send_Recv_paired/make.def b/jacobi_solutions/mpi/Send_Recv_paired/make.def
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/make.def
rename to jacobi_solutions/mpi/Send_Recv_paired/make.def
diff --git a/jacobi/mpi/Send_Recv_paired/make_mpi_path b/jacobi_solutions/mpi/Send_Recv_paired/make_mpi_path
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/make_mpi_path
rename to jacobi_solutions/mpi/Send_Recv_paired/make_mpi_path
diff --git a/jacobi/mpi/Send_Recv_paired/src/jacobi_2D_mpi_send_recv_paired.c b/jacobi_solutions/mpi/Send_Recv_paired/src/jacobi_2D_mpi_send_recv_paired.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/src/jacobi_2D_mpi_send_recv_paired.c
rename to jacobi_solutions/mpi/Send_Recv_paired/src/jacobi_2D_mpi_send_recv_paired.c
diff --git a/jacobi/mpi/Send_Recv_paired/src/tools.c b/jacobi_solutions/mpi/Send_Recv_paired/src/tools.c
similarity index 100%
rename from jacobi/mpi/Send_Recv_paired/src/tools.c
rename to jacobi_solutions/mpi/Send_Recv_paired/src/tools.c
diff --git a/jacobi/mpi/cartesian/Makefile b/jacobi_solutions/mpi/cartesian/Makefile
similarity index 100%
rename from jacobi/mpi/cartesian/Makefile
rename to jacobi_solutions/mpi/cartesian/Makefile
diff --git a/jacobi/mpi/cartesian/include/allvars.h b/jacobi_solutions/mpi/cartesian/include/allvars.h
similarity index 100%
rename from jacobi/mpi/cartesian/include/allvars.h
rename to jacobi_solutions/mpi/cartesian/include/allvars.h
diff --git a/jacobi/mpi/cartesian/include/tools.h b/jacobi_solutions/mpi/cartesian/include/tools.h
similarity index 100%
rename from jacobi/mpi/cartesian/include/tools.h
rename to jacobi_solutions/mpi/cartesian/include/tools.h
diff --git a/jacobi/mpi/cartesian/make.def b/jacobi_solutions/mpi/cartesian/make.def
similarity index 100%
rename from jacobi/mpi/cartesian/make.def
rename to jacobi_solutions/mpi/cartesian/make.def
diff --git a/jacobi/mpi/cartesian/make_mpi_path b/jacobi_solutions/mpi/cartesian/make_mpi_path
similarity index 100%
rename from jacobi/mpi/cartesian/make_mpi_path
rename to jacobi_solutions/mpi/cartesian/make_mpi_path
diff --git a/jacobi/mpi/cartesian/src/jacobi_2D_mpi_cartesian.c b/jacobi_solutions/mpi/cartesian/src/jacobi_2D_mpi_cartesian.c
similarity index 100%
rename from jacobi/mpi/cartesian/src/jacobi_2D_mpi_cartesian.c
rename to jacobi_solutions/mpi/cartesian/src/jacobi_2D_mpi_cartesian.c
diff --git a/jacobi/mpi/cartesian/src/tools.c b/jacobi_solutions/mpi/cartesian/src/tools.c
similarity index 100%
rename from jacobi/mpi/cartesian/src/tools.c
rename to jacobi_solutions/mpi/cartesian/src/tools.c
diff --git a/jacobi/mpi/comp_comm/Makefile b/jacobi_solutions/mpi/comp_comm/Makefile
similarity index 100%
rename from jacobi/mpi/comp_comm/Makefile
rename to jacobi_solutions/mpi/comp_comm/Makefile
diff --git a/jacobi/mpi/comp_comm/include/allvars.h b/jacobi_solutions/mpi/comp_comm/include/allvars.h
similarity index 100%
rename from jacobi/mpi/comp_comm/include/allvars.h
rename to jacobi_solutions/mpi/comp_comm/include/allvars.h
diff --git a/jacobi/mpi/comp_comm/include/tools.h b/jacobi_solutions/mpi/comp_comm/include/tools.h
similarity index 100%
rename from jacobi/mpi/comp_comm/include/tools.h
rename to jacobi_solutions/mpi/comp_comm/include/tools.h
diff --git a/jacobi/mpi/comp_comm/make.def b/jacobi_solutions/mpi/comp_comm/make.def
similarity index 100%
rename from jacobi/mpi/comp_comm/make.def
rename to jacobi_solutions/mpi/comp_comm/make.def
diff --git a/jacobi/mpi/comp_comm/make_mpi_path b/jacobi_solutions/mpi/comp_comm/make_mpi_path
similarity index 100%
rename from jacobi/mpi/comp_comm/make_mpi_path
rename to jacobi_solutions/mpi/comp_comm/make_mpi_path
diff --git a/jacobi/mpi/comp_comm/script/input_parameters b/jacobi_solutions/mpi/comp_comm/script/input_parameters
similarity index 100%
rename from jacobi/mpi/comp_comm/script/input_parameters
rename to jacobi_solutions/mpi/comp_comm/script/input_parameters
diff --git a/jacobi/mpi/comp_comm/script/run_pleiadi.sh b/jacobi_solutions/mpi/comp_comm/script/run_pleiadi.sh
similarity index 100%
rename from jacobi/mpi/comp_comm/script/run_pleiadi.sh
rename to jacobi_solutions/mpi/comp_comm/script/run_pleiadi.sh
diff --git a/jacobi/mpi/comp_comm/src/jacobi_2D_mpi_comp_comm.c b/jacobi_solutions/mpi/comp_comm/src/jacobi_2D_mpi_comp_comm.c
similarity index 100%
rename from jacobi/mpi/comp_comm/src/jacobi_2D_mpi_comp_comm.c
rename to jacobi_solutions/mpi/comp_comm/src/jacobi_2D_mpi_comp_comm.c
diff --git a/jacobi/mpi/comp_comm/src/tools.c b/jacobi_solutions/mpi/comp_comm/src/tools.c
similarity index 100%
rename from jacobi/mpi/comp_comm/src/tools.c
rename to jacobi_solutions/mpi/comp_comm/src/tools.c
diff --git a/jacobi/mpi/comp_comm_io/Makefile b/jacobi_solutions/mpi/comp_comm_io/Makefile
similarity index 100%
rename from jacobi/mpi/comp_comm_io/Makefile
rename to jacobi_solutions/mpi/comp_comm_io/Makefile
diff --git a/jacobi/mpi/comp_comm_io/include/allvars.h b/jacobi_solutions/mpi/comp_comm_io/include/allvars.h
similarity index 100%
rename from jacobi/mpi/comp_comm_io/include/allvars.h
rename to jacobi_solutions/mpi/comp_comm_io/include/allvars.h
diff --git a/jacobi/mpi/comp_comm_io/include/tools.h b/jacobi_solutions/mpi/comp_comm_io/include/tools.h
similarity index 100%
rename from jacobi/mpi/comp_comm_io/include/tools.h
rename to jacobi_solutions/mpi/comp_comm_io/include/tools.h
diff --git a/jacobi/mpi/comp_comm_io/make.def b/jacobi_solutions/mpi/comp_comm_io/make.def
similarity index 100%
rename from jacobi/mpi/comp_comm_io/make.def
rename to jacobi_solutions/mpi/comp_comm_io/make.def
diff --git a/jacobi/mpi/comp_comm_io/make_mpi_path b/jacobi_solutions/mpi/comp_comm_io/make_mpi_path
similarity index 100%
rename from jacobi/mpi/comp_comm_io/make_mpi_path
rename to jacobi_solutions/mpi/comp_comm_io/make_mpi_path
diff --git a/jacobi/mpi/comp_comm_io/script/input_parameters b/jacobi_solutions/mpi/comp_comm_io/script/input_parameters
similarity index 100%
rename from jacobi/mpi/comp_comm_io/script/input_parameters
rename to jacobi_solutions/mpi/comp_comm_io/script/input_parameters
diff --git a/jacobi/mpi/comp_comm_io/script/run_pleiadi.sh b/jacobi_solutions/mpi/comp_comm_io/script/run_pleiadi.sh
similarity index 100%
rename from jacobi/mpi/comp_comm_io/script/run_pleiadi.sh
rename to jacobi_solutions/mpi/comp_comm_io/script/run_pleiadi.sh
diff --git a/jacobi/mpi/comp_comm_io/src/jacobi_2D_mpi_comp_comm_io.c b/jacobi_solutions/mpi/comp_comm_io/src/jacobi_2D_mpi_comp_comm_io.c
similarity index 100%
rename from jacobi/mpi/comp_comm_io/src/jacobi_2D_mpi_comp_comm_io.c
rename to jacobi_solutions/mpi/comp_comm_io/src/jacobi_2D_mpi_comp_comm_io.c
diff --git a/jacobi/mpi/comp_comm_io/src/tools.c b/jacobi_solutions/mpi/comp_comm_io/src/tools.c
similarity index 100%
rename from jacobi/mpi/comp_comm_io/src/tools.c
rename to jacobi_solutions/mpi/comp_comm_io/src/tools.c
diff --git a/jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_1.cc b/jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_1.cc
similarity index 100%
rename from jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_1.cc
rename to jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_1.cc
diff --git a/jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_2.cc b/jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_2.cc
similarity index 100%
rename from jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_2.cc
rename to jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Broadcast_2.cc
diff --git a/jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Gather_Scatter.c b/jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Gather_Scatter.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Gather_Scatter.c
rename to jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Gather_Scatter.c
diff --git a/jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Heat_Equation_Gather.c b/jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Heat_Equation_Gather.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/Heat_Equation_Gather.c
rename to jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/Heat_Equation_Gather.c
diff --git a/jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/lecture_Broadcast_Gather_Scatter.pdf b/jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/lecture_Broadcast_Gather_Scatter.pdf
similarity index 100%
rename from jacobi/mpi/miscellaneous/Broadcast_Gather_Scatter/lecture_Broadcast_Gather_Scatter.pdf
rename to jacobi_solutions/mpi/miscellaneous/Broadcast_Gather_Scatter/lecture_Broadcast_Gather_Scatter.pdf
diff --git a/jacobi/mpi/miscellaneous/MPI_Datatypes/Subarray.c b/jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/Subarray.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/MPI_Datatypes/Subarray.c
rename to jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/Subarray.c
diff --git a/jacobi/mpi/miscellaneous/MPI_Datatypes/lecture_MPI_Datatypes.pdf b/jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/lecture_MPI_Datatypes.pdf
similarity index 100%
rename from jacobi/mpi/miscellaneous/MPI_Datatypes/lecture_MPI_Datatypes.pdf
rename to jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/lecture_MPI_Datatypes.pdf
diff --git a/jacobi/mpi/miscellaneous/MPI_Datatypes/tools.c b/jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/tools.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/MPI_Datatypes/tools.c
rename to jacobi_solutions/mpi/miscellaneous/MPI_Datatypes/tools.c
diff --git a/jacobi/mpi/miscellaneous/Parallel_IO/lecture_Parallel_IO.pdf b/jacobi_solutions/mpi/miscellaneous/Parallel_IO/lecture_Parallel_IO.pdf
similarity index 100%
rename from jacobi/mpi/miscellaneous/Parallel_IO/lecture_Parallel_IO.pdf
rename to jacobi_solutions/mpi/miscellaneous/Parallel_IO/lecture_Parallel_IO.pdf
diff --git a/jacobi/mpi/miscellaneous/Parallel_IO/write_arr1D.c b/jacobi_solutions/mpi/miscellaneous/Parallel_IO/write_arr1D.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/Parallel_IO/write_arr1D.c
rename to jacobi_solutions/mpi/miscellaneous/Parallel_IO/write_arr1D.c
diff --git a/jacobi/mpi/miscellaneous/Parallel_IO/write_arr2D.c b/jacobi_solutions/mpi/miscellaneous/Parallel_IO/write_arr2D.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/Parallel_IO/write_arr2D.c
rename to jacobi_solutions/mpi/miscellaneous/Parallel_IO/write_arr2D.c
diff --git a/jacobi/mpi/miscellaneous/cartesian b/jacobi_solutions/mpi/miscellaneous/cartesian
similarity index 100%
rename from jacobi/mpi/miscellaneous/cartesian
rename to jacobi_solutions/mpi/miscellaneous/cartesian
diff --git a/jacobi/mpi/miscellaneous/cartesian.c b/jacobi_solutions/mpi/miscellaneous/cartesian.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/cartesian.c
rename to jacobi_solutions/mpi/miscellaneous/cartesian.c
diff --git a/jacobi/mpi/miscellaneous/cartesian.cpp b/jacobi_solutions/mpi/miscellaneous/cartesian.cpp
similarity index 100%
rename from jacobi/mpi/miscellaneous/cartesian.cpp
rename to jacobi_solutions/mpi/miscellaneous/cartesian.cpp
diff --git a/jacobi/mpi/miscellaneous/color_ring.c b/jacobi_solutions/mpi/miscellaneous/color_ring.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/color_ring.c
rename to jacobi_solutions/mpi/miscellaneous/color_ring.c
diff --git a/jacobi/mpi/miscellaneous/lecture_color_ring.pdf b/jacobi_solutions/mpi/miscellaneous/lecture_color_ring.pdf
similarity index 100%
rename from jacobi/mpi/miscellaneous/lecture_color_ring.pdf
rename to jacobi_solutions/mpi/miscellaneous/lecture_color_ring.pdf
diff --git a/jacobi/mpi/miscellaneous/subarray b/jacobi_solutions/mpi/miscellaneous/subarray
similarity index 100%
rename from jacobi/mpi/miscellaneous/subarray
rename to jacobi_solutions/mpi/miscellaneous/subarray
diff --git a/jacobi/mpi/miscellaneous/subarray.c b/jacobi_solutions/mpi/miscellaneous/subarray.c
similarity index 100%
rename from jacobi/mpi/miscellaneous/subarray.c
rename to jacobi_solutions/mpi/miscellaneous/subarray.c
diff --git a/jacobi/openmp/opt/Makefile b/jacobi_solutions/openmp/not_opt/Makefile
similarity index 100%
rename from jacobi/openmp/opt/Makefile
rename to jacobi_solutions/openmp/not_opt/Makefile
diff --git a/jacobi_solutions/openmp/not_opt/include/allvars.h b/jacobi_solutions/openmp/not_opt/include/allvars.h
new file mode 100644
index 0000000..6ffdbda
--- /dev/null
+++ b/jacobi_solutions/openmp/not_opt/include/allvars.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#define NGHOST   1
+#define NDIM     2 /* 2D */
+#define X        0
+#define Y        1
+#define TOL      1.e-5
+
+typedef double MyData;
+
+#if defined(_OPENMP)
+
+#include <omp.h>
+
+#else
+   
+#define omp_get_thread_num()  0
+#define omp_get_num_threads() 1
+
+#endif /* _OPENMP */
diff --git a/jacobi/openmp/opt/include/tools.h b/jacobi_solutions/openmp/not_opt/include/tools.h
similarity index 100%
rename from jacobi/openmp/opt/include/tools.h
rename to jacobi_solutions/openmp/not_opt/include/tools.h
diff --git a/jacobi_solutions/openmp/not_opt/make.def b/jacobi_solutions/openmp/not_opt/make.def
new file mode 100644
index 0000000..83eb877
--- /dev/null
+++ b/jacobi_solutions/openmp/not_opt/make.def
@@ -0,0 +1,53 @@
+CC     = gcc
+CFLAGS = -Wall -Wextra -march=native
+OMP    = -fopenmp
+LIBS   = -lm
+
+SYSTYPE = $(strip $(shell uname -n))
+
+PROG            = jacobi_serial_not_opt_$(SYSTYPE)
+PROG_OMP        = jacobi_omp_not_opt_$(SYSTYPE)
+PROG_DEBUG      = $(PROG_OMP)_DEBUG
+PROG_MEMCHECK   = $(PROG_OMP)_MEMCHECK
+PROG_CALLGRIND  = $(PROG_OMP)_CALLGRIND
+PROG_CACHEGRIND = $(PROG_OMP)_CACHEGRIND
+
+HEADERS       = $(wildcard ./include/*.h)
+SOURCES       = $(wildcard ./src/*.c)
+DEPENDENCIES  = $(SOURCES) $(HEADERS) Makefile
+
+$(PROG): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -O3 -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_OMP): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -O3 $(OMP) -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_DEBUG): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -Og -ggdb3 $(OMP) -fno-omit-frame-pointer -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_DEBUG) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_MEMCHECK): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -Og $(OMP) -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_MEMCHECK) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_CALLGRIND): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -g -O3 $(OMP) -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_CALLGRIND) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_CACHEGRIND): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -g -O3 $(OMP) -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_CACHEGRIND) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
diff --git a/jacobi_solutions/openmp/not_opt/script/input_parameters b/jacobi_solutions/openmp/not_opt/script/input_parameters
new file mode 100644
index 0000000..c5fd600
--- /dev/null
+++ b/jacobi_solutions/openmp/not_opt/script/input_parameters
@@ -0,0 +1,9 @@
+##########################################################################
+
+# set the grid size
+
+GRID_SIZE_X=128
+GRID_SIZE_Y=128
+
+OMP_THREADS=(1 2 4 8)
+##########################################################################
diff --git a/jacobi_solutions/openmp/not_opt/script/run.sh b/jacobi_solutions/openmp/not_opt/script/run.sh
new file mode 100755
index 0000000..b0d9005
--- /dev/null
+++ b/jacobi_solutions/openmp/not_opt/script/run.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+######################### RESOURSE ALLOCATION #####################################
+#SBATCH --account=hpc_school
+#SBATCH --partition=hpc_school
+#SBATCH --job-name="Jacobi"
+#SBATCH --nodes=1
+#SBATCH --ntasks-per-node=1
+#SBATCH --cpus-per-task=8
+#SBATCH --output=Jacobi-omp-no-opt-%j.out
+#SBATCH --error=Jacobi-omp-no-opt.%j.err
+#SBATCH --time=00:05:00
+###################################################################################
+
+################################## MODULES ########################################
+export MODULE_VERSION=5.0.1
+source /opt/cluster/spack/share/spack/setup-env.sh
+
+# module purge
+module purge
+# load GCC
+module load default-gcc-11.2.0
+###################################################################################
+
+# input parameters
+source input_parameters
+
+WORKDIR=${PWD}
+# compile the application
+cd .. && make clean && make omp
+if [[ "$?" != "0" ]]
+then
+    echo "Cannot compile the application ...aborting..."
+    exit 1
+fi
+
+# get the executable
+EXEC=$(find $(realpath ./) -maxdepth 1 -executable -name "jacobi_*" -type f -print)
+if [[ "$?" != "0" ]]
+then
+    echo "Cannot find the executable ...aborting..."
+    exit 2
+fi
+
+
+# OMP stuff
+export OMP_DISPLAY_AFFINITY=1
+export OMP_WAIT_POLICY=ACTIVE
+# export OMP_PLACES=( "cores", "threads" )
+# export BINDING=( "master" "close" "spread" )
+
+for OMP in ${OMP_THREADS[@]}
+do
+    # not necessary because the clause 'num_threads'
+    # is specified in the source code
+    # export OMP_NUM_THREADS=${OMP}
+
+    # run the application
+    time ${EXEC} ${GRID_SIZE_X} ${GRID_SIZE_Y} ${OMP} |& tee ${EXEC}_OMP_${OMP}_output.txt
+done
+cd ${WORKDIR}
+
+exit 0
diff --git a/jacobi_solutions/openmp/not_opt/src/jacobi_2D_omp_not_opt.c b/jacobi_solutions/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
new file mode 100644
index 0000000..a43c5bb
--- /dev/null
+++ b/jacobi_solutions/openmp/not_opt/src/jacobi_2D_omp_not_opt.c
@@ -0,0 +1,309 @@
+/* ///////////////////////////////////////////////////////////////////// */
+/* Authors:  A. Mignone (mignone@to.infn.it)                             */
+/*           V. Cesare  (valentina.cesare@inaf.it)                       */
+/*           D. Goz     (david.goz@inaf.it)                              */
+/*                                                                       */
+/* Date   : June 2024                                                    */
+/*                                                                       */
+/* ///////////////////////////////////////////////////////////////////// */
+
+#include "allvars.h"
+#include "tools.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+/* function prototypes */
+void BoundaryConditions(MyData **const restrict,
+			MyData  *const restrict,
+			MyData  *const restrict,
+			const int,
+			const int);
+
+void JacobiAlgorithm(MyData **const restrict, MyData **const restrict, MyData *const restrict,
+		     const MyData *const restrict, int, int, int, int, const int);
+
+void WriteSolution(MyData **const phi, const int nx, const int ny);
+
+void copy_grids(MyData **const restrict A,
+                MyData **const restrict B,
+                const int               xbeg,
+                const int               xend,
+                const int               ybeg,
+		const int               yend);
+
+int main(int argc, char **argv)
+{
+#if defined(_OPENMP)  
+  if (argc <= 3)
+    
+    {
+      printf("\n\t Usage: <executable> <x_grid_size> <y_grid_size> <omp threads>\n\n");
+      exit(EXIT_FAILURE);
+    }
+#else
+  if (argc <= 2)    
+    {
+      printf("\n\t Usage: <executable> <x_grid_size> <y_grid_size>\n\n");
+      exit(EXIT_FAILURE);
+    }
+#endif /* _OPENMP */
+  
+  /* global X and Y grid size */
+  const int NX_GLOB = (int) strtol(argv[1], NULL, 10);
+  const int NY_GLOB = (int) strtol(argv[2], NULL, 10);
+#if defined(_OPENMP)
+  const int Nthread = (int) strtol(argv[3], NULL, 10);
+#else
+  const int Nthread = 1;
+#endif /* _OPENMP */
+  
+  const MyData xbeg = 0.0;
+  const MyData xend = 1.0;
+  const MyData ybeg = 0.0;
+  const MyData yend = 1.0;
+
+  const MyData delta[NDIM] = {(xend - xbeg)/(NX_GLOB + 1),
+			      (yend - ybeg)/(NY_GLOB + 1)};
+
+  /* --------------------------------------------------------
+     1. Set grid indices
+     -------------------------------------------------------- */
+    
+  const int ibeg   = NGHOST;
+  const int iend   = ibeg + NX_GLOB - 1;
+  const int nx     = iend - ibeg + 1;
+  const int nx_tot = nx + 2 * NGHOST;
+    
+  const int jbeg   = NGHOST;
+  const int jend   = jbeg + NY_GLOB - 1;
+  const int ny     = jend - jbeg + 1;
+  const int ny_tot = ny + 2 * NGHOST;
+
+  printf("\n\t Grid indices:");
+  printf("\n\t\t ibeg, iend = %d, %d; nx_tot = %d"    ,ibeg, iend, nx_tot);
+  printf("\n\t\t jbeg, jend = %d, %d; ny_tot = %d\n\n",jbeg, jend, ny_tot);
+    
+  /* --------------------------------------------------------
+     2. Generate grid, allocate memory
+     -------------------------------------------------------- */
+
+  /* memory allocation */
+  MyData *xg = (MyData *) malloc((NX_GLOB + 2*NGHOST) * sizeof(MyData));
+  MyData *yg = (MyData *) malloc((NY_GLOB + 2*NGHOST) * sizeof(MyData));
+  assert((xg != NULL) && (yg != NULL));
+
+  /* initial conditions */
+  for (int i=0 ; i<(NX_GLOB + 2*NGHOST) ; i++) xg[i] = xbeg + (i - ibeg + 1) * delta[X];
+  for (int j=0 ; j<(NY_GLOB + 2*NGHOST) ; j++) yg[j] = ybeg + (j - jbeg + 1) * delta[Y];
+  MyData *x = xg; /* Global and local grids are the same  */
+  MyData *y = yg; /* for serial version of the code       */
+
+  /* grids memory allocation */
+  MyData **phi  = Allocate_2DdblArray(ny_tot, nx_tot);
+  MyData **phi0 = Allocate_2DdblArray(ny_tot, nx_tot);
+    
+  /* --------------------------------------------------------
+     3. Initialize solution array to 0
+     -------------------------------------------------------- */
+    
+  for (int j=jbeg ; j<=jend ; j++)
+    for (int i=ibeg ; i<=iend ; i++)
+      phi0[j][i] = 0.0;
+  
+  /* --------------------------------------------------------
+     4. Main iteration cycle
+     -------------------------------------------------------- */
+
+  const double time_start = seconds();
+
+  MyData err = 1.0;
+  /* iterations */
+  int k = 0;
+  while (err > TOL)
+    {        
+      /* -- 4a. Set boundary conditions first -- */
+        
+      BoundaryConditions(phi0, x, y, nx, ny);
+        
+      /* -- 4b. Jacobi's method and residual (interior points) -- */
+      /*       core algorithm                                     */
+      
+      err = 0.0;
+      JacobiAlgorithm(phi, phi0, &err, delta,
+		      ibeg, iend, jbeg, jend, Nthread);
+      
+      /* -- 4c. Copy grids --*/
+      copy_grids(phi0, phi,
+		 jbeg, jend,
+		 ibeg, jend);
+
+      printf ("\n\t Iteration = %d - err = %lg\n",k, err);
+
+      /* increase the counter of loop iterations */
+      k++;
+    }
+    
+  WriteSolution(phi, nx, ny);
+
+  printf("\n\t NX_GLOB x NY_GLOB = %d x %d\n", NX_GLOB, NY_GLOB);
+  printf("\n\t Time = %lf [s]\n\n", seconds() - time_start);
+
+  // free memory
+  if (phi0)
+    {
+      free(phi0[0]);
+      free(phi0);
+    }
+
+  if (phi)
+    {
+      free(phi[0]);
+      free(phi);
+    }
+
+  if (yg)
+    free(yg);
+  
+  if (xg)
+    free(xg);
+  
+  return 0;
+}
+
+/* ********************************************************************* */
+void BoundaryConditions(MyData **const restrict phi,
+			MyData  *const restrict x,
+			MyData  *const restrict y,
+                        const int               nx,
+			const int               ny)
+/*
+*********************************************************************** */
+{
+  const int ibeg = NGHOST;
+  const int iend = ibeg + nx - 1;
+    
+  const int jbeg = NGHOST;
+  const int jend = jbeg + ny - 1;
+
+  int i,j;
+  
+  /* -- Left -- */
+  i = ibeg - 1;
+  for (int j=jbeg ; j<=jend ; j++)
+    phi[j][i] = (1.0 - y[j]);
+    
+  /* -- Right -- */
+  i = jend + 1;
+  for (int j=jbeg ; j<=jend ; j++)
+    phi[j][i] = (y[j] * y[j]);
+    
+  /* -- Bottom -- */    
+  j = jbeg - 1;
+  for (int i=ibeg ; i<=iend ; i++)
+    phi[j][i] = (1.0 - x[i]);
+    
+  /* -- Top -- */
+  j = jend + 1;
+  for (int i=ibeg ; i<=iend ; i++)
+    phi[j][i] = x[i];
+
+  return;
+}
+
+/* ********************************************************************* */
+
+void JacobiAlgorithm(MyData      **const restrict Phi,
+		     MyData      **const restrict Phi0,
+		     MyData       *const restrict error,
+		     const MyData *const restrict delta,
+		           int                    ibeg,
+		           int                    iend,
+		           int                    jbeg,
+		           int                    jend,
+		     const int                    Nthreads)
+{
+  *error = 0.0;
+
+#pragma omp parallel default(none) shared(error, delta, Phi, Phi0)      \
+                                   firstprivate(ibeg, iend, jbeg, jend) \
+                                   num_threads(Nthreads)
+  {
+#if defined(DEBUG)
+    const int id  = omp_get_thread_num();
+    const int thr = omp_get_num_threads();
+    printf("\n\t I am the omp thread %d out of %d", id, thr);
+    #pragma omp barrier
+#endif /* DEBUG */
+
+    #pragma omp for schedule(static)
+    for (int j=jbeg ; j<=jend ; j++)
+      {
+	for (int i=ibeg ; i<=iend ; i++)
+	  {
+	    Phi[j][i] = 0.25 * (Phi0[j][i-1] + Phi0[j][i+1] +
+				Phi0[j-1][i] + Phi0[j+1][i]);
+
+	    #pragma omp critical
+	    {
+	      *error += delta[X] * delta[Y] * fabs(Phi[j][i] - Phi0[j][i]);
+	    }
+	  } /* loop over columns */
+      } /* loop over rows */
+  } /* omp parallel */
+
+  return;
+}
+
+/* ********************************************************************* */
+
+/* ********************************************************************* */
+void copy_grids(MyData **const restrict A,
+		MyData **const restrict B,
+		const int               xbeg,
+		const int               xend,
+	        const int               ybeg,
+		const int               yend)
+{
+  for (int i=xbeg ; i<=xend ; i++)
+    for (int j=ybeg ; j<=yend ; j++)
+      A[i][j] = B[i][j];
+  
+  return;
+}
+/*
+************************************************************************ */
+
+
+/* ********************************************************************* */
+void WriteSolution (MyData **const phi,
+		    const int      nx,
+		    const int      ny)
+/*
+*********************************************************************** */
+{
+  const int ibeg = NGHOST;    
+  const int jbeg = NGHOST;
+  const int jend = jbeg + ny - 1;
+    
+  static int nfile = 0;  /* File counter */
+
+  char fname[32];
+#if defined(_OPENMP)
+  sprintf(fname,"jacobi2D_omp_not_opt_%02d.bin", nfile);
+#else
+  sprintf(fname,"jacobi2D_serial_not_opt_%02d.bin", nfile);
+#endif /* _OPENMP */
+  
+  FILE *fp;
+  printf ("> Writing %s\n",fname);
+  fp = fopen(fname, "wb");
+    
+  for (int j=jbeg ; j<=jend ; j++)
+    {
+      fwrite (phi[j] + ibeg, sizeof(MyData), nx, fp);
+    }
+    
+  nfile++;
+  fclose(fp);
+}
diff --git a/jacobi/openmp/opt/src/tools.c b/jacobi_solutions/openmp/not_opt/src/tools.c
similarity index 100%
rename from jacobi/openmp/opt/src/tools.c
rename to jacobi_solutions/openmp/not_opt/src/tools.c
diff --git a/jacobi_solutions/openmp/opt/Makefile b/jacobi_solutions/openmp/opt/Makefile
new file mode 100644
index 0000000..fc4833d
--- /dev/null
+++ b/jacobi_solutions/openmp/opt/Makefile
@@ -0,0 +1,66 @@
+#######################################################################
+# Author: David Goz (david.goz@inaf.it)                               #
+# June  2024                                                          #
+#######################################################################
+#
+# To see all the compilation options
+# $ make info
+#######################################################################
+
+# make.def defines how the application is compiled
+include make.def
+#######################################################################
+
+.PHONY: info serial omp valgrind_memcheck valgrind_callgrind valgrind_cachegrind debug clean 
+
+info:
+	@echo ' '
+	@echo '--------------------------------------------------------------------------------------------'
+	@echo '$$ make serial                 ---> compile the serial application                          '
+	@echo '$$ make omp                    ---> compile the omp application                             '
+	@echo '$$ make debug                  ---> debug the omp application                               '
+	@echo '$$ make valgrind_memcheck      ---> run the omp application using Valgrind under Memcheck   '
+	@echo '$$ make valgrind_callgrind     ---> run the omp application using Valgrind under Callgrind  '
+	@echo '$$ make valgrind_cachegrind    ---> run the omp application using Valgrind under Cachegrind '
+	@echo '$$ make clean                  ---> clean up all                                            '
+	@echo '$$ make info                   ---> get make info                                           '
+	@echo '--------------------------------------------------------------------------------------------'
+	@echo ' '
+
+serial: $(PROG)
+
+omp: $(PROG_OMP)
+
+debug: $(PROG_DEBUG)
+	@echo 'OOOooo... debugging ...oooOOO'
+	gdb --args ./$<
+	@echo 'OOOooo... debugging ... oooOOO'
+
+valgrind_memcheck: $(PROG_MEMCHECK)
+	@echo 'oooOOO... valgrind_memcheck ...OOOooo'
+	valgrind --tool=memcheck -s --leak-check=full --show-leak-kinds=all --track-origins=yes --read-var-info=yes --log-file=valgrind_memcheck_log_%p.txt ./$< 10 10 2
+	@echo 'oooOOO... valgrind_memcheck ...OOOooo'
+
+valgrind_callgrind: $(PROG_CALLGRIND)
+	@echo 'oooOOO... valgrind_callgrind ...OOOooo'
+	valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --log-file=valgrind_callgrind_log_.%p.txt ./$< 128 128 2
+	@echo ' '
+	@echo 'To generate a function-by-function summary from the profile data file:'
+	@echo '$$ callgrind_annotate --auto=yes callgrind.out.<pid> | less'
+	@echo '(kcachegrind is required in order to visualize the output using the GUI)'
+
+valgrind_cachegrind: $(PROG_CACHEGRIND)
+	@echo 'oooOOO... valgrind_cachegrind ...OOOooo'
+	valgrind --tool=cachegrind --log-file=valgrind_cachegrind_log_.%p.txt ./$< 128 128 2
+	@echo '$$ cg_annotate --auto=yes cachegrind.out.<pid> | less'
+	@echo '(kcachegrind is required in order to visualize the output using the GUI)'
+	@echo 'oooOOO... valgrind_cachegrind ...OOOooo'
+
+clean:
+	rm -f *~ .*~ ./src/*~ ./src/*# ./include/*~ ./include/*# *~
+	rm -f $(PROG) $(PROG_OMP) $(PROG_DEBUG) $(PROG_MEMCHECK) $(PROG_CALLGRIND) $(PROG_CACHEGRIND)
+	rm -f valgrind_*.txt
+	rm -f cachegrind.out.*
+	rm -f callgrind.*
+	rm -f *bin
+	rm -f jacobi_*
diff --git a/jacobi/openmp/opt/include/allvars.h b/jacobi_solutions/openmp/opt/include/allvars.h
similarity index 100%
rename from jacobi/openmp/opt/include/allvars.h
rename to jacobi_solutions/openmp/opt/include/allvars.h
diff --git a/jacobi/serial/opt/include/tools.h b/jacobi_solutions/openmp/opt/include/tools.h
similarity index 100%
rename from jacobi/serial/opt/include/tools.h
rename to jacobi_solutions/openmp/opt/include/tools.h
diff --git a/jacobi/openmp/opt/make.def b/jacobi_solutions/openmp/opt/make.def
similarity index 100%
rename from jacobi/openmp/opt/make.def
rename to jacobi_solutions/openmp/opt/make.def
diff --git a/jacobi/openmp/opt/src/jacobi_2D_omp_opt.c b/jacobi_solutions/openmp/opt/src/jacobi_2D_omp_opt.c
similarity index 98%
rename from jacobi/openmp/opt/src/jacobi_2D_omp_opt.c
rename to jacobi_solutions/openmp/opt/src/jacobi_2D_omp_opt.c
index 2a47ed6..b1b84b4 100644
--- a/jacobi/openmp/opt/src/jacobi_2D_omp_opt.c
+++ b/jacobi_solutions/openmp/opt/src/jacobi_2D_omp_opt.c
@@ -244,9 +244,9 @@ void JacobiAlgorithm(MyData      **const restrict Phi,
 /* ********************************************************************* */
 
 /* ********************************************************************* */
-void WriteSolution (MyData **const phi,
-		    const int      nx,
-		    const int      ny)
+void WriteSolution(MyData **const phi,
+		   const int      nx,
+		   const int      ny)
 /*
 *********************************************************************** */
 {
diff --git a/jacobi/serial/opt/src/tools.c b/jacobi_solutions/openmp/opt/src/tools.c
similarity index 100%
rename from jacobi/serial/opt/src/tools.c
rename to jacobi_solutions/openmp/opt/src/tools.c
diff --git a/jacobi_solutions/serial/not_opt/Makefile b/jacobi_solutions/serial/not_opt/Makefile
new file mode 100644
index 0000000..191f891
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/Makefile
@@ -0,0 +1,63 @@
+#######################################################################
+# Author: David Goz (david.goz@inaf.it)                               #
+# June  2024                                                          #
+#######################################################################
+#
+# To see all the compilation options
+# $ make info
+#######################################################################
+
+# make.def defines how the application is compiled
+include make.def
+#######################################################################
+
+.PHONY: info serial valgrind_memcheck valgrind_callgrind valgrind_cachegrind debug clean 
+
+info:
+	@echo ' '
+	@echo '-----------------------------------------------------------------------------------------------'
+	@echo '$$ make serial                 ---> compile the serial application                             '
+	@echo '$$ make debug                  ---> debug the serial application                               '
+	@echo '$$ make valgrind_memcheck      ---> run the serial application using Valgrind under Memcheck   '
+	@echo '$$ make valgrind_callgrind     ---> run the serial application using Valgrind under Callgrind  '
+	@echo '$$ make valgrind_cachegrind    ---> run the serial application using Valgrind under Cachegrind '
+	@echo '$$ make clean                  ---> clean up all                                               '
+	@echo '$$ make info                   ---> get make info                                              '
+	@echo '-----------------------------------------------------------------------------------------------'
+	@echo ' '
+
+serial: $(PROG)
+
+debug: $(PROG_DEBUG)
+	@echo 'OOOooo... debugging ...oooOOO'
+	gdb --args ./$<
+	@echo 'OOOooo... debugging ... oooOOO'
+
+valgrind_memcheck: $(PROG_MEMCHECK)
+	@echo 'oooOOO... valgrind_memcheck ...OOOooo'
+	valgrind --tool=memcheck -s --leak-check=full --show-leak-kinds=all --track-origins=yes --read-var-info=yes --log-file=valgrind_memcheck_log_%p.txt ./$< 10 10
+	@echo 'oooOOO... valgrind_memcheck ...OOOooo'
+
+valgrind_callgrind: $(PROG_CALLGRIND)
+	@echo 'oooOOO... valgrind_callgrind ...OOOooo'
+	valgrind --tool=callgrind --dump-instr=yes --collect-jumps=yes --log-file=valgrind_callgrind_log_.%p.txt ./$< 128 128
+	@echo ' '
+	@echo 'To generate a function-by-function summary from the profile data file:'
+	@echo '$$ callgrind_annotate --auto=yes callgrind.out.<pid> | less'
+	@echo '(kcachegrind is required in order to visualize the output using the GUI)'
+
+valgrind_cachegrind: $(PROG_CACHEGRIND)
+	@echo 'oooOOO... valgrind_cachegrind ...OOOooo'
+	valgrind --tool=cachegrind --log-file=valgrind_cachegrind_log_.%p.txt ./$< 128 128
+	@echo '$$ cg_annotate --auto=yes cachegrind.out.<pid> | less'
+	@echo '(kcachegrind is required in order to visualize the output using the GUI)'
+	@echo 'oooOOO... valgrind_cachegrind ...OOOooo'
+
+clean:
+	rm -f *~ .*~ ./src/*~ ./src/*# ./include/*~ ./include/*# *~
+	rm -f $(PROG) $(PROG_DEBUG) $(PROG_MEMCHECK) $(PROG_CALLGRIND) $(PROG_CACHEGRIND)
+	rm -f valgrind_*.txt
+	rm -f cachegrind.out.*
+	rm -f callgrind.*
+	rm -f *bin
+	rm -rf jacobi_serial_*
diff --git a/jacobi/serial/opt/include/allvars.h b/jacobi_solutions/serial/not_opt/include/allvars.h
similarity index 100%
rename from jacobi/serial/opt/include/allvars.h
rename to jacobi_solutions/serial/not_opt/include/allvars.h
diff --git a/jacobi_solutions/serial/not_opt/include/tools.h b/jacobi_solutions/serial/not_opt/include/tools.h
new file mode 100644
index 0000000..82859ec
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/include/tools.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "allvars.h"
+#include <assert.h>
+#include <sys/time.h>
+#include <time.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* function prototypes */
+MyData **Allocate_2DdblArray(const int nx, const int ny);
+void Show_2DdblArray(const MyData **const A,
+                     const int            nx,
+                     const int            ny,
+                     const char *const    string);
+
+double seconds(void);
diff --git a/jacobi_solutions/serial/not_opt/make.def b/jacobi_solutions/serial/not_opt/make.def
new file mode 100644
index 0000000..54b8cd6
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/make.def
@@ -0,0 +1,45 @@
+CC     = gcc
+CFLAGS = -Wall -Wextra -march=native
+LIBS   = -lm
+
+SYSTYPE = $(strip $(shell uname -n))
+
+PROG            = jacobi_serial_not_opt_$(SYSTYPE)
+PROG_DEBUG      = $(PROG)_DEBUG
+PROG_MEMCHECK   = $(PROG)_MEMCHECK
+PROG_CALLGRIND  = $(PROG)_CALLGRIND
+PROG_CACHEGRIND = $(PROG)_CACHEGRIND
+
+HEADERS       = $(wildcard ./include/*.h)
+SOURCES       = $(wildcard ./src/*.c)
+DEPENDENCIES  = $(SOURCES) $(HEADERS) Makefile
+
+$(PROG): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -O3 -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_DEBUG): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -Og -ggdb3 -fno-omit-frame-pointer -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_DEBUG) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_MEMCHECK): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -Og -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_MEMCHECK) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_CALLGRIND): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -g -O3 -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_CALLGRIND) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
+
+$(PROG_CACHEGRIND): $(DEPENDENCIES)
+	$(CC) $(CFLAGS) -g -O3 -I./include $(SOURCES) -o $@ $(LIBS)
+	@echo ' '
+	@echo 'Program' $(PROG_CACHEGRIND) 'compiled for' $(SYSTYPE) 'machine'
+	@echo ' '
diff --git a/jacobi_solutions/serial/not_opt/script/input_parameters b/jacobi_solutions/serial/not_opt/script/input_parameters
new file mode 100644
index 0000000..06ef59f
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/script/input_parameters
@@ -0,0 +1,8 @@
+##########################################################################
+
+# set the grid size
+
+GRID_SIZE_X=128
+GRID_SIZE_Y=128
+
+##########################################################################
diff --git a/jacobi_solutions/serial/not_opt/script/run.sh b/jacobi_solutions/serial/not_opt/script/run.sh
new file mode 100755
index 0000000..e5d5d69
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/script/run.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+######################### RESOURSE ALLOCATION #####################################
+#SBATCH --account=hpc_school
+#SBATCH --partition=hpc_school
+#SBATCH --job-name="Jacobi"
+#SBATCH --nodes=1
+#SBATCH --cpus-per-task=1
+#SBATCH --output=Jacobi-serial-no-opt-%j.out
+#SBATCH --error=Jacobi-serial-no-opt.%j.err
+#SBATCH --time=00:05:00
+###################################################################################
+
+################################## MODULES ########################################
+export MODULE_VERSION=5.0.1
+source /opt/cluster/spack/share/spack/setup-env.sh
+
+# module purge
+module purge
+# load GCC
+module load default-gcc-11.2.0
+# load valgrind (optional)
+module load valgrind-3.18.1-gcc-11.2.0-3hcfkwk
+###################################################################################
+
+# input parameters
+source input_parameters
+
+WORKDIR=${PWD}
+# compile the application
+cd .. && make clean && make serial
+if [[ "$?" != "0" ]]
+then
+    echo "Cannot compile the application ...aborting..."
+    exit 1
+fi
+
+# get the executable
+EXEC=$(find $(realpath ./) -maxdepth 1 -executable -name "jacobi_*" -type f -print)
+if [[ "$?" != "0" ]]
+then
+    echo "Cannot find the executable ...aborting..."
+    exit 2
+fi
+
+
+# run 
+time ${EXEC} ${GRID_SIZE_X} ${GRID_SIZE_Y} |& tee ${EXEC}_output.txt
+
+cd ${WORKDIR}
+
+exit 0
diff --git a/jacobi_solutions/serial/not_opt/src/jacobi_2D_serial_not_opt.c b/jacobi_solutions/serial/not_opt/src/jacobi_2D_serial_not_opt.c
new file mode 100644
index 0000000..ba53f32
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/src/jacobi_2D_serial_not_opt.c
@@ -0,0 +1,274 @@
+/* ///////////////////////////////////////////////////////////////////// */
+/* Authors:  A. Mignone (mignone@to.infn.it)                             */
+/*           V. Cesare  (valentina.cesare@inaf.it)                       */
+/*           D. Goz     (david.goz@inaf.it)                              */
+/*                                                                       */
+/* Date   : June 2024                                                    */
+/*                                                                       */
+/* ///////////////////////////////////////////////////////////////////// */
+
+#include "allvars.h"
+#include "tools.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+/* function prototypes */
+void BoundaryConditions(MyData **const restrict,
+			MyData  *const restrict,
+			MyData  *const restrict,
+			const int,
+			const int);
+
+void JacobiAlgorithm(MyData **const restrict, MyData **const restrict, MyData *const restrict,
+		     const MyData *const restrict, const int, const int, const int, const int);
+
+void WriteSolution(MyData **const phi, const int nx, const int ny);
+
+void copy_grids(MyData **const restrict A,
+                MyData **const restrict B,
+                const int               xbeg,
+                const int               xend,
+                const int               ybeg,
+		const int               yend);
+
+int main(int argc, char **argv)
+{
+  if (argc <= 2)
+    {
+      printf("\n\t Usage: <executable> <x_grid_size> <y_grid_size> \n\n");
+      exit(EXIT_FAILURE);
+    }
+
+  /* global X and Y grid size */
+  const int NX_GLOB = (int) strtol(argv[1], NULL, 10);
+  const int NY_GLOB = (int) strtol(argv[2], NULL, 10);
+
+  const MyData xbeg = 0.0;
+  const MyData xend = 1.0;
+  const MyData ybeg = 0.0;
+  const MyData yend = 1.0;
+
+  const MyData delta[NDIM] = {(xend - xbeg)/(NX_GLOB + 1),
+			      (yend - ybeg)/(NY_GLOB + 1)};
+
+  /* --------------------------------------------------------
+     1. Set grid indices
+     -------------------------------------------------------- */
+    
+  const int ibeg   = NGHOST;
+  const int iend   = ibeg + NX_GLOB - 1;
+  const int nx     = iend - ibeg + 1;
+  const int nx_tot = nx + 2 * NGHOST;
+    
+  const int jbeg   = NGHOST;
+  const int jend   = jbeg + NY_GLOB - 1;
+  const int ny     = jend - jbeg + 1;
+  const int ny_tot = ny + 2 * NGHOST;
+
+  printf("\n\t Grid indices:");
+  printf("\n\t\t ibeg, iend = %d, %d; nx_tot = %d"    ,ibeg, iend, nx_tot);
+  printf("\n\t\t jbeg, jend = %d, %d; ny_tot = %d\n\n",jbeg, jend, ny_tot);
+    
+  /* --------------------------------------------------------
+     2. Generate grid, allocate memory
+     -------------------------------------------------------- */
+
+  /* memory allocation */
+  MyData *xg = (MyData *) malloc((NX_GLOB + 2*NGHOST) * sizeof(MyData));
+  MyData *yg = (MyData *) malloc((NY_GLOB + 2*NGHOST) * sizeof(MyData));
+  assert((xg != NULL) && (yg != NULL));
+
+  /* initial conditions */
+  for (int i=0 ; i<(NX_GLOB + 2*NGHOST) ; i++) xg[i] = xbeg + (i - ibeg + 1) * delta[X];
+  for (int j=0 ; j<(NY_GLOB + 2*NGHOST) ; j++) yg[j] = ybeg + (j - jbeg + 1) * delta[Y];
+  MyData *x = xg; /* Global and local grids are the same  */
+  MyData *y = yg; /* for serial version of the code       */
+
+  /* grids memory allocation */
+  MyData **phi  = Allocate_2DdblArray(ny_tot, nx_tot);
+  MyData **phi0 = Allocate_2DdblArray(ny_tot, nx_tot);
+    
+  /* --------------------------------------------------------
+     3. Initialize solution array to 0
+     -------------------------------------------------------- */
+    
+  for (int j=jbeg ; j<=jend ; j++)
+    for (int i=ibeg ; i<=iend ; i++)
+      phi0[j][i] = 0.0;
+  
+  /* --------------------------------------------------------
+     4. Main iteration cycle
+     -------------------------------------------------------- */
+
+  const double time_start = seconds();
+
+  MyData err = 1.0;
+  /* iterations */
+  int k = 0;
+  while (err > TOL)
+    {        
+      /* -- 4a. Set boundary conditions first -- */
+        
+      BoundaryConditions(phi0, x, y, nx, ny);
+        
+      /* -- 4b. Jacobi's method and residual (interior points) -- */
+      /*       core algorithm                                     */
+      
+      err = 0.0;
+      JacobiAlgorithm(phi, phi0, &err, delta,
+		      ibeg, iend, jbeg, jend);
+      
+      /* -- 4c. Copy grids --*/
+      copy_grids(phi0, phi,
+		 jbeg, jend,
+		 ibeg, jend);
+
+      printf ("\n\t Iteration = %d - err = %lg\n",k, err);
+
+      /* increase the counter of loop iterations */
+      k++;
+    }
+    
+  WriteSolution(phi, nx, ny);
+
+  printf("\n\t NX_GLOB x NY_GLOB = %d x %d\n", NX_GLOB, NY_GLOB);
+  printf("\n\t Time = %lf [s]\n\n", seconds() - time_start);
+
+  // free memory
+  if (phi0)
+    {
+      free(phi0[0]);
+      free(phi0);
+    }
+
+  if (phi)
+    {
+      free(phi[0]);
+      free(phi);
+    }
+
+  if (yg)
+    free(yg);
+  
+  if (xg)
+    free(xg);
+  
+  return 0;
+}
+
+/* ********************************************************************* */
+void BoundaryConditions(MyData **const restrict phi,
+			MyData  *const restrict x,
+			MyData  *const restrict y,
+                        const int               nx,
+			const int               ny)
+/*
+*********************************************************************** */
+{
+  const int ibeg = NGHOST;
+  const int iend = ibeg + nx - 1;
+    
+  const int jbeg = NGHOST;
+  const int jend = jbeg + ny - 1;
+
+  int i,j;
+  
+  /* -- Left -- */
+  i = ibeg - 1;
+  for (int j=jbeg ; j<=jend ; j++)
+    phi[j][i] = (1.0 - y[j]);
+    
+  /* -- Right -- */
+  i = jend + 1;
+  for (int j=jbeg ; j<=jend ; j++)
+    phi[j][i] = (y[j] * y[j]);
+    
+  /* -- Bottom -- */    
+  j = jbeg - 1;
+  for (int i=ibeg ; i<=iend ; i++)
+    phi[j][i] = (1.0 - x[i]);
+    
+  /* -- Top -- */
+  j = jend + 1;
+  for (int i=ibeg ; i<=iend ; i++)
+    phi[j][i] = x[i];
+
+  return;
+}
+
+/* ********************************************************************* */
+
+void JacobiAlgorithm(MyData      **const restrict Phi,
+		     MyData      **const restrict Phi0,
+		     MyData       *const restrict error,
+		     const MyData *const restrict delta,
+		     const int                    ibeg,
+		     const int                    iend,
+		     const int                    jbeg,
+		     const int                    jend)
+{
+  *error = 0.0;
+  for (int j=jbeg ; j<=jend ; j++)
+    {
+      for (int i=ibeg ; i<=iend ; i++)
+	{
+	  Phi[j][i] = 0.25 * (Phi0[j][i-1] + Phi0[j][i+1] +
+			      Phi0[j-1][i] + Phi0[j+1][i]);
+                
+	  *error += delta[X] * delta[Y] * fabs(Phi[j][i] - Phi0[j][i]);
+	} /* loop over columns */
+    } /* loop over rows */
+  
+  return;
+}
+
+/* ********************************************************************* */
+
+/* ********************************************************************* */
+void copy_grids(MyData **const restrict A,
+		MyData **const restrict B,
+		const int               xbeg,
+		const int               xend,
+	        const int               ybeg,
+		const int               yend)
+{
+  for (int i=xbeg ; i<=xend ; i++)
+    for (int j=ybeg ; j<=yend ; j++)
+      A[i][j] = B[i][j];
+  
+  return;
+}
+/*
+************************************************************************ */
+
+
+/* ********************************************************************* */
+void WriteSolution (MyData **const phi,
+		    const int      nx,
+		    const int      ny)
+/*
+*********************************************************************** */
+{
+  const int ibeg = NGHOST;    
+  const int jbeg = NGHOST;
+  const int jend = jbeg + ny - 1;
+    
+  static int nfile = 0;  /* File counter */
+
+  char fname[32];
+  sprintf(fname,"jacobi2D_serial_not_opt_%02d.bin", nfile);
+    
+  FILE *fp;
+  printf ("> Writing %s\n",fname);
+  fp = fopen(fname, "wb");
+    
+  for (int j=jbeg ; j<=jend ; j++)
+    {
+      fwrite (phi[j] + ibeg, sizeof(MyData), nx, fp);
+    }
+    
+  nfile++;
+  fclose(fp);
+}
diff --git a/jacobi_solutions/serial/not_opt/src/tools.c b/jacobi_solutions/serial/not_opt/src/tools.c
new file mode 100644
index 0000000..be2761d
--- /dev/null
+++ b/jacobi_solutions/serial/not_opt/src/tools.c
@@ -0,0 +1,59 @@
+/* ///////////////////////////////////////////////////////////////////// */
+/* Authors:  A. Mignone (mignone@to.infn.it)                             */
+/*           V. Cesare  (valentina.cesare@inaf.it)                       */
+/*           D. Goz     (david.goz@inaf.it)                              */
+/*                                                                       */
+/* Date   : June 2024                                                    */
+/*                                                                       */
+/* ///////////////////////////////////////////////////////////////////// */
+
+#include "tools.h"
+
+/* ********************************************************************* */
+MyData **Allocate_2DdblArray(const int nx, const int ny)
+/*
+ * Allocate memory for a double precision array with
+ * nx rows and ny columns
+ *********************************************************************** */
+{
+  MyData **buf = malloc(nx * sizeof(MyData *));
+  assert(buf != NULL);
+
+  buf[0] = (MyData *) malloc(nx * ny * sizeof(MyData));
+  assert(buf[0] != NULL);
+  
+  for (int j=1 ; j<nx ; j++)
+    buf[j] = buf[j-1] + ny;
+    
+  return buf;
+}
+
+/* ********************************************************************* */
+void Show_2DdblArray(const MyData **const A,
+		     const int            nx,
+		     const int            ny,
+		     const char *const    string)
+/* *********************************************************************** */
+{
+  printf ("%s\n",string);
+  printf ("------------------------------\n");
+  for (int i=0 ; i<nx ; i++)
+    {
+      for (int j=0 ; j<ny ; j++)
+	{
+	  printf ("%8.2f  ", A[i][j]);
+	}
+      printf ("\n");
+    }
+  printf ("------------------------------\n");
+}
+/* ********************************************************************* */
+
+double seconds()
+{
+  struct timeval tmp;
+  gettimeofday(&tmp, (struct timezone *)0);
+  double sec = tmp.tv_sec + ((double)tmp.tv_usec)/1000000.0;
+
+  return sec;
+}
diff --git a/jacobi/serial/opt/Makefile b/jacobi_solutions/serial/opt/Makefile
similarity index 100%
rename from jacobi/serial/opt/Makefile
rename to jacobi_solutions/serial/opt/Makefile
diff --git a/jacobi_solutions/serial/opt/include/allvars.h b/jacobi_solutions/serial/opt/include/allvars.h
new file mode 100644
index 0000000..468de4a
--- /dev/null
+++ b/jacobi_solutions/serial/opt/include/allvars.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#define NGHOST   1
+#define NDIM     2 /* 2D */
+#define X        0
+#define Y        1
+#define TOL      1.e-5
+
+typedef double MyData;
diff --git a/jacobi_solutions/serial/opt/include/tools.h b/jacobi_solutions/serial/opt/include/tools.h
new file mode 100644
index 0000000..82859ec
--- /dev/null
+++ b/jacobi_solutions/serial/opt/include/tools.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include "allvars.h"
+#include <assert.h>
+#include <sys/time.h>
+#include <time.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+/* function prototypes */
+MyData **Allocate_2DdblArray(const int nx, const int ny);
+void Show_2DdblArray(const MyData **const A,
+                     const int            nx,
+                     const int            ny,
+                     const char *const    string);
+
+double seconds(void);
diff --git a/jacobi/serial/opt/make.def b/jacobi_solutions/serial/opt/make.def
similarity index 100%
rename from jacobi/serial/opt/make.def
rename to jacobi_solutions/serial/opt/make.def
diff --git a/jacobi/serial/opt/src/jacobi_2D_serial_opt.c b/jacobi_solutions/serial/opt/src/jacobi_2D_serial_opt.c
similarity index 100%
rename from jacobi/serial/opt/src/jacobi_2D_serial_opt.c
rename to jacobi_solutions/serial/opt/src/jacobi_2D_serial_opt.c
diff --git a/jacobi_solutions/serial/opt/src/tools.c b/jacobi_solutions/serial/opt/src/tools.c
new file mode 100644
index 0000000..be2761d
--- /dev/null
+++ b/jacobi_solutions/serial/opt/src/tools.c
@@ -0,0 +1,59 @@
+/* ///////////////////////////////////////////////////////////////////// */
+/* Authors:  A. Mignone (mignone@to.infn.it)                             */
+/*           V. Cesare  (valentina.cesare@inaf.it)                       */
+/*           D. Goz     (david.goz@inaf.it)                              */
+/*                                                                       */
+/* Date   : June 2024                                                    */
+/*                                                                       */
+/* ///////////////////////////////////////////////////////////////////// */
+
+#include "tools.h"
+
+/* ********************************************************************* */
+MyData **Allocate_2DdblArray(const int nx, const int ny)
+/*
+ * Allocate memory for a double precision array with
+ * nx rows and ny columns
+ *********************************************************************** */
+{
+  MyData **buf = malloc(nx * sizeof(MyData *));
+  assert(buf != NULL);
+
+  buf[0] = (MyData *) malloc(nx * ny * sizeof(MyData));
+  assert(buf[0] != NULL);
+  
+  for (int j=1 ; j<nx ; j++)
+    buf[j] = buf[j-1] + ny;
+    
+  return buf;
+}
+
+/* ********************************************************************* */
+void Show_2DdblArray(const MyData **const A,
+		     const int            nx,
+		     const int            ny,
+		     const char *const    string)
+/* *********************************************************************** */
+{
+  printf ("%s\n",string);
+  printf ("------------------------------\n");
+  for (int i=0 ; i<nx ; i++)
+    {
+      for (int j=0 ; j<ny ; j++)
+	{
+	  printf ("%8.2f  ", A[i][j]);
+	}
+      printf ("\n");
+    }
+  printf ("------------------------------\n");
+}
+/* ********************************************************************* */
+
+double seconds()
+{
+  struct timeval tmp;
+  gettimeofday(&tmp, (struct timezone *)0);
+  double sec = tmp.tv_sec + ((double)tmp.tv_usec)/1000000.0;
+
+  return sec;
+}
diff --git a/material/slides/INAF_HPC_course_hands-on_session_OpenMP.pdf b/material/slides/INAF_HPC_course_2024_hands-on_session_OpenMP.pdf
similarity index 79%
rename from material/slides/INAF_HPC_course_hands-on_session_OpenMP.pdf
rename to material/slides/INAF_HPC_course_2024_hands-on_session_OpenMP.pdf
index e55239651f5a01f40ca1fffc7cf24ef2d4c83981..6f3883674f4eb3e7bd39a4cd401e119aa8b0d1a9 100644
GIT binary patch
delta 20405
zcmcaSf%VE6)(uQd^|ARP<|1D=2=R*v>4&`azVC2K>Cum0k8joSa0M>pxRLVmTeF=)
zl+adbg@yJD`hT+5KHRPtQpX`vT~?l^K6~lSoN|-w-)Ca(TYsOI{5xXOC8PM+rN=Y-
zza5=uGc799w{!9Jb$c$#K3;l9#`Cn@2EAvG(-OAu>y;ndWPIX(dyz_g{K1nO@7$8x
zZ&|bM>A~m<kCf(*cHe!9Toj+I)3sOk=L`E(p%H&?8gtBX-S!ZfY225iyw6GP@x6Fp
zu9lw->+D-Mb{y>4_GIO;W!rSuJT3Yg+@Cl73ghK9K}My2d(1=(O1ReqtXliq{XBo2
zdC~LI&g@8|6Gu`uOR9EjP3hp>>|0-aW5>Y<w{Avkn3>BxTXpdgWk1R5U%2irYrYc|
zVdZP*wZ3^(xBbH<rJ9>B%(?9Pqr81aYK7AFviSYKPJ69VKfrT%`sW<|li#{NE?M^J
zgZa<yI|8#Gxf=@H@0|BzmHuWKvm@7&RQ8EqXMEb;e{^&Di#lWG_Z<3pi}tF1`%vI-
z(@_7{FaDoaJO7it533fN>8%toopQ0acCmhYeM)`&iLVP*?+&_t@-J&|;HMNdq3mD9
zT(iZuD4w5~`|p-c?)0p_ogNE3w_H*cUu(oDC#|#L`YDO-l{d4FpVB$DY};w21#^;Q
zl@`y>k6*7Ab6W19Cf{2PsWne8x;~DaX#RZRbC*pK3H54$CoX*u@LnU%a@ujWm`R?3
zlFzxVkJQ?9Up#umwWh{IM%6L(;<6dbZe=acD%|fKqF&3l_;lc*Ln$X*)o-piAX{rI
zRNv*5^WE{O&boX1cIf{Tyuax0mFcXj>ek&0tq)&*b?d!<Q~AU1J^r^{cllOUsgiqf
zF(1;I=5}V9=9evsuixyjf5n1hT3uR;_LwcbQWkwzP=2*z=~k<^xyroF_v-wZ-(Bwd
z^y5F*>EBCEWFGE5yz9cHBE8qialR)Dl=3p>-@37*wXmn|*za3g8p9shW?zz%TXV?W
zZNJrfTQmEkPs`ONpU}JZ^vT5B<-6|O7qLzfw?1O~QQ-Gc{?z?HR_dSLUZ0<EzOu@4
zmVWnX*5!My&DvcU+x6<Sjg;G>xkoGeD(@{eNRp4Y7Kn;?@^E2A)5l~5e=aMhX>JbR
zk1YMMPsi;2hD#a8BDYE3mRgY~Ynd<du!dds;6z>NRizPmw;t?Z{9I`|e>#_iX@0Y~
zdX3MGIYFm(M;~cR3$t-bblvcERpNQ)BCpjQ&5S>5Bno}{9>vVeH+dSpJiMmw*vzDb
z=l{p-tEpv6SXsV<D>W~rxTGjGF&D(jPs-x5;4<I>(U!)BlZ{#5Gn#K!W?QbnXg>M0
zS|F#sTYg@N8JD5i<bKO}OokSd^{qUV4K2A0xPrL!gHnt0ON)|Ii@A&pAR>-=dHE&9
zTt-HdFBsS`8Cp*MSfO5TWC)hDv*UtVTrp>B<k>uFbAe?Gq;nN~Z!g%nWjWi1rk02Q
z&u?taIo-z?y)AipVG+lzV~z_|N^jk(KEwPZ^Osfa#B*ofW$nD=wQcJvmgqY-pPu>f
z_)pE0bvuM6J^o#2xZ%>l=jY%55S{MiHMOSX(k0=|*FOl<?Ri{(Z1)3I-}zU>qjn_}
z8ay->|M6ef{`vcZCq(N%9e(nC`+C*=f0}Dn{<Di)x8$#G{pSh&4{N7thOgKYp|--*
zEpqWipDQON9Np${sXg7~seAd7#&WJmQ}fBGYS-8Q`lEP|#ptE0*RC7dx?8ylGNaQD
zZnL>r{r%Uc@U!jmC)TGXXvo%2Ry;HL;>k(JZ&gp0+T^LreEFKoB;V(0n=~a@+}A8x
zEf<&(D*hugVcFDEuJ2L=*y6Tz*(VFT&51K$`Cf0ss=HkN=j6Hk@Bf>`h;lg`emOfW
zMfiqa#g5>Xw=eboH05tR{>D;zv*7E^)y#bh_aEJt`23CLZf2!Dl_%o%wLJX0@<Y8~
z@tf)&H3#}0J~O=C{_`+n{Zaq#Kfk@K+I!8cQzVt6cwav6kC*uw@1@op-)yPo8l;x-
zynto*YLSfgg_^ND)ZT{_c}>p@@0X6eZnA9Z=Zn%V3}<hJ9GTn8<)ki^H@VmC1%p_2
z<Oe^lwY)37xkc%h>|Qf#_ZjBa4W|Wcdp@2Qt=InQs>$%Zg@32`R-Mfmi_79PmWz9e
zS6rG`Vzsj2<)e~@Qh^)C*xwpoTq4H0I%a0e(>+l|ze~8|cC4s<!u9#wsVA#)PB&)B
zpKsHfBCi^9C_MX6BP++mDSvz})mkq|-(IC(RnNa;`NOpTEq`y{erxNH=>OI3yWCek
zPcyfl48{!g^MA8H%aW>XT5k8WbNfA3iH`EQF<aK2p7HGd|3>LIf+Ep-b|&r9=ijYW
zWALV@bdz9U@WiHFk5iQ283j&1&^+x?sn;@|J*W1vxiHEJCwl6(e@mBUoye+jL3!0J
z=WWcbm9u3JTovg0Vi#lEtgZ9VU7<R#?_=Klxd(Ojbo+nHd{(dbvXX0(anIGF#rbcS
zclv3ZNWA^%ZPD7o&M@BpNnD)2mWl-)i^+cf`PIE$4o}nFRF}QBY$$G-!1LgwhpkYc
zRg!wcjgDA>SvOQ)|31!~m$_lO_xWzwQ*z1Y6*da@mS;-;igenpr>M&u<0hEWbnDJ8
zzO!Zvs?(qSKc#;~SJ&CReqp%Ao9oj9w!0SiIfoY<$Z_&oD7gIlwD%V;v9f9VbgW8!
zeKT#kL+GJd2~kd5g}Wyo{?hbq!@X^R+jTb|DCqgLGS{^~EPi5ZhMCZ*^50#XzREcC
z>2qH+EI6RNLN&EOkH5f!h2hw=16LGyHQW0fBQM|h^6+s?&(qhMHug#Oyc6nW?g>20
zo@~vsz_g03OSXuc_owCd?+>$h{O_FE!Mfn#(q}z~zj3|LciURM!O^hPq5GZqZ^zQg
z{uMvZiR`j#dZ%?^^;{(ZU(QE~5BE(}?Q8vf;@14;ThButc{}}|ReN^duBWTSmhI_1
zpgng|8@uk5unMEo%0Icw{@;p-<Cx#;=~6HH*rsakq<d=ZB1d1C?X6|X7yn*+HR|aD
z7ry0IuWx->%~yNsVBTu6wNq}S{s}p_(SL63^j&`#tEVo#TpoMrq<V*eO2%jJX!qps
zpu>hoRW;&Y=e%2+C1{%S&i%+l4bxk*s~11<WsEClXJ5xV_p<JxhN>T?2a6xu$$qHd
zvh40`sGs)c*R2wPb53cx5l7T^-*&8IF_K&mtAF91sYk<VDVv#hn%2d+Uwhc1v&H-@
zGw<gcUl)8!mPlMM_dxxcZ?Y2G4>>Pt``n$sedn|%EoWIL%<9_xJgqy-=d5#9?Qd3F
z4N0$q$Ichs)S0;8Bj>YatEwLJojsW@E2w{vsdA!c`b^&5`j0wOtqr4nUt7E0|1oKm
zr|#W+12>b|=MUU!-uv&5m3iKY^<m4k>=;>_oAzZ`n=u?~n%67kASbY8@w#W-0UnMS
z=D+89`ekRGGS)i3-ZF5_e3{Uc=MArZPPp{CXO-EdmBOp8S1<4hTW;9ZIqB2Xkoq~H
zzuk`bG%NVUHk!yKED^7FKO(rN{A3*4tvhSZN^gC1bOPhfDaTl@H{Fi<6w7RNc72?+
z`tLcXx>+?vQ=;{zT>7;lh%4>$PLXi+IiEgFShR4a=kA}(x0&PKBvdYmPvPTalA6Q2
zz)vzkS7l!Lg}YIXw-}DUZ;~!Ac7OJ0L*ty?f<=~$tDYX#+1QrAD!#{ek4F9WM$Jtw
zKX?3b%iPTUn8%M(oX2EaSd3J~i$e?hmb+#wW~zTRdui8k)$`g~9@QLkF3x;Cr>`_U
z_3i?vExxJ=9*dZro<*L#`LV*xDQ?TI+t;KPDhW)lyng-T*OePjF|7;`$nfZ2@an>P
zm1ABv1^luU{~2`J_e|U{YaVz0f72`<x%&N9$L8xO&9x2tz4nZ<p++6&%;SMw5;pTT
zHuy!ZU(>}s<73p?Lq$u>-<sv`sr~VfUvXP`IjC}m)|RPxDWK{ZT#JGjh8Bj#AZZZW
z$Ou|_M{~u(#Xxm2NYciJ3sikiuGg1fG2t>anOx{Ep<uyfWCE^^K~g1_Tt=n{9;}|9
z%wxzq*~-dR*~lCs8HA|lL9K-#E`4Z4Z)`C6f`RR1Elb|Xe=DTxjUWvJ<eL6$lxMz-
ztH`>EtrMa=4m3VxP|E2#esJzBaf`+|M>xg$j;pZ=EosqZ^lfNyVdCWTD0tBKfc=yE
zkGQX2US-|B{LaxQJ8e~b_}-=W!a~=}rzky_jGgW3T-^Ns{QGo%qj|-8O<&ty-&kDT
z@Asv=-ah!6#p%Z%Dr=Q@7S59Tyr$TB|MyLY-$V;kPKd23|Mz#VwaxC|&QF&9vD;(K
z@q6!^)xA0V*PGdj98Yi?Hil^~oT_3J$F}s7#}SU@PQqsE6DMgWx-e=VH%s81^mwt|
zosP>a65A^|HeHzdB*@~<t0NjKo<6$zyZl|9=H|8UmEw=r`?gK6TVe6s@#F&K<CmgD
zqc&9XGH0%>X$ei1-jHSVsN~0`U9ZAS)_!XHC+e1^*K?kyeCHwe>ED)@D0EM@_1*CQ
z9^(cXn=^WG|K8np*AixBO0f8`D)(mLCf~e|OAKx|>u;KU)9QAL{6^btXRqBTzTD$e
zKX>l|zMH?_WH!8bsJFYml>4l>_Jim%8_YlaSDXFtVNdMgA8RweWtJ7_?k+LVyB^eT
zQ}OPO;Jxe1Zyq#vdEc`0-s@iy=bHokq?~m#!Z{M$gLNY;4!(CWaMHW8E^qsub-q4a
z$$LXhm|eo!553zWZXmnfNOnv3&XNTYhv%5uOb=q*8X9vuW?ACX8;>mnOzPj>sq8kZ
z^;KM{>%@5D^xEvAz{64^Tc;m;cIbp%2ETgd^2v@CMdHe`PdX;AT{C$b<E-ln%UdHY
z9wx=`M&7$S=WOrvYw1mY{5~gm<!Aea?7C|j+af=)+hP8a!;MTnDlE4Pce!(i&;Dan
znYGEhm-+h5>u=s?s>yD>{!Kk;Q}^-k`U{EMUo3glVSm&9=>z+V&xNakcHi5fbU~-;
z`Gd`xj%?Kl>Ze1!O8xX6=|8{pfh{AhSwkiJ{-!pz6*If08L^!#o%?P2eAgrDg*i`n
zcYc#quBhf(-`TbN#qWnxtVGMN-{ebrCF-F0Ebrm=jKKY`cPw9?ZTRin4ZA4ggf8dx
zW>$Iiiyo(z>}YwHoxXYE<R!)%_>30j<=sqdpWvmtWR>cjtOMz9oRfC#x}PL}K>ke9
zncg;sa7O;CGhV-WdX-c4;|ccklAtZ8J_ue~9a6OAs;Wjpk;u6q<BqAVh8J10wcg}^
z<FY;;=elXHscZ6~dCBKDMDt&qVQ@T;xn%m@;EzGat_9a$6nS#<68Fp{F{hV{KGhc&
z->>Gk)ZWYa%jwo9U0*JU`fR$cc%`x|PvSG1qL3Er=gcp{UF(;!tbHTCdGFGa_m-Yz
zSG0a*C<S;NOk~TP^!!2IZ01l$X}&drOI`{u7h4v!L_z4*kHS<D+o@hH7j}yJwa5kS
z=NDmgjN*Flr+CogRlUFs_ll^G-ve}PQWuznJ^OpB;?9J$1*cU7`JJU|eNNwDoSXmg
z=i>mqV(GPpy=8MwIPmqT+l3!^AC<HJlv$hABy$7hTxb4gX(1UO_SEd@<MaNwygh*D
zx;VR^{mrckkG)SD>{HI1n!Rx6+l4=#bsRjtq9!rQGid*{B|DDl9pDJ6@7sK<P)O*s
z{Tr6AMR_qtcBxoe2RQpp+o;$1ZF8swr)O02iuk>gRF1C?iTXa_S8mC}31Qs@vzL5l
z*(v-q{6|RNH#VumBI?YG`ndK^vy1F}HN_?5(yHq*ZXt7n*nUSYuG08>rcTbRkSjWO
zb?tgj8@Y~aNf$2|>posGQ({GCc}M-;?DW@F(`<y3OD1MaT5;UlM8u%mWwJ`iG8gC7
z6K7;xGFqe7Cfcc{d*+1U8V?iCAZ7Jg5(m0mCaahmT=Y13+U0U`+Ukz*k_Wpw{%eN|
zf4jErI#c+B41vrgTb7+?I__=idgRGowjGN?9$!`Zw?3+vi$#DT({_@Ism0X{#m{lw
z^%67EP3At8xVZdV<HN~L#y0jx4hvttSGn=_$6uKX?gxMA3bgO6`(YQDCA@v^uH^3S
z?2_s={h61hoG(aoinjHNvsLO%e|b=6QrN6Z>zUUsxBFxn*tGFde(9&l%YLw&zA^dD
zN#hD<AF0eI{bF(-XVjWqP%l}}_}^c^t)%a`@Z_?3iytdjo~_y$C?_tzRG~V;?b{=*
zsM<;A<lpG;C@kI5^{sNr2HrBpwfk?#FaF^0RV+oK=%on1w`fb%J>Q1ik~0s>+RojT
zd|XU>qgU}grgPZ}d;d5b{m!A&Zr*tMI!En>5aGp}G_Gm*@vS+o{B*^lBMbVLss7lo
zc(K{4oNVna8T0G!+uqkO>hYM`_kE4mWf{lX533iPDB3e+;hHyD*|p3j>m559?})u$
z8=@?|VcMfA&m!rh{|i#q9J?&7KIyeuMqG2tW7fHqwwoBE?}hb*S?=v);uJ{QSU%x@
zuH;9i*&F?%RJTaJ`*t&I^@DBQ+0yrAzrCEoSK0mPR`zP`g`E1ui|b``Hk|%aWwmo|
z-xAx0qT<R$E1ll2{Hh>X>A$D^Lb<!-x)q^*n|)>Dd7|30?j2w9zHCA0+ii@yc}(9v
zT(xRv``Y8vtu(}>!u~|?#!D{zc3a&(X))*BUnkt(xUKPzZx+nkJUd}>#4ew$4?cx1
zI$Si#?Rr<i#!Zi6Cv9KqKeeyit)8*`^Sg|T-<Ym#)!%qML;t5x(R(&i4bJ!jy0(_`
zmp@lJ+-eUveXP>myXnX?o|(}WDnC@}wToCAk0@E?l^cgueP8&>_Snp>W7;8!Gr|-2
zw|>k!Y{$p=vm#2zn&VT+>i<h`q-#fAFMI8o>LdE(L^S)<Zh>CO9XmHVEno1<Axo`3
z?dk2(v*jjI2N!;{Iv$ptb<IkV@y`3>H*YYmn)~9>`E@Q*RSz#&a!e9>`K6n6*FV-q
zZGlCgW(!(N2h@rHHDHVk%*;X3AhxjqmX;2vF#?jr*3y}L&s9#?(1^>}7}AD88pxQ>
zXfj#f%2Ns2^g*<4jLjfwVXYer&@jg26|Q`s)(w-f`D8|Gsro2p)h;W?;+M`3tonGP
zi+s-h{dB`=Vvc%;a^y4_cgNXVw%&E}%eu}cq)@AI!EVQSx6jPK-G9whEI;{lf_7$l
zrfykz#SY{2bAM+)e37Z>6?fsa+tmwq9{le2?^@2PZz+DT>Tu~F*Y8sHi`J{RZaNkz
zw_Dy^e3JC?m4z`SdM`fL7Zyg;Fsu1@pS>^l|Lw={Jr!TRTTFlX`{v@MZuK!XcQndA
zR^5_{x$t1>3<+?P#w?C)>8TT-Ce7@!I~P>K4|Q~zy}i9?Ys9*`7l(USs9o5h>pWrV
zT9xUC9tM5?(iCZyZ~ODr#rdflzvj-lu9V90vboEO--}H)U1x1*VqaPPoeKw|wB<85
z@6)~IBN-@L_bS#`d)KuuP5VTvvh;fNdCHd_nm_N?{7a2Cetaf|fA7Cdp7J;S=(BIz
z@7sj8u3$UB@tgm-t+m$eDPrYX+wcAl{^(lRdpF_xO}*VGuid!)nsw(t({Fm#De{{?
zD_lHl{pJP7+4%Dv@<xaC9{=XLefVs>ZJG4n?bo{XyZ_!k>i&E6+^ts@^31cIe&+A3
zs*V4{AC)()E8lH+?6ks^$;Se?uZc1(UcB;^<{W`?B?-mX8?tW|2b!M;w`!I!CardU
zT7HXrM_+g=->ua_Rs}g3=cMAiRvK&xjkz84?eel(@v{ySZteUmmRmL3D=2y?lh67s
z_3LcA+paxYvDajqh#OxZd)g)W5+e@xhe=DCWdd)WvdWBJ^0@8E7K2iOYk#Fq-8_8u
z=B0|vT1Aa_Cj4nqxw)=ix9?up{YBYJ@Wp!b2L~ASgqq&6-2H5IMeYBLKS`T*%UQ=I
z*C*Pq6TcK#{q~)U&$|cT`05Il|C-ok8@KVlul4@=L-}$S=Bj-O(`L%NXx%>Jt#Haq
zjyEBe*{Yq-mP}gawcm*=HEPM@HkGF9rMxSDZ`F9~R3a6=V9#UGN#<U`8Y`_@Z;5O8
zEIMU#G<UB4u2sSkj-fNXzs{0RG?~6>f?5Byo6kb>Hy2p^U9qA>qw3g-k~b%FZv5=%
zmpm8L^*KgSdTG7hh6&0EtgF@quXCTp<7gtIRWRjq%9Z>5s-0IgRQ=kfJe|tpD5LYJ
z_g&!m>ynGBGVW?;PY#s6ni14kSiEo62Lbg84TBqhmZ<(_h^v|!8`GLQ`J(!ipKe=o
z4}DT{IMXZR?I5AQ=bhj(!BjT627#PE#h2fdu~kPjS;Z`!^KY(Uef`0OQqPx0XdKYW
zRcz>NVvaJ?JiYy<^qUuveHL6%MSJq!i0d{^lem#^?b^yK*~V;31valTKL5Tb%`<z!
zi@v*w#_2C(g;wc)4=_G5XWO|WUWX)`LmlEd56j;yZFyDwM#y?s+j`F13yzhVtb07^
zUCh!wE#F)IvfY2*e5i2i$$7!`p?4SbcRyiS<HEOCPW<EU=WqBwepTu#X5Q)h;GWvM
zt?&P+J6CUE`EZY8YR8mJAw`$0$yfKdZCJC&W--IP>Sw&C3yhvQYy4}@nDISfmXMl7
zf6s+w6AZOB_ZS|(6_RGU>MRrQiM6Mee?CzvId#FIAE!Jmbs28R+LmuqJIbECYsJEP
zCTSLP+d1u<&;QQ2*Ae-YDQ0RBSAXS-x%Nrg+}Dop<#>2$=30Rdl2K7y_t&}y9`IS?
zl|5<RLifYfEmK!Lbw2d@R99joOTgCKDrf%PG<Ym_@;pb8U;5U^D$7h{Civ+$&R^B)
zb?E%F1oom$St}>?{QjDeFyTWKi_ZFkK~dK^te)0?T|e=N@)e1TrKdinZ@IIamE%-=
zr<vjup3k0#{K9_NefB+OykN=IIU9eKwn*iwu`SN!UoC%w-*VUD&|NQ$FLj@JrJ*St
zDs6Ok<7TnkE!S0l3M@FYo|Rc<Q+MNpee2j>-dG&kEb(Kb%n~2{^;RbXjx3h>vO#L8
zL`0l;^OX27!wvQO^w?_4q}I!@L@s~vQCHP+eR1)r>?K7CJD0EJzk9gw>eYsT=}-6A
zpL5$BAM-S@P40e8SHgse``Sa}3<IVtDiNr4dNPgK^`@it^~d)uqj^~FEVar!`zv;@
z(oZ{W{SUXAcfa{`dge<#zy0~UGbbA^U%h8arw!*lw$(BGi>JTYf1&<-D9c^9n9I2a
zg63`N97j0c?LE`!vN&nhM$P*<lXt%}DqSk291x<Z^U!$B2JN3*&E{9QUVl1!Cm_Iv
z_1KrFmDgr1m*(8=mCgN4_p^vQzou-^BJarOT7G5154}RKz4^7QM{Dj`IqS2PvC*+V
ze;!;QBK6qGs?*r^gq%h2(pI;3^~+V=I7(7HjtZ-IF}G~#JkC3jFZbfYg&uRt@`caW
zZ9AB3s^qlbvCO_LetMOCC-m;|eK}W@_`;=cn-jNv`uXx`>2mEST!lMA|JsBn*sXL9
zD7kjTJL+PndeD}w`&_N^JPsw8U9H?5d0s5{TtTzW&LEp*Rlco@tu&we*nBWhm8~~d
zVce6pI+<_tJl$J2YmaJ#&U&!*;3v;(>=&llaXg-8QCT+k?MC*TUfFfQO$(R}s(0)<
zz3s-{(v%$@H<QXg?CSik{^oRPl2eG)+HVXZRui|i-6<5G5_@cB()3S!hjoOSU+pP%
zTKRBs#_0`P)HD2U2d(d!8Lu*b$>hW>=ksGVpVvqD#XU8MU2=t^c-Nm3mM6BPJhLs^
z|5U;JrtO8igMv<P4N8351-?IE$<C4H+uZ%WKk5GL9aasquc%9iS5I3n`DO$6<DU~g
zHQ2@Ml9TPv5A#n|mHS+kJMC>UXY-`MvYWYGe{Y?+z2R`!p61nSmcD+_(sF(2hjX3(
zB1`4o&*53oR&UC8TdO_k>gnZMS<7zu?n(4JH}%|01C@(uHCJk9+Eis`GK6_0uATJP
zC+^9Q^GU}JWFO0V|67tjr(lhOTP7<{&$8b?ugO_w-QalVegABS@3h;q<*xjznakH=
z(phM>{okLdvW{U4HQB<KIM3N~N33;g5mr5=XDj_S_;l16RqF}$zq@bPS(vunIH<pU
zLgfeVg|CW=9R40Z{eNm{s>i_#CW4pBjZ0T0SO+d)dzbTga^IW!u5XS^-Fcg8@2F1H
zPB0bCF<HLC#c9pC#Z!*{o|}G4QRW-ZDS>-Omp|kDKV3O=;tqNKfP2R`7tcyv(=kD6
z>Y2=|*6rMn3zwF>_&uYqKUSljb5EGhEQ2KqqGxzp(x;X$bKKJ{@JFZVLiO8{+SQvQ
zX1ea?`Fyx{ZbOsK&Sx<tN2&!repzl@V0PAWzKf5oXr9K-b!Ro7nN_`Ac>m{&r5?|6
z1M(iq3co)g<Yo2Zs&eAm_mR8y_gB{0@Ho4lnIW_~|Mtv>4;**${BWyVvxlwb_4E1}
z-(AWWZ@69j_T|c^>DgcF1q9v;z13R3L&syW_u~`^p`RBml)SB)-(|$Fnf}_9<<HlQ
zOP_eo{})>jVm0mI61jx$k4*m8ZAh3a<(2;Bz=LjfyI3c6<xCzO_M)oy7u1i}o?jvI
zom=RWz=K;|D<)04UgpDR{V`rqyQ8c`#5gK_fBnL#`qSp@HJ+;^E_^X@4sY$f?gQ@y
zJilx{v2W`nxs%IV^%8ZfV&<QF%lpmyn_AG-%5Qv8{EfAB=jx80+c=-$_uj306c6%M
z+`piFV#@QVb<G$2^sbeBuD-T)?eU9=3{jJgMOq)IS#@mt4gZA)iUaOhzj+~Py?xJ;
zFYjkh`pwvPby0n%!HMSu^U6%`^yY27eJj8Fbw|$ru!tp9uKlXd(l6@7H)<G6*F7TG
zdV{grxPAG8zeTIJzDS+J8uoGvkHr^nPifVK$#;Y8XDzt?pV1)x)Iv}L8@2sy3>x(V
zHLH!xO%d&HSX-MHX{gcIY;vK#8f0+simL|J=60dK1Pf@;adN-qd`8R3p!q`+P+J~l
z{?G(6MF<;KG%*G>ycta<f2h!?Hvx@t25}(|Dz1(6&Ie5&KD@2gkS&s1#KmRe`gXxh
zo%>HVw(9J^67eZ{snt8hjM+<C=UmBL_g9?p7xQm-t2wIWC+|+Z8nG!MyWHa(&-0IG
zC+s_!5ts7r^Oh=s)|U72>o(6`bE3N`Dm6v1!0orJ+RpW_d$j9UhBlslewJH%iP*cu
zd0XS|+&8~zQqAp@w<-Pp`TsSaH=T(4-@2>i{`d9okNoxh_R7<&@x1SmIabfEnl<V^
z4=H$dL?X@dd|=0tS+{4H<!7vU5OS$Y?3&vak0-w({pT;3*$}qkPE^>>F43N>3Q^nD
z2XxQ#t&iXLuQ#>1e8u(LV+-ofMD&?$pA*?AWxRBUZ^q{~wnePw9;>grZMh|p!6&?E
zb>*Q8T>9^3ANC3i$TW(4G3RhU$H(KXrGm%BY?^-A&taba`TNby4|i{uuW-|5JMi#N
zsMO7joSE7ZD-V79bN!9$Hs^VhBxg=w-sHLO#@Uz`?<cUQc=eqWn{ej==gwVC$J^^o
zKUyoDO#bn&ZO)+wnwCvpoA17P{^pOyZR_~;*L-f=ndS7l@16DTn?L3K?g>Tv-?9vQ
zGOg(Bk`n(1v0jbVHbv_XP1>_KEa=(gb(Mab^hA%X2yrV+XH*Znq4ln1p@3Ce`XR2v
z#mgL%oG*KcStiRwXvc9(-CP$HQ9YaO%FMkN-0BZ*{yp`oUnnc<g1B`hYh0bXRk#i>
zIkhsSdj+@2OMk1hm1QrLX13KX*tqkOkL!|3=Sxjq^IPg-oqv8QxvVw4O>=VK^zua;
zj8dX=R{VQj_JZlpg*j2*FV8MeV01bXb=7MZzui@{fA@CmH@tbY)%r>Kr}KHowp8D<
zxxGMI-Cz&DaJ}CuPnqx<mH%x=<rB{>mCg*x-y2;JW)kIm?pyAY%SHu`nnEES(}Gv<
zE@0R(CHYZdpa^H-J%QM@#Sz^{HrS}uRe4CPp2Ha<Cc#lt=Kdp8AV_q=$3D%4R?-Xt
zTCx*3U0F>xYMwltaOSI5>syfq+r38DAJ{ddpN{R4I+o*+vao(ir^n|u7LSM(t9)06
zyKOmAczS`d!+}zHzbh(STb;!?%UqU(9$<bHWO$>wf9is`M^ZD`_zuj^OI^IPt&MfT
zWzADNwssbq*<EA2cslC-p(rbkmycg9I38NK;@j?<!C%htP5TgB<aTO?g@QPPtJwU>
zH@~0gxYN&>ZcyjQmss{Ny`JCE?W&2%=9u=tNt$OK)m_{7T6Gqu@+RIRZ)b#L?sDi4
zT=kx1+k_rJp+xZ~%VV#nhU5#&*msHZB>t__O5~4Q{zT~CE>YRNRk}N_noTti<GoP+
zd1=GH6%X`o{Hl4Wdv^6%vw0S+x&4n9I{p#5T`D1&-LR}MSN@2@o`fk;TjK2M8BE<2
za)kW#4$3e;sGe|Ye#1m%r({q68_agbb3%_jxqM-!+_5XnQwn4zH>nFPT%e`Dh-1}v
z<AW<!Fw1H99nSRLbf7)$nPb*8Mh@G^=6*(nr4O%d`ThBr+pMo{v(>{dicPvKY~6i#
znIeB8xAB?FrwUVTmfrjHFvw5X<d{Uolza6#bp;G9LMNQJWX}3#8{O&g+iv3D*GE<g
zH>ob-4}5Qt<!;B2&8wzpXp^eX`IE77AKP-t+0NPb58g1ksB`b1#6gyAO&zR_B4tg#
z&VP{ER%3cV<>CVY7DxHU<qV-qpSOFkEl%E`n=`BH=th}{X-_VCUE5HwZb8VG$du>b
zyuSVKs#jThVJX+XXG%AZoBCQ=Jo;&5?qP6#=AQ*#f2#amcE>ljC8~t1{$Q7LG|Alg
z&>1#k=G6UKOJCfOTEb%&6YDz9H~emKYvZk51~%&RC(1v}ymG1J&Ee-qm^~LPU;TJu
zvzXbhHQC$tt;xwz|NMGKoTa5^`p$&d=Y5U;1w9HQE1I6wvj@9I%}esjEwh@vYMxbl
zLhRv>oNb4$<W?>H^RS>NEXH~Dz2#r4j66QYh-aT)Ah+(^iRtG)?z1qyrT4wDsWyry
z@IhCkcDuyeTqZGN*=u%I2lbZq-@I^r?=qojvPU14KieBCFz<rA!<V{u+=UBxqq6x8
zPW3H%rqmO|bauJ--nsP_JmLO~x<%PlA9P>#9^Y|Sq%}ZY^S0VF#pm%Vy#IAfH_gBL
zZ3fQ-vHf@1)+G8}kN%j!aJ{Ym&b3|xwr>+&ml^3h&6;)XfXpEykL>yOVxDsq|Hvmj
zzjOW~^Yc}Dt(RF}zqLGfK~(udBFp_7i=?()IhJ@%qTl-XjHXm0q2)yj-q!ElQEF)X
zj-&YbvgGG1Jsi_-yNYT=pWGs3JF`gkif`_MB`>7=fB2bMZr?G-|N8ZXw__$c?o1EK
zO5YvxXzPrZ6^)mo?=0APhSfCe+pj~3N3TCI{5h?rv^?YLv}bo7nL5vJIUD+(?SY2Q
z?Xx03c4qN-mE3o=P`MuaYw>RHrSIa-I@L$M7T??V>DZ2wyjOhp-iw|hw@yEc=kls|
zGjAC@Z1>s{(`p>-Gxgr%30c#b{WC+G+g|hRn745MvX2MWuuj&jQ9UG<*mSu>rf*vB
zjtQ%*9%S8|c6-j<#f@KzR>r+aU(3<zv$Ol{y5dW#c{eb2$g7$=tmxUV@3{2w<_}>u
zG6`|zv+5`OIJNrtseew3GtVX$mCVYUUYmaN`9;>Ld<#D*Y5BhGdaZ7H_IKE>qk^{*
zX65Bfl2fXAef8D>jj0!2HHVchV4Ptb%U&nBYn6ajXCr^0=9SGs>tB7EG%d}zuw0a3
zYWeo?tjh-<M+NFthsHN0-}>qQ{r`O7vj@5P+8LI<FY|tH=lq|sqq9{BvzY>J7l4~7
z21bS;X%O24G};GZAhl9V3_-0F1<({IWO&aFx~2)i12<3#{Uulp4Y`bsKx>^QTLoB6
zzr)JNHJK~KP|U;xtTvWQKO{diFEcqmC6&v>bn<}!&&eeL=AxjsQ4klZtmWj0K)=Z!
z`gkTw1!}09LK-nBN=!j+1vhM<Q@n;|lP?C?PIj2jIeC4crYK}E5><=&<dz^$kh}OM
zy98;8nL%1oC~C|MCrbu<PCgrCCS``j*=FET&&d%6a+3`vuuT5&iF>kKklN&eU_)%)
zFteN-7!op_Po9x;vT%rom^l`Im>W-i84@y`-++;A^6C&xRV?l{2Q?{?y=pwUu~>1k
zT#&@%|H0goZ9@&zEwFgS0@5tBvx7&k>Ew?U8k2n{3DwsIoz81E5ZLouyT*rKP{Joe
zr6pwPsv`^er+#BT5EtZqG@?!B$M0Ep)qI0Ar#Z;IKl3I@?N(_2R8!&pdw&*W&8SFU
z^UZ*deSO3B4d&B2Te24~i*L!lYToDS7<2wHOKs}zMp4%Od(MS({+tQtugZAX=ej<w
z*}Uw0`25{g4}LwUzhnL-L0xY1rYBOn629EoF?|`k+`^pLmjULN_wdcKKX&|0gL(%m
z?_xII#n~c1j=gIXEsRjrpLa-0GNLxL-}7o23-iMrzWt(KuU35VZ1$H?FYH{QyhNar
zCveu3l*U<KE>$ml>LL97$g~x{DwY#lMM_q@2)O)k+aAj(uUk5fYgNJy^ICdlZ993+
zUHHG-WZu%O&bjd>BG-9UYyY~<ovrrY$GC6~_ss_8)Dlj~vr|vso@=zLqo(>^=Ffib
zJAR6R?C+iJ3?@tTs0tlBq`57xpqp#H{DQVyt0vFrlb`&jLbe{9N>CczZ=<pcq_3CS
zeSeqaC=g*&=J<heVoU+!2S$OK<|#h}SUxCrDfxPC;q{otIzdGBXpqwFiOSY~i>^$2
zeId|lvQMzJpR9SIb>U?*?o(b*tk$Q!@w{cDHo3y6be5+{pRH&5q%RLEgieZHEG~2G
znpCfvdg<l-b5pFltKaQ?ey>{YzUA|EsR;}Z8iExX${+44&%PwP?|9*p$v@sjSk=9_
z5$yT&w#R>_1F@wqUi|f5{yfc?K~AQqU&byXf=9+uhH-`eLx)cWd>*`q$~V*t{eF1(
z_`TXqfn1(9j{iNfUcUCa)5DwG^<ViJd@C9L{Y!40Tz~v$^E{1BaSnBFf7r73?|*#S
z{*Mkr9_I!o^MBqCH%pp*Uhb9uG5zLxul%WQKaH1qtJSVF;WE9Z{AI)W$G<HZm><nz
z+@5y4XqH*2+@0Oacrwr5TXRv`B&z7AYVOZ#YYr;6KG$BrBqsLdXM#qG!?}hYyIo8?
zMn6k-AAHm{Ek4V<z9NSI<-#)Oj_mGq)_Tz;#%;4Me)?H5@wf5IB$pEsHpb;a#xYhx
zGY>6NJU1`q;he{2ZZ94z6X;#HV|7H;<hCXA;sR%O74Kr)e6xAyREEdT8k6n_B)NsE
zc|VtI^jUUB;EI^(<Lu3C5_flBI`rhsjYBgOdsCg;1WvxaH{JEwgQBo{<Fxcbjn+HI
z7y_Ah&I#MHBXE(JjMjIP#gm^|cYe;^9Lc+OW6Xt~Q#W(u+)ZY!R?+edF_J&?ylAIF
z)aim$F`gT9O%u9iIN#v+ljL<V^$|T+o!Dq`?skIR^k|(YJYuJxo|1a9#r2B2|MOeC
z(J{`PM?4ryH>Ia-Zj1Go7Oj%9t#9!D^tLT!mbC6dU9q>HGkeuM?=Dca`zvK*zb)a$
zEhmea7pHAawOM^5vwJ~nS?cG_2M@iA2|M3fG;89m$wzl8++3>TwL7t2y3Z$vb;r|Z
zTyI`w%067QoSSWaywMFNuB02cZ}GavC}-YXF^%K1)Z2t5pDdG3_RqQ$b}U>b??lhi
z`rA&g4-_6-&o=4wt=6LfEj+8{T|YMME0g6_6El{Rifv*pir1I8Tz}OX_?qJ<+v#3|
zbxjXMubSx<9rtZLcS=v-*oP?#<W6l>?6Cc)^gQ`kQsS1oAC657z0BjE#-7{2Qgz}(
zP`>%MJ<Imj?3j4nq^r#=;=p9yc(wJq&rJ`vr)8VhPx)~rW}Ajy-?Kw)H39ZF^HzLZ
z8GCc3?X?7hmdC3s-}Q?-p1d<lSIg^ILhF`?-GL_*w_I}N|6B3#cmm^>R)Lvk#ZK0&
z$gh&L?Kxg`+sR5VdU5kL8{LB*%O=WX88v?LfAHe!xm}Ii-3+VxzMYaV*mOw3cyFj^
zyV8e^JJ&3Hk(pb6ra<{m3eOuGr;Gi{l~W#eo0{^}EO4@#tLFV9P+*SsFYTmb$r}@d
zZ|OFi3OjnM_f^Hj!06_-<=f2SL{_Zr7I)2R{<x_3mhZ<!F1fXPGL~;sj9ar{n_*l@
zfOPlk>^_4fHnU=`3$fkyPrRIW#N3DNn)>@~YPZdO+^(y?->A0LqF!R&jb0J8*z=LQ
zCM}Zw%Du2o>eSViUxBL^*Ij7~w9isrA-^^7O8>32EB&{`uJqpuyV8Hl>`MPFml$cI
ziMIuhCue_>O0%DKe#X9|89o9P){ouX&%8Kr;LV{KGcM#k2-|D0Ah>P6ru&2~@8dp~
zUexUs{L-^-+oImk-c&>DNz-hl>(3M`&%3wdTDsT0_T7;-$@%uekH7EQbismUp7H5B
zFFNc3-lT>u$rgIs$Q2V`*E8#o!|sdn{vrHZrJ48liwf>*cr*K=t3XEvXKqsw^Q^L>
z%1WpC2T~>-<?47T?tPgdIkaxe2Qi-{#>G-MUCyi)oV@l$)0T&4j_~QJm-tFY9kZ=x
zU!Qha=vrM{%f*0a*LrMJr(aq3CNgky=E2QLSHh-y2cKGd<jvaI+Fw5IQA}Oed)sEI
z?P{COnSU1L-Po|}(UuvSEECTKpW0pK%jkO8X+i(u{!*L7IbPwZ$81=??>?uvYif)t
zPf|%6FJpT3?R7hpIRzCJS^nrQzoMP4DA0B-XJP%r6}nN|TJ2iWq~hiqX`TI9Slh&>
zs^7O}_Jk=Lb#f2Hm@VW@OjUn*x>@REXj!YG>jv|kABB=FKUQVvS9`0U$iJ)LnRYg|
za@Wh4)t_c{2hXq<N;z7%*lO}z-lW2-ZAG0)>YtPE<n7KXD=+xA>gJcy>-Tb8)$(#W
z@4h*3afhKqeYD$6j^q_rcq1<^<XkKq-ZN86*lzK(r`#36-qEXs9ZGrTv$)OM`oCgN
zM5k+d?n!x$m!1E0MJD@AIo?*{6Ds{d=+xAwa}KcVQQej{_3aJmp4Km$Vo%*#Gdn@Z
zHz2juHqP7N(AAcSM>OsiHh<K-)AuuUvHZ)qg~`Tdms5@!nryE(>l3Xw8)aO`w8gOZ
ziEiPZL;cEz-7LyU;We!@m3L1xaQ`N7o<*qmi1U%PN1Tu39&tYM_T%Om+{PZM6O+`Y
zcF#|}b|Y@dnvJzbj(6;8{^65l|8eG(xku82*k7D6RQXh*Cdg_vxueo*atG_9n|()=
zJ_;00sOX4Ll2hWFS=6gkT7P3o_X_1@F)n)#Pw8H<+h=EoRn{rjD~7>(i|%Efa=o(q
z!ZGL9d^UOCdPF9bM?W!Bd9S#5_Fj{3?~X=AKdapCDs-N6a{JWEcZZK2e!Y9&@i#NI
z{i0OX?zpei`Iqs|@-rXex>efPbtg&OYu}^%`uE=ZZ)U!c-{6sCpE~i#KgXEJwE7>)
z-70PEI+G;i-0rP?{d=xiwc2lGG0!*kITMfk(^#itTysLHGx4TU=fjOZx-Rc|Bo$QP
z`s9#Aoo%AjnWf2YM;)Cx&d-a{zV<dGDR;qw;<%^hAGxn(3jJ|aqGjQgXS-&-a+n&w
zk$cWt7d<@&`;=s+<U?<7aJ*^gP}#k7o7e)g`UvSSm4!R+sC!=B_%37qdh?sYulPcK
z{+T3~v@olBbN|iI>dm%c(W^JGPq}4v|CREa1FyRMuh^e__w&l~S@VAQ%so`DZBhO6
z{gtSH2af)zU(0r*)jZ7mVYhgoO@@vwEB_&r9}5*lw-ol>xas+Lxn<IGJCO_gS*sJ)
z_pvUj-TU`%{g26S92x&ix~u0|)jmDk`gP4bt@bwsyJ9}eE!W_!w#lk>nD%;$!`>!q
z-iKxPpU-bA%kXsFpwA%eH}M(kgFRJJERHq|i&k_PKa4QBleL*WS$R)=%lEHtU)4JO
zG8YB^ei>sGv1#{C+mura+J9{;J<Id$tE<}Ysxqyq=e)K*`t-JbmjAtLSLfZjGu4Y@
zjdxgR<yZfEl{H#YSvQ4zdrHDBW$UIpf4p<a?()Pr?>aO7?*0{ebE(OL^r+yMLdHLg
zH*iWRPVBmByycLe^kXLGiH8MwHonU2>`dylV7_ppq2}NQxvOu#?V2I+_I0+J=kJ-B
zit$@jlZ^jzIGN54xIaNu`g47#R$lyK@4%SeRo>MPSv^bViiJ*J+*Et_b@BRp=R_jI
zZXVW~${xPIbz76%l$T8PLRAl&pWl+0e&d{`vej(g(uM<^b{XEs8u!ZQm|dQ*FLTT4
z5C+dr{)-QMb7I|mJNu3C!I0luwN>7D{yEV$Rr*J<rhe5*@v2#eYO7T4yxDMFxt?Ru
z*;I}Yb|%}qC!frke!=r^)+Hx(%VYcA>HVEuyq7O<s`lI<XDh+kem=e>xvNW0$xXd(
zxPP+g47sSUeL1o=6MSSPr_8GUv&}1VqxGV*wL9l+Y|U7^`P5;S>EgPJYgT2Ret2=?
z?_&b?0y?ozbpI3!w52(uo4em_I<Z4o@l5%o`ZkVd!5Q48Q7(H8|E0ayFWY!eEMwcv
z?2CzK&wewl`1;+u>PpMZm8`3l&#K}$%M|^UbGN=9*FCSB>ffwo^w#g*^gA=KFr@0J
zyhqpXiP7)3?$)ZmTYv9i$el@_dk)lW3U)M{S70%B>U8^s9(q%k>aF`HF>(L$FV=R4
z<{zusz^PhU|7Xq_m&QLYUFx&S)EY8`k2q@>%Q!^VUKTx*mdwiOys_;p%W|Hd-#=-d
z`2KtQsi#4uU%#&63XosN|5~whvecT@jvH(C@^zIOUz{SFVa~fSV%@dXRXbdNd|UCU
z__p{irLXU+zaGk;#9KUB{&&#f?ce?Oh6q0Wyy=$d-CL${Q!CEbKMMTjaoNH7`G?o5
z<L?;GJhNt><4x5j`_F$gdp2DQ5h<2`%pMSQe@lnzxiSZ*KvC(+)q<~_AKnYN(dW7F
zHcMRpc`tU`Ffk{~YaNWCrScXJj@>`KY0-)DdoRCfeo8&k)8GE`di#r=f0BQxa*Fh<
zI{(Rkk+_wio`9Bwz;XfG7>oJ_$&)=S(TyxCH%?6yes}e-ppc3{?D-}UrrP|;9S-$b
z;d>uVyn5uuwIj88u2c87YLv4cGH$+f!RN%|@VgV=9!~r=NojYD-SjnU__n?C5Loto
zir&Y%Gt)98J(jjb&+wfhxt;Z*%OOAO%?p>9^+W`=Fm<)w<ao_d8FHCnOW4}2mi0~E
z(zB9Ia<x<(SR;{o@=c?|R?UQ9<F+-m&B3$Z>{GqEvi0@+zlV1A?Y`~e6L5~d-oRwV
ziR1Gks{U;B&GVf4vo3UEpPtQ}EDOW*;uEVr6(9d@;9u%i#^>`UVYU9mH=UR2H|cMP
zPh5LBQS<4?MA_AAA1-pZ8GIx2AN!sV-l*xK^%r*48BcU#%<hw%eelY%?BxLmXJww*
zx2G-HEQp!0p+PQV75^j7e;U6Q9Xqotjbk$VnH@_nN%($S9eB!HXlIA*E8cfKNxnB~
za@><-HWpMZ^ZN3QWmj2w&-dM--<Qq$_2kgCi|x;{YF2OGan)x@SLuzXy6oHi?xkgx
zcJA$oGIijtR|&S&%{%A1X5tU!qOz>B!fES7xk3(Qv$*(7ZsUISb=r!QUx~gppPJ8}
zne$hyNrO>y*^09I(kJTQdvfBu`0q-sj{Lj)*6nQ>!l7j@d9DTZ)nzM|7pL>Qo~V~w
z{e0WS?>YWUvP8=_ZuaI5`Ss+~sbgW^J}%q0*K_}CeV>``H@)lMC>@K`&-S)7H}uT-
zTCn@bMQ*+?PPe5VZS>+`6>R<HZ*A~)wrS+X1OA-K35(Y_-_+c=&q*XOJc`XcUiJUM
z=Ue{rpF7C9NMYW-S950To_H9~^_NlLZSS`&$1k`%T$bU&9}<*eKHYiutuF!gR;jX)
zSNA^AXT00$czJu@I*0Scnf1$~r{;Q9C%L;lD1EHU{JUzqobPuYlT)iE-`|`6q%6OF
zL-o4dbr%0r`M+DHx~`cc_4=A}&XWkW;{Pems~^R^jgP8I{`W%i=JoR94yWI#q^_8G
z$@QDjJ-O%?YC++hGf(a@Samu4&=IvFV~c_vtg~h>p4ic1E~x$LthL7{t`lpt>aS-z
z`mS2^K|kSP>2IlbQa21$4A%Fgb{%z|__o%sU+H$J`2O2#&fJ&W`FQ4eeUp=RN1sl7
zK7Vg{#j0hA4=&3co%B&?j-zDi3SU;AhdV+OCQLghsu?eH{m4P%=YP9yx2_EMWcicx
z*5^;je)G2qSI_+`l@ubVHFM<}1qa6cB@eV*>ys~ByHvDxQRwS~scIHJTq|<7)YNae
zeR|g^ufGd(|E~0nSP;t<Jo~Wk%Uc1qhu1B!xcNCmY2K}9i5>Ns8w-t>zHU7B^Ka!|
zYr`*njdP-7PqVI1()*AwsdstQ%3V<h^W*LcK3MiCZjVK!^j=<5#*~s|wiWxVm=~Cz
zdHq(Dr#82~{{DxHxy-+R2bK4hyzz0_zV*oRTeB|<X8!QV`f~8)L*?l0_B)b4PpjFK
z9DY4P@n*HR%-Z-WR>4V6>f1I=SubGv+I5QTf>mCfS9F#hl=ew1JiYWz+QM9p*HsbQ
zU)`QMDNL^<R61++zlL9WksnVV=dd}xa+_>;Y}wJHa?2a}1=H;6UCM7<J*+3J9PPb7
zHQw?3wn^!Wd+ZD>c26?+=zQwbj1w1xGV?OG*?4Efx~~t-_&vGym8gPg<jnsob9wa+
zJ}&#o;vOCT+wQ8WmY%rR^HApBRWf(g-|s4KzyG|nI%}J}b&<RKfx9Pm#l)@8E<LpL
zm+i%0e48FWy~OZa>$mxe=7sh8RXH;H-6iUab5x=~2yb9xwTKE7dlB`s!;&k*O1&$V
zed|Os!R(1&TUFNF?GN3mV>kKB<F1GwR(BisK8pWeximhk<?4K^tNE)o-Th}&z2Z{e
zeBHjQ=QrN|+x2EcY}~iY-<ALV)@&DV-F#od>VagHu+1U;j34f^-luN<+wuO;t9o^>
zwTDt4X1=*K@%pdBrH2lyaysN3_<8wIYVmU3dY|<D%&qB#)iq}$YK6ZUh(7vbD)FRx
z;p}?;+wF<mdpH*7=<__3PCmV1YAxrl2a*{n@~wImOtWqjU+AzjJ8Q=iy;Jz7p5u(Y
zY`%LKt3Jr4talLEZ(g;7Yi<GGtOwFNwzd4OuMz*gzTNYiT8>bV!Lj2CC;AV`?PHny
zhh^LE4|m(%Z{PTzdCJ?sjt%uLGp#57<9#D|Y~j>;k>~P<DrFw)Ct0`Wa_2mn`rtvj
z;^AxuF|h-O|BHRS$*X6_S7*kw*oH|m$9yrb*p2nx>lepFoK`%zI<akU*IFjdDcT2D
zdFKn9eYv~-Vfv4Mo4!b1$(8!Yn%3et<KfyLzY5}xZe#j+{=u*13ul>5i8CzyQ}R-`
zPP*cT_EPg3;oj44a#`Hu{3BJz`L>klsV$4=<#*x>X8zaww3oH8XOh4lk+hrfi`MW>
z@jkwhWyekb3w?$!Qp&zu&G%OQmU@Fn-0{fQJ5%<{x*c$k{?A)~!QSKX*3}_Sd)a@!
z{_&4x+lK3jvojyR-m^&luXEY`@NLyUO>_4>e9FH-_j*p<+0%YbUHiqYe0Jy8oP5W7
zV^`v(Egwtc6gywX>)x(8%)Nf9-l6P{?bp5R4}G8hrv1XEywBNjX$$6EnRM5DUq<<-
z{+pL7mlW@GT~jvc-m>%Sb2*#qb8pn~lzeeKw55}Gm(T76Icj>G(jC5W!N1ZEE$i&R
ze?aBY;%)=3|9#K*amGE<yxp4;pM5e<WBm;V*+X&MyIbZL-S)Lm)499BwMY2enQhF`
zTTEa6-d4u@y<=~7^bye+@6C>!DLitqKH<0Q8+o@scQT)~c_uRKdRQrO#Jr{A%%=Ld
zjO522^BXv~Ng95&*s@9H5qD|Ba&P|4^B?bvcZ><1Gr?A6&$PsK4{SHImM_RPy#7Hw
zQKHz>{8+qH!q@Ff`=>4Q3ZAiYUgTdpyLjEou=z22BdV5}gugOOXZM=Cdj5_qzVtIL
z+kP)Q?<_qp{DJ71s$*Z}-#tiQSG7<3O6=!3d+J|)HhwMGel#(9@!NNwJ{Q*f3w;$+
zFE=S}n_Ttd|Mvf{%db9{Bzv-vcbb84F-LN*Mf2n3cS02s>R;K^6qj#1al^fcZS%jU
zZz=@eyxbgcd|~g3;@(Beo5G{EoLj9rxok=NiUYib?CRg<yc9q4U%j*H{NsHFQ9PU7
z%Ts%=ERKAo@7pI9y`p{}(;7yJv#i}`O}=~=UEa{S(p~)7HMJM-V>*7Tyvwsb@3oxw
zqtC>{FCuR*Vp+VH;Xm(>^UPmBW96s|I!q>C2vD59mz7a-vcvpXCKI#i6ZIJtCPy9N
zsW$-45EyV78=G*&azSTE3{APBxeU!fB8Fy=t=&e3T+v*nMxY4`6AKeAQxhYuSS}+|
zE@M+J11@7Tkfennmzj|PS1gyY1s8Z0#>9jxn#<VIh|9#(9Avl|7kCoH)EK1N(u^yX
z%haTv%M3I#U}galGX#m5S#p_!M*Yo=Ktcu}rm3+3m#HyG(%g*895mNrZpjtRWdz=a
zZfa`GWol%}70YE|%w++Zday7DNm`h3nHm~`ge|!&L8e%O3^XwTIVBb}t__}ZnH(C<
zKl#sm^~vv!a<K=crkCa<7EOLwCN5}fYQd#zWN6A|2%227G_sgp$<C-X+4q>5unEY;
z$a5Jcpl$9NjAonnhR$M~{A(UBXaIfkx?@6{Cx^e2X0(`mF+c$n`tp+x7AG;88h}H8
zvujBV6O*aI<d5@>CSNUU6*dJq64_W&<H?}8j;F_kHZL#tWMqU)eH{HFv{}2dUX;ny
z2x0E)zEmbt6R^3Hi~3hHnVL-gINy9SUm(xqqzTomphyauy#A=f<UbWMll8s{Pu86H
zYx1p6JRtsbb`D12&2f|F@=V^bfM@cZ08xlrt>-5*T0o54Ki_b2#3G)_f99_ivII|r
z*}-RI%nU(${HH(RWE9@~c|i)}^x3S8pa77WzEpuxc=6;#icDq(Fqi61esnmD$;=3B
z?B=K=35-l;M&J;5ceItw43xZrrvGJQ1Uq!PsS=~`<O9e4Fq(s{IA*{oy!rd_M_P<#
zu=FfH`D_s1WR1_EjL;-K@3RS`8Q4In&wP`Gzf`b-BWwCXd8nCQMvTInuYb{Foc>Y|
z;!Y+@^UVg|a`+MP)X8KHiKEF;N0g^`voY2(nM2~~-BG^D1;HHCgV-6Xg~7=bIl|0A
z5vI;$X|bJ?gK;zC^w&0w;1FiAwA}uTlktuSlQ~kH{SOwI>^VP#$s8PS4ve5EGn)QD
zp0P&=9AEG>n#E-f4gh9D1B30$6&TYP89@n7o!QX9aJ#t@<7OU4(7YiuiTw}e2G7Jz
zx7KG2g+!nOqXj5PKxTvG>M$bF0vw6Vh6YC4PZ%&pGBR0!y~1p0V7%SOh;bellLb5u
z<)Jfn9MkP=8AF&XAdxwJi!Gx(lLa_3!4^%n4ds|FWye@kZvl>0B=1;&%AEY9EG}ac
zBT!)lVp@Rw3}Tp?8o+nAg0nM7(AXTl4$T4-p&&7HLt}(OP@w=4G&V$-2ui8>Nm=z=
zrY06}?UtZfMvzJ)gl=&001`7cLTI-HO>}|<O$=a;v;_GCBxYe^47bM;<{KkpQ@BEy
zZww7Ar)S$Ua@AXcN+yt2BMURQDwtP{Ee%cJf-tX`7{DjBEumiFGBq}U`^3-y<`rWj
zxNbvmfeEt5*vJq`sTkZh2p<|67*A(&V6+kg*%-uS1ae^zmodmYL0ra`)59DX6`2hU
zOr}>lFiNvnnpl`jpW(n*TyJP#U}33X00Ihm3S1!Cz`)SN6pNU-1*SSna||(4V^d5q
zGj#Ke42=v76%6V@7Q!tyGBh?t*KA~HYG8t9ppl`OsTrD>p@D%Jx&sXjj14ixOe_$N
zu7~*8(8$CPAqW#QHpj5U$QZ-NMurv!n2xr@aG;TqA%;4`dLuJ)bj^lF7AELEHZ(Ob
z!tjZSC6Z5|jy5$gKv!pEWMpQ97FtG74}-!V5&TA`81ZCiYHVPPrrFTc#2no~LknXQ
zjL@<$#`Lj;u@RCwko^V*h8AWRiN?^v0yEwXEKSfYHZrgTB_z~zWMFB8q0YkG$N<eF
zMn?7KM(DmXvNW{BP-tvuVu+^M*xbMrBd9HnEs=Z&a+HCwxdldUGP1NV0q2N%0|R*Q
zo0u3FqPyDI!oUpOViOZ%3v@>tTbMu$L^jXD&;s3oCMKqq$mW5=-^9Yi7~Mb<6H5d1
zP%t$&HAT-QCKhHGdQB}1F%qGPr2&Qm%`DC8F@na_!q^bqVlzui19Xc`EzFFNeF6$=
za}yJc&@wkLGyn%RQplK_SU?kDJtFwc4NT0@4YV-83<Yyj0~2%yS{ND{qi0!jQ&WsG
z#lqCU7{w!?@V78D#z@r`rbZa0nT4Ub33@bHSeO~1TWn!!VvecK0wd}yOfAgn(G#47
zr2$46U}1?_M_5=IVnmaLrJ*rK$XFVhVuY%tAuOcp;i=!k($EsqF-90U!ot!BBf(i%
z8ku7F*wV-xBV;U%EK$YkLDiqJA$p#*urxNtB8C}+md55N@o4}y&k{Y`Sy-AFq9;NN
xOA`|;zB55Ct4oR!GjmdlxNK~=^n)|2Qn^4ixS|K6I=7{%xgnRTs;j>n7XVA!NJ9Vs

delta 13127
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

diff --git a/material/slides/INAF_HPC_course_hands-on_session_presentation.pdf b/material/slides/INAF_HPC_course_2024_hands-on_session_presentation.pdf
similarity index 89%
rename from material/slides/INAF_HPC_course_hands-on_session_presentation.pdf
rename to material/slides/INAF_HPC_course_2024_hands-on_session_presentation.pdf
index c4fcb149f80e5f5246499529f38bb7e714b074dd..5487794d8ce31860cf70f9aceee91921f0ff3a6b 100644
GIT binary patch
delta 25141
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

delta 23382
zcmaF$gtz+!?*?9``p~m^!iEChggOs*D2KoEbd5b<@uyrTOS?-z!z6(5Q2=8uYo<3B
z|ACG92U^peIpkQ5#Z9}bmdUNSX6wfv-EZ^1&Hh-yw1W4^wkYYGIbZbq6PVnjn@_r@
z?>I9<?(~v7vW;K$DuSo=-)58)w~$VrA@$_G^NrSI#hC|g{rYkD;k^3B=I@6lTwp8G
zi=HB3*phSWlffK0og)<-zqJjfn7tH8Qq=L?wpHxrq%+4noR)KU9!>}rm)<TR+0B=|
zCi3<{t0|}NSCudIP@nP9N_Ev^_cntQ6P~Y`6tFf|{;ljDwHp?ib-c^Bp1(ZnJJ(!8
z%O&wf+rL>(J<mS%!p|3LXPC8553bj>a^JFIF{_`<+GPqox?+2bXPr28?Vi-PS<jNs
z-a2h_V9pLT7yYuj*tvoG`1bBtUi+fzVv?*|-;+IV?&1r@D~#+PYb16k%~?DnX|BjM
zc4yg)J5C*&cIroL-oX5Knf6by*~)jLp4yl<-(g=Lt0K>sE3!4%=j_b)UZ(fOp1<!&
zsh@vQb4~7CnfeV6Hc2o3`*|yiswJnTQN^W$hgax{FAo18^XpY()oQJ+b__`~Z@+)L
zBKNE3-AVtBGjN62uC@!8U%mO2TmJJ~*R$iF{55M3H`v8KdvU6jl#iaF%$=Uae;Ir3
z>6}Yz*2{D=o^nLUaq<)SGs}-Jo3d-m)!eUprNXYSuHSrb*9n6+Z&M_n*seC{|35wY
zoN8~*iSy;F7w%QMyzay=4RN1IN0jGZ*xspsM%V0Jg3R3KYM*Bx)!h;BuDW?qvq;>}
zb1%gFYuP59J!P!CjAM<hy871{UrT<iU&Xt1soYB6()h1egg45qTF$H?e?PqZ>f`#;
zUrzsdbl{d`@}Dj7r;|I@r>3}D<^)c1S4ugpn-qC2LR@Bh!oC$tIj$yb-oyQ`wk3H|
z*PI}|mw~G+Oc}S$*_2Y!Xt{RL<W~{$qSmVyT@1`~E^+YN?0)RV)S$aL=U*5_J}vHv
zSyF8I-=b#cUzU}7UOk+g$125aZfrieoAo`T+2jpYn>XvRf01W2o2;xJIJr!3CX=E0
zWI=roB|{4?1Fj%0{h-w1{L-T2)M73}ONfYLUS57lF_+Qgjp??Nr8Rh`+g@XosW&nJ
z%i7s-6_*sHCgyTg%-I@#J5SnNVCe(%YYrFN|2a<ZaCH7$_cFSBtIBSsnqZynrSeVN
zHU^&XocoOVm;X!lZxgh$roRpqjbGKe<%y!D@f=HIrTmo%bB;X^y?f!#gTJqN_b#1N
zsMqwh?X}6`+sBvu*tPJKRC;C9z8tGb_0r3elRd5H{;2j9{~|l(&ZWKYr`5;pfB5Cq
z`V{Yfbvvpie98XxP1W{b@ogc!MIWkW3#^`U!OP7wj%{f~P*O|q!d_izpCZ+s6&v?#
zYuy@RxA(=-(@)eA?raiBk<~uAwBW_7d7&Jq?;Sild-Z+QwfEF_`|YZGro-`ciQz`o
zX0by%>u-d-T)h2f9E<XkQ(t{|f2djM!<D=@G-K6@uy!kfTimKM!b8~KicaQ}l0Fl8
zc;*zYMQb13GP>FSbnE}r#*QOT&qZ%}eEo{`R#Vvoxy|cxU7NR>Wa;;&9y;Osg3bF^
zq(*arT%Yl!MER39Pg!L~U)a<*N6bxKV}167t(%TG%opBOpSd*W+}s~!(<JrRE_bS2
zX3DRYUUNI}Z|;nLe`SiE$-lVw<L~bNE~Pl7Bm8ss>z?*Zu`p>+QjD-#|N7`3^IyiY
zllq(emAQn9tz_Qt{gbPa>Nuz;FnL0~+ZS;w`z60WtDAehI1uo3&r8!>i$$O9|M72K
z_-!|r65qY6+f^IpJ1?#G>6~qMZ;fJzoN&#-rD9(sj9AaE;c;AhV#-<Vm=w((hlPdv
z=IhR?Oy2rxg6qVtJ!;%Whktjx>3N}j_HkTW3e%egnVx|ELG@m7{VPtroqW$U*hpR6
z;qeX4XLH0Cr_YF;c=|Nc8iTcW=TA)bvFUYl+!}X2Qe<;N*NWqQiY2!u2Go1m_`S~F
zn*GZDNb5D@_C<15dUx_I)v}}}%O?cxE!A|&ecG|?OSAj!50+}@Cz&5#?fYb+Mn;fA
z;kCqDcTA2cZRI-|epF_9$aX<i_OlC~+Z<hNTNGwdXutF0jv0opa~4%?VP~Cw=48YE
z<Cj{~%Of<_>^A5AJWG%Jc5?gyW&IOR>nFSs`@qz<I!xwt#J#$A|5;L)9=gvwRJow(
z@5I}NlP33d1pS^I7^rc2&DKS+@1x3kx@CN1BCp>2ttG5xkX|VAD)eW<#!P-bcQ(D;
z|MQPHt9Y#|WZ(=cd-3%xM|-EJX^=&Y?+b2=<t|G6*9yPi7E(RG!b*G9qVk@fS9eLI
zZCO}fvZnOyM9)=nkEcBPz1rmcEsMJf*|V7H1$C$G%$ZUZ*jW<XDd*}WdEVmOgO=!B
zvz3qUQ;eS^tMqWsjHM3OBBeh*KQdWdIZFNL=A>7~KXz^VVmWWFnz8W8iGCkA%l3E4
zURvw7Dda)liT<1MmS+$C%iUcvyZogNhiJ?DyRQnOqmI@GD;S@UysdmQQ*F*$@joo;
z;!9i2CUM^BEl6`Z61uBI<7_3Pp0vTeuL-`q&z|Of_@^!*pJTK2sC2{eh4If0Z@8o=
z_w`9z+VzQQR-5)k+$mJaTP`<UJ#mGJPxL~;wPii~^7`ibuN1xga7X#qSAX7oIQl$(
z#rvBDT&Z~};PPg2lqr`Ms0hkW%HlFKG&BdvfY?TcTn1bqMl@F}Ow7=7GQXZ0iy4=Z
z(PY~+waMA)oRiD+W=(&6fl+AsgLX!9Wg|0iX@*q#8JR;wV5Ohs^nH^VZ5WNFGfFdQ
z)EhxcOXSjTZ-jTTw5x#J)V$_y5%wL0j}?|C*x0_ebkdwAua$GtE9Fgr2jj->Ny0Ka
zf{sqCKXCqme9)IKZ-S#N%am?LZ%W&L_vO34zh>XeyIUkMY5C*XHU^g-efKy2GtFC3
z)kS=bNy+g~miMOY%iB?Q&AQ(6viR4|N!MnZM0{8}`OE)V=YL9<6rC>LAN!~5uh*y5
z_cf<|`uy%y^P2e2*ZqHr^xtkP^f>l8c~RurgBerru!wFIdvc`d`o>P(EFVu^F{7|^
zxe2_}XPevBdzmPz&Fu($8l$=Lz~hxKXS8PCwB1oz`nCJf;_V{WOJ=5PDrKx+<6EyR
z%G>ZgbH&T^d-|(8#6lcvZSxH8mn}Q6>wyVhX;F5PUkm2~N0zg`CXU=sFDCa^rY{Zf
zTAaCjX`xeT^3yxJl^RrHUN#>t{B`5c61~%mhlS6XFJ7^+&0Tm(Dbt#$_H~_0qFc3^
z_&w%?%FS;+aqXP;^#(E1C%h5P0ha6Cw9=Q<9|+KUQRT9Fr;X?Rdz{i!xMfNNj-ALj
zEqY&NRdvt8dUI#%&E+-a@88b0H#uJ8=u=<wZP(tpDy@szr+D=Ao&Qv4_<LsjC&u5~
zznA7OuRr!rvdH5*UzND+i@&|cUGs0*zy5pkclL?ceFy%%?ya`o`&jY+#PfVVH{U#_
zeASDaLt|zAxe9h?yWgfeYxz%WpNhV9Vbz_=^*-lzPU<U)b?TOCS}~P#?Gp0^&(?ij
zFh@J{mF&NVI#%l(M1H%3?-SKJrKf&-v+}m{zkD_an<eUhut*KIu}?m4_&3vEM&VPB
z?BiJV4*wUg=EN%8I==h-jgGeyTMgr^4_*|x$QfDL_(HYL&7xlJ@%PiyGha;*p3B^_
z-(7s#vEL=1_i#L8ct5fA_4AA`r~4;gk3C|sy0z8ipON*{E!!q?i?@95f5xlw?|qzk
zbYc3U1GWab&!%15r}VZbz*x65anoiFJx@pFNgaAA7u8+mHW!N=UvlA@oaU<jRWV|x
zD;I7lzVu*<?4<oE$!#|@D(kOq+EnAT$@<Vm^@_JMY*JqzU-G@s@V9`g#lg+8*Y3{~
z=(Jehdflu|_0hMkr&GjU?5Q$P(feHH@cQc%y)&1ce(lisD;t;;sOZ$gFn1&0gcDPa
z*i}!O{+q?JdXw%-&GZkg0?qNKqrL97{A~#O?0U)5%vq_rfiX{iu2ekRwHtY}>bLFu
zA@bl|R_>SnX9C@_Z{K=J7B*fvpIPdAbNQRkslAu9taX>{@z0;AEY&M`^ZX~Xse4YF
zJMT=fza96i=hLB+0#@>C4lXe>ycwR|wp!2k+lpNCUb`etmi{Nc-b>uqe=J)cl@-e_
zzG7mR-l`aD?M@Dp1+Kh|4HI2+Lw#}_*1oIHot)Nvj(3ltVaOQ?=hi!?dRAq3zg_n>
zkEvkW<eig_=pK0bZp{%fULVPTjk4Lir2!i>536!ou|4$`TC_C$<EfS|<_Y{t2TwgH
z-nU_X;FINt#CUn4-NbKgycQtNDQy%pNujrISx{5cidi~SjI+cZ*y$uBKUl$h`~*YM
zDG{+>F7<`2x>6CcQMTJBx1XK8ZsvrL>7qU^uTsL7UkO=J&3UL{qgTS!hNI3&QJ4KC
zZY{}O!KjyI@VBT%HlFSDOWzL<&z5%RmCk(my+vU|t$y@c_IGQ|Lf2Im$JSPQG%8I=
z2=>jEk;u629$)jJuWosGjm*oE?dPlCzk2yY{`H~r9bBoCgG~jsKt&*^pfxlyHH4M4
zMxZt$ND!&?H8z;exSmmZvcLn0$&X!?Cg)lyFq%y6vr=R<1-D0Un%OZk8Y0wqTRAbB
zf#uCNZ?N)Zo-A%<GTG41iO~WqXbINjX<x)N`LC_n<cI`?$+=eYOeO}C`>Yh0Obn+B
z#4&E!%;CI~Y4UDInaKeOY?B|mx-c3|b_`P6?B`a&En*6-AuP>JVeU4bww_UG@}EGL
z$?9(Eo700PbBKb<e~?cs4B@^rwg9<OX|j=>;$*oX&&{)=TUeNkEhj4`2s45`sWdq}
z!Fh5?w8rK`2`^aUVO5cZi80I~6C<eQMwW(_a6x03prN@1T+jq6XlQ6+02hS0-O$Ly
zVDbiivB}bUQm~3m0$Q=@PVWn4WMi@9GB%hzCCzmD(@Bguj3$!>^gWeLK)yn0<(q(_
zF^EeaTF;ppfa^IX6Z7eX0?g|5CZGrn;zF(HAkBP*1^hl2uDEu8GvsH@V&y&i`{~Bk
z;*Hq{rfY;fQsH;Jt)ekyiQjL=+BfV^{C|1=?cbK}@m5cDeU8PZMMu}2csR*;j^&)w
z^NLhemcK5`jClFs|K;quQ%ffVsmjmY^0W7-UEHGm*X!?8i0?Ubd3mh6x44e!vYLg?
z=fi6b-ETOldH+}4uiLAiPul;-_VlGY@8jw&yjuUGJNl2n^~|k179BlpwsDQ&DJkEa
zMSjOR&Ky~p5ac_%%tW`hXw`*TJ4M$fRetsM&r3CJRNL#}DIT4<GSuPvw=+$V+sfkX
z>wk7XyPdx|roFprTD_8{@Rs5$mriPlGMW1RyV+f`eo}DNvR~_Lm;bCxi?Wp8>v&lp
zdUls$PKaA)#tvUIsfElIWm_K16^WA8dE2`s?nPac@pl_e5ytSg7Z;b^o;vpz6MKhx
z&5ETjGDO{_w|;iA+}pFuWm28Ut0hh?kLK{*a1Yz|(eZbe$y<+uTIt61D`#F0j7pPi
z+-P|rR(t-lWzPQ(a*J>6kC~~lX6i{(^?hL>_0o&}8yvHGTwe3~-EH%F3BKx;F7|eH
zhVT729zI~`Sn}lOjvw70&;Q}PpK{)<vSRYz!~diUi>zih3x9j>(7S{4iuAkQ4JUp6
zXa7i8!1mt#&hvL)56)L!clt@%tLi=VAHH|24!C!q<?q3-c^`HkJo#X<VEwV<yZ@Z~
zamsvFY3`aYdvD*B`S@}Dk#9`ObGgNz>h6^)JQds4ZD#m$mdRTWEvxn2t25QYmYim0
z<LD2vdb=@3#Nyz;!;H?^9P{h<He3v3VOKrQdVuAd^6v9(IkRmKd==PcCduS}z{$+G
z`p~!f8;r-)7o<FR^1c72;O+GO8!U_6-%Q{QZ+5hBui<5X)1+kjH79AZZB|3U)vC*J
z-4B>$ei^;x-S|7%rhI{P<QKNNGMlOwObq*W^YZe@ox(Qi#-a8HF37Q|o0OVvovXgL
zdFvMUq>V1Qhl|#FSF%{8x2PV=>-)I%>Wq2ZqO)b!8`gVA2v2K&!<Kg=H9t1Gz1}y-
zD`TI3SJUj*In3udI0Qt>v@2vDRQ7zEF!#wny?LfJ?^4g)UAlSI<u^8$G+SPW7hY5U
zb2mLXp>VhDLi1}Jrd_ugnfFG;s~?)=I%z`k@#7Dd_lOoYDoTD)kzQ_g(qQ%nwRidj
z^?kpkdOm1Y-Td;p-nh*xP~-KUSE6NmZ*lrrlwb4BV)&T&ty#oNYWYppDT~b(*syif
zu0F{2={NVo=N9rEt_{LZ3n#CcVESUhcgbaYY@%yw+cc(f__als>^&=ZKVrJ!gmn>f
zCpdrS-XImN?KSWHukxNPjH;L2Q#>MTqfTA8;o|*T^{i{&JEc6i4@ULgJJwF>j1p0p
zQk8l#O?BO7A(hLQmWldWCMy^5`QFSh-l-OL^^%p?{HYhbezq*~JLi=lsxm2cp+@F5
zL!r5L$|@SVWu{w<KD&OIq|YUm=aZ}}`tY#MN!P8$TuhekbIM#EwMH!znElf9<0sFm
zdwyOaC)}>A+vRytzgJu38f!#)eL?Edj)UG$HJ)yZi!^<&w=atE?DK-7WlPNe+N@`}
zXeY!JbtmOY<lMj2-m}BDWGv}jx+m*-*_P9@&pn?RmL=HxRa+$dR8ea8dfvZr2L<*$
zZ@y=q>-uzhXh`ha66u0-$=10H){7=Y_ST%VOTK?D@Jz>Zr4nOtk>hV9T>q`H-v6S0
zj>H?jM=xtR3X-orC|?-Gkh6cqG~o`fh0~vGPF>z!`aJFK&s|Hre9cW1cPrk>e7!a|
zBU``yYL<kSzUE;+-?=*LiuhN{Jb9Ax)asklR11+`-C8%#J$v~{*o#-8%JZ3j(WXhR
z&YBnY?(n^N_L$VtPzKZ5X?)*$E`&dnoAO1(OR(Ny$(-8DSFgQ_aofHn)Ah1PhSRdG
z!PY^dZ`M^kd=_nJ#FQSz`f|#C;dwJJ9<{iB)MD2^_A-YYSx|ie?kDAfSfFYQT#$np
zh9<`FYR?qbgF>pVO<}c`jSZLnbe{E$0^pik;;9O#p56R1Pwp9`1#*81RPFGw8k%sK
z8ci<LGXhmU>@3DyriR;RhB9U_)}I9p3N1@mz<$kPmUE*_wMKyUip-)P^*M^x+a6!5
z-}Kbtq+*7&bnBceneq#c+d14@(tqW9hPCs%EX~Z+>(ibDZ!MTMN7b_a{+~C`W@#&0
z#=fphSaS3?fB2tS-ik}R^dd4Zb)B@-TXb9W`nf9g%ij`>88i1TJUGGM=f!<*y9f2}
zC!93B|0C_k>8H{s_3L~$U8$GXdsq5Pwf^@M`A4O(GV5M^SfeJldaIFChi}7*tsXvW
zK3PrMlIYC5a%$+zu=lzdtf!C4+g8jv(_-?{rDsAdtI(9=D>HAl=H0xpv#R)`@P~W9
zRjxl=GIwc*SM`QzZUVhQ_bvx4pTG0$H?1hvsW0nif1L63_{_#ldKSITzB#^U`V1U1
zRhyov&04@(@#MyZJ)46VGHh;TX3l9Si`x5L4OCbBdQjj~Z<hVaNG8DMVU4D%v$n-7
zhHIRuiDIQ~DsMGfR@68gj{LB~-Dq2xT#TcXnM(c?)6S6h*&51eoQ(_lUZhP~v~%8t
zyVi-!I}X%O<vS!HnJfEo>B3vbHGXZcwORhZF+XQ-{rB0=Ug(RyJpMcX_+?H-8A}D1
zq>?@JKfC^S|2Jv<#_M;#RP_Em`tN0tmsR%M;&0{dr8~cwMBjY9Xj13D<EIMUOYO>b
zdSAYJ?tLs@W%1sx%6dOGpPqVNyWntL`qs)HrO)?#_ME=|+27dueK+HGEIN7ZmdEu~
z@1mxEuUFf)-QuO&4vqAT%mW(RIrSDem#Ajmm=LmouV~dubFn46nb`#8mTY<OVTXc2
z)7`&}k1GleT|B>qNsY;^wEN?`<J^pas$0$CxYn{-Renj7Xma7XIg@8=XNk!f3BRJv
z+Y6P?|CYS-jBzouq^8N_l+gOAo86i^>RhD7OqMb-_31Efx)&qV-LkXi@M^6tzhF0)
zWNl-~o=BIn2MLS$W`v$xAl9RPYek=yZJbAXiKv?-w^QPRg$Dy!=Dt!_W3_aXF>}d^
zHi%D2+Phcfo^62PKTY>QL+*(E3-~VYX7)}`c&V9?xL9-pe}LFpwVq(NR-yX1Hz#ch
z=A9M2I`M|nmQOJpOXhYPG9PD~ocMgh!%)@ShzoPNMAzQDec|0ZD=Q}3c3s&=`fZh2
zn~Y=%=M}BV_veY=IOO8^Z<6fe(k4@r(8#hYs>zpMsNPOyUvr$T!ak`zXX)wd#p*kb
zmA#tP?eBMNUd=hX<oMpelIhEXT(ZC4sMoYU8Wit)dEw`f=h2~VH+FeWJ$@y1cFz3V
z#f$nUU6>HXU)DE?@5bjzB@ur6G}QfXJT7`wc)!f^hKpYMj{lNUpIP|txhd;J=XZat
z3d%3Z70YN}tMWF$OXQVCWo5sJ3gbnSoz9DwFW<qnz4esF78U(Fx?<mMtPX$kQAqSq
zn%j!{2FW_Fwg0Qvd^BST*|spd|G$Dwsp8}V3?(niKGn_Te#P*1qi$D|$o3A&GrY^H
zHaWds;C8B#sqAyjZigEmZ=4d>oIPjh=WUVl?yhYIKW6eBsoYR9S#phu(u$7t*}2DN
zZ06i^^Oqi%@ox4Q8~deCLN0sWllvb0c=o-P|7NelO?&F!O>Jpb-s2a{bi?&jcc9SQ
zL@wLYnY~)fCzcs4N&j78?{R*<x{b_IW46q{lD|dL`)`!zn66!BveV`N^QeA_3_~Bb
zHxF61^as{(HAlVO^D5z#L;BXtY3epxx81XP9Tgg(H)D_JHM@i@0q5G;Q#)o>yeekB
z`f1MZZ9#2W2Jvp^>hqe;E^zv(;CgCv;I%(;^JPPiZZ@xf`Q7}*!j-cgtPaSyo@UE9
zGiu&m71?9Ev%Hx@t>$fBa$jY|)Ub@Fd*_Ok?DXr4+re67e6_nf_df?)gQM}|&Bx~6
zpOp77b&J8qsn=!pPP`PfJb!=Cv-f9j$V9$AIDJc^V{laaAHm`+TNOpu2mJ1~+wm_U
z?|`fQCSI4>`?-AHWW;^CTVHun{;m0~ho>j1CeGzr`CR&98|&G&2S&MDwkmFoOmt-L
zUn5X+MOiz-<G;7j*2No}^4B<A-`}5q^~!YXSVkFU6AQ!bQL&8WnvmW{qPm1IxC(%b
znz`lYm6&rG8KYGQHtmdcjP-)~OFfS8Pn^SkTA}%d<FXaMUF*D9%x-vmJH&Lc>1lM*
z1k)K0Zai#dkN)Jp;f?%@{}X@AS@rJayqA{`=lOqqmr=g^e97G4=l?>_Ug2KX^5n;^
zFugS;AO5dS|HC@n$!ls&$)#uN+ulD^{PVp>`hC;%${(wCU%bTHEv~(<w7Gu%r}p|k
z(E^{E;{V@%b>Dyggg+<iKgHa-|9+m&qkmKCYp2Q|dhOc3)9IP3Z$fs@Cbz{iR!lZj
z;x5#hab@{ht69_BEJHKi-jG|XzRB)&d-&#=4d4z$eCEo~hG_2|rtLBN|Gw!~|9|Pv
zvClT^59eBYPn^Pe%W@C60}(gtPjY;Eb^X*imwI3Be$9J2pX>6epD%c0q(riV3tM_m
zX$bOeKk24i!q6$JTcO^1jV+>Dd9C=YWm}WW&pISNI3-{k^LV}XtY1QW2DT5K>&0Z(
zs$X<_yC=Y}KhQnR$$g=pmW#oh%Zy)695b`axUam{Drm#0n?6~`OQ&qzAk(<f_r*J{
z^y2FJ=Ksy&dRg*2jRGUICubY)%h&iNwd~(_<p;%IWcUC3_c?#Rxy+xXLjOK2UT=Py
z)6K%8LBR9m=fy$#eg96%e`Nl4&B(rbgGJn*9Z&4y|Gm6p`|bCm=A)@9dRHDzKf1fS
z|NPx(8U3B7`D3D-<~$Y^_~<LaFr`7{o2J2;_Z#ou{C~Ti@%Wp1ZdQKg^{V`?9H%Zn
zJ@{>7{Da2FM;}hAKh<yd#Jqo1^r1@aIajBd96vZozP33i{_&Byu4jMGIDF`Minqnd
zl&1F+!(=^OXQVi1vwibe&cA|X<_sQ<rK&3HkL74Ew(gw9D`xm}_M*+X7OagOn-?8&
zk4`kpIa-&TznS}u((d{ra{3RG4xT&wzG?4usY3giTr63l&C*`$lo_UelG>E#ymI@^
zP_>)UZ@6|}5Dt#1R@!!tyZ>G(%jcuBo~9|DX}zEPwEvRBM7g#vGfX&?)~aloztF%k
z_us|N6(**?|A)=5Ejpy7ZL9dE=6=NMI*!z%&*xuon(S+tsWNSfXdG)rb-l)m(D(^o
z0zS??l)-h6t@Br=dhnEQPa3%|C@FC$v>eT}V@y%hQE^s@*f-~(KG%^7Beqw&RFis}
zGOW3`CpfY!pAh9+!ksej1DlA#-A^}pUan(Y9kpxQiJ;c6E}>2Wg)PN@e_S$b5J-Q<
zXVCKMo}2g7<F6RgOhWwF8Ft4tNHW*6UXnC&e0HLm+2Pu5;}bQ)3*2_4tY`|mZ+KE+
zephF{>J@i?^L5kTobL274RMZ0<*6)tw&8`pc!m7WIai)lKGjZ~b8p6bR|cEwYHjLQ
zcp`o~Ml1c$yYaoWU{>>0rWP|5Mn%=+^RIs^%4U7~>?rHi*`+I5-W%eV=ybt<>cn$W
z^<jdW4!Nw@-1axcr`EDLdrI@K1-wu0oY|KdAgcKE`M&I|m0R7yTMm2{-aA=@;o=j|
z{_~Gz*D4zHnx;%#`9gN><c?#iMqF_l!-Wf{wr<K6n)}_}=gG@O2c9`wZu47xVAAaE
zOJZ(1ue_|c;hxiO59K+lO?zUPHzxOR+*+Rg<Y;VOz0?-IubU;N*DWoaAfz9@#y^66
zV|h=<s=KxuWTw4y?3#Vcp(#)LgvX4tK}!otBdbo_$vd_B+(nK#izh$16k)}wS)62i
zvis&GpL3Uj?Y8|*Df550XxA2zpetY2O>(*&>Tyh1+B;J3^hTzD{o9`QTO@Ayu<=ox
zo8HXIgYFyVC2r=aKb@9o?p!!sZB@h8z(>DkJop(|D_V5+NN$SLou{2z3V%Yj2*+K!
z<9%Z3_AP4{E}5^UCUNb?rP*yZ+4(+72XuL}HBN6nA9?48$5WFig@7ft0hj+p1Z*vz
zH|g_hx!V($J{Bl`&v-N|Rx$j_#Dcj$JiYXmyG^#VIebqxVD`Rkt9jnm?=Nk?J!k1k
z-lsMz_Y}APp5Jz^r}M*wi0j+@R_UF6AfDg4ZC1~d&ZVaB=k?uOnw5JtdU<MlzDA}}
z#mU*rD}(FGV^^iruU@eIs?X~^{<FXTJg>5TZQ$8-hOZA=w|=;Ovmnee!S-35!r~Q5
z_qN%Y&ewX=b4_dMNw$bRKLk&hY&5%BKjVl*-r8B${G3jIQ=X8S6lE=X>bSV|=3gZ`
zr3})SPh>1R+7TAUvY*x5@7pbLRe?p%T{v5IbY5NJ%))X$GV0Z?c3~#%Ym@&JX2kIe
z7iBrm6;l&fw9IL)sgJ^6BW@oBmAAaYE9T7MRukCtt&KB%(hXUk8#8bG{(eKu>dlvu
zxnlLNQ$FXmR9S9xQ%Vn6Wi?~N=8(C5?P6+Y=3bNaxe@u_@A~EF85@jO`yVgj6>hV6
z-o)wWoH>_8_})!%HGxIiVW0Tqd7k>*IrH*i^W5U~t$eq9nVoKhJT7lYj(c6+uz23r
z>jxhB^xRMETezcJ*tBC=P4t8WOXeMKHk=8#bLDGUdwpt~O?sxa><<a9Ik(EJS{yY$
zI=`>ZU-bIl+mFi{C3NGjFJuqOnsaW$DW>?XcBzS<9%>~oy`!+sN@-rE@kYgMhkqZr
zJpWS1$;UrMY+j16njL<2p?@Ri-}UZ#+kHFcGj<0RbxaU8tXOFvxX@Z_wb}G1^>62d
z25YTQ-n%e0tU$h{e$w$jEgFp_LO)A*&jf2V9?QvCE$8c~{n<~YoqgM_gSAQT8*a#)
znH}6b;WC5oq|)A%YfP?n2PFsbG^|kkR%0TR`MS9IRF0gC%*M{?2b8_HooYAAPp`3S
z-nwjU)s}=9=hw%|wp?yE_KA5=8N&V4o@?@yp3D6kHBW!cZe3bAiM@W}fm45XR884`
zshB_R`}CztWH#*f=5gFpb>!U!{~NsD1peJmZGUrTQoMG%I{%H_ihVMXyHCH%-}71g
zTY6b)bJ8@KaJ!#3t=}+KZ+Nn7=UJccmg~PoO;w!vciSoHSDR+PNiO3Sv7N8JHdjsl
zu#fzv{$EQD|2y0I@9gY1z5j9>3b)7nYMHI@RNmkpv%$04gc|N1gYEbDuF2o7YR*30
zlDD}y(t3uf&#Sy|pJYP>)H#-U{?x4b&S=AWI4N1AW{J&@#P<iK-+WB|cC3fX@xPeX
zqo9K5wUfi$YW^}VKeU%+I^!fp8D=9h!|4i>7+t0pO=8rYoUP8s3T_*rwT2!{Vhm@j
zk2syD>?*Q0OhwGqjANrC(?-W5%q6d4W2IS6BtK7lwDIu`#mSL94W2D?B#kz(bgIfv
zu%E-<SiJi7%e>u_B`0mUTU35^?eVp{p5KY?_tpzO`0}TfzeM84zb~8Oizad@HlJQ&
zu<=-t+|(Dv2e)p%*LkBRE^W$&djU!3rW<{+dv09+PsmH}=eP3D_s`AeuKQLkbNbQ$
zUvK>O&i^dl|AXUv>e6D*xz8`VY>)C@EV}Y!$OWrjuQgw+LQ+2mEo+$;_H2{u?XES8
zK0Vw$&$cVA$!CWN%hcqhEtBLTFJIu=kn=vy#{ReK$9JnO)?M5**HvoCw^LDGD-)J{
znK#Mm-<jJv`pr}8R~gjKTo<`-osZ{hqvaE?EV<Sq!!g-Y_p(p1u+OsKrwcbusZ4iW
zHO1|^ANS*+t2)tJ_U5uo>d>xvHeuQRv+1vjtP(0#e!dzwWmA{iWX;z>nOA);NxNM-
z<0QJ|e1gSln`eT(Yv+cqQ<^nhDSwG+;FgSVuXR&h+0wY%^@1<X7MHC5RW<#V&(0q2
zxl50AB#6t!n}!riIsdO~s#9D4v+VuV)AlCpaYh&V{o}42<}{R%a+oL}GyloQq)*26
zr?y92dU#~^+9mUA=FL&5S2x<}wa=?fy8VrUq*}e>zRve)Mz0EFwc|FL%jSJn$(paS
zxcBnf-osDiL!64gsl8n6?=O1cWc~i`UFs*RPo}loKb~y+uj12#;w>{hYnRnNcG+%K
z^GQ3imfPmNlgN6b$FE%?JG5LTIz}(f_F38S&UvbUZ^EYC!AA>KFDo4}33P20xqChH
zlj`k6cUdi_X*udQQ-Zf0-1Wo%renMJ?9(@SN|k&g`rj@tIpbFG{&98F`<I%l+|nHC
z3(oW@yi&aC?))ml-mCpY{)Xd$ZcE*lM07hj_MZ)S{6(ZyT|-L2+sZf4CTaei{^aeF
z$C=#KRS*5$)VYqcOnj=>y+y$bRj08o7047gxY}y+>fafAYZn=Ay82a+cNvSJ&wg=V
ze+%A(Pj>fgrwFLt>!0NOz~d{Q<HSj3vEP;~I8o1}mvmsq;m>dMjEpBFsGGSMujF3!
zCRD>=Zq6qEXqU(~lNk@*tU7wVVUvj3)x2JV^%^x&y*5XT*;d`{@)kB|c`*6K)Qjxp
zjX@d#N(S~x@ke$Pgfz>BF3)vZ*6S5JVbj5?*9|<oPv*?+(0!?V;KWM}F+Qad=5IVZ
zQm!xXZ9HdCzw60@juX5bfex}R>`PvFPn==1TiVw4``fsjJNhDlR^NXlf8+gh|IuIO
zd(v-=|Jds!IlsI#W%ciW3hKVI8E2n)x<UF%;rRfk76#*U?k$!_3NG;_2wiq<EIE5P
zg58?A=5YIlur{+7XQuZX%@Ej_Hc{*<L-5llI!s%_19C(@AI`3q`d6`c>WXc*x~m)F
z94!{5mwvv`yL*ysz>ce;M=E+3`|ddSZEfPaO)|ynrZ{C~a?km5Q|kERSl7it5j9=u
z3^8uniK@ruESqs@mU-5k*;^+rtK5*yaO~8TTMfnctQs=|yv|khNZg2zy#JZCrt)CM
z#mEq~OF9`cxl(I4vjrG1Sk(vp+S+t!!Iw-M)837HyKX<1(wVwB{L6B?tP5WE)eO!p
z^QyX=v%qvsOjOsE7pV!iVt39e5z;#vxw-A+t97e%<dv`YYhPgey}-3cC-zciVe>}0
z2e+CJEp^>+q)bTUz&+pNzddqWR&YLFI$>R7X&8t2+0}>s*Z-Z!>b_mB#Ii%#!g9{G
z9e*yUO}Kl7_hf2tlvU8P^1jvGW``z}J4H#Dn)*paMsK}&T=l(NkoGd=IeFK9p8Ig|
zvwTlWdE4~6GZ|%=jg1Ya|C!0?A`DvHf#`f18FE>eO-@u72CZ?M&O4j&S$)LqygMNx
zTQ^>5cU}@yIB|hc|AdtXY`=FuV4ab6NkC+h&!kCWOSm$$O>#XSimvSc+u&7`@Si!N
z`nOf*<Y_5t$-T9E-qe1}t(<>)V!%?7lA1WvH6=U#{fUs_jPzPLsoyWE?(q-XxJ9Rv
z6Zde(ZThhW)a&%_ooP|#{M`MKgH3(oB;~@-t8c#Vf9L)21OK+AKkch4*4>luWH&!z
z*0(tBd6(7tJ1*OgX=IzM?6i^$-XyfV$+I@+T4I#c(~wrvO}1;67k!MCzw^L=aq>PN
z&+wg>f>t*~TPw6~xwGf*kAH{bw@TQj?%vjaJaU@n%ms57PxA{~DX=2*M|!+?_0&0+
zO6y<j{ucA(`P9s(HDB0#owIUR2_-HzTGiurBW1B>X~Qu-?t3SLvYXfKop^0}l|**R
z`ArUjg{d8KxxaRw3XZ?X_-v}(m$ff8%yX08`gv*5FOx4K-ffX9CUXfk7F!+Q=L5}J
z$(g)fkT7*Kk7<$YC9Pz(W6zr3Mg1`~H!tDcR}xtNTVqP+(yc~2pLM@y&)UIzdH=jc
z^IsYl7QcNt*}m6dU&x~QGwf#Qs~;)IU~mokloWNf`=$P)brEO(otxj!vUA%k`LzE}
zCfBIm*DCw0{qvNEMO%E@`l42L{jR$ce+2rNA6fg-()Y@ODc|qC5?0G<pQ0-IHnUAE
z{)v9V?awg>=bWtfD6k6azWe6>#0^t_rkMErU;SJ#k1z5a*S#87y(jt#w|{-LsXr;y
z{-I!ZZ9vUV8~43_OPwZuXzp9rcjSwC&~GWZy_}1iyH6S}-pYCKq@2lXg&z!!mR{c%
zbQf5uK3d%S{CUX|3%2Y#49i2ck}n*yTB!VLN=R|ynRv5CoBp`+w)!~nj<xEcm$sMW
zPsvTYeN#nyQ}dhKIkMMlw_Mw7xS{&{rt%+UX95mBf4@0)&UZJ7DIHaR-uP`heqQ}W
z&%OJHzlvR8jw!!T+xYqInjI3Z@voKkxv%%wB!2bU>L%Zq<n(Quc_p^DUX%L}n<slE
zfA4J3pV2$+tzG{<HT-$OktP2V<m+Ycp4zv1x8Af_P6o2YI^}ov&y9PR_c)LHxL?_c
z%DW8TG^3_WFx|7cb$f!E&%MTnQ_8y-f3_UA=E>O>d7J&08B^ibvg(!RG&4WEmF#K!
z%%b|cBWI<ObX1J`Nrg@MF~;jT52WARDp)u-?x)J`X=_vD_4`YuijB@>8g7-^RQFY>
z{$tf<t3@WuiUOAvbhf5=sH=AUaNhdRFIsz5Pe9$bgDW`a^*A2*`|GA$Z~?P!(#;u}
zJNv#!ox97Qo4r@@g<AQY$4=f?rmBjG@!UF?oMbKW>M7eT_Z7!x)a;yd$!MyE(XrTP
z4@?$JwlHONHk&EATz&t8qV3GjL^Z08?9A1>@&9{$MABRX&7@QEX9{xk6_*~H#x}XM
zdZwoA1y9YrhmS6hntAL;{)ZbT4;jDyeN$!nY1`Xn9UmTCxmKsew@a5#dd?@)y8O*@
zA{lFLKPg(|@8L7ePVge%XOG2)V)op8&E2~&YW_lr$;}yt>~dlM&ibGBD)UKyv9v|}
zru$8Hj~DIfbw}%eo8;-|&e^uDMPi4A#GLNdV^gp8HAu%Ce#LS1+>Fx~j^8mBO0U}Y
zKy}u}Q&zEBKEF4{9shLogIfQ_pmU9z`IhW8T_d5rLGXR^|N50;lb4H1z1?x-68l}9
zD?Pp<Mzvm_Q$!4Rt~gYo)D^ZUr)s5xMtIcvHC@H?KYrD#?Y_cQzNFs#u$B16LuQ=X
zcXq07+c>eSq`vd6lh@J(DSO|nQ>~83pPY43_WJH=UP@Q@bxvrV-^V`nvC`dXOK0BS
zEW_7)SmR7IhgD>J?j|j16aCcaoNI^IY|}Eh)>Rgu&(r;G2cPpMvt!fLtv>F%%h{;M
z@y)ks!G^9U7dLEWJH|GB&FkdNa+=R#x>l7fnD}->oP^l@Qdy42I{6L73Lk2v-o4-9
zAkJ}}wW;qv!%3UY?CBhfKm&{>hTGK_F=}Z||J}yOIXO*Tczg93MqbA0D(4t2rXM}a
z7(acjHk07=Gv^pJr$?V-Or0JR%)~i;_E|>F>0i$=sxcWEO%J@xXfgfGc}C0WJ?9zo
zrt42(;((}Ey}+0--C!>h=XBkRj9Sx=USL#ZGDWE8n%?t?5n|T%u#1c-%-h|*GG1hy
zZg7p!VSD&@#?!LXojx%-OivPJN}m4e6Qk1h=b}uPn5J8NVKkZkR)VQ*`nNBP{@V{p
zGTAdum-x<TyWLKjNl#$9q9~Ii$kpl7kBKrVPB+zInmm1%1e5Xf-#Sda(@P|o{I_4%
zWr|{)Ce38GJzt+`h4S=VZ6;Tc&*G<x=rAd6zZ1+P&p7>r4wD5)kaN0CC{x+=c3q}`
z?Mz`zO^nlx^qFk89}H)5Q=Bdq%;X62yukE`N~X~1yMmdNwx6$LYG<7OD}>2pdd?R{
zuIW>%nQEtR4rTJ+o>0RS%Q(FyoXK|kuUe)Ak?9<jOn#6M+c1eKZ2G!NCYR}6lbM!G
z53go&1WB|`7p!6Oo6a<q>Cf~%wM=%~ZKg48QJWq$iOB&Jv~kl}Co?Hc->{d-Wcu65
zOeWJM_Axb1-#mrMzdm)+`MhQWo@4JTyJWUIyE=K^WOSWn<@;!Zz0_^y3r9*klwA~U
zKYZgZyS+75C7^EGetvfK+t>WJzE(be?{J1x$DY@7c@28o6B^zp+_zRM&Z`#gZ^<{_
zGB4Hh&Y9qrg=Ke7tm;aa*R(up@Oihp^}7f2Qu7Zwy|_E?er@jTBWDlR|CX0H;Ho#{
z+8w9qJ#kV0Z}A;4p0YM;_NUr8;hvwvKU!8lu-vpH?Mz1Er?rh2cG+(5TC%kA>zrw6
z58n93O~|?~xUA`N*gT_WyLn%1_Oo+(;uI`-?CI7z&DR@zyjGe0y0m4F=~S-M*LJ#9
zDFk`!RM_Og8l>3iwTLOxcde$Qi)E-+jM=JxrcpAyE1P+Lin+%-J8sf{;nB5klc7Y&
zlHe;vp6mg-te$bx!rSBj{VVc3x7f5@;8Ms(wTBkd9l!CNn|`*xF7V-J?!s*cgr^@o
z%_uzm-&7{M>3P=}+3U;S^ROLBW;nyc(A46=XHhYMg=3#%&=L&}g_Z2`i{i`_ZVM^~
z>EHHBu`WwF?mP9@My}28-Yq-6QeOI~@80y;J9bNY6e?dYom4j2>~3jM+3h)Vmfc+z
zxxV<)yvu333u|+3ie7v_n^D7S;+?Yd|298g^Ni<x`TM``_TGP7zW=?nOg$qrgZLa~
zMka0k+K}n*LgpQuSl|7A-s5z?Ir}CA$GiX1XRKK${N1i*PxhAAyBX?axLW<?R<CLE
zpX<YLMA>43btiMs?hmqW^b_stK7DaNU*=)Rd9t6WV}JR3_b@Htt9Sevb{%K<q3#!c
zZr;QGUy~VLo<6aD{?7k5X6}yv{VzYE{=ff*dcnNE`u*oEdOmY+{r*$@=KU-8*86@I
z&wd~IrFv^-$Bll2Bl~*Zdo!q|lnC=pO*^&Au3WO__cNcD2Odtclri0X>h$riTb)%W
zt81+{aTH#&M#6pZ#u=Qc!d=I{xF!U|=zW=`ll<!R@oL|BhDmN~u8SD`dZnr;(d2aT
zO4qOYPelt)H6L{{RTS}!v#AI(-^(U+^wcU%y}5f&SRT(kb7P~fq14_N+#3&x$$Bm>
z2uzkbC#j}0wQs6^o8)#r5#wbO%$$!3%}sCXK5FG05`Xn<zRt{~PalrzsfnkDrTJto
z6ESXesr)ain$ov!YDsY>XZxoUxqX7BVS2AaXG^QTsz0=_%HRBV=DztB`!|MMx+s+`
zdbdP>>a;?a<(B4wmWzr`Uwm4$Q^qxW=DkN<oWH%*&IlIs{Jv<pdG3mDJ5N1jSR-&e
zm0d=6dboD#<fW&d?qW-=75!?+^)&AC#EXGUhJlWA=Nw%+>7@x*+T=h7{s)tu#szOW
z(>v`#`08_uS?8*G*56&BYxmdm=chAWFJE*%ObLv?eEq|kto_Q3Vz<Jh;=01VP4{-Q
z47+yrPovN|*OPjsfmOcg$4W#mi#OiR%R96#&_F=XZDG=<#m9ZOH8ssRH!tq;)Qg@`
z@~c!21<oxq_<TAwDRSPnC8g<lyJ`aFXnr|j*6{db48O|yz1-f5Ib1{PYa{1J8f!fX
zIekMwwS7jFNNbKq=Q>lZ%ijb)=}wzn7{huodsS}SlhYAgv6J>HoOz%bs2ujrQQ)_6
z=(+SWS5K9!mpq}cdfn`QkK}GKaDJH}x!_*i8&;iq%^iUUjJo>FA`VXWUAkk<dfnH{
zn$ljIUOjW?U{GkxT)pGIKW7wfyMCqKsQ9;6G5ec?89c{Lvu$RqY>Ki8S+y$bV#?H}
zl}lcpQryB7YX6t>f&Apwi{eg6D??O2FWlE^`o%y_`bDSYjx~<%Z!4pk%xAitT5-~E
zO1*kt-1{}rJ2r4Fkjz-Wh%;DRGI`o|C&?8|^DQHcLKiPMKf|tNevf#y<U)xf6H})=
zTwOnrgPGMtLxd}(Q-Q0g_-aD%tv@AJw>rzX7jIfvvi|0rl}1_085LR4Mxl+juK9#6
zF`Kp0YQ^12E4{94OI_ucb=&x=T9&m@sQA{GJr@gFG<6rB<h9M-wEM-aFSBO)PJY;X
z^7osQ_k1Ux>^=GWt*0&XGW%NXR?q9xb7MU(p8a(+px$2g=_{AND@+6IvmURI-^zKV
z|CY)t_gt>8i??xqUA#^D>*8(fUl*IrzNoJI<Xh^88z(mPUF_Et*S-HJ_l!`*Z{xK1
zTW=0`TQ-y@EwAI=E;ZG#S?LdZk&EZ=gKg_q+hw*bNay<!BCBH(eCUNo6ko2<`Lz{o
z#=kmLe{#G_`+Vk4{hyf?_4!)dz0N<h!)DE%XLM}UVI7xU&o0QVIB@pq@#tX5*QV~q
zH=mu1D}E!N?Ao$k;kU&ujzgTbtKToV(Xj09-fi11-{?HJq(xHTu>P`ThR2*7w|ofW
zNlM%-dDEq5HD~wQSFKGiHJA0TP34W9A9L7NeO>zH&EM*lwQOH_Ztd*T^&&B!etS)K
zxx3I^ztht_d#8iq_1=rOH-t%SKD{ht&&PXu!8bNvo*WSqXX?YA7CuL;d#c8z(;}bp
zVuBqn8VE{kev!=VKV#{Yr+QJ#AJmy!9@)^mx@Ee=+=mVaEbH>Z?@Vm*m>|IPZ*BXP
z>~uu|HR){^3a?CDbNkQ?7vtR9GmP%mU;DFW<77TneZSlp6Q*p`%{_E5C~W?bGk%w@
zvzJa<{f;ZxD<S{;Go@o?kIr6*`##Na!u@@olada{o(_3=XGPKBqm@1Kk((Z^xf!FQ
z>uR|3)#Rr+Tj#TWy!UQLURiy~%Uw4Q`ChNP(3N!T&a8h6n3o$rbE)D@Rqk0Bv^~YO
zJ?(5=eT-r9N}nG-x2CO6SQ@q=RJ}o}qIOfo=Qn@TjYG}V<{q0=uePN8-+d>;mo9}l
zmktDM<<#F;6nk#2M8o!F(qT7S_jZ<?S#f*my0dMZWs5nTzHL3ei6wu>G}GdW)8FqT
z)$nakc04QNT4k5qm%P~_Y>s2`>&-J7rLRSu5m<1RRponq+J=_-u1TDnZb$Z=aZT%e
z<9<lW(!s`hqJ@Wzi;R+-Ql7G$Qr`KPLlF@!t6D@huPAyZwD~xna%%rw$C{oM)}7}U
zy;HL5{w44+@`|8UF<WP<)#MJYxt>P?ttNMfKDya@MC+qKVNXSeg`bVfoDENAxxHGV
zDjv98XJ^N*+mpIi)K`O8*C%zaxI8V!rS`_8?iKwDdezNkDvrIHS*h}V^GR8cd;V_Q
zt61OIHtgJX?sMR5m3i#Ca$(OaImGjC-}sswc0Q``np)=3!)Bgu`XAVpw)NjuF|^5=
zeB=Z73G1yJ@2jtwcl2Mkndh75Ig@VKcWS@p*`G4`$cGueLWdup*j-<nydSJ$iLcP_
z{Tn=!?EAG}^UUAmnG~_vGwDakvqi_X3Vk)J0-qe>sk2R#&=J3scG)nvLw|0r%Ii3<
zjeG$YE%QI<KXPBorT8bS=TJ)B9@9%Qe5|3%58SjVDrEe@$u2A*oOj$U!QDmW=DlfR
z4bw8bLpUE4Rk}=?b-DRuy<n<^xrj7R`;-MKM<UkToEbDDxOmx|m(#?i+Ai9*MeDWy
zCgs=nYqq_uEc^f5{{GK5>$k6}+26G}{Qu%>hvauo`uY2-!S9RFuebh~s;wbcaz*dJ
z;tdRr8Ry+)=O~vw%lyOHccYSnm8a>NuEp%j51*X)@IvF?N#2DFjwfGEQCX~ipnkUP
z+AjMilVau8e_wH5+3WV7y0yAGr`J~P@I5-0?ZNLghe9U2WVtiz;M*O#)=lgTx4W0{
z%uBRVOwY}GpC@s7*0WmgFp-~Y->;5azv@Jsk$TCsd(FQeFjOp1m0wn?rIOL2tMrz!
ze2-#Qte3L5%Eu^C%|#ixXBz{g-x+qE{?}1o&seokd;Woa3_cd_`&KYKKg+Ga@kmg>
zH8iGY`Q(pz?Z&g_Jz5-GlVXus;<cn)eXfC5`US;Fmygdi{JrPKiN408of9V>c{g!k
z<<+-^zeCn<dY|!bTjRYyKOF3|H!wzCe)6^c>qFz>lM&airIckEJSk+|t9Nz(_VSJT
z+YP2%aR1(0pS2?2`jlBnb^qTEd;Y^8PEN0un118WoS89NPk%c+V3C_LyD(usL;GQ&
zs7MFdC0rgs1&q0G*O(YCH+~e;^Q<~QMlsR<(Q>o3caFrLW51wu*x-t!yrIy?DW`9?
zmH94vwJevfy`8OiXPfH<g~d_lj;To=+?go#_%?fc>>{<@wn6pPinHTRoO>&C<Km-<
zf2HzM9r?4juh}R!<Ca~a%5-~E#ieaceB0Mp#h$$4QJImZdh-$I&zTQ+S8Q5Sx3Bp1
z$(J+R(=LP?F#2zbPjnZw3w&`po#Dfy1##*D+Ku=7!UXyrv_3i%H=qB2_}8s1A>3I)
zN-kTkWO!)DUXKn4ow+q4ss69aJ(tZpl!R5a#U~u#jC9mov{idg_kNZ_55`^QQ@?O3
zJ(g=Ro3C#DxYeqCQwFzElzcM7LlZtXe~YID+m;+n(R!N0kW~_5G)ZiOPV}OQrrt`5
zsvAmOZ`7x57brO0W$~)0lG*P21MWqyirA0XPYby}xm~WH>aM-)-Z!6C*qyBZJmrAM
z&Bco(&hN63`+oI#$jQ|k|4jY*zfVZsp)+0JFJnfdv%a}8mrL<7cEhVZO-`(=IdL1D
z0$FuWg|yw+`I0AYS5aK32*Xm>&KBn#i|t*n@h+cKwjwLx0F##&C;!aLa`T^Af4o0$
z@8?6WgwOB!_sC;+uwV$k{^?iS^zCZj{HgEzbC|#G-DcnL|LxK`p7$TG{o~p*FIr)`
ze3wyR!e=4ji|drETd$WmtDIA=3B3G4xw?DXQqv~wDFH%-J_{LGSF$so^n4cbdPAw!
zantbhS6A=beV@v_>ixO%c3;i}UsUs){IlI;>C1OlZ@)Xa>3V8!>aFi$>EAYdy}$Iu
zW2a7u{q+oq9Zzpx+$wSG!zB%FB`H;<3HgTwy7;A^L|fhB6XDH}6xnt^G+tR`V>pM?
z`b?v_7R?ElLgufDs|~&8@j2&h`kU=H?k8L`cu;X~eS%v?XMvzD|009@zarE687!Il
z`Slj~x~xd}vQ0qjZ2rzdF4k_7Ga=`)6MN<)D&M&&c2u~&=_E^}mrq|$go8?_?w5&M
zPTpBDZHcvBYtuu;GCP5}{z*F0_IuT>rNf`9i#aDHXxMDnpI;^-yIb|rwCJ05e{US@
z*tGBZa#3N$YtN@_m%F|1x7npE!Q`9qiFP?hcNbZ`@7%r9naB9ugB5}5Sy$SUvbZI>
zUTw0TdHA6Aqyv`Wmi4PdcfYi83U)QsWuNl-pvJQq8CtWh-2OOcT7}ZZkngQ?g`9W|
z7A(`udQ`?U*-4QnQ?&Qdy1M5N?mfM{+`4@0s<>(Q?Jn&%Uwu|$(xa#RmCTIqZ+EWi
zm;HTXf1r(T-qIhx<}rU<c|_h!bK3QL$@ibC-CHdp^7*HlOICGptUKdk#`?`I+xHaC
zEqXEKT3ExiknByt$FELw*`v2rHg~pr?oC$jEH2?0eQvtjCxpk{n!UGvYeWG{>iTEb
zQ|6z#@#t;s=gemu?|bxh@}#E~si&R$oBfzSMOP#K@02wyHFrM?pPcx>|H+B=@M(P4
zRsYL9S}VKj#j?_$7WXz(9<WzRf4+{hx890F)SdZ_MvnCs$ym=!=NrG~mRqg)V~}-w
z7So(8$(xcnet$mvTlw*E>q+OACw|rE?aW=h&-lrafLkJaS8q45ywaakoaSL|w<q~m
z^6pJP#jb|GmA`N}&$Vo~^{$)g*6w`Io9@LkhgEZ@-aEX%<>Hh@_Q(EoiKfe5Tf5|k
zi`ld#^&KJnI|~mV*nV<n>gTgEn_RX%Xt-pWziavOEs_1Jc9eg=vv0NfgW0#lQu}wC
z9{s)J+0+pJ-*aAlU9tIhui2iX%E>+-E3SSO?a#V@H}jir8LN=NnW|6obbW+&{k@|p
zcq+EzlU&Lomr}msEddKp2*wm7URtXx>HFq@%A0}~+3rB=dcAb>unwhP4bu*?ub=e)
z=JPLq<mWVVyExW7+Er|q;VAk4sh~Q;$%jt@@}+!5-utNaY>?L0(awy>*gnCy>)nkG
z*RzMk{=D@u+9cS2$T?m!!ET~#R(_d(;DfcBW0T8y^7n5yFuA6fEmwD6Hh4R`+u~++
z_S@T1>yDon?O)UNZfE^WN9BXd{KUKY-{-v#t9`xrc>n&=FZY(Gq&_*faou0buFu_D
zwck`rtlXtA+kgA6jng)CmF7N-N+|94cJ}B)J&&c6I$NIP+!e`~a>w+;?VES|jQx5{
zIP|+r?3VtWx6yVo6ZeC&sXD^mZ=^o{2)((o@@H+>#gB7WTF3wS<h6Xwin#jyHD9{<
zb7psM>90Mw{@P+qo8HPfujc#gn=KH3zCGi|1E;^!u6579HleNOp3B}JE7?WVxeiTM
zzP0s3QBbPmnr$<mU2O^y*etYkxo7CRZ>wf)j}BW`#~Xaz)pEtpYvP8XhTdJvF9a3s
zmAfvs?&{-`guQb460H3eQX#c*I`34E9<G;HIlHdz*5Vu1AIlBca$En^<R3V@v2WJ)
z&Ef~SoBbzWRy4WvCQQPA!AZkCw_9I+eYn?hdtsEi?^WhM&(;O+dd42vJ6Fo<{E3f;
zXXfr+d3$QseOn((%X@csuD0#!j5_4=AzI}tv-LM#-&|SSnv}o3>${qdU8(q%@Q!!(
zJv*~|bL(|{Y~F_E*52s9>95Fp_vez?kphb*vEF65eo&p)Ha6D$kop!uuh&Wa3T=~0
zPtHBZd-As58;P^|iC-#@Yzf)3`GQdP;VzeD3SYTu?P4urB&&b?$U1Jpbjtc#;g@x(
z$p+Sy-y?2@uQ$1uoWJ1e-wTc!Syw6#zJ9%jp^k^eis|jddIO_hlfou$x4h>)Wzwrp
zH_bmwm-puEE<b)FR{3Z3vR}_OpOlTAx$|C#qGGP~)cJKKiMLn2-7R<5cwedI_3ily
zizZ3mo4wI+@6}C_+$s;>?J>{W!P+jdYC1=ASf@k72Hy(jU;Nw>6K|<#{hYr?Q+%qO
zqxMC$XyJ{0uZ7;4ZoV#BZ)6o*w(-V>T}k2W5i9I$cBt>HD%;a>e|ho4h3lL&cN9PR
z{_&LEi(u28)#d+wT&u3jJ-z*do3+2by11L$?Q7Xpvi#3)-cNEZe~~K9SG-I<H0vP0
z*dL1>^~M$g-vkA(W^R3cq}bj*^4#ec>daOj`R<5V^X}>ANnYC>R~S{^|Ej)Om;IQL
zX6U!yR_fb+o2I32In6T7nc0|mu2r1Z&Yf=)3O0Q`Z`<<Z*{$7g9(PO>toZj-VsUlm
z^Q9~tN@)zQyMvbKdj)RMk=?R*U(2-qoF$9vnKpY_KApc!Q%#5`N8@6F);zNf4ZU%z
zr>(iveCOH;jju)gnY*t!H<)cN=HBWrU+<w^6!A&)*YD+98u!)iKE?j*8|$A<T3`5|
zsI_hLf0yB{&u98Imp}RDm8p__?YE+8bz5WB?Z{QRw5UQR&V9?_3)YVoCe$d*oZ+|l
z%2xS=Zzn#+AC(R@4`F$_yq{&24@=tgr=_L&cCJ!UTxAZ`b54mxAIwhmj$MD@!m_TX
zf^U`UH%U$L4^Falj<8u=IagxZyoHVafp$Mdj&Aun`J2Ax?d<m()<2AWz3j)7CGyG7
zEO&=J>D(ijy?ded#8+N7B^LW^n|O1@uO(XRCpx}joW4(4?@h*cuDbc*f-$ztd&@K8
zCe|J0JjJM6b9_Sfhc~wTZ#cCW=i6_3{bi-~??e0e%pA7XfBog>WAiU1THf=;@g9SI
zp|XiBAH&WnTd{b1#q}@X<y^}$$LE&NvX&`-g<G%v=(;9lYClaN<QsR0=bYfy!!n1L
z9ZI+Fo4-J=_kLObf*q;85ygo+HK&~KWSsuw`=;qkaaZ5R);F%*Rl|7x*XK7ax0j!4
zI&w{1dDC>+$p3qy+p6kqf2C`zWjwj(qS%)L7ky4|yRCNrLSH|gpO@o*=hu(p`TyN=
z1OCS@-MKT+$a=Q!@lDTX{rg*A^mEUu*WdMbgxtJd@^JNy%Q5TssU!v!)qc0uJNvr$
z@AT_7ax#DJu21$at9@H4E@q{1@#-y!-&Vilf5@8r4Bg+nn5U$8<)z7Q1C;6?h$qh2
zw<e{rZdJu4Db|*G?5s!EFL&wBsCQo6;`DgByvcH1rO7?Ut0I2d{wh^hsC!xbP9bjg
z*Zm(d?q5q;{<->%;r7eRt72d4Z@k^S>P=BhEcd1Ni@yACvZ(pI^Jo6wHy!n#azAj_
zdmgS|rG0<%t@yCIE&pQHM(@zt(-5ov=~n&!g1H|me3=Ap7yjdXxN7U=W%Xwg-Z!1{
z-eJ2hjP;Y5OoCL(kJ$zX`421nUw^}{@91Ik#96X!o;8<qc(-l7f6(KTQptw%2N-O)
z=f2Ut(CE1Qz(3WT=W<V~`5(RUeevY2LCbrV-;63d8@90h{a{pbNdCbssdt}a@9gI-
z+q^xodqRD?q#bi$oxaS2;|u58cf6JT@$SI)(l`GNPnF3Dz2OghR=4CoA0Nl&3uo<{
zKleYh>HC<UR4s5@@5Z6K4<1cla6(yuTl>ND|BPR6^2gb6JDRaxwqbP5Iew8%`_1yL
z@{41B{AG*0$J70WHz)MOqL|2QG1c7}e*0bj`q%v5_3ibF+x1L;Bz3riH=Nl0F|;7=
z@HWn$^ACO1cQDRg|M$S9kD&43+z09QEA}4U7q|PAUQ@d*$K(&XTdp^2yyrX-S@vIW
z$&bq?zT2gI2s`pXKcVxl^^~ivMUocNSml2!-ZJF<d!}<=)$*|9^#?6t7zM8vd;g1@
z!6cmfXST!ti(U!3Tcuvr+a9d%dC$+7&3Ys8<`1>?5-$HI+<m{|_TGO{X7|5*a=$Q*
zclP}cn>J5)F5hl<`rYjKP1V-h>~7?O)J{13HUCQPzL%}$+2Id-kKCTU)&A)B^*6sS
z%s%|ge9svd+m))j^Xo3Ydm_Jj>1U7URoxM9)%WVozkfrBt$M>>QG*NYk*Dj`_#`&G
zY1$OILnTMSta8aW^%h@l`Fi%<g7VBQfj^>czUOin)Zfihsa~wQd*PlW>o1(`xo?E(
zUcFU#IAcS}X)!}Ti_N#}axPw5^8Wl*-aE?Q@^S>j6ZTpQ7^e%k|Che~KH<O0qvy_H
zIX85B4l3+n68>>apkLLD$2LdoC3~WJy|lZJE%V(qJwKdeAGF?j{6>Ap`|ASNOZ-pB
z3Dtc{TJykp!_@B!a}BS3c%CSIY?9-ide(-o<yrGrp1u0aAZYK7f9^kO_CAZRulwuu
z_UNsHw<efchuz-$?@np4MKbHAzw$q9*y5Y6zils#IzK(XqAtz8=3G_Wj-#K$zbS9I
z`^i$jevkGZZ8@R+I{V)LC|>Em>wZ;T=qk(a*7I|V9&Nt$<@>t5>%>1)9-muY|Lec~
z|Mm7|^N!jCv9Ze>_c){2XZc7|#{M~XW5eH_r$4;?yHqQAe~j78zxGb&LJmgmU|B0u
z)ls$6`HOksc3<f|k()BYA6`|vBT)V!;e2q#)nEI!U8!dE{NDO9YtG#J;YOdIdtZs4
zyRIzof06JFW`o$iuwaufw|$>~xU5iL_cS57>EB+N$6ZHiZKp@R<qWP_bt>`Kq~y@1
zmzfRq3^P__JcLZ_yx#+v!s7zXN5)O>+smXh{d^@8&vc2;j8=>W(?dTqYHNb_@R=D|
za>a6)7;u4i^qCrRMRS>&8F0mNnHq7Kf;N(ynsP-?-~E}fcKQ?0gj~)S#;)x%_c1vy
zp3a`c%&P-Z0@@sCZf0l%+c9WpY6{(fZfpSG0&i$)Hr*kKSyTtKksPGM*ciS!-Ov=Y
zmmDN$X^7Y~Z)j>cy)lVdL<i(fkfepF0m2S5*lt5(V<bVN=?9aTMSbAg;*H@u77fi{
zPPMeKM7YWf?o=e_n1K#;0oiC~YG$zgdlEATBR|O5L0m>4<w0B~X4Cmnn4?(?OpVQ_
z=cX_h*Be+`8kj2>fPg}t0vCujFfcSS$0BBFhM~^b&=gb5)EHCD0?j-_LvsUD3k8FE
zkcBXd4GqnW3@lMK8ycD$n_(DeX<>ox7()X?BO_G328ISkmWJqJhNeacN3%nGY&hL8
zm08%)(9qNXAqSQ+G&DCgG(k1P(9qn>4AVmvMrPChrZOwl8yFf|8e5?1F)%VUH$u~6
zU}$V)hGri~4AXDM#s(PvH8C+mx5LoX#LP?q9Hs`aKs7KlGciK*fPta8i7C36k%6f(
zdSDqDn3`gU8Cjsmrh$<WQYxy4CL<#gBlOTTFfuVh3Vm=08yK0I8KK9pk*S#p7BMpn
zN1K{ipod_+k*PUGa2c5y7#W~PiJ74VT5>b6Ff%vDP-kv#fJMv*BV^3YO$;&9w52(E
zx->O2w?wzt)WX05-9QUtLlbo0Sr{9lr#+CPkvv=v304a;%mim)W^RIRv4y#T33|e`
zFgG$pPjHr&#%34}v@kbEk0y(H3v)~Kc(SmtK+i=6mIj6f=qcFJ&;(PRsev)Nqb*Gh
z%+RC6($dHhWF9E}!&ASdrLiG~W=mreOwDE(Il|J?0zF|G8W<TFpoM~=fsrAyV?g$U
ziXKDs_%t-MFf;<W(7*tmJq-;ljL=iCp`nEdx{nPFj7-eYJYr~IWM+bHo`FfdfhAg^
zF*GnSK=&O;%p6^vp@k_Hy~ajpX~EFI!~{c~p_w_vf%QnfGcYqSL`(gK24)7vXo<$q
z(8AmV!xA$C^s2<rz}&<HEo~VZSeTe1M<*!!4Gk=f4KXai5(<VU2AH8>W`GgLhGqun
z`Q6aa%*+zQ4m0z5^b~ApXl8DV?mI&>b5I3{QvVs58)Af(p@juTP#ako7^8=(p`{75
z{;NkME@LAL^we)?WMPEi7-M5YGjs<US(u^M?uI5tmgxE2(Ae1697S)vfq|ikv56^K
zp<-xkY;J)bccw;W=(U}piLsd}dP+An#%PilnwS_Om3rVp&(PG;(5xOkOPCs)U}Qy8
zOH=e>+0fM30=>ClXl`JDULP2mTAEv++hJ}1ZwuAK3Lir=14E32WNvPXTv&kOAJi7Y
zNHgXZ2Iw`Qp}B!2G>#EbY++<*h*}`k8yK2f7@^nOh89M~=;gejxrG@<;<7M-=3}I6
zY++=I5uFyMm|5Gx$kNcD9<`b^v@o+kuf+^4OpP!SriHnI1#&(%FfcH*Fg3+!5n5W9
zqc>R%EzFJJbxu9B9cyT5VF@XbkbMGb@S{4=$k5Uhy%}a`X=!MImbZ-zEirSGrKJga
zySU!S$iM*IcOWtJN(UrnhL(>(Vi*=185p9sq(IdWda(==GqFHx|A7R}(6SRq3_YbA
z85tO%7d{{{W3(&_5;H}sH$Y;D9s{)f2NDF=$4IrEk&%HhdNT|p25L5easn*pfW**S
z{U9;)^25l;zy!SvFbXv?FhOr>gA}5-d_ZF8c^f2#UZxuv8JHTHOqVQTcH=fMGcn~-
KRdw}u;{pKOlxU3r

-- 
GitLab